From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 7.4.50.20120602. Date: Thu, 23 Jul 2026 18:30:28 GMT Message-ID: <178483142872.1.12518834501451419406.rpms-gdb-f8eee055504d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: f8eee055504d803578fc226027045ef37277c9f6 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogZjhlZWUwNTU1MDRkODAzNTc4ZmMyMjYwMjcwNDVlZjM3Mjc3YzlmNgog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMi0wNi0wM1QxOTo0MDo0NCswMjowMAogICAg ICAgICAgICBTdGF0cyAgOiArNTc5OS8tMjIwMzQgaW4gNzUgZmlsZShzKQogICAgICAgICAgICBV UkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2dkYi9jL2Y4ZWVlMDU1 NTA0ZDgwMzU3OGZjMjI2MDI3MDQ1ZWYzNzI3N2M5ZjY/YnJhbmNoPWZpeC1kdXAtcGF0Y2gKCiAg ICAgICAgICAgIExvZzoKICAgICAgICAgICAgUmViYXNlIHRvIEZTRiBHREIgNy40LjUwLjIwMTIw NjAyLgoKLSBbdGVzdHN1aXRlXSBCdWlsZFJlcXVpcmUgZ2NjLWdvLgotIERyb3AgcHJpbnRpbmcg MkQgQysrIHZlY3RvcnMgYXMgbWF0cmljZXMgd2hpY2ggbm8gbG9uZ2VyIHdvcmtlZCAoQlogNTYy NzYzKS4KLSBGaXggZGVqYWdudS0xLjUtNC5mYzE3IGNvbXBhdGliaWxpdHkgZm9yIEdvIChmb3Ig QlogNjM1NjUxKS4KLSBVc2UgbGlicnBtLnNvLjMgZm9yIHJwbS00LjEwLjAgaW4gRmVkb3JhIDE4 LgotIFJldmVydCByZWNlbnQgYnJlYWthZ2Ugb2YgVU5JWCBvYmpmaWxlcyBvcmRlciBmb3Igc3lt Ym9scyBsb29rdXAuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmlu ZGV4IGYxNzFhMGYuLjQ0NzdhNmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGln bm9yZQpAQCAtMSwyICsxLDIgQEAKIC9saWJzdGRjKystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6 MgotL2dkYi03LjQuNTAuMjAxMjAxMjAudGFyLmJ6MgorL2dkYi03LjQuNTAuMjAxMjA2MDIudGFy LmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2Ri LTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKaW5kZXggOWY3MTJhNy4uY2ZmYjA3YiAxMDA2 NDQKLS0tIGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1y ZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogCiAgICAgICAgICog Z2RiLnRleGluZm8gKEZpbGUgT3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRl eDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDExMTIxOC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0xMi0xOSAwMjo1Mjoy My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMS0xMi0xOSAwMjo1MjoyNS43NjU0MDc0MzQgKzAxMDAKLUBAIC0xMDA1LDYgKzEw MDUsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQorLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDYtMDIgMTg6 MTY6MzYuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDYtMDIgMTg6MjU6MjAuMzAwMjU0MDE5ICswMjAwCitAQCAtMTAyMCw2 ICsxMDIwLDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEKICB0 aGUgZGVmYXVsdCwgd2hpY2ggaXMgdG8gcmVhZCBpdCBpbmNyZW1lbnRhbGx5IGFzIGl0IGlzIG5l ZWRlZC4KICBUaGlzIG1ha2VzIHN0YXJ0dXAgc2xvd2VyLCBidXQgbWFrZXMgZnV0dXJlIG9wZXJh dGlvbnMgZmFzdGVyLgogIApAQCAtMjgsMTEgKzI4LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAZW5kIHRhYmxlCiAgCiAgQG5vZGUgTW9kZSBP cHRpb25zCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbWFpbi5jCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDExMTIxOC5vcmlnL2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMjo1MjoyMy4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMjo1Mjoz Ni45MjUzNjQ0MzggKzAxMDAKLUBAIC00MDYsNiArNDA2LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA2 LTAyIDE4OjE2OjM2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L21haW4uYwkyMDEyLTA2LTAyIDE4OjI1OjIwLjMwMjI1NDAxOSArMDIwMAorQEAgLTQxNCw2ICs0 MTQsNyBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsieGRiIiwgbm9fYXJn dW1lbnQsICZ4ZGJfY29tbWFuZHMsIDF9LAogICAgICAgIHsiZGJ4Iiwgbm9fYXJndW1lbnQsICZk YnhfY29tbWFuZHMsIDF9LAogICAgICAgIHsicmVhZG5vdyIsIG5vX2FyZ3VtZW50LCAmcmVhZG5v d19zeW1ib2xfZmlsZXMsIDF9LApAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvbWFpbi5jCiAgICAgICAgeyJyIiwgbm9fYXJndW1lbnQsICZyZWFkbm93X3N5 bWJvbF9maWxlcywgMX0sCiAgICAgICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9 LAogICAgICAgIHsicSIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAotQEAgLTEwNzIsNiArMTA3 Myw3IEBAIE9wdGlvbnM6XG5cblwKK0BAIC0xMTMxLDYgKzExMzIsNyBAQCBPcHRpb25zOlxuXG5c CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90 IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAg ICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXApAQCAtNDgsMTEg KzQ4LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWluLmMKICAiKSwgc3Ry ZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAgICBV c2UgRklMRSBhcyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMTEyMTgvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL3N5bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3Jp Zy9nZGIvc3ltZmlsZS5jCTIwMTEtMTItMTUgMTY6MzY6NTUuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvc3ltZmlsZS5jCTIwMTEtMTItMTkgMDI6NTI6MjUuNzY3 NDA3NDI2ICswMTAwCi1AQCAtODIsNiArODIsNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9zeW10YWJf dXNlcnNfY2xlYW51cCAoCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9zeW1maWxl LmMJMjAxMi0wNS0zMSAyMDo0NDo0OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9zeW1maWxlLmMJMjAxMi0wNi0wMiAxODoyNToyMC4zMzQyNTQwMTMgKzAyMDAK K0BAIC04MCw2ICs4MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVw ICgKICAKICAvKiBHbG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZS4gICovCiAgaW50 IHJlYWRub3dfc3ltYm9sX2ZpbGVzOwkvKiBSZWFkIGZ1bGwgc3ltYm9scyBpbW1lZGlhdGVseS4g ICovCkBAIC02MCwxOSArNjAsMTkgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3N5 bWZpbGUuYwogIAogIC8qIEV4dGVybmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIHJlZmVyZW5j ZWQuICAqLwogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMTItMTkg MDI6NTI6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZHdh cmYycmVhZC5jCTIwMTEtMTItMTkgMDI6NTI6MjUuNzY5NDA3NDE4ICswMTAwCi1AQCAtNTksNiAr NTksNyBAQAotICNpbmNsdWRlICJjLWxhbmcuaCIKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA2LTAyIDE4OjE2OjM2LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA2LTAyIDE4OjI1 OjMyLjgzNzI1MDUzNSArMDIwMAorQEAgLTYzLDYgKzYzLDcgQEAKICAjaW5jbHVkZSAidmFscHJp bnQuaCIKKyAjaW5jbHVkZSAiZ2RiY29yZS5oIiAvKiBmb3IgZ251dGFyZ2V0ICovCiAgI2luY2x1 ZGUgPGN0eXBlLmg+CiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgog ICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTQwNSw4ICsxNDA2LDkgQEAgZHdhcmYyX2hh c19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTE1MTQsOCArMTUxNSw5IEBAIGR3 YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICh2b2lkICopIG5hbWVzKTsKICAgICAgICBkd2FyZjJfcGVyX29iamZpbGUt Pm9iamZpbGUgPSBvYmpmaWxlOwogICAgICB9CkBAIC04NCwxMSArODQsMTEgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwogIH0KICAKICAvKiBXaGVuIGxvYWRp bmcgc2VjdGlvbnMsIHdlIGxvb2sgZWl0aGVyIGZvciB1bmNvbXByZXNzZWQgc2VjdGlvbiBvciBm b3IKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90b3AuaAorSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIx OC5vcmlnL2dkYi90b3AuaAkyMDExLTEyLTE2IDIxOjI5OjI4LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3RvcC5oCTIwMTEtMTItMTkgMDI6NTI6MjUuNzY5NDA3 NDE4ICswMTAwCi1AQCAtNjEsNiArNjEsNyBAQCBleHRlcm4gdm9pZCBzZXRfcHJvbXB0IChjb25z dCBjaGFyICpzKTsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3RvcC5oCTIwMTIt MDEtMjMgMTg6MTI6MzAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdG9wLmgJMjAxMi0wNi0wMiAxODoyNToyMC4zNjcyNTQwMDEgKzAyMDAKK0BAIC02MCw2ICs2 MCw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIgKnMpOwogIAogIC8qIEZy b20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGludCByZWFkbm93X3N5bWJvbF9maWxlczsK CmRpZmYgLS1naXQgYS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoIGIvZ2RiLTYuMy10 ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaAppbmRleCA2MTExNTQxLi5mODc3MjI1IDEwMDY0NAotLS0g YS9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCisrKyBiL2dkYi02LjMtdGVzdC1waWUt MjAwNTAxMDcucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMS0xMi0xOSAyMTowNzow Mi4xNzg0NzIxNTcgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUv Y29uZmlndXJlLmFjCTIwMTEtMTItMTkgMjI6MDU6MDIuNzA0NDMyMjEzICswMTAwCi1AQCAtOTcs NiArOTcsNiBAQCBBQ19PVVRQVVQoW01ha2VmaWxlIFwKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAy Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMi0wNC0yNSAxNjowNzoyMi4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvY29uZmln dXJlLmFjCTIwMTItMDYtMDIgMTg6MjQ6MzguNDU2MjY2NTQ1ICswMjAwCitAQCAtOTYsNiArOTYs NiBAQCBBQ19PVVRQVVQoW01ha2VmaWxlIFwKICAgIGdkYi5ocC9nZGIuYUNDL01ha2VmaWxlIGdk Yi5ocC9nZGIuY29tcGF0L01ha2VmaWxlIFwKICAgIGdkYi5ocC9nZGIuZGVmZWN0cy9NYWtlZmls ZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgXAogICAgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEy L01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBcCkBAIC0xMCwyMCArMTAsMjAgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKICsgIGdkYi5v YmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFz Y2FsL01ha2VmaWxlIGdkYi5waWUvTWFrZWZpbGUgXAogICAgZ2RiLnB5dGhvbi9NYWtlZmlsZSBn ZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgXAogICAgZ2RiLnRocmVhZHMv TWFrZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGVdKQotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDExMTIxOS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTEtMTItMTkg MjE6MDc6MDIuMTc5NDcyMTUzICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVz dHN1aXRlL2NvbmZpZ3VyZQkyMDExLTEyLTE5IDIyOjA1OjAyLjczNTQzMjA5MCArMDEwMAorLS0t IGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQkyMDEyLTA0 LTI1IDE2OjA3OjIxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMi0wNi0wMiAxODoyNTowNi4yMDAyNTgyNDAgKzAyMDAK IEBAIC0zNDQ4LDcgKzM0NDgsNyBAQCBkb25lCiAgCiAgCiAgCi0tYWNfY29uZmlnX2ZpbGVzPSIk YWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZp bGUgZ2RiLmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBn ZGIuY3AvTWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdk Yi5mb3J0cmFuL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZpbGUg Z2RiLmhwL01ha2VmaWxlIGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdkYi5ocC9nZGIuYmFz ZS1ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9N YWtlZmlsZSBnZGIuaHAvZ2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxl IGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUg Z2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdk Yi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmls ZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRyYWNlL01ha2Vm aWxlIGdkYi54bWwvTWFrZWZpbGUiCi0rYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVz IE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZpbGUgZ2RiLmFzbS9NYWtl ZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBnZGIuY3AvTWFrZWZpbGUg Z2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdkYi5mb3J0cmFuL01ha2Vm aWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZpbGUgZ2RiLmhwL01ha2VmaWxl IGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdkYi5ocC9nZGIuYmFzZS1ocC9NYWtlZmlsZSBn ZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtlZmlsZSBnZGIuaHAv Z2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxlIGdkYi5taS9NYWtlZmls ZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgZ2RiLm9iamMvTWFrZWZp bGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZp bGUgZ2RiLnBpZS9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2Vm aWxlIGdkYi5zdGFicy9NYWtlZmlsZSBnZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFr ZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIKKy1hY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmls ZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01h a2VmaWxlIGdkYi5iYXNlL01ha2VmaWxlIGdkYi5jZWxsL01ha2VmaWxlIGdkYi5jcC9NYWtlZmls ZSBnZGIuZGlzYXNtL01ha2VmaWxlIGdkYi5kd2FyZjIvTWFrZWZpbGUgZ2RiLmZvcnRyYW4vTWFr ZWZpbGUgZ2RiLmdvL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZp bGUgZ2RiLmhwL01ha2VmaWxlIGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdkYi5ocC9nZGIu YmFzZS1ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBh dC9NYWtlZmlsZSBnZGIuaHAvZ2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2Vm aWxlIGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZp bGUgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxl IGdkYi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtl ZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRyYWNlL01h a2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCisrYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2Zp bGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZpbGUgZ2RiLmFzbS9N YWtlZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBnZGIuY3AvTWFrZWZp bGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdkYi5mb3J0cmFuL01h a2VmaWxlIGdkYi5nby9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2Vm aWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtlZmlsZSBnZGIuaHAvZ2Ri LmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21w YXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdkYi5saW5lc3BlYy9NYWtl ZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2RiLm11bHRpL01ha2Vm aWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmls ZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5waWUvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmls ZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFr ZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCiAgCiAgY2F0ID5jb25m Y2FjaGUgPDxcX0FDRU9GCiAgIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNo ZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCi1AQCAtNDE3NCw2ICs0MTc0LDcgQEAgZG8KK0BA IC00MTc1LDYgKzQxNzUsNyBAQCBkbwogICAgICAiZ2RiLm9wZW5jbC9NYWtlZmlsZSIpIENPTkZJ R19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIub3BlbmNsL01ha2VmaWxlIiA7OwogICAgICAiZ2Ri Lm9wdC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIub3B0L01ha2Vm aWxlIiA7OwogICAgICAiZ2RiLnBhc2NhbC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJ R19GSUxFUyBnZGIucGFzY2FsL01ha2VmaWxlIiA7OwpAQCAtMzEsMTAgKzMxLDEwIEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCiAgICAgICJnZGIu cHl0aG9uL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5weXRob24v TWFrZWZpbGUiIDs7CiAgICAgICJnZGIucmV2ZXJzZS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0i JENPTkZJR19GSUxFUyBnZGIucmV2ZXJzZS9NYWtlZmlsZSIgOzsKICAgICAgImdkYi5zdGFicy9N YWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIuc3RhYnMvTWFrZWZpbGUi IDs7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0 YWNoLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9h dHRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2F0dGFjaC5jCTIwMTEtMTItMTkgMjI6MDU6MDIuNzgyNDMxOTA1ICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMJMjAxMi0wNi0w MiAxODoyNDozOC40OTcyNjY1MzIgKzAyMDAKIEBAIC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHBy b2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4K ICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29w LiAgVGhlIGxvb3AKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiAr fQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFj aDIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0 dGFjaDIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2F0dGFjaDIuYwkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NjQzMTg4OSArMDEwMAorKysrIGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDEyLTA2 LTAyIDE4OjI0OjM4LjUwNDI2NjUyOSArMDIwMAogQEAgLTAsMCArMSwyNCBAQAogKy8qIFRoaXMg cHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBzdGFydGVkIG91dHNpZGUgb2YgZ2RiLCBhbmQgdGhl bgogKyAgIGF0dGFjaGVkIHRvIGJ5IGdkYi4gIFRodXMsIGl0IHNpbXBseSBzcGlucyBpbiBhIGxv b3AuICBUaGUgbG9vcApAQCAtODUsMTAgKzg1LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKICsgICAgfQogKyAgcmV0dXJuICgw KTsKICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUv YnJlYWsuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2JyZWFrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9icmVhay5jCTIwMTEtMTItMTkgMjI6MDU6MDIuNzg3NDMxODg1ICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuYwkyMDEyLTA2LTAy IDE4OjI0OjM4LjUwNTI2NjUyOSArMDIwMAogQEAgLTAsMCArMSwxNDYgQEAKICsvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMjM2LDEwICsy MzYsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2JyZWFrLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjQuNTAuMjAx MTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCitJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40 LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwkyMDExLTEyLTE5IDIy OjA1OjAyLjc4NzQzMTg4NSArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrMS5jCTIwMTItMDYtMDIgMTg6MjQ6MzguNTA2MjY2NTMwICswMjAw CiBAQCAtMCwwICsxLDQ0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KICsKQEAgLTI4NSwxMCArMjg1LDEwIEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwogK3ZvaWQgbWFya2VyMyAo YSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhlcmUgKi8KICt2b2lk IG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEzIGhlcmUgKi8KICsj ZW5kaWYKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9j b3JlbWFrZXIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2NvcmVtYWtlci5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJMjAxMS0xMi0xOSAyMjowNTowMi43ODc0MzE4ODUgKzAx MDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFr ZXIuYwkyMDEyLTA2LTAyIDE4OjI0OjM4LjUwNjI2NjUzMCArMDIwMAogQEAgLTAsMCArMSwxNDIg QEAKICsvKiBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5NiwgMTk5OQogKyAg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMyLDEwICs0MzIsMTAgQEAgSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5j CiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVz dHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTEx MjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTEtMTItMTkgMjI6MDU6MDIu Nzg3NDMxODg1ICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvYXR0YWNoLmV4cAkyMDEyLTA2LTAyIDE4OjI0OjM4LjUwODI2NjUzMSArMDIwMAogQEAg LTAsMCArMSw0MTcgQEAKICsjICAgQ29weXJpZ2h0IDE5OTcsIDE5OTksIDIwMDIgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04NTQsMTAgKzg1NCwxMCBAQCBJbmRleDogZ2Ri LTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAogK2RvX2Nh bGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5 L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUw LjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMS0xMi0xOSAyMzox MTo1MS4wOTIzMzMwODAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMi0wNi0wMiAxODoyNDozOC41MTAyNjY1MjkgKzAyMDAK IEBAIC0wLDAgKzEsOTYyIEBACiArIyAgIENvcHlyaWdodCAxOTg4LCAxOTkwLCAxOTkxLCAxOTky LCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAogKyMgICAyMDAwLCAyMDAyLCAy MDAzLCAyMDA0CkBAIC0xMzc0LDcgKzEzNzQsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuZXhwCiArIwogK3NlbmRfZ2RiICJicmVhayAk YnBfbG9jYXRpb24xMiBmb29cbiIKICtnZGJfZXhwZWN0IHsKLSsgIC1yZSAiSnVuayBhdCBlbmQg b2YgYXJndW1lbnRzLi4qJGdkYl9wcm9tcHQgJCJcCisrICAtcmUgIm1hbGZvcm1lZCBsaW5lc3Bl YyBlcnJvcjogdW5leHBlY3RlZCBzdHJpbmcsIFwiZm9vXCJcclxuJGdkYl9wcm9tcHQgJCJcCiAr ICAgICAgICAgIHtwYXNzICJicmVha3BvaW50IHdpdGggdHJhaWxpbmcgZ2FyYmFnZSBkaXNhbGxv d2VkIn0KICsgIC1yZSAiJGdkYl9wcm9tcHQgJCJcCiArICAgICAgICAgIHtmYWlsICJicmVha3Bv aW50IHdpdGggdHJhaWxpbmcgZ2FyYmFnZSBkaXNhbGxvd2VkIn0KQEAgLTE4MjEsMTAgKzE4MjEs MTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2Jy ZWFrLmV4cAogKyAgICBzZW5kX2dkYiAic2V0IGFyZ3MgbWFpblxuIgogKyAgICBnZGJfZXhwZWN0 IC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7fQogK30KLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5 L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAJMjAxMS0x Mi0xOSAyMjowNTowMi43ODg0MzE4ODEgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAJMjAxMi0wNi0wMiAxODoyNDozOC41MTEy NjY1MjggKzAyMDAKIEBAIC0wLDAgKzEsMjMzIEBACiArIyBDb3B5cmlnaHQgMTk5MiwgMTk5Mywg MTk5NCwgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMAogKyMgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0yMDU5LDEwICsyMDU5LDEwIEBAIEluZGV4OiBnZGItNy40 LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlZmlsZS5leHAKICtnZGJfdGVz dCAidXAiICIjXFswLTlcXSogKlxbMC05eGEtZkgnXF0qIGluIC4qIFxcKC4qXFwpLioiICJ1cCBp biBjb3JlZmlsZS5leHAgKHJlaW5pdCkiCiArCiArZ2RiX3Rlc3QgImNvcmUiICJObyBjb3JlIGZp bGUgbm93LiIKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBp ZS9NYWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVz dHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4JMjAxMS0xMi0xOSAyMjowNTowMi43ODg0MzE4ODEg KzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtl ZmlsZS5pbgkyMDEyLTA2LTAyIDE4OjI0OjM4LjUxMjI2NjUyNyArMDIwMAogQEAgLTAsMCArMSwx OSBAQAogK1ZQQVRIID0gQHNyY2RpckAKICtzcmNkaXIgPSBAc3JjZGlyQAoKZGlmZiAtLWdpdCBh L2dkYi02LjUtYnoyMDM2NjEtZW1pdC1yZWxvY3MucGF0Y2ggYi9nZGItNi41LWJ6MjAzNjYxLWVt aXQtcmVsb2NzLnBhdGNoCmluZGV4IDYxZTBkNTYuLmNjOGU1MTUgMTAwNjQ0Ci0tLSBhL2dkYi02 LjUtYnoyMDM2NjEtZW1pdC1yZWxvY3MucGF0Y2gKKysrIGIvZ2RiLTYuNS1iejIwMzY2MS1lbWl0 LXJlbG9jcy5wYXRjaApAQCAtMSwxNCArMSwxNCBAQAotSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAz MDYvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3N5bWZpbGUu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMDYub3JpZy9nZGIvc3ltZmlsZS5j CTIwMTAtMDMtMDYgMjM6MjA6MzUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC45MC4yMDEw MDMwNi9nZGIvc3ltZmlsZS5jCTIwMTAtMDMtMDYgMjM6MjY6MjUuMDAwMDAwMDAwICswMTAwCi1A QCAtMzY0Miw2ICszNjQyLDEyIEBAIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSAoc3RydWN0IG9i amZpbGUKLSB7Ci0gICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOworLS0tIGdkYi03LjQuNTAu MjAxMjA2MDIub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTItMDYtMDIgMTg6MjU6MjAuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5jCTIwMTItMDYtMDIg MTg6MjY6MzYuMTQ1MjMyMDU3ICswMjAwCitAQCAtMzYzMCw2ICszNjMwLDEyIEBAIGRlZmF1bHRf c3ltZmlsZV9yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUKKyAgICAgIERXTyBmaWxlLiAgKi8KKyAg IGJmZCAqYWJmZCA9IHNlY3RwLT5vd25lcjsKICAKICsgIC8qIEV4ZWN1dGFibGUgZmlsZXMgaGF2 ZSBhbGwgdGhlIHJlbG9jYXRpb25zIGFscmVhZHkgcmVzb2x2ZWQuCi0rICAgKiBIYW5kbGUgZmls ZXMgbGlua2VkIHdpdGggLS1lbWl0LXJlbG9jcy4KLSsgICAqIGh0dHA6Ly9zb3VyY2VzLnJlZGhh dC5jb20vbWwvZ2RiLzIwMDYtMDgvbXNnMDAxMzcuaHRtbCAgKi8KKysgICAgIEhhbmRsZSBmaWxl cyBsaW5rZWQgd2l0aCAtLWVtaXQtcmVsb2NzLgorKyAgICAgaHR0cDovL3NvdXJjZXMucmVkaGF0 LmNvbS9tbC9nZGIvMjAwNi0wOC9tc2cwMDEzNy5odG1sICAqLwogKyAgaWYgKChhYmZkLT5mbGFn cyAmIEVYRUNfUCkgIT0gMCkKICsgICAgcmV0dXJuIE5VTEw7CiArCgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuNS1iejIxNjcxMS1jbG9uZS1pcy1vdXRlcm1vc3QucGF0Y2ggYi9nZGItNi41LWJ6MjE2NzEx LWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAppbmRleCBkZWJhYzRlLi43MDRlMjlhIDEwMDY0NAot LS0gYS9nZGItNi41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaAorKysgYi9nZGIt Ni41LWJ6MjE2NzExLWNsb25lLWlzLW91dGVybW9zdC5wYXRjaApAQCAtMjMsMTEgKzIzLDExIEBA IGluc3RlYWQuCiAKIAlQb3J0IHRvIEdEQi02LjcuCiAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dk Yi9hbWQ2NC1saW51eC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwkyMDEyLTAzLTAyIDIyOjE1OjQ4LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYwky MDEyLTAzLTAyIDIyOjE2OjEzLjUyNjU2OTE2MyArMDEwMAotQEAgLTI2OCw2ICsyNjgsODAgQEAg YW1kNjRfbGludXhfcmVnaXN0ZXJfcmVnZ3JvdXBfcCAoc3RydWN0CistLS0gZ2RiLTcuNC41MC4y MDEyMDYwMi5vcmlnL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNTo0NS4z NTIyODAxMjggKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC1saW51eC10 ZGVwLmMJMjAxMi0wNi0wMiAyMTowNjoyNS41MzYyNjUzMjUgKzAyMDAKK0BAIC0yNzEsNiArMjcx LDgwIEBAIGFtZDY0X2xpbnV4X3JlZ2lzdGVyX3JlZ2dyb3VwX3AgKHN0cnVjdAogIAogIC8qIFNl dCB0aGUgcHJvZ3JhbSBjb3VudGVyIGZvciBwcm9jZXNzIFBUSUQgdG8gUEMuICAqLwogIApAQCAt ODcsNyArODcsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYW1kNjQtbGludXgt dGRlcC5jCiArYW1kNjRfbGludXhfb3V0ZXJtb3N0X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAq dGhpc19mcmFtZSkKICt7CiArICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKHRoaXNfZnJh bWUpOwotKyAgY2hhciAqbmFtZTsKKysgIGNvbnN0IGNoYXIgKm5hbWU7CiArCiArICBmaW5kX3Bj X3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgTlVMTCwgTlVMTCk7CiArCkBAIC0xMDgsNyAr MTA4LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2FtZDY0LWxpbnV4LXRkZXAu YwogIHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfd3JpdGVfcGMgKHN0cnVjdCByZWdjYWNoZSAq cmVnY2FjaGUsIENPUkVfQUREUiBwYykKICB7Ci1AQCAtMTMyMSw2ICsxMzk1LDggQEAgYW1kNjRf bGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZgorQEAgLTEzMzAsNiArMTQwNCw4IEBA IGFtZDY0X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmYKICAKICAgIHRkZXAtPnhz YXZlX3hjcjBfb2Zmc2V0ID0gSTM4Nl9MSU5VWF9YU0FWRV9YQ1IwX09GRlNFVDsKICAKQEAgLTEx NywxMSArMTE3LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hbWQ2NC1saW51 eC10ZGVwLmMKICAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmll cy4gICovCiAgICBzZXRfc29saWJfc3ZyNF9mZXRjaF9saW5rX21hcF9vZmZzZXRzCiAgICAgIChn ZGJhcmNoLCBzdnI0X2xwNjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyk7Ci1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvYW1kNjQtdGRlcC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvYW1kNjQtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0wMS0wNCAwOToxNjo1Ni4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0wMy0wMiAyMjox NzozOS4xMzMyODc1NzEgKzAxMDAKLUBAIC0yMTA4LDYgKzIxMDgsNyBAQCBhbWQ2NF9mcmFtZV91 bndpbmRfc3RvcF9yZWFzb24gKHN0cnVjdCBmCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNTo0NS4zNTIyODAxMjggKzAyMDAKKysr KyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNjow MC40MzcyNzQ1NzQgKzAyMDAKK0BAIC0yMTM4LDYgKzIxMzgsNyBAQCBhbWQ2NF9mcmFtZV91bndp bmRfc3RvcF9yZWFzb24gKHN0cnVjdCBmCiAgewogICAgc3RydWN0IGFtZDY0X2ZyYW1lX2NhY2hl ICpjYWNoZSA9CiAgICAgIGFtZDY0X2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hl KTsKQEAgLTEyOSw3ICsxMjksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYW1k NjQtdGRlcC5jCiAgCiAgICBpZiAoIWNhY2hlLT5iYXNlX3ApCiAgICAgIHJldHVybiBVTldJTkRf VU5BVkFJTEFCTEU7Ci1AQCAtMjExNiw2ICsyMTE3LDEwIEBAIGFtZDY0X2ZyYW1lX3Vud2luZF9z dG9wX3JlYXNvbiAoc3RydWN0IGYKK0BAIC0yMTQ2LDYgKzIxNDcsMTAgQEAgYW1kNjRfZnJhbWVf dW53aW5kX3N0b3BfcmVhc29uIChzdHJ1Y3QgZgogICAgaWYgKGNhY2hlLT5iYXNlID09IDApCiAg ICAgIHJldHVybiBVTldJTkRfT1VURVJNT1NUOwogIApAQCAtMTQwLDcgKzE0MCw3IEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hbWQ2NC10ZGVwLmMKICAgIHJldHVybiBVTldJTkRf Tk9fUkVBU09OOwogIH0KICAKLUBAIC0yMTI1LDYgKzIxMzAsNyBAQCBhbWQ2NF9mcmFtZV90aGlz X2lkIChzdHJ1Y3QgZnJhbWVfaW5mbyAqCitAQCAtMjE1NSw2ICsyMTYwLDcgQEAgYW1kNjRfZnJh bWVfdGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8gKgogIHsKICAgIHN0cnVjdCBhbWQ2NF9mcmFt ZV9jYWNoZSAqY2FjaGUgPQogICAgICBhbWQ2NF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhp c19jYWNoZSk7CkBAIC0xNDgsNyArMTQ4LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2FtZDY0LXRkZXAuYwogIAogICAgaWYgKCFjYWNoZS0+YmFzZV9wKQogICAgICByZXR1cm47 Ci1AQCAtMjEzMyw2ICsyMTM5LDEwIEBAIGFtZDY0X2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFt ZV9pbmZvICoKK0BAIC0yMTYzLDYgKzIxNjksMTAgQEAgYW1kNjRfZnJhbWVfdGhpc19pZCAoc3Ry dWN0IGZyYW1lX2luZm8gKgogICAgaWYgKGNhY2hlLT5iYXNlID09IDApCiAgICAgIHJldHVybjsK ICAKQEAgLTE1OSwxMSArMTU5LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9h bWQ2NC10ZGVwLmMKICAgICgqdGhpc19pZCkgPSBmcmFtZV9pZF9idWlsZCAoY2FjaGUtPmJhc2Ug KyAxNiwgY2FjaGUtPnBjKTsKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv aTM4Ni10ZGVwLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pMzg2LXRkZXAuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvaTM4Ni10ZGVwLmMJ MjAxMi0wMy0wMiAyMjoxNTo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9pMzg2LXRkZXAuYwkyMDEyLTAzLTAyIDIyOjE2OjEzLjUyODU2OTE1NyArMDEwMAot QEAgLTc2MTMsNiArNzYxMyw5IEBAIGkzODZfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9p bmZvIGkKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2kzODYtdGRlcC5jCTIwMTIt MDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvaTM4Ni10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNjowMC40NjYyNzQ1NjIgKzAyMDAKK0BAIC03 NjM5LDYgKzc2MzksOSBAQCBpMzg2X2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBp CiAgCiAgICB0ZGVwLT54c2F2ZV94Y3IwX29mZnNldCA9IC0xOwogIApAQCAtMTczLDEwICsxNzMs MTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2kzODYtdGRlcC5jCiAgICB0ZGVw LT5yZWNvcmRfcmVnbWFwID0gaTM4Nl9yZWNvcmRfcmVnbWFwOwogIAogICAgc2V0X2dkYmFyY2hf bG9uZ19sb25nX2FsaWduX2JpdCAoZ2RiYXJjaCwgMzIpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2kzODYtdGRlcC5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaTM4 Ni10ZGVwLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2kz ODYtdGRlcC5oCTIwMTItMDMtMDIgMjI6MTU6NDguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvaTM4Ni10ZGVwLmgJMjAxMi0wMy0wMiAyMjoxNjoxMy41Mjk1Njkx NTQgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2kzODYtdGRlcC5oCTIw MTItMDYtMDIgMjE6MDU6NDUuMzUyMjgwMTI4ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvaTM4Ni10ZGVwLmgJMjAxMi0wNi0wMiAyMTowNjowMC40ODYyNzQ1NjggKzAyMDAKIEBA IC0yMTksNiArMjE5LDkgQEAgc3RydWN0IGdkYmFyY2hfdGRlcAogICAgaW50ICgqaTM4Nl9zeXNl bnRlcl9yZWNvcmQpIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlKTsKICAgIC8qIFBhcnNlIHN5 c2NhbGwgYXJncy4gICovCkBAIC0xODcsMTEgKzE4NywxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvaTM4Ni10ZGVwLmgKICB9OwogIAogIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lz dGVycy4gICovCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvaWE2NC10ZGVwLmMKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pYTY0LXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvaWE2NC10ZGVwLmMJMjAxMi0wMy0wMiAyMjox NTo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9pYTY0LXRk ZXAuYwkyMDEyLTAzLTAyIDIyOjE2OjEzLjUyOTU2OTE1NCArMDEwMAotQEAgLTIxODEsNiArMjE4 MSwxMzggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgaWE2NF9mcgorLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvaWE2NC10ZGVwLmMJMjAxMi0wNi0wMiAyMTowNTo0 NS4zNTIyODAxMjggKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pYTY0LXRkZXAu YwkyMDEyLTA2LTAyIDIxOjA2OjAwLjQ5MDI3NDU1MiArMDIwMAorQEAgLTIxNzYsNiArMjE3Niwx MzggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgaWE2NF9mcgogICAgZGVmYXVs dF9mcmFtZV9zbmlmZmVyCiAgfTsKICAKQEAgLTMzMCw3ICszMzAsNyBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvaWE2NC10ZGVwLmMKICAvKiBTaWduYWwgdHJhbXBvbGluZXMuICAq LwogIAogIHN0YXRpYyB2b2lkCi1AQCAtNDE1Myw2ICs0Mjg1LDcgQEAgaWE2NF9nZGJhcmNoX2lu aXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaQorQEAgLTQxNDYsNiArNDI3OCw3IEBAIGlhNjRfZ2Ri YXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGkKICAgIHNldF9nZGJhcmNoX2R1bW15X2lk IChnZGJhcmNoLCBpYTY0X2R1bW15X2lkKTsKICAKICAgIHNldF9nZGJhcmNoX3Vud2luZF9wYyAo Z2RiYXJjaCwgaWE2NF91bndpbmRfcGMpOwpAQCAtMzM4LDEwICszMzgsMTAgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2lhNjQtdGRlcC5jCiAgI2lmZGVmIEhBVkVfTElCVU5XSU5E X0lBNjRfSAogICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpYTY0X2xpYnVud2luZF9zaWd0cmFtcF9mcmFt ZV91bndpbmQpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9idC1jbG9uZS1zdG9wLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYnQtY2xvbmUtc3RvcC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2J0LWNsb25lLXN0b3AuYwkyMDEy LTAzLTAyIDIyOjE2OjEzLjUzMDU2OTE1MSArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmMJMjAxMi0wNi0wMiAyMTow NjowMC41MTQyNzQ1NDQgKzAyMDAKIEBAIC0wLDAgKzEsMzkgQEAKICsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMzgyLDEwICszODIsMTAg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9i dC1jbG9uZS1zdG9wLmMKICsJZm9yICg7OykKICsJCXBhdXNlKCk7CiArfQotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmV4 cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9i dC1jbG9uZS1zdG9wLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9idC1jbG9uZS1zdG9wLmV4cAkyMDEyLTAzLTAyIDIyOjE2OjEzLjUz MDU2OTE1MSArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9idC1jbG9uZS1zdG9wLmV4cAkyMDEyLTA2LTAyIDIxOjA2OjAwLjUxNTI3NDU0NyAr MDIwMAogQEAgLTAsMCArMSw2MSBAQAogKyMgQ29weXJpZ2h0IDIwMDYgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1j b3JlLWFzLWFyZy5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0 Y2gKaW5kZXggZGUxY2NhZC4uOTY4NzcxMiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS1jb3JlLWFzLWFyZy5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUt YXMtYXJnLnBhdGNoCkBAIC01OCwxMSArNTgsMTEgQEAgSHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDA1MTcuaHRtbAogCSogZXhlYy5jIChleGVjX2ZpbGVf YXR0YWNoKTogUHJpbnQgYSBtb3JlIHVzZWZ1bCBlcnJvciBtZXNzYWdlIGlmIHRoZQogCXVzZXIg ZGlkICJnZGIgY29yZSIuCiAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9leGNlcHRp b25zLmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9leGNlcHRpb25zLmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDEx LTEwLTA5IDIxOjIxOjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2V4Y2VwdGlvbnMuaAkyMDExLTEyLTE5IDAxOjQxOjIwLjkwMDUwOTM0NyArMDEwMAotQEAg LTg4LDYgKzg4LDkgQEAgZW51bSBlcnJvcnMgeworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3Jp Zy9nZGIvZXhjZXB0aW9ucy5oCTIwMTItMDEtMDQgMDk6MTc6MDEuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZXhjZXB0aW9ucy5oCTIwMTItMDYtMDIgMTk6NTk6 MjIuMTk1MTE0MDUyICswMjAwCitAQCAtODYsNiArODYsOSBAQCBlbnVtIGVycm9ycyB7CiAgICAv KiBEV19PUF9HTlVfZW50cnlfdmFsdWUgcmVzb2x2aW5nIGZhaWxlZC4gICovCiAgICBOT19FTlRS WV9WQUxVRV9FUlJPUiwKICAKQEAgLTcyLDExICs3MiwxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvZXhjZXB0aW9ucy5oCiAgICAvKiBBZGQgbW9yZSBlcnJvcnMgaGVyZS4gICov CiAgICBOUl9FUlJPUlMKICB9OwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2V4ZWMu YworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2V4ZWMuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZXhlYy5jCTIwMTEtMDMtMjMgMTk6MjM6NTQu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXhlYy5jCTIwMTEt MTItMTkgMDE6NDE6MDQuODYzNTY4ODQ2ICswMTAwCi1AQCAtMzUsNiArMzUsNyBAQAorLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZXhlYy5jCTIwMTItMDUtMjkgMTY6MjM6MzkuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZXhlYy5jCTIwMTItMDYt MDIgMTk6NTk6MjIuMTk2MTE0MDUyICswMjAwCitAQCAtMzMsNiArMzMsNyBAQAogICNpbmNsdWRl ICJhcmNoLXV0aWxzLmgiCiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogICNpbmNsdWRlICJwcm9n c3BhY2UuaCIKQEAgLTg0LDcgKzg0LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L2V4ZWMuYwogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJyZWFkbGluZS9yZWFk bGluZS5oIgotQEAgLTI1NCwxMiArMjU1LDI3IEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZp bGVuYW1lLCBpbnQgZnIKK0BAIC0yNTEsMTIgKzI1MiwyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChj aGFyICpmaWxlbmFtZSwgaW50IGZyCiAgCiAgICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0X21h dGNoZXMgKGV4ZWNfYmZkLCBiZmRfb2JqZWN0LCAmbWF0Y2hpbmcpKQogIAl7CkBAIC0xMTUsMTMg KzExNSwxMyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXhlYy5jCiAgCX0KICAK ICAgICAgICAvKiBGSVhNRSAtIFRoaXMgc2hvdWxkIG9ubHkgYmUgcnVuIGZvciBSUzYwMDAsIGJ1 dCB0aGUgaWZkZWYgaXMgYSBwb29yCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbWFp bi5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMDoyODow MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWluLmMJMjAx MS0xMi0xOSAwMTo0MTowNC44NjM1Njg4NDYgKzAxMDAKLUBAIC0yNDgsNiArMjQ4LDM2IEBAIGNh cHR1cmVkX2NvbW1hbmRfbG9vcCAodm9pZCAqZGF0YSkKLSAgIHJldHVybiAxOwotIH0KKy0tLSBn ZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA2LTAyIDE5OjExOjU1LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL21haW4uYwkyMDEyLTA2 LTAyIDE5OjU5OjQyLjA4MjEwNzQ5OSArMDIwMAorQEAgLTI2Niw2ICsyNjYsMzYgQEAgdHlwZWRl ZiBzdHJ1Y3QgY21kYXJnIHsKKyAvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCisg REVGX1ZFQ19PIChjbWRhcmdfcyk7CiAgCiArLyogQ2FsbCBleGVjX2ZpbGVfYXR0YWNoLiAgSWYg aXQgZGV0ZWN0ZWQgRklMRU5BTUUgaXMgYSBjb3JlIGZpbGUgY2FsbAogKyAgIGNvcmVfZmlsZV9j b21tYW5kLiAgUHJpbnQgdGhlIG9yaWdpbmFsIGV4ZWNfZmlsZV9hdHRhY2ggZXJyb3Igb25seSBp ZgpAQCAtMTU2LDcgKzE1Niw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWlu LmMKICBzdGF0aWMgaW50CiAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICB7Ci1AQCAtNzA0 LDYgKzczNCw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNzY0LDYgKzc5NCw4 IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgCXsKICAJICBzeW1hcmcgPSBhcmd2W29w dGluZF07CiAgCSAgZXhlY2FyZyA9IGFyZ3Zbb3B0aW5kXTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbWFpbi5jCiAgCSAgb3B0aW5kKys7CiAgCX0K ICAKLUBAIC04NDUsMTEgKzg3NywyNSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorQEAg LTkxOSwxMSArOTUxLDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgJiYg c3ltYXJnICE9IE5VTEwKICAgICAgICAmJiBzdHJjbXAgKGV4ZWNhcmcsIHN5bWFyZykgPT0gMCkK ICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLWxpYnJwbS13 b3JrYXJvdW5kLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmth cm91bmQucGF0Y2gKaW5kZXggNTgwN2FjZS4uNjE3YmVmOSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKKysrIGIvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0tbGlicnBtLXdvcmthcm91bmQucGF0Y2gKQEAgLTEsNiArMSw4IEBA Ci0tLS0gLi9nZGIvZWxmcmVhZC5jCTIwMTAtMTAtMTQgMTc6MDc6NDUuMDAwMDAwMDAwICswMjAw Ci0rKysgLi9nZGIvZWxmcmVhZC5jCTIwMTAtMTAtMTQgMTc6MDY6MzAuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTM4Miw2ICsxMzgyLDE4IEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVp bGRfaWQgKmIKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9lbGZyZWFkLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEyLTA2 LTAyIDIxOjM1OjA5LjY2OTUxMDc1NyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L2VsZnJlYWQuYwkyMDEyLTA2LTAyIDIxOjM1OjMxLjEwNjUwMjY2MCArMDIwMAorQEAgLTE2NTgs NiArMTY1OCwxOSBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCiAg I2luY2x1ZGUgPGRsZmNuLmg+CiAgI2VuZGlmCiAgCkBAIC0xMCw2ICsxMiw3IEBACiArICAgRW5h YmxlIG9yIGRpc2FibGUgYSBzaWduYWwgaGFuZGxlci4gIFNJR05VTTogc2lnbmFsIHRvIGVuYWJs ZSAob3IgZGlzYWJsZQogKyAgIGlmIG5lZ2F0aXZlKS4gIEhBTkRMRVI6IHNhX3NpZ2FjdGlvbiBo YW5kbGVyIChvciBOVUxMIHRvIHVzZQogKyAgIHJwbXNxSGFuZGxlcigpKS4gIFJldHVybnM6IG5v LiBvZiByZWZzLCAtMSBvbiBlcnJvci4gICovCisrZXh0ZXJuIGludCBycG1zcUVuYWJsZSAoaW50 IHNpZ251bSwgLyogcnBtc3FBY3Rpb25fdCBoYW5kbGVyICovIHZvaWQgKmhhbmRsZXIpOwogK2lu dAogK3JwbXNxRW5hYmxlIChpbnQgc2lnbnVtLCAvKiBycG1zcUFjdGlvbl90IGhhbmRsZXIgKi8g dm9pZCAqaGFuZGxlcikKICt7CkBAIC0xOSw4ICsyMiwxMCBAQAogIC8qIFRoaXMgTUlTU0lOR19S UE1fSEFTSCB0cmFja2VyIGlzIHVzZWQgdG8gY29sbGVjdCBhbGwgdGhlIG1pc3NpbmcgcnBtIGZp bGVzCiAgICAgYW5kIGF2b2lkIHRoZWlyIGR1cGxpY2l0aWVzIGR1cmluZyBhIHNpbmdsZSBpbmZl cmlvciBydW4uICAqLwogIAotLS0tIC4vZ2RiL3Byb2Mtc2VydmljZS5saXN0CTIwMTAtMDUtMjgg MjA6NTA6MzAuMDAwMDAwMDAwICswMjAwCi0rKysgLi9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QJMjAx MC0xMC0xNCAxNzowNjozMC4wMDAwMDAwMDAgKzAyMDAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9wcm9jLXNlcnZpY2UubGlzdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAuMjAx MjA2MDIub3JpZy9nZGIvcHJvYy1zZXJ2aWNlLmxpc3QJMjAxMi0wNi0wMiAyMTozNTowOS42Njk1 MTA3NTcgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9wcm9jLXNlcnZpY2UubGlz dAkyMDEyLTA2LTAyIDIxOjM1OjE0LjI5NjUwODk4OSArMDIwMAogQEAgLTM3LDQgKzM3LDcgQEAK ICAgIHBzX3BzdG9wOwogICAgcHNfcHRyZWFkOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRp ZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKaW5k ZXggNTYwMmU3Yy4uYmE2NDU1MSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1y cG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKQEAgLTEsNyAr MSw3IEBACi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZXZlbnQtdG9wLmMKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9ldmVudC10b3AuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMS0wOS0yMSAxNzoyMToy OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9ldmVudC10b3Au YwkyMDExLTEyLTE5IDAxOjE4OjU2LjA4NzUzOTI1MSArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAx MjA2MDIub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxMi0wNi0wMiAyMTowODowOC42NTEyMjczNDcg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9ldmVudC10b3AuYwkyMDEyLTA2LTAy IDIxOjA4OjIzLjQ3OTIyMTg4NSArMDIwMAogQEAgLTM2LDYgKzM2LDcgQEAKICAjaW5jbHVkZSAi b2JzZXJ2ZXIuaCIKICAjaW5jbHVkZSAiY29udGludWF0aW9ucy5oIgpAQCAtMjgsMTEgKzI4LDEx IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9ldmVudC10b3AuYwogICAgLyogRWFj aCBpbnRlcnByZXRlciBoYXMgaXRzIG93biBydWxlcyBvbiBkaXNwbGF5aW5nIHRoZSBjb21tYW5k CiAgICAgICBwcm9tcHQuICAqLwogICAgaWYgKCFjdXJyZW50X2ludGVycF9kaXNwbGF5X3Byb21w dF9wICgpKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2VsZnJlYWQuYworSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2VsZnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTEtMTItMTkgMDA6NTQ6MDkuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZWxmcmVhZC5jCTIwMTEt MTItMTkgMDE6MTY6MTUuMjQ4NDU1ODk3ICswMTAwCi1AQCAtNDcsNiArNDcsNyBAQAorLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTItMDYtMDIgMjE6MDg6MDgu NjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxmcmVhZC5jCTIw MTItMDYtMDIgMjE6MDg6MjMuNDgyMjIxODgyICswMjAwCitAQCAtNDgsNiArNDgsNyBAQAogICNp bmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgImdkYmNtZC5oIgogICNpbmNsdWRlICJvYnNl cnZlci5oIgpAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv ZWxmcmVhZC5jCiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAgCiAgZXh0ZXJuIHZvaWQgX2luaXRp YWxpemVfZWxmcmVhZCAodm9pZCk7Ci1AQCAtMTYyMiw4ICsxNjIzLDM2MSBAQCBidWlsZF9pZF90 b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCitAQCAtMTY0Nyw4ICsxNjQ4LDM2MSBAQCBi dWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCiAgICByZXR1cm4gcmV0dmFs OwogIH0KICAKQEAgLTQwMyw3ICs0MDMsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvZWxmcmVhZC5jCiAgICAgYXZvaWRhbmNlLiAgKi8KICAKICBzdHJ1Y3QgbWlzc2luZ19maWxl cGFpcgotQEAgLTE2NzcsMTEgKzIwMzEsMTcgQEAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2UgKHZv aWQpCitAQCAtMTcwMiwxMSArMjA1NiwxNyBAQCBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAodm9p ZCkKICAgICAgICAvKiBBbGwgdGhlaXIgbWVtb3J5IGNhbWUganVzdCBmcm9tIG1pc3NpbmdfZmls ZXBhaXJfT0JTVEFDSy4gICovCiAgICAgICAgbWlzc2luZ19maWxlcGFpcl9oYXNoID0gTlVMTDsK ICAgICAgfQpAQCAtNDIxLDcgKzQyMSw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9lbGZyZWFkLmMKICAgIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICgpOwogIH0KICAKLUBAIC0x NzQ4LDE0ICsyMTA4LDM1IEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFy eSwKK0BAIC0xNzczLDE0ICsyMTMzLDM1IEBAIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNo YXIgKmJpbmFyeSwKICAKICAgICpzbG90ID0gbWlzc2luZ19maWxlcGFpcjsKICAKQEAgLTQ2NCwx MSArNDY0LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9lbGZyZWFkLmMKICB9 CiAgCiAgc3RhdGljIGNoYXIgKgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3N5bWZp bGUuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3N5bWZpbGUuaAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3ltZmlsZS5oCTIwMTEtMTItMTkg MDA6NTQ6MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvc3lt ZmlsZS5oCTIwMTEtMTItMTkgMDE6MTY6MTUuMjQ5NDU1ODkzICswMTAwCi1AQCAtNTY4LDYgKzU2 OCw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJfZ2UKKy0tLSBnZGIt Ny40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEyLTA2LTAyIDIxOjA4OjA4LjY1 MTIyNzM0NyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3N5bWZpbGUuaAkyMDEy LTA2LTAyIDIxOjA4OjIzLjQ5OTIyMTg3NyArMDIwMAorQEAgLTYyMSw2ICs2MjEsOCBAQCBleHRl cm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCiAgZXh0ZXJuIGNoYXIgKmJ1aWxk X2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkLAogIAkJCQkgICBjaGFy ICoqbGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3VmZml4KTsKICBleHRlcm4gdm9pZCBkZWJ1 Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmRlYnVnKTsK QEAgLTQ3NywxMSArNDc3LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9zeW1m aWxlLmgKICAKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAotSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMTItMTkgMDA6 NTQ6MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCTIwMTEtMTItMTkgMDE6MTY6MTUuMjUwNDU1ODg5ICswMTAwCi1AQCAt MTM4Nyw3ICsxMzg3LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworLS0tIGdkYi03 LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDYtMDIg MjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDYtMDIgMjE6MDg6MjMuNTEwMjIxODczICswMjAwCitA QCAtMTM4OCw3ICsxMzg4LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0gewogIAkgICAg d2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQogICAgICB9CkBAIC00 OTAsMTEgKzQ5MCwxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQtdmVyYm9zZSAwXG4iCiAg ICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJfcHJvbXB0ICQiIHsKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9t aS1zdXBwb3J0LmV4cAkyMDExLTEyLTE5IDAwOjU0OjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0x Mi0xOSAwMToyMDozNC45MjExNjM5NzcgKzAxMDAKLUBAIC0yMTIsNyArMjEyLDcgQEAgcHJvYyBk ZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3MgfSB7CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5v cmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTItMDYtMDIgMjE6MDg6MDgu NjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xp Yi9taS1zdXBwb3J0LmV4cAkyMDEyLTA2LTAyIDIxOjA4OjIzLjUyMzIyMTg2OSArMDIwMAorQEAg LTIxMyw3ICsyMTMsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJ ICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpA QCAtNTAzLDExICs1MDMsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAgc2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxk LWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGIt c2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQi IHsKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90dWkvdHVpLWludGVycC5jCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdHVpL3R1aS1pbnRlcnAuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDExLTA5 LTEyIDIzOjI0OjUxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L3R1aS90dWktaW50ZXJwLmMJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTI0NTU4ODMgKzAxMDAKLUBA IC0zMSw2ICszMSw3IEBACistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90dWkvdHVp LWludGVycC5jCTIwMTItMDYtMDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEyLTA2LTAyIDIxOjA4OjIzLjUy NDIyMTg2OSArMDIwMAorQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5jbHVkZSAidHVpL3R1aS5oIgog ICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKQEAgLTUx NSwxNSArNTE1LDE2IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90dWkvdHVpLWlu dGVycC5jCiAgCiAgLyogU2V0IHRvIDEgd2hlbiB0aGUgVFVJIG1vZGUgbXVzdCBiZSBhY3RpdmF0 ZWQgd2hlbiB3ZSBmaXJzdCBzdGFydAogICAgIGdkYi4gICovCi1JbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvYWNsb2NhbC5tNAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2Fj bG9jYWwubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2Fj bG9jYWwubTQJMjAxMS0wMi0xNSAyMjowNTo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40 LjUwLjIwMTExMjE4L2dkYi9hY2xvY2FsLm00CTIwMTEtMTItMTkgMDE6MTY6MTUuMjUyNDU1ODgz ICswMTAwCi1AQCAtMTksNiArMTksMTYyIEBAIFlvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBh dXRvY29uZi4gIEkKLSBJZiB5b3UgaGF2ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2Vu ZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KLSBUbyBkbyBzbywgdXNlIHRoZSBwcm9j ZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlwaWNhbGx5IGBhdXRvcmVjb25mJy5d KV0pCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTItMDYt MDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv YWNsb2NhbC5tNAkyMDEyLTA2LTAyIDIxOjA4OjIzLjU0NTIyMTg1OCArMDIwMAorQEAgLTExLDYg KzExLDE2NCBAQAorICMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQQorICMgUEFSVElDVUxBUiBQVVJQT1NFLgogIAogKyMgcGtnLm00 IC0gTWFjcm9zIHRvIGxvY2F0ZSBhbmQgdXRpbGlzZSBwa2ctY29uZmlnLiAgICAgICAgICAgIC0q LSBBdXRvY29uZiAtKi0KKysjIHNlcmlhbCAxIChwa2ctY29uZmlnLTAuMjQpCiArIyAKICsjIENv cHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5ldHNwbGl0LmNvbT4u CiArIwpAQCAtNTUxLDcgKzU1MiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv YWNsb2NhbC5tNAogK0FDX0RFRlVOKFtQS0dfUFJPR19QS0dfQ09ORklHXSwKICtbbTRfcGF0dGVy bl9mb3JiaWQoW15fP1BLR19bQS1aX10rJF0pCiArbTRfcGF0dGVybl9hbGxvdyhbXlBLR19DT05G SUcoX1BBVEgpPyRdKQotK0FDX0FSR19WQVIoW1BLR19DT05GSUddLCBbcGF0aCB0byBwa2ctY29u ZmlnIHV0aWxpdHldKWRubAorK0FDX0FSR19WQVIoW1BLR19DT05GSUddLCBbcGF0aCB0byBwa2ct Y29uZmlnIHV0aWxpdHldKQorK0FDX0FSR19WQVIoW1BLR19DT05GSUdfUEFUSF0sIFtkaXJlY3Rv cmllcyB0byBhZGQgdG8gcGtnLWNvbmZpZydzIHNlYXJjaCBwYXRoXSkKKytBQ19BUkdfVkFSKFtQ S0dfQ09ORklHX0xJQkRJUl0sIFtwYXRoIG92ZXJyaWRpbmcgcGtnLWNvbmZpZydzIGJ1aWx0LWlu IHNlYXJjaCBwYXRoXSkKKysKICtpZiB0ZXN0ICJ4JGFjX2N2X2Vudl9QS0dfQ09ORklHX3NldCIg IT0gInhzZXQiOyB0aGVuCiArCUFDX1BBVEhfVE9PTChbUEtHX0NPTkZJR10sIFtwa2ctY29uZmln XSkKICtmaQpAQCAtNTY0LDcgKzU2OCw2IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9hY2xvY2FsLm00CiArCQlBQ19NU0dfUkVTVUxUKFtub10pCiArCQlQS0dfQ09ORklHPSIiCiAr CWZpCi0rCQkKICtmaVtdZG5sCiArXSkjIFBLR19QUk9HX1BLR19DT05GSUcKICsKQEAgLTU3Mywy MSArNTc2LDIwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9hY2xvY2FsLm00CiAr IyBDaGVjayB0byBzZWUgd2hldGhlciBhIHBhcnRpY3VsYXIgc2V0IG9mIG1vZHVsZXMgZXhpc3Rz LiAgU2ltaWxhcgogKyMgdG8gUEtHX0NIRUNLX01PRFVMRVMoKSwgYnV0IGRvZXMgbm90IHNldCB2 YXJpYWJsZXMgb3IgcHJpbnQgZXJyb3JzLgogKyMKLSsjCi0rIyBTaW1pbGFyIHRvIFBLR19DSEVD S19NT0RVTEVTLCBtYWtlIHN1cmUgdGhhdCB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YKLSsjIHRoaXMg b3IgUEtHX0NIRUNLX01PRFVMRVMgaXMgY2FsbGVkLCBvciBtYWtlIHN1cmUgdG8gY2FsbAotKyMg UEtHX0NIRUNLX0VYSVNUUyBtYW51YWxseQorKyMgUGxlYXNlIHJlbWVtYmVyIHRoYXQgbTQgZXhw YW5kcyBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKKysjIG9ubHkgYXQgdGhlIGZp cnN0IG9jY3VyZW5jZSBpbiBjb25maWd1cmUuYWMsIHNvIGlmIHRoZSBmaXJzdCBwbGFjZQorKyMg aXQncyBjYWxsZWQgbWlnaHQgYmUgc2tpcHBlZCAoc3VjaCBhcyBpZiBpdCBpcyB3aXRoaW4gYW4g ImlmIiwgeW91CisrIyBoYXZlIHRvIGNhbGwgUEtHX0NIRUNLX0VYSVNUUyBtYW51YWxseQogKyMg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICtBQ19ERUZVTihbUEtHX0NIRUNLX0VYSVNUU10sCiArW0FDX1JFUVVJUkUoW1BLR19Q Uk9HX1BLR19DT05GSUddKWRubAogK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCiArICAg IEFDX1JVTl9MT0coWyRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkMSJdKTsg dGhlbgotKyAgbTRfaWZ2YWwoWyQyXSwgWyQyXSwgWzpdKQorKyAgbTRfZGVmYXVsdChbJDJdLCBb Ol0pCiArbTRfaWZ2YWxuKFskM10sIFtlbHNlCiArICAkM10pZG5sCiArZmldKQogKwotKwogKyMg X1BLR19DT05GSUcoW1ZBUklBQkxFXSwgW0NPTU1BTkRdLCBbTU9EVUxFU10pCiArIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICttNF9kZWZpbmUoW19QS0df Q09ORklHXSwKQEAgLTY0MCw2ICs2NDIsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvYWNsb2NhbC5tNAogK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBmb3IgbW9yZSBkZXRh aWxzLl0pCiArCiAraWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorKyAgIAlBQ19NU0df UkVTVUxUKFtub10pCiArICAgICAgICBfUEtHX1NIT1JUX0VSUk9SU19TVVBQT1JURUQKICsgICAg ICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgogKwkg ICAgICAgICQxW11fUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1wcmlu dC1lcnJvcnMgIiQyIiAyPiYxYApAQCAtNjQ5LDcgKzY1Miw3IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9hY2xvY2FsLm00CiArCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdl IGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogKwllY2hvICIkJDFbXV9QS0dfRVJST1JT IiA+JkFTX01FU1NBR0VfTE9HX0ZECiArCi0rCWlmZWxzZShbJDRdLCAsIFtBQ19NU0dfRVJST1Io ZG5sCisrCW00X2RlZmF1bHQoWyQ0XSwgW0FDX01TR19FUlJPUigKICtbUGFja2FnZSByZXF1aXJl bWVudHMgKCQyKSB3ZXJlIG5vdCBtZXQ6CiArCiArJCQxX1BLR19FUlJPUlMKQEAgLTY1NywzNiAr NjYwLDM1IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9hY2xvY2FsLm00CiArQ29u c2lkZXIgYWRqdXN0aW5nIHRoZSBQS0dfQ09ORklHX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUg aWYgeW91CiAraW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KICsK LStfUEtHX1RFWFQKLStdKV0sCi0rCQlbQUNfTVNHX1JFU1VMVChbbm9dKQotKyAgICAgICAgICAg ICAgICAkNF0pCisrX1BLR19URVhUXSkKKysgICAgICAgIF0pCiArZWxpZiB0ZXN0ICRwa2dfZmFp bGVkID0gdW50cmllZDsgdGhlbgotKwlpZmVsc2UoWyQ0XSwgLCBbQUNfTVNHX0ZBSUxVUkUoZG5s CisrICAgICAJQUNfTVNHX1JFU1VMVChbbm9dKQorKwltNF9kZWZhdWx0KFskNF0sIFtBQ19NU0df RkFJTFVSRSgKICtbVGhlIHBrZy1jb25maWcgc2NyaXB0IGNvdWxkIG5vdCBiZSBmb3VuZCBvciBp cyB0b28gb2xkLiAgTWFrZSBzdXJlIGl0CiAraXMgaW4geW91ciBQQVRIIG9yIHNldCB0aGUgUEtH X0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgZnVsbAogK3BhdGggdG8gcGtnLWNv bmZpZy4KICsKICtfUEtHX1RFWFQKICsKLStUbyBnZXQgcGtnLWNvbmZpZywgc2VlIDxodHRwOi8v cGtnLWNvbmZpZy5mcmVlZGVza3RvcC5vcmcvPi5dKV0sCi0rCQlbJDRdKQorK1RvIGdldCBwa2ct Y29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9yZy8+Ll0pCisrICAg ICAgICBdKQogK2Vsc2UKICsJJDFbXV9DRkxBR1M9JHBrZ19jdl9bXSQxW11fQ0ZMQUdTCiArCSQx W11fTElCUz0kcGtnX2N2X1tdJDFbXV9MSUJTCiArICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNd KQotKwlpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQorKwkkMwogK2ZpW11kbmwKICtdKSMgUEtHX0NI RUNLX01PRFVMRVMKICsKLSAjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwg MjAwNywgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIwotICMgVGhpcyBm aWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLUluZGV4 OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcuaW4KKyAjIEFNX0NPTkRJVElPTkFMICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSot CisgCisgIyBDb3B5cmlnaHQgKEMpIDE5OTcsIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUs IDIwMDYsIDIwMDgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWcuaW4KID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEx LTExLTIwIDA5OjU5OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2NvbmZpZy5pbgkyMDExLTEyLTE5IDAxOjE2OjE1LjI1MzQ1NTg3OSArMDEwMAotQEAgLTQ2 LDYgKzQ2LDkgQEAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2NvbmZpZy5pbgky MDEyLTA2LTAyIDIxOjA4OjA4LjY1MTIyNzM0NyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL2NvbmZpZy5pbgkyMDEyLTA2LTAyIDIxOjA4OjIzLjU0NjIyMTg1OSArMDIwMAorQEAg LTM2LDYgKzM2LDkgQEAKICAvKiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCB0YXJnZXQgdmVjdG9y LiAqLwogICN1bmRlZiBERUZBVUxUX0JGRF9WRUMKICAKQEAgLTY5Niw3MCArNjk4LDc4IEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBp ZiB0cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAg ICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogICN1bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjMz LDYgKzIzNiw5IEBACitAQCAtMjE2LDYgKzIxOSw5IEBACiAgLyogRGVmaW5lIGlmIFB5dGhvbiAy LjcgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJQWVRIT04yXzcKICAKICsvKiBE ZWZpbmUgaWYgbGlicnBtIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8KICsjdW5kZWYgSEFWRV9M SUJSUE0KICsKLSAvKiBEZWZpbmUgaWYgbGlidW53aW5kIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4g Ki8KLSAjdW5kZWYgSEFWRV9MSUJVTldJTkQKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgPGxpYnVud2luZC1pYTY0Lmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZFX0xJQlVO V0lORF9JQTY0X0gKICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWd1cmUK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWd1cmUKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDExLTExLTIwIDA5OjU5 OjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZ3Vy ZQkyMDExLTEyLTE5IDAxOjE2OjE1LjI1NjQ1NTg2NyArMDEwMAotQEAgLTY4NCw2ICs2ODQsOSBA QCBSRVBPUlRfQlVHU19UTworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvY29uZmln dXJlCTIwMTItMDYtMDIgMjE6MDg6MDguNjUxMjI3MzQ3ICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvY29uZmlndXJlCTIwMTItMDYtMDIgMjE6MjA6NTMuMjQ1ODM4MTIxICswMjAw CitAQCAtNjgwLDYgKzY4MCwxMSBAQCBSRVBPUlRfQlVHU19UTwogIFBLR1ZFUlNJT04KICBUQVJH RVRfT0JTCiAgc3ViZGlycwogK1JQTV9MSUJTCiArUlBNX0NGTEFHUworK1BLR19DT05GSUdfTElC RElSCisrUEtHX0NPTkZJR19QQVRICiArUEtHX0NPTkZJRwogIEdEQl9EQVRBRElSCiAgREVCVUdE SVIKLSBhbV9fZmFzdGRlcENDX0ZBTFNFCi1AQCAtOTUyLDYgKzk1NSw3IEBAIGVuYWJsZV9kZXBl bmRlbmN5X3RyYWNraW5nCi0gd2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKLSB3aXRoX2dkYl9kYXRh ZGlyCisgTUFLRUlORk9fRVhUUkFfRkxBR1MKK0BAIC03ODAsNiArNzg1LDcgQEAgd2l0aF9nZGJf ZGF0YWRpcgogIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKKyB3aXRoX2F1dG9fbG9hZF9kaXIKKyB3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgKICt3aXRoX3JwbQogIGVuYWJsZV90YXJnZXRzCiAgZW5h YmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RiY2xpCi1AQCAtOTk1LDYgKzk5OSw5IEBAIExERkxB R1MKLSBMSUJTCi0gQ1BQRkxBR1MKK0BAIC04MjUsNiArODMxLDExIEBAIENQUEZMQUdTCiAgQ1BQ CisgTUFLRUlORk8KKyBNQUtFSU5GT0ZMQUdTCiArUEtHX0NPTkZJRworK1BLR19DT05GSUdfUEFU SAorK1BLR19DT05GSUdfTElCRElSCiArUlBNX0NGTEFHUwogK1JQTV9MSUJTCiAgWUFDQwogIFlG TEFHUwogIFhNS01GJwotQEAgLTE2NTgsNiArMTY2NSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgot ICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiXQotICAgLS13aXRoLXJlbG9j YXRlZC1zb3VyY2VzPVBBVEgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2Fs bHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKK0BAIC0xNDk0LDYgKzE1MDUs OCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdp dGgtYXV0by1sb2FkLWRpcl0KKyAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMg bG9jYXRpb25zCiArICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVyeSBycG0gZGF0YWJhc2Ug Zm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25vLAogKyAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1saWJ1bndpbmQgICAgICAgIHVzZSBs aWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKKyAgIC0td2l0aC1saWJ1bndpbmQtaWE2 NCAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIGZvciBpYTY0IHRhcmdldHMKICAgIC0t d2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBvZiB0 aGUgdGVybWNhcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQotQEAgLTE2OTYs NiArMTcwNSw5IEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAg Q1BQRkxBR1MgICAgQy9DKysvT2JqZWN0aXZlIEMgcHJlcHJvY2Vzc29yIGZsYWdzLCBlLmcuIC1J PGluY2x1ZGUgZGlyPiBpZgotICAgICAgICAgICAgICAgeW91IGhhdmUgaGVhZGVycyBpbiBhIG5v bnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+Ci0gICBDUFAgICAgICAgICBDIHByZXBy b2Nlc3NvcgorQEAgLTE1MzUsNiArMTU0OCwxMyBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25t ZW50IHZhcmlhYmxlczoKKyAgIE1BS0VJTkZPICAgIFBhcmVudCBjb25maWd1cmUgZGV0ZWN0cyBp ZiBpdCBpcyBvZiBzdWZmaWNpZW50IHZlcnNpb24uCisgICBNQUtFSU5GT0ZMQUdTCisgICAgICAg ICAgICAgICBQYXJhbWV0ZXJzIGZvciBNQUtFSU5GTy4KICsgIFBLR19DT05GSUcgIHBhdGggdG8g cGtnLWNvbmZpZyB1dGlsaXR5CisrICBQS0dfQ09ORklHX1BBVEgKKysgICAgICAgICAgICAgIGRp cmVjdG9yaWVzIHRvIGFkZCB0byBwa2ctY29uZmlnJ3Mgc2VhcmNoIHBhdGgKKysgIFBLR19DT05G SUdfTElCRElSCisrICAgICAgICAgICAgICBwYXRoIG92ZXJyaWRpbmcgcGtnLWNvbmZpZydzIGJ1 aWx0LWluIHNlYXJjaCBwYXRoCiArICBSUE1fQ0ZMQUdTICBDIGNvbXBpbGVyIGZsYWdzIGZvciBS UE0sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogKyAgUlBNX0xJQlMgICAgbGlua2VyIGZsYWdzIGZv ciBSUE0sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5v dGhlciBDIENvbXBpbGVyJyBpbXBsZW1lbnRhdGlvbiB0byB1c2UuIERlZmF1bHRzIHRvCiAgICAg ICAgICAgICAgICB0aGUgZmlyc3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6IGBiaXNvbiAteScsIGBi eWFjYycsIGB5YWNjJy4KICAgIFlGTEFHUyAgICAgIFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0 IHdpbGwgYmUgcGFzc2VkIGJ5IGRlZmF1bHQgdG8gJFlBQ0MuCi1AQCAtNzk2OCw2ICs3OTgwLDQ4 NiBAQCBfQUNFT0YKLSBmaQotIAorQEAgLTUwMTUsNiArNTAzNSw0OTEgQEAgX0FDRU9GCisgeyAk YXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2F1dG9f bG9hZF9zYWZlX3BhdGgiID4mNQorICRhc19lY2hvICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo IiA+JjY7IH0KICAKICsjIEludGVncmF0aW9uIHdpdGggcnBtIGxpYnJhcnkgdG8gc3VwcG9ydCBt aXNzaW5nIGRlYnVnaW5mbyBzdWdnZXN0aW9ucy4KICsjIC0td2l0aG91dC1ycG06IERpc2FibGUg YW55IHJwbSBzdXBwb3J0LgpAQCAtOTg4LDYgKzk5OCwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvY29uZmlndXJlCiArICAgIGZpCiArCiArCisrCisrCisrCisrCiAraWYgdGVz dCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0IjsgdGhlbgogKwlpZiB0ZXN0 IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCiArICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQg b2YgIiR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0g bmFtZSB3aXRoIGFyZ3MuCkBAIC0xMTAwLDcgKzExMTQsNiBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvY29uZmlndXJlCiArJGFzX2VjaG8gIm5vIiA+JjY7IH0KICsJCVBLR19DT05G SUc9IiIKICsJZmkKLSsKICtmaQogKwogK3BrZ19mYWlsZWQ9bm8KQEAgLTExNDMsNiArMTE1Niw4 IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWd1cmUKICsKICsKICtpZiB0 ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisrICAgCXsgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0K ICsKICtpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhl bgogKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcwpAQCAtMTE1NywxMCAr MTE3MiwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlndXJlCiArCSMg UHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25n cwogKwllY2hvICIkUlBNX1BLR19FUlJPUlMiID4mNQogKwotKwl7ICRhc19lY2hvICIkYXNfbWU6 JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2 OyB9Ci0rICAgICAgICAgICAgICAgIEhBVkVfTElCUlBNPWZhbHNlCisrCUhBVkVfTElCUlBNPWZh bHNlCiArZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorKyAgICAgCXsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFz X2VjaG8gIm5vIiA+JjY7IH0KICsJSEFWRV9MSUJSUE09ZmFsc2UKICtlbHNlCiArCVJQTV9DRkxB R1M9JHBrZ19jdl9SUE1fQ0ZMQUdTCkBAIC0xMjQ0LDEzICsxMjU5LDEzIEBAIEluZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi9jb25maWd1cmUKICAKICAKICBzdWJkaXJzPSIkc3ViZGlycyB0 ZXN0c3VpdGUiCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlndXJlLmFjCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMS0xMS0yMCAw OTo1OTo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25m aWd1cmUuYWMJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTc0NTU4NjMgKzAxMDAKLUBAIC0xNDAsNiAr MTQwLDE5OSBAQCBBU19IRUxQX1NUUklORyhbLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzCi0gICAg ICAgICAgICAgICBbUmVsb2NhdGVkIGRpcmVjdG9yeSBmb3Igc291cmNlIGZpbGVzLiBdKQotIF0p CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNi0w MiAyMTowODowOC42NTEyMjczNDcgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9j b25maWd1cmUuYWMJMjAxMi0wNi0wMiAyMTowODoyMy41NjAyMjE4NTUgKzAyMDAKK0BAIC0xNjYs NiArMTY2LDE5OSBAQCBBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9TQUZFX1BBVEgsIGVzY2FwCisg CSAgICAgIFtEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMuXSkKKyBB Q19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoXSkKICAKICsjIEludGVncmF0 aW9uIHdpdGggcnBtIGxpYnJhcnkgdG8gc3VwcG9ydCBtaXNzaW5nIGRlYnVnaW5mbyBzdWdnZXN0 aW9ucy4KICsjIC0td2l0aG91dC1ycG06IERpc2FibGUgYW55IHJwbSBzdXBwb3J0LgpAQCAtMTQ0 OCwzMCArMTQ2MywxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlndXJl LmFjCiAgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQogIAogICMgQ2hlY2sgd2hldGhlciB0 byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotSW5kZXg6IGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL2FjaW5jbHVkZS5tNAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMTEyMTgub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUtMjcgMDU6NDA6NDUuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvYWNpbmNsdWRlLm00CTIw MTEtMTItMTkgMDE6MTY6MTUuMjU3NDU1ODYzICswMTAwCi1AQCAtMSwzICsxLDUgQEAKLSsjIHNl cmlhbCAxCi0rCi0gZG5sIHdyaXR0ZW4gYnkgUm9iIFNhdm95ZSA8cm9iQGN5Z251cy5jb20+IGZv ciBDeWdudXMgU3VwcG9ydAotIGRubCBtYWpvciByZXdyaXRpbmcgZm9yIFRjbCA3LjUgYnkgRG9u IExpYmVzIDxsaWJlc0BuaXN0Lmdvdj4KLSAKLUBAIC04MSw4ICs4Myw2IEBAIEFDX01TR19SRVNV TFQoeWVzKQotICMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG bG9vciwKLSAjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIAotLSMgc2VyaWFsIDEKLS0K LSAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERDCi0gIyBAbWFpbmRleCBQUk9HX0NDX1NUREMKLSAj IEBvdmluZGV4IENDCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29yZWxvdy5jCitJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0xMi0xOSAwMDo1NDow OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb3JlbG93LmMJ MjAxMS0xMi0xOSAwMToxNjoxNS4yNTg0NTU4NTkgKzAxMDAKLUBAIC0zMjEsNyArMzIxLDcgQEAg YnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKKy0tLSBnZGItNy40LjUwLjIwMTIw NjAyLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDEyLTA2LTAyIDIxOjA4OjA4LjY1MTIyNzM0NyArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvcmVsb3cuYwkyMDEyLTA2LTAyIDIxOjA4 OjIzLjU2MTIyMTg1NSArMDIwMAorQEAgLTMxNyw3ICszMTcsNyBAQCBidWlsZF9pZF9sb2NhdGVf ZXhlYyAoaW50IGZyb21fdHR5KQogICAgICAgICAgc3ltZmlsZV9vYmpmaWxlLT5mbGFncyB8PSBP QkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEOwogICAgICB9CiAgICBlbHNlCgpkaWZmIC0tZ2l0IGEv Z2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0 Y2gKaW5kZXggNzM2OGQ4YS4uMGE5NjAzNSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBAIC0xLDcgKzEs NyBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvY29yZWxvdy5jCTIwMTItMDEtMTAgMTc6MzA6NDQuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29yZWxvdy5jCTIwMTItMDEt MjEgMDA6MDI6NTguNzIwNDAxNzkyICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmln L2dkYi9jb3JlbG93LmMJMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb3JlbG93LmMJMjAxMi0wNi0wMiAyMTowNzoxNi40NjQy NDY1NjkgKzAyMDAKIEBAIC00Niw2ICs0Niw5IEBACiAgI2luY2x1ZGUgImZpbGVuYW1lcy5oIgog ICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKQEAgLTEyLDcgKzEyLDcgQEAgSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2NvcmVsb3cuYwogIAogICNpZm5kZWYgT19MQVJHRUZJTEUKICAjZGVm aW5lIE9fTEFSR0VGSUxFIDAKLUBAIC0yNzMsNiArMjc2LDUyIEBAIGFkZF90b190aHJlYWRfbGlz dCAoYmZkICphYmZkLCBhc2VjdGlvbgorQEAgLTI3NSw2ICsyNzgsNTIgQEAgYWRkX3RvX3RocmVh ZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uCiAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlkOwkJ CS8qIFllcywgbWFrZSBpdCBjdXJyZW50LiAgKi8KICB9CiAgCkBAIC02NSw3ICs2NSw3IEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb3JlbG93LmMKICAvKiBUaGlzIHJvdXRpbmUg b3BlbnMgYW5kIHNldHMgdXAgdGhlIGNvcmUgZmlsZSBiZmQuICAqLwogIAogIHN0YXRpYyB2b2lk Ci1AQCAtMzc1LDYgKzQyNCwxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJv bV90dHkpCitAQCAtMzc3LDYgKzQyNiwxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBp bnQgZnJvbV90dHkpCiAgICBwdXNoX3RhcmdldCAoJmNvcmVfb3BzKTsKICAgIGRpc2NhcmRfY2xl YW51cHMgKG9sZF9jaGFpbik7CiAgCkBAIC03OCw3ICs3OCw3IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9jb3JlbG93LmMKICAgIC8qIERvIHRoaXMgYmVmb3JlIGFja25vd2xlZGdp bmcgdGhlIGluZmVyaW9yLCBzbyBpZgogICAgICAgcG9zdF9jcmVhdGVfaW5mZXJpb3IgdGhyb3dz IChjYW4gaGFwcGVuIGVhc2lsbHkgaWYgeW91J3JlIGxvYWRpbmcKICAgICAgIGEgY29yZSBmaWxl IHdpdGggdGhlIHdyb25nIGV4ZWMpLCB3ZSBhcmVuJ3QgbGVmdCB3aXRoIHRocmVhZHMKLUBAIC05 MzQsNCArOTg5LDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKHZvaWQpCitAQCAtOTM1LDQgKzk5 MCwxMSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lkKQogICAgaW5pdF9jb3JlX29wcyAoKTsK ICAKICAgIGFkZF90YXJnZXQgKCZjb3JlX29wcyk7CkBAIC05MCwxMSArOTAsMTEgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvcmVsb3cuYwogKwkJCSAgIE5VTEwsIE5VTEwsIE5V TEwsCiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiAgfQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDEtMjEgMDA6MDI6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDEt MjEgMDA6MDI6NDEuNjE5NDYzNjA3ICswMTAwCi1AQCAtMTYwMTUsNiArMTYwMTUsMjcgQEAgaW5m b3JtYXRpb24gZmlsZXMuCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNi0wMiAyMTowNzoxNi40ODAy NDY1NjMgKzAyMDAKK0BAIC0xNjUwMiw2ICsxNjUwMiwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4K ICAKICBAZW5kIHRhYmxlCiAgCkBAIC0xMjIsMTAgKzEyMiwxMCBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVn bGlua30gc2VjdGlvbnMKICBAY2luZGV4IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxp bmsgaXMgYSBzcGVjaWFsIHNlY3Rpb24gb2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDEtMDQgMDk6MTc6MTEuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvc29saWItc3ZyNC5jCTIwMTIt MDEtMjEgMDA6MDI6NDEuNjIwNDYzNjAzICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5v cmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9zb2xpYi1zdnI0LmMJMjAxMi0wNi0wMiAyMTow NzoxNi41MTAyNDY1NTIgKzAyMDAKIEBAIC0xMjI3LDkgKzEyMjcsNTIgQEAgc3ZyNF9yZWFkX3Nv X2xpc3QgKENPUkVfQUREUiBsbSwgc3RydWN0CiAgCSAgY29udGludWU7CiAgCX0KQEAgLTE4Miwx MCArMTgyLDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9zb2xpYi1zdnI0LmMK ICAgICAgICB4ZnJlZSAoYnVmZmVyKTsKICAKICAgICAgICAvKiBJZiB0aGlzIGVudHJ5IGhhcyBu byBuYW1lLCBvciBpdHMgbmFtZSBtYXRjaGVzIHRoZSBuYW1lCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZWxm cmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9lbGZy ZWFkLmMJMjAxMi0wMS0yMSAwMDowMjozMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMJMjAxMi0wMS0yMSAwMDowMjo0MS42MjE0NjM1OTkgKzAx MDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEyLTA2LTAy IDIxOjA3OjAzLjY5NTI1MTI3MiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2Vs ZnJlYWQuYwkyMDEyLTA2LTAyIDIxOjA3OjU2LjI2NDIzMjA0OSArMDIwMAogQEAgLTQ0LDYgKzQ0 LDExIEBACiAgI2luY2x1ZGUgImdkYnRocmVhZC5oIgogICNpbmNsdWRlICJyZWdjYWNoZS5oIgpA QCAtMTk4LDcgKzE5OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFk LmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKICAKLUBAIC0x MDc2LDE2ICsxMDgxLDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3AgKHN0 cnUKK0BAIC0xMDcyLDE2ICsxMDc3LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJu X3N0b3AgKHN0cnUKICAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscywgc2Fs c19lbmQpOwogIH0KICAKQEAgLTIyMyw4ICsyMjMsOSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZWxmcmVhZC5jCiAtLyogTG9jYXRlIE5UX0dOVV9CVUlMRF9JRCBmcm9tIEFCRkQg YW5kIHJldHVybiBpdHMgY29udGVudC4gICovCiArLyogTG9jYXRlIE5UX0dOVV9CVUlMRF9JRCBh bmQgcmV0dXJuIGl0cyBtYXRjaGluZyBkZWJ1ZyBmaWxlbmFtZS4KICsgICBGSVhNRTogTk9URSBk ZWNvZGluZyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIHRoZSBCRkQgY29yZSBub3RlcyBkZWNvZGlu Zy4gICovCi0rCi0rc3RydWN0IGJ1aWxkX2lkICoKKyAKKyBzdGF0aWMgc3RydWN0IGJ1aWxkX2lk ICoKKy1idWlsZF9pZF9iZmRfZ2V0IChiZmQgKmFiZmQpCiArYnVpbGRfaWRfYnVmX2dldCAoYmZk ICp0ZW1wbCwgZ2RiX2J5dGUgKmJ1ZiwgYmZkX3NpemVfdHlwZSBzaXplKQogK3sKICsgIGJmZF9i eXRlICpwOwpAQCAtMjU5LDE0ICsyNjAsMTMgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2VsZnJlYWQuYwogKwogKy8qIFNlcGFyYXRlIGRlYnVnaW5mbyBmaWxlcyBoYXZlIGNvcnJ1 cHRlZCBQSERSIGJ1dCBTSERSIGlzIGNvcnJlY3QgdGhlcmUuCiArICAgTG9jYXRlIE5UX0dOVV9C VUlMRF9JRCBmcm9tIEFCRkQgYW5kIHJldHVybiBpdHMgY29udGVudC4gICovCi0gCi0gc3RhdGlj IHN0cnVjdCBidWlsZF9pZCAqCi0tYnVpbGRfaWRfYmZkX2dldCAoYmZkICphYmZkKQorKworK3N0 YXRpYyBzdHJ1Y3QgYnVpbGRfaWQgKgogK2J1aWxkX2lkX2JmZF9zaGRyX2dldCAoYmZkICphYmZk KQogIHsKICAgIHN0cnVjdCBidWlsZF9pZCAqcmV0dmFsOwogIAotQEAgLTExMDEsNiArMTE1NSwz NDggQEAgYnVpbGRfaWRfYmZkX2dldCAoYmZkICphYmZkKQorQEAgLTEwOTcsNiArMTE1MSwzNDgg QEAgYnVpbGRfaWRfYmZkX2dldCAoYmZkICphYmZkKQogICAgcmV0dXJuIHJldHZhbDsKICB9CiAg CkBAIC0zNjIsNyArMzYyLDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2VsZnJl YWQuYwogKy8qIFRyYW5zbGF0ZSBhbiBFTEYgcHJvZ3JhbSBoZWFkZXIgdGFibGUgZW50cnkgaW4g ZXh0ZXJuYWwgZm9ybWF0IGludG8gYW4KICsgICBFTEYgcHJvZ3JhbSBoZWFkZXIgdGFibGUgZW50 cnkgaW4gaW50ZXJuYWwgZm9ybWF0LiAgKi8KICsKLSt2b2lkCisrc3RhdGljIHZvaWQKICtlbGZf c3dhcF9waGRyX2luIChiZmQgKmFiZmQsCiArCQkgIGNvbnN0IEVsZjY0X0V4dGVybmFsX1BoZHIg KnNyYzY0LAogKwkJICBFbGZfSW50ZXJuYWxfUGhkciAqZHN0KQpAQCAtNjE1LDcgKzYxNSw3IEBA IEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMKICAvKiBSZXR1cm4gaWYg RklMRU5BTUUgaGFzIE5UX0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAq LwogIAogIHN0YXRpYyBpbnQKLUBAIC0xMTE1LDcgKzE1MTEsNyBAQCBidWlsZF9pZF92ZXJpZnkg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtMTExMSw3ICsxNTA3LDcgQEAgYnVpbGRfaWRf dmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwgcwogICAgaWYgKGFiZmQgPT0gTlVMTCkKICAg ICAgcmV0dXJuIDA7CiAgCkBAIC02MjQsNyArNjI0LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2VsZnJlYWQuYwogIAogICAgaWYgKGZvdW5kID09IE5VTEwpCiAgICAgIHdhcm5p bmcgKF8oIkZpbGUgXCIlc1wiIGhhcyBubyBidWlsZC1pZCwgZmlsZSBza2lwcGVkIiksIGZpbGVu YW1lKTsKLUBAIC0xMTMzLDE0ICsxNTI5LDE1IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hh ciAqZmlsZW5hbWUsIHMKK0BAIC0xMTI5LDE3ICsxNTI1LDE4IEBAIGJ1aWxkX2lkX3ZlcmlmeSAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIHMKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNjM2 LDYgKzYzNiw5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMKICB7 CiAgICBjaGFyICpsaW5rLCAqZGVidWdkaXIsICpyZXR2YWwgPSBOVUxMOwogKyAgY2hhciAqbGlu a19hbGwgPSBOVUxMOworICAgVkVDIChjaGFyX3B0cikgKmRlYnVnZGlyX3ZlYzsKKyAgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOworICAgaW50IGl4OwogIAogICAgLyogREVCVUdfRklMRV9ESVJF Q1RPUlkvLmJ1aWxkLWlkL2FiL2NkZWYgKi8KIC0gIGxpbmsgPSBhbGxvY2EgKHN0cmxlbiAoZGVi dWdfZmlsZV9kaXJlY3RvcnkpICsgKHNpemVvZiAiLy5idWlsZC1pZC8iIC0gMSkgKyAxCkBAIC02 NDQsMzAgKzY0NywyNiBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5j CiAgCiAgICAvKiBLZWVwIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxF X0RJUkVDVE9SWSBiZWluZyAiIiB3aWxsCiAgICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxv b2t1cHMuICAqLwotQEAgLTExNTEsNiArMTU0OCw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVu YW1lIChzdHJ1Y3QgYnVpbGQKLSAgICAgICBjaGFyICpzLCAqZGVidWdkaXJfZW5kOworQEAgLTEx NTIsNiArMTU0OSw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQK KyAgICAgICBzaXplX3QgZGVidWdkaXJfbGVuID0gc3RybGVuIChkZWJ1Z2Rpcik7CiAgICAgICAg Z2RiX2J5dGUgKmRhdGEgPSBidWlsZF9pZC0+ZGF0YTsKICAgICAgICBzaXplX3Qgc2l6ZSA9IGJ1 aWxkX2lkLT5zaXplOwogKyAgICAgIHVuc2lnbmVkIHNlcW5vOwogKyAgICAgIHN0cnVjdCBzdGF0 IHN0YXRidWZfdHJhc2g7CisgICAgICAgY2hhciAqczsKICAKLSAgICAgICB3aGlsZSAoKmRlYnVn ZGlyID09IERJUk5BTUVfU0VQQVJBVE9SKQotIAlkZWJ1Z2RpcisrOwotQEAgLTExNzEsMzkgKzE1 NzAsMjQyIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKKyAgICAg ICBtZW1jcHkgKGxpbmssIGRlYnVnZGlyLCBkZWJ1Z2Rpcl9sZW4pOworQEAgLTExNjYsMzcgKzE1 NjUsMjQwIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKICAJKnMr KyA9ICcvJzsKICAgICAgICB3aGlsZSAoc2l6ZS0tID4gMCkKICAJcyArPSBzcHJpbnRmIChzLCAi JTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7CiAtICAgICAgc3RyY3B5IChzLCAiLmRlYnVnIik7 Ci0tCisgCiAtICAgICAgLyogbHJlYWxwYXRoKCkgaXMgZXhwZW5zaXZlIGV2ZW4gZm9yIHRoZSB1 c3VhbGx5IG5vbi1leGlzdGVudCBmaWxlcy4gICovCiAtICAgICAgaWYgKGFjY2VzcyAobGluaywg Rl9PSykgPT0gMCkKIC0JcmV0dmFsID0gbHJlYWxwYXRoIChsaW5rKTsKLSAKLS0gICAgICBpZiAo cmV0dmFsICE9IE5VTEwgJiYgIWJ1aWxkX2lkX3ZlcmlmeSAocmV0dmFsLCBidWlsZF9pZCkpCiAr ICAgICAgZm9yIChzZXFubyA9IDA7OyBzZXFubysrKQotIAl7Ci0tCSAgeGZyZWUgKHJldHZhbCk7 Ci0tCSAgcmV0dmFsID0gTlVMTDsKKysJewogKwkgIGNoYXIgKnMyOwogKwogKwkgIGlmIChzZXFu bykKQEAgLTY4NSw3ICs2ODQsOCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZWxm cmVhZC5jCiArCSAgICBzdHJjcHkgKHMyLCAiLmRlYnVnIik7CiArCSAgZWxzZQogKwkgICAgKnMy ID0gMDsKLSsKKyAKKy0gICAgICBpZiAocmV0dmFsICE9IE5VTEwgJiYgIWJ1aWxkX2lkX3Zlcmlm eSAocmV0dmFsLCBidWlsZF9pZCkpCiArCSAgLyogYGFjY2VzcycgYXV0b21hdGljYWxseSBkZXJl ZmVyZW5jZXMgTElOSy4gICovCiArCSAgaWYgKGxzdGF0IChsaW5rLCAmc3RhdGJ1Zl90cmFzaCkg IT0gMCkKICsJICAgIHsKQEAgLTcwMywxNSArNzAzLDE2IEBAIEluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9lbGZyZWFkLmMKICsKICsJICBpZiAocmV0dmFsKQogKwkgICAgYnJlYWs7Ci0g CX0KLSAKLSAgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCi0tCWJyZWFrOwotKwl7Ci0rCSAgLyog TElOS19BTEwgaXMgbm90IHVzZWQgYmVsb3cgaW4gdGhpcyBub24tTlVMTCBSRVRWQUwgY2FzZS4g ICovCi0rCSAgYnJlYWs7CiArCX0KICsKKysgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCisgCXsK Ky0JICB4ZnJlZSAocmV0dmFsKTsKKy0JICByZXR2YWwgPSBOVUxMOworKwkgIC8qIExJTktfQUxM IGlzIG5vdCB1c2VkIGJlbG93IGluIHRoaXMgbm9uLU5VTEwgUkVUVkFMIGNhc2UuICAqLworKwkg IGJyZWFrOworIAl9CisgCiArCWlmIChsaW5rX2FsbCA9PSBOVUxMKQogKwkgIGxpbmtfYWxsID0g eHN0cmR1cCAobGluayk7CiArCWVsc2UKQEAgLTcyNiwxNCArNzI3LDEyIEBAIEluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMKICsKICsJICAgIHN0cmNweSAoJmxpbmtfYWxs W2xlbl9vcmlnICsgMV0sIGxpbmspOwogKwkgIH0KLSAKLSAgICAgICBkZWJ1Z2RpciA9IGRlYnVn ZGlyX2VuZDsKLSAgICAgfQotICAgd2hpbGUgKCpkZWJ1Z2RpciAhPSAwKTsKLSAKKysgICAgfQor KwogKyAgaWYgKGxpbmtfcmV0dXJuICE9IE5VTEwpCiArICAgIHsKLSsgICAgICBpZiAocmV0dmFs ICE9IE5VTEwpCisgICAgICAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQlicmVhazsKICsgICAgICAg ewogKyAgICAgICAgICpsaW5rX3JldHVybiA9IGxpbms7CiArICAgICAgICAgbGluayA9IE5VTEw7 CkBAIC03NDMsMTMgKzc0MiwxNCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZWxm cmVhZC5jCiArICAgICAgICAgKmxpbmtfcmV0dXJuID0gbGlua19hbGw7CiArICAgICAgICAgbGlu a19hbGwgPSBOVUxMOwogKyAgICAgICB9Ci0rICAgIH0KKyAgICAgfQogKyAgeGZyZWUgKGxpbmsp OwogKyAgeGZyZWUgKGxpbmtfYWxsKTsKLSsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKworIAor ICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCiArLyog VGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBpcyB1c2VkIG9ubHkgZm9yIHRoZSBk dXBsaWNpdGUgbWVzc2FnZXMKICsgICAgIFRyeSB0byBpbnN0YWxsIHRoZSBoYXNoIGZpbGUgLi4u CiArICAgYXZvaWRhbmNlLiAgKi8KQEAgLTc3Miw5ICs3NzIsOSBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5jCiArCiArICByZXR2YWwgPSBvYnN0YWNrX2FsbG9jICgm bWlzc2luZ19maWxlcGFpcl9vYnN0YWNrLCBzaXplKTsKICsgIG1lbXNldCAocmV0dmFsLCAwLCBz aXplKTsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAorKyAgcmV0dXJuIHJldHZhbDsKKyt9Cisr CiArc3RhdGljIGhhc2h2YWxfdAogK21pc3NpbmdfZmlsZXBhaXJfaGFzaF9mdW5jIChjb25zdCBz dHJ1Y3QgbWlzc2luZ19maWxlcGFpciAqZWxlbSkKICt7CkBAIC05MDgsNyArOTA4LDcgQEAgSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2VsZnJlYWQuYwogICAgICAgIHhmcmVlIChidWls ZF9pZCk7CiAgICAgICAgLyogUHJldmVudCBsb29waW5nIG9uIGEgc3RyaXBwZWQgLmRlYnVnIGZp bGUuICAqLwogICAgICAgIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwKLUBAIC0xMjE0LDcgKzE4 MTYsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCitAQCAtMTIw Nyw3ICsxODA5LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgog IAkgIHhmcmVlIChidWlsZF9pZF9uYW1lKTsKICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lk X25hbWUgIT0gTlVMTCkKQEAgLTkxNyw3ICs5MTcsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvZWxmcmVhZC5jCiAgICAgIH0KICAgIHJldHVybiBOVUxMOwogIH0KLUBAIC0xNDM0 LDkgKzIwMzYsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAor QEAgLTE0MjcsOSArMjAyOSwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsCiAgICAgICBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCiAgICBlbHNlIGlmICghb2Jq ZmlsZV9oYXNfcGFydGlhbF9zeW1ib2xzIChvYmpmaWxlKSkKICAgICAgewpAQCAtOTMwLDcgKzkz MCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9lbGZyZWFkLmMKICAKICAgICAg ICBpZiAoZGVidWdmaWxlID09IE5VTEwpCiAgCWRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVi dWdfZmlsZV9ieV9kZWJ1Z2xpbmsgKG9iamZpbGUpOwotQEAgLTE0NDgsNiArMjA1MSwxMiBAQCBl bGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTQ0MSw2ICsyMDQ0 LDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAJICBzeW1i b2xfZmlsZV9hZGRfc2VwYXJhdGUgKGFiZmQsIHN5bWZpbGVfZmxhZ3MsIG9iamZpbGUpOwogIAkg IHhmcmVlIChkZWJ1Z2ZpbGUpOwogIAl9CkBAIC05NDMsNyArOTQzLDcgQEAgSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL2VsZnJlYWQuYwogICAgICB9CiAgfQogIAotQEAgLTE5MzEsNCAr MjU0MCwxNiBAQCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQorQEAgLTE3NzAsNCArMjM3OSwx NiBAQCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQogIAogICAgZWxmX29iamZpbGVfZ251X2lm dW5jX2NhY2hlX2RhdGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CiAgICBnbnVfaWZ1bmNf Zm5zX3AgPSAmZWxmX2dudV9pZnVuY19mbnM7CkBAIC05NjAsMTEgKzk2MCwxMSBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZWxmcmVhZC5jCiArCiArICBvYnNlcnZlcl9hdHRhY2hf ZXhlY3V0YWJsZV9jaGFuZ2VkIChkZWJ1Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQpOwogIH0K LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9zeW1maWxlLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEyLTAxLTIxIDAwOjAyOjMzLjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3N5bWZpbGUuaAkyMDEyLTAxLTIxIDAw OjAyOjQxLjYyMTQ2MzU5OSArMDEwMAotQEAgLTYxNCw2ICs2MTQsMTMgQEAgdm9pZCBmcmVlX3N5 bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1Y3QgcworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3Jp Zy9nZGIvc3ltZmlsZS5oCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUxMjcyICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltZmlsZS5oCTIwMTItMDYtMDIgMjE6MDc6MTYuNTI0 MjQ2NTQ3ICswMjAwCitAQCAtNjE1LDYgKzYxNSwxMyBAQCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdt ZW50X2RhdGEgKHN0cnVjdCBzCiAgCiAgZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICppbmNyZW1lbnRf cmVhZGluZ19zeW10YWIgKHZvaWQpOwogIApAQCAtOTc4LDExICs5NzgsMTEgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL3N5bWZpbGUuaAogIC8qIEZyb20gZHdhcmYycmVhZC5jICov CiAgCiAgLyogTmFtZXMgZm9yIGEgZHdhcmYyIGRlYnVnZ2luZyBzZWN0aW9uLiAgVGhlIGZpZWxk IE5PUk1BTCBpcyB0aGUgbm9ybWFsCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMi0wMS0yMSAwMDowMjozNi4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJ MjAxMi0wMS0yMSAwMDowMjo0MS42MjI0NjM1OTYgKzAxMDAKLUBAIC0xMzg1LDYgKzEzODUsMTYg QEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIu b3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTItMDYtMDIgMjE6MDc6MDMuNjk1MjUx MjcyICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCTIwMTItMDYtMDIgMjE6MDc6MTYuNTI2MjQ2NTQ2ICswMjAwCitAQCAtMTM4OCw2ICsxMzg4 LDE2IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxk bid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtOTk5LDExICs5OTksMTEg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAog ICAgICByZXR1cm4gMDsKICB9CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVz dHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMi0wMS0x MiAyMzoyODozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90 ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTItMDEtMjEgMDA6MDI6NDEuNjIyNDYzNTk2 ICswMTAwCi1AQCAtMjEyLDYgKzIxMiwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsg YXJncyB9IHsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIv bWktc3VwcG9ydC5leHAJMjAxMi0wNi0wMiAyMTowNzowMy42OTUyNTEyNzIgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTIt MDYtMDIgMjE6MDc6MTYuNTM1MjQ2NTQ0ICswMjAwCitAQCAtMjEzLDYgKzIxMywxNiBAQCBwcm9j IGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0 IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpAQCAtMTAyMCwxMSArMTAyMCwxMSBA QCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0 LmV4cAogICAgICAjIElmIGFsbG93aW5nIHRoZSBpbmZlcmlvciB0byBoYXZlIGl0cyBvd24gUFRZ IHRoZW4gYXNzaWduIHRoZSBpbmZlcmlvcgogICAgICAjIGl0cyBvd24gdGVybWluYWwgZGV2aWNl IGhlcmUuCiAgICAgIGlmIHsgJHNlcGFyYXRlX2luZmVyaW9yX3B0eSB9IHsKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9vYmpmaWxlcy5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvb2JqZmlsZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvb2JqZmlsZXMuaAkyMDEyLTAxLTA0IDA5OjE3OjA5LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL29iamZpbGVzLmgJMjAxMi0wMS0yMSAwMDowMjo0MS42 MjM0NjM1OTMgKzAxMDAKLUBAIC00MzMsNiArNDMzLDEwIEBAIHN0cnVjdCBvYmpmaWxlCistLS0g Z2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTItMDYtMDIgMjE6MDc6 MDMuNjk1MjUxMjcyICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvb2JqZmlsZXMu aAkyMDEyLTA2LTAyIDIxOjA3OjE2LjUzOTI0NjU0MSArMDIwMAorQEAgLTQzMiw2ICs0MzIsMTAg QEAgc3RydWN0IG9iamZpbGUKICAKICAjZGVmaW5lIE9CSkZfTUFJTkxJTkUgKDEgPDwgNSkKICAK CmRpZmYgLS1naXQgYS9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2lu dHMyLnBhdGNoIGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRz Mi5wYXRjaAppbmRleCBjN2YwZDMzLi5jNTMxOGU2IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVk dWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoCisrKyBiL2dkYi02LjYtc2No ZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKQEAgLTIxLDE1ICsyMSwx NSBAQAogCiAJUG9ydCB0byBHREItNi44cHJlLgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvaW5mZXJpb3IuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2luZmVyaW9y LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2luZmVyaW9y LmgJMjAxMS0xMC0wNyAxNDowNjo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTExMjE4L2dkYi9pbmZlcmlvci5oCTIwMTEtMTItMTggMjM6NDA6NTkuMjU3MzAwNDUxICswMTAw Ci1AQCAtMTYyLDcgKzE2MiwxNSBAQCBleHRlcm4gdm9pZCByZW9wZW5fZXhlY19maWxlICh2b2lk KTsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2luZmVyaW9yLmgJMjAxMi0wNS0y NCAxODozOTowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9p bmZlcmlvci5oCTIwMTItMDYtMDIgMTg6MjQ6MTIuODc1Mjc0MTc5ICswMjAwCitAQCAtMTU5LDcg KzE1OSwxNSBAQCBleHRlcm4gdm9pZCByZW9wZW5fZXhlY19maWxlICh2b2lkKTsKICAvKiBUaGUg YHJlc3VtZScgcm91dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gc3BlY2lhbCBjaXJjdW1z dGFuY2VzLgogICAgIE5vcm1hbGx5LCB1c2UgYHByb2NlZWQnLCB3aGljaCBoYW5kbGVzIGEgbG90 IG9mIGJvb2trZWVwaW5nLiAgKi8KICAKLS1leHRlcm4gdm9pZCByZXN1bWUgKGludCwgZW51bSB0 YXJnZXRfc2lnbmFsKTsKKy1leHRlcm4gdm9pZCByZXN1bWUgKGludCwgZW51bSBnZGJfc2lnbmFs KTsKICtlbnVtIHJlc3VtZV9zdGVwCiArICB7CiArICAgIC8qIGN1cnJlbnRseV9zdGVwcGluZyAo KSBzaG91bGQgcmV0dXJuIG5vbi16ZXJvIGZvciBub24tY29udGludWUuICAqLwpAQCAtMzgsMTQg KzM4LDE0IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9pbmZlcmlvci5oCiArICAg IFJFU1VNRV9TVEVQX05FRURFRAkJLyogU3RlcHBpbmcgb25seSBmb3Igc29mdHdhcmUgd2F0Y2hw b2ludHMuICAqLwogKyAgfTsKICsKLStleHRlcm4gdm9pZCByZXN1bWUgKGVudW0gcmVzdW1lX3N0 ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCk7CisrZXh0ZXJuIHZvaWQgcmVzdW1lIChlbnVtIHJlc3Vt ZV9zdGVwLCBlbnVtIGdkYl9zaWduYWwpOwogIAogIGV4dGVybiBwdGlkX3QgdXNlcl92aXNpYmxl X3Jlc3VtZV9wdGlkIChpbnQgc3RlcCk7CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pbmZydW4uYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvaW5mcnVuLmMJMjAxMS0x MS0yMiAyMjoyNToxNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9pbmZydW4uYwkyMDExLTEyLTE5IDAwOjEyOjM0LjQ3MDg1NDIxOCArMDEwMAorLS0tIGdkYi03 LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvaW5mcnVuLmMJMjAxMi0wNS0yOCAyMjo0MzoyNi4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pbmZydW4uYwkyMDEyLTA2 LTAyIDE4OjIzOjU5LjMzOTI3ODI2OCArMDIwMAogQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGlu dCBmb2xsb3dfZm9yayAodm9pZCk7CiAgc3RhdGljIHZvaWQgc2V0X3NjaGVkbG9ja19mdW5jIChj aGFyICphcmdzLCBpbnQgZnJvbV90dHksCiAgCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj KTsKQEAgLTU1LDcgKzU1LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1 bi5jCiAgCiAgc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGluZ19jYWxsYmFj ayAoc3RydWN0IHRocmVhZF9pbmZvICp0cCwKICAJCQkJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0x NjY4LDcgKzE2NjgsOCBAQCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKQorQEAg LTE2ODcsNyArMTY4Nyw4IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApCiAg ICAgIH0KICAgIGVsc2UgaWYgKChzY2hlZHVsZXJfbW9kZSA9PSBzY2hlZGxvY2tfb24pCiAgCSAg IHx8IChzY2hlZHVsZXJfbW9kZSA9PSBzY2hlZGxvY2tfc3RlcApAQCAtNjUsMTYgKzY1LDE2IEBA IEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9pbmZydW4uYwogICAgICB7CiAgICAgICAg LyogVXNlci1zZXR0YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJl c3VtZS4gICovCiAgICAgICAgcmVzdW1lX3B0aWQgPSBpbmZlcmlvcl9wdGlkOwotQEAgLTE2ODYs NyArMTY4Nyw3IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApCitAQCAtMTcw NSw3ICsxNzA2LDcgQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChpbnQgc3RlcCkKICAgICBT VEVQIG5vbnplcm8gaWYgd2Ugc2hvdWxkIHN0ZXAgKHplcm8gdG8gY29udGludWUgaW5zdGVhZCku CiAgICAgU0lHIGlzIHRoZSBzaWduYWwgdG8gZ2l2ZSB0aGUgaW5mZXJpb3IgKHplcm8gZm9yIG5v bmUpLiAgKi8KICB2b2lkCi0tcmVzdW1lIChpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNp ZykKLStyZXN1bWUgKGVudW0gcmVzdW1lX3N0ZXAgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNp ZykKKy1yZXN1bWUgKGludCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQorK3Jlc3VtZSAoZW51 bSByZXN1bWVfc3RlcCBzdGVwLCBlbnVtIGdkYl9zaWduYWwgc2lnKQogIHsKICAgIGludCBzaG91 bGRfcmVzdW1lID0gMTsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMgPSBtYWtlX2Ns ZWFudXAgKHJlc3VtZV9jbGVhbnVwcywgMCk7Ci1AQCAtMTcxOSw5ICsxNzIwLDEzIEBAIHJlc3Vt ZSAoaW50IHN0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcKK0BAIC0xNzM4LDkgKzE3MzksMTMg QEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykKICAKICAgIGlmIChkZWJ1 Z19pbmZydW4pCiAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKQEAgLTkwLDcg KzkwLDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1bi5jCiAgCQkJdGFy Z2V0X3BpZF90b19zdHIgKGluZmVyaW9yX3B0aWQpLAogIAkJCXBhZGRyZXNzIChnZGJhcmNoLCBw YykpOwogIAotQEAgLTIwOTQsNyArMjA5OSw3IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBl bnVtIHRhcmdldF9zaWcKK0BAIC0yMTE3LDcgKzIxMjIsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIg YWRkciwgZW51bSBnZGJfc2lnbmFsCiAgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOwogICAgQ09S RV9BRERSIHBjOwogICAgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZTsKQEAgLTk5LDcgKzk5 LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBJ ZiB3ZSdyZSBzdG9wcGVkIGF0IGEgZm9yay92Zm9yaywgZm9sbG93IHRoZSBicmFuY2ggc2V0IGJ5 IHRoZQogICAgICAgInNldCBmb2xsb3ctZm9yay1tb2RlIiBjb21tYW5kOyBvdGhlcndpc2UsIHdl J2xsIGp1c3QgcHJvY2VlZAotQEAgLTIxMzQsMTMgKzIxMzksMTMgQEAgcHJvY2VlZCAoQ09SRV9B RERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIxNTcsMTMgKzIxNjIsMTMgQEAgcHJvY2Vl ZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gZ2RiX3NpZ25hbAogIAkgICBhY3R1YWxseSBiZSBleGVj dXRpbmcgdGhlIGJyZWFrcG9pbnQgaW5zbiBhbnl3YXkuCiAgCSAgIFdlJ2xsIGJlICh1bi0pZXhl Y3V0aW5nIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbi4gICovCiAgCkBAIC0xMTUsNyArMTE1LDcg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2luZnJ1bi5jCiAgICAgIH0KICAgIGVs c2UKICAgICAgewotQEAgLTIxNzEsMTMgKzIxNzYsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFk ZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIxOTQsMTMgKzIxOTksMTMgQEAgcHJvY2VlZCAoQ09S RV9BRERSIGFkZHIsIGVudW0gZ2RiX3NpZ25hbAogIAkgaXMgcmVxdWlyZWQgaXQgcmV0dXJucyBU UlVFIGFuZCBzZXRzIHRoZSBjdXJyZW50IHRocmVhZCB0bwogIAkgdGhlIG9sZCB0aHJlYWQuICAq LwogICAgICAgIGlmIChwcmVwYXJlX3RvX3Byb2NlZWQgKHN0ZXApKQpAQCAtMTMxLDcgKzEzMSw3 IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9pbmZydW4uYwogICAgICB7CiAgICAg ICAgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCA9IDE7CiAgICAgICAgLyogSWYgZGlzcGxhY2Vk IHN0ZXBwaW5nIGlzIGVuYWJsZWQsIHdlIGNhbiBzdGVwIG92ZXIgdGhlCi1AQCAtMjI2NCw4ICsy MjY5LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0y Mjg3LDggKzIyOTIsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gZ2RiX3NpZ25h bAogICAgLyogUmVzZXQgdG8gbm9ybWFsIHN0YXRlLiAgKi8KICAgIGluaXRfaW5md2FpdF9zdGF0 ZSAoKTsKICAKQEAgLTE0Niw3ICsxNDYsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvaW5mcnVuLmMKICAKICAgIC8qIFdhaXQgZm9yIGl0IHRvIHN0b3AgKGlmIG5vdCBzdGFuZGFs b25lKQogICAgICAgYW5kIGluIGFueSBjYXNlIGRlY29kZSB3aHkgaXQgc3RvcHBlZCwgYW5kIGFj dCBhY2NvcmRpbmdseS4gICovCi1AQCAtNTIyMywxMyArNTIzMywxOCBAQCBwcm9jZXNzX2V2ZW50 X3N0b3BfdGVzdDoKK0BAIC01MjQ5LDEzICs1MjU5LDE4IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90 ZXN0OgogIAogIC8qIElzIHRocmVhZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNpbmdsZS1zdGVwcGlu Zz8gICovCiAgCkBAIC0xNzAsMTEgKzE3MCwxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvaW5mcnVuLmMKICB9CiAgCiAgLyogUmV0dXJucyB0cnVlIGlmIGFueSB0aHJlYWQgKmJ1 dCogdGhlIG9uZSBwYXNzZWQgaW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv bGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2Ri L2xpbnV4LW5hdC5jCTIwMTEtMTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMJMjAxMS0xMi0xOSAwMDowODo0MS44MjQ4 NTUzNTMgKzAxMDAKLUBAIC0zMDM2LDcgKzMwMzYsMTEgQEAgc3RhdGljIGludAorLS0tIGdkYi03 LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMi0wNS0yNCAxODo1MTozNC4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwky MDEyLTA2LTAyIDE4OjIzOjA3LjQwOTI5MzgwMCArMDIwMAorQEAgLTMwNTEsNyArMzA1MSwxMSBA QCBzdGF0aWMgaW50CiAgc2VsZWN0X3NpbmdsZXN0ZXBfbHdwX2NhbGxiYWNrIChzdHJ1Y3QgbHdw X2luZm8gKmxwLCB2b2lkICpkYXRhKQogIHsKICAgIGlmIChscC0+bGFzdF9yZXN1bWVfa2luZCA9 PSByZXN1bWVfc3RlcApAQCAtMTg3LDExICsxODcsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAx MTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAgICAgIHJldHVybiAxOwogICAgZWxzZQogICAgICByZXR1 cm4gMDsKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuaAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDExLTEyLTE4IDIzOjM1OjIz LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5o CTIwMTEtMTItMTggMjM6NDA6NTkuMjYyMzAwNDMxICswMTAwCi1AQCAtNzQsOCArNzQsOCBAQCBz dHJ1Y3QgbHdwX2luZm8KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2xpbnV4LW5h dC5oCTIwMTItMDMtMjEgMTQ6NDM6NTQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvbGludXgtbmF0LmgJMjAxMi0wNi0wMiAxODoyMzowNy40MTEyOTM3OTggKzAy MDAKK0BAIC03Myw4ICs3Myw4IEBAIHN0cnVjdCBsd3BfaW5mbwogICAgLyogSWYgbm9uLXplcm8s IGEgcGVuZGluZyB3YWl0IHN0YXR1cy4gICovCiAgICBpbnQgc3RhdHVzOwogIAoKZGlmZiAtLWdp dCBhL2dkYi02LjYtdGVzdHN1aXRlLXRpbWVvdXRzLnBhdGNoIGIvZ2RiLTYuNi10ZXN0c3VpdGUt dGltZW91dHMucGF0Y2gKaW5kZXggN2U2OTc0MC4uMDBmNWQ4NSAxMDA2NDQKLS0tIGEvZ2RiLTYu Ni10ZXN0c3VpdGUtdGltZW91dHMucGF0Y2gKKysrIGIvZ2RiLTYuNi10ZXN0c3VpdGUtdGltZW91 dHMucGF0Y2gKQEAgLTEsMjYgKzEsMjYgQEAKLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy40LjUwLjIwMTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4 cAkyMDExLTEyLTEzIDE4OjIyOjA4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAx MTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDExLTEyLTIwIDAwOjAx OjM2LjUxODg0NzAzMyArMDEwMAotQEAgLTUwLDYgKzUwLDggQEAgZ2RiX3N0YXJ0CistLS0gZ2Ri LTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAJ MjAxMi0wMy0xNiAxNzo0NzozMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5leHAJMjAxMi0wNi0wMiAxODoyNzo0 Ni42MjMyMTA3MTEgKzAyMDAKK0BAIC00NSw2ICs0NSw4IEBAIGdkYl9zdGFydAogIGdkYl9yZWlu aXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgogIGdkYl9sb2FkICR7YmluZmlsZX0KICAKICtn ZGJfdGVzdCAic2V0IGJyZWFrcG9pbnQgcGVuZGluZyBvZmYiICIiICJBdm9pZCBsb2NrdXAgb24g bm9uZXhpc3RpbmcgZnVuY3Rpb25zIgogKwotICMKLSAjIHRoZSBsaW5lIGF0IHdoaWNoIGJyZWFr IG1haW4gd2lsbCBwdXQgdGhlIGJyZWFrcG9pbnQKLSAjCi1JbmRleDogZ2RiLTcuNC41MC4yMDEx MTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuZXhwCisgIyBUaGUgY29tbWFuZHMg d2UgdGVzdCBoZXJlIHByb2R1Y2UgbWFueSBsaW5lcyBvZiBvdXRwdXQ7IGRpc2FibGUgInByZXNz IAorICMgPHJldHVybj4gdG8gY29udGludWUiIHByb21wdHMuCisgZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJzZXQgaGVpZ2h0IDAiCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2Fubm90YTMuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIx OS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5leHAJMjAxMS0xMi0xMyAxODoy MjowOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYW5ub3RhMy5leHAJMjAxMS0xMi0yMCAwMDowMTozNi41MTg4NDcwMzMgKzAx MDAKLUBAIC01MCw2ICs1MCw4IEBAIGdkYl9zdGFydAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuZXhwCTIwMTItMDItMjggMjM6NDA6 NDguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2Fubm90YTMuZXhwCTIwMTItMDYtMDIgMTg6Mjg6MDAuMzc1MjA2NDU3ICswMjAw CitAQCAtNDUsNiArNDUsOCBAQCBnZGJfc3RhcnQKICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3Jj ZGlyLyRzdWJkaXIKICBnZGJfbG9hZCAke2JpbmZpbGV9CiAgCiArZ2RiX3Rlc3QgInNldCBicmVh a3BvaW50IHBlbmRpbmcgb2ZmIiAiIiAiQXZvaWQgbG9ja3VwIG9uIG5vbmV4aXN0aW5nIGZ1bmN0 aW9ucyIKICsKLSAjCi0gIyB0aGUgbGluZSBhdCB3aGljaCBicmVhayBtYWluIHdpbGwgcHV0IHRo ZSBicmVha3BvaW50Ci0gIworICMgVGhlIGNvbW1hbmRzIHdlIHRlc3QgaGVyZSBwcm9kdWNlIG1h bnkgbGluZXMgb2Ygb3V0cHV0OyBkaXNhYmxlICJwcmVzcyAKKyAjIDxyZXR1cm4+IHRvIGNvbnRp bnVlIiBwcm9tcHRzLgorIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCAwIgoKZGlmZiAt LWdpdCBhL2dkYi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaCBiL2dk Yi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAppbmRleCAxNzUxMzRk Li40NGNjN2JhIDEwMDY0NAotLS0gYS9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0 b3BwZWQucGF0Y2gKKysrIGIvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVk LnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xp bnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIw MTAtMDEtMTUgMTE6NTM6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAxMjoxMzo1My4wMDAwMDAwMDAgKzAxMDAKLUBA IC0xNzUsNiArMTc1LDkgQEAgYmxvY2tlZC4gICovCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5v cmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2LTAyIDIwOjUxOjU4LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDYtMDIgMjA6NTQ6 MzAuMTI3NTI5MTU5ICswMjAwCitAQCAtMTgwLDYgKzE4MCw5IEBAIGJsb2NrZWQuICAqLwogIHN0 YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyAqbGludXhfb3BzOwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0 X29wcyBsaW51eF9vcHNfc2F2ZWQ7CiAgCkBAIC0xMiw3ICsxMiw3IEBAIEluZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwogIC8qIFRoZSBtZXRob2QgdG8gY2FsbCwgaWYg YW55LCB3aGVuIGEgbmV3IHRocmVhZCBpcyBhdHRhY2hlZC4gICovCiAgc3RhdGljIHZvaWQgKCps aW51eF9uYXRfbmV3X3RocmVhZCkgKHN0cnVjdCBsd3BfaW5mbyAqKTsKICAKLUBAIC05MzMsNyAr OTM2LDE0IEBAIEF0dGFjaGluZyBhZnRlciBwcm9jZXNzICVkIGZvcmsgdG8gY2hpbGQKK0BAIC05 MDksNyArOTEyLDE0IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGUK ICAJICBwYXJlbnRfaW5mLT53YWl0aW5nX2Zvcl92Zm9ya19kb25lID0gMDsKICAJfQogICAgICAg IGVsc2UgaWYgKGRldGFjaF9mb3JrKQpAQCAtMjgsNyArMjgsNyBAQCBJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKICAKICAgICAgICAvKiBOb3RlIHRoYXQgdGhlIGRl dGFjaCBhYm92ZSBtYWtlcyBQQVJFTlRfSU5GIGRhbmdsaW5nLiAgKi8KICAKLUBAIC0xNDI3LDYg KzE0MzcsNyBAQCBsaW51eF9uYXRfcG9zdF9hdHRhY2hfd2FpdCAocHRpZF90IHB0aWQsCitAQCAt MTM3Nyw2ICsxMzg3LDcgQEAgbGludXhfbmF0X3Bvc3RfYXR0YWNoX3dhaXQgKHB0aWRfdCBwdGlk LAogICAgICAgIGlmIChkZWJ1Z19saW51eF9uYXQpCiAgCWZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKICAJCQkgICAgIkxOUEFXOiBBdHRhY2hpbmcgdG8gYSBzdG9wcGVkIHByb2Nlc3Nc biIpOwpAQCAtMzYsOCArMzYsOCBAQCBJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGlu dXgtbmF0LmMKICAKICAgICAgICAvKiBUaGUgcHJvY2VzcyBpcyBkZWZpbml0ZWx5IHN0b3BwZWQu ICBJdCBpcyBpbiBhIGpvYiBjb250cm9sCiAgCSBzdG9wLCB1bmxlc3MgdGhlIGtlcm5lbCBwcmVk YXRlcyB0aGUgVEFTS19TVE9QUEVEIC8KLUBAIC0xNzU3LDYgKzE3NjgsOSBAQCBHUFQ6IGx3cCAl cyBoYWQgc2lnbmFsICVzLCBidXQgaXQgaXMgaW4gCi0gCQkJICAgIHRhcmdldF9zaWduYWxfdG9f c3RyaW5nIChzaWdubykpOworQEAgLTE4MDUsNiArMTgxNiw5IEBAIGdldF9wZW5kaW5nX3N0YXR1 cyAoc3RydWN0IGx3cF9pbmZvICpscCwKKyAJCQkgICAgZ2RiX3NpZ25hbF90b19zdHJpbmcgKHNp Z25vKSk7CiAgICAgIH0KICAKICsgIGlmICgqc3RhdHVzID09IDAgJiYgR0VUX1BJRCAobHAtPnB0 aWQpID09IHBpZF93YXNfc3RvcHBlZCkKQEAgLTQ2LDcgKzQ2LDcgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiAgICByZXR1cm4gMDsKICB9CiAgCi1AQCAtMTg2 Niw2ICsxODgwLDggQEAgbGludXhfbmF0X2RldGFjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcwor QEAgLTE5MTgsNiArMTkzMiw4IEBAIGxpbnV4X25hdF9kZXRhY2ggKHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMKICAgICAgfQogICAgZWxzZQogICAgICBsaW51eF9vcHMtPnRvX2RldGFjaCAob3BzLCBh cmdzLCBmcm9tX3R0eSk7CkBAIC01NSw3ICs1NSw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9saW51eC1uYXQuYwogIH0KICAKICAvKiBSZXN1bWUgTFAuICAqLwotQEAgLTIwMzEs NiArMjA0NywxNCBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCitA QCAtMjA4Myw2ICsyMDk5LDE0IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMKICAgICAgIHJlc3VtZV9jYWxsYmFjay4gICovCiAgICBscC0+c3RvcHBlZCA9IDA7CiAg CkBAIC03MCw3ICs3MCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1u YXQuYwogICAgaWYgKHJlc3VtZV9tYW55KQogICAgICBpdGVyYXRlX292ZXJfbHdwcyAocHRpZCwg cmVzdW1lX2NhbGxiYWNrLCBOVUxMKTsKICAKLUBAIC0zOTIzLDYgKzM5NDcsOCBAQCBsaW51eF9u YXRfbW91cm5faW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfCitAQCAtNDEzMiw2ICs0MTU2LDggQEAg bGludXhfbmF0X21vdXJuX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0XwogICAgICAgICB0aGVyZSBh cmUgb3RoZXIgdmlhYmxlIGZvcmtzIHRvIGRlYnVnLiAgRGVsZXRlIHRoZSBleGl0aW5nCiAgICAg ICAgIG9uZSBhbmQgY29udGV4dC1zd2l0Y2ggdG8gdGhlIGZpcnN0IGF2YWlsYWJsZS4gICovCiAg ICAgIGxpbnV4X2ZvcmtfbW91cm5faW5mZXJpb3IgKCk7CkBAIC03OSwxMSArNzksMTEgQEAgSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8qIENvbnZl cnQgYSBuYXRpdmUvaG9zdCBzaWdpbmZvIG9iamVjdCwgaW50by9mcm9tIHRoZSBzaWdpbmZvIGlu IHRoZQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy9hdHRhY2gtc3RvcHBlZC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0 b3BwZWQuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4 cAkyMDEwLTAxLTE1IDExOjU0OjU3LjAwMDAwMDAwMCArMDEwMAotQEAgLTYyLDcgKzYyLDY1IEBA IHByb2MgY29yZWZ1bmMgeyB0aHJlYWR0eXBlIH0geworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAkyMDEyLTAx LTA0IDA5OjI3OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAJMjAxMi0wNi0wMiAyMDo1 MjowOC44OTM1MDU0MDMgKzAyMDAKK0BAIC02Myw3ICs2Myw2NSBAQCBwcm9jIGNvcmVmdW5jIHsg dGhyZWFkdHlwZSB9IHsKICAgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly CiAgICAgIGdkYl9sb2FkICR7YmluZmlsZX0KICAKCmRpZmYgLS1naXQgYS9nZGItNi44LWJ6MjU0 MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoIGIvZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5m by5wYXRjaAppbmRleCBiNWViNTE0Li41MTA3MWY0IDEwMDY0NAotLS0gYS9nZGItNi44LWJ6MjU0 MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCisrKyBiL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJw c2luZm8ucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9i ZmQvZWxmLWJmZC5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9iZmQvZWxmLWJmZC5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2JmZC9lbGYtYmZkLmgJMjAx MS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzIw L2JmZC9lbGYtYmZkLmgJMjAxMS0wMy0yMCAxNToyNDowMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0y MTkzLDggKzIxOTMsMTAgQEAgZXh0ZXJuIEVsZl9JbnRlcm5hbF9QaGRyICogX2JmZF9lbGZfZmlu ZAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9iZmQvZWxmLWJmZC5oCTIwMTItMDYtMDIg MjE6MjY6MDkuOTI4NzE3MDY5ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9iZmQvZWxm LWJmZC5oCTIwMTItMDYtMDIgMjE6Mjc6MjEuNzI3Njg5NjI1ICswMjAwCitAQCAtMjIyMSw4ICsy MjIxLDEwIEBAIGV4dGVybiBFbGZfSW50ZXJuYWxfUGhkciAqIF9iZmRfZWxmX2ZpbmQKICAvKiBF eHBvcnRlZCBpbnRlcmZhY2UgZm9yIHdyaXRpbmcgZWxmIGNvcmVmaWxlIG5vdGVzLiAqLwogIGV4 dGVybiBjaGFyICplbGZjb3JlX3dyaXRlX25vdGUKICAgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwg Y29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IHZvaWQgKiwgaW50KTsKQEAgLTE0LDE3ICsxNCwxMSBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9iZmQvZWxmLWJmZC5oCiAgZXh0ZXJuIGNoYXIg KmVsZmNvcmVfd3JpdGVfcHJzdGF0dXMKICAgIChiZmQgKiwgY2hhciAqLCBpbnQgKiwgbG9uZywg aW50LCBjb25zdCB2b2lkICopOwogIGV4dGVybiBjaGFyICogZWxmY29yZV93cml0ZV9wc3RhdHVz Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9iZmQvZWxmLmMKK0luZGV4OiBnZGItNy40LjUw LjIwMTIwNjAyL2JmZC9lbGYuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAu b3JpZy9iZmQvZWxmLmMJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwkyMDExLTAzLTIwIDE1OjI0OjAyLjAwMDAwMDAw MCArMDEwMAotQEAgLTg4MTQsMTMgKzg4MTQsMTIgQEAgZWxmY29yZV93cml0ZV9ub3RlIChiZmQg KmFiZmQsCi0gICByZXR1cm4gYnVmOwotIH0KLSAKLS0jaWYgZGVmaW5lZCAoSEFWRV9QUlBTSU5G T19UKSB8fCBkZWZpbmVkIChIQVZFX1BTSU5GT19UKQotKyNpZiBkZWZpbmVkIChIQVZFX1BSUFNJ TkZPX1QpCi0gY2hhciAqCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2JmZC9lbGYuYwky MDEyLTA2LTAyIDIxOjI2OjA5LjkyODcxNzA2OSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2 MDIvYmZkL2VsZi5jCTIwMTItMDYtMDIgMjE6Mjc6MjEuNzMyNjg5NjIzICswMjAwCitAQCAtODkx Nyw1NiArODkxNyw2MSBAQCBjaGFyICoKICBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChiZmQgICph YmZkLAogIAkJCWNoYXIgKmJ1ZiwKICAJCQlpbnQgICpidWZzaXosCkBAIC0zMiw5ICsyNiw4IEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwogLQkJCWNvbnN0IGNoYXIgKnBz YXJncykKICsJCQljb25zdCBwcnBzaW5mb190ICppbnB1dCkKICB7Ci0gICBjb25zdCBjaGFyICpu b3RlX25hbWUgPSAiQ09SRSI7CiAgICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVk ID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKGFiZmQpOwotQEAgLTg4MjgsNDggKzg4MjcsNTUgQEAg ZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKKyAKICAgIGlmIChiZWQtPmVsZl9i YWNrZW5kX3dyaXRlX2NvcmVfbm90ZSAhPSBOVUxMKQogICAgICB7CiAgICAgICAgY2hhciAqcmV0 OwpAQCAtNTIsNyArNDUsOSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9iZmQvZWxmLmMK ICAJcmV0dXJuIHJldDsKICAgICAgfQogIAorLSNpZiBkZWZpbmVkIChIQVZFX1BSUFNJTkZPX1Qp IHx8IGRlZmluZWQgKEhBVkVfUFNJTkZPX1QpCiAtI2lmIGRlZmluZWQgKEhBVkVfUFJQU0lORk8z Ml9UKSB8fCBkZWZpbmVkIChIQVZFX1BTSU5GTzMyX1QpCisrI2lmIGRlZmluZWQgKEhBVkVfUFJQ U0lORk9fVCkKICsjaWYgZGVmaW5lZCAoSEFWRV9QUlBTSU5GTzMyX1QpCiAgICBpZiAoYmVkLT5z LT5lbGZjbGFzcyA9PSBFTEZDTEFTUzMyKQogICAgICB7CkBAIC02NCw3ICs1OSw3IEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwogICAgICAgIGludCBub3RlX3R5cGUgPSBO VF9QUlBTSU5GTzsKIC0jZW5kaWYKICAKLSAgICAgICBtZW1zZXQgKCZkYXRhLCAwLCBzaXplb2Yg KGRhdGEpKTsKKy0gICAgICBtZW1zZXQgKCZkYXRhLCAwLCBzaXplb2YgKGRhdGEpKTsKIC0gICAg ICBzdHJuY3B5IChkYXRhLnByX2ZuYW1lLCBmbmFtZSwgc2l6ZW9mIChkYXRhLnByX2ZuYW1lKSk7 CiAtICAgICAgc3RybmNweSAoZGF0YS5wcl9wc2FyZ3MsIHBzYXJncywgc2l6ZW9mIChkYXRhLnBy X3BzYXJncykpOwogKyAgICAgIGRhdGEucHJfc3RhdGUgPSBpbnB1dC0+cHJfc3RhdGU7CkBAIC04 Myw3ICs3OCw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwogKyAgICAg IEJGRF9BU1NFUlQgKHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpID09IHNpemVvZiAoaW5wdXQtPnBy X3BzYXJncykpOwogKyAgICAgIG1lbWNweSAoZGF0YS5wcl9wc2FyZ3MsIGlucHV0LT5wcl9wc2Fy Z3MsIHNpemVvZiAoZGF0YS5wcl9wc2FyZ3MpKTsKICAgICAgICByZXR1cm4gZWxmY29yZV93cml0 ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwKLSAJCQkJIG5vdGVfbmFtZSwgbm90ZV90eXBlLCAm ZGF0YSwgc2l6ZW9mIChkYXRhKSk7CisgCQkJCSAiQ09SRSIsIG5vdGVfdHlwZSwgJmRhdGEsIHNp emVvZiAoZGF0YSkpOwogICAgICB9CiAgICBlbHNlCiAgI2VuZGlmCkBAIC0xMDAsMjEgKzk1LDQw IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYuYwogLSAgICAgIHN0cm5jcHkg KGRhdGEucHJfZm5hbWUsIGZuYW1lLCBzaXplb2YgKGRhdGEucHJfZm5hbWUpKTsKIC0gICAgICBz dHJuY3B5IChkYXRhLnByX3BzYXJncywgcHNhcmdzLCBzaXplb2YgKGRhdGEucHJfcHNhcmdzKSk7 CiAgICAgICAgcmV0dXJuIGVsZmNvcmVfd3JpdGVfbm90ZSAoYWJmZCwgYnVmLCBidWZzaXosCi0t CQkJCSBub3RlX25hbWUsIG5vdGVfdHlwZSwgJmRhdGEsIHNpemVvZiAoZGF0YSkpOwotKwkJCQkg bm90ZV9uYW1lLCBub3RlX3R5cGUsIGlucHV0LCBzaXplb2YgKCppbnB1dCkpOworLQkJCQkgIkNP UkUiLCBub3RlX3R5cGUsICZkYXRhLCBzaXplb2YgKGRhdGEpKTsKKysJCQkJICJDT1JFIiwgbm90 ZV90eXBlLCBpbnB1dCwgc2l6ZW9mICgqaW5wdXQpKTsKICAgICAgfQotIH0KIC0jZW5kaWYJLyog UFNJTkZPX1Qgb3IgUFJQU0lORk9fVCAqLwogKyNlbmRpZgkvKiBQUlBTSU5GT19UICovCiAgCi0g I2lmIGRlZmluZWQgKEhBVkVfUFJTVEFUVVNfVCkKLSBjaGFyICoKLUluZGV4OiBnZGItNy4yLjUw LjIwMTEwMzIwL2dkYi9saW51eC1uYXQuYworICAgZnJlZSAoYnVmKTsKKyAgIHJldHVybiBOVUxM OworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Byb2Nmcy5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9wcm9jZnMuYwkyMDEyLTA2LTAyIDIxOjI2 OjA5LjkyODcxNzA2OSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Byb2Nmcy5j CTIwMTItMDYtMDIgMjE6Mjc6MjEuNzQ1Njg5NjE4ICswMjAwCitAQCAtNTU0MSw2ICs1NTQxLDcg QEAgcHJvY2ZzX21ha2Vfbm90ZV9zZWN0aW9uIChiZmQgKm9iZmQsIGludAorICAgbm90ZV9kYXRh ID0gKGNoYXIgKikgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwKKyAJCQkJCSAgICAgICBu b3RlX2RhdGEsCisgCQkJCQkgICAgICAgbm90ZV9zaXplLAorKwkJCQkJICAgICAgIE5VTEwsCisg CQkJCQkgICAgICAgZm5hbWUsCisgCQkJCQkgICAgICAgcHNhcmdzKTsKKyAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9saW51eC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDMtMjAgMTU6MTc6NDYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvbGludXgtbmF0LmMJMjAx MS0wMy0yMCAxNToyNTozNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC00NjAzLDYgKzQ2MDMsMTMxIEBA IGxpbnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKLSAgIHJldHVybiBhcmdz Lm5vdGVfZGF0YTsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2xpbnV4LXRkZXAu YwkyMDEyLTA2LTAyIDIxOjI2OjA5LjkyODcxNzA2OSArMDIwMAorKysrIGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2xpbnV4LXRkZXAuYwkyMDEyLTA2LTAyIDIxOjMxOjEyLjA1MTYwMTUxMCArMDIw MAorQEAgLTMwLDYgKzMwLDcgQEAKKyAjaW5jbHVkZSAiZWxmLWJmZC5oIiAgICAgICAgICAgIC8q IGZvciBlbGZjb3JlX3dyaXRlXyogKi8KKyAjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKyAjaW5jbHVk ZSAiY2xpL2NsaS11dGlscy5oIgorKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+CisgCisgI2luY2x1 ZGUgPGN0eXBlLmg+CisgCitAQCAtNzY5LDYgKzc3MCwxMzEgQEAgbGludXhfY29yZWZpbGVfdGhy ZWFkX2NhbGxiYWNrIChzdHJ1Y3QgdAorICAgcmV0dXJuICFhcmdzLT5ub3RlX2RhdGE7CiAgfQog IAogKy8qIFNob3VsZCBiZSBhbHdheXMgdHJ1ZSBmb3IgTGludXggKi8KQEAgLTI0NSw0NSArMjU5 LDIyIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9saW51eC1uYXQuYwogIC8qIEZp bGxzIHRoZSAidG9fbWFrZV9jb3JlZmlsZV9ub3RlIiB0YXJnZXQgdmVjdG9yLiAgQnVpbGRzIHRo ZSBub3RlCiAgICAgc2VjdGlvbiBmb3IgYSBjb3JlZmlsZSwgYW5kIHJldHVybnMgaXQgaW4gYSBt YWxsb2MgYnVmZmVyLiAgKi8KICAKLUBAIC00NjIxLDI2ICs0NzQ2LDExIEBAIGxpbnV4X25hdF9t YWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKLSAKK0BAIC03ODQsMTYgKzkxMCw5IEBAIGxp bnV4X21ha2VfY29yZWZpbGVfbm90ZXMgKHN0cnVjdCBnZGJhcmMKKyAgIC8qIFByb2Nlc3MgaW5m b3JtYXRpb24uICAqLwogICAgaWYgKGdldF9leGVjX2ZpbGUgKDApKQogICAgICB7Ci0tICAgICAg c3RybmNweSAoZm5hbWUsIGxiYXNlbmFtZSAoZ2V0X2V4ZWNfZmlsZSAoMCkpLCBzaXplb2YgKGZu YW1lKSk7Ci0tICAgICAgc3RybmNweSAocHNhcmdzLCBnZXRfZXhlY19maWxlICgwKSwgc2l6ZW9m IChwc2FyZ3MpKTsKLS0gICAgICBpZiAoZ2V0X2luZmVyaW9yX2FyZ3MgKCkpCi0tCXsKLS0JICBj aGFyICpzdHJpbmdfZW5kOwotLQkgIGNoYXIgKnBzYXJnc19lbmQgPSBwc2FyZ3MgKyBzaXplb2Yg KHBzYXJncyk7Ci0tCi0tCSAgLyogbGludXhfZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoKSBoYW5k bGVzIHplcm8gdW50ZXJtaW5hdGVkCi0tCSAgICAgc3RyaW5ncyBmaW5lLiAgKi8KLS0JICBzdHJp bmdfZW5kID0gbWVtY2hyIChwc2FyZ3MsIDAsIHNpemVvZiAocHNhcmdzKSk7Ci0tCSAgaWYgKHN0 cmluZ19lbmQgIT0gTlVMTCkKLS0JICAgIHsKLS0JICAgICAgKnN0cmluZ19lbmQrKyA9ICcgJzsK LS0JICAgICAgc3RybmNweSAoc3RyaW5nX2VuZCwgZ2V0X2luZmVyaW9yX2FyZ3MgKCksCi0tCQkg ICAgICAgcHNhcmdzX2VuZCAtIHN0cmluZ19lbmQpOwotLQkgICAgfQotLQl9CistICAgICAgY29u c3QgY2hhciAqZm5hbWUgPSBsYmFzZW5hbWUgKGdldF9leGVjX2ZpbGUgKDApKTsKKy0gICAgICBj aGFyICpwc2FyZ3MgPSB4c3RyZHVwIChmbmFtZSk7CiArICAgICAgY29uc3QgcHJwc2luZm9fdCAq ZGF0YSA9IGZpbGxfcHJwc2luZm8gKCk7Ci0rCi0gICAgICAgbm90ZV9kYXRhID0gKGNoYXIgKikg ZWxmY29yZV93cml0ZV9wcnBzaW5mbyAob2JmZCwKLSAJCQkJCQkgICBub3RlX2RhdGEsCi0tCQkJ CQkJICAgbm90ZV9zaXplLCBmbmFtZSwgcHNhcmdzKTsKLSsJCQkJCQkgICBub3RlX3NpemUsIGRh dGEpOwotICAgICB9CiAgCi0gICAvKiBEdW1wIGluZm9ybWF0aW9uIGZvciB0aHJlYWRzLiAgKi8K LUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9wcm9jZnMuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvcHJvY2ZzLmMJMjAxMS0wMy0wOSAxMzo0ODo1 NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9wcm9jZnMuYwky MDExLTAzLTIwIDE1OjI0OjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTU3NTIsNiArNTc1Miw3IEBA IHByb2Nmc19tYWtlX25vdGVfc2VjdGlvbiAoYmZkICpvYmZkLCBpbnQKLSAgIG5vdGVfZGF0YSA9 IChjaGFyICopIGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKG9iZmQsCi0gCQkJCQkgICAgICAgbm90 ZV9kYXRhLAotIAkJCQkJICAgICAgIG5vdGVfc2l6ZSwKLSsJCQkJCSAgICAgICBOVUxMLAotIAkJ CQkJICAgICAgIGZuYW1lLAotIAkJCQkJICAgICAgIHBzYXJncyk7CistICAgICAgaWYgKGdldF9p bmZlcmlvcl9hcmdzICgpKQorLSAgICAgICAgcHNhcmdzID0gcmVjb25jYXQgKHBzYXJncywgcHNh cmdzLCAiICIsIGdldF9pbmZlcmlvcl9hcmdzICgpLAorLQkJCSAgIChjaGFyICopIE5VTEwpOwor LQorLSAgICAgIG5vdGVfZGF0YSA9IGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKG9iZmQsIG5vdGVf ZGF0YSwgbm90ZV9zaXplLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZuYW1lLCBwc2FyZ3MpOworLSAgICAgIHhmcmVlIChwc2FyZ3MpOworKyAgICAgIG5vdGVf ZGF0YSA9IGVsZmNvcmVfd3JpdGVfcHJwc2luZm8gKG9iZmQsIG5vdGVfZGF0YSwgbm90ZV9zaXpl LCBkYXRhKTsKICAKKyAgICAgICBpZiAoIW5vdGVfZGF0YSkKKyAJcmV0dXJuIE5VTEw7CgpkaWZm IC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2ggYi9nZGIt YXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAppbmRleCA4M2FhOGRhLi40MWI5 YjQ2IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRj aAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaApAQCAtMSw4 ICsxLDggQEAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9icmVha3BvaW50LmMKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9icmVha3BvaW50LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEyLTAxLTAzIDA1 OjUyOjE1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL2JyZWFr cG9pbnQuYwkyMDEyLTAxLTAzIDE1OjIyOjU2LjEwNTQwNTU1OSArMDEwMAotQEAgLTEzNzI0LDYg KzEzNzI0LDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCistLS0gZ2RiLTcu NC41MC4yMDEyMDYwMi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0wNi0wMiAxOToxMTo1NC4w MDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9icmVha3BvaW50LmMJ MjAxMi0wNi0wMiAxOTo1Mjo1OC4xNjEyMjY1MDYgKzAyMDAKK0BAIC0xNTQ5NSw2ICsxNTQ5NSw1 MCBAQCBpbml0aWFsaXplX2JyZWFrcG9pbnRfb3BzICh2b2lkKQogIH0KICAKICB2b2lkCkBAIC01 MywyMyArNTMsMjMgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL2JyZWFrcG9pbnQu YwogIF9pbml0aWFsaXplX2JyZWFrcG9pbnQgKHZvaWQpCiAgewogICAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmM7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvYnJlYWtwb2ludC5o CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYnJlYWtwb2ludC5oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMi0wMS0w MyAwNTo1MjoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9i cmVha3BvaW50LmgJMjAxMi0wMS0wMyAxNToyMzowOS40NDQzNTY0ODQgKzAxMDAKLUBAIC0xMzkz LDQgKzEzOTMsNyBAQCBleHRlcm4gc3RydWN0IGdkYmFyY2ggKmdldF9zYWxfYXJjaCAoc3RyCist LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMi0wNS0xNiAx NjozNTowMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9icmVh a3BvaW50LmgJMjAxMi0wNi0wMiAxOTo1MzowOS4yNjgyMjMyNjMgKzAyMDAKK0BAIC0xNTAzLDQg KzE1MDMsNyBAQCBleHRlcm4gc3RydWN0IGdkYmFyY2ggKmdldF9zYWxfYXJjaCAoc3RyCiAgCi0g ZXh0ZXJuIHZvaWQgbW9kaWZ5X3NlbWFwaG9yZSAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2NhdGlv biwgaW50IHNldCk7CisgZXh0ZXJuIHZvaWQgaGFuZGxlX3NvbGliX2V2ZW50ICh2b2lkKTsKICAK ICtleHRlcm4gdm9pZCBicmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwogICNlbmRpZiAv KiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMv Z2RiL29iamZpbGVzLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9vYmpmaWxlcy5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9vYmpmaWxlcy5j CTIwMTItMDEtMDMgMDU6NTI6MTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEwMy9nZGIvb2JqZmlsZXMuYwkyMDEyLTAxLTAzIDE1OjIzOjI4LjE0MTI4NzY5NyArMDEwMAot QEAgLTgxOCw2ICs4MTgsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpv YmpmaQorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEyLTA1 LTEwIDIxOjUwOjA4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L29iamZpbGVzLmMJMjAxMi0wNi0wMiAxOTo1Mjo1OC4yMDIyMjY1MDIgKzAyMDAKK0BAIC04MDIs NiArODAyLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKICAg ICAgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9yZWxvY2F0ZV9wcm9iZSAob2JqZmls ZSwKICAJCQkJCQkgICAgbmV3X29mZnNldHMsIGRlbHRhKTsKICAKCmRpZmYgLS1naXQgYS9nZGIt YXJjaGVyLXBpZS1hZGRvbnMucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKaW5k ZXggYjE4YTA2MC4uZjgxMTk2NCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBh dGNoCisrKyBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTExMjE4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAxOjMxOjI0LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwkyMDEx LTEyLTE5IDAxOjMzOjI1LjI2MzIzODk3MiArMDEwMAotQEAgLTgzNDcsNyArODM0NywxMiBAQCBy ZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCistLS0gZ2RiLTcuNC41MC4y MDEyMDYwMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0wNi0wMiAxOToxNDozOC4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0w Ni0wMiAxOTo1MToyOS45NzcyNTIzMzggKzAyMDAKK0BAIC05NzQ2LDcgKzk3NDYsMTIgQEAgcmVh ZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIHsKICAgIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHI7CiAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CkBAIC0xNiw3ICsxNiw3IEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKICAKICAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb2NhdGlvbiwgY3UpOwogICAgaWYgKGF0dHIpCi1AQCAt ODM1Niw2ICs4MzYxLDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGll LAorQEAgLTk3NTUsNiArOTc2MCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKICAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKICAgICAgICAg IHsKICAgICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAoYXR0ciksIGN1 KTsKQEAgLTI0LDcgKzI0LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJm MnJlYWQuYwogICAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9u X29mZnNldCAoYXR0cikpCiAgICAgICAgICB7Ci1AQCAtODQwOCwxMiArODQxNCwxNSBAQCByZWFk X2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtOTgwNywxMiArOTgxMywx NSBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgCSAgaWYgKHN5 bSAhPSBOVUxMCiAgCSAgICAgICYmIGhhbmRsZV9kYXRhX21lbWJlcl9sb2NhdGlvbiAoY2hpbGRf ZGllLCBjdSwgJm9mZnNldCkpCiAgCSAgICB7CkBAIC00Miw3ICs0Miw3IEBAIEluZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFkLmMKICAJICBlbHNlCiAgCSAgICBTRVRfRklF TERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSk7CiAgCSAgRklF TERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBFIChzeW0pOwotQEAgLTg0MjcsNyArODQzNiw3 IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC05ODI2LDcg Kzk4MzUsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgCiAg ICAgICAgc3ltID0gbmV3X3N5bWJvbCAoZGllLCB0eXBlLCBjdSk7CiAgICAgICAgLyogU1lNQk9M X1ZBTFVFX0FERFJFU1MgbmV2ZXIgZ2V0cyB1c2VkIGFzIGFsbCBpdHMgZmllbGRzIGFyZSBzdGF0 aWMuICAqLwpAQCAtNTEsMTkgKzUxLDE5IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9kd2FyZjJyZWFkLmMKICAKICAgICAgICBzZXRfZGllX3R5cGUgKGRpZSwgdHlwZSwgY3UpOwog ICAgICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZ2RidHlwZXMuaAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMS0xMi0xOCAyMzozNToyMy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9nZGJ0eXBlcy5oCTIw MTEtMTItMTkgMDE6MzQ6MjEuNDQ4MDI1NjIwICswMTAwCi1AQCAtMzk2LDYgKzM5Niw3IEBAIGVu dW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCi0gZW51bSBmaWVsZF9sb2Nfa2luZAorLS0tIGdk Yi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEyLTA2LTAyIDE5OjExOjU0 LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnR5cGVzLmgJ MjAxMi0wNi0wMiAxOTo1Mjo0NC45OTAyMzAyMDAgKzAyMDAKK0BAIC00MDEsNiArNDAxLDcgQEAg ZW51bSBmaWVsZF9sb2Nfa2luZAogICAgewogICAgICBGSUVMRF9MT0NfS0lORF9CSVRQT1MsCS8q IGJpdHBvcyAqLworICAgICBGSUVMRF9MT0NfS0lORF9FTlVNVkFMLAkvKiBlbnVtdmFsICovCiAr ICAgIC8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0aGUgb2JqZmlsZSdzIEFOT0ZG U0VULiAgKi8KICAgICAgRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCS8qIHBoeXNhZGRyICovCiAg ICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkvKiBwaHlzbmFtZSAqLwogICAgICBGSUVMRF9M T0NfS0lORF9EV0FSRl9CTE9DSwkvKiBkd2FyZl9ibG9jayAqLwotQEAgLTU4MSw2ICs1ODIsNyBA QCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNTk1LDYgKzU5Niw3IEBAIHN0cnVjdCBtYWluX3R5cGUK ICAJICAgaXMgdGhlIGxvY2F0aW9uIChpbiB0aGUgdGFyZ2V0KSBvZiB0aGUgc3RhdGljIGZpZWxk LgogIAkgICBPdGhlcndpc2UsIHBoeXNuYW1lIGlzIHRoZSBtYW5nbGVkIGxhYmVsIG9mIHRoZSBz dGF0aWMgZmllbGQuICAqLwogIApAQCAtNzEsMTUgKzcxLDE1IEBAIEluZGV4OiBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9nZGJ0eXBlcy5oCiAgCUNPUkVfQUREUiBwaHlzYWRkcjsKICAJY29uc3Qg Y2hhciAqcGh5c25hbWU7CiAgCi1AQCAtMTE5NCw2ICsxMTk2LDcgQEAgZXh0ZXJuIHZvaWQgYWxs b2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQotICNkZWZpbmUgRklFTERfTE9DX0tJTkQodGhpc2Zs ZCkgKCh0aGlzZmxkKS5sb2Nfa2luZCkKLSAjZGVmaW5lIEZJRUxEX0JJVFBPUyh0aGlzZmxkKSAo KHRoaXNmbGQpLmxvYy5iaXRwb3MpCitAQCAtMTIwMCw2ICsxMjAyLDcgQEAgZXh0ZXJuIHZvaWQg YWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorICNkZWZpbmUgRklFTERfRU5VTVZBTF9MVkFM KHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmVudW12YWwpCisgI2RlZmluZSBGSUVMRF9FTlVNVkFM KHRoaXNmbGQpIChGSUVMRF9FTlVNVkFMX0xWQUwgKHRoaXNmbGQpICsgMCkKICAjZGVmaW5lIEZJ RUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzbmFtZSkKICsv KiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4g ICovCiAgI2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc2ZsZCkgKCh0aGlzZmxkKS5s b2MucGh5c2FkZHIpCiAgI2RlZmluZSBGSUVMRF9EV0FSRl9CTE9DSyh0aGlzZmxkKSAoKHRoaXNm bGQpLmxvYy5kd2FyZl9ibG9jaykKICAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQT1ModGhpc2ZsZCwg Yml0cG9zKQkJCVwKLUBAIC0xMjAyLDYgKzEyMDUsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9n bmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTIxMSw2ICsxMjE0LDcgQEAgZXh0ZXJuIHZvaWQgYWxs b2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgU0VUX0ZJRUxEX1BIWVNOQU1FKHRo aXNmbGQsIG5hbWUpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xP Q19LSU5EX1BIWVNOQU1FLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodGhpc2ZsZCkg PSAobmFtZSkpCkBAIC04NywxOSArODcsMTkgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlTQUREUih0aGlzZmxkLCBhZGRy KQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlT QUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKHRoaXNmbGQpID0gKGFkZHIpKQot QEAgLTEyMTcsNiArMTIyMSw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUg KHN0cnUKLSAjZGVmaW5lIFRZUEVfRklFTERfTE9DX0tJTkQodGhpc3R5cGUsIG4pIEZJRUxEX0xP Q19LSU5EIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCitAQCAtMTIyNyw2ICsxMjMxLDcgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgVFlQRV9G SUVMRF9CSVRQT1ModGhpc3R5cGUsIG4pIEZJRUxEX0JJVFBPUyAoVFlQRV9GSUVMRCAodGhpc3R5 cGUsIG4pKQorICNkZWZpbmUgVFlQRV9GSUVMRF9FTlVNVkFMKHRoaXN0eXBlLCBuKSBGSUVMRF9F TlVNVkFMIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NU QVRJQ19QSFlTTkFNRSh0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNOQU1FIChUWVBFX0ZJ RUxEICh0aGlzdHlwZSwgbikpCiArLyogVGhpcyBhZGRyZXNzIGlzIHVucmVsb2NhdGVkIGJ5IHRo ZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNfUEhZ U0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAoVFlQRV9GSUVMRCAodGhp c3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9EV0FSRl9CTE9DSyh0aGlzdHlwZSwgbikg RklFTERfRFdBUkZfQkxPQ0sgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZ UEVfRklFTERfQVJUSUZJQ0lBTCh0aGlzdHlwZSwgbikgRklFTERfQVJUSUZJQ0lBTChUWVBFX0ZJ RUxEKHRoaXN0eXBlLG4pKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2p2LWxhbmcu YworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2p2LWxhbmcuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvanYtbGFuZy5jCTIwMTEtMTItMDYgMTk6 NTQ6MzkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvanYtbGFu Zy5jCTIwMTEtMTItMTkgMDE6MzM6MjUuMjgwMjM4OTA4ICswMTAwCi1AQCAtNDMwLDcgKzQzMCw4 IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy40 LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEyLTA1LTEwIDIxOjU5OjEyLjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2p2LWxhbmcuYwkyMDEyLTA2 LTAyIDE5OjUxOjUzLjI4NjI0NTI4MCArMDIwMAorQEAgLTQzMSw3ICs0MzEsOCBAQCBqYXZhX2xp bmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCiAgICBmaWVsZHMgPSBOVUxMOwog ICAgbmZpZWxkcy0tOwkJCS8qIEZpcnN0IHNldCB1cCBkdW1teSAiY2xhc3MiIGZpZWxkLiAgKi8K QEAgLTEwOSw3ICsxMDksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvanYtbGFu Zy5jCiAgICBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIG5maWVsZHMpID0gImNsYXNzIjsKICAgIFRZ UEVfRklFTERfVFlQRSAodHlwZSwgbmZpZWxkcykgPSB2YWx1ZV90eXBlIChjbGFzKTsKICAgIFNF VF9UWVBFX0ZJRUxEX1BSSVZBVEUgKHR5cGUsIG5maWVsZHMpOwotQEAgLTQ3OCw3ICs0NzksOCBA QCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtNDc5LDcgKzQ4 MCw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAJICBTRVRf VFlQRV9GSUVMRF9QUk9URUNURUQgKHR5cGUsIGkpOwogIAl9CiAgICAgICAgaWYgKGFjY2ZsYWdz ICYgMHgwMDA4KQkvKiBBQ0NfU1RBVElDICovCkBAIC0xMTcsMTMgKzExNywxMyBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvanYtbGFuZy5jCiArCVNFVF9GSUVMRF9QSFlTQUREUiAo VFlQRV9GSUVMRCAodHlwZSwgaSksIGJvZmZzZXQKICsJICAtIChUWVBFX09CSkZJTEUgKHR5cGUp ID09IE5VTEwgPyAwIDogQU5PRkZTRVQgKFRZUEVfT0JKRklMRSAodHlwZSktPnNlY3Rpb25fb2Zm c2V0cywgU0VDVF9PRkZfVEVYVCAoVFlQRV9PQkpGSUxFICh0eXBlKSkpKSk7CiAgICAgICAgZWxz ZQotIAlUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgPSA4ICogYm9mZnNldDsKKyAJU0VUX0ZJ RUxEX0JJVFBPUyAoVFlQRV9GSUVMRCAodHlwZSwgaSksIDggKiBib2Zmc2V0KTsKICAgICAgICBp ZiAoYWNjZmxhZ3MgJiAweDgwMDApCS8qIEZJRUxEX1VOUkVTT0xWRURfRkxBRyAqLwotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3ZhbHVlLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmln L2dkYi92YWx1ZS5jCTIwMTEtMTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvdmFsdWUuYwkyMDExLTEyLTE5IDAxOjMzOjI1LjI4MzIzODg5 NiArMDEwMAotQEAgLTI0ODEsNyArMjQ4MSw4IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0 IHR5cGUgKnR5cGUsIGkKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3ZhbHVlLmMJ MjAxMi0wNi0wMiAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi92YWx1ZS5jCTIwMTItMDYtMDIgMTk6NTE6MzAuMDMxMjUyMzE3ICswMjAwCitAQCAt MjU5Miw3ICsyNTkyLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwg aQogICAgICB7CiAgICAgIGNhc2UgRklFTERfTE9DX0tJTkRfUEhZU0FERFI6CiAgICAgICAgcmV0 dmFsID0gdmFsdWVfYXRfbGF6eSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVsZG5vKSwKCmRp ZmYgLS1naXQgYS9nZGItYXJjaGVyLXZsYS1yaGVsNWdjYy5wYXRjaCBiL2dkYi1hcmNoZXItdmxh LXJoZWw1Z2NjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjQ5NTdiLi4w MDAwMDAwCi0tLSBhL2dkYi1hcmNoZXItdmxhLXJoZWw1Z2NjLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMzQgKzAsMCBAQAotY29tbWl0IGE5OTlhZTJjNzIyYjM2NmI5NDk4Nzk0MWYwY2U4OTlm OTVlOGQ2NzkKLUF1dGhvcjogSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci1EYXRlOiAgIEZyaSBNYXIgMiAyMjowODo0OSAyMDEyICswMTAwCi0KLSAgICBGaXggY3Jh c2ggZm9yIGdkYi5mb3J0cmFuL2R5bmFtaWMuZXhwIHdpdGggZ2NjLWdmb3J0cmFuLTQuMS4yLTUx LmVsNS54ODZfNjQuCi0KLS0tLSBhL2dkYi92YWxvcHMuYwotKysrIGIvZ2RiL3ZhbG9wcy5jCi1A QCAtMTAzNyw3ICsxMDM3LDggQEAgaW50Ci0gdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVl ICp2YWwpCi0gewotICAgZ2RiX2Fzc2VydCAodmFsdWVfbGF6eSAodmFsKSk7Ci0tICBhbGxvY2F0 ZV92YWx1ZV9jb250ZW50cyAodmFsKTsKLSsgIGlmIChWQUxVRV9MVkFMICh2YWwpICE9IGx2YWxf bWVtb3J5KQotKyAgICBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cyAodmFsKTsKLSAgIGlmICh2YWx1 ZV9iaXRzaXplICh2YWwpKQotICAgICB7Ci0gICAgICAgLyogVG8gcmVhZCBhIGxhenkgYml0Zmll bGQsIHJlYWQgdGhlIGVudGlyZSBlbmNsb3NpbmcgdmFsdWUuICBUaGlzCi1AQCAtMTA4MCwxMSAr MTA4MSwxNSBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKLSAKLSAJICBp ZiAobGVuZ3RoKQotIAkgICAgewotKwkgICAgICAvKiBEZWxheSBpdCBhZnRlciBvYmplY3RfYWRk cmVzc19nZXRfZGF0YSBhYm92ZS4gICovCi0rCSAgICAgIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRz ICh2YWwpOwotIAkgICAgICBhZGRyICs9IHZhbHVlX29mZnNldCAodmFsKTsKLSAJICAgICAgcmVh ZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sgKHZhbCksCi0gCQkJCSBhZGRyLCB2 YWx1ZV9jb250ZW50c19hbGxfcmF3ICh2YWwpLCBsZW5ndGgpOwotIAkgICAgfQotIAl9Ci0rICAg ICAgLyogSnVzdCB0byBiZSBzdXJlIGl0IGhhcyBiZWVuIGNhbGxlZC4gICovCi0rICAgICAgYWxs b2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKFZBTFVFX0xW QUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKLSAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi1hcmNo ZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IDVlOWIxNjguLjZiNGU3OTkgMTAwNjQ0 Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiw0OSAr MiwxOCBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0 cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lU IHNuYXBzaG90OgotY29tbWl0IDlmOGQ0N2YwNTkwOTEzMzNkMTc4YmQyNDk1MDdmZDI1Njc2ODYw ZTcKK2NvbW1pdCBkMTAyMTMyMjAxOTE1ODk4MTQ3MTRkNzFlZjBmNWJhNjRmYmMzYjc1CiAKIGJy YW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5rcmF0b2No dmlsLXZsYQotYXJjaGVyLWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKIGFyY2hlci10cm9tZXkt cHl0aG9uCi1hcmNoZXItc2VyZ2lvZGotc3RhcAogCiAKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZp bGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IDM4YzkzYzkuLjNhY2FjZGIgMTAwNjQ0Citp bmRleCBiZjZiMGRhLi5mMGQ0NmRkIDEwMDY0NAogLS0tIGEvZ2RiL01ha2VmaWxlLmluCiArKysg Yi9nZGIvTWFrZWZpbGUuaW4KLUBAIC03MjAsOCArNzIwLDggQEAgU0ZJTEVTID0gYWRhLWV4cC55 IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5jIGFkYS12YWxwcmludC5jIGFkYS10YXNrcy5jIFwK LSAJc2VudGluZWwtZnJhbWUuYyBcCi0gCXNlcmlhbC5jIHNlci1iYXNlLmMgc2VyLXVuaXguYyBz a2lwLmMgXAotIAlzb2xpYi5jIHNvbGliLXRhcmdldC5jIHNvdXJjZS5jIFwKLS0Jc3RhYnNyZWFk LmMgc3RhY2suYyBzdGQtcmVncy5jIHN5bWZpbGUuYyBzeW1maWxlLW1lbS5jIHN5bW1pc2MuYyBc Ci0tCXN5bXRhYi5jIFwKLSsJc3RhYnNyZWFkLmMgc3RhY2suYyBzdGFwLXByb2JlLmMgc3RkLXJl Z3MuYyBcCi0rCXN5bWZpbGUuYyBzeW1maWxlLW1lbS5jIHN5bW1pc2MuYyBzeW10YWIuYyBcCi0g CXRhcmdldC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMgXAotIAl0aHJl YWQuYyB0b3AuYyB0cmFjZXBvaW50LmMgXAotIAl0cmFkLWZyYW1lLmMgXAotQEAgLTgxNyw3ICs4 MTcsNyBAQCBvc2RhdGEuaCBwcm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBweXRob24vcHktZXZl bnRzLmggcHl0aG9uL3B5LXN0b3BldmVudC5oIFwKLSBweXRob24vcHl0aG9uLWludGVybmFsLmgg cHl0aG9uL3B5dGhvbi5oIHJhdmVuc2Nhci10aHJlYWQuaCByZWNvcmQuaCBcCi0gc29saWItZGFy d2luLmggc29saWItaWE2NC1ocHV4Lmggc29saWItc3B1Lmggd2luZG93cy1uYXQuaCB4Y29mZnJl YWQuaCBcCi0gZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMu aCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0tZ251bGliL3N0ZGRlZi5pbi5oIGlubGlu ZS1mcmFtZS5oIHNraXAuaCBcCi0rZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFtZS5oIHNr aXAuaCBzdGFwLXByb2JlLmggXAotIGNvbW1vbi9jb21tb24tdXRpbHMuaCBjb21tb24veG1sLXV0 aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAotIGNvbW1vbi9saW51eC1vc2Rh dGEuaCBnZGItZGxmY24uaAotIAotQEAgLTkwNSw3ICs5MDUsNyBAQCBDT01NT05fT0JTID0gJChE RVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZT0JKKSBcCi0gCXhtbC1zdXBwb3J0Lm8geG1sLXN5 c2NhbGwubyB4bWwtdXRpbHMubyBcCi0gCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVt b3J5Lm8geG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCi0gCWluZmVyaW9yLm8gb3NkYXRhLm8g Z2RiX3VzbGVlcC5vIHJlY29yZC5vIGdjb3JlLm8gXAotLQlqaXQubyBwcm9nc3BhY2UubyBza2lw Lm8gXAotKwlqaXQubyBwcm9nc3BhY2UubyBza2lwLm8gc3RhcC1wcm9iZS5vIFwKLSAJY29tbW9u LXV0aWxzLm8gYnVmZmVyLm8gcHRpZC5vIGdkYi1kbGZjbi5vCi0gCi0gVFNPQlMgPSBpbmZsb3cu bwotQEAgLTEyOTMsNiArMTI5MywxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNv bmZpZy5zdGF0dXMKK0BAIC0xMzA0LDYgKzEzMDQsMTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2Nv bmZpZy5pbiBjb25maWcuc3RhdHVzCiAgCSAgQ09ORklHX0xJTktTPSBcCiAgCSAgJChTSEVMTCkg Y29uZmlnLnN0YXR1cwogIApAQCAtNTcsMjYgKzI2LDExIEBAIGluZGV4IDM4YzkzYzkuLjNhY2Fj ZGIgMTAwNjQ0CiAgY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUu dGd0IGNvbmZpZ3VyZS5ob3N0CiAgCSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCiAg Ci1kaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUwotaW5kZXggMTI4ODI1ZS4uMTNkZDg4 YyAxMDA2NDQKLS0tLSBhL2dkYi9ORVdTCi0rKysgYi9nZGIvTkVXUwotQEAgLTMyOCw2ICszMjgs MTAgQEAgUmVuZXNhcyBSTDc4CQkJCXJsNzgtKi1lbGYKLSAgIEluaXRpYWwgc3VwcG9ydCBmb3Ig dGhlIE9wZW5DTCBDIGxhbmd1YWdlIChodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5jbCkKLSAg IGhhcyBiZWVuIGludGVncmF0ZWQgaW50byBHREIuCi0gCi0rKiBHREIgbm93IGhhcyBzdXBwb3J0 IGZvciBTeXN0ZW1UYXAgPHN5cy9zZHQuaD4gcHJvYmVzLiAgWW91IGNhbiBzZXQgYQotKyAgYnJl YWtwb2ludCB1c2luZyB0aGUgbmV3ICJwcm9iZToiIGxpbmVzcGVjIGFuZCBpbnNwZWN0IHRoZSBw cm9iZQotKyAgYXJndW1lbnRzIHVzaW5nIHRoZSBuZXcgJF9wcm9iZV9hcmcgZmFtaWx5IG9mIGNv bnZlbmllbmNlIHZhcmlhYmxlcy4KLSsKLSAqIFB5dGhvbiBzY3JpcHRpbmcKLSAKLSAgICoqIFRo ZSBmdW5jdGlvbiBnZGIuV3JpdGUgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwga2V5d29yZCAnc3Ry ZWFtJy4KIGRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dkYi9hZGEtbGFuZy5jCi1pbmRl eCAyOTk1NmQ3Li5kYzFmYWRkIDEwMDY0NAoraW5kZXggYWYwZmRiNS4uMDJjNmU2ZiAxMDA2NDQK IC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysgYi9nZGIvYWRhLWxhbmcuYwotQEAgLTExODk2LDYg KzExODk2LDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKK0BAIC0xMjA1NSw2ICsxMjA1NSw3IEBAIGFkYV9v cGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50 ICpvcGxlbnAsCiAgCiAgc3RhdGljIGludAogIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTg0LDcgKzM4LDcgQEAgaW5kZXggMjk5NTZkNy4u ZGMxZmFkZCAxMDA2NDQKICAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCiAgCQkgICAgdm9pZCAqZGF0YSkKICB7Ci1AQCAtMTE5 MTAsMTIgKzExOTExLDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgaW50IHBvcywKK0BAIC0xMjA2OSwxMiArMTIwNzAsMTUgQEAgYWRhX29wZXJhdG9yX2No ZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAlicmVhazsKICAKICAgICAg ICBkZWZhdWx0OgpAQCAtMTAyLDMxMyArNTYsMTMgQEAgaW5kZXggMjk5NTZkNy4uZGMxZmFkZCAx MDA2NDQKICAgICAgICAmJiAoKm9iamZpbGVfZnVuYykgKFRZUEVfT0JKRklMRSAodHlwZSksIGRh dGEpKQogICAgICByZXR1cm4gMTsKICAKLWRpZmYgLS1naXQgYS9nZGIvYW1kNjQtbGludXgtbmF0 LmMgYi9nZGIvYW1kNjQtbGludXgtbmF0LmMKLWluZGV4IGEwYmRiZDcuLjk4NzYwYmYgMTAwNjQ0 Ci0tLS0gYS9nZGIvYW1kNjQtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9hbWQ2NC1saW51eC1uYXQu YwotQEAgLTMzNiw4ICszMzYsOCBAQCBhbWQ2NF9saW51eF9kcl9nZXRfc3RhdHVzICh2b2lkKQot ICAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsK LSB9Ci0gCi0tLyogQ2FsbGJhY2sgZm9yIGl0ZXJhdGVfb3Zlcl9sd3BzLiAgVXBkYXRlIHRoZSBk ZWJ1ZyByZWdpc3RlcnMgb2YKLS0gICBMV1AuICAqLwotKy8qIENhbGxiYWNrIGZvciBsaW51eF9u YXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMuICBVcGRhdGUgdGhlIGRlYnVnIHJlZ2lzdGVycwot KyAgIG9mIExXUC4gICovCi0gCi0gc3RhdGljIGludAotIHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNf Y2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHdwLCB2b2lkICphcmcpCi1AQCAtMzYzLDkgKzM2 Myw3IEBAIHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAq bHdwLCB2b2lkICphcmcpCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF9kcl9zZXRfY29udHJv bCAodW5zaWduZWQgbG9uZyBjb250cm9sKQotIHsKLS0gIHB0aWRfdCBwaWRfcHRpZCA9IHBpZF90 b19wdGlkIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKLS0KLS0gIGl0ZXJhdGVfb3Zl cl9sd3BzIChwaWRfcHRpZCwgdXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxsYmFjaywgTlVMTCk7 Ci0rICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHVwZGF0ZV9kZWJ1Z19yZWdp c3RlcnNfY2FsbGJhY2ssIE5VTEwpOwotIH0KLSAKLSAvKiBTZXQgYWRkcmVzcyBSRUdOVU0gKHpl cm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgdGhlIGN1cnJlbnQKLUBAIC0zNzgsNyAr Mzc2LDcgQEAgYW1kNjRfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBh ZGRyKQotIAotICAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERSX0xBU1RB RERSIC0gRFJfRklSU1RBRERSKTsKLSAKLS0gIGl0ZXJhdGVfb3Zlcl9sd3BzIChwaWRfcHRpZCwg dXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxsYmFjaywgTlVMTCk7Ci0rICBsaW51eF9uYXRfaXRl cmF0ZV93YXRjaHBvaW50X2x3cHMgKHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5V TEwpOwotIH0KLSAKLSAvKiBDYWxsZWQgd2hlbiByZXN1bWluZyBhIHRocmVhZC4KLUBAIC00MDAs NiArMzk4LDEzIEBAIGFtZDY0X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChzdHJ1Y3QgbHdwX2lu Zm8gKmx3cCkKLSAgICAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4 Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci0gICAgICAgaW50IGk7Ci0gCi0rICAgICAgLyogT24gTGlu dXgga2VybmVsIGJlZm9yZSAyLjYuMzMgY29tbWl0Ci0rCSA3MmY2NzRkMjAzY2QyMzA0MjY0Mzdj ZGNmN2RkNmY2ODFkYWQ4YjBkCi0rCSBpZiB5b3UgZW5hYmxlIGEgYnJlYWtwb2ludCBieSB0aGUg RFJfQ09OVFJPTCBiaXRzIHlvdSBuZWVkIHRvIGhhdmUKLSsJIGFscmVhZHkgd3JpdHRlbiB0aGUg Y29ycmVzcG9uZGluZyBEUl9GSVJTVEFERFIuLi5EUl9MQVNUQUREUiByZWdpc3RlcnMuCi0rCi0r CSBFbnN1cmUgRFJfQ09OVFJPTCBnZXRzIHdyaXR0ZW4gYXMgdGhlIHZlcnkgbGFzdCByZWdpc3Rl ciBoZXJlLiAgKi8KLSsKLSAgICAgICBmb3IgKGkgPSBEUl9GSVJTVEFERFI7IGkgPD0gRFJfTEFT VEFERFI7IGkrKykKLSAJaWYgKHN0YXRlLT5kcl9yZWZfY291bnRbaV0gPiAwKQotIAkgIHsKLWRp ZmYgLS1naXQgYS9nZGIvYW1kNjQtbGludXgtdGRlcC5jIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAu YwotaW5kZXggY2E5YWRlNi4uYzMwMTg1ZCAxMDA2NDQKLS0tLSBhL2dkYi9hbWQ2NC1saW51eC10 ZGVwLmMKLSsrKyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMKLUBAIC0xMzYyLDYgKzEzNjIsMTUg QEAgYW1kNjRfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gpCi0gICBzZXRfZ2RiYXJjaF9wcm9jZXNzX3JlY29yZCAoZ2RiYXJj aCwgaTM4Nl9wcm9jZXNzX3JlY29yZCk7Ci0gICBzZXRfZ2RiYXJjaF9wcm9jZXNzX3JlY29yZF9z aWduYWwgKGdkYmFyY2gsIGFtZDY0X2xpbnV4X3JlY29yZF9zaWduYWwpOwotIAotKyAgLyogU3lz dGVtVGFwIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLiAgKi8KLSsgIHNldF9nZGJhcmNoX3N0YXBf aW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICIkIik7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lz dGVyX3ByZWZpeCAoZ2RiYXJjaCwgIiUiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJf aW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoLCAiKCIpOwotKyAgc2V0X2dkYmFyY2hfc3RhcF9y ZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCwgIikiKTsKLSsgIHNldF9nZGJhcmNo X3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKGdkYmFyY2gsIGkzODZfc3RhcF9pc19zaW5nbGVfb3Bl cmFuZCk7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4gKGdkYmFyY2gs Ci0rCQkJCQlpMzg2X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbik7Ci0rCi0gICAvKiBJbml0aWFs aXplIHRoZSBhbWQ2NF9saW51eF9yZWNvcmRfdGRlcC4gICovCi0gICAvKiBUaGVzZSB2YWx1ZXMg YXJlIHRoZSBzaXplIG9mIHRoZSB0eXBlIHRoYXQgd2lsbCBiZSB1c2VkIGluIGEgc3lzdGVtCi0g ICAgICBjYWxsLiAgVGhleSBhcmUgb2J0YWluZWQgZnJvbSBMaW51eCBLZXJuZWwgc291cmNlLiAg Ki8KLWRpZmYgLS1naXQgYS9nZGIvYXJtLWxpbnV4LXRkZXAuYyBiL2dkYi9hcm0tbGludXgtdGRl cC5jCi1pbmRleCBhYzQ4NjBjLi5kNzEwNjgyIDEwMDY0NAotLS0tIGEvZ2RiL2FybS1saW51eC10 ZGVwLmMKLSsrKyBiL2dkYi9hcm0tbGludXgtdGRlcC5jCi1AQCAtNDMsNiArNDMsMTIgQEAKLSAj aW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgInN5bWZpbGUuaCIKLSAKLSsjaW5jbHVk ZSAiY2xpL2NsaS11dGlscy5oIgotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0rI2luY2x1ZGUg InBhcnNlci1kZWZzLmgiCi0rI2luY2x1ZGUgInVzZXItcmVncy5oIgotKyNpbmNsdWRlIDxjdHlw ZS5oPgotKwotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi0gCi0gLyogVGhpcyBpcyBkZWZpbmVk IGluIDxlbGYuaD4gb24gQVJNIEdOVS9MaW51eCBzeXN0ZW1zLiAgKi8KLUBAIC0xMDUzLDYgKzEw NTksMTIyIEBAIGFybV9saW51eF9kaXNwbGFjZWRfc3RlcF9jb3B5X2luc24gKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAotICAgcmV0dXJuIGRzYzsKLSB9Ci0gCi0rc3RhdGljIGludAotK2FybV9z dGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hh ciAqcykKLSt7Ci0rICByZXR1cm4gKCpzID09ICcjJyAvKiBMaXRlcmFsIG51bWJlci4gICovCi0r CSAgfHwgKnMgPT0gJ1snIC8qIFJlZ2lzdGVyIGluZGlyZWN0aW9uIG9yCi0rCQkJICBkaXNwbGFj ZW1lbnQuICAqLwotKwkgIHx8IGlzYWxwaGEgKCpzKSk7IC8qIFJlZ2lzdGVyIHZhbHVlLiAgKi8K LSt9Ci0rCi0rLyogVGhpcyByb3V0aW5lIGlzIHVzZWQgdG8gcGFyc2UgYSBzcGVjaWFsIHRva2Vu IGluIEFSTSdzIGFzc2VtYmx5LgotKwotKyAgIFRoZSBzcGVjaWFsIHRva2VucyBwYXJzZWQgYnkg aXQgYXJlOgotKwotKyAgICAgIC0gUmVnaXN0ZXIgZGlzcGxhY2VtZW50IChlLmcsIFtmcCwgIy04 XSkKLSsKLSsgICBJdCByZXR1cm5zIG9uZSBpZiB0aGUgc3BlY2lhbCB0b2tlbiBoYXMgYmVlbiBw YXJzZWQgc3VjY2Vzc2Z1bGx5LAotKyAgIG9yIHplcm8gaWYgdGhlIGN1cnJlbnQgdG9rZW4gaXMg bm90IGNvbnNpZGVyZWQgc3BlY2lhbC4gICovCi0rCi0rc3RhdGljIGludAotK2FybV9zdGFwX3Bh cnNlX3NwZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJCSAgICAgIHN0 cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCi0rewotKyAgaWYgKCpwLT5hcmcgPT0gJ1snKQotKyAg ICB7Ci0rICAgICAgLyogVGVtcG9yYXJ5IGhvbGRlciBmb3IgbG9va2FoZWFkLiAgKi8KLSsgICAg ICBjb25zdCBjaGFyICp0bXAgPSBwLT5hcmc7Ci0rICAgICAgLyogVXNlZCB0byBzYXZlIHRoZSBy ZWdpc3RlciBuYW1lLiAgKi8KLSsgICAgICBjb25zdCBjaGFyICpzdGFydDsKLSsgICAgICBjaGFy ICpyZWduYW1lOwotKyAgICAgIGludCBsZW4sIG9mZnNldDsKLSsgICAgICBpbnQgZ290X21pbnVz ID0gMDsKLSsgICAgICBsb25nIGRpc3BsYWNlbWVudDsKLSsgICAgICBzdHJ1Y3Qgc3Rva2VuIHN0 cjsKLSsKLSsgICAgICArK3RtcDsKLSsgICAgICBzdGFydCA9IHRtcDsKLSsKLSsgICAgICAvKiBS ZWdpc3RlciBuYW1lLiAgKi8KLSsgICAgICB3aGlsZSAoaXNhbG51bSAoKnRtcCkpCi0rCSsrdG1w OwotKwotKyAgICAgIGlmICgqdG1wICE9ICcsJykKLSsJcmV0dXJuIDA7Ci0rCi0rICAgICAgbGVu ID0gdG1wIC0gc3RhcnQ7Ci0rICAgICAgcmVnbmFtZSA9IGFsbG9jYSAobGVuICsgMik7Ci0rCi0r ICAgICAgb2Zmc2V0ID0gMDsKLSsgICAgICBpZiAoaXNkaWdpdCAoKnN0YXJ0KSkKLSsJewotKwkg IC8qIElmIHdlIGFyZSBkZWFsaW5nIHdpdGggYSByZWdpc3RlciB3aG9zZSBuYW1lIGJlZ2lucyB3 aXRoIGEKLSsJICAgICBkaWdpdCwgaXQgbWVhbnMgd2Ugc2hvdWxkIHByZWZpeCB0aGUgbmFtZSB3 aXRoIHRoZSBsZXR0ZXIKLSsJICAgICBgcicsIGJlY2F1c2UgR0RCIGV4cGVjdHMgdGhpcyBuYW1l IHBhdHRlcm4uICBPdGhlcndpc2UgKGUuZy4sCi0rCSAgICAgd2UgYXJlIGRlYWxpbmcgd2l0aCB0 aGUgcmVnaXN0ZXIgYGZwJyksIHdlIGRvbid0IG5lZWQgdG8KLSsJICAgICBhZGQgc3VjaCBhIHBy ZWZpeC4gICovCi0rCSAgcmVnbmFtZVswXSA9ICdyJzsKLSsJICBvZmZzZXQgPSAxOwotKwl9Ci0r Ci0rICAgICAgc3RybmNweSAocmVnbmFtZSArIG9mZnNldCwgc3RhcnQsIGxlbik7Ci0rICAgICAg bGVuICs9IG9mZnNldDsKLSsgICAgICByZWduYW1lW2xlbl0gPSAnXDAnOwotKwotKyAgICAgIGlm ICh1c2VyX3JlZ19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsIHJlZ25hbWUsIGxlbikgPT0g LTEpCi0rCWVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5hbWUgYCVzJyBvbiBleHByZXNzaW9u IGAlcycuIiksCi0rCSAgICAgICByZWduYW1lLCBwLT5zYXZlZF9hcmcpOwotKwotKyAgICAgICsr dG1wOwotKyAgICAgIHRtcCA9IHNraXBfc3BhY2VzX2NvbnN0ICh0bXApOwotKyAgICAgIGlmICgq dG1wKysgIT0gJyMnKQotKwlyZXR1cm4gMDsKLSsKLSsgICAgICBpZiAoKnRtcCA9PSAnLScpCi0r CXsKLSsJICArK3RtcDsKLSsJICBnb3RfbWludXMgPSAxOwotKwl9Ci0rCi0rICAgICAgZGlzcGxh Y2VtZW50ID0gc3RydG9sICh0bXAsIChjaGFyICoqKSAmdG1wLCAxMCk7Ci0rCi0rICAgICAgLyog U2tpcHBpbmcgbGFzdCBgXScuICAqLwotKyAgICAgIGlmICgqdG1wKysgIT0gJ10nKQotKwlyZXR1 cm4gMDsKLSsKLSsgICAgICAvKiBUaGUgZGlzcGxhY2VtZW50LiAgKi8KLSsgICAgICB3cml0ZV9l eHBfZWx0X29wY29kZSAoT1BfTE9ORyk7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChidWls dGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2xvbmcpOwotKyAgICAgIHdyaXRlX2V4cF9lbHRf bG9uZ2NzdCAoZGlzcGxhY2VtZW50KTsKLSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1Bf TE9ORyk7Ci0rICAgICAgaWYgKGdvdF9taW51cykKLSsJd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVO T1BfTkVHKTsKLSsKLSsgICAgICAvKiBUaGUgcmVnaXN0ZXIgbmFtZS4gICovCi0rICAgICAgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsKLSsgICAgICBzdHIucHRyID0gcmVnbmFt ZTsKLSsgICAgICBzdHIubGVuZ3RoID0gbGVuOwotKyAgICAgIHdyaXRlX2V4cF9zdHJpbmcgKHN0 cik7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsKLSsKLSsgICAg ICB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsKLSsKLSsgICAgICAvKiBDYXN0aW5n IHRvIHRoZSBleHBlY3RlZCB0eXBlLiAgKi8KLSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAo VU5PUF9DQVNUKTsKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKGxvb2t1cF9wb2ludGVyX3R5 cGUgKHAtPmFyZ190eXBlKSk7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FT VCk7Ci0rCi0rICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfSU5EKTsKLSsKLSsgICAg ICBwLT5hcmcgPSB0bXA7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBy ZXR1cm4gMTsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBhcm1fbGludXhfaW5pdF9hYmkgKHN0cnVj dCBnZGJhcmNoX2luZm8gaW5mbywKLSAJCSAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLUBA IC0xMTUyLDYgKzEyNzQsMTUgQEAgYXJtX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9p bmZvIGluZm8sCi0gCQkJCQkgICBzaW1wbGVfZGlzcGxhY2VkX3N0ZXBfZnJlZV9jbG9zdXJlKTsK LSAgIHNldF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2xvY2F0aW9uIChnZGJhcmNoLCBkaXNwbGFj ZWRfc3RlcF9hdF9lbnRyeV9wb2ludCk7Ci0gCi0rICAvKiBTeXN0ZW1UYXAgZnVuY3Rpb25zLiAg Ki8KLSsgIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICIjIik7Ci0r ICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgInIiKTsKLSsgIHNl dF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoLCAiWyIp OwotKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJj aCwgIl0iKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJj aCwgInIiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKGdkYmFyY2gs IGFybV9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfcGFyc2Vf c3BlY2lhbF90b2tlbiAoZ2RiYXJjaCwKLSsJCQkJCWFybV9zdGFwX3BhcnNlX3NwZWNpYWxfdG9r ZW4pOwotIAotICAgdGRlcC0+c3lzY2FsbF9uZXh0X3BjID0gYXJtX2xpbnV4X3N5c2NhbGxfbmV4 dF9wYzsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2F4LWdkYi5jIGIvZ2RiL2F4LWdkYi5jCi1pbmRl eCAzMWU5MWI5Li40NTE4ZjZiIDEwMDY0NAotLS0tIGEvZ2RiL2F4LWdkYi5jCi0rKysgYi9nZGIv YXgtZ2RiLmMKLUBAIC05NSw4ICs5NSw2IEBAIHN0YXRpYyB2b2lkIGdlbl9pbnRfbGl0ZXJhbCAo c3RydWN0IGFnZW50X2V4cHIgKmF4LAotIAkJCSAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUs Ci0gCQkJICAgICBMT05HRVNUIGssIHN0cnVjdCB0eXBlICp0eXBlKTsKLSAKLS0KLS1zdGF0aWMg dm9pZCByZXF1aXJlX3J2YWx1ZSAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QgYXhzX3Zh bHVlICp2YWx1ZSk7Ci0gc3RhdGljIHZvaWQgZ2VuX3VzdWFsX3VuYXJ5IChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCi0gCQkJICAgICBzdHJ1Y3QgYXhzX3Zh bHVlICp2YWx1ZSk7Ci0gc3RhdGljIGludCB0eXBlX3dpZGVyX3RoYW4gKHN0cnVjdCB0eXBlICp0 eXBlMSwgc3RydWN0IHR5cGUgKnR5cGUyKTsKLUBAIC0xNTcsOCArMTU1LDYgQEAgc3RhdGljIHZv aWQgZ2VuX3JlcGVhdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24gZXhwX2VsZW1lbnQg KipwYywKLSBzdGF0aWMgdm9pZCBnZW5fc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCB1 bmlvbiBleHBfZWxlbWVudCAqKnBjLAotIAkJCXN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0 IGF4c192YWx1ZSAqdmFsdWUsCi0gCQkJc3RydWN0IHR5cGUgKnNpemVfdHlwZSk7Ci0tc3RhdGlj IHZvaWQgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50 ICoqcGMsCi0tCQkgICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUg KnZhbHVlKTsKLSBzdGF0aWMgdm9pZCBnZW5fZXhwcl9iaW5vcF9yZXN0IChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLAotIAkJCQkgZW51bSBleHBfb3Bjb2RlIG9wLCB1bmlvbiBleHBfZWxlbWVudCAq KnBjLAotIAkJCQkgc3RydWN0IGFnZW50X2V4cHIgKmF4LAotQEAgLTc4OSw3ICs3ODUsNyBAQCBn ZW5faW50X2xpdGVyYWwgKHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAq dmFsdWUsIExPTkdFU1QgaywKLSAvKiBUYWtlIHdoYXQncyBvbiB0aGUgdG9wIG9mIHRoZSBzdGFj ayAoYXMgZGVzY3JpYmVkIGJ5IFZBTFVFKSwgYW5kCi0gICAgdHJ5IHRvIG1ha2UgYW4gcnZhbHVl IG91dCBvZiBpdC4gIFNpZ25hbCBhbiBlcnJvciBpZiB3ZSBjYW4ndCBkbwotICAgIHRoYXQuICAq LwotLXN0YXRpYyB2b2lkCi0rdm9pZAotIHJlcXVpcmVfcnZhbHVlIChzdHJ1Y3QgYWdlbnRfZXhw ciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKQotIHsKLSAgIC8qIE9ubHkgZGVhbCB3aXRo IHNjYWxhcnMsIHN0cnVjdHMgYW5kIHN1Y2ggbWF5IGJlIHRvbyBsYXJnZQotQEAgLTE4MDcsNyAr MTgwMyw3IEBAIGdlbl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9l bGVtZW50ICoqcGMsCi0gLyogWFhYOiBpMThuICovCi0gLyogQSBnZW5fZXhwciBmdW5jdGlvbiB3 cml0dGVuIGJ5IGEgR2VuLVgnZXIgZ3V5LgotICAgIEFwcGVuZCBjb2RlIGZvciB0aGUgc3ViZXhw cmVzc2lvbiBvZiBFWFBSIHN0YXJ0aW5nIGF0ICpQT1NfUCB0byBBWC4gICovCi0tc3RhdGljIHZv aWQKLSt2b2lkCi0gZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9l bGVtZW50ICoqcGMsCi0gCSAgc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QgYXhzX3ZhbHVl ICp2YWx1ZSkKLSB7Ci1AQCAtMjA0Miw3ICsyMDM4LDggQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCi0gCi0gICAgIGNhc2UgT1BfSU5U RVJOQUxWQVI6Ci0gICAgICAgewotLQljb25zdCBjaGFyICpuYW1lID0gaW50ZXJuYWx2YXJfbmFt ZSAoKCpwYylbMV0uaW50ZXJuYWx2YXIpOwotKwlzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciA9ICgq cGMpWzFdLmludGVybmFsdmFyOwotKwljb25zdCBjaGFyICpuYW1lID0gaW50ZXJuYWx2YXJfbmFt ZSAodmFyKTsKLSAJc3RydWN0IHRyYWNlX3N0YXRlX3ZhcmlhYmxlICp0c3Y7Ci0gCi0gCSgqcGMp ICs9IDM7Ci1AQCAtMjA1Niw3ICsyMDUzLDcgQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCi0gCSAgICB2YWx1ZS0+a2luZCA9IGF4c19y dmFsdWU7Ci0gCSAgICB2YWx1ZS0+dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+ YnVpbHRpbl9sb25nX2xvbmc7Ci0gCSAgfQotLQllbHNlCi0rCWVsc2UgaWYgKCEgY29tcGlsZV9p bnRlcm5hbHZhcl90b19heCAodmFyLCBheCwgdmFsdWUpKQotIAkgIGVycm9yIChfKCIkJXMgaXMg bm90IGEgdHJhY2Ugc3RhdGUgdmFyaWFibGU7IEdEQiBhZ2VudCAiCi0gCQkgICAiZXhwcmVzc2lv bnMgY2Fubm90IHVzZSBjb252ZW5pZW5jZSB2YXJpYWJsZXMuIiksIG5hbWUpOwotICAgICAgIH0K LWRpZmYgLS1naXQgYS9nZGIvYXgtZ2RiLmggYi9nZGIvYXgtZ2RiLmgKLWluZGV4IDQ4YzM1YTQu LjA5ZjY4ODkgMTAwNjQ0Ci0tLS0gYS9nZGIvYXgtZ2RiLmgKLSsrKyBiL2dkYi9heC1nZGIuaAot QEAgLTExMCw2ICsxMTAsMTEgQEAgZXh0ZXJuIHN0cnVjdCBhZ2VudF9leHByICpnZW5fdHJhY2Vf Zm9yX3JldHVybl9hZGRyZXNzIChDT1JFX0FERFIsCi0gCi0gZXh0ZXJuIHN0cnVjdCBhZ2VudF9l eHByICpnZW5fZXZhbF9mb3JfZXhwciAoQ09SRV9BRERSLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsK LSAKLStleHRlcm4gdm9pZCBnZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24g ZXhwX2VsZW1lbnQgKipwYywKLSsJCSAgICAgIHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0 IGF4c192YWx1ZSAqdmFsdWUpOwotKwotK2V4dGVybiB2b2lkIHJlcXVpcmVfcnZhbHVlIChzdHJ1 Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKTsKLSsKLSBleHRlcm4g aW50IHRyYWNlX2tsdWRnZTsKLSBleHRlcm4gaW50IHRyYWNlX3N0cmluZ19rbHVkZ2U7Ci0gCiBk aWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwotaW5kZXggNTdhYjRjMi4uNTcz NjMwZSAxMDA2NDQKK2luZGV4IDE1MDM3MzAuLmE1MjJiY2EgMTAwNjQ0CiAtLS0gYS9nZGIvYmxv Y2suYwogKysrIGIvZ2RiL2Jsb2NrLmMKLUBAIC0zNjksMyArMzY5LDIxIEBAIGFsbG9jYXRlX2Js b2NrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKK0BAIC02ODcsMyArNjg3LDIxIEBAIGJsb2Nr X2l0ZXJfbWF0Y2hfbmV4dCAoY29uc3QgY2hhciAqbmFtZSwKICAKLSAgIHJldHVybiBibDsKKyAg IHJldHVybiBibG9ja19pdGVyX21hdGNoX3N0ZXAgKGl0ZXJhdG9yLCBuYW1lLCBjb21wYXJlLCAw KTsKICB9CiArCiArLyogUmV0dXJuIE9CSkZJTEUgaW4gd2hpY2ggQkxPQ0sgaXMgbG9jYXRlZCBv ciBOVUxMIGlmIHdlIGNhbm5vdCBmaW5kIGl0IGZvcgpAQCAtNDI5LDIzOCArODMsMjEgQEAgaW5k ZXggNTdhYjRjMi4uNTczNjMwZSAxMDA2NDQKICsgIHJldHVybiBTWU1CT0xfU1lNVEFCIChmdW5j KS0+b2JqZmlsZTsKICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmggYi9nZGIvYmxvY2suaAot aW5kZXggMmNiY2MxYi4uMTA0YzE0NiAxMDA2NDQKK2luZGV4IDk5YzQ3ODguLjZjZWI3MDQgMTAw NjQ0CiAtLS0gYS9nZGIvYmxvY2suaAogKysrIGIvZ2RiL2Jsb2NrLmgKLUBAIC0xNjcsNCArMTY3 LDYgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2tfZ2xvYmFsX2Jsb2NrIChjb25z dCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKLSAKLSBleHRlcm4gc3RydWN0IGJsb2NrICphbGxvY2F0 ZV9ibG9jayAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOworQEAgLTI3OSw0ICsyNzksNiBAQCBl eHRlcm4gc3RydWN0IHN5bWJvbCAqYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25zdCBjaGFyICpu YW1lLAorICAgICAgICAoc3ltKTsJCQkJCQlcCisgICAgICAgIChzeW0pID0gYmxvY2tfaXRlcmF0 b3JfbmV4dCAoJihpdGVyKSkpCiAgCiArZXh0ZXJuIHN0cnVjdCBvYmpmaWxlICpibG9ja19vYmpm aWxlIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKICsKICAjZW5kaWYgLyogQkxPQ0tfSCAq LwogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1pbmRl eCBmNmEwMjc2Li5lNDA2MTU2IDEwMDY0NAoraW5kZXggYTg2N2IxMC4uZTQxYzY5MiAxMDA2NDQK IC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3BvaW50LmMKLUBAIC02MCw2 ICs2MCw4IEBACi0gI2luY2x1ZGUgImppdC5oIgotICNpbmNsdWRlICJ4bWwtc3lzY2FsbC5oIgot ICNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgotKyNpbmNsdWRlICJnZGJfcmVnZXguaCIKLSsjaW5j bHVkZSAic3RhcC1wcm9iZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCi0gI2luY2x1 ZGUgImNvbnRpbnVhdGlvbnMuaCIKLSAjaW5jbHVkZSAic3RhY2suaCIKLUBAIC0xMjM5LDkgKzEy NDEsMTAgQEAgaXNfd2F0Y2hwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKLSBz dGF0aWMgaW50Ci0gd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCB3YXRjaHBvaW50 ICpiKQotIHsKLS0gIHJldHVybiAocHRpZF9lcXVhbCAoYi0+d2F0Y2hwb2ludF90aHJlYWQsIG51 bGxfcHRpZCkKLS0JICB8fCAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgYi0+d2F0Y2hwb2lu dF90aHJlYWQpCi0tCSAgICAgICYmICFpc19leGVjdXRpbmcgKGluZmVyaW9yX3B0aWQpKSk7Ci0r ICByZXR1cm4gKGItPmJhc2UucHNwYWNlID09IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZQotKwkgICYm IChwdGlkX2VxdWFsIChiLT53YXRjaHBvaW50X3RocmVhZCwgbnVsbF9wdGlkKQotKwkgICAgICB8 fCAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgYi0+d2F0Y2hwb2ludF90aHJlYWQpCi0rCQkg ICYmICFpc19leGVjdXRpbmcgKGluZmVyaW9yX3B0aWQpKSkpOwotIH0KLSAKLSAvKiBTZXQgd2F0 Y2hwb2ludCBCIHRvIGRpc3BfZGVsX2F0X25leHRfc3RvcCwgZXZlbiBpbmNsdWRpbmcgaXRzIHBv c3NpYmxlCi1AQCAtMTY0OCw2ICsxNjUxLDQwIEBAIHVuZHVwbGljYXRlZF9zaG91bGRfYmVfaW5z ZXJ0ZWQgKHN0cnVjdCBicF9sb2NhdGlvbiAqYmwpCi0gICByZXR1cm4gcmVzdWx0OwotIH0KLSAK LSsvKiBTZWUgdGhlIGNvbW1lbnQgaW4gYnJlYWtwb2ludC5oLiAgKi8KLSsKLSt2b2lkCi0rbW9k aWZ5X3NlbWFwaG9yZSAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MsIGludCBzZXQpCi0rewotKyAg c3RydWN0IGdkYmFyY2ggKmFyY2ggPSBsb2MtPmdkYmFyY2g7Ci0rICBnZGJfYnl0ZSBieXRlc1tz aXplb2YgKExPTkdFU1QpXTsKLSsgIC8qIFRoZSBBQkkgc3BlY2lmaWVzICJ1bnNpZ25lZCBzaG9y dCIuICAqLwotKyAgc3RydWN0IHR5cGUgKnR5cGUgPSBidWlsdGluX3R5cGUgKGFyY2gpLT5idWls dGluX3Vuc2lnbmVkX3Nob3J0OwotKyAgQ09SRV9BRERSIGFkZHJlc3MgPSBsb2MtPnNlbWFwaG9y ZTsKLSsgIFVMT05HRVNUIHZhbHVlOwotKwotKyAgaWYgKGFkZHJlc3MgPT0gMCkKLSsgICAgcmV0 dXJuOwotKwotKyAgLyogU3dhbGxvdyBlcnJvcnMuICAqLwotKyAgaWYgKHRhcmdldF9yZWFkX21l bW9yeSAoYWRkcmVzcywgYnl0ZXMsIFRZUEVfTEVOR1RIICh0eXBlKSkgIT0gMCkKLSsgICAgcmV0 dXJuOwotKwotKyAgdmFsdWUgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCBUWVBF X0xFTkdUSCAodHlwZSksCi0rCQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGFyY2gpKTsKLSsg IC8qIE5vdGUgdGhhdCB3ZSBleHBsaWNpdGx5IGRvbid0IHdvcnJ5IGFib3V0IG92ZXJmbG93IG9y Ci0rICAgICB1bmRlcmZsb3cuICAqLwotKyAgaWYgKHNldCkKLSsgICAgKyt2YWx1ZTsKLSsgIGVs c2UKLSsgICAgLS12YWx1ZTsKLSsKLSsgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCBU WVBFX0xFTkdUSCAodHlwZSksCi0rCQkJICBnZGJhcmNoX2J5dGVfb3JkZXIgKGFyY2gpLCB2YWx1 ZSk7Ci0rCi0rICB0YXJnZXRfd3JpdGVfbWVtb3J5IChhZGRyZXNzLCBieXRlcywgVFlQRV9MRU5H VEggKHR5cGUpKTsKLSt9Ci0rCi0gLyogSW5zZXJ0IGEgbG93LWxldmVsICJicmVha3BvaW50IiBv ZiBzb21lIHR5cGUuICBCTCBpcyB0aGUgYnJlYWtwb2ludAotICAgIGxvY2F0aW9uLiAgQW55IGVy cm9yIG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIFRNUF9FUlJPUl9TVFJFQU07IGFuZAotICAgIERJ U0FCTEVEX0JSRUFLUywgYW5kIEhXX0JSRUFLUE9JTlRfRVJST1IgYXJlIHVzZWQgdG8gcmVwb3J0 IHByb2JsZW1zLgotQEAgLTE3NDEsNiArMTc3OCw4IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3Ry dWN0IGJwX2xvY2F0aW9uICpibCwKLSAJICAvKiBObyBvdmVybGF5IGhhbmRsaW5nOiBqdXN0IHNl dCB0aGUgYnJlYWtwb2ludC4gICovCi0gCi0gCSAgdmFsID0gYmwtPm93bmVyLT5vcHMtPmluc2Vy dF9sb2NhdGlvbiAoYmwpOwotKwotKwkgIG1vZGlmeV9zZW1hcGhvcmUgKGJsLCAxKTsKLSAJfQot ICAgICAgIGVsc2UKLSAJewotQEAgLTIyMjQsMTEgKzIyNjMsMjMgQEAgc3RydWN0IGJyZWFrcG9p bnRfb2JqZmlsZV9kYXRhCi0gICAvKiBNaW5pbWFsIHN5bWJvbChzKSBmb3IgImxvbmdqbXAiLCAi c2lnbG9uZ2ptcCIsIGV0Yy4gKGlmIGFueSkuICAqLwotICAgc3RydWN0IG1pbmltYWxfc3ltYm9s ICpsb25nam1wX21zeW1bTlVNX0xPTkdKTVBfTkFNRVNdOwotIAotKyAgLyogVHJ1ZSBpZiB3ZSBo YXZlIGxvb2tlZCBmb3IgbG9uZ2ptcCBwcm9iZXMuICAqLwotKyAgaW50IGxvbmdqbXBfc2VhcmNo ZWQ7Ci0rCi0rICAvKiBTeXN0ZW1UYXAgcHJvYmUgcG9pbnRzIGZvciBsb25nam1wIChpZiBhbnkp LiAgKi8KLSsgIFZFQyAoc3RhcF9wcm9iZV9wKSAqbG9uZ2ptcF9wcm9iZXM7Ci0rCi0gICAvKiBN aW5pbWFsIHN5bWJvbCBmb3IgInN0ZDo6dGVybWluYXRlKCkiIChpZiBhbnkpLiAgKi8KLSAgIHN0 cnVjdCBtaW5pbWFsX3N5bWJvbCAqdGVybWluYXRlX21zeW07Ci0gCi0gICAvKiBNaW5pbWFsIHN5 bWJvbCBmb3IgIl9VbndpbmRfRGVidWdIb29rIiAoaWYgYW55KS4gICovCi0gICBzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKmV4Y2VwdGlvbl9tc3ltOwotKwotKyAgLyogVHJ1ZSBpZiB3ZSBoYXZlIGxv b2tlZCBmb3IgZXhjZXB0aW9uIHByb2Jlcy4gICovCi0rICBpbnQgZXhjZXB0aW9uX3NlYXJjaGVk OwotKwotKyAgLyogU3lzdGVtVGFwIHByb2JlIHBvaW50cyBmb3IgdW53aW5kaW5nIChpZiBhbnkp LiAgKi8KLSsgIFZFQyAoc3RhcF9wcm9iZV9wKSAqZXhjZXB0aW9uX3Byb2JlczsKLSB9OwotIAot IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZmlsZV9kYXRhICpicmVha3BvaW50X29iamZpbGVfa2V5 OwotQEAgLTIyNjUsNiArMjMxNiwxNSBAQCBnZXRfYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIH0KLSAKLSBzdGF0aWMgdm9pZAotK2ZyZWVfYnJlYWtw b2ludF9wcm9iZXMgKHN0cnVjdCBvYmpmaWxlICpvYmosIHZvaWQgKmRhdGEpCi0rewotKyAgc3Ry dWN0IGJyZWFrcG9pbnRfb2JqZmlsZV9kYXRhICpicF9vYmpmaWxlX2RhdGEgPSBkYXRhOwotKwot KyAgVkVDX2ZyZWUgKHN0YXBfcHJvYmVfcCwgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3Byb2Jl cyk7Ci0rICBWRUNfZnJlZSAoc3RhcF9wcm9iZV9wLCBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlv bl9wcm9iZXMpOwotK30KLSsKLStzdGF0aWMgdm9pZAotIGNyZWF0ZV9vdmVybGF5X2V2ZW50X2Jy ZWFrcG9pbnQgKHZvaWQpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci1AQCAtMjM0 MSw2ICsyNDAxLDM3IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQot IAotICAgICAgIGJwX29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50X29iamZpbGVfZGF0YSAo b2JqZmlsZSk7Ci0gCi0rICAgICAgaWYgKCFicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfc2VhcmNo ZWQpCi0rCXsKLSsJICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmVzCi0rCSAgICA9IGZp bmRfcHJvYmVzX2luX29iamZpbGUgKG9iamZpbGUsICJsaWJjIiwgImxvbmdqbXAiKTsKLSsJICBi cF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfc2VhcmNoZWQgPSAxOwotKwl9Ci0rCi0rICAgICAgaWYg KGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZXMgIT0gTlVMTCkKLSsJewotKwkgIGludCBp OwotKwkgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKLSsJICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKwotKwkgIGZvciAoaSA9IDA7Ci0r CSAgICAgICBWRUNfaXRlcmF0ZSAoc3RhcF9wcm9iZV9wLAotKwkJCSAgICBicF9vYmpmaWxlX2Rh dGEtPmxvbmdqbXBfcHJvYmVzLAotKwkJCSAgICBpLCBwcm9iZSk7Ci0rCSAgICAgICArK2kpCi0r CSAgICB7Ci0rCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwotKwkgICAgICAgCi0rCSAgICAg IGIgPSBjcmVhdGVfaW50ZXJuYWxfYnJlYWtwb2ludCAoZ2RiYXJjaCwgcHJvYmUtPmFkZHJlc3Ms Ci0rCQkJCQkgICAgICBicF9sb25nam1wX21hc3RlciwKLSsJCQkJCSAgICAgICZpbnRlcm5hbF9i cmVha3BvaW50X29wcyk7Ci0rCSAgICAgIGItPmFkZHJfc3RyaW5nID0geHN0cmR1cCAoIi1wIGxp YmM6bG9uZ2ptcCIpOwotKwkgICAgICBiLT5lbmFibGVfc3RhdGUgPSBicF9kaXNhYmxlZDsKLSsJ ICAgIH0KLSsKLSsJICBjb250aW51ZTsKLSsJfQotKwotICAgICAgIGZvciAoaSA9IDA7IGkgPCBO VU1fTE9OR0pNUF9OQU1FUzsgaSsrKQotIAl7Ci0gCSAgc3RydWN0IGJyZWFrcG9pbnQgKmI7Ci1A QCAtMjQ1MSw2ICsyNTQyLDQwIEBAIGNyZWF0ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQg KHZvaWQpCi0gCi0gICAgICAgYnBfb2JqZmlsZV9kYXRhID0gZ2V0X2JyZWFrcG9pbnRfb2JqZmls ZV9kYXRhIChvYmpmaWxlKTsKLSAKLSsgICAgICAvKiBXZSBwcmVmZXIgdGhlIFN5c3RlbVRhcCBw cm9iZSBwb2ludCBpZiBpdCBleGlzdHMuICAqLwotKyAgICAgIGlmICghYnBfb2JqZmlsZV9kYXRh LT5leGNlcHRpb25fc2VhcmNoZWQpCi0rCXsKLSsJICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlv bl9wcm9iZXMKLSsJICAgID0gZmluZF9wcm9iZXNfaW5fb2JqZmlsZSAob2JqZmlsZSwgImxpYmdj YyIsICJ1bndpbmQiKTsKLSsJICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9zZWFyY2hlZCA9 IDE7Ci0rCX0KLSsKLSsgICAgICBpZiAoYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmVz ICE9IE5VTEwpCi0rCXsKLSsJICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxl X2FyY2ggKG9iamZpbGUpOwotKwkgIGludCBpOwotKwkgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZTsKLSsKLSsJICBmb3IgKGkgPSAwOwotKwkgICAgICAgVkVDX2l0ZXJhdGUgKHN0YXBfcHJvYmVf cCwKLSsJCQkgICAgYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmVzLAotKwkJCSAgICBp LCBwcm9iZSk7Ci0rCSAgICAgICArK2kpCi0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBicmVha3Bv aW50ICpiOwotKwotKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdkYmFy Y2gsIHByb2JlLT5hZGRyZXNzLAotKwkJCQkJICAgICAgYnBfZXhjZXB0aW9uX21hc3RlciwKLSsJ CQkJCSAgICAgICZpbnRlcm5hbF9icmVha3BvaW50X29wcyk7Ci0rCSAgICAgIGItPmFkZHJfc3Ry aW5nID0geHN0cmR1cCAoIi1wIGxpYmdjYzp1bndpbmQiKTsKLSsJICAgICAgYi0+ZW5hYmxlX3N0 YXRlID0gYnBfZGlzYWJsZWQ7Ci0rCSAgICB9Ci0rCi0rCSAgY29udGludWU7Ci0rCX0KLSsKLSsg ICAgICAvKiBPdGhlcndpc2UsIHRyeSB0aGUgaG9vayBmdW5jdGlvbi4gICovCi0rCi0gICAgICAg aWYgKG1zeW1fbm90X2ZvdW5kX3AgKGJwX29iamZpbGVfZGF0YS0+ZXhjZXB0aW9uX21zeW0pKQot IAljb250aW51ZTsKLSAKLUBAIC0yNjY2LDYgKzI3OTEsOCBAQCByZW1vdmVfYnJlYWtwb2ludF8x IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKLSAJewotIAkg IC8qIE5vIG92ZXJsYXkgaGFuZGxpbmc6IGp1c3QgcmVtb3ZlIHRoZSBicmVha3BvaW50LiAgKi8K LSAJICB2YWwgPSBibC0+b3duZXItPm9wcy0+cmVtb3ZlX2xvY2F0aW9uIChibCk7Ci0rCi0rCSAg bW9kaWZ5X3NlbWFwaG9yZSAoYmwsIDApOwotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci1AQCAtNzEx MSw2ICs3MjM4LDcgQEAgbW9tZW50YXJ5X2JyZWFrcG9pbnRfZnJvbV9tYXN0ZXIgKHN0cnVjdCBi cmVha3BvaW50ICpvcmlnLAotICAgY29weS0+bG9jLT5hZGRyZXNzID0gb3JpZy0+bG9jLT5hZGRy ZXNzOwotICAgY29weS0+bG9jLT5zZWN0aW9uID0gb3JpZy0+bG9jLT5zZWN0aW9uOwotICAgY29w eS0+bG9jLT5wc3BhY2UgPSBvcmlnLT5sb2MtPnBzcGFjZTsKLSsgIGNvcHktPmxvYy0+c2VtYXBo b3JlID0gb3JpZy0+bG9jLT5zZW1hcGhvcmU7Ci0gCi0gICBpZiAob3JpZy0+bG9jLT5zb3VyY2Vf ZmlsZSAhPSBOVUxMKQotICAgICBjb3B5LT5sb2MtPnNvdXJjZV9maWxlID0geHN0cmR1cCAob3Jp Zy0+bG9jLT5zb3VyY2VfZmlsZSk7Ci1AQCAtNzE5Niw2ICs3MzI0LDcgQEAgYWRkX2xvY2F0aW9u X3RvX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLAotICAgbG9jLT5yZXF1ZXN0ZWRf YWRkcmVzcyA9IHNhbC0+cGM7Ci0gICBsb2MtPmFkZHJlc3MgPSBhZGp1c3RlZF9hZGRyZXNzOwot ICAgbG9jLT5wc3BhY2UgPSBzYWwtPnBzcGFjZTsKLSsgIGxvYy0+c2VtYXBob3JlID0gc2FsLT5z ZW1hcGhvcmU7Ci0gICBnZGJfYXNzZXJ0IChsb2MtPnBzcGFjZSAhPSBOVUxMKTsKLSAgIGxvYy0+ c2VjdGlvbiA9IHNhbC0+c2VjdGlvbjsKLSAgIGxvYy0+Z2RiYXJjaCA9IGxvY19nZGJhcmNoOwot QEAgLTEzNTIxLDYgKzEzNjUwLDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9pZCkKK0BAIC0xNTE1 NCw2ICsxNTE1NCwyNCBAQCBhbGxfdHJhY2Vwb2ludHMgKHZvaWQpCiAgICByZXR1cm4gdHBfdmVj OwogIH0KICAKQEAgLTY4NSwxNyArMTIyLDcgQEAgaW5kZXggZjZhMDI3Ni4uZTQwNjE1NiAxMDA2 NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVh aywgdGJyZWFrIGFuZCB0aGJyZWFrCiAgICAgY29tbWFuZHMuICBJdCBpcyBkZWZpbmVkIGFzIGEg bWFjcm8gdG8gcHJldmVudCBkdXBsaWNhdGlvbi4KLUBAIC0xMzgxNSw3ICsxMzk2Miw4IEBAIF9p bml0aWFsaXplX2JyZWFrcG9pbnQgKHZvaWQpCi0gICBvYnNlcnZlcl9hdHRhY2hfaW5mZXJpb3Jf ZXhpdCAoY2xlYXJfc3lzY2FsbF9jb3VudHMpOwotICAgb2JzZXJ2ZXJfYXR0YWNoX21lbW9yeV9j aGFuZ2VkIChpbnZhbGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UpOwotIAotLSAgYnJl YWtwb2ludF9vYmpmaWxlX2tleSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKLSsgIGJyZWFr cG9pbnRfb2JqZmlsZV9rZXkKLSsgICAgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGFfd2l0aF9jbGVh bnVwIChOVUxMLCBmcmVlX2JyZWFrcG9pbnRfcHJvYmVzKTsKLSAKLSAgIGJyZWFrcG9pbnRfY2hh aW4gPSAwOwotICAgLyogRG9uJ3QgYm90aGVyIHRvIGNhbGwgc2V0X2JyZWFrcG9pbnRfY291bnQu ICAkYnBudW0gaXNuJ3QgdXNlZnVsCi1AQCAtMTQzNDAsNCArMTQ0ODgsNyBAQCByYW5nZSAoaW5j bHVkaW5nIFNUQVJULUxPQ0FUSU9OIGFuZCBFTkQtTE9DQVRJT04pLiIpKTsKK0BAIC0xNjA5Nyw0 ICsxNjExNSw3IEBAIFNob3cgdGhlIGNoYW5uZWwgdG8gdXNlIGZvciBkeW5hbWljIHByaW50ZiIp LCBOVUxMLAogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9i c2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2Nl ZWQpOwpAQCAtNzAzLDM2ICsxMzAsOCBAQCBpbmRleCBmNmEwMjc2Li5lNDA2MTU2IDEwMDY0NAog KyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQp OwogKyNlbmRpZgogIH0KLWRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFr cG9pbnQuaAotaW5kZXggOGE4ZDVmMi4uMWUxODU2MiAxMDA2NDQKLS0tLSBhL2dkYi9icmVha3Bv aW50LmgKLSsrKyBiL2dkYi9icmVha3BvaW50LmgKLUBAIC0zNzksNiArMzc5LDExIEBAIHN0cnVj dCBicF9sb2NhdGlvbgotICAgICAgcHJvY2Vzc29yJ3MgYXJjaGl0ZWN0dWFsIGNvbnN0cmFpbnRz LiAgKi8KLSAgIENPUkVfQUREUiByZXF1ZXN0ZWRfYWRkcmVzczsKLSAKLSsgIC8qIElmIHRoZSBs b2NhdGlvbiBjb21lcyBmcm9tIGEgU3lzdGVtVGFwIHByb2JlIHBvaW50LCBhbmQgdGhlIHByb2Jl Ci0rICAgICBoYXMgYW4gYXNzb2NpYXRlZCBzZW1hcGhvcmUgdmFyaWFibGUsIHRoZW4gdGhpcyBp cyB0aGUgYWRkcmVzcyBvZgotKyAgICAgdGhlIHNlbWFwaG9yZS4gIE90aGVyd2lzZSwgdGhpcyBp cyB6ZXJvLiAgKi8KLSsgIENPUkVfQUREUiBzZW1hcGhvcmU7Ci0rCi0gICBjaGFyICpmdW5jdGlv bl9uYW1lOwotIAotICAgLyogRGV0YWlscyBvZiB0aGUgcGxhY2VkIGJyZWFrcG9pbnQsIHdoZW4g aW5zZXJ0ZWQuICAqLwotQEAgLTE0MTIsNCArMTQxNywxMSBAQCBleHRlcm4gaW50IHVzZXJfYnJl YWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKLSAvKiBBdHRlbXB0IHRvIGRldGVybWlu ZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLwotIGV4dGVy biBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNh bCk7Ci0gCi0rLyogU2V0IG9yIGNsZWFyIGEgU3lzdGVtVGFwIHNlbWFwaG9yZS4gIExPQyBpcyB0 aGUgbG9jYXRpb24gd2hpY2ggbWF5Ci0rICAgaG9sZCBhIHNlbWFwaG9yZS4gIFNFVCBpcyBub24t emVybyBpZiB0aGUgc2VtYXBob3JlIHNob3VsZCBiZSBzZXQsCi0rICAgb3IgemVybyBpZiB0aGUg c2VtYXBob3JlIHNob3VsZCBiZSBjbGVhcmVkLiAgU2VtYXBob3JlcyBhY3QgYXMKLSsgICByZWZl cmVuY2UgY291bnRlcnMsIHNvIGNhbGxzIHRvIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBwYWlyZWQu ICAqLwotKwotK2V4dGVybiB2b2lkIG1vZGlmeV9zZW1hcGhvcmUgKHN0cnVjdCBicF9sb2NhdGlv biAqbG9jYXRpb24sIGludCBzZXQpOwotKwotICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQT0lO VF9IKSAqLwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2RiL2MtdHlwZXByaW50 LmMKLWluZGV4IGRiMjU0ZGMuLjE4MWRlMDUgMTAwNjQ0CitpbmRleCBhNTg5MmI1Li4yOTQ0YzJk IDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsrKyBiL2dkYi9jLXR5cGVwcmludC5j CiBAQCAtNjI0LDkgKzYyNCwxNCBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVj dCB0eXBlICp0eXBlLApAQCAtNzUzLDEwNiArMTUyLDExIEBAIGluZGV4IGRiMjU0ZGMuLjE4MWRl MDUgMTAwNjQ0CiAgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIl0iKTsKICAKICAJY190eXBl X3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgc3RyZWFtLAot ZGlmZiAtLWdpdCBhL2dkYi9jbGkvY2xpLXV0aWxzLmMgYi9nZGIvY2xpL2NsaS11dGlscy5jCi1p bmRleCBhN2IyNzE4Li5hMWU1MTYxIDEwMDY0NAotLS0tIGEvZ2RiL2NsaS9jbGktdXRpbHMuYwot KysrIGIvZ2RiL2NsaS9jbGktdXRpbHMuYwotQEAgLTIyMyw2ICsyMjMsMTggQEAgc2tpcF9zcGFj ZXMgKGNoYXIgKmNocCkKLSAgIHJldHVybiBjaHA7Ci0gfQotIAotKy8qIEEgY29uc3QtY29ycmVj dCB2ZXJzaW9uIG9mIHRoZSBhYm92ZS4gICovCi0rCi0rY29uc3QgY2hhciAqCi0rc2tpcF9zcGFj ZXNfY29uc3QgKGNvbnN0IGNoYXIgKmNocCkKLSt7Ci0rICBpZiAoY2hwID09IE5VTEwpCi0rICAg IHJldHVybiBOVUxMOwotKyAgd2hpbGUgKCpjaHAgJiYgaXNzcGFjZSAoKmNocCkpCi0rICAgIGNo cCsrOwotKyAgcmV0dXJuIGNocDsKLSt9Ci0rCi0gLyogU2VlIGRvY3VtZW50YXRpb24gaW4gY2xp LXV0aWxzLmguICAqLwotIAotIGNoYXIgKgotQEAgLTI0NSwzICsyNTcsMzIgQEAgcmVtb3ZlX3Ry YWlsaW5nX3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKnN0YXJ0LCBjaGFyICpzKQotIAotICAgcmV0 dXJuIHM7Ci0gfQotKwotKy8qIFNlZSBkb2N1bWVudGF0aW9uIGluIGNsaS11dGlscy5oLiAgKi8K LSsKLStjaGFyICoKLStleHRyYWN0X2FyZyAoY2hhciAqKmFyZykKLSt7Ci0rICBjaGFyICpyZXN1 bHQsICpjb3B5OwotKwotKyAgaWYgKCEqYXJnKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8q IEZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBhcmd1bWVudC4gICovCi0rICAqYXJnID0gc2tpcF9zcGFj ZXMgKCphcmcpOwotKyAgaWYgKCEgKiphcmcpCi0rICAgIHJldHVybiBOVUxMOwotKyAgcmVzdWx0 ID0gKmFyZzsKLSsKLSsgIC8qIEZpbmQgdGhlIGVuZCBvZiB0aGUgYXJndW1lbnQuICAqLwotKyAg KmFyZyA9IHNraXBfdG9fc3BhY2UgKCphcmcgKyAxKTsKLSsKLSsgIGlmIChyZXN1bHQgPT0gKmFy ZykKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBjb3B5ID0geG1hbGxvYyAoKmFyZyAtIHJlc3Vs dCArIDEpOwotKyAgbWVtY3B5IChjb3B5LCByZXN1bHQsICphcmcgLSByZXN1bHQpOwotKyAgY29w eVsqYXJnIC0gcmVzdWx0XSA9ICdcMCc7Ci0rCi0rICByZXR1cm4gY29weTsKLSt9Ci1kaWZmIC0t Z2l0IGEvZ2RiL2NsaS9jbGktdXRpbHMuaCBiL2dkYi9jbGkvY2xpLXV0aWxzLmgKLWluZGV4IGUy M2M3ZDguLjVmOGE5MWQgMTAwNjQ0Ci0tLS0gYS9nZGIvY2xpL2NsaS11dGlscy5oCi0rKysgYi9n ZGIvY2xpL2NsaS11dGlscy5oCi1AQCAtOTQsNiArOTQsMTAgQEAgZXh0ZXJuIGludCBudW1iZXJf aXNfaW5fbGlzdCAoY2hhciAqbGlzdCwgaW50IG51bWJlcik7Ci0gCi0gZXh0ZXJuIGNoYXIgKnNr aXBfc3BhY2VzIChjaGFyICppbnApOwotIAotKy8qIEEgY29uc3QtY29ycmVjdCB2ZXJzaW9uIG9m IHRoZSBhYm92ZS4gICovCi0rCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKnNraXBfc3BhY2VzX2NvbnN0 IChjb25zdCBjaGFyICppbnApOwotKwotIC8qIFNraXAgbGVhZGluZyBub24td2hpdGVzcGFjZSBj aGFyYWN0ZXJzIGluIElOUCwgcmV0dXJuaW5nIGFuIHVwZGF0ZWQKLSAgICBwb2ludGVyLiAgSWYg SU5QIGlzIE5VTEwsIHJldHVybiBOVUxMLiAgKi8KLSAKLUBAIC0xMDMsNCArMTA3LDExIEBAIGV4 dGVybiBjaGFyICpza2lwX3RvX3NwYWNlIChjaGFyICppbnApOwotICAgIFNUQVJULiAgKi8KLSAK LSBleHRlcm4gY2hhciAqcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKnN0 YXJ0LCBjaGFyICpzKTsKLSsKLSsvKiBBIGhlbHBlciBmdW5jdGlvbiB0byBleHRyYWN0IGFuIGFy Z3VtZW50IGZyb20gKkFSRy4gIEFuIGFyZ3VtZW50IGlzCi0rICAgZGVsaW1pdGVkIGJ5IHdoaXRl c3BhY2UuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBOVUxMIGlmIG5vCi0rICAgYXJndW1l bnQgd2FzIGZvdW5kLCBvciBhbiB4bWFsbG9jJ2Qgc3RyaW5nLiAgKi8KLSsKLStleHRlcm4gY2hh ciAqZXh0cmFjdF9hcmcgKGNoYXIgKiphcmcpOwotKwotICNlbmRpZiAvKiBDTElfVVRJTFNfSCAq LwotZGlmZiAtLWdpdCBhL2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZyZWFkLmMKLWluZGV4IGM3 MjcyMjguLmUxZmFiNmQgMTAwNjQ0Ci0tLS0gYS9nZGIvY29mZnJlYWQuYwotKysrIGIvZ2RiL2Nv ZmZyZWFkLmMKLUBAIC0yMTk1LDYgKzIxOTUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9m bnMgY29mZl9zeW1fZm5zID0KLSAKLSAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogc3lt X3JlbG9jYXRlOiBSZWxvY2F0ZSBhIGRlYnVnCi0gCQkJCSAgIHNlY3Rpb24uICAqLwotKyAgTlVM TCwJCQkJLyogc3ltX3Byb2JlX2ZucyAqLwotICAgJnBzeW1fZnVuY3Rpb25zCi0gfTsKLSAKIGRp ZmYgLS1naXQgYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gYi9nZGIvZGF0YS1kaXJl Y3RvcnkvTWFrZWZpbGUuaW4KLWluZGV4IDQyOTZlNWEuLmIwNGQxMmYgMTAwNjQ0CitpbmRleCA4 N2M2ZGQ0Li4xYzI2NjUyIDEwMDY0NAogLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxl LmluCiArKysgYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KLUBAIC01MiwxMyArNTIs MjQgQEAgU1lTQ0FMTFNfRklMRVMgPSBcCitAQCAtNTIsMTQgKzUyLDI1IEBAIFNZU0NBTExTX0ZJ TEVTID0gXAogIFBZVEhPTl9ESVIgPSBweXRob24KICBQWVRIT05fSU5TVEFMTF9ESVIgPSAkKERF U1RESVIpJChHREJfREFUQURJUikvJChQWVRIT05fRElSKQogIFBZVEhPTl9GSUxFUyA9IFwKQEAg LTg2OCw4ICsxNzIsOSBAQCBpbmRleCA0Mjk2ZTVhLi5iMDRkMTJmIDEwMDY0NAogKwlnZGIvY29t bWFuZC9pZ25vcmVfZXJyb3JzLnB5IFwKICsJZ2RiL2NvbW1hbmQvcGFob2xlLnB5IFwKICAJZ2Ri L2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwKLS0JZ2RiL2NvbW1hbmQvcHJvbXB0LnB5Ci0r CWdkYi9jb21tYW5kL3Byb21wdC5weSBcCisgCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCistCWdk Yi9jb21tYW5kL2V4cGxvcmUucHkKKysJZ2RiL2NvbW1hbmQvZXhwbG9yZS5weSBcCiArCWdkYi9j b21tYW5kL3JlcXVpcmUucHkgXAogKwlnZGIvY29tbWFuZC91cHRvLnB5IFwKICsJZ2RiL2Z1bmN0 aW9uL19faW5pdF9fLnB5IFwKQEAgLTg4MSwyMyArMTg2LDExIEBAIGluZGV4IDQyOTZlNWEuLmIw NGQxMmYgMTAwNjQ0CiAgCiAgRkxBR1NfVE9fUEFTUyA9IFwKICAJInByZWZpeD0kKHByZWZpeCki IFwKLWRpZmYgLS1naXQgYS9nZGIvZGJ4cmVhZC5jIGIvZ2RiL2RieHJlYWQuYwotaW5kZXggYWRm ODMxNS4uYzExZTRkNCAxMDA2NDQKLS0tLSBhL2dkYi9kYnhyZWFkLmMKLSsrKyBiL2dkYi9kYnhy ZWFkLmMKLUBAIC0zNTg4LDYgKzM1ODgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMg YW91dF9zeW1fZm5zID0KLSAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNlZ21l bnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwotICAgTlVMTCwKLSAgIGRlZmF1bHRfc3lt ZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAgKi8KLSsgIE5VTEws CQkJCS8qIHN5bV9wcm9iZV9mbnMgKi8KLSAgICZwc3ltX2Z1bmN0aW9ucwotIH07Ci0gCiBkaWZm IC0tZ2l0IGEvZ2RiL2RlZnMuaCBiL2dkYi9kZWZzLmgKLWluZGV4IDgzYTcxNmEuLjdmODc1MmUg MTAwNjQ0CitpbmRleCAwMzA5MmFhLi42ZDczMzg2IDEwMDY0NAogLS0tIGEvZ2RiL2RlZnMuaAog KysrIGIvZ2RiL2RlZnMuaAotQEAgLTQxMSw2ICs0MTEsOCBAQCBleHRlcm4gc3RydWN0IGNsZWFu dXAgKm1ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7CitAQCAtMzUzLDYgKzM1 Myw4IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9p bmZvICh2b2lkKTsKICBleHRlcm4gc3RydWN0IGNsZWFudXAgKgogICAgc2V0X2JhdGNoX2ZsYWdf YW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7CiAgCkBAIC05MDcsMTAg KzIwMCwxMCBAQCBpbmRleCA4M2E3MTZhLi43Zjg3NTJlIDEwMDY0NAogIGV4dGVybiBjaGFyICp4 ZnVsbHBhdGggKGNvbnN0IGNoYXIgKik7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4 aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLWluZGV4IDIwYjBiNjcuLjU3MDY4YzMgMTAwNjQ0 CitpbmRleCAwMTRjZmQ4Li5kMGE4YzUxIDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5m bwogKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTExNzMsNiArMTE3MywxNiBAQCBmb3Ig cmVtb3RlIGRlYnVnZ2luZy4KK0BAIC0xMTkxLDYgKzExOTEsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1 Z2dpbmcuCiAgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRh cmQgaW5wdXQgYW5kIG91dHB1dC4KICBAYyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMg bW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAgCkBAIC05MjcsMTI0ICsyMjAsNyBAQCBpbmRl eCAyMGIwYjY3Li41NzA2OGMzIDEwMDY0NAogIEBjIHJlc29sdmUgdGhlIHNpdHVhdGlvbiBvZiB0 aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5kZXggQGNvZGV7LS10dWl9Ci1AQCAt MzMwMSw2ICszMzExLDcgQEAgYWxsIGJyZWFrcG9pbnRzIGluIHRoYXQgcmFuZ2UgYXJlIG9wZXJh dGVkIG9uLgotICogQ29uZGl0aW9uczo6ICAgICAgICAgICAgICAgICAgQnJlYWsgY29uZGl0aW9u cwotICogQnJlYWsgQ29tbWFuZHM6OiAgICAgICAgICAgICAgQnJlYWtwb2ludCBjb21tYW5kIGxp c3RzCi0gKiBTYXZlIEJyZWFrcG9pbnRzOjogICAgICAgICAgICBIb3cgdG8gc2F2ZSBicmVha3Bv aW50cyBpbiBhIGZpbGUKLSsqIFN0YXRpYyBQcm9iZSBQb2ludHM6OiAgICAgICAgIExpc3Rpbmcg c3RhdGljIHByb2JlIHBvaW50cwotICogRXJyb3IgaW4gQnJlYWtwb2ludHM6OiAgICAgICAgYGBD YW5ub3QgaW5zZXJ0IGJyZWFrcG9pbnRzJycKLSAqIEJyZWFrcG9pbnQtcmVsYXRlZCBXYXJuaW5n czo6IGBgQnJlYWtwb2ludCBhZGRyZXNzIGFkanVzdGVkLi4uJycKLSBAZW5kIG1lbnUKLUBAIC00 NTMwLDYgKzQ1NDEsNTAgQEAgYW5kIHJlbW92ZSB0aGUgYnJlYWtwb2ludCBkZWZpbml0aW9ucyB5 b3UncmUgbm90IGludGVyZXN0ZWQgaW4sIG9yCi0gdGhhdCBjYW4gbm8gbG9uZ2VyIGJlIHJlY3Jl YXRlZC4KLSBAZW5kIHRhYmxlCi0gCi0rQG5vZGUgU3RhdGljIFByb2JlIFBvaW50cwotK0BzdWJz ZWN0aW9uIFN0YXRpYyBQcm9iZSBQb2ludHMKLSsKLStAY2luZGV4IFN5c3RlbVRhcCBzdGF0aWMg cHJvYmUgcG9pbnQKLStAY2luZGV4IHNkdC1wcm9iZQotK1RoZSBAc2N7Z251fS9MaW51eCB0b29s IEBjb2Rle1N5c3RlbVRhcH0gcHJvdmlkZXMgYSB3YXkgZm9yCi0rYXBwbGljYXRpb25zIHRvIGVt YmVkIHN0YXRpYyBwcm9iZXMsIHVzaW5nIEBmaWxle3N5cy9zZHQuaH0uICBAdmFsdWV7R0RCTn0K LStjYW4gbGlzdCB0aGUgYXZhaWxhYmxlIHByb2JlcywgYW5kIHlvdSBjYW4gcHV0IGJyZWFrcG9p bnRzIGF0IHRoZQotK3Byb2JlIHBvaW50cyAoQHB4cmVme1NwZWNpZnkgTG9jYXRpb259KS4KLSsK LStZb3UgY2FuIGV4YW1pbmUgdGhlIGF2YWlsYWJsZSBAY29kZXtTeXN0ZW1UYXB9IHN0YXRpYyBw cm9iZXMgdXNpbmcKLStAY29kZXtpbmZvIHByb2Jlc306Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGtp bmRleCBpbmZvIHByb2JlcwotK0BpdGVtIGluZm8gcHJvYmVzIFtAdmFye3Byb3ZpZGVyfSBbQHZh cntuYW1lfSBbQHZhcntvYmpmaWxlfV1dXQotK0xpc3QgdGhlIGF2YWlsYWJsZSBAY29kZXtTeXN0 ZW1UYXB9IHN0YXRpYyBwcm9iZXMuCi0rCi0rSWYgZ2l2ZW4sIEB2YXJ7cHJvdmlkZXJ9IGlzIGEg cmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gc2VsZWN0IHdoaWNoCi0rcHJvdmlkZXJzIHRvIGxp c3QuICBJZiBvbWl0dGVkLCBhbGwgcHJvdmlkZXJzIGFyZSBsaXN0ZWQuCi0rCi0rSWYgZ2l2ZW4s IEB2YXJ7bmFtZX0gaXMgYSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBzZWxlY3Qgd2hpY2gK LStwcm9iZXMgdG8gbGlzdC4gIElmIG9taXR0ZWQsIGFsbCBwcm9iZXMgYXJlIGxpc3RlZC4KLSsK LStJZiBnaXZlbiwgQHZhcntvYmpmaWxlfSBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRv IHNlbGVjdCB3aGljaAotK29iamVjdCBmaWxlcyAoZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFy aWVzKSB0byBleGFtaW5lLiAgSWYgbm90Ci0rZ2l2ZW4sIGFsbCBvYmplY3QgZmlsZXMgYXJlIGNv bnNpZGVyZWQuCi0rQGVuZCB0YWJsZQotKwotK0B2aW5kZXggJF9wcm9iZV9hcmdAcnssIGNvbnZl bmllbmNlIHZhcmlhYmxlfQotK0EgcHJvYmUgbWF5IHNwZWNpZnkgdXAgdG8gdGVuIGFyZ3VtZW50 cy4gIFRoZXNlIGFyZSBhdmFpbGFibGUgYXQgdGhlCi0rcG9pbnQgYXQgd2hpY2ggdGhlIHByb2Jl IGlzIGRlZmluZWQtLS10aGF0IGlzLCB3aGVuIHRoZSBjdXJyZW50IFBDIGlzCi0rYXQgdGhlIHBy b2JlJ3MgbG9jYXRpb24uICBUaGUgYXJndW1lbnRzIGFyZSBhdmFpbGFibGUgdXNpbmcgdGhlCi0r Y29udmVuaWVuY2UgdmFyaWFibGVzIChAcHhyZWZ7Q29udmVuaWVuY2UgVmFyc30pCi0rQGNvZGV7 JF9wcm9iZV9hcmcwfUBkb3Rze31AY29kZXskX3Byb2JlX2FyZzExfS4gIEVhY2ggcHJvYmUgYXJn dW1lbnQgaXMKLSthbiBpbnRlZ2VyIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplOyB0eXBlcyBhcmUg bm90IHByZXNlcnZlZC4gIFRoZQotK2NvbnZlbmllbmNlIHZhcmlhYmxlIEBjb2RleyRfcHJvYmVf YXJnY30gaG9sZHMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMKLSthdCB0aGUgY3VycmVudCBwcm9i ZSBwb2ludC4KLSsKLStUaGVzZSB2YXJpYWJsZXMgYXJlIGFsd2F5cyBhdmFpbGFibGUsIGJ1dCBh dHRlbXB0cyB0byBhY2Nlc3MgdGhlbSBhdAotK2FueSBsb2NhdGlvbiBvdGhlciB0aGFuIGEgcHJv YmUgcG9pbnQgd2lsbCBjYXVzZSBAdmFsdWV7R0RCTn0gdG8gZ2l2ZQotK2FuIGVycm9yLgotKwot KwotIEBjICBAaWZjbGVhciBCQVJFVEFSR0VUCi0gQG5vZGUgRXJyb3IgaW4gQnJlYWtwb2ludHMK LSBAc3Vic2VjdGlvbiBgYENhbm5vdCBpbnNlcnQgYnJlYWtwb2ludHMnJwotQEAgLTY1NTUsNiAr NjYxMCwyOSBAQCBzcGVjaWZ5IHRoZSBmdW5jdGlvbiB1bmFtYmlndW91c2x5LCBlLmcuLCBpZiB0 aGVyZSBhcmUgc2V2ZXJhbAotIGZ1bmN0aW9ucyB3aXRoIGlkZW50aWNhbCBuYW1lcyBpbiBkaWZm ZXJlbnQgc291cmNlIGZpbGVzLgotIEBlbmQgdGFibGUKLSAKLStAY2luZGV4IFN5c3RlbVRhcCBz dGF0aWMgcHJvYmUgcG9pbnQKLStAaXRlbSAtcCBAcntbfUB2YXJ7b2JqZmlsZX06QHJ7XX1Acntb fUB2YXJ7cHJvdmlkZXJ9OkBye119QHZhcntuYW1lfQotK1RoZSBAc2N7Z251fS9MaW51eCB0b29s IEBjb2Rle1N5c3RlbVRhcH0gcHJvdmlkZXMgYSB3YXkgZm9yCi0rYXBwbGljYXRpb25zIHRvIGVt YmVkIHN0YXRpYyBwcm9iZXMuICBUaGlzIGZvcm0gb2YgbGluZXNwZWMgc3BlY2lmaWVzCi0rdGhl IGxvY2F0aW9uIG9mIHN1Y2ggYSBzdGF0aWMgcHJvYmUuICBTZWUKLStAdXJlZntodHRwOi8vc291 cmNld2FyZS5vcmcvc3lzdGVtdGFwL3dpa2kvQWRkaW5nVXNlclNwYWNlUHJvYmluZ1RvQXBwc30K LStmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdGF0aWMgcHJvYmVzLgotKwotK0lmIEB2YXJ7b2Jq ZmlsZX0gaXMgZ2l2ZW4sIG9ubHkgcHJvYmVzIGNvbWluZyBmcm9tIHRoYXQgc2hhcmVkIGxpYnJh cnkKLStvciBleGVjdXRhYmxlIGFyZSBjb25zaWRlcmVkLiAgSWYgQHZhcntwcm92aWRlcn0gaXMg Z2l2ZW4sIHRoZW4gb25seQotK3Byb2JlcyBmcm9tIHRoYXQgcHJvdmlkZXIgYXJlIGNvbnNpZGVy ZWQuCi0rCi0rQHhyZWZ7U3RhdGljIFByb2JlIFBvaW50c30sIGZvciBtb3JlIGluZm9ybWF0aW9u IG9uIGZpbmRpbmcgYW5kIHVzaW5nCi0rc3RhdGljIHByb2Jlcy4KLSsKLStTb21lIHByb2JlcyBo YXZlIGFuIGFzc29jaWF0ZWQgc2VtYXBob3JlIHZhcmlhYmxlOyBmb3IgaW5zdGFuY2UsIHRoaXMK LStoYXBwZW5zIGF1dG9tYXRpY2FsbHkgaWYgeW91IGRlZmluZWQgeW91ciBwcm9iZSB1c2luZyBh IERUcmFjZS1zdHlsZQotK0BmaWxley5kfSBmaWxlLiAgSWYgeW91ciBwcm9iZSBoYXMgYSBzZW1h cGhvcmUsIEB2YWx1ZXtHREJOfSB3aWxsCi0rYXV0b21hdGljYWxseSBlbmFibGUgaXQgd2hlbiB5 b3Ugc3BlY2lmeSBhIGJyZWFrcG9pbnQgdXNpbmcgdGhlCi0rQHNhbXB7LXB9IG5vdGF0aW9uLiAg QnV0LCBpZiB5b3UgcHV0IGEgYnJlYWtwb2ludCBhdCBhIHByb2JlJ3MKLStsb2NhdGlvbiBieSBz b21lIG90aGVyIG1ldGhvZCAoZS5nLiwgQGNvZGV7YnJlYWsgZmlsZTpsaW5lfSksIHRoZW4KLStA dmFsdWV7R0RCTn0gd2lsbCBub3QgYXV0b21hdGljYWxseSBzZXQgdGhlIHNlbWFwaG9yZS4KLSsK LSBAZW5kIHRhYmxlCi0gCi0gCi1AQCAtODgxMSw2ICs4ODg5LDEwIEBAIHRvIG1hdGNoIHRoZSBm b3JtYXQgaW4gd2hpY2ggdGhlIGRhdGEgd2FzIHByaW50ZWQuCi0gVGhlIHZhcmlhYmxlIEBjb2Rl eyRfZXhpdGNvZGV9IGlzIGF1dG9tYXRpY2FsbHkgc2V0IHRvIHRoZSBleGl0IGNvZGUgd2hlbgot IHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIHRlcm1pbmF0ZXMuCi0gCi0rQGl0ZW0gJF9wcm9i ZV9hcmdjCi0rQGl0ZW14ICRfcHJvYmVfYXJnMEBkb3Rze30kX3Byb2JlX2FyZzExCi0rQXJndW1l bnRzIHRvIGEgU3lzdGVtVGFwIHN0YXRpYyBwcm9iZS4gIEB4cmVme1N0YXRpYyBQcm9iZSBQb2lu dHN9LgotKwotIEBpdGVtICRfc2RhdGEKLSBAdmluZGV4ICRfc2RhdGFAcnssIGluc3BlY3QsIGNv bnZlbmllbmNlIHZhcmlhYmxlfQotIFRoZSB2YXJpYWJsZSBAY29kZXskX3NkYXRhfSBjb250YWlu cyBleHRyYSBjb2xsZWN0ZWQgc3RhdGljIHRyYWNlcG9pbnQKLUBAIC0xMDc2Myw2ICsxMDg0NSwx NiBAQCBDb2xsZWN0IGFsbCBsb2NhbCB2YXJpYWJsZXMuCi0gQ29sbGVjdCB0aGUgcmV0dXJuIGFk ZHJlc3MuICBUaGlzIGlzIGhlbHBmdWwgaWYgeW91IHdhbnQgdG8gc2VlIG1vcmUKLSBvZiBhIGJh Y2t0cmFjZS4KLSAKLStAaXRlbSAkX3Byb2JlX2FyZ2MKLStDb2xsZWN0cyB0aGUgbnVtYmVyIG9m IGFyZ3VtZW50cyBmcm9tIHRoZSBAY29kZXtTeXN0ZW1UYXB9IHByb2JlIGF0Ci0rd2hpY2ggdGhl IHRyYWNlcG9pbnQgaXMgbG9jYXRlZC4KLStAeHJlZntTdGF0aWMgUHJvYmUgUG9pbnRzLCxTdGF0 aWMgUHJvYmUgUG9pbnRzfS4KLSsKLStAaXRlbSAkX3Byb2JlX2FyZ0B2YXJ7Tn0KLStXaGVyZSBA dmFye059IHZhcmllcyBmcm9tIDAgdG8gMTEuICBDb2xsZWN0cyB0aGUgQHZhcntOfXRoIGFyZ3Vt ZW50Ci0rZnJvbSB0aGUgQGNvZGV7U3lzdGVtVGFwfSBwcm9iZSBhdCB3aGljaCB0aGUgdHJhY2Vw b2ludCBpcyBsb2NhdGVkLgotK0B4cmVme1N0YXRpYyBQcm9iZSBQb2ludHMsLFN0YXRpYyBQcm9i ZSBQb2ludHN9LgotKwotIEBpdGVtICRfc2RhdGEKLSBAdmluZGV4ICRfc2RhdGFAcnssIGNvbGxl Y3R9Ci0gQ29sbGVjdCBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlY2lmaWMgZGF0YS4gIE9u bHkgYXZhaWxhYmxlIGZvcgotQEAgLTIxNTA2LDggKzIxNTk4LDYgQEAgY29udGFpbmluZyBAY29k ZXtlbmR9LiAgRm9yIGV4YW1wbGU6CitAQCAtMjI0OTQsOCArMjI1MDQsNiBAQCBjb250YWluaW5n IEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtH REJQfSkgcHl0aG9uCkBAIC0xMDUzLDcgKzIyOSw3IEBAIGluZGV4IDIwYjBiNjcuLjU3MDY4YzMg MTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMjE1MjEsNiArMjE2MTEsMTQgQEAg Y29udHJvbGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHByaW50LXN0YWNrfTogaWYgQGNvZGV7 ZnVsbH0sIHRoZW4KK0BAIC0yMjUwOSw2ICsyMjUxNywxNCBAQCBjb250cm9sbGVkIHVzaW5nIEBj b2Rle3NldCBweXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29kZXtmdWxsfSwgdGhlbgogIGZ1bGwg UHl0aG9uIHN0YWNrIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle25vbmV9LCB0aGVuIFB5 dGhvbiBzdGFjawogIGFuZCBtZXNzYWdlIHByaW50aW5nIGlzIGRpc2FibGVkOyBpZiBAY29kZXtt ZXNzYWdlfSwgdGhlIGRlZmF1bHQsIG9ubHkKICB0aGUgbWVzc2FnZSBjb21wb25lbnQgb2YgdGhl IGVycm9yIGlzIHByaW50ZWQuCkBAIC0xMDY4LDcgKzI0NCw3IEBAIGluZGV4IDIwYjBiNjcuLjU3 MDY4YzMgMTAwNjQ0CiAgQGVuZCB0YWJsZQogIAogIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhl Y3V0ZSBhIFB5dGhvbiBzY3JpcHQgZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1AQCAtMjE1NDIsNiAr MjE2NDAsMTQgQEAgYW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KK0BAIC0yMjUzMCw2ICsy MjU0NiwxNCBAQCBhbmQgdGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgogIEBjaW5kZXggcHl0aG9u IGFwaQogIEBjaW5kZXggcHJvZ3JhbW1pbmcgaW4gcHl0aG9uCiAgCkBAIC0xMDg0LDcgKzI2MCw3 IEBAIGluZGV4IDIwYjBiNjcuLjU3MDY4YzMgMTAwNjQ0CiAgQGNpbmRleCBweXRob24gcGFnaW5h dGlvbgogIEF0IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3MgQGNvZGV7 c3lzLnN0ZG91dH0gYW5kCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbyBiL2dk Yi9kb2MvZ2RiaW50LnRleGluZm8KLWluZGV4IDAyNmRjNTkuLmYwZjZlZTMgMTAwNjQ0CitpbmRl eCAyNjdhNmViLi40ZjE1OWI0IDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwog KysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogQEAgLTIxMDMsNiArMjEwMywxOCBAQCB0aW1l LCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9y IGluc3RhbmNlLApAQCAtMTIxMywxMSArMzg5LDExIEBAIGluZGV4IDAyNmRjNTkuLmYwZjZlZTMg MTAwNjQ0CiAgCiAgQG5vZGUgTGFuZ3VhZ2UgU3VwcG9ydAogZGlmZiAtLWdpdCBhL2dkYi9kb2Mv b2JzZXJ2ZXIudGV4aSBiL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQotaW5kZXggMjQyMzNjYi4uZWZi MjAxMyAxMDA2NDQKK2luZGV4IDY4MjdlZDguLmM2M2I5MDEgMTAwNjQ0CiAtLS0gYS9nZGIvZG9j L29ic2VydmVyLnRleGkKICsrKyBiL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQotQEAgLTIyNiw2ICsy MjYsMTEgQEAgQ2FsbGVkIGJlZm9yZSBhIHRvcC1sZXZlbCBwcm9tcHQgaXMgZGlzcGxheWVkLiAg QHZhcntjdXJyZW50X3Byb21wdH0gaXMKLSB0aGUgY3VycmVudCB0b3AtbGV2ZWwgcHJvbXB0Lgor QEAgLTIzMCw2ICsyMzAsMTEgQEAgdGhlIGN1cnJlbnQgdG9wLWxldmVsIHByb21wdC4KKyBWYXJp YWJsZSBnZGJfZGF0YWRpciBoYXMgYmVlbiBzZXQuICBUaGUgdmFsdWUgbWF5IG5vdCBuZWNlc3Nh cmlseSBjaGFuZ2UuCiAgQGVuZCBkZWZ0eXBlZnVuCiAgCiArQGMgQGRlZnR5cGVmdW4gdm9pZCBt YXJrX3VzZWQgKHZvaWQpCkBAIC0xMjI5LDEwICs0MDUsMTAgQEAgaW5kZXggMjQyMzNjYi4uZWZi MjAxMyAxMDA2NDQKICBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGludGVybmFsIHRlc3Rpbmcu ICBEbyBub3QgdXNlLiAgCiAgU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cC4KIGRp ZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwotaW5kZXggMjIy ZmNjMy4uOTMzODllMCAxMDA2NDQKK2luZGV4IGUwYWFmYzcuLjczODc3MTEgMTAwNjQ0CiAtLS0g YS9nZGIvZHdhcmYyZXhwci5jCiArKysgYi9nZGIvZHdhcmYyZXhwci5jCi1AQCAtMTQ0OSw2ICsx NDQ5LDE0IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0 eCwKK0BAIC0xNDU4LDYgKzE0NTgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dCAqY3R4LAogIAkgIH0KICAJICBicmVhazsKICAKQEAgLTEyNDgsMTYgKzQy NCwxNiBAQCBpbmRleCAyMjJmY2MzLi45MzM4OWUwIDEwMDY0NAogIAkgIGVycm9yIChfKCJVbmhh bmRsZWQgZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7CiAgCX0KIGRpZmYgLS1n aXQgYS9nZGIvZHdhcmYyZXhwci5oIGIvZ2RiL2R3YXJmMmV4cHIuaAotaW5kZXggZmQ3MGJmOS4u NTEyOWM0ZSAxMDA2NDQKK2luZGV4IGYzOWVmM2MuLjA2NmNiMTAgMTAwNjQ0CiAtLS0gYS9nZGIv ZHdhcmYyZXhwci5oCiArKysgYi9nZGIvZHdhcmYyZXhwci5oCi1AQCAtNzMsMTIgKzczLDEwIEBA IHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKLSAJCQkJICAgICAgaW50IGR3YXJmX3Jl ZywgQ09SRV9BRERSIGZiX29mZnNldCwKLSAJCQkJICAgICAgaW50IGRlcmVmX3NpemUpOworQEAg LTkxLDEyICs5MSw4IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKKyAgICAgIFRo aXMgY2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiAg Ki8KKyAgIENPUkVfQUREUiAoKmdldF9hZGRyX2luZGV4KSAodm9pZCAqYmF0b24sIHVuc2lnbmVk IGludCBpbmRleCk7CiAgCiAtI2lmIDAKLSAgIC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQuICAqLwot IAorLSAgLyogTm90IHlldCBpbXBsZW1lbnRlZC4gICovCistCiAgICAvKiBSZXR1cm4gdGhlIGBv YmplY3QgYWRkcmVzcycgZm9yIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLwogICAgQ09S RV9BRERSICgqZ2V0X29iamVjdF9hZGRyZXNzKSAodm9pZCAqYmF0b24pOwogLSNlbmRpZgpAQCAt MTI2NSwxMCArNDQxLDEwIEBAIGluZGV4IGZkNzBiZjkuLjUxMjljNGUgMTAwNjQ0CiAgCiAgLyog VGhlIGxvY2F0aW9uIG9mIGEgdmFsdWUuICAqLwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2Mu YyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQKK2luZGV4 IDhjOTdmMTkuLmE2ZjNlOWMgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsrKyBiL2dk Yi9kd2FyZjJsb2MuYwotQEAgLTE1Nyw2ICsxNTcsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRv bgorQEAgLTI3NCw2ICsyNzQsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgogIHsKICAgIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBl cl9jdTsKQEAgLTEyNzgsNyArNDU0LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQK ICB9OwogIAogIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Yy4gICovCi1AQCAtMjE2LDE2ICsyMTksMTQgQEAgc3RhdGljIHZvaWQKK0BAIC0zMzMsMTYgKzMz NiwxNCBAQCBzdGF0aWMgdm9pZAogIGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3lt Ym9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBwYywKICAJCQkgY29uc3QgZ2RiX2J5dGUgKipzdGFy dCwgc2l6ZV90ICpsZW5ndGgpCiAgewpAQCAtMTI5Nyw3ICs0NzMsNyBAQCBpbmRleCAzMTNkZjdi Li4zNWUwNzY2IDEwMDY0NAogICAgICB7CiAgICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2Jh dG9uICpzeW1iYXRvbjsKICAKLUBAIC0yMzgsMTAgKzIzOSwyMyBAQCBkd2FyZl9leHByX2ZyYW1l X2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCitAQCAtMzU1 LDEwICszNTYsMjMgQEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVjdCBzeW1ib2wgKmZy YW1lZnVuYywgQ09SRV9BRERSIHBjLAogICAgICAgIGVsc2UKICAJKmxlbmd0aCA9IDA7CiAgICAg IH0KQEAgLTEzMjIsNyArNDk4LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQKICB9 CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICBD b21wdXRlcyB0aGUgQ0ZBIGZvcgotQEAgLTMwOSw2ICszMjMsODUgQEAgZHdhcmZfZXhwcl9kd2Fy Zl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIHNpemVfdCBkaWVfb2Zmc2V0 KQorQEAgLTQyNiw2ICs0NDAsODUgQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0ICpjdHgsIGN1X29mZnNldCBkaWVfb2Zmc2V0KQogIAkJICAgICBjdHgt PmZ1bmNzLT5nZXRfZnJhbWVfcGMsIGN0eC0+YmF0b24pOwogIH0KICAKQEAgLTE0MDgsNyArNTg0 LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQKICAvKiBDYWxsYmFjayBmdW5jdGlv biBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHR5 cGUgKgotQEAgLTk5MCwxMCArMTA4MywxMiBAQCBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2Vu dHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCitAQCAtMTEwNSwxMCAr MTE5OCwxMiBAQCBkd2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3Qg ZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCiAgICBzYXZlZF9jdHguZ2RiYXJjaCA9IGN0eC0+ Z2RiYXJjaDsKICAgIHNhdmVkX2N0eC5hZGRyX3NpemUgPSBjdHgtPmFkZHJfc2l6ZTsKQEAgLTE0 MjEsNyArNTk3LDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAxMDA2NDQKICAgIGN0eC0+b2Zm c2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAoYmF0b25fbG9jYWwucGVyX2N1KTsKICAg IGN0eC0+YmF0b24gPSAmYmF0b25fbG9jYWw7CiAgCi1AQCAtMTAwMSwxMCArMTA5Niw5MiBAQCBk d2FyZl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9j b250ZXh0ICpjdHgsCitAQCAtMTExNiwxMCArMTIxMSw5NSBAQCBkd2FyZl9leHByX3B1c2hfZHdh cmZfcmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCiAg ICBjdHgtPmdkYmFyY2ggPSBzYXZlZF9jdHguZ2RiYXJjaDsKICAgIGN0eC0+YWRkcl9zaXplID0g c2F2ZWRfY3R4LmFkZHJfc2l6ZTsKQEAgLTE0MzAsNiArNjA2LDggQEAgaW5kZXggMzEzZGY3Yi4u MzVlMDc2NiAxMDA2NDQKICAgIGN0eC0+YmF0b24gPSBzYXZlZF9jdHguYmF0b247CiAgfQogIAor K3N0YXRpYyBDT1JFX0FERFIgZHdhcmZfZXhwcl9nZXRfYWRkcl9pbmRleCAodm9pZCAqYmF0b24s IHVuc2lnbmVkIGludCBpbmRleCk7CisrCiArLyogVmlydHVhbCBtZXRob2QgdGFibGUgZm9yIGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIGJlbG93LiAgKi8KICsKICtzdGF0aWMgY29uc3Qg c3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9mdW5jcyBkd2FyZl9leHByX2N0eF9mdW5jcyA9CkBA IC0xNDQzLDYgKzYyMSw3IEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiArICBkd2Fy Zl9leHByX2R3YXJmX2NhbGwsCiArICBkd2FyZl9leHByX2dldF9iYXNlX3R5cGUsCiArICBkd2Fy Zl9leHByX3B1c2hfZHdhcmZfcmVnX2VudHJ5X3ZhbHVlLAorKyAgZHdhcmZfZXhwcl9nZXRfYWRk cl9pbmRleCwKICsgIGR3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3MKICt9OwogKwpAQCAtMTUxMSwx MCArNjkwLDEwIEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiArICByZXR1cm4gcmV0 dmFsOwogK30KICsKLSAvKiBWQUxVRSBtdXN0IGJlIG9mIHR5cGUgbHZhbF9jb21wdXRlZCB3aXRo IGVudHJ5X2RhdGFfdmFsdWVfZnVuY3MuICBQZXJmb3JtCi0gICAgdGhlIGluZGlyZWN0IG1ldGhv ZCBvbiBpdCwgdGhhdCBpcyB1c2UgaXRzIHN0b3JlZCB0YXJnZXQgdmFsdWUsIHRoZSBzb2xlCi0g ICAgcHVycG9zZSBvZiBlbnRyeV9kYXRhX3ZhbHVlX2Z1bmNzLi4gICovCi1AQCAtMTkyNywyMSAr MjEwNCw2IEBAIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKHZvaWQpCisgLyogQ2FsbGJhY2sg ZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4KKyAgICBGZXRjaCB0aGUgYWRk cmVzcyBpbmRleGVkIGJ5IERXX09QX0dOVV9hZGRyX2luZGV4LiAgKi8KKyAKK0BAIC0yMDUzLDIy ICsyMjMzLDYgQEAgaW52YWxpZF9zeW50aGV0aWNfcG9pbnRlciAodm9pZCkKICAJICAgInJlZmVy ZW5jZWQgdmlhIHN5bnRoZXRpYyBwb2ludGVyIikpOwogIH0KICAKQEAgLTE1MzAsMTMgKzcwOSwx NCBAQCBpbmRleCAzMTNkZjdiLi4zNWUwNzY2IDEwMDY0NAogLSAgZHdhcmZfZXhwcl90bHNfYWRk cmVzcywKIC0gIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwKIC0gIGR3YXJmX2V4cHJfZ2V0X2Jhc2Vf dHlwZSwKLS0gIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUKKy0gIGR3YXJm X2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUsCistICBkd2FyZl9leHByX2dldF9hZGRy X2luZGV4CiAtfTsKIC0KICAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2NyaXB0aW9uLCBzdGFy dGluZyBhdCBEQVRBIGFuZCB3aXRoIGxlbmd0aAogICAgIFNJWkUsIHRvIGZpbmQgdGhlIGN1cnJl bnQgbG9jYXRpb24gb2YgdmFyaWFibGUgb2YgVFlQRSBpbiB0aGUKICAgICBjb250ZXh0IG9mIEZS QU1FLiAgQllURV9PRkZTRVQgaXMgYXBwbGllZCBhZnRlciB0aGUgY29udGVudHMgYXJlCi1AQCAt MTk1NCw3ICsyMTE2LDYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCitAQCAtMjA4MSw3ICsyMjQ1LDYg QEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCQkJICAgICAgIExPTkdFU1QgYnl0ZV9vZmZzZXQpCiAg ewogICAgc3RydWN0IHZhbHVlICpyZXR2YWw7CkBAIC0xNTQ0LDcgKzcyNCw3IEBAIGluZGV4IDMx M2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7 CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluLCAqdmFsdWVfY2hhaW47CiAgICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVyX2N1KTsKLUBAIC0x OTY2LDI5ICsyMTI3LDE4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTIwOTMsMjkgKzIyNTYs MTggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgICBpZiAoc2l6ZSA9PSAwKQogICAgICByZXR1cm4g YWxsb2NhdGVfb3B0aW1pemVkX291dF92YWx1ZSAodHlwZSk7CiAgCkBAIC0xNTc1LDcgKzc1NSw3 IEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiAgCSAgcmV0dmFsID0gYWxsb2NhdGVf dmFsdWUgKHR5cGUpOwogIAkgIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHJldHZhbCwg MCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKICAJICByZXR1cm4gcmV0dmFsOwotQEAgLTIwNTIsNiAr MjIwMiwxNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMTc5LDYgKzIzMzEsMTYgQEAgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCiAgCSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5ID0gZHdhcmZfZXhwcl9m ZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CiAgCiAgCSAgICBkb19jbGVhbnVwcyAodmFs dWVfY2hhaW4pOwpAQCAtMTU5Miw3ICs3NzIsNyBAQCBpbmRleCAzMTNkZjdiLi4zNWUwNzY2IDEw MDY0NAogIAkgICAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgCSAgICBW QUxVRV9MVkFMIChyZXR2YWwpID0gbHZhbF9tZW1vcnk7CiAgCSAgICBpZiAoaW5fc3RhY2tfbWVt b3J5KQotQEAgLTM4OTYsOCArNDA1Niw3IEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChz dHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTQwNDgs OCArNDIxMCw3IEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpz eW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCSAgICAgICBkbGJhdG9uLT5wZXJf Y3UpOwogIH0KICAKQEAgLTE2MDIsNyArNzgyLDcgQEAgaW5kZXggMzEzZGY3Yi4uMzVlMDc2NiAx MDA2NDQKICBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9m dW5jcyA9IHsKICAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZSwKICAgIGxvY2xpc3RfcmVhZF92YXJp YWJsZV9hdF9lbnRyeSwKLUBAIC0zOTA2LDYgKzQwNjUsNDggQEAgY29uc3Qgc3RydWN0IHN5bWJv bF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xpc3RfZnVuY3MgPSB7CitAQCAtNDA1OCw2ICs0MjE5 LDQ4IEBAIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NsaXN0X2Z1 bmNzID0gewogICAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYKICB9OwogIApAQCAtMTY0OCwx NCArODI4LDE0IEBAIGluZGV4IDMxM2RmN2IuLjM1ZTA3NjYgMTAwNjQ0CiArICBtaXNzaW5nX3Ry YWNlcG9pbnRfdmFyX3JlZgogK307CiArCi0gdm9pZAotIF9pbml0aWFsaXplX2R3YXJmMmxvYyAo dm9pZCkKLSB7CisgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBzaWxlbmNlIC1XbWlzc2luZy1w cm90b3R5cGVzLiAgKi8KKyBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXpl X2R3YXJmMmxvYzsKKyAKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYybG9jLmggYi9nZGIvZHdhcmYy bG9jLmgKLWluZGV4IGE3ZjgzNWYuLjUyYTQ0ZjEgMTAwNjQ0CitpbmRleCBlOWQwNmEzLi5iZmE2 Nzc2IDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmxvYy5oCiArKysgYi9nZGIvZHdhcmYybG9jLmgK LUBAIC0xMTgsNiArMTE4LDE1IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbgorQEAgLTEy Nyw2ICsxMjcsMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCiAgCiAgZXh0ZXJuIGNv bnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHByX2Z1bmNzOwogIGV4 dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5j czsKQEAgLTE2NzIsMTAgKzg1MiwxMCBAQCBpbmRleCBhN2Y4MzVmLi41MmE0NGYxIDEwMDY0NAog IC8qIENvbXBpbGUgYSBEV0FSRiBsb2NhdGlvbiBleHByZXNzaW9uIHRvIGFuIGFnZW50IGV4cHJl c3Npb24uCiAgICAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJy ZWFkLmMKLWluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CitpbmRleCA4ZGJjNTNlLi5iNWI3 ODEzIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwogKysrIGIvZ2RiL2R3YXJmMnJlYWQu YwotQEAgLTEyMDksNiArMTIwOSw5IEBAIHN0YXRpYyB2b2lkIGZpbGxfaW5fbG9jbGlzdF9iYXRv biAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTM0OCw2ICsxMzQ4LDkgQEAgc3RhdGljIHZv aWQgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAJCQkJICAg c3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbiwKICAJCQkJICAgc3RydWN0IGF0dHJp YnV0ZSAqYXR0cik7CiAgCkBAIC0xNjg1LDkgKzg2NSw5IEBAIGluZGV4IDBlZjBhNWIuLjgwZTVm ZTQgMTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1 Y3QgYXR0cmlidXRlICphdHRyLAogIAkJCQkJIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAJCQkJCSBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci1AQCAtMTI0MCw2ICsxMjQzLDkgQEAgc3RhdGljIHZvaWQg YWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsKK0BAIC0xMzgwLDYgKzEzODMsOSBAQCBzdGF0 aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAotIHN0YXRpYyB2b2lkIGZy ZWVfb25lX2NhY2hlZF9jb21wX3VuaXQgKHZvaWQgKik7Cisgc3RhdGljIHZvaWQgZnJlZV9vbmVf Y2FjaGVkX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKICtzdGF0 aWMgdm9pZCBmZXRjaF9kaWVfdHlwZV9hdHRycyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLAogKwkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKQEAgLTE2OTUsNyAr ODc1LDcgQEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2NDQKICBzdGF0aWMgc3RydWN0IHR5 cGUgKnNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0eXBlICosCiAgCQkJ CSAgc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKLUBAIC0xMjYzLDYgKzEyNjksOSBAQCBzdGF0aWMg c3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZzZXQgKHVuc2lnbmVkIGludCwKK0BAIC0x NDA1LDYgKzE0MTEsOSBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZz ZXQgKHNlY3Rfb2Zmc2V0LAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwogIApAQCAtMTcwNCw4 ICs4ODQsOCBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogKwogIHN0YXRpYyB2b2lk IGR3YXJmMl9yZWxlYXNlX3F1ZXVlICh2b2lkICpkdW1teSk7CiAgCi0gc3RhdGljIHZvaWQgcXVl dWVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpOwotQEAgLTgw MDEsNiArODAxMCwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgc3RhdGljIHZvaWQgcXVldWVfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCitAQCAtOTUyNiw2ICs5NTM1 LDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7 CiAgfQogIApAQCAtMTczNSw3ICs5MTUsNyBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0 NAogIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdfYXJyYXlfdHlwZSBE SUUgYW5kIHB1dCBpdCBpbgogICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAgRm9yIG5vdywgdGhp cyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCiAgICAgYXJyYXlzLiAgKi8KLUBAIC04MDE0 LDcgKzgwNDYsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC05NTM5LDcgKzk1NzEsNyBAQCByZWFkX2FycmF5X3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0 eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKICAgIHN0cnVjdCB0 eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAg LTE3NDQsNyArOTI0LDcgQEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2NDQKICAgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwogICAgY2hhciAqbmFtZTsKICAKLUBAIC04MDY3LDE3ICs4MDk5 LDE5IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQorQEAgLTk1OTIsMTcgKzk2MjQsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICB0eXBlID0gZWxlbWVu dF90eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9j b2xfbWFqb3IpCkBAIC0xNzc1LDcgKzk1NSw3IEBAIGluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAw NjQ0CiAgCiAgICAvKiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMg KGxpa2UgdGhleSBvY2N1ciBvbgogICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2Mg anVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAgLTg1NjEsMjkgKzg1OTUsMTE0 IEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCitAQCAtMTAwODYsMjkgKzEwMTIwLDExNCBAQCByZWFkX3RhZ19zdHJpbmdf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0 cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAg ICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMTgxOSw4ICs5OTksOCBAQCBpbmRleCAwZWYw YTViLi44MGU1ZmU0IDEwMDY0NAogKwkgICAgICBVTE9OR0VTVCB1bG9uZ2VzdDsKICsJICAgICAg Y29uc3QgZ2RiX2J5dGUgKmVuZDsKICsKLSsJICAgICAgZW5kID0gcmVhZF91bGViMTI4ICgmYmxr LT5kYXRhWzFdLCAmYmxrLT5kYXRhW2Jsay0+c2l6ZV0sCi0rCQkJCSAgJnVsb25nZXN0KTsKKysJ ICAgICAgZW5kID0gc2FmZV9yZWFkX3VsZWIxMjggKCZibGstPmRhdGFbMV0sICZibGstPmRhdGFb YmxrLT5zaXplXSwKKysJCQkJICAgICAgICZ1bG9uZ2VzdCk7CiArCSAgICAgIGlmIChlbmQgPT0g JmJsay0+ZGF0YVtibGstPnNpemVdKQogKwkJbGVuZ3RoX2JhdG9uID0gZHdhcmYyX2F0dHJfdG9f bG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwogKwkgICAgfQpAQCAtMTkwMyw0MyArMTA4Myw4NiBA QCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vf c3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9 IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBA IC04ODg3LDggKzkwMDYsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMDQxMiw3ICsxMDUzMSw3IEBAIHJlYWRf c3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBl OwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIExPTkdFU1QgbG93ID0gMDsKLS0gIExP TkdFU1QgaGlnaCA9IC0xOworLSAgTE9OR0VTVCBsb3csIGhpZ2g7CiArICBMT05HRVNUIGxvdzsK KyAgIGludCBsb3dfZGVmYXVsdF9pc192YWxpZDsKICAgIGNoYXIgKm5hbWU7CiAgICBMT05HRVNU IG5lZ2F0aXZlX21hc2s7CitAQCAtMTA0NjgsNDIgKzEwNTg3LDYgQEAgcmVhZF9zdWJyYW5nZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCQkJCSAg ICAgICItIERJRSBhdCAweCV4IFtpbiBtb2R1bGUgJXNdIiksCisgCSAgICAgICBkaWUtPm9mZnNl dC5zZWN0X29mZiwgY3UtPm9iamZpbGUtPm5hbWUpOwogIAotQEAgLTg5MDEsNTMgKzkwMTksMTI2 IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQotICAgaWYgKHJhbmdlX3R5cGUpCi0gICAgIHJldHVybiByYW5nZV90eXBlOwot IAotLSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorLSAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX3VwcGVyX2JvdW5kLCBjdSk7CistICBpZiAoYXR0cikKKy0g ICAgeworLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpIHx8IGlzX3JlZl9hdHRy IChhdHRyKSkKKy0gICAgICAgIHsKKy0gICAgICAgICAgLyogR0NDIGVuY29kZXMgYXJyYXlzIHdp dGggdW5zcGVjaWZpZWQgb3IgZHluYW1pYyBsZW5ndGgKKy0gICAgICAgICAgICAgd2l0aCBhIERX X0ZPUk1fYmxvY2sxIGF0dHJpYnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUuCistICAgICAg ICAgICAgIEZJWE1FOiBHREIgZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhhbmRsZSBkeW5hbWlj CistICAgICAgICAgICAgIGFycmF5cyBwcm9wZXJseSwgdHJlYXQgdGhlbSBhcyBhcnJheXMgd2l0 aCB1bnNwZWNpZmllZAorLSAgICAgICAgICAgICBsZW5ndGggZm9yIG5vdy4KKy0KKy0gICAgICAg ICAgICAgRklYTUU6IGppbWIvMjAwMy0wOS0yMjogR0RCIGRvZXMgbm90IHJlYWxseSBrbm93Cist ICAgICAgICAgICAgIGhvdyB0byBoYW5kbGUgYXJyYXlzIG9mIHVuc3BlY2lmaWVkIGxlbmd0aAor LSAgICAgICAgICAgICBlaXRoZXI7IHdlIGp1c3QgcmVwcmVzZW50IHRoZW0gYXMgemVyby1sZW5n dGgKKy0gICAgICAgICAgICAgYXJyYXlzLiAgQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIHVwcGVyIGJv dW5kIGdpdmVuCistICAgICAgICAgICAgIHRoZSBsb3dlciBib3VuZCB3ZSd2ZSBjb21wdXRlZCBh Ym92ZS4gICovCistICAgICAgICAgIGhpZ2ggPSBsb3cgLSAxOworLSAgICAgICAgfQorLSAgICAg IGVsc2UKKy0gICAgICAgIGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0 dHIsIDEpOworLSAgICB9CistICBlbHNlCiAtICAgIHsKLS0gICAgICAvKiBGT1JUUkFOIGltcGxp ZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLwotLSAgICAgIGxvdyA9IDE7 CistICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7CistICAg ICAgaWYgKGF0dHIpCistCXsKKy0JICBpbnQgY291bnQgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3Rh bnRfdmFsdWUgKGF0dHIsIDEpOworLQkgIGhpZ2ggPSBsb3cgKyBjb3VudCAtIDE7CistCX0KKy0g ICAgICBlbHNlCistCXsKKy0JICAvKiBVbnNwZWNpZmllZCBhcnJheSBsZW5ndGguICAqLworLQkg IGhpZ2ggPSBsb3cgLSAxOworLQl9CiAtICAgIH0KKy0KKyAgIC8qIER3YXJmLTIgc3BlY2lmaWNh dGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJhbmdlIHR5cGVzCisgICAgICB3 aXRob3V0IHNwZWNpZnlpbmcgYSBiYXNlIHR5cGUuCisgICAgICBJbiB0aGF0IGNhc2UsIHRoZSBi YXNlIHR5cGUgbXVzdCBiZSBzZXQgdG8gdGhlIHR5cGUgb2YKK0BAIC0xMDU0MiwyNCArMTA2MjUs MTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorIAl9CisgICAgIH0KKyAKKy0gIG5lZ2F0aXZlX21hc2sgPQogKyAgLyog TE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLwogKyAg cmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIDAsIC0xKTsK ICsgIFRZUEVfVU5TSUdORUQgKHJhbmdlX3R5cGUpID0gMDsKICsKICsgIG5lZ2F0aXZlX21hc2sg PSAKLSsgICAgKExPTkdFU1QpIC0xIDw8IChUWVBFX0xFTkdUSCAoYmFzZV90eXBlKSAqIFRBUkdF VF9DSEFSX0JJVCAtIDEpOwotKwotKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkg VFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cuICBHREIgQWRhCi0rICAgICBzdXBwb3J0cyBp bXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQor ICAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VUX0NI QVJfQklUIC0gMSk7CistICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAm IG5lZ2F0aXZlX21hc2spKQorLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKKy0gIGlmICghVFlQ RV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQorLSAgICBo aWdoIHw9IG5lZ2F0aXZlX21hc2s7CisgCistICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5 cGUgKE5VTEwsIGJhc2VfdHlwZSwgbG93LCBoaWdoKTsKKysgIC8qIEV4Y2x1ZGUgbGFuZ3VhZ2Vf YWRhIGZyb20gYW55IFRZUEVfRFlOQU1JQyBjb25zdHJ1Y3RzIGJlbG93LiAgR0RCIEFkYQorKyAg ICAgc3VwcG9ydHMgaW1wbGVtZW50cyB0aGUgZHluYW1pYyBib3VuZHMgaW4gYSBub24tRFdBUkYg d2F5IGFuZCB0aGUKICsgICAgIGV4aXN0aW5nIERXQVJGIGR5bmFtaWMgYm91bmRzIGFyZSBpbnZh bGlkLCBsZWFkaW5nIHRvIG1lbW9yeSBhY2Nlc3MKICsgICAgIGVycm9ycy4gICovCiAgCi0tICAv KiBGSVhNRTogRm9yIHZhcmlhYmxlIHNpemVkIGFycmF5cyBlaXRoZXIgb2YgdGhlc2UgY291bGQg YmUKLS0gICAgIGEgdmFyaWFibGUgcmF0aGVyIHRoYW4gYSBjb25zdGFudCB2YWx1ZS4gIFdlJ2xs IGFsbG93IGl0LAotLSAgICAgYnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBpdC4gICov Ci0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKLS0g IGlmIChhdHRyKQotLSAgICBsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0 dHIsIDApOworLSAgLyogTWFyayBhcnJheXMgd2l0aCBkeW5hbWljIGxlbmd0aCBhdCBsZWFzdCBh cyBhbiBhcnJheSBvZiB1bnNwZWNpZmllZAorLSAgICAgbGVuZ3RoLiAgR0RCIGNvdWxkIGNoZWNr IHRoZSBib3VuZGFyeSBidXQgYmVmb3JlIGl0IGdldHMgaW1wbGVtZW50ZWQgYXQKKy0gICAgIGxl YXN0IGFsbG93IGFjY2Vzc2luZyB0aGUgYXJyYXkgZWxlbWVudHMuICAqLworLSAgaWYgKGF0dHIg JiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKy0gICAgVFlQRV9ISUdIX0JPVU5EX1VOREVG SU5FRCAocmFuZ2VfdHlwZSkgPSAxOworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FU X2xvd2VyX2JvdW5kLCBjdSk7CiArICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0 dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCiArICAgIHsKICsgICAgICBUWVBF X1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdB UkZfQkxPQ0s7CkBAIC0xOTU0LDkgKzExNzcsNyBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEw MDY0NAogKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKICsgICAgICBzdHJ1Y3Qg ZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKICsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJn ZXRfbG9jX2F0dHI7Ci0gCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJf Ym91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQorKwogKyAgICAgIHRhcmdldF9kaWUgPSBmb2xsb3df ZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7CiArICAgICAgZ2RiX2Fzc2Vy dCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKICsgICAgICB0YXJnZXRfbG9j X2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRpb24sIHRhcmdldF9j dSk7CkBAIC0xOTcxLDI2ICsxMTkyLDEwIEBAIGluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0 CiArICAgICAgbG93ID0gMDsKICsgICAgfQogKyAgZWxzZQotICAgICB7Ci0tICAgICAgaWYgKGF0 dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwgaXNfcmVmX2F0dHIgKGF0dHIpKQotLSAgICAgICAg ewotLSAgICAgICAgICAvKiBHQ0MgZW5jb2RlcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZCBvciBk eW5hbWljIGxlbmd0aAotLSAgICAgICAgICAgICB3aXRoIGEgRFdfRk9STV9ibG9jazEgYXR0cmli dXRlIG9yIGEgcmVmZXJlbmNlIGF0dHJpYnV0ZS4KLS0gICAgICAgICAgICAgRklYTUU6IEdEQiBk b2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIGR5bmFtaWMKLS0gICAgICAgICAgICAgYXJy YXlzIHByb3Blcmx5LCB0cmVhdCB0aGVtIGFzIGFycmF5cyB3aXRoIHVuc3BlY2lmaWVkCi0tICAg ICAgICAgICAgIGxlbmd0aCBmb3Igbm93LgotLQotLSAgICAgICAgICAgICBGSVhNRTogamltYi8y MDAzLTA5LTIyOiBHREIgZG9lcyBub3QgcmVhbGx5IGtub3cKLS0gICAgICAgICAgICAgaG93IHRv IGhhbmRsZSBhcnJheXMgb2YgdW5zcGVjaWZpZWQgbGVuZ3RoCi0tICAgICAgICAgICAgIGVpdGhl cjsgd2UganVzdCByZXByZXNlbnQgdGhlbSBhcyB6ZXJvLWxlbmd0aAotLSAgICAgICAgICAgICBh cnJheXMuICBDaG9vc2UgYW4gYXBwcm9wcmlhdGUgdXBwZXIgYm91bmQgZ2l2ZW4KLS0gICAgICAg ICAgICAgdGhlIGxvd2VyIGJvdW5kIHdlJ3ZlIGNvbXB1dGVkIGFib3ZlLiAgKi8KLS0gICAgICAg ICAgaGlnaCA9IGxvdyAtIDE7Ci0tICAgICAgICB9CisrICAgIHsKICsgICAgICBpZiAoYXR0ciAm JiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQogKwlsb3cgPSBkd2FyZjJfZ2V0X2F0dHJf Y29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwotICAgICAgIGVsc2UKLS0gICAgICAgIGhpZ2ggPSBk d2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOworKyAgICAgIGVsc2UKICsJ ewogKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKICsJICAgIHsKQEAg LTIwMDksMjQgKzEyMTQsMjIgQEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2NDQKICsgICAg ICBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkgPSBsb3c7CiArICAgICAgaWYgKGxvdyA+PSAw KQogKwlUWVBFX1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDE7Ci0gICAgIH0KLS0gIGVsc2UKLSsK KysgICAgfQorIAorLSAgLyogQWRhIGV4cGVjdHMgYW4gZW1wdHkgYXJyYXkgb24gbm8gYm91bmRh cnkgYXR0cmlidXRlcy4gICovCistICBpZiAoYXR0ciA9PSBOVUxMICYmIGN1LT5sYW5ndWFnZSAh PSBsYW5ndWFnZV9hZGEpCistICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5 cGUpID0gMTsKICsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwg Y3UpOwogKyAgaWYgKCFhdHRyIHx8ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0 cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKQogKwkJJiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCi0g ICAgIHsKLSAgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsK LS0gICAgICBpZiAoYXR0cikKLS0JewotLQkgIGludCBjb3VudCA9IGR3YXJmMl9nZXRfYXR0cl9j b25zdGFudF92YWx1ZSAoYXR0ciwgMSk7Ci0tCSAgaGlnaCA9IGxvdyArIGNvdW50IC0gMTsKKysg ICAgeworKyAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOwog KyAgICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5lZWRsZXNzbHkgaW5lZmZlY3Rp dmUgaW4gY2hlY2tfdHlwZWRlZi4gICovCiArICAgICAgaWYgKGF0dHIgJiYgKGF0dHJfZm9ybV9p c19ibG9jayAoYXR0cikgfHwgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkpCiArICAgICAg CXsKICsJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKHJhbmdlX3R5cGUpID0gMTsK ICsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSAJfQorKwl9CiArICAgICAgLyog UGFzcyBpdCBub3cgYXMgdGhlIHJlZ3VsYXIgRFdfQVRfdXBwZXJfYm91bmQuICAqLwogKyAgICB9 CiArCkBAIC0yMDYwLDMyICsxMjYzLDE4IEBAIGluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0 CiArCiArICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKICsJ aGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0gICAgICAg ZWxzZQotIAl7Ci0tCSAgLyogVW5zcGVjaWZpZWQgYXJyYXkgbGVuZ3RoLiAgKi8KKysgICAgICBl bHNlCisrCXsKICsJICAvKiBBZGEgZXhwZWN0cyBhbiBlbXB0eSBhcnJheSBvbiBubyBib3VuZGFy eSBhdHRyaWJ1dGVzLiAgKi8KICsJICBpZiAoY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkK ICsJICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSAJICBo aWdoID0gbG93IC0gMTsKLSAJfQorKwkgIGhpZ2ggPSBsb3cgLSAxOworKwl9CiArICAgICAgaWYg KCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCiAr CWhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKICsgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5 cGUpID0gaGlnaDsKLSAgICAgfQotIAotICAgLyogRHdhcmYtMiBzcGVjaWZpY2F0aW9ucyBleHBs aWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMKLUBAIC04OTg4LDI0ICs5MTc5 LDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotIAl9Ci0gICAgIH0KLSAKLS0gIG5lZ2F0aXZlX21hc2sgPQotLSAgICAo TE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VUX0NIQVJfQklU IC0gMSk7Ci0tICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0 aXZlX21hc2spKQotLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKLS0gIGlmICghVFlQRV9VTlNJ R05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQotLSAgICBoaWdoIHw9 IG5lZ2F0aXZlX21hc2s7Ci0tCi0tICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5V TEwsIGJhc2VfdHlwZSwgbG93LCBoaWdoKTsKKysgICAgfQorKwogKyAgLyogRFdfQVRfYml0X3N0 cmlkZSBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgYXMgd2UgY291bnQgaW4gYnl0ZXMuICAqLwog KyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc3RyaWRlLCBjdSk7CiArICBp ZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBs YW5ndWFnZV9hZGEpCkBAIC0yMTAxLDE5ICsxMjkwLDExIEBAIGluZGV4IDBlZjBhNWIuLjgwZTVm ZTQgMTAwNjQ0CiArICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOwogKyAgICAgIHN0 cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OwogKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUg KnRhcmdldF9sb2NfYXR0cjsKLSAKLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGggZHluYW1pYyBsZW5n dGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAgIGxlbmd0aC4gIEdE QiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVudGVk IGF0Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVsZW1lbnRzLiAgKi8K LS0gIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0tICAgIFRZUEVfSElH SF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKKysKICsgICAgICB0YXJnZXRfZGll ID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOwogKyAgICAg IGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7CiArICAgICAg dGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9u LCB0YXJnZXRfY3UpOwotIAotLSAgLyogQWRhIGV4cGVjdHMgYW4gZW1wdHkgYXJyYXkgb24gbm8g Ym91bmRhcnkgYXR0cmlidXRlcy4gICovCi0tICBpZiAoYXR0ciA9PSBOVUxMICYmIGN1LT5sYW5n dWFnZSAhPSBsYW5ndWFnZV9hZGEpCi0tICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJh bmdlX3R5cGUpID0gMTsKKysKICsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5i eXRlX3N0cmlkZS5raW5kCiArICAgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElT VDsKICsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3 YXJmX2xvY2xpc3QubG9jbGlzdApAQCAtMjEzMiw3ICsxMzEzLDcgQEAgaW5kZXggMGVmMGE1Yi4u ODBlNWZlNCAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CiAgICBp ZiAobmFtZSkKLUBAIC0xMTU0NSwxMCArMTE3NTMsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAo c3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTEzMjU3LDEw ICsxMzQ3OSwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRy LCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJl Z2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJl YWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQKICAgICAgIG5vdCBi ZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1h bmNlCkBAIC0yMTQ3LDcgKzEzMjgsNyBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAog IAogICAgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPT0gJmR3YXJmMl9sb2NsaXN0X2Z1 bmNzKQogICAgICBjdS0+aGFzX2xvY2xpc3QgPSAxOwotQEAgLTExNTg5LDYgKzExNzk5LDggQEAg bmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTEzMzAxLDYgKzEzNTI1LDggQEAgbmV3X3N5bWJv bF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1LAogICAgICAgIGVsc2UKICAJc3ltID0gT0JTVEFDS19aQUxMT0MgKCZvYmpm aWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBzeW1ib2wpOwogICAgICAgIE9CSlNUQVQgKG9i amZpbGUsIG5fc3ltcysrKTsKQEAgLTIxNTYsNyArMTMzNyw3IEBAIGluZGV4IDBlZjBhNWIuLjgw ZTVmZTQgMTAwNjQ0CiAgCiAgICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0 aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KICAgICAgICBTWU1CT0xfU0VU X0xBTkdVQUdFIChzeW0sIGN1LT5sYW5ndWFnZSk7Ci1AQCAtMTIzNTQsNiArMTI1NjYsOSBAQCBy ZWFkX3R5cGVfZGllXzEgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC0xNDA3NSw2ICsxNDMwMSw5IEBAIHJlYWRfdHlwZV9kaWVfMSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIGJyZWFrOwogICAgICB9CiAg CkBAIC0yMTY2LDggKzEzNDcsOCBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogICAg cmV0dXJuIHRoaXNfdHlwZTsKICB9CiAgCi1AQCAtMTU1OTAsNjIgKzE1ODA1LDEwMCBAQCBmaWxs X2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotICAgYmF0b24tPmJhc2Vf YWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7CitAQCAtMTY0NzIsNjIgKzE2NzAxLDEwMCBAQCBm aWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorICAgYmF0b24tPmZy b21fZHdvID0gY3UtPmR3b191bml0ICE9IE5VTEw7CiAgfQogIAogLXN0YXRpYyB2b2lkCkBAIC0y MTc4LDI2ICsxMzU5LDE2IEBAIGluZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiArCiArc3Rh dGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqCiArZHdhcmYyX2F0dHJfdG9fbG9jZXhw cl9iYXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9iamZp bGU7CisreworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUt Pm9iamZpbGU7CiArICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJhdG9uOwotIAotLSAg aWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKLS0gICAgICAvKiAiLmRlYnVn X2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUK LS0JIHRoZSBzZWN0aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGlu IHRoZQotLQkgb3RoZXIgYnJhbmNoLiAgKi8KLS0gICAgICAmJiBEV19VTlNORCAoYXR0cikgPCBk d2FyZjJfc2VjdGlvbl9zaXplIChvYmpmaWxlLAotLQkJCQkJCSZkd2FyZjJfcGVyX29iamZpbGUt PmxvYykpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9u OworKwogKyAgZ2RiX2Fzc2VydCAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSk7CiArCiArICBi YXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAo KmJhdG9uKSk7CiArICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKICsgIGdkYl9hc3NlcnQg KGJhdG9uLT5wZXJfY3UpOwotIAotLSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjaywKLS0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2Ns aXN0X2JhdG9uKSk7CisrCiArICAvKiBOb3RlIHRoYXQgd2UncmUganVzdCBjb3B5aW5nIHRoZSBi bG9jaydzIGRhdGEgcG9pbnRlcgogKyAgICAgaGVyZSwgbm90IHRoZSBhY3R1YWwgZGF0YS4gIFdl J3JlIHN0aWxsIHBvaW50aW5nIGludG8gdGhlCiArICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mg b2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKQEAgLTIyMDYsMTggKzEzNzcsMTUg QEAgaW5kZXggMGVmMGE1Yi4uODBlNWZlNCAxMDA2NDQKICsgIGJhdG9uLT5zaXplID0gRFdfQkxP Q0sgKGF0dHIpLT5zaXplOwogKyAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7 CiArICBnZGJfYXNzZXJ0IChiYXRvbi0+c2l6ZSA9PSAwIHx8IGJhdG9uLT5kYXRhICE9IE5VTEwp OwotIAotLSAgICAgIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoY3UsIGJhdG9uLCBhdHRyKTsKKysK ICsgIHJldHVybiBiYXRvbjsKICt9Ci0gCi0tICAgICAgaWYgKGN1LT5iYXNlX2tub3duID09IDAp Ci0tCWNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLS0JCSAgIF8oIkxvY2F0aW9uIGxp c3QgdXNlZCB3aXRob3V0ICIKLS0JCSAgICAgInNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVz cy4iKSk7CisrCiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqCiArZHdhcmYy X2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi0reworIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5vYmpmaWxlOworICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNl Y3Rpb24gPSBjdV9kZWJ1Z19sb2Nfc2VjdGlvbiAoY3UpOwogKyAgc3RydWN0IGR3YXJmMl9sb2Ns aXN0X2JhdG9uICpiYXRvbjsKICsKICsgIC8qIERXX0FUX2xvY2F0aW9uIG9mIHRoZSByZWZlcmVu Y2VkIERJRSBtYXkgYmUgbWlzc2luZyBpZiB0aGUgcmVmZXJlbmNlZApAQCAtMjIyNSwyNyArMTM5 MywzNiBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0IDEwMDY0NAogKyAgaWYgKCFhdHRyKQogKyAg ICByZXR1cm4gTlVMTDsKICsKLSsgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+b2JqZmlsZSwKLSsJCSAgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwotKwor KyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0 aW9uKTsKKyAKKy0gIGlmIChhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCiArICBp ZiAoIShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCi0rCS8qICIuZGVidWdfbG9j IiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotKwkg ICB0aGUgc2VjdGlvbi4gIElmIHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNvbXBsYWludCBpbiB0 aGUKLSsJICAgb3RoZXIgYnJhbmNoLiAgKi8KLSsJJiYgRFdfVU5TTkQgKGF0dHIpIDwgZHdhcmYy X3NlY3Rpb25fc2l6ZSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLAotKwkJCQkJCSAgJmR3 YXJmMl9wZXJfb2JqZmlsZS0+bG9jKSkpCisgICAgICAgLyogLmRlYnVnX2xvY3ssLmR3b30gbWF5 IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUKKyAJIHRoZSBz ZWN0aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGluIHRoZQorIAkg b3RoZXIgYnJhbmNoLiAgKi8KKy0gICAgICAmJiBEV19VTlNORCAoYXR0cikgPCBkd2FyZjJfc2Vj dGlvbl9zaXplIChvYmpmaWxlLCBzZWN0aW9uKSkKKy0gICAgeworLSAgICAgIHN0cnVjdCBkd2Fy ZjJfbG9jbGlzdF9iYXRvbiAqYmF0b247CisrICAgICAgJiYgRFdfVU5TTkQgKGF0dHIpIDwgZHdh cmYyX3NlY3Rpb25fc2l6ZSAob2JqZmlsZSwgc2VjdGlvbikpKQogKyAgICByZXR1cm4gTlVMTDsK LSsKLSsgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3Rh Y2ssCisgCistICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9v YnN0YWNrLAorLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsK KysgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKICsJ CQkgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKLSsKKyAKKy0gICAgICBm aWxsX2luX2xvY2xpc3RfYmF0b24gKGN1LCBiYXRvbiwgYXR0cik7CiArICBmaWxsX2luX2xvY2xp c3RfYmF0b24gKGN1LCBiYXRvbiwgYXR0cik7Ci0rCisgCistICAgICAgaWYgKGN1LT5iYXNlX2tu b3duID09IDApCistCWNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKy0JCSAgIF8oIkxv Y2F0aW9uIGxpc3QgdXNlZCB3aXRob3V0ICIKKy0JCSAgICAgInNwZWNpZnlpbmcgdGhlIENVIGJh c2UgYWRkcmVzcy4iKSk7CiArICBpZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkKICsgICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogKwkgICAgICAgXygiTG9jYXRpb24gbGlzdCB1c2Vk IHdpdGhvdXQgIgogKwkJICJzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOwotIAor KwogKyAgcmV0dXJuIGJhdG9uOwogK30KICsKQEAgLTIyNTYsNyArMTQzMyw3IEBAIGluZGV4IDBl ZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiArCQkJICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICt7 CiArICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3RfYmF0b247Ci0rCisgCiAr ICBsb2NsaXN0X2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoYXR0ciwgY3Up OwogKyAgaWYgKGxvY2xpc3RfYmF0b24pCiArICAgIHsKQEAgLTIzMDksOCArMTQ4Niw4IEBAIGlu ZGV4IDBlZjBhNWIuLjgwZTVmZTQgMTAwNjQ0CiAgICAgIH0KICB9CiAgCi1AQCAtMTYwMDMsNiAr MTYyNTYsMjUgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29u c3Qgdm9pZCAqaXRlbV9yaHMpCi0gICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0ID09IG9mc19yaHMt Pm9mZnNldDsKK0BAIC0xNjg5NSw2ICsxNzE2MiwyNSBAQCBwZXJfY3Vfb2Zmc2V0X2FuZF90eXBl X2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCisgCSAgJiYg b2ZzX2xocy0+b2Zmc2V0LnNlY3Rfb2ZmID09IG9mc19yaHMtPm9mZnNldC5zZWN0X29mZik7CiAg fQogIAogKy8qIEZpbGwgaW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2FibGUgZm9yIHR5cGUg RElFcy4gICovCkBAIC0yMzM1LDM1NiArMTUxMiwxNyBAQCBpbmRleCAwZWYwYTViLi44MGU1ZmU0 IDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBT YXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5p ZW5jZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTYwMjgsNiArMTYzMDAsOCBAQCBzZXRfZGllX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCitAQCAtMTY5MTksNiArMTcyMDUsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisg ICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7CiAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwotICAgaHRhYl90ICp0eXBlX2hh c2hfcHRyOwogIAogKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwog ICAgLyogRm9yIEFkYSB0eXBlcywgbWFrZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0 YSBpcyBhbHdheXMKICAgICAgIGluaXRpYWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhl cmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJlCiAgICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNv LCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNpZmljIGFyZWEgaXMKLWRpZmYgLS1naXQgYS9nZGIvZWxm cmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwotaW5kZXggZGRhZTA5OS4uYWVhNDQzZiAxMDA2NDQKLS0t LSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0zNiw2ICszNiw4IEBA Ci0gI2luY2x1ZGUgImRlbWFuZ2xlLmgiCi0gI2luY2x1ZGUgInBzeW1wcml2LmgiCi0gI2luY2x1 ZGUgImZpbGVuYW1lcy5oIgotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0rI2luY2x1ZGUgImFy Y2gtdXRpbHMuaCIKLSAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKLSAjaW5jbHVkZSAidmFsdWUuaCIK LSAjaW5jbHVkZSAiaW5mY2FsbC5oIgotQEAgLTYwLDYgKzYyLDIxIEBAIHN0cnVjdCBlbGZpbmZv Ci0gICAgIGFzZWN0aW9uICptZGVidWdzZWN0OwkvKiBTZWN0aW9uIHBvaW50ZXIgZm9yIC5tZGVi dWcgc2VjdGlvbiAqLwotICAgfTsKLSAKLSsvKiBQZXItb2JqZmlsZSBkYXRhIGZvciBTeXN0ZW1U YXAgcHJvYmUgaW5mby4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEg KnN0YXBfcHJvYmVfa2V5ID0gTlVMTDsKLSsKLSsvKiBQZXItb2JqZmlsZSBkYXRhIGFib3V0IFN5 c3RlbVRhcCBwcm9iZXMuICAqLwotKwotK3N0cnVjdCBzdGFwX3Byb2JlX3Blcl9vYmpmaWxlCi0r ICB7Ci0rICAgIC8qIFRoZSBudW1iZXIgb2YgcHJvYmVzIGluIHRoaXMgb2JqZmlsZS4gICovCi0r ICAgIGludCBzdGFwX251bV9wcm9iZXM7Ci0rCi0rICAgIC8qIFRoZSBwcm9iZXMgdGhlbXNlbHZl cy4gICovCi0rICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7Ci0rICB9OwotKwotIHN0YXRp YyB2b2lkIGZyZWVfZWxmaW5mbyAodm9pZCAqKTsKLSAKLSAvKiBNaW5pbWFsIHN5bWJvbHMgbG9j YXRlZCBhdCB0aGUgR09UIGVudHJpZXMgZm9yIC5wbHQgLSB0aGF0IGlzIHRoZSByZWFsCi1AQCAt MTU3Niw3ICsxNTkzLDI3MCBAQCBlbGZzdGFiX29mZnNldF9zZWN0aW9ucyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0KQotICAgICBjb21wbGFpbnQg KCZzeW1maWxlX2NvbXBsYWludHMsCi0gCSAgICAgICBfKCJlbGYvc3RhYiBzZWN0aW9uIGluZm9y bWF0aW9uIG1pc3NpbmcgZm9yICVzIiksIGZpbGVuYW1lKTsKLSB9Ci0rCi0rLyogSGVscGVyIGZ1 bmN0aW9uIHRoYXQgcGFyc2VzIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYQotKyAgIFN5 c3RlbVRhcCdzIHByb2JlLiAgQmFzaWNhbGx5LCB0aGUgaW5mb3JtYXRpb24gY29uc2lzdHMgaW46 Ci0rCi0rICAgLSBQcm9iZSdzIFBDIGFkZHJlc3M7Ci0rICAgLSBMaW5rLXRpbWUgc2VjdGlvbiBh ZGRyZXNzIG9mIGAuc3RhcHNkdC5iYXNlJyBzZWN0aW9uOwotKyAgIC0gTGluay10aW1lIGFkZHJl c3Mgb2YgdGhlIHNlbWFwaG9yZSB2YXJpYWJsZSwgb3IgWkVSTyBpZiB0aGUKLSsgICAgIHByb2Jl IGRvZXNuJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIHNlbWFwaG9yZTsKLSsgICAtIFByb2JlJ3MgcHJv dmlkZXIgbmFtZTsKLSsgICAtIFByb2JlJ3MgbmFtZTsKLSsgICAtIFByb2JlJ3MgYXJndW1lbnQg Zm9ybWF0LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2hhbmRsZV9wcm9iZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHN0cnVjdCBzZHRfbm90ZSAqZWwsCi0rCSAgICAgIHN0cnVjdCBzdGFwX3By b2JlICpyZXQsIENPUkVfQUREUiBiYXNlKQotK3sKLSsgIGJmZCAqYWJmZCA9IG9iamZpbGUtPm9i ZmQ7Ci0rICBpbnQgc2l6ZSA9IGJmZF9nZXRfYXJjaF9zaXplIChhYmZkKSAvIDg7Ci0rICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKyAgc3Ry dWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRh X3B0cjsKLSsgIENPUkVfQUREUiBiYXNlX3JlZjsKLSsKLSsgIHJldC0+Z2RiYXJjaCA9IGdkYmFy Y2g7Ci0rCi0rICAvKiBQcm92aWRlciBhbmQgdGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KLSsg IHJldC0+cHJvdmlkZXIgPSAoY29uc3QgY2hhciAqKSAmZWwtPmRhdGFbMyAqIHNpemVdOwotKyAg cmV0LT5uYW1lID0gbWVtY2hyIChyZXQtPnByb3ZpZGVyLCAnXDAnLAotKwkJICAgICAgKHVuc2ln bmVkIGxvbmcgKikgZWwtPmRhdGEKLSsJCSAgICAgICsgZWwtPnNpemUgLSAodW5zaWduZWQgbG9u ZyAqKSByZXQtPnByb3ZpZGVyKTsKLSsgIC8qIE1ha2luZyBzdXJlIHRoZXJlIGlzIGEgbmFtZS4g ICovCi0rICBpZiAoIXJldC0+bmFtZSkKLSsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFp bnRzLCBfKCJjb3JydXB0IHByb2JlIHdoZW4gcmVhZGluZyBgJXMnIiksCi0rCSAgICAgICBvYmpm aWxlLT5uYW1lKTsKLSsgIGVsc2UKLSsgICAgKytyZXQtPm5hbWU7Ci0rCi0rICAvKiBSZXRyaWV2 aW5nIHRoZSBwcm9iZSdzIGFkZHJlc3MuICAqLwotKyAgcmV0LT5hZGRyZXNzID0gZXh0cmFjdF90 eXBlZF9hZGRyZXNzICgoY29uc3QgZ2RiX2J5dGUgKikgJmVsLT5kYXRhWzBdLAotKwkJCQkJcHRy X3R5cGUpOwotKyAgLyogTGluay10aW1lIHNoX2FkZHIgb2YgYC5zdGFwc2R0LmJhc2UnIHNlY3Rp b24uICAqLwotKyAgYmFzZV9yZWYgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKChjb25zdCBnZGJf Ynl0ZSAqKSAmZWwtPmRhdGFbc2l6ZV0sCi0rCQkJCSAgICBwdHJfdHlwZSk7Ci0rICAvKiBTZW1h cGhvcmUgYWRkcmVzcy4gICovCi0rICByZXQtPnNlbV9hZGRyID0gZXh0cmFjdF90eXBlZF9hZGRy ZXNzICgoY29uc3QgZ2RiX2J5dGUgKikgJmVsLT5kYXRhWzIgKiBzaXplXSwKLSsJCQkJCSBwdHJf dHlwZSk7Ci0rCi0rICByZXQtPmFkZHJlc3MgKz0gKEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9u X29mZnNldHMsCi0rCQkJICAgICBTRUNUX09GRl9URVhUIChvYmpmaWxlKSkKLSsJCSAgICsgYmFz ZSAtIGJhc2VfcmVmKTsKLSsgIGlmIChyZXQtPnNlbV9hZGRyKQotKyAgICByZXQtPnNlbV9hZGRy ICs9IChBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLAotKwkJCQlTRUNUX09GRl9E QVRBIChvYmpmaWxlKSkKLSsJCSAgICAgICsgYmFzZSAtIGJhc2VfcmVmKTsKLSsKLSsgIC8qIEFy Z3VtZW50cy4gIFdlIGNhbiBvbmx5IGV4dHJhY3QgdGhlIGFyZ3VtZW50IGZvcm1hdCBpZiB0aGVy ZSBpcyBhIHZhbGlkCi0rICAgICBuYW1lIGZvciB0aGlzIHByb2JlLiAgKi8KLSsgIGlmIChyZXQt Pm5hbWUpCi0rICAgIHsKLSsgICAgICByZXQtPmFyZ3MgPSBtZW1jaHIgKHJldC0+bmFtZSwgJ1ww JywKLSsJCQkgICh1bnNpZ25lZCBsb25nICopIGVsLT5kYXRhCi0rCQkJICArIGVsLT5zaXplIC0g KHVuc2lnbmVkIGxvbmcgKikgcmV0LT5uYW1lKTsKLSsKLSsgICAgICBpZiAocmV0LT5hcmdzICE9 IE5VTEwpCi0rCSsrcmV0LT5hcmdzOwotKyAgICAgIGlmIChyZXQtPmFyZ3MgPT0gTlVMTAotKwkg IHx8IChtZW1jaHIgKHJldC0+YXJncywgJ1wwJywgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEK LSsJCSAgICAgICsgZWwtPnNpemUgLSAodW5zaWduZWQgbG9uZyAqKSByZXQtPm5hbWUpCi0rCSAg ICAgICE9IGVsLT5kYXRhICsgZWwtPnNpemUgLSAxKSkKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9j b21wbGFpbnRzLCBfKCJjb3JydXB0IHByb2JlIHdoZW4gcmVhZGluZyBgJXMnIiksCi0rCQkgICBv YmpmaWxlLT5uYW1lKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXQtPmFyZ3MgPSBOVUxMOwot K30KLSsKLSsvKiBUaGUgbmFtZSBvZiB0aGUgU3lzdGVtVGFwIHNlY3Rpb24gd2hlcmUgd2Ugd2ls bCBmaW5kIGluZm9ybWF0aW9uIGFib3V0Ci0rICAgdGhlIHByb2Jlcy4gICovCi0rCi0rI2RlZmlu ZSBTVEFQX0JBU0VfU0VDVElPTl9OQU1FICIuc3RhcHNkdC5iYXNlIgotKwotKy8qIEhlbHBlciBm dW5jdGlvbiB3aGljaCB0cmllcyB0byBmaW5kIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFN5c3Rl bVRhcAotKyAgIGJhc2Ugc2VjdGlvbiBuYW1lZCBTVEFQX0JBU0VfU0VDVElPTl9OQU1FLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK2dldF9iYXNlX2FkZHJlc3NfMSAoYmZkICphYmZkLCBhc2VjdGlv biAqc2VjdCwgdm9pZCAqb2JqKQotK3sKLSsgIGJmZF92bWEgKmJhc2UgPSAoYmZkX3ZtYSAqKSBv Ymo7Ci0rCi0rICBpZiAoKmJhc2UgPT0gKGJmZF92bWEpIC0xCi0rICAgICAgJiYgKHNlY3QtPmZs YWdzICYgKFNFQ19EQVRBIHwgU0VDX0FMTE9DIHwgU0VDX0hBU19DT05URU5UUykpCi0rICAgICAg JiYgc2VjdC0+bmFtZSAmJiAhc3RyY21wIChzZWN0LT5uYW1lLCBTVEFQX0JBU0VfU0VDVElPTl9O QU1FKSkKLSsgICAgKmJhc2UgPSBzZWN0LT52bWE7Ci0rfQotKwotKy8qIEhlbHBlciBmdW5jdGlv biB3aGljaCBpdGVyYXRlcyBvdmVyIGV2ZXJ5IHNlY3Rpb24gaW4gdGhlIEJGRCBmaWxlLAotKyAg IHRyeWluZyB0byBmaW5kIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlIFN5c3RlbVRhcCBiYXNlIHNl Y3Rpb24uCi0rICAgUmV0dXJucyB0aGUgc2VjdGlvbiBhZGRyZXNzIGlmIGZvdW5kLCBvciAtMSBv dGhlcndpc2UuICAqLwotKwotK3N0YXRpYyBiZmRfdm1hCi0rZ2V0X2Jhc2VfYWRkcmVzcyAoYmZk ICpvYmZkKQotK3sKLSsgIGJmZF92bWEgYmFzZSA9IChiZmRfdm1hKSAtMTsKLSsKLSsgIGJmZF9t YXBfb3Zlcl9zZWN0aW9ucyAob2JmZCwgZ2V0X2Jhc2VfYWRkcmVzc18xLCAodm9pZCAqKSAmYmFz ZSk7Ci0rCi0rICByZXR1cm4gYmFzZTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YgYHN5 bV9nZXRfcHJvYmVzJywgYXMgZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAqLwotKwotK3N0YXRp YyBzdHJ1Y3Qgc3RhcF9wcm9iZSAqCi0rZWxmX2dldF9wcm9iZXMgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBpbnQgKm51bV9wcm9iZXMpCi0rewotKyAgc3RydWN0IHN0YXBfcHJvYmUgKnJldCA9 IE5VTEw7Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqcHJvYmVzX3Blcl9vYmpm aWxlOwotKwotKyAgLyogSW5pdGlhbGx5LCBubyBwcm9iZXMuICAqLwotKyAgKm51bV9wcm9iZXMg PSAwOwotKwotKyAgLyogSGF2ZSB3ZSBwYXJzZWQgdGhpcyBvYmpmaWxlJ3MgcHJvYmVzIGFscmVh ZHk/ICAqLwotKyAgcHJvYmVzX3Blcl9vYmpmaWxlCi0rICAgID0gKHN0cnVjdCBzdGFwX3Byb2Jl X3Blcl9vYmpmaWxlICopIG9iamZpbGVfZGF0YSAob2JqZmlsZSwKLSsJCQkJCQkgICAgICBzdGFw X3Byb2JlX2tleSk7Ci0rCi0rICBpZiAoIXByb2Jlc19wZXJfb2JqZmlsZSkKLSsgICAgewotKyAg ICAgIC8qIElmIHdlIGFyZSBoZXJlLCB0aGVuIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UgYXJl IHBhcnNpbmcgdGhlCi0rCSBwcm9iZSdzIGluZm9ybWF0aW9uLiAgV2UgYmFzaWNhbGx5IGhhdmUg dG8gY291bnQgaG93IG1hbnkgcHJvYmVzCi0rCSB0aGUgb2JqZmlsZSBoYXMsIGFuZCB0aGVuIGZp bGwgaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbgotKwkgZm9yIGVhY2ggb25lLiAgKi8KLSsK LSsgICAgICBiZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOwotKyAgICAgIGJmZF92bWEgYmFzZSA9 IGdldF9iYXNlX2FkZHJlc3MgKG9iZmQpOwotKyAgICAgIHN0cnVjdCBzZHRfbm90ZSAqaXRlcjsK LSsgICAgICBpbnQgaTsKLSsgICAgICBpbnQgbiA9IDA7Ci0rCi0rICAgICAgaWYgKCEgZWxmX3Rk YXRhIChvYmZkKS0+c2R0X25vdGVfaGVhZCkKLSsJLyogVGhlcmUgaXNuJ3QgYW55IHByb2JlIGhl cmUuICAqLwotKwlyZXR1cm4gTlVMTDsKLSsKLSsgICAgICAvKiBBbGxvY2F0aW5nIHNwYWNlIGZv ciBwcm9iZSBpbmZvLiAgKi8KLSsgICAgICBmb3IgKGl0ZXIgPSBlbGZfdGRhdGEgKG9iZmQpLT5z ZHRfbm90ZV9oZWFkOwotKwkgICBpdGVyOwotKwkgICBpdGVyID0gaXRlci0+bmV4dCwgKytuKTsK LSsKLSsgICAgICByZXQgPSB4Y2FsbG9jIChuLCBzaXplb2YgKHN0cnVjdCBzdGFwX3Byb2JlKSk7 Ci0rCi0rICAgICAgLyogUGFyc2luZyBlYWNoIHByb2JlJ3MgaW5mb3JtYXRpb24uICAqLwotKyAg ICAgIGZvciAoaXRlciA9IGVsZl90ZGF0YSAob2JmZCktPnNkdF9ub3RlX2hlYWQsIGkgPSAwOwot KwkgICBpdGVyOwotKwkgICBpdGVyID0gaXRlci0+bmV4dCwgaSsrKQotKwkvKiBXZSBmaXJzdCBo YXZlIHRvIGhhbmRsZSBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZQotKwkgICBwcm9iZSB3 aGljaCBpcyBwcmVzZW50IGluIHRoZSBzZWN0aW9uLiAgKi8KLSsJaGFuZGxlX3Byb2JlIChvYmpm aWxlLCBpdGVyLCAmcmV0W2ldLCBiYXNlKTsKLSsKLSsgICAgICAvKiBDcmVhdGluZyBhIGNhY2hl IGZvciB0aGVzZSBwcm9iZXMgaW4gdGhlIG9iamZpbGUncyByZWdpc3RyeS4gICovCi0rICAgICAg cHJvYmVzX3Blcl9vYmpmaWxlID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9wcm9iZV9w ZXJfb2JqZmlsZSkpOwotKwotKyAgICAgIHByb2Jlc19wZXJfb2JqZmlsZS0+c3RhcF9udW1fcHJv YmVzID0gbjsKLSsgICAgICBwcm9iZXNfcGVyX29iamZpbGUtPnByb2JlcyA9IHJldDsKLSsKLSsg ICAgICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBzdGFwX3Byb2JlX2tleSwgcHJvYmVzX3Bl cl9vYmpmaWxlKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICByZXQgPSBwcm9iZXNfcGVyX29iamZp bGUtPnByb2JlczsKLSsKLSsgICpudW1fcHJvYmVzID0gcHJvYmVzX3Blcl9vYmpmaWxlLT5zdGFw X251bV9wcm9iZXM7Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiBJbXBsZW1lbnRhdGlv biBvZiBgc3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCcsIGFzIGRvY3VtZW50ZWQgaW4KLSsg ICBzeW1maWxlLmguICAqLwotKwotK3N0YXRpYyBpbnQKLStlbGZfZ2V0X3Byb2JlX2FyZ3VtZW50 X2NvdW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgICAgICBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcHJvYmUpCi0rewotKyAgY29uc3QgY2hhciAqcGFyZ3MgPSBwcm9iZS0+YXJnczsKLSsK LSsgIGlmICghcGFyZ3MgfHwgISpwYXJncyB8fCAqcGFyZ3MgPT0gJzonKQotKyAgICAvKiBObyBh cmd1bWVudHMuICAqLwotKyAgICByZXR1cm4gMDsKLSsKLSsgIHJldHVybiBzdGFwX2dldF9wcm9i ZV9hcmd1bWVudF9jb3VudCAocHJvYmUpOwotK30KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBg c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50JywgYXMgZG9jdW1lbnRlZCBpbgotKyAgIHN5bWZp bGUuaC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rZWxmX2V2YWx1YXRlX3Byb2Jl X2FyZ3VtZW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgICAgIHN0cnVjdCBzdGFw X3Byb2JlICpwcm9iZSwKLSsJCQkgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSsJCQkg ICAgIGludCBuKQotK3sKLSsgIHJldHVybiBzdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChv YmpmaWxlLCBwcm9iZSwgZnJhbWUsIG4pOwotK30KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBg c3ltX2NvbXBpbGVfdG9fYXgnLCBhcyBkb2N1bWVudGVkIGluIHN5bWZpbGUuaC4gICovCi0rCi0r c3RhdGljIHZvaWQKLStlbGZfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs Ci0rCQkgICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCi0rCQkgICBzdHJ1Y3QgYWdlbnRfZXhw ciAqZXhwciwKLSsJCSAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAotKwkJICAgaW50IG4pCi0r ewotKyAgc3RhcF9jb21waWxlX3RvX2F4IChvYmpmaWxlLCBwcm9iZSwgZXhwciwgdmFsdWUsIG4p OwotK30KLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX3JlbG9jYXRlX3Byb2JlJywgYXMg ZG9jdW1lbnRlZCBpbiBzeW1maWxlLmguICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZWxmX3N5bWZp bGVfcmVsb2NhdGVfcHJvYmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCSAgICBzdHJ1 Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cywKLSsJCQkgICAgc3RydWN0IHNlY3Rpb25f b2Zmc2V0cyAqZGVsdGEpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJf b2JqZmlsZSAqcAotKyAgICA9IChzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqKSBvYmpm aWxlX2RhdGEgKG9iamZpbGUsCi0rCQkJCQkJICAgICAgc3RhcF9wcm9iZV9rZXkpOwotKwotKyAg aWYgKCFwKQotKyAgICAvKiBObyBwcm9iZSB0byByZWxvY2F0ZS4gICovCi0rICAgIHJldHVybjsK LSsKLSsgIGZvciAoaSA9IDA7IGkgPCBwLT5zdGFwX251bV9wcm9iZXM7IGkrKykKLSsgICAgewot KyAgICAgIHAtPnByb2Jlc1tpXS5hZGRyZXNzICs9IEFOT0ZGU0VUIChkZWx0YSwgU0VDVF9PRkZf VEVYVCAob2JqZmlsZSkpOwotKyAgICAgIGlmIChwLT5wcm9iZXNbaV0uc2VtX2FkZHIpCi0rCXAt PnByb2Jlc1tpXS5zZW1fYWRkciArPSBBTk9GRlNFVCAoZGVsdGEsIFNFQ1RfT0ZGX0RBVEEgKG9i amZpbGUpKTsKLSsgICAgfQotK30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gdXNlZCB0byBmcmVl IHRoZSBzcGFjZSBhbGxvY2F0ZWQgZm9yIHN0b3JpbmcgU3lzdGVtVGFwCi0rICAgcHJvYmUgaW5m b3JtYXRpb24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9wcm9iZV9rZXlfZnJlZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCi0rewotKyAgaW50IGk7Ci0rICBzdHJ1Y3Qg c3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqZGF0YSA9IChzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2Jq ZmlsZSAqKSBkOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGRhdGEtPnN0YXBfbnVtX3Byb2Jlczsg aSsrKQotKyAgICBzdGFwX2ZyZWVfcGFyc2VkX2FyZ3MgKGRhdGEtPnByb2Jlc1tpXS5wYXJzZWRf YXJncyk7Ci0rICB4ZnJlZSAoZGF0YS0+cHJvYmVzKTsKLSsgIHhmcmVlIChkYXRhKTsKLSt9Ci0r Ci0gDAotKwotKy8qIEltcGxlbWVudGF0aW9uIGBzeW1fcHJvYmVfZm5zJywgYXMgZG9jdW1lbnRl ZCBpbiBzeW1maWxlLmguICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2Zu cyBlbGZfcHJvYmVfZm5zID0KLSt7Ci0rICBlbGZfZ2V0X3Byb2JlcywJCS8qIHN5bV9nZXRfcHJv YmVzICovCi0rICBlbGZfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50LAkvKiBzeW1fZ2V0X3Byb2Jl X2FyZ3VtZW50X2NvdW50ICovCi0rICBlbGZfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQsCS8qIHN5 bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAqLwotKyAgZWxmX2NvbXBpbGVfdG9fYXgsCQkvKiBz eW1fY29tcGlsZV90b19heCAqLwotKyAgZWxmX3N5bWZpbGVfcmVsb2NhdGVfcHJvYmUsCS8qIHN5 bV9yZWxvY2F0ZV9wcm9iZSAqLwotK307Ci0rCi0gLyogUmVnaXN0ZXIgdGhhdCB3ZSBhcmUgYWJs ZSB0byBoYW5kbGUgRUxGIG9iamVjdCBmaWxlIGZvcm1hdHMuICAqLwotIAotIHN0YXRpYyBjb25z dCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9Ci1AQCAtMTU5MSw2ICsxODcxLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zID0KLSAgIGVsZl9zeW1maWxlX3Nl Z21lbnRzLAkJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwotICAg TlVMTCwKLSAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBz ZWN0aW9uLiAgKi8KLSsgICZlbGZfcHJvYmVfZm5zLAkJLyogc3ltX3Byb2JlX2ZucyAqLwotICAg JnBzeW1fZnVuY3Rpb25zCi0gfTsKLSAKLUBAIC0xNjA5LDYgKzE4OTAsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfbGF6eV9wc3ltcyA9Ci0gICBlbGZfc3ltZmls ZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8K LSAgIE5VTEwsCi0gICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVi dWcgc2VjdGlvbi4gICovCi0rICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5bV9wcm9iZV9mbnMgKi8K LSAgICZwc3ltX2Z1bmN0aW9ucwotIH07Ci0gCi1AQCAtMTYyNiw2ICsxOTA4LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleCA9Ci0gICBlbGZfc3lt ZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAg Ki8KLSAgIE5VTEwsCi0gICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEg ZGVidWcgc2VjdGlvbi4gICovCi0rICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5bV9wcm9iZV9mbnMg Ki8KLSAgICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucwotIH07Ci0gCi1AQCAtMTY0Miw2ICsx OTI1LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVsZl9nbnVfaWZ1bmNf Zm5zID0KLSB2b2lkCi0gX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKLSB7Ci0rICBzdGFwX3By b2JlX2tleQotKyAgICA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YV93aXRoX2NsZWFudXAgKE5VTEws IHN0YXBfcHJvYmVfa2V5X2ZyZWUpOwotICAgYWRkX3N5bXRhYl9mbnMgKCZlbGZfc3ltX2Zucyk7 Ci0gCi0gICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YSA9IHJlZ2lzdGVyX29iamZp bGVfZGF0YSAoKTsKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5kZXgg MDI0NGY3YS4uYjMzZDM2NyAxMDA2NDQKK2luZGV4IDdmMWRmYWMuLjUyNDYyYmMgMTAwNjQ0CiAt LS0gYS9nZGIvZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDEsNiArNDEsNyBAQApAQCAt MjY5NSw3ICsxNTMzLDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2NyAxMDA2NDQKICAKICAjaW5j bHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotQEAgLTQ5OCwyNyArNDk5LDIxNyBAQCBpbml0X2FycmF5 X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKK0BA IC01MDAsMjcgKzUwMSwyMTcgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUgKmFy cmF5LCBzdHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCiAgfQogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUg KgpAQCAtMjkyOSw3ICsxNzY3LDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2NyAxMDA2NDQKICB9 CiAgCiAgCi1AQCAtNzk5LDYgKzk5MCw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTgwMSw2ICs5OTIsNyBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgIGludCBzYXZlX3BvczE7 CiAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CiAgICBjaGFyICpmdW5jdGlvbl9u YW1lID0gTlVMTDsKQEAgLTI5MzcsNyArMTc3NSw3IEBAIGluZGV4IDAyNDRmN2EuLmIzM2QzNjcg MTAwNjQ0CiAgCiAgICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29k ZTsKLUBAIC0xODc0LDYgKzIwNjYsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0xODc1LDYgKzIwNjcsOCBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAgICAgICAvKiBGaXJz dCBkZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KICAgICAg ICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwpA QCAtMjk0Niw3ICsxNzg0LDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2NyAxMDA2NDQKICAgICAg ICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwogICAgICAgIGNvZGUg PSBUWVBFX0NPREUgKHR5cGUpOwogIAotQEAgLTE4OTQsMjMgKzIwODgsMTMgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMTg5NSwyMyAr MjA4OSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKICAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAgICB9CiAgCX0gCkBA IC0yOTcyLDcgKzE4MTAsNyBAQCBpbmRleCAwMjQ0ZjdhLi5iMzNkMzY3IDEwMDY0NAogIAogIAlj YXNlIFRZUEVfQ09ERV9QVFI6CiAgCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci1AQCAtMjM0OSw0OSAr MjUzMyw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAorQEAgLTIzNDQsNDkgKzI1MjgsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJfQogICAgICAgIHJldHVybiAoYXJnMSk7CiAgCkBA IC0zMDIyLDcgKzE4NjAsNyBAQCBpbmRleCAwMjQ0ZjdhLi5iMzNkMzY3IDEwMDY0NAogICAgICBj YXNlIEJJTk9QX0xPR0lDQUxfQU5EOgogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5V TExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7CiAgICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NL SVApCi1AQCAtMjYyMywxNSArMjc2NCwyMyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNjE4LDE1ICsyNzU5LDIzIEBAIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAgIGlmIChl eHBlY3RfdHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQog IAlleHBlY3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90 eXBlKSk7CiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwg cG9zLCBub3NpZGUpOwpAQCAtMzA0OCw3ICsxODg2LDcgQEAgaW5kZXggMDI0NGY3YS4uYjMzZDM2 NyAxMDA2NDQKICAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVD VFMpCiAgCXsKICAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwot QEAgLTI2NDAsMTIgKzI3ODksMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg dHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjYzNSwxMiArMjc4NCwxOCBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAvKiBJbiBDIHlvdSBj YW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAgKi8KICAJICAgICAg fHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKICAJICAgICkKQEAgLTMwNzIs NyArMTkxMCw3IEBAIGluZGV4IDAyNDRmN2EuLmIzM2QzNjcgMTAwNjQ0CiAgCSAgZWxzZQogIAkg ICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZh bHVlLiIpKTsKICAJfQotQEAgLTI2NTUsOSArMjgxMCwxNCBAQCBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BAIC0yNjUwLDkgKzI4MDUsMTQgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSBk by4gICJsb25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAogIAkgQlVJTFRJ Tl9UWVBFX0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwogICAgICAgIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCkBAIC0zMDkwLDcgKzE5MjgsNyBA QCBpbmRleCAwMjQ0ZjdhLi5iMzNkMzY3IDEwMDY0NAogIAogICAgICBjYXNlIFVOT1BfQUREUjoK ICAgICAgICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4g ICovCi1AQCAtMjk5OSw3ICszMTU5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24g KHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjk5NCw3ICszMTU0LDcgQEAgZXZhbHVhdGVf c3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewogICAgZW51 bSBleHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtMzA5OSw3ICsxOTM3LDcgQEAgaW5kZXgg MDI0NGY3YS4uYjMzZDM2NyAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKICAgIHN0cnVj dCB0eXBlICp0eXBlOwogIAotQEAgLTMwMTAsMTMgKzMxNzAsMTggQEAgZXZhbHVhdGVfc3ViZXhw X3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMzAwNSwxMyArMzE2 NSwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICB2YXIgPSBleHAt PmVsdHNbcGMgKyAyXS5zeW1ib2w7CkBAIC0zMTE5LDcgKzE5NTcsNyBAQCBpbmRleCAwMjQ0Zjdh Li5iMzNkMzY3IDEwMDY0NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90 eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAt MzA2OCw5ICszMjMzLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKK0BAIC0zMDYzLDkgKzMyMjgsMTMgQEAgZXZhbHVhdGVf c3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQogIAog ICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsKQEAgLTMxMzYsNyAr MTk3NCw3IEBAIGluZGV4IDAyNDRmN2EuLmIzM2QzNjcgMTAwNjQ0CiAgCiAgICAgIGRlZmF1bHQ6 CiAgICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFM X0FWT0lEX1NJREVfRUZGRUNUUyk7Ci1AQCAtMzEwMSwxOCArMzI3MCwyNSBAQCBwYXJzZV9hbmRf ZXZhbF90eXBlIChjaGFyICpwLCBpbnQgbGVuZ3RoKQorQEAgLTMwOTYsMTggKzMyNjUsMjUgQEAg cGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKICBpbnQKICBjYWxjX2Y3 N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKICB7CkBAIC0zMTczLDEwICsy MDExLDEwIEBAIGluZGV4IDAyNDRmN2EuLmIzM2QzNjcgMTAwNjQ0CiArCiAgfQogZGlmZiAtLWdp dCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKLWluZGV4IGIyNThjMGEuLjE3NTI5NzMgMTAw NjQ0CitpbmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0NAogLS0tIGEvZ2RiL2YtZXhwLnkKICsr KyBiL2dkYi9mLWV4cC55Ci1AQCAtMjkyLDcgKzI5Miw5IEBAIGFyZ2xpc3QgOglzdWJyYW5nZQor QEAgLTI5OCw3ICsyOTgsOSBAQCBhcmdsaXN0IDoJc3VicmFuZ2UKICAJCQl7IGFyZ2xpc3RfbGVu ID0gMTsgfQogIAk7CiAgICAgCkBAIC0zMTg4LDcgKzIwMjYsNyBAQCBpbmRleCBiMjU4YzBhLi4x NzUyOTczIDEwMDY0NAogIAk7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5oIGIvZ2RiL2Yt bGFuZy5oCi1pbmRleCAzYTQ2ZWJmLi4yYjczZTFmIDEwMDY0NAoraW5kZXggNGFhZTNjNS4uNTFh NGUxZSAxMDA2NDQKIC0tLSBhL2dkYi9mLWxhbmcuaAogKysrIGIvZ2RiL2YtbGFuZy5oCiBAQCAt MjgsNiArMjgsMTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5lZCBp biBmLWV4cC55ICovCkBAIC0zMTk5LDkgKzIwMzcsOSBAQCBpbmRleCAzYTQ2ZWJmLi4yYjczZTFm IDEwMDY0NAogKyAgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsK ICtleHRlcm4gdm9pZCBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHN0cnVj dCB0eXBlICp0eXBlKTsKICsKLSBleHRlcm4gaW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAq LCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKLSAJCQlzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsCi0gCQkJY29uc3Qgc3RydWN0IHZhbHVlICosCisgZXh0ZXJuIHZvaWQgZl92YWxfcHJp bnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosIGludCwgQ09SRV9BRERSLAorIAkJ CSBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogZGlm ZiAtLWdpdCBhL2dkYi9mLXR5cGVwcmludC5jIGIvZ2RiL2YtdHlwZXByaW50LmMKIGluZGV4IGE5 NWVmODQuLjgzMDkxN2QgMTAwNjQ0CiAtLS0gYS9nZGIvZi10eXBlcHJpbnQuYwpAQCAtMzI3MSw3 ICsyMTA5LDcgQEAgaW5kZXggYTk1ZWY4NC4uODMwOTE3ZCAxMDA2NDQKICAgICAgewogICAgICBj YXNlIFRZUEVfQ09ERV9BUlJBWToKIGRpZmYgLS1naXQgYS9nZGIvZi12YWxwcmludC5jIGIvZ2Ri L2YtdmFscHJpbnQuYwotaW5kZXggODdiMmVkMS4uNWQyNjNmMiAxMDA2NDQKK2luZGV4IDhiODRi NWEuLjRiMjQwYTMgMTAwNjQ0CiAtLS0gYS9nZGIvZi12YWxwcmludC5jCiArKysgYi9nZGIvZi12 YWxwcmludC5jCiBAQCAtNTQsMTUgKzU0LDE3IEBAIGludCBmNzdfYXJyYXlfb2Zmc2V0X3RibFtN QVhfRk9SVFJBTl9ESU1TICsgMV1bMl07CkBAIC0zMzk5LDQzICsyMjM3LDQxIEBAIGluZGV4IDg3 YjJlZDEuLjVkMjYzZjIgMTAwNjQ0CiAgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIu Li4iKTsKICAJfQogICAgICB9Ci1AQCAtMjYwLDYgKzI2OCw5IEBAIGZfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZz ZXQsCitAQCAtMjcwLDYgKzI3OCw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICBDT1JFX0FE RFIgYWRkcjsKICAgIGludCBpbmRleDsKICAKICsgIGlmIChmX29iamVjdF9hZGRyZXNzX2RhdGFf dmFsaWRfcHJpbnRfdG9fc3RyZWFtICh0eXBlLCBzdHJlYW0pICE9IE5VTEwpCi0rICAgIHJldHVy biAwOworKyAgICByZXR1cm47CiArCiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKICAgIHN3aXRj aCAoVFlQRV9DT0RFICh0eXBlKSkKICAgICAgewogZGlmZiAtLWdpdCBhL2dkYi9maW5kdmFyLmMg Yi9nZGIvZmluZHZhci5jCi1pbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAoraW5kZXggZWQ3 OTAzYy4uZTQxMmEzZCAxMDA2NDQKIC0tLSBhL2dkYi9maW5kdmFyLmMKICsrKyBiL2dkYi9maW5k dmFyLmMKLUBAIC0zNCw2ICszNCw3IEBACi0gI2luY2x1ZGUgInVzZXItcmVncy5oIgorQEAgLTM1 LDYgKzM1LDcgQEAKICAjaW5jbHVkZSAiYmxvY2suaCIKICAjaW5jbHVkZSAib2JqZmlsZXMuaCIK KyAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCiAgCiAgLyog QmFzaWMgYnl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJl dHVybiBhCiAgICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRl Z2VyIGF0IEFERFIgd2hpY2ggaXMKLUBAIC00MDcsOCArNDA4LDExIEBAIHN5bWJvbF9yZWFkX25l ZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0gCi0gLyogR2l2ZW4gYSBzdHJ1Y3Qgc3lt Ym9sIGZvciBhIHZhcmlhYmxlLAotICAgIGFuZCBhIHN0YWNrIGZyYW1lIGlkLCByZWFkIHRoZSB2 YWx1ZSBvZiB0aGUgdmFyaWFibGUKLS0gICBhbmQgcmV0dXJuIGEgKHBvaW50ZXIgdG8gYSkgc3Ry dWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLgotLSAgIElmIHRoZSB2YXJpYWJsZSBjYW5u b3QgYmUgZm91bmQsIHRocm93IGVycm9yLiAgKi8KLSsgICBhbmQgcmV0dXJuIGEgKHBvaW50ZXIg dG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKLSsgICBJZiB0aGUgdmFy aWFibGUgY2Fubm90IGJlIGZvdW5kLCB0aHJvdyBlcnJvci4KK0BAIC00MDcsNyArNDA4LDEwIEBA IHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCisgfQorIAorIC8q IEEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJsYV9yZWFkX3Zhcl92YWx1ZSIgaG9v ayBpbgorLSAgIHRoZSBsYW5ndWFnZSB2ZWN0b3Igd2hpY2ggc2hvdWxkIHdvcmsgaW4gbW9zdCBz aXR1YXRpb25zLiAgKi8KKysgICB0aGUgbGFuZ3VhZ2UgdmVjdG9yIHdoaWNoIHNob3VsZCB3b3Jr IGluIG1vc3Qgc2l0dWF0aW9ucy4KICsgICBXZSBoYXZlIHRvIGZpcnN0IGZpbmQgdGhlIGFkZHJl c3Mgb2YgdGhlIHZhcmlhYmxlIGJlZm9yZSBhbGxvY2F0aW5nIHN0cnVjdAogKyAgIHZhbHVlIHRv IHJldHVybiBhcyBpdHMgc2l6ZSBtYXkgZGVwZW5kIG9uIERXX09QX1BVU0hfT0JKRUNUX0FERFJF U1MgcG9zc2libHkgCiArICAgdXNlZCBieSBpdHMgdHlwZS4gICovCiAgCiAgc3RydWN0IHZhbHVl ICoKLSByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCi1AQCAtNDE2LDE2ICs0MjAsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5 bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgZGVmYXVsdF9yZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAt NDE1LDE2ICs0MTksNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgIHN0cnVjdCB2YWx1ZSAqdjsKICAgIHN0 cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CiAgICBDT1JFX0FERFIgYWRkcjsK QEAgLTM0NTIsNyArMjI4OCw3IEBAIGluZGV4IDc5YzQyMjEuLjFiYjdjMjIgMTAwNjQ0CiAgCiAg ICBpZiAoc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCiAgICAgIGdkYl9hc3NlcnQgKGZy YW1lKTsKLUBAIC00MzUsNyArNDI5LDcgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTQzNCw3ICs0MjgsNyBAQCBkZWZh dWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSkKICAgICAgY2FzZSBMT0NfQ09OU1Q6CiAgICAgICAgLyogUHV0IHRoZSBjb25zdGFu dCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLwogICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAo dHlwZSk7CkBAIC0zNDYxLDcgKzIyOTcsNyBAQCBpbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0 NAogIAkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKHR5cGUpKSwKICAJ CQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7CiAgICAgICAgVkFMVUVfTFZBTCAo dikgPSBub3RfbHZhbDsKLUBAIC00NjAsMTIgKzQ1NCwxMiBAQCByZWFkX3Zhcl92YWx1ZSAoc3Ry dWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNDU5LDEyICs0 NTMsMTIgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCiAgICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgogICAg ICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CkBAIC0zNDc2LDcgKzIzMTIsNyBAQCBpbmRl eCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAogICAgICAgIGlmIChvdmVybGF5X2RlYnVnZ2luZykK ICAJYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcyAoU1lNQk9MX1ZBTFVFX0FERFJFU1Mg KHZhciksCiAgCQkJCQkgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsKLUBAIC00NzksNyArNDcz LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQorQEAgLTQ3OCw3ICs0NzIsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJZXJyb3IgKF8o IlVua25vd24gYXJndW1lbnQgbGlzdCBhZGRyZXNzIGZvciBgJXMnLiIpLAogIAkgICAgICAgU1lN Qk9MX1BSSU5UX05BTUUgKHZhcikpOwogICAgICAgIGFkZHIgKz0gU1lNQk9MX1ZBTFVFICh2YXIp OwpAQCAtMzQ4NCw3ICsyMzIwLDcgQEAgaW5kZXggNzljNDIyMS4uMWJiN2MyMiAxMDA2NDQKICAg ICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfUkVGX0FSRzoKLUBAIC00OTQsMTQgKzQ4Nywx MiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCitAQCAtNDkzLDE0ICs0ODYsMTIgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAo c3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCWFyZ3JlZiAr PSBTWU1CT0xfVkFMVUUgKHZhcik7CiAgCXJlZiA9IHZhbHVlX2F0IChsb29rdXBfcG9pbnRlcl90 eXBlICh0eXBlKSwgYXJncmVmKTsKICAJYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKHJlZik7CkBA IC0zNDk5LDcgKzIzMzUsNyBAQCBpbmRleCA3OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAogICAgICAg IGJyZWFrOwogIAogICAgICBjYXNlIExPQ19UWVBFREVGOgotQEAgLTUxMCw3ICs1MDEsNiBAQCBy ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCitAQCAtNTA5LDcgKzUwMCw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogIAog ICAgICBjYXNlIExPQ19CTE9DSzoKQEAgLTM1MDcsNyArMjM0Myw3IEBAIGluZGV4IDc5YzQyMjEu LjFiYjdjMjIgMTAwNjQ0CiAgICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQogIAlhZGRyID0g c3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCiAgCSAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tf VkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotQEAgLTUzNiw3ICs1MjYs NiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCitAQCAtNTM1LDcgKzUyNSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAkgICAgICAgICAg ICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogIAogIAkgICAgYWRkciA9IHZhbHVlX2FzX2Fk ZHJlc3MgKHJlZ3ZhbCk7CkBAIC0zNTE1LDcgKzIzNTEsNyBAQCBpbmRleCA3OWM0MjIxLi4xYmI3 YzIyIDEwMDY0NAogIAkgIH0KICAJZWxzZQogIAkgIHsKLUBAIC01NzYsNyArNTY1LDYgQEAgcmVh ZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l KQorQEAgLTU4Myw3ICs1NzIsNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3lt Ym9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJaWYgKG9ial9zZWN0aW9uCiAg CSAgICAmJiAob2JqX3NlY3Rpb24tPnRoZV9iZmRfc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfVEhSRUFE X0xPQ0FMKSAhPSAwKQogIAkgIGFkZHIgPSB0YXJnZXRfdHJhbnNsYXRlX3Rsc19hZGRyZXNzIChv Ympfc2VjdGlvbi0+b2JqZmlsZSwgYWRkcik7CkBAIC0zNTIzLDcgKzIzNTksNyBAQCBpbmRleCA3 OWM0MjIxLi4xYmI3YzIyIDEwMDY0NAogICAgICAgIH0KICAgICAgICBicmVhazsKICAKLUBAIC01 ODksNiArNTc3LDEwIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01OTYsNiArNTg0LDEwIEBAIGRlZmF1bHRfcmVhZF92 YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQog ICAgICAgIGJyZWFrOwogICAgICB9CiAgCkBAIC0zNTM0LDcgKzIzNzAsNyBAQCBpbmRleCA3OWM0 MjIxLi4xYmI3YzIyIDEwMDY0NAogICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKICAg IHNldF92YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsKICAgIHJldHVybiB2OwotQEAgLTY3MSwxMCAr NjYzLDExIEBAIHN0cnVjdCB2YWx1ZSAqCitAQCAtNjkxLDEwICs2ODMsMTEgQEAgc3RydWN0IHZh bHVlICoKICB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251 bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKQEAgLTM1NDgsNyArMjM4NCw3IEBAIGluZGV4 IDc5YzQyMjEuLjFiYjdjMjIgMTAwNjQ0CiAgICAgIHsKICAgICAgICBpbnQgb3B0aW0sIHVuYXZh aWwsIG9rOwogIAotQEAgLTY4OSw3ICs2ODIsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAg LTcwOSw3ICs3MDIsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwg aW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIFZBTFVFX0xWQUwg KHYpID0gbHZhbF9yZWdpc3RlcjsKICAgICAgICBWQUxVRV9GUkFNRV9JRCAodikgPSBnZXRfZnJh bWVfaWQgKGZyYW1lKTsKICAgICAgICBWQUxVRV9SRUdOVU0gKHYpID0gcmVnbnVtOwpAQCAtMzU1 Nyw1NTMgKzIzOTMsMTIgQEAgaW5kZXggNzljNDIyMS4uMWJiN2MyMiAxMDA2NDQKICAJCQkJICAg ICAgdmFsdWVfY29udGVudHNfcmF3ICh2KSwgJm9wdGltLAogIAkJCQkgICAgICAmdW5hdmFpbCk7 CiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2guYyBiL2dkYi9nZGJhcmNoLmMKLWluZGV4IDFi ZDIzNDEuLjQzMWRkY2MgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RiYXJjaC5jCi0rKysgYi9nZGIvZ2Ri YXJjaC5jCi1AQCAtMjY1LDYgKzI2NSwxNiBAQCBzdHJ1Y3QgZ2RiYXJjaAotICAgZ2RiYXJjaF9n ZXRfc2lnaW5mb190eXBlX2Z0eXBlICpnZXRfc2lnaW5mb190eXBlOwotICAgZ2RiYXJjaF9yZWNv cmRfc3BlY2lhbF9zeW1ib2xfZnR5cGUgKnJlY29yZF9zcGVjaWFsX3N5bWJvbDsKLSAgIGdkYmFy Y2hfZ2V0X3N5c2NhbGxfbnVtYmVyX2Z0eXBlICpnZXRfc3lzY2FsbF9udW1iZXI7Ci0rICBjb25z dCBjaGFyICogc3RhcF9pbnRlZ2VyX3ByZWZpeDsKLSsgIGNvbnN0IGNoYXIgKiBzdGFwX2ludGVn ZXJfc3VmaXg7Ci0rICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9wcmVmaXg7Ci0rICBjb25z dCBjaGFyICogc3RhcF9yZWdpc3Rlcl9zdWZpeDsKLSsgIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lz dGVyX2luZGlyZWN0aW9uX3ByZWZpeDsKLSsgIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVyX2lu ZGlyZWN0aW9uX3N1Zml4OwotKyAgY29uc3QgY2hhciAqIHN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZp eDsKLSsgIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeDsKLSsgIGdkYmFyY2hf c3RhcF9pc19zaW5nbGVfb3BlcmFuZF9mdHlwZSAqc3RhcF9pc19zaW5nbGVfb3BlcmFuZDsKLSsg IGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX2Z0eXBlICpzdGFwX3BhcnNlX3NwZWNp YWxfdG9rZW47Ci0gICBpbnQgaGFzX2dsb2JhbF9zb2xpc3Q7Ci0gICBpbnQgaGFzX2dsb2JhbF9i cmVha3BvaW50czsKLSAgIGdkYmFyY2hfaGFzX3NoYXJlZF9hZGRyZXNzX3NwYWNlX2Z0eXBlICpo YXNfc2hhcmVkX2FkZHJlc3Nfc3BhY2U7Ci1AQCAtNDIzLDYgKzQzMywxNiBAQCBzdHJ1Y3QgZ2Ri YXJjaCBzdGFydHVwX2dkYmFyY2ggPQotICAgMCwgIC8qIGdldF9zaWdpbmZvX3R5cGUgKi8KLSAg IDAsICAvKiByZWNvcmRfc3BlY2lhbF9zeW1ib2wgKi8KLSAgIDAsICAvKiBnZXRfc3lzY2FsbF9u dW1iZXIgKi8KLSsgIDAsICAvKiBzdGFwX2ludGVnZXJfcHJlZml4ICovCi0rICAwLCAgLyogc3Rh cF9pbnRlZ2VyX3N1Zml4ICovCi0rICAwLCAgLyogc3RhcF9yZWdpc3Rlcl9wcmVmaXggKi8KLSsg IDAsICAvKiBzdGFwX3JlZ2lzdGVyX3N1Zml4ICovCi0rICAwLCAgLyogc3RhcF9yZWdpc3Rlcl9p bmRpcmVjdGlvbl9wcmVmaXggKi8KLSsgIDAsICAvKiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9u X3N1Zml4ICovCi0rICAwLCAgLyogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4ICovCi0rICAwLCAg Lyogc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggKi8KLSsgIDAsICAvKiBzdGFwX2lzX3NpbmdsZV9v cGVyYW5kICovCi0rICAwLCAgLyogc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuICovCi0gICAwLCAg LyogaGFzX2dsb2JhbF9zb2xpc3QgKi8KLSAgIDAsICAvKiBoYXNfZ2xvYmFsX2JyZWFrcG9pbnRz ICovCi0gICBkZWZhdWx0X2hhc19zaGFyZWRfYWRkcmVzc19zcGFjZSwgIC8qIGhhc19zaGFyZWRf YWRkcmVzc19zcGFjZSAqLwotQEAgLTcxNSw2ICs3MzUsMTYgQEAgdmVyaWZ5X2dkYmFyY2ggKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgLyogU2tpcCB2ZXJpZnkgb2YgZ2V0X3NpZ2luZm9f dHlwZSwgaGFzIHByZWRpY2F0ZS4gICovCi0gICAvKiBTa2lwIHZlcmlmeSBvZiByZWNvcmRfc3Bl Y2lhbF9zeW1ib2wsIGhhcyBwcmVkaWNhdGUuICAqLwotICAgLyogU2tpcCB2ZXJpZnkgb2YgZ2V0 X3N5c2NhbGxfbnVtYmVyLCBoYXMgcHJlZGljYXRlLiAgKi8KLSsgIC8qIFNraXAgdmVyaWZ5IG9m IHN0YXBfaW50ZWdlcl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAvKiBTa2lwIHZlcmlm eSBvZiBzdGFwX2ludGVnZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAvKiBTa2lwIHZl cmlmeSBvZiBzdGFwX3JlZ2lzdGVyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KLSsgIC8qIFNr aXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAv KiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCwgaW52YWxp ZF9wID09IDAgKi8KLSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rp b25fc3VmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX2dk Yl9yZWdpc3Rlcl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICAvKiBTa2lwIHZlcmlmeSBv ZiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCwgaW52YWxpZF9wID09IDAgKi8KLSsgIC8qIFNraXAg dmVyaWZ5IG9mIHN0YXBfaXNfc2luZ2xlX29wZXJhbmQsIGhhcyBwcmVkaWNhdGUuICAqLwotKyAg LyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuLCBoYXMgcHJlZGljYXRl LiAgKi8KLSAgIC8qIFNraXAgdmVyaWZ5IG9mIGhhc19nbG9iYWxfc29saXN0LCBpbnZhbGlkX3Ag PT0gMCAqLwotICAgLyogU2tpcCB2ZXJpZnkgb2YgaGFzX2dsb2JhbF9icmVha3BvaW50cywgaW52 YWxpZF9wID09IDAgKi8KLSAgIC8qIFNraXAgdmVyaWZ5IG9mIGhhc19zaGFyZWRfYWRkcmVzc19z cGFjZSwgaW52YWxpZF9wID09IDAgKi8KLUBAIC0xMjY3LDYgKzEyOTcsNDIgQEAgZ2RiYXJjaF9k dW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHVpX2ZpbGUgKmZpbGUpCi0gICAg ICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YWJzX2FyZ3VtZW50X2hhc19hZGRy ID0gPCVzPlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmlu ZyAoZ2RiYXJjaC0+c3RhYnNfYXJndW1lbnRfaGFzX2FkZHIpKTsKLSAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9n ZGJfcmVnaXN0ZXJfcHJlZml4ID0gJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgIGdkYmFy Y2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCk7Ci0rICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZp bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YXBfZ2RiX3JlZ2lz dGVyX3N1Zml4ID0gJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2gtPnN0YXBf Z2RiX3JlZ2lzdGVyX3N1Zml4KTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9pbnRlZ2VyX3ByZWZpeCA9ICVz XG4iLAotKyAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoLT5zdGFwX2ludGVnZXJfcHJlZml4 KTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ImdkYmFyY2hfZHVtcDogc3RhcF9pbnRlZ2VyX3N1Zml4ID0gJXNcbiIsCi0rICAgICAgICAgICAg ICAgICAgICAgIGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCk7Ci0rICBmcHJpbnRmX3VuZmls dGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGdkYmFy Y2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZF9wKCkgPSAlZFxuIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3AgKGdkYmFyY2gpKTsKLSsgIGZw cmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hf ZHVtcDogc3RhcF9pc19zaW5nbGVfb3BlcmFuZCA9IDwlcz5cbiIsCi0rICAgICAgICAgICAgICAg ICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnN0YXBfaXNfc2luZ2xlX29w ZXJhbmQpKTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW5fcCgp ID0gJWRcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVj aWFsX3Rva2VuX3AgKGdkYmFyY2gpKTsKLSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsg ICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9wYXJzZV9zcGVjaWFsX3Rv a2VuID0gPCVzPlxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0 cmluZyAoZ2RiYXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKSk7Ci0rICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0 YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4ID0gJXNcbiIsCi0rICAgICAgICAgICAgICAg ICAgICAgIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4KTsKLSsgIGZw cmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hf ZHVtcDogc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCA9ICVzXG4iLAotKyAgICAgICAg ICAgICAgICAgICAgICBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4KTsK LSsgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgImdk YmFyY2hfZHVtcDogc3RhcF9yZWdpc3Rlcl9wcmVmaXggPSAlc1xuIiwKLSsgICAgICAgICAgICAg ICAgICAgICAgZ2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9wcmVmaXgpOwotKyAgZnByaW50Zl91bmZp bHRlcmVkIChmaWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBzdGFw X3JlZ2lzdGVyX3N1Zml4ID0gJXNcbiIsCi0rICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2gt PnN0YXBfcmVnaXN0ZXJfc3VmaXgpOwotKyAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAotICAg ICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX3N0YXRpY190cmFuc2Zv cm1fbmFtZV9wKCkgPSAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9zdGF0 aWNfdHJhbnNmb3JtX25hbWVfcCAoZ2RiYXJjaCkpOwotICAgZnByaW50Zl91bmZpbHRlcmVkIChm aWxlLAotQEAgLTM4MzQsNiArMzkwMCwxOTAgQEAgc2V0X2dkYmFyY2hfZ2V0X3N5c2NhbGxfbnVt YmVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgIGdkYmFyY2gtPmdldF9zeXNjYWxsX251 bWJlciA9IGdldF9zeXNjYWxsX251bWJlcjsKLSB9Ci0gCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJj aF9zdGFwX2ludGVnZXJfcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSt7Ci0rICBn ZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOwotKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9p bnRlZ2VyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KLSsgIGlmIChnZGJhcmNoX2RlYnVnID49 IDIpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9p bnRlZ2VyX3ByZWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfaW50ZWdl cl9wcmVmaXg7Ci0rfQotKwotK3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICogc3RhcF9pbnRlZ2VyX3ByZWZpeCkKLSt7Ci0rICBnZGJhcmNoLT5z dGFwX2ludGVnZXJfcHJlZml4ID0gc3RhcF9pbnRlZ2VyX3ByZWZpeDsKLSt9Ci0rCi0rY29uc3Qg Y2hhciAqCi0rZ2RiYXJjaF9zdGFwX2ludGVnZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7Ci0rICAvKiBTa2lwIHZl cmlmeSBvZiBzdGFwX2ludGVnZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCi0rICBpZiAoZ2Ri YXJjaF9kZWJ1ZyA+PSAyKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJn ZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gt PnN0YXBfaW50ZWdlcl9zdWZpeDsKLSt9Ci0rCi0rdm9pZAotK3NldF9nZGJhcmNoX3N0YXBfaW50 ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9pbnRlZ2VyX3N1Zml4KQotK3sKLSsgIGdk YmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCA9IHN0YXBfaW50ZWdlcl9zdWZpeDsKLSt9Ci0rCi0r Y29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpCi0rewotKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKLSsgIC8q IFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfcHJlZml4LCBpbnZhbGlkX3AgPT0gMCAqLwot KyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLCAiZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0 dXJuIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfcHJlZml4OwotK30KLSsKLSt2b2lkCi0rc2V0X2dk YmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rl cl9wcmVmaXgpCi0rewotKyAgZ2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9wcmVmaXggPSBzdGFwX3Jl Z2lzdGVyX3ByZWZpeDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX3JlZ2lz dGVyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChn ZGJhcmNoICE9IE5VTEwpOwotKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9yZWdpc3Rlcl9zdWZp eCwgaW52YWxpZF9wID09IDAgKi8KLSsgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCi0rICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9zdWZp eCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfc3VmaXg7Ci0r fQotKwotK3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3N1Zml4IChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj aGFyICogc3RhcF9yZWdpc3Rlcl9zdWZpeCkKLSt7Ci0rICBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVy X3N1Zml4ID0gc3RhcF9yZWdpc3Rlcl9zdWZpeDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2Ri YXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpCi0rewotKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKLSsgIC8qIFNraXAg dmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4LCBpbnZhbGlkX3AgPT0g MCAqLwotKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCBj YWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25f cHJlZml4OwotK30KLSsKLSt2b2lkCi0rc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVj dGlvbl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9p bmRpcmVjdGlvbl9wcmVmaXgpCi0rewotKyAgZ2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9pbmRpcmVj dGlvbl9wcmVmaXggPSBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeDsKLSt9Ci0rCi0r Y29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5V TEwpOwotKyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZp eCwgaW52YWxpZF9wID09IDAgKi8KLSsgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCi0rICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRp cmVjdGlvbl9zdWZpeCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfcmVnaXN0 ZXJfaW5kaXJlY3Rpb25fc3VmaXg7Ci0rfQotKwotK3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX3Jl Z2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3Rh cF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCkKLSt7Ci0rICBnZGJhcmNoLT5zdGFwX3JlZ2lz dGVyX2luZGlyZWN0aW9uX3N1Zml4ID0gc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeDsK LSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXgg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0g TlVMTCk7Ci0rICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXgsIGlu dmFsaWRfcCA9PSAwICovCi0rICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQotKyAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZp eCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZp eDsKLSt9Ci0rCi0rdm9pZAotK3NldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4KQotK3sKLSsgIGdk YmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCA9IHN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZp eDsKLSt9Ci0rCi0rY29uc3QgY2hhciAqCi0rZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9zdWZp eCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAh PSBOVUxMKTsKLSsgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4LCBp bnZhbGlkX3AgPT0gMCAqLwotKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9zdWZp eCBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4 OwotK30KLSsKLSt2b2lkCi0rc2V0X2dkYmFyY2hfc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICogc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXgpCi0rewotKyAgZ2RiYXJj aC0+c3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggPSBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeDsKLSt9 Ci0rCi0raW50Ci0rZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7Ci0rICBy ZXR1cm4gZ2RiYXJjaC0+c3RhcF9pc19zaW5nbGVfb3BlcmFuZCAhPSBOVUxMOwotK30KLSsKLStp bnQKLStnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBjb25zdCBjaGFyICpzKQotK3sKLSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7 Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoLT5zdGFwX2lzX3NpbmdsZV9vcGVyYW5kICE9IE5VTEwp OwotKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIGNhbGxlZFxuIik7Ci0r ICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoZ2RiYXJjaCwgcyk7Ci0r fQotKwotK3ZvaWQKLStzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmRfZnR5cGUgc3RhcF9pc19zaW5nbGVfb3BlcmFu ZCkKLSt7Ci0rICBnZGJhcmNoLT5zdGFwX2lzX3NpbmdsZV9vcGVyYW5kID0gc3RhcF9pc19zaW5n bGVfb3BlcmFuZDsKLSt9Ci0rCi0raW50Ci0rZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9r ZW5fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgZ2RiX2Fzc2VydCAoZ2RiYXJj aCAhPSBOVUxMKTsKLSsgIHJldHVybiBnZGJhcmNoLT5zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4g IT0gTlVMTDsKLSt9Ci0rCi0raW50Ci0rZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4g KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQotK3sK LSsgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNo LT5zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4gIT0gTlVMTCk7Ci0rICBpZiAoZ2RiYXJjaF9kZWJ1 ZyA+PSAyKQotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNoX3N0 YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiBjYWxsZWRcbiIpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnN0 YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoZ2RiYXJjaCwgcCk7Ci0rfQotKwotK3ZvaWQKLStzZXRf Z2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9zdGFwX3Bh cnNlX3NwZWNpYWxfdG9rZW5fZnR5cGUgc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKQotK3sKLSsg IGdkYmFyY2gtPnN0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiA9IHN0YXBfcGFyc2Vfc3BlY2lhbF90 b2tlbjsKLSt9Ci0rCi0gaW50Ci0gZ2RiYXJjaF9oYXNfZ2xvYmFsX3NvbGlzdCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gpCi0gewotZGlmZiAtLWdpdCBhL2dkYi9nZGJhcmNoLmggYi9nZGIvZ2Ri YXJjaC5oCi1pbmRleCAwNDQyODFjLi4yOTRhNjNmIDEwMDY0NAotLS0tIGEvZ2RiL2dkYmFyY2gu aAotKysrIGIvZ2RiL2dkYmFyY2guaAotQEAgLTU1LDYgKzU1LDcgQEAgc3RydWN0IGNvcmVfcmVn c2V0X3NlY3Rpb247Ci0gc3RydWN0IHN5c2NhbGw7Ci0gc3RydWN0IGFnZW50X2V4cHI7Ci0gc3Ry dWN0IGF4c192YWx1ZTsKLStzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvOwotIAotIC8qIFRoZSBhcmNo aXRlY3R1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb25uZWN0aW9uIHRvIHRoZSB0YXJnZXQuCi0g IAotQEAgLTk3OSw2ICs5ODAsMTI1IEBAIHR5cGVkZWYgTE9OR0VTVCAoZ2RiYXJjaF9nZXRfc3lz Y2FsbF9udW1iZXJfZnR5cGUpIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgcHRpCi0gZXh0ZXJu IExPTkdFU1QgZ2RiYXJjaF9nZXRfc3lzY2FsbF9udW1iZXIgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBwdGlkX3QgcHRpZCk7Ci0gZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfZ2V0X3N5c2NhbGxf bnVtYmVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9nZXRfc3lzY2FsbF9udW1i ZXJfZnR5cGUgKmdldF9zeXNjYWxsX251bWJlcik7Ci0gCi0rLyogU3lzdGVtVGFwIHJlbGF0ZWQg ZmllbGRzIGFuZCBmdW5jdGlvbnMuCi0rICAgUHJlZml4IHVzZWQgdG8gbWFyayBhbiBpbnRlZ2Vy IGNvbnN0YW50IG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseQotKyAgIEZvciBleGFtcGxl LCBvbiB4ODYgaW50ZWdlciBjb25zdGFudHMgYXJlIHdyaXR0ZW4gYXM6Ci0rICAKLSsgICAgJDEw IDs7IGludGVnZXIgY29uc3RhbnQgMTAKLSsgIAotKyAgIGluIHRoaXMgY2FzZSwgdGhpcyBwcmVm aXggd291bGQgYmUgdGhlIGNoYXJhY3RlciBgJCcuICovCi0rCi0rZXh0ZXJuIGNvbnN0IGNoYXIg KiBnZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsK LStleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqIHN0YXBfaW50ZWdlcl9wcmVmaXgpOwotKwotKy8q IFN1Zml4IHVzZWQgdG8gbWFyayBhbiBpbnRlZ2VyIGNvbnN0YW50IG9uIHRoZSBhcmNoaXRlY3R1 cmUncyBhc3NlbWJseS4gKi8KLSsKLStleHRlcm4gY29uc3QgY2hhciAqIGdkYmFyY2hfc3RhcF9p bnRlZ2VyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0rZXh0ZXJuIHZvaWQgc2V0 X2dkYmFyY2hfc3RhcF9pbnRlZ2VyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29u c3QgY2hhciAqIHN0YXBfaW50ZWdlcl9zdWZpeCk7Ci0rCi0rLyogUHJlZml4IHVzZWQgdG8gbWFy ayBhIHJlZ2lzdGVyIG5hbWUgb24gdGhlIGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5LgotKyAgIEZv ciBleGFtcGxlLCBvbiB4ODYgdGhlIHJlZ2lzdGVyIG5hbWUgaXMgd3JpdHRlbiBhczoKLSsgIAot KyAgICAlZWF4IDs7IHJlZ2lzdGVyIGVheAotKyAgCi0rICAgaW4gdGhpcyBjYXNlLCB0aGlzIHBy ZWZpeCB3b3VsZCBiZSB0aGUgY2hhcmFjdGVyIGAlJy4gKi8KLSsKLStleHRlcm4gY29uc3QgY2hh ciAqIGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo KTsKLStleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVyX3ByZWZpeCk7Ci0r Ci0rLyogU3VmaXggdXNlZCB0byBtYXJrIGEgcmVnaXN0ZXIgbmFtZSBvbiB0aGUgYXJjaGl0ZWN0 dXJlJ3MgYXNzZW1ibHkgKi8KLSsKLStleHRlcm4gY29uc3QgY2hhciAqIGdkYmFyY2hfc3RhcF9y ZWdpc3Rlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwotK2V4dGVybiB2b2lkIHNl dF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBj b25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9zdWZpeCk7Ci0rCi0rLyogUHJlZml4IHVzZWQgdG8g bWFyayBhIHJlZ2lzdGVyIGluZGlyZWN0aW9uIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJs eS4KLSsgICBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBpbmRpcmVjdGlvbiBpcyB3 cml0dGVuIGFzOgotKyAgCi0rICAgICglZWF4KSA7OyBpbmRpcmVjdGluZyBlYXgKLSsgIAotKyAg IGluIHRoaXMgY2FzZSwgdGhpcyBwcmVmaXggd291bGQgYmUgdGhlIGNoYXJhdGVyIGAoJy4KLSsg IAotKyAgIFBsZWFzZSBub3RlIHRoYXQgd2UgdXNlIHRoZSBpbmRpcmVjdGlvbiBwcmVmaXggYWxz byBmb3IgcmVnaXN0ZXIKLSsgICBkaXNwbGFjZW1lbnQsIGUuZy4sIGA0KCVlYXgpJyBvbiB4ODYu ICovCi0rCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJl Y3Rpb25fcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7Ci0rZXh0ZXJuIHZvaWQgc2V0 X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXgp OwotKwotKy8qIFN1Zml4IHVzZWQgdG8gbWFyayBhIHJlZ2lzdGVyIGluZGlyZWN0aW9uIG9uIHRo ZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseS4KLSsgICBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSBy ZWdpc3RlciBpbmRpcmVjdGlvbiBpcyB3cml0dGVuIGFzOgotKyAgCi0rICAgICglZWF4KSA7OyBp bmRpcmVjdGluZyBlYXgKLSsgIAotKyAgIGluIHRoaXMgY2FzZSwgdGhpcyBwcmVmaXggd291bGQg YmUgdGhlIGNoYXJhdGVyIGApJy4KLSsgIAotKyAgIFBsZWFzZSBub3RlIHRoYXQgd2UgdXNlIHRo ZSBpbmRpcmVjdGlvbiBzdWZpeCBhbHNvIGZvciByZWdpc3RlcgotKyAgIGRpc3BsYWNlbWVudCwg ZS5nLiwgYDQoJWVheCknIG9uIHg4Ni4gKi8KLSsKLStleHRlcm4gY29uc3QgY2hhciAqIGdkYmFy Y2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gpOwotK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25f c3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rl cl9pbmRpcmVjdGlvbl9zdWZpeCk7Ci0rCi0rLyogUHJlZml4IHVzZWQgdG8gbmFtZSBhIHJlZ2lz dGVyIHVzaW5nIEdEQidzIG5vbWVuY2xhdHVyZS4KLSsgIAotKyAgIEZvciBleGFtcGxlLCBvbiBQ UEMgYSByZWdpc3RlciBpcyByZXByZXNlbnRlZCBieSBhIG51bWJlciBpbiB0aGUgYXNzZW1ibHkK LSsgICBsYW5ndWFnZSAoZS5nLiwgYDEwJyBpcyB0aGUgMTB0aCBnZW5lcmFsLXB1cnBvc2UgcmVn aXN0ZXIpLiAgSG93ZXZlciwKLSsgICBpbnNpZGUgR0RCIHRoaXMgc2FtZSByZWdpc3RlciBoYXMg YW4gYHInIGFwcGVuZGVkIHRvIGl0cyBuYW1lLCBzbyB0aGUgMTB0aAotKyAgIHJlZ2lzdGVyIHdv dWxkIGJlIHJlcHJlc2VudGVkIGFzIGByMTAnIGludGVybmFsbHkuICovCi0rCi0rZXh0ZXJuIGNv bnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpOwotK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVy X3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9y ZWdpc3Rlcl9wcmVmaXgpOwotKwotKy8qIFN1Zml4IHVzZWQgdG8gbmFtZSBhIHJlZ2lzdGVyIHVz aW5nIEdEQidzIG5vbWVuY2xhdHVyZS4gKi8KLSsKLStleHRlcm4gY29uc3QgY2hhciAqIGdkYmFy Y2hfc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKLStl eHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCk7Ci0r Ci0rLyogQ2hlY2sgaWYgUyBpcyBhIHNpbmdsZSBvcGVyYW5kLgotKyAgCi0rICAgU2luZ2xlIG9w ZXJhbmRzIGNhbiBiZToKLSsgICAgLSBMaXRlcmFsIGludGVnZXJzLCBlLmcuIGAkMTAnIG9uIHg4 NgotKyAgICAtIFJlZ2lzdGVyIGFjY2VzcywgZS5nLiBgJWVheCcgb24geDg2Ci0rICAgIC0gUmVn aXN0ZXIgaW5kaXJlY3Rpb24sIGUuZy4gYCglZWF4KScgb24geDg2Ci0rICAgIC0gUmVnaXN0ZXIg ZGlzcGxhY2VtZW50LCBlLmcuIGA0KCVlYXgpJyBvbiB4ODYKLSsgIAotKyAgIFRoaXMgZnVuY3Rp b24gc2hvdWxkIGNoZWNrIGZvciB0aGVzZSBwYXR0ZXJucyBvbiB0aGUgc3RyaW5nCi0rICAgYW5k IHJldHVybiAxIGlmIHNvbWUgd2VyZSBmb3VuZCwgb3IgemVybyBvdGhlcndpc2UuICBQbGVhc2Ug dHJ5IHRvIG1hdGNoCi0rICAgYXMgbXVjaCBpbmZvIGFzIHlvdSBjYW4gZnJvbSB0aGUgc3RyaW5n LCBpLmUuLCBpZiB5b3UgaGF2ZSB0byBtYXRjaAotKyAgIHNvbWV0aGluZyBsaWtlIGAoJScsIGRv IG5vdCBtYXRjaCBqdXN0IHRoZSBgKCcuICovCi0rCi0rZXh0ZXJuIGludCBnZGJhcmNoX3N0YXBf aXNfc2luZ2xlX29wZXJhbmRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpOwotKwotK3R5cGVk ZWYgaW50IChnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmRfZnR5cGUpIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqcyk7Ci0rZXh0ZXJuIGludCBnZGJhcmNoX3N0YXBf aXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICpz KTsKLStleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX2Z0eXBl ICpzdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKLSsKLSsvKiBGdW5jdGlvbiB1c2VkIHRvIGhhbmRs ZSBhICJzcGVjaWFsIGNhc2UiIGluIHRoZSBwYXJzZXIuCi0rICAKLSsgICBBICJzcGVjaWFsIGNh c2UiIGlzIGNvbnNpZGVyZWQgdG8gYmUgYW4gdW5rbm93biB0b2tlbiwgaS5lLiwgYSB0b2tlbgot KyAgIHRoYXQgdGhlIHBhcnNlciBkb2VzIG5vdCBrbm93IGhvdyB0byBwYXJzZS4gIEEgZ29vZCBl eGFtcGxlIG9mIHNwZWNpYWwKLSsgICBjYXNlIHdvdWxkIGJlIEFSTSdzIHJlZ2lzdGVyIGRpc3Bs YWNlbWVudCBzeW50YXg6Ci0rICAKLSsgICAgW1IwLCAjNF0gIDs7IGRpc3BsYWNpbmcgUjAgYnkg NAotKyAgCi0rICAgU2luY2UgdGhlIHBhcnNlciBhc3N1bWVzIHRoYXQgYSByZWdpc3RlciBkaXNw bGFjZW1lbnQgaXMgb2YgdGhlIGZvcm06Ci0rICAKLSsgICAgPG51bWJlcj4gPGluZGlyZWN0aW9u X3ByZWZpeD4gPHJlZ2lzdGVyX25hbWU+IDxpbmRpcmVjdGlvbl9zdWZpeD4KLSsgIAotKyAgIGl0 IG1lYW5zIHRoYXQgaXQgd2lsbCBub3QgYmUgYWJsZSB0byByZWNvZ25pemUgYW5kIHBhcnNlIHRo aXMgb2RkIHN5bnRheC4KLSsgICBUaGVyZWZvcmUsIHdlIHNob3VsZCBhZGQgYSBzcGVjaWFsIGNh c2UgZnVuY3Rpb24gdGhhdCB3aWxsIGhhbmRsZSB0aGlzIHRva2VuLgotKyAgCi0rICAgVGhpcyBm dW5jdGlvbiBzaG91bGQgZ2VuZXJhdGUgdGhlIHByb3BlciBleHByZXNzaW9uIGZvcm0gb2YgdGhl IGV4cHJlc3Npb24KLSsgICB1c2luZyBHREIncyBpbnRlcm5hbCBleHByZXNzaW9uIG1lY2hhbmlz bSAoZS5nLiwgYHdyaXRlX2V4cF9lbHRfb3Bjb2RlJwotKyAgIGFuZCBzbyBvbikuICBJdCBzaG91 bGQgYWxzbyByZXR1cm4gMSBpZiB0aGUgcGFyc2luZyB3YXMgc3VjY2Vzc2Z1bCwgb3IgemVybwot KyAgIGlmIHRoZSB0b2tlbiB3YXMgbm90IHJlY29nbml6ZWQgYXMgYSBzcGVjaWFsIHRva2VuIChp biB0aGlzIGNhc2UsIHJldHVybmluZwotKyAgIHplcm8gbWVhbnMgdGhhdCB0aGUgc3BlY2lhbCBw YXJzZXIgaXMgZGVmZXJyaW5nIHRoZSBwYXJzaW5nIHRvIHRoZSBnZW5lcmljCi0rICAgcGFyc2Vy KSwgYW5kIHNob3VsZCBhZHZhbmNlIHRoZSBidWZmZXIgcG9pbnRlciAocC0+YXJnKS4gKi8KLSsK LStleHRlcm4gaW50IGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX3AgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoKTsKLSsKLSt0eXBlZGVmIGludCAoZ2RiYXJjaF9zdGFwX3BhcnNlX3Nw ZWNpYWxfdG9rZW5fZnR5cGUpIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHN0YXBf cGFyc2VfaW5mbyAqcCk7Ci0rZXh0ZXJuIGludCBnZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90 b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnAp OwotK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX2Z0 eXBlICpzdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4pOwotKwotIC8qIFRydWUgaWYgdGhlIGxpc3Qg b2Ygc2hhcmVkIGxpYnJhcmllcyBpcyBvbmUgYW5kIG9ubHkgZm9yIGFsbAotICAgIHByb2Nlc3Nl cywgYXMgb3Bwb3NlZCB0byBhIGxpc3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyBwZXIgaW5mZXJpb3Iu Ci0gICAgVGhpcyB1c3VhbGx5IG1lYW5zIHRoYXQgYWxsIHByb2Nlc3NlcywgYWx0aG91Z2ggbWF5 IG9yIG1heSBub3Qgc2hhcmUKLWRpZmYgLS1naXQgYS9nZGIvZ2RiYXJjaC5zaCBiL2dkYi9nZGJh cmNoLnNoCi1pbmRleCAzNzI4MWJhLi44NzlmYWI3IDEwMDc1NQotLS0tIGEvZ2RiL2dkYmFyY2gu c2gKLSsrKyBiL2dkYi9nZGJhcmNoLnNoCi1AQCAtNzkyLDYgKzc5MiwxMDEgQEAgTTp2b2lkOnJl Y29yZF9zcGVjaWFsX3N5bWJvbDpzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXN5bWJvbCAqc3lt Om9iamZpbGUsIHN5bQotICMgR2V0IGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBzeXN0ZW0gY2FsbHMg aW5mb3JtYXRpb24gZnJvbSByZWdpc3RlcnMuCi0gTTpMT05HRVNUOmdldF9zeXNjYWxsX251bWJl cjpwdGlkX3QgcHRpZDpwdGlkCi0gCi0rIyBTeXN0ZW1UYXAgcmVsYXRlZCBmaWVsZHMgYW5kIGZ1 bmN0aW9ucy4KLSsKLSsjIFByZWZpeCB1c2VkIHRvIG1hcmsgYW4gaW50ZWdlciBjb25zdGFudCBv biB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkKLSsjIEZvciBleGFtcGxlLCBvbiB4ODYgaW50 ZWdlciBjb25zdGFudHMgYXJlIHdyaXR0ZW4gYXM6Ci0rIwotKyMgIFwkMTAgOzsgaW50ZWdlciBj b25zdGFudCAxMAotKyMKLSsjIGluIHRoaXMgY2FzZSwgdGhpcyBwcmVmaXggd291bGQgYmUgdGhl IGNoYXJhY3RlciBcYFwkXCcuCi0rdjpjb25zdCBjaGFyICo6c3RhcF9pbnRlZ2VyX3ByZWZpeDo6 OjA6MDo6MDpnZGJhcmNoLT5zdGFwX2ludGVnZXJfcHJlZml4Ci0rCi0rIyBTdWZpeCB1c2VkIHRv IG1hcmsgYW4gaW50ZWdlciBjb25zdGFudCBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHku Ci0rdjpjb25zdCBjaGFyICo6c3RhcF9pbnRlZ2VyX3N1Zml4Ojo6MDowOjowOmdkYmFyY2gtPnN0 YXBfaW50ZWdlcl9zdWZpeAotKwotKyMgUHJlZml4IHVzZWQgdG8gbWFyayBhIHJlZ2lzdGVyIG5h bWUgb24gdGhlIGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5LgotKyMgRm9yIGV4YW1wbGUsIG9uIHg4 NiB0aGUgcmVnaXN0ZXIgbmFtZSBpcyB3cml0dGVuIGFzOgotKyMKLSsjICBcJWVheCA7OyByZWdp c3RlciBlYXgKLSsjCi0rIyBpbiB0aGlzIGNhc2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBj aGFyYWN0ZXIgXGBcJVwnLgotK3Y6Y29uc3QgY2hhciAqOnN0YXBfcmVnaXN0ZXJfcHJlZml4Ojo6 MDowOjowOmdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfcHJlZml4Ci0rCi0rIyBTdWZpeCB1c2VkIHRv IG1hcmsgYSByZWdpc3RlciBuYW1lIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseQotK3Y6 Y29uc3QgY2hhciAqOnN0YXBfcmVnaXN0ZXJfc3VmaXg6OjowOjA6OjA6Z2RiYXJjaC0+c3RhcF9y ZWdpc3Rlcl9zdWZpeAotKwotKyMgUHJlZml4IHVzZWQgdG8gbWFyayBhIHJlZ2lzdGVyIGluZGly ZWN0aW9uIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseS4KLSsjIEZvciBleGFtcGxlLCBv biB4ODYgdGhlIHJlZ2lzdGVyIGluZGlyZWN0aW9uIGlzIHdyaXR0ZW4gYXM6Ci0rIwotKyMgIFwo XCVlYXhcKSA7OyBpbmRpcmVjdGluZyBlYXgKLSsjCi0rIyBpbiB0aGlzIGNhc2UsIHRoaXMgcHJl Zml4IHdvdWxkIGJlIHRoZSBjaGFyYXRlciBcYFwoXCcuCi0rIwotKyMgUGxlYXNlIG5vdGUgdGhh dCB3ZSB1c2UgdGhlIGluZGlyZWN0aW9uIHByZWZpeCBhbHNvIGZvciByZWdpc3RlcgotKyMgZGlz cGxhY2VtZW50LCBlLmcuLCBcYDRcKFwlZWF4XClcJyBvbiB4ODYuCi0rdjpjb25zdCBjaGFyICo6 c3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXg6OjowOjA6OjA6Z2RiYXJjaC0+c3RhcF9y ZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXgKLSsKLSsjIFN1Zml4IHVzZWQgdG8gbWFyayBhIHJl Z2lzdGVyIGluZGlyZWN0aW9uIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJseS4KLSsjIEZv ciBleGFtcGxlLCBvbiB4ODYgdGhlIHJlZ2lzdGVyIGluZGlyZWN0aW9uIGlzIHdyaXR0ZW4gYXM6 Ci0rIwotKyMgIFwoXCVlYXhcKSA7OyBpbmRpcmVjdGluZyBlYXgKLSsjCi0rIyBpbiB0aGlzIGNh c2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYXRlciBcYFwpXCcuCi0rIwotKyMgUGxl YXNlIG5vdGUgdGhhdCB3ZSB1c2UgdGhlIGluZGlyZWN0aW9uIHN1Zml4IGFsc28gZm9yIHJlZ2lz dGVyCi0rIyBkaXNwbGFjZW1lbnQsIGUuZy4sIFxgNFwoXCVlYXhcKVwnIG9uIHg4Ni4KLSt2OmNv bnN0IGNoYXIgKjpzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4Ojo6MDowOjowOmdkYmFy Y2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXgKLSsKLSsjIFByZWZpeCB1c2VkIHRv IG5hbWUgYSByZWdpc3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuCi0rIwotKyMgRm9yIGV4 YW1wbGUsIG9uIFBQQyBhIHJlZ2lzdGVyIGlzIHJlcHJlc2VudGVkIGJ5IGEgbnVtYmVyIGluIHRo ZSBhc3NlbWJseQotKyMgbGFuZ3VhZ2UgKGUuZy4sIFxgMTBcJyBpcyB0aGUgMTB0aCBnZW5lcmFs LXB1cnBvc2UgcmVnaXN0ZXIpLiAgSG93ZXZlciwKLSsjIGluc2lkZSBHREIgdGhpcyBzYW1lIHJl Z2lzdGVyIGhhcyBhbiBcYHJcJyBhcHBlbmRlZCB0byBpdHMgbmFtZSwgc28gdGhlIDEwdGgKLSsj IHJlZ2lzdGVyIHdvdWxkIGJlIHJlcHJlc2VudGVkIGFzIFxgcjEwXCcgaW50ZXJuYWxseS4KLSt2 OmNvbnN0IGNoYXIgKjpzdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXg6OjowOjA6OjA6Z2RiYXJjaC0+ c3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4Ci0rCi0rIyBTdWZpeCB1c2VkIHRvIG5hbWUgYSByZWdp c3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuCi0rdjpjb25zdCBjaGFyICo6c3RhcF9nZGJf cmVnaXN0ZXJfc3VmaXg6OjowOjA6OjA6Z2RiYXJjaC0+c3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXgK LSsKLSsjIENoZWNrIGlmIFMgaXMgYSBzaW5nbGUgb3BlcmFuZC4KLSsjCi0rIyBTaW5nbGUgb3Bl cmFuZHMgY2FuIGJlOgotKyMgIFwtIExpdGVyYWwgaW50ZWdlcnMsIGUuZy4gXGBcJDEwXCcgb24g eDg2Ci0rIyAgXC0gUmVnaXN0ZXIgYWNjZXNzLCBlLmcuIFxgXCVlYXhcJyBvbiB4ODYKLSsjICBc LSBSZWdpc3RlciBpbmRpcmVjdGlvbiwgZS5nLiBcYFwoXCVlYXhcKVwnIG9uIHg4NgotKyMgIFwt IFJlZ2lzdGVyIGRpc3BsYWNlbWVudCwgZS5nLiBcYDRcKFwlZWF4XClcJyBvbiB4ODYKLSsjCi0r IyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjaGVjayBmb3IgdGhlc2UgcGF0dGVybnMgb24gdGhlIHN0 cmluZwotKyMgYW5kIHJldHVybiAxIGlmIHNvbWUgd2VyZSBmb3VuZCwgb3IgemVybyBvdGhlcndp c2UuICBQbGVhc2UgdHJ5IHRvIG1hdGNoCi0rIyBhcyBtdWNoIGluZm8gYXMgeW91IGNhbiBmcm9t IHRoZSBzdHJpbmcsIGkuZS4sIGlmIHlvdSBoYXZlIHRvIG1hdGNoCi0rIyBzb21ldGhpbmcgbGlr ZSBcYFwoXCVcJywgZG8gbm90IG1hdGNoIGp1c3QgdGhlIFxgXChcJy4KLStNOmludDpzdGFwX2lz X3NpbmdsZV9vcGVyYW5kOmNvbnN0IGNoYXIgKnM6cwotKwotKyMgRnVuY3Rpb24gdXNlZCB0byBo YW5kbGUgYSAic3BlY2lhbCBjYXNlIiBpbiB0aGUgcGFyc2VyLgotKyMKLSsjIEEgInNwZWNpYWwg Y2FzZSIgaXMgY29uc2lkZXJlZCB0byBiZSBhbiB1bmtub3duIHRva2VuLCBpLmUuLCBhIHRva2Vu Ci0rIyB0aGF0IHRoZSBwYXJzZXIgZG9lcyBub3Qga25vdyBob3cgdG8gcGFyc2UuICBBIGdvb2Qg ZXhhbXBsZSBvZiBzcGVjaWFsCi0rIyBjYXNlIHdvdWxkIGJlIEFSTSdzIHJlZ2lzdGVyIGRpc3Bs YWNlbWVudCBzeW50YXg6Ci0rIwotKyMgIFtSMCwgIzRdICA7OyBkaXNwbGFjaW5nIFIwIGJ5IDQK LSsjCi0rIyBTaW5jZSB0aGUgcGFyc2VyIGFzc3VtZXMgdGhhdCBhIHJlZ2lzdGVyIGRpc3BsYWNl bWVudCBpcyBvZiB0aGUgZm9ybToKLSsjCi0rIyAgPG51bWJlcj4gPGluZGlyZWN0aW9uX3ByZWZp eD4gPHJlZ2lzdGVyX25hbWU+IDxpbmRpcmVjdGlvbl9zdWZpeD4KLSsjCi0rIyBpdCBtZWFucyB0 aGF0IGl0IHdpbGwgbm90IGJlIGFibGUgdG8gcmVjb2duaXplIGFuZCBwYXJzZSB0aGlzIG9kZCBz eW50YXguCi0rIyBUaGVyZWZvcmUsIHdlIHNob3VsZCBhZGQgYSBzcGVjaWFsIGNhc2UgZnVuY3Rp b24gdGhhdCB3aWxsIGhhbmRsZSB0aGlzIHRva2VuLgotKyMKLSsjIFRoaXMgZnVuY3Rpb24gc2hv dWxkIGdlbmVyYXRlIHRoZSBwcm9wZXIgZXhwcmVzc2lvbiBmb3JtIG9mIHRoZSBleHByZXNzaW9u Ci0rIyB1c2luZyBHREJcJ3MgaW50ZXJuYWwgZXhwcmVzc2lvbiBtZWNoYW5pc20gKGUuZy4sIFxg d3JpdGVfZXhwX2VsdF9vcGNvZGVcJwotKyMgYW5kIHNvIG9uKS4gIEl0IHNob3VsZCBhbHNvIHJl dHVybiAxIGlmIHRoZSBwYXJzaW5nIHdhcyBzdWNjZXNzZnVsLCBvciB6ZXJvCi0rIyBpZiB0aGUg dG9rZW4gd2FzIG5vdCByZWNvZ25pemVkIGFzIGEgc3BlY2lhbCB0b2tlbiAoaW4gdGhpcyBjYXNl LCByZXR1cm5pbmcKLSsjIHplcm8gbWVhbnMgdGhhdCB0aGUgc3BlY2lhbCBwYXJzZXIgaXMgZGVm ZXJyaW5nIHRoZSBwYXJzaW5nIHRvIHRoZSBnZW5lcmljCi0rIyBwYXJzZXIpLCBhbmQgc2hvdWxk IGFkdmFuY2UgdGhlIGJ1ZmZlciBwb2ludGVyIChwLT5hcmcpLgotK006aW50OnN0YXBfcGFyc2Vf c3BlY2lhbF90b2tlbjpzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwOnAKLSsKLSsKLSAjIFRydWUg aWYgdGhlIGxpc3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyBpcyBvbmUgYW5kIG9ubHkgZm9yIGFsbAot ICMgcHJvY2Vzc2VzLCBhcyBvcHBvc2VkIHRvIGEgbGlzdCBvZiBzaGFyZWQgbGlicmFyaWVzIHBl ciBpbmZlcmlvci4KLSAjIFRoaXMgdXN1YWxseSBtZWFucyB0aGF0IGFsbCBwcm9jZXNzZXMsIGFs dGhvdWdoIG1heSBvciBtYXkgbm90IHNoYXJlCi1AQCAtOTU0LDYgKzEwNDksNyBAQCBzdHJ1Y3Qg Y29yZV9yZWdzZXRfc2VjdGlvbjsKLSBzdHJ1Y3Qgc3lzY2FsbDsKLSBzdHJ1Y3QgYWdlbnRfZXhw cjsKLSBzdHJ1Y3QgYXhzX3ZhbHVlOwotK3N0cnVjdCBzdGFwX3BhcnNlX2luZm87Ci0gCi0gLyog VGhlIGFyY2hpdGVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHRh cmdldC4KLSAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYmluaXQuaW4gYi9nZGIvZ2RiaW5pdC5pbgot aW5kZXggZmZiN2Y1My4uYTJlN2U5NCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJpbml0LmluCi0rKysg Yi9nZGIvZ2RiaW5pdC5pbgotQEAgLTEsNSArMSwxNSBAQAotIGVjaG8gU2V0dGluZyB1cCB0aGUg ZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KK2RpZmYgLS1naXQgYS9nZGIvZ2RiLWdk Yi5nZGIuaW4gYi9nZGIvZ2RiLWdkYi5nZGIuaW4KK2luZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAw NjQ0CistLS0gYS9nZGIvZ2RiLWdkYi5nZGIuaW4KKysrKyBiL2dkYi9nZGItZ2RiLmdkYi5pbgor QEAgLTEsNSArMSwxNSBAQAorIGVjaG8gU2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGRl YnVnZ2luZyBnZGIuXG4KICAKICsjIFNldCB1cCB0aGUgUHl0aG9uIGxpYnJhcnkgYW5kICJyZXF1 aXJlIiBjb21tYW5kLgogK3B5dGhvbgpAQCAtNDExOSw3ICsyNDE0LDcgQEAgaW5kZXggZmZiN2Y1 My4uYTJlN2U5NCAxMDA2NDQKICAKICBiIGludGVybmFsX2Vycm9yCiBkaWZmIC0tZ2l0IGEvZ2Ri L2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYwotaW5kZXggYjA5YzFlYy4uOGUwMjU2YyAxMDA2 NDQKK2luZGV4IGUzZGIxZWQuLjlhMzQ2ZTYgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuYwog KysrIGIvZ2RiL2dkYnR5cGVzLmMKIEBAIC0zNyw2ICszNyw5IEBACkBAIC00MjY0LDcgKzI1NTks NyBAQCBpbmRleCBiMDljMWVjLi44ZTAyNTZjIDEwMDY0NAogIAogICAgcmV0dXJuIHJlc3VsdF90 eXBlOwogIH0KLUBAIC0xNDM4LDYgKzE0OTMsMTA1IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAo dm9pZCkKK0BAIC0xNDMxLDYgKzE0ODYsMTA1IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAodm9p ZCkKICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1YiB0eXBlIGhhcyBO VUxMIG5hbWUiKSk7CiAgfQogIApAQCAtNDM3MCw3ICsyNjY1LDcgQEAgaW5kZXggYjA5YzFlYy4u OGUwMjU2YyAxMDA2NDQKICAvKiBGaW5kIHRoZSByZWFsIHR5cGUgb2YgVFlQRS4gIFRoaXMgZnVu Y3Rpb24gcmV0dXJucyB0aGUgcmVhbCB0eXBlLAogICAgIGFmdGVyIHJlbW92aW5nIGFsbCBsYXll cnMgb2YgdHlwZWRlZnMsIGFuZCBjb21wbGV0aW5nIG9wYXF1ZSBvciBzdHViCiAgICAgdHlwZXMu ICBDb21wbGV0aW9uIGNoYW5nZXMgdGhlIFRZUEUgYXJndW1lbnQsIGJ1dCBzdHJpcHBpbmcgb2YK LUBAIC0xNjA0LDUyICsxNzU4LDM3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBl KQorQEAgLTE1OTcsNTIgKzE3NTEsMzcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5 cGUpCiAgICAgICAgICB9CiAgICAgIH0KICAKQEAgLTQ0NDQsNyArMjczOSw3IEBAIGluZGV4IGIw OWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwog IAl9CiAgICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkFOR0Up Ci1AQCAtMTY1Nyw2ICsxNzk2LDcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUp CitAQCAtMTY1MCw2ICsxNzg5LDcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUp CiAgCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKICAJ ICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7CiAgCX0KQEAgLTQ0NTIsNyArMjc0Nyw3IEBA IGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgICAgIH0KICAKICAgIHR5cGUgPSBtYWtl X3F1YWxpZmllZF90eXBlICh0eXBlLCBpbnN0YW5jZV9mbGFncywgTlVMTCk7Ci1AQCAtMzMxMCwz MyArMzQ1MCw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2 b2lkICppdGVtX3JocykKK0BAIC0zMzA4LDMzICszNDQ4LDQyIEBAIHR5cGVfcGFpcl9lcSAoY29u c3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogIH0KICAKICAvKiBBbGxv Y2F0ZSB0aGUgaGFzaCB0YWJsZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNpdmUgdG8gd2FsawpA QCAtNDUxMCw3ICsyODA1LDcgQEAgaW5kZXggYjA5YzFlYy4uOGUwMjU2YyAxMDA2NDQKICAgICAg cmV0dXJuIHR5cGU7CiAgCiAgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJlIHBvaW50aW5nIHRv IGFueSB0eXBlcyBpbiBvdGhlciBvYmpmaWxlczsKLUBAIC0zMzUxLDkgKzM1MDAsMTAgQEAgY29w eV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzM0OSw5ICsz NDk4LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAog ICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2ggKGdldF90eXBlX2FyY2ggKHR5cGUpKTsKICAK ICAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlwZSB0byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlh dGVseSwgaW4gY2FzZQpAQCAtNDUyNCw3ICsyODE5LDcgQEAgaW5kZXggYjA5YzFlYy4uOGUwMjU2 YyAxMDA2NDQKICAgIHN0b3JlZC0+b2xkID0gdHlwZTsKICAgIHN0b3JlZC0+bmV3ID0gbmV3X3R5 cGU7CiAgICAqc2xvdCA9IHN0b3JlZDsKLUBAIC0zMzY0LDYgKzM1MTQsMjEgQEAgY29weV90eXBl X3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzM2Miw2ICszNTEyLDIx IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQ RV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOwogICAgVFlQRV9PV05FUiAobmV3X3R5cGUp LmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKQEAgLTQ1NDYsNyArMjg0MSw3IEBA IGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkK ICAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsK ICAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkKLUBAIC0zMzcyLDEyICszNTM3LDQ4IEBAIGNv cHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTMzNzAsMTIg KzM1MzUsNDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgICBUWVBFX0lOU1RBTkNFX0ZMQUdTIChuZXdfdHlwZSkgPSBUWVBFX0lOU1RBTkNFX0ZMQUdT ICh0eXBlKTsKICAgIFRZUEVfTEVOR1RIIChuZXdfdHlwZSkgPSBUWVBFX0xFTkdUSCAodHlwZSk7 CiAgCkBAIC00NTk1LDcgKzI4OTAsNyBAQCBpbmRleCBiMDljMWVjLi44ZTAyNTZjIDEwMDY0NAog ICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBYQ0FMTE9DIChuZmllbGRzLCBzdHJ1Y3Qg ZmllbGQpOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKyspCiAgCXsKLUBAIC0z Mzg2LDggKzM1ODcsOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKK0BAIC0zMzg0LDggKzM1ODUsOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKICAJICBUWVBFX0ZJRUxEX0JJVFNJWkUgKG5ld190eXBlLCBpKSA9 IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaSk7CiAgCSAgaWYgKFRZUEVfRklFTERfVFlQRSAo dHlwZSwgaSkpCiAgCSAgICBUWVBFX0ZJRUxEX1RZUEUgKG5ld190eXBlLCBpKQpAQCAtNDYwNiw3 ICsyOTAxLDcgQEAgaW5kZXggYjA5YzFlYy4uOGUwMjU2YyAxMDA2NDQKICAJICBpZiAoVFlQRV9G SUVMRF9OQU1FICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUsIGkp ID0gCiAgCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOwotQEAgLTM0 MTQsMjQgKzM2MTUsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorQEAgLTM0MTYsMjQgKzM2MTcsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTQ3OTgsNyArMzA5Myw3 IEBAIGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgICAvKiBNYXliZSBjb3B5IHRoZSB0 eXBlX3NwZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8g bm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zNDQ4LDYgKzM4MDksMTcg QEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzQ1 MCw2ICszODExLDE3IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAogICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTQ4MTYsNyArMzExMSw3IEBAIGlu ZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAwNjQ0CiAgLyogTWFrZSBhIGNvcHkgb2YgdGhlIGdpdmVu IFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCiAgICAgdHlwZXMgYXJl IG5vdCBwcmVzZXJ2ZWQuCiAgICAgCi1AQCAtMzQ3MCw2ICszODQyLDIwMSBAQCBjb3B5X3R5cGUg KGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTM0NzIsNiArMzg0NCwyMDEgQEAgY29weV90 eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICAgIHJldHVybiBuZXdfdHlwZTsKICB9CiAg CkBAIC01MDE4LDcgKzMzMTMsNyBAQCBpbmRleCBiMDljMWVjLi44ZTAyNTZjIDEwMDY0NAogIAog IC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMg dHlwZXMuICAqLwogIAotQEAgLTQwMDIsNiArNDU2OSwxMyBAQCB2b2lkCitAQCAtNDAwNSw2ICs0 NTcyLDEzIEBAIHZvaWQKICBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKICB7CiAgICBnZGJ0 eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoZ2RidHlwZXNfcG9z dF9pbml0KTsKQEAgLTUwMzMsNyArMzMyOCw3IEBAIGluZGV4IGIwOWMxZWMuLjhlMDI1NmMgMTAw NjQ0CiAgCiAgICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNz LCAmb3ZlcmxvYWRfZGVidWcsCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2Ri dHlwZXMuaAotaW5kZXggMjA3MGYwMC4uNDBkYjYwNiAxMDA2NDQKK2luZGV4IDg4N2RmZGIuLjZl OTcyZDEgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgK IEBAIC0yMTMsNiArMjEzLDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCkBAIC01 MDk5LDcgKzMzOTQsNyBAQCBpbmRleCAyMDcwZjAwLi40MGRiNjA2IDEwMDY0NAogIC8qIENvbnN0 YW50IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSBoYXMgYQog ICAgIGNvbnN0IG1vZGlmaWVyLiAgKi8KICAKLUBAIC00MDUsNiArNDU0LDE1IEBAIHN0cnVjdCBt YWluX3R5cGUKK0BAIC00MDYsNiArNDU1LDE1IEBAIHN0cnVjdCBtYWluX3R5cGUKICAgIC8qIFRy dWUgaWYgdGhpcyB0eXBlIHdhcyBkZWNsYXJlZCB3aXRoICJjbGFzcyIgcmF0aGVyIHRoYW4KICAg ICAgICJzdHJ1Y3QiLiAgKi8KICAgIHVuc2lnbmVkIGludCBmbGFnX2RlY2xhcmVkX2NsYXNzIDog MTsKQEAgLTUxMTUsNyArMzQxMCw3IEBAIGluZGV4IDIwNzBmMDAuLjQwZGI2MDYgMTAwNjQ0CiAg CiAgICAvKiBUcnVlIGlmIHRoaXMgaXMgYW4gZW51bSB0eXBlIHdpdGggZGlzam9pbnQgdmFsdWVz LiAgVGhpcyBhZmZlY3RzCiAgICAgICBob3cgdGhlIGVudW0gaXMgcHJpbnRlZC4gICovCi1AQCAt NDgzLDYgKzU0MSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNDg2LDYgKzU0NCwyMCBAQCBz dHJ1Y3QgbWFpbl90eXBlCiAgCiAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CiAgCkBAIC01 MTM2LDcgKzM0MzEsNyBAQCBpbmRleCAyMDcwZjAwLi40MGRiNjA2IDEwMDY0NAogICAgLyogRm9y IHN0cnVjdHVyZSBhbmQgdW5pb24gdHlwZXMsIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBmaWVsZC4K ICAgICAgIEZvciBzZXQgYW5kIHBhc2NhbCBhcnJheSB0eXBlcywgdGhlcmUgaXMgb25lICJmaWVs ZCIsCiAgICAgICB3aG9zZSB0eXBlIGlzIHRoZSBkb21haW4gdHlwZSBvZiB0aGUgc2V0IG9yIGFy cmF5LgotQEAgLTU2MywxMyArNjM1LDM0IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01NjgsMTMg KzY0MCwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMK ICAgICAgewpAQCAtNTIyNCw3ICszNTE5LDcgQEAgaW5kZXggMjA3MGYwMC4uNDBkYjYwNiAxMDA2 NDQKICAKICAvKiBDKysgKi8KICAKLUBAIC0xNDgyLDYgKzE1ODcsMTggQEAgZXh0ZXJuIHN0cnVj dCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwK K0BAIC0xNDg5LDYgKzE1OTQsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlf dHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0 eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0 cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTUyNDMsNyArMzUzOCw3IEBAIGluZGV4IDIw NzBmMDAuLjQwZGI2MDYgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfc3RyaW5n X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCiAgCQkJCQlzdHJ1Y3QgdHlwZSAq KTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJpbmdfcmFuZ2VfdHlwZSAoc3RydWN0 IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTE1MjcsNiArMTY0NCwxMCBAQCBleHRlcm4gaW50IGlz X3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKik7CitAQCAtMTUz NCw2ICsxNjUxLDEwIEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlw ZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gaW50IGlzX3VuaXF1ZV9hbmNlc3RvciAo c3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogIApAQCAtNTI1NCw3ICszNTQ5LDcgQEAg aW5kZXggMjA3MGYwMC4uNDBkYjYwNiAxMDA2NDQKICAvKiBPdmVybG9hZCByZXNvbHV0aW9uICov CiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBdKQotQEAgLTE2MDIs MTAgKzE3MjMsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAq LCBpbnQpOworQEAgLTE2MDksMTAgKzE3MzAsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2Vf cHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGll ZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC01MjcwLDIxMDQg KzM1NjUsNzgzIEBAIGluZGV4IDIwNzBmMDAuLjQwZGI2MDYgMTAwNjQ0CiArI2VuZGlmCiArCiAg I2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvaTM4Ni1saW51eC1uYXQu YyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1pbmRleCA0YjFiMjBmLi4zOGU3MDI3IDEwMDY0NAot LS0tIGEvZ2RiL2kzODYtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1A QCAtNzA4LDggKzcwOCw4IEBAIGkzODZfbGludXhfZHJfZ2V0X3N0YXR1cyAodm9pZCkKLSAgIHJl dHVybiBpMzg2X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsKLSB9Ci0g Ci0tLyogQ2FsbGJhY2sgZm9yIGl0ZXJhdGVfb3Zlcl9sd3BzLiAgVXBkYXRlIHRoZSBkZWJ1ZyBy ZWdpc3RlcnMgb2YKLS0gICBMV1AuICAqLwotKy8qIENhbGxiYWNrIGZvciBsaW51eF9uYXRfaXRl cmF0ZV93YXRjaHBvaW50X2x3cHMuICBVcGRhdGUgdGhlIGRlYnVnIHJlZ2lzdGVycwotKyAgIG9m IExXUC4gICovCi0gCi0gc3RhdGljIGludAotIHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJh Y2sgKHN0cnVjdCBsd3BfaW5mbyAqbHdwLCB2b2lkICphcmcpCi1AQCAtNzM1LDkgKzczNSw3IEBA IHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHdwLCB2 b2lkICphcmcpCi0gc3RhdGljIHZvaWQKLSBpMzg2X2xpbnV4X2RyX3NldF9jb250cm9sICh1bnNp Z25lZCBsb25nIGNvbnRyb2wpCi0gewotLSAgcHRpZF90IHBpZF9wdGlkID0gcGlkX3RvX3B0aWQg KHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOwotLQotLSAgaXRlcmF0ZV9vdmVyX2x3cHMg KHBpZF9wdGlkLCB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrLCBOVUxMKTsKLSsgIGxp bnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAodXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19j YWxsYmFjaywgTlVMTCk7Ci0gfQotIAotIC8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNl ZCkgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiB0aGUgY3VycmVudAotQEAgLTc1MCw3ICs3NDgsNyBA QCBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBDT1JFX0FERFIgYWRkcikKLSAK LSAgIGdkYl9hc3NlcnQgKHJlZ251bSA+PSAwICYmIHJlZ251bSA8PSBEUl9MQVNUQUREUiAtIERS X0ZJUlNUQUREUik7Ci0gCi0tICBpdGVyYXRlX292ZXJfbHdwcyAocGlkX3B0aWQsIHVwZGF0ZV9k ZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwpOwotKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0 Y2hwb2ludF9sd3BzICh1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrLCBOVUxMKTsKLSB9 CitkaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKK2luZGV4IDMxNDhkNzIuLmM1 YjQ4MjYgMTAwNjQ0CistLS0gYS9nZGIvbWFpbi5jCisrKysgYi9nZGIvbWFpbi5jCitAQCAtMzcs NiArMzcsNyBAQAogIAotIC8qIENhbGxlZCB3aGVuIHJlc3VtaW5nIGEgdGhyZWFkLgotQEAgLTc3 Miw2ICs3NzAsOSBAQCBpMzg2X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChzdHJ1Y3QgbHdwX2lu Zm8gKmx3cCkKLSAgICAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4 Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci0gICAgICAgaW50IGk7CisgI2luY2x1ZGUgImludGVycHMu aCIKKyAjaW5jbHVkZSAibWFpbi5oIgorKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCisgI2lu Y2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKKyAjaW5jbHVkZSAi cHl0aG9uL3B5dGhvbi5oIgorQEAgLTI4Myw2ICsyODQsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQorICAgY2hhciAqY2RhcmcgPSBOVUxMOworICAgY2hhciAqdHR5YXJnID0gTlVMTDsK ICAKLSsgICAgICAvKiBTZWUgYW1kNjRfbGludXhfcHJlcGFyZV90b19yZXN1bWUgZm9yIExpbnV4 IGtlcm5lbCBub3RlIG9uCi0rCSBpMzg2X2xpbnV4X2RyX3NldCBjYWxscyBvcmRlcmluZy4gICov CisrICBpbnQgcHl0aG9uX3NjcmlwdCA9IDA7CiArCi0gICAgICAgZm9yIChpID0gRFJfRklSU1RB RERSOyBpIDw9IERSX0xBU1RBRERSOyBpKyspCi0gCWlmIChzdGF0ZS0+ZHJfcmVmX2NvdW50W2ld ID4gMCkKLSAJICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtdGRlcC5jIGIvZ2RiL2kz ODYtbGludXgtdGRlcC5jCi1pbmRleCBlYjExNGVmLi5mODBlMDVhIDEwMDY0NAotLS0tIGEvZ2Ri L2kzODYtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMKLUBAIC05MDMs NiArOTAzLDE1IEBAIGkzODZfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5m bywgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGkzODZfbGludXhfZ2V0X3N5c2NhbGxfbnVtYmVyKTsKLSAKLSAgIHNldF9nZGJhcmNo X2dldF9zaWdpbmZvX3R5cGUgKGdkYmFyY2gsIGxpbnV4X2dldF9zaWdpbmZvX3R5cGUpOwotKwot KyAgLyogU3lzdGVtVGFwIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zLiAgKi8KLSsgIHNldF9nZGJh cmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICIkIik7Ci0rICBzZXRfZ2RiYXJjaF9z dGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgIiUiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBf cmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoLCAiKCIpOwotKyAgc2V0X2dkYmFy Y2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCwgIikiKTsKLSsgIHNl dF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKGdkYmFyY2gsIGkzODZfc3RhcF9pc19z aW5nbGVfb3BlcmFuZCk7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4g KGdkYmFyY2gsCi0rCQkJCQlpMzg2X3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbik7Ci0gfQorICAg LyogVGhlc2UgYXJlIHN0YXRpYyBzbyB0aGF0IHdlIGNhbiB0YWtlIHRoZWlyIGFkZHJlc3MgaW4g YW4KKyAgICAgIGluaXRpYWxpemVyLiAgKi8KKyAgIHN0YXRpYyBpbnQgcHJpbnRfaGVscDsKK0BA IC00NzMsMTAgKzQ3NiwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorICAgICAgIHsi cmV0dXJuLWNoaWxkLXJlc3VsdCIsIG5vX2FyZ3VtZW50LCAmcmV0dXJuX2NoaWxkX3Jlc3VsdCwg MX0sCisgICAgICAgeyJ1c2UtZGVwcmVjYXRlZC1pbmRleC1zZWN0aW9ucyIsIG5vX2FyZ3VtZW50 LAorICAgICAgICAmdXNlX2RlcHJlY2F0ZWRfaW5kZXhfc2VjdGlvbnMsIDF9LAorKyNpZiBIQVZF X1BZVEhPTgorKyAgICAgIHsicHl0aG9uIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCisrICAgICAg eyJQIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCisrI2VuZGlmCisgICAgICAgezAsIG5vX2FyZ3Vt ZW50LCAwLCAwfQorICAgICB9OwogIAotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5j ZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbmF0LmMg Yi9nZGIvaTM4Ni1uYXQuYwotaW5kZXggZmExNzgyMy4uODQ2YjJiOCAxMDA2NDQKLS0tLSBhL2dk Yi9pMzg2LW5hdC5jCi0rKysgYi9nZGIvaTM4Ni1uYXQuYwotQEAgLTI1LDYgKzI1LDcgQEAKLSAj aW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgInRhcmdldC5oIgotICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCistICAgIHdoaWxlICgxKQorKyAgICB3 aGlsZSAoIXB5dGhvbl9zY3JpcHQpCisgICAgICAgeworIAlpbnQgb3B0aW9uX2luZGV4OwogIAot IC8qIFN1cHBvcnQgZm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzIGFuZCBicmVha3BvaW50cyB1c2lu ZyB0aGUgaTM4NgotICAgIGRlYnVnIHJlZ2lzdGVycy4KLUBAIC0xNzAsMTQgKzE3MSw4OCBAQCBp Mzg2X2luaXRfZHJlZ3MgKHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUpCi0gICBz dGF0ZS0+ZHJfc3RhdHVzX21pcnJvciAgPSAwOwotIH0KK0BAIC00OTQsNiArNTAxLDkgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAJICBjYXNlIDA6CisgCSAgICAvKiBMb25nIG9wdGlv biB0aGF0IGp1c3Qgc2V0cyBhIGZsYWcuICAqLworIAkgICAgYnJlYWs7CisrCSAgY2FzZSAnUCc6 CisrCSAgICBweXRob25fc2NyaXB0ID0gMTsKKysJICAgIGJyZWFrOworIAkgIGNhc2UgT1BUX1NF OgorIAkgICAgc3ltYXJnID0gb3B0YXJnOworIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKK0BAIC03 MDEsNyArNzExLDMxIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgCi0tLyogVGhlIGxv Y2FsIG1pcnJvciBvZiB0aGUgaW5mZXJpb3IncyBkZWJ1ZyByZWdpc3RlcnMuICBDdXJyZW50bHkg dGhpcwotLSAgIGlzIGEgZ2xvYmFsLCBidXQgaXQgc2hvdWxkIHJlYWxseSBiZSBwZXItaW5mZXJp b3IuICAqLwotLXN0YXRpYyBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgZHJfbWlycm9yOwot Ky8qIFBlci1pbmZlcmlvciBkYXRhIGtleS4gICovCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBpbmZl cmlvcl9kYXRhICppMzg2X2luZmVyaW9yX2RhdGE7Ci0rCi0rLyogUGVyLWluZmVyaW9yIGRhdGEu ICAqLwotK3N0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEKLSsgIHsKLSsgICAgLyogQ29weSBvZiBp Mzg2IGhhcmR3YXJlIGRlYnVnIHJlZ2lzdGVycyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gICov Ci0rICAgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBzdGF0ZTsKLSsgIH07Ci0rCi0rLyog UGVyLWluZmVyaW9yIGhvb2sgZm9yIHJlZ2lzdGVyX2luZmVyaW9yX2RhdGFfd2l0aF9jbGVhbnVw LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2kzODZfaW5mZXJpb3JfZGF0YV9jbGVhbnVwIChzdHJ1 Y3QgaW5mZXJpb3IgKmluZiwgdm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCBpMzg2X2luZmVyaW9y X2RhdGEgKmluZl9kYXRhID0gYXJnOwotKwotKyAgeGZyZWUgKGluZl9kYXRhKTsKLSt9Ci0rCi0r LyogR2V0IGRhdGEgc3BlY2lmaWMgZm9yIElORkVSSU9SX1BUSUQgTFdQLiAgUmV0dXJuIHNwZWNp YWwgZGF0YSBhcmVhCi0rICAgZm9yIHByb2Nlc3NlcyBiZWluZyBkZXRhY2hlZC4gICovCi0rCi0r c3RhdGljIHN0cnVjdCBpMzg2X2luZmVyaW9yX2RhdGEgKgotK2kzODZfaW5mZXJpb3JfZGF0YV9n ZXQgKHZvaWQpCi0rewotKyAgc3RydWN0IGluZmVyaW9yICppbmYgPSBjdXJyZW50X2luZmVyaW9y ICgpOwotKyAgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqaW5mX2RhdGE7Ci0rCi0rICBpbmZf ZGF0YSA9IGluZmVyaW9yX2RhdGEgKGluZiwgaTM4Nl9pbmZlcmlvcl9kYXRhKTsKLSsgIGlmIChp bmZfZGF0YSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgaW5mX2RhdGEgPSB4emFsbG9jIChzaXpl b2YgKCppbmZfZGF0YSkpOwotKyAgICAgIHNldF9pbmZlcmlvcl9kYXRhIChjdXJyZW50X2luZmVy aW9yICgpLCBpMzg2X2luZmVyaW9yX2RhdGEsIGluZl9kYXRhKTsKLSsgICAgfQotKwotKyAgaWYg KGluZi0+cGlkICE9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpCisgICAvKiBOb3cgdGhh dCBnZGJfaW5pdCBoYXMgY3JlYXRlZCB0aGUgaW5pdGlhbCBpbmZlcmlvciwgd2UncmUgaW4KKyAg ICAgIHBvc2l0aW9uIHRvIHNldCBhcmdzIGZvciB0aGF0IGluZmVyaW9yLiAgKi8KKy0gIGlmIChz ZXRfYXJncykKKysgIGlmIChweXRob25fc2NyaXB0KQogKyAgICB7Ci0rICAgICAgLyogSU5GRVJJ T1JfUFRJRCBpcyBiZWluZyBkZXRhY2hlZCBmcm9tIHRoZSBpbmZlcmlvciBJTkYuCi0rCSBQcm92 aWRlIGxvY2FsIGNhY2hlIHNwZWNpZmljIGZvciB0aGUgZGV0YWNoZWQgTFdQLiAgKi8KLSsKLSsg ICAgICBzdGF0aWMgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSBkZXRhY2hlZF9pbmZfZGF0YV9s b2NhbDsKLSsgICAgICBzdGF0aWMgaW50IGRldGFjaGVkX2luZl9waWQgPSAtMTsKLSsKLSsgICAg ICBpZiAoZGV0YWNoZWRfaW5mX3BpZCAhPSBwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKQor KyAgICAgIC8qIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHB5dGhvbiBzY3JpcHQgdG8gZXZhbHVh dGUsIGFuZAorKwkgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgc2NyaXB0 IGZvcgorKwkgcHJvY2Vzc2luZyB0aGVyZS4gICovCisrICAgICAgaWYgKG9wdGluZCA+PSBhcmdj KQogKwl7Ci0rCSAgLyogUmVpbml0aWFsaXplIHRoZSBsb2NhbCBjYWNoZSBpZiBJTkZFUklPUl9Q VElEIGlzCi0rCSAgICAgZGlmZmVyZW50IGZyb20gdGhlIExXUCBsYXN0IGRldGFjaGVkLgotKyAK LSsJICAgICBMaW51eCBrZXJuZWwgYmVmb3JlIDIuNi4zMyBjb21taXQKLSsJICAgICA3MmY2NzRk MjAzY2QyMzA0MjY0MzdjZGNmN2RkNmY2ODFkYWQ4YjBkCi0rCSAgICAgd2lsbCBpbmhlcml0IGhh cmR3YXJlIGRlYnVnIHJlZ2lzdGVycyBmcm9tIHBhcmVudAotKwkgICAgIG9uIGZvcmsvdmZvcmsv Y2xvbmUuICBOZXdlciBMaW51eCBrZXJuZWxzIGNyZWF0ZSBzdWNoIHRhc2tzIHdpdGgKLSsJICAg ICB6ZXJvZWQgZGVidWcgcmVnaXN0ZXJzLgotKwotKwkgICAgIEdEQiB3aWxsIHJlbW92ZSBhbGwg YnJlYWtwb2ludHMgKGFuZCB3YXRjaHBvaW50cykgZnJvbSB0aGUgZm9ya2VkCi0rCSAgICAgb2Zm IHByb2Nlc3MuICBXZSBhbHNvIG5lZWQgdG8gcmVzZXQgdGhlIGRlYnVnIHJlZ2lzdGVycyBpbiB0 aGF0Ci0rCSAgICAgcHJvY2VzcyB0byBiZSBjb21wYXRpYmxlIHdpdGggdGhlIG9sZGVyIExpbnV4 IGtlcm5lbHMuCi0rCi0rCSAgICAgQ29weSB0aGUgZGVidWcgcmVnaXN0ZXJzIG1pcnJvcnMgaW50 byB0aGUgbmV3IHByb2Nlc3Mgc28gdGhhdCBhbGwKLSsJICAgICBicmVha3BvaW50cyBhbmQgd2F0 Y2hwb2ludHMgY2FuIGJlIHJlbW92ZWQgdG9nZXRoZXIuICBUaGUgZGVidWcKLSsJICAgICByZWdp c3RlcnMgbWlycm9yIHdpbGwgYmVjb21lIHplcm9lZCBpbiB0aGUgZW5kIGJlZm9yZSBkZXRhY2hp bmcKLSsJICAgICB0aGUgZm9ya2VkIG9mZiBwcm9jZXNzLiAgKi8KLSsKLSsJICBkZXRhY2hlZF9p bmZfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKLSsJICBtZW1jcHkgKCZkZXRh Y2hlZF9pbmZfZGF0YV9sb2NhbCwgaW5mX2RhdGEsCi0rCQkgIHNpemVvZiAoZGV0YWNoZWRfaW5m X2RhdGFfbG9jYWwpKTsKKysJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRlcnIsCisrCQkJ ICAgICAgXygiJXM6IFB5dGhvbiBzY3JpcHQgZmlsZSBuYW1lIHJlcXVpcmVkXG4iKSwKKysJCQkg ICAgICBhcmd2WzBdKTsKKysJICBleGl0ICgxKTsKICsJfQogKwotKyAgICAgIHJldHVybiAmZGV0 YWNoZWRfaW5mX2RhdGFfbG9jYWw7CisrICAgICAgLyogRklYTUU6IHNob3VsZCBoYW5kbGUgaW5m ZXJpb3IgSS9PIGludGVsbGlnZW50bHkgaGVyZS4KKysJIEUuZy4sIHNob3VsZCBiZSBwb3NzaWJs ZSB0byBydW4gZ2RiIGluIHBpcGVsaW5lIGFuZCBoYXZlCisrCSBQeXRob24gKGFuZCBnZGIpIG91 dHB1dCBnbyB0byBzdGRlcnIgb3IgZmlsZTsgYW5kIGlmIGEKKysJIHByb21wdCBpcyBuZWVkZWQs IG9wZW4gdGhlIHR0eS4gICovCisrICAgICAgcXVpZXQgPSAxOworKyAgICAgIC8qIEZJWE1FOiBz aG91bGQgcmVhZCAuZ2RiaW5pdCBpZiwgYW5kIG9ubHkgaWYsIGEgcHJvbXB0IGlzCisrCSByZXF1 ZXN0ZWQgYnkgdGhlIHNjcmlwdC4gIFRob3VnaC4uLiBtYXliZSB0aGlzIGlzIG5vdAorKwkgaWRl YWw/ICAqLworKyAgICAgIC8qIEZJWE1FOiBsaWtld2lzZSwgcmVhZGluZyBpbiBoaXN0b3J5LiAg Ki8KKysgICAgICBpbmhpYml0X2dkYmluaXQgPSAxOwogKyAgICB9Ci0rCi0rICByZXR1cm4gaW5m X2RhdGE7Ci0rfQotKwotKy8qIEdldCBkZWJ1ZyByZWdpc3RlcnMgc3RhdGUgZm9yIElORkVSSU9S X1BUSUQsIHNlZQotKyAgIGkzODZfaW5mZXJpb3JfZGF0YV9nZXQuICAqLworKyAgZWxzZSBpZiAo c2V0X2FyZ3MpCisgICAgIHsKKyAgICAgICAvKiBUaGUgcmVtYWluaW5nIG9wdGlvbnMgYXJlIHRo ZSBjb21tYW5kLWxpbmUgb3B0aW9ucyBmb3IgdGhlCisgCSBpbmZlcmlvci4gIFRoZSBmaXJzdCBv bmUgaXMgdGhlIHN5bS9leGVjIGZpbGUsIGFuZCB0aGUgcmVzdAorQEAgLTk4MSw3ICsxMDE1LDgg QEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAKLSBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdf c3RhdGUgKgotIGkzODZfZGVidWdfcmVnX3N0YXRlICh2b2lkKQotIHsKLS0gIHJldHVybiAmZHJf bWlycm9yOwotKyAgcmV0dXJuICZpMzg2X2luZmVyaW9yX2RhdGFfZ2V0ICgpLT5zdGF0ZTsKLSB9 Ci0gCi0gLyogV2hldGhlciBvciBub3QgdG8gcHJpbnQgdGhlIG1pcnJvcmVkIGRlYnVnIHJlZ2lz dGVycy4gICovCi1AQCAtMjMwLDcgKzMwNSw5IEBAIHN0YXRpYyBpbnQgaTM4Nl9oYW5kbGVfbm9u YWxpZ25lZF93YXRjaHBvaW50IChzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlCi0g dm9pZAotIGkzODZfY2xlYW51cF9kcmVncyAodm9pZCkKLSB7Ci0tICBpMzg2X2luaXRfZHJlZ3Mg KCZkcl9taXJyb3IpOwotKyAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkz ODZfZGVidWdfcmVnX3N0YXRlICgpOwotKwotKyAgaTM4Nl9pbml0X2RyZWdzIChzdGF0ZSk7Ci0g fQotIAotIC8qIFByaW50IHRoZSB2YWx1ZXMgb2YgdGhlIG1pcnJvcmVkIGRlYnVnIHJlZ2lzdGVy cy4gIFRoaXMgaXMgY2FsbGVkCi1AQCAtNDk0LDIwICs1NzEsMjEgQEAgSW52YWxpZCB2YWx1ZSAl ZCBvZiBvcGVyYXRpb24gaW4gaTM4Nl9oYW5kbGVfbm9uYWxpZ25lZF93YXRjaHBvaW50LlxuIiks Ci0gc3RhdGljIHZvaWQKLSBpMzg2X3VwZGF0ZV9pbmZlcmlvcl9kZWJ1Z19yZWdzIChzdHJ1Y3Qg aTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKm5ld19zdGF0ZSkKLSB7Ci0rICBzdHJ1Y3QgaTM4Nl9kZWJ1 Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci0gICBpbnQgaTsK KyAgIC8qIFJlYWQgaW4gdGhlIG9sZCBoaXN0b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxl cyBoYXZlIGJlZW4KKyAgICAgIHJlYWQuICAqLworLSAgaW5pdF9oaXN0b3J5ICgpOworKyAgaWYg KCFweXRob25fc2NyaXB0KQorKyAgICBpbml0X2hpc3RvcnkgKCk7CiAgCi0gICBBTExfREVCVUdf UkVHSVNURVJTIChpKQorICAgaWYgKGJhdGNoX2ZsYWcpCiAgICAgIHsKLS0gICAgICBpZiAoSTM4 Nl9EUl9WQUNBTlQgKG5ld19zdGF0ZSwgaSkgIT0gSTM4Nl9EUl9WQUNBTlQgKCZkcl9taXJyb3Is IGkpKQotKyAgICAgIGlmIChJMzg2X0RSX1ZBQ0FOVCAobmV3X3N0YXRlLCBpKSAhPSBJMzg2X0RS X1ZBQ0FOVCAoc3RhdGUsIGkpKQotIAlpMzg2X2RyX2xvdy5zZXRfYWRkciAoaSwgbmV3X3N0YXRl LT5kcl9taXJyb3JbaV0pOwotICAgICAgIGVsc2UKLS0JZ2RiX2Fzc2VydCAobmV3X3N0YXRlLT5k cl9taXJyb3JbaV0gPT0gZHJfbWlycm9yLmRyX21pcnJvcltpXSk7Ci0rCWdkYl9hc3NlcnQgKG5l d19zdGF0ZS0+ZHJfbWlycm9yW2ldID09IHN0YXRlLT5kcl9taXJyb3JbaV0pOwotICAgICB9Ci0g Ci0tICBpZiAobmV3X3N0YXRlLT5kcl9jb250cm9sX21pcnJvciAhPSBkcl9taXJyb3IuZHJfY29u dHJvbF9taXJyb3IpCi0rICBpZiAobmV3X3N0YXRlLT5kcl9jb250cm9sX21pcnJvciAhPSBzdGF0 ZS0+ZHJfY29udHJvbF9taXJyb3IpCi0gICAgIGkzODZfZHJfbG93LnNldF9jb250cm9sIChuZXdf c3RhdGUtPmRyX2NvbnRyb2xfbWlycm9yKTsKLSAKLS0gIGRyX21pcnJvciA9ICpuZXdfc3RhdGU7 Ci0rICAqc3RhdGUgPSAqbmV3X3N0YXRlOwotIH0KK0BAIC05OTIsMTMgKzEwMjcsMjUgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgIC8qIFNob3cgdGltZSBhbmQvb3Igc3BhY2UgdXNh Z2UuICAqLworICAgZG9fY2xlYW51cHMgKHByZV9zdGF0X2NoYWluKTsKICAKLSAvKiBJbnNlcnQg YSB3YXRjaHBvaW50IHRvIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB3aGljaCBzdGFydHMgYXQKLUBA IC01MTgsMTAgKzU5NiwxMSBAQCBzdGF0aWMgaW50Ci0gaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotIAkJCXN0cnVjdCBleHByZXNzaW9u ICpjb25kKQotIHsKLSsgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUgPSBpMzg2 X2RlYnVnX3JlZ19zdGF0ZSAoKTsKLSAgIGludCByZXR2YWw7Ci0gICAvKiBXb3JrIG9uIGEgbG9j YWwgY29weSBvZiB0aGUgZGVidWcgcmVnaXN0ZXJzLCBhbmQgb24gc3VjY2VzcywKLSAgICAgIGNv bW1pdCB0aGUgY2hhbmdlIGJhY2sgdG8gdGhlIGluZmVyaW9yLiAgKi8KLS0gIHN0cnVjdCBpMzg2 X2RlYnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9IGRyX21pcnJvcjsKLSsgIHN0cnVjdCBpMzg2 X2RlYnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9ICpzdGF0ZTsKLSAKLSAgIGlmICh0eXBlID09 IGh3X3JlYWQpCi0gICAgIHJldHVybiAxOyAvKiB1bnN1cHBvcnRlZCAqLwotQEAgLTU0Miw3ICs2 MjEsNyBAQCBpMzg2X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwg aW50IHR5cGUsCi0gICAgIGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3JlZ3MgKCZsb2NhbF9z dGF0ZSk7Ci0gCi0gICBpZiAobWFpbnRfc2hvd19kcikKLS0gICAgaTM4Nl9zaG93X2RyICgmZHJf bWlycm9yLCAiaW5zZXJ0X3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUpOwotKyAgICBpMzg2 X3Nob3dfZHIgKHN0YXRlLCAiaW5zZXJ0X3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUpOwot IAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci1AQCAtNTU0LDEwICs2MzMsMTEgQEAgc3RhdGljIGlu dAotIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQg dHlwZSwKLSAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0rICBzdHJ1Y3QgaTM4Nl9k ZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci0gICBpbnQg cmV0dmFsOwotICAgLyogV29yayBvbiBhIGxvY2FsIGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVy cywgYW5kIG9uIHN1Y2Nlc3MsCi0gICAgICBjb21taXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBp bmZlcmlvci4gICovCi0tICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUg PSBkcl9taXJyb3I7Ci0rICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUg PSAqc3RhdGU7Ci0gCi0gICBpZiAoKChsZW4gIT0gMSAmJiBsZW4gIT0yICYmIGxlbiAhPTQpICYm ICEoVEFSR0VUX0hBU19EUl9MRU5fOCAmJiBsZW4gPT0gOCkpCi0gICAgICAgfHwgYWRkciAlIGxl biAhPSAwKQotQEAgLTU3NSw3ICs2NTUsNyBAQCBpMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0gICAgIGkzODZfdXBkYXRlX2luZmVyaW9y X2RlYnVnX3JlZ3MgKCZsb2NhbF9zdGF0ZSk7Ci0gCi0gICBpZiAobWFpbnRfc2hvd19kcikKLS0g ICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9yLCAicmVtb3ZlX3dhdGNocG9pbnQiLCBhZGRyLCBs ZW4sIHR5cGUpOwotKyAgICBpMzg2X3Nob3dfZHIgKHN0YXRlLCAicmVtb3ZlX3dhdGNocG9pbnQi LCBhZGRyLCBsZW4sIHR5cGUpOwotIAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci1AQCAtNTg2LDEx ICs2NjYsMTIgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCB0eXBlLAotIHN0YXRpYyBpbnQKLSBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCi0gewotKyAgc3RydWN0IGkzODZfZGVidWdfcmVn X3N0YXRlICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwotICAgaW50IG5yZWdzOwot IAotICAgLyogQ29tcHV0ZSBob3cgbWFueSBhbGlnbmVkIHdhdGNocG9pbnRzIHdlIHdvdWxkIG5l ZWQgdG8gY292ZXIgdGhpcwotICAgICAgcmVnaW9uLiAgKi8KLS0gIG5yZWdzID0gaTM4Nl9oYW5k bGVfbm9uYWxpZ25lZF93YXRjaHBvaW50ICgmZHJfbWlycm9yLAotKyAgbnJlZ3MgPSBpMzg2X2hh bmRsZV9ub25hbGlnbmVkX3dhdGNocG9pbnQgKHN0YXRlLAotIAkJCQkJICAgICBXUF9DT1VOVCwg YWRkciwgbGVuLCBod193cml0ZSk7Ci0gICByZXR1cm4gbnJlZ3MgPD0gRFJfTkFERFIgPyAxIDog MDsKLSB9Ci1AQCAtNjAyLDYgKzY4Myw3IEBAIGkzODZfcmVnaW9uX29rX2Zvcl93YXRjaHBvaW50 IChDT1JFX0FERFIgYWRkciwgaW50IGxlbikKLSBzdGF0aWMgaW50Ci0gaTM4Nl9zdG9wcGVkX2Rh dGFfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSICphZGRyX3ApCi0g ewotKyAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkzODZfZGVidWdfcmVn X3N0YXRlICgpOwotICAgQ09SRV9BRERSIGFkZHIgPSAwOwotICAgaW50IGk7Ci0gICBpbnQgcmMg PSAwOwotQEAgLTYxNSwyNSArNjk3LDI0IEBAIGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiAqYWRkcl9wKQotICAgdW5zaWduZWQgY29u dHJvbCA9IDA7Ci0gCi0gICAvKiBJbiBub24tc3RvcC9hc3luYywgdGhyZWFkcyBjYW4gYmUgcnVu bmluZyB3aGlsZSB3ZSBjaGFuZ2UgdGhlCi0tICAgICBnbG9iYWwgZHJfbWlycm9yIChhbmQgZnJp ZW5kcykuICBTYXksIHdlIHNldCBhIHdhdGNocG9pbnQsIGFuZAotLSAgICAgbGV0IHRocmVhZHMg cmVzdW1lLiAgTm93LCBzYXkgeW91IGRlbGV0ZSB0aGUgd2F0Y2hwb2ludCwgb3IKLS0gICAgIGFk ZC9yZW1vdmUgd2F0Y2hwb2ludHMgc3VjaCB0aGF0IGRyX21pcnJvciBjaGFuZ2VzIHdoaWxlIHRo cmVhZHMKLS0gICAgIGFyZSBydW5uaW5nLiAgT24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgbm9uLXN0 b3AsCi0tICAgICBpbnNlcnRpbmcvZGVsZXRpbmcgd2F0Y2hwb2ludHMgdXBkYXRlcyB0aGUgZ2xv YmFsIGRyX21pcnJvciBvbmx5LgotLSAgICAgSXQgZG9lcyBub3QgdXBkYXRlIHRoZSByZWFsIHRo cmVhZCdzIGRlYnVnIHJlZ2lzdGVyczsgdGhhdCdzIG9ubHkKLS0gICAgIGRvbmUgcHJpb3IgdG8g cmVzdW1lLiAgSW5zdGVhZCwgaWYgdGhyZWFkcyBhcmUgcnVubmluZyB3aGVuIHRoZQotLSAgICAg bWlycm9yIGNoYW5nZXMsIGEgdGVtcG9yYXJ5IGFuZCB0cmFuc3BhcmVudCBzdG9wIG9uIGFsbCB0 aHJlYWRzCi0tICAgICBpcyBmb3JjZWQgc28gdGhleSBjYW4gZ2V0IHRoZWlyIGNvcHkgb2YgdGhl IGRlYnVnIHJlZ2lzdGVycwotLSAgICAgdXBkYXRlZCBvbiByZS1yZXN1bWUuICBOb3csIHNheSwg YSB0aHJlYWQgaGl0IGEgd2F0Y2hwb2ludCBiZWZvcmUKLS0gICAgIGhhdmluZyBiZWVuIHVwZGF0 ZWQgd2l0aCB0aGUgbmV3IGRyX21pcnJvciBjb250ZW50cywgYW5kIHdlCi0tICAgICBoYXZlbid0 IHlldCBoYW5kbGVkIHRoZSBjb3JyZXNwb25kaW5nIFNJR1RSQVAuICBJZiB3ZSB0cnVzdGVkCi0t ICAgICBkcl9taXJyb3IgYmVsb3csIHdlJ2QgbWlzdGFrZSB0aGUgcmVhbCB0cmFwcGVkIGFkZHJl c3MgKGZyb20gdGhlCi0tICAgICBsYXN0IHRpbWUgd2UgaGFkIHVwZGF0ZWQgZGVidWcgcmVnaXN0 ZXJzIGluIHRoZSB0aHJlYWQpIHdpdGgKLS0gICAgIHdoYXRldmVyIHdhcyBjdXJyZW50bHkgaW4g ZHJfbWlycm9yLiAgU28gdG8gZml4IHRoaXMsIGRyX21pcnJvcgotLSAgICAgYWx3YXlzIHJlcHJl c2VudHMgaW50ZW50aW9uLCB3aGF0IHdlIF93YW50XyB0aHJlYWRzIHRvIGhhdmUgaW4KLS0gICAg IGRlYnVnIHJlZ2lzdGVycy4gIFRvIGdldCBhdCB0aGUgYWRkcmVzcyBhbmQgY2F1c2Ugb2YgdGhl IHRyYXAsIHdlCi0tICAgICBuZWVkIHRvIHJlYWQgdGhlIHN0YXRlIHRoZSB0aHJlYWQgc3RpbGwg aGFzIGluIGl0cyBkZWJ1ZwotLSAgICAgcmVnaXN0ZXJzLgotKyAgICAgU1RBVEUgKGFuZCBmcmll bmRzKS4gIFNheSwgd2Ugc2V0IGEgd2F0Y2hwb2ludCwgYW5kIGxldCB0aHJlYWRzCi0rICAgICBy ZXN1bWUuICBOb3csIHNheSB5b3UgZGVsZXRlIHRoZSB3YXRjaHBvaW50LCBvciBhZGQvcmVtb3Zl Ci0rICAgICB3YXRjaHBvaW50cyBzdWNoIHRoYXQgU1RBVEUgY2hhbmdlcyB3aGlsZSB0aHJlYWRz IGFyZSBydW5uaW5nLgotKyAgICAgT24gdGFyZ2V0cyB0aGF0IHN1cHBvcnQgbm9uLXN0b3AsIGlu c2VydGluZy9kZWxldGluZyB3YXRjaHBvaW50cwotKyAgICAgdXBkYXRlcyB0aGUgU1RBVEUgb25s eS4gIEl0IGRvZXMgbm90IHVwZGF0ZSB0aGUgcmVhbCB0aHJlYWQncwotKyAgICAgZGVidWcgcmVn aXN0ZXJzOyB0aGF0J3Mgb25seSBkb25lIHByaW9yIHRvIHJlc3VtZS4gIEluc3RlYWQsIGlmCi0r ICAgICB0aHJlYWRzIGFyZSBydW5uaW5nIHdoZW4gdGhlIG1pcnJvciBjaGFuZ2VzLCBhIHRlbXBv cmFyeSBhbmQKLSsgICAgIHRyYW5zcGFyZW50IHN0b3Agb24gYWxsIHRocmVhZHMgaXMgZm9yY2Vk IHNvIHRoZXkgY2FuIGdldCB0aGVpcgotKyAgICAgY29weSBvZiB0aGUgZGVidWcgcmVnaXN0ZXJz IHVwZGF0ZWQgb24gcmUtcmVzdW1lLiAgTm93LCBzYXksCi0rICAgICBhIHRocmVhZCBoaXQgYSB3 YXRjaHBvaW50IGJlZm9yZSBoYXZpbmcgYmVlbiB1cGRhdGVkIHdpdGggdGhlIG5ldwotKyAgICAg U1RBVEUgY29udGVudHMsIGFuZCB3ZSBoYXZlbid0IHlldCBoYW5kbGVkIHRoZSBjb3JyZXNwb25k aW5nCi0rICAgICBTSUdUUkFQLiAgSWYgd2UgdHJ1c3RlZCBTVEFURSBiZWxvdywgd2UnZCBtaXN0 YWtlIHRoZSByZWFsCi0rICAgICB0cmFwcGVkIGFkZHJlc3MgKGZyb20gdGhlIGxhc3QgdGltZSB3 ZSBoYWQgdXBkYXRlZCBkZWJ1ZwotKyAgICAgcmVnaXN0ZXJzIGluIHRoZSB0aHJlYWQpIHdpdGgg d2hhdGV2ZXIgd2FzIGN1cnJlbnRseSBpbiBTVEFURS4KLSsgICAgIFNvIHRvIGZpeCB0aGlzLCBT VEFURSBhbHdheXMgcmVwcmVzZW50cyBpbnRlbnRpb24sIHdoYXQgd2UgX3dhbnRfCi0rICAgICB0 aHJlYWRzIHRvIGhhdmUgaW4gZGVidWcgcmVnaXN0ZXJzLiAgVG8gZ2V0IGF0IHRoZSBhZGRyZXNz IGFuZAotKyAgICAgY2F1c2Ugb2YgdGhlIHRyYXAsIHdlIG5lZWQgdG8gcmVhZCB0aGUgc3RhdGUg dGhlIHRocmVhZCBzdGlsbCBoYXMKLSsgICAgIGluIGl0cyBkZWJ1ZyByZWdpc3RlcnMuCi0gCi0g ICAgICBJbiBzdW0sIGFsd2F5cyBnZXQgdGhlIGN1cnJlbnQgZGVidWcgcmVnaXN0ZXIgdmFsdWVz IHRoZSBjdXJyZW50Ci0gICAgICB0aHJlYWQgaGFzLCBpbnN0ZWFkIG9mIHRydXN0aW5nIHRoZSBn bG9iYWwgbWlycm9yLiAgSWYgdGhlIHRocmVhZAotQEAgLTY2MywxMSArNzQ0LDExIEBAIGkzODZf c3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiAq YWRkcl9wKQotIAkgIGFkZHIgPSBpMzg2X2RyX2xvdy5nZXRfYWRkciAoaSk7Ci0gCSAgcmMgPSAx OwotIAkgIGlmIChtYWludF9zaG93X2RyKQotLQkgICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9y LCAid2F0Y2hwb2ludF9oaXQiLCBhZGRyLCAtMSwgaHdfd3JpdGUpOwotKwkgICAgaTM4Nl9zaG93 X2RyIChzdGF0ZSwgIndhdGNocG9pbnRfaGl0IiwgYWRkciwgLTEsIGh3X3dyaXRlKTsKLSAJfQor LSAgLyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNv biBmb3Igbm90CistICAgICBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBj YXB0dXJlZF9jb21tYW5kX2xvb3AoKQorLSAgICAgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJv cGVyLiAgVGhlIG1haW4gdGhpbmcgaG9sZGluZyBiYWNrIHRoYXQKKy0gICAgIGNoYW5nZSAtIFNF VF9UT1BfTEVWRUwoKSAtIGhhcyBiZWVuIGVsaW1pbmF0ZWQuICAqLworLSAgd2hpbGUgKDEpCisr I2lmIEhBVkVfUFlUSE9OCisrICBpZiAocHl0aG9uX3NjcmlwdCkKKyAgICAgeworLSAgICAgIGNh dGNoX2Vycm9ycyAoY2FwdHVyZWRfY29tbWFuZF9sb29wLCAwLCAiIiwgUkVUVVJOX01BU0tfQUxM KTsKKysgICAgICBleHRlcm4gaW50IHBhZ2luYXRpb25fZW5hYmxlZDsKKysgICAgICBwYWdpbmF0 aW9uX2VuYWJsZWQgPSAwOworKyAgICAgIHJ1bl9weXRob25fc2NyaXB0IChhcmdjIC0gb3B0aW5k LCAmYXJndltvcHRpbmRdKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQorKyAgZWxzZQorKyNl bmRpZgorKyAgICB7CisrICAgICAgLyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlz IHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90CisrCSBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUg Y29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AoKQorKwkgaW50byB0aGUgY29tbWFu ZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhpbmcgaG9sZGluZyBiYWNrIHRoYXQKKysJIGNo YW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBiZWVuIGVsaW1pbmF0ZWQuICovCisrICAgICAg d2hpbGUgKDEpCisrCXsKKysJICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVkX2NvbW1hbmRfbG9vcCwg MCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7CisrCX0KICAgICAgfQotICAgaWYgKG1haW50X3Nob3df ZHIgJiYgYWRkciA9PSAwKQotLSAgICBpMzg2X3Nob3dfZHIgKCZkcl9taXJyb3IsICJzdG9wcGVk X2RhdGFfYWRkciIsIDAsIDAsIGh3X3dyaXRlKTsKLSsgICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwg InN0b3BwZWRfZGF0YV9hZGRyIiwgMCwgMCwgaHdfd3JpdGUpOwotIAotICAgaWYgKHJjKQotICAg ICAqYWRkcl9wID0gYWRkcjsKLUBAIC02ODcsMTEgKzc2OCwxMiBAQCBzdGF0aWMgaW50Ci0gaTM4 Nl9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJICAg c3RydWN0IGJwX3RhcmdldF9pbmZvICpicF90Z3QpCi0gewotKyAgc3RydWN0IGkzODZfZGVidWdf cmVnX3N0YXRlICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwotICAgdW5zaWduZWQg bGVuX3J3ID0gaTM4Nl9sZW5ndGhfYW5kX3J3X2JpdHMgKDEsIGh3X2V4ZWN1dGUpOwotICAgQ09S RV9BRERSIGFkZHIgPSBicF90Z3QtPnBsYWNlZF9hZGRyZXNzOwotICAgLyogV29yayBvbiBhIGxv Y2FsIGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nlc3MsCi0gICAgICBj b21taXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4gICovCi0tICBzdHJ1Y3QgaTM4 Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7Ci0rICBzdHJ1Y3QgaTM4 Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7Ci0gICBpbnQgcmV0dmFsID0g aTM4Nl9pbnNlcnRfYWxpZ25lZF93YXRjaHBvaW50ICgmbG9jYWxfc3RhdGUsCi0gCQkJCQkgICAg ICAgYWRkciwgbGVuX3J3KSA/IEVCVVNZIDogMDsKLSAKLUBAIC02OTksNyArNzgxLDcgQEAgaTM4 Nl9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgIGkz ODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3JlZ3MgKCZsb2NhbF9zdGF0ZSk7Ci0gCi0gICBpZiAo bWFpbnRfc2hvd19kcikKLS0gICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9yLCAiaW5zZXJ0X2h3 YnAiLCBhZGRyLCAxLCBod19leGVjdXRlKTsKLSsgICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgImlu c2VydF9od2JwIiwgYWRkciwgMSwgaHdfZXhlY3V0ZSk7Ci0gCi0gICByZXR1cm4gcmV0dmFsOwot IH0KLUBAIC03MTEsMTEgKzc5MywxMiBAQCBzdGF0aWMgaW50Ci0gaTM4Nl9yZW1vdmVfaHdfYnJl YWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJICAgc3RydWN0IGJwX3Rhcmdl dF9pbmZvICpicF90Z3QpCi0gewotKyAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0 ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwotICAgdW5zaWduZWQgbGVuX3J3ID0gaTM4Nl9s ZW5ndGhfYW5kX3J3X2JpdHMgKDEsIGh3X2V4ZWN1dGUpOwotICAgQ09SRV9BRERSIGFkZHIgPSBi cF90Z3QtPnBsYWNlZF9hZGRyZXNzOwotICAgLyogV29yayBvbiBhIGxvY2FsIGNvcHkgb2YgdGhl IGRlYnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nlc3MsCi0gICAgICBjb21taXQgdGhlIGNoYW5n ZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4gICovCi0tICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3Rh dGUgbG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7Ci0rICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3Rh dGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7Ci0gICBpbnQgcmV0dmFsID0gaTM4Nl9yZW1vdmVfYWxp Z25lZF93YXRjaHBvaW50ICgmbG9jYWxfc3RhdGUsCi0gCQkJCQkgICAgICAgYWRkciwgbGVuX3J3 KTsKLSAKLUBAIC03MjMsNyArODA2LDcgQEAgaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgIGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3Jl Z3MgKCZsb2NhbF9zdGF0ZSk7Ci0gCi0gICBpZiAobWFpbnRfc2hvd19kcikKLS0gICAgaTM4Nl9z aG93X2RyICgmZHJfbWlycm9yLCAicmVtb3ZlX2h3YnAiLCBhZGRyLCAxLCBod19leGVjdXRlKTsK LSsgICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgInJlbW92ZV9od2JwIiwgYWRkciwgMSwgaHdfZXhl Y3V0ZSk7Ci0gCi0gICByZXR1cm4gcmV0dmFsOwotIH0KLUBAIC03ODgsNiArODcxLDEwIEBAIGkz ODZfdXNlX3dhdGNocG9pbnRzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkKLSAgIHQtPnRvX3JlbW92 ZV93YXRjaHBvaW50ID0gaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludDsKLSAgIHQtPnRvX2luc2VydF9o d19icmVha3BvaW50ID0gaTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludDsKLSAgIHQtPnRvX3JlbW92 ZV9od19icmVha3BvaW50ID0gaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludDsKLSsKLSsgIGlmIChp Mzg2X2luZmVyaW9yX2RhdGEgPT0gTlVMTCkKLSsgICAgaTM4Nl9pbmZlcmlvcl9kYXRhCi0rICAg ICAgPSByZWdpc3Rlcl9pbmZlcmlvcl9kYXRhX3dpdGhfY2xlYW51cCAoaTM4Nl9pbmZlcmlvcl9k YXRhX2NsZWFudXApOwotIH0KLSAKLSB2b2lkCi1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtdGRlcC5j IGIvZ2RiL2kzODYtdGRlcC5jCi1pbmRleCA1NDkyOTdlLi41NzgzYzRjIDEwMDY0NAotLS0tIGEv Z2RiL2kzODYtdGRlcC5jCi0rKysgYi9nZGIvaTM4Ni10ZGVwLmMKLUBAIC01OCw4ICs1OCwxNCBA QAotICNpbmNsdWRlICJmZWF0dXJlcy9pMzg2L2kzODYtYXZ4LmMiCi0gI2luY2x1ZGUgImZlYXR1 cmVzL2kzODYvaTM4Ni1tbXguYyIKLSAKLSsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgotICNpbmNs dWRlICJheC5oIgotICNpbmNsdWRlICJheC1nZGIuaCIKLSsjaW5jbHVkZSAidXNlci1yZWdzLmgi Ci0rI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKLSsjaW5jbHVkZSAiZXhwcmVzc2lvbi5oIgot KyNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgotKyNpbmNsdWRlIDxjdHlwZS5oPgotIAotIC8qIFJl Z2lzdGVyIG5hbWVzLiAgKi8KLSAKLUBAIC03MjQ2LDYgKzcyNTIsMzEyIEBAIGkzODZfdmFsaWRh dGVfdGRlc2NfcCAoc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCwKLSAgIHJldHVybiB2YWxpZF9w OworICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8KICB9 CitAQCAtMTAzMCw3ICsxMDc3LDEyIEBAIHByaW50X2dkYl9oZWxwIChzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtKQorICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorIFRoaXMgaXMgdGhlIEdOVSBkZWJ1 Z2dlci4gIFVzYWdlOlxuXG5cCisgICAgIGdkYiBbb3B0aW9uc10gW2V4ZWN1dGFibGUtZmlsZSBb Y29yZS1maWxlIG9yIHByb2Nlc3MtaWRdXVxuXAorLSAgICBnZGIgW29wdGlvbnNdIC0tYXJncyBl eGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG5cblwKKysgICAgZ2RiIFtv cHRpb25zXSAtLWFyZ3MgZXhlY3V0YWJsZS1maWxlIFtpbmZlcmlvci1hcmd1bWVudHMgLi4uXVxu IiksIHN0cmVhbSk7CisrI2lmIEhBVkVfUFlUSE9OCisrICBmcHV0c191bmZpbHRlcmVkIChfKCJc CisrICAgIGdkYiBbb3B0aW9uc10gWy0tcHl0aG9ufC1QXSBzY3JpcHQtZmlsZSBbc2NyaXB0LWFy Z3VtZW50cyAuLi5dXG4iKSwgc3RyZWFtKTsKKysjZW5kaWYKKysgIGZwdXRzX3VuZmlsdGVyZWQg KF8oIlxuXAorIE9wdGlvbnM6XG5cblwKKyAiKSwgc3RyZWFtKTsKKyAgIGZwdXRzX3VuZmlsdGVy ZWQgKF8oIlwKK0BAIC0xMDcwLDcgKzExMjIsMTMgQEAgT3B0aW9uczpcblxuXAorICAgLS1udwkJ ICAgICBEbyBub3QgdXNlIGEgd2luZG93IGludGVyZmFjZS5cblwKKyAgIC0tbnggICAgICAgICAg ICAgICBEbyBub3QgcmVhZCAiKSwgc3RyZWFtKTsKKyAgIGZwdXRzX3VuZmlsdGVyZWQgKGdkYmlu aXQsIHN0cmVhbSk7CistICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5cblwKKysgIGZwdXRz X3VuZmlsdGVyZWQgKF8oIiBmaWxlLlxuIiksIHN0cmVhbSk7CisrI2lmIEhBVkVfUFlUSE9OCisr ICBmcHV0c191bmZpbHRlcmVkIChfKCJcCisrICAtLXB5dGhvbiwgLVAgICAgICAgRm9sbG93aW5n IGFyZ3VtZW50IGlzIFB5dGhvbiBzY3JpcHQgZmlsZTsgcmVtYWluaW5nXG5cCisrICAgICAgICAg ICAgICAgICAgICAgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gc2NyaXB0LlxuIiksIHN0cmVhbSk7 CisrI2VuZGlmCisrICBmcHV0c191bmZpbHRlcmVkIChfKCJcCisgICAtLXF1aWV0ICAgICAgICAg ICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCisgICAtLXJlYWRu b3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAor ICIpLCBzdHJlYW0pOworZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMgYi9nZGIvcC12YWxw cmludC5jCitpbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0NAorLS0tIGEvZ2RiL3AtdmFscHJp bnQuYworKysrIGIvZ2RiL3AtdmFscHJpbnQuYworQEAgLTM5LDYgKzM5LDcgQEAKKyAjaW5jbHVk ZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKKyAjaW5jbHVkZSAiZXhjZXB0 aW9ucy5oIgorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKyAMCiAgCi0raW50Ci0raTM4Nl9zdGFw X2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAq cykKLSt7Ci0rICByZXR1cm4gKCpzID09ICckJyAvKiBMaXRlcmFsIG51bWJlci4gICovCi0rCSAg fHwgKGlzZGlnaXQgKCpzKSAmJiBzWzFdID09ICcoJyAmJiBzWzJdID09ICclJykgLyogRGlzcGxh Y2VtZW50LiAgKi8KLSsJICB8fCAoKnMgPT0gJygnICYmIHNbMV0gPT0gJyUnKSAvKiBSZWdpc3Rl ciBpbmRpcmVjdGlvbi4gICovCi0rCSAgfHwgKCpzID09ICclJyAmJiBpc2FscGhhIChzWzFdKSkp OyAvKiBSZWdpc3RlciBhY2Nlc3MuICAqLwotK30KLSsKLStpbnQKLStpMzg2X3N0YXBfcGFyc2Vf c3BlY2lhbF90b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJICAgICAgIHN0cnVj dCBzdGFwX3BhcnNlX2luZm8gKnApCi0rewotKyAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsKLSsK LSsgIC8qIEluIG9yZGVyIHRvIHBhcnNlIHNwZWNpYWwgdG9rZW5zLCB3ZSB1c2UgYSBzdGF0ZS1t YWNoaW5lIHRoYXQgZ28KLSsgICAgIHRocm91Z2ggZXZlcnkga25vd24gdG9rZW4gYW5kIHRyeSB0 byBnZXQgYSBtYXRjaC4gICovCi0rICBlbnVtCi0rICAgIHsKLSsgICAgICBUUklQTEVULAotKyAg ICAgIFRIUkVFX0FSR19ESVNQTEFDRU1FTlQsCi0rICAgICAgRE9ORQotKyAgICB9IGN1cnJlbnRf c3RhdGU7Ci0rCi0rICBjdXJyZW50X3N0YXRlID0gVFJJUExFVDsKLSsKLSsgIC8qIFRoZSBzcGVj aWFsIHRva2VucyB0byBiZSBwYXJzZWQgaGVyZSBhcmU6Ci0rCi0rICAgICAtIGByZWdpc3RlciBi YXNlICsgKHJlZ2lzdGVyIGluZGV4ICogc2l6ZSkgKyBvZmZzZXQnLCBhcyByZXByZXNlbnRlZAot KyAgICAgaW4gYCglcmN4LCVyYXgsOCknLCBvciBgW09GRlNFVF0oQkFTRV9SRUcsSU5ERVhfUkVH WyxTSVpFXSknLgotKwotKyAgICAgLSBPcGVyYW5kcyBvZiB0aGUgZm9ybSBgLTgrMysxKCVyYnAp Jywgd2hpY2ggbXVzdCBiZSBpbnRlcnByZXRlZCBhcwotKyAgICAgYCooLTggKyAzIC0gMSArICh2 b2lkICopICRlYXgpJy4gICovCi0rCi0rICB3aGlsZSAoY3VycmVudF9zdGF0ZSAhPSBET05FKQor IC8qIERlY29yYXRpb25zIGZvciBQYXNjYWwuICAqLworQEAgLTc0LDggKzc1LDMxIEBAIHBhc2Nh bF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK KyAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7CisgICBDT1JFX0FERFIgYWRkcjsKKyAgIGludCB3 YW50X3NwYWNlID0gMDsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKyAgc3RydWN0IHR5 cGUgKnNhdmVkX3R5cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRy ZXNzOworKyAgCisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwor KyAgYWRkcmVzcyArPSBlbWJlZGRlZF9vZmZzZXQ7CisrICB0eXBlID0gb2JqZWN0X2FkZHJlc3Nf Z2V0X2RhdGEgKHR5cGUsICZhZGRyZXNzKTsKKysgIGlmICh0eXBlID09IE5VTEwpCiArICAgIHsK LSsgICAgICBjb25zdCBjaGFyICpzID0gcC0+YXJnOwotKwotKyAgICAgIHN3aXRjaCAoY3VycmVu dF9zdGF0ZSkKLSsJewotKwljYXNlIFRSSVBMRVQ6Ci0rCSAgICB7Ci0rCSAgICAgIGlmIChpc2Rp Z2l0ICgqcykgfHwgKnMgPT0gJy0nIHx8ICpzID09ICcrJykKLSsJCXsKLSsJCSAgaW50IGdvdF9t aW51c1szXTsKLSsJCSAgaW50IGk7Ci0rCQkgIGxvbmcgZGlzcGxhY2VtZW50c1szXTsKLSsJCSAg Y29uc3QgY2hhciAqc3RhcnQ7Ci0rCQkgIGNoYXIgKnJlZ25hbWU7Ci0rCQkgIGludCBsZW47Ci0r CQkgIHN0cnVjdCBzdG9rZW4gc3RyOwotKwotKwkJICBnb3RfbWludXNbMF0gPSAwOwotKwkJICBp ZiAoKnMgPT0gJysnKQotKwkJICAgICsrczsKLSsJCSAgZWxzZSBpZiAoKnMgPT0gJy0nKQotKwkJ ICAgIHsKLSsJCSAgICAgICsrczsKLSsJCSAgICAgIGdvdF9taW51c1swXSA9IDE7Ci0rCQkgICAg fQotKwotKwkJICBkaXNwbGFjZW1lbnRzWzBdID0gc3RydG9sIChzLCAoY2hhciAqKikgJnMsIDEw KTsKLSsKLSsJCSAgaWYgKCpzICE9ICcrJyAmJiAqcyAhPSAnLScpCi0rCQkgICAgLyogV2UgYXJl IG5vdCBkZWFsaW5nIHdpdGggYSB0cmlwbGV0LiAgKi8KLSsJCSAgICBicmVhazsKLSsKLSsJCSAg Z290X21pbnVzWzFdID0gMDsKLSsJCSAgaWYgKCpzID09ICcrJykKLSsJCSAgICArK3M7Ci0rCQkg IGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICArK3M7Ci0rCQkgICAgICBnb3RfbWludXNbMV0gPSAx OwotKwkJICAgIH0KLSsKLSsJCSAgZGlzcGxhY2VtZW50c1sxXSA9IHN0cnRvbCAocywgKGNoYXIg KiopICZzLCAxMCk7Ci0rCi0rCQkgIGlmICgqcyAhPSAnKycgJiYgKnMgIT0gJy0nKQotKwkJICAg IC8qIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGEgdHJpcGxldC4gICovCi0rCQkgICAgYnJlYWs7 Ci0rCi0rCQkgIGdvdF9taW51c1syXSA9IDA7Ci0rCQkgIGlmICgqcyA9PSAnKycpCi0rCQkgICAg KytzOwotKwkJICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgKytzOwotKwkJICAgICAgZ290X21p bnVzWzJdID0gMTsKLSsJCSAgICB9Ci0rCi0rCQkgIGRpc3BsYWNlbWVudHNbMl0gPSBzdHJ0b2wg KHMsIChjaGFyICoqKSAmcywgMTApOwotKwotKwkJICBpZiAoKnMgIT0gJygnIHx8IHNbMV0gIT0g JyUnKQotKwkJICAgIGJyZWFrOwotKwotKwkJICBzICs9IDI7Ci0rCQkgIHN0YXJ0ID0gczsKLSsK LSsJCSAgd2hpbGUgKGlzYWxudW0gKCpzKSkKLSsJCSAgICArK3M7Ci0rCi0rCQkgIGlmICgqcysr ICE9ICcpJykKLSsJCSAgICBicmVhazsKLSsKLSsJCSAgbGVuID0gcyAtIHN0YXJ0OwotKwkJICBy ZWduYW1lID0gYWxsb2NhIChsZW4gKyAxKTsKLSsKLSsJCSAgc3RybmNweSAocmVnbmFtZSwgc3Rh cnQsIGxlbik7Ci0rCQkgIHJlZ25hbWVbbGVuXSA9ICdcMCc7Ci0rCi0rCQkgIGlmICh1c2VyX3Jl Z19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsCi0rCQkJCQkJICAgcmVnbmFtZSwgbGVuKSA9 PSAtMSkKLSsJCSAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgIgotKwkJ CSAgICAgIm9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJCQkgICByZWduYW1lLCBwLT5zYXZlZF9h cmcpOwotKwotKwkJICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQotKwkJICAgIHsKLSsJCSAgICAg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIHdyaXRlX2V4cF9lbHRf dHlwZQotKwkJCShidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2xvbmcpOwotKwkJICAg ICAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChkaXNwbGFjZW1lbnRzW2ldKTsKLSsJCSAgICAgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIGlmIChnb3RfbWludXNbaV0p Ci0rCQkJd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVHKTsKLSsJCSAgICB9Ci0rCi0rCQkg IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7Ci0rCQkgIHN0ci5wdHIgPSByZWdu YW1lOwotKwkJICBzdHIubGVuZ3RoID0gbGVuOwotKwkJICB3cml0ZV9leHBfc3RyaW5nIChzdHIp OwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOwotKwkJICAKLSsJCSAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7Ci0rCQkgIHdyaXRlX2V4cF9lbHRfdHlw ZSAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cik7Ci0rCQkgIHdyaXRl X2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NBU1QpOwotKwotKwkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAoQklOT1BfQUREKTsKLSsJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX0FERCk7Ci0r CQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5PUF9BREQpOwotKwotKwkJICB3cml0ZV9leHBf ZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKLSsJCSAgd3JpdGVfZXhwX2VsdF90eXBlIChsb29rdXBf cG9pbnRlcl90eXBlIChwLT5hcmdfdHlwZSkpOwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAo VU5PUF9DQVNUKTsKLSsKLSsJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfSU5EKTsKLSsK LSsJCSAgcC0+YXJnID0gczsKLSsKLSsJCSAgcmV0dXJuIDE7Ci0rCQl9Ci0rCSAgICAgIGJyZWFr OwotKwkgICAgfQotKwljYXNlIFRIUkVFX0FSR19ESVNQTEFDRU1FTlQ6Ci0rCSAgICB7Ci0rCSAg ICAgIGlmIChpc2RpZ2l0ICgqcykgfHwgKnMgPT0gJygnIHx8ICpzID09ICctJyB8fCAqcyA9PSAn KycpCi0rCQl7Ci0rCQkgIGludCBvZmZzZXRfbWludXMgPSAwOwotKwkJICBsb25nIG9mZnNldCA9 IDA7Ci0rCQkgIGludCBzaXplX21pbnVzID0gMDsKLSsJCSAgbG9uZyBzaXplID0gMDsKLSsJCSAg Y29uc3QgY2hhciAqc3RhcnQ7Ci0rCQkgIGNoYXIgKmJhc2U7Ci0rCQkgIGludCBsZW5fYmFzZTsK LSsJCSAgY2hhciAqaW5kZXg7Ci0rCQkgIGludCBsZW5faW5kZXg7Ci0rCQkgIHN0cnVjdCBzdG9r ZW4gYmFzZV90b2tlbiwgaW5kZXhfdG9rZW47Ci0rCi0rCQkgIGlmICgqcyA9PSAnKycpCi0rCQkg ICAgKytzOwotKwkJICBlbHNlIGlmICgqcyA9PSAnLScpCi0rCQkgICAgewotKwkJICAgICAgKytz OwotKwkJICAgICAgb2Zmc2V0X21pbnVzID0gMTsKLSsJCSAgICB9Ci0rCi0rCQkgIGlmIChvZmZz ZXRfbWludXMgJiYgIWlzZGlnaXQgKCpzKSkKLSsJCSAgICBicmVhazsKLSsKLSsJCSAgaWYgKGlz ZGlnaXQgKCpzKSkKLSsJCSAgICBvZmZzZXQgPSBzdHJ0b2wgKHMsIChjaGFyICoqKSAmcywgMTAp OwotKwotKwkJICBpZiAoKnMgIT0gJygnIHx8IHNbMV0gIT0gJyUnKQotKwkJICAgIGJyZWFrOwot KwotKwkJICBzICs9IDI7Ci0rCQkgIHN0YXJ0ID0gczsKLSsKLSsJCSAgd2hpbGUgKGlzYWxudW0g KCpzKSkKLSsJCSAgICArK3M7Ci0rCi0rCQkgIGlmICgqcyAhPSAnLCcgfHwgc1sxXSAhPSAnJScp Ci0rCQkgICAgYnJlYWs7Ci0rCi0rCQkgIGxlbl9iYXNlID0gcyAtIHN0YXJ0OwotKwkJICBiYXNl ID0gYWxsb2NhIChsZW5fYmFzZSArIDEpOwotKwkJICBzdHJuY3B5IChiYXNlLCBzdGFydCwgbGVu X2Jhc2UpOwotKwkJICBiYXNlW2xlbl9iYXNlXSA9ICdcMCc7Ci0rCi0rCQkgIGlmICh1c2VyX3Jl Z19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsCi0rCQkJCQkJICAgYmFzZSwgbGVuX2Jhc2Up ID09IC0xKQotKwkJICAgIGVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5hbWUgYCVzJyAiCi0r CQkJICAgICAib24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkJCSAgIGJhc2UsIHAtPnNhdmVkX2Fy Zyk7Ci0rCi0rCQkgIHMgKz0gMjsKLSsJCSAgc3RhcnQgPSBzOwotKwotKwkJICB3aGlsZSAoaXNh bG51bSAoKnMpKQotKwkJICAgICsrczsKLSsKLSsJCSAgbGVuX2luZGV4ID0gcyAtIHN0YXJ0Owot KwkJICBpbmRleCA9IGFsbG9jYSAobGVuX2luZGV4ICsgMSk7Ci0rCQkgIHN0cm5jcHkgKGluZGV4 LCBzdGFydCwgbGVuX2luZGV4KTsKLSsJCSAgaW5kZXhbbGVuX2luZGV4XSA9ICdcMCc7Ci0rCi0r CQkgIGlmICh1c2VyX3JlZ19tYXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsCi0rCQkJCQkJICAg aW5kZXgsIGxlbl9pbmRleCkgPT0gLTEpCi0rCQkgICAgZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0 ZXIgbmFtZSBgJXMnICIKLSsJCQkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksCi0rCQkJICAg aW5kZXgsIHAtPnNhdmVkX2FyZyk7Ci0rCi0rCQkgIGlmICgqcyAhPSAnLCcgJiYgKnMgIT0gJykn KQotKwkJICAgIGJyZWFrOwotKwotKwkJICBpZiAoKnMgPT0gJywnKQotKwkJICAgIHsKLSsJCSAg ICAgICsrczsKLSsJCSAgICAgIGlmICgqcyA9PSAnKycpCi0rCQkJKytzOwotKwkJICAgICAgZWxz ZSBpZiAoKnMgPT0gJy0nKQotKwkJCXsKLSsJCQkgICsrczsKLSsJCQkgIHNpemVfbWludXMgPSAx OwotKwkJCX0KLSsKLSsJCSAgICAgIHNpemUgPSBzdHJ0b2wgKHMsIChjaGFyICoqKSAmcywgMTAp OwotKwotKwkJICAgICAgaWYgKCpzICE9ICcpJykKLSsJCQlicmVhazsKLSsJCSAgICB9Ci0rCi0r CQkgICsrczsKLSsKLSsJCSAgaWYgKG9mZnNldCkKLSsJCSAgICB7Ci0rCQkgICAgICB3cml0ZV9l eHBfZWx0X29wY29kZSAoT1BfTE9ORyk7Ci0rCQkgICAgICB3cml0ZV9leHBfZWx0X3R5cGUKLSsJ CQkoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9sb25nKTsKLSsJCSAgICAgIHdyaXRl X2V4cF9lbHRfbG9uZ2NzdCAob2Zmc2V0KTsKLSsJCSAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChPUF9MT05HKTsKLSsJCSAgICAgIGlmIChvZmZzZXRfbWludXMpCi0rCQkJd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKFVOT1BfTkVHKTsKLSsJCSAgICB9Ci0rCi0rCQkgIHdyaXRlX2V4cF9lbHRfb3Bj b2RlIChPUF9SRUdJU1RFUik7Ci0rCQkgIGJhc2VfdG9rZW4ucHRyID0gYmFzZTsKLSsJCSAgYmFz ZV90b2tlbi5sZW5ndGggPSBsZW5fYmFzZTsKLSsJCSAgd3JpdGVfZXhwX3N0cmluZyAoYmFzZV90 b2tlbik7Ci0rCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7Ci0rCQkgIAot KwkJICBpZiAob2Zmc2V0KQotKwkJICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5PUF9BREQp OwotKwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOwotKwkJICBpbmRl eF90b2tlbi5wdHIgPSBpbmRleDsKLSsJCSAgaW5kZXhfdG9rZW4ubGVuZ3RoID0gbGVuX2luZGV4 OwotKwkJICB3cml0ZV9leHBfc3RyaW5nIChpbmRleF90b2tlbik7Ci0rCQkgIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7Ci0rCi0rCQkgIGlmIChzaXplKQotKwkJICAgIHsKLSsJ CSAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIHdyaXRlX2V4 cF9lbHRfdHlwZQotKwkJCShidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2xvbmcpOwot KwkJICAgICAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChzaXplKTsKLSsJCSAgICAgIHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsJCSAgICAgIGlmIChzaXplX21pbnVzKQotKwkJCXdy aXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX05FRyk7Ci0rCQkgICAgICB3cml0ZV9leHBfZWx0X29w Y29kZSAoQklOT1BfTVVMKTsKLSsJCSAgICB9Ci0rCi0rCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChCSU5PUF9BREQpOwotKwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsK LSsJCSAgd3JpdGVfZXhwX2VsdF90eXBlIChsb29rdXBfcG9pbnRlcl90eXBlIChwLT5hcmdfdHlw ZSkpOwotKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKLSsKLSsJCSAgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfSU5EKTsKLSsKLSsJCSAgcC0+YXJnID0gczsKLSsKLSsJ CSAgcmV0dXJuIDE7Ci0rCQl9Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwl9Ci0rCi0rICAg ICAgLyogQWR2YW5jaW5nIHRvIHRoZSBuZXh0IHN0YXRlLiAgKi8KLSsgICAgICArK2N1cnJlbnRf c3RhdGU7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3Zh bGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKKysgICAgICBnZGJfZmx1c2ggKHN0cmVhbSk7Cisr ICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIHJldHVybjsKICsgICAgfQotKwot KyAgcmV0dXJuIDA7Ci0rfQotKwotIAwKLSBzdGF0aWMgc3RydWN0IGdkYmFyY2ggKgotIGkzODZf Z2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xp c3QgKmFyY2hlcykKLWRpZmYgLS1naXQgYS9nZGIvaTM4Ni10ZGVwLmggYi9nZGIvaTM4Ni10ZGVw LmgKLWluZGV4IDg3MDA1NGYuLjlmZmJlNDQgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni10ZGVwLmgK LSsrKyBiL2dkYi9pMzg2LXRkZXAuaAotQEAgLTM3OSw2ICszNzksMTUgQEAgZXh0ZXJuIHZvaWQg aTM4Nl9zdnI0X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAq KTsKKysgIGlmIChhZGRyZXNzICE9IHNhdmVkX2FkZHJlc3MgKyBlbWJlZGRlZF9vZmZzZXQpCisr ICAgIHsKKysgICAgICBzaXplX3QgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIAotIGV4 dGVybiBpbnQgaTM4Nl9wcm9jZXNzX3JlY29yZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCBDT1JFX0FERFIgYWRkcik7Ci0rCi0rLyogU3lzdGVtVGFwIHJlbGF0ZWQgZnVuY3Rpb25zLiAg Ki8KLSsKLStleHRlcm4gaW50IGkzODZfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsCi0rCQkJCQljb25zdCBjaGFyICpzKTsKLSsKLStleHRlcm4gaW50IGkz ODZfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJ CQkJCSAgc3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcCk7Ci0rCi0gDAorLSAgQ0hFQ0tfVFlQRURF RiAodHlwZSk7CisrICAgICAgdmFsYWRkciA9IHhtYWxsb2MgKGxlbmd0aCk7CisrICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgKGdkYl9ieXRlICopIHZhbGFkZHIpOworKyAgICAgIHJlYWRfbWVt b3J5IChhZGRyZXNzLCAoZ2RiX2J5dGUgKikgdmFsYWRkciwgbGVuZ3RoKTsKKysgICAgICBlbWJl ZGRlZF9vZmZzZXQgPSAwOworKyAgICB9CisrICBlbHNlCisrICAgIGFkZHJlc3MgLT0gZW1iZWRk ZWRfb2Zmc2V0OworICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQorICAgICB7CisgICAgIGNh c2UgVFlQRV9DT0RFX0FSUkFZOgorQEAgLTEzMSw4ICsxNTUsOCBAQCBwYXNjYWxfdmFsX3ByaW50 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgCQl7CisgCQkg IGkgPSAwOworIAkJfQorLQkgICAgICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5cGUsIHZh bGFkZHIsIGVtYmVkZGVkX29mZnNldCwKKy0JCQkJCWFkZHJlc3MsIHN0cmVhbSwgcmVjdXJzZSwK KysJICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzYXZlZF90eXBlLCB2YWxhZGRyLCBl bWJlZGRlZF9vZmZzZXQsCisrCQkJCQlzYXZlZF9hZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsCisg CQkJCQlvcmlnaW5hbF92YWx1ZSwgb3B0aW9ucywgaSk7CisgCSAgICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIn0iKTsKKyAJICAgIH0KK0BAIC0xNzAsNiArMTk0LDcgQEAgcGFzY2FsX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorIAl7 CisgCSAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVuY3Rpb24gaXQgcG9pbnRzIHRvLiAgKi8KKyAJ ICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChvcHRpb25zLCBnZGJhcmNoLCBhZGRyLCBzdHJlYW0s IGRlbWFuZ2xlKTsKKysJICBkb19jbGVhbnVwcyAoYmFja190byk7CisgCSAgcmV0dXJuOworIAl9 CiAgCi0gLyogRnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgZXhwb3J0ZWQgZnJvbSBpMzg2YnNkLXRk ZXAuYy4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCi1pbmRl eCAyNGQyNzIwLi5jNTE2YjhiIDEwMDY0NAotLS0tIGEvZ2RiL2luZnJ1bi5jCi0rKysgYi9nZGIv aW5mcnVuLmMKLUBAIC01NSw2ICs1NSw4IEBACi0gI2luY2x1ZGUgImNvbnRpbnVhdGlvbnMuaCIK LSAjaW5jbHVkZSAiaW50ZXJwcy5oIgotICNpbmNsdWRlICJza2lwLmgiCi0rI2luY2x1ZGUgInN0 YXAtcHJvYmUuaCIKLSsjaW5jbHVkZSAib2JqZmlsZXMuaCIKK0BAIC0yNzEsNiArMjk2LDcgQEAg cGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLAorIAkgICAgfQorIAl9CiAgCi0gLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25z ICovCisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgICAgIHJldHVybjsKICAKLUBA IC0yMzc5LDcgKzIzODEsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfc3RlcF9pbnRvX2Z1bmN0aW9u IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSBzdGF0aWMgdm9pZCBoYW5kbGVfc3RlcF9pbnRv X2Z1bmN0aW9uX2JhY2t3YXJkIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJCQlzdHJ1 Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci0gc3RhdGljIHZvaWQgY2hlY2tfZXhj ZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICosCi0tCQkJCSAg ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qgc3ltYm9sICopOwotKwkJCQkgICAgc3RydWN0 IGZyYW1lX2luZm8gKik7CisgICAgIGNhc2UgVFlQRV9DT0RFX1JFRjoKK0BAIC00MjEsNiArNDQ3 LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAorIAkgICAgIFRZUEVfQ09ERSAodHlwZSkpOworICAgICB9CisgICBnZGJfZmx1 c2ggKHN0cmVhbSk7CisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisgfQorIAwKKyB2b2lkCitk aWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYworaW5kZXggZjU0YzZmMi4uNzBl OWEwNSAxMDA2NDQKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysgYi9nZGIvcGFyc2UuYworQEAgLTE1 MTYsNiArMTUxNiw3IEBAIHBhcnNlcl9mcHJpbnRmIChGSUxFICp4LCBjb25zdCBjaGFyICp5LCAu Li4pCiAgCi0gc3RhdGljIHZvaWQgc3RvcF9zdGVwcGluZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250 cm9sX3N0YXRlICplY3MpOwotIHN0YXRpYyB2b2lkIHByZXBhcmVfdG9fd2FpdCAoc3RydWN0IGV4 ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwotQEAgLTQ0MTcsOSArNDQxOSwxNyBAQCBwcm9j ZXNzX2V2ZW50X3N0b3BfdGVzdDoKKyBpbnQKKyBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKysJCQkgaW50ICgqdHlwZV9mdW5jKSAoc3Ry dWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJCSBpbnQgKCpvYmpmaWxlX2Z1bmMpIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCQkJCSAgICAgIHZvaWQgKmRhdGEpLAorIAkJCSB2 b2lkICpkYXRhKQorQEAgLTE1NTcsNyArMTU1OCw3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJk IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorIAkgICAgc3RydWN0IHR5cGUgKnR5 cGUgPSBlbHRzW3BvcyArIDIgKyBhcmddLnR5cGU7CisgCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7CiAgCi0gCWlmICh3aGF0LmlzX2xvbmdqbXApCi0g CSAgewotLQkgICAgaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQot LQkJfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLAotLQkJCQkJCWZyYW1l LCAmam1wX2J1Zl9wYykpCi0rCSAgICBzdHJ1Y3QgdmFsdWUgKmFyZ192YWx1ZTsKLSsKLSsJICAg IC8qIElmIHdlIHNldCB0aGUgbG9uZ2ptcCBicmVha3BvaW50IHZpYSBhIFN5c3RlbVRhcCBwcm9i ZSwKLSsJICAgICAgIHRoZW4gdXNlIGl0IHRvIGV4dHJhY3QgdGhlIGFyZ3VtZW50cy4gIFRoZSBk ZXN0aW5hdGlvbgotKwkgICAgICAgUEMgaXMgdGhlIHRoaXJkIGFyZ3VtZW50IHRvIHRoZSBwcm9i ZS4gICovCi0rCSAgICBhcmdfdmFsdWUgPSBzdGFwX3NhZmVfZXZhbHVhdGVfYXRfcGMgKGZyYW1l LCAyKTsKLSsJICAgIGlmIChhcmdfdmFsdWUpCi0rCSAgICAgIGptcF9idWZfcGMgPSB2YWx1ZV9h c19hZGRyZXNzIChhcmdfdmFsdWUpOwotKwkgICAgZWxzZSBpZiAoIWdkYmFyY2hfZ2V0X2xvbmdq bXBfdGFyZ2V0X3AgKGdkYmFyY2gpCi0rCQkgICAgIHx8ICFnZGJhcmNoX2dldF9sb25nam1wX3Rh cmdldCAoZ2RiYXJjaCwKLSsJCQkJCQkgICAgIGZyYW1lLCAmam1wX2J1Zl9wYykpCi0gCSAgICAg IHsKLSAJCWlmIChkZWJ1Z19pbmZydW4pCi0gCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKLUBAIC00NDM3LDEyICs0NDQ3LDcgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6Ci0g CSAgICBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2RiYXJjaCwgam1wX2J1Zl9w Yyk7CistCSAgICBpZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEp KQorKwkgICAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAo b2JqZmlsZSwgZGF0YSkpCisgCSAgICAgIHJldHVybiAxOwogIAkgIH0KLSAJZWxzZQotLQkgIHsK LS0JICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rpb24gKGZyYW1lKTsK LS0KLS0JICAgIGlmIChmdW5jKQotLQkgICAgICBjaGVja19leGNlcHRpb25fcmVzdW1lIChlY3Ms IGZyYW1lLCBmdW5jKTsKLS0JICB9Ci0rCSAgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoZWNzLCBm cmFtZSk7Ci0gCWtlZXBfZ29pbmcgKGVjcyk7Ci0gCXJldHVybjsKKyAgICAgICB9CitAQCAtMTU3 NSw3ICsxNTc2LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCiAgCi1AQCAtNTUyNCwxNSArNTUyOSw2NSBAQCBpbnNlcnRfZXhjZXB0 aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAotICAgICB9Ci0g fQorIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2YXJpYWJsZSBpdHNlbGYgaXMgcGxhY2Vk LgorIAkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5IGJlIE5VTEwuICAqLworLQlp ZiAoKCpvYmpmaWxlX2Z1bmMpIChTWU1CT0xfU1lNVEFCIChzeW1ib2wpLT5vYmpmaWxlLCBkYXRh KSkKKysJaWYgKG9iamZpbGVfZnVuYworKwkgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChTWU1CT0xf U1lNVEFCIChzeW1ib2wpLT5vYmpmaWxlLCBkYXRhKSkKKyAJICByZXR1cm4gMTsKICAKLSsvKiBB IGhlbHBlciBmb3IgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSB0aGF0IHNldHMgYW4KLSsgICBleGNl cHRpb24tYnJlYWtwb2ludCBiYXNlZCBvbiBhIFN5c3RlbVRhcCBwcm9iZS4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlIChzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwLAotKwkJCQkgICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAot KwkJCQkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCSAgICBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUpCi0rewotKyAgc3RydWN0IHZhbHVlICphcmdfdmFsdWU7Ci0rICBDT1JFX0FE RFIgaGFuZGxlcjsKLSsgIHN0cnVjdCBicmVha3BvaW50ICpicDsKLSsKLSsgIGFyZ192YWx1ZSA9 IHN0YXBfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoZnJhbWUsIDEpOwotKyAgaWYgKCFhcmdfdmFsdWUp Ci0rICAgIHJldHVybjsKLSsKLSsgIGhhbmRsZXIgPSB2YWx1ZV9hc19hZGRyZXNzIChhcmdfdmFs dWUpOwotKwotKyAgaWYgKGRlYnVnX2luZnJ1bikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAotKwkJCSJpbmZydW46IGV4Y2VwdGlvbiByZXN1bWUgYXQgJXNcbiIsCi0rCQkJ cGFkZHJlc3MgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLAotKwkJCQkgIGhhbmRsZXIpKTsK LSsKLSsgIGJwID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZXRfZnJhbWVfYXJj aCAoZnJhbWUpLAotKwkJCQkgICAgICAgaGFuZGxlciwgYnBfZXhjZXB0aW9uX3Jlc3VtZSk7Ci0r ICBicC0+dGhyZWFkID0gdHAtPm51bTsKLSsgIGluZmVyaW9yX3RocmVhZCAoKS0+Y29udHJvbC5l eGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgPSBicDsKLSt9Ci0rCi0gLyogVGhpcyBpcyBjYWxs ZWQgd2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gaW50ZXJjZXB0ZWQuICBDaGVjayB0bwotICAg IHNlZSB3aGV0aGVyIHRoZSBleGNlcHRpb24ncyBkZXN0aW5hdGlvbiBpcyBvZiBpbnRlcmVzdCwg YW5kIGlmIHNvLAotICAgIHNldCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFrcG9pbnQgdGhlcmUu ICAqLworIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29kZSB0b3VjaGlu ZyB0aGUgdmFyaWFibGUuICAqLworQEAgLTE1ODgsMjQgKzE1OTAsMjcgQEAgb3BlcmF0b3JfY2hl Y2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCi0gc3RhdGlj IHZvaWQKLSBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xf c3RhdGUgKmVjcywKLS0JCQlzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHN0cnVjdCBzeW1ib2wg KmZ1bmMpCi0rCQkJc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLSAgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIGNv bnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKLSsgIHN0cnVjdCBzeW1ib2wgKmZ1bmM7Ci0r Ci0rICAvKiBGaXJzdCBzZWUgaWYgdGhpcyBleGNlcHRpb24gdW53aW5kaW5nIGJyZWFrcG9pbnQg d2FzIHNldCB2aWEgYQotKyAgICAgU3lzdGVtVGFwIHByb2JlIHBvaW50LiAgSWYgc28sIHRoZSBw cm9iZSBoYXMgdHdvIGFyZ3VtZW50czogdGhlCi0rICAgICBDRkEgYW5kIHRoZSBIQU5ETEVSLiAg V2UgaWdub3JlIHRoZSBDRkEsIGV4dHJhY3QgdGhlIGhhbmRsZXIsIGFuZAotKyAgICAgc2V0IGEg YnJlYWtwb2ludCB0aGVyZS4gICovCi0rICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9m cmFtZV9wYyAoZnJhbWUpLCAmb2JqZmlsZSk7Ci0rICBpZiAocHJvYmUpCi0rICAgIHsKLSsgICAg ICBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9mcm9tX3Byb2JlIChlY3MtPmV2ZW50X3RocmVhZCwg cHJvYmUsCi0rCQkJCQkgIG9iamZpbGUsIGZyYW1lKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0K LSsKLSsgIGZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rpb24gKGZyYW1lKTsKLSsgIGlmICghZnVuYykK LSsgICAgcmV0dXJuOworICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JKRklM RSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKLSAgIFRSWV9DQVRDSCAoZSwg UkVUVVJOX01BU0tfRVJST1IpCi0gICAgIHsKLUBAIC02NTY0LDcgKzY2MTksOCBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IGx2YWxfZnVuY3Mgc2lnaW5mb192YWx1ZV9mdW5jcyA9Ci0gICAgaWYgdGhl cmUncyBubyBvYmplY3QgYXZhaWxhYmxlLiAgKi8KKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklM RSAodHlwZSkKKysgIGlmICh0eXBlICYmIHR5cGVfZnVuYyAmJiAoKnR5cGVfZnVuYykgKHR5cGUs IGRhdGEpKQorKyAgICByZXR1cm4gMTsKKysgIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlw ZSkgJiYgb2JqZmlsZV9mdW5jCisgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJ TEUgKHR5cGUpLCBkYXRhKSkKKyAgICAgcmV0dXJuIDE7CistICBpZiAob2JqZmlsZSAmJiAoKm9i amZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQorKyAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9m dW5jICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgICAgIHJldHVybiAxOwog IAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXNpZ2luZm9fbWFrZV92YWx1ZSAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKQotK3NpZ2luZm9fbWFrZV92 YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLAot KwkJICAgIHZvaWQgKmlnbm9yZSkKLSB7Ci0gICBpZiAodGFyZ2V0X2hhc19zdGFjawotICAgICAg ICYmICFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpCi1AQCAtNzA1OSw2ICs3 MTE1LDE1IEBAIHNob3dfc2NoZWR1bGVfbXVsdGlwbGUgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBp bnQgZnJvbV90dHksCi0gCQkJICAgICJvZiBhbGwgcHJvY2Vzc2VzIGlzICVzLlxuIiksIHZhbHVl KTsKKyAgIHJldHVybiAwOwogIH0KICAKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc2lnaW5mbycg dmFyaWFibGUuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3Mg c2lnaW5mb19mdW5jcyA9Ci0rewotKyAgc2lnaW5mb19tYWtlX3ZhbHVlLAotKyAgTlVMTCwKLSsg IE5VTEwKLSt9OwotKwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9pbmZydW4gKHZvaWQpCi0gewotQEAg LTczNDcsNyArNzQxMiw3IEBAIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBzb21lIHBsYXRmb3Jtcy4i KSwKLSAgICAgIHZhbHVlIHdpdGggYSB2b2lkIHR5cGVkIHZhbHVlLCBhbmQgd2hlbiB3ZSBnZXQg aGVyZSwgZ2RiYXJjaAotICAgICAgaXNuJ3QgaW5pdGlhbGl6ZWQgeWV0LiAgQXQgdGhpcyBwb2lu dCwgd2UncmUgcXVpdGUgc3VyZSB0aGVyZQotICAgICAgaXNuJ3QgYW5vdGhlciBjb252ZW5pZW5j ZSB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1lLiAgKi8KLS0gIGNyZWF0ZV9pbnRlcm5hbHZhcl90 eXBlX2xhenkgKCJfc2lnaW5mbyIsIHNpZ2luZm9fbWFrZV92YWx1ZSk7Ci0rICBjcmVhdGVfaW50 ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3NpZ2luZm8iLCAmc2lnaW5mb19mdW5jcywgTlVMTCk7Ci0g Ci0gICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoIm9ic2VydmVyIiwgbm9fY2xhc3MsCi0gCQkJ ICAgJm9ic2VydmVyX21vZGVfMSwgXygiXAotZGlmZiAtLWdpdCBhL2dkYi9saW5lc3BlYy5jIGIv Z2RiL2xpbmVzcGVjLmMKLWluZGV4IDA3ODJjNTQuLjMxYmIzNmMgMTAwNjQ0Ci0tLS0gYS9nZGIv bGluZXNwZWMuYwotKysrIGIvZ2RiL2xpbmVzcGVjLmMKLUBAIC00Myw2ICs0Myw3IEBACi0gI2lu Y2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKLSAjaW5jbHVkZSAiZmlsZW5hbWVzLmgiCi0gI2luY2x1 ZGUgImFkYS1sYW5nLmgiCi0rI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKLSAKLSB0eXBlZGVmIHN0 cnVjdCBzeW10YWIgKnN5bXRhYl9wOwotIERFRl9WRUNfUCAoc3ltdGFiX3ApOwotQEAgLTgwMiw2 ICs4MDMsNyBAQCBrZWVwX25hbWVfaW5mbyAoY2hhciAqcCwgaW50IG9uX2JvdW5kYXJ5KQotICAg IFBDIHJldHVybmVkIGlzIDAuCi0gICAgRklMRTpGVU5DVElPTiAtLSBsaWtld2lzZSwgYnV0IHBy ZWZlciBmdW5jdGlvbnMgaW4gdGhhdCBmaWxlLgotICAgICpFWFBSIC0tIGxpbmUgaW4gd2hpY2gg YWRkcmVzcyBFWFBSIGFwcGVhcnMuCi0rICAgLXAgW09CSkZJTEU6XVtQUk9WSURFUjpdTkFNRSAt LSBhIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUKLSAKLSAgICBUaGlzIG1heSBhbGwgYmUgZm9sbG93 ZWQgYnkgYW4gImlmIEVYUFIiLCB3aGljaCB3ZSBpZ25vcmUuCi0gCi1AQCAtODcyLDYgKzg3NCw5 IEBAIGRlY29kZV9saW5lX2ludGVybmFsIChzdHJ1Y3QgbGluZXNwZWNfc3RhdGUgKnNlbGYsIGNo YXIgKiphcmdwdHIpCi0gICAgICAgcmV0dXJuIGRlY29kZV9pbmRpcmVjdCAoc2VsZiwgYXJncHRy KTsKLSAgICAgfQorLS8qIENhbGwgT0JKRklMRV9GVU5DIGZvciBhbnkgVFlQRSBhbmQgT0JKRklM RSBmb3VuZCBiZWluZyByZWZlcmVuY2VkIGJ5IEVYUC4KKy0gICBUaGUgZnVuY3Rpb25zIGFyZSBu ZXZlciBjYWxsZWQgd2l0aCBOVUxMIE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBhbgor LSAgIGFyYml0cmFyeSBjYWxsZXIgc3VwcGxpZWQgREFUQSBwb2ludGVyLiAgSWYgYW55IG9mIHRo ZSBmdW5jdGlvbnMgcmV0dXJucworLSAgIG5vbi16ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhlcikg bm9uLXplcm8gdmFsdWUgaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8KKy0gICB0aGUgY2FsbGVy LiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQgYWZ0ZXIgaXRlcmF0aW5nIHRocm91Z2ggd2hv bGUgRVhQLgorLSAgICovCisrLyogQ2FsbCBUWVBFX0ZVTkMgYW5kIE9CSkZJTEVfRlVOQyBmb3Ig YW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcKKysgICByZWZlcmVuY2VkIGJ5IEVYUC4g IFRoZSBmdW5jdGlvbnMgYXJlIG5ldmVyIGNhbGxlZCB3aXRoIE5VTEwgVFlQRSBvciBOVUxMCisr ICAgT0JKRklMRS4gIEZ1bmN0aW9ucyBnZXQgcGFzc2VkIGFuIGFyYml0cmFyeSBjYWxsZXIgc3Vw cGxpZWQgREFUQSBwb2ludGVyLgorKyAgIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMg bm9uLXplcm8gdmFsdWUgdGhlbiAoYW55IG90aGVyKSBub24temVybworKyAgIHZhbHVlIGlzIGlt bWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybyBpcyByZXR1 cm5lZAorKyAgIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4gICovCiAgCi0rICBp ZiAoc3RybmNtcCAoKmFyZ3B0ciwgIi1wIiwgMikgPT0gMCAmJiBpc3NwYWNlICgoKmFyZ3B0cilb Ml0pKQotKyAgICByZXR1cm4gcGFyc2Vfc3RhcF9wcm9iZSAoYXJncHRyLCBzZWxmLT5jYW5vbmlj YWwpOwotKwotICAgaXNfcXVvdGVkID0gKHN0cmNociAoZ2V0X2dkYl9jb21wbGV0ZXJfcXVvdGVf Y2hhcmFjdGVycyAoKSwKLSAJCSAgICAgICAqKmFyZ3B0cikgIT0gTlVMTCk7Cisgc3RhdGljIGlu dAorIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorKwkgICAgIGludCAoKnR5 cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKKyAJICAgICBpbnQgKCpv YmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCisgCSAg ICAgdm9pZCAqZGF0YSkKKyB7CitAQCAtMTYyMCw3ICsxNjI1LDkgQEAgZXhwX2l0ZXJhdGUgKHN0 cnVjdCBleHByZXNzaW9uICpleHAsCiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIv Z2RiL2xpbnV4LW5hdC5jCi1pbmRleCA1MGQ0ZWZkLi44OTNiN2M0IDEwMDY0NAotLS0tIGEvZ2Ri L2xpbnV4LW5hdC5jCi0rKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC0yODgsNiArMjg4LDcgQEAg c3RhdGljIHZvaWQgcmVzdG9yZV9jaGlsZF9zaWduYWxzX21hc2sgKHNpZ3NldF90ICpwcmV2X21h c2spOwotIHN0cnVjdCBsd3BfaW5mbzsKLSBzdGF0aWMgc3RydWN0IGx3cF9pbmZvICphZGRfbHdw IChwdGlkX3QgcHRpZCk7Ci0gc3RhdGljIHZvaWQgcHVyZ2VfbHdwX2xpc3QgKGludCBwaWQpOwot K3N0YXRpYyB2b2lkIGRlbGV0ZV9sd3AgKHB0aWRfdCBwdGlkKTsKLSBzdGF0aWMgc3RydWN0IGx3 cF9pbmZvICpmaW5kX2x3cF9waWQgKHB0aWRfdCBwdGlkKTsKKyAgICAgICBwb3MgPSBlbmRwb3Mg LSBvcGxlbjsKKyAgICAgICBpZiAoZXhwLT5sYW5ndWFnZV9kZWZuLT5sYV9leHBfZGVzYy0+b3Bl cmF0b3JfY2hlY2sgKGV4cCwgcG9zLAorLQkJCQkJCQkgICBvYmpmaWxlX2Z1bmMsIGRhdGEpKQor KwkJCQkJCQkgICB0eXBlX2Z1bmMsCisrCQkJCQkJCSAgIG9iamZpbGVfZnVuYywKKysJCQkJCQkJ ICAgZGF0YSkpCisgCXJldHVybiAxOwogIAotIAwKLUBAIC01ODQsNiArNTg1LDMxIEBAIGxpbnV4 X2NoaWxkX3Bvc3Rfc3RhcnR1cF9pbmZlcmlvciAocHRpZF90IHB0aWQpCi0gICBsaW51eF9lbmFi bGVfdHJhY2VzeXNnb29kIChwdGlkKTsKLSB9CisgICAgICAgZW5kcG9zID0gcG9zOworQEAgLTE2 NTEsOCArMTY1OCwyOSBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CisgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5z ZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwogIAotKy8qIFJldHVybiB0 aGUgbnVtYmVyIG9mIGtub3duIExXUHMgaW4gdGhlIHRnaWQgZ2l2ZW4gYnkgUElELiAgKi8KKy0g IHJldHVybiBleHBfaXRlcmF0ZSAoZXhwLCBleHBfdXNlc19vYmpmaWxlX2l0ZXIsIG9iamZpbGUp OworKyAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIE5VTEwsIGV4cF91c2VzX29iamZpbGVfaXRl ciwgb2JqZmlsZSk7CisrfQorKworKy8qIEhlbHBlciBmb3IgZXhwX3R5cGVzX21hcmtfdXNlZC4g ICovCiArCisrI2lmIDAKICtzdGF0aWMgaW50Ci0rbnVtX2x3cHMgKGludCBwaWQpCisrZXhwX3R5 cGVzX21hcmtfdXNlZF9pdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqdW51c2VkKQogK3sK LSsgIGludCBjb3VudCA9IDA7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotKwotKyAgZm9yIChs cCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKLSsgICAgaWYgKHB0aWRfZ2V0X3BpZCAo bHAtPnB0aWQpID09IHBpZCkKLSsgICAgICBjb3VudCsrOworKyAgdHlwZV9tYXJrX3VzZWQgKHR5 cGUpOwogKwotKyAgcmV0dXJuIGNvdW50OworKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4g ICovCisrICByZXR1cm4gMDsKICt9CiArCi0rLyogQ2FsbCBkZWxldGVfbHdwIHdpdGggcHJvdG90 eXBlIGNvbXBhdGlibGUgZm9yIG1ha2VfY2xlYW51cC4gICovCisrLyogQ2FsbCB0eXBlX21hcmtf dXNlZCBmb3IgYW55IHR5cGUgY29udGFpbmVkIGluIEVYUC4gICovCiArCi0rc3RhdGljIHZvaWQK LStkZWxldGVfbHdwX2NsZWFudXAgKHZvaWQgKmxwX3ZvaWRwKQorK3ZvaWQKKytleHBfdHlwZXNf bWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKQogK3sKLSsgIHN0cnVjdCBsd3BfaW5m byAqbHAgPSBscF92b2lkcDsKKysgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19tYXJrX3Vz ZWRfaXRlciwgTlVMTCwgTlVMTCk7CisgfQorKyNlbmRpZgorIAorIHZvaWQKKyBfaW5pdGlhbGl6 ZV9wYXJzZSAodm9pZCkKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJz ZXItZGVmcy5oCitpbmRleCA3MmI5ZTJmLi43MTlhNjUyIDEwMDY0NAorLS0tIGEvZ2RiL3BhcnNl ci1kZWZzLmgKKysrKyBiL2dkYi9wYXJzZXItZGVmcy5oCitAQCAtMjE1LDYgKzIxNSw4IEBAIGV4 dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Np b24gKiwgaW50LCBpbnQgKiwKKyAJCQkJICAgICAgaW50ICopOworIAorIGV4dGVybiBpbnQgb3Bl cmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisr CQkJCSAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCQkJCQkgICAg ICB2b2lkICpkYXRhKSwKKyAJCQkJICAgIGludCAoKm9iamZpbGVfZnVuYykKKyAJCQkJICAgICAg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRhKSwKKyAJCQkJICAgIHZvaWQgKmRh dGEpOworQEAgLTMwMSw2ICszMDMsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKKyAgICAgICAg dmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBPdGhl cndpc2UgemVybworICAgICAgICBzaG91bGQgYmUgcmV0dXJuZWQuICAqLworICAgICBpbnQgKCpv cGVyYXRvcl9jaGVjaykgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisrCQkJICAg aW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJCSAg IGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJCXZv aWQgKmRhdGEpLAorIAkJCSAgIHZvaWQgKmRhdGEpOworQEAgLTMzOSw0ICszNDIsMTAgQEAgZXh0 ZXJuIHZvaWQgcGFyc2VyX2ZwcmludGYgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pIEFUVFJJ QlVURV9QUklOVEYgKDIsIDMpOworIAorIGV4dGVybiBpbnQgZXhwX3VzZXNfb2JqZmlsZSAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIAorK2V4dGVy biBpbnQgZXhwX3VzZXNfb2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUpOwogKwotKyAgZGVsZXRlX2x3cCAobHAtPnB0aWQpOwotK30KKysjaWYg MAorK2V4dGVybiB2b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpl eHApOworKyNlbmRpZgogKwotIHN0YXRpYyBpbnQKLSBsaW51eF9jaGlsZF9mb2xsb3dfZm9yayAo c3RydWN0IHRhcmdldF9vcHMgKm9wcywgaW50IGZvbGxvd19jaGlsZCkKLSB7Ci1AQCAtNjMwLDYg KzY1Niw4IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGV0YWNoLW9u LWZvcmtcIiBvciBcCi0gICAgICAgLyogRGV0YWNoIG5ldyBmb3JrZWQgcHJvY2Vzcz8gICovCi0g ICAgICAgaWYgKGRldGFjaF9mb3JrKQotIAl7Ci0rCSAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFp bjsKKyAjZW5kaWYgLyogUEFSU0VSX0RFRlNfSCAqLworZGlmZiAtLWdpdCBhL2dkYi9wcmludGNt ZC5jIGIvZ2RiL3ByaW50Y21kLmMKK2luZGV4IDAzMGE0ZjIuLjMwNmJlMTggMTAwNjQ0CistLS0g YS9nZGIvcHJpbnRjbWQuYworKysrIGIvZ2RiL3ByaW50Y21kLmMKK0BAIC00OSw2ICs0OSw3IEBA CisgI2luY2x1ZGUgImNoYXJzZXQuaCIKKyAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgorICNpbmNs dWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorICNpZmRl ZiBUVUkKKyAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyogRm9yIHR1aV9hY3RpdmUgZXQgYWwuICAg Ki8KK0BAIC05NzQsNiArOTc1LDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQg aW5zcGVjdCwgaW50IHZvaWRwcmludCkKKyAgIGVsc2UKKyAgICAgdmFsID0gYWNjZXNzX3ZhbHVl X2hpc3RvcnkgKDApOworIAorKyAgLyogRG8gbm90IHRyeSB0byBPQkpFQ1RfQUREUkVTU19TRVQg aGVyZSBhbnl0aGluZy4gIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZQorKyAgICAgc291cmNlIHZh cmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFzIGZvdW5kIGJ5IFJFQURfVkFSX1ZBTFVFLiAgVGhlIHZh bHVlIGhlcmUKKysgICAgIGNhbiBiZSBhbHJlYWR5IGEgY2FsY3VsYXRlZCBleHByZXNzaW9uIGFk ZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IKKysgICAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3Mu ICAqLwogKwotIAkgIC8qIEJlZm9yZSBkZXRhY2hpbmcgZnJvbSB0aGUgY2hpbGQsIHJlbW92ZSBh bGwgYnJlYWtwb2ludHMKLSAJICAgICBmcm9tIGl0LiAgSWYgd2UgZm9ya2VkLCB0aGVuIHRoaXMg aGFzIGFscmVhZHkgYmVlbiB0YWtlbgotIAkgICAgIGNhcmUgb2YgYnkgaW5mcnVuLmMuICBJZiB3 ZSB2Zm9ya2VkIGhvd2V2ZXIsIGFueQotQEAgLTY1Miw3ICs2ODAsMjggQEAgaG9sZGluZyB0aGUg Y2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZXRhY2gtb24tZm9ya1wiIG9yIFwKLSAJCQkJY2hp bGRfcGlkKTsKLSAJICAgIH0KKyAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAmJiB2YWx1ZV90eXBl ICh2YWwpICYmCisgCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwpKSAhPSBUWVBFX0NP REVfVk9JRCkpCisgICAgIHsKK0BAIC0xMDYyLDYgKzEwNjgsOSBAQCBvdXRwdXRfY29tbWFuZCAo Y2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCisgCisgICB2YWwgPSBldmFsdWF0ZV9leHByZXNzaW9u IChleHByKTsKICAKLSsJICBvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7Ci0rCSAg aW5mZXJpb3JfcHRpZCA9IHB0aWRfYnVpbGQgKGNoaWxkX3BpZCwgY2hpbGRfcGlkLCAwKTsKKysg IGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQorKyAgICBvYmplY3RfYWRkcmVz c19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzICh2YWwpKTsKICsKLSsJICBjaGlsZF9scCA9IGFkZF9s d3AgKGluZmVyaW9yX3B0aWQpOwotKwkgIGNoaWxkX2xwLT5zdG9wcGVkID0gMTsKLSsJICBjaGls ZF9scC0+bGFzdF9yZXN1bWVfa2luZCA9IHJlc3VtZV9zdG9wOwotKwkgIG1ha2VfY2xlYW51cCAo ZGVsZXRlX2x3cF9jbGVhbnVwLCBjaGlsZF9scCk7CisgICBhbm5vdGF0ZV92YWx1ZV9iZWdpbiAo dmFsdWVfdHlwZSAodmFsKSk7CisgCisgICBnZXRfZm9ybWF0dGVkX3ByaW50X29wdGlvbnMgKCZv cHRzLCBmb3JtYXQpOworQEAgLTE0OTEsNiArMTUwMCwyNCBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4 cCwgaW50IGZyb21fdHR5KQorIAlzZXRfaW50ZXJuYWx2YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAo Il9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CisgICAgIH0KKyB9CiArCi0rCSAgLyogQ0hJTERf TFAgaGFzIG5ldyBQSUQsIHRoZXJlZm9yZSBsaW51eF9uYXRfbmV3X3RocmVhZCBpcyBub3QgY2Fs bGVkIGZvciBpdC4KLSsJICAgICBTZWUgaTM4Nl9pbmZlcmlvcl9kYXRhX2dldCBmb3IgdGhlIExp bnV4IGtlcm5lbCBzcGVjaWZpY3MuCi0rCSAgICAgRW5zdXJlIGxpbnV4X25hdF9wcmVwYXJlX3Rv X3Jlc3VtZSB3aWxsIHJlc2V0IHRoZSBoYXJkd2FyZSBkZWJ1ZwotKwkgICAgIHJlZ2lzdGVycy4g IEl0IGlzIGRvbmUgYnkgdGhlIGxpbnV4X25hdF9uZXdfdGhyZWFkIGNhbGwsIHdoaWNoIGlzCi0r CSAgICAgYmVpbmcgc2tpcHBlZCBpbiBhZGRfbHdwIGFib3ZlIGZvciB0aGUgZmlyc3QgbHdwIG9m IGEgcGlkLiAgKi8KLSsJICBnZGJfYXNzZXJ0IChudW1fbHdwcyAoR0VUX1BJRCAoY2hpbGRfbHAt PnB0aWQpKSA9PSAxKTsKLSsJICBpZiAobGludXhfbmF0X25ld190aHJlYWQgIT0gTlVMTCkKLSsJ ICAgIGxpbnV4X25hdF9uZXdfdGhyZWFkIChjaGlsZF9scCk7CisrI2lmIDAKKysvKiBDYWxsIHR5 cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJj ZSBmaWxlLiAgKi8KICsKLSsJICBpZiAobGludXhfbmF0X3ByZXBhcmVfdG9fcmVzdW1lICE9IE5V TEwpCi0rCSAgICBsaW51eF9uYXRfcHJlcGFyZV90b19yZXN1bWUgKGNoaWxkX2xwKTsKLSAJICBw dHJhY2UgKFBUUkFDRV9ERVRBQ0gsIGNoaWxkX3BpZCwgMCwgMCk7Cisrc3RhdGljIHZvaWQKKytw cmludF90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisreworKyAgc3RydWN0IGRpc3BsYXkgKmQ7CiAr Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0gCX0KLSAgICAgICBlbHNlCi0gCXsKLUBA IC02NzAsNiArNzE5LDkgQEAgaG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBk ZXRhY2gtb24tZm9ya1wiIG9yIFwKLSAJICBzYXZlX2N1cnJlbnRfcHJvZ3JhbV9zcGFjZSAoKTsK LSAKLSAJICBpbmZlcmlvcl9wdGlkID0gcHRpZF9idWlsZCAoY2hpbGRfcGlkLCBjaGlsZF9waWQs IDApOwotKwkgIHJlaW5pdF9mcmFtZV9jYWNoZSAoKTsKLSsJICByZWdpc3RlcnNfY2hhbmdlZCAo KTsKLSsKLSAJICBhZGRfdGhyZWFkIChpbmZlcmlvcl9wdGlkKTsKLSAJICBjaGlsZF9scCA9IGFk ZF9sd3AgKGluZmVyaW9yX3B0aWQpOwotIAkgIGNoaWxkX2xwLT5zdG9wcGVkID0gMTsKLUBAIC04 NjEsNiArOTEzLDkgQEAgaG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZXRh Y2gtb24tZm9ya1wiIG9yIFwKLSAJIGluZm9ybWluZyB0aGUgc29saWIgbGF5ZXIgYWJvdXQgdGhp cyBuZXcgcHJvY2Vzcy4gICovCi0gCi0gICAgICAgaW5mZXJpb3JfcHRpZCA9IHB0aWRfYnVpbGQg KGNoaWxkX3BpZCwgY2hpbGRfcGlkLCAwKTsKLSsgICAgICByZWluaXRfZnJhbWVfY2FjaGUgKCk7 Ci0rICAgICAgcmVnaXN0ZXJzX2NoYW5nZWQgKCk7Ci0rCi0gICAgICAgYWRkX3RocmVhZCAoaW5m ZXJpb3JfcHRpZCk7Ci0gICAgICAgY2hpbGRfbHAgPSBhZGRfbHdwIChpbmZlcmlvcl9wdGlkKTsK LSAgICAgICBjaGlsZF9scC0+c3RvcHBlZCA9IDE7Ci1AQCAtMTExMSwyMSArMTE2Niw2IEBAIHB1 cmdlX2x3cF9saXN0IChpbnQgcGlkKQotICAgICB9Ci0gfQorKyAgaWYgKGxhc3RfZXhhbWluZV92 YWx1ZSkKKysgICAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGxhc3RfZXhhbWluZV92YWx1 ZSkpOworKworKyAgZm9yIChkID0gZGlzcGxheV9jaGFpbjsgZDsgZCA9IGQtPm5leHQpCisrICAg IGlmIChkLT5leHApCisrICAgICAgZXhwX3R5cGVzX21hcmtfdXNlZCAoZC0+ZXhwKTsKKyt9Cisr I2VuZGlmCisrCisgDAogIAotLS8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGtub3duIExXUHMgaW4g dGhlIHRnaWQgZ2l2ZW4gYnkgUElELiAgKi8KLS0KLS1zdGF0aWMgaW50Ci0tbnVtX2x3cHMgKGlu dCBwaWQpCi0tewotLSAgaW50IGNvdW50ID0gMDsKLS0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0t Ci0tICBmb3IgKGxwID0gbHdwX2xpc3Q7IGxwOyBscCA9IGxwLT5uZXh0KQotLSAgICBpZiAocHRp ZF9nZXRfcGlkIChscC0+cHRpZCkgPT0gcGlkKQotLSAgICAgIGNvdW50Kys7Ci0tCi0tICByZXR1 cm4gY291bnQ7Ci0tfQotLQotIC8qIEFkZCB0aGUgTFdQIHNwZWNpZmllZCBieSBQSUQgdG8gdGhl IGxpc3QuICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZQotICAgIHN0cnVjdHVyZSBkZXNjcmliaW5n IHRoZSBuZXcgTFdQLiAgVGhlIExXUCBzaG91bGQgYWxyZWFkeSBiZSBzdG9wcGVkCi0gICAgKHdp dGggYW4gZXhjZXB0aW9uIGZvciB0aGUgdmVyeSBmaXJzdCBMV1ApLiAgKi8KLUBAIC0xMjM1LDYg KzEyNzUsNDYgQEAgaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWRfdCBmaWx0ZXIsCi0gICByZXR1cm4g TlVMTDsKLSB9CisgLyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFp bi4KK0BAIC0xOTg2LDYgKzIwMTMsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChjb25z dCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIsCisgICAgICAgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgb3B0czsKICAKLSsvKiBJdGVyYXRlIGxpa2UgaXRlcmF0ZV9vdmVyX2x3cHMg ZG9lcyBleGNlcHQgd2hlbiBmb3JraW5nLW9mZiBhIGNoaWxkIGNhbGwKLSsgICBDQUxMQkFDSyB3 aXRoIENBTExCQUNLX0RBVEEgc3BlY2lmaWNhbGx5IG9ubHkgZm9yIHRoYXQgbmV3IGNoaWxkIFBJ RC4gICovCisgICAgICAgdmFsID0gcmVhZF92YXJfdmFsdWUgKHZhciwgZnJhbWUpOwogKwotK3Zv aWQKLStsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMKLSsgIChsaW51eF9uYXRfaXRl cmF0ZV93YXRjaHBvaW50X2x3cHNfZnR5cGUgY2FsbGJhY2ssIHZvaWQgKmNhbGxiYWNrX2RhdGEp Ci0rewotKyAgaW50IGluZmVyaW9yX3BpZCA9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCk7 Ci0rICBzdHJ1Y3QgaW5mZXJpb3IgKmluZiA9IGN1cnJlbnRfaW5mZXJpb3IgKCk7CisrICAgICAg bWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7CisrICAgICAgc2VsZWN0X2Zy YW1lIChmcmFtZSk7CiArCi0rICBpZiAoaW5mLT5waWQgPT0gaW5mZXJpb3JfcGlkKQotKyAgICB7 Ci0rICAgICAgLyogSXRlcmF0ZSBhbGwgdGhlIHRocmVhZHMgb2YgdGhlIGN1cnJlbnQgaW5mZXJp b3IuICBXaXRob3V0IHNwZWNpZnlpbmcKLSsJIElORkVSSU9SX1BJRCBpdCB3b3VsZCBpdGVyYXRl IGFsbCB0aHJlYWRzIG9mIGFsbCBpbmZlcmlvcnMsIHdoaWNoIGlzCi0rCSBpbmFwcHJvcHJpYXRl IGZvciB3YXRjaHBvaW50cy4gICovCisgICAgICAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9w dHMpOworICAgICAgIG9wdHMuZGVyZWZfcmVmID0gMTsKKyAgICAgICBjb21tb25fdmFsX3ByaW50 ICh2YWwsIHN0cmVhbSwgaW5kZW50LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7CitAQCAtMjg5 OSw0ICsyOTMwLDggQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUg bnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCisgICBhZGRfY29tICgiZXZhbCIsIG5vX2Ns YXNzLCBldmFsX2NvbW1hbmQsIF8oIlwKKyBDb252ZXJ0IFwicHJpbnRmIGZvcm1hdCBzdHJpbmdc IiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBhcmduIHRvXG5cCisgYSBjb21tYW5kIGxpbmUsIGFu ZCBjYWxsIGl0LiIpKTsKICsKLSsgICAgICBpdGVyYXRlX292ZXJfbHdwcyAocGlkX3RvX3B0aWQg KGluZmVyaW9yX3BpZCksIGNhbGxiYWNrLCBjYWxsYmFja19kYXRhKTsKLSsgICAgfQotKyAgZWxz ZQotKyAgICB7Ci0rICAgICAgLyogRGV0YWNoaW5nIGEgbmV3IGNoaWxkIFBJRCB0ZW1wb3Jhcmls eSBwcmVzZW50IGluIElORkVSSU9SX1BJRC4gICovCisrI2lmIDAKKysgIG9ic2VydmVyX2F0dGFj aF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7CisrI2VuZGlmCisgfQorZGlmZiAt LWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5IGIvZ2RiL3B5dGhvbi9s aWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi41NjU0NTQ2CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJh bWVJdGVyYXRvci5weQorQEAgLTAsMCArMSwzMyBAQAorKyMgSXRlcmF0b3Igb3ZlciBmcmFtZXMu CiArCi0rICAgICAgc3RydWN0IGx3cF9pbmZvICpjaGlsZF9scDsKLSsgICAgICBzdHJ1Y3QgY2xl YW51cCAqb2xkX2NoYWluOwotKyAgICAgIHBpZF90IGNoaWxkX3BpZCA9IEdFVF9QSUQgKGluZmVy aW9yX3B0aWQpOwotKyAgICAgIHB0aWRfdCBjaGlsZF9wdGlkID0gcHRpZF9idWlsZCAoY2hpbGRf cGlkLCBjaGlsZF9waWQsIDApOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgICAgIGdkYl9hc3NlcnQgKCFpc19sd3AgKGlu ZmVyaW9yX3B0aWQpKTsKLSsgICAgICBnZGJfYXNzZXJ0IChmaW5kX2x3cF9waWQgKGNoaWxkX3B0 aWQpID09IE5VTEwpOwotKyAgICAgIGNoaWxkX2xwID0gYWRkX2x3cCAoY2hpbGRfcHRpZCk7Ci0r ICAgICAgY2hpbGRfbHAtPnN0b3BwZWQgPSAxOwotKyAgICAgIGNoaWxkX2xwLT5sYXN0X3Jlc3Vt ZV9raW5kID0gcmVzdW1lX3N0b3A7Ci0rICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChk ZWxldGVfbHdwX2NsZWFudXAsIGNoaWxkX2xwKTsKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCiArCi0rICAgICAgY2FsbGJhY2sgKGNoaWxkX2xwLCBjYWxsYmFja19kYXRhKTsKKytjbGFz cyBGcmFtZUl0ZXJhdG9yOgorKyAgICAiIiJBbiBpdGVyYXRvciB0aGF0IGl0ZXJhdGVzIG92ZXIg ZnJhbWVzLiIiIgogKwotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAgICB9Ci0r fQorKyAgICBkZWYgX19pbml0X18gKHNlbGYsIGZyYW1lKToKKysgICAgICAgICJJbml0aWFsaXpl IGEgRnJhbWVJdGVyYXRvci4gIEZSQU1FIGlzIHRoZSBzdGFydGluZyBmcmFtZS4iCisrICAgICAg ICBzZWxmLmZyYW1lID0gZnJhbWUKICsKLSAvKiBVcGRhdGUgb3VyIGludGVybmFsIHN0YXRlIHdo ZW4gY2hhbmdpbmcgZnJvbSBvbmUgY2hlY2twb2ludCB0bwotICAgIGFub3RoZXIgaW5kaWNhdGVk IGJ5IE5FV19QVElELiAgV2UgY2FuIG9ubHkgc3dpdGNoIHNpbmdsZS10aHJlYWRlZAotICAgIGFw cGxpY2F0aW9ucywgc28gd2Ugb25seSBjcmVhdGUgb25lIG5ldyBMV1AsIGFuZCB0aGUgcHJldmlv dXMgbGlzdAotZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuaCBiL2dkYi9saW51eC1uYXQuaAot aW5kZXggZDlkYzcxYi4uNjIxNzM3MCAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuaAotKysr IGIvZ2RiL2xpbnV4LW5hdC5oCi1AQCAtMTU4LDYgKzE1OCwxMiBAQCBzdHJ1Y3QgbHdwX2luZm8g Kml0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkX3QgZmlsdGVyLAotIAkJCQkJCSAgICAgdm9pZCAqKSwg Ci0gCQkJCSAgICB2b2lkICpkYXRhKTsKLSAKLSt0eXBlZGVmIGludCAoKmxpbnV4X25hdF9pdGVy YXRlX3dhdGNocG9pbnRfbHdwc19mdHlwZSkgKHN0cnVjdCBsd3BfaW5mbyAqbHdwLAotKwkJCQkJ CQl2b2lkICphcmcpOwotKwotK2V4dGVybiB2b2lkIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9p bnRfbHdwcwotKyAgKGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwc19mdHlwZSBjYWxs YmFjaywgdm9pZCAqY2FsbGJhY2tfZGF0YSk7Ci0rCi0gLyogQ3JlYXRlIGEgcHJvdG90eXBlIGdl bmVyaWMgR05VL0xpbnV4IHRhcmdldC4gIFRoZSBjbGllbnQgY2FuCi0gICAgb3ZlcnJpZGUgaXQg d2l0aCBsb2NhbCBtZXRob2RzLiAgKi8KLSBzdHJ1Y3QgdGFyZ2V0X29wcyAqIGxpbnV4X3Rhcmdl dCAodm9pZCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21hY2hvcmVhZC5jIGIvZ2RiL21hY2hvcmVhZC5j Ci1pbmRleCA5ZmE5N2UxLi5kNmYwZjM4IDEwMDY0NAotLS0tIGEvZ2RiL21hY2hvcmVhZC5jCi0r KysgYi9nZGIvbWFjaG9yZWFkLmMKLUBAIC0xMDMyLDYgKzEwMzIsNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHN5bV9mbnMgbWFjaG9fc3ltX2ZucyA9IHsKLSAgIGRlZmF1bHRfc3ltZmlsZV9zZWdt ZW50cywJLyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwotICAgTlVM TCwKLSAgIG1hY2hvX3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlv bi4gICovCi0rICBOVUxMLAkJCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLwotICAgJnBzeW1fZnVuY3Rp b25zCi0gfTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvbWFpbi5jIGIvZ2RiL21haW4uYwotaW5kZXgg OGI0NWMyNS4uYzdlYTBkZiAxMDA2NDQKLS0tLSBhL2dkYi9tYWluLmMKLSsrKyBiL2dkYi9tYWlu LmMKLUBAIC0zNyw2ICszNyw3IEBACi0gCi0gI2luY2x1ZGUgImludGVycHMuaCIKLSAjaW5jbHVk ZSAibWFpbi5oIgotKyNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi0gI2luY2x1ZGUgInNvdXJj ZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLSAjaW5jbHVkZSAicHl0aG9uL3B5dGhv bi5oIgotQEAgLTI2NCw2ICsyNjUsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAg Y2hhciAqY2RhcmcgPSBOVUxMOwotICAgY2hhciAqdHR5YXJnID0gTlVMTDsKLSAKLSsgIGludCBw eXRob25fc2NyaXB0ID0gMDsKKysgICAgZGVmIF9faXRlcl9fIChzZWxmKToKKysgICAgICAgIHJl dHVybiBzZWxmCiArCi0gICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRoYXQgd2UgY2FuIHRha2Ug dGhlaXIgYWRkcmVzcyBpbiBhbgotICAgICAgaW5pdGlhbGl6ZXIuICAqLwotICAgc3RhdGljIGlu dCBwcmludF9oZWxwOwotQEAgLTQ1NywxMCArNDYwLDE0IEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCi0gICAgICAgeyJhcmdzIiwgbm9fYXJndW1lbnQsICZzZXRfYXJncywgMX0sCi0gICAg ICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCi0gICAgICAgeyJyZXR1cm4tY2hp bGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVzdWx0LCAxfSwKLSsjaWYg SEFWRV9QWVRIT04KLSsgICAgICB7InB5dGhvbiIsIG5vX2FyZ3VtZW50LCAwLCAnUCd9LAotKyAg ICAgIHsiUCIsIG5vX2FyZ3VtZW50LCAwLCAnUCd9LAotKyNlbmRpZgotICAgICAgIHswLCBub19h cmd1bWVudCwgMCwgMH0KLSAgICAgfTsKLSAKLS0gICAgd2hpbGUgKDEpCi0rICAgIHdoaWxlICgh cHl0aG9uX3NjcmlwdCkKLSAgICAgICB7Ci0gCWludCBvcHRpb25faW5kZXg7Ci0gCi1AQCAtNDc4 LDYgKzQ4NSw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCSAgY2FzZSAwOgotIAkg ICAgLyogTG9uZyBvcHRpb24gdGhhdCBqdXN0IHNldHMgYSBmbGFnLiAgKi8KLSAJICAgIGJyZWFr OwotKwkgIGNhc2UgJ1AnOgotKwkgICAgcHl0aG9uX3NjcmlwdCA9IDE7Ci0rCSAgICBicmVhazsK LSAJICBjYXNlIE9QVF9TRToKLSAJICAgIHN5bWFyZyA9IG9wdGFyZzsKLSAJICAgIGV4ZWNhcmcg PSBvcHRhcmc7Ci1AQCAtNjczLDcgKzY4MywzMSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQotIAotICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhlIGluaXRpYWwgaW5m ZXJpb3IsIHdlJ3JlIGluCi0gICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBmb3IgdGhhdCBpbmZl cmlvci4gICovCi0tICBpZiAoc2V0X2FyZ3MpCi0rICBpZiAocHl0aG9uX3NjcmlwdCkKLSsgICAg ewotKyAgICAgIC8qIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHB5dGhvbiBzY3JpcHQgdG8gZXZh bHVhdGUsIGFuZAotKwkgc3Vic2VxdWVudCBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGUgc2Ny aXB0IGZvcgotKwkgcHJvY2Vzc2luZyB0aGVyZS4gICovCi0rICAgICAgaWYgKG9wdGluZCA+PSBh cmdjKQotKwl7Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLAotKwkJCSAgICAg IF8oIiVzOiBQeXRob24gc2NyaXB0IGZpbGUgbmFtZSByZXF1aXJlZFxuIiksCi0rCQkJICAgICAg YXJndlswXSk7Ci0rCSAgZXhpdCAoMSk7Ci0rCX0KKysgICAgZGVmIG5leHQgKHNlbGYpOgorKyAg ICAgICAgcmVzdWx0ID0gc2VsZi5mcmFtZQorKyAgICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6Cisr ICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgorKyAgICAgICAgc2VsZi5mcmFtZSA9IHJl c3VsdC5vbGRlciAoKQorKyAgICAgICAgcmV0dXJuIHJlc3VsdAorZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVX cmFwcGVyLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYjc5MGE1NAor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQor QEAgLTAsMCArMSwxMTIgQEAKKysjIFdyYXBwZXIgQVBJIGZvciBmcmFtZXMuCiArCi0rICAgICAg LyogRklYTUU6IHNob3VsZCBoYW5kbGUgaW5mZXJpb3IgSS9PIGludGVsbGlnZW50bHkgaGVyZS4K LSsJIEUuZy4sIHNob3VsZCBiZSBwb3NzaWJsZSB0byBydW4gZ2RiIGluIHBpcGVsaW5lIGFuZCBo YXZlCi0rCSBQeXRob24gKGFuZCBnZGIpIG91dHB1dCBnbyB0byBzdGRlcnIgb3IgZmlsZTsgYW5k IGlmIGEKLSsJIHByb21wdCBpcyBuZWVkZWQsIG9wZW4gdGhlIHR0eS4gICovCi0rICAgICAgcXVp ZXQgPSAxOwotKyAgICAgIC8qIEZJWE1FOiBzaG91bGQgcmVhZCAuZ2RiaW5pdCBpZiwgYW5kIG9u bHkgaWYsIGEgcHJvbXB0IGlzCi0rCSByZXF1ZXN0ZWQgYnkgdGhlIHNjcmlwdC4gIFRob3VnaC4u LiBtYXliZSB0aGlzIGlzIG5vdAotKwkgaWRlYWw/ICAqLwotKyAgICAgIC8qIEZJWE1FOiBsaWtl d2lzZSwgcmVhZGluZyBpbiBoaXN0b3J5LiAgKi8KLSsgICAgICBpbmhpYml0X2dkYmluaXQgPSAx OwotKyAgICB9Ci0rICBlbHNlIGlmIChzZXRfYXJncykKLSAgICAgewotICAgICAgIC8qIFRoZSBy ZW1haW5pbmcgb3B0aW9ucyBhcmUgdGhlIGNvbW1hbmQtbGluZSBvcHRpb25zIGZvciB0aGUKLSAJ IGluZmVyaW9yLiAgVGhlIGZpcnN0IG9uZSBpcyB0aGUgc3ltL2V4ZWMgZmlsZSwgYW5kIHRoZSBy ZXN0Ci1AQCAtOTIyLDcgKzk1Niw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCi0g ICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMg aGF2ZSBiZWVuCi0gICAgICByZWFkLiAgKi8KLS0gIGluaXRfaGlzdG9yeSAoKTsKLSsgIGlmICgh cHl0aG9uX3NjcmlwdCkKLSsgICAgaW5pdF9oaXN0b3J5ICgpOwotIAotICAgaWYgKGJhdGNoX2Zs YWcpCi0gICAgIHsKLUBAIC05MzMsMTMgKzk2OCwyNSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpk YXRhKQotICAgLyogU2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1c2FnZS4gICovCi0gICBkb19jbGVh bnVwcyAocHJlX3N0YXRfY2hhaW4pOwotIAotLSAgLyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6 IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90Ci0tICAgICBtb3ZpbmcgdGhpcyBs b29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AoKQotLSAgICAg aW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhpbmcgaG9sZGluZyBi YWNrIHRoYXQKLS0gICAgIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBiZWVuIGVsaW1p bmF0ZWQuICAqLwotLSAgd2hpbGUgKDEpCi0rI2lmIEhBVkVfUFlUSE9OCi0rICBpZiAocHl0aG9u X3NjcmlwdCkKLSAgICAgewotLSAgICAgIGNhdGNoX2Vycm9ycyAoY2FwdHVyZWRfY29tbWFuZF9s b29wLCAwLCAiIiwgUkVUVVJOX01BU0tfQUxMKTsKLSsgICAgICBleHRlcm4gaW50IHBhZ2luYXRp b25fZW5hYmxlZDsKLSsgICAgICBwYWdpbmF0aW9uX2VuYWJsZWQgPSAwOwotKyAgICAgIHJ1bl9w eXRob25fc2NyaXB0IChhcmdjIC0gb3B0aW5kLCAmYXJndltvcHRpbmRdKTsKLSsgICAgICByZXR1 cm4gMTsKLSsgICAgfQotKyAgZWxzZQotKyNlbmRpZgotKyAgICB7Ci0rICAgICAgLyogTk9URTog Y2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90Ci0r CSBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5k X2xvb3AoKQotKwkgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhp bmcgaG9sZGluZyBiYWNrIHRoYXQKLSsJIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBi ZWVuIGVsaW1pbmF0ZWQuICovCi0rICAgICAgd2hpbGUgKDEpCi0rCXsKLSsJICBjYXRjaF9lcnJv cnMgKGNhcHR1cmVkX2NvbW1hbmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rCX0K LSAgICAgfQotICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAg Ki8KLSB9Ci1AQCAtOTcxLDcgKzEwMTgsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCi0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gVGhpcyBpcyB0aGUgR05V IGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKLSAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1m aWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBbb3B0aW9uc10gLS1h cmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxuXAotKyAgICBn ZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAu Li5dXG4iKSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRzX3VuZmlsdGVyZWQg KF8oIlwKLSsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3Jp cHQtYXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0 ZXJlZCAoXygiXG5cCi0gT3B0aW9uczpcblxuXAotICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5m aWx0ZXJlZCAoXygiXAotQEAgLTEwMDksNyArMTA2MSwxMyBAQCBPcHRpb25zOlxuXG5cCi0gICAt LW53CQkgICAgIERvIG5vdCB1c2UgYSB3aW5kb3cgaW50ZXJmYWNlLlxuXAotICAgLS1ueCAgICAg ICAgICAgICAgIERvIG5vdCByZWFkICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5maWx0ZXJlZCAo Z2RiaW5pdCwgc3RyZWFtKTsKLS0gIGZwdXRzX3VuZmlsdGVyZWQgKF8oIiBmaWxlLlxuXAotKyAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG4iKSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRI T04KLSsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSsgIC0tcHl0aG9uLCAtUCAgICAgICBGb2xs b3dpbmcgYXJndW1lbnQgaXMgUHl0aG9uIHNjcmlwdCBmaWxlOyByZW1haW5pbmdcblwKLSsgICAg ICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byBzY3JpcHQuXG4iKSwgc3Ry ZWFtKTsKLSsjZW5kaWYKLSsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSAgIC0tcXVpZXQgICAg ICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIgb24gc3RhcnR1cC5cblwKLSAgIC0t cmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBmaWxlcyBvbiBmaXJzdCBhY2Nlc3Mu XG5cCi0gIiksIHN0cmVhbSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dk Yi9taS9taS1jbWQtdmFyLmMKLWluZGV4IDRkZTczOTIuLmZiMGI1NTAgMTAwNjQ0Ci0tLS0gYS9n ZGIvbWkvbWktY21kLXZhci5jCi0rKysgYi9nZGIvbWkvbWktY21kLXZhci5jCi1AQCAtNzIxLDcg KzcyMSw2IEBAIG1pX2NtZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwg aW50IGFyZ2MpCi0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIC8qIEdldCB2YXJvYmog aGFuZGxlLCBpZiBhIHZhbGlkIHZhciBvYmogbmFtZSB3YXMgc3BlY2lmaWVkICovCi0gICAgICAg c3RydWN0IHZhcm9iaiAqdmFyID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUpOwotIAotICAgICAg IHZhcm9ial91cGRhdGVfb25lICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7 Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFkLmMgYi9nZGIvbWlwc3JlYWQuYwotaW5kZXggNTc5 MDczMC4uMjNjZWVjZSAxMDA2NDQKLS0tLSBhL2dkYi9taXBzcmVhZC5jCi0rKysgYi9nZGIvbWlw c3JlYWQuYwotQEAgLTQwMSw2ICs0MDEsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMg ZWNvZmZfc3ltX2ZucyA9Ci0gICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8qIEdldCBzZWdt ZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KLSAgIE5VTEwsCi0gICBkZWZhdWx0X3N5 bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCi0rICBOVUxM LAkJCQkvKiBzeW1fcHJvYmVfZm5zICovCi0gICAmcHN5bV9mdW5jdGlvbnMKLSB9OwotIAotZGlm ZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKLWluZGV4IDFjZjVhZWUu LmQxNjQwZWYgMTAwNjQ0Ci0tLS0gYS9nZGIvb2JqZmlsZXMuYwotKysrIGIvZ2RiL29iamZpbGVz LmMKLUBAIC04MTEsNiArODExLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKLSAJCQkJb2JqX3NlY3Rpb25fYWRkciAocykpOwotICAgICB9Ci0gCi0rICAv KiBSZWxvY2F0aW5nIFN5c3RlbVRhcCBwcm9iZXMuICAqLwotKyAgaWYgKG9iamZpbGUtPnNmICYm IG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKQotKyAgICBvYmpmaWxlLT5zZi0+c3ltX3Byb2Jl X2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChvYmpmaWxlLAotKwkJCQkJCSAgICBuZXdfb2Zmc2V0 cywgZGVsdGEpOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgogKwotICAgLyogRGF0YSBjaGFuZ2VkLiAgKi8KLSAgIHJldHVybiAxOwot IH0KLWRpZmYgLS1naXQgYS9nZGIvcC12YWxwcmludC5jIGIvZ2RiL3AtdmFscHJpbnQuYwotaW5k ZXggYzViZWY4YS4uZmMzYmViMyAxMDA2NDQKLS0tLSBhL2dkYi9wLXZhbHByaW50LmMKLSsrKyBi L2dkYi9wLXZhbHByaW50LmMKLUBAIC0zOSw2ICszOSw3IEBACi0gI2luY2x1ZGUgImNwLWFiaS5o IgotICNpbmNsdWRlICJjcC1zdXBwb3J0LmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsj aW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gDAotIAotIC8qIFNlZSB2YWxfcHJpbnQgZm9yIGEgZGVz Y3JpcHRpb24gb2YgdGhlIHZhcmlvdXMgcGFyYW1ldGVycyBvZiB0aGlzCi1AQCAtNjMsOCArNjQs MzEgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAotICAgc3RydWN0IHR5cGUgKmNoYXJfdHlwZTsKLSAgIExPTkdFU1QgdmFsOwot ICAgQ09SRV9BRERSIGFkZHI7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsgIHN0cnVj dCB0eXBlICpzYXZlZF90eXBlID0gdHlwZTsKLSsgIENPUkVfQUREUiBzYXZlZF9hZGRyZXNzID0g YWRkcmVzczsKLSsgIAotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAw KTsKLSsgIGFkZHJlc3MgKz0gZW1iZWRkZWRfb2Zmc2V0OwotKyAgdHlwZSA9IG9iamVjdF9hZGRy ZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7Ci0rICBpZiAodHlwZSA9PSBOVUxMKQotKyAg ICB7Ci0rICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlk IChzYXZlZF90eXBlKSwgc3RyZWFtKTsKLSsgICAgICBnZGJfZmx1c2ggKHN0cmVhbSk7Ci0rICAg ICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKyAgICAgIHJldHVybiAwOwotKyAgICB9Ci0rICBp ZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0KQotKyAgICB7Ci0r ICAgICAgc2l6ZV90IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLS0gIENIRUNLX1RZ UEVERUYgKHR5cGUpOwotKyAgICAgIHZhbGFkZHIgPSB4bWFsbG9jIChsZW5ndGgpOwotKyAgICAg IG1ha2VfY2xlYW51cCAoeGZyZWUsIChnZGJfYnl0ZSAqKSB2YWxhZGRyKTsKLSsgICAgICByZWFk X21lbW9yeSAoYWRkcmVzcywgKGdkYl9ieXRlICopIHZhbGFkZHIsIGxlbmd0aCk7Ci0rICAgICAg ZW1iZWRkZWRfb2Zmc2V0ID0gMDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBhZGRyZXNzIC09IGVt YmVkZGVkX29mZnNldDsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKLSAgICAgewotICAg ICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLUBAIC0xMjAsOCArMTQ0LDggQEAgcGFzY2FsX3ZhbF9w cmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAotIAkJewot IAkJICBpID0gMDsKLSAJCX0KLS0JICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzICh0eXBl LCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsCi0tCQkJCQlhZGRyZXNzLCBzdHJlYW0sIHJlY3Vy c2UsCi0rCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc2F2ZWRfdHlwZSwgdmFsYWRk ciwgZW1iZWRkZWRfb2Zmc2V0LAotKwkJCQkJc2F2ZWRfYWRkcmVzcywgc3RyZWFtLCByZWN1cnNl LAotIAkJCQkJb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGkpOwotIAkgICAgICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICJ9Iik7Ci0gCSAgICB9Ci1AQCAtMTYwLDYgKzE4NCw3IEBAIHBhc2Nh bF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK LSAJICAvKiBUcnkgdG8gcHJpbnQgd2hhdCBmdW5jdGlvbiBpdCBwb2ludHMgdG8uICAqLwotIAkg IHByaW50X2FkZHJlc3NfZGVtYW5nbGUgKGdkYmFyY2gsIGFkZHIsIHN0cmVhbSwgZGVtYW5nbGUp OwotIAkgIC8qIFJldHVybiB2YWx1ZSBpcyBpcnJlbGV2YW50IGV4Y2VwdCBmb3Igc3RyaW5nIHBv aW50ZXJzLiAgKi8KLSsJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gCSAgcmV0dXJuICgwKTsK LSAJfQotIAotQEAgLTI1MSw2ICsyNzYsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gICAgICAgLyogUmV0dXJuIG51bWJl ciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAJICdc MCcgaWYgd2UgcmVhY2hlZCB0aGUgZW5kLiAgdmFsX3ByaW50X3N0cmluZyB0YWtlcyBjYXJlIGlu Y2x1ZGluZwotIAkgdGhlIHRlcm1pbmF0aW5nICdcMCcgaWYgbmVjZXNzYXJ5LiAgKi8KLSsgICAg ICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuIGk7Ci0gCi0gICAgICAgYnJl YWs7Ci1AQCAtNTc2LDYgKzYwMiw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAgICBUWVBFX0NPREUgKHR5cGUpKTsK LSAgICAgfQotICAgZ2RiX2ZsdXNoIChzdHJlYW0pOwotKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OwotICAgcmV0dXJuICgwKTsKLSB9Ci0gDAotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2Ri L3BhcnNlLmMKLWluZGV4IDMyYTNiZDYuLjllYWYyZGUgMTAwNjQ0Ci0tLS0gYS9nZGIvcGFyc2Uu YwotKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC0xMTMsOCArMTEzLDYgQEAgc2hvd19wYXJzZXJkZWJ1 ZyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSAKLSBzdGF0aWMgdm9pZCBm cmVlX2Z1bmNhbGxzICh2b2lkICppZ25vcmUpOwotIAotLXN0YXRpYyBpbnQgcHJlZml4aWZ5X2V4 cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICopOwotLQotIHN0YXRpYyBpbnQgcHJlZml4aWZ5 X3N1YmV4cCAoc3RydWN0IGV4cHJlc3Npb24gKiwgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LAot IAkJCSAgICAgaW50KTsKLSAKLUBAIC0xODgsNyArMTg2LDcgQEAgZnJlZV9mdW5jYWxscyAodm9p ZCAqaWdub3JlKQotICAgIHRoZSBleHBvdXQgYXJyYXkuICBMQU5HIGlzIHRoZSBsYW5ndWFnZSB1 c2VkIHRvIHBhcnNlIHRoZSBleHByZXNzaW9uLgotICAgIEFuZCBHREJBUkNIIGlzIHRoZSBnZGJh cmNoIHRvIHVzZSBkdXJpbmcgcGFyc2luZy4gICovCi0gCi0tc3RhdGljIHZvaWQKLSt2b2lkCi0g aW5pdGlhbGl6ZV9leHBvdXQgKGludCBpbml0aWFsX3NpemUsIGNvbnN0IHN0cnVjdCBsYW5ndWFn ZV9kZWZuICpsYW5nLAotIAkJICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gewotQEAgLTIw NCw3ICsyMDIsNyBAQCBpbml0aWFsaXplX2V4cG91dCAoaW50IGluaXRpYWxfc2l6ZSwgY29uc3Qg c3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmcsCi0gICAgSXQgaXMgZ2VuZXJhbGx5IHVzZWQgd2hl biB0aGUgcGFyc2VyIGhhcyBqdXN0IGJlZW4gcGFyc2VkIGFuZAotICAgIGNyZWF0ZWQuICAqLwot IAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIHJlYWxsb2NhdGVfZXhwb3V0ICh2b2lkKQotIHsKLSAg IC8qIFJlY29yZCB0aGUgYWN0dWFsIG51bWJlciBvZiBleHByZXNzaW9uIGVsZW1lbnRzLCBhbmQg dGhlbgotQEAgLTgxMSw3ICs4MDksNyBAQCBjb3B5X25hbWUgKHN0cnVjdCBzdG9rZW4gdG9rZW4p Ci0gICAgcmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyB0aGUg bGVmdC1oYW5kLXNpZGUKLSAgICBvZiB0aGUgc3RydWN0IG9wZXJhdGlvbiBhdCBFWFBPVVRfTEFT VF9TVFJVQ1QuICAqLwotIAotLXN0YXRpYyBpbnQKLStpbnQKLSBwcmVmaXhpZnlfZXhwcmVzc2lv biAoc3RydWN0IGV4cHJlc3Npb24gKmV4cHIpCi0gewotICAgaW50IGxlbiA9IHNpemVvZiAoc3Ry dWN0IGV4cHJlc3Npb24pICsgRVhQX0VMRU1fVE9fQllURVMgKGV4cHItPm5lbHRzKTsKLUBAIC0x NTI5LDYgKzE1MjcsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwg Li4uKQotIAotIGludAotIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgcG9zLAotKwkJCSBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgdm9pZCAqZGF0YSksCi0gCQkJIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAotIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCi0gCQkJIHZvaWQgKmRhdGEpCi1A QCAtMTU3MCw3ICsxNTY5LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwb3MsCi0gCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9z ICsgMiArIGFyZ10udHlwZTsKLSAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9P QkpGSUxFICh0eXBlKTsKLSAKLS0JICAgIGlmIChvYmpmaWxlICYmICgqb2JqZmlsZV9mdW5jKSAo b2JqZmlsZSwgZGF0YSkpCi0rCSAgICBpZiAob2JqZmlsZSAmJiBvYmpmaWxlX2Z1bmMgJiYgKCpv YmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSAJICAgICAgcmV0dXJuIDE7Ci0gCSAgfQot ICAgICAgIH0KLUBAIC0xNTg4LDcgKzE1ODcsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAJLyogQ2hlY2sgb2JqZmlsZSB3 aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KLSAJICAgU1lNQk9MX09CSl9TRUNU SU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KLS0JaWYgKCgqb2JqZmlsZV9mdW5jKSAoU1lN Qk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0rCWlmIChvYmpmaWxlX2Z1bmMK LSsJICAgICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmls ZSwgZGF0YSkpCi0gCSAgcmV0dXJuIDE7Ci0gCi0gCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMg cGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi1AQCAtMTYwMSwyNCAr MTYwMSwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBvcywKLSAKLSAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJ TEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0gCi0tICBpZiAodHlwZSAmJiBU WVBFX09CSkZJTEUgKHR5cGUpCi0rICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMgJiYgKCp0eXBlX2Z1 bmMpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuIDE7Ci0rICBpZiAodHlwZSAmJiBUWVBFX09C SkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwotICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAo VFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCi0gICAgIHJldHVybiAxOwotLSAgaWYgKG9iamZp bGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSsgIGlmIChvYmpmaWxlICYm IG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQotICAgICBy ZXR1cm4gMTsKLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBDYWxsIE9CSkZJTEVfRlVOQyBm b3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcgcmVmZXJlbmNlZCBieSBFWFAuCi0t ICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVMTCBPQkpGSUxFLiAgRnVu Y3Rpb25zIGdldCBwYXNzZWQgYW4KLS0gICBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEg cG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMKLS0gICBub24temVybyB2 YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvIHZhbHVlIGlzIGltbWVkaWF0ZWx5IHJldHVy bmVkIHRvCi0tICAgdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvIGlzIHJldHVybmVkIGFmdGVy IGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4KLS0gICAqLwotKy8qIENhbGwgVFlQRV9GVU5D IGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBPQkpGSUxFIGZvdW5kIGJlaW5nCi0r ICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUgZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgd2l0 aCBOVUxMIFRZUEUgb3IgTlVMTAotKyAgIE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBh biBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4KLSsgICBJZiBhbnkgb2Yg dGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhlcikgbm9u LXplcm8KLSsgICB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAg T3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQKLSsgICBhZnRlciBpdGVyYXRpbmcgdGhyb3VnaCB3 aG9sZSBFWFAuICAqLwotIAotIHN0YXRpYyBpbnQKLSBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwKLSsJICAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwg dm9pZCAqZGF0YSksCi0gCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIHZvaWQgKmRhdGEpLAotIAkgICAgIHZvaWQgKmRhdGEpCi0gewotQEAgLTE2MzMs NyArMTYzNiw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAotICAg ICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwotICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4t PmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCi0tCQkJCQkJCSAgIG9iamZp bGVfZnVuYywgZGF0YSkpCi0rCQkJCQkJCSAgIHR5cGVfZnVuYywKLSsJCQkJCQkJICAgb2JqZmls ZV9mdW5jLAotKwkJCQkJCQkgICBkYXRhKSkKLSAJcmV0dXJuIDE7Ci0gCi0gICAgICAgZW5kcG9z ID0gcG9zOwotQEAgLTE2NjQsOCArMTY2OSwyOSBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBnZGJfYXNz ZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwot IAotLSAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIGV4cF91c2VzX29iamZpbGVfaXRlciwgb2Jq ZmlsZSk7Ci0rICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVMTCwgZXhwX3VzZXNfb2JqZmls ZV9pdGVyLCBvYmpmaWxlKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBleHBfdHlwZXNfbWFya191 c2VkLiAgKi8KKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rI2lmIDAKLStzdGF0 aWMgaW50Ci0rZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9p ZCAqdW51c2VkKQotK3sKLSsgIHR5cGVfbWFya191c2VkICh0eXBlKTsKKytpbXBvcnQgZ2RiCiAr Ci0rICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KLSsgIHJldHVybiAwOwotK30KKysj IEZJWE1FOiBhcmd1YWJseSBhbGwgdGhpcyBzaG91bGQgYmUgb24gRnJhbWUgc29tZWhvdy4KKytj bGFzcyBGcmFtZVdyYXBwZXI6CisrICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgZnJhbWUpOgorKyAg ICAgICAgc2VsZi5mcmFtZSA9IGZyYW1lOwogKwotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9y IGFueSB0eXBlIGNvbnRhaW5lZCBpbiBFWFAuICAqLworKyAgICBkZWYgd3JpdGVfc3ltYm9sIChz ZWxmLCBzdHJlYW0sIHN5bSwgYmxvY2spOgorKyAgICAgICAgaWYgbGVuIChzeW0ubGlua2FnZV9u YW1lKToKKysgICAgICAgICAgICBuc3ltLCBpc19maWVsZF9vZl90aGlzID0gZ2RiLmxvb2t1cF9z eW1ib2wgKHN5bS5saW5rYWdlX25hbWUsIGJsb2NrKQorKyAgICAgICAgICAgIGlmIG5zeW0uYWRk cl9jbGFzcyAhPSBnZGIuU1lNQk9MX0xPQ19SRUdJU1RFUjoKKysgICAgICAgICAgICAgICAgc3lt ID0gbnN5bQogKwotK3ZvaWQKLStleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwKQotK3sKLSsgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19tYXJrX3VzZWRfaXRl ciwgTlVMTCwgTlVMTCk7Ci0gfQotKyNlbmRpZgotIAotIHZvaWQKLSBfaW5pdGlhbGl6ZV9wYXJz ZSAodm9pZCkKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVm cy5oCi1pbmRleCAxNmI0MGFjLi5jMzgxM2ZmIDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlci1kZWZz LmgKLSsrKyBiL2dkYi9wYXJzZXItZGVmcy5oCi1AQCAtMTMwLDYgKzEzMCwyNCBAQCB1bmlvbiB0 eXBlX3N0YWNrX2VsdAotIGV4dGVybiB1bmlvbiB0eXBlX3N0YWNrX2VsdCAqdHlwZV9zdGFjazsK LSBleHRlcm4gaW50IHR5cGVfc3RhY2tfZGVwdGgsIHR5cGVfc3RhY2tfc2l6ZTsKLSAKLSsvKiBB bGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBgZXhwb3V0JyBhbmQgaXRzIHJlbGF0ZWQgdmFyaWFibGVz IGBleHBvdXRfc2l6ZScKLSsgICBhbmQgYGV4cG91dF9wdHInLgorKyAgICAgICAgc3RyZWFtLndy aXRlIChzeW0ucHJpbnRfbmFtZSArICI9IikKKysgICAgICAgIHRyeToKKysgICAgICAgICAgICB2 YWwgPSBzZWxmLnJlYWRfdmFyIChzeW0pCisrICAgICAgICAgICAgaWYgdmFsICE9IE5vbmU6Cisr ICAgICAgICAgICAgICAgIHZhbCA9IHN0ciAodmFsKQorKyAgICAgICAgIyBGSVhNRTogd291bGQg YmUgbmljZSB0byBoYXZlIGEgbW9yZSBwcmVjaXNlIGV4Y2VwdGlvbiBoZXJlLgorKyAgICAgICAg ZXhjZXB0IFJ1bnRpbWVFcnJvciwgdGV4dDoKKysgICAgICAgICAgICB2YWwgPSB0ZXh0CisrICAg ICAgICBpZiB2YWwgPT0gTm9uZToKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCI/Pz8iKQor KyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKHN0ciAodmFsKSkKICsK LSsgICBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGluaXRpYWwgc2l6ZSB0byBiZSB1c2VkIGZv ciB4bWFsbG9jLiAgVGhlIHNlY29uZAotKyAgIGFyZ3VtZW50IGlzIHRoZSBsYW5ndWFnZSByZWxh dGVkIHRvIHRoZSBleHByZXNzaW9uLiAgVGhlIHRoaXJkIGFyZ3VtZW50IGlzCi0rICAgY29ycmVz cG9uZGluZyBnZGJhcmNoLiAgKi8KKysgICAgZGVmIHByaW50X2ZyYW1lX2xvY2FscyAoc2VsZiwg c3RyZWFtLCBmdW5jKToKKysgICAgICAgIGlmIG5vdCBmdW5jOgorKyAgICAgICAgICAgIHJldHVy bgogKwotK2V4dGVybiB2b2lkIGluaXRpYWxpemVfZXhwb3V0IChpbnQsIGNvbnN0IHN0cnVjdCBs YW5ndWFnZV9kZWZuICosCi0rCQkJICAgICAgIHN0cnVjdCBnZGJhcmNoICopOworKyAgICAgICAg Zmlyc3QgPSBUcnVlCisrICAgICAgICBibG9jayA9IGZ1bmMudmFsdWUKICsKLSsvKiBSZWFsbG9j YXRlIGBleHBvdXQnIGluIG9yZGVyIHRvIGZyZWUgZXhjZXNzaXZlIGVsZW1lbnRzIHRoYXQgbWln aHQgaGF2ZQotKyAgIGJlZW4gY3JlYXRlZCBkdXJpbmcgdGhlIHBhcnNpbmcuICBTZXQgdGhlIG51 bWJlciBvZiBlbGVtZW50cwotKyAgIGFjY29yZGluZ2x5LiAgKi8KKysgICAgICAgIGZvciBzeW0g aW4gYmxvY2s6CisrICAgICAgICAgICAgaWYgc3ltLmlzX2FyZ3VtZW50OgorKyAgICAgICAgICAg ICAgICBjb250aW51ZTsKICsKLStleHRlcm4gdm9pZCByZWFsbG9jYXRlX2V4cG91dCAodm9pZCk7 CisrICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBibG9jaykKKysg ICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCdcbicpCiArCi0rZXh0ZXJuIGludCBwcmVmaXhpZnlf ZXhwcmVzc2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cHIpOworKyAgICBkZWYgcHJpbnRfZnJh bWVfYXJncyAoc2VsZiwgc3RyZWFtLCBmdW5jKToKKysgICAgICAgIGlmIG5vdCBmdW5jOgorKyAg ICAgICAgICAgIHJldHVybgogKwotIGV4dGVybiB2b2lkIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChl bnVtIGV4cF9vcGNvZGUpOwotIAotIGV4dGVybiB2b2lkIHdyaXRlX2V4cF9lbHRfc3ltIChzdHJ1 Y3Qgc3ltYm9sICopOwotQEAgLTE5MSw2ICsyMDksOCBAQCBleHRlcm4gdm9pZCBvcGVyYXRvcl9s ZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosCi0g CQkJCSAgICAgIGludCAqKTsKLSAKLSBleHRlcm4gaW50IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJk IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCQkgICAgaW50ICgqdHlwZV9m dW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsCi0rCQkJCQkJICAgICAgdm9pZCAqZGF0YSksCi0gCQkJ CSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpCi0gCQkJCSAgICAgIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgdm9pZCAqZGF0YSksCi0gCQkJCSAgICB2b2lkICpkYXRhKTsKLUBAIC0yNzcsNiArMjk3 LDcgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCi0gICAgICAgIHZhbHVlIHNob3VsZCBiZSBpbW1l ZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8KLSAgICAgICAg c2hvdWxkIGJlIHJldHVybmVkLiAgKi8KLSAgICAgaW50ICgqb3BlcmF0b3JfY2hlY2spIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCSAgIGludCAoKnR5cGVfZnVuYykgKHN0 cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKSwKLSAJCQkgICBpbnQgKCpvYmpmaWxlX2Z1bmMp IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCQl2b2lkICpkYXRhKSwKLSAJCQkgICB2 b2lkICpkYXRhKTsKLUBAIC0zMTUsNCArMzM2LDEwIEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJp bnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsK LSAKLSBleHRlcm4gaW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSAKLStleHRlcm4gaW50IGV4cF91c2VzX29iamZp bGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKysg ICAgICAgIGZpcnN0ID0gVHJ1ZQorKyAgICAgICAgYmxvY2sgPSBmdW5jLnZhbHVlCiArCi0rI2lm IDAKLStleHRlcm4gdm9pZCBleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwKTsKLSsjZW5kaWYKKysgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6CisrICAgICAgICAgICAg aWYgbm90IHN5bS5pc19hcmd1bWVudDoKKysgICAgICAgICAgICAgICAgY29udGludWU7CiArCi0g I2VuZGlmIC8qIFBBUlNFUl9ERUZTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LW5h dC5jIGIvZ2RiL3BwYy1saW51eC1uYXQuYwotaW5kZXggYWY4MDkxOS4uMzA3N2M0YiAxMDA2NDQK LS0tLSBhL2dkYi9wcGMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLUBA IC0xNDY4LDE0ICsxNDY4LDEzIEBAIHBwY19saW51eF9jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKGlu dCB0eXBlLCBpbnQgY250LCBpbnQgb3QpCi0gICBpZiAoIWhhdmVfcHRyYWNlX2Jvb2tlX2ludGVy ZmFjZSAoKSkKLSAgICAgewotICAgICAgIGludCB0aWQ7Ci0tICAgICAgcHRpZF90IHB0aWQgPSBp bmZlcmlvcl9wdGlkOwotIAotICAgICAgIC8qIFdlIG5lZWQgdG8ga25vdyB3aGV0aGVyIHB0cmFj ZSBzdXBwb3J0cyBQVFJBQ0VfU0VUX0RFQlVHUkVHCi0gCSBhbmQgd2hldGhlciB0aGUgdGFyZ2V0 IGhhcyBEQUJSLiAgSWYgZWl0aGVyIGFuc3dlciBpcyBubywgdGhlCi0gCSBwdHJhY2UgY2FsbCB3 aWxsIHJldHVybiAtMS4gIEZhaWwgaW4gdGhhdCBjYXNlLiAgKi8KLS0gICAgICB0aWQgPSBUSURH RVQgKHB0aWQpOwotKyAgICAgIHRpZCA9IFRJREdFVCAoaW5mZXJpb3JfcHRpZCk7Ci0gICAgICAg aWYgKHRpZCA9PSAwKQotLQl0aWQgPSBQSURHRVQgKHB0aWQpOwotKwl0aWQgPSBQSURHRVQgKGlu ZmVyaW9yX3B0aWQpOwotIAotICAgICAgIGlmIChwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcs IHRpZCwgMCwgMCkgPT0gLTEpCi0gCXJldHVybiAwOwotQEAgLTE1NjYsOCArMTU2NSw5IEBAIGJv b2tlX2ZpbmRfdGhyZWFkX3BvaW50c19ieV90aWQgKGludCB0aWQsIGludCBhbGxvY19uZXcpCi0g LyogVGhpcyBmdW5jdGlvbiBpcyBhIGdlbmVyaWMgd3JhcHBlciB0aGF0IGlzIHJlc3BvbnNpYmxl IGZvciBpbnNlcnRpbmcgYQotICAgICpwb2ludCAoaS5lLiwgY2FsbGluZyBgcHRyYWNlJyBpbiBv cmRlciB0byBpc3N1ZSB0aGUgcmVxdWVzdCB0byB0aGUKLSAgICBrZXJuZWwpIGFuZCByZWdpc3Rl cmluZyBpdCBpbnRlcm5hbGx5IGluIEdEQi4gICovCisrICAgICAgICAgICAgaWYgbm90IGZpcnN0 OgorKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIsICIpCiArCi0gc3RhdGljIHZvaWQK LS1ib29rZV9pbnNlcnRfcG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAqYiwgaW50IHRp ZCkKLStib29rZV9pbnNlcnRfcG9pbnQgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHN0cnVjdCBwcGNf aHdfYnJlYWtwb2ludCAqYikKLSB7Ci0gICBpbnQgaTsKLSAgIGxvbmcgc2xvdDsKLUBAIC0xNTgw LDEyICsxNTgwLDEyIEBAIGJvb2tlX2luc2VydF9wb2ludCAoc3RydWN0IHBwY19od19icmVha3Bv aW50ICpiLCBpbnQgdGlkKQotICAgbWVtY3B5IChwLCBiLCBzaXplb2YgKHN0cnVjdCBwcGNfaHdf YnJlYWtwb2ludCkpOwotIAotICAgZXJybm8gPSAwOwotLSAgc2xvdCA9IHB0cmFjZSAoUFBDX1BU UkFDRV9TRVRIV0RFQlVHLCB0aWQsIDAsIHApOwotKyAgc2xvdCA9IHB0cmFjZSAoUFBDX1BUUkFD RV9TRVRIV0RFQlVHLCBUSURHRVQgKGxwLT5wdGlkKSwgMCwgcCk7Ci0gICBpZiAoc2xvdCA8IDAp Ci0gICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBicmVh a3BvaW50IG9yIHdhdGNocG9pbnQiKSk7Ci0gCi0gICAvKiBFdmVyeXRoaW5nIHdlbnQgZmluZSwg c28gd2UgaGF2ZSB0byByZWdpc3RlciB0aGlzICpwb2ludC4gICovCi0tICB0ID0gYm9va2VfZmlu ZF90aHJlYWRfcG9pbnRzX2J5X3RpZCAodGlkLCAxKTsKLSsgIHQgPSBib29rZV9maW5kX3RocmVh ZF9wb2ludHNfYnlfdGlkIChUSURHRVQgKGxwLT5wdGlkKSwgMSk7Ci0gICBnZGJfYXNzZXJ0ICh0 ICE9IE5VTEwpOwotICAgaHdfYnJlYWtzID0gdC0+aHdfYnJlYWtzOwotIAotQEAgLTE2MDMsMTcg KzE2MDMsMzMgQEAgYm9va2VfaW5zZXJ0X3BvaW50IChzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQg KmIsIGludCB0aWQpCi0gICBkaXNjYXJkX2NsZWFudXBzIChjKTsKLSB9Ci0gCi0tLyogVGhpcyBm dW5jdGlvbiBpcyBhIGdlbmVyaWMgd3JhcHBlciB0aGF0IGlzIHJlc3BvbnNpYmxlIGZvciByZW1v dmluZyBhCi0tICAgKnBvaW50IChpLmUuLCBjYWxsaW5nIGBwdHJhY2UnIGluIG9yZGVyIHRvIGlz c3VlIHRoZSByZXF1ZXN0IHRvIHRoZQotLSAgIGtlcm5lbCksIGFuZCB1bnJlZ2lzdGVyaW5nIGl0 IGludGVybmFsbHkgYXQgR0RCLiAgKi8KLS1zdGF0aWMgdm9pZAotLWJvb2tlX3JlbW92ZV9wb2lu dCAoc3RydWN0IHBwY19od19icmVha3BvaW50ICpiLCBpbnQgdGlkKQotKy8qIENhbGxiYWNrIGZv ciBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMKLSsgICBjYWxsaW5nIGJvb2tlX2lu c2VydF9wb2ludC4gICovCisrICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwg c3ltLCBibG9jaykKKysgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCiArCi0rc3RhdGljIGludAot K2Jvb2tlX2luc2VydF9wb2ludF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwgdm9pZCAq Yl92b2lkcCkKLSB7Ci0rICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKmIgPSBiX3ZvaWRwOwor KyAgICAjIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSBqdXN0IGJlIGEgbWV0aG9kIG9uIGdk Yi5GcmFtZS4KKysgICAgIyBCdXQgdGhlbiB3ZSBuZWVkIHN0cmVhbSB3cmFwcGVycy4KKysgICAg ZGVmIGRlc2NyaWJlIChzZWxmLCBzdHJlYW0sIGZ1bGwpOgorKyAgICAgICAgaWYgc2VsZi50eXBl ICgpID09IGdkYi5EVU1NWV9GUkFNRToKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgPGZ1 bmN0aW9uIGNhbGxlZCBmcm9tIGdkYj5cbiIpCisrICAgICAgICBlbGlmIHNlbGYudHlwZSAoKSA9 PSBnZGIuU0lHVFJBTVBfRlJBTUU6CisrICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiIDxzaWdu YWwgaGFuZGxlciBjYWxsZWQ+XG4iKQorKyAgICAgICAgZWxzZToKKysgICAgICAgICAgICBzYWwg PSBzZWxmLmZpbmRfc2FsICgpCisrICAgICAgICAgICAgcGMgPSBzZWxmLnBjICgpCisrICAgICAg ICAgICAgbmFtZSA9IHNlbGYubmFtZSAoKQorKyAgICAgICAgICAgIGlmIG5vdCBuYW1lOgorKyAg ICAgICAgICAgICAgICBuYW1lID0gIj8/IgorKyAgICAgICAgICAgIGlmIHBjICE9IHNhbC5wYyBv ciBub3Qgc2FsLnN5bXRhYjoKKysgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiIDB4JTA4 eCBpbiIgJSBwYykKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgIiArIG5hbWUgKyAiICgi KQogKwotKyAgYm9va2VfaW5zZXJ0X3BvaW50IChscCwgYik7CisrICAgICAgICAgICAgZnVuYyA9 IHNlbGYuZnVuY3Rpb24gKCkKKysgICAgICAgICAgICBzZWxmLnByaW50X2ZyYW1lX2FyZ3MgKHN0 cmVhbSwgZnVuYykKICsKLSsgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0 dXJuIDA7Ci0rfQorKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIikiKQogKwotKy8qIFRoaXMg ZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9s d3BzIHRoYXQgaXMKLSsgICByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgYSAqcG9pbnQgKGkuZS4s IGNhbGxpbmcgYHB0cmFjZScgaW4gb3JkZXIgdG8gaXNzdWUKLSsgICB0aGUgcmVxdWVzdCB0byB0 aGUga2VybmVsKSwgYW5kIHVucmVnaXN0ZXJpbmcgaXQgaW50ZXJuYWxseSBhdCBHREIuICAqLwor KyAgICAgICAgICAgIGlmIHNhbC5zeW10YWIgYW5kIHNhbC5zeW10YWIuZmlsZW5hbWU6CisrICAg ICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiBhdCAiICsgc2FsLnN5bXRhYi5maWxlbmFtZSkK KysgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiOiIgKyBzdHIgKHNhbC5saW5lKSkKICsK LStzdGF0aWMgaW50Ci0rYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2lu Zm8gKmxwLCB2b2lkICpiX3ZvaWRwKQotK3sKLSsgIHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAq YiA9IGJfdm9pZHA7Ci0gICBpbnQgaTsKLSAgIHN0cnVjdCBod19icmVha190dXBsZSAqaHdfYnJl YWtzOwotICAgc3RydWN0IHRocmVhZF9wb2ludHMgKnQ7Ci0gCi0tICB0ID0gYm9va2VfZmluZF90 aHJlYWRfcG9pbnRzX2J5X3RpZCAodGlkLCAwKTsKLSsgIHQgPSBib29rZV9maW5kX3RocmVhZF9w b2ludHNfYnlfdGlkIChUSURHRVQgKGxwLT5wdGlkKSwgMCk7Ci0gICBnZGJfYXNzZXJ0ICh0ICE9 IE5VTEwpOwotICAgaHdfYnJlYWtzID0gdC0+aHdfYnJlYWtzOwotIAotQEAgLTE2MjcsMTMgKzE2 NDMsMTcgQEAgYm9va2VfcmVtb3ZlX3BvaW50IChzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKmIs IGludCB0aWQpCi0gICAgICBicmVha3BvaW50cy93YXRjaHBvaW50cyBhcyAib25lLXNob3QiLCB0 aGF0IGlzLCB0aGV5IGFyZSBhdXRvbWF0aWNhbGx5Ci0gICAgICBkZWxldGVkIHdoZW4gaGl0LiAg Ki8KLSAgIGVycm5vID0gMDsKLS0gIGlmIChwdHJhY2UgKFBQQ19QVFJBQ0VfREVMSFdERUJVRywg dGlkLCAwLCBod19icmVha3NbaV0uc2xvdCkgPCAwKQotKyAgaWYgKHB0cmFjZSAoUFBDX1BUUkFD RV9ERUxIV0RFQlVHLCBUSURHRVQgKGxwLT5wdGlkKSwgMCwgaHdfYnJlYWtzW2ldLnNsb3QpCi0r ICAgICAgPCAwKQotICAgICBpZiAoZXJybm8gIT0gRU5PRU5UKQotICAgICAgIHBlcnJvcl93aXRo X25hbWUgKF8oIlVuZXhwZWN0ZWQgZXJyb3IgZGVsZXRpbmcgIgotIAkJCSAgImJyZWFrcG9pbnQg b3Igd2F0Y2hwb2ludCIpKTsKLSAKLSAgIHhmcmVlIChod19icmVha3NbaV0uaHdfYnJlYWspOwot ICAgaHdfYnJlYWtzW2ldLmh3X2JyZWFrID0gTlVMTDsKKysgICAgICAgICAgICBpZiBub3Qgc2Vs Zi5uYW1lICgpIG9yIChub3Qgc2FsLnN5bXRhYiBvciBub3Qgc2FsLnN5bXRhYi5maWxlbmFtZSk6 CisrICAgICAgICAgICAgICAgIGxpYiA9IGdkYi5zb2xpYl9hZGRyZXNzIChwYykKKysgICAgICAg ICAgICAgICAgaWYgbGliOgorKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiIGZy b20gIiArIGxpYikKICsKLSsgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0 dXJuIDA7Ci0gfQotIAotIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVycyBuZWVkZWQg Zm9yIGEgcmFuZ2VkIGJyZWFrcG9pbnQuICAqLwotQEAgLTE2NTMsNyArMTY3Myw2IEBAIHN0YXRp YyBpbnQKLSBwcGNfbGludXhfaW5zZXJ0X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAotIAkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0KQotIHsKLS0gIHN0 cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgcDsKLSAKLSAg IGlmICghaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQotQEAgLTE2NzksOCArMTY5OCw3 IEBAIHBwY19saW51eF9pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsCi0gICAgICAgcC5hZGRyMiA9IDA7Ci0gICAgIH0KLSAKLS0gIEFMTF9MV1BTIChscCkKLS0g ICAgYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChscC0+cHRpZCkpOwotKyAgbGludXhf bmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2ss ICZwKTsKLSAKLSAgIHJldHVybiAwOwotIH0KLUBAIC0xNjg5LDcgKzE3MDcsNiBAQCBzdGF0aWMg aW50Ci0gcHBjX2xpbnV4X3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwKLSAJCQkJICBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKmJwX3RndCkKLSB7Ci0tICBzdHJ1 Y3QgbHdwX2luZm8gKmxwOwotICAgc3RydWN0IHBwY19od19icmVha3BvaW50IHA7Ci0gCi0gICBp ZiAoIWhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSkKLUBAIC0xNzE1LDggKzE3MzIsNyBA QCBwcGNfbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAotICAgICAgIHAuYWRkcjIgPSAwOwotICAgICB9Ci0gCi0tICBBTExfTFdQUyAobHApCi0tICAg IGJvb2tlX3JlbW92ZV9wb2ludCAoJnAsIFRJREdFVCAobHAtPnB0aWQpKTsKLSsgIGxpbnV4X25h dF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAm cCk7Ci0gCi0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTc0NSw3ICsxNzYxLDYgQEAgc3RhdGljIGlu dAotIHBwY19saW51eF9pbnNlcnRfbWFza193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAq b3BzLCBDT1JFX0FERFIgYWRkciwKLSAJCQkJICBDT1JFX0FERFIgbWFzaywgaW50IHJ3KQotIHsK LS0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgcDsK LSAKLSAgIGdkYl9hc3NlcnQgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSk7Ci1AQCAt MTc1OCw4ICsxNzczLDcgQEAgcHBjX2xpbnV4X2luc2VydF9tYXNrX3dhdGNocG9pbnQgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiBhZGRyLAotICAgcC5hZGRyMiA9IG1hc2s7Ci0g ICBwLmNvbmRpdGlvbl92YWx1ZSA9IDA7Ci0gCi0tICBBTExfTFdQUyAobHApCi0tICAgIGJvb2tl X2luc2VydF9wb2ludCAoJnAsIFRJREdFVCAobHAtPnB0aWQpKTsKLSsgIGxpbnV4X25hdF9pdGVy YXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2VfaW5zZXJ0X3BvaW50X2NhbGxiYWNrLCAmcCk7Ci0g Ci0gICByZXR1cm4gMDsKLSB9Ci1AQCAtMTc3Myw3ICsxNzg3LDYgQEAgc3RhdGljIGludAotIHBw Y19saW51eF9yZW1vdmVfbWFza193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBD T1JFX0FERFIgYWRkciwKLSAJCQkJICBDT1JFX0FERFIgbWFzaywgaW50IHJ3KQotIHsKLS0gIHN0 cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgcDsKLSAKLSAg IGdkYl9hc3NlcnQgKGhhdmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSAoKSk7Ci1AQCAtMTc4Niw4 ICsxNzk5LDcgQEAgcHBjX2xpbnV4X3JlbW92ZV9tYXNrX3dhdGNocG9pbnQgKHN0cnVjdCB0YXJn ZXRfb3BzICpvcHMsIENPUkVfQUREUiBhZGRyLAotICAgcC5hZGRyMiA9IG1hc2s7Ci0gICBwLmNv bmRpdGlvbl92YWx1ZSA9IDA7Ci0gCi0tICBBTExfTFdQUyAobHApCi0tICAgIGJvb2tlX3JlbW92 ZV9wb2ludCAoJnAsIFRJREdFVCAobHAtPnB0aWQpKTsKLSsgIGxpbnV4X25hdF9pdGVyYXRlX3dh dGNocG9pbnRfbHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAmcCk7Ci0gCi0gICBy ZXR1cm4gMDsKLSB9Ci1AQCAtMTc5NywxMCArMTgwOSwxNiBAQCBzdGF0aWMgaW50Ci0gY2FuX3Vz ZV93YXRjaHBvaW50X2NvbmRfYWNjZWwgKHZvaWQpCi0gewotICAgc3RydWN0IHRocmVhZF9wb2lu dHMgKnA7Ci0tICBpbnQgdGlkID0gVElER0VUIChpbmZlcmlvcl9wdGlkKTsKLSAgIGludCBjbnQg PSBib29rZV9kZWJ1Z19pbmZvLm51bV9jb25kaXRpb25fcmVncywgaTsKLSAgIENPUkVfQUREUiB0 bXBfdmFsdWU7Ci0gCi0rICAvKiBPdmVybG9hZCB0aHJlYWQgaWQgb250byBwcm9jZXNzIGlkLiAg Ki8KLSsgIGludCB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgICAgICAgICAgIHN0 cmVhbS53cml0ZSAoIlxuIikKICsKLSsgIC8qIE5vIHRocmVhZCBpZCwganVzdCB1c2UgcHJvY2Vz cyBpZC4gICovCi0rICBpZiAodGlkID09IDApCi0rICAgIHRpZCA9IFBJREdFVCAoaW5mZXJpb3Jf cHRpZCk7CisrICAgICAgICAgICAgaWYgZnVsbDoKKysgICAgICAgICAgICAgICAgc2VsZi5wcmlu dF9mcmFtZV9sb2NhbHMgKHN0cmVhbSwgZnVuYykKICsKLSAgIGlmICghaGF2ZV9wdHJhY2VfYm9v a2VfaW50ZXJmYWNlICgpIHx8IGNudCA9PSAwKQotICAgICByZXR1cm4gMDsKLSAKLUBAIC0xOTk5 LDYgKzIwMTcsMjIgQEAgcHBjX2xpbnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbiAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLSAJICAmJiBjaGVja19jb25kaXRpb24g KGFkZHIsIGNvbmQsICZkYXRhX3ZhbHVlLCAmbGVuKSk7Ci0gfQotIAotKy8qIENhbGxiYWNrIGZv ciBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgc2V0dGluZyBSRVRQX1ZPSURQIGJ5 Ci0rICAgUFRSQUNFX1NFVF9ERUJVR1JFRyBmb3IgTFAuICAqLworKyAgICBkZWYgX19nZXRhdHRy X18gKHNlbGYsIG5hbWUpOgorKyAgICAgICAgcmV0dXJuIGdldGF0dHIgKHNlbGYuZnJhbWUsIG5h bWUpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weSBiL2dkYi9w eXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi42YmI0ZmIxCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIv YmFja3RyYWNlLnB5CitAQCAtMCwwICsxLDQyIEBACisrIyBGaWx0ZXJpbmcgYmFja3RyYWNlLgog KwotK3N0YXRpYyBpbnQKLStzZXRfc2F2ZWRfZGFicl92YWx1ZV9jYWxsYmFjayAoc3RydWN0IGx3 cF9pbmZvICpscCwgdm9pZCAqcmV0cF92b2lkcCkKLSt7Ci0rICBpbnQgKnJldHAgPSByZXRwX3Zv aWRwOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwotKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgVElER0VUIChs cC0+cHRpZCksIDAsIHNhdmVkX2RhYnJfdmFsdWUpCi0rICAgICAgPCAwKQotKyAgICAqcmV0cCA9 IC0xOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsgIC8qIENvbnRpbnVlIHRo ZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0dXJuIDA7Ci0rfQorK2ltcG9ydCBnZGIKKytpbXBvcnQg aXRlcnRvb2xzCiArCi0gLyogU2V0IHVwIFAgd2l0aCB0aGUgcGFyYW1ldGVycyBuZWNlc3Nhcnkg dG8gcmVxdWVzdCBhIHdhdGNocG9pbnQgY292ZXJpbmcKLSAgICBMRU4gYnl0ZXMgc3RhcnRpbmcg YXQgQUREUiBhbmQgaWYgcG9zc2libGUgd2l0aCBjb25kaXRpb24gZXhwcmVzc2lvbiBDT05ECi0g ICAgZXZhbHVhdGVkIGJ5IGhhcmR3YXJlLiAgSU5TRVJUIHRlbGxzIGlmIHdlIGFyZSBjcmVhdGlu ZyBhIHJlcXVlc3QgZm9yCi1AQCAtMjA1NCw3ICsyMDg4LDYgQEAgc3RhdGljIGludAotIHBwY19s aW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywK LSAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLS0gIHN0cnVjdCBsd3BfaW5m byAqbHA7Ci0gICBpbnQgcmV0ID0gLTE7Ci0gCi0gICBpZiAoaGF2ZV9wdHJhY2VfYm9va2VfaW50 ZXJmYWNlICgpKQotQEAgLTIwNjMsOCArMjA5Niw3IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hw b2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLSAKLSAgICAgICBjcmVhdGVf d2F0Y2hwb2ludF9yZXF1ZXN0ICgmcCwgYWRkciwgbGVuLCBydywgY29uZCwgMSk7Ci0gCi0tICAg ICAgQUxMX0xXUFMgKGxwKQotLQlib29rZV9pbnNlcnRfcG9pbnQgKCZwLCBUSURHRVQgKGxwLT5w dGlkKSk7Ci0rICAgICAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9p bnNlcnRfcG9pbnRfY2FsbGJhY2ssICZwKTsKLSAKLSAgICAgICByZXQgPSAwOwotICAgICB9Ci1A QCAtMjEwNywxMiArMjEzOSw4IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCBydywKLSAKLSAgICAgICBzYXZlZF9kYWJyX3ZhbHVlID0g ZGFicl92YWx1ZTsKLSAKLS0gICAgICBBTExfTFdQUyAobHApCi0tCWlmIChwdHJhY2UgKFBUUkFD RV9TRVRfREVCVUdSRUcsIFRJREdFVCAobHAtPnB0aWQpLCAwLAotLQkJICAgIHNhdmVkX2RhYnJf dmFsdWUpIDwgMCkKLS0JICByZXR1cm4gLTE7Ci0tCi0gICAgICAgcmV0ID0gMDsKLSsgICAgICBs aW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHNldF9zYXZlZF9kYWJyX3ZhbHVlX2Nh bGxiYWNrLCAmcmV0KTsKLSAgICAgfQotIAotICAgcmV0dXJuIHJldDsKLUBAIC0yMTIyLDcgKzIx NTAsNiBAQCBzdGF0aWMgaW50Ci0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAotIAkJCSAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNv bmQpCi0gewotLSAgc3RydWN0IGx3cF9pbmZvICpscDsKLSAgIGludCByZXQgPSAtMTsKLSAKLSAg IGlmIChoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkpCi1AQCAtMjEzMSwyMCArMjE1OCwx NiBAQCBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVu LCBpbnQgcncsCi0gCi0gICAgICAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoJnAsIGFkZHIs IGxlbiwgcncsIGNvbmQsIDApOwotIAotLSAgICAgIEFMTF9MV1BTIChscCkKLS0JYm9va2VfcmVt b3ZlX3BvaW50ICgmcCwgVElER0VUIChscC0+cHRpZCkpOwotKyAgICAgIGxpbnV4X25hdF9pdGVy YXRlX3dhdGNocG9pbnRfbHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAmcCk7Ci0g Ci0gICAgICAgcmV0ID0gMDsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0gICAgICAgc2F2ZWRf ZGFicl92YWx1ZSA9IDA7Ci0tICAgICAgQUxMX0xXUFMgKGxwKQotLQlpZiAocHRyYWNlIChQVFJB Q0VfU0VUX0RFQlVHUkVHLCBUSURHRVQgKGxwLT5wdGlkKSwgMCwKLS0JCSAgICBzYXZlZF9kYWJy X3ZhbHVlKSA8IDApCi0tCSAgcmV0dXJuIC0xOwotIAotICAgICAgIHJldCA9IDA7Ci0rICAgICAg bGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChzZXRfc2F2ZWRfZGFicl92YWx1ZV9j YWxsYmFjaywgJnJldCk7Ci0gICAgIH0KLSAKLSAgIHJldHVybiByZXQ7Ci1AQCAtMjE3MSw3ICsy MTk0LDcgQEAgcHBjX2xpbnV4X25ld190aHJlYWQgKHN0cnVjdCBsd3BfaW5mbyAqbHApCi0gICAg ICAgLyogQ29weSB0aGF0IHRocmVhZCdzIGJyZWFrcG9pbnRzIGFuZCB3YXRjaHBvaW50cyB0byB0 aGUgbmV3IHRocmVhZC4gICovCi0gICAgICAgZm9yIChpID0gMDsgaSA8IG1heF9zbG90c19udW1i ZXI7IGkrKykKLSAJaWYgKGh3X2JyZWFrc1tpXS5od19icmVhaykKLS0JICBib29rZV9pbnNlcnRf cG9pbnQgKGh3X2JyZWFrc1tpXS5od19icmVhaywgdGlkKTsKLSsJICBib29rZV9pbnNlcnRfcG9p bnQgKGxwLCBod19icmVha3NbaV0uaHdfYnJlYWspOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHB0 cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCAwLCBzYXZlZF9kYWJyX3ZhbHVlKTsKLUBA IC0yMjI5LDcgKzIyNTIsMTQgQEAgcHBjX2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LCBDT1JFX0FERFIgKmFkZHJfcCkKLSAgICAgICAvKiBUaGUg aW5kZXggKG9yIHNsb3QpIG9mIHRoZSAqcG9pbnQgaXMgcGFzc2VkIGluIHRoZSBzaV9lcnJubyBm aWVsZC4gICovCi0gICAgICAgaW50IHNsb3QgPSBzaWdpbmZvX3AtPnNpX2Vycm5vOwotIAotLSAg ICAgIHQgPSBib29rZV9maW5kX3RocmVhZF9wb2ludHNfYnlfdGlkIChUSURHRVQgKGluZmVyaW9y X3B0aWQpLCAwKTsKLSsgICAgICAvKiBPdmVybG9hZCB0aHJlYWQgaWQgb250byBwcm9jZXNzIGlk LiAgKi8KLSsgICAgICBpbnQgdGlkID0gVElER0VUIChpbmZlcmlvcl9wdGlkKTsKLSsKLSsgICAg ICAvKiBObyB0aHJlYWQgaWQsIGp1c3QgdXNlIHByb2Nlc3MgaWQuICAqLwotKyAgICAgIGlmICh0 aWQgPT0gMCkKLSsJdGlkID0gUElER0VUIChpbmZlcmlvcl9wdGlkKTsKLSsKLSsgICAgICB0ID0g Ym9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5X3RpZCAodGlkLCAwKTsKLSAKLSAgICAgICAvKiBG aW5kIG91dCBpZiB0aGlzICpwb2ludCBpcyBhIGhhcmR3YXJlIGJyZWFrcG9pbnQuCi0gCSBJZiBz bywgd2Ugc2hvdWxkIHJldHVybiAwLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LXRk ZXAuYyBiL2dkYi9wcGMtbGludXgtdGRlcC5jCi1pbmRleCBiNjQ3MGZlLi5mODcxMzA5IDEwMDY0 NAotLS0tIGEvZ2RiL3BwYy1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9wcGMtbGludXgtdGRlcC5j Ci1AQCAtNjUsNiArNjUsMTQgQEAKLSAjaW5jbHVkZSAiZmVhdHVyZXMvcnM2MDAwL3Bvd2VycGMt aXNhMjA1LXZzeDY0bC5jIgotICNpbmNsdWRlICJmZWF0dXJlcy9yczYwMDAvcG93ZXJwYy1lNTAw bC5jIgotIAotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0rI2luY2x1ZGUgImF4LmgiCi0rI2lu Y2x1ZGUgImF4LWdkYi5oIgotKyNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCi0rI2luY2x1ZGUg InBhcnNlci1kZWZzLmgiCi0rI2luY2x1ZGUgInVzZXItcmVncy5oIgotKyNpbmNsdWRlIDxjdHlw ZS5oPgotKwotIC8qIFRoZSBzeXNjYWxsJ3MgWE1MIGZpbGVuYW1lIGZvciBQUEMgYW5kIFBQQzY0 LiAgKi8KLSAjZGVmaW5lIFhNTF9TWVNDQUxMX0ZJTEVOQU1FX1BQQyAic3lzY2FsbHMvcHBjLWxp bnV4LnhtbCIKLSAjZGVmaW5lIFhNTF9TWVNDQUxMX0ZJTEVOQU1FX1BQQzY0ICJzeXNjYWxscy9w cGM2NC1saW51eC54bWwiCi1AQCAtMTE5Miw2ICsxMjAwLDY1IEBAIHBwY19saW51eF9jb3JlX3Jl YWRfZGVzY3JpcHRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICB9Ci0gfQotIAot K3N0YXRpYyBpbnQKLStwcGNfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0dXJuICgqcyA9PSAnaScgLyogTGl0 ZXJhbCBudW1iZXIuICAqLwotKwkgIHx8IChpc2RpZ2l0ICgqcykgJiYgc1sxXSA9PSAnKCcKLSsJ ICAgICAgJiYgaXNkaWdpdCAoc1syXSkpIC8qIERpc3BsYWNlbWVudC4gICovCi0rCSAgfHwgKCpz ID09ICcoJyAmJiBpc2RpZ2l0IChzWzFdKSkgLyogUmVnaXN0ZXIgaW5kaXJlY3Rpb24uICAqLwot KwkgIHx8IGlzZGlnaXQgKCpzKSk7IC8qIFJlZ2lzdGVyIHZhbHVlLiAgKi8KLSt9CisrIyBPdXIg b25seSBleHBvcnRzLgorK19fYWxsX18gPSBbJ3B1c2hfZnJhbWVfZmlsdGVyJywgJ2NyZWF0ZV9m cmFtZV9maWx0ZXInXQogKwotK3N0YXRpYyBpbnQKLStwcGNfc3RhcF9wYXJzZV9zcGVjaWFsX3Rv a2VuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgICAgICBzdHJ1Y3Qgc3RhcF9wYXJz ZV9pbmZvICpwKQotK3sKLSsgIGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkKLSsgICAgewotKyAgICAg IC8qIFRoaXMgdGVtcG9yYXJ5IHBvaW50ZXIgaXMgbmVlZGVkIGJlY2F1c2Ugd2UgaGF2ZSB0byBk byBhIGxvb2thaGVhZC4KLSsJICBXZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGggYSByZWdpc3RlciBk aXNwbGFjZW1lbnQsIGFuZCBpbiBzdWNoIGNhc2UKLSsJICB3ZSB3b3VsZCBub3QgbmVlZCB0byBk byBhbnl0aGluZy4gICovCi0rICAgICAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsKLSsgICAgICBj aGFyICpyZWduYW1lOwotKyAgICAgIGludCBsZW47Ci0rICAgICAgc3RydWN0IHN0b2tlbiBzdHI7 Ci0rCi0rICAgICAgd2hpbGUgKGlzZGlnaXQgKCpzKSkKLSsJKytzOwotKwotKyAgICAgIGlmICgq cyA9PSAnKCcpCi0rCS8qIEl0IGlzIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50IGluZGVlZC4gIFJl dHVybmluZyAwIG1lYW5zIHdlIGFyZQotKwkgICBkZWZlcnJpbmcgdGhlIHRyZWF0bWVudCBvZiB0 aGlzIGNhc2UgdG8gdGhlIGdlbmVyaWMgcGFyc2VyLiAgKi8KLSsJcmV0dXJuIDA7Ci0rCi0rICAg ICAgbGVuID0gcyAtIHAtPmFyZzsKLSsgICAgICByZWduYW1lID0gYWxsb2NhIChsZW4gKyAyKTsK LSsgICAgICByZWduYW1lWzBdID0gJ3InOwotKwotKyAgICAgIHN0cm5jcHkgKHJlZ25hbWUgKyAx LCBwLT5hcmcsIGxlbik7Ci0rICAgICAgKytsZW47Ci0rICAgICAgcmVnbmFtZVtsZW5dID0gJ1ww JzsKLSsKLSsgICAgICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCBy ZWduYW1lLCBsZW4pID09IC0xKQotKwllcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAl cycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICAgICAgcmVnbmFtZSwgcC0+c2F2ZWRfYXJn KTsKLSsKLSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOwotKyAgICAg IHN0ci5wdHIgPSByZWduYW1lOwotKyAgICAgIHN0ci5sZW5ndGggPSBsZW47Ci0rICAgICAgd3Jp dGVfZXhwX3N0cmluZyAoc3RyKTsKLSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVH SVNURVIpOwotKwotKyAgICAgIHAtPmFyZyA9IHM7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgLyog QWxsIHRoZSBvdGhlciB0b2tlbnMgc2hvdWxkIGJlIGhhbmRsZWQgY29ycmVjdGx5IGJ5IHRoZSBn ZW5lcmljCi0rICAgICAgIHBhcnNlci4gICovCi0rICAgIHJldHVybiAwOworK2ZyYW1lX2ZpbHRl ciA9IE5vbmUKICsKLSsgIHJldHVybiAxOwotK30KLSAKLSAvKiBDZWxsL0IuRS4gYWN0aXZlIFNQ RSBjb250ZXh0IHRyYWNraW5nIHN1cHBvcnQuICAqLwotIAotQEAgLTE1MDksNiArMTU3NiwxNSBA QCBwcGNfbGludXhfaW5pdF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKLSAgIC8qIEdl dCB0aGUgc3lzY2FsbCBudW1iZXIgZnJvbSB0aGUgYXJjaCdzIHJlZ2lzdGVyLiAgKi8KLSAgIHNl dF9nZGJhcmNoX2dldF9zeXNjYWxsX251bWJlciAoZ2RiYXJjaCwgcHBjX2xpbnV4X2dldF9zeXNj YWxsX251bWJlcik7Ci0gCi0rICAvKiBTeXN0ZW1UYXAgZnVuY3Rpb25zLiAgKi8KLSsgIHNldF9n ZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gsICJpIik7Ci0rICBzZXRfZ2RiYXJj aF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoZ2RiYXJjaCwgIigiKTsKLSsgIHNl dF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKGdkYmFyY2gsICIpIik7 Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXggKGdkYmFyY2gsICJyIik7 Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChnZGJhcmNoLCBwcGNfc3Rh cF9pc19zaW5nbGVfb3BlcmFuZCk7Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxf dG9rZW4gKGdkYmFyY2gsCi0rCQkJCQlwcGNfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKTsKKytk ZWYgcHVzaF9mcmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKKysgICAgIiIiUmVnaXN0ZXIgYSBu ZXcgYmFja3RyYWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNlJyBjb21tYW5kLgor K1RoZSBmaWx0ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4gYXJndW1lbnQuICBU aGUgaXRlcmF0b3IKKyt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmplY3RzLiAgVGhlIGZp bHRlciBzaG91bGQgaW4gdHVybiBhY3QgYXMKKythbiBpdGVyYXRvciByZXR1cm5pbmcgc3VjaCBv YmplY3RzLiIiIgorKyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCisrICAgIGlmIGZyYW1lX2ZpbHRl ciA9PSBOb25lOgorKyAgICAgICAgZnJhbWVfZmlsdGVyID0gY29uc3RydWN0b3IKKysgICAgZWxz ZToKKysgICAgICAgIGZyYW1lX2ZpbHRlciA9IGxhbWJkYSBpdGVyYXRvciwgZmlsdGVyID0gZnJh bWVfZmlsdGVyOiBjb25zdHJ1Y3RvciAoZmlsdGVyIChpdGVyYXRvcikpCiArCi0gICBpZiAodGRl cC0+d29yZHNpemUgPT0gNCkKLSAgICAgewotICAgICAgIC8qIFVudGlsIE5vdmVtYmVyIDIwMDEs IGdjYyBkaWQgbm90IGNvbXBseSB3aXRoIHRoZSAzMiBiaXQgU3lzVgotZGlmZiAtLWdpdCBhL2dk Yi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKLWluZGV4IGJlZThhODUuLjAwZjMzMmQgMTAw NjQ0Ci0tLS0gYS9nZGIvcHJpbnRjbWQuYwotKysrIGIvZ2RiL3ByaW50Y21kLmMKLUBAIC00OSw2 ICs0OSw3IEBACi0gI2luY2x1ZGUgImNoYXJzZXQuaCIKLSAjaW5jbHVkZSAiYXJjaC11dGlscy5o IgotICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgot IAotICNpZmRlZiBUVUkKLSAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyogRm9yIHR1aV9hY3RpdmUg ZXQgYWwuICAgKi8KLUBAIC05NzEsNiArOTcyLDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAq ZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKLSAgIGVsc2UKLSAgICAgdmFsID0gYWNj ZXNzX3ZhbHVlX2hpc3RvcnkgKDApOwotIAotKyAgLyogRG8gbm90IHRyeSB0byBPQkpFQ1RfQURE UkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZQotKyAgICAg c291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVzc2VzIGFzIGZvdW5kIGJ5IFJFQURfVkFSX1ZBTFVF LiAgVGhlIHZhbHVlIGhlcmUKLSsgICAgIGNhbiBiZSBhbHJlYWR5IGEgY2FsY3VsYXRlZCBleHBy ZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0ZSBmb3IKLSsgICAgIERXX09QX3B1c2hfb2JqZWN0 X2FkZHJlc3MuICAqLworK2RlZiBjcmVhdGVfZnJhbWVfZmlsdGVyIChpdGVyKToKKysgICAgZ2xv YmFsIGZyYW1lX2ZpbHRlcgorKyAgICBpZiBmcmFtZV9maWx0ZXIgaXMgTm9uZToKKysgICAgICAg IHJldHVybiBpdGVyCisrICAgIHJldHVybiBmcmFtZV9maWx0ZXIgKGl0ZXIpCiArCi0gICBpZiAo dm9pZHByaW50IHx8ICh2YWwgJiYgdmFsdWVfdHlwZSAodmFsKSAmJgotIAkJICAgIFRZUEVfQ09E RSAodmFsdWVfdHlwZSAodmFsKSkgIT0gVFlQRV9DT0RFX1ZPSUQpKQotICAgICB7Ci1AQCAtMTA1 OSw2ICsxMDY1LDkgQEAgb3V0cHV0X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQot IAotICAgdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwcik7Ci0gCi0rICBpZiAoVkFMVUVf TFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKLSsgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1 ZV9yYXdfYWRkcmVzcyAodmFsKSk7CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvYmFja3RyYWNlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNl LnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZWVlYTkwOQorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CitA QCAtMCwwICsxLDEwNiBAQAorKyMgTmV3IGJhY2t0cmFjZSBjb21tYW5kLgogKwotICAgYW5ub3Rh dGVfdmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOwotIAotICAgZ2V0X2Zvcm1hdHRlZF9w cmludF9vcHRpb25zICgmb3B0cywgZm9ybWF0KTsKLUBAIC0xNDcyLDYgKzE0ODEsMjQgQEAgeF9j b21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKLSAJc2V0X2ludGVybmFsdmFyIChsb29r dXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwotICAgICB9Ci0gfQor KyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwotKyNpZiAwCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVz IHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCisrIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgogKwotK3N0YXRpYyB2b2lkCi0rcHJpbnRfdHlwZXNfbWFya191c2Vk ICh2b2lkKQotK3sKLSsgIHN0cnVjdCBkaXNwbGF5ICpkOworK2ltcG9ydCBnZGIKKytpbXBvcnQg Z2RiLmJhY2t0cmFjZQorK2ltcG9ydCBpdGVydG9vbHMKKytmcm9tIGdkYi5GcmFtZUl0ZXJhdG9y IGltcG9ydCBGcmFtZUl0ZXJhdG9yCisrZnJvbSBnZGIuRnJhbWVXcmFwcGVyIGltcG9ydCBGcmFt ZVdyYXBwZXIKKytpbXBvcnQgc3lzCiArCi0rICBpZiAobGFzdF9leGFtaW5lX3ZhbHVlKQotKyAg ICB0eXBlX21hcmtfdXNlZCAodmFsdWVfdHlwZSAobGFzdF9leGFtaW5lX3ZhbHVlKSk7CisrY2xh c3MgUmV2ZXJzZUJhY2t0cmFjZVBhcmFtZXRlciAoZ2RiLlBhcmFtZXRlcik6CisrICAgICIiIlRo ZSBuZXctYmFja3RyYWNlIGNvbW1hbmQgY2FuIHNob3cgYmFja3RyYWNlcyBpbiAncmV2ZXJzZScg b3JkZXIuCisrVGhpcyBtZWFucyB0aGF0IHRoZSBpbm5lcm1vc3QgZnJhbWUgd2lsbCBiZSBwcmlu dGVkIGxhc3QuCisrTm90ZSB0aGF0IHJldmVyc2UgYmFja3RyYWNlcyBhcmUgbW9yZSBleHBlbnNp dmUgdG8gY29tcHV0ZS4iIiIKICsKLSsgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQgPSBk LT5uZXh0KQotKyAgICBpZiAoZC0+ZXhwKQotKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQgKGQt PmV4cCk7Ci0rfQotKyNlbmRpZgorKyAgICBzZXRfZG9jID0gIkVuYWJsZSBvciBkaXNhYmxlIHJl dmVyc2UgYmFja3RyYWNlcy4iCisrICAgIHNob3dfZG9jID0gIlNob3cgd2hldGhlciBiYWNrdHJh Y2VzIHdpbGwgYmUgcHJpbnRlZCBpbiByZXZlcnNlIG9yZGVyLiIKICsKLSAMCi0gCi0gLyogQWRk IGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFpbi4KLUBAIC0xOTcxLDYgKzE5 OTgsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1 Y3Qgc3ltYm9sICp2YXIsCi0gICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsK LSAKLSAgICAgICB2YWwgPSByZWFkX3Zhcl92YWx1ZSAodmFyLCBmcmFtZSk7CisrICAgIGRlZiBf X2luaXRfXyhzZWxmKToKKysgICAgICAgIGdkYi5QYXJhbWV0ZXIuX19pbml0X18gKHNlbGYsICJy ZXZlcnNlLWJhY2t0cmFjZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIu Q09NTUFORF9TVEFDSywgZ2RiLlBBUkFNX0JPT0xFQU4pCisrICAgICAgICAjIERlZmF1bHQgdG8g Y29tcGF0aWJpbGl0eSB3aXRoIGdkYi4KKysgICAgICAgIHNlbGYudmFsdWUgPSBGYWxzZQogKwot KyAgICAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lICgpOwotKyAgICAgIHNl bGVjdF9mcmFtZSAoZnJhbWUpOworK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFjZSAoZ2RiLkNvbW1h bmQpOgorKyAgICAiIiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5u ZXJtb3N0IENPVU5UIGZyYW1lcy4KKytXaXRoIGEgbmVnYXRpdmUgYXJndW1lbnQsIHByaW50IG91 dGVybW9zdCAtQ09VTlQgZnJhbWVzLgorK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1YWxpZmllciBhbHNv IHByaW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCisrVXNlIG9mIHRoZSAn cmF3JyBxdWFsaWZpZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFibGUgbW9kdWxlcy4K KysiIiIKICsKLSAgICAgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci0gICAgICAg b3B0cy5kZXJlZl9yZWYgPSAxOwotICAgICAgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFt LCBpbmRlbnQsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKLUBAIC0yODg0LDQgKzI5MTUsOCBA QCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8 c3ltYm9sPi4iKSwgTlVMTCwKLSAgIGFkZF9jb20gKCJldmFsIiwgbm9fY2xhc3MsIGV2YWxfY29t bWFuZCwgXygiXAotIENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wiLCBhcmcxLCBhcmcy LCBhcmczLCAuLi4sIGFyZ24gdG9cblwKLSBhIGNvbW1hbmQgbGluZSwgYW5kIGNhbGwgaXQuIikp OworKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgIyBGSVhNRTogdGhpcyBpcyBu b3Qgd29ya2luZyBxdWl0ZSB3ZWxsIGVub3VnaCB0byByZXBsYWNlCisrICAgICAgICAjICJiYWNr dHJhY2UiIHlldC4KKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fIChzZWxmLCAibmV3LWJh Y2t0cmFjZSIsIGdkYi5DT01NQU5EX1NUQUNLKQorKyAgICAgICAgc2VsZi5yZXZlcnNlID0gUmV2 ZXJzZUJhY2t0cmFjZVBhcmFtZXRlcigpCiArCi0rI2lmIDAKLSsgIG9ic2VydmVyX2F0dGFjaF9t YXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7Ci0rI2VuZGlmCi0gfQotZGlmZiAtLWdp dCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5IGIvZ2RiL3B5dGhvbi9saWIv Z2RiL0ZyYW1lSXRlcmF0b3IucHkKKysgICAgZGVmIHJldmVyc2VfaXRlciAoc2VsZiwgaXRlcik6 CisrICAgICAgICByZXN1bHQgPSBbXQorKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKKysgICAg ICAgICAgICByZXN1bHQuYXBwZW5kIChpdGVtKQorKyAgICAgICAgcmVzdWx0LnJldmVyc2UoKQor KyAgICAgICAgcmV0dXJuIHJlc3VsdAorKworKyAgICBkZWYgZmluYWxfbiAoc2VsZiwgaXRlciwg eCk6CisrICAgICAgICByZXN1bHQgPSBbXQorKyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKKysg ICAgICAgICAgICByZXN1bHQuYXBwZW5kIChpdGVtKQorKyAgICAgICAgcmV0dXJuIHJlc3VsdFt4 Ol0KKysKKysgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6CisrICAgICAgICBp ID0gMAorKyAgICAgICAgY291bnQgPSAwCisrICAgICAgICBmaWx0ZXIgPSBUcnVlCisrICAgICAg ICBmdWxsID0gRmFsc2UKKysKKysgICAgICAgIGZvciB3b3JkIGluIGFyZy5zcGxpdCAoIiAiKToK KysgICAgICAgICAgICBpZiB3b3JkID09ICcnOgorKyAgICAgICAgICAgICAgICBjb250aW51ZQor KyAgICAgICAgICAgIGVsaWYgd29yZCA9PSAncmF3JzoKKysgICAgICAgICAgICAgICAgZmlsdGVy ID0gRmFsc2UKKysgICAgICAgICAgICBlbGlmIHdvcmQgPT0gJ2Z1bGwnOgorKyAgICAgICAgICAg ICAgICBmdWxsID0gVHJ1ZQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIGNv dW50ID0gaW50ICh3b3JkKQorKworKyAgICAgICAgIyBGSVhNRTogcHJvdmlkZSBvcHRpb24gdG8g c3RhcnQgYXQgc2VsZWN0ZWQgZnJhbWUKKysgICAgICAgICMgSG93ZXZlciwgc2hvdWxkIHN0aWxs IG51bWJlciBhcyBpZiBzdGFydGluZyBmcm9tIG5ld2VzdAorKyAgICAgICAgbmV3ZXN0X2ZyYW1l ID0gZ2RiLm5ld2VzdF9mcmFtZSgpCisrICAgICAgICBpdGVyID0gaXRlcnRvb2xzLmltYXAgKEZy YW1lV3JhcHBlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWVJdGVyYXRv ciAobmV3ZXN0X2ZyYW1lKSkKKysgICAgICAgIGlmIGZpbHRlcjoKKysgICAgICAgICAgICBpdGVy ID0gZ2RiLmJhY2t0cmFjZS5jcmVhdGVfZnJhbWVfZmlsdGVyIChpdGVyKQorKworKyAgICAgICAg IyBOb3cgd3JhcCBpbiBhbiBpdGVyYXRvciB0aGF0IG51bWJlcnMgdGhlIGZyYW1lcy4KKysgICAg ICAgIGl0ZXIgPSBpdGVydG9vbHMuaXppcCAoaXRlcnRvb2xzLmNvdW50ICgwKSwgaXRlcikKKysK KysgICAgICAgICMgUmV2ZXJzZSBpZiB0aGUgdXNlciB3YW50ZWQgdGhhdC4KKysgICAgICAgIGlm IHNlbGYucmV2ZXJzZS52YWx1ZToKKysgICAgICAgICAgICBpdGVyID0gc2VsZi5yZXZlcnNlX2l0 ZXIgKGl0ZXIpCisrCisrICAgICAgICAjIEV4dHJhY3Qgc3ViLXJhbmdlIHVzZXIgd2FudHMuCisr ICAgICAgICBpZiBjb3VudCA8IDA6CisrICAgICAgICAgICAgaXRlciA9IHNlbGYuZmluYWxfbiAo aXRlciwgY291bnQpCisrICAgICAgICBlbGlmIGNvdW50ID4gMDoKKysgICAgICAgICAgICBpdGVy ID0gaXRlcnRvb2xzLmlzbGljZSAoaXRlciwgMCwgY291bnQpCisrCisrICAgICAgICBmb3IgcGFp ciBpbiBpdGVyOgorKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUgKCIjJS0yZCIgJSBwYWly WzBdKQorKyAgICAgICAgICAgIHBhaXJbMV0uZGVzY3JpYmUgKHN5cy5zdGRvdXQsIGZ1bGwpCisr CisrRmlsdGVyaW5nQmFja3RyYWNlKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdu b3JlX2Vycm9ycy5weQogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU2NTQ1 NDYKK2luZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRo b24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5Ci1AQCAtMCwwICsxLDMzIEBACi0rIyBJdGVyYXRv ciBvdmVyIGZyYW1lcy4KKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9l cnJvcnMucHkKK0BAIC0wLDAgKzEsMzcgQEAKKysjIElnbm9yZSBlcnJvcnMgaW4gdXNlciBjb21t YW5kcy4KICsKLSsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtNzM4MiwyOSAr NDM1NiwzMyBAQCBpbmRleCAwMDAwMDAwLi41NjU0NTQ2CiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCiArCi0rY2xhc3MgRnJhbWVJdGVyYXRvcjoKLSsgICAgIiIiQW4gaXRlcmF0b3IgdGhh dCBpdGVyYXRlcyBvdmVyIGZyYW1lcy4iIiIKKytpbXBvcnQgZ2RiCiArCi0rICAgIGRlZiBfX2lu aXRfXyAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgIkluaXRpYWxpemUgYSBGcmFtZUl0ZXJhdG9y LiAgRlJBTUUgaXMgdGhlIHN0YXJ0aW5nIGZyYW1lLiIKLSsgICAgICAgIHNlbGYuZnJhbWUgPSBm cmFtZQorK2NsYXNzIElnbm9yZUVycm9yc0NvbW1hbmQgKGdkYi5Db21tYW5kKToKKysgICAgIiIi RXhlY3V0ZSBhIHNpbmdsZSBjb21tYW5kLCBpZ25vcmluZyBhbGwgZXJyb3JzLgorK09ubHkgb25l LWxpbmUgY29tbWFuZHMgYXJlIHN1cHBvcnRlZC4KKytUaGlzIGlzIHByaW1hcmlseSB1c2VmdWwg aW4gc2NyaXB0cy4iIiIKICsKLSsgICAgZGVmIF9faXRlcl9fIChzZWxmKToKLSsgICAgICAgIHJl dHVybiBzZWxmCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6CisrICAgICAgICBzdXBlciAoSWdu b3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJpZ25vcmUtZXJyb3JzIiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1B TkRfT0JTQ1VSRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIyBGSVhNRS4uLgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkKICsKLSsgICAgZGVmIG5leHQg KHNlbGYpOgotKyAgICAgICAgcmVzdWx0ID0gc2VsZi5mcmFtZQotKyAgICAgICAgaWYgcmVzdWx0 IGlzIE5vbmU6Ci0rICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotKyAgICAgICAgc2Vs Zi5mcmFtZSA9IHJlc3VsdC5vbGRlciAoKQotKyAgICAgICAgcmV0dXJuIHJlc3VsdAotZGlmZiAt LWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvRnJhbWVXcmFwcGVyLnB5CisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90 dHkpOgorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIGdkYi5leGVjdXRlIChhcmcsIGZyb21f dHR5KQorKyAgICAgICAgZXhjZXB0OgorKyAgICAgICAgICAgIHBhc3MKKysKKytJZ25vcmVFcnJv cnNDb21tYW5kICgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFo b2xlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5CiBuZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjc5MGE1NAoraW5kZXggMDAwMDAwMC4uMjFhMGJm MAogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5w eQotQEAgLTAsMCArMSwxMTIgQEAKLSsjIFdyYXBwZXIgQVBJIGZvciBmcmFtZXMuCisrKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkKK0BAIC0wLDAgKzEsNzUgQEAKKysj IHBhaG9sZSBjb21tYW5kIGZvciBnZGIKICsKICsjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTc0MjMsMTA4ICs0NDAxLDcxIEBA IGluZGV4IDAwMDAwMDAuLmI3OTBhNTQKICsKICtpbXBvcnQgZ2RiCiArCi0rIyBGSVhNRTogYXJn dWFibHkgYWxsIHRoaXMgc2hvdWxkIGJlIG9uIEZyYW1lIHNvbWVob3cuCi0rY2xhc3MgRnJhbWVX cmFwcGVyOgotKyAgICBkZWYgX19pbml0X18gKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIHNlbGYu ZnJhbWUgPSBmcmFtZTsKKytjbGFzcyBQYWhvbGUgKGdkYi5Db21tYW5kKToKKysgICAgIiIiU2hv dyB0aGUgaG9sZXMgaW4gYSBzdHJ1Y3R1cmUuCisrVGhpcyBjb21tYW5kIHRha2VzIGEgc2luZ2xl IGFyZ3VtZW50LCBhIHR5cGUgbmFtZS4KKytJdCBwcmludHMgdGhlIHR5cGUgYW5kIGRpc3BsYXlz IGNvbW1lbnRzIHNob3dpbmcgd2hlcmUgaG9sZXMgYXJlLiIiIgogKwotKyAgICBkZWYgd3JpdGVf c3ltYm9sIChzZWxmLCBzdHJlYW0sIHN5bSwgYmxvY2spOgotKyAgICAgICAgaWYgbGVuIChzeW0u bGlua2FnZV9uYW1lKToKLSsgICAgICAgICAgICBuc3ltLCBpc19maWVsZF9vZl90aGlzID0gZ2Ri Lmxvb2t1cF9zeW1ib2wgKHN5bS5saW5rYWdlX25hbWUsIGJsb2NrKQotKyAgICAgICAgICAgIGlm IG5zeW0uYWRkcl9jbGFzcyAhPSBnZGIuU1lNQk9MX0xPQ19SRUdJU1RFUjoKLSsgICAgICAgICAg ICAgICAgc3ltID0gbnN5bQorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3Vw ZXIgKFBhaG9sZSwgc2VsZikuX19pbml0X18gKCJwYWhvbGUiLCBnZGIuQ09NTUFORF9OT05FLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9TWU1C T0wpCiArCi0rICAgICAgICBzdHJlYW0ud3JpdGUgKHN5bS5wcmludF9uYW1lICsgIj0iKQotKyAg ICAgICAgdHJ5OgotKyAgICAgICAgICAgIHZhbCA9IHNlbGYucmVhZF92YXIgKHN5bSkKLSsgICAg ICAgICAgICBpZiB2YWwgIT0gTm9uZToKLSsgICAgICAgICAgICAgICAgdmFsID0gc3RyICh2YWwp Ci0rICAgICAgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIGhhdmUgYSBtb3JlIHByZWNpc2Ug ZXhjZXB0aW9uIGhlcmUuCi0rICAgICAgICBleGNlcHQgUnVudGltZUVycm9yLCB0ZXh0OgotKyAg ICAgICAgICAgIHZhbCA9IHRleHQKLSsgICAgICAgIGlmIHZhbCA9PSBOb25lOgotKyAgICAgICAg ICAgIHN0cmVhbS53cml0ZSAoIj8/PyIpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHN0 cmVhbS53cml0ZSAoc3RyICh2YWwpKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfbG9jYWxzIChz ZWxmLCBzdHJlYW0sIGZ1bmMpOgotKyAgICAgICAgaWYgbm90IGZ1bmM6Ci0rICAgICAgICAgICAg cmV0dXJuCi0rCi0rICAgICAgICBmaXJzdCA9IFRydWUKLSsgICAgICAgIGJsb2NrID0gZnVuYy52 YWx1ZQotKwotKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSsgICAgICAgICAgICBpZiBzeW0u aXNfYXJndW1lbnQ6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKwotKyAgICAgICAgICAg IHNlbGYud3JpdGVfc3ltYm9sIChzdHJlYW0sIHN5bSwgYmxvY2spCi0rICAgICAgICAgICAgc3Ry ZWFtLndyaXRlICgnXG4nKQotKwotKyAgICBkZWYgcHJpbnRfZnJhbWVfYXJncyAoc2VsZiwgc3Ry ZWFtLCBmdW5jKToKLSsgICAgICAgIGlmIG5vdCBmdW5jOgotKyAgICAgICAgICAgIHJldHVybgot KwotKyAgICAgICAgZmlyc3QgPSBUcnVlCi0rICAgICAgICBibG9jayA9IGZ1bmMudmFsdWUKLSsK LSsgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6Ci0rICAgICAgICAgICAgaWYgbm90IHN5bS5pc19h cmd1bWVudDoKLSsgICAgICAgICAgICAgICAgY29udGludWU7Ci0rCi0rICAgICAgICAgICAgaWYg bm90IGZpcnN0OgotKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIsICIpCi0rCi0rICAg ICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBibG9jaykKLSsgICAgICAg ICAgICBmaXJzdCA9IEZhbHNlCi0rCi0rICAgICMgRklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5 IGp1c3QgYmUgYSBtZXRob2Qgb24gZ2RiLkZyYW1lLgotKyAgICAjIEJ1dCB0aGVuIHdlIG5lZWQg c3RyZWFtIHdyYXBwZXJzLgotKyAgICBkZWYgZGVzY3JpYmUgKHNlbGYsIHN0cmVhbSwgZnVsbCk6 Ci0rICAgICAgICBpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLkRVTU1ZX0ZSQU1FOgotKyAgICAgICAg ICAgIHN0cmVhbS53cml0ZSAoIiA8ZnVuY3Rpb24gY2FsbGVkIGZyb20gZ2RiPlxuIikKLSsgICAg ICAgIGVsaWYgc2VsZi50eXBlICgpID09IGdkYi5TSUdUUkFNUF9GUkFNRToKLSsgICAgICAgICAg ICBzdHJlYW0ud3JpdGUgKCIgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD5cbiIpCi0rICAgICAgICBl bHNlOgotKyAgICAgICAgICAgIHNhbCA9IHNlbGYuZmluZF9zYWwgKCkKLSsgICAgICAgICAgICBw YyA9IHNlbGYucGMgKCkKLSsgICAgICAgICAgICBuYW1lID0gc2VsZi5uYW1lICgpCi0rICAgICAg ICAgICAgaWYgbm90IG5hbWU6Ci0rICAgICAgICAgICAgICAgIG5hbWUgPSAiPz8iCi0rICAgICAg ICAgICAgaWYgcGMgIT0gc2FsLnBjIG9yIG5vdCBzYWwuc3ltdGFiOgotKyAgICAgICAgICAgICAg ICBzdHJlYW0ud3JpdGUgKCIgMHglMDh4IGluIiAlIHBjKQotKyAgICAgICAgICAgIHN0cmVhbS53 cml0ZSAoIiAiICsgbmFtZSArICIgKCIpCisrICAgIGRlZiBwYWhvbGUgKHNlbGYsIHR5cGUsIGxl dmVsLCBuYW1lKToKKysgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKysgICAgICAgICAgICBuYW1l ID0gJycKKysgICAgICAgIHRhZyA9IHR5cGUudGFnCisrICAgICAgICBpZiB0YWcgaXMgTm9uZToK KysgICAgICAgICAgICB0YWcgPSAnJworKyAgICAgICAgcHJpbnQgJyVzc3RydWN0ICVzIHsnICUg KCcgJyAqICgyICogbGV2ZWwpLCB0YWcpCisrICAgICAgICBiaXRwb3MgPSAwCisrICAgICAgICBm b3IgZmllbGQgaW4gdHlwZS5maWVsZHMgKCk6CisrICAgICAgICAgICAgIyBTa2lwIHN0YXRpYyBm aWVsZHMuCisrICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIgKGZpZWxkLCAoJ2JpdHBvcycpKToK KysgICAgICAgICAgICAgICAgY29udGludWUKICsKLSsgICAgICAgICAgICBmdW5jID0gc2VsZi5m dW5jdGlvbiAoKQotKyAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVfYXJncyAoc3RyZWFtLCBm dW5jKQorKyAgICAgICAgICAgIGZ0eXBlID0gZmllbGQudHlwZS5zdHJpcF90eXBlZGVmcygpCiAr Ci0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgiKSIpCisrICAgICAgICAgICAgaWYgYml0cG9z ICE9IGZpZWxkLmJpdHBvczoKKysgICAgICAgICAgICAgICAgaG9sZSA9IGZpZWxkLmJpdHBvcyAt IGJpdHBvcworKyAgICAgICAgICAgICAgICBwcmludCAnICAvKiBYWFggJWQgYml0IGhvbGUsIHRy eSB0byBwYWNrICovJyAlIGhvbGUKKysgICAgICAgICAgICAgICAgYml0cG9zID0gZmllbGQuYml0 cG9zCisrICAgICAgICAgICAgaWYgZmllbGQuYml0c2l6ZSA+IDA6CisrICAgICAgICAgICAgICAg IGZpZWxkc2l6ZSA9IGZpZWxkLmJpdHNpemUKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAg ICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVCBoZXJlLi4uCisrICAgICAgICAgICAgICAgIGZpZWxk c2l6ZSA9IDggKiBmdHlwZS5zaXplb2YKICsKLSsgICAgICAgICAgICBpZiBzYWwuc3ltdGFiIGFu ZCBzYWwuc3ltdGFiLmZpbGVuYW1lOgotKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIg YXQgIiArIHNhbC5zeW10YWIuZmlsZW5hbWUpCi0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0 ZSAoIjoiICsgc3RyIChzYWwubGluZSkpCisrICAgICAgICAgICAgIyBUQVJHRVRfQ0hBUl9CSVQK KysgICAgICAgICAgICBwcmludCAnIC8qICUzZCAlM2QgKi8nICUgKGludCAoYml0cG9zIC8gOCks IGludCAoZmllbGRzaXplIC8gOCkpLAorKyAgICAgICAgICAgIGJpdHBvcyA9IGJpdHBvcyArIGZp ZWxkc2l6ZQogKwotKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLm5hbWUgKCkgb3IgKG5vdCBzYWwu c3ltdGFiIG9yIG5vdCBzYWwuc3ltdGFiLmZpbGVuYW1lKToKLSsgICAgICAgICAgICAgICAgbGli ID0gZ2RiLnNvbGliX2FkZHJlc3MgKHBjKQotKyAgICAgICAgICAgICAgICBpZiBsaWI6Ci0rICAg ICAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgZnJvbSAiICsgbGliKQorKyAgICAgICAg ICAgIGlmIGZ0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6CisrICAgICAgICAgICAg ICAgIHNlbGYucGFob2xlIChmdHlwZSwgbGV2ZWwgKyAxLCBmaWVsZC5uYW1lKQorKyAgICAgICAg ICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIHByaW50ICcgJyAqICgyICsgMiAqIGxldmVsKSwK KysgICAgICAgICAgICAgICAgcHJpbnQgJyVzICVzJyAlIChzdHIgKGZ0eXBlKSwgZmllbGQubmFt ZSkKICsKLSsgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCJcbiIpCisrICAgICAgICBwcmludCAn ICcgKiAoMTQgKyAyICogbGV2ZWwpLAorKyAgICAgICAgcHJpbnQgJ30gJXMnICUgbmFtZQogKwot KyAgICAgICAgICAgIGlmIGZ1bGw6Ci0rICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVf bG9jYWxzIChzdHJlYW0sIGZ1bmMpCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90 dHkpOgorKyAgICAgICAgdHlwZSA9IGdkYi5sb29rdXBfdHlwZSAoYXJnKQorKyAgICAgICAgdHlw ZSA9IHR5cGUuc3RyaXBfdHlwZWRlZnMgKCkKKysgICAgICAgIGlmIHR5cGUuY29kZSAhPSBnZGIu VFlQRV9DT0RFX1NUUlVDVDoKKysgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IsICclcyBpcyBu b3QgYSBzdHJ1Y3QgdHlwZScgJSBhcmcKKysgICAgICAgIHByaW50ICcgJyAqIDE0LAorKyAgICAg ICAgc2VsZi5wYWhvbGUgKHR5cGUsIDAsICcnKQogKwotKyAgICBkZWYgX19nZXRhdHRyX18gKHNl bGYsIG5hbWUpOgotKyAgICAgICAgcmV0dXJuIGdldGF0dHIgKHNlbGYuZnJhbWUsIG5hbWUpCi1k aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weSBiL2dkYi9weXRob24v bGliL2dkYi9iYWNrdHJhY2UucHkKKytQYWhvbGUoKQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9y ZXF1aXJlLnB5CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNmJiNGZiMQor aW5kZXggMDAwMDAwMC4uMWZiYzFlOAogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9s aWIvZ2RiL2JhY2t0cmFjZS5weQotQEAgLTAsMCArMSw0MiBAQAotKyMgRmlsdGVyaW5nIGJhY2t0 cmFjZS4KKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkKK0BAIC0w LDAgKzEsNTcgQEAKKysjIERlbWFuZC1sb2FkaW5nIGNvbW1hbmRzLgogKwotKyMgQ29weXJpZ2h0 IChDKSAyMDA4LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgQ29weXJp Z2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC03NTQwLDM5ICs0NDgxLDU0IEBAIGluZGV4 IDAwMDAwMDAuLjZiYjRmYjEKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwogK2ltcG9ydCBnZGIKLStpbXBv cnQgaXRlcnRvb2xzCisraW1wb3J0IG9zCiArCi0rIyBPdXIgb25seSBleHBvcnRzLgotK19fYWxs X18gPSBbJ3B1c2hfZnJhbWVfZmlsdGVyJywgJ2NyZWF0ZV9mcmFtZV9maWx0ZXInXQorK2NsYXNz IFJlcXVpcmVDb21tYW5kIChnZGIuQ29tbWFuZCk6CisrICAgICIiIlByZWZpeCBjb21tYW5kIGZv ciByZXF1aXJpbmcgZmVhdHVyZXMuIiIiCiArCi0rZnJhbWVfZmlsdGVyID0gTm9uZQorKyAgICBk ZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFJlcXVpcmVDb21tYW5kLCBzZWxm KS5fX2luaXRfXyAoInJlcXVpcmUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9OT05FLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKICsKLStkZWYgcHVz aF9mcmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKLSsgICAgIiIiUmVnaXN0ZXIgYSBuZXcgYmFj a3RyYWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNlJyBjb21tYW5kLgotK1RoZSBm aWx0ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4gYXJndW1lbnQuICBUaGUgaXRl cmF0b3IKLSt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmplY3RzLiAgVGhlIGZpbHRlciBz aG91bGQgaW4gdHVybiBhY3QgYXMKLSthbiBpdGVyYXRvciByZXR1cm5pbmcgc3VjaCBvYmplY3Rz LiIiIgotKyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1lX2ZpbHRlciA9PSBO b25lOgotKyAgICAgICAgZnJhbWVfZmlsdGVyID0gY29uc3RydWN0b3IKLSsgICAgZWxzZToKLSsg ICAgICAgIGZyYW1lX2ZpbHRlciA9IGxhbWJkYSBpdGVyYXRvciwgZmlsdGVyID0gZnJhbWVfZmls dGVyOiBjb25zdHJ1Y3RvciAoZmlsdGVyIChpdGVyYXRvcikpCisrY2xhc3MgUmVxdWlyZVN1YmNv bW1hbmQgKGdkYi5Db21tYW5kKToKKysgICAgIiIiRGVtYW5kLWxvYWQgYSBjb21tYW5kIGJ5IG5h bWUuIiIiCiArCi0rZGVmIGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpOgotKyAgICBnbG9iYWwg ZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1lX2ZpbHRlciBpcyBOb25lOgotKyAgICAgICAgcmV0 dXJuIGl0ZXIKLSsgICAgcmV0dXJuIGZyYW1lX2ZpbHRlciAoaXRlcikKKysgICAgZGVmIF9faW5p dF9fIChzZWxmLCBuYW1lKToKKysgICAgICAgIHNlbGYuX19kb2NfXyA9ICJEZW1hbmQtbG9hZCBh ICVzIGJ5IG5hbWUuIiAlIG5hbWUKKysgICAgICAgIHN1cGVyIChSZXF1aXJlU3ViY29tbWFuZCwg c2VsZikuX19pbml0X18gKCJyZXF1aXJlICVzIiAlIG5hbWUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVVBQT1JUKQorKyAg ICAgICAgc2VsZi5uYW1lID0gbmFtZQogKwotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL2JhY2t0cmFjZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2JhY2t0 cmFjZS5weQorKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKKysgICAgICAg IGZvciBjbWQgaW4gYXJnLnNwbGl0KCk6CisrICAgICAgICAgICAgZXhlYyAoJ2ltcG9ydCBnZGIu JyArIHNlbGYubmFtZSArICcuJyArIGNtZCwgZ2xvYmFscyAoKSkKKysKKysgICAgZGVmIGNvbXBs ZXRlIChzZWxmLCB0ZXh0LCB3b3JkKToKKysgICAgICAgIGRpciA9IGdkYi5weXRob25kaXIgKyAn L2dkYi8nICsgc2VsZi5uYW1lCisrICAgICAgICByZXN1bHQgPSBbXQorKyAgICAgICAgZm9yIGZp bGUgaW4gb3MubGlzdGRpcihkaXIpOgorKyAgICAgICAgICAgIGlmIG5vdCBmaWxlLnN0YXJ0c3dp dGggKHdvcmQpIG9yIG5vdCBmaWxlLmVuZHN3aXRoICgnLnB5Jyk6CisrICAgICAgICAgICAgICAg IGNvbnRpbnVlCisrICAgICAgICAgICAgZmVhdHVyZSA9IGZpbGVbMDotM10KKysgICAgICAgICAg ICBpZiBmZWF0dXJlID09ICdyZXF1aXJlJyBvciBmZWF0dXJlID09ICdfX2luaXRfXyc6CisrICAg ICAgICAgICAgICAgIGNvbnRpbnVlCisrICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCAoZmVhdHVy ZSkKKysgICAgICAgIHJldHVybiByZXN1bHQKKysKKytSZXF1aXJlQ29tbWFuZCgpCisrUmVxdWly ZVN1YmNvbW1hbmQoImNvbW1hbmQiKQorK1JlcXVpcmVTdWJjb21tYW5kKCJmdW5jdGlvbiIpCitk aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5weSBiL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi5lZWVhOTA5CitpbmRleCAwMDAwMDAwLi5mYWY1NGVkCiAtLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKLUBAIC0wLDAgKzEs MTA2IEBACi0rIyBOZXcgYmFja3RyYWNlIGNvbW1hbmQuCisrKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC91cHRvLnB5CitAQCAtMCwwICsxLDEyOSBAQAorKyMgdXB0byBjb21tYW5kLgog KwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC03NTg4LDE0NiAr NDU0NCwxMzMgQEAgaW5kZXggMDAwMDAwMC4uZWVlYTkwOQogKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCiAr aW1wb3J0IGdkYgotK2ltcG9ydCBnZGIuYmFja3RyYWNlCi0raW1wb3J0IGl0ZXJ0b29scworK2lt cG9ydCByZQogK2Zyb20gZ2RiLkZyYW1lSXRlcmF0b3IgaW1wb3J0IEZyYW1lSXRlcmF0b3IKICtm cm9tIGdkYi5GcmFtZVdyYXBwZXIgaW1wb3J0IEZyYW1lV3JhcHBlcgotK2ltcG9ydCBzeXMKICsK LStjbGFzcyBSZXZlcnNlQmFja3RyYWNlUGFyYW1ldGVyIChnZGIuUGFyYW1ldGVyKToKLSsgICAg IiIiVGhlIG5ldy1iYWNrdHJhY2UgY29tbWFuZCBjYW4gc2hvdyBiYWNrdHJhY2VzIGluICdyZXZl cnNlJyBvcmRlci4KLStUaGlzIG1lYW5zIHRoYXQgdGhlIGlubmVybW9zdCBmcmFtZSB3aWxsIGJl IHByaW50ZWQgbGFzdC4KLStOb3RlIHRoYXQgcmV2ZXJzZSBiYWNrdHJhY2VzIGFyZSBtb3JlIGV4 cGVuc2l2ZSB0byBjb21wdXRlLiIiIgorK2NsYXNzIFVwdG9QcmVmaXggKGdkYi5Db21tYW5kKToK KysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAgICAgIHN1cGVyIChVcHRvUHJlZml4LCBz ZWxmKS5fX2luaXRfXyAoInVwdG8iLCBnZGIuQ09NTUFORF9TVEFDSywKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gVHJ1ZSkKICsKLSsgICAgc2V0 X2RvYyA9ICJFbmFibGUgb3IgZGlzYWJsZSByZXZlcnNlIGJhY2t0cmFjZXMuIgotKyAgICBzaG93 X2RvYyA9ICJTaG93IHdoZXRoZXIgYmFja3RyYWNlcyB3aWxsIGJlIHByaW50ZWQgaW4gcmV2ZXJz ZSBvcmRlci4iCisrY2xhc3MgVXB0b0ltcGxlbWVudGF0aW9uIChnZGIuQ29tbWFuZCk6CisrICAg IGRlZiBfX2luaXRfXyAoc2VsZiwgc3ViY29tbWFuZCk6CisrICAgICAgICBzdXBlciAoVXB0b0lt cGxlbWVudGF0aW9uLCBzZWxmKS5fX2luaXRfXyAoInVwdG8gIiArIHN1YmNvbW1hbmQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1B TkRfU1RBQ0spCiArCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIGdkYi5QYXJh bWV0ZXIuX19pbml0X18gKHNlbGYsICJyZXZlcnNlLWJhY2t0cmFjZSIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSywgZ2RiLlBBUkFNX0JPT0xFQU4p Ci0rICAgICAgICAjIERlZmF1bHQgdG8gY29tcGF0aWJpbGl0eSB3aXRoIGdkYi4KLSsgICAgICAg IHNlbGYudmFsdWUgPSBGYWxzZQorKyAgICBkZWYgc2VhcmNoIChzZWxmKToKKysgICAgICAgIHNh dmVkID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCisrICAgICAgICBpdGVyID0gRnJhbWVJdGVyYXRv ciAoc2F2ZWQpCisrICAgICAgICBmb3VuZCA9IEZhbHNlCisrICAgICAgICB0cnk6CisrICAgICAg ICAgICAgZm9yIGZyYW1lIGluIGl0ZXI6CisrICAgICAgICAgICAgICAgIGZyYW1lLnNlbGVjdCAo KQorKyAgICAgICAgICAgICAgICB0cnk6CisrICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZp bHRlciAoZnJhbWUpOgorKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBGcmFtZVdy YXBwZXIgKGZyYW1lKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuZGVzY3JpYmUg KHN5cy5zdGRvdXQsIEZhbHNlKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorKyAg ICAgICAgICAgICAgICBleGNlcHQ6CisrICAgICAgICAgICAgICAgICAgICBwYXNzCisrICAgICAg ICBleGNlcHQ6CisrICAgICAgICAgICAgcGFzcworKyAgICAgICAgc2F2ZWQuc2VsZWN0ICgpCisr ICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICdDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIGZy YW1lJwogKwotK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFjZSAoZ2RiLkNvbW1hbmQpOgotKyAgICAi IiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5uZXJtb3N0IENPVU5U IGZyYW1lcy4KLStXaXRoIGEgbmVnYXRpdmUgYXJndW1lbnQsIHByaW50IG91dGVybW9zdCAtQ09V TlQgZnJhbWVzLgotK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1YWxpZmllciBhbHNvIHByaW50cyB0aGUg dmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCi0rVXNlIG9mIHRoZSAncmF3JyBxdWFsaWZp ZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFibGUgbW9kdWxlcy4KLSsiIiIKKysgICAg ZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6CisrICAgICAgICBzZWxmLnJ4ID0gcmUu Y29tcGlsZSAoYXJnKQorKyAgICAgICAgc2VsZi5zZWFyY2ggKCkKICsKLSsgICAgZGVmIF9faW5p dF9fIChzZWxmKToKLSsgICAgICAgICMgRklYTUU6IHRoaXMgaXMgbm90IHdvcmtpbmcgcXVpdGUg d2VsbCBlbm91Z2ggdG8gcmVwbGFjZQotKyAgICAgICAgIyAiYmFja3RyYWNlIiB5ZXQuCi0rICAg ICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyAoc2VsZiwgIm5ldy1iYWNrdHJhY2UiLCBnZGIuQ09N TUFORF9TVEFDSykKLSsgICAgICAgIHNlbGYucmV2ZXJzZSA9IFJldmVyc2VCYWNrdHJhY2VQYXJh bWV0ZXIoKQorK2NsYXNzIFVwdG9TeW1ib2xDb21tYW5kIChVcHRvSW1wbGVtZW50YXRpb24pOgor KyAgICAiIiJTZWxlY3QgYW5kIHByaW50IHNvbWUgY2FsbGluZyBzdGFjayBmcmFtZSwgYmFzZWQg b24gc3ltYm9sLgorK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIFRoaXMg Y29tbWFuZCBtb3ZlcyB1cCB0aGUKKytzdGFjaywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZyYW1l IHdob3NlIHN5bWJvbCBtYXRjaGVzIHRoZSByZWd1bGFyCisrZXhwcmVzc2lvbi4iIiIKICsKLSsg ICAgZGVmIHJldmVyc2VfaXRlciAoc2VsZiwgaXRlcik6Ci0rICAgICAgICByZXN1bHQgPSBbXQot KyAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcjoKLSsgICAgICAgICAgICByZXN1bHQuYXBwZW5kIChp dGVtKQotKyAgICAgICAgcmVzdWx0LnJldmVyc2UoKQotKyAgICAgICAgcmV0dXJuIHJlc3VsdAor KyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFVwdG9TeW1ib2xDb21t YW5kLCBzZWxmKS5fX2luaXRfXyAoInN5bWJvbCIpCiArCi0rICAgIGRlZiBmaW5hbF9uIChzZWxm LCBpdGVyLCB4KToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAgICBmb3IgaXRlbSBpbiBp dGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0rICAgICAgICByZXR1cm4g cmVzdWx0W3g6XQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsg ICAgICAgIGkgPSAwCi0rICAgICAgICBjb3VudCA9IDAKLSsgICAgICAgIGZpbHRlciA9IFRydWUK LSsgICAgICAgIGZ1bGwgPSBGYWxzZQotKwotKyAgICAgICAgZm9yIHdvcmQgaW4gYXJnLnNwbGl0 ICgiICIpOgotKyAgICAgICAgICAgIGlmIHdvcmQgPT0gJyc6Ci0rICAgICAgICAgICAgICAgIGNv bnRpbnVlCi0rICAgICAgICAgICAgZWxpZiB3b3JkID09ICdyYXcnOgotKyAgICAgICAgICAgICAg ICBmaWx0ZXIgPSBGYWxzZQotKyAgICAgICAgICAgIGVsaWYgd29yZCA9PSAnZnVsbCc6Ci0rICAg ICAgICAgICAgICAgIGZ1bGwgPSBUcnVlCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAg ICAgICAgY291bnQgPSBpbnQgKHdvcmQpCi0rCi0rICAgICAgICAjIEZJWE1FOiBwcm92aWRlIG9w dGlvbiB0byBzdGFydCBhdCBzZWxlY3RlZCBmcmFtZQotKyAgICAgICAgIyBIb3dldmVyLCBzaG91 bGQgc3RpbGwgbnVtYmVyIGFzIGlmIHN0YXJ0aW5nIGZyb20gbmV3ZXN0Ci0rICAgICAgICBuZXdl c3RfZnJhbWUgPSBnZGIubmV3ZXN0X2ZyYW1lKCkKLSsgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMu aW1hcCAoRnJhbWVXcmFwcGVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFt ZUl0ZXJhdG9yIChuZXdlc3RfZnJhbWUpKQotKyAgICAgICAgaWYgZmlsdGVyOgotKyAgICAgICAg ICAgIGl0ZXIgPSBnZGIuYmFja3RyYWNlLmNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpCi0rCi0r ICAgICAgICAjIE5vdyB3cmFwIGluIGFuIGl0ZXJhdG9yIHRoYXQgbnVtYmVycyB0aGUgZnJhbWVz LgotKyAgICAgICAgaXRlciA9IGl0ZXJ0b29scy5pemlwIChpdGVydG9vbHMuY291bnQgKDApLCBp dGVyKQotKwotKyAgICAgICAgIyBSZXZlcnNlIGlmIHRoZSB1c2VyIHdhbnRlZCB0aGF0LgotKyAg ICAgICAgaWYgc2VsZi5yZXZlcnNlLnZhbHVlOgotKyAgICAgICAgICAgIGl0ZXIgPSBzZWxmLnJl dmVyc2VfaXRlciAoaXRlcikKKysgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgorKyAgICAg ICAgbmFtZSA9IGZyYW1lLm5hbWUgKCkKKysgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Cisr ICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgorKyAgICAg ICAgICAgICAgICByZXR1cm4gVHJ1ZQorKyAgICAgICAgcmV0dXJuIEZhbHNlCiArCi0rICAgICAg ICAjIEV4dHJhY3Qgc3ViLXJhbmdlIHVzZXIgd2FudHMuCi0rICAgICAgICBpZiBjb3VudCA8IDA6 Ci0rICAgICAgICAgICAgaXRlciA9IHNlbGYuZmluYWxfbiAoaXRlciwgY291bnQpCi0rICAgICAg ICBlbGlmIGNvdW50ID4gMDoKLSsgICAgICAgICAgICBpdGVyID0gaXRlcnRvb2xzLmlzbGljZSAo aXRlciwgMCwgY291bnQpCisrY2xhc3MgVXB0b1NvdXJjZUNvbW1hbmQgKFVwdG9JbXBsZW1lbnRh dGlvbik6CisrICAgICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1l LCBiYXNlZCBvbiBzb3VyY2UgZmlsZS4KKytUaGUgYXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJl c3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlCisrc3RhY2ssIHN0b3BwaW5nIGF0IHRo ZSBmaXJzdCBmcmFtZSB3aG9zZSBzb3VyY2UgZmlsZSBuYW1lIG1hdGNoZXMgdGhlCisrcmVndWxh ciBleHByZXNzaW9uLiIiIgogKwotKyAgICAgICAgZm9yIHBhaXIgaW4gaXRlcjoKLSsgICAgICAg ICAgICBzeXMuc3Rkb3V0LndyaXRlICgiIyUtMmQiICUgcGFpclswXSkKLSsgICAgICAgICAgICBw YWlyWzFdLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBmdWxsKQorKyAgICBkZWYgX19pbml0X18gKHNl bGYpOgorKyAgICAgICAgc3VwZXIgKFVwdG9Tb3VyY2VDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAo InNvdXJjZSIpCiArCi0rRmlsdGVyaW5nQmFja3RyYWNlKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2Ri L2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjZmYTQ4ZmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIElnbm9yZSBlcnJv cnMgaW4gdXNlciBjb21tYW5kcy4KKysgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgorKyAg ICAgICAgbmFtZSA9IGZyYW1lLmZpbmRfc2FsICgpLnN5bXRhYi5maWxlbmFtZQorKyAgICAgICAg aWYgbmFtZSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBpZiBzZWxmLnJ4LnNlYXJjaCAobmFt ZSkgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICBy ZXR1cm4gRmFsc2UKICsKLSsjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKytjbGFzcyBVcHRvT2JqZWN0Q29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9u KToKKysgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJh c2VkIG9uIG9iamVjdCBmaWxlLgorK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lv bi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKKytzdGFjaywgc3RvcHBpbmcgYXQgdGhlIGZp cnN0IGZyYW1lIHdob3NlIG9iamVjdCBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUKKytyZWd1bGFyIGV4 cHJlc3Npb24uIiIiCiArCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyAgICBkZWYg X19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFVwdG9PYmplY3RDb21tYW5kLCBzZWxm KS5fX2luaXRfXyAoIm9iamVjdCIpCiArCi0raW1wb3J0IGdkYgorKyAgICBkZWYgZmlsdGVyIChz ZWxmLCBmcmFtZSk6CisrICAgICAgICBuYW1lID0gZnJhbWUuZmluZF9zYWwgKCkuc3ltdGFiLm9i amZpbGUuZmlsZW5hbWUKKysgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6CisrICAgICAgICAg ICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgICAg ICByZXR1cm4gVHJ1ZQorKyAgICAgICAgcmV0dXJuIEZhbHNlCiArCi0rY2xhc3MgSWdub3JlRXJy b3JzQ29tbWFuZCAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJFeGVjdXRlIGEgc2luZ2xlIGNvbW1h bmQsIGlnbm9yaW5nIGFsbCBlcnJvcnMuCi0rT25seSBvbmUtbGluZSBjb21tYW5kcyBhcmUgc3Vw cG9ydGVkLgotK1RoaXMgaXMgcHJpbWFyaWx5IHVzZWZ1bCBpbiBzY3JpcHRzLiIiIgorK2NsYXNz IFVwdG9XaGVyZUNvbW1hbmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6CisrICAgICIiIlNlbGVjdCBh bmQgcHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBleHByZXNzaW9uLgor K1RoZSBhcmd1bWVudCBpcyBhbiBleHByZXNzaW9uLiAgVGhpcyBjb21tYW5kIG1vdmVzIHVwIHRo ZSBzdGFjaywKKytwYXJzaW5nIGFuZCBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9uIGluIGVhY2gg ZnJhbWUuICBUaGlzIHN0b3BzIHdoZW4KKyt0aGUgZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gYSBu b24temVybyAodHJ1ZSkgdmFsdWUuIiIiCiArCiArICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0r ICAgICAgICBzdXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJpZ25v cmUtZXJyb3JzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkK KysgICAgICAgIHN1cGVyIChVcHRvV2hlcmVDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoIndoZXJl IikKICsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6CisrICAgIGRlZiBm aWx0ZXIgKHNlbGYsIGZyYW1lKToKICsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBnZGIuZXhl Y3V0ZSAoYXJnLCBmcm9tX3R0eSkKKysgICAgICAgICAgICBpZiBnZGIucGFyc2VfYW5kX2V2YWwg KHNlbGYuZXhwcmVzc2lvbik6CisrICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiArICAgICAg ICBleGNlcHQ6CiArICAgICAgICAgICAgcGFzcworKyAgICAgICAgcmV0dXJuIEZhbHNlCiArCi0r SWdub3JlRXJyb3JzQ29tbWFuZCAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL3BhaG9sZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQor KyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKKysgICAgICAgIHNlbGYuZXhw cmVzc2lvbiA9IGFyZworKyAgICAgICAgc2VsZi5zZWFyY2ggKCkKKysKKytVcHRvUHJlZml4ICgp CisrVXB0b1N5bWJvbENvbW1hbmQgKCkKKytVcHRvU291cmNlQ29tbWFuZCAoKQorK1VwdG9PYmpl Y3RDb21tYW5kICgpCisrVXB0b1doZXJlQ29tbWFuZCAoKQorZGlmZiAtLWdpdCBhL2dkYi9weXRo b24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5j dGlvbi9fX2luaXRfXy5weQogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIx YTBiZjAKK2luZGV4IDAwMDAwMDAuLjhiMTM3ODkKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9w eXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQotQEAgLTAsMCArMSw3NSBAQAotKyMgcGFo b2xlIGNvbW1hbmQgZm9yIGdkYgorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19f aW5pdF9fLnB5CitAQCAtMCwwICsxIEBACiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9s aWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlv bi9jYWxsZXJfaXMucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yYjlj NWM3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2Fs bGVyX2lzLnB5CitAQCAtMCwwICsxLDU4IEBACisrIyBDYWxsZXItaXMgZnVuY3Rpb25zLgorKwor KyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwog KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC03NzQzLDcyICs0Njg2LDU1IEBAIGlu ZGV4IDAwMDAwMDAuLjIxYTBiZjAKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwogK2ltcG9ydCBnZGIKKytp bXBvcnQgcmUKICsKLStjbGFzcyBQYWhvbGUgKGdkYi5Db21tYW5kKToKLSsgICAgIiIiU2hvdyB0 aGUgaG9sZXMgaW4gYSBzdHJ1Y3R1cmUuCi0rVGhpcyBjb21tYW5kIHRha2VzIGEgc2luZ2xlIGFy Z3VtZW50LCBhIHR5cGUgbmFtZS4KLStJdCBwcmludHMgdGhlIHR5cGUgYW5kIGRpc3BsYXlzIGNv bW1lbnRzIHNob3dpbmcgd2hlcmUgaG9sZXMgYXJlLiIiIgorK2NsYXNzIENhbGxlcklzIChnZGIu RnVuY3Rpb24pOgorKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidz IG5hbWUgaXMgZXF1YWwgdG8gYSBzdHJpbmcuCisrVGhpcyBmdW5jdGlvbiB0YWtlcyBvbmUgb3Ig dHdvIGFyZ3VtZW50cy4KKytUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIG5hbWUgb2YgYSBmdW5j dGlvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncworK25hbWUgaXMgZXF1YWwgdG8gdGhpcyBh cmd1bWVudCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFRydWUuCisrVGhlIG9wdGlvbmFsIHNlY29u ZCBhcmd1bWVudCB0ZWxscyB0aGlzIGZ1bmN0aW9uIGhvdyBtYW55IHN0YWNrIGZyYW1lcworK3Rv IHRyYXZlcnNlIHRvIGZpbmQgdGhlIGNhbGxpbmcgZnVuY3Rpb24uICBUaGUgZGVmYXVsdCBpcyAx LiIiIgogKwogKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFBhaG9s ZSwgc2VsZikuX19pbml0X18gKCJwYWhvbGUiLCBnZGIuQ09NTUFORF9OT05FLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9TWU1CT0wpCi0rCi0r ICAgIGRlZiBwYWhvbGUgKHNlbGYsIHR5cGUsIGxldmVsLCBuYW1lKToKLSsgICAgICAgIGlmIG5h bWUgaXMgTm9uZToKLSsgICAgICAgICAgICBuYW1lID0gJycKLSsgICAgICAgIHRhZyA9IHR5cGUu dGFnCi0rICAgICAgICBpZiB0YWcgaXMgTm9uZToKLSsgICAgICAgICAgICB0YWcgPSAnJwotKyAg ICAgICAgcHJpbnQgJyVzc3RydWN0ICVzIHsnICUgKCcgJyAqICgyICogbGV2ZWwpLCB0YWcpCi0r ICAgICAgICBiaXRwb3MgPSAwCi0rICAgICAgICBmb3IgZmllbGQgaW4gdHlwZS5maWVsZHMgKCk6 Ci0rICAgICAgICAgICAgIyBTa2lwIHN0YXRpYyBmaWVsZHMuCi0rICAgICAgICAgICAgaWYgbm90 IGhhc2F0dHIgKGZpZWxkLCAoJ2JpdHBvcycpKToKLSsgICAgICAgICAgICAgICAgY29udGludWUK LSsKLSsgICAgICAgICAgICBmdHlwZSA9IGZpZWxkLnR5cGUuc3RyaXBfdHlwZWRlZnMoKQotKwot KyAgICAgICAgICAgIGlmIGJpdHBvcyAhPSBmaWVsZC5iaXRwb3M6Ci0rICAgICAgICAgICAgICAg IGhvbGUgPSBmaWVsZC5iaXRwb3MgLSBiaXRwb3MKLSsgICAgICAgICAgICAgICAgcHJpbnQgJyAg LyogWFhYICVkIGJpdCBob2xlLCB0cnkgdG8gcGFjayAqLycgJSBob2xlCi0rICAgICAgICAgICAg ICAgIGJpdHBvcyA9IGZpZWxkLmJpdHBvcwotKyAgICAgICAgICAgIGlmIGZpZWxkLmJpdHNpemUg PiAwOgotKyAgICAgICAgICAgICAgICBmaWVsZHNpemUgPSBmaWVsZC5iaXRzaXplCi0rICAgICAg ICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAgIyBUQVJHRVRfQ0hBUl9CSVQgaGVyZS4uLgot KyAgICAgICAgICAgICAgICBmaWVsZHNpemUgPSA4ICogZnR5cGUuc2l6ZW9mCisrICAgICAgICBz dXBlciAoQ2FsbGVySXMsIHNlbGYpLl9faW5pdF9fICgiY2FsbGVyX2lzIikKICsKLSsgICAgICAg ICAgICAjIFRBUkdFVF9DSEFSX0JJVAotKyAgICAgICAgICAgIHByaW50ICcgLyogJTNkICUzZCAq LycgJSAoaW50IChiaXRwb3MgLyA4KSwgaW50IChmaWVsZHNpemUgLyA4KSksCi0rICAgICAgICAg ICAgYml0cG9zID0gYml0cG9zICsgZmllbGRzaXplCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIG5h bWUsIG5mcmFtZXMgPSAxKToKKysgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgp CisrICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKKysgICAgICAgICAgICBmcmFtZSA9IGZyYW1l Lm9sZGVyICgpCisrICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAxCisrICAgICAgICBy ZXR1cm4gZnJhbWUubmFtZSAoKSA9PSBuYW1lLnN0cmluZyAoKQogKwotKyAgICAgICAgICAgIGlm IGZ0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6Ci0rICAgICAgICAgICAgICAgIHNl bGYucGFob2xlIChmdHlwZSwgbGV2ZWwgKyAxLCBmaWVsZC5uYW1lKQotKyAgICAgICAgICAgIGVs c2U6Ci0rICAgICAgICAgICAgICAgIHByaW50ICcgJyAqICgyICsgMiAqIGxldmVsKSwKLSsgICAg ICAgICAgICAgICAgcHJpbnQgJyVzICVzJyAlIChzdHIgKGZ0eXBlKSwgZmllbGQubmFtZSkKKytj bGFzcyBDYWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24pOgorKyAgICAiIiJSZXR1cm4gVHJ1ZSBp ZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmluZy4KKytUaGlzIGZ1 bmN0aW9uIHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRzLgorK1RoZSBmaXJzdCBhcmd1bWVudCBp cyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncworK25hbWUg aXMgbWF0Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZS4K KytUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVuY3Rpb24gaG93IG1h bnkgc3RhY2sgZnJhbWVzCisrdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlv bi4gIFRoZSBkZWZhdWx0IGlzIDEuIiIiCiArCi0rICAgICAgICBwcmludCAnICcgKiAoMTQgKyAy ICogbGV2ZWwpLAotKyAgICAgICAgcHJpbnQgJ30gJXMnICUgbmFtZQorKyAgICBkZWYgX19pbml0 X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKENhbGxlck1hdGNoZXMsIHNlbGYpLl9faW5pdF9f ICgiY2FsbGVyX21hdGNoZXMiKQogKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21f dHR5KToKLSsgICAgICAgIHR5cGUgPSBnZGIubG9va3VwX3R5cGUgKGFyZykKLSsgICAgICAgIHR5 cGUgPSB0eXBlLnN0cmlwX3R5cGVkZWZzICgpCi0rICAgICAgICBpZiB0eXBlLmNvZGUgIT0gZ2Ri LlRZUEVfQ09ERV9TVFJVQ1Q6Ci0rICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yLCAnJXMgaXMg bm90IGEgc3RydWN0IHR5cGUnICUgYXJnCi0rICAgICAgICBwcmludCAnICcgKiAxNCwKLSsgICAg ICAgIHNlbGYucGFob2xlICh0eXBlLCAwLCAnJykKKysgICAgZGVmIGludm9rZSAoc2VsZiwgbmFt ZSwgbmZyYW1lcyA9IDEpOgorKyAgICAgICAgZnJhbWUgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkK KysgICAgICAgIHdoaWxlIG5mcmFtZXMgPiAwOgorKyAgICAgICAgICAgIGZyYW1lID0gZnJhbWUu b2xkZXIgKCkKKysgICAgICAgICAgICBuZnJhbWVzID0gbmZyYW1lcyAtIDEKKysgICAgICAgIHJl dHVybiByZS5tYXRjaCAobmFtZS5zdHJpbmcgKCksIGZyYW1lLm5hbWUgKCkpIGlzIG5vdCBOb25l CiArCi0rUGFob2xlKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9y ZXF1aXJlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5weQorK0NhbGxl cklzKCkKKytDYWxsZXJNYXRjaGVzKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv ZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2Nv cGUucHkKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZmJjMWU4CitpbmRl eCAwMDAwMDAwLi5kZWJiM2JiCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9yZXF1aXJlLnB5Ci1AQCAtMCwwICsxLDU3IEBACi0rIyBEZW1hbmQtbG9hZGlu ZyBjb21tYW5kcy4KKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9pbl9zY29wZS5w eQorQEAgLTAsMCArMSw0NyBAQAorKyMgSW4tc2NvcGUgZnVuY3Rpb24uCiArCi0rIyBDb3B5cmln aHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5 cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTc4MjQsNDU0OSArNDc1MCw4NzIgQEAgaW5kZXgg MDAwMDAwMC4uMWZiYzFlOAogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCiAraW1wb3J0IGdkYgotK2ltcG9y dCBvcwogKwotK2NsYXNzIFJlcXVpcmVDb21tYW5kIChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIlBy ZWZpeCBjb21tYW5kIGZvciByZXF1aXJpbmcgZmVhdHVyZXMuIiIiCisrY2xhc3MgSW5TY29wZSAo Z2RiLkZ1bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZlbiB2YXJp YWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KKytUYWtlcyBvbmUgYXJndW1lbnQgZm9yIGVh Y2ggdmFyaWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgogKwogKyAgICBkZWYgX19pbml0X18g KHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFJlcXVpcmVDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAo InJlcXVpcmUiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9OT05FLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKKysJc3VwZXIgKEluU2NvcGUsIHNlbGYp Ll9faW5pdF9fICgiaW5fc2NvcGUiKQogKwotK2NsYXNzIFJlcXVpcmVTdWJjb21tYW5kIChnZGIu Q29tbWFuZCk6Ci0rICAgICIiIkRlbWFuZC1sb2FkIGEgY29tbWFuZCBieSBuYW1lLiIiIgorKyAg ICBkZWYgaW52b2tlIChzZWxmLCAqdmFycyk6CisrICAgICAgICBpZiBsZW4gKHZhcnMpID09IDA6 CisrCSAgICByYWlzZSBUeXBlRXJyb3IsICJpbl9zY29wZSB0YWtlcyBhdCBsZWFzdCBvbmUgYXJn dW1lbnQiCiArCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgbmFtZSk6Ci0rICAgICAgICBzZWxm Ll9fZG9jX18gPSAiRGVtYW5kLWxvYWQgYSAlcyBieSBuYW1lLiIgJSBuYW1lCi0rICAgICAgICBz dXBlciAoUmVxdWlyZVN1YmNvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgicmVxdWlyZSAlcyIgJSBu YW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2RiLkNPTU1BTkRfU1VQUE9SVCkKLSsgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSsKLSsgICAg ZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBmb3IgY21kIGluIGFy Zy5zcGxpdCgpOgotKyAgICAgICAgICAgIGV4ZWMgKCdpbXBvcnQgZ2RiLicgKyBzZWxmLm5hbWUg KyAnLicgKyBjbWQsIGdsb2JhbHMgKCkpCi0rCi0rICAgIGRlZiBjb21wbGV0ZSAoc2VsZiwgdGV4 dCwgd29yZCk6Ci0rICAgICAgICBkaXIgPSBnZGIucHl0aG9uZGlyICsgJy9nZGIvJyArIHNlbGYu bmFtZQotKyAgICAgICAgcmVzdWx0ID0gW10KLSsgICAgICAgIGZvciBmaWxlIGluIG9zLmxpc3Rk aXIoZGlyKToKLSsgICAgICAgICAgICBpZiBub3QgZmlsZS5zdGFydHN3aXRoICh3b3JkKSBvciBu b3QgZmlsZS5lbmRzd2l0aCAoJy5weScpOgotKyAgICAgICAgICAgICAgICBjb250aW51ZQotKyAg ICAgICAgICAgIGZlYXR1cmUgPSBmaWxlWzA6LTNdCi0rICAgICAgICAgICAgaWYgZmVhdHVyZSA9 PSAncmVxdWlyZScgb3IgZmVhdHVyZSA9PSAnX19pbml0X18nOgotKyAgICAgICAgICAgICAgICBj b250aW51ZQotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGZlYXR1cmUpCi0rICAgICAgICBy ZXR1cm4gcmVzdWx0Ci0rCi0rUmVxdWlyZUNvbW1hbmQoKQotK1JlcXVpcmVTdWJjb21tYW5kKCJj b21tYW5kIikKLStSZXF1aXJlU3ViY29tbWFuZCgiZnVuY3Rpb24iKQotZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29t bWFuZC91cHRvLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZmFmNTRl ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5w eQotQEAgLTAsMCArMSwxMjkgQEAKLSsjIHVwdG8gY29tbWFuZC4KLSsKLSsjIENvcHlyaWdodCAo QykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotK2ltcG9ydCByZQotK2Zyb20gZ2RiLkZy YW1lSXRlcmF0b3IgaW1wb3J0IEZyYW1lSXRlcmF0b3IKLStmcm9tIGdkYi5GcmFtZVdyYXBwZXIg aW1wb3J0IEZyYW1lV3JhcHBlcgotKwotK2NsYXNzIFVwdG9QcmVmaXggKGdkYi5Db21tYW5kKToK LSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChVcHRvUHJlZml4LCBz ZWxmKS5fX2luaXRfXyAoInVwdG8iLCBnZGIuQ09NTUFORF9TVEFDSywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gVHJ1ZSkKKysgICAgICAgICMg Z2RiLlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1dCBpbiBhIG1hcC4KKysJ IyBDb252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KKysJd2FudGVkID0gc2V0IChtYXAgKGxhbWJkYSB4 OiB4LnN0cmluZyAoKSwgdmFycykpCisrCWZvdW5kID0gc2V0ICgpCisrCWJsb2NrID0gZ2RiLnNl bGVjdGVkX2ZyYW1lICgpLmJsb2NrICgpCisrCXdoaWxlIGJsb2NrOgorKwkgICAgZm9yIHN5bSBp biBibG9jazoKKysJCWlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50CisrCQkg ICAgICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxlKToKKysJCSAgICBpZiBz eW0ubmFtZSBpbiB3YW50ZWQ6CisrCQkJZm91bmQuYWRkIChzeW0ubmFtZSkKICsKLStjbGFzcyBV cHRvSW1wbGVtZW50YXRpb24gKGdkYi5Db21tYW5kKToKLSsgICAgZGVmIF9faW5pdF9fIChzZWxm LCBzdWJjb21tYW5kKToKLSsgICAgICAgIHN1cGVyIChVcHRvSW1wbGVtZW50YXRpb24sIHNlbGYp Ll9faW5pdF9fICgidXB0byAiICsgc3ViY29tbWFuZCwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSykKKysJICAgIGJs b2NrID0gYmxvY2suc3VwZXJibG9jawogKwotKyAgICBkZWYgc2VhcmNoIChzZWxmKToKLSsgICAg ICAgIHNhdmVkID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAgICBpdGVyID0gRnJhbWVJ dGVyYXRvciAoc2F2ZWQpCi0rICAgICAgICBmb3VuZCA9IEZhbHNlCi0rICAgICAgICB0cnk6Ci0r ICAgICAgICAgICAgZm9yIGZyYW1lIGluIGl0ZXI6Ci0rICAgICAgICAgICAgICAgIGZyYW1lLnNl bGVjdCAoKQotKyAgICAgICAgICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgICAgICAgICBpZiBz ZWxmLmZpbHRlciAoZnJhbWUpOgotKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBG cmFtZVdyYXBwZXIgKGZyYW1lKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuZGVz Y3JpYmUgKHN5cy5zdGRvdXQsIEZhbHNlKQotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy bgotKyAgICAgICAgICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgICAgICAgICBwYXNzCi0r ICAgICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcGFzcwotKyAgICAgICAgc2F2ZWQuc2VsZWN0 ICgpCi0rICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICdDb3VsZCBub3QgZmluZCBhIG1hdGNo aW5nIGZyYW1lJworKwlyZXR1cm4gd2FudGVkID09IGZvdW5kCiArCi0rICAgIGRlZiBpbnZva2Ug KHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5yeCA9IHJlLmNvbXBpbGUgKGFy ZykKLSsgICAgICAgIHNlbGYuc2VhcmNoICgpCisrSW5TY29wZSAoKQorZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vcHktdHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKK2luZGV4IDk4MDMwYTYu Ljk4NzBlZWMgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYworKysrIGIvZ2RiL3B5 dGhvbi9weS10eXBlLmMKK0BAIC0zMCw2ICszMCw4IEBACisgI2luY2x1ZGUgInZlYy5oIgorICNp bmNsdWRlICJiY2FjaGUuaCIKKyAjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisrI2luY2x1ZGUgIm9i c2VydmVyLmgiCisrI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAKKyB0eXBlZGVmIHN0cnVjdCBw eXR5X3R5cGVfb2JqZWN0CisgeworQEAgLTM4LDExICs0MCwxOSBAQCB0eXBlZGVmIHN0cnVjdCBw eXR5X3R5cGVfb2JqZWN0CisgCisgICAvKiBJZiBhIFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQg d2l0aCBhbiBvYmpmaWxlLCBpdCBpcyBrZXB0IG9uIGEKKyAgICAgIGRvdWJseS1saW5rZWQgbGlz dCwgcm9vdGVkIGluIHRoZSBvYmpmaWxlLiAgVGhpcyBsZXRzIHVzIGNvcHkgdGhlCistICAgICB1 bmRlcmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4gICovCisr ICAgICB1bmRlcmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4K ICsKLStjbGFzcyBVcHRvU3ltYm9sQ29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKLSsgICAg IiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIHN5 bWJvbC4KLStUaGUgYXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIGNvbW1h bmQgbW92ZXMgdXAgdGhlCi0rc3RhY2ssIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmcmFtZSB3aG9z ZSBzeW1ib2wgbWF0Y2hlcyB0aGUgcmVndWxhcgotK2V4cHJlc3Npb24uIiIiCisrICAgICBXaXRo IE5VTEwgb2JqZmlsZSBUeXBlIHN0aWxsIGNhbiBiZSBkb3VibHktbGlua2VkIGluIHRoZSBsaXN0 CisrICAgICBQWVRZX09CSkVDVFNfRElTQ0FSREFCTEUuICAqLworICAgc3RydWN0IHB5dHlfdHlw ZV9vYmplY3QgKnByZXY7CisgICBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdCAqbmV4dDsKKyB9IHR5 cGVfb2JqZWN0OworIAorKyNpZiAwCisrLyogRmlyc3QgZWxlbWVudCBvZiBhIGRvdWJseS1saW5r ZWQgbGlzdCBvZiBUWVBFX0RJU0NBUkRBQkxFIFR5cGVzLiAgKi8KKytzdGF0aWMgdHlwZV9vYmpl Y3QgKnB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKKysjZW5kaWYKICsKLSsgICAgZGVmIF9faW5p dF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChVcHRvU3ltYm9sQ29tbWFuZCwgc2VsZikuX19p bml0X18gKCJzeW1ib2wiKQorIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9vYmplY3RfdHlwZTsK KyAKKyAvKiBBIEZpZWxkIG9iamVjdC4gICovCitAQCAtMTE2Niw4ICsxMTc2LDYzIEBAIHR5cHlf cmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKKyAK KyAMCisgCisrLyogS2V5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamZpbGUgcG9pbnRpbmcgdG8g dGhlIGZpcnN0IGVsZW1lbnQgb2YKKysgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBUeXBlcyBh c3NvY2lhdGVkIHdpdGggdGhpcyBvYmpmaWxlLiAgKi8KKyBzdGF0aWMgY29uc3Qgc3RydWN0IG9i amZpbGVfZGF0YSAqdHlweV9vYmpmaWxlX2RhdGFfa2V5OworIAorKy8qIExpbmsgVFlQRV9PQkog dG8gaXRzIGFwcHJvcHJpYXRlIGxpc3QuICBFaXRoZXIgdG8gaXRzIG9iamZpbGUgYXNzb2NpYXRl ZCBvbmUKKysgICBvciBhdCBsZWFzdCB0byB0aGUgZ2xvYmFsIGxpc3QgZm9yIFRZUEVfRElTQ0FS REFCTEUgVHlwZXMuICBQZXJtYW5lbnQgdHlwZXMKKysgICBkbyBub3QgZ2V0IGxpbmtlZCBhbnl3 aGVyZS4gICovCisrc3RhdGljIHZvaWQKKyt0eXB5X2xpbmsgKHR5cGVfb2JqZWN0ICp0eXBlX29i aikKKyt7CisrICB0eXBlX29iai0+cHJldiA9IE5VTEw7CiArCi0rICAgIGRlZiBmaWx0ZXIgKHNl bGYsIGZyYW1lKToKLSsgICAgICAgIG5hbWUgPSBmcmFtZS5uYW1lICgpCi0rICAgICAgICBpZiBu YW1lIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIGlmIHNlbGYucnguc2VhcmNoIChuYW1lKSBp cyBub3QgTm9uZToKLSsgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIHJldHVy biBGYWxzZQorKyAgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmot PnR5cGUpKQorKyAgICB7CisrICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09C SkZJTEUgKHR5cGVfb2JqLT50eXBlKTsKICsKLStjbGFzcyBVcHRvU291cmNlQ29tbWFuZCAoVXB0 b0ltcGxlbWVudGF0aW9uKToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcg c3RhY2sgZnJhbWUsIGJhc2VkIG9uIHNvdXJjZSBmaWxlLgotK1RoZSBhcmd1bWVudCBpcyBhIHJl Z3VsYXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKLStzdGFjaywgc3Rv cHBpbmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIHNvdXJjZSBmaWxlIG5hbWUgbWF0Y2hlcyB0 aGUKLStyZWd1bGFyIGV4cHJlc3Npb24uIiIiCisrICAgICAgdHlwZV9vYmotPm5leHQgPSBvYmpm aWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSk7CisrICAgICAgaWYgKHR5 cGVfb2JqLT5uZXh0KQorKwl0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVfb2JqOworKyAgICAg IHNldF9vYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSwgdHlwZV9v YmopOworKyAgICB9CisrI2lmIDAKKysgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVf RElTQ0FSREFCTEUgKHR5cGVfb2JqLT50eXBlKSkKKysgICAgeworKyAgICAgIHR5cGVfb2JqLT5u ZXh0ID0gcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOworKyAgICAgIGlmICh0eXBlX29iai0+bmV4 dCkKKysJdHlwZV9vYmotPm5leHQtPnByZXYgPSB0eXBlX29iajsKKysgICAgICBweXR5X29iamVj dHNfZGlzY2FyZGFibGUgPSB0eXBlX29iajsKKysgICAgfQorKyNlbmRpZgorKyAgZWxzZQorKyAg ICB0eXBlX29iai0+bmV4dCA9IE5VTEw7CisrfQogKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYp OgotKyAgICAgICAgc3VwZXIgKFVwdG9Tb3VyY2VDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNv dXJjZSIpCisrLyogVW5saW5rIFRZUEVfT0JKIGZyb20gaXRzIGN1cnJlbnQgbGlzdC4gIFBlcm1h bmVudCB0eXBlcyBhcmUgbm90IGxpbmtlZAorKyAgIGFueXdoZXJlIGFuZCB0aGlzIGZ1bmN0aW9u IGhhcyBubyBlZmZlY3Qgb24gdGhlbS4gICovCisrc3RhdGljIHZvaWQKKyt0eXB5X3VubGluayAo dHlwZV9vYmplY3QgKnR5cGVfb2JqKQorK3sKKysgIGlmICh0eXBlX29iai0+cHJldikKKysgICAg dHlwZV9vYmotPnByZXYtPm5leHQgPSB0eXBlX29iai0+bmV4dDsKKysgIGVsc2UgaWYgKHR5cGVf b2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQorKyAgICB7CisrICAg ICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLworKyAgICAgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7CiArCi0rICAgIGRlZiBm aWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIG5hbWUgPSBmcmFtZS5maW5kX3NhbCAoKS5z eW10YWIuZmlsZW5hbWUKLSsgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0rICAgICAgICAg ICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAg ICByZXR1cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNlCisrICAgICAgc2V0X29iamZpbGVf ZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7Cisr ICAgIH0KKysjaWYgMAorKyAgZWxzZSBpZiAocHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID09IHR5 cGVfb2JqKQorKyAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBlX29iai0+bmV4dDsK KysjZW5kaWYKICsKLStjbGFzcyBVcHRvT2JqZWN0Q29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9u KToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJh c2VkIG9uIG9iamVjdCBmaWxlLgotK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lv bi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKLStzdGFjaywgc3RvcHBpbmcgYXQgdGhlIGZp cnN0IGZyYW1lIHdob3NlIG9iamVjdCBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUKLStyZWd1bGFyIGV4 cHJlc3Npb24uIiIiCisrICBpZiAodHlwZV9vYmotPm5leHQpCisrICAgIHR5cGVfb2JqLT5uZXh0 LT5wcmV2ID0gdHlwZV9vYmotPnByZXY7CisrfQogKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYp OgotKyAgICAgICAgc3VwZXIgKFVwdG9PYmplY3RDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoIm9i amVjdCIpCisgc3RhdGljIHZvaWQKKyBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKKyB7CitAQCAtMTE4NSwxMiArMTI1MCwxMyBAQCBzYXZl X29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKKyAg ICAgeworICAgICAgIHR5cGVfb2JqZWN0ICpuZXh0ID0gb2JqLT5uZXh0OworIAorLSAgICAgIGh0 YWJfZW1wdHkgKGNvcGllZF90eXBlcyk7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxF IChvYmotPnR5cGUpID09IG9iamZpbGUpOworKyAgICAgIHR5cHlfdW5saW5rIChvYmopOworIAor LSAgICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIG9iai0+dHlw ZSwgY29waWVkX3R5cGVzKTsKKysgICAgICBvYmotPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZl IChvYmotPnR5cGUsIGNvcGllZF90eXBlcyk7CisgCistICAgICAgb2JqLT5uZXh0ID0gTlVMTDsK Ky0gICAgICBvYmotPnByZXYgPSBOVUxMOworKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklM RSAob2JqLT50eXBlKSA9PSBOVUxMKTsKKysgICAgICB0eXB5X2xpbmsgKG9iaik7CisgCisgICAg ICAgb2JqID0gbmV4dDsKKyAgICAgfQorQEAgLTEyMDEsNDMgKzEyNjcsMjggQEAgc2F2ZV9vYmpm aWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCisgfQorIAor IHN0YXRpYyB2b2lkCistc2V0X3R5cGUgKHR5cGVfb2JqZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0 eXBlKQorK3R5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKKyB7CistICBvYmotPnR5cGUgPSB0 eXBlOworLSAgb2JqLT5wcmV2ID0gTlVMTDsKKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAo dHlwZSkpCistICAgIHsKKy0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JK RklMRSAodHlwZSk7CisrICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikg b2JqOworIAorLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9v YmpmaWxlX2RhdGFfa2V5KTsKKy0gICAgICBpZiAob2JqLT5uZXh0KQorLQlvYmotPm5leHQtPnBy ZXYgPSBvYmo7CistICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxl X2RhdGFfa2V5LCBvYmopOworLSAgICB9CistICBlbHNlCistICAgIG9iai0+bmV4dCA9IE5VTEw7 CisrICB0eXB5X3VubGluayAodHlwZV9vYmopOwogKwotKyAgICBkZWYgZmlsdGVyIChzZWxmLCBm cmFtZSk6Ci0rICAgICAgICBuYW1lID0gZnJhbWUuZmluZF9zYWwgKCkuc3ltdGFiLm9iamZpbGUu ZmlsZW5hbWUKLSsgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgaWYg c2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICByZXR1 cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNlCisrICB0eXBlX29iai0+b2JfdHlwZS0+dHBf ZnJlZSAob2JqKTsKKyB9CisgCisrI2lmIDAKKysvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBh bnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KKyBzdGF0 aWMgdm9pZAorLXR5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKKyt0eXB5X3R5cGVzX21hcmtf dXNlZCAodm9pZCkKKyB7CistICB0eXBlX29iamVjdCAqdHlwZSA9ICh0eXBlX29iamVjdCAqKSBv Ymo7CistCistICBpZiAodHlwZS0+cHJldikKKy0gICAgdHlwZS0+cHJldi0+bmV4dCA9IHR5cGUt Pm5leHQ7CistICBlbHNlIGlmICh0eXBlLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZS0+dHlw ZSkpCistICAgIHsKKy0gICAgICAvKiBNdXN0IHJlc2V0IGhlYWQgb2YgbGlzdC4gICovCistICAg ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpOwor LQorLSAgICAgIGlmIChvYmpmaWxlKQorLQlzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5 X29iamZpbGVfZGF0YV9rZXksIHR5cGUtPm5leHQpOworLSAgICB9CistICBpZiAodHlwZS0+bmV4 dCkKKy0gICAgdHlwZS0+bmV4dC0+cHJldiA9IHR5cGUtPnByZXY7CisrICB0eXBlX29iamVjdCAq dHlwZV9vYmo7CisgCistICB0eXBlLT5vYl90eXBlLT50cF9mcmVlICh0eXBlKTsKKysgIGZvciAo dHlwZV9vYmogPSBweXR5X29iamVjdHNfZGlzY2FyZGFibGU7CisrICAgICAgIHR5cGVfb2JqICE9 IE5VTEw7CisrICAgICAgIHR5cGVfb2JqID0gdHlwZV9vYmotPm5leHQpCisrICAgIHR5cGVfbWFy a191c2VkICh0eXBlX29iai0+dHlwZSk7CisgfQorKyNlbmRpZgorIAorIC8qIFJldHVybiBudW1i ZXIgb2YgZmllbGRzICgibGVuZ3RoIiBvZiB0aGUgZmllbGQgZGljdGlvbmFyeSkuICAqLworIAor QEAgLTE0NTcsNyArMTUwOCwxMCBAQCB0eXBlX3RvX3R5cGVfb2JqZWN0IChzdHJ1Y3QgdHlwZSAq dHlwZSkKKyAKKyAgIHR5cGVfb2JqID0gUHlPYmplY3RfTmV3ICh0eXBlX29iamVjdCwgJnR5cGVf b2JqZWN0X3R5cGUpOworICAgaWYgKHR5cGVfb2JqKQorLSAgICBzZXRfdHlwZSAodHlwZV9vYmos IHR5cGUpOworKyAgICB7CisrICAgICAgdHlwZV9vYmotPnR5cGUgPSB0eXBlOworKyAgICAgIHR5 cHlfbGluayAodHlwZV9vYmopOworKyAgICB9CisgCisgICByZXR1cm4gKFB5T2JqZWN0ICopIHR5 cGVfb2JqOworIH0KK0BAIC0xNTM3LDYgKzE1OTEsMTAgQEAgZ2RicHlfaW5pdGlhbGl6ZV90eXBl cyAodm9pZCkKKyAKKyAgIFB5X0lOQ1JFRiAoJmZpZWxkX29iamVjdF90eXBlKTsKKyAgIFB5TW9k dWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIkZpZWxkIiwgKFB5T2JqZWN0ICopICZmaWVsZF9v YmplY3RfdHlwZSk7CiArCi0rY2xhc3MgVXB0b1doZXJlQ29tbWFuZCAoVXB0b0ltcGxlbWVudGF0 aW9uKToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUs IGJhc2VkIG9uIGV4cHJlc3Npb24uCi0rVGhlIGFyZ3VtZW50IGlzIGFuIGV4cHJlc3Npb24uICBU aGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlIHN0YWNrLAotK3BhcnNpbmcgYW5kIGV2YWx1YXRpbmcg dGhlIGV4cHJlc3Npb24gaW4gZWFjaCBmcmFtZS4gIFRoaXMgc3RvcHMgd2hlbgotK3RoZSBleHBy ZXNzaW9uIGV2YWx1YXRlcyB0byBhIG5vbi16ZXJvICh0cnVlKSB2YWx1ZS4iIiIKKysjaWYgMAor KyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAodHlweV90eXBlc19tYXJrX3VzZWQpOworKyNl bmRpZgorIH0KKyAKKyAMCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5jIGIvZ2Ri L3B5dGhvbi9weS12YWx1ZS5jCitpbmRleCA2ZjY3YmRiLi41ZGRkNmJjIDEwMDY0NAorLS0tIGEv Z2RiL3B5dGhvbi9weS12YWx1ZS5jCisrKysgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKK0BAIC0y OSw2ICsyOSw3IEBACisgI2luY2x1ZGUgImV4cHJlc3Npb24uaCIKKyAjaW5jbHVkZSAiY3AtYWJp LmgiCisgI2luY2x1ZGUgInB5dGhvbi5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorIAorICNp ZmRlZiBIQVZFX1BZVEhPTgorIAorQEAgLTEzNzgsNiArMTM3OSwxOSBAQCBnZGJweV9pc192YWx1 ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmopCisgICByZXR1cm4gUHlPYmplY3RfVHlwZUNoZWNrIChv YmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7CisgfQorIAorKyNpZiAwCisrLyogQ2FsbCB0eXBlX21h cmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmls ZS4gICovCiArCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAoVXB0 b1doZXJlQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJ3aGVyZSIpCisrc3RhdGljIHZvaWQKKytw eXRob25fdHlwZXNfbWFya191c2VkICh2b2lkKQorK3sKKysgIHZhbHVlX29iamVjdCAqaXRlcjsK ICsKLSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgdHJ5OgotKyAgICAg ICAgICAgIGlmIGdkYi5wYXJzZV9hbmRfZXZhbCAoc2VsZi5leHByZXNzaW9uKToKLSsgICAgICAg ICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgIGV4Y2VwdDoKLSsgICAgICAgICAgICBwYXNz Ci0rICAgICAgICByZXR1cm4gRmFsc2UKKysgIGZvciAoaXRlciA9IHZhbHVlc19pbl9weXRob247 IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KQorKyAgICB0eXBlX21hcmtfdXNlZCAodmFsdWVfdHlw ZSAoaXRlci0+dmFsdWUpKTsKKyt9CisrI2VuZGlmCiArCi0rICAgIGRlZiBpbnZva2UgKHNlbGYs IGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5leHByZXNzaW9uID0gYXJnCi0rICAgICAg ICBzZWxmLnNlYXJjaCAoKQorIHZvaWQKKyBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkK KyB7CitAQCAtMTM4OCw2ICsxNDAyLDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lk KQorICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUiLCAoUHlPYmplY3Qg KikgJnZhbHVlX29iamVjdF90eXBlKTsKKyAKKyAgIHZhbHVlc19pbl9weXRob24gPSBOVUxMOwog KwotK1VwdG9QcmVmaXggKCkKLStVcHRvU3ltYm9sQ29tbWFuZCAoKQotK1VwdG9Tb3VyY2VDb21t YW5kICgpCi0rVXB0b09iamVjdENvbW1hbmQgKCkKLStVcHRvV2hlcmVDb21tYW5kICgpCi1kaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9s aWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5Ci1AQCAtMCwwICsxIEBACisrI2lmIDAKKysgIG9i c2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHB5dGhvbl90eXBlc19tYXJrX3VzZWQpOworKyNlbmRp ZgorIH0KKyAKKyAMCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRo b24vcHl0aG9uLmMKK2luZGV4IDE5ZWI3YjUuLjBlNzI1NmUgMTAwNjQ0CistLS0gYS9nZGIvcHl0 aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCitAQCAtNjYsMTAgKzY2LDEz IEBAIHN0YXRpYyBjb25zdCBjaGFyICpnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSBweXRob25f ZXhjcF9tZXNzYWdlOworICNpbmNsdWRlICJsaW5lc3BlYy5oIgorICNpbmNsdWRlICJzb3VyY2Uu aCIKKyAjaW5jbHVkZSAidmVyc2lvbi5oIgorKyNpbmNsdWRlICJpbmZlcmlvci5oIgorKyNpbmNs dWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAidGFyZ2V0LmgiCisgI2luY2x1ZGUgImdkYnRo cmVhZC5oIgorICNpbmNsdWRlICJvYnNlcnZlci5oIgorICNpbmNsdWRlICJpbnRlcnBzLmgiCisr I2luY2x1ZGUgImV2ZW50LXRvcC5oIgorIAorIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2Rz W107CisgCitAQCAtOTc0LDYgKzk3Nyw1MyBAQCBnZGJweV9wcmludF9zdGFjayAodm9pZCkKKyAK KyAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgorICAgIFRoZXJlIGFsd2F5cyBpcyBv bmUuICAqLworKy8qIFRydWUgaWYgJ2dkYiAtUCcgd2FzIHVzZWQsIGZhbHNlIG90aGVyd2lzZS4g ICovCisrc3RhdGljIGludCBydW5uaW5nX3B5dGhvbl9zY3JpcHQ7CiArCi1kaWZmIC0tZ2l0IGEv Z2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBiL2dkYi9weXRob24vbGli L2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi4yYjljNWM3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIv ZnVuY3Rpb24vY2FsbGVyX2lzLnB5Ci1AQCAtMCwwICsxLDU4IEBACi0rIyBDYWxsZXItaXMgZnVu Y3Rpb25zLgorKy8qIFRydWUgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiBhIGNhbGwgdG8gJ2dkYi5j bGknLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgaW5fY2xpOwogKwotKyMgQ29w eXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKy8qIEVudGVy IHRoZSBjb21tYW5kIGxvb3AuICAqLwogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsj Ci0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KytzdGF0aWMgUHlPYmplY3QgKgorK2dkYnB5X2NsaSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2Jq ZWN0ICp1bnVzZWQyKQorK3sKKysgIGlmICghIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCB8fCBpbl9j bGkpCisrICAgIHJldHVybiBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImNhbm5v dCBpbnZva2UgQ0xJIHJlY3Vyc2l2ZWx5Iik7CiArCi0raW1wb3J0IGdkYgotK2ltcG9ydCByZQor KyAgaW5fY2xpID0gMTsKKysgIGNsaV9jb21tYW5kX2xvb3AgKCk7CisrICBpbl9jbGkgPSAwOwog KwotK2NsYXNzIENhbGxlcklzIChnZGIuRnVuY3Rpb24pOgotKyAgICAiIiJSZXR1cm4gVHJ1ZSBp ZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgaXMgZXF1YWwgdG8gYSBzdHJpbmcuCi0rVGhp cyBmdW5jdGlvbiB0YWtlcyBvbmUgb3IgdHdvIGFyZ3VtZW50cy4KLStUaGUgZmlyc3QgYXJndW1l bnQgaXMgdGhlIG5hbWUgb2YgYSBmdW5jdGlvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncwot K25hbWUgaXMgZXF1YWwgdG8gdGhpcyBhcmd1bWVudCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIFRy dWUuCi0rVGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCB0ZWxscyB0aGlzIGZ1bmN0aW9uIGhv dyBtYW55IHN0YWNrIGZyYW1lcwotK3RvIHRyYXZlcnNlIHRvIGZpbmQgdGhlIGNhbGxpbmcgZnVu Y3Rpb24uICBUaGUgZGVmYXVsdCBpcyAxLiIiIgorKyAgUHlfUkVUVVJOX05PTkU7CisrfQogKwot KyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKENhbGxlcklzLCBzZWxm KS5fX2luaXRfXyAoImNhbGxlcl9pcyIpCisrLyogU2V0IHVwIHRoZSBQeXRob24gYXJndW1lbnQg dmVjdG9yIGFuZCBldmFsdWF0ZSBhIHNjcmlwdC4gIFRoaXMgaXMKKysgICB1c2VkIHRvIGltcGxl bWVudCAnZ2RiIC1QJy4gICovCiArCi0rICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFt ZXMgPSAxKToKLSsgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAg ICB3aGlsZSBuZnJhbWVzID4gMDoKLSsgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgp Ci0rICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAxCi0rICAgICAgICByZXR1cm4gZnJh bWUubmFtZSAoKSA9PSBuYW1lLnN0cmluZyAoKQorK3ZvaWQKKytydW5fcHl0aG9uX3NjcmlwdCAo aW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgIEZJTEUgKmlucHV0OwogKwotK2NsYXNzIENh bGxlck1hdGNoZXMgKGdkYi5GdW5jdGlvbik6Ci0rICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBj YWxsaW5nIGZ1bmN0aW9uJ3MgbmFtZSBtYXRjaGVzIGEgc3RyaW5nLgotK1RoaXMgZnVuY3Rpb24g dGFrZXMgb25lIG9yIHR3byBhcmd1bWVudHMuCi0rVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgcmVn dWxhciBleHByZXNzaW9uOyBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzCi0rbmFtZSBpcyBtYXRj aGVkIGJ5IHRoaXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgotK1RoZSBv cHRpb25hbCBzZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFj ayBmcmFtZXMKLSt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhl IGRlZmF1bHQgaXMgMS4iIiIKKysgIC8qIFdlIG5ldmVyIGZyZWUgdGhpcywgc2luY2Ugd2UgcGxh biB0byBleGl0IGF0IHRoZSBlbmQuICAqLworKyAgZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJy ZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOwogKwotKyAgICBkZWYgX19pbml0X18gKHNl bGYpOgotKyAgICAgICAgc3VwZXIgKENhbGxlck1hdGNoZXMsIHNlbGYpLl9faW5pdF9fICgiY2Fs bGVyX21hdGNoZXMiKQorKyAgcnVubmluZ19weXRob25fc2NyaXB0ID0gMTsKKysgIFB5U3lzX1Nl dEFyZ3YgKGFyZ2MgLSAxLCBhcmd2ICsgMSk7CisrICBpbnB1dCA9IGZvcGVuIChhcmd2WzBdLCAi ciIpOworKyAgaWYgKCEgaW5wdXQpCisrICAgIHsKKysgICAgICBmcHJpbnRmIChzdGRlcnIsICJj b3VsZCBub3Qgb3BlbiAlczogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9yIChlcnJubykpOworKyAg ICAgIGV4aXQgKDEpOworKyAgICB9CisrICBQeVJ1bl9TaW1wbGVGaWxlIChpbnB1dCwgYXJndlsw XSk7CisrICBmY2xvc2UgKGlucHV0KTsKKysgIGV4aXQgKDApOworK30KICsKLSsgICAgZGVmIGlu dm9rZSAoc2VsZiwgbmFtZSwgbmZyYW1lcyA9IDEpOgotKyAgICAgICAgZnJhbWUgPSBnZGIuc2Vs ZWN0ZWRfZnJhbWUgKCkKLSsgICAgICAgIHdoaWxlIG5mcmFtZXMgPiAwOgotKyAgICAgICAgICAg IGZyYW1lID0gZnJhbWUub2xkZXIgKCkKLSsgICAgICAgICAgICBuZnJhbWVzID0gbmZyYW1lcyAt IDEKLSsgICAgICAgIHJldHVybiByZS5tYXRjaCAobmFtZS5zdHJpbmcgKCksIGZyYW1lLm5hbWUg KCkpIGlzIG5vdCBOb25lCisrDAogKwotK0NhbGxlcklzKCkKLStDYWxsZXJNYXRjaGVzKCkKLWRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9nZGIv cHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi5kZWJiM2JiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9u L2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIEluLXNj b3BlIGZ1bmN0aW9uLgorIAorIHN0YXRpYyBQeU9iamVjdCAqCisgZ2RicHlfZ2V0X2N1cnJlbnRf cHJvZ3NwYWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCitAQCAtMTQx NSw2ICsxNDY1LDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXSA9CisgICAgICJH ZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCisgICB7ICJleGVjdXRlIiwgKFB5Q0Z1bmN0aW9u KSBleGVjdXRlX2dkYl9jb21tYW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAg ICAiRXhlY3V0ZSBhIGdkYiBjb21tYW5kIiB9LAorKyAgeyAiY2xpIiwgZ2RicHlfY2xpLCBNRVRI X05PQVJHUywKKysgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAorICAgeyAicGFyYW1ldGVyIiwg Z2RicHlfcGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgICJSZXR1cm4gYSBnZGIgcGFyYW1l dGVyJ3MgdmFsdWUiIH0sCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dk Yi9weXRob24vcHl0aG9uLmgKK2luZGV4IGRkNzA2NmYuLmYwZjZlOTAgMTAwNjQ0CistLS0gYS9n ZGIvcHl0aG9uL3B5dGhvbi5oCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCitAQCAtMzAsNiAr MzAsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29t bWFuZF9saW5lICopOworIAorIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZpbGUs IGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKKyAKKyt2b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQg YXJnYywgY2hhciAqKmFyZ3YpOwogKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgSW5TY29wZSAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIi UmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZlbiB2YXJpYWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBz Y29wZS4KLStUYWtlcyBvbmUgYXJndW1lbnQgZm9yIGVhY2ggdmFyaWFibGUgbmFtZSB0byBiZSBj aGVja2VkLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKwlzdXBlciAoSW5TY29w ZSwgc2VsZikuX19pbml0X18gKCJpbl9zY29wZSIpCi0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYs ICp2YXJzKToKLSsgICAgICAgIGlmIGxlbiAodmFycykgPT0gMDoKLSsJICAgIHJhaXNlIFR5cGVF cnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIKLSsKLSsgICAgICAg ICMgZ2RiLlZhbHVlIGlzbid0IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1dCBpbiBhIG1hcC4K LSsJIyBDb252ZXJ0IHRvIHN0cmluZyBmaXJzdC4KLSsJd2FudGVkID0gc2V0IChtYXAgKGxhbWJk YSB4OiB4LnN0cmluZyAoKSwgdmFycykpCi0rCWZvdW5kID0gc2V0ICgpCi0rCWJsb2NrID0gZ2Ri LnNlbGVjdGVkX2ZyYW1lICgpLmJsb2NrICgpCi0rCXdoaWxlIGJsb2NrOgotKwkgICAgZm9yIHN5 bSBpbiBibG9jazoKLSsJCWlmIChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0r CQkgICAgICBvciBzeW0uaXNfZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxlKToKLSsJCSAgICBp ZiBzeW0ubmFtZSBpbiB3YW50ZWQ6Ci0rCQkJZm91bmQuYWRkIChzeW0ubmFtZSkKLSsKLSsJICAg IGJsb2NrID0gYmxvY2suc3VwZXJibG9jawotKwotKwlyZXR1cm4gd2FudGVkID09IGZvdW5kCi0r Ci0rSW5TY29wZSAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdHlwZS5jIGIvZ2RiL3B5 dGhvbi9weS10eXBlLmMKLWluZGV4IGRhZGIwMzcuLjg2NGRhOTkgMTAwNjQ0Ci0tLS0gYS9nZGIv cHl0aG9uL3B5LXR5cGUuYwotKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLUBAIC0zMCw2ICsz MCw4IEBACi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJiY2FjaGUuaCIKLSAjaW5jbHVk ZSAiZHdhcmYybG9jLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKLSAKLSB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0Ci0gewotQEAgLTM4 LDExICs0MCwxOSBAQCB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0Ci0gCi0gICAvKiBJ ZiBhIFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmpmaWxlLCBpdCBpcyBrZXB0 IG9uIGEKLSAgICAgIGRvdWJseS1saW5rZWQgbGlzdCwgcm9vdGVkIGluIHRoZSBvYmpmaWxlLiAg VGhpcyBsZXRzIHVzIGNvcHkgdGhlCi0tICAgICB1bmRlcmx5aW5nIHN0cnVjdCB0eXBlIHdoZW4g dGhlIG9iamZpbGUgaXMgZGVsZXRlZC4gICovCi0rICAgICB1bmRlcmx5aW5nIHN0cnVjdCB0eXBl IHdoZW4gdGhlIG9iamZpbGUgaXMgZGVsZXRlZC4KLSsKLSsgICAgIFdpdGggTlVMTCBvYmpmaWxl IFR5cGUgc3RpbGwgY2FuIGJlIGRvdWJseS1saW5rZWQgaW4gdGhlIGxpc3QKLSsgICAgIFBZVFlf T0JKRUNUU19ESVNDQVJEQUJMRS4gICovCi0gICBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdCAqcHJl djsKLSAgIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0ICpuZXh0OwotIH0gdHlwZV9vYmplY3Q7Ci0g Ci0rI2lmIDAKLSsvKiBGaXJzdCBlbGVtZW50IG9mIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIFRZ UEVfRElTQ0FSREFCTEUgVHlwZXMuICAqLwotK3N0YXRpYyB0eXBlX29iamVjdCAqcHl0eV9vYmpl Y3RzX2Rpc2NhcmRhYmxlOwotKyNlbmRpZgotKwotIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9v YmplY3RfdHlwZTsKLSAKLSAvKiBBIEZpZWxkIG9iamVjdC4gICovCi1AQCAtMTE1MCw4ICsxMTYw LDYzIEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIs IGludCBvcCkKLSAKLSAMCi0gCi0rLyogS2V5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamZpbGUg cG9pbnRpbmcgdG8gdGhlIGZpcnN0IGVsZW1lbnQgb2YKLSsgICBhIGRvdWJseS1saW5rZWQgbGlz dCBvZiBUeXBlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBvYmpmaWxlLiAgKi8KLSBzdGF0aWMgY29u c3Qgc3RydWN0IG9iamZpbGVfZGF0YSAqdHlweV9vYmpmaWxlX2RhdGFfa2V5OworIGludCBhcHBs eV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKKyAJCQkgICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVz cywKKyAJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKK2RpZmYg LS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCitpbmRleCAwMmUzNmNhLi4wNjY0MDdm IDEwMDY0NAorLS0tIGEvZ2RiL3N0YWNrLmMKKysrKyBiL2dkYi9zdGFjay5jCitAQCAtNTA5LDYg KzUwOSwxMCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsCisgICBzdGIgPSBtZW1fZmlsZW9wZW4gKCk7CisgICBvbGRfY2hh aW4gPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0Yik7CiAgCi0rLyogTGluayBUWVBF X09CSiB0byBpdHMgYXBwcm9wcmlhdGUgbGlzdC4gIEVpdGhlciB0byBpdHMgb2JqZmlsZSBhc3Nv Y2lhdGVkIG9uZQotKyAgIG9yIGF0IGxlYXN0IHRvIHRoZSBnbG9iYWwgbGlzdCBmb3IgVFlQRV9E SVNDQVJEQUJMRSBUeXBlcy4gIFBlcm1hbmVudCB0eXBlcwotKyAgIGRvIG5vdCBnZXQgbGlua2Vk IGFueXdoZXJlLiAgKi8KLStzdGF0aWMgdm9pZAotK3R5cHlfbGluayAodHlwZV9vYmplY3QgKnR5 cGVfb2JqKQotK3sKLSsgIHR5cGVfb2JqLT5wcmV2ID0gTlVMTDsKLSsKLSsgIGlmICh0eXBlX29i ai0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKSkKLSsgICAgewotKyAgICAg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7 Ci0rCi0rICAgICAgdHlwZV9vYmotPm5leHQgPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlf b2JqZmlsZV9kYXRhX2tleSk7Ci0rICAgICAgaWYgKHR5cGVfb2JqLT5uZXh0KQotKwl0eXBlX29i ai0+bmV4dC0+cHJldiA9IHR5cGVfb2JqOwotKyAgICAgIHNldF9vYmpmaWxlX2RhdGEgKG9iamZp bGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSwgdHlwZV9vYmopOwotKyAgICB9Ci0rI2lmIDAKLSsg IGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfRElTQ0FSREFCTEUgKHR5cGVfb2JqLT50 eXBlKSkKLSsgICAgewotKyAgICAgIHR5cGVfb2JqLT5uZXh0ID0gcHl0eV9vYmplY3RzX2Rpc2Nh cmRhYmxlOwotKyAgICAgIGlmICh0eXBlX29iai0+bmV4dCkKLSsJdHlwZV9vYmotPm5leHQtPnBy ZXYgPSB0eXBlX29iajsKLSsgICAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBlX29i ajsKLSsgICAgfQotKyNlbmRpZgotKyAgZWxzZQotKyAgICB0eXBlX29iai0+bmV4dCA9IE5VTEw7 Ci0rfQotKwotKy8qIFVubGluayBUWVBFX09CSiBmcm9tIGl0cyBjdXJyZW50IGxpc3QuICBQZXJt YW5lbnQgdHlwZXMgYXJlIG5vdCBsaW5rZWQKLSsgICBhbnl3aGVyZSBhbmQgdGhpcyBmdW5jdGlv biBoYXMgbm8gZWZmZWN0IG9uIHRoZW0uICAqLwotK3N0YXRpYyB2b2lkCi0rdHlweV91bmxpbmsg KHR5cGVfb2JqZWN0ICp0eXBlX29iaikKLSt7Ci0rICBpZiAodHlwZV9vYmotPnByZXYpCi0rICAg IHR5cGVfb2JqLT5wcmV2LT5uZXh0ID0gdHlwZV9vYmotPm5leHQ7Ci0rICBlbHNlIGlmICh0eXBl X29iai0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKSkKLSsgICAgewotKyAg ICAgIC8qIE11c3QgcmVzZXQgaGVhZCBvZiBsaXN0LiAgKi8KLSsgICAgICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpOwotKwotKyAgICAgIHNl dF9vYmpmaWxlX2RhdGEgKG9iamZpbGUsIHR5cHlfb2JqZmlsZV9kYXRhX2tleSwgdHlwZV9vYmot Pm5leHQpOwotKyAgICB9Ci0rI2lmIDAKLSsgIGVsc2UgaWYgKHB5dHlfb2JqZWN0c19kaXNjYXJk YWJsZSA9PSB0eXBlX29iaikKLSsgICAgcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID0gdHlwZV9v YmotPm5leHQ7Ci0rI2VuZGlmCi0rCi0rICBpZiAodHlwZV9vYmotPm5leHQpCi0rICAgIHR5cGVf b2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmotPnByZXY7Ci0rfQorKyAgLyogRnJhbWUgbWF5IGJl IG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBFX0RZTkFNSUMuICAqLworKyAgbWFrZV9j bGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7CisrICBzZWxlY3RfZnJhbWUgKGZyYW1l KTsKICsKLSBzdGF0aWMgdm9pZAotIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIHZvaWQgKmRhdHVtKQotIHsKLUBAIC0xMTY5LDEyICsxMjM0LDEzIEBAIHNhdmVf b2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQorICAg aWYgKGZ1bmMpCiAgICAgIHsKLSAgICAgICB0eXBlX29iamVjdCAqbmV4dCA9IG9iai0+bmV4dDsK LSAKLS0gICAgICBodGFiX2VtcHR5IChjb3BpZWRfdHlwZXMpOwotKyAgICAgIGdkYl9hc3NlcnQg KFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9PSBvYmpmaWxlKTsKLSsgICAgICB0eXB5X3VubGlu ayAob2JqKTsKLSAKLS0gICAgICBvYmotPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpm aWxlLCBvYmotPnR5cGUsIGNvcGllZF90eXBlcyk7Ci0rICAgICAgb2JqLT50eXBlID0gY29weV90 eXBlX3JlY3Vyc2l2ZSAob2JqLT50eXBlLCBjb3BpZWRfdHlwZXMpOwotIAotLSAgICAgIG9iai0+ bmV4dCA9IE5VTEw7Ci0tICAgICAgb2JqLT5wcmV2ID0gTlVMTDsKLSsgICAgICBnZGJfYXNzZXJ0 IChUWVBFX09CSkZJTEUgKG9iai0+dHlwZSkgPT0gTlVMTCk7Ci0rICAgICAgdHlweV9saW5rIChv YmopOwotIAotICAgICAgIG9iaiA9IG5leHQ7CisgICAgICAgc3RydWN0IGJsb2NrICpiID0gU1lN Qk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5h ZGEvcGFja2VkX2FycmF5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXku ZXhwCitpbmRleCA2Nzg2MzljLi40N2EyMjAyIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNr ZWRfYXJyYXkuZXhwCitAQCAtNjAsNSArNjAsMTEgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0ZXN0 IiAiJHRlc3QiIHsKKyAgICAgICAgICMgYXJlLiAgT2JzZXJ2ZWQgd2l0aCAoRlNGIEdOVSBBZGEg NC41LjMgMjAxMTAxMjQpLgorICAgICAgICAgeGZhaWwgJHRlc3QKICAgICAgfQotQEAgLTExODUs NDMgKzEyNTEsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdm9pZCAqZGF0dW0pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0tc2V0X3R5cGUgKHR5cGVfb2Jq ZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0eXBlKQotK3R5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9i aikKLSB7Ci0tICBvYmotPnR5cGUgPSB0eXBlOwotLSAgb2JqLT5wcmV2ID0gTlVMTDsKLS0gIGlm ICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7Ci0rICB0eXBlX29iamVjdCAqdHlw ZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2JqOwotIAotLSAgICAgIG9iai0+bmV4dCA9IG9iamZp bGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKLS0gICAgICBpZiAob2Jq LT5uZXh0KQotLQlvYmotPm5leHQtPnByZXYgPSBvYmo7Ci0tICAgICAgc2V0X29iamZpbGVfZGF0 YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCBvYmopOwotLSAgICB9Ci0tICBlbHNl Ci0tICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0rICB0eXB5X3VubGluayAodHlwZV9vYmopOwotKwot KyAgdHlwZV9vYmotPm9iX3R5cGUtPnRwX2ZyZWUgKG9iaik7Ci0gfQotIAotKyNpZiAwCi0rLyog Q2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdE QiBzb3VyY2UgZmlsZS4gICovCi0gc3RhdGljIHZvaWQKLS10eXB5X2RlYWxsb2MgKFB5T2JqZWN0 ICpvYmopCi0rdHlweV90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0gewotLSAgdHlwZV9vYmplY3Qg KnR5cGUgPSAodHlwZV9vYmplY3QgKikgb2JqOwotLQotLSAgaWYgKHR5cGUtPnByZXYpCi0tICAg IHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0OwotLSAgZWxzZSBpZiAodHlwZS0+dHlwZSAm JiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQotLSAgICB7Ci0tICAgICAgLyogTXVzdCByZXNl dCBoZWFkIG9mIGxpc3QuICAqLwotLSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQ RV9PQkpGSUxFICh0eXBlLT50eXBlKTsKLS0KLS0gICAgICBpZiAob2JqZmlsZSkKLS0Jc2V0X29i amZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlLT5uZXh0KTsK LS0gICAgfQotLSAgaWYgKHR5cGUtPm5leHQpCi0tICAgIHR5cGUtPm5leHQtPnByZXYgPSB0eXBl LT5wcmV2OwotKyAgdHlwZV9vYmplY3QgKnR5cGVfb2JqOwotIAotLSAgdHlwZS0+b2JfdHlwZS0+ dHBfZnJlZSAodHlwZSk7Ci0rICBmb3IgKHR5cGVfb2JqID0gcHl0eV9vYmplY3RzX2Rpc2NhcmRh YmxlOwotKyAgICAgICB0eXBlX29iaiAhPSBOVUxMOwotKyAgICAgICB0eXBlX29iaiA9IHR5cGVf b2JqLT5uZXh0KQotKyAgICB0eXBlX21hcmtfdXNlZCAodHlwZV9vYmotPnR5cGUpOwotIH0KLSsj ZW5kaWYKLSAKLSAvKiBSZXR1cm4gbnVtYmVyIG9mIGZpZWxkcyAoImxlbmd0aCIgb2YgdGhlIGZp ZWxkIGRpY3Rpb25hcnkpLiAgKi8KLSAKLUBAIC0xNDQ0LDcgKzE0OTUsMTAgQEAgdHlwZV90b190 eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gCi0gICB0eXBlX29iaiA9IFB5T2JqZWN0 X05ldyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVjdF90eXBlKTsKLSAgIGlmICh0eXBlX29iaikK LS0gICAgc2V0X3R5cGUgKHR5cGVfb2JqLCB0eXBlKTsKLSsgICAgewotKyAgICAgIHR5cGVfb2Jq LT50eXBlID0gdHlwZTsKLSsgICAgICB0eXB5X2xpbmsgKHR5cGVfb2JqKTsKKysgICAgLXJlICI9 IFxcKFxcKVxbXHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKKysJIyBhcmNoZXItamFua3JhdG9jaHZp bC12bGEgcmVzb2x2ZXMgaXQgYXMgYSBkeW5hbWljIHR5cGUgcmVzb2x2ZWQgYXMgYW4KKysJIyBl bXB0eSBhcnJheSBbMC4uLTFdLgorKwkjIERXX0FUX3VwcGVyX2JvdW5kIDogKERXX09QX2ZicmVn OiAtNDg7IERXX09QX2RlcmVmKQorKyAgICAgICAgeGZhaWwgJHRlc3QKICsgICAgfQotIAotICAg cmV0dXJuIChQeU9iamVjdCAqKSB0eXBlX29iajsKLSB9Ci1AQCAtMTUyNCw2ICsxNTc4LDEwIEBA IGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCi0gCi0gICBQeV9JTkNSRUYgKCZmaWVsZF9v YmplY3RfdHlwZSk7Ci0gICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJGaWVsZCIs IChQeU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOwotKwotKyNpZiAwCi0rICBvYnNlcnZl cl9hdHRhY2hfbWFya191c2VkICh0eXB5X3R5cGVzX21hcmtfdXNlZCk7Ci0rI2VuZGlmCiAgfQog IAotIAwKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIvcHl0aG9uL3B5 LXZhbHVlLmMKLWluZGV4IDc2MDM2MGUuLmQ5MzVmNTQgMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9u L3B5LXZhbHVlLmMKLSsrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwotQEAgLTI4LDYgKzI4LDcg QEAKLSAjaW5jbHVkZSAiaW5mY2FsbC5oIgotICNpbmNsdWRlICJleHByZXNzaW9uLmgiCi0gI2lu Y2x1ZGUgImNwLWFiaS5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotIAotICNpZmRlZiBIQVZF X1BZVEhPTgotIAotQEAgLTEzMzUsNiArMTMzNiwxOSBAQCBnZGJweV9pc192YWx1ZV9vYmplY3Qg KFB5T2JqZWN0ICpvYmopCi0gICByZXR1cm4gUHlPYmplY3RfVHlwZUNoZWNrIChvYmosICZ2YWx1 ZV9vYmplY3RfdHlwZSk7Ci0gfQotIAotKyNpZiAwCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBm b3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStweXRob25fdHlwZXNfbWFya191c2VkICh2b2lkKQotK3sKLSsgIHZh bHVlX29iamVjdCAqaXRlcjsKLSsKLSsgIGZvciAoaXRlciA9IHZhbHVlc19pbl9weXRob247IGl0 ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KQotKyAgICB0eXBlX21hcmtfdXNlZCAodmFsdWVfdHlwZSAo aXRlci0+dmFsdWUpKTsKLSt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94 ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci1mb28uUworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjgz ZmFhZjYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLWZvby5TCitAQCAtMCwwICsxLDQ1NyBAQAorKwkuZmlsZQkieDg2XzY0LXZs YS1wb2ludGVyLmMiCisrCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCisrLkxk ZWJ1Z19hYmJyZXYwOgorKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKKysuTGRl YnVnX2luZm8wOgorKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMKKysuTGRlYnVn X2xpbmUwOgorKwkudGV4dAorKy5MdGV4dDA6CisrLmdsb2JsIGZvbworKwkudHlwZQlmb28sIEBm dW5jdGlvbgorK2ZvbzoKKysuTEZCMjoKKysJLmZpbGUgMSAieDg2XzY0LXZsYS1wb2ludGVyLmMi CisrCS5sb2MgMSAyMiAwCisrCXB1c2hxCSVyYnAKKysuTENGSTA6CisrCW1vdnEJJXJzcCwgJXJi cAorKy5MQ0ZJMToKKysJc3VicQkkNjQsICVyc3AKKysuTENGSTI6CisrCW1vdmwJJWVkaSwgLTM2 KCVyYnApCisrCS5sb2MgMSAyMiAwCisrCW1vdnEJJXJzcCwgJXJheAorKwltb3ZxCSVyYXgsIC00 OCglcmJwKQorKwkubG9jIDEgMjMgMAorKwltb3ZsCS0zNiglcmJwKSwgJWVkeAorKwltb3ZzbHEJ JWVkeCwlcmF4CisrCXN1YnEJJDEsICVyYXgKKysJbW92cQklcmF4LCAtMjQoJXJicCkKKysJLmxv YyAxIDI0IDAKKysJbW92c2xxCSVlZHgsJXJheAorKwlhZGRxCSQxNSwgJXJheAorKwlhZGRxCSQx NSwgJXJheAorKwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJc3VicQklcmF4LCAl cnNwCisrCW1vdnEJJXJzcCwgLTU2KCVyYnApCisrCW1vdnEJLTU2KCVyYnApLCAlcmF4CisrCWFk ZHEJJDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgKKysJc2FscQkkNCwgJXJheAorKwltb3ZxCSVy YXgsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwltb3ZxCSVyYXgsIC0xNigl cmJwKQorKwkubG9jIDEgMjcgMAorKwltb3ZsCSQwLCAtNCglcmJwKQorKwlqbXAJLkwyCisrLkwz OgorKwkubG9jIDEgMjggMAorKwltb3ZsCS00KCVyYnApLCAlZXNpCisrCW1vdmwJLTQoJXJicCks ICVlYXgKKysJbW92bAklZWF4LCAlZWN4CisrCW1vdnEJLTE2KCVyYnApLCAlcmR4CisrCW1vdnNs cQklZXNpLCVyYXgKKysJbW92YgklY2wsICglcmR4LCVyYXgpCisrCS5sb2MgMSAyNyAwCisrCWFk ZGwJJDEsIC00KCVyYnApCisrLkwyOgorKwltb3ZsCS00KCVyYnApLCAlZWF4CisrCWNtcGwJLTM2 KCVyYnApLCAlZWF4CisrCWpsCS5MMworKwkubG9jIDEgMzAgMAorKwkuZ2xvYmwJYnJlYWtfaGVy ZQorK2JyZWFrX2hlcmU6CisrCW1vdnEJLTE2KCVyYnApLCAlcmF4CisrCW1vdmIJJDAsICglcmF4 KQorKwltb3ZxCS00OCglcmJwKSwgJXJzcAorKwkubG9jIDEgMzEgMAorKwlsZWF2ZQorKwlyZXQK KysuTEZFMjoKKysJLnNpemUJZm9vLCAuLWZvbworKwkuc2VjdGlvbgkuZGVidWdfZnJhbWUsIiIs QHByb2diaXRzCisrLkxmcmFtZTA6CisrCS5sb25nCS5MRUNJRTAtLkxTQ0lFMAorKy5MU0NJRTA6 CisrCS5sb25nCTB4ZmZmZmZmZmYKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJIiIKKysJLnVsZWIx MjggMHgxCisrCS5zbGViMTI4IC04CisrCS5ieXRlCTB4MTAKKysJLmJ5dGUJMHhjCisrCS51bGVi MTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxlYjEyOCAweDEKKysJ LmFsaWduIDgKKysuTEVDSUUwOgorKy5MU0ZERTA6CisrCS5sb25nCS5MRUZERTAtLkxBU0ZERTAK KysuTEFTRkRFMDoKKysJLmxvbmcJLkxmcmFtZTAKKysJLnF1YWQJLkxGQjIKKysJLnF1YWQJLkxG RTItLkxGQjIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgorKwkuYnl0ZQkweGUK KysJLnVsZWIxMjggMHgxMAorKwkuYnl0ZQkweDg2CisrCS51bGViMTI4IDB4MgorKwkuYnl0ZQkw eDQKKysJLmxvbmcJLkxDRkkxLS5MQ0ZJMAorKwkuYnl0ZQkweGQKKysJLnVsZWIxMjggMHg2Cisr CS5hbGlnbiA4CisrLkxFRkRFMDoKKysJLnNlY3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMK KysuTGZyYW1lMToKKysJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCisrLkxTQ0lFMToKKysJLmxvbmcJ MHgwCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJ6UiIKKysJLnVsZWIxMjggMHgxCisrCS5zbGVi MTI4IC04CisrCS5ieXRlCTB4MTAKKysJLnVsZWIxMjggMHgxCisrCS5ieXRlCTB4MworKwkuYnl0 ZQkweGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDkwCisrCS51 bGViMTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTE6CisrLkxTRkRFMToKKysJLmxvbmcJLkxF RkRFMS0uTEFTRkRFMQorKy5MQVNGREUxOgorKwkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQorKwku bG9uZwkuTEZCMgorKwkubG9uZwkuTEZFMi0uTEZCMgorKwkudWxlYjEyOCAweDAKKysJLmJ5dGUJ MHg0CisrCS5sb25nCS5MQ0ZJMC0uTEZCMgorKwkuYnl0ZQkweGUKKysJLnVsZWIxMjggMHgxMAor KwkuYnl0ZQkweDg2CisrCS51bGViMTI4IDB4MgorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkx LS5MQ0ZJMAorKwkuYnl0ZQkweGQKKysJLnVsZWIxMjggMHg2CisrCS5hbGlnbiA4CisrLkxFRkRF MToKKysJLnRleHQKKysuTGV0ZXh0MDoKKysJLnNlY3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2Jp dHMKKysuTGRlYnVnX2xvYzA6CisrLkxMU1QwOgorKwkucXVhZAkuTEZCMi0uTHRleHQwCisrCS5x dWFkCS5MQ0ZJMC0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3NworKwkuc2xlYjEy OCA4CisrCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCisrCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCisrCS52 YWx1ZQkweDIKKysJLmJ5dGUJMHg3NworKwkuc2xlYjEyOCAxNgorKwkucXVhZAkuTENGSTEtLkx0 ZXh0MAorKwkucXVhZAkuTEZFMi0uTHRleHQwCisrCS52YWx1ZQkweDIKKysJLmJ5dGUJMHg3Ngor Kwkuc2xlYjEyOCAxNgorKwkucXVhZAkweDAKKysJLnF1YWQJMHgwCisrCS5zZWN0aW9uCS5kZWJ1 Z19pbmZvCisrLkxkZWJ1Z19yZWxhdGl2ZToKKysJLmxvbmcJLkxkZWJ1Z19lbmQgLSAuTGRlYnVn X3N0YXJ0CisrLkxkZWJ1Z19zdGFydDoKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2Fi YnJldjAKKysJLmJ5dGUJMHg4CisrCS51bGViMTI4IDB4MQorKwkubG9uZwkuTEFTRjIKKysJLmJ5 dGUJMHgxCisrCS5sb25nCS5MQVNGMworKwkubG9uZwkuTEFTRjQKKysJLnF1YWQJLkx0ZXh0MAor KwkucXVhZAkuTGV0ZXh0MAorKwkubG9uZwkuTGRlYnVnX2xpbmUwCisrCS51bGViMTI4IDB4Mgor KwkuYnl0ZQkweDEKKysJLnN0cmluZwkiZm9vIgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHgxNgor KwkuYnl0ZQkweDEKKysJLnF1YWQJLkxGQjIKKysJLnF1YWQJLkxGRTIKKysJLmxvbmcJLkxMU1Qw CisrCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCisrCS51bGViMTI4IDB4Mwor KwkubG9uZwkuTEFTRjUKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTUKKysJLmxvbmcJLkx0eXBl X2ludCAtIC5MZGVidWdfcmVsYXRpdmUKKysJLmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNs ZWIxMjggLTUyCisrLkx0YWdfcG9pbnRlcjoKKysJLnVsZWIxMjggMHg0CisrCS5ieXRlCTB4OAkv KiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19p bmZvCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjggMHg1CS8qIEFiYnJldiBOdW1iZXI6IDUg KERXX1RBR192YXJpYWJsZSkgKi8KKysJLmxvbmcJLkxBU0YwCisrCS5ieXRlCTB4MQorKwkuYnl0 ZQkweDE4CisrI2lmIDEKKysJLmxvbmcJLkx0YWdfcG9pbnRlciAtIC5kZWJ1Z19pbmZvCisrI2Vs c2UKKysJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5cGVkZWYgaW5kaXJlY3Rpb24uICAq LworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KICsjZW5kaWYKLSsKLSB2 b2lkCi0gZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCi0gewotQEAgLTEzNDUsNiArMTM1 OSwxMCBAQCBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKLSAgIFB5TW9kdWxlX0FkZE9i amVjdCAoZ2RiX21vZHVsZSwgIlZhbHVlIiwgKFB5T2JqZWN0ICopICZ2YWx1ZV9vYmplY3RfdHlw ZSk7Ci0gCi0gICB2YWx1ZXNfaW5fcHl0aG9uID0gTlVMTDsKLSsKKysJLyogRFdfQVRfbG9jYXRp b246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQor Kwkuc2xlYjEyOCAtMzIKICsjaWYgMAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHl0 aG9uX3R5cGVzX21hcmtfdXNlZCk7CisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKyNl bHNlCisrCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCiArI2VuZGlmCi0gfQotIAotIAwKLWRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwotaW5k ZXggNWEwZDc3Ni4uYWYwMWRmZCAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKLSsr KyBiL2dkYi9weXRob24vcHl0aG9uLmMKLUBAIC02NiwxMCArNjYsMTMgQEAgc3RhdGljIGNvbnN0 IGNoYXIgKmdkYnB5X3Nob3VsZF9wcmludF9zdGFjayA9IHB5dGhvbl9leGNwX21lc3NhZ2U7Ci0g I2luY2x1ZGUgImxpbmVzcGVjLmgiCi0gI2luY2x1ZGUgInNvdXJjZS5oIgotICNpbmNsdWRlICJ2 ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0rI2luY2x1ZGUgImdkYnRocmVhZC5o IgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1 ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgImludGVycHMuaCIKLSsjaW5jbHVkZSAiZXZlbnQt dG9wLmgiCi0gCi0gc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsKLSAKLUBAIC05NDYs NiArOTQ5LDUzIEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQotIAotIC8qIFJldHVybiB0aGUg Y3VycmVudCBQcm9nc3BhY2UuCi0gICAgVGhlcmUgYWx3YXlzIGlzIG9uZS4gICovCi0rLyogVHJ1 ZSBpZiAnZ2RiIC1QJyB3YXMgdXNlZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50 IHJ1bm5pbmdfcHl0aG9uX3NjcmlwdDsKLSsKLSsvKiBUcnVlIGlmIHdlIGFyZSBjdXJyZW50bHkg aW4gYSBjYWxsIHRvICdnZGIuY2xpJywgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50 IGluX2NsaTsKLSsKLSsvKiBFbnRlciB0aGUgY29tbWFuZCBsb29wLiAgKi8KLSsKLStzdGF0aWMg UHlPYmplY3QgKgotK2dkYnB5X2NsaSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVz ZWQyKQotK3sKLSsgIGlmICghIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCB8fCBpbl9jbGkpCi0rICAg IHJldHVybiBQeUVycl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImNhbm5vdCBpbnZva2Ug Q0xJIHJlY3Vyc2l2ZWx5Iik7Ci0rCi0rICBpbl9jbGkgPSAxOwotKyAgY2xpX2NvbW1hbmRfbG9v cCAoKTsKLSsgIGluX2NsaSA9IDA7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rLyog U2V0IHVwIHRoZSBQeXRob24gYXJndW1lbnQgdmVjdG9yIGFuZCBldmFsdWF0ZSBhIHNjcmlwdC4g IFRoaXMgaXMKLSsgICB1c2VkIHRvIGltcGxlbWVudCAnZ2RiIC1QJy4gICovCi0rCi0rdm9pZAot K3J1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgRklMRSAq aW5wdXQ7Ci0rCi0rICAvKiBXZSBuZXZlciBmcmVlIHRoaXMsIHNpbmNlIHdlIHBsYW4gdG8gZXhp dCBhdCB0aGUgZW5kLiAgKi8KLSsgIGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNo ICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKLSsKLSsgIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCA9IDE7 Ci0rICBQeVN5c19TZXRBcmd2IChhcmdjIC0gMSwgYXJndiArIDEpOwotKyAgaW5wdXQgPSBmb3Bl biAoYXJndlswXSwgInIiKTsKLSsgIGlmICghIGlucHV0KQotKyAgICB7Ci0rICAgICAgZnByaW50 ZiAoc3RkZXJyLCAiY291bGQgbm90IG9wZW4gJXM6ICVzXG4iLCBhcmd2WzBdLCBzdHJlcnJvciAo ZXJybm8pKTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAgfQotKyAgUHlSdW5fU2ltcGxlRmlsZSAo aW5wdXQsIGFyZ3ZbMF0pOwotKyAgZmNsb3NlIChpbnB1dCk7Ci0rICBleGl0ICgwKTsKLSt9Ci0r Ci0rDAotKwotIAotIHN0YXRpYyBQeU9iamVjdCAqCi0gZ2RicHlfZ2V0X2N1cnJlbnRfcHJvZ3Nw YWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCi1AQCAtMTM4Niw2ICsx NDM2LDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXSA9Ci0gICAgICJHZXQgYSB2 YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCi0gICB7ICJleGVjdXRlIiwgKFB5Q0Z1bmN0aW9uKSBleGVj dXRlX2dkYl9jb21tYW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAotICAgICAiRXhl Y3V0ZSBhIGdkYiBjb21tYW5kIiB9LAotKyAgeyAiY2xpIiwgZ2RicHlfY2xpLCBNRVRIX05PQVJH UywKLSsgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAotICAgeyAicGFyYW1ldGVyIiwgZ2RicHlf cGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCi0gICAgICJSZXR1cm4gYSBnZGIgcGFyYW1ldGVyJ3Mg dmFsdWUiIH0sCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRo b24vcHl0aG9uLmgKLWluZGV4IDllNDYxZjcuLjU3YjIxZGEgMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0 aG9uL3B5dGhvbi5oCi0rKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1AQCAtMzIsNiArMzIsOCBA QCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9s aW5lICopOwotIAotIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUp OwotIAotK3ZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7Ci0r Ci0gaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLAotIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVf QUREUiBhZGRyZXNzLAotIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1 cnNlLAotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYwotaW5kZXggZjM0 ODUzNi4uZTIwZjZiZiAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUuYwotKysrIGIvZ2RiL3JlbW90 ZS5jCi1AQCAtOTk0OCw3ICs5OTQ4LDcgQEAgcmVtb3RlX2Rvd25sb2FkX3RyYWNlcG9pbnQgKHN0 cnVjdCBicF9sb2NhdGlvbiAqbG9jKQotICAgY2hhciAqKnN0ZXBwaW5nX2FjdGlvbnM7Ci0gICBp bnQgbmR4OwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IE5VTEw7Ci0tICBzdHJ1Y3Qg YWdlbnRfZXhwciAqYWV4cHI7Ci0rICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIgPSBOVUxMOwot ICAgc3RydWN0IGNsZWFudXAgKmFleHByX2NoYWluID0gTlVMTDsKLSAgIGNoYXIgKnBrdDsKLSAg IHN0cnVjdCBicmVha3BvaW50ICpiID0gbG9jLT5vd25lcjsKLWRpZmYgLS1naXQgYS9nZGIvczM5 MC1uYXQuYyBiL2dkYi9zMzkwLW5hdC5jCi1pbmRleCAyNzU1ZTU4Li44ZGYzZmQxIDEwMDY0NAot LS0tIGEvZ2RiL3MzOTAtbmF0LmMKLSsrKyBiL2dkYi9zMzkwLW5hdC5jCi1AQCAtNTE1LDYgKzUx NSwxNyBAQCBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKHN0cnVjdCBsd3BfaW5mbyAqbHApCi0gICAg IHBlcnJvcl93aXRoX25hbWUgKF8oIkNvdWxkbid0IG1vZGlmeSB3YXRjaHBvaW50IHN0YXR1cyIp KTsKLSB9Ci0gCi0rLyogQ2FsbGJhY2sgZm9yIGl0ZXJhdGVfb3Zlcl9sd3BzLCB0byBjYWxsIHMz OTBfZml4X3dhdGNoX3BvaW50cy4gICovCi0rCi0rc3RhdGljIGludAotK3MzOTBfZml4X3dhdGNo X3BvaW50c19pdGVyYXRlIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICphcmcpCi0rewotKyAg czM5MF9maXhfd2F0Y2hfcG9pbnRzIChscCk7Ci0rCi0rICAvKiBDb250aW51ZSB0aGUgdHJhdmVy c2FsLiAgKi8KLSsgIHJldHVybiAwOwotK30KLSsKLSBzdGF0aWMgaW50Ci0gczM5MF9pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotIAkJCXN0cnVj dCBleHByZXNzaW9uICpjb25kKQotQEAgLTUzMSw4ICs1NDIsOCBAQCBzMzkwX2luc2VydF93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0gICBhcmVhLT5uZXh0 ID0gd2F0Y2hfYmFzZTsKLSAgIHdhdGNoX2Jhc2UgPSBhcmVhOwotIAotLSAgQUxMX0xXUFMgKGxw KQotLSAgICBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKGxwKTsKLSsgIGl0ZXJhdGVfb3Zlcl9sd3Bz IChtaW51c19vbmVfcHRpZCwgczM5MF9maXhfd2F0Y2hfcG9pbnRzX2l0ZXJhdGUsIE5VTEwpOwot KwotICAgcmV0dXJuIDA7Ci0gfQotIAotQEAgLTU1OSw4ICs1NzAsOCBAQCBzMzkwX3JlbW92ZV93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0gICAqcGFyZWEg PSBhcmVhLT5uZXh0OwotICAgeGZyZWUgKGFyZWEpOwotIAotLSAgQUxMX0xXUFMgKGxwKQotLSAg ICBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKGxwKTsKLSsgIGl0ZXJhdGVfb3Zlcl9sd3BzIChtaW51 c19vbmVfcHRpZCwgczM5MF9maXhfd2F0Y2hfcG9pbnRzX2l0ZXJhdGUsIE5VTEwpOwotKwotICAg cmV0dXJuIDA7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zMzkwLXRkZXAuYyBiL2dkYi9zMzkw LXRkZXAuYwotaW5kZXggYWMwYzUyNi4uZGQwZTQ3NyAxMDA2NDQKLS0tLSBhL2dkYi9zMzkwLXRk ZXAuYwotKysrIGIvZ2RiL3MzOTAtdGRlcC5jCi1AQCAtNTUsNiArNTUsMTIgQEAKLSAjaW5jbHVk ZSAiZmVhdHVyZXMvczM5MHgtbGludXg2NHYxLmMiCi0gI2luY2x1ZGUgImZlYXR1cmVzL3MzOTB4 LWxpbnV4NjR2Mi5jIgotIAotKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCi0rI2luY2x1ZGUgImF4 LmgiCi0rI2luY2x1ZGUgImF4LWdkYi5oIgotKyNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSsjaW5j bHVkZSAiY2xpL2NsaS11dGlscy5oIgotKyNpbmNsdWRlIDxjdHlwZS5oPgotIAotIC8qIFRoZSB0 ZGVwIHN0cnVjdHVyZS4gICovCi0gCi1AQCAtMjk1Myw2ICsyOTU5LDE1IEBAIHMzOTBfYWRkcmVz c19jbGFzc19uYW1lX3RvX3R5cGVfZmxhZ3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAg ICByZXR1cm4gMDsKLSB9Ci0gCi0rc3RhdGljIGludAotK3MzOTBfc3RhcF9pc19zaW5nbGVfb3Bl cmFuZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0 dXJuICgoaXNkaWdpdCAoKnMpICYmIHNbMV0gPT0gJygnICYmIHNbMl0gPT0gJyUnKSAvKiBEaXNw bGFjZW1lbnQKLSsJCQkJCQkJICBvciBpbmRpcmVjdGlvbi4gICovCi0rCSAgfHwgKnMgPT0gJyUn IC8qIFJlZ2lzdGVyIGFjY2Vzcy4gICovCi0rCSAgfHwgaXNkaWdpdCAoKnMpKTsgLyogTGl0ZXJh bCBudW1iZXIuICAqLwotK30KLSsKLSAvKiBTZXQgdXAgZ2RiYXJjaCBzdHJ1Y3QuICAqLwotIAot IHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCi1AQCAtMzI4Myw2ICszMjk4LDEyIEBAIHMzOTBfZ2Ri YXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3Qg KmFyY2hlcykKLSAKLSAgIHNldF9nZGJhcmNoX2dldF9zaWdpbmZvX3R5cGUgKGdkYmFyY2gsIGxp bnV4X2dldF9zaWdpbmZvX3R5cGUpOwotIAotKyAgLyogU3lzdGVtVGFwIGZ1bmN0aW9ucy4gICov Ci0rICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgIiUiKTsKLSsg IHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoLCAi KCIpOwotKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAoZ2Ri YXJjaCwgIikiKTsKLSsgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKGdkYmFy Y2gsIHMzOTBfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7Ci0rCi0gICByZXR1cm4gZ2RiYXJjaDsK LSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbXJlYWQuYyBiL2dkYi9zb21yZWFkLmMKLWluZGV4 IGU2MjFjYmEuLjE5YTE1ZTIgMTAwNjQ0Ci0tLS0gYS9nZGIvc29tcmVhZC5jCi0rKysgYi9nZGIv c29tcmVhZC5jCi1AQCAtNDI3LDYgKzQyNyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2Zu cyBzb21fc3ltX2ZucyA9Ci0gICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8qIEdldCBzZWdt ZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KLSAgIE5VTEwsCi0gICBkZWZhdWx0X3N5 bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCi0rICBOVUxM LAkJCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLwotICAgJnBzeW1fZnVuY3Rpb25zCi0gfTsKLSAKLWRp ZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5jCi1pbmRleCBiMTViNWZjLi5iMmRh ZDI5IDEwMDY0NAotLS0tIGEvZ2RiL3N0YWNrLmMKLSsrKyBiL2dkYi9zdGFjay5jCi1AQCAtNTA5 LDYgKzUwOSwxMCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0gICBzdGIgPSB1aV9vdXRfc3RyZWFtX25ldyAodWlvdXQp OwotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX291dF9zdHJlYW1fZGVsZXRlIChzdGIp OwotIAotKyAgLyogRnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBF X0RZTkFNSUMuICAqLwotKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7 Ci0rICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKLSsKLSAgIGlmIChmdW5jKQotICAgICB7Ci0gICAg ICAgc3RydWN0IGJsb2NrICpiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKLWRpZmYgLS1n aXQgYS9nZGIvc3RhcC1wcm9iZS5jIGIvZ2RiL3N0YXAtcHJvYmUuYwotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLjEyMzUzMGYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9z dGFwLXByb2JlLmMKLUBAIC0wLDAgKzEsMTY3MiBAQAotKy8qIFN5c3RlbVRhcCBwcm9iZSBzdXBw b3J0IGZvciBHREIuCi0rCi0rICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2luY2x1ZGUgImRlZnMu aCIKLSsjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgotKyNpbmNsdWRlICJ2ZWMuaCIKLSsjaW5jbHVk ZSAidWktb3V0LmgiCi0rI2luY2x1ZGUgImdkYl9yZWdleC5oIgotKyNpbmNsdWRlICJvYmpmaWxl cy5oIgotKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0rI2luY2x1ZGUgImNvbW1hbmQuaCIKLSsj aW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImZpbGVuYW1lcy5oIgotKyNpbmNsdWRlICJ2 YWx1ZS5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImF4LmgiCi0rI2lu Y2x1ZGUgImF4LWdkYi5oIgotKyNpbmNsdWRlICJjb21wbGFpbnRzLmgiCi0rI2luY2x1ZGUgImNs aS9jbGktdXRpbHMuaCIKLSsjaW5jbHVkZSAibGluZXNwZWMuaCIKLSsjaW5jbHVkZSAidXNlci1y ZWdzLmgiCi0rI2luY2x1ZGUgInBhcnNlci1kZWZzLmgiCi0rI2luY2x1ZGUgImxhbmd1YWdlLmgi Ci0rCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rCi0rLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIGFy Z3VtZW50cyB0aGF0IGEgcHJvYmUgY2FuIGhhdmUsCi0rICAgYXMgZGVmaW5lZCBpbiA8c3lzL3Nk dC5oPi4gICovCi0rCi0rI2RlZmluZSBTVEFQX01BWF9BUkdTIDEyCi0rCi0rLyogU2hvdWxkIHdl IGRpc3BsYXkgZGVidWcgaW5mb3JtYXRpb24gZm9yIHRoZSBwcm9iZSdzIGFyZ3VtZW50IGV4cHJl c3Npb24KLSsgICBwYXJzaW5nPyAgKi8KLSsKLStzdGF0aWMgaW50IHN0YXBfZXhwcmVzc2lvbl9k ZWJ1ZyA9IDA7Ci0rCi0rLyogVGhlIHZhcmlvdXMgcG9zc2liaWxpdGllcyBvZiBiaXRuZXNzIGRl ZmluZWQgZm9yIGEgcHJvYmUncyBhcmd1bWVudC4KLSsKLSsgICBUaGUgcmVsYXRpb25zaGlwIGlz OgotKwotKyAgIC0gU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQ6ICBUaGUgdXNlciBoYXNuJ3Qg c3BlY2lmaWVkIHRoZSBiaXRuZXNzLgotKyAgIC0gU1RBUF9BUkdfQklUTkVTU18zMkJJVF9VTlNJ R05FRDogIGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBgNEAnLgotKyAgIC0gU1RBUF9BUkdf QklUTkVTU18zMkJJVF9TSUdORUQ6ICBhcmd1bWVudCBzdHJpbmcgc3RhcnRzIHdpdGggYC00QCcu Ci0rICAgLSBTVEFQX0FSR19CSVRORVNTXzY0QklUX1VOU0lHTkVEOiAgYXJndW1lbnQgc3RyaW5n IHN0YXJ0cyB3aXRoIGA4QCcuCi0rICAgLSBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJR05FRDog IGFyZ3VtZW50IHN0cmluZyBzdGFydHMgd2l0aCBgLThAJy4gICovCi0rCi0rZW51bSBzdGFwX2Fy Z19iaXRuZXNzCi0rewotKyAgU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQsCi0rICBTVEFQX0FS R19CSVRORVNTXzMyQklUX1VOU0lHTkVELAotKyAgU1RBUF9BUkdfQklUTkVTU18zMkJJVF9TSUdO RUQsCi0rICBTVEFQX0FSR19CSVRORVNTXzY0QklUX1VOU0lHTkVELAotKyAgU1RBUF9BUkdfQklU TkVTU182NEJJVF9TSUdORUQsCi0rfTsKLSsKLSsvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSBy ZXByZXNlbnRzIGEgc2luZ2xlIGFyZ3VtZW50IGZvciB0aGUgcHJvYmUuICAqLwotKwotK3N0cnVj dCBzdGFwX3Byb2JlX2FyZwotK3sKLSsgIC8qIFRoZSBiaXRuZXNzIG9mIHRoaXMgYXJndW1lbnQu ICAqLwotKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJpdG5lc3M7Ci0rCi0rICAvKiBUaGUgY29y cmVzcG9uZGluZyBgc3RydWN0IHR5cGUgKicgdG8gdGhlIGJpdG5lc3MuICAqLwotKyAgc3RydWN0 IHR5cGUgKmF0eXBlOwotKwotKyAgLyogVGhlIGFyZ3VtZW50IGNvbnZlcnRlZCB0byBhbiBpbnRl cm5hbCBHREIgZXhwcmVzc2lvbi4gICovCi0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYWV4cHI7Ci0r fTsKLSsKLSsvKiBTdHJ1Y3R1cmUgdGhhdCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhbGwgYXJn dW1lbnRzIG9mIGEgcHJvYmUuICAqLwotKwotK3N0cnVjdCBzdGFwX2FyZ3NfaW5mbwotK3sKLSsg IC8qIFRoZSBudW1iZXIgb2YgdmFsaWQgcGFyc2VkIGFyZ3VtZW50cy4gICovCi0rICBpbnQgbl9h cmdzOwotKwotKyAgLyogVGhlIHByb2JlIHRvIHdoaWNoIHRoZXNlIGFyZ3VtZW50cyBiZWxvbmcu ICAqLwotKyAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwotKwotKyAgLyogSW5mb3JtYXRpb24g YWJvdXQgZWFjaCBhcmd1bWVudC4gIFRoaXMgaXMgYW4gYXJyYXkgb2YgYHN0YXBfcHJvYmVfYXJn JywKLSsgICAgIHdpdGggZWFjaCBlbnRyeSByZXByZXNlbnRpbmcgb25lIGFyZ3VtZW50LiAgKi8K LSsgIHN0cnVjdCBzdGFwX3Byb2JlX2FyZyAqYXJnczsKLSt9OwotKwotKy8qIFdoZW4gcGFyc2lu ZyB0aGUgYXJndW1lbnRzLCB3ZSBoYXZlIHRvIGVzdGFibGlzaCBkaWZmZXJlbnQgcHJlY2VkZW5j ZXMKLSsgICBmb3IgdGhlIHZhcmlvdXMga2luZHMgb2YgYXNtIG9wZXJhdG9ycy4gIFRoaXMgZW51 bWVyYXRpb24gcmVwcmVzZW50cyB0aG9zZQotKyAgIHByZWNlZGVuY2VzLgotKwotKyAgIFRoaXMg bG9naWMgYmVoaW5kIHRoaXMgaXMgYXZhaWxhYmxlIGF0Ci0rICAgPGh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9iaW51dGlscy9kb2NzL2FzL0luZml4LU9wcy5odG1sI0luZml4LU9wcz4sIG9yIHVzaW5n Ci0rICAgdGhlIGNvbW1hbmQgImluZm8gJyhhcylJbmZpeCBPcHMnIi4gICovCi0rCi0rZW51bSBz dGFwX29wZXJhbmRfcHJlYwotK3sKLSsgIC8qIExvd2VzdCBwcmVjZWRlbmNlLCB1c2VkIGZvciBu b24tcmVjb2duaXplZCBvcGVyYW5kcyBvciBmb3IgdGhlIGJlZ2lubmluZwotKyAgICAgb2YgdGhl IHBhcnNpbmcgcHJvY2Vzcy4gICovCi0rICBTVEFQX09QRVJBTkRfUFJFQ19OT05FID0gMCwKLSsK LSsgIC8qIFByZWNlZGVuY2Ugb2YgbG9naWNhbCBPUi4gICovCi0rICBTVEFQX09QRVJBTkRfUFJF Q19MT0dJQ0FMX09SLAotKwotKyAgLyogUHJlY2VkZW5jZSBvZiBsb2dpY2FsIEFORC4gICovCi0r ICBTVEFQX09QRVJBTkRfUFJFQ19MT0dJQ0FMX0FORCwKLSsKLSsgIC8qIFByZWNlZGVuY2Ugb2Yg YWRkaXRpdmUgKHBsdXMsIG1pbnVzKSBhbmQgY29tcGFyYXRpdmUgKGVxdWFsLCBsZXNzLAotKyAg ICAgZ3JlYXRlci10aGFuLCBldGMpIG9wZXJhbmRzLiAgKi8KLSsgIFNUQVBfT1BFUkFORF9QUkVD X0FERF9DTVAsCi0rCi0rICAvKiBQcmVjZWRlbmNlIG9mIGJpdHdpc2Ugb3BlcmFuZHMgKGJpdHdp c2UgT1IsIFhPUiwgYml0d2lzZSBBTkQsCi0rICAgICBsb2dpY2FsIE5PVCkuICAqLwotKyAgU1RB UF9PUEVSQU5EX1BSRUNfQklUV0lTRSwKLSsKLSsgIC8qIFByZWNlZGVuY2Ugb2YgbXVsdGlwbGlj YXRpdmUgb3BlcmFuZHMgKG11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwKLSsgICAgIHJlbWFpbmRl ciwgbGVmdCBzaGlmdCBhbmQgcmlnaHQgc2hpZnQpLiAgKi8KLSsgIFNUQVBfT1BFUkFORF9QUkVD X01VTAotK307Ci0rCi0rLyogVGhpcyBkdW1teSB2YXJpYWJsZSBpcyB1c2VkIHdoZW4gcGFyc2lu ZyBhIHByb2JlJ3MgYXJndW1lbnQgZmFpbHMuCi0rICAgSW4gdGhpcyBjYXNlLCB0aGUgbnVtYmVy IG9mIGFyZ3VtZW50cyBmb3IgdGhpcyBwcm9iZSBpcyB6ZXJvLCBzbyB0aGF0J3MKLSsgICB3aHkg dGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3Qgc3RhcF9hcmdz X2luZm8gZHVtbXlfc3RhcF9hcmdzX2luZm8gPQotKyAgeyAwLCBOVUxMLCBOVUxMIH07Ci0rCi0r c3RhdGljIHZvaWQgc3RhcF9wYXJzZV9hcmd1bWVudF8xIChzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZv ICpwLCBpbnQgaGFzX2xocywKLSsJCQkJICAgZW51bSBzdGFwX29wZXJhbmRfcHJlYyBwcmVjKTsK LSsKLStzdGF0aWMgdm9pZCBzdGFwX3BhcnNlX2FyZ3VtZW50X2NvbmRpdGlvbmFsbHkgKHN0cnVj dCBzdGFwX3BhcnNlX2luZm8gKnApOwotKwotKy8qIFJldHVybnMgMSBpZiAqUyBpcyBhbiBvcGVy YXRvciwgemVybyBvdGhlcndpc2UuICAqLwotKwotK3N0YXRpYyBpbnQgc3RhcF9pc19vcGVyYXRv ciAoY2hhciBvcCk7Ci0rCi0rc3RhdGljIHZvaWQKLStzaG93X3N0YXBleHByZXNzaW9uZGVidWcg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJl ZCAoZmlsZSwgXygiU3lzdGVtVGFwIFByb2JlIGV4cHJlc3Npb24gZGVidWdnaW5nIGlzICVzLlxu IiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSsvKiBSZXR1cm5zIHRoZSBvcGVyYXRvciBwcmVj ZWRlbmNlIGxldmVsIG9mIE9QLCBvciBTVEFQX09QRVJBTkRfUFJFQ19OT05FCi0rICAgaWYgdGhl IG9wZXJhdG9yIGNvZGUgd2FzIG5vdCByZWNvZ25pemVkLiAgKi8KLSsKLStzdGF0aWMgZW51bSBz dGFwX29wZXJhbmRfcHJlYwotK3N0YXBfZ2V0X29wZXJhdG9yX3ByZWMgKGVudW0gZXhwX29wY29k ZSBvcCkKLSt7Ci0rICBzd2l0Y2ggKG9wKQotKyAgICB7Ci0rICAgIGNhc2UgQklOT1BfTE9HSUNB TF9PUjoKLSsgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfTE9HSUNBTF9PUjsKLSsKLSsg ICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLSsgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BS RUNfTE9HSUNBTF9BTkQ7Ci0rCi0rICAgIGNhc2UgQklOT1BfQUREOgotKyAgICBjYXNlIEJJTk9Q X1NVQjoKLSsgICAgY2FzZSBCSU5PUF9FUVVBTDoKLSsgICAgY2FzZSBCSU5PUF9OT1RFUVVBTDoK LSsgICAgY2FzZSBCSU5PUF9MRVNTOgotKyAgICBjYXNlIEJJTk9QX0xFUToKLSsgICAgY2FzZSBC SU5PUF9HVFI6Ci0rICAgIGNhc2UgQklOT1BfR0VROgotKyAgICAgIHJldHVybiBTVEFQX09QRVJB TkRfUFJFQ19BRERfQ01QOwotKwotKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfSU9SOgotKyAgICBj YXNlIEJJTk9QX0JJVFdJU0VfQU5EOgotKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgotKyAg ICBjYXNlIFVOT1BfTE9HSUNBTF9OT1Q6Ci0rICAgICAgcmV0dXJuIFNUQVBfT1BFUkFORF9QUkVD X0JJVFdJU0U7Ci0rCi0rICAgIGNhc2UgQklOT1BfTVVMOgotKyAgICBjYXNlIEJJTk9QX0RJVjoK LSsgICAgY2FzZSBCSU5PUF9SRU06Ci0rICAgIGNhc2UgQklOT1BfTFNIOgotKyAgICBjYXNlIEJJ Tk9QX1JTSDoKLSsgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfTVVMOwotKwotKyAgICBk ZWZhdWx0OgotKyAgICAgIHJldHVybiBTVEFQX09QRVJBTkRfUFJFQ19OT05FOwotKyAgICB9Ci0r fQotKwotKy8qIEdpdmVuIFMsIHJlYWQgdGhlIG9wZXJhdG9yIGluIGl0IGFuZCBmaWxscyB0aGUg T1AgcG9pbnRlciB3aXRoIGl0cyBjb2RlLgotKyAgIFJldHVybiAxIG9uIHN1Y2Nlc3MsIHplcm8g aWYgdGhlIG9wZXJhdG9yIHdhcyBub3QgcmVjb2duaXplZC4gICovCi0rCi0rc3RhdGljIGludAot K3N0YXBfZ2V0X29wY29kZSAoY29uc3QgY2hhciAqKnMsIGVudW0gZXhwX29wY29kZSAqb3ApCi0r ewotKyAgY29uc3QgY2hhciBjID0gKipzOwotKyAgaW50IHJldCA9IDE7Ci0rCi0rICAqcyArPSAx OwotKwotKyAgc3dpdGNoIChjKQotKyAgICB7Ci0rICAgIGNhc2UgJyonOgotKyAgICAgICpvcCA9 IEJJTk9QX01VTDsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLyc6Ci0rICAgICAgKm9w ID0gQklOT1BfRElWOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICclJzoKLSsgICAgICAq b3AgPSBCSU5PUF9SRU07Ci0rICAgIGJyZWFrOwotKwotKyAgICBjYXNlICc8JzoKLSsgICAgICAq b3AgPSBCSU5PUF9MRVNTOwotKyAgICAgIGlmICgqKnMgPT0gJzwnKQotKwl7Ci0rCSAgKnMgKz0g MTsKLSsJICAqb3AgPSBCSU5PUF9MU0g7Ci0rCX0KLSsgICAgICBlbHNlIGlmICgqKnMgPT0gJz0n KQotKwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9MRVE7Ci0rCX0KLSsgICAgICBl bHNlIGlmICgqKnMgPT0gJz4nKQotKwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9O T1RFUVVBTDsKLSsJfQotKyAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPic6Ci0rICAgICAgKm9w ID0gQklOT1BfR1RSOwotKyAgICAgIGlmICgqKnMgPT0gJz4nKQotKwl7Ci0rCSAgKnMgKz0gMTsK LSsJICAqb3AgPSBCSU5PUF9SU0g7Ci0rCX0KLSsgICAgICBlbHNlIGlmICgqKnMgPT0gJz0nKQot Kwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9HRVE7Ci0rCX0KLSsgICAgYnJlYWs7 Ci0rCi0rICAgIGNhc2UgJ3wnOgotKyAgICAgICpvcCA9IEJJTk9QX0JJVFdJU0VfSU9SOwotKyAg ICAgIGlmICgqKnMgPT0gJ3wnKQotKwl7Ci0rCSAgKnMgKz0gMTsKLSsJICAqb3AgPSBCSU5PUF9M T0dJQ0FMX09SOwotKwl9Ci0rICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcmJzoKLSsgICAgICAq b3AgPSBCSU5PUF9CSVRXSVNFX0FORDsKLSsgICAgICBpZiAoKipzID09ICcmJykKLSsJewotKwkg ICpzICs9IDE7Ci0rCSAgKm9wID0gQklOT1BfTE9HSUNBTF9BTkQ7Ci0rCX0KLSsgICAgYnJlYWs7 Ci0rCi0rICAgIGNhc2UgJ14nOgotKyAgICAgICpvcCA9IEJJTk9QX0JJVFdJU0VfWE9SOwotKyAg ICAgIGJyZWFrOwotKwotKyAgICBjYXNlICchJzoKLSsgICAgICAqb3AgPSBVTk9QX0xPR0lDQUxf Tk9UOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICcrJzoKLSsgICAgICAqb3AgPSBCSU5P UF9BREQ7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJy0nOgotKyAgICAgICpvcCA9IEJJ Tk9QX1NVQjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPSc6Ci0rICAgICAgaWYgKCoq cyAhPSAnPScpCi0rCXsKLSsJICByZXQgPSAwOwotKwkgIGJyZWFrOwotKwl9Ci0rICAgICAgKm9w ID0gQklOT1BfRVFVQUw7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAg LyogV2UgZGlkbid0IGZpbmQgYW55IG9wZXJhdG9yLiAgKi8KLSsgICAgICAqcyAtPSAxOwotKyAg ICAgIHJldHVybiAwOwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiBHaXZl biB0aGUgYml0bmVzcyBvZiB0aGUgYXJndW1lbnQsIHJlcHJlc2VudGVkIGJ5IEIsIHJldHVybiB0 aGUKLSsgICBjb3JyZXNwb25kaW5nIGBzdHJ1Y3QgdHlwZSAqJy4gICovCi0rCi0rc3RhdGljIHN0 cnVjdCB0eXBlICoKLStzdGFwX2dldF9leHBlY3RlZF9hcmd1bWVudF90eXBlIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKLSsJCQkJIGVudW0gc3RhcF9hcmdfYml0bmVzcyBiKQotK3sKLSsgIHN3 aXRjaCAoYikKLSsgICAgewotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfVU5ERUZJTkVEOgot KyAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSA9PSAzMikKLSsJcmV0dXJuIGJ1 aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDMyOwotKyAgICAgIGVsc2UKLSsJcmV0 dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OwotKwotKyAgICBjYXNl IFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfU0lHTkVEOgotKyAgICAgIHJldHVybiBidWlsdGluX3R5 cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDMyOwotKwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5F U1NfMzJCSVRfVU5TSUdORUQ6Ci0rICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCkt PmJ1aWx0aW5fdWludDMyOwotKwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfU0lH TkVEOgotKyAgICAgIHJldHVybiBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDY0 OwotKwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ6Ci0rICAgICAg cmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OwotKwotKyAgICBk ZWZhdWx0OgotKyAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkg ICAgICBfKCJVbmRlZmluZWQgYml0bmVzcyBmb3IgcHJvYmUuIikpOwotKyAgICAgIGJyZWFrOwot KyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9wYXJzZV9yZWdpc3Rlcl9vcGVyYW5k IChzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQotK3sKLSsgIC8qIFNpbXBsZSBmbGFnIHRvIGlu ZGljYXRlIHdoZXRoZXIgd2UgaGF2ZSBzZWVuIGEgbWludXMgc2lnbmFsIGJlZm9yZQotKyAgICAg Y2VydGFpbiBudW1iZXIuICAqLwotKyAgaW50IGdvdF9taW51cyA9IDA7Ci0rICAvKiBGbGFncyB0 byBpbmRpY2F0ZSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgYWNjZXNzIGlzIGJlaW5nIGRpc3BsYWNl ZCBhbmQvb3IKLSsgICAgIGluZGlyZWN0ZWQuICAqLwotKyAgaW50IGRpc3BfcCA9IDAsIGluZGly ZWN0X3AgPSAwOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBwLT5nZGJhcmNoOwotKyAg LyogTmVlZGVkIHRvIGdlbmVyYXRlIHRoZSByZWdpc3RlciBuYW1lIGFzIGEgcGFydCBvZiBhbiBl eHByZXNzaW9uLiAgKi8KLSsgIHN0cnVjdCBzdG9rZW4gc3RyOwotKyAgLyogVmFyaWFibGVzIHVz ZWQgdG8gZXh0cmFjdCB0aGUgcmVnaXN0ZXIgbmFtZSBmcm9tIHRoZSBwcm9iZSdzCi0rICAgICBh cmd1bWVudC4gICovCi0rICBjb25zdCBjaGFyICpzdGFydDsKLSsgIGNoYXIgKnJlZ25hbWU7Ci0r ICBpbnQgbGVuOwotKwotKyAgLyogUHJlZml4ZXMgZm9yIHRoZSBwYXJzZXIuICAqLwotKyAgY29u c3QgY2hhciAqcmVnX3ByZWZpeCA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKGdkYmFy Y2gpOwotKyAgY29uc3QgY2hhciAqcmVnX2luZF9wcmVmaXgKLSsgICAgPSBnZGJhcmNoX3N0YXBf cmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoKTsKLSsgIGNvbnN0IGNoYXIgKmdk Yl9yZWdfcHJlZml4ID0gZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXggKGdkYmFyY2gp OwotKyAgaW50IHJlZ19wcmVmaXhfbGVuID0gcmVnX3ByZWZpeCA/IHN0cmxlbiAocmVnX3ByZWZp eCkgOiAwOwotKyAgaW50IHJlZ19pbmRfcHJlZml4X2xlbiA9IHJlZ19pbmRfcHJlZml4ID8gc3Ry bGVuIChyZWdfaW5kX3ByZWZpeCkgOiAwOwotKyAgaW50IGdkYl9yZWdfcHJlZml4X2xlbiA9IGdk Yl9yZWdfcHJlZml4ID8gc3RybGVuIChnZGJfcmVnX3ByZWZpeCkgOiAwOwotKwotKyAgLyogU3Vm aXhlcyBmb3IgdGhlIHBhcnNlci4gICovCi0rICBjb25zdCBjaGFyICpyZWdfc3VmaXggPSBnZGJh cmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKGdkYmFyY2gpOwotKyAgY29uc3QgY2hhciAqcmVnX2lu ZF9zdWZpeAotKyAgICA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAo Z2RiYXJjaCk7Ci0rICBjb25zdCBjaGFyICpnZGJfcmVnX3N1Zml4ID0gZ2RiYXJjaF9zdGFwX2dk Yl9yZWdpc3Rlcl9zdWZpeCAoZ2RiYXJjaCk7Ci0rICBpbnQgcmVnX3N1Zml4X2xlbiA9IHJlZ19z dWZpeCA/IHN0cmxlbiAocmVnX3N1Zml4KSA6IDA7Ci0rICBpbnQgcmVnX2luZF9zdWZpeF9sZW4g PSByZWdfaW5kX3N1Zml4ID8gc3RybGVuIChyZWdfaW5kX3N1Zml4KSA6IDA7Ci0rICBpbnQgZ2Ri X3JlZ19zdWZpeF9sZW4gPSBnZGJfcmVnX3N1Zml4ID8gc3RybGVuIChnZGJfcmVnX3N1Zml4KSA6 IDA7Ci0rCi0rICAvKiBDaGVja2luZyBmb3IgYSBkaXNwbGFjZW1lbnQgYXJndW1lbnQuICAqLwot KyAgaWYgKCpwLT5hcmcgPT0gJysnKQotKyAgICAvKiBJZiBpdCdzIGEgcGx1cyBzaWduLCB3ZSBk b24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLCBqdXN0IGFkdmFuY2UgdGhlCi0rICAgICAgIHBvaW50 ZXIuICAqLwotKyAgICArK3AtPmFyZzsKLSsKLSsgIGlmICgqcC0+YXJnID09ICctJykKLSsgICAg ewotKyAgICAgIGdvdF9taW51cyA9IDE7Ci0rICAgICAgKytwLT5hcmc7Ci0rICAgIH0KLSsKLSsg IGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkKLSsgICAgewotKyAgICAgIC8qIFRoZSB2YWx1ZSBvZiB0 aGUgZGlzcGxhY2VtZW50LiAgKi8KLSsgICAgICBsb25nIGRpc3BsYWNlbWVudDsKLSsKLSsgICAg ICBkaXNwX3AgPSAxOwotKyAgICAgIGRpc3BsYWNlbWVudCA9IHN0cnRvbCAocC0+YXJnLCAoY2hh ciAqKikgJnAtPmFyZywgMTApOwotKwotKyAgICAgIC8qIEdlbmVyYXRpbmcgdGhlIGV4cHJlc3Np b24gZm9yIHRoZSBkaXNwbGFjZW1lbnQuICAqLwotKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChPUF9MT05HKTsKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKGJ1aWx0aW5fdHlwZSAoZ2Ri YXJjaCktPmJ1aWx0aW5fbG9uZyk7Ci0rICAgICAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChkaXNw bGFjZW1lbnQpOwotKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsgICAg ICBpZiAoZ290X21pbnVzKQotKwl3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9ORUcpOwotKyAg ICB9Ci0rCi0rICAvKiBHZXR0aW5nIHJpZCBvZiByZWdpc3RlciBpbmRpcmVjdGlvbiBwcmVmaXgu ICAqLwotKyAgaWYgKHJlZ19pbmRfcHJlZml4Ci0rICAgICAgJiYgc3RybmNtcCAocC0+YXJnLCBy ZWdfaW5kX3ByZWZpeCwgcmVnX2luZF9wcmVmaXhfbGVuKSA9PSAwKQotKyAgICB7Ci0rICAgICAg aW5kaXJlY3RfcCA9IDE7Ci0rICAgICAgcC0+YXJnICs9IHJlZ19pbmRfcHJlZml4X2xlbjsKLSsg ICAgfQotKwotKyAgaWYgKGRpc3BfcCAmJiAhaW5kaXJlY3RfcCkKLSsgICAgZXJyb3IgKF8oIklu dmFsaWQgcmVnaXN0ZXIgZGlzcGxhY2VtZW50IHN5bnRheCBvbiBleHByZXNzaW9uIGAlcycuIiks Ci0rCSAgIHAtPnNhdmVkX2FyZyk7Ci0rCi0rICAvKiBHZXR0aW5nIHJpZCBvZiByZWdpc3RlciBw cmVmaXguICAqLwotKyAgaWYgKHJlZ19wcmVmaXggJiYgc3RybmNtcCAocC0+YXJnLCByZWdfcHJl Zml4LCByZWdfcHJlZml4X2xlbikgPT0gMCkKLSsgICAgcC0+YXJnICs9IHJlZ19wcmVmaXhfbGVu OwotKwotKyAgLyogTm93IHdlIHNob3VsZCBoYXZlIG9ubHkgdGhlIHJlZ2lzdGVyIG5hbWUuICBM ZXQncyBleHRyYWN0IGl0IGFuZCBnZXQKLSsgICAgIHRoZSBhc3NvY2lhdGVkIG51bWJlci4gICov Ci0rICBzdGFydCA9IHAtPmFyZzsKLSsKLSsgIC8qIFdlIGFzc3VtZSB0aGUgcmVnaXN0ZXIgbmFt ZSBpcyBjb21wb3NlZCBieSBsZXR0ZXJzIGFuZCBudW1iZXJzLiAgKi8KLSsgIHdoaWxlIChpc2Fs bnVtICgqcC0+YXJnKSkKLSsgICAgKytwLT5hcmc7Ci0rCi0rICBsZW4gPSBwLT5hcmcgLSBzdGFy dDsKLSsKLSsgIHJlZ25hbWUgPSBhbGxvY2EgKGxlbiArIGdkYl9yZWdfcHJlZml4X2xlbiArIGdk Yl9yZWdfc3VmaXhfbGVuICsgMSk7Ci0rICByZWduYW1lWzBdID0gJ1wwJzsKLSsKLSsgIC8qIFdl IG9ubHkgYWRkIHRoZSBHREIncyByZWdpc3RlciBwcmVmaXgvc3VmaXggaWYgd2UgYXJlIGRlYWxp bmcgd2l0aAotKyAgICAgYSBudW1lcmljIHJlZ2lzdGVyLiAgKi8KLSsgIGlmIChnZGJfcmVnX3By ZWZpeCAmJiBpc2RpZ2l0ICgqc3RhcnQpKQotKyAgICB7Ci0rICAgICAgc3RybmNweSAocmVnbmFt ZSwgZ2RiX3JlZ19wcmVmaXgsIGdkYl9yZWdfcHJlZml4X2xlbik7Ci0rICAgICAgc3RybmNweSAo cmVnbmFtZSArIGdkYl9yZWdfcHJlZml4X2xlbiwgc3RhcnQsIGxlbik7Ci0rCi0rICAgICAgaWYg KGdkYl9yZWdfc3VmaXgpCi0rCXN0cm5jcHkgKHJlZ25hbWUgKyBnZGJfcmVnX3ByZWZpeF9sZW4g KyBsZW4sCi0rCQkgZ2RiX3JlZ19zdWZpeCwgZ2RiX3JlZ19zdWZpeF9sZW4pOwotKwotKyAgICAg IGxlbiArPSBnZGJfcmVnX3ByZWZpeF9sZW4gKyBnZGJfcmVnX3N1Zml4X2xlbjsKLSsgICAgfQot KyAgZWxzZQotKyAgICBzdHJuY3B5IChyZWduYW1lLCBzdGFydCwgbGVuKTsKLSsKLSsgIHJlZ25h bWVbbGVuXSA9ICdcMCc7Ci0rICAvKiBJcyB0aGlzIGEgdmFsaWQgcmVnaXN0ZXIgbmFtZT8gICov Ci0rICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBs ZW4pID09IC0xKQotKyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24g ZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICByZWduYW1lLCBwLT5zYXZlZF9hcmcpOwotKwotKyAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsKLSsgIHN0ci5wdHIgPSByZWduYW1l OwotKyAgc3RyLmxlbmd0aCA9IGxlbjsKLSsgIHdyaXRlX2V4cF9zdHJpbmcgKHN0cik7Ci0rICB3 cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOwotKwotKyAgaWYgKGluZGlyZWN0X3Ap Ci0rICAgIHsKLSsgICAgICBpZiAoZGlzcF9wKQotKwl3cml0ZV9leHBfZWx0X29wY29kZSAoQklO T1BfQUREKTsKLSsKLSsgICAgICAvKiBDYXN0aW5nIHRvIHRoZSBleHBlY3RlZCB0eXBlLiAgKi8K LSsgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKLSsgICAgICB3cml0ZV9l eHBfZWx0X3R5cGUgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHAtPmFyZ190eXBlKSk7Ci0rICAgICAg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7Ci0rCi0rICAgICAgd3JpdGVfZXhwX2Vs dF9vcGNvZGUgKFVOT1BfSU5EKTsKLSsgICAgfQotKwotKyAgLyogR2V0dGluZyByaWQgb2YgdGhl IHJlZ2lzdGVyIG5hbWUgc3VmaXguICAqLwotKyAgaWYgKHJlZ19zdWZpeCkKLSsgICAgewotKyAg ICAgIGlmIChzdHJuY21wIChwLT5hcmcsIHJlZ19zdWZpeCwgcmVnX3N1Zml4X2xlbikgIT0gMCkK LSsJZXJyb3IgKF8oIk1pc3NpbmcgcmVnaXN0ZXIgbmFtZSBzdWZpeCBgJXMnIG9uIGV4cHJlc3Np b24gYCVzJy4iKSwKLSsJICAgICAgIHJlZ19zdWZpeCwgcC0+c2F2ZWRfYXJnKTsKLSsKLSsgICAg ICBwLT5hcmcgKz0gcmVnX3N1Zml4X2xlbjsKLSsgICAgfQotKwotKyAgLyogR2V0dGluZyByaWQg b2YgdGhlIHJlZ2lzdGVyIGluZGlyZWN0aW9uIHN1Zml4LiAgKi8KLSsgIGlmIChpbmRpcmVjdF9w ICYmIHJlZ19pbmRfc3VmaXgpCi0rICAgIHsKLSsgICAgICBpZiAoc3RybmNtcCAocC0+YXJnLCBy ZWdfaW5kX3N1Zml4LCByZWdfaW5kX3N1Zml4X2xlbikgIT0gMCkKLSsJZXJyb3IgKF8oIk1pc3Np bmcgaW5kaXJlY3Rpb24gc3VmaXggYCVzJyBvbiBleHByZXNzaW9uIGAlcycuIiksCi0rCSAgICAg ICByZWdfaW5kX3N1Zml4LCBwLT5zYXZlZF9hcmcpOwotKwotKyAgICAgIHAtPmFyZyArPSByZWdf aW5kX3N1Zml4X2xlbjsKLSsgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK3N0YXBfcGFyc2Vf c2luZ2xlX29wZXJhbmQgKHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCi0rewotKyAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBwLT5nZGJhcmNoOwotKyAgLyogUHJlZml4ZXMgZm9yIHRoZSBw YXJzZXIuICAqLwotKyAgY29uc3QgY2hhciAqY29uc3RfcHJlZml4ID0gZ2RiYXJjaF9zdGFwX2lu dGVnZXJfcHJlZml4IChnZGJhcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ19wcmVmaXggPSBnZGJh cmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4IChnZGJhcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ19p bmRfcHJlZml4Ci0rICAgID0gZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZp eCAoZ2RiYXJjaCk7Ci0rICBpbnQgY29uc3RfcHJlZml4X2xlbiA9IGNvbnN0X3ByZWZpeCA/IHN0 cmxlbiAoY29uc3RfcHJlZml4KSA6IDA7Ci0rICBpbnQgcmVnX3ByZWZpeF9sZW4gPSByZWdfcHJl Zml4ID8gc3RybGVuIChyZWdfcHJlZml4KSA6IDA7Ci0rICBpbnQgcmVnX2luZF9wcmVmaXhfbGVu ID0gcmVnX2luZF9wcmVmaXggPyBzdHJsZW4gKHJlZ19pbmRfcHJlZml4KSA6IDA7Ci0rCi0rICAv KiBTdWZpeGVzIGZvciB0aGUgcGFyc2VyLiAgKi8KLSsgIGNvbnN0IGNoYXIgKmNvbnN0X3N1Zml4 ID0gZ2RiYXJjaF9zdGFwX2ludGVnZXJfc3VmaXggKGdkYmFyY2gpOwotKyAgY29uc3QgY2hhciAq cmVnX3N1Zml4ID0gZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3N1Zml4IChnZGJhcmNoKTsKLSsgIGNv bnN0IGNoYXIgKnJlZ19pbmRfc3VmaXgKLSsgICAgPSBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5k aXJlY3Rpb25fc3VmaXggKGdkYmFyY2gpOwotKyAgaW50IGNvbnN0X3N1Zml4X2xlbiA9IGNvbnN0 X3N1Zml4ID8gc3RybGVuIChjb25zdF9zdWZpeCkgOiAwOwotKyAgaW50IHJlZ19zdWZpeF9sZW4g PSByZWdfc3VmaXggPyBzdHJsZW4gKHJlZ19zdWZpeCkgOiAwOwotKyAgaW50IHJlZ19pbmRfc3Vm aXhfbGVuID0gcmVnX2luZF9zdWZpeCA/IHN0cmxlbiAocmVnX2luZF9zdWZpeCkgOiAwOwotKwot KyAgLyogV2UgZmlyc3QgdHJ5IHRvIHBhcnNlIHRoaXMgdG9rZW4gYXMgYSAic3BlY2lhbCB0b2tl biIuICAqLwotKyAgaWYgKGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX3AgKGdkYmFy Y2gpKQotKyAgICB7Ci0rICAgICAgaW50IHJldCA9IGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFs X3Rva2VuIChnZGJhcmNoLCBwKTsKLSsKLSsgICAgICBpZiAocmV0KQotKwkvKiBJZiB0aGUgcmV0 dXJuIHZhbHVlIG9mIHRoZSBhYm92ZSBmdW5jdGlvbiBpcyBub3QgemVybywKLSsJICAgaXQgbWVh bnMgaXQgc3VjY2Vzc2Z1bGx5IHBhcnNlZCB0aGUgc3BlY2lhbCB0b2tlbi4KLSsKLSsJICAgSWYg aXQgaXMgTlVMTCwgd2UgdHJ5IHRvIHBhcnNlIGl0IHVzaW5nIG91ciBtZXRob2QuICAqLwotKwly ZXR1cm47Ci0rICAgIH0KLSsKLSsgIGlmICgqcC0+YXJnID09ICctJyB8fCAqcC0+YXJnID09ICd+ JyB8fCAqcC0+YXJnID09ICcrJykKLSsgICAgewotKyAgICAgIGNoYXIgYyA9ICpwLT5hcmc7Ci0r ICAgICAgLyogV2UgdXNlIHRoaXMgdmFyaWFibGUgdG8gZG8gYSBsb29rYWhlYWQuICAqLwotKyAg ICAgIGNvbnN0IGNoYXIgKnRtcCA9IHAtPmFyZzsKLSsKLSsgICAgICArK3RtcDsKLSsKLSsgICAg ICAvKiBUaGlzIGlzIGFuIHVuYXJ5IG9wZXJhdGlvbi4gIEhlcmUgaXMgYSBsaXN0IG9mIGFsbG93 ZWQgdG9rZW5zCi0rCSBoZXJlOgotKwotKwkgLSBudW1lcmljIGxpdGVyYWw7Ci0rCSAtIG51bWJl ciAoZnJvbSByZWdpc3RlciBkaXNwbGFjZW1lbnQpCi0rCSAtIHN1YmV4cHJlc3Npb24gKGJlZ2lu bmluZyB3aXRoIGAoJykKLSsKLSsJIFdlIGhhbmRsZSB0aGUgcmVnaXN0ZXIgZGlzcGxhY2VtZW50 IGhlcmUsIGFuZCB0aGUgb3RoZXIgY2FzZXMKLSsJIHJlY3Vyc2l2ZWx5LiAgKi8KLSsgICAgICBp ZiAoaXNkaWdpdCAoKnRtcCkpCi0rCXsKLSsJICBpbnQgbnVtYmVyID0gc3RydG9sICh0bXAsIChj aGFyICoqKSAmdG1wLCAxMCk7Ci0rCi0rCSAgaWYgKHAtPmluc2lkZV9wYXJlbl9wKQotKwkgICAg dG1wID0gc2tpcF9zcGFjZXNfY29uc3QgKHRtcCk7Ci0rCSAgaWYgKCFyZWdfaW5kX3ByZWZpeAot KwkgICAgICB8fCBzdHJuY21wICh0bXAsIHJlZ19pbmRfcHJlZml4LCByZWdfaW5kX3ByZWZpeF9s ZW4pICE9IDApCi0rCSAgICBnb3RvIG5vdF9kaXNwbGFjZW1lbnQ7Ci0rCi0rCSAgLyogSWYgd2Ug YXJlIGhlcmUsIGl0IG1lYW5zIGl0IGlzIGEgZGlzcGxhY2VtZW50LiAgVGhlIG9ubHkKLSsJICAg ICBvcGVyYXRpb25zIGFsbG93ZWQgaGVyZSBhcmUgYC0nIGFuZCBgKycuICAqLwotKwkgIGlmIChj ID09ICd+JykKLSsJICAgIGVycm9yIChfKCJJbnZhbGlkIG9wZXJhdG9yIGAlYycgZm9yIHJlZ2lz dGVyIGRpc3BsYWNlbWVudCAiCi0rCQkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksIGMsIHAt PnNhdmVkX2FyZyk7Ci0rCi0rCSAgc3RhcF9wYXJzZV9yZWdpc3Rlcl9vcGVyYW5kIChwKTsKLSsJ fQotKyAgICAgIGVsc2UKLStub3RfZGlzcGxhY2VtZW50OgotKwl7Ci0rCSAgcC0+YXJnID0gdG1w OwotKwkgIHN0YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxseSAocCk7Ci0rCSAgaWYgKGMg PT0gJy0nKQotKwkgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVHKTsKLSsJICBlbHNl IGlmIChjID09ICd+JykKLSsJICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NPTVBMRU1F TlQpOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGlzZGlnaXQgKCpwLT5hcmcpKQotKyAgICB7 Ci0rICAgICAgLyogQSB0ZW1wb3JhcnkgdmFyaWFibGUsIG5lZWRlZCBmb3IgbG9va2FoZWFkLiAg Ki8KLSsgICAgICBjb25zdCBjaGFyICp0bXAgPSBwLT5hcmc7Ci0rICAgICAgbG9uZyBudW1iZXI7 Ci0rCi0rICAgICAgLyogV2UgY2FuIGJlIGRlYWxpbmcgd2l0aCBhIG51bWVyaWMgY29uc3RhbnQg KGlmIGBjb25zdF9wcmVmaXgnIGlzCi0rCSBOVUxMKSwgb3Igd2l0aCBhIHJlZ2lzdGVyIGRpc3Bs YWNlbWVudC4gICovCi0rICAgICAgbnVtYmVyID0gc3RydG9sICh0bXAsIChjaGFyICoqKSAmdG1w LCAxMCk7Ci0rCi0rICAgICAgaWYgKHAtPmluc2lkZV9wYXJlbl9wKQotKwl0bXAgPSBza2lwX3Nw YWNlc19jb25zdCAodG1wKTsKLSsgICAgICBpZiAoIWNvbnN0X3ByZWZpeCAmJiByZWdfaW5kX3By ZWZpeAotKwkgICYmIHN0cm5jbXAgKHRtcCwgcmVnX2luZF9wcmVmaXgsIHJlZ19pbmRfcHJlZml4 X2xlbikgIT0gMCkKLSsJewotKwkgIC8qIFdlIGFyZSBkZWFsaW5nIHdpdGggYSBudW1lcmljIGNv bnN0YW50LiAgKi8KLSsJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7Ci0rCSAgd3Jp dGVfZXhwX2VsdF90eXBlIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2xvbmcpOwot KwkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAobnVtYmVyKTsKLSsJICB3cml0ZV9leHBfZWx0X29w Y29kZSAoT1BfTE9ORyk7Ci0rCi0rCSAgcC0+YXJnID0gdG1wOwotKwotKwkgIGlmIChjb25zdF9z dWZpeCkKLSsJICAgIHsKLSsJICAgICAgaWYgKHN0cm5jbXAgKHAtPmFyZywgY29uc3Rfc3VmaXgs IGNvbnN0X3N1Zml4X2xlbikgPT0gMCkKLSsJCXAtPmFyZyArPSBjb25zdF9zdWZpeF9sZW47Ci0r CSAgICAgIGVsc2UKLSsJCWVycm9yIChfKCJJbnZhbGlkIGNvbnN0YW50IHN1Zml4IG9uIGV4cHJl c3Npb24gYCVzJy4iKSwKLSsJCSAgICAgICBwLT5zYXZlZF9hcmcpOwotKwkgICAgfQotKwl9Ci0r ICAgICAgZWxzZSBpZiAocmVnX2luZF9wcmVmaXgKLSsJICAgICAgICYmIHN0cm5jbXAgKHRtcCwg cmVnX2luZF9wcmVmaXgsIHJlZ19pbmRfcHJlZml4X2xlbikgPT0gMCkKLSsJc3RhcF9wYXJzZV9y ZWdpc3Rlcl9vcGVyYW5kIChwKTsKLSsgICAgICBlbHNlCi0rCWVycm9yIChfKCJVbmtub3duIG51 bWVyaWMgdG9rZW4gb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICAgICAgcC0+c2F2ZWRfYXJn KTsKLSsgICAgfQotKyAgZWxzZSBpZiAoY29uc3RfcHJlZml4Ci0rCSAgICYmIHN0cm5jbXAgKHAt PmFyZywgY29uc3RfcHJlZml4LCBjb25zdF9wcmVmaXhfbGVuKSA9PSAwKQotKyAgICB7Ci0rICAg ICAgLyogV2UgYXJlIGRlYWxpbmcgd2l0aCBhIG51bWVyaWMgY29uc3RhbnQuICAqLwotKyAgICAg IGxvbmcgbnVtYmVyOwotKwotKyAgICAgIHAtPmFyZyArPSBjb25zdF9wcmVmaXhfbGVuOwotKyAg ICAgIG51bWJlciA9IHN0cnRvbCAocC0+YXJnLCAoY2hhciAqKikgJnAtPmFyZywgMTApOwotKwot KyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9MT05HKTsKLSsgICAgICB3cml0ZV9leHBf ZWx0X3R5cGUgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fbG9uZyk7Ci0rICAgICAg d3JpdGVfZXhwX2VsdF9sb25nY3N0IChudW1iZXIpOwotKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bj b2RlIChPUF9MT05HKTsKLSsKLSsgICAgICBpZiAoY29uc3Rfc3VmaXgpCi0rCXsKLSsJICBpZiAo c3RybmNtcCAocC0+YXJnLCBjb25zdF9zdWZpeCwgY29uc3Rfc3VmaXhfbGVuKSA9PSAwKQotKwkg ICAgcC0+YXJnICs9IGNvbnN0X3N1Zml4X2xlbjsKLSsJICBlbHNlCi0rCSAgICBlcnJvciAoXygi SW52YWxpZCBjb25zdGFudCBzdWZpeCBvbiBleHByZXNzaW9uIGAlcycuIiksCi0rCQkgICBwLT5z YXZlZF9hcmcpOwotKwl9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKChyZWdfcHJlZml4Ci0rCSAgICAm JiBzdHJuY21wIChwLT5hcmcsIHJlZ19wcmVmaXgsIHJlZ19wcmVmaXhfbGVuKSA9PSAwKQotKwkg ICB8fCAocmVnX2luZF9wcmVmaXgKLSsJICAgICAgICYmIHN0cm5jbXAgKHAtPmFyZywgcmVnX2lu ZF9wcmVmaXgsIHJlZ19pbmRfcHJlZml4X2xlbikgPT0gMCkpCi0rICAgIHN0YXBfcGFyc2VfcmVn aXN0ZXJfb3BlcmFuZCAocCk7Ci0rICBlbHNlCi0rICAgIGVycm9yIChfKCJPcGVyYXRvciBgJWMn IG5vdCByZWNvZ25pemVkIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJICAgKnAtPmFyZywgcC0+ c2F2ZWRfYXJnKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStzdGFwX3BhcnNlX2FyZ3VtZW50X2Nv bmRpdGlvbmFsbHkgKHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCi0rewotKyAgaWYgKCpwLT5h cmcgPT0gJy0nIHx8ICpwLT5hcmcgPT0gJ34nIHx8ICpwLT5hcmcgPT0gJysnIC8qIFVuYXJ5LiAg Ki8KLSsgICAgICB8fCBpc2RpZ2l0ICgqcC0+YXJnKQotKyAgICAgIHx8IGdkYmFyY2hfc3RhcF9p c19zaW5nbGVfb3BlcmFuZCAocC0+Z2RiYXJjaCwgcC0+YXJnKSkKLSsgICAgc3RhcF9wYXJzZV9z aW5nbGVfb3BlcmFuZCAocCk7Ci0rICBlbHNlIGlmICgqcC0+YXJnID09ICcoJykKLSsgICAgewot KyAgICAgIC8qIFdlIGFyZSBkZWFsaW5nIHdpdGggYSBwYXJlbnRoZXNpemVkIG9wZXJhbmQuICBJ dCBtZWFucyB3ZQotKwkgaGF2ZSB0byBwYXJzZSBpdCBhcyBpdCB3YXMgYSBzZXBhcmF0ZSBleHBy ZXNzaW9uLCB3aXRob3V0Ci0rCSBsZWZ0LXNpZGUgb3IgcHJlY2VkZW5jZS4gICovCi0rICAgICAg KytwLT5hcmc7Ci0rICAgICAgcC0+YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFyZyk7Ci0r ICAgICAgKytwLT5pbnNpZGVfcGFyZW5fcDsKLSsKLSsgICAgICBzdGFwX3BhcnNlX2FyZ3VtZW50 XzEgKHAsIDAsIFNUQVBfT1BFUkFORF9QUkVDX05PTkUpOwotKwotKyAgICAgIC0tcC0+aW5zaWRl X3BhcmVuX3A7Ci0rICAgICAgaWYgKCpwLT5hcmcgIT0gJyknKQotKwllcnJvciAoXygiTWlzc2ln biBjbG9zZS1wYXJlbiBvbiBleHByZXNzaW9uIGAlcycuIiksCi0rCSAgICAgICBwLT5zYXZlZF9h cmcpOwotKwotKyAgICAgICsrcC0+YXJnOwotKyAgICAgIGlmIChwLT5pbnNpZGVfcGFyZW5fcCkK LSsJcC0+YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFyZyk7Ci0rICAgIH0KLSsgIGVsc2UK LSsgICAgZXJyb3IgKF8oIkNhbm5vdCBwYXJzZSBleHByZXNzaW9uIGAlcycuIiksIHAtPnNhdmVk X2FyZyk7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9wYXJzZV9hcmd1bWVudF8xIChzdHJ1 Y3Qgc3RhcF9wYXJzZV9pbmZvICpwLCBpbnQgaGFzX2xocywKLSsJCSAgICAgICBlbnVtIHN0YXBf b3BlcmFuZF9wcmVjIHByZWMpCi0rewotKyAgLyogVGhpcyBpcyBhbiBvcGVyYXRvci1wcmVjZWRl bmNlIHBhcnNlci4KLSsKLSsgICAgIFdlIHdvcmsgd2l0aCBsZWZ0LSBhbmQgcmlnaHQtc2lkZXMg b2YgZXhwcmVzc2lvbnMsIGFuZAotKyAgICAgcGFyc2UgdGhlbSBkZXBlbmRpbmcgb24gdGhlIHBy ZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9ycwotKyAgICAgd2UgZmluZC4gICovCi0rCi0rICBpZiAo cC0+aW5zaWRlX3BhcmVuX3ApCi0rICAgIHAtPmFyZyA9IHNraXBfc3BhY2VzX2NvbnN0IChwLT5h cmcpOwotKwotKyAgaWYgKCFoYXNfbGhzKQotKyAgICAvKiBXZSB3ZXJlIGNhbGxlZCB3aXRob3V0 IGEgbGVmdC1zaWRlLCBlaXRoZXIgYmVjYXVzZSB0aGlzIGlzIHRoZQotKyAgICAgICBmaXJzdCBj YWxsLCBvciBiZWNhdXNlIHdlIHdlcmUgY2FsbGVkIHRvIHBhcnNlIGEgcGFyZW50aGVzaXplZAot KyAgICAgICBleHByZXNzaW9uLiAgSXQgZG9lc24ndCByZWFsbHkgbWF0dGVyOyB3ZSBoYXZlIHRv IHBhcnNlIHRoZQotKyAgICAgICBsZWZ0LXNpZGUgaW4gb3JkZXIgdG8gY29udGludWUgdGhlIHBy b2Nlc3MuICAqLwotKyAgICBzdGFwX3BhcnNlX2FyZ3VtZW50X2NvbmRpdGlvbmFsbHkgKHApOwot KwotKyAgLyogU3RhcnQgdG8gcGFyc2UgdGhlIHJpZ2h0LXNpZGUsIGFuZCB0byAiam9pbiIgbGVm dCBhbmQgcmlnaHQgc2lkZXMKLSsgICAgIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0aW9uIHNwZWNp ZmllZC4KLSsKLSsgICAgIFRoaXMgbG9vcCBzaGFsbCBjb250aW51ZSB1bnRpbCB3ZSBydW4gb3V0 IG9mIGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0LAotKyAgICAgb3IgdW50aWwgd2UgZmluZCBhIGNs b3NlLXBhcmVudGhlc2lzLCB3aGljaCBtZWFucyB0aGF0IHdlJ3ZlIHJlYWNoZWQKLSsgICAgIHRo ZSBlbmQgb2YgYSBzdWItZXhwcmVzc2lvbi4gICovCi0rICB3aGlsZSAocC0+YXJnICYmICpwLT5h cmcgJiYgKnAtPmFyZyAhPSAnKScgJiYgIWlzc3BhY2UgKCpwLT5hcmcpKQotKyAgICB7Ci0rICAg ICAgY29uc3QgY2hhciAqdG1wX2V4cF9idWY7Ci0rICAgICAgZW51bSBleHBfb3Bjb2RlIG9wY29k ZTsKLSsgICAgICBlbnVtIHN0YXBfb3BlcmFuZF9wcmVjIGN1cl9wcmVjOwotKwotKyAgICAgIGlm ICghc3RhcF9pc19vcGVyYXRvciAoKnAtPmFyZykpCi0rCWVycm9yIChfKCJJbnZhbGlkIG9wZXJh dG9yIGAlYycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLCAqcC0+YXJnLAotKwkgICAgICAgcC0+c2F2 ZWRfYXJnKTsKLSsKLSsgICAgICAvKiBXZSBoYXZlIHRvIHNhdmUgdGhlIGN1cnJlbnQgdmFsdWUg b2YgdGhlIGV4cHJlc3Npb24gYnVmZmVyIGJlY2F1c2UKLSsJIHRoZSBgc3RhcF9nZXRfb3Bjb2Rl JyBtb2RpZmllcyBpdCBpbiBvcmRlciB0byBnZXQgdGhlIGN1cnJlbnQKLSsJIG9wZXJhdG9yLiAg SWYgdGhpcyBvcGVyYXRvcidzIHByZWNlZGVuY2UgaXMgbG93ZXIgdGhhbiBQUkVDLCB3ZQotKwkg c2hvdWxkIHJldHVybiBhbmQgbm90IGFkdmFuY2UgdGhlIGV4cHJlc3Npb24gYnVmZmVyIHBvaW50 ZXIuICAqLwotKyAgICAgIHRtcF9leHBfYnVmID0gcC0+YXJnOwotKyAgICAgIHN0YXBfZ2V0X29w Y29kZSAoJnRtcF9leHBfYnVmLCAmb3Bjb2RlKTsKLSsKLSsgICAgICBjdXJfcHJlYyA9IHN0YXBf Z2V0X29wZXJhdG9yX3ByZWMgKG9wY29kZSk7Ci0rICAgICAgaWYgKGN1cl9wcmVjIDwgcHJlYykK LSsJLyogSWYgdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9yIHRoYXQgd2UgYXJlIHNlZWlu ZyBub3cgaXMKLSsJICAgbG93ZXIgdGhhbiB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgZmlyc3Qgb3Bl cmF0b3Igc2VlbiBiZWZvcmUKLSsJICAgdGhpcyBwYXJzaW5nIHByb2Nlc3MgYmVnYW4sIGl0IG1l YW5zIHdlIHNob3VsZCBzdG9wIHBhcnNpbmcKLSsJICAgYW5kIHJldHVybi4gICovCi0rCWJyZWFr OwotKwotKyAgICAgIHAtPmFyZyA9IHRtcF9leHBfYnVmOwotKyAgICAgIGlmIChwLT5pbnNpZGVf cGFyZW5fcCkKLSsJcC0+YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFyZyk7Ci0rCi0rICAg ICAgLyogUGFyc2UgdGhlIHJpZ2h0LXNpZGUgb2YgdGhlIGV4cHJlc3Npb24uICAqLwotKyAgICAg IHN0YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxseSAocCk7Ci0rCi0rICAgICAgLyogV2hp bGUgd2Ugc3RpbGwgaGF2ZSBvcGVyYXRvcnMsIHRyeSB0byBwYXJzZSBhbm90aGVyCi0rCSByaWdo dC1zaWRlLCBidXQgdXNpbmcgdGhlIGN1cnJlbnQgcmlnaHQtc2lkZSBhcyBhIGxlZnQtc2lkZS4g ICovCi0rICAgICAgd2hpbGUgKCpwLT5hcmcgJiYgc3RhcF9pc19vcGVyYXRvciAoKnAtPmFyZykp Ci0rCXsKLSsJICBlbnVtIGV4cF9vcGNvZGUgbG9va2FoZWFkX29wY29kZTsKLSsJICBlbnVtIHN0 YXBfb3BlcmFuZF9wcmVjIGxvb2thaGVhZF9wcmVjOwotKwotKwkgIC8qIFNhdmluZyB0aGUgY3Vy cmVudCBleHByZXNzaW9uIGJ1ZmZlciBwb3NpdGlvbi4gIFRoZSBleHBsYW5hdGlvbgotKwkgICAg IGlzIHRoZSBzYW1lIGFzIGFib3ZlLiAgKi8KLSsJICB0bXBfZXhwX2J1ZiA9IHAtPmFyZzsKLSsJ ICBzdGFwX2dldF9vcGNvZGUgKCZ0bXBfZXhwX2J1ZiwgJmxvb2thaGVhZF9vcGNvZGUpOwotKwkg IGxvb2thaGVhZF9wcmVjID0gc3RhcF9nZXRfb3BlcmF0b3JfcHJlYyAobG9va2FoZWFkX29wY29k ZSk7Ci0rCi0rCSAgaWYgKGxvb2thaGVhZF9wcmVjIDw9IHByZWMpCi0rCSAgICAvKiBJZiB3ZSBh cmUgZGVhbGluZyB3aXRoIGFuIG9wZXJhdG9yIHdob3NlIHByZWNlZGVuY2UgaXMgbG93ZXIKLSsJ ICAgICAgIHRoYW4gdGhlIGZpcnN0IG9uZSwganVzdCBhYmFuZG9uIHRoZSBhdHRlbXB0LiAgKi8K LSsJICAgIGJyZWFrOwotKwotKwkgIC8qIFBhcnNlIHRoZSByaWdodC1zaWRlIG9mIHRoZSBleHBy ZXNzaW9uLCBidXQgc2luY2Ugd2UgYWxyZWFkeQotKwkgICAgIGhhdmUgYSBsZWZ0LXNpZGUgYXQg dGhpcyBwb2ludCwgc2V0IGBoYXNfbGhzJyB0byAxLiAgKi8KLSsJICBzdGFwX3BhcnNlX2FyZ3Vt ZW50XzEgKHAsIDEsIGxvb2thaGVhZF9wcmVjKTsKLSsJfQotKwotKyAgICAgIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChvcGNvZGUpOwotKyAgICB9Ci0rfQotKwotKy8qIFBhcnNlIGEgcHJvYmUncyBh cmd1bWVudC4KLSsKLSsgICBBc3N1bWluZyB0aGF0OgotKwotKyAgIExQID0gbGl0ZXJhbCBpbnRl Z2VyIHByZWZpeAotKyAgIExTID0gbGl0ZXJhbCBpbnRlZ2VyIHN1Zml4Ci0rCi0rICAgUlAgPSBy ZWdpc3RlciBwcmVmaXgKLSsgICBSUyA9IHJlZ2lzdGVyIHN1Zml4Ci0rCi0rICAgUklQID0gcmVn aXN0ZXIgaW5kaXJlY3Rpb24gcHJlZml4Ci0rICAgUklTID0gcmVnaXN0ZXIgaW5kaXJlY3Rpb24g c3VmaXgKLSsKLSsgICBUaGlzIHJvdXRpbmUgYXNzdW1lcyB0aGF0IGFyZ3VtZW50cycgdG9rZW5z IGFyZSBvZiB0aGUgZm9ybToKLSsKLSsgICAtIFtMUF0gTlVNQkVSIFtMU10KLSsgICAtIFtSUF0g UkVHSVNURVIgW1JTXQotKyAgIC0gW1JJUF0gW1JQXSBSRUdJU1RFUiBbUlNdIFtSSVNdCi0rICAg LSBJZiB3ZSBmaW5kIGEgbnVtYmVyIHdpdGhvdXQgTFAsIHdlIHRyeSB0byBwYXJzZSBpdCBhcyBh IGxpdGVyYWwgaW50ZWdlcgotKyAgIGNvbnN0YW50IChpZiBMUCA9PSBOVUxMKSwgb3IgYXMgYSBy ZWdpc3RlciBkaXNwbGFjZW1lbnQuCi0rICAgLSBXZSBjb3VudCBwYXJlbnRoZXNpcywgYW5kIG9u bHkgc2tpcCB3aGl0ZXNwYWNlcyBpZiB3ZSBhcmUgaW5zaWRlIHRoZW0uCi0rICAgLSBJZiB3ZSBm aW5kIGFuIG9wZXJhdG9yLCB3ZSBza2lwIGl0LgotKwotKyAgIFRoaXMgZnVuY3Rpb24gY2FuIGFs c28gY2FsbCBhIHNwZWNpYWwgZnVuY3Rpb24gdGhhdCB3aWxsIHRyeSB0byBtYXRjaAotKyAgIHVu a25vd24gdG9rZW5zLiAgSXQgd2lsbCByZXR1cm4gMSBpZiB0aGUgYXJndW1lbnQgaGFzIGJlZW4g cGFyc2VkCi0rICAgc3VjY2Vzc2Z1bGx5LCBvciB6ZXJvIG90aGVyd2lzZS4gICovCi0rCi0rc3Rh dGljIGludAotK3N0YXBfcGFyc2VfYXJndW1lbnQgKGNvbnN0IGNoYXIgKiphcmcsIHN0cnVjdCB0 eXBlICphdHlwZSwKLSsJCSAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0rewotKyAgc3Ry dWN0IHN0YXBfcGFyc2VfaW5mbyBwOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24g ZTsKLSsKLSsgIC8qIFdlIG5lZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZXhwcmVzc2lvbiBidWZmZXIs IGluIG9yZGVyIHRvIGJlZ2luCi0rICAgICBvdXIgcGFyc2luZyBlZmZvcnRzLiAgVGhlIGxhbmd1 YWdlIGhlcmUgZG9lcyBub3QgbWF0dGVyLCBzaW5jZSB3ZQotKyAgICAgYXJlIHVzaW5nIG91ciBv d24gcGFyc2VyLiAgKi8KLSsgIGluaXRpYWxpemVfZXhwb3V0ICgxMCwgY3VycmVudF9sYW5ndWFn ZSwgZ2RiYXJjaCk7Ci0rCi0rICBwLnNhdmVkX2FyZyA9ICphcmc7Ci0rICBwLmFyZyA9ICphcmc7 Ci0rICBwLmFyZ190eXBlID0gYXR5cGU7Ci0rICBwLmdkYmFyY2ggPSBnZGJhcmNoOwotKyAgcC5p bnNpZGVfcGFyZW5fcCA9IDA7Ci0rCi0rICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9S KQotKyAgICB7Ci0rICAgICAgc3RhcF9wYXJzZV9hcmd1bWVudF8xICgmcCwgMCwgU1RBUF9PUEVS QU5EX1BSRUNfTk9ORSk7Ci0rICAgIH0KLSsgIGlmIChlLnJlYXNvbiA8IDApCi0rICAgIHsKLSsg ICAgICB4ZnJlZSAoZXhwb3V0KTsKLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotKyAgZ2Ri X2Fzc2VydCAocC5pbnNpZGVfcGFyZW5fcCA9PSAwKTsKLSsKLSsgIC8qIENhc3RpbmcgdGhlIGZp bmFsIGV4cHJlc3Npb24gdG8gdGhlIGFwcHJvcHJpYXRlIHR5cGUuICAqLwotKyAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7Ci0rICB3cml0ZV9leHBfZWx0X3R5cGUgKGF0eXBlKTsK LSsgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NBU1QpOwotKwotKyAgcmVhbGxvY2F0ZV9l eHBvdXQgKCk7Ci0rCi0rICBwLmFyZyA9IHNraXBfc3BhY2VzX2NvbnN0IChwLmFyZyk7Ci0rICAq YXJnID0gcC5hcmc7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogSGVscGVyIGZ1bmN0aW9u IHdoaWNoIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSBzcGFjZSBhbGxvY2F0ZWQgdG8K LSsgICBob2xkIGluZm9ybWF0aW9uIGFib3V0IGEgcHJvYmUncyBhcmd1bWVudHMuICAqLwotKwot K3N0YXRpYyB2b2lkCi0rc3RhcF9mcmVlX2FyZ3NfaW5mbyAodm9pZCAqYXJnc19pbmZvX3B0cikK LSt7Ci0rICBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKmEgPSAoc3RydWN0IHN0YXBfYXJnc19pbmZv ICopIGFyZ3NfaW5mb19wdHI7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBhLT5u X2FyZ3M7IGkrKykKLSsgICAgeGZyZWUgKGEtPmFyZ3NbaV0uYWV4cHIpOwotKwotKyAgeGZyZWUg KGEtPmFyZ3MpOwotKyAgeGZyZWUgKGEpOwotK30KLSsKLSsvKiBGdW5jdGlvbiB3aGljaCBwYXJz ZXMgYW4gYXJndW1lbnQgc3RyaW5nIGZyb20gUFJPQkUsIGNvcnJlY3RseSBzcGxpdHRpbmcKLSsg ICB0aGUgYXJndW1lbnRzIGFuZCBzdG9yaW5nIHRoZWlyIGluZm9ybWF0aW9uIGluIHByb3Blcmx5 IHdheXMuCi0rCi0rICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBhcmd1bWVudCBzdHJpbmcgKHg4 NiBzeW50YXgpOgotKwotKyAgIGA0QCVlYXggNEAkMTAnCi0rCi0rICAgV2UgaGF2ZSB0d28gYXJn dW1lbnRzLCBgJWVheCcgYW5kIGAkMTAnLCBib3RoIHdpdGggMzItYml0IHVuc2lnbmVkIGJpdG5l c3MuCi0rICAgVGhpcyBmdW5jdGlvbiBiYXNpY2FsbHkgaGFuZGxlcyB0aGVtLCBwcm9wZXJseSBm aWxsaW5nIHNvbWUgc3RydWN0dXJlcyB3aXRoCi0rICAgdGhpcyBpbmZvcm1hdGlvbi4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoc3RydWN0IHN0YXBf cHJvYmUgKnByb2JlKQotK3sKLSsgIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAqYXJnc19pbmZvOwot KyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rICBjb25zdCBjaGFyICpjdXIgPSBwcm9iZS0+ YXJnczsKLSsgIGludCBjdXJyZW50X2FyZyA9IC0xOwotKyAgLyogVGhpcyBpcyBhIHN0YXRlLW1h Y2hpbmUgcGFyc2VyLCB3aGljaCBtZWFucyB3ZSB3aWxsIGFsd2F5cyBiZQotKyAgICAgaW4gYSBr bm93biBzdGF0ZSB3aGVuIHBhcnNpbmcgYW4gYXJndW1lbnQuICBUaGUgc3RhdGUgY291bGQgYmUK LSsgICAgIGVpdGhlciBgTkVXX0FSRycgaWYgd2UgYXJlIHBhcnNpbmcgYSBuZXcgYXJndW1lbnQs IGBCSVRORVNTJyBpZgotKyAgICAgd2UgYXJlIHBhcnNpbmcgdGhlIGJpdG5lc3MtZGVmaW5pdGlv biBwYXJ0IChpLmUuLCBgNEAnKSwgb3IKLSsgICAgIGBQQVJTRV9BUkcnIGlmIHdlIGFyZSBhY3R1 YWxseSBwYXJzaW5nIHRoZSBhcmd1bWVudCBwYXJ0LiAgKi8KLSsgIGVudW0KLSsgICAgewotKyAg ICAgIE5FV19BUkcsCi0rICAgICAgQklUTkVTUywKLSsgICAgICBQQVJTRV9BUkcsCi0rICAgIH0g Y3VycmVudF9zdGF0ZTsKLSsKLSsgIC8qIEZvciBub3csIHdlIGFzc3VtZSBldmVyeXRoaW5nIGlz IG5vdCBnb2luZyB0byB3b3JrLiAgKi8KLSsgIHByb2JlLT5wYXJzZWRfYXJncyA9ICZkdW1teV9z dGFwX2FyZ3NfaW5mbzsKLSsKLSsgIGlmICghY3VyIHx8ICEqY3VyIHx8ICpjdXIgPT0gJzonKQot KyAgICByZXR1cm47Ci0rCi0rICBhcmdzX2luZm8gPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBz dGFwX2FyZ3NfaW5mbykpOwotKyAgYXJnc19pbmZvLT5uX2FyZ3MgPSAwOwotKyAgYmFja190byA9 IG1ha2VfY2xlYW51cCAoc3RhcF9mcmVlX2FyZ3NfaW5mbywgYXJnc19pbmZvKTsKLSsgIGFyZ3Nf aW5mby0+YXJncyA9IHhjYWxsb2MgKFNUQVBfTUFYX0FSR1MsIHNpemVvZiAoc3RydWN0IHN0YXBf cHJvYmVfYXJnKSk7Ci0rCi0rICAvKiBPaywgbGV0J3Mgc3RhcnQuICAqLwotKyAgY3VycmVudF9z dGF0ZSA9IE5FV19BUkc7Ci0rCi0rICB3aGlsZSAoKmN1cikKLSsgICAgewotKyAgICAgIHN3aXRj aCAoY3VycmVudF9zdGF0ZSkKLSsJewotKwljYXNlIE5FV19BUkc6Ci0rCSAgKytjdXJyZW50X2Fy ZzsKLSsKLSsJICBpZiAoY3VycmVudF9hcmcgPj0gU1RBUF9NQVhfQVJHUykKLSsJICAgIHsKLSsJ ICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJCSBfKCJwcm9iZSBgJXMn IGhhcyBtb3JlIGFyZ3VtZW50cyB0aGFuIHRoZSBtYXhpbXVtICIKLSsJCQkgICAiYWxsb3dlZCIp LCBwcm9iZS0+bmFtZSk7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsJICAgICAg cmV0dXJuOwotKwkgICAgfQotKwotKwkgIGN1cnJlbnRfc3RhdGUgPSBCSVRORVNTOwotKwkgIGJy ZWFrOwotKwotKwljYXNlIEJJVE5FU1M6Ci0rCSAgICB7Ci0rCSAgICAgIGVudW0gc3RhcF9hcmdf Yml0bmVzcyBiOwotKwkgICAgICBpbnQgZ290X21pbnVzID0gMDsKLSsKLSsJICAgICAgLyogV2Ug ZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5nIGxpa2U6Ci0rCi0rCQkgTkBPUAotKwotKwkJIFdoZXJl IGBOJyBjYW4gYmUgWyssLV1bNCw4XS4gIFRoaXMgaXMgbm90IG1hbmRhdG9yeSwgc28KLSsJCSB3 ZSBjaGVjayBpdCBoZXJlLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgZ28gdG8gdGhlIG5leHQKLSsJ CSBzdGF0ZS4gICovCi0rCSAgICAgIGlmICgoKmN1ciA9PSAnLScgJiYgY3VyWzFdICYmIGN1clsy XSAhPSAnQCcpCi0rCQkgICYmIGN1clsxXSAhPSAnQCcpCi0rCQl7Ci0rCQkgIGN1cnJlbnRfc3Rh dGUgPSBQQVJTRV9BUkc7Ci0rCQkgIGFyZ3NfaW5mby0+YXJnc1tjdXJyZW50X2FyZ10uYml0bmVz cwotKwkJICAgID0gU1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQ7Ci0rCQkgIGJyZWFrOwotKwkJ fQotKwotKwkgICAgICBpZiAoKmN1ciA9PSAnLScpCi0rCQl7Ci0rCQkgIC8qIERpc2NhcmQgdGhl IGAtJy4gICovCi0rCQkgICsrY3VyOwotKwkJICBnb3RfbWludXMgPSAxOwotKwkJfQotKwotKwkg ICAgICBpZiAoKmN1ciA9PSAnNCcpCi0rCQliID0gZ290X21pbnVzID8gU1RBUF9BUkdfQklUTkVT U18zMkJJVF9TSUdORUQKLSsJCSAgOiBTVEFQX0FSR19CSVRORVNTXzMyQklUX1VOU0lHTkVEOwot KwkgICAgICBlbHNlIGlmICgqY3VyID09ICc4JykKLSsJCWIgPSBnb3RfbWludXMgPyBTVEFQX0FS R19CSVRORVNTXzY0QklUX1NJR05FRAotKwkJICA6IFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5T SUdORUQ7Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgLyogV2UgaGF2ZSBhbiBlcnJvciwgYmVj YXVzZSB3ZSBkb24ndCBleHBlY3QgYW55dGhpbmcKLSsJCSAgICAgZXhjZXB0IDQgYW5kIDguICAq LwotKwkJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJICAgICBfKCJ1bnJl Y29nbml6ZWQgYml0bmVzcyBgJWMnIGZvciBwcm9iZSBgJXMnIiksCi0rCQkJICAgICAqY3VyLCBw cm9iZS0+bmFtZSk7Ci0rCQkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsJCSAgcmV0dXJuOwot KwkJfQotKwotKwkgICAgICBhcmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmddLmJpdG5lc3MgPSBi OwotKwkgICAgICBhcmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmddLmF0eXBlCi0rCQk9IHN0YXBf Z2V0X2V4cGVjdGVkX2FyZ3VtZW50X3R5cGUgKHByb2JlLT5nZGJhcmNoLCBiKTsKLSsJICAgICAg LyogRGlzY2FyZCB0aGUgbnVtYmVyIGFuZCB0aGUgYEAnIHNpZ24uICAqLwotKwkgICAgICBjdXIg Kz0gMjsKLSsJICAgICAgLyogTW92ZSBvbi4gICovCi0rCSAgICAgIGN1cnJlbnRfc3RhdGUgPSBQ QVJTRV9BUkc7Ci0rCSAgICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgUEFSU0VfQVJHOgotKwkg ICAgewotKwkgICAgICBpZiAoIXN0YXBfcGFyc2VfYXJndW1lbnQgKCZjdXIsCi0rCQkJCQlhcmdz X2luZm8tPmFyZ3NbY3VycmVudF9hcmddLmF0eXBlLAotKwkJCQkJcHJvYmUtPmdkYmFyY2gpKQot KwkJewotKwkJICAvKiBXZSBoYXZlIHRyaWVkIHRvIHBhcnNlIHRoaXMgYXJndW1lbnQsIGJ1dCBp dCdzCi0rCQkgICAgIG1hbGZvcm1lZC4gIFRoaXMgaXMgYW4gZXJyb3IuICAqLwotKwkJICBjb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkJICAgICBfKCJtYWxmb3JtZWQgYXJndW1l bnQgZm9yIHByb2JlIGAlcyciKSwKLSsJCQkgICAgIHByb2JlLT5uYW1lKTsKLSsJCSAgZG9fY2xl YW51cHMgKGJhY2tfdG8pOwotKwkJICByZXR1cm47Ci0rCQl9Ci0rCi0rCSAgICAgIGlmIChzdGFw X2V4cHJlc3Npb25fZGVidWcpCi0rCQlkdW1wX3Jhd19leHByZXNzaW9uIChleHBvdXQsIGdkYl9z dGRsb2csCi0rCQkJCSAgICAgImJlZm9yZSBjb252ZXJzaW9uIHRvIHByZWZpeCBmb3JtIik7Ci0r Ci0rCSAgICAgIHByZWZpeGlmeV9leHByZXNzaW9uIChleHBvdXQpOwotKwotKwkgICAgICBpZiAo c3RhcF9leHByZXNzaW9uX2RlYnVnKQotKwkJZHVtcF9wcmVmaXhfZXhwcmVzc2lvbiAoZXhwb3V0 LCBnZGJfc3RkbG9nKTsKLSsKLSsJICAgICAgYXJnc19pbmZvLT5hcmdzW2N1cnJlbnRfYXJnXS5h ZXhwciA9IGV4cG91dDsKLSsJICAgICAgZXhwb3V0ID0gTlVMTDsKLSsKLSsJICAgICAgKythcmdz X2luZm8tPm5fYXJnczsKLSsJICAgICAgLyogU3RhcnQgaXQgb3ZlciBhZ2Fpbi4gICovCi0rCSAg ICAgIGN1ciA9IHNraXBfc3BhY2VzX2NvbnN0IChjdXIpOwotKwkgICAgICBjdXJyZW50X3N0YXRl ID0gTkVXX0FSRzsKLSsJICAgIH0KLSsJICBicmVhazsKLSsJfQotKwotKyAgICAgIGlmICghKmN1 ciAmJiBjdXJyZW50X3N0YXRlICE9IE5FV19BUkcpCi0rCXsKLSsJICAvKiBXZSByZWFjaGVkIHRo ZSBlbmQgb2YgdGhlIGFyZ3VtZW50IHN0cmluZywgYnV0IHdlJ3JlCi0rCSAgICAgc3RpbGwgaW4g dGhlIG1pZGRsZSBvZiB0aGUgcHJvY2VzcyBvZiBwYXJzaW5nIGFuIGFyZ3VtZW50LgotKwkgICAg IEl0IG1lYW5zIHRoZSBhcmd1bWVudCBzdHJpbmcgaXMgbWFsZm9ybWVkLiAgKi8KLSsJICBjb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkgICAgIF8oIm1hbGZvcm1lZCBhcmd1bWVu dCBmb3IgcHJvYmUgYCVzJyIpLAotKwkJICAgICBwcm9iZS0+bmFtZSk7Ci0rCSAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOwotKwkgIHJldHVybjsKLSsJfQotKyAgICB9Ci0rCi0rICBhcmdzX2luZm8t PmFyZ3MgPSB4cmVhbGxvYyAoYXJnc19pbmZvLT5hcmdzLAotKwkJCSAgICAgIGFyZ3NfaW5mby0+ bl9hcmdzCi0rCQkJICAgICAgKiBzaXplb2YgKHN0cnVjdCBzdGFwX3Byb2JlX2FyZykpOwotKyAg YXJnc19pbmZvLT5wcm9iZSA9IHByb2JlOwotKwotKyAgcHJvYmUtPnBhcnNlZF9hcmdzID0gYXJn c19pbmZvOwotKwotKyAgZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7Ci0rfQotKwotKy8qIFNl ZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCi0rCi0raW50Ci0rc3RhcF9nZXRfcHJv YmVfYXJndW1lbnRfY291bnQgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKLSt7Ci0rICBpZiAo IXByb2JlLT5wYXJzZWRfYXJncykKLSsgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHBy b2JlKTsKLSsKLSsgIHJldHVybiBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJnczsKLSt9Ci0rCi0r LyogUmV0dXJuIDEgaWYgT1AgaXMgYSB2YWxpZCBvcGVyYXRvciBpbnNpZGUgYSBwcm9iZSBhcmd1 bWVudCwgb3IgemVybwotKyAgIG90aGVyd2lzZS4gICovCi0rCi0rc3RhdGljIGludAotK3N0YXBf aXNfb3BlcmF0b3IgKGNoYXIgb3ApCi0rewotKyAgcmV0dXJuIChvcCA9PSAnKycgfHwgb3AgPT0g Jy0nIHx8IG9wID09ICcqJyB8fCBvcCA9PSAnLycKLSsJICB8fCBvcCA9PSAnPicgfHwgb3AgPT0g JzwnIHx8IG9wID09ICchJyB8fCBvcCA9PSAnXicKLSsJICB8fCBvcCA9PSAnfCcgfHwgb3AgPT0g JyYnIHx8IG9wID09ICclJyB8fCBvcCA9PSAnPScpOwotK30KLSsKLSsvKiBTZWUgZGVmaW5pdGlv biBpbiBzdGFwLXByb2JlLmguICAqLwotKwotK3N0cnVjdCB2YWx1ZSAqCi0rc3RhcF9ldmFsdWF0 ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJICAgICAgc3Ry dWN0IHN0YXBfcHJvYmUgKnByb2JlLAotKwkJCSAgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSwKLSsJCQkgICAgICBpbnQgbikKLSt7Ci0rICBpbnQgcG9zID0gMDsKLSsKLSsgIGlmICghcHJv YmUtPnBhcnNlZF9hcmdzKQotKyAgICBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAocHJvYmUp OwotKwotKyAgaWYgKCFwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3MKLSsgICAgICB8fCBuID49IHBy b2JlLT5wYXJzZWRfYXJncy0+bl9hcmdzKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIC8qIFRo aXMgaXMgbmVlZGVkIGJlY2F1c2Ugb24gc29tZSBhcmNoaXRlY3R1cmVzIChlLmcuLCBBUk0pIHdl IG5lZWQKLSsgICAgIHRoZSBmcmFtZSdzIGdkYmFyY2ggaW4gb3JkZXIgdG8gY29tcHV0ZSB0aGUg dmFsdWUgb2YgdGhlIGZyYW1lCi0rICAgICBwb2ludGVyLiAgKi8KLSsgIHByb2JlLT5wYXJzZWRf YXJncy0+YXJnc1tuXS5hZXhwci0+Z2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0r Ci0rICByZXR1cm4gZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChwcm9iZS0+cGFyc2VkX2FyZ3Mt PmFyZ3Nbbl0uYXR5cGUsCi0rCQkJCSAgIHByb2JlLT5wYXJzZWRfYXJncy0+YXJnc1tuXS5hZXhw ciwKLSsJCQkJICAgJnBvcywgRVZBTF9OT1JNQUwpOwotK30KLSsKLSsvKiBTZWUgZGVmaW5pdGlv biBpbiBzdGFwLXByb2JlLmguICAqLwotKwotK3ZvaWQKLStzdGFwX2NvbXBpbGVfdG9fYXggKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwK LSsJCSAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKLSsJCSAgICBzdHJ1Y3QgYXhzX3ZhbHVl ICp2YWx1ZSwKLSsJCSAgICBpbnQgbikKLSt7Ci0rICB1bmlvbiBleHBfZWxlbWVudCAqcGM7Ci0r Ci0rICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykKLSsgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1 bWVudHMgKHByb2JlKTsKLSsKLSsgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzCi0rICAg ICAgfHwgbiA+PSBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJncykKLSsgICAgcmV0dXJuOwotKwot KyAgcGMgPSBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3Nbbl0uYWV4cHItPmVsdHM7Ci0rICBnZW5f ZXhwciAocHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzW25dLmFleHByLCAmcGMsIGV4cHIsIHZhbHVl KTsKLSsKLSsgIHJlcXVpcmVfcnZhbHVlIChleHByLCB2YWx1ZSk7Ci0rICB2YWx1ZS0+dHlwZSA9 IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnc1tuXS5hdHlwZTsKLSt9Ci0rCi0rc3RydWN0IHZhbHVl ICoKLStzdGFwX3NhZmVfZXZhbHVhdGVfYXRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwg aW50IG4pCi0rewotKyAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwotKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGU7Ci0rICBpbnQgbl9wcm9iZXM7Ci0rCi0rICBwcm9iZSA9IGZpbmRfcHJvYmVf YnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAmb2JqZmlsZSk7Ci0rICBpZiAoIXByb2JlKQot KyAgICByZXR1cm4gTlVMTDsKLSsgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNmICYmIG9iamZpbGUt PnNmLT5zeW1fcHJvYmVfZm5zKTsKLSsKLSsgIG5fcHJvYmVzCi0rICAgID0gb2JqZmlsZS0+c2Yt PnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKG9iamZpbGUsCi0r CQkJCQkJCQlwcm9iZSk7Ci0rICBpZiAobiA+PSBuX3Byb2JlcykKLSsgICAgcmV0dXJuIE5VTEw7 Ci0rCi0rICByZXR1cm4gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9ldmFsdWF0ZV9w cm9iZV9hcmd1bWVudCAob2JqZmlsZSwKLSsJCQkJCQkJCSAgcHJvYmUsCi0rCQkJCQkJCQkgIGZy YW1lLAotKwkJCQkJCQkJICBuKTsKLSt9Ci0rCi0rLyogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUg c3BhY2UgYWxsb2NhdGVkIHRvIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQKLSsgICB0aGUgcHJvYmUn cyBwYXJzZWQgYXJndW1lbnRzLiAgKi8KLSsKLSt2b2lkCi0rc3RhcF9mcmVlX3BhcnNlZF9hcmdz IChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKnBhcnNlZF9hcmdzKQotK3sKLSsgIGludCBpOwotKwot KyAgaWYgKCFwYXJzZWRfYXJncwotKyAgICAgIHx8IHBhcnNlZF9hcmdzID09ICZkdW1teV9zdGFw X2FyZ3NfaW5mbwotKyAgICAgIHx8IHBhcnNlZF9hcmdzLT5uX2FyZ3MgPT0gMCkKLSsgICAgcmV0 dXJuOwotKwotKyAgZm9yIChpID0gMDsgaSA8IHBhcnNlZF9hcmdzLT5uX2FyZ3M7IGkrKykKLSsg ICAgeGZyZWUgKHBhcnNlZF9hcmdzLT5hcmdzW2ldLmFleHByKTsKLSsKLSsgIHhmcmVlIChwYXJz ZWRfYXJncy0+YXJncyk7Ci0rICB4ZnJlZSAocGFyc2VkX2FyZ3MpOwotK30KLSsKLSsvKiBBIHV0 aWxpdHkgc3RydWN0dXJlLiAgQSBWRUMgb2YgdGhlc2UgaXMgYnVpbHQgd2hlbiBoYW5kbGluZyAi aW5mbwotKyAgIHByb2JlcyIuICAqLwotKwotK3N0cnVjdCBzdGFwX3Byb2JlX2FuZF9vYmpmaWxl Ci0rewotKyAgLyogVGhlIHByb2JlLiAgKi8KLSsgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsK LSsgIC8qIFRoZSBwcm9iZSdzIG9iamZpbGUuICAqLwotKyAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7Ci0rfTsKLSsKLSt0eXBlZGVmIHN0cnVjdCBzdGFwX3Byb2JlX2FuZF9vYmpmaWxlIHN0YXBf ZW50cnk7Ci0rREVGX1ZFQ19PIChzdGFwX2VudHJ5KTsKLSsKLSsvKiBBIGhlbHBlciBmdW5jdGlv biBmb3IgY29sbGVjdF9wcm9iZXMgdGhhdCBjb21waWxlcyBhIHJlZ2V4cCBhbmQKLSsgICB0aHJv d3MgYW4gZXhjZXB0aW9uIG9uIGVycm9yLiAgVGhpcyBpbnN0YWxscyBhIGNsZWFudXAgdG8gZnJl ZSB0aGUKLSsgICByZXN1bHRpbmcgcGF0dGVybiBvbiBzdWNjZXNzLiAgSWYgUlggaXMgTlVMTCwg dGhpcyBkb2VzIG5vdGhpbmcuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rY29tcGlsZV9yeF9vcl9l cnJvciAocmVnZXhfdCAqcGF0dGVybiwgY29uc3QgY2hhciAqcngsIGNvbnN0IGNoYXIgKm1lc3Nh Z2UpCi0rewotKyAgaW50IGNvZGU7Ci0rCi0rICBpZiAoIXJ4KQotKyAgICByZXR1cm47Ci0rCi0r ICBjb2RlID0gcmVnY29tcCAocGF0dGVybiwgcngsIFJFR19OT1NVQik7Ci0rICBpZiAoY29kZSA9 PSAwKQotKyAgICBtYWtlX3JlZ2ZyZWVfY2xlYW51cCAocGF0dGVybik7Ci0rICBlbHNlCi0rICAg IHsKLSsgICAgICBjaGFyICplcnIgPSBnZXRfcmVnY29tcF9lcnJvciAoY29kZSwgcGF0dGVybik7 Ci0rCi0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZXJyKTsKLSsgICAgICBlcnJvciAoXygi JXM6ICVzIiksIG1lc3NhZ2UsIGVycik7Ci0rICAgIH0KLSt9Ci0rCi0rLyogTWFrZSBhIHZlY3Rv ciBvZiBwcm9iZXMgbWF0Y2hpbmcgT0JKTkFNRSwgUFJPVklERVIsIGFuZCBQUk9CRS4KLSsgICBF YWNoIGFyZ3VtZW50IGlzIGEgcmVnZXhwLCBvciBOVUxMLCB3aGljaCBtYXRjaGVzIGFueXRoaW5n LiAgKi8KLSsKLStzdGF0aWMgVkVDIChzdGFwX2VudHJ5KSAqCi0rY29sbGVjdF9wcm9iZXMgKGNo YXIgKm9iam5hbWUsIGNoYXIgKnByb3ZpZGVyLCBjaGFyICpwcm9iZSkKLSt7Ci0rICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZTsKLSsgIFZFQyAoc3RhcF9lbnRyeSkgKnJlc3VsdCA9IE5VTEw7Ci0r ICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSsgIHJlZ2V4X3Qgb2JqX3BhdCwgcHJvdl9wYXQs IHByb2JlX3BhdDsKLSsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChz dGFwX2VudHJ5KSwgJnJlc3VsdCk7Ci0rCi0rICBjb21waWxlX3J4X29yX2Vycm9yICgmcHJvdl9w YXQsIHByb3ZpZGVyLCBfKCJJbnZhbGlkIHByb3ZpZGVyIHJlZ2V4cCIpKTsKLSsgIGNvbXBpbGVf cnhfb3JfZXJyb3IgKCZwcm9iZV9wYXQsIHByb2JlLCBfKCJJbnZhbGlkIHByb2JlIHJlZ2V4cCIp KTsKLSsgIGNvbXBpbGVfcnhfb3JfZXJyb3IgKCZvYmpfcGF0LCBvYmpuYW1lLCBfKCJJbnZhbGlk IG9iamVjdCBmaWxlIHJlZ2V4cCIpKTsKLSsKLSsgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSsg IHsKLSsgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKLSsgICAgaW50IGksIG51bV9wcm9i ZXM7Ci0rCi0rICAgIGlmICghIG9iamZpbGUtPnNmIHx8ICEgb2JqZmlsZS0+c2YtPnN5bV9wcm9i ZV9mbnMpCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIGlmIChvYmpuYW1lKQotKyAgICAgIHsK LSsJaWYgKHJlZ2V4ZWMgKCZvYmpfcGF0LCBvYmpmaWxlLT5uYW1lLCAwLCBOVUxMLCAwKSAhPSAw KQotKwkgIGNvbnRpbnVlOwotKyAgICAgIH0KLSsKLSsgICAgcHJvYmVzID0gb2JqZmlsZS0+c2Yt PnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVzIChvYmpmaWxlLCAmbnVtX3Byb2Jlcyk7Ci0r ICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcHJvYmVzOyArK2kpCi0rICAgICAgewotKwlzdGFwX2Vu dHJ5IGVudHJ5OwotKwotKwlpZiAocHJvdmlkZXIpCi0rCSAgewotKwkgICAgaWYgKHJlZ2V4ZWMg KCZwcm92X3BhdCwgcHJvYmVzW2ldLnByb3ZpZGVyLCAwLCBOVUxMLCAwKSAhPSAwKQotKwkgICAg ICBjb250aW51ZTsKLSsJICB9Ci0rCi0rCWlmIChwcm9iZSkKLSsJICB7Ci0rCSAgICBpZiAocmVn ZXhlYyAoJnByb2JlX3BhdCwgcHJvYmVzW2ldLm5hbWUsIDAsIE5VTEwsIDApICE9IDApCi0rCSAg ICAgIGNvbnRpbnVlOwotKwkgIH0KLSsKLSsJZW50cnkucHJvYmUgPSAmcHJvYmVzW2ldOwotKwll bnRyeS5vYmpmaWxlID0gb2JqZmlsZTsKLSsJVkVDX3NhZmVfcHVzaCAoc3RhcF9lbnRyeSwgcmVz dWx0LCAmZW50cnkpOwotKyAgICAgIH0KLSsgIH0KLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKGNs ZWFudXApOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLyogQSBxc29ydCBjb21wYXJpc29u IGZ1bmN0aW9uIGZvciBzdGFwX2VudHJ5IG9iamVjdHMuICAqLwotKwotK3N0YXRpYyBpbnQKLStj b21wYXJlX2VudHJpZXMgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0rewotKyAgY29u c3Qgc3RhcF9lbnRyeSAqZWEgPSBhOwotKyAgY29uc3Qgc3RhcF9lbnRyeSAqZWIgPSBiOwotKyAg aW50IHY7Ci0rCi0rICB2ID0gc3RyY21wIChlYS0+cHJvYmUtPnByb3ZpZGVyLCBlYi0+cHJvYmUt PnByb3ZpZGVyKTsKLSsgIGlmICh2KQotKyAgICByZXR1cm4gdjsKLSsKLSsgIHYgPSBzdHJjbXAg KGVhLT5wcm9iZS0+bmFtZSwgZWItPnByb2JlLT5uYW1lKTsKLSsgIGlmICh2KQotKyAgICByZXR1 cm4gdjsKLSsKLSsgIGlmIChlYS0+cHJvYmUtPmFkZHJlc3MgPCBlYi0+cHJvYmUtPmFkZHJlc3Mp Ci0rICAgIHJldHVybiAtMTsKLSsgIGlmIChlYS0+cHJvYmUtPmFkZHJlc3MgPiBlYi0+cHJvYmUt PmFkZHJlc3MpCi0rICAgIHJldHVybiAxOwotKwotKyAgcmV0dXJuIHN0cmNtcCAoZWEtPm9iamZp bGUtPm5hbWUsIGViLT5vYmpmaWxlLT5uYW1lKTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRpb24g b2YgdGhlICJpbmZvIHByb2JlcyIgY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZv X3Byb2Jlc19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBjaGFyICpw cm92aWRlciwgKnByb2JlID0gTlVMTCwgKm9iam5hbWUgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFu dXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgTlVMTCk7Ci0rICBWRUMg KHN0YXBfZW50cnkpICppdGVtczsKLSsgIGludCBpLCBhZGRyX3dpZHRoLCBhbnlfZm91bmQ7Ci0r ICBzdGFwX2VudHJ5ICplbnRyeTsKLSsKLSsgIHByb3ZpZGVyID0gZXh0cmFjdF9hcmcgKCZhcmcp OwotKyAgaWYgKHByb3ZpZGVyKQotKyAgICB7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg cHJvdmlkZXIpOwotKwotKyAgICAgIHByb2JlID0gZXh0cmFjdF9hcmcgKCZhcmcpOwotKyAgICAg IGlmIChwcm9iZSkKLSsJewotKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHByb2JlKTsKLSsKLSsJ ICBvYmpuYW1lID0gZXh0cmFjdF9hcmcgKCZhcmcpOwotKwkgIGlmIChvYmpuYW1lKQotKwkgICAg bWFrZV9jbGVhbnVwICh4ZnJlZSwgb2JqbmFtZSk7Ci0rCX0KLSsgICAgfQotKwotKyAgaXRlbXMg PSBjb2xsZWN0X3Byb2JlcyAob2JqbmFtZSwgcHJvdmlkZXIsIHByb2JlKTsKLSsgIG1ha2VfY2xl YW51cCAoVkVDX2NsZWFudXAgKHN0YXBfZW50cnkpLCAmaXRlbXMpOwotKyAgbWFrZV9jbGVhbnVw X3VpX291dF90YWJsZV9iZWdpbl9lbmQgKGN1cnJlbnRfdWlvdXQsIDUsCi0rCQkJCSAgICAgICBW RUNfbGVuZ3RoIChzdGFwX2VudHJ5LCBpdGVtcyksCi0rCQkJCSAgICAgICAiU3lzdGVtVGFwUHJv YmVzIik7Ci0rCi0rICBpZiAoISBWRUNfZW1wdHkgKHN0YXBfZW50cnksIGl0ZW1zKSkKLSsgICAg cXNvcnQgKFZFQ19hZGRyZXNzIChzdGFwX2VudHJ5LCBpdGVtcyksCi0rCSAgIFZFQ19sZW5ndGgg KHN0YXBfZW50cnksIGl0ZW1zKSwKLSsJICAgc2l6ZW9mIChzdGFwX2VudHJ5KSwKLSsJICAgY29t cGFyZV9lbnRyaWVzKTsKLSsKLSsgIGFkZHJfd2lkdGggPSA0ICsgKGdkYmFyY2hfcHRyX2JpdCAo Z2V0X2N1cnJlbnRfYXJjaCAoKSkgLyA0KTsKLSsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKGN1 cnJlbnRfdWlvdXQsIDEwLCB1aV9sZWZ0LCAicHJvdmlkZXIiLCBfKCJQcm92aWRlciIpKTsKLSsg IHVpX291dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDEwLCB1aV9sZWZ0LCAibmFtZSIs IF8oIk5hbWUiKSk7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCBhZGRy X3dpZHRoIC0gMSwgdWlfbGVmdCwgImFkZHIiLCBfKCJXaGVyZSIpKTsKLSsgIHVpX291dF90YWJs ZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIGFkZHJfd2lkdGggLSAxLCB1aV9sZWZ0LCAic2VtYXBo b3JlIiwKLSsJCSAgICAgICBfKCJTZW1hcGhvcmUiKSk7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVy IChjdXJyZW50X3Vpb3V0LCAzMCwgdWlfbGVmdCwgIm9iamVjdCIsIF8oIk9iamVjdCIpKTsKLSsg IHVpX291dF90YWJsZV9ib2R5IChjdXJyZW50X3Vpb3V0KTsKLSsKLSsgIGZvciAoaSA9IDA7IFZF Q19pdGVyYXRlIChzdGFwX2VudHJ5LCBpdGVtcywgaSwgZW50cnkpOyArK2kpCi0rICAgIHsKLSsg ICAgICBzdHJ1Y3QgY2xlYW51cCAqaW5uZXI7Ci0rCi0rICAgICAgaW5uZXIgPSBtYWtlX2NsZWFu dXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwgInByb2JlIik7Ci0rCi0r ICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgInByb3ZpZGVyIiwgZW50 cnktPnByb2JlLT5wcm92aWRlcik7Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVu dF91aW91dCwgIm5hbWUiLCBlbnRyeS0+cHJvYmUtPm5hbWUpOwotKyAgICAgIHVpX291dF9maWVs ZF9jb3JlX2FkZHIgKGN1cnJlbnRfdWlvdXQsICJhZGRyIiwgZ2V0X2N1cnJlbnRfYXJjaCAoKSwK LSsJCQkgICAgICBlbnRyeS0+cHJvYmUtPmFkZHJlc3MpOwotKyAgICAgIGlmIChlbnRyeS0+cHJv YmUtPnNlbV9hZGRyID09IDApCi0rCXVpX291dF9maWVsZF9za2lwIChjdXJyZW50X3Vpb3V0LCAi c2VtYXBob3JlIik7Ci0rICAgICAgZWxzZQotKyAgICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIg KGN1cnJlbnRfdWlvdXQsICJzZW1hcGhvcmUiLCBnZXRfY3VycmVudF9hcmNoICgpLAotKwkJCSAg ICAgIGVudHJ5LT5wcm9iZS0+c2VtX2FkZHIpOwotKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcg KGN1cnJlbnRfdWlvdXQsICJvYmplY3QiLCBlbnRyeS0+b2JqZmlsZS0+bmFtZSk7Ci0rICAgICAg dWlfb3V0X3RleHQgKGN1cnJlbnRfdWlvdXQsICJcbiIpOwotKwotKyAgICAgIGRvX2NsZWFudXBz IChpbm5lcik7Ci0rICAgIH0KLSsKLSsgIGFueV9mb3VuZCA9ICEgVkVDX2VtcHR5IChzdGFwX2Vu dHJ5LCBpdGVtcyk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rCi0rICBpZiAoISBhbnlf Zm91bmQpCi0rICAgIHVpX291dF9tZXNzYWdlIChjdXJyZW50X3Vpb3V0LCAwLCBfKCJObyBwcm9i ZXMgbWF0Y2hlZC5cbiIpKTsKLSt9Ci0rCi0rDAotKwotKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0 YXAtcHJvYmUuaC4gICovCi0rCi0rVkVDIChzdGFwX3Byb2JlX3ApICoKLStmaW5kX3Byb2Jlc19p bl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQljb25zdCBjaGFyICpwcm92 aWRlciwKLSsJCQljb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZXM7Ci0rICBpbnQgaSwgbnVtX3Byb2JlczsKLSsgIFZFQyAoc3RhcF9wcm9iZV9wKSAqcmVz dWx0ID0gTlVMTDsKLSsKLSsgIGlmICghIG9iamZpbGUtPnNmIHx8ICEgb2JqZmlsZS0+c2YtPnN5 bV9wcm9iZV9mbnMpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgcHJvYmVzID0gb2JqZmlsZS0+ c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVzIChvYmpmaWxlLCAmbnVtX3Byb2Jlcyk7 Ci0rICBmb3IgKGkgPSAwOyBpIDwgbnVtX3Byb2JlczsgKytpKQotKyAgICB7Ci0rICAgICAgaWYg KHN0cmNtcCAocHJvYmVzW2ldLnByb3ZpZGVyLCBwcm92aWRlcikgIT0gMCkKLSsJY29udGludWU7 Ci0rCi0rICAgICAgaWYgKHN0cmNtcCAocHJvYmVzW2ldLm5hbWUsIG5hbWUpICE9IDApCi0rCWNv bnRpbnVlOwotKwotKyAgICAgIFZFQ19zYWZlX3B1c2ggKHN0YXBfcHJvYmVfcCwgcmVzdWx0LCAm cHJvYmVzW2ldKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLyogU2Vl IGRlZmluaXRpb24gaW4gc3RhcC1wcm9iZS5oLiAgKi8KLSsKLStzdHJ1Y3Qgc3ltdGFic19hbmRf bGluZXMKLStwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRyLCBzdHJ1Y3QgbGluZXNwZWNf cmVzdWx0ICpjYW5vbmljYWwpCi0rewotKyAgY2hhciAqYXJnX3N0YXJ0LCAqYXJnX2VuZCwgKmFy ZzsKLSsgIGNoYXIgKm9iamZpbGVfbmFtZSA9IE5VTEwsICpwcm92aWRlciA9IE5VTEwsICpuYW1l LCAqcDsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgc3RydWN0IHN5bXRhYnNfYW5k X2xpbmVzIHJlc3VsdDsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotKwotKyAgcmVzdWx0 LnNhbHMgPSBOVUxMOwotKyAgcmVzdWx0Lm5lbHRzID0gMDsKLSsKLSsgIGFyZ19zdGFydCA9ICph cmdwdHI7Ci0rICAvKiBUaGUgY2FsbGVyIGVuc3VyZWQgdGhhdCB0aGlzIHN0YXJ0cyB3aXRoICct cCcuICAqLwotKyAgZ2RiX2Fzc2VydCAoYXJnX3N0YXJ0ICYmIHN0cm5jbXAgKGFyZ19zdGFydCwg Ii1wIiwgMikgPT0gMCk7Ci0rICBhcmdfZW5kID0gYXJnX3N0YXJ0ICsgMjsKLSsgIGFyZ19lbmQg PSBza2lwX3NwYWNlcyAoYXJnX2VuZCk7Ci0rCi0rICBpZiAoISphcmdfZW5kKQotKyAgICBlcnJv ciAoXygiYXJndW1lbnQgdG8gYC1wJyBtaXNzaW5nIikpOwotKwotKyAgYXJnID0gYXJnX2VuZDsK LSsgIGFyZ19lbmQgPSBza2lwX3RvX3NwYWNlIChhcmdfZW5kKTsKLSsKLSsgIC8qIFdlIG1ha2Ug YSBjb3B5IGhlcmUgc28gd2UgY2FuIHdyaXRlIG92ZXIgcGFydHMgd2l0aCBpbXB1bml0eS4gICov Ci0rICBhcmcgPSBzYXZlc3RyaW5nIChhcmcsIGFyZ19lbmQgLSBhcmcpOwotKyAgY2xlYW51cCA9 IG1ha2VfY2xlYW51cCAoeGZyZWUsIGFyZyk7Ci0rCi0rICAvKiBFeHRyYWN0IGVhY2ggd29yZCBm cm9tIHRoZSBhcmd1bWVudCwgc2VwYXJhdGVkIGJ5ICI6InMuICAqLwotKyAgcCA9IHN0cmNociAo YXJnLCAnOicpOwotKyAgaWYgKHAgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIC8qIFRoaXMgaXMg YC1wIG5hbWUnLiAgKi8KLSsgICAgICBuYW1lID0gYXJnOwotKyAgICB9Ci0rICBlbHNlCi0rICAg IHsKLSsgICAgICBjaGFyICpob2xkID0gcCArIDE7Ci0rCi0rICAgICAgKnAgPSAnXDAnOwotKyAg ICAgIHAgPSBzdHJjaHIgKGhvbGQsICc6Jyk7Ci0rICAgICAgaWYgKHAgPT0gTlVMTCkKLSsJewot KwkgIC8qIFRoaXMgaXMgYC1wIHByb3ZpZGVyOm5hbWUnLiAgKi8KLSsJICBwcm92aWRlciA9IGFy ZzsKLSsJICBuYW1lID0gaG9sZDsKLSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIC8qIFRoaXMg aXMgYC1wIG9iamZpbGU6cHJvdmlkZXI6bmFtZScuICAqLwotKwkgICpwID0gJ1wwJzsKLSsJICBv YmpmaWxlX25hbWUgPSBhcmc7Ci0rCSAgcHJvdmlkZXIgPSBob2xkOwotKwkgIG5hbWUgPSBwICsg MTsKLSsJfQotKyAgICB9Ci0rCi0rICBpZiAoKm5hbWUgPT0gJ1wwJykKLSsgICAgZXJyb3IgKF8o Im5vIHByb2JlIG5hbWUgc3BlY2lmaWVkIikpOwotKyAgaWYgKHByb3ZpZGVyICYmICpwcm92aWRl ciA9PSAnXDAnKQotKyAgICBlcnJvciAoXygiaW52YWxpZCBwcm92aWRlciBuYW1lIikpOwotKyAg aWYgKG9iamZpbGVfbmFtZSAmJiAqb2JqZmlsZV9uYW1lID09ICdcMCcpCi0rICAgIGVycm9yIChf KCJpbnZhbGlkIG9iamZpbGUgbmFtZSIpKTsKLSsKLSsgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkK LSsgIHsKLSsgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKLSsgICAgaW50IGksIG51bV9w cm9iZXM7Ci0rCi0rICAgIGlmICghIG9iamZpbGUtPnNmIHx8ICEgb2JqZmlsZS0+c2YtPnN5bV9w cm9iZV9mbnMpCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIGlmIChvYmpmaWxlX25hbWUKLSsJ JiYgRklMRU5BTUVfQ01QIChvYmpmaWxlLT5uYW1lLCBvYmpmaWxlX25hbWUpICE9IDAKLSsJJiYg RklMRU5BTUVfQ01QIChsYmFzZW5hbWUgKG9iamZpbGUtPm5hbWUpLCBvYmpmaWxlX25hbWUpICE9 IDApCi0rICAgICAgY29udGludWU7Ci0rCi0rICAgIHByb2JlcyA9IG9iamZpbGUtPnNmLT5zeW1f cHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlcyAob2JqZmlsZSwgJm51bV9wcm9iZXMpOwotKyAgICBm b3IgKGkgPSAwOyBpIDwgbnVtX3Byb2JlczsgKytpKQotKyAgICAgIHsKLSsJc3RydWN0IHN5bXRh Yl9hbmRfbGluZSAqc2FsOwotKwotKwlpZiAocHJvdmlkZXIgJiYgc3RyY21wIChwcm9iZXNbaV0u cHJvdmlkZXIsIHByb3ZpZGVyKSAhPSAwKQotKwkgIGNvbnRpbnVlOwotKwotKwlpZiAoc3RyY21w IChwcm9iZXNbaV0ubmFtZSwgbmFtZSkgIT0gMCkKLSsJICBjb250aW51ZTsKLSsKLSsJKytyZXN1 bHQubmVsdHM7Ci0rCXJlc3VsdC5zYWxzID0geHJlYWxsb2MgKHJlc3VsdC5zYWxzLAotKwkJCQly ZXN1bHQubmVsdHMgKiBzaXplb2YgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUpKTsKLSsJc2FsID0g JnJlc3VsdC5zYWxzW3Jlc3VsdC5uZWx0cyAtIDFdOwotKwotKwlpbml0X3NhbCAoc2FsKTsKLSsK LSsJc2FsLT5wYyA9IHByb2Jlc1tpXS5hZGRyZXNzOwotKwlzYWwtPmV4cGxpY2l0X3BjID0gMTsK LSsJc2FsLT5zZWN0aW9uID0gZmluZF9wY19vdmVybGF5IChzYWwtPnBjKTsKLSsJc2FsLT5wc3Bh Y2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Ci0rCXNhbC0+c2VtYXBob3JlID0gcHJvYmVzW2ld LnNlbV9hZGRyOwotKyAgICAgIH0KLSsgIH0KLSsKLSsgIGlmIChyZXN1bHQubmVsdHMgPT0gMCkK LSsgICAgewotKyAgICAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1IsCi0rCQkgICBfKCJO byBwcm9iZSBtYXRjaGluZyBvYmpmaWxlPWAlcycsIHByb3ZpZGVyPWAlcycsIG5hbWU9YCVzJyIp LAotKwkJICAgb2JqZmlsZV9uYW1lID8gb2JqZmlsZV9uYW1lIDogXygiPGFueT4iKSwKLSsJCSAg IHByb3ZpZGVyID8gcHJvdmlkZXIgOiBfKCI8YW55PiIpLAotKwkJICAgbmFtZSk7Ci0rICAgIH0K LSsKLSsgIGlmIChjYW5vbmljYWwpCi0rICAgIHsKLSsgICAgICBjYW5vbmljYWwtPnNwZWNpYWxf ZGlzcGxheSA9IDE7Ci0rICAgICAgY2Fub25pY2FsLT5wcmVfZXhwYW5kZWQgPSAxOwotKyAgICAg IGNhbm9uaWNhbC0+YWRkcl9zdHJpbmcgPSBzYXZlc3RyaW5nICgqYXJncHRyLCBhcmdfZW5kIC0g KmFyZ3B0cik7Ci0rICAgIH0KLSsKLSsgICphcmdwdHIgPSBhcmdfZW5kOwotKyAgZG9fY2xlYW51 cHMgKGNsZWFudXApOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rDAotKwotKy8qIFNl ZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCi0rCi0rc3RydWN0IHN0YXBfcHJvYmUg KgotK2ZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYywgc3RydWN0IG9iamZpbGUgKipvYmpm aWxlX291dCkKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsKLSsgIEFMTF9PQkpG SUxFUyAob2JqZmlsZSkKLSsgIHsKLSsgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKLSsg ICAgaW50IGksIG51bV9wcm9iZXM7Ci0rICAgIHN0YXBfZW50cnkgZW50cnk7Ci0rCi0rICAgIGlm ICghIG9iamZpbGUtPnNmIHx8ICEgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMpCi0rICAgICAg Y29udGludWU7Ci0rCi0rICAgIC8qIElmIHRoaXMgcHJvdmVzIHRvbyBpbmVmZmljaWVudCwgd2Ug Y2FuIHJlcGxhY2Ugd2l0aCBhIGhhc2guICAqLwotKyAgICBwcm9iZXMgPSBvYmpmaWxlLT5zZi0+ c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9iZXMgKG9iamZpbGUsICZudW1fcHJvYmVzKTsKLSsg ICAgZm9yIChpID0gMDsgaSA8IG51bV9wcm9iZXM7ICsraSkKLSsgICAgICB7Ci0rCWlmIChwcm9i ZXNbaV0uYWRkcmVzcyA9PSBwYykKLSsJICB7Ci0rCSAgICAqb2JqZmlsZV9vdXQgPSBvYmpmaWxl OwotKwkgICAgcmV0dXJuICZwcm9iZXNbaV07Ci0rCSAgfQotKyAgICAgIH0KLSsgIH0KLSsKLSsg IHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBUaGlzIGlzIGNhbGxlZCB0byBjb21wdXRlIHRoZSB2 YWx1ZSBvZiBvbmUgb2YgdGhlICRfcHJvYmVfYXJnKgotKyAgIGNvbnZlbmllbmNlIHZhcmlhYmxl cy4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rY29tcHV0ZV9wcm9iZV9hcmcgKHN0 cnVjdCBnZGJhcmNoICphcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKml2YXIsCi0rCQkgICB2b2lk ICpkYXRhKQotK3sKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGdldF9zZWxlY3RlZF9m cmFtZSAoXygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7Ci0rICBDT1JFX0FERFIgcGMgPSBnZXRfZnJh bWVfcGMgKGZyYW1lKTsKLSsgIGludCBzZWwgPSAoaW50KSAodWludHB0cl90KSBkYXRhOwotKyAg c3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcGNfcHJvYmU7 Ci0rICBpbnQgbl9wcm9iZXM7Ci0rCi0rICAvKiBTRUw9PS0xIG1lYW5zICJfcHJvYmVfYXJnYyIu ICAqLwotKyAgZ2RiX2Fzc2VydCAoc2VsID49IC0xICYmIHNlbCA8PSBTVEFQX01BWF9BUkdTKTsK LSsKLSsgIHBjX3Byb2JlID0gZmluZF9wcm9iZV9ieV9wYyAocGMsICZvYmpmaWxlKTsKLSsgIGlm IChwY19wcm9iZSA9PSBOVUxMKQotKyAgICBlcnJvciAoXygiTm8gU3lzdGVtVGFwIHByb2JlIGF0 IFBDICVzIiksIGNvcmVfYWRkcl90b19zdHJpbmcgKHBjKSk7Ci0rCi0rICBuX3Byb2JlcwotKyAg ICA9IG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2Nv dW50IChvYmpmaWxlLAotKwkJCQkJCQkJcGNfcHJvYmUpOwotKyAgaWYgKHNlbCA9PSAtMSkKLSsg ICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChhcmNoKS0+YnVpbHRp bl9pbnQsIG5fcHJvYmVzKTsKLSsKLSsgIGlmIChzZWwgPj0gbl9wcm9iZXMpCi0rICAgIGVycm9y IChfKCJJbnZhbGlkIHByb2JlIGFyZ3VtZW50ICVkIC0tIHByb2JlIGhhcyAlZCBhcmd1bWVudHMg YXZhaWxhYmxlIiksCi0rCSAgIHNlbCwgbl9wcm9iZXMpOwotKwotKyAgcmV0dXJuIG9iamZpbGUt PnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKG9iamZpbGUs Ci0rCQkJCQkJCQkgIHBjX3Byb2JlLAotKwkJCQkJCQkJICBmcmFtZSwgc2VsKTsKLSt9Ci0rCi0r LyogVGhpcyBpcyBjYWxsZWQgdG8gY29tcGlsZSBvbmUgb2YgdGhlICRfcHJvYmVfYXJnKiBjb252 ZW5pZW5jZQotKyAgIHZhcmlhYmxlcyBpbnRvIGFuIGFnZW50IGV4cHJlc3Npb24uICAqLwotKwot K3N0YXRpYyB2b2lkCi0rY29tcGlsZV9wcm9iZV9hcmcgKHN0cnVjdCBpbnRlcm5hbHZhciAqaXZh ciwgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1 ZSwgdm9pZCAqZGF0YSkKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBleHByLT5zY29wZTsKLSsgIGlu dCBzZWwgPSAoaW50KSAodWludHB0cl90KSBkYXRhOwotKyAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7Ci0rICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcGNfcHJvYmU7Ci0rICBpbnQgbl9wcm9iZXM7Ci0r Ci0rICAvKiBTRUw9PS0xIG1lYW5zICJfcHJvYmVfYXJnYyIuICAqLwotKyAgZ2RiX2Fzc2VydCAo c2VsID49IC0xICYmIHNlbCA8PSBTVEFQX01BWF9BUkdTKTsKLSsKLSsgIHBjX3Byb2JlID0gZmlu ZF9wcm9iZV9ieV9wYyAocGMsICZvYmpmaWxlKTsKLSsgIGlmIChwY19wcm9iZSA9PSBOVUxMKQot KyAgICBlcnJvciAoXygiTm8gU3lzdGVtVGFwIHByb2JlIGF0IFBDICVzIiksIGNvcmVfYWRkcl90 b19zdHJpbmcgKHBjKSk7Ci0rCi0rICBuX3Byb2JlcwotKyAgICA9IG9iamZpbGUtPnNmLT5zeW1f cHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChvYmpmaWxlLAotKwkJCQkJ CQkJcGNfcHJvYmUpOwotKyAgaWYgKHNlbCA9PSAtMSkKLSsgICAgewotKyAgICAgIHZhbHVlLT5r aW5kID0gYXhzX3J2YWx1ZTsKLSsgICAgICB2YWx1ZS0+dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZXhw ci0+Z2RiYXJjaCktPmJ1aWx0aW5faW50OwotKyAgICAgIGF4X2NvbnN0X2wgKGV4cHIsIG5fcHJv YmVzKTsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGdkYl9hc3NlcnQgKHNlbCA+PSAw KTsKLSsgIGlmIChzZWwgPj0gbl9wcm9iZXMpCi0rICAgIGVycm9yIChfKCJJbnZhbGlkIHByb2Jl IGFyZ3VtZW50ICVkIC0tIHByb2JlIGhhcyAlZCBhcmd1bWVudHMgYXZhaWxhYmxlIiksCi0rCSAg IHNlbCwgbl9wcm9iZXMpOwotKwotKyAgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9j b21waWxlX3RvX2F4IChvYmpmaWxlLCBwY19wcm9iZSwKLSsJCQkJCQkgZXhwciwgdmFsdWUsIHNl bCk7Ci0rfQotKwotKwwKLSsKLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBgJF9wcm9iZV9hcmcqJyBz ZXQgb2YgdmFyaWFibGVzLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IGludGVybmFsdmFy X2Z1bmNzIHByb2JlX2Z1bmNzID0KLSt7Ci0rICBjb21wdXRlX3Byb2JlX2FyZywKLSsgIGNvbXBp bGVfcHJvYmVfYXJnLAotKyAgTlVMTAotK307Ci0rCi0rdm9pZAotK19pbml0aWFsaXplX3N0YXBf cHJvYmUgKHZvaWQpCi0rewotKyAgYWRkX2luZm8gKCJwcm9iZXMiLCBpbmZvX3Byb2Jlc19jb21t YW5kLCBfKCJcCi0rU2hvdyBhdmFpbGFibGUgc3RhdGljIHByb2Jlcy5cblwKLStVc2FnZTogaW5m byBwcm9iZXMgW1BST1ZJREVSIFtOQU1FIFtPQkpFQ1RdXV1cblwKLStFYWNoIGFyZ3VtZW50IGlz IGEgcmVndWxhciBleHByZXNzaW9uLCB1c2VkIHRvIHNlbGVjdCBwcm9iZXMuXG5cCi0rUFJPVklE RVIgbWF0Y2hlcyBwcm9iZSBwcm92aWRlciBuYW1lcy5cblwKLStOQU1FIG1hdGNoZXMgdGhlIHBy b2JlIG5hbWVzLlxuXAotK09CSkVDVCBtYXRjaCB0aGUgZXhlY3V0YWJsZSBvciBzaGFyZWQgbGli cmFyeSBuYW1lLiIpKTsKLSsKLSsgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoInN0YXAtZXhw cmVzc2lvbiIsIGNsYXNzX21haW50ZW5hbmNlLAotKwkJCSAgICAmc3RhcF9leHByZXNzaW9uX2Rl YnVnLAotKwkJCSAgICBfKCJTZXQgU3lzdGVtVGFwIGV4cHJlc3Npb24gZGVidWdnaW5nLiIpLAot KwkJCSAgICBfKCJTaG93IFN5c3RlbVRhcCBleHByZXNzaW9uIGRlYnVnZ2luZy4iKSwKLSsJCQkg ICAgXygiV2hlbiBub24temVybywgdGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uICIKLSsJCQkg ICAgICAib2YgU3lzdGVtVGFwIGV4cHJlc3Npb25zIHdpbGwgYmUgcHJpbnRlZC4iKSwKLSsJCQkg ICAgTlVMTCwKLSsJCQkgICAgc2hvd19zdGFwZXhwcmVzc2lvbmRlYnVnLAotKwkJCSAgICAmc2V0 ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0rCi0rICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlw ZV9sYXp5ICgiX3Byb2JlX2FyZ2MiLCAmcHJvYmVfZnVuY3MsCi0rCQkJCSh2b2lkICopICh1aW50 cHRyX3QpIC0xKTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVfYXJn MCIsICZwcm9iZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgMCk7Ci0rICBjcmVh dGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzEiLCAmcHJvYmVfZnVuY3MsCi0r CQkJCSh2b2lkICopICh1aW50cHRyX3QpIDEpOwotKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVf bGF6eSAoIl9wcm9iZV9hcmcyIiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9pZCAqKSAodWludHB0 cl90KSAyKTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVfYXJnMyIs ICZwcm9iZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgMyk7Ci0rICBjcmVhdGVf aW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzQiLCAmcHJvYmVfZnVuY3MsCi0rCQkJ CSh2b2lkICopICh1aW50cHRyX3QpIDQpOwotKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6 eSAoIl9wcm9iZV9hcmc1IiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9pZCAqKSAodWludHB0cl90 KSA1KTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVfYXJnNiIsICZw cm9iZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgNik7Ci0rICBjcmVhdGVfaW50 ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzciLCAmcHJvYmVfZnVuY3MsCi0rCQkJCSh2 b2lkICopICh1aW50cHRyX3QpIDcpOwotKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAo Il9wcm9iZV9hcmc4IiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9pZCAqKSAodWludHB0cl90KSA4 KTsKLSsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVfYXJnOSIsICZwcm9i ZV9mdW5jcywKLSsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgOSk7Ci0rICBjcmVhdGVfaW50ZXJu YWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzEwIiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9p ZCAqKSAodWludHB0cl90KSAxMCk7Ci0rICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgi X3Byb2JlX2FyZzExIiwgJnByb2JlX2Z1bmNzLAotKwkJCQkodm9pZCAqKSAodWludHB0cl90KSAx MSk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9zdGFwLXByb2JlLmggYi9nZGIvc3RhcC1wcm9iZS5o Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOWI2ZGM3YQotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3N0YXAtcHJvYmUuaAotQEAgLTAsMCArMSwxNDQgQEAKLSsvKiBTeXN0 ZW1UYXAgcHJvYmUgc3VwcG9ydCBmb3IgR0RCLgotKwotKyAgIENvcHlyaWdodCAoQykgMjAxMSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBv ZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwot KyNpZiAhZGVmaW5lZCAoU1RBUF9QUk9CRV9IKQotKyNkZWZpbmUgU1RBUF9QUk9CRV9IIDEKLSsK LSsjaW5jbHVkZSAidmVjLmgiCi0rCi0rc3RydWN0IHN0YXBfYXJnc19pbmZvOwotK3N0cnVjdCBh eHNfdmFsdWU7Ci0rc3RydWN0IGxpbmVzcGVjX3Jlc3VsdDsKLSsKLSsvKiBNYWluIHN0cnVjdHVy ZSB3aGljaCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBhIFN5c3RlbVRhcCBwcm9iZS4gICovCi0r Ci0rc3RydWN0IHN0YXBfcHJvYmUKLSt7Ci0rICAvKiBUaGUgcHJvdmlkZXIgb2YgdGhpcyBwcm9i ZS4gICovCi0rICBjb25zdCBjaGFyICpwcm92aWRlcjsKLSsKLSsgIC8qIFRoZSBuYW1lIG9mIHRo ZSBwcm9iZS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwotKwotKyAgLyogVGhlIGFkZHJlc3Mg d2hlcmUgdGhlIHByb2JlIGlzIGluc2VydGVkLiAgKi8KLSsgIENPUkVfQUREUiBhZGRyZXNzOwot KwotKyAgLyogVGhlIGFkZHJlc3Mgb2YgdGhlIHByb2JlJ3Mgc2VtYXBob3JlLCBvciAwIGlmIHRo aXMgcHJvYmUgZG9lcyBub3QKLSsgICAgIGhhdmUgYW4gYXNzb2NpYXRlZCBzZW1hcGhvcmUuICAq LwotKyAgQ09SRV9BRERSIHNlbV9hZGRyOwotKwotKyAgLyogUHJvYmUncyBhcmd1bWVudHMuICBV c2VycyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBleGFtaW5lIHRoaXMsIGJ1dAotKyAgICAgc2hvdWxk IGluc3RlYWQgZXh0cmFjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJndW1lbnRzIHVzaW5nIHRo ZQotKyAgICAgbWV0aG9kcyBwcm92aWRlZCBpbiBzeW1fcHJvYmVfZm5zLiAgKi8KLSsgIGNvbnN0 IGNoYXIgKmFyZ3M7Ci0rCi0rICAvKiBQcm9iZSdzIGFyZ3VtZW50cyBhZnRlciBwYXJzaW5nLiAg VGhpcyBpcyBhbiBvcGFxdWUgc3RydWN0dXJlIHRoYXQKLSsgICAgIHdpbGwgaG9sZCBpbmZvcm1h dGlvbiBhYm91dCB0aGUgYXJndW1lbnRzIHBvaW50ZWQgYnkgQVJHUy4gICovCi0rICBzdHJ1Y3Qg c3RhcF9hcmdzX2luZm8gKnBhcnNlZF9hcmdzOwotKwotKyAgLyogZ2RiYXJjaCBzdHJ1Y3R1cmUg YXNzb2NpYXRlZCB3aXRoIHRoaXMgcHJvYmUuICAqLwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2g7Ci0rfTsKLSsKLSsvKiBTdHJ1Y3R1cmUgd2hpY2ggaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQg dGhlIHBhcnNpbmcgcHJvY2VzcyBvZiBvbmUgcHJvYmUncwotKyAgIGFyZ3VtZW50LiAgKi8KLSsK LStzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvCi0rewotKyAgLyogVGhlIHByb2JlJ3MgYXJndW1lbnQg aW4gYSBzdHJpbmcgZm9ybWF0LiAgKi8KLSsgIGNvbnN0IGNoYXIgKmFyZzsKLSsKLSsgIC8qIEEg cG9pbnRlciB0byB0aGUgZnVsbCBjaGFpbiBvZiBhcmd1bWVudHMuICBUaGlzIGlzIHVzZWZ1bCBm b3IgcHJpbnRpbmcKLSsgICAgIGVycm9yIG1lc3NhZ2VzLiAgVGhlIHBhcnNlciBmdW5jdGlvbnMg c2hvdWxkIG5vdCBtb2RpZnkgdGhpcyBhcmd1bWVudAotKyAgICAgZGlyZWN0bHk7IGluc3RlYWQs IHRoZXkgc2hvdWxkIHVzZSB0aGUgQVJHIHBvaW50ZXIgYWJvdmUuICAqLwotKyAgY29uc3QgY2hh ciAqc2F2ZWRfYXJnOwotKwotKyAgLyogVGhlIGV4cGVjdGVkIGFyZ3VtZW50IHR5cGUgKGJpdG5l c3MpLCBhcyBkZWZpbmVkIGluIHRoZSBwcm9iZSdzCi0rICAgICBhcmd1bWVudC4gIEZvciBpbnN0 YW5jZSwgaWYgdGhlIGFyZ3VtZW50IGJlZ2lucyB3aXRoIGAtOEAnLCBpdCBtZWFucwotKyAgICAg dGhlIGJpdG5lc3MgaXMgNjQtYml0IHNpZ25lZC4gIEluIHRoaXMgY2FzZSwgQVJHX1RZUEUgd291 bGQgcmVwcmVzZW50Ci0rICAgICB0aGUgdHlwZSBgaW50NjRfdCcuICAqLwotKyAgc3RydWN0IHR5 cGUgKmFyZ190eXBlOwotKwotKyAgLyogQSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IGdkYmFyY2gu ICAqLwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0rCi0rICAvKiBHcmVhdGVyIHRoYW4g emVybyBpZiB3ZSBhcmUgaW5zaWRlIGEgcGFyZW50aGVzaXplZCBleHByZXNzaW9uLiAgVXNlZnVs Ci0rICAgICBmb3Iga25vd2luZyB3aGVuIHRvIHNraXAgc3BhY2VzIG9yIG5vdC4gICovCi0rICBp bnQgaW5zaWRlX3BhcmVuX3A7Ci0rfTsKLSsKLSt0eXBlZGVmIHN0cnVjdCBzdGFwX3Byb2JlICpz dGFwX3Byb2JlX3A7Ci0rREVGX1ZFQ19QIChzdGFwX3Byb2JlX3ApOwotKwotKy8qIEEgaGVscGVy IGZvciBsaW5lc3BlYyB0aGF0IGRlY29kZXMgYSBzdGFwIHByb2JlIHNwZWNpZmljYXRpb24uICBJ dAotKyAgIHJldHVybnMgYSBzeW10YWJzX2FuZF9saW5lcyBvYmplY3QgYW5kIHVwZGF0ZXMgKkFS R1BUUiBvciB0aHJvd3MgYW4KLSsgICBlcnJvci4gICovCi0rCi0rZXh0ZXJuIHN0cnVjdCBzeW10 YWJzX2FuZF9saW5lcyBwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJncHRyLAotKwkJCQkJCSAg c3RydWN0IGxpbmVzcGVjX3Jlc3VsdCAqY2Fub24pOwotKwotKy8qIFNlYXJjaCBPQkpGSUxFIGZv ciBhIHByb2JlIHdpdGggdGhlIGdpdmVuIFBST1ZJREVSIGFuZCBOQU1FLgotKyAgIFJldHVybiBh IFZFQyBvZiBhbGwgcHJvYmVzIHRoYXQgd2VyZSBmb3VuZC4gIElmIG5vIG1hdGNoaW5nIHByb2Jl Ci0rICAgaXMgZm91bmQsIHJldHVybiBOVUxMLiAgVGhlIGNhbGxlciBtdXN0IGZyZWUgdGhlIFZF Qy4gICovCi0rCi0rZXh0ZXJuIFZFQyAoc3RhcF9wcm9iZV9wKSAqZmluZF9wcm9iZXNfaW5fb2Jq ZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCQkJICAgY29uc3QgY2hhciAqcHJv dmlkZXIsCi0rCQkJCQkJICAgY29uc3QgY2hhciAqbmFtZSk7Ci0rCi0rLyogR2l2ZW4gYSBQQywg ZmluZCBhbiBhc3NvY2lhdGVkIFN5c3RlbVRhcCBwcm9iZS4gIElmIGEgcHJvYmUgaXMKLSsgICBm b3VuZCwgc2V0ICpPQkpGSUxFX09VVCB0byB0aGUgcHJvYmUncyBvYmpmaWxlLCBhbmQgcmV0dXJu IHRoZQotKyAgIHByb2JlLiAgSWYgbm8gcHJvYmUgaXMgZm91bmQsIHJldHVybiBOVUxMLiAgKi8K LSsKLStleHRlcm4gc3RydWN0IHN0YXBfcHJvYmUgKmZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQURE UiBwYywKLSsJCQkJCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKLSsKLSsvKiBH aXZlbiBQUk9CRSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwcmVzZW50IGluIHRo YXQgcHJvYmUncwotKyAgIGFyZ3VtZW50IHN0cmluZy4gICovCi0rCi0rZXh0ZXJuIGludCBzdGFw X2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKTsKLSsK LSsvKiBHaXZlbiBQQVJTRURfQVJHUywgZnJlZXMgdGhlIHNwYWNlIGFsbG9jYXRlZCB0byBob2xk IGluZm9ybWF0aW9uIGFib3V0Ci0rICAgdGhlIHByb2JlJ3MgcGFyc2VkIGFyZ3VtZW50cy4gICov Ci0rCi0rZXh0ZXJuIHZvaWQgc3RhcF9mcmVlX3BhcnNlZF9hcmdzIChzdHJ1Y3Qgc3RhcF9hcmdz X2luZm8gKnBhcnNlZF9hcmdzKTsKLSsKLSsvKiBFdmFsdWF0ZSB0aGUgcHJvYmUncyBhcmd1bWVu dCBOLCByZXR1cm5pbmcgYSB2YWx1ZSBjb3JyZXNwb25kaW5nCi0rICAgdG8gaXQuICAqLwotKwot K2V4dGVybiBzdHJ1Y3QgdmFsdWUgKnN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkJCSAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwK LSsJCQkJCQkgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCQkJICAgaW50IG4pOwot KwotKy8qIENvbXBpbGUgdGhlIHByb2JlJ3MgYXJndW1lbnQgTiB0byBhZ2VudCBleHByZXNzaW9u LiAgKi8KLSsKLStleHRlcm4gdm9pZCBzdGFwX2NvbXBpbGVfdG9fYXggKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAotKwkJCQlzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCi0rCQkJCXN0cnVjdCBh Z2VudF9leHByICpleHByLAotKwkJCQlzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKLSsJCQkJaW50 IG4pOwotKwotKy8qIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBmaW5kcyBhIHByb2JlIGF0 IHRoZSBQQyBpbiBGUkFNRSBhbmQKLSsgICBldmFsdWF0ZXMgYXJndW1lbnQgTi4gIElmIHRoZXJl IGlzIG5vIHByb2JlIGF0IHRoYXQgbG9jYXRpb24sIG9yIGlmCi0rICAgdGhlIHByb2JlIGRvZXMg bm90IGhhdmUgZW5vdWdoIGFyZ3VtZW50cywgdGhpcyByZXR1cm5zIE5VTEwuICAqLwotKwotK2V4 dGVybiBzdHJ1Y3QgdmFsdWUgKnN0YXBfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lLAotKwkJCQkJICAgICAgIGludCBuKTsKLSsKLSsjZW5kaWYgLyogIWRlZmlu ZWQgKFNUQVBfUFJPQkVfSCkgKi8KLWRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5oIGIvZ2RiL3N5 bWZpbGUuaAotaW5kZXggNmI2NjRjZC4uNmNhNzk3ZCAxMDA2NDQKLS0tLSBhL2dkYi9zeW1maWxl LmgKLSsrKyBiL2dkYi9zeW1maWxlLmgKLUBAIC0yOSw2ICsyOSwxMSBAQCBzdHJ1Y3Qgb2JqZmls ZTsKLSBzdHJ1Y3Qgb2JqX3NlY3Rpb247Ci0gc3RydWN0IG9ic3RhY2s7Ci0gc3RydWN0IGJsb2Nr OwotK3N0cnVjdCBzdGFwX3Byb2JlOwotK3N0cnVjdCB2YWx1ZTsKLStzdHJ1Y3QgZnJhbWVfaW5m bzsKLStzdHJ1Y3QgYWdlbnRfZXhwcjsKLStzdHJ1Y3QgYXhzX3ZhbHVlOwotIAotIC8qIENvbXBh cmlzb24gZnVuY3Rpb24gZm9yIHN5bWJvbCBsb29rIHVwcy4gICovCi0gCi1AQCAtMjk5LDYgKzMw NCw1MiBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucwotIAkJCQlpbnQgbmVlZF9mdWxs bmFtZSk7Ci0gfTsKLSAKLSsvKiBTdHJ1Y3R1cmUgb2YgZnVuY3Rpb25zIHVzZWQgZm9yIFN5c3Rl bVRhcCBwcm9iZSBzdXBwb3J0LiAgSWYgb25lIG9mCi0rICAgdGhlc2UgZnVuY3Rpb25zIGlzIHBy b3ZpZGVkLCBhbGwgbXVzdCBiZS4gICovCi0rCi0rc3RydWN0IHN5bV9wcm9iZV9mbnMKLSt7Ci0r ICAvKiBJZiBub24tTlVMTCwgcmV0dXJuIGFuIGFycmF5IG9mIFN5c3RlbVRhcCBwcm9iZSBvYmpl Y3RzLiAgVGhlCi0rICAgICBudW1iZXIgb2Ygb2JqZWN0cyBpcyByZXR1cm5lZCBpbiAqTlVNX1BS T0JFUy4gICovCi0rICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqKCpzeW1fZ2V0X3Byb2JlcykgKHN0cnVj dCBvYmpmaWxlICosCi0rCQkJCQkgICAgICBpbnQgKm51bV9wcm9iZXMpOwotKwotKyAgLyogUmV0 dXJuIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGF2YWlsYWJsZSB0byBQUk9CRS4gIFBST0JFIHdp bGwKLSsgICAgIGhhdmUgY29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9iamZpbGUncyBzeW1fZ2V0 X3Byb2JlcyBtZXRob2QuCi0rICAgICBJZiB5b3UgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBv ZiBzeW1fZ2V0X3Byb2JlcywgeW91IG11c3QKLSsgICAgIGltcGxlbWVudCB0aGlzIG1ldGhvZCBh cyB3ZWxsLiAgKi8KLSsgIGludCAoKnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQpIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJICAgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZSk7Ci0rCi0rICAvKiBFdmFsdWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGF2YWlsYWJsZSB0byBQUk9C RS4gIFBST0JFIHdpbGwgaGF2ZQotKyAgICAgY29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9iamZp bGUncyBzeW1fZ2V0X3Byb2JlcyBtZXRob2QuICBOIHdpbGwKLSsgICAgIGJlIGJldHdlZW4gMCBh bmQgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgYXZhaWxhYmxlIHRvIHRoaXMgcHJvYmUuCi0rICAg ICBGUkFNRSBpcyB0aGUgZnJhbWUgaW4gd2hpY2ggdGhlIGV2YWx1YXRpb24gaXMgZG9uZTsgdGhl IGZyYW1lJ3MKLSsgICAgIFBDIHdpbGwgbWF0Y2ggdGhlIGFkZHJlc3Mgb2YgdGhlIHByb2JlLiAg SWYgeW91IHByb3ZpZGUgYW4KLSsgICAgIGltcGxlbWVudGF0aW9uIG9mIHN5bV9nZXRfcHJvYmVz LCB5b3UgbXVzdCBpbXBsZW1lbnQgdGhpcyBtZXRob2QKLSsgICAgIGFzIHdlbGwuICAqLwotKyAg c3RydWN0IHZhbHVlICooKnN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCkgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotKwkJCQkJCXN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKLSsJCQkJCQlz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCQkJaW50IG4pOwotKwotKyAgLyogQ29tcGls ZSB0aGUgTnRoIHByb2JlIGFyZ3VtZW50IHRvIGFuIGFnZW50IGV4cHJlc3Npb24uICBQUk9CRQot KyAgICAgd2lsbCBoYXZlIGNvbWUgZnJvbSBhIGNhbGwgdG8gdGhpcyBvYmpmaWxlJ3Mgc3ltX2dl dF9wcm9iZXMKLSsgICAgIG1ldGhvZC4gIE4gd2lsbCBiZSBiZXR3ZWVuIDAgYW5kIHRoZSBudW1i ZXIgb2YgYXJndW1lbnRzCi0rICAgICBhdmFpbGFibGUgdG8gdGhpcyBwcm9iZS4gIEVYUFIgYW5k IFZBTFVFIGFyZSB0aGUgYWdlbnQgZXhwcmVzc2lvbgotKyAgICAgdGhhdCBpcyBiZWluZyB1cGRh dGVkLiAgKi8KLSsgIHZvaWQgKCpzeW1fY29tcGlsZV90b19heCkgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotKwkJCSAgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAotKwkJCSAgICAgc3Ry dWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkJICAgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwK LSsJCQkgICAgIGludCBuKTsKLSsKLSsgIC8qIFJlbG9jYXRlIHRoZSBwcm9iZSBzZWN0aW9uIG9m IE9CSkZJTEUuICAqLwotKyAgdm9pZCAoKnN5bV9yZWxvY2F0ZV9wcm9iZSkgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotKwkJCSAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZz ZXRzLAotKwkJCSAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRhKTsKLSt9OwotKwot IC8qIFN0cnVjdHVyZSB0byBrZWVwIHRyYWNrIG9mIHN5bWJvbCByZWFkaW5nIGZ1bmN0aW9ucyBm b3IgdmFyaW91cwotICAgIG9iamVjdCBmaWxlIHR5cGVzLiAgKi8KLSAKLUBAIC0zNjksNiArNDIw LDEwIEBAIHN0cnVjdCBzeW1fZm5zCi0gCi0gICBiZmRfYnl0ZSAqKCpzeW1fcmVsb2NhdGUpIChz dHJ1Y3Qgb2JqZmlsZSAqLCBhc2VjdGlvbiAqc2VjdHAsIGJmZF9ieXRlICpidWYpOwotIAotKyAg LyogSWYgbm9uLU5VTEwsIHRoaXMgb2JqZmlsZSBoYXMgcHJvYmUgc3VwcG9ydCwgYW5kIGFsbCB0 aGUgcHJvYmUKLSsgICAgIGZ1bmN0aW9ucyByZWZlcnJlZCB0byBoZXJlIHdpbGwgYmUgbm9uLU5V TEwuICAqLwotKyAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnN5bV9wcm9iZV9mbnM7Ci0r Ci0gICAvKiBUaGUgInF1aWNrIiAoYWthIHBhcnRpYWwpIHN5bWJvbCBmdW5jdGlvbnMgZm9yIHRo aXMgc3ltYm9sCi0gICAgICByZWFkZXIuICAqLwotICAgY29uc3Qgc3RydWN0IHF1aWNrX3N5bWJv bF9mdW5jdGlvbnMgKnFmOwotZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIu YwotaW5kZXggMTc0NmQ2OS4uMmFiYzE3ZiAxMDA2NDQKLS0tLSBhL2dkYi9zeW10YWIuYwotKysr IGIvZ2RiL3N5bXRhYi5jCi1AQCAtODY5LDYgKzg2OSw3IEBAIGluaXRfc2FsIChzdHJ1Y3Qgc3lt dGFiX2FuZF9saW5lICpzYWwpCi0gICBzYWwtPmVuZCA9IDA7Ci0gICBzYWwtPmV4cGxpY2l0X3Bj ID0gMDsKLSAgIHNhbC0+ZXhwbGljaXRfbGluZSA9IDA7Ci0rICBzYWwtPnNlbWFwaG9yZSA9IDA7 Ci0gfQotIAwKLSAKLWRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmggYi9nZGIvc3ltdGFiLmgKLWlu ZGV4IDQ4MzZkZDYuLjY2OGEyMmIgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltdGFiLmgKLSsrKyBiL2dk Yi9zeW10YWIuaAotQEAgLTEwNTYsNiArMTA1NiwxMCBAQCBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5l Ci0gICBDT1JFX0FERFIgZW5kOwotICAgaW50IGV4cGxpY2l0X3BjOwotICAgaW50IGV4cGxpY2l0 X2xpbmU7Ci0rCi0rICAvKiBJZiBub24temVybywgdGhlIHNlbWFwaG9yZSBsb2NhdGlvbiBhc3Nv Y2lhdGVkIHdpdGggYSBTeXN0ZW1UYXAKLSsgICAgIHByb2JlLiAgKi8KLSsgIENPUkVfQUREUiBz ZW1hcGhvcmU7Ci0gfTsKLSAKLSBleHRlcm4gdm9pZCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9h bmRfbGluZSAqc2FsKTsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2Vk X2FycmF5LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCi1pbmRl eCA2Nzg2MzljLi40N2EyMjAyIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3Bh Y2tlZF9hcnJheS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXku ZXhwCi1AQCAtNjAsNSArNjAsMTEgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0ZXN0IiAiJHRlc3Qi IHsKLSAgICAgICAgICMgYXJlLiAgT2JzZXJ2ZWQgd2l0aCAoRlNGIEdOVSBBZGEgNC41LjMgMjAx MTAxMjQpLgotICAgICAgICAgeGZhaWwgJHRlc3QKLSAgICAgfQotKyAgICAtcmUgIj0gXFwoXFwp XFtcclxuXF0rJGdkYl9wcm9tcHQgJCIgewotKwkjIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSBy ZXNvbHZlcyBpdCBhcyBhIGR5bmFtaWMgdHlwZSByZXNvbHZlZCBhcyBhbgotKwkjIGVtcHR5IGFy cmF5IFswLi4tMV0uCi0rCSMgRFdfQVRfdXBwZXJfYm91bmQgOiAoRFdfT1BfZmJyZWc6IC00ODsg RFdfT1BfZGVyZWYpCi0rICAgICAgICB4ZmFpbCAkdGVzdAotKyAgICB9Ci0gfQotIAotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKLW5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi44M2ZhYWY2Ci0tLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUwotQEAgLTAs MCArMSw0NTcgQEAKLSsJLmZpbGUJIng4Nl82NC12bGEtcG9pbnRlci5jIgotKwkuc2VjdGlvbgku ZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwotKy5MZGVidWdfYWJicmV2MDoKLSsJLnNlY3Rpb24J LmRlYnVnX2luZm8sIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19pbmZvMDoKLSsJLnNlY3Rpb24JLmRl YnVnX2xpbmUsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19saW5lMDoKLSsJLnRleHQKLSsuTHRleHQw OgotKy5nbG9ibCBmb28KLSsJLnR5cGUJZm9vLCBAZnVuY3Rpb24KLStmb286Ci0rLkxGQjI6Ci0r CS5maWxlIDEgIng4Nl82NC12bGEtcG9pbnRlci5jIgotKwkubG9jIDEgMjIgMAotKwlwdXNocQkl cmJwCi0rLkxDRkkwOgotKwltb3ZxCSVyc3AsICVyYnAKLSsuTENGSTE6Ci0rCXN1YnEJJDY0LCAl cnNwCi0rLkxDRkkyOgotKwltb3ZsCSVlZGksIC0zNiglcmJwKQotKwkubG9jIDEgMjIgMAotKwlt b3ZxCSVyc3AsICVyYXgKLSsJbW92cQklcmF4LCAtNDgoJXJicCkKLSsJLmxvYyAxIDIzIDAKLSsJ bW92bAktMzYoJXJicCksICVlZHgKLSsJbW92c2xxCSVlZHgsJXJheAotKwlzdWJxCSQxLCAlcmF4 Ci0rCW1vdnEJJXJheCwgLTI0KCVyYnApCi0rCS5sb2MgMSAyNCAwCi0rCW1vdnNscQklZWR4LCVy YXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJc2hycQkkNCwgJXJheAot KwlzYWxxCSQ0LCAlcmF4Ci0rCXN1YnEJJXJheCwgJXJzcAotKwltb3ZxCSVyc3AsIC01NiglcmJw KQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAl cmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJbW92cQklcmF4LCAtNTYoJXJicCkKLSsJbW92cQktNTYo JXJicCksICVyYXgKLSsJbW92cQklcmF4LCAtMTYoJXJicCkKLSsJLmxvYyAxIDI3IDAKLSsJbW92 bAkkMCwgLTQoJXJicCkKLSsJam1wCS5MMgotKy5MMzoKLSsJLmxvYyAxIDI4IDAKLSsJbW92bAkt NCglcmJwKSwgJWVzaQotKwltb3ZsCS00KCVyYnApLCAlZWF4Ci0rCW1vdmwJJWVheCwgJWVjeAot Kwltb3ZxCS0xNiglcmJwKSwgJXJkeAotKwltb3ZzbHEJJWVzaSwlcmF4Ci0rCW1vdmIJJWNsLCAo JXJkeCwlcmF4KQotKwkubG9jIDEgMjcgMAotKwlhZGRsCSQxLCAtNCglcmJwKQotKy5MMjoKLSsJ bW92bAktNCglcmJwKSwgJWVheAotKwljbXBsCS0zNiglcmJwKSwgJWVheAotKwlqbAkuTDMKLSsJ LmxvYyAxIDMwIDAKLSsJLmdsb2JsCWJyZWFrX2hlcmUKLSticmVha19oZXJlOgotKwltb3ZxCS0x NiglcmJwKSwgJXJheAotKwltb3ZiCSQwLCAoJXJheCkKLSsJbW92cQktNDgoJXJicCksICVyc3AK LSsJLmxvYyAxIDMxIDAKLSsJbGVhdmUKLSsJcmV0Ci0rLkxGRTI6Ci0rCS5zaXplCWZvbywgLi1m b28KLSsJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBwcm9nYml0cwotKy5MZnJhbWUwOgotKwku bG9uZwkuTEVDSUUwLS5MU0NJRTAKLSsuTFNDSUUwOgotKwkubG9uZwkweGZmZmZmZmZmCi0rCS5i eXRlCTB4MQotKwkuc3RyaW5nCSIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwku Ynl0ZQkweDEwCi0rCS5ieXRlCTB4YwotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHg4Ci0r CS5ieXRlCTB4OTAKLSsJLnVsZWIxMjggMHgxCi0rCS5hbGlnbiA4Ci0rLkxFQ0lFMDoKLSsuTFNG REUwOgotKwkubG9uZwkuTEVGREUwLS5MQVNGREUwCi0rLkxBU0ZERTA6Ci0rCS5sb25nCS5MZnJh bWUwCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyLS5MRkIyCi0rCS5ieXRlCTB4NAotKwku bG9uZwkuTENGSTAtLkxGQjIKLSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJ MHg4NgotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAK LSsJLmJ5dGUJMHhkCi0rCS51bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZERTA6Ci0rCS5z ZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCi0rLkxmcmFtZTE6Ci0rCS5sb25nCS5MRUNJ RTEtLkxTQ0lFMQotKy5MU0NJRTE6Ci0rCS5sb25nCTB4MAotKwkuYnl0ZQkweDEKLSsJLnN0cmlu ZwkielIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0ZQkweDEwCi0rCS51 bGViMTI4IDB4MQotKwkuYnl0ZQkweDMKLSsJLmJ5dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwku dWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsu TEVDSUUxOgotKy5MU0ZERTE6Ci0rCS5sb25nCS5MRUZERTEtLkxBU0ZERTEKLSsuTEFTRkRFMToK LSsJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKLSsJLmxvbmcJLkxGQjIKLSsJLmxvbmcJLkxGRTIt LkxGQjIKLSsJLnVsZWIxMjggMHgwCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTAtLkxGQjIK LSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4NgotKwkudWxlYjEyOCAw eDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0rCS51 bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZERTE6Ci0rCS50ZXh0Ci0rLkxldGV4dDA6Ci0r CS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19sb2MwOgotKy5MTFNU MDoKLSsJLnF1YWQJLkxGQjItLkx0ZXh0MAotKwkucXVhZAkuTENGSTAtLkx0ZXh0MAotKwkudmFs dWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJLnNsZWIxMjggOAotKwkucXVhZAkuTENGSTAtLkx0ZXh0 MAotKwkucXVhZAkuTENGSTEtLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJ LnNsZWIxMjggMTYKLSsJLnF1YWQJLkxDRkkxLS5MdGV4dDAKLSsJLnF1YWQJLkxGRTItLkx0ZXh0 MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzYKLSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJMHgw Ci0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfaW5mbwotKy5MZGVidWdfcmVsYXRpdmU6 Ci0rCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAotKy5MZGVidWdfc3RhcnQ6Ci0r CS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCi0rCS5ieXRlCTB4OAotKwkudWxl YjEyOCAweDEKLSsJLmxvbmcJLkxBU0YyCi0rCS5ieXRlCTB4MQotKwkubG9uZwkuTEFTRjMKLSsJ LmxvbmcJLkxBU0Y0Ci0rCS5xdWFkCS5MdGV4dDAKLSsJLnF1YWQJLkxldGV4dDAKLSsJLmxvbmcJ LkxkZWJ1Z19saW5lMAotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJImZv byIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTYKLSsJLmJ5dGUJMHgxCi0rCS5xdWFkCS5MRkIy Ci0rCS5xdWFkCS5MRkUyCi0rCS5sb25nCS5MTFNUMAotKwkubG9uZwkuTHR5cGVfaW50IC0gLkxk ZWJ1Z19yZWxhdGl2ZQotKwkudWxlYjEyOCAweDMKLSsJLmxvbmcJLkxBU0Y1Ci0rCS5ieXRlCTB4 MQotKwkuYnl0ZQkweDE1Ci0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0r CS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC01MgotKy5MdGFnX3BvaW50ZXI6 Ci0rCS51bGViMTI4IDB4NAotKwkuYnl0ZQkweDgJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5s b25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbwkvKiBEV19BVF90eXBlICovCi0rCS51 bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1IChEV19UQUdfdmFyaWFibGUpICovCi0rCS5s b25nCS5MQVNGMAotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxOAotKyNpZiAxCi0rCS5sb25nCS5M dGFnX3BvaW50ZXIgLSAuZGVidWdfaW5mbwotKyNlbHNlCi0rCS8qIERlYnVnZ2luZyBvbmx5OiBT a2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAgKi8KLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlw ZSAtIC5kZWJ1Z19pbmZvCi0rI2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Js b2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTMy Ci0rI2lmIDAKLSsJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCi0rI2Vsc2UKLSsJLmJ5dGUJ MHg5NgkvKiBEV19PUF9ub3AgKi8KLSsjZW5kaWYKLSsJLyogRFdfQVRfbG9jYXRpb246IERXX0ZP Uk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg2Ci0rCS5zdHJpbmcJImkiCi0rCS5ieXRl CTB4MQotKwkuYnl0ZQkweDE5Ci0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZl Ci0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC0yMAotKwkuYnl0ZQkweDAK LSsuTHR5cGVfaW50OgotKwkudWxlYjEyOCAweDcKLSsJLmJ5dGUJMHg0Ci0rCS5ieXRlCTB4NQot Kwkuc3RyaW5nCSJpbnQiCi0rLkx0YWdfYXJyYXlfdHlwZToKLSsJLnVsZWIxMjggMHg4CS8qIEFi YnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLwotKwkubG9uZwkuTHR5cGVfY2hh ciAtIC5MZGVidWdfcmVsYXRpdmUKLSsJLmxvbmcJLkx0eXBlX3Vsb25nIC0gLkxkZWJ1Z19yZWxh dGl2ZQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3JlZjQgKi8KLSsxOgkvKiBEV19BVF9kYXRh X2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMmYgLSAzZgkvKiBs ZW5ndGggKi8KLSszOgotKwkuYnl0ZQkweDk3CS8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3Mg Ki8KLSsjaWYgMQotKwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0 ZQkweDk2CS8qIERXX09QX25vcCAqLwotKyNlbmRpZgotKzI6CS8qIERXX0FUX2RhdGFfbG9jYXRp b246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KLSsJLnVsZWIxMjggMHg5Ci0rCS5sb25nCS5MdHlw ZV9jaGFyIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8K LSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTQwCi0rCS5ieXRlCTB4Ngot KwkuYnl0ZQkweDAKLSsuTHR5cGVfdWxvbmc6Ci0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDgK LSsJLmJ5dGUJMHg3Ci0rLkx0eXBlX2NoYXI6Ci0rCS51bGViMTI4IDB4YgotKwkuYnl0ZQkweDEK LSsJLmJ5dGUJMHg2Ci0rCS5sb25nCS5MQVNGMQotKwkuYnl0ZQkweDAKLSsuTGRlYnVnX2VuZDoK LSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgx MQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHgyNQotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIx MjggMHgxMwotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQot KwkudWxlYjEyOCAweDFiCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDExCi0rCS51bGVi MTI4IDB4MQotKwkudWxlYjEyOCAweDEyCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEw Ci0rCS51bGViMTI4IDB4NgotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4 MgotKwkudWxlYjEyOCAweDJlCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDNmCi0rCS51bGVi MTI4IDB4YwotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0rCS51bGViMTI4IDB4M2EK LSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGVi MTI4IDB4MjcKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgx Ci0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4NDAKLSsJLnVs ZWIxMjggMHg2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEzCi0rCS5ieXRlCTB4MAot KwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDNhCi0rCS51bGVi MTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5 Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQotKwkuYnl0 ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NAkvKiAuTHRhZ19wb2ludGVyIGFiYnJl diAqLwotKwkudWxlYjEyOCAweDBmCS8qIERXX1RBR19wb2ludGVyX3R5cGUgKi8KLSsJLmJ5dGUJ MHgwCi0rCS51bGViMTI4IDB4MGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJ LnVsZWIxMjggMHgxMwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NQot KwkudWxlYjEyOCAweDM0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjgg MHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJ LnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEy OCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIx MjggMHg2Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwku dWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjgg MHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0r CS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwku dWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJ LnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLwot KwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlw ZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDEJ LyogRFdfQVRfc2libGluZyAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwot KwkudWxlYjEyOCAweDUwCS8qIERXX0FUX2RhdGFfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjggMHhh CS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIx MjggMHg5Ci0rCS51bGViMTI4IDB4MjEKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NDkJLyog RFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxl YjEyOCAweDJmCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4YQotKwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQot KwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkuYnl0ZQkw eDAKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMs IiIsQHByb2diaXRzCi0rCS5sb25nCTB4MTYKLSsJLnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVn X2luZm8wCi0rCS5sb25nCTB4YTgKLSsJLmxvbmcJMHgyZAotKwkuc3RyaW5nCSJmb28iCi0rCS5s b25nCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJ MHgyYwotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJLmJ5dGUJMHg4Ci0r CS5ieXRlCTB4MAotKwkudmFsdWUJMHgwCi0rCS52YWx1ZQkweDAKLSsJLnF1YWQJLkx0ZXh0MAot KwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCi0rCS5xdWFkCTB4MAotKwkucXVhZAkweDAKLSsJLnNl Y3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBwcm9nYml0cywxCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJh cnJheSIKLSsuTEFTRjU6Ci0rCS5zdHJpbmcJInNpemUiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSJ4 ODZfNjQtdmxhLXBvaW50ZXIuYyIKLSsuTEFTRjY6Ci0rCS5zdHJpbmcJImFycmF5X3QiCi0rLkxB U0YxOgotKwkuc3RyaW5nCSJjaGFyIgotKy5MQVNGNDoKLSsJLnN0cmluZwkiZ2RiLmFyY2giCi0r LkxBU0YyOgotKwkuc3RyaW5nCSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03 KSIKLSsJLmlkZW50CSJHQ0M6IChHTlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcp IgotKwkuc2VjdGlvbgkubm90ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi5mZTJjOGY3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jCi1AQCAtMCwwICsxLDQzIEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmIDAKLSsKLSt2b2lkCi0rZm9v IChpbnQgc2l6ZSkKLSt7Ci0rICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKLSsgIGFycmF5 X3QgYXJyYXk7Ci0rICBpbnQgaTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCi0r ICAgIGFycmF5W2ldID0gaTsKLSsKLSsgIGFycmF5WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwot K30KLSsKLSsjZWxzZQotKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgZm9vICgyNik7Ci0r ICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi5kMjQzY2YxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKLUBAIC0wLDAgKzEsNjYgQEAKLSsj IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0g dGhlbiB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1w b2ludGVyLmV4cCB0ZXN0IG1hZGUgb25seSBmb3IgeDg2XzY0LiIKLSsgICAgcmV0dXJuCi0rfQot KwotK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXBvaW50ZXIKLStzZXQgc3JjYXNtZmlsZSAke3Rl c3RmaWxlfS1mb28uUwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rc2V0IGJpbm9iamZpbGUgJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28ubwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxlfSIgb2JqZWN0IHt9XSAh PSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgot KyAgICByZXR1cm4gLTEKLSt9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2Rl YnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJv Z3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQot KwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB4ODZfNjQtdmxhLXBvaW50ZXIK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9icmVha3BvaW50ICJicmVha19oZXJlIgotKwot K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl90ZXN0ICJ3 aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxdIiAiZmly c3Q6IHdoYXRpcyBhcnJheSIKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBc XChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJ3 aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiB3aGF0aXMgKmFy cmF5IgotK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAi Zmlyc3Q6IHB0eXBlICphcnJheSIKLSsKLStnZGJfdGVzdCAicCAoKmFycmF5KVxbMVxdIiAiXFwk XFswLTlcXSA9IDEgJ1xcXFwwMDEnIgotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFsyXF0iICJcXCRc WzAtOVxdID0gMiAnXFxcXDAwMiciCi0rZ2RiX3Rlc3QgInAgKCphcnJheSlcWzNcXSIgIlxcJFxb MC05XF0gPSAzICdcXFxcMDAzJyIKLStnZGJfdGVzdCAicCAoKmFycmF5KVxbNFxdIiAiXFwkXFsw LTlcXSA9IDQgJ1xcXFwwMDQnIgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVh a19oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpc XClcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0rZ2RiX3Rlc3QgInB0 eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFwoXFwqXFwpXFxcWzc4XFxcXSIgInNlY29uZDogcHR5 cGUgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxb NzhcXFxdIiAic2Vjb25kOiB3aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXki ICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSAqYXJyYXkiCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY2ZjdhMzkKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLWZvby5TCi1AQCAtMCww ICsxLDQ1NSBAQAotKwkuZmlsZQkieDg2XzY0LXZsYS10eXBlZGVmLmMiCi0rCS5zZWN0aW9uCS5k ZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkuc2VjdGlvbgku ZGVidWdfaW5mbywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwkuc2VjdGlvbgkuZGVi dWdfbGluZSwiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xpbmUwOgotKwkudGV4dAotKy5MdGV4dDA6 Ci0rLmdsb2JsIGZvbwotKwkudHlwZQlmb28sIEBmdW5jdGlvbgotK2ZvbzoKLSsuTEZCMjoKLSsJ LmZpbGUgMSAieDg2XzY0LXZsYS10eXBlZGVmLmMiCi0rCS5sb2MgMSAyMiAwCi0rCXB1c2hxCSVy YnAKLSsuTENGSTA6Ci0rCW1vdnEJJXJzcCwgJXJicAotKy5MQ0ZJMToKLSsJc3VicQkkNjQsICVy c3AKLSsuTENGSTI6Ci0rCW1vdmwJJWVkaSwgLTM2KCVyYnApCi0rCS5sb2MgMSAyMiAwCi0rCW1v dnEJJXJzcCwgJXJheAotKwltb3ZxCSVyYXgsIC00OCglcmJwKQotKwkubG9jIDEgMjMgMAotKwlt b3ZsCS0zNiglcmJwKSwgJWVkeAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCXN1YnEJJDEsICVyYXgK LSsJbW92cQklcmF4LCAtMjQoJXJicCkKLSsJLmxvYyAxIDI0IDAKLSsJbW92c2xxCSVlZHgsJXJh eAotKwlhZGRxCSQxNSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0r CXNhbHEJJDQsICVyYXgKLSsJc3VicQklcmF4LCAlcnNwCi0rCW1vdnEJJXJzcCwgLTU2KCVyYnAp Ci0rCW1vdnEJLTU2KCVyYnApLCAlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVy YXgKLSsJc2FscQkkNCwgJXJheAotKwltb3ZxCSVyYXgsIC01NiglcmJwKQotKwltb3ZxCS01Nigl cmJwKSwgJXJheAotKwltb3ZxCSVyYXgsIC0xNiglcmJwKQotKwkubG9jIDEgMjcgMAotKwltb3Zs CSQwLCAtNCglcmJwKQotKwlqbXAJLkwyCi0rLkwzOgotKwkubG9jIDEgMjggMAotKwltb3ZsCS00 KCVyYnApLCAlZXNpCi0rCW1vdmwJLTQoJXJicCksICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0r CW1vdnEJLTE2KCVyYnApLCAlcmR4Ci0rCW1vdnNscQklZXNpLCVyYXgKLSsJbW92YgklY2wsICgl cmR4LCVyYXgpCi0rCS5sb2MgMSAyNyAwCi0rCWFkZGwJJDEsIC00KCVyYnApCi0rLkwyOgotKwlt b3ZsCS00KCVyYnApLCAlZWF4Ci0rCWNtcGwJLTM2KCVyYnApLCAlZWF4Ci0rCWpsCS5MMwotKwku bG9jIDEgMzAgMAotKwkuZ2xvYmwJYnJlYWtfaGVyZQotK2JyZWFrX2hlcmU6Ci0rCW1vdnEJLTE2 KCVyYnApLCAlcmF4Ci0rCW1vdmIJJDAsICglcmF4KQotKwltb3ZxCS00OCglcmJwKSwgJXJzcAot KwkubG9jIDEgMzEgMAotKwlsZWF2ZQotKwlyZXQKLSsuTEZFMjoKLSsJLnNpemUJZm9vLCAuLWZv bwotKwkuc2VjdGlvbgkuZGVidWdfZnJhbWUsIiIsQHByb2diaXRzCi0rLkxmcmFtZTA6Ci0rCS5s b25nCS5MRUNJRTAtLkxTQ0lFMAotKy5MU0NJRTA6Ci0rCS5sb25nCTB4ZmZmZmZmZmYKLSsJLmJ5 dGUJMHgxCi0rCS5zdHJpbmcJIiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5i eXRlCTB4MTAKLSsJLmJ5dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJ LmJ5dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUwOgotKy5MU0ZE RTA6Ci0rCS5sb25nCS5MRUZERTAtLkxBU0ZERTAKLSsuTEFTRkRFMDoKLSsJLmxvbmcJLkxmcmFt ZTAKLSsJLnF1YWQJLkxGQjIKLSsJLnF1YWQJLkxGRTItLkxGQjIKLSsJLmJ5dGUJMHg0Ci0rCS5s b25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkw eDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAot KwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMDoKLSsJLnNl Y3Rpb24JLmVoX2ZyYW1lLCJhIixAcHJvZ2JpdHMKLSsuTGZyYW1lMToKLSsJLmxvbmcJLkxFQ0lF MS0uTFNDSUUxCi0rLkxTQ0lFMToKLSsJLmxvbmcJMHgwCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5n CSJ6UiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLnVs ZWIxMjggMHgxCi0rCS5ieXRlCTB4MwotKwkuYnl0ZQkweGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51 bGViMTI4IDB4OAotKwkuYnl0ZQkweDkwCi0rCS51bGViMTI4IDB4MQotKwkuYWxpZ24gOAotKy5M RUNJRTE6Ci0rLkxTRkRFMToKLSsJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQotKy5MQVNGREUxOgot KwkubG9uZwkuTEFTRkRFMS0uTGZyYW1lMQotKwkubG9uZwkuTEZCMgotKwkubG9uZwkuTEZFMi0u TEZCMgotKwkudWxlYjEyOCAweDAKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgot KwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4 MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVs ZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMToKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJ LnNlY3Rpb24JLmRlYnVnX2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1Qw OgotKwkucXVhZAkuTEZCMi0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS52YWx1 ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCA4Ci0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQw Ci0rCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwku c2xlYjEyOCAxNgotKwkucXVhZAkuTENGSTEtLkx0ZXh0MAotKwkucXVhZAkuTEZFMi0uTHRleHQw Ci0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NgotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkweDAK LSsJLnF1YWQJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCi0rCS5sb25nCS5MZGVidWdfZW5k IC0gLkxkZWJ1Z19zdGFydAotKy5MZGVidWdfc3RhcnQ6Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJ LkxkZWJ1Z19hYmJyZXYwCi0rCS5ieXRlCTB4OAotKwkudWxlYjEyOCAweDEKLSsJLmxvbmcJLkxB U0YyCi0rCS5ieXRlCTB4MQotKwkubG9uZwkuTEFTRjMKLSsJLmxvbmcJLkxBU0Y0Ci0rCS5xdWFk CS5MdGV4dDAKLSsJLnF1YWQJLkxldGV4dDAKLSsJLmxvbmcJLkxkZWJ1Z19saW5lMAotKwkudWxl YjEyOCAweDIKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJImZvbyIKLSsJLmJ5dGUJMHgxCi0rCS5i eXRlCTB4MTYKLSsJLmJ5dGUJMHgxCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyCi0rCS5s b25nCS5MTFNUMAotKwkubG9uZwkweDgzCi0rCS51bGViMTI4IDB4MwotKwkubG9uZwkuTEFTRjUK LSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTUKLSsJLmxvbmcJMHg4MwotKwkuYnl0ZQkweDIKLSsJ LmJ5dGUJMHg5MQotKwkuc2xlYjEyOCAtNTIKLSsuTHRhZ190eXBlZGVmOgotKwkudWxlYjEyOCAw eDQKLSsJLmxvbmcJLkxBU0Y2Ci0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE3Ci0rCS5sb25nCS5M dGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbwotKwkudWxlYjEyOCAweDUJLyogQWJicmV2IE51 bWJlcjogNSAoRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkubG9uZwkuTEFTRjAKLSsJLmJ5dGUJMHgx Ci0rCS5ieXRlCTB4MTgKLSsjaWYgMQotKwkubG9uZwkuTHRhZ190eXBlZGVmIC0gLmRlYnVnX2lu Zm8KLSsjZWxzZQotKwkvKiBEZWJ1Z2dpbmcgb25seTogU2tpcCB0aGUgdHlwZWRlZiBpbmRpcmVj dGlvbi4gICovCi0rCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbwotKyNlbmRp ZgotKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCi0rCS5ieXRl CTB4MwotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC0zMgotKyNpZiAwCi0rCS5ieXRlCTB4Ngkv KiBEV19PUF9kZXJlZiAqLwotKyNlbHNlCi0rCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCi0r I2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogZW5kICovCi0rCS51 bGViMTI4IDB4NgotKwkuc3RyaW5nCSJpIgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxOQotKwku bG9uZwkweDgzCi0rCS5ieXRlCTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC0yMAotKwku Ynl0ZQkweDAKLSsJLnVsZWIxMjggMHg3Ci0rCS5ieXRlCTB4NAotKwkuYnl0ZQkweDUKLSsJLnN0 cmluZwkiaW50IgotKy5MdGFnX2FycmF5X3R5cGU6Ci0rCS51bGViMTI4IDB4OAkvKiBBYmJyZXYg TnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8KLSsJLmxvbmcJMHhhMCArICgyZiAtIDFm KQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KLSsJLmxvbmcJMHg5ZCArICgyZiAtIDFm KQkvKiBEV19BVF9zaWJsaW5nOiBEV19GT1JNX3JlZjQgKi8KLSsxOgkvKiBEV19BVF9kYXRhX2xv Y2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMmYgLSAzZgkvKiBsZW5n dGggKi8KLSszOgotKwkuYnl0ZQkweDk3CS8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8K LSsJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCi0rMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlv bjogRFdfRk9STV9ibG9jazE6IGVuZCAqLwotKwkudWxlYjEyOCAweDkKLSsJLmxvbmcJMHg5ZCAr ICgyYiAtIDFiKQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgzCi0r CS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTQwCi0rCS5ieXRlCTB4NgotKwkuYnl0ZQkweDAKLSsJ LnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4OAotKwkuYnl0ZQkweDcKLSsJLnVsZWIxMjggMHhiCi0r CS5ieXRlCTB4MQotKwkuYnl0ZQkweDYKLSsJLmxvbmcJLkxBU0YxCi0rCS5ieXRlCTB4MAotKy5M ZGVidWdfZW5kOgotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2Ci0rCS51bGViMTI4IDB4MQotKwku dWxlYjEyOCAweDExCi0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDI1Ci0rCS51bGViMTI4IDB4 ZQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVs ZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MWIKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4 MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51 bGViMTI4IDB4MTAKLSsJLnVsZWIxMjggMHg2Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJ LnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4MmUKLSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4 M2YKLSsJLnVsZWIxMjggMHhjCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVs ZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAw eGIKLSsJLnVsZWIxMjggMHgyNwotKwkudWxlYjEyOCAweGMKLSsJLnVsZWIxMjggMHgxMQotKwku dWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjgg MHg0MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTMKLSsJ LmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg1Ci0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4 M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51 bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjgg MHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0Ci0rCS51bGViMTI4 IDB4MTYKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVs ZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAw eGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS5ieXRlCTB4MAotKwkuYnl0 ZQkweDAKLSsJLnVsZWIxMjggMHg1Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51 bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAw eGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwku dWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgw Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDYKLSsJLnVsZWIxMjggMHgzNAotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4OAotKwkudWxlYjEyOCAweDNhCi0rCS51 bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAw eDQ5Ci0rCS51bGViMTI4IDB4MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDI0Ci0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4 M2UKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLmJ5 dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAo RFdfVEFHX2FycmF5X3R5cGUpICovCi0rCS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDEKLSsJLnVs ZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9y ZWY0ICovCi0rCS51bGViMTI4IDB4MQkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4 MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4NTAJLyogRFdfQVRfZGF0YV9sb2Nh dGlvbiAqLwotKwkudWxlYjEyOCAweGEJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJMHgw Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDkKLSsJLnVsZWIxMjggMHgyMQotKwkuYnl0ZQkw eDAKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJLyog RFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MmYKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5 dGUJMHgwCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQot KwkudWxlYjEyOCAweGIKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIK LSsJLnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4 IDB4YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJ LnVsZWIxMjggMHhlCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5z ZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgxNgotKwkudmFs dWUJMHgyCi0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJLmxvbmcJMHhhOAotKwkubG9uZwkweDJk Ci0rCS5zdHJpbmcJImZvbyIKLSsJLmxvbmcJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2Vz LCIiLEBwcm9nYml0cwotKwkubG9uZwkweDJjCi0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1 Z19pbmZvMAotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHgwCi0rCS52YWx1ZQkweDAKLSsJLnZhbHVl CTB4MAotKwkucXVhZAkuTHRleHQwCi0rCS5xdWFkCS5MZXRleHQwLS5MdGV4dDAKLSsJLnF1YWQJ MHgwCi0rCS5xdWFkCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEK LSsuTEFTRjA6Ci0rCS5zdHJpbmcJImFycmF5IgotKy5MQVNGNToKLSsJLnN0cmluZwkic2l6ZSIK LSsuTEFTRjM6Ci0rCS5zdHJpbmcJIng4Nl82NC12bGEtdHlwZWRlZi5jIgotKy5MQVNGNjoKLSsJ LnN0cmluZwkiYXJyYXlfdCIKLSsuTEFTRjE6Ci0rCS5zdHJpbmcJImNoYXIiCi0rLkxBU0Y0Ogot Kwkuc3RyaW5nCSJnZGIuYXJjaCIKLSsuTEFTRjI6Ci0rCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIw MDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAw ODExMDUgKFJlZCBIYXQgNC4zLjItNykiCi0rCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixA cHJvZ2JpdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEt dHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwot bmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmI4MDljNGUKLS0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMKLUBA IC0wLDAgKzEsNDMgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsK LSsjaWYgMAotKwotK3ZvaWQKLStmb28gKGludCBzaXplKQotK3sKLSsgIHR5cGVkZWYgY2hhciBh cnJheV90W3NpemVdOwotKyAgYXJyYXlfdCBhcnJheTsKLSsgIGludCBpOwotKwotKyAgZm9yIChp ID0gMDsgaSA8IHNpemU7IGkrKykKLSsgICAgYXJyYXlbaV0gPSBpOwotKwotKyAgYXJyYXlbMF0g PSAwOwkvKiBicmVhay1oZXJlICovCi0rfQotKwotKyNlbHNlCi0rCi0raW50Ci0rbWFpbiAodm9p ZCkKLSt7Ci0rICBmb28gKDI2KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwot KyNlbmRpZgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10 eXBlZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4 cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmIwNTQxMWUKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4 cAotQEAgLTAsMCArMSw2NCBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVz dCBEV19BVF9kYXRhX2xvY2F0aW9uIGFjY2Vzc2VkIHRocm91Z2ggRFdfVEFHX3R5cGVkZWYgaW50 ZXJtZWRpYXRlLgotKwotK2lmICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKLSsgICAg dmVyYm9zZSAiU2tpcHBpbmcgb3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIHRl c3QgbWFkZSBvbmx5IGZvciB4ODZfNjQuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3Rm aWxlIHg4Nl82NC12bGEtdHlwZWRlZgotK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5T Ci0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHt0ZXN0ZmlsZX0KLStzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9LWZvby5vCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAt MQotK30KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9 IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYgIVtydW50 b19tYWluXSB7Ci0rICAgIHVudGVzdGVkIHg4Nl82NC12bGEtdHlwZWRlZgotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIg InR5cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5 cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5Igot KwotK2dkYl90ZXN0ICJwIGFycmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0r Z2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJf dGVzdCAicCBhcnJheVxbM1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0 ICJwIGFycmF5XFs0XF0iICJcXCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJh eSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0rCi0rZ2RiX3Rlc3Qg InB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJy YXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCi1pbmRleCBhOTkxMzdlLi5jM2RjMmQ5IDEw MDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKLUBAIC0xNyw2ICsxNywxMyBAQAotIAotIGlu dCBhcnJheVtdID0gezEsIDIsIDMsIDR9OwotIAotKyNpZmRlZiBfX0dOVUNfXwotK3N0cnVjdAot KyAgewotKyAgICBpbnQgYVswXTsKLSsgIH0gdW5ib3VuZDsKLSsjZW5kaWYKLSsKLSBpbnQKLSBt YWluICh2b2lkKQotIHsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi1pbmRleCBjYmEw MDI0Li4wZGMwZTQ2IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlk eC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi1AQCAtNTMs NCArNTMsMTIgQEAgZ2RiX3Rlc3QgInByaW50IGFycmF5IiBcCi0gICAgICAgICAgIlxce1xcXFsw XFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxcXFsyXFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0i IFwKLSAgICAgICAgICAiUHJpbnQgYXJyYXkgd2l0aCBhcnJheS1pbmRleGVzIG9uIgotIAotLQot K3NldCB0ZXN0ICJwIHVuYm91bmQuYSA9PSAmdW5ib3VuZC5hXFswXF0iCi0rZ2RiX3Rlc3RfbXVs dGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIiA9IDFcclxuJGdkYl9wcm9tcHQgJCIgewot KwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJObyBzeW1ib2wgXCJ1bmJvdW5kXCIgaW4g Y3VycmVudCBjb250ZXh0LlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXVuc3VwcG9ydGVkICIkdGVz dCAobm8gR0NDKSIKLSsgICAgfQotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2RlZmF1bHQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAotaW5k ZXggOTY3NzM5Ni4uNTVkMDNhOSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv ZGVmYXVsdC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAKLUBA IC02MTAsNiArNjEwLDE5IEBAIGdkYl90ZXN0X2xpc3RfZXhhY3QgInNob3cgY29udmVuaWVuY2Ui ICJzaG93IGNvbnZlbmllbmNlIiBcCi0gCXskX3NkYXRhID0gdm9pZH0gXAotIAl7JF9zaWdpbmZv ID0gdm9pZH0gXAotIAl7JF90aHJlYWQgPSAwfSBcCi0rCXskX3Byb2JlX2FyZ2MgPSA8ZXJyb3I6 IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAotKwl7JF9wcm9iZV9hcmcwID0gPGVycm9yOiBObyBmcmFt ZSBzZWxlY3RlZD59IFwKLSsJeyRfcHJvYmVfYXJnMSA9IDxlcnJvcjogTm8gZnJhbWUgc2VsZWN0 ZWQ+fSBcCi0rCXskX3Byb2JlX2FyZzIgPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAot Kwl7JF9wcm9iZV9hcmczID0gPGVycm9yOiBObyBmcmFtZSBzZWxlY3RlZD59IFwKLSsJeyRfcHJv YmVfYXJnNCA9IDxlcnJvcjogTm8gZnJhbWUgc2VsZWN0ZWQ+fSBcCi0rCXskX3Byb2JlX2FyZzUg PSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAotKwl7JF9wcm9iZV9hcmc2ID0gPGVycm9y OiBObyBmcmFtZSBzZWxlY3RlZD59IFwKLSsJeyRfcHJvYmVfYXJnNyA9IDxlcnJvcjogTm8gZnJh bWUgc2VsZWN0ZWQ+fSBcCi0rCXskX3Byb2JlX2FyZzggPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVj dGVkPn0gXAotKwl7JF9wcm9iZV9hcmc5ID0gPGVycm9yOiBObyBmcmFtZSBzZWxlY3RlZD59IFwK LSsJeyRfcHJvYmVfYXJnMTAgPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAotKwl7JF9w cm9iZV9hcmcxMSA9IDxlcnJvcjogTm8gZnJhbWUgc2VsZWN0ZWQ+fSBcCi0gICAgIH0KLSAKLSAj dGVzdCBzaG93IGRpcmVjdG9yaWVzCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9p bnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uZWViN2I4NQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi1AQCAtMCwwICsxLDIwIEBACi0rLyog VGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBD b3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRp b24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0r ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rc3RydWN0IHsKLSsgIGludCBm aWVsZDsKLSt9IHN0YXRpY3N0cnVjdCA9IHsgMSB9OwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42ZDgyZTczCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAotQEAgLTAs MCArMSwyNiBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0IGludGVy bmFsLXZhci1maWVsZC1hZGRyZXNzCi0rc2V0IGJpbmZpbGUgJHt0ZXN0fS54Ci0raWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdH0uYyIgIiR7b2JqZGlyfS8ke3N1 YmRpcn0vJHtiaW5maWxlfSIgb2JqZWN0IHtkZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3Rl ZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLSsK LStjbGVhbl9yZXN0YXJ0ICRiaW5maWxlCi0rCi0rZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0g c3RhdGljc3RydWN0fQotK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi4yMzZkYTk2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3N0YXAtcHJvYmUuYwotQEAgLTAsMCArMSwxMDggQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWYgVVNFX1BST0JFUwotKwotKyNkZWZpbmUgX1NEVF9I QVNfU0VNQVBIT1JFUwotK19fZXh0ZW5zaW9uX18gdW5zaWduZWQgc2hvcnQgdGVzdGVfdXNlcl9z ZW1hcGhvcmUgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9u ICgiLnByb2JlcyIpKSk7Ci0rI2RlZmluZSBURVNUIHRlc3RlX3VzZXJfc2VtYXBob3JlCi0rCi0r X19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV90d29fc2VtYXBob3JlIF9fYXR0cmli dXRlX18gKCh1bnVzZWQpKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5wcm9iZXMiKSkpOwot KyNkZWZpbmUgVEVTVDIgdGVzdGVfdHdvX3NlbWFwaG9yZQotKwotK19fZXh0ZW5zaW9uX18gdW5z aWduZWQgc2hvcnQgdGVzdGVfbTRfc2VtYXBob3JlIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSBf X2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5wcm9iZXMiKSkpOwotKwotK19fZXh0ZW5zaW9uX18g dW5zaWduZWQgc2hvcnQgdGVzdGVfcHN0cl9zZW1hcGhvcmUgX19hdHRyaWJ1dGVfXyAoKHVudXNl ZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7Ci0rCi0rX19leHRlbnNp b25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV9wc19zZW1hcGhvcmUgX19hdHRyaWJ1dGVfXyAoKHVu dXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7Ci0rI2Vsc2UKLSsK LSsjZGVmaW5lIFRFU1QgMQotKyNkZWZpbmUgVEVTVDIgMQotKwotKyNlbmRpZgotKwotKyNpbmNs dWRlIDxzeXMvc2R0Lmg+Ci0rCi0rLyogV2Ugb25seSBzdXBwb3J0IFN5c3RlbVRhcCBhbmQgb25s eSB0aGUgdjMgZm9ybS4gICovCi0rI2lmIF9TRFRfTk9URV9UWVBFICE9IDMKLSsjZXJyb3IgIm5v dCB1c2luZyBTeXN0ZW1UYXAgdjMgcHJvYmVzIgotKyNlbmRpZgotKwotK3N0cnVjdCBmdW5jcwot K3sKLSsgIGludCB2YWw7Ci0rCi0rICBjb25zdCBjaGFyICooKnBzKSAoaW50KTsKLSt9OwotKwot K3N0YXRpYyB2b2lkCi0rbTEgKHZvaWQpCi0rewotKyAgaWYgKFRFU1QyKQotKyAgICBTVEFQX1BS T0JFICh0ZXN0ZSwgdHdvKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSttMiAodm9pZCkKLSt7Ci0r ICBpZiAoVEVTVDIpCi0rICAgIFNUQVBfUFJPQkUgKHRlc3RlLCB0d28pOwotK30KLSsKLStzdGF0 aWMgaW50Ci0rZiAoaW50IHgpCi0rewotKyAgaWYgKFRFU1QpCi0rICAgIFNUQVBfUFJPQkUxICh0 ZXN0ZSwgdXNlciwgeCk7Ci0rICByZXR1cm4geCs1OwotK30KLSsKLStzdGF0aWMgY29uc3QgY2hh ciAqCi0rcHN0ciAoaW50IHZhbCkKLSt7Ci0rICBjb25zdCBjaGFyICphID0gIlRoaXMgaXMgYSB0 ZXN0IG1lc3NhZ2UuIjsKLSsgIGNvbnN0IGNoYXIgKmIgPSAiVGhpcyBpcyBhbm90aGVyIHRlc3Qg bWVzc2FnZS4iOwotKwotKyAgU1RBUF9QUk9CRTMgKHRlc3RlLCBwcywgYSwgYiwgdmFsKTsKLSsK LSsgIHJldHVybiB2YWwgPT0gMCA/IGEgOiBiOwotK30KLSsKLStzdGF0aWMgdm9pZAotK200IChj b25zdCBzdHJ1Y3QgZnVuY3MgKmZzLCBpbnQgdikKLSt7Ci0rICBTVEFQX1BST0JFMyAodGVzdGUs IG00LCBmcy0+dmFsLCBmcy0+cHMgKHYpLCB2KTsKLSt9Ci0rCi0raW50Ci0rbWFpbigpCi0rewot KyAgc3RydWN0IGZ1bmNzIGZzOwotKwotKyAgZnMudmFsID0gNDI7Ci0rICBmcy5wcyA9IHBzdHI7 Ci0rCi0rICBmIChmICgyMykpOwotKyAgbTEgKCk7Ci0rICBtMiAoKTsKLSsKLSsgIG00ICgmZnMs IDApOwotKyAgbTQgKCZmcywgMSk7Ci0rCi0rICByZXR1cm4gMDsgLyogbGFzdCBicmVhayBoZXJl ICovCi0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDY4ZWZiOQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAotQEAgLTAsMCArMSwxODcgQEAKLSsj IENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlIHN0YXAtcHJvYmUK LSsKLSsjIFJ1biB0aGUgdGVzdHMuICBXZSBydW4gdGhlIHRlc3RzIHR3byBkaWZmZXJlbnQgd2F5 czogb25jZSB3aXRoIGEKLSsjIHBsYWluIHByb2JlLCBhbmQgb25jZSB3aXRoIGEgcHJvYmUgdGhh dCBoYXMgYW4gYXNzb2NpYXRlZCBzZW1hcGhvcmUuCi0rIyBUaGlzIHJldHVybnMgLTEgb24gZmFp bHVyZSB0byBjb21waWxlIG9yIHN0YXJ0LCAwIG90aGVyd2lzZS4KLStwcm9jIHN0YXBfdGVzdCB7 e2FyZyAiIn19IHsKLSsgICAgZ2xvYmFsIHRlc3RmaWxlIGhleAotKwotKyAgICBpZiB7JGFyZyAh PSAiIn0gewotKyAgICAJc2V0IGFyZyAiYWRkaXRpb25hbF9mbGFncz0kYXJnIgotKwlzZXQgYWRk ZW5kdW0gIiwgd2l0aCBzZW1hcGhvcmUsIG5vdCBvcHRpbWl6ZWQiCi0rICAgIH0gZWxzZSB7Ci0r CXNldCBhZGRlbmR1bSAiLCBubyBzZW1hcGhvcmUsIG5vdCBvcHRpbWl6ZWQiCi0rICAgIH0KLSsK LSsgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxl fSAke3Rlc3RmaWxlfS5jIFwKLSsJICAgW2NvbmNhdCAkYXJnIGRlYnVnXV19IHsKLSsJcmV0dXJu IC0xCi0rICAgIH0KLSsKLSsgICAgaWYgIVtydW50b19tYWluXSB7Ci0rCXJldHVybiAtMQotKyAg ICB9Ci0rCi0rICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiTm8gU3lzdGVtVGFw IHByb2JlIGF0IFBDICRoZXgiIFwKLSsJImNoZWNrIGFyZ3VtZW50IG5vdCBhdCBwcm9iZSBwb2lu dCRhZGRlbmR1bSIKLSsKLSsgICAgZ2RiX3Rlc3QgImluZm8gcHJvYmVzIiBcCi0rCSJ0ZXN0ZSAq dXNlciAqJGhleCAuKiIgXAotKwkiaW5mbyBwcm9iZXMkYWRkZW5kdW0iCi0rICAgIAotKyAgICBp ZiB7W3J1bnRvICItcCB0ZXN0ZTp1c2VyIl19IHsKLSsJcGFzcyAicnVuIHRvIC1wIHRlc3RlOnVz ZXIkYWRkZW5kdW0iCi0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgInJ1biB0byAtcCB0ZXN0ZTp1c2Vy JGFkZGVuZHVtIgotKyAgICB9Ci0rCi0rICAgICMgVGVzdCBwcm9iZSBhcmd1bWVudHMuCi0rICAg IGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMSIgXAotKyAgICAicHJpbnQgXCRf cHJvYmVfYXJnYyBmb3IgcHJvYmUgdXNlciRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3QgInByaW50 IFwkX3Byb2JlX2FyZzAgPT0geCIgIiA9IDEiIFwKLSsgICAgImNoZWNrIFwkX3Byb2JlX2FyZzAg Zm9yIHByb2JlIHVzZXIkYWRkZW5kdW0iCi0rICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9h cmcxIiBcCi0rICAgIAkiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAxIC0tIHByb2JlIGhhcyAxIGFy Z3VtZW50cyBhdmFpbGFibGUiIFwKLSsgICAgCSJjaGVjayBcJF9wcm9iZV9hcmcxIGZvciBwcm9i ZSB1c2VyJGFkZGVuZHVtIgotKwotKyAgICAjIFNldCBhIGJyZWFrcG9pbnQgd2l0aCBtdWx0aXBs ZSBwcm9iZSBsb2NhdGlvbnMuCi0rICAgIGdkYl90ZXN0ICJicmVhayAtcCB0ZXN0ZTp0d28iIFwK LSsJIkJyZWFrcG9pbnQgXFswLTlcXSsgYXQgJGhleC4qMiBsb2NhdGlvbnMuKiIgXAotKwkic2V0 IG11bHRpLWxvY2F0aW9uIHByb2JlIGJyZWFrcG9pbnQgKHByb2JlIHR3bykkYWRkZW5kdW0iCi0r Ci0rICAgICMgUmVpbml0IEdEQiwgc2V0IGEgYnJlYWtwb2ludCBvbiBwcm9iZSBtNC4KLSsgICAg ZGVsZXRlX2JyZWFrcG9pbnRzCi0rICAgIHJlcnVuX3RvX21haW4KLSsgICAgaWYge1tydW50byAi LXAgdGVzdGU6bTQiXX0gewotKyAgICAgIHBhc3MgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1 bSIKLSsgICAgfSBlbHNlIHsKLSsgICAgICBmYWlsICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5k dW0iCi0rICAgIH0KLSsKLSsgICAgIyBUZXN0aW5nIHByb2JlIGFyZ3VtZW50cy4KLSsgICAgZ2Ri X3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCi0rICAgICJwcmludCBcJF9wcm9i ZV9hcmdjIGZvciBwcm9iZSBtNCRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkX3By b2JlX2FyZzAiICIgPSA0MiIgXAotKyAgICAiY2hlY2sgXCRfcHJvYmVfYXJnMCBmb3IgcHJvYmUg bTQkYWRkZW5kdW0iCi0rICAgIGdkYl90ZXN0ICJwcmludCAoY29uc3QgY2hhciAqKSBcJF9wcm9i ZV9hcmcxIiBcCi0rICAgICIgPSAkaGV4IC5UaGlzIGlzIGEgdGVzdCBtZXNzYWdlLioiIFwKLSsg ICAgImNoZWNrIFwkX3Byb2JlX2FyZzEgZm9yIHByb2JlIG00JGFkZGVuZHVtIgotKyAgICBnZGJf dGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnMiA9PSB2IiAiID0gMSIgXAotKyAgICAiY2hlY2sgXCRf cHJvYmVfYXJnMiBmb3IgcHJvYmUgbTQkYWRkZW5kdW0iCi0rCi0rICAgICMgUmVpbml0IEdEQiwg c2V0IGEgYnJlYWtwb2ludCBvbiBwcm9iZSBwcy4KLSsgICAgZGVsZXRlX2JyZWFrcG9pbnRzCi0r ICAgIHJlcnVuX3RvX21haW4KLSsgICAgaWYge1tydW50byAiLXAgdGVzdGU6cHMiXX0gewotKyAg ICAgIHBhc3MgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1bSIKLSsgICAgfSBlbHNlIHsKLSsg ICAgICBmYWlsICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5kdW0iCi0rICAgIH0KLSsKLSsgICAg Z2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCi0rICAgICJwcmludCBcJF9w cm9iZV9hcmdjIGZvciBwcm9iZSBwcyRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3QgInByaW50IChj b25zdCBjaGFyICopIFwkX3Byb2JlX2FyZzEiIFwKLSsgICAgIiA9ICRoZXggLlRoaXMgaXMgYW5v dGhlciB0ZXN0IG1lc3NhZ2UuKiIgXAotKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnMSBmb3IgcHJv YmUgcHMkYWRkZW5kdW0iCi0rCi0rICAgIHJldHVybiAwCi0rfQotKwotK3Byb2Mgc3RhcF90ZXN0 X25vX2RlYnVnaW5mbyB7eyBhcmcgIiIgfX0gewotKyAgICBnbG9iYWwgdGVzdGZpbGUgaGV4Ci0r Ci0rICAgIGlmIHskYXJnICE9ICIifSB7Ci0rICAgIAlzZXQgYXJnICJhZGRpdGlvbmFsX2ZsYWdz PSRhcmciCi0rCXNldCBhZGRlbmR1bSAiLCB3aXRoIHNlbWFwaG9yZSwgb3B0aW1pemVkIgotKyAg ICB9IGVsc2UgewotKwlzZXQgYWRkZW5kdW0gIiwgbm8gc2VtYXBob3JlLCBvcHRpbWl6ZWQiCi0r ICAgIH0KLSsKLSsgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3Rlc3RmaWxlfS5jIFwKLSsJICAgeyRhcmcgbm9kZWJ1ZyBvcHRpbWl6ZT0t TzJ9XX0gewotKwlyZXR1cm4gLTEKLSsgICAgfQotKwotKyAgICBpZiB7W3J1bnRvICItcCB0ZXN0 ZTp1c2VyIl19IHsKLSsJcGFzcyAicnVuIHRvIC1wIHRlc3RlOnVzZXIkYWRkZW5kdW0iCi0rICAg IH0gZWxzZSB7Ci0rCWZhaWwgInJ1biB0byAtcCB0ZXN0ZTp1c2VyJGFkZGVuZHVtIgotKyAgICB9 Ci0rCi0rICAgICMgVGVzdCBwcm9iZSBhcmd1bWVudHMuCi0rICAgIGdkYl90ZXN0ICJwcmludCBc JF9wcm9iZV9hcmdjIiAiID0gMSIgXAotKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnYyBmb3IgcHJv YmUgdXNlciRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZzAgPT0g MjMiICIgPSAxIiBcCi0rICAgICJjaGVjayBcJF9wcm9iZV9hcmcwIGZvciBwcm9iZSB1c2VyJGFk ZGVuZHVtIgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnMSIgXAotKyAgICAJIklu dmFsaWQgcHJvYmUgYXJndW1lbnQgMSAtLSBwcm9iZSBoYXMgMSBhcmd1bWVudHMgYXZhaWxhYmxl IiBcCi0rICAgIAkiY2hlY2sgXCRfcHJvYmVfYXJnMSBmb3IgcHJvYmUgdXNlciRhZGRlbmR1bSIK LSsKLSsgICAgIyBTZXQgYSBicmVha3BvaW50IHdpdGggbXVsdGlwbGUgcHJvYmUgbG9jYXRpb25z LgotKyAgICAjIEluIHRoaXMgc2NlbmFyaW8sIHdlIG1heSBleHBlY3QgbW9yZSB0aGFuIDIgbG9j YXRpb25zIGJlY2F1c2Ugb2YKLSsgICAgIyB0aGUgb3B0aW1pemF0aW9ucyAoaW5saW5pbmcsIGxv b3AgdW5yb2xsaW5nLCBldGMpLgotKyAgICBnZGJfdGVzdCAiYnJlYWsgLXAgdGVzdGU6dHdvIiBc Ci0rCSJCcmVha3BvaW50IC4qIGF0ICRoZXguKlxbMC05XF0rIGxvY2F0aW9ucy4qIiBcCi0rCSJz ZXQgbXVsdGktbG9jYXRpb24gcHJvYmUgYnJlYWtwb2ludCAocHJvYmUgdHdvKSRhZGRlbmR1bSIK LSsKLSsgICAgIyBSZWluaXQgR0RCLCBzZXQgYSBicmVha3BvaW50IG9uIHByb2JlIG00LgotKyAg ICBkZWxldGVfYnJlYWtwb2ludHMKLSsgICAgcmVydW5fdG9fbWFpbgotKyAgICBpZiB7W3J1bnRv ICItcCB0ZXN0ZTptNCJdfSB7Ci0rICAgICAgcGFzcyAicnVuIHRvIC1wIHRlc3RlOm00JGFkZGVu ZHVtIgotKyAgICB9IGVsc2UgewotKyAgICAgIGZhaWwgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRl bmR1bSIKLSsgICAgfQotKwotKyAgICAjIFRlc3RpbmcgcHJvYmUgYXJndW1lbnRzLgotKyAgICBn ZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnYyIgIiA9IDMiIFwKLSsgICAgInByaW50IFwkX3By b2JlX2FyZ2MgZm9yIHByb2JlIG00JGFkZGVuZHVtIgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRf cHJvYmVfYXJnMCIgIiA9IDQyIiBcCi0rICAgICJjaGVjayBcJF9wcm9iZV9hcmcwIGZvciBwcm9i ZSBtNCRhZGRlbmR1bSIKLSsgICAgZ2RiX3Rlc3QgInByaW50IChjb25zdCBjaGFyICopIFwkX3By b2JlX2FyZzEiIFwKLSsgICAgIiA9ICRoZXggLlRoaXMgaXMgYSB0ZXN0IG1lc3NhZ2UuKiIgXAot KyAgICAiY2hlY2sgXCRfcHJvYmVfYXJnMSBmb3IgcHJvYmUgbTQkYWRkZW5kdW0iCi0rICAgIGdk Yl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmcyID09IDAiICIgPSAxIiBcCi0rICAgICJjaGVjayBc JF9wcm9iZV9hcmcyIGZvciBwcm9iZSBtNCRhZGRlbmR1bSIKLSsKLSsgICAgIyBSZWluaXQgR0RC LCBzZXQgYSBicmVha3BvaW50IG9uIHByb2JlIHBzLgotKyAgICBkZWxldGVfYnJlYWtwb2ludHMK LSsgICAgcmVydW5fdG9fbWFpbgotKyAgICBpZiB7W3J1bnRvICItcCB0ZXN0ZTpwcyJdfSB7Ci0r ICAgICAgcGFzcyAicnVuIHRvIC1wIHRlc3RlOm00JGFkZGVuZHVtIgotKyAgICB9IGVsc2Ugewot KyAgICAgIGZhaWwgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1bSIKLSsgICAgfQotKwotKyAg ICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnYyIgIiA9IDMiIFwKLSsgICAgInByaW50IFwk X3Byb2JlX2FyZ2MgZm9yIHByb2JlIHBzJGFkZGVuZHVtIgotKyAgICBnZGJfdGVzdCAicHJpbnQg KGNvbnN0IGNoYXIgKikgXCRfcHJvYmVfYXJnMSIgXAotKyAgICAiID0gJGhleCAuVGhpcyBpcyBh bm90aGVyIHRlc3QgbWVzc2FnZS4qIiBcCi0rICAgICJwcmludCBcJF9wcm9iZV9hcmcxIGZvciBw cm9iZSBwcyRhZGRlbmR1bSIKLSsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0raWYge1tzdGFwX3Rl c3RdID09IC0xfSB7Ci0rICAgIHVudGVzdGVkIHN0YXAtcHJvYmUuZXhwCi0rICAgIHJldHVybiAt MQotK30KLSsKLStzdGFwX3Rlc3QgIi1EVVNFX1BST0JFUyIKLStzdGFwX3Rlc3Rfbm9fZGVidWdp bmZvCi0rc3RhcF90ZXN0X25vX2RlYnVnaW5mbyAiLURVU0VfUFJPQkVTIgotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS1mcmFtZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTc1 MGY2OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJh bWUuYwotQEAgLTAsMCArMSwzMSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCi0rewotKyAgY2hhciBzWzIgKyBhcmdjXTsKLSsgIHZvaWQgKCpmKSAoY2hh ciAqKSA9IDA7Ci0rCi0rICBtZW1zZXQgKHMsIDAsIHNpemVvZiAocykpOwotKyAgc1swXSA9ICdY JzsKLSsKLSsgIGYgKHMpOwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LWZyYW1lLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjQ3NzM2YzcK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4 cAotQEAgLTAsMCArMSwzOCBAQAotKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQg dGVzdGZpbGUgdmxhLWZyYW1lCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLSsKLStpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke2V4ZWN1dGFibGV9XSB9IHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0rc2V0IHRlc3QgImNvbnRpbnVlIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0 ICR0ZXN0IHsKLSsgICAgLXJlICJDb250aW51aW5nXFwuXHJcblxyXG5Qcm9ncmFtIHJlY2VpdmVk IHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHRcXC5cclxuMHgwKyBpbiBcXD9cXD8g XFwoXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1y ZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0rCXJl dHVybgotKyAgICB9Ci0rfQotKwotK2dkYl90ZXN0ICJidCBmdWxsIiAiXHJcbiArcyA9IFwiWFxc XFwwMDBcIlxyXG4uKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1v dmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwotbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmM1ZDVlZTAKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMKLUBAIC0wLDAgKzEsMzAg QEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgot KwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8 c3RkbGliLmg+Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsg IGludCBhcnJheVthcmdjXTsKLSsKLSsgIGFycmF5WzBdID0gYXJyYXlbMF07Ci0rCi0rICBhYm9y dCAoKTsKLSsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVy Zmxvdy5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yNGE2MDhmCi0t LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5l eHAKLUBAIC0wLDAgKzEsMTA5IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBX ZSBjb3VsZCBjcmFzaCBpbjoKLSsjICMwICBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChibD0weDAp IGF0IC4uLy4uL2dkYi9ibG9jay5jOjY5Ci0rIyAjMSAgaW4gZHdhcmZfYmxvY2tfZ2V0X2ZyYW1l X2Jhc2UgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6OTcKLSsjICAgOTcJICBmcmFt ZWZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChnZXRfZnJhbWVfYmxvY2sgKGZyYW1lLCBO VUxMKSk7Ci0rIyAjMiAgaW4gZXhlY3V0ZV9zdGFja19vcCAoLi4uKSBhdCAuLi8uLi9nZGIvZHdh cmYyZXhwci5jOjQ5NgotKyMgIzMgIGluIGR3YXJmX2Jsb2NrX2V4ZWNfY29yZSAoKSBhdCAuLi8u Li9nZGIvZHdhcmYyYmxvY2suYzoxNTYKLSsjICM0ICBkd2FyZl9ibG9ja19leGVjICguLi4pIGF0 IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjIwNgotKyMgIzUgIGluIHJhbmdlX3R5cGVfY291bnRf Ym91bmRfaW50ZXJuYWwgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6MTQzMAotKyMgIzYg IGluIGNyZWF0ZV9hcnJheV90eXBlICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0eXBlcy5jOjg0MAot KyMgLi4uCi0rIyAjMjEgaW4gcHN5bXRhYl90b19zeW10YWIgKC4uLikgYXQgLi4vLi4vZ2RiL3N5 bWZpbGUuYzoyOTIKLSsjIC4uLgotKyMgIzI5IGluIGJhY2t0cmFjZV9jb21tYW5kXzEgKCkgYXQg Li4vLi4vZ2RiL3N0YWNrLmM6MTI3MwotKwotK3NldCB0ZXN0ZmlsZSB2bGEtb3ZlcmZsb3cKLStz ZXQgc2hmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnNoCi0rc2V0IHNy Y2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVu dGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK3NldCBmIFtvcGVuICJ8Z2V0Y29uZiBQQUdFU0laRSIgInIiXQotK2dldHMgJGYgcGFn ZXNpemUKLStjbG9zZSAkZgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK3NldCBw aWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3QgZmlsZWlkXV0KLSsKLStpZiB7 IFtydW50b19tYWluXSA8IDAgfSB7Ci0rICAgIHVudGVzdGVkIHZsYS1vdmVyZmxvdwotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0rIyBHZXQgdGhlIEdEQiBtZW1vcnkgc2l6ZSB3aGVuIHdlIHN0YXkg YXQgbWFpbi4KLSsKLStwcm9jIG1lbW9yeV92X3BhZ2VzX2dldCB7fSB7Ci0rICAgIGdsb2JhbCBw aWRfb2ZfZ2RiIHBhZ2VzaXplCi0rICAgIHNldCBmZCBbb3BlbiAiL3Byb2MvJHBpZF9vZl9nZGIv c3RhdG0iXQotKyAgICBnZXRzICRmZCBsaW5lCi0rICAgIGNsb3NlICRmZAotKyAgICAjIG51bWJl ciBvZiBwYWdlcyBvZiB2aXJ0dWFsIG1lbW9yeQotKyAgICBzY2FuICRsaW5lICIlZCIgZHJzCi0r ICAgIHJldHVybiAkZHJzCi0rfQotKwotK3NldCBwYWdlc19mb3VuZCBbbWVtb3J5X3ZfcGFnZXNf Z2V0XQotKwotKyMgczM5MHggd2l0aCBnbGliYy1kZWJ1Z2luZm8uczM5MHggaW5zdGFsbGVkIHVz ZWQgYXBwcm94LiAxNk1CLgotK3NldCBtYl9yZXNlcnZlIDQwCi0rdmVyYm9zZSAtbG9nICJwYWdl c19mb3VuZCA9ICRwYWdlc19mb3VuZCwgbWJfcmVzZXJ2ZSA9ICRtYl9yZXNlcnZlIgotK3NldCBr Yl9mb3VuZCBbZXhwciAkcGFnZXNfZm91bmQgKiAkcGFnZXNpemUgLyAxMDI0XQotK3NldCBrYl9w ZXJtaXQgW2V4cHIgJGtiX2ZvdW5kICsgMSAqIDEwMjQgKyAkbWJfcmVzZXJ2ZSAqIDEwMjRdCi0r dmVyYm9zZSAtbG9nICJrYl9mb3VuZCA9ICRrYl9mb3VuZCwga2JfcGVybWl0ID0gJGtiX3Blcm1p dCIKLSsKLSsjIENyZWF0ZSB0aGUgdWxpbWl0IHdyYXBwZXIuCi0rc2V0IGYgW29wZW4gJHNoZmls ZSAidyJdCi0rcHV0cyAkZiAiIyEgL2Jpbi9zaCIKLStwdXRzICRmICJ1bGltaXQgLXYgJGtiX3Bl cm1pdCIKLStwdXRzICRmICJleGVjICRHREIgXCJcJEBcIiIKLStjbG9zZSAkZgotK3JlbW90ZV9l eGVjIGhvc3QgImNobW9kICt4ICRzaGZpbGUiCi0rCi0rZ2RiX2V4aXQKLStzZXQgR0RCb2xkICRH REIKLStzZXQgR0RCICIkc2hmaWxlIgotK2dkYl9zdGFydAotK3NldCBHREIgJEdEQm9sZAotKwot K2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmls ZX0KLSsKLStzZXQgcGlkX29mX2dkYiBbZXhwX3BpZCAtaSBbYm9hcmRfaW5mbyBob3N0IGZpbGVp ZF1dCi0rCi0rIyBDaGVjayB0aGUgc2l6ZSBhZ2FpbiBhZnRlciB0aGUgc2Vjb25kIHJ1bi4KLSsj IFdlIG11c3Qgbm90IHN0b3AgaW4gbWFpbiBhcyBpdCB3b3VsZCBjYWNoZSBgYXJyYXknIGFuZCBu ZXZlciBjcmFzaCBsYXRlci4KLSsKLStnZGJfcnVuX2NtZAotKwotK3ZlcmJvc2UgLWxvZyAia2Jf Zm91bmQgYmVmb3JlIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdl c2l6ZSAvIDEwMjRdIgotKwotK2dkYl90ZXN0ICIiICJQcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBT SUdBQlJULCBBYm9ydGVkLi4qIiAiRW50ZXIgYWJvcnQoKSIKLSsKLSt2ZXJib3NlIC1sb2cgImti X2ZvdW5kIGluIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6 ZSAvIDEwMjRdIgotKwotKyMgYGFib3J0JyBjYW4gZ2V0IGV4cHJlc3NlZCBhcyBgKl9fR0lfYWJv cnQnLgotK2dkYl90ZXN0ICJidCIgImluIFxbXiBcXSphYm9ydCBcXCguKiBpbiBtYWluIFxcKC4q IiAiQmFja3RyYWNlIGFmdGVyIGFib3J0KCkiCi0rCi0rdmVyYm9zZSAtbG9nICJrYl9mb3VuZCBp biBidCBhZnRlciBhYm9ydCgpID0gW2V4cHIgW21lbW9yeV92X3BhZ2VzX2dldF0gKiAkcGFnZXNp emUgLyAxMDI0XSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYworKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9S TV9ibG9jazE6IGVuZCAqLworKwkudWxlYjEyOCAweDYKKysJLnN0cmluZwkiaSIKKysJLmJ5dGUJ MHgxCisrCS5ieXRlCTB4MTkKKysJLmxvbmcJLkx0eXBlX2ludCAtIC5MZGVidWdfcmVsYXRpdmUK KysJLmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTIwCisrCS5ieXRlCTB4MAor Ky5MdHlwZV9pbnQ6CisrCS51bGViMTI4IDB4NworKwkuYnl0ZQkweDQKKysJLmJ5dGUJMHg1Cisr CS5zdHJpbmcJImludCIKKysuTHRhZ19hcnJheV90eXBlOgorKwkudWxlYjEyOCAweDgJLyogQWJi cmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCisrCS5sb25nCS5MdHlwZV9jaGFy IC0gLkxkZWJ1Z19yZWxhdGl2ZQorKwkubG9uZwkuTHR5cGVfdWxvbmcgLSAuTGRlYnVnX3JlbGF0 aXZlCS8qIERXX0FUX3NpYmxpbmc6IERXX0ZPUk1fcmVmNCAqLworKzE6CS8qIERXX0FUX2RhdGFf bG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLworKwkuYnl0ZQkyZiAtIDNmCS8qIGxl bmd0aCAqLworKzM6CisrCS5ieXRlCTB4OTcJLyogRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAq LworKyNpZiAxCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKyNlbHNlCisrCS5ieXRl CTB4OTYJLyogRFdfT1Bfbm9wICovCisrI2VuZGlmCisrMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlv bjogRFdfRk9STV9ibG9jazE6IGVuZCAqLworKwkudWxlYjEyOCAweDkKKysJLmxvbmcJLkx0eXBl X2NoYXIgLSAuTGRlYnVnX3JlbGF0aXZlCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLwor KwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtNDAKKysJLmJ5dGUJMHg2Cisr CS5ieXRlCTB4MAorKy5MdHlwZV91bG9uZzoKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4OAor KwkuYnl0ZQkweDcKKysuTHR5cGVfY2hhcjoKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MQor KwkuYnl0ZQkweDYKKysJLmxvbmcJLkxBU0YxCisrCS5ieXRlCTB4MAorKy5MZGVidWdfZW5kOgor Kwkuc2VjdGlvbgkuZGVidWdfYWJicmV2CisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEx CisrCS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDI1CisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEy OCAweDEzCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisr CS51bGViMTI4IDB4MWIKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4MTEKKysJLnVsZWIx MjggMHgxCisrCS51bGViMTI4IDB4MTIKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTAK KysJLnVsZWIxMjggMHg2CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgy CisrCS51bGViMTI4IDB4MmUKKysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4M2YKKysJLnVsZWIx MjggMHhjCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLnVsZWIxMjggMHgzYQor KwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIx MjggMHgyNworKwkudWxlYjEyOCAweGMKKysJLnVsZWIxMjggMHgxMQorKwkudWxlYjEyOCAweDEK KysJLnVsZWIxMjggMHgxMgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHg0MAorKwkudWxl YjEyOCAweDYKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTMKKysJLmJ5dGUJMHgwCisr CS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHg1CisrCS5ieXRlCTB4MAor KwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIx MjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkK KysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRl CTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg0CS8qIC5MdGFnX3BvaW50ZXIgYWJicmV2 ICovCisrCS51bGViMTI4IDB4MGYJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAqLworKwkuYnl0ZQkw eDAKKysJLnVsZWIxMjggMHgwYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwku dWxlYjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg1Cisr CS51bGViMTI4IDB4MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAw eGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwku dWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4 IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweDYKKysJLnVsZWIxMjggMHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51 bGViMTI4IDB4OAorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAw eDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJ LnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisr CS51bGViMTI4IDB4NworKwkudWxlYjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAw eGIKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwku dWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCisr CS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHg0OQkvKiBEV19BVF90eXBl ICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4IDB4MQkv KiBEV19BVF9zaWJsaW5nICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisr CS51bGViMTI4IDB4NTAJLyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLworKwkudWxlYjEyOCAweGEJ LyogRFdfRk9STV9ibG9jazEgKi8KKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweDkKKysJLnVsZWIxMjggMHgyMQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg0OQkvKiBE V19BVF90eXBlICovCisrCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGVi MTI4IDB4MmYKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVs ZWIxMjggMHhhCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4Ygor KwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJLmJ5dGUJ MHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgyNAorKwkuYnl0 ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNlCisr CS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS5ieXRlCTB4 MAorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19wdWJuYW1lcywi IixAcHJvZ2JpdHMKKysJLmxvbmcJMHgxNgorKwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdf aW5mbzAKKysJLmxvbmcJMHhhOAorKwkubG9uZwkweDJkCisrCS5zdHJpbmcJImZvbyIKKysJLmxv bmcJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cworKwkubG9uZwkw eDJjCisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1Z19pbmZvMAorKwkuYnl0ZQkweDgKKysJ LmJ5dGUJMHgwCisrCS52YWx1ZQkweDAKKysJLnZhbHVlCTB4MAorKwkucXVhZAkuTHRleHQwCisr CS5xdWFkCS5MZXRleHQwLS5MdGV4dDAKKysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2Vj dGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKKysuTEFTRjA6CisrCS5zdHJpbmcJImFy cmF5IgorKy5MQVNGNToKKysJLnN0cmluZwkic2l6ZSIKKysuTEFTRjM6CisrCS5zdHJpbmcJIng4 Nl82NC12bGEtcG9pbnRlci5jIgorKy5MQVNGNjoKKysJLnN0cmluZwkiYXJyYXlfdCIKKysuTEFT RjE6CisrCS5zdHJpbmcJImNoYXIiCisrLkxBU0Y0OgorKwkuc3RyaW5nCSJnZGIuYXJjaCIKKysu TEFTRjI6CisrCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcp IgorKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNyki CisrCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLmUxZjNlZDEKK2luZGV4IDAwMDAwMDAuLmZlMmM4ZjcKIC0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMKLUBAIC0wLDAgKzEsNTUgQEAK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmMKK0BAIC0w LDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyMzgxLDM3ICs1NjMwLDIz IEBAIGluZGV4IDAwMDAwMDAuLmUxZjNlZDEKICsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KICsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rdm9pZAotK21hcmtlciAodm9pZCkK LSt7Ci0rfQotKwotK3ZvaWQKLStiYXIgKGNoYXIgKmEsIGNoYXIgKmIsIGNoYXIgKmMsIGludCBz aXplKQotK3sKLSsgIG1lbXNldCAoYSwgJzEnLCBzaXplKTsKLSsgIG1lbXNldCAoYiwgJzInLCBz aXplKTsKLSsgIG1lbXNldCAoYywgJzMnLCA0OCk7Ci0rfQorKyNpZiAwCiArCiArdm9pZAogK2Zv byAoaW50IHNpemUpCiArewotKyAgY2hhciB0ZW1wMVtzaXplXTsKLSsgIGNoYXIgdGVtcDNbNDhd OwotKwotKyAgdGVtcDFbc2l6ZSAtIDFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1wMltz aXplXTsKKysgIHR5cGVkZWYgY2hhciBhcnJheV90W3NpemVdOworKyAgYXJyYXlfdCBhcnJheTsK KysgIGludCBpOwogKwotKyAgICBiYXIgKHRlbXAxLCB0ZW1wMiwgdGVtcDMsIHNpemUpOworKyAg Zm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykKKysgICAgYXJyYXlbaV0gPSBpOwogKwotKyAgICBt YXJrZXIgKCk7CS8qIGJyZWFrLWhlcmUgKi8KLSsgIH0KKysgIGFycmF5WzBdID0gMDsJLyogYnJl YWstaGVyZSAqLwogK30KICsKKysjZWxzZQorKwogK2ludAogK21haW4gKHZvaWQpCiArewpAQCAt MTI0MTksMTMgKzU2NTQsMTUgQEAgaW5kZXggMDAwMDAwMC4uZTFmM2VkMQogKyAgZm9vICg3OCk7 CiArICByZXR1cm4gMDsKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCisrCisrI2VuZGlmCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCiBuZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNWRhNzM3OAoraW5kZXggMDAwMDAwMC4uZDI0M2Nm MQogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCi1A QCAtMCwwICsxLDYyIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmV4cAorQEAgLTAsMCArMSw2NiBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEy NDQwLDEwICs1Njc3LDIxIEBAIGluZGV4IDAwMDAwMDAuLjVkYTczNzgKICsjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAr IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KICsKLStzZXQgdGVzdGZpbGUgdmxhCisraWYgIVtpc3RhcmdldCAieDg2 XzY0LSotKiJdIHRoZW4geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5hcmNoL3g4 Nl82NC12bGEtcG9pbnRlci5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCisrICAgIHJl dHVybgorK30KKysKKytzZXQgdGVzdGZpbGUgeDg2XzY0LXZsYS1wb2ludGVyCisrc2V0IHNyY2Fz bWZpbGUgJHt0ZXN0ZmlsZX0tZm9vLlMKICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0 IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKytzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJk aXJ9LyR7dGVzdGZpbGV9LWZvby5vCisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtz dWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0g eworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJl dHVybiAtMQorK30KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAh PSAiIiB9IHsKICsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgog KyAgICByZXR1cm4gLTEKICt9CkBAIC0xMjQ1NCw3MCArNTcwMiw1MDIgQEAgaW5kZXggMDAwMDAw MC4uNWRhNzM3OAogK2dkYl9sb2FkICR7YmluZmlsZX0KICsKICtpZiAhW3J1bnRvX21haW5dIHsK LSsgICAgdW50ZXN0ZWQgdmxhCisrICAgIHVudGVzdGVkIHg4Nl82NC12bGEtcG9pbnRlcgogKyAg ICByZXR1cm4gLTEKICt9CiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg ImJyZWFrLWhlcmUiXQotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJl IgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVc XFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMSIKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAyIiAidHlw ZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVtcDIiCi0rZ2RiX3Rl c3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogd2hhdGlz IHRlbXAzIgorK2dkYl9icmVha3BvaW50ICJicmVha19oZXJlIgogKwotK2dkYl90ZXN0ICJwdHlw ZSB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDEiCi0r Z2RiX3Rlc3QgInB0eXBlIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBw dHlwZSB0ZW1wMiIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhc XFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAzIgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJi cmVha19oZXJlIgogKwotK2dkYl90ZXN0ICJwIHRlbXAxIiAiID0gJzEnIDxyZXBlYXRzIDI2IHRp bWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMSIKLStnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8 cmVwZWF0cyAyNiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDIiCi0rZ2RiX3Rlc3QgInAgdGVt cDMiICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAzIgorK2dk Yl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVc XFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBl ID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgogKwotK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIgorK2dkYl90ZXN0ICJ3aGF0aXMg KmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiB3aGF0aXMgKmFycmF5Igor K2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6 IHB0eXBlICphcnJheSIKICsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIg XFxcW3ZhcmlhYmxlXFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0ICJ3aGF0 aXMgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMg dGVtcDIiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0i ICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMyIKKytnZGJfdGVzdCAicCAoKmFycmF5KVxbMVxdIiAiXFwk XFswLTlcXSA9IDEgJ1xcXFwwMDEnIgorK2dkYl90ZXN0ICJwICgqYXJyYXkpXFsyXF0iICJcXCRc WzAtOVxdID0gMiAnXFxcXDAwMiciCisrZ2RiX3Rlc3QgInAgKCphcnJheSlcWzNcXSIgIlxcJFxb MC05XF0gPSAzICdcXFxcMDAzJyIKKytnZGJfdGVzdCAicCAoKmFycmF5KVxbNFxdIiAiXFwkXFsw LTlcXSA9IDQgJ1xcXFwwMDQnIgogKwotK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMSIgInR5cGUgPSBj aGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAxIgotK2dkYl90ZXN0ICJwdHlwZSB0 ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAyIgotK2dk Yl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6IHB0 eXBlIHRlbXAzIgorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJlIgogKwot K2dkYl90ZXN0ICJwIHRlbXAxIiAiID0gJzEnIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNlY29uZDog cHJpbnQgdGVtcDEiCi0rZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAnMicgPHJlcGVhdHMgNzggdGlt ZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMiIKLStnZGJfdGVzdCAicCB0ZW1wMyIgIiA9ICczJyA8 cmVwZWF0cyA0OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAzIgotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL25leHRvdmVydGhyb3cuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbmV4dG92ZXJ0aHJvdy5leHAKLWluZGV4IDdkNGEwYzUuLjJkYWZjYWIgMTAwNjQ0Ci0tLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAKLUBAIC01NCw2ICs1NCwxNyBAQCBnZGJfdGVz dF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9EZWJ1Z0hvb2siICJjaGVjayBmb3IgdW53aW5kZXIg aG9vayIgewotICAgICB9Ci0gfQotIGlmIHshJG9rfSB7Ci0rICAgIGdkYl90ZXN0X211bHRpcGxl ICJpbmZvIHByb2JlIiAiY2hlY2sgZm9yIHN0YXAgcHJvYmUgaW4gdW53aW5kZXIiIHsKLSsJLXJl ICIuKmxpYmdjYy4qdW53aW5kLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAiY2hl Y2sgZm9yIHN0YXAgcHJvYmUgaW4gdW53aW5kZXIiCi0rCSAgICBzZXQgb2sgMQotKwl9Ci0rCS1y ZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJfQotKyAgICB9Ci0rfQorK2dkYl90ZXN0ICJ3aGF0 aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25k OiB3aGF0aXMgYXJyYXkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFwo XFwqXFwpXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCiArCi0raWYgeyEkb2t9IHsK LSAgICAgdW5zdXBwb3J0ZWQgIm5leHRvdmVydGhyb3cuZXhwIGNvdWxkIG5vdCBmaW5kIF9Vbndp bmRfRGVidWdIb29rIgotICAgICByZXR1cm4gLTEKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUworK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlw ZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogd2hhdGlzICphcnJheSIKKytnZGJfdGVzdCAi cHR5cGUgKmFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgKmFy cmF5IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBl ZGVmLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9v LlMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42NmY3YTM5CistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1m b28uUworQEAgLTAsMCArMSw0NTUgQEAKKysJLmZpbGUJIng4Nl82NC12bGEtdHlwZWRlZi5jIgor Kwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cworKy5MZGVidWdfYWJicmV2MDoK KysJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHByb2diaXRzCisrLkxkZWJ1Z19pbmZvMDoKKysJ LnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2diaXRzCisrLkxkZWJ1Z19saW5lMDoKKysJLnRl eHQKKysuTHRleHQwOgorKy5nbG9ibCBmb28KKysJLnR5cGUJZm9vLCBAZnVuY3Rpb24KKytmb286 CisrLkxGQjI6CisrCS5maWxlIDEgIng4Nl82NC12bGEtdHlwZWRlZi5jIgorKwkubG9jIDEgMjIg MAorKwlwdXNocQklcmJwCisrLkxDRkkwOgorKwltb3ZxCSVyc3AsICVyYnAKKysuTENGSTE6Cisr CXN1YnEJJDY0LCAlcnNwCisrLkxDRkkyOgorKwltb3ZsCSVlZGksIC0zNiglcmJwKQorKwkubG9j IDEgMjIgMAorKwltb3ZxCSVyc3AsICVyYXgKKysJbW92cQklcmF4LCAtNDgoJXJicCkKKysJLmxv YyAxIDIzIDAKKysJbW92bAktMzYoJXJicCksICVlZHgKKysJbW92c2xxCSVlZHgsJXJheAorKwlz dWJxCSQxLCAlcmF4CisrCW1vdnEJJXJheCwgLTI0KCVyYnApCisrCS5sb2MgMSAyNCAwCisrCW1v dnNscQklZWR4LCVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJc2hy cQkkNCwgJXJheAorKwlzYWxxCSQ0LCAlcmF4CisrCXN1YnEJJXJheCwgJXJzcAorKwltb3ZxCSVy c3AsIC01NiglcmJwKQorKwltb3ZxCS01NiglcmJwKSwgJXJheAorKwlhZGRxCSQxNSwgJXJheAor KwlzaHJxCSQ0LCAlcmF4CisrCXNhbHEJJDQsICVyYXgKKysJbW92cQklcmF4LCAtNTYoJXJicCkK KysJbW92cQktNTYoJXJicCksICVyYXgKKysJbW92cQklcmF4LCAtMTYoJXJicCkKKysJLmxvYyAx IDI3IDAKKysJbW92bAkkMCwgLTQoJXJicCkKKysJam1wCS5MMgorKy5MMzoKKysJLmxvYyAxIDI4 IDAKKysJbW92bAktNCglcmJwKSwgJWVzaQorKwltb3ZsCS00KCVyYnApLCAlZWF4CisrCW1vdmwJ JWVheCwgJWVjeAorKwltb3ZxCS0xNiglcmJwKSwgJXJkeAorKwltb3ZzbHEJJWVzaSwlcmF4Cisr CW1vdmIJJWNsLCAoJXJkeCwlcmF4KQorKwkubG9jIDEgMjcgMAorKwlhZGRsCSQxLCAtNCglcmJw KQorKy5MMjoKKysJbW92bAktNCglcmJwKSwgJWVheAorKwljbXBsCS0zNiglcmJwKSwgJWVheAor KwlqbAkuTDMKKysJLmxvYyAxIDMwIDAKKysJLmdsb2JsCWJyZWFrX2hlcmUKKyticmVha19oZXJl OgorKwltb3ZxCS0xNiglcmJwKSwgJXJheAorKwltb3ZiCSQwLCAoJXJheCkKKysJbW92cQktNDgo JXJicCksICVyc3AKKysJLmxvYyAxIDMxIDAKKysJbGVhdmUKKysJcmV0CisrLkxGRTI6CisrCS5z aXplCWZvbywgLi1mb28KKysJLnNlY3Rpb24JLmRlYnVnX2ZyYW1lLCIiLEBwcm9nYml0cworKy5M ZnJhbWUwOgorKwkubG9uZwkuTEVDSUUwLS5MU0NJRTAKKysuTFNDSUUwOgorKwkubG9uZwkweGZm ZmZmZmZmCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSIiCisrCS51bGViMTI4IDB4MQorKwkuc2xl YjEyOCAtOAorKwkuYnl0ZQkweDEwCisrCS5ieXRlCTB4YworKwkudWxlYjEyOCAweDcKKysJLnVs ZWIxMjggMHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5hbGlnbiA4CisrLkxF Q0lFMDoKKysuTFNGREUwOgorKwkubG9uZwkuTEVGREUwLS5MQVNGREUwCisrLkxBU0ZERTA6Cisr CS5sb25nCS5MZnJhbWUwCisrCS5xdWFkCS5MRkIyCisrCS5xdWFkCS5MRkUyLS5MRkIyCisrCS5i eXRlCTB4NAorKwkubG9uZwkuTENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGViMTI4IDB4 MTAKKysJLmJ5dGUJMHg4NgorKwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5M Q0ZJMS0uTENGSTAKKysJLmJ5dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24gOAorKy5M RUZERTA6CisrCS5zZWN0aW9uCS5laF9mcmFtZSwiYSIsQHByb2diaXRzCisrLkxmcmFtZTE6Cisr CS5sb25nCS5MRUNJRTEtLkxTQ0lFMQorKy5MU0NJRTE6CisrCS5sb25nCTB4MAorKwkuYnl0ZQkw eDEKKysJLnN0cmluZwkielIiCisrCS51bGViMTI4IDB4MQorKwkuc2xlYjEyOCAtOAorKwkuYnl0 ZQkweDEwCisrCS51bGViMTI4IDB4MQorKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHhjCisrCS51bGVi MTI4IDB4NworKwkudWxlYjEyOCAweDgKKysJLmJ5dGUJMHg5MAorKwkudWxlYjEyOCAweDEKKysJ LmFsaWduIDgKKysuTEVDSUUxOgorKy5MU0ZERTE6CisrCS5sb25nCS5MRUZERTEtLkxBU0ZERTEK KysuTEFTRkRFMToKKysJLmxvbmcJLkxBU0ZERTEtLkxmcmFtZTEKKysJLmxvbmcJLkxGQjIKKysJ LmxvbmcJLkxGRTItLkxGQjIKKysJLnVsZWIxMjggMHgwCisrCS5ieXRlCTB4NAorKwkubG9uZwku TENGSTAtLkxGQjIKKysJLmJ5dGUJMHhlCisrCS51bGViMTI4IDB4MTAKKysJLmJ5dGUJMHg4Ngor KwkudWxlYjEyOCAweDIKKysJLmJ5dGUJMHg0CisrCS5sb25nCS5MQ0ZJMS0uTENGSTAKKysJLmJ5 dGUJMHhkCisrCS51bGViMTI4IDB4NgorKwkuYWxpZ24gOAorKy5MRUZERTE6CisrCS50ZXh0Cisr LkxldGV4dDA6CisrCS5zZWN0aW9uCS5kZWJ1Z19sb2MsIiIsQHByb2diaXRzCisrLkxkZWJ1Z19s b2MwOgorKy5MTFNUMDoKKysJLnF1YWQJLkxGQjItLkx0ZXh0MAorKwkucXVhZAkuTENGSTAtLkx0 ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzcKKysJLnNsZWIxMjggOAorKwkucXVhZAku TENGSTAtLkx0ZXh0MAorKwkucXVhZAkuTENGSTEtLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5i eXRlCTB4NzcKKysJLnNsZWIxMjggMTYKKysJLnF1YWQJLkxDRkkxLS5MdGV4dDAKKysJLnF1YWQJ LkxGRTItLkx0ZXh0MAorKwkudmFsdWUJMHgyCisrCS5ieXRlCTB4NzYKKysJLnNsZWIxMjggMTYK KysJLnF1YWQJMHgwCisrCS5xdWFkCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfaW5mbworKwkubG9u ZwkuTGRlYnVnX2VuZCAtIC5MZGVidWdfc3RhcnQKKysuTGRlYnVnX3N0YXJ0OgorKwkudmFsdWUJ MHgyCisrCS5sb25nCS5MZGVidWdfYWJicmV2MAorKwkuYnl0ZQkweDgKKysJLnVsZWIxMjggMHgx CisrCS5sb25nCS5MQVNGMgorKwkuYnl0ZQkweDEKKysJLmxvbmcJLkxBU0YzCisrCS5sb25nCS5M QVNGNAorKwkucXVhZAkuTHRleHQwCisrCS5xdWFkCS5MZXRleHQwCisrCS5sb25nCS5MZGVidWdf bGluZTAKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJmb28iCisrCS5i eXRlCTB4MQorKwkuYnl0ZQkweDE2CisrCS5ieXRlCTB4MQorKwkucXVhZAkuTEZCMgorKwkucXVh ZAkuTEZFMgorKwkubG9uZwkuTExTVDAKKysJLmxvbmcJMHg4MworKwkudWxlYjEyOCAweDMKKysJ LmxvbmcJLkxBU0Y1CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE1CisrCS5sb25nCTB4ODMKKysJ LmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTUyCisrLkx0YWdfdHlwZWRlZjoK KysJLnVsZWIxMjggMHg0CisrCS5sb25nCS5MQVNGNgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHgx NworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8KKysJLnVsZWIxMjggMHg1 CS8qIEFiYnJldiBOdW1iZXI6IDUgKERXX1RBR192YXJpYWJsZSkgKi8KKysJLmxvbmcJLkxBU0Yw CisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE4CisrI2lmIDEKKysJLmxvbmcJLkx0YWdfdHlwZWRl ZiAtIC5kZWJ1Z19pbmZvCisrI2Vsc2UKKysJLyogRGVidWdnaW5nIG9ubHk6IFNraXAgdGhlIHR5 cGVkZWYgaW5kaXJlY3Rpb24uICAqLworKwkubG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVn X2luZm8KKysjZW5kaWYKKysJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBzdGFy dCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtMzIKKysjaWYgMAor KwkuYnl0ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KKysjZWxzZQorKwkuYnl0ZQkweDk2CS8qIERX X09QX25vcCAqLworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6 IGVuZCAqLworKwkudWxlYjEyOCAweDYKKysJLnN0cmluZwkiaSIKKysJLmJ5dGUJMHgxCisrCS5i eXRlCTB4MTkKKysJLmxvbmcJMHg4MworKwkuYnl0ZQkweDIKKysJLmJ5dGUJMHg5MQorKwkuc2xl YjEyOCAtMjAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NworKwkuYnl0ZQkweDQKKysJLmJ5 dGUJMHg1CisrCS5zdHJpbmcJImludCIKKysuTHRhZ19hcnJheV90eXBlOgorKwkudWxlYjEyOCAw eDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUpICovCisrCS5sb25nCTB4 YTAgKyAoMmYgLSAxZikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICovCisrCS5sb25nCTB4 OWQgKyAoMmYgLSAxZikJLyogRFdfQVRfc2libGluZzogRFdfRk9STV9yZWY0ICovCisrMToJLyog RFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCisrCS5ieXRlCTJm IC0gM2YJLyogbGVuZ3RoICovCisrMzoKKysJLmJ5dGUJMHg5NwkvKiBEV19PUF9wdXNoX29iamVj dF9hZGRyZXNzICovCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKzI6CS8qIERXX0FU X2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJLnVsZWIxMjggMHg5Cisr CS5sb25nCTB4OWQgKyAoMmIgLSAxYikJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICovCisr CS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC00MAorKwkuYnl0ZQkweDYKKysJ LmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDgKKysJLmJ5dGUJMHg3CisrCS51 bGViMTI4IDB4YgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHg2CisrCS5sb25nCS5MQVNGMQorKwku Ynl0ZQkweDAKKysuTGRlYnVnX2VuZDoKKysJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgorKwkudWxl YjEyOCAweDEKKysJLnVsZWIxMjggMHgxMQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHgyNQor KwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweGIKKysJLnVsZWIx MjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDFiCisrCS51bGViMTI4IDB4ZQor KwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDEyCisrCS51bGVi MTI4IDB4MQorKwkudWxlYjEyOCAweDEwCisrCS51bGViMTI4IDB4NgorKwkuYnl0ZQkweDAKKysJ LmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweDJlCisrCS5ieXRlCTB4MQor KwkudWxlYjEyOCAweDNmCisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAweDMKKysJLnVsZWIx MjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjcKKysJLnVsZWIxMjggMHhjCisrCS51bGVi MTI4IDB4MTEKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4MTIKKysJLnVsZWIxMjggMHgx CisrCS51bGViMTI4IDB4NDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4IDB4MQorKwkudWxl YjEyOCAweDEzCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51 bGViMTI4IDB4NQorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQor KwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGVi MTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLnVsZWIxMjggMHgy CisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 NAorKwkudWxlYjEyOCAweDE2CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIx MjggMHhlCisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkuYnl0 ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NQorKwkudWxlYjEyOCAweDM0CisrCS5i eXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHhlCisrCS51bGViMTI4IDB4M2EK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGVi MTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhh CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg2CisrCS51bGViMTI4IDB4 MzQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDgKKysJLnVsZWIx MjggMHgzYQorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIK KysJLnVsZWIxMjggMHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4MgorKwkudWxl YjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDcKKysJLnVs ZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4Ygor KwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDMKKysJLnVsZWIx MjggMHg4CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg4CS8qIEFiYnJl diBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLworKwkudWxlYjEyOCAweDEKKysJLmJ5 dGUJMHgxCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOCAweDEz CS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAqLwor KwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDUwCS8qIERX X0FUX2RhdGFfbG9jYXRpb24gKi8KKysJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sxICov CisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg5CisrCS51bGViMTI4IDB4 MjEKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLworKwkudWxl YjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOCAweDJmCisrCS51bGViMTI4 IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YQorKwkudWxlYjEy OCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51 bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJ LnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4 YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJLnVs ZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS5i eXRlCTB4MAorKwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCisrCS5sb25n CTB4MTYKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisrCS5sb25nCTB4YTgK KysJLmxvbmcJMHgyZAorKwkuc3RyaW5nCSJmb28iCisrCS5sb25nCTB4MAorKwkuc2VjdGlvbgku ZGVidWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKKysJLmxvbmcJMHgyYworKwkudmFsdWUJMHgyCisr CS5sb25nCS5MZGVidWdfaW5mbzAKKysJLmJ5dGUJMHg4CisrCS5ieXRlCTB4MAorKwkudmFsdWUJ MHgwCisrCS52YWx1ZQkweDAKKysJLnF1YWQJLkx0ZXh0MAorKwkucXVhZAkuTGV0ZXh0MC0uTHRl eHQwCisrCS5xdWFkCTB4MAorKwkucXVhZAkweDAKKysJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMi LEBwcm9nYml0cywxCisrLkxBU0YwOgorKwkuc3RyaW5nCSJhcnJheSIKKysuTEFTRjU6CisrCS5z dHJpbmcJInNpemUiCisrLkxBU0YzOgorKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIK KysuTEFTRjY6CisrCS5zdHJpbmcJImFycmF5X3QiCisrLkxBU0YxOgorKwkuc3RyaW5nCSJjaGFy IgorKy5MQVNGNDoKKysJLnN0cmluZwkiZ2RiLmFyY2giCisrLkxBU0YyOgorKwkuc3RyaW5nCSJH TlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKKysJLmlkZW50CSJHQ0M6IChH TlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgorKwkuc2VjdGlvbgkubm90ZS5H TlUtc3RhY2ssIiIsQHByb2diaXRzCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXR5cGVkZWYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS10eXBlZGVmLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5hYWMzYmFh CitpbmRleCAwMDAwMDAwLi5iODA5YzRlCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwotQEAgLTAsMCArMSwyNDYgQEAKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMKK0BAIC0wLDAg KzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgogKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwog KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyNTMyLDI0MiArNjIxMiwzOSBA QCBpbmRleCAwMDAwMDAwLi5hYWMzYmFhCiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCiArCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsvKiBXZSB3aWxsIGBicmVhayAq bWFpbicgYXQgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1Y3Rpb24uICAqLwotKyNkZWZpbmUgbWFpbl9s ZW5ndGggMQotKwotKwkuc2VjdGlvbgkuZGF0YQotK3ZhcmRhdGE6Ci0rCS8qIFNlZSBEV19PUF9s aXQzICsgMSAoMC1iYXNlZCkuICAqLwotKwkuc3RyaW5nCQkic2Vlbm5vdHNlZW4iCi0rCi0rCS5z ZWN0aW9uCS5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVnaW46Ci0rCS40Ynl0ZQkJLkxjdTFfZW5kIC0g LkxjdTFfc3RhcnQJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFy dDoKLSsJLjJieXRlCQkyCQkJLyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8KLSsJLjRieXRlCQku TGRlYnVnX2FiYnJldjAJCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAqLwotKwkuYnl0 ZQkJNAkJCS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCi0rCi0rCS8qIENVIGRpZSAqLwot KwkudWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS40Ynl0 ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLyogVXNlIEMrKyB0byBleHBs b2l0IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFtZSAiIi4gICovCi0rCS5ieXRlCQk0CQkJLyog RFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KLSsJLjRieXRlCQltYWluCQkJLyogRFdfQVRfbG93 X3BjICovCi0rCS5ieXRlCQltYWluX2xlbmd0aAkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwotKy5M YXJyYXlfdHlwZToKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2FycmF5X3R5cGUg Ki8KLSsJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0r Ci0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90eXBlICovCi0rCS40 Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkJ MAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS40Ynl0ZQkJLkxsZW5fdmFyLS5MY3UxX2Jl Z2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxk cmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyBh biBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KLSsuTGFycmF5Yl90eXBlOgotKwkudWxlYjEy OAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90 eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFi YnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1 MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91 bmQgKi8KLSsJLjRieXRlCQkuTGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2Jv dW5kICovCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKwkv KiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyByZWdpc3Rlci4gICovCi0rLkxhcnJh eXJlZ190eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAq LwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsK LSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aCBibG9j ayAqLwotKwkuNGJ5dGUJCS5MdWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8K LSsJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJ CS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rMToJLmJ5dGUJCTB4NTAJCQkvKiBEV19PUF9yZWcw ICovCi0rMjoKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGllICovCi0rCi0r Lkx1aW50X3R5cGU6Ci0rCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUg Ki8KLSsJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCQk0CQkJ LyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCQk3CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8K LSsKLSsuTGNoYXJfdHlwZToKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2Vf dHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl9zdHIJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJ CTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTYJCQkvKiBEV19BVF9lbmNvZGlu ZyAqLwotKwotKy5MbGVuX3ZhcjoKLSsJLnVsZWIxMjgJNQkJCS8qIEFiYnJldjogRFdfVEFHX3Zh cmlhYmxlIGFydGlmaWNpYWwgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9hcnRpZmljaWFsICov Ci0rCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwotKwku NGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0CS8qIERXX0FUX2xvY2F0aW9uICovCi0rCi0r CS8qIG9wdGltaXplZC1vdXQgdmFyaWFibGUgZm9yIGJfc3RyaW5nLiAgKi8KLSsuTGxlbmJfdmFy OgotKwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgYXJ0aWZpY2lhbCBu byBEV19BVF9sb2NhdGlvbiAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8K LSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCi0r CS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAq LwotKwkuc3RyaW5nCQkiYV9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxh cnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTJmIC0gMWYJ CQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRlCQkzCQkJLyogICBEV19PUF9hZGRyICov Ci0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCi0rMjoKLSsKLSsJLyogRFdfQVRf dXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4gb3B0aW1pemVkLW91dCB2YXJpYWJsZS4gICov Ci0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmlu ZyAqLwotKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJ LkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkyZiAt IDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRk ciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLwotKzI6Ci0rCi0rCS8qIERX X0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIHJlZ2lzdGVyLiAgKi8KLSsJLnVsZWIxMjgJ NgkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCi0rCS5zdHJp bmcJCSJyZWdfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJCS5MYXJyYXlyZWdf dHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyog RFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwku NGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLwotKzI6Ci0rCi0rCS5ieXRlCQkwCQkJLyog RW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rLkxjdTFfZW5kOgotKwotKwkuc2VjdGlvbgkuZGVi dWdfbG9jCi0rLkxsb2NsaXN0OgotKy5MbGVuX2xvY2xpc3Q6Ci0rCS40Ynl0ZQkwCQkJIyBMb2Nh dGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MKLSsJLjRieXRlCW1haW5fbGVuZ3RoCQkjIExvY2F0aW9u IGxpc3QgZW5kIGFkZHJlc3MKLSsJLnZhbHVlCTJmLTFmCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBz aXplCi0rMToJLmJ5dGUJMHgzMwkjIERXX09QX2xpdDMKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0 YWNrX3ZhbHVlCi0rMjoKLSsJLnF1YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJl Z2luICgqLkxMU1QyKQotKwkucXVhZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5k ICgqLkxMU1QyKQotKwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxkZWJ1Z19hYmJyZXYw OgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8q IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIGhhc19jaGlsZHJlbiAq LwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHhl CQkJLyogRFdfRk9STV9zdHJwICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFn ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4 MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRy ICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4 YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJMgkJCS8qIEFi YnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MQkJCS8qIFRBRzogRFdfVEFHX2FycmF5X3R5cGUg Ki8KLSsJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOAkweDQ5 CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEy OAkweDIxCQkJLyogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5v IGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGVi MTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FU X2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJ LnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS51bGViMTI4CTB4MTMJ CQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJ LmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJl diBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5i eXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9u YW1lICovCi0rCS51bGViMTI4CTB4ZQkJCS8qIERXX0ZPUk1fc3RycCAqLwotKwkudWxlYjEyOAkw eGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9k YXRhMSAqLwotKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsJLnVsZWIx MjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKyNpZiAwCiArCi0rCS51bGVi MTI4CTUJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3Zh cmlhYmxlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkw eDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLwotKwkudWxlYjEyOAkweDBjCQkJLyogRFdfRk9S TV9mbGFnICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4 CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgwMgkJCS8qIERXX0FUX2xv Y2F0aW9uICovCi0rCS51bGViMTI4CTB4MDYJCQkvKiBEV19GT1JNX2RhdGE0ICovCi0rCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov Cisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisreworKyAgdHlwZWRlZiBjaGFyIGFycmF5X3Rbc2l6 ZV07CisrICBhcnJheV90IGFycmF5OworKyAgaW50IGk7CiArCi0rCS51bGViMTI4CTYJCQkvKiBB YmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0r CS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19B VF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGVi MTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JN X3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLnVsZWIx MjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysgIGZvciAoaSA9IDA7IGkg PCBzaXplOyBpKyspCisrICAgIGFycmF5W2ldID0gaTsKICsKLSsJLnVsZWIxMjgJNwkJCS8qIEFi YnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KLSsJ LmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MzQJCQkvKiBEV19B VF9hcnRpZmljaWFsICovCi0rCS51bGViMTI4CTB4MGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJ LnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERX X0ZPUk1fcmVmNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLworKyAgYXJyYXlbMF0gPSAwOwkvKiBicmVhay1oZXJlICov CisrfQogKwotKwkudWxlYjEyOAk4CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgy MQkJCS8qIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGggYmxvY2sgKi8KLSsJLmJ5dGUJCTB4MAkJ CS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0r CS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyMgkJCS8q IERXX0FUX2xvd2VyX2JvdW5kICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEg Ki8KLSsJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS51bGViMTI4 CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrI2Vsc2UKICsKLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIGZvbyAo MjYpOworKyAgZm9vICg3OCk7CisrICByZXR1cm4gMDsKKyt9CiArCi0rLyogU3RyaW5nIHRhYmxl ICovCi0rCS5zZWN0aW9uIC5kZWJ1Z19zdHIKLSsuTHByb2R1Y2VyOgotKwkuc3RyaW5nCQkiR05V IEMgMy4zLjMiCi0rLkxjaGFyX3N0cjoKLSsJLnN0cmluZwkJImNoYXIiCi0rLkx1aW50X3N0cjoK LSsJLnN0cmluZwkJInVuc2lnbmVkIGludCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1ib3VuZC1sb2NsaXN0LmV4cAorKyNlbmRpZgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFy Y2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjgxNWVkOTMKK2luZGV4IDAwMDAwMDAuLmIwNTQxMWUKIC0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAKLUBAIC0w LDAgKzEsNTQgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhw CitAQCAtMCwwICsxLDY0IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTI3ODIs MTg3ICs2MjU5LDIzOSBAQCBpbmRleCAwMDAwMDAwLi44MTVlZDkzCiArIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCiArCi0rIyBUZXN0IHByaW50aW5nIHZhcmlhYmxlIHdpdGggZHluYW1pYyBi b3VuZHMgd2hpY2ggcmVmZXJlbmNlIGEgZGlmZmVyZW50Ci0rIyAoYXJ0aWZpY2lhbCBpbiB0aGUg R0NDIGNhc2UpIHZhcmlhYmxlIGNvbnRhaW5pbmcgbG9jbGlzdCBhcyBpdHMgbG9jYXRpb24uCi0r IyBUaGlzIHRlc3RjYXNlIHVzZXMgdmFsdWUgKG5vdCBhZGRyZXNzKSBvZiB0aGUgcmVmZXJlbmNl ZCB2YXJpYWJsZToKLSsjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/ aWQ9NDM3NjIKKysjIFRlc3QgRFdfQVRfZGF0YV9sb2NhdGlvbiBhY2Nlc3NlZCB0aHJvdWdoIERX X1RBR190eXBlZGVmIGludGVybWVkaWF0ZS4KICsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBy dW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Ig bm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAq LSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFy Z2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYg IVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFi aSpdfSB7Ci0rICAgIHJldHVybiAwCisraWYgIVtpc3RhcmdldCAieDg2XzY0LSotKiJdIHRoZW4g eworKyAgICB2ZXJib3NlICJTa2lwcGluZyBvdmVyIGdkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRl Zi5leHAgdGVzdCBtYWRlIG9ubHkgZm9yIHg4Nl82NC4iCisrICAgIHJldHVybgogK30KICsKLStz ZXQgdGVzdGZpbGUgZHcyLWJvdW5kLWxvY2xpc3QKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5n ICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBbbGlzdCAke3Rlc3RmaWxlfS5TIG1haW4uY10g e31dIH0geworK3NldCB0ZXN0ZmlsZSB4ODZfNjQtdmxhLXR5cGVkZWYKKytzZXQgc3JjYXNtZmls ZSAke3Rlc3RmaWxlfS1mb28uUworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Cisrc2V0IGJpbm9iamZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mb28ubworK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxlfSIgb2JqZWN0 IHt9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9n cmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHtiaW5vYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRl c3QgcHJvZ3JhbSIKICsgICAgcmV0dXJuIC0xCiArfQogKwotKyMgVmVyaWZ5IGl0IGJlaGF2ZXMg YXQgbGVhc3QgYXMgYW4gdW5ib3VuZCBhcnJheSB3aXRob3V0IGluZmVyaW9yLgotKwotK2dkYl90 ZXN0ICJwIGFfc3RyaW5nIiB7ID0gMHhbMC05YS1mXSsgInNlZW5ub3RzZWVuIn0KLStnZGJfdGVz dCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcW1xdfQorK2dkYl9leGl0CisrZ2RiX3N0 YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHti aW5maWxlfQogKwotKyMgTm90IHJ1bnRvX21haW4gYXMgZHcyLWJvdW5kLWxvY2xpc3QuUyBoYW5k bGVzIG9ubHkgdGhlIGZpcnN0IGJ5dGUgb2YgbWFpbi4KLStpZiAhW3J1bnRvICIqbWFpbiJdIHsK KytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgeDg2XzY0LXZsYS10eXBlZGVmCiAr ICAgIHJldHVybiAtMQogK30KICsKLStnZGJfdGVzdCAicCBhX3N0cmluZyIgeyA9ICJzZWVuIn0K LStnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcWzRcXX0KKytnZGJfYnJl YWtwb2ludCAiYnJlYWtfaGVyZSIKICsKLStnZGJfdGVzdCAicCBiX3N0cmluZyIgeyA9ICgweFsw LTlhLWZdKyApPyJzZWVubm90c2VlbiJ9Ci0rZ2RiX3Rlc3QgInB0eXBlIGJfc3RyaW5nIiB7dHlw ZSA9IGNoYXIgXFtcXX0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWtfaGVyZSIK ICsKLSsjIFRoZSByZWdpc3RlciBjb250YWlucyB1bnByZWRpY3RhYmxlIHZhbHVlIC0gdGhlIGFy cmF5IHNpemUuCi0rZ2RiX3Rlc3QgInB0eXBlIHJlZ19zdHJpbmciIHt0eXBlID0gY2hhciBcWy0/ WzAtOV0rXF19Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJp cHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCisrZ2RiX3Rl c3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIK KysKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmly c3Q6IHB0eXBlIGFycmF5IgorKworK2dkYl90ZXN0ICJwIGFycmF5XFsxXF0iICJcXCRcWzAtOVxd ID0gMSAnXFxcXDAwMSciCisrZ2RiX3Rlc3QgInAgYXJyYXlcWzJcXSIgIlxcJFxbMC05XF0gPSAy ICdcXFxcMDAyJyIKKytnZGJfdGVzdCAicCBhcnJheVxbM1xdIiAiXFwkXFswLTlcXSA9IDMgJ1xc XFwwMDMnIgorK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJcXCRcWzAtOVxdID0gNCAnXFxcXDAw NCciCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCisrCisrZ2Ri X3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25kOiB3aGF0aXMgYXJy YXkiCisrCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIg InNlY29uZDogcHR5cGUgYXJyYXkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9hcnJheWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCitpbmRleCBh OTkxMzdlLi5jM2RjMmQ5IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJh eWlkeC5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKK0BAIC0xNyw2 ICsxNywxMyBAQAorIAorIGludCBhcnJheVtdID0gezEsIDIsIDMsIDR9OworIAorKyNpZmRlZiBf X0dOVUNfXworK3N0cnVjdAorKyAgeworKyAgICBpbnQgYVswXTsKKysgIH0gdW5ib3VuZDsKKysj ZW5kaWYKKysKKyBpbnQKKyBtYWluICh2b2lkKQorIHsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlp ZHguZXhwCitpbmRleCBjYmEwMDI0Li4wZGMwZTQ2IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJy YXlpZHguZXhwCitAQCAtNTMsNCArNTMsMTIgQEAgZ2RiX3Rlc3QgInByaW50IGFycmF5IiBcCisg ICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxcXSA9IDIsIFxcXFsyXFxcXSA9IDMs IFxcXFszXFxcXSA9IDRcXH0iIFwKKyAgICAgICAgICAiUHJpbnQgYXJyYXkgd2l0aCBhcnJheS1p bmRleGVzIG9uIgorIAorLQorK3NldCB0ZXN0ICJwIHVuYm91bmQuYSA9PSAmdW5ib3VuZC5hXFsw XF0iCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIiA9IDFcclxu JGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJObyBzeW1i b2wgXCJ1bmJvdW5kXCIgaW4gY3VycmVudCBjb250ZXh0LlxyXG4kZ2RiX3Byb21wdCAkIiB7Cisr CXVuc3VwcG9ydGVkICIkdGVzdCAobm8gR0NDKSIKKysgICAgfQorK30KK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMKIG5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xZjAyZDkwCitpbmRleCAwMDAwMDAwLi5lZWI3 Yjg1CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0 cmlwcGVkLmMKLUBAIC0wLDAgKzEsNDIgQEAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv aW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuYworQEAgLTAsMCArMSwyMCBAQAogKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rICAgQ29weXJp Z2h0IDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiArICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQogKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IAorKwogKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAq LworKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KICsKKytzdHJ1Y3QgeworKyAgaW50IGZpZWxkOworK30g c3RhdGljc3RydWN0ID0geyAxIH07CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjZkODJlNzMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCitAQCAtMCwwICsxLDI2IEBA CisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsv KiBUaGUgZnVuY3Rpb24gYGZ1bmMxJyB0cmFjZWQgaW50byBtdXN0IGhhdmUgZGVidWcgaW5mbyBv biBvZmZzZXQgPiAwOwotKyAgIChEV19VTlNORCAoYXR0cikpLiAgVGhpcyBpcyB0aGUgcmVhc29u IG9mIGBmdW5jMCcgZXhpc3RlbmNlLiAgKi8KKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr IworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CiArCi0rdm9pZAotK2Z1bmMwKGludCBhLCBpbnQgYikKLSt7Cisrc2V0IHRlc3QgaW50ZXJuYWwt dmFyLWZpZWxkLWFkZHJlc3MKKytzZXQgYmluZmlsZSAke3Rlc3R9LngKKytpZiAgeyBbZ2RiX2Nv bXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS5jIiAiJHtvYmpkaXJ9LyR7c3ViZGly fS8ke2JpbmZpbGV9IiBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJD b3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKysgICAgcmV0dXJuIC0xCiArfQogKwotKy8q IGBmdW5jMScgYmVpbmcgdHJhY2VkIGludG8gbXVzdCBoYXZlIHNvbWUgYXJndW1lbnRzIHRvIGR1 bXAuICAqLworK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKICsKLSt2b2lkCi0rZnVuYzEoaW50IGEs IGludCBiKQotK3sKLSsgIGZ1bmMwIChhLGIpOwotK30KKytnZGJfdGVzdCB7c2V0ICR2YXJzdHJ1 Y3QgPSBzdGF0aWNzdHJ1Y3R9CisrZ2RiX3Rlc3Qge3AgJHZhcnN0cnVjdC5maWVsZH0gIiA9IDEi CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi41NzUwZjY4CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS1mcmFtZS5jCitAQCAtMCwwICsxLDMxIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0cmluZy5oPgogKwogK2ludAotK21h aW4odm9pZCkKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiArewotKyAgZnVuYzEgKDEs IDIpOworKyAgY2hhciBzWzIgKyBhcmdjXTsKKysgIHZvaWQgKCpmKSAoY2hhciAqKSA9IDA7Cisr CisrICBtZW1zZXQgKHMsIDAsIHNpemVvZiAocykpOworKyAgc1swXSA9ICdYJzsKKysKKysgIGYg KHMpOwogKyAgcmV0dXJuIDA7CiArfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItc3RyaXBwZWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJp cHBlZC5leHAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5leHAKIG5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xYzZlODRhCitpbmRleCAwMDAwMDAwLi40NzczNmM3CiAt LS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVk LmV4cAotQEAgLTAsMCArMSw3OSBAQAotKyMgQ29weXJpZ2h0IDIwMDYgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFt ZS5leHAKK0BAIC0wLDAgKzEsMzggQEAKKysjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyMKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCiArIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMgCisrIwogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAorKyMKICsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsKLSsjIE1pbmltYWwgRFdBUkYtMiB1bml0 IHRlc3QKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBz dXBwb3J0IERXQVJGLTIuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFy Z2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0 ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYg IVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0r c2V0IHRlc3RmaWxlICJkdzItc3RyaXBwZWQiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwot K3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ueAotKwotK3JlbW90 ZV9leGVjIGJ1aWxkICJybSAtZiAke2JpbmZpbGV9IgotKwotKyMgZ2V0IHRoZSB2YWx1ZSBvZiBn Y2NfY29tcGlsZWQKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICBy ZXR1cm4gLTEKLSt9CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBi ZSBydW4gb24gZ2NjIGFzIHdlIHVzZSBhZGRpdGlvbmFsX2ZsYWdzPUZJWE1FCi0raWYgeyRnY2Nf Y29tcGlsZWQgPT0gMH0gewotKyAgICByZXR1cm4gMAotK30KKytzZXQgdGVzdGZpbGUgdmxhLWZy YW1lCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KICsKLStpZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWdnZGIzfV0gIT0gIiIgfSB7CisraWYgeyBbcHJlcGFy ZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHtleGVjdXRhYmxlfV0gfSB7CiArICAgIHJl dHVybiAtMQogK30KICsKLStyZW1vdGVfZXhlYyBidWlsZCAib2JqY29weSAtUiAuZGVidWdfbG9j ICR7YmluZmlsZX0iCi0rc2V0IHN0cmlwX291dHB1dCBbcmVtb3RlX2V4ZWMgYnVpbGQgIm9iamR1 bXAgLWggJHtiaW5maWxlfSJdCi0rCi0rc2V0IHRlc3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgcHJl c2VydmF0aW9uIgotK2lmIFsgcmVnZXhwICIuZGVidWdfaW5mbyAiICRzdHJpcF9vdXRwdXRdICB7 Ci0rICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfaW5mbyBwcmVzZXJ2ZWQpIgotK30gZWxzZSB7Ci0r ICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfaW5mbyBnb3QgYWxzbyBzdHJpcHBlZCkiCisraWYgIVty dW50b19tYWluXSB7CisrICAgIHJldHVybiAtMQogK30KICsKLStzZXQgdGVzdCAic3RyaXBwaW5n IHRlc3QgZmlsZSBmdW5jdGlvbmFsaXR5IgotK2lmIFsgcmVnZXhwICIuZGVidWdfbG9jICIgJHN0 cmlwX291dHB1dF0gIHsKLSsgICAgZmFpbCAiJHRlc3QgKC5kZWJ1Z19sb2Mgc3RpbGwgcHJlc2Vu dCkiCi0rfSBlbHNlIHsKLSsgICAgcGFzcyAiJHRlc3QgKC5kZWJ1Z19sb2Mgc3RyaXBwZWQpIgor K3NldCB0ZXN0ICJjb250aW51ZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Cisr ICAgIC1yZSAiQ29udGludWluZ1xcLlxyXG5cclxuUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lH U0VHViwgU2VnbWVudGF0aW9uIGZhdWx0XFwuXHJcbjB4MCsgaW4gXFw/XFw/IFxcKFxcKVxyXG4k Z2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAgICAtcmUgIlxyXG4kZ2Ri X3Byb21wdCAkIiB7CisrCXVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAorKwlyZXR1cm4KKysgICAg fQogK30KICsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIEZvciBDIHByb2dyYW1z LCAic3RhcnQiIHNob3VsZCBzdG9wIGluIG1haW4oKS4KLSsKLStnZGJfdGVzdCAic3RhcnQiIFwK LSsgICAgICAgICAiLiptYWluIFxcKFxcKSBhdCAuKiIgXAotKyAgICAgICAgICJzdGFydCIKLStn ZGJfdGVzdCAic3RlcCIgXAotKyAgICAgICAgICJmdW5jLiogXFwoLipcXCkgYXQgLioiIFwKLSsg ICAgICAgICAic3RlcCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUworK2dkYl90ZXN0ICJidCBmdWxsIiAi XHJcbiArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3Zl cmZsb3cuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjVmY2RkODQKK2lu ZGV4IDAwMDAwMDAuLmM1ZDVlZTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMKLUBAIC0wLDAgKzEs ODMgQEAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMKK0BAIC0w LDAgKzEsMzAgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyOTc3LDc5ICs2NTA2LDI2 IEBAIGluZGV4IDAwMDAwMDAuLjVmY2RkODQKICsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LiAgKi8KICsKLSsvKiBEZWJ1ZyBpbmZvcm1hdGlvbiAqLwotKwotKwkuc2VjdGlvbiAuZGVidWdf aW5mbwotKy5MY3UxX2JlZ2luOgotKwkvKiBDVSBoZWFkZXIgKi8KLSsJLjRieXRlCS5MY3UxX2Vu ZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLwotKy5MY3Ux X3N0YXJ0OgotKwkuMmJ5dGUJMgkJCQkvKiBEV0FSRiBWZXJzaW9uICovCi0rCS40Ynl0ZQkuTGFi YnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBhYmJyZXYgc2VjdGlvbiAqLwotKwkuYnl0ZQk0 CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJLnVsZWIxMjggMQkJ CQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmFzY2lpCSJkdzItc3RydWN0 LW1lbWJlci1kYXRhLWxvY2F0aW9uLmNcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdO VSBDIDQuMy4yXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMQkJCQkvKiBEV19B VF9sYW5ndWFnZSAoQykgKi8KLSsKLSsuTHR5cGVfdWNoYXI6Ci0rCS51bGViMTI4CTIJCQkvKiBB YmJyZXY6IERXX1RBR19zdHJ1Y3R1cmVfdHlwZSAqLwotKwkuYXNjaWkJCSJzb21lX3N0cnVjdFww IgkJLyogRFdfQVRfbmFtZSAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdf bWVtYmVyICovCi0rCS5hc2NpaQkJImZpZWxkXDAiCQkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRl CQkwCQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsKLSsJLmJ5dGUJCTAJCQkv KiBFbmQgb2YgY2hpbGRyZW4gb2Ygc29tZV9zdHJ1Y3QgKi8KLSsKLSsJLmJ5dGUJCTAJCQkvKiBF bmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KLSsKLSsuTGN1MV9lbmQ6CisrI2luY2x1ZGUgPHN0ZGxp Yi5oPgogKwotKy8qIEFiYnJldiB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0r LkxhYmJyZXYxX2JlZ2luOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVs ZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBo YXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxl YjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdf QVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJ LnVsZWIxMjgJMHgxMwkJCS8qIERXX0FUX2xhbmd1YWdlICovCi0rCS51bGViMTI4CTB4YgkJCS8q IERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKytpbnQKKyttYWluIChpbnQgYXJnYywgY2hhciAq KmFyZ3YpCisreworKyAgaW50IGFycmF5W2FyZ2NdOwogKwotKwkudWxlYjEyOAkyCQkJLyogQWJi cmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX1RBR19zdHJ1Y3R1cmVfdHlwZSAq LwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBE V19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCisrICBhcnJheVswXSA9IGFycmF5WzBdOwogKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2 IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19tZW1iZXIgKi8KLSsJLmJ5dGUJ CTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAq LwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDM4 CQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHgwYgkJCS8q IERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysgIGFib3J0ICgpOwogKwotKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRh LWxvY2F0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJl ci1kYXRhLWxvY2F0aW9uLmV4cAorKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdmxhLW92ZXJmbG93LmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LmM0MTE1MWMKK2luZGV4IDAwMDAwMDAuLjI0YTYwOGYKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmV4 cAotQEAgLTAsMCArMSwzNyBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5l eHAKK0BAIC0wLDAgKzEsMTA5IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTMw NjQsNjE0ICs2NTQwLDQ4OCBAQCBpbmRleCAwMDAwMDAwLi5jNDExNTFjCiArIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQog KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCiArCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdl dHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEg c2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0K LSsgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxm Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQg YXJtLSotZWFiaSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAg ICByZXR1cm4gMCAgCisrIyBXZSBjb3VsZCBjcmFzaCBpbjoKKysjICMwICBibG9ja19saW5rYWdl X2Z1bmN0aW9uIChibD0weDApIGF0IC4uLy4uL2dkYi9ibG9jay5jOjY5CisrIyAjMSAgaW4gZHdh cmZfYmxvY2tfZ2V0X2ZyYW1lX2Jhc2UgKC4uLikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6 OTcKKysjICAgOTcJICBmcmFtZWZ1bmMgPSBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChnZXRfZnJh bWVfYmxvY2sgKGZyYW1lLCBOVUxMKSk7CisrIyAjMiAgaW4gZXhlY3V0ZV9zdGFja19vcCAoLi4u KSBhdCAuLi8uLi9nZGIvZHdhcmYyZXhwci5jOjQ5NgorKyMgIzMgIGluIGR3YXJmX2Jsb2NrX2V4 ZWNfY29yZSAoKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoxNTYKKysjICM0ICBkd2FyZl9i bG9ja19leGVjICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjIwNgorKyMgIzUgIGlu IHJhbmdlX3R5cGVfY291bnRfYm91bmRfaW50ZXJuYWwgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5 cGVzLmM6MTQzMAorKyMgIzYgIGluIGNyZWF0ZV9hcnJheV90eXBlICguLi4pIGF0IC4uLy4uL2dk Yi9nZGJ0eXBlcy5jOjg0MAorKyMgLi4uCisrIyAjMjEgaW4gcHN5bXRhYl90b19zeW10YWIgKC4u LikgYXQgLi4vLi4vZ2RiL3N5bWZpbGUuYzoyOTIKKysjIC4uLgorKyMgIzI5IGluIGJhY2t0cmFj ZV9jb21tYW5kXzEgKCkgYXQgLi4vLi4vZ2RiL3N0YWNrLmM6MTI3MworKworK3NldCB0ZXN0Zmls ZSB2bGEtb3ZlcmZsb3cKKytzZXQgc2hmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0tZ2RiLnNoCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0g IT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIK KysgICAgcmV0dXJuIC0xCiArfQogKwotK3NldCB0ZXN0ZmlsZSAiZHcyLXN0cnVjdC1tZW1iZXIt ZGF0YS1sb2NhdGlvbiIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGJpbmZpbGUg JHt0ZXN0ZmlsZX0ueAorK3NldCBmIFtvcGVuICJ8Z2V0Y29uZiBQQUdFU0laRSIgInIiXQorK2dl dHMgJGYgcGFnZXNpemUKKytjbG9zZSAkZgogKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2JpbmZpbGV9 IiBvYmplY3Qge25vZGVidWd9XSAhPSAiIiB9IHsKKytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dk Yl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7YmluZmlsZX0K KysKKytzZXQgcGlkX29mX2dkYiBbZXhwX3BpZCAtaSBbYm9hcmRfaW5mbyBob3N0IGZpbGVpZF1d CisrCisraWYgeyBbcnVudG9fbWFpbl0gPCAwIH0geworKyAgICB1bnRlc3RlZCB2bGEtb3ZlcmZs b3cKICsgICAgcmV0dXJuIC0xCiArfQogKwotK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKKysjIEdl dCB0aGUgR0RCIG1lbW9yeSBzaXplIHdoZW4gd2Ugc3RheSBhdCBtYWluLgogKwotK2dkYl90ZXN0 ICJwdHlwZSBzdHJ1Y3Qgc29tZV9zdHJ1Y3QiICJ0eXBlID0gc3RydWN0IHNvbWVfc3RydWN0IHtc W1xyXG4gXHRcXSp2b2lkIGZpZWxkO1xbXHJcbiBcdFxdKn0iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uZDdiOGJlYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9kd2FyZi1zdHJpZGUuZXhwCi1AQCAtMCwwICsxLDQyIEBACi0rIyBDb3B5cmlnaHQgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytwcm9jIG1lbW9yeV92X3BhZ2VzX2dl dCB7fSB7CisrICAgIGdsb2JhbCBwaWRfb2ZfZ2RiIHBhZ2VzaXplCisrICAgIHNldCBmZCBbb3Bl biAiL3Byb2MvJHBpZF9vZl9nZGIvc3RhdG0iXQorKyAgICBnZXRzICRmZCBsaW5lCisrICAgIGNs b3NlICRmZAorKyAgICAjIG51bWJlciBvZiBwYWdlcyBvZiB2aXJ0dWFsIG1lbW9yeQorKyAgICBz Y2FuICRsaW5lICIlZCIgZHJzCisrICAgIHJldHVybiAkZHJzCisrfQogKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl IFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz MzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCisrc2V0IHBhZ2VzX2ZvdW5kIFttZW1v cnlfdl9wYWdlc19nZXRdCiArCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgorKyMgczM5MHggd2l0aCBnbGliYy1k ZWJ1Z2luZm8uczM5MHggaW5zdGFsbGVkIHVzZWQgYXBwcm94LiAxNk1CLgorK3NldCBtYl9yZXNl cnZlIDQwCisrdmVyYm9zZSAtbG9nICJwYWdlc19mb3VuZCA9ICRwYWdlc19mb3VuZCwgbWJfcmVz ZXJ2ZSA9ICRtYl9yZXNlcnZlIgorK3NldCBrYl9mb3VuZCBbZXhwciAkcGFnZXNfZm91bmQgKiAk cGFnZXNpemUgLyAxMDI0XQorK3NldCBrYl9wZXJtaXQgW2V4cHIgJGtiX2ZvdW5kICsgMSAqIDEw MjQgKyAkbWJfcmVzZXJ2ZSAqIDEwMjRdCisrdmVyYm9zZSAtbG9nICJrYl9mb3VuZCA9ICRrYl9m b3VuZCwga2JfcGVybWl0ID0gJGtiX3Blcm1pdCIKICsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IHRoZSBnZGIgdGVzdHN1aXRlLiAgQXJyYXkgZWxlbWVudCBzdHJpZGUgbXVzdCBub3QgYmUKLSsj IHNwZWNpZmllZCBpbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJlciBvZiBi eXRlcyBpbnN0ZWFkLgotKyMgT3JpZ2luYWwgcHJvYmxlbToKLSsjIChnZGIpIHAgYzQwcHQoMSkK LSsjICQxID0gJzAtaGVsbG8nLCAnICcgPHJlcGVhdHMgMzMgdGltZXM+Ci0rIyAoZ2RiKSBwIGM0 MHB0KDIpCi0rIyB3YXJuaW5nOiBGb3J0cmFuIGFycmF5IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5 IHRoZSBlbGVtZW50IHNpemUKKysjIENyZWF0ZSB0aGUgdWxpbWl0IHdyYXBwZXIuCisrc2V0IGYg W29wZW4gJHNoZmlsZSAidyJdCisrcHV0cyAkZiAiIyEgL2Jpbi9zaCIKKytwdXRzICRmICJ1bGlt aXQgLXYgJGtiX3Blcm1pdCIKKytwdXRzICRmICJleGVjICRHREIgXCJcJEBcIiIKKytjbG9zZSAk ZgorK3JlbW90ZV9leGVjIGhvc3QgImNobW9kICt4ICRzaGZpbGUiCisrCisrZ2RiX2V4aXQKKytz ZXQgR0RCb2xkICRHREIKKytzZXQgR0RCICIkc2hmaWxlIgorK2dkYl9zdGFydAorK3NldCBHREIg JEdEQm9sZAorKworK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9s b2FkICR7YmluZmlsZX0KKysKKytzZXQgcGlkX29mX2dkYiBbZXhwX3BpZCAtaSBbYm9hcmRfaW5m byBob3N0IGZpbGVpZF1dCisrCisrIyBDaGVjayB0aGUgc2l6ZSBhZ2FpbiBhZnRlciB0aGUgc2Vj b25kIHJ1bi4KKysjIFdlIG11c3Qgbm90IHN0b3AgaW4gbWFpbiBhcyBpdCB3b3VsZCBjYWNoZSBg YXJyYXknIGFuZCBuZXZlciBjcmFzaCBsYXRlci4KKysKKytnZGJfcnVuX2NtZAorKworK3ZlcmJv c2UgLWxvZyAia2JfZm91bmQgYmVmb3JlIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNf Z2V0XSAqICRwYWdlc2l6ZSAvIDEwMjRdIgogKwotK3NldCB0ZXN0ZmlsZSBkd2FyZi1zdHJpZGUK LStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKKytnZGJfdGVzdCAiIiAiUHJvZ3JhbSByZWNl aXZlZCBzaWduYWwgU0lHQUJSVCwgQWJvcnRlZC4uKiIgIkVudGVyIGFib3J0KCkiCiArCi0raWYg eyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNm aWxlfSB7ZGVidWcgZjkwfV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KKyt2ZXJib3NlIC1sb2cg ImtiX2ZvdW5kIGluIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdl c2l6ZSAvIDEwMjRdIgogKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQor KyMgYGFib3J0JyBjYW4gZ2V0IGV4cHJlc3NlZCBhcyBgKl9fR0lfYWJvcnQnLgorK2dkYl90ZXN0 ICJidCIgImluIFxbXiBcXSphYm9ydCBcXCguKiBpbiBtYWluIFxcKC4qIiAiQmFja3RyYWNlIGFm dGVyIGFib3J0KCkiCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJy ZWFrLWhlcmUiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAiLipi cmVhay1oZXJlLioiCi0rZ2RiX3Rlc3QgInAgYzQwcHQoMSkiICIgPSAnMC1oZWxsby4qIgotK2dk Yl90ZXN0ICJwIGM0MHB0KDIpIiAiID0gJzEtaGVsbG8uKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKKyt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0IGFm dGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAvIDEw MjRdIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3ZsYS5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uZTQ5MmIzYQoraW5kZXggMDAwMDAwMC4uZTFmM2VkMQogLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCi1AQCAtMCwwICsxLDQw IEBACi0rISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsh Ci0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsh IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxh Y2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyEKLSshIEZpbGUg d3JpdHRlbiBieSBBbGFuIE1hdHN1b2thLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuYworQEAgLTAsMCArMSw1NSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCiArCi0rcHJvZ3JhbSByZXBybworKyAgIENvcHlyaWdodCAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgdHlwZSBzbWFsbF9zdHJpZGUK LSsgICAgIGNoYXJhY3Rlcio0MCBsb25nX3N0cmluZwotKyAgICAgaW50ZWdlciAgICAgIHNtYWxs X3BhZAotKyAgZW5kIHR5cGUgc21hbGxfc3RyaWRlCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KICsKLSsgIHR5cGUoc21hbGxfc3RyaWRlKSwgZGltZW5zaW9uICgyMCksIHRhcmdldCA6 OiB1bnBsZWFzYW50Ci0rICBjaGFyYWN0ZXIqNDAsIHBvaW50ZXIsIGRpbWVuc2lvbig6KTo6IGM0 MHB0CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLSsgIGludGVnZXIgaQorKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotKyAgZG8gaSA9IDAsMTkKLSsgICAgIHVucGxl YXNhbnQoaSsxKSVzbWFsbF9wYWQgPSBpKzEKLSsgICAgIHVucGxlYXNhbnQoaSsxKSVsb25nX3N0 cmluZyA9IGNoYXIgKGljaGFyKCcwJykgKyBpKSAvLyAnLWhlbGxvJwotKyAgZW5kIGRvCisrI2lu Y2x1ZGUgPHN0cmluZy5oPgogKwotKyAgYzQwcHQgPT4gdW5wbGVhc2FudCVsb25nX3N0cmluZwor K3ZvaWQKKyttYXJrZXIgKHZvaWQpCisreworK30KICsKLSsgIHByaW50ICosIGM0MHB0ICAhIGJy ZWFrLWhlcmUKKyt2b2lkCisrYmFyIChjaGFyICphLCBjaGFyICpiLCBjaGFyICpjLCBpbnQgc2l6 ZSkKKyt7CisrICBtZW1zZXQgKGEsICcxJywgc2l6ZSk7CisrICBtZW1zZXQgKGIsICcyJywgc2l6 ZSk7CisrICBtZW1zZXQgKGMsICczJywgNDgpOworK30KICsKLStlbmQgcHJvZ3JhbSByZXBybwot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFt ZS1zdHViLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFt ZS1zdHViLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI2MWNlMTcK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1v dGhlci1mcmFtZS1zdHViLmY5MAotQEAgLTAsMCArMSwyNCBAQAotKyEgQ29weXJpZ2h0IDIwMTAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQot KyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291 cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIg dGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgor K3ZvaWQKKytmb28gKGludCBzaXplKQorK3sKKysgIGNoYXIgdGVtcDFbc2l6ZV07CisrICBjaGFy IHRlbXAzWzQ4XTsKICsKLStzdWJyb3V0aW5lIGJhcgotKyAgcmVhbCA6OiBkdW1teQotKyAgZHVt bXkgPSAxCi0rZW5kIHN1YnJvdXRpbmUgYmFyCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAKKysgIHRlbXAxW3NpemUgLSAxXSA9ICdcMCc7 CisrICB7CisrICAgIGNoYXIgdGVtcDJbc2l6ZV07CisrCisrICAgIGJhciAodGVtcDEsIHRlbXAy LCB0ZW1wMywgc2l6ZSk7CisrCisrICAgIG1hcmtlciAoKTsJLyogYnJlYWstaGVyZSAqLworKyAg fQorK30KKysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIGZvbyAoMjYpOworKyAgZm9vICg3 OCk7CisrICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZmE0MWI4MAoraW5kZXggMDAwMDAwMC4uNWRhNzM3OAog LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90 aGVyLWZyYW1lLmV4cAotQEAgLTAsMCArMSwzNyBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS5leHAKK0BAIC0wLDAgKzEsNjIgQEAKKysjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIyAKKysjCiArIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiArIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiArIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCisrIwogKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCi0rCi0rc2V0IHRlc3RmaWxlICJkeW5hbWlj LW90aGVyLWZyYW1lIgotK3NldCBzcmNmaWxlMSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgc3JjZmls ZTIgJHt0ZXN0ZmlsZX0tc3R1Yi5mOTAKLStzZXQgb2JqZmlsZTIgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfS1zdHViLm8KLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlMn0i ICIke29iamZpbGUyfSIgb2JqZWN0IHtmOTB9XSAhPSAiIgotKyAgICAgfHwgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZTF9ICR7b2JqZmlsZTJ9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3Vs ZG4ndCBjb21waWxlICR7c3JjZmlsZTF9IG9yICR7c3JjZmlsZTJ9IgorK3NldCB0ZXN0ZmlsZSB2 bGEKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9 IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogKyAgICBy ZXR1cm4gLTEKICt9CiArCi0rY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFibGV9CisrZ2RiX2V4aXQK KytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJf bG9hZCAke2JpbmZpbGV9CiArCi0raWYgIVtydW50byBiYXJfXSB0aGVuIHsKLSsgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYmFyXyIKLSsgICAgY29udGludWUKKytpZiAhW3J1bnRvX21haW5d IHsKKysgICAgdW50ZXN0ZWQgdmxhCisrICAgIHJldHVybiAtMQogK30KICsKLStnZGJfdGVzdCAi YnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uMmJjNjM3ZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAotQEAgLTAsMCArMSwzNiBAQAotKyEg Q29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMg dGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmls ZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZp ZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+LgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVh ay1oZXJlIl0KICsKLStzdWJyb3V0aW5lIGZvbyAoc3RyaW5nKQotKyAgaW50ZXJmYWNlCi0rICAg IHN1YnJvdXRpbmUgYmFyCi0rICAgIGVuZCBzdWJyb3V0aW5lCi0rICBlbmQgaW50ZXJmYWNlCi0r ICBjaGFyYWN0ZXIgc3RyaW5nKigqKQotKyAgY2FsbCBiYXIgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEgc3RvcC1oZXJlCi0rZW5kIHN1YnJvdXRpbmUgZm9vCi0rcHJvZ3JhbSB0ZXN0 Ci0rICBpbnRlcmZhY2UKLSsgICAgc3Vicm91dGluZSBmb28gKHN0cmluZykKLSsgICAgY2hhcmFj dGVyIHN0cmluZyooKikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsg IGNhbGwgZm9vICgnaGVsbG8nKQotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMu ZXhwCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiCisrCisrZ2RiX3Rl c3QgIndoYXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxcXF0iICJmaXJzdDog d2hhdGlzIHRlbXAxIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxb dmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMiIKKytnZGJfdGVzdCAid2hhdGlzIHRl bXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0OiB3aGF0aXMgdGVtcDMiCisrCisr Z2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBw dHlwZSB0ZW1wMSIKKytnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbMjZc XFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUg PSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInAg dGVtcDEiICIgPSAnMScgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAxIgor K2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDI2IHRpbWVzPiIgImZpcnN0OiBw cmludCB0ZW1wMiIKKytnZGJfdGVzdCAicCB0ZW1wMyIgIiA9ICczJyA8cmVwZWF0cyA0OCB0aW1l cz4iICJmaXJzdDogcHJpbnQgdGVtcDMiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrLWhlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFyIFxc XFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMSIKKytnZGJfdGVzdCAid2hhdGlz IHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgInNlY29uZDogd2hhdGlzIHRl bXAyIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAi c2Vjb25kOiB3aGF0aXMgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9 IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDEiCisrZ2RiX3Rlc3QgInB0eXBl IHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDIiCisr Z2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29uZDog cHR5cGUgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzgg dGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKKytnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcy JyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgorK2dkYl90ZXN0ICJw IHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMi CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0 LlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwogbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU3OWU5NGEKLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKLUBAIC0wLDAgKzEsMTUy IEBACi0rIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2lu ZGV4IDAwMDAwMDAuLmFhYzNiYWEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCitAQCAtMCwwICsxLDI0NiBAQAorKy8qIFRo aXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKKysgICBDb3B5cmlnaHQgMjAx MCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsjIFRoaXMgZmlsZSB3YXMgd3Jp dHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo ZSBnZGIgdGVzdHN1aXRlLiAgSXQgY29udGFpbnMgdGVzdHMgZm9yIGR5bmFtaWNhbGx5Ci0rIyBh bGxvY2F0ZWQgRm9ydHJhbiBhcnJheXMuCi0rIyBJdCBkZXBlbmRzIG9uIHRoZSBHQ0MgZHluYW1p YyBGb3J0cmFuIGFycmF5cyBEV0FSRiBzdXBwb3J0OgotKyMgCWh0dHA6Ly9nY2MuZ251Lm9yZy9i dWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjIyNDQKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgog KwotK3NldCB0ZXN0ZmlsZSAiZHluYW1pYyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAK LStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisrICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBm OTAgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtz cmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQorKy8qIERlYnVnIGluZm9ybWF0aW9uICovCiAr Ci0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrLyogV2Ugd2lsbCBgYnJlYWsgKm1haW4nIGF0 IHRoZSB2ZXJ5IGZpcnN0IGluc3RydWN0aW9uLiAgKi8KKysjZGVmaW5lIG1haW5fbGVuZ3RoIDEK ICsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVu IHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KKysJLnNlY3Rpb24JLmRh dGEKKyt2YXJkYXRhOgorKwkvKiBTZWUgRFdfT1BfbGl0MyArIDEgKDAtYmFzZWQpLiAgKi8KKysJ LnN0cmluZwkJInNlZW5ub3RzZWVuIgogKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2YXJ4LWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWlu aXQiCi0rZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChvYmplY3R8dGhlIGFycmF5 KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5 cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAi cHR5cGUgdmFyeCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICIoQ2Fu bm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChv YmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1LDE3KSB1bmFsbG9j YXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNyk9MSIgIihDYW5ub3QgYWNjZXNzIGl0fFVu YWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMg bm90IGFsbG9jYXRlZFxcLiIgInAgdmFyeCgxLDUsMTcpPTEgdW5hbGxvY2F0ZWQiCi0rZ2RiX3Rl c3QgInB0eXBlIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nl c3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRl ZFxcLiIgInB0eXBlIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKKysJLnNlY3Rpb24JLmRlYnVn X2luZm8KKysuTGN1MV9iZWdpbjoKKysJLjRieXRlCQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkv KiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLworKy5MY3UxX3N0YXJ0OgorKwkuMmJ5dGUJ CTIJCQkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLworKwkuNGJ5dGUJCS5MZGVidWdfYWJicmV2 MAkJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICovCisrCS5ieXRlCQk0CQkJLyogUG9p bnRlciBTaXplIChpbiBieXRlcykgKi8KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 YXJ4LWFsbG9jYXRlZCIKLSsjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAs IDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3Qg InB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3 OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxvY2F0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVy IDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAgbCIgIlxc JFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFyeCBhbGxvY2F0 ZWQiCisrCS8qIENVIGRpZSAqLworKwkudWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19UQUdfY29t cGlsZV91bml0ICovCisrCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVjZXIgKi8K KysJLyogVXNlIEMrKyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFtZSAiIi4g ICovCisrCS5ieXRlCQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KKysJLjRieXRl CQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCisrCS5ieXRlCQltYWluX2xlbmd0aAkJLyogRFdf QVRfaGlnaF9wYyAqLwogKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 YXJ4LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZmlsbGVkIgot K2dkYl90ZXN0ICJwIHZhcngoMiwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA2IgotK2dkYl90ZXN0 ICJwIHZhcngoMSwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA3IgotK2dkYl90ZXN0ICJwIHZhcngo MiwgNiwgMTgpIiAiXFwkXFswLTlcXSogPSA4IgotK2dkYl90ZXN0ICJwIHZhcngoNiwgMTUsIDI4 KSIgIlxcJFxbMC05XF0qID0gOSIKLSsjIFRoZSBsYXR0ZXIgb25lIGlzIGZvciB0aGUgSW50ZWwg Rm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBwb2ludGVyIHR5cGUuCi0rZ2RiX3Rlc3QgInAgdmFy diIgIlxcJFxbMC05XF0qID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+ fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNl IHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIgInAgdmFydiB1bmFzc29jaWF0ZWQiCi0r Z2RiX3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90 IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2Jq ZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIgInB0eXBlIHZhcnYg dW5hc3NvY2lhdGVkIgorKy5MYXJyYXlfdHlwZToKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjog RFdfVEFHX2FycmF5X3R5cGUgKi8KKysJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkv KiBEV19BVF90eXBlICovCiArCi0rc2V0IHRlc3QgIm91dHB1dCB2YXJ4IgotK2dkYl90ZXN0X211 bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJeb3V0cHV0IHZhcnhcclxuXFsoKSAsNjc4 OS5cXSokZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KKysJLnVsZWIx MjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVp bnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkwCQkJLyogRFdf QVRfbG93ZXJfYm91bmQgKi8KKysJLjRieXRlCQkuTGxlbl92YXItLkxjdTFfYmVnaW4JLyogRFdf QVRfdXBwZXJfYm91bmQgKi8KKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGll ICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtYXNzb2Np YXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtYXNzb2NpYXRlZCIKLStn ZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIgInAgdmFyeCgzLCA3 LCAxOSkgd2l0aCB2YXJ2IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSki ICJcXCRcWzAtOVxdKiA9IDYiICJwIHZhcnYoMywgNywgMTkpIGFzc29jaWF0ZWQiCi0rIyBJbnRl bCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0r Z2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJw IGwgaWYgdmFydiBhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IHJl YWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDYsNToxNSwxNzoyOFxcKSIgInB0eXBlIHZhcnggd2l0 aCB2YXJ2IGFzc29jaWF0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVz ZXMgdGhlIHBvaW50ZXIgdHlwZS4KLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoUFRS IFRPIC0+IFxcKCApP3JlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDYsNToxNSwxNzoyOFxcKVxc KT8iICJwdHlwZSB2YXJ2IGFzc29jaWF0ZWQiCisrCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJl ZmVyZW5jaW5nIGFuIG9wdGltaXplZC1vdXQgdmFyaWFibGUuICAqLworKy5MYXJyYXliX3R5cGU6 CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90eXBlICovCisrCS40Ynl0 ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwogKwotK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInZhcnYtZmlsbGVkIgotK2dkYl90ZXN0ICJwIHZhcngoMywgNywgMTkp IiAiXFwkXFswLTlcXSogPSAxMCIgInAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2YXJ2IGZpbGxlZCIK LStnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJwIHZhcnYo MywgNywgMTkpIGZpbGxlZCIKKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJh bmdlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90 eXBlICovCisrCS5ieXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KKysJLjRieXRlCQku TGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCisrCS5ieXRlCQkw CQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwogKwotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWRlYXNzb2NpYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZhcnYtZGVhc3NvY2lhdGVkIgotKyMgVGhlIGxhdHRlciBvbmUgaXMgZm9yIHRo ZSBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIgdHlwZS4KLStnZGJfdGVz dCAicCB2YXJ2IiAiXFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNz b2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3Qp IGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IGRlYXNzb2Np YXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChvYmplY3R8dGhlIGFycmF5 KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNz IHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicHR5 cGUgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwu RkFMU0VcXC4iICJwIGwgaWYgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigx LDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBi ZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZFxcLiIKLStnZGJfdGVz dCAicHR5cGUgdmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2Vz cyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRl ZFxcLiIKKysJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgcmVnaXN0ZXIuICAq LworKy5MYXJyYXlyZWdfdHlwZToKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2Fy cmF5X3R5cGUgKi8KKysJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90 eXBlICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtZGVh bGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWRlYWxsb2NhdGVk IgotK2dkYl90ZXN0ICJwIHZhcngiICJcXCRcWzAtOVxdKiA9IDwob2JqZWN0fHRoZSBhcnJheSkg aXMgbm90IGFsbG9jYXRlZD4iICJwIHZhcnggZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBl IHZhcngiICJ0eXBlID0gPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInB0 eXBlIHZhcnggZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwu RkFMU0VcXC4iICJwIGwgaWYgdmFyeCBkZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEs NSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJl Y2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1 LDE3KSBkZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyeCgxLDUsMTcpIiAiKENhbm5v dCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2Jq ZWN0fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicHR5cGUgdmFyeCgxLDUsMTcpIGRlYWxs b2NhdGVkIgorKwkudWxlYjEyOAk4CQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3 aXRoIGJsb2NrICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRf dHlwZSAqLworKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCisrCS5ieXRlCQky ZiAtIDFmCQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KKysxOgkuYnl0ZQkJMHg1MAkJCS8qIERX X09QX3JlZzAgKi8KKysyOgorKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBkaWUg Ki8KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeS1wYXNzZWQi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LXBhc3NlZCIKLSsjICQxID0gKCgg KCAxLCAxLCAxLCAxLCAxLCAxKSAoIDEsIDEsIDEsIDEsIDEsIDEpIC0tLSAsIDEpICkgKCAoIDEs IDEsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFyeSIgIlxcJFxbMC05XF0qID0gXFwo XFsoKTEsIC5cXSpcXCkiCisrLkx1aW50X3R5cGU6CisrCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6 IERXX1RBR19iYXNlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9uYW1l ICovCisrCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5ieXRlCQk3CQkJLyog RFdfQVRfZW5jb2RpbmcgKi8KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAidmFyeS1maWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LWZpbGxl ZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyeSIgInR5cGUgPSByZWFsKFxcKGtpbmQ9NFxcKXxcXCo0 KSBcXCgxMCwxMFxcKSIKLStnZGJfdGVzdCAicCB2YXJ5KDEsIDEpIiAiXFwkXFswLTlcXSogPSA4 IgotK2dkYl90ZXN0ICJwIHZhcnkoMiwgMikiICJcXCRcWzAtOVxdKiA9IDkiCi0rZ2RiX3Rlc3Qg InAgdmFyeSgxLCAzKSIgIlxcJFxbMC05XF0qID0gMTAiCi0rIyAkMSA9ICgoICggMywgMywgMywg MywgMywgMykgKCAzLCAzLCAzLCAzLCAzLCAzKSAtLS0gLCAzKSApICggKCAzLCAzLCAuLi4pIC4u LikgLi4uKQotK2dkYl90ZXN0ICJwIHZhcnciICJcXCRcWzAtOVxdKiA9IFxcKFxbKCkzLCAuXF0q XFwpIgorKy5MY2hhcl90eXBlOgorKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBEV19UQUdfYmFz ZV90eXBlICovCisrCS40Ynl0ZQkJLkxjaGFyX3N0cgkJLyogRFdfQVRfbmFtZSAqLworKwkuYnl0 ZQkJMQkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkuYnl0ZQkJNgkJCS8qIERXX0FUX2VuY29k aW5nICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnctYWxt b3N0ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3RmaWxs ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwq NCkgXFwoNSw0LDNcXCkiCi0rZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05XF0q ID0gMSIKLSsjICQxID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUsIDUp IC0tLSAsIDUpICkgKCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFydyIg IlxcJFxbMC05XF0qID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwpIiAi cCB2YXJ3IGZpbGxlZCIKLSsjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4g Y29tcGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKLSsjIG91dGVyIGZ1bmN0aW9u IG9ubHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgotKyMgV2UgbmVlZCBib3Ro IHZhcmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGls bCBiZQotKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcu Ci0rZ2RiX3Rlc3QgImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28gXFwo eCwgelxcKDI6NiwgNDo3LCA2OjhcXClcXCkpIgotK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAiXFwk XFswLTlcXSogPSAzIgotK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2Igot K2dkYl90ZXN0ICJwIHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgotK2dkYl90ZXN0ICJwIHoo NCw0LDYpIiAiXFwkXFswLTlcXSogPSAxIgorKy5MbGVuX3ZhcjoKKysJLnVsZWIxMjgJNQkJCS8q IEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgKi8KKysJLmJ5dGUJCTEJCQkvKiBE V19BVF9hcnRpZmljaWFsICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyog RFdfQVRfdHlwZSAqLworKwkuNGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0CS8qIERXX0FU X2xvY2F0aW9uICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZh cnotYWxtb3N0ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyei1hbG1v c3RmaWxsZWQiCi0rIyBHQ0MgdXNlcyB0aGUgcG9pbnRlciB0eXBlIGhlcmUsIEludGVsIEZvcnRy YW4gQ29tcGlsZXIgMTAuMS4wMDggZG9lcyBub3QuCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnoiICJ0 eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXChcXCpcXClc XCk/IgotKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBoYXMgYSBidWcgaGVyZSAt ICgyOjExLDc6NykKLSsjIGFzIGl0IHByb2R1Y2VzIERXX0FUX2xvd2VyX2JvdW5kID09IERXX0FU X3VwcGVyX2JvdW5kID09IDcuCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnQiICJ0eXBlID0gKFBUUiBU TyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCgyOjExLDc6XFwqXFwpXFwpPyIK LStnZGJfdGVzdCAicCB2YXJ6IiAiXFwkXFswLTlcXSogPSBcXChcXCkiCi0rZ2RiX3Rlc3QgInAg dmFydCIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgotK2dkYl90ZXN0ICJwIHZhcnooMykiICJcXCRc WzAtOVxdKiA9IDQiCi0rIyBtYXBzIHRvIGZvbzo6dmFyeSgxLDEpCi0rZ2RiX3Rlc3QgInAgdmFy dCgyLDcpIiAiXFwkXFswLTlcXSogPSA4IgotKyMgbWFwcyB0byBmb286OnZhcnkoMiwyKQotK2dk Yl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0gOSIKLSsjIG1hcHMgdG8gZm9vOjp2 YXJ5KDEsMykKLStnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJcXCRcWzAtOVxdKiA9IDEwIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uMGY0MzU2NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLmY5MAotQEAgLTAsMCArMSw5OCBAQAotKyEgQ29weXJpZ2h0IDIw MDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsh IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4g c291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBH REIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ LgorKwkvKiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlIGZvciBiX3N0cmluZy4gICovCisrLkxsZW5i X3ZhcjoKKysJLnVsZWIxMjgJNwkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNp YWwgbm8gRFdfQVRfbG9jYXRpb24gKi8KKysJLmJ5dGUJCTEJCQkvKiBEV19BVF9hcnRpZmljaWFs ICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwor KworKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgRFdfRk9STV9zdHJp bmcgKi8KKysJLnN0cmluZwkJImFfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJ CS5MYXJyYXlfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkyZiAt IDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KKysxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRk ciAqLworKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLworKzI6CisrCisrCS8qIERX X0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIGFuIG9wdGltaXplZC1vdXQgdmFyaWFibGUu ICAqLworKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgRFdfRk9STV9z dHJpbmcgKi8KKysJLnN0cmluZwkJImJfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5 dGUJCS5MYXJyYXliX3R5cGUtLkxjdTFfYmVnaW4gLyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJ MmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09Q X2FkZHIgKi8KKysJLjRieXRlCQl2YXJkYXRhCQkJLyogICA8YWRkcj4gKi8KKysyOgogKwotK3N1 YnJvdXRpbmUgYmF6Ci0rICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZhcnggKDosIDos IDopCi0rICByZWFsLCBwb2ludGVyIDo6IHZhcnYgKDosIDosIDopCi0rICByZWFsLCB0YXJnZXQg OjogdmFydSAoMSwgMiwgMykKLSsgIGxvZ2ljYWwgOjogbAotKyAgYWxsb2NhdGUgKHZhcnggKDE6 NiwgNToxNSwgMTc6MjgpKSAgICAgICAgICAgICEgdmFyeC1pbml0Ci0rICBsID0gYWxsb2NhdGVk ICh2YXJ4KQotKyAgdmFyeCg6LCA6LCA6KSA9IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICEgdmFyeC1hbGxvY2F0ZWQKLSsgIHZhcngoMSwgNSwgMTcpID0gNwotKyAgdmFyeCgyLCA2LCAx OCkgPSA4Ci0rICB2YXJ4KDYsIDE1LCAyOCkgPSA5Ci0rICB2YXJ2ID0+IHZhcnggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWZpbGxlZAotKyAgbCA9IGFzc29jaWF0ZWQg KHZhcnYpCi0rICB2YXJ2KDMsIDcsIDE5KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAg ISB2YXJ2LWFzc29jaWF0ZWQKLSsgIHZhcnYgPT4gbnVsbCAoKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhIHZhcnYtZmlsbGVkCi0rICBsID0gYXNzb2NpYXRlZCAodmFydikKLSsgIGRl YWxsb2NhdGUgKHZhcngpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZGVhc3Nv Y2lhdGVkCi0rICBsID0gYWxsb2NhdGVkICh2YXJ4KQotKyAgdmFydSg6LCA6LCA6KSA9IDEwICAg ICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1kZWFsbG9jYXRlZAotKyAgYWxsb2NhdGUg KHZhcnYgKDE6NiwgNToxNSwgMTc6MjgpKQotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICB2 YXJ2KDosIDosIDopID0gNgotKyAgdmFydigxLCA1LCAxNykgPSA3Ci0rICB2YXJ2KDIsIDYsIDE4 KSA9IDgKLSsgIHZhcnYoNiwgMTUsIDI4KSA9IDkKLSsgIGRlYWxsb2NhdGUgKHZhcnYpCi0rICBs ID0gYXNzb2NpYXRlZCAodmFydikKLSsgIHZhcnYgPT4gdmFydQotKyAgdmFydigxLCAxLCAxKSA9 IDYKLSsgIHZhcnYoMSwgMiwgMykgPSA3Ci0rICBsID0gYXNzb2NpYXRlZCAodmFydikKLStlbmQg c3Vicm91dGluZSBiYXoKLStzdWJyb3V0aW5lIGZvbyAodmFyeSwgdmFydykKLSsgIHJlYWwgOjog dmFyeSAoOiwgOikKLSsgIHJlYWwgOjogdmFydyAoOiwgOiwgOikKLSsgIHZhcnkoOiwgOikgPSA0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnktcGFzc2VkCi0rICB2YXJ5KDEs IDEpID0gOAotKyAgdmFyeSgyLCAyKSA9IDkKLSsgIHZhcnkoMSwgMykgPSAxMAotKyAgdmFydyg6 LCA6LCA6KSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeS1maWxsZWQKLSsg IHZhcncoMSwgMSwgMSkgPSA2Ci0rICB2YXJ3KDIsIDIsIDIpID0gNyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJ3LWFsbW9zdGZpbGxlZAotK2VuZCBzdWJyb3V0aW5lIGZvbwotK3N1 YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQotKyAgcmVhbCA6OiB2YXJ6ICgqKQotKyAgcmVhbCA6 OiB2YXJ0ICgyOjExLCA3OiopCi0rICB2YXJ6KDE6MykgPSA0Ci0rICB2YXJ6KDIpID0gNSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ6LWFsbW9zdGZpbGxlZAotKyAgdmFy dCgyLDcpID0gdmFydCgyLDcpCi0rZW5kIHN1YnJvdXRpbmUgYmFyCi0rcHJvZ3JhbSB0ZXN0Ci0r ICBpbnRlcmZhY2UKLSsgICAgc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncpCi0rICAgIHJlYWwg OjogdmFyeSAoOiwgOikKLSsgICAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6KQotKyAgICBlbmQgc3Vi cm91dGluZQotKyAgZW5kIGludGVyZmFjZQotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUg YmFyICh2YXJ6LCB2YXJ0KQotKyAgICByZWFsIDo6IHZhcnogKCopCi0rICAgIHJlYWwgOjogdmFy dCAoMjoxMSwgNzoqKQotKyAgICBlbmQgc3Vicm91dGluZQotKyAgZW5kIGludGVyZmFjZQotKyAg cmVhbCA6OiB4ICgxMCwgMTApLCB5ICg1KSwgeig4LCA4LCA4KQotKyAgeCg6LDopID0gMQotKyAg eSg6KSA9IDIKLSsgIHooOiw6LDopID0gMwotKyAgY2FsbCBiYXoKLSsgIGNhbGwgZm9vICh4LCB6 KDI6NiwgNDo3LCA2OjgpKQotKyAgY2FsbCBiYXIgKHksIHgpCi0rICBpZiAoeCAoMSwgMSkgLm5l LiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0 Ci0rICBpZiAoeCAoMSwgMykgLm5lLiAxMCkgY2FsbCBhYm9ydAotKyAgaWYgKHogKDIsIDQsIDYp IC5uZS4gNiAub3IuIHogKDMsIDUsIDcpIC5uZS4gNyAub3IuIHogKDIsIDQsIDcpIC5uZS4gNSkg Y2FsbCBhYm9ydAotKyAgaWYgKGFueSAoeSAubmUuICgvNCwgNSwgNCwgMiwgMi8pKSkgY2FsbCBh Ym9ydAotKyAgY2FsbCBmb28gKHRyYW5zcG9zZSAoeCksIHopCi0rICBpZiAoeCAoMSwgMSkgLm5l LiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0 Ci0rICBpZiAoeCAoMywgMSkgLm5lLiAxMCkgY2FsbCBhYm9ydAotK2VuZAotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjM5ZGUyYzQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3RyaW5nLmV4cAotQEAgLTAsMCArMSw1OSBAQAotKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5j aW5nIHJlZ2lzdGVyLiAgKi8KKysJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3Zhcmlh YmxlIERXX0ZPUk1fc3RyaW5nICovCisrCS5zdHJpbmcJCSJyZWdfc3RyaW5nIgkJLyogRFdfQVRf bmFtZSAqLworKwkuNGJ5dGUJCS5MYXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90 eXBlICovCisrCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KKysxOgkuYnl0 ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLworKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRy PiAqLworKzI6CiArCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07 IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICAKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KKysuTGN1MV9lbmQ6 CiArCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+LgorKwkuc2VjdGlvbgkuZGVidWdfbG9jCisrLkxsb2NsaXN0Ogor Ky5MbGVuX2xvY2xpc3Q6CisrCS40Ynl0ZQkwCQkJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJl c3MKKysJLjRieXRlCW1haW5fbGVuZ3RoCQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MKKysJ LnZhbHVlCTJmLTFmCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCisrMToJLmJ5dGUJMHgzMwkj IERXX09QX2xpdDMKKysJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCisrMjoKKysJLnF1 YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QyKQorKwkucXVh ZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1QyKQogKwotKyMgVGhp cyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBjb250YWlucyB0ZXN0cyBm b3IgRm9ydHJhbgotKyMgc3RyaW5ncyB3aXRoIGR5bmFtaWMgbGVuZ3RoLgorKwkuc2VjdGlvbiAu ZGVidWdfYWJicmV2CisrLkxkZWJ1Z19hYmJyZXYwOgorKwkudWxlYjEyOAkxCQkJLyogQWJicmV2 IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KKysJ LmJ5dGUJCTB4MQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDI1CQkJLyogRFdf QVRfcHJvZHVjZXIgKi8KKysJLnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCisrCS51 bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBE V19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJ LnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBE V19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJ LmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KICsKLStzZXQgdGVzdGZpbGUgInN0cmluZyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisrCS51 bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEJCQkvKiBUQUc6IERX X1RBR19hcnJheV90eXBlICovCisrCS5ieXRlCQkweDEJCQkvKiBEV19jaGlsZHJlbl95ZXMgKi8K KysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8q IERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcg ZjkwIHF1aWV0fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7 c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJldiBj b2RlICovCisrCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2VfdHlwZSAqLworKwku Ynl0ZQkJMHgwCQkJLyogbm8gY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FU X3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEy OAkweDIyCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdf Rk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDJmCQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8K KysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Z2RiX2xvYWQgJHtiaW5maWxlfQorKwkudWxlYjEyOAk0CQkJLyogQWJicmV2IGNvZGUgKi8KKysJ LnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8q IG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVs ZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0FU X2J5dGVfc2l6ZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51 bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKwkudWxlYjEyOAkweGIJCQkvKiBE V19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCiArCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4gewot KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAgY29u dGludWUKLSt9CisrCS51bGViMTI4CTUJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkw eDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCisrCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJl biAqLworKwkudWxlYjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLworKwkudWxlYjEy OAkweDBjCQkJLyogRFdfRk9STV9mbGFnICovCisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90 eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjgJ MHgwMgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrCS51bGViMTI4CTB4MDYJCQkvKiBEV19GT1JN X2RhdGE0ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCiArCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInZhci1pbml0Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWluaXQiCi0r Z2RiX3Rlc3QgInB0eXBlIGMiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9MVxcKXxcXCoxKSIK LStnZGJfdGVzdCAicHR5cGUgZCIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD04XFwpfFxcKjgp IgotK2dkYl90ZXN0ICJwdHlwZSBlIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwq NCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGYiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxc XCo0KSBcXCg3LDg6MTBcXCkiCi0rZ2RiX3Rlc3QgInB0eXBlICplIiAiQXR0ZW1wdCB0byB0YWtl IGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIgotK2dkYl90ZXN0ICJwdHlwZSAqZiIg InR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIFxcKDdcXCkiCi0rZ2RiX3Rlc3Qg InAgYyIgIlxcJFxbMC05XF0qID0gJ2MnIgotK2dkYl90ZXN0ICJwIGQiICJcXCRcWzAtOVxdKiA9 ICdkICAgICAgICciCi0rZ2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2cgICAnIgotK2dk Yl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAn LCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAnLCAn aCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAg ICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKSIKLStnZGJf dGVzdCAicCAqZSIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZh bHVlLiIKLStnZGJfdGVzdCAicCAqZiIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5v bi1wb2ludGVyIHZhbHVlLiIKKysJLnVsZWIxMjgJNgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51 bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFyaWFibGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5v X2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIx MjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FU X3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEy OAkweDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLworKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JN X2Jsb2NrMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwogKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2YXItZmluaXNoIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWZpbmlz aCIKLStnZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZSAgICciICJwIGUgcmUtc2V0Igot K2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywgJ2Yg ICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2YgICAn LCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAnLCAn ZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIgInAg KmYgcmUtc2V0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5n LmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIyNmRjNWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotQEAgLTAsMCArMSwzNyBAQAotKyEg Q29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMg dGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmls ZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZp ZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+LgorKwkudWxlYjEyOAk3CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIx MjgJMHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLworKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hp bGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzNAkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KKysJLnVs ZWIxMjgJMHgwYwkJCS8qIERXX0ZPUk1fZmxhZyAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdf QVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov CiArCi0rc3Vicm91dGluZSBmb28gKGUsIGYpCi0rICBjaGFyYWN0ZXIgKGxlbj0xKSA6OiBjCi0r ICBjaGFyYWN0ZXIgKGxlbj04KSA6OiBkCi0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBlCi0rICBj aGFyYWN0ZXIgKGxlbj0qKSA6OiBmICgxOjcsIDg6MTApCi0rICBjID0gJ2MnCi0rICBkID0gJ2Qn Ci0rICBlID0gJ2UnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXIt aW5pdAotKyAgZiA9ICdmJwotKyAgZigxLDkpID0gJ2YyJwotKyAgYyA9ICdjJyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyLWZpbmlzaAotK2VuZCBzdWJyb3V0aW5l IGZvbwotKyAgY2hhcmFjdGVyIChsZW49NCkgOjogZywgaCAoMTo3LCA4OjEwKQotKyAgZyA9ICdn JwotKyAgaCA9ICdoJwotKyAgY2FsbCBmb28gKGcsIGgpCi0rZW5kCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YnJhbmdlLmV4cAorKwkudWxlYjEyOAk4CQkJLyogQWJicmV2IGNvZGUgKi8KKysJ LnVsZWIxMjgJMHgyMQkJCS8qIERXX1RBR19zdWJyYW5nZV90eXBlIHdpdGggYmxvY2sgKi8KKysJ LmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19B VF90eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIx MjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCisrCS51bGViMTI4CTB4YgkJCS8qIERX X0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICov CisrCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCisrCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisrCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisrLyogU3RyaW5nIHRhYmxlICovCisrCS5z ZWN0aW9uIC5kZWJ1Z19zdHIKKysuTHByb2R1Y2VyOgorKwkuc3RyaW5nCQkiR05VIEMgMy4zLjMi CisrLkxjaGFyX3N0cjoKKysJLnN0cmluZwkJImNoYXIiCisrLkx1aW50X3N0cjoKKysJLnN0cmlu ZwkJInVuc2lnbmVkIGludCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLWJvdW5kLWxvY2xpc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3Vu ZC1sb2NsaXN0LmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmM4MTll MjMKK2luZGV4IDAwMDAwMDAuLjgxNWVkOTMKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwCi1AQCAtMCwwICsxLDYwIEBACi0rIyBDb3B5 cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5leHAKK0BAIC0wLDAgKzEsNTQgQEAK KysjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xMzY4NiwyMDQgKzcwMzYsMTg3IEBAIGlu ZGV4IDAwMDAwMDAuLmM4MTllMjMKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStp ZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEgfQorKyMgVGVzdCBwcmludGlu ZyB2YXJpYWJsZSB3aXRoIGR5bmFtaWMgYm91bmRzIHdoaWNoIHJlZmVyZW5jZSBhIGRpZmZlcmVu dAorKyMgKGFydGlmaWNpYWwgaW4gdGhlIEdDQyBjYXNlKSB2YXJpYWJsZSBjb250YWluaW5nIGxv Y2xpc3QgYXMgaXRzIGxvY2F0aW9uLgorKyMgVGhpcyB0ZXN0Y2FzZSB1c2VzIHZhbHVlIChub3Qg YWRkcmVzcykgb2YgdGhlIHJlZmVyZW5jZWQgdmFyaWFibGU6CisrIyBodHRwOi8vZ2NjLmdudS5v cmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTQzNzYyCiArCi0rc2V0IHRlc3RmaWxlICJzdWJy YW5nZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90 ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmOTB9 XSB9IHsKLSsgICAgcmV0dXJuIC0xCisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRh cmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgorKyMgRm9yIG5vdyBwaWNr IGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCisraWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4 Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSot ZWxmKl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCisrICAgICYmICFbaXN0YXJn ZXQgYXJtLSotZWFiaSpdCisrICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewor KyAgICByZXR1cm4gMAogK30KICsKLStpZiAhW3J1bnRvIE1BSU5fX10gewotKyAgICBwZXJyb3Ig IkNvdWxkbid0IHJ1biB0byBNQUlOX18iCi0rICAgIGNvbnRpbnVlCisrc2V0IHRlc3RmaWxlIGR3 Mi1ib3VuZC1sb2NsaXN0CisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5l eHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uUyBtYWluLmNdIHt9XSB9IHsKKysgICAg cmV0dXJuIC0xCiArfQogKwotKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciB2ZXJzaW9uIGJl aW5nIHVzZWQsIHRoZSBuYW1lIG9mIHRoZSA0LWJ5dGUgaW50ZWdlcgotKyMgYW5kIHJlYWwgdHlw ZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHkuICBGb3IgaW5zdGFuY2UsIGdmb3J0cmFuLTQu MSB1c2VzCi0rIyAiaW50NCIgd2hlcmVhcyBnZm9ydHJhbi00LjMgdXNlcyAiaW50KGtpbmQ9NCki LgotK3NldCBpbnQ0ICIoaW50NHxpbnRlZ2VyXFwoa2luZD00XFwpKSIKLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstc3RhdGljIl0KLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAiYnJlYWstc3RhdGljIiAiLipicmVhay1zdGF0aWMuKiIKLSsKLStmb3Jl YWNoIHZhciB7YSBhbGxvYyBwdHJ9IHsKLSsgICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBzZXQg b2xkX3ByZWZpeCAkcGZfcHJlZml4Ci0rICAgIGxhcHBlbmQgcGZfcHJlZml4ICIkdmFyOiIKKysj IFZlcmlmeSBpdCBiZWhhdmVzIGF0IGxlYXN0IGFzIGFuIHVuYm91bmQgYXJyYXkgd2l0aG91dCBp bmZlcmlvci4KICsKLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoMiwgMjozKSIgeyA9IFwoMjIsIDMy XCl9Ci0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDI6MywgMykiIHsgPSBcKDMyLCAzM1wpfQotKyAg ICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsgPSBcKDIxLCAzMVwpfQotKyAgICBnZGJfdGVz dCAicCAkdmFyICgyLCA6MikiIHsgPSBcKDEyLCAyMlwpfQotKyAgICBnZGJfdGVzdCAicCAkdmFy ICgzLCAyOjIpIiB7ID0gXCgyM1wpfQotKyAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoMywgMjoy KSIgIiA9ICRpbnQ0IFxcKDI6MlxcKSIKLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoNCwgOikiIHsg PSBcKDE0LCAyNCwgMzRcKX0KLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwgOikiIHsgPSBcKFwo ICoxMSwgMTIsIDEzLCAxNFwpIFwoICoyMSwgMjIsIDIzLCAyNFwpIFwoICozMSwgMzIsIDMzLCAz NFwpICpcKX0KLSsgICAgZ2RiX3Rlc3QgInB0eXBlICR2YXIgKDosIDopIiAiID0gJGludDQgXFwo NCwzXFwpIgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6KSIgIldyb25nIG51bWJlciBvZiBzdWJz Y3JpcHRzIgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6LCA6KSIgIldyb25nIG51bWJlciBv ZiBzdWJzY3JpcHRzIgorK2dkYl90ZXN0ICJwIGFfc3RyaW5nIiB7ID0gMHhbMC05YS1mXSsgInNl ZW5ub3RzZWVuIn0KKytnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcW1xd fQogKwotKyAgICBzZXQgcGZfcHJlZml4ICRvbGRfcHJlZml4CisrIyBOb3QgcnVudG9fbWFpbiBh cyBkdzItYm91bmQtbG9jbGlzdC5TIGhhbmRsZXMgb25seSB0aGUgZmlyc3QgYnl0ZSBvZiBtYWlu LgorK2lmICFbcnVudG8gIiptYWluIl0geworKyAgICByZXR1cm4gLTEKICt9CiArCi0rZ2RiX3Rl c3Rfbm9fb3V0cHV0IHtzZXQgJGE9YX0KLStkZWxldGVfYnJlYWtwb2ludHMKLStnZGJfdW5sb2Fk Ci0rZ2RiX3Rlc3Qge3AgJGEgKDMsIDI6Mil9IHsgPSBcKDIzXCl9Ci1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YnJhbmdlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjQ3NDdlYTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3VicmFuZ2UuZjkwCi1AQCAtMCwwICsxLDI4IEBACi0rISBDb3B5cmlnaHQgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEgCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrZ2RiX3Rlc3QgInAgYV9zdHJpbmciIHsgPSAic2VlbiJ9CisrZ2RiX3Rlc3QgInB0eXBl IGFfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFs0XF19CiArCi0rcHJvZ3JhbSB0ZXN0Ci0rICBpbnRl Z2VyLCB0YXJnZXQgOjogYSAoNCwgMykKLSsgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGFsbG9j ICg6LCA6KQotKyAgaW50ZWdlciwgcG9pbnRlciA6OiBwdHIgKDosIDopCi0rICBkbyAxIGkgPSAx LCA0Ci0rICBkbyAxIGogPSAxLCAzCi0rICAgIGEgKGksIGopID0gaiAqIDEwICsgaQotKzEgY29u dGludWUKLSsgIGFsbG9jYXRlIChhbGxvYyAoNCwgMykpCi0rICBhbGxvYyA9IGEKLSsgIHB0ciA9 PiBhCi0rICB3cml0ZSAoKiwqKSBhICAgICAgICAgICAgICAgICAhIGJyZWFrLXN0YXRpYwotK2Vu ZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi1pbmRleCAyMTc5OGJjLi4xMTFmNjkyIDEw MDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotQEAgLTg4LDYgKzg4LDEwIEBAIHByb2Mg ZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHR0 eWFyZyBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJzdGVwIgotIAkgICAgfQotKwkg ICAgLXJlICIuKnB5dGhvbl9zY3JpcHQgPSAwLiokZ2RiX3Byb21wdCAkIiB7Ci0rCQlzZXQgZGVz Y3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgotKwkJc2V0 IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBt YWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9wcm9tcHQgJCIgewotIAkJc2V0IGRlc2Ny aXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhp bmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pMi12YXItc3RhbGUtdHlwZS5jCisrZ2RiX3Rlc3QgInAgYl9zdHJpbmciIHsgPSAoMHhbMC05 YS1mXSsgKT8ic2Vlbm5vdHNlZW4ifQorK2dkYl90ZXN0ICJwdHlwZSBiX3N0cmluZyIge3R5cGUg PSBjaGFyIFxbXF19CisrCisrIyBUaGUgcmVnaXN0ZXIgY29udGFpbnMgdW5wcmVkaWN0YWJsZSB2 YWx1ZSAtIHRoZSBhcnJheSBzaXplLgorK2dkYl90ZXN0ICJwdHlwZSByZWdfc3RyaW5nIiB7dHlw ZSA9IGNoYXIgXFstP1swLTldK1xdfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItc3RyaXBwZWQuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBw ZWQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmViY2VkM2MKK2luZGV4 IDAwMDAwMDAuLjFmMDJkOTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pMi12YXItc3RhbGUtdHlwZS5jCi1AQCAtMCwwICsxLDI2IEBACi0rLyogQ29weXJpZ2h0 IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMKK0BAIC0wLDAgKzEsNDIgQEAKKysvKiBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwotKyAgIFRoaXMgZmls ZSBpcyBwYXJ0IG9mIEdEQi4KKysgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgogKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCiArICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiArICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKKysgCiArICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwg d3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKysgICBVU0EuICAq LwogKwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysKKysvKiBUaGUgZnVu Y3Rpb24gYGZ1bmMxJyB0cmFjZWQgaW50byBtdXN0IGhhdmUgZGVidWcgaW5mbyBvbiBvZmZzZXQg PiAwOworKyAgIChEV19VTlNORCAoYXR0cikpLiAgVGhpcyBpcyB0aGUgcmVhc29uIG9mIGBmdW5j MCcgZXhpc3RlbmNlLiAgKi8KKysKKyt2b2lkCisrZnVuYzAoaW50IGEsIGludCBiKQogK3sKLSsg IGNoYXIgdmxhW2FyZ2NdOworK30KICsKLSsgIHZsYVswXSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8K KysvKiBgZnVuYzEnIGJlaW5nIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBzb21lIGFyZ3VtZW50cyB0 byBkdW1wLiAgKi8KICsKKyt2b2lkCisrZnVuYzEoaW50IGEsIGludCBiKQorK3sKKysgIGZ1bmMw IChhLGIpOworK30KKysKKytpbnQKKyttYWluKHZvaWQpCisreworKyAgZnVuYzEgKDEsIDIpOwog KyAgcmV0dXJuIDA7CiArfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12 YXItc3RhbGUtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5 cGUuZXhwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBl ZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cAogbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc0YTEwNGUKK2luZGV4IDAwMDAwMDAuLjFj NmU4NGEKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXIt c3RhbGUtdHlwZS5leHAKLUBAIC0wLDAgKzEsNTcgQEAKLSsjIENvcHlyaWdodCAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItc3RyaXBwZWQuZXhwCitAQCAtMCwwICsxLDc5IEBACisrIyBDb3B5cmlnaHQgMjAw NiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKICsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiArIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMKKysjIAogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQogKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCisr IyAKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLgogKwotK2xvYWRfbGliIG1pLXN1cHBvcnQuZXhwCi0rc2V0IE1JRkxBR1MgIi1pPW1pMiIK KysjIE1pbmltYWwgRFdBUkYtMiB1bml0IHRlc3QKICsKLStnZGJfZXhpdAotK2lmIFttaV9nZGJf c3RhcnRdIHsKLSsgICAgY29udGludWUKKysjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24g dGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIuCisrIyBGb3Igbm93IHBpY2sgYSBzYW1wbGlu ZyBvZiBsaWtlbHkgdGFyZ2V0cy4KKytpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQorKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1nbnUqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQorKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KKysgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1l YWJpKl0KKysgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7CisrICAgIHJldHVy biAwICAKICt9CiArCi0rc2V0IHRlc3RmaWxlICJtaTItdmFyLXN0YWxlLXR5cGUiCisrc2V0IHRl c3RmaWxlICJkdzItc3RyaXBwZWQiCiArc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiB7W2J1aWxkX2V4ZWN1 dGFibGUgJHt0ZXN0ZmlsZX0uZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZV0gPT0gLTF9IHsKLSsgICAg cmV0dXJuIC0xCi0rfQorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0ueAogKwotK21pX2RlbGV0ZV9icmVha3BvaW50cwotK21pX2dkYl9yZWluaXRpYWxpemVfZGly ICRzcmNkaXIvJHN1YmRpcgotK21pX2dkYl9sb2FkICR7YmluZmlsZX0KKytyZW1vdGVfZXhlYyBi dWlsZCAicm0gLWYgJHtiaW5maWxlfSIKICsKLSttaV9nZGJfdGVzdCB7LWludGVycHJldGVyLWV4 ZWMgY29uc29sZSAibWFpbnRlbmFuY2Ugc2V0IGludGVybmFsLWVycm9yIHF1aXQgeWVzIn0gXAot KyAge1xeZG9uZX0gXAotKyAgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBxdWl0IHll cyIKKysjIGdldCB0aGUgdmFsdWUgb2YgZ2NjX2NvbXBpbGVkCisraWYgW2dldF9jb21waWxlcl9p bmZvICR7YmluZmlsZX1dIHsKKysgICAgcmV0dXJuIC0xCisrfQogKwotK21pX2dkYl90ZXN0IHst aW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlICJtYWludGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJyb3Ig Y29yZWZpbGUgeWVzIn0gXAotKyAge1xeZG9uZX0gXAotKyAgIm1haW50ZW5hbmNlIHNldCBpbnRl cm5hbC1lcnJvciBjb3JlZmlsZSB5ZXMiCisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9u IGdjYyBhcyB3ZSB1c2UgYWRkaXRpb25hbF9mbGFncz1GSVhNRQorK2lmIHskZ2NjX2NvbXBpbGVk ID09IDB9IHsKKysgICAgcmV0dXJuIDAKKyt9CiArCi0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9u dW1iZXIgImJyZWFrLWhlcmUiXQotK3NldCBmdW5jICJtYWluIgorK2lmICB7IFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJs ZSB7ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZ2dkYjN9XSAhPSAiIiB9IHsKKysgICAgcmV0dXJu IC0xCisrfQogKwotK21pX2dkYl90ZXN0ICItYnJlYWstaW5zZXJ0IC10ICRzcmNmaWxlOiRsaW5l IiBcCi0rICAiXFxeZG9uZSxia3B0PVx7bnVtYmVyPVwiXFswLTlcXStcIix0eXBlPVwiYnJlYWtw b2ludFwiLGRpc3A9XCJkZWxcIixlbmFibGVkPVwieVwiLGFkZHI9XCIkaGV4XCIsZnVuYz1cIiRm dW5jXChcXFwoLipcXFwpXCk/XCIsZmlsZT1cIi4qXCIsbGluZT1cIiRsaW5lXCIsdGltZXM9XCIw XCIsb3JpZ2luYWwtbG9jYXRpb249XCIuKlwiXH0iIFwKLSsgICJicmVha3BvaW50IGF0ICRmdW5j IgorK3JlbW90ZV9leGVjIGJ1aWxkICJvYmpjb3B5IC1SIC5kZWJ1Z19sb2MgJHtiaW5maWxlfSIK KytzZXQgc3RyaXBfb3V0cHV0IFtyZW1vdGVfZXhlYyBidWlsZCAib2JqZHVtcCAtaCAke2JpbmZp bGV9Il0KICsKLStpZiB7IFttaV9ydW5fY21kXSA8IDAgfSB7Ci0rICAgIHJldHVybiAtMQorK3Nl dCB0ZXN0ICJzdHJpcHBpbmcgdGVzdCBmaWxlIHByZXNlcnZhdGlvbiIKKytpZiBbIHJlZ2V4cCAi LmRlYnVnX2luZm8gIiAkc3RyaXBfb3V0cHV0XSAgeworKyAgICBwYXNzICIkdGVzdCAoLmRlYnVn X2luZm8gcHJlc2VydmVkKSIKKyt9IGVsc2UgeworKyAgICBmYWlsICIkdGVzdCAoLmRlYnVnX2lu Zm8gZ290IGFsc28gc3RyaXBwZWQpIgogK30KLSttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1o aXQiICRmdW5jICIuKiIgIi4qIiAiXFswLTlcXSsiIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAic3Rv cCBhZnRlciBpbml0aWFsaXppbmcgdmxhIgogKwotK21pX2NyZWF0ZV92YXJvYmogInZsYSIgInZs YSIgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGEiCisrc2V0IHRlc3QgInN0cmlwcGluZyB0ZXN0 IGZpbGUgZnVuY3Rpb25hbGl0eSIKKytpZiBbIHJlZ2V4cCAiLmRlYnVnX2xvYyAiICRzdHJpcF9v dXRwdXRdICB7CisrICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfbG9jIHN0aWxsIHByZXNlbnQpIgor K30gZWxzZSB7CisrICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfbG9jIHN0cmlwcGVkKSIKKyt9CiAr Ci0rbWlfZ2RiX3Rlc3QgIi12YXItdXBkYXRlICoiICJcXF5kb25lLGNoYW5nZWxpc3Q9LioiICIt dmFyLXVwZGF0ZSAqIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNo cG9pbnQtbXVsdGkuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQtbXVsdGku YworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworKyMgRm9yIEMgcHJvZ3JhbXMsICJzdGFy dCIgc2hvdWxkIHN0b3AgaW4gbWFpbigpLgorKworK2dkYl90ZXN0ICJzdGFydCIgXAorKyAgICAg ICAgICIuKm1haW4gXFwoXFwpIGF0IC4qIiBcCisrICAgICAgICAgInN0YXJ0IgorK2dkYl90ZXN0 ICJzdGVwIiBcCisrICAgICAgICAgImZ1bmMuKiBcXCguKlxcKSBhdCAuKiIgXAorKyAgICAgICAg ICJzdGVwIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0 LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0 cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uNTE2OTdiMAoraW5kZXggMDAwMDAwMC4uNWZjZGQ4NAogLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCi1AQCAtMCww ICsxLDUxIEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1i ZXItZGF0YS1sb2NhdGlvbi5TCitAQCAtMCwwICsxLDgzIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSsgICBDb3B5cmlnaHQgMjAxMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CkBAIC0xMzg5OCw0OCArNzIzMSw4MCBAQCBpbmRleCAwMDAwMDAwLi41MTY5N2IwCiArICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKICsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rI2luY2x1ZGUgPHB0aHJlYWQuaD4K LSsjaW5jbHVkZSA8YXNzZXJ0Lmg+CisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KICsKLStzdGF0 aWMgdm9sYXRpbGUgaW50IGEsIGIsIGM7CisrCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCisrLkxjdTFf YmVnaW46CisrCS8qIENVIGhlYWRlciAqLworKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3Rh cnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCisrLkxjdTFfc3RhcnQ6CisrCS4y Ynl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KKysJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJ CS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCisrCS5ieXRlCTQJCQkJLyogUG9pbnRl ciBzaXplICovCiArCi0rc3RhdGljIHZvaWQKLSttYXJrZXJfZXhpdCAodm9pZCkKLSt7Ci0rICBh ID0gMTsKLSt9CisrCS8qIENVIGRpZSAqLworKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdf VEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYXNjaWkJImR3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9j YXRpb24uY1wwIgkvKiBEV19BVF9uYW1lICovCisrCS5hc2NpaQkiR05VIEMgNC4zLjJcMCIJCQkv KiBEV19BVF9wcm9kdWNlciAqLworKwkuYnl0ZQkxCQkJCS8qIERXX0FUX2xhbmd1YWdlIChDKSAq LwogKwotK3N0YXRpYyB2b2lkICoKLStzdGFydCAodm9pZCAqYXJnKQotK3sKLSsgIGIgPSAyOwot KyAgYyA9IDM7CisrLkx0eXBlX3VjaGFyOgorKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19U QUdfc3RydWN0dXJlX3R5cGUgKi8KKysJLmFzY2lpCQkic29tZV9zdHJ1Y3RcMCIJCS8qIERXX0FU X25hbWUgKi8KICsKLSsgIHJldHVybiBOVUxMOwotK30KKysJLnVsZWIxMjgJMwkJCS8qIEFiYnJl djogRFdfVEFHX21lbWJlciAqLworKwkuYXNjaWkJCSJmaWVsZFwwIgkJLyogRFdfQVRfbmFtZSAq LworKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCiArCi0raW50 Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBwdGhyZWFkX3QgdGhyZWFkOwotKyAgaW50IGk7CisrCS5i eXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIHNvbWVfc3RydWN0ICovCisrCisrCS5ieXRl CQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCiArCi0rICBpID0gcHRocmVhZF9jcmVh dGUgKCZ0aHJlYWQsIE5VTEwsIHN0YXJ0LCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsg IGkgPSBwdGhyZWFkX2pvaW4gKHRocmVhZCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Cisr LkxjdTFfZW5kOgogKwotKyAgbWFya2VyX2V4aXQgKCk7Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAorKy8qIEFiYnJldiB0 YWJsZSAqLworKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2CisrLkxhYmJyZXYxX2JlZ2luOgorKwku dWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RB R19jb21waWxlX3VuaXQgKi8KKysJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVs ZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JN X3N0cmluZyAqLworKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLnVs ZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERX X0FUX2xhbmd1YWdlICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJ LmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KKysKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4 MTMJCQkvKiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KKysJLmJ5dGUJCTEJCQkvKiBoYXNfY2hp bGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkw eDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyog QWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19tZW1iZXIgKi8KKysJ LmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRf bmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEy OAkweDM4CQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KKysJLnVsZWIxMjgJMHgw YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K KysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlv bi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1s b2NhdGlvbi5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5kN2RhZWVj CitpbmRleCAwMDAwMDAwLi5jNDExNTFjCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmV4cAotQEAgLTAsMCArMSw5MiBAQAotKyMg Q29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIworKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24u ZXhwCitAQCAtMCwwICsxLDM3IEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKQEAgLTEzOTUzLDkyICs3MzE4LDM3IEBAIGluZGV4IDAwMDAwMDAuLmQ3ZGFlZWMKICsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStpZiBbaXNfcmVtb3RlIHRhcmdldF0gewot KyAgICAjIEl0IGlzIEtGQUlMLgotKyAgICBjb250aW51ZQorKyMgVGhpcyB0ZXN0IGNhbiBvbmx5 IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KKysj IEZvciBub3cgcGljayBhIHNhbXBsaW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFy Z2V0ICotKi1saW51eCpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFb aXN0YXJnZXQgKi0qLWVsZipdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAg ICAmJiAhW2lzdGFyZ2V0IGFybS0qLWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMt Ki1lYWJpKl19IHsKKysgICAgcmV0dXJuIDAgIAogK30KICsKLStzZXQgdGVzdGZpbGUgIndhdGNo cG9pbnQtbXVsdGkiCi0rCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1 dGFibGV9Cisrc2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uIgor K3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKKytzZXQgYmluZmlsZSAke3Rlc3RmaWxlfS54CiAr Ci0raWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVu dGVzdGVkICR7dGVzdGZpbGV9LmV4cAorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2JpbmZpbGV9IiBvYmpl Y3Qge25vZGVidWd9XSAhPSAiIiB9IHsKICsgICAgcmV0dXJuIC0xCiArfQogKwotK2NsZWFuX3Jl c3RhcnQgJGV4ZWN1dGFibGUKLSsKLStpZiAhW3J1bnRvX21haW5dIHsKLSsgICAgcmV0dXJuCi0r fQotKyMgTmV2ZXIga2VlcC91c2UgYW55IG5vbi1odyBicmVha3BvaW50cyB0byB3b3JrYXJvdW5k IGEgbXVsdGktaW5mZXJpb3IgYnVnLgotK2RlbGV0ZV9icmVha3BvaW50cwotKwotK2dkYl90ZXN0 ICJhZGQtaW5mZXJpb3IiICJBZGRlZCBpbmZlcmlvciAyIgotK2dkYl90ZXN0ICJpbmZlcmlvciAy IiAid2l0Y2hpbmcgdG8gaW5mZXJpb3IgMiAuKiIKLStnZGJfbG9hZCAkYmluZmlsZQotKwotK2lm ICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4KLSt9Ci0rZGVsZXRlX2JyZWFrcG9pbnRzCi0r Ci0rIyBTaW11bGF0ZSBub24tc3RvcCt0YXJnZXQtYXN5bmMgd2hpY2ggYWxzbyB1c2VzIGJyZWFr cG9pbnQgYWx3YXlzLWluc2VydGVkLgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGJyZWFrcG9p bnQgYWx3YXlzLWluc2VydGVkIG9uIgotKyMgZGlzcGxhY2VkLXN0ZXBwaW5nIGlzIGFsc28gbmVl ZGVkIGFzIG90aGVyIEdEQiBzb21ldGltZXMgc3RpbGwgcmVtb3ZlcyB0aGUKLSsjIGJyZWFrcG9p bnRzLCBldmVuIHdpdGggYWx3YXlzLWluc2VydGVkIG9uLgotK2dkYl90ZXN0X25vX291dHB1dCAi c2V0IGRpc3BsYWNlZC1zdGVwcGluZyBvbiIKLSsKLSsjIERlYnVnZ2luZyBvZiB0aGlzIHRlc3Rj YXNlOgotKyNnZGJfdGVzdF9ub19vdXRwdXQgIm1haW50ZW5hbmNlIHNldCBzaG93LWRlYnVnLXJl Z3Mgb24iCi0rI2dkYl90ZXN0X25vX291dHB1dCAic2V0IGRlYnVnIGluZnJ1biAxIgotKwotKyMg RG8gbm90IHVzZSBzaW1wbGUgaGFyZHdhcmUgd2F0Y2hwb2ludCAoIndhdGNoIikgYXMgaXRzIGZh bHNlIGhpdCBtYXkgYmUKLSsjIHVubm90aWNlZCBieSBHREIgaWYgaXQgcmVhZHMgaXQgc3RpbGwg aGFzIHRoZSBzYW1lIHZhbHVlLgotK2dkYl90ZXN0ICJhd2F0Y2ggYyIgIkhhcmR3YXJlIGFjY2Vz cyBcXChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGMiCi0rCi0rZ2RiX2JyZWFr cG9pbnQgIm1hcmtlcl9leGl0IgotKwotK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAid2l0Y2hpbmcg dG8gaW5mZXJpb3IgMSAuKiIKLSsKLStzZXQgaGF2ZV9hd2F0Y2hfYiAwCi0rc2V0IHRlc3QgImF3 YXRjaCBiIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJIYXJk d2FyZSBhY2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBiXHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKwlzZXQgaGF2ZV9hd2F0Y2hfYiAxCi0rICAg IH0KLSsgICAgLXJlICJUaGVyZSBhcmUgbm90IGVub3VnaCBhdmFpbGFibGUgaGFyZHdhcmUgcmVz b3VyY2VzIGZvciB0aGlzIHdhdGNocG9pbnRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwl1bnRl c3RlZCAkdGVzdAotKwlyZXR1cm4KLSsgICAgfQotK30KLSsKLStnZGJfdGVzdCAiaW5mZXJpb3Ig MiIgIndpdGNoaW5nIHRvIGluZmVyaW9yIDIgLioiCi0rCi0rIyBGQUlMIHdvdWxkIGJlIGEgaGl0 IG9uIHdhdGNocG9pbnQgZm9yIGBiJyAtIHRoYXQgb25lIGlzIGZvciB0aGUgb3RoZXIKLSsjIGlu ZmVyaW9yLgotK2dkYl90ZXN0ICJjb250aW51ZSIgIkhhcmR3YXJlIGFjY2VzcyBcXChyZWFkL3dy aXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6IGNcclxuXHJcbk9sZCB2YWx1ZSA9IDBcclxuTmV3 IHZhbHVlID0gM1xyXG4uKiIgImNhdGNoIGMiCi0rCi0rZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQnJl YWtwb2ludCBcWzAtOVxdKywgbWFya2VyX2V4aXQgLioiICJjYXRjaCBtYXJrZXJfZXhpdCBpbiBp bmZlcmlvciAyIgotKwotK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAid2l0Y2hpbmcgdG8gaW5mZXJp b3IgMSAuKiIKLSsKLStnZGJfdGVzdCAiY29udGludWUiICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVh ZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBiXHJcblxyXG5PbGQgdmFsdWUgPSAwXHJc bk5ldyB2YWx1ZSA9IDJcclxuLioiICJjYXRjaCBiIgorK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUK ICsKLStnZGJfdGVzdCAiY29udGludWUiICJCcmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJfZXhp dCAuKiIgImNhdGNoIG1hcmtlcl9leGl0IGluIGluZmVyaW9yIDEiCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCisrZ2RiX3Rlc3QgInB0eXBl IHN0cnVjdCBzb21lX3N0cnVjdCIgInR5cGUgPSBzdHJ1Y3Qgc29tZV9zdHJ1Y3Qge1xbXHJcbiBc dFxdKnZvaWQgZmllbGQ7XFtcclxuIFx0XF0qfSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5TCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXgg MDAwMDAwMC4uNzI5ZjQ1NworaW5kZXggMDAwMDAwMC4uOWRiYmYzYwogLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCi1A QCAtMCwwICsxLDIyIEBACi0rLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1uby10 eXBlLlMKK0BAIC0wLDAgKzEsMTIxIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNDA1 Myw1NiArNzM2MywxMjEgQEAgaW5kZXggMDAwMDAwMC4uNzI5ZjQ1NwogKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAr ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLwogKwotK2ludAotK2Z1bmMgKGludCAqYXJyKQotK3sKLSsgIHJl dHVybiBhcnJbMF07Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJh eS1mcm9tLXJlZ2lzdGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdp c3Rlci5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzA5MGU3ZQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0 ZXIuYwotQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKysvKiBEZWJ1ZyBpbmZvcm1hdGlvbiAqLwogKwotKyAgIENvcHlyaWdo dCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwkuc2VjdGlvbgkuZGF0YQor K3ZhcmRhdGE6CisrCS5yZXB0CQkxMjkKKysJLmFzY2lpCQkieCIKKysJLmVuZHIKKysJLmFzY2lp CQkiVU5TRUVOXDAiCiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysJLnNlY3Rp b24JLmRlYnVnX2luZm8KKysuTGN1MV9iZWdpbjoKKysJLjRieXRlCQkuTGN1MV9lbmQgLSAuTGN1 MV9zdGFydAkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLworKy5MY3UxX3N0YXJ0Ogor KwkuMmJ5dGUJCTIJCQkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLworKwkuNGJ5dGUJCS5MZGVi dWdfYWJicmV2MAkJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICovCisrCS5ieXRlCQk0 CQkJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KICsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKwkvKiBDVSBkaWUgKi8KKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldjogRFdfVEFHX2Nv bXBpbGVfdW5pdCAqLworKwkuYXNjaWkJCSJHTlUgQyAzLjMuM1wwIgkJLyogRFdfQVRfcHJvZHVj ZXIgKi8KKysJLmJ5dGUJCTIJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgLSAgKi8KKysKKysuTGFy cmF5X3R5cGU6CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90eXBlICov CisrCS40Ynl0ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKwor KwkudWxlYjEyOAk4CQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0IERX X0FUX3R5cGUgKi8KKysJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLworKwkuYnl0 ZQkJMTI4CQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQg b2YgY2hpbGRyZW4gb2YgZGllICovCisrCisrLkxjaGFyX3R5cGU6CisrCS51bGViMTI4CTQJCQkv KiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmFzY2lpCQkiY2hhclwwIgkJLyogRFdf QVRfbmFtZSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkuYnl0ZQkJ NgkJCS8qIERXX0FUX2VuY29kaW5nICovCisrCisrCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERX X1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLworKwkuYXNjaWkJCSJub3R5cGVfc3RyaW5n XDAiCS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFfYmVnaW4g LyogRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICov CisrMToJLmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXJkYXRhCQkJ LyogICA8YWRkcj4gKi8KKysyOgorKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBv ZiBDVSAqLworKy5MY3UxX2VuZDoKKysKKysJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgorKy5MZGVi dWdfYWJicmV2MDoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4 CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkweDEJCQkvKiBoYXNf Y2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCisrCS51 bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBE V19BVF9sYW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCiArCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCS51bGViMTI4 CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEJCQkvKiBUQUc6IERXX1RBR19h cnJheV90eXBlICovCisrCS5ieXRlCQkweDEJCQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KKysJLnVs ZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZP Uk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwogKwotK2V4dGVybiBpbnQgZnVuYyAoaW50ICphcnIpOworKwku dWxlYjEyOAk0CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RB R19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGVi MTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9z dHJpbmcgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS51bGVi MTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgzZQkJCS8qIERXX0FU X2VuY29kaW5nICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3Ig Ki8KICsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGludCBhcnJbXSA9IHsgNDIgfTsKKysJ LnVsZWIxMjgJNgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MzQJCQkvKiBEV19U QUdfdmFyaWFibGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGVi MTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9z dHJpbmcgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJ MHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOAkweDIJCQkvKiBEV19BVF9sb2Nh dGlvbiAqLworKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwog KwotKyAgZnVuYyAoYXJyKTsKKysJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBjb2RlICovCisrCS51 bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0IERXX0FUX3R5cGUg Ki8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCisrCS51bGViMTI4CTB4MjIJCQkv KiBEV19BVF9sb3dlcl9ib3VuZCAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGEx ICovCisrCS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAqLworKwkudWxlYjEy OAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCiArCi0rICByZXR1cm4gMDsKLSt9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwCisrCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1uby10eXBlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi5mMmRlNzE4CitpbmRleCAwMDAwMDAwLi5hMTNlMzQ2CiAtLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5leHAKLUBA IC0wLDAgKzEsMzMgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKyMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Ut bm8tdHlwZS5leHAKK0BAIC0wLDAgKzEsMzkgQEAKKysjIENvcHlyaWdodCAyMDEyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCiArIwogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCkBAIC0xNDExMSw2ODEgKzc0ODYsNzM5IEBAIGluZGV4 IDAwMDAwMDAuLmYyZGU3MTgKICsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCiArIwogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgot KyMKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrbG9hZF9saWIgZHdhcmYuZXhwCiArCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGlu ZyBhcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCAiYXJyYXktZnJvbS1yZWdpc3RlciIgICAgICBcCi0r CQkJICB7YXJyYXktZnJvbS1yZWdpc3Rlci5jIGFycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jfSBc Ci0rCQkJICB7ZGVidWcgb3B0aW1pemU9LU8yfV0gfSB7Ci0rICAgIHJldHVybiAtMQorKyMgaHR0 cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD04MDY5MjAKKysjIHJlYWRf c3VicmFuZ2VfdHlwZSA8VFlQRV9DT0RFIChiYXNlX3R5cGUpID09IFRZUEVfQ09ERV9WT0lEPiBy ZWluaXRpYWxpemF0aW9uCisrIyBvZiBCQVNFX1RZUEUgd2FzIGRvbmUgdG9vIGxhdGUsIGl0IGFm ZmVjdHMgRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aG91dAorKyMgc3BlY2lmaWVkIERXX0FUX3R5 cGUsIHByZXNlbnQgb25seSBpbiBYTEYgcHJvZHVjZWQgY29kZS4KKysKKysjIFRoaXMgdGVzdCBj YW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBn YXMuCisraWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7CisrICAgIHJldHVybiAwICAKICt9CiArCi0r aWYgIVtydW50byBmdW5jXSB0aGVuIHsKKytzZXQgdGVzdGZpbGUgZHcyLXN1YnJhbmdlLW5vLXR5 cGUKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCisrc2V0IGV4ZWN1dGFibGUgJHt0ZXN0Zmls ZX0ueAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQorKwor K2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewogKyAgICByZXR1cm4gLTEKICt9CiArCi0rZ2Ri X3Rlc3QgInAgYXJyIiAiXFwkXFswLTlcXSsgPSBcXChpbnQgXFwqXFwpICoweFxbMC05YS1mXF0r IgorK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKICsKLSsjIFNlZW4gcmVncmVzc2lvbjoKLSsj IEFkZHJlc3MgcmVxdWVzdGVkIGZvciBpZGVudGlmaWVyICJhcnIiIHdoaWNoIGlzIGluIHJlZ2lz dGVyICRyZGkKLStnZGJfdGVzdCAicCBhcnJcWzBcXSIgIlxcJFxbMC05XF0rID0gNDIiCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4cAorK2dkYl90ZXN0ICJwdHlwZSBub3R5cGVfc3RyaW5n IiB7dHlwZSA9IGNoYXIgXFsxMjlcXX0KKytnZGJfdGVzdCAicCBub3R5cGVfc3RyaW5nIiAiID0g J3gnIDxyZXBlYXRzIDEyOSB0aW1lcz4iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2Fy Zi1zdHJpZGUuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uY2NjNmUx ZQoraW5kZXggMDAwMDAwMC4uZDdiOGJlYQogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAKLUBAIC0wLDAgKzEsMTA0IEBACi0rIyBDb3B5cmln aHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKK0BAIC0wLDAgKzEsNDIg QEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKwog KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK ICsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIworKyMgCiArIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKICsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCiArIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCiArIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKKysjIAogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwot K2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0r bG9hZF9saWIgInBhc2NhbC5leHAiCi0rCi0rc2V0IHRlc3RmaWxlICJhcnJheXMiCi0rc2V0IHNy Y2ZpbGUgJHt0ZXN0ZmlsZX0ucGFzCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfSRFWEVFWFQKLSsKLSsjIFRoZXNlIHRlc3RzIG9ubHkgd29yayB3aXRoIGZwYywg dXNpbmcgdGhlIC1ndzMgY29tcGlsZS1vcHRpb24KLStwYXNjYWxfaW5pdAotK2lmIHsgJHBhc2Nh bF9jb21waWxlcl9pc19mcGMgIT0gMSB9IHsKLSsgIHJldHVybiAtMQotK30KLSsKLSsjIERldGVj dCBpZiB0aGUgZnBjIHZlcnNpb24gaXMgYmVsb3cgMi4zLjAKLStzZXQgZnBjX2dlbmVyYXRlc19k d2FyZl9mb3JfZHluYW1pY19hcnJheXMgMQotK2lmIHsgKCRmcGN2ZXJzaW9uX21ham9yIDwgMikg fHwgKCAoJGZwY3ZlcnNpb25fbWFqb3IgPT0gMikgJiYgKCRmcGN2ZXJzaW9uX21pbm9yIDwgMykp fSAgewotKyAgc2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzIDAKLSt9 Ci0rCi0rCi0raWYge1tnZGJfY29tcGlsZV9wYXNjYWwgIi1ndzMgJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBdXSAhPSAi IiB9IHsKLSsgIHJldHVybiAtMQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9y ZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLStz ZXQgYnBfbG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAxIGhl cmUiXQotK3NldCBicF9sb2NhdGlvbjIgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3Bv aW50IDIgaGVyZSJdCi0rCi0rCi0raWYgeyBbZ2RiX2JyZWFrcG9pbnQgJHtzcmNmaWxlfToke2Jw X2xvY2F0aW9uMX1dIH0gewotKyAgICBwYXNzICJzZXR0aW5nIGJyZWFrcG9pbnQgMSIKLSt9Ci0r aWYgeyBbZ2RiX2JyZWFrcG9pbnQgJHtzcmNmaWxlfToke2JwX2xvY2F0aW9uMn1dIH0gewotKyAg ICBwYXNzICJzZXR0aW5nIGJyZWFrcG9pbnQgMiIKLSt9Ci0rCi0rIyBWZXJpZnkgdGhhdCAic3Rh cnQiIGxhbmRzIGluc2lkZSB0aGUgcmlnaHQgcHJvY2VkdXJlLgotK2lmIHsgW2dkYl9zdGFydF9j bWRdIDwgMCB9IHsKLSsgICAgdW50ZXN0ZWQgc3RhcnQKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2dkYl90ZXN0ICIiICIuKiBhdCAuKiR7c3JjZmlsZX0uKiIgInN0YXJ0IgotKwotK2dkYl90ZXN0 ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMX0uKiIgIkdvaW5nIHRvIGZpcnN0 IGJyZWFrcG9pbnQiCi0rCi0rZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJJbnQiICIuKiA9IFxcezUw LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0iICJQcmludCBz dGF0aWMgYXJyYXkgb2YgaW50ZWdlciB0eXBlIgotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJySW50 XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2 MVxcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBpbnRlZ2VyIgotKwotK2dkYl90ZXN0ICJjb250 IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMn0uKiIgIkdvaW5nIHRvIHNlY29uZCBicmVh a3BvaW50IgotKwotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyQ2hhciIgIi4qID0gJ2FiY2RlZmdo aWprbCciICJQcmludCBzdGF0aWMgYXJyYXkgb2YgY2hhciIKLStnZGJfdGVzdCAicHJpbnQgU3Rh dDJkQXJySW50IiAiLiogPSBcXHtcXHswLCAxLCAyLCAzLCA0XFx9LCBcXHsxLCAyLCAzLCA0LCA1 XFx9LCBcXHsyLCAzLCA0LCA1LCA2XFx9LCBcXHszLCA0LCA1LCA2LCA3XFx9LCBcXHs0LCA1LCA2 LCA3LCA4XFx9LCBcXHs1LCA2LCA3LCA4LCA5XFx9LCBcXHs2LCA3LCA4LCA5LCAxMFxcfSwgXFx7 NywgOCwgOSwgMTAsIDExXFx9LCBcXHs4LCA5LCAxMCwgMTEsIDEyXFx9LCBcXHs5LCAxMCwgMTEs IDEyLCAxM1xcfSwgXFx7MTAsIDExLCAxMiwgMTMsIDE0XFx9LCBcXHsxMSwgMTIsIDEzLCAxNCwg MTVcXH1cXH0iICJQcmludCBzdGF0aWMgMi1kaW1lbnNpb25hbCBhcnJheSBvZiBpbnRlZ2VyIgot KwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsK LSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFyckludCIg Ii4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwg NjJcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIgdHlwZSIKLStpZiB7ICRmcGNf Z2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94ZmFp bCAiKi0qLSoiCi0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJbnRfIiAiLiogPSBcXHs1MCwg NTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MlxcfSIgIlByaW50 IGR5bmFtaWMgYXJyYXkgb2YgaW50ZWdlciIKLSsKLStpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJm X2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94ZmFpbCAiKi0qLSoiCi0rfQot K2dkYl90ZXN0ICJwcmludCBzIiAiLiogPSAndGVzdCcjMCdzdHJpbmcnIiAiUHJpbnQgc3RyaW5n IGNvbnRhaW5pbmcgbnVsbC1jaGFyIgotKwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9y X2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0rZ2Ri X3Rlc3QgInByaW50IER5bkFyclN0ciIgIi4qID0gXFx7J2RzdHIwJywgJ2RzdHIxJywgJ2RzdHIy JywgJ2RzdHIzJywgJ2RzdHI0JywgJ2RzdHI1JywgJ2RzdHI2JywgJ2RzdHI3JywgJ2RzdHI4Jywg J2RzdHI5JywgJ2RzdHIxMCcsICdkc3RyMTEnLCAnZHN0cjEyJ1xcfSIgIlByaW50IGR5bmFtaWMg YXJyYXkgb2Ygc3RyaW5nIgotKwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFt aWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3Qg InByaW50IFN0YXRBcnJTdHIiICIuKiA9IFxceydzdHIwJywgJ3N0cjEnLCAnc3RyMicsICdzdHIz JywgJ3N0cjQnLCAnc3RyNScsICdzdHI2JywgJ3N0cjcnLCAnc3RyOCcsICdzdHI5JywgJ3N0cjEw JywgJ3N0cjExJywgJ3N0cjEyJ1xcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBzdHJpbmciCi0r Ci0raWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0gewot KyAgc2V0dXBfeGZhaWwgIiotKi0qIgotK30KLStnZGJfdGVzdCAicHJpbnQgRHluQXJyQ2hhciIg Ii4qID0gJ2FiY2RlZmdoaWprbG0nIiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBjaGFyIgotKwot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi4yOTU2MDJkCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5wYXNjYWwvYXJyYXlzLnBhcwotQEAgLTAsMCArMSw4MiBAQAotK3sKLSsgQ29weXJpZ2h0IDIw MDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rCi0rIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgotK30KLSsKLStwcm9ncmFtIGFycmF5czsKLSsKLSt7JG1vZGUgb2JqZnBjfXskaCt9Ci0r Ci0rdXNlcyBzeXN1dGlsczsKLSsKLSt0eXBlIFRTdGF0QXJySW50PSBhcnJheVswLi4xMV0gb2Yg aW50ZWdlcjsKLSsgICAgIFREeW5BcnJJbnQ9IGFycmF5IG9mIGludGVnZXI7Ci0rICAgICBUU3Rh dEFyclN0cj0gYXJyYXlbMC4uMTJdIG9mIHN0cmluZzsKLSsgICAgIFREeW5BcnJTdHI9IGFycmF5 IG9mIHN0cmluZzsKLSsgICAgIFREeW5BcnJDaGFyID0gYXJyYXkgb2YgY2hhcjsKLSsgICAgIFRT dGF0QXJyQ2hhciA9IGFycmF5IFswLi4xMV0gb2YgY2hhcjsKLSsKLSsgICAgIFRTdGF0MmRBcnJJ bnQgPSBhcnJheVswLi4xMSwwLi40XSBvZiBpbnRlZ2VyOwotKwotK3ZhciBTdGF0QXJySW50OiBU U3RhdEFyckludDsKLSsgICAgU3RhdEFyckludF86IEFycmF5WzAuLjExXSBvZiBpbnRlZ2VyOwot KyAgICBEeW5BcnJJbnQ6ICBURHluQXJySW50OwotKyAgICBEeW5BcnJJbnRfOiBBcnJheSBvZiBp bnRlZ2VyOwotKyAgICBTdGF0QXJyU3RyOiBUU3RhdEFyclN0cjsKLSsgICAgRHluQXJyU3RyOiBU RHluQXJyU3RyOwotKyAgICBTdGF0QXJyQ2hhcjogVFN0YXRBcnJDaGFyOwotKyAgICBEeW5BcnJD aGFyOiBURHluQXJyQ2hhcjsKLSsKLSsgICAgU3RhdDJkQXJySW50OiBUU3RhdDJkQXJySW50Owot KwotKyAgICBzOiBzdHJpbmc7Ci0rCQotKyAgICBpLGogOiBpbnRlZ2VyOwotKwotK2JlZ2luCi0r ICBmb3IgaSA6PSAwIHRvIDExIGRvCi0rICAgIGJlZ2luCi0rICAgIFN0YXRBcnJJbnRbaV06PSBp KzUwOwotKyAgICBTdGF0QXJySW50X1tpXTo9IGkrNTA7Ci0rICAgIFN0YXRBcnJDaGFyW2ldOj0g Y2hyKG9yZCgnYScpK2kpOwotKyAgICBmb3IgaiA6PSAwIHRvIDQgZG8KLSsgICAgICBTdGF0MmRB cnJJbnRbaSxqXTo9aStqOwotKyAgICBlbmQ7Ci0rICB3cml0ZWxuKFN0YXRBcnJJbnRfWzBdKTsK LSsgIHdyaXRlbG4oU3RhdEFyckludFswXSk7IHsgc2V0IGJyZWFrcG9pbnQgMSBoZXJlIH0KLSsg IHdyaXRlbG4oU3RhdEFyckNoYXJbMF0pOwotKyAgd3JpdGVsbihTdGF0MmRBcnJJbnRbMCwwXSk7 CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAogKwotKyAgc2V0bGVuZ3RoKER5bkFycklu dCwxMyk7Ci0rICBzZXRsZW5ndGgoRHluQXJySW50XywxMyk7Ci0rICBzZXRsZW5ndGgoRHluQXJy U3RyLDEzKTsKLSsgIHNldGxlbmd0aChEeW5BcnJDaGFyLDEzKTsKLSsgIGZvciBpIDo9IDAgdG8g MTIgZG8KLSsgICAgYmVnaW4KLSsgICAgRHluQXJySW50W2ldOj0gaSs1MDsKLSsgICAgRHluQXJy SW50X1tpXTo9IGkrNTA7Ci0rICAgIER5bkFyckNoYXJbaV06PSBjaHIob3JkKCdhJykraSk7Ci0r ICAgIFN0YXRBcnJTdHJbaV06PSdzdHInK2ludHRvc3RyKGkpOwotKyAgICBEeW5BcnJTdHJbaV06 PSdkc3RyJytpbnR0b3N0cihpKTsKLSsgICAgZW5kOwotKyAgd3JpdGVsbihEeW5BcnJJbnRfWzFd KTsKLSsgIHdyaXRlbG4oRHluQXJySW50WzFdKTsgCi0rICB3cml0ZWxuKER5bkFyclN0clsxXSk7 IAotKyAgd3JpdGVsbihTdGF0QXJyU3RyWzFdKTsKLSsgIHdyaXRlbG4oRHluQXJyQ2hhclsxXSk7 CisrIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+LgogKwotKyAgcyA6PSAndGVzdCcjMCdzdHJpbmcnOwotKyAgd3JpdGVs bihzKTsgeyBzZXQgYnJlYWtwb2ludCAyIGhlcmUgfQotK2VuZC4KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LWZyYW1lLmV4cAotaW5kZXggODNmZjhmZS4uYmRkYmY5ZiAxMDA2NDQKLS0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLUBAIC03NCw4ICs3NCw2IEBAIGdkYl90ZXN0ICJweXRo b24gcHJpbnQgYmZyYW1lID09IGdkYi5uZXdlc3RfZnJhbWUoKSIgVHJ1ZSBcCi0gCi0gZ2RiX3Rl c3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCA9PSBmMSIgIiA9IEZhbHNlIiAidGVzdCBl cXVhbGl0eSBjb21wYXJpc29uIChmYWxzZSkiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVz dWx0ID0nLCBmMCA9PSBmMCIgIiA9IFRydWUiICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKHRy dWUpIgotLWdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjEiICIgPSBU cnVlIiAidGVzdCBpbmVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgotLWdkYl90ZXN0ICJweXRo b24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjAiICIgPSBGYWxzZSIgInRlc3QgaW5lcXVhbGl0 eSBjb21wYXJpc29uIChmYWxzZSkiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0n LCBmMC5pc192YWxpZCAoKSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLmlzX3ZhbGlkIgotIGdkYl90 ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAubmFtZSAoKSIgIiA9IGYyIiAidGVzdCBG cmFtZS5uYW1lIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAudHlwZSAo KSA9PSBnZGIuTk9STUFMX0ZSQU1FIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUudHlwZSIKLUBAIC05 MCwzICs4OCw1IEBAIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAucmVhZF92 YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250X2V4Ci0gZ2RiX3Rlc3QgInB5dGhvbiBw cmludCAncmVzdWx0ID0nLCBmMC5yZWFkX3ZhciAoJ2EnKSIgIiA9IDEiICJ0ZXN0IEZyYW1lLnJl YWRfdmFyIC0gc3VjY2VzcyIKLSAKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScs IGdkYi5zZWxlY3RlZF9mcmFtZSAoKSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0IGdkYi5zZWxlY3Rl ZF9mcmFtZSIKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgQXJy YXkgZWxlbWVudCBzdHJpZGUgbXVzdCBub3QgYmUKKysjIHNwZWNpZmllZCBpbiB0aGUgbnVtYmVy IG9mIGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJlciBvZiBieXRlcyBpbnN0ZWFkLgorKyMgT3JpZ2lu YWwgcHJvYmxlbToKKysjIChnZGIpIHAgYzQwcHQoMSkKKysjICQxID0gJzAtaGVsbG8nLCAnICcg PHJlcGVhdHMgMzMgdGltZXM+CisrIyAoZ2RiKSBwIGM0MHB0KDIpCisrIyB3YXJuaW5nOiBGb3J0 cmFuIGFycmF5IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5IHRoZSBlbGVtZW50IHNpemUKICsKLStn ZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLmJsb2NrICgpIiAiPGdkYi5CbG9j ayBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4iICJ0ZXN0IEZyYW1lLmJsb2NrIgotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCi1pbmRleCBjOWQ4Yzk3Li40MzI0ZGIwIDEw MDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotQEAgLTM2MCw2ICszNjAsMTUg QEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKLSAgICAgInByaW50IHZhbHVlJ3Mg dHlwZSIKLSB9Ci0gCi0rIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGEgY2FzdCBmYWlsdXJlLiAgVGhl IGJ1ZyB3YXMgdGhhdCBpZiB3ZSBjYXN0IGEKLSsjIHZhbHVlIHRvIGl0cyBvd24gdHlwZSwgZ2Ri IGNvdWxkIGNyYXNoLiAgVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdlCi0rIyBjb3VsZCBlbmQgdXAg ZG91YmxlLWZyZWVpbmcgYSBzdHJ1Y3QgdmFsdWUuCi0rcHJvYyB0ZXN0X2Nhc3RfcmVncmVzc2lv biB7fSB7Ci0rICBnZGJfdGVzdCAicHl0aG9uIHYgPSBnZGIuVmFsdWUoNSkiICIiICJjcmVhdGUg dmFsdWUgZm9yIGNhc3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gdiA9IHYuY2FzdCh2LnR5 cGUpIiAiIiAiY2FzdCB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgotKyAgZ2RiX3Rlc3QgInB5dGhvbiBw cmludCB2IiAiNSIgInByaW50IHZhbHVlIGZvciBjYXN0IHRlc3QiCisrc2V0IHRlc3RmaWxlIGR3 YXJmLXN0cmlkZQorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorKworK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2Rl YnVnIGY5MH1dIH0geworKyAgICByZXR1cm4gLTEKICt9CiArCi0gIyBSZWdyZXNzaW9uIHRlc3Qg Zm9yIGludmFsaWQgc3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0Ci0gIyB0 aGUgdHlwZSBvZiB0aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2lu ZyBhCi0gIyBzdWJzY3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtNDk2LDYgKzUwNSw3 IEBAIHRlc3RfdmFsdWVfaW5faW5mZXJpb3IKLSB0ZXN0X2luZmVyaW9yX2Z1bmN0aW9uX2NhbGwK LSB0ZXN0X2xhenlfc3RyaW5ncwotIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgKLSt0ZXN0X2Nhc3Rf cmVncmVzc2lvbgotIAotICMgVGVzdCBlaXRoZXIgQyBvciBDKysgdmFsdWVzLiAKLSB0ZXN0X3N1 YnNjcmlwdF9yZWdyZXNzaW9uICIke2JpbmZpbGV9IiAiYyIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYworK2lmICFbcnVudG8gTUFJTl9f XSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18i CisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJicmVhay1oZXJlIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVy ZSIgIi4qYnJlYWstaGVyZS4qIgorK2dkYl90ZXN0ICJwIGM0MHB0KDEpIiAiID0gJzAtaGVsbG8u KiIKKytnZGJfdGVzdCAicCBjNDBwdCgyKSIgIiA9ICcxLWhlbGxvLioiCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uN2E3ZTA3ZgoraW5kZXggMDAwMDAwMC4uZTQ5MmIzYQogLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQu YwotQEAgLTAsMCArMSwxMjkgQEAKLSsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRj aHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5MAorQEAgLTAsMCArMSw0MCBAQAorKyEgQ29w eXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBGaWxlIHdyaXR0ZW4gYnkg QWxhbiBNYXRzdW9rYS4KICsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKytwcm9ncmFtIHJlcHJvCiArCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2Yg R0RCLgorKyAgdHlwZSBzbWFsbF9zdHJpZGUKKysgICAgIGNoYXJhY3Rlcio0MCBsb25nX3N0cmlu ZworKyAgICAgaW50ZWdlciAgICAgIHNtYWxsX3BhZAorKyAgZW5kIHR5cGUgc21hbGxfc3RyaWRl CiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgIHR5cGUoc21hbGxfc3RyaWRl KSwgZGltZW5zaW9uICgyMCksIHRhcmdldCA6OiB1bnBsZWFzYW50CisrICBjaGFyYWN0ZXIqNDAs IHBvaW50ZXIsIGRpbWVuc2lvbig6KTo6IGM0MHB0CiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKysgIGludGVnZXIgaQogKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAqLworKyAgZG8gaSA9IDAsMTkKKysgICAgIHVucGxlYXNhbnQoaSsxKSVz bWFsbF9wYWQgPSBpKzEKKysgICAgIHVucGxlYXNhbnQoaSsxKSVsb25nX3N0cmluZyA9IGNoYXIg KGljaGFyKCcwJykgKyBpKSAvLyAnLWhlbGxvJworKyAgZW5kIGRvCiArCi0rI2luY2x1ZGUgPHN0 cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5j bHVkZSA8YXNzZXJ0Lmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNsdWRlIDxzdGRpby5o PgorKyAgYzQwcHQgPT4gdW5wbGVhc2FudCVsb25nX3N0cmluZworKworKyAgcHJpbnQgKiwgYzQw cHQgICEgYnJlYWstaGVyZQogKwotKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmsuaCIKKytlbmQg cHJvZ3JhbSByZXBybworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjI2MWNlMTcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAorQEAgLTAsMCArMSwyNCBAQAorKyEg Q29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg RnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp dGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMg dGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmls ZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZp ZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+LgogKwotKy8qIGBwaWRfdCcgbWF5IG5vdCBiZSBhdmFpbGFibGUuICAqLwor K3N1YnJvdXRpbmUgYmFyCisrICByZWFsIDo6IGR1bW15CisrICBkdW1teSA9IDEKKytlbmQgc3Vi cm91dGluZSBiYXIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFt aWMtb3RoZXItZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90 aGVyLWZyYW1lLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmZhNDFi ODAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1p Yy1vdGhlci1mcmFtZS5leHAKK0BAIC0wLDAgKzEsMzcgQEAKKysjIENvcHlyaWdodCAyMDEwIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotK3N0YXRpYyB2b2xhdGlsZSBpbnQgdXNy MV9nb3Q7CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMgCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKICsK LStzdGF0aWMgdm9pZAotK2hhbmRsZXJfdXNyMSAoaW50IHNpZ25vKQotK3sKLSsgIHVzcjFfZ290 Kys7Cisrc2V0IHRlc3RmaWxlICJkeW5hbWljLW90aGVyLWZyYW1lIgorK3NldCBzcmNmaWxlMSAk e3Rlc3RmaWxlfS5mOTAKKytzZXQgc3JjZmlsZTIgJHt0ZXN0ZmlsZX0tc3R1Yi5mOTAKKytzZXQg b2JqZmlsZTIgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1zdHViLm8KKytzZXQgZXhl Y3V0YWJsZSAke3Rlc3RmaWxlfQorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtl eGVjdXRhYmxlfQorKworK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZTJ9IiAiJHtvYmpmaWxlMn0iIG9iamVjdCB7ZjkwfV0gIT0gIiIKKysgICAgIHx8IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUxfSAke29iamZpbGUyfSIg IiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MH1dICE9ICIiIH0geworKyAgICB1bnRl c3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGUxfSBvciAke3NyY2ZpbGUyfSIKKysgICAg cmV0dXJuIC0xCiArfQogKwotK3ZvaWQKLStmb3Jrb2ZmIChpbnQgbnIpCi0rewotKyAgaW50IGNo aWxkLCBzYXZlX3BhcmVudCA9IGdldHBpZCAoKTsKLSsgIGludCBpOwotKyAgc3RydWN0IHNpZ2Fj dGlvbiBhY3QsIG9sZGFjdDsKLSsjaWZkZWYgVEhSRUFECi0rICB2b2lkICp0aHJlYWRfcmVzdWx0 OwotKyNlbmRpZgorK2NsZWFuX3Jlc3RhcnQgJHtleGVjdXRhYmxlfQorKworK2lmICFbcnVudG8g YmFyX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJhcl8iCisrICAgIGNv bnRpbnVlCisrfQorKworK2dkYl90ZXN0ICJidCIge2ZvbyBcKHN0cmluZz0naGVsbG8nLip9Citk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1l LmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5mOTAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yYmM2MzdkCistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUu ZjkwCitAQCAtMCwwICsxLDM2IEBACisrISBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLgorKyEKKyshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHlu YW1pYy5leHAuCisrISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4uCisrISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4g S3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrc3Vicm91dGluZSBm b28gKHN0cmluZykKKysgIGludGVyZmFjZQorKyAgICBzdWJyb3V0aW5lIGJhcgorKyAgICBlbmQg c3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgY2hhcmFjdGVyIHN0cmluZyooKikKKysg IGNhbGwgYmFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHN0b3AtaGVyZQorK2Vu ZCBzdWJyb3V0aW5lIGZvbworK3Byb2dyYW0gdGVzdAorKyAgaW50ZXJmYWNlCisrICAgIHN1YnJv dXRpbmUgZm9vIChzdHJpbmcpCisrICAgIGNoYXJhY3RlciBzdHJpbmcqKCopCisrICAgIGVuZCBz dWJyb3V0aW5lCisrICBlbmQgaW50ZXJmYWNlCisrICBjYWxsIGZvbyAoJ2hlbGxvJykKKytlbmQK K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLmU3OWU5NGEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAKK0BAIC0wLDAgKzEsMTUyIEBACisrIyBDb3B5cmln aHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsgIG1lbXNldCAoJmFj dCwgMCwgc2l6ZW9mIGFjdCk7Ci0rICBhY3Quc2FfZmxhZ3MgPSBTQV9SRVNUQVJUOwotKyAgYWN0 LnNhX2hhbmRsZXIgPSBoYW5kbGVyX3VzcjE7Ci0rICBzaWdlbXB0eXNldCAoJmFjdC5zYV9tYXNr KTsKLSsgIGkgPSBzaWdhY3Rpb24gKFNJR1VTUjEsICZhY3QsICZvbGRhY3QpOwotKyAgYXNzZXJ0 IChpID09IDApOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjIAorKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysjIAorKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAg CiArCi0rICBjaGlsZCA9IGZvcmsgKCk7Ci0rICBzd2l0Y2ggKGNoaWxkKQotKyAgICB7Ci0rICAg IGNhc2UgLTE6Ci0rICAgICAgYXNzZXJ0ICgwKTsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBwcmlu dGYgKCJwYXJlbnQlZDogJWRcbiIsIG5yLCAoaW50KSBjaGlsZCk7CisrIyBUaGlzIGZpbGUgd2Fz IHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgog KwotKyAgICAgIC8qIFNsZWVwIGZvciBhIHdoaWxlIHRvIHBvc3NpYmx5IGdldCBpbmNvcnJlY3Rs eSBBVFRBQ0hfVEhSRUFEZWQgYnkgR0RCCi0rCSB0cmFjaW5nIHRoZSBjaGlsZCBmb3JrIHdpdGgg bm8gbG9uZ2VyIHZhbGlkIHRocmVhZC9sd3AgZW50cmllcyBvZiB0aGUKLSsJIHBhcmVudC4gICov CisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0IGNvbnRhaW5z IHRlc3RzIGZvciBkeW5hbWljYWxseQorKyMgYWxsb2NhdGVkIEZvcnRyYW4gYXJyYXlzLgorKyMg SXQgZGVwZW5kcyBvbiB0aGUgR0NDIGR5bmFtaWMgRm9ydHJhbiBhcnJheXMgRFdBUkYgc3VwcG9y dDoKKysjIAlodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyMjQ0 CiArCi0rICAgICAgaSA9IHNsZWVwICgyKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7Cisrc2V0 IHRlc3RmaWxlICJkeW5hbWljIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICsKLSsgICAgICAvKiBXZSBt dXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCku ICAqLworK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1aWV0fV0gIT0gIiIgfSB7Cisr ICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisrICAgIHJldHVybiAt MQorK30KICsKLSsgICAgICB2YXIrKzsKLSsgICAgICBtYXJrZXIgKCk7CisrZ2RiX2V4aXQKKytn ZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9h ZCAke2JpbmZpbGV9CiArCi0rI2lmZGVmIFRIUkVBRAotKyAgICAgIC8qIEFuZCBuZWl0aGVyIGdv dCBjYXVnaHQgb3VyIHRocmVhZC4gICovCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAg ICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGlu dWUKKyt9CiArCi0rICAgICAgc3RlcCA9IDk5OwotKyAgICAgIGkgPSBwdGhyZWFkX2pvaW4gKHRo cmVhZCwgJnRocmVhZF9yZXN1bHQpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgICBh c3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikgOTlVTCk7Ci0rI2VuZGlmCisrZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtaW5pdCJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInZhcngtaW5pdCIKKytnZGJfdGVzdCAicCB2YXJ4IiAiXFwkXFswLTlc XSogPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAicCB2YXJ4IHVuYWxs b2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IDwob2JqZWN0fHRoZSBhcnJh eSkgaXMgbm90IGFsbG9jYXRlZD4iICJwdHlwZSB2YXJ4IHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0 ICJwIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhl IG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIg InAgdmFyeCgxLDUsMTcpIHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwIHZhcngoMSw1LDE3KT0x IiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNl IHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicCB2YXJ4KDEsNSwxNyk9 MSB1bmFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFyeCgxLDUsMTcpIiAiKENhbm5vdCBh Y2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0 fGFycmF5KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicHR5cGUgdmFyeCgxLDUsMTcpIHVuYWxsb2Nh dGVkIgogKwotKyAgICAgIC8qIEJlIHN1cmUgb3VyIGNoaWxkIGtub3dzIHdlIGRpZCBub3QgZ2V0 IGNhdWdodCBhYm92ZS4gICovCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZhcngtYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeC1hbGxv Y2F0ZWQiCisrIyAkMSA9ICgoICggMCwgMCwgMCwgMCwgMCwgMCkgKCAwLCAwLCAwLCAwLCAwLCAw KSAtLS0gLCAwKSApICggKCAwLCAwLCAuLi4pIC4uLikgLi4uKQorK2dkYl90ZXN0ICJwdHlwZSB2 YXJ4IiAidHlwZSA9IHJlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDYsNToxNSwxNzoyOFxcKSIg InB0eXBlIHZhcnggYWxsb2NhdGVkIgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAw OCB1c2VzIC0xIHRoZXJlLCBHQ0MgdXNlcyAxLgorK2dkYl90ZXN0ICJwIGwiICJcXCRcWzAtOVxd KiA9IChcXC5UUlVFXFwufDQyOTQ5NjcyOTUpIiAicCBsIGlmIHZhcnggYWxsb2NhdGVkIgogKwot KyAgICAgIGkgPSBraWxsIChjaGlsZCwgU0lHVVNSMSk7Ci0rICAgICAgYXNzZXJ0IChpID09IDAp OworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ4LWZpbGxlZCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZmlsbGVkIgorK2dkYl90ZXN0ICJwIHZh cngoMiwgNSwgMTcpIiAiXFwkXFswLTlcXSogPSA2IgorK2dkYl90ZXN0ICJwIHZhcngoMSwgNSwg MTcpIiAiXFwkXFswLTlcXSogPSA3IgorK2dkYl90ZXN0ICJwIHZhcngoMiwgNiwgMTgpIiAiXFwk XFswLTlcXSogPSA4IgorK2dkYl90ZXN0ICJwIHZhcngoNiwgMTUsIDI4KSIgIlxcJFxbMC05XF0q ID0gOSIKKysjIFRoZSBsYXR0ZXIgb25lIGlzIGZvciB0aGUgSW50ZWwgRm9ydHJhbiBDb21waWxl ciAxMC4xLjAwOCBwb2ludGVyIHR5cGUuCisrZ2RiX3Rlc3QgInAgdmFydiIgIlxcJFxbMC05XF0q ID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nl c3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMg bm90IGFzc29jaWF0ZWQuKSIgInAgdmFydiB1bmFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBl IHZhcnYiICJ0eXBlID0gKDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+fC4q KENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRo ZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIgInB0eXBlIHZhcnYgdW5hc3NvY2lhdGVkIgog KwotKyAgICAgIC8qIFNsZWVwIGZvciBhIHdoaWxlIHRvIGNoZWNrIEdEQidzIGBpbmZvIHRocmVh ZHMnIG5vIGxvbmdlciB0cmFja3MgdXMgaW4KLSsJIHRoZSBjaGlsZCBmb3JrLiAgKi8KKytzZXQg dGVzdCAib3V0cHV0IHZhcngiCisrZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKyAg ICAtcmUgIl5vdXRwdXQgdmFyeFxyXG5cWygpICw2Nzg5LlxdKiRnZGJfcHJvbXB0ICQiIHsKKysJ cGFzcyAkdGVzdAorKyAgICB9CisrfQogKwotKyAgICAgIGkgPSBzbGVlcCAoMik7Ci0rICAgICAg YXNzZXJ0IChpID09IDApOworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 YXJ2LWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWFzc29j aWF0ZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCgzLCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDYiICJw IHZhcngoMywgNywgMTkpIHdpdGggdmFydiBhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwIHZhcnYo MywgNywgMTkpIiAiXFwkXFswLTlcXSogPSA2IiAicCB2YXJ2KDMsIDcsIDE5KSBhc3NvY2lhdGVk IgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCB1c2VzIC0xIHRoZXJlLCBHQ0Mg dXNlcyAxLgorK2dkYl90ZXN0ICJwIGwiICJcXCRcWzAtOVxdKiA9IChcXC5UUlVFXFwufDQyOTQ5 NjcyOTUpIiAicCBsIGlmIHZhcnYgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFyeCIg InR5cGUgPSByZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg2LDU6MTUsMTc6MjhcXCkiICJwdHlw ZSB2YXJ4IHdpdGggdmFydiBhc3NvY2lhdGVkIgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAx MC4xLjAwOCB1c2VzIHRoZSBwb2ludGVyIHR5cGUuCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnYiICJ0 eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg2LDU6MTUs MTc6MjhcXClcXCk/IiAicHR5cGUgdmFydiBhc3NvY2lhdGVkIgogKwotKyAgICAgIF9leGl0ICgw KTsKLSsgICAgY2FzZSAwOgotKyAgICAgIHByaW50ZiAoImNoaWxkJWQ6ICVkXG4iLCBuciwgKGlu dCkgZ2V0cGlkICgpKTsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFy di1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWZpbGxlZCIKKytn ZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJwIHZhcngoMywg NywgMTkpIHdpdGggdmFydiBmaWxsZWQiCisrZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSkiICJc XCRcWzAtOVxdKiA9IDEwIiAicCB2YXJ2KDMsIDcsIDE5KSBmaWxsZWQiCiArCi0rICAgICAgLyog TGV0IHRoZSBwYXJlbnQgc2lnbmFsIHVzIGFib3V0IGl0cyBzdWNjZXNzLiAgQmUgY2FyZWZ1bCBv ZiByYWNlcy4gICovCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYt ZGVhc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydi1kZWFzc29j aWF0ZWQiCisrIyBUaGUgbGF0dGVyIG9uZSBpcyBmb3IgdGhlIEludGVsIEZvcnRyYW4gQ29tcGls ZXIgMTAuMS4wMDggcG9pbnRlciB0eXBlLgorK2dkYl90ZXN0ICJwIHZhcnYiICJcXCRcWzAtOVxd KiA9ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNj ZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlz IG5vdCBhc3NvY2lhdGVkLikiICJwIHZhcnYgZGVhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlw ZSB2YXJ2IiAidHlwZSA9ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwu KihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0 aGUgb2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVkLikiICJwdHlwZSB2YXJ2IGRlYXNzb2NpYXRlZCIK KytnZGJfdGVzdCAicCBsIiAiXFwkXFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ2 IGRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ2KDEsNSwxNykiICIoQ2Fubm90IGFjY2Vz cyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJy YXkpIGlzIG5vdCBhc3NvY2lhdGVkXFwuIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ2KDEsNSwxNyki ICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2Ug dGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkXFwuIgogKwotKyAgICAgIGZvciAo OzspCi0rCXsKLSsJICAvKiBQYXJlbnQgZWl0aGVyIGRpZWQgKGFuZCBVU1IxX0dPVCBpcyB6ZXJv KSBvciBpdCBzdWNjZWVkZWQuICAqLwotKwkgIGlmIChnZXRwcGlkICgpICE9IHNhdmVfcGFyZW50 KQotKwkgICAgYnJlYWs7Ci0rCSAgaWYgKGtpbGwgKGdldHBwaWQgKCksIDApICE9IDApCi0rCSAg ICBicmVhazsKLSsJICAvKiBQYXJlbnQgc3VjY2VlZGVkPyAgKi8KLSsJICBpZiAodXNyMV9nb3Qp Ci0rCSAgICBicmVhazsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFy eC1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZGVhbGxv Y2F0ZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChvYmplY3R8dGhlIGFy cmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAi cHR5cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+ IiAicHR5cGUgdmFyeCBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicCBsIiAiXFwkXFswLTlcXSog PSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ4IGRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwIHZh cngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVj dCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInAgdmFy eCgxLDUsMTcpIGRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiICIo Q2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhl IChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwdHlwZSB2YXJ4KDEsNSwxNykg ZGVhbGxvY2F0ZWQiCiArCi0rI2lmZGVmIFRIUkVBRAotKwkgIGkgPSBwdGhyZWFkX3lpZWxkICgp OwotKwkgIGFzc2VydCAoaSA9PSAwKTsKLSsjZW5kaWYKLSsJfQotKyAgICAgIGFzc2VydCAodXNy MV9nb3QpOworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ5LXBhc3Nl ZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnktcGFzc2VkIgorKyMgJDEgPSAo KCAoIDEsIDEsIDEsIDEsIDEsIDEpICggMSwgMSwgMSwgMSwgMSwgMSkgLS0tICwgMSkgKSAoICgg MSwgMSwgLi4uKSAuLi4pIC4uLikKKytnZGJfdGVzdCAicCB2YXJ5IiAiXFwkXFswLTlcXSogPSBc XChcWygpMSwgLlxdKlxcKSIKICsKLSsgICAgICAvKiBXZSBtdXN0IGdldCBjYXVnaHQgaGVyZSAo YWdhaW5zdCBhIGZhbHNlIHdhdGNocG9pbnQgcmVtb3ZhbCkuICAqLworK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ5LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZhcnktZmlsbGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ5IiAidHlwZSA9IHJl YWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDEwLDEwXFwpIgorK2dkYl90ZXN0ICJwIHZhcnkoMSwg MSkiICJcXCRcWzAtOVxdKiA9IDgiCisrZ2RiX3Rlc3QgInAgdmFyeSgyLCAyKSIgIlxcJFxbMC05 XF0qID0gOSIKKytnZGJfdGVzdCAicCB2YXJ5KDEsIDMpIiAiXFwkXFswLTlcXSogPSAxMCIKKysj ICQxID0gKCggKCAzLCAzLCAzLCAzLCAzLCAzKSAoIDMsIDMsIDMsIDMsIDMsIDMpIC0tLSAsIDMp ICkgKCAoIDMsIDMsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxbMC05 XF0qID0gXFwoXFsoKTMsIC5cXSpcXCkiCiArCi0rICAgICAgbWFya2VyICgpOwotKyAgICB9Cisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnctYWxtb3N0ZmlsbGVkIl0K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3RmaWxsZWQiCisrZ2RiX3Rl c3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNSw0LDNc XCkiCisrZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05XF0qID0gMSIKKysjICQx ID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUsIDUpIC0tLSAsIDUpICkg KCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxbMC05XF0q ID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwpIiAicCB2YXJ3IGZpbGxl ZCIKKysjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4gY29tcGlsZXJzIG1h eSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKKysjIG91dGVyIGZ1bmN0aW9uIG9ubHkgb24gdGhl IGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgorKyMgV2UgbmVlZCBib3RoIHZhcmlhbnRzIGFz IGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGlsbCBiZQorKyMgZXhl Y3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcuCisrZ2RiX3Rlc3Qg ImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28gXFwoeCwgelxcKDI6Niwg NDo3LCA2OjhcXClcXCkpIgorK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAiXFwkXFswLTlcXSogPSAz IgorK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2IgorK2dkYl90ZXN0ICJw IHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgorK2dkYl90ZXN0ICJwIHooNCw0LDYpIiAiXFwk XFswLTlcXSogPSAxIgogKwotKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNSMSwgJm9sZGFjdCwgTlVM TCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInZhcnotYWxtb3N0ZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFyei1hbG1vc3RmaWxsZWQiCisrIyBHQ0MgdXNlcyB0aGUgcG9pbnRlciB0eXBlIGhlcmUsIElu dGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggZG9lcyBub3QuCisrZ2RiX3Rlc3QgInB0eXBl IHZhcnoiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBc XChcXCpcXClcXCk/IgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBoYXMgYSBi dWcgaGVyZSAtICgyOjExLDc6NykKKysjIGFzIGl0IHByb2R1Y2VzIERXX0FUX2xvd2VyX2JvdW5k ID09IERXX0FUX3VwcGVyX2JvdW5kID09IDcuCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnQiICJ0eXBl ID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCgyOjExLDc6XFwq XFwpXFwpPyIKKytnZGJfdGVzdCAicCB2YXJ6IiAiXFwkXFswLTlcXSogPSBcXChcXCkiCisrZ2Ri X3Rlc3QgInAgdmFydCIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgorK2dkYl90ZXN0ICJwIHZhcnoo MykiICJcXCRcWzAtOVxdKiA9IDQiCisrIyBtYXBzIHRvIGZvbzo6dmFyeSgxLDEpCisrZ2RiX3Rl c3QgInAgdmFydCgyLDcpIiAiXFwkXFswLTlcXSogPSA4IgorKyMgbWFwcyB0byBmb286OnZhcnko MiwyKQorK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0gOSIKKysjIG1hcHMg dG8gZm9vOjp2YXJ5KDEsMykKKytnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJcXCRcWzAtOVxdKiA9 IDEwIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwCiBuZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uYmZkZDg5ZgoraW5kZXggMDAwMDAwMC4uMGY0MzU2NAogLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZv cmstbXQuYwotQEAgLTAsMCArMSwxNzQgQEAKLSsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBo dy13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KLSsKLSsgICBDb3B5 cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZp bGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLmY5MAorQEAgLTAsMCArMSw5OCBAQAorKyEgQ29weXJpZ2h0IDIwMDcgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZp bGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEpl bGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNh c2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotKyNp bmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy93 YWl0Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNs dWRlIDxwdGhyZWFkLmg+Cisrc3Vicm91dGluZSBiYXoKKysgIHJlYWwsIHRhcmdldCwgYWxsb2Nh dGFibGUgOjogdmFyeCAoOiwgOiwgOikKKysgIHJlYWwsIHBvaW50ZXIgOjogdmFydiAoOiwgOiwg OikKKysgIHJlYWwsIHRhcmdldCA6OiB2YXJ1ICgxLCAyLCAzKQorKyAgbG9naWNhbCA6OiBsCisr ICBhbGxvY2F0ZSAodmFyeCAoMTo2LCA1OjE1LCAxNzoyOCkpICAgICAgICAgICAgISB2YXJ4LWlu aXQKKysgIGwgPSBhbGxvY2F0ZWQgKHZhcngpCisrICB2YXJ4KDosIDosIDopID0gNiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWFsbG9jYXRlZAorKyAgdmFyeCgxLCA1LCAxNykg PSA3CisrICB2YXJ4KDIsIDYsIDE4KSA9IDgKKysgIHZhcngoNiwgMTUsIDI4KSA9IDkKKysgIHZh cnYgPT4gdmFyeCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcngtZmlsbGVk CisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKysgIHZhcnYoMywgNywgMTkpID0gMTAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhIHZhcnYtYXNzb2NpYXRlZAorKyAgdmFydiA9PiBudWxsICgp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydi1maWxsZWQKKysgIGwgPSBhc3Nv Y2lhdGVkICh2YXJ2KQorKyAgZGVhbGxvY2F0ZSAodmFyeCkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICEgdmFydi1kZWFzc29jaWF0ZWQKKysgIGwgPSBhbGxvY2F0ZWQgKHZhcngpCisrICB2 YXJ1KDosIDosIDopID0gMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWRlYWxs b2NhdGVkCisrICBhbGxvY2F0ZSAodmFydiAoMTo2LCA1OjE1LCAxNzoyOCkpCisrICBsID0gYXNz b2NpYXRlZCAodmFydikKKysgIHZhcnYoOiwgOiwgOikgPSA2CisrICB2YXJ2KDEsIDUsIDE3KSA9 IDcKKysgIHZhcnYoMiwgNiwgMTgpID0gOAorKyAgdmFydig2LCAxNSwgMjgpID0gOQorKyAgZGVh bGxvY2F0ZSAodmFydikKKysgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQorKyAgdmFydiA9PiB2YXJ1 CisrICB2YXJ2KDEsIDEsIDEpID0gNgorKyAgdmFydigxLCAyLCAzKSA9IDcKKysgIGwgPSBhc3Nv Y2lhdGVkICh2YXJ2KQorK2VuZCBzdWJyb3V0aW5lIGJhegorK3N1YnJvdXRpbmUgZm9vICh2YXJ5 LCB2YXJ3KQorKyAgcmVhbCA6OiB2YXJ5ICg6LCA6KQorKyAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6 KQorKyAgdmFyeSg6LCA6KSA9IDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFy eS1wYXNzZWQKKysgIHZhcnkoMSwgMSkgPSA4CisrICB2YXJ5KDIsIDIpID0gOQorKyAgdmFyeSgx LCAzKSA9IDEwCisrICB2YXJ3KDosIDosIDopID0gNSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgISB2YXJ5LWZpbGxlZAorKyAgdmFydygxLCAxLCAxKSA9IDYKKysgIHZhcncoMiwgMiwgMikg PSA3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnctYWxtb3N0ZmlsbGVkCisrZW5k IHN1YnJvdXRpbmUgZm9vCisrc3Vicm91dGluZSBiYXIgKHZhcnosIHZhcnQpCisrICByZWFsIDo6 IHZhcnogKCopCisrICByZWFsIDo6IHZhcnQgKDI6MTEsIDc6KikKKysgIHZhcnooMTozKSA9IDQK KysgIHZhcnooMikgPSA1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnot YWxtb3N0ZmlsbGVkCisrICB2YXJ0KDIsNykgPSB2YXJ0KDIsNykKKytlbmQgc3Vicm91dGluZSBi YXIKKytwcm9ncmFtIHRlc3QKKysgIGludGVyZmFjZQorKyAgICBzdWJyb3V0aW5lIGZvbyAodmFy eSwgdmFydykKKysgICAgcmVhbCA6OiB2YXJ5ICg6LCA6KQorKyAgICByZWFsIDo6IHZhcncgKDos IDosIDopCisrICAgIGVuZCBzdWJyb3V0aW5lCisrICBlbmQgaW50ZXJmYWNlCisrICBpbnRlcmZh Y2UKKysgICAgc3Vicm91dGluZSBiYXIgKHZhcnosIHZhcnQpCisrICAgIHJlYWwgOjogdmFyeiAo KikKKysgICAgcmVhbCA6OiB2YXJ0ICgyOjExLCA3OiopCisrICAgIGVuZCBzdWJyb3V0aW5lCisr ICBlbmQgaW50ZXJmYWNlCisrICByZWFsIDo6IHggKDEwLCAxMCksIHkgKDUpLCB6KDgsIDgsIDgp CisrICB4KDosOikgPSAxCisrICB5KDopID0gMgorKyAgeig6LDosOikgPSAzCisrICBjYWxsIGJh egorKyAgY2FsbCBmb28gKHgsIHooMjo2LCA0OjcsIDY6OCkpCisrICBjYWxsIGJhciAoeSwgeCkK KysgIGlmICh4ICgxLCAxKSAubmUuIDggLm9yLiB4ICgyLCAyKSAubmUuIDkgLm9yLiB4ICgxLCAy KSAubmUuIDQpIGNhbGwgYWJvcnQKKysgIGlmICh4ICgxLCAzKSAubmUuIDEwKSBjYWxsIGFib3J0 CisrICBpZiAoeiAoMiwgNCwgNikgLm5lLiA2IC5vci4geiAoMywgNSwgNykgLm5lLiA3IC5vci4g eiAoMiwgNCwgNykgLm5lLiA1KSBjYWxsIGFib3J0CisrICBpZiAoYW55ICh5IC5uZS4gKC80LCA1 LCA0LCAyLCAyLykpKSBjYWxsIGFib3J0CisrICBjYWxsIGZvbyAodHJhbnNwb3NlICh4KSwgeikK KysgIGlmICh4ICgxLCAxKSAubmUuIDggLm9yLiB4ICgyLCAyKSAubmUuIDkgLm9yLiB4ICgxLCAy KSAubmUuIDQpIGNhbGwgYWJvcnQKKysgIGlmICh4ICgzLCAxKSAubmUuIDEwKSBjYWxsIGFib3J0 CisrZW5kCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCituZXcgZmlsZSBtb2RlIDEw MDY0NAoraW5kZXggMDAwMDAwMC4uMzlkZTJjNAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCitAQCAtMCwwICsxLDU5IEBACisrIyBDb3B5 cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsjaW5jbHVkZSA8 YXNtL3VuaXN0ZC5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZGVmaW5lIGdldHRpZCgpIHN5 c2NhbGwgKF9fTlJfZ2V0dGlkKQorKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjIAorKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjIAorKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw NywgVVNBLiAgCiArCi0rI2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay5oIgorKyMgVGhpcyBmaWxl IHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t Pi4KICsKLSsvKiBOb24tYXRvbWljIGB2YXIrKycgc2hvdWxkIG5vdCBodXJ0IGFzIHdlIHN5bmNo cm9uaXplIHRoZSB0aHJlYWRzIGJ5IHRoZSBTVEVQCi0rICAgdmFyaWFibGUuICBIaXQtY29tbWVu dHMgbmVlZCB0byBiZSBkdXBsaWNpdGUgdGhlcmUgdG8gY2F0Y2ggYm90aCBhdC1zdG9wcwotKyAg IGFuZCBiZWhpbmQtc3RvcHMsIGRlcGVuZGluZyBvbiB0aGUgdGFyZ2V0LiAgKi8KKysjIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgSXQgY29udGFpbnMgdGVzdHMgZm9y IEZvcnRyYW4KKysjIHN0cmluZ3Mgd2l0aCBkeW5hbWljIGxlbmd0aC4KICsKLSt2b2xhdGlsZSBp bnQgdmFyOworK3NldCB0ZXN0ZmlsZSAic3RyaW5nIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmY5MAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICsKLSt2 b2lkCi0rbWFya2VyICh2b2lkKQotK3sKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBx dWlldH1dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Zp bGV9IgorKyAgICByZXR1cm4gLTEKICt9CiArCi0rc3RhdGljIHZvaWQKLStlbXB0eSAodm9pZCkK LSt7Ci0rfQorK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotK3N0YXRpYyB2b2lkCi0rbWFy a19leGl0ICh2b2lkKQotK3sKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJv ciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQogK30K ICsKLStwdGhyZWFkX3QgdGhyZWFkOwotK3ZvbGF0aWxlIGludCBzdGVwOwotKwotK3N0YXRpYyB2 b2lkICoKLStzdGFydCAodm9pZCAqYXJnKQotK3sKLSsgIGludCBpOwotKwotKyAgaWYgKHN0ZXAg Pj0gMykKLSsgICAgZ290byBzdGVwXzM7Ci0rCi0rICB3aGlsZSAoc3RlcCAhPSAxKQotKyAgICB7 Ci0rICAgICAgaSA9IHB0aHJlYWRfeWllbGQgKCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwot KyAgICB9Ci0rCi0rICB2YXIrKzsJLyogdmFsaWRpdHktdGhyZWFkLUIgKi8KLSsgIGVtcHR5ICgp OwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLwotKyAgc3RlcCA9IDI7Ci0rICB3aGlsZSAoc3RlcCAh PSAzKQotKyAgICB7Ci0rICAgICAgaWYgKHN0ZXAgPT0gOTkpCi0rCWdvdG8gc3RlcF85OTsKLSsK LSsgICAgICBpID0gcHRocmVhZF95aWVsZCAoKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0r ICAgIH0KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyLWluaXQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXItaW5pdCIKKytnZGJfdGVzdCAicHR5cGUg YyIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD0xXFwpfFxcKjEpIgorK2dkYl90ZXN0ICJwdHlw ZSBkIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPThcXCl8XFwqOCkiCisrZ2RiX3Rlc3QgInB0 eXBlIGUiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSIKKytnZGJfdGVzdCAi cHR5cGUgZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIFxcKDcsODoxMFxc KSIKKytnZGJfdGVzdCAicHR5cGUgKmUiICJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBu b24tcG9pbnRlciB2YWx1ZS4iCisrZ2RiX3Rlc3QgInB0eXBlICpmIiAidHlwZSA9IGNoYXJhY3Rl cihcXChraW5kPTRcXCl8XFwqNCkgXFwoN1xcKSIKKytnZGJfdGVzdCAicCBjIiAiXFwkXFswLTlc XSogPSAnYyciCisrZ2RiX3Rlc3QgInAgZCIgIlxcJFxbMC05XF0qID0gJ2QgICAgICAgJyIKKytn ZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZyAgICciCisrZ2RiX3Rlc3QgInAgZiIgIlxc JFxbMC05XF0qID0gXFwoXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAn LCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAn aCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAg ICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwpIgorK2dkYl90ZXN0ICJwICplIiAiQXR0 ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIgorK2dkYl90ZXN0 ICJwICpmIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUu IgogKwotK3N0ZXBfMzoKLSsgIGlmIChzdGVwID49IDUpCi0rICAgIGdvdG8gc3RlcF81OworK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXItZmluaXNoIl0KKytnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidmFyLWZpbmlzaCIKKytnZGJfdGVzdCAicCBlIiAiXFwkXFsw LTlcXSogPSAnZSAgICciICJwIGUgcmUtc2V0IgorK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxd KiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAn LCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAn ZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAg ICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIgInAgKmYgcmUtc2V0IgorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vc3RyaW5nLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjIy NmRjNWQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmY5MAorQEAgLTAsMCArMSwzNyBAQAorKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisr ISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9y IGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotKyAgdmFyKys7 CS8qIGFmdGVyLWZvcmsxLUIgKi8KLSsgIGVtcHR5ICgpOwkvKiBhZnRlci1mb3JrMS1CICovCi0r ICBzdGVwID0gNDsKLSsgIHdoaWxlIChzdGVwICE9IDUpCi0rICAgIHsKLSsgICAgICBpZiAoc3Rl cCA9PSA5OSkKLSsJZ290byBzdGVwXzk5OworK3N1YnJvdXRpbmUgZm9vIChlLCBmKQorKyAgY2hh cmFjdGVyIChsZW49MSkgOjogYworKyAgY2hhcmFjdGVyIChsZW49OCkgOjogZAorKyAgY2hhcmFj dGVyIChsZW49KikgOjogZQorKyAgY2hhcmFjdGVyIChsZW49KikgOjogZiAoMTo3LCA4OjEwKQor KyAgYyA9ICdjJworKyAgZCA9ICdkJworKyAgZSA9ICdlJyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICEgdmFyLWluaXQKKysgIGYgPSAnZicKKysgIGYoMSw5KSA9ICdmMicK KysgIGMgPSAnYycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhci1m aW5pc2gKKytlbmQgc3Vicm91dGluZSBmb28KKysgIGNoYXJhY3RlciAobGVuPTQpIDo6IGcsIGgg KDE6NywgODoxMCkKKysgIGcgPSAnZycKKysgIGggPSAnaCcKKysgIGNhbGwgZm9vIChnLCBoKQor K2VuZAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jODE5ZTIzCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAorQEAgLTAsMCArMSw2MCBAQAorKyMg Q29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rICAgICAg aSA9IHB0aHJlYWRfeWllbGQgKCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgICB9Cisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK3N0ZXBfNToKLSsgIHZhcisrOwkvKiBh ZnRlci1mb3JrMi1CICovCi0rICBlbXB0eSAoKTsJLyogYWZ0ZXItZm9yazItQiAqLwotKyAgcmV0 dXJuICh2b2lkICopIDVVTDsKKytpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4g LTEgfQogKwotK3N0ZXBfOTk6Ci0rICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFn YWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLwotKyAgdmFyKys7Ci0rICBtYXJrZXIg KCk7Ci0rICByZXR1cm4gKHZvaWQgKikgOTlVTDsKKytzZXQgdGVzdGZpbGUgInN1YnJhbmdlIgor K3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcg JHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY5MH1dIH0gewor KyAgICByZXR1cm4gLTEKICt9CiArCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBpbnQgaTsK LSsgIHZvaWQgKnRocmVhZF9yZXN1bHQ7Ci0rCi0rICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7Ci0r ICBwcmludGYgKCJtYWluOiAlZFxuIiwgKGludCkgZ2V0dGlkICgpKTsKLSsKLSsgIC8qIEdlbmVy YWwgaGFyZHdhcmUgYnJlYWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIHZhbGlkaXR5LiAgKi8KLSsg IG1hcmtlciAoKTsKLSsgIHZhcisrOwkvKiB2YWxpZGl0eS1maXJzdCAqLwotKyAgZW1wdHkgKCk7 CS8qIHZhbGlkaXR5LWZpcnN0ICovCi0rCi0rICBpID0gcHRocmVhZF9jcmVhdGUgKCZ0aHJlYWQs IE5VTEwsIHN0YXJ0LCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIHZhcisrOwkv KiB2YWxpZGl0eS10aHJlYWQtQSAqLwotKyAgZW1wdHkgKCk7CS8qIHZhbGlkaXR5LXRocmVhZC1B ICovCi0rICBzdGVwID0gMTsKLSsgIHdoaWxlIChzdGVwICE9IDIpCi0rICAgIHsKLSsgICAgICBp ID0gcHRocmVhZF95aWVsZCAoKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0rICAgIH0KLSsK LSsgIC8qIEhhcmR3YXJlIHdhdGNocG9pbnRzIGdvdCBkaXNhcm1lZCBoZXJlLiAgKi8KLSsgIGZv cmtvZmYgKDEpOworK2lmICFbcnVudG8gTUFJTl9fXSB7CisrICAgIHBlcnJvciAiQ291bGRuJ3Qg cnVuIHRvIE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CiArCi0rICB2YXIrKzsJLyogYWZ0ZXIt Zm9yazEtQSAqLwotKyAgZW1wdHkgKCk7CS8qIGFmdGVyLWZvcmsxLUEgKi8KLSsgIHN0ZXAgPSAz OwotKyNpZmRlZiBGT0xMT1dfQ0hJTEQKLSsgIC8qIFNwYXduIG5ldyB0aHJlYWQgYXMgaXQgd2Fz IGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLwotKyAgaSA9IHB0aHJlYWRfY3JlYXRl ICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rI2Vu ZGlmCi0rICB3aGlsZSAoc3RlcCAhPSA0KQotKyAgICB7Ci0rICAgICAgaSA9IHB0aHJlYWRfeWll bGQgKCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgICB9CisrIyBEZXBlbmRpbmcgb24g dGhlIGNvbXBpbGVyIHZlcnNpb24gYmVpbmcgdXNlZCwgdGhlIG5hbWUgb2YgdGhlIDQtYnl0ZSBp bnRlZ2VyCisrIyBhbmQgcmVhbCB0eXBlcyBjYW4gYmUgcHJpbnRlZCBkaWZmZXJlbnRseS4gIEZv ciBpbnN0YW5jZSwgZ2ZvcnRyYW4tNC4xIHVzZXMKKysjICJpbnQ0IiB3aGVyZWFzIGdmb3J0cmFu LTQuMyB1c2VzICJpbnQoa2luZD00KSIuCisrc2V0IGludDQgIihpbnQ0fGludGVnZXJcXChraW5k PTRcXCkpIgogKwotKyAgLyogQSBzYW5pdHkgY2hlY2sgZm9yIGRvdWJsZSBoYXJkd2FyZSB3YXRj aHBvaW50cyByZW1vdmFsLiAgKi8KLSsgIGZvcmtvZmYgKDIpOworK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1zdGF0aWMiXQorK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJicmVhay1zdGF0aWMiICIuKmJyZWFrLXN0YXRpYy4qIgogKwotKyAgdmFyKys7CS8q IGFmdGVyLWZvcmsyLUEgKi8KLSsgIGVtcHR5ICgpOwkvKiBhZnRlci1mb3JrMi1BICovCi0rICBz dGVwID0gNTsKLSsjaWZkZWYgRk9MTE9XX0NISUxECi0rICAvKiBTcGF3biBuZXcgdGhyZWFkIGFz IGl0IHdhcyBkZWxldGVkIGluIHRoZSBjaGlsZCBvZiBGT1JLLiAgKi8KLSsgIGkgPSBwdGhyZWFk X2NyZWF0ZSAoJnRocmVhZCwgTlVMTCwgc3RhcnQsIE5VTEwpOwotKyAgYXNzZXJ0IChpID09IDAp OwotKyNlbmRpZgorK2ZvcmVhY2ggdmFyIHthIGFsbG9jIHB0cn0geworKyAgICBnbG9iYWwgcGZf cHJlZml4CisrICAgIHNldCBvbGRfcHJlZml4ICRwZl9wcmVmaXgKKysgICAgbGFwcGVuZCBwZl9w cmVmaXggIiR2YXI6IgogKwotKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkLCAmdGhyZWFkX3Jl c3VsdCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0g KHZvaWQgKikgNVVMKTsKKysgICAgZ2RiX3Rlc3QgInAgJHZhciAoMiwgMjozKSIgeyA9IFwoMjIs IDMyXCl9CisrICAgIGdkYl90ZXN0ICJwICR2YXIgKDI6MywgMykiIHsgPSBcKDMyLCAzM1wpfQor KyAgICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsgPSBcKDIxLCAzMVwpfQorKyAgICBnZGJf dGVzdCAicCAkdmFyICgyLCA6MikiIHsgPSBcKDEyLCAyMlwpfQorKyAgICBnZGJfdGVzdCAicCAk dmFyICgzLCAyOjIpIiB7ID0gXCgyM1wpfQorKyAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoMywg MjoyKSIgIiA9ICRpbnQ0IFxcKDI6MlxcKSIKKysgICAgZ2RiX3Rlc3QgInAgJHZhciAoNCwgOiki IHsgPSBcKDE0LCAyNCwgMzRcKX0KKysgICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwgOikiIHsgPSBc KFwoICoxMSwgMTIsIDEzLCAxNFwpIFwoICoyMSwgMjIsIDIzLCAyNFwpIFwoICozMSwgMzIsIDMz LCAzNFwpICpcKX0KKysgICAgZ2RiX3Rlc3QgInB0eXBlICR2YXIgKDosIDopIiAiID0gJGludDQg XFwoNCwzXFwpIgorKyAgICBnZGJfdGVzdCAicCAkdmFyICg6KSIgIldyb25nIG51bWJlciBvZiBz dWJzY3JpcHRzIgorKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6LCA6KSIgIldyb25nIG51bWJl ciBvZiBzdWJzY3JpcHRzIgogKwotKyAgbWFya19leGl0ICgpOwotKyAgcmV0dXJuIDA7CisrICAg IHNldCBwZl9wcmVmaXggJG9sZF9wcmVmaXgKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstcGFyZW50LmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1wYXJlbnQuYworKworK2dkYl90ZXN0X25vX291dHB1 dCB7c2V0ICRhPWF9CisrZGVsZXRlX2JyZWFrcG9pbnRzCisrZ2RiX3VubG9hZAorK2dkYl90ZXN0 IHtwICRhICgzLCAyOjIpfSB7ID0gXCgyM1wpfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3VicmFuZ2UuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJy YW5nZS5mOTAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45YmJmNDM4Citp bmRleCAwMDAwMDAwLi40NzQ3ZWE5CiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1wYXJlbnQuYwotQEAgLTAsMCArMSw3NCBAQAot Ky8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1v ZmYgb2YgYSBwcm9jZXNzLgotKwotKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0 ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ bGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0r Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpbmNsdWRlIDxz eXMvdHlwZXMuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgot KyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgotKwotKyNpbmNsdWRl ICJ3YXRjaHBvaW50LWZvcmsuaCIKLSsKLSt2b2lkCi0rZm9ya29mZiAoaW50IG5yKQotK3sKLSsg IHBpZF90IGNoaWxkLCBwaWRfZ290OwotKyAgaW50IGV4aXRfY29kZSA9IDQyICsgbnI7Ci0rICBp bnQgc3RhdHVzLCBpOworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5m OTAKK0BAIC0wLDAgKzEsMjggQEAKKyshIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrISAKKyshIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrISAKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsg IGNoaWxkID0gZm9yayAoKTsKLSsgIHN3aXRjaCAoY2hpbGQpCi0rICAgIHsKLSsgICAgY2FzZSAt MToKLSsgICAgICBhc3NlcnQgKDApOwotKyAgICBjYXNlIDA6Ci0rICAgICAgcHJpbnRmICgiY2hp bGQlZDogJWRcbiIsIG5yLCAoaW50KSBnZXRwaWQgKCkpOwotKyAgICAgIC8qIERlbGF5IHRvIGdl dCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVzc2FnZSBwcmludGVkIHdpdGhv dXQKLSsJIGEgcmFjZSBicmVha2luZyBleHBlY3QgYnkgaXRzIGVuZGxlc3Mgd2FpdCBvbiBgJGdk Yl9wcm9tcHQkJzoKLSsJIEJyZWFrcG9pbnQgMywgbWFya2VyICgpIGF0IC4uLy4uLy4uL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmM6MzMKLSsJIDMzICAgICAgfQot KwkgKGdkYikgcGFyZW50MjogMTQyMjMgICovCi0rICAgICAgaSA9IHNsZWVwICgxKTsKLSsgICAg ICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICAgICAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBo ZXJlIChhZ2FpbnN0IGEgZm9yZ290dGVuIGJyZWFrcG9pbnQpLiAgKi8KLSsgICAgICB2YXIrKzsK LSsgICAgICBtYXJrZXIgKCk7Ci0rCi0rICAgICAgX2V4aXQgKGV4aXRfY29kZSk7Ci0rICAgIGRl ZmF1bHQ6Ci0rICAgICAgcHJpbnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkgY2hpbGQp OwotKyAgICAgIC8qIERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQl ZCIgbWVzc2FnZSBwcmludGVkLCBzZWUKLSsJIGFib3ZlLiAgKi8KLSsgICAgICBpID0gc2xlZXAg KDEpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgICAgICBwaWRfZ290ID0gd2FpdCAo JnN0YXR1cyk7Ci0rICAgICAgYXNzZXJ0IChwaWRfZ290ID09IGNoaWxkKTsKLSsgICAgICBhc3Nl cnQgKFdJRkVYSVRFRCAoc3RhdHVzKSk7Ci0rICAgICAgYXNzZXJ0IChXRVhJVFNUQVRVUyAoc3Rh dHVzKSA9PSBleGl0X2NvZGUpOwotKwotKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJl IChhZ2FpbnN0IGEgZmFsc2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCi0rICAgICAgbWFya2Vy ICgpOwotKyAgICB9Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLXN0LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9p bnQtZm9yay1zdC5jCisrcHJvZ3JhbSB0ZXN0CisrICBpbnRlZ2VyLCB0YXJnZXQgOjogYSAoNCwg MykKKysgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGFsbG9jICg6LCA6KQorKyAgaW50ZWdlciwg cG9pbnRlciA6OiBwdHIgKDosIDopCisrICBkbyAxIGkgPSAxLCA0CisrICBkbyAxIGogPSAxLCAz CisrICAgIGEgKGksIGopID0gaiAqIDEwICsgaQorKzEgY29udGludWUKKysgIGFsbG9jYXRlIChh bGxvYyAoNCwgMykpCisrICBhbGxvYyA9IGEKKysgIHB0ciA9PiBhCisrICB3cml0ZSAoKiwqKSBh ICAgICAgICAgICAgICAgICAhIGJyZWFrLXN0YXRpYworK2VuZAorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2Vs ZnRlc3QuZXhwCitpbmRleCA3NjQ1Y2FmLi5mNGY5YzFmIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3Nl bGZ0ZXN0LmV4cAorQEAgLTkyLDYgKzkyLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9 IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRp b24iCisgCQlzZXQgY29tbWFuZCAic3RlcCIKKyAJICAgIH0KKysJICAgIC1yZSAiLipweXRob25f c2NyaXB0ID0gMC4qJGdkYl9wcm9tcHQgJCIgeworKwkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92 ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKKysJCXNldCBjb21tYW5kICJzdGVwIgor KwkgICAgfQorIAkgICAgLXJlICIuKnByZV9zdGF0X2NoYWluID0gbWFrZV9jb21tYW5kX3N0YXRz X2NsZWFudXAuKiRnZGJfcHJvbXB0ICQiIHsKKyAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVy IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwIGFuZCBldmVyeXRoaW5nIGl0IGNhbGxzIgorIAkJ c2V0IGNvbW1hbmQgIm5leHQiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWky LXZhci1zdGFsZS10eXBlLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5 cGUuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE3Y2MwNTgKK2luZGV4 IDAwMDAwMDAuLmViY2VkM2MKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXN0LmMKLUBAIC0wLDAgKzEsNjEgQEAKLSsvKiBUZXN0 IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEg cHJvY2Vzcy4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5jCitA QCAtMCwwICsxLDI2IEBACisrLyogQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgogKwogKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiArICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKICsgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKQEAgLTE0 Nzk0LDU3ICs4MjI3LDI0IEBAIGluZGV4IDAwMDAwMDAuLjE3Y2MwNTgKICsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwogKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0r ICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKwotKyNpbmNsdWRlIDxhc3NlcnQu aD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0rI2luY2x1 ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKwotKyNpbmNsdWRlICJ3YXRjaHBv aW50LWZvcmsuaCIKLSsKLSt2b2xhdGlsZSBpbnQgdmFyOworKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K ICsKLSt2b2lkCi0rbWFya2VyICh2b2lkKQorK2ludAorK21haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikKICt7Ci0rfQorKyAgY2hhciB2bGFbYXJnY107CiArCi0rc3RhdGljIHZvaWQKLSttYXJr X2V4aXQgKHZvaWQpCi0rewotK30KKysgIHZsYVswXSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8KICsK LStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKLSsgIHBy aW50ZiAoIm1haW46ICVkXG4iLCAoaW50KSBnZXRwaWQgKCkpOwotKwotKyAgLyogR2VuZXJhbCBo YXJkd2FyZSBicmVha3BvaW50cyBhbmQgd2F0Y2hwb2ludHMgdmFsaWRpdHkuICAqLwotKyAgbWFy a2VyICgpOwotKyAgdmFyKys7Ci0rICAvKiBIYXJkd2FyZSB3YXRjaHBvaW50cyBnb3QgZGlzYXJt ZWQgaGVyZS4gICovCi0rICBmb3Jrb2ZmICgxKTsKLSsgIC8qIFRoaXMgd2F0Y2hwb2ludCBnb3Qg bG9zdCBiZWZvcmUuICAqLwotKyAgdmFyKys7Ci0rICAvKiBBIHNhbml0eSBjaGVjayBmb3IgZG91 YmxlIGhhcmR3YXJlIHdhdGNocG9pbnRzIHJlbW92YWwuICAqLwotKyAgZm9ya29mZiAoMik7Ci0r ICB2YXIrKzsKLSsKLSsgIG1hcmtfZXhpdCAoKTsKICsgIHJldHVybiAwOwogK30KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjJlMDEzNDQKK2luZGV4IDAwMDAwMDAuLjc0YTEwNGUKIC0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAot QEAgLTAsMCArMSwxNDkgQEAKLSsjIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBl LmV4cAorQEAgLTAsMCArMSw1NyBAQAorKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArIwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0x NDg1OSwxNTUgKzgyNTksNjEgQEAgaW5kZXggMDAwMDAwMC4uMmUwMTM0NAogKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK ICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgogKwotKyMgVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hw b2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCi0rCi0rcHJvYyB0ZXN0IHt0eXBl IHN5bWJvbH0gewotKyAgICBnbG9iYWwgb2JqZGlyIHN1YmRpciBzcmNkaXIgZ2RiX3Byb21wdAot KwotKyAgICBzZXQgdGVzdGZpbGUgd2F0Y2hwb2ludC1mb3JrCi0rCi0rICAgIGdsb2JhbCBwZl9w cmVmaXgKLSsgICAgc2V0IHByZWZpeF90ZXN0ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVuZCBwZl9w cmVmaXggIiR0eXBlOiIKLSsgICAgc2V0IHByZWZpeF9tdCAkcGZfcHJlZml4Ci0rCi0rICAgIHNl dCBzcmNmaWxlX3R5cGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS0ke3R5cGV9LmMK LSsKLSsKLSsgICAgIyBubyB0aHJlYWRzCi0rCi0rICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF9t dAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6IgotKwotKyAgICBzZXQg ZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS0ke3R5cGV9LXN0Ci0rICAgIHNldCBzcmNmaWxlX21haW4g JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1zdC5jCi0rICAgIGlmIHsgW2dkYl9jb21w aWxlICIke3NyY2ZpbGVfbWFpbn0gJHtzcmNmaWxlX3R5cGV9IiAke29iamRpcn0vJHtzdWJkaXJ9 LyR7ZXhlY3V0YWJsZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1E JHN5bWJvbF1dICE9ICIiIH0gewotKwl1bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAKLSsJcmV0dXJu Ci0rICAgIH0KLSsgICAgY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotKwotKyAgICBnZGJfdGVz dCAic2hvdyBkZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNoIHRoZSBjaGls ZCBvZiBhIGZvcmsgaXMgb25cXC4iCi0rICAgIGdkYl90ZXN0X25vX291dHB1dCAic2V0IGZvbGxv dy1mb3JrLW1vZGUgJHR5cGUiCi0rICAgIGdkYl90ZXN0ICJzaG93IGZvbGxvdy1mb3JrLW1vZGUi ICJEZWJ1Z2dlciByZXNwb25zZSB0byBhIHByb2dyYW0gY2FsbCBvZiBmb3JrIG9yIHZmb3JrIGlz IFwiJHR5cGVcIlxcLiIKLSsgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0aGUgYGZvbGxvdy1m b3JrLW1vZGUgY2hpbGQnIHR5cGUuCi0rICAgIGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0 b3Agbm9wcmludCBwYXNzIiAiTm9cWyBcdFxdK05vXFsgXHRcXStZZXMuKiIKLSsKLSsgICAgaWYg IVtydW50b19tYWluXSB7Ci0rCXJldHVybgotKyAgICB9Ci0rCi0rICAgIGdkYl90ZXN0ICJ3YXRj aCB2YXIiICJhdGNocG9pbnQgXFswLTlcXSs6IHZhciIgIlNldCB0aGUgd2F0Y2hwb2ludCIKLSsK LSsgICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3QgYmUgbGVmdCBvdmVyIGlu IHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCi0rICAgIHNldCBoYnJlYWsgImhicmVhayIKLSsgICAg c2V0IHRlc3QgImhicmVhayBtYXJrZXIiCi0rICAgIGdkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0 ZXN0IHsKLSsJLXJlICJIYXJkd2FyZSBhc3Npc3RlZCBicmVha3BvaW50IFxbMC05XF0rIGF0IC4q XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQotKwktcmUgIihObyBo YXJkd2FyZSBicmVha3BvaW50IHN1cHBvcnQgaW4gdGhlIHRhcmdldFxcLnxIYXJkd2FyZSBicmVh a3BvaW50cyB1c2VkIGV4Y2VlZHMgbGltaXRcXC4pXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAg IHBhc3MgJHRlc3QKLSsJICAgIHNldCBoYnJlYWsgImJyZWFrIgotKwkgICAgZ2RiX3Rlc3QgImJy ZWFrIG1hcmtlciIKLSsJfQotKyAgICB9Ci0rCi0rICAgIGdkYl9icmVha3BvaW50ICJtYXJrX2V4 aXQiCisrbG9hZF9saWIgbWktc3VwcG9ydC5leHAKKytzZXQgTUlGTEFHUyAiLWk9bWkyIgogKwot KyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IFxbMC05XF0rLCBt YXJrZXIuKiIgImhhcmR3YXJlIGJyZWFrcG9pbnRzIHdvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250 aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgXFswLTlcXSs6IHZhci4qT2xkIHZhbHVlID0gMC4q TmV3IHZhbHVlID0gMS4qZm9ya29mZiAqXFwoMVxcKS4qIiAid2F0Y2hwb2ludHMgd29yayIKLSsg ICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgInJlYWtwb2ludCBcWzAtOVxdKywgbWFy a2VyLioiICJicmVha3BvaW50IGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAi Y29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIuKk9sZCB2YWx1ZSA9 IDEuKk5ldyB2YWx1ZSA9IDIuKmZvcmtvZmYgKlxcKDJcXCkuKiIgIndhdGNocG9pbnQgYWZ0ZXIg dGhlIGZpcnN0IGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFr cG9pbnQgXFswLTlcXSssIG1hcmtlci4qIiAiYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZv cmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgXFswLTlc XSs6IHZhci4qT2xkIHZhbHVlID0gMi4qTmV3IHZhbHVlID0gMy4qbWFya19leGl0IFxcKFxcKTsi ICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRp bnVlIiAiQ29udGludWluZ1xcLi4qXHJcbkJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtfZXhpdCAu KiIgImZpbmlzaCIKKytnZGJfZXhpdAorK2lmIFttaV9nZGJfc3RhcnRdIHsKKysgICAgY29udGlu dWUKKyt9CiArCisrc2V0IHRlc3RmaWxlICJtaTItdmFyLXN0YWxlLXR5cGUiCisrc2V0IHNyY2Zp bGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KKytpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0uZXhwICR0ZXN0ZmlsZSAk c3JjZmlsZV0gPT0gLTF9IHsKKysgICAgcmV0dXJuIC0xCisrfQogKwotKyAgICAjIHRocmVhZHMK KyttaV9kZWxldGVfYnJlYWtwb2ludHMKKyttaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGly LyRzdWJkaXIKKyttaV9nZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rICAgIHNldCBwZl9wcmVmaXgg JHByZWZpeF9tdAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAibXVsdGl0aHJlYWRlZDoiCisrbWlf Z2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRl cm5hbC1lcnJvciBxdWl0IHllcyJ9IFwKKysgIHtcXmRvbmV9IFwKKysgICJtYWludGVuYW5jZSBz ZXQgaW50ZXJuYWwtZXJyb3IgcXVpdCB5ZXMiCiArCi0rICAgIHNldCBleGVjdXRhYmxlICR7dGVz dGZpbGV9LSR7dHlwZX0tbXQKLSsgICAgc2V0IHNyY2ZpbGVfbWFpbiAke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7dGVzdGZpbGV9LW10LmMKLSsgICAgaWYgeyBbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7 c3JjZmlsZV9tYWlufSAke3NyY2ZpbGVfdHlwZX0iICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVj dXRhYmxlfSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJv bCAtRFRIUkVBRCJdXSAhPSAiIiB9IHsKLSsJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0rCXJl dHVybgotKyAgICB9Ci0rICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKKyttaV9nZGJfdGVz dCB7LWludGVycHJldGVyLWV4ZWMgY29uc29sZSAibWFpbnRlbmFuY2Ugc2V0IGludGVybmFsLWVy cm9yIGNvcmVmaWxlIHllcyJ9IFwKKysgIHtcXmRvbmV9IFwKKysgICJtYWludGVuYW5jZSBzZXQg aW50ZXJuYWwtZXJyb3IgY29yZWZpbGUgeWVzIgogKwotKyAgICBnZGJfdGVzdF9ub19vdXRwdXQg InNldCBmb2xsb3ctZm9yay1tb2RlICR0eXBlIgotKyAgICAjIFRlc3RjYXNlIHVzZXMgaXQgZm9y IHRoZSBgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgdHlwZS4KLSsgICAgZ2RiX3Rlc3QgImhhbmRs ZSBTSUdVU1IxIG5vc3RvcCBub3ByaW50IHBhc3MiICJOb1xbIFx0XF0rTm9cWyBcdFxdK1llcy4q IgorK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KKytzZXQgZnVu YyAibWFpbiIKICsKLSsgICAgaWYgIVtydW50b19tYWluXSB7Ci0rCXJldHVybgotKyAgICB9Cisr bWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgLXQgJHNyY2ZpbGU6JGxpbmUiIFwKKysgICJcXF5k b25lLGJrcHQ9XHtudW1iZXI9XCJcWzAtOVxdK1wiLHR5cGU9XCJicmVha3BvaW50XCIsZGlzcD1c ImRlbFwiLGVuYWJsZWQ9XCJ5XCIsYWRkcj1cIiRoZXhcIixmdW5jPVwiJGZ1bmNcKFxcXCguKlxc XClcKT9cIixmaWxlPVwiLipcIixsaW5lPVwiJGxpbmVcIix0aW1lcz1cIjBcIixvcmlnaW5hbC1s b2NhdGlvbj1cIi4qXCJcfSIgXAorKyAgImJyZWFrcG9pbnQgYXQgJGZ1bmMiCiArCi0rICAgIGdk Yl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNocG9pbnQgXFswLTlcXSs6IHZhciIgIlNldCB0aGUgd2F0 Y2hwb2ludCIKLSsKLSsgICAgIyBJdCBzaG91bGQgbm90IGJlIGxlZnQgb3ZlciBpbiB0aGUgZm9y aygpZWQtb2ZmIGNoaWxkLgotKyAgICBnZGJfdGVzdCAiJGhicmVhayBtYXJrZXIiIHtyZWFrcG9p bnQgWzAtOV0rLip9Ci0rCi0rICAgIGdkYl9icmVha3BvaW50ICJtYXJrX2V4aXQiCi0rCi0rICAg IGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgXFswLTlcXSssIG1hcmtl ci4qIiAiaGFyZHdhcmUgYnJlYWtwb2ludHMgd29yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVl IiBcCi0rCSAgICAgImF0Y2hwb2ludCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAwLipOZXcg dmFsdWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhyZWFkIHdhdGNocG9pbnRzIHdv cmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgXFswLTlc XSs6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4qdmFsaWRpdHktdGhyZWFkLUEu KiIgIm11bHRpdGhyZWFkZWQgd2F0Y2hwb2ludHMgd29yayBhdCBBIgotKyAgICBnZGJfdGVzdCAi Y29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIuKk9sZCB2YWx1ZSA9 IDIuKk5ldyB2YWx1ZSA9IDMuKnZhbGlkaXR5LXRocmVhZC1CLioiICJtdWx0aXRocmVhZGVkIHdh dGNocG9pbnRzIHdvcmsgYXQgQiIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAg InJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyLioiICJicmVha3BvaW50IChBKSBhZnRlciB0aGUg Zmlyc3QgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hwb2lu dCBcWzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSAzLipOZXcgdmFsdWUgPSA0LiphZnRlci1mb3Jr MS1BLioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCi0rICAgIGdkYl90ZXN0 ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgXFswLTlcXSs6IHZhci4qT2xkIHZhbHVl ID0gNC4qTmV3IHZhbHVlID0gNS4qYWZ0ZXItZm9yazEtQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVy IHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVh a3BvaW50IFxbMC05XF0rLCBtYXJrZXIuKiIgImJyZWFrcG9pbnQgKEEpIGFmdGVyIHRoZSBzZWNv bmQgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCBc WzAtOVxdKzogdmFyLipPbGQgdmFsdWUgPSA1LipOZXcgdmFsdWUgPSA2LiphZnRlci1mb3JrMi1B LioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgotKyAgICBnZGJfdGVzdCAi Y29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IFxbMC05XF0rOiB2YXIuKk9sZCB2YWx1ZSA9 IDYuKk5ldyB2YWx1ZSA9IDcuKmFmdGVyLWZvcmsyLUIuKiIgIndhdGNocG9pbnQgQiBhZnRlciB0 aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIkNvbnRpbnVpbmdcXC4u KlxyXG5CcmVha3BvaW50IFxbMC05XF0rLCBtYXJrX2V4aXQgLioiICJmaW5pc2giCi0rCi0rCi0r ICAgICMgY2xlYW51cAotKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfdGVzdAorK2lmIHsgW21p X3J1bl9jbWRdIDwgMCB9IHsKKysgICAgcmV0dXJuIC0xCiArfQorK21pX2V4cGVjdF9zdG9wICJi cmVha3BvaW50LWhpdCIgJGZ1bmMgIi4qIiAiLioiICJcWzAtOVxdKyIgeyAiIiAiZGlzcD1cImRl bFwiIiB9ICJzdG9wIGFmdGVyIGluaXRpYWxpemluZyB2bGEiCiArCi0rdGVzdCBwYXJlbnQgRk9M TE9XX1BBUkVOVAorK21pX2NyZWF0ZV92YXJvYmogInZsYSIgInZsYSIgImNyZWF0ZSBsb2NhbCB2 YXJpYWJsZSB2bGEiCiArCi0rIyBPbmx5IEdOVS9MaW51eCBpcyBrbm93biB0byBzdXBwb3J0IGBz ZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcuCi0raWYge1tpc3RhcmdldCAiKi0qLWxpbnV4KiJd ICYmICFbaXNfcmVtb3RlIHRhcmdldF19IHsKLSsgICAgdGVzdCBjaGlsZCBGT0xMT1dfQ0hJTEQK LSt9IGVsc2UgewotKyAgICB1bnRlc3RlZCAiY2hpbGQiCi0rfQotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmggYi9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5oCisrbWlfZ2RiX3Rlc3QgIi12YXItdXBkYXRlICoi ICJcXF5kb25lLGNoYW5nZWxpc3Q9LioiICItdmFyLXVwZGF0ZSAqIgorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwogbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLmNiMTA5ZmEKK2luZGV4IDAwMDAwMDAuLjcyOWY0NTcKIC0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1m b3JrLmgKLUBAIC0wLDAgKzEsMzIgQEAKLSsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13 YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KLSsKLSsgICBDb3B5cmln aHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYworQEAgLTAsMCArMSwyMiBAQAor Ky8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLSsgICBU aGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgogKwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApAQCAtMTUwMTYsMzAgKzgzMjIsMjIgQEAgaW5kZXgg MDAwMDAwMC4uY2IxMDlmYQogKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCiArCiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4s IDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4gICovCi0rCi0rI2lmZGVmIFRIUkVBRAotKyNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0rCi0r ZXh0ZXJuIHZvbGF0aWxlIGludCBzdGVwOwotK2V4dGVybiBwdGhyZWFkX3QgdGhyZWFkOwotKyNl bmRpZiAvKiBUSFJFQUQgKi8KLSsKLStleHRlcm4gdm9sYXRpbGUgaW50IHZhcjsKKysgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCiArCi0rZXh0ZXJuIHZvaWQgbWFya2VyICh2b2lkKTsKLStleHRlcm4gdm9p ZCBmb3Jrb2ZmIChpbnQgbnIpOwotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNl L3N0YXAtdHJhY2UuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYworK2lu dAorK2Z1bmMgKGludCAqYXJyKQorK3sKKysgIHJldHVybiBhcnJbMF07CisrfQorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMgYi9nZGIvdGVz dHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uMjdmMzE3ZQoraW5kZXggMDAwMDAwMC4uMzA5MGU3ZQogLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5jCi1AQCAt MCwwICsxLDcxIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVy LmMKK0BAIC0wLDAgKzEsMjggQEAKKysvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCiArCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTUwNTQsNjkgKzgz NTIsNjQgQEAgaW5kZXggMDAwMDAwMC4uMjdmMzE3ZQogKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwogKwotKyNpZiBVU0VfUFJPQkVTCi0rCi0rI2RlZmluZSBfU0RUX0hBU19TRU1B UEhPUkVTCi0rX19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV91c2VyX3NlbWFwaG9y ZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIucHJv YmVzIikpKTsKLSsjZGVmaW5lIFRFU1QgdGVzdGVfdXNlcl9zZW1hcGhvcmUKLSsKLStfX2V4dGVu c2lvbl9fIHVuc2lnbmVkIHNob3J0IHRlc3RlX3R3b19zZW1hcGhvcmUgX19hdHRyaWJ1dGVfXyAo KHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7Ci0rI2RlZmlu ZSBURVNUMiB0ZXN0ZV90d29fc2VtYXBob3JlCi0rCi0rI2Vsc2UKLSsKLSsjZGVmaW5lIFRFU1Qg MQotKyNkZWZpbmUgVEVTVDIgMQotKwotKyNlbmRpZiAvKiBVU0VfUFJPQkVTICovCisrZXh0ZXJu IGludCBmdW5jIChpbnQgKmFycik7CiArCi0rI2luY2x1ZGUgPHN5cy9zZHQuaD4KKytpbnQKKytt YWluICh2b2lkKQorK3sKKysgIGludCBhcnJbXSA9IHsgNDIgfTsKICsKLSsvKiBXZSBvbmx5IHN1 cHBvcnQgU3lzdGVtVGFwIGFuZCBvbmx5IHRoZSB2MyBmb3JtLiAgKi8KLSsjaWYgX1NEVF9OT1RF X1RZUEUgIT0gMwotKyNlcnJvciAibm90IHVzaW5nIFN5c3RlbVRhcCB2MyBwcm9iZXMiCi0rI2Vu ZGlmCisrICBmdW5jIChhcnIpOwogKwotK3ZvaWQKLSttMSAoaW50IHgpCi0rewotKyAgaWYgKFRF U1QyKQotKyAgICBTVEFQX1BST0JFMSAodGVzdGUsIHR3bywgeCk7CisrICByZXR1cm4gMDsKICt9 CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjJkZTcxOAorLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwCitAQCAt MCwwICsxLDMzIEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKyMK KysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgogKwotK2ludAotK2Yg KGludCB4KQotK3sKLSsgIGlmIChURVNUKQotKyAgICBTVEFQX1BST0JFMSh0ZXN0ZSwgdXNlciwg eCk7Ci0rICByZXR1cm4geCs1OworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgYXJyYXktZnJv bS1yZWdpc3Rlci5leHAgImFycmF5LWZyb20tcmVnaXN0ZXIiICAgICAgXAorKwkJCSAge2FycmF5 LWZyb20tcmVnaXN0ZXIuYyBhcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuY30gXAorKwkJCSAge2Rl YnVnIG9wdGltaXplPS1PMn1dIH0geworKyAgICByZXR1cm4gLTEKICt9CiArCi0rdm9pZAotK25v dGhpbmcgKHZvaWQpCi0rewotKyAgaW50IGEgPSAxICsgMTsKLSsgIHJldHVybjsKKytpZiAhW3J1 bnRvIGZ1bmNdIHRoZW4geworKyAgICByZXR1cm4gLTEKICt9CiArCi0raW50Ci0rbWFpbigpCi0r ewotKyAgZiAoZiAoMjMpKTsKLSsgIG0xICg0Nik7Ci0rICBub3RoaW5nICgpOyAvKiBlbmQtaGVy ZSAqLworK2dkYl90ZXN0ICJwIGFyciIgIlxcJFxbMC05XF0rID0gXFwoaW50IFxcKlxcKSAqMHhc WzAtOWEtZlxdKyIKICsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0 YXAtdHJhY2UuZXhwCisrIyBTZWVuIHJlZ3Jlc3Npb246CisrIyBBZGRyZXNzIHJlcXVlc3RlZCBm b3IgaWRlbnRpZmllciAiYXJyIiB3aGljaCBpcyBpbiByZWdpc3RlciAkcmRpCisrZ2RiX3Rlc3Qg InAgYXJyXFswXF0iICJcXCRcWzAtOVxdKyA9IDQyIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5 cy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMGYxZDdkCitpbmRl eCAwMDAwMDAwLi5jY2M2ZTFlCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi50cmFjZS9zdGFwLXRyYWNlLmV4cAotQEAgLTAsMCArMSwxMjkgQEAKLSsjIENvcHlyaWdodCAy MDExCi0rIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCitAQCAtMCwwICsxLDEwNCBAQAorKyMgQ29weXJp Z2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIwogKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiArIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgpAQCAtMTUxMzAsMTI0ICs4NDIz LDIzNSBAQCBpbmRleCAwMDAwMDAwLi5iMGYxZDdkCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCiArCi0rbG9hZF9saWIgInRyYWNlLXN1cHBvcnQuZXhwIgotKwogK2lmICR0cmFjZWxldmVs IHRoZW4gewotKwlzdHJhY2UgJHRyYWNlbGV2ZWwKKysgICAgc3RyYWNlICR0cmFjZWxldmVsCiAr fQogKwotK3NldCB0ZXN0ZmlsZSAic3RhcC10cmFjZSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jCi0rc2V0IGV4ZWN1dGFibGUgJHRlc3RmaWxlCi0rc2V0IGJpbmZpbGUgJG9iamRpci8kc3Vi ZGlyLyRleGVjdXRhYmxlCisrbG9hZF9saWIgInBhc2NhbC5leHAiCisrCisrc2V0IHRlc3RmaWxl ICJhcnJheXMiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0ucGFzCisrc2V0IGJpbmZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfSRFWEVFWFQKKysKKysjIFRoZXNlIHRlc3RzIG9u bHkgd29yayB3aXRoIGZwYywgdXNpbmcgdGhlIC1ndzMgY29tcGlsZS1vcHRpb24KKytwYXNjYWxf aW5pdAorK2lmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgIT0gMSB9IHsKKysgIHJldHVybiAt MQorK30KKysKKysjIERldGVjdCBpZiB0aGUgZnBjIHZlcnNpb24gaXMgYmVsb3cgMi4zLjAKKytz ZXQgZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgMQorK2lmIHsgKCRmcGN2 ZXJzaW9uX21ham9yIDwgMikgfHwgKCAoJGZwY3ZlcnNpb25fbWFqb3IgPT0gMikgJiYgKCRmcGN2 ZXJzaW9uX21pbm9yIDwgMykpfSAgeworKyAgc2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5 bmFtaWNfYXJyYXlzIDAKKyt9CisrCisrCisraWYge1tnZGJfY29tcGlsZV9wYXNjYWwgIi1ndzMg JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBb bGlzdCBkZWJ1ZyBdXSAhPSAiIiB9IHsKKysgIHJldHVybiAtMQorK30KKysKKytnZGJfZXhpdAor K2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9s b2FkICR7YmluZmlsZX0KKytzZXQgYnBfbG9jYXRpb24xIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJz ZXQgYnJlYWtwb2ludCAxIGhlcmUiXQorK3NldCBicF9sb2NhdGlvbjIgW2dkYl9nZXRfbGluZV9u dW1iZXIgInNldCBicmVha3BvaW50IDIgaGVyZSJdCisrCisrCisraWYgeyBbZ2RiX2JyZWFrcG9p bnQgJHtzcmNmaWxlfToke2JwX2xvY2F0aW9uMX1dIH0geworKyAgICBwYXNzICJzZXR0aW5nIGJy ZWFrcG9pbnQgMSIKKyt9CisraWYgeyBbZ2RiX2JyZWFrcG9pbnQgJHtzcmNmaWxlfToke2JwX2xv Y2F0aW9uMn1dIH0geworKyAgICBwYXNzICJzZXR0aW5nIGJyZWFrcG9pbnQgMiIKKyt9CiArCi0r c2V0IHdzICJcW1xyXG5cdCBcXSsiCi0rc2V0IGNyICJcW1xyXG5cXSsiCisrIyBWZXJpZnkgdGhh dCAic3RhcnQiIGxhbmRzIGluc2lkZSB0aGUgcmlnaHQgcHJvY2VkdXJlLgorK2lmIHsgW2dkYl9z dGFydF9jbWRdIDwgMCB9IHsKKysgICAgdW50ZXN0ZWQgc3RhcnQKKysgICAgcmV0dXJuIC0xCisr fQorKworK2dkYl90ZXN0ICIiICIuKiBhdCAuKiR7c3JjZmlsZX0uKiIgInN0YXJ0IgorKworK2dk Yl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMX0uKiIgIkdvaW5nIHRv IGZpcnN0IGJyZWFrcG9pbnQiCisrCisrZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJJbnQiICIuKiA9 IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0iICJQ cmludCBzdGF0aWMgYXJyYXkgb2YgaW50ZWdlciB0eXBlIgorK2dkYl90ZXN0ICJwcmludCBTdGF0 QXJySW50XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTks IDYwLCA2MVxcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBpbnRlZ2VyIgorKworK2dkYl90ZXN0 ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMn0uKiIgIkdvaW5nIHRvIHNlY29u ZCBicmVha3BvaW50IgorKworK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyQ2hhciIgIi4qID0gJ2Fi Y2RlZmdoaWprbCciICJQcmludCBzdGF0aWMgYXJyYXkgb2YgY2hhciIKKytnZGJfdGVzdCAicHJp bnQgU3RhdDJkQXJySW50IiAiLiogPSBcXHtcXHswLCAxLCAyLCAzLCA0XFx9LCBcXHsxLCAyLCAz LCA0LCA1XFx9LCBcXHsyLCAzLCA0LCA1LCA2XFx9LCBcXHszLCA0LCA1LCA2LCA3XFx9LCBcXHs0 LCA1LCA2LCA3LCA4XFx9LCBcXHs1LCA2LCA3LCA4LCA5XFx9LCBcXHs2LCA3LCA4LCA5LCAxMFxc fSwgXFx7NywgOCwgOSwgMTAsIDExXFx9LCBcXHs4LCA5LCAxMCwgMTEsIDEyXFx9LCBcXHs5LCAx MCwgMTEsIDEyLCAxM1xcfSwgXFx7MTAsIDExLCAxMiwgMTMsIDE0XFx9LCBcXHsxMSwgMTIsIDEz LCAxNCwgMTVcXH1cXH0iICJQcmludCBzdGF0aWMgMi1kaW1lbnNpb25hbCBhcnJheSBvZiBpbnRl Z2VyIgogKwotKyMgT25seSB4ODYgYW5kIHg4Nl82NCB0YXJnZXRzIGFyZSBzdXBwb3J0ZWQgZm9y IG5vdy4KKytpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAw fSB7CisrICBzZXR1cF94ZmFpbCAiKi0qLSoiCisrfQorK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJ bnQiICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwg NjEsIDYyXFx9IiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBpbnRlZ2VyIHR5cGUiCisraWYgeyAk ZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0geworKyAgc2V0dXBf eGZhaWwgIiotKi0qIgorK30KKytnZGJfdGVzdCAicHJpbnQgRHluQXJySW50XyIgIi4qID0gXFx7 NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjJcXH0iICJQ cmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIiCiArCi0raWYgeyAhW2lzdGFyZ2V0ICJ4ODZf NjQtKiJdICYmICFbaXN0YXJnZXQgImk/ODYtKiJdIH0gewotKyAgICBjb250aW51ZQorK2lmIHsg JGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKKysgIHNldHVw X3hmYWlsICIqLSotKiIKICt9CisrZ2RiX3Rlc3QgInByaW50IHMiICIuKiA9ICd0ZXN0JyMwJ3N0 cmluZyciICJQcmludCBzdHJpbmcgY29udGFpbmluZyBudWxsLWNoYXIiCiArCi0rcHJvYyBjb21w aWxlX3N0YXBfYmluIHt7IGFyZyAiIiB9fSB7Ci0rICAgIGdsb2JhbCBzcmNmaWxlCi0rICAgIGds b2JhbCBiaW5maWxlCi0rICAgIGdsb2JhbCBzcmNkaXIKLSsgICAgZ2xvYmFsIHN1YmRpcgorK2lm IHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKKysgIHNl dHVwX3hmYWlsICIqLSotKiIKKyt9CisrZ2RiX3Rlc3QgInByaW50IER5bkFyclN0ciIgIi4qID0g XFx7J2RzdHIwJywgJ2RzdHIxJywgJ2RzdHIyJywgJ2RzdHIzJywgJ2RzdHI0JywgJ2RzdHI1Jywg J2RzdHI2JywgJ2RzdHI3JywgJ2RzdHI4JywgJ2RzdHI5JywgJ2RzdHIxMCcsICdkc3RyMTEnLCAn ZHN0cjEyJ1xcfSIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2Ygc3RyaW5nIgogKwotKyAgICBpZiB7 ICRhcmcgIT0gIiIgfSB7Ci0rCXNldCBhcmcgImFkZGl0aW9uYWxfZmxhZ3M9JGFyZyIKLSsgICAg fQorK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsK KysgIHNldHVwX3hmYWlsICIqLSotKiIKKyt9CisrZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJTdHIi ICIuKiA9IFxceydzdHIwJywgJ3N0cjEnLCAnc3RyMicsICdzdHIzJywgJ3N0cjQnLCAnc3RyNScs ICdzdHI2JywgJ3N0cjcnLCAnc3RyOCcsICdzdHI5JywgJ3N0cjEwJywgJ3N0cjExJywgJ3N0cjEy J1xcfSIgIlByaW50IHN0YXRpYyBhcnJheSBvZiBzdHJpbmciCiArCi0rICAgIGlmIHsgW2dkYl9j b21waWxlICIkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGUiICRiaW5maWxlIFwKLSsJICAgIGV4ZWN1 dGFibGUgW2NvbmNhdCAkYXJnIGRlYnVnIG5vd2FybmluZ3NdXSAhPSAiIiB9IHsKLSsJdW50ZXN0 ZWQgIkNvdWxkIG5vdCBjb21waWxlICR7c3JjZmlsZX0iCi0rCXJldHVybiAtMQotKyAgICB9Cisr aWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0geworKyAg c2V0dXBfeGZhaWwgIiotKi0qIgogK30KKytnZGJfdGVzdCAicHJpbnQgRHluQXJyQ2hhciIgIi4q ID0gJ2FiY2RlZmdoaWprbG0nIiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBjaGFyIgogKwotK3By b2MgcHJlcGFyZV9mb3JfdHJhY2VfdGVzdCB7fSB7Ci0rICAgIGdsb2JhbCBleGVjdXRhYmxlCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMgYi9nZGIvdGVz dHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjI5NTYwMmQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnBhc2NhbC9hcnJheXMucGFzCitAQCAtMCwwICsxLDgyIEBACisreworKyBDb3B5cmlnaHQgMjAw OCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsgICAgY2xlYW5fcmVz dGFydCAkZXhlY3V0YWJsZQorKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwotKyAgICBpZiB7ICFb cnVudG9fbWFpbl0gfSB7Ci0rCXBlcnJvciAiQ291bGQgbm90IHJ1biB0byBgbWFpbicuIgotKwlj b250aW51ZQotKyAgICB9CisrIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rICAgIGdkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJlbmQtaGVyZSJdCisrIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgogK30KICsKLStwcm9jIHJ1bl90cmFjZV9leHBlcmltZW50IHsgdGVzdF9wcm9iZSBtc2cg fSB7Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rCi0rICAgIHNldCB0ZXN0ICJjb2xsZWN0ICRt c2c6IHN0YXJ0IHRyYWNlIGV4cGVyaW1lbnQiCi0rICAgIGdkYl90ZXN0X211bHRpcGxlICJ0c3Rh cnQiICIkdGVzdCIgewotKwktcmUgIl50c3RhcnRcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAg cGFzcyAiJHRlc3QiCi0rCX0KLSsgICAgfQorK3Byb2dyYW0gYXJyYXlzOwogKwotKyAgICBnZGJf dGVzdCAiY29udGludWUiIFwKLSsJICAgICJDb250aW51aW5nLipCcmVha3BvaW50IFxbMC05XF0r LioiIFwKLSsJICAgICJjb2xsZWN0ICRtc2c6IHJ1biB0cmFjZSBleHBlcmltZW50IgotKyAgICBn ZGJfdGVzdCAidHN0b3AiIFwKLSsJICAgICJcW1xyXG5cXSsiIFwKLSsJICAgICJjb2xsZWN0ICRt c2c6IHN0b3AgdHJhY2UgZXhwZXJpbWVudCIKLSsgICAgZ2RiX3Rlc3QgInRmaW5kIHN0YXJ0IiBc Ci0rCSAgICAiIzAgLioiIFwKLSsJICAgICJjb2xsZWN0ICRtc2c6IHRmaW5kIHRlc3QgZnJhbWUi Ci0rfQorK3skbW9kZSBvYmpmcGN9eyRoK30KICsKLStwcm9jIGdkYl9jb2xsZWN0X3Byb2JlX2Fy ZyB7IG1zZyBwcm9iZSB2YWxfYXJnMCB9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsgICAg Z2xvYmFsIGNyCisrdXNlcyBzeXN1dGlsczsKICsKLSsgICAgcHJlcGFyZV9mb3JfdHJhY2VfdGVz dAorK3R5cGUgVFN0YXRBcnJJbnQ9IGFycmF5WzAuLjExXSBvZiBpbnRlZ2VyOworKyAgICAgVER5 bkFyckludD0gYXJyYXkgb2YgaW50ZWdlcjsKKysgICAgIFRTdGF0QXJyU3RyPSBhcnJheVswLi4x Ml0gb2Ygc3RyaW5nOworKyAgICAgVER5bkFyclN0cj0gYXJyYXkgb2Ygc3RyaW5nOworKyAgICAg VER5bkFyckNoYXIgPSBhcnJheSBvZiBjaGFyOworKyAgICAgVFN0YXRBcnJDaGFyID0gYXJyYXkg WzAuLjExXSBvZiBjaGFyOwogKwotKyAgICBnZGJfdGVzdCAidHJhY2UgJHByb2JlIiBcCi0rCSAg ICAiVHJhY2Vwb2ludCBcWzAtOVxdKyBhdCAuKiIgXAotKwkgICAgImNvbGxlY3QgJG1zZzogc2V0 IHRyYWNlcG9pbnQiCi0rICAgIGdkYl90cmFjZV9zZXRhY3Rpb25zICJjb2xsZWN0ICRtc2c6IGRl ZmluZSBhY3Rpb25zIiBcCi0rCSAgICAiIiBcCi0rCSAgICAiY29sbGVjdCBcJF9wcm9iZV9hcmcw IiAiXiQiCisrICAgICBUU3RhdDJkQXJySW50ID0gYXJyYXlbMC4uMTEsMC4uNF0gb2YgaW50ZWdl cjsKICsKLSsgICAgIyBCZWdpbiB0aGUgdGVzdC4KLSsgICAgcnVuX3RyYWNlX2V4cGVyaW1lbnQg JG1zZyAkcHJvYmUKKyt2YXIgU3RhdEFyckludDogVFN0YXRBcnJJbnQ7CisrICAgIFN0YXRBcnJJ bnRfOiBBcnJheVswLi4xMV0gb2YgaW50ZWdlcjsKKysgICAgRHluQXJySW50OiAgVER5bkFycklu dDsKKysgICAgRHluQXJySW50XzogQXJyYXkgb2YgaW50ZWdlcjsKKysgICAgU3RhdEFyclN0cjog VFN0YXRBcnJTdHI7CisrICAgIER5bkFyclN0cjogVER5bkFyclN0cjsKKysgICAgU3RhdEFyckNo YXI6IFRTdGF0QXJyQ2hhcjsKKysgICAgRHluQXJyQ2hhcjogVER5bkFyckNoYXI7CiArCi0rICAg IGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmcwIiBcCi0rCSAgICAiXFwkXFswLTlcXSsgPSAk dmFsX2FyZzAkY3IiIFwKLSsJICAgICJjb2xsZWN0ICRtc2c6IGNvbGxlY3RlZCBwcm9iZSBhcmcw IgotK30KKysgICAgU3RhdDJkQXJySW50OiBUU3RhdDJkQXJySW50OwogKwotK2NvbXBpbGVfc3Rh cF9iaW4gIiIKKysgICAgczogc3RyaW5nOworKwkKKysgICAgaSxqIDogaW50ZWdlcjsKICsKLStj bGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCi0raWYgeyAhW3J1bnRvX21haW5dIH0gewotKyAgICBw ZXJyb3IgIkNvdWxkIG5vdCBydW4gdG8gYG1haW4nLiIKLSsgICAgY29udGludWUKLSt9CisrYmVn aW4KKysgIGZvciBpIDo9IDAgdG8gMTEgZG8KKysgICAgYmVnaW4KKysgICAgU3RhdEFyckludFtp XTo9IGkrNTA7CisrICAgIFN0YXRBcnJJbnRfW2ldOj0gaSs1MDsKKysgICAgU3RhdEFyckNoYXJb aV06PSBjaHIob3JkKCdhJykraSk7CisrICAgIGZvciBqIDo9IDAgdG8gNCBkbworKyAgICAgIFN0 YXQyZEFyckludFtpLGpdOj1pK2o7CisrICAgIGVuZDsKKysgIHdyaXRlbG4oU3RhdEFyckludF9b MF0pOworKyAgd3JpdGVsbihTdGF0QXJySW50WzBdKTsgeyBzZXQgYnJlYWtwb2ludCAxIGhlcmUg fQorKyAgd3JpdGVsbihTdGF0QXJyQ2hhclswXSk7CisrICB3cml0ZWxuKFN0YXQyZEFyckludFsw LDBdKTsKICsKLStpZiB7ICFbZ2RiX3RhcmdldF9zdXBwb3J0c190cmFjZV0gfSB7Ci0rICAgICMg VGVzdCBjYW5ub3QgcnVuIG9uIHRoaXMgdGFyZ2V0LgotKyAgICByZXR1cm4gMTsKLSt9CisrICBz ZXRsZW5ndGgoRHluQXJySW50LDEzKTsKKysgIHNldGxlbmd0aChEeW5BcnJJbnRfLDEzKTsKKysg IHNldGxlbmd0aChEeW5BcnJTdHIsMTMpOworKyAgc2V0bGVuZ3RoKER5bkFyckNoYXIsMTMpOwor KyAgZm9yIGkgOj0gMCB0byAxMiBkbworKyAgICBiZWdpbgorKyAgICBEeW5BcnJJbnRbaV06PSBp KzUwOworKyAgICBEeW5BcnJJbnRfW2ldOj0gaSs1MDsKKysgICAgRHluQXJyQ2hhcltpXTo9IGNo cihvcmQoJ2EnKStpKTsKKysgICAgU3RhdEFyclN0cltpXTo9J3N0cicraW50dG9zdHIoaSk7Cisr ICAgIER5bkFyclN0cltpXTo9J2RzdHInK2ludHRvc3RyKGkpOworKyAgICBlbmQ7CisrICB3cml0 ZWxuKER5bkFyckludF9bMV0pOworKyAgd3JpdGVsbihEeW5BcnJJbnRbMV0pOyAKKysgIHdyaXRl bG4oRHluQXJyU3RyWzFdKTsgCisrICB3cml0ZWxuKFN0YXRBcnJTdHJbMV0pOworKyAgd3JpdGVs bihEeW5BcnJDaGFyWzFdKTsKICsKLStnZGJfY29sbGVjdF9wcm9iZV9hcmcgInByb2JlIGFyZ3Mg d2l0aG91dCBzZW1hcGhvcmUiICItcCB1c2VyIiAiMjMiCi0rZ2RiX2V4aXQKKysgIHMgOj0gJ3Rl c3QnIzAnc3RyaW5nJzsKKysgIHdyaXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQgMiBoZXJlIH0K KytlbmQuCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKK2luZGV4IDgzZmY4ZmUu LmJkZGJmOWYgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUu ZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCitAQCAtNzQs OCArNzQsNiBAQCBnZGJfdGVzdCAicHl0aG9uIHByaW50IGJmcmFtZSA9PSBnZGIubmV3ZXN0X2Zy YW1lKCkiIFRydWUgXAorIAorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAg PT0gZjEiICIgPSBGYWxzZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgorIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjAiICIgPSBUcnVlIiAidGVz dCBlcXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKKy1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwICE9IGYxIiAiID0gVHJ1ZSIgInRlc3QgaW5lcXVhbGl0eSBjb21wYXJpc29u ICh0cnVlKSIKKy1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYwIiAi ID0gRmFsc2UiICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgorIGdkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIgPSBUcnVlIiAidGVz dCBGcmFtZS5pc192YWxpZCIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYw Lm5hbWUgKCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKKyBnZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFNRSIgIiA9IFRydWUi ICJ0ZXN0IEZyYW1lLnR5cGUiCitAQCAtOTAsMyArODgsNSBAQCBnZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hfc3VyZWx5X2RvZXNu dF9leAorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAucmVhZF92YXIgKCdh JykiICIgPSAxIiAidGVzdCBGcmFtZS5yZWFkX3ZhciAtIHN1Y2Nlc3MiCisgCisgZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkgPT0gZjEiICIg PSBUcnVlIiAidGVzdCBnZGIuc2VsZWN0ZWRfZnJhbWUiCiArCi0rY29tcGlsZV9zdGFwX2JpbiAi LURVU0VfUFJPQkVTIgotK2dkYl9jb2xsZWN0X3Byb2JlX2FyZyAicHJvYmUgYXJncyB3aXRoIHNl bWFwaG9yZSIgIi1wIHR3byIgIjQ2IgorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0r PiIgInRlc3QgRnJhbWUuYmxvY2siCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAK K2luZGV4IGM5ZDhjOTcuLjQzMjRkYjAgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktdmFsdWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFs dWUuZXhwCitAQCAtMzYwLDYgKzM2MCwxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVhdGgg e30geworICAgICAicHJpbnQgdmFsdWUncyB0eXBlIgorIH0KKyAKKysjIFJlZ3Jlc3Npb24gdGVz dCBmb3IgYSBjYXN0IGZhaWx1cmUuICBUaGUgYnVnIHdhcyB0aGF0IGlmIHdlIGNhc3QgYQorKyMg dmFsdWUgdG8gaXRzIG93biB0eXBlLCBnZGIgY291bGQgY3Jhc2guICBUaGlzIGhhcHBlbmVkIGJl Y2F1c2Ugd2UKKysjIGNvdWxkIGVuZCB1cCBkb3VibGUtZnJlZWluZyBhIHN0cnVjdCB2YWx1ZS4K Kytwcm9jIHRlc3RfY2FzdF9yZWdyZXNzaW9uIHt9IHsKKysgIGdkYl90ZXN0ICJweXRob24gdiA9 IGdkYi5WYWx1ZSg1KSIgIiIgImNyZWF0ZSB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgorKyAgZ2RiX3Rl c3QgInB5dGhvbiB2ID0gdi5jYXN0KHYudHlwZSkiICIiICJjYXN0IHZhbHVlIGZvciBjYXN0IHRl c3QiCisrICBnZGJfdGVzdCAicHl0aG9uIHByaW50IHYiICI1IiAicHJpbnQgdmFsdWUgZm9yIGNh c3QgdGVzdCIKKyt9CiArCi0rIyBGaW5pc2hlZCEKLStnZGJfdGVzdCAidGZpbmQgbm9uZSIgIi4q IiAiIgorICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpbnZhbGlkIHN1YnNjcmlwdCBvcGVyYXRpb25z LiAgVGhlIGJ1ZyB3YXMgdGhhdAorICMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIHdhcyBub3QgYmVp bmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dpbmcgYQorICMgc3Vic2NyaXB0IG9wZXJhdGlvbiB0byBw cm9jZWVkLgorQEAgLTQ5Niw2ICs1MDUsNyBAQCB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCisgdGVz dF9pbmZlcmlvcl9mdW5jdGlvbl9jYWxsCisgdGVzdF9sYXp5X3N0cmluZ3MKKyB0ZXN0X3ZhbHVl X2FmdGVyX2RlYXRoCisrdGVzdF9jYXN0X3JlZ3Jlc3Npb24KKyAKKyAjIFRlc3QgZWl0aGVyIEMg b3IgQysrIHZhbHVlcy4gCisgdGVzdF9zdWJzY3JpcHRfcmVncmVzc2lvbiAiJHtiaW5maWxlfSIg ImMiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAKLWluZGV4IDAwZmU3MWMuLjVjYTk1NjMgMTAwNjQ0CitpbmRleCAxZGZl NTY0Li4xODZmOWQ3IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogKysr IGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotQEAgLTEzOSw2ICsxMzksMTEgQEAgcHJvYyBn ZGJfdW5sb2FkIHt9IHsKK0BAIC0xNDIsNiArMTQyLDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7 CiAgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2NvbnRpbnVlCiAgCX0KQEAgLTE1Mjk0 LDQ4ICs4Njk4LDExIEBAIGluZGV4IGRkMThkMzcuLmY5NzM0ODUgMTAwNjQ0CiAgICAgIH0KICAg ICAgc2V0IHBhc2NhbF9pbml0X2RvbmUgMQogIH0gICAKLWRpZmYgLS1naXQgYS9nZGIvdGhyZWFk LmMgYi9nZGIvdGhyZWFkLmMKLWluZGV4IDlhMjkzODMuLjFhNDliMDAgMTAwNjQ0Ci0tLS0gYS9n ZGIvdGhyZWFkLmMKLSsrKyBiL2dkYi90aHJlYWQuYwotQEAgLTE0MzEsNyArMTQzMSw4IEBAIHVw ZGF0ZV90aHJlYWRfbGlzdCAodm9pZCkKLSAgICBubyB0aHJlYWQgaXMgc2VsZWN0ZWQsIG9yIG5v IHRocmVhZHMgZXhpc3QuICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXRocmVhZF9p ZF9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFy ICp2YXIpCi0rdGhyZWFkX2lkX21ha2VfdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBz dHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwKLSsJCSAgICAgIHZvaWQgKmlnbm9yZSkKLSB7Ci0gICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gZmluZF90aHJlYWRfcHRpZCAoaW5mZXJpb3JfcHRpZCk7 Ci0gCi1AQCAtMTQ0Miw2ICsxNDQzLDE1IEBAIHRocmVhZF9pZF9tYWtlX3ZhbHVlIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIpCi0gLyogQ29tbWFuZHMg d2l0aCBhIHByZWZpeCBvZiBgdGhyZWFkJy4gICovCi0gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQg KnRocmVhZF9jbWRfbGlzdCA9IE5VTEw7Ci0gCi0rLyogSW1wbGVtZW50YXRpb24gb2YgYHRocmVh ZCcgdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MgdGhy ZWFkX2Z1bmNzID0KLSt7Ci0rICB0aHJlYWRfaWRfbWFrZV92YWx1ZSwKLSsgIE5VTEwsCi0rICBO VUxMCi0rfTsKLSsKLSB2b2lkCi0gX2luaXRpYWxpemVfdGhyZWFkICh2b2lkKQotIHsKLUBAIC0x NDg3LDUgKzE0OTcsNSBAQCBTaG93IHByaW50aW5nIG9mIHRocmVhZCBldmVudHMgKHN1Y2ggYXMg dGhyZWFkIHN0YXJ0IGFuZCBleGl0KS4iKSwgTlVMTCwKLSAgICAgICAgICBzaG93X3ByaW50X3Ro cmVhZF9ldmVudHMsCi0gICAgICAgICAgJnNldHByaW50bGlzdCwgJnNob3dwcmludGxpc3QpOwot IAotLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90aHJlYWQiLCB0aHJlYWRfaWRf bWFrZV92YWx1ZSk7Ci0rICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RocmVhZCIs ICZ0aHJlYWRfZnVuY3MsIE5VTEwpOwotIH0KIGRpZmYgLS1naXQgYS9nZGIvdG9wLmMgYi9nZGIv dG9wLmMKLWluZGV4IGM0ZTkxM2QuLjViNzk5ODMgMTAwNjQ0CitpbmRleCAwNjFhZDQ4Li5kNjE1 Y2ZjIDEwMDY0NAogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9wLmMKLUBAIC0zNDksNiAr MzQ5LDkgQEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCitAQCAtMzUyLDYgKzM1Miw5 IEBAIHByZXBhcmVfZXhlY3V0ZV9jb21tYW5kICh2b2lkKQogIAogICAgbWFyayA9IHZhbHVlX21h cmsgKCk7CiAgICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX3ZhbHVlX2ZyZWVfdG9fbWFyayAobWFy ayk7CkBAIC0xNTM0NSwxMTIgKzg3MTIsOCBAQCBpbmRleCBjNGU5MTNkLi41Yjc5OTgzIDEwMDY0 NAogIAogICAgLyogV2l0aCBtdWx0aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3 ZSdyZSBleGFtaW5pbmcgaXMKICAgICAgIHN0b3BwZWQsIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFs ZSB3aXRob3V0IHVzIGJlaW5nIGFibGUgdG8gZGV0ZWN0Ci1kaWZmIC0tZ2l0IGEvZ2RiL3RyYWNl cG9pbnQuYyBiL2dkYi90cmFjZXBvaW50LmMKLWluZGV4IGVkZTM3NDIuLmIyMGY3MzMgMTAwNjQ0 Ci0tLS0gYS9nZGIvdHJhY2Vwb2ludC5jCi0rKysgYi9nZGIvdHJhY2Vwb2ludC5jCi1AQCAtNjgz LDcgKzY4Myw3IEBAIHZhbGlkYXRlX2FjdGlvbmxpbmUgKGNoYXIgKipsaW5lLCBzdHJ1Y3QgYnJl YWtwb2ludCAqYikKLSAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOwotICAgY2hh ciAqcCwgKnRtcF9wOwotICAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0tICBzdHJ1Y3QgYWdl bnRfZXhwciAqYWV4cHI7Ci0rICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIgPSBOVUxMOwotICAg c3RydWN0IHRyYWNlcG9pbnQgKnQgPSAoc3RydWN0IHRyYWNlcG9pbnQgKikgYjsKLSAKLSAgIC8q IElmIEVPRiBpcyB0eXBlZCwgKmxpbmUgaXMgTlVMTC4gICovCi1AQCAtMTM1Miw3ICsxMzUyLDcg QEAgZW5jb2RlX2FjdGlvbnNfMSAoc3RydWN0IGNvbW1hbmRfbGluZSAqYWN0aW9uLAotICAgaW50 IGk7Ci0gICBzdHJ1Y3QgdmFsdWUgKnRlbXB2YWw7Ci0gICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVu dCAqY21kOwotLSAgc3RydWN0IGFnZW50X2V4cHIgKmFleHByOwotKyAgc3RydWN0IGFnZW50X2V4 cHIgKmFleHByID0gTlVMTDsKLSAKLSAgIGZvciAoOyBhY3Rpb247IGFjdGlvbiA9IGFjdGlvbi0+ bmV4dCkKLSAgICAgewotQEAgLTE3MTYsNiArMTcxNiw3IEBAIHN0YXJ0X3RyYWNpbmcgKGNoYXIg Km5vdGVzKQotICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChicmVha3BvaW50X3AsIHRwX3Zl YywgaXgsIGIpOyBpeCsrKQotICAgICB7Ci0gICAgICAgc3RydWN0IHRyYWNlcG9pbnQgKnQgPSAo c3RydWN0IHRyYWNlcG9pbnQgKikgYjsKLSsgICAgICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsK LSAKLSAgICAgICBpZiAoYi0+ZW5hYmxlX3N0YXRlID09IGJwX2VuYWJsZWQpCi0gCWFueV9lbmFi bGVkID0gMTsKLUBAIC0xNzc4LDYgKzE3NzksOSBAQCBzdGFydF90cmFjaW5nIChjaGFyICpub3Rl cykKLSAJfQotIAotICAgICAgIHQtPm51bWJlcl9vbl90YXJnZXQgPSBiLT5udW1iZXI7Ci0rCi0r ICAgICAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotKwltb2RpZnlf c2VtYXBob3JlIChsb2MsIDEpOwotICAgICB9Ci0gICBWRUNfZnJlZSAoYnJlYWtwb2ludF9wLCB0 cF92ZWMpOwotIAotQEAgLTE4NTAsOSArMTg1NCwyOCBAQCB2b2lkCi0gc3RvcF90cmFjaW5nIChj aGFyICpub3RlKQotIHsKLSAgIGludCByZXQ7Ci0rICBWRUMoYnJlYWtwb2ludF9wKSAqdHBfdmVj ID0gTlVMTDsKLSsgIGludCBpeDsKLSsgIHN0cnVjdCBicmVha3BvaW50ICp0OwotIAotICAgdGFy Z2V0X3RyYWNlX3N0b3AgKCk7Ci0gCi0rICB0cF92ZWMgPSBhbGxfdHJhY2Vwb2ludHMgKCk7Ci0r ICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGJyZWFrcG9pbnRfcCwgdHBfdmVjLCBpeCwgdCk7 IGl4KyspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsKLSsKLSsgICAg ICBpZiAoKHQtPnR5cGUgPT0gYnBfZmFzdF90cmFjZXBvaW50Ci0rCSAgID8gIW1heV9pbnNlcnRf ZmFzdF90cmFjZXBvaW50cwotKwkgICA6ICFtYXlfaW5zZXJ0X3RyYWNlcG9pbnRzKSkKLSsJY29u dGludWU7Ci0rCi0rICAgICAgZm9yIChsb2MgPSB0LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0 KQotKwltb2RpZnlfc2VtYXBob3JlIChsb2MsIDApOwotKyAgICB9Ci0rCi0rICBWRUNfZnJlZSAo YnJlYWtwb2ludF9wLCB0cF92ZWMpOwotKwotICAgaWYgKCFub3RlKQotICAgICBub3RlID0gdHJh Y2Vfc3RvcF9ub3RlczsKLSAgIHJldCA9IHRhcmdldF9zZXRfdHJhY2Vfbm90ZXMgKE5VTEwsIE5V TEwsIG5vdGUpOwotQEAgLTQ5MjQsNyArNDk0Nyw4IEBAIGluZm9fc3RhdGljX3RyYWNlcG9pbnRf bWFya2Vyc19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSAgICBhdmFpbGFibGUu ICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXNkYXRhX21ha2VfdmFsdWUgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKLStzZGF0YV9tYWtl X3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIs Ci0rCQkgIHZvaWQgKmlnbm9yZSkKLSB7Ci0gICBMT05HRVNUIHNpemU7Ci0gICBnZGJfYnl0ZSAq YnVmOwotQEAgLTUxMDMsNiArNTEyNywxNSBAQCB0cmFjZWZyYW1lX2F2YWlsYWJsZV9tZW1vcnkg KFZFQyhtZW1fcmFuZ2VfcykgKipyZXN1bHQsCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0rLyogSW1w bGVtZW50YXRpb24gb2YgYHNkYXRhJyB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0 cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyBzZGF0YV9mdW5jcyA9Ci0rewotKyAgc2RhdGFfbWFrZV92 YWx1ZSwKLSsgIE5VTEwsCi0rICBOVUxMCi0rfTsKLSsKLSAvKiBtb2R1bGUgaW5pdGlhbGl6YXRp b24gKi8KLSB2b2lkCi0gX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9pZCkKLUBAIC01MTEzLDcg KzUxNDYsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQotICAgICAgdmFsdWUgd2l0 aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCi0gICAg ICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJl IHRoZXJlCi0gICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBz YW1lIG5hbWUuICAqLwotLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl9zZGF0YSIs IHNkYXRhX21ha2VfdmFsdWUpOwotKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl9z ZGF0YSIsICZzZGF0YV9mdW5jcywgTlVMTCk7Ci0gCi0gICB0cmFjZWZyYW1lX251bWJlciA9IC0x OwotICAgdHJhY2Vwb2ludF9udW1iZXIgPSAtMTsKIGRpZmYgLS1naXQgYS9nZGIvdHlwZXByaW50 LmMgYi9nZGIvdHlwZXByaW50LmMKLWluZGV4IGRlOTZmZDUuLjc1NDg1ZmYgMTAwNjQ0CitpbmRl eCBjMjVlNzA1Li40OTg5NThhIDEwMDY0NAogLS0tIGEvZ2RiL3R5cGVwcmludC5jCiArKysgYi9n ZGIvdHlwZXByaW50LmMKIEBAIC0zNSw2ICszNSw3IEBACkBAIC0xNTQ2Miw3ICs4NzI1LDcgQEAg aW5kZXggZGU5NmZkNS4uNzU0ODVmZiAxMDA2NDQKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6 ZV90eXBlcHJpbnQgKHZvaWQpOwogQEAgLTc2LDYgKzc3LDkgQEAgdm9pZAotIHR5cGVfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sCisgdHlwZV9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0cmlu Zywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJICAgIGludCBzaG93KQogIHsKICsgIGlmIChz aG93ID49IDAgJiYgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRh KQpAQCAtMTU0OTYsNyArODc1OSw3IEBAIGluZGV4IGRlOTZmZDUuLjc1NDg1ZmYgMTAwNjQ0CiAg ICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKICAKICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMg KCZvcHRzKTsKLUBAIC0xNjcsOCArMTczLDcgQEAgd2hhdGlzX2V4cCAoY2hhciAqZXhwLCBpbnQg c2hvdykKK0BAIC0xNTgsOCArMTY0LDcgQEAgd2hhdGlzX2V4cCAoY2hhciAqZXhwLCBpbnQgc2hv dykKICAgIHR5cGVfcHJpbnQgKHR5cGUsICIiLCBnZGJfc3Rkb3V0LCBzaG93KTsKICAgIHByaW50 Zl9maWx0ZXJlZCAoIlxuIik7CiAgCkBAIC0xNTUwNywxMCArODc3MCwxMCBAQCBpbmRleCBkZTk2 ZmQ1Li43NTQ4NWZmIDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3V0 aWxzLmMgYi9nZGIvdXRpbHMuYwotaW5kZXggNDg2M2U0MS4uYzFmZWM4MiAxMDA2NDQKK2luZGV4 IDJkNjA3ZWYuLmQ2N2U3ZGQgMTAwNjQ0CiAtLS0gYS9nZGIvdXRpbHMuYwogKysrIGIvZ2RiL3V0 aWxzLmMKLUBAIC0xOTA0LDYgKzE5MDQsMzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xl YW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKK0BAIC0xNzM3LDYgKzE3MzcsMzYgQEAgc2V0 X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCkKICAg IHJldHVybiBiYWNrX3RvOwogIH0KICAKQEAgLTE1NTQ4LDcgKzg4MTEsNyBAQCBpbmRleCA0ODYz ZTQxLi5jMWZlYzgyIDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3Zh bGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggYjhiY2M2Yi4uZmI4M2M3MCAxMDA2NDQK K2luZGV4IDAyMjUzMzkuLmY3NzViZmMgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsYXJpdGguYwogKysr IGIvZ2RiL3ZhbGFyaXRoLmMKIEBAIC0xOTcsNyArMTk3LDEwIEBAIHZhbHVlX3N1YnNjcmlwdGVk X3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91 bmQpCkBAIC0xNTU3NSw3ICs4ODM4LDcgQEAgaW5kZXggYjhiY2M2Yi4uZmI4M2M3MCAxMDA2NDQK ICB9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCi1pbmRleCA1 NDUzYjFhLi41YTRhOGZhIDEwMDY0NAoraW5kZXggZmViNDdmNS4uNmQxNGVlZSAxMDA2NDQKIC0t LSBhL2dkYi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtNDUsNiArNDUsNyBAQApA QCAtMTU1ODYsNyArODg0OSw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEgMTAwNjQ0CiAgCiAg ZXh0ZXJuIGludCBvdmVybG9hZF9kZWJ1ZzsKICAvKiBMb2NhbCBmdW5jdGlvbnMuICAqLwotQEAg LTkxNSw2ICs5MTYsNjUgQEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC05MTks NiArOTIwLDY1IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5cGUgKnR5cGUpCiAgICByZXR1cm4gdmFs OwogIH0KICAKQEAgLTE1NjUyLDcgKzg5MTUsMTcgQEAgaW5kZXggNTQ1M2IxYS4uNWE0YThmYSAx MDA2NDQKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZhbHVlX2F0LCB2YWx1ZV9hdF9sYXp5LCBh bmQgdmFsdWVfYXRfbGF6eV9zdGFjay4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi1A QCAtMTAxMSwxMiArMTA3MSwyMCBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZh bCkKK0BAIC05ODEsNyArMTA0MSw4IEBAIGludAorIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2 YWx1ZSAqdmFsKQorIHsKKyAgIGdkYl9hc3NlcnQgKHZhbHVlX2xhenkgKHZhbCkpOworLSAgYWxs b2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7CisrICBpZiAoVkFMVUVfTFZBTCAodmFsKSAhPSBs dmFsX21lbW9yeSkKKysgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7CisgICBpZiAo dmFsdWVfYml0c2l6ZSAodmFsKSkKKyAgICAgeworICAgICAgIC8qIFRvIHJlYWQgYSBsYXp5IGJp dGZpZWxkLCByZWFkIHRoZSBlbnRpcmUgZW5jbG9zaW5nIHZhbHVlLiAgVGhpcworQEAgLTEwMTUs MTIgKzEwNzYsMjQgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAg IH0KICAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIHsK QEAgLTE1NjcwLDE1ICs4OTQzLDE5IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEgMTAwNjQ0CiAr CiArCSAgaWYgKGxlbmd0aCkKICsJICAgIHsKKysJICAgICAgLyogRGVsYXkgaXQgYWZ0ZXIgb2Jq ZWN0X2FkZHJlc3NfZ2V0X2RhdGEgYWJvdmUuICAqLworKwkgICAgICBhbGxvY2F0ZV92YWx1ZV9j b250ZW50cyAodmFsKTsKICsJICAgICAgYWRkciArPSB2YWx1ZV9vZmZzZXQgKHZhbCk7CiArCSAg ICAgIHJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVlX3N0YWNrICh2YWwpLAogKwkJCQkg YWRkciwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAodmFsKSwgbGVuZ3RoKTsKICsJICAgIH0KICsJ fQorKyAgICAgIC8qIEp1c3QgdG8gYmUgc3VyZSBpdCBoYXMgYmVlbiBjYWxsZWQuICAqLworKyAg ICAgIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzICh2YWwpOwogICAgICB9CiAgICBlbHNlIGlmIChW QUxVRV9MVkFMICh2YWwpID09IGx2YWxfcmVnaXN0ZXIpCiAgICAgIHsKLUBAIC0xNTI4LDcgKzE1 OTYsMTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg YmxvY2sgKmIpCitAQCAtMTUzMiw3ICsxNjA1LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChWQUxVRV9MVkFMICh2 YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAgICAgfHwgVFlQRV9D T0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTU2OTgsNyArODk3NSw3 IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEgMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJuIHZhbHVl X2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9 Ci1AQCAtMTYzNSw2ICsxNzE0LDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNjM5LDYgKzE3MjMs NyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICph cmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlw ZSAoYXJnMSkpOwpAQCAtMTU3MDYsNyArODk4Myw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEg MTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21ldGhpbmcgcmVxdWly aW5nIGEgcG9pbnRlciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBub3QgeWV0IGJlZW4g cHVzaGVkIHRvIHRoZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE2NDQsOCArMTcyNCwx MiBAQCB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKK0BAIC0xNjQ4LDgg KzE3MzMsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgICBp ZiAoVkFMVUVfTFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVycm9yIChfKCJBdHRl bXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuIikpOwog IApAQCAtMTU3MjAsNyArODk5Nyw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEgMTAwNjQ0CiAg fQogIAogIC8qIEdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgYSBmdW5jdGlvbiwgcmV0dXJuIGEgdmFs dWUgd2hpY2ggaXMgYSBwb2ludGVyCi1AQCAtMzY5NCw2ICszNzc4LDggQEAgdmFsdWVfc2xpY2Ug KHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkKK0BAIC0zNzcy LDYgKzM4NjEsOCBAQCB2YWx1ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2Jv dW5kLCBpbnQgbGVuZ3RoKQogIAkJCQkJVFlQRV9UQVJHRVRfVFlQRSAocmFuZ2VfdHlwZSksCiAg CQkJCQlsb3dib3VuZCwgCiAgCQkJCQlsb3dib3VuZCArIGxlbmd0aCAtIDEpOwpAQCAtMTU3MzAs NyArOTAwNyw3IEBAIGluZGV4IDU0NTNiMWEuLjVhNGE4ZmEgMTAwNjQ0CiAgICAgIHsKICAgICAg ICBpbnQgaTsKIGRpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuYyBiL2dkYi92YWxwcmludC5jCi1p bmRleCAzMjVjZjQwLi43MGE5OGMyIDEwMDY0NAoraW5kZXggZmM1OTQyZC4uODMzM2ViNCAxMDA2 NDQKIC0tLSBhL2dkYi92YWxwcmludC5jCiArKysgYi9nZGIvdmFscHJpbnQuYwogQEAgLTM3LDYg KzM3LDcgQEAKQEAgLTE1NzQxLDcgKzkwMTgsNyBAQCBpbmRleCAzMjVjZjQwLi43MGE5OGMyIDEw MDY0NAogIAogICNpbmNsdWRlIDxlcnJuby5oPgogIAotQEAgLTI0MCw3ICsyNDEsNiBAQCBzY2Fs YXJfdHlwZV9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0yNTEsNyArMjUyLDYgQEAgc2NhbGFy X3R5cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoK ICAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046CiAgICAgIGNhc2UgVFlQRV9DT0RFX1NFVDoKQEAg LTE1NzQ5LDcgKzkwMjYsNyBAQCBpbmRleCAzMjVjZjQwLi43MGE5OGMyIDEwMDY0NAogICAgICBj YXNlIFRZUEVfQ09ERV9CSVRTVFJJTkc6CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGRlZmF1bHQ6 Ci1AQCAtMTE5OCw2ICsxMTk4LDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKK0BAIC0xNTcwLDYgKzE1NzAsNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVu dHMgKHN0cnVjdCB0eXBlICp0eXBlLAogIHsKICAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRl ZCA9IDA7CiAgICB1bnNpZ25lZCBsZW47CkBAIC0xNTc1Nyw3ICs5MDM0LDcgQEAgaW5kZXggMzI1 Y2Y0MC4uNzBhOThjMiAxMDA2NDQKICAgIHN0cnVjdCB0eXBlICplbHR0eXBlLCAqaW5kZXhfdHlw ZTsKICAgIHVuc2lnbmVkIGVsdGxlbjsKICAgIC8qIFBvc2l0aW9uIG9mIHRoZSBhcnJheSBlbGVt ZW50IHdlIGFyZSBleGFtaW5pbmcgdG8gc2VlCi1AQCAtMTIwNiw5ICsxMjA3LDMzIEBAIHZhbF9w cmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsCitAQCAtMTU3OCw5ICsxNTc5 LDMzIEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgICAv KiBOdW1iZXIgb2YgcmVwZXRpdGlvbnMgd2UgaGF2ZSBkZXRlY3RlZCBzbyBmYXIuICAqLwogICAg dW5zaWduZWQgaW50IHJlcHM7CiAgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKQEAg LTE1NzkzLDcgKzkwNzAsNyBAQCBpbmRleCAzMjVjZjQwLi43MGE5OGMyIDEwMDY0NAogICAgaW5k ZXhfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7CiAgCiAgICBpZiAoZ2V0X2FycmF5X2Jv dW5kcyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpKQotQEAgLTEyOTUsNiArMTMyMCw4 IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsCitAQCAtMTY2 Nyw2ICsxNjkyLDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlw ZSwKICAgICAgewogICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwogICAg ICB9CkBAIC0xNTgwMywxOCArOTA4MCwxOCBAQCBpbmRleCAzMjVjZjQwLi43MGE5OGMyIDEwMDY0 NAogIAogIC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBtZW1vcnkgYXQgYWRkcmVzcyBNRU1B RERSLCBwbGFjaW5nIHRoZQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMK LWluZGV4IDU4M2JlMzMuLmNiNzNlZGEgMTAwNjQ0CitpbmRleCBjNjRlNTViLi5jZDA4YTBiIDEw MDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCi1AQCAtNDEsNiArNDEs NyBAQAotICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCitAQCAtNDIsNiArNDIsNyBAQAogICNp bmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCisgI2luY2x1ZGUgImNw LWFiaS5oIgogKyNpbmNsdWRlICJvYnNlcnZlci5oIgogIAogIC8qIFByb3RvdHlwZXMgZm9yIGV4 cG9ydGVkIGZ1bmN0aW9ucy4gICovCiAgCi1AQCAtMTM4NSwxMiArMTM4NiwxNSBAQCB2b2lkCitA QCAtMTQzNywxMiArMTQzOCwxNSBAQCB2b2lkCiAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlv biAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVl ICp3aG9sZSkKICB7CkBAIC0xNTgzMCw3ICs5MTA3LDcgQEAgaW5kZXggNTgzYmUzMy4uY2I3M2Vk YSAxMDA2NDQKICAgIGlmICh3aG9sZS0+bHZhbCA9PSBsdmFsX2NvbXB1dGVkKQogICAgICB7CiAg ICAgICAgY29uc3Qgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUtPmxvY2F0aW9uLmNv bXB1dGVkLmZ1bmNzOwotQEAgLTEzOTgsNiArMTQwMiwxMiBAQCBzZXRfdmFsdWVfY29tcG9uZW50 X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKK0BAIC0xNDUwLDYgKzE0NTQsMTIg QEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQs CiAgICAgICAgaWYgKGZ1bmNzLT5jb3B5X2Nsb3N1cmUpCiAgICAgICAgICBjb21wb25lbnQtPmxv Y2F0aW9uLmNvbXB1dGVkLmNsb3N1cmUgPSBmdW5jcy0+Y29weV9jbG9zdXJlICh3aG9sZSk7CiAg ICAgIH0KQEAgLTE1ODQzLDcgKzkxMjAsNyBAQCBpbmRleCA1ODNiZTMzLi5jYjczZWRhIDEwMDY0 NAogIH0KICAKICAMCi1AQCAtMTUzMSw2ICsxNTQxLDMxIEBAIHNob3dfdmFsdWVzIChjaGFyICpu dW1fZXhwLCBpbnQgZnJvbV90dHkpCitAQCAtMTU4Myw2ICsxNTkzLDMxIEBAIHNob3dfdmFsdWVz IChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCiAgICAgICAgbnVtX2V4cFsxXSA9ICdcMCc7 CiAgICAgIH0KICB9CkBAIC0xNTg3NSw4OCArOTE1Miw3IEBAIGluZGV4IDU4M2JlMzMuLmNiNzNl ZGEgMTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2YXJpYWJs ZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkg ZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMTU3Niw3ICsxNjExLDE0IEBAIHN0cnVjdCBpbnRlcm5h bHZhcgotICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7Ci0gCi0gICAgICAgLyogVGhlIGNhbGwt YmFjayByb3V0aW5lIHVzZWQgd2l0aCBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVFLiAgKi8KLS0gICAg ICBpbnRlcm5hbHZhcl9tYWtlX3ZhbHVlIG1ha2VfdmFsdWU7Ci0rICAgICAgc3RydWN0Ci0rICAg ICAgICB7Ci0rCSAgLyogVGhlIGZ1bmN0aW9ucyB0byBjYWxsLiAgKi8KLSsJICBjb25zdCBzdHJ1 Y3QgaW50ZXJuYWx2YXJfZnVuY3MgKmZ1bmN0aW9uczsKLSsKLSsJICAvKiBUaGUgZnVuY3Rpb24n cyB1c2VyLWRhdGEuICAqLwotKwkgIHZvaWQgKmRhdGE7Ci0rICAgICAgICB9IG1ha2VfdmFsdWU7 Ci0gCi0gICAgICAgLyogVGhlIGludGVybmFsIGZ1bmN0aW9uIHVzZWQgd2l0aCBJTlRFUk5BTFZB Ul9GVU5DVElPTi4gICovCi0gICAgICAgc3RydWN0Ci1AQCAtMTY3NSwxOCArMTcxNywzOSBAQCBj cmVhdGVfaW50ZXJuYWx2YXIgKGNvbnN0IGNoYXIgKm5hbWUpCi0gLyogQ3JlYXRlIGFuIGludGVy bmFsIHZhcmlhYmxlIHdpdGggbmFtZSBOQU1FIGFuZCByZWdpc3RlciBGVU4gYXMgdGhlCi0gICAg ZnVuY3Rpb24gdGhhdCB2YWx1ZV9vZl9pbnRlcm5hbHZhciB1c2VzIHRvIGNyZWF0ZSBhIHZhbHVl IHdoZW5ldmVyCi0gICAgdGhpcyB2YXJpYWJsZSBpcyByZWZlcmVuY2VkLiAgTkFNRSBzaG91bGQg bm90IG5vcm1hbGx5IGluY2x1ZGUgYQotLSAgIGRvbGxhciBzaWduLiAgKi8KLSsgICBkb2xsYXIg c2lnbi4gIERBVEEgaXMgcGFzc2VkIHVuaW50ZXJwcmV0ZWQgdG8gRlVOIHdoZW4gaXQgaXMKLSsg ICBjYWxsZWQuICBDTEVBTlVQLCBpZiBub3QgTlVMTCwgaXMgY2FsbGVkIHdoZW4gdGhlIGludGVy bmFsIHZhcmlhYmxlCi0rICAgaXMgZGVzdHJveWVkLiAgSXQgaXMgcGFzc2VkIERBVEEgYXMgaXRz IG9ubHkgYXJndW1lbnQuICAqLwotIAotIHN0cnVjdCBpbnRlcm5hbHZhciAqCi0tY3JlYXRlX2lu dGVybmFsdmFyX3R5cGVfbGF6eSAoY2hhciAqbmFtZSwgaW50ZXJuYWx2YXJfbWFrZV92YWx1ZSBm dW4pCi0rY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoY29uc3QgY2hhciAqbmFtZSwKLSsJ CQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MgKmZ1bmNzLAotKwkJCSAgICAg IHZvaWQgKmRhdGEpCi0gewotICAgc3RydWN0IGludGVybmFsdmFyICp2YXIgPSBjcmVhdGVfaW50 ZXJuYWx2YXIgKG5hbWUpOwotIAotICAgdmFyLT5raW5kID0gSU5URVJOQUxWQVJfTUFLRV9WQUxV RTsKLS0gIHZhci0+dS5tYWtlX3ZhbHVlID0gZnVuOwotKyAgdmFyLT51Lm1ha2VfdmFsdWUuZnVu Y3Rpb25zID0gZnVuY3M7Ci0rICB2YXItPnUubWFrZV92YWx1ZS5kYXRhID0gZGF0YTsKLSAgIHJl dHVybiB2YXI7Ci0gfQotIAotKy8qIFNlZSBkb2N1bWVudGF0aW9uIGluIHZhbHVlLmguICAqLwot KwotK2ludAotK2NvbXBpbGVfaW50ZXJuYWx2YXJfdG9fYXggKHN0cnVjdCBpbnRlcm5hbHZhciAq dmFyLAotKwkJCSAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAotKwkJCSAgIHN0cnVjdCBheHNf dmFsdWUgKnZhbHVlKQotK3sKLSsgIGlmICh2YXItPmtpbmQgIT0gSU5URVJOQUxWQVJfTUFLRV9W QUxVRQotKyAgICAgIHx8IHZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9ucy0+Y29tcGlsZV90b19h eCA9PSBOVUxMKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0 aW9ucy0+Y29tcGlsZV90b19heCAodmFyLCBleHByLCB2YWx1ZSwKLSsJCQkJCSAgICAgIHZhci0+ dS5tYWtlX3ZhbHVlLmRhdGEpOwotKyAgcmV0dXJuIDE7Ci0rfQotKwotIC8qIExvb2sgdXAgYW4g aW50ZXJuYWwgdmFyaWFibGUgd2l0aCBuYW1lIE5BTUUuICBOQU1FIHNob3VsZCBub3QKLSAgICBu b3JtYWxseSBpbmNsdWRlIGEgZG9sbGFyIHNpZ24uCi0gCi1AQCAtMTc1OSw3ICsxODIyLDggQEAg dmFsdWVfb2ZfaW50ZXJuYWx2YXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50 ZXJuYWx2YXIgKnZhcikKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBJTlRFUk5BTFZBUl9N QUtFX1ZBTFVFOgotLSAgICAgIHZhbCA9ICgqdmFyLT51Lm1ha2VfdmFsdWUpIChnZGJhcmNoLCB2 YXIpOwotKyAgICAgIHZhbCA9ICgqdmFyLT51Lm1ha2VfdmFsdWUuZnVuY3Rpb25zLT5tYWtlX3Zh bHVlKSAoZ2RiYXJjaCwgdmFyLAotKwkJCQkJCQl2YXItPnUubWFrZV92YWx1ZS5kYXRhKTsKLSAg ICAgICBicmVhazsKLSAKLSAgICAgZGVmYXVsdDoKLUBAIC0xOTU1LDYgKzIwMTksMTEgQEAgY2xl YXJfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKQotICAgICAgIHhmcmVlICh2 YXItPnUuc3RyaW5nKTsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBJTlRFUk5BTFZBUl9N QUtFX1ZBTFVFOgotKyAgICAgIGlmICh2YXItPnUubWFrZV92YWx1ZS5mdW5jdGlvbnMtPmRlc3Ry b3kgIT0gTlVMTCkKLSsJdmFyLT51Lm1ha2VfdmFsdWUuZnVuY3Rpb25zLT5kZXN0cm95ICh2YXIt PnUubWFrZV92YWx1ZS5kYXRhKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgZGVmYXVsdDoKLSAg ICAgICBicmVhazsKLSAgICAgfQotQEAgLTIwMDksNiArMjA3OCwzOCBAQCBjYWxsX2ludGVybmFs X2Z1bmN0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMDk1LDYgKzIxMzAsMzgg QEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICBy ZXR1cm4gKCppZm4tPmhhbmRsZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZuLT5jb29raWUsIGFy Z2MsIGFyZ3YpOwogIH0KICAKQEAgLTE1OTk1LDcgKzkxOTEsNyBAQCBpbmRleCA1ODNiZTMzLi5j YjczZWRhIDEwMDY0NAogIC8qIFRoZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBUaGlzIGRvZXMgbm90 aGluZyAtLSBpdCBpcyBqdXN0IGEKICAgICBwbGFjZWhvbGRlciB0byBsZXQgImhlbHAgZnVuY3Rp b24gTkFNRSIgd29yay4gIFRoaXMgaXMgYWxzbyB1c2VkIGFzCiAgICAgdGhlIGltcGxlbWVudGF0 aW9uIG9mIHRoZSBzdWItY29tbWFuZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgotQEAgLTIwNTYsMTEg KzIxNTcsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMTQyLDExICsyMjA5LDEwIEBAIHByZXNlcnZlX29u ZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAg CQkgICAgaHRhYl90IGNvcGllZF90eXBlcykKICB7CiAgICBpZiAoVFlQRV9PQkpGSUxFICh2YWx1 ZS0+dHlwZSkgPT0gb2JqZmlsZSkKQEAgLTE2MDA5LDcgKzkyMDUsNyBAQCBpbmRleCA1ODNiZTMz Li5jYjczZWRhIDEwMDY0NAogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAKLUBAIC0yMDc1 LDcgKzIxNzUsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZh ciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMTYxLDcgKzIyMjcsNyBAQCBw cmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAg IGlmICh2YXItPnUuaW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVnZXIu dHlwZSkgPT0gb2JqZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtMTYwMTgsMTMgKzky MTQsMTQgQEAgaW5kZXggNTgzYmUzMy4uY2I3M2VkYSAxMDA2NDQKICAgICAgICBicmVhazsKICAK ICAgICAgY2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0zMTM3LDkgKzMyMzcsMjYgQEAgY29l cmNlX3JlZl9pZl9jb21wdXRlZCAoY29uc3Qgc3RydWN0IHZhbHVlICphcmcpCitAQCAtMzI1Mywx MCArMzMxOSwyNyBAQCByZWFkanVzdF9pbmRpcmVjdF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUg KnZhbHVlLCBzdHJ1Y3QgdHlwZSAqZW5jX3R5cGUsCiAgc3RydWN0IHZhbHVlICoKICBjb2VyY2Vf cmVmIChzdHJ1Y3QgdmFsdWUgKmFyZykKICB7CiAtICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZV9h cmdfdG1wID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CiArICBzdHJ1Y3QgdHlw ZSAqdmFsdWVfdHlwZV9hcmdfdG1wOwogICAgc3RydWN0IHZhbHVlICpyZXR2YWw7CisgICBzdHJ1 Y3QgdHlwZSAqZW5jX3R5cGU7CiAgCiArICBpZiAoVFlQRV9EWU5BTUlDICh2YWx1ZV90eXBlIChh cmcpKSkKICsgICAgewpAQCAtMTYwNDYsNyArOTI0Myw3IEBAIGluZGV4IDU4M2JlMzMuLmNiNzNl ZGEgMTAwNjQ0CiAgICByZXR2YWwgPSBjb2VyY2VfcmVmX2lmX2NvbXB1dGVkIChhcmcpOwogICAg aWYgKHJldHZhbCkKICAgICAgcmV0dXJuIHJldHZhbDsKLUBAIC0zMjQxLDQgKzMzNTgsMTAgQEAg VkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKSk7CitAQCAtMzM2Myw0ICszNDQ2LDEw IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikpOwogICAgYWRkX3ByZWZpeF9j bWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBmdW5jdGlvbl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vo b2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBoZWxwIG9uIGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4i KSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1bmN0aW9uICIsIDAsICZjbWRsaXN0KTsKQEAgLTE2 MDU4LDEwICs5MjU1LDEwIEBAIGluZGV4IDU4M2JlMzMuLmNiNzNlZGEgMTAwNjQ0CiArI2VuZGlm CiAgfQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIvZ2RiL3ZhbHVlLmgKLWluZGV4IDQ3Mjc3 NTUuLmQ4ZDIyYzggMTAwNjQ0CitpbmRleCBiNjMwZmM3Li4yZjk1ZGIyIDEwMDY0NAogLS0tIGEv Z2RiL3ZhbHVlLmgKICsrKyBiL2dkYi92YWx1ZS5oCi1AQCAtNDg4LDYgKzQ4OCwxMCBAQCBleHRl cm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwK K0BAIC01MzMsNiArNTMzLDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVj ZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCQkJICBjb25zdCBnZGJfYnl0ZSAqZGVjYnl0 ZXMpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21faGlzdG9yeV9yZWYgKGNoYXIg KiwgY2hhciAqKik7CiAgCkBAIC0xNjA3MiwxMDcgKzkyNjksMyBAQCBpbmRleCA0NzI3NzU1Li5k OGQyMmM4IDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0 X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgCi1AQCAtNzE3LDEw ICs3MjEsNTIgQEAgZXh0ZXJuIHN0cnVjdCBpbnRlcm5hbHZhciAqbG9va3VwX29ubHlfaW50ZXJu YWx2YXIgKGNvbnN0IGNoYXIgKm5hbWUpOwotIAotIGV4dGVybiBzdHJ1Y3QgaW50ZXJuYWx2YXIg KmNyZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7Ci0gCi0tdHlwZWRlZiBzdHJ1 Y3QgdmFsdWUgKiAoKmludGVybmFsdmFyX21ha2VfdmFsdWUpIChzdHJ1Y3QgZ2RiYXJjaCAqLAot LQkJCQkJCSAgc3RydWN0IGludGVybmFsdmFyICopOwotKy8qIEFuIGludGVybmFsdmFyIGNhbiBi ZSBkeW5hbWljYWxseSBjb21wdXRlZCBieSBzdXBwbHlpbmcgYSB2ZWN0b3Igb2YKLSsgICBmdW5j dGlvbiBwb2ludGVycyB0byBwZXJmb3JtIHZhcmlvdXMgb3BlcmF0aW9ucy4gICovCi0rCi0rc3Ry dWN0IGludGVybmFsdmFyX2Z1bmNzCi0rewotKyAgLyogQ29tcHV0ZSB0aGUgdmFsdWUgb2YgdGhl IHZhcmlhYmxlLiAgVGhlIERBVEEgYXJndW1lbnQgcGFzc2VkIHRvCi0rICAgICB0aGUgZnVuY3Rp b24gaXMgdGhlIHNhbWUgYXJndW1lbnQgdGhhdCB3YXMgcGFzc2VkIHRvCi0rICAgICBgY3JlYXRl X2ludGVybmFsdmFyX3R5cGVfbGF6eScuICAqLwotKwotKyAgc3RydWN0IHZhbHVlICooKm1ha2Vf dmFsdWUpIChzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwKLSsJCQkgICAgICAgc3RydWN0IGludGVybmFs dmFyICp2YXIsCi0rCQkJICAgICAgIHZvaWQgKmRhdGEpOwotKwotKyAgLyogVXBkYXRlIHRoZSBh Z2VudCBleHByZXNzaW9uIEVYUFIgd2l0aCBieXRlY29kZSB0byBjb21wdXRlIHRoZQotKyAgICAg dmFsdWUuICBWQUxVRSBpcyB0aGUgYWdlbnQgdmFsdWUgd2UgYXJlIHVwZGF0aW5nLiAgVGhlIERB VEEKLSsgICAgIGFyZ3VtZW50IHBhc3NlZCB0byB0aGlzIGZ1bmN0aW9uIGlzIHRoZSBzYW1lIGFy Z3VtZW50IHRoYXQgd2FzCi0rICAgICBwYXNzZWQgdG8gYGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBl X2xhenknLiAgSWYgdGhpcyBwb2ludGVyIGlzCi0rICAgICBOVUxMLCB0aGVuIHRoZSBpbnRlcm5h bHZhciBjYW5ub3QgYmUgY29tcGlsZWQgdG8gYW4gYWdlbnQKLSsgICAgIGV4cHJlc3Npb24uICAq LwotKwotKyAgdm9pZCAoKmNvbXBpbGVfdG9fYXgpIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwK LSsJCQkgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkJIHN0cnVjdCBheHNfdmFsdWUgKnZh bHVlLAotKwkJCSB2b2lkICpkYXRhKTsKLSsKLSsgIC8qIElmIG5vbi1OVUxMLCB0aGlzIGlzIGNh bGxlZCB0byBkZXN0cm95IERBVEEuICBUaGUgREFUQSBhcmd1bWVudAotKyAgICAgcGFzc2VkIHRv IHRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXJndW1lbnQgdGhhdCB3YXMgcGFzc2VkIHRvCi0r ICAgICBgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eScuICAqLwotKwotKyAgdm9pZCAoKmRl c3Ryb3kpICh2b2lkICpkYXRhKTsKLSt9OwotKwotIGV4dGVybiBzdHJ1Y3QgaW50ZXJuYWx2YXIg KgotLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoY2hhciAqbmFtZSwgaW50ZXJuYWx2 YXJfbWFrZV92YWx1ZSBmdW4pOwotK2NyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKGNvbnN0 IGNoYXIgKm5hbWUsCi0rCQkJICAgICAgY29uc3Qgc3RydWN0IGludGVybmFsdmFyX2Z1bmNzICpm dW5jcywKLSsJCQkgICAgICB2b2lkICpkYXRhKTsKLSsKLSsvKiBDb21waWxlIGFuIGludGVybmFs IHZhcmlhYmxlIHRvIGFuIGFnZW50IGV4cHJlc3Npb24uICBWQVIgaXMgdGhlCi0rICAgdmFyaWFi bGUgdG8gY29tcGlsZTsgRVhQUiBhbmQgVkFMVUUgYXJlIHRoZSBhZ2VudCBleHByZXNzaW9uIHdl IGFyZQotKyAgIHVwZGF0aW5nLiAgVGhpcyB3aWxsIHJldHVybiAwIGlmIHRoZXJlIGlzIG5vIGtu b3duIHdheSB0byBjb21waWxlCi0rICAgVkFSLCBhbmQgMSBpZiBWQVIgd2FzIHN1Y2Nlc3NmdWxs eSBjb21waWxlZC4gIEl0IG1heSBhbHNvIHRocm93IGFuCi0rICAgZXhjZXB0aW9uIG9uIGVycm9y LiAgKi8KLSsKLStleHRlcm4gaW50IGNvbXBpbGVfaW50ZXJuYWx2YXJfdG9fYXggKHN0cnVjdCBp bnRlcm5hbHZhciAqdmFyLAotKwkJCQkgICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKLSsJ CQkJICAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUpOwotIAotIGV4dGVybiBzdHJ1Y3QgaW50 ZXJuYWx2YXIgKmxvb2t1cF9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7Ci0gCi1kaWZm IC0tZ2l0IGEvZ2RiL3dpbmRvd3MtdGRlcC5jIGIvZ2RiL3dpbmRvd3MtdGRlcC5jCi1pbmRleCBl MTExZDQxLi4xOGUzMTgwIDEwMDY0NAotLS0tIGEvZ2RiL3dpbmRvd3MtdGRlcC5jCi0rKysgYi9n ZGIvd2luZG93cy10ZGVwLmMKLUBAIC0yNjgsNyArMjY4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVj dCBsdmFsX2Z1bmNzIHRsYl92YWx1ZV9mdW5jcyA9Ci0gICAgaWYgdGhlcmUncyBubyBvYmplY3Qg YXZhaWxhYmxlLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLS10bGJfbWFrZV92YWx1 ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKQotK3Rs Yl9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFy ICp2YXIsIHZvaWQgKmlnbm9yZSkKLSB7Ci0gICBpZiAodGFyZ2V0X2hhc19zdGFjayAmJiAhcHRp ZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlkKSkKLSAgICAgewotQEAgLTQyNSw2ICs0 MjUsMTUgQEAgaW5pdF93MzJfY29tbWFuZF9saXN0ICh2b2lkKQotICAgICB9Ci0gfQotIAotKy8q IEltcGxlbWVudGF0aW9uIG9mIGB0bGInIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgY29uc3Qg c3RydWN0IGludGVybmFsdmFyX2Z1bmNzIHRsYl9mdW5jcyA9Ci0rewotKyAgdGxiX21ha2VfdmFs dWUsCi0rICBOVUxMLAotKyAgTlVMTAotK307Ci0rCi0gdm9pZAotIF9pbml0aWFsaXplX3dpbmRv d3NfdGRlcCAodm9pZCkKLSB7Ci1AQCAtNDUxLDUgKzQ2MCw1IEBAIGV2ZW4gaWYgdGhlaXIgbWVh bmluZyBpcyB1bmtub3duLiIpLAotICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFsdWUs IGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCi0gICAgICBpc24ndCBpbml0aWFsaXplZCB5 ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCi0gICAgICBpc24ndCBh bm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLwotLSAgY3Jl YXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90bGIiLCB0bGJfbWFrZV92YWx1ZSk7Ci0rICBj cmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RsYiIsICZ0bGJfZnVuY3MsIE5VTEwpOwot IH0KLWRpZmYgLS1naXQgYS9nZGIveGNvZmZyZWFkLmMgYi9nZGIveGNvZmZyZWFkLmMKLWluZGV4 IDFhMmJiMTQuLmQ0M2U5NDYgMTAwNjQ0Ci0tLS0gYS9nZGIveGNvZmZyZWFkLmMKLSsrKyBiL2dk Yi94Y29mZnJlYWQuYwotQEAgLTMxMjMsNiArMzEyMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c3ltX2ZucyB4Y29mZl9zeW1fZm5zID0KLSAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyog R2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwotICAgYWl4X3Byb2Nlc3Nf bGluZW5vcywKLSAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1 ZyBzZWN0aW9uLiAgKi8KLSsgIE5VTEwsCQkJCS8qIHN5bV9wcm9iZV9mbnMgKi8KLSAgICZwc3lt X2Z1bmN0aW9ucwotIH07Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMt MW9mNS5wYXRjaCBiL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTFvZjUucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjNTQ3ZDguLjAwMDAwMDAKLS0tIGEvZ2RiLWF0dGFjaC1m YWlsLXJlYXNvbnMtMW9mNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDIvbXNnMDAxODAuaHRtbAotCi0j IyMgc3JjL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9nCTIwMTIvMDIvMjUgMTk6NTQ6NTAJMS41NTYK LSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMi8wMi8yNyAxNjoxOToxOQkxLjU1 NwotIyMgLTEsMyArMSw5IEBACi0rMjAxMi0wMi0yNyAgUGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVk aGF0LmNvbT4KLSsKLSsJUFIgc2VydmVyLzk2ODQKLSsJKiBsaW51eC1sb3cuYyAocGlkX2lzX3N0 b3BwZWQpOiBOZXcuCi0rCShsaW51eF9hdHRhY2hfbHdwXzEpOiBIYW5kbGUgYXR0YWNoaW5nIHRv ICdUIChzdG9wcGVkKScgcHJvY2Vzc2VzLgotKwotIDIwMTItMDItMjUgIEx1aXMgTWFjaGFkbyAg PGxndXN0YXZvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogbWVtLWJyZWFrLmMgKGNsZWFyX2dk Yl9icmVha3BvaW50X2NvbmRpdGlvbnMpOiBGaXggZGUtYWxsb2NhdGlvbgotLS0tIHNyYy9nZGIv Z2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTIvMDIvMjQgMTU6MTU6NTYJMS4xOTMKLSsrKyBzcmMv Z2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLzAyLzI3IDE2OjE5OjE5CTEuMTk0Ci1AQCAt NTk4LDYgKzU5OCwzNyBAQAotICAgcmV0dXJuIHBpZDsKLSB9Ci0gCi0rLyogRGV0ZWN0IGBUIChz dG9wcGVkKScgaW4gYC9wcm9jL1BJRC9zdGF0dXMnLgotKyAgIE90aGVyIHN0YXRlcyBpbmNsdWRp bmcgYFQgKHRyYWNpbmcgc3RvcCknIGFyZSByZXBvcnRlZCBhcyBmYWxzZS4gICovCi0rCi0rc3Rh dGljIGludAotK3BpZF9pc19zdG9wcGVkIChwaWRfdCBwaWQpCi0rewotKyAgRklMRSAqc3RhdHVz X2ZpbGU7Ci0rICBjaGFyIGJ1ZlsxMDBdOwotKyAgaW50IHJldHZhbCA9IDA7Ci0rCi0rICBzbnBy aW50ZiAoYnVmLCBzaXplb2YgKGJ1ZiksICIvcHJvYy8lZC9zdGF0dXMiLCAoaW50KSBwaWQpOwot KyAgc3RhdHVzX2ZpbGUgPSBmb3BlbiAoYnVmLCAiciIpOwotKyAgaWYgKHN0YXR1c19maWxlICE9 IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbnQgaGF2ZV9zdGF0ZSA9IDA7Ci0rCi0rICAgICAgd2hp bGUgKGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgc3RhdHVzX2ZpbGUpKQotKwl7Ci0rCSAgaWYg KHN0cm5jbXAgKGJ1ZiwgIlN0YXRlOiIsIDYpID09IDApCi0rCSAgICB7Ci0rCSAgICAgIGhhdmVf c3RhdGUgPSAxOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJfQotKyAgICAgIGlmIChoYXZl X3N0YXRlICYmIHN0cnN0ciAoYnVmLCAiVCAoc3RvcHBlZCkiKSAhPSBOVUxMKQotKwlyZXR2YWwg PSAxOwotKyAgICAgIGZjbG9zZSAoc3RhdHVzX2ZpbGUpOwotKyAgICB9Ci0rICByZXR1cm4gcmV0 dmFsOwotK30KLSsKLSAvKiBBdHRhY2ggdG8gYW4gaW5mZXJpb3IgcHJvY2Vzcy4gICovCi0gCi0g c3RhdGljIHZvaWQKLUBAIC02NDMsNiArNjc0LDMzIEBACi0gICAgICBwdHJhY2UgY2FsbCBvbiB0 aGlzIExXUC4gICovCi0gICBuZXdfbHdwLT5tdXN0X3NldF9wdHJhY2VfZmxhZ3MgPSAxOwotIAot KyAgaWYgKHBpZF9pc19zdG9wcGVkIChsd3BpZCkpCi0rICAgIHsKLSsgICAgICBpZiAoZGVidWdf dGhyZWFkcykKLSsJZnByaW50ZiAoc3RkZXJyLAotKwkJICJBdHRhY2hlZCB0byBhIHN0b3BwZWQg cHJvY2Vzc1xuIik7Ci0rCi0rICAgICAgLyogVGhlIHByb2Nlc3MgaXMgZGVmaW5pdGVseSBzdG9w cGVkLiAgSXQgaXMgaW4gYSBqb2IgY29udHJvbAotKwkgc3RvcCwgdW5sZXNzIHRoZSBrZXJuZWwg cHJlZGF0ZXMgdGhlIFRBU0tfU1RPUFBFRCAvCi0rCSBUQVNLX1RSQUNFRCBkaXN0aW5jdGlvbiwg aW4gd2hpY2ggY2FzZSBpdCBtaWdodCBiZSBpbiBhCi0rCSBwdHJhY2Ugc3RvcC4gIE1ha2Ugc3Vy ZSBpdCBpcyBpbiBhIHB0cmFjZSBzdG9wOyBmcm9tIHRoZXJlIHdlCi0rCSBjYW4ga2lsbCBpdCwg c2lnbmFsIGl0LCBldCBjZXRlcmEuCi0rCi0rCSBGaXJzdCBtYWtlIHN1cmUgdGhlcmUgaXMgYSBw ZW5kaW5nIFNJR1NUT1AuICBTaW5jZSB3ZSBhcmUKLSsJIGFscmVhZHkgYXR0YWNoZWQsIHRoZSBw cm9jZXNzIGNhbiBub3QgdHJhbnNpdGlvbiBmcm9tIHN0b3BwZWQKLSsJIHRvIHJ1bm5pbmcgd2l0 aG91dCBhIFBUUkFDRV9DT05UOyBzbyB3ZSBrbm93IHRoaXMgc2lnbmFsIHdpbGwKLSsJIGdvIGlu dG8gdGhlIHF1ZXVlLiAgVGhlIFNJR1NUT1AgZ2VuZXJhdGVkIGJ5IFBUUkFDRV9BVFRBQ0ggaXMK LSsJIHByb2JhYmx5IGFscmVhZHkgaW4gdGhlIHF1ZXVlICh1bmxlc3MgdGhpcyBrZXJuZWwgaXMg b2xkCi0rCSBlbm91Z2ggdG8gdXNlIFRBU0tfU1RPUFBFRCBmb3IgcHRyYWNlIHN0b3BzKTsgYnV0 IHNpbmNlCi0rCSBTSUdTVE9QIGlzIG5vdCBhbiBSVCBzaWduYWwsIGl0IGNhbiBvbmx5IGJlIHF1 ZXVlZCBvbmNlLiAgKi8KLSsgICAgICBraWxsX2x3cCAobHdwaWQsIFNJR1NUT1ApOwotKwotKyAg ICAgIC8qIEZpbmFsbHksIHJlc3VtZSB0aGUgc3RvcHBlZCBwcm9jZXNzLiAgVGhpcyB3aWxsIGRl bGl2ZXIgdGhlCi0rCSBTSUdTVE9QIChvciBhIGhpZ2hlciBwcmlvcml0eSBzaWduYWwsIGp1c3Qg bGlrZSBub3JtYWwKLSsJIFBUUkFDRV9BVFRBQ0gpLCB3aGljaCB3ZSdsbCBjYXRjaCBsYXRlciBv bi4gICovCi0rICAgICAgcHRyYWNlIChQVFJBQ0VfQ09OVCwgbHdwaWQsIDAsIDApOwotKyAgICB9 Ci0rCi0gICAvKiBUaGUgbmV4dCB0aW1lIHdlIHdhaXQgZm9yIHRoaXMgTFdQIHdlJ2xsIHNlZSBh IFNJR1NUT1AgYXMgUFRSQUNFX0FUVEFDSAotICAgICAgYnJpbmdzIGl0IHRvIGEgaGFsdC4KLSAK CmRpZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy0yb2Y1LnBhdGNoIGIvZ2RiLWF0 dGFjaC1mYWlsLXJlYXNvbnMtMm9mNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOTI1NjViOS4uMDAwMDAwMAotLS0gYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy0yb2Y1LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMTItMDIvbXNnMDAxODEuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMi8wMi8yNCAyMzo0ODozNwkxLjEzODY5Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMi8yNyAxNjoyMjowNgkxLjEzODcwCi0jIyAtMSwzICsxLDEzIEBACi0rMjAxMi0wMi0yNyAg UGVkcm8gQWx2ZXMgIDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSsKLSsJKiBsaW51eC1uYXQuYyAocGlk X2lzX3N0b3BwZWQpOiBEZWxldGUsIG1vdmVkIHRvIGNvbW1vbi8uCi0rCShsaW51eF9uYXRfcG9z dF9hdHRhY2hfd2FpdCk6IEFkanVzdCB0byB1c2UKLSsJbGludXhfcHJvY19waWRfaXNfc3RvcHBl ZC4KLSsJKiBjb21tb24vbGludXgtcHJvY2ZzLmggKGxpbnV4X3Byb2NfcGlkX2lzX3N0b3BwZWQp OiBEZWNsYXJlLgotKwkqIGNvbW1vbi9saW51eC1wcm9jZnMuYyAobGludXhfcHJvY19waWRfaXNf c3RvcHBlZCk6IE5ldyBmdW5jdGlvbiwKLSsJYmFzZWQgb24gcGlkX2lzX3N0b3BwZWQgZnJvbSBi b3RoIGxpbnV4LW5hdC5jIGFuZAotKwlnZGJzZXJ2ZXIvbGludXgtbG93LmMsIGFuZCByZW5hbWVk LgotKwotIDIwMTItMDItMjQgIE1hY2llaiBXLiBSb3p5Y2tpICA8bWFjcm9AY29kZXNvdXJjZXJ5 LmNvbT4KLSAKLSAJKiByZW1vdGUuYyAocmVtb3RlX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFu Z2UpOiBOZXcgZnVuY3Rpb24uCi0tLS0gc3JjL2dkYi9saW51eC1uYXQuYwkyMDEyLzAyLzE2IDIx OjA3OjIwCTEuMjM5Ci0rKysgc3JjL2dkYi9saW51eC1uYXQuYwkyMDEyLzAyLzI3IDE2OjIyOjEz CTEuMjQwCi1AQCAtMTM1NiwzNyArMTM1Niw2IEBACi0gICBkZWxldGVfbHdwIChscC0+cHRpZCk7 Ci0gfQotIAotLS8qIERldGVjdCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3RhdHVzJy4K LS0gICBPdGhlciBzdGF0ZXMgaW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUgcmVwb3J0 ZWQgYXMgZmFsc2UuICAqLwotLQotLXN0YXRpYyBpbnQKLS1waWRfaXNfc3RvcHBlZCAocGlkX3Qg cGlkKQotLXsKLS0gIEZJTEUgKnN0YXR1c19maWxlOwotLSAgY2hhciBidWZbMTAwXTsKLS0gIGlu dCByZXR2YWwgPSAwOwotLQotLSAgc25wcmludGYgKGJ1Ziwgc2l6ZW9mIChidWYpLCAiL3Byb2Mv JWQvc3RhdHVzIiwgKGludCkgcGlkKTsKLS0gIHN0YXR1c19maWxlID0gZm9wZW4gKGJ1ZiwgInIi KTsKLS0gIGlmIChzdGF0dXNfZmlsZSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaW50IGhhdmVf c3RhdGUgPSAwOwotLQotLSAgICAgIHdoaWxlIChmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1ZiksIHN0 YXR1c19maWxlKSkKLS0JewotLQkgIGlmIChzdHJuY21wIChidWYsICJTdGF0ZToiLCA2KSA9PSAw KQotLQkgICAgewotLQkgICAgICBoYXZlX3N0YXRlID0gMTsKLS0JICAgICAgYnJlYWs7Ci0tCSAg ICB9Ci0tCX0KLS0gICAgICBpZiAoaGF2ZV9zdGF0ZSAmJiBzdHJzdHIgKGJ1ZiwgIlQgKHN0b3Bw ZWQpIikgIT0gTlVMTCkKLS0JcmV0dmFsID0gMTsKLS0gICAgICBmY2xvc2UgKHN0YXR1c19maWxl KTsKLS0gICAgfQotLSAgcmV0dXJuIHJldHZhbDsKLS19Ci0tCi0gLyogV2FpdCBmb3IgdGhlIExX UCBzcGVjaWZpZWQgYnkgTFAsIHdoaWNoIHdlIGhhdmUganVzdCBhdHRhY2hlZCB0by4KLSAgICBS ZXR1cm5zIGEgd2FpdCBzdGF0dXMgZm9yIHRoYXQgTFdQLCB0byBjYWNoZS4gICovCi0gCi1AQCAt MTM5Nyw3ICsxMzY2LDcgQEAKLSAgIHBpZF90IG5ld19waWQsIHBpZCA9IEdFVF9MV1AgKHB0aWQp OwotICAgaW50IHN0YXR1czsKLSAKLS0gIGlmIChwaWRfaXNfc3RvcHBlZCAocGlkKSkKLSsgIGlm IChsaW51eF9wcm9jX3BpZF9pc19zdG9wcGVkIChwaWQpKQotICAgICB7Ci0gICAgICAgaWYgKGRl YnVnX2xpbnV4X25hdCkKLSAJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotLS0tIHNy Yy9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5jCTIwMTIvMDEvMDQgMDg6MTc6MTgJMS4yCi0rKysg c3JjL2dkYi9jb21tb24vbGludXgtcHJvY2ZzLmMJMjAxMi8wMi8yNyAxNjoyMjoxNAkxLjMKLUBA IC01MywzICs1MywzNCBAQAotIAotICAgcmV0dXJuIHRnaWQ7Ci0gfQotKwotKy8qIERldGVjdCBg VCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3RhdHVzJy4KLSsgICBPdGhlciBzdGF0ZXMgaW5j bHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUgcmVwb3J0ZWQgYXMgZmFsc2UuICAqLwotKwot K2ludAotK2xpbnV4X3Byb2NfcGlkX2lzX3N0b3BwZWQgKHBpZF90IHBpZCkKLSt7Ci0rICBGSUxF ICpzdGF0dXNfZmlsZTsKLSsgIGNoYXIgYnVmWzEwMF07Ci0rICBpbnQgcmV0dmFsID0gMDsKLSsK LSsgIHNucHJpbnRmIChidWYsIHNpemVvZiAoYnVmKSwgIi9wcm9jLyVkL3N0YXR1cyIsIChpbnQp IHBpZCk7Ci0rICBzdGF0dXNfZmlsZSA9IGZvcGVuIChidWYsICJyIik7Ci0rICBpZiAoc3RhdHVz X2ZpbGUgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGludCBoYXZlX3N0YXRlID0gMDsKLSsKLSsg ICAgICB3aGlsZSAoZmdldHMgKGJ1Ziwgc2l6ZW9mIChidWYpLCBzdGF0dXNfZmlsZSkpCi0rCXsK LSsJICBpZiAoc3RybmNtcCAoYnVmLCAiU3RhdGU6IiwgNikgPT0gMCkKLSsJICAgIHsKLSsJICAg ICAgaGF2ZV9zdGF0ZSA9IDE7Ci0rCSAgICAgIGJyZWFrOwotKwkgICAgfQotKwl9Ci0rICAgICAg aWYgKGhhdmVfc3RhdGUgJiYgc3Ryc3RyIChidWYsICJUIChzdG9wcGVkKSIpICE9IE5VTEwpCi0r CXJldHZhbCA9IDE7Ci0rICAgICAgZmNsb3NlIChzdGF0dXNfZmlsZSk7Ci0rICAgIH0KLSsgIHJl dHVybiByZXR2YWw7Ci0rfQotLS0tIHNyYy9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5oCTIwMTIv MDEvMDQgMDg6MTc6MTgJMS4yCi0rKysgc3JjL2dkYi9jb21tb24vbGludXgtcHJvY2ZzLmgJMjAx Mi8wMi8yNyAxNjoyMjoxNQkxLjMKLUBAIC0yNiw0ICsyNiw5IEBACi0gCi0gZXh0ZXJuIGludCBs aW51eF9wcm9jX2dldF90Z2lkIChpbnQgbHdwaWQpOwotIAotKy8qIERldGVjdCBgVCAoc3RvcHBl ZCknIGluIGAvcHJvYy9QSUQvc3RhdHVzJy4KLSsgICBPdGhlciBzdGF0ZXMgaW5jbHVkaW5nIGBU ICh0cmFjaW5nIHN0b3ApJyBhcmUgcmVwb3J0ZWQgYXMgZmFsc2UuICAqLwotKwotK2V4dGVybiBp bnQgbGludXhfcHJvY19waWRfaXNfc3RvcHBlZCAocGlkX3QgcGlkKTsKLSsKLSAjZW5kaWYgLyog Q09NTU9OX0xJTlVYX1BST0NGU19IICovCi0jIyMgc3JjL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9n CTIwMTIvMDIvMjcgMTY6MTk6MTkJMS41NTcKLSMjIyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VM b2cJMjAxMi8wMi8yNyAxNjoyMjoxNQkxLjU1OAotIyMgLTEsNSArMSwxMCBAQAotIDIwMTItMDIt MjcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0rCSogbGludXgtbG93LmMg KHBpZF9pc19zdG9wcGVkKTogRGVsZXRlLCBtb3ZlZCB0byBjb21tb24vLgotKwkobGludXhfYXR0 YWNoX2x3cF8xKTogQWRqdXN0IHRvIHVzZSBsaW51eF9wcm9jX3BpZF9pc19zdG9wcGVkLgotKwot KzIwMTItMDItMjcgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0rCi0gCVBSIHNl cnZlci85Njg0Ci0gCSogbGludXgtbG93LmMgKHBpZF9pc19zdG9wcGVkKTogTmV3LgotIAkobGlu dXhfYXR0YWNoX2x3cF8xKTogSGFuZGxlIGF0dGFjaGluZyB0byAnVCAoc3RvcHBlZCknIHByb2Nl c3Nlcy4KLS0tLSBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLzAyLzI3IDE2OjE5 OjE5CTEuMTk0Ci0rKysgc3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMi8wMi8yNyAx NjoyMjoxNgkxLjE5NQotQEAgLTU5OCwzNyArNTk4LDYgQEAKLSAgIHJldHVybiBwaWQ7Ci0gfQot IAotLS8qIERldGVjdCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3RhdHVzJy4KLS0gICBP dGhlciBzdGF0ZXMgaW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUgcmVwb3J0ZWQgYXMg ZmFsc2UuICAqLwotLQotLXN0YXRpYyBpbnQKLS1waWRfaXNfc3RvcHBlZCAocGlkX3QgcGlkKQot LXsKLS0gIEZJTEUgKnN0YXR1c19maWxlOwotLSAgY2hhciBidWZbMTAwXTsKLS0gIGludCByZXR2 YWwgPSAwOwotLQotLSAgc25wcmludGYgKGJ1Ziwgc2l6ZW9mIChidWYpLCAiL3Byb2MvJWQvc3Rh dHVzIiwgKGludCkgcGlkKTsKLS0gIHN0YXR1c19maWxlID0gZm9wZW4gKGJ1ZiwgInIiKTsKLS0g IGlmIChzdGF0dXNfZmlsZSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaW50IGhhdmVfc3RhdGUg PSAwOwotLQotLSAgICAgIHdoaWxlIChmZ2V0cyAoYnVmLCBzaXplb2YgKGJ1ZiksIHN0YXR1c19m aWxlKSkKLS0JewotLQkgIGlmIChzdHJuY21wIChidWYsICJTdGF0ZToiLCA2KSA9PSAwKQotLQkg ICAgewotLQkgICAgICBoYXZlX3N0YXRlID0gMTsKLS0JICAgICAgYnJlYWs7Ci0tCSAgICB9Ci0t CX0KLS0gICAgICBpZiAoaGF2ZV9zdGF0ZSAmJiBzdHJzdHIgKGJ1ZiwgIlQgKHN0b3BwZWQpIikg IT0gTlVMTCkKLS0JcmV0dmFsID0gMTsKLS0gICAgICBmY2xvc2UgKHN0YXR1c19maWxlKTsKLS0g ICAgfQotLSAgcmV0dXJuIHJldHZhbDsKLS19Ci0tCi0gLyogQXR0YWNoIHRvIGFuIGluZmVyaW9y IHByb2Nlc3MuICAqLwotIAotIHN0YXRpYyB2b2lkCi1AQCAtNjc0LDcgKzY0Myw3IEBACi0gICAg ICBwdHJhY2UgY2FsbCBvbiB0aGlzIExXUC4gICovCi0gICBuZXdfbHdwLT5tdXN0X3NldF9wdHJh Y2VfZmxhZ3MgPSAxOwotIAotLSAgaWYgKHBpZF9pc19zdG9wcGVkIChsd3BpZCkpCi0rICBpZiAo bGludXhfcHJvY19waWRfaXNfc3RvcHBlZCAobHdwaWQpKQotICAgICB7Ci0gICAgICAgaWYgKGRl YnVnX3RocmVhZHMpCi0gCWZwcmludGYgKHN0ZGVyciwKCmRpZmYgLS1naXQgYS9nZGItYXR0YWNo LWZhaWwtcmVhc29ucy0zb2Y1LnBhdGNoIGIvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtM29mNS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE2NjE4ZS4uMDAwMDAwMAotLS0g YS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy0zb2Y1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NTgzICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAz L21zZzAwMTY5Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAxLzNdIGF0dGFjaC1mYWlsLXJlYXNvbnM6 IFJlc2h1ZmZsZSBjb2RlCi0KLUhpLAotCi10aGlzIHBhdGNoIGRvZXMgbm90IG1ha2Ugc2Vuc2Ug b24gaXRzIG93biBidXQgaXQgY29udGFpbnMgYWxsIHRoZQotdW5pbnRlcmVzdGluZyBjb2RlIG1v dmVzIC8gcmVjb25maWd1cmF0aW9ucy4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEy LTAzLTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkq IE1ha2VmaWxlLmluIChsaW51eC1wdHJhY2Uubyk6IE5ldy4KLQkqIGNvbW1vbi9saW51eC1wcm9j ZnMuYyAobGludXhfcHJvY19waWRfaXNfem9tYmllKTogTmV3LAotCWZyb20gbGludXgtbmF0LmMu Ci0JKiBjb21tb24vbGludXgtcHJvY2ZzLmggKGxpbnV4X3Byb2NfcGlkX2lzX3pvbWJpZSk6IE5l dyBkZWNsYXJhdGlvbi4KLQkqIGNvbW1vbi9saW51eC1wdHJhY2UuYzogTmV3IGZpbGUuCi0JKiBj b25maWcvYWxwaGEvYWxwaGEtbGludXgubWggKE5BVERFUEZJTEVTKTogQWRkIGxpbnV4LXB0cmFj ZS5vLgotCSogY29uZmlnL2FybS9saW51eC5taDogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9s aW51eC5taDogTGlrZXdpc2UuCi0JKiBjb25maWcvaTM4Ni9saW51eDY0Lm1oOiBMaWtld2lzZS4K LQkqIGNvbmZpZy9pYTY0L2xpbnV4Lm1oOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9tMzJyL2xpbnV4 Lm1oOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9tNjhrL2xpbnV4Lm1oOiBMaWtld2lzZS4KLQkqIGNv bmZpZy9taXBzL2xpbnV4Lm1oOiBMaWtld2lzZS4KLQkqIGNvbmZpZy9wYS9saW51eC5taDogTGlr ZXdpc2UuCi0JKiBjb25maWcvcG93ZXJwYy9saW51eC5taDogTGlrZXdpc2UuCi0JKiBjb25maWcv cG93ZXJwYy9wcGM2NC1saW51eC5taDogTGlrZXdpc2UuCi0JKiBjb25maWcvcG93ZXJwYy9zcHUt bGludXgubWg6IExpa2V3aXNlLgotCSogY29uZmlnL3MzOTAvczM5MC5taDogTGlrZXdpc2UuCi0J KiBjb25maWcvc3BhcmMvbGludXgubWg6IExpa2V3aXNlLgotCSogY29uZmlnL3NwYXJjL2xpbnV4 NjQubWg6IExpa2V3aXNlLgotCSogY29uZmlnL3h0ZW5zYS9saW51eC5taDogTGlrZXdpc2UuCi0J KiBsaW51eC1uYXQuYyAobGludXhfbHdwX2lzX3pvbWJpZSk6IFJlbW92ZSwgbW92ZSBpdCB0bwot CWNvbW1vbi9saW51eC1wcm9jZnMuYy4KLQkod2FpdF9sd3ApOiBSZW5hbWUgbGludXhfbHdwX2lz X3pvbWJpZSB0byBsaW51eF9wcm9jX3BpZF9pc196b21iaWUuCi0KLWdkYi9nZGJzZXJ2ZXIvCi0y MDEyLTAzLTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0K LQkqIE1ha2VmaWxlLmluIChsaW51eC1wdHJhY2Uubyk6IE5ldy4KLQkqIGNvbmZpZ3VyZS5zcnYg KGFybSotKi1saW51eCosIGJmaW4tKi0qbGludXgqLCBjcmlzdjMyLSotbGludXgqKQotCShjcmlz LSotbGludXgqLCBpWzM0NTY3XTg2LSotbGludXgqLCBpYTY0LSotbGludXgqLCBtMzJyKi0qLWxp bnV4KikKLQkobTY4Ki0qLWxpbnV4KiwgbTY4Ki0qLXVjbGludXgqLCBtaXBzKi0qLWxpbnV4Kiwg cG93ZXJwYyotKi1saW51eCopCi0JKHMzOTAqLSotbGludXgqLCBzaCotKi1saW51eCosIHNwYXJj Ki0qLWxpbnV4KiwgdGljNngtKi11Y2xpbnV4KQotCSh4ODZfNjQtKi1saW51eCosIHh0ZW5zYSot Ki1saW51eCopOiBBZGQgbGludXgtcHRyYWNlLm8gdG8gU1JWX1RHVE9CSgotCW9mIHRoZXNlIHRh cmdldHMuCi0JKiBsaW51eC1sb3cuYyAobGludXhfYXR0YWNoX2x3cF8xKTogUmVtb3ZlIHJlZHVu ZGVudCBlbHNlIGNsYXVzZS4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL01ha2Vm aWxlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9NYWtl ZmlsZS5pbgkyMDEyLTAzLTA2IDA3OjM5OjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL01ha2VmaWxlLmluCTIwMTItMDMtMDYgMDc6Mzk6NTAuNzcxNzEzMTI4 ICswMTAwCi1AQCAtMTk2OCw2ICsxOTY4LDEwIEBAIGxpbnV4LXByb2Nmcy5vOiAkKHNyY2Rpcikv Y29tbW9uL2xpbnV4LXAKLSAJJChDT01QSUxFKSAkKHNyY2RpcikvY29tbW9uL2xpbnV4LXByb2Nm cy5jCi0gCSQoUE9TVENPTVBJTEUpCi0gCi0rbGludXgtcHRyYWNlLm86ICQoc3JjZGlyKS9jb21t b24vbGludXgtcHRyYWNlLmMKLSsJJChDT01QSUxFKSAkKHNyY2RpcikvY29tbW9uL2xpbnV4LXB0 cmFjZS5jCi0rCSQoUE9TVENPTVBJTEUpCi0rCi0gIwotICMgZ2RiL3R1aS8gZGVwZW5kZW5jaWVz Ci0gIwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbW1vbi9saW51eC1wcm9jZnMu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29tbW9uL2xp bnV4LXByb2Nmcy5jCTIwMTItMDMtMDYgMDc6Mzk6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5jCTIwMTItMDMtMDYgMDc6 Mzk6NTAuNzcxNzEzMTI4ICswMTAwCi1AQCAtODQsMyArODQsMzQgQEAgbGludXhfcHJvY19waWRf aXNfc3RvcHBlZCAocGlkX3QgcGlkKQotICAgICB9Ci0gICByZXR1cm4gcmV0dmFsOwotIH0KLSsK LSsvKiBTZWUgbGludXgtcHJvY2ZzLmggZGVjbGFyYXRpb24uICAqLwotKwotK2ludAotK2xpbnV4 X3Byb2NfcGlkX2lzX3pvbWJpZSAocGlkX3QgcGlkKQotK3sKLSsgIGNoYXIgYnVmZmVyWzEwMF07 Ci0rICBGSUxFICpwcm9jZmlsZTsKLSsgIGludCByZXR2YWw7Ci0rICBpbnQgaGF2ZV9zdGF0ZTsK LSsKLSsgIHhzbnByaW50ZiAoYnVmZmVyLCBzaXplb2YgKGJ1ZmZlciksICIvcHJvYy8lZC9zdGF0 dXMiLCAoaW50KSBwaWQpOwotKyAgcHJvY2ZpbGUgPSBmb3BlbiAoYnVmZmVyLCAiciIpOwotKyAg aWYgKHByb2NmaWxlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICB3YXJuaW5nIChfKCJ1bmFibGUg dG8gb3BlbiAvcHJvYyBmaWxlICclcyciKSwgYnVmZmVyKTsKLSsgICAgICByZXR1cm4gMDsKLSsg ICAgfQotKwotKyAgaGF2ZV9zdGF0ZSA9IDA7Ci0rICB3aGlsZSAoZmdldHMgKGJ1ZmZlciwgc2l6 ZW9mIChidWZmZXIpLCBwcm9jZmlsZSkgIT0gTlVMTCkKLSsgICAgaWYgKHN0cm5jbXAgKGJ1ZmZl ciwgIlN0YXRlOiIsIDYpID09IDApCi0rICAgICAgewotKwloYXZlX3N0YXRlID0gMTsKLSsJYnJl YWs7Ci0rICAgICAgfQotKyAgcmV0dmFsID0gKGhhdmVfc3RhdGUKLSsJICAgICYmIHN0cmNtcCAo YnVmZmVyLCAiU3RhdGU6XHRaICh6b21iaWUpXG4iKSA9PSAwKTsKLSsgIGZjbG9zZSAocHJvY2Zp bGUpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9jb21tb24vbGludXgtcHJvY2ZzLmgJMjAxMi0wMy0wNiAwNzozOTo0MS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb21tb24vbGludXgt cHJvY2ZzLmgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzE3MTMxMjggKzAxMDAKLUBAIC0zMSw0ICsz MSw4IEBAIGV4dGVybiBpbnQgbGludXhfcHJvY19nZXRfdGdpZCAoaW50IGx3cGkKLSAKLSBleHRl cm4gaW50IGxpbnV4X3Byb2NfcGlkX2lzX3N0b3BwZWQgKHBpZF90IHBpZCk7Ci0gCi0rLyogUmV0 dXJuIG5vbi16ZXJvIGlmIFBJRCBpcyBhIHpvbWJpZS4gICovCi0rCi0rZXh0ZXJuIGludCBsaW51 eF9wcm9jX3BpZF9pc196b21iaWUgKHBpZF90IHBpZCk7Ci0rCi0gI2VuZGlmIC8qIENPTU1PTl9M SU5VWF9QUk9DRlNfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbW1vbi9s aW51eC1wdHJhY2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbW1vbi9s aW51eC1wdHJhY2UuYwkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3MTcxMzEyOCArMDEwMAotQEAgLTAs MCArMSwyNiBAQAotKy8qIExpbnV4LXNwZWNpZmljIHB0cmFjZSBtYW5pcHVsYXRpb24gcm91dGlu ZXMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rI2lmZGVmIEdEQlNFUlZFUgotKyNpbmNsdWRl ICJzZXJ2ZXIuaCIKLSsjZWxzZQotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImdkYl9z dHJpbmcuaCIKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAibGludXgtcHRyYWNlLmgiCi1JbmRleDog Z2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL2FscGhhL2FscGhhLWxpbnV4Lm1oCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWcvYWxwaGEvYWxw aGEtbGludXgubWgJMjAxMi0wMS0xMCAxNzozMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvYWxwaGEvYWxwaGEtbGludXgubWgJMjAxMi0wMy0w NiAwNzozOTo1MC43NzE3MTMxMjggKzAxMDAKLUBAIC0yLDcgKzIsNyBAQAotIE5BVF9GSUxFPSBj b25maWcvbm0tbGludXguaAotIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8gYWxwaGEtbGludXgt bmF0Lm8gXAotIAlmb3JrLWNoaWxkLm8gcHJvYy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8g XAotLQlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2Zz Lm8KLSsJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nm cy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5s aXN0Ci0gCi0gIyBUaGUgZHluYW1pY2FsbHkgbG9hZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nl c3MgdG8gc3ltYm9scyBpbiB0aGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25m aWcvYXJtL2xpbnV4Lm1oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9jb25maWcvYXJtL2xpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjUuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL2FybS9saW51eC5taAkyMDEy LTAzLTA2IDA3OjM5OjUwLjc3MjcxMzEyNSArMDEwMAotQEAgLTMsNyArMyw3IEBACi0gTkFUX0ZJ TEU9IGNvbmZpZy9ubS1saW51eC5oCi0gTkFUREVQRklMRVM9IGluZi1wdHJhY2UubyBmb3JrLWNo aWxkLm8gYXJtLWxpbnV4LW5hdC5vIFwKLSAJcHJvYy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRi Lm8gXAotLQlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJv Y2ZzLm8KLSsJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXBy b2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2Vydmlj ZS5saXN0Ci0gCi0gTE9BRExJQkVTPSAtbGRsICQoUkRZTkFNSUMpCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvY29uZmlnL2kzODYvbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4Lm1oCTIwMTItMDMtMDYg MDc6Mzk6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29u ZmlnL2kzODYvbGludXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzI3MTMxMjUgKzAxMDAKLUBA IC00LDcgKzQsNyBAQCBOQVRfRklMRT0gbm0tbGludXguaAotIE5BVERFUEZJTEVTPSBpbmYtcHRy YWNlLm8gZm9yay1jaGlsZC5vIFwKLSAJaTM4Ni1uYXQubyBpMzg2LWxpbnV4LW5hdC5vIFwKLSAJ cHJvYy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8gXAotLQlsaW51eC1uYXQubyBsaW51eC1v c2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8KLSsJbGludXgtbmF0Lm8gbGludXgt b3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFU X0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi0gIyBUaGUgZHluYW1pY2Fs bHkgbG9hZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWcvaTM4Ni9saW51 eDY0Lm1oCTIwMTItMDMtMDYgMDc6Mzk6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAkyMDEyLTAzLTA2IDA3OjM5OjUw Ljc3MjcxMzEyNSArMDEwMAotQEAgLTMsNyArMyw3IEBAIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNl Lm8gZm9yay1jaGlsZC5vIFwKLSAJaTM4Ni1uYXQubyBhbWQ2NC1uYXQubyBhbWQ2NC1saW51eC1u YXQubyBcCi0gCWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5vIFwKLSAJcHJvYy1zZXJ2aWNlLm8g bGludXgtdGhyZWFkLWRiLm8gbGludXgtZm9yay5vIFwKLS0JbGludXgtcHJvY2ZzLm8KLSsJbGlu dXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBOQVRfRklMRT0gbm0tbGludXg2NC5oCi0gTkFU X0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvY29uZmlnL2lhNjQvbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy9pYTY0L2xpbnV4Lm1oCTIwMTItMDEtMTAg MTc6MzA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29u ZmlnL2lhNjQvbGludXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzI3MTMxMjUgKzAxMDAKLUBA IC01LDcgKzUsNyBAQCBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBcCi0g CWNvcmUtcmVnc2V0Lm8gaWE2NC1saW51eC1uYXQubyBcCi0gCXByb2Mtc2VydmljZS5vIGxpbnV4 LXRocmVhZC1kYi5vIFwKLSAJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5v IFwKLS0JbGludXgtcHJvY2ZzLm8KLSsJbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBO QVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSBMT0FETElCRVMgPSAt bGRsICQoUkRZTkFNSUMpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL20z MnIvbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2Ri L2NvbmZpZy9tMzJyL2xpbnV4Lm1oCTIwMTItMDEtMTAgMTc6MzA6NDQuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL20zMnIvbGludXgubWgJMjAxMi0w My0wNiAwNzozOTo1MC43NzM3MTMxMjIgKzAxMDAKLUBAIC0zLDcgKzMsNyBAQAotIE5BVF9GSUxF PSBjb25maWcvbm0tbGludXguaAotIE5BVERFUEZJTEVTPSBpbmYtcHRyYWNlLm8gZm9yay1jaGls ZC5vCQkJCVwKLSAJbTMyci1saW51eC1uYXQubyBwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQt ZGIubwlcCi0tCWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LWZvcmsubyBsaW51eC1w cm9jZnMubwotKwlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgt cHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2 aWNlLmxpc3QKLSAKLSBMT0FETElCRVM9IC1sZGwgJChSRFlOQU1JQykKLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvbTY4ay9saW51eC5taAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL202OGsvbGludXgubWgJMjAxMi0wMS0x MCAxNzozMDo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9j b25maWcvbTY4ay9saW51eC5taAkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3MzcxMzEyMiArMDEwMAot QEAgLTQsNyArNCw3IEBAIE5BVF9GSUxFPSBjb25maWcvbm0tbGludXguaAotIE5BVERFUEZJTEVT PSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIFwKLSAJbTY4a2xpbnV4LW5hdC5vIFwKLSAJcHJv Yy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8gXAotLQlsaW51eC1uYXQubyBsaW51eC1vc2Rh dGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8KLSsJbGludXgtbmF0Lm8gbGludXgtb3Nk YXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NE RVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi0gIyBUaGUgZHluYW1pY2FsbHkg bG9hZGVkIGxpYnRocmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcvbWlwcy9saW51eC5taAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL21pcHMvbGludXgubWgJ MjAxMS0wOC0yNCAxNDowNzoyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9jb25maWcvbWlwcy9saW51eC5taAkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3MzcxMzEy MiArMDEwMAotQEAgLTMsNyArMyw3IEBAIE5BVF9GSUxFPSBjb25maWcvbm0tbGludXguaAotIE5B VERFUEZJTEVTPSBpbmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIG1pcHMtbGludXgtbmF0Lm8gXAot IAlsaW51eC10aHJlYWQtZGIubyBwcm9jLXNlcnZpY2UubyBcCi0gCWxpbnV4LW5hdC5vIGxpbnV4 LW9zZGF0YS5vIGxpbnV4LWZvcmsubyBcCi0tCWxpbnV4LXByb2Nmcy5vCi0rCWxpbnV4LXByb2Nm cy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5s aXN0Ci0gCi0gTE9BRExJQkVTID0gLWxkbCAkKFJEWU5BTUlDKQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZy9wYS9saW51eC5taAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL3BhL2xpbnV4Lm1oCTIwMTItMDEtMTAgMTc6MzA6 NDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bh L2xpbnV4Lm1oCTIwMTItMDMtMDYgMDc6Mzk6NTAuNzczNzEzMTIyICswMTAwCi1AQCAtMyw3ICsz LDcgQEAgTkFUX0ZJTEU9IGNvbmZpZy9ubS1saW51eC5oCi0gTkFUREVQRklMRVM9IGluZi1wdHJh Y2UubyBmb3JrLWNoaWxkLm8gXAotIAlocHBhLWxpbnV4LW5hdC5vIHByb2Mtc2VydmljZS5vIGxp bnV4LXRocmVhZC1kYi5vIFwKLSAJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9y ay5vIFwKLS0JbGludXgtcHJvY2ZzLm8KLSsJbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8K LSBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSBMT0FETElCRVMg PSAtbGRsICQoUkRZTkFNSUMpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmln L3Bvd2VycGMvbGludXgubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2NvbmZpZy9wb3dlcnBjL2xpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjcuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bvd2VycGMvbGlu dXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzM3MTMxMjIgKzAxMDAKLUBAIC01LDcgKzUsNyBA QCBYTV9DTElCUz0KLSBOQVRfRklMRT0gY29uZmlnL25tLWxpbnV4LmgKLSBOQVRERVBGSUxFUz0g aW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBcCi0gCXBwYy1saW51eC1uYXQubyBwcm9jLXNlcnZp Y2UubyBsaW51eC10aHJlYWQtZGIubyBcCi0tCWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5vIGxp bnV4LWZvcmsubyBsaW51eC1wcm9jZnMubwotKwlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBs aW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBOQVRfQ0RFUFMgPSAk KHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSBMT0FETElCRVMgPSAtbGRsICQoUkRZTkFN SUMpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bvd2VycGMvcHBjNjQt bGludXgubWgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2Nv bmZpZy9wb3dlcnBjL3BwYzY0LWxpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bvd2VycGMvcHBjNjQt bGludXgubWgJMjAxMi0wMy0wNiAwNzozOTo1MC43NzQ3MTMxMTggKzAxMDAKLUBAIC01LDcgKzUs NyBAQCBYTV9DTElCUz0KLSBOQVRfRklMRT0gY29uZmlnL25tLWxpbnV4LmgKLSBOQVRERVBGSUxF Uz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBcCi0gCXBwYy1saW51eC1uYXQubyBwcm9jLXNl cnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBcCi0tCWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5v IGxpbnV4LWZvcmsubyBsaW51eC1wcm9jZnMubwotKwlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEu byBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8KLSBOQVRfQ0RFUFMg PSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSAjIFRoZSBQb3dlclBDIGhhcyBzZXZl cmUgbGltaXRhdGlvbnMgb24gVE9DIHNpemUsIGFuZCB1c2VzIHRoZW0gZXZlbgotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy9wb3dlcnBjL3NwdS1saW51eC5taAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL3Bvd2VycGMvc3B1 LWxpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3Bvd2VycGMvc3B1LWxpbnV4Lm1oCTIwMTItMDMtMDYg MDc6Mzk6NTAuNzc0NzEzMTE4ICswMTAwCi1AQCAtNCw1ICs0LDUgQEAKLSAjIFBQVSBzaWRlIG9m IHRoZSBDZWxsIEJFIGFuZCBkZWJ1Z2dpbmcgdGhlIFNQVSBzaWRlLgotIAotIE5BVERFUEZJTEVT ID0gc3B1LWxpbnV4LW5hdC5vIGZvcmstY2hpbGQubyBpbmYtcHRyYWNlLm8gXAotLQkgICAgICBs aW51eC1wcm9jZnMubwotKwkgICAgICBsaW51eC1wcm9jZnMubyBsaW51eC1wdHJhY2UubwotIAot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy9zMzkwL3MzOTAubWgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy9zMzkwL3MzOTAu bWgJMjAxMi0wMS0wNSAxODowNzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9jb25maWcvczM5MC9zMzkwLm1oCTIwMTItMDMtMDYgMDc6Mzk6NTAuNzc0NzEz MTE4ICswMTAwCi1AQCAtMiw2ICsyLDYgQEAKLSBOQVRfRklMRT0gY29uZmlnL25tLWxpbnV4LmgK LSBOQVRERVBGSUxFUz0gaW5mLXB0cmFjZS5vIGZvcmstY2hpbGQubyBzMzkwLW5hdC5vIFwKLSAJ bGludXgtdGhyZWFkLWRiLm8gcHJvYy1zZXJ2aWNlLm8gXAotLQlsaW51eC1uYXQubyBsaW51eC1v c2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8KLSsJbGludXgtbmF0Lm8gbGludXgt b3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFU X0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gTE9BRExJQkVTID0gLWxkbCAk KFJEWU5BTUlDKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy9zcGFyYy9s aW51eC5taAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29u ZmlnL3NwYXJjL2xpbnV4Lm1oCTIwMTItMDEtMTAgMTc6MzA6NDkuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnL3NwYXJjL2xpbnV4Lm1oCTIwMTItMDMt MDYgMDc6Mzk6NTAuNzc0NzEzMTE4ICswMTAwCi1AQCAtNCw3ICs0LDcgQEAgTkFUREVQRklMRVM9 IHNwYXJjLW5hdC5vIHNwYXJjLWxpbnV4LW5hdAotIAljb3JlLXJlZ3NldC5vIGZvcmstY2hpbGQu byBpbmYtcHRyYWNlLm8gXAotIAlwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBcCi0g CWxpbnV4LW5hdC5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LWZvcmsubyBcCi0tCWxpbnV4LXByb2Nm cy5vCi0rCWxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNk aXIpL3Byb2Mtc2VydmljZS5saXN0Ci0gCi0gIyBUaGUgZHluYW1pY2FsbHkgbG9hZGVkIGxpYnRo cmVhZF9kYiBuZWVkcyBhY2Nlc3MgdG8gc3ltYm9scyBpbiB0aGUKLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9jb25maWcvc3BhcmMvbGludXg2NC5taAotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnL3NwYXJjL2xpbnV4NjQubWgJMjAxMi0w MS0xMCAxNzozMDo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9jb25maWcvc3BhcmMvbGludXg2NC5taAkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3NTcxMzExNCAr MDEwMAotQEAgLTUsNyArNSw3IEBAIE5BVERFUEZJTEVTPSBzcGFyYy1uYXQubyBzcGFyYzY0LW5h dC5vIHMKLSAJZm9yay1jaGlsZC5vIGluZi1wdHJhY2UubyBcCi0gCXByb2Mtc2VydmljZS5vIGxp bnV4LXRocmVhZC1kYi5vIFwKLSAJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9y ay5vIFwKLS0JbGludXgtcHJvY2ZzLm8KLSsJbGludXgtcHJvY2ZzLm8gbGludXgtcHRyYWNlLm8K LSBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKLSAKLSAjIFRoZSBkeW5h bWljYWxseSBsb2FkZWQgbGlidGhyZWFkX2RiIG5lZWRzIGFjY2VzcyB0byBzeW1ib2xzIGluIHRo ZQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy94dGVuc2EvbGludXgubWgK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZy94dGVu c2EvbGludXgubWgJMjAxMS0wOC0yNCAxNDowNzoyNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jb25maWcveHRlbnNhL2xpbnV4Lm1oCTIwMTItMDMtMDYgMDc6 Mzk6NTAuNzc1NzEzMTE0ICswMTAwCi1AQCAtNCw3ICs0LDcgQEAgTkFUX0ZJTEU9IGNvbmZpZy9u bS1saW51eC5oCi0gCi0gTkFUREVQRklMRVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8geHRl bnNhLWxpbnV4LW5hdC5vIFwKLSAJbGludXgtdGhyZWFkLWRiLm8gcHJvYy1zZXJ2aWNlLm8gXAot LQlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBsaW51eC1mb3JrLm8gbGludXgtcHJvY2ZzLm8K LSsJbGludXgtbmF0Lm8gbGludXgtb3NkYXRhLm8gbGludXgtZm9yay5vIGxpbnV4LXByb2Nmcy5v IGxpbnV4LXB0cmFjZS5vCi0gTkFUX0NERVBTID0gJChzcmNkaXIpL3Byb2Mtc2VydmljZS5saXN0 Ci0gCi0gTE9BRExJQkVTID0gLWxkbCAkKFJEWU5BTUlDKQotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCTIwMTItMDEtMDQgMDk6 MTc6MjMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZ2Ric2Vy dmVyL01ha2VmaWxlLmluCTIwMTItMDMtMDYgMDc6Mzk6NTAuNzc1NzEzMTE0ICswMTAwCi1AQCAt NDA4LDYgKzQwOCw5IEBAIHNpZ25hbHMubzogLi4vY29tbW9uL3NpZ25hbHMuYyAkKHNlcnZlcl8K LSBsaW51eC1wcm9jZnMubzogLi4vY29tbW9uL2xpbnV4LXByb2Nmcy5jICQoc2VydmVyX2gpCi0g CSQoQ0MpIC1jICQoQ1BQRkxBR1MpICQoSU5URVJOQUxfQ0ZMQUdTKSAkPCAtREdEQlNFUlZFUgot IAotK2xpbnV4LXB0cmFjZS5vOiAuLi9jb21tb24vbGludXgtcHRyYWNlLmMgJChzZXJ2ZXJfaCkK LSsJJChDQykgLWMgJChDUFBGTEFHUykgJChJTlRFUk5BTF9DRkxBR1MpICQ8IC1ER0RCU0VSVkVS Ci0rCi0gY29tbW9uLXV0aWxzLm86IC4uL2NvbW1vbi9jb21tb24tdXRpbHMuYyAkKHNlcnZlcl9o KQotIAkkKENDKSAtYyAkKENQUEZMQUdTKSAkKElOVEVSTkFMX0NGTEFHUykgJDwgLURHREJTRVJW RVIKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJl LnNydgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZ2Ric2Vy dmVyL2NvbmZpZ3VyZS5zcnYJMjAxMS0xMi0wNiAxNToxNDo0OS4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLnNydgkyMDEyLTAz LTA2IDA3OjM5OjUwLjc3NTcxMzExNCArMDEwMAotQEAgLTQ3LDYgKzQ3LDcgQEAgY2FzZSAiJHt0 YXJnZXR9IiBpbgotIAkJCXNydl9yZWdvYmo9IiR7c3J2X3JlZ29ian0gYXJtLXdpdGgtdmZwdjMu byIKLSAJCQlzcnZfcmVnb2JqPSIke3Nydl9yZWdvYmp9IGFybS13aXRoLW5lb24ubyIKLSAJCQlz cnZfdGd0b2JqPSJsaW51eC1sb3cubyBsaW51eC1vc2RhdGEubyBsaW51eC1hcm0tbG93Lm8gbGlu dXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2Uu byIKLSAJCQlzcnZfeG1sZmlsZXM9ImFybS13aXRoLWl3bW14dC54bWwiCi0gCQkJc3J2X3htbGZp bGVzPSIke3Nydl94bWxmaWxlc30gYXJtLXdpdGgtdmZwdjIueG1sIgotIAkJCXNydl94bWxmaWxl cz0iJHtzcnZfeG1sZmlsZXN9IGFybS13aXRoLXZmcHYzLnhtbCIKLUBAIC02OSwxNiArNzAsMTkg QEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAkJCTs7Ci0gICBiZmluLSotKmxpbnV4KikJc3J2X3Jl Z29iaj1yZWctYmZpbi5vCi0gCQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRh Lm8gbGludXgtYmZpbi1sb3cubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIke3Ny dl90Z3RvYmp9IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl9saW51eF91c3JyZWdzPXllcwotIAkJ CXNydl9saW51eF90aHJlYWRfZGI9eWVzCi0gCQkJOzsKLSAgIGNyaXN2MzItKi1saW51eCopCXNy dl9yZWdvYmo9cmVnLWNyaXN2MzIubwotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4 LW9zZGF0YS5vIGxpbnV4LWNyaXN2MzItbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3Rn dG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlzcnZfbGludXhfcmVnc2V0 cz15ZXMKLSAJCQlzcnZfbGludXhfdGhyZWFkX2RiPXllcwotIAkJCTs7Ci0gICBjcmlzLSotbGlu dXgqKQlzcnZfcmVnb2JqPXJlZy1jcmlzLm8KLSAJCQlzcnZfdGd0b2JqPSJsaW51eC1sb3cubyBs aW51eC1vc2RhdGEubyBsaW51eC1jcmlzLWxvdy5vIGxpbnV4LXByb2Nmcy5vIgotKwkJCXNydl90 Z3RvYmo9IiR7c3J2X3RndG9ian0gbGludXgtcHRyYWNlLm8iCi0gCQkJc3J2X2xpbnV4X3VzcnJl Z3M9eWVzCi0gCQkJc3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLSAJCQk7OwotQEAgLTkzLDYgKzk3 LDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAkJCSAgICBzcnZfeG1sZmlsZXM9IiR7c3J2X3ht bGZpbGVzfSAkc3J2X2FtZDY0X2xpbnV4X3htbGZpbGVzIgotIAkJCWZpCi0gCQkJc3J2X3RndG9i aj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGludXgteDg2LWxvdy5vIGkzODYtbG93Lm8g aTM4Ny1mcC5vIGxpbnV4LXByb2Nmcy5vIgotKwkJCXNydl90Z3RvYmo9IiR7c3J2X3RndG9ian0g bGludXgtcHRyYWNlLm8iCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi0gCQkJc3J2X2xpbnV4 X3JlZ3NldHM9eWVzCi0gCQkJc3J2X2xpbnV4X3RocmVhZF9kYj15ZXMKLUBAIC0xMjQsMTAgKzEy OSwxMiBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gCQkJOzsKLSAgIGlhNjQtKi1saW51eCopCXNy dl9yZWdvYmo9cmVnLWlhNjQubwotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LW9z ZGF0YS5vIGxpbnV4LWlhNjQtbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0i JHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlzcnZfbGludXhfdXNycmVncz15ZXMK LSAJCQk7OwotICAgbTMyciotKi1saW51eCopCXNydl9yZWdvYmo9cmVnLW0zMnIubwotIAkJCXNy dl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LW0zMnItbG93Lm8gbGlu dXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2Uu byIKLSAJCQlzcnZfbGludXhfdXNycmVncz15ZXMKLSAgCQkJc3J2X2xpbnV4X3RocmVhZF9kYj15 ZXMKLSAJCQk7OwotQEAgLTEzNyw2ICsxNDQsNyBAQCBjYXNlICIke3RhcmdldH0iIGluCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICBzcnZfcmVnb2JqPXJlZy1tNjhrLm8KLSAgICAgICAgICAg ICAgICAgICAgICAgICBmaQotIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0 YS5vIGxpbnV4LW02OGstbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtz cnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlzcnZfbGludXhfdXNycmVncz15ZXMKLSAJ CQlzcnZfbGludXhfcmVnc2V0cz15ZXMKLSAJCQlzcnZfbGludXhfdGhyZWFkX2RiPXllcwotQEAg LTE0NywxMiArMTU1LDE0IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNydl9yZWdvYmo9cmVnLW02OGsubwotICAgICAgICAgICAgICAgICAgICAgICAg IGZpCi0gCQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGludXgtbTY4 ay1sb3cubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9IGxp bnV4LXB0cmFjZS5vIgotIAkJCXNydl9saW51eF91c3JyZWdzPXllcwotIAkJCXNydl9saW51eF9y ZWdzZXRzPXllcwotIAkJCXNydl9saW51eF90aHJlYWRfZGI9eWVzCi0gCQkJOzsKLSAgIG1pcHMq LSotbGludXgqKQlzcnZfcmVnb2JqPSJtaXBzLWxpbnV4Lm8gbWlwczY0LWxpbnV4Lm8iCi0gCQkJ c3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGludXgtbWlwcy1sb3cubyBs aW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9IGxpbnV4LXB0cmFj ZS5vIgotIAkJCXNydl94bWxmaWxlcz0ibWlwcy1saW51eC54bWwiCi0gCQkJc3J2X3htbGZpbGVz PSIke3Nydl94bWxmaWxlc30gbWlwcy1jcHUueG1sIgotIAkJCXNydl94bWxmaWxlcz0iJHtzcnZf eG1sZmlsZXN9IG1pcHMtY3AwLnhtbCIKLUBAIC0xODEsNiArMTkxLDcgQEAgY2FzZSAiJHt0YXJn ZXR9IiBpbgotIAkJCXNydl9yZWdvYmo9IiR7c3J2X3JlZ29ian0gcG93ZXJwYy1pc2EyMDUtYWx0 aXZlYzY0bC5vIgotIAkJCXNydl9yZWdvYmo9IiR7c3J2X3JlZ29ian0gcG93ZXJwYy1pc2EyMDUt dnN4NjRsLm8iCi0gCQkJc3J2X3RndG9iaj0ibGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGlu dXgtcHBjLWxvdy5vIGxpbnV4LXByb2Nmcy5vIgotKwkJCXNydl90Z3RvYmo9IiR7c3J2X3RndG9i an0gbGludXgtcHRyYWNlLm8iCi0gCQkJc3J2X3htbGZpbGVzPSJyczYwMDAvcG93ZXJwYy0zMmwu eG1sIgotIAkJCXNydl94bWxmaWxlcz0iJHtzcnZfeG1sZmlsZXN9IHJzNjAwMC9wb3dlcnBjLWFs dGl2ZWMzMmwueG1sIgotIAkJCXNydl94bWxmaWxlcz0iJHtzcnZfeG1sZmlsZXN9IHJzNjAwMC9w b3dlcnBjLWNlbGwzMmwueG1sIgotQEAgLTIyMyw2ICsyMzQsNyBAQCBjYXNlICIke3RhcmdldH0i IGluCi0gCQkJc3J2X3JlZ29iaj0iJHtzcnZfcmVnb2JqfSBzMzkweC1saW51eDY0djEubyIKLSAJ CQlzcnZfcmVnb2JqPSIke3Nydl9yZWdvYmp9IHMzOTB4LWxpbnV4NjR2Mi5vIgotIAkJCXNydl90 Z3RvYmo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LXMzOTAtbG93Lm8gbGludXgt cHJvY2ZzLm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIK LSAJCQlzcnZfeG1sZmlsZXM9InMzOTAtbGludXgzMi54bWwiCi0gCQkJc3J2X3htbGZpbGVzPSIk e3Nydl94bWxmaWxlc30gczM5MC1saW51eDMydjEueG1sIgotIAkJCXNydl94bWxmaWxlcz0iJHtz cnZfeG1sZmlsZXN9IHMzOTAtbGludXgzMnYyLnhtbCIKLUBAIC0yNDMsMTIgKzI1NSwxNCBAQCBj YXNlICIke3RhcmdldH0iIGluCi0gCQkJOzsKLSAgIHNoKi0qLWxpbnV4KikJCXNydl9yZWdvYmo9 cmVnLXNoLm8KLSAJCQlzcnZfdGd0b2JqPSJsaW51eC1sb3cubyBsaW51eC1vc2RhdGEubyBsaW51 eC1zaC1sb3cubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9 IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl9saW51eF91c3JyZWdzPXllcwotIAkJCXNydl9saW51 eF9yZWdzZXRzPXllcwotIAkJCXNydl9saW51eF90aHJlYWRfZGI9eWVzCi0gCQkJOzsKLSAgIHNw YXJjKi0qLWxpbnV4KikJc3J2X3JlZ29iaj1yZWctc3BhcmM2NC5vCi0gCQkJc3J2X3RndG9iaj0i bGludXgtbG93Lm8gbGludXgtb3NkYXRhLm8gbGludXgtc3BhcmMtbG93Lm8gbGludXgtcHJvY2Zz Lm8iCi0rCQkJc3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlz cnZfbGludXhfcmVnc2V0cz15ZXMKLSAJCQlzcnZfbGludXhfdGhyZWFkX2RiPXllcwotIAkJCTs7 Ci1AQCAtMjY1LDEyICsyNzksMTQgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAkJCXNydl94bWxm aWxlcz0iJHtzcnZfeG1sZmlsZXN9IHRpYzZ4LWdwLnhtbCIKLSAJCQlzcnZfeG1sZmlsZXM9IiR7 c3J2X3htbGZpbGVzfSB0aWM2eC1jNnhwLnhtbCIKLSAgIAkJCXNydl90Z3RvYmo9ImxpbnV4LWxv dy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LXRpYzZ4LWxvdy5vIGxpbnV4LXByb2Nmcy5vIgotKwkJ CXNydl90Z3RvYmo9IiR7c3J2X3RndG9ian0gbGludXgtcHRyYWNlLm8iCi0gCQkJc3J2X2xpbnV4 X3JlZ3NldHM9eWVzCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVzCi0gCQkJc3J2X2xpbnV4X3Ro cmVhZF9kYj15ZXMKLSAJCQk7OwotICAgeDg2XzY0LSotbGludXgqKQlzcnZfcmVnb2JqPSIkc3J2 X2FtZDY0X2xpbnV4X3JlZ29iaiAkc3J2X2kzODZfbGludXhfcmVnb2JqIgotIAkJCXNydl90Z3Rv Ymo9ImxpbnV4LWxvdy5vIGxpbnV4LW9zZGF0YS5vIGxpbnV4LXg4Ni1sb3cubyBpMzg2LWxvdy5v IGkzODctZnAubyBsaW51eC1wcm9jZnMubyIKLSsJCQlzcnZfdGd0b2JqPSIke3Nydl90Z3RvYmp9 IGxpbnV4LXB0cmFjZS5vIgotIAkJCXNydl94bWxmaWxlcz0iJHNydl9pMzg2X2xpbnV4X3htbGZp bGVzICRzcnZfYW1kNjRfbGludXhfeG1sZmlsZXMiCi0gCQkJc3J2X2xpbnV4X3VzcnJlZ3M9eWVz ICMgVGhpcyBpcyBmb3IgaTM4NiBwcm9ncy4KLSAJCQlzcnZfbGludXhfcmVnc2V0cz15ZXMKLUBA IC0yODUsNiArMzAxLDcgQEAgY2FzZSAiJHt0YXJnZXR9IiBpbgotIAotICAgeHRlbnNhKi0qLWxp bnV4KikJc3J2X3JlZ29iaj1yZWcteHRlbnNhLm8KLSAJCQlzcnZfdGd0b2JqPSJsaW51eC1sb3cu byBsaW51eC1vc2RhdGEubyBsaW51eC14dGVuc2EtbG93Lm8gbGludXgtcHJvY2ZzLm8iCi0rCQkJ c3J2X3RndG9iaj0iJHtzcnZfdGd0b2JqfSBsaW51eC1wdHJhY2UubyIKLSAJCQlzcnZfbGludXhf cmVnc2V0cz15ZXMKLSAJCQk7OwotICAgKikJCQllY2hvICJFcnJvcjogdGFyZ2V0IG5vdCBzdXBw b3J0ZWQgYnkgZ2Ric2VydmVyLiIKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJz ZXJ2ZXIvbGludXgtbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9y aWcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLTAzLTA2IDA3OjM5OjQxLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cu YwkyMDEyLTAzLTA2IDA3OjM5OjUwLjc3NjcxMzExMSArMDEwMAotQEAgLTYzMCwxMCArNjMwLDEw IEBAIGxpbnV4X2F0dGFjaF9sd3BfMSAodW5zaWduZWQgbG9uZyBsd3BpZCwKLSAJICBmZmx1c2gg KHN0ZGVycik7Ci0gCSAgcmV0dXJuOwotIAl9Ci0tICAgICAgZWxzZQotLQkvKiBJZiB3ZSBmYWls IHRvIGF0dGFjaCB0byBhIHByb2Nlc3MsIHJlcG9ydCBhbiBlcnJvci4gICovCi0tCWVycm9yICgi Q2Fubm90IGF0dGFjaCB0byBsd3AgJWxkOiAlcyAoJWQpXG4iLCBsd3BpZCwKLS0JICAgICAgIHN0 cmVycm9yIChlcnJubyksIGVycm5vKTsKLSsKLSsgICAgICAvKiBJZiB3ZSBmYWlsIHRvIGF0dGFj aCB0byBhIHByb2Nlc3MsIHJlcG9ydCBhbiBlcnJvci4gICovCi0rICAgICAgZXJyb3IgKCJDYW5u b3QgYXR0YWNoIHRvIGx3cCAlbGQ6ICVzICglZClcbiIsIGx3cGlkLAotKwkgICAgIHN0cmVycm9y IChlcnJubyksIGVycm5vKTsKLSAgICAgfQotIAotICAgaWYgKGluaXRpYWwpCi1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDMtMDYgMDc6Mzk6NDEuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvbGludXgtbmF0LmMJMjAx Mi0wMy0wNiAwNzozOTo1MC43Nzc3MTMxMDggKzAxMDAKLUBAIC0yNDY0LDM3ICsyNDY0LDYgQEAg bGludXhfaGFuZGxlX2V4dGVuZGVkX3dhaXQgKHN0cnVjdCBsd3BfaQotIAkJICBfKCJ1bmtub3du IHB0cmFjZSBldmVudCAlZCIpLCBldmVudCk7Ci0gfQotIAotLS8qIFJldHVybiBub24temVybyBp ZiBMV1AgaXMgYSB6b21iaWUuICAqLwotLQotLXN0YXRpYyBpbnQKLS1saW51eF9sd3BfaXNfem9t YmllIChsb25nIGx3cCkKLS17Ci0tICBjaGFyIGJ1ZmZlcltNQVhQQVRITEVOXTsKLS0gIEZJTEUg KnByb2NmaWxlOwotLSAgaW50IHJldHZhbDsKLS0gIGludCBoYXZlX3N0YXRlOwotLQotLSAgeHNu cHJpbnRmIChidWZmZXIsIHNpemVvZiAoYnVmZmVyKSwgIi9wcm9jLyVsZC9zdGF0dXMiLCBsd3Ap OwotLSAgcHJvY2ZpbGUgPSBmb3BlbiAoYnVmZmVyLCAiciIpOwotLSAgaWYgKHByb2NmaWxlID09 IE5VTEwpCi0tICAgIHsKLS0gICAgICB3YXJuaW5nIChfKCJ1bmFibGUgdG8gb3BlbiAvcHJvYyBm aWxlICclcyciKSwgYnVmZmVyKTsKLS0gICAgICByZXR1cm4gMDsKLS0gICAgfQotLQotLSAgaGF2 ZV9zdGF0ZSA9IDA7Ci0tICB3aGlsZSAoZmdldHMgKGJ1ZmZlciwgc2l6ZW9mIChidWZmZXIpLCBw cm9jZmlsZSkgIT0gTlVMTCkKLS0gICAgaWYgKHN0cm5jbXAgKGJ1ZmZlciwgIlN0YXRlOiIsIDYp ID09IDApCi0tICAgICAgewotLQloYXZlX3N0YXRlID0gMTsKLS0JYnJlYWs7Ci0tICAgICAgfQot LSAgcmV0dmFsID0gKGhhdmVfc3RhdGUKLS0JICAgICYmIHN0cmNtcCAoYnVmZmVyLCAiU3RhdGU6 XHRaICh6b21iaWUpXG4iKSA9PSAwKTsKLS0gIGZjbG9zZSAocHJvY2ZpbGUpOwotLSAgcmV0dXJu IHJldHZhbDsKLS19Ci0tCi0gLyogV2FpdCBmb3IgTFAgdG8gc3RvcC4gIFJldHVybnMgdGhlIHdh aXQgc3RhdHVzLCBvciAwIGlmIHRoZSBMV1AgaGFzCi0gICAgZXhpdGVkLiAgKi8KLSAKLUBAIC0y NTQ4LDEwICsyNTE3LDEwIEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQotIAotIAkg VGhpcyBpcyByYWN5LCB3aGF0IGlmIHRoZSB0Z2wgYmVjb21lcyBhIHpvbWJpZSByaWdodCBhZnRl ciB3ZSBjaGVjaz8KLSAJIFRoZXJlZm9yZSBhbHdheXMgdXNlIFdOT0hBTkcgd2l0aCBzaWdzdXNw ZW5kIC0gaXQgaXMgZXF1aXZhbGVudCB0bwotLQkgd2FpdGluZyB3YWl0cGlkIGJ1dCB0aGUgbGlu dXhfbHdwX2lzX3pvbWJpZSBpcyBzYWZlIHRoaXMgd2F5LiAgKi8KLSsJIHdhaXRpbmcgd2FpdHBp ZCBidXQgbGludXhfcHJvY19waWRfaXNfem9tYmllIGlzIHNhZmUgdGhpcyB3YXkuICAqLwotIAot ICAgICAgIGlmIChHRVRfUElEIChscC0+cHRpZCkgPT0gR0VUX0xXUCAobHAtPnB0aWQpCi0tCSAg JiYgbGludXhfbHdwX2lzX3pvbWJpZSAoR0VUX0xXUCAobHAtPnB0aWQpKSkKLSsJICAmJiBsaW51 eF9wcm9jX3BpZF9pc196b21iaWUgKEdFVF9MV1AgKGxwLT5wdGlkKSkpCi0gCXsKLSAJICB0aHJl YWRfZGVhZCA9IDE7Ci0gCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0zNDMxLDcgKzM0MDAs NyBAQCBjaGVja196b21iaWVfbGVhZGVycyAodm9pZCkKLSAJICAvKiBDaGVjayBpZiB0aGVyZSBh cmUgb3RoZXIgdGhyZWFkcyBpbiB0aGUgZ3JvdXAsIGFzIHdlIG1heQotIAkgICAgIGhhdmUgcmFj ZWQgd2l0aCB0aGUgaW5mZXJpb3Igc2ltcGx5IGV4aXRpbmcuICAqLwotIAkgICYmIG51bV9sd3Bz IChpbmYtPnBpZCkgPiAxCi0tCSAgJiYgbGludXhfbHdwX2lzX3pvbWJpZSAoaW5mLT5waWQpKQot KwkgICYmIGxpbnV4X3Byb2NfcGlkX2lzX3pvbWJpZSAoaW5mLT5waWQpKQotIAl7Ci0gCSAgaWYg KGRlYnVnX2xpbnV4X25hdCkKLSAJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK CmRpZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy00b2Y1LnBhdGNoIGIvZ2RiLWF0 dGFjaC1mYWlsLXJlYXNvbnMtNG9mNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggNTY0ZWU3Mi4uMDAwMDAwMAotLS0gYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy00b2Y1LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAyICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAzL21zZzAwMTcwLmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAy LzNdIGF0dGFjaC1mYWlsLXJlYXNvbnM6IFNheSBtb3JlIHRoYW4gcHRyYWNlOiBPcGVyYXRpb24g bm90IHBlcm1pdHRlZC4KLQotSGksCi0KLVRoZXJlIGlzIGEgY29tbW9uIHF1ZXN0aW9uIG9uICNn ZGIgYW5kIGFsc28gYWxyZWFkeSBkZXNjcmliZWQ6Ci0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9n ZGIvd2lraS9GQVEKLTE2LiBHZXR0aW5nIGFuIGludGVybmFsIGVycm9yIG9yIG90aGVyIGVycm9y IHdoaWxlIGF0dGFjaGluZyB0byBwcm9jZXNzZXMgb24KLSAgICBHTlUvTGludXgKLS0+Ci0gICAg VHJ5IHNldGVuZm9yY2UgMCAoU0VMaW51eCkgb3IgZWNobyAwID4vcHJvYy9zeXMva2VybmVsL3lh bWEvcHRyYWNlX3Njb3BlCi0gICAgKHB0cmFjZSBzY29wZSkgdG8gZGlzYWJsZSBzeXN0ZW0gc2Vj dXJpdHkgcHJvdGVjdGlvbnMuIAotCi1hbmQgaGVyZSBpcyBhIHBhdGNoIHRvIGdpdmUgc29tZSBl eHBsYW5hdGlvbnMuCi0KLU1vcmUgcmVhc29ucyBjYW4gYmUgZ2l2ZW4gbGF0ZXIsIHRoaXMgaXMg YSBjb250YWluZXIgZm9yIHRoZW0gYW5kIGl0IGNvbnRhaW5zCi1zb21lIHVzZWZ1bCBvbmVzIGFs cmVhZHkuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRv cmExNy1saW51eC1nbnUgYW5kIHdpdGgKLW5vbi1leHRlbmRlZCBnZGJzZXJ2ZXIuCi0KLVRoZSB0 ZXN0Y2FzZSBkb2VzIG5vdCB0ZXN0IGdkYnNlcnZlciwgc29tZWhvdyBpdCBpcyBhIGJpdCBkaWZm aWN1bHQgd2l0aG91dAotaGF2aW5nIHNoZWxsIG9uIHRhcmdldC4KLQotQXR0YWNoaW5nIHRvIHBy b2Nlc3MgMjc0ODAKLXB0cmFjZTogT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQuCi0oZ2RiKSBfCi0t PgotQXR0YWNoaW5nIHRvIHByb2Nlc3MgMjc0ODAKLXdhcm5pbmc6IHByb2Nlc3MgMjc0ODAgaXMg YWxyZWFkeSB0cmFjZWQgYnkgcHJvY2VzcyAyOTAxMQotcHRyYWNlOiBPcGVyYXRpb24gbm90IHBl cm1pdHRlZC4KLShnZGIpIF8KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEyLTAzLTA2 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGNvbW1v bi9saW51eC1wcm9jZnMuYyAobGludXhfcHJvY19nZXRfaW50KTogTmV3LCBmcm9tCi0JbGludXhf cHJvY19nZXRfdGdpZC4KLQkobGludXhfcHJvY19nZXRfdGdpZCk6IE9ubHkgY2FsbCBsaW51eF9w cm9jX2dldF9pbnQuCi0JKGxpbnV4X3Byb2NfZ2V0X3RyYWNlcnBpZCk6IE5ldy4KLQkobGludXhf cHJvY19waWRfaGFzX3N0YXRlKTogTmV3LCBmcm9tIGxpbnV4X3Byb2NfcGlkX2lzX3pvbWJpZS4K LQkobGludXhfcHJvY19waWRfaXNfc3RvcHBlZCwgbGludXhfcHJvY19waWRfaXNfem9tYmllKTog T25seSBjYWxsCi0JbGludXhfcHJvY19waWRfaGFzX3N0YXRlLgotCSogY29tbW9uL2xpbnV4LXBy b2Nmcy5oIChsaW51eF9wcm9jX2dldF90cmFjZXJwaWQpOiBOZXcgZGVjbGFyYXRpb24uCi0JKiBj b21tb24vbGludXgtcHRyYWNlLmM6IEluY2x1ZGUgbGludXgtcHJvY2ZzLmguCi0JKGxpbnV4X3B0 cmFjZV9hdHRhY2hfd2FybmluZ3MpOiBOZXcuCi0JKiBjb21tb24vbGludXgtcHRyYWNlLmggKGxp bnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MpOiBOZXcgZGVjbGFyYXRpb24uCi0JKiBsaW51eC1u YXQuYzogSW5jbHVkZSBleGNlcHRpb25zLmggYW5kIGxpbnV4LXB0cmFjZS5oLgotCShsaW51eF9u YXRfYXR0YWNoKTogTmV3IHZhcmlhYmxlIGV4LiAgV3JhcCB0b19hdHRhY2ggYnkgVFJZX0NBVENI IGFuZAotCWNhbGwgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncy4KLQotZ2RiL2dkYnNlcnZl ci8KLTIwMTItMDMtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLQotCSogbGludXgtbG93LmMgKGxpbnV4X2F0dGFjaF9sd3BfMSk6IENhbGwgbGludXhfcHRy YWNlX2F0dGFjaF93YXJuaW5ncy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTItMDMtMDYgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2UvYXR0 YWNoLXR3aWNlLmM6IE5ldyBmaWxlcy4KLQkqIGdkYi5iYXNlL2F0dGFjaC10d2ljZS5leHA6IE5l dyBmaWxlcy4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbW1vbi9saW51eC1w cm9jZnMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29t bW9uL2xpbnV4LXByb2Nmcy5jCTIwMTItMDMtMDYgMDc6MzQ6MDAuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xpbnV4LXByb2Nmcy5jCTIwMTItMDMt MDYgMDc6MzQ6MTcuNTg2ODE2NDQ5ICswMTAwCi1AQCAtMjgsNjcgKzI4LDU0IEBACi0gLyogUmV0 dXJuIHRoZSBUR0lEIG9mIExXUElEIGZyb20gL3Byb2MvcGlkL3N0YXR1cy4gIFJldHVybnMgLTEg aWYgbm90Ci0gICAgZm91bmQuICAqLwotIAotLWludAotLWxpbnV4X3Byb2NfZ2V0X3RnaWQgKGlu dCBsd3BpZCkKLStzdGF0aWMgaW50Ci0rbGludXhfcHJvY19nZXRfaW50IChpbnQgbHdwaWQsIGNv bnN0IGNoYXIgKmZpZWxkKQotIHsKLSsgIHNpemVfdCBmaWVsZF9sZW4gPSBzdHJsZW4gKGZpZWxk KTsKLSAgIEZJTEUgKnN0YXR1c19maWxlOwotICAgY2hhciBidWZbMTAwXTsKLS0gIGludCB0Z2lk ID0gLTE7Ci0rICBpbnQgcmV0dmFsID0gLTE7Ci0gCi0gICBzbnByaW50ZiAoYnVmLCBzaXplb2Yg KGJ1ZiksICIvcHJvYy8lZC9zdGF0dXMiLCAoaW50KSBsd3BpZCk7Ci0gICBzdGF0dXNfZmlsZSA9 IGZvcGVuIChidWYsICJyIik7Ci0tICBpZiAoc3RhdHVzX2ZpbGUgIT0gTlVMTCkKLSsgIGlmIChz dGF0dXNfZmlsZSA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgd2hpbGUgKGZnZXRzIChidWYsIHNp emVvZiAoYnVmKSwgc3RhdHVzX2ZpbGUpKQotLQl7Ci0tCSAgaWYgKHN0cm5jbXAgKGJ1ZiwgIlRn aWQ6IiwgNSkgPT0gMCkKLS0JICAgIHsKLS0JICAgICAgdGdpZCA9IHN0cnRvdWwgKGJ1ZiArIHN0 cmxlbiAoIlRnaWQ6IiksIE5VTEwsIDEwKTsKLS0JICAgICAgYnJlYWs7Ci0tCSAgICB9Ci0tCX0K LS0KLS0gICAgICBmY2xvc2UgKHN0YXR1c19maWxlKTsKLSsgICAgICB3YXJuaW5nIChfKCJ1bmFi bGUgdG8gb3BlbiAvcHJvYyBmaWxlICclcyciKSwgYnVmKTsKLSsgICAgICByZXR1cm4gLTE7Ci0g ICAgIH0KLSAKLS0gIHJldHVybiB0Z2lkOwotKyAgd2hpbGUgKGZnZXRzIChidWYsIHNpemVvZiAo YnVmKSwgc3RhdHVzX2ZpbGUpKQotKyAgICBpZiAoc3RybmNtcCAoYnVmLCBmaWVsZCwgZmllbGRf bGVuKSA9PSAwICYmIGJ1ZltmaWVsZF9sZW5dID09ICc6JykKLSsgICAgICB7Ci0rCXJldHZhbCA9 IHN0cnRvbCAoJmJ1ZltmaWVsZF9sZW4gKyAxXSwgTlVMTCwgMTApOwotKwlicmVhazsKLSsgICAg ICB9Ci0rCi0rICBmY2xvc2UgKHN0YXR1c19maWxlKTsKLSsgIHJldHVybiByZXR2YWw7Ci0gfQot IAotLS8qIERldGVjdCBgVCAoc3RvcHBlZCknIGluIGAvcHJvYy9QSUQvc3RhdHVzJy4KLS0gICBP dGhlciBzdGF0ZXMgaW5jbHVkaW5nIGBUICh0cmFjaW5nIHN0b3ApJyBhcmUgcmVwb3J0ZWQgYXMg ZmFsc2UuICAqLwotKy8qIFJldHVybiB0aGUgVEdJRCBvZiBMV1BJRCBmcm9tIC9wcm9jL3BpZC9z dGF0dXMuICBSZXR1cm5zIC0xIGlmIG5vdAotKyAgIGZvdW5kLiAgKi8KLSAKLSBpbnQKLS1saW51 eF9wcm9jX3BpZF9pc19zdG9wcGVkIChwaWRfdCBwaWQpCi0rbGludXhfcHJvY19nZXRfdGdpZCAo aW50IGx3cGlkKQotIHsKLS0gIEZJTEUgKnN0YXR1c19maWxlOwotLSAgY2hhciBidWZbMTAwXTsK LS0gIGludCByZXR2YWwgPSAwOwotKyAgcmV0dXJuIGxpbnV4X3Byb2NfZ2V0X2ludCAobHdwaWQs ICJUZ2lkIik7Ci0rfQotIAotLSAgc25wcmludGYgKGJ1Ziwgc2l6ZW9mIChidWYpLCAiL3Byb2Mv JWQvc3RhdHVzIiwgKGludCkgcGlkKTsKLS0gIHN0YXR1c19maWxlID0gZm9wZW4gKGJ1ZiwgInIi KTsKLS0gIGlmIChzdGF0dXNfZmlsZSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaW50IGhhdmVf c3RhdGUgPSAwOwotKy8qIFNlZSBsaW51eC1wcm9jZnMuaC4gICovCi0gCi0tICAgICAgd2hpbGUg KGZnZXRzIChidWYsIHNpemVvZiAoYnVmKSwgc3RhdHVzX2ZpbGUpKQotLQl7Ci0tCSAgaWYgKHN0 cm5jbXAgKGJ1ZiwgIlN0YXRlOiIsIDYpID09IDApCi0tCSAgICB7Ci0tCSAgICAgIGhhdmVfc3Rh dGUgPSAxOwotLQkgICAgICBicmVhazsKLS0JICAgIH0KLS0JfQotLSAgICAgIGlmIChoYXZlX3N0 YXRlICYmIHN0cnN0ciAoYnVmLCAiVCAoc3RvcHBlZCkiKSAhPSBOVUxMKQotLQlyZXR2YWwgPSAx OwotLSAgICAgIGZjbG9zZSAoc3RhdHVzX2ZpbGUpOwotLSAgICB9Ci0tICByZXR1cm4gcmV0dmFs OwotK3BpZF90Ci0rbGludXhfcHJvY19nZXRfdHJhY2VycGlkIChpbnQgbHdwaWQpCi0rewotKyAg cmV0dXJuIGxpbnV4X3Byb2NfZ2V0X2ludCAobHdwaWQsICJUcmFjZXJQaWQiKTsKLSB9Ci0gCi0t LyogU2VlIGxpbnV4LXByb2Nmcy5oIGRlY2xhcmF0aW9uLiAgKi8KLSsvKiBSZXR1cm4gbm9uLXpl cm8gaWYgJ1N0YXRlJyBvZiAvcHJvYy9QSUQvc3RhdHVzIGNvbnRhaW5zIFNUQVRFLiAgKi8KLSAK LS1pbnQKLS1saW51eF9wcm9jX3BpZF9pc196b21iaWUgKHBpZF90IHBpZCkKLStzdGF0aWMgaW50 Ci0rbGludXhfcHJvY19waWRfaGFzX3N0YXRlIChwaWRfdCBwaWQsIGNvbnN0IGNoYXIgKnN0YXRl KQotIHsKLSAgIGNoYXIgYnVmZmVyWzEwMF07Ci0gICBGSUxFICpwcm9jZmlsZTsKLUBAIC0xMTAs OCArOTcsMjQgQEAgbGludXhfcHJvY19waWRfaXNfem9tYmllIChwaWRfdCBwaWQpCi0gCWhhdmVf c3RhdGUgPSAxOwotIAlicmVhazsKLSAgICAgICB9Ci0tICByZXR2YWwgPSAoaGF2ZV9zdGF0ZQot LQkgICAgJiYgc3RyY21wIChidWZmZXIsICJTdGF0ZTpcdFogKHpvbWJpZSlcbiIpID09IDApOwot KyAgcmV0dmFsID0gKGhhdmVfc3RhdGUgJiYgc3Ryc3RyIChidWZmZXIsIHN0YXRlKSAhPSBOVUxM KTsKLSAgIGZjbG9zZSAocHJvY2ZpbGUpOwotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0rCi0rLyog RGV0ZWN0IGBUIChzdG9wcGVkKScgaW4gYC9wcm9jL1BJRC9zdGF0dXMnLgotKyAgIE90aGVyIHN0 YXRlcyBpbmNsdWRpbmcgYFQgKHRyYWNpbmcgc3RvcCknIGFyZSByZXBvcnRlZCBhcyBmYWxzZS4g ICovCi0rCi0raW50Ci0rbGludXhfcHJvY19waWRfaXNfc3RvcHBlZCAocGlkX3QgcGlkKQotK3sK LSsgIHJldHVybiBsaW51eF9wcm9jX3BpZF9oYXNfc3RhdGUgKHBpZCwgIlQgKHN0b3BwZWQpIik7 Ci0rfQotKwotKy8qIFNlZSBsaW51eC1wcm9jZnMuaCBkZWNsYXJhdGlvbi4gICovCi0rCi0raW50 Ci0rbGludXhfcHJvY19waWRfaXNfem9tYmllIChwaWRfdCBwaWQpCi0rewotKyAgcmV0dXJuIGxp bnV4X3Byb2NfcGlkX2hhc19zdGF0ZSAocGlkLCAiWiAoem9tYmllKSIpOwotK30KLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb21tb24vbGludXgtcHJvY2ZzLmgKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbW1vbi9saW51eC1wcm9jZnMuaAky MDEyLTAzLTA2IDA3OjM0OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbW1vbi9saW51eC1wcm9jZnMuaAkyMDEyLTAzLTA2IDA3OjM0OjE3LjU4NjgxNjQ0 OSArMDEwMAotQEAgLTI2LDYgKzI2LDExIEBACi0gCi0gZXh0ZXJuIGludCBsaW51eF9wcm9jX2dl dF90Z2lkIChpbnQgbHdwaWQpOwotIAotKy8qIFJldHVybiB0aGUgVHJhY2VyUGlkIG9mIExXUElE IGZyb20gL3Byb2MvcGlkL3N0YXR1cy4gIFJldHVybnMgLTEgaWYgbm90Ci0rICAgZm91bmQuICAq LwotKwotK2V4dGVybiBwaWRfdCBsaW51eF9wcm9jX2dldF90cmFjZXJwaWQgKGludCBsd3BpZCk7 Ci0rCi0gLyogRGV0ZWN0IGBUIChzdG9wcGVkKScgaW4gYC9wcm9jL1BJRC9zdGF0dXMnLgotICAg IE90aGVyIHN0YXRlcyBpbmNsdWRpbmcgYFQgKHRyYWNpbmcgc3RvcCknIGFyZSByZXBvcnRlZCBh cyBmYWxzZS4gICovCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xp bnV4LXB0cmFjZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dk Yi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAxMi0wMy0wNiAwNzozNDowMC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAx Mi0wMy0wNiAwNzozNDoxNy41ODY4MTY0NDkgKzAxMDAKLUBAIC0yNCwzICsyNCwyMSBAQAotICNl bmRpZgotIAotICNpbmNsdWRlICJsaW51eC1wdHJhY2UuaCIKLSsjaW5jbHVkZSAibGludXgtcHJv Y2ZzLmgiCi0rCi0rLyogUHJpbnQgYWxsIHBvc3NpYmxlIHJlYXNvbnMgd2UgY291bGQgZmFpbCB0 byBhdHRhY2ggUElELiAgKi8KLSsKLSt2b2lkCi0rbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5n cyAocGlkX3QgcGlkKQotK3sKLSsgIHBpZF90IHRyYWNlcnBpZDsKLSsKLSsgIHRyYWNlcnBpZCA9 IGxpbnV4X3Byb2NfZ2V0X3RyYWNlcnBpZCAocGlkKTsKLSsgIGlmICh0cmFjZXJwaWQgPiAwKQot KyAgICB3YXJuaW5nIChfKCJwcm9jZXNzICVkIGlzIGFscmVhZHkgdHJhY2VkIGJ5IHByb2Nlc3Mg JWQiKSwgKGludCkgcGlkLAotKwkgICAgIChpbnQpIHRyYWNlcnBpZCk7Ci0rCi0rICBpZiAobGlu dXhfcHJvY19waWRfaXNfem9tYmllIChwaWQpKQotKyAgICB3YXJuaW5nIChfKCJwcm9jZXNzICVk IGlzIGEgem9tYmllIC0gdGhlIHByb2Nlc3MgaGFzIGFscmVhZHkgdGVybWluYXRlZCIpLAotKwkg ICAgIChpbnQpIHBpZCk7Ci0rfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbW1v bi9saW51eC1wdHJhY2UuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTItMDEtMDQgMDk6MTc6MTguMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5o CTIwMTItMDMtMDYgMDc6MzQ6MTcuNTg2ODE2NDQ5ICswMTAwCi1AQCAtNjUsNCArNjUsNiBAQAot ICNkZWZpbmUgX19XQUxMICAgICAgICAgIDB4NDAwMDAwMDAgLyogV2FpdCBmb3IgYW55IGNoaWxk LiAgKi8KLSAjZW5kaWYKLSAKLStleHRlcm4gdm9pZCBsaW51eF9wdHJhY2VfYXR0YWNoX3dhcm5p bmdzIChwaWRfdCBwaWQpOwotKwotICNlbmRpZiAvKiBDT01NT05fTElOVVhfUFRSQUNFX0ggKi8K LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2dkYnNlcnZlci9saW51 eC1sb3cuYwkyMDEyLTAzLTA2IDA3OjM0OjAwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLTAzLTA2IDA3OjM0OjE3 LjU4NzgxNjQ0NiArMDEwMAotQEAgLTYzMiw2ICs2MzIsNyBAQCBsaW51eF9hdHRhY2hfbHdwXzEg KHVuc2lnbmVkIGxvbmcgbHdwaWQsCi0gCX0KLSAKLSAgICAgICAvKiBJZiB3ZSBmYWlsIHRvIGF0 dGFjaCB0byBhIHByb2Nlc3MsIHJlcG9ydCBhbiBlcnJvci4gICovCi0rICAgICAgbGludXhfcHRy YWNlX2F0dGFjaF93YXJuaW5ncyAobHdwaWQpOwotICAgICAgIGVycm9yICgiQ2Fubm90IGF0dGFj aCB0byBsd3AgJWxkOiAlcyAoJWQpXG4iLCBsd3BpZCwKLSAJICAgICBzdHJlcnJvciAoZXJybm8p LCBlcnJubyk7Ci0gICAgIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC1u YXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgt bmF0LmMJMjAxMi0wMy0wNiAwNzozNDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9saW51eC1uYXQuYwkyMDEyLTAzLTA2IDA3OjM0OjI5Ljg2MDc3NTgwMyAr MDEwMAotQEAgLTU5LDYgKzU5LDggQEAKLSAjaW5jbHVkZSAic29saWIuaCIKLSAjaW5jbHVkZSAi bGludXgtb3NkYXRhLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKLSsjaW5jbHVkZSAi ZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJsaW51eC1wdHJhY2UuaCIKLSAKLSAjaWZuZGVmIFNQ VUZTX01BR0lDCi0gI2RlZmluZSBTUFVGU19NQUdJQyAweDIzYzliNjRlCi1AQCAtMTYxMywxMSAr MTYxNSwyMiBAQCBsaW51eF9uYXRfYXR0YWNoIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICBz dHJ1Y3QgbHdwX2luZm8gKmxwOwotICAgaW50IHN0YXR1czsKLSAgIHB0aWRfdCBwdGlkOwotKyAg dm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7Ci0gCi0gICAvKiBNYWtlIHN1cmUgd2Ug cmVwb3J0IGFsbCBzaWduYWxzIGR1cmluZyBhdHRhY2guICAqLwotICAgbGludXhfbmF0X3Bhc3Nf c2lnbmFscyAoMCwgTlVMTCk7Ci0gCi0tICBsaW51eF9vcHMtPnRvX2F0dGFjaCAob3BzLCBhcmdz LCBmcm9tX3R0eSk7Ci0rICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKLSsgICAg ewotKyAgICAgIGxpbnV4X29wcy0+dG9fYXR0YWNoIChvcHMsIGFyZ3MsIGZyb21fdHR5KTsKLSsg ICAgfQotKyAgaWYgKGV4LnJlYXNvbiA8IDApCi0rICAgIHsKLSsgICAgICBwaWRfdCBwaWQgPSBw YXJzZV9waWRfdG9fYXR0YWNoIChhcmdzKTsKLSsKLSsgICAgICBsaW51eF9wdHJhY2VfYXR0YWNo X3dhcm5pbmdzIChwaWQpOwotKyAgICAgIHRocm93X2V4Y2VwdGlvbiAoZXgpOwotKyAgICB9Ci0g Ci0gICAvKiBUaGUgcHRyYWNlIGJhc2UgdGFyZ2V0IGFkZHMgdGhlIG1haW4gdGhyZWFkIHdpdGgg KHBpZCwwLDApCi0gICAgICBmb3JtYXQuICBEZWNvcmF0ZSBpdCB3aXRoIGx3cCBpbmZvLiAgKi8K LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNo LXR3aWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYXR0YWNoLXR3aWNlLmMJMjAxMi0wMy0wNiAwNzozNDoxNy41ODk4MTY0NDAgKzAxMDAK LUBAIC0wLDAgKzEsNDIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExLTIwMTIgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2lu Y2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsKLStpbnQKLSttYWlu ICh2b2lkKQotK3sKLSsgIGxvbmcgbDsKLSsKLSsgIHN3aXRjaCAoZm9yayAoKSkKLSsgIHsKLSsg ICAgY2FzZSAtMToKLSsgICAgICBwZXJyb3IgKCJmb3JrIik7Ci0rICAgICAgZXhpdCAoMSk7Ci0r ICAgIGNhc2UgMDoKLSsgICAgICBlcnJubyA9IDA7Ci0rICAgICAgcHRyYWNlIChQVFJBQ0VfQVRU QUNILCBnZXRwcGlkICgpLCBOVUxMLCBOVUxMKTsKLSsgICAgICBpZiAoZXJybm8gIT0gMCkKLSsJ cGVycm9yICgiUFRSQUNFX0FUVEFDSCIpOwotKyAgICAgIGJyZWFrOwotKyAgfQotKyAgc2xlZXAg KDYwMCk7Ci0rICByZXR1cm4gMDsKLSt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC10d2ljZS5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLXR3aWNlLmV4cAkyMDEyLTAz LTA2IDA3OjM0OjE3LjU4OTgxNjQ0MCArMDEwMAotQEAgLTAsMCArMSw1MiBAQAotKyMgQ29weXJp Z2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBNYW5pcHVsYXRpb24gd2l0aCBQSUQgb24gdGFy Z2V0IGlzIG5vdCBzdXBwb3J0ZWQuCi0raWYgW2lzX3JlbW90ZSB0YXJnZXRdIHRoZW4gewotKyAg ICByZXR1cm4gMAotK30KLSsKLStzZXQgdGVzdGZpbGUgYXR0YWNoLXR3aWNlCi0rc2V0IGV4ZWN1 dGFibGUgJHt0ZXN0ZmlsZX0KLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhl Y3V0YWJsZX0KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk ZXhlY3V0YWJsZV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStzZXQgdGVzdHBpZCBbZXZh bCBleGVjICRiaW5maWxlICZdCi0rZXhlYyBzbGVlcCAyCi0rCi0rc2V0IHBhcmVudHBpZCAwCi0r Ci0rc2V0IHRlc3QgImF0dGFjaCIKLStnZGJfdGVzdF9tdWx0aXBsZSAiYXR0YWNoICR0ZXN0cGlk IiAkdGVzdCB7Ci0rICAgIC1yZSAiQXR0YWNoaW5nIHRvIHByb2dyYW06IFxbXlxyXG5cXSosIHBy b2Nlc3MgJHRlc3RwaWRcclxuLip3YXJuaW5nOiBwcm9jZXNzICR0ZXN0cGlkIGlzIGFscmVhZHkg dHJhY2VkIGJ5IHByb2Nlc3MgKFxbMC05XF0rKVxyXG4uKnB0cmFjZTogT3BlcmF0aW9uIG5vdCBw ZXJtaXR0ZWRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwlzZXQgcGFyZW50cGlkICRleHBlY3Rf b3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJBdHRhY2hpbmcg dG8gcHJvZ3JhbTogXFteXHJcblxdKiwgcHJvY2VzcyAkdGVzdHBpZFxyXG4uKnB0cmFjZTogT3Bl cmF0aW9uIG5vdCBwZXJtaXR0ZWRcXC5cclxuJGdkYl9wcm9tcHQgJCIgewotKwlmYWlsICR0ZXN0 Ci0rICAgIH0KLSsgICAgLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgewotKwl4ZmFpbCAkdGVzdAot KyAgICB9Ci0rfQotKwotK2V2YWwgZXhlYyBwcyB4ZncKLStpZiB7JHBhcmVudHBpZCAhPSAwfSB7 Ci0rICBldmFsIGV4ZWMga2lsbCAtOSAkcGFyZW50cGlkCi0rfQotK2V2YWwgZXhlYyBraWxsIC05 ICR0ZXN0cGlkCgpkaWZmIC0tZ2l0IGEvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNS5wYXRj aCBiL2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKaW5kZXggYWE0YTQ0Zi4uYmY5 NWU3YyAxMDA2NDQKLS0tIGEvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNS5wYXRjaAorKysg Yi9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCkBAIC0zNyw1MyArMzcsNjAgQEAg Z2RiL2dkYnNlcnZlci8KIAkobGludXhfY3JlYXRlX2luZmVyaW9yLCBsaW51eF90cmFjZWZvcmtf Y2hpbGQpOiBDYWxsIGl0IGluc3RlYWQgb2YKIAlkaXJlY3QgcHRyYWNlLgogCi0tLS0gYS9nZGIv Y29tbW9uL2xpbnV4LXB0cmFjZS5jCi0rKysgYi9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCi1A QCAtMjYsNiArMjYsMTAgQEAKLSAjaW5jbHVkZSAibGludXgtcHRyYWNlLmgiCitJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAx Mi0wMy0xMyAxNjowMjoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAxMi0wNi0wMiAyMDozNzo1My45MzM4Mjg1NzAg KzAyMDAKK0BAIC0yNyw2ICsyNywxMCBAQAogICNpbmNsdWRlICJsaW51eC1wcm9jZnMuaCIKKyAj aW5jbHVkZSAiYnVmZmVyLmgiCiAgCiArI2lmZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0gKICsj IGluY2x1ZGUgPHNlbGludXgvc2VsaW51eC5oPgogKyNlbmRpZiAvKiBIQVZFX1NFTElOVVhfU0VM SU5VWF9IICovCiArCi0gLyogUHJpbnQgYWxsIHBvc3NpYmxlIHJlYXNvbnMgd2UgY291bGQgZmFp bCB0byBhdHRhY2ggUElELiAgKi8KLSAKLSB2b2lkCi1AQCAtNDEsNCArNDUsMjEgQEAgbGludXhf cHRyYWNlX2F0dGFjaF93YXJuaW5ncyAocGlkX3QgcGlkKQotICAgaWYgKGxpbnV4X3Byb2NfcGlk X2lzX3pvbWJpZSAocGlkKSkKLSAgICAgd2FybmluZyAoXygicHJvY2VzcyAlZCBpcyBhIHpvbWJp ZSAtIHRoZSBwcm9jZXNzIGhhcyBhbHJlYWR5IHRlcm1pbmF0ZWQiKSwKLSAJICAgICAoaW50KSBw aWQpOworIC8qIEZpbmQgYWxsIHBvc3NpYmxlIHJlYXNvbnMgd2UgY291bGQgZmFpbCB0byBhdHRh Y2ggUElEIGFuZCBhcHBlbmQgdGhlc2UKKyAgICBuZXdsaW5lIHRlcm1pbmF0ZWQgcmVhc29uIHN0 cmluZ3MgdG8gaW5pdGlhbGl6ZWQgQlVGRkVSLiAgJ1wwJyB0ZXJtaW5hdGlvbgorICAgIG9mIEJV RkZFUiBtdXN0IGJlIGRvbmUgYnkgdGhlIGNhbGxlci4gICovCitAQCAtNDYsNCArNTAsMjIgQEAg bGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyAocGlkX3QgcGlkLAorICAgICBidWZmZXJfeG1s X3ByaW50ZiAoYnVmZmVyLCBfKCJ3YXJuaW5nOiBwcm9jZXNzICVkIGlzIGEgem9tYmllICIKKyAJ CQkJICItIHRoZSBwcm9jZXNzIGhhcyBhbHJlYWR5IHRlcm1pbmF0ZWRcbiIpLAorIAkJICAgICAg IChpbnQpIHBpZCk7CiArCi0rICBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzICgpOworKyAg bGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoYnVmZmVyKTsKICt9CiArCiArLyogUHJpbnQg YWxsIHBvc3NpYmxlIHJlYXNvbnMgd2UgY291bGQgZmFpbCB0byBjcmVhdGUgYSB0cmFjZWQgcHJv Y2Vzcy4gICovCiArCiArdm9pZAotK2xpbnV4X3B0cmFjZV9jcmVhdGVfd2FybmluZ3MgKHZvaWQp CisrbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZlciAqYnVmZmVyKQog K3sKICsjaWZkZWYgSEFWRV9MSUJTRUxJTlVYCiArICAvKiAtMSBpcyByZXR1cm5lZCBmb3IgZXJy b3JzLCAwIGlmIGl0IGhhcyBubyBlZmZlY3QsIDEgaWYgUFRSQUNFX0FUVEFDSCBpcwogKyAgICAg Zm9yYmlkZGVuLiAgKi8KICsgIGlmIChzZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCJkZW55 X3B0cmFjZSIpID09IDEpCi0rICAgIHdhcm5pbmcgKF8oInRoZSBTRUxpbnV4IGJvb2xlYW4gJ2Rl bnlfcHRyYWNlJyBpcyBlbmFibGVkLCAiCi0rCSAgICAgICAieW91IGNhbiBkaXNhYmxlIHRoaXMg cHJvY2VzcyBhdHRhY2ggcHJvdGVjdGlvbiBieTogIgotKwkgICAgICAgIihnZGIpIHNoZWxsIHN1 ZG8gc2V0c2Vib29sIGRlbnlfcHRyYWNlPTAiKSk7CisrICAgIGJ1ZmZlcl94bWxfcHJpbnRmIChi dWZmZXIsCisrCQkgICAgICAgXygidGhlIFNFTGludXggYm9vbGVhbiAnZGVueV9wdHJhY2UnIGlz IGVuYWJsZWQsICIKKysJCQkgInlvdSBjYW4gZGlzYWJsZSB0aGlzIHByb2Nlc3MgYXR0YWNoIHBy b3RlY3Rpb24gYnk6ICIKKysJCQkgIihnZGIpIHNoZWxsIHN1ZG8gc2V0c2Vib29sIGRlbnlfcHRy YWNlPTAiKSk7CiArI2VuZGlmIC8qIEhBVkVfTElCU0VMSU5VWCAqLwogIH0KLS0tLSBhL2dkYi9j b21tb24vbGludXgtcHRyYWNlLmgKLSsrKyBiL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgKLUBA IC02Niw1ICs2Niw2IEBACitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29tbW9uL2xp bnV4LXB0cmFjZS5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dk Yi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxMi0wMy0xMyAxNjowMjoyMy4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAx Mi0wNi0wMiAyMDozNzo0Ni41NjU4MzE5NTYgKzAyMDAKK0BAIC02OCw1ICs2OCw2IEBAIHN0cnVj dCBidWZmZXI7CiAgI2VuZGlmCiAgCi0gZXh0ZXJuIHZvaWQgbGludXhfcHRyYWNlX2F0dGFjaF93 YXJuaW5ncyAocGlkX3QgcGlkKTsKLStleHRlcm4gdm9pZCBsaW51eF9wdHJhY2VfY3JlYXRlX3dh cm5pbmdzICh2b2lkKTsKKyBleHRlcm4gdm9pZCBsaW51eF9wdHJhY2VfYXR0YWNoX3dhcm5pbmdz IChwaWRfdCBwaWQsIHN0cnVjdCBidWZmZXIgKmJ1ZmZlcik7CisrZXh0ZXJuIHZvaWQgbGludXhf cHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsKICAKICAjZW5k aWYgLyogQ09NTU9OX0xJTlVYX1BUUkFDRV9IICovCi0tLS0gYS9nZGIvY29uZmlndXJlLmFjCi0r KysgYi9nZGIvY29uZmlndXJlLmFjCi1AQCAtMTc0OCw2ICsxNzQ4LDEwIEBAIHRoZW4KK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWd1cmUuYWMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA2LTAyIDIwOjA1 OjA4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvbmZpZ3Vy ZS5hYwkyMDEyLTA2LTAyIDIwOjM1OjA2LjM3OTc5ODcyNiArMDIwMAorQEAgLTIwMDIsNiArMjAw MiwxMCBAQCB0aGVuCiAgCSAgICAgIFtEZWZpbmUgaWYgeW91IHN1cHBvcnQgdGhlIHBlcnNvbmFs aXR5IHN5c2NhbGwuXSkKICBmaQogIApAQCAtOTQsOSArMTAxLDExIEBAIGdkYi9nZGJzZXJ2ZXIv CiAgZG5sIEhhbmRsZSBvcHRpb25hbCBmZWF0dXJlcyB0aGF0IGNhbiBiZSBlbmFibGVkLgogIAog ICMgU3VwcG9ydCBmb3IgLS13aXRoLXN5c3Jvb3QgaXMgYSBjb3B5IG9mIEdEQl9BQ19XSVRIX0RJ UiwKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCi0rKysgYi9nZGIvZ2Ric2VydmVy L2NvbmZpZ3VyZS5hYwotQEAgLTQxMSw2ICs0MTEsMTAgQEAgaWYgJHdhbnRfaXBhIDsgdGhlbgor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMKKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2dkYnNlcnZlci9jb25m aWd1cmUuYWMJMjAxMi0wNC0xOSAyMTozNDo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTItMDYtMDIgMjA6MzU6 MDYuNDA4Nzk3NjYzICswMjAwCitAQCAtNDM4LDYgKzQzOCwxMCBAQCBpZiAkd2FudF9pcGEgOyB0 aGVuCiAgICAgZmkKICBmaQogIApAQCAtMTA3LDkgKzExNiwxMSBAQCBnZGIvZ2Ric2VydmVyLwog IEFDX1NVQlNUKEdEQlNFUlZFUl9ERVBGSUxFUykKICBBQ19TVUJTVChHREJTRVJWRVJfTElCUykK ICBBQ19TVUJTVChVU0VfVEhSRUFEX0RCKQotLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cu YwotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotQEAgLTU1MCw2ICs1NTAsMjUgQEAg YWRkX2x3cCAocHRpZF90IHB0aWQpCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2Ri c2VydmVyL2xpbnV4LWxvdy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5v cmlnL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMJMjAxMi0wNS0zMCAyMTo1MTozOC4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93 LmMJMjAxMi0wNi0wMiAyMDozOTo0OS44ODY3ODUzNTUgKzAyMDAKK0BAIC02MDEsNiArNjAxLDI4 IEBAIGFkZF9sd3AgKHB0aWRfdCBwdGlkKQogICAgcmV0dXJuIGx3cDsKICB9CiAgCkBAIC0xMTks MTUgKzEzMCwxOCBAQCBnZGIvZ2Ric2VydmVyLwogK2xpbnV4X3RyYWNlbWUgKGNvbnN0IGNoYXIg KnByb2dyYW0pCiArewogKyAgaW50IHNhdmVfZXJybm87CisrICBzdHJ1Y3QgYnVmZmVyIGJ1ZmZl cjsKICsKICsgIGVycm5vID0gMDsKICsgIGlmIChwdHJhY2UgKFBUUkFDRV9UUkFDRU1FLCAwLCBO VUxMLCBOVUxMKSA9PSAwKQogKyAgICByZXR1cm47CiArCiArICBzYXZlX2Vycm5vID0gZXJybm87 Ci0rICBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzICgpOwotKyAgZnByaW50ZiAoc3RkZXJy LCBfKCJDYW5ub3QgdHJhY2UgY3JlYXRlZCBwcm9jZXNzICVzOiAlcy5cbiIpLCBwcm9ncmFtLAot KwkgICBzdHJlcnJvciAoc2F2ZV9lcnJubykpOworKyAgYnVmZmVyX2luaXQgKCZidWZmZXIpOwor KyAgbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoJmJ1ZmZlcik7CisrICBidWZmZXJfZ3Jv d19zdHIwICgmYnVmZmVyLCAiIik7CisrICBmcHJpbnRmIChzdGRlcnIsIF8oIiVzQ2Fubm90IHRy YWNlIGNyZWF0ZWQgcHJvY2VzcyAlczogJXMuXG4iKSwKKysJICAgYnVmZmVyX2ZpbmlzaCAoJmJ1 ZmZlciksIHByb2dyYW0sIHN0cmVycm9yIChzYXZlX2Vycm5vKSk7CiArICBmZmx1c2ggKHN0ZGVy cik7CiArICBfZXhpdCAoMDE3Nyk7CiArfQpAQCAtMTM1LDcgKzE0OSw3IEBAIGdkYi9nZGJzZXJ2 ZXIvCiAgLyogU3RhcnQgYW4gaW5mZXJpb3IgcHJvY2VzcyBhbmQgcmV0dXJucyBpdHMgcGlkLgog ICAgIEFMTEFSR1MgaXMgYSB2ZWN0b3Igb2YgcHJvZ3JhbS1uYW1lIGFuZCBhcmdzLiAqLwogIAot QEAgLTU5MCw3ICs2MDksNyBAQCBsaW51eF9jcmVhdGVfaW5mZXJpb3IgKGNoYXIgKnByb2dyYW0s IGNoYXIgKiphbGxhcmdzKQorQEAgLTY0MSw3ICs2NjMsNyBAQCBsaW51eF9jcmVhdGVfaW5mZXJp b3IgKGNoYXIgKnByb2dyYW0sIGNoCiAgCiAgICBpZiAocGlkID09IDApCiAgICAgIHsKQEAgLTE0 NCw3ICsxNTgsNyBAQCBnZGIvZ2Ric2VydmVyLwogIAogICNpZm5kZWYgX19BTkRST0lEX18gLyog QmlvbmljIGRvZXNuJ3QgdXNlIFNJR1JUTUlOIHRoZSB3YXkgZ2xpYmMgZG9lcy4gICovCiAgICAg ICAgc2lnbmFsIChfX1NJR1JUTUlOICsgMSwgU0lHX0RGTCk7Ci1AQCAtNDM4Niw3ICs0NDA1LDcg QEAgbGludXhfdHJhY2Vmb3JrX2dyYW5kY2hpbGQgKHZvaWQgKmFyZykKK0BAIC00NTY3LDcgKzQ1 ODksNyBAQCBsaW51eF90cmFjZWZvcmtfZ3JhbmRjaGlsZCAodm9pZCAqYXJnKQogIHN0YXRpYyBp bnQKICBsaW51eF90cmFjZWZvcmtfY2hpbGQgKHZvaWQgKmFyZykKICB7CkBAIC0xNTMsOCArMTY3 LDEwIEBAIGdkYi9nZGJzZXJ2ZXIvCiAgICBraWxsIChnZXRwaWQgKCksIFNJR1NUT1ApOwogIAog ICNpZiAhKGRlZmluZWQoX19VQ0xJQkNfXykgJiYgZGVmaW5lZChIQVNfTk9NTVUpKQotLS0tIGEv Z2RiL2luZi1wdHJhY2UuYwotKysrIGIvZ2RiL2luZi1wdHJhY2UuYworSW5kZXg6IGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL2luZi1wdHJhY2UuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjA2MDIub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTItMDUtMjQgMTg6NTE6MzQuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvaW5mLXB0cmFjZS5jCTIwMTIt MDYtMDIgMjA6MzU6MDYuNDI4Nzk3MzExICswMjAwCiBAQCAtMTA1LDcgKzEwNSwxNSBAQCBzdGF0 aWMgdm9pZAogIGluZl9wdHJhY2VfbWUgKHZvaWQpCiAgewpAQCAtMTcxLDkgKzE4NywxMSBAQCBn ZGIvZ2Ric2VydmVyLwogIH0KICAKICAvKiBTdGFydCBhIG5ldyBpbmZlcmlvciBVbml4IGNoaWxk IHByb2Nlc3MuICBFWEVDX0ZJTEUgaXMgdGhlIGZpbGUgdG8KLS0tLSBhL2dkYi9saW51eC1uYXQu YwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtMTU3MCw2ICsxNTcwLDcgQEAgbGludXhfbmF0 X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKK0luZGV4OiBnZGItNy40 LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjQuNTAu MjAxMjA2MDIub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMi0wNi0wMiAyMDowMTozOC4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2 LTAyIDIwOjQxOjE4LjEwMTc1MTE4NiArMDIwMAorQEAgLTE1NzIsNiArMTU3Miw3IEBAIGxpbnV4 X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXQKICAjaWZkZWYgSEFWRV9QRVJTT05B TElUWQogICAgaW50IHBlcnNvbmFsaXR5X29yaWcgPSAwLCBwZXJzb25hbGl0eV9zZXQgPSAwOwog ICNlbmRpZiAvKiBIQVZFX1BFUlNPTkFMSVRZICovCkBAIC0xODEsNyArMTk5LDcgQEAgZ2RiL2dk YnNlcnZlci8KICAKICAgIC8qIFRoZSBmb3JrX2NoaWxkIG1lY2hhbmlzbSBpcyBzeW5jaHJvbm91 cyBhbmQgY2FsbHMgdGFyZ2V0X3dhaXQsIHNvCiAgICAgICB3ZSBoYXZlIHRvIG1hc2sgdGhlIGFz eW5jIG1vZGUuICAqLwotQEAgLTE1OTQsNyArMTU5NSwxMCBAQCBsaW51eF9uYXRfY3JlYXRlX2lu ZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorQEAgLTE1OTYsNyArMTU5NywxMCBAQCBs aW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0CiAgICAvKiBNYWtlIHN1cmUg d2UgcmVwb3J0IGFsbCBzaWduYWxzIGR1cmluZyBzdGFydHVwLiAgKi8KICAgIGxpbnV4X25hdF9w YXNzX3NpZ25hbHMgKDAsIE5VTEwpOwogIApAQCAtMTkzLDE3ICsyMTEsMjggQEAgZ2RiL2dkYnNl cnZlci8KICAKICAjaWZkZWYgSEFWRV9QRVJTT05BTElUWQogICAgaWYgKHBlcnNvbmFsaXR5X3Nl dCkKLUBAIC0xNjA2LDYgKzE2MTAsMTIgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcywKK0BAIC0xNjA4LDYgKzE2MTIsMjQgQEAgbGludXhfbmF0X2Ny ZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldAogIAkJIHNhZmVfc3RyZXJyb3IgKGVycm5vKSk7 CiAgICAgIH0KICAjZW5kaWYgLyogSEFWRV9QRVJTT05BTElUWSAqLwogKwogKyAgaWYgKGV4LnJl YXNvbiA8IDApCiArICAgIHsKLSsgICAgICBsaW51eF9wdHJhY2VfY3JlYXRlX3dhcm5pbmdzICgp OwotKyAgICAgIHRocm93X2V4Y2VwdGlvbiAoZXgpOworKyAgICAgIHN0cnVjdCBidWZmZXIgYnVm ZmVyOworKyAgICAgIGNoYXIgKm1lc3NhZ2UsICpidWZmZXJfczsKKysKKysgICAgICBtZXNzYWdl ID0geHN0cmR1cCAoZXgubWVzc2FnZSk7CisrICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgbWVz c2FnZSk7CisrCisrICAgICAgYnVmZmVyX2luaXQgKCZidWZmZXIpOworKyAgICAgIGxpbnV4X3B0 cmFjZV9jcmVhdGVfd2FybmluZ3MgKCZidWZmZXIpOworKworKyAgICAgIGJ1ZmZlcl9ncm93X3N0 cjAgKCZidWZmZXIsICIiKTsKKysgICAgICBidWZmZXJfcyA9IGJ1ZmZlcl9maW5pc2ggKCZidWZm ZXIpOworKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1ZmZlcl9zKTsKKysKKysgICAgICB0 aHJvd19lcnJvciAoZXguZXJyb3IsICIlcyVzIiwgYnVmZmVyX3MsIG1lc3NhZ2UpOwogKyAgICB9 CiAgfQogIAogIHN0YXRpYyB2b2lkCi0KCmRpZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVh c29ucy01b2Y1Y29uZmlndXJlLnBhdGNoIGIvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNWNv bmZpZ3VyZS5wYXRjaAppbmRleCBlYTFiM2ZjLi42MDk4NjQ1IDEwMDY0NAotLS0gYS9nZGItYXR0 YWNoLWZhaWwtcmVhc29ucy01b2Y1Y29uZmlndXJlLnBhdGNoCisrKyBiL2dkYi1hdHRhY2gtZmFp bC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKQEAgLTEsMTYgKzEsMTggQEAKLS0tLSAxL2dk Yi9jb25maWcuaW4JMjAxMi0wMy0wOSAxODo0MDoyOC4wMDE4NzEwMjMgKzAxMDAKLSsrKyAuL2dk Yi9jb25maWcuaW4JMjAxMi0wMy0wOSAxODo0MTo0Ni41NTI2MjExMTMgKzAxMDAKLUBAIC0yNDUs NiArMjQ1LDkgQEAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25maWcuaW4KKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEy LTA2LTAyIDIxOjQ5OjI2LjE0NzM5OTIzMiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2NvbmZpZy5pbgkyMDEyLTA2LTAyIDIxOjQ5OjI3LjIwNjM5ODg0NSArMDIwMAorQEAgLTIy Miw2ICsyMjIsOSBAQAogIC8qIERlZmluZSBpZiBsaWJycG0gbGlicmFyeSBpcyBiZWluZyB1c2Vk LiAqLwogICN1bmRlZiBIQVZFX0xJQlJQTQogIAogKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZl IHRoZSBgc2VsaW51eCcgbGlicmFyeSAoLWxzZWxpbnV4KS4gKi8KICsjdW5kZWYgSEFWRV9MSUJT RUxJTlVYCiArCi0gLyogRGVmaW5lIGlmIGxpYnVud2luZCBsaWJyYXJ5IGlzIGJlaW5nIHVzZWQu ICovCi0gI3VuZGVmIEhBVkVfTElCVU5XSU5ECisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUg dGhlIDxsaWJ1bndpbmQtaWE2NC5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFWRV9MSUJV TldJTkRfSUE2NF9ICiAgCi1AQCAtNDgzLDYgKzQ4Niw5IEBACitAQCAtMzYzLDYgKzM2Niw5IEBA CiAgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzYnJrJyBmdW5jdGlvbi4gKi8KICAj dW5kZWYgSEFWRV9TQlJLCiAgCkBAIC0yMCw5ICsyMiwxMSBAQAogIC8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIHRoZSBgc2V0bG9jYWxlJyBmdW5jdGlvbi4gKi8KICAjdW5kZWYgSEFWRV9TRVRM T0NBTEUKICAKLS0tLSAxL2dkYi9jb25maWd1cmUJMjAxMi0wMy0wOSAxODo0MDoyOC4xODM4NzA0 NDMgKzAxMDAKLSsrKyAuL2dkYi9jb25maWd1cmUJMjAxMi0wMy0wOSAxODo0MTo0NS43ODM2MjM1 NTkgKzAxMDAKLUBAIC0xNTU1Nyw2ICsxNTU1Nyw2NCBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZF X1BFUlNPTkFMSVRZIDEiID4+CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvY29uZmln dXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9jb25maWd1 cmUJMjAxMi0wNi0wMiAyMTo0OToyNy4xMzkzOTg4NjkgKzAyMDAKKysrKyBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9jb25maWd1cmUJMjAxMi0wNi0wMiAyMTo0OTo1MC44OTAzOTAxNzkgKzAyMDAK K0BAIC0xMjc0NSw2ICsxMjc0NSw2NCBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1BFUlNPTkFM SVRZIDEiID4+CiAgCiAgZmkKICAKQEAgLTg3LDMgKzkxLDk2IEBACiAgCiAgIyBTdXBwb3J0IGZv ciAtLXdpdGgtc3lzcm9vdCBpcyBhIGNvcHkgb2YgR0RCX0FDX1dJVEhfRElSLAogICMgZXhjZXB0 IHRoYXQgdGhlIGFyZ3VtZW50IHRvIC0td2l0aC1zeXNyb290IGlzIG9wdGlvbmFsLgorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4KKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4JMjAx Mi0wNC0xOSAyMTozNDo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi9nZGJzZXJ2ZXIvY29uZmlnLmluCTIwMTItMDYtMDIgMjE6NDk6NTUuOTQ1Mzg4MzI5ICsw MjAwCitAQCAtNjksNiArNjksOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg ZGwnIGxpYnJhcnkgKC1sZGwpLiAqLworICN1bmRlZiBIQVZFX0xJQkRMCisgCisrLyogRGVmaW5l IHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZWxpbnV4JyBsaWJyYXJ5ICgtbHNlbGludXgpLiAqLwor KyN1bmRlZiBIQVZFX0xJQlNFTElOVVgKKysKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0 aGUgPGxpbnV4L2VsZi5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFWRV9MSU5VWF9FTEZf SAorIAorQEAgLTEzMCw2ICsxMzMsOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo ZSBgcmVhZGxpbmsnIGZ1bmN0aW9uLiAqLworICN1bmRlZiBIQVZFX1JFQURMSU5LCisgCisrLyog RGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzZWxpbnV4L3NlbGludXguaD4gaGVhZGVyIGZp bGUuICovCisrI3VuZGVmIEhBVkVfU0VMSU5VWF9TRUxJTlVYX0gKKysKKyAvKiBEZWZpbmUgdG8g MSBpZiB5b3UgaGF2ZSB0aGUgPHNndHR5Lmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZF X1NHVFRZX0gKKyAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9nZGJzZXJ2ZXIvY29u ZmlndXJlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9nZGJz ZXJ2ZXIvY29uZmlndXJlCTIwMTItMDQtMjAgMTk6NTg6NDkuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZQkyMDEyLTA2LTAyIDIx OjQ5OjU0LjQ4NTM4ODg2NCArMDIwMAorQEAgLTU1MzIsNiArNTUzMiw2NCBAQCBpZiAkd2FudF9p cGEgOyB0aGVuCisgICAgZmkKKyBmaQorIAorK2ZvciBhY19oZWFkZXIgaW4gc2VsaW51eC9zZWxp bnV4LmgKKytkbyA6CisrICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAi c2VsaW51eC9zZWxpbnV4LmgiICJhY19jdl9oZWFkZXJfc2VsaW51eF9zZWxpbnV4X2giICIkYWNf aW5jbHVkZXNfZGVmYXVsdCIKKytpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9zZWxpbnV4X3NlbGlu dXhfaCIgPSB4IiJ5ZXM7IHRoZW4gOgorKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNk ZWZpbmUgSEFWRV9TRUxJTlVYX1NFTElOVVhfSCAxCisrX0FDRU9GCisrCisrZmkKKysKKytkb25l CisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3Igc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIGluIC1sc2VsaW51eCIgPiY1CisrJGFzX2Vj aG9fbiAiY2hlY2tpbmcgZm9yIHNlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSBpbiAtbHNlbGlu dXguLi4gIiA+JjY7IH0KKytpZiB0ZXN0ICIke2FjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dl dF9ib29sZWFuX2FjdGl2ZStzZXR9IiA9IHNldDsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2Fj aGVkKSAiID4mNgorK2Vsc2UKKysgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKKytMSUJT PSItbHNlbGludXggICRMSUJTIgorK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0 LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisrLyogT3ZlcnJpZGUgYW55IEdD QyBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuCisrICAgVXNlIGNoYXIgYmVj YXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisrICAgYnVpbHRp biBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8K KysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiCisrI2VuZGlmCisrY2hhciBzZWN1cml0 eV9nZXRfYm9vbGVhbl9hY3RpdmUgKCk7CisraW50CisrbWFpbiAoKQorK3sKKytyZXR1cm4gc2Vj dXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlICgpOworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19B Q0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGFjX2N2X2xp Yl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZT15ZXMKKytlbHNlCisrICBhY19j dl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9hY3RpdmU9bm8KKytmaQorK3JtIC1m IGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorKyAgICBjb25mdGVzdCRh Y19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorK0xJQlM9JGFjX2NoZWNrX2xpYl9zYXZlX0xJQlMK KytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk YWNfY3ZfbGliX3NlbGludXhfc2VjdXJpdHlfZ2V0X2Jvb2xlYW5fYWN0aXZlIiA+JjUKKyskYXNf ZWNobyAiJGFjX2N2X2xpYl9zZWxpbnV4X3NlY3VyaXR5X2dldF9ib29sZWFuX2FjdGl2ZSIgPiY2 OyB9CisraWYgdGVzdCAieCRhY19jdl9saWJfc2VsaW51eF9zZWN1cml0eV9nZXRfYm9vbGVhbl9h Y3RpdmUiID0geCIieWVzOyB0aGVuIDoKKysgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKysj ZGVmaW5lIEhBVkVfTElCU0VMSU5VWCAxCisrX0FDRU9GCisrCisrICBMSUJTPSItbHNlbGludXgg JExJQlMiCisrCisrZmkKKysKKysKKyAKKyAKKyAKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQt MDFvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTAxb2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggZDMyYjIxZi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDFvZjI4 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMi0wMS9tc2cwMDIwMi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzAxLzI0IDE5OjEyOjMxCTEuMTM3NzEKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzAxLzI0IDIwOjU2OjMzCTEuMTM3NzIKLSMjIC0xLDMgKzEsMTIgQEAKLSsyMDEyLTAxLTI0 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUg Y2xlYW51cC4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9tX3N0cmVhbSk6 IE5ldmVyIGZjbG9zZSBTVFJFQU0uCi0rCVVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudCBmb3Ig aXQuCi0rCShzb3VyY2Vfc2NyaXB0X3dpdGhfc2VhcmNoKTogQ2FsbCBtYWtlX2NsZWFudXBfZmNs b3NlIGZvciBTVFJFQU0uCi0rCSogY2xpL2NsaS1zY3JpcHQuYyAoc2NyaXB0X2Zyb21fZmlsZSk6 IERvIG5vdCBjYWxsIG1ha2VfY2xlYW51cF9mY2xvc2UKLSsJZm9yIFNUUkVBTS4KLSsKLSAyMDEy LTAxLTI0ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgotIAotIAkqIGJyZWFrcG9p bnQuYyAoYnBzdGF0X3N0b3Bfc3RhdHVzKTogTW92aW5nIGNsZWFyaW5nIHByaW50X2l0Ci0tLS0g c3JjL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzIzIDE2OjM3OjAzCTEuMTIzCi0rKysgc3Jj L2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLzAxLzI0IDIwOjU2OjMzCTEuMTI0Ci1AQCAtNTI3LDgg KzUyNyw3IEBACi0gICByZXR1cm4gMTsKLSB9Ci0gCi0tLyogTG9hZCBzY3JpcHQgRklMRSwgd2hp Y2ggaGFzIGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLgotLSAgIFNUUkVBTSBpcyBjbG9z ZWQgYmVmb3JlIHdlIHJldHVybi4gICovCi0rLyogTG9hZCBzY3JpcHQgRklMRSwgd2hpY2ggaGFz IGFscmVhZHkgYmVlbiBvcGVuZWQgYXMgU1RSRUFNLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotIHNv dXJjZV9zY3JpcHRfZnJvbV9zdHJlYW0gKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSkK LUBAIC01NTYsMTIgKzU1NSw5IEBACi0gCSAgZWxzZQotIAkgICAgewotIAkgICAgICAvKiBOb3Bl LCBqdXN0IHB1bnQuICAqLwotLQkgICAgICBmY2xvc2UgKHN0cmVhbSk7Ci0gCSAgICAgIHRocm93 X2V4Y2VwdGlvbiAoZSk7Ci0gCSAgICB9Ci0gCX0KLS0gICAgICBlbHNlCi0tCWZjbG9zZSAoc3Ry ZWFtKTsKLSAgICAgfQotICAgZWxzZQotICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZp bGUpOwotQEAgLTU5NSw2ICs1OTEsNyBAQAotICAgICB9Ci0gCi0gICBvbGRfY2xlYW51cHMgPSBt YWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX3BhdGgpOwotKyAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAo c3RyZWFtKTsKLSAgIC8qIFRoZSBweXRob24gc3VwcG9ydCByZW9wZW5zIHRoZSBmaWxlLCBzbyB3 ZSBuZWVkIHRvIHBhc3MgZnVsbF9wYXRoIGhlcmUKLSAgICAgIGluIGNhc2UgdGhlIGZpbGUgd2Fz IGZvdW5kIG9uIHRoZSBzZWFyY2ggcGF0aC4gIEl0J3MgdXNlZnVsIHRvIGRvIHRoaXMKLSAgICAg IGFueXdheSBzbyB0aGF0IGVycm9yIG1lc3NhZ2VzIHNob3cgdGhlIGFjdHVhbCBmaWxlIHVzZWQu ICBCdXQgb25seSBkbwotLS0tIHNyYy9nZGIvY2xpL2NsaS1zY3JpcHQuYwkyMDEyLzAxLzA0IDA4 OjE3OjE3CTEuNzMKLSsrKyBzcmMvZ2RiL2NsaS9jbGktc2NyaXB0LmMJMjAxMi8wMS8yNCAyMDo1 NjozMwkxLjc0Ci1AQCAtMTYxNCwxMSArMTYxNCw5IEBACi0gICBpZiAoc3RyZWFtID09IE5VTEwp Ci0gICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oImNhbGxlZCB3aXRo IE5VTEwgZmlsZSBwb2ludGVyISIpKTsKLSAKLS0gIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51 cF9mY2xvc2UgKHN0cmVhbSk7Ci0tCi0gICBvbGRfbGluZXMub2xkX2xpbmUgPSBzb3VyY2VfbGlu ZV9udW1iZXI7Ci0gICBvbGRfbGluZXMub2xkX2ZpbGUgPSBzb3VyY2VfZmlsZV9uYW1lOwotLSAg bWFrZV9jbGVhbnVwIChzb3VyY2VfY2xlYW51cF9saW5lcywgJm9sZF9saW5lcyk7Ci0rICBvbGRf Y2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHNvdXJjZV9jbGVhbnVwX2xpbmVzLCAmb2xkX2xpbmVz KTsKLSAgIHNvdXJjZV9saW5lX251bWJlciA9IDA7Ci0gICBzb3VyY2VfZmlsZV9uYW1lID0gZmls ZTsKLSAgIC8qIFRoaXMgd2lsbCBnZXQgc2V0IGV2ZXJ5IHRpbWUgd2UgcmVhZCBhIGxpbmUuICBT byBpdCB3b24ndCBzdGF5ICIiCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAyb2YyOC5wYXRj aCBiL2dkYi1hdXRvbG9hZC0wMm9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGI0NGM5YmIuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAyb2YyOC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDEyLTAxL21zZzAwMjA1Lmh0bWwKLQotLS0tIHNyYy9nZGIvZ2RiX3ZlY3MuaAotKysr IHNyYy9nZGIvZ2RiX3ZlY3MuaAkyMDEyLTA0LTE3IDIyOjA0OjIzLjgxODY2NjAwMCArMDAwMAot QEAgLTAsMCArMSwyOCBAQAotKy8qIFNvbWUgY29tbW9ubHktdXNlZCBWRUMgdHlwZXMuCi0rCi0r ICAgQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rCi0rI2lmbmRlZiBHREJfVkVDU19ICi0rI2RlZmluZSBH REJfVkVDU19ICi0rCi0rI2luY2x1ZGUgInZlYy5oIgotKwotK0RFRl9WRUNfUCAoY2hhcl9wdHIp OwotKwotKyNlbmRpZiAvKiBHREJfVkVDU19IICovCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMS8yNCAyMTozMjo1NgkxLjEzNzc0Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMS8y NCAyMTozNjozNwkxLjEzNzc1Ci0jIyAtMSwzICsxLDEwIEBACi0rMjAxMi0wMS0yNCAgVG9tIFRy b21leSAgPHRyb21leUByZWRoYXQuY29tPgotKwotKwkqIGFkYS1sYW5nLmM6IEluY2x1ZGUgZ2Ri X3ZlY3MuaC4KLSsJKiBjaGFyc2V0LmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiB0cmFjZXBv aW50Lmg6IEluY2x1ZGUgZ2RiX3ZlY3MuaC4KLSsJKiBnZGJfdmVjcy5oOiBOZXcgZmlsZS4KLSsK LSAyMDEyLTAxLTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0g CSogYnJlYWtwb2ludC5jIChicmVha3BvaW50X2hpdF9jYXRjaF9mb3JrKQotLS0tIHNyYy9nZGIv YWRhLWxhbmcuYwkyMDEyLzAxLzA2IDAzOjM0OjQ1CTEuMzMwCi0rKysgc3JjL2dkYi9hZGEtbGFu Zy5jCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS4zMzEKLUBAIC01Nyw2ICs1Nyw3IEBACi0gI2luY2x1 ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJzdGFjay5oIgot KyNpbmNsdWRlICJnZGJfdmVjcy5oIgotIAotICNpbmNsdWRlICJwc3ltdGFiLmgiCi0gI2luY2x1 ZGUgInZhbHVlLmgiCi1AQCAtNTYyOCw4ICs1NjI5LDYgQEAKLSAgIHJldHVybiBzeW1fbmFtZTsK LSB9Ci0gCi0tREVGX1ZFQ19QIChjaGFyX3B0cik7Ci0tCi0gLyogQSBjb21wYW5pb24gZnVuY3Rp b24gdG8gYWRhX21ha2Vfc3ltYm9sX2NvbXBsZXRpb25fbGlzdCgpLgotICAgIENoZWNrIGlmIFNZ TV9OQU1FIHJlcHJlc2VudHMgYSBzeW1ib2wgd2hpY2ggbmFtZSB3b3VsZCBiZSBzdWl0YWJsZQot ICAgIHRvIGNvbXBsZXRlIFRFWFQgKFRFWFRfTEVOIGlzIHRoZSBsZW5ndGggb2YgVEVYVCksIGlu IHdoaWNoIGNhc2UKLS0tLSBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzA0IDA4OjE3OjAwCTEu NDYKLSsrKyBzcmMvZ2RiL2NoYXJzZXQuYwkyMDEyLzAxLzI0IDIxOjM2OjM3CTEuNDcKLUBAIC0y Nyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJlbnZpcm9uLmgiCi0g I2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAjaW5j bHVkZSA8c3RkZGVmLmg+Ci0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC03MTcsOCArNzE4 LDYgQEAKLSAKLSBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0aWFsaXplX2NoYXJz ZXQ7IC8qIC1XbWlzc2luZy1wcm90b3R5cGUgKi8KLSAKLS1ERUZfVkVDX1AgKGNoYXJfcHRyKTsK LS0KLSBzdGF0aWMgVkVDIChjaGFyX3B0cikgKmNoYXJzZXRzOwotIAotICNpZmRlZiBQSE9OWV9J Q09OVgotLS0tIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMDQgMDg6Mjc6NTcJMS40Ngot KysrIHNyYy9nZGIvdHJhY2Vwb2ludC5oCTIwMTIvMDEvMjQgMjE6MzY6MzcJMS40NwotQEAgLTIy LDYgKzIyLDcgQEAKLSAjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgotICNpbmNsdWRlICJ0YXJnZXQu aCIKLSAjaW5jbHVkZSAibWVtcmFuZ2UuaCIKLSsjaW5jbHVkZSAiZ2RiX3ZlY3MuaCIKLSAKLSAv KiBBIHRyYWNlIHN0YXRlIHZhcmlhYmxlIGlzIGEgdmFsdWUgbWFuYWdlZCBieSBhIHRhcmdldCBi ZWluZwotICAgIHRyYWNlZC4gIEEgdHJhY2Ugc3RhdGUgdmFyaWFibGUgKG9yIHRzdiBmb3Igc2hv cnQpIGNhbiBiZSBhY2Nlc3NlZAotQEAgLTE0Myw4ICsxNDQsNiBAQAotIAotIC8qIFN0cnVjdCB0 byBjb2xsZWN0IHJhbmRvbSBpbmZvIGFib3V0IHRyYWNlcG9pbnRzIG9uIHRoZSB0YXJnZXQuICAq LwotIAotLURFRl9WRUNfUCAoY2hhcl9wdHIpOwotLQotIHN0cnVjdCB1cGxvYWRlZF90cAotIHsK LSAgIGludCBudW1iZXI7CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTAzb2YyOC5wYXRjaCBi L2dkYi1hdXRvbG9hZC0wM29mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IGMwZWZjOGMuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTAzb2YyOC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2 cy8yMDEyLTAxL21zZzAwMjE5Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEv MjYgMTY6NDQ6MjkJMS4xMzc4MAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDEvMjYgMjE6 NTQ6NDIJMS4xMzc4MQotIyMgLTEsMyArMSwyMiBAQAotKzIwMTItMDEtMjYgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRG8gbm90IG9wZW4gc2NyaXB0 IGZpbGVuYW1lcyB0d2ljZS4KLSsJKiBjbGkvY2xpLWNtZHMuYyAoc291cmNlX3NjcmlwdF9mcm9t X3N0cmVhbSk6IFBhc3MgdG8KLSsJc291cmNlX3B5dGhvbl9zY3JpcHQgYWxzbyBTVFJFQU0uCi0r CSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jIChzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUGFzcyB0 bwotKwlzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSBhbHNvIFNUUkVBTS4KLSsJKGF1 dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFBhc3MgdG8gc291cmNlX3B5dGhvbl9zY3JpcHRfZm9y X29iamZpbGUKLSsJYWxzbyBJTlBVVC4KLSsJKiBweXRob24vcHl0aG9uLWludGVybmFsLmggKHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3Ci0rCXBhcmFtZXRlciBmaWxlLCBy ZW5hbWUgcGFyYW1ldGVyIGZpbGUgdG8gZmlsZW5hbWUuCi0rCSogcHl0aG9uL3B5dGhvbi5jIChw eXRob25fcnVuX3NpbXBsZV9maWxlKTogQ2FsbCBQeVJ1bl9TaW1wbGVGaWxlCi0rCWluc3RlYWQg aWYgIV9XSU4zMi4gIFVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudC4KLSsJKHNvdXJjZV9weXRo b25fc2NyaXB0LCBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSkKLSsJKHNvdXJjZV9w eXRob25fc2NyaXB0KTogTmV3IHBhcmFtZXRlciBmaWxlLCByZW5hbWUgcGFyYW1ldGVyIGZpbGUg dG8KLSsJZmlsZW5hbWUuICBQYXNzIEZJTEVOQU1FIHRvIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUu Ci0rCSogcHl0aG9uL3B5dGhvbi5oIChzb3VyY2VfcHl0aG9uX3NjcmlwdCk6IE5ldyBwYXJhbWV0 ZXIgZmlsZSwgcmVuYW1lCi0rCXBhcmFtZXRlciBmaWxlIHRvIGZpbGVuYW1lLgotKwotIDIwMTIt MDEtMjYgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0gCSogY29yZWxvdy5j IChjb3JlX2hhc19mYWtlX3BpZCk6IERlbGV0ZS4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jbGkvY2xpLWNtZHMuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvY2xpL2NsaS1jbWRzLmMJMjAxMi0wMS0wNCAwOToxNzoxNi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDEyLTA0LTE4 IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAotQEAgLTUyOSw5ICs1MjksNyBAQCBzb3VyY2Vfc2Ny aXB0X2Zyb21fc3RyZWFtIChGSUxFICpzdHJlYW0sCi0gCi0gICAgICAgVFJZX0NBVENIIChlLCBS RVRVUk5fTUFTS19FUlJPUikKLSAJewotLSAgICAgICAgICAvKiBUaGUgcHl0aG9uIHN1cHBvcnQg cmVvcGVucyB0aGUgZmlsZSB1c2luZyBweXRob24gZnVuY3Rpb25zLAotLSAgICAgICAgICAgICBz byB0aGVyZSdzIG5vIHBvaW50IGluIHBhc3NpbmcgU1RSRUFNIGhlcmUuICAqLwotLQkgIHNvdXJj ZV9weXRob25fc2NyaXB0IChmaWxlKTsKLSsJICBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoc3RyZWFt LCBmaWxlKTsKLSAJfQotICAgICAgIGlmIChlLnJlYXNvbiA8IDApCi0gCXsKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEy LTAxLTA0IDA5OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCAr MDIwMAotQEAgLTMxMiw3ICszMTIsNyBAQCBVc2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JF R0VYUF0nIHRvCi0gCXsKLSAJICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2Fk ZWQsIGxvYWQgaXQuICAqLwotIAkgIGlmICghIGluX2hhc2hfdGFibGUpCi0tCSAgICBzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZnVsbF9wYXRoKTsKLSsJICAgIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0 aCk7Ci0gCSAgZmNsb3NlIChzdHJlYW0pOwotIAkgIHhmcmVlIChmdWxsX3BhdGgpOwotIAl9Ci1A QCAtNDMxLDcgKzQzMSw3IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZp bGUKLSAJIEl0J3MgaGlnaGx5IHVubGlrZWx5IHRoYXQgd2UnZCBldmVyIGxvYWQgaXQgdHdpY2Us Ci0gCSBhbmQgdGhlc2Ugc2NyaXB0cyBhcmUgcmVxdWlyZWQgdG8gYmUgaWRlbXBvdGVudCB1bmRl ciBtdWx0aXBsZQotIAkgbG9hZHMgYW55d2F5LiAgKi8KLS0gICAgICBzb3VyY2VfcHl0aG9uX3Nj cmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgZGVidWdmaWxlKTsKLSsgICAgICBzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAg ICAgZmNsb3NlIChpbnB1dCk7Ci0gICAgIH0KLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwMTIwLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDEyLTAxLTA0IDA5 OjE3OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhv bi9weXRob24taW50ZXJuYWwuaAkyMDEyLTA0LTE4IDAwOjQxOjQyLjY5Njg1NTQzMCArMDIwMAot QEAgLTI4OSw4ICsyODksOCBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5 dGhvCi0gCi0gdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9pZCk7Ci0gCi0tdm9pZCBzb3VyY2Vf cHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJ CSAgICAgICBjb25zdCBjaGFyICpmaWxlKTsKLSt2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0X2Zv cl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmlsZSwKLSsJCQkJICAg ICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSBQeU9iamVjdCAqcHl0aG9uX3N0cmluZ190 b191bmljb2RlIChQeU9iamVjdCAqb2JqKTsKLSBjaGFyICp1bmljb2RlX3RvX3RhcmdldF9zdHJp bmcgKFB5T2JqZWN0ICp1bmljb2RlX3N0cik7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvcHl0aG9uL3B5dGhvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMi0wNC0x OCAwMDo0MTo0Mi42OTY4NTU0MzAgKzAyMDAKLUBAIC0xNTQsMzQgKzE1NCwzMSBAQCBlbnN1cmVf cHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyCi0gICByZXR1cm4gbWFrZV9jbGVhbnVw IChyZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7Ci0gfQotIAotLS8qIEEgd3JhcHBlciBhcm91bmQg UHlSdW5fU2ltcGxlRmlsZS4gIEZJTEVOQU1FIGlzIHRoZSBuYW1lIG9mCi0tICAgdGhlIFB5dGhv biBzY3JpcHQgdG8gcnVuLgotKy8qIEEgd3JhcHBlciBhcm91bmQgUHlSdW5fU2ltcGxlRmlsZS4g IEZJTEUgaXMgdGhlIFB5dGhvbiBzY3JpcHQgdG8gcnVuCi0rICAgbmFtZWQgRklMRU5BTUUuCi0g Ci0tICAgT25lIG9mIHRoZSBwYXJhbWV0ZXJzIG9mIFB5UnVuX1NpbXBsZUZpbGUgaXMgYSBGSUxF ICouCi0tICAgVGhlIHByb2JsZW0gaXMgdGhhdCB0eXBlIEZJTEUgaXMgZXh0cmVtZWx5IHN5c3Rl bSBhbmQgY29tcGlsZXIKLS0gICBkZXBlbmRlbnQuICBTbywgdW5sZXNzIHRoZSBQeXRob24gbGli cmFyeSBoYXMgYmVlbiBjb21waWxlZCB1c2luZwotLSAgIHRoZSBzYW1lIGJ1aWxkIGVudmlyb25t ZW50IGFzIEdEQiwgd2UgcnVuIHRoZSByaXNrIG9mIGdldHRpbmcKLS0gICBhIGNyYXNoIGR1ZSB0 byBpbmNvbnNpc3RlbmNpZXMgYmV0d2VlbiB0aGUgZGVmaW5pdGlvbiB1c2VkIGJ5IEdEQiwKLS0g ICBhbmQgdGhlIGRlZmluaXRpb24gdXNlZCBieSBQeXRob24uICBBIG1pc21hdGNoIGNhbiB2ZXJ5 IGxpa2VseQotLSAgIGxlYWQgdG8gYSBjcmFzaC4KLS0KLS0gICBUaGVyZSBpcyBhbHNvIHRoZSBz aXR1YXRpb24gd2hlcmUgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCBHREIKLS0gICBhcmUgdXNpbmcg dHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB0aGUgQyBydW50aW1lIGxpYnJhcnkuCi0tICAgVGhp cyBpcyBwYXJ0aWN1bGFybHkgdmlzaWJsZSBvbiBXaW5kb3dzLCB3aGVyZSBmZXcgdXNlcnMgd291 bGQKLS0gICBidWlsZCBQeXRob24gdGhlbXNlbHZlcyAodGhpcyBpcyBubyB0cml2aWFsIHRhc2sg b24gdGhpcyBwbGF0Zm9ybSksCi0tICAgYW5kIHRodXMgdXNlIGJpbmFyaWVzIGJ1aWx0IGJ5IHNv bWVvbmUgZWxzZSBpbnN0ZWFkLiBQeXRob24sCi0tICAgYmVpbmcgYnVpbHQgd2l0aCBWQywgd291 bGQgdXNlIG9uZSB2ZXJzaW9uIG9mIHRoZSBtc3ZjciBETEwKLS0gICAoRWcuIG1zdmNyMTAwLmRs bCksIHdoaWxlIE1pbkdXIHVzZXMgbXN2Y3J0LmRsbC4gIEEgRklMRSAqCi0tICAgZnJvbSBvbmUg cnVudGltZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotKyAgIE9u IFdpbmRvd3MgaG9zdHMgZmV3IHVzZXJzIHdvdWxkIGJ1aWxkIFB5dGhvbiB0aGVtc2VsdmVzICh0 aGlzIGlzIG5vCi0rICAgdHJpdmlhbCB0YXNrIG9uIHRoaXMgcGxhdGZvcm0pLCBhbmQgdGh1cyB1 c2UgYmluYXJpZXMgYnVpbHQgYnkKLSsgICBzb21lb25lIGVsc2UgaW5zdGVhZC4gIFRoZXJlIG1h eSBoYXBwZW4gc2l0dWF0aW9uIHdoZXJlIHRoZSBQeXRob24KLSsgICBsaWJyYXJ5IGFuZCBHREIg YXJlIHVzaW5nIHR3byBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgdGhlIEMgcnVudGltZQotKyAgIGxp YnJhcnkuICBQeXRob24sIGJlaW5nIGJ1aWx0IHdpdGggVkMsIHdvdWxkIHVzZSBvbmUgdmVyc2lv biBvZiB0aGUKLSsgICBtc3ZjciBETEwgKEVnLiBtc3ZjcjEwMC5kbGwpLCB3aGlsZSBNaW5HVyB1 c2VzIG1zdmNydC5kbGwuCi0rICAgQSBGSUxFICogZnJvbSBvbmUgcnVudGltZSBkb2VzIG5vdCBu ZWNlc3NhcmlseSBvcGVyYXRlIGNvcnJlY3RseSBpbgotICAgIHRoZSBvdGhlciBydW50aW1lLgot IAotLSAgIFRvIHdvcmsgYXJvdW5kIHRoaXMgcG90ZW50aWFsIGlzc3VlLCB3ZSBjcmVhdGUgdGhl IEZJTEUgb2JqZWN0Ci0tICAgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0aHVzIG1ha2luZyBzdXJl IHRoYXQgaXQgaXMgY29tcGF0aWJsZQotLSAgIHdpdGggdGhlIFB5dGhvbiBsaWJyYXJ5LiAgKi8K LSsgICBUbyB3b3JrIGFyb3VuZCB0aGlzIHBvdGVudGlhbCBpc3N1ZSwgd2UgY3JlYXRlIG9uIFdp bmRvd3MgaG9zdHMgdGhlCi0rICAgRklMRSBvYmplY3QgdXNpbmcgUHl0aG9uIHJvdXRpbmVzLCB0 aHVzIG1ha2luZyBzdXJlIHRoYXQgaXQgaXMKLSsgICBjb21wYXRpYmxlIHdpdGggdGhlIFB5dGhv biBsaWJyYXJ5LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUg KGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3B5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKEZJTEUgKmZp bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSsjaWZuZGVmIF9XSU4zMgotKwotKyAgUHlS dW5fU2ltcGxlRmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKwotKyNlbHNlIC8qIF9XSU4zMiAqLwot KwotICAgY2hhciAqZnVsbF9wYXRoOwotICAgUHlPYmplY3QgKnB5dGhvbl9maWxlOwotICAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXA7Ci1AQCAtMjAxLDYgKzE5OCw4IEBAIHB5dGhvbl9ydW5fc2lt cGxlX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGUKLSAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKHB5 dGhvbl9maWxlKTsKLSAgIFB5UnVuX1NpbXBsZUZpbGUgKFB5RmlsZV9Bc0ZpbGUgKHB5dGhvbl9m aWxlKSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwotKyNlbmRpZiAv KiBfV0lOMzIgKi8KLSB9Ci0gCi0gLyogR2l2ZW4gYSBjb21tYW5kX2xpbmUsIHJldHVybiBhIGNv bW1hbmQgc3RyaW5nIHN1aXRhYmxlIGZvciBwYXNzaW5nCi1AQCAtNjIzLDE3ICs2MjIsMTcgQEAg Z2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeQotIH0KLSAKLSAvKiBSZWFk IGEgZmlsZSBhcyBQeXRob24gY29kZS4KLS0gICBGSUxFIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxl LgotKyAgIEZJTEUgaXMgdGhlIGZpbGUgdG8gcnVuLiAgRklMRU5BTUUgaXMgbmFtZSBvZiB0aGUg ZmlsZSBGSUxFLgotICAgIFRoaXMgZG9lcyBub3QgdGhyb3cgYW55IGVycm9ycy4gIElmIGFuIGV4 Y2VwdGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQKLSAgICB0aGUgdHJhY2ViYWNrIGFuZCBj bGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KLSAKLSB2b2lkCi0tc291cmNlX3B5dGhvbl9z Y3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpCi0rc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZp bGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVw OwotIAotICAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgp LCBjdXJyZW50X2xhbmd1YWdlKTsKLS0gIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZpbGUpOwot KyAgcHl0aG9uX3J1bl9zaW1wbGVfZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotICAgZG9fY2xlYW51 cHMgKGNsZWFudXApOwotIH0KLSAKLUBAIC0xMDQxLDE5ICsxMDQwLDIwIEBAIGdkYnB5X3Byb2dz cGFjZXMgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU8KLSAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9m b3Jfb2JqZmlsZTsgaXQgaXMgTlVMTCBhdCBvdGhlciB0aW1lcy4gICovCi0gc3RhdGljIHN0cnVj dCBvYmpmaWxlICpnZGJweV9jdXJyZW50X29iamZpbGU7Ci0gCi0tLyogU2V0IHRoZSBjdXJyZW50 IG9iamZpbGUgdG8gT0JKRklMRSBhbmQgdGhlbiByZWFkIEZJTEUgYXMgUHl0aG9uIGNvZGUuCi0t ICAgVGhpcyBkb2VzIG5vdCB0aHJvdyBhbnkgZXJyb3JzLiAgSWYgYW4gZXhjZXB0aW9uIG9jY3Vy cyBweXRob24gd2lsbCBwcmludAotLSAgIHRoZSB0cmFjZWJhY2sgYW5kIGNsZWFyIHRoZSBlcnJv ciBpbmRpY2F0b3IuICAqLwotKy8qIFNldCB0aGUgY3VycmVudCBvYmpmaWxlIHRvIE9CSkZJTEUg YW5kIHRoZW4gcmVhZCBGSUxFIG5hbWVkIEZJTEVOQU1FCi0rICAgYXMgUHl0aG9uIGNvZGUuICBU aGlzIGRvZXMgbm90IHRocm93IGFueSBlcnJvcnMuICBJZiBhbiBleGNlcHRpb24KLSsgICBvY2N1 cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBhbmQgY2xlYXIgdGhlIGVycm9yIGlu ZGljYXRvci4gICovCi0gCi0gdm9pZAotLXNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxl IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZmlsZSkKLStzb3VyY2VfcHl0 aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZp bGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVu YW1lKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAKLSAgIGNsZWFudXBzID0g ZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBjdXJyZW50X2xh bmd1YWdlKTsKLSAgIGdkYnB5X2N1cnJlbnRfb2JqZmlsZSA9IG9iamZpbGU7Ci0gCi0tICBweXRo b25fcnVuX3NpbXBsZV9maWxlIChmaWxlKTsKLSsgIHB5dGhvbl9ydW5fc2ltcGxlX2ZpbGUgKGZp bGUsIGZpbGVuYW1lKTsKLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Ci0gICBnZGJweV9j dXJyZW50X29iamZpbGUgPSBOVUxMOwotQEAgLTExMjksNyArMTEyOSw3IEBAIGV2YWxfcHl0aG9u X2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QKLSB9Ci0gCi0gdm9pZAotLXNvdXJjZV9weXRo b25fc2NyaXB0IChjb25zdCBjaGFyICpmaWxlKQotK3NvdXJjZV9weXRob25fc2NyaXB0IChGSUxF ICpmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSB7Ci0gICB0aHJvd19lcnJvciAoVU5TVVBQ T1JURURfRVJST1IsCi0gCSAgICAgICBfKCJQeXRob24gc2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0 ZWQgaW4gdGhpcyBjb3B5IG9mIEdEQi4iKSk7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9n ZGIvcHl0aG9uL3B5dGhvbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0x OCAwMDo0MTo0Mi42OTc4NTU0MjcgKzAyMDAKLUBAIC0zMCw3ICszMCw3IEBAIGV4dGVybiB2b2lk IGZpbmlzaF9weXRob25faW5pdGlhbGl6YXRpb24KLSAKLSB2b2lkIGV2YWxfcHl0aG9uX2Zyb21f Y29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwotIAotLXZvaWQgc291cmNl X3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUpOwotK3ZvaWQgc291cmNlX3B5dGhvbl9z Y3JpcHQgKEZJTEUgKmZpbGUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSAKLSB2b2lkIHJ1bl9w eXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwotIAoKZGlmZiAtLWdpdCBhL2dk Yi1hdXRvbG9hZC0wNG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDRvZjI4LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDVhYzg3Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRv bG9hZC0wNG9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNC5odG1sCi0KLSMjIyBz cmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjEzOjM5CTEuMTQwMjUKLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE2OjE3CTEuMTQwMjYKLSMjIC0xLDMgKzEsMTQgQEAK LSsyMDEyLTAzLTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCi0rCUNvZGUgY2xlYW51cC4KLSsJKiBtYWluLmMgKHN0cnVjdCBjbWRhcmcpOiBNb3ZlIGl0 IGhlcmUgZnJvbSBtYWluLiAgQWRkIG1vcmUgY29tbWVudHMuCi0rCShjbWRhcmdfcywgVkVDIChj bWRhcmdfcykpOiBOZXcuCi0rCShtYWluKTogTW92ZSBzdHJ1Y3QgY21kYXJnIGZyb20gaGVyZS4g IE5ldyB2YXJpYWJsZXMgY21kYXJnX3ZlYyBhbmQKLSsJY21kYXJnX3AuICBSZW1vdmUgdmFyaWFi bGVzIGNtZHNpemUgYW5kIG5jbWQgYW5kIHRoZWlyIGluaXRpYWxpemF0aW9uLgotKwlJbnN0YWxs IGNsZWFudXAgZm9yIGNtZGFyZ192ZWMuICBVcGRhdGUgZmlsbGluZyBmb3Igb3B0aW9ucyAneCcg YW5kCi0rCSdYJy4gIFJlcGxhY2UgY21kYXJnIHByb2Nlc3NpbmcgYnkgY21kYXJnX3ZlYyBwcm9j ZXNzaW5nLiAgUmVtb3ZlIHhmcmVlCi0rCW9mIENNREFSRy4KLSsKLSAyMDEyLTAzLTE5ICBUb20g VHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSogZ251LXYzLWFiaS5jIChnbnV2M19w cmludF92dGFibGUpOiBJbml0aWFsaXplICdyZXN1bHRfdmVjJy4KLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQyOjE1LjM1NDc3 MjMzNyArMDIwMAotQEAgLTI3Nyw2ICsyNzcsMjUgQEAgZXhlY19vcl9jb3JlX2ZpbGVfYXR0YWNo IChjaGFyICpmaWxlbmFtZQotICAgICB9Ci0gfQotIAotKy8qIEFyZ3VtZW50cyBvZiAtLWNvbW1h bmQgb3B0aW9uIGFuZCBpdHMgY291bnRlcnBhcnQuICAqLwotK3R5cGVkZWYgc3RydWN0IGNtZGFy ZyB7Ci0rICAvKiBUeXBlIG9mIHRoaXMgb3B0aW9uLiAgKi8KLSsgIGVudW0gewotKyAgICAvKiBP cHRpb24gdHlwZSAteC4gICovCi0rICAgIENNREFSR19GSUxFLAotKwotKyAgICAvKiBPcHRpb24g dHlwZSAtZXguICAqLwotKyAgICBDTURBUkdfQ09NTUFORAotKyAgfSB0eXBlOwotKwotKyAgLyog VmFsdWUgb2YgdGhpcyBvcHRpb24gLSBmaWxlbmFtZSBvciB0aGUgR0RCIGNvbW1hbmQgaXRzZWxm LiAgU3RyaW5nIG1lbW9yeQotKyAgICAgaXMgbm90IG93bmVkIGJ5IHRoaXMgc3RydWN0dXJlIGRl c3BpdGUgaXQgaXMgJ2NvbnN0Jy4gICovCi0rICBjaGFyICpzdHJpbmc7Ci0rfSBjbWRhcmdfczsK LSsKLSsvKiBEZWZpbmUgdHlwZSBWRUMgKGNtZGFyZ19zKS4gICovCi0rREVGX1ZFQ19PIChjbWRh cmdfcyk7Ci0rCi0gc3RhdGljIGludAotIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gewot QEAgLTMwMywxNyArMzIyLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIHN0YXRp YyBpbnQgcHJpbnRfdmVyc2lvbjsKLSAKLSAgIC8qIFBvaW50ZXJzIHRvIGFsbCBhcmd1bWVudHMg b2YgLS1jb21tYW5kIG9wdGlvbi4gICovCi0tICBzdHJ1Y3QgY21kYXJnIHsKLS0gICAgZW51bSB7 Ci0tICAgICAgQ01EQVJHX0ZJTEUsCi0tICAgICAgQ01EQVJHX0NPTU1BTkQKLS0gICAgfSB0eXBl OwotLSAgICBjaGFyICpzdHJpbmc7Ci0tICB9ICpjbWRhcmc7Ci0tICAvKiBBbGxvY2F0ZWQgc2l6 ZSBvZiBjbWRhcmcuICAqLwotLSAgaW50IGNtZHNpemU7Ci0tICAvKiBOdW1iZXIgb2YgZWxlbWVu dHMgb2YgY21kYXJnIHVzZWQuICAqLwotLSAgaW50IG5jbWQ7Ci0rICBWRUMgKGNtZGFyZ19zKSAq Y21kYXJnX3ZlYyA9IE5VTEw7Ci0rICBzdHJ1Y3QgY21kYXJnICpjbWRhcmdfcDsKLSAKLSAgIC8q IEluZGljZXMgb2YgYWxsIGFyZ3VtZW50cyBvZiAtLWRpcmVjdG9yeSBvcHRpb24uICAqLwotICAg Y2hhciAqKmRpcmFyZzsKLUBAIC0zNDksOSArMzU5LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAq ZGF0YSkKLSAgIGJpbmR0ZXh0ZG9tYWluIChQQUNLQUdFLCBMT0NBTEVESVIpOwotICAgdGV4dGRv bWFpbiAoUEFDS0FHRSk7Ci0gCi0tICBjbWRzaXplID0gMTsKLS0gIGNtZGFyZyA9IChzdHJ1Y3Qg Y21kYXJnICopIHhtYWxsb2MgKGNtZHNpemUgKiBzaXplb2YgKCpjbWRhcmcpKTsKLS0gIG5jbWQg PSAwOwotKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY21kYXJnX3MpLCAmY21kYXJnX3Zl Yyk7Ci0gICBkaXJzaXplID0gMTsKLSAgIGRpcmFyZyA9IChjaGFyICoqKSB4bWFsbG9jIChkaXJz aXplICogc2l6ZW9mICgqZGlyYXJnKSk7Ci0gICBuZGlyID0gMDsKLUBAIC01ODIsMjQgKzU5MCwx OSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkgICAgcGlkYXJnID0gb3B0YXJnOwot IAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAneCc6Ci0tCSAgICBjbWRhcmdbbmNtZF0udHlwZSA9IENN REFSR19GSUxFOwotLQkgICAgY21kYXJnW25jbWQrK10uc3RyaW5nID0gb3B0YXJnOwotLQkgICAg aWYgKG5jbWQgPj0gY21kc2l6ZSkKLS0JICAgICAgewotLQkJY21kc2l6ZSAqPSAyOwotLQkJY21k YXJnID0geHJlYWxsb2MgKChjaGFyICopIGNtZGFyZywKLS0JCQkJICAgY21kc2l6ZSAqIHNpemVv ZiAoKmNtZGFyZykpOwotLQkgICAgICB9Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVjdCBjbWRhcmcg Y21kYXJnID0geyBDTURBUkdfRklMRSwgb3B0YXJnIH07Ci0rCi0rCSAgICAgIFZFQ19zYWZlX3B1 c2ggKGNtZGFyZ19zLCBjbWRhcmdfdmVjLCAmY21kYXJnKTsKLSsJICAgIH0KLSAJICAgIGJyZWFr OwotIAkgIGNhc2UgJ1gnOgotLQkgICAgY21kYXJnW25jbWRdLnR5cGUgPSBDTURBUkdfQ09NTUFO RDsKLS0JICAgIGNtZGFyZ1tuY21kKytdLnN0cmluZyA9IG9wdGFyZzsKLS0JICAgIGlmIChuY21k ID49IGNtZHNpemUpCi0tCSAgICAgIHsKLS0JCWNtZHNpemUgKj0gMjsKLS0JCWNtZGFyZyA9IHhy ZWFsbG9jICgoY2hhciAqKSBjbWRhcmcsCi0tCQkJCSAgIGNtZHNpemUgKiBzaXplb2YgKCpjbWRh cmcpKTsKLS0JICAgICAgfQotKwkgICAgewotKwkgICAgICBzdHJ1Y3QgY21kYXJnIGNtZGFyZyA9 IHsgQ01EQVJHX0NPTU1BTkQsIG9wdGFyZyB9OwotKwotKwkgICAgICBWRUNfc2FmZV9wdXNoIChj bWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9Ci0rCSAgICBicmVhazsKLSAJ ICAgIGJyZWFrOwotIAkgIGNhc2UgJ0InOgotIAkgICAgYmF0Y2hfZmxhZyA9IGJhdGNoX3NpbGVu dCA9IDE7Ci1AQCAtOTkwLDE2ICs5OTMsMTggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK LSAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKLSAgICAgbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUgKG9iamZpbGUpOwotIAotLSAgZm9yIChpID0gMDsgaSA8IG5jbWQ7IGkrKykKLSsgIGZv ciAoaSA9IDA7IFZFQ19pdGVyYXRlIChjbWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3Ap OyBpKyspCi0rICAgIHN3aXRjaCAoY21kYXJnX3AtPnR5cGUpCi0gICAgIHsKLS0gICAgICBpZiAo Y21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0ZJTEUpCi0tICAgICAgICBjYXRjaF9jb21tYW5kX2Vy cm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnW2ldLnN0cmluZywKLSsgICAgICBjYXNlIENNREFS R19GSUxFOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9lcnJvcnMgKHNvdXJjZV9zY3JpcHQsIGNt ZGFyZ19wLT5zdHJpbmcsCi0gCQkJICAgICAgIWJhdGNoX2ZsYWcsIFJFVFVSTl9NQVNLX0FMTCk7 Ci0tICAgICAgZWxzZSAgLyogY21kYXJnW2ldLnR5cGUgPT0gQ01EQVJHX0NPTU1BTkQgKi8KLS0g ICAgICAgIGNhdGNoX2NvbW1hbmRfZXJyb3JzIChleGVjdXRlX2NvbW1hbmQsIGNtZGFyZ1tpXS5z dHJpbmcsCi0rCWJyZWFrOwotKyAgICAgIGNhc2UgQ01EQVJHX0NPTU1BTkQ6Ci0rICAgICAgICBj YXRjaF9jb21tYW5kX2Vycm9ycyAoZXhlY3V0ZV9jb21tYW5kLCBjbWRhcmdfcC0+c3RyaW5nLAot IAkJCSAgICAgICFiYXRjaF9mbGFnLCBSRVRVUk5fTUFTS19BTEwpOwotKwlicmVhazsKLSAgICAg fQotLSAgeGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBh ZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCi0gICAgICByZWFkLiAgKi8KCmRp ZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA1b2Yy OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRkOGNjMy4uMDAwMDAwMAot LS0gYS9nZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDMvbXNnMDAyMzUu aHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxNjoxNwkxLjE0MDI2 Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8xOSAxODoxOToyMwkxLjE0MDI3Ci0jIyAt MSw1ICsxLDE4IEBACi0gMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotIAotKwkqIE5FV1M6IERlc2NyaWJlIG5ldyBvcHRpb25zIC0taW5pdC1j b21tYW5kPUZJTEUsIC1peCBhbmQKLSsJLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5ELCAtaWV4 LgotKwkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVtIGl0ZW1zIENNREFSR19JTklU X0ZJTEUgYW5kCi0rCUNNREFSR19JTklUX0NPTU1BTkQuCi0rCShjYXB0dXJlZF9tYWluKTogTmV3 IGVudW0gaXRlbXMgT1BUX0lYIGFuZCBPUFRfSUVYLiAgQWRkCi0rCSJpbml0LWNvbW1hbmQiLCAi aW5pdC1ldmFsLWNvbW1hbmQiLCAiaXgiIGFuZCAiaWV4IiB0byB0aGUgdmFyaWFibGUKLSsJbG9u Z19vcHRpb25zLiAgSGFuZGxlIE9QVF9JWCBhbmQgT1BUX0lFWC4gIFByb2Nlc3MgdGhlbSBmcm9t IENNREFSR19WRUMuCi0rCU5ldyBjb21tZW50IGZvciBDTURBUkdfRklMRSBhbmQgQ01EQVJHX0NP TU1BTkQgcHJvY2Vzc2luZy4KLSsJKHByaW50X2dkYl9oZWxwKTogRGVzY3JpYmUgLS1pbml0LWNv bW1hbmQ9RklMRSwgLWl4IGFuZAotKwktLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXgu Ci0rCi0rMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotKwotIAlDb2RlIGNsZWFudXAuCi0gCSogbWFpbi5jIChzdHJ1Y3QgY21kYXJnKTogTW92 ZSBpdCBoZXJlIGZyb20gbWFpbi4gIEFkZCBtb3JlIGNvbW1lbnRzLgotIAkoY21kYXJnX3MsIFZF QyAoY21kYXJnX3MpKTogTmV3LgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0w NC0xOCAwMDo0MTozMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9ORVdTCTIwMTItMDQtMTggMDA6NDI6NTEuMjI2NjgxMDY4ICswMjAwCi1AQCAtMjgsNiArMjgs MTMgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxkL2djYy9leHByLmMsIGJ1dCBu b3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlv bnMKLSsKLSstLWluaXQtY29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQs IC14IGJ1dCBleGVjdXRlIGl0Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJl Zm9yZSBsb2FkaW5nIGluZmVyaW9yLgotKy0taW5pdC1ldmFsLWNvbW1hbmQ9Q09NTUFORCwgLWll eCBMaWtlIC0tZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1leCBidXQKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZXhlY3V0ZSBpdCBiZWZvcmUgbG9hZGluZyBpbmZlcmlvci4KLSsK LSAqKiogQ2hhbmdlcyBpbiBHREIgNy40Ci0gCi0gKiBHREIgbm93IGhhbmRsZXMgYW1iaWd1b3Vz IGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRseTsgdGhlIGV4aXN0aW5nCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0MjoxNS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMJMjAxMi0wNC0xOCAwMDo0Mjo1MS4y MjY2ODEwNjggKzAyMDAKLUBAIC0yODUsNyArMjg1LDEzIEBAIHR5cGVkZWYgc3RydWN0IGNtZGFy ZyB7Ci0gICAgIENNREFSR19GSUxFLAotIAotICAgICAvKiBPcHRpb24gdHlwZSAtZXguICAqLwot LSAgICBDTURBUkdfQ09NTUFORAotKyAgICBDTURBUkdfQ09NTUFORCwKLSsKLSsgICAgLyogT3B0 aW9uIHR5cGUgLWl4LiAgKi8KLSsgICAgQ01EQVJHX0lOSVRfRklMRSwKLSsgICAgCi0rICAgIC8q IE9wdGlvbiB0eXBlIC1pZXguICAqLwotKyAgICBDTURBUkdfSU5JVF9DT01NQU5ECi0gICB9IHR5 cGU7Ci0gCi0gICAvKiBWYWx1ZSBvZiB0aGlzIG9wdGlvbiAtIGZpbGVuYW1lIG9yIHRoZSBHREIg Y29tbWFuZCBpdHNlbGYuICBTdHJpbmcgbWVtb3J5Ci1AQCAtNDM0LDcgKzQ0MCw5IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgT1BUX1NUQVRJU1RJQ1MsCi0gICAgICAgT1BU X1RVSSwKLSAgICAgICBPUFRfTk9XSU5ET1dTLAotLSAgICAgIE9QVF9XSU5ET1dTCi0rICAgICAg T1BUX1dJTkRPV1MsCi0rICAgICAgT1BUX0lYLAotKyAgICAgIE9QVF9JRVgKLSAgICAgfTsKLSAg ICAgc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPQotICAgICB7Ci1AQCAtNDc1 LDYgKzQ4MywxMCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotICAgICAgIHsidmVyc2lv biIsIG5vX2FyZ3VtZW50LCAmcHJpbnRfdmVyc2lvbiwgMX0sCi0gICAgICAgeyJ4IiwgcmVxdWly ZWRfYXJndW1lbnQsIDAsICd4J30sCi0gICAgICAgeyJleCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAw LCAnWCd9LAotKyAgICAgIHsiaW5pdC1jb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9Q VF9JWH0sCi0rICAgICAgeyJpbml0LWV2YWwtY29tbWFuZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAw LCBPUFRfSUVYfSwKLSsgICAgICB7Iml4IiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsIE9QVF9JWH0s Ci0rICAgICAgeyJpZXgiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgT1BUX0lFWH0sCi0gI2lmZGVm IEdEQlRLCi0gICAgICAgeyJ0Y2xjb21tYW5kIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICd6J30s Ci0gICAgICAgeyJlbmFibGUtZXh0ZXJuYWwtZWRpdG9yIiwgbm9fYXJndW1lbnQsIDAsICd5J30s Ci1AQCAtNjAzLDYgKzYxNSwxOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAkgICAg ICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0gCSAgICB9 Ci0gCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JWDoKLSsJICAgIHsKLSsJICAgICAgc3RydWN0 IGNtZGFyZyBjbWRhcmcgPSB7IENNREFSR19JTklUX0ZJTEUsIG9wdGFyZyB9OwotKwotKwkgICAg ICBWRUNfc2FmZV9wdXNoIChjbWRhcmdfcywgY21kYXJnX3ZlYywgJmNtZGFyZyk7Ci0rCSAgICB9 Ci0rCSAgICBicmVhazsKLSsJICBjYXNlIE9QVF9JRVg6Ci0rCSAgICB7Ci0rCSAgICAgIHN0cnVj dCBjbWRhcmcgY21kYXJnID0geyBDTURBUkdfSU5JVF9DT01NQU5ELCBvcHRhcmcgfTsKLSsKLSsJ ICAgICAgVkVDX3NhZmVfcHVzaCAoY21kYXJnX3MsIGNtZGFyZ192ZWMsICZjbWRhcmcpOwotKwkg ICAgfQotIAkgICAgYnJlYWs7Ci0gCSAgY2FzZSAnQic6Ci0gCSAgICBiYXRjaF9mbGFnID0gYmF0 Y2hfc2lsZW50ID0gMTsKLUBAIC04NzcsNiArOTAyLDIwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQg KmRhdGEpCi0gICBxdWl0X3ByZV9wcmludCA9IGVycm9yX3ByZV9wcmludDsKLSAgIHdhcm5pbmdf cHJlX3ByaW50ID0gXygiXG53YXJuaW5nOiAiKTsKLSAKLSsgIC8qIFByb2Nlc3MgJy1peCcgYW5k ICctaWV4JyBvcHRpb25zIGVhcmx5LiAgKi8KLSsgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChj bWRhcmdfcywgY21kYXJnX3ZlYywgaSwgY21kYXJnX3ApOyBpKyspCi0rICAgIHN3aXRjaCAoY21k YXJnX3AtPnR5cGUpCi0rICAgIHsKLSsgICAgICBjYXNlIENNREFSR19JTklUX0ZJTEU6Ci0rICAg ICAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3NjcmlwdCwgY21kYXJnX3AtPnN0cmlu ZywKLSsJCQkgICAgICAhYmF0Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0r ICAgICAgY2FzZSBDTURBUkdfSU5JVF9DT01NQU5EOgotKyAgICAgICAgY2F0Y2hfY29tbWFuZF9l cnJvcnMgKGV4ZWN1dGVfY29tbWFuZCwgY21kYXJnX3AtPnN0cmluZywKLSsJCQkgICAgICAhYmF0 Y2hfZmxhZywgUkVUVVJOX01BU0tfQUxMKTsKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSAgIC8qIFJl YWQgYW5kIGV4ZWN1dGUgdGhlIHN5c3RlbS13aWRlIGdkYmluaXQgZmlsZSwgaWYgaXQgZXhpc3Rz LgotICAgICAgVGhpcyBpcyBkb25lICpiZWZvcmUqIGFsbCB0aGUgY29tbWFuZCBsaW5lIGFyZ3Vt ZW50cyBhcmUKLSAgICAgIHByb2Nlc3NlZDsgaXQgc2V0cyBnbG9iYWwgcGFyYW1ldGVycywgd2hp Y2ggYXJlIGluZGVwZW5kZW50IG9mCi1AQCAtOTkzLDYgKzEwMzIsNyBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQotICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQotICAgICBsb2FkX2F1dG9f c2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi0rICAvKiBQcm9jZXNzICcteCcgYW5k ICctZXgnIG9wdGlvbnMuICAqLwotICAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKGNtZGFyZ19z LCBjbWRhcmdfdmVjLCBpLCBjbWRhcmdfcCk7IGkrKykKLSAgICAgc3dpdGNoIChjbWRhcmdfcC0+ dHlwZSkKLSAgICAgewotQEAgLTEwOTMsNiArMTEzMyw4IEBAIE9wdGlvbnM6XG5cblwKLSAgICAg ICAgICAgICAgICAgICAgICBFeGVjdXRlIGEgc2luZ2xlIEdEQiBjb21tYW5kLlxuXAotICAgICAg ICAgICAgICAgICAgICAgIE1heSBiZSB1c2VkIG11bHRpcGxlIHRpbWVzIGFuZCBpbiBjb25qdW5j dGlvblxuXAotICAgICAgICAgICAgICAgICAgICAgIHdpdGggLS1jb21tYW5kLlxuXAotKyAgLS1p bml0LWNvbW1hbmQ9RklMRSwgLWl4IExpa2UgLXggYnV0IGV4ZWN1dGUgaXQgYmVmb3JlIGxvYWRp bmcgaW5mZXJpb3IuXG5cCi0rICAtLWluaXQtZXZhbC1jb21tYW5kPUNPTU1BTkQsIC1pZXggTGlr ZSAtZXggYnV0IGJlZm9yZSBsb2FkaW5nIGluZmVyaW9yLlxuXAotICAgLS1jb3JlPUNPUkVGSUxF ICAgIEFuYWx5emUgdGhlIGNvcmUgZHVtcCBDT1JFRklMRS5cblwKLSAgIC0tcGlkPVBJRCAgICAg ICAgICBBdHRhY2ggdG8gcnVubmluZyBwcm9jZXNzIFBJRC5cblwKLSAiKSwgc3RyZWFtKTsKLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8KLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0 LTE4IDAwOjQxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2RvYy9nZGIudGV4aW5mbwkyMDEyLTA0LTE4IDAwOjQyOjUxLjIzMjY4MTA1MiArMDIwMAotQEAg LTk4OSw2ICs5ODksMjIgQEAgYWxzbyBiZSBpbnRlcmxlYXZlZCB3aXRoIEBzYW1wey1jb21tYW5k fQotICAgIC14IHNldGJyZWFrcG9pbnRzIC1leCAncnVuJyBhLm91dAotIEBlbmQgc21hbGxleGFt cGxlCi0gCi0rQGl0ZW0gLWluaXQtY29tbWFuZCBAdmFye2ZpbGV9Ci0rQGl0ZW14IC1peCBAdmFy e2ZpbGV9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtY29tbWFuZH0KLStAY2luZGV4IEBjb2Rley1p eH0KLStFeGVjdXRlIGNvbW1hbmRzIGZyb20gZmlsZSBAdmFye2ZpbGV9IGJlZm9yZSBsb2FkaW5n IGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7U3RhcnR1cH0uCi0rCi0r QGl0ZW0gLWluaXQtZXZhbC1jb21tYW5kIEB2YXJ7Y29tbWFuZH0KLStAaXRlbXggLWlleCBAdmFy e2NvbW1hbmR9Ci0rQGNpbmRleCBAY29kZXstLWluaXQtZXZhbC1jb21tYW5kfQotK0BjaW5kZXgg QGNvZGV7LWlleH0KLStFeGVjdXRlIGEgc2luZ2xlIEB2YWx1ZXtHREJOfSBjb21tYW5kIGJlZm9y ZSBsb2FkaW5nIGdkYmluaXQgZmlsZXMgb3IgdGhlCi0raW5mZXJpb3IuCi0rQHhyZWZ7U3RhcnR1 cH0uCi0rCi0gQGl0ZW0gLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yeX0KLSBAaXRlbXggLWQgQHZh cntkaXJlY3Rvcnl9Ci0gQGNpbmRleCBAY29kZXstLWRpcmVjdG9yeX0KLUBAIC0xMjUwLDYgKzEy NjYsMTMgQEAgU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBzcGVjaQotIChAcHhy ZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgotIAotIEBpdGVtCi0rRXhlY3V0ZXMgY29t bWFuZHMgYW5kIGNvbW1hbmQgZmlsZXMgc3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHstaWV4fSBhbmQK LStAc2FtcHstaXh9IG9wdGlvbnMgaW4gdGhlaXIgc3BlY2lmaWVkIG9yZGVyLiAgVXN1YWxseSB5 b3Ugc2hvdWxkIHVzZSB0aGUKLStAc2FtcHstZXh9IGFuZCBAc2FtcHsteH0gb3B0aW9ucyBpbnN0 ZWFkLCBidXQgdGhpcyB3YXkgeW91IGNhbiBhcHBseQotK3NldHRpbmdzIGJlZm9yZSBAdmFsdWV7 R0RCTn0gaW5pdCBmaWxlcyBnZXQgZXhlY3V0ZWQgYW5kIGJlZm9yZSBpbmZlcmlvcgotK2dldHMg bG9hZGVkLgotKwotK0BpdGVtCi0gQGNpbmRleCBpbml0IGZpbGUKLSBSZWFkcyB0aGUgc3lzdGVt LXdpZGUgQGRmbntpbml0IGZpbGV9IChpZiBAb3B0aW9uey0td2l0aC1zeXN0ZW0tZ2RiaW5pdH0g d2FzCi0gdXNlZCB3aGVuIGJ1aWxkaW5nIEB2YWx1ZXtHREJOfTsgQHB4cmVme1N5c3RlbS13aWRl IGNvbmZpZ3VyYXRpb24sCi1AQCAtMTI4MywxNCArMTMwNiwxMSBAQCBJZiB5b3Ugd2lzaCB0byBk aXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBkbyBzb21ldGhpbmcgbGlrZSB0aGUg Zm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdkYiAtZXggInNldCBhdXRvLWxvYWQt c2NyaXB0cyBvZmYiIC1leCAiZmlsZSBteXByb2dyYW0iCi0rJCBnZGIgLWlleCAic2V0IGF1dG8t bG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLS1UaGUg Zm9sbG93aW5nIGRvZXMgbm90IHdvcmsgYmVjYXVzZSB0aGUgYXV0by1sb2FkaW5nIGlzIHR1cm5l ZCBvZmYgdG9vIGxhdGU6Ci0tCi0tQHNtYWxsZXhhbXBsZQotLSQgZ2RiIC1leCAic2V0IGF1dG8t bG9hZC1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0tQGVuZCBzbWFsbGV4YW1wbGUKLStPcHRpb24g QHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9hZGluZyBpcyB0aGVu IHR1cm5lZAotK29mZiB0b28gbGF0ZS4KLSAKLSBAaXRlbQotIFJlYWRzIGNvbW1hbmQgZmlsZXMg c3BlY2lmaWVkIGJ5IHRoZSBAc2FtcHsteH0gb3B0aW9uLiAgQHhyZWZ7Q29tbWFuZAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5nZGIvc2VsZnRlc3QuZXhwCTIwMTItMDQtMTggMDA6NDE6MzEuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhw CTIwMTItMDQtMTggMDA6NDI6NTEuMjMyNjgxMDUyICswMjAwCi1AQCAtOTIsNiArOTIsMTAgQEAg cHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92 ZXIgcHl0aG9uX3NjcmlwdCBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJzdGVwIgot IAkgICAgfQotKwkgICAgLXJlICIuKmNtZGFyZ192ZWMgPSBOVUxMLiokZ2RiX3Byb21wdCAkIiB7 Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0aW9u IgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAtcmUgIi4qcHJlX3N0YXRf Y2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9wcm9tcHQgJCIgewotIAkJ c2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgYW5k IGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLUBAIC0xMjgsMTgg KzEzMiw2IEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlv biAibmV4dCBvdmVyIGNvbmRpdGlvbmFsIHN0YWNrIGFsaWdubWVudCBhbGxvY2EiCi0gCQlzZXQg Y29tbWFuZCAibmV4dCIKLSAJICAgIH0KLS0JICAgIC1yZSAiLipjbWRzaXplID0gMS4qJGdkYl9w cm9tcHQgJCIgewotLQkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgY21kc2l6ZSBpbml0aWFs aXphdGlvbiIKLS0JCXNldCBjb21tYW5kICJuZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKmNt ZGFyZyA9IC4qIHhtYWxsb2MuKiRnZGJfcHJvbXB0ICQiIHsKLS0JCXNldCBkZXNjcmlwdGlvbiAi bmV4dCBvdmVyIGNtZGFyZyBpbml0aWFsaXphdGlvbiB2aWEgeG1hbGxvYyIKLS0JCXNldCBjb21t YW5kICJuZXh0IgotLQkgICAgfQotLQkgICAgLXJlICIuKm5jbWQgPSAwLiokZ2RiX3Byb21wdCAk IiB7Ci0tCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBuY21kIGluaXRpYWxpemF0aW9uIgot LQkJc2V0IGNvbW1hbmQgIm5leHQiCi0tCSAgICB9Ci0gCSAgICAtcmUgIi4qZGlyc2l6ZSA9IDEu KiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGRpcnNpemUg aW5pdGlhbGl6YXRpb24iCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLUBAIC0xNjMsNiArMTU1LDEw IEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4 dCBvdmVyIHRleHRkb21haW4gUEFDS0FHRSIKLSAJCXNldCBjb21tYW5kICJuZXh0IgotIAkgICAg fQotKwkgICAgLXJlICIuKlZFQ19jbGVhbnVwIC5jbWRhcmdfcy4qJGdkYl9wcm9tcHQgJCIgewot KwkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgY21kYXJnX3MgVkVDX2NsZWFudXAiCi0rCQlz ZXQgY29tbWFuZCAibmV4dCIKLSsJICAgIH0KLSAJICAgIC1yZSAiXFswLTlcXStcW1x0IFxdK1x7 XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIGluaXRp YWwgYnJhY2UiCi0gCQlzZXQgY29tbWFuZCAic3RlcCIKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xv YWQtMDZvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggYWUxMjFlZi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDZv ZjI4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1jdnMvMjAxMi0wMy9tc2cwMDIzNi5odG1sCi0KLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEyLzAzLzE5IDE4OjE5OjIzCTEuMTQwMjcKLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEyLzAzLzE5IDE4OjIzOjUxCTEuMTQwMjgKLSMjIC0xLDUgKzEsMTMgQEAKLSAyMDEyLTAz LTE5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCUNv ZGUgY2xlYW51cC4KLSsJKiBweXRob24vcHktYXV0by1sb2FkLmMgKHNvdXJjZV9zZWN0aW9uX3Nj cmlwdHMpOiBOZXcgdmFyaWFibGUgYmFja190by4KLSsJVHVybiBmY2xvc2UgYW5kIHhmcmVlIGNh bGxzIGludG8gbWFrZV9jbGVhbnVwX2ZjbG9zZSBhbmQgbWFrZV9jbGVhbnVwCi0rCXdpdGggeGZy ZWUuCi0rCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBUdXJuIGZjbG9zZSBpbnRvIG1ha2Vf Y2xlYW51cF9mY2xvc2UuCi0rCi0rMjAxMi0wMy0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotKwotIAkqIE5FV1M6IERlc2NyaWJlIG5ldyBvcHRpb25zIC0t aW5pdC1jb21tYW5kPUZJTEUsIC1peCBhbmQKLSAJLS1pbml0LWV2YWwtY29tbWFuZD1DT01NQU5E LCAtaWV4LgotIAkqIG1haW4uYyAoc3RydWN0IGNtZGFyZyk6IE5ldyBlbnVtIGl0ZW1zIENNREFS R19JTklUX0ZJTEUgYW5kCi0tLS0gc3JjL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi8w MS8yNiAyMTo1NDo0NQkxLjE4Ci0rKysgc3JjL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAx Mi8wMy8xOSAxODoyMzo1MgkxLjE5Ci1AQCAtMjU0LDYgKzI1NCw3IEBACi0gICAgICAgRklMRSAq c3RyZWFtOwotICAgICAgIGNoYXIgKmZ1bGxfcGF0aDsKLSAgICAgICBpbnQgb3BlbmVkLCBpbl9o YXNoX3RhYmxlOwotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotIAotICAgICAgIGlm ICgqcCAhPSAxKQotIAl7Ci1AQCAtMjg2LDYgKzI4NywxMyBAQAotICAgICAgIG9wZW5lZCA9IGZp bmRfYW5kX29wZW5fc2NyaXB0IChmaWxlLCAxIC8qc2VhcmNoX3BhdGgqLywKLSAJCQkJICAgICAm c3RyZWFtLCAmZnVsbF9wYXRoKTsKLSAKLSsgICAgICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChu dWxsX2NsZWFudXAsIE5VTEwpOwotKyAgICAgIGlmIChvcGVuZWQpCi0rCXsKLSsJICBtYWtlX2Ns ZWFudXBfZmNsb3NlIChzdHJlYW0pOwotKwkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZ1bGxfcGF0 aCk7Ci0rCX0KLSsKLSAgICAgICAvKiBJZiBvbmUgc2NyaXB0IGlzbid0IGZvdW5kIGl0J3Mgbm90 IHVuY29tbW9uIGZvciBtb3JlIHRvIG5vdCBiZQotIAkgZm91bmQgZWl0aGVyLiAgV2UgZG9uJ3Qg d2FudCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNoCi0gCSBzY3JpcHQsIHRvbyBt dWNoIG5vaXNlLiAgSW5zdGVhZCwgd2UgcHJpbnQgdGhlIHdhcm5pbmcgb25jZSBhbmQgdGVsbAot QEAgLTMxMyw5ICszMjEsOSBAQAotIAkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5 IGxvYWRlZCwgbG9hZCBpdC4gICovCi0gCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKLSAJICAgIHNv dXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0 aCk7Ci0tCSAgZmNsb3NlIChzdHJlYW0pOwotLQkgIHhmcmVlIChmdWxsX3BhdGgpOwotIAl9Ci0r Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci0gfQotIAotQEAgLTQyMCw2 ICs0MjgsOCBAQAotICAgICB7Ci0gICAgICAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAq cHNwYWNlX2luZm87Ci0gCi0rICAgICAgbWFrZV9jbGVhbnVwX2ZjbG9zZSAoaW5wdXQpOwotKwot ICAgICAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0b28gc28gImluZm8g YXV0by1sb2FkLXNjcmlwdHMiCi0gCSBjYW4gcHJpbnQgaXQuICAqLwotICAgICAgIHBzcGFjZV9p bmZvID0KLUBAIC00MzIsNyArNDQyLDYgQEAKLSAJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1 aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0gCSBsb2FkcyBhbnl3YXkuICAq LwotICAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1 dCwgZGVidWdmaWxlKTsKLS0gICAgICBmY2xvc2UgKGlucHV0KTsKLSAgICAgfQotIAotICAgZG9f Y2xlYW51cHMgKGNsZWFudXBzKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMDdvZjI4LnBh dGNoIGIvZ2RiLWF1dG9sb2FkLTA3b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNTFkMTI5ZS4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMDdvZjI4LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAxMi0wMy9tc2cwMDI5Ni5odG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJ MjAxMi8wMy8yMiAwODoxMDo0MQkxLjEyODkKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAx Mi8wMy8yNyAyMDoxNToyMAkxLjEyOTAKLSMjIC0xLDMgKzEsMTIgQEAKLSsyMDEyLTAzLTI3ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRl eGluZm8gKEF1dG8tbG9hZGluZyk6IFJlbmFtZSBub2RlIHJlZmVyZW5jZQotKwknLmRlYnVnX2dk Yl9zY3JpcHRzIHNlY3Rpb24nIHRvICdkb3RkZWJ1Z19nZGJfc2NyaXB0cyBzZWN0aW9uJy4KLSsJ VHdpY2UuCi0rCSguZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbik6IFJlbmFtZSB0aGUgbm9kZSAu Li4KLSsJKGRvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb24pOiAuLi4gaGVyZS4KLSsJKE1haW50 ZW5hbmNlIENvbW1hbmRzKTogQWxzbyByZW5hbWUgdGhpcyBub2RlIHJlZmVyZW5jZS4KLSsKLSAy MDEyLTAzLTIyICBTaXZhIENoYW5kcmEgUmVkZHkgIDxzaXZhY2hhbmRyYUBnb29nbGUuY29tPgot IAotIAkqIGdkYi50ZXhpbmZvIChQeXRob24gQVBJL1ZhbHVlcyBGcm9tIEluZmVyaW9yKTogQWRk IGRlc2NyaXB0aW9uCi0tLS0gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wMy8yMiAwODox MDo0MQkxLjkzNgotKysrIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDMvMjcgMjA6MTU6 MjAJMS45MzcKLUBAIC0yNDcxNyw4ICsyNDcxNyw4IEBACi0gQGZpbGV7QHZhcntvYmpmaWxlfS1n ZGIucHl9IGFuZCBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24uCi0gCi0gQG1lbnUK LS0qIG9iamZpbGUtZ2RiLnB5IGZpbGU6OiAgICAgICAgIFRoZSBAZmlsZXtAdmFye29iamZpbGV9 LWdkYi5weX0gZmlsZQotLSogLmRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb246OiAgVGhlIEBjb2Rl ey5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgotKyogb2JqZmlsZS1nZGIucHkgZmlsZTo6ICAg ICAgICAgIFRoZSBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gZmlsZQotKyogZG90ZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbjo6IFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rp b24KLSAqIFdoaWNoIGZsYXZvciB0byBjaG9vc2U/OjoKLSBAZW5kIG1lbnUKLSAKLUBAIC0yNDc0 NCw3ICsyNDc0NCw3IEBACi0gCi0gQWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIHNjcmlwdHMg dGhhdCB3ZXJlIG1lbnRpb25lZCBpbgotIHRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNl Y3Rpb24gYW5kIHdlcmUgbm90IGZvdW5kCi0tKEBweHJlZnsuZGVidWdfZ2RiX3NjcmlwdHMgc2Vj dGlvbn0pLgotKyhAcHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0pLgotIFRoaXMg aXMgdXNlZnVsIGJlY2F1c2UgdGhlaXIgbmFtZXMgYXJlIG5vdCBwcmludGVkIHdoZW4gQHZhbHVl e0dEQk59Ci0gdHJpZXMgdG8gbG9hZCB0aGVtIGFuZCBmYWlscy4gIFRoZXJlIG1heSBiZSBtYW55 IG9mIHRoZW0sIGFuZCBwcmludGluZwotIGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2ggb25lIGlz IHByb2JsZW1hdGljLgotQEAgLTI0Nzk1LDcgKzI0Nzk1LDcgQEAKLSBTbyB5b3VyIEBmaWxley1n ZGIucHl9IGZpbGUgc2hvdWxkIGJlIGNhcmVmdWwgdG8gYXZvaWQgZXJyb3JzIGlmIGl0Ci0gaXMg ZXZhbHVhdGVkIG1vcmUgdGhhbiBvbmNlLgotIAotLUBub2RlIC5kZWJ1Z19nZGJfc2NyaXB0cyBz ZWN0aW9uCi0rQG5vZGUgZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbgotIEBzdWJzdWJzZWN0 aW9uIFRoZSBAY29kZXsuZGVidWdfZ2RiX3NjcmlwdHN9IHNlY3Rpb24KLSBAY2luZGV4IEBjb2Rl ey5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbgotIAotQEAgLTMzNDc1LDcgKzMzNDc1LDcgQEAK LSBtYXRjaGluZyBAdmFye3JlZ2V4cH0uCi0gRm9yIGVhY2ggc2NyaXB0LCB0aGlzIGNvbW1hbmQg cHJpbnRzIGl0cyBuYW1lIGFzIHNwZWNpZmllZCBpbiB0aGUgb2JqZmlsZSwKLSBhbmQgdGhlIGZ1 bGwgcGF0aCBpZiBrbm93bi4KLS1AeHJlZnsuZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0uCi0r QHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbn0uCi0gCi0gQGtpbmRleCBtYWludCBw cmludCBzdGF0aXN0aWNzCi0gQGNpbmRleCBiY2FjaGUgc3RhdGlzdGljcwoKZGlmZiAtLWdpdCBh L2dkYi1hdXRvbG9hZC0wOG9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMDhvZjI4LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDhiZmMxLi4wMDAwMDAwCi0tLSBhL2dkYi1h dXRvbG9hZC0wOG9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotW3Bh dGNoIzQgMi84XSBDb2RlIGNsZWFudXA6IG5ldyBwYXRoIHRvIFZFQyBpbiB1dGlscy5jCi1odHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNC9tc2cwMDA4Ni5odG1sCi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA0L21zZzAwMTExLmh0bWwKLSAt IHJlZHVjZWQgZm9yIHRoZSBiYWNrcG9ydAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8w NC8xNyAxNTo0NTowNQkxLjE0MTEwCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAx NTo0NzowOAkxLjE0MTExCi0jIyAtMSw2ICsxLDM0IEBACi0gMjAxMi0wNC0xNyAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAlDb2RlIGNsZWFudXAuCi0r CSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRfbmFtZXMpOiBSZW1vdmUgdmFyaWFibGVzIGl4IGFu ZCBlbHQuCi0rCVVzZSBmcmVlX2NoYXJfcHRyX3ZlYy4KLSsJKiBlbGZyZWFkLmMgKGJ1aWxkX2lk X3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlcyBkZWJ1Z2Rpcl92ZWMsCi0rCWJhY2tf dG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFJlbW92ZSB2YXJpYWJs ZQotKwlkZWJ1Z2Rpcl9lbmQuICBOZXcgdmFyaWFibGUgZGVidWdkaXJfbGVuLgotKwkqIGdkYl92 ZWNzLmggKGZyZWVfY2hhcl9wdHJfdmVjLCBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMp Ci0rCShkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kLCBkaXJuYW1lc190b19jaGFyX3B0 cl92ZWMpOiBOZXcKLSsJZGVjbGFyYXRpb25zLgotKwkqIHByb2dzcGFjZS5jIChjbGVhcl9wcm9n cmFtX3NwYWNlX3NvbGliX2NhY2hlKTogUmVtb3ZlIHZhcmlhYmxlcyBpeAotKwlhbmQgZWx0LiAg VXNlIGZyZWVfY2hhcl9wdHJfdmVjLgotKwkqIHNvdXJjZS5jIChhZGRfcGF0aCk6IFJlbW92ZSB2 YXJpYWJsZXMgYXJndiwgYXJnIGFuZCBhcmd2X2luZGV4LgotKwlOZXcgdmFyaWFibGVzIGRpcl92 ZWMsIGJhY2tfdG8sIGl4IGFuZCBuYW1lLgotKwlVc2UgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVj X2FwcGVuZC4gIFVzZSBmcmVlYXJndiBpbnN0ZWFkIG9mCi0rCW1ha2VfY2xlYW51cF9mcmVlYXJn di4gIFJlbW92ZSB2YXJpYWJsZSBzZXBhcmF0b3IuICBTaW1wbGlmeSB0aGUgY29kZQotKwlubyBs b25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgotKwkob3BlbnApOiBSZW1vdmUgdmFy aWFibGUgcCwgcDEgYW5kIGxlbi4gIE5ldyB2YXJpYWJsZXMgZGlyX3ZlYywKLSsJYmFja190bywg aXggYW5kIGRpci4gIFVzZSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMuICBTaW1wbGlmeSB0aGUg Y29kZQotKwlubyBsb25nZXIgZXhwZWN0aW5nIERJUk5BTUVfU0VQQVJBVE9SLgotKwkqIHN5bWZp bGUuYyAoZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlKTogTmV3IHZhcmlhYmxlcyBkZWJ1Z2Rpcl92 ZWMsCi0rCWJhY2tfdG8gYW5kIGl4LiAgVXNlIGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYy4gIFJl bW92ZSB2YXJpYWJsZQotKwlkZWJ1Z2Rpcl9lbmQuCi0rCSogdXRpbHMuYyAoZnJlZV9jaGFyX3B0 cl92ZWMsIGRvX2ZyZWVfY2hhcl9wdHJfdmVjKQotKwkobWFrZV9jbGVhbnVwX2ZyZWVfY2hhcl9w dHJfdmVjLCBkaXJuYW1lc190b19jaGFyX3B0cl92ZWNfYXBwZW5kKQotKwkoZGlybmFtZXNfdG9f Y2hhcl9wdHJfdmVjKTogTmV3IGZ1bmN0aW9ucy4KLSsKLSsyMDEyLTA0LTE3ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUNvZGUgY2xlYW51cC4KLSAJ KiBzb3VyY2UuYyAoYWRkX3BhdGgpOiBSZW1vdmUgYWx3YXlzIHRydWUgY29uZGl0aW9uYWwgJ3Ag PT0gMCcgYW5kCi0gCXVuaW5kZW50IGl0cyBjb2RlIGJsb2NrLgotIAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2dkYl92ZWNzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwMTIwLm9yaWcvZ2RiL2dkYl92ZWNzLmgJMjAxMi0wNC0xOCAwMDo0MDoxMi4wNjcwODYwMTYg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9nZGJfdmVjcy5oCTIwMTItMDQtMTgg MDA6NDA6MjMuNDc0MDU2OTkzICswMjAwCi1AQCAtMjUsNCArMjUsMTYgQEAKLSAKLSBERUZfVkVD X1AgKGNoYXJfcHRyKTsKLSAKLSsvKiBGcm9tIHV0aWxzLmM6ICovCi0rCi0rZXh0ZXJuIHZvaWQg ZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOwotKwotK2V4 dGVybiBzdHJ1Y3QgY2xlYW51cCAqCi0rICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMg KFZFQyAoY2hhcl9wdHIpICpjaGFyX3B0cl92ZWMpOwotKwotK2V4dGVybiB2b2lkIGRpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVjcCwKLSsJCQkJCSAg ICAgY29uc3QgY2hhciAqZGlybmFtZXMpOwotKwotK2V4dGVybiBWRUMgKGNoYXJfcHRyKSAqZGly bmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaXJuYW1lcyk7Ci0rCi0gI2VuZGlm IC8qIEdEQl9WRUNTX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi91dGlscy5jCTIw MTItMDQtMTggMDA6NDA6MTIuMDY4MDg2MDEzICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvdXRpbHMuYwkyMDEyLTA0LTE4IDAwOjQwOjQ5Ljg2Mjk4OTg1NSArMDIwMAotQEAgLTI5 LDYgKzI5LDcgQEAKLSAjaWZkZWYgSEFWRV9TWVNfUkVTT1VSQ0VfSAotICNpbmNsdWRlIDxzeXMv cmVzb3VyY2UuaD4KLSAjZW5kaWYgLyogSEFWRV9TWVNfUkVTT1VSQ0VfSCAqLwotKyNpbmNsdWRl ICJnZGJfdmVjcy5oIgotIAotICNpZmRlZiBUVUkKLSAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyog Rm9yIHR1aV9nZXRfY29tbWFuZF9kaW1lbnNpb24uICAgKi8KLUBAIC0zODM1LDYgKzM4MzYsOTUg QEAgcHJvZHVjZXJfaXNfZ2NjX2dlXzQgKGNvbnN0IGNoYXIgKnByb2R1YwotICAgcmV0dXJuIG1p bm9yOwotIH0KLSAKLSsvKiBDYWxsIHhmcmVlIGZvciBlYWNoIGVsZW1lbnQgb2YgQ0hBUl9QVFJf VkVDIGFuZCBmaW5hbCBWRUNfZnJlZSBmb3IKLSsgICBDSEFSX1BUUl9WRUMgaXRzZWxmLgotKwot KyAgIFlvdSBtdXN0IG5vdCBtb2RpZnkgQ0hBUl9QVFJfVkVDIGFmdGVyIGl0IGdvdCByZWdpc3Rl cmVkIHdpdGggdGhpcyBmdW5jdGlvbgotKyAgIGJ5IG1ha2VfY2xlYW51cCBhcyB0aGUgQ0hBUl9Q VFJfVkVDIGJhc2UgYWRkcmVzcyBtYXkgY2hhbmdlIG9uIGl0cyB1cGRhdGVzLgotKyAgIENvbnRy YXJ5IHRvIFZFQ19mcmVlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhl IHBvaW50ZXIuICAqLwotKwotK3ZvaWQKLStmcmVlX2NoYXJfcHRyX3ZlYyAoVkVDIChjaGFyX3B0 cikgKmNoYXJfcHRyX3ZlYykKLSt7Ci0rICBpbnQgaXg7Ci0rICBjaGFyICpuYW1lOwotKwotKyAg Zm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgY2hhcl9wdHJfdmVjLCBpeCwgbmFt ZSk7ICsraXgpCi0rICAgIHhmcmVlIChuYW1lKTsKLSsgIFZFQ19mcmVlIChjaGFyX3B0ciwgY2hh cl9wdHJfdmVjKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZvciBtYWtlX2NsZWFudXBfZnJlZV9jaGFy X3B0cl92ZWMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZG9fZnJlZV9jaGFyX3B0cl92ZWMgKHZv aWQgKmFyZykKLSt7Ci0rICBWRUMgKGNoYXJfcHRyKSAqY2hhcl9wdHJfdmVjID0gYXJnOwotKwot KyAgZnJlZV9jaGFyX3B0cl92ZWMgKGNoYXJfcHRyX3ZlYyk7Ci0rfQotKwotKy8qIE1ha2UgY2xl YW51cCBoYW5kbGVyIGNhbGxpbmcgeGZyZWUgZm9yIGVhY2ggZWxlbWVudCBvZiBDSEFSX1BUUl9W RUMgYW5kCi0rICAgZmluYWwgVkVDX2ZyZWUgZm9yIENIQVJfUFRSX1ZFQyBpdHNlbGYuCi0rCi0r ICAgWW91IG11c3Qgbm90IG1vZGlmeSBDSEFSX1BUUl9WRUMgYWZ0ZXIgdGhpcyBjbGVhbnVwIHJl Z2lzdHJhdGlvbiBhcyB0aGUKLSsgICBDSEFSX1BUUl9WRUMgYmFzZSBhZGRyZXNzIG1heSBjaGFu Z2Ugb24gaXRzIHVwZGF0ZXMuICBDb250cmFyeSB0byBWRUNfZnJlZQotKyAgIHRoaXMgZnVuY3Rp b24gZG9lcyBub3QgKGNhbm5vdCkgY2xlYXIgdGhlIHBvaW50ZXIuICAqLwotKwotK3N0cnVjdCBj bGVhbnVwICoKLSttYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKFZFQyAoY2hhcl9wdHIp ICpjaGFyX3B0cl92ZWMpCi0rewotKyAgcmV0dXJuIG1ha2VfY2xlYW51cCAoZG9fZnJlZV9jaGFy X3B0cl92ZWMsIGNoYXJfcHRyX3ZlYyk7Ci0rfQotKwotKy8qIEV4dGVuZGVkIHZlcnNpb24gb2Yg ZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIC0gYWRkaXRpb25hbGx5IGlmICpWRUNQIGlzCi0rICAg bm9uLU5VTEwgdGhlIG5ldyBsaXN0IGVsZW1lbnRzIGZyb20gRElSTkFNRVMgYXJlIGFwcGVuZGVk IHRvIHRoZSBleGlzdGluZwotKyAgICpWRUNQIGxpc3Qgb2YgZW50cmllcy4gICpWRUNQIGFkZHJl c3Mgd2lsbCBiZSB1cGRhdGVkIGJ5IHRoaXMgY2FsbC4gICovCi0rCi0rdm9pZAotK2Rpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKFZFQyAoY2hhcl9wdHIpICoqdmVjcCwgY29uc3QgY2hh ciAqZGlybmFtZXMpCi0rewotKyAgZG8KLSsgICAgewotKyAgICAgIHNpemVfdCB0aGlzX2xlbjsK LSsgICAgICBjaGFyICpuZXh0X2RpciwgKnRoaXNfZGlyOwotKwotKyAgICAgIG5leHRfZGlyID0g c3RyY2hyIChkaXJuYW1lcywgRElSTkFNRV9TRVBBUkFUT1IpOwotKyAgICAgIGlmIChuZXh0X2Rp ciA9PSBOVUxMKQotKwl0aGlzX2xlbiA9IHN0cmxlbiAoZGlybmFtZXMpOwotKyAgICAgIGVsc2UK LSsJewotKwkgIHRoaXNfbGVuID0gbmV4dF9kaXIgLSBkaXJuYW1lczsKLSsJICBuZXh0X2Rpcisr OwotKwl9Ci0rCi0rICAgICAgdGhpc19kaXIgPSB4bWFsbG9jICh0aGlzX2xlbiArIDEpOwotKyAg ICAgIG1lbWNweSAodGhpc19kaXIsIGRpcm5hbWVzLCB0aGlzX2xlbik7Ci0rICAgICAgdGhpc19k aXJbdGhpc19sZW5dID0gJ1wwJzsKLSsgICAgICBWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgKnZl Y3AsIHRoaXNfZGlyKTsKLSsKLSsgICAgICBkaXJuYW1lcyA9IG5leHRfZGlyOwotKyAgICB9Ci0r ICB3aGlsZSAoZGlybmFtZXMgIT0gTlVMTCk7Ci0rfQotKwotKy8qIFNwbGl0IERJUk5BTUVTIGJ5 IERJUk5BTUVfU0VQQVJBVE9SIGRlbGltaXRlciBhbmQgcmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhl Ci0rICAgZWxlbWVudHMgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuICBGb3IgZW1wdHkgc3RyaW5n ICgiIikgRElSTkFNRVMgcmV0dXJuCi0rICAgbGlzdCBvZiBvbmUgZW1wdHkgc3RyaW5nICgiIikg ZWxlbWVudC4KLSsgICAKLSsgICBZb3UgbWF5IG1vZGlmeSB0aGUgcmV0dXJuZWQgc3RyaW5ncy4K LSsgICBSZWFkIGZyZWVfY2hhcl9wdHJfdmVjIGZvciBpdHMgY2xlYW51cC4gICovCi0rCi0rVkVD IChjaGFyX3B0cikgKgotK2Rpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoY29uc3QgY2hhciAqZGly bmFtZXMpCi0rewotKyAgVkVDIChjaGFyX3B0cikgKnJldHZhbCA9IE5VTEw7Ci0rICAKLSsgIGRp cm5hbWVzX3RvX2NoYXJfcHRyX3ZlY19hcHBlbmQgKCZyZXR2YWwsIGRpcm5hbWVzKTsKLSsKLSsg IHJldHVybiByZXR2YWw7Ci0rfQotKwotICNpZmRlZiBIQVZFX1dBSVRQSUQKLSAKLSAjaWZkZWYg U0lHQUxSTQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0wOW9mMjgucGF0Y2ggYi9nZGItYXV0 b2xvYWQtMDlvZjI4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjQ0Y2Zm Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0wOW9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMTY4ICswLDAgQEAKLVtwYXRjaCM0IDMvOF0gYXV0by1sb2FkOiByZXNodWZmbGUgY29k ZQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwODcu aHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExMi5o dG1sCi0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6MjY6 MjkuMDQ5MTIwMjEyICswMjAwCi1AQCAtMCwwICsxLDQ3MiBAQAotKy8qIEdEQiByb3V0aW5lcyBm b3Igc3VwcG9ydGluZyBhdXRvLWxvYWRlZCBzY3JpcHRzLgotKwotKyAgIENvcHlyaWdodCAoQykg MjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMg cGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAq LwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImF1dG8tbG9hZC5oIgotKyNpbmNs dWRlICJwcm9nc3BhY2UuaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotKyNpbmNsdWRl ICJnZGJfcmVnZXguaCIKLSsjaW5jbHVkZSAidWktb3V0LmgiCi0rI2luY2x1ZGUgImZpbGVuYW1l cy5oIgotKyNpbmNsdWRlICJjb21tYW5kLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2lu Y2x1ZGUgIm9iamZpbGVzLmgiCi0rI2luY2x1ZGUgInB5dGhvbi9weXRob24taW50ZXJuYWwuaCIK LSsKLSsvKiBJbnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcu Ci0rICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hl biBhbiBvYmpmaWxlIGlzIG9wZW5lZCwKLSsgICBmYWxzZSBvdGhlcndpc2UuCi0rCi0rICAgQm90 aCBhdXRvX2xvYWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1 ZSB0byBlbmFibGUKLSsgICBhdXRvLWxvYWRpbmcuCi0rCi0rICAgVGhpcyBmbGFnIGV4aXN0cyB0 byBmYWNpbGl0YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCi0rICAg dW50aWwgYWZ0ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUg c2VhcmNoIGRpcmVjdG9yaWVzCi0rICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KLStp bnQgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rCi0rLyogRm9yIHNjcmlwdHMgc3BlY2lm aWVkIGluIC5kZWJ1Z19nZGJfc2NyaXB0cywgbXVsdGlwbGUgb2JqZmlsZXMgbWF5IGxvYWQKLSsg ICB0aGUgc2FtZSBzY3JpcHQuICBUaGVyZSdzIG5vIHBvaW50IGluIGxvYWRpbmcgdGhlIHNjcmlw dCBtdWx0aXBsZSB0aW1lcywKLSsgICBhbmQgdGhlcmUgY2FuIGJlIGEgbG90IG9mIG9iamZpbGVz IGFuZCBzY3JpcHRzLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHNjcmlwdHMKLSsgICBsb2FkZWQgdGhp cyB3YXkuICAqLwotKwotK3N0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8KLSt7Ci0rICAvKiBG b3IgZWFjaCBwcm9ncmFtIHNwYWNlIHdlIGtlZXAgdHJhY2sgb2YgbG9hZGVkIHNjcmlwdHMuICAq LwotKyAgc3RydWN0IGh0YWIgKmxvYWRlZF9zY3JpcHRzOwotKwotKyAgLyogTm9uLXplcm8gaWYg d2UndmUgaXNzdWVkIHRoZSB3YXJuaW5nIGFib3V0IGFuIGF1dG8tbG9hZCBzY3JpcHQgbm90IGJl aW5nCi0rICAgICBmb3VuZC4gIFdlIG9ubHkgd2FudCB0byBpc3N1ZSB0aGlzIHdhcm5pbmcgb25j ZS4gICovCi0rICBpbnQgc2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50ZWQ7Ci0rfTsKLSsK LSsvKiBPYmplY3RzIG9mIHRoaXMgdHlwZSBhcmUgc3RvcmVkIGluIHRoZSBsb2FkZWQgc2NyaXB0 IGhhc2ggdGFibGUuICAqLwotKwotK3N0cnVjdCBsb2FkZWRfc2NyaXB0Ci0rewotKyAgLyogTmFt ZSBhcyBwcm92aWRlZCBieSB0aGUgb2JqZmlsZS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwot KyAgLyogRnVsbCBwYXRoIG5hbWUgb3IgTlVMTCBpZiBzY3JpcHQgd2Fzbid0IGZvdW5kIChvciB3 YXMgb3RoZXJ3aXNlCi0rICAgICBpbmFjY2Vzc2libGUpLiAgKi8KLSsgIGNvbnN0IGNoYXIgKmZ1 bGxfcGF0aDsKLSt9OwotKwotKy8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KLStz dGF0aWMgY29uc3Qgc3RydWN0IHByb2dyYW1fc3BhY2VfZGF0YSAqYXV0b19sb2FkX3BzcGFjZV9k YXRhOwotKwotK3N0YXRpYyB2b2lkCi0rYXV0b19sb2FkX3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0 cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UsIHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3QgYXV0 b19sb2FkX3BzcGFjZV9pbmZvICppbmZvOwotKwotKyAgaW5mbyA9IHByb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEpOwotKyAgaWYgKGluZm8gIT0gTlVMTCkK LSsgICAgewotKyAgICAgIGlmIChpbmZvLT5sb2FkZWRfc2NyaXB0cykKLSsJaHRhYl9kZWxldGUg KGluZm8tPmxvYWRlZF9zY3JpcHRzKTsKLSsgICAgICB4ZnJlZSAoaW5mbyk7Ci0rICAgIH0KLSt9 Ci0rCi0rLyogR2V0IHRoZSBjdXJyZW50IGF1dG9sb2FkIGRhdGEuICBJZiBub25lIGlzIGZvdW5k IHlldCwgYWRkIGl0IG5vdy4gIFRoaXMKLSsgICBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyBhIHZh bGlkIG9iamVjdC4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8g KgotK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3Bh Y2UpCi0rewotKyAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGlu Zm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsK LSsgIGlmIChpbmZvID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbmZvID0gWFpBTExPQyAoc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyk7Ci0rICAgICAgc2V0X3Byb2dyYW1fc3BhY2VfZGF0 YSAocHNwYWNlLCBhdXRvX2xvYWRfcHNwYWNlX2RhdGEsIGluZm8pOwotKyAgICB9Ci0rCi0rICBy ZXR1cm4gaW5mbzsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdGhlIGxvYWRlZCBzY3Jp cHQgaGFzaC4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK2hhc2hfbG9hZGVkX3NjcmlwdF9l bnRyeSAoY29uc3Qgdm9pZCAqZGF0YSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqZSA9IGRhdGE7Ci0rCi0rICByZXR1cm4gaHRhYl9oYXNoX3N0cmluZyAoZS0+bmFtZSk7Ci0r fQotKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAg Ki8KLSsKLStzdGF0aWMgaW50Ci0rZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqZWEg PSBhOwotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmViID0gYjsKLSsKLSsgIHJldHVy biBzdHJjbXAgKGVhLT5uYW1lLCBlYi0+bmFtZSkgPT0gMDsKLSt9Ci0rCi0rLyogSW5pdGlhbGl6 ZSB0aGUgdGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi0rICAgRWFjaCBlbnRyeSBpcyBo YXNoZWQgYnkgdGhlIGZ1bGwgcGF0aCBuYW1lLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2luaXRf bG9hZGVkX3NjcmlwdHNfaW5mbyAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNl X2luZm8pCi0rewotKyAgLyogQ2hvb3NlIDMxIGFzIHRoZSBzdGFydGluZyBzaXplIG9mIHRoZSBo YXNoIHRhYmxlLCBzb21ld2hhdCBhcmJpdHJhcmlseS4KLSsgICAgIFNwYWNlIGZvciBlYWNoIGVu dHJ5IGlzIG9idGFpbmVkIHdpdGggb25lIG1hbGxvYyBzbyB3ZSBjYW4gZnJlZSB0aGVtCi0rICAg ICBlYXNpbHkuICAqLwotKwotKyAgcHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzID0gaHRhYl9j cmVhdGUgKDMxLAotKwkJCQkJICAgICBoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksCi0rCQkJCQkg ICAgIGVxX2xvYWRlZF9zY3JpcHRfZW50cnksCi0rCQkJCQkgICAgIHhmcmVlKTsKLSsKLSsgIHBz cGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOwotK30K LSsKLSsvKiBXcmFwcGVyIG9uIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgdG8gYWxzbyBhbGxv Y2F0ZSB0aGUgaGFzaCB0YWJsZQotKyAgIGZvciBsb2FkaW5nIHNjcmlwdHMuICAqLwotKwotK3N0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKgotK2dldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFf Zm9yX2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpCi0rewotKyAgc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLSsKLSsgIGluZm8gPSBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIChwc3BhY2UpOwotKyAgaWYgKGluZm8tPmxvYWRlZF9zY3JpcHRzID09IE5V TEwpCi0rICAgIGluaXRfbG9hZGVkX3NjcmlwdHNfaW5mbyAoaW5mbyk7Ci0rCi0rICByZXR1cm4g aW5mbzsKLSt9Ci0rCi0rLyogQWRkIHNjcmlwdCBOQU1FIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNF X0lORk8uCi0rICAgRlVMTF9QQVRIIGlzIE5VTEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQu Ci0rICAgVGhlIHJlc3VsdCBpcyB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhl IGhhc2ggdGFibGUuICAqLwotKwotK2ludAotK21heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpuYW1lLAotKwkJICBj b25zdCBjaGFyICpmdWxsX3BhdGgpCi0rewotKyAgc3RydWN0IGh0YWIgKmh0YWIgPSBwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHM7Ci0rICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3QsIGVu dHJ5OwotKyAgaW50IGluX2hhc2hfdGFibGU7Ci0rCi0rICBlbnRyeS5uYW1lID0gbmFtZTsKLSsg IGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIHNsb3QgPSAoc3RydWN0IGxvYWRlZF9z Y3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7Ci0rICBpbl9o YXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLSsKLSsgIC8qIElmIHRoaXMgc2NyaXB0IGlzIG5v dCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLSsKLSsgIGlmICghIGluX2hhc2hfdGFi bGUpCi0rICAgIHsKLSsgICAgICBjaGFyICpwOwotKwotKyAgICAgIC8qIEFsbG9jYXRlIGFsbCBz cGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICovCi0rICAgICAgKnNs b3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLSsJCSAgICAgICArIHN0cmxlbiAobmFtZSkg KyAxCi0rCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVuIChmdWxsX3BhdGgp ICsgMSkgOiAwKSk7Ci0rICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNpemVvZiAoKipzbG90 KTsKLSsgICAgICBzdHJjcHkgKHAsIG5hbWUpOwotKyAgICAgICgqc2xvdCktPm5hbWUgPSBwOwot KyAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLSsJewotKwkgIHAgKz0gc3RybGVuIChwKSAr IDE7Ci0rCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotKwkgICgqc2xvdCktPmZ1bGxfcGF0aCA9 IHA7Ci0rCX0KLSsgICAgICBlbHNlCi0rCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Ci0rICAg IH0KLSsKLSsgIHJldHVybiBpbl9oYXNoX3RhYmxlOwotK30KLSsKLSsvKiBDbGVhciB0aGUgdGFi bGUgb2YgbG9hZGVkIHNlY3Rpb24gc2NyaXB0cy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStjbGVh cl9zZWN0aW9uX3NjcmlwdHMgKHZvaWQpCi0rewotKyAgc3RydWN0IHByb2dyYW1fc3BhY2UgKnBz cGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKLSsgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNl X2luZm8gKmluZm87Ci0rCi0rICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2UsIGF1 dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0rICBpZiAoaW5mbyAhPSBOVUxMICYmIGluZm8tPmxvYWRl ZF9zY3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBodGFiX2RlbGV0ZSAoaW5mby0+bG9h ZGVkX3NjcmlwdHMpOwotKyAgICAgIGluZm8tPmxvYWRlZF9zY3JpcHRzID0gTlVMTDsKLSsgICAg ICBpbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IEZBTFNFOwotKyAgICB9 Ci0rfQotKwotKy8qIExvb2sgZm9yIHRoZSBhdXRvLWxvYWQgc2NyaXB0IGFzc29jaWF0ZWQgd2l0 aCBPQkpGSUxFIGFuZCBsb2FkIGl0LiAgKi8KLSsKLSt2b2lkCi0rYXV0b19sb2FkX29iamZpbGVf c2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotK3sK LSsgIGNoYXIgKnJlYWxuYW1lOwotKyAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci0rICBp bnQgbGVuOwotKyAgRklMRSAqaW5wdXQ7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Ci0r Ci0rICByZWFsbmFtZSA9IGdkYl9yZWFscGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0rICBsZW4gPSBz dHJsZW4gKHJlYWxuYW1lKTsKLSsgIGZpbGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChz dWZmaXgpICsgMSk7Ci0rICBtZW1jcHkgKGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKLSsgIHN0 cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1ZmZpeCk7Ci0rCi0rICBjbGVhbnVwcyA9IG1ha2VfY2xl YW51cCAoeGZyZWUsIGZpbGVuYW1lKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1l KTsKLSsKLSsgIGlucHV0ID0gZm9wZW4gKGZpbGVuYW1lLCAiciIpOwotKyAgZGVidWdmaWxlID0g ZmlsZW5hbWU7Ci0rCi0rICBpZiAoIWlucHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQotKyAg ICB7Ci0rICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVi dWcgaW5mbyBkaXJlY3RvcnkuICAqLwotKyAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxl biAoZmlsZW5hbWUpCi0rCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEp OwotKyAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0rICAg ICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4g ICovCi0rICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLSsKLSsgICAgICBtYWtl X2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotKyAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVn ZmlsZSwgInIiKTsKLSsgICAgfQotKwotKyAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLSsg ICAgewotKyAgICAgIC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkg b2YgZ2RiJ3MgZGF0YQotKwkgZGlyZWN0b3J5LiAgKi8KLSsgICAgICBkZWJ1Z2ZpbGUgPSB4bWFs bG9jIChzdHJsZW4gKGdkYl9kYXRhZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUpCi0rCQkJICAgKyBz dHJsZW4gKCIvYXV0by1sb2FkIikgKyAxKTsKLSsgICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2Ri X2RhdGFkaXIpOwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOwotKyAg ICAgIC8qIEZJTEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUu ICAqLwotKyAgICAgIHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0rCi0rICAgICAgbWFr ZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxlKTsKLSsgICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1 Z2ZpbGUsICJyIik7Ci0rICAgIH0KLSsKLSsgIGlmIChpbnB1dCkKLSsgICAgewotKyAgICAgIHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKwotKyAgICAgIG1ha2Vf Y2xlYW51cF9mY2xvc2UgKGlucHV0KTsKLSsKLSsgICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8g dGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIgotKwkgY2FuIHBy aW50IGl0LiAgKi8KLSsgICAgICBwc3BhY2VfaW5mbyA9Ci0rCWdldF9hdXRvX2xvYWRfcHNwYWNl X2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Ci0rICAgICAgbWF5YmVf YWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGRlYnVnZmlsZSwgZGVidWdmaWxlKTsKLSsKLSsgICAg ICAvKiBUbyBwcmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvdXIgd2UgZG9uJ3QgY2hlY2sgZm9yIHdo ZXRoZXIgdGhlCi0rCSBzY3JpcHQgd2FzIGFscmVhZHkgaW4gdGhlIHRhYmxlLCBhbmQgYWx3YXlz IGxvYWQgaXQuCi0rCSBJdCdzIGhpZ2hseSB1bmxpa2VseSB0aGF0IHdlJ2QgZXZlciBsb2FkIGl0 IHR3aWNlLAotKwkgYW5kIHRoZXNlIHNjcmlwdHMgYXJlIHJlcXVpcmVkIHRvIGJlIGlkZW1wb3Rl bnQgdW5kZXIgbXVsdGlwbGUKLSsJIGxvYWRzIGFueXdheS4gICovCi0rICAgICAgc291cmNlX3B5 dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGlucHV0LCBkZWJ1Z2ZpbGUpOwotKyAg ICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOwotK30KLSsKLSsvKiBUaGlzIGlzIGEg bmV3X29iamZpbGUgb2JzZXJ2ZXIgY2FsbGJhY2sgdG8gYXV0by1sb2FkIHNjcmlwdHMuCi0rCi0r ICAgVHdvIGZsYXZvcnMgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBhcmUgc3VwcG9ydGVkLgotKyAg IDEpIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoZSBvYmpmaWxlCi0rICAgMikgZnJvbSAuZGVidWdf Z2RiX3NjcmlwdHMgc2VjdGlvbiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2F1dG9fbG9hZF9uZXdf b2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYgKCFvYmpmaWxlKQot KyAgICB7Ci0rICAgICAgLyogT0JKRklMRSBpcyBOVUxMIHdoZW4gbG9hZGluZyBhIG5ldyAibWFp biIgc3ltYm9sLWZpbGUuICAqLwotKyAgICAgIGNsZWFyX3NlY3Rpb25fc2NyaXB0cyAoKTsKLSsg ICAgICByZXR1cm47Ci0rICAgIH0KLSsKLSsgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxl IChvYmpmaWxlKTsKLSt9Ci0rCi0rLyogQ29sbGVjdCBzY3JpcHRzIHRvIGJlIHByaW50ZWQgaW4g YSB2ZWMuICAqLwotKwotK3R5cGVkZWYgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmxvYWRlZF9zY3Jp cHRfcHRyOwotK0RFRl9WRUNfUCAobG9hZGVkX3NjcmlwdF9wdHIpOwotKwotKy8qIFRyYXZlcnNh bCBmdW5jdGlvbiBmb3IgaHRhYl90cmF2ZXJzZS4KLSsgICBDb2xsZWN0IHRoZSBlbnRyeSBpZiBp dCBtYXRjaGVzIHRoZSByZWdleHAuICAqLwotKwotK3N0YXRpYyBpbnQKLStjb2xsZWN0X21hdGNo aW5nX3NjcmlwdHMgKHZvaWQgKipzbG90LCB2b2lkICppbmZvKQotK3sKLSsgIHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICpzY3JpcHQgPSAqc2xvdDsKLSsgIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICoq c2NyaXB0c19wdHIgPSBpbmZvOwotKwotKyAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCi0r ICAgIFZFQ19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIsIHNjcmlw dCk7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogUHJpbnQgU0NSSVBULiAgKi8KLSsKLStz dGF0aWMgdm9pZAotK3ByaW50X3NjcmlwdCAoc3RydWN0IGxvYWRlZF9zY3JpcHQgKnNjcmlwdCkK LSt7Ci0rICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRfdWlvdXQ7Ci0rICBzdHJ1Y3Qg Y2xlYW51cCAqY2hhaW47Ci0rCi0rICBjaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVf YmVnaW5fZW5kICh1aW91dCwgTlVMTCk7Ci0rCi0rICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91 dCwgImxvYWRlZCIsIHNjcmlwdC0+ZnVsbF9wYXRoID8gIlllcyIgOiAiTWlzc2luZyIpOwotKyAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOwotKyAg dWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSsgIC8qIElmIHRoZSBuYW1lIGlzbid0IHRo ZSBmdWxsIHBhdGgsIHByaW50IGl0IHRvby4gICovCi0rICBpZiAoc2NyaXB0LT5mdWxsX3BhdGgg IT0gTlVMTAotKyAgICAgICYmIHN0cmNtcCAoc2NyaXB0LT5uYW1lLCBzY3JpcHQtPmZ1bGxfcGF0 aCkgIT0gMCkKLSsgICAgewotKyAgICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlx0ZnVsbCBuYW1l OiAiKTsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZ1bGxfcGF0aCIsIHNj cmlwdC0+ZnVsbF9wYXRoKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAg ICB9Ci0rCi0rICBkb19jbGVhbnVwcyAoY2hhaW4pOwotK30KLSsKLSsvKiBIZWxwZXIgZm9yIGlu Zm9fYXV0b19sb2FkX3NjcmlwdHMgdG8gc29ydCB0aGUgc2NyaXB0cyBieSBuYW1lLiAgKi8KLSsK LStzdGF0aWMgaW50Ci0rc29ydF9zY3JpcHRzX2J5X25hbWUgKGNvbnN0IHZvaWQgKmFwLCBjb25z dCB2b2lkICpicCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqYSA9ICooY29u c3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKiopIGFwOwotKyAgY29uc3Qgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKmIgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBicDsKLSsKLSsgIHJl dHVybiBGSUxFTkFNRV9DTVAgKGEtPm5hbWUsIGItPm5hbWUpOwotK30KLSsKLSsvKiAiaW5mbyBh dXRvLWxvYWQtc2NyaXB0cyIgY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStpbmZvX2F1 dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rewotKyAgc3Ry dWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKyAgc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0rICBzdHJ1Y3QgY2xlYW51cCAqc2NyaXB0X2NoYWlu OwotKyAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKnNjcmlwdHM7Ci0rICBpbnQgbnJfc2NyaXB0 czsKLSsKLSsgIGRvbnRfcmVwZWF0ICgpOwotKwotKyAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19s b2FkX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotKwotKyAgaWYgKHBhdHRl cm4gJiYgKnBhdHRlcm4pCi0rICAgIHsKLSsgICAgICBjaGFyICpyZV9lcnIgPSByZV9jb21wIChw YXR0ZXJuKTsKLSsKLSsgICAgICBpZiAocmVfZXJyKQotKwllcnJvciAoXygiSW52YWxpZCByZWdl eHA6ICVzIiksIHJlX2Vycik7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHJlX2Nv bXAgKCIiKTsKLSsgICAgfQotKwotKyAgLyogV2UgbmVlZCB0byBrbm93IHRoZSBudW1iZXIgb2Yg cm93cyBiZWZvcmUgd2UgYnVpbGQgdGhlIHRhYmxlLgotKyAgICAgUGx1cyB3ZSB3YW50IHRvIHNv cnQgdGhlIHNjcmlwdHMgYnkgbmFtZS4KLSsgICAgIFNvIGZpcnN0IHRyYXZlcnNlIHRoZSBoYXNo IHRhYmxlIGNvbGxlY3RpbmcgdGhlIG1hdGNoaW5nIHNjcmlwdHMuICAqLwotKwotKyAgc2NyaXB0 cyA9IFZFQ19hbGxvYyAobG9hZGVkX3NjcmlwdF9wdHIsIDEwKTsKLSsgIHNjcmlwdF9jaGFpbiA9 IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGxvYWRlZF9zY3JpcHRfcHRyKSwgJnNjcmlwdHMp OwotKwotKyAgaWYgKHBzcGFjZV9pbmZvICE9IE5VTEwgJiYgcHNwYWNlX2luZm8tPmxvYWRlZF9z Y3JpcHRzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbW1lZGlhdGVfcXVpdCsrOwotKyAgICAg IC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMgVkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxv YyBzcGFjZS4gICovCi0rICAgICAgaHRhYl90cmF2ZXJzZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8t PmxvYWRlZF9zY3JpcHRzLAotKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNj cmlwdHMpOwotKyAgICAgIGltbWVkaWF0ZV9xdWl0LS07Ci0rICAgIH0KLSsKLSsgIG5yX3Njcmlw dHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7Ci0rICBtYWtlX2Ns ZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDIsIG5yX3NjcmlwdHMsCi0rCQkJ CSAgICAgICAiQXV0b0xvYWRlZFNjcmlwdHNUYWJsZSIpOwotKwotKyAgdWlfb3V0X3RhYmxlX2hl YWRlciAodWlvdXQsIDcsIHVpX2xlZnQsICJsb2FkZWQiLCAiTG9hZGVkIik7Ci0rICB1aV9vdXRf dGFibGVfaGVhZGVyICh1aW91dCwgNzAsIHVpX2xlZnQsICJzY3JpcHQiLCAiU2NyaXB0Iik7Ci0r ICB1aV9vdXRfdGFibGVfYm9keSAodWlvdXQpOwotKwotKyAgaWYgKG5yX3NjcmlwdHMgPiAwKQot KyAgICB7Ci0rICAgICAgaW50IGk7Ci0rICAgICAgbG9hZGVkX3NjcmlwdF9wdHIgc2NyaXB0Owot KwotKyAgICAgIHFzb3J0IChWRUNfYWRkcmVzcyAobG9hZGVkX3NjcmlwdF9wdHIsIHNjcmlwdHMp LAotKwkgICAgIFZFQ19sZW5ndGggKGxvYWRlZF9zY3JpcHRfcHRyLCBzY3JpcHRzKSwKLSsJICAg ICBzaXplb2YgKGxvYWRlZF9zY3JpcHRfcHRyKSwgc29ydF9zY3JpcHRzX2J5X25hbWUpOwotKyAg ICAgIGZvciAoaSA9IDA7IFZFQ19pdGVyYXRlIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cywg aSwgc2NyaXB0KTsgKytpKQotKwlwcmludF9zY3JpcHQgKHNjcmlwdCk7Ci0rICAgIH0KLSsKLSsg IGRvX2NsZWFudXBzIChzY3JpcHRfY2hhaW4pOwotKwotKyAgaWYgKG5yX3NjcmlwdHMgPT0gMCkK LSsgICAgewotKyAgICAgIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotKwl1aV9vdXRfbWVzc2Fn ZSAodWlvdXQsIDAsICJObyBhdXRvLWxvYWQgc2NyaXB0cyBtYXRjaGluZyAlcy5cbiIsCi0rCQkJ cGF0dGVybik7Ci0rICAgICAgZWxzZQotKwl1aV9vdXRfbWVzc2FnZSAodWlvdXQsIDAsICJObyBh dXRvLWxvYWQgc2NyaXB0cy5cbiIpOwotKyAgICB9Ci0rfQotKwotKy8qIFJldHVybiBub24temVy byBpZiBTQ1JJUFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRCBvZiBQU1BBQ0VfSU5GTyB3YXMg dW5zZXQKLSsgICBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiAgQWx3YXlzIHNldCBTQ1JJ UFRfTk9UX0ZPVU5EX1dBUk5JTkdfUFJJTlRFRAotKyAgIG9mIFBTUEFDRV9JTkZPLiAgKi8KLSsK LStpbnQKLStzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhdXRvX2xvYWRf cHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotK3sKLSsgIGludCByZXR2YWwgPSAhcHNwYWNlX2lu Zm8tPnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkOwotKwotKyAgcHNwYWNlX2luZm8t PnNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludGVkID0gMTsKLSsKLSsgIHJldHVybiByZXR2 YWw7Ci0rfQotKwotK3ZvaWQgX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKTsKLSsKLSt2b2lk Ci0rX2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotK3sKLSsgIGF1dG9fbG9hZF9wc3BhY2Vf ZGF0YQotKyAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFudXAgKGF1 dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLSsKLSsgIG9ic2VydmVyX2F0dGFjaF9uZXdf b2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKLSsKLSsgIGFkZF9pbmZvICgiYXV0by1s b2FkLXNjcmlwdHMiLAotKwkgICAgaW5mb19hdXRvX2xvYWRfc2NyaXB0cywKLSsJICAgIF8oIlBy aW50IHRoZSBsaXN0IG9mIGF1dG9tYXRpY2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0rVXNhZ2U6 IGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0iKSk7Ci0rfQotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvYXV0by1sb2FkLmgJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNDkxMjAyMTIgKzAyMDAKLUBA IC0wLDAgKzEsMzYgQEAKLSsvKiBHREIgcm91dGluZXMgZm9yIHN1cHBvcnRpbmcgYXV0by1sb2Fk ZWQgc2NyaXB0cy4KLSsKLSsgICBDb3B5cmlnaHQgKEMpIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsK LSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWZuZGVmIEFVVE9fTE9B RF9ICi0rI2RlZmluZSBBVVRPX0xPQURfSCAxCi0rCi0rc3RydWN0IHByb2dyYW1fc3BhY2U7Ci0r Ci0rZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotKwotK2V4dGVybiBzdHJ1Y3Qg YXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLSsgIGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9y X2xvYWRpbmcgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3BhY2UpOwotK2V4dGVybiBpbnQgbWF5 YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8s Ci0rCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmdWxsX3BhdGgpOwotK2V4 dGVybiB2b2lkIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCi0rCQkJCSAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCk7Ci0rZXh0ZXJuIGludAotKyAgc2Ny aXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZv ICpwc3BhY2VfaW5mbyk7Ci0rCi0rI2VuZGlmIC8qIEFVVE9fTE9BRF9IICovCi1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvZ2RiLWdkYi5nZGIuaW4KLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9nZGItZ2RiLmdkYi5pbgkyMDEyLTA0LTE4IDAwOjI2OjI5LjA0OTEyMDIx MiArMDIwMAotQEAgLTAsMCArMSwzNCBAQAotK2VjaG8gU2V0dGluZyB1cCB0aGUgZW52aXJvbm1l bnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSsKLStzZXQgY29tcGxhaW50cyAxCi0rCi0rYiBpbnRl cm5hbF9lcnJvcgotKwotK2IgaW5mb19jb21tYW5kCi0rY29tbWFuZHMKLSsJc2lsZW50Ci0rCXJl dHVybgotK2VuZAotKwotK2RpciBAc3JjZGlyQC8uLi9saWJpYmVydHkKLStkaXIgQHNyY2RpckAv Li4vYmZkCi0rZGlyIEBzcmNkaXJACi0rZGlyIC4KLStzZXQgcHJvbXB0ICh0b3AtZ2RiKSAKLSsK LStkZWZpbmUgcGRpZQotKyAgaWYgJGFyZ2MgPT0gMQotKyAgICBjYWxsIGR1bXBfZGllICgkYXJn MCwgMSkKLSsgIGVsc2UKLSsgICAgaWYgJGFyZ2MgPT0gMgotKyAgICAgIGNhbGwgZHVtcF9kaWUg KCRhcmcwLCAkYXJnMSkKLSsgICAgZWxzZQotKyAgICAgIHByaW50ZiAiU3ludGF4OiBwZGllIGRp ZSBbZGVwdGhdXG4iCi0rICAgIGVuZAotKyAgZW5kCi0rZW5kCi0rCi0rZG9jdW1lbnQgcGRpZQot K1ByZXR0eSBwcmludCBhIERXQVJGIERJRS4KLStTeW50YXg6IHBkaWUgZGllIFtkZXB0aF0KLStl bmQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9NYWtlZmlsZS5pbgotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wNC0x OCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9N YWtlZmlsZS5pbgkyMDEyLTA0LTE4IDAwOjI2OjUzLjQ1NTA1ODAzNyArMDIwMAotQEAgLTY4MCw3 ICs2ODAsNyBAQCBUQVJHRVRfRkxBR1NfVE9fUEFTUyA9IFwKLSAjIFNGSUxFUyBpcyB1c2VkIGlu IGJ1aWxkaW5nIHRoZSBkaXN0cmlidXRpb24gYXJjaGl2ZS4KLSAKLSBTRklMRVMgPSBhZGEtZXhw LnkgYWRhLWxhbmcuYyBhZGEtdHlwZXByaW50LmMgYWRhLXZhbHByaW50LmMgYWRhLXRhc2tzLmMg XAotLQlhZGRybWFwLmMgXAotKwlhZGRybWFwLmMgYXV0by1sb2FkLmMgXAotIAlhdXh2LmMgYXgt Z2VuZXJhbC5jIGF4LWdkYi5jIFwKLSAJYmNhY2hlLmMgXAotIAliZmQtdGFyZ2V0LmMgXAotQEAg LTgxOSw3ICs4MTksNyBAQCBzb2xpYi1kYXJ3aW4uaCBzb2xpYi1pYTY0LWhwdXguaCBzb2xpYi1z Ci0gZ251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2MrK2RlZnMuaCBnbnVs aWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi0gZ251bGliL3N0ZGRlZi5pbi5oIGlubGluZS1mcmFt ZS5oIHNraXAuaCBzdGFwLXByb2JlLmggXAotIGNvbW1vbi9jb21tb24tdXRpbHMuaCBjb21tb24v eG1sLXV0aWxzLmggY29tbW9uL2J1ZmZlci5oIGNvbW1vbi9wdGlkLmggXAotLWNvbW1vbi9saW51 eC1vc2RhdGEuaCBnZGItZGxmY24uaAotK2NvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24u aCBhdXRvLWxvYWQuaAotIAotICMgSGVhZGVyIGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZlIHNyY2Rp ciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgotIAotQEAgLTg1MSw3ICs4NTEsNyBA QCBDT01NT05fT0JTID0gJChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkCi0gCXZlcnNpb24ubyBc Ci0gCWFubm90YXRlLm8gXAotIAlhZGRybWFwLm8gXAotLQlhdXh2Lm8gXAotKwlhdXRvLWxvYWQu byBhdXh2Lm8gXAotIAliZmQtdGFyZ2V0Lm8gXAotIAlibG9ja2ZyYW1lLm8gYnJlYWtwb2ludC5v IGZpbmR2YXIubyByZWdjYWNoZS5vIFwKLSAJY2hhcnNldC5vIGNvbnRpbnVhdGlvbnMubyBjb3Jl bG93Lm8gZGlzYXNtLm8gZHVtbXktZnJhbWUubyBkZnAubyBcCi1AQCAtMTI1NSw3ICsxMjU1LDcg QEAgZGlzdGNsZWFuOiBjbGVhbgotIAlybSAtZiBnZGJzZXJ2ZXIvY29uZmlnLnN0YXR1cyBnZGJz ZXJ2ZXIvY29uZmlnLmxvZwotIAlybSAtZiBnZGJzZXJ2ZXIvdG0uaCBnZGJzZXJ2ZXIveG0uaCBn ZGJzZXJ2ZXIvbm0uaAotIAlybSAtZiBnZGJzZXJ2ZXIvTWFrZWZpbGUgZ2Ric2VydmVyL2NvbmZp Zy5jYWNoZQotLQlybSAtZiBubS5oIGNvbmZpZy5zdGF0dXMgY29uZmlnLmggc3RhbXAtaCAuZ2Ri aW5pdCBqaXQtcmVhZGVyLmgKLSsJcm0gLWYgbm0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0 YW1wLWggZ2RiLWdkYi5nZGIgaml0LXJlYWRlci5oCi0gCXJtIC1mIHkub3V0cHV0IHlhY2MuYWN0 cyB5YWNjLnRtcCB5LnRhYi5oCi0gCXJtIC1mIGNvbmZpZy5sb2cgY29uZmlnLmNhY2hlCi0gCXJt IC1mIE1ha2VmaWxlCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAx Mi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIgKzAyMDAKLUBAIC0x NjgzOSw3ICsxNjgzOSw3IEBAIGFjX2NvbmZpZ19saW5rcz0iJGFjX2NvbmZpZ19saW5rcyAkYWNf Y28KLSAkYXNfZWNobyAiI2RlZmluZSBHREJfREVGQVVMVF9IT1NUX0NIQVJTRVQgXCJVVEYtOFwi IiA+PmNvbmZkZWZzLmgKLSAKLSAKLS1hY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMg TWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxl IGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlIgotK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19m aWxlcyBNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRh dGEtZGlyZWN0b3J5L01ha2VmaWxlIgotIAotIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZp Z19jb21tYW5kcyBkZWZhdWx0IgotIAotQEAgLTE3NjA1LDcgKzE3NjA1LDcgQEAgZG8KLSAgICAg ImppdC1yZWFkZXIuaCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBqaXQtcmVhZGVyLmg6 aml0LXJlYWRlci5pbiIgOzsKLSAgICAgIiRhY19jb25maWdfbGlua3NfMSIpIENPTkZJR19MSU5L Uz0iJENPTkZJR19MSU5LUyAkYWNfY29uZmlnX2xpbmtzXzEiIDs7Ci0gICAgICJNYWtlZmlsZSIp IENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBNYWtlZmlsZSIgOzsKLS0gICAgIi5nZGJpbml0 IikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIC5nZGJpbml0OmdkYmluaXQuaW4iIDs7Ci0r ICAgICJnZGItZ2RiLmdkYiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGItZ2RiLmdk YiIgOzsKLSAgICAgImRvYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBk b2MvTWFrZWZpbGUiIDs7Ci0gICAgICJnbnVsaWIvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZ251bGliL01ha2VmaWxlIiA7OwotICAgICAiZGF0YS1kaXJlY3RvcnkvTWFr ZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZGF0YS1kaXJlY3RvcnkvTWFrZWZp bGUiIDs7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlLmFjCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAx Mi0wNC0xOCAwMDoyNjoxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIw L2dkYi9jb25maWd1cmUuYWMJMjAxMi0wNC0xOCAwMDoyNjoyOS4wNTMxMjAyMDIgKzAyMDAKLUBA IC0yNDIyLDcgKzI0MjIsNyBAQCBkbmwgIEF0IHRoZSBtb21lbnQsIHdlIGp1c3QgYXNzdW1lIGl0 J3MKLSBBQ19ERUZJTkUoR0RCX0RFRkFVTFRfSE9TVF9DSEFSU0VULCAiVVRGLTgiLAotICAgICAg ICAgICBbRGVmaW5lIHRvIGJlIGEgc3RyaW5nIG5hbWluZyB0aGUgZGVmYXVsdCBob3N0IGNoYXJh Y3RlciBzZXQuXSkKLSAKLS1BQ19PVVRQVVQoTWFrZWZpbGUgLmdkYmluaXQ6Z2RiaW5pdC5pbiBk b2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxlIGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAotK0FD X09VVFBVVChNYWtlZmlsZSBnZGItZ2RiLmdkYiBkb2MvTWFrZWZpbGUgZ251bGliL01ha2VmaWxl IGRhdGEtZGlyZWN0b3J5L01ha2VmaWxlLAotIFsKLSBjYXNlIHgkQ09ORklHX0hFQURFUlMgaW4K LSB4Y29uZmlnLmg6Y29uZmlnLmluKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21h aW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbWFpbi5j CTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCi1AQCAt NDIsNiArNDIsNyBAQAotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLSAjaW5jbHVkZSAicHl0 aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotKyNpbmNsdWRlICJhdXRvLWxv YWQuaCIKLSAKLSAvKiBUaGUgc2VsZWN0ZWQgaW50ZXJwcmV0ZXIuICBUaGlzIHdpbGwgYmUgdXNl ZCBhcyBhIHNldCBjb21tYW5kCi0gICAgdmFyaWFibGUsIHNvIGl0IHNob3VsZCBhbHdheXMgYmUg bWFsbG9jJ2VkIC0gc2luY2UKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEyLTA0LTE4IDAwOjI2OjE0LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwky MDEyLTA0LTE4IDAwOjI2OjI5LjA1NDEyMDE5OSArMDIwMAotQEAgLTE4LDMwICsxOCwxNCBAQAot ICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSAjaW5jbHVkZSAiZGVmcy5oIgotLSNpbmNsdWRlICJm aWxlbmFtZXMuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotLSNpbmNsdWRlICJnZGJfcmVn ZXguaCIKLSAjaW5jbHVkZSAidG9wLmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLS0jaW5j bHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRlICJnZGJjbWQuaCIKLS0jaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKLS0jaW5jbHVkZSAicHJvZ3NwYWNlLmgiCi0gI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0g I2luY2x1ZGUgInB5dGhvbi5oIgotICNpbmNsdWRlICJjbGkvY2xpLWNtZHMuaCIKLS0KLS0vKiBJ bnRlcm5hbC11c2UgZmxhZyB0byBlbmFibGUvZGlzYWJsZSBhdXRvLWxvYWRpbmcuCi0tICAgVGhp cyBpcyB0cnVlIGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgcHl0aG9uIGNvZGUgd2hlbiBhbiBvYmpm aWxlIGlzIG9wZW5lZCwKLS0gICBmYWxzZSBvdGhlcndpc2UuCi0tCi0tICAgQm90aCBhdXRvX2xv YWRfc2NyaXB0cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkIG11c3QgYmUgdHJ1ZSB0byBlbmFi bGUKLS0gICBhdXRvLWxvYWRpbmcuCi0tCi0tICAgVGhpcyBmbGFnIGV4aXN0cyB0byBmYWNpbGl0 YXRlIGRlZmVycmluZyBhdXRvLWxvYWRpbmcgZHVyaW5nIHN0YXJ0LXVwCi0tICAgdW50aWwgYWZ0 ZXIgLi8uZ2RiaW5pdCBoYXMgYmVlbiByZWFkOyBpdCBtYXkgYXVnbWVudCB0aGUgc2VhcmNoIGRp cmVjdG9yaWVzCi0tICAgdXNlZCB0byBmaW5kIHRoZSBzY3JpcHRzLiAgKi8KLS1pbnQgZ2RicHlf Z2xvYmFsX2F1dG9fbG9hZCA9IDE7Ci0rI2luY2x1ZGUgImF1dG8tbG9hZC5oIgotIAotICNpZmRl ZiBIQVZFX1BZVEhPTgotIAotQEAgLTYwLDMyICs0NCw2IEBAIGludCBnZGJweV9nbG9iYWxfYXV0 b19sb2FkID0gMTsKLSAgICBUaGUgbGVhZGluZyBieXRlIGlzIHRvIGFsbG93IHVwd2FyZCBjb21w YXRpYmxlIGV4dGVuc2lvbnMuICAqLwotICNkZWZpbmUgR0RCUFlfQVVUT19TRUNUSU9OX05BTUUg Ii5kZWJ1Z19nZGJfc2NyaXB0cyIKLSAKLS0vKiBGb3Igc2NyaXB0cyBzcGVjaWZpZWQgaW4gLmRl YnVnX2dkYl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAotLSAgIHRoZSBzYW1l IHNjcmlwdC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2NyaXB0IG11bHRpcGxl IHRpbWVzLAotLSAgIGFuZCB0aGVyZSBjYW4gYmUgYSBsb3Qgb2Ygb2JqZmlsZXMgYW5kIHNjcmlw dHMsIHNvIHdlIGtlZXAgdHJhY2sgb2Ygc2NyaXB0cwotLSAgIGxvYWRlZCB0aGlzIHdheS4gICov Ci0tCi0tc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbwotLXsKLS0gIC8qIEZvciBlYWNoIHBy b2dyYW0gc3BhY2Ugd2Uga2VlcCB0cmFjayBvZiBsb2FkZWQgc2NyaXB0cy4gICovCi0tICBzdHJ1 Y3QgaHRhYiAqbG9hZGVkX3NjcmlwdHM7Ci0tCi0tICAvKiBOb24temVybyBpZiB3ZSd2ZSBpc3N1 ZWQgdGhlIHdhcm5pbmcgYWJvdXQgYW4gYXV0by1sb2FkIHNjcmlwdCBub3QgYmVpbmcKLS0gICAg IGZvdW5kLiAgV2Ugb25seSB3YW50IHRvIGlzc3VlIHRoaXMgd2FybmluZyBvbmNlLiAgKi8KLS0g IGludCBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZDsKLS19OwotLQotLS8qIE9iamVj dHMgb2YgdGhpcyB0eXBlIGFyZSBzdG9yZWQgaW4gdGhlIGxvYWRlZCBzY3JpcHQgaGFzaCB0YWJs ZS4gICovCi0tCi0tc3RydWN0IGxvYWRlZF9zY3JpcHQKLS17Ci0tICAvKiBOYW1lIGFzIHByb3Zp ZGVkIGJ5IHRoZSBvYmpmaWxlLiAgKi8KLS0gIGNvbnN0IGNoYXIgKm5hbWU7Ci0tICAvKiBGdWxs IHBhdGggbmFtZSBvciBOVUxMIGlmIHNjcmlwdCB3YXNuJ3QgZm91bmQgKG9yIHdhcyBvdGhlcndp c2UKLS0gICAgIGluYWNjZXNzaWJsZSkuICAqLwotLSAgY29uc3QgY2hhciAqZnVsbF9wYXRoOwot LX07Ci0tCi0gLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1s b2FkaW5nOgotICAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKLSAgICBUaGlzIGlzIHRy dWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMgd2hlbiBhbiBvYmpm aWxlCi1AQCAtOTcsMTM2ICs1NSw2IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0Ci0gICAgVGhlIGZh Y3QgdGhhdCBpdCBsaXZlcyBoZXJlIGlzIGp1c3QgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAg Ki8KLSBzdGF0aWMgaW50IGF1dG9fbG9hZF9zY3JpcHRzID0gMTsKLSAKLS0vKiBQZXItcHJvZ3Jh bS1zcGFjZSBkYXRhIGtleS4gICovCi0tc3RhdGljIGNvbnN0IHN0cnVjdCBwcm9ncmFtX3NwYWNl X2RhdGEgKmF1dG9fbG9hZF9wc3BhY2VfZGF0YTsKLS0KLS1zdGF0aWMgdm9pZAotLWF1dG9fbG9h ZF9wc3BhY2VfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLCB2b2lk ICphcmcpCi0tewotLSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0g IGluZm8gPSBwcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh KTsKLS0gIGlmIChpbmZvICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAoaW5mby0+bG9hZGVk X3NjcmlwdHMpCi0tCWh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0tICAgICAg eGZyZWUgKGluZm8pOwotLSAgICB9Ci0tfQotLQotLS8qIEdldCB0aGUgY3VycmVudCBhdXRvbG9h ZCBkYXRhLiAgSWYgbm9uZSBpcyBmb3VuZCB5ZXQsIGFkZCBpdCBub3cuICBUaGlzCi0tICAgZnVu Y3Rpb24gYWx3YXlzIHJldHVybnMgYSB2YWxpZCBvYmplY3QuICAqLwotLQotLXN0YXRpYyBzdHJ1 Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICoKLS1nZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhIChz dHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKQotLXsKLS0gIHN0cnVjdCBhdXRvX2xvYWRfcHNw YWNlX2luZm8gKmluZm87Ci0tCi0tICBpbmZvID0gcHJvZ3JhbV9zcGFjZV9kYXRhIChwc3BhY2Us IGF1dG9fbG9hZF9wc3BhY2VfZGF0YSk7Ci0tICBpZiAoaW5mbyA9PSBOVUxMKQotLSAgICB7Ci0t ICAgICAgaW5mbyA9IFhaQUxMT0MgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8pOwotLSAg ICAgIHNldF9wcm9ncmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRh LCBpbmZvKTsKLS0gICAgfQotLQotLSAgcmV0dXJuIGluZm87Ci0tfQotLQotLS8qIEhhc2ggZnVu Y3Rpb24gZm9yIHRoZSBsb2FkZWQgc2NyaXB0IGhhc2guICAqLwotLQotLXN0YXRpYyBoYXNodmFs X3QKLS1oYXNoX2xvYWRlZF9zY3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmRhdGEpCi0tewotLSAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmUgPSBkYXRhOwotLQotLSAgcmV0dXJuIGh0YWJf aGFzaF9zdHJpbmcgKGUtPm5hbWUpOwotLX0KLS0KLS0vKiBFcXVhbGl0eSBmdW5jdGlvbiBmb3Ig dGhlIGxvYWRlZCBzY3JpcHQgaGFzaC4gICovCi0tCi0tc3RhdGljIGludAotLWVxX2xvYWRlZF9z Y3JpcHRfZW50cnkgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0tewotLSAgY29uc3Qg c3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLS0gIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2Ny aXB0ICplYiA9IGI7Ci0tCi0tICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09 IDA7Ci0tfQotLQotLS8qIEluaXRpYWxpemUgdGhlIHRhYmxlIHRvIHRyYWNrIGxvYWRlZCBzY3Jp cHRzLgotLSAgIEVhY2ggZW50cnkgaXMgaGFzaGVkIGJ5IHRoZSBmdWxsIHBhdGggbmFtZS4gICov Ci0tCi0tc3RhdGljIHZvaWQKLS1pbml0X2xvYWRlZF9zY3JpcHRzX2luZm8gKHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKQotLXsKLS0gIC8qIENob29zZSAzMSBhcyB0 aGUgc3RhcnRpbmcgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSwgc29tZXdoYXQgYXJiaXRyYXJpbHku Ci0tICAgICBTcGFjZSBmb3IgZWFjaCBlbnRyeSBpcyBvYnRhaW5lZCB3aXRoIG9uZSBtYWxsb2Mg c28gd2UgY2FuIGZyZWUgdGhlbQotLSAgICAgZWFzaWx5LiAgKi8KLS0KLS0gIHBzcGFjZV9pbmZv LT5sb2FkZWRfc2NyaXB0cyA9IGh0YWJfY3JlYXRlICgzMSwKLS0JCQkJCSAgICAgaGFzaF9sb2Fk ZWRfc2NyaXB0X2VudHJ5LAotLQkJCQkJICAgICBlcV9sb2FkZWRfc2NyaXB0X2VudHJ5LAotLQkJ CQkJICAgICB4ZnJlZSk7Ci0tCi0tICBwc3BhY2VfaW5mby0+c2NyaXB0X25vdF9mb3VuZF93YXJu aW5nX3ByaW50ZWQgPSBGQUxTRTsKLS19Ci0tCi0tLyogV3JhcHBlciBvbiBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhIHRvIGFsc28gYWxsb2NhdGUgdGhlIGhhc2ggdGFibGUKLS0gICBmb3IgbG9h ZGluZyBzY3JpcHRzLiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5m byAqCi0tZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAoc3RydWN0IHByb2dy YW1fc3BhY2UgKnBzcGFjZSkKLS17Ci0tICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpp bmZvOwotLQotLSAgaW5mbyA9IGdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGEgKHBzcGFjZSk7Ci0t ICBpZiAoaW5mby0+bG9hZGVkX3NjcmlwdHMgPT0gTlVMTCkKLS0gICAgaW5pdF9sb2FkZWRfc2Ny aXB0c19pbmZvIChpbmZvKTsKLS0KLS0gIHJldHVybiBpbmZvOwotLX0KLS0KLS0vKiBBZGQgc2Ny aXB0IE5BTUUgdG8gaGFzaCB0YWJsZSBIVEFCLgotLSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRo ZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotLSAgIFRoZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2Ny aXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRhYmxlLiAgKi8KLS0KLS1zdGF0aWMgaW50Ci0t bWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGh0YWIgKmh0YWIsIGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKmZ1bGxfcGF0aCkKLS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3Qs IGVudHJ5OwotLSAgaW50IGluX2hhc2hfdGFibGU7Ci0tCi0tICBlbnRyeS5uYW1lID0gbmFtZTsK LS0gIGVudHJ5LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLS0gIHNsb3QgPSAoc3RydWN0IGxvYWRl ZF9zY3JpcHQgKiopIGh0YWJfZmluZF9zbG90IChodGFiLCAmZW50cnksIElOU0VSVCk7Ci0tICBp bl9oYXNoX3RhYmxlID0gKnNsb3QgIT0gTlVMTDsKLS0KLS0gIC8qIElmIHRoaXMgc2NyaXB0IGlz IG5vdCBpbiB0aGUgaGFzaCB0YWJsZSwgYWRkIGl0LiAgKi8KLS0KLS0gIGlmICghIGluX2hhc2hf dGFibGUpCi0tICAgIHsKLS0gICAgICBjaGFyICpwOwotLQotLSAgICAgIC8qIEFsbG9jYXRlIGFs bCBzcGFjZSBpbiBvbmUgY2h1bmsgc28gaXQncyBlYXNpZXIgdG8gZnJlZS4gICovCi0tICAgICAg KnNsb3QgPSB4bWFsbG9jIChzaXplb2YgKCoqc2xvdCkKLS0JCSAgICAgICArIHN0cmxlbiAobmFt ZSkgKyAxCi0tCQkgICAgICAgKyAoZnVsbF9wYXRoICE9IE5VTEwgPyAoc3RybGVuIChmdWxsX3Bh dGgpICsgMSkgOiAwKSk7Ci0tICAgICAgcCA9ICgoY2hhciopICpzbG90KSArIHNpemVvZiAoKipz bG90KTsKLS0gICAgICBzdHJjcHkgKHAsIG5hbWUpOwotLSAgICAgICgqc2xvdCktPm5hbWUgPSBw OwotLSAgICAgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKLS0JewotLQkgIHAgKz0gc3RybGVuIChw KSArIDE7Ci0tCSAgc3RyY3B5IChwLCBmdWxsX3BhdGgpOwotLQkgICgqc2xvdCktPmZ1bGxfcGF0 aCA9IHA7Ci0tCX0KLS0gICAgICBlbHNlCi0tCSgqc2xvdCktPmZ1bGxfcGF0aCA9IE5VTEw7Ci0t ICAgIH0KLS0KLS0gIHJldHVybiBpbl9oYXNoX3RhYmxlOwotLX0KLS0KLSAvKiBMb2FkIHNjcmlw dHMgc3BlY2lmaWVkIGluIE9CSkZJTEUuCi0gICAgU1RBUlQsRU5EIGRlbGltaXQgYSBidWZmZXIg Y29udGFpbmluZyBhIGxpc3Qgb2YgbnVsLXRlcm1pbmF0ZWQKLSAgICBmaWxlIG5hbWVzLgotQEAg LTMwMSwyMCArMTI5LDE3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWxl ICoKLSAKLSAJIElXQk4gaWYgY29tcGxhaW50cy5jIHdlcmUgbW9yZSBnZW5lcmFsLXB1cnBvc2Uu ICAqLwotIAotLSAgICAgIGluX2hhc2hfdGFibGUgPSBtYXliZV9hZGRfc2NyaXB0IChwc3BhY2Vf aW5mby0+bG9hZGVkX3NjcmlwdHMsIGZpbGUsCi0rICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJl X2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBmaWxlLAotIAkJCQkJb3BlbmVkID8gZnVsbF9wYXRo IDogTlVMTCk7Ci0gCi0gICAgICAgaWYgKCEgb3BlbmVkKQotIAl7Ci0gCSAgLyogV2UgZG9uJ3Qg dGhyb3cgYW4gZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwotLQkg IGlmICghIHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCkKLS0J ICAgIHsKLS0JICAgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0cyByZWZl cmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLSsJICBpZiAoc2NyaXB0X25vdF9mb3VuZF93YXJuaW5n X3ByaW50IChwc3BhY2VfaW5mbykpCi0rCSAgICB3YXJuaW5nIChfKCJNaXNzaW5nIGF1dG8tbG9h ZCBzY3JpcHRzIHJlZmVyZW5jZWQgaW4gc2VjdGlvbiAlc1xuXAotIG9mIGZpbGUgJXNcblwKLSBV c2UgYGluZm8gYXV0by1sb2FkLXNjcmlwdHMgW1JFR0VYUF0nIHRvIGxpc3QgdGhlbS4iKSwKLS0J CSAgICAgICBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwgb2JqZmlsZS0+bmFtZSk7Ci0tCSAgICAg IHBzcGFjZV9pbmZvLT5zY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnRlZCA9IFRSVUU7Ci0t CSAgICB9Ci0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsK LSAJfQotICAgICAgIGVsc2UKLSAJewotQEAgLTM1NiwxMTYgKzE4MSw2IEBAIGF1dG9fbG9hZF9z ZWN0aW9uX3NjcmlwdHMgKHN0cnVjdCBvYmpmaWwKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 Ci0gfQotIAotLS8qIENsZWFyIHRoZSB0YWJsZSBvZiBsb2FkZWQgc2VjdGlvbiBzY3JpcHRzLiAg Ki8KLS0KLS1zdGF0aWMgdm9pZAotLWNsZWFyX3NlY3Rpb25fc2NyaXB0cyAodm9pZCkKLS17Ci0t ICBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOwot LSAgc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqaW5mbzsKLS0KLS0gIGluZm8gPSBwcm9n cmFtX3NwYWNlX2RhdGEgKHBzcGFjZSwgYXV0b19sb2FkX3BzcGFjZV9kYXRhKTsKLS0gIGlmIChp bmZvICE9IE5VTEwgJiYgaW5mby0+bG9hZGVkX3NjcmlwdHMgIT0gTlVMTCkKLS0gICAgewotLSAg ICAgIGh0YWJfZGVsZXRlIChpbmZvLT5sb2FkZWRfc2NyaXB0cyk7Ci0tICAgICAgaW5mby0+bG9h ZGVkX3NjcmlwdHMgPSBOVUxMOwotLSAgICAgIGluZm8tPnNjcmlwdF9ub3RfZm91bmRfd2Fybmlu Z19wcmludGVkID0gRkFMU0U7Ci0tICAgIH0KLS19Ci0tCi0tLyogTG9vayBmb3IgdGhlIGF1dG8t bG9hZCBzY3JpcHQgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLwotLQot LXN0YXRpYyB2b2lkCi0tYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgY29uc3QgY2hhciAqc3VmZml4KQotLXsKLS0gIGNoYXIgKnJlYWxuYW1lOwotLSAg Y2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci0tICBpbnQgbGVuOwotLSAgRklMRSAqaW5wdXQ7 Ci0tICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHM7Ci0tCi0tICByZWFsbmFtZSA9IGdkYl9yZWFs cGF0aCAob2JqZmlsZS0+bmFtZSk7Ci0tICBsZW4gPSBzdHJsZW4gKHJlYWxuYW1lKTsKLS0gIGZp bGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChzdWZmaXgpICsgMSk7Ci0tICBtZW1jcHkg KGZpbGVuYW1lLCByZWFsbmFtZSwgbGVuKTsKLS0gIHN0cmNweSAoZmlsZW5hbWUgKyBsZW4sIHN1 ZmZpeCk7Ci0tCi0tICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsK LS0gIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLS0KLS0gIGlucHV0ID0gZm9wZW4g KGZpbGVuYW1lLCAiciIpOwotLSAgZGVidWdmaWxlID0gZmlsZW5hbWU7Ci0tCi0tICBpZiAoIWlu cHV0ICYmIGRlYnVnX2ZpbGVfZGlyZWN0b3J5KQotLSAgICB7Ci0tICAgICAgLyogQWxzbyB0cnkg dGhlIHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwot LSAgICAgIGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBz dHJsZW4gKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEpOwotLSAgICAgIHN0cmNweSAoZGVidWdm aWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0tICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1 dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCi0tICAgICAgc3RyY2F0IChkZWJ1 Z2ZpbGUsIGZpbGVuYW1lKTsKLS0KLS0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2Zp bGUpOwotLSAgICAgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKLS0gICAgfQotLQot LSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLS0gICAgewotLSAgICAgIC8qIEFsc28gdHJ5 IHRoZSBzYW1lIGZpbGUgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgZ2RiJ3MgZGF0YQotLQkgZGlyZWN0 b3J5LiAgKi8KLS0gICAgICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGdkYl9kYXRhZGly KSArIHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBzdHJsZW4gKCIvYXV0by1sb2FkIikgKyAx KTsKLS0gICAgICBzdHJjcHkgKGRlYnVnZmlsZSwgZ2RiX2RhdGFkaXIpOwotLSAgICAgIHN0cmNh dCAoZGVidWdmaWxlLCAiL2F1dG8tbG9hZCIpOwotLSAgICAgIC8qIEZJTEVOQU1FIGlzIGFic29s dXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotLSAgICAgIHN0cmNhdCAoZGVi dWdmaWxlLCBmaWxlbmFtZSk7Ci0tCi0tICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdm aWxlKTsKLS0gICAgICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0tICAgIH0KLS0K LS0gIGlmIChpbnB1dCkKLS0gICAgewotLSAgICAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvOwotLQotLSAgICAgIG1ha2VfY2xlYW51cF9mY2xvc2UgKGlucHV0KTsK LS0KLS0gICAgICAvKiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJp bmZvIGF1dG8tbG9hZC1zY3JpcHRzIgotLQkgY2FuIHByaW50IGl0LiAgKi8KLS0gICAgICBwc3Bh Y2VfaW5mbyA9Ci0tCWdldF9hdXRvX2xvYWRfcHNwYWNlX2RhdGFfZm9yX2xvYWRpbmcgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZSk7Ci0tICAgICAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8t PmxvYWRlZF9zY3JpcHRzLCBkZWJ1Z2ZpbGUsIGRlYnVnZmlsZSk7Ci0tCi0tICAgICAgLyogVG8g cHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3VyIHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRo ZQotLQkgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0 LgotLQkgSXQncyBoaWdobHkgdW5saWtlbHkgdGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwK LS0JIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSByZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVy IG11bHRpcGxlCi0tCSBsb2FkcyBhbnl3YXkuICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBpbnB1dCwgZGVidWdmaWxlKTsKLS0gICAgfQotLQot LSAgZG9fY2xlYW51cHMgKGNsZWFudXBzKTsKLS19Ci0tCi0tLyogVGhpcyBpcyBhIG5ld19vYmpm aWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8tbG9hZCBzY3JpcHRzLgotLQotLSAgIFR3byBm bGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIHN1cHBvcnRlZC4KLS0gICAxKSBiYXNl ZCBvbiB0aGUgcGF0aCB0byB0aGUgb2JqZmlsZQotLSAgIDIpIGZyb20gLmRlYnVnX2dkYl9zY3Jp cHRzIHNlY3Rpb24gICovCi0tCi0tc3RhdGljIHZvaWQKLS1hdXRvX2xvYWRfbmV3X29iamZpbGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotLXsKLS0gIGlmICghb2JqZmlsZSkKLS0gICAgewot LSAgICAgIC8qIE9CSkZJTEUgaXMgTlVMTCB3aGVuIGxvYWRpbmcgYSBuZXcgIm1haW4iIHN5bWJv bC1maWxlLiAgKi8KLS0gICAgICBjbGVhcl9zZWN0aW9uX3NjcmlwdHMgKCk7Ci0tICAgICAgcmV0 dXJuOwotLSAgICB9Ci0tCi0tICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmls ZSk7Ci0tfQotLQotIC8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9CSkZJTEUu ICAqLwotIAotIHZvaWQKLUBAIC00NzgsMTQ2ICsxOTMsOSBAQCBsb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSAoc3RydWN0IG9iCi0gICAgIH0KLSB9Ci0gDAotLS8qIENvbGxlY3Qgc2NyaXB0 cyB0byBiZSBwcmludGVkIGluIGEgdmVjLiAgKi8KLS0KLS10eXBlZGVmIHN0cnVjdCBsb2FkZWRf c2NyaXB0ICpsb2FkZWRfc2NyaXB0X3B0cjsKLS1ERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRy KTsKLS0KLS0vKiBUcmF2ZXJzYWwgZnVuY3Rpb24gZm9yIGh0YWJfdHJhdmVyc2UuCi0tICAgQ29s bGVjdCB0aGUgZW50cnkgaWYgaXQgbWF0Y2hlcyB0aGUgcmVnZXhwLiAgKi8KLS0KLS1zdGF0aWMg aW50Ci0tY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzICh2b2lkICoqc2xvdCwgdm9pZCAqaW5mbykK LS17Ci0tICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaXB0ID0gKnNsb3Q7Ci0tICBWRUMgKGxv YWRlZF9zY3JpcHRfcHRyKSAqKnNjcmlwdHNfcHRyID0gaW5mbzsKLS0KLS0gIGlmIChyZV9leGVj IChzY3JpcHQtPm5hbWUpKQotLSAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwg KnNjcmlwdHNfcHRyLCBzY3JpcHQpOwotLQotLSAgcmV0dXJuIDE7Ci0tfQotLQotLS8qIFByaW50 IFNDUklQVC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1wcmludF9zY3JpcHQgKHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICpzY3JpcHQpCi0tewotLSAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50 X3Vpb3V0OwotLSAgc3RydWN0IGNsZWFudXAgKmNoYWluOwotLQotLSAgY2hhaW4gPSBtYWtlX2Ns ZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotLQotLSAgdWlfb3V0 X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxfcGF0aCA/ICJZZXMi IDogIk1pc3NpbmciKTsKLS0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAic2NyaXB0Iiwg c2NyaXB0LT5uYW1lKTsKLS0gIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7Ci0tCi0tICAvKiBJ ZiB0aGUgbmFtZSBpc24ndCB0aGUgZnVsbCBwYXRoLCBwcmludCBpdCB0b28uICAqLwotLSAgaWYg KHNjcmlwdC0+ZnVsbF9wYXRoICE9IE5VTEwKLS0gICAgICAmJiBzdHJjbXAgKHNjcmlwdC0+bmFt ZSwgc2NyaXB0LT5mdWxsX3BhdGgpICE9IDApCi0tICAgIHsKLS0gICAgICB1aV9vdXRfdGV4dCAo dWlvdXQsICJcdGZ1bGwgbmFtZTogIik7Ci0tICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJmdWxsX3BhdGgiLCBzY3JpcHQtPmZ1bGxfcGF0aCk7Ci0tICAgICAgdWlfb3V0X3RleHQg KHVpb3V0LCAiXG4iKTsKLS0gICAgfQotLQotLSAgZG9fY2xlYW51cHMgKGNoYWluKTsKLS19Ci0t Ci0tLyogSGVscGVyIGZvciBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIHRvIHNvcnQgdGhlIHNjcmlw dHMgYnkgbmFtZS4gICovCi0tCi0tc3RhdGljIGludAotLXNvcnRfc2NyaXB0c19ieV9uYW1lIChj b25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0tewotLSAgY29uc3Qgc3RydWN0IGxvYWRl ZF9zY3JpcHQgKmEgPSAqKGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBhcDsKLS0gIGNv bnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpiID0gKihjb25zdCBzdHJ1Y3QgbG9hZGVkX3Njcmlw dCAqKikgYnA7Ci0tCi0tICByZXR1cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsK LS19Ci0tCi0tLyogImluZm8gYXV0by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotLQotLXN0 YXRpYyB2b2lkCi0taW5mb19hdXRvX2xvYWRfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwgaW50IGZy b21fdHR5KQotLXsKLS0gIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLS0g IHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotLSAgc3RydWN0IGNs ZWFudXAgKnNjcmlwdF9jaGFpbjsKLS0gIFZFQyAobG9hZGVkX3NjcmlwdF9wdHIpICpzY3JpcHRz OwotLSAgaW50IG5yX3NjcmlwdHM7Ci0tCi0tICBkb250X3JlcGVhdCAoKTsKLS0KLS0gIHBzcGFj ZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9ncmFtX3NwYWNl KTsKLS0KLS0gIGlmIChwYXR0ZXJuICYmICpwYXR0ZXJuKQotLSAgICB7Ci0tICAgICAgY2hhciAq cmVfZXJyID0gcmVfY29tcCAocGF0dGVybik7Ci0tCi0tICAgICAgaWYgKHJlX2VycikKLS0JZXJy b3IgKF8oIkludmFsaWQgcmVnZXhwOiAlcyIpLCByZV9lcnIpOwotLSAgICB9Ci0tICBlbHNlCi0t ICAgIHsKLS0gICAgICByZV9jb21wICgiIik7Ci0tICAgIH0KLS0KLS0gIC8qIFdlIG5lZWQgdG8g a25vdyB0aGUgbnVtYmVyIG9mIHJvd3MgYmVmb3JlIHdlIGJ1aWxkIHRoZSB0YWJsZS4KLS0gICAg IFBsdXMgd2Ugd2FudCB0byBzb3J0IHRoZSBzY3JpcHRzIGJ5IG5hbWUuCi0tICAgICBTbyBmaXJz dCB0cmF2ZXJzZSB0aGUgaGFzaCB0YWJsZSBjb2xsZWN0aW5nIHRoZSBtYXRjaGluZyBzY3JpcHRz LiAgKi8KLS0KLS0gIHNjcmlwdHMgPSBWRUNfYWxsb2MgKGxvYWRlZF9zY3JpcHRfcHRyLCAxMCk7 Ci0tICBzY3JpcHRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChsb2FkZWRfc2Ny aXB0X3B0ciksICZzY3JpcHRzKTsKLS0KLS0gIGlmIChwc3BhY2VfaW5mbyAhPSBOVUxMICYmIHBz cGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cyAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgaW1tZWRp YXRlX3F1aXQrKzsKLS0gICAgICAvKiBQYXNzIGEgcG9pbnRlciB0byBzY3JpcHRzIGFzIFZFQ19z YWZlX3B1c2ggY2FuIHJlYWxsb2Mgc3BhY2UuICAqLwotLSAgICAgIGh0YWJfdHJhdmVyc2Vfbm9y ZXNpemUgKHBzcGFjZV9pbmZvLT5sb2FkZWRfc2NyaXB0cywKLS0JCQkgICAgICBjb2xsZWN0X21h dGNoaW5nX3NjcmlwdHMsICZzY3JpcHRzKTsKLS0gICAgICBpbW1lZGlhdGVfcXVpdC0tOwotLSAg ICB9Ci0tCi0tICBucl9zY3JpcHRzID0gVkVDX2xlbmd0aCAobG9hZGVkX3NjcmlwdF9wdHIsIHNj cmlwdHMpOwotLSAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAy LCBucl9zY3JpcHRzLAotLQkJCQkgICAgICAgIkF1dG9Mb2FkZWRTY3JpcHRzVGFibGUiKTsKLS0K LS0gIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCA3LCB1aV9sZWZ0LCAibG9hZGVkIiwgIkxv YWRlZCIpOwotLSAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDcwLCB1aV9sZWZ0LCAic2Ny aXB0IiwgIlNjcmlwdCIpOwotLSAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKLS0KLS0gIGlm IChucl9zY3JpcHRzID4gMCkKLS0gICAgewotLSAgICAgIGludCBpOwotLSAgICAgIGxvYWRlZF9z Y3JpcHRfcHRyIHNjcmlwdDsKLS0KLS0gICAgICBxc29ydCAoVkVDX2FkZHJlc3MgKGxvYWRlZF9z Y3JpcHRfcHRyLCBzY3JpcHRzKSwKLS0JICAgICBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0 ciwgc2NyaXB0cyksCi0tCSAgICAgc2l6ZW9mIChsb2FkZWRfc2NyaXB0X3B0ciksIHNvcnRfc2Ny aXB0c19ieV9uYW1lKTsKLS0gICAgICBmb3IgKGkgPSAwOyBWRUNfaXRlcmF0ZSAobG9hZGVkX3Nj cmlwdF9wdHIsIHNjcmlwdHMsIGksIHNjcmlwdCk7ICsraSkKLS0JcHJpbnRfc2NyaXB0IChzY3Jp cHQpOwotLSAgICB9Ci0tCi0tICBkb19jbGVhbnVwcyAoc2NyaXB0X2NoYWluKTsKLS0KLS0gIGlm IChucl9zY3JpcHRzID09IDApCi0tICAgIHsKLS0gICAgICBpZiAocGF0dGVybiAmJiAqcGF0dGVy bikKLS0JdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMgbWF0 Y2hpbmcgJXMuXG4iLAotLQkJCXBhdHRlcm4pOwotLSAgICAgIGVsc2UKLS0JdWlfb3V0X21lc3Nh Z2UgKHVpb3V0LCAwLCAiTm8gYXV0by1sb2FkIHNjcmlwdHMuXG4iKTsKLS0gICAgfQotLX0KLS0M Ci0gdm9pZAotIGdkYnB5X2luaXRpYWxpemVfYXV0b19sb2FkICh2b2lkKQotIHsKLS0gIGF1dG9f bG9hZF9wc3BhY2VfZGF0YQotLSAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRo X2NsZWFudXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLS0KLS0gIG9ic2VydmVy X2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19vYmpmaWxlKTsKLS0KLSAgIGFkZF9z ZXRzaG93X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAot IAkJCSAgICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotIFNldCB0aGUgZGVidWdnZXIncyBiZWhh dmlvdXIgcmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLUBAIC02MjcsMTEg KzIwNSw2IEBAIGFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiksCi0gCQkJICAgTlVM TCwgTlVMTCwKLSAJCQkgICAmc2V0bGlzdCwKLSAJCQkgICAmc2hvd2xpc3QpOwotLQotLSAgYWRk X2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0cyIsCi0tCSAgICBpbmZvX2F1dG9fbG9hZF9zY3JpcHRz LAotLQkgICAgXygiUHJpbnQgdGhlIGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2NyaXB0 cy5cblwKLS1Vc2FnZTogaW5mbyBhdXRvLWxvYWQtc2NyaXB0cyBbUkVHRVhQXSIpKTsKLSB9Ci0g Ci0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL3B5dGhvbi9weXRob24uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQtMTggMDA6MjY6MTQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMDQt MTggMDA6MjY6MjkuMDU0MTIwMTk5ICswMjAwCi1AQCAtMjQsOCArMjQsNiBAQAotIAotIHN0cnVj dCBicmVha3BvaW50X29iamVjdDsKLSAKLS1leHRlcm4gaW50IGdkYnB5X2dsb2JhbF9hdXRvX2xv YWQ7Ci0tCi0gZXh0ZXJuIHZvaWQgZmluaXNoX3B5dGhvbl9pbml0aWFsaXphdGlvbiAodm9pZCk7 Ci0gCi0gdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1h bmRfbGluZSAqKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTBvZjI4LnBhdGNoIGIvZ2Ri LWF1dG9sb2FkLTEwb2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzU5 Njk4Mi4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMTBvZjI4LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMTcwNCArMCwwIEBACi1bcGF0Y2gjNCA0LzhdIHNldCBhdXRvLWxvYWQgKiBtYWlu IHBhcnQKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAw MDg4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAx MTMuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo0OToxMQkxLjE0 MTEyCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1MTo0MQkxLjE0MTEzCi0j IyAtMSw1ICsxLDEwMSBAQAotIDIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KLSsJKiBO RVdTOiBOZXcgZGVzY3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAotKwkiaW5mbyBhdXRv LWxvYWQgZ2RiLXNjcmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAotKwki aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIgYW5kICJpbmZvIGF1dG8tbG9hZCBsaWJ0aHJl YWQtZGIiLgotKwlEZXByZWNhdGUgImluZm8gYXV0by1sb2FkLXNjcmlwdHMiLCAic2V0IGF1dG8t bG9hZC1zY3JpcHRzIG9ufG9mZiIKLSsJYW5kICJzaG93IGF1dG8tbG9hZC1zY3JpcHRzIi4gIE5l dyBkZXNjcmlwdGlvbiBmb3IgInNldCBhdXRvLWxvYWQiLAotKwkic2hvdyBhdXRvLWxvYWQiLCAi c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsCi0rCSJzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0 cyIsICJzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiwKLSsJInNob3cgYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzIiwgInNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIsCi0rCSJzaG93IGF1 dG8tbG9hZCBsb2NhbC1nZGJpbml0IiwgInNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBhbmQK LSsJInNob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIuCi0rCSogYXV0by1sb2FkLmM6IFJlbW92 ZSBpbmNsdWRlIHB5dGhvbi9weXRob24taW50ZXJuYWwuaC4gIEFkZCBpbmNsdWRlcwotKwlleGNl cHRpb25zLmgsIGNsaS9jbGktc2NyaXB0LmgsIGdkYmNtZC5oLCBjbGkvY2xpLWRlY29kZS5oIGFu ZAotKwljbGkvY2xpLXNldHNob3cuaC4KLSsJKEdEQl9BVVRPX0ZJTEVfTkFNRSwgc291cmNlX2dk Yl9zY3JpcHRfZm9yX29iamZpbGUpCi0rCShhdXRvX2xvYWRfZ2RiX3NjcmlwdHMsIHNob3dfYXV0 b19sb2FkX2dkYl9zY3JpcHRzKTogTmV3LgotKwkoZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCk6IFJl bmFtZSB0byAuLi4KLSsJKGdsb2JhbF9hdXRvX2xvYWQpOiAuLi4gaGVyZS4KLSsJKGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0LCBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSkKLSsJKGF1 dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCwgc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5p dCkKLSsJKHNjcmlwdF9sYW5ndWFnZV9nZGIsIHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxl KTogTmV3LgotKwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbGFuZ3VhZ2UuCi0r CShoYXNoX2xvYWRlZF9zY3JpcHRfZW50cnksIGVxX2xvYWRlZF9zY3JpcHRfZW50cnkpOiBDYWxj dWxhdGUgYWxzbwotKwlMQU5HVUFHRS4KLSsJKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1l dGVyIGxhbmd1YWdlLiAgRHJvcCByZWR1bmRhbnQKLSsJZW50cnkuZnVsbF9wYXRoIGluaXRpYWxp emF0aW9uLiAgSW5pdGlhbGl6ZSBlbnRyeS5sYW5ndWFnZSBhbmQKLSsJKCpzbG90KS0+bGFuZ3Vh Z2UuCi0rCShhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBDaGFuZ2UgcGFyYW1ldGVyIHN1ZmZp eCB0byBsYW5ndWFnZS4KLSsJUmVtb3ZlIHRoZSBjYWxsIG9mIG1heWJlX2FkZF9zY3JpcHQuCi0r CUNhbGwgbGFuZ3VhZ2UtPnNvdXJjZV9zY3JpcHRfZm9yX29iamZpbGUuCi0rCShsb2FkX2F1dG9f c2NyaXB0c19mb3Jfb2JqZmlsZSwgc3RydWN0IGNvbGxlY3RfbWF0Y2hpbmdfc2NyaXB0c19kYXRh KToKLSsJTmV3LgotKwkoY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzKTogQWRqdXN0IGl0IGZvcgot KwlzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShhdXRvX2xvYWRfaW5m b19zY3JpcHRzX3BhdHRlcm5fbmwpOiBOZXcgdmFyaWFibGUuCi0rCShpbmZvX2F1dG9fbG9hZF9z Y3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0cyk6IC4uLiBo ZXJlLCBhZGQgcGFyYW1ldGVyIGxhbmd1YWdlLiAgQWRqdXN0IGl0Ci0rCWZvciBzdHJ1Y3QgY29s bGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEuCi0rCShpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0 cywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCkKLSsJKHNldF9hdXRvX2xvYWRfY21kLCBh dXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0LCBzaG93X2F1dG9fbG9hZF9jbWQpCi0rCShhdXRvX2xv YWRfc2hvd19jbWRsaXN0X2dldCwgaW5mb19hdXRvX2xvYWRfY21kKQotKwkoYXV0b19sb2FkX2lu Zm9fY21kbGlzdF9nZXQpOiBOZXcuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBNb3ZlIGFk ZF9pbmZvIG9mICJhdXRvLWxvYWQtc2NyaXB0cyIgdG8KLSsJcHl0aG9uL3B5LWF1dG8tbG9hZC5j LiAgTmV3IGluc3RhbGxtZW50IGZvciAic2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsCi0rCSJp bmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXQi IGFuZAotKwkiaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIuCi0rCSogYXV0by1sb2FkLmgg KHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UpOiBOZXcuCi0rCShnZGJweV9nbG9iYWxfYXV0b19sb2Fk KTogUmVuYW1lIHRvIC4uLgotKwkoZ2xvYmFsX2F1dG9fbG9hZCk6IC4uLiBoZXJlLgotKwkoYXV0 b19sb2FkX2xvY2FsX2dkYmluaXQsIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X3BhdGhuYW1lKQot KwkoYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkKTogTmV3IGRlY2xhcmF0aW9ucy4KLSsJ KG1heWJlX2FkZF9zY3JpcHQpOiBOZXcgcGFyYW1ldGVyIGxhbmd1YWdlLgotKwkoYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0KTogQ2hhbmdlIHBhcmFtZXRlciBzdWZmaXggdG8gbGFuZ3VhZ2UuCi0r CShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSwgYXV0b19sb2FkX2luZm9fc2NyaXB0c19w YXR0ZXJuX25sKQotKwkoYXV0b19sb2FkX2luZm9fc2NyaXB0cywgYXV0b19sb2FkX3NldF9jbWRs aXN0X2dldCkKLSsJKGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0LCBhdXRvX2xvYWRfaW5mb19j bWRsaXN0X2dldCk6IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogbGludXgtdGhyZWFkLWRiLmM6 IEluY2x1ZGUgYXV0by1sb2FkLmggYW5kIGN0eXBlLmguCi0rCShhdXRvX2xvYWRfdGhyZWFkX2Ri LCBzaG93X2F1dG9fbG9hZF90aHJlYWRfZGIpOiBOZXcuCi0rCShzdHJ1Y3QgdGhyZWFkX2RiX2lu Zm8pOiBOZXcgZmllbGQgZmlsZW5hbWUuCi0rCShkZWxldGVfdGhyZWFkX2RiX2luZm8pOiBDYWxs IHhmcmVlIGZvciBGSUxFTkFNRS4KLSsJKHRyeV90aHJlYWRfZGJfbG9hZCk6IEluaXRpYWxpemUg RklMRU5BTUUuCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyLCB0cnlfdGhyZWFkX2Ri X2xvYWRfZnJvbV9kaXIpOiBSZXR1cm4KLSsJaWYgIUFVVE9fTE9BRF9USFJFQURfREIuCi0rCShp bmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGJfY29tcGFyZSwgaW5mb19hdXRvX2xvYWRfbGlidGhy ZWFkX2RiKTogTmV3LgotKwkoX2luaXRpYWxpemVfdGhyZWFkX2RiKTogSW5zdGFsbCBhdXRvX2xv YWRfdGhyZWFkX2RiCi0rCWFzICJzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiIgYW5kIGluc3Rh bGwgaW5mb19hdXRvX2xvYWRfbGlidGhyZWFkX2RiCi0rCWFzICJpbmZvIGF1dG8tbG9hZCBsaWJ0 aHJlYWQtZGIiLgotKwkqIG1haW4uYyAoY2FwdHVyZWRfbWFpbik6IFJlbmFtZSBnZGJweV9nbG9i YWxfYXV0b19sb2FkIHRvCi0rCWdsb2JhbF9hdXRvX2xvYWQuICBJbml0aWFsaXplIEFVVE9fTE9B RF9MT0NBTF9HREJJTklUX1BBVEhOQU1FIGFuZAotKwlBVVRPX0xPQURfTE9DQUxfR0RCSU5JVF9M T0FERUQuCi0rCShwcmludF9nZGJfaGVscCk6IEV4dGVuZCB0aGUgaGVscCBmb3IgJ2xvY2FsIGlu aXQgZmlsZScuCi0rCSogcHl0aG9uL3B5LWF1dG8tbG9hZC5jOiBSZW1vdmUgYSBjb21tZW50IGFi b3V0IGdkYiBzY3JpcHRzIGV4dGVuc2lvbi4KLSsJKEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FKTog RXh0ZW5kIHRoZSBjb21tZW50IGl0IGlzIFB5dGhvbiBzcGVjaWZpYy4KLSsJKGF1dG9fbG9hZF9z Y3JpcHRzKTogUmVuYW1lIHRvIC4uLgotKwkoYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzKTogLi4u IGhlcmUsIHVwZGF0ZSB0aGUgY29tbWVudC4KLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9y X29iamZpbGUpOiBOZXcgZGVjbGFyYXRpb24uCi0rCShzaG93X2F1dG9fbG9hZF9weXRob25fc2Ny aXB0cywgc2NyaXB0X2xhbmd1YWdlX3B5dGhvbikKLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRf Zm9yX29iamZpbGUpOiBOZXcuCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogUmVmYWN0b3Ig dGhlIGNvZGUuCi0rCShsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSk6IFJlbmFtZSB0byAu Li4KLSsJKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlKTogLi4uIGhlcmUsIHVw ZGF0ZSB0aGUKLSsJYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IGNhbGxlciwgZHJvcCBHREJQWV9H TE9CQUxfQVVUT19MT0FEIGNoZWNraW5nLgotKwkoaW5mb19hdXRvX2xvYWRfcHl0aG9uX3Njcmlw dHMpOiBOZXcuCi0rCShnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCk6IE5ldyB2YXJpYWJsZXMg Y21kIGFuZCBjbWRfbmFtZS4KLSsJUmVuYW1lICJzZXQgYXV0by1sb2FkLXNjcmlwdHMiIHRvICJz ZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIi4KLSsJUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQt c2NyaXB0cyIgYXMgaXRzIGRlcHJlY2F0ZWQgYWxpYXMuICBSZWdpc3RlcgotKwkiaW5mbyBhdXRv LWxvYWQgcHl0aG9uLXNjcmlwdHMiLiAgUmVnaXN0ZXIgImluZm8gYXV0by1sb2FkLXNjcmlwdHMi IGFzCi0rCWl0cyBkZXByZWNhdGVkIGFsaWFzLgotKwkobG9hZF9hdXRvX3NjcmlwdHNfZm9yX29i amZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2Jq ZmlsZSk6IC4uLiBoZXJlLgotKwkqIHB5dGhvbi9weXRob24uaCAobG9hZF9hdXRvX3NjcmlwdHNf Zm9yX29iamZpbGUpOiBSZW5hbWUgdG8gLi4uCi0rCShnZGJweV9sb2FkX2F1dG9fc2NyaXB0c19m b3Jfb2JqZmlsZSk6IC4uLiBoZXJlLgotKwotKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJYXV0by1sb2FkOiBNb3ZlIGZpbGVzLgot IAkqIE1ha2VmaWxlLmluIChTRklMRVMpOiBBZGQgYXV0by1sb2FkLmMuCi0gCShIRklMRVNfTk9f U1JDRElSKTogQWRkIGF1dG8tbG9hZC5oLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJ MjAxMi0wNC0xOCAwMDo0Mjo1MS4yMjY2ODEwNjggKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MDIuMDM1NzM3NjQ0ICswMjAwCi1AQCAtMjgs NiArMjgsNDUgQEAKLSAgIG5vdyBzZXQgYSBicmVha3BvaW50IGluIGJ1aWxkL2djYy9leHByLmMs IGJ1dCBub3QKLSAgIGJ1aWxkL2xpYmNwcC9leHByLmMuCi0gCi0rKiBOZXcgY29tbWFuZHMKLSsK LSsgICoqICJpbmZvIGF1dG8tbG9hZCIgc2hvd3Mgc3RhdHVzIG9mIGFsbCBraW5kcyBvZiBhdXRv LWxvYWRlZCBmaWxlcywKLSsgICAgICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIgc2hvd3Mg c3RhdHVzIG9mIGF1dG8tbG9hZGluZyBHREIgY2FubmVkCi0rICAgICBzZXF1ZW5jZXMgb2YgY29t bWFuZHMgZmlsZXMsICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIKLSsgICAgIHNob3dz IHN0YXR1cyBvZiBhdXRvLWxvYWRpbmcgUHl0aG9uIHNjcmlwdCBmaWxlcywKLSsgICAgICJpbmZv IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0IiBzaG93cyBzdGF0dXMgb2YgbG9hZGluZyBpbml0IGZp bGUKLSsgICAgICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgImluZm8gYXV0 by1sb2FkIGxpYnRocmVhZC1kYiIgc2hvd3MKLSsgICAgIHN0YXR1cyBvZiBpbmZlcmlvciBzcGVj aWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5IGxvYWRpbmcuCi0rCi0rICAqKiAi aW5mbyBhdXRvLWxvYWQtc2NyaXB0cyIsICJzZXQgYXV0by1sb2FkLXNjcmlwdHMgb258b2ZmIgot KyAgICAgYW5kICJzaG93IGF1dG8tbG9hZC1zY3JpcHRzIiBjb21tYW5kcyBoYXZlIGJlZW4gZGVw cmVjYXRlZCwgdXNlIHRoZWlyCi0rICAgICAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMi LCAic2V0IGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyBvbnxvZmYiCi0rICAgICBhbmQgInNob3cg YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiBjb3VudGVycGFydHMgaW5zdGVhZC4KLSsKLSsqIE5l dyBvcHRpb25zCi0rCi0rc2V0IGF1dG8tbG9hZCBvZmYKLSsgIERpc2FibGUgYXV0by1sb2FkaW5n IGdsb2JhbGx5LgotKwotK3Nob3cgYXV0by1sb2FkCi0rICBTaG93IGF1dG8tbG9hZGluZyBzZXR0 aW5nIG9mIGFsbCBraW5kcyBvZiBhdXRvLWxvYWRlZCBmaWxlcy4KLSsKLStzZXQgYXV0by1sb2Fk IGdkYi1zY3JpcHRzIG9ufG9mZgotK3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzCi0rICBDb250 cm9sIGF1dG8tbG9hZGluZyBvZiBHREIgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmaWxl cy4KLSsKLStzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIG9ufG9mZgotK3Nob3cgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzCi0rICBDb250cm9sIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2Ny aXB0IGZpbGVzLgotKwotK3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCBvbnxvZmYKLStzaG93 IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Ci0rICBDb250cm9sIGxvYWRpbmcgb2YgaW5pdCBmaWxl ICguZ2RiaW5pdCkgZnJvbSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStzZXQgYXV0by1sb2FkIGxp YnRocmVhZC1kYiBvbnxvZmYKLStzaG93IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIKLSsgIENvbnRy b2wgYXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIHRocmVhZCBkZWJ1Z2dpbmcgc2hh cmVkIGxpYnJhcnkuCi0rCi0gKiBOZXcgY29tbWFuZCBsaW5lIG9wdGlvbnMKLSAKLSAtLWluaXQt Y29tbWFuZD1GSUxFLCAtaXggICAgICAgICAgTGlrZSAtLWNvbW1hbmQsIC14IGJ1dCBleGVjdXRl IGl0Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5jCTIwMTItMDQt MTggMDA6NDQ6MjYuOTUwNDM3NTIwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv YXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTYwNzk3ODAgKzAyMDAKLUBAIC0yNywx OSArMjcsOTIgQEAKLSAjaW5jbHVkZSAiY29tbWFuZC5oIgotICNpbmNsdWRlICJvYnNlcnZlci5o IgotICNpbmNsdWRlICJvYmpmaWxlcy5oIgotLSNpbmNsdWRlICJweXRob24vcHl0aG9uLWludGVy bmFsLmgiCi0rI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAiY2xpL2NsaS1zY3Jp cHQuaCIKLSsjaW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgi Ci0rI2luY2x1ZGUgImNsaS9jbGktc2V0c2hvdy5oIgotKwotKy8qIFRoZSBzdWZmaXggb2YgcGVy LW9iamZpbGUgc2NyaXB0cyB0byBhdXRvLWxvYWQgYXMgbm9uLVB5dGhvbiBjb21tYW5kIGZpbGVz LgotKyAgIEUuZy4gV2hlbiB0aGUgcHJvZ3JhbSBsb2FkcyBsaWJmb28uc28sIGxvb2sgZm9yIGxp YmZvby1nZGIuZ2RiLiAgKi8KLSsjZGVmaW5lIEdEQl9BVVRPX0ZJTEVfTkFNRSAiLWdkYi5nZGIi Ci0rCi0rc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotKwkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5h bWUpOwotKwotKy8qIFVzZXItc2V0dGFibGUgb3B0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGF1dG8t bG9hZGluZyBvZiBHREJfQVVUT19GSUxFX05BTUUKLSsgICBzY3JpcHRzOgotKyAgIHNldCBhdXRv LWxvYWQgZ2RiLXNjcmlwdHMgb258b2ZmCi0rICAgVGhpcyBpcyB0cnVlIGlmIHdlIHNob3VsZCBh dXRvLWxvYWQgYXNzb2NpYXRlZCBzY3JpcHRzIHdoZW4gYW4gb2JqZmlsZQotKyAgIGlzIG9wZW5l ZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9hZF9nZGJfc2NyaXB0 cyA9IDE7Ci0rCi0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfZ2RiX3Njcmlw dHMgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaG93X2F1 dG9fbG9hZF9nZGJfc2NyaXB0cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwK LSsJCQkgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQot K3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZGluZyBvZiBjYW5uZWQg c2VxdWVuY2VzIG9mIGNvbW1hbmRzICIKLSsJCQkgICAgInNjcmlwdHMgaXMgJXMuXG4iKSwKLSsJ CSAgICB2YWx1ZSk7Ci0rfQotIAotIC8qIEludGVybmFsLXVzZSBmbGFnIHRvIGVuYWJsZS9kaXNh YmxlIGF1dG8tbG9hZGluZy4KLSAgICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9h ZCBweXRob24gY29kZSB3aGVuIGFuIG9iamZpbGUgaXMgb3BlbmVkLAotICAgIGZhbHNlIG90aGVy d2lzZS4KLSAKLS0gICBCb3RoIGF1dG9fbG9hZF9zY3JpcHRzICYmIGdkYnB5X2dsb2JhbF9hdXRv X2xvYWQgbXVzdCBiZSB0cnVlIHRvIGVuYWJsZQotKyAgIEJvdGggYXV0b19sb2FkX3NjcmlwdHMg JiYgZ2xvYmFsX2F1dG9fbG9hZCBtdXN0IGJlIHRydWUgdG8gZW5hYmxlCi0gICAgYXV0by1sb2Fk aW5nLgotIAotICAgIFRoaXMgZmxhZyBleGlzdHMgdG8gZmFjaWxpdGF0ZSBkZWZlcnJpbmcgYXV0 by1sb2FkaW5nIGR1cmluZyBzdGFydC11cAotICAgIHVudGlsIGFmdGVyIC4vLmdkYmluaXQgaGFz IGJlZW4gcmVhZDsgaXQgbWF5IGF1Z21lbnQgdGhlIHNlYXJjaCBkaXJlY3RvcmllcwotICAgIHVz ZWQgdG8gZmluZCB0aGUgc2NyaXB0cy4gICovCi0taW50IGdkYnB5X2dsb2JhbF9hdXRvX2xvYWQg PSAxOwotK2ludCBnbG9iYWxfYXV0b19sb2FkID0gMTsKLSsKLSsvKiBBdXRvLWxvYWQgLmdkYmlu aXQgZmlsZSBmcm9tIHRoZSBjdXJyZW50IGRpcmVjdG9yeT8gICovCi0raW50IGF1dG9fbG9hZF9s b2NhbF9nZGJpbml0ID0gMTsKLSsKLSsvKiBBYnNvbHV0ZSBwYXRobmFtZSB0byB0aGUgY3VycmVu dCBkaXJlY3RvcnkgLmdkYmluaXQsIGlmIGl0IGV4aXN0cy4gICovCi0rY2hhciAqYXV0b19sb2Fk X2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBOVUxMOwotKwotKy8qIEJvb2xlYW4gdmFsdWUgaWYg QVVUT19MT0FEX0xPQ0FMX0dEQklOSVRfUEFUSE5BTUUgaGFzIGJlZW4gbG9hZGVkLiAgKi8KLStp bnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGVkID0gMDsKLSsKLSsvKiAic2hvdyIgY29t bWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0IGNvbmZpZ3VyYXRpb24gdmFyaWFi bGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAo c3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgICAgICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0 ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJl bnQgIgotKwkJCSAgICAiZGlyZWN0b3J5IGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30K LSsKLSsvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5ndWFnZSBmb3IgR0RCIGNhbm5lZCBzZXF1 ZW5jZXMgb2YgY29tbWFuZHMuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9nZGIKLSsgID0geyBHREJfQVVUT19GSUxFX05BTUUsIHNv dXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIH07Ci0rCi0rc3RhdGljIHZvaWQKLStzb3VyY2Vf Z2RiX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZp bGUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK3sKLSsgIHN0cnVjdCBhdXRv X2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9l eGNlcHRpb24gZTsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0 b28gc28gImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIgotKyAgICAgY2FuIHByaW50IGl0LiAg Ki8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGlu ZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9p bmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsKLSsKLSsgIFRS WV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgc2NyaXB0X2Zyb21f ZmlsZSAoZmlsZSwgZmlsZW5hbWUpOwotKyAgICB9Ci0rICBleGNlcHRpb25fcHJpbnQgKGdkYl9z dGRlcnIsIGUpOwotK30KLSAKLSAvKiBGb3Igc2NyaXB0cyBzcGVjaWZpZWQgaW4gLmRlYnVnX2dk Yl9zY3JpcHRzLCBtdWx0aXBsZSBvYmpmaWxlcyBtYXkgbG9hZAotICAgIHRoZSBzYW1lIHNjcmlw dC4gIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gbG9hZGluZyB0aGUgc2NyaXB0IG11bHRpcGxlIHRpbWVz LAotQEAgLTYyLDkgKzEzNSwxMiBAQCBzdHJ1Y3QgbG9hZGVkX3NjcmlwdAotIHsKLSAgIC8qIE5h bWUgYXMgcHJvdmlkZWQgYnkgdGhlIG9iamZpbGUuICAqLwotICAgY29uc3QgY2hhciAqbmFtZTsK LSsKLSAgIC8qIEZ1bGwgcGF0aCBuYW1lIG9yIE5VTEwgaWYgc2NyaXB0IHdhc24ndCBmb3VuZCAo b3Igd2FzIG90aGVyd2lzZQotICAgICAgaW5hY2Nlc3NpYmxlKS4gICovCi0gICBjb25zdCBjaGFy ICpmdWxsX3BhdGg7Ci0rCi0rICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFn ZTsKLSB9OwotIAotIC8qIFBlci1wcm9ncmFtLXNwYWNlIGRhdGEga2V5LiAgKi8KLUBAIC0xMDks NyArMTg1LDcgQEAgaGFzaF9sb2FkZWRfc2NyaXB0X2VudHJ5IChjb25zdCB2b2lkICpkYQotIHsK LSAgIGNvbnN0IHN0cnVjdCBsb2FkZWRfc2NyaXB0ICplID0gZGF0YTsKLSAKLS0gIHJldHVybiBo dGFiX2hhc2hfc3RyaW5nIChlLT5uYW1lKTsKLSsgIHJldHVybiBodGFiX2hhc2hfc3RyaW5nIChl LT5uYW1lKSBeIGh0YWJfaGFzaF9wb2ludGVyIChlLT5sYW5ndWFnZSk7Ci0gfQotIAotIC8qIEVx dWFsaXR5IGZ1bmN0aW9uIGZvciB0aGUgbG9hZGVkIHNjcmlwdCBoYXNoLiAgKi8KLUBAIC0xMjAs NyArMTk2LDcgQEAgZXFfbG9hZGVkX3NjcmlwdF9lbnRyeSAoY29uc3Qgdm9pZCAqYSwgYwotICAg Y29uc3Qgc3RydWN0IGxvYWRlZF9zY3JpcHQgKmVhID0gYTsKLSAgIGNvbnN0IHN0cnVjdCBsb2Fk ZWRfc2NyaXB0ICplYiA9IGI7Ci0gCi0tICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5h bWUpID09IDA7Ci0rICByZXR1cm4gc3RyY21wIChlYS0+bmFtZSwgZWItPm5hbWUpID09IDAgJiYg ZWEtPmxhbmd1YWdlID09IGViLT5sYW5ndWFnZTsKLSB9Ci0gCi0gLyogSW5pdGlhbGl6ZSB0aGUg dGFibGUgdG8gdHJhY2sgbG9hZGVkIHNjcmlwdHMuCi1AQCAtMTU2LDIwICsyMzIsMjEgQEAgZ2V0 X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9hZGluZyAocwotICAgcmV0dXJuIGluZm87Ci0g fQotIAotLS8qIEFkZCBzY3JpcHQgTkFNRSB0byBoYXNoIHRhYmxlIG9mIFBTUEFDRV9JTkZPLgot LSAgIEZVTExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLgotLSAgIFRo ZSByZXN1bHQgaXMgdHJ1ZSBpZiB0aGUgc2NyaXB0IHdhcyBhbHJlYWR5IGluIHRoZSBoYXNoIHRh YmxlLiAgKi8KLSsvKiBBZGQgc2NyaXB0IE5BTUUgaW4gTEFOR1VBR0UgdG8gaGFzaCB0YWJsZSBv ZiBQU1BBQ0VfSU5GTy4KLSsgICBGVUxMX1BBVEggaXMgTlVMTCBpZiB0aGUgc2NyaXB0IHdhc24n dCBmb3VuZC4gIFRoZSByZXN1bHQgaXMKLSsgICB0cnVlIGlmIHRoZSBzY3JpcHQgd2FzIGFscmVh ZHkgaW4gdGhlIGhhc2ggdGFibGUuICAqLwotIAotIGludAotLW1heWJlX2FkZF9zY3JpcHQgKHN0 cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvLCBjb25zdCBjaGFyICpuYW1l LAotLQkJICBjb25zdCBjaGFyICpmdWxsX3BhdGgpCi0rbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0 IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sCi0rCQkgIGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSsJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSAqbGFuZ3VhZ2UpCi0gewotICAgc3RydWN0IGh0YWIgKmh0YWIgPSBwc3BhY2VfaW5mby0+ bG9hZGVkX3NjcmlwdHM7Ci0gICBzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqKnNsb3QsIGVudHJ5Owot ICAgaW50IGluX2hhc2hfdGFibGU7Ci0gCi0gICBlbnRyeS5uYW1lID0gbmFtZTsKLS0gIGVudHJ5 LmZ1bGxfcGF0aCA9IGZ1bGxfcGF0aDsKLSsgIGVudHJ5Lmxhbmd1YWdlID0gbGFuZ3VhZ2U7Ci0g ICBzbG90ID0gKHN0cnVjdCBsb2FkZWRfc2NyaXB0ICoqKSBodGFiX2ZpbmRfc2xvdCAoaHRhYiwg JmVudHJ5LCBJTlNFUlQpOwotICAgaW5faGFzaF90YWJsZSA9ICpzbG90ICE9IE5VTEw7Ci0gCi1A QCAtMTk0LDYgKzI3MSw3IEBAIG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNw YWMKLSAJfQotICAgICAgIGVsc2UKLSAJKCpzbG90KS0+ZnVsbF9wYXRoID0gTlVMTDsKLSsgICAg ICAoKnNsb3QpLT5sYW5ndWFnZSA9IGxhbmd1YWdlOwotICAgICB9Ci0gCi0gICByZXR1cm4gaW5f aGFzaF90YWJsZTsKLUBAIC0yMTYsMTAgKzI5NCwxMiBAQCBjbGVhcl9zZWN0aW9uX3NjcmlwdHMg KHZvaWQpCi0gICAgIH0KLSB9Ci0gCi0tLyogTG9vayBmb3IgdGhlIGF1dG8tbG9hZCBzY3JpcHQg YXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUgYW5kIGxvYWQgaXQuICAqLwotKy8qIExvb2sgZm9yIHRo ZSBhdXRvLWxvYWQgc2NyaXB0IGluIExBTkdVQUdFIGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFIGFu ZCBsb2FkCi0rICAgaXQuICAqLwotIAotIHZvaWQKLS1hdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzdWZmaXgpCi0rYXV0b19sb2Fk X29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgIGNvbnN0IHN0 cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKQotIHsKLSAgIGNoYXIgKnJlYWxuYW1lOwot ICAgY2hhciAqZmlsZW5hbWUsICpkZWJ1Z2ZpbGU7Ci1AQCAtMjI5LDkgKzMwOSw5IEBAIGF1dG9f bG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAgIHJlYWxuYW1lID0gZ2Ri X3JlYWxwYXRoIChvYmpmaWxlLT5uYW1lKTsKLSAgIGxlbiA9IHN0cmxlbiAocmVhbG5hbWUpOwot LSAgZmlsZW5hbWUgPSB4bWFsbG9jIChsZW4gKyBzdHJsZW4gKHN1ZmZpeCkgKyAxKTsKLSsgIGZp bGVuYW1lID0geG1hbGxvYyAobGVuICsgc3RybGVuIChsYW5ndWFnZS0+c3VmZml4KSArIDEpOwot ICAgbWVtY3B5IChmaWxlbmFtZSwgcmVhbG5hbWUsIGxlbik7Ci0tICBzdHJjcHkgKGZpbGVuYW1l ICsgbGVuLCBzdWZmaXgpOwotKyAgc3RyY3B5IChmaWxlbmFtZSArIGxlbiwgbGFuZ3VhZ2UtPnN1 ZmZpeCk7Ci0gCi0gICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGZpbGVuYW1lKTsK LSAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHJlYWxuYW1lKTsKLUBAIC0yNjksMjcgKzM0OSwzMyBA QCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gICBpZiAoaW5w dXQpCi0gICAgIHsKLS0gICAgICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2Vf aW5mbzsKLS0KLSAgICAgICBtYWtlX2NsZWFudXBfZmNsb3NlIChpbnB1dCk7Ci0gCi0tICAgICAg LyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBoYXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxv YWQtc2NyaXB0cyIKLS0JIGNhbiBwcmludCBpdC4gICovCi0tICAgICAgcHNwYWNlX2luZm8gPQot LQlnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1f c3BhY2UpOwotLSAgICAgIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBkZWJ1Z2ZpbGUs IGRlYnVnZmlsZSk7Ci0tCi0gICAgICAgLyogVG8gcHJlc2VydmUgZXhpc3RpbmcgYmVoYXZpb3Vy IHdlIGRvbid0IGNoZWNrIGZvciB3aGV0aGVyIHRoZQotIAkgc2NyaXB0IHdhcyBhbHJlYWR5IGlu IHRoZSB0YWJsZSwgYW5kIGFsd2F5cyBsb2FkIGl0LgotIAkgSXQncyBoaWdobHkgdW5saWtlbHkg dGhhdCB3ZSdkIGV2ZXIgbG9hZCBpdCB0d2ljZSwKLSAJIGFuZCB0aGVzZSBzY3JpcHRzIGFyZSBy ZXF1aXJlZCB0byBiZSBpZGVtcG90ZW50IHVuZGVyIG11bHRpcGxlCi0gCSBsb2FkcyBhbnl3YXku ICAqLwotLSAgICAgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBp bnB1dCwgZGVidWdmaWxlKTsKLSsgICAgICBsYW5ndWFnZS0+c291cmNlX3NjcmlwdF9mb3Jfb2Jq ZmlsZSAob2JqZmlsZSwgaW5wdXQsIGRlYnVnZmlsZSk7Ci0gICAgIH0KLSAKLSAgIGRvX2NsZWFu dXBzIChjbGVhbnVwcyk7Ci0gfQotIAotKy8qIExvYWQgYW55IGF1dG8tbG9hZGVkIHNjcmlwdHMg Zm9yIE9CSkZJTEUuICAqLwotKwotK3ZvaWQKLStsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaWYgKCFnbG9iYWxfYXV0b19sb2Fk KQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoYXV0b19sb2FkX2dkYl9zY3JpcHRzKQotKyAgICBh dXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKG9iamZpbGUsICZzY3JpcHRfbGFuZ3VhZ2VfZ2RiKTsK LSsKLSsgIGdkYnB5X2xvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpmaWxlIChvYmpmaWxlKTsKLSt9 Ci0rCi0gLyogVGhpcyBpcyBhIG5ld19vYmpmaWxlIG9ic2VydmVyIGNhbGxiYWNrIHRvIGF1dG8t bG9hZCBzY3JpcHRzLgotIAotICAgIFR3byBmbGF2b3JzIG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMg YXJlIHN1cHBvcnRlZC4KLUBAIC0zMTQsNiArNDAwLDEzIEBAIGF1dG9fbG9hZF9uZXdfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm8KLSB0eXBlZGVmIHN0cnVjdCBsb2FkZWRfc2NyaXB0ICpsb2Fk ZWRfc2NyaXB0X3B0cjsKLSBERUZfVkVDX1AgKGxvYWRlZF9zY3JpcHRfcHRyKTsKLSAKLStzdHJ1 Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEKLSt7Ci0rICBWRUMgKGxvYWRlZF9zY3Jp cHRfcHRyKSAqKnNjcmlwdHNfcDsKLSsKLSsgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2Ug Kmxhbmd1YWdlOwotK307Ci0rCi0gLyogVHJhdmVyc2FsIGZ1bmN0aW9uIGZvciBodGFiX3RyYXZl cnNlLgotICAgIENvbGxlY3QgdGhlIGVudHJ5IGlmIGl0IG1hdGNoZXMgdGhlIHJlZ2V4cC4gICov Ci0gCi1AQCAtMzIxLDEwICs0MTQsMTAgQEAgc3RhdGljIGludAotIGNvbGxlY3RfbWF0Y2hpbmdf c2NyaXB0cyAodm9pZCAqKnNsb3QsIHZvaWQgKmluZm8pCi0gewotICAgc3RydWN0IGxvYWRlZF9z Y3JpcHQgKnNjcmlwdCA9ICpzbG90OwotLSAgVkVDIChsb2FkZWRfc2NyaXB0X3B0cikgKipzY3Jp cHRzX3B0ciA9IGluZm87Ci0rICBzdHJ1Y3QgY29sbGVjdF9tYXRjaGluZ19zY3JpcHRzX2RhdGEg KmRhdGEgPSBpbmZvOwotIAotLSAgaWYgKHJlX2V4ZWMgKHNjcmlwdC0+bmFtZSkpCi0tICAgIFZF Q19zYWZlX3B1c2ggKGxvYWRlZF9zY3JpcHRfcHRyLCAqc2NyaXB0c19wdHIsIHNjcmlwdCk7Ci0r ICBpZiAoc2NyaXB0LT5sYW5ndWFnZSA9PSBkYXRhLT5sYW5ndWFnZSAmJiByZV9leGVjIChzY3Jp cHQtPm5hbWUpKQotKyAgICBWRUNfc2FmZV9wdXNoIChsb2FkZWRfc2NyaXB0X3B0ciwgKmRhdGEt PnNjcmlwdHNfcCwgc2NyaXB0KTsKLSAKLSAgIHJldHVybiAxOwotIH0KLUBAIC0zNjYsMTAgKzQ1 OSwxOCBAQCBzb3J0X3NjcmlwdHNfYnlfbmFtZSAoY29uc3Qgdm9pZCAqYXAsIGNvCi0gICByZXR1 cm4gRklMRU5BTUVfQ01QIChhLT5uYW1lLCBiLT5uYW1lKTsKLSB9Ci0gCi0tLyogImluZm8gYXV0 by1sb2FkLXNjcmlwdHMiIGNvbW1hbmQuICAqLwotKy8qIFNwZWNpYWwgaW50ZXJuYWwgR0RCIHZh bHVlIG9mIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMncyBQQVRURVJOIGlkZW50aWZ5Ci0rICAgdGhl ICJpbmZvIGF1dG8tbG9hZCBYWFgiIGNvbW1hbmQgaGFzIGJlZW4gZXhlY3V0ZWQgdGhyb3VnaCB0 aGUgZ2VuZXJhbAotKyAgICJpbmZvIGF1dG8tbG9hZCIgaW52b2NhdGlvbi4gIEV4dHJhIG5ld2xp bmUgd2lsbCBiZSBwcmludGVkIGlmIG5lZWRlZC4gICovCi0rY2hhciBhdXRvX2xvYWRfaW5mb19z Y3JpcHRzX3BhdHRlcm5fbmxbXSA9ICIiOwotKwotKy8qIEltcGxlbWVudGF0aW9uIGZvciAiaW5m byBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCi0rICAgKGFuZCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiKS4gIExpc3Qgc2NyaXB0cyBpbiBMQU5HVUFHRSBtYXRjaGluZwotKyAgIFBBVFRF Uk4uICBGUk9NX1RUWSBpcyB0aGUgdXN1YWwgR0RCIGJvb2xlYW4gZm9yIHVzZXIgaW50ZXJhY3Rp dml0eS4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1pbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFy ICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rdm9pZAotK2F1dG9fbG9hZF9pbmZvX3NjcmlwdHMg KGNoYXIgKnBhdHRlcm4sIGludCBmcm9tX3R0eSwKLSsJCQljb25zdCBzdHJ1Y3Qgc2NyaXB0X2xh bmd1YWdlICpsYW5ndWFnZSkKLSB7Ci0gICBzdHJ1Y3QgdWlfb3V0ICp1aW91dCA9IGN1cnJlbnRf dWlvdXQ7Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLUBA IC00MDIsMTQgKzUwMywyMiBAQCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJu LCBpCi0gCi0gICBpZiAocHNwYWNlX2luZm8gIT0gTlVMTCAmJiBwc3BhY2VfaW5mby0+bG9hZGVk X3NjcmlwdHMgIT0gTlVMTCkKLSAgICAgewotKyAgICAgIHN0cnVjdCBjb2xsZWN0X21hdGNoaW5n X3NjcmlwdHNfZGF0YSBkYXRhID0geyAmc2NyaXB0cywgbGFuZ3VhZ2UgfTsKLSsKLSAgICAgICBp bW1lZGlhdGVfcXVpdCsrOwotICAgICAgIC8qIFBhc3MgYSBwb2ludGVyIHRvIHNjcmlwdHMgYXMg VkVDX3NhZmVfcHVzaCBjYW4gcmVhbGxvYyBzcGFjZS4gICovCi0gICAgICAgaHRhYl90cmF2ZXJz ZV9ub3Jlc2l6ZSAocHNwYWNlX2luZm8tPmxvYWRlZF9zY3JpcHRzLAotLQkJCSAgICAgIGNvbGxl Y3RfbWF0Y2hpbmdfc2NyaXB0cywgJnNjcmlwdHMpOwotKwkJCSAgICAgIGNvbGxlY3RfbWF0Y2hp bmdfc2NyaXB0cywgJmRhdGEpOwotICAgICAgIGltbWVkaWF0ZV9xdWl0LS07Ci0gICAgIH0KLSAK LSAgIG5yX3NjcmlwdHMgPSBWRUNfbGVuZ3RoIChsb2FkZWRfc2NyaXB0X3B0ciwgc2NyaXB0cyk7 Ci0rCi0rICAvKiBUYWJsZSBoZWFkZXIgc2hpZnRlZCByaWdodCBieSBwcmVjZWRpbmcgImdkYi1z Y3JpcHRzOiAgIiB3b3VsZCBub3QgbWF0Y2gKLSsgICAgIGl0cyBjb2x1bW5zLiAgKi8KLSsgIGlm IChucl9zY3JpcHRzID4gMCAmJiBwYXR0ZXJuID09IGF1dG9fbG9hZF9pbmZvX3NjcmlwdHNfcGF0 dGVybl9ubCkKLSsgICAgdWlfb3V0X3RleHQgKHVpb3V0LCAiXG4iKTsKLSsKLSAgIG1ha2VfY2xl YW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMiwgbnJfc2NyaXB0cywKLSAJCQkJ ICAgICAgICJBdXRvTG9hZGVkU2NyaXB0c1RhYmxlIik7Ci0gCi1AQCAtNDQxLDYgKzU1MCwyOSBA QCBpbmZvX2F1dG9fbG9hZF9zY3JpcHRzIChjaGFyICpwYXR0ZXJuLCBpCi0gICAgIH0KLSB9Ci0g Ci0rLyogV3JhcHBlciBmb3IgImluZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzIi4gICovCi0rCi0r c3RhdGljIHZvaWQKLStpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cyAoY2hhciAqcGF0dGVybiwg aW50IGZyb21fdHR5KQotK3sKLSsgIGF1dG9fbG9hZF9pbmZvX3NjcmlwdHMgKHBhdHRlcm4sIGZy b21fdHR5LCAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rfQotKwotKy8qIEltcGxlbWVudCAnaW5m byBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCcuICAqLwotKwotK3N0YXRpYyB2b2lkCi0raW5mb19h dXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsg IGlmIChhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9wYXRobmFtZSA9PSBOVUxMKQotKyAgICBwcmlu dGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgd2FzIG5vdCBmb3VuZC5cbiIpKTsK LSsgIGVsc2UgaWYgKGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZCkKLSsgICAgcHJpbnRm X2ZpbHRlcmVkIChfKCJMb2NhbCAuZ2RiaW5pdCBmaWxlIFwiJXNcIiBoYXMgYmVlbiBsb2FkZWQu XG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUpOwotKyAgZWxz ZQotKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIkxvY2FsIC5nZGJpbml0IGZpbGUgXCIlc1wiIGhh cyBub3QgYmVlbiBsb2FkZWQuXG4iKSwKLSsJCSAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRf cGF0aG5hbWUpOwotK30KLSsKLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgU0NSSVBUX05PVF9GT1VO RF9XQVJOSU5HX1BSSU5URUQgb2YgUFNQQUNFX0lORk8gd2FzIHVuc2V0Ci0gICAgYmVmb3JlIGNh bGxpbmcgdGhpcyBmdW5jdGlvbi4gIEFsd2F5cyBzZXQgU0NSSVBUX05PVF9GT1VORF9XQVJOSU5H X1BSSU5URUQKLSAgICBvZiBQU1BBQ0VfSU5GTy4gICovCi1AQCAtNDU1LDYgKzU4NywxMzIgQEAg c2NyaXB0X25vdF9mb3VuZF93YXJuaW5nX3ByaW50IChzdHJ1Y3QgYQotICAgcmV0dXJuIHJldHZh bDsKLSB9Ci0gCi0rLyogVGhlIG9ubHkgdmFsaWQgInNldCBhdXRvLWxvYWQiIGFyZ3VtZW50IGlz IG9mZnwwfG5vfGRpc2FibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2V0X2F1dG9fbG9hZF9j bWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqbGlzdDsKLSsgIHNpemVfdCBsZW5ndGg7Ci0rCi0rICAvKiBTZWUgcGFyc2VfYmluYXJ5 X29wZXJhdGlvbiBpbiB1c2UgYnkgdGhlIHN1Yi1jb21tYW5kcy4gICovCi0rCi0rICBsZW5ndGgg PSBhcmdzID8gc3RybGVuIChhcmdzKSA6IDA7Ci0rCi0rICB3aGlsZSAobGVuZ3RoID4gMCAmJiAo YXJnc1tsZW5ndGggLSAxXSA9PSAnICcgfHwgYXJnc1tsZW5ndGggLSAxXSA9PSAnXHQnKSkKLSsg ICAgbGVuZ3RoLS07Ci0rCi0rICBpZiAobGVuZ3RoID09IDAgfHwgKHN0cm5jbXAgKGFyZ3MsICJv ZmYiLCBsZW5ndGgpICE9IDAKLSsJCSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICIwIiwgbGVuZ3Ro KSAhPSAwCi0rCQkgICAgICAmJiBzdHJuY21wIChhcmdzLCAibm8iLCBsZW5ndGgpICE9IDAKLSsJ CSAgICAgICYmIHN0cm5jbXAgKGFyZ3MsICJkaXNhYmxlIiwgbGVuZ3RoKSAhPSAwKSkKLSsgICAg ZXJyb3IgKF8oIlZhbGlkIGlzIG9ubHkgZ2xvYmFsICdzZXQgYXV0by1sb2FkIG5vJzsgIgotKwkg ICAgICJvdGhlcndpc2UgY2hlY2sgdGhlIGF1dG8tbG9hZCBzdWItY29tbWFuZHMuIikpOwotKwot KyAgZm9yIChsaXN0ID0gKmF1dG9fbG9hZF9zZXRfY21kbGlzdF9nZXQgKCk7IGxpc3QgIT0gTlVM TDsgbGlzdCA9IGxpc3QtPm5leHQpCi0rICAgIGlmIChsaXN0LT52YXJfdHlwZSA9PSB2YXJfYm9v bGVhbikKLSsgICAgICB7Ci0rCWdkYl9hc3NlcnQgKGxpc3QtPnR5cGUgPT0gc2V0X2NtZCk7Ci0r CWRvX3NldHNob3dfY29tbWFuZCAoYXJncywgZnJvbV90dHksIGxpc3QpOwotKyAgICAgIH0KLSt9 Ci0rCi0rLyogSW5pdGlhbGl6ZSAic2V0IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQg cmV0dXJuIGl0LiAgKi8KLSsKLStzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9h ZF9zZXRfY21kbGlzdF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpyZXR2YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0rICAgIGFkZF9wcmVm aXhfY21kICgiYXV0by1sb2FkIiwgY2xhc3NfbWFpbnRlbmFuY2UsIHNldF9hdXRvX2xvYWRfY21k LCBfKCJcCi0rQXV0by1sb2FkaW5nIHNwZWNpZmljIHNldHRpbmdzLlxuXAotK0NvbmZpZ3VyZSB2 YXJpb3VzIGF1dG8tbG9hZC1zcGVjaWZpYyB2YXJpYWJsZXMgc3VjaCBhc1xuXAotK2F1dG9tYXRp YyBsb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzLiIpLAotKwkJICAgICZyZXR2YWwsICJzZXQgYXV0 by1sb2FkICIsCi0rCQkgICAgMS8qYWxsb3ctdW5rbm93biovLCAmc2V0bGlzdCk7Ci0rCi0rICBy ZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAic2hvdyBhdXRvLWxvYWQiIGRpc3Bs YXlzIHN1bW1hcnkgb2YgYWxsIHRoZSBjdXJyZW50Ci0rICAgInNob3cgYXV0by1sb2FkICIgc2V0 dGluZ3MuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfY21kIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgY21kX3Nob3dfbGlzdCAoKmF1dG9fbG9hZF9zaG93 X2NtZGxpc3RfZ2V0ICgpLCBmcm9tX3R0eSwgIiIpOwotK30KLSsKLSsvKiBJbml0aWFsaXplICJz aG93IGF1dG8tbG9hZCAiIGNvbW1hbmRzIHByZWZpeCBhbmQgcmV0dXJuIGl0LiAgKi8KLSsKLStz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKgotK2F1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICh2 b2lkKQotK3sKLSsgIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqcmV0dmFsOwotKwot KyAgaWYgKHJldHZhbCA9PSBOVUxMKQotKyAgICBhZGRfcHJlZml4X2NtZCAoImF1dG8tbG9hZCIs IGNsYXNzX21haW50ZW5hbmNlLCBzaG93X2F1dG9fbG9hZF9jbWQsIF8oIlwKLStTaG93IGF1dG8t bG9hZGluZyBzcGVjaWZpYyBzZXR0aW5ncy5cblwKLStTaG93IGNvbmZpZ3VyYXRpb24gb2YgdmFy aW91cyBhdXRvLWxvYWQtc3BlY2lmaWMgdmFyaWFibGVzIHN1Y2ggYXNcblwKLSthdXRvbWF0aWMg bG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4iKSwKLSsJCSAgICAmcmV0dmFsLCAic2hvdyBhdXRv LWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZzaG93bGlzdCk7Ci0rCi0rICBy ZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0rLyogQ29tbWFuZCAiaW5mbyBhdXRvLWxvYWQiIGRpc3Bs YXlzIHdoZXRoZXIgdGhlIHZhcmlvdXMgYXV0by1sb2FkIGZpbGVzIGhhdmUKLSsgICBiZWVuIGxv YWRlZC4gIFRoaXMgaXMgcmVpbXBsZW1lbnRhdGlvbiBvZiBjbWRfc2hvd19saXN0IHdoaWNoIGlu c2VydHMKLSsgICBuZXdsaW5lcyBhdCBwcm9wZXIgcGxhY2VzLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK2luZm9fYXV0b19sb2FkX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sKLSsg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpsaXN0OwotKyAgc3RydWN0IGNsZWFudXAgKmluZm9s aXN0X2NoYWluOwotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKwot KyAgaW5mb2xpc3RfY2hhaW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAo dWlvdXQsICJpbmZvbGlzdCIpOwotKwotKyAgZm9yIChsaXN0ID0gKmF1dG9fbG9hZF9pbmZvX2Nt ZGxpc3RfZ2V0ICgpOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBsaXN0LT5uZXh0KQotKyAgICB7Ci0r ICAgICAgc3RydWN0IGNsZWFudXAgKm9wdGlvbl9jaGFpbgotKwk9IG1ha2VfY2xlYW51cF91aV9v dXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgIm9wdGlvbiIpOwotKwotKyAgICAgIGdkYl9hc3Nl cnQgKCFsaXN0LT5wcmVmaXhsaXN0KTsKLSsgICAgICBnZGJfYXNzZXJ0IChsaXN0LT50eXBlID09 IG5vdF9zZXRfY21kKTsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgIm5h bWUiLCBsaXN0LT5uYW1lKTsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICI6ICAiKTsKLSsg ICAgICBjbWRfZnVuYyAobGlzdCwgYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJuX25sLCBm cm9tX3R0eSk7Ci0rCi0rICAgICAgLyogQ2xvc2UgdGhlIHR1cGxlLiAgKi8KLSsgICAgICBkb19j bGVhbnVwcyAob3B0aW9uX2NoYWluKTsKLSsgICAgfQotKwotKyAgLyogQ2xvc2UgdGhlIHR1cGxl LiAgKi8KLSsgIGRvX2NsZWFudXBzIChpbmZvbGlzdF9jaGFpbik7Ci0rfQotKwotKy8qIEluaXRp YWxpemUgImluZm8gYXV0by1sb2FkICIgY29tbWFuZHMgcHJlZml4IGFuZCByZXR1cm4gaXQuICAq LwotKwotK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqCi0rYXV0b19sb2FkX2luZm9fY21kbGlz dF9nZXQgKHZvaWQpCi0rewotKyAgc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpyZXR2 YWw7Ci0rCi0rICBpZiAocmV0dmFsID09IE5VTEwpCi0rICAgIGFkZF9wcmVmaXhfY21kICgiYXV0 by1sb2FkIiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfY21kLCBfKCJcCi0rUHJpbnQgY3Vy cmVudCBzdGF0dXMgb2YgYXV0by1sb2FkZWQgZmlsZXMuXG5cCi0rUHJpbnQgd2hldGhlciB2YXJp b3VzIGZpbGVzIGxpa2UgUHl0aG9uIHNjcmlwdHMgb3IgLmdkYmluaXQgZmlsZXMgaGF2ZSBiZWVu XG5cCi0rZm91bmQgYW5kL29yIGxvYWRlZC4iKSwKLSsJCSAgICAmcmV0dmFsLCAiaW5mbyBhdXRv LWxvYWQgIiwKLSsJCSAgICAwLyphbGxvdy11bmtub3duKi8sICZpbmZvbGlzdCk7Ci0rCi0rICBy ZXR1cm4gJnJldHZhbDsKLSt9Ci0rCi0gdm9pZCBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQp OwotIAotIHZvaWQKLUBAIC00NjUsOCArNzIzLDM4IEBAIF9pbml0aWFsaXplX2F1dG9fbG9hZCAo dm9pZCkKLSAKLSAgIG9ic2VydmVyX2F0dGFjaF9uZXdfb2JqZmlsZSAoYXV0b19sb2FkX25ld19v YmpmaWxlKTsKLSAKLS0gIGFkZF9pbmZvICgiYXV0by1sb2FkLXNjcmlwdHMiLAotLQkgICAgaW5m b19hdXRvX2xvYWRfc2NyaXB0cywKLS0JICAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGF1dG9tYXRp Y2FsbHkgbG9hZGVkIHNjcmlwdHMuXG5cCi0tVXNhZ2U6IGluZm8gYXV0by1sb2FkLXNjcmlwdHMg W1JFR0VYUF0iKSk7Ci0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoImdkYi1zY3JpcHRzIiwg Y2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX2dkYl9zY3JpcHRzLCBfKCJcCi0rRW5h YmxlIG9yIGRpc2FibGUgYXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFu ZHMgc2NyaXB0cy4iKSwgXygiXAotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRpbmcgb2YgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIGVuYWJsZWQuIiksCi0rCQkJICAgXygi XAotK0lmIGVuYWJsZWQsIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgYXJlIGxvYWRlZCB3 aGVuIHRoZSBkZWJ1Z2dlciByZWFkc1xuXAotK2FuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJh cnkuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1 c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfZ2RiX3Njcmlw dHMsCi0rCQkJICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkgICBhdXRvX2xv YWRfc2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfY21kICgiZ2RiLXNjcmlwdHMiLCBj bGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9nZGJfc2NyaXB0cywKLSsJICAgXygiUHJpbnQgdGhl IGxpc3Qgb2YgYXV0b21hdGljYWxseSBsb2FkZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzLlxuXAot K1VzYWdlOiBpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyBbUkVHRVhQXSIpLAotKwkgICBhdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2Nt ZCAoImxvY2FsLWdkYmluaXQiLCBjbGFzc19zdXBwb3J0LAotKwkJCSAgICZhdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCwgXygiXAotK0VuYWJsZSBvciBkaXNhYmxlIGF1dG8tbG9hZGluZyBvZiAuZ2Ri aW5pdCBzY3JpcHQgaW4gY3VycmVudCBkaXJlY3RvcnkuIiksIF8oIlwKLStTaG93IHdoZXRoZXIg YXV0by1sb2FkaW5nIC5nZGJpbml0IHNjcmlwdCBpbiBjdXJyZW50IGRpcmVjdG9yeSBpcyBlbmFi bGVkLiIpLAotKwkJCSAgIF8oIlwKLStJZiBlbmFibGVkLCBjYW5uZWQgc2VxdWVuY2VzIG9mIGNv bW1hbmRzIGFyZSBsb2FkZWQgd2hlbiBkZWJ1Z2dlciBzdGFydHNcblwKLStmcm9tIC5nZGJpbml0 IGZpbGUgaW4gY3VycmVudCBkaXJlY3RvcnkuICBTdWNoIGZpbGVzIGFyZSBkZXByZWNhdGVkLFxu XAotK3VzZSBhIHNjcmlwdCBhc3NvY2lhdGVkIHdpdGggaW5mZXJpb3IgZXhlY3V0YWJsZSBmaWxl IGluc3RlYWQuXG5cCi0rVGhpcyBvcHRpb25zIGhhcyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9y IHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0rCQkJICAgTlVMTCwgc2hvd19hdXRvX2xvYWRfbG9j YWxfZ2RiaW5pdCwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAotKwkJCSAg IGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGFkZF9jbWQgKCJsb2NhbC1n ZGJpbml0IiwgY2xhc3NfaW5mbywgaW5mb19hdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdCwKLSsJICAg XygiUHJpbnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVu IGxvYWRlZC5cblwKLStVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAotKwkg ICBhdXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0gfQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuaAkyMDEyLTA0LTE4IDAwOjQ0OjI2Ljk1MTQzNzUxNyAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTgg MDA6NDY6NDcuNTU2MDc5NzgwICswMjAwCi1AQCAtMjIsMTUgKzIyLDM2IEBACi0gCi0gc3RydWN0 IHByb2dyYW1fc3BhY2U7Ci0gCi0tZXh0ZXJuIGludCBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwot K3N0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UKLSt7Ci0rICBjb25zdCBjaGFyICpzdWZmaXg7Ci0rCi0r ICB2b2lkICgqc291cmNlX3NjcmlwdF9mb3Jfb2JqZmlsZSkgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCBGSUxFICpmaWxlLAotKwkJCQkgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSt9Owot KwotK2V4dGVybiBpbnQgZ2xvYmFsX2F1dG9fbG9hZDsKLSsKLStleHRlcm4gaW50IGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0OwotK2V4dGVybiBjaGFyICphdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9w YXRobmFtZTsKLStleHRlcm4gaW50IGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0X2xvYWRlZDsKLSAK LSBleHRlcm4gc3RydWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0gICBnZXRfYXV0b19sb2Fk X3BzcGFjZV9kYXRhX2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsK LSBleHRlcm4gaW50IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvLAotLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAq ZnVsbF9wYXRoKTsKLSsJCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZ1bGxf cGF0aCwKLSsJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxhbmd1YWdlKTsK LSBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAotLQkJCQkgICAgICBjb25zdCBjaGFyICpzdWZmaXgpOwotKwkJCQkgICAgICBjb25z dCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rZXh0ZXJuIHZvaWQgbG9hZF9h dXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSBleHRl cm4gaW50Ci0gICBzY3JpcHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHN0cnVjdCBhdXRvX2xv YWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvKTsKLStleHRlcm4gY2hhciBhdXRvX2xvYWRfaW5m b19zY3JpcHRzX3BhdHRlcm5fbmxbXTsKLStleHRlcm4gdm9pZCBhdXRvX2xvYWRfaW5mb19zY3Jp cHRzIChjaGFyICpwYXR0ZXJuLCBpbnQgZnJvbV90dHksCi0rCQkJCSAgICBjb25zdCBzdHJ1Y3Qg c2NyaXB0X2xhbmd1YWdlICpsYW5ndWFnZSk7Ci0rCi0rZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICoqYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAodm9pZCk7Ci0rZXh0ZXJuIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOwot K2V4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3Rf Z2V0ICh2b2lkKTsKLSAKLSAjZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wMS0wNCAwOTox NzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10 aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1NzA3OTc3NyArMDIwMAotQEAgLTQwLDgg KzQwLDEwIEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgImxpbnV4LW5hdC5o IgotICNpbmNsdWRlICJsaW51eC1wcm9jZnMuaCIKLSsjaW5jbHVkZSAiYXV0by1sb2FkLmgiCi0g Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotKyNpbmNsdWRlIDxjdHlwZS5oPgotIAotICNpZmRlZiBI QVZFX0dOVV9MSUJDX1ZFUlNJT05fSAotICNpbmNsdWRlIDxnbnUvbGliYy12ZXJzaW9uLmg+Ci1A QCAtNzUsNiArNzcsMjEgQEAKLSAKLSBzdGF0aWMgY2hhciAqbGlidGhyZWFkX2RiX3NlYXJjaF9w YXRoOwotIAotKy8qIFNldCB0byBub24temVybyBpZiB0aHJlYWRfZGIgYXV0by1sb2FkaW5nIGlz IGVuYWJsZWQKLSsgICBieSB0aGUgInNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIiBjb21tYW5k LiAgKi8KLStzdGF0aWMgaW50IGF1dG9fbG9hZF90aHJlYWRfZGIgPSAxOwotKwotKy8qICJzaG93 IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3RocmVhZF9kYiBjb25maWd1cmF0aW9uIHZhcmlh YmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX3RocmVhZF9kYiAoc3Ry dWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChm aWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiICIK LSsJCQkgICAgImlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSBzdGF0aWMgdm9p ZAotIHNldF9saWJ0aHJlYWRfZGJfc2VhcmNoX3BhdGggKGNoYXIgKmlnbm9yZWQsIGludCBmcm9t X3R0eSwKLSAJCQkgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLUBAIC0xMTksNiAr MTM2LDEwIEBAIHN0cnVjdCB0aHJlYWRfZGJfaW5mbwotICAgLyogSGFuZGxlIGZyb20gZGxvcGVu IGZvciBsaWJ0aHJlYWRfZGIuc28uICAqLwotICAgdm9pZCAqaGFuZGxlOwotIAotKyAgLyogQWJz b2x1dGUgcGF0aG5hbWUgZnJvbSBnZGJfcmVhbHBhdGggdG8gZGlzayBmaWxlIHVzZWQgZm9yIGRs b3Blbi1pbmcKLSsgICAgIEhBTkRMRS4gIEl0IG1heSBiZSBOVUxMIGZvciBzeXN0ZW0gbGlicmFy eS4gICovCi0rICBjaGFyICpmaWxlbmFtZTsKLSsKLSAgIC8qIFN0cnVjdHVyZSB0aGF0IGlkZW50 aWZpZXMgdGhlIGNoaWxkIHByb2Nlc3MgZm9yIHRoZQotICAgICAgPHByb2Nfc2VydmljZS5oPiBp bnRlcmZhY2UuICAqLwotICAgc3RydWN0IHBzX3Byb2NoYW5kbGUgcHJvY19oYW5kbGU7Ci1AQCAt MjQ4LDYgKzI2OSw4IEBAIGRlbGV0ZV90aHJlYWRfZGJfaW5mbyAoaW50IHBpZCkKLSAgIGlmIChp bmZvLT5oYW5kbGUgIT0gTlVMTCkKLSAgICAgZGxjbG9zZSAoaW5mby0+aGFuZGxlKTsKLSAKLSsg IHhmcmVlIChpbmZvLT5maWxlbmFtZSk7Ci0rCi0gICBpZiAoaW5mb19wcmV2KQotICAgICBpbmZv X3ByZXYtPm5leHQgPSBpbmZvLT5uZXh0OwotICAgZWxzZQotQEAgLTgwNyw2ICs4MzAsMTAgQEAg dHJ5X3RocmVhZF9kYl9sb2FkIChjb25zdCBjaGFyICpsaWJyYXJ5KQotIAotICAgaW5mbyA9IGFk ZF90aHJlYWRfZGJfaW5mbyAoaGFuZGxlKTsKLSAKLSsgIC8qIERvIG5vdCBzYXZlIHN5c3RlbSBs aWJyYXJ5IG5hbWUsIHRoYXQgb25lIGlzIGFsd2F5cyB0cnVzdGVkLiAgKi8KLSsgIGlmIChzdHJj aHIgKGxpYnJhcnksICcvJykgIT0gTlVMTCkKLSsgICAgaW5mby0+ZmlsZW5hbWUgPSBnZGJfcmVh bHBhdGggKGxpYnJhcnkpOwotKwotICAgaWYgKHRyeV90aHJlYWRfZGJfbG9hZF8xIChpbmZvKSkK LSAgICAgcmV0dXJuIDE7Ci0gCi1AQCAtODU2LDYgKzg4Myw5IEBAIHRyeV90aHJlYWRfZGJfbG9h ZF9mcm9tX3BkaXIgKHZvaWQpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iajsKLSAKLSsgIGlm ICghYXV0b19sb2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICBBTExfT0JKRklM RVMgKG9iaikKLSAgICAgaWYgKGxpYnB0aHJlYWRfbmFtZV9wIChvYmotPm5hbWUpKQotICAgICAg IHsKLUBAIC04OTUsNiArOTI1LDkgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGlyIChjb25z dCBjaGFyCi0gICBjaGFyICpwYXRoOwotICAgaW50IHJlc3VsdDsKLSAKLSsgIGlmICghYXV0b19s b2FkX3RocmVhZF9kYikKLSsgICAgcmV0dXJuIDA7Ci0rCi0gICBwYXRoID0geG1hbGxvYyAoZGly X2xlbiArIDEgKyBzdHJsZW4gKExJQlRIUkVBRF9EQl9TTykgKyAxKTsKLSAgIGNsZWFudXAgPSBt YWtlX2NsZWFudXAgKHhmcmVlLCBwYXRoKTsKLSAKLUBAIC0xODAyLDYgKzE4MzUsMTUwIEBAIHRo cmVhZF9kYl9yZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKLSAgIGJlbmVhdGgtPnRvX3Jl c3VtZSAoYmVuZWF0aCwgcHRpZCwgc3RlcCwgc2lnbm8pOwotIH0KLSAKLSsvKiBxc29ydCBoZWxw ZXIgZnVuY3Rpb24gZm9yIGluZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiwgc29ydCB0aGUKLSsg ICB0aHJlYWRfZGJfaW5mbyBwb2ludGVycyBwcmltYXJpbHkgYnkgdGhlaXIgRklMRU5BTUUgYW5k IHNlY29uZGFyaWx5IGJ5IHRoZWlyCi0rICAgUElELCBib3RoIGluIGFzY2VuZGluZyBvcmRlci4g ICovCi0rCi0rc3RhdGljIGludAotK2luZm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYl9jb21wYXJl IChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgc3RydWN0IHRocmVhZF9k Yl9pbmZvICphID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiopIGFwOwotKyAgc3RydWN0IHRo cmVhZF9kYl9pbmZvICpiID0gKihzdHJ1Y3QgdGhyZWFkX2RiX2luZm8gKiopIGJwOwotKyAgaW50 IHJldHZhbDsKLSsKLSsgIHJldHZhbCA9IHN0cmNtcCAoYS0+ZmlsZW5hbWUsIGItPmZpbGVuYW1l KTsKLSsgIGlmIChyZXR2YWwpCi0rICAgIHJldHVybiByZXR2YWw7Ci0rCi0rICByZXR1cm4gKGEt PnBpZCA+IGItPnBpZCkgLSAoYS0+cGlkIC0gYi0+cGlkKTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50 ICdpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGInLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2lu Zm9fYXV0b19sb2FkX2xpYnRocmVhZF9kYiAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotK3sK LSsgIHN0cnVjdCB1aV9vdXQgKnVpb3V0ID0gY3VycmVudF91aW91dDsKLSsgIGNvbnN0IGNoYXIg KmNzID0gYXJncyA/IGFyZ3MgOiAiIjsKLSsgIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqaW5mbywg KiphcnJheTsKLSsgIHVuc2lnbmVkIGluZm9fY291bnQsIHVuaXF1ZV9maWxlbmFtZXM7Ci0rICBz aXplX3QgbWF4X2ZpbGVuYW1lX2xlbiwgbWF4X3BpZHNfbGVuLCBwaWRzX2xlbjsKLSsgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwotKyAgY2hhciAqcGlkczsKLSsgIGludCBpOwotKwotKyAgd2hp bGUgKGlzc3BhY2UgKCpjcykpCi0rICAgIGNzKys7Ci0rICBpZiAoKmNzKQotKyAgICBlcnJvciAo XygiJ2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYicgZG9lcyBub3QgYWNjZXB0IGFueSBwYXJh bWV0ZXJzIikpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBmb3IgKGluZm8gPSB0aHJlYWRf ZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAgIGlmIChpbmZvLT5maWxlbmFt ZSAhPSBOVUxMKQotKyAgICAgIGluZm9fY291bnQrKzsKLSsKLSsgIGFycmF5ID0geG1hbGxvYyAo c2l6ZW9mICgqYXJyYXkpICogaW5mb19jb3VudCk7Ci0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgYXJyYXkpOwotKwotKyAgaW5mb19jb3VudCA9IDA7Ci0rICBmb3IgKGluZm8gPSB0 aHJlYWRfZGJfbGlzdDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpCi0rICAgIGlmIChpbmZvLT5m aWxlbmFtZSAhPSBOVUxMKQotKyAgICAgIGFycmF5W2luZm9fY291bnQrK10gPSBpbmZvOwotKwot KyAgLyogU29ydCBBUlJBWSBieSBmaWxlbmFtZXMgYW5kIFBJRHMuICAqLwotKwotKyAgcXNvcnQg KGFycmF5LCBpbmZvX2NvdW50LCBzaXplb2YgKCphcnJheSksCi0rCSBpbmZvX2F1dG9fbG9hZF9s aWJ0aHJlYWRfZGJfY29tcGFyZSk7Ci0rCi0rICAvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiB1 bmlxdWUgZmlsZW5hbWVzIChyb3dzKSBhbmQgdGhlIG1heGltdW0gc3RyaW5nCi0rICAgICBsZW5n dGggb2YgUElEcyBsaXN0IGZvciB0aGUgdW5pcXVlIGZpbGVuYW1lcyAoY29sdW1ucykuICAqLwot KwotKyAgdW5pcXVlX2ZpbGVuYW1lcyA9IDA7Ci0rICBtYXhfZmlsZW5hbWVfbGVuID0gMDsKLSsg IG1heF9waWRzX2xlbiA9IDA7Ci0rICBwaWRzX2xlbiA9IDA7Ci0rICBmb3IgKGkgPSAwOyBpIDwg aW5mb19jb3VudDsgaSsrKQotKyAgICB7Ci0rICAgICAgaW50IHBpZCA9IGFycmF5W2ldLT5waWQ7 Ci0rICAgICAgc2l6ZV90IHRoaXNfcGlkX2xlbjsKLSsKLSsgICAgICBmb3IgKHRoaXNfcGlkX2xl biA9IDA7IHBpZCAhPSAwOyBwaWQgLz0gMTApCi0rCXRoaXNfcGlkX2xlbisrOwotKwotKyAgICAg IGlmIChpID09IDAgfHwgc3RyY21wIChhcnJheVtpIC0gMV0tPmZpbGVuYW1lLCBhcnJheVtpXS0+ ZmlsZW5hbWUpICE9IDApCi0rCXsKLSsJICB1bmlxdWVfZmlsZW5hbWVzKys7Ci0rCSAgbWF4X2Zp bGVuYW1lX2xlbiA9IG1heCAobWF4X2ZpbGVuYW1lX2xlbiwKLSsJCQkJICBzdHJsZW4gKGFycmF5 W2ldLT5maWxlbmFtZSkpOwotKwotKwkgIGlmIChpID4gMCkKLSsJICAgIHsKLSsJICAgICAgcGlk c19sZW4gLT0gc3RybGVuICgiLCAiKTsKLSsJICAgICAgbWF4X3BpZHNfbGVuID0gbWF4IChtYXhf cGlkc19sZW4sIHBpZHNfbGVuKTsKLSsJICAgIH0KLSsJICBwaWRzX2xlbiA9IDA7Ci0rCX0KLSsg ICAgICBwaWRzX2xlbiArPSB0aGlzX3BpZF9sZW4gKyBzdHJsZW4gKCIsICIpOwotKyAgICB9Ci0r ICBpZiAoaSkKLSsgICAgewotKyAgICAgIHBpZHNfbGVuIC09IHN0cmxlbiAoIiwgIik7Ci0rICAg ICAgbWF4X3BpZHNfbGVuID0gbWF4IChtYXhfcGlkc19sZW4sIHBpZHNfbGVuKTsKLSsgICAgfQot KwotKyAgLyogVGFibGUgaGVhZGVyIHNoaWZ0ZWQgcmlnaHQgYnkgcHJlY2VkaW5nICJsaWJ0aHJl YWQtZGI6ICAiIHdvdWxkIG5vdCBtYXRjaAotKyAgICAgaXRzIGNvbHVtbnMuICAqLwotKyAgaWYg KGluZm9fY291bnQgPiAwICYmIGFyZ3MgPT0gYXV0b19sb2FkX2luZm9fc2NyaXB0c19wYXR0ZXJu X25sKQotKyAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKwotKyAgbWFrZV9jbGVhbnVw X3VpX291dF90YWJsZV9iZWdpbl9lbmQgKHVpb3V0LCAyLCB1bmlxdWVfZmlsZW5hbWVzLAotKwkJ CQkgICAgICAgIkxpbnV4VGhyZWFkRGJUYWJsZSIpOwotKwotKyAgdWlfb3V0X3RhYmxlX2hlYWRl ciAodWlvdXQsIG1heF9maWxlbmFtZV9sZW4sIHVpX2xlZnQsICJmaWxlbmFtZSIsCi0rCQkgICAg ICAgIkZpbGVuYW1lIik7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgcGlkc19sZW4s IHVpX2xlZnQsICJQSURzIiwgIlBpZHMiKTsKLSsgIHVpX291dF90YWJsZV9ib2R5ICh1aW91dCk7 Ci0rCi0rICBwaWRzID0geG1hbGxvYyAobWF4X3BpZHNfbGVuICsgMSk7Ci0rICBtYWtlX2NsZWFu dXAgKHhmcmVlLCBwaWRzKTsKLSsKLSsgIC8qIE5vdGUgSSBpcyBpbmNyZW1lbnRlZCBpbnNpZGUg dGhlIGN5Y2xlLCBub3QgYXQgaXRzIGVuZC4gICovCi0rICBmb3IgKGkgPSAwOyBpIDwgaW5mb19j b3VudDspCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgY2xlYW51cCAqY2hhaW4gPSBtYWtlX2NsZWFu dXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwotKyAgICAgIGNoYXIgKnBp ZHNfZW5kOwotKwotKyAgICAgIGluZm8gPSBhcnJheVtpXTsKLSsgICAgICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgImZpbGVuYW1lIiwgaW5mby0+ZmlsZW5hbWUpOwotKyAgICAgIHBpZHNf ZW5kID0gcGlkczsKLSsKLSsgICAgICB3aGlsZSAoaSA8IGluZm9fY291bnQgJiYgc3RyY21wIChp bmZvLT5maWxlbmFtZSwgYXJyYXlbaV0tPmZpbGVuYW1lKSA9PSAwKQotKwl7Ci0rCSAgaWYgKHBp ZHNfZW5kICE9IHBpZHMpCi0rCSAgICB7Ci0rCSAgICAgICpwaWRzX2VuZCsrID0gJywnOwotKwkg ICAgICAqcGlkc19lbmQrKyA9ICcgJzsKLSsJICAgIH0KLSsJICBwaWRzX2VuZCArPSB4c25wcmlu dGYgKHBpZHNfZW5kLCAmcGlkc1ttYXhfcGlkc19sZW4gKyAxXSAtIHBpZHNfZW5kLAotKwkJCQkg IiV1IiwgYXJyYXlbaV0tPnBpZCk7Ci0rCSAgZ2RiX2Fzc2VydCAocGlkc19lbmQgPCAmcGlkc1tt YXhfcGlkc19sZW4gKyAxXSk7Ci0rCi0rCSAgaSsrOwotKwl9Ci0rICAgICAgKnBpZHNfZW5kID0g J1wwJzsKLSsKLSsgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInBpZHMiLCBwaWRz KTsKLSsKLSsgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAgICAgIGRvX2NsZWFu dXBzIChjaGFpbik7Ci0rICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsKLSsg IGlmIChpbmZvX2NvdW50ID09IDApCi0rICAgIHVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgXygi Tm8gYXV0by1sb2FkZWQgbGlidGhyZWFkLWRiLlxuIikpOwotK30KLSsKLSBzdGF0aWMgdm9pZAot IGluaXRfdGhyZWFkX2RiX29wcyAodm9pZCkKLSB7Ci1AQCAtMTg2Myw2ICsyMDQwLDIzIEBAIFdo ZW4gbm9uLXplcm8sIGxpYnRocmVhZC1kYiBkZWJ1Z2dpbmcgaXMKLSAJCQkgICAgc2hvd19saWJ0 aHJlYWRfZGJfZGVidWcsCi0gCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsK LSAKLSsgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgibGlidGhyZWFkLWRiIiwgY2xhc3Nfc3Vw cG9ydCwKLSsJCQkgICAmYXV0b19sb2FkX3RocmVhZF9kYiwgXygiXAotK0VuYWJsZSBvciBkaXNh YmxlIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIuIiksIF8o IlwKLStTaG93IHdoZXRoZXIgYXV0by1sb2FkaW5nIGluZmVyaW9yIHNwZWNpZmljIGxpYnRocmVh ZF9kYiBpcyBlbmFibGVkLiIpLCBfKCJcCi0rSWYgZW5hYmxlZCwgbGlidGhyZWFkX2RiIHdpbGwg YmUgc2VhcmNoZWQgaW4gJ3NldCBsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGgnXG5cCi0rbG9jYXRp b25zIHRvIGxvYWQgbGlidGhyZWFkX2RiIGNvbXBhdGlibGUgd2l0aCB0aGUgaW5mZXJpb3IuXG5c Ci0rU3RhbmRhcmQgc3lzdGVtIGxpYnRocmVhZF9kYiBzdGlsbCBnZXRzIGxvYWRlZCBldmVuIHdp dGggdGhpcyBvcHRpb24gb2ZmLlxuXAotK1RoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGlj YXRpb25zIGZvciB1bnRydXN0ZWQgaW5mZXJpb3JzLiIpLAotKwkJCSAgIE5VTEwsIHNob3dfYXV0 b19sb2FkX3RocmVhZF9kYiwKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAot KwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSsgIGFkZF9jbWQgKCJs aWJ0aHJlYWQtZGIiLCBjbGFzc19pbmZvLCBpbmZvX2F1dG9fbG9hZF9saWJ0aHJlYWRfZGIsCi0r CSAgIF8oIlByaW50IHRoZSBsaXN0IG9mIGxvYWRlZCBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJl YWRfZGIuXG5cCi0rVXNhZ2U6IGluZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYiIpLAotKwkgICBh dXRvX2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICAvKiBBZGQgb3Vyc2VsdmVzIHRv IG9iamZpbGUgZXZlbnQgY2hhaW4uICAqLwotICAgb2JzZXJ2ZXJfYXR0YWNoX25ld19vYmpmaWxl ICh0aHJlYWRfZGJfbmV3X29iamZpbGUpOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv bWFpbi5jCTIwMTItMDQtMTggMDA6NDQ6MjYuOTU3NDM3NTAzICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU3MDc5Nzc3ICswMjAw Ci1AQCAtOTQ1LDggKzk0NSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAvKiBT a2lwIGF1dG8tbG9hZGluZyBzZWN0aW9uLXNwZWNpZmllZCBzY3JpcHRzIHVudGlsIHdlJ3ZlIHNv dXJjZWQKLSAgICAgIGxvY2FsX2dkYmluaXQgKHdoaWNoIGlzIG9mdGVuIHVzZWQgdG8gYXVnbWVu dCB0aGUgc291cmNlIHNlYXJjaAotICAgICAgcGF0aCkuICAqLwotLSAgc2F2ZV9hdXRvX2xvYWQg PSBnZGJweV9nbG9iYWxfYXV0b19sb2FkOwotLSAgZ2RicHlfZ2xvYmFsX2F1dG9fbG9hZCA9IDA7 Ci0rICBzYXZlX2F1dG9fbG9hZCA9IGdsb2JhbF9hdXRvX2xvYWQ7Ci0rICBnbG9iYWxfYXV0b19s b2FkID0gMDsKLSAKLSAgIGlmIChleGVjYXJnICE9IE5VTEwKLSAgICAgICAmJiBzeW1hcmcgIT0g TlVMTAotQEAgLTEwMjIsMTQgKzEwMjIsMjQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkK LSAKLSAgIC8qIFJlYWQgdGhlIC5nZGJpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5 LCAqaWYqIGl0IGlzbid0Ci0gICAgICB0aGUgc2FtZSBhcyB0aGUgJEhPTUUvLmdkYmluaXQgZmls ZSAoaXQgc2hvdWxkIGV4aXN0LCBhbHNvKS4gICovCi0tICBpZiAobG9jYWxfZ2RiaW5pdCAmJiAh aW5oaWJpdF9nZGJpbml0KQotLSAgICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNlX3Njcmlw dCwgbG9jYWxfZ2RiaW5pdCwgMCwgUkVUVVJOX01BU0tfQUxMKTsKLSsgIGlmIChsb2NhbF9nZGJp bml0KQotKyAgICB7Ci0rICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBn ZGJfcmVhbHBhdGggKGxvY2FsX2dkYmluaXQpOwotKwotKyAgICAgIGlmICghaW5oaWJpdF9nZGJp bml0ICYmIGF1dG9fbG9hZF9sb2NhbF9nZGJpbml0KQotKwl7Ci0rCSAgYXV0b19sb2FkX2xvY2Fs X2dkYmluaXRfbG9hZGVkID0gMTsKLSsKLSsJICBjYXRjaF9jb21tYW5kX2Vycm9ycyAoc291cmNl X3NjcmlwdCwgbG9jYWxfZ2RiaW5pdCwgMCwKLSsJCQkJUkVUVVJOX01BU0tfQUxMKTsKLSsJfQot KyAgICB9Ci0gCi0gICAvKiBOb3cgdGhhdCBhbGwgLmdkYmluaXQncyBoYXZlIGJlZW4gcmVhZCBh bmQgYWxsIC1kIG9wdGlvbnMgaGF2ZSBiZWVuCi0gICAgICBwcm9jZXNzZWQsIHdlIGNhbiByZWFk IGFueSBzY3JpcHRzIG1lbnRpb25lZCBpbiBTWU1BUkcuCi0gICAgICBXZSB3YWl0IHVudGlsIG5v dyBiZWNhdXNlIGl0IGlzIGNvbW1vbiB0byBhZGQgdG8gdGhlIHNvdXJjZSBzZWFyY2gKLSAgICAg IHBhdGggaW4gbG9jYWxfZ2RiaW5pdC4gICovCi0tICBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0g c2F2ZV9hdXRvX2xvYWQ7Ci0rICBnbG9iYWxfYXV0b19sb2FkID0gc2F2ZV9hdXRvX2xvYWQ7Ci0g ICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICAgIGxvYWRfYXV0b19zY3JpcHRzX2Zvcl9vYmpm aWxlIChvYmpmaWxlKTsKLSAKLUBAIC0xMTk2LDcgKzEyMDYsNyBAQCBBdCBzdGFydHVwLCBHREIg cmVhZHMgdGhlIGZvbGxvd2luZyBpbml0Ci0gIiksIGhvbWVfZ2RiaW5pdCk7Ci0gICBpZiAobG9j YWxfZ2RiaW5pdCkKLSAgICAgZnByaW50Zl91bmZpbHRlcmVkIChzdHJlYW0sIF8oIlwKLS0gICAq IGxvY2FsIGluaXQgZmlsZTogLi8lc1xuXAotKyAgICogbG9jYWwgaW5pdCBmaWxlIChzZWUgYWxz byAnc2V0IGF1dG8tbG9hZCBsb2NhbC1nZGJpbml0Jyk6IC4vJXNcblwKLSAiKSwgbG9jYWxfZ2Ri aW5pdCk7Ci0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcblwKLSBGb3IgbW9yZSBpbmZvcm1hdGlv biwgdHlwZSBcImhlbHBcIiBmcm9tIHdpdGhpbiBHREIsIG9yIGNvbnN1bHQgdGhlXG5cCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0x OCAwMDo0NDoyNi45Mjg0Mzc1NzcgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny41NTgwNzk3NzQgKzAyMDAKLUBAIC0x MDM0LDYgKzEwMzQsNyBAQCBZb3UgY2FuIHJ1biBAdmFsdWV7R0RCTn0gaW4gdmFyaW91cyBhbHRl Ci0gYmF0Y2ggbW9kZSBvciBxdWlldCBtb2RlLgotIAotIEB0YWJsZSBAY29kZQotK0BhbmNob3J7 LW54fQotIEBpdGVtIC1ueAotIEBpdGVteCAtbgotIEBjaW5kZXggQGNvZGV7LS1ueH0KLUBAIC0x MjY1LDYgKzEyNjYsNyBAQCBIZXJlJ3MgdGhlIGRlc2NyaXB0aW9uIG9mIHdoYXQgQHZhbHVle0dE Ci0gU2V0cyB1cCB0aGUgY29tbWFuZCBpbnRlcnByZXRlciBhcyBzcGVjaWZpZWQgYnkgdGhlIGNv bW1hbmQgbGluZQotIChAcHhyZWZ7TW9kZSBPcHRpb25zLCBpbnRlcnByZXRlcn0pLgotIAotK0Bh bmNob3J7T3B0aW9uIC1pbml0LWV2YWwtY29tbWFuZH0KLSBAaXRlbQotIEV4ZWN1dGVzIGNvbW1h bmRzIGFuZCBjb21tYW5kIGZpbGVzIHNwZWNpZmllZCBieSB0aGUgQHNhbXB7LWlleH0gYW5kCi0g QHNhbXB7LWl4fSBvcHRpb25zIGluIHRoZWlyIHNwZWNpZmllZCBvcmRlci4gIFVzdWFsbHkgeW91 IHNob3VsZCB1c2UgdGhlCi1AQCAtMTI3OSw2ICsxMjgxLDcgQEAgdXNlZCB3aGVuIGJ1aWxkaW5n IEB2YWx1ZXtHREJOfTsgQHB4cmVmewotICAsU3lzdGVtLXdpZGUgY29uZmlndXJhdGlvbiBhbmQg c2V0dGluZ3N9KSBhbmQgZXhlY3V0ZXMgYWxsIHRoZSBjb21tYW5kcyBpbgotIHRoYXQgZmlsZS4K LSAKLStAYW5jaG9ye0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0KLSBAaXRlbQotIFJlYWRzIHRo ZSBpbml0IGZpbGUgKGlmIGFueSkgaW4geW91ciBob21lIGRpcmVjdG9yeUBmb290bm90ZXtPbgot IERPUy9XaW5kb3dzIHN5c3RlbXMsIHRoZSBob21lIGRpcmVjdG9yeSBpcyB0aGUgb25lIHBvaW50 ZWQgdG8gYnkgdGhlCi1AQCAtMTI4OCw5ICsxMjkxLDEyIEBAIHRoYXQgZmlsZS4KLSBAaXRlbQot IFByb2Nlc3NlcyBjb21tYW5kIGxpbmUgb3B0aW9ucyBhbmQgb3BlcmFuZHMuCi0gCi0rQGFuY2hv cntJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVwfQotIEBp dGVtCi0gUmVhZHMgYW5kIGV4ZWN1dGVzIHRoZSBjb21tYW5kcyBmcm9tIGluaXQgZmlsZSAoaWYg YW55KSBpbiB0aGUgY3VycmVudAotLXdvcmtpbmcgZGlyZWN0b3J5LiAgVGhpcyBpcyBvbmx5IGRv bmUgaWYgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzCi0rd29ya2luZyBkaXJlY3RvcnkgYXMgbG9u ZyBhcyBAc2FtcHtzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9IGlzIHNldCB0bwotK0BzYW1w e29ufSAoQHB4cmVme0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3Rvcnl9KS4KLStUaGlz IGlzIG9ubHkgZG9uZSBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMKLSBkaWZmZXJlbnQgZnJv bSB5b3VyIGhvbWUgZGlyZWN0b3J5LiAgVGh1cywgeW91IGNhbiBoYXZlIG1vcmUgdGhhbiBvbmUK LSBpbml0IGZpbGUsIG9uZSBnZW5lcmljIGluIHlvdXIgaG9tZSBkaXJlY3RvcnksIGFuZCBhbm90 aGVyLCBzcGVjaWZpYwotIHRvIHRoZSBwcm9ncmFtIHlvdSBhcmUgZGVidWdnaW5nLCBpbiB0aGUg ZGlyZWN0b3J5IHdoZXJlIHlvdSBpbnZva2UKLUBAIC0xMzA2LDcgKzEzMTIsNyBAQCBJZiB5b3Ug d2lzaCB0byBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcKLSB5b3UgbXVzdCBkbyBzb21ldGhpbmcg bGlrZSB0aGUgZm9sbG93aW5nOgotIAotIEBzbWFsbGV4YW1wbGUKLS0kIGdkYiAtaWV4ICJzZXQg YXV0by1sb2FkLXNjcmlwdHMgb2ZmIiBteXByb2dyYW0KLSskIGdkYiAtaWV4ICJzZXQgYXV0by1s b2FkIHB5dGhvbi1zY3JpcHRzIG9mZiIgbXlwcm9ncmFtCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAK LSBPcHRpb24gQHNhbXB7LWV4fSBkb2VzIG5vdCB3b3JrIGJlY2F1c2UgdGhlIGF1dG8tbG9hZGlu ZyBpcyB0aGVuIHR1cm5lZAotQEAgLTI4OTEsNiArMjg5Nyw3IEBAIHByb2dyYW1zIHdpdGggbXVs dGlwbGUgdGhyZWFkcy4KLSBAeHJlZntTZXQgV2F0Y2hwb2ludHMsLFNldHRpbmcgV2F0Y2hwb2lu dHN9LCBmb3IgaW5mb3JtYXRpb24gYWJvdXQKLSB3YXRjaHBvaW50cyBpbiBwcm9ncmFtcyB3aXRo IG11bHRpcGxlIHRocmVhZHMuCi0gCi0rQGFuY2hvcntzZXQgbGlidGhyZWFkLWRiLXNlYXJjaC1w YXRofQotIEB0YWJsZSBAY29kZQotIEBraW5kZXggc2V0IGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0 aAotIEBjaW5kZXggc2VhcmNoIHBhdGggZm9yIEBjb2Rle2xpYnRocmVhZF9kYn0KLUBAIC0yOTA1 LDExICsyOTEyLDE1IEBAIG1hY3JvLgotIE9uIEBzY3tnbnV9L0xpbnV4IGFuZCBTb2xhcmlzIHN5 c3RlbXMsIEB2YWx1ZXtHREJOfSB1c2VzIGEgYGBoZWxwZXInJwotIEBjb2Rle2xpYnRocmVhZF9k Yn0gbGlicmFyeSB0byBvYnRhaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhyZWFkcyBpbiB0aGUKLSBp bmZlcmlvciBwcm9jZXNzLiAgQHZhbHVle0dEQk59IHdpbGwgdXNlIEBzYW1we2xpYnRocmVhZC1k Yi1zZWFyY2gtcGF0aH0KLS10byBmaW5kIEBjb2Rle2xpYnRocmVhZF9kYn0uCi0rdG8gZmluZCBA Y29kZXtsaWJ0aHJlYWRfZGJ9LiAgQHZhbHVle0dEQk59IGFsc28gY29uc3VsdHMgZmlyc3QgaWYg aW5mZXJpb3IKLStzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkgbG9hZGluZyBpcyBl bmFibGVkCi0rYnkgQHNhbXB7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9IChAcHhyZWZ7bGli dGhyZWFkX2RiLnNvLjEgZmlsZX0pLgotIAotIEEgc3BlY2lhbCBlbnRyeSBAc2FtcHskc2Rpcn0g Zm9yIEBzYW1we2xpYnRocmVhZC1kYi1zZWFyY2gtcGF0aH0KLSByZWZlcnMgdG8gdGhlIGRlZmF1 bHQgc3lzdGVtIGRpcmVjdG9yaWVzIHRoYXQgYXJlCi0tbm9ybWFsbHkgc2VhcmNoZWQgZm9yIGxv YWRpbmcgc2hhcmVkIGxpYnJhcmllcy4KLStub3JtYWxseSBzZWFyY2hlZCBmb3IgbG9hZGluZyBz aGFyZWQgbGlicmFyaWVzLiAgVGhlIEBzYW1weyRzZGlyfSBlbnRyeQotK2lzIHRoZSBvbmx5IGtp bmQgbm90IG5lZWRpbmcgdG8gYmUgZW5hYmxlZCBieSBAc2FtcHtzZXQgYXV0by1sb2FkIGxpYnRo cmVhZC1kYn0KLSsoQHB4cmVme2xpYnRocmVhZF9kYi5zby4xIGZpbGV9KS4KLSAKLSBBIHNwZWNp YWwgZW50cnkgQHNhbXB7JHBkaXJ9IGZvciBAc2FtcHtsaWJ0aHJlYWQtZGItc2VhcmNoLXBhdGh9 Ci0gcmVmZXJzIHRvIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCBAY29kZXtsaWJwdGhyZWFkfQot QEAgLTIwMzIwLDYgKzIwMzMxLDcgQEAgZGVzY3JpYmVkIGhlcmUuCi0gKiBTY3JlZW4gU2l6ZTo6 ICAgICAgICAgICAgICAgICBTY3JlZW4gc2l6ZQotICogTnVtYmVyczo6ICAgICAgICAgICAgICAg ICAgICAgTnVtYmVycwotICogQUJJOjogICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlndXJp bmcgdGhlIGN1cnJlbnQgQUJJCi0rKiBBdXRvLWxvYWRpbmc6OiAgICAgICAgICAgICAgICBBdXRv bWF0aWNhbGx5IGxvYWRpbmcgYXNzb2NpYXRlZCBmaWxlcwotICogTWVzc2FnZXMvV2FybmluZ3M6 OiAgICAgICAgICAgT3B0aW9uYWwgd2FybmluZ3MgYW5kIG1lc3NhZ2VzCi0gKiBEZWJ1Z2dpbmcg T3V0cHV0OjogICAgICAgICAgICBPcHRpb25hbCBtZXNzYWdlcyBhYm91dCBpbnRlcm5hbCBoYXBw ZW5pbmdzCi0gKiBPdGhlciBNaXNjIFNldHRpbmdzOjogICAgICAgICBPdGhlciBNaXNjZWxsYW5l b3VzIFNldHRpbmdzCi1AQCAtMjA3NDUsNiArMjA3NTcsMjI3IEBAIFdpdGggbm8gYXJndW1lbnQs IHNob3cgdGhlIGxpc3Qgb2Ygc3VwcG8KLSBTZXQgdGhlIGN1cnJlbnQgQ0B0eysrfSBBQkkgdG8g QHZhcnthYml9LCBvciByZXR1cm4gdG8gYXV0b21hdGljIGRldGVjdGlvbi4KLSBAZW5kIHRhYmxl Ci0gCi0rQG5vZGUgQXV0by1sb2FkaW5nCi0rQHNlY3Rpb24gQXV0b21hdGljYWxseSBsb2FkaW5n IGFzc29jaWF0ZWQgZmlsZXMKLStAY2luZGV4IGF1dG8tbG9hZGluZwotKwotK0B2YWx1ZXtHREJO fSBzb21ldGltZXMgcmVhZHMgZmlsZXMgd2l0aCBjb21tYW5kcyBhbmQgc2V0dGluZ3MgYXV0b21h dGljYWxseSwKLSt3aXRob3V0IGJlaW5nIGV4cGxpY2l0bHkgdG9sZCBzbyBieSB0aGUgdXNlci4g IFdlIGNhbGwgdGhpcyBmZWF0dXJlCi0rQGRmbnthdXRvLWxvYWRpbmd9LiAgV2hpbGUgYXV0by1s b2FkaW5nIGlzIHVzZWZ1bCBmb3IgYXV0b21hdGljYWxseSBhZGFwdGluZwotK0B2YWx1ZXtHREJO fSB0byB0aGUgbmVlZHMgb2YgeW91ciBwcm9qZWN0LCBpdCBjYW4gc29tZXRpbWVzIHByb2R1Y2Ug dW5leHBlY3RlZAotK3Jlc3VsdHMgb3IgaW50cm9kdWNlIHNlY3VyaXR5IHJpc2tzIChlLmcuLCBp ZiB0aGUgZmlsZSBjb21lcyBmcm9tIHVudHJ1c3RlZAotK3NvdXJjZXMpLgotKwotK0ZvciB0aGVz ZSByZWFzb25zLCBAdmFsdWV7R0RCTn0gaW5jbHVkZXMgY29tbWFuZHMgYW5kIG9wdGlvbnMgdG8g bGV0IHlvdQotK2NvbnRyb2wgd2hlbiB0byBhdXRvLWxvYWQgZmlsZXMgYW5kIHdoaWNoIGZpbGVz IHNob3VsZCBiZSBhdXRvLWxvYWRlZC4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBh dXRvLWxvYWQgb2ZmfQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBvZmYKLStAaXRlbSBzZXQgYXV0 by1sb2FkIG9mZgotK0dsb2JhbGx5IGRpc2FibGUgbG9hZGluZyBvZiBhbGwgYXV0by1sb2FkZWQg ZmlsZXMuCi0rWW91IG1heSB3YW50IHRvIHVzZSB0aGlzIGNvbW1hbmQgd2l0aCB0aGUgQHNhbXB7 LWlleH0gb3B0aW9uCi0rKEBweHJlZntPcHRpb24gLWluaXQtZXZhbC1jb21tYW5kfSkgc3VjaCBh czoKLStAc21hbGxleGFtcGxlCi0rJCBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG9mZiIg dW50cnVzdGVkLWV4ZWN1dGFibGUgY29yZWZpbGV9Ci0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStC ZSBhd2FyZSB0aGF0IHN5c3RlbSBpbml0IGZpbGUgKEBweHJlZntTeXN0ZW0td2lkZSBjb25maWd1 cmF0aW9ufSkKLSthbmQgaW5pdCBmaWxlcyBmcm9tIHlvdXIgaG9tZSBkaXJlY3RvcnkgKEBweHJl ZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KQotK3N0aWxsIGdldCByZWFkIChhcyB0aGV5IGNv bWUgZnJvbSBnZW5lcmFsbHkgdHJ1c3RlZCBkaXJlY3RvcmllcykuCi0rVG8gcHJldmVudCBAdmFs dWV7R0RCTn0gZnJvbSBhdXRvLWxvYWRpbmcgZXZlbiB0aG9zZSBpbml0IGZpbGVzLCB1c2UgdGhl Ci0rQG9wdGlvbnstbnh9IG9wdGlvbiAoQHB4cmVme01vZGUgT3B0aW9uc30pLCBpbiBhZGRpdGlv biB0bwotK0Bjb2Rle3NldCBhdXRvLWxvYWQgbm99LgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxv YWR9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZAotK0BpdGVtIHNob3cgYXV0by1sb2FkCi0rU2hv dyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBlYWNoIHNwZWNpZmljIEBzYW1we2F1dG8tbG9hZH0g ZmlsZShzKSBpcyBlbmFibGVkCi0rb3IgZGlzYWJsZWQuCi0rCi0rQHNtYWxsZXhhbXBsZQotKyhn ZGIpIHNob3cgYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgY2FubmVk IHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIG9uLgotK2xpYnRocmVhZC1kYjogIEF1 dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCi0rbG9j YWwtZ2RiaW5pdDogIEF1dG8tbG9hZGluZyBvZiAuZ2RiaW5pdCBzY3JpcHQgZnJvbSBjdXJyZW50 IGRpcmVjdG9yeSBpcyBvbi4KLStweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRo b24gc2NyaXB0cyBpcyBvbi4KLStAZW5kIHNtYWxsZXhhbXBsZQotKwotK0BhbmNob3J7aW5mbyBh dXRvLWxvYWR9Ci0rQGtpbmRleCBpbmZvIGF1dG8tbG9hZAotK0BpdGVtIGluZm8gYXV0by1sb2Fk Ci0rUHJpbnQgd2hldGhlciBlYWNoIHNwZWNpZmljIEBzYW1we2F1dG8tbG9hZH0gZmlsZShzKSBo YXZlIGJlZW4gYXV0by1sb2FkZWQgb3IKLStub3QuCi0rCi0rQHNtYWxsZXhhbXBsZQotKyhnZGIp IGluZm8gYXV0by1sb2FkCi0rZ2RiLXNjcmlwdHM6Ci0rTG9hZGVkICBTY3JpcHQKLStZZXMgICAg IC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0rbGlidGhyZWFkLWRiOiAgTm8gYXV0by1sb2Fk ZWQgbGlidGhyZWFkLWRiLgotK2xvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIv aG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgotK3B5dGhvbi1zY3JpcHRz OgotK0xvYWRlZCAgU2NyaXB0Ci0rWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5Ci0r QGVuZCBzbWFsbGV4YW1wbGUKLStAZW5kIHRhYmxlCi0rCi0rVGhlc2UgYXJlIHZhcmlvdXMga2lu ZHMgb2YgZmlsZXMgQHZhbHVle0dEQk59IGNhbiBhdXRvbWF0aWNhbGx5IGxvYWQ6Ci0rCi0rQGl0 ZW1pemUgQGJ1bGxldAotK0BpdGVtCi0rQHhyZWZ7b2JqZmlsZS1nZGIucHkgZmlsZX0sIGNvbnRy b2xsZWQgYnkgQHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAaXRlbQotK0B4 cmVme29iamZpbGUtZ2RiLmdkYiBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxv YWQgZ2RiLXNjcmlwdHN9LgotK0BpdGVtCi0rQHhyZWZ7ZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2Vj dGlvbn0sCi0rY29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHN9 LgotK0BpdGVtCi0rQHhyZWZ7SW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeX0sCi0r Y29udHJvbGxlZCBieSBAcmVme3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCi0rQGl0ZW0K LStAeHJlZntsaWJ0aHJlYWRfZGIuc28uMSBmaWxlfSwgY29udHJvbGxlZCBieSBAcmVme3NldCBh dXRvLWxvYWQgbGlidGhyZWFkLWRifS4KLStAZW5kIGl0ZW1pemUKLSsKLStUaGVzZSBhcmUgQHZh bHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMgZm9yIHRoZSBhdXRvLWxvYWRpbmc6Ci0rCi0rQG11 bHRpdGFibGUgQGNvbHVtbmZyYWN0aW9ucyAuNSAuNQotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxv YWQgb2ZmfS4KLStAdGFiIERpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5LgotK0BpdGVtIEB4 cmVme3Nob3cgYXV0by1sb2FkfS4KLStAdGFiIFNob3cgc2V0dGluZyBvZiBhbGwga2luZHMgb2Yg ZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWR9LgotK0B0YWIgU2hvdyBzdGF0ZSBv ZiBhbGwga2luZHMgb2YgZmlsZXMuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBnZGItc2Ny aXB0c30uCi0rQHRhYiBDb250cm9sIGZvciBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgot K0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc2V0 dGluZyBvZiBAdmFsdWV7R0RCTn0gY29tbWFuZCBzY3JpcHRzLgotK0BpdGVtIEB4cmVme2luZm8g YXV0by1sb2FkIGdkYi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUgb2YgQHZhbHVle0dEQk59 IGNvbW1hbmQgc2NyaXB0cy4KLStAaXRlbSBAeHJlZntzZXQgYXV0by1sb2FkIHB5dGhvbi1zY3Jp cHRzfS4KLStAdGFiIENvbnRyb2wgZm9yIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStA aXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0rQHRhYiBTaG93IHNl dHRpbmcgb2YgQHZhbHVle0dEQk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVtIEB4cmVme2luZm8g YXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzfS4KLStAdGFiIFNob3cgc3RhdGUgb2YgQHZhbHVle0dE Qk59IFB5dGhvbiBzY3JpcHRzLgotK0BpdGVtIEB4cmVme3NldCBhdXRvLWxvYWQgbG9jYWwtZ2Ri aW5pdH0uCi0rQHRhYiBDb250cm9sIGZvciBpbml0IGZpbGUgaW4gdGhlIGN1cnJlbnQgZGlyZWN0 b3J5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9LgotK0B0YWIg U2hvdyBzZXR0aW5nIG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rQGl0 ZW0gQHhyZWZ7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0uCi0rQHRhYiBTaG93IHN0YXRl IG9mIGluaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCi0rQGl0ZW0gQHhyZWZ7c2V0 IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotK0B0YWIgQ29udHJvbCBmb3IgdGhyZWFkIGRlYnVn Z2luZyBsaWJyYXJ5LgotK0BpdGVtIEB4cmVme3Nob3cgYXV0by1sb2FkIGxpYnRocmVhZC1kYn0u Ci0rQHRhYiBTaG93IHNldHRpbmcgb2YgdGhyZWFkIGRlYnVnZ2luZyBsaWJyYXJ5LgotK0BpdGVt IEB4cmVme2luZm8gYXV0by1sb2FkIGxpYnRocmVhZC1kYn0uCi0rQHRhYiBTaG93IHN0YXRlIG9m IHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLStAZW5kIG11bHRpdGFibGUKLSsKLStAbWVudQot KyogSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeTo6IEBzYW1we3NldC9zaG93L2lu Zm8gYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rKiBsaWJ0aHJlYWRfZGIuc28uMSBmaWxlOjog ICAgICAgICAgICAgQHNhbXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQot Kyogb2JqZmlsZS1nZGIuZ2RiIGZpbGU6OiAgICAgICAgICAgICAgIEBzYW1we3NldC9zaG93L2lu Zm8gYXV0by1sb2FkIGdkYi1zY3JpcHR9Ci0rQHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCi0r QGVuZCBtZW51Ci0rCi0rQG5vZGUgSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeQot K0BzdWJzZWN0aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyBpbml0IGZpbGUgaW4gdGhlIGN1cnJl bnQgZGlyZWN0b3J5Ci0rQGNpbmRleCBhdXRvLWxvYWRpbmcgaW5pdCBmaWxlIGluIHRoZSBjdXJy ZW50IGRpcmVjdG9yeQotKwotK0J5IGRlZmF1bHQsIEB2YWx1ZXtHREJOfSByZWFkcyBhbmQgZXhl Y3V0ZXMgdGhlIGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMKLStmcm9tIGluaXQgZmlsZSAo aWYgYW55KSBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSwKLStzZWUgQHJlZntJbml0 IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5IGR1cmluZyBTdGFydHVwfS4KLSsKLStAdGFi bGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLStAa2luZGV4 IHNldCBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK0BpdGVtIHNldCBhdXRvLWxvYWQgbG9jYWwt Z2RiaW5pdCBbb258b2ZmXQotK0VuYWJsZSBvciBkaXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2Yg Y2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcwotKyhAcHhyZWZ7U2VxdWVuY2VzfSkgZm91bmQg aW4gaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4KLSsKLStAYW5jaG9ye3Nob3cg YXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0rQGtpbmRleCBzaG93IGF1dG8tbG9hZCBsb2NhbC1n ZGJpbml0Ci0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdAotK1Nob3cgd2hldGhl ciBhdXRvLWxvYWRpbmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBmcm9tIGluaXQg ZmlsZSBpbiB0aGUKLStjdXJyZW50IGRpcmVjdG9yeSBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgot KwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLStAa2luZGV4IGluZm8g YXV0by1sb2FkIGxvY2FsLWdkYmluaXQKLStAaXRlbSBpbmZvIGF1dG8tbG9hZCBsb2NhbC1nZGJp bml0Ci0rUHJpbnQgd2hldGhlciBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIGZyb20gaW5p dCBmaWxlIGluIHRoZQotK2N1cnJlbnQgZGlyZWN0b3J5IGhhdmUgYmVlbiBhdXRvLWxvYWRlZC4K LStAZW5kIHRhYmxlCi0rCi0rQG5vZGUgbGlidGhyZWFkX2RiLnNvLjEgZmlsZQotK0BzdWJzZWN0 aW9uIEF1dG9tYXRpY2FsbHkgbG9hZGluZyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkKLStAY2lu ZGV4IGF1dG8tbG9hZGluZyBsaWJ0aHJlYWRfZGIuc28uMQotKwotK1RoaXMgZmVhdHVyZSBpcyBj dXJyZW50bHkgcHJlc2VudCBvbmx5IG9uIEBzY3tnbnV9L0xpbnV4IG5hdGl2ZSBob3N0cy4KLSsK LStAdmFsdWV7R0RCTn0gcmVhZHMgaW4gc29tZSBjYXNlcyB0aHJlYWQgZGVidWdnaW5nIGxpYnJh cnkgZnJvbSBwbGFjZXMgc3BlY2lmaWMKLSt0byB0aGUgaW5mZXJpb3IgKEBweHJlZntzZXQgbGli dGhyZWFkLWRiLXNlYXJjaC1wYXRofSkuCi0rCi0rVGhlIHNwZWNpYWwgQHNhbXB7bGlidGhyZWFk LWRiLXNlYXJjaC1wYXRofSBlbnRyeSBAc2FtcHskc2Rpcn0gaXMgcHJvY2Vzc2VkCi0rd2l0aG91 dCBjaGVja2luZyB0aGlzIEBzYW1we3NldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRifSBzd2l0Y2gg YXMgc3lzdGVtCi0rbGlicmFyaWVzIGhhdmUgdG8gYmUgdHJ1c3RlZCBpbiBnZW5lcmFsLiAgSW4g YWxsIG90aGVyIGNhc2VzIG9mCi0rQHNhbXB7bGlidGhyZWFkLWRiLXNlYXJjaC1wYXRofSBlbnRy aWVzIEB2YWx1ZXtHREJOfSBjaGVja3MgZmlyc3QgaWYgQHNhbXB7c2V0Ci0rYXV0by1sb2FkIGxp YnRocmVhZC1kYn0gaXMgZW5hYmxlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gc3VjaCB0aHJlYWQg ZGVidWdnaW5nCi0rbGlicmFyeS4KLSsKLStAdGFibGUgQGNvZGUKLStAYW5jaG9ye3NldCBhdXRv LWxvYWQgbGlidGhyZWFkLWRifQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIK LStAaXRlbSBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYiBbb258b2ZmXQotK0VuYWJsZSBvciBk aXNhYmxlIHRoZSBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhyZWFkIGRlYnVn Z2luZyBsaWJyYXJ5LgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQot K0BraW5kZXggc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gc2hvdyBhdXRvLWxv YWQgbGlidGhyZWFkLWRiCi0rU2hvdyB3aGV0aGVyIGF1dG8tbG9hZGluZyBvZiBpbmZlcmlvciBz cGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkgaXMKLStlbmFibGVkIG9yIGRpc2FibGVk LgotKwotK0BhbmNob3J7aW5mbyBhdXRvLWxvYWQgbGlidGhyZWFkLWRifQotK0BraW5kZXggaW5m byBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0rQGl0ZW0gaW5mbyBhdXRvLWxvYWQgbGlidGhyZWFk LWRiCi0rUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIGxvYWRlZCBpbmZlcmlvciBzcGVjaWZpYyB0aHJl YWQgZGVidWdnaW5nIGxpYnJhcmllcyBhbmQKLStmb3IgZWFjaCBzdWNoIGxpYnJhcnkgcHJpbnQg bGlzdCBvZiBpbmZlcmlvciBAdmFye3BpZH1zIHVzaW5nIGl0LgotK0BlbmQgdGFibGUKLSsKLStA bm9kZSBvYmpmaWxlLWdkYi5nZGIgZmlsZQotK0BzdWJzZWN0aW9uIFRoZSBAZmlsZXtAdmFye29i amZpbGV9LWdkYi5nZGJ9IGZpbGUKLStAY2luZGV4IGF1dG8tbG9hZGluZyBAZmlsZXtAdmFye29i amZpbGV9LWdkYi5nZGJ9Ci0rCi0rQHZhbHVle0dEQk59IHRyaWVzIHRvIGxvYWQgYW4gQGZpbGV7 QHZhcntvYmpmaWxlfS1nZGIuZ2RifSBmaWxlIGNvbnRhaW5pbmcKLStjYW5uZWQgc2VxdWVuY2Vz IG9mIGNvbW1hbmRzIChAcHhyZWZ7U2VxdWVuY2VzfSksIGFzIGxvbmcgYXMgQHNhbXB7c2V0Ci0r YXV0by1sb2FkIGdkYi1zY3JpcHRzfSBpcyBzZXQgdG8gQHNhbXB7b259LgotKwotK0ZvciBtb3Jl IGJhY2tncm91bmQgcmVmZXIgdG8gdGhlIHNpbWlsYXIgUHl0aG9uIHNjcmlwdHMgYXV0by1sb2Fk aW5nCi0rZGVzY3JpcHRpb24gKEBweHJlZntvYmpmaWxlLWdkYi5weSBmaWxlfSkuCi0rCi0rQHRh YmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIGdkYi1zY3JpcHRzfQotK0BraW5kZXgg c2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK0BpdGVtIHNldCBhdXRvLWxvYWQgZ2RiLXNjcmlw dHMgW29ufG9mZl0KLStFbmFibGUgb3IgZGlzYWJsZSB0aGUgYXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cy4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1s b2FkIGdkYi1zY3JpcHRzfQotK0BraW5kZXggc2hvdyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStA aXRlbSBzaG93IGF1dG8tbG9hZCBnZGItc2NyaXB0cwotK1Nob3cgd2hldGhlciBhdXRvLWxvYWRp bmcgb2YgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIGlzIGVuYWJsZWQgb3IK LStkaXNhYmxlZC4KLSsKLStAYW5jaG9ye2luZm8gYXV0by1sb2FkIGdkYi1zY3JpcHRzfQotK0Br aW5kZXggaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMKLStAY2luZGV4IHByaW50IGxpc3Qgb2Yg YXV0by1sb2FkZWQgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzCi0rQGl0ZW0g aW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQcmludCB0aGUgbGlz dCBvZiBhbGwgY2FubmVkIHNlcXVlbmNlcyBvZiBjb21tYW5kcyBzY3JpcHRzIHRoYXQgQHZhbHVl e0dEQk59Ci0rYXV0by1sb2FkZWQuCi0rQGVuZCB0YWJsZQotKwotK0lmIEB2YXJ7cmVnZXhwfSBp cyBzdXBwbGllZCBvbmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRo Ci0rbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0rCi0gQG5vZGUgTWVzc2FnZXMvV2Fybmlu Z3MKLSBAc2VjdGlvbiBPcHRpb25hbCBXYXJuaW5ncyBhbmQgTWVzc2FnZXMKLSAKLUBAIC0yMTYx Niw3ICsyMTg0OSw3IEBAIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgd2hlbiBAdmFsdWV7R0RCTn0K LSBAbWVudQotICogUHl0aG9uIENvbW1hbmRzOjogICAgICAgICAgICAgQWNjZXNzaW5nIFB5dGhv biBmcm9tIEB2YWx1ZXtHREJOfS4KLSAqIFB5dGhvbiBBUEk6OiAgICAgICAgICAgICAgICAgIEFj Y2Vzc2luZyBAdmFsdWV7R0RCTn0gZnJvbSBQeXRob24uCi0tKiBBdXRvLWxvYWRpbmc6OiAgICAg ICAgICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUuCi0rKiBQeXRob24g QXV0by1sb2FkaW5nOjogICAgICAgICBBdXRvbWF0aWNhbGx5IGxvYWRpbmcgUHl0aG9uIGNvZGUu Ci0gKiBQeXRob24gbW9kdWxlczo6ICAgICAgICAgICAgICBQeXRob24gbW9kdWxlcyBwcm92aWRl ZCBieSBAdmFsdWV7R0RCTn0uCi0gQGVuZCBtZW51Ci0gCi1AQCAtMjI3OTksNyArMjMwMzIsNyBA QCBUaGlzIHByYWN0aWNlIHdpbGwgZW5hYmxlIEB2YWx1ZXtHREJOfSB0Ci0geW91ciBwcmV0dHkt cHJpbnRlcnMgYXQgdGhlIHNhbWUgdGltZSwgYmVjYXVzZSB0aGV5IHdpbGwgaGF2ZQotIGRpZmZl cmVudCBuYW1lcy4KLSAKLS1Zb3Ugc2hvdWxkIHdyaXRlIGF1dG8tbG9hZGVkIGNvZGUgKEBweHJl ZntBdXRvLWxvYWRpbmd9KSBzdWNoIHRoYXQgaXQKLStZb3Ugc2hvdWxkIHdyaXRlIGF1dG8tbG9h ZGVkIGNvZGUgKEBweHJlZntQeXRob24gQXV0by1sb2FkaW5nfSkgc3VjaCB0aGF0IGl0Ci0gY2Fu IGJlIGV2YWx1YXRlZCBtdWx0aXBsZSB0aW1lcyB3aXRob3V0IGNoYW5naW5nIGl0cyBtZWFuaW5n LiAgQW4KLSBpZGVhbCBhdXRvLWxvYWQgZmlsZSB3aWxsIGNvbnNpc3Qgc29sZWx5IG9mIEBjb2Rl e2ltcG9ydH1zIG9mIHlvdXIKLSBwcmludGVyIG1vZHVsZXMsIGZvbGxvd2VkIGJ5IGEgY2FsbCB0 byBhIHJlZ2lzdGVyIHByZXR0eS1wcmludGVycyB3aXRoCi1AQCAtMjM3NjAsNyArMjM5OTMsNyBA QCBUaGUgZm9sbG93aW5nIG9iamZpbGUtcmVsYXRlZCBmdW5jdGlvbnMKLSAKLSBAZmluZGV4IGdk Yi5jdXJyZW50X29iamZpbGUKLSBAZGVmdW4gZ2RiLmN1cnJlbnRfb2JqZmlsZSAoKQotLVdoZW4g YXV0by1sb2FkaW5nIGEgUHl0aG9uIHNjcmlwdCAoQHB4cmVme0F1dG8tbG9hZGluZ30pLCBAdmFs dWV7R0RCTn0KLStXaGVuIGF1dG8tbG9hZGluZyBhIFB5dGhvbiBzY3JpcHQgKEBweHJlZntQeXRo b24gQXV0by1sb2FkaW5nfSksIEB2YWx1ZXtHREJOfQotIHNldHMgdGhlIGBgY3VycmVudCBvYmpm aWxlJycgdG8gdGhlIGNvcnJlc3BvbmRpbmcgb2JqZmlsZS4gIFRoaXMKLSBmdW5jdGlvbiByZXR1 cm5zIHRoZSBjdXJyZW50IG9iamZpbGUuICBJZiB0aGVyZSBpcyBubyBjdXJyZW50IG9iamZpbGUs Ci0gdGhpcyBmdW5jdGlvbiByZXR1cm5zIEBjb2Rle05vbmV9LgotQEAgLTI0NjcxLDkgKzI0OTA0 LDkgQEAgcmVzb2x2ZSB0aGlzIHRvIHRoZSBsYXp5IHN0cmluZydzIGNoYXJhYwotIHdyaXRhYmxl LgotIEBlbmQgZGVmdmFyCi0gCi0tQG5vZGUgQXV0by1sb2FkaW5nCi0tQHN1YnNlY3Rpb24gQXV0 by1sb2FkaW5nCi0tQGNpbmRleCBhdXRvLWxvYWRpbmcsIFB5dGhvbgotK0Bub2RlIFB5dGhvbiBB dXRvLWxvYWRpbmcKLStAc3Vic2VjdGlvbiBQeXRob24gQXV0by1sb2FkaW5nCi0rQGNpbmRleCBQ eXRob24gYXV0by1sb2FkaW5nCi0gCi0gV2hlbiBhIG5ldyBvYmplY3QgZmlsZSBpcyByZWFkIChm b3IgZXhhbXBsZSwgZHVlIHRvIHRoZSBAY29kZXtmaWxlfQotIGNvbW1hbmQsIG9yIGJlY2F1c2Ug dGhlIGluZmVyaW9yIGhhcyBsb2FkZWQgYSBzaGFyZWQgbGlicmFyeSksCi1AQCAtMjQ2OTMsMzIg KzI0OTI2LDM1IEBAIEF1dG8tbG9hZGluZyBjYW4gYmUgZW5hYmxlZCBvciBkaXNhYmxlZCwKLSBh bmQgdGhlIGxpc3Qgb2YgYXV0by1sb2FkZWQgc2NyaXB0cyBjYW4gYmUgcHJpbnRlZC4KLSAKLSBA dGFibGUgQGNvZGUKLS1Aa2luZGV4IHNldCBhdXRvLWxvYWQtc2NyaXB0cwotLUBpdGVtIHNldCBh dXRvLWxvYWQtc2NyaXB0cyBbeWVzfG5vXQotK0BhbmNob3J7c2V0IGF1dG8tbG9hZCBweXRob24t c2NyaXB0c30KLStAa2luZGV4IHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKLStAaXRlbSBz ZXQgYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIFtvbnxvZmZdCi0gRW5hYmxlIG9yIGRpc2FibGUg dGhlIGF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cy4KLSAKLS1Aa2luZGV4IHNob3cgYXV0 by1sb2FkLXNjcmlwdHMKLS1AaXRlbSBzaG93IGF1dG8tbG9hZC1zY3JpcHRzCi0rQGFuY2hvcntz aG93IGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIHB5 dGhvbi1zY3JpcHRzCi0rQGl0ZW0gc2hvdyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMKLSBTaG93 IHdoZXRoZXIgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlzIGVuYWJsZWQgb3IgZGlz YWJsZWQuCi0gCi0tQGtpbmRleCBpbmZvIGF1dG8tbG9hZC1zY3JpcHRzCi0tQGNpbmRleCBwcmlu dCBsaXN0IG9mIGF1dG8tbG9hZGVkIHNjcmlwdHMKLS1AaXRlbSBpbmZvIGF1dG8tbG9hZC1zY3Jp cHRzIFtAdmFye3JlZ2V4cH1dCi0tUHJpbnQgdGhlIGxpc3Qgb2YgYWxsIHNjcmlwdHMgdGhhdCBA dmFsdWV7R0RCTn0gYXV0by1sb2FkZWQuCi0rQGFuY2hvcntpbmZvIGF1dG8tbG9hZCBweXRob24t c2NyaXB0c30KLStAa2luZGV4IGluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzCi0rQGNpbmRl eCBwcmludCBsaXN0IG9mIGF1dG8tbG9hZGVkIFB5dGhvbiBzY3JpcHRzCi0rQGl0ZW0gaW5mbyBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW0B2YXJ7cmVnZXhwfV0KLStQcmludCB0aGUgbGlzdCBv ZiBhbGwgUHl0aG9uIHNjcmlwdHMgdGhhdCBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQuCi0gCi0t QWxzbyBwcmludGVkIGlzIHRoZSBsaXN0IG9mIHNjcmlwdHMgdGhhdCB3ZXJlIG1lbnRpb25lZCBp bgotK0Fsc28gcHJpbnRlZCBpcyB0aGUgbGlzdCBvZiBQeXRob24gc2NyaXB0cyB0aGF0IHdlcmUg bWVudGlvbmVkIGluCi0gdGhlIEBjb2Rley5kZWJ1Z19nZGJfc2NyaXB0c30gc2VjdGlvbiBhbmQg d2VyZSBub3QgZm91bmQKLSAoQHB4cmVme2RvdGRlYnVnX2dkYl9zY3JpcHRzIHNlY3Rpb259KS4K LSBUaGlzIGlzIHVzZWZ1bCBiZWNhdXNlIHRoZWlyIG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVu IEB2YWx1ZXtHREJOfQotIHRyaWVzIHRvIGxvYWQgdGhlbSBhbmQgZmFpbHMuICBUaGVyZSBtYXkg YmUgbWFueSBvZiB0aGVtLCBhbmQgcHJpbnRpbmcKLSBhbiBlcnJvciBtZXNzYWdlIGZvciBlYWNo IG9uZSBpcyBwcm9ibGVtYXRpYy4KLSAKLS1JZiBAdmFye3JlZ2V4cH0gaXMgc3VwcGxpZWQgb25s eSBzY3JpcHRzIHdpdGggbWF0Y2hpbmcgbmFtZXMgYXJlIHByaW50ZWQuCi0rSWYgQHZhcntyZWdl eHB9IGlzIHN1cHBsaWVkIG9ubHkgUHl0aG9uIHNjcmlwdHMgd2l0aCBtYXRjaGluZyBuYW1lcyBh cmUgcHJpbnRlZC4KLSAKLSBFeGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUKLS0oZ2RiKSBpbmZv IGF1dG8tbG9hZC1zY3JpcHRzCi0rKGdkYikgaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMK LSBMb2FkZWQgIFNjcmlwdAotIFllcyAgICAgcHktc2VjdGlvbi1zY3JpcHQucHkKLSAgICAgICAg IGZ1bGwgbmFtZTogL3RtcC9weS1zZWN0aW9uLXNjcmlwdC5weQotSW5kZXg6IGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTgg MDA6NDQ6MjYuOTU4NDM3NTAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0 aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1A QCAtMzEsMjkgKzMxLDU2IEBACi0gCi0gI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgotIAot LS8qIE5PVEU6IEl0J3MgdHJpdmlhbCB0byBhbHNvIHN1cHBvcnQgYXV0by1sb2FkaW5nIG5vcm1h bCBnZGIgc2NyaXB0cy4KLS0gICBUaGVyZSBoYXMgeWV0IHRvIGJlIGEgbmVlZCBzbyBpdCdzIG5v dCBpbXBsZW1lbnRlZC4gICovCi0tCi0gLyogVGhlIHN1ZmZpeCBvZiBwZXItb2JqZmlsZSBzY3Jp cHRzIHRvIGF1dG8tbG9hZC4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9v LnNvLCBsb29rIGZvciBsaWJmb28tZ2RiLnB5LiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fRklM RV9OQU1FICItZ2RiLnB5IgotIAotLS8qIFRoZSBzZWN0aW9uIHRvIGxvb2sgZm9yIHNjcmlwdHMg KGluIGZpbGUgZm9ybWF0cyB0aGF0IHN1cHBvcnQgc2VjdGlvbnMpLgotKy8qIFRoZSBzZWN0aW9u IHRvIGxvb2sgZm9yIFB5dGhvbiBhdXRvLWxvYWRlZCBzY3JpcHRzIChpbiBmaWxlIGZvcm1hdHMg dGhhdAotKyAgIHN1cHBvcnQgc2VjdGlvbnMpLgotICAgIEVhY2ggZW50cnkgaW4gdGhpcyBzZWN0 aW9uIGlzIGEgYnl0ZSBvZiB2YWx1ZSAxLCBhbmQgdGhlbiB0aGUgbnVsLXRlcm1pbmF0ZWQKLSAg ICBuYW1lIG9mIHRoZSBzY3JpcHQuICBUaGUgc2NyaXB0IG5hbWUgbWF5IGluY2x1ZGUgYSBkaXJl Y3RvcnkuCi0gICAgVGhlIGxlYWRpbmcgYnl0ZSBpcyB0byBhbGxvdyB1cHdhcmQgY29tcGF0aWJs ZSBleHRlbnNpb25zLiAgKi8KLSAjZGVmaW5lIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FICIuZGVi dWdfZ2RiX3NjcmlwdHMiCi0gCi0tLyogVXNlci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rp c2FibGUgYXV0by1sb2FkaW5nOgotLSAgIHNldCBhdXRvLWxvYWQtc2NyaXB0cyBvbnxvZmYKLS0g ICBUaGlzIGlzIHRydWUgaWYgd2Ugc2hvdWxkIGF1dG8tbG9hZCBhc3NvY2lhdGVkIHNjcmlwdHMg d2hlbiBhbiBvYmpmaWxlCi0tICAgaXMgb3BlbmVkLCBmYWxzZSBvdGhlcndpc2UuCi0tICAgQXQg dGhlIG1vbWVudCwgdGhpcyBvbmx5IGFmZmVjdHMgcHl0aG9uIHNjcmlwdHMsIGJ1dCB0aGVyZSdz IG5vIHJlYXNvbgotLSAgIG9uZSBjb3VsZG4ndCBhbHNvIGhhdmUgb3RoZXIga2luZHMgb2YgYXV0 by1sb2FkZWQgc2NyaXB0cywgYW5kIHRoZXJlJ3MKLS0gICBubyByZWFzb24gdG8gaGF2ZSB0aGVt IGVhY2ggY29udHJvbGxlZCBieSBhIHNlcGFyYXRlIGZsYWcuCi0tICAgU28gd2UgZWxpZGUgInB5 dGhvbiIgZnJvbSB0aGUgbmFtZSBoZXJlIGFuZCBpbiB0aGUgb3B0aW9uLgotLSAgIFRoZSBmYWN0 IHRoYXQgaXQgbGl2ZXMgaGVyZSBpcyBqdXN0IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gICov Ci0tc3RhdGljIGludCBhdXRvX2xvYWRfc2NyaXB0cyA9IDE7Ci0rLyogVXNlci1zZXR0YWJsZSBv cHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzOgot KyAgIHNldCBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgb258b2ZmCi0rICAgVGhpcyBpcyB0cnVl IGlmIHdlIHNob3VsZCBhdXRvLWxvYWQgYXNzb2NpYXRlZCBQeXRob24gc2NyaXB0cyB3aGVuIGFu Ci0rICAgb2JqZmlsZSBpcyBvcGVuZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGlu dCBhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMgPSAxOwotKwotK3N0YXRpYyB2b2lkIGdkYnB5X2xv YWRfYXV0b19zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJ CQkJCUZJTEUgKmZpbGUsCi0rCQkJCQkJY29uc3QgY2hhciAqZmlsZW5hbWUpOwotKwotKy8qICJz aG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIGNvbmZpZ3VyYXRp b24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfcHl0aG9u X3NjcmlwdHMgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkJICAgICAg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0rICBm cHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMg aXMgJXMuXG4iKSwgdmFsdWUpOwotK30KLSsKLSsvKiBEZWZpbml0aW9uIG9mIHNjcmlwdCBsYW5n dWFnZSBmb3IgUHl0aG9uIHNjcmlwdHMuICAqLwotKwotK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2Ny aXB0X2xhbmd1YWdlIHNjcmlwdF9sYW5ndWFnZV9weXRob24KLSsgID0geyBHREJQWV9BVVRPX0ZJ TEVfTkFNRSwgZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSB9OwotKwotKy8qIFdy YXBwZXIgb2Ygc291cmNlX3B5dGhvbl9zY3JpcHRfZm9yX29iamZpbGUgZm9yIHNjcmlwdF9sYW5n dWFnZV9weXRob24uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfbG9hZF9hdXRvX3Njcmlw dF9mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0rCQkJ CSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7Ci0rICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFj ZV9pbmZvICpwc3BhY2VfaW5mbzsKLSsKLSsgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFz aCB0YWJsZSB0b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgotKyAgICAgY2Fu IHByaW50IGl0LiAgKi8KLSsgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0 YV9mb3JfbG9hZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsgIG1heWJlX2FkZF9zY3Jp cHQgKHBzcGFjZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0 aG9uKTsKLSsKLSsgIHNvdXJjZV9weXRob25fc2NyaXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBm aWxlLCBmaWxlbmFtZSk7Ci0rfQotIAotIC8qIExvYWQgc2NyaXB0cyBzcGVjaWZpZWQgaW4gT0JK RklMRS4KLSAgICBTVEFSVCxFTkQgZGVsaW1pdCBhIGJ1ZmZlciBjb250YWluaW5nIGEgbGlzdCBv ZiBudWwtdGVybWluYXRlZAotQEAgLTEyMSw2ICsxNDgsMTcgQEAgc291cmNlX3NlY3Rpb25fc2Ny aXB0cyAoc3RydWN0IG9iamZpbGUgKgotIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7 Ci0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSAJfQotKyAgICAgIGVsc2UK LSsJewotKwkgIGZ1bGxfcGF0aCA9IE5VTEw7Ci0rCi0rCSAgLyogV2UgZG9uJ3QgdGhyb3cgYW4g ZXJyb3IsIHRoZSBwcm9ncmFtIGlzIHN0aWxsIGRlYnVnZ2FibGUuICAqLwotKwkgIGlmIChzY3Jp cHRfbm90X2ZvdW5kX3dhcm5pbmdfcHJpbnQgKHBzcGFjZV9pbmZvKSkKLSsJICAgIHdhcm5pbmcg KF8oIk1pc3NpbmcgYXV0by1sb2FkIHNjcmlwdHMgcmVmZXJlbmNlZCBpbiBzZWN0aW9uICVzXG5c Ci0rb2YgZmlsZSAlc1xuXAotK1VzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9uIFtSRUdFWFBdJyB0 byBsaXN0IHRoZW0uIiksCi0rCQkgICAgIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxl LT5uYW1lKTsKLSsJfQotIAotICAgICAgIC8qIElmIG9uZSBzY3JpcHQgaXNuJ3QgZm91bmQgaXQn cyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8gbm90IGJlCi0gCSBmb3VuZCBlaXRoZXIuICBXZSBk b24ndCB3YW50IHRvIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgZm9yIGVhY2gKLUBAIC0xMjksMjQg KzE2NywxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCi0g CSBJV0JOIGlmIGNvbXBsYWludHMuYyB3ZXJlIG1vcmUgZ2VuZXJhbC1wdXJwb3NlLiAgKi8KLSAK LS0gICAgICBpbl9oYXNoX3RhYmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZp bGUsCi0tCQkJCQlvcGVuZWQgPyBmdWxsX3BhdGggOiBOVUxMKTsKLSsgICAgICBpbl9oYXNoX3Rh YmxlID0gbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGZpbGUsIGZ1bGxfcGF0aCwKLSsJ CQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAKLS0gICAgICBpZiAoISBvcGVuZWQpCi0t CXsKLS0JICAvKiBXZSBkb24ndCB0aHJvdyBhbiBlcnJvciwgdGhlIHByb2dyYW0gaXMgc3RpbGwg ZGVidWdnYWJsZS4gICovCi0tCSAgaWYgKHNjcmlwdF9ub3RfZm91bmRfd2FybmluZ19wcmludCAo cHNwYWNlX2luZm8pKQotLQkgICAgd2FybmluZyAoXygiTWlzc2luZyBhdXRvLWxvYWQgc2NyaXB0 cyByZWZlcmVuY2VkIGluIHNlY3Rpb24gJXNcblwKLS1vZiBmaWxlICVzXG5cCi0tVXNlIGBpbmZv IGF1dG8tbG9hZC1zY3JpcHRzIFtSRUdFWFBdJyB0byBsaXN0IHRoZW0uIiksCi0tCQkgICAgIEdE QlBZX0FVVE9fU0VDVElPTl9OQU1FLCBvYmpmaWxlLT5uYW1lKTsKLS0JfQotLSAgICAgIGVsc2UK LS0JewotLQkgIC8qIElmIHRoaXMgZmlsZSBpcyBub3QgY3VycmVudGx5IGxvYWRlZCwgbG9hZCBp dC4gICovCi0tCSAgaWYgKCEgaW5faGFzaF90YWJsZSkKLS0JICAgIHNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7Ci0tCX0KLSsgICAg ICAvKiBJZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwot KyAgICAgIGlmIChvcGVuZWQgJiYgIWluX2hhc2hfdGFibGUpCi0rCXNvdXJjZV9weXRob25fc2Ny aXB0X2Zvcl9vYmpmaWxlIChvYmpmaWxlLCBzdHJlYW0sIGZ1bGxfcGF0aCk7Ci0gCi0gICAgICAg ZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci1AQCAtMTgxLDM2ICsyMDcsNzUgQEAgYXV0 b19sb2FkX3NlY3Rpb25fc2NyaXB0cyAoc3RydWN0IG9iamZpbAotICAgZG9fY2xlYW51cHMgKGNs ZWFudXBzKTsKLSB9Ci0gCi0tLyogTG9hZCBhbnkgYXV0by1sb2FkZWQgc2NyaXB0cyBmb3IgT0JK RklMRS4gICovCi0rLyogTG9hZCBhbnkgUHl0aG9uIGF1dG8tbG9hZGVkIHNjcmlwdHMgZm9yIE9C SkZJTEUuICAqLwotIAotIHZvaWQKLS1sb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCi0rZ2RicHlfbG9hZF9hdXRvX3NjcmlwdHNfZm9yX29iamZp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsKLS0gIGlmIChhdXRvX2xvYWRfc2NyaXB0 cyAmJiBnZGJweV9nbG9iYWxfYXV0b19sb2FkKQotKyAgaWYgKGF1dG9fbG9hZF9weXRob25fc2Ny aXB0cykKLSAgICAgewotLSAgICAgIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAob2JqZmlsZSwg R0RCUFlfQVVUT19GSUxFX05BTUUpOwotKyAgICAgIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAo b2JqZmlsZSwgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotICAgICAgIGF1dG9fbG9hZF9zZWN0 aW9uX3NjcmlwdHMgKG9iamZpbGUsIEdEQlBZX0FVVE9fU0VDVElPTl9OQU1FKTsKLSAgICAgfQot IH0KLSsKLSsvKiBXcmFwcGVyIGZvciAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLiAg Ki8KLSsKLStzdGF0aWMgdm9pZAotK2luZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzIChjaGFy ICpwYXR0ZXJuLCBpbnQgZnJvbV90dHkpCi0rewotKyAgYXV0b19sb2FkX2luZm9fc2NyaXB0cyAo cGF0dGVybiwgZnJvbV90dHksICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSt9Ci0gDAotIHZv aWQKLSBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCkKLSB7Ci0rICBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqY21kOwotKyAgY2hhciAqY21kX25hbWU7Ci0rCi0rICBhZGRfc2V0c2hv d19ib29sZWFuX2NtZCAoInB5dGhvbi1zY3JpcHRzIiwgY2xhc3Nfc3VwcG9ydCwKLSsJCQkgICAm YXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rU2V0IHRoZSBkZWJ1Z2dlcidzIGJlaGF2 aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMuIiksIF8oIlwKLStTaG93 IHRoZSBkZWJ1Z2dlcidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNj cmlwdHMuIiksIF8oIlwKLStJZiBlbmFibGVkLCBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cyBh cmUgbG9hZGVkIHdoZW4gdGhlIGRlYnVnZ2VyIHJlYWRzXG5cCi0rYW4gZXhlY3V0YWJsZSBvciBz aGFyZWQgbGlicmFyeS5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9u cyBmb3IgdW50cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkgICBOVUxMLCBzaG93X2F1dG9fbG9h ZF9weXRob25fc2NyaXB0cywKLSsJCQkgICBhdXRvX2xvYWRfc2V0X2NtZGxpc3RfZ2V0ICgpLAot KwkJCSAgIGF1dG9fbG9hZF9zaG93X2NtZGxpc3RfZ2V0ICgpKTsKLSsKLSAgIGFkZF9zZXRzaG93 X2Jvb2xlYW5fY21kICgiYXV0by1sb2FkLXNjcmlwdHMiLCBjbGFzc19zdXBwb3J0LAotLQkJCSAg ICZhdXRvX2xvYWRfc2NyaXB0cywgXygiXAotLVNldCB0aGUgZGVidWdnZXIncyBiZWhhdmlvdXIg cmVnYXJkaW5nIGF1dG8tbG9hZGVkIHNjcmlwdHMuIiksIF8oIlwKLS1TaG93IHRoZSBkZWJ1Z2dl cidzIGJlaGF2aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgc2NyaXB0cy4iKSwgXygiXAotLUlm IGVuYWJsZWQsIGF1dG8tbG9hZGVkIHNjcmlwdHMgYXJlIGxvYWRlZCB3aGVuIHRoZSBkZWJ1Z2dl ciByZWFkc1xuXAotLWFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuIiksCi0tCQkJICAg TlVMTCwgTlVMTCwKLS0JCQkgICAmc2V0bGlzdCwKLS0JCQkgICAmc2hvd2xpc3QpOwotKwkJCSAg ICZhdXRvX2xvYWRfcHl0aG9uX3NjcmlwdHMsIF8oIlwKLStTZXQgdGhlIGRlYnVnZ2VyJ3MgYmVo YXZpb3VyIHJlZ2FyZGluZyBhdXRvLWxvYWRlZCBQeXRob24gc2NyaXB0cywgIgotKwkJCQkJCQkJ ICJkZXByZWNhdGVkLiIpLAotKwkJCSAgIF8oIlwKLStTaG93IHRoZSBkZWJ1Z2dlcidzIGJlaGF2 aW91ciByZWdhcmRpbmcgYXV0by1sb2FkZWQgUHl0aG9uIHNjcmlwdHMsICIKLSsJCQkJCQkJCSAi ZGVwcmVjYXRlZC4iKSwKLSsJCQkgICBOVUxMLCBOVUxMLCBzaG93X2F1dG9fbG9hZF9weXRob25f c2NyaXB0cywKLSsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKLSsgIGNtZF9uYW1lID0gImF1 dG8tbG9hZC1zY3JpcHRzIjsKLSsgIGNtZCA9IGxvb2t1cF9jbWQgKCZjbWRfbmFtZSwgc2V0bGlz dCwgIiIsIC0xLCAxKTsKLSsgIGRlcHJlY2F0ZV9jbWQgKGNtZCwgInNldCBhdXRvLWxvYWQgcHl0 aG9uLXNjcmlwdHMiKTsKLSsKLSsgIC8qIEl0IGlzIG5lZWRlZCBiZWNhdXNlIGxvb2t1cF9jbWQg dXBkYXRlcyB0aGUgQ01EX05BTUUgcG9pbnRlci4gICovCi0rICBjbWRfbmFtZSA9ICJhdXRvLWxv YWQtc2NyaXB0cyI7Ci0rICBjbWQgPSBsb29rdXBfY21kICgmY21kX25hbWUsIHNob3dsaXN0LCAi IiwgLTEsIDEpOwotKyAgZGVwcmVjYXRlX2NtZCAoY21kLCAic2hvdyBhdXRvLWxvYWQgcHl0aG9u LXNjcmlwdHMiKTsKLSsKLSsgIGFkZF9jbWQgKCJweXRob24tc2NyaXB0cyIsIGNsYXNzX2luZm8s IGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLAotKwkgICBfKCJQcmludCB0aGUgbGlzdCBv ZiBhdXRvbWF0aWNhbGx5IGxvYWRlZCBQeXRob24gc2NyaXB0cy5cblwKLStVc2FnZTogaW5mbyBh dXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgW1JFR0VYUF0iKSwKLSsJICAgYXV0b19sb2FkX2luZm9f Y21kbGlzdF9nZXQgKCkpOwotKwotKyAgY21kID0gYWRkX2luZm8gKCJhdXRvLWxvYWQtc2NyaXB0 cyIsIGluZm9fYXV0b19sb2FkX3B5dGhvbl9zY3JpcHRzLCBfKCJcCi0rUHJpbnQgdGhlIGxpc3Qg b2YgYXV0b21hdGljYWxseSBsb2FkZWQgUHl0aG9uIHNjcmlwdHMsIGRlcHJlY2F0ZWQuIikpOwot KyAgZGVwcmVjYXRlX2NtZCAoY21kLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiKTsK LSB9Ci0gCi0gI2Vsc2UgLyogISBIQVZFX1BZVEhPTiAqLwotIAotIHZvaWQKLS1sb2FkX2F1dG9f c2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rZ2RicHlfbG9h ZF9hdXRvX3NjcmlwdHNfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIHsK LSB9Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5dGhvbi5oCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24vcHl0aG9u LmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45NTg0Mzc1MDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9weXRob24vcHl0aG9uLmgJMjAxMi0wNC0xOCAwMDo0NDoyNi45Nzk0Mzc0NDYg KzAyMDAKLUBAIC00MSw3ICs0MSw3IEBAIGludCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0 cnVjdCB0eXAKLSAKLSB2b2lkIHByZXNlcnZlX3B5dGhvbl92YWx1ZXMgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBodGFiX3QgY29waWVkX3R5cGVzKTsKLSAKLS12b2lkIGxvYWRfYXV0b19zY3Jp cHRzX2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7Ci0rdm9pZCBnZGJweV9s b2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwot IAotIGludCBnZGJweV9zaG91bGRfc3RvcCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpicF9v YmopOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9oZWxwLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCTIwMTItMDEtMDQgMDk6MTc6NDUuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hl bHAuZXhwCTIwMTItMDQtMTggMDA6NDQ6MjYuOTgwNDM3NDQ0ICswMjAwCi1AQCAtMjQsNyArMjQs NyBAQAotIGdkYl9zdGFydAotIAotICMgZm9yY2UgdGhlIGhlaWdodCBvZiB0aGUgZGVidWdnZXIg dG8gYmUgcHJldHR5IGxhcmdlIHNvIG5vIHBhZ2VycyBnZXQgdXNlZAotLWdkYl90ZXN0X25vX291 dHB1dCAic2V0IGhlaWdodCA0MDAiICJ0ZXN0IHNldCBoZWlnaHQiCi0rZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgaGVpZ2h0IDUwMCIgInRlc3Qgc2V0IGhlaWdodCIKLSAKLSAjIHVzZSBhIGxhcmdl ciBleHBlY3QgaW5wdXQgYnVmZmVyIGZvciBsb25nIGhlbHAgb3V0cHV0cy4KLSAjIHRlc3QgaGVs cCBhZGQtc3ltYm9sLWZpbGUKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1vYmpmaWxlLXNjcmlwdC5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUt c2NyaXB0LmV4cAkyMDEyLTAxLTE2IDE3OjIxOjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0 LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjU1ODA3OTc3NCArMDIwMAotQEAgLTQwLDcgKzQwLDcg QEAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5m aWxlfQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KLS1nZGJfdGVzdCAiaW5m byBhdXRvLWxvYWQtc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZpbGV9LWdkYi5weS4qIgotK2dkYl90 ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0cyIgIlllcy4qLyR7dGVzdGZpbGV9LWdk Yi5weS4qIgotIAotIGlmICFbcnVudG9fbWFpbl0gewotICAgICBwZXJyb3IgImNvdWxkbid0IHJ1 biB0byBtYWluIgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQu ZXhwCTIwMTItMDEtMTYgMTc6MjE6NTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc2VjdGlvbi1zY3JpcHQuZXhwCTIw MTItMDQtMTggMDA6NDY6NDcuNTU4MDc5Nzc0ICswMjAwCi1AQCAtNTIsMTEgKzUyLDExIEBAIGdk Yl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdkYl9sb2FkICR7YmluZmlsZX0K LSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQuCi0tZ2RiX3Rlc3QgImluZm8gYXV0 by1sb2FkLXNjcmlwdHMiICJZZXMuKiR7dGVzdGZpbGV9LnB5LipmdWxsIG5hbWU6IC4qLyR7dGVz dGZpbGV9LnB5LioiCi0rZ2RiX3Rlc3QgImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIiAi WWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAuKi8ke3Rlc3RmaWxlfS5weS4qIgotICMg QWdhaW4sIHdpdGggYSByZWdleHAgdGhpcyB0aW1lLgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9h ZC1zY3JpcHRzICR7dGVzdGZpbGV9IiAiWWVzLioke3Rlc3RmaWxlfS5weS4qZnVsbCBuYW1lOiAu Ki8ke3Rlc3RmaWxlfS5weS4qIgotK2dkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZCBweXRob24tc2Ny aXB0cyAke3Rlc3RmaWxlfSIgIlllcy4qJHt0ZXN0ZmlsZX0ucHkuKmZ1bGwgbmFtZTogLiovJHt0 ZXN0ZmlsZX0ucHkuKiIKLSAjIEFnYWluLCB3aXRoIGEgcmVnZXhwIHRoYXQgbWF0Y2hlcyBubyBz Y3JpcHRzLgotLWdkYl90ZXN0ICJpbmZvIGF1dG8tbG9hZC1zY3JpcHRzIG5vLXNjcmlwdC1tYXRj aGVzLXRoaXMiIFwKLStnZGJfdGVzdCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMgbm8t c2NyaXB0LW1hdGNoZXMtdGhpcyIgXAotICAgIk5vIGF1dG8tbG9hZCBzY3JpcHRzIG1hdGNoaW5n IG5vLXNjcmlwdC1tYXRjaGVzLXRoaXMuIgotIAotIGlmICFbcnVudG9fbWFpbl0gewoKZGlmZiAt LWdpdCBhL2dkYi1hdXRvbG9hZC0xMW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMTFvZjI4LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWM2OGIwLi4wMDAwMDAwCi0tLSBh L2dkYi1hdXRvbG9hZC0xMW9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NDQgKzAsMCBA QAotW3BhdGNoIzQgNS84XSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aAotaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDQvbXNnMDAwOTIuaHRtbAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDExNC5odG1sCi0KLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA0LzE3IDE1OjUxOjQxCTEuMTQxMTMKLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA0LzE3IDE1OjU0OjI4CTEuMTQxMTQKLSMjIC0xLDUgKzEsMzkgQEAKLSAyMDEy LTA0LTE3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0r CU5ldyBvcHRpb24gInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIi4KLSsJKiBORVdTOiBOZXcgY29t bWFuZHMgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgotKwlhbmQgInNob3cgYXV0by1sb2FkIHNh ZmUtcGF0aCIuCi0rCSogYXV0by1sb2FkLmM6IEluY2x1ZGUgZ2RiX3ZlY3MuaCwgcmVhZGxpbmUv dGlsZGUuaCBhbmQgY29tcGxldGVyLmguCi0rCShhdXRvX2xvYWRfc2FmZV9wYXRoLCBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYykKLSsJKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSwgc2V0 X2F1dG9fbG9hZF9zYWZlX3BhdGgpCi0rCShzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsIGFkZF9h dXRvX2xvYWRfc2FmZV9wYXRoLCBmaWxlbmFtZV9pc19pbl9kaXIpCi0rCShmaWxlbmFtZV9pc19p bl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldy4K LSsJKHNvdXJjZV9nZGJfc2NyaXB0X2Zvcl9vYmpmaWxlKTogTmV3IHZhcmlhYmxlIGlzX3NhZmUu ICBDYWxsCi0rCWZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMgbm90Lgot Kwkoc3RydWN0IGxvYWRlZF9zY3JpcHQpOiBOZXcgZmllbGQgbG9hZGVkLgotKwkobWF5YmVfYWRk X3NjcmlwdCk6IEFkZCBwYXJhbWV0ZXIgbG9hZGVkLiAgSW5pdGlhbGl6ZSBTTE9UIHdpdGggaXQu Ci0rCShwcmludF9zY3JpcHQpOiBVc2UgTE9BREVEIGluZGljYXRvciBpbnN0ZWFkIG9mIEZVTExf UEFUSC4gIENoYW5nZQotKwlvdXRwdXQgIk1pc3NpbmciIHRvICJObyIuCi0rCShfaW5pdGlhbGl6 ZV9hdXRvX2xvYWQpOiBOZXcgdmFyaWFibGUgY21kLiAgSW5pdGlhbGl6ZQotKwlhdXRvX2xvYWRf c2FmZV9wYXRoLiAgUmVnaXN0ZXIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiwKLSsJInNob3cg YXV0by1sb2FkIHNhZmUtcGF0aCIgYW5kICJhZGQtYXV0by1sb2FkLXNhZmUtcGF0aCIuCi0rCSog YXV0by1sb2FkLmggKG1heWJlX2FkZF9zY3JpcHQpOiBBZGQgcGFyYW1ldGVyIGxvYWRlZC4KLSsJ KGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgZGVjbGFyYXRpb24uCi0rCSogY29uZmlnLmlu OiBSZWdlbmVyYXRlLgotKwkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLSsJKiBjb25maWd1cmUu YWM6IE5ldyBwYXJhbWV0ZXJzIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0rCWFuZCAtLXdp dGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aC4KLSsJKiBsaW51eC10aHJlYWQtZGIuYyAodHJ5X3Ro cmVhZF9kYl9sb2FkX2Zyb21fcGRpcl8xKQotKwkodHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21fZGly KTogQ2hlY2sgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSBmaXJzdC4KLSsJKiBtYWluLmMgKGNhcHR1 cmVkX21haW4pOiBDaGVjayBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIGZvcgotKwlMT0NBTF9HREJJ TklULgotKwkqIHB5dGhvbi9weS1hdXRvLWxvYWQuYyAoZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9m b3Jfb2JqZmlsZSk6IE5ldwotKwl2YXJpYWJsZSBpc19zYWZlLiAgQ2FsbCBmaWxlX2lzX2F1dG9f bG9hZF9zYWZlLiAgUmV0dXJuIGlmIGl0IGlzIG5vdC4KLSsJKHNvdXJjZV9zZWN0aW9uX3Njcmlw dHMpOiBDYWxsIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUuICBSZXR1cm4gaWYgaXQgaXMKLSsJbm90 LgotKwotKzIwMTItMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLSsKLSAJYXV0by1sb2FkOiBJbXBsZW1lbnRhdGlvbi4KLSAJKiBORVdTOiBOZXcgZGVz Y3JpcHRpb25zIGZvciAiaW5mbyBhdXRvLWxvYWQiLAotIAkiaW5mbyBhdXRvLWxvYWQgZ2RiLXNj cmlwdHMiLCAiaW5mbyBhdXRvLWxvYWQgcHl0aG9uLXNjcmlwdHMiLAotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIw Lm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTowMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQtMTggMDA6NDk6MzMuMjgyNzA2MzE5 ICswMjAwCi1AQCAtNjcsNiArNjcsMTEgQEAgc2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGIgb258 b2ZmCi0gc2hvdyBhdXRvLWxvYWQgbGlidGhyZWFkLWRiCi0gICBDb250cm9sIGF1dG8tbG9hZGlu ZyBvZiBpbmZlcmlvciBzcGVjaWZpYyB0aHJlYWQgZGVidWdnaW5nIHNoYXJlZCBsaWJyYXJ5Lgot IAotK3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQotK3Nob3cgYXV0 by1sb2FkIHNhZmUtcGF0aAotKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgotKyAgVGhlIGRlbGltaXRlciAoJzonIGFi b3ZlKSBtYXkgZGlmZmVyIGFjY29yZGluZyB0byB0aGUgaG9zdCBwbGF0Zm9ybS4KLSsKLSAqIE5l dyBjb21tYW5kIGxpbmUgb3B0aW9ucwotIAotIC0taW5pdC1jb21tYW5kPUZJTEUsIC1peCAgICAg ICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA0LTE4 IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIwMAotQEAgLTMyLDYgKzMyLDkgQEAKLSAjaW5jbHVkZSAi Z2RiY21kLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktZGVjb2RlLmgiCi0gI2luY2x1ZGUgImNsaS9j bGktc2V0c2hvdy5oIgotKyNpbmNsdWRlICJnZGJfdmVjcy5oIgotKyNpbmNsdWRlICJyZWFkbGlu ZS90aWxkZS5oIgotKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKLSAKLSAvKiBUaGUgc3VmZml4IG9m IHBlci1vYmpmaWxlIHNjcmlwdHMgdG8gYXV0by1sb2FkIGFzIG5vbi1QeXRob24gY29tbWFuZCBm aWxlcy4KLSAgICBFLmcuIFdoZW4gdGhlIHByb2dyYW0gbG9hZHMgbGliZm9vLnNvLCBsb29rIGZv ciBsaWJmb28tZ2RiLmdkYi4gICovCi1AQCAtOTAsNiArOTMsMTgxIEBAIHNob3dfYXV0b19sb2Fk X2xvY2FsX2dkYmluaXQgKHN0cnVjdCB1aV8KLSAJCSAgICB2YWx1ZSk7Ci0gfQotIAotKy8qIERp cmVjdG9yeSBsaXN0IHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy4gIEl0IGlzIG5vdCBj aGVja2VkIGZvcgotKyAgIGFic29sdXRlIHBhdGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNv bW1lbmRlZC4gIEl0IGlzIGluaXRpYWxpemVkIGJ5Ci0rICAgX2luaXRpYWxpemVfYXV0b19sb2Fk LiAgKi8KLStzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKLSsKLSsvKiBWZWN0b3Ig b2YgZGlyZWN0b3J5IGVsZW1lbnRzIG9mIEFVVE9fTE9BRF9TQUZFX1BBVEggd2l0aCBlYWNoIG9u ZSBub3JtYWxpemVkCi0rICAgYnkgdGlsZGVfZXhwYW5kIGFuZCBwb3NzaWJseSBlYWNoIGVudHJp ZXMgaGFzIGFkZGVkIGl0cyBnZGJfcmVhbHBhdGgKLSsgICBjb3VudGVycGFydC4gICovCi0rc3Rh dGljIFZFQyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsKLSsKLSsvKiBVcGRh dGUgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMgZnJvbSBjdXJyZW50IEFVVE9fTE9BRF9TQUZFX1BB VEguICAqLwotKwotK3N0YXRpYyB2b2lkCi0rYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRl ICh2b2lkKQotK3sKLSsgIFZFQyAoY2hhcl9wdHIpICpkaXJfdmVjID0gTlVMTDsKLSsgIHVuc2ln bmVkIGxlbjsKLSsgIGludCBpeDsKLSsKLSsgIGZyZWVfY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYyk7Ci0rCi0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyA9IGRpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0rICBsZW4gPSBWRUNfbGVu Z3RoIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOwotKwotKyAgLyogQXBwbHkg dGlsZGVfZXhwYW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FGRV9QQVRI X1ZFQwotKyAgICAgZWxlbWVudC4gICovCi0rICBmb3IgKGl4ID0gMDsgaXggPCBsZW47IGl4Kysp Ci0rICAgIHsKLSsgICAgICBjaGFyICpkaXIgPSBWRUNfaW5kZXggKGNoYXJfcHRyLCBhdXRvX2xv YWRfc2FmZV9wYXRoX3ZlYywgaXgpOwotKyAgICAgIGNoYXIgKmV4cGFuZGVkID0gdGlsZGVfZXhw YW5kIChkaXIpOwotKyAgICAgIGNoYXIgKnJlYWxfcGF0aCA9IGdkYl9yZWFscGF0aCAoZXhwYW5k ZWQpOwotKwotKyAgICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0 aWxkZV9leHBhbmQtZWQuICAqLwotKyAgICAgIHhmcmVlIChkaXIpOwotKyAgICAgIFZFQ19yZXBs YWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7Ci0r Ci0rICAgICAgLyogSWYgZ2RiX3JlYWxwYXRoIHJldHVybnMgYSBkaWZmZXJlbnQgY29udGVudCwg YXBwZW5kIGl0LiAgKi8KLSsgICAgICBpZiAoc3RyY21wIChyZWFsX3BhdGgsIGV4cGFuZGVkKSA9 PSAwKQotKwl4ZnJlZSAocmVhbF9wYXRoKTsKLSsgICAgICBlbHNlCi0rCVZFQ19zYWZlX3B1c2gg KGNoYXJfcHRyLCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYywgcmVhbF9wYXRoKTsKLSsgICAgfQot K30KLSsKLSsvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX3NhZmVfcGF0aCBjb25m aWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9hdXRvX2xvYWRf c2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVt ZW50ICpjKQotK3sKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSt9Ci0r Ci0rLyogInNob3ciIGNvbW1hbmQgZm9yIHRoZSBhdXRvX2xvYWRfc2FmZV9wYXRoIGNvbmZpZ3Vy YXRpb24gdmFyaWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19hdXRvX2xvYWRfc2Fm ZV9wYXRoIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCSAgc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGlmICgqdmFs dWUgPT0gMCkKLSsgICAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygiQXV0by1sb2FkIGZpbGVz IGFyZSBzYWZlIHRvIGxvYWQgZnJvbSBhbnkgIgotKwkJCSAgICAgICJkaXJlY3RvcnkuXG4iKSk7 Ci0rICBlbHNlCi0rICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkxpc3Qgb2YgZGlyZWN0 b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvICIKLSsJCQkgICAgICAiYXV0by1sb2FkIGZp bGVzIGlzICVzLlxuIiksCi0rCQkgICAgICB2YWx1ZSk7Ci0rfQotKwotKy8qICJhZGQtYXV0by1s b2FkLXNhZmUtcGF0aCIgY29tbWFuZCBmb3IgdGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmln dXJhdGlvbgotKyAgIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2FkZF9hdXRvX2xv YWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0rewotKyAgY2hhciAqczsK LSsKLSsgIGlmIChhcmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCkKLSsgICAgZXJyb3IgKF8oIlwK LStBZGRpbmcgZW1wdHkgZGlyZWN0b3J5IGVsZW1lbnQgZGlzYWJsZXMgdGhlIGF1dG8tbG9hZCBz YWZlLXBhdGggc2VjdXJpdHkuICBcCi0rVXNlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgaW5z dGVhZCBpZiB5b3UgbWVhbiB0aGF0LiIpKTsKLSsKLSsgIHMgPSB4c3RycHJpbnRmICgiJXMlYyVz IiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFyZ3MpOwotKyAgeGZy ZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotKyAgYXV0b19sb2FkX3NhZmVfcGF0aCA9IHM7Ci0r Ci0rICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKCk7Ci0rfQotKwotKy8qIFJldHVy biAxIGlmIEZJTEVOQU1FIGlzIGVxdWFsIHRvIERJUiBvciBpZiBGSUxFTkFNRSBiZWxvbmdzIHRv IHRoZQotKyAgIHN1YmRpcmVjdG9yeSBESVIuICBSZXR1cm4gMCBvdGhlcndpc2UuICBnZGJfcmVh bHBhdGggbm9ybWFsaXphdGlvbiBpcyBuZXZlcgotKyAgIGRvbmUgaGVyZS4gICovCi0rCi0rc3Rh dGljIEFUVFJJQlVURV9QVVJFIGludAotK2ZpbGVuYW1lX2lzX2luX2RpciAoY29uc3QgY2hhciAq ZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmRpcikKLSt7Ci0rICBzaXplX3QgZGlyX2xlbiA9IHN0cmxl biAoZGlyKTsKLSsKLSsgIHdoaWxlIChkaXJfbGVuICYmIElTX0RJUl9TRVBBUkFUT1IgKGRpcltk aXJfbGVuIC0gMV0pKQotKyAgICBkaXJfbGVuLS07Ci0rCi0rICByZXR1cm4gKGZpbGVuYW1lX25j bXAgKGRpciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKLSsJICAmJiAoSVNfRElSX1NFUEFSQVRP UiAoZmlsZW5hbWVbZGlyX2xlbl0pCi0rCSAgICAgIHx8IGZpbGVuYW1lW2Rpcl9sZW5dID09ICdc MCcpKTsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYgRklMRU5BTUUgYmVsb25ncyB0byBvbmUgb2Yg ZGlyZWN0b3J5IGNvbXBvbmVudHMgb2YKLSsgICBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQy4gIFJl dHVybiAwIG90aGVyd2lzZS4KLSsgICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgaXMg bmV2ZXIgY2FsbGVkLgotKyAgICpGSUxFTkFNRV9SRUFMUCBtYXkgYmUgdXBkYXRlZCBieSBnZGJf cmVhbHBhdGggb2YgRklMRU5BTUUgLSBpdCBoYXMgdG8gYmUKLSsgICBmcmVlZCBieSB0aGUgY2Fs bGVyLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLAotKwkJCQkJY2hhciAqKmZpbGVuYW1lX3Jl YWxwKQotK3sKLSsgIGNoYXIgKmRpcjsKLSsgIGludCBpeDsKLSsKLSsgIGZvciAoaXggPSAwOyBW RUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsg KytpeCkKLSsgICAgaWYgKCpmaWxlbmFtZV9yZWFscCA9PSBOVUxMICYmIGZpbGVuYW1lX2lzX2lu X2RpciAoZmlsZW5hbWUsIGRpcikpCi0rICAgICAgYnJlYWs7Ci0rICAKLSsgIGlmIChkaXIgPT0g TlVMTCkKLSsgICAgewotKyAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKLSsJKmZp bGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7Ci0rCi0rICAgICAgZm9yIChp eCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4 LCBkaXIpOwotKwkgICArK2l4KQotKwlpZiAoZmlsZW5hbWVfaXNfaW5fZGlyICgqZmlsZW5hbWVf cmVhbHAsIGRpcikpCi0rCSAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGlmIChkaXIgIT0gTlVMTCkK LSsgICAgcmV0dXJuIDE7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogUmV0dXJuIDEgaWYg RklMRU5BTUUgaXMgbG9jYXRlZCBpbiBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzIG9mCi0rICAgQVVU T19MT0FEX1NBRkVfUEFUSC4gIE90aGVyd2lzZSBjYWxsIHdhcm5pbmcgYW5kIHJldHVybiAwLiAg RklMRU5BTUUgZG9lcwotKyAgIG5vdCBoYXZlIHRvIGJlIGFuIGFic29sdXRlIHBhdGguCi0rCi0r ICAgRXhpc3RlbmNlIG9mIEZJTEVOQU1FIGlzIG5vdCBjaGVja2VkLiAgRnVuY3Rpb24gd2lsbCBz dGlsbCBnaXZlIGEgd2FybmluZwotKyAgIGV2ZW4gaWYgdGhlIGNhbGxlciB3b3VsZCBxdWlldGx5 IHNraXAgbm9uLWV4aXN0aW5nIGZpbGUgaW4gdW5zYWZlCi0rICAgZGlyZWN0b3J5LiAgKi8KLSsK LStpbnQKLStmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChjb25zdCBjaGFyICpmaWxlbmFtZSkKLSt7 Ci0rICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNr X3RvOwotKwotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2NvbnRlbnRz LCAmZmlsZW5hbWVfcmVhbCk7Ci0rCi0rICBpZiAoZmlsZW5hbWVfaXNfaW5fYXV0b19sb2FkX3Nh ZmVfcGF0aF92ZWMgKGZpbGVuYW1lLCAmZmlsZW5hbWVfcmVhbCkpCi0rICAgIHsKLSsgICAgICBk b19jbGVhbnVwcyAoYmFja190byk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgIGF1 dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSsgIGlmIChmaWxlbmFtZV9pc19pbl9h dXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyAoZmlsZW5hbWUsICZmaWxlbmFtZV9yZWFsKSkKLSsgICAg ewotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAg fQotKwotKyAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRl Y2xpbmVkIGJ5IHlvdXIgIgotKwkgICAgICJgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvIFwi JXNcIi4iKSwKLSsJICAgZmlsZW5hbWVfcmVhbCwgYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0rCi0r ICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rICByZXR1cm4gMDsKLSt9Ci0rCi0gLyogRGVmaW5p dGlvbiBvZiBzY3JpcHQgbGFuZ3VhZ2UgZm9yIEdEQiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1h bmRzLiAgKi8KLSAKLSBzdGF0aWMgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSBzY3JpcHRf bGFuZ3VhZ2VfZ2RiCi1AQCAtOTksMTMgKzI3NywyMCBAQCBzdGF0aWMgdm9pZAotIHNvdXJjZV9n ZGJfc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgRklMRSAqZmls ZSwKLSAJCQkgICAgICAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gewotKyAgaW50IGlzX3NhZmU7 Ci0gICBzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjZV9pbmZvICpwc3BhY2VfaW5mbzsKLSAgIHZvbGF0 aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0gCi0rICBpc19zYWZlID0gZmlsZV9pc19hdXRv X2xvYWRfc2FmZSAoZmlsZW5hbWUpOwotKwotICAgLyogQWRkIHRoaXMgc2NyaXB0IHRvIHRoZSBo YXNoIHRhYmxlIHRvbyBzbyAiaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdHMiCi0gICAgICBjYW4g cHJpbnQgaXQuICAqLwotICAgcHNwYWNlX2luZm8gPSBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh X2Zvcl9sb2FkaW5nIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpOwotLSAgbWF5YmVfYWRkX3Njcmlw dCAocHNwYWNlX2luZm8sIGZpbGVuYW1lLCBmaWxlbmFtZSwgJnNjcmlwdF9sYW5ndWFnZV9nZGIp OwotKyAgbWF5YmVfYWRkX3NjcmlwdCAocHNwYWNlX2luZm8sIGlzX3NhZmUsIGZpbGVuYW1lLCBm aWxlbmFtZSwKLSsJCSAgICAmc2NyaXB0X2xhbmd1YWdlX2dkYik7Ci0rCi0rICBpZiAoIWlzX3Nh ZmUpCi0rICAgIHJldHVybjsKLSAKLSAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQot ICAgICB7Ci1AQCAtMTQwLDYgKzMyNSw5IEBAIHN0cnVjdCBsb2FkZWRfc2NyaXB0Ci0gICAgICBp bmFjY2Vzc2libGUpLiAgKi8KLSAgIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aDsKLSAKLSsgIC8qIE5v bi16ZXJvIGlmIHRoaXMgc2NyaXB0IGhhcyBiZWVuIGxvYWRlZC4gICovCi0rICBpbnQgbG9hZGVk OwotKwotICAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5ndWFnZSAqbGFuZ3VhZ2U7Ci0gfTsKLSAK LUBAIC0yMzIsMTIgKzQyMCwxMyBAQCBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRhX2Zvcl9sb2Fk aW5nIChzCi0gICByZXR1cm4gaW5mbzsKLSB9Ci0gCi0tLyogQWRkIHNjcmlwdCBOQU1FIGluIExB TkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uCi0tICAgRlVMTF9QQVRIIGlzIE5V TEwgaWYgdGhlIHNjcmlwdCB3YXNuJ3QgZm91bmQuICBUaGUgcmVzdWx0IGlzCi0rLyogQWRkIHNj cmlwdCBOQU1FIGluIExBTkdVQUdFIHRvIGhhc2ggdGFibGUgb2YgUFNQQUNFX0lORk8uICBMT0FE RUQgMSBpZiB0aGUKLSsgICBzY3JpcHQgaGFzIGJlZW4gKGlzIGdvaW5nIHRvKSBiZSBsb2FkZWQs IDAgb3RoZXJ3aXNlIChzdWNoIGFzIGlmIGl0IGhhcyBub3QKLSsgICBiZWVuIGZvdW5kKS4gIEZV TExfUEFUSCBpcyBOVUxMIGlmIHRoZSBzY3JpcHQgd2Fzbid0IGZvdW5kLiAgVGhlIHJlc3VsdCBp cwotICAgIHRydWUgaWYgdGhlIHNjcmlwdCB3YXMgYWxyZWFkeSBpbiB0aGUgaGFzaCB0YWJsZS4g ICovCi0gCi0gaW50Ci0tbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9wc3BhY2Vf aW5mbyAqcHNwYWNlX2luZm8sCi0rbWF5YmVfYWRkX3NjcmlwdCAoc3RydWN0IGF1dG9fbG9hZF9w c3BhY2VfaW5mbyAqcHNwYWNlX2luZm8sIGludCBsb2FkZWQsCi0gCQkgIGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IGNoYXIgKmZ1bGxfcGF0aCwKLSAJCSAgY29uc3Qgc3RydWN0IHNjcmlwdF9sYW5n dWFnZSAqbGFuZ3VhZ2UpCi0gewotQEAgLTI3MSw2ICs0NjAsNyBAQCBtYXliZV9hZGRfc2NyaXB0 IChzdHJ1Y3QgYXV0b19sb2FkX3BzcGFjCi0gCX0KLSAgICAgICBlbHNlCi0gCSgqc2xvdCktPmZ1 bGxfcGF0aCA9IE5VTEw7Ci0rICAgICAgKCpzbG90KS0+bG9hZGVkID0gbG9hZGVkOwotICAgICAg ICgqc2xvdCktPmxhbmd1YWdlID0gbGFuZ3VhZ2U7Ci0gICAgIH0KLSAKLUBAIC00MzIsNyArNjIy LDcgQEAgcHJpbnRfc2NyaXB0IChzdHJ1Y3QgbG9hZGVkX3NjcmlwdCAqc2NyaQotIAotICAgY2hh aW4gPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsIE5VTEwpOwot IAotLSAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJsb2FkZWQiLCBzY3JpcHQtPmZ1bGxf cGF0aCA/ICJZZXMiIDogIk1pc3NpbmciKTsKLSsgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0 LCAibG9hZGVkIiwgc2NyaXB0LT5sb2FkZWQgPyAiWWVzIiA6ICJObyIpOwotICAgdWlfb3V0X2Zp ZWxkX3N0cmluZyAodWlvdXQsICJzY3JpcHQiLCBzY3JpcHQtPm5hbWUpOwotICAgdWlfb3V0X3Rl eHQgKHVpb3V0LCAiXG4iKTsKLSAKLUBAIC03MTgsNiArOTA4LDggQEAgdm9pZCBfaW5pdGlhbGl6 ZV9hdXRvX2xvYWQgKHZvaWQpOwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQgKHZvaWQp Ci0gewotKyAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmNtZDsKLSsKLSAgIGF1dG9fbG9hZF9w c3BhY2VfZGF0YQotICAgICA9IHJlZ2lzdGVyX3Byb2dyYW1fc3BhY2VfZGF0YV93aXRoX2NsZWFu dXAgKGF1dG9fbG9hZF9wc3BhY2VfZGF0YV9jbGVhbnVwKTsKLSAKLUBAIC03NTcsNCArOTQ5LDMw IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKLSAJICAgXygiUHJp bnQgd2hldGhlciBjdXJyZW50IGRpcmVjdG9yeSAuZ2RiaW5pdCBmaWxlIGhhcyBiZWVuIGxvYWRl ZC5cblwKLSBVc2FnZTogaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAotIAkgICBhdXRv X2xvYWRfaW5mb19jbWRsaXN0X2dldCAoKSk7Ci0rCi0rICBhdXRvX2xvYWRfc2FmZV9wYXRoID0g eHN0cmR1cCAoREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKLSsgIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSsgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVuYW1lX2Nt ZCAoInNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJCSAgICAgJmF1dG9fbG9hZF9zYWZl X3BhdGgsIF8oIlwKLStTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBp cyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygiXAotK1Nob3cgdGhlIGxpc3Qgb2YgZGly ZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcy4iKSwgXygi XAotK1ZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkgZm9yIHRoZSAnc2V0IGF1dG8t bG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAotK2JlIGxvY2F0ZWQgaW4gb25lIG9mIHRoZSBkaXJl Y3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5nIHdpbGwgYmVcblwKLStwcmlu dGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNlLiAgVXNlIGVtcHR5IHN0cmlu ZyAob3IgZXZlblxuXAotK2VtcHR5IGRpcmVjdG9yeSBlbnRyeSkgdG8gYWxsb3cgYW55IGZpbGUg Zm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5cCi0rVGhpcyBvcHRpb24gaXMg aWdub3JlZCBmb3IgdGhlIGtpbmRzIG9mIGZpbGVzIGhhdmluZyAnc2V0IGF1dG8tbG9hZCAuLi4g b2ZmJy5cblwKLStUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9ucyBmb3IgdW50 cnVzdGVkIGluZmVyaW9ycy4iKSwKLSsJCQkJICAgICBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCwK LSsJCQkJICAgICBzaG93X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0rCQkJCSAgICAgYXV0b19sb2Fk X3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkJICAgICBhdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dl dCAoKSk7Ci0rCi0rICBjbWQgPSBhZGRfY21kICgiYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgiLCBj bGFzc19zdXBwb3J0LAotKwkJIGFkZF9hdXRvX2xvYWRfc2FmZV9wYXRoLAotKwkJIF8oIkFkZCBl bnRyaWVzIHRvIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2FmZSAi Ci0rCQkgICAidG8gYXV0by1sb2FkIGZpbGVzLlxuXAotK1NlZSB0aGUgY29tbWFuZHMgJ3NldCBh dXRvLWxvYWQgc2FmZS1wYXRoJyBhbmQgJ3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aCcgdG9cblwK LSthY2Nlc3MgdGhlIGN1cnJlbnQgZnVsbCBsaXN0IHNldHRpbmcuIiksCi0rCQkgJmNtZGxpc3Qp OwotKyAgc2V0X2NtZF9jb21wbGV0ZXIgKGNtZCwgZmlsZW5hbWVfY29tcGxldGVyKTsKLSB9Ci1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6 NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1s b2FkLmgJMjAxMi0wNC0xOCAwMDo0OToyMS42MDc3MzYwMjAgKzAyMDAKLUBAIC0zOSw3ICszOSw4 IEBAIGV4dGVybiBpbnQgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfbG9hZGUKLSBleHRlcm4gc3Ry dWN0IGF1dG9fbG9hZF9wc3BhY2VfaW5mbyAqCi0gICBnZXRfYXV0b19sb2FkX3BzcGFjZV9kYXRh X2Zvcl9sb2FkaW5nIChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlKTsKLSBleHRlcm4gaW50 IG1heWJlX2FkZF9zY3JpcHQgKHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9p bmZvLAotLQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVsbF9wYXRoLAot KwkJCSAgICAgaW50IGxvYWRlZCwgY29uc3QgY2hhciAqbmFtZSwKLSsJCQkgICAgIGNvbnN0IGNo YXIgKmZ1bGxfcGF0aCwKLSAJCQkgICAgIGNvbnN0IHN0cnVjdCBzY3JpcHRfbGFuZ3VhZ2UgKmxh bmd1YWdlKTsKLSBleHRlcm4gdm9pZCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAotIAkJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc2NyaXB0X2xhbmd1YWdl ICpsYW5ndWFnZSk7Ci1AQCAtNTQsNCArNTUsNiBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKiphdXRvX2xvCi0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19s b2FkX3Nob3dfY21kbGlzdF9nZXQgKHZvaWQpOwotIGV4dGVybiBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqKmF1dG9fbG9hZF9pbmZvX2NtZGxpc3RfZ2V0ICh2b2lkKTsKLSAKLStleHRlcm4gaW50 IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKLSsKLSAjZW5k aWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25m aWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZp Zy5pbgkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjAxMjAvZ2RiL2NvbmZpZy5pbgkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYwNzczNjAyMCArMDIw MAotQEAgLTQzLDYgKzQzLDkgQEAKLSAgICBtb3ZlZC4gKi8KLSAjdW5kZWYgREVCVUdESVJfUkVM T0NBVEFCTEUKLSAKLSsvKiBEaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmls ZXMuICovCi0rI3VuZGVmIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSAotKwotIC8qIERlZmlu ZSB0byBCRkQncyBkZWZhdWx0IGFyY2hpdGVjdHVyZS4gKi8KLSAjdW5kZWYgREVGQVVMVF9CRkRf QVJDSAotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZQotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTItMDQt MTggMDA6NDY6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv Y29uZmlndXJlCTIwMTItMDQtMTggMDA6NDk6MjEuNjExNzM2MDEwICswMjAwCi1AQCAtOTU1LDYg Kzk1NSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyCi0gd2l0aF9nZGJfZGF0YWRpcgotIHdp dGhfcmVsb2NhdGVkX3NvdXJjZXMKLSB3aXRoX3JwbQotK3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0 aAotIGVuYWJsZV90YXJnZXRzCi0gZW5hYmxlXzY0X2JpdF9iZmQKLSBlbmFibGVfZ2RiY2xpCi1A QCAtMTY2Niw2ICsxNjY3LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXV0b21hdGljYWxseSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBm aWxlcwotICAgLS13aXRoLXJwbSAgICAgICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBt aXNzaW5nIGRlYnVnaW5mb3MgKHllcy9ubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl Zi4gYXV0bz1saWJycG0uc28pCi0rICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICi0r ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXMKLSsgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRp b25zCi0gICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2lu ZGluZyBzdXBwb3J0Ci0gICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBs aWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpYnJhcnkKLUBAIC04NDc3LDYgKzg0ODIsMzIgQEAgJGFzX2VjaG8gIiRhc19tZTogV0FSTklO RzogJFJQTV9QS0dfRVJSTwotICAgZmkKLSBmaQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2Fz X2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0 aCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRlZmF1bHQgYXV0by1sb2FkIHNhZmUt cGF0aC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYXV0by1sb2FkLXNh ZmUtcGF0aCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgr c2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo OyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KLSsgICB3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKLSsgZmkKLStlbHNlCi0rICB3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGg9IiRwcmVmaXgiCi0rZmkKLSsKLSsKLSsgIHRlc3QgIngkcHJlZml4IiA9IHhO T05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgotKyAgdGVzdCAieCRleGVjX3ByZWZp eCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotKyAgYWNfZGVmaW5lX2Rpcj1g ZXZhbCBlY2hvICR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhgCi0rICBhY19kZWZpbmVfZGlyPWBl dmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCi0rCi0rY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgot KyNkZWZpbmUgREVGQVVMVF9BVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVmaW5lX2RpciIKLStf QUNFT0YKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJl c3VsdDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1Ci0rJGFzX2VjaG8gIiR3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGgiID4mNjsgfQotKwotIAotIAotIHN1YmRpcnM9IiRzdWJkaXJzIHRl c3RzdWl0ZSIKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwky MDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYxMTczNjAxMCArMDIwMAot QEAgLTMzOSw2ICszMzksMTggQEAgZXh0ZXJuIHJwbWRiTWF0Y2hJdGVyYXRvciBycG10c0luaXRJ dGVyYQotICAgZmkKLSBmaQotICAKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8t bG9hZCBzYWZlLXBhdGhdKQotK0FDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCi0rQVNf SEVMUF9TVFJJTkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3Jp ZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzXSkKLStBU19IRUxQX1NUUklORyhbLS13 aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVk IGZpbGVzIGxvY2F0aW9uc10pLAotK1tpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRo IiA9ICJubyI7IHRoZW4KLSsgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKLSsgZmldLAot K1t3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKLStBQ19ERUZJTkVfRElSKERF RkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoLAotKwkg ICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCi0rQUNf TVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCi0rCi0gQUNfQ09ORklHX1NV QkRJUlModGVzdHN1aXRlKQotIAotICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0 aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2Ri L2xpbnV4LXRocmVhZC1kYi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5v cmlnL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCTIwMTIt MDQtMTggMDA6NDk6MjEuNjEyNzM2MDA3ICswMjAwCi1AQCAtODY4LDcgKzg2OCwxMSBAQCB0cnlf dGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCi0gICAvKiBUaGlzIHNob3VsZCBh dCBtaW5pbXVtIGhpdCB0aGUgZmlyc3QgY2hhcmFjdGVyLiAgKi8KLSAgIGdkYl9hc3NlcnQgKGNw ICE9IE5VTEwpOwotICAgc3RyY3B5IChjcCArIDEsIExJQlRIUkVBRF9EQl9TTyk7Ci0tICByZXN1 bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotKwotKyAgaWYgKCFmaWxlX2lzX2F1dG9f bG9hZF9zYWZlIChwYXRoKSkKLSsgICAgcmVzdWx0ID0gMDsKLSsgIGVsc2UKLSsgICAgcmVzdWx0 ID0gdHJ5X3RocmVhZF9kYl9sb2FkIChwYXRoKTsKLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVw KTsKLSAgIHJldHVybiByZXN1bHQ7Ci1AQCAtOTM0LDcgKzkzOCwxMSBAQCB0cnlfdGhyZWFkX2Ri X2xvYWRfZnJvbV9kaXIgKGNvbnN0IGNoYXIKLSAgIG1lbWNweSAocGF0aCwgZGlyLCBkaXJfbGVu KTsKLSAgIHBhdGhbZGlyX2xlbl0gPSAnLyc7Ci0gICBzdHJjcHkgKHBhdGggKyBkaXJfbGVuICsg MSwgTElCVEhSRUFEX0RCX1NPKTsKLS0gIHJlc3VsdCA9IHRyeV90aHJlYWRfZGJfbG9hZCAocGF0 aCk7Ci0rCi0rICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKHBhdGgpKQotKyAgICByZXN1 bHQgPSAwOwotKyAgZWxzZQotKyAgICByZXN1bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgp OwotIAotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgcmV0dXJuIHJlc3VsdDsKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9tYWluLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL21haW4uYwkyMDEyLTA0LTE4IDAw OjQ5OjIxLjYxMjczNjAwNyArMDIwMAotQEAgLTEwMjYsNyArMTAyNiw4IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCi0gICAgIHsKLSAgICAgICBhdXRvX2xvYWRfbG9jYWxfZ2RiaW5pdF9w YXRobmFtZSA9IGdkYl9yZWFscGF0aCAobG9jYWxfZ2RiaW5pdCk7Ci0gCi0tICAgICAgaWYgKCFp bmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQpCi0rICAgICAgaWYgKCFp bmhpYml0X2dkYmluaXQgJiYgYXV0b19sb2FkX2xvY2FsX2dkYmluaXQKLSsJICAmJiBmaWxlX2lz X2F1dG9fbG9hZF9zYWZlIChsb2NhbF9nZGJpbml0KSkKLSAJewotIAkgIGF1dG9fbG9hZF9sb2Nh bF9nZGJpbml0X2xvYWRlZCA9IDE7Ci0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIv ZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAwMDo0Njo0Ny4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNC0xOCAw MDo0OToyMS42MjA3MzU5ODcgKzAyMDAKLUBAIC0yMDgwMSw2ICsyMDgwMSw4IEBAIGdkYi1zY3Jp cHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5lZCBzZXEKLSBsaWJ0aHJlYWQtZGI6ICBBdXRvLWxv YWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgbGlidGhyZWFkX2RiIGlzIG9uLgotIGxvY2FsLWdk YmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJl Y3RvcnkgaXMgb24uCi0gcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNj cmlwdHMgaXMgb24uCi0rc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNo IGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0rICAgICAgICAgICAgaXMgL3Vzci9sb2Nh bC4KLSBAZW5kIHNtYWxsZXhhbXBsZQotIAotIEBhbmNob3J7aW5mbyBhdXRvLWxvYWR9Ci1AQCAt MjA4NzIsMTIgKzIwODc0LDE5IEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBjb21t YW5kcwotIEB0YWIgU2hvdyBzZXR0aW5nIG9mIHRocmVhZCBkZWJ1Z2dpbmcgbGlicmFyeS4KLSBA aXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9LgotIEB0YWIgU2hvdyBzdGF0 ZSBvZiB0aHJlYWQgZGVidWdnaW5nIGxpYnJhcnkuCi0rQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9h ZCBzYWZlLXBhdGh9LgotK0B0YWIgQ29udHJvbCBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRv bWF0aWMgbG9hZGluZy4KLStAaXRlbSBAeHJlZntzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9Lgot K0B0YWIgU2hvdyBkaXJlY3RvcmllcyB0cnVzdGVkIGZvciBhdXRvbWF0aWMgbG9hZGluZy4KLStA aXRlbSBAeHJlZnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0uCi0rQHRhYiBBZGQgZGlyZWN0b3J5 IHRydXN0ZWQgZm9yIGF1dG9tYXRpYyBsb2FkaW5nLgotIEBlbmQgbXVsdGl0YWJsZQotIAotIEBt ZW51Ci0gKiBJbml0IEZpbGUgaW4gdGhlIEN1cnJlbnQgRGlyZWN0b3J5OjogQHNhbXB7c2V0L3No b3cvaW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0KLSAqIGxpYnRocmVhZF9kYi5zby4xIGZp bGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBsaWJ0aHJlYWQt ZGJ9Ci0gKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNhbXB7c2V0L3No b3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KLSsqIEF1dG8tbG9hZGluZyBzYWZlIHBhdGg6 OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZlLXBhdGh9Ci0g QHhyZWZ7UHl0aG9uIEF1dG8tbG9hZGluZ30uCi0gQGVuZCBtZW51Ci0gCi1AQCAtMjA5NzgsNiAr MjA5ODcsMTA0IEBAIGF1dG8tbG9hZGVkLgotIElmIEB2YXJ7cmVnZXhwfSBpcyBzdXBwbGllZCBv bmx5IGNhbm5lZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyB3aXRoCi0gbWF0Y2hpbmcg bmFtZXMgYXJlIHByaW50ZWQuCi0gCi0rQG5vZGUgQXV0by1sb2FkaW5nIHNhZmUgcGF0aAotK0Bz dWJzZWN0aW9uIFNlY3VyaXR5IHJlc3RyaWN0aW9uIGZvciBhdXRvLWxvYWRpbmcKLStAY2luZGV4 IGF1dG8tbG9hZGluZyBzYWZlLXBhdGgKLSsKLStBcyB0aGUgZmlsZXMgb2YgaW5mZXJpb3IgY2Fu IGNvbWUgZnJvbSB1bnRydXN0ZWQgc291cmNlIChzdWNoIGFzIHN1Ym1pdHRlZCBieQotK2FuIGFw cGxpY2F0aW9uIHVzZXIpIEB2YWx1ZXtHREJOfSBkb2VzIG5vdCBhbHdheXMgbG9hZCBhbnkgZmls ZXMgYXV0b21hdGljYWxseS4KLStAdmFsdWV7R0RCTn0gcHJvdmlkZXMgdGhlIEBzYW1we3NldCBh dXRvLWxvYWQgc2FmZS1wYXRofSBzZXR0aW5nIHRvIGxpc3QKLStkaXJlY3RvcmllcyB0cnVzdGVk IGZvciBsb2FkaW5nIGZpbGVzIG5vdCBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB1c2VyLgotKwot K0lmIHRoZSBwYXRoIGlzIG5vdCBzZXQgcHJvcGVybHkgeW91IHdpbGwgc2VlIGEgd2FybmluZyBh bmQgdGhlIGZpbGUgd2lsbCBub3QKLStnZXQgbG9hZGVkOgotKwotK0BzbWFsbGV4YW1wbGUKLSsk IC4vZ2RiIC1xIC4vZ2RiCi0rUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNlci9nZGIvZ2Ri Li4uZG9uZS4KLSt3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLmdkYiIgYXV0 by1sb2FkaW5nIGhhcyBiZWVuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2Fk IHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyL2xvY2FsIi4KLSt3YXJuaW5nOiBGaWxlICIvaG9tZS91 c2VyL2dkYi9nZGItZ2RiLnB5IiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KLSsgICAgICAgICBkZWNs aW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIi91c3IvbG9jYWwiLgot K0BlbmQgc21hbGxleGFtcGxlCi0rCi0rVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3RvcmllcyBp cyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0rCi0rQHRhYmxlIEBjb2Rl Ci0rQGFuY2hvcntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KLStAa2luZGV4IHNldCBhdXRvLWxv YWQgc2FmZS1wYXRoCi0rQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rv cmllc30KLStTZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3Rv cmllcykgdHJ1c3RlZCBmb3IgYXV0b21hdGljCi0rbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNj cmlwdHMuICBZb3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCi0rVGhl IGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBkaXJlY3Rvcnkgc2VwYXJhdG9yIChAc2FtcHs6fSBv biBHTlUgYW5kIFVuaXgKLStzeXN0ZW1zLCBAc2FtcHs7fSBvbiBNUy1XaW5kb3dzIGFuZCBNUy1E T1MpIHRvIHNlcGFyYXRlIGRpcmVjdG9yaWVzLCBzaW1pbGFybHkKLSt0byB0aGUgQGVudntQQVRI fSBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsKLStAYW5jaG9ye3Nob3cgYXV0by1sb2FkIHNhZmUt cGF0aH0KLStAa2luZGV4IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAotK0BpdGVtIHNob3cgYXV0 by1sb2FkIHNhZmUtcGF0aAotK1Nob3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBm b3IgYXV0b21hdGljIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZgotK3NjcmlwdHMuCi0rCi0rQGFu Y2hvcnthZGQtYXV0by1sb2FkLXNhZmUtcGF0aH0KLStAa2luZGV4IGFkZC1hdXRvLWxvYWQtc2Fm ZS1wYXRoCi0rQGl0ZW0gYWRkLWF1dG8tbG9hZC1zYWZlLXBhdGgKLStBZGQgYW4gZW50cnkgKG9y IGxpc3Qgb2YgZW50cmllcykgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdHJ1c3RlZCBmb3IgYXV0 b21hdGljCi0rbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aXBsZSBlbnRy aWVzIG1heSBiZSBkZWxpbWl0ZWQgYnkgdGhlCi0raG9zdCBwbGF0Zm9ybSBkaXJlY3Rvcnkgc2Vw YXJhdG9yIGluIHVzZS4KLStAZW5kIHRhYmxlCi0rCi0rU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRv IGFuIGVtcHR5IHN0cmluZyBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCi0rVGhp cyB2YXJpYWJsZSBpcyBzdXBwb3NlZCB0byBiZSBzZXQgdG8gdGhlIHN5c3RlbSBkaXJlY3Rvcmll cyB3cml0YWJsZSBieSB0aGUKLStzeXN0ZW0gc3VwZXJ1c2VyIG9ubHkuICBVc2VycyBjYW4gYWRk IHRoZWlyIHNvdXJjZSBkaXJlY3RvcmllcyBpbiBpbml0IGZpbGVzIGluCi0rdGhlaXIgaG9tZSBk aXJlY3RvcmllcyAoQHB4cmVme0hvbWUgRGlyZWN0b3J5IEluaXQgRmlsZX0pLiAgU2VlIGFsc28g ZGVwcmVjYXRlZAotK2luaXQgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkKLSsoQHB4cmVm e0luaXQgRmlsZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9KS4KLSsK LStUbyBmb3JjZSBAdmFsdWV7R0RCTn0gdG8gbG9hZCB0aGUgZmlsZXMgaXQgZGVjbGluZWQgdG8g bG9hZCBpbiB0aGUgcHJldmlvdXMKLStleGFtcGxlLCB5b3UgY291bGQgdXNlIG9uZSBvZiB0aGUg Zm9sbG93aW5nIHdheXM6Ci0rCi0rQGl0ZW1pemUgQGJ1bGxldAotK0BpdGVtIH4vLmdkYmluaXQ6 IGFkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYgotK1NwZWNpZnkgdGhpcyB0cnVzdGVk IGRpcmVjdG9yeSAob3IgYSBmaWxlKSBhcyBhZGRpdGlvbmFsIGNvbXBvbmVudCBvZiB0aGUgbGlz dC4KLStZb3UgaGF2ZSB0byBzcGVjaWZ5IGFsc28gYW55IGV4aXN0aW5nIGRpcmVjdG9yaWVzIGRp c3BsYXllZCBieQotK2J5IEBzYW1we3Nob3cgYXV0by1sb2FkIHNhZmUtcGF0aH0gKHN1Y2ggYXMg QHNhbXB7L3VzcjovYmlufSBpbiB0aGlzIGV4YW1wbGUpLgotKwotK0BpdGVtIEBrYmR7Z2RiIC1p ZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIiIFtAZG90c3t9 XX0KLStTcGVjaWZ5IHRoaXMgZGlyZWN0b3J5IGFzIGluIHRoZSBwcmV2aW91cyBjYXNlIGJ1dCBq dXN0IGZvciBhIHNpbmdsZQotK0B2YWx1ZXtHREJOfSBzZXNzaW9uLgotKwotK0BpdGVtIEBrYmR7 Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIiBbQGRvdHN7fV19Ci0rRGlzYWJsZSBh dXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lvbi4KLStU aGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5nIHRoaXMgQHZhbHVle0dE Qk59IHNlc3Npb24gd2lsbCBjb21lCi0rZnJvbSB0cnVzdGVkIHNvdXJjZXMuCi0rCi0rQGl0ZW0g QGtiZHsuL2NvbmZpZ3VyZSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aH0KLStEdXJpbmcg Y29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlzYWJsZSBhbnkgYXV0by1sb2Fk aW5nIHNhZmV0eS4KLStUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3Ugd2lsbCBldmVyIGRl YnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCi0rdHJ1c3RlZCBzb3VyY2VzLgot K0BlbmQgaXRlbWl6ZQotKwotK09uIHRoZSBvdGhlciBoYW5kIHlvdSBjYW4gYWxzbyBleHBsaWNp dGx5IGZvcmJpZCBhdXRvbWF0aWMgZmlsZXMgbG9hZGluZyB3aGljaAotK2Fsc28gc3VwcHJlc3Nl cyBhbnkgc3VjaCB3YXJuaW5nIG1lc3NhZ2VzOgotKwotK0BpdGVtaXplIEBidWxsZXQKLStAaXRl bSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBbQGRvdHN7fV19Ci0rWW91IGNhbiB1 c2UgQHZhbHVle0dEQk59IGNvbW1hbmQtbGluZSBvcHRpb24gZm9yIGEgc2luZ2xlIEB2YWx1ZXtH REJOfSBzZXNzaW9uLgotKwotK0BpdGVtIEBzYW1we34vLmdkYmluaXR9OiBAc2FtcHtzZXQgYXV0 by1sb2FkIG5vfQotK0Rpc2FibGUgYXV0by1sb2FkaW5nIGdsb2JhbGx5IGZvciB0aGUgdXNlcgot KyhAcHhyZWZ7SG9tZSBEaXJlY3RvcnkgSW5pdCBGaWxlfSkuICBXaGlsZSBpdCBpcyBpbXByb2Jh YmxlLCB5b3UgY291bGQgYWxzbwotK3VzZSBzeXN0ZW0gaW5pdCBmaWxlIGluc3RlYWQgKEBweHJl ZntTeXN0ZW0td2lkZSBjb25maWd1cmF0aW9ufSkuCi0rQGVuZCBpdGVtaXplCi0rCi0rVGhpcyBz ZXR0aW5nIGFwcGxpZXMgdG8gdGhlIGZpbGUgbmFtZXMgYXMgZW50ZXJlZCBieSB1c2VyLiAgSWYg bm8gZW50cnkgbWF0Y2hlcwotK0B2YWx1ZXtHREJOfSB0cmllcyBhcyBhIGxhc3QgcmVzb3J0IHRv IGFsc28gcmVzb2x2ZSBhbGwgdGhlIGZpbGUgbmFtZXMgaW50bwotK3RoZWlyIGNhbm9uaWNhbCBm b3JtICh0eXBpY2FsbHkgcmVzb2x2aW5nIHN5bWJvbGljIGxpbmtzKSBhbmQgY29tcGFyZSB0aGUK LStlbnRyaWVzIGFnYWluLiAgQHZhbHVle0dEQk59IGFscmVhZHkgY2Fub25pY2FsaXplcyBtb3N0 IG9mIHRoZSBmaWxlbmFtZXMgb24gaXRzCi0rb3duIGJlZm9yZSBzdGFydGluZyB0aGUgY29tcGFy aXNvbiBzbyBhIGNhbm9uaWNhbCBmb3JtIG9mIGRpcmVjdG9yaWVzIGlzCi0rcmVjb21tZW5kZWQg dG8gYmUgZW50ZXJlZC4KLSsKLSBAbm9kZSBNZXNzYWdlcy9XYXJuaW5ncwotIEBzZWN0aW9uIE9w dGlvbmFsIFdhcm5pbmdzIGFuZCBNZXNzYWdlcwotIAotQEAgLTI0OTU1LDEwICsyNTA2MiwxMCBA QCBFeGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUKLSAoZ2RiKSBpbmZvIGF1dG8tbG9hZCBweXRo b24tc2NyaXB0cwotLUxvYWRlZCAgU2NyaXB0Ci0tWWVzICAgICBweS1zZWN0aW9uLXNjcmlwdC5w eQotLSAgICAgICAgZnVsbCBuYW1lOiAvdG1wL3B5LXNlY3Rpb24tc2NyaXB0LnB5Ci0tTWlzc2lu ZyBteS1mb28tcHJldHR5LXByaW50ZXJzLnB5Ci0rTG9hZGVkIFNjcmlwdAotK1llcyAgICBweS1z ZWN0aW9uLXNjcmlwdC5weQotKyAgICAgICBmdWxsIG5hbWU6IC90bXAvcHktc2VjdGlvbi1zY3Jp cHQucHkKLStObyAgICAgbXktZm9vLXByZXR0eS1wcmludGVycy5weQotIEBlbmQgc21hbGxleGFt cGxlCi0gQGVuZCB0YWJsZQotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3B5dGhv bi9weS1hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTItMDQtMTggMDA6NDY6NDcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5j CTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1ICswMjAwCi1AQCAtNzIsMTQgKzcyLDE5IEBA IHN0YXRpYyB2b2lkCi0gZ2RicHlfbG9hZF9hdXRvX3NjcmlwdF9mb3Jfb2JqZmlsZSAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIEZJTEUgKmZpbGUsCi0gCQkJCSAgICBjb25zdCBjaGFyICpmaWxl bmFtZSkKLSB7Ci0rICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBhdXRvX2xvYWRfcHNwYWNlX2lu Zm8gKnBzcGFjZV9pbmZvOwotIAotKyAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUg KGZpbGVuYW1lKTsKLSsKLSAgIC8qIEFkZCB0aGlzIHNjcmlwdCB0byB0aGUgaGFzaCB0YWJsZSB0 b28gc28gImluZm8gYXV0by1sb2FkIHB5dGhvbi1zY3JpcHRzIgotICAgICAgY2FuIHByaW50IGl0 LiAgKi8KLSAgIHBzcGFjZV9pbmZvID0gZ2V0X2F1dG9fbG9hZF9wc3BhY2VfZGF0YV9mb3JfbG9h ZGluZyAoY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLS0gIG1heWJlX2FkZF9zY3JpcHQgKHBzcGFj ZV9pbmZvLCBmaWxlbmFtZSwgZmlsZW5hbWUsICZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSsg IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBpc19zYWZlLCBmaWxlbmFtZSwgZmlsZW5h bWUsCi0rCQkgICAgJnNjcmlwdF9sYW5ndWFnZV9weXRob24pOwotIAotLSAgc291cmNlX3B5dGhv bl9zY3JpcHRfZm9yX29iamZpbGUgKG9iamZpbGUsIGZpbGUsIGZpbGVuYW1lKTsKLSsgIGlmIChp c19zYWZlKQotKyAgICBzb3VyY2VfcHl0aG9uX3NjcmlwdF9mb3Jfb2JqZmlsZSAob2JqZmlsZSwg ZmlsZSwgZmlsZW5hbWUpOwotIH0KLSAKLSAvKiBMb2FkIHNjcmlwdHMgc3BlY2lmaWVkIGluIE9C SkZJTEUuCi1AQCAtMTQ3LDYgKzE1Miw5IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMgKHN0cnVj dCBvYmpmaWxlICoKLSAJewotIAkgIG1ha2VfY2xlYW51cF9mY2xvc2UgKHN0cmVhbSk7Ci0gCSAg bWFrZV9jbGVhbnVwICh4ZnJlZSwgZnVsbF9wYXRoKTsKLSsKLSsJICBpZiAoIWZpbGVfaXNfYXV0 b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCkpCi0rCSAgICBvcGVuZWQgPSAwOwotIAl9Ci0gICAgICAg ZWxzZQotIAl7Ci1AQCAtMTY3LDcgKzE3NSw3IEBAIFVzZSBgaW5mbyBhdXRvLWxvYWQgcHl0aG9u IFtSRUdFWFBdJyB0bwotIAotIAkgSVdCTiBpZiBjb21wbGFpbnRzLmMgd2VyZSBtb3JlIGdlbmVy YWwtcHVycG9zZS4gICovCi0gCi0tICAgICAgaW5faGFzaF90YWJsZSA9IG1heWJlX2FkZF9zY3Jp cHQgKHBzcGFjZV9pbmZvLCBmaWxlLCBmdWxsX3BhdGgsCi0rICAgICAgaW5faGFzaF90YWJsZSA9 IG1heWJlX2FkZF9zY3JpcHQgKHBzcGFjZV9pbmZvLCBvcGVuZWQsIGZpbGUsIGZ1bGxfcGF0aCwK LSAJCQkJCSZzY3JpcHRfbGFuZ3VhZ2VfcHl0aG9uKTsKLSAKLSAgICAgICAvKiBJZiB0aGlzIGZp bGUgaXMgbm90IGN1cnJlbnRseSBsb2FkZWQsIGxvYWQgaXQuICAqLwotSW5kZXg6IGdkYi03LjQu NTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW9iamZpbGUtc2NyaXB0LmV4 cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDY6NDcuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktb2JqZmlsZS1zY3JpcHQuZXhwCTIwMTItMDQtMTggMDA6NDk6MjEuNjIxNzM1OTg1 ICswMjAwCi1AQCAtMzcsNiArMzcsNyBAQCBpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNv bnRpbnVlIH0KLSBzZXQgcmVtb3RlX3B5dGhvbl9maWxlIFtyZW1vdGVfZG93bmxvYWQgaG9zdCAk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWdkYi5weS5pbiAke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0tZ2RiLnB5XQotIAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgot K2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggJHtyZW1vdGVfcHl0 aG9uX2ZpbGV9IiAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgiCi0gZ2RiX2xvYWQgJHtiaW5maWxl fQotIAotICMgVmVyaWZ5IGdkYiBsb2FkZWQgdGhlIHNjcmlwdC4KLUluZGV4OiBnZGItNy40LjUw LjIwMTIwMTIwL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zZWN0aW9uLXNjcmlwdC5leHAK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ2OjQ3LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXNlY3Rpb24tc2NyaXB0LmV4cAkyMDEyLTA0LTE4IDAwOjQ5OjIxLjYyMTczNTk4NSAr MDIwMAotQEAgLTQ5LDYgKzQ5LDcgQEAgaWYgeyBbc2tpcF9weXRob25fdGVzdHNdIH0geyBjb250 aW51ZSB9Ci0gc2V0IHJlbW90ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5weV0KLSAKLSBnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfdGVzdF9ub19vdXRwdXQgInNldCBhdXRvLWxvYWQgc2Fm ZS1wYXRoICR7cmVtb3RlX3B5dGhvbl9maWxlfSIgInNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIgot IGdkYl9sb2FkICR7YmluZmlsZX0KLSAKLSAjIFZlcmlmeSBnZGIgbG9hZGVkIHRoZSBzY3JpcHQu CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0x Mm9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MmJkYmMuLjAwMDAw MDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1 MiArMCwwIEBACi1bcGF0Y2gjNCA2LzhdIHNldCBkZWJ1ZyBhdXRvLWxvYWQKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA0L21zZzAwMDg5Lmh0bWwKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxMTUuaHRtbAotCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NDoyOAkxLjE0MTE0Ci0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMAkxLjE0MTE1Ci0jIyAtMSw1ICsxLDI3IEBACi0g MjAxMi0wNC0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot IAotKwlOZXcgb3B0aW9uICJzZXQgZGVidWcgYXV0by1sb2FkIi4KLSsJKiBORVdTOiBOZXcgY29t bWFuZHMgInNldCBkZWJ1ZyBhdXRvLWxvYWQiIGFuZCAic2hvdyBkZWJ1ZyBhdXRvLWxvYWQiLgot KwkqIGF1dG8tbG9hZC5jIChkZWJ1Z19hdXRvX2xvYWQsIHNob3dfZGVidWdfYXV0b19sb2FkOiBO ZXcuCi0rCShhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUpCi0rCShmaWxlbmFtZV9pc19p bl9hdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyk6IENhbGwgZnByaW50Zl91bmZpbHRlcmVkCi0rCWlm IERFQlVHX0FVVE9fTE9BRC4KLSsJKGZpbGVfaXNfYXV0b19sb2FkX3NhZmUpOiBOZXcgcGFyYW1l dGVycyBkZWJ1Z19mbXQgYW5kIC4uLi4KLSsJQ2FsbCBmcHJpbnRmX3VuZmlsdGVyZWQgaWYgREVC VUdfQVVUT19MT0FELgotKwkoc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUpOiBFeHRlbmQg dGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUKLSsJY2FsbGVyIGJ5IGV4cGxhbmF0b3J5IHN0cmlu Zy4KLSsJKF9pbml0aWFsaXplX2F1dG9fbG9hZCk6IFJlZ2lzdGVyICJzZXQgZGVidWcgYXV0by1s b2FkIi4KLSsJKiBhdXRvLWxvYWQuaCAoZmlsZV9pc19hdXRvX2xvYWRfc2FmZSk6IE5ldyBwYXJh bWV0ZXJzIGRlYnVnX2ZtdAotKwlhbmQgLi4uLgotKwkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlf dGhyZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEpCi0rCSh0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9k aXIpOiBFeHRlbmQgdGhlIGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgY2FsbGVyCi0rCWJ5IGV4cGxh bmF0b3J5IHN0cmluZy4KLSsJKiBtYWluLmMgKGNhcHR1cmVkX21haW4pOiBMaWtld2lzZS4KLSsJ KiBweXRob24vcHktYXV0by1sb2FkLmMgKGdkYnB5X2xvYWRfYXV0b19zY3JpcHRfZm9yX29iamZp bGUpCi0rCShzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzKTogTGlrZXdpc2UuCi0rCi0rMjAxMi0wNC0x NyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotIAlOZXcg b3B0aW9uICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIuCi0gCSogTkVXUzogTmV3IGNvbW1hbmRz ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCIKLSAJYW5kICJzaG93IGF1dG8tbG9hZCBzYWZlLXBh dGgiLgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNC0xOCAwMDo0OTozMy4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIwMTItMDQt MTggMDA6NTA6MTUuMDE4NjAwMjgyICswMjAwCi1AQCAtNzIsNiArNzIsMTAgQEAgc2hvdyBhdXRv LWxvYWQgc2FmZS1wYXRoCi0gICBTZXQgYSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2gg aXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMuCi0gICBUaGUgZGVsaW1pdGVyICgnOicgYWJv dmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBsYXRmb3JtLgotIAotK3NldCBk ZWJ1ZyBhdXRvLWxvYWQgb258b2ZmCi0rc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLSsgIENvbnRyb2wg ZGlzcGxheSBvZiBkZWJ1Z2dpbmcgaW5mbyBmb3IgYXV0by1sb2FkaW5nIHRoZSBmaWxlcyBhYm92 ZS4KLSsKLSAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9ucwotIAotIC0taW5pdC1jb21tYW5kPUZJ TEUsIC1peCAgICAgICAgICBMaWtlIC0tY29tbWFuZCwgLXggYnV0IGV4ZWN1dGUgaXQKLUluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToy MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQu YwkyMDEyLTA0LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTQzLDYgKzQzLDIwIEBA Ci0gc3RhdGljIHZvaWQgc291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBGSUxFICpmaWxlLAotIAkJCQkJICAgY29uc3QgY2hhciAqZmlsZW5hbWUp OwotIAotKy8qIFZhbHVlIG9mIHRoZSAnc2V0IGRlYnVnIGF1dG8tbG9hZCcgY29uZmlndXJhdGlv biB2YXJpYWJsZS4gICovCi0rc3RhdGljIGludCBkZWJ1Z19hdXRvX2xvYWQgPSAwOwotKwotKy8q ICJzaG93IiBjb21tYW5kIGZvciB0aGUgZGVidWdfYXV0b19sb2FkIGNvbmZpZ3VyYXRpb24gdmFy aWFibGUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hvd19kZWJ1Z19hdXRvX2xvYWQgKHN0cnVj dCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0rCQkgICAgICBzdHJ1Y3QgY21kX2xpc3Rf ZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAo ZmlsZSwgXygiRGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgIgotKwkJCSAgICAib2YgJ3NldCBh dXRvLWxvYWQgLi4uJyBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0gLyogVXNl ci1zZXR0YWJsZSBvcHRpb24gdG8gZW5hYmxlL2Rpc2FibGUgYXV0by1sb2FkaW5nIG9mIEdEQl9B VVRPX0ZJTEVfTkFNRQotICAgIHNjcmlwdHM6Ci0gICAgc2V0IGF1dG8tbG9hZCBnZGItc2NyaXB0 cyBvbnxvZmYKLUBAIC0xMTIsNiArMTI2LDExIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3Vw ZGF0ZSAodm9pZCkKLSAgIHVuc2lnbmVkIGxlbjsKLSAgIGludCBpeDsKLSAKLSsgIGlmIChkZWJ1 Z19hdXRvX2xvYWQpCi0rICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQlf KCJhdXRvLWxvYWQ6IFVwZGF0aW5nIGRpcmVjdG9yaWVzIG9mIFwiJXNcIi5cbiIpLAotKwkJCWF1 dG9fbG9hZF9zYWZlX3BhdGgpOwotKwotICAgZnJlZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9z YWZlX3BhdGhfdmVjKTsKLSAKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNf dG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2FmZV9wYXRoKTsKLUBAIC0xMjYsMTQgKzE0NSwz NCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZvaWQpCi0gICAgICAgY2hhciAq cmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7Ci0gCi0gICAgICAgLyogRW5zdXJl IHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0IHRpbGRlX2V4cGFuZC1lZC4gICovCi0tICAg ICAgeGZyZWUgKGRpcik7Ci0gICAgICAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBhdXRvX2xvYWRf c2FmZV9wYXRoX3ZlYywgaXgsIGV4cGFuZGVkKTsKLSAKLSsgICAgICBpZiAoZGVidWdfYXV0b19s b2FkKQotKwl7Ci0rCSAgaWYgKHN0cmNtcCAoZXhwYW5kZWQsIGRpcikgPT0gMCkKLSsJICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBVc2luZyBk aXJlY3RvcnkgXCIlc1wiLlxuIiksCi0rCQkJCWV4cGFuZGVkKTsKLSsJICBlbHNlCi0rCSAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJCV8oImF1dG8tbG9hZDogUmVzb2x2 ZWQgZGlyZWN0b3J5IFwiJXNcIiAiCi0rCQkJCSAgImFzIFwiJXNcIi5cbiIpLAotKwkJCQlkaXIs IGV4cGFuZGVkKTsKLSsJfQotKyAgICAgIHhmcmVlIChkaXIpOwotKwotICAgICAgIC8qIElmIGdk Yl9yZWFscGF0aCByZXR1cm5zIGEgZGlmZmVyZW50IGNvbnRlbnQsIGFwcGVuZCBpdC4gICovCi0g ICAgICAgaWYgKHN0cmNtcCAocmVhbF9wYXRoLCBleHBhbmRlZCkgPT0gMCkKLSAJeGZyZWUgKHJl YWxfcGF0aCk7Ci0gICAgICAgZWxzZQotLQlWRUNfc2FmZV9wdXNoIChjaGFyX3B0ciwgYXV0b19s b2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCXsKLSsJICBWRUNfc2FmZV9wdXNoIChj aGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIHJlYWxfcGF0aCk7Ci0rCi0rCSAgaWYg KGRlYnVnX2F1dG9fbG9hZCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK LSsJCQkJXygiYXV0by1sb2FkOiBBbmQgY2Fub25pY2FsaXplZCBhcyBcIiVzXCIuXG4iKSwKLSsJ CQkJcmVhbF9wYXRoKTsKLSsJfQotICAgICB9Ci0gfQotIAotQEAgLTIxNywxNiArMjU2LDMwIEBA IGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgIGlmIChkaXIgPT0g TlVMTCkKLSAgICAgewotICAgICAgIGlmICgqZmlsZW5hbWVfcmVhbHAgPT0gTlVMTCkKLS0JKmZp bGVuYW1lX3JlYWxwID0gZ2RiX3JlYWxwYXRoIChmaWxlbmFtZSk7Ci0rCXsKLSsJICAqZmlsZW5h bWVfcmVhbHAgPSBnZGJfcmVhbHBhdGggKGZpbGVuYW1lKTsKLSsJICBpZiAoZGVidWdfYXV0b19s b2FkICYmIHN0cmNtcCAoKmZpbGVuYW1lX3JlYWxwLCBmaWxlbmFtZSkgIT0gMCkKLSsJICAgIGZw cmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkJXygiYXV0by1sb2FkOiBSZXNvbHZl ZCAiCi0rCQkJCSAgImZpbGUgXCIlc1wiIGFzIFwiJXNcIi5cbiIpLAotKwkJCQlmaWxlbmFtZSwg KmZpbGVuYW1lX3JlYWxwKTsKLSsJfQotIAotLSAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0 ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCwgZGlyKTsKLS0JICAgKytp eCkKLS0JaWYgKGZpbGVuYW1lX2lzX2luX2RpciAoKmZpbGVuYW1lX3JlYWxwLCBkaXIpKQotLQkg IGJyZWFrOwotKyAgICAgIGlmIChzdHJjbXAgKCpmaWxlbmFtZV9yZWFscCwgZmlsZW5hbWUpICE9 IDApCi0rCWZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZl X3BhdGhfdmVjLCBpeCwgZGlyKTsKLSsJICAgICArK2l4KQotKwkgIGlmIChmaWxlbmFtZV9pc19p bl9kaXIgKCpmaWxlbmFtZV9yZWFscCwgZGlyKSkKLSsJICAgIGJyZWFrOwotICAgICB9Ci0gCi0g ICBpZiAoZGlyICE9IE5VTEwpCi0tICAgIHJldHVybiAxOwotKyAgICB7Ci0rICAgICAgaWYgKGRl YnVnX2F1dG9fbG9hZCkKLSsJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRv LWxvYWQ6IEZpbGUgXCIlc1wiIG1hdGNoZXMgIgotKwkJCQkJICAiZGlyZWN0b3J5IFwiJXNcIi5c biIpLAotKwkJCSAgICBmaWxlbmFtZSwgZGlyKTsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQot IAotICAgcmV0dXJuIDA7Ci0gfQotQEAgLTI0MCwxMSArMjkzLDIwIEBAIGZpbGVuYW1lX2lzX2lu X2F1dG9fbG9hZF9zYWZlX3BhdGhfdmVjICgKLSAgICBkaXJlY3RvcnkuICAqLwotIAotIGludAot LWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQotK2ZpbGVfaXNf YXV0b19sb2FkX3NhZmUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpkZWJ1Z19m bXQsIC4uLikKLSB7Ci0gICBjaGFyICpmaWxlbmFtZV9yZWFsID0gTlVMTDsKLSAgIHN0cnVjdCBj bGVhbnVwICpiYWNrX3RvOwotIAotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsgICAgewotKyAg ICAgIHZhX2xpc3QgZGVidWdfYXJnczsKLSsKLSsgICAgICB2YV9zdGFydCAoZGVidWdfYXJncywg ZGVidWdfZm10KTsKLSsgICAgICB2ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBkZWJ1 Z19mbXQsIGRlYnVnX2FyZ3MpOwotKyAgICAgIHZhX2VuZCAoZGVidWdfYXJncyk7Ci0rICAgIH0K LSsKLSAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmZp bGVuYW1lX3JlYWwpOwotIAotICAgaWYgKGZpbGVuYW1lX2lzX2luX2F1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjIChmaWxlbmFtZSwgJmZpbGVuYW1lX3JlYWwpKQotQEAgLTI4MSw3ICszNDMsMTAgQEAg c291cmNlX2dkYl9zY3JpcHRfZm9yX29iamZpbGUgKHN0cnVjdCBvYgotICAgc3RydWN0IGF1dG9f bG9hZF9wc3BhY2VfaW5mbyAqcHNwYWNlX2luZm87Ci0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4 Y2VwdGlvbiBlOwotIAotLSAgaXNfc2FmZSA9IGZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZpbGVu YW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9fbG9hZF9zYWZlIChmaWxlbmFtZSwgXygi YXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCAiCi0rCQkJCQkJInNlcXVlbmNlcyBvZiBjb21tYW5k cyBzY3JpcHQgIgotKwkJCQkJCSJcIiVzXCIgZm9yIG9iamZpbGUgXCIlc1wiLlxuIiksCi0rCQkJ CSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAvKiBBZGQgdGhpcyBzY3JpcHQg dG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9hZCBnZGItc2NyaXB0cyIKLSAg ICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtOTc1LDQgKzEwNDAsMTMgQEAgU2VlIHRoZSBjb21t YW5kcyAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdAotIGFjY2VzcyB0aGUgY3VycmVudCBmdWxsIGxp c3Qgc2V0dGluZy4iKSwKLSAJCSAmY21kbGlzdCk7Ci0gICBzZXRfY21kX2NvbXBsZXRlciAoY21k LCBmaWxlbmFtZV9jb21wbGV0ZXIpOwotKwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJh dXRvLWxvYWQiLCBjbGFzc19tYWludGVuYW5jZSwKLSsJCQkgICAmZGVidWdfYXV0b19sb2FkLCBf KCJcCi0rU2V0IGF1dG8tbG9hZCB2ZXJpZmljYXRpb25zIGRlYnVnZ2luZy4iKSwgXygiXAotK1No b3cgYXV0by1sb2FkIHZlcmlmaWNhdGlvbnMgZGVidWdnaW5nLiIpLCBfKCJcCi0rV2hlbiBub24t emVybywgZGVidWdnaW5nIG91dHB1dCBmb3IgZmlsZXMgb2YgJ3NldCBhdXRvLWxvYWQgLi4uJ1xu XAotK2lzIGRpc3BsYXllZC4iKSwKLSsJCQkgICAgTlVMTCwgc2hvd19kZWJ1Z19hdXRvX2xvYWQs Ci0rCQkJICAgICZzZXRkZWJ1Z2xpc3QsICZzaG93ZGVidWdsaXN0KTsKLSB9Ci1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2F1dG8tbG9hZC5oCTIwMTItMDQtMTggMDA6NDk6MjEuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvYXV0by1sb2FkLmgJMjAx Mi0wNC0xOCAwMDo1MDowNC44MDE2MjYyMzUgKzAyMDAKLUBAIC01NSw2ICs1NSw3IEBAIGV4dGVy biBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqKmF1dG9fbG8KLSBleHRlcm4gc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKiphdXRvX2xvYWRfc2hvd19jbWRsaXN0X2dldCAodm9pZCk7Ci0gZXh0ZXJu IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqYXV0b19sb2FkX2luZm9fY21kbGlzdF9nZXQgKHZv aWQpOwotIAotLWV4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hhciAq ZmlsZW5hbWUpOwotK2V4dGVybiBpbnQgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoY29uc3QgY2hh ciAqZmlsZW5hbWUsCi0rCQkJCSAgIGNvbnN0IGNoYXIgKmRlYnVnX2ZtdCwgLi4uKTsKLSAKLSAj ZW5kaWYgLyogQVVUT19MT0FEX0ggKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9s aW51eC10aHJlYWQtZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvbGludXgtdGhyZWFkLWRiLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9saW51eC10aHJlYWQtZGIuYwkyMDEyLTA0 LTE4IDAwOjUwOjA0LjgwMTYyNjIzNSArMDIwMAotQEAgLTg2OSw3ICs4NjksOSBAQCB0cnlfdGhy ZWFkX2RiX2xvYWRfZnJvbV9wZGlyXzEgKHN0cnVjdCBvCi0gICBnZGJfYXNzZXJ0IChjcCAhPSBO VUxMKTsKLSAgIHN0cmNweSAoY3AgKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAgaWYgKCFm aWxlX2lzX2F1dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRf c2FmZSAocGF0aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAg ICAgICAibGlicmFyeSBcIiVzXCIgZnJvbSAkcGRpci5cbiIpLAotKwkJCSAgICAgICBwYXRoKSkK LSAgICAgcmVzdWx0ID0gMDsKLSAgIGVsc2UKLSAgICAgcmVzdWx0ID0gdHJ5X3RocmVhZF9kYl9s b2FkIChwYXRoKTsKLUBAIC05MzksNyArOTQxLDEwIEBAIHRyeV90aHJlYWRfZGJfbG9hZF9mcm9t X2RpciAoY29uc3QgY2hhcgotICAgcGF0aFtkaXJfbGVuXSA9ICcvJzsKLSAgIHN0cmNweSAocGF0 aCArIGRpcl9sZW4gKyAxLCBMSUJUSFJFQURfREJfU08pOwotIAotLSAgaWYgKCFmaWxlX2lzX2F1 dG9fbG9hZF9zYWZlIChwYXRoKSkKLSsgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAocGF0 aCwgXygiYXV0by1sb2FkOiBMb2FkaW5nIGxpYnRocmVhZC1kYiAiCi0rCQkJCSAgICAgICAibGli cmFyeSBcIiVzXCIgZnJvbSBleHBsaWNpdCAiCi0rCQkJCSAgICAgICAiZGlyZWN0b3J5LlxuIiks Ci0rCQkJICAgICAgIHBhdGgpKQotICAgICByZXN1bHQgPSAwOwotICAgZWxzZQotICAgICByZXN1 bHQgPSB0cnlfdGhyZWFkX2RiX2xvYWQgKHBhdGgpOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL21haW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9n ZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvbWFpbi5jCTIwMTItMDQtMTggMDA6NTA6MDQuODAxNjI2MjM1ICsw MjAwCi1AQCAtMTAyNyw3ICsxMDI3LDEwIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0g ICAgICAgYXV0b19sb2FkX2xvY2FsX2dkYmluaXRfcGF0aG5hbWUgPSBnZGJfcmVhbHBhdGggKGxv Y2FsX2dkYmluaXQpOwotIAotICAgICAgIGlmICghaW5oaWJpdF9nZGJpbml0ICYmIGF1dG9fbG9h ZF9sb2NhbF9nZGJpbml0Ci0tCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2Ri aW5pdCkpCi0rCSAgJiYgZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAobG9jYWxfZ2RiaW5pdCwKLSsJ CQkJICAgICBfKCJhdXRvLWxvYWQ6IExvYWRpbmcgLmdkYmluaXQgIgotKwkJCQkgICAgICAgImZp bGUgXCIlc1wiLlxuIiksCi0rCQkJCSAgICAgbG9jYWxfZ2RiaW5pdCkpCi0gCXsKLSAJICBhdXRv X2xvYWRfbG9jYWxfZ2RiaW5pdF9sb2FkZWQgPSAxOwotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDQtMTggMDA6NDk6MjEuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTItMDQtMTggMDA6NTA6MDQuODA5NjI2MjE1ICswMjAwCi1AQCAtMjA4ODcsNiArMjA4ODcsNyBA QCBUaGVzZSBhcmUgQHZhbHVle0dEQk59IGNvbnRyb2wgY29tbWFuZHMKLSAqIGxpYnRocmVhZF9k Yi5zby4xIGZpbGU6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBs aWJ0aHJlYWQtZGJ9Ci0gKiBvYmpmaWxlLWdkYi5nZGIgZmlsZTo6ICAgICAgICAgICAgICAgQHNh bXB7c2V0L3Nob3cvaW5mbyBhdXRvLWxvYWQgZ2RiLXNjcmlwdH0KLSAqIEF1dG8tbG9hZGluZyBz YWZlIHBhdGg6OiAgICAgICAgICAgICBAc2FtcHtzZXQvc2hvdy9pbmZvIGF1dG8tbG9hZCBzYWZl LXBhdGh9Ci0rKiBBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlOjogICAgICAgICAgQHNhbXB7c2V0 L3Nob3cgZGVidWcgYXV0by1sb2FkfQotIEB4cmVme1B5dGhvbiBBdXRvLWxvYWRpbmd9LgotIEBl bmQgbWVudQotIAotQEAgLTIxMDg1LDYgKzIxMDg2LDQ1IEBAIGVudHJpZXMgYWdhaW4uICBAdmFs dWV7R0RCTn0gYWxyZWFkeSBjYW4KLSBvd24gYmVmb3JlIHN0YXJ0aW5nIHRoZSBjb21wYXJpc29u IHNvIGEgY2Fub25pY2FsIGZvcm0gb2YgZGlyZWN0b3JpZXMgaXMKLSByZWNvbW1lbmRlZCB0byBi ZSBlbnRlcmVkLgotIAotK0Bub2RlIEF1dG8tbG9hZGluZyB2ZXJib3NlIG1vZGUKLStAc3Vic2Vj dGlvbiBEaXNwbGF5aW5nIGZpbGVzIHRyaWVkIGZvciBhdXRvLWxvYWQKLStAY2luZGV4IGF1dG8t bG9hZGluZyB2ZXJib3NlIG1vZGUKLSsKLStGb3IgYmV0dGVyIHZpc2liaWxpdHkgb2YgYWxsIHRo ZSBmaWxlIGxvY2F0aW9ucyB3aGVyZSB5b3UgY2FuIHBsYWNlIHNjcmlwdHMgdG8KLStiZSBhdXRv LWxvYWRlZCB3aXRoIGluZmVyaW9yIC0tLSBvciB0byBwcm90ZWN0IHlvdXJzZWxmIGFnYWluc3Qg YWNjaWRlbnRhbAotK2V4ZWN1dGlvbiBvZiB1bnRydXN0ZWQgc2NyaXB0cyAtLS0gQHZhbHVle0dE Qk59IHByb3ZpZGVzIGEgZmVhdHVyZSBmb3IgcHJpbnRpbmcKLSthbGwgdGhlIGZpbGVzIGF0dGVt cHRlZCB0byBiZSBsb2FkZWQuICBCb3RoIGV4aXN0aW5nIGFuZCBub24tZXhpc3RpbmcgZmlsZXMg bWF5Ci0rYmUgcHJpbnRlZC4KLSsKLStGb3IgZXhhbXBsZSB0aGUgbGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0rKEBweHJlZntBdXRv LWxvYWRpbmcgc2FmZSBwYXRofSkgYXBwbGllcyBhbHNvIHRvIGNhbm9uaWNhbGl6ZWQgZmlsZW5h bWVzIHdoaWNoCi0rbWF5IG5vdCBiZSB0b28gb2J2aW91cyB3aGlsZSBzZXR0aW5nIGl0IHVwLgot KwotK0BzbWFsbGV4YW1wbGUKLSsoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIHVlcwotKyhnZGIp IGZpbGUgfi9zcmMvdC90cnVlCi0rYXV0by1sb2FkOiBMb2FkaW5nIGNhbm5lZCBzZXF1ZW5jZXMg b2YgY29tbWFuZHMgc2NyaXB0ICIvdG1wL3RydWUtZ2RiLmdkYiIKLSsgICAgICAgICAgIGZvciBv YmpmaWxlICIvdG1wL3RydWUiLgotK2F1dG8tbG9hZDogVXBkYXRpbmcgZGlyZWN0b3JpZXMgb2Yg Ii91c3I6L29wdCIuCi0rYXV0by1sb2FkOiBVc2luZyBkaXJlY3RvcnkgIi91c3IiLgotK2F1dG8t bG9hZDogVXNpbmcgZGlyZWN0b3J5ICIvb3B0Ii4KLSt3YXJuaW5nOiBGaWxlICIvdG1wL3RydWUt Z2RiLmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuIGRlY2xpbmVkCi0rICAgICAgICAgYnkgeW91 ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIvdXNyOi9vcHQiLgotK0BlbmQgc21hbGxl eGFtcGxlCi0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgZGVidWcgYXV0by1sb2FkfQot K0BraW5kZXggc2V0IGRlYnVnIGF1dG8tbG9hZAotK0BpdGVtIHNldCBkZWJ1ZyBhdXRvLWxvYWQg W29ufG9mZl0KLStTZXQgd2hldGhlciB0byBwcmludCB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0 byBiZSBhdXRvLWxvYWRlZC4KLSsKLStAYW5jaG9ye3Nob3cgZGVidWcgYXV0by1sb2FkfQotK0Br aW5kZXggc2hvdyBkZWJ1ZyBhdXRvLWxvYWQKLStAaXRlbSBzaG93IGRlYnVnIGF1dG8tbG9hZAot K1Nob3cgd2hldGhlciBwcmludGluZyBvZiB0aGUgZmlsZW5hbWVzIGF0dGVtcHRlZCB0byBiZSBh dXRvLWxvYWRlZCBpcyB0dXJuZWQKLStvbiBvciBvZmYuCi0rQGVuZCB0YWJsZQotKwotIEBub2Rl IE1lc3NhZ2VzL1dhcm5pbmdzCi0gQHNlY3Rpb24gT3B0aW9uYWwgV2FybmluZ3MgYW5kIE1lc3Nh Z2VzCi0gCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9h ZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9weXRob24v cHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAwMDo0OToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy40LjUwLjIwMTIwMTIwL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMJMjAxMi0wNC0xOCAw MDo1MDowNC44MTA2MjYyMTIgKzAyMDAKLUBAIC03NSw3ICs3NSwxMCBAQCBnZGJweV9sb2FkX2F1 dG9fc2NyaXB0X2Zvcl9vYmpmaWxlIChzdHJ1Ci0gICBpbnQgaXNfc2FmZTsKLSAgIHN0cnVjdCBh dXRvX2xvYWRfcHNwYWNlX2luZm8gKnBzcGFjZV9pbmZvOwotIAotLSAgaXNfc2FmZSA9IGZpbGVf aXNfYXV0b19sb2FkX3NhZmUgKGZpbGVuYW1lKTsKLSsgIGlzX3NhZmUgPSBmaWxlX2lzX2F1dG9f bG9hZF9zYWZlIChmaWxlbmFtZSwKLSsJCQkJICAgIF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRo b24gc2NyaXB0IFwiJXNcIiAiCi0rCQkJCSAgICAgICJieSBleHRlbnNpb24gZm9yIG9iamZpbGUg XCIlc1wiLlxuIiksCi0rCQkJCSAgICBmaWxlbmFtZSwgb2JqZmlsZS0+bmFtZSk7Ci0gCi0gICAv KiBBZGQgdGhpcyBzY3JpcHQgdG8gdGhlIGhhc2ggdGFibGUgdG9vIHNvICJpbmZvIGF1dG8tbG9h ZCBweXRob24tc2NyaXB0cyIKLSAgICAgIGNhbiBwcmludCBpdC4gICovCi1AQCAtMTUzLDcgKzE1 NiwxMiBAQCBzb3VyY2Vfc2VjdGlvbl9zY3JpcHRzIChzdHJ1Y3Qgb2JqZmlsZSAqCi0gCSAgbWFr ZV9jbGVhbnVwX2ZjbG9zZSAoc3RyZWFtKTsKLSAJICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxs X3BhdGgpOwotIAotLQkgIGlmICghZmlsZV9pc19hdXRvX2xvYWRfc2FmZSAoZnVsbF9wYXRoKSkK LSsJICBpZiAoIWZpbGVfaXNfYXV0b19sb2FkX3NhZmUgKGZ1bGxfcGF0aCwKLSsJCQkJICAgICAg IF8oImF1dG8tbG9hZDogTG9hZGluZyBQeXRob24gc2NyaXB0ICIKLSsJCQkJCSAiXCIlc1wiIGZy b20gc2VjdGlvbiBcIiVzXCIgb2YgIgotKwkJCQkJICJvYmpmaWxlIFwiJXNcIi5cbiIpLAotKwkJ CQkgICAgICAgZnVsbF9wYXRoLCBHREJQWV9BVVRPX1NFQ1RJT05fTkFNRSwKLSsJCQkJICAgICAg IG9iamZpbGUtPm5hbWUpKQotIAkgICAgb3BlbmVkID0gMDsKLSAJfQotICAgICAgIGVsc2UKCmRp ZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTNvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTEzb2Yy OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZlYTE1My4uMDAwMDAwMAot LS0gYS9nZGItYXV0b2xvYWQtMTNvZjI4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAs MCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNC9tc2cwMDEzMC5o dG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xNyAxNTo1NjoyMQkxLjEy OTcKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNC8xOCAwNzowMzo1NwkxLjEyOTgK LSMjIC0xLDMgKzEsNyBAQAotKzIwMTItMDQtMTggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHZlcmJv c2UgbW9kZSk6IEZpeCBzbWFsbGV4YW1wbGUgdHlwby4KLSsKLSAyMDEyLTA0LTE3ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCU5ldyBvcHRpb24gInNl dCBkZWJ1ZyBhdXRvLWxvYWQiLgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQv MTcgMTU6NTY6MjEJMS45NDQKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzE4 IDA3OjAzOjU4CTEuOTQ1Ci1AQCAtMjExOTIsNyArMjExOTIsNyBAQAotIG1heSBub3QgYmUgdG9v IG9idmlvdXMgd2hpbGUgc2V0dGluZyBpdCB1cC4KLSAKLSBAc21hbGxleGFtcGxlCi0tKGdkYikg c2V0IGRlYnVnIGF1dG8tbG9hZCB1ZXMKLSsoZ2RiKSBzZXQgZGVidWcgYXV0by1sb2FkIG9uCi0g KGdkYikgZmlsZSB+L3NyYy90L3RydWUKLSBhdXRvLWxvYWQ6IExvYWRpbmcgY2FubmVkIHNlcXVl bmNlcyBvZiBjb21tYW5kcyBzY3JpcHQgIi90bXAvdHJ1ZS1nZGIuZ2RiIgotICAgICAgICAgICAg Zm9yIG9iamZpbGUgIi90bXAvdHJ1ZSIuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTE0b2Yy OC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNG9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDJhY2ZkMGUuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE0b2YyOC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxNzguaHRtbAotCi0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdl TG9nCTIwMTIvMDQvMTggMDc6MDM6NTcJMS4xMjk4Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9n CTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Ci0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTA0LTIy ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogZ2Ri LnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNlIEBpdGVtaXplIEBidWxs ZXQKLSsJYnkgQHRhYmxlIEBhc2lzLiAgRml4IGZvcm1hdHRpbmcgb2Ygb25lIGl0ZW0uCi0rCi0g MjAxMi0wNC0xOCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot IAotIAkqIGdkYi50ZXhpbmZvIChBdXRvLWxvYWRpbmcgdmVyYm9zZSBtb2RlKTogRml4IHNtYWxs ZXhhbXBsZSB0eXBvLgotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMTggMDc6 MDM6NTgJMS45NDUKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIyIDE1OjQ5 OjIxCTEuOTQ2Ci1AQCAtMjExMzYsOCArMjExMzYsOCBAQAotIFRvIGZvcmNlIEB2YWx1ZXtHREJO fSB0byBsb2FkIHRoZSBmaWxlcyBpdCBkZWNsaW5lZCB0byBsb2FkIGluIHRoZSBwcmV2aW91cwot IGV4YW1wbGUsIHlvdSBjb3VsZCB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgd2F5czoKLSAKLS1A aXRlbWl6ZSBAYnVsbGV0Ci0tQGl0ZW0gfi8uZ2RiaW5pdDogYWRkLWF1dG8tbG9hZC1zYWZlLXBh dGggfi9zcmMvZ2RiCi0rQHRhYmxlIEBhc2lzCi0rQGl0ZW0gQGZpbGV7fi8uZ2RiaW5pdH06IEBz YW1we2FkZC1hdXRvLWxvYWQtc2FmZS1wYXRoIH4vc3JjL2dkYn0KLSBTcGVjaWZ5IHRoaXMgdHJ1 c3RlZCBkaXJlY3RvcnkgKG9yIGEgZmlsZSkgYXMgYWRkaXRpb25hbCBjb21wb25lbnQgb2YgdGhl IGxpc3QuCi0gWW91IGhhdmUgdG8gc3BlY2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3Rvcmll cyBkaXNwbGF5ZWQgYnkKLSBieSBAc2FtcHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNo IGFzIEBzYW1wey91c3I6L2Jpbn0gaW4gdGhpcyBleGFtcGxlKS4KLUBAIC0yMTE1NSwyMCArMjEx NTUsMjAgQEAKLSBEdXJpbmcgY29tcGlsYXRpb24gb2YgQHZhbHVle0dEQk59IHlvdSBtYXkgZGlz YWJsZSBhbnkgYXV0by1sb2FkaW5nIHNhZmV0eS4KLSBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxl cyB5b3Ugd2lsbCBldmVyIGRlYnVnIHdpdGggdGhpcyBAdmFsdWV7R0RCTn0gY29tZSBmcm9tCi0g dHJ1c3RlZCBzb3VyY2VzLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUKLSAKLSBPbiB0aGUg b3RoZXIgaGFuZCB5b3UgY2FuIGFsc28gZXhwbGljaXRseSBmb3JiaWQgYXV0b21hdGljIGZpbGVz IGxvYWRpbmcgd2hpY2gKLSBhbHNvIHN1cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdl czoKLSAKLS1AaXRlbWl6ZSBAYnVsbGV0Ci0rQHRhYmxlIEBhc2lzCi0gQGl0ZW0gQGtiZHtnZGIg LWlleCAic2V0IGF1dG8tbG9hZCBubyIgW0Bkb3Rze31dfQotIFlvdSBjYW4gdXNlIEB2YWx1ZXtH REJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lv bi4KLSAKLS1AaXRlbSBAc2FtcHt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30K LStAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30KLSBEaXNh YmxlIGF1dG8tbG9hZGluZyBnbG9iYWxseSBmb3IgdGhlIHVzZXIKLSAoQHB4cmVme0hvbWUgRGly ZWN0b3J5IEluaXQgRmlsZX0pLiAgV2hpbGUgaXQgaXMgaW1wcm9iYWJsZSwgeW91IGNvdWxkIGFs c28KLSB1c2Ugc3lzdGVtIGluaXQgZmlsZSBpbnN0ZWFkIChAcHhyZWZ7U3lzdGVtLXdpZGUgY29u ZmlndXJhdGlvbn0pLgotLUBlbmQgaXRlbWl6ZQotK0BlbmQgdGFibGUKLSAKLSBUaGlzIHNldHRp bmcgYXBwbGllcyB0byB0aGUgZmlsZSBuYW1lcyBhcyBlbnRlcmVkIGJ5IHVzZXIuICBJZiBubyBl bnRyeSBtYXRjaGVzCi0gQHZhbHVle0dEQk59IHRyaWVzIGFzIGEgbGFzdCByZXNvcnQgdG8gYWxz byByZXNvbHZlIGFsbCB0aGUgZmlsZSBuYW1lcyBpbnRvCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9s b2FkLTE1b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNW9mMjgucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGRlNTY4NDYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTE1 b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxODMuaHRtbAotCi0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjIgMTU6NDk6MjEJMS4xMjk5Ci0jIyMgc3JjL2dkYi9kb2Mv Q2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAwCi0jIyAtMSwzICsxLDggQEAKLSsy MDEyLTA0LTIzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0r Ci0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZW1vdmUgdHJhaWxp bmcgW0Bkb3Rze31dLgotKwlUaHJlZSB0aW1lcy4KLSsKLSAyMDEyLTA0LTIyICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCSogZ2RiLnRleGluZm8gKEF1 dG8tbG9hZGluZyBzYWZlIHBhdGgpOiBSZXBsYWNlIEBpdGVtaXplIEBidWxsZXQKLS0tLSBzcmMv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIyIDE1OjQ5OjIxCTEuOTQ2Ci0rKysgc3JjL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNC8yMyAxNzoyMDo1NgkxLjk0NwotQEAgLTIxMTQyLDEx ICsyMTE0MiwxMSBAQAotIFlvdSBoYXZlIHRvIHNwZWNpZnkgYWxzbyBhbnkgZXhpc3RpbmcgZGly ZWN0b3JpZXMgZGlzcGxheWVkIGJ5Ci0gYnkgQHNhbXB7c2hvdyBhdXRvLWxvYWQgc2FmZS1wYXRo fSAoc3VjaCBhcyBAc2FtcHsvdXNyOi9iaW59IGluIHRoaXMgZXhhbXBsZSkuCi0gCi0tQGl0ZW0g QGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggL3VzcjovYmluOn4vc3JjL2dk YiIgW0Bkb3Rze31dfQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRvLWxvYWQgc2FmZS1w YXRoIC91c3I6L2Jpbjp+L3NyYy9nZGIifQotIFNwZWNpZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4g dGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEgc2luZ2xlCi0gQHZhbHVle0dEQk59IHNl c3Npb24uCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAic2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgi IFtAZG90c3t9XX0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNhZmUtcGF0 aCJ9Ci0gRGlzYWJsZSBhdXRvLWxvYWRpbmcgc2FmZXR5IGZvciBhIHNpbmdsZSBAdmFsdWV7R0RC Tn0gc2Vzc2lvbi4KLSBUaGlzIGFzc3VtZXMgYWxsIHRoZSBmaWxlcyB5b3UgZGVidWcgZHVyaW5n IHRoaXMgQHZhbHVle0dEQk59IHNlc3Npb24gd2lsbCBjb21lCi0gZnJvbSB0cnVzdGVkIHNvdXJj ZXMuCi1AQCAtMjExNjEsNyArMjExNjEsNyBAQAotIGFsc28gc3VwcHJlc3NlcyBhbnkgc3VjaCB3 YXJuaW5nIG1lc3NhZ2VzOgotIAotIEB0YWJsZSBAYXNpcwotLUBpdGVtIEBrYmR7Z2RiIC1pZXgg InNldCBhdXRvLWxvYWQgbm8iIFtAZG90c3t9XX0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQg YXV0by1sb2FkIG5vIn0KLSBZb3UgY2FuIHVzZSBAdmFsdWV7R0RCTn0gY29tbWFuZC1saW5lIG9w dGlvbiBmb3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0gQGl0ZW0gQGZpbGV7 fi8uZ2RiaW5pdH06IEBzYW1we3NldCBhdXRvLWxvYWQgbm99CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTE2b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0xNm9mMjgucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmYTg4ZTYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTE2b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDQvbXNnMDAxODQuaHRtbAotCi0jIyMgc3JjL2dk Yi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjA6NTYJMS4xMzAwCi0jIyMgc3JjL2dkYi9k b2MvQ2hhbmdlTG9nCTIwMTIvMDQvMjMgMTc6MjY6MDAJMS4xMzAxCi0jIyAtMyw2ICszLDkgQEAK LSAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlbW92ZSB0cmFpbGlu ZyBbQGRvdHN7fV0uCi0gCVRocmVlIHRpbWVzLgotIAotKwkqIGdkYi50ZXhpbmZvIChBdXRvLWxv YWRpbmcgc2FmZSBwYXRoKTogQWRkIHRyYWlsaW5nIEBkb3Rze30uCi0rCVRocmVlIHRpbWVzLgot KwotIDIwMTItMDQtMjIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IFJlcGxhY2Ug QGl0ZW1pemUgQGJ1bGxldAotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDQvMjMg MTc6MjA6NTYJMS45NDcKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA0LzIzIDE3 OjI2OjAxCTEuOTQ4Ci1AQCAtMjExNDIsMTEgKzIxMTQyLDExIEBACi0gWW91IGhhdmUgdG8gc3Bl Y2lmeSBhbHNvIGFueSBleGlzdGluZyBkaXJlY3RvcmllcyBkaXNwbGF5ZWQgYnkKLSBieSBAc2Ft cHtzaG93IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChzdWNoIGFzIEBzYW1wey91c3I6L2Jpbn0gaW4g dGhpcyBleGFtcGxlKS4KLSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIn0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCAvdXNyOi9iaW46fi9zcmMvZ2RiIiBAZG90c3t9fQotIFNwZWNp ZnkgdGhpcyBkaXJlY3RvcnkgYXMgaW4gdGhlIHByZXZpb3VzIGNhc2UgYnV0IGp1c3QgZm9yIGEg c2luZ2xlCi0gQHZhbHVle0dEQk59IHNlc3Npb24uCi0gCi0tQGl0ZW0gQGtiZHtnZGIgLWlleCAi c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgifQotK0BpdGVtIEBrYmR7Z2RiIC1pZXggInNldCBhdXRv LWxvYWQgc2FmZS1wYXRoIiBAZG90c3t9fQotIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBm b3IgYSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0gVGhpcyBhc3N1bWVzIGFsbCB0aGUg ZmlsZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29t ZQotIGZyb20gdHJ1c3RlZCBzb3VyY2VzLgotQEAgLTIxMTYxLDcgKzIxMTYxLDcgQEAKLSBhbHNv IHN1cHByZXNzZXMgYW55IHN1Y2ggd2FybmluZyBtZXNzYWdlczoKLSAKLSBAdGFibGUgQGFzaXMK LS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIn0KLStAaXRlbSBAa2Jke2dk YiAtaWV4ICJzZXQgYXV0by1sb2FkIG5vIiBAZG90c3t9fQotIFlvdSBjYW4gdXNlIEB2YWx1ZXtH REJOfSBjb21tYW5kLWxpbmUgb3B0aW9uIGZvciBhIHNpbmdsZSBAdmFsdWV7R0RCTn0gc2Vzc2lv bi4KLSAKLSBAaXRlbSBAZmlsZXt+Ly5nZGJpbml0fTogQHNhbXB7c2V0IGF1dG8tbG9hZCBub30K CmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoIGIvZ2RiLWF1dG9sb2FkLTE3 b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTc0Zjc1Yi4uMDAwMDAw MAotLS0gYS9nZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjgg KzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNS9tc2cwMDAx MC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1LzAyIDE3OjEzOjM5CTEuMTQx OTQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1LzAyIDIwOjAwOjMxCTEuMTQxOTUKLSMj IC0xLDMgKzEsOCBAQAotKzIwMTItMDUtMDIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoIGZv ciBNUy1XaW5kb3dzIGhvc3QgcGxhdGZvcm0uCi0rCSogYXV0by1sb2FkLmMgKGZpbGVuYW1lX2lz X2luX2Rpcik6IFJldHVybiAxIGZvciBESVJfTEVOIDAuCi0rCi0gMjAxMi0wNS0wMiAgRWxpIFph cmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KLSAKLSAJKiBnZGJfY3Vyc2VzLmg6IFVuZGVmaW5lIEtF WV9FVkVOVCBiZWZvcmUgaW5jbHVkaW5nIGN1cnNlcwotLS0tIHNyYy9nZGIvYXV0by1sb2FkLmMJ MjAxMi8wNC8xNyAxNTo1NjoyMQkxLjQKLSsrKyBzcmMvZ2RiL2F1dG8tbG9hZC5jCTIwMTIvMDUv MDIgMjA6MDA6MzYJMS41Ci1AQCAtMjMxLDYgKzIzMSwxMiBAQAotICAgd2hpbGUgKGRpcl9sZW4g JiYgSVNfRElSX1NFUEFSQVRPUiAoZGlyW2Rpcl9sZW4gLSAxXSkpCi0gICAgIGRpcl9sZW4tLTsK LSAKLSsgIC8qIEVuc3VyZSBhdXRvX2xvYWRfc2FmZV9wYXRoICIvIiBtYXRjaGVzIGFueSBGSUxF TkFNRS4gIE9uIE1TLVdpbmRvd3MKLSsgICAgIHBsYXRmb3JtIEZJTEVOQU1FIGV2ZW4gYWZ0ZXIg Z2RiX3JlYWxwYXRoIGRvZXMgbm90IGhhdmUgdG8gc3RhcnQgd2l0aAotKyAgICAgSVNfRElSX1NF UEFSQVRPUiBjaGFyYWN0ZXIsIHN1Y2ggYXMgdGhlICdDOlx4LmV4ZScgZmlsZW5hbWUuICAqLwot KyAgaWYgKGRpcl9sZW4gPT0gMCkKLSsgICAgcmV0dXJuIDE7Ci0rCi0gICByZXR1cm4gKGZpbGVu YW1lX25jbXAgKGRpciwgZmlsZW5hbWUsIGRpcl9sZW4pID09IDAKLSAJICAmJiAoSVNfRElSX1NF UEFSQVRPUiAoZmlsZW5hbWVbZGlyX2xlbl0pCi0gCSAgICAgIHx8IGZpbGVuYW1lW2Rpcl9sZW5d ID09ICdcMCcpKTsKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMThvZjI4LnBhdGNoIGIvZ2Ri LWF1dG9sb2FkLTE4b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkw YzJlNC4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMThvZjI4LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMTM2ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTItMDUvbXNnMDAwMzguaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8wNSAw NTozNjoyMwkxLjE0MjExCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8wNiAxNTozMDo1 OQkxLjE0MjEyCi0jIyAtMSwzICsxLDE0IEBACi0rMjAxMi0wNS0wNiAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGF1dG8tbG9hZC5jIChzZXRfYXV0 b19sb2FkX3NhZmVfcGF0aCk6IFJlc2V0IEFVVE9fTE9BRF9TQUZFX1BBVEgKLSsJYmFjayB0byBE RUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEggaWYgaXQgaXMgYmVpbmcgc2V0IHRvICIiLgotKwko c2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoKTogQ2hlY2sgYW55LWRpcmVjdG9yeSBieSBjb21wYXJp c29uIHdpdGggIi8iLgotKwkoYWRkX2F1dG9fbG9hZF9zYWZlX3BhdGgpOiBDaGFuZ2UgdGhlIGVy cm9yIG1lc3NhZ2UuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBDaGFuZ2UgdGhlICJzYWZl LXBhdGgiIGhlbHAgdGV4dC4KLSsJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUKLSsJKiBjb25maWd1 cmUuYWMgKC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoKTogU2V0Ci0rCVdJVEhfQVVUT19M T0FEX1NBRkVfUEFUSCB0byAvLgotKwotIDIwMTItMDUtMDUgIFNlcmdpbyBEdXJpZ2FuIEp1bmlv ciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0gCi0gCSogc3RhcC1wcm9iZS5oOiBEbyBub3QgaW5j bHVkZSB1bmVjZXNzYXJ5IGBwcm9iZS5oJy4KLS0tLSBzcmMvZ2RiL2F1dG8tbG9hZC5jCTIwMTIv MDUvMDIgMjA6MDA6MzYJMS41Ci0rKysgc3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzA2IDE1 OjMxOjAyCTEuNgotQEAgLTE4MSw2ICsxODEsMTIgQEAKLSBzdGF0aWMgdm9pZAotIHNldF9hdXRv X2xvYWRfc2FmZV9wYXRoIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjKQotIHsKLSsgIGlmIChhdXRvX2xvYWRfc2FmZV9wYXRoWzBdID09ICdcMCcp Ci0rICAgIHsKLSsgICAgICB4ZnJlZSAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0rICAgICAgYXV0 b19sb2FkX3NhZmVfcGF0aCA9IHhzdHJkdXAgKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCk7 Ci0rICAgIH0KLSsKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSB9Ci0g Ci1AQCAtMTkwLDcgKzE5Niw3IEBACi0gc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoIChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotIAkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIGlmICgqdmFsdWUgPT0gMCkKLSsgIGlm IChzdHJjbXAgKHZhbHVlLCAiLyIpID09IDApCi0gICAgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUs IF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2FmZSB0byBsb2FkIGZyb20gYW55ICIKLSAJCQkgICAg ICAiZGlyZWN0b3J5LlxuIikpOwotICAgZWxzZQotQEAgLTIwOSw4ICsyMTUsOSBAQAotIAotICAg aWYgKGFyZ3MgPT0gTlVMTCB8fCAqYXJncyA9PSAwKQotICAgICBlcnJvciAoXygiXAotLUFkZGlu ZyBlbXB0eSBkaXJlY3RvcnkgZWxlbWVudCBkaXNhYmxlcyB0aGUgYXV0by1sb2FkIHNhZmUtcGF0 aCBzZWN1cml0eS4gIFwKLS1Vc2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBpbnN0ZWFkIGlm IHlvdSBtZWFuIHRoYXQuIikpOwotK0RpcmVjdG9yeSBhcmd1bWVudCByZXF1aXJlZC5cblwKLStV c2UgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoIC8nIGZvciBkaXNhYmxpbmcgdGhlIGF1dG8tbG9h ZCBzYWZlLXBhdGggc2VjdXJpdHkuXAotKyIpKTsKLSAKLSAgIHMgPSB4c3RycHJpbnRmICgiJXMl YyVzIiwgYXV0b19sb2FkX3NhZmVfcGF0aCwgRElSTkFNRV9TRVBBUkFUT1IsIGFyZ3MpOwotICAg eGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotQEAgLTEwMjksOCArMTAzNiwxMCBAQAotIFNo b3cgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8t bG9hZCBmaWxlcy4iKSwgXygiXAotIFZhcmlvdXMgZmlsZXMgbG9hZGVkIGF1dG9tYXRpY2FsbHkg Zm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMgbXVzdFxuXAotIGJlIGxvY2F0ZWQg aW4gb25lIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBXYXJuaW5n IHdpbGwgYmVcblwKLS1wcmludGVkIGFuZCBmaWxlIHdpbGwgbm90IGJlIHVzZWQgb3RoZXJ3aXNl LiAgVXNlIGVtcHR5IHN0cmluZyAob3IgZXZlblxuXAotLWVtcHR5IGRpcmVjdG9yeSBlbnRyeSkg dG8gYWxsb3cgYW55IGZpbGUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCAuLi4nIG9wdGlvbnMuXG5c Ci0rcHJpbnRlZCBhbmQgZmlsZSB3aWxsIG5vdCBiZSB1c2VkIG90aGVyd2lzZS5cblwKLStTZXR0 aW5nIHRoaXMgcGFyYW1ldGVyIHRvIGFuIGVtcHR5IGxpc3QgcmVzZXRzIGl0IHRvIGl0cyBkZWZh dWx0IHZhbHVlLlxuXAotK1NldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gJy8nICh3aXRob3V0IHRo ZSBxdW90ZXMpIGFsbG93cyBhbnkgZmlsZVxuXAotK2ZvciB0aGUgJ3NldCBhdXRvLWxvYWQgLi4u JyBvcHRpb25zLlxuXAotIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgZm9yIHRoZSBraW5kcyBvZiBm aWxlcyBoYXZpbmcgJ3NldCBhdXRvLWxvYWQgLi4uIG9mZicuXG5cCi0gVGhpcyBvcHRpb25zIGhh cyBzZWN1cml0eSBpbXBsaWNhdGlvbnMgZm9yIHVudHJ1c3RlZCBpbmZlcmlvcnMuIiksCi0gCQkJ CSAgICAgc2V0X2F1dG9fbG9hZF9zYWZlX3BhdGgsCi0tLS0gc3JjL2dkYi9jb25maWd1cmUJMjAx Mi8wNC8yNyAyMDo0Nzo1MgkxLjM2MAotKysrIHNyYy9nZGIvY29uZmlndXJlCTIwMTIvMDUvMDYg MTU6MzE6MDIJMS4zNjEKLUBAIC00OTY0LDcgKzQ5NjQsNyBAQAotICMgQ2hlY2sgd2hldGhlciAt LXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGgrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoOyBpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9 ICJubyI7IHRoZW4KLS0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKLSsgICB3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0gIGZpCi0gZWxzZQotICAgd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoPSIkcHJlZml4IgotLS0tIHNyYy9nZGIvY29uZmlndXJlLmFjCTIwMTIvMDQvMjcgMjA6 NDc6NTMJMS4xNzEKLSsrKyBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLzA1LzA2IDE1OjMxOjAz CTEuMTcyCi1AQCAtMTQxLDcgKzE0MSw3IEBACi0gQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1hdXRv LWxvYWQtc2FmZS1wYXRoPVBBVEhdLCBbZGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzXSkKLSBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBh dGhdLCBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0aW9uc10pLAotIFtp ZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4KLS0gICB3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9IiIKLSsgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8i Ci0gIGZpXSwKLSBbd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4Il0pCi0gQUNfREVG SU5FX0RJUihERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgsIHdpdGhfYXV0b19sb2FkX3NhZmVf cGF0aCwKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wMyAwNzowNzoyNAkxLjEz MDgKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8wNS8wNiAxNTozMTowNAkxLjEzMDkK LSMjIC0xLDMgKzEsOSBAQAotKzIwMTItMDUtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUg cGF0aCk6IE1ha2UgJ2RpcmVjdG9yaWVzJwotKwlmb3IgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRo JyBvcHRpb25hbC4gIE1lbnRpb24gaWYgaXQgaXMgb21pdHRlZC4KLSsJQ2hhbmdlIGRpc2FibGlu ZyBzZWN1cml0eSBwcm90ZWN0aW9uIGNvbmRpdGlvbiB0byAiLyIsIHR3aWNlLgotKwotIDIwMTIt MDUtMDMgIFNpdmEgQ2hhbmRyYSBSZWRkeSAgPHNpdmFjaGFuZHJhQGdvb2dsZS5jb20+Ci0gCi0g CSogZ2RiLnRleGluZm8gKFN5bWJvbCBUYWJsZXMgSW4gUHl0aG9uKTogQWRkIGRvY3VtZW50YXRp b24gYWJvdXQKLS0tLSBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzAzIDA3OjA3OjI0 CTEuOTU0Ci0rKysgc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wNiAxNTozMTowNAkx Ljk1NQotQEAgLTIxMjE5LDkgKzIxMjE5LDEyIEBACi0gQHRhYmxlIEBjb2RlCi0gQGFuY2hvcntz ZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0KLSBAa2luZGV4IHNldCBhdXRvLWxvYWQgc2FmZS1wYXRo Ci0tQGl0ZW0gc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGggQHZhcntkaXJlY3Rvcmllc30KLStAaXRl bSBzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCBAcntbfUB2YXJ7ZGlyZWN0b3JpZXN9QHJ7XX0KLSBT ZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgKGFuZCB0aGVpciBzdWJkaXJlY3RvcmllcykgdHJ1 c3RlZCBmb3IgYXV0b21hdGljCi0gbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBZ b3UgY2FuIGFsc28gZW50ZXIgYSBzcGVjaWZpYyB0cnVzdGVkIGZpbGUuCi0rSWYgeW91IG9taXQg QHZhcntkaXJlY3Rvcmllc30sIEBzYW1we2F1dG8tbG9hZCBzYWZlLXBhdGh9IHdpbGwgYmUgcmVz ZXQgdG8KLStpdHMgZGVmYXVsdCB2YWx1ZSBhcyBzcGVjaWZpZWQgZHVyaW5nIEB2YWx1ZXtHREJO fSBjb21waWxhdGlvbi4KLSsKLSBUaGUgbGlzdCBvZiBkaXJlY3RvcmllcyB1c2VzIGRpcmVjdG9y eSBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAotIHN5c3RlbXMsIEBzYW1wezt9 IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUgZGlyZWN0b3JpZXMsIHNpbWls YXJseQotIHRvIHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZhcmlhYmxlLgotQEAgLTIxMjQw LDcgKzIxMjQzLDcgQEAKLSBob3N0IHBsYXRmb3JtIGRpcmVjdG9yeSBzZXBhcmF0b3IgaW4gdXNl LgotIEBlbmQgdGFibGUKLSAKLS1TZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYW4gZW1wdHkgc3Ry aW5nIGRpc2FibGVzIHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbi4KLStTZXR0aW5nIHRoaXMgdmFy aWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLgotIFRo aXMgdmFyaWFibGUgaXMgc3VwcG9zZWQgdG8gYmUgc2V0IHRvIHRoZSBzeXN0ZW0gZGlyZWN0b3Jp ZXMgd3JpdGFibGUgYnkgdGhlCi0gc3lzdGVtIHN1cGVydXNlciBvbmx5LiAgVXNlcnMgY2FuIGFk ZCB0aGVpciBzb3VyY2UgZGlyZWN0b3JpZXMgaW4gaW5pdCBmaWxlcyBpbgotIHRoZWlyIGhvbWUg ZGlyZWN0b3JpZXMgKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9KS4gIFNlZSBhbHNv IGRlcHJlY2F0ZWQKLUBAIC0yMTI2MCw3ICsyMTI2Myw3IEBACi0gU3BlY2lmeSB0aGlzIGRpcmVj dG9yeSBhcyBpbiB0aGUgcHJldmlvdXMgY2FzZSBidXQganVzdCBmb3IgYSBzaW5nbGUKLSBAdmFs dWV7R0RCTn0gc2Vzc2lvbi4KLSAKLS1AaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCIgQGRvdHN7fX0KLStAaXRlbSBAa2Jke2dkYiAtaWV4ICJzZXQgYXV0by1sb2Fk IHNhZmUtcGF0aCAvIiBAZG90c3t9fQotIERpc2FibGUgYXV0by1sb2FkaW5nIHNhZmV0eSBmb3Ig YSBzaW5nbGUgQHZhbHVle0dEQk59IHNlc3Npb24uCi0gVGhpcyBhc3N1bWVzIGFsbCB0aGUgZmls ZXMgeW91IGRlYnVnIGR1cmluZyB0aGlzIEB2YWx1ZXtHREJOfSBzZXNzaW9uIHdpbGwgY29tZQot IGZyb20gdHJ1c3RlZCBzb3VyY2VzLgoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0xOW9mMjgu cGF0Y2ggYi9nZGItYXV0b2xvYWQtMTlvZjI4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBmN2IxMjkzLi4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0xOW9mMjgucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLWN2cy8yMDEyLTA1L21zZzAwMDYwLmh0bWwKLQotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxv ZwkyMDEyLzA1LzA5IDE4OjE1OjU4CTEuMTMxMAotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwky MDEyLzA1LzA5IDE5OjI5OjI1CTEuMTMxMQotIyMgLTMsNiArMyw5IEBACi0gCSogZ2RiLnRleGlu Zm8gKEF1dG8tbG9hZGluZyk6IFdyYXAgdG9vIGxvbmcgbGluZXMgaW4gQHNtYWxsZXhhbXBsZS4K LSAJVHdpY2UuCi0gCi0rCSogZ2RiLnRleGluZm8gKFNlcGFyYXRlIERlYnVnIEZpbGVzLCBBdXRv LWxvYWRpbmcgc2FmZSBwYXRoKTogUmVwbGFjZQotKwlkaXJlY3Rvcnkgc2VwYXJhdG9yIGJ5IHBh dGggc2VwYXJhdG9yLgotKwotIDIwMTItMDUtMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KLSAKLSAJKiBnZGIudGV4aW5mbyAoQXV0by1sb2FkaW5nIHNhZmUg cGF0aCk6IE1ha2UgJ2RpcmVjdG9yaWVzJwotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIw MTIvMDUvMDkgMTg6MTU6NTgJMS45NTYKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEy LzA1LzA5IDE5OjI5OjI1CTEuOTU3Ci1AQCAtMTYyODUsOCArMTYyODUsOCBAQAotIEBraW5kZXgg c2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0gQGl0ZW0gc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5 IEB2YXJ7ZGlyZWN0b3JpZXN9Ci0gU2V0IHRoZSBkaXJlY3RvcmllcyB3aGljaCBAdmFsdWV7R0RC Tn0gc2VhcmNoZXMgZm9yIHNlcGFyYXRlIGRlYnVnZ2luZwotLWluZm9ybWF0aW9uIGZpbGVzIHRv IEB2YXJ7ZGlyZWN0b3J5fS4gIE11bHRpcGxlIGRpcmVjdG9yeSBjb21wb25lbnRzIGNhbiBiZSBz ZXQKLS1jb25jYXRlbmF0aW5nIHRoZW0gYnkgYSBkaXJlY3Rvcnkgc2VwYXJhdG9yLgotK2luZm9y bWF0aW9uIGZpbGVzIHRvIEB2YXJ7ZGlyZWN0b3J5fS4gIE11bHRpcGxlIHBhdGggY29tcG9uZW50 cyBjYW4gYmUgc2V0Ci0rY29uY2F0ZW5hdGluZyB0aGVtIGJ5IGEgcGF0aCBzZXBhcmF0b3IuCi0g Ci0gQGtpbmRleCBzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0gQGl0ZW0gc2hvdyBkZWJ1Zy1m aWxlLWRpcmVjdG9yeQotQEAgLTIxMjI3LDcgKzIxMjI3LDcgQEAKLSBJZiB5b3Ugb21pdCBAdmFy e2RpcmVjdG9yaWVzfSwgQHNhbXB7YXV0by1sb2FkIHNhZmUtcGF0aH0gd2lsbCBiZSByZXNldCB0 bwotIGl0cyBkZWZhdWx0IHZhbHVlIGFzIHNwZWNpZmllZCBkdXJpbmcgQHZhbHVle0dEQk59IGNv bXBpbGF0aW9uLgotIAotLVRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHVzZXMgZGlyZWN0b3J5IHNl cGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFuZCBVbml4Ci0rVGhlIGxpc3Qgb2YgZGlyZWN0b3Jp ZXMgdXNlcyBwYXRoIHNlcGFyYXRvciAoQHNhbXB7On0gb24gR05VIGFuZCBVbml4Ci0gc3lzdGVt cywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKSB0byBzZXBhcmF0ZSBkaXJlY3Rv cmllcywgc2ltaWxhcmx5Ci0gdG8gdGhlIEBlbnZ7UEFUSH0gZW52aXJvbm1lbnQgdmFyaWFibGUu Ci0gCi1AQCAtMjEyNDIsNyArMjEyNDIsNyBAQAotIEBpdGVtIGFkZC1hdXRvLWxvYWQtc2FmZS1w YXRoCi0gQWRkIGFuIGVudHJ5IChvciBsaXN0IG9mIGVudHJpZXMpIHRoZSBsaXN0IG9mIGRpcmVj dG9yaWVzIHRydXN0ZWQgZm9yIGF1dG9tYXRpYwotIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBz Y3JpcHRzLiAgTXVsdGlwbGUgZW50cmllcyBtYXkgYmUgZGVsaW1pdGVkIGJ5IHRoZQotLWhvc3Qg cGxhdGZvcm0gZGlyZWN0b3J5IHNlcGFyYXRvciBpbiB1c2UuCi0raG9zdCBwbGF0Zm9ybSBwYXRo IHNlcGFyYXRvciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotIFNldHRpbmcgdGhpcyB2YXJpYWJs ZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24uCgpkaWZmIC0t Z2l0IGEvZ2RiLWF1dG9sb2FkLTIwb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMG9mMjgucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwZTk0NGEuLjAwMDAwMDAKLS0tIGEv Z2RiLWF1dG9sb2FkLTIwb2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwNTkuaHRtbAot Ci0jIyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDYgMTU6MzE6MDQJMS4xMzA5Ci0j IyMgc3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS4xMzEwCi0jIyAt MSwzICsxLDggQEAKLSsyMDEyLTA1LTA5ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKEF1dG8tbG9hZGluZyk6IFdyYXAgdG9v IGxvbmcgbGluZXMgaW4gQHNtYWxsZXhhbXBsZS4KLSsJVHdpY2UuCi0rCi0gMjAxMi0wNS0wNiAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkqIGdkYi50 ZXhpbmZvIChBdXRvLWxvYWRpbmcgc2FmZSBwYXRoKTogTWFrZSAnZGlyZWN0b3JpZXMnCi0tLS0g c3JjL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi8wNS8wNiAxNTozMTowNAkxLjk1NQotKysrIHNy Yy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMDkgMTg6MTU6NTgJMS45NTYKLUBAIC0yMTAw NCw3ICsyMTAwNCw4IEBACi0gKGdkYikgc2hvdyBhdXRvLWxvYWQKLSBnZGItc2NyaXB0czogIEF1 dG8tbG9hZGluZyBvZiBjYW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIHNjcmlwdHMgaXMgb24u Ci0gbGlidGhyZWFkLWRiOiAgQXV0by1sb2FkaW5nIG9mIGluZmVyaW9yIHNwZWNpZmljIGxpYnRo cmVhZF9kYiBpcyBvbi4KLS1sb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0 IHNjcmlwdCBmcm9tIGN1cnJlbnQgZGlyZWN0b3J5IGlzIG9uLgotK2xvY2FsLWdkYmluaXQ6ICBB dXRvLWxvYWRpbmcgb2YgLmdkYmluaXQgc2NyaXB0IGZyb20gY3VycmVudCBkaXJlY3RvcnkKLSsg ICAgICAgICAgICAgICAgaXMgb24uCi0gcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2Yg UHl0aG9uIHNjcmlwdHMgaXMgb24uCi0gc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBm cm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzCi0gICAgICAgICAgICAgaXMg L3Vzci9sb2NhbC4KLUBAIC0yMTAyMiw3ICsyMTAyMyw4IEBACi0gTG9hZGVkICBTY3JpcHQKLSBZ ZXMgICAgIC9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiCi0gbGlidGhyZWFkLWRiOiAgTm8gYXV0 by1sb2FkZWQgbGlidGhyZWFkLWRiLgotLWxvY2FsLWdkYmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBm aWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFzIGJlZW4gbG9hZGVkLgotK2xvY2FsLWdk YmluaXQ6ICBMb2NhbCAuZ2RiaW5pdCBmaWxlICIvaG9tZS91c2VyL2dkYi8uZ2RiaW5pdCIgaGFz IGJlZW4KLSsgICAgICAgICAgICAgICAgbG9hZGVkLgotIHB5dGhvbi1zY3JpcHRzOgotIExvYWRl ZCAgU2NyaXB0Ci0gWWVzICAgICAvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5CgpkaWZmIC0tZ2l0 IGEvZ2RiLWF1dG9sb2FkLTIxb2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yMW9mMjgucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MzJlNjcuLjAwMDAwMDAKLS0tIGEvZ2Ri LWF1dG9sb2FkLTIxb2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAwNzkuaHRtbAotCi0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMCAyMDoxNzo0NgkxLjE0MjM1Ci0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8xMSAxODowNjoyNgkxLjE0MjM2Ci0jIyAtMSwzICsxLDEw IEBACi0rMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotKwotKwlNYWtlIGF1dG8tbG9hZCBoYW5kbGUgbXVsdGlwbGUgY29tcG9uZW50cyBvZiBE RUJVR19GSUxFX0RJUkVDVE9SWS4KLSsJKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX29iamZpbGVf c2NyaXB0KTogUmVtb3ZlIGNoZWNrIGZvciBOVUxMCi0rCURFQlVHX0ZJTEVfRElSRUNUT1JZLiAg SGFuZGxlIG11bHRpcGxlIGNvbXBvbmVudHMgb2YKLSsJREVCVUdfRklMRV9ESVJFQ1RPUlkuCi0r Ci0gMjAxMi0wNS0xMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotIAotIAkqIGR3 YXJmMnJlYWQuYyAocmVjdXJzaXZlbHlfd3JpdGVfcHN5bWJvbHMpOiBOZXcgZnVuY3Rpb24uCi0t LS0gc3JjL2dkYi9hdXRvLWxvYWQuYwkyMDEyLzA1LzA2IDE1OjMxOjAyCTEuNgotKysrIHNyYy9n ZGIvYXV0by1sb2FkLmMJMjAxMi8wNS8xMSAxODowNjoyOAkxLjcKLUBAIC01ODcsMTcgKzU4Nywy OSBAQAotICAgaW5wdXQgPSBmb3BlbiAoZmlsZW5hbWUsICJyIik7Ci0gICBkZWJ1Z2ZpbGUgPSBm aWxlbmFtZTsKLSAKLS0gIGlmICghaW5wdXQgJiYgZGVidWdfZmlsZV9kaXJlY3RvcnkpCi0rICBp ZiAoIWlucHV0KQotICAgICB7Ci0tICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiB0 aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwotLSAgICAgIGRlYnVnZmlsZSA9 IHhtYWxsb2MgKHN0cmxlbiAoZmlsZW5hbWUpCi0tCQkJICAgKyBzdHJsZW4gKGRlYnVnX2ZpbGVf ZGlyZWN0b3J5KSArIDEpOwotLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2Rp cmVjdG9yeSk7Ci0tICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5l ZWQgYSAiLyIgaGVyZS4gICovCi0tICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsK LS0KLS0gICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotLSAgICAgIGlucHV0 ID0gZm9wZW4gKGRlYnVnZmlsZSwgInIiKTsKLSsgICAgICBjaGFyICpkZWJ1Z2RpcjsKLSsgICAg ICBWRUMgKGNoYXJfcHRyKSAqZGVidWdkaXJfdmVjOwotKyAgICAgIGludCBpeDsKLSsKLSsgICAg ICBkZWJ1Z2Rpcl92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGRlYnVnX2ZpbGVfZGly ZWN0b3J5KTsKLSsgICAgICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKGRlYnVnZGly X3ZlYyk7Ci0rCi0rICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgZGVi dWdkaXJfdmVjLCBpeCwgZGVidWdkaXIpOyArK2l4KQotKwl7Ci0rCSAgLyogQWxzbyB0cnkgdGhl IHNhbWUgZmlsZSBpbiB0aGUgc2VwYXJhdGUgZGVidWcgaW5mbyBkaXJlY3RvcnkuICAqLwotKwkg IGRlYnVnZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGVidWdkaXIpICsgc3RybGVuIChmaWxlbmFt ZSkgKyAxKTsKLSsJICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIpOwotKwotKwkgIC8qIEZJ TEVOQU1FIGlzIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIGEgIi8iIGhlcmUuICAqLwotKwkg IHN0cmNhdCAoZGVidWdmaWxlLCBmaWxlbmFtZSk7Ci0rCi0rCSAgbWFrZV9jbGVhbnVwICh4ZnJl ZSwgZGVidWdmaWxlKTsKLSsJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0rCSAg aWYgKGlucHV0ICE9IE5VTEwpCi0rCSAgICBicmVhazsKLSsJfQotICAgICB9Ci0gCi0gICBpZiAo IWlucHV0ICYmIGdkYl9kYXRhZGlyKQoKZGlmZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yMm9mMjgu cGF0Y2ggYi9nZGItYXV0b2xvYWQtMjJvZjI4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA3NjliNzI0Li4wMDAwMDAwCi0tLSBhL2dkYi1hdXRvbG9hZC0yMm9mMjgucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwzODggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wNS9tc2cwMDA4MC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA1LzExIDE4OjA2OjI2CTEuMTQyMzYKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA1 LzExIDE4OjEzOjIyCTEuMTQyMzcKLSMjIC0xLDUgKzEsMjkgQEAKLSAyMDEyLTA1LTExICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCVByb3ZpZGUgJGRk aXIgc3Vic3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aC4KLSsJKiBORVdT ICgtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aCwgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBh dGgpOiBOZXcKLSsJZW50cmllcy4KLSsJKiBhdXRvLWxvYWQuYzogSW5jbHVkZSBvYnNlcnZlci5o LgotKwkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlKTogQ2FsbCBzdWJzdGl0dXRlX3Bh dGhfY29tcG9uZW50IGZvcgotKwllYWNoIGNvbXBvbmVudC4gIE5ldyB2YXJpYWJsZSBkZGlyX3N1 YnN0LgotKwkoYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQpOiBOZXcgZnVuY3Rpb24uCi0r CShzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCk6IFJlbmFtZSBERUZBVUxUX0FVVE9fTE9BRF9TQUZF X1BBVEggdG8KLSsJQVVUT19MT0FEX1NBRkVfUEFUSC4gIE5ldyBjb21tZW50LgotKwkoX2luaXRp YWxpemVfYXV0b19sb2FkKTogUmVuYW1lIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCB0bwot KwlBVVRPX0xPQURfU0FGRV9QQVRILiAgSW5zdGFsbCBhdXRvX2xvYWRfZ2RiX2RhdGFkaXJfY2hh bmdlZC4KLSsJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0rCSogY29uZmlndXJlOiBSZWdlbmVy YXRlLgotKwkqIGNvbmZpZ3VyZS5hYyAoLS1hdXRvLWxvYWQtc2FmZS1wYXRoKTogUmVuYW1lCi0r CURFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCB0byBBVVRPX0xPQURfU0FGRV9QQVRILiAgRGVm YXVsdCB0bwotKwlHREJfREFUQURJUi9hdXRvLWxvYWQuCi0rCSogZGVmcy5oIChzdWJzdGl0dXRl X3BhdGhfY29tcG9uZW50KTogTmV3IGRlY2xhcmF0aW9uLgotKwkqIHRvcC5jOiBJbmNsdWRlIG9i c2VydmVyLmguCi0rCShzZXRfZ2RiX2RhdGFkaXIpOiBOZXcgZnVuY3Rpb24uCi0rCShpbml0X21h aW4pOiBJbnN0YWxsIGl0IGZvciAic2V0IGRhdGEtZGlyZWN0b3J5Ii4KLSsJKiB1dGlscy5jIChz dWJzdGl0dXRlX3BhdGhfY29tcG9uZW50KTogTmV3IGZ1bmN0aW9uLgotKwotKzIwMTItMDUtMTEg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJTWFrZSBh dXRvLWxvYWQgaGFuZGxlIG11bHRpcGxlIGNvbXBvbmVudHMgb2YgREVCVUdfRklMRV9ESVJFQ1RP UlkuCi0gCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCk6IFJlbW92ZSBj aGVjayBmb3IgTlVMTAotIAlERUJVR19GSUxFX0RJUkVDVE9SWS4gIEhhbmRsZSBtdWx0aXBsZSBj b21wb25lbnRzIG9mCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVXUwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvTkVXUwkyMDEyLTA1LTE0IDE0 OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MJ MjAxMi0wNS0xNCAxNDoxODowMS45MTUwNDEyNTggKzAyMDAKLUBAIC0zMDcsNiArMzA3LDE3IEBA IHNob3cgdHJhY2Utc3RvcC1ub3RlcwotICAgaW5zdGFuY2UgYXMgYW4gZXhwbGFuYXRpb24sIGlm IHlvdSBhcmUgc3RvcHBpbmcgYSB0cmFjZSBydW4gdGhhdCB3YXMKLSAgIHN0YXJ0ZWQgYnkgc29t ZW9uZSBlbHNlLgotIAotKyogTmV3IGNvbmZpZ3VyZSBvcHRpb25zCi0rCi0rLS13aXRoLWF1dG8t bG9hZC1zYWZlLXBhdGgKLSsgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgJ3NldCBh dXRvLWxvYWQgc2FmZS1wYXRoJyBzZXR0aW5nCi0rICBhYm92ZS4gIEl0IGRlZmF1bHRzIHRvICck ZGRpci9hdXRvLWxvYWQnLCAkZGRpciByZXByZXNlbnRpbmcgR0RCJ3MKLSsgIGRhdGEgZGlyZWN0 b3J5IChhdmFpbGFibGUgdmlhIHNob3cgZGF0YS1kaXJlY3RvcnkpLgotKwotKy0td2l0aG91dC1h dXRvLWxvYWQtc2FmZS1wYXRoCi0rICBTZXQgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyB0byAn LycsIGVmZmVjdGl2ZWx5IGRpc2FibGluZyB0aGlzCi0rICBzZWN1cml0eSBmZWF0dXJlLgotKwot ICogTmV3IHJlbW90ZSBwYWNrZXRzCi0gCi0gUVRFbmFibGUKLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAx MjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0wNS0xNCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTE0IDE0 OjE4OjAxLjkxNTA0MTI1OCArMDIwMAotQEAgLTM1LDYgKzM1LDcgQEAKLSAjaW5jbHVkZSAiZ2Ri X3ZlY3MuaCIKLSAjaW5jbHVkZSAicmVhZGxpbmUvdGlsZGUuaCIKLSAjaW5jbHVkZSAiY29tcGxl dGVyLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gCi0gLyogVGhlIHN1ZmZpeCBvZiBwZXIt b2JqZmlsZSBzY3JpcHRzIHRvIGF1dG8tbG9hZCBhcyBub24tUHl0aG9uIGNvbW1hbmQgZmlsZXMu Ci0gICAgRS5nLiBXaGVuIHRoZSBwcm9ncmFtIGxvYWRzIGxpYmZvby5zbywgbG9vayBmb3IgbGli Zm9vLWdkYi5nZGIuICAqLwotQEAgLTE0MSwxMCArMTQyLDE2IEBAIGF1dG9fbG9hZF9zYWZlX3Bh dGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKLSAg ICAgewotICAgICAgIGNoYXIgKmRpciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9z YWZlX3BhdGhfdmVjLCBpeCk7Ci0tICAgICAgY2hhciAqZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQg KGRpcik7Ci0tICAgICAgY2hhciAqcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBhbmRlZCk7 Ci0rICAgICAgY2hhciAqZGRpcl9zdWJzdCwgKmV4cGFuZGVkLCAqcmVhbF9wYXRoOwotIAotLSAg ICAgIC8qIEVuc3VyZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBhbmQt ZWQuICAqLwotKyAgICAgIGRkaXJfc3Vic3QgPSB4c3RyZHVwIChkaXIpOwotKyAgICAgIHN1YnN0 aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZGlyX3N1YnN0LCAiJGRkaXIiLCBnZGJfZGF0YWRpcik7 Ci0rICAgICAgZXhwYW5kZWQgPSB0aWxkZV9leHBhbmQgKGRkaXJfc3Vic3QpOwotKyAgICAgIHhm cmVlIChkZGlyX3N1YnN0KTsKLSsgICAgICByZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFu ZGVkKTsKLSsKLSsgICAgICAvKiBFbnN1cmUgdGhlIGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3Qg YSB2YWxpZCBwYXRoICh0aGVyZWZvcmUKLSsJICRkZGlyLWV4cGFuZGVkIGFuZCB0aWxkZS1leHBh bmRlZCkuICAqLwotICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVf cGF0aF92ZWMsIGl4LCBleHBhbmRlZCk7Ci0gCi0gICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkK LUBAIC0xNzYsMTUgKzE4MywyNCBAQCBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRhdGUgKHZv aWQpCi0gICAgIH0KLSB9Ci0gCi0rLyogVmFyaWFibGUgZ2RiX2RhdGFkaXIgaGFzIGJlZW4gc2V0 LiAgVXBkYXRlIGNvbnRlbnQgZGVwZW5kaW5nIG9uICRkZGlyLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK2F1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFuZ2VkICh2b2lkKQotK3sKLSsgIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAoKTsKLSt9Ci0rCi0gLyogInNldCIgY29tbWFuZCBmb3Ig dGhlIGF1dG9fbG9hZF9zYWZlX3BhdGggY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0gCi0g c3RhdGljIHZvaWQKLSBzZXRfYXV0b19sb2FkX3NhZmVfcGF0aCAoY2hhciAqYXJncywgaW50IGZy b21fdHR5LCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLSB7Ci0rICAvKiBTZXR0aW5nIHRo ZSB2YXJpYWJsZSB0byAiIiByZXNldHMgaXQgdG8gdGhlIGNvbXBpbGUgdGltZSBkZWZhdWx0cy4g ICovCi0gICBpZiAoYXV0b19sb2FkX3NhZmVfcGF0aFswXSA9PSAnXDAnKQotICAgICB7Ci0gICAg ICAgeGZyZWUgKGF1dG9fbG9hZF9zYWZlX3BhdGgpOwotLSAgICAgIGF1dG9fbG9hZF9zYWZlX3Bh dGggPSB4c3RyZHVwIChERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgpOwotKyAgICAgIGF1dG9f bG9hZF9zYWZlX3BhdGggPSB4c3RyZHVwIChBVVRPX0xPQURfU0FGRV9QQVRIKTsKLSAgICAgfQot IAotICAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICgpOwotQEAgLTEwNDAsNyArMTA1 Niw3IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKLSBVc2FnZTog aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAotIAkgICBhdXRvX2xvYWRfaW5mb19jbWRs aXN0X2dldCAoKSk7Ci0gCi0tICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1cCAoREVGQVVM VF9BVVRPX0xPQURfU0FGRV9QQVRIKTsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGggPSB4c3RyZHVw IChBVVRPX0xPQURfU0FGRV9QQVRIKTsKLSAgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0 ZSAoKTsKLSAgIGFkZF9zZXRzaG93X29wdGlvbmFsX2ZpbGVuYW1lX2NtZCAoInNhZmUtcGF0aCIs IGNsYXNzX3N1cHBvcnQsCi0gCQkJCSAgICAgJmF1dG9fbG9hZF9zYWZlX3BhdGgsIF8oIlwKLUBA IC0xMDU4LDYgKzEwNzQsNyBAQCBUaGlzIG9wdGlvbnMgaGFzIHNlY3VyaXR5IGltcGxpY2F0aW9u cyBmCi0gCQkJCSAgICAgc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoLAotIAkJCQkgICAgIGF1dG9f bG9hZF9zZXRfY21kbGlzdF9nZXQgKCksCi0gCQkJCSAgICAgYXV0b19sb2FkX3Nob3dfY21kbGlz dF9nZXQgKCkpOwotKyAgb2JzZXJ2ZXJfYXR0YWNoX2dkYl9kYXRhZGlyX2NoYW5nZWQgKGF1dG9f bG9hZF9nZGJfZGF0YWRpcl9jaGFuZ2VkKTsKLSAKLSAgIGNtZCA9IGFkZF9jbWQgKCJhZGQtYXV0 by1sb2FkLXNhZmUtcGF0aCIsIGNsYXNzX3N1cHBvcnQsCi0gCQkgYWRkX2F1dG9fbG9hZF9zYWZl X3BhdGgsCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlnLmluCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWcuaW4JMjAxMi0wNS0x NCAxNDoxNzo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9j b25maWcuaW4JMjAxMi0wNS0xNCAxNDoxODowMS45MTUwNDEyNTggKzAyMDAKLUBAIC03LDYgKzcs OSBAQAotIC8qIERlZmluZSBpZiBidWlsZGluZyB1bml2ZXJzYWwgKGludGVybmFsIGhlbHBlciBt YWNybykgKi8KLSAjdW5kZWYgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECi0gCi0rLyogRGlyZWN0 b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAqLwotKyN1bmRlZiBBVVRPX0xP QURfU0FGRV9QQVRICi0rCi0gLyogRGlyZWN0b3J5IG9mIHByb2dyYW1zLiAqLwotICN1bmRlZiBC SU5ESVIKLSAKLUBAIC00Myw5ICs0Niw2IEBACi0gICAgbW92ZWQuICovCi0gI3VuZGVmIERFQlVH RElSX1JFTE9DQVRBQkxFCi0gCi0tLyogRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9h ZGVkIGZpbGVzLiAqLwotLSN1bmRlZiBERUZBVUxUX0FVVE9fTE9BRF9TQUZFX1BBVEgKLS0KLSAv KiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCBhcmNoaXRlY3R1cmUuICovCi0gI3VuZGVmIERFRkFV TFRfQkZEX0FSQ0gKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQky MDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjE4OjAxLjkxODA0MTI1MiArMDIwMAotQEAg LTE2NjgsNyArMTY2OCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXJwbSAgICAg ICAgICAgICAgcXVlcnkgcnBtIGRhdGFiYXNlIGZvciBtaXNzaW5nIGRlYnVnaW5mb3MgKHllcy9u bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZi4gYXV0bz1saWJycG0uc28pCi0gICAt LXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICi0tICAgICAgICAgICAgICAgICAgICAgICAg ICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxl cywgdXNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRoLWdkYi1k YXRhZGlyIHBhdGggWyRkZGlyL2F1dG8tbG9hZF0KLSAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2Fm ZS1wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1s b2FkZWQgZmlsZXMgbG9jYXRpb25zCi0gICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGli dW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0Ci1AQCAtODQ4OCwyMCArODQ4OSwyMSBAQCAk YXNfZWNob19uICJjaGVja2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvCi0gIyBDaGVjayB3aGV0aGVy IC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoIHdhcyBnaXZlbi4KLSBpZiB0ZXN0ICIke3dpdGhf YXV0b19sb2FkX3NhZmVfcGF0aCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gICB3aXRodmFsPSR3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg7IGlmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgi ID0gIm5vIjsgdGhlbgotLSAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKLS0gZmkKLSsg ICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKLSsgICAgIGZpCi0gZWxzZQotLSAgd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkcHJlZml4IgotKyAgd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoPSckZGRpci9hdXRvLWxvYWQnCi0gZmkKLSAKLStlc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1 dG9fbG9hZF9zYWZlX3BhdGggfCBzZWQgJ3MvWyRdZGRpclw+L1xcXFxcXFxcXFxcXCYvZydgCi0g Ci0gICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZp eCIKLSAgIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJl Zml4fScKLS0gIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9w YXRoYAotKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRlc2NhcGVfZGlyYAotICAgYWNfZGVm aW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAotIAotIGNhdCA+PmNvbmZkZWZzLmgg PDxfQUNFT0YKLS0jZGVmaW5lIERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCAiJGFjX2RlZmlu ZV9kaXIiCi0rI2RlZmluZSBBVVRPX0xPQURfU0FGRV9QQVRIICIkYWNfZGVmaW5lX2RpciIKLSBf QUNFT0YKLSAKLSAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5h YwkyMDEyLTA1LTE0IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjkxOTA0MTI1MCArMDIw MAotQEAgLTM0MSwxMyArMzQxLDE2IEBAIGZpCi0gIAotIEFDX01TR19DSEVDS0lORyhbZm9yIGRl ZmF1bHQgYXV0by1sb2FkIHNhZmUtcGF0aF0pCi0gQUNfQVJHX1dJVEgoYXV0by1sb2FkLXNhZmUt cGF0aCwKLS1BU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGg9UEFUSF0s IFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXNdKQotLUFTX0hFTFBf U1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sIFtkbyBub3QgcmVzdHJpY3Qg YXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSksCi0tW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhlbgotLSAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0i LyIKLS0gZmldLAotLVt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiRwcmVmaXgiXSkKLS1BQ19E RUZJTkVfRElSKERFRkFVTFRfQVVUT19MT0FEX1NBRkVfUEFUSCwgd2l0aF9hdXRvX2xvYWRfc2Fm ZV9wYXRoLAotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRI XSwKLSsgIFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZSAk ZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGggQDw6QCRkZGlyL2F1dG8tbG9hZEA6PkBd KQotK0FTX0hFTFBfU1RSSU5HKFstLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aF0sCi0rICAg ICAgICAgICAgICAgW2RvIG5vdCByZXN0cmljdCBhdXRvLWxvYWRlZCBmaWxlcyBsb2NhdGlvbnNd KSwKLSsgICAgW2lmIHRlc3QgIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgiID0gIm5vIjsgdGhl bgotKyAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotKyAgICAgZmldLAotK1t3aXRo X2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9hZCddKQotK2VzY2FwZV9kaXI9YGVj aG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxc XFxcXFwmL2cnYAotK0FDX0RFRklORV9ESVIoQVVUT19MT0FEX1NBRkVfUEFUSCwgZXNjYXBlX2Rp ciwKLSAJICAgICAgW0RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy5d KQotIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhdKQotIAotSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RlZnMuaAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjAxMjAub3JpZy9nZGIvZGVmcy5oCTIwMTItMDUtMTQgMTQ6MTc6NDguMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZGVmcy5oCTIwMTItMDUtMTQgMTQ6 MTg6MDEuOTE5MDQxMjUwICswMjAwCi1AQCAtNDQyLDYgKzQ0Miw5IEBAIGV4dGVybiBzdHJ1Y3Qg Y2xlYW51cCAqbWFrZV9icHN0YXRfY2xlYXIKLSAKLSBleHRlcm4gaW50IHByb2R1Y2VyX2lzX2dj Y19nZV80IChjb25zdCBjaGFyICpwcm9kdWNlcik7Ci0gCi0rZXh0ZXJuIHZvaWQgc3Vic3RpdHV0 ZV9wYXRoX2NvbXBvbmVudCAoY2hhciAqKnN0cmluZ3AsIGNvbnN0IGNoYXIgKmZyb20sCi0rCQkJ CSAgICAgICBjb25zdCBjaGFyICp0byk7Ci0rCi0gI2lmZGVmIEhBVkVfV0FJVFBJRAotIGV4dGVy biBwaWRfdCB3YWl0X3RvX2RpZV93aXRoX3RpbWVvdXQgKHBpZF90IHBpZCwgaW50ICpzdGF0dXMs IGludCB0aW1lb3V0KTsKLSAjZW5kaWYKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi90 b3AuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdG9wLmMJ MjAxMi0wNS0xNCAxNDoxNzo0OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw MTIwL2dkYi90b3AuYwkyMDEyLTA1LTE0IDE0OjE4OjAxLjkxOTA0MTI1MCArMDIwMAotQEAgLTQ3 LDYgKzQ3LDcgQEAKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9w eXRob24uaCIKLSAjaW5jbHVkZSAiaW50ZXJwcy5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgot IAotIC8qIHJlYWRsaW5lIGluY2x1ZGUgZmlsZXMuICAqLwotICNpbmNsdWRlICJyZWFkbGluZS9y ZWFkbGluZS5oIgotQEAgLTE1NjEsNiArMTU2MiwxNSBAQCBzaG93X2V4ZWNfZG9uZV9kaXNwbGF5 X3AgKHN0cnVjdCB1aV9maWxlCi0gCQkJICAgICJhc3luY2hyb25vdXMgZXhlY3V0aW9uIGNvbW1h bmRzIGlzICVzLlxuIiksCi0gCQkgICAgdmFsdWUpOwotIH0KLSsKLSsvKiAic2V0IiBjb21tYW5k IGZvciB0aGUgZ2RiX2RhdGFkaXIgY29uZmlndXJhdGlvbiB2YXJpYWJsZS4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStzZXRfZ2RiX2RhdGFkaXIgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwgc3Ry dWN0IGNtZF9saXN0X2VsZW1lbnQgKmMpCi0rewotKyAgb2JzZXJ2ZXJfbm90aWZ5X2dkYl9kYXRh ZGlyX2NoYW5nZWQgKCk7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gaW5pdF9tYWluICh2b2lkKQot IHsKLUBAIC0xNjY4LDcgKzE2NzgsNyBAQCBVc2UgXCJvblwiIHRvIGVuYWJsZSB0aGUgbm90aWZp Y2F0aW9uLCBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiU2hvdyBHREIncyBkYXRh IGRpcmVjdG9yeS4iKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJcCi0gV2hlbiBz ZXQsIEdEQiB1c2VzIHRoZSBzcGVjaWZpZWQgcGF0aCB0byBzZWFyY2ggZm9yIGRhdGEgZmlsZXMu IiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXRfZ2RiX2RhdGFkaXIsIE5VTEwsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnNldGxpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNob3ds aXN0KTsKLSB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvdXRpbHMuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvdXRpbHMuYwkyMDEyLTA1LTE0 IDE0OjE3OjQ5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL3V0 aWxzLmMJMjAxMi0wNS0xNCAxNDoxODowMS45MjAwNDEyNDggKzAyMDAKLUBAIC0zOTI1LDYgKzM5 MjUsNDggQEAgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChjb25zdCBjaGFyICpkaQotICAgcmV0 dXJuIHJldHZhbDsKLSB9Ci0gCi0rLyogU3Vic3RpdHV0ZSBhbGwgb2NjdXJlbmNlcyBvZiBzdHJp bmcgRlJPTSBieSBzdHJpbmcgVE8gaW4gKlNUUklOR1AuICAqU1RSSU5HUAotKyAgIG11c3QgY29t ZSBmcm9tIHhyZWFsbG9jLWNvbXBhdGlibGUgYWxsb2NhdG9yIGFuZCBpdCBtYXkgYmUgdXBkYXRl ZC4gIEZST00KLSsgICBuZWVkcyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElSX1NFUEFSQVRPUiAo b3IgYmUgbG9jYXRlZCBhdCB0aGUgc3RhcnQgb3IKLSsgICBlbmQgb2YgKlNUUklOR1AuICAqLwot KwotK3ZvaWQKLStzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3RyaW5ncCwgY29u c3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdG8pCi0rewotKyAgY2hhciAqc3RyaW5nID0gKnN0 cmluZ3AsICpzOwotKyAgY29uc3Qgc2l6ZV90IGZyb21fbGVuID0gc3RybGVuIChmcm9tKTsKLSsg IGNvbnN0IHNpemVfdCB0b19sZW4gPSBzdHJsZW4gKHRvKTsKLSsKLSsgIGZvciAocyA9IHN0cmlu Zzs7KQotKyAgICB7Ci0rICAgICAgcyA9IHN0cnN0ciAocywgZnJvbSk7Ci0rICAgICAgaWYgKHMg PT0gTlVMTCkKLSsJYnJlYWs7Ci0rCi0rICAgICAgaWYgKChzID09IHN0cmluZyB8fCBJU19ESVJf U0VQQVJBVE9SIChzWy0xXSkpCi0rICAgICAgICAgICYmIChzW2Zyb21fbGVuXSA9PSAnXDAnIHx8 IElTX0RJUl9TRVBBUkFUT1IgKHNbZnJvbV9sZW5dKSkpCi0rCXsKLSsJICBjaGFyICpzdHJpbmdf bmV3OwotKwotKwkgIHN0cmluZ19uZXcgPSB4cmVhbGxvYyAoc3RyaW5nLCAoc3RybGVuIChzdHJp bmcpICsgdG9fbGVuICsgMSkpOwotKwotKwkgIC8qIFJlbG9jYXRlIHRoZSBjdXJyZW50IFMgcG9p bnRlci4gICovCi0rCSAgcyA9IHMgLSBzdHJpbmcgKyBzdHJpbmdfbmV3OwotKwkgIHN0cmluZyA9 IHN0cmluZ19uZXc7Ci0rCi0rCSAgLyogUmVwbGFjZSBmcm9tIGJ5IHRvLiAgKi8KLSsJICBtZW1t b3ZlICgmc1t0b19sZW5dLCAmc1tmcm9tX2xlbl0sIHN0cmxlbiAoJnNbZnJvbV9sZW5dKSArIDEp OwotKwkgIG1lbWNweSAocywgdG8sIHRvX2xlbik7Ci0rCi0rCSAgcyArPSB0b19sZW47Ci0rCX0K LSsgICAgICBlbHNlCi0rCXMrKzsKLSsgICAgfQotKwotKyAgKnN0cmluZ3AgPSBzdHJpbmc7Ci0r fQotKwotICNpZmRlZiBIQVZFX1dBSVRQSUQKLSAKLSAjaWZkZWYgU0lHQUxSTQotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjAxMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMTQgMTQ6 MTc6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTItMDUtMTQgMTQ6MTg6MDEuOTI1MDQxMjM4ICswMjAwCi1AQCAtMjA4MDMs NyArMjA4MDMsNyBAQCBsb2NhbC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0Ci0g ICAgICAgICAgICAgICAgIGlzIG9uLgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9m IFB5dGhvbiBzY3JpcHRzIGlzIG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMg ZnJvbSB3aGljaCBpdCBpcyBzYWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotLSAgICAgICAgICAgIGlz IC91c3IvbG9jYWwuCi0rICAgICAgICAgICAgaXMgJGRkaXIvYXV0by1sb2FkLgotIEBlbmQgc21h bGxleGFtcGxlCi0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMTAwNiw5ICsyMTAw Niw5IEBAIGdldCBsb2FkZWQ6Ci0gJCAuL2dkYiAtcSAuL2dkYgotIFJlYWRpbmcgc3ltYm9scyBm cm9tIC9ob21lL3VzZXIvZ2RiL2dkYi4uLmRvbmUuCi0gd2FybmluZzogRmlsZSAiL2hvbWUvdXNl ci9nZGIvZ2RiLWdkYi5nZGIiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xp bmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0r ICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIk ZGRpci9hdXRvLWxvYWQiLgotIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIu cHkiIGF1dG8tbG9hZGluZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1 dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiL3Vzci9sb2NhbCIuCi0rICAgICAgICAgZGVjbGlu ZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQi LgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3Rvcmll cyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci1AQCAtMjEwNDAsNyAr MjEwNDAsMTggQEAgbG9hZGluZyBhbmQgZXhlY3V0aW9uIG9mIHNjcmlwdHMuICBNdWx0aQotIGhv c3QgcGxhdGZvcm0gcGF0aCBzZXBhcmF0b3IgaW4gdXNlLgotIEBlbmQgdGFibGUKLSAKLS1TZXR0 aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30gZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90 ZWN0aW9uLgotK1RoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gQGZpbGV7JGRkaXIvYXV0by1sb2Fk fS4gIFRoZSBkZWZhdWx0IEBjb2Rle3NldAotK2F1dG8tbG9hZCBzYWZlLXBhdGh9IHZhbHVlIGNh biBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlvbgotK29wdGlv biBAb3B0aW9uey0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KLSsKLStBbnkgdXNlZCBzdHJp bmcgQGZpbGV7JGRkaXJ9IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9 IHdoaWNoIGlzCi0rZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cCAoQHB4cmVme0Rh dGEgRmlsZXN9KS4gIEBmaWxleyRkZGlyfSBtdXN0IGJlCi0rYmUgcGxhY2VkIGFzIGEgZGlyZWN0 b3J5IGNvbXBvbmVudCAtLS0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieSBAZmlsZXsvfSBv cgotK0BmaWxle1x9IGRpcmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3Qg cGxhdGZvcm0uCi0rCi0rU2V0dGluZyB0aGlzIHZhcmlhYmxlIHRvIEBmaWxley99IGRpc2FibGVz IHRoaXMgc2VjdXJpdHkgcHJvdGVjdGlvbiwKLStjb3JyZXNwb25kaW5nIEB2YWx1ZXtHREJOfSBj b25maWd1cmF0aW9uIG9wdGlvbiBpcwotK0BvcHRpb257LS13aXRob3V0LWF1dG8tbG9hZC1zYWZl LXBhdGh9LgotIFRoaXMgdmFyaWFibGUgaXMgc3VwcG9zZWQgdG8gYmUgc2V0IHRvIHRoZSBzeXN0 ZW0gZGlyZWN0b3JpZXMgd3JpdGFibGUgYnkgdGhlCi0gc3lzdGVtIHN1cGVydXNlciBvbmx5LiAg VXNlcnMgY2FuIGFkZCB0aGVpciBzb3VyY2UgZGlyZWN0b3JpZXMgaW4gaW5pdCBmaWxlcyBpbgot IHRoZWlyIGhvbWUgZGlyZWN0b3JpZXMgKEBweHJlZntIb21lIERpcmVjdG9yeSBJbml0IEZpbGV9 KS4gIFNlZSBhbHNvIGRlcHJlY2F0ZWQKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9k b2Mvb2JzZXJ2ZXIudGV4aQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3Jp Zy9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMi0wNS0xNCAxNDoxNzo0Ny4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQkyMDEyLTA1 LTE0IDE0OjE4OjAxLjkyNjA0MTIzNiArMDIwMAotQEAgLTIzMSw2ICsyMzEsMTAgQEAgdGhlIGN1 cnJlbnQgdG9wLWxldmVsIHByb21wdC4KLSBAYyBjb2xsZWN0b3IgcGFzcy4gIEN1cnJlbnRseSBv bmx5IEBjb2Rle3R5cGVfbWFya191c2VkfSBtYXJrZXIgaXMgc3VwcG9ydGVkLgotIEBjIEBlbmQg ZGVmdHlwZWZ1bgotIAotK0BkZWZ0eXBlZnVuIHZvaWQgZ2RiX2RhdGFkaXJfY2hhbmdlZCAodm9p ZCkKLStWYXJpYWJsZSBnZGJfZGF0YWRpciBoYXMgYmVlbiBzZXQuICBUaGUgdmFsdWUgbWF5IG5v dCBuZWNlc3NhcmlseSBjaGFuZ2UuCi0rQGVuZCBkZWZ0eXBlZnVuCi0rCi0gQGRlZnR5cGVmdW4g dm9pZCB0ZXN0X25vdGlmaWNhdGlvbiAoaW50IEB2YXJ7c29tZWFyZ30pCi0gVGhpcyBvYnNlcnZl ciBpcyB1c2VkIGZvciBpbnRlcm5hbCB0ZXN0aW5nLiAgRG8gbm90IHVzZS4gIAotIFNlZSB0ZXN0 c3VpdGUvZ2RiLmdkYi9vYnNlcnZlci5leHAuCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTIz b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yM29mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGJiODExZjYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTIzb2YyOC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyNCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDgxLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDUvMTEgMTg6MTM6MjIJMS4xNDIzNwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTIvMDUvMTEgMTg6MjA6MjUJMS4xNDIzOAotIyMgLTEsNSArMSwyMyBAQAotIDIwMTItMDUtMTEg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJSW1wbGVt ZW50IG11bHRpLWNvbXBvbmVudCAtLXdpdGgtYXV0by1sb2FkLWRpci4KLSsJKiBORVdTIChzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5LCAtLXdpdGgtYXV0by1sb2FkLWRpcik6IE5ldwot KwllbnRyaWVzLgotKwkoLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBVcGRhdGUgdGhlIGRl ZmF1bHQgdmFsdWUgZGVzY3JpcHRpb24uCi0rCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9kaXIs IHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1dG9fbG9hZF9kaXIpOgotKwlOZXcuCi0rCShhdXRv X2xvYWRfb2JqZmlsZV9zY3JpcHQpOiBBZGQgREVCVUdfQVVUT19MT0FEIG91dHB1dC4gIFJlbW92 ZQotKwlHREJfREFUQURJUiBOVUxMIGNoZWNrLiAgUmVwbGFjZSBHREJfREFUQURJUi9hdXRvLWxv YWQgYnkKLSsJQVVUT19MT0FEX0RJUi4gIFN1cHBvcnQgJGRkaXIgYW5kIG11bHRpcGxlIGNvbXBv bmVudHMgaW4gaXQuCi0rCShfaW5pdGlhbGl6ZV9hdXRvX2xvYWQpOiBJbml0aWFsaXplIGFsc28g YXV0b19sb2FkX2Rpci4gIEluc3RhbGwgbmV3Ci0rCSJzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGly ZWN0b3J5Ii4KLSsJKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0rCSogY29uZmlndXJlOiBSZWdl bmVyYXRlLgotKwkqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLWF1dG8tbG9hZC1kaXIpOiBOZXcgY29u ZmlndXJlIG9wdGlvbi4KLSsJKC0tYXV0by1sb2FkLXNhZmUtcGF0aCk6IENoYW5nZSB0aGUgZGVm YXVsdCB0byAtLXdpdGgtYXV0by1sb2FkLWRpci4KLSsKLSsyMDEyLTA1LTExICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0gCVByb3ZpZGUgJGRkaXIgc3Vi c3RpdHV0aW9uIGZvciAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aC4KLSAJKiBORVdTICgtLXdp dGgtYXV0by1sb2FkLXNhZmUtcGF0aCwgLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGgpOiBO ZXcKLSAJZW50cmllcy4KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9ORVdTCTIwMTItMDUtMTQg MTQ6MTg6MDEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvTkVX UwkyMDEyLTA1LTE0IDE0OjE4OjI5LjcxMjk4NTg3MSArMDIwMAotQEAgLTY3LDYgKzY3LDEyIEBA IHNldCBhdXRvLWxvYWQgbGlidGhyZWFkLWRiIG9ufG9mZgotIHNob3cgYXV0by1sb2FkIGxpYnRo cmVhZC1kYgotICAgQ29udHJvbCBhdXRvLWxvYWRpbmcgb2YgaW5mZXJpb3Igc3BlY2lmaWMgdGhy ZWFkIGRlYnVnZ2luZyBzaGFyZWQgbGlicmFyeS4KLSAKLStzZXQgYXV0by1sb2FkIHNjcmlwdHMt ZGlyZWN0b3J5IDxkaXIxPls6PGRpcjI+Li4uXQotKyAgU2V0IGEgbGlzdCBvZiBkaXJlY3Rvcmll cyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cy4KLSsgIEF1dG9tYXRpY2Fs bHkgbG9hZGVkIFB5dGhvbiBzY3JpcHRzIGFuZCBHREIgc2NyaXB0cyBhcmUgbG9jYXRlZCBpbiBv bmUKLSsgIG9mIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uCi0rICBUaGUg ZGVsaW1pdGVyICgnOicgYWJvdmUpIG1heSBkaWZmZXIgYWNjb3JkaW5nIHRvIHRoZSBob3N0IHBs YXRmb3JtLgotKwotIHNldCBhdXRvLWxvYWQgc2FmZS1wYXRoIDxkaXIxPls6PGRpcjI+Li4uXQot IHNob3cgYXV0by1sb2FkIHNhZmUtcGF0aAotICAgU2V0IGEgbGlzdCBvZiBkaXJlY3RvcmllcyBm cm9tIHdoaWNoIGl0IGlzIHNhZmUgdG8gYXV0by1sb2FkIGZpbGVzLgotQEAgLTMwOSwxMCArMzE1 LDE0IEBAIHNob3cgdHJhY2Utc3RvcC1ub3RlcwotIAotICogTmV3IGNvbmZpZ3VyZSBvcHRpb25z Ci0gCi0rLS13aXRoLWF1dG8tbG9hZC1kaXIKLSsgIENvbmZpZ3VyZSBkZWZhdWx0IHZhbHVlIGZv ciB0aGUgJ3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknCi0rICBzZXR0aW5nIGFib3Zl LiAgSXQgZGVmYXVsdHMgdG8gJyRkZGlyL2F1dG8tbG9hZCcsICRkZGlyIHJlcHJlc2VudGluZwot KyAgR0RCJ3MgZGF0YSBkaXJlY3RvcnkgKGF2YWlsYWJsZSB2aWEgc2hvdyBkYXRhLWRpcmVjdG9y eSkuCi0rCi0gLS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGgKLSAgIENvbmZpZ3VyZSBkZWZhdWx0 IHZhbHVlIGZvciB0aGUgJ3NldCBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXR0aW5nCi0tICBhYm92 ZS4gIEl0IGRlZmF1bHRzIHRvICckZGRpci9hdXRvLWxvYWQnLCAkZGRpciByZXByZXNlbnRpbmcg R0RCJ3MKLS0gIGRhdGEgZGlyZWN0b3J5IChhdmFpbGFibGUgdmlhIHNob3cgZGF0YS1kaXJlY3Rv cnkpLgotKyAgYWJvdmUuICBJdCBkZWZhdWx0cyB0byB0aGUgLS13aXRoLWF1dG8tbG9hZC1kaXIg c2V0dGluZy4KLSAKLSAtLXdpdGhvdXQtYXV0by1sb2FkLXNhZmUtcGF0aAotICAgU2V0ICdzZXQg YXV0by1sb2FkIHNhZmUtcGF0aCcgdG8gJy8nLCBlZmZlY3RpdmVseSBkaXNhYmxpbmcgdGhpcwot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTE0IDE0 OjE4OjAxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5jCTIwMTItMDUtMTQgMTQ6MTg6MjkuNzEzOTg1ODY5ICswMjAwCi1AQCAtMTA4LDYgKzEw OCwzNSBAQCBzaG93X2F1dG9fbG9hZF9sb2NhbF9nZGJpbml0IChzdHJ1Y3QgdWlfCi0gCQkgICAg dmFsdWUpOwotIH0KLSAKLSsvKiBEaXJlY3RvcnkgbGlzdCBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0 by1sb2FkZWQgc2NyaXB0cy4gIEl0IGlzIG5vdCBjaGVja2VkCi0rICAgZm9yIGFic29sdXRlIHBh dGhzIGJ1dCB0aGV5IGFyZSBzdHJvbmdseSByZWNvbW1lbmRlZC4gIEl0IGlzIGluaXRpYWxpemVk IGJ5Ci0rICAgX2luaXRpYWxpemVfYXV0b19sb2FkLiAgKi8KLStzdGF0aWMgY2hhciAqYXV0b19s b2FkX2RpcjsKLSsKLSsvKiAic2V0IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBjb25m aWd1cmF0aW9uIHZhcmlhYmxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3NldF9hdXRvX2xvYWRf ZGlyIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHksIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj KQotK3sKLSsgIC8qIFNldHRpbmcgdGhlIHZhcmlhYmxlIHRvICIiIHJlc2V0cyBpdCB0byB0aGUg Y29tcGlsZSB0aW1lIGRlZmF1bHRzLiAgKi8KLSsgIGlmIChhdXRvX2xvYWRfZGlyWzBdID09ICdc MCcpCi0rICAgIHsKLSsgICAgICB4ZnJlZSAoYXV0b19sb2FkX2Rpcik7Ci0rICAgICAgYXV0b19s b2FkX2RpciA9IHhzdHJkdXAgKEFVVE9fTE9BRF9ESVIpOwotKyAgICB9Ci0rfQotKwotKy8qICJz aG93IiBjb21tYW5kIGZvciB0aGUgYXV0b19sb2FkX2RpciBjb25maWd1cmF0aW9uIHZhcmlhYmxl LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nob3dfYXV0b19sb2FkX2RpciAoc3RydWN0IHVpX2Zp bGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCSAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq YywgY29uc3QgY2hhciAqdmFsdWUpCi0rewotKyAgZnByaW50Zl9maWx0ZXJlZCAoZmlsZSwgXygi TGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgIgotKwkJCSAgICAiYXV0by1s b2FkZWQgc2NyaXB0cyBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0gLyogRGly ZWN0b3J5IGxpc3Qgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLiAgSXQgaXMgbm90IGNo ZWNrZWQgZm9yCi0gICAgYWJzb2x1dGUgcGF0aHMgYnV0IHRoZXkgYXJlIHN0cm9uZ2x5IHJlY29t bWVuZGVkLiAgSXQgaXMgaW5pdGlhbGl6ZWQgYnkKLSAgICBfaW5pdGlhbGl6ZV9hdXRvX2xvYWQu ICAqLwotQEAgLTYwMiw2ICs2MzEsOSBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVj dCBvYmpmaWxlCi0gCi0gICBpbnB1dCA9IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKLSAgIGRlYnVn ZmlsZSA9IGZpbGVuYW1lOwotKyAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLSsgICAgZnByaW50Zl91 bmZpbHRlcmVkIChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlIFwiJXNc IiAlcy5cbiIpLAotKwkJCWRlYnVnZmlsZSwgaW5wdXQgPyBfKCJleGlzdHMiKSA6IF8oImRvZXMg bm90IGV4aXN0IikpOwotIAotICAgaWYgKCFpbnB1dCkKLSAgICAgewotQEAgLTYxMiw2ICs2NDQs MTIgQEAgYXV0b19sb2FkX29iamZpbGVfc2NyaXB0IChzdHJ1Y3Qgb2JqZmlsZQotICAgICAgIGRl YnVnZGlyX3ZlYyA9IGRpcm5hbWVzX3RvX2NoYXJfcHRyX3ZlYyAoZGVidWdfZmlsZV9kaXJlY3Rv cnkpOwotICAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAoZGVidWdkaXJfdmVj KTsKLSAKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwlmcHJpbnRmX3VuZmlsdGVyZWQg KGdkYl9zdGRsb2csCi0rCQkJICAgIF8oImF1dG8tbG9hZDogU2VhcmNoaW5nICdzZXQgZGVidWct ZmlsZS1kaXJlY3RvcnknICIKLSsJCQkgICAgICAicGF0aCBcIiVzXCIuXG4iKSwKLSsJCQkgICAg ZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotKwotICAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0 ZSAoY2hhcl9wdHIsIGRlYnVnZGlyX3ZlYywgaXgsIGRlYnVnZGlyKTsgKytpeCkKLSAJewotIAkg IC8qIEFsc28gdHJ5IHRoZSBzYW1lIGZpbGUgaW4gdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZGly ZWN0b3J5LiAgKi8KLUBAIC02MjMsMjQgKzY2MSw1MyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3Jp cHQgKHN0cnVjdCBvYmpmaWxlCi0gCi0gCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVidWdmaWxl KTsKLSAJICBpbnB1dCA9IGZvcGVuIChkZWJ1Z2ZpbGUsICJyIik7Ci0rCSAgaWYgKGRlYnVnX2F1 dG9fbG9hZCkKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgXygiYXV0by1s b2FkOiBBdHRlbXB0ZWQgZmlsZSAiCi0rCQkJCQkgICAgICAiXCIlc1wiICVzLlxuIiksCi0rCQkJ CWRlYnVnZmlsZSwKLSsJCQkJaW5wdXQgPyBfKCJleGlzdHMiKSA6IF8oImRvZXMgbm90IGV4aXN0 IikpOwotIAkgIGlmIChpbnB1dCAhPSBOVUxMKQotIAkgICAgYnJlYWs7Ci0gCX0KLSAgICAgfQot IAotLSAgaWYgKCFpbnB1dCAmJiBnZGJfZGF0YWRpcikKLSsgIGlmICghaW5wdXQpCi0gICAgIHsK LSsgICAgICBWRUMgKGNoYXJfcHRyKSAqdmVjOwotKyAgICAgIGludCBpeDsKLSsgICAgICBjaGFy ICpkaXI7Ci0rCi0gICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1YmRpcmVj dG9yeSBvZiBnZGIncyBkYXRhCi0gCSBkaXJlY3RvcnkuICAqLwotLSAgICAgIGRlYnVnZmlsZSA9 IHhtYWxsb2MgKHN0cmxlbiAoZ2RiX2RhdGFkaXIpICsgc3RybGVuIChmaWxlbmFtZSkKLS0JCQkg ICArIHN0cmxlbiAoIi9hdXRvLWxvYWQiKSArIDEpOwotLSAgICAgIHN0cmNweSAoZGVidWdmaWxl LCBnZGJfZGF0YWRpcik7Ci0tICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvYXV0by1sb2FkIik7 Ci0tICAgICAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIg aGVyZS4gICovCi0tICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLSAKLS0gICAg ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotLSAgICAgIGlucHV0ID0gZm9wZW4g KGRlYnVnZmlsZSwgInIiKTsKLSsgICAgICB2ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMg KGF1dG9fbG9hZF9kaXIpOwotKyAgICAgIG1ha2VfY2xlYW51cF9mcmVlX2NoYXJfcHRyX3ZlYyAo dmVjKTsKLSsKLSsgICAgICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwlmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csIF8oImF1dG8tbG9hZDogU2VhcmNoaW5nICdzZXQgYXV0by1sb2FkICIK LSsJCQkJCSAgInNjcmlwdHMtZGlyZWN0b3J5JyBwYXRoIFwiJXNcIi5cbiIpLAotKwkJCSAgICBh dXRvX2xvYWRfZGlyKTsKLSsKLSsgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNoYXJf cHRyLCB2ZWMsIGl4LCBkaXIpOyArK2l4KQotKwl7Ci0rCSAgZGVidWdmaWxlID0geHN0cmR1cCAo ZGlyKTsKLSsJICBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50ICgmZGVidWdmaWxlLCAiJGRkaXIi LCBnZGJfZGF0YWRpcik7Ci0rCSAgZGVidWdmaWxlID0geHJlYWxsb2MgKGRlYnVnZmlsZSwgKHN0 cmxlbiAoZGVidWdmaWxlKQotKwkJCQkJICAgICsgc3RybGVuIChmaWxlbmFtZSkgKyAxKSk7Ci0r Ci0rCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVy ZS4gICovCi0rCSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLSsKLSsJICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotKwkgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwg InIiKTsKLSsJICBpZiAoZGVidWdfYXV0b19sb2FkKQotKwkgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlICIKLSsJCQkJCSAgICAg ICJcIiVzXCIgJXMuXG4iKSwKLSsJCQkJZGVidWdmaWxlLAotKwkJCQlpbnB1dCA/IF8oImV4aXN0 cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0rCSAgaWYgKGlucHV0ICE9IE5VTEwpCi0rCSAg ICBicmVhazsKLSsJfQotICAgICB9Ci0gCi0gICBpZiAoaW5wdXQpCi1AQCAtMTA1Niw2ICsxMTIz LDE5IEBAIFRoaXMgb3B0aW9ucyBoYXMgc2VjdXJpdHkgaW1wbGljYXRpb25zIGYKLSBVc2FnZTog aW5mbyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdCIpLAotIAkgICBhdXRvX2xvYWRfaW5mb19jbWRs aXN0X2dldCAoKSk7Ci0gCi0rICBhdXRvX2xvYWRfZGlyID0geHN0cmR1cCAoQVVUT19MT0FEX0RJ Uik7Ci0rICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJzY3JpcHRzLWRpcmVj dG9yeSIsIGNsYXNzX3N1cHBvcnQsCi0rCQkJCSAgICAgJmF1dG9fbG9hZF9kaXIsIF8oIlwKLStT ZXQgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVk IHNjcmlwdHMuIiksIF8oIlwKLStTaG93IHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hp Y2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiIpLCBfKCJcCi0rQXV0b21hdGljYWxseSBs b2FkZWQgUHl0aG9uIHNjcmlwdHMgYW5kIEdEQiBzY3JpcHRzIGFyZSBsb2NhdGVkIGluIG9uZSBv ZiB0aGVcblwKLStkaXJlY3RvcmllcyBsaXN0ZWQgYnkgdGhpcyBvcHRpb24uICBUaGlzIG9wdGlv biBpcyBpZ25vcmVkIGZvciB0aGUga2luZHMgb2ZcblwKLStzY3JpcHRzIGhhdmluZyAnc2V0IGF1 dG8tbG9hZCAuLi4gb2ZmJy4gIERpcmVjdG9yaWVzIGxpc3RlZCBoZXJlIG5lZWQgdG8gYmVcblwK LStwcmVzZW50IGFsc28gaW4gdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgb3B0aW9uLiIp LAotKwkJCQkgICAgIHNldF9hdXRvX2xvYWRfZGlyLCBzaG93X2F1dG9fbG9hZF9kaXIsCi0rCQkJ CSAgICAgYXV0b19sb2FkX3NldF9jbWRsaXN0X2dldCAoKSwKLSsJCQkJICAgICBhdXRvX2xvYWRf c2hvd19jbWRsaXN0X2dldCAoKSk7Ci0rCi0gICBhdXRvX2xvYWRfc2FmZV9wYXRoID0geHN0cmR1 cCAoQVVUT19MT0FEX1NBRkVfUEFUSCk7Ci0gICBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlY191cGRh dGUgKCk7Ci0gICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJzYWZlLXBhdGgi LCBjbGFzc19zdXBwb3J0LAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZy5p bgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlnLmlu CTIwMTItMDUtMTQgMTQ6MTg6MDEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEy MDEyMC9nZGIvY29uZmlnLmluCTIwMTItMDUtMTQgMTQ6MTg6MjkuNzEzOTg1ODY5ICswMjAwCi1A QCAtNyw2ICs3LDkgQEAKLSAvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRlcm5h bCBoZWxwZXIgbWFjcm8pICovCi0gI3VuZGVmIEFDX0FQUExFX1VOSVZFUlNBTF9CVUlMRAotIAot Ky8qIERpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLiAq LwotKyN1bmRlZiBBVVRPX0xPQURfRElSCi0rCi0gLyogRGlyZWN0b3JpZXMgc2FmZSB0byBob2xk IGF1dG8tbG9hZGVkIGZpbGVzLiAqLwotICN1bmRlZiBBVVRPX0xPQURfU0FGRV9QQVRICi0gCi1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9jb25maWd1cmUJMjAxMi0wNS0xNCAxNDoxODow MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUJ MjAxMi0wNS0xNCAxNDoyMToxMy4wNjg4NDkxMDMgKzAyMDAKLUBAIC05NTUsNiArOTU1LDcgQEAg d2l0aF9zZXBhcmF0ZV9kZWJ1Z19kaXIKLSB3aXRoX2dkYl9kYXRhZGlyCi0gd2l0aF9yZWxvY2F0 ZWRfc291cmNlcwotIHdpdGhfcnBtCi0rd2l0aF9hdXRvX2xvYWRfZGlyCi0gd2l0aF9hdXRvX2xv YWRfc2FmZV9wYXRoCi0gZW5hYmxlX3RhcmdldHMKLSBlbmFibGVfNjRfYml0X2JmZAotQEAgLTE2 NjcsOSArMTY2OCwxMyBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMK LSAgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2lu ZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkZWYuIGF1 dG89bGlicnBtLnNvKQotKyAgLS13aXRoLWF1dG8tbG9hZC1kaXI9UEFUSAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8tbG9hZGVk IHNjcmlwdHMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgJyRkZGlyJyBmb3IgLWRh dGEtZGlyZWN0b3J5IFskZGRpci9hdXRvLWxvYWRdCi0gICAtLXdpdGgtYXV0by1sb2FkLXNhZmUt cGF0aD1QQVRICi0gICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRv IGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZQotLSAgICAgICAgICAgICAgICAgICAgICAgICAg JGRkaXIgZm9yIC0td2l0aC1nZGItZGF0YWRpciBwYXRoIFskZGRpci9hdXRvLWxvYWRdCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAkZGRpciBmb3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGgK LSsgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdpdGgtYXV0by1sb2FkLWRpcl0KLSAgIC0t d2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBk byBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCi0gICAtLXdpdGgtbGli dW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBzdXBwb3J0Ci1AQCAt ODQ4Myw2ICs4NDg4LDMxIEBAICRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRSUE1fUEtHX0VS Uk8KLSAgIGZpCi0gZmkKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVO T306IGNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3RvcnkiID4mNQotKyRhc19l Y2hvX24gImNoZWNraW5nIGZvciBkZWZhdWx0IGF1dG8tbG9hZCBkaXJlY3RvcnkuLi4gIiA+JjY7 IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWF1dG8tbG9hZC1kaXIgd2FzIGdpdmVuLgot K2lmIHRlc3QgIiR7d2l0aF9hdXRvX2xvYWRfZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdp dGh2YWw9JHdpdGhfYXV0b19sb2FkX2RpcjsKLStlbHNlCi0rICB3aXRoX2F1dG9fbG9hZF9kaXI9 JyRkZGlyL2F1dG8tbG9hZCcKLStmaQotKwotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19s b2FkX2RpciB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AKLSsKLSsgIHRlc3Qg IngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgotKyAgdGVz dCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotKyAg YWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRlc2NhcGVfZGlyYAotKyAgYWNfZGVmaW5lX2Rpcj1g ZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAotKwotK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YK LSsjZGVmaW5lIEFVVE9fTE9BRF9ESVIgIiRhY19kZWZpbmVfZGlyIgotK19BQ0VPRgotKwotKwot K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9h dXRvX2xvYWRfZGlyIiA+JjUKLSskYXNfZWNobyAiJHdpdGhfYXV0b19sb2FkX2RpciIgPiY2OyB9 Ci0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBm b3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2lu ZyBmb3IgZGVmYXVsdCBhdXRvLWxvYWQgc2FmZS1wYXRoLi4uICIgPiY2OyB9Ci0gCi1AQCAtODQ5 Miw3ICs4NTIyLDcgQEAgaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGgrc2V0fQot ICAgICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIvIgotICAgICAgZmkKLSBlbHNlCi0tICB3 aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9JyRkZGlyL2F1dG8tbG9hZCcKLSsgIHdpdGhfYXV0b19s b2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciIKLSBmaQotIAotIGVzY2FwZV9kaXI9 YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1kZGlyXD4vXFxcXFxc XFxcXFxcJi9nJ2AKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5h YwkyMDEyLTA1LTE0IDE0OjE4OjAxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjIxOjAxLjU5Nzg3MTcxNiArMDIw MAotQEAgLTMzOSwxNiArMzM5LDI2IEBAIGV4dGVybiBycG1kYk1hdGNoSXRlcmF0b3IgcnBtdHNJ bml0SXRlcmEKLSAgIGZpCi0gZmkKLSAgCi0rQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVsdCBh dXRvLWxvYWQgZGlyZWN0b3J5XSkKLStBQ19BUkdfV0lUSChhdXRvLWxvYWQtZGlyLAotK0FTX0hF TFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRIXSwKLSsgIFtkaXJlY3RvcmllcyBm cm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywgdXNlICckZGRpcicgZm9yIC1k YXRhLWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0pLCwKLSsgIFt3aXRoX2F1dG9f bG9hZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCddKQotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0 b19sb2FkX2RpciB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotK0FDX0RF RklORV9ESVIoQVVUT19MT0FEX0RJUiwgZXNjYXBlX2RpciwKLSsJICAgICAgW0RpcmVjdG9yaWVz IGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLl0pCi0rQUNfTVNHX1JFU1VM VChbJHdpdGhfYXV0b19sb2FkX2Rpcl0pCi0rCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVs dCBhdXRvLWxvYWQgc2FmZS1wYXRoXSkKLSBBQ19BUkdfV0lUSChhdXRvLWxvYWQtc2FmZS1wYXRo LAotIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRIXSwKLS0g IFtkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMsIHVzZSAkZGRpciBm b3IgLS13aXRoLWdkYi1kYXRhZGlyIHBhdGggQDw6QCRkZGlyL2F1dG8tbG9hZEA6PkBdKQotKyAg W2RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlICRkZGlyIGZv ciAtLXdpdGgtZ2RiLWRhdGFkaXIgcGF0aCBAPDpALS13aXRoLWF1dG8tbG9hZC1kaXJAOj5AXSkK LSBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1zYWZlLXBhdGhdLAotICAgICAg ICAgICAgICAgIFtkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zXSks Ci0gICAgIFtpZiB0ZXN0ICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA9ICJubyI7IHRoZW4K LSAgICAgIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iLyIKLSAgICAgIGZpXSwKLS1bd2l0aF9h dXRvX2xvYWRfc2FmZV9wYXRoPSckZGRpci9hdXRvLWxvYWQnXSkKLStbd2l0aF9hdXRvX2xvYWRf c2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIl0pCi0gZXNjYXBlX2Rpcj1gZWNobyAkd2l0 aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1tbJF1dZGRpclw+L1xcXFxcXFxcXFxcXCYv ZydgCi0gQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAotIAkg ICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0x NCAxNDoxODowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9k b2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoyMDoxMy42NTM5NjYyMTIgKzAyMDAKLUBAIC0y MDgwNCw2ICsyMDgwNCw4IEBAIGxvY2FsLWdkYmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmlu aXQKLSBweXRob24tc2NyaXB0czogIEF1dG8tbG9hZGluZyBvZiBQeXRob24gc2NyaXB0cyBpcyBv bi4KLSBzYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggaXQgaXMgc2Fm ZSB0byBhdXRvLWxvYWQgZmlsZXMKLSAgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCi0r c2NyaXB0cy1kaXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9h ZCBhdXRvLWxvYWRlZCBzY3JpcHRzCi0rICAgICAgICAgICAgICAgICAgICBpcyAkZGRpci9hdXRv LWxvYWQuCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQot QEAgLTIwODY0LDYgKzIwODY2LDEwIEBAIFRoZXNlIGFyZSBAdmFsdWV7R0RCTn0gY29udHJvbCBj b21tYW5kcwotIEB0YWIgU2hvdyBzZXR0aW5nIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0 cy4KLSBAaXRlbSBAeHJlZntpbmZvIGF1dG8tbG9hZCBweXRob24tc2NyaXB0c30uCi0gQHRhYiBT aG93IHN0YXRlIG9mIEB2YWx1ZXtHREJOfSBQeXRob24gc2NyaXB0cy4KLStAaXRlbSBAeHJlZntz ZXQgYXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KLStAdGFiIENvbnRyb2wgZm9yIEB2YWx1 ZXtHREJOfSBhdXRvLWxvYWRlZCBzY3JpcHRzIGxvY2F0aW9uLgotK0BpdGVtIEB4cmVme3Nob3cg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KLStAdGFiIFNob3cgQHZhbHVle0dEQk59IGF1 dG8tbG9hZGVkIHNjcmlwdHMgbG9jYXRpb24uCi0gQGl0ZW0gQHhyZWZ7c2V0IGF1dG8tbG9hZCBs b2NhbC1nZGJpbml0fS4KLSBAdGFiIENvbnRyb2wgZm9yIGluaXQgZmlsZSBpbiB0aGUgY3VycmVu dCBkaXJlY3RvcnkuCi0gQGl0ZW0gQHhyZWZ7c2hvdyBhdXRvLWxvYWQgbG9jYWwtZ2RiaW5pdH0u Ci1AQCAtMjEwNDAsMTUgKzIxMDQ2LDEzIEBAIGxvYWRpbmcgYW5kIGV4ZWN1dGlvbiBvZiBzY3Jp cHRzLiAgTXVsdGkKLSBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJhdG9yIGluIHVzZS4KLSBAZW5k IHRhYmxlCi0gCi0tVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAZmlsZXskZGRpci9hdXRvLWxv YWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0rVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byB3 aGF0IEBjb2Rley0td2l0aC1hdXRvLWxvYWQtZGlyfSBoYXMgYmVlbiBjb25maWd1cmVkCi0rdG8g KEBweHJlZnt3aXRoLWF1dG8tbG9hZC1kaXJ9KS4gIEBmaWxleyRkZGlyfSBzdWJzdGl0dWF0aW9u IGFwcGxpZXMgdGhlIHNhbWUKLSthcyBmb3IgQHhyZWZ7c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRp cmVjdG9yeX0uCi0rVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0gYXV0by1sb2FkIHNhZmUtcGF0aH0g dmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtHREJOfSBjb25maWd1cmF0aW9u Ci0gb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1zYWZlLXBhdGh9LgotIAotLUFueSB1 c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkYXRhLWRp cmVjdG9yeX0gd2hpY2ggaXMKLS1kZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwIChA cHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLS1iZSBwbGFjZWQgYXMg YSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVkIGJ5IEBm aWxley99IG9yCi0tQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGluZyBvbiB0 aGUgaG9zdCBwbGF0Zm9ybS4KLS0KLSBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gQGZpbGV7L30g ZGlzYWJsZXMgdGhpcyBzZWN1cml0eSBwcm90ZWN0aW9uLAotIGNvcnJlc3BvbmRpbmcgQHZhbHVl e0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzCi0gQG9wdGlvbnstLXdpdGhvdXQtYXV0by1s b2FkLXNhZmUtcGF0aH0uCi1AQCAtMjUxMzUsNyArMjUxMzksNyBAQCByZWdpc3RlcmluZyBvYmpm aWxlLXNwZWNpZmljIHByZXR0eS1wcmluCi0gQGNpbmRleCBAZmlsZXtAdmFye29iamZpbGV9LWdk Yi5weX0KLSAKLSBXaGVuIGEgbmV3IG9iamVjdCBmaWxlIGlzIHJlYWQsIEB2YWx1ZXtHREJOfSBs b29rcyBmb3IKLS1hIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntvYmpmaWxlfS1nZGIucHl9LAotK2Eg ZmlsZSBuYW1lZCBAZmlsZXtAdmFye29iamZpbGV9LWdkYi5weX0gKHdlIGNhbGwgaXQgQHZhcntz Y3JpcHQtbmFtZX0gYmVsb3cpLAotIHdoZXJlIEB2YXJ7b2JqZmlsZX0gaXMgdGhlIG9iamVjdCBm aWxlJ3MgcmVhbCBuYW1lLCBmb3JtZWQgYnkgZW5zdXJpbmcKLSB0aGF0IHRoZSBmaWxlIG5hbWUg aXMgYWJzb2x1dGUsIGZvbGxvd2luZyBhbGwgc3ltbGlua3MsIGFuZCByZXNvbHZpbmcKLSBAY29k ZXsufSBhbmQgQGNvZGV7Li59IGNvbXBvbmVudHMuICBJZiB0aGlzIGZpbGUgZXhpc3RzIGFuZCBp cwotQEAgLTI1MTQzLDE0ICsyNTE0Nyw0MiBAQCByZWFkYWJsZSwgQHZhbHVle0dEQk59IHdpbGwg ZXZhbHVhdGUgaXQKLSAKLSBJZiB0aGlzIGZpbGUgZG9lcyBub3QgZXhpc3QsIGFuZCBpZiB0aGUg cGFyYW1ldGVyCi0gQGNvZGV7ZGVidWctZmlsZS1kaXJlY3Rvcnl9IGlzIHNldCAoQHB4cmVme1Nl cGFyYXRlIERlYnVnIEZpbGVzfSksCi0tdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvciBA dmFye3JlYWwtbmFtZX0gaW4gYWxsIG9mIHRoZQotK3RoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9v ayBmb3IgQHZhcntzY3JpcHQtbmFtZX0gaW4gYWxsIG9mIHRoZQotIGRpcmVjdG9yaWVzIG1lbnRp b25lZCBpbiB0aGUgdmFsdWUgb2YgQGNvZGV7ZGVidWctZmlsZS1kaXJlY3Rvcnl9LgotIAotIEZp bmFsbHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBAdmFsdWV7R0RCTn0gd2ls bCBsb29rIGZvcgotLWEgZmlsZSBuYW1lZCBAZmlsZXtAdmFye2RhdGEtZGlyZWN0b3J5fS9weXRo b24vYXV0by1sb2FkL0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCi0tQHZhcntkYXRhLWRpcmVjdG9y eX0gaXMgQHZhbHVle0dEQk59J3MgZGF0YSBkaXJlY3RvcnkgKGF2YWlsYWJsZSB2aWEKLS1AY29k ZXtzaG93IGRhdGEtZGlyZWN0b3J5fSwgQHB4cmVme0RhdGEgRmlsZXN9KSwgYW5kIEB2YXJ7cmVh bC1uYW1lfQotLWlzIHRoZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFtZSwgYXMgZGVzY3JpYmVkIGFi b3ZlLgotK0B2YXJ7c2NyaXB0LW5hbWV9IGZpbGUgaW4gYWxsIG9mIHRoZSBkaXJlY3RvcmllcyBz cGVjaWZpZWQgYnk6Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGFuY2hvcntzZXQgYXV0by1sb2FkIHNj cmlwdHMtZGlyZWN0b3J5fQotK0BraW5kZXggc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9y eQotK0BpdGVtIHNldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnkgQHJ7W31AdmFye2RpcmVj dG9yaWVzfUBye119Ci0rQ29udHJvbCBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQgc2NyaXB0cyBs b2NhdGlvbi4gIE11bHRpcGxlIGRpcmVjdG9yeSBlbnRyaWVzCi0rbWF5IGJlIGRlbGltaXRlZCBi eSB0aGUgaG9zdCBwbGF0Zm9ybSBwYXRoIHNlcGFyYXRvciBpbiB1c2UKLSsoQHNhbXB7On0gb24g VW5peCwgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9TKS4KLSsKLStFYWNoIGVudHJ5 IGhlcmUgbmVlZHMgdG8gYmUgY292ZXJlZCBhbHNvIGJ5IHRoZSBzZWN1cml0eSBzZXR0aW5nCi0r QGNvZGV7c2V0IGF1dG8tbG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7c2V0IGF1dG8tbG9hZCBzYWZl LXBhdGh9KS4KLSsKLStAYW5jaG9ye3dpdGgtYXV0by1sb2FkLWRpcn0KLStUaGlzIHZhcmlhYmxl IGRlZmF1bHRzIHRvIEBmaWxleyRkZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVmYXVsdCBAY29kZXtz ZXQKLSthdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkg QHZhbHVle0dEQk59IGNvbmZpZ3VyYXRpb24KLStvcHRpb24gQG9wdGlvbnstLXdpdGgtYXV0by1s b2FkLWRpcn0uCi0rCi0rQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZGlyfSB3aWxsIGdldCByZXBs YWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3aGljaCBpcwotK2RldGVybWluZWQgYXQgQHZh bHVle0dEQk59IHN0YXJ0dXAgKEBweHJlZntEYXRhIEZpbGVzfSkuICBAZmlsZXskZGRpcn0gbXVz dCBiZQotK2JlIHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9u ZSBvciBkZWxpbWl0ZWQgYnkgQGZpbGV7L30gb3IKLStAZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJh dG9ycywgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgotKwotK1RoZSBsaXN0IG9mIGRp cmVjdG9yaWVzIHVzZXMgcGF0aCBzZXBhcmF0b3IgKEBzYW1wezp9IG9uIEdOVSBhbmQgVW5peAot K3N5c3RlbXMsIEBzYW1wezt9IG9uIE1TLVdpbmRvd3MgYW5kIE1TLURPUykgdG8gc2VwYXJhdGUg ZGlyZWN0b3JpZXMsIHNpbWlsYXJseQotK3RvIHRoZSBAZW52e1BBVEh9IGVudmlyb25tZW50IHZh cmlhYmxlLgotKwotK0BhbmNob3J7c2hvdyBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3Rvcnl9Ci0r QGtpbmRleCBzaG93IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeQotK0BpdGVtIHNob3cgYXV0 by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5Ci0rU2hvdyBAdmFsdWV7R0RCTn0gYXV0by1sb2FkZWQg c2NyaXB0cyBsb2NhdGlvbi4KLStAZW5kIHRhYmxlCi0gCi0gQHZhbHVle0dEQk59IGRvZXMgbm90 IHRyYWNrIHdoaWNoIGZpbGVzIGl0IGhhcyBhbHJlYWR5IGF1dG8tbG9hZGVkIHRoaXMgd2F5Lgot IEB2YWx1ZXtHREJOfSB3aWxsIGxvYWQgdGhlIGFzc29jaWF0ZWQgc2NyaXB0IGV2ZXJ5IHRpbWUg dGhlIGNvcnJlc3BvbmRpbmcKCmRpZmYgLS1naXQgYS9nZGItYXV0b2xvYWQtMjRvZjI4LnBhdGNo IGIvZ2RiLWF1dG9sb2FkLTI0b2YyOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMzVkNjAxZS4uMDAwMDAwMAotLS0gYS9nZGItYXV0b2xvYWQtMjRvZjI4LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMi0wNS9tc2cwMDA4Mi5odG1sCi0KLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAx Mi8wNS8xMSAxODoyMDoyNgkxLjEzMTMKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMi8w NS8xMSAxODoyMzoxMQkxLjEzMTQKLSMjIC0xLDUgKzEsMTIgQEAKLSAyMDEyLTA1LTExICBKYW4g S3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCSogZ2RiLnRleGlu Zm8gKEF1dG8tbG9hZGluZywgSW5pdCBGaWxlIGluIHRoZSBDdXJyZW50IERpcmVjdG9yeSkKLSsJ KGxpYnRocmVhZF9kYi5zby4xIGZpbGUsIG9iamZpbGUtZ2RiLmdkYiBmaWxlLCBvYmpmaWxlLWdk Yi5weSBmaWxlKQotKwkoZG90ZGVidWdfZ2RiX3NjcmlwdHMgc2VjdGlvbik6IEFkZCByZWZlcmVu Y2UKLSsJdG8gJ0F1dG8tbG9hZGluZyBzYWZlIHBhdGgnLgotKwotKzIwMTItMDUtMTEgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJSW1wbGVtZW50IG11 bHRpLWNvbXBvbmVudCAtLXdpdGgtYXV0by1sb2FkLWRpci4KLSAJKiBnZGIudGV4aW5mbyAoQXV0 by1sb2FkaW5nKTogTmV3IHJlZmVyZW5jZXMKLSAJZm9yICdzZXQgYXV0by1sb2FkIHNjcmlwdHMt ZGlyZWN0b3J5JwotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTIvMDUvMTEgMTg6MjA6 MjYJMS45NTkKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLzA1LzExIDE4OjIzOjEx CTEuOTYwCi1AQCAtMjA5NzMsNiArMjA5NzMsMTAgQEAKLSByZXN1bHRzIG9yIGludHJvZHVjZSBz ZWN1cml0eSByaXNrcyAoZS5nLiwgaWYgdGhlIGZpbGUgY29tZXMgZnJvbSB1bnRydXN0ZWQKLSBz b3VyY2VzKS4KLSAKLStOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGVzZSBhc3NvY2lhdGVkIGZpbGVz IChpbmNsdWRpbmcgdGhlIGxvY2FsIEBmaWxley5nZGJpbml0fQotK2ZpbGUpIHJlcXVpcmVzIGFj Y29yZGluZ2x5IGNvbmZpZ3VyZWQgQGNvZGV7YXV0by1sb2FkIHNhZmUtcGF0aH0KLSsoQHB4cmVm e0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4KLSsKLSBGb3IgdGhlc2UgcmVhc29ucywgQHZhbHVl e0dEQk59IGluY2x1ZGVzIGNvbW1hbmRzIGFuZCBvcHRpb25zIHRvIGxldCB5b3UKLSBjb250cm9s IHdoZW4gdG8gYXV0by1sb2FkIGZpbGVzIGFuZCB3aGljaCBmaWxlcyBzaG91bGQgYmUgYXV0by1s b2FkZWQuCi0gCi1AQCAtMjExMTIsNiArMjExMTYsOSBAQAotIGZyb20gaW5pdCBmaWxlIChpZiBh bnkpIGluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LAotIHNlZSBAcmVme0luaXQgRmls ZSBpbiB0aGUgQ3VycmVudCBEaXJlY3RvcnkgZHVyaW5nIFN0YXJ0dXB9LgotIAotK05vdGUgdGhh dCBsb2FkaW5nIG9mIHRoaXMgbG9jYWwgQGZpbGV7LmdkYmluaXR9IGZpbGUgYWxzbyByZXF1aXJl cyBhY2NvcmRpbmdseQotK2NvbmZpZ3VyZWQgQGNvZGV7YXV0by1sb2FkIHNhZmUtcGF0aH0gKEBw eHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkuCi0rCi0gQHRhYmxlIEBjb2RlCi0gQGFuY2hv cntzZXQgYXV0by1sb2FkIGxvY2FsLWdkYmluaXR9Ci0gQGtpbmRleCBzZXQgYXV0by1sb2FkIGxv Y2FsLWdkYmluaXQKLUBAIC0yMTE0OCw2ICsyMTE1NSw5IEBACi0gYXV0by1sb2FkIGxpYnRocmVh ZC1kYn0gaXMgZW5hYmxlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gc3VjaCB0aHJlYWQgZGVidWdn aW5nCi0gbGlicmFyeS4KLSAKLStOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGlzIGRlYnVnZ2luZyBs aWJyYXJ5IGFsc28gcmVxdWlyZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZAotK0Bjb2Rle2F1dG8t bG9hZCBzYWZlLXBhdGh9IChAcHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pLgotKwotIEB0 YWJsZSBAY29kZQotIEBhbmNob3J7c2V0IGF1dG8tbG9hZCBsaWJ0aHJlYWQtZGJ9Ci0gQGtpbmRl eCBzZXQgYXV0by1sb2FkIGxpYnRocmVhZC1kYgotQEAgLTIxMTc1LDYgKzIxMTg1LDkgQEAKLSBj YW5uZWQgc2VxdWVuY2VzIG9mIGNvbW1hbmRzIChAcHhyZWZ7U2VxdWVuY2VzfSksIGFzIGxvbmcg YXMgQHNhbXB7c2V0Ci0gYXV0by1sb2FkIGdkYi1zY3JpcHRzfSBpcyBzZXQgdG8gQHNhbXB7b259 LgotIAotK05vdGUgdGhhdCBsb2FkaW5nIG9mIHRoaXMgc2NyaXB0IGZpbGUgYWxzbyByZXF1aXJl cyBhY2NvcmRpbmdseSBjb25maWd1cmVkCi0rQGNvZGV7YXV0by1sb2FkIHNhZmUtcGF0aH0gKEBw eHJlZntBdXRvLWxvYWRpbmcgc2FmZSBwYXRofSkuCi0rCi0gRm9yIG1vcmUgYmFja2dyb3VuZCBy ZWZlciB0byB0aGUgc2ltaWxhciBQeXRob24gc2NyaXB0cyBhdXRvLWxvYWRpbmcKLSBkZXNjcmlw dGlvbiAoQHB4cmVme29iamZpbGUtZ2RiLnB5IGZpbGV9KS4KLSAKLUBAIC0yNTQ2NSw3ICsyNTQ3 OCwxMCBAQAotIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBpbiB0aGUgdmFsdWUgb2YgQGNvZGV7ZGVi dWctZmlsZS1kaXJlY3Rvcnl9LgotIAotIEZpbmFsbHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBl eGlzdCwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBsb29rIGZvcgotLUB2YXJ7c2NyaXB0LW5hbWV9 IGZpbGUgaW4gYWxsIG9mIHRoZSBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnk6Ci0rQHZhcntzY3Jp cHQtbmFtZX0gZmlsZSBpbiBhbGwgb2YgdGhlIGRpcmVjdG9yaWVzIGFzIHNwZWNpZmllZCBiZWxv dy4KLSsKLStOb3RlIHRoYXQgbG9hZGluZyBvZiB0aGlzIHNjcmlwdCBmaWxlIGFsc28gcmVxdWly ZXMgYWNjb3JkaW5nbHkgY29uZmlndXJlZAotK0Bjb2Rle2F1dG8tbG9hZCBzYWZlLXBhdGh9IChA cHhyZWZ7QXV0by1sb2FkaW5nIHNhZmUgcGF0aH0pLgotIAotIEB0YWJsZSBAY29kZQotIEBhbmNo b3J7c2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeX0KLUBAIC0yNTU0Miw2ICsyNTU1OCw5 IEBACi0gCi0gVGhlIHNjcmlwdCBuYW1lIG1heSBpbmNsdWRlIGRpcmVjdG9yaWVzIGlmIGRlc2ly ZWQuCi0gCi0rTm90ZSB0aGF0IGxvYWRpbmcgb2YgdGhpcyBzY3JpcHQgZmlsZSBhbHNvIHJlcXVp cmVzIGFjY29yZGluZ2x5IGNvbmZpZ3VyZWQKLStAY29kZXthdXRvLWxvYWQgc2FmZS1wYXRofSAo QHB4cmVme0F1dG8tbG9hZGluZyBzYWZlIHBhdGh9KS4KLSsKLSBJZiB0aGUgbWFjcm8gaXMgcHV0 IGluIGEgaGVhZGVyLCBhbnkgYXBwbGljYXRpb24gb3IgbGlicmFyeQotIHVzaW5nIHRoaXMgaGVh ZGVyIHdpbGwgZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzcGVjaWZpZWQgc2NyaXB0LgotIAoKZGlm ZiAtLWdpdCBhL2dkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2ggYi9nZGItYXV0b2xvYWQtMjVvZjI4 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzU5MzljLi4wMDAwMDAwCi0t LSBhL2dkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCww IEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA1L21zZzAwMDkxLmh0 bWwKLQotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzExIDIyOjI0OjIyCTEuMTMx NQotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDEyLzA1LzEyIDE0OjIwOjMwCTEuMTMxNgot IyMgLTEsMyArMSw5IEBACi0rMjAxMi0wNS0xMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotKwkgICAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KLSsK LSsJKiBnZGIudGV4aW5mbyAoU2VwYXJhdGUgRGVidWcgRmlsZXMpOiBVc2UgcGx1cmFsIGZvcm0g Zm9yIGdsb2JhbAotKwlkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZGlyZWN0b3J5LgotKwotIDIwMTIt MDUtMTEgIFN0YW4gU2hlYnMgIDxzdGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0gCSAgICBLd29rIENo ZXVuZyBZZXVuZyAgPGtjeUBjb2Rlc291cmNlcnkuY29tPgotIAotLS0tIHNyYy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTIvMDUvMTEgMjI6MjQ6MjIJMS45NjEKLSsrKyBzcmMvZ2RiL2RvYy9nZGIu dGV4aW5mbwkyMDEyLzA1LzEyIDE0OjIwOjMxCTEuOTYyCi1AQCAtMTYyODcsNyArMTYyODcsNyBA QAotIEBjaW5kZXggZGVidWdnaW5nIGluZm9ybWF0aW9uIGluIHNlcGFyYXRlIGZpbGVzCi0gQGNp bmRleCBAZmlsZXsuZGVidWd9IHN1YmRpcmVjdG9yaWVzCi0gQGNpbmRleCBkZWJ1Z2dpbmcgaW5m b3JtYXRpb24gZGlyZWN0b3J5LCBnbG9iYWwKLS1AY2luZGV4IGdsb2JhbCBkZWJ1Z2dpbmcgaW5m b3JtYXRpb24gZGlyZWN0b3J5Ci0rQGNpbmRleCBnbG9iYWwgZGVidWdnaW5nIGluZm9ybWF0aW9u IGRpcmVjdG9yaWVzCi0gQGNpbmRleCBidWlsZCBJRCwgYW5kIHNlcGFyYXRlIGRlYnVnZ2luZyBm aWxlcwotIEBjaW5kZXggQGZpbGV7LmJ1aWxkLWlkfSBkaXJlY3RvcnkKLSAKLUBAIC0xNjMzMiwx NCArMTYzMzIsMTQgQEAKLSBAaXRlbQotIEZvciB0aGUgYGBkZWJ1ZyBsaW5rJycgbWV0aG9kLCBA dmFsdWV7R0RCTn0gbG9va3MgdXAgdGhlIG5hbWVkIGZpbGUgaW4KLSB0aGUgZGlyZWN0b3J5IG9m IHRoZSBleGVjdXRhYmxlIGZpbGUsIHRoZW4gaW4gYSBzdWJkaXJlY3Rvcnkgb2YgdGhhdAotLWRp cmVjdG9yeSBuYW1lZCBAZmlsZXsuZGVidWd9LCBhbmQgZmluYWxseSB1bmRlciB0aGUgZ2xvYmFs IGRlYnVnCi0tZGlyZWN0b3J5LCBpbiBhIHN1YmRpcmVjdG9yeSB3aG9zZSBuYW1lIGlzIGlkZW50 aWNhbCB0byB0aGUgbGVhZGluZwotK2RpcmVjdG9yeSBuYW1lZCBAZmlsZXsuZGVidWd9LCBhbmQg ZmluYWxseSB1bmRlciBlYWNoIG9uZSBvZiB0aGUgZ2xvYmFsIGRlYnVnCi0rZGlyZWN0b3JpZXMs IGluIGEgc3ViZGlyZWN0b3J5IHdob3NlIG5hbWUgaXMgaWRlbnRpY2FsIHRvIHRoZSBsZWFkaW5n Ci0gZGlyZWN0b3JpZXMgb2YgdGhlIGV4ZWN1dGFibGUncyBhYnNvbHV0ZSBmaWxlIG5hbWUuCi0g Ci0gQGl0ZW0KLSBGb3IgdGhlIGBgYnVpbGQgSUQnJyBtZXRob2QsIEB2YWx1ZXtHREJOfSBsb29r cyBpbiB0aGUKLS1AZmlsZXsuYnVpbGQtaWR9IHN1YmRpcmVjdG9yeSBvZiB0aGUgZ2xvYmFsIGRl YnVnIGRpcmVjdG9yeSBmb3IgYSBmaWxlCi0tbmFtZWQgQGZpbGV7QHZhcntubn0vQHZhcntubm5u bm5ubn0uZGVidWd9LCB3aGVyZSBAdmFye25ufSBhcmUgdGhlCi0rQGZpbGV7LmJ1aWxkLWlkfSBz dWJkaXJlY3Rvcnkgb2YgZWFjaCBvbmUgb2YgdGhlIGdsb2JhbCBkZWJ1ZyBkaXJlY3RvcmllcyBm b3IKLSthIGZpbGUgbmFtZWQgQGZpbGV7QHZhcntubn0vQHZhcntubm5ubm5ubn0uZGVidWd9LCB3 aGVyZSBAdmFye25ufSBhcmUgdGhlCi0gZmlyc3QgMiBoZXggY2hhcmFjdGVycyBvZiB0aGUgYnVp bGQgSUQgYml0IHN0cmluZywgYW5kIEB2YXJ7bm5ubm5ubm59Ci0gYXJlIHRoZSByZXN0IG9mIHRo ZSBiaXQgc3RyaW5nLiAgKFJlYWwgYnVpbGQgSUQgc3RyaW5ncyBhcmUgMzIgb3IgbW9yZQotIGhl eCBjaGFyYWN0ZXJzLCBub3QgMTAuKQotQEAgLTE2MzQ4LDcgKzE2MzQ4LDcgQEAKLSBTbywgZm9y IGV4YW1wbGUsIHN1cHBvc2UgeW91IGFzayBAdmFsdWV7R0RCTn0gdG8gZGVidWcKLSBAZmlsZXsv dXNyL2Jpbi9sc30sIHdoaWNoIGhhcyBhIGRlYnVnIGxpbmsgdGhhdCBzcGVjaWZpZXMgdGhlCi0g ZmlsZSBAZmlsZXtscy5kZWJ1Z30sIGFuZCBhIGJ1aWxkIElEIHdob3NlIHZhbHVlIGluIGhleCBp cwotLUBjb2Rle2FiY2RlZjEyMzR9LiAgSWYgdGhlIGdsb2JhbCBkZWJ1ZyBkaXJlY3RvcnkgaXMK LStAY29kZXthYmNkZWYxMjM0fS4gIElmIHRoZSBsaXN0IG9mIHRoZSBnbG9iYWwgZGVidWcgZGly ZWN0b3JpZXMgaW5jbHVkZXMKLSBAZmlsZXsvdXNyL2xpYi9kZWJ1Z30sIHRoZW4gQHZhbHVle0dE Qk59IHdpbGwgbG9vayBmb3IgdGhlIGZvbGxvd2luZwotIGRlYnVnIGluZm9ybWF0aW9uIGZpbGVz LCBpbiB0aGUgaW5kaWNhdGVkIG9yZGVyOgotIAotQEAgLTE2MzYzLDggKzE2MzYzLDggQEAKLSBA ZmlsZXsvdXNyL2xpYi9kZWJ1Zy91c3IvYmluL2xzLmRlYnVnfS4KLSBAZW5kIGl0ZW1pemUKLSAK LS1Zb3UgY2FuIHNldCB0aGUgZ2xvYmFsIGRlYnVnZ2luZyBpbmZvIGRpcmVjdG9yeSdzIG5hbWUs IGFuZCB2aWV3IHRoZQotLW5hbWUgQHZhbHVle0dEQk59IGlzIGN1cnJlbnRseSB1c2luZy4KLStZ b3UgY2FuIHNldCB0aGUgZ2xvYmFsIGRlYnVnZ2luZyBpbmZvIGRpcmVjdG9yaWVzLCBhbmQgdmll dyB0aGUKLStsaXN0IEB2YWx1ZXtHREJOfSBpcyBjdXJyZW50bHkgdXNpbmcuCi0gCi0gQHRhYmxl IEBjb2RlCi0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI2b2YyOC5wYXRjaCBiL2dkYi1h dXRvbG9hZC0yNm9mMjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4OGM0 M2QuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2FkLTI2b2YyOC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDQyICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTA1L21zZzAwNDQ5Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0gQ29zbWV0aWMgZml4ICdzaG93 IGF1dG8tbG9hZCBzYWZlLXBhdGgnIGZvciAiOiIgIFtSZTogW3BhdGNoIDEvMl0gUHJvdmlkZSAk ZGRpciBzdWJzdGl0dXRpb24gZm9yIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoXQotCi1PbiBG cmksIDExIE1heSAyMDEyIDIxOjMzOjUzICswMjAwLCBKYW4gS3JhdG9jaHZpbCB3cm90ZToKLT4g T24gRnJpLCAxMSBNYXkgMjAxMiAyMToxNDo0NyArMDIwMCwgUGVkcm8gQWx2ZXMgd3JvdGU6Ci0+ ID4gTG9va3MgbGlrZSB0aGVyZSBpcyBzb21lIHNwZWNpYWwgY2FzaW5nIHNvbWV3aGVyZToKLT4g Ci0+IFRydWUsIEkgZm9yZ290IGFuZCBJIGFncmVlLiAgQnV0IGl0IGlzIG9ubHkgdGhpcyAiY29z bWV0aWMiIG1lc3NhZ2UsIGl0IGhhcyBubwotPiBmdW5jdGlvbmFsaXR5IGVmZmVjdC4gIEkgY2Fu IGZpeCB0aGlzICJhbnkgZGlyZWN0b3J5IiBtZXNzYWdlIGNvbmRpdGlvbmFsLgotCi1SZWdhcmRz LAotSmFuCi0KLQotZ2RiLwotMjAxMi0wNS0xMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgotCi0JKiBhdXRvLWxvYWQuYyAoc2hvd19hdXRvX2xvYWRfc2FmZV9w YXRoKTogQWNjZXB0IGFueSBjb21iaW5hdGlvbiBvZgotCURJUk5BTUVfU0VQQVJBVE9SIGFuZCBJ U19ESVJfU0VQQVJBVE9SIGZvciB3aWxkLW1hdGNoLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2F1dG8t bG9hZC5jIGIvZ2RiL2F1dG8tbG9hZC5jCi1pbmRleCA1ZWUxMTdmLi40NjJlZTA2IDEwMDY0NAot LS0tIGEvZ2RiL2F1dG8tbG9hZC5jCi0rKysgYi9nZGIvYXV0by1sb2FkLmMKLUBAIC0yNDEsNyAr MjQxLDE1IEBAIHN0YXRpYyB2b2lkCi0gc2hvd19hdXRvX2xvYWRfc2FmZV9wYXRoIChzdHJ1Y3Qg dWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotIAkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1l bnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotIHsKLS0gIGlmIChzdHJjbXAgKHZhbHVlLCAiLyIp ID09IDApCi0rICBjb25zdCBjaGFyICpjczsKLSsKLSsgIC8qIENoZWNrIGlmIHVzZXIgaGFzIGVu dGVyZWQgZWl0aGVyICIvIiBvciBmb3IgZXhhbXBsZSAiOiIuCi0rICAgICBCdXQgd2hpbGUgbW9y ZSBjb21wbGljYXRlIGNvbnRlbnQgbGlrZSAiOi9mb28iIHdvdWxkIHN0aWxsIGFsc28KLSsgICAg IHBlcm1pdCBhbnkgbG9jYXRpb24gZG8gbm90IGhpZGUgdGhvc2UuICAqLwotKwotKyAgZm9yIChj cyA9IHZhbHVlOyAqY3MgJiYgKCpjcyA9PSBESVJOQU1FX1NFUEFSQVRPUiB8fCBJU19ESVJfU0VQ QVJBVE9SICgqY3MpKTsKLSsgICAgICAgY3MrKyk7Ci0rICBpZiAoKmNzID09IDApCi0gICAgIGZw cmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIkF1dG8tbG9hZCBmaWxlcyBhcmUgc2FmZSB0byBsb2Fk IGZyb20gYW55ICIKLSAJCQkgICAgICAiZGlyZWN0b3J5LlxuIikpOwotICAgZWxzZQotCgpkaWZm IC0tZ2l0IGEvZ2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yN29mMjgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyOGQ5NTguLjAwMDAwMDAKLS0t IGEvZ2RiLWF1dG9sb2FkLTI3b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNSArMCww IEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNS9tc2cwMDQ3 Ni5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMS8yXSBhdXRvLWxvYWQ6IFJlbmFtZSAkZGRpciB0byAk ZGF0YWRpcgotCi1IaSwKLQotd2hlbiBEb3VnIHN1Z2dlc3RlZCAkZGRpciBmb3IgZGF0YS1kaXJl Y3RvcnksIHNpbWlsYXIgdG8gJGNkaXIsICRwZGlyIGFuZAotJHNkaXIgYWxyZWFkeSBpbiB1c2Us IGl0IG1hZGUgc2Vuc2UuCi0KLUJ1dCBjdXJyZW50bHkgSSBuZWVkIHRvIGludHJvZHVjZSBhbHNv IGEgdmFyaWFibGUgZm9yIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGFuZAotaGF2aW5nIGJvdGggJGRk aXIgYW5kICRkZWJ1Z2RpciB2YWxpZCBpbiB0aGUgc2FtZSBzdHJpbmcgc2VlbXMgdG8gYmUgY29u ZnVzaW5nLgotCi1UaGVyZWZvcmUgcHJvcG9zaW5nIHRvIGhhdmUgJGRhdGFkaXIgYW5kICRkZWJ1 Z2RpciBpbnN0ZWFkIGluIHRoZSBuZXh0IHBhdGNoLAotdGhpcyBwYXRjaCBpcyBqdXN0IGEgbWFj aGFuaWNhbCByZW5hbWUgJGRkaXIgLT4gJGRhdGFkaXIuCi0KLUkgZG8gbm90IHRoaW5rIGl0IG5l ZWRzIGJhY2t3YXJkIGNvbXBhdGliaWx1dHkgYXMgJGRkaXIgaGFzIG5vdCB5ZXQgYmVlbiBpbgot YW55IEdEQiByZWxlYXNlLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTItMDUtMTIg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVJlbmFtZSAk ZGRpciB0byAkZGF0YWRpci4KLQkqIE5FV1MgKC0td2l0aC1hdXRvLWxvYWQtZGlyKTogUmVuYW1l ICRkZGlyIHRvICRkYXRhZGlyLgotCSogYXV0by1sb2FkLmMgKGF1dG9fbG9hZF9zYWZlX3BhdGhf dmVjX3VwZGF0ZSkKLQkoYXV0b19sb2FkX2dkYl9kYXRhZGlyX2NoYW5nZWQsIGF1dG9fbG9hZF9v YmpmaWxlX3NjcmlwdCk6IExpa2V3aXNlLgotCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgotCSog Y29uZmlndXJlLmFjICgtLXdpdGgtYXV0by1sb2FkLWRpciwgLS13aXRoLWF1dG8tbG9hZC1zYWZl LXBhdGgpOgotCUxpa2V3aXNlLiAgUmVtb3ZlIHRoZSAndXNlICRkZGlyJyBoZWxwIHN0cmluZy4K LQotZ2RiL2RvYy8KLTIwMTItMDUtMTIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQotCVJlbmFtZSAkZGRpciB0byAkZGF0YWRpci4KLQkqIGdkYi50ZXhpbmZv IChBdXRvLWxvYWRpbmcsIEF1dG8tbG9hZGluZyBzYWZlIHBhdGgpCi0JKG9iamZpbGUtZ2RiLnB5 IGZpbGUpOiBSZW5hbWUgJGRkaXIgdG8gJGRhdGFkaXIuCi0KLUluZGV4OiBnZGItNy40LjUwLjIw MTIwMTIwL2dkYi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmln L2dkYi9ORVdTCTIwMTItMDUtMTQgMTQ6MjQ6MTUuMTEyNDkwMjg2ICswMjAwCi0rKysgZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvTkVXUwkyMDEyLTA1LTE0IDE0OjI0OjIwLjIyNDQ4MDIxMCArMDIw MAotQEAgLTMxNyw4ICszMTcsOCBAQCBzaG93IHRyYWNlLXN0b3Atbm90ZXMKLSAKLSAtLXdpdGgt YXV0by1sb2FkLWRpcgotICAgQ29uZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1 dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9yeScKLS0gIHNldHRpbmcgYWJvdmUuICBJdCBkZWZhdWx0 cyB0byAnJGRkaXIvYXV0by1sb2FkJywgJGRkaXIgcmVwcmVzZW50aW5nCi0tICBHREIncyBkYXRh IGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZpYSBzaG93IGRhdGEtZGlyZWN0b3J5KS4KLSsgIHNldHRp bmcgYWJvdmUuICBJdCBkZWZhdWx0cyB0byAnJGRhdGFkaXIvYXV0by1sb2FkJywgJGRhdGFkaXIK LSsgIHJlcHJlc2VudGluZyBHREIncyBkYXRhIGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZpYSBzaG93 IGRhdGEtZGlyZWN0b3J5KS4KLSAKLSAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aAotICAgQ29u ZmlndXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNl dHRpbmcKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9hdXRvLWxvYWQuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvYXV0by1sb2FkLmMJMjAxMi0w NS0xNCAxNDoyNDoxNS4xMTI0OTAyODYgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dk Yi9hdXRvLWxvYWQuYwkyMDEyLTA1LTE0IDE0OjI0OjIwLjIyNDQ4MDIxMCArMDIwMAotQEAgLTE3 NCwxMyArMTc0LDEzIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkKLSAg ICAgICBjaGFyICpkZGlyX3N1YnN0LCAqZXhwYW5kZWQsICpyZWFsX3BhdGg7Ci0gCi0gICAgICAg ZGRpcl9zdWJzdCA9IHhzdHJkdXAgKGRpcik7Ci0tICAgICAgc3Vic3RpdHV0ZV9wYXRoX2NvbXBv bmVudCAoJmRkaXJfc3Vic3QsICIkZGRpciIsIGdkYl9kYXRhZGlyKTsKLSsgICAgICBzdWJzdGl0 dXRlX3BhdGhfY29tcG9uZW50ICgmZGRpcl9zdWJzdCwgIiRkYXRhZGlyIiwgZ2RiX2RhdGFkaXIp OwotICAgICAgIGV4cGFuZGVkID0gdGlsZGVfZXhwYW5kIChkZGlyX3N1YnN0KTsKLSAgICAgICB4 ZnJlZSAoZGRpcl9zdWJzdCk7Ci0gICAgICAgcmVhbF9wYXRoID0gZ2RiX3JlYWxwYXRoIChleHBh bmRlZCk7Ci0gCi0gICAgICAgLyogRW5zdXJlIHRoZSBjdXJyZW50IGVudHJ5IGlzIGF0IGxlYXN0 IGEgdmFsaWQgcGF0aCAodGhlcmVmb3JlCi0tCSAkZGRpci1leHBhbmRlZCBhbmQgdGlsZGUtZXhw YW5kZWQpLiAgKi8KLSsJICRkYXRhZGlyLWV4cGFuZGVkIGFuZCB0aWxkZS1leHBhbmRlZCkuICAq LwotICAgICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMs IGl4LCBleHBhbmRlZCk7Ci0gCi0gICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLUBAIC0yMTIs NyArMjEyLDcgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQotICAgICB9 Ci0gfQotIAotLS8qIFZhcmlhYmxlIGdkYl9kYXRhZGlyIGhhcyBiZWVuIHNldC4gIFVwZGF0ZSBj b250ZW50IGRlcGVuZGluZyBvbiAkZGRpci4gICovCi0rLyogVmFyaWFibGUgZ2RiX2RhdGFkaXIg aGFzIGJlZW4gc2V0LiAgVXBkYXRlIGNvbnRlbnQgZGVwZW5kaW5nIG9uICRkYXRhZGlyLiAgKi8K LSAKLSBzdGF0aWMgdm9pZAotIGF1dG9fbG9hZF9nZGJfZGF0YWRpcl9jaGFuZ2VkICh2b2lkKQot QEAgLTY5OSw3ICs2OTksNyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpm aWxlCi0gICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgdmVjLCBpeCwg ZGlyKTsgKytpeCkKLSAJewotIAkgIGRlYnVnZmlsZSA9IHhzdHJkdXAgKGRpcik7Ci0tCSAgc3Vi c3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRlYnVnZmlsZSwgIiRkZGlyIiwgZ2RiX2RhdGFkaXIp OwotKwkgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKCZkZWJ1Z2ZpbGUsICIkZGF0YWRpciIs IGdkYl9kYXRhZGlyKTsKLSAJICBkZWJ1Z2ZpbGUgPSB4cmVhbGxvYyAoZGVidWdmaWxlLCAoc3Ry bGVuIChkZWJ1Z2ZpbGUpCi0gCQkJCQkgICAgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpKTsKLSAK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjI0 OjE1LjExMjQ5MDI4NiArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3Vy ZQkyMDEyLTA1LTE0IDE0OjI0OjM4LjU2NDQ0NDA2MSArMDIwMAotQEAgLTE2NjksMTEgKzE2Njks MTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcnBtICAgICAgICAgICAgICBxdWVy eSBycG0gZGF0YWJhc2UgZm9yIG1pc3NpbmcgZGVidWdpbmZvcyAoeWVzL25vLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1hdXRvLWxv YWQtZGlyPVBBVEgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGZyb20g d2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgdXNlICckZGRpcicgZm9yIC1kYXRhLWRpcmVjdG9yeSBbJGRkaXIvYXV0by1sb2FkXQot KyAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2Fk IGF1dG8tbG9hZGVkIHNjcmlwdHMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIFskZGF0YWRp ci9hdXRvLWxvYWRdCi0gICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICi0tICAgICAg ICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQg ZmlsZXMsIHVzZQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgJGRkaXIgZm9yIC0td2l0aC1n ZGItZGF0YWRpciBwYXRoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBz YWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAg IFstLXdpdGgtYXV0by1sb2FkLWRpcl0KLSAgIC0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRo Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQg ZmlsZXMgbG9jYXRpb25zCi1AQCAtODQ5NSwxMCArODQ5NCwxMCBAQCAkYXNfZWNob19uICJjaGVj a2luZyBmb3IgZGVmYXVsdCBhdXRvLWxvCi0gaWYgdGVzdCAiJHt3aXRoX2F1dG9fbG9hZF9kaXIr c2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0aF9hdXRvX2xvYWRfZGlyOwotIGVs c2UKLS0gIHdpdGhfYXV0b19sb2FkX2Rpcj0nJGRkaXIvYXV0by1sb2FkJwotKyAgd2l0aF9hdXRv X2xvYWRfZGlyPSckZGF0YWRpci9hdXRvLWxvYWQnCi0gZmkKLSAKLS1lc2NhcGVfZGlyPWBlY2hv ICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQgJ3MvWyRdZGRpclw+L1xcXFxcXFxcXFxcXCYvZydg Ci0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1skXWRhdGFk aXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotIAotICAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYg cHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0gICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhO T05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCi1AQCAtODUyNSw3ICs4NTI0LDcgQEAgZWxz ZQotICAgd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoPSIkd2l0aF9hdXRvX2xvYWRfZGlyIgotIGZp Ci0gCi0tZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdz L1skXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bJF1kYXRhZGlyXD4vXFxcXFxcXFxcXFxcJi9nJ2AK LSAKLSAgIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJl Zml4IgotICAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtw cmVmaXh9JwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIw MTItMDUtMTQgMTQ6MjQ6MTUuMTEyNDkwMjg2ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEy MC9nZGIvY29uZmlndXJlLmFjCTIwMTItMDUtMTQgMTQ6MjQ6MjAuMjI4NDgwMjAyICswMjAwCi1A QCAtMzQyLDkgKzM0Miw5IEBAIGZpCi0gQUNfTVNHX0NIRUNLSU5HKFtmb3IgZGVmYXVsdCBhdXRv LWxvYWQgZGlyZWN0b3J5XSkKLSBBQ19BUkdfV0lUSChhdXRvLWxvYWQtZGlyLAotIEFTX0hFTFBf U1RSSU5HKFstLXdpdGgtYXV0by1sb2FkLWRpcj1QQVRIXSwKLS0gIFtkaXJlY3RvcmllcyBmcm9t IHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0cywgdXNlICckZGRpcicgZm9yIC1kYXRh LWRpcmVjdG9yeSBAPDpAJGRkaXIvYXV0by1sb2FkQDo+QF0pLCwKLS0gIFt3aXRoX2F1dG9fbG9h ZF9kaXI9JyRkZGlyL2F1dG8tbG9hZCddKQotLWVzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19s b2FkX2RpciB8IHNlZCAncy9bWyRdXWRkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotKyAgW2RpcmVj dG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzIEA8OkAkZGF0YWRp ci9hdXRvLWxvYWRAOj5AXSksLAotKyAgW3dpdGhfYXV0b19sb2FkX2Rpcj0nJGRhdGFkaXIvYXV0 by1sb2FkJ10pCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdz L1tbJF1dZGF0YWRpclw+L1xcXFxcXFxcXFxcXCYvZydgCi0gQUNfREVGSU5FX0RJUihBVVRPX0xP QURfRElSLCBlc2NhcGVfZGlyLAotIAkgICAgICBbRGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBs b2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMuXSkKLSBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRvX2xv YWRfZGlyXSkKLUBAIC0zNTIsMTQgKzM1MiwxNCBAQCBBQ19NU0dfUkVTVUxUKFskd2l0aF9hdXRv X2xvYWRfZGlyXSkKLSBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZWZhdWx0IGF1dG8tbG9hZCBzYWZl LXBhdGhdKQotIEFDX0FSR19XSVRIKGF1dG8tbG9hZC1zYWZlLXBhdGgsCi0gQVNfSEVMUF9TVFJJ TkcoWy0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoPVBBVEhdLAotLSAgW2RpcmVjdG9yaWVzIHNh ZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcywgdXNlICRkZGlyIGZvciAtLXdpdGgtZ2RiLWRh dGFkaXIgcGF0aCBAPDpALS13aXRoLWF1dG8tbG9hZC1kaXJAOj5AXSkKLSsgIFtkaXJlY3Rvcmll cyBzYWZlIHRvIGhvbGQgYXV0by1sb2FkZWQgZmlsZXMgQDw6QC0td2l0aC1hdXRvLWxvYWQtZGly QDo+QF0pCi0gQVNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1hdXRvLWxvYWQtc2FmZS1wYXRoXSwK LSAgICAgICAgICAgICAgICBbZG8gbm90IHJlc3RyaWN0IGF1dG8tbG9hZGVkIGZpbGVzIGxvY2F0 aW9uc10pLAotICAgICBbaWYgdGVzdCAiJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPSAibm8i OyB0aGVuCi0gICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0gICAgICBmaV0sCi0g W3dpdGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciJdKQotLWVzY2Fw ZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bWyRdXWRkaXJc Pi9cXFxcXFxcXFxcXFwmL2cnYAotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aCB8IHNlZCAncy9bWyRdXWRhdGFkaXJcPi9cXFxcXFxcXFxcXFwmL2cnYAotIEFDX0RF RklORV9ESVIoQVVUT19MT0FEX1NBRkVfUEFUSCwgZXNjYXBlX2RpciwKLSAJICAgICAgW0RpcmVj dG9yaWVzIHNhZmUgdG8gaG9sZCBhdXRvLWxvYWRlZCBmaWxlcy5dKQotIEFDX01TR19SRVNVTFQo WyR3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGhdKQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAv Z2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAu b3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUtMTQgMTQ6MjQ6MTUuMTEzNDkwMjg0ICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTItMDUt MTQgMTQ6MjQ6MjAuMjM0NDgwMTkwICswMjAwCi1AQCAtMjA4MDcsOSArMjA4MDcsOSBAQCBsb2Nh bC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0Ci0gICAgICAgICAgICAgICAgIGlz IG9uLgotIHB5dGhvbi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIFB5dGhvbiBzY3JpcHRzIGlz IG9uLgotIHNhZmUtcGF0aDogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCBpdCBpcyBz YWZlIHRvIGF1dG8tbG9hZCBmaWxlcwotLSAgICAgICAgICAgIGlzICRkZGlyL2F1dG8tbG9hZC4K LSsgICAgICAgICAgICBpcyAkZGF0YWRpci9hdXRvLWxvYWQuCi0gc2NyaXB0cy1kaXJlY3Rvcnk6 ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxvYWRlZCBzY3Jp cHRzCi0tICAgICAgICAgICAgICAgICAgICBpcyAkZGRpci9hdXRvLWxvYWQuCi0rICAgICAgICAg ICAgICAgICAgICBpcyAkZGF0YWRpci9hdXRvLWxvYWQuCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAK LSBAYW5jaG9ye2luZm8gYXV0by1sb2FkfQotQEAgLTIxMDI1LDkgKzIxMDI1LDkgQEAgZ2V0IGxv YWRlZDoKLSAkIC4vZ2RiIC1xIC4vZ2RiCi0gUmVhZGluZyBzeW1ib2xzIGZyb20gL2hvbWUvdXNl ci9nZGIvZ2RiLi4uZG9uZS4KLSB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2Ri LmdkYiIgYXV0by1sb2FkaW5nIGhhcyBiZWVuCi0tICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBg YXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGRpci9hdXRvLWxvYWQiLgotKyAgICAgICAg IGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBhdGgnIHNldCB0byAiJGRhdGFkaXIv YXV0by1sb2FkIi4KLSB3YXJuaW5nOiBGaWxlICIvaG9tZS91c2VyL2dkYi9nZGItZ2RiLnB5IiBh dXRvLWxvYWRpbmcgaGFzIGJlZW4KLS0gICAgICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxv YWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkZGlyL2F1dG8tbG9hZCIuCi0rICAgICAgICAgZGVjbGlu ZWQgYnkgeW91ciBgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0IHRvICIkZGF0YWRpci9hdXRvLWxv YWQiLgotIEBlbmQgc21hbGxleGFtcGxlCi0gCi0gVGhlIGxpc3Qgb2YgdHJ1c3RlZCBkaXJlY3Rv cmllcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci1AQCAtMjEwNjAs NyArMjEwNjAsNyBAQCBob3N0IHBsYXRmb3JtIHBhdGggc2VwYXJhdG9yIGluIHVzZS4KLSBAZW5k IHRhYmxlCi0gCi0gVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byB3aGF0IEBjb2Rley0td2l0aC1h dXRvLWxvYWQtZGlyfSBoYXMgYmVlbiBjb25maWd1cmVkCi0tdG8gKEBweHJlZnt3aXRoLWF1dG8t bG9hZC1kaXJ9KS4gIEBmaWxleyRkZGlyfSBzdWJzdGl0dWF0aW9uIGFwcGxpZXMgdGhlIHNhbWUK LSt0byAoQHB4cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRhdGFkaXJ9IHN1YnN0 aXR1YXRpb24gYXBwbGllcyB0aGUgc2FtZQotIGFzIGZvciBAeHJlZntzZXQgYXV0by1sb2FkIHNj cmlwdHMtZGlyZWN0b3J5fS4KLSBUaGUgZGVmYXVsdCBAY29kZXtzZXQKLSBhdXRvLWxvYWQgc2Fm ZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBvdmVycmlkZW4gYnkgQHZhbHVle0dEQk59IGNvbmZp Z3VyYXRpb24KLUBAIC0yNTE4MSwxNCArMjUxODEsMTQgQEAgRWFjaCBlbnRyeSBoZXJlIG5lZWRz IHRvIGJlIGNvdmVyZWQgYWxzbwotIEBjb2Rle3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSAoQHB4 cmVme3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSkuCi0gCi0gQGFuY2hvcnt3aXRoLWF1dG8tbG9h ZC1kaXJ9Ci0tVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAZmlsZXskZGRpci9hdXRvLWxvYWR9 LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0rVGhpcyB2YXJpYWJsZSBkZWZhdWx0cyB0byBAZmls ZXskZGF0YWRpci9hdXRvLWxvYWR9LiAgVGhlIGRlZmF1bHQgQGNvZGV7c2V0Ci0gYXV0by1sb2Fk IHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5IEB2YWx1ZXtHREJOfSBj b25maWd1cmF0aW9uCi0gb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1kaXJ9LgotIAot LUFueSB1c2VkIHN0cmluZyBAZmlsZXskZGRpcn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntk YXRhLWRpcmVjdG9yeX0gd2hpY2ggaXMKLS1kZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFy dHVwIChAcHhyZWZ7RGF0YSBGaWxlc30pLiAgQGZpbGV7JGRkaXJ9IG11c3QgYmUKLS1iZSBwbGFj ZWQgYXMgYSBkaXJlY3RvcnkgY29tcG9uZW50IC0tLSBlaXRoZXIgYWxvbmUgb3IgZGVsaW1pdGVk IGJ5IEBmaWxley99IG9yCi0tQGZpbGV7XH0gZGlyZWN0b3J5IHNlcGFyYXRvcnMsIGRlcGVuZGlu ZyBvbiB0aGUgaG9zdCBwbGF0Zm9ybS4KLStBbnkgdXNlZCBzdHJpbmcgQGZpbGV7JGRhdGFkaXJ9 IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0YS1kaXJlY3Rvcnl9IHdoaWNoCi0raXMgZGV0 ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1cCAoQHB4cmVme0RhdGEgRmlsZXN9KS4gIEBm aWxleyRkYXRhZGlyfQotK211c3QgYmUgcGxhY2VkIGFzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCAt LS0gZWl0aGVyIGFsb25lIG9yIGRlbGltaXRlZCBieQotK0BmaWxley99IG9yIEBmaWxle1x9IGRp cmVjdG9yeSBzZXBhcmF0b3JzLCBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxhdGZvcm0uCi0gCi0g VGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdXNlcyBwYXRoIHNlcGFyYXRvciAoQHNhbXB7On0gb24g R05VIGFuZCBVbml4Ci0gc3lzdGVtcywgQHNhbXB7O30gb24gTVMtV2luZG93cyBhbmQgTVMtRE9T KSB0byBzZXBhcmF0ZSBkaXJlY3Rvcmllcywgc2ltaWxhcmx5CgpkaWZmIC0tZ2l0IGEvZ2RiLWF1 dG9sb2FkLTI4b2YyOC5wYXRjaCBiL2dkYi1hdXRvbG9hZC0yOG9mMjgucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2Nzk3YWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWF1dG9sb2Fk LTI4b2YyOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5MyArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNS9tc2cwMDQ3Ny5odG1sCi1TdWJqZWN0 OiBbcGF0Y2grZG9jIDIvMl0gYXV0by1sb2FkOiBGaXggZGVmYXVsdCAvdXNyL2xpYi9kZWJ1Zy8g bG9hZGluZwotCi1IaSwKLQotd2l0aCByZWNlbnQgc2VjdXJpdHkgZml4IHRvIHVzZSBvbmx5ICRk YXRhZGlyL2F1dG8tbG9hZC8gZGlyZWN0b3J5IGluc3RlYWQgb2YKLWFueXRoaW5nIHVuZGVyICRw cmVmaXgvICh3aGljaCBjb250YWlucyBpbnNlY3VyZSAkcHJlZml4L3RtcC8gZXRjLikgaXQKLWlu dHJvZHVjZWQgYSByZWdyZXNzaW9uIHRoYXQgR0RCJ3MgZGVmYXVsdCAtLXdpdGgtc2VwYXJhdGUt ZGVidWctZGlyIHdvdWxkIG5vCi1sb25nZXIgYmUgc2VjdXJlOyB3aGljaCBJTU8gY2FuIGJlIGFz c3VtZWQgYXMgc2VjdXJlLiAgVGhpcyBpcyBiZWNhdXNlCi1JIGZvcmdvdCB0byBtb3ZlIGludG8g J3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknIChhbmQgJ3NhZmUtcGF0aCcpIGFsc28K LWRlYnVnLWZpbGUtZGlyZXRvcnk7IGJlc2lkZXMgJGRhdGFkaXIvYXV0by1sb2FkIHdoaWNoIEkg aGF2ZSBtb3ZlZCB0aGVyZS4KLQotVG8gYWxzbyBzb2x2ZSB0aGUgcHJvYmxlbSB3aXRoIHJlbG9j YXRhYmlsaXR5IGFuZCBtYWtlIGl0IGNvbmZpZ3VyYWJsZSBJIGp1c3QKLWludHJvZHVjZSBiZXNp ZGVzICRkYXRhZGlyIG5vdyBhbHNvICRkZWJ1Z2RpciBhbmQgYWRkIGl0IGludG8KLWRlZmF1bHQg J3NldCBhdXRvLWxvYWQgc2NyaXB0cy1kaXJlY3RvcnknLiAgSXQgYWxzbyBJTU8gbWFrZXMgaXQg bW9yZSBjbGVhcgotd2hhdCBldmVyeXRoaW5nIGlzIGJlaW5nIGF1dG8tbG9hZGVkIGluOgotCi0o Z2RiKSBzaG93IGF1dG8tbG9hZCAKLWdkYi1zY3JpcHRzOiAgQXV0by1sb2FkaW5nIG9mIGNhbm5l ZCBzZXF1ZW5jZXMgb2YgY29tbWFuZHMgc2NyaXB0cyBpcyBvbi4KLWxpYnRocmVhZC1kYjogIEF1 dG8tbG9hZGluZyBvZiBpbmZlcmlvciBzcGVjaWZpYyBsaWJ0aHJlYWRfZGIgaXMgb24uCi1sb2Nh bC1nZGJpbml0OiAgQXV0by1sb2FkaW5nIG9mIC5nZGJpbml0IHNjcmlwdCBmcm9tIGN1cnJlbnQg ZGlyZWN0b3J5IGlzIG9uLgotcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9u IHNjcmlwdHMgaXMgb24uCi1zYWZlLXBhdGg6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hp Y2ggaXQgaXMgc2FmZSB0byBhdXRvLWxvYWQgZmlsZXMgaXMgJGRlYnVnZGlyOiRkYXRhZGlyL2F1 dG8tbG9hZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Ci1zY3JpcHRzLWRpcmVjdG9yeTogIExpc3Qgb2YgZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBs b2FkIGF1dG8tbG9hZGVkIHNjcmlwdHMgaXMgJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZC4K LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCi1O byByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTctbGludXgt Z251LgotCi1JIGZpbmQgaXQgbW9yZSBqdXN0IGEgYnVnZml4IG9mIGEgcmVncmVzc2lvbiBieSBt eXNlbGYuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMi0wNS0xMiAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBORVdTICgtLXdpdGgtYXV0 by1sb2FkLWRpcik6IFByZXBlbmQgJGRlYnVnZGlyIHRvIHRoZSBkZWZhdWx0IHBhdGguCi0JRGVz Y3JpYmUgaXQuCi0JKiBhdXRvLWxvYWQuYyAoYXV0b19sb2FkX2V4cGFuZF9kaXJfdmFycyk6IE5l dyBmdW5jdGlvbi4KLQkoYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlKTogVXNlIGl0LCBy ZW1vdmUgdGhlCi0Jc3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCBjYWxsIHRoYW5rcyB0byBpdC4K LQkoYXV0b19sb2FkX29iamZpbGVfc2NyaXB0KTogUmVtb3ZlIHRoZSBkZWJ1Z19maWxlX2RpcmVj dG9yeSBwcm9jZXNzaW5nLgotCVVzZSBhdXRvX2xvYWRfZXhwYW5kX2Rpcl92YXJzLCByZW1vdmUg dGhlIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQKLQljYWxsIHRoYW5rcyB0byBpdC4KLQkqIGNv bmZpZ3VyZTogUmVnZW5lcmF0ZS4KLQkqIGNvbmZpZ3VyZS5hYyAoLS13aXRoLWF1dG8tbG9hZC1k aXIpOiBQcmVwZW5kICRkZWJ1Z2RpciB0byB0aGUgZGVmYXVsdAotCXBhdGguICBFc2NhcGUgJCBh bHNvIGZvciAkZGVidWdkaXIuCi0JKC0td2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoKTogRXNjYXBl ICQgYWxzbyBmb3IgJGRlYnVnZGlyLgotCSogdXRpbHMuYyAoc3Vic3RpdHV0ZV9wYXRoX2NvbXBv bmVudCk6IEFjY2VwdCBhbHNvIERJUk5BTUVfU0VQQVJBVE9SLgotCi1nZGIvZG9jLwotMjAxMi0w NS0xMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBn ZGIudGV4aW5mbyAoU2VwYXJhdGUgRGVidWcgRmlsZXMpOiBOZXcgYW5jaG9yIGRlYnVnLWZpbGUt ZGlyZWN0b3J5LgotCU1lbnRpb24gYWxzbyAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyLgotCShB dXRvLWxvYWRpbmcpOiBQcmVwZW5kICRkZWJ1Z2RpciBpbiB0aGUgc2FtcGxlIG91dHB1dC4KLQko QXV0by1sb2FkaW5nIHNhZmUgcGF0aCk6IExpa2V3aXNlLiAgTWVudGlvbiBhbHNvICRkZWJ1Z2Rp ciBmb3IgdGhlCi0JYXV0by1sb2FkIHNhZmUtcGF0aCB2YXJpYWJsZS4KLQkob2JqZmlsZS1nZGIu cHkgZmlsZSk6IFJlbW92ZSB0aGUgZXh0cmEgZGVidWctZmlsZS1kaXJlY3RvcnkgcGFyYWdyYXBo LgotCU1lbnRpb24gYWxzbyAkZGVidWdkaXIgZm9yICdzZXQgYXV0by1sb2FkIHNjcmlwdHMtZGly ZWN0b3J5Jy4KLQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL05FV1MKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL05FV1MJMjAxMi0wNS0xNCAxNDoy NDoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9ORVdTCTIw MTItMDUtMTQgMTQ6MjQ6NDkuNTEwNDIyNDg1ICswMjAwCi1AQCAtMzE3LDggKzMxNywxMCBAQCBz aG93IHRyYWNlLXN0b3Atbm90ZXMKLSAKLSAtLXdpdGgtYXV0by1sb2FkLWRpcgotICAgQ29uZmln dXJlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSAnc2V0IGF1dG8tbG9hZCBzY3JpcHRzLWRpcmVjdG9y eScKLS0gIHNldHRpbmcgYWJvdmUuICBJdCBkZWZhdWx0cyB0byAnJGRhdGFkaXIvYXV0by1sb2Fk JywgJGRhdGFkaXIKLS0gIHJlcHJlc2VudGluZyBHREIncyBkYXRhIGRpcmVjdG9yeSAoYXZhaWxh YmxlIHZpYSBzaG93IGRhdGEtZGlyZWN0b3J5KS4KLSsgIHNldHRpbmcgYWJvdmUuICBJdCBkZWZh dWx0cyB0byAnJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZCcsCi0rICAkZGVidWdkaXIgcmVw cmVzZW50aW5nIGdsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBkaXJlY3RvcmllcyAoYXZhaWxhYmxlCi0r ICB2aWEgJ3Nob3cgZGVidWctZmlsZS1kaXJlY3RvcnknKSBhbmQgJGRhdGFkaXIgcmVwcmVzZW50 aW5nIEdEQidzIGRhdGEKLSsgIGRpcmVjdG9yeSAoYXZhaWxhYmxlIHZpYSAnc2hvdyBkYXRhLWRp cmVjdG9yeScpLgotIAotIC0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRoCi0gICBDb25maWd1cmUg ZGVmYXVsdCB2YWx1ZSBmb3IgdGhlICdzZXQgYXV0by1sb2FkIHNhZmUtcGF0aCcgc2V0dGluZwot SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8tbG9hZC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDEyMC5vcmlnL2dkYi9hdXRvLWxvYWQuYwkyMDEyLTA1LTE0IDE0 OjI0OjIwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2F1dG8t bG9hZC5jCTIwMTItMDUtMTQgMTQ6MjQ6NDkuNTExNDIyNDgzICswMjAwCi1AQCAtMTQ3LDYgKzE0 NywzMCBAQCBzdGF0aWMgY2hhciAqYXV0b19sb2FkX3NhZmVfcGF0aDsKLSAgICBjb3VudGVycGFy dC4gICovCi0gc3RhdGljIFZFQyAoY2hhcl9wdHIpICphdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYzsK LSAKLSsvKiBFeHBhbmQgJGRhdGFkaXIgYW5kICRkZWJ1Z2RpciBpbiBTVFJJTkcgYWNjb3JkaW5n IHRvIHRoZSBydWxlcyBvZgotKyAgIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQuICBSZXR1cm4g dmVjdG9yIGZyb20gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjLAotKyAgIHRoaXMgdmVjdG9yIG11 c3QgYmUgZnJlZWQgYnkgZnJlZV9jaGFyX3B0cl92ZWMgYnkgdGhlIGNhbGxlci4gICovCi0rCi0r c3RhdGljIFZFQyAoY2hhcl9wdHIpICoKLSthdXRvX2xvYWRfZXhwYW5kX2Rpcl92YXJzIChjb25z dCBjaGFyICpzdHJpbmcpCi0rewotKyAgVkVDIChjaGFyX3B0cikgKmRpcl92ZWM7Ci0rICBjaGFy ICpzOwotKwotKyAgcyA9IHhzdHJkdXAgKHN0cmluZyk7Ci0rICBzdWJzdGl0dXRlX3BhdGhfY29t cG9uZW50ICgmcywgIiRkYXRhZGlyIiwgZ2RiX2RhdGFkaXIpOwotKyAgc3Vic3RpdHV0ZV9wYXRo X2NvbXBvbmVudCAoJnMsICIkZGVidWdkaXIiLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7Ci0rCi0r ICBpZiAoZGVidWdfYXV0b19sb2FkICYmIHN0cmNtcCAocywgc3RyaW5nKSAhPSAwKQotKyAgICBm cHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0rCQkJXygiYXV0by1sb2FkOiBFeHBhbmRl ZCAkLXZhcmlhYmxlcyB0byBcIiVzXCIuXG4iKSwgcyk7Ci0rCi0rICBkaXJfdmVjID0gZGlybmFt ZXNfdG9fY2hhcl9wdHJfdmVjIChzKTsKLSsgIHhmcmVlKHMpOwotKwotKyAgcmV0dXJuIGRpcl92 ZWM7Ci0rfQotKwotIC8qIFVwZGF0ZSBhdXRvX2xvYWRfc2FmZV9wYXRoX3ZlYyBmcm9tIGN1cnJl bnQgQVVUT19MT0FEX1NBRkVfUEFUSC4gICovCi0gCi0gc3RhdGljIHZvaWQKLUBAIC0xNjMsNyAr MTg3LDcgQEAgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWNfdXBkYXRlICh2b2lkKQotIAotICAgZnJl ZV9jaGFyX3B0cl92ZWMgKGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjKTsKLSAKLS0gIGF1dG9fbG9h ZF9zYWZlX3BhdGhfdmVjID0gZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChhdXRvX2xvYWRfc2Fm ZV9wYXRoKTsKLSsgIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjID0gYXV0b19sb2FkX2V4cGFuZF9k aXJfdmFycyAoYXV0b19sb2FkX3NhZmVfcGF0aCk7Ci0gICBsZW4gPSBWRUNfbGVuZ3RoIChjaGFy X3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMpOwotIAotICAgLyogQXBwbHkgdGlsZGVfZXhw YW5kIGFuZCBnZGJfcmVhbHBhdGggdG8gZWFjaCBBVVRPX0xPQURfU0FGRV9QQVRIX1ZFQwotQEAg LTE3MSwxNiArMTk1LDEwIEBAIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjX3VwZGF0ZSAodm9pZCkK LSAgIGZvciAoaXggPSAwOyBpeCA8IGxlbjsgaXgrKykKLSAgICAgewotICAgICAgIGNoYXIgKmRp ciA9IFZFQ19pbmRleCAoY2hhcl9wdHIsIGF1dG9fbG9hZF9zYWZlX3BhdGhfdmVjLCBpeCk7Ci0t ICAgICAgY2hhciAqZGRpcl9zdWJzdCwgKmV4cGFuZGVkLCAqcmVhbF9wYXRoOwotLQotLSAgICAg IGRkaXJfc3Vic3QgPSB4c3RyZHVwIChkaXIpOwotLSAgICAgIHN1YnN0aXR1dGVfcGF0aF9jb21w b25lbnQgKCZkZGlyX3N1YnN0LCAiJGRhdGFkaXIiLCBnZGJfZGF0YWRpcik7Ci0tICAgICAgZXhw YW5kZWQgPSB0aWxkZV9leHBhbmQgKGRkaXJfc3Vic3QpOwotLSAgICAgIHhmcmVlIChkZGlyX3N1 YnN0KTsKLS0gICAgICByZWFsX3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKLSsgICAg ICBjaGFyICpleHBhbmRlZCA9IHRpbGRlX2V4cGFuZCAoZGlyKTsKLSsgICAgICBjaGFyICpyZWFs X3BhdGggPSBnZGJfcmVhbHBhdGggKGV4cGFuZGVkKTsKLSAKLS0gICAgICAvKiBFbnN1cmUgdGhl IGN1cnJlbnQgZW50cnkgaXMgYXQgbGVhc3QgYSB2YWxpZCBwYXRoICh0aGVyZWZvcmUKLS0JICRk YXRhZGlyLWV4cGFuZGVkIGFuZCB0aWxkZS1leHBhbmRlZCkuICAqLwotKyAgICAgIC8qIEVuc3Vy ZSB0aGUgY3VycmVudCBlbnRyeSBpcyBhdCBsZWFzdCB0aWxkZV9leHBhbmQtZWQuICAqLwotICAg ICAgIFZFQ19yZXBsYWNlIChjaGFyX3B0ciwgYXV0b19sb2FkX3NhZmVfcGF0aF92ZWMsIGl4LCBl eHBhbmRlZCk7Ci0gCi0gICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLUBAIC02NDUsNDIgKzY2 Myw2IEBAIGF1dG9fbG9hZF9vYmpmaWxlX3NjcmlwdCAoc3RydWN0IG9iamZpbGUKLSAKLSAgIGlm ICghaW5wdXQpCi0gICAgIHsKLS0gICAgICBjaGFyICpkZWJ1Z2RpcjsKLS0gICAgICBWRUMgKGNo YXJfcHRyKSAqZGVidWdkaXJfdmVjOwotLSAgICAgIGludCBpeDsKLS0KLS0gICAgICBkZWJ1Z2Rp cl92ZWMgPSBkaXJuYW1lc190b19jaGFyX3B0cl92ZWMgKGRlYnVnX2ZpbGVfZGlyZWN0b3J5KTsK LS0gICAgICBtYWtlX2NsZWFudXBfZnJlZV9jaGFyX3B0cl92ZWMgKGRlYnVnZGlyX3ZlYyk7Ci0t Ci0tICAgICAgaWYgKGRlYnVnX2F1dG9fbG9hZCkKLS0JZnByaW50Zl91bmZpbHRlcmVkIChnZGJf c3RkbG9nLAotLQkJCSAgICBfKCJhdXRvLWxvYWQ6IFNlYXJjaGluZyAnc2V0IGRlYnVnLWZpbGUt ZGlyZWN0b3J5JyAiCi0tCQkJICAgICAgInBhdGggXCIlc1wiLlxuIiksCi0tCQkJICAgIGRlYnVn X2ZpbGVfZGlyZWN0b3J5KTsKLS0KLS0gICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGNo YXJfcHRyLCBkZWJ1Z2Rpcl92ZWMsIGl4LCBkZWJ1Z2Rpcik7ICsraXgpCi0tCXsKLS0JICAvKiBB bHNvIHRyeSB0aGUgc2FtZSBmaWxlIGluIHRoZSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGRpcmVjdG9y eS4gICovCi0tCSAgZGVidWdmaWxlID0geG1hbGxvYyAoc3RybGVuIChkZWJ1Z2RpcikgKyBzdHJs ZW4gKGZpbGVuYW1lKSArIDEpOwotLQkgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z2Rpcik7Ci0t Ci0tCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVy ZS4gICovCi0tCSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGZpbGVuYW1lKTsKLS0KLS0JICBtYWtlX2Ns ZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwotLQkgIGlucHV0ID0gZm9wZW4gKGRlYnVnZmlsZSwg InIiKTsKLS0JICBpZiAoZGVidWdfYXV0b19sb2FkKQotLQkgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCBfKCJhdXRvLWxvYWQ6IEF0dGVtcHRlZCBmaWxlICIKLS0JCQkJCSAgICAg ICJcIiVzXCIgJXMuXG4iKSwKLS0JCQkJZGVidWdmaWxlLAotLQkJCQlpbnB1dCA/IF8oImV4aXN0 cyIpIDogXygiZG9lcyBub3QgZXhpc3QiKSk7Ci0tCSAgaWYgKGlucHV0ICE9IE5VTEwpCi0tCSAg ICBicmVhazsKLS0JfQotLSAgICB9Ci0tCi0tICBpZiAoIWlucHV0KQotLSAgICB7Ci0gICAgICAg VkVDIChjaGFyX3B0cikgKnZlYzsKLSAgICAgICBpbnQgaXg7Ci0gICAgICAgY2hhciAqZGlyOwot QEAgLTY4OCw3ICs2NzAsNyBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpm aWxlCi0gICAgICAgLyogQWxzbyB0cnkgdGhlIHNhbWUgZmlsZSBpbiBhIHN1YmRpcmVjdG9yeSBv ZiBnZGIncyBkYXRhCi0gCSBkaXJlY3RvcnkuICAqLwotIAotLSAgICAgIHZlYyA9IGRpcm5hbWVz X3RvX2NoYXJfcHRyX3ZlYyAoYXV0b19sb2FkX2Rpcik7Ci0rICAgICAgdmVjID0gYXV0b19sb2Fk X2V4cGFuZF9kaXJfdmFycyAoYXV0b19sb2FkX2Rpcik7Ci0gICAgICAgbWFrZV9jbGVhbnVwX2Zy ZWVfY2hhcl9wdHJfdmVjICh2ZWMpOwotIAotICAgICAgIGlmIChkZWJ1Z19hdXRvX2xvYWQpCi1A QCAtNjk4LDEwICs2ODAsOCBAQCBhdXRvX2xvYWRfb2JqZmlsZV9zY3JpcHQgKHN0cnVjdCBvYmpm aWxlCi0gCi0gICAgICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChjaGFyX3B0ciwgdmVjLCBp eCwgZGlyKTsgKytpeCkKLSAJewotLQkgIGRlYnVnZmlsZSA9IHhzdHJkdXAgKGRpcik7Ci0tCSAg c3Vic3RpdHV0ZV9wYXRoX2NvbXBvbmVudCAoJmRlYnVnZmlsZSwgIiRkYXRhZGlyIiwgZ2RiX2Rh dGFkaXIpOwotLQkgIGRlYnVnZmlsZSA9IHhyZWFsbG9jIChkZWJ1Z2ZpbGUsIChzdHJsZW4gKGRl YnVnZmlsZSkKLS0JCQkJCSAgICArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSkpOwotKwkgIGRlYnVn ZmlsZSA9IHhtYWxsb2MgKHN0cmxlbiAoZGlyKSArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSk7Ci0r CSAgc3RyY3B5IChkZWJ1Z2ZpbGUsIGRpcik7Ci0gCi0gCSAgLyogRklMRU5BTUUgaXMgYWJzb2x1 dGUsIHNvIHdlIGRvbid0IG5lZWQgYSAiLyIgaGVyZS4gICovCi0gCSAgc3RyY2F0IChkZWJ1Z2Zp bGUsIGZpbGVuYW1lKTsKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZQky MDEyLTA1LTE0IDE0OjI0OjM4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL2NvbmZpZ3VyZQkyMDEyLTA1LTE0IDE0OjI0OjU1Ljg1NjQwOTk3NyArMDIwMAotQEAg LTE2NzAsNyArMTY3MCw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVmLiBhdXRvPWxpYnJwbS5zbykKLSAgIC0td2l0aC1hdXRvLWxvYWQtZGlyPVBB VEgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8g bG9hZCBhdXRvLWxvYWRlZCBzY3JpcHRzCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBbJGRh dGFkaXIvYXV0by1sb2FkXQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgWyRkZWJ1Z2Rpcjok ZGF0YWRpci9hdXRvLWxvYWRdCi0gICAtLXdpdGgtYXV0by1sb2FkLXNhZmUtcGF0aD1QQVRICi0g ICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBzYWZlIHRvIGhvbGQgYXV0by1s b2FkZWQgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFstLXdpdGgtYXV0by1sb2Fk LWRpcl0KLUBAIC04NDk0LDEwICs4NDk0LDEwIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciBk ZWZhdWx0IGF1dG8tbG8KLSBpZiB0ZXN0ICIke3dpdGhfYXV0b19sb2FkX2RpcitzZXR9IiA9IHNl dDsgdGhlbiA6Ci0gICB3aXRodmFsPSR3aXRoX2F1dG9fbG9hZF9kaXI7Ci0gZWxzZQotLSAgd2l0 aF9hdXRvX2xvYWRfZGlyPSckZGF0YWRpci9hdXRvLWxvYWQnCi0rICB3aXRoX2F1dG9fbG9hZF9k aXI9JyRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQnCi0gZmkKLSAKLS1lc2NhcGVfZGlyPWBl Y2hvICR3aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQgJ3MvWyRdZGF0YWRpclw+L1xcXFxcXFxcXFxc XCYvZydgCi0rZXNjYXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1sk XVwoZGF0YWRpclx8ZGVidWdkaXJcKVw+L1xcXFxcXFxcXFxcXCYvZydgCi0gCi0gICB0ZXN0ICJ4 JHByZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSAgIHRlc3Qg IngkZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLUBAIC04 NTI0LDcgKzg1MjQsNyBAQCBlbHNlCi0gICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9IiR3aXRo X2F1dG9fbG9hZF9kaXIiCi0gZmkKLSAKLS1lc2NhcGVfZGlyPWBlY2hvICR3aXRoX2F1dG9fbG9h ZF9zYWZlX3BhdGggfCBzZWQgJ3MvWyRdZGF0YWRpclw+L1xcXFxcXFxcXFxcXCYvZydgCi0rZXNj YXBlX2Rpcj1gZWNobyAkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIHwgc2VkICdzL1skXVwoZGF0 YWRpclx8ZGVidWdkaXJcKVw+L1xcXFxcXFxcXFxcXCYvZydgCi0gCi0gICB0ZXN0ICJ4JHByZWZp eCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKLSAgIHRlc3QgIngkZXhl Y19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwMTIwLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA1LTE0IDE0OjI0OjIwLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMjAvZ2RiL2NvbmZpZ3VyZS5hYwky MDEyLTA1LTE0IDE0OjI0OjQ5LjUxNTQyMjQ3NyArMDIwMAotQEAgLTM0Miw5ICszNDIsOSBAQCBm aQotIEFDX01TR19DSEVDS0lORyhbZm9yIGRlZmF1bHQgYXV0by1sb2FkIGRpcmVjdG9yeV0pCi0g QUNfQVJHX1dJVEgoYXV0by1sb2FkLWRpciwKLSBBU19IRUxQX1NUUklORyhbLS13aXRoLWF1dG8t bG9hZC1kaXI9UEFUSF0sCi0tICBbZGlyZWN0b3JpZXMgZnJvbSB3aGljaCB0byBsb2FkIGF1dG8t bG9hZGVkIHNjcmlwdHMgQDw6QCRkYXRhZGlyL2F1dG8tbG9hZEA6PkBdKSwsCi0tICBbd2l0aF9h dXRvX2xvYWRfZGlyPSckZGF0YWRpci9hdXRvLWxvYWQnXSkKLS1lc2NhcGVfZGlyPWBlY2hvICR3 aXRoX2F1dG9fbG9hZF9kaXIgfCBzZWQgJ3MvW1skXV1kYXRhZGlyXD4vXFxcXFxcXFxcXFxcJi9n J2AKLSsgIFtkaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1sb2FkZWQgc2NyaXB0 cyBAPDpAJGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZEA6PkBdKSwsCi0rICBbd2l0aF9hdXRv X2xvYWRfZGlyPSckZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkJ10pCi0rZXNjYXBlX2Rpcj1g ZWNobyAkd2l0aF9hdXRvX2xvYWRfZGlyIHwgc2VkICdzL1tbJF1dXChkYXRhZGlyXHxkZWJ1Z2Rp clwpXD4vXFxcXFxcXFxcXFxcJi9nJ2AKLSBBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9ESVIsIGVz Y2FwZV9kaXIsCi0gCSAgICAgIFtEaXJlY3RvcmllcyBmcm9tIHdoaWNoIHRvIGxvYWQgYXV0by1s b2FkZWQgc2NyaXB0cy5dKQotIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9kaXJdKQot QEAgLTM1OSw3ICszNTksNyBAQCBBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWF1dG8tbG9hZC1z YWZlCi0gICAgICB3aXRoX2F1dG9fbG9hZF9zYWZlX3BhdGg9Ii8iCi0gICAgICBmaV0sCi0gW3dp dGhfYXV0b19sb2FkX3NhZmVfcGF0aD0iJHdpdGhfYXV0b19sb2FkX2RpciJdKQotLWVzY2FwZV9k aXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCB8IHNlZCAncy9bWyRdXWRhdGFkaXJc Pi9cXFxcXFxcXFxcXFwmL2cnYAotK2VzY2FwZV9kaXI9YGVjaG8gJHdpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aCB8IHNlZCAncy9bWyRdXVwoZGF0YWRpclx8ZGVidWdkaXJcKVw+L1xcXFxcXFxcXFxc XCYvZydgCi0gQUNfREVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAot IAkgICAgICBbRGlyZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCi0g QUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCi1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDEyMDEyMC5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNS0xNCAxNDoyNDoy MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTIwL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMi0wNS0xNCAxNDoyNDo0OS41MjA0MjI0NjcgKzAyMDAKLUBAIC0xNjAyOCw4ICsx NjAyOCwxMSBAQCBkZWJ1ZyBpbmZvcm1hdGlvbiBmaWxlcywgaW4gdGhlIGluZGljYXRlCi0gQGZp bGV7L3Vzci9saWIvZGVidWcvdXNyL2Jpbi9scy5kZWJ1Z30uCi0gQGVuZCBpdGVtaXplCi0gCi0t WW91IGNhbiBzZXQgdGhlIGdsb2JhbCBkZWJ1Z2dpbmcgaW5mbyBkaXJlY3RvcmllcywgYW5kIHZp ZXcgdGhlCi0tbGlzdCBAdmFsdWV7R0RCTn0gaXMgY3VycmVudGx5IHVzaW5nLgotK0BhbmNob3J7 ZGVidWctZmlsZS1kaXJlY3Rvcnl9Ci0rR2xvYmFsIGRlYnVnZ2luZyBpbmZvIGRpcmVjdG9yaWVz IGRlZmF1bHQgdG8gd2hhdCBpcyBzZXQgYnkgQHZhbHVle0dEQk59Ci0rY29uZmlndXJlIG9wdGlv biBAb3B0aW9uey0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXJ9LiAgRHVyaW5nIEB2YWx1ZXtHREJO fSBydW4KLSt5b3UgY2FuIGFsc28gc2V0IHRoZSBnbG9iYWwgZGVidWdnaW5nIGluZm8gZGlyZWN0 b3JpZXMsIGFuZCB2aWV3IHRoZSBsaXN0Ci0rQHZhbHVle0dEQk59IGlzIGN1cnJlbnRseSB1c2lu Zy4KLSAKLSBAdGFibGUgQGNvZGUKLSAKLUBAIC0yMDgwNyw5ICsyMDgxMCw5IEBAIGxvY2FsLWdk YmluaXQ6ICBBdXRvLWxvYWRpbmcgb2YgLmdkYmluaXQKLSAgICAgICAgICAgICAgICAgaXMgb24u Ci0gcHl0aG9uLXNjcmlwdHM6ICBBdXRvLWxvYWRpbmcgb2YgUHl0aG9uIHNjcmlwdHMgaXMgb24u Ci0gc2FmZS1wYXRoOiAgTGlzdCBvZiBkaXJlY3RvcmllcyBmcm9tIHdoaWNoIGl0IGlzIHNhZmUg dG8gYXV0by1sb2FkIGZpbGVzCi0tICAgICAgICAgICAgaXMgJGRhdGFkaXIvYXV0by1sb2FkLgot KyAgICAgICAgICAgIGlzICRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQuCi0gc2NyaXB0cy1k aXJlY3Rvcnk6ICBMaXN0IG9mIGRpcmVjdG9yaWVzIGZyb20gd2hpY2ggdG8gbG9hZCBhdXRvLWxv YWRlZCBzY3JpcHRzCi0tICAgICAgICAgICAgICAgICAgICBpcyAkZGF0YWRpci9hdXRvLWxvYWQu Ci0rICAgICAgICAgICAgICAgICAgICBpcyAkZGVidWdkaXI6JGRhdGFkaXIvYXV0by1sb2FkLgot IEBlbmQgc21hbGxleGFtcGxlCi0gCi0gQGFuY2hvcntpbmZvIGF1dG8tbG9hZH0KLUBAIC0yMTAy NSw5ICsyMTAyOCwxMSBAQCBnZXQgbG9hZGVkOgotICQgLi9nZGIgLXEgLi9nZGIKLSBSZWFkaW5n IHN5bWJvbHMgZnJvbSAvaG9tZS91c2VyL2dkYi9nZGIuLi5kb25lLgotIHdhcm5pbmc6IEZpbGUg Ii9ob21lL3VzZXIvZ2RiL2dkYi1nZGIuZ2RiIiBhdXRvLWxvYWRpbmcgaGFzIGJlZW4KLS0gICAg ICAgICBkZWNsaW5lZCBieSB5b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQgdG8gIiRkYXRh ZGlyL2F1dG8tbG9hZCIuCi0rICAgICAgICAgZGVjbGluZWQgYnkgeW91ciBgYXV0by1sb2FkIHNh ZmUtcGF0aCcgc2V0Ci0rICAgICAgICAgdG8gIiRkZWJ1Z2RpcjokZGF0YWRpci9hdXRvLWxvYWQi LgotIHdhcm5pbmc6IEZpbGUgIi9ob21lL3VzZXIvZ2RiL2dkYi1nZGIucHkiIGF1dG8tbG9hZGlu ZyBoYXMgYmVlbgotLSAgICAgICAgIGRlY2xpbmVkIGJ5IHlvdXIgYGF1dG8tbG9hZCBzYWZlLXBh dGgnIHNldCB0byAiJGRhdGFkaXIvYXV0by1sb2FkIi4KLSsgICAgICAgICBkZWNsaW5lZCBieSB5 b3VyIGBhdXRvLWxvYWQgc2FmZS1wYXRoJyBzZXQKLSsgICAgICAgICB0byAiJGRlYnVnZGlyOiRk YXRhZGlyL2F1dG8tbG9hZCIuCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLSBUaGUgbGlzdCBvZiB0 cnVzdGVkIGRpcmVjdG9yaWVzIGlzIGNvbnRyb2xsZWQgYnkgdGhlIGZvbGxvd2luZyBjb21tYW5k czoKLUBAIC0yMTA2MCwxMSArMjEwNjUsMTAgQEAgaG9zdCBwbGF0Zm9ybSBwYXRoIHNlcGFyYXRv ciBpbiB1c2UuCi0gQGVuZCB0YWJsZQotIAotIFRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gd2hh dCBAY29kZXstLXdpdGgtYXV0by1sb2FkLWRpcn0gaGFzIGJlZW4gY29uZmlndXJlZAotLXRvIChA cHhyZWZ7d2l0aC1hdXRvLWxvYWQtZGlyfSkuICBAZmlsZXskZGF0YWRpcn0gc3Vic3RpdHVhdGlv biBhcHBsaWVzIHRoZSBzYW1lCi0tYXMgZm9yIEB4cmVme3NldCBhdXRvLWxvYWQgc2NyaXB0cy1k aXJlY3Rvcnl9LgotLVRoZSBkZWZhdWx0IEBjb2Rle3NldAotLWF1dG8tbG9hZCBzYWZlLXBhdGh9 IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0gY29uZmlndXJhdGlv bgotLW9wdGlvbiBAb3B0aW9uey0td2l0aC1hdXRvLWxvYWQtc2FmZS1wYXRofS4KLSt0byAoQHB4 cmVme3dpdGgtYXV0by1sb2FkLWRpcn0pLiAgQGZpbGV7JGRlYnVnZGlyfSBhbmQgQGZpbGV7JGRh dGFkaXJ9Ci0rc3Vic3RpdHVhdGlvbiBhcHBsaWVzIHRoZSBzYW1lIGFzIGZvciBAeHJlZntzZXQg YXV0by1sb2FkIHNjcmlwdHMtZGlyZWN0b3J5fS4KLStUaGUgZGVmYXVsdCBAY29kZXtzZXQgYXV0 by1sb2FkIHNhZmUtcGF0aH0gdmFsdWUgY2FuIGJlIGFsc28gb3ZlcnJpZGVuIGJ5Ci0rQHZhbHVl e0dEQk59IGNvbmZpZ3VyYXRpb24gb3B0aW9uIEBvcHRpb257LS13aXRoLWF1dG8tbG9hZC1zYWZl LXBhdGh9LgotIAotIFNldHRpbmcgdGhpcyB2YXJpYWJsZSB0byBAZmlsZXsvfSBkaXNhYmxlcyB0 aGlzIHNlY3VyaXR5IHByb3RlY3Rpb24sCi0gY29ycmVzcG9uZGluZyBAdmFsdWV7R0RCTn0gY29u ZmlndXJhdGlvbiBvcHRpb24gaXMKLUBAIC0yNTE1OCwxMiArMjUxNjIsNyBAQCB0aGF0IHRoZSBm aWxlIG5hbWUgaXMgYWJzb2x1dGUsIGZvbGxvd2luCi0gQGNvZGV7Ln0gYW5kIEBjb2Rley4ufSBj b21wb25lbnRzLiAgSWYgdGhpcyBmaWxlIGV4aXN0cyBhbmQgaXMKLSByZWFkYWJsZSwgQHZhbHVl e0dEQk59IHdpbGwgZXZhbHVhdGUgaXQgYXMgYSBQeXRob24gc2NyaXB0LgotIAotLUlmIHRoaXMg ZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5kIGlmIHRoZSBwYXJhbWV0ZXIKLS1AY29kZXtkZWJ1Zy1m aWxlLWRpcmVjdG9yeX0gaXMgc2V0IChAcHhyZWZ7U2VwYXJhdGUgRGVidWcgRmlsZXN9KSwKLS10 aGVuIEB2YWx1ZXtHREJOfSB3aWxsIGxvb2sgZm9yIEB2YXJ7c2NyaXB0LW5hbWV9IGluIGFsbCBv ZiB0aGUKLS1kaXJlY3RvcmllcyBtZW50aW9uZWQgaW4gdGhlIHZhbHVlIG9mIEBjb2Rle2RlYnVn LWZpbGUtZGlyZWN0b3J5fS4KLS0KLS1GaW5hbGx5LCBpZiB0aGlzIGZpbGUgZG9lcyBub3QgZXhp c3QsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IKLStJZiB0aGlzIGZpbGUgZG9lcyBu b3QgZXhpc3QsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgbG9vayBmb3IKLSBAdmFye3NjcmlwdC1u YW1lfSBmaWxlIGluIGFsbCBvZiB0aGUgZGlyZWN0b3JpZXMgYXMgc3BlY2lmaWVkIGJlbG93Lgot IAotIE5vdGUgdGhhdCBsb2FkaW5nIG9mIHRoaXMgc2NyaXB0IGZpbGUgYWxzbyByZXF1aXJlcyBh Y2NvcmRpbmdseSBjb25maWd1cmVkCi1AQCAtMjUxODEsMTIgKzI1MTgwLDE0IEBAIEVhY2ggZW50 cnkgaGVyZSBuZWVkcyB0byBiZSBjb3ZlcmVkIGFsc28KLSBAY29kZXtzZXQgYXV0by1sb2FkIHNh ZmUtcGF0aH0gKEBweHJlZntzZXQgYXV0by1sb2FkIHNhZmUtcGF0aH0pLgotIAotIEBhbmNob3J7 d2l0aC1hdXRvLWxvYWQtZGlyfQotLVRoaXMgdmFyaWFibGUgZGVmYXVsdHMgdG8gQGZpbGV7JGRh dGFkaXIvYXV0by1sb2FkfS4gIFRoZSBkZWZhdWx0IEBjb2Rle3NldAotLWF1dG8tbG9hZCBzYWZl LXBhdGh9IHZhbHVlIGNhbiBiZSBhbHNvIG92ZXJyaWRlbiBieSBAdmFsdWV7R0RCTn0gY29uZmln dXJhdGlvbgotLW9wdGlvbiBAb3B0aW9uey0td2l0aC1hdXRvLWxvYWQtZGlyfS4KLS0KLS1Bbnkg dXNlZCBzdHJpbmcgQGZpbGV7JGRhdGFkaXJ9IHdpbGwgZ2V0IHJlcGxhY2VkIGJ5IEB2YXJ7ZGF0 YS1kaXJlY3Rvcnl9IHdoaWNoCi0taXMgZGV0ZXJtaW5lZCBhdCBAdmFsdWV7R0RCTn0gc3RhcnR1 cCAoQHB4cmVme0RhdGEgRmlsZXN9KS4gIEBmaWxleyRkYXRhZGlyfQotK1RoaXMgdmFyaWFibGUg ZGVmYXVsdHMgdG8gQGZpbGV7JGRlYnVnZGlyOiRkYXRhZGlyL2F1dG8tbG9hZH0uICBUaGUgZGVm YXVsdAotK0Bjb2Rle3NldCBhdXRvLWxvYWQgc2FmZS1wYXRofSB2YWx1ZSBjYW4gYmUgYWxzbyBv dmVycmlkZW4gYnkgQHZhbHVle0dEQk59Ci0rY29uZmlndXJhdGlvbiBvcHRpb24gQG9wdGlvbnst LXdpdGgtYXV0by1sb2FkLWRpcn0uCi0rCi0rQW55IHVzZWQgc3RyaW5nIEBmaWxleyRkZWJ1Z2Rp cn0gd2lsbCBnZXQgcmVwbGFjZWQgYnkgQHZhcntkZWJ1Zy1maWxlLWRpcmVjdG9yeX0KLSt2YWx1 ZSAoQHB4cmVme1NlcGFyYXRlIERlYnVnIEZpbGVzfSkgYW5kIGFueSB1c2VkIHN0cmluZyBAZmls ZXskZGF0YWRpcn0gd2lsbAotK2dldCByZXBsYWNlZCBieSBAdmFye2RhdGEtZGlyZWN0b3J5fSB3 aGljaCBpcyBkZXRlcm1pbmVkIGF0IEB2YWx1ZXtHREJOfSBzdGFydHVwCi0rKEBweHJlZntEYXRh IEZpbGVzfSkuICBAZmlsZXskZGVidWdkaXJ9IGFuZCBAZmlsZXskZGF0YWRpcn0KLSBtdXN0IGJl IHBsYWNlZCBhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQgLS0tIGVpdGhlciBhbG9uZSBvciBkZWxp bWl0ZWQgYnkKLSBAZmlsZXsvfSBvciBAZmlsZXtcfSBkaXJlY3Rvcnkgc2VwYXJhdG9ycywgZGVw ZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgotIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MjAvZ2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTIwLm9yaWcv Z2RiL3V0aWxzLmMJMjAxMi0wNS0xNCAxNDoyNDoxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny40LjUwLjIwMTIwMTIwL2dkYi91dGlscy5jCTIwMTItMDUtMTQgMTQ6MjQ6NDkuNTIxNDIyNDY1 ICswMjAwCi1AQCAtMzkyNyw4ICszOTI3LDggQEAgZGlybmFtZXNfdG9fY2hhcl9wdHJfdmVjIChj b25zdCBjaGFyICpkaQotIAotIC8qIFN1YnN0aXR1dGUgYWxsIG9jY3VyZW5jZXMgb2Ygc3RyaW5n IEZST00gYnkgc3RyaW5nIFRPIGluICpTVFJJTkdQLiAgKlNUUklOR1AKLSAgICBtdXN0IGNvbWUg ZnJvbSB4cmVhbGxvYy1jb21wYXRpYmxlIGFsbG9jYXRvciBhbmQgaXQgbWF5IGJlIHVwZGF0ZWQu ICBGUk9NCi0tICAgbmVlZHMgdG8gYmUgZGVsaW1pdGVkIGJ5IElTX0RJUl9TRVBBUkFUT1IgKG9y IGJlIGxvY2F0ZWQgYXQgdGhlIHN0YXJ0IG9yCi0tICAgZW5kIG9mICpTVFJJTkdQLiAgKi8KLSsg ICBuZWVkcyB0byBiZSBkZWxpbWl0ZWQgYnkgSVNfRElSX1NFUEFSQVRPUiBvciBESVJOQU1FX1NF UEFSQVRPUiAob3IgYmUKLSsgICBsb2NhdGVkIGF0IHRoZSBzdGFydCBvciBlbmQgb2YgKlNUUklO R1AuICAqLwotIAotIHZvaWQKLSBzdWJzdGl0dXRlX3BhdGhfY29tcG9uZW50IChjaGFyICoqc3Ry aW5ncCwgY29uc3QgY2hhciAqZnJvbSwgY29uc3QgY2hhciAqdG8pCi1AQCAtMzk0Myw4ICszOTQz LDEwIEBAIHN1YnN0aXR1dGVfcGF0aF9jb21wb25lbnQgKGNoYXIgKipzdHJpbmcKLSAgICAgICBp ZiAocyA9PSBOVUxMKQotIAlicmVhazsKLSAKLS0gICAgICBpZiAoKHMgPT0gc3RyaW5nIHx8IElT X0RJUl9TRVBBUkFUT1IgKHNbLTFdKSkKLS0gICAgICAgICAgJiYgKHNbZnJvbV9sZW5dID09ICdc MCcgfHwgSVNfRElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pKSkKLSsgICAgICBpZiAoKHMgPT0g c3RyaW5nIHx8IElTX0RJUl9TRVBBUkFUT1IgKHNbLTFdKQotKwkgICB8fCBzWy0xXSA9PSBESVJO QU1FX1NFUEFSQVRPUikKLSsgICAgICAgICAgJiYgKHNbZnJvbV9sZW5dID09ICdcMCcgfHwgSVNf RElSX1NFUEFSQVRPUiAoc1tmcm9tX2xlbl0pCi0rCSAgICAgIHx8IHNbZnJvbV9sZW5dID09IERJ Uk5BTUVfU0VQQVJBVE9SKSkKLSAJewotIAkgIGNoYXIgKnN0cmluZ19uZXc7Ci0gCgpkaWZmIC0t Z2l0IGEvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoIGIvZ2RiLWJ6NTQxODY2 LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoCmluZGV4IDdjYzJhMzguLjc0NjA0YmEgMTAwNjQ0Ci0t LSBhL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAorKysgYi9nZGItYno1NDE4 NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKQEAgLTEsMjAgKzEsMjAgQEAKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAkyMDEx LTA4LTI0IDE0OjA3OjI2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxMS0xMi0xOSAwMTo0MDo0OS40OTI2MjU4Mzcg KzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4 NjQubWgJMjAxMi0wMy0xMyAxNjowMDozNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTItMDYtMDIgMTk6NTY6MDMu MTk2MTcyNTAzICswMjAwCiBAQCAtNCw3ICs0LDcgQEAgTkFUREVQRklMRVM9IGluZi1wdHJhY2Uu byBmb3JrLWNoaWxkLm8gXAogIAlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEubyBcCiAgCXByb2Mt c2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIGxpbnV4LWZvcmsubyBcCi0gCWxpbnV4LXByb2Nm cy5vCisgCWxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vCiAtTkFUX0ZJTEU9IGNvbmZpZy9u bS1saW51eC5oCiArTkFUX0ZJTEU9IG5tLWxpbnV4NjQuaAogIE5BVF9DREVQUyA9ICQoc3JjZGly KS9wcm9jLXNlcnZpY2UubGlzdAogIAogICMgVGhlIGR5bmFtaWNhbGx5IGxvYWRlZCBsaWJ0aHJl YWRfZGIgbmVlZHMgYWNjZXNzIHRvIHN5bWJvbHMgaW4gdGhlCi1JbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvY29uZmlnL2kzODYvbGludXgubWgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9jb25maWcvaTM4Ni9saW51eC5taAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMTEyMTgub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0wOC0yNCAxNDowNzoy Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcvaTM4 Ni9saW51eC5taAkyMDExLTEyLTE5IDAxOjQwOjMyLjQ1MzY4OTAwNiArMDEwMAorLS0tIGdkYi03 LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMi0wMy0xMyAx NjowMDozMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9jb25m aWcvaTM4Ni9saW51eC5taAkyMDEyLTA2LTAyIDE5OjU1OjQyLjQxODE3ODQxMiArMDIwMAogQEAg LTEsNiArMSw2IEBACiAgIyBIb3N0OiBJbnRlbCAzODYgcnVubmluZyBHTlUvTGludXguCiAgCkBA IC0yMywxMCArMjMsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9p Mzg2L2xpbnV4Lm1oCiAgTkFUREVQRklMRVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAog IAlpMzg2LW5hdC5vIGkzODYtbGludXgtbmF0Lm8gXAogIAlwcm9jLXNlcnZpY2UubyBsaW51eC10 aHJlYWQtZGIubyBcCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlnL2kzODYv bm0tbGludXguaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvbmZpZy9pMzg2L25t LWxpbnV4LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcvaTM4Ni9u bS1saW51eC5oCTIwMTEtMTItMTkgMDE6NDA6MzIuNDU0Njg5MDAyICswMTAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDYwMi9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAkyMDEyLTA2LTAyIDE5OjU1 OjQyLjQzMzE3ODQwOCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBzdXBwb3J0 IGZvciBHTlUvTGludXggaTM4Ni4KICsKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAogKyNkZWZpbmUgdGFyZ2V0 X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiArCiArI2VuZGlm IC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZp Zy9pMzg2L25tLWxpbnV4NjQuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvbmZp Zy9pMzg2L25tLWxpbnV4NjQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2Nv bmZpZy9pMzg2L25tLWxpbnV4NjQuaAkyMDExLTEyLTE5IDAxOjQwOjMyLjQ1NTY4ODk5OCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAky MDEyLTA2LTAyIDE5OjU1OjQyLjQzNDE3ODQwNyArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8q IE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUvTGludXggYW1kNjQuCiArCkBAIC04OSwxMSArODksMTEg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQu aAogKyNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQs IG90KSAxCiArCiArI2VuZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL3RhcmdldC5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGFy Z2V0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rhcmdl dC5oCTIwMTEtMTItMDYgMjE6MDM6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvdGFyZ2V0LmgJMjAxMS0xMi0xOSAwMTo0MDozMi40NTY2ODg5OTUgKzAxMDAK LUBAIC0xMzkxLDggKzEzOTEsMTAgQEAgZXh0ZXJuIGNoYXIgKnRhcmdldF90aHJlYWRfbmFtZSAo c3RydWN0CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi90YXJnZXQuaAkyMDEyLTA2 LTAxIDE4OjM3OjU5LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3RhcmdldC5oCTIwMTItMDYtMDIgMTk6NTU6NDIuNDM2MTc4NDA3ICswMjAwCitAQCAtMTQ3MCw4 ICsxNDcwLDEwIEBAIGV4dGVybiBjaGFyICp0YXJnZXRfdGhyZWFkX25hbWUgKHN0cnVjdAogICAg IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQuICBDTlQgaXMgdGhlIG51bWJlciBvZiBzdWNoIHdhdGNo cG9pbnRzIHVzZWQgc28gZmFyCiAgICAgKGluY2x1ZGluZyB0aGlzIG9uZT8pLiAgT1RIRVJUWVBF IGlzIHdobyBrbm93cyB3aGF0Li4uICAqLwogIApAQCAtMTA0LDEwICsxMDQsMTAgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3RhcmdldC5oCiAgCiAgLyogUmV0dXJucyB0aGUgbnVt YmVyIG9mIGRlYnVnIHJlZ2lzdGVycyBuZWVkZWQgdG8gd2F0Y2ggdGhlIGdpdmVuCiAgICAgbWVt b3J5IHJlZ2lvbiwgb3IgemVybyBpZiBub3Qgc3VwcG9ydGVkLiAgKi8KLUluZGV4OiBnZGItNy40 LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUt cnVuLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS93YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHctYmVmb3JlLXJ1bi5leHAJ MjAxMS0xMi0xOSAwMTo0MDozMi40NjQ2ODg5NjUgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4cAky MDEyLTA2LTAyIDE5OjU1OjQyLjQ0MjE3ODQwNiArMDIwMAogQEAgLTAsMCArMSw0MCBAQAogKyMg Q29weXJpZ2h0IDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpk aWZmIC0tZ2l0IGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLWxpYnN0ZGN4 eC5wYXRjaCBiL2dkYi1iejU2Mjc2My1wcmV0dHktcHJpbnQtMmQtdmVjdG9ycy1saWJzdGRjeHgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MjlhNjIuLjAwMDAwMDAKLS0t IGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLWxpYnN0ZGN4eC5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLTIwMTAtMDYtMDEgIENocmlzIE1vbGxlciAg PGNtb2xsZXJAcmVkaGF0LmNvbT4KLQotCSogcHl0aG9uL2xpYnN0ZGN4eC92Ni9wcmludGVycy5w eSAoU3RkVmVjdG9yUHJpbnRlcik6IEFkZAotCWRldGVjdGlvbiBmb3IgbWF0cmljZXMgYXMgbmVz dGVkIHZlY3RvcnMuCi0KLUluZGV4OiBsaWJzdGRjKystdjMvcHl0aG9uL2xpYnN0ZGN4eC92Ni9w cmludGVycy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC4vbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4 L2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQkocmV2aXNpb24gMTU5OTM3KQotKysrIC4vbGlic3Rk YysrLXYzLXB5dGhvbi1yMTU1OTc4L2xpYnN0ZGN4eC92Ni9wcmludGVycy5weQkod29ya2luZyBj b3B5KQotQEAgLTE5LDYgKzE5LDkgQEAKLSBpbXBvcnQgaXRlcnRvb2xzCi0gaW1wb3J0IHJlCi0g Ci0rdmVjdG9yX3NpZyA9ICdzdGQ6OnZlY3RvcicKLSt2ZWN0b3JfcmVnZXggPSByZS5jb21waWxl KCdeJyArIHZlY3Rvcl9zaWcgKyAnPC4qPiQnKQotKwotIGNsYXNzIFN0ZFBvaW50ZXJQcmludGVy OgotICAgICAiUHJpbnQgYSBzbWFydCBwb2ludGVyIG9mIHNvbWUga2luZCIKLSAKLUBAIC0xODYs NyArMTg5LDEzIEBACi0gICAgICAgICAgICAgICAgICUgKHNlbGYudHlwZW5hbWUsIGludCAoZmlu aXNoIC0gc3RhcnQpLCBpbnQgKGVuZCAtIHN0YXJ0KSkpCi0gCi0gICAgIGRlZiBkaXNwbGF5X2hp bnQoc2VsZik6Ci0tICAgICAgICByZXR1cm4gJ2FycmF5JwotKyAgICAgICAgaXR5cGUwICA9IHNl bGYudmFsLnR5cGUudGVtcGxhdGVfYXJndW1lbnQoMCkKLSsgICAgICAgIGl0YWcgPSBpdHlwZTAu dGFnCi0rICAgICAgICBpZiBpdGFnIGFuZCByZS5tYXRjaCh2ZWN0b3JfcmVnZXgsIGl0YWcpOgot KyAgICAgICAgICAgIHJjID0gJ21hdHJpeCcKLSsgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAg cmMgPSAnYXJyYXknCi0rICAgICAgICByZXR1cm4gcmMgCi0gCi0gY2xhc3MgU3RkVmVjdG9ySXRl cmF0b3JQcmludGVyOgotICAgICAiUHJpbnQgc3RkOjp2ZWN0b3I6Oml0ZXJhdG9yIgotQEAgLTY5 Miw3ICs3MDEsNyBAQAotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxlKCdec3Rk OjpzZXQ8Lio+JCcpXSA9IGxhbWJkYSB2YWw6IFN0ZFNldFByaW50ZXIoInN0ZDo6c2V0IiwgdmFs KQotICAgICBwcmV0dHlfcHJpbnRlcnNfZGljdFtyZS5jb21waWxlKCdec3RkOjpzdGFjazwuKj4k JyldID0gbGFtYmRhIHZhbDogU3RkU3RhY2tPclF1ZXVlUHJpbnRlcigic3RkOjpzdGFjayIsIHZh bCkKLSAgICAgcHJldHR5X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSgnXnN0ZDo6dW5pcXVlX3B0 cjwuKj4kJyldID0gVW5pcXVlUG9pbnRlclByaW50ZXIKLS0gICAgcHJldHR5X3ByaW50ZXJzX2Rp Y3RbcmUuY29tcGlsZSgnXnN0ZDo6dmVjdG9yPC4qPiQnKV0gPSBsYW1iZGEgdmFsOiBTdGRWZWN0 b3JQcmludGVyKCJzdGQ6OnZlY3RvciIsIHZhbCkKLSsgICAgcHJldHR5X3ByaW50ZXJzX2RpY3Rb dmVjdG9yX3JlZ2V4XSA9IGxhbWJkYSB2YWw6IFN0ZFZlY3RvclByaW50ZXIodmVjdG9yX3NpZywg dmFsKQotICAgICAjIHZlY3Rvcjxib29sPgotIAotICAgICAjIFByaW50ZXIgcmVnaXN0cmF0aW9u cyBmb3IgY2xhc3NlcyBjb21waWxlZCB3aXRoIC1EX0dMSUJDWFhfREVCVUcuCgpkaWZmIC0tZ2l0 IGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLnBhdGNoIGIvZ2RiLWJ6NTYy NzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwZTNkMjE2Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU2Mjc2My1wcmV0dHktcHJpbnQt MmQtdmVjdG9ycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5OCArMCwwIEBACi0yMDEwLTA1 LTMxICBDaHJpcyBNb2xsZXIgIDxjbW9sbGVyQHJlZGhhdC5jb20+Ci0KLQkqIHB5dGhvbi9weS1w cmV0dHlwcmludC5jIChwcmludF9jaGlsZHJlbik6IEFkZCBmb3JtYXR0aW5nIGZvcgotCW1hdHJp Y2VzLiAoYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyKTogRGV0ZWN0IGFuZCBkZWFsIHdpdGggbWF0 cml4Ci0JaGludHMuIAotCi0KLTIwMTAtMDUtMzEgIENocmlzIE1vbGxlciAgPGNtb2xsZXJAcmVk aGF0LmNvbT4KLQotCSogZ2RiLnB5dGhvbi9NYWtlZmlsZS5pbiAoRVhFQ1VUQUJMRVMpOiAgQWRk ZWQgcHIxMDY1OS4KLQkqIGdkYi5weXRob24vcHIxMDY1OS5jYzogIE5ldyBmaWxlLgotCSogZ2Ri LnB5dGhvbi9wcjEwNjU5LmV4cC4gIE5ldyBmaWxlLgotCSogZ2RiLnB5dGhvbi9wcjEwNjU5LnB5 OiBOZXcgZmlsZS4KLQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTgvZ2RiL3ZhbHByaW50LmgK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjE4Lm9yaWcvZ2RiL3ZhbHByaW50LmgJ MjAxMS0wMi0xNCAxMjozNTo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEw MjE4L2dkYi92YWxwcmludC5oCTIwMTEtMDItMTggMTA6NDQ6MzIuMDAwMDAwMDAwICswMTAwCi1A QCAtOTAsNiArOTAsOSBAQCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucwotIAotICAgLyogSWYg bm9uemVybywgcHJpbnQgdGhlIHZhbHVlIGluICJzdW1tYXJ5IiBmb3JtLiAgKi8KLSAgIGludCBz dW1tYXJ5OwotKwotKyAgLyogQWZmZWN0cyBwcmV0dHkgcHJpbnRpbmcgb2YgbWF0cmljZXMuICAq LwotKyAgaW50IHByZXR0eXByaW50X21hdHJpeDsKLSB9OwotIAotIC8qIFRoZSBnbG9iYWwgcHJp bnQgb3B0aW9ucyBzZXQgYnkgdGhlIHVzZXIuICBJbiBnZW5lcmFsIHRoaXMgc2hvdWxkCi1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjE4Lm9yaWcvZ2RiL3B5dGhvbi9weS1wcmV0dHlw cmludC5jCTIwMTEtMDItMTQgMTI6MTA6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41 MC4yMDExMDIxOC9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMS0wMi0xOCAxMDo0NTow Mi4wMDAwMDAwMDAgKzAxMDAKLUBAIC01MDEsNyArNTAxLDcgQEAgcHJpbnRfY2hpbGRyZW4gKFB5 T2JqZWN0ICpwcmludGVyLCBjb25zdAotIAotICAgLyogVXNlIHRoZSBwcmV0dHlwcmludF9hcnJh eXMgb3B0aW9uIGlmIHdlIGFyZSBwcmludGluZyBhbiBhcnJheSwKLSAgICAgIGFuZCB0aGUgcHJl dHR5IG9wdGlvbiBvdGhlcndpc2UuICAqLwotLSAgaWYgKGlzX2FycmF5KQotKyAgaWYgKGlzX2Fy cmF5IHx8IG9wdGlvbnMtPnByZXR0eXByaW50X21hdHJpeCkKLSAgICAgcHJldHR5ID0gb3B0aW9u cy0+cHJldHR5cHJpbnRfYXJyYXlzOwotICAgZWxzZQotICAgICB7Ci1AQCAtNTIxLDYgKzUyMSw5 IEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKLSAgICAgICBnb3Rv IGRvbmU7Ci0gICAgIH0KLSAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGZyYW1lKTsKLSsgIAot KyAgaWYgKG9wdGlvbnMtPnByZXR0eXByaW50X21hdHJpeCAmJiByZWN1cnNlID09IDApCi0rICAg IGZwdXRzX2ZpbHRlcmVkICgiXG4iLCBzdHJlYW0pOwotIAotICAgZG9uZV9mbGFnID0gMDsKLSAg IGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLT5wcmludF9tYXg7ICsraSkKLUBAIC01NTUsMTIgKzU1 OCwyMyBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmplY3QgKnByaW50ZXIsIGNvbnN0Ci0gCSAzLiBP dGhlci4gIEFsd2F5cyBwcmludCBhICIsIi4gICovCi0gICAgICAgaWYgKGkgPT0gMCkKLSAJewot LSAgICAgICAgIGlmIChpc19weV9ub25lKQotLSAgICAgICAgICAgZnB1dHNfZmlsdGVyZWQgKCJ7 Iiwgc3RyZWFtKTsKLS0gICAgICAgICBlbHNlCi0tICAgICAgICAgICBmcHV0c19maWx0ZXJlZCAo IiA9IHsiLCBzdHJlYW0pOwotKwkgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9tYXRyaXggJiYg cmVjdXJzZSA9PSAwKQotKwkgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAqIHJlY3Vy c2UsIHN0cmVhbSk7Ci0rCSAgaWYgKGlzX3B5X25vbmUpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChv cHRpb25zLT5wcmV0dHlwcmludF9tYXRyaXggJiYgc3RyY21wIChoaW50LCAiYXJyYXkiKSkKLSsJ CXsKLSsJCSAgZnB1dHNfZmlsdGVyZWQgKCJ7XG4iLCBzdHJlYW0pOwotKwkJICBwcmludF9zcGFj ZXNfZmlsdGVyZWQgKDQgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsKLSsJCX0KLSsJICAgICAgZWxz ZQotKwkJZnB1dHNfZmlsdGVyZWQgKCJ7Iiwgc3RyZWFtKTsKLSsJICAgIH0KLSsJICBlbHNlCi0r CSAgICBmcHV0c19maWx0ZXJlZCAoIiA9IHsiLCBzdHJlYW0pOwotICAgICAgICB9Ci0tCi0rICAg ICAgZWxzZSBpZiAob3B0aW9ucy0+cHJldHR5cHJpbnRfbWF0cml4KQotKwlwcmludF9zcGFjZXNf ZmlsdGVyZWQgKDQgKyAyICogcmVjdXJzZSwgc3RyZWFtKTsKLSAgICAgICBlbHNlIGlmICghIGlz X21hcCB8fCBpICUgMiA9PSAwKQotIAlmcHV0c19maWx0ZXJlZCAocHJldHR5ID8gIiwiIDogIiwg Iiwgc3RyZWFtKTsKLSAKLUBAIC01ODksNiArNjAzLDEwIEBAIHByaW50X2NoaWxkcmVuIChQeU9i amVjdCAqcHJpbnRlciwgY29uc3QKLSAKLSAgICAgICBpZiAoaXNfbWFwICYmIGkgJSAyID09IDAp Ci0gCWZwdXRzX2ZpbHRlcmVkICgiWyIsIHN0cmVhbSk7Ci0rICAgICAgZWxzZSBpZiAob3B0aW9u cy0+cHJldHR5cHJpbnRfbWF0cml4KQotKwl7Ci0rCSAgLyogRm9yY2UgYSBkby1ub3RoaW5nLiAg Ki8KLSsJfQotICAgICAgIGVsc2UgaWYgKGlzX2FycmF5KQotIAl7Ci0gCSAgLyogV2UgcHJpbnQg dGhlIGluZGV4LCBub3Qgd2hhdGV2ZXIgdGhlIGNoaWxkIG1ldGhvZAotQEAgLTY2Nyw3ICs2ODUs MTIgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAotIAkgIGZwdXRz X2ZpbHRlcmVkICgiXG4iLCBzdHJlYW0pOwotIAkgIHByaW50X3NwYWNlc19maWx0ZXJlZCAoMiAq IHJlY3Vyc2UsIHN0cmVhbSk7Ci0gCX0KLS0gICAgICBmcHV0c19maWx0ZXJlZCAoIn0iLCBzdHJl YW0pOwotKyAgICAgIGlmIChvcHRpb25zLT5wcmV0dHlwcmludF9tYXRyaXgpCi0rICAgICAgewot KwlwcmludF9zcGFjZXNfZmlsdGVyZWQgKDQgKiByZWN1cnNlLCBzdHJlYW0pOwotKwlmcHV0c19m aWx0ZXJlZCAoIn1cbiIsIHN0cmVhbSk7Ci0rICAgICAgfQotKyAgICAgIGVsc2UgZnB1dHNfZmls dGVyZWQgKCJ9Iiwgc3RyZWFtKTsKLSAgICAgfQotIAotICBkb25lOgotQEAgLTY4OSw2ICs3MTIs NyBAQCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0Ci0gICBjaGFyICpo aW50ID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAgIGludCByZXN1bHQg PSAwOwotKyAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnNfY29weTsKLSAgIGVu dW0gc3RyaW5nX3JlcHJfcmVzdWx0IHByaW50X3Jlc3VsdDsKLSAKLSAgIC8qIE5vIHByZXR0eS1w cmludGVyIHN1cHBvcnQgZm9yIHVuYXZhaWxhYmxlIHZhbHVlcy4gICovCi1AQCAtNzI2LDkgKzc1 MCwyMSBAQCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0Ci0gCi0gICAv KiBJZiB3ZSBhcmUgcHJpbnRpbmcgYSBtYXAsIHdlIHdhbnQgc29tZSBzcGVjaWFsIGZvcm1hdHRp bmcuICAqLwotICAgaGludCA9IGdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKHByaW50ZXIpOwotKyAg Ci0rICBpZiAocmVjdXJzZSA9PSAwKQotKyAgICB7Ci0rICAgICAgb3B0aW9uc19jb3B5ID0gYWxs b2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zKSk7Ci0rICAgICAgbWVtY3B5 IChvcHRpb25zX2NvcHksIG9wdGlvbnMsIHNpemVvZiAoc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMpKTsKLSsgICAgICBvcHRpb25zX2NvcHktPnByZXR0eXByaW50X21hdHJpeCA9IGhpbnQgJiYg IXN0cmNtcCAoaGludCwgIm1hdHJpeCIpOwotKyAgICB9Ci0rICBlbHNlIG9wdGlvbnNfY29weSA9 IChzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKW9wdGlvbnM7Ci0rCi0gICBtYWtlX2NsZWFu dXAgKGZyZWVfY3VycmVudF9jb250ZW50cywgJmhpbnQpOwotIAotICAgLyogUHJpbnQgdGhlIHNl Y3Rpb24gKi8KLSsgIGlmIChvcHRpb25zX2NvcHktPnByZXR0eXByaW50X21hdHJpeCkKLSsgICAg cHJpbnRfcmVzdWx0ID0gc3RyaW5nX3JlcHJfbm9uZTsKLStlbHNlIC8qIFJlZCBIYXQgMkQgbWF0 cml4IHBhdGNoICovCi0gICBwcmludF9yZXN1bHQgPSBwcmludF9zdHJpbmdfcmVwciAocHJpbnRl ciwgaGludCwgc3RyZWFtLCByZWN1cnNlLAotIAkJCQkgICAgb3B0aW9ucywgbGFuZ3VhZ2UsIGdk YmFyY2gpOwotICAgaWYgKHByaW50X3Jlc3VsdCAhPSBzdHJpbmdfcmVwcl9lcnJvcikKLUluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LmNj Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHIxMDY1OS5jYwkyMDExLTAyLTE4IDEwOjQ0OjMyLjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCAr MSw0MyBAQAotKyNpbmNsdWRlIDxsaXN0PgotKyNpbmNsdWRlIDx2ZWN0b3I+ICAvLyAvdXNyL2lu Y2x1ZGUvYysrLzQuNC4xL2JpdHMvdmVjdG9yLnRjYwotKyNpbmNsdWRlIDxpb3N0cmVhbT4KLSsK LSt1c2luZyBuYW1lc3BhY2Ugc3RkOwotKwotK2ludCB1c2Vfd2luZG93cyA9IDk5OTk7Ci0rCi0r aW50Ci0rbWFpbigpewotKyAgdmVjdG9yPGludD4gdGVzdDEoMiwwKTsKLSsgIHRlc3QxWzBdPTg7 Ci0rICB0ZXN0MVsxXT05OwotKyAgCi0rICB2ZWN0b3I8IHZlY3RvcjxpbnQ+ID4gdGVzdDIoMywg dmVjdG9yPGludD4oMiwwKSk7Ci0rICB0ZXN0MlswXVswXT0wOwotKyAgdGVzdDJbMF1bMV09MTsK LSsgIHRlc3QyWzFdWzBdPTI7Ci0rICB0ZXN0MlsxXVsxXT0zOwotKyAgdGVzdDJbMl1bMF09NDsK LSsgIHRlc3QyWzJdWzFdPTU7Ci0rCi0rI2RlZmluZSBOUl9ST1dTICAgIDIKLSsjZGVmaW5lIE5S X0NPTFMgICAgMwotKyNkZWZpbmUgTlJfUExBTkVTICA0Ci0rICB2ZWN0b3I8aW50PiByb3dzKE5S X1JPV1MsIDApOwotKyAgdmVjdG9yPCB2ZWN0b3I8aW50PiA+IGNvbHVtbnMoTlJfQ09MUywgcm93 cyk7Ci0rICB2ZWN0b3I8IHZlY3RvciA8IHZlY3RvcjxpbnQ+ID4gPiB0ZXN0MyhOUl9QTEFORVMs IGNvbHVtbnMpOwotKwotKyAgY291dCA8PCAicm93cy5zaXplKCkgPSAiIDw8IHJvd3Muc2l6ZSgp Ci0rICAgICAgIDw8ICIsIGNvbHVtbnMuc2l6ZSgpID0gIiA8PCBjb2x1bW5zLnNpemUoKQotKyAg ICAgICA8PCAiLCB0ZXN0My5zaXplKCkgPSAiIDw8IHRlc3QzLnNpemUoKSA8PCAiXG4iOwotKwot KyAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dzLnNpemUoKTsgaSsrKSB7Ci0rICAgIGZvciAoaW50 IGogPSAwOyBqIDwgY29sdW1ucy5zaXplKCk7IGorKykgewotKyAgICAgIGZvciAoaW50IGsgPSAw OyBrIDwgdGVzdDMuc2l6ZSgpOyBrKyspIHsKLSsJdGVzdDNba11bal1baV0gPSBrICogMTAwICsg aiAqIDEwICsgaTsKLSsgICAgICB9Ci0rICAgIH0KLSsgIH0KLSsgIAotKyAgcmV0dXJuIDA7ICAv LyBicmVhawotK30KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9wcjEwNjU5LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTgvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkuZXhwCTIwMTEtMDItMTggMTA6NDQ6MzIuMDAwMDAw MDAwICswMTAwCi1AQCAtMCwwICsxLDgyIEBACi0rI0NvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsK LStzZXQgbmwgICAgICAgICAgICAgIlxbXHJcblxdKyIKLSsKLStzZXQgdGVzdGZpbGUgcHIxMDY1 OQotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCi0raWYgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcg JHRlc3RmaWxlLmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGUge2RlYnVnIGMrK31dIHsKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotKyNpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0K LSsKLStnZGJfdGVzdCAicHl0aG9uIGV4ZWNmaWxlKFwiJHNyY2Rpci8kc3ViZGlyL3ByMTA2NTku cHlcIikiICIiCi0rZ2RiX3Rlc3QgInB5dGhvbiBnZGIucHJldHR5X3ByaW50ZXJzID0gXFtsb29r dXBfZnVuY3Rpb25cXSIgIiIKLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBmYWls ICJDYW4ndCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuCi0rfQotKwotK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhayJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImJyZWFrIgotKwotK2dkYl90ZXN0ICJwIHRlc3QxIiAidmVjdG9yIG9mIGxlbmd0aCAyLCBj YXBhY2l0eSAyID0uKiIKLSsKLStnZGJfdGVzdCAicCB0ZXN0MiIgIj0gJG5sICB7JG5sICAgIHsu KiIKLSsKLSsjIENvbXBsZXRlIHJlc3VsdCBpczoKLSsjCi0rIyAoZ2RiKSBwIHRlc3QyCi0rIyAk MiA9Ci0rIyAgIHsKLSsjICAgICB7MCAgICAgIDEgICAgfQotKyMgICAgIHsyICAgICAgMyAgICB9 Ci0rIyAgICAgezQgICAgICA1ICAgIH0KLSsjICB9Ci0rCi0rCi0rZ2RiX3Rlc3QgInAgdGVzdDMi ICI9ICRubCAgeyRubCAgICB7JG5sICAgICAgey4qIgotKwotKyMgQ29tcGxldGUgcmVzdWx0IGlz OgotKyMKLSsjIChnZGIpIHAgdGVzdDMKLSsjICQzID0KLSsjICAgewotKyMgICAgIHsKLSsjICAg ICAgIHswICAgICAgICAxICAgICAgICB9Ci0rIyAgICAgICB7MTAgICAgICAgIDExICAgICAgICB9 Ci0rIyAgICAgICB7MjAgICAgICAgIDIxICAgICAgICB9Ci0rIyAgICAgfQotKyMgICAgIHsKLSsj ICAgICAgIHsxMDAgICAgICAgIDEwMSAgICAgICAgfQotKyMgICAgICAgezExMCAgICAgICAgMTEx ICAgICAgICB9Ci0rIyAgICAgICB7MTIwICAgICAgICAxMjEgICAgICAgIH0KLSsjICAgICB9Ci0r IyAgICAgewotKyMgICAgICAgezIwMCAgICAgICAgMjAxICAgICAgICB9Ci0rIyAgICAgICB7MjEw ICAgICAgICAyMTEgICAgICAgIH0KLSsjICAgICAgIHsyMjAgICAgICAgIDIyMSAgICAgICAgfQot KyMgICAgIH0KLSsjICAgICB7Ci0rIyAgICAgICB7MzAwICAgICAgICAzMDEgICAgICAgIH0KLSsj ICAgICAgIHszMTAgICAgICAgIDMxMSAgICAgICAgfQotKyMgICAgICAgezMyMCAgICAgICAgMzIx ICAgICAgICB9Ci0rIyAgICAgfQotKyMgIH0KLSsjIAotKwotKwotSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkucHkKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTEwMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LnB5CTIw MTEtMDItMTggMTA6NDQ6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDEwOSBAQAotKyMg Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0raW1wb3J0 IGl0ZXJ0b29scwotK2ltcG9ydCByZQotKwotK3ZlY3Rvcl9zaWcgPSAnc3RkOjp2ZWN0b3InCi0r dmVjdG9yX3JlZ2V4ID0gcmUuY29tcGlsZSgnXicgKyB2ZWN0b3Jfc2lnICsgJzwuKj4kJykKLSsK LStjbGFzcyBGYWtlVmVjdG9yUHJpbnRlcjoKLSsgICAgIlByaW50IGEgc3RkOjp2ZWN0b3IiCi0r Ci0rICAgIGNsYXNzIF9pdGVyYXRvcjoKLSsgICAgICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgc3Rh cnQsIGZpbmlzaCk6Ci0rICAgICAgICAgICAgc2VsZi5pdGVtID0gc3RhcnQKLSsgICAgICAgICAg ICBzZWxmLmZpbmlzaCA9IGZpbmlzaAotKyAgICAgICAgICAgIHNlbGYuY291bnQgPSAwCi0rCi0r ICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0rICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSsK LSsgICAgICAgIGRlZiBuZXh0KHNlbGYpOgotKyAgICAgICAgICAgIGlmIHNlbGYuaXRlbSA9PSBz ZWxmLmZpbmlzaDoKLSsgICAgICAgICAgICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotKyAgICAg ICAgICAgIGNvdW50ID0gc2VsZi5jb3VudAotKyAgICAgICAgICAgIHNlbGYuY291bnQgPSBzZWxm LmNvdW50ICsgMQotKyAgICAgICAgICAgIGVsdCA9IHNlbGYuaXRlbS5kZXJlZmVyZW5jZSgpCi0r ICAgICAgICAgICAgc2VsZi5pdGVtID0gc2VsZi5pdGVtICsgMQotKyAgICAgICAgICAgIHJldHVy biAoJ1slZF0nICUgY291bnQsIGVsdCkKLSsKLSsgICAgZGVmIF9faW5pdF9fKHNlbGYsIHR5cGVu YW1lLCB2YWwpOgotKyAgICAgICAgc2VsZi50eXBlbmFtZSA9IHR5cGVuYW1lCi0rICAgICAgICBz ZWxmLnZhbCA9IHZhbAotKwotKyAgICBkZWYgY2hpbGRyZW4oc2VsZik6Ci0rICAgICAgICByZXR1 cm4gc2VsZi5faXRlcmF0b3Ioc2VsZi52YWxbJ19NX2ltcGwnXVsnX01fc3RhcnQnXSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZhbFsnX01faW1wbCddWydfTV9maW5pc2gn XSkKLSsKLSsgICAgZGVmIHRvX3N0cmluZyhzZWxmKToKLSsgICAgICAgIHN0YXJ0ID0gc2VsZi52 YWxbJ19NX2ltcGwnXVsnX01fc3RhcnQnXQotKyAgICAgICAgZmluaXNoID0gc2VsZi52YWxbJ19N X2ltcGwnXVsnX01fZmluaXNoJ10KLSsgICAgICAgIGVuZCA9IHNlbGYudmFsWydfTV9pbXBsJ11b J19NX2VuZF9vZl9zdG9yYWdlJ10KLSsgICAgICAgIHJldHVybiAoJ3N0ZDo6dmVjdG9yIG9mIGxl bmd0aCAlZCwgY2FwYWNpdHkgJWQnCi0rICAgICAgICAgICAgICAgICUgKGludCAoZmluaXNoIC0g c3RhcnQpLCBpbnQgKGVuZCAtIHN0YXJ0KSkpCi0rCi0rICAgIGRlZiBkaXNwbGF5X2hpbnQoc2Vs Zik6Ci0rICAgICAgICBpdHlwZTAgID0gc2VsZi52YWwudHlwZS50ZW1wbGF0ZV9hcmd1bWVudCgw KQotKyAgICAgICAgaXRhZyA9IGl0eXBlMC50YWcKLSsgICAgICAgIGlmIGl0YWcgYW5kIHJlLm1h dGNoKHZlY3Rvcl9yZWdleCwgaXRhZyk6Ci0rICAgICAgICAgICAgcmMgPSAnbWF0cml4JwotKyAg ICAgICAgZWxzZToKLSsgICAgICAgICAgICByYyA9ICdhcnJheScKLSsgICAgICAgIHJldHVybiBy YwotKwotK2RlZiByZWdpc3Rlcl9saWJzdGRjeHhfcHJpbnRlcnMgKG9iaik6Ci0rICAgICJSZWdp c3RlciBsaWJzdGRjKysgcHJldHR5LXByaW50ZXJzIHdpdGggb2JqZmlsZSBPYmouIgotKwotKyAg ICBpZiBvYmogPT0gTm9uZToKLSsgICAgICAgIG9iaiA9IGdkYgotKwotKyAgICBvYmoucHJldHR5 X3ByaW50ZXJzLmFwcGVuZCAobG9va3VwX2Z1bmN0aW9uKQotKwotK2RlZiBsb29rdXBfZnVuY3Rp b24gKHZhbCk6Ci0rICAgICJMb29rLXVwIGFuZCByZXR1cm4gYSBwcmV0dHktcHJpbnRlciB0aGF0 IGNhbiBwcmludCB2YWwuIgotKwotKyAgICAjIEdldCB0aGUgdHlwZS4KLSsgICAgdHlwZSA9IHZh bC50eXBlOwotKwotKyAgICAjIElmIGl0IHBvaW50cyB0byBhIHJlZmVyZW5jZSwgZ2V0IHRoZSBy ZWZlcmVuY2UuCi0rICAgIGlmIHR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX1JFRjoKLSsgICAg ICAgIHR5cGUgPSB0eXBlLnRhcmdldCAoKQotKwotKyAgICAjIEdldCB0aGUgdW5xdWFsaWZpZWQg dHlwZSwgc3RyaXBwZWQgb2YgdHlwZWRlZnMuCi0rICAgIHR5cGUgPSB0eXBlLnVucXVhbGlmaWVk ICgpLnN0cmlwX3R5cGVkZWZzICgpCi0rCi0rICAgICMgR2V0IHRoZSB0eXBlIG5hbWUuICAgIAot KyAgICB0eXBlbmFtZSA9IHR5cGUudGFnCi0rICAgIGlmIHR5cGVuYW1lID09IE5vbmU6Ci0rICAg ICAgICByZXR1cm4gTm9uZQotKwotKyAgICAjIEl0ZXJhdGUgb3ZlciBsb2NhbCBkaWN0aW9uYXJ5 IG9mIHR5cGVzIHRvIGRldGVybWluZQotKyAgICAjIGlmIGEgcHJpbnRlciBpcyByZWdpc3RlcmVk IGZvciB0aGF0IHR5cGUuICBSZXR1cm4gYW4KLSsgICAgIyBpbnN0YW50aWF0aW9uIG9mIHRoZSBw cmludGVyIGlmIGZvdW5kLgotKyAgICBmb3IgZnVuY3Rpb24gaW4gZmFrZV9wcmV0dHlfcHJpbnRl cnNfZGljdDoKLSsgICAgICAgIGlmIGZ1bmN0aW9uLnNlYXJjaCAodHlwZW5hbWUpOgotKyAgICAg ICAgICAgIHJldHVybiBmYWtlX3ByZXR0eV9wcmludGVyc19kaWN0W2Z1bmN0aW9uXSAodmFsKQot KyAgICAgICAgCi0rICAgICMgQ2Fubm90IGZpbmQgYSBwcmV0dHkgcHJpbnRlci4gIFJldHVybiBO b25lLgotKyAgICByZXR1cm4gTm9uZQotKwotK2RlZiBidWlsZF9saWJmYWtlY3h4X2RpY3Rpb25h cnkgKCk6Ci0rICAgIGZha2VfcHJldHR5X3ByaW50ZXJzX2RpY3RbdmVjdG9yX3JlZ2V4XSA9IGxh bWJkYSB2YWw6IEZha2VWZWN0b3JQcmludGVyKHZlY3Rvcl9zaWcsIHZhbCkKLSsKLStmYWtlX3By ZXR0eV9wcmludGVyc19kaWN0ID0ge30KLSsKLStidWlsZF9saWJmYWtlY3h4X2RpY3Rpb25hcnkg KCkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi92YWxwcmludC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxOC5vcmlnL2dkYi92YWxwcmludC5jCTIwMTEtMDItMTgg MTA6NDQ6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvdmFs cHJpbnQuYwkyMDExLTAyLTE4IDEwOjQ0OjMyLjAwMDAwMDAwMCArMDEwMAotQEAgLTg1LDcgKzg1 LDggQEAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgdXNlcl9wcmludF9vcAotICAgMSwJCQkJ Lyogc3RhdGljX2ZpZWxkX3ByaW50ICovCi0gICAxLAkJCQkvKiBwYXNjYWxfc3RhdGljX2ZpZWxk X3ByaW50ICovCi0gICAwLAkJCQkvKiByYXcgKi8KLS0gIDAJCQkJLyogc3VtbWFyeSAqLwotKyAg MCwJCQkJLyogc3VtbWFyeSAqLwotKyAgMAkJCQkvKiBwcmV0dHlwcmludF9tYXRyaXggKi8KLSB9 OwotIAotIC8qIEluaXRpYWxpemUgKk9QVFMgdG8gYmUgYSBjb3B5IG9mIHRoZSB1c2VyIHByaW50 IG9wdGlvbnMuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9m NS5wYXRjaCBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5wYXRjaAppbmRleCAzODEw ZmVjLi5kZmExMjJhIDEwMDY0NAotLS0gYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUu cGF0Y2gKKysrIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1LnBhdGNoCkBAIC03OCwx MSArNzgsMTEgQEAgZ2RiL3Rlc3RzdWl0ZS8KIAkqIGdkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFk cy5leHA6IE5ldyBmaWxlLgogCSogZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmM6IE5ldyBm aWxlLgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0xMi0xOSAwMToyNTo0 Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQu YwkyMDExLTEyLTE5IDAyOjE3OjA1LjQxMjYwNzczNSArMDEwMAotQEAgLTI4NDMsNiArMjg0Myw4 IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKKy0tLSBnZGItNy40 LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTItMDYtMDIgMjE6MzQ6NTEuOTk5 NTE3NTEwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtbmF0LmMJMjAx Mi0wNi0wMiAyMTozNTo1OS45MzA0OTE1NzcgKzAyMDAKK0BAIC0yODU2LDYgKzI4NTYsOCBAQCBz dG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCiAgICAgIHsKICAgICAgICBp bnQgc3RhdHVzOwogIApAQCAtOTEsNyArOTEsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvbGludXgtbmF0LmMKICAgICAgICBzdGF0dXMgPSB3YWl0X2x3cCAobHApOwogICAgICAg IGlmIChzdGF0dXMgPT0gMCkKICAJcmV0dXJuIDA7Ci1AQCAtMjg2OCwxMTAgKzI4NzAsNjEgQEAg c3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAorQEAgLTI4ODEsMTEwICsy ODgzLDYxIEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKICAKICAg ICAgICBpZiAoV1NUT1BTSUcgKHN0YXR1cykgIT0gU0lHU1RPUCkKICAJewpAQCAtMjI4LDcgKzIy OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuYwogKwogKwkg ICAgICByZWdpc3RlcnNfY2hhbmdlZCAoKTsKICsJICAgICAgbGludXhfb3BzLT50b19yZXN1bWUg KGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSksCi0rCQkJCSAgICAx LCBUQVJHRVRfU0lHTkFMXzApOworKwkJCQkgICAgMSwgR0RCX1NJR05BTF8wKTsKICsJICAgICAg aWYgKGRlYnVnX2xpbnV4X25hdCkKICsJCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywK ICsJCQkJICAgICJTV0M6ICVzICVzLCAwLCAwIChkaXNjYXJkIFNJR1NUT1ApXG4iLApAQCAtMjQ4 LDcgKzI0OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuYwog IAkgIGxwLT5zaWduYWxsZWQgPSAwOwogIAl9CiAgICAgIH0KLUBAIC0zNjI3LDU0ICszNTgwLDYg QEAgcmV0cnk6CitAQCAtMzYxNiw1NCArMzU2OSw2IEBAIHJldHJ5OgogIAlscCA9IE5VTEw7CiAg ICAgIH0KICAKQEAgLTI2OSw3ICsyNjksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvbGludXgtbmF0LmMKIC0gICAgICBpZiAobGludXhfbmF0X3ByZXBhcmVfdG9fcmVzdW1lICE9 IE5VTEwpCiAtCWxpbnV4X25hdF9wcmVwYXJlX3RvX3Jlc3VtZSAobHApOwogLSAgICAgIGxpbnV4 X29wcy0+dG9fcmVzdW1lIChsaW51eF9vcHMsIHBpZF90b19wdGlkIChHRVRfTFdQIChscC0+cHRp ZCkpLAotLQkJCSAgICBscC0+c3RlcCwgVEFSR0VUX1NJR05BTF8wKTsKKy0JCQkgICAgbHAtPnN0 ZXAsIEdEQl9TSUdOQUxfMCk7CiAtICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKIC0JZnByaW50 Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAogLQkJCSAgICAiTExXOiAlcyAlcywgMCwgMCAoZXhw ZWN0IFNJR1NUT1ApXG4iLApAQCAtMzAzLDEwICszMDMsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAgICBpZiAoIXRhcmdldF9jYW5fYXN5bmNfcCAoKSkK ICAgICAgewogICAgICAgIC8qIENhdXNlcyBTSUdJTlQgdG8gYmUgcGFzc2VkIG9uIHRvIHRoZSBh dHRhY2hlZCBwcm9jZXNzLiAgKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmMKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5m by10aHJlYWRzLmMJMjAxMS0xMi0xOSAwMjoxNjozNS4yMzY3MjAyNzIgKzAxMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRz LmMJMjAxMi0wNi0wMiAyMTozNTo0MC4yNjg0OTkwNjAgKzAyMDAKIEBAIC0wLDAgKzEsNDQ3IEBA CiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsK QEAgLTc1NSwxMCArNzU1LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmMKICsKICsgIHJldHVybiBFWElUX1NV Q0NFU1M7CiArfQotSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJl YWRzLmV4cAkyMDExLTEyLTE5IDAyOjE2OjM1LjIzNzcyMDI2OCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhw CTIwMTItMDYtMDIgMjE6MzU6NDAuMjk2NDk5MDUwICswMjAwCiBAQCAtMCwwICsxLDk0IEBACiAr IyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTg1 NCwxMCArODU0LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmV4cAogK30KICsKICtnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCBicmVhay1hdC1leGl0ICIuKmJyZWFrLWF0LWV4aXQuKiIKLUluZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRz LmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv c2lnc3RlcC10aHJlYWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmMJMjAxMS0xMi0xOSAwMjoxNjozNS4y Mzc3MjAyNjggKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmMJMjAxMi0wNi0wMiAyMTozNTo0MC4yOTc0OTkwNTAg KzAyMDAKIEBAIC0wLDAgKzEsNTQgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtOTEzLDEwICs5MTMsMTAgQEAgSW5kZXg6IGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMu YwogKyAgc3RhcnQgKE5VTEwpOwkvKiBtYWluLXN0YXJ0ICovCiArICByZXR1cm4gMDsKICt9Ci1J bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0 ZXAtdGhyZWFkcy5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuNTAuMjAx MTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuZXhwCTIwMTEt MTItMTkgMDI6MTY6MzUuMjM3NzIwMjY4ICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAJMjAxMi0wNi0wMiAy MTozNTo0MC4yOTc0OTkwNTAgKzAyMDAKIEBAIC0wLDAgKzEsNzQgQEAKICsjIENvcHlyaWdodCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi1i ejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaCBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxv c3QtNW9mNS5wYXRjaAppbmRleCA4ZjRlNDQwLi5iOWZlMThmIDEwMDY0NAotLS0gYS9nZGItYno1 OTIwMzEtc2lnaW5mby1sb3N0LTVvZjUucGF0Y2gKKysrIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8t bG9zdC01b2Y1LnBhdGNoCkBAIC0yNiwxOSArMjYsMTkgQEAgZ2RiLwogCShsaW51eF9uYXRfc2V0 X3NpZ2luZm9fZml4dXApOiBVc2UgUFRSQUNFX0dFVFNJR0lORk8uCiAJKiBsaW51eC1uYXQuaCAo c3RydWN0IGx3cF9pbmZvKSA8c2lnaW5mbz46IFJlbW92ZS4KIAotSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv bGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2Ri L2xpbnV4LW5hdC5jCTIwMTEtMTItMTkgMDI6MTc6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMJMjAxMS0xMi0xOSAwMjoxNzo0My4xODg0 NjY4NTQgKzAxMDAKLUBAIC0xODgzLDcgKzE4ODMsNiBAQCByZXN1bWVfbHdwIChzdHJ1Y3QgbHdw X2luZm8gKmxwLCBpbnQgc3RlCi0gCQkJCXN0ZXAsIFRBUkdFVF9TSUdOQUxfMCk7CistLS0gZ2Ri LTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2LTAyIDIxOjM2OjIx LjA2NzQ4MzQ2NiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5j CTIwMTItMDYtMDIgMjE6Mzc6NTUuMzQ1NDQ3NDAyICswMjAwCitAQCAtMTkyOSw3ICsxOTI5LDYg QEAgcmVzdW1lX2x3cCAoc3RydWN0IGx3cF9pbmZvICpscCwgaW50IHN0ZQorIAkJCQlzdGVwLCBH REJfU0lHTkFMXzApOwogIAkgIGxwLT5zdG9wcGVkID0gMDsKICAJICBscC0+c3RlcCA9IHN0ZXA7 CiAtCSAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKICAJ ICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAJfQogICAgICAgIGVsc2UKLUBAIC0y MDI3LDcgKzIwMjYsNiBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3Bz CitAQCAtMjA3MSw3ICsyMDcwLDYgQEAgbGludXhfbmF0X3Jlc3VtZSAoc3RydWN0IHRhcmdldF9v cHMgKm9wcwogICAgaWYgKGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jlc3VtZSAhPSBOVUxMKQogICAg ICBsaW51eF9uYXRfcHJlcGFyZV90b19yZXN1bWUgKGxwKTsKICAgIGxpbnV4X29wcy0+dG9fcmVz dW1lIChsaW51eF9vcHMsIHB0aWQsIHN0ZXAsIHNpZ25vKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAgICBscC0+c3RvcHBlZF9i eV93YXRjaHBvaW50ID0gMDsKICAKICAgIGlmIChkZWJ1Z19saW51eF9uYXQpCi1AQCAtMjYxMiwy MiArMjYxMCw2IEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmxwKQorQEAgLTI2MjUsMjIg KzI2MjMsNiBAQCB3YWl0X2x3cCAoc3RydWN0IGx3cF9pbmZvICpscCkKICAgIHJldHVybiBzdGF0 dXM7CiAgfQogIApAQCAtNjksNyArNjksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvbGludXgtbmF0LmMKICAvKiBTZW5kIGEgU0lHU1RPUCB0byBMUC4gICovCiAgCiAgc3RhdGlj IGludAotQEAgLTI4NzIsOSArMjg1NCw2IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3 cF9pbmZvICpscCwKK0BAIC0yODg1LDkgKzI4NjcsNiBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0 cnVjdCBsd3BfaW5mbyAqbHAsCiAgCXsKICAJICAvKiBUaGUgdGhyZWFkIHdhcyBzdG9wcGVkIHdp dGggYSBzaWduYWwgb3RoZXIgdGhhbiBTSUdTVE9QLiAgKi8KICAKQEAgLTc5LDcgKzc5LDcgQEAg SW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiAgCSAgc2F2ZV9zaWd0 cmFwIChscCk7CiAgCiAgCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0zMjc4LDEyICszMjU3 LDcgQEAgbGludXhfbmF0X2ZpbHRlcl9ldmVudCAoaW50IGx3cGlkLCBpbnQgcworQEAgLTMyOTEs MTIgKzMyNzAsNyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBzCiAg ICAgIH0KICAKICAgIGlmIChsaW51eF9uYXRfc3RhdHVzX2lzX2V2ZW50IChzdGF0dXMpKQpAQCAt OTMsMjAgKzkzLDIwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQu YwogIAogICAgLyogQ2hlY2sgaWYgdGhlIHRocmVhZCBoYXMgZXhpdGVkLiAgKi8KICAgIGlmICgo V0lGRVhJVEVEIChzdGF0dXMpIHx8IFdJRlNJR05BTEVEIChzdGF0dXMpKQotQEAgLTM5NjEsNyAr MzkzNSw2IEBAIHJlc3VtZV9zdG9wcGVkX3Jlc3VtZWRfbHdwcyAoc3RydWN0IGx3cF8KK0BAIC0z OTUwLDcgKzM5MjQsNiBAQCByZXN1bWVfc3RvcHBlZF9yZXN1bWVkX2x3cHMgKHN0cnVjdCBsd3Bf CiAgICAgICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdF VF9MV1AgKGxwLT5wdGlkKSksCi0gCQkJICAgIGxwLT5zdGVwLCBUQVJHRVRfU0lHTkFMXzApOwor IAkJCSAgICBscC0+c3RlcCwgR0RCX1NJR05BTF8wKTsKICAgICAgICBscC0+c3RvcHBlZCA9IDA7 CiAtICAgICAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsK ICAgICAgICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAgfQogIAotQEAgLTYw MjksMTEgKzYwMDIsMTkgQEAgbGludXhfbmF0X3NldF9wcmVwYXJlX3RvX3Jlc3VtZSAoc3RydWN0 Ci0gc3RydWN0IHNpZ2luZm8gKgorQEAgLTUyMjcsMTEgKzUyMDAsMTkgQEAgbGludXhfbmF0X3Nl dF9wcmVwYXJlX3RvX3Jlc3VtZSAoc3RydWN0Cisgc2lnaW5mb190ICoKICBsaW51eF9uYXRfZ2V0 X3NpZ2luZm8gKHB0aWRfdCBwdGlkKQogIHsKIC0gIHN0cnVjdCBsd3BfaW5mbyAqbHAgPSBmaW5k X2x3cF9waWQgKHB0aWQpOwotKyAgc3RhdGljIHN0cnVjdCBzaWdpbmZvIHNpZ2luZm87CisrICBz dGF0aWMgc2lnaW5mb190IHNpZ2luZm87CiArICBpbnQgcGlkOwogIAogLSAgZ2RiX2Fzc2VydCAo bHAgIT0gTlVMTCk7CkBAIC0xMjQsMTcgKzEyNCwxNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvbGludXgtbmF0LmMKICB9CiAgCiAgLyogUHJvdmlkZSBhIHByb3RvdHlwZSB0byBz aWxlbmNlIC1XbWlzc2luZy1wcm90b3R5cGVzLiAgKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi9saW51eC1uYXQuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4 LW5hdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51 eC1uYXQuaAkyMDExLTEyLTE4IDIzOjQwOjU5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMTItMTkgMDI6MTc6MjEuMzU1NTQ4Mjc2 ICswMTAwCi1AQCAtNzcsMTAgKzc3LDYgQEAgc3RydWN0IGx3cF9pbmZvCistLS0gZ2RiLTcuNC41 MC4yMDEyMDYwMi5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDEyLTA2LTAyIDIxOjM2OjIxLjA2NzQ4 MzQ2NiArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2xpbnV4LW5hdC5oCTIwMTIt MDYtMDIgMjE6MzY6MjcuMTQwNDgxMTQ0ICswMjAwCitAQCAtNzYsMTAgKzc2LDYgQEAgc3RydWN0 IGx3cF9pbmZvCiAgICAvKiBUaGUga2luZCBvZiBzdGVwcGluZyBvZiB0aGlzIExXUC4gICovCiAg ICBlbnVtIHJlc3VtZV9zdGVwIHN0ZXA7CiAgCiAtICAvKiBOb24temVybyBzaV9zaWdubyBpZiB0 aGlzIExXUCBzdG9wcGVkIHdpdGggYSB0cmFwLiAgc2lfYWRkciBtYXkKIC0gICAgIGJlIHRoZSBh ZGRyZXNzIG9mIGEgaGFyZHdhcmUgd2F0Y2hwb2ludC4gICovCi0tICBzdHJ1Y3Qgc2lnaW5mbyBz aWdpbmZvOworLSAgc2lnaW5mb190IHNpZ2luZm87CiAtCiAgICAvKiBTVE9QUEVEX0JZX1dBVENI UE9JTlQgaXMgbm9uLXplcm8gaWYgdGhpcyBMV1Agc3RvcHBlZCB3aXRoIGEgZGF0YQogICAgICAg d2F0Y2hwb2ludCB0cmFwLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItZGVqYWdudS1nby5wYXRjaCBi L2dkYi1kZWphZ251LWdvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmRkYWMwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItZGVqYWdudS1nby5wYXRjaApAQCAtMCww ICsxLDQyIEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNi9t c2cwMDA1MC5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIGRlamFnbnUgY29tcGF0LiAtIG1pc3Npbmcg ZmluZF9nb19saW5rZXIgIFtSZTogW3BhdGNoLCBkb2MgUkZBXSBHbyBsYW5ndWFnZSBzdXBwb3J0 XQorCitPbiBXZWQsIDI1IEFwciAyMDEyIDA0OjE3OjM1ICswMjAwLCBEb3VnIEV2YW5zIHdyb3Rl OgorPiAraWYge1tpbmZvIHByb2NzIGZpbmRfZ29fbGlua2VyXSA9PSAiIn0geworPiArICAgIHJl bmFtZSBnZGJfZmluZF9nbyBmaW5kX2dvCis+ICsgICAgcmVuYW1lIGdkYl9maW5kX2dvX2xpbmtl ciBmaW5kX2dvX2xpbmtlcgorPiArICAgICMgTm8gbmVlZCB0byBzZXQgdXNlX2dkYl9jb21waWxl LgorPiArfQorCitJcyB0aGVyZSBhIHJlYXNvbiBmb3IgaXQ/ICBXaXRoIHJlY2VudCBGZWRvcmEg MTcgdXBkYXRlCisJaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02 MzU2NTEKKworZGVqYWdudSBoYXMgc3RhcnRlZCB0byBzdXBwb3J0ICdmaW5kX2dmb3J0cmFuJy4g IEJ1dCBpdCBzdGlsbCBkb2VzIG5vdCBzdXBwb3J0CisnZmluZF9nb19saW5rZXInLiAgVGhpcyBo YXMgcmVzdWx0ZWQgaW4gcmVncmVzc2lvbiBmYWlsaW5nIHRvIGNvbXBpbGUgYW55CitnZGIuZ28v Ki5leHAgZmlsZXMuCisKKworVGhhbmtzLAorSmFuCisKKworZ2RiL3Rlc3RzdWl0ZS8KKzIwMTIt MDYtMDIgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKworCSog bGliL2Z1dHVyZS5leHA6IFNldCAkdXNlX2dkYl9jb21waWxlIGV2ZW4gaWYgb25seSBmaW5kX2dv X2xpbmtlciBpcworCW1pc3NpbmcuCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9m dXR1cmUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZnV0dXJlLmV4cAoraW5kZXggNDA0NTZjMC4u YmY0Nzk4OCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2Z1dHVyZS5leHAKKysrKyBi L2dkYi90ZXN0c3VpdGUvbGliL2Z1dHVyZS5leHAKK0BAIC01MTQsNyArNTE0LDcgQEAgaWYge1tp bmZvIHByb2NzIGZpbmRfZ2ZvcnRyYW5dID09ICIifSB7CisgaWYge1tpbmZvIHByb2NzIGZpbmRf Z29fbGlua2VyXSA9PSAiIn0geworICAgICByZW5hbWUgZ2RiX2ZpbmRfZ28gZmluZF9nbworICAg ICByZW5hbWUgZ2RiX2ZpbmRfZ29fbGlua2VyIGZpbmRfZ29fbGlua2VyCistICAgICMgTm8gbmVl ZCB0byBzZXQgdXNlX2dkYl9jb21waWxlLgorKyAgICBzZXQgdXNlX2dkYl9jb21waWxlIDEKKyB9 CisgCisgaWYgeyR1c2VfZ2RiX2NvbXBpbGV9IHsKKwoKZGlmZiAtLWdpdCBhL2dkYi1kaWUtY3Ut b2Zmc2V0LTFvZjIucGF0Y2ggYi9nZGItZGllLWN1LW9mZnNldC0xb2YyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjBlOTFmLi4wMDAwMDAwCi0tLSBhL2dkYi1kaWUtY3Ut b2Zmc2V0LTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1bY29tbWl0 XSBbcGF0Y2hdIEZpeCBDVSByZWxhdGl2ZSB2cy4gYWJzb2x1dGUgb2Zmc2V0cyBbUmU6IFJGQzog cHJvYmxlbSB3aXRoIERXX09QX0dOVV9kZXJlZl90eXBlIGFuZCBkd2FyZidzIGdldF9iYXNlX3R5 cGUgY2FsbGJhY2tdCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0w My9tc2cwMDI4NC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAz L21zZzAwMTM0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMDggMTk6MDg6 MDkJMS4xMzk3OQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDMvMDggMTk6Mzc6MDQJMS4x Mzk4MAotIyMgLTEsNSArMSwxNSBAQAotIDIwMTItMDMtMDggIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJRml4IENVIHJlbGF0aXZlIHZzLiBhYnNvbHV0 ZSBESUUgb2Zmc2V0cy4KLSsJKiBkd2FyZjJsb2MuaCAoZHdhcmYyX2ZldGNoX2RpZV9sb2NhdGlv bl9ibG9jayk6IFJlbmFtZSBwYXJhbWV0ZXIKLSsJb2Zmc2V0IHRvIG9mZnNldF9pbl9jdS4KLSsJ KiBkd2FyZjJyZWFkLmMgKHByb2Nlc3NfZW51bWVyYXRpb25fc2NvcGUpOiBBZGQgQ1Ugb2Zmc2V0 IHRvCi0rCVRZUEVfT0ZGU0VULgotKwkoZHdhcmYyX2ZldGNoX2RpZV9sb2NhdGlvbl9ibG9jayk6 IFJlbmFtZSBwYXJhbWV0ZXIgb2Zmc2V0IHRvCi0rCW9mZnNldF9pbl9jdS4gIE5ldyB2YXJpYWJs ZSBvZmZzZXQsIGFkZCBDVSBvZmZzZXQgdG8gT0ZGU0VUX0lOX0NVLgotKwotKzIwMTItMDMtMDgg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJKiBsaWJ1 bndpbmQtZnJhbWUuYzogUmVuYW1lIHRvIC4uLgotIAkqIGlhNjQtbGlidW53aW5kLXRkZXAuYzog Li4uIGhlcmUuCi0gCSogbGlidW53aW5kLWZyYW1lLmg6IFJlbmFtZSB0byAuLi4KLS0tLSBzcmMv Z2RiL2R3YXJmMmxvYy5oCTIwMTIvMDEvMDUgMjE6NTM6MTQJMS4yOQotKysrIHNyYy9nZGIvZHdh cmYybG9jLmgJMjAxMi8wMy8wOCAxOTozNzowNwkxLjMwCi1AQCAtNjEsNyArNjEsNyBAQAotICAg IENPUkVfQUREUiBwYyk7Ci0gCi0gc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uIGR3YXJmMl9m ZXRjaF9kaWVfbG9jYXRpb25fYmxvY2sKLS0gICh1bnNpZ25lZCBpbnQgb2Zmc2V0LCBzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCi0rICAodW5zaWduZWQgaW50IG9mZnNldF9pbl9j dSwgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotICAgIENPUkVfQUREUiAoKmdl dF9mcmFtZV9wYykgKHZvaWQgKmJhdG9uKSwKLSAgICB2b2lkICpiYXRvbik7Ci0gCi0tLS0gc3Jj L2dkYi9kd2FyZjJyZWFkLmMJMjAxMi8wMy8wNiAyMzo0MTo1MAkxLjYxOQotKysrIHNyYy9nZGIv ZHdhcmYycmVhZC5jCTIwMTIvMDMvMDggMTk6Mzc6MDcJMS42MjAKLUBAIC04MDMxLDcgKzgwMzEs OCBAQAotIAk9IGxvb2t1cF9zaWduYXR1cmVkX3R5cGVfYXRfb2Zmc2V0IChkd2FyZjJfcGVyX29i amZpbGUtPm9iamZpbGUsCi0gCQkJCQkgICAgY3UtPnBlcl9jdS0+ZGVidWdfdHlwZXNfc2VjdGlv biwKLSAJCQkJCSAgICBjdS0+cGVyX2N1LT5vZmZzZXQpOwotLSAgICAgIGlmICh0eXBlX3NpZy0+ dHlwZV9vZmZzZXQgIT0gZGllLT5vZmZzZXQpCi0rICAgICAgaWYgKHR5cGVfc2lnLT5wZXJfY3Uu b2Zmc2V0ICsgdHlwZV9zaWctPnR5cGVfb2Zmc2V0Ci0rCSAgIT0gZGllLT5vZmZzZXQpCi0gCXJl dHVybjsKLSAgICAgfQotIAotQEAgLTE0MjAyLDExICsxNDIwMywxMiBAQAotICAgIGR3YXJmMl9s b2NleHByX2JhdG9uLT5kYXRhIGhhcyBsaWZldGltZSBvZiBQRVJfQ1UtPk9CSkZJTEUuICAqLwot IAotIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbgotLWR3YXJmMl9mZXRjaF9kaWVfbG9jYXRp b25fYmxvY2sgKHVuc2lnbmVkIGludCBvZmZzZXQsCi0rZHdhcmYyX2ZldGNoX2RpZV9sb2NhdGlv bl9ibG9jayAodW5zaWduZWQgaW50IG9mZnNldF9pbl9jdSwKLSAJCQkJIHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnBlcl9jdSwKLSAJCQkJIENPUkVfQUREUiAoKmdldF9mcmFtZV9wYykgKHZv aWQgKmJhdG9uKSwKLSAJCQkJIHZvaWQgKmJhdG9uKQotIHsKLSsgIHVuc2lnbmVkIGludCBvZmZz ZXQgPSBwZXJfY3UtPm9mZnNldCArIG9mZnNldF9pbl9jdTsKLSAgIHN0cnVjdCBkd2FyZjJfY3Ug KmN1OwotICAgc3RydWN0IGRpZV9pbmZvICpkaWU7Ci0gICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy OwotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzAzLzA4IDA3OjQyOjUwCTEu MzEyNwotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzAzLzA4IDE5OjM3OjA3 CTEuMzEyOAotIyMgLTEsNSArMSwxMSBAQAotIDIwMTItMDMtMDggIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAKLSsJRml4IENVIHJlbGF0aXZlIHZzLiBhYnNv bHV0ZSBESUUgb2Zmc2V0cy4KLSsJKiBnZGIuZHdhcmYyL2R3Mi1vcC1jYWxsLlM6IE5ldyBjb21w aWxhdGlvbiB1bml0IHByZWNlZGluZyB0aGUgZXhpc3RpbmcKLSsJb25lLgotKwotKzIwMTItMDMt MDggIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSAJRml4 IGZhbHNlIEZBSUwgb24gZGlzdHJvcyB3aXRoIHJlbHJvIGxpbmthZ2UgYXMgZGVmYXVsdC4KLSAJ KiBnZGIucmV2ZXJzZS9zb2xpYi1wcmVjc2F2ZS5leHA6IFRyeSB0byBjb21waWxlIHRoZSB0ZXN0 IHVzaW5nCi0gCS1XbCwteixub3JlbHJvIGZpcnN0LgotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLW9wLWNhbGwuUwkyMDEyLzAxLzA0IDA4OjE3OjUxCTEuNQotKysrIHNyYy9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLW9wLWNhbGwuUwkyMDEyLzAzLzA4IDE5OjM3OjA4 CTEuNgotQEAgLTIzLDYgKzIzLDIzIEBACi0gYXJyYXkzOgkuMmJ5dGUJMwotIAotIAkuc2VjdGlv biAuZGVidWdfaW5mbwotKy5MY3UwX2JlZ2luOgotKwkvKiBDVSBoZWFkZXIgKi8KLSsJLjRieXRl CS5MY3UwX2VuZCAtIC5MY3UwX3N0YXJ0CQkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAq LwotKy5MY3UwX3N0YXJ0OgotKwkuMmJ5dGUJMgkJCQkvKiBEV0FSRiBWZXJzaW9uICovCi0rCS40 Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBhYmJyZXYgc2VjdGlvbiAqLwot KwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLwotKwotKwkvKiBDVSBkaWUgKi8KLSsJLnVs ZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmFzY2lpCSJm aWxlMC50eHRcMCIJCQkvKiBEV19BVF9uYW1lICovCi0rCS5hc2NpaQkiR05VIEMgMy4zLjNcMCIJ CQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkuYnl0ZQkyCQkJCS8qIERXX0xBTkdfQyAoQykgKi8K LSsKLSsJLmJ5dGUJMAkJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KLSsuTGN1MF9lbmQ6 Ci0rCi0gLkxjdTFfYmVnaW46Ci0gCS8qIENVIGhlYWRlciAqLwotIAkuNGJ5dGUJLkxjdTFfZW5k IC0gLkxjdTFfc3RhcnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCgpkaWZmIC0t Z2l0IGEvZ2RiLWRpZS1jdS1vZmZzZXQtMm9mMi5wYXRjaCBiL2dkYi1kaWUtY3Utb2Zmc2V0LTJv ZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NzA4OGMuLjAwMDAwMDAK LS0tIGEvZ2RiLWRpZS1jdS1vZmZzZXQtMm9mMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2 ICswLDAgQEAKLVJGQzogcHJvYmxlbSB3aXRoIERXX09QX0dOVV9kZXJlZl90eXBlIGFuZCBkd2Fy ZidzIGdldF9iYXNlX3R5cGUgY2FsbGJhY2sKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEyLTAzL21zZzAwMTY2Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItY3ZzLzIwMTItMDMvbXNnMDAxMTguaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAx Mi8wMy8wNiAyMjo0ODo0OQkxLjEzOTY4Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMy8w NiAyMzo0MTo0NwkxLjEzOTY5Ci0jIyAtMSwzICsxLDggQEAKLSsyMDEyLTAzLTA2ICBKb2VsIEJy b2JlY2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KLSsKLSsJKiBkd2FyZjJyZWFkLmMgKGR3 YXJmMl9nZXRfZGllX3R5cGUpOiBQYXNzIGFic29sdXRlIG9mZnNldAotKwlpbiBjYWxsIHRvIGdl dF9kaWVfdHlwZV9hdF9vZmZzZXQuCi0rCi0gMjAxMi0wMy0wNiAgU3RhbiBTaGVicyAgPHN0YW5A Y29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBtaS9taS1jbWQtYnJlYWsuYzogRW5mb3JjZSBjb2Rp bmcgc3RhbmRhcmRzLCBmaXggY29tbWVudHMuCi0tLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAx Mi8wMy8wMiAwMTo1NToxNQkxLjYxOAotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTIvMDMv MDYgMjM6NDE6NTAJMS42MTkKLUBAIC0xNDI2OSw3ICsxNDI2OSw3IEBACi0gCQkgICAgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSB7Ci0gICBkdzJfc2V0dXAgKHBlcl9jdS0+ b2JqZmlsZSk7Ci0tICByZXR1cm4gZ2V0X2RpZV90eXBlX2F0X29mZnNldCAoZGllX29mZnNldCwg cGVyX2N1KTsKLSsgIHJldHVybiBnZXRfZGllX3R5cGVfYXRfb2Zmc2V0IChwZXJfY3UtPm9mZnNl dCArIGRpZV9vZmZzZXQsIHBlcl9jdSk7Ci0gfQotIAotIC8qIEZvbGxvdyB0aGUgc2lnbmF0dXJl IGF0dHJpYnV0ZSBBVFRSIGluIFNSQ19ESUUuCgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Blbi1zdGFw LXByb2JlLXRlc3QucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVzdC5wYXRjaAppbmRl eCA5OWNiNjJmLi5iZTVlNzZmIDEwMDY0NAotLS0gYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVz dC5wYXRjaAorKysgYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtdGVzdC5wYXRjaApAQCAtNCwxMCAr NCwxMCBAQCBEYXRlOiAgIE1vbiBBdWcgOCAxMjowODo1MyAyMDExICswMjAwCiAKICAgICArdGVz dGNhc2UKIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4t bGlicHRocmVhZC1saWIuYwkyMDExLTA4LTEwIDE4OjMwOjU2LjAwMDAwMDAwMCArMDIwMAorKysr IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGli cHRocmVhZC1saWIuYwkyMDEyLTA2LTAyIDIwOjAzOjQyLjcxMTM5Mzc3NiArMDIwMAogQEAgLTAs MCArMSw0MCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCiArCkBAIC00OSwxMCArNDksMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC1saWIuYwogKyAgaSA9 IHB0aHJlYWRfam9pbiAodCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7CiArfQotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGli cHRocmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxpYnB0aHJlYWQuYwkyMDExLTA4LTEw IDE4OjMwOjU2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5jCTIwMTItMDYtMDIgMjA6MDM6 NDIuNzEyMzkzNzc1ICswMjAwCiBAQCAtMCwwICsxLDQ2IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTEwMCwxMCArMTAwLDEwIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxv cGVuLWxpYnB0aHJlYWQuYwogKwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAK K0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxv cGVuLWxpYnB0aHJlYWQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL2Rsb3Blbi1saWJwdGhyZWFkLmV4cAkyMDExLTA4LTEwIDE4OjMw OjU2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy9kbG9wZW4tbGlicHRocmVhZC5leHAJMjAxMi0wNi0wMiAyMDowMzo0Mi43 MjQzOTM3NzEgKzAyMDAKIEBAIC0wLDAgKzEsNzQgQEAKICsjIENvcHlyaWdodCAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyMKQEAgLTE3OSwxMSArMTc5LDExIEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvZGxvcGVuLWxp YnB0aHJlYWQuZXhwCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdGlmeSIgIi4qIG5v dGlmeS1oZXJlIC4qIgogKwogK2dkYl90ZXN0ICJpbmZvIHNoYXJlZGxpYnJhcnkiIHsvbGlicHRo cmVhZFwuc28uKn0gImxpYnB0aHJlYWQuc28gZm91bmQiCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wOC0xMCAxODozMDo1 NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAJMjAxMS0wOC0xMCAxODozMDo1Ni4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNTYz LDMwICszNTYzLDQ5IEBAIHByb2MgYnVpbGRfZXhlY3V0YWJsZSB7IHRlc3RuYW1lIGV4ZWN1dGEK Ky0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAky MDEyLTA2LTAyIDE5OjExOjU2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEyLTA2LTAyIDIwOjAzOjQyLjcyNzM5Mzc3 MCArMDIwMAorQEAgLTM2OTMsMzAgKzM2OTMsNDkgQEAgcHJvYyBidWlsZF9leGVjdXRhYmxlIHsg dGVzdG5hbWUgZXhlY3V0YQogICAgICAgICAgc2V0IHNvdXJjZXMgJHtleGVjdXRhYmxlfS5jCiAg ICAgIH0KICAKQEAgLTI1MCwxMCArMjUwLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJuIDAKICB9CiAgCi1JbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhw CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1 cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90 ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMS0wMS0wMSAxNjozMzo1Mi4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL3By ZWxpbmstc3VwcG9ydC5leHAJMjAxMS0wOC0xMCAxOToyNTo0MS4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBw b3J0LmV4cAkyMDEyLTAxLTA0IDA5OjI3OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMjA2MDIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTA2 LTAyIDIwOjAzOjQyLjczMzM5Mzc2OCArMDIwMAogQEAgLTk1LDggKzk1LDkgQEAgcHJvYyBmaWxl X2NvcHkge3NyYyBkZXN0fSB7CiAgIyBXcmFwIGZ1bmN0aW9uIGJ1aWxkX2V4ZWN1dGFibGUgc28g dGhhdCB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgaXMgZnVsbHkKICAjIHNlbGYtc3VmZmljaWVu dCAod2l0aG91dCBkZXBlbmRlbmNpZXMgb24gc3lzdGVtIGxpYnJhcmllcykuICBQYXJhbWV0ZXIK QEAgLTMwNiwxMSArMzA2LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0 c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKICAgICAgcmV0dXJuICRwcmVsaW5rX2FyZ3MK ICB9CiAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2JyZWFrLWludGVycC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAx MS0wNy0wMSAyMToxMjoxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDExLTA4LTEwIDE4OjMy OjIxLjAwMDAwMDAwMCArMDIwMAotQEAgLTEwOCwxNCArMTA4LDIxIEBAIHByb2Mgc3RyaXBfZGVi dWcge2Rlc3R9IHsKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTItMDItMjQgMTU6MDk6MDguMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC5leHAJMjAxMi0wNi0wMiAyMDowNDo1Ni4xMzUzNjk2ODcgKzAyMDAKK0BAIC0xMDks MTQgKzEwOSwyMSBAQCBwcm9jIHN0cmlwX2RlYnVnIHtkZXN0fSB7CiAgICAgIH0KICB9CiAgCkBA IC0zMzQsNyArMzM0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiAgCWdkYl90ZXN0X25vX291dHB1dCAic2V0IHN0 b3Atb24tc29saWItZXZlbnRzIDEiCiAgICAgIH0gZWxzZWlmIHshIFtnZGJfYnJlYWtwb2ludCAk ZnVuYyBhbGxvdy1wZW5kaW5nXX0gewogIAlyZXR1cm4KLUBAIC0xNDEsMjEgKzE0NywyMSBAQCBw cm9jIHJlYWNoXzEge2Z1bmMgY29tbWFuZCBkaXNwbGFjZW1lbnR9CitAQCAtMTQyLDIxICsxNDks MjEgQEAgcHJvYyByZWFjaF8xIHtmdW5jIGNvbW1hbmQgZGlzcGxhY2VtZW50fQogIAkgICAgZXhw X2NvbnRpbnVlCiAgCX0KICAJLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBcXC4/KF9fR0lfKT8k ZnVuYyBcXCguKlxcKSBhdCAuKjpcWzAtOVxdK1xyXG4uKiRnZGJfcHJvbXB0ICQiIHsKQEAgLTM1 MywxMyArMzUzLDEzIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogIAkJcGFzcyAkdGVzdAogIAkgICAgfQogIAl9Ci0g CS1yZSAiU3RvcHBlZCBkdWUgdG8gc2hhcmVkIGxpYnJhcnkgZXZlbnRcclxuJGdkYl9wcm9tcHQg JCIgeworIAktcmUgIlN0b3BwZWQgZHVlIHRvIChzcHVyaW91cyApP3NoYXJlZCBsaWJyYXJ5IGV2 ZW50LipcclxuJGdkYl9wcm9tcHQgJCIgewogLQkgICAgaWYgeyRmdW5jID09ICJfZGxfZGVidWdf c3RhdGUifSB7CiArCSAgICBpZiB7JGZ1bmMgPT0gJHNvbGliX2JwfSB7CiAgCQlpZiB7JGRlYnVn X3N0YXRlX2NvdW50ID09IDB9IHsKICAJCSAgICAjIEZpcnN0IHN0b3AgZG9lcyBub3QgeWV0IHJl bG9jYXRlIHRoZSBfc3RhcnQgZnVuY3Rpb24KICAJCSAgICAjIGRlc2NyaXB0b3Igb24gcHBjNjQu Ci1AQCAtMTc0LDcgKzE4MCw3IEBAIHByb2MgcmVhY2hfMSB7ZnVuYyBjb21tYW5kIGRpc3BsYWNl bWVudH0KK0BAIC0xNzUsNyArMTgyLDcgQEAgcHJvYyByZWFjaF8xIHtmdW5jIGNvbW1hbmQgZGlz cGxhY2VtZW50fQogIAlmYWlsICR0ZXN0X2Rpc3BsYWNlbWVudAogICAgICB9CiAgCkBAIC0zNjgs NyArMzY4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9icmVhay1pbnRlcnAuZXhwCiAgCWdkYl90ZXN0X25vX291dHB1dCAic2V0IHN0b3Atb24t c29saWItZXZlbnRzIDAiCiAgICAgIH0KICB9Ci1AQCAtMzczLDcgKzM3OSw3IEBAIHByb2MgdGVz dF9hdHRhY2gge2ZpbGUgZGlzcGxhY2VtZW50IHtyZWwKK0BAIC0zNTcsNyArMzY0LDcgQEAgcHJv YyB0ZXN0X2F0dGFjaCB7ZmlsZSBkaXNwbGFjZW1lbnQge3JlbAogIH0KICAKICBwcm9jIHRlc3Rf bGQge2ZpbGUgaWZtYWluIHRyeW5vc3ltIGRpc3BsYWNlbWVudH0gewpAQCAtMzc3LDcgKzM3Nyw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJl YWstaW50ZXJwLmV4cAogIAogICAgICAjIEZpcnN0IHRlc3Qgbm9ybWFsIGBmaWxlJy1jb21tYW5k IGxvYWRlZCAkRklMRSB3aXRoIHN5bWJvbHMuCiAgCi1AQCAtNDAxLDkgKzQwNyw5IEBAIHByb2Mg dGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKK0BAIC0zODUsOSArMzkyLDkgQEAg cHJvYyB0ZXN0X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bSBkaXNwbAogIAlnZGJfdGVzdF9ub19v dXRwdXQgInNldCBhcmdzICR7b2JqZGlyfS8ke3N1YmRpcn0vJGJpbmZpbGVfdGVzdCIgInNldCBh cmdzIE9CSkRJUi8ke3N1YmRpcn0vJGJpbmZpbGVfdGVzdCIKICAgICAgfQogIApAQCAtMzg5LDcg KzM4OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYnJlYWstaW50ZXJwLmV4cAogIAogICAgICBpZiAkaWZtYWluIHsKICAJcmVhY2ggIm1haW4i IGNvbnRpbnVlICJOT05FIgotQEAgLTQxNSw3ICs0MjEsNyBAQCBwcm9jIHRlc3RfbGQge2ZpbGUg aWZtYWluIHRyeW5vc3ltIGRpc3BsCitAQCAtMzk5LDcgKzQwNiw3IEBAIHByb2MgdGVzdF9sZCB7 ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKICAKICAgICAgIyBUcnkgcmUtcnVuIGlmIHRoZSBu ZXcgUElFIGRpc3BsYWNlbWVudCB0YWtlcyBlZmZlY3QuCiAgICAgIGdkYl90ZXN0ICJraWxsIiAi IiAia2lsbCIge0tpbGwgdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWRcPyBcKHkgb3IgblwpIH0g InkiCkBAIC0zOTgsMTIgKzM5OCwxMiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKICAKICAgICAgaWYgJGlmbWFpbiB7 CiAgCXRlc3RfY29yZSAkZmlsZSAkZGlzcGxhY2VtZW50Ci1AQCAtNDQ4LDcgKzQ1NCw3IEBAIHBy b2MgdGVzdF9sZCB7ZmlsZSBpZm1haW4gdHJ5bm9zeW0gZGlzcGwKLSAgICAgZ2RiX3Rlc3QgImV4 ZWMtZmlsZSAkZmlsZSIgImV4ZWMtZmlsZSAkZXNjYXBlZGZpbGUiICJsb2FkIgorQEAgLTQzMSw3 ICs0MzgsNyBAQCBwcm9jIHRlc3RfbGQge2ZpbGUgaWZtYWluIHRyeW5vc3ltIGRpc3BsCisgCWdk Yl90ZXN0ICJleGVjLWZpbGUgJGZpbGUiICJleGVjLWZpbGUgJGVzY2FwZWRmaWxlIiAibG9hZCIK ICAKLSAgICAgaWYgJGlmbWFpbiB7Ci0tCXJlYWNoICJfZGxfZGVidWdfc3RhdGUiIHJ1biAkZGlz cGxhY2VtZW50Ci0rCXJlYWNoICRzb2xpYl9icCBydW4gJGRpc3BsYWNlbWVudAorIAlpZiAkaWZt YWluIHsKKy0JICAgIHJlYWNoICJfZGxfZGVidWdfc3RhdGUiIHJ1biAkZGlzcGxhY2VtZW50Cisr CSAgICByZWFjaCAkc29saWJfYnAgcnVuICRkaXNwbGFjZW1lbnQKICAKLSAJIyBVc2UgdHdvIHNl cGFyYXRlIGdkYl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMgdG8gYXZvaWQgdGltZW91dHMgZHVl Ci0gCSMgdG8gc2xvdyBwcm9jZXNzaW5nIG9mIHdpbGRjYXJkIGNhcHR1cmluZyBsb25nIG91dHB1 dAorIAkgICAgIyBVc2UgdHdvIHNlcGFyYXRlIGdkYl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMg dG8gYXZvaWQgdGltZW91dHMgZHVlCisgCSAgICAjIHRvIHNsb3cgcHJvY2Vzc2luZyBvZiB3aWxk Y2FyZCBjYXB0dXJpbmcgbG9uZyBvdXRwdXQKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAt cHJvYmUucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUucGF0Y2gKaW5kZXggNTRhM2MwMy4u OTRhNGI2MSAxMDA2NDQKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLnBhdGNoCisrKyBiL2dk Yi1kbG9wZW4tc3RhcC1wcm9iZS5wYXRjaApAQCAtMiwxMSArMiwxMSBAQCBGcm9tOiBHYXJ5IEJl bnNvbiA8Z2JlbnNvbkByZWRoYXQuY29tPgogVG86IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPgogTWVzc2FnZS1JRDogPDIwMTEwODEwMTMzNjA1LkdCNzI5NEByZWRo YXQuY29tPgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvaW5mcnVuLmMKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvaW5mcnVuLmMJMjAxMi0wMS0wNCAwMDoyNjoxNS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9pbmZydW4uYwkyMDEyLTAx LTA0IDAwOjI2OjIxLjk2MDgzMzM5MSArMDEwMAotQEAgLTM1NCw2ICszNTQsMTMgQEAgc3RhdGlj IHN0cnVjdCBzeW1ib2wgKnN0ZXBfc3RhcnRfZnVuY3RpbworLS0tIGdkYi03LjQuNTAuMjAxMjA2 MDIub3JpZy9nZGIvaW5mcnVuLmMJMjAxMi0wNi0wMiAyMTozODowNy4yMzY0NDI4ODMgKzAyMDAK KysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9pbmZydW4uYwkyMDEyLTA2LTAyIDIxOjM4OjEz LjQ1MDQ0MDUwNyArMDIwMAorQEAgLTM2MSw2ICszNjEsMTMgQEAgc3RhdGljIHN0cnVjdCBzeW1i b2wgKnN0ZXBfc3RhcnRfZnVuY3RpbwogIC8qIE5vbnplcm8gaWYgd2Ugd2FudCB0byBnaXZlIGNv bnRyb2wgdG8gdGhlIHVzZXIgd2hlbiB3ZSdyZSBub3RpZmllZAogICAgIG9mIHNoYXJlZCBsaWJy YXJ5IGV2ZW50cyBieSB0aGUgZHluYW1pYyBsaW5rZXIuICAqLwogIGludCBzdG9wX29uX3NvbGli X2V2ZW50czsKQEAgLTIwLDcgKzIwLDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2Ri L2luZnJ1bi5jCiAgc3RhdGljIHZvaWQKICBzaG93X3N0b3Bfb25fc29saWJfZXZlbnRzIChzdHJ1 Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogIAkJCSAgIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKLUBAIC03MzA0LDcgKzczMTEsNyBAQCBTaG93 IHN0b3BwaW5nIGZvciBzaGFyZWQgbGlicmFyeSBldmVudHMuCitAQCAtNzI2Nyw3ICs3Mjc0LDcg QEAgU2hvdyBzdG9wcGluZyBmb3Igc2hhcmVkIGxpYnJhcnkgZXZlbnRzLgogIElmIG5vbnplcm8s IGdkYiB3aWxsIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHRoZSBkeW5hbWljIGxpbmtl clxuXAogIG5vdGlmaWVzIGdkYiBvZiBzaGFyZWQgbGlicmFyeSBldmVudHMuICBUaGUgbW9zdCBj b21tb24gZXZlbnQgb2YgaW50ZXJlc3RcblwKICB0byB0aGUgdXNlciB3b3VsZCBiZSBsb2FkaW5n L3VubG9hZGluZyBvZiBhIG5ldyBsaWJyYXJ5LiIpLApAQCAtMjksMjAgKzI5LDIwIEBAIEluZGV4 OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9pbmZydW4uYwogIAkJCSAgICBzaG93X3N0b3Bfb25f c29saWJfZXZlbnRzLAogIAkJCSAgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKICAKLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMKK0luZGV4OiBnZGItNy40LjUwLjIw MTIwNjAyL2dkYi9zb2xpYi1zdnI0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw MTAzLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTAxLTA0IDAwOjI2OjE1LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTAxLTA0 IDAwOjI5OjU2LjMwMzAxNDU2MiArMDEwMAotQEAgLTQ4LDYgKzQ4LDggQEAKKy0tLSBnZGItNy40 LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA2LTAyIDIxOjM4OjA3LjIz NjQ0Mjg4MyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3NvbGliLXN2cjQuYwky MDEyLTA2LTAyIDIxOjQ0OjIzLjk3MzI5ODczNyArMDIwMAorQEAgLTQ3LDYgKzQ3LDggQEAKICAj aW5jbHVkZSAiYXV4di5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAgCi0rI2luY2x1ZGUg InN0YXAtcHJvYmUuaCIKKysjaW5jbHVkZSAicHJvYmUuaCIKICsKICBzdGF0aWMgc3RydWN0IGxp bmtfbWFwX29mZnNldHMgKnN2cjRfZmV0Y2hfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7CiAgc3Rh dGljIGludCBzdnI0X2hhdmVfbGlua19tYXBfb2Zmc2V0cyAodm9pZCk7CiAgc3RhdGljIHZvaWQg c3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpOwotQEAgLTkzLDYgKzk1LDMyIEBA IHN0YXRpYyBjb25zdCBjaGFyICogY29uc3Qgc29saWJfYnJlYWtfbmEKK0BAIC05Miw2ICs5NCwz MiBAQCBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNvbGliX2JyZWFrX25hCiAgICBOVUxMCiAg fTsKICAKQEAgLTc1LDIwICs3NSwyMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIv c29saWItc3ZyNC5jCiAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBia3B0X25hbWVzW10gPQog IHsKICAgICJfc3RhcnQiLAotQEAgLTMxNCw2ICszNDIsMTIgQEAgc3RydWN0IHN2cjRfaW5mbwor QEAgLTMxMyw2ICszNDEsMTIgQEAgc3RydWN0IHN2cjRfaW5mbwogICAgQ09SRV9BRERSIGludGVy cF90ZXh0X3NlY3RfaGlnaDsKICAgIENPUkVfQUREUiBpbnRlcnBfcGx0X3NlY3RfbG93OwogICAg Q09SRV9BRERSIGludGVycF9wbHRfc2VjdF9oaWdoOwogKwogKyAgLyogU3lzdGVtVGFwIHByb2Jl cy4gICovCi0rICBWRUMgKHN0YXBfcHJvYmVfcCkgKnByb2Jlc1tOVU1fUFJPQkVTXTsKKysgIFZF QyAocHJvYmVfcCkgKnByb2Jlc1tOVU1fUFJPQkVTXTsKICsKICsgIC8qIE5vbnplcm8gaWYgd2Ug YXJlIHVzaW5nIHRoZSBTeXN0ZW1UYXAgaW50ZXJmYWNlLiAgKi8KICsgIGludCB1c2luZ19wcm9i ZXM7CiAgfTsKICAKICAvKiBQZXItcHJvZ3JhbS1zcGFjZSBkYXRhIGtleS4gICovCi1AQCAtMzIz LDggKzM1NywxNSBAQCBzdGF0aWMgdm9pZAorQEAgLTMyMiw4ICszNTYsMTUgQEAgc3RhdGljIHZv aWQKICBzdnI0X3BzcGFjZV9kYXRhX2NsZWFudXAgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3Bh Y2UsIHZvaWQgKmFyZykKICB7CiAgICBzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvOwpAQCAtOTksMTIg Kzk5LDEyIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMKICsg ICAgcmV0dXJuOwogKwogKyAgZm9yIChpID0gMDsgaSA8IE5VTV9QUk9CRVM7IGkrKykKLSsgICAg VkVDX2ZyZWUgKHN0YXBfcHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldKTsKKysgICAgVkVDX2ZyZWUg KHByb2JlX3AsIGluZm8tPnByb2Jlc1tpXSk7CiArCiAgICB4ZnJlZSAoaW5mbyk7CiAgfQogIAot QEAgLTE0NDUsNiArMTQ4NiwxMjYgQEAgZXhlY19lbnRyeV9wb2ludCAoc3RydWN0IGJmZCAqYWJm ZCwgc3RydQorQEAgLTE0NDksNiArMTQ5MCwxMjYgQEAgZXhlY19lbnRyeV9wb2ludCAoc3RydWN0 IGJmZCAqYWJmZCwgc3RydQogIAkJCQkJICAgICB0YXJnKTsKICB9CiAgCkBAIC0xMjcsMTEgKzEy NywxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWItc3ZyNC5jCiArCXsK ICsJICBpZiAoIXByb2JlX2luZm9baV0ubWFuZGF0b3J5KQogKwkgICAgewotKwkgICAgICBzdHJ1 Y3Qgc3RhcF9wcm9iZSAqcHJvYmU7CisrCSAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7CiArCSAg ICAgIGludCBpeDsKICsKICsJICAgICAgZm9yIChpeCA9IDA7Ci0rCQkgICBWRUNfaXRlcmF0ZSAo c3RhcF9wcm9iZV9wLCBpbmZvLT5wcm9iZXNbaV0sIGl4LCBwcm9iZSk7CisrCQkgICBWRUNfaXRl cmF0ZSAocHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldLCBpeCwgcHJvYmUpOwogKwkJICAgKytpeCkK ICsJCXsKICsJCSAgaWYgKGxvYy0+cHNwYWNlID09IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZQpAQCAt MTkwLDEzICsxOTAsMTMgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGliLXN2 cjQuYwogKwkgIGluZm8tPnByb2Jlc1tpXSA9IGZpbmRfcHJvYmVzX2luX29iamZpbGUgKG9zLT5v YmpmaWxlLCAicnRsZCIsCiArCQkJCQkJICAgIHByb2JlX2luZm9baV0ubmFtZSk7CiArCi0rCSAg aWYgKCFWRUNfbGVuZ3RoKHN0YXBfcHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldKSkKKysJICBpZiAo IVZFQ19sZW5ndGgocHJvYmVfcCwgaW5mby0+cHJvYmVzW2ldKSkKICsJICAgIHsKICsJICAgICAg aW50IGo7CiArCiArCSAgICAgIGZvciAoaiA9IGkgLSAxOyBqID49IDA7IGotLSkKICsJCXsKLSsJ CSAgVkVDX2ZyZWUgKHN0YXBfcHJvYmVfcCwgaW5mby0+cHJvYmVzW2pdKTsKKysJCSAgVkVDX2Zy ZWUgKHByb2JlX3AsIGluZm8tPnByb2Jlc1tqXSk7CiArCQkgIGluZm8tPnByb2Jlc1tqXSA9IE5V TEw7CiArCQl9CiArCkBAIC0yMTEsMTEgKzIxMSwxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEy MDEwMy9nZGIvc29saWItc3ZyNC5jCiArCiArCSAgZm9yIChpID0gMDsgaSA8IE5VTV9QUk9CRVM7 IGkrKykKICsJICAgIHsKLSsJICAgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKwkgICAg ICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwogKwkgICAgICBpbnQgaXg7CiArCiArCSAgICAgIGZvciAo aXggPSAwOwotKwkJICAgVkVDX2l0ZXJhdGUgKHN0YXBfcHJvYmVfcCwgaW5mby0+cHJvYmVzW2ld LCBpeCwgcHJvYmUpOworKwkJICAgVkVDX2l0ZXJhdGUgKHByb2JlX3AsIGluZm8tPnByb2Jlc1tp XSwgaXgsIHByb2JlKTsKICsJCSAgICsraXgpCiArCQljcmVhdGVfc29saWJfZXZlbnRfYnJlYWtw b2ludCAoZ2RiYXJjaCwgcHJvYmUtPmFkZHJlc3MpOwogKwkgICAgfQpAQCAtMjMxLDcgKzIzMSw3 IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMKICAvKiBIZWxw ZXIgZnVuY3Rpb24gZm9yIGdkYl9iZmRfbG9va3VwX3N5bWJvbC4gICovCiAgCiAgc3RhdGljIGlu dAotQEAgLTE0OTMsMTAgKzE2NTQsMTggQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZv ICppbmZvLCBpbgorQEAgLTE0OTcsMTAgKzE2NTgsMTggQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qg c3ZyNF9pbmZvICppbmZvLCBpbgogICAgYXNlY3Rpb24gKmludGVycF9zZWN0OwogICAgZ2RiX2J5 dGUgKmludGVycF9uYW1lOwogICAgQ09SRV9BRERSIHN5bV9hZGRyOwpAQCAtMjQyLDcgKzI0Miw3 IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMKICAKICsgIGZv ciAoaSA9IDA7IGkgPCBOVU1fUFJPQkVTOyBpKyspCiArICAgIHsKLSsgICAgICBWRUNfZnJlZSAo c3RhcF9wcm9iZV9wLCBpbmZvLT5wcm9iZXNbaV0pOworKyAgICAgIFZFQ19mcmVlIChwcm9iZV9w LCBpbmZvLT5wcm9iZXNbaV0pOwogKyAgICAgIGluZm8tPnByb2Jlc1tpXSA9IE5VTEw7CiArICAg IH0KICsgIGluZm8tPnVzaW5nX3Byb2JlcyA9IDA7CkBAIC0yNTAsNyArMjUwLDcgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGliLXN2cjQuYwogICAgLyogSWYgd2UgYWxyZWFk eSBoYXZlIGEgc2hhcmVkIGxpYnJhcnkgbGlzdCBpbiB0aGUgdGFyZ2V0LCBhbmQKICAgICAgIHJf ZGVidWcgY29udGFpbnMgcl9icmssIHNldCB0aGUgYnJlYWtwb2ludCB0aGVyZSAtIHRoaXMgc2hv dWxkCiAgICAgICBtZWFuIHJfYnJrIGhhcyBhbHJlYWR5IGJlZW4gcmVsb2NhdGVkLiAgQXNzdW1l IHRoZSBkeW5hbWljIGxpbmtlcgotQEAgLTE1MjgsNyArMTY5Nyw3IEBAIGVuYWJsZV9icmVhayAo c3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KK0BAIC0xNTMyLDcgKzE3MDEsNyBAQCBlbmFibGVf YnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCiAgCSBUaGF0IGtub3dsZWRnZSBpcyBl bmNvZGVkIGluIHRoZSBhZGRyZXNzLCBpZiBpdCdzIFRodW1iIHRoZSBsb3cgYml0CiAgCSBpcyAx LiAgSG93ZXZlciwgd2UndmUgc3RyaXBwZWQgdGhhdCBpbmZvIGFib3ZlIGFuZCBpdCdzIG5vdCBj bGVhcgogIAkgd2hhdCBhbGwgdGhlIGNvbnNlcXVlbmNlcyBhcmUgb2YgcGFzc2luZyBhIG5vbi1h ZGRyX2JpdHNfcmVtb3ZlJ2QKQEAgLTI1OSw3ICsyNTksNyBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDEyMDEwMy9nZGIvc29saWItc3ZyNC5jCiAgCSBmaW5kX3BjX3NlY3Rpb24gdmVyaWZpZXMgd2Ug a25vdyBhYm91dCB0aGUgYWRkcmVzcyBhbmQgaGF2ZSBzb21lCiAgCSBob3BlIG9mIGNvbXB1dGlu ZyB0aGUgcmlnaHQga2luZCBvZiBicmVha3BvaW50IHRvIHVzZSAodmlhCiAgCSBzeW1ib2wgaW5m bykuICBJdCBkb2VzIG1lYW4gdGhhdCBHREIgbmVlZHMgdG8gYmUgcG9pbnRlZCBhdCBhCi1AQCAt MTU2Niw3ICsxNzM1LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBp bgorQEAgLTE1NzAsNyArMTczOSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAq aW5mbywgaW4KICAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3NlY3QpOwog IAkgICAgfQogIApAQCAtMjY4LDcgKzI2OCw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAz L2dkYi9zb2xpYi1zdnI0LmMKICAJICByZXR1cm4gMTsKICAJfQogICAgICB9Ci1AQCAtMTcyMSw3 ICsxODkwLDggQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAg LTE3MjUsNyArMTg5NCw4IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywg aW4KICAKICAgICAgICBpZiAoc3ltX2FkZHIgIT0gMCkKICAJewpAQCAtMjc4LDcgKzI3OCw3IEBA IEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMKICAJICB4ZnJlZSAo aW50ZXJwX25hbWUpOwogIAkgIHJldHVybiAxOwogIAl9Ci1AQCAtMTc0Nyw3ICsxOTE3LDcgQEAg ZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE3NTEsNyArMTky MSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KICAJICBzeW1f YWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNo LAogIAkJCQkJCQkgc3ltX2FkZHIsCiAgCQkJCQkJCSAmY3VycmVudF90YXJnZXQpOwpAQCAtMjg3 LDcgKzI4Nyw3IEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpYi1zdnI0LmMK ICAJICByZXR1cm4gMTsKICAJfQogICAgICB9Ci1AQCAtMTc2Myw3ICsxOTMzLDcgQEAgZW5hYmxl X2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE3NjcsNyArMTkzNyw3IEBA IGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KICAJICAgICAgc3ltX2Fk ZHIgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyICh0YXJnZXRfZ2RiYXJjaCwK ICAJCQkJCQkJICAgICBzeW1fYWRkciwKICAJCQkJCQkJICAgICAmY3VycmVudF90YXJnZXQpOwpA QCAtMjk2LDE3ICsyOTYsMTcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGli LXN2cjQuYwogIAkgICAgICByZXR1cm4gMTsKICAJICAgIH0KICAJfQotQEAgLTI1MzksNCArMjcw OSw1IEBAIF9pbml0aWFsaXplX3N2cjRfc29saWIgKHZvaWQpCitAQCAtMjU0Myw0ICsyNzEzLDUg QEAgX2luaXRpYWxpemVfc3ZyNF9zb2xpYiAodm9pZCkKICAgIHN2cjRfc29fb3BzLmxvb2t1cF9s aWJfZ2xvYmFsX3N5bWJvbCA9IGVsZl9sb29rdXBfbGliX3N5bWJvbDsKICAgIHN2cjRfc29fb3Bz LnNhbWUgPSBzdnI0X3NhbWU7CiAgICBzdnI0X3NvX29wcy5rZWVwX2RhdGFfaW5fY29yZSA9IHN2 cjRfa2VlcF9kYXRhX2luX2NvcmU7CiArICBzdnI0X3NvX29wcy51cGRhdGVfYnJlYWtwb2ludHMg PSBzdnI0X3VwZGF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50czsKICB9Ci1JbmRleDogZ2RiLTcu NC41MC4yMDEyMDEwMy9nZGIvc29saWIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3NvbGliLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL3Nv bGliLmMJMjAxMi0wMS0wNCAwMDoyNjoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwMTAzL2dkYi9zb2xpYi5jCTIwMTItMDEtMDQgMDA6Mjk6MDcuNzUxMjAwMDM4ICswMTAw Ci1AQCAtMTIxNCw2ICsxMjE0LDE4IEBAIG5vX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9y ZWQsIGludAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvc29saWIuYwkyMDEyLTA2 LTAyIDIxOjM4OjA3LjIzNjQ0Mjg4MyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2Ri L3NvbGliLmMJMjAxMi0wNi0wMiAyMTozODoxMy40NTU0NDA1MDcgKzAyMDAKK0BAIC0xMjE2LDYg KzEyMTYsMTggQEAgbm9fc2hhcmVkX2xpYnJhcmllcyAoY2hhciAqaWdub3JlZCwgaW50CiAgICBv YmpmaWxlX3B1cmdlX3NvbGlicyAoKTsKICB9CiAgCkBAIC0zMjUsMjMgKzMyNSwyMyBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWIuYwogIC8qIFJlbG9hZCBzaGFyZWQgbGli cmFyaWVzLCBidXQgYXZvaWQgcmVsb2FkaW5nIHRoZSBzYW1lIHN5bWJvbCBmaWxlCiAgICAgd2Ug YWxyZWFkeSBoYXZlIGxvYWRlZC4gICovCiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9n ZGIvc29saWIuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL3NvbGliLmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL3NvbGliLmgJMjAxMS0wOC0z MCAwNDo0ODowNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9z b2xpYi5oCTIwMTItMDEtMDQgMDA6Mjc6NDAuNDE1NTMzNjg2ICswMTAwCi1AQCAtOTEsNCArOTEs OCBAQCBleHRlcm4gQ09SRV9BRERSIGJmZF9sb29rdXBfc3ltYm9sX2Zyb21fCi0gCQkJCQkJCQkg IHZvaWQgKiksCi0gCQkJCQkJdm9pZCAqZGF0YSk7CistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5v cmlnL2dkYi9zb2xpYi5oCTIwMTItMDYtMDIgMjE6Mzg6MDcuMjM2NDQyODgzICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc29saWIuaAkyMDEyLTA2LTAyIDIxOjM4OjEzLjQ2NDQ0 MDUwMyArMDIwMAorQEAgLTkxLDQgKzkxLDggQEAgZXh0ZXJuIENPUkVfQUREUiBnZGJfYmZkX2xv b2t1cF9zeW1ib2xfZgorIAkJCQkJCQkJICAgICAgdm9pZCAqKSwKKyAJCQkJCQkgICAgdm9pZCAq ZGF0YSk7CiAgCiArLyogRW5hYmxlIG9yIGRpc2FibGUgb3B0aW9uYWwgc29saWIgZXZlbnQgYnJl YWtwb2ludHMgYXMgYXBwcm9wcmlhdGUuICAqLwogKwogK2V4dGVybiB2b2lkIHVwZGF0ZV9zb2xp Yl9icmVha3BvaW50cyAodm9pZCk7CiArCiAgI2VuZGlmIC8qIFNPTElCX0ggKi8KLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwMTAzL2dkYi9zb2xpc3QuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2 MDIvZ2RiL3NvbGlzdC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmln L2dkYi9zb2xpc3QuaAkyMDExLTA4LTA5IDE0OjUxOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGlzdC5oCTIwMTItMDEtMDQgMDA6MjY6MjEuOTYyODMz MzgzICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9zb2xpc3QuaAkyMDEy LTA2LTAyIDIxOjM4OjA3LjIzNjQ0Mjg4MyArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL3NvbGlzdC5oCTIwMTItMDYtMDIgMjE6Mzg6MTMuNDY1NDQwNTAzICswMjAwCiBAQCAtMTQ5 LDYgKzE0OSwxMyBAQCBzdHJ1Y3QgdGFyZ2V0X3NvX29wcwogICAgICAgICBjb3JlIGZpbGUgKGlu IHBhcnRpY3VsYXIsIGZvciByZWFkb25seSBzZWN0aW9ucykuICAqLwogICAgICBpbnQgKCprZWVw X2RhdGFfaW5fY29yZSkgKENPUkVfQUREUiB2YWRkciwKCmRpZmYgLS1naXQgYS9nZGItZXhpdC13 YXJuaW5nLnBhdGNoIGIvZ2RiLWV4aXQtd2FybmluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNjUzY2MxNS4uMDAwMDAwMAotLS0gYS9nZGItZXhpdC13YXJuaW5nLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsOTMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1wYXRjaGVzLzIwMTItMDIvbXNnMDA2NjQuaHRtbAotU3ViamVjdDogUkZBOiBmaXggUFIg YnJlYWtwb2ludHMvMTM3NzYKLQotSSdkIGFwcHJlY2lhdGUgY29tbWVudHMgb24gdGhpcyBwYXRj aC4KLUkgaGF2ZSBubyBpZGVhIHdoZXRoZXIgaXQgaXMgdGhlIGJlc3Qgd2F5IHRvIGZpeCB0aGUg cHJvYmxlbS4KLQotQnVnIDEzNzc2IGNvbmNlcm5zICduZXh0J2luZyBvdmVyIGFuIGV4aXQuICBG b3IgdGhlIHRyaXZpYWw6Ci0KLSAgICAjaW5jbHVkZSA8c3RkbGliLmg+IAotICAgIGludAotICAg IG1haW4gKHZvaWQpCi0gICAgewotICAgICAgZXhpdCAoMCk7Ci0gICAgfQotCi1XZSBnZXQgdGhp cyBiZWhhdmlvcjoKLQotICAgIChnZGIpIHN0YXJ0Ci0gICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQg MSwgbWFpbiAoKSBhdCBleGl0MC5jOjUKLSAgICA1ICAgICAgZXhpdCAoMCk7Ci0gICAgKGdkYikg bmV4dAotICAgIFtJbmZlcmlvciAxIChwcm9jZXNzIDI0MjgpIGV4aXRlZCBub3JtYWxseV0KLSAg ICB3YXJuaW5nOiBFcnJvciByZW1vdmluZyBicmVha3BvaW50IDAKLSAgICB3YXJuaW5nOiBFcnJv ciByZW1vdmluZyBicmVha3BvaW50IDAKLSAgICB3YXJuaW5nOiBFcnJvciByZW1vdmluZyBicmVh a3BvaW50IDAKLQotVGhlIGJ1ZyBpcyB0aGF0IGV4aXRfaW5mZXJpb3IgZW5kcyB1cCBjYWxsaW5n IGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQsCi13aGljaCB0cmllcyB0byBkZWxldGUgdGhlIGxv bmdqbXAgYnJlYWtwb2ludHMgLS0gYnV0IGFzIHRoZSBpbmZlcmlvciBpcwotZGVhZCwgdGhpcyBm YWlscy4KLQotVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0gYnkgbW92aW5nIHRoZSBicmVh a3BvaW50X2luaXRfaW5mZXJpb3IKLWNhbGwgZWFybGllciBpbiBnZW5lcmljX21vdXJuX2luZmVy aW9yLiAgVGhpcyBjYXVzZXMgdGhlIGJyZWFrcG9pbnRzIHRvCi1iZSBtYXJrZWQgYXMgdW5pbnNl cnRlZCBiZWZvcmUgdGhleSBhcmUgZGVsZXRlZC4KLQotV2hpbGUgZG9pbmcgdGhpcyBJIG5vdGlj ZWQgdGhhdCBhZnRlciB0aGUgaW5mZXJpb3IgZXhpdHMsIHdlIGFyZSBsZWZ0Ci13aXRoIGEgc3Rl cC1yZXN1bWUgYnJlYWtwb2ludDoKLQotKGdkYikgbWFpbnQgaW5mbyBiCi1OdW0gICAgIFR5cGUg ICAgICAgICAgIERpc3AgRW5iIEFkZHJlc3MgICAgICAgICAgICBXaGF0Ci1bLi4uXQotMCAgICAg ICBzdGVwIHJlc3VtZSAgICBkc3RwIHkgICAweDAwMDAwMDAwMDA0MDA0ZDIgIGluZiAxIHRocmVh ZCAxCi0Jc3RvcCBvbmx5IGluIHRocmVhZCAxCi0KLVRoZSBicmVha3BvaW50LmMgcGF0Y2ggY2F1 c2VzIHRoaXMgdG8gYmUgcmVtb3ZlZCBhcyB3ZWxsLgotCi1CdWlsdCBhbmQgcmVndGVzdGVkIG9u IHg4Ni02NCBGZWRvcmEgMTYuCi0KLVRvbQotCi0yMDEyLTAyLTI4ICBUb20gVHJvbWV5ICA8dHJv bWV5QHJlZGhhdC5jb20+Ci0KLQlQUiBicmVha3BvaW50cy8xMzc3NjoKLQkqIHRhcmdldC5jIChn ZW5lcmljX21vdXJuX2luZmVyaW9yKTogQ2FsbCBicmVha3BvaW50X2luaXRfaW5mZXJpb3IKLQll YXJsaWVyLgotCSogYnJlYWtwb2ludC5jIChicmVha3BvaW50X2luaXRfaW5mZXJpb3IpOiBEZWxl dGUgc3RlcC1yZXN1bWUKLQlicmVha3BvaW50cy4KLQotZGlmZiAtLWdpdCBhL2dkYi9icmVha3Bv aW50LmMgYi9nZGIvYnJlYWtwb2ludC5jCi1pbmRleCBkYjA1Yjk3Li4wNDhjYzYzIDEwMDY0NAot LS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwotKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwotQEAgLTMzNDEs NiArMzM0MSwxMCBAQCBicmVha3BvaW50X2luaXRfaW5mZXJpb3IgKGVudW0gaW5mX2NvbnRleHQg Y29udGV4dCkKLSAJICAgKGdkYikgdGFyIHJlbSA6OTk5OSAgICAgIyByZW1vdGUgV2luZG93cyBn ZGJzZXJ2ZXIuCi0gCSovCi0gCi0rICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKLSsKLSsJLyog QWxzbyByZW1vdmUgc3RlcC1yZXN1bWUgYnJlYWtwb2ludHMuICAqLwotKwotIAlkZWxldGVfYnJl YWtwb2ludCAoYik7Ci0gCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuYyBiL2dk Yi90YXJnZXQuYwotaW5kZXggMWY0MDhmNi4uNjVhNmMyMyAxMDA2NDQKLS0tLSBhL2dkYi90YXJn ZXQuYwotKysrIGIvZ2RiL3RhcmdldC5jCi1AQCAtMzU4MywxMyArMzU4MywxNCBAQCBnZW5lcmlj X21vdXJuX2luZmVyaW9yICh2b2lkKQotICAgcHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci0gICBpbmZl cmlvcl9wdGlkID0gbnVsbF9wdGlkOwotIAotKyAgYnJlYWtwb2ludF9pbml0X2luZmVyaW9yIChp bmZfZXhpdGVkKTsKLSsKLSAgIGlmICghcHRpZF9lcXVhbCAocHRpZCwgbnVsbF9wdGlkKSkKLSAg ICAgewotICAgICAgIGludCBwaWQgPSBwdGlkX2dldF9waWQgKHB0aWQpOwotICAgICAgIGV4aXRf aW5mZXJpb3IgKHBpZCk7Ci0gICAgIH0KLSAKLS0gIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAo aW5mX2V4aXRlZCk7Ci0gICByZWdpc3RlcnNfY2hhbmdlZCAoKTsKLSAKLSAgIHJlb3Blbl9leGVj X2ZpbGUgKCk7Ci0KCmRpZmYgLS1naXQgYS9nZGItZXhwYW5kLWN4eC1hY2NlbC5wYXRjaCBiL2dk Yi1leHBhbmQtY3h4LWFjY2VsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy NzM3YmZkLi4wMDAwMDAwCi0tLSBhL2dkYi1leHBhbmQtY3h4LWFjY2VsLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNDYgKzAsMCBAQAotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD03ODc0ODcKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEyLTAyL21zZzAwMTEyLmh0bWwKLVN1YmplY3Q6IFJGQzogZXh0ZW5kIHN5bXRhYnNfZnJvbV9m aWxlbmFtZSBza2lwcGluZyBmb3IgQysrCi0KLUknZCBhcHByZWNpYXRlIGNvbW1lbnRzIG9uIHRo aXMuICBCYXJyaW5nIGNvbW1lbnRzIEkgd2lsbCBjaGVjayBpdCBpbgotYWZ0ZXIgYSBjb3VwbGUg ZGF5cy4KLQotQSB3aGlsZSBhZ28gRG91ZyBjb21taXR0ZWQgYSBwYXRjaCB0byBjaGFuZ2UgbGlu ZXNwZWMgdG8gc2tpcAotc3ltdGFic19mcm9tX2ZpbGVuYW1lIHdoZW4gcG9zc2libGUuICBUaGlz IHdhcyBhbiBpbXBvcnRhbnQgcGVyZm9ybWFuY2UKLWltcHJvdmVtZW50LgotCi1XZSBnb3QgYSBi dWcgcmVwb3J0IGluIFJlZCBIYXQgYnVnemlsbGEgYXNraW5nIHRoYXQgdGhpcyBiZSBleHRlbmRl ZCB0bwotQysrIHF1YWxpZmllZCBuYW1lczoKLQotICAgIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0 LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9Nzg3NDg3Ci0KLVRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGlz IGlkZWEuCi0KLUJ1aWx0IGFuZCByZWd0ZXN0ZWQgb24geDg2LTY0IEZlZG9yYSAxNS4KLQotVG9t Ci0KLTIwMTItMDItMDggIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLQotCSogbGlu ZXNwZWMuYyAoZGVjb2RlX2xpbmVfaW50ZXJuYWwpOiBTa2lwIHN5bXRhYnNfZnJvbV9maWxlbmFt ZQotCXdoZW4gd2UgaGF2ZSBhIEMrKyBxdWFsaWZpZWQgbmFtZS4KLQotZGlmZiAtLWdpdCBhL2dk Yi9saW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKLWluZGV4IGRhODhkMTcuLjNmNTNiOGUgMTAw NjQ0Ci0tLS0gYS9nZGIvbGluZXNwZWMuYwotKysrIGIvZ2RiL2xpbmVzcGVjLmMKLUBAIC05MTIs OSArOTEyLDExIEBAIGRlY29kZV9saW5lX2ludGVybmFsIChzdHJ1Y3QgbGluZXNwZWNfc3RhdGUg KnNlbGYsIGNoYXIgKiphcmdwdHIpCi0gICAvKiBGaXJzdCB0aGluZ3MgZmlyc3Q6IGlmIEFSR1BU UiBzdGFydHMgd2l0aCBhIGZpbGVuYW1lLCBnZXQgaXRzCi0gICAgICBzeW10YWIgYW5kIHN0cmlw IHRoZSBmaWxlbmFtZSBmcm9tIEFSR1BUUi4KLSAgICAgIEF2b2lkIGNhbGxpbmcgc3ltdGFiX2Zy b21fZmlsZW5hbWUgaWYgd2Uga25vdyBjYW4sCi0tICAgICBpdCBjYW4gYmUgZXhwZW5zaXZlLiAg Ki8KLSsgICAgIGl0IGNhbiBiZSBleHBlbnNpdmUuICBXZSBrbm93IHdlIGNhbiBhdm9pZCB0aGUg Y2FsbCBpZiB3ZSBzZWUgYQotKyAgICAgc2luZ2xlIHdvcmQgKGUuZy4sICJicmVhayBOQU1FIikg b3IgaWYgd2Ugc2VlIGEgcXVhbGlmaWVkIEMrKwotKyAgICAgbmFtZSAoImJyZWFrIFFVQUw6Ok5B TUUiKS4gICovCi0gCi0tICBpZiAoKnAgIT0gJ1wwJykKLSsgIGlmICgqcCAhPSAnXDAnICYmIHBb MV0gIT0gJzonKQotICAgICB7Ci0gICAgICAgVFJZX0NBVENIIChmaWxlX2V4Y2VwdGlvbiwgUkVU VVJOX01BU0tfRVJST1IpCi0gCXsKLQoKZGlmZiAtLWdpdCBhL2dkYi1mb3J0cmFuLWNvbW1vbi1y ZWR1Y2UucGF0Y2ggYi9nZGItZm9ydHJhbi1jb21tb24tcmVkdWNlLnBhdGNoCmluZGV4IGZlMTE5 OWYuLjIzOGIzNTUgMTAwNjQ0Ci0tLSBhL2dkYi1mb3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gK KysrIGIvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUlu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9mLWxhbmcuYworSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL2YtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDEx Ny5vcmlnL2dkYi9mLWxhbmcuYwkyMDExLTAxLTA3IDIwOjM2OjE2LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2YtbGFuZy5jCTIwMTEtMDEtMTcgMTU6NTY6MDcu MDAwMDAwMDAwICswMTAwCi1AQCAtNTcsMjAgKzU3LDYgQEAgdHlwZWRlZiBzdHJ1Y3Qgc2F2ZWRf YmZfc3ltbnVtIFNBVkVEX0JGLAorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZi1s YW5nLmMJMjAxMi0wMy0wMiAyMDoyOTowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTIwNjAyL2dkYi9mLWxhbmcuYwkyMDEyLTA2LTAyIDE5OjEzOjMxLjUyMDA1MDY1NCArMDIw MAorQEAgLTU5LDIwICs1OSw2IEBAIHR5cGVkZWYgc3RydWN0IHNhdmVkX2JmX3N5bW51bSBTQVZF RF9CRiwKICAvKiBMb2NhbCBmdW5jdGlvbnMgKi8KICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6 ZV9mX2xhbmd1YWdlICh2b2lkKTsKQEAgLTIzLDcgKzIzLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAxMTcvZ2RiL2YtbGFuZy5jCiAgCiAgc3RhdGljIHZvaWQgZl9wcmludGNoYXIgKGludCBj LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0pOwogIHN0YXRpYyB2 b2lkIGZfZW1pdF9jaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsCi1AQCAtNDYxLDE4NSAr NDQ3LDcgQEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCkKK0BAIC0zODUsMTg1ICszNzEs NyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQogICAgYWRkX2xhbmd1YWdlICgmZl9s YW5ndWFnZV9kZWZuKTsKICB9CiAgCkBAIC0yMDksNyArMjA5LDcgQEAgSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAxMTcvZ2RiL2YtbGFuZy5jCiAgCiAgLyogVGhpcyByb3V0aW5lIGZpbmRzIHRoZSBm aXJzdCBlbmNvdW50cmVkIENPTU1PTiBibG9jayBuYW1lZCAibmFtZSIgCiAgICAgdGhhdCBiZWxv bmdzIHRvIGZ1bmN0aW9uIGZ1bmNuYW1lLiAgKi8KLUBAIC02NjIsMTkzICs0NzAsMyBAQCBmaW5k X2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKm5hbWUsIGNoCitAQCAtNTg2LDE5MyArMzk0LDMg QEAgZmluZF9jb21tb25fZm9yX2Z1bmN0aW9uIChjb25zdCBjaGFyICpuYQogICAgICB9CiAgICBy ZXR1cm4gKE5VTEwpOwogIH0KQEAgLTQwMywxOCArNDAzLDE5IEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTEwMTE3L2dkYi9mLWxhbmcuYwogLSAgc2F2ZWRfZnVuY3Rpb25fbGlzdCA9IE5VTEw7CiAt fQogLSNlbmRpZgotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2YtbGFuZy5oCitJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTEtMDEtMTcgMTU6NDc6MzcuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZi1sYW5nLmgJMjAxMS0w MS0xNyAxNTo1NDoxNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC03NiwxNCArNzYsOSBAQCB0eXBlZGVm IHN0cnVjdCBzYXZlZF9mNzdfY29tbW9uIFNBVkVEX0Y3CistLS0gZ2RiLTcuNC41MC4yMDEyMDYw Mi5vcmlnL2dkYi9mLWxhbmcuaAkyMDEyLTA2LTAyIDE5OjExOjU0LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtbGFuZy5oCTIwMTItMDYtMDIgMTk6MTM6NTUu MzQ1MzE3OTcwICswMjAwCitAQCAtNzYsMTUgKzc2LDEwIEBAIHR5cGVkZWYgc3RydWN0IHNhdmVk X2Y3N19jb21tb24gU0FWRURfRjcKICB0eXBlZGVmIHN0cnVjdCBjb21tb25fZW50cnkgQ09NTU9O X0VOVFJZLCAqQ09NTU9OX0VOVFJZX1BUUjsKICAKICBleHRlcm4gU0FWRURfRjc3X0NPTU1PTl9Q VFIgaGVhZF9jb21tb25fbGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCiAtZXh0 ZXJuIFNBVkVEX0Y3N19DT01NT05fUFRSIHRhaWxfY29tbW9uX2xpc3Q7CS8qIFB0ciB0byBsYXN0 IHNhdmVkIENPTU1PTiAgKi8KIC1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgY3VycmVudF9j b21tb247CS8qIFB0ciB0byBjdXJyZW50IENPTU1PTiAqLwogIAotIGV4dGVybiBTQVZFRF9GNzdf Q09NTU9OX1BUUiBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwgY2hhciAqKTsKKyBl eHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgZmluZF9jb21tb25fZm9yX2Z1bmN0aW9uIChjb25z dCBjaGFyICosCisgCQkJCQkJICAgICAgY29uc3QgY2hhciAqKTsKICAKIC0jZGVmaW5lIFVOSU5J VElBTElaRURfU0VDTlVNIC0xCiAtI2RlZmluZSBDT01NT05fTkVFRFNfUEFUQ0hJTkcoYmxrKSAo KGJsayktPnNlY251bSA9PSBVTklOSVRJQUxJWkVEX1NFQ05VTSkKQEAgLTQyMiwxMCArNDIzLDEw IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9mLWxhbmcuaAogICNkZWZpbmUgQkxB TktfQ09NTU9OX05BTUVfT1JJR0lOQUwgIiNCTE5LX0NPTSIJLyogWExGIGFzc2lnbmVkICAqLwog ICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfTUY3NyAgICAgIl9fQkxOS19fIgkvKiBNRjc3IGFz c2lnbmVkICAqLwogICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfTE9DQUwgICAgIl9fQkxBTksi CS8qIExvY2FsIEdEQiAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2YtdmFscHJp bnQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtdmFscHJpbnQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTEt MDEtMTcgMTU6NDc6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9n ZGIvZi12YWxwcmludC5jCTIwMTEtMDEtMTcgMTU6NTQ6MzYuMDAwMDAwMDAwICswMTAwCistLS0g Z2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMi0wNi0wMiAxOTox MTo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9mLXZhbHBy aW50LmMJMjAxMi0wNi0wMiAxOToxNDoxMS42MjUzMTM0MzIgKzAyMDAKIEBAIC0zNSwxMCArMzUs NiBAQAogICNpbmNsdWRlICJjb21tYW5kLmgiCiAgI2luY2x1ZGUgImJsb2NrLmgiCkBAIC00MzYs OCArNDM3LDggQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2YtdmFscHJpbnQuYwog LQogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfdmFscHJpbnQgKHZvaWQpOwogIHN0YXRpYyB2 b2lkIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLSBzdGF0aWMgdm9pZCBsaXN0 X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKik7Ci1AQCAtNjA0LDY3ICs2MDAsNiBAQCBpbmZv X2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgCisgc3RhdGljIHZvaWQgbGlzdF9h bGxfdmlzaWJsZV9jb21tb25zIChjb25zdCBjaGFyICopOworQEAgLTUzNSw2NyArNTMxLDYgQEAg aW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50CiAgCQkgICAgIGNvbW5hbWUs IGZ1bm5hbWUpOwogIH0KICAKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gg Yi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKaW5kZXggNjZkNDZiOS4uNzc4YzhjZiAxMDA2NDQK LS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCisrKyBiL2dkYi1mb3J0cmFuLWNvbW1vbi5w YXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2Fy ZjJyZWFkLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9kd2FyZjJyZWFkLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwky MDExLTA3LTIyIDIwOjEyOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA3LTIyIDIwOjE3OjIyLjAwMDAwMDAwMCArMDIwMAot QEAgLTc5NjksMTIgKzc5NjksMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cgorLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIw MTItMDYtMDIgMjE6MzI6NDEuNzQ2NTY3Mjk5ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvZHdhcmYycmVhZC5jCTIwMTItMDYtMDIgMjE6MzI6NTQuMzA0NTYyNTAwICswMjAwCitA QCAtOTczNiwxMiArOTczNiwxNCBAQCByZWFkX3NldF90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RyCiAgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHNldF90eXBlLCBjdSk7CiAgfQog IApAQCAtMTksNyArMTksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYy cmVhZC5jCiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAgc3RydWN0IHN5bWJvbCAqc3lt OwogICAgQ09SRV9BRERSIGJhc2UgPSAoQ09SRV9BRERSKSAwOwotQEAgLTc5OTksMjAgKzgwMDEs NjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTk3NjYs MjAgKzk3NjgsNjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAog ICAgICB9CiAgICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQogICAgICB7CkBAIC04Nyw3ICs4Nyw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQog IH0KICAKLUBAIC0xMTY5NSw2ICsxMTc0NCwxMyBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzCitAQCAtMTM2NjEsNiArMTM3MTAsMTMgQEAgbmV3X3N5bWJvbF9mdWxs IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcwogIAkgICAgewogIAkgICAgICB2YXJfZGVjb2RlX2xv Y2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKICAJICAgICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9leHRlcm5hbCwgY3UpOwpAQCAtMTAxLDcgKzEwMSw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAJICAgICAgaWYgKFNZTUJPTF9DTEFTUyAo c3ltKSA9PSBMT0NfU1RBVElDCiAgCQkgICYmIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID09 IDAKICAJCSAgJiYgIWR3YXJmMl9wZXJfb2JqZmlsZS0+aGFzX3NlY3Rpb25fYXRfemVybykKLUBA IC0xMTg2Nyw2ICsxMTkyMywxMSBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzCitAQCAtMTM4MjUsNiArMTM4ODEsMTEgQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgcwogIAkgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19UWVBFREVGOwog IAkgIGxpc3RfdG9fYWRkID0gJmdsb2JhbF9zeW1ib2xzOwogIAkgIGJyZWFrOwpAQCAtMTEzLDEx ICsxMTMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwog IAlkZWZhdWx0OgogIAkgIC8qIE5vdCBhIHRhZyB3ZSByZWNvZ25pemUuICBIb3BlZnVsbHkgd2Ug YXJlbid0IHByb2Nlc3NpbmcKICAJICAgICB0cmFzaCBkYXRhLCBidXQgc2luY2Ugd2UgbXVzdCBz cGVjaWZpY2FsbHkgaWdub3JlIHRoaW5ncwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2YtbGFuZy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTEtMDct MjIgMjA6MTc6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv Zi1sYW5nLmMJMjAxMS0wNy0yMiAyMDoxNzoyMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNzEsMjcg KzM3MSwzIEBAIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKHZvaWQpCistLS0gZ2RiLTcuNC41MC4y MDEyMDYwMi5vcmlnL2dkYi9mLWxhbmcuYwkyMDEyLTA2LTAyIDIxOjMyOjQxLjc0NjU2NzI5OSAr MDIwMAorKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2YtbGFuZy5jCTIwMTItMDYtMDIgMjE6 MzI6NTQuMzA1NTYyNDk5ICswMjAwCitAQCAtMzcwLDI3ICszNzAsMyBAQCBfaW5pdGlhbGl6ZV9m X2xhbmd1YWdlICh2b2lkKQogIAogICAgYWRkX2xhbmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsK ICB9CkBAIC0xMjgsNyArMTI4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Yt bGFuZy5jCiAtICAgdGhhdCBiZWxvbmdzIHRvIGZ1bmN0aW9uIGZ1bmNuYW1lLiAgKi8KIC0KIC1T QVZFRF9GNzdfQ09NTU9OX1BUUgotLWZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hhciAqbmFt ZSwgY2hhciAqZnVuY25hbWUpCistZmluZF9jb21tb25fZm9yX2Z1bmN0aW9uIChjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICpmdW5jbmFtZSkKIC17CiAtCiAtICBTQVZFRF9GNzdfQ09NTU9O X1BUUiB0bXA7CkBAIC0xNDUsMTEgKzE0NSwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZi1sYW5nLmMKIC0gICAgfQogLSAgcmV0dXJuIChOVUxMKTsKIC19Ci1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi9mLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9n ZGIvZi1sYW5nLmgJMjAxMS0wNy0yMiAyMDoxNzoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAkyMDExLTA3LTIyIDIwOjE3OjIyLjAwMDAwMDAw MCArMDIwMAotQEAgLTUyLDM2ICs1Miw4IEBAIGVudW0gZjkwX3JhbmdlX3R5cGUKKy0tLSBnZGIt Ny40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTItMDYtMDIgMjE6MzI6NDEuNzQ2 NTY3Mjk5ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmgJMjAxMi0w Ni0wMiAyMTozMjo1NC4zMjI1NjI0OTMgKzAyMDAKK0BAIC01MiwzNyArNTIsOCBAQCBlbnVtIGY5 MF9yYW5nZV90eXBlCiAgICAgIE5PTkVfQk9VTkRfREVGQVVMVAkJLyogIihsb3c6aGlnaCkiICAq LwogICAgfTsKICAKQEAgLTE3OCw3ICsxNzgsOCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZi1sYW5nLmgKIC0KIC1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgaGVhZF9jb21t b25fbGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCiAtCi0tZXh0ZXJuIFNBVkVE X0Y3N19DT01NT05fUFRSIGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hhciAqLCBjaGFyICop OworLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9OX1BUUiBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24g KGNvbnN0IGNoYXIgKiwKKy0JCQkJCQkgICAgICBjb25zdCBjaGFyICopOwogLQogICNkZWZpbmUg QkxBTktfQ09NTU9OX05BTUVfT1JJR0lOQUwgIiNCTE5LX0NPTSIJLyogWExGIGFzc2lnbmVkICAq LwogICNkZWZpbmUgQkxBTktfQ09NTU9OX05BTUVfTUY3NyAgICAgIl9fQkxOS19fIgkvKiBNRjc3 IGFzc2lnbmVkICAqLwpAQCAtMTg2LDEwICsxODcsMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2YtbGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFycmF5IGJvdW5kcyBj YW5ub3QgYmUgZmV0Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sgdG8gJ210IHByaW50 IHN5bWJvbHMnIGFuZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYw Mi9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0yMiAyMDoxNzoxNi4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0yMiAyMDox ODoyNi4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2Yt dmFscHJpbnQuYwkyMDEyLTA2LTAyIDIxOjMyOjQxLjc0NjU2NzI5OSArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMjA2MDIvZ2RiL2YtdmFscHJpbnQuYwkyMDEyLTA2LTAyIDIxOjMzOjUwLjUxNDU0 MTI4NiArMDIwMAogQEAgLTM0LDEwICszNCwxMSBAQAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAg I2luY2x1ZGUgImNvbW1hbmQuaCIKQEAgLTE5OSwxNiArMjAwLDE2IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50LmMKICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6 ZV9mX3ZhbHByaW50ICh2b2lkKTsKICBzdGF0aWMgdm9pZCBpbmZvX2NvbW1vbl9jb21tYW5kIChj aGFyICosIGludCk7Ci0tc3RhdGljIHZvaWQgbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChjaGFy ICopOworLXN0YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY29uc3QgY2hhciAq KTsKICBzdGF0aWMgdm9pZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0 IHR5cGUgKiwKICAJCQkJCSAgICAgIHN0cnVjdCB1aV9maWxlICopOwogIHN0YXRpYyB2b2lkIGY3 N19nZXRfZHluYW1pY19sZW5ndGhfb2ZfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqKTsKLUBAIC01 MTUsMjIgKzUxNiw1NCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Ci0gICByZXR1cm4gMDsKK0BAIC00MjAsMjIgKzQyMSw1NCBAQCBmX3ZhbF9wcmludCAoc3RydWN0 IHR5cGUgKnR5cGUsIGNvbnN0IGdkCisgICBnZGJfZmx1c2ggKHN0cmVhbSk7CiAgfQogIAogLXN0 YXRpYyB2b2lkCi0tbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChjaGFyICpmdW5uYW1lKQorLWxp c3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY29uc3QgY2hhciAqZnVubmFtZSkKICtzdGF0aWMgaW50 CiAraW5mb19jb21tb25fY29tbWFuZF9mb3JfYmxvY2sgKHN0cnVjdCBibG9jayAqYmxvY2ssIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICsJCQkgICAgICAgY29uc3QgY2hhciAqY29tbmFtZSkK QEAgLTIxNiw3ICsyMTcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxw cmludC5jCiAtICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0bXA7CiAtCiAtICB0bXAgPSBoZWFkX2Nv bW1vbl9saXN0OwotKyAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKKysgIHN0cnVjdCBibG9j a19pdGVyYXRvciBpdGVyOwogKyAgc3RydWN0IHN5bWJvbCAqc3ltOwogKyAgaW50IHZhbHVlc19w cmludGVkID0gMDsKICsgIGNvbnN0IGNoYXIgKm5hbWU7CkBAIC0yNzEsMjEgKzI3MiwyMSBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCiAgfQogIAogIC8qIFRo aXMgZnVuY3Rpb24gaXMgdXNlZCB0byBwcmludCBvdXQgdGhlIHZhbHVlcyBpbiBhIGdpdmVuIENP TU1PTiAKLUBAIC01NDAsMTEgKzU3Myw5IEBAIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY2hh ciAqZnVubmFtZSkKK0BAIC00NDUsMTEgKzQ3OCw5IEBAIGxpc3RfYWxsX3Zpc2libGVfY29tbW9u cyAoY29uc3QgY2hhciAqZnUKICBzdGF0aWMgdm9pZAogIGluZm9fY29tbW9uX2NvbW1hbmQgKGNo YXIgKmNvbW5hbWUsIGludCBmcm9tX3R0eSkKICB7CiAtICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0 aGVfY29tbW9uOwogLSAgQ09NTU9OX0VOVFJZX1BUUiBlbnRyeTsKICAgIHN0cnVjdCBmcmFtZV9p bmZvICpmaTsKLS0gIGNoYXIgKmZ1bm5hbWUgPSAwOworLSAgY29uc3QgY2hhciAqZnVubmFtZSA9 IDA7CiAtICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwogKyAgc3RydWN0IGJsb2NrICpibG9jazsKICsg IGludCB2YWx1ZXNfcHJpbnRlZCA9IDA7CiAgCiAgICAvKiBXZSBoYXZlIGJlZW4gdG9sZCB0byBk aXNwbGF5IHRoZSBjb250ZW50cyBvZiBGNzcgQ09NTU9OIAogICAgICAgYmxvY2sgc3VwcG9zZWRs eSB2aXNpYmxlIGluIHRoaXMgZnVuY3Rpb24uICBMZXQgdXMgCi1AQCAtNTU2LDc0ICs1ODcsMzEg QEAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50IAorQEAgLTQ2MSw3NCAr NDkyLDMxIEBAIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKmNvbW5hbWUsIGludAogICAgLyog VGhlIGZvbGxvd2luZyBpcyBnZW5lcmFsbHkgcmlwcGVkIG9mZiBmcm9tIHN0YWNrLmMncyByb3V0 aW5lIAogICAgICAgcHJpbnRfZnJhbWVfaW5mbygpLiAgKi8KICAKQEAgLTM3NiwxMSArMzc3LDEx IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXZhbHByaW50LmMKICB9CiAgCiAg dm9pZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YWNrLmMKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9zdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9zdGFjay5jCTIwMTEtMDctMjIgMjA6MTI6MDUuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhY2suYwkyMDExLTA3LTIyIDIwOjE3 OjIyLjAwMDAwMDAwMCArMDIwMAotQEAgLTE1MjQsNiArMTUyNCw4IEBAIGl0ZXJhdGVfb3Zlcl9i bG9ja19sb2NhbHMgKHN0cnVjdCBibG9jayAKKy0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcv Z2RiL3N0YWNrLmMJMjAxMi0wNi0wMiAyMTozMjo0MS43NDY1NjcyOTkgKzAyMDAKKysrKyBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9zdGFjay5jCTIwMTItMDYtMDIgMjE6MzI6NTQuMzM1NTYyNDg4 ICswMjAwCitAQCAtMTgzOCw2ICsxODM4LDggQEAgaXRlcmF0ZV9vdmVyX2Jsb2NrX2xvY2FscyAo c3RydWN0IGJsb2NrCiAgCWNhc2UgTE9DX0NPTVBVVEVEOgogIAkgIGlmIChTWU1CT0xfSVNfQVJH VU1FTlQgKHN5bSkpCiAgCSAgICBicmVhazsKQEAgLTM4OSwxMSArMzkwLDExIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFjay5jCiAgCSAgKCpjYikgKFNZTUJPTF9QUklOVF9O QU1FIChzeW0pLCBzeW0sIGNiX2RhdGEpOwogIAkgIGJyZWFrOwogIAotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3N5bXRhYi5oCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv c3ltdGFiLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3N5 bXRhYi5oCTIwMTEtMDctMjIgMjA6MTI6MDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvc3ltdGFiLmgJMjAxMS0wNy0yMiAyMDoxODo1OC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0zOTYsNyArMzk2LDEwIEBAIHR5cGVkZWYgZW51bSBkb21haW5fZW51bV90YWcKKy0t LSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTItMDYtMDIgMjE6MzI6 NDEuNzQ2NTY3Mjk5ICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvc3ltdGFiLmgJ MjAxMi0wNi0wMiAyMTozMjo1NC4zNDI1NjI0ODYgKzAyMDAKK0BAIC0zODksNyArMzg5LDEwIEBA IHR5cGVkZWYgZW51bSBkb21haW5fZW51bV90YWcKICAKICAgIC8qIExBQkVMX0RPTUFJTiBtYXkg YmUgdXNlZCBmb3IgbmFtZXMgb2YgbGFiZWxzIChmb3IgZ290b3MpLiAgKi8KICAKQEAgLTQwNSwx MCArNDA2LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW10YWIuaAogIH0g ZG9tYWluX2VudW07CiAgCiAgLyogU2VhcmNoaW5nIGRvbWFpbnMsIHVzZWQgZm9yIGBzZWFyY2hf c3ltYm9scycuICBFbGVtZW50IG51bWJlcnMgYXJlCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9jb21tb24tYmxvY2suZXhwCTIwMTEtMDctMjIgMjA6MTc6MjIuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1i bG9jay5leHAJMjAxMi0wNi0wMiAyMTozMjo1NC4zNDQ1NjI0ODQgKzAyMDAKIEBAIC0wLDAgKzEs MTAxIEBACiArIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKQEAgLTUxMSwxMCArNTEyLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogK2dkYl90ZXN0ICJwIGl4X3gi ICIgPSAxICoiICJwIGl4X3ggaW4iCiArZ2RiX3Rlc3QgInAgaXlfeSIgIiA9IDIgKiIgInAgaXlf eSBpbiIKICtnZGJfdGVzdCAicCBpel96MiIgIiA9IDMgKiIgInAgaXpfejIgaW4iCi1JbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9j ay5mOTAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vY29tbW9uLWJsb2NrLmY5MAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCTIwMTEtMDctMjIgMjA6MTc6MjIu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAJMjAxMi0wNi0wMiAyMTozMjo1NC4zNDU1NjI0ODMg KzAyMDAKIEBAIC0wLDAgKzEsNjcgQEAKICshIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKyEKCmRpZmYgLS1naXQgYS9nZGItb2JqZmlsZS1vcmRlci5wYXRj aCBiL2dkYi1vYmpmaWxlLW9yZGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLmFmZDQ2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItb2JqZmlsZS1vcmRlci5wYXRj aApAQCAtMCwwICsxLDIxNSBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTItMDUvbXNnMDExMDUuaHRtbAorU3ViamVjdDogW1JGQS9jb21taXQgMS8zXSBSZXZlcnQg IlNlYXJjaCBnbG9iYWwgc3ltYm9scyBmcm9tIHRoZSBleHByZXNzaW9uJ3MgYmxvY2sgb2JqZmls ZSBmaXJzdC4iCisKK1RoZSBzZWFyY2ggb3JkZXIgdXNlZCBpbiB0aGlzIHBhdGNoIGJyZWFrcyBn bG9iYWwgc3ltYm9sIGxvb2t1cHMKK2ZvciBjZXJ0YWluIHN5bWJvbHMgd2hlbiBjb3B5LXJlbG9j YXRpb24gaXMgdXNlZC4gIEEgc2xpZ2h0bHkgZGlmZmVyZW50CitzZWFyY2ggb3JkZXIgd2lsbCBi ZSBpbXBsZW1lbnRlZCBsYXRlci4KKworZ2RiL0NoYW5nZUxvZzoKKworICAgICAgICBSZXZlcnQg dGhlIGZvbGxvd2luZyBwYXRjaDoKKyAgICAgICAgKiBmaW5kdmFyLmMgKGRlZmF1bHRfcmVhZF92 YXJfdmFsdWUpOiBGb3IgTE9DX1VOUkVTT0xWRUQgc3ltYm9scywKKyAgICAgICAgdHJ5IGxvY2F0 aW5nIHRoZSBzeW1ib2wgaW4gdGhlIHN5bWJvbCdzIG93biBvYmpmaWxlIGZpcnN0LCBiZWZvcmUK KyAgICAgICAgZXh0ZW5kaW5nIHRoZSBzZWFyY2ggdG8gYWxsIG9iamZpbGVzLgorICAgICAgICAq IHN5bXRhYi5jIChsb29rdXBfc3ltYm9sX2F1eF9vYmpmaWxlKTogTmV3IGZ1bmN0aW9uLCBleHRy YWN0ZWQKKyAgICAgICAgb3V0IG9mIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMuCisgICAgICAg IChsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzKTogQWRkIG5ldyBwYXJhbWV0ZXIgImV4Y2x1ZGVf b2JqZmlsZSIuCisgICAgICAgIFJlcGxhY2UgZXh0cmFjdGVkLW91dCBjb2RlIGJ5IGNhbGwgdG8g bG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZS4KKyAgICAgICAgRG8gbm90IHNlYXJjaCBFWENMVURF X09CSkZJTEUuCisgICAgICAgIChsb29rdXBfc3RhdGljX3N5bWJvbF9hdXgpOiBVcGRhdGUgY2Fs bCB0byBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzLgorICAgICAgICAobG9va3VwX3N5bWJvbF9n bG9iYWwpOiBTZWFyY2ggZm9yIG1hdGNoZXMgaW4gdGhlIGJsb2NrJ3Mgb2JqZmlsZQorICAgICAg ICBmaXJzdCwgYmVmb3JlIHNlYXJjaGluZyBhbGwgb3RoZXIgb2JqZmlsZXMuCisKK1dpbGwgY29t bWl0IGlmIHBhdGNoZXMgIzIgJiAjMyBhcmUgT0suCisKKy0tLQorIGdkYi9maW5kdmFyLmMgfCAg IDEwICstLS0tLQorIGdkYi9zeW10YWIuYyAgfCAgMTA4ICsrKysrKysrKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzMg aW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvZmluZHZh ci5jIGIvZ2RiL2ZpbmR2YXIuYworaW5kZXggZWQ3OTAzYy4uOTAwOWU2ZiAxMDA2NDQKKy0tLSBh L2dkYi9maW5kdmFyLmMKKysrKyBiL2dkYi9maW5kdmFyLmMKK0BAIC01NjIsMTUgKzU2Miw3IEBA IGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lKQorIAlzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisgCXN0cnVjdCBv Ympfc2VjdGlvbiAqb2JqX3NlY3Rpb247CisgCistCS8qIEZpcnN0LCB0cnkgbG9jYXRpbmcgdGhl IGFzc29jaWF0ZWQgbWluaW1hbCBzeW1ib2wgd2l0aGluCistCSAgIHRoZSBzYW1lIG9iamZpbGUu ICBUaGlzIHByZXZlbnRzIHVzIGZyb20gc2VsZWN0aW5nIGFub3RoZXIKKy0JICAgc3ltYm9sIHdp dGggdGhlIHNhbWUgbmFtZSBidXQgbG9jYXRlZCBpbiBhIGRpZmZlcmVudCBvYmpmaWxlLiAgKi8K Ky0JbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAodmFy KSwgTlVMTCwKKy0JCQkJICAgICAgU1lNQk9MX1NZTVRBQiAodmFyKS0+b2JqZmlsZSk7CistCS8q IElmIHRoZSBsb29rdXAgZmFpbGVkLCB0cnkgZXhwYW5kaW5nIHRoZSBzZWFyY2ggdG8gYWxsCist CSAgIG9iamZpbGVzLiAgKi8KKy0JaWYgKG1zeW0gPT0gTlVMTCkKKy0JICBtc3ltID0gbG9va3Vw X21pbmltYWxfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1FICh2YXIpLCBOVUxMLCBOVUxMKTsK KysJbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAodmFy KSwgTlVMTCwgTlVMTCk7CisgCWlmIChtc3ltID09IE5VTEwpCisgCSAgZXJyb3IgKF8oIk5vIGds b2JhbCBzeW1ib2wgXCIlc1wiLiIpLCBTWU1CT0xfTElOS0FHRV9OQU1FICh2YXIpKTsKKyAJaWYg KG92ZXJsYXlfZGVidWdnaW5nKQorZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10 YWIuYworaW5kZXggODVkZGQxZC4uMzlkOGM2ZiAxMDA2NDQKKy0tLSBhL2dkYi9zeW10YWIuYwor KysrIGIvZ2RiL3N5bXRhYi5jCitAQCAtOTUsOCArOTUsNyBAQCBzdHJ1Y3Qgc3ltYm9sICpsb29r dXBfc3ltYm9sX2F1eF9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKKyBzdGF0aWMKKyBzdHJ1Y3Qg c3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsCisgCQkJ CQkgIGNvbnN0IGNoYXIgKm5hbWUsCistCQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwK Ky0JCQkJCSAgc3RydWN0IG9iamZpbGUgKmV4Y2x1ZGVfb2JqZmlsZSk7CisrCQkJCQkgIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbik7CisgCisgc3RhdGljCisgc3RydWN0IHN5bWJvbCAqbG9va3Vw X3N5bWJvbF9hdXhfcXVpY2sgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTEzNjAsNyAr MTM1OSw3IEBAIGxvb2t1cF9zdGF0aWNfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29u c3QgZG9tYWluX2VudW0gZG9tYWluKQorICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisgICBz dHJ1Y3Qgc3ltYm9sICpzeW07CisgCistICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJz IChTVEFUSUNfQkxPQ0ssIG5hbWUsIGRvbWFpbiwgTlVMTCk7CisrICBzeW0gPSBsb29rdXBfc3lt Ym9sX2F1eF9zeW10YWJzIChTVEFUSUNfQkxPQ0ssIG5hbWUsIGRvbWFpbik7CisgICBpZiAoc3lt ICE9IE5VTEwpCisgICAgIHJldHVybiBzeW07CisgCitAQCAtMTQ5OSw2MSArMTQ5OCw0MCBAQCBs b29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpt YWluX29iamZpbGUsCisgICByZXR1cm4gTlVMTDsKKyB9CisgCistLyogQ2hlY2sgdG8gc2VlIGlm IHRoZSBzeW1ib2wgaXMgZGVmaW5lZCBpbiBvbmUgb2YgdGhlIE9CSkZJTEUncworLSAgIHN5bXRh YnMuICBCTE9DS19JTkRFWCBzaG91bGQgYmUgZWl0aGVyIEdMT0JBTF9CTE9DSyBvciBTVEFUSUNf QkxPQ0ssCisrLyogQ2hlY2sgdG8gc2VlIGlmIHRoZSBzeW1ib2wgaXMgZGVmaW5lZCBpbiBvbmUg b2YgdGhlIHN5bXRhYnMuCisrICAgQkxPQ0tfSU5ERVggc2hvdWxkIGJlIGVpdGhlciBHTE9CQUxf QkxPQ0sgb3IgU1RBVElDX0JMT0NLLAorICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIG9yIG5vdCB3 ZSB3YW50IHRvIHNlYXJjaCBnbG9iYWwgc3ltYm9scyBvcgorICAgIHN0YXRpYyBzeW1ib2xzLiAg Ki8KKyAKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCistbG9va3VwX3N5bWJvbF9hdXhfb2JqZmls ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBibG9ja19pbmRleCwKKy0JCQkgICBjb25z dCBjaGFyICpuYW1lLCBjb25zdCBkb21haW5fZW51bSBkb21haW4pCisteworLSAgc3RydWN0IHN5 bWJvbCAqc3ltID0gTlVMTDsKKy0gIHN0cnVjdCBibG9ja3ZlY3RvciAqYnY7CistICBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrOworLSAgc3RydWN0IHN5bXRhYiAqczsKKy0KKy0gIGlmIChvYmpm aWxlLT5zZikKKy0gICAgb2JqZmlsZS0+c2YtPnFmLT5wcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hp bmcgKG9iamZpbGUsIGJsb2NrX2luZGV4LAorLQkJCQkJCSAgbmFtZSwgZG9tYWluKTsKKy0KKy0g IEFMTF9PQkpGSUxFX1NZTVRBQlMgKG9iamZpbGUsIHMpCistICAgIGlmIChzLT5wcmltYXJ5KQor LSAgICAgIHsKKy0JYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CistCWJsb2NrID0gQkxPQ0tWRUNUT1Jf QkxPQ0sgKGJ2LCBibG9ja19pbmRleCk7CistCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJs b2NrLCBuYW1lLCBkb21haW4pOworLQlpZiAoc3ltKQorLQkgIHsKKy0JICAgIGJsb2NrX2ZvdW5k ID0gYmxvY2s7CistCSAgICByZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmls ZSk7CistCSAgfQorLSAgICAgIH0KKy0KKy0gIHJldHVybiBOVUxMOworLX0KKy0KKy0vKiBTYW1l IGFzIGxvb2t1cF9zeW1ib2xfYXV4X29iamZpbGUsIGV4Y2VwdCB0aGF0IGl0IHNlYXJjaGVzIGFs bAorLSAgIG9iamZpbGVzIGV4Y2VwdCBmb3IgRVhDTFVERV9PQkpGSUxFLiAgUmV0dXJuIHRoZSBm aXJzdCBtYXRjaCBmb3VuZC4KKy0KKy0gICBJZiBFWENMVURFX09CSkZJTEUgaXMgTlVMTCwgdGhl biBhbGwgb2JqZmlsZXMgYXJlIHNlYXJjaGVkLiAgKi8KKy0KKy1zdGF0aWMgc3RydWN0IHN5bWJv bCAqCisgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBj aGFyICpuYW1lLAorLQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKKy0JCQkgICBzdHJ1 Y3Qgb2JqZmlsZSAqZXhjbHVkZV9vYmpmaWxlKQorKwkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRv bWFpbikKKyB7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZTsKKysgIHN0cnVjdCBibG9ja3ZlY3RvciAqYnY7CisrICBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrOworKyAgc3RydWN0IHN5bXRhYiAqczsKKyAKKyAgIEFMTF9PQkpGSUxFUyAob2JqZmls ZSkKKyAgIHsKKy0gICAgaWYgKG9iamZpbGUgIT0gZXhjbHVkZV9vYmpmaWxlKQorLSAgICAgIHsK Ky0Jc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfb2JqZmlsZSAob2JqZmlsZSwgYmxvY2tfaW5kZXgs IG5hbWUsIGRvbWFpbik7CistCWlmIChzeW0pCistCSAgcmV0dXJuIHN5bTsKKy0gICAgICB9Cisr ICAgIGlmIChvYmpmaWxlLT5zZikKKysgICAgICBvYmpmaWxlLT5zZi0+cWYtPnByZV9leHBhbmRf c3ltdGFic19tYXRjaGluZyAob2JqZmlsZSwKKysJCQkJCQkgICAgYmxvY2tfaW5kZXgsCisrCQkJ CQkJICAgIG5hbWUsIGRvbWFpbik7CisrCisrICAgIEFMTF9PQkpGSUxFX1NZTVRBQlMgKG9iamZp bGUsIHMpCisrICAgICAgaWYgKHMtPnByaW1hcnkpCisrCXsKKysJICBidiA9IEJMT0NLVkVDVE9S IChzKTsKKysJICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgYmxvY2tfaW5kZXgpOwor KwkgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4pOworKwkg IGlmIChzeW0pCisrCSAgICB7CisrCSAgICAgIGJsb2NrX2ZvdW5kID0gYmxvY2s7CisrCSAgICAg IHJldHVybiBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3ltLCBvYmpmaWxlKTsKKysJICAgIH0KKysJ fQorICAgfQorIAorICAgcmV0dXJuIE5VTEw7CitAQCAtMTY3OSw0NiArMTY1NywyNCBAQCBsb29r dXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKKyAJCSAgICAgIGNvbnN0IGRvbWFp bl9lbnVtIGRvbWFpbikKKyB7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBOVUxMOworLSAgc3Ry dWN0IG9iamZpbGUgKmJsb2NrX29iamZpbGUgPSBOVUxMOworICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUgPSBOVUxMOworIAorICAgLyogQ2FsbCBsaWJyYXJ5LXNwZWNpZmljIGxvb2t1cCBwcm9j ZWR1cmUuICAqLworLSAgYmxvY2tfb2JqZmlsZSA9IGxvb2t1cF9vYmpmaWxlX2Zyb21fYmxvY2sg KGJsb2NrKTsKKy0gIGlmIChibG9ja19vYmpmaWxlICE9IE5VTEwpCistICAgIHN5bSA9IHNvbGli X2dsb2JhbF9sb29rdXAgKGJsb2NrX29iamZpbGUsIG5hbWUsIGRvbWFpbik7CisrICBvYmpmaWxl ID0gbG9va3VwX29iamZpbGVfZnJvbV9ibG9jayAoYmxvY2spOworKyAgaWYgKG9iamZpbGUgIT0g TlVMTCkKKysgICAgc3ltID0gc29saWJfZ2xvYmFsX2xvb2t1cCAob2JqZmlsZSwgbmFtZSwgZG9t YWluKTsKKyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsKKyAKKy0gIC8qIElm IEJMT0NLX09CSkZJTEUgaXMgbm90IE5VTEwsIHRoZW4gc2VhcmNoIHRoaXMgb2JqZmlsZSBmaXJz dC4KKy0gICAgIEluIGNhc2UgdGhlIGdsb2JhbCBzeW1ib2wgaXMgZGVmaW5lZCBpbiBtdWx0aXBs ZSBvYmpmaWxlcywKKy0gICAgIHdlIGhhdmUgYSBiZXR0ZXIgY2hhbmNlIG9mIGZpbmRpbmcgdGhl IG1vc3QgcmVsZXZhbnQgc3ltYm9sLiAgKi8KKy0KKy0gIGlmIChibG9ja19vYmpmaWxlICE9IE5V TEwpCistICAgIHsKKy0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9vYmpmaWxlIChibG9j a19vYmpmaWxlLCBHTE9CQUxfQkxPQ0ssCistCQkJCSAgICAgICBuYW1lLCBkb21haW4pOworLSAg ICAgIGlmIChzeW0gPT0gTlVMTCkKKy0Jc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfcXVpY2sgKGJs b2NrX29iamZpbGUsIEdMT0JBTF9CTE9DSywKKy0JCQkJICAgICAgIG5hbWUsIGRvbWFpbik7Cist ICAgICAgaWYgKHN5bSAhPSBOVUxMKQorLQlyZXR1cm4gc3ltOworLSAgICB9CistCistICAvKiBT eW1ib2wgbm90IGZvdW5kIGluIHRoZSBCTE9DS19PQkpGSUxFLCBzbyB0cnkgYWxsIHRoZSBvdGhl cgorLSAgICAgb2JqZmlsZXMsIHN0YXJ0aW5nIHdpdGggc3ltdGFicyBmaXJzdCwgYW5kIHRoZW4g cGFydGlhbCBzeW10YWJzLiAgKi8KKy0KKy0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRh YnMgKEdMT0JBTF9CTE9DSywgbmFtZSwgZG9tYWluLCBibG9ja19vYmpmaWxlKTsKKysgIHN5bSA9 IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKEdMT0JBTF9CTE9DSywgbmFtZSwgZG9tYWluKTsK KyAgIGlmIChzeW0gIT0gTlVMTCkKKyAgICAgcmV0dXJuIHN5bTsKKyAKKyAgIEFMTF9PQkpGSUxF UyAob2JqZmlsZSkKKyAgIHsKKy0gICAgaWYgKG9iamZpbGUgIT0gYmxvY2tfb2JqZmlsZSkKKy0g ICAgICB7CistCXN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3F1aWNrIChvYmpmaWxlLCBHTE9CQUxf QkxPQ0ssIG5hbWUsIGRvbWFpbik7CistCWlmIChzeW0pCistCSAgcmV0dXJuIHN5bTsKKy0gICAg ICB9CisrICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3F1aWNrIChvYmpmaWxlLCBHTE9CQUxf QkxPQ0ssIG5hbWUsIGRvbWFpbik7CisrICAgIGlmIChzeW0pCisrICAgICAgcmV0dXJuIHN5bTsK KyAgIH0KKyAKKyAgIHJldHVybiBOVUxMOworLS0gCisxLjcuMQorCgpkaWZmIC0tZ2l0IGEvZ2Ri LXBwYy13YXRjaHBvaW50LnBhdGNoIGIvZ2RiLXBwYy13YXRjaHBvaW50LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTU2ODgzLi4wMDAwMDAwCi0tLSBhL2dkYi1wcGMtd2F0 Y2hwb2ludC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLWh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODI3NjAwCi1SZTogW1BBVENIXSBkaXNh YmxlIHB0cmFjZSBCb29rRSBpbnRlcmZhY2UgZm9yIFBvd2VyUEMgc2VydmVyIHByb2Nlc3NvcnMK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTA1L21zZzAxMTA3Lmh0 bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDUvbXNnMDAyMjEuaHRt bAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8zMSAxODo0NDo0NwkxLjE0MzA2Ci0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNS8zMSAyMjowNzoyOQkxLjE0MzA3Ci0jIyAtMSwz ICsxLDkgQEAKLSsyMDEyLTA1LTMxICBFZGp1bmlvciBNYWNoYWRvICA8ZW1hY2hhZG9AbGludXgu dm5ldC5pYm0uY29tPgotKwotKwkqIHBwYy1saW51eC1uYXQuYyAoaGF2ZV9wdHJhY2VfYm9va2Vf aW50ZXJmYWNlKTogRGlzYWJsZSBwdHJhY2UKLSsJQm9va0UgaW50ZXJmYWNlIGZvciBQb3dlclBD IHNlcnZlciBwcm9jZXNzb3JzIGlmIG5vdCBhdmFpbGFibGUKLSsJaW4gdGhlIExpbnV4IEtlcm5l bC4KLSsKLSAyMDEyLTA1LTMxICBLZWl0aCBTZWl0eiAgPGtlaXRoc0ByZWRoYXQuY29tPgotIAot IAkqIGxpbmVzcGVjLmMgKGRlY29kZV9vYmpjKTogQWRkIGNsZWFudXAgdG8gZnJlZQotLS0tIHNy Yy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTIvMDUvMzAgMTM6Mzc6MTcJMS4xMTIKLSsrKyBzcmMv Z2RiL3BwYy1saW51eC1uYXQuYwkyMDEyLzA1LzMxIDIyOjA3OjMxCTEuMTEzCi1AQCAtMTQyMSwx NyArMTQyMSwyMCBAQAotICAgICAgIC8qIENoZWNrIGZvciBrZXJuZWwgc3VwcG9ydCBmb3IgQk9P S0UgZGVidWcgcmVnaXN0ZXJzLiAgKi8KLSAgICAgICBpZiAocHRyYWNlIChQUENfUFRSQUNFX0dF VEhXREJHSU5GTywgdGlkLCAwLCAmYm9va2VfZGVidWdfaW5mbykgPj0gMCkKLSAJewotLQkgIGhh dmVfcHRyYWNlX2Jvb2tlX2ludGVyZmFjZSA9IDE7Ci0tCSAgbWF4X3Nsb3RzX251bWJlciA9IGJv b2tlX2RlYnVnX2luZm8ubnVtX2luc3RydWN0aW9uX2JwcwotLQkgICAgKyBib29rZV9kZWJ1Z19p bmZvLm51bV9kYXRhX2JwcwotLQkgICAgKyBib29rZV9kZWJ1Z19pbmZvLm51bV9jb25kaXRpb25f cmVnczsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIC8qIE9sZCBzY2hvb2wgaW50ZXJmYWNl IGFuZCBubyBCT09LRSBkZWJ1ZyByZWdpc3RlcnMgc3VwcG9ydC4gICovCi0tCSAgaGF2ZV9wdHJh Y2VfYm9va2VfaW50ZXJmYWNlID0gMDsKLS0JICBtZW1zZXQgKCZib29rZV9kZWJ1Z19pbmZvLCAw LCBzaXplb2YgKHN0cnVjdCBwcGNfZGVidWdfaW5mbykpOwotKwkgIC8qIENoZWNrIHdoZXRoZXIg cHRyYWNlIEJPT0tFIGludGVyZmFjZSBpcyBmdW5jdGlvbmFsIGFuZAotKwkgICAgIHByb3ZpZGVz IGFueSBzdXBwb3J0ZWQgZmVhdHVyZS4gICovCi0rCSAgaWYgKGJvb2tlX2RlYnVnX2luZm8uZmVh dHVyZXMgIT0gMCkKLSsJICAgIHsKLSsJICAgICAgaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNl ID0gMTsKLSsJICAgICAgbWF4X3Nsb3RzX251bWJlciA9IGJvb2tlX2RlYnVnX2luZm8ubnVtX2lu c3RydWN0aW9uX2JwcwotKwkgICAgICAgICsgYm9va2VfZGVidWdfaW5mby5udW1fZGF0YV9icHMK LSsJICAgICAgICArIGJvb2tlX2RlYnVnX2luZm8ubnVtX2NvbmRpdGlvbl9yZWdzOwotKwkgICAg ICByZXR1cm4gaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlOwotKwkgICAgfQotIAl9Ci0rICAg ICAgLyogT2xkIHNjaG9vbCBpbnRlcmZhY2UgYW5kIG5vIEJPT0tFIGRlYnVnIHJlZ2lzdGVycyBz dXBwb3J0LiAgKi8KLSsgICAgICBoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgPSAwOwotKyAg ICAgIG1lbXNldCAoJmJvb2tlX2RlYnVnX2luZm8sIDAsIHNpemVvZiAoc3RydWN0IHBwY19kZWJ1 Z19pbmZvKSk7Ci0gICAgIH0KLSAKLSAgIHJldHVybiBoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZh Y2U7CgpkaWZmIC0tZ2l0IGEvZ2RiLXByb2xvZ3VlLW5vdC1za2lwcGVkLnBhdGNoIGIvZ2RiLXBy b2xvZ3VlLW5vdC1za2lwcGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk YTVjZTEzLi4wMDAwMDAwCi0tLSBhL2dkYi1wcm9sb2d1ZS1ub3Qtc2tpcHBlZC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxMi0wMi9tc2cwMDY3My5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIEZpeCByZWdy ZXNzaW9uIGJ5IG1lIGZvciBnY2MtNC4wLi4uZ2NjLTQuNCBpMzg2IC1PMiAtZyBwYXJhbWV0ZXJz IChQUiAxMzc3NykKLQotSGksCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93 X2J1Zy5jZ2k/aWQ9MTM3NzcKLQotZm9yIENlbnRPUy01IGkzODYgbHM6Ci0KLSQgZ2RiIGxzCi0o Z2RiKSBzdGFydAotVGVtcG9yYXJ5IGJyZWFrcG9pbnQgMSwgbWFpbiAoYXJnYz1DYW5ub3QgYWNj ZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4ODFiN2M3Y2QKLQotaW5zdGVhZCBvZiBHREIgYmVmb3Jl IG15IFBSIDEyNTczIGZpeC9jaGFuZ2U6Ci0KLVRlbXBvcmFyeSBicmVha3BvaW50IDEsIG1haW4g KGFyZ2M9MSwgLi4uCi0KLUkgYXNrZWQgYmVmb3JlIG9uICNnY2Mgc2luY2Ugd2hpY2ggdmVyc2lv bnMgR0NDIHByb2R1Y2VkIERXX0FUX2xvY2F0aW9uIHdoaWNoCi1pcyBmb3IgYW55IFBDIGVpdGhl ciBvcHRpbWl6ZWQtb3V0IG9yIGl0IGhhcyB2YWxpZCB2YWx1ZS4gIEkgd2FzIHRvbGQgc2luY2UK LWdjYy00LjAuICBCdXQgdGhhdCBpcyBub3QgdHJ1ZS4KLQotSSBoYXZlIGJpc2VjdGVkIGdjYyBh bmQgSSBmb3VuZCA0LjQuMCB3YXMgc3RpbGwgYnJva2VuLCA0LjUuMCB3YXMgY29ycmVjdCwKLXRo YW5rcyB0bzoKLWNvbW1pdCAyNWU4ODBiMTkxN2JkNmJiZjA3ZTg2YjU1NzRjNjk4ZjNlOTQ3MmQ5 Ci1BdXRob3I6IHJ0aCA8cnRoQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4K LURhdGU6ICAgU2F0IE1heSAzMCAwMDozMzo0NiAyMDA5ICswMDAwCi1naXQtc3ZuLWlkOiBzdm4r c3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AxNDc5OTUgMTM4YmM3NWQtMGQwNC0wNDEw LTk2MWYtODJlZTcyYjA1NGE0Ci11bndpbmQgaW5mbyBmb3IgZXBpbG9ndWVzCi0KLUN1cmlvdXNs eSA0LjQueCBicmFuY2ggZ290IGxhdGVyIGFsc28gZml4ZWQgaW4gdGhpcyBjYXNlIGJ5OgotY29t bWl0IDYxZGI4YmQyMzJkYWVlZDM3NTFiNDM1NzBmYWIxNjE0NjE0NWUwOTYKLUF1dGhvcjogamFr dWIgPGpha3ViQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6ICAg VHVlIEp1biAyIDA3OjE4OjE2IDIwMDkgKzAwMDAKLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2Mu Z251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy00XzQtYnJhbmNoQDE0ODA3MCAxMzhiYzc1ZC0w ZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLShidXQgdGhhdCBtaXNzZWQgNC40LjApCi0KLUFz IDQuNS4wIHdhcyBmaXJzdCBGU0YgR0NDIHdpdGggVlRBIEkgd2FzIHRydXN0aW5nIG1vcmUgdGhl IHZhbGlkaXR5IG9ubHkKLWFmdGVyIFZUQSBhbmQgdGhlc2UgaGV1cmlzdGljIHJlc3VsdHMgc2Vl bXMgdG8gY29uZmlybSB0aGF0LgotCi1JIGZpbmQgdGhlIGNoYW5nZSBiZWxvdyBkZWZpbml0ZWx5 IHNhZmUuCi0KLVNvbWVvbmUgbWF5IG9iamVjdCB0aGUgb3JpZ2luYWwgUFIgMTI1NzMgKGRvIG5v dCB0cnkgdG8gc2tpcCBwcm9sb2d1ZSBmb3IgLU8yCi0tZyBjb2RlIGFzIGl0IG1heSBjYXVzZSBt b3JlIGNvbmZ1c2lvbiB0aGFuIGFueXRoaW5nIGVsc2UpIGFzIHdoaWxlIGl0IGZpeGVkCi1zb21l IEdEQiBjcmFzaGVzIHRoZXJlIGlzIG5vIHN1Y2ggcHVycG9zZSBhbnltb3JlIHdpdGggVG9tJ3MK LWFtYmlndW91cy1saW5lc3BlYyBwYXRjaC4gIFN0aWxsIEkgYmVsaWV2ZSBQUiAxMjU3MyB3YXMg cmlnaHQgdG8gZG8uCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2 fS1mZWRvcmExNy1saW51eC1nbnUuCi0KLUkgd2lsbCBjaGVjayBpdCBpbi4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi1nZGIvCi0yMDEyLTAyLTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQlQUiBzeW10YWIvMTM3NzcKLQkqIGR3YXJmMnJlYWQuYyAocHJv Y2Vzc19mdWxsX2NvbXBfdW5pdCk6IFNldCBMT0NBVElPTlNfVkFMSUQgb25seSBmb3IKLQlHQ0Mg Pj00LjUuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEyLTAyLTI4ICBKYW4gS3JhdG9jaHZpbCAgPGph bi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQUiBzeW10YWIvMTM3NzcKLQkqIGdkYi5kd2Fy ZjIvZHcyLXNraXAtcHJvbG9ndWUuUyAoRFdfQVRfcHJvZHVjZXIpOiBTZXQgaXQgdG8gNC41LjAu Ci0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC00 ODQxLDcgKzQ4NDEsOSBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpwZXJfY3UpCi0gCi0gICAgICAgLyogR0NDLTQuMCBoYXMgc3RhcnRlZCB0byBz dXBwb3J0IC1mdmFyLXRyYWNraW5nLiAgR0NDLTMueCBzdGlsbCBjYW4KLSAJIHByb2R1Y2UgRFdf QVRfbG9jYXRpb24gd2l0aCBsb2NhdGlvbiBsaXN0cyBidXQgaXQgY2FuIGJlIHBvc3NpYmx5Ci0t CSBpbnZhbGlkIHdpdGhvdXQgLWZ2YXItdHJhY2tpbmcuCi0rCSBpbnZhbGlkIHdpdGhvdXQgLWZ2 YXItdHJhY2tpbmcuICBTdGlsbCB1cCB0byBHQ0MtNC40LnggaW5jbC4gNC40LjAKLSsJIHRoZXJl IHdlcmUgYnVncyBpbiBwcm9sb2d1ZSBkZWJ1ZyBpbmZvLCBmaXhlZCBsYXRlciBpbiBHQ0MtNC41 Ci0rCSBieSAidW53aW5kIGluZm8gZm9yIGVwaWxvZ3VlcyIgcGF0Y2ggKHdoaWNoIGlzIG5vdCBk aXJlY3RseSByZWxhdGVkKS4KLSAKLSAJIEZvciAtZ2R3YXJmLTQgdHlwZSB1bml0cyBMT0NBVElP TlNfVkFMSUQgaW5kaWNhdGlvbiBpcyBmb3J0dW5hdGVseSBub3QKLSAJIG5lZWRlZCwgaXQgd291 bGQgYmUgd3JvbmcgZHVlIHRvIG1pc3NpbmcgRFdfQVRfcHJvZHVjZXIgdGhlcmUuCi1AQCAtNDg0 OSw3ICs0ODUxLDcgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqcGVyX2N1KQotIAkgU3RpbGwgb25lIGNhbiBjb25mdXNlIEdEQiBieSB1c2luZyBu b24tc3RhbmRhcmQgR0NDIGNvbXBpbGF0aW9uCi0gCSBvcHRpb25zIC0gdGhpcyB3YWl0cyBvbiBH Q0MgUFIgb3RoZXIvMzI5OTggKC1mcmVjb3JkLWdjYy1zd2l0Y2hlcykuCi0gCSAqLyAKLS0gICAg ICBpZiAoY3UtPmhhc19sb2NsaXN0ICYmIGdjY180X21pbm9yID49IDApCi0rICAgICAgaWYgKGN1 LT5oYXNfbG9jbGlzdCAmJiBnY2NfNF9taW5vciA+PSA1KQotIAlzeW10YWItPmxvY2F0aW9uc192 YWxpZCA9IDE7Ci0gCi0gICAgICAgaWYgKGdjY180X21pbm9yID49IDUpCi0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLXNraXAtcHJvbG9ndWUuUwotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1za2lwLXByb2xvZ3VlLlMKLUBAIC0zMCw3ICszMCw3IEBACi0gCS40 Ynl0ZQlmdW5jX3N0YXJ0CQkJLyogRFdfQVRfbG93X3BjICovCi0gCS40Ynl0ZQlmdW5jX2VuZAkJ CS8qIERXX0FUX2hpZ2hfcGMgKi8KLSAJLmFzY2lpCSJtYWluLmNcMCIJCQkvKiBEV19BVF9uYW1l ICovCi0tCS5hc2NpaQkiR05VIEMgNC4wLjBcMCIJCQkvKiBEV19BVF9wcm9kdWNlciBtdXN0IGJl ID49IDQuMCAgKi8KLSsJLmFzY2lpCSJHTlUgQyA0LjUuMFwwIgkJCS8qIERXX0FUX3Byb2R1Y2Vy IG11c3QgYmUgPj0gNC41ICAqLwotIAkuYnl0ZQkyCQkJCS8qIERXX0FUX2xhbmd1YWdlIChEV19M QU5HX0MpICovCi0gCi0gCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJwcm9ncmFt ICovCi0KCmRpZmYgLS1naXQgYS9nZGItcmhlbDUtY29tcGF0LnBhdGNoIGIvZ2RiLXJoZWw1LWNv bXBhdC5wYXRjaAppbmRleCA5MjFiMWExLi4yYjk0N2QzIDEwMDY0NAotLS0gYS9nZGItcmhlbDUt Y29tcGF0LnBhdGNoCisrKyBiL2dkYi1yaGVsNS1jb21wYXQucGF0Y2gKQEAgLTEsOSArMSw5IEBA Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMTAzMjgub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMS0wMy0yOCAxODo0NjoxNi4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9saW51eC1uYXQuYwkyMDEx LTAzLTI4IDE4OjQ3OjU2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE3NzQsOCArMTc3NCwyMiBAQCBn ZXRfcGVuZGluZ19zdGF0dXMgKHN0cnVjdCBsd3BfaW5mbyAqbHAsCi0gCQkJICAgIHRhcmdldF9z aWduYWxfdG9fc3RyaW5nIChzaWdubykpOworLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9n ZGIvbGludXgtbmF0LmMJMjAxMi0wNi0wMiAyMDo1NDozMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBn ZGItNy40LjUwLjIwMTIwNjAyL2dkYi9saW51eC1uYXQuYwkyMDEyLTA2LTAyIDIwOjU2OjAzLjk2 NjQ5MzM1MiArMDIwMAorQEAgLTE4MTYsOCArMTgxNiwyMiBAQCBnZXRfcGVuZGluZ19zdGF0dXMg KHN0cnVjdCBsd3BfaW5mbyAqbHAsCisgCQkJICAgIGdkYl9zaWduYWxfdG9fc3RyaW5nIChzaWdu bykpOwogICAgICB9CiAgCiAtICBpZiAoKnN0YXR1cyA9PSAwICYmIEdFVF9QSUQgKGxwLT5wdGlk KSA9PSBwaWRfd2FzX3N0b3BwZWQpCgpkaWZmIC0tZ2l0IGEvZ2RiLXN1YnJhbmdlLW5vLXR5cGUu cGF0Y2ggYi9nZGItc3VicmFuZ2Utbm8tdHlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggYWE3N2EwYS4uMDAwMDAwMAotLS0gYS9nZGItc3VicmFuZ2Utbm8tdHlwZS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi1jb21taXQgN2Q4YmRmYmRmZDBlMzhm YjMxNGQ3MDc4NWIwNTE2MTgxYjhkNGU3NwotQXV0aG9yOiBKYW4gS3JhdG9jaHZpbCA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KLURhdGU6ICAgTW9uIE1hciAyNiAyMDo0OTo1MSAyMDEyICsw MjAwCi0KLSAgICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTgw NjkyMAotICAgIGdkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuZXhwCi0KLS0tLSBhL2dk Yi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC05MDE0LDYgKzkwMTQs NDQgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi0gICAvKiBQcmVzZXJ2ZSBCQVNFX1RZUEUncyBvcmlnaW5hbCB0eXBlLCBq dXN0IHNldCBpdHMgTEVOR1RILiAgKi8KLSAgIGNoZWNrX3R5cGVkZWYgKGJhc2VfdHlwZSk7Ci0g Ci0rICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dzIHRvIGNyZWF0 ZSBzdWJyYW5nZSB0eXBlcwotKyAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgYmFzZSB0eXBlLgot KyAgICAgSW4gdGhhdCBjYXNlLCB0aGUgYmFzZSB0eXBlIG11c3QgYmUgc2V0IHRvIHRoZSB0eXBl IG9mCi0rICAgICB0aGUgbG93ZXIgYm91bmQsIHVwcGVyIGJvdW5kIG9yIGNvdW50LCBpbiB0aGF0 IG9yZGVyLCBpZiBhbnkgb2YgdGhlc2UKLSsgICAgIHRocmVlIGF0dHJpYnV0ZXMgcmVmZXJlbmNl cyBhbiBvYmplY3QgdGhhdCBoYXMgYSB0eXBlLgotKyAgICAgSWYgbm8gYmFzZSB0eXBlIGlzIGZv dW5kLCB0aGUgRHdhcmYtMiBzcGVjaWZpY2F0aW9ucyBzYXkgdGhhdAotKyAgICAgYSBzaWduZWQg aW50ZWdlciB0eXBlIG9mIHNpemUgZXF1YWwgdG8gdGhlIHNpemUgb2YgYW4gYWRkcmVzcyBzaG91 bGQKLSsgICAgIGJlIHVzZWQuCi0rICAgICBGb3IgdGhlIGZvbGxvd2luZyBDIGNvZGU6IGBleHRl cm4gY2hhciBnZGJfaW50IFtdOycKLSsgICAgIEdDQyBwcm9kdWNlcyBhbiBlbXB0eSByYW5nZSBE SUUuCi0rICAgICBGSVhNRTogbXVsbGVyLzIwMTAtMDUtMjg6IFBvc3NpYmxlIHJlZmVyZW5jZXMg dG8gb2JqZWN0IGZvciBsb3cgYm91bmQsCi0rICAgICBoaWdoIGJvdW5kIG9yIGNvdW50IGFyZSBu b3QgeWV0IGhhbmRsZWQgYnkgdGhpcyBjb2RlLiAgKi8KLSsgIGlmIChUWVBFX0NPREUgKGJhc2Vf dHlwZSkgPT0gVFlQRV9DT0RFX1ZPSUQpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSA9IGN1LT5vYmpmaWxlOwotKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0rICAgICAgaW50IGFkZHJfc2l6ZSA9IGdkYmFy Y2hfYWRkcl9iaXQgKGdkYmFyY2gpIC84OwotKyAgICAgIHN0cnVjdCB0eXBlICppbnRfdHlwZSA9 IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50OwotKwotKyAgICAgIC8qIFRlc3Qg ImludCIsICJsb25nIGludCIsIGFuZCAibG9uZyBsb25nIGludCIgb2JqZmlsZSB0eXBlcywKLSsJ IGFuZCBzZWxlY3QgdGhlIGZpcnN0IG9uZSBoYXZpbmcgYSBzaXplIGFib3ZlIG9yIGVxdWFsIHRv IHRoZQotKwkgYXJjaGl0ZWN0dXJlIGFkZHJlc3Mgc2l6ZS4gICovCi0rICAgICAgaWYgKGludF90 eXBlICYmIFRZUEVfTEVOR1RIIChpbnRfdHlwZSkgPj0gYWRkcl9zaXplKQotKwliYXNlX3R5cGUg PSBpbnRfdHlwZTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBpbnRfdHlwZSA9IG9iamZpbGVfdHlw ZSAob2JqZmlsZSktPmJ1aWx0aW5fbG9uZzsKLSsJICBpZiAoaW50X3R5cGUgJiYgVFlQRV9MRU5H VEggKGludF90eXBlKSA+PSBhZGRyX3NpemUpCi0rCSAgICBiYXNlX3R5cGUgPSBpbnRfdHlwZTsK LSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIGludF90eXBlID0gb2JqZmlsZV90eXBlIChvYmpm aWxlKS0+YnVpbHRpbl9sb25nX2xvbmc7Ci0rCSAgICAgIGlmIChpbnRfdHlwZSAmJiBUWVBFX0xF TkdUSCAoaW50X3R5cGUpID49IGFkZHJfc2l6ZSkKLSsJCWJhc2VfdHlwZSA9IGludF90eXBlOwot KwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSAgIC8qIFRoZSBkaWVfdHlwZSBjYWxsIGFib3ZlIG1h eSBoYXZlIGFscmVhZHkgc2V0IHRoZSB0eXBlIGZvciB0aGlzIERJRS4gICovCi0gICByYW5nZV90 eXBlID0gZ2V0X2RpZV90eXBlIChkaWUsIGN1KTsKLSAgIGlmIChyYW5nZV90eXBlKQotQEAgLTkx NDEsNDQgKzkxNzksNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5 cGUpID0gaGlnaDsKLSAgICAgfQotIAotLSAgLyogRHdhcmYtMiBzcGVjaWZpY2F0aW9ucyBleHBs aWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMKLS0gICAgIHdpdGhvdXQgc3Bl Y2lmeWluZyBhIGJhc2UgdHlwZS4KLS0gICAgIEluIHRoYXQgY2FzZSwgdGhlIGJhc2UgdHlwZSBt dXN0IGJlIHNldCB0byB0aGUgdHlwZSBvZgotLSAgICAgdGhlIGxvd2VyIGJvdW5kLCB1cHBlciBi b3VuZCBvciBjb3VudCwgaW4gdGhhdCBvcmRlciwgaWYgYW55IG9mIHRoZXNlCi0tICAgICB0aHJl ZSBhdHRyaWJ1dGVzIHJlZmVyZW5jZXMgYW4gb2JqZWN0IHRoYXQgaGFzIGEgdHlwZS4KLS0gICAg IElmIG5vIGJhc2UgdHlwZSBpcyBmb3VuZCwgdGhlIER3YXJmLTIgc3BlY2lmaWNhdGlvbnMgc2F5 IHRoYXQKLS0gICAgIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiBzaXplIGVxdWFsIHRvIHRoZSBz aXplIG9mIGFuIGFkZHJlc3Mgc2hvdWxkCi0tICAgICBiZSB1c2VkLgotLSAgICAgRm9yIHRoZSBm b2xsb3dpbmcgQyBjb2RlOiBgZXh0ZXJuIGNoYXIgZ2RiX2ludCBbXTsnCi0tICAgICBHQ0MgcHJv ZHVjZXMgYW4gZW1wdHkgcmFuZ2UgRElFLgotLSAgICAgRklYTUU6IG11bGxlci8yMDEwLTA1LTI4 OiBQb3NzaWJsZSByZWZlcmVuY2VzIHRvIG9iamVjdCBmb3IgbG93IGJvdW5kLAotLSAgICAgaGln aCBib3VuZCBvciBjb3VudCBhcmUgbm90IHlldCBoYW5kbGVkIGJ5IHRoaXMgY29kZS4gICovCi0t ICBpZiAoVFlQRV9DT0RFIChiYXNlX3R5cGUpID09IFRZUEVfQ09ERV9WT0lEKQotLSAgICB7Ci0t ICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLS0gICAgICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotLSAgICAg IGludCBhZGRyX3NpemUgPSBnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSAvODsKLS0gICAgICBz dHJ1Y3QgdHlwZSAqaW50X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2lu dDsKLS0KLS0gICAgICAvKiBUZXN0ICJpbnQiLCAibG9uZyBpbnQiLCBhbmQgImxvbmcgbG9uZyBp bnQiIG9iamZpbGUgdHlwZXMsCi0tCSBhbmQgc2VsZWN0IHRoZSBmaXJzdCBvbmUgaGF2aW5nIGEg c2l6ZSBhYm92ZSBvciBlcXVhbCB0byB0aGUKLS0JIGFyY2hpdGVjdHVyZSBhZGRyZXNzIHNpemUu ICAqLwotLSAgICAgIGlmIChpbnRfdHlwZSAmJiBUWVBFX0xFTkdUSCAoaW50X3R5cGUpID49IGFk ZHJfc2l6ZSkKLS0JYmFzZV90eXBlID0gaW50X3R5cGU7Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAg aW50X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2xvbmc7Ci0tCSAgaWYg KGludF90eXBlICYmIFRZUEVfTEVOR1RIIChpbnRfdHlwZSkgPj0gYWRkcl9zaXplKQotLQkgICAg YmFzZV90eXBlID0gaW50X3R5cGU7Ci0tCSAgZWxzZQotLQkgICAgewotLQkgICAgICBpbnRfdHlw ZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5fbG9uZ19sb25nOwotLQkgICAgICBp ZiAoaW50X3R5cGUgJiYgVFlQRV9MRU5HVEggKGludF90eXBlKSA+PSBhZGRyX3NpemUpCi0tCQli YXNlX3R5cGUgPSBpbnRfdHlwZTsKLS0JICAgIH0KLS0JfQotLSAgICB9Ci0tCi0gICAvKiBEV19B VF9iaXRfc3RyaWRlIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRl cy4gICovCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1 KTsKLSAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1 YWdlICE9IGxhbmd1YWdlX2FkYSkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5TCi1AQCAtMCwwICsxLDEyMSBAQAotKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAg Q29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwot KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIERlYnVnIGluZm9ybWF0 aW9uICovCi0rCi0rCS5zZWN0aW9uCS5kYXRhCi0rdmFyZGF0YToKLSsJLnJlcHQJCTEyOQotKwku YXNjaWkJCSJ4IgotKwkuZW5kcgotKwkuYXNjaWkJCSJVTlNFRU5cMCIKLSsKLSsJLnNlY3Rpb24J LmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLjRieXRlCQkuTGN1MV9lbmQgLSAuTGN1MV9z dGFydAkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCAqLwotKy5MY3UxX3N0YXJ0OgotKwku MmJ5dGUJCTIJCQkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLwotKwkuNGJ5dGUJCS5MZGVidWdf YWJicmV2MAkJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9uICovCi0rCS5ieXRlCQk0CQkJ LyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGVi MTI4CTEJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmFzY2lpCQkiR05V IEMgMy4zLjNcMCIJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCQkyCQkJLyogRFdfQVRf bGFuZ3VhZ2UgKEMpIC0gICovCi0rCi0rLkxhcnJheV90eXBlOgotKwkudWxlYjEyOAkyCQkJLyog QWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3Ux X2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdf VEFHX3N1YnJhbmdlX3R5cGUgd2l0aG91dCBEV19BVF90eXBlICovCi0rCS5ieXRlCQkwCQkJLyog RFdfQVRfbG93ZXJfYm91bmQgKi8KLSsJLmJ5dGUJCTEyOAkJCS8qIERXX0FUX3VwcGVyX2JvdW5k ICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKy5M Y2hhcl90eXBlOgotKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICov Ci0rCS5hc2NpaQkJImNoYXJcMCIJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBE V19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTYJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwot KwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgRFdfRk9STV9zdHJpbmcg Ki8KLSsJLmFzY2lpCQkibm90eXBlX3N0cmluZ1wwIgkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0 ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTJm IC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKzE6CS5ieXRlCQkzCQkJLyogICBEV19PUF9h ZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCi0rMjoKLSsKLSsJLmJ5 dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KLSsuTGN1MV9lbmQ6Ci0rCi0rCS5z ZWN0aW9uIC5kZWJ1Z19hYmJyZXYKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS51bGViMTI4CTEJCQkv KiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5p dCAqLwotKwkuYnl0ZQkJMHgxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MjUJ CQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAkyCQkJLyog QWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogVEFHOiBEV19UQUdfYXJyYXlfdHlw ZSAqLwotKwkuYnl0ZQkJMHgxCQkJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4CTB4 NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQg Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGVi MTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19j aGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4 CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0FUX2J5 dGVfc2l6ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGVi MTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0rCS5ieXRlCQkweDAJ CQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0r CS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4NDkJCQkv KiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJ LnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHhhCQkJLyog RFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBj b2RlICovCi0rCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0 IERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGVi MTI4CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBE V19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAq LwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuZXhwCi1AQCAtMCwwICsxLDM5 IEBACi0rIyBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rbG9hZF9saWIgZHdhcmYuZXhwCi0rCi0r IyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTgwNjkyMAotKyMg cmVhZF9zdWJyYW5nZV90eXBlIDxUWVBFX0NPREUgKGJhc2VfdHlwZSkgPT0gVFlQRV9DT0RFX1ZP SUQ+IHJlaW5pdGlhbGl6YXRpb24KLSsjIG9mIEJBU0VfVFlQRSB3YXMgZG9uZSB0b28gbGF0ZSwg aXQgYWZmZWN0cyBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0Ci0rIyBzcGVjaWZpZWQgRFdf QVRfdHlwZSwgcHJlc2VudCBvbmx5IGluIFhMRiBwcm9kdWNlZCBjb2RlLgotKwotKyMgVGhpcyB0 ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQg dXNlIGdhcy4KLStpZiB7IVtkd2FyZjJfc3VwcG9ydF19IHsKLSsgICAgcmV0dXJuIDAgIAotK30K LSsKLStzZXQgdGVzdGZpbGUgZHcyLXN1YnJhbmdlLW5vLXR5cGUKLStzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3NldCBiaW5maWxlICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotKwotK2lmIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBvYmplY3Qge31dICE9 ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJs ZQotKwotK2dkYl90ZXN0ICJwdHlwZSBub3R5cGVfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFsxMjlc XX0KLStnZGJfdGVzdCAicCBub3R5cGVfc3RyaW5nIiAiID0gJ3gnIDxyZXBlYXRzIDEyOSB0aW1l cz4iCgpkaWZmIC0tZ2l0IGEvZ2RiLXVudXNlZC1yZXZlcnQucGF0Y2ggYi9nZGItdW51c2VkLXJl dmVydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmFiZTNjZi4uMDAwMDAw MAotLS0gYS9nZGItdW51c2VkLXJldmVydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICsw LDAgQEAKLVtSRkEvY29tbWl0IDUvNV0gQWRkIC1XdW51c2VkLWZ1bmN0aW9uIHRvIGNvbXBpbGUg ZmxhZ3MuCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cw MDM3MS5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTAxL21zZzAw MTYzLmh0bWwKLQotUkVWRVJURUQKLQotLS0tIHNyYy9nZGIvY29uZmlndXJlLmFjCTIwMTAvMDEv MTUgMDA6MzQ6MzcJMS4xMTIKLSsrKyBzcmMvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLzAxLzE5IDA5 OjUyOjMxCTEuMTEzCi1AQCAtMTU0NCw4ICsxNTQ0LDcgQEAKLSAjIGdkYi9kb2MvZ2RiaW50LnRl eGluZm8uCi0gYnVpbGRfd2FybmluZ3M9Ii1XYWxsIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVt ZW50IC1XcG9pbnRlci1hcml0aCBcCi0gLVdmb3JtYXQtbm9ubGl0ZXJhbCAtV25vLXBvaW50ZXIt c2lnbiBcCi0tLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVd1bnVzZWQtZnVuY3Rpb24gXAot LS1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIgotKy1Xbm8tdW51c2VkIC1XdW51c2Vk LXZhbHVlIC1Xbm8tc3dpdGNoIC1Xbm8tY2hhci1zdWJzY3JpcHRzIgotIAotICMgRW5hYmxlIC1X bm8tZm9ybWF0IGJ5IGRlZmF1bHQgd2hlbiB1c2luZyBnY2Mgb24gbWluZ3cgc2luY2UgbWFueQot ICMgR0NDIHZlcnNpb25zIGNvbXBsYWluIGFib3V0ICVJNjQuCi0tLS0gc3JjL2dkYi9jb25maWd1 cmUJMjAxMC8wMS8xNSAwMDozNDozNwkxLjI5NwotKysrIHNyYy9nZGIvY29uZmlndXJlCTIwMTAv MDEvMTkgMDk6NTI6MzIJMS4yOTgKLUBAIC0xMzQzNSw4ICsxMzQzNSw3IEBACi0gIyBnZGIvZG9j L2dkYmludC50ZXhpbmZvLgotIGJ1aWxkX3dhcm5pbmdzPSItV2FsbCAtV2RlY2xhcmF0aW9uLWFm dGVyLXN0YXRlbWVudCAtV3BvaW50ZXItYXJpdGggXAotIC1XZm9ybWF0LW5vbmxpdGVyYWwgLVdu by1wb2ludGVyLXNpZ24gXAotLS1Xbm8tdW51c2VkIC1XdW51c2VkLXZhbHVlIC1XdW51c2VkLWZ1 bmN0aW9uIFwKLS0tV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2NyaXB0cyIKLSstV25vLXVudXNl ZCAtV3VudXNlZC12YWx1ZSAtV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2NyaXB0cyIKLSAKLSAj IEVuYWJsZSAtV25vLWZvcm1hdCBieSBkZWZhdWx0IHdoZW4gdXNpbmcgZ2NjIG9uIG1pbmd3IHNp bmNlIG1hbnkKLSAjIEdDQyB2ZXJzaW9ucyBjb21wbGFpbiBhYm91dCAlSTY0LgotIyMjIHNyYy9n ZGIvQ2hhbmdlTG9nCTIwMTAvMDEvMTkgMDk6NTA6NDgJMS4xMTI3MQotIyMjIHNyYy9nZGIvQ2hh bmdlTG9nCTIwMTAvMDEvMTkgMDk6NTI6MzMJMS4xMTI3MgotIyMgLTEsMTEgKzEsNSBAQAotIDIw MTAtMDEtMTkgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgotIAotLQlB ZGQgLVd1bnVzZWQtZnVuY3Rpb24gdG8gY29tcGlsZSBmbGFncy4KLS0JKiBjb25maWd1cmUuYWM6 IEFkZCAtV3VudXNlZC1mdW5jdGlvbiB0byBidWlsZF93YXJuaW5ncy4KLS0JKiBjb25maWd1cmU6 IFJlZ2VuZXJhdGUuCi0tCi0tMjAxMC0wMS0xOSAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJA YWRhY29yZS5jb20+Ci0tCi0gCSJkZWxldGUiIGFkYS1sZXguYzppbnB1dCBmdW5jdGlvbiwgbm90 IHVzZWQuCi0gCSogYWRhLWxleC5sOiAjZGVmaW5lIFlZX05PX0lOUFVULgotIAoKZGlmZiAtLWdp dCBhL2dkYi11cHN0cmVhbS5wYXRjaCBiL2dkYi11cHN0cmVhbS5wYXRjaAppbmRleCBlNjZkMjQ1 Li4xNTk0YWNkIDEwMDY0NAotLS0gYS9nZGItdXBzdHJlYW0ucGF0Y2gKKysrIGIvZ2RiLXVwc3Ry ZWFtLnBhdGNoCkBAIC0xLDI5OSArMSwyMzkgQEAKLUZZSTogZml4IHBvc3NpYmxlIGNyYXNoIGlu IGZpbmRfY2hhcnNldF9uYW1lcwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTItMDIvbXNnMDAwNzMuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMi0wMi9tc2cwMDAzNy5odG1sCi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19i dWcuY2dpP2lkPTc4NjA5MQotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8wNyAwNDo0 ODoxNAkxLjEzODEwCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8wNyAxNTo0MjozMwkx LjEzODExCi0jIyAtMSwzICsxLDcgQEAKLSsyMDEyLTAyLTA3ICBUb20gVHJvbWV5ICA8dHJvbWV5 QHJlZGhhdC5jb20+Ci0rCi0rCSogY2hhcnNldC5jIChmaW5kX2NoYXJzZXRfbmFtZXMpOiBDaGVj ayAnaW4nIGFnYWluc3QgTlVMTC4KLSsKLSAyMDEyLTAyLTA2ICBEb3VnIEV2YW5zICA8ZGplQGdv b2dsZS5jb20+Ci0gCi0gCSogZ2RidHlwZXMuaCAoc3RydWN0IG1haW5fdHlwZSk6IENoYW5nZSB0 eXBlIG9mIG5hbWUsdGFnX25hbWUsCi0tLS0gc3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMS8yNCAy MTozNjozNwkxLjQ3Ci0rKysgc3JjL2dkYi9jaGFyc2V0LmMJMjAxMi8wMi8wNyAxNTo0MjozOQkx LjQ4Ci1AQCAtODM5LDcgKzgzOSw3IEBACi0gCSBwYXJzZSB0aGUgZ2xpYmMgYW5kIGxpYmljb252 IGZvcm1hdHM7IGZlZWwgZnJlZSB0byBhZGQgb3RoZXJzCi0gCSBhcyBuZWVkZWQuICAqLwotIAot LSAgICAgIHdoaWxlICghZmVvZiAoaW4pKQotKyAgICAgIHdoaWxlIChpbiAhPSBOVUxMICYmICFm ZW9mIChpbikpCi0gCXsKLSAJICAvKiBUaGUgc2l6ZSBvZiBidWYgaXMgY2hvc2VuIGFyYml0cmFy aWx5LiAgKi8KLSAJICBjaGFyIGJ1ZlsxMDI0XTsKLQotCi0KLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDEyLTAyL21zZzAwMTUxLmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0g cHBjLWxpbnV4LW5hdC5jOiBGaXggZ2NjLTQuNyBhbGlhc2luZyB3YXJuaW5ncworaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMDYvbXNnMDAwNjUuaHRtbAorU3ViamVj dDogW2NvbW1pdCAxLzJdIHRlc3RzdWl0ZTogY29kZV9lbGltLmV4cDogdW5pcXVlIG5hbWVzCiAK IEhpLAogCi1wcGMtbGludXgtbmF0LmM6IEluIGZ1bmN0aW9uICdmZXRjaF9yZWdpc3Rlcic6Ci1w cGMtbGludXgtbmF0LmM6NTk4Ojk6IGVycm9yOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBv aW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMgWy1XZXJyb3I9c3RyaWN0LWFs aWFzaW5nXQotcHBjLWxpbnV4LW5hdC5jOiBJbiBmdW5jdGlvbiAnc3RvcmVfcmVnaXN0ZXInOgot cHBjLWxpbnV4LW5hdC5jOjEwNzg6ODogZXJyb3I6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQg cG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcyBbLVdlcnJvcj1zdHJpY3Qt YWxpYXNpbmddCit0aGlzIGlzIGp1c3QgcmVtb3ZhbCBvZiBub24tdW5pcXVlIHRlc3QgbmFtZXMg YW5kIG9uZSBzbWFsbCBzaW1wbGlmaWNhdGlvbi4KIAotZ2NjLTQuNy4wLTAuMTAuZmMxNy5wcGM2 NAorQ2hlY2tlZCBpbi4KIAotUHJvYmFibHkgY2xlYXIsIEkgbG9va2VkIGF0IG1ha2luZyBpdCB1 c2luZyB1bmlvbiBpbnN0ZWFkIG9mIG1lbWNweSBidXQgdGhhdAotd291bGQgYmUgdG9vIHVnbHku CiAKLU5vIHJlZ3Jlc3Npb25zIG9uIHBwYzY0LWZlZG9yYXJhd2hpZGUtbGludXgtZ251IG9ubHkg Zm9yIGdkYi5iYXNlLyouZXhwLgorVGhhbmtzLAorSmFuCiAKLUkgd2lsbCBjaGVjayBpdCBpbi4K IAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNi9tc2cwMDAxMS5odG1s CisKKyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMi8wNS8yOCAyMDozNzoyOQkx LjMyMDkKKyMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMi8wNi8wMyAxNzowNjow NAkxLjMyMTAKKyMjIC0xLDMgKzEsMTYgQEAKKysyMDEyLTA2LTAzICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisrCisrCSogZ2RiLmJhc2UvY29kZV9lbGltLmV4 cCAoYWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCk6CisrCVNpbXBsaWZ5IGl0 IHRvIC4uLgorKwkoc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9KTogLi4uIGhlcmUuCisrCSh0ZXN0 IGVsaW1pbmF0ZWQgdmFyIG15X2dsb2JhbF9zeW1ib2wpCisrCSh0ZXN0IGVsaW1pbmF0ZWQgdmFy IG15X3N0YXRpY19zeW1ib2wpCisrCSh0ZXN0IGVsaW1pbmF0ZWQgdmFyIG15X2dsb2JhbF9mdW5j LCBnZXQgYWRkcmVzcyBvZiBtYWluKTogV3JhcCB0aGVtIHRvCisrCSdzaW5nbGUgcHN5bXRhYnMn IGFuZCAnc2luZ2xlIHN5bXRhYnMnCisrCShnZXQgYWRkcmVzcyBvZiBteV9nbG9iYWxfc3ltYm9s LCBnZXQgYWRkcmVzcyBvZiBteV9zdGF0aWNfc3ltYm9sKQorKwkoZ2V0IGFkZHJlc3Mgb2YgbXlf Z2xvYmFsX2Z1bmMsIGdldCBhZGRyZXNzIG9mIG1haW4pOiBXcmFwIHRoZW0gdG8KKysJJ29yZGVy MScgYW5kICdvcmRlcjInLgorKworIDIwMTItMDUtMjggIEphbiBLcmF0b2NodmlsICA8amFuLmty YXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIuc2VydmVyL3NvbGliLWxpc3QtbGliLmM6 IE5ldyBmaWxlLgorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvZGVfZWxpbS5leHAJ MjAxMi8wMS8xNiAxNjoyMTo0NAkxLjQKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9j b2RlX2VsaW0uZXhwCTIwMTIvMDYvMDMgMTc6MDY6MDQJMS41CitAQCAtOTUsMTYgKzk1LDE2IEBA CisgZ2RiX2V4aXQKKyBnZGJfc3RhcnQKKyAKKy1nZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7 YmluZmlsZTF9IDB4MTAwMDAwIiBcCisrZ2RiX3Rlc3QgInN5bWJvbC1maWxlICR7YmluZmlsZTF9 IiBcCisgCSJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUxfVxcLlxcLlxcLmRvbmVc XC4ofFxyXG5Vc2luZyBob3N0IGxpYnRocmVhZF9kYiBsaWJyYXJ5IC4qbGlidGhyZWFkX2RiLnNv LipcXC4pIiBcCistCSJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwIiBcCist CSJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTF9XCIgYXRcWyBcdFxy XG5cXStcLnRleHRfYWRkciA9IDB4MTAwMDAwXFtcclxuXF0rXFwoeSBvciBuXFwpICIgXAorLQki eSIKKysJInN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSIKKyAKKy10ZXN0X2VsaW1pbmF0ZWRfdmFy IG15X2dsb2JhbF9zeW1ib2wKKy10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X3N0YXRpY19zeW1ib2wK Ky10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9mdW5jCistbm90X251bGxfdmFyX2FkZHJl c3MgbWFpbgorK3dpdGhfdGVzdF9wcmVmaXggInNpbmdsZSBwc3ltdGFicyIgeworKyAgICB0ZXN0 X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9zeW1ib2wKKysgICAgdGVzdF9lbGltaW5hdGVkX3Zh ciBteV9zdGF0aWNfc3ltYm9sCisrICAgIHRlc3RfZWxpbWluYXRlZF92YXIgbXlfZ2xvYmFsX2Z1 bmMKKysgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbWFpbgorK30KKyAKKyAjIFNhbWUgdGhpbmcg Zm9yIHN5bXRhYnMKKyAKK0BAIC0xMTUsMTAgKzExNSwxMiBAQAorIGdkYl9zdGFydAorIHNldCBH REJGTEFHUyAkc2F2ZWRfZ2RiZmxhZ3MKKyAKKy10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X2dsb2Jh bF9zeW1ib2wKKy10ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X3N0YXRpY19zeW1ib2wKKy10ZXN0X2Vs aW1pbmF0ZWRfdmFyIG15X2dsb2JhbF9mdW5jCistbm90X251bGxfdmFyX2FkZHJlc3MgbWFpbgor K3dpdGhfdGVzdF9wcmVmaXggInNpbmdsZSBzeW10YWJzIiB7CisrICAgIHRlc3RfZWxpbWluYXRl ZF92YXIgbXlfZ2xvYmFsX3N5bWJvbAorKyAgICB0ZXN0X2VsaW1pbmF0ZWRfdmFyIG15X3N0YXRp Y19zeW1ib2wKKysgICAgdGVzdF9lbGltaW5hdGVkX3ZhciBteV9nbG9iYWxfZnVuYworKyAgICBu b3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCisrfQorIAorICMgYmluZmlsZTIgY29udGFpbnMgdGhl IHN5bWJvbHMgdGhhdCBoYXZlIGJlZW4gZWxpbWluYXRlZCBpbiBiaW5maWxlMS4gQ2hlY2sKKyAj IHRoZSBlbGltaW5hdGVkIHN5bWJvbHMgZG9lcyBub3QgaGlkZSB0aGVzZSB2YWxpZCBvbmVzLgor QEAgLTEzOCwxMCArMTQwLDEyIEBACisgCSJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4q JHt0ZXN0ZmlsZTJ9XCIgYXRcWyBcdFxyXG5cXStcLnRleHRfYWRkciA9IDB4MjAwMDAwXFtcclxu XF0rXFwoeSBvciBuXFwpICIgXAorIAkieSIKKyAKKy1ub3RfbnVsbF92YXJfYWRkcmVzcyBteV9n bG9iYWxfc3ltYm9sCistbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGljX3N5bWJvbAorLW5v dF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9mdW5jCistbm90X251bGxfdmFyX2FkZHJlc3Mg bWFpbgorK3dpdGhfdGVzdF9wcmVmaXggIm9yZGVyMSIgeworKyAgICBub3RfbnVsbF92YXJfYWRk cmVzcyBteV9nbG9iYWxfc3ltYm9sCisrICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X3N0YXRp Y19zeW1ib2wKKysgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xvYmFsX2Z1bmMKKysgICAg bm90X251bGxfdmFyX2FkZHJlc3MgbWFpbgorK30KKyAKKyAjIFNhbWUgdGhpbmcsIGJ1dCBsb2Fk aW5nIGJpbmZpbGUyIGJlZm9yZSBiaW5maWxlMS4KKyAKK0BAIC0xNjAsOSArMTY0LDkgQEAKKyAJ ImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdFxbIFx0XHJc blxdK1wudGV4dF9hZGRyID0gMHgxMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBcCisgCSJ5 IgorIAorLW5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9zeW1ib2wKKy1ub3RfbnVsbF92 YXJfYWRkcmVzcyBteV9zdGF0aWNfc3ltYm9sCistbm90X251bGxfdmFyX2FkZHJlc3MgbXlfZ2xv YmFsX2Z1bmMKKy1ub3RfbnVsbF92YXJfYWRkcmVzcyBtYWluCistCistCisrd2l0aF90ZXN0X3By ZWZpeCAib3JkZXIyIiB7CisrICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9zeW1i b2wKKysgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGljX3N5bWJvbAorKyAgICBub3Rf bnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYworKyAgICBub3RfbnVsbF92YXJfYWRkcmVz cyBtYWluCisrfQogCi1UaGFua3MsCi1KYW4KIAogCi1nZGIvCi0yMDEyLTAyLTA5ICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CitodHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wNi9tc2cwMDA2Ni5odG1sCitTdWJqZWN0OiBbY29tbWl0 IDIvMl0gdGVzdHN1aXRlOiBjb2RlX2VsaW0uZXhwOiBGaXggZmFsc2UgRkFJTAogCi0JKiBwcGMt bGludXgtbmF0LmMgKGZldGNoX3JlZ2lzdGVyLCBzdG9yZV9yZWdpc3Rlcik6IEZpeCBHQ0MgYWxp YXNpbmcKLQljb21waWxhdGlvbiB3YXJuaW5nLgorSGksCiAKLS0tLSBhL2dkYi9wcGMtbGludXgt bmF0LmMKLSsrKyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLUBAIC01OTMsOSArNTkzLDEwIEBAIGZl dGNoX3JlZ2lzdGVyIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgdGlkLCBpbnQgcmVn bm8pCi0gICAgICAgIGJ5dGVzX3RyYW5zZmVycmVkIDwgcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwg cmVnbm8pOwotICAgICAgICBieXRlc190cmFuc2ZlcnJlZCArPSBzaXplb2YgKGxvbmcpKQotICAg ICB7Ci0rICAgICAgbG9uZyBsOwotKwotICAgICAgIGVycm5vID0gMDsKLS0gICAgICAqKGxvbmcg KikgJmJ1ZltieXRlc190cmFuc2ZlcnJlZF0KLS0gICAgICAgID0gcHRyYWNlIChQVFJBQ0VfUEVF S1VTRVIsIHRpZCwgKFBUUkFDRV9UWVBFX0FSRzMpIHJlZ2FkZHIsIDApOwotKyAgICAgIGwgPSBw dHJhY2UgKFBUUkFDRV9QRUVLVVNFUiwgdGlkLCAoUFRSQUNFX1RZUEVfQVJHMykgcmVnYWRkciwg MCk7Ci0gICAgICAgcmVnYWRkciArPSBzaXplb2YgKGxvbmcpOwotICAgICAgIGlmIChlcnJubyAh PSAwKQotIAl7Ci1AQCAtNjA0LDYgKzYwNSw3IEBAIGZldGNoX3JlZ2lzdGVyIChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBpbnQgdGlkLCBpbnQgcmVnbm8pCi0gCQkgICBnZGJhcmNoX3JlZ2lz dGVyX25hbWUgKGdkYmFyY2gsIHJlZ25vKSwgcmVnbm8pOwotIAkgIHBlcnJvcl93aXRoX25hbWUg KG1lc3NhZ2UpOwotIAl9Ci0rICAgICAgbWVtY3B5ICgmYnVmW2J5dGVzX3RyYW5zZmVycmVkXSwg JmwsIHNpemVvZiAobCkpOwotICAgICB9Ci0gCi0gICAvKiBOb3cgc3VwcGx5IHRoZSByZWdpc3Rl ci4gIEtlZXAgaW4gbWluZCB0aGF0IHRoZSByZWdjYWNoZSdzIGlkZWEKLUBAIC0xMDczLDkgKzEw NzUsMTEgQEAgc3RvcmVfcmVnaXN0ZXIgKGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUs IGludCB0aWQsIGludCByZWdubykKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBieXRlc190b190cmFu c2ZlcjsgaSArPSBzaXplb2YgKGxvbmcpKQotICAgICB7Ci0rICAgICAgbG9uZyBsOwotKwotKyAg ICAgIG1lbWNweSAoJmwsICZidWZbaV0sIHNpemVvZiAobCkpOwotICAgICAgIGVycm5vID0gMDsK LS0gICAgICBwdHJhY2UgKFBUUkFDRV9QT0tFVVNFUiwgdGlkLCAoUFRSQUNFX1RZUEVfQVJHMykg cmVnYWRkciwKLS0JICAgICAgKihsb25nICopICZidWZbaV0pOwotKyAgICAgIHB0cmFjZSAoUFRS QUNFX1BPS0VVU0VSLCB0aWQsIChQVFJBQ0VfVFlQRV9BUkczKSByZWdhZGRyLCBsKTsKLSAgICAg ICByZWdhZGRyICs9IHNpemVvZiAobG9uZyk7Ci0gCi0gICAgICAgaWYgKGVycm5vID09IEVJTyAK K3dpdGggRmVkb3JhIDE4IHg4Nl82NCAoUmF3aGlkZSkgdGhlcmUgaXMgYSBmYWxzZSBGQUlsIHNp bmNlOgorMjE2NzkzMWNmNzBmOTEyMDZlZmI4YjAxZTg0OGE1NWQ4MmEzNDdjZSBpcyB0aGUgZmly c3QgYmFkIGNvbW1pdAorQXV0aG9yOiBUb20gVHJvbWV5IDx0cm9tZXlAcmVkaGF0LmNvbT4KK0Rh dGU6ICAgRnJpIE1heSAxOCAxNTozMTozOSAyMDEyICswMDAwCitodHRwOi8vc291cmNld2FyZS5v cmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEzOTA3CiAKKyBwcmludCAmbXlfZ2xvYmFsX3N5 bWJvbAorLSQxID0gKGludCAqKSAweDgwNGEwMDQKKy0oZ2RiKSBQQVNTOiBnZGIuYmFzZS9jb2Rl X2VsaW0uZXhwOiBnZXQgYWRkcmVzcyBvZiBteV9nbG9iYWxfc3ltYm9sCisrJDEgPSAoaW50ICop IDB4ODA0YTAwNCA8Y29tcGxldGVkLjU3MzI+CisrKGdkYikgRkFJTDogZ2RiLmJhc2UvY29kZV9l bGltLmV4cDogZ2V0IGFkZHJlc3Mgb2YgbXlfZ2xvYmFsX3N5bWJvbAogCitOb3RoaW5nIHJlYWxs eSBjaGFuZ2VkLCBqdXN0IEdEQiBub3cgcHJpbnRzIDxjb21wbGV0ZWQuNTczMj4gYW5kIHRoZSB0 ZXN0Y2FzZQorZXhwZWN0cyBlaXRoZXIgbm9uZSBvciA8bXlfZ2xvYmFsX3N5bWJvbD4gc3VmZml4 LgogCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wMi9tc2cwMDQw OS5odG1sCi1TdWJqZWN0OiBGWUk6IHJlbW92ZSBleHRyYW5lb3VzIGJsb2NrIGZyb20gZHcyX21h cF9zeW10YWJzX21hdGNoaW5nX2ZpbGVuYW1lCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LWN2cy8yMDEyLTAyL21zZzAwMTE3Lmh0bWwKLWNvbW1pdCA2MWQ4MTYxYjMzYjFlN2RiYzgwYmE2 ZjdhOTI1MDBhMTU5NGRhNTVjCitUaGlzIGlzIGJlY2F1c2UgdGhlIHR3byBzeW1ib2wgZmlsZXMg KHRoZWlyIHNlY3Rpb25zIC5kYXRhLy5ic3MpIGhhdmUKK292ZXJsYXBwZWQgc28gR0RCIGNob29z ZXMgcmFuZG9tbHkgd2hpY2ggc3ltYm9sIHRvIGRpc3BsYXkuICBBbmQgc2luY2UKK0ZlZG9yYSAx OCBHQ0MgcHV0cyB0aGVyZSB0aGF0ICJjb21wbGV0ZWQuNTczMiIgc3ltYm9sLgogCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8yMCAwOTo0MjozNAkxLjEzODQ1Ci0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMi8wMi8yMCAxOToyNDozNAkxLjEzODQ2Ci0jIyAtMSwzICsxLDggQEAKLSsy MDEyLTAyLTIwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZHdhcmYy cmVhZC5jIChkdzJfbWFwX3N5bXRhYnNfbWF0Y2hpbmdfZmlsZW5hbWUpOiBSZW1vdmUKLSsJZXh0 cmFuZW91cyBibG9jay4KLSsKLSAyMDEyLTAyLTIwICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xk QGFkYWNvcmUuY29tPgotIAotIAkqIGRhcndpbi1uYXQuaCAoZW51bSBkYXJ3aW5fbXNnX3N0YXRl KTogQWRkIGNvbW1lbnRzLgotLS0tIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTIvMDIvMDcgMDQ6 NDg6MTkJMS42MTIKLSsrKyBzcmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLzAyLzIwIDE5OjI0OjM5 CTEuNjEzCi1AQCAtMjQzNywxMyArMjQzNyw2IEBACi0gCQlyZXR1cm4gMTsKLSAJICAgIH0KLSAK LS0JICAgIHsKLS0JICAgICAgaWYgKGR3Ml9tYXBfZXhwYW5kX2FwcGx5IChvYmpmaWxlLCBwZXJf Y3UsCi0tCQkJCQluYW1lLCBmdWxsX3BhdGgsIHJlYWxfcGF0aCwKLS0JCQkJCWNhbGxiYWNrLCBk YXRhKSkKLS0JCXJldHVybiAxOwotLQkgICAgfQotLQotIAkgIC8qIEJlZm9yZSB3ZSBpbnZva2Ug cmVhbHBhdGgsIHdoaWNoIGNhbiBnZXQgZXhwZW5zaXZlIHdoZW4gbWFueQotIAkgICAgIGZpbGVz IGFyZSBpbnZvbHZlZCwgZG8gYSBxdWljayBjb21wYXJpc29uIG9mIHRoZSBiYXNlbmFtZXMuICAq LwotIAkgIGlmICghIGJhc2VuYW1lc19tYXlfZGlmZmVyCitUaGlzIG1heSBiZSBiZWNhdXNlIGFk ZC1zeW1ib2wtZmlsZSBGSUxFIEFERFIgcmVsb2NhdGVzIHRvIEFERFIgb24gdGhlIC50ZXh0Citz ZWN0aW9uIGFuZCBsZWF2ZXMgb3RoZXIgc2VjdGlvbnMgYXQgdGhlaXIgb3JpZ2luYWwgcGxhY2Us IHdoaWNoIGlzIElNTyBhIGJpdAordW5leHBlY3RlZDsgaXQgaXMgYSBGQVEgcGVvcGxlIGV4cGVj dCBtb3JlIEFERFIgdG8gYmUgcmVsb2NhdGlvbiBkaXNwbGFjZW1lbnQKKyhhbmQgbm90IHJlbGF0 aXZlIHRvIC50ZXh0IGFuZCBub3QgbGltaXRlZCB0byAudGV4dCkuICBCdXQgdGhpcyBpcyByZWFs bHkKK291dHNpZGUgb2YgdGhlIHNjb3BlIG9mIHRoaXMgdGVzdGNhc2UgZmFsc2UgRkFJTC4KIAor Q2hlY2tlZCBpbi4KIAogCi1GWUk6IGZpeCBzb21lIHBlcmZvcm1hbmNlIGJ1Z3Mgd2l0aCAuZ2Ri X2luZGV4Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMi0wMi9tc2cw MDQxMy5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTAyL21zZzAw MTE5Lmh0bWwKK1RoYW5rcywKK0phbgogCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8y MCAxOTo0NDowMAkxLjEzODQ3Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wMi8yMCAyMDo1 NjoxMgkxLjEzODQ4Ci0jIyAtMSwzICsxLDEwIEBACi0rMjAxMi0wMi0yMCAgVG9tIFRyb21leSAg PHRyb21leUByZWRoYXQuY29tPgotKwotKwlQUiBnZGIvMTM0OTg6Ci0rCSogZHdhcmYycmVhZC5j IChkdzJfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcpOiBPbmx5IHZpc2l0IGEKLSsJcGFydGljdWxh ciBzZXQgb2YgZmlsZSBuYW1lcyBvbmNlLgotKwkoZHcyX21hcF9zeW1ib2xfZmlsZW5hbWVzKTog TGlrZXdpc2UuCi0rCi0gMjAxMi0wMi0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotIAotIAlDb2RlIGNsZWFudXAuCi0tLS0gc3JjL2dkYi9kd2FyZjJyZWFk LmMJMjAxMi8wMi8yMCAxOToyNDozOQkxLjYxMwotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIw MTIvMDIvMjAgMjA6NTY6MTIJMS42MTQKLUBAIC0yNzAwLDMyICsyNzAwLDYzIEBACi0gICBpbmRl eCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGU7Ci0gCi0gICBpZiAoZmlsZV9tYXRj aGVyICE9IE5VTEwpCi0tICAgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5u X2NvbXBfdW5pdHMKLS0JCSAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV91bml0cyk7 ICsraSkKLS0gICAgICB7Ci0tCWludCBqOwotLQlzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpw ZXJfY3UgPSBkdzJfZ2V0X2N1IChpKTsKLS0Jc3RydWN0IHF1aWNrX2ZpbGVfbmFtZXMgKmZpbGVf ZGF0YTsKLSsgICAgewotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgICAgIGh0 YWJfdCB2aXNpdGVkX2ZvdW5kLCB2aXNpdGVkX25vdF9mb3VuZDsKLSAKLS0JcGVyX2N1LT52LnF1 aWNrLT5tYXJrID0gMDsKLSsgICAgICB2aXNpdGVkX2ZvdW5kID0gaHRhYl9jcmVhdGVfYWxsb2Mg KDEwLAotKwkJCQkJIGh0YWJfaGFzaF9wb2ludGVyLCBodGFiX2VxX3BvaW50ZXIsCi0rCQkJCQkg TlVMTCwgeGNhbGxvYywgeGZyZWUpOwotKyAgICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfaHRh Yl9kZWxldGUgKHZpc2l0ZWRfZm91bmQpOwotKyAgICAgIHZpc2l0ZWRfbm90X2ZvdW5kID0gaHRh Yl9jcmVhdGVfYWxsb2MgKDEwLAotKwkJCQkJICAgICBodGFiX2hhc2hfcG9pbnRlciwgaHRhYl9l cV9wb2ludGVyLAotKwkJCQkJICAgICBOVUxMLCB4Y2FsbG9jLCB4ZnJlZSk7Ci0rICAgICAgbWFr ZV9jbGVhbnVwX2h0YWJfZGVsZXRlICh2aXNpdGVkX25vdF9mb3VuZCk7Ci0gCi0tCS8qIFdlIG9u bHkgbmVlZCB0byBsb29rIGF0IHN5bXRhYnMgbm90IGFscmVhZHkgZXhwYW5kZWQuICAqLwotLQlp ZiAocGVyX2N1LT52LnF1aWNrLT5zeW10YWIpCi0tCSAgY29udGludWU7Ci0rICAgICAgZm9yIChp ID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0cwotKwkJICAgICAgICsg ZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfdW5pdHMpOyArK2kpCi0rCXsKLSsJICBpbnQgajsK LSsJICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UgPSBkdzJfZ2V0X2N1IChpKTsK LSsJICBzdHJ1Y3QgcXVpY2tfZmlsZV9uYW1lcyAqZmlsZV9kYXRhOwotKwkgIHZvaWQgKipzbG90 OwotIAotLQlmaWxlX2RhdGEgPSBkdzJfZ2V0X2ZpbGVfbmFtZXMgKG9iamZpbGUsIHBlcl9jdSk7 Ci0tCWlmIChmaWxlX2RhdGEgPT0gTlVMTCkKLS0JICBjb250aW51ZTsKLSsJICBwZXJfY3UtPnYu cXVpY2stPm1hcmsgPSAwOwotIAotLQlmb3IgKGogPSAwOyBqIDwgZmlsZV9kYXRhLT5udW1fZmls ZV9uYW1lczsgKytqKQotLQkgIHsKLS0JICAgIGlmIChmaWxlX21hdGNoZXIgKGZpbGVfZGF0YS0+ ZmlsZV9uYW1lc1tqXSwgZGF0YSkpCi0tCSAgICAgIHsKLS0JCXBlcl9jdS0+di5xdWljay0+bWFy ayA9IDE7Ci0tCQlicmVhazsKLS0JICAgICAgfQotLQkgIH0KLS0gICAgICB9Ci0rCSAgLyogV2Ug b25seSBuZWVkIHRvIGxvb2sgYXQgc3ltdGFicyBub3QgYWxyZWFkeSBleHBhbmRlZC4gICovCi0r CSAgaWYgKHBlcl9jdS0+di5xdWljay0+c3ltdGFiKQotKwkgICAgY29udGludWU7Ci0rCi0rCSAg ZmlsZV9kYXRhID0gZHcyX2dldF9maWxlX25hbWVzIChvYmpmaWxlLCBwZXJfY3UpOwotKwkgIGlm IChmaWxlX2RhdGEgPT0gTlVMTCkKLSsJICAgIGNvbnRpbnVlOwotKwotKwkgIGlmIChodGFiX2Zp bmQgKHZpc2l0ZWRfbm90X2ZvdW5kLCBmaWxlX2RhdGEpICE9IE5VTEwpCi0rCSAgICBjb250aW51 ZTsKLSsJICBlbHNlIGlmIChodGFiX2ZpbmQgKHZpc2l0ZWRfZm91bmQsIGZpbGVfZGF0YSkgIT0g TlVMTCkKLSsJICAgIHsKLSsJICAgICAgcGVyX2N1LT52LnF1aWNrLT5tYXJrID0gMTsKLSsJICAg ICAgY29udGludWU7Ci0rCSAgICB9Ci0rCi0rCSAgZm9yIChqID0gMDsgaiA8IGZpbGVfZGF0YS0+ bnVtX2ZpbGVfbmFtZXM7ICsraikKLSsJICAgIHsKLSsJICAgICAgaWYgKGZpbGVfbWF0Y2hlciAo ZmlsZV9kYXRhLT5maWxlX25hbWVzW2pdLCBkYXRhKSkKLSsJCXsKLSsJCSAgcGVyX2N1LT52LnF1 aWNrLT5tYXJrID0gMTsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgc2xvdCA9 IGh0YWJfZmluZF9zbG90IChwZXJfY3UtPnYucXVpY2stPm1hcmsKLSsJCQkJID8gdmlzaXRlZF9m b3VuZAotKwkJCQkgOiB2aXNpdGVkX25vdF9mb3VuZCwKLSsJCQkJIGZpbGVfZGF0YSwgSU5TRVJU KTsKLSsJICAqc2xvdCA9IGZpbGVfZGF0YTsKLSsJfQotKwotKyAgICAgIGRvX2NsZWFudXBzIChj bGVhbnVwKTsKLSsgICAgfQotIAotICAgZm9yIChpdGVyID0gMDsgaXRlciA8IGluZGV4LT5zeW1i b2xfdGFibGVfc2xvdHM7ICsraXRlcikKLSAgICAgewotQEAgLTI3ODcsMTUgKzI4MTgsMzUgQEAK LSAJCQkgIHZvaWQgKmRhdGEsIGludCBuZWVkX2Z1bGxuYW1lKQotIHsKLSAgIGludCBpOwotKyAg c3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0rICBodGFiX3QgdmlzaXRlZCA9IGh0YWJfY3JlYXRl X2FsbG9jICgxMCwgaHRhYl9oYXNoX3BvaW50ZXIsIGh0YWJfZXFfcG9pbnRlciwKLSsJCQkJICAg ICAgTlVMTCwgeGNhbGxvYywgeGZyZWUpOwotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9o dGFiX2RlbGV0ZSAodmlzaXRlZCk7Ci0gICBkdzJfc2V0dXAgKG9iamZpbGUpOwotIAotKyAgLyog V2UgY2FuIGlnbm9yZSBmaWxlIG5hbWVzIGNvbWluZyBmcm9tIGFscmVhZHktZXhwYW5kZWQgQ1Vz LiAgKi8KLSsgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5p dHMKLSsJCSAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX3R5cGVfdW5pdHMpOyArK2kpCi0rICAg IHsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UgPSBkdzJfZ2V0X2N1 IChpKTsKLSsKLSsgICAgICBpZiAocGVyX2N1LT52LnF1aWNrLT5zeW10YWIpCi0rCXsKLSsJICB2 b2lkICoqc2xvdCA9IGh0YWJfZmluZF9zbG90ICh2aXNpdGVkLCBwZXJfY3UtPnYucXVpY2stPmZp bGVfbmFtZXMsCi0rCQkJCQlJTlNFUlQpOwotKwotKwkgICpzbG90ID0gcGVyX2N1LT52LnF1aWNr LT5maWxlX25hbWVzOwotKwl9Ci0rICAgIH0KLSsKLSAgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYy X3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKLSAJCSAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5u X3R5cGVfdW5pdHMpOyArK2kpCi0gICAgIHsKLSAgICAgICBpbnQgajsKLSAgICAgICBzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UgPSBkdzJfZ2V0X2N1IChpKTsKLSAgICAgICBzdHJ1 Y3QgcXVpY2tfZmlsZV9uYW1lcyAqZmlsZV9kYXRhOwotKyAgICAgIHZvaWQgKipzbG90OwotIAot ICAgICAgIC8qIFdlIG9ubHkgbmVlZCB0byBsb29rIGF0IHN5bXRhYnMgbm90IGFscmVhZHkgZXhw YW5kZWQuICAqLwotICAgICAgIGlmIChwZXJfY3UtPnYucXVpY2stPnN5bXRhYikKLUBAIC0yODA1 LDYgKzI4NTYsMTQgQEAKLSAgICAgICBpZiAoZmlsZV9kYXRhID09IE5VTEwpCi0gCWNvbnRpbnVl OwotIAotKyAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAodmlzaXRlZCwgZmlsZV9kYXRhLCBJ TlNFUlQpOwotKyAgICAgIGlmICgqc2xvdCkKLSsJewotKwkgIC8qIEFscmVhZHkgdmlzaXRlZC4g ICovCi0rCSAgY29udGludWU7Ci0rCX0KLSsgICAgICAqc2xvdCA9IGZpbGVfZGF0YTsKLSsKLSAg ICAgICBmb3IgKGogPSAwOyBqIDwgZmlsZV9kYXRhLT5udW1fZmlsZV9uYW1lczsgKytqKQotIAl7 Ci0gCSAgY29uc3QgY2hhciAqdGhpc19yZWFsX25hbWU7Ci1AQCAtMjgxNiw2ICsyODc1LDggQEAK LSAJICAoKmZ1bikgKGZpbGVfZGF0YS0+ZmlsZV9uYW1lc1tqXSwgdGhpc19yZWFsX25hbWUsIGRh dGEpOwotIAl9Ci0gICAgIH0KLSsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSB9Ci0gCi0g c3RhdGljIGludAorCitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA2L21z ZzAwMDEyLmh0bWwKKworIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA2LzAz IDE3OjA2OjA0CTEuMzIxMAorIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA2 LzAzIDE3OjEwOjI4CTEuMzIxMQorIyMgLTExLDYgKzExLDE2IEBACisgCShnZXQgYWRkcmVzcyBv ZiBteV9nbG9iYWxfZnVuYywgZ2V0IGFkZHJlc3Mgb2YgbWFpbik6IFdyYXAgdGhlbSB0bworIAkn b3JkZXIxJyBhbmQgJ29yZGVyMicuCisgCisrCSogZ2RiLmJhc2UvY29kZV9lbGltLmV4cAorKwko YWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCkKKysJKGFkZC1zeW1ib2wtZmls ZSAke3Rlc3RmaWxlMn0gMHgyMDAwMDApOiBXcmFwIHRoZW0gdG8gJ29yZGVyMScgYW5kCisrCSdv cmRlcjInLgorKwkob3JkZXIxOiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAw KQorKwkob3JkZXIxOiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAwMDAwKQorKwko b3JkZXIyOiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAwMDAwKQorKwkob3JkZXIy OiBhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTF9IDB4MTAwMDAwKTogQWRkIC1zIC5kYXRhIGFu ZCAtcworKwkuYnNzIGFzIGFwcHJvcHJpYXRlLgorKworIDIwMTItMDUtMjggIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KKyAKKyAJKiBnZGIuc2VydmVyL3NvbGli LWxpc3QtbGliLmM6IE5ldyBmaWxlLgorLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Nv ZGVfZWxpbS5leHAJMjAxMi8wNi8wMyAxNzowNjowNAkxLjUKKysrKyBzcmMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9jb2RlX2VsaW0uZXhwCTIwMTIvMDYvMDMgMTc6MTA6MjgJMS42CitAQCAtMTI4 LDE5ICsxMjgsMTkgQEAKKyBnZGJfZXhpdAorIGdkYl9zdGFydAorIAorLWdkYl90ZXN0ICJhZGQt c3ltYm9sLWZpbGUgJHtiaW5maWxlMX0gMHgxMDAwMDAiIFwKKy0JIlJlYWRpbmcgc3ltYm9scyBm cm9tIC4qJHt0ZXN0ZmlsZTF9XFwuXFwuXFwuZG9uZVxcLiIgXAorLQkiYWRkLXN5bWJvbC1maWxl ICR7dGVzdGZpbGUxfSAweDEwMDAwMCIgXAorLQkiYWRkIHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUg XCIuKiR7dGVzdGZpbGUxfVwiIGF0XFsgXHRcclxuXF0rXC50ZXh0X2FkZHIgPSAweDEwMDAwMFxb XHJcblxdK1xcKHkgb3IgblxcKSAiIFwKKy0JInkiCistCistZ2RiX3Rlc3QgImFkZC1zeW1ib2wt ZmlsZSAke2JpbmZpbGUyfSAweDIwMDAwMCIgXAorLQkiUmVhZGluZyBzeW1ib2xzIGZyb20gLiok e3Rlc3RmaWxlMn1cXC5cXC5cXC5kb25lXFwuIiBcCistCSJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0 ZmlsZTJ9IDB4MjAwMDAwIiBcCistCSJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBcIi4qJHt0 ZXN0ZmlsZTJ9XCIgYXRcWyBcdFxyXG5cXStcLnRleHRfYWRkciA9IDB4MjAwMDAwXFtcclxuXF0r XFwoeSBvciBuXFwpICIgXAorLQkieSIKKy0KKyB3aXRoX3Rlc3RfcHJlZml4ICJvcmRlcjEiIHsK KysgICAgZ2RiX3Rlc3QgImFkZC1zeW1ib2wtZmlsZSAke2JpbmZpbGUxfSAweDEwMDAwMCAtcyAu YnNzIDB4MTIwMDAwIiBcCisrCSAgICAiUmVhZGluZyBzeW1ib2xzIGZyb20gLioke3Rlc3RmaWxl MX1cXC5cXC5cXC5kb25lXFwuIiBcCisrCSAgICAiYWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUx fSAweDEwMDAwMCIgXAorKwkgICAgImFkZCBzeW1ib2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rl c3RmaWxlMX1cIiBhdC4qXFwoeSBvciBuXFwpICIgXAorKwkgICAgInkiCisrCisrICAgIGdkYl90 ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5maWxlMn0gMHgyMDAwMDAgLXMgLmRhdGEgMHgyMTAw MDAgLXMgLmJzcyAweDIyMDAwMCIgXAorKwkgICAgIlJlYWRpbmcgc3ltYm9scyBmcm9tIC4qJHt0 ZXN0ZmlsZTJ9XFwuXFwuXFwuZG9uZVxcLiIgXAorKwkgICAgImFkZC1zeW1ib2wtZmlsZSAke3Rl c3RmaWxlMn0gMHgyMDAwMDAiIFwKKysJICAgICJhZGQgc3ltYm9sIHRhYmxlIGZyb20gZmlsZSBc Ii4qJHt0ZXN0ZmlsZTJ9XCIgYXQuKlxcKHkgb3IgblxcKSAiIFwKKysJICAgICJ5IgorKworICAg ICBub3RfbnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfc3ltYm9sCisgICAgIG5vdF9udWxsX3Zh cl9hZGRyZXNzIG15X3N0YXRpY19zeW1ib2wKKyAgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlf Z2xvYmFsX2Z1bmMKK0BAIC0xNTIsMTkgKzE1MiwxOSBAQAorIGdkYl9leGl0CisgZ2RiX3N0YXJ0 CisgCistZ2RiX3Rlc3QgImFkZC1zeW1ib2wtZmlsZSAke2JpbmZpbGUyfSAweDIwMDAwMCIgXAor LQkiUmVhZGluZyBzeW1ib2xzIGZyb20gLioke3Rlc3RmaWxlMn1cXC5cXC5cXC5kb25lXFwuIiBc CistCSJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAwMDAwIiBcCistCSJhZGQgc3lt Ym9sIHRhYmxlIGZyb20gZmlsZSBcIi4qJHt0ZXN0ZmlsZTJ9XCIgYXRcWyBcdFxyXG5cXStcLnRl eHRfYWRkciA9IDB4MjAwMDAwXFtcclxuXF0rXFwoeSBvciBuXFwpICIgXAorLQkieSIKKy0KKy1n ZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7YmluZmlsZTF9IDB4MTAwMDAwIiBcCistCSJSZWFk aW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUxfVxcLlxcLlxcLmRvbmVcXC4iIFwKKy0JImFk ZC1zeW1ib2wtZmlsZSAke3Rlc3RmaWxlMX0gMHgxMDAwMDAiIFwKKy0JImFkZCBzeW1ib2wgdGFi bGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdFxbIFx0XHJcblxdK1wudGV4dF9hZGRy ID0gMHgxMDAwMDBcW1xyXG5cXStcXCh5IG9yIG5cXCkgIiBcCistCSJ5IgorLQorIHdpdGhfdGVz dF9wcmVmaXggIm9yZGVyMiIgeworKyAgICBnZGJfdGVzdCAiYWRkLXN5bWJvbC1maWxlICR7Ymlu ZmlsZTJ9IDB4MjAwMDAwIC1zIC5kYXRhIDB4MjEwMDAwIC1zIC5ic3MgMHgyMjAwMDAiIFwKKysJ ICAgICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAuKiR7dGVzdGZpbGUyfVxcLlxcLlxcLmRvbmVcXC4i IFwKKysJICAgICJhZGQtc3ltYm9sLWZpbGUgJHt0ZXN0ZmlsZTJ9IDB4MjAwMDAwIiBcCisrCSAg ICAiYWRkIHN5bWJvbCB0YWJsZSBmcm9tIGZpbGUgXCIuKiR7dGVzdGZpbGUyfVwiIGF0LipcXCh5 IG9yIG5cXCkgIiBcCisrCSAgICAieSIKKysKKysgICAgZ2RiX3Rlc3QgImFkZC1zeW1ib2wtZmls ZSAke2JpbmZpbGUxfSAweDEwMDAwMCAtcyAuYnNzIDB4MTIwMDAwIiBcCisrCSAgICAiUmVhZGlu ZyBzeW1ib2xzIGZyb20gLioke3Rlc3RmaWxlMX1cXC5cXC5cXC5kb25lXFwuIiBcCisrCSAgICAi YWRkLXN5bWJvbC1maWxlICR7dGVzdGZpbGUxfSAweDEwMDAwMCIgXAorKwkgICAgImFkZCBzeW1i b2wgdGFibGUgZnJvbSBmaWxlIFwiLioke3Rlc3RmaWxlMX1cIiBhdC4qXFwoeSBvciBuXFwpICIg XAorKwkgICAgInkiCisrCisgICAgIG5vdF9udWxsX3Zhcl9hZGRyZXNzIG15X2dsb2JhbF9zeW1i b2wKKyAgICAgbm90X251bGxfdmFyX2FkZHJlc3MgbXlfc3RhdGljX3N5bWJvbAorICAgICBub3Rf bnVsbF92YXJfYWRkcmVzcyBteV9nbG9iYWxfZnVuYwoKZGlmZiAtLWdpdCBhL2dkYi14ODYtb25z dGFjay0xb2YyLnBhdGNoIGIvZ2RiLXg4Ni1vbnN0YWNrLTFvZjIucGF0Y2gKaW5kZXggYTdmNjEx ZC4uN2Q3NTU2YyAxMDA2NDQKLS0tIGEvZ2RiLXg4Ni1vbnN0YWNrLTFvZjIucGF0Y2gKKysrIGIv Z2RiLXg4Ni1vbnN0YWNrLTFvZjIucGF0Y2gKQEAgLTQyLDggKzQyLDEwIEBAIGdkYi90ZXN0c3Vp dGUvCiAJKiBnZGIuYmFzZS9jYWxsLXNpZ25hbC1yZXN1bWUuZXhwIChtYWludGVuYW5jZSBwcmlu dCBkdW1teS1mcmFtZXMpCiAJKG1haW50ZW5hbmNlIGluZm8gYnJlYWtwb2ludHMpOiBOZXcgdGVz dHMuCiAKLS0tLSBhL2dkYi9kdW1teS1mcmFtZS5jCi0rKysgYi9nZGIvZHVtbXktZnJhbWUuYwor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R1bW15LWZyYW1lLmMKKz09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2R1bW15LWZyYW1lLmMJMjAxMi0wMS0w NCAwOToxNzowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9k dW1teS1mcmFtZS5jCTIwMTItMDYtMDIgMjA6NDI6NDAuOTA3NzIwMzI3ICswMjAwCiBAQCAtMjks NiArMjksNyBAQAogICNpbmNsdWRlICJnZGJjbWQuaCIKICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5o IgpAQCAtNTIsNyArNTQsNyBAQCBnZGIvdGVzdHN1aXRlLwogIAogIC8qIER1bW15IGZyYW1lLiAg VGhpcyBzYXZlcyB0aGUgcHJvY2Vzc29yIHN0YXRlIGp1c3QgcHJpb3IgdG8gc2V0dGluZwogICAg IHVwIHRoZSBpbmZlcmlvciBmdW5jdGlvbiBjYWxsLiAgT2xkZXIgdGFyZ2V0cyBzYXZlIHRoZSBy ZWdpc3RlcnMKLUBAIC0xMDgsMTkgKzEwOSwzNiBAQCByZW1vdmVfZHVtbXlfZnJhbWUgKHN0cnVj dCBkdW1teV9mcmFtZSAqKmR1bW15X3B0cikKK0BAIC0xMDgsMTkgKzEwOSwzNiBAQCByZW1vdmVf ZHVtbXlfZnJhbWUgKHN0cnVjdCBkdW1teV9mcmFtZSAqCiAgICB4ZnJlZSAoZHVtbXkpOwogIH0K ICAKQEAgLTkyLDExICs5NCwxMyBAQCBnZGIvdGVzdHN1aXRlLwogICAgKmR1bW15X3B0ciA9IGR1 bW15LT5uZXh0OwogICAgeGZyZWUgKGR1bW15KTsKICAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvY2FsbC1zaWduYWwtcmVzdW1lLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9jYWxsLXNpZ25hbC1yZXN1bWUuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2NhbGwtc2lnbmFsLXJlc3VtZS5leHAKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jYWxsLXNp Z25hbC1yZXN1bWUuZXhwCTIwMTItMDEtMjMgMTg6MTE6NTAuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NhbGwtc2lnbmFsLXJl c3VtZS5leHAJMjAxMi0wNi0wMiAyMDo0MzoxMC41MjM3MDkwNTIgKzAyMDAKIEBAIC0xMDEsNiAr MTAxLDE4IEBAIGdkYl90ZXN0ICJmcmFtZSAkZnJhbWVfbnVtYmVyIiAiLioiCiAgZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgY29uZmlybSBvZmYiCi0gZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJyZXR1cm4i CisgZ2RiX3Rlc3QgInJldHVybiIgIiIKICAKICsjIFZlcmlmeSB0aGVyZSBhcmUgbm8gcmVtYWlu cyBvZiB0aGUgZHVtbXkgZnJhbWUuCiArZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJtYWludGVuYW5jZSBw cmludCBkdW1teS1mcmFtZXMiCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRl eCA3ZWQ1MGM4Li41NTk4NjljIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpA QCAtMjQsMTMgKzI0LDEzIEBACiAgJWdsb2JhbCBfcm9vdF9iaW5kaXIgJXtfYmluZGlyfQogfQog Ci1TdW1tYXJ5OiBBIEdOVSBzb3VyY2UtbGV2ZWwgZGVidWdnZXIgZm9yIEMsIEMrKywgRm9ydHJh biBhbmQgb3RoZXIgbGFuZ3VhZ2VzCitTdW1tYXJ5OiBBIEdOVSBzb3VyY2UtbGV2ZWwgZGVidWdn ZXIgZm9yIEMsIEMrKywgRm9ydHJhbiwgR28gYW5kIG90aGVyIGxhbmd1YWdlcwogTmFtZTogJXs/ c2NsX3ByZWZpeH1nZGIKIAogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBvZiBnZGIvdmVyc2lv bi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJlcmVkIE4uTSBmb3Ig b2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFudWFyeSAyMDA1LCBY LlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIwMDUwMTEyICMgKGRh aWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEyIChoZWFkIG9mIHRo ZSByZWxlYXNlIGJyYW5jaCkuCi0lZ2xvYmFsIHNuYXAgMjAxMjAxMjAKKyVnbG9iYWwgc25hcCAy MDEyMDYwMgogVmVyc2lvbjogNy40LjUwLiV7c25hcH0KIAogIyBUaGUgcmVsZWFzZSBhbHdheXMg Y29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQgMS4KQEAgLTEz MywxMCArMTMzLDEwIEBAIFBhdGNoMTA1OiBnZGItNi4zLXBwYzY0c3lzY2FsbC0yMDA0MDYyMi5w YXRjaAogUGF0Y2gxMTE6IGdkYi02LjMtcHBjNjRkaXNwbGF5c3ltYm9sLTIwMDQxMTI0LnBhdGNo CiAKICMgRml4IHVwc3RyZWFtIGBzZXQgc2NoZWR1bGVyLWxvY2tpbmcgc3RlcCcgdnMuIHVwc3Ry ZWFtIFBQQyBhdG9taWMgc2Vxcy4KLSM9bWF5YmVwdXNoK3dvcms6IEl0IGlzIGEgYml0IGRpZmZp Y3VsdCBwYXRjaCwgYSBwYXJ0IGlzIHBwYyBzcGVjaWZpYy4KKyM9cHVzaCt3b3JrOiBJdCBpcyBh IGJpdCBkaWZmaWN1bHQgcGF0Y2gsIGEgcGFydCBpcyBwcGMgc3BlY2lmaWMuCiBQYXRjaDExMjog Z2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAogIyBN YWtlIHVwc3RyZWFtIGBzZXQgc2NoZWR1bGVyLWxvY2tpbmcgc3RlcCcgYXMgZGVmYXVsdC4KLSM9 bWF5YmVwdXNoK3dvcms6IEhvdyBtdWNoIGlzIHNjaGVkdWxlci1sb2NraW5nIHJlbGV2YW50IGFm dGVyIG5vbi1zdG9wPworIz1wdXNoK3dvcms6IEhvdyBtdWNoIGlzIHNjaGVkdWxlci1sb2NraW5n IHJlbGV2YW50IGFmdGVyIG5vbi1zdG9wPwogUGF0Y2gyNjA6IGdkYi02LjYtc2NoZWR1bGVyX2xv Y2tpbmctc3RlcC1pcy1kZWZhdWx0LnBhdGNoCiAKICMgQWRkIGEgd3JhcHBlciBzY3JpcHQgdG8g R0RCIHRoYXQgaW1wbGVtZW50cyBwc3RhY2sgdXNpbmcgdGhlCkBAIC0xNDcsMTMgKzE0NywxMyBA QCBQYXRjaDExODogZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKICMgVlNZU0NBTEwgYW5k IFBJRQogIz1mZWRvcmF0ZXN0CiBQYXRjaDEyMjogZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5w YXRjaAotIz1tYXliZXB1c2g6IE1heSBnZXQgb2Jzb2xldGVkIGJ5IFRvbSdzIHVucmVsb2NhdGVk IG9iamZpbGVzIHBhdGNoLgorIz1wdXNoOiBNYXkgZ2V0IG9ic29sZXRlZCBieSBUb20ncyB1bnJl bG9jYXRlZCBvYmpmaWxlcyBwYXRjaC4KIFBhdGNoMzg5OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMu cGF0Y2gKICM9cHVzaCt3b3JrOiBCcmVha3BvaW50cyBkaXNhYmxpbmcgbWF0Y2hpbmcgc2hvdWxk IG5vdCBiZSBiYXNlZCBvbiBhZGRyZXNzLgogUGF0Y2gzOTQ6IGdkYi1hcmNoZXItcGllLWFkZG9u cy1rZWVwLWRpc2FibGVkLnBhdGNoCiAKICMgR2V0IHNlbGZ0ZXN0IHdvcmtpbmcgd2l0aCBzZXAt ZGVidWctaW5mbwotIz1tYXliZXB1c2gKKyM9ZmVkb3JhdGVzdAogUGF0Y2gxMjU6IGdkYi02LjMt dGVzdC1zZWxmLTIwMDUwMTEwLnBhdGNoCiAKICMgVGVzdCBzdXBwb3J0IG9mIG11bHRpcGxlIGRl c3RydWN0b3JzIGp1c3QgbGlrZSBtdWx0aXBsZSBjb25zdHJ1Y3RvcnMKQEAgLTIzNSw3ICsyMzUs NyBAQCBQYXRjaDIwODogZ2RiLTYuNS1CRUEtdGVzdHN1aXRlLnBhdGNoCiBQYXRjaDIxMzogZ2Ri LTYuNS1yZWFkbGluZS1sb25nLWxpbmUtY3Jhc2gtdGVzdC5wYXRjaAogCiAjIEZpeCBib2d1cyAw eDAgdW53aW5kIG9mIHRoZSB0aHJlYWQncyB0b3Btb3N0IGZ1bmN0aW9uIGNsb25lKDMpIChCWiAy MTY3MTEpLgotIz1wdXNoCisjPWZlZG9yYQogUGF0Y2gyMTQ6IGdkYi02LjUtYnoyMTY3MTEtY2xv bmUtaXMtb3V0ZXJtb3N0LnBhdGNoCiAKICMgVGVzdCBzaWRlZWZmZWN0cyBvZiBza2lwcGluZyBw cGMgLnNvIGxpYnMgdHJhbXBvbGluZXMgKEJaIDIxODM3OSkuCkBAIC0yNDMsNyArMjQzLDcgQEAg UGF0Y2gyMTQ6IGdkYi02LjUtYnoyMTY3MTEtY2xvbmUtaXMtb3V0ZXJtb3N0LnBhdGNoCiBQYXRj aDIxNjogZ2RiLTYuNS1iejIxODM3OS1wcGMtc29saWItdHJhbXBvbGluZS10ZXN0LnBhdGNoCiAK ICMgRml4IGxvY2t1cCBvbiB0cmFtcG9saW5lIHZzLiBpdHMgZnVuY3Rpb24gbG9va3VwOyB1bnJl cHJvZHVjaWJsZSAoQlogMjE4Mzc5KS4KLSM9cHVzaAorIz1mZWRvcmEKIFBhdGNoMjE3OiBnZGIt Ni41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4LnBhdGNoCiAKICMg RmluZCBzeW1ib2xzIHByb3Blcmx5IGF0IHRoZWlyIG9yaWdpbmFsIChpbmNsdWRlZCkgZmlsZSAo QlogMTA5OTIxKS4KQEAgLTI3OSw3ICsyNzksNyBAQCBQYXRjaDI0NTogZ2RiLTYuNi1iejIyOTUx Ny1nY29yZS13aXRob3V0LXRlcm1pbmFsLnBhdGNoCiBQYXRjaDI0NzogZ2RiLTYuNi1iejIzNTE5 Ny1mb3JrLWRldGFjaC1pbmZvLnBhdGNoCiAKICMgQXZvaWQgdG9vIGxvbmcgdGltZW91dHMgb24g ZmFpbGluZyBjYXNlcyBvZiAiYW5ub3RhMS5leHAgYW5ub3RhMy5leHAiLgotIz1wdXNoCisjPWZl ZG9yYXRlc3QKIFBhdGNoMjU0OiBnZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaAogCiAj IFN1cHBvcnQgZm9yIHN0ZXBwaW5nIG92ZXIgUFBDIGF0b21pYyBpbnN0cnVjdGlvbiBzZXF1ZW5j ZXMgKEJaIDIzNzU3MikuCkBAIC0zMjEsNyArMzIxLDcgQEAgUGF0Y2gyODI6IGdkYi02LjctY2hh cnNpZ24tdGVzdC5wYXRjaAogUGF0Y2gyODQ6IGdkYi02LjctcHBjLWNsb2JiZXJlZC1yZWdpc3Rl cnMtTzItdGVzdC5wYXRjaAogCiAjIFRlc3RzdWl0ZSBmaXhlcyBmb3IgbW9yZSBzdGFibGUvY29t cGFyYWJsZSByZXN1bHRzLgotIz1wdXNoCisjPWZlZG9yYXRlc3QKIFBhdGNoMjg3OiBnZGItNi43 LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAogCiAjIFRlc3QgaWE2NCBtZW1vcnkgbGVh a3Mgb2YgdGhlIGNvZGUgdXNpbmcgbGlidW53aW5kLgpAQCAtNDI4LDcgKzQyOCw3IEBAIFBhdGNo MzkzOiBnZGItcmhlbDUtZ2NjNDQucGF0Y2gKIFBhdGNoMzk3OiBnZGItZm9sbG93LWNoaWxkLXN0 YWxlLXBhcmVudC5wYXRjaAogCiAjIFdvcmthcm91bmQgY2NhY2hlIG1ha2luZyBsaW5lbm8gbm9u LXplcm8gZm9yIGNvbW1hbmQtbGluZSBkZWZpbml0aW9ucy4KLSM9ZHJvcDogY2NhY2hlIGlzIHJh cmVseSB1c2VkIGFuZCBpdCBpcyBldmVuIGZpeGVkIG5vdy4KKyM9ZmVkb3JhdGVzdDogY2NhY2hl IGlzIHJhcmVseSB1c2VkIGFuZCBpdCBpcyBldmVuIGZpeGVkIG5vdy4KIFBhdGNoNDAzOiBnZGIt Y2NhY2hlLXdvcmthcm91bmQucGF0Y2gKIAogIyBJbXBsZW1lbnQgYGluZm8gY29tbW9uJyBmb3Ig Rm9ydHJhbi4KQEAgLTQ0NSwxMCArNDQ1LDYgQEAgUGF0Y2g0MDc6IGdkYi1saW5lbm8tbWFrZXVw LXRlc3QucGF0Y2gKICM9ZmVkb3JhdGVzdCtwcGMKIFBhdGNoNDA4OiBnZGItcHBjLXBvd2VyNy10 ZXN0LnBhdGNoCiAKLSMgUmV2ZXJ0OiBBZGQgLVd1bnVzZWQtZnVuY3Rpb24gdG8gY29tcGlsZSBm bGFncy4KLSM9ZHJvcAotUGF0Y2g0MTI6IGdkYi11bnVzZWQtcmV2ZXJ0LnBhdGNoCi0KICMgRml4 IGkzODYreDg2XzY0IHJ3YXRjaCthd2F0Y2ggYmVmb3JlIHJ1biwgcmVncmVzc2lvbiBhZ2FpbnN0 IDYuOCAoQlogNTQxODY2KS4KICMgRml4IGkzODYgcndhdGNoK2F3YXRjaCBiZWZvcmUgcnVuIChC WiA2ODg3ODgsIG9uIHRvcCBvZiBCWiA1NDE4NjYpLgogIz1wdXNoK3dvcms6IEl0IHNob3VsZCBi ZSBmaXhlZCBwcm9wZXJseSBpbnN0ZWFkLgpAQCAtNDY2LDE4ICs0NjIsMTIgQEAgUGF0Y2g0NzA6 IGdkYi1hcmNoZXItbmV4dC1vdmVyLXRocm93LWN4eC1leGVjLnBhdGNoCiAjPWZlZG9yYXRlc3QK IFBhdGNoNDc1OiBnZGItYno2MDE4ODctZHdhcmY0LXJoLXRlc3QucGF0Y2gKIAotIyBQcmludCAy RCBDKysgdmVjdG9ycyBhcyBtYXRyaWNlcyAoQlogNTYyNzYzLCBzb3VyY2V3YXJlMTA2NTksIENo cmlzIE1vbGxlcikuCi0jPXB1c2grd29yazogVGhlcmUgYXJlIHNvbWUgb3V0c3RhbmRpbmcgaXNz dWVzLCBjaGVjayB0aGUgbWFpbHMuCi1QYXRjaDQ4NjogZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmlu dC0yZC12ZWN0b3JzLnBhdGNoCi0jPXB1c2grd29yazogVGhlcmUgYXJlIHNvbWUgb3V0c3RhbmRp bmcgaXNzdWVzLCBjaGVjayB0aGUgbWFpbHMuCi1QYXRjaDQ4NzogZ2RiLWJ6NTYyNzYzLXByZXR0 eS1wcmludC0yZC12ZWN0b3JzLWxpYnN0ZGN4eC5wYXRjaAotCiAjIFtkZWxheWVkLXN5bWZpbGVd IFRlc3QgYSBiYWNrdHJhY2UgcmVncmVzc2lvbiBvbiBDRklzIHdpdGhvdXQgRElFIChCWiA2MTQ2 MDQpLgogIz1mZWRvcmF0ZXN0CiBQYXRjaDQ5MDogZ2RiLXRlc3QtYnQtY2ZpLXdpdGhvdXQtZGll LnBhdGNoCiAKICMgUHJvdmlkZSAvdXNyL2Jpbi9nZGItYWRkLWluZGV4IGZvciBycG0tYnVpbGQg KFRvbSBUcm9tZXkpLgotIz1kcm9wOiBSZS1jaGVjayBhZ2FpbnN0IHRoZSB1cHN0cmVhbSB2ZXJz aW9uLgorIz1mZWRvcmE6IFJlLWNoZWNrIGFnYWluc3QgdGhlIHVwc3RyZWFtIHZlcnNpb24uCiBQ YXRjaDQ5MTogZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCiAKICMgT3V0IG9mIG1lbW9y eSBpcyBqdXN0IGFuIGVycm9yLCBub3QgZmF0YWwgKHVuaW5pdGlhbGl6ZWQgVkxTIHZhcnMsIEJa IDU2ODI0OCkuCkBAIC01MzQsNyArNTI0LDcgQEAgUGF0Y2g2MTk6IGdkYi1kbG9wZW4tc3RhcC1w cm9iZS10ZXN0LnBhdGNoCiBQYXRjaDYyNzogZ2RiLWdsaWJjLXZkc28td29ya2Fyb3VuZC5wYXRj aAogCiAjIEhhY2sgZm9yIHByb3BlciBQSUUgcnVuIG9mIHRoZSB0ZXN0c3VpdGUuCi0jPXB1c2gr d29yaworIz1mZWRvcmF0ZXN0CiBQYXRjaDYzNDogZ2RiLXJ1bnRlc3QtcGllLW92ZXJyaWRlLnBh dGNoCiAKICMgV29yayBhcm91bmQgcmVhZGxpbmUtNi4yIGluY29tcGF0aWJpbGl0eSBub3QgYXNr aW5nIGZvciAtLW1vcmUtLSAoQlogNzAxMTMxKS4KQEAgLTU0NSwyOSArNTM1LDEwIEBAIFBhdGNo NjQyOiBnZGItcmVhZGxpbmU2Mi1hc2stbW9yZS1yaC5wYXRjaAogIz1wdXNoCiBQYXRjaDY0Mzog Z2RiLXB5dGhvbi1yZHluYW1pYy5wYXRjaAogCi0jIEltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIEMr KyBzeW1ib2xzIGV4cGFuc2lvbiAoVG9tIFRyb21leSwgQlogNzg3NDg3KS4KLSM9cHVzaAotUGF0 Y2g2NDQ6IGdkYi1leHBhbmQtY3h4LWFjY2VsLnBhdGNoCi0KLSMgRml4IHNraXBwaW5nIG9mIHBy b2xvZ3VlcyBvbiBSSEVMLTUgZ2NjLTQuMSAtTzIgLWcgY29kZSAoQlogNzk3ODg5KS4KLSM9cHVz aAotUGF0Y2g2NDU6IGdkYi1wcm9sb2d1ZS1ub3Qtc2tpcHBlZC5wYXRjaAotCi0jIEZpeCBicmVh a3BvaW50IHdhcm5pbmcgZHVyaW5nICduZXh0JyBvdmVyIGV4aXQoKSAoVG9tIFRyb21leSwgQlog Nzk3ODkyKS4KLSM9cHVzaAotUGF0Y2g2NDY6IGdkYi1leGl0LXdhcm5pbmcucGF0Y2gKLQotIyBb dmxhXSBGaXggY3Jhc2ggZm9yIGR5bmFtaWMuZXhwIHdpdGggZ2NjLWdmb3J0cmFuLTQuMS4yLTUx LmVsNS54ODZfNjQuCi0jPXB1c2grd29yawotUGF0Y2g2NDg6IGdkYi1hcmNoZXItdmxhLXJoZWw1 Z2NjLnBhdGNoCi0KICMgUHJpbnQgcmVhc29ucyBmb3IgZmFpbGVkIGF0dGFjaC9zcGF3biBpbmNs LiBTRUxpbnV4IGRlbnlfcHRyYWNlIChCWiA3ODY4NzgpLgogIz1wdXNoCi1QYXRjaDY0OTogZ2Ri LWF0dGFjaC1mYWlsLXJlYXNvbnMtMW9mNS5wYXRjaAotUGF0Y2g2NTA6IGdkYi1hdHRhY2gtZmFp bC1yZWFzb25zLTJvZjUucGF0Y2gKLVBhdGNoNjUxOiBnZGItYXR0YWNoLWZhaWwtcmVhc29ucy0z b2Y1LnBhdGNoCi1QYXRjaDY1MjogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNG9mNS5wYXRjaAog UGF0Y2g2NTM6IGdkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKKyM9ZmVkb3JhCiBQ YXRjaDY1NzogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNWNvbmZpZ3VyZS5wYXRjaAogCiAj IEZpeCBpbmZlcmlvciBjYWxscywgcGFydGljdWxhcmx5IHVuY2F1Z2h0IHRocm93biBleGNlcHRp b25zIChCWiA3OTk1MzEpLgpAQCAtNTc1LDU1ICs1NDYsMjAgQEAgUGF0Y2g2NTc6IGdkYi1hdHRh Y2gtZmFpbC1yZWFzb25zLTVvZjVjb25maWd1cmUucGF0Y2gKIFBhdGNoNjU0OiBnZGIteDg2LW9u c3RhY2stMW9mMi5wYXRjaAogUGF0Y2g2NTg6IGdkYi14ODYtb25zdGFjay0yb2YyLnBhdGNoCiAK LSMgRml4IERXQVJGIERJRXMgQ1UgdnMuIHNlY3Rpb24gcmVsYXRpdmUgb2Zmc2V0cyAoSm9lbCBC cm9iZWNrZXIsIG1lKS4KLSM9cHVzaAotUGF0Y2g2NTU6IGdkYi1kaWUtY3Utb2Zmc2V0LTFvZjIu cGF0Y2gKLVBhdGNoNjU2OiBnZGItZGllLWN1LW9mZnNldC0yb2YyLnBhdGNoCi0KLSMgW3ZsYV0g Rml4IHJlZ3Jlc3Npb24gb24gbm8gdHlwZSBmb3Igc3VicmFuZ2UgZnJvbSBJQk0gWExGIEZvcnRy YW4gKEJaIDgwNjkyMCkuCi0jPXB1c2gKLVBhdGNoNjYwOiBnZGItc3VicmFuZ2Utbm8tdHlwZS5w YXRjaAotCiAjIFdvcmthcm91bmQgY3Jhc2hlcyBmcm9tIHN0YWxlIGZyYW1lX2luZm8gcG9pbnRl ciAoQlogODA0MjU2KS4KICM9cHVzaCt3b3JrCiBQYXRjaDY2MTogZ2RiLXN0YWxlLWZyYW1lX2lu Zm8ucGF0Y2gKIAotIyBTZWN1cml0eSBmaXggZm9yIGxvYWRpbmcgdW50cnVzdGVkIGluZmVyaW9y cywgc2VlICJzZXQgYXV0by1sb2FkIiAoQlogNzU2MTE3KS4KLSM9cHVzaAotUGF0Y2g2NjI6IGdk Yi1hdXRvbG9hZC0wMW9mMjgucGF0Y2gKLVBhdGNoNjYzOiBnZGItYXV0b2xvYWQtMDJvZjI4LnBh dGNoCi1QYXRjaDY2NDogZ2RiLWF1dG9sb2FkLTAzb2YyOC5wYXRjaAotUGF0Y2g2NjU6IGdkYi1h dXRvbG9hZC0wNG9mMjgucGF0Y2gKLVBhdGNoNjY2OiBnZGItYXV0b2xvYWQtMDVvZjI4LnBhdGNo Ci1QYXRjaDY2NzogZ2RiLWF1dG9sb2FkLTA2b2YyOC5wYXRjaAotUGF0Y2g2Njg6IGdkYi1hdXRv bG9hZC0wN29mMjgucGF0Y2gKLVBhdGNoNjY5OiBnZGItYXV0b2xvYWQtMDhvZjI4LnBhdGNoCi1Q YXRjaDY3MDogZ2RiLWF1dG9sb2FkLTA5b2YyOC5wYXRjaAotUGF0Y2g2NzE6IGdkYi1hdXRvbG9h ZC0xMG9mMjgucGF0Y2gKLVBhdGNoNjcyOiBnZGItYXV0b2xvYWQtMTFvZjI4LnBhdGNoCi1QYXRj aDY3MzogZ2RiLWF1dG9sb2FkLTEyb2YyOC5wYXRjaAotUGF0Y2g2NzQ6IGdkYi1hdXRvbG9hZC0x M29mMjgucGF0Y2gKLVBhdGNoNjc1OiBnZGItYXV0b2xvYWQtMTRvZjI4LnBhdGNoCi1QYXRjaDY3 NjogZ2RiLWF1dG9sb2FkLTE1b2YyOC5wYXRjaAotUGF0Y2g2Nzc6IGdkYi1hdXRvbG9hZC0xNm9m MjgucGF0Y2gKLVBhdGNoNjc4OiBnZGItYXV0b2xvYWQtMTdvZjI4LnBhdGNoCi1QYXRjaDY3OTog Z2RiLWF1dG9sb2FkLTE4b2YyOC5wYXRjaAotUGF0Y2g2ODA6IGdkYi1hdXRvbG9hZC0xOW9mMjgu cGF0Y2gKLVBhdGNoNjgxOiBnZGItYXV0b2xvYWQtMjBvZjI4LnBhdGNoCi1QYXRjaDY4MjogZ2Ri LWF1dG9sb2FkLTIxb2YyOC5wYXRjaAotUGF0Y2g2ODM6IGdkYi1hdXRvbG9hZC0yMm9mMjgucGF0 Y2gKLVBhdGNoNjg0OiBnZGItYXV0b2xvYWQtMjNvZjI4LnBhdGNoCi1QYXRjaDY4NTogZ2RiLWF1 dG9sb2FkLTI0b2YyOC5wYXRjaAotUGF0Y2g2ODY6IGdkYi1hdXRvbG9hZC0yNW9mMjgucGF0Y2gK LVBhdGNoNjg3OiBnZGItYXV0b2xvYWQtMjZvZjI4LnBhdGNoCi1QYXRjaDY4ODogZ2RiLWF1dG9s b2FkLTI3b2YyOC5wYXRjaAotUGF0Y2g2ODk6IGdkYi1hdXRvbG9hZC0yOG9mMjgucGF0Y2gKLQog IyBXb3JrYXJvdW5kIFBSIGxpYmMvMTQxNjYgZm9yIGluZmVyaW9yIGNhbGxzIG9mIHN0cnN0ci4K KyM9cHVzaCt3b3JrOiBCdXQgcHVzaCBpdCB0byBnbGliYy4KIFBhdGNoNjkwOiBnZGItZ2xpYmMt c3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKIAotIyBbcHBjXSBGaXggaGFyZHdhcmUgd2F0Y2hwb2lu dHMgb24gUG93ZXJQQyAoQlogODI3NjAwLCBFZGp1bmlvciBNYWNoYWRvKS4KLVBhdGNoNjkxOiBn ZGItcHBjLXdhdGNocG9pbnQucGF0Y2gKKyMgRml4IGRlamFnbnUtMS41LTQuZmMxNyBjb21wYXRp YmlsaXR5IGZvciBHbyAoZm9yIEJaIDYzNTY1MSkuCisjPWZlZG9yYXRlc3QKK1BhdGNoNjkyOiBn ZGItZGVqYWdudS1nby5wYXRjaAorCisjIFJldmVydCByZWNlbnQgYnJlYWthZ2Ugb2YgVU5JWCBv YmpmaWxlcyBvcmRlciBmb3Igc3ltYm9scyBsb29rdXAuCitQYXRjaDY5MzogZ2RiLW9iamZpbGUt b3JkZXIucGF0Y2gKIAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NU QVRFX0ZFRE9SQV9HREIgd291bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTY4Miw2ICs2MTgsOSBA QCBFeGNsdXNpdmVBcmNoOiBub2FyY2ggaTM4NiB4ODZfNjQgcHBjIHBwYzY0IGlhNjQgczM5MCBz MzkweAogQnVpbGRSZXF1aXJlczogc2hhcnV0aWxzIGRlamFnbnUKICMgZ2NjLW9iamMrKyBpcyBu b3QgY292ZXJlZCBieSB0aGUgR0RCIHRlc3RzdWl0ZS4KIEJ1aWxkUmVxdWlyZXM6IGdjYyBnY2Mt YysrIGdjYy1nZm9ydHJhbiBnY2MtamF2YSBnY2Mtb2JqYworJWlmIDAleyE/cmhlbDoxfSB8fCAw JXs/c2NsOjF9IHx8IDAlez9yaGVsfSA+IDYKK0J1aWxkUmVxdWlyZXM6IGdjYy1nbworJWVuZGlm CiAjIGFyY2hlci1zZXJnaW9kai1zdGFwLXBhdGNoLXNwbGl0CiBCdWlsZFJlcXVpcmVzOiBzeXN0 ZW10YXAtc2R0LWRldmVsCiAjIENvcGllZCBmcm9tIHByZWxpbmstMC40LjItMy5mYzEzLgpAQCAt NzA3LDYgKzY0Niw5IEBAIEJ1aWxkUmVxdWlyZXM6IGxpYmdjYyV7Yml0c19sb2NhbH0gbGliZ2Nj JXtiaXRzX290aGVyfQogIyBsaWJzdGRjKystZGV2ZWwgb2YgbWF0Y2hpbmcgYml0cyBpcyByZXF1 aXJlZCBvbmx5IGZvciBnKysgLXN0YXRpYy4KIEJ1aWxkUmVxdWlyZXM6IGxpYnN0ZGMrKyV7Yml0 c19sb2NhbH0gbGlic3RkYysrJXtiaXRzX290aGVyfQogQnVpbGRSZXF1aXJlczogbGliZ2NqJXti aXRzX2xvY2FsfSBsaWJnY2ole2JpdHNfb3RoZXJ9CislaWYgMCV7IT9yaGVsOjF9IHx8IDAlez9z Y2w6MX0gfHwgMCV7P3JoZWx9ID4gNgorQnVpbGRSZXF1aXJlczogbGliZ28tZGV2ZWwle2JpdHNf bG9jYWx9IGxpYmdvLWRldmVsJXtiaXRzX290aGVyfQorJWVuZGlmCiAlaWYgMCV7IT9lbDU6MX0K IEJ1aWxkUmVxdWlyZXM6IGdsaWJjLXN0YXRpYyV7Yml0c19sb2NhbH0KICVlbmRpZgpAQCAtODc1 LDEyICs4MTcsMTAgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1l eHAuYyBnZGIvcC1leHAuYwogJXBhdGNoMzk0IC1wMQogJXBhdGNoNDA3IC1wMQogJXBhdGNoNDA4 IC1wMQotJXBhdGNoNDEyIC1wMQogJXBhdGNoNDE3IC1wMQogJXBhdGNoNDU5IC1wMQogJXBhdGNo NDcwIC1wMQogJXBhdGNoNDc1IC1wMQotJXBhdGNoNDg2IC1wMQogJXBhdGNoNDE1IC1wMQogJXBh dGNoNTE5IC1wMQogJXBhdGNoNDkwIC1wMQpAQCAtODk5LDYwICs4MzksMTkgQEAgcm0gLWYgZ2Ri L2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1leHAuYwogJXBhdGNo NjI3IC1wMQogJXBhdGNoNjM0IC1wMQogJXBhdGNoNjQzIC1wMQotJXBhdGNoNjQ0IC1wMQotJXBh dGNoNjQ1IC1wMQotJXBhdGNoNjQ2IC1wMQotJXBhdGNoNjQ4IC1wMQotJXBhdGNoNjQ5IC1wMQot JXBhdGNoNjUwIC1wMQotJXBhdGNoNjUxIC1wMQotJXBhdGNoNjUyIC1wMQogJXBhdGNoNjUzIC1w MQogJXBhdGNoNjU3IC1wMQogJXBhdGNoNjU0IC1wMQogJXBhdGNoNjU4IC1wMQotJXBhdGNoNjU1 IC1wMQotJXBhdGNoNjU2IC1wMQotJXBhdGNoNjYwIC1wMQogJXBhdGNoNjYxIC1wMQotJXBhdGNo NjYyIC1wMQotJXBhdGNoNjYzIC1wMQotJXBhdGNoNjY0IC1wMQotJXBhdGNoNjY1IC1wMQotJXBh dGNoNjY2IC1wMQotJXBhdGNoNjY3IC1wMQotJXBhdGNoNjY4IC1wMQotJXBhdGNoNjY5IC1wMQot JXBhdGNoNjcwIC1wMQotJXBhdGNoNjcxIC1wMQotJXBhdGNoNjcyIC1wMQotJXBhdGNoNjczIC1w MQotJXBhdGNoNjc0IC1wMQotJXBhdGNoNjc1IC1wMQotJXBhdGNoNjc2IC1wMQotJXBhdGNoNjc3 IC1wMQotJXBhdGNoNjc4IC1wMQotJXBhdGNoNjc5IC1wMQotJXBhdGNoNjgwIC1wMQotJXBhdGNo NjgxIC1wMQotJXBhdGNoNjgyIC1wMQotJXBhdGNoNjgzIC1wMQotJXBhdGNoNjg0IC1wMQotJXBh dGNoNjg1IC1wMQotJXBhdGNoNjg2IC1wMQotJXBhdGNoNjg3IC1wMQotJXBhdGNoNjg4IC1wMQot JXBhdGNoNjg5IC1wMQogJXBhdGNoNjkwIC1wMQotJXBhdGNoNjkxIC1wMQorJXBhdGNoNjkyIC1w MQorJXBhdGNoNjkzIC1wMQogCiAlcGF0Y2gzOTMgLXAxCiAlaWYgMCV7IT9lbDU6MX0gfHwgMCV7 P3NjbDoxfQogJXBhdGNoMzkzIC1wMSAtUgogJWVuZGlmCi0laWYgMCV7P3JoZWw6MX0gJiYgMCV7 P3JoZWx9IDw9IDYKLSVwYXRjaDQ4NyAtcDEKLSVlbmRpZgogJXBhdGNoNjQyIC1wMQogJWlmIDAl ez9yaGVsOjF9ICYmIDAlez9yaGVsfSA8PSA2CiAlcGF0Y2g2NDIgLXAxIC1SCkBAIC0xMDQ5LDcg Kzk0OCw3IEBAICQoOiBSSEVMLTUgbGlicnBtIGhhcyBpbmNvbXBhdGlibGUgQVBJLiApCQkJXAog JWlmIDAlez9lbDY6MX0KIAktLXdpdGgtcnBtPWxpYnJwbS5zby4xCQkJCQlcCiAlZWxzZQotCS0t d2l0aC1ycG09bGlicnBtLnNvLjIJCQkJCVwKKwktLXdpdGgtcnBtPWxpYnJwbS5zby4zCQkJCQlc CiAlZW5kaWYKICVlbmRpZgogJWlmYXJjaCBpYTY0CkBAIC0xNDM3LDYgKzEzMzYsMTQgQEAgZmkK ICVlbmRpZiAjIDAleyE/ZWw1OjF9IHx8ICIle190YXJnZXRfY3B1fSIgPT0gIm5vYXJjaCIKIAog JWNoYW5nZWxvZworKiBTdW4gSnVuICAzIDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwNjAyLTEuZmMxOAorLSBSZWJhc2UgdG8gRlNG IEdEQiA3LjQuNTAuMjAxMjA2MDIuCistIFt0ZXN0c3VpdGVdIEJ1aWxkUmVxdWlyZSBnY2MtZ28u CistIERyb3AgcHJpbnRpbmcgMkQgQysrIHZlY3RvcnMgYXMgbWF0cmljZXMgd2hpY2ggbm8gbG9u Z2VyIHdvcmtlZCAoQlogNTYyNzYzKS4KKy0gRml4IGRlamFnbnUtMS41LTQuZmMxNyBjb21wYXRp YmlsaXR5IGZvciBHbyAoZm9yIEJaIDYzNTY1MSkuCistIFVzZSBsaWJycG0uc28uMyBmb3IgcnBt LTQuMTAuMCBpbiBGZWRvcmEgMTguCistIFJldmVydCByZWNlbnQgYnJlYWthZ2Ugb2YgVU5JWCBv YmpmaWxlcyBvcmRlciBmb3Igc3ltYm9scyBsb29rdXAuCisKICogU2F0IEp1biAgMiAyMDEyIEph biBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNC41MC4yMDEyMDEy MC00OC5mYzE3CiAtIFtwcGNdIEZpeCBoYXJkd2FyZSB3YXRjaHBvaW50cyBvbiBQb3dlclBDIChC WiA4Mjc2MDAsIEVkanVuaW9yIE1hY2hhZG8pLgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3Nv dXJjZXMKaW5kZXggNTgzZDc1My4uZmEyMDNkMSAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9z b3VyY2VzCkBAIC0xLDIgKzEsMiBAQAogMDRlNWM0YjFiOWU2MzM0MjJjYzQ4OTkwZmU2MTk1OGQg IGxpYnN0ZGMrKy12My1weXRob24tcjE1NTk3OC50YXIuYnoyCi05ZGU4NGEyMmU0Yjk2YzA4ZDhk MzFhNzJkNzc1MWM2MCAgZ2RiLTcuNC41MC4yMDEyMDEyMC50YXIuYnoyCisyYTNhODhjYzJlOTJh YWFmNTBmNzU4NDMzMTA5NGFkMyAgZ2RiLTcuNC41MC4yMDEyMDYwMi50YXIuYnoyCg==