From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.7.90.20140613 (pre-7.8 snapshot). Date: Sat, 27 Jun 2026 23:56:38 GMT Message-ID: <178260459846.1.9832548192223238060.rpms-gdb-eb6cb2db363d@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: eb6cb2db363d172ecc38e626d26627cb67712dd3 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogZWI2Y2IyZGIzNjNkMTcyZWNjMzhlNjI2ZDI2 NjI3Y2I2NzcxMmRkMwpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxNC0wNi0xOVQyMjoxNDozMiswMjowMApTdGF0cyAgOiArMTAy NjIvLTE0MjM5IGluIDcyIGZpbGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVj dC5vcmcvcnBtcy9nZGIvYy9lYjZjYjJkYjM2M2QxNzJlY2MzOGU2MjZkMjY2MjdjYjY3NzEyZGQz P2JyYW5jaD1nZGItMTcuMi1yZWJhc2UtZjQ0CgpMb2c6ClJlYmFzZSB0byBGU0YgR0RCIDcuNy45 MC4yMDE0MDYxMyAocHJlLTcuOCBzbmFwc2hvdCkuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25v cmUgYi8uZ2l0aWdub3JlCmluZGV4IGM2YWE2ZGMuLjU5NzVkOWMgMTAwNjQ0Ci0tLSBhLy5naXRp Z25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSwyICsxLDIgQEAKIC9nZGItbGlic3RkYysrLXYz LXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLS9nZGItNy43LjEudGFyLmJ6MgorL2dkYi03LjcuOTAu MjAxNDA2MTMudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcu cGF0Y2ggYi9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4IGYzOGMwYmYuLjg0 MTk1YjggMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKKysrIGIv Z2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtMSwyOSArMSwyOSBAQAotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKK0luZGV4OiBn ZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFj CTIwMTQtMDEtMjcgMjI6NDE6MTkuMjgxNTAxNjg4ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDE0LTAxLTI3IDIyOjQxOjM5LjczNjUx NzM2MCArMDEwMAotQEAgLTk2LDYgKzk2LDYgQEAgQUNfT1VUUFVUKFtNYWtlZmlsZSBcCistLS0g Z2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCTIwMTQt MDYtMTMgMjA6MDU6MzMuMDU4NTA2ODE3ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIwOjA1OjU5Ljk5MTUzMjU5NSAr MDIwMAorQEAgLTk3LDYgKzk3LDYgQEAgQUNfT1VUUFVUKFtNYWtlZmlsZSBcCiAgICBnZGIuaHAv Z2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtlZmlsZSBcCi0gICBnZGIuaHAv Z2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxlIFwKKyAgIGdkYi5ocC9n ZGIuZGVmZWN0cy9NYWtlZmlsZSBnZGIuZ3VpbGUvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2Vm aWxlIFwKICAgIGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkv TWFrZWZpbGUgXAogLSAgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIu b3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUgXAogKyAgZ2RiLm9iamMvTWFrZWZpbGUg Z2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUg Z2RiLnBpZS9NYWtlZmlsZSBcCiAgICBnZGIucGVyZi9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2Vm aWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBcCiAgICBnZGIudGhy ZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZV0pCi1JbmRl eDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQorSW5kZXg6IGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxNC0w MS0yNyAyMjo0MToxOS4yODM1MDE2ODkgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTQtMDEtMjcgMjI6NDE6NDkuOTMzNTI1MTcyICswMTAw CistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIw MTQtMDYtMTMgMjA6MDU6MjkuOTU2NTAzODk5ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYw OS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQkyMDE0LTA2LTEzIDIwOjA2OjI0LjQ5MjU1NTcwOSAr MDIwMAogQEAgLTM0NDgsNyArMzQ0OCw3IEBAIGRvbmUKICAKICAKICAKLS1hY19jb25maWdfZmls ZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJjaC9N YWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2VmaWxlIGdkYi5idHJhY2UvTWFr ZWZpbGUgZ2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZp bGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuZ28vTWFrZWZp bGUgZ2RiLnNlcnZlci9NYWtlZmlsZSBnZGIuamF2YS9NYWtlZmlsZSBnZGIuaHAvTWFrZWZpbGUg Z2RiLmhwL2dkYi5vYmpkYmcvTWFrZWZpbGUgZ2RiLmhwL2dkYi5iYXNlLWhwL01ha2VmaWxlIGdk Yi5ocC9nZGIuYUNDL01ha2VmaWxlIGdkYi5ocC9nZGIuY29tcGF0L01ha2VmaWxlIGdkYi5ocC9n ZGIuZGVmZWN0cy9NYWtlZmlsZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxl IGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBnZGIub2JqYy9NYWtlZmls ZSBnZGIub3BlbmNsL01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmls ZSBnZGIucGVyZi9NYWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2Vm aWxlIGdkYi5zdGFicy9NYWtlZmlsZSBnZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFr ZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIKLSthY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmls ZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01h a2VmaWxlIGdkYi5iYXNlL01ha2VmaWxlIGdkYi5idHJhY2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFr ZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtl ZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuZ28vTWFrZWZpbGUgZ2RiLnNlcnZlci9NYWtl ZmlsZSBnZGIuamF2YS9NYWtlZmlsZSBnZGIuaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5vYmpkYmcv TWFrZWZpbGUgZ2RiLmhwL2dkYi5iYXNlLWhwL01ha2VmaWxlIGdkYi5ocC9nZGIuYUNDL01ha2Vm aWxlIGdkYi5ocC9nZGIuY29tcGF0L01ha2VmaWxlIGdkYi5ocC9nZGIuZGVmZWN0cy9NYWtlZmls ZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2Vm aWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01ha2Vm aWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGllL01ha2VmaWxl IGdkYi5wZXJmL01ha2VmaWxlIGdkYi5weXRob24vTWFrZWZpbGUgZ2RiLnJldmVyc2UvTWFrZWZp bGUgZ2RiLnN0YWJzL01ha2VmaWxlIGdkYi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtl ZmlsZSBnZGIueG1sL01ha2VmaWxlIgorLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxl cyBNYWtlZmlsZSBnZGIuYWRhL01ha2VmaWxlIGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFr ZWZpbGUgZ2RiLmJhc2UvTWFrZWZpbGUgZ2RiLmJ0cmFjZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtl ZmlsZSBnZGIuY3AvTWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2Vm aWxlIGdkYi5kbGFuZy9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuZ2RiL01ha2Vm aWxlIGdkYi5nby9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxl IGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmJh c2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21wYXQv TWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdkYi5ndWlsZS9NYWtlZmlsZSBn ZGIubGluZXNwZWMvTWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2VmaWxl IGdkYi5tdWx0aS9NYWtlZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01ha2VmaWxl IGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGVyZi9NYWtlZmlsZSBn ZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmls ZSBnZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmls ZSIKKythY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9N YWtlZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2Vm aWxlIGdkYi5idHJhY2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxl IGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBnZGIuZGxhbmcvTWFrZWZp bGUgZ2RiLmZvcnRyYW4vTWFrZWZpbGUgZ2RiLmdkYi9NYWtlZmlsZSBnZGIuZ28vTWFrZWZpbGUg Z2RiLnNlcnZlci9NYWtlZmlsZSBnZGIuamF2YS9NYWtlZmlsZSBnZGIuaHAvTWFrZWZpbGUgZ2Ri LmhwL2dkYi5vYmpkYmcvTWFrZWZpbGUgZ2RiLmhwL2dkYi5iYXNlLWhwL01ha2VmaWxlIGdkYi5o cC9nZGIuYUNDL01ha2VmaWxlIGdkYi5ocC9nZGIuY29tcGF0L01ha2VmaWxlIGdkYi5ocC9nZGIu ZGVmZWN0cy9NYWtlZmlsZSBnZGIuZ3VpbGUvTWFrZWZpbGUgZ2RiLmxpbmVzcGVjL01ha2VmaWxl IGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUg Z2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdk Yi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnBpZS9NYWtlZmlsZSBnZGIucGVyZi9NYWtlZmlsZSBnZGIu cHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBn ZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIK ICAKICBjYXQgPmNvbmZjYWNoZSA8PFxfQUNFT0YKICAjIFRoaXMgZmlsZSBpcyBhIHNoZWxsIHNj cmlwdCB0aGF0IGNhY2hlcyB0aGUgcmVzdWx0cyBvZiBjb25maWd1cmUKLUBAIC00MTc2LDYgKzQx NzYsNyBAQCBkbworQEAgLTQxNzksNiArNDE3OSw3IEBAIGRvCiAgICAgICJnZGIub3BlbmNsL01h a2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5vcGVuY2wvTWFrZWZpbGUi IDs7CiAgICAgICJnZGIub3B0L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGdkYi5vcHQvTWFrZWZpbGUiIDs7CiAgICAgICJnZGIucGFzY2FsL01ha2VmaWxlIikgQ09ORklH X0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5wYXNjYWwvTWFrZWZpbGUiIDs7CkBAIC0zMSwxMCAr MzEsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1 cmUKICAgICAgImdkYi5wZXJmL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGdkYi5wZXJmL01ha2VmaWxlIiA7OwogICAgICAiZ2RiLnB5dGhvbi9NYWtlZmlsZSIpIENPTkZJ R19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIucHl0aG9uL01ha2VmaWxlIiA7OwogICAgICAiZ2Ri LnJldmVyc2UvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLnJldmVy c2UvTWFrZWZpbGUiIDs7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRl L2dkYi5waWUvYXR0YWNoLmMKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9hdHRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCTIwMTQtMDEtMjcgMjI6NDE6MTkuMjg0NTAxNjkwICsw MTAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmMJMjAxNC0wNi0xMyAyMDowNTozMy4wNjA1MDY4MTkgKzAyMDAKIEBAIC0wLDAgKzEsMjAgQEAK ICsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdk YiwgYW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3Bp bnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKICsgICAgfQogKyAg cmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL2F0dGFjaDIuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2F0dGFjaDIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDE0LTAxLTI3IDIyOjQxOjE5LjI4NDUwMTY5MCAr MDEwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFj aDIuYwkyMDE0LTA2LTEzIDIwOjA1OjMzLjA2MDUwNjgxOSArMDIwMAogQEAgLTAsMCArMSwyNCBA QAogKy8qIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBzdGFydGVkIG91dHNpZGUgb2Yg Z2RiLCBhbmQgdGhlbgogKyAgIGF0dGFjaGVkIHRvIGJ5IGdkYi4gIFRodXMsIGl0IHNpbXBseSBz cGlucyBpbiBhIGxvb3AuICBUaGUgbG9vcApAQCAtODUsMTAgKzg1LDEwIEBAIEluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKICsgICAgfQog KyAgcmV0dXJuICgwKTsKICt9Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvYnJlYWsuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90 ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5jCTIwMTQtMDEtMjcgMjI6NDE6MTkuMjg0NTAxNjkwICsw MTAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsu YwkyMDE0LTA2LTEzIDIwOjA1OjMzLjA2MTUwNjgyMCArMDIwMAogQEAgLTAsMCArMSwxNDYgQEAK ICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpA QCAtMjM2LDEwICsyMzYsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdk Yi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCitJbmRleDog Z2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwky MDE0LTAxLTI3IDIyOjQxOjE5LjI4NDUwMTY5MCArMDEwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2 MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCTIwMTQtMDYtMTMgMjA6MDU6MzMuMDYx NTA2ODIwICswMjAwCiBAQCAtMCwwICsxLDQ0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTI4NSwxMCArMjg1LDEwIEBAIEluZGV4 OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwogK3Zv aWQgbWFya2VyMyAoYSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhl cmUgKi8KICt2b2lkIG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEz IGhlcmUgKi8KICsjZW5kaWYKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9jb3JlbWFrZXIuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJMjAxNC0wMS0yNyAyMjo0MToxOS4y ODQ1MDE2OTAgKzAxMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9jb3JlbWFrZXIuYwkyMDE0LTA2LTEzIDIwOjA1OjMzLjA2MTUwNjgyMCArMDIwMAogQEAg LTAsMCArMSwxNDIgQEAKICsvKiBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5 NiwgMTk5OQogKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMyLDEwICs0 MzIsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2NvcmVtYWtlci5jCiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAorSW5kZXg6IGdkYi03LjcuNTAu MjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTQtMDEt MjcgMjI6NDE6MTkuMjg1NTAxNjkxICswMTAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIv dGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDE0LTA2LTEzIDIwOjA1OjMzLjA2MTUwNjgy MCArMDIwMAogQEAgLTAsMCArMSw0MTcgQEAKICsjICAgQ29weXJpZ2h0IDE5OTcsIDE5OTksIDIw MDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04NTQsMTAgKzg1NCwxMCBA QCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmV4cAogK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGIt Ny43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAx NC0wMS0yNyAyMjo0MToxOS4yODY1MDE2OTEgKzAxMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5 L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxNC0wNi0xMyAyMDowNTozMy4wNjI1 MDY4MjEgKzAyMDAKIEBAIC0wLDAgKzEsOTYyIEBACiArIyAgIENvcHlyaWdodCAxOTg4LCAxOTkw LCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAogKyMgICAy MDAwLCAyMDAyLCAyMDAzLCAyMDA0CkBAIC0xODIxLDEwICsxODIxLDEwIEBAIEluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKICsgICAgc2Vu ZF9nZGIgInNldCBhcmdzIG1haW5cbiIKICsgICAgZ2RiX2V4cGVjdCAtcmUgIi4qJGdkYl9wcm9t cHQgJCIge30KICt9Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvY29yZWZpbGUuZXhwCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTQtMDEtMjcgMjI6NDE6MTkuMjg2 NTAxNjkxICswMTAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5w aWUvY29yZWZpbGUuZXhwCTIwMTQtMDYtMTMgMjA6MDU6MzMuMDYzNTA2ODIyICswMjAwCiBAQCAt MCwwICsxLDIzMyBAQAogKyMgQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYs IDE5OTcsIDE5OTgsIDE5OTksIDIwMDAKICsjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgpAQCAtMjA1OSwxMCArMjA1OSwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIv dGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCiArZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0q ICpcWzAtOXhhLWZIJ1xdKiBpbiAuKiBcXCguKlxcKS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIChy ZWluaXQpIgogKwogK2dkYl90ZXN0ICJjb3JlIiAiTm8gY29yZSBmaWxlIG5vdy4iCi1JbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4KK0lu ZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5p bgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01h a2VmaWxlLmluCTIwMTQtMDEtMjcgMjI6NDE6MTkuMjg2NTAxNjkxICswMTAwCisrKysgZ2RiLTcu Ny41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4JMjAxNC0wNi0x MyAyMDowNTozMy4wNjM1MDY4MjIgKzAyMDAKIEBAIC0wLDAgKzEsMTkgQEAKICtWUEFUSCA9IEBz cmNkaXJACiArc3JjZGlyID0gQHNyY2RpckAKCmRpZmYgLS1naXQgYS9nZGItNi41LWJ6MjE4Mzc5 LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4LnBhdGNoIGIvZ2RiLTYuNS1iejIxODM3 OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1cC1sb2NrLWZpeC5wYXRjaAppbmRleCAwYjM5MzFmLi41 OGFhZGJmIDEwMDY0NAotLS0gYS9nZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9v a3VwLWxvY2stZml4LnBhdGNoCisrKyBiL2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGlu ZS1sb29rdXAtbG9jay1maXgucGF0Y2gKQEAgLTEsMTEgKzEsMTEgQEAKIGh0dHBzOi8vYnVnemls bGEucmVkaGF0LmNvbS9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MjE4Mzc5CiAKIAotSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9zeW10YWIuYworSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3N5bXRhYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMub3JpZy9nZGIvc3ltdGFiLmMJMjAxMy0wOC0wMiAxNzowNjoxOS44NTQ2NjM4MDEgKzAy MDAKLSsrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvc3ltdGFiLmMJMjAxMy0wOC0wMiAx NzowNzowNC4zMTc3MjE0NzEgKzAyMDAKLUBAIC0yMzI3LDYgKzIzMjcsMTMgQEAgZmluZF9wY19z ZWN0X2xpbmUgKENPUkVfQUREUiBwYywgc3RydWN0CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9zeW10YWIuYwkyMDE0LTA2LTEzIDIxOjUyOjA2LjIxOTMzODQwMSArMDIwMAorKysr IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3N5bXRhYi5jCTIwMTQtMDYtMTMgMjE6NTU6MDIuNzUz NTMxODg1ICswMjAwCitAQCAtMjM5NCw2ICsyMzk0LDEzIEBAIGZpbmRfcGNfc2VjdF9saW5lIChD T1JFX0FERFIgcGMsIHN0cnVjdAogIAkgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wp KTsgKi8KICAJICA7CiAgCS8qIGZhbGwgdGhyb3VnaCAqLwpAQCAtMTMsOSArMTMsOSBAQCBJbmRl eDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3N5bXRhYi5jCiArCSAgIGJ1dCB0aGlzIHRl eHQgc3ltYm9sIG1heSBiZSB0aGUgYWRkcmVzcyB3ZSB3ZXJlIGxvb2tpbmcgZm9yLgogKwkgICBB dm9pZCBgZmluZF9wY19zZWN0X2xpbmUnPC0+YGZpbmRfcGNfbGluZScgaW5maW5pdGUgbG9vcC4K ICsJICAgUmVkIEhhdCBCdWcgMjE4Mzc5LiAgKi8KLSsJZWxzZSBpZiAoU1lNQk9MX1ZBTFVFICht ZnVuc3ltKSA9PSBwYykKLSsJICB3YXJuaW5nICgiSW4gc3R1YiBmb3IgJXMgKDB4JXMpOyBpbnRl cmxvY2tlZCwgcGxlYXNlIHN1Ym1pdCB0aGUgYmluYXJ5IHRvIGh0dHA6Ly9idWd6aWxsYS5yZWRo YXQuY29tIiwgU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbC5taW5zeW0pLCBwYWRkcmVzcyAo dGFyZ2V0X2dkYmFyY2ggKCksIHBjKSk7CisrCWVsc2UgaWYgKEJNU1lNQk9MX1ZBTFVFX0FERFJF U1MgKG1mdW5zeW0pID09IHBjKQorKwkgIHdhcm5pbmcgKCJJbiBzdHViIGZvciAlcyAoMHglcyk7 IGludGVybG9ja2VkLCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8gaHR0cDovL2J1Z3ppbGxh LnJlZGhhdC5jb20iLCBNU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJvbC5taW5zeW0pLCBwYWRk cmVzcyAodGFyZ2V0X2dkYmFyY2ggKCksIHBjKSk7CiArCS8qIGZhbGwgdGhyb3VnaCAqLwogIAll bHNlCi0gCSAgcmV0dXJuIGZpbmRfcGNfbGluZSAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1mdW5z eW0pLCAwKTsKKyAJICByZXR1cm4gZmluZF9wY19saW5lIChCTVNZTUJPTF9WQUxVRV9BRERSRVNT IChtZnVuc3ltKSwgMCk7CiAgICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYmZkLXZkc284 ay5wYXRjaCBiL2dkYi02LjYtYmZkLXZkc284ay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDY1MDdiMC4uMDAwMDAwMAotLS0gYS9nZGItNi42LWJmZC12ZHNvOGsucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotMjAwNy0wOS0yMyAgSmFuIEtyYXRvY2h2 aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBlbGZjb2RlLmggKE5BTUUoX2Jm ZF9lbGYsYmZkX2Zyb21fcmVtb3RlX21lbW9yeSkpOiBOZXcgdmFyaWFibGVzCi0JWF9TSERSX1NI U1RSVEFCIGFuZCBJX1NIRFJfU0hTVFJUQUIuICBGaXhlZCB0aGUgQ09OVEVOVFNfU0laRSB0cmlt bWluZwotCWNoZWNrIGZvciBpdHMgYWxpZ25lZCBzaXplIGJldHdlZW4gdGhlIGxhc3Qgc2VnbWVu dCBhbmQgc3RpbGwgYmVmb3JlCi0JdGhlIHNlY3Rpb24gaGVhZGVyIGVuZC4gIEFkZGVkIHZhcmlh YmxlcyBjaGVjayB0byBjb3ZlciBhbHNvIHRoZQotCXNlY3Rpb24gaGVhZGVyIHN0cmluZyB0YWJs ZS4KLQotLS0tIGdkYi03LjQuNTAuMjAxMjAxMjAtb3JpZy9iZmQvZWxmY29kZS5oCTIwMTItMDIt MjkgMDk6MTc6MDguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDEyMC9iZmQv ZWxmY29kZS5oCTIwMTItMDItMjkgMTA6MjM6MDMuMDAwMDAwMDAwICswMTAwCi1AQCAtMTYyMSw2 ICsxNjIxLDggQEAgTkFNRShfYmZkX2VsZixiZmRfZnJvbV9yZW1vdGVfbWVtb3J5KQotICAgRWxm X0ludGVybmFsX0VoZHIgaV9laGRyOwkvKiBFbGYgZmlsZSBoZWFkZXIsIGludGVybmFsIGZvcm0g Ki8KLSAgIEVsZl9FeHRlcm5hbF9QaGRyICp4X3BoZHJzOwotICAgRWxmX0ludGVybmFsX1BoZHIg KmlfcGhkcnMsICpsYXN0X3BoZHI7Ci0rICBFbGZfRXh0ZXJuYWxfU2hkciAqeF9zaGRyczsKLSsg IEVsZl9JbnRlcm5hbF9TaGRyICppX3NoZHJzOwotICAgYmZkICpuYmZkOwotICAgc3RydWN0IGJm ZF9pbl9tZW1vcnkgKmJpbTsKLSAgIGludCBjb250ZW50c19zaXplOwotQEAgLTE3NDAsMjQgKzE3 NDIsNDYgQEAgTkFNRShfYmZkX2VsZixiZmRfZnJvbV9yZW1vdGVfbWVtb3J5KQotIAotICAgLyog VHJpbSB0aGUgbGFzdCBzZWdtZW50IHNvIHdlIGRvbid0IGJvdGhlciB3aXRoIHplcm9zIGluIHRo ZSBsYXN0IHBhZ2UKLSAgICAgIHRoYXQgYXJlIG9mZiB0aGUgZW5kIG9mIHRoZSBmaWxlLiAgSG93 ZXZlciwgaWYgdGhlIGV4dHJhIGJpdCBpbiB0aGF0Ci0tICAgICBwYWdlIGluY2x1ZGVzIHRoZSBz ZWN0aW9uIGhlYWRlcnMsIGtlZXAgdGhlbS4gICovCi0tICBpZiAoKGJmZF92bWEpIGNvbnRlbnRz X3NpemUgPiBsYXN0X3BoZHItPnBfb2Zmc2V0ICsgbGFzdF9waGRyLT5wX2ZpbGVzegotLSAgICAg ICYmIChiZmRfdm1hKSBjb250ZW50c19zaXplID49IChpX2VoZHIuZV9zaG9mZgotLQkJCQkgICAg ICsgaV9laGRyLmVfc2hudW0gKiBpX2VoZHIuZV9zaGVudHNpemUpKQotKyAgICAgcGFnZSBpbmNs dWRlcyB0aGUgc2VjdGlvbiBoZWFkZXJzIG9zIHRoZSBzZWN0aW9uIGhlYWRlciBzdHJpbmcgdGFi bGUsCi0rICAgICBrZWVwIHRoZW0uICAqLwotKyAgaWYgKChiZmRfdm1hKSBjb250ZW50c19zaXpl ID4gbGFzdF9waGRyLT5wX29mZnNldCArIGxhc3RfcGhkci0+cF9maWxlc3opCi0rICAgIGNvbnRl bnRzX3NpemUgPSBsYXN0X3BoZHItPnBfb2Zmc2V0ICsgbGFzdF9waGRyLT5wX2ZpbGVzejsKLSsK LSsgIGlmICgoYmZkX3ZtYSkgY29udGVudHNfc2l6ZSA8IGlfZWhkci5lX3Nob2ZmCi0rCQkJCSsg aV9laGRyLmVfc2hudW0gKiBpX2VoZHIuZV9zaGVudHNpemUpCi0rICAgIGNvbnRlbnRzX3NpemUg PSBpX2VoZHIuZV9zaG9mZiArIGlfZWhkci5lX3NobnVtICogaV9laGRyLmVfc2hlbnRzaXplOwot KwotKyAgLyogVmVyaWZ5IGFsc28gYWxsIHRoZSBzZWN0aW9ucyBmaXQgaW50byBDT05URU5UU19T SVpFLiAgKi8KLSsKLSsgIHhfc2hkcnMgPSBiZmRfbWFsbG9jIChpX2VoZHIuZV9zaG51bSAqIChz aXplb2YgKnhfc2hkcnMgKyBzaXplb2YgKmlfc2hkcnMpKTsKLSsgIGlmICh4X3NoZHJzID09IE5V TEwpCi0gICAgIHsKLS0gICAgICBjb250ZW50c19zaXplID0gbGFzdF9waGRyLT5wX29mZnNldCAr IGxhc3RfcGhkci0+cF9maWxlc3o7Ci0tICAgICAgaWYgKChiZmRfdm1hKSBjb250ZW50c19zaXpl IDwgKGlfZWhkci5lX3Nob2ZmCi0tCQkJCSAgICAgKyBpX2VoZHIuZV9zaG51bSAqIGlfZWhkci5l X3NoZW50c2l6ZSkpCi0tCWNvbnRlbnRzX3NpemUgPSBpX2VoZHIuZV9zaG9mZiArIGlfZWhkci5l X3NobnVtICogaV9laGRyLmVfc2hlbnRzaXplOwotKyAgICAgIGZyZWUgKHhfcGhkcnMpOwotKyAg ICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9ub19tZW1vcnkpOwotKyAgICAgIHJldHVybiBO VUxMOwotICAgICB9Ci0rICBlcnIgPSB0YXJnZXRfcmVhZF9tZW1vcnkgKGVoZHJfdm1hICsgaV9l aGRyLmVfc2hvZmYsIChiZmRfYnl0ZSAqKSB4X3NoZHJzLAotKwkJCSAgICBpX2VoZHIuZV9zaG51 bSAqIHNpemVvZiAqeF9zaGRycyk7Ci0rICBpZiAoZXJyKQotKyAgICBpX3NoZHJzID0gTlVMTDsK LSAgIGVsc2UKLS0gICAgY29udGVudHNfc2l6ZSA9IGxhc3RfcGhkci0+cF9vZmZzZXQgKyBsYXN0 X3BoZHItPnBfZmlsZXN6OwotKyAgICB7Ci0rICAgICAgaV9zaGRycyA9IChFbGZfSW50ZXJuYWxf U2hkciAqKSAmeF9zaGRyc1tpX2VoZHIuZV9zaG51bV07Ci0rICAgICAgZm9yIChpID0gMDsgaSA8 IGlfZWhkci5lX3NobnVtOyArK2kpCi0rCXsKLSsJICBlbGZfc3dhcF9zaGRyX2luICh0ZW1wbCwg Jnhfc2hkcnNbaV0sICZpX3NoZHJzW2ldKTsKLSsKLSsJICBpZiAoKGJmZF92bWEpIGNvbnRlbnRz X3NpemUgPCBpX3NoZHJzW2ldLnNoX29mZnNldCArIGlfc2hkcnNbaV0uc2hfc2l6ZSkKLSsJICAg IGNvbnRlbnRzX3NpemUgPSBpX3NoZHJzW2ldLnNoX29mZnNldCArIGlfc2hkcnNbaV0uc2hfc2l6 ZTsKLSsJfQotKyAgICB9Ci0gCi0gICAvKiBOb3cgd2Uga25vdyB0aGUgc2l6ZSBvZiB0aGUgd2hv bGUgaW1hZ2Ugd2Ugd2FudCByZWFkIGluLiAgKi8KLSAgIGNvbnRlbnRzID0gKGJmZF9ieXRlICop IGJmZF96bWFsbG9jIChjb250ZW50c19zaXplKTsKLSAgIGlmIChjb250ZW50cyA9PSBOVUxMKQot ICAgICB7Ci0gICAgICAgZnJlZSAoeF9waGRycyk7Ci0rICAgICAgZnJlZSAoeF9zaGRycyk7Ci0g ICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX25vX21lbW9yeSk7Ci0gICAgICAgcmV0dXJu IE5VTEw7Ci0gICAgIH0KLUBAIC0xNzc2LDYgKzE4MDAsNyBAQCBOQU1FKF9iZmRfZWxmLGJmZF9m cm9tX3JlbW90ZV9tZW1vcnkpCi0gCWlmIChlcnIpCi0gCSAgewotIAkgICAgZnJlZSAoeF9waGRy cyk7Ci0rCSAgICBmcmVlICh4X3NoZHJzKTsKLSAJICAgIGZyZWUgKGNvbnRlbnRzKTsKLSAJICAg IGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9zeXN0ZW1fY2FsbCk7Ci0gCSAgICBlcnJubyA9IGVy cjsKLUBAIC0xNzg0LDEwICsxODA5LDMyIEBAIE5BTUUoX2JmZF9lbGYsYmZkX2Zyb21fcmVtb3Rl X21lbW9yeSkKLSAgICAgICB9Ci0gICBmcmVlICh4X3BoZHJzKTsKLSAKLS0gIC8qIElmIHRoZSBz ZWdtZW50cyB2aXNpYmxlIGluIG1lbW9yeSBkaWRuJ3QgaW5jbHVkZSB0aGUgc2VjdGlvbiBoZWFk ZXJzLAotKyAgaWYgKGlfc2hkcnMpCi0rICAgIHsKLSsgICAgICBtZW1jcHkgKGNvbnRlbnRzICsg aV9laGRyLmVfc2hvZmYsIHhfc2hkcnMsCi0rCSAgICAgIGlfZWhkci5lX3NobnVtICogc2l6ZW9m ICp4X3NoZHJzKTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgaV9laGRyLmVfc2hudW07ICsr aSkKLSsJewotKwkgIGJmZF92bWEgc3RhcnQgPSBpX3NoZHJzW2ldLnNoX29mZnNldDsKLSsJICBi ZmRfdm1hIGVuZCA9IGlfc2hkcnNbaV0uc2hfb2Zmc2V0ICsgaV9zaGRyc1tpXS5zaF9zaXplOwot KwotKwkgIGlmIChlbmQgPiAoYmZkX3ZtYSkgY29udGVudHNfc2l6ZSkKLSsJICAgIGVuZCA9IGNv bnRlbnRzX3NpemU7Ci0rCSAgZXJyID0gdGFyZ2V0X3JlYWRfbWVtb3J5IChlaGRyX3ZtYSArIHN0 YXJ0LCBjb250ZW50cyArIHN0YXJ0LAotKwkJCQkgICAgZW5kIC0gc3RhcnQpOwotKwkgIGlmIChl cnIpCi0rCSAgICB7Ci0rCSAgICAgIGlfc2hkcnMgPSBOVUxMOwotKwkgICAgICBicmVhazsKLSsJ ICAgIH0KLSsJfQotKyAgICB9Ci0rICBmcmVlICh4X3NoZHJzKTsKLSsKLSsgIC8qIElmIHRoZSBz ZWdtZW50cyByZWFkYWJsZSBpbiBtZW1vcnkgZGlkbid0IGluY2x1ZGUgdGhlIHNlY3Rpb24gaGVh ZGVycywKLSAgICAgIHRoZW4gY2xlYXIgdGhlbSBmcm9tIHRoZSBmaWxlIGhlYWRlci4gICovCi0t ICBpZiAoKGJmZF92bWEpIGNvbnRlbnRzX3NpemUgPCAoaV9laGRyLmVfc2hvZmYKLS0JCQkJICsg aV9laGRyLmVfc2hudW0gKiBpX2VoZHIuZV9zaGVudHNpemUpKQotKyAgaWYgKGlfc2hkcnMgPT0g TlVMTCkKLSAgICAgewotICAgICAgIG1lbXNldCAoJnhfZWhkci5lX3Nob2ZmLCAwLCBzaXplb2Yg eF9laGRyLmVfc2hvZmYpOwotICAgICAgIG1lbXNldCAoJnhfZWhkci5lX3NobnVtLCAwLCBzaXpl b2YgeF9laGRyLmVfc2hudW0pOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUt Y29yZS1hcy1hcmcucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBh dGNoCmluZGV4IGZmZTBiNDAuLjExMzg2NTggMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1jb3Jl LWFzLWFyZy5wYXRjaApAQCAtNTgsMTMgKzU4LDEzIEBAIEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0bWwKIAkqIGV4ZWMuYyAoZXhlY19maWxl X2F0dGFjaCk6IFByaW50IGEgbW9yZSB1c2VmdWwgZXJyb3IgbWVzc2FnZSBpZiB0aGUKIAl1c2Vy IGRpZCAiZ2RiIGNvcmUiLgogCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXhjZXB0 aW9ucy5oCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvZXhjZXB0aW9ucy5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9leGNlcHRpb25zLmgJMjAx NC0wMi0wNiAxNzozMTowMC4xNDg1Mjk3MzYgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi9leGNlcHRpb25zLmgJMjAxNC0wMi0wNiAxNzozMToxNy41NjA1NDg1MjUgKzAxMDAKLUBA IC05Nyw2ICs5Nyw5IEBAIGVudW0gZXJyb3JzIHsKLSAgIC8qIEFuIHVuZGVmaW5lZCBjb21tYW5k IHdhcyBleGVjdXRlZC4gICovCi0gICBVTkRFRklORURfQ09NTUFORF9FUlJPUiwKKy0tLSBnZGIt Ny43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDE0LTA2LTEzIDIwOjI2OjQ2 Ljk4ODgwNDU1MyArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2V4Y2VwdGlvbnMu aAkyMDE0LTA2LTEzIDIwOjI3OjAxLjkzMDgyMDA1NyArMDIwMAorQEAgLTEwMCw2ICsxMDAsOSBA QCBlbnVtIGVycm9ycyB7CisgICAvKiBSZXF1ZXN0ZWQgZmVhdHVyZSwgbWV0aG9kLCBtZWNoYW5p c20sIGV0Yy4gaXMgbm90IHN1cHBvcnRlZC4gICovCisgICBOT1RfU1VQUE9SVEVEX0VSUk9SLAog IAogKyAgLyogQXR0ZW1wdCB0byBsb2FkIGEgY29yZSBmaWxlIGFzIGV4ZWN1dGFibGUuICAqLwog KyAgSVNfQ09SRV9FUlJPUiwKQEAgLTcyLDE5ICs3MiwxOSBAQCBJbmRleDogZ2RiLTcuNi45MC4y MDE0MDEyNy9nZGIvZXhjZXB0aW9ucy5oCiAgICAvKiBBZGQgbW9yZSBlcnJvcnMgaGVyZS4gICov CiAgICBOUl9FUlJPUlMKICB9OwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2V4ZWMu YworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2V4ZWMuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZXhlYy5jCTIwMTQtMDItMDYgMTc6MzA6NTgu MjY2NTI3NzA4ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXhlYy5jCTIwMTQt MDItMDYgMTc6MzE6MDAuMTQ5NTI5NzM3ICswMTAwCi1AQCAtMzQsNiArMzQsNyBAQAotICNpbmNs dWRlICJnZGJ0aHJlYWQuaCIKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2V4ZWMu YwkyMDE0LTA2LTEzIDIwOjI2OjQ0LjgzMTgwMjMxNSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAx NDA2MDkvZ2RiL2V4ZWMuYwkyMDE0LTA2LTEzIDIwOjI3OjE3LjI4MjgzNjQ1NCArMDIwMAorQEAg LTM1LDYgKzM1LDcgQEAKICAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCiAgI2luY2x1ZGUgImdkYl9i ZmQuaCIKKyAjaW5jbHVkZSAiZ2NvcmUuaCIKICsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogIAog ICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAg LTIyOCwxMiArMjI5LDI3IEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQg ZnIKK0BAIC0yMzEsMTIgKzIzMiwyNyBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpmaWxlbmFt ZSwgaW50IGZyCiAgCiAgICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMgKGV4ZWNf YmZkLCBiZmRfb2JqZWN0LCAmbWF0Y2hpbmcpKQogIAl7CkBAIC0xMTUsMTEgKzExNSwxMSBAQCBJ bmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXhlYy5jCiAgCX0KICAKICAgICAgICBpZiAo YnVpbGRfc2VjdGlvbl90YWJsZSAoZXhlY19iZmQsICZzZWN0aW9ucywgJnNlY3Rpb25zX2VuZCkp Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuNy41 MC4yMDE0MDYwOS9nZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEy Ny5vcmlnL2dkYi9tYWluLmMJMjAxNC0wMi0wNiAxNzozMDo1OC4yNjc1Mjc3MDkgKzAxMDAKLSsr KyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9tYWluLmMJMjAxNC0wMi0wNiAxNzozMjozMi4yMzI2 MjkwNTIgKzAxMDAKLUBAIC0zMDcsNiArMzA3LDM2IEBAIHR5cGVkZWYgc3RydWN0IGNtZGFyZyB7 CistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9tYWluLmMJMjAxNC0wNi0xMyAyMDoy Njo0NC44MzE4MDIzMTUgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9tYWluLmMJ MjAxNC0wNi0xMyAyMDoyNjo0Ni45OTA4MDQ1NTUgKzAyMDAKK0BAIC0zNDEsNiArMzQxLDM2IEBA IHR5cGVkZWYgc3RydWN0IGNtZGFyZyB7CiAgLyogRGVmaW5lIHR5cGUgVkVDIChjbWRhcmdfcyku ICAqLwogIERFRl9WRUNfTyAoY21kYXJnX3MpOwogIApAQCAtMTU2LDcgKzE1Niw3IEBAIEluZGV4 OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9tYWluLmMKICBzdGF0aWMgaW50CiAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKICB7Ci1AQCAtODI0LDYgKzg1NCw4IEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCitAQCAtODU0LDYgKzg4NCw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCiAgCXsKICAJICBzeW1hcmcgPSBhcmd2W29wdGluZF07CiAgCSAgZXhlY2FyZyA9IGFyZ3Zb b3B0aW5kXTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvbWFpbi5jCiAgCSAgb3B0aW5kKys7CiAgCX0KICAKLUBAIC05ODcsMTEgKzEwMTksMjUgQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC0xMDE3LDExICsxMDQ5LDI1IEBAIGNhcHR1 cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICAgICAgJiYgc3ltYXJnICE9IE5VTEwKICAgICAgICAm JiBzdHJjbXAgKGV4ZWNhcmcsIHN5bWFyZykgPT0gMCkKICAgICAgewoKZGlmZiAtLWdpdCBhL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1y cG0ucGF0Y2gKaW5kZXggNzdiMmNhNC4uNzQ2ODc3ZiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWls ZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0 Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZXZlbnQt dG9wLmMKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9ldmVudC10b3AuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZXZlbnQtdG9wLmMJMjAxNC0w Mi0wNiAxNzoxODoyNi45NjU3MTcyMTAgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9ldmVudC10b3AuYwkyMDE0LTAyLTA2IDE2OjU5OjIzLjE3NDQ3NDQwNCArMDEwMAotQEAgLTM3 LDYgKzM3LDcgQEAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2V2ZW50LXRvcC5j CTIwMTQtMDYtMTMgMjA6MTA6MTkuNjMyNzg3NjQyICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvZXZlbnQtdG9wLmMJMjAxNC0wNi0xMyAyMDoxMTo0OS42MDU4Nzg1NTcgKzAyMDAK K0BAIC0zOCw2ICszOCw3IEBACiAgI2luY2x1ZGUgImdkYmNtZC5oIgkJLyogZm9yIGRvbnRfcmVw ZWF0KCkgKi8KICAjaW5jbHVkZSAiYW5ub3RhdGUuaCIKICAjaW5jbHVkZSAibWFpbnQuaCIKQEAg LTEwLDcgKzEwLDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2V2ZW50LXRvcC5j CiAgCiAgLyogcmVhZGxpbmUgaW5jbHVkZSBmaWxlcy4gICovCiAgI2luY2x1ZGUgInJlYWRsaW5l L3JlYWRsaW5lLmgiCi1AQCAtMTczLDYgKzE3NCw4IEBAIHJsX2NhbGxiYWNrX3JlYWRfY2hhcl93 cmFwcGVyIChnZGJfY2xpZW4KK0BAIC0xNzYsNiArMTc3LDggQEAgcmxfY2FsbGJhY2tfcmVhZF9j aGFyX3dyYXBwZXIgKGdkYl9jbGllbgogIHZvaWQKICBjbGlfY29tbWFuZF9sb29wICh2b2lkICpk YXRhKQogIHsKQEAgLTE5LDIwICsxOSwyMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvZXZlbnQtdG9wLmMKICAgIGRpc3BsYXlfZ2RiX3Byb21wdCAoMCk7CiAgCiAgICAvKiBOb3cg aXQncyB0aW1lIHRvIHN0YXJ0IHRoZSBldmVudCBsb29wLiAgKi8KLUBAIC0yNDAsNiArMjQzLDgg QEAgZGlzcGxheV9nZGJfcHJvbXB0IChjaGFyICpuZXdfcHJvbXB0KQorQEAgLTI0Myw2ICsyNDYs OCBAQCBkaXNwbGF5X2dkYl9wcm9tcHQgKGNoYXIgKm5ld19wcm9tcHQpCiAgICAvKiBSZXNldCB0 aGUgbmVzdGluZyBkZXB0aCB1c2VkIHdoZW4gdHJhY2UtY29tbWFuZHMgaXMgc2V0LiAgKi8KICAg IHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAoKTsKICAKICsgIGRlYnVnX2ZsdXNoX21pc3Npbmcg KCk7CiArCi0gICAvKiBFYWNoIGludGVycHJldGVyIGhhcyBpdHMgb3duIHJ1bGVzIG9uIGRpc3Bs YXlpbmcgdGhlIGNvbW1hbmQKLSAgICAgIHByb21wdC4gICovCi0gICBpZiAoIWN1cnJlbnRfaW50 ZXJwX2Rpc3BsYXlfcHJvbXB0X3AgKCkpCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIv c3ltZmlsZS5oCisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250 ZW50cywgJmFjdHVhbF9nZGJfcHJvbXB0KTsKKyAKKyAgIC8qIERvIG5vdCBjYWxsIHRoZSBweXRo b24gaG9vayBvbiBhbiBleHBsaWNpdCBwcm9tcHQgY2hhbmdlIGFzCitJbmRleDogZ2RiLTcuNy41 MC4yMDE0MDYwOS9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0 MDEyNy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxNC0wMi0wNiAxNzoxODozMy44NjU3MjQ2NjYgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9zeW1maWxlLmgJMjAxNC0wMi0wNiAxNzow ODo1Ni4yODIwOTkxNTAgKzAxMDAKLUBAIC01NTcsNiArNTU3LDggQEAgZXh0ZXJuIHN0cnVjdCBj bGVhbnVwICppbmNyZW1lbnRfcmVhZGluZworLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9n ZGIvc3ltZmlsZS5oCTIwMTQtMDYtMTMgMjA6MTA6MTkuNjMzNzg3NjQzICswMjAwCisrKysgZ2Ri LTcuNy41MC4yMDE0MDYwOS9nZGIvc3ltZmlsZS5oCTIwMTQtMDYtMTMgMjA6MTA6MzEuMDY2Nzk5 MTU4ICswMjAwCitAQCAtNTczLDYgKzU3Myw4IEBAIHZvaWQgbWFwX3N5bWJvbF9maWxlbmFtZXMg KHN5bWJvbF9maWxlbmEKICAvKiBidWlsZC1pZCBzdXBwb3J0LiAgKi8KICBleHRlcm4gc3RydWN0 IGVsZl9idWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZXQgKENPUkVfQUREUiBhZGRyKTsKICBleHRl cm4gdm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNo YXIgKmRlYnVnKTsKQEAgLTQxLDExICs0MSwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvc3ltZmlsZS5oCiAgCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKLUluZGV4OiBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGIt Ny43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0 LTAyLTA2IDE3OjE4OjI2Ljk2OTcxNzIxNCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTAyLTA2IDE3OjE4OjMzLjg2NjcyNDY2NyAr MDEwMAotQEAgLTE1MDQsNyArMTUwNCw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsK Ky0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAky MDE0LTA2LTEzIDIwOjEwOjE5LjYzNDc4NzY0NCArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2 MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTA2LTEzIDIwOjEwOjMxLjA2Nzc5OTE1 OSArMDIwMAorQEAgLTE0OTIsNyArMTQ5Miw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9 IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAg ICAgfQpAQCAtNTQsMTAgKzU0LDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgc2VuZF9nZGIgInNldCBidWlsZC1pZC12ZXJib3Nl IDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiJGdkYl9wcm9tcHQgJCIgewotSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAK K0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTQtMDItMDYgMTc6MTg6MjYuOTcwNzE3MjE1ICswMTAw Ci0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4 cAkyMDE0LTAyLTA2IDE3OjE4OjMzLjg2NzcyNDY2OCArMDEwMAorLS0tIGdkYi03LjcuNTAuMjAx NDA2MDkub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDE0LTA2LTEzIDIw OjEwOjE5LjYzNTc4NzY0NSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxNC0wNi0xMyAyMDoxMDozMS4wNjg3OTkxNjAgKzAy MDAKIEBAIC0yMTIsNyArMjEyLDcgQEAgcHJvYyBkZWZhdWx0X21pX2dkYl9zdGFydCB7IGFyZ3Mg fSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRoIHRvIDAuIgogIAl9CkBA IC02NywyMiArNjcsMjIgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0 ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAgc2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlk LXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGItc2V0 IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsK LUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90dWkvdHVpLWludGVycC5jCitJbmRleDog Z2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdHVpL3R1aS1pbnRlcnAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDE0LTAyLTA2 IDE3OjE4OjI2Ljk3MDcxNzIxNSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3R1 aS90dWktaW50ZXJwLmMJMjAxNC0wMi0wNiAxNzoxODozMy44Njc3MjQ2NjggKzAxMDAKLUBAIC0z MCw2ICszMCw3IEBACi0gI2luY2x1ZGUgInR1aS90dWkuaCIKLSAjaW5jbHVkZSAidHVpL3R1aS1p by5oIgorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwky MDE0LTA2LTEzIDIwOjEwOjMxLjA2ODc5OTE2MCArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2 MDkvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxNC0wNi0xMyAyMDoxMDo0Ny44MDY4MTY1NDIgKzAy MDAKK0BAIC0zMiw2ICszMiw3IEBACiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKyAjaW5jbHVk ZSAiaW5mcnVuLmgiCisgI2luY2x1ZGUgIm9ic2VydmVyLmgiCiArI2luY2x1ZGUgInN5bWZpbGUu aCIKICAKLSAvKiBTZXQgdG8gMSB3aGVuIHRoZSBUVUkgbW9kZSBtdXN0IGJlIGFjdGl2YXRlZCB3 aGVuIHdlIGZpcnN0IHN0YXJ0Ci0gICAgZ2RiLiAgKi8KLUluZGV4OiBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9hY2xvY2FsLm00Cisgc3RhdGljIHN0cnVjdCB1aV9vdXQgKnR1aV91aV9vdXQgKHN0 cnVjdCBpbnRlcnAgKnNlbGYpOworIAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2Fj bG9jYWwubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2Fj bG9jYWwubTQJMjAxNC0wMi0wNiAxNzoxODozMy44Njg3MjQ2NjkgKzAxMDAKLSsrKyBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9hY2xvY2FsLm00CTIwMTQtMDItMDYgMTc6MDk6NDkuODc3MTU3NDA1 ICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTQt MDYtMTMgMjA6MTA6MTkuNjM2Nzg3NjQ2ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvYWNsb2NhbC5tNAkyMDE0LTA2LTEzIDIwOjEwOjMxLjA2OTc5OTE2MSArMDIwMAogQEAgLTEx LDYgKzExLDIyMSBAQAogICMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQQogICMgUEFSVElDVUxBUiBQVVJQT1NFLgpAQCAtMzA1LDEw ICszMDUsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2FjbG9jYWwubTQKICAj IEFNX0FVWF9ESVJfRVhQQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtKi0gQXV0b2NvbmYgLSotCiAgCiAgIyBDb3B5cmlnaHQgKEMpIDIwMDEsIDIwMDMsIDIwMDUg IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL2NvbmZpZy5pbgorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy5p bgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29uZmlnLmlu CTIwMTQtMDItMDYgMTc6MTg6MjYuOTcxNzE3MjE2ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvY29uZmlnLmluCTIwMTQtMDItMDYgMTc6MTg6MzMuODY4NzI0NjY5ICswMTAwCist LS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9jb25maWcuaW4JMjAxNC0wNi0xMyAyMDox MDoxOS42Mzc3ODc2NDcgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb25maWcu aW4JMjAxNC0wNi0xMyAyMDoxMDozMS4wNjk3OTkxNjEgKzAyMDAKIEBAIC0zMyw2ICszMyw5IEBA CiAgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgdGFyZ2V0IHZlY3Rvci4gKi8KICAjdW5kZWYg REVGQVVMVF9CRkRfVkVDCkBAIC0zMTksNyArMzE5LDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlmIHRyYW5zbGF0aW9uIG9mIHBy b2dyYW0gbWVzc2FnZXMgdG8gdGhlIHVzZXIncyBuYXRpdmUKICAgICBsYW5ndWFnZSBpcyByZXF1 ZXN0ZWQuICovCiAgI3VuZGVmIEVOQUJMRV9OTFMKLUBAIC0yMDcsNiArMjEwLDkgQEAKK0BAIC0y MTAsNiArMjEzLDkgQEAKICAvKiBEZWZpbmUgaWYgUHl0aG9uIDIuNyBpcyBiZWluZyB1c2VkLiAq LwogICN1bmRlZiBIQVZFX0xJQlBZVEhPTjJfNwogIApAQCAtMzI5LDExICszMjksMTEgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIHRoZSA8bGlidW53aW5kLWlhNjQuaD4gaGVhZGVyIGZpbGUuICovCiAgI3VuZGVm IEhBVkVfTElCVU5XSU5EX0lBNjRfSAogIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2Ri L2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZ3VyZQogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29uZmlndXJlCTIwMTQt MDItMDYgMTc6MTg6MjYuOTc2NzE3MjIxICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvY29uZmlndXJlCTIwMTQtMDItMDYgMTc6MTg6MzMuODcyNzI0NjczICswMTAwCi1AQCAtNjg5 LDYgKzY4OSwxMSBAQCBQS0dWRVJTSU9OCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dk Yi9jb25maWd1cmUJMjAxNC0wNi0xMyAyMDoxMDoxOS42NDI3ODc2NTIgKzAyMDAKKysrKyBnZGIt Ny43LjUwLjIwMTQwNjA5L2dkYi9jb25maWd1cmUJMjAxNC0wNi0xMyAyMDoxMDozMS4wNzM3OTkx NjUgKzAyMDAKK0BAIC02OTIsNiArNjkyLDExIEBAIFBLR1ZFUlNJT04KICBIQVZFX05BVElWRV9H Q09SRV9UQVJHRVQKICBUQVJHRVRfT0JTCiAgc3ViZGlycwpAQCAtMzQ1LDcgKzM0NSw3IEBAIElu ZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUKICBHREJfREFUQURJUgogIERF QlVHRElSCiAgTUFLRUlORk9fRVhUUkFfRkxBR1MKLUBAIC03OTIsNiArNzk3LDcgQEAgd2l0aF9n ZGJfZGF0YWRpcgorQEAgLTc5NSw2ICs4MDAsNyBAQCB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9y ZWxvY2F0ZWRfc291cmNlcwogIHdpdGhfYXV0b19sb2FkX2RpcgogIHdpdGhfYXV0b19sb2FkX3Nh ZmVfcGF0aApAQCAtMzUzLDcgKzM1Myw3IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9jb25maWd1cmUKICBlbmFibGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxl X2dkYmNsaQotQEAgLTg0Miw2ICs4NDgsMTEgQEAgQ1BQRkxBR1MKK0BAIC04NDYsNiArODUyLDEx IEBAIENQUEZMQUdTCiAgQ1BQCiAgTUFLRUlORk8KICBNQUtFSU5GT0ZMQUdTCkBAIC0zNjUsNyAr MzY1LDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZ3VyZQogIFlBQ0MK ICBZRkxBR1MKICBYTUtNRicKLUBAIC0xNTEyLDYgKzE1MjMsOCBAQCBPcHRpb25hbCBQYWNrYWdl czoKK0BAIC0xNTE2LDYgKzE1MjcsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFstLXdpdGgtYXV0by1sb2FkLWRpcl0KICAgIC0td2l0aG91dC1hdXRv LWxvYWQtc2FmZS1wYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJp Y3QgYXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCkBAIC0zNzQsNyArMzc0LDcgQEAgSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZ3VyZQogICAgLS13aXRoLWxpYnVud2luZC1p YTY0ICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgZm9yIGlhNjQgdGFyZ2V0cwogICAg LS13aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9m IHRoZSB0ZXJtY2FwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtMTU1 OSw2ICsxNTcyLDEzIEBAIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgor QEAgLTE1NjUsNiArMTU3OCwxMyBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlh YmxlczoKICAgIE1BS0VJTkZPICAgIFBhcmVudCBjb25maWd1cmUgZGV0ZWN0cyBpZiBpdCBpcyBv ZiBzdWZmaWNpZW50IHZlcnNpb24uCiAgICBNQUtFSU5GT0ZMQUdTCiAgICAgICAgICAgICAgICBQ YXJhbWV0ZXJzIGZvciBNQUtFSU5GTy4KQEAgLTM4OCw3ICszODgsNyBAQCBJbmRleDogZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUgYFlldCBBbm90 aGVyIEMgQ29tcGlsZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMgdG8KICAgICAg ICAgICAgICAgIHRoZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29uIC15JywgYGJ5 YWNjJywgYHlhY2MnLgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1lbnRzIHRoYXQg d2lsbCBiZSBwYXNzZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC01MTU0LDYgKzUxNzQsNDkx IEBAIF9BQ0VPRgorQEAgLTUxNjAsNiArNTE4MCw0OTEgQEAgX0FDRU9GCiAgeyAkYXNfZWNobyAi JGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGgiID4mNQogICRhc19lY2hvICIkd2l0aF9hdXRvX2xvYWRfc2FmZV9wYXRoIiA+JjY7IH0K ICAKQEAgLTg4MCwxMCArODgwLDEwIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9j b25maWd1cmUKICAKICAKICBzdWJkaXJzPSIkc3ViZGlycyB0ZXN0c3VpdGUiCi1JbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEy Ny5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxNC0wMi0wNiAxNzoxODoyNi45Nzc3MTcyMjMgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUuYWMJMjAxNC0wMi0wNiAx NzoxODozMy44NzM3MjQ2NzQgKzAxMDAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2Ri L2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIwOjEwOjE5LjY0Mzc4NzY1MyArMDIwMAorKysrIGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIwOjEwOjMxLjA3 NDc5OTE2NiArMDIwMAogQEAgLTE2NSw2ICsxNjUsMTk5IEBAIEFDX0RFRklORV9ESVIoQVVUT19M T0FEX1NBRkVfUEFUSCwgZXNjYXAKICAJICAgICAgW0RpcmVjdG9yaWVzIHNhZmUgdG8gaG9sZCBh dXRvLWxvYWRlZCBmaWxlcy5dKQogIEFDX01TR19SRVNVTFQoWyR3aXRoX2F1dG9fbG9hZF9zYWZl X3BhdGhdKQpAQCAtMTA4NCwxMSArMTA4NCwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvY29uZmlndXJlLmFjCiAgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQogIAogICMg Q2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9u cwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03 LjcuNTAuMjAxNDA2MDkvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAu MjAxNDAxMjcub3JpZy9nZGIvY29yZWxvdy5jCTIwMTQtMDItMDYgMTc6MTg6MjYuOTc4NzE3MjI0 ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCTIwMTQtMDItMDYg MTc6MTg6MzMuODczNzI0Njc0ICswMTAwCi1AQCAtMzE1LDcgKzMxNSw3IEBAIGJ1aWxkX2lkX2xv Y2F0ZV9leGVjIChpbnQgZnJvbV90dHkpCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dk Yi9jb3JlbG93LmMJMjAxNC0wNi0xMyAyMDoxMDoxOS42NDQ3ODc2NTQgKzAyMDAKKysrKyBnZGIt Ny43LjUwLjIwMTQwNjA5L2dkYi9jb3JlbG93LmMJMjAxNC0wNi0xMyAyMDoxMDozMS4wNzQ3OTkx NjYgKzAyMDAKK0BAIC0zMTYsNyArMzE2LDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBm cm9tX3R0eSkKICAgICAgICAgIHN5bWZpbGVfb2JqZmlsZS0+ZmxhZ3MgfD0gT0JKRl9CVUlMRF9J RF9DT1JFX0xPQURFRDsKICAgICAgfQogICAgZWxzZQpAQCAtMTA5NywxMCArMTA5NywxMCBAQCBJ bmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCiAgCiAgICBkb19jbGVhbnVw cyAoYmFja190byk7CiAgCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYnVpbGQtaWQu YworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2J1aWxkLWlkLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2J1aWxkLWlkLmMJMjAxNC0wMi0wNiAx NzoxODoyNi44NDI3MTcwNzcgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9idWls ZC1pZC5jCTIwMTQtMDItMDYgMTc6MDg6MTguMzQxMDYwMjk1ICswMTAwCistLS0gZ2RiLTcuNy41 MC4yMDE0MDYwOS5vcmlnL2dkYi9idWlsZC1pZC5jCTIwMTQtMDYtMTMgMjA6MTA6MTkuNjQ0Nzg3 NjU0ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvYnVpbGQtaWQuYwkyMDE0LTA2 LTEzIDIwOjEwOjMxLjA3NTc5OTE2NyArMDIwMAogQEAgLTMyLDYgKzMyLDcgQEAKICAjaW5jbHVk ZSAiZ2RiY21kLmgiCiAgI2luY2x1ZGUgIm9ic2VydmVyLmgiCgpkaWZmIC0tZ2l0IGEvZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5k ZXggZDNiYzRhNS4uZWI0ZjFkMyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5w YXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBAIC0xLDggKzEsOCBAQAot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03Ljcu NTAuMjAxNDA2MDkvZ2RiL2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAx NDAxMjcub3JpZy9nZGIvY29yZWxvdy5jCTIwMTQtMDEtMjcgMDI6NTc6NTMuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCTIwMTQtMDItMDYgMTY6 NDY6NTIuMjYxNjQ2NDk5ICswMTAwCi1AQCAtNDgsNiArNDgsMTAgQEAKKy0tLSBnZGItNy43LjUw LjIwMTQwNjA5Lm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDE0LTA2LTEzIDIwOjA5OjM3LjM2OTc0NTIy MSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvcmVsb3cuYwkyMDE0LTA2LTEz IDIwOjA5OjQyLjQwNzc1MDI2NSArMDIwMAorQEAgLTQ5LDYgKzQ5LDEwIEBACiAgI2luY2x1ZGUg ImdkYl9iZmQuaCIKICAjaW5jbHVkZSAiY29tcGxldGVyLmgiCiAgI2luY2x1ZGUgImZpbGVzdHVm Zi5oIgpAQCAtMTMsNyArMTMsNyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29y ZWxvdy5jCiAgCiAgI2lmbmRlZiBPX0xBUkdFRklMRQogICNkZWZpbmUgT19MQVJHRUZJTEUgMAot QEAgLTI3MSw2ICsyNzUsNTMgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0 aW9uCitAQCAtMjcyLDYgKzI3Niw1MyBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwg YXNlY3Rpb24KICAgICAgaW5mZXJpb3JfcHRpZCA9IHB0aWQ7CQkJLyogWWVzLCBtYWtlIGl0IGN1 cnJlbnQuICAqLwogIH0KICAKQEAgLTY3LDcgKzY3LDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL2NvcmVsb3cuYwogIC8qIFRoaXMgcm91dGluZSBvcGVucyBhbmQgc2V0cyB1cCB0 aGUgY29yZSBmaWxlIGJmZC4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBAIC00MDksNiArNDYwLDE0 IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKK0BAIC00MTAsNiAr NDYxLDE0IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKICAJc3dp dGNoX3RvX3RocmVhZCAodGhyZWFkLT5wdGlkKTsKICAgICAgfQogIApAQCAtODIsNyArODIsNyBA QCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29yZWxvdy5jCiAgICBwb3N0X2NyZWF0 ZV9pbmZlcmlvciAoJmNvcmVfb3BzLCBmcm9tX3R0eSk7CiAgCiAgICAvKiBOb3cgZ28gdGhyb3Vn aCB0aGUgdGFyZ2V0IHN0YWNrIGxvb2tpbmcgZm9yIHRocmVhZHMgc2luY2UgdGhlcmUKLUBAIC05 ODAsNCArMTAzOSwxMSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lkKQorQEAgLTEwMjksNCAr MTA4OCwxMSBAQCBfaW5pdGlhbGl6ZV9jb3JlbG93ICh2b2lkKQogICAgaW5pdF9jb3JlX29wcyAo KTsKICAKICAgIGFkZF90YXJnZXRfd2l0aF9jb21wbGV0ZXIgKCZjb3JlX29wcywgZmlsZW5hbWVf Y29tcGxldGVyKTsKQEAgLTk0LDExICs5NCwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvY29yZWxvdy5jCiArCQkJICAgTlVMTCwgTlVMTCwgTlVMTCwKICsJCQkgICAmc2V0bGlz dCwgJnNob3dsaXN0KTsKICB9Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZG9jL2dk Yi50ZXhpbmZvCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvZG9jL2dkYi50ZXhpbmZv CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxNC0wMi0wNiAxNjo0Njo1MS44MDQ2NDU5ODkgKzAxMDAKLSsrKyBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxNC0wMi0wNiAxNjo0Njo1Mi4xMTA2NDYz MzEgKzAxMDAKLUBAIC0xNzQxMyw2ICsxNzQxMywyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KKy0t LSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDE0LTA2LTEz IDIwOjA5OjM3LjM4MDc0NTIzMiArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2Rv Yy9nZGIudGV4aW5mbwkyMDE0LTA2LTEzIDIwOjA5OjQyLjQxNzc1MDI3NSArMDIwMAorQEAgLTE3 NTQ3LDYgKzE3NTQ3LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAK QEAgLTEyNiwxMSArMTI2LDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9kb2Mv Z2RiLnRleGluZm8KICBAY2luZGV4IEBjb2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBj aW5kZXggZGVidWcgbGluayBzZWN0aW9ucwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2Vj dGlvbiBvZiB0aGUgZXhlY3V0YWJsZSBmaWxlIG5hbWVkCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvc29saWItc3ZyNC5jCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvc29s aWItc3ZyNC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9z b2xpYi1zdnI0LmMJMjAxNC0wMS0yNyAwMjo1Nzo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9zb2xpYi1zdnI0LmMJMjAxNC0wMi0wNiAxNjo0OToyNy41MDg4 MTkxNzQgKzAxMDAKLUBAIC00Nyw2ICs0Nyw3IEBACistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5v cmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxNC0wNi0xMyAyMDowOTozNy4zODI3NDUyMzQgKzAyMDAK KysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9zb2xpYi1zdnI0LmMJMjAxNC0wNi0xMyAyMDow OTo0Mi40MTg3NTAyNzYgKzAyMDAKK0BAIC00OCw2ICs0OCw3IEBACiAgI2luY2x1ZGUgImV4Y2Vw dGlvbnMuaCIKICAjaW5jbHVkZSAiZ2RiX2JmZC5oIgogICNpbmNsdWRlICJwcm9iZS5oIgpAQCAt MTk0LDExICsxOTQsMTEgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3NvbGliLXN2 cjQuYwogICAgICAgIHhmcmVlIChidWZmZXIpOwogIAogICAgICAgIC8qIElmIHRoaXMgZW50cnkg aGFzIG5vIG5hbWUsIG9yIGl0cyBuYW1lIG1hdGNoZXMgdGhlIG5hbWUKLUluZGV4OiBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dk Yi9lbGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2Ri L2VsZnJlYWQuYwkyMDE0LTAxLTI3IDAyOjU3OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2VsZnJlYWQuYwkyMDE0LTAyLTA2IDE2OjQ2OjUyLjI0OTY0NjQ4 NiArMDEwMAotQEAgLTEzMTYsOSArMTMxNiwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9lbGZyZWFk LmMJMjAxNC0wNi0xMyAyMDowOTozNy4zODM3NDUyMzUgKzAyMDAKKysrKyBnZGItNy43LjUwLjIw MTQwNjA5L2dkYi9lbGZyZWFkLmMJMjAxNC0wNi0xMyAyMDowOTo0Mi40MTg3NTAyNzYgKzAyMDAK K0BAIC0xMzM1LDkgKzEzMzUsMTAgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUg Km9iamZpbAogIAkgICAmJiBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlID09IE5VTEwK ICAJICAgJiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluayA9PSBOVUxM KQogICAgICB7CkBAIC0yMTEsNyArMjExLDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL2VsZnJlYWQuYwogIAogICAgICAgIGlmIChkZWJ1Z2ZpbGUgPT0gTlVMTCkKICAJZGVidWdm aWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAob2JqZmlsZSk7Ci1A QCAtMTMzMiw2ICsxMzMzLDEyIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWwKK0BAIC0xMzUxLDYgKzEzNTIsMTIgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9i amZpbGUgKm9iamZpbAogIAkgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwgZGVidWdm aWxlLCBzeW1maWxlX2ZsYWdzLCBvYmpmaWxlKTsKICAJICBkb19jbGVhbnVwcyAoY2xlYW51cCk7 CiAgCX0KQEAgLTIyNCwxMyArMjI0LDEzIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9lbGZyZWFkLmMKICAgICAgfQogIH0KICAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dk Yi9zeW1maWxlLmgKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9zeW1maWxlLmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDE0 LTAxLTI3IDAyOjU3OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL3N5bWZpbGUuaAkyMDE0LTAyLTA2IDE2OjQ2OjUyLjI1MDY0NjQ4NyArMDEwMAotQEAgLTU1 NCw2ICs1NTQsMTAgQEAgdm9pZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1Y3Qgcwot IAotIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5jcmVtZW50X3JlYWRpbmdfc3ltdGFiICh2b2lk KTsKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDE0LTA2LTEz IDIwOjA5OjQyLjQxOTc1MDI3NyArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3N5 bWZpbGUuaAkyMDE0LTA2LTEzIDIwOjEwOjA0LjQ3ODc3MjUxMCArMDIwMAorQEAgLTU3MCw2ICs1 NzAsMTAgQEAgdm9pZCBleHBhbmRfc3ltdGFic19tYXRjaGluZyAoZXhwYW5kX3N5bQorIHZvaWQg bWFwX3N5bWJvbF9maWxlbmFtZXMgKHN5bWJvbF9maWxlbmFtZV9mdHlwZSAqZnVuLCB2b2lkICpk YXRhLAorIAkJCSAgIGludCBuZWVkX2Z1bGxuYW1lKTsKICAKICsvKiBidWlsZC1pZCBzdXBwb3J0 LiAgKi8KICtleHRlcm4gc3RydWN0IGVsZl9idWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZXQgKENP UkVfQUREUiBhZGRyKTsKQEAgLTIzOSwxMSArMjM5LDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi9zeW1maWxlLmgKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAogIC8qIE5h bWVzIGZvciBhIGR3YXJmMiBkZWJ1Z2dpbmcgc2VjdGlvbi4gIFRoZSBmaWVsZCBOT1JNQUwgaXMg dGhlIG5vcm1hbAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCTIwMTQtMDItMDYgMTY6NDY6NTEuNjQzNjQ1ODEwICswMTAwCi0rKysg Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTQtMDItMDYg MTY6NDY6NTIuMjUxNjQ2NDg4ICswMTAwCi1AQCAtMTUwNCw2ICsxNTA0LDE2IEBAIHByb2MgZGVm YXVsdF9nZGJfc3RhcnQgeyB9IHsKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTA2LTEzIDIwOjA5OjM3LjM4NDc0NTIzNiArMDIwMAor KysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDE0LTA2 LTEzIDIwOjA5OjQyLjQyMDc1MDI3OCArMDIwMAorQEAgLTE0OTIsNiArMTQ5MiwxNiBAQCBwcm9j IGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhl IHdpZHRoIHRvIDAuIgogIAl9CiAgICAgIH0KQEAgLTI2MCwxMCArMjYwLDEwIEBAIEluZGV4OiBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJu IDAKICB9CiAgCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2xpYi9t aS1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9y aWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxNC0wMS0yNyAwMjo1Nzo1NC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvbGli L21pLXN1cHBvcnQuZXhwCTIwMTQtMDItMDYgMTY6NDY6NTIuMjUyNjQ2NDg5ICswMTAwCistLS0g Z2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhw CTIwMTQtMDYtMTMgMjA6MDk6MzcuMzg1NzQ1MjM3ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDE0LTA2LTEzIDIwOjA5OjQy LjQyMTc1MDI3OSArMDIwMAogQEAgLTIxMiw2ICsyMTIsMTYgQEAgcHJvYyBkZWZhdWx0X21pX2dk Yl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRo IHRvIDAuIgogIAl9CkBAIC0yODEsMTEgKzI4MSwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogICAgICAjIElmIGFsbG93aW5n IHRoZSBpbmZlcmlvciB0byBoYXZlIGl0cyBvd24gUFRZIHRoZW4gYXNzaWduIHRoZSBpbmZlcmlv cgogICAgICAjIGl0cyBvd24gdGVybWluYWwgZGV2aWNlIGhlcmUuCiAgICAgIGlmIHsgJHNlcGFy YXRlX2luZmVyaW9yX3B0eSB9IHsKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9vYmpm aWxlcy5oCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvb2JqZmlsZXMuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDE0LTAx LTI3IDAyOjU3OjUzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2Ri L29iamZpbGVzLmgJMjAxNC0wMi0wNiAxNjo0Njo1Mi4xMTM2NDYzMzQgKzAxMDAKLUBAIC00MzYs NiArNDM2LDEwIEBAIHN0cnVjdCBvYmpmaWxlCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmln L2dkYi9vYmpmaWxlcy5oCTIwMTQtMDYtMTMgMjA6MDk6MzcuMzg1NzQ1MjM3ICswMjAwCisrKysg Z2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvb2JqZmlsZXMuaAkyMDE0LTA2LTEzIDIwOjA5OjQyLjQy MTc1MDI3OSArMDIwMAorQEAgLTQ2NCw2ICs0NjQsMTAgQEAgc3RydWN0IG9iamZpbGUKICAKICAj ZGVmaW5lIE9CSkZfTk9UX0ZJTEVOQU1FICgxIDw8IDYpCiAgCkBAIC0yOTYsMTEgKzI5NiwxMSBA QCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvb2JqZmlsZXMuaAogIC8qIERlY2xhcmF0 aW9ucyBmb3IgZnVuY3Rpb25zIGRlZmluZWQgaW4gb2JqZmlsZXMuYyAqLwogIAogIGV4dGVybiBz dHJ1Y3Qgb2JqZmlsZSAqYWxsb2NhdGVfb2JqZmlsZSAoYmZkICosIGNvbnN0IGNoYXIgKm5hbWUs IGludCk7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2NvcmVmaWxlLmV4cAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9jb3JlZmlsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3 Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJMjAxNC0wMS0yNyAwMjo1 Nzo1NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTQtMDItMDYgMTY6NDY6NTIuMTEzNjQ2MzM0ICsw MTAwCi1AQCAtMjgxLDMgKzI4MSwzMyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiY29yZS1maWxlICRj b3JlZmlsZSIKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9jb3JlZmlsZS5leHAJMjAxNC0wNi0xMyAyMDowOTozNy4zODU3NDUyMzcgKzAyMDAKKysr KyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhw CTIwMTQtMDYtMTMgMjA6MDk6NDIuNDIxNzUwMjc5ICswMjAwCitAQCAtMjkzLDMgKzI5MywzMyBA QCBnZGJfdGVzdF9tdWx0aXBsZSAiY29yZS1maWxlICRjb3JlZmlsZSIKICAJcGFzcyAkdGVzdAog ICAgICB9CiAgfQpAQCAtMzM0LDEwICszMzQsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAx MjcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAKICsgICAgZ2RiX3Rlc3QgImlu Zm8gZmlsZXMiICJMb2NhbCBleGVjIGZpbGU6XHJcblxbIFx0XF0qYFtzdHJpbmdfdG9fcmVnZXhw ICRkZWJ1Z2Rpci8kYnVpbGRpZF0nLCBmaWxlIHR5cGUgLioiCiArICAgIHBhc3MgJHdob2xldGVz dAogK30KLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9idWlsZC1pZC5jCitJbmRleDog Z2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvYnVpbGQtaWQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvYnVpbGQtaWQuYwkyMDE0LTAxLTI3IDAyOjU3OjUzLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmMJMjAx NC0wMi0wNiAxNjo0Njo1Mi4xMTM2NDYzMzQgKzAxMDAKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5 Lm9yaWcvZ2RiL2J1aWxkLWlkLmMJMjAxNC0wNi0xMyAyMDowOTozNy4zODY3NDUyMzggKzAyMDAK KysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9idWlsZC1pZC5jCTIwMTQtMDYtMTMgMjA6MDk6 NDIuNDIyNzUwMjgwICswMjAwCiBAQCAtMjcsMTEgKzI3LDY1IEBACiAgI2luY2x1ZGUgInN5bWZp bGUuaCIKICAjaW5jbHVkZSAib2JqZmlsZXMuaCIKQEAgLTExNjAsMTAgKzExNjAsMTAgQEAgSW5k ZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmMKICsKICsgIG9ic2VydmVyX2F0 dGFjaF9leGVjdXRhYmxlX2NoYW5nZWQgKGRlYnVnX3ByaW50X2V4ZWN1dGFibGVfY2hhbmdlZCk7 CiArfQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmgKK0luZGV4OiBn ZGItNy43LjUwLjIwMTQwNjA5L2dkYi9idWlsZC1pZC5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi9idWlsZC1pZC5oCTIwMTQtMDEtMjcgMDI6NTc6NTMuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvYnVpbGQtaWQuaAkyMDE0 LTAyLTA2IDE2OjQ2OjUyLjExNDY0NjMzNSArMDEwMAorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDku b3JpZy9nZGIvYnVpbGQtaWQuaAkyMDE0LTA2LTEzIDIwOjA5OjM3LjM4Njc0NTIzOCArMDIwMAor KysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2J1aWxkLWlkLmgJMjAxNC0wNi0xMyAyMDowOTo0 Mi40MjI3NTAyODAgKzAyMDAKIEBAIC0zMiwxMyArMzIsMTggQEAgZXh0ZXJuIGludCBidWlsZF9p ZF92ZXJpZnkgKGJmZCAqYWJmZCwKICAgICB0aGUgY2FsbGVyLiAgKi8KICAKQEAgLTExODUsMTEg KzExODUsMTEgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2J1aWxkLWlkLmgKICsJ CQkJCSAgICAgICBjaGFyICoqYnVpbGRfaWRfZmlsZW5hbWVfcmV0dXJuKTsKICAKICAjZW5kaWYg LyogQlVJTERfSURfSCAqLwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2R3YXJmMnJl YWQuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTQt MDItMDYgMTY6NDY6NTEuODA5NjQ1OTk1ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvZHdhcmYycmVhZC5jCTIwMTQtMDItMDYgMTY6NDk6NTUuNjc5ODUwNDE0ICswMTAwCi1AQCAt MjQyOSw3ICsyNDI5LDcgQEAgZHdhcmYyX2dldF9kd3pfZmlsZSAodm9pZCkKKy0tLSBnZGItNy43 LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTA2LTEzIDIwOjA5OjM3LjM4 OTc0NTI0MSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2R3YXJmMnJlYWQuYwky MDE0LTA2LTEzIDIwOjA5OjQyLjQyNTc1MDI4MyArMDIwMAorQEAgLTI0NDYsNyArMjQ0Niw3IEBA IGR3YXJmMl9nZXRfZHd6X2ZpbGUgKHZvaWQpCiAgICAgIH0KICAKICAgIGlmIChkd3pfYmZkID09 IE5VTEwpCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRl ZmF1bHQucGF0Y2ggYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5w YXRjaAppbmRleCA2N2UzNWMyLi5lOGUwNTk1IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVkdWxl cl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9s b2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkv Z2RiL2luZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi9pbmZydW4uYwkyMDE0LTAyLTA0IDIzOjQ4OjI3LjI2MjA5Mjg2OSArMDEwMAotKysrIGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL2luZnJ1bi5jCTIwMTQtMDItMDQgMjM6NDg6MzEuNjc0MDk2NjEz ICswMTAwCi1AQCAtMTYxOCw3ICsxNjE4LDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNj aGVkdWxlcl9lbnVtcworLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvaW5mcnVuLmMJ MjAxNC0wNi0xMyAyMDowODo1MS4yMjU2OTkyMDMgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQw NjA5L2dkYi9pbmZydW4uYwkyMDE0LTA2LTEzIDIwOjA4OjU1LjUxNTcwMzQ2NiArMDIwMAorQEAg LTE2NjEsNyArMTY2MSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzY2hlZHVsZXJfZW51 bXMKICAgIHNjaGVkbG9ja19zdGVwLAogICAgTlVMTAogIH07CkBAIC0xMSwxMSArMTEsMTEgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZnJ1bi5jCiAgc3RhdGljIHZvaWQKICBz aG93X3NjaGVkdWxlcl9tb2RlIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAog IAkJICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi1J bmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhw CitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGku ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLWNsaS5leHAJMjAxNC0wMi0wNCAyMzo0ODoyNy4yNjMwOTI4NzEgKzAxMDAK LSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNsaS5leHAJ MjAxNC0wMi0wNCAyMzo0ODozMS42NzQwOTY2MTMgKzAxMDAKLUBAIC0xNjMsNyArMTYzLDcgQEAg bWlfZXhlY3V0ZV90byAiZXhlYy1jb250aW51ZSIgImJyZWFrcG9pbgorLS0tIGdkYi03LjcuNTAu MjAxNDA2MDkub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTQtMDYtMTMg MjA6MDg6NTUuNTE1NzAzNDY2ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVz dHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTQtMDYtMTMgMjA6MDk6MjQuODYyNzMyODMyICsw MjAwCitAQCAtMTgxLDcgKzE4MSw3IEBAIG1pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIg Im1haW4iICIKICAjIFRlc3QgdGhhdCB0aGUgdG9rZW4gaXMgb3V0cHV0IGV2ZW4gZm9yIENMSSBj b21tYW5kcwogICMgQWxzbyB0ZXN0IHRoYXQgKnN0b3BwZWQgaW5jbHVkZXMgZnJhbWUgaW5mb3Jt YXRpb24uCiAgbWlfZ2RiX3Rlc3QgIjM0IG5leHQiIFwKQEAgLTIzLDExICsyMywxMSBAQCBJbmRl eDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCiAr ICAgICIuKjM0XFxcXnJ1bm5pbmcuKlxcKnJ1bm5pbmcsdGhyZWFkLWlkPVwiMVwiIiBcCiAgICAg ICIzNCBuZXh0OiBydW4iCiAgCi0gaWYgeyEkYXN5bmN9IHsKLUluZGV4OiBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCisgIyBUZXN0IHRoYXQg dGhlIG5ldyBjdXJyZW50IHNvdXJjZSBsaW5lIGlzIG91dHB1dCB0byB0aGUgY29uc29sZQorSW5k ZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWktbG9nZ2luZy5leHAJMjAxNC0wMi0wNCAyMzo0ODoyNy4yNjMwOTI4NzEgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dp bmcuZXhwCTIwMTQtMDItMDQgMjM6NDg6MzEuNjc0MDk2NjEzICswMTAwCistLS0gZ2RiLTcuNy41 MC4yMDE0MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCTIwMTQt MDYtMTMgMjA6MDg6NTEuMjI3Njk5MjA1ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taS1sb2dnaW5nLmV4cAkyMDE0LTA2LTEzIDIwOjA4OjU1LjUx NjcwMzQ2NyArMDIwMAogQEAgLTUzLDcgKzUzLDcgQEAgY2xvc2UgJGNoYW4KICAKICBzZXQgbWlf bG9nX3Byb21wdCAiXFsoXF1nZGJcWylcXSBcW1xyXG5cXSsiCkBAIC00NiwxMCArNDYsMTAgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2lu Zy5leHAKICAgICAgcGFzcyAiUmVkaXJlY3QgbG9nIGZpbGUgY29udGVudHMiCiAgfSBlbHNlIHsK ICAgICAgZmFpbCAiUmVkaXJlY3QgbG9nIGZpbGUgY29udGVudHMiCi1JbmRleDogZ2RiLTcuNi45 MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAorSW5kZXg6IGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29uc29sZS5leHAKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIu bWkvbWktY29uc29sZS5leHAJMjAxNC0wMi0wNCAyMzo0ODozMS42NzUwOTY2NjYgKzAxMDAKLSsr KyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhw CTIwMTQtMDItMDQgMjM6NDg6NTUuOTgxMTI3OTYzICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0 MDYwOS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCTIwMTQtMDYtMTMg MjA6MDg6NTEuMjI3Njk5MjA1ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGVz dHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAkyMDE0LTA2LTEzIDIwOjA4OjU1LjUxNjcwMzQ2 NyArMDIwMAogQEAgLTYwLDYgKzYwLDkgQEAgaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LwogIAogIG1pX3J1bl90b19tYWluCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1zY2hl ZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaCBiL2dkYi02LjYtc2NoZWR1 bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKaW5kZXggNzVkZGExYS4uOGNl ODEwNyAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNo cG9pbnRzMi5wYXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtc3ctd2F0 Y2hwb2ludHMyLnBhdGNoCkBAIC0yMSw0MSArMjEsMjAgQEAKIAogCVBvcnQgdG8gR0RCLTYuOHBy ZS4KIAotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZmVyaW9yLmgKK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYu OTAuMjAxNDAxMjcub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDE0LTAxLTI3IDIyOjA1OjI4LjgwMTg5 NTM0NyArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZmVyaW9yLmgJMjAxNC0w MS0yNyAyMjozMzo0NS4yMzAxNTc4MTMgKzAxMDAKLUBAIC0xNTUsNyArMTU1LDE1IEBAIGV4dGVy biB2b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZvaWQpOwotIC8qIFRoZSBgcmVzdW1lJyByb3V0aW5l IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBzcGVjaWFsIGNpcmN1bXN0YW5jZXMuCi0gICAgTm9y bWFsbHksIHVzZSBgcHJvY2VlZCcsIHdoaWNoIGhhbmRsZXMgYSBsb3Qgb2YgYm9va2tlZXBpbmcu ICAqLwotIAotLWV4dGVybiB2b2lkIHJlc3VtZSAoaW50LCBlbnVtIGdkYl9zaWduYWwpOwotK2Vu dW0gcmVzdW1lX3N0ZXAKLSsgIHsKLSsgICAgLyogY3VycmVudGx5X3N0ZXBwaW5nICgpIHNob3Vs ZCByZXR1cm4gbm9uLXplcm8gZm9yIG5vbi1jb250aW51ZS4gICovCi0rICAgIFJFU1VNRV9TVEVQ X0NPTlRJTlVFID0gMCwKLSsgICAgUkVTVU1FX1NURVBfVVNFUiwJCS8qIFN0ZXBwaW5nIGlzIGlu dGVudGlvbmFsIGJ5IHRoZSB1c2VyLiAgKi8KLSsgICAgUkVTVU1FX1NURVBfTkVFREVECQkvKiBT dGVwcGluZyBvbmx5IGZvciBzb2Z0d2FyZSB3YXRjaHBvaW50cy4gICovCi0rICB9OwotKwotK2V4 dGVybiB2b2lkIHJlc3VtZSAoZW51bSByZXN1bWVfc3RlcCwgZW51bSBnZGJfc2lnbmFsKTsKLSAK LSBleHRlcm4gcHRpZF90IHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApOwotIAot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZnJ1bi5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9pbmZydW4uYwkyMDE0LTAxLTI3IDIyOjA1OjI4 LjgwNDg5NTM0OSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2luZnJ1bi5jCTIw MTQtMDEtMjcgMjI6MzU6MTIuNzgxMjI0Mjc5ICswMTAwCi1AQCAtODMsNyArODMsNyBAQCBzdGF0 aWMgaW50IGZvbGxvd19mb3JrICh2b2lkKTsKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcv Z2RiL2luZnJ1bi5jCTIwMTQtMDYtMTMgMDM6NTk6MzYuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvaW5mcnVuLmMJMjAxNC0wNi0xMyAyMTozNjo0My42MzcyOTQ3 ODIgKzAyMDAKK0BAIC04NCw3ICs4NCw3IEBAIHN0YXRpYyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQp OwogIHN0YXRpYyB2b2lkIHNldF9zY2hlZGxvY2tfZnVuYyAoY2hhciAqYXJncywgaW50IGZyb21f dHR5LAogIAkJCQlzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYyk7CiAgCiAtc3RhdGljIGludCBj dXJyZW50bHlfc3RlcHBpbmcgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApOwogK3N0YXRpYyBlbnVt IHJlc3VtZV9zdGVwIGN1cnJlbnRseV9zdGVwcGluZyAoc3RydWN0IHRocmVhZF9pbmZvICp0cCk7 CiAgCi0gc3RhdGljIGludCBjdXJyZW50bHlfc3RlcHBpbmdfb3JfbmV4dGluZ19jYWxsYmFjayAo c3RydWN0IHRocmVhZF9pbmZvICp0cCwKLSAJCQkJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0xNjk5 LDcgKzE2OTksOCBAQCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKQorIHN0YXRp YyB2b2lkIHhkYl9oYW5kbGVfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KTsKKyAK K0BAIC0xNzQyLDcgKzE3NDIsOCBAQCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVw KQogICAgICB9CiAgICBlbHNlIGlmICgoc2NoZWR1bGVyX21vZGUgPT0gc2NoZWRsb2NrX29uKQog IAkgICB8fCAoc2NoZWR1bGVyX21vZGUgPT0gc2NoZWRsb2NrX3N0ZXAKQEAgLTY1LDE2ICs0NCwx NiBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaW5mcnVuLmMKICAgICAgewogICAg ICAgIC8qIFVzZXItc2V0dGFibGUgJ3NjaGVkdWxlcicgbW9kZSByZXF1aXJlcyBzb2xvIHRocmVh ZCByZXN1bWUuICAqLwogICAgICAgIHJlc3VtZV9wdGlkID0gaW5mZXJpb3JfcHRpZDsKLUBAIC0x NzE3LDcgKzE3MTgsNyBAQCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKQorQEAg LTE3NjAsNyArMTc2MSw3IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50IHN0ZXApCiAg ICAgU1RFUCBub256ZXJvIGlmIHdlIHNob3VsZCBzdGVwICh6ZXJvIHRvIGNvbnRpbnVlIGluc3Rl YWQpLgogICAgIFNJRyBpcyB0aGUgc2lnbmFsIHRvIGdpdmUgdGhlIGluZmVyaW9yICh6ZXJvIGZv ciBub25lKS4gICovCiAgdm9pZAogLXJlc3VtZSAoaW50IHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBz aWcpCiArcmVzdW1lIChlbnVtIHJlc3VtZV9zdGVwIHN0ZXAsIGVudW0gZ2RiX3NpZ25hbCBzaWcp CiAgewotICAgaW50IHNob3VsZF9yZXN1bWUgPSAxOwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9j bGVhbnVwcyA9IG1ha2VfY2xlYW51cCAocmVzdW1lX2NsZWFudXBzLCAwKTsKLUBAIC0xNzUwLDkg KzE3NTEsMTMgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykKKyAgIHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdjYWNoZSAoKTsKK0BAIC0x ODAwLDkgKzE4MDEsMTMgQEAgcmVzdW1lIChpbnQgc3RlcCwgZW51bSBnZGJfc2lnbmFsIHNpZykK ICAKICAgIGlmIChkZWJ1Z19pbmZydW4pCiAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywKQEAgLTkwLDY0ICs2OSw1OSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIv aW5mcnVuLmMKICAJCQl0cC0+Y29udHJvbC50cmFwX2V4cGVjdGVkLAogIAkJCXRhcmdldF9waWRf dG9fc3RyIChpbmZlcmlvcl9wdGlkKSwKICAJCQlwYWRkcmVzcyAoZ2RiYXJjaCwgcGMpKTsKLUBA IC0yMTQ3LDcgKzIxNTIsNyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSBnZGJfc2ln bmFsCitAQCAtMjE4OCw2ICsyMTkzLDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0g Z2RiX3NpZ25hbAorICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKICAgIENPUkVfQUREUiBwYzsK ICAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2U7Ci0gICAvKiBHREIgbWF5IGZvcmNlIHRo ZSBpbmZlcmlvciB0byBzdGVwIGR1ZSB0byB2YXJpb3VzIHJlYXNvbnMuICAqLwotLSAgaW50IGZv cmNlX3N0ZXAgPSAwOwogKyAgZW51bSByZXN1bWVfc3RlcCByZXN1bWVfc3RlcCA9IFJFU1VNRV9T VEVQX0NPTlRJTlVFOwogIAogICAgLyogSWYgd2UncmUgc3RvcHBlZCBhdCBhIGZvcmsvdmZvcmss IGZvbGxvdyB0aGUgYnJhbmNoIHNldCBieSB0aGUKICAgICAgICJzZXQgZm9sbG93LWZvcmstbW9k ZSIgY29tbWFuZDsgb3RoZXJ3aXNlLCB3ZSdsbCBqdXN0IHByb2NlZWQKLUBAIC0yMTg3LDEzICsy MTkyLDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIGdkYl9zaWduYWwKK0BAIC0y MjMwLDEzICsyMjM2LDE5IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIGdkYl9zaWdu YWwKKyAJICAgTm90ZSwgd2UgZG9uJ3QgZG8gdGhpcyBpbiByZXZlcnNlLCBiZWNhdXNlIHdlIHdv bid0CiAgCSAgIGFjdHVhbGx5IGJlIGV4ZWN1dGluZyB0aGUgYnJlYWtwb2ludCBpbnNuIGFueXdh eS4KICAJICAgV2UnbGwgYmUgKHVuLSlleGVjdXRpbmcgdGhlIHByZXZpb3VzIGluc3RydWN0aW9u LiAgKi8KLSAKLS0JZm9yY2Vfc3RlcCA9IDE7CisrCXsKKyAJdHAtPnN0ZXBwaW5nX292ZXJfYnJl YWtwb2ludCA9IDE7CiArCXJlc3VtZV9zdGVwID0gUkVTVU1FX1NURVBfVVNFUjsKKysJfQogICAg ICAgIGVsc2UgaWYgKGdkYmFyY2hfc2luZ2xlX3N0ZXBfdGhyb3VnaF9kZWxheV9wIChnZGJhcmNo KQogIAkgICAgICAgJiYgZ2RiYXJjaF9zaW5nbGVfc3RlcF90aHJvdWdoX2RlbGF5IChnZGJhcmNo LAogIAkJCQkJCSAgICAgZ2V0X2N1cnJlbnRfZnJhbWUgKCkpKQogIAkvKiBXZSBzdGVwcGVkIG9u dG8gYW4gaW5zdHJ1Y3Rpb24gdGhhdCBuZWVkcyB0byBiZSBzdGVwcGVkCiAgCSAgIGFnYWluIGJl Zm9yZSByZS1pbnNlcnRpbmcgdGhlIGJyZWFrcG9pbnQsIGRvIHNvLiAgKi8KLS0JZm9yY2Vfc3Rl cCA9IDE7CisrCXsKKyAJdHAtPnN0ZXBwaW5nX292ZXJfYnJlYWtwb2ludCA9IDE7CiArCXJlc3Vt ZV9zdGVwID0gUkVTVU1FX1NURVBfVVNFUjsKKysJfQogICAgICB9CiAgICBlbHNlCiAgICAgIHsK LUBAIC0yMjI1LDEzICsyMjMwLDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIGdk Yl9zaWduYWwKLSAJIGlzIHJlcXVpcmVkIGl0IHJldHVybnMgVFJVRSBhbmQgc2V0cyB0aGUgY3Vy cmVudCB0aHJlYWQgdG8KLSAJIHRoZSBvbGQgdGhyZWFkLiAgKi8KLSAgICAgICBpZiAocHJlcGFy ZV90b19wcm9jZWVkIChzdGVwKSkKLS0JZm9yY2Vfc3RlcCA9IDE7Ci0rCXJlc3VtZV9zdGVwID0g UkVTVU1FX1NURVBfVVNFUjsKK0BAIC0yMjg4LDYgKzIzMDAsNyBAQCBwcm9jZWVkIChDT1JFX0FE RFIgYWRkciwgZW51bSBnZGJfc2lnbmFsCisgCSAgdHAtPnByZXZfcGMgPSByZWdjYWNoZV9yZWFk X3BjIChnZXRfY3VycmVudF9yZWdjYWNoZSAoKSk7CisgCSAgc3dpdGNoX3RvX3RocmVhZCAoc3Rl cF9vdmVyLT5wdGlkKTsKKyAJICB0cCA9IHN0ZXBfb3ZlcjsKKysJICByZXN1bWVfc3RlcCA9IFJF U1VNRV9TVEVQX1VTRVI7CisgCX0KICAgICAgfQogIAotICAgLyogcHJlcGFyZV90b19wcm9jZWVk IG1heSBjaGFuZ2UgdGhlIGN1cnJlbnQgdGhyZWFkLiAgKi8KLSAgIHRwID0gaW5mZXJpb3JfdGhy ZWFkICgpOwotIAotLSAgaWYgKGZvcmNlX3N0ZXApCi0rICBpZiAocmVzdW1lX3N0ZXAgPT0gUkVT VU1FX1NURVBfVVNFUikKLSAgICAgewotICAgICAgIHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQg PSAxOwotICAgICAgIC8qIElmIGRpc3BsYWNlZCBzdGVwcGluZyBpcyBlbmFibGVkLCB3ZSBjYW4g c3RlcCBvdmVyIHRoZQotQEAgLTIzMTgsOSArMjMyMywxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIg YWRkciwgZW51bSBnZGJfc2lnbmFsCitAQCAtMjM3NSw5ICsyMzg4LDEzIEBAIHByb2NlZWQgKENP UkVfQUREUiBhZGRyLCBlbnVtIGdkYl9zaWduYWwKICAgIC8qIFJlc2V0IHRvIG5vcm1hbCBzdGF0 ZS4gICovCiAgICBpbml0X2luZndhaXRfc3RhdGUgKCk7CiAgCi0rICBpZiAoc3RlcCkKKysgIGlm ICh0cC0+Y29udHJvbC50cmFwX2V4cGVjdGVkIHx8IHN0ZXApCiArICAgIHJlc3VtZV9zdGVwID0g UkVTVU1FX1NURVBfVVNFUjsKICsgIGlmIChyZXN1bWVfc3RlcCA9PSBSRVNVTUVfU1RFUF9DT05U SU5VRSAmJiBicHN0YXRfc2hvdWxkX3N0ZXAgKCkpCiArICAgIHJlc3VtZV9zdGVwID0gUkVTVU1F X1NURVBfTkVFREVEOwogKwogICAgLyogUmVzdW1lIGluZmVyaW9yLiAgKi8KLS0gIHJlc3VtZSAo Zm9yY2Vfc3RlcCB8fCBzdGVwIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSwKKy0gIHJlc3VtZSAo dHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCB8fCBzdGVwIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAo KSwKIC0JICB0cC0+c3VzcGVuZC5zdG9wX3NpZ25hbCk7CiArICByZXN1bWUgKHJlc3VtZV9zdGVw LCB0cC0+c3VzcGVuZC5zdG9wX3NpZ25hbCk7CiAgCiAgICAvKiBXYWl0IGZvciBpdCB0byBzdG9w IChpZiBub3Qgc3RhbmRhbG9uZSkKICAgICAgIGFuZCBpbiBhbnkgY2FzZSBkZWNvZGUgd2h5IGl0 IHN0b3BwZWQsIGFuZCBhY3QgYWNjb3JkaW5nbHkuICAqLwotQEAgLTUzMzIsMTMgKzUzNDEsMTgg QEAgc3dpdGNoX2JhY2tfdG9fc3RlcHBlZF90aHJlYWQgKHN0cnVjdCBleAorQEAgLTUzNTksMTMg KzUzNzYsMTYgQEAgc3dpdGNoX2JhY2tfdG9fc3RlcHBlZF90aHJlYWQgKHN0cnVjdCBleAogIAog IC8qIElzIHRocmVhZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNpbmdsZS1zdGVwcGluZz8gICovCiAg CkBAIC0xNTYsMjYgKzEzMCwyMyBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaW5m cnVuLmMKICBjdXJyZW50bHlfc3RlcHBpbmcgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCiAgewog LSAgcmV0dXJuICgodHAtPmNvbnRyb2wuc3RlcF9yYW5nZV9lbmQKLS0JICAgJiYgdHAtPmNvbnRy b2wuc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQorKyAgaWYgICAgICgodHAtPmNvbnRy b2wuc3RlcF9yYW5nZV9lbmQKKyAJICAgJiYgdHAtPmNvbnRyb2wuc3RlcF9yZXN1bWVfYnJlYWtw b2ludCA9PSBOVUxMKQogLQkgIHx8IHRwLT5jb250cm9sLnRyYXBfZXhwZWN0ZWQKIC0JICB8fCBi cHN0YXRfc2hvdWxkX3N0ZXAgKCkpOwotKyAgaWYgKCh0cC0+Y29udHJvbC5zdGVwX3JhbmdlX2Vu ZAotKyAgICAgICAmJiB0cC0+Y29udHJvbC5zdGVwX3Jlc3VtZV9icmVha3BvaW50ID09IE5VTEwp Ci0rICAgICAgfHwgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCkKKysJICB8fCB0cC0+Y29udHJv bC50cmFwX2V4cGVjdGVkKQogKyAgICByZXR1cm4gUkVTVU1FX1NURVBfVVNFUjsKLSsKLSsgIGlm IChicHN0YXRfc2hvdWxkX3N0ZXAgKCkpCisrICBpZiAgICAgICAgKGJwc3RhdF9zaG91bGRfc3Rl cCAoKSkKICsgICAgcmV0dXJuIFJFU1VNRV9TVEVQX05FRURFRDsKLSsKICsgIHJldHVybiBSRVNV TUVfU1RFUF9DT05USU5VRTsKICB9CiAgCi0gLyogUmV0dXJucyB0cnVlIGlmIGFueSB0aHJlYWQg KmJ1dCogdGhlIG9uZSBwYXNzZWQgaW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6IGdkYi03LjYu OTAuMjAxNDAxMjcvZ2RiL2xpbnV4LW5hdC5jCisgLyogSW5mZXJpb3IgaGFzIHN0ZXBwZWQgaW50 byBhIHN1YnJvdXRpbmUgY2FsbCB3aXRoIHNvdXJjZSBjb2RlIHRoYXQKK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAu MjAxNDAxMjcub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxNC0wMS0yNyAyMjowNToyOC44MDY4OTUz NTAgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9saW51eC1uYXQuYwkyMDE0LTAx LTI3IDIyOjMzOjQ1LjMzMDE1Nzg4OSArMDEwMAotQEAgLTI2OTcsNyArMjY5NywxMSBAQCBzdGF0 aWMgaW50CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDE0 LTA2LTEzIDAzOjU5OjM3LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2xpbnV4LW5hdC5jCTIwMTQtMDYtMTMgMjE6MzE6MTkuNDQ5OTQ5ODE0ICswMjAwCitAQCAt MjcwOSw3ICsyNzA5LDExIEBAIHN0YXRpYyBpbnQKICBzZWxlY3Rfc2luZ2xlc3RlcF9sd3BfY2Fs bGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAgewogICAgaWYgKGxwLT5s YXN0X3Jlc3VtZV9raW5kID09IHJlc3VtZV9zdGVwCkBAIC0xODgsMTEgKzE1OSwxOSBAQCBJbmRl eDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvbGludXgtbmF0LmMKICAgICAgcmV0dXJuIDE7CiAg ICBlbHNlCiAgICAgIHJldHVybiAwOwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2xp bnV4LW5hdC5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbGludXgtbmF0LmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIw MTQtMDEtMjcgMjI6MDU6MjguODA3ODk1MzUxICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvbGludXgtbmF0LmgJMjAxNC0wMS0yNyAyMjozMzo0NS4zMzQxNTc4OTIgKzAxMDAKLUBA IC01OSw4ICs1OSw4IEBAIHN0cnVjdCBsd3BfaW5mbworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMu b3JpZy9nZGIvbGludXgtbmF0LmgJMjAxNC0wNi0xMyAwMzo1OTozNy4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9saW51eC1uYXQuaAkyMDE0LTA2LTEzIDIxOjMx OjE5LjQ0OTk0OTgxNCArMDIwMAorQEAgLTE4LDYgKzE4LDcgQEAKKyAgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCisgCisgI2luY2x1ZGUgInRhcmdldC5oIgorKyNpbmNsdWRlICJpbmZydW4uaCIKKyAKKyAj aW5jbHVkZSA8c2lnbmFsLmg+CisgCitAQCAtNTksOCArNjAsOCBAQCBzdHJ1Y3QgbHdwX2luZm8K ICAgIC8qIElmIG5vbi16ZXJvLCBhIHBlbmRpbmcgd2FpdCBzdGF0dXMuICAqLwogICAgaW50IHN0 YXR1czsKICAKQEAgLTIwMywzICsxODIsMzYgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL2xpbnV4LW5hdC5oCiAgCiAgICAvKiBTVE9QUEVEX0JZX1dBVENIUE9JTlQgaXMgbm9uLXpl cm8gaWYgdGhpcyBMV1Agc3RvcHBlZCB3aXRoIGEgZGF0YQogICAgICAgd2F0Y2hwb2ludCB0cmFw LiAgKi8KK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9pbmZydW4uaAorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvaW5mcnVuLmgJMjAxNC0wNi0xMyAw Mzo1OTozNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9pbmZy dW4uaAkyMDE0LTA2LTEzIDIxOjMxOjE5LjQ0OTk0OTgxNCArMDIwMAorQEAgLTg5LDcgKzg5LDE0 IEBAIGV4dGVybiB2b2lkIHByb2NlZWQgKENPUkVfQUREUiwgZW51bSBnZGIKKyAKKyAvKiBUaGUg YHJlc3VtZScgcm91dGluZSBzaG91bGQgb25seSBiZSBjYWxsZWQgaW4gc3BlY2lhbCBjaXJjdW1z dGFuY2VzLgorICAgIE5vcm1hbGx5LCB1c2UgYHByb2NlZWQnLCB3aGljaCBoYW5kbGVzIGEgbG90 IG9mIGJvb2trZWVwaW5nLiAgKi8KKy1leHRlcm4gdm9pZCByZXN1bWUgKGludCwgZW51bSBnZGJf c2lnbmFsKTsKKytlbnVtIHJlc3VtZV9zdGVwCisrICB7CisrICAgIC8qIGN1cnJlbnRseV9zdGVw cGluZyAoKSBzaG91bGQgcmV0dXJuIG5vbi16ZXJvIGZvciBub24tY29udGludWUuICAqLworKyAg ICBSRVNVTUVfU1RFUF9DT05USU5VRSA9IDAsCisrICAgIFJFU1VNRV9TVEVQX1VTRVIsICAgICAg ICAgIC8qIFN0ZXBwaW5nIGlzIGludGVudGlvbmFsIGJ5IHRoZSB1c2VyLiAgKi8KKysgICAgUkVT VU1FX1NURVBfTkVFREVEICAgICAgICAgLyogU3RlcHBpbmcgb25seSBmb3Igc29mdHdhcmUgd2F0 Y2hwb2ludHMuICAqLworKyAgfTsKKytleHRlcm4gdm9pZCByZXN1bWUgKGVudW0gcmVzdW1lX3N0 ZXAsIGVudW0gZ2RiX3NpZ25hbCk7CisgCisgZXh0ZXJuIHB0aWRfdCB1c2VyX3Zpc2libGVfcmVz dW1lX3B0aWQgKGludCBzdGVwKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3NpZ25hbC13aGlsZS1zdGVwcGluZy1vdmVyLWJwLW90aGVyLXRocmVhZC5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ25hbC13aGlsZS1zdGVwcGluZy1vdmVyLWJwLW90 aGVyLXRocmVhZC5leHAKK2luZGV4IDJhMzA2MDQuLmVlMWZkMTEgMTAwNjQ0CistLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ25hbC13aGlsZS1zdGVwcGluZy1vdmVyLWJwLW90aGVy LXRocmVhZC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnbmFsLXdoaWxl LXN0ZXBwaW5nLW92ZXItYnAtb3RoZXItdGhyZWFkLmV4cAorQEAgLTk3LDcgKzk3LDcgQEAgZ2Ri X3Rlc3QgInNldCBkZWJ1ZyBpbmZydW4gMSIKKyAKKyBnZGJfdGVzdCBcCisgICAgICJzdGVwIiBc CistICAgICIuKm5lZWQgdG8gc3RlcC1vdmVyLipyZXN1bWUgXFwoc3RlcD0xLipzaWduYWwgYXJy aXZlZCB3aGlsZSBzdGVwcGluZyBvdmVyIGJyZWFrcG9pbnQuKnN3aXRjaGluZyBiYWNrIHRvIHN0 ZXBwZWQgdGhyZWFkLipzdGVwcGVkIHRvIGEgZGlmZmVyZW50IGxpbmUuKmNhbGxtZS4qIiBcCisr ICAgICIuKm5lZWQgdG8gc3RlcC1vdmVyLipyZXN1bWUgXFwoc3RlcD1SRVNVTUVfU1RFUF9VU0VS LipzaWduYWwgYXJyaXZlZCB3aGlsZSBzdGVwcGluZyBvdmVyIGJyZWFrcG9pbnQuKnN3aXRjaGlu ZyBiYWNrIHRvIHN0ZXBwZWQgdGhyZWFkLipzdGVwcGVkIHRvIGEgZGlmZmVyZW50IGxpbmUuKmNh bGxtZS4qIiBcCisgICAgICJzdGVwIgorIAorIHNldCBjbnRfYWZ0ZXIgW2dldF92YWx1ZSAiYXJn c1xbJG15X251bWJlclxdIiAiZ2V0IGNvdW50IGFmdGVyIHN0ZXAiXQoKZGlmZiAtLWdpdCBhL2dk Yi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaCBiL2dkYi02LjgtYXR0 YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAppbmRleCBiZjU1MjZhLi43NTlkZWM4 IDEwMDY0NAotLS0gYS9nZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0 Y2gKKysrIGIvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVkLnBhdGNoCkBA IC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjcvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTQtMDItMDkgMTk6MTM6MzIuOTk4MjE0NTcxICswMTAw Ci0rKysgZ2RiLTcuNy9nZGIvbGludXgtbmF0LmMJMjAxNC0wMi0wOSAxOToxNzozNy41NjE0OTk2 MDYgKzAxMDAKLUBAIC0xNzYsNiArMTc2LDkgQEAgYmxvY2tlZC4gICovCistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIzOjAzOjM0LjM2NDE3 NzYxNCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2xpbnV4LW5hdC5jCTIwMTQt MDYtMTMgMjM6MDU6MDcuNzQ5Mjc5MTIyICswMjAwCitAQCAtMTc4LDYgKzE3OCw5IEBAIGJsb2Nr ZWQuICAqLwogIHN0YXRpYyBzdHJ1Y3QgdGFyZ2V0X29wcyAqbGludXhfb3BzOwogIHN0YXRpYyBz dHJ1Y3QgdGFyZ2V0X29wcyBsaW51eF9vcHNfc2F2ZWQ7CiAgCkBAIC0xMiw3ICsxMiw3IEBAIElu ZGV4OiBnZGItNy43L2dkYi9saW51eC1uYXQuYwogIC8qIFRoZSBtZXRob2QgdG8gY2FsbCwgaWYg YW55LCB3aGVuIGEgbmV3IHRocmVhZCBpcyBhdHRhY2hlZC4gICovCiAgc3RhdGljIHZvaWQgKCps aW51eF9uYXRfbmV3X3RocmVhZCkgKHN0cnVjdCBsd3BfaW5mbyAqKTsKICAKLUBAIC02NTIsNyAr NjU1LDE0IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGUKK0BAIC02 ODMsNyArNjg2LDE0IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGUK ICAJICBwYXJlbnRfaW5mLT53YWl0aW5nX2Zvcl92Zm9ya19kb25lID0gMDsKICAJfQogICAgICAg IGVsc2UgaWYgKGRldGFjaF9mb3JrKQpAQCAtMjgsNyArMjgsNyBAQCBJbmRleDogZ2RiLTcuNy9n ZGIvbGludXgtbmF0LmMKICAKICAgICAgICAvKiBOb3RlIHRoYXQgdGhlIGRldGFjaCBhYm92ZSBt YWtlcyBQQVJFTlRfSU5GIGRhbmdsaW5nLiAgKi8KICAKLUBAIC0xMDk5LDYgKzExMDksNyBAQCBs aW51eF9uYXRfcG9zdF9hdHRhY2hfd2FpdCAocHRpZF90IHB0aWQsCitAQCAtMTEwNyw2ICsxMTE3 LDcgQEAgbGludXhfbmF0X3Bvc3RfYXR0YWNoX3dhaXQgKHB0aWRfdCBwdGlkLAogICAgICAgIGlm IChkZWJ1Z19saW51eF9uYXQpCiAgCWZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKICAJ CQkgICAgIkxOUEFXOiBBdHRhY2hpbmcgdG8gYSBzdG9wcGVkIHByb2Nlc3NcbiIpOwpAQCAtMzYs NyArMzYsNyBAQCBJbmRleDogZ2RiLTcuNy9nZGIvbGludXgtbmF0LmMKICAKICAgICAgICAvKiBU aGUgcHJvY2VzcyBpcyBkZWZpbml0ZWx5IHN0b3BwZWQuICBJdCBpcyBpbiBhIGpvYiBjb250cm9s CiAgCSBzdG9wLCB1bmxlc3MgdGhlIGtlcm5lbCBwcmVkYXRlcyB0aGUgVEFTS19TVE9QUEVEIC8K LUBAIC0xNTE4LDYgKzE1MjksOSBAQCBnZXRfcGVuZGluZ19zdGF0dXMgKHN0cnVjdCBsd3BfaW5m byAqbHAsCitAQCAtMTUyOSw2ICsxNTQwLDkgQEAgZ2V0X3BlbmRpbmdfc3RhdHVzIChzdHJ1Y3Qg bHdwX2luZm8gKmxwLAogIAkJCSAgICBnZGJfc2lnbmFsX3RvX3N0cmluZyAoc2lnbm8pKTsKICAg ICAgfQogIApAQCAtNDYsNyArNDYsNyBAQCBJbmRleDogZ2RiLTcuNy9nZGIvbGludXgtbmF0LmMK ICAgIHJldHVybiAwOwogIH0KICAKLUBAIC0xNjMxLDYgKzE2NDUsOCBAQCBsaW51eF9uYXRfZGV0 YWNoIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCitAQCAtMTY0Miw2ICsxNjU2LDggQEAgbGludXhf bmF0X2RldGFjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcwogICAgICB9CiAgICBlbHNlCiAgICAg IGxpbnV4X29wcy0+dG9fZGV0YWNoIChvcHMsIGFyZ3MsIGZyb21fdHR5KTsKQEAgLTU1LDkgKzU1 LDkgQEAgSW5kZXg6IGdkYi03LjcvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8qIFJlc3VtZSBM UC4gICovCi1AQCAtMTgxMyw2ICsxODI5LDE0IEBAIGxpbnV4X25hdF9yZXN1bWUgKHN0cnVjdCB0 YXJnZXRfb3BzICpvcHMKLSAgICAgIGxpbnV4X25hdF9yZXN1bWVfY2FsbGJhY2suICAqLwotICAg bHAtPnN0b3BwZWQgPSAwOworQEAgLTE4MjQsNiArMTg0MCwxNCBAQCBsaW51eF9uYXRfcmVzdW1l IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCisgICAgICAgcmV0dXJuOworICAgICB9CiAgCiArICAv KiBBdCB0aGlzIHBvaW50LCB3ZSBhcmUgZ29pbmcgdG8gcmVzdW1lIHRoZSBpbmZlcmlvciBhbmQg aWYgd2UKICsgICAgIGhhdmUgYXR0YWNoZWQgdG8gYSBzdG9wcGVkIHByb2Nlc3MsIHdlIG5vIGxv bmdlciBzaG91bGQgbGVhdmUKQEAgLTY4LDkgKzY4LDkgQEAgSW5kZXg6IGdkYi03LjcvZ2RiL2xp bnV4LW5hdC5jCiArICAgIHBpZF93YXNfc3RvcHBlZCA9IDA7CiArCiAgICBpZiAocmVzdW1lX21h bnkpCi0gICAgIGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkLCBsaW51eF9uYXRfcmVzdW1lX2NhbGxi YWNrLCBOVUxMKTsKKyAgICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWQsIGxpbnV4X25hdF9yZXN1 bWVfY2FsbGJhY2ssIGxwKTsKICAKLUBAIC0zODY0LDYgKzM4ODgsOCBAQCBsaW51eF9uYXRfbW91 cm5faW5mZXJpb3IgKHN0cnVjdCB0YXJnZXRfCitAQCAtMzg3MCw2ICszODk0LDggQEAgbGludXhf bmF0X21vdXJuX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0XwogIAogICAgLyogTGV0IHRoZSBhcmNo LXNwZWNpZmljIG5hdGl2ZSBjb2RlIGtub3cgdGhpcyBwcm9jZXNzIGlzIGdvbmUuICAqLwogICAg bGludXhfbmF0X2ZvcmdldF9wcm9jZXNzIChwaWQpOwpAQCAtNzksMTAgKzc5LDEwIEBAIEluZGV4 OiBnZGItNy43L2dkYi9saW51eC1uYXQuYwogIH0KICAKICAvKiBDb252ZXJ0IGEgbmF0aXZlL2hv c3Qgc2lnaW5mbyBvYmplY3QsIGludG8vZnJvbSB0aGUgc2lnaW5mbyBpbiB0aGUKLUluZGV4OiBn ZGItNy43L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1z dG9wcGVkLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03Ljcub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAkyMDE0LTAxLTA4IDEwOjIzOjM2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3Rv cHBlZC5leHAJMjAxNC0wMi0wOSAxOToxMzozMy4zMjEyMTQ5NDUgKzAxMDAKKy0tLSBnZGItNy43 LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBl ZC5leHAJMjAxNC0wNi0xMyAyMzowMzozNC4zNjUxNzc2MTUgKzAyMDAKKysrKyBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIw MTQtMDYtMTMgMjM6MDM6MzcuMTYyMTgwNjYwICswMjAwCiBAQCAtNjEsNyArNjEsNjUgQEAgcHJv YyBjb3JlZnVuYyB7IHRocmVhZHR5cGUgfSB7CiAgICAgIGdkYl9yZWluaXRpYWxpemVfZGlyICRz cmNkaXIvJHN1YmRpcgogICAgICBnZGJfbG9hZCAke2JpbmZpbGV9CgpkaWZmIC0tZ2l0IGEvZ2Ri LTYuOC1xdWl0LW5ldmVyLWFib3J0cy5wYXRjaCBiL2dkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMu cGF0Y2gKaW5kZXggZjQ1YzcwNy4uM2U2MzdjOSAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1xdWl0LW5l dmVyLWFib3J0cy5wYXRjaAorKysgYi9nZGItNi44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoCkBA IC01LDIzICs1LDIzIEBAIFNvbWUgb2YgdGhlIHRocmVhZHMgbWF5IG5vdCBiZSBwcm9wZXJseSBQ VFJBQ0VfREVUQUNIZWQgd2hpY2ggaHVydHMgaWYgdGhleQogc2hvdWxkIGhhdmUgYmVlbiBkZXRh Y2hlZCB3aXRoIFNJR1NUT1AgKGFzIHRoZXkgYXJlIGFjY2lkZW50YWxseSBsZWZ0IHJ1bm5pbmcK IG9uIHRoZSBkZWJ1Z2dlciB0ZXJtaW5hdGlvbikuCiAKLUluZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvZGVmcy5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZGVmcy5o CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvZGVmcy5o CTIwMTMtMDgtMDIgMTY6NTg6MzEuNDUzMDE2NTczICswMjAwCi0rKysgZ2RiLTcuNi41MC4yMDEz MDczMS1jdnMvZ2RiL2RlZnMuaAkyMDEzLTA4LTAyIDE2OjU4OjQxLjIyMTAzMDQxMiArMDIwMAot QEAgLTE3Nyw2ICsxNzcsNyBAQCBleHRlcm4gaW50IGNoZWNrX3F1aXRfZmxhZyAodm9pZCk7Ci0g LyogU2V0IHRoZSBxdWl0IGZsYWcuICAqLwotIGV4dGVybiB2b2lkIHNldF9xdWl0X2ZsYWcgKHZv aWQpOworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZGVmcy5oCTIwMTQtMDYtMTMg MjM6MTA6MTguODc2NjIzMDE4ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZGVm cy5oCTIwMTQtMDYtMTMgMjM6MTA6NTIuNDUwNjYwNTA1ICswMjAwCitAQCAtMTc0LDYgKzE3NCw3 IEBAIGV4dGVybiB2b2lkIHNldF9xdWl0X2ZsYWcgKHZvaWQpOworIC8qIEZsYWcgdGhhdCBmdW5j dGlvbiBxdWl0IHNob3VsZCBjYWxsIHF1aXRfZm9yY2UuICAqLworIGV4dGVybiB2b2xhdGlsZSBp bnQgc3luY19xdWl0X2ZvcmNlX3J1bjsKICAKICtleHRlcm4gaW50IHF1aXRfZmxhZ19jbGVhbnVw OwogIGV4dGVybiBpbnQgaW1tZWRpYXRlX3F1aXQ7CiAgCiAgZXh0ZXJuIHZvaWQgcXVpdCAodm9p ZCk7Ci1JbmRleDogZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3RvcC5jCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy5vcmlnL2dkYi90b3AuYwkyMDEzLTA4LTAyIDE2OjU4OjQxLjIyMjAzMDQxNCAr MDIwMAotKysrIGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi90b3AuYwkyMDEzLTA4LTAyIDE2 OjU5OjA2LjMyMTA2NjIyOCArMDIwMAotQEAgLTE0MTUsNyArMTQxNSw5IEBAIHF1aXRfZm9yY2Ug KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcv Z2RiL3RvcC5jCTIwMTQtMDYtMTMgMjM6MTA6MTUuOTEwNjE5NzE1ICswMjAwCisrKysgZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvdG9wLmMJMjAxNC0wNi0xMyAyMzoxMDoxOC44Nzc2MjMwMjAgKzAy MDAKK0BAIC0xMzc4LDcgKzEzNzgsOSBAQCBxdWl0X2ZvcmNlIChjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCiAgICBpZiAoZXgucmVhc29uIDwgMCkgXAogICAgICBleGNlcHRpb25fcHJpbnQgKGdk Yl9zdGRlcnIsIGV4KQogIApAQCAtMzIsMTEgKzMyLDExIEBAIEluZGV4OiBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvdG9wLmMKICAKICAgIC8qIEdldCBvdXQgb2YgdGZpbmQgbW9kZSwgYW5k IGtpbGwgb3IgZGV0YWNoIGFsbCBpbmZlcmlvcnMuICAqLwogICAgRE9fVFJZCi1JbmRleDogZ2Ri LTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3V0aWxzLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi91dGlscy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMu b3JpZy9nZGIvdXRpbHMuYwkyMDEzLTA4LTAyIDE2OjU4OjMxLjQ1NTAxNjU3NSArMDIwMAotKysr IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi91dGlscy5jCTIwMTMtMDgtMDIgMTY6NTg6NDEu MjIzMDMwNDE1ICswMjAwCi1AQCAtMTM2LDYgKzEzNiwxMSBAQCBpbnQgcXVpdF9mbGFnOworLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdXRpbHMuYwkyMDE0LTA2LTEzIDIzOjEwOjE4 Ljg3ODYyMzAyMSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3V0aWxzLmMJMjAx NC0wNi0xMyAyMzoxMDozOC4zMDc2NDQ2NTIgKzAyMDAKK0BAIC0xMjUsNiArMTI1LDExIEBAIGlu dCBqb2JfY29udHJvbDsKICAKICBpbnQgaW1tZWRpYXRlX3F1aXQ7CiAgCkBAIC00NSwzMCArNDUs MjAgQEAgSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi91dGlscy5jCiArCiAraW50 IHF1aXRfZmxhZ19jbGVhbnVwOwogKwotICNpZm5kZWYgSEFWRV9QWVRIT04KKyAvKiBOb256ZXJv IG1lYW5zIHRoYXQgc3RyaW5ncyB3aXRoIGNoYXJhY3RlciB2YWx1ZXMgPjB4N0Ygc2hvdWxkIGJl IHByaW50ZWQKKyAgICBhcyBvY3RhbCBlc2NhcGVzLiAgWmVybyBtZWFucyBqdXN0IHByaW50IHRo ZSB2YWx1ZSAoZS5nLiBpdCdzIGFuCisgICAgaW50ZXJuYXRpb25hbCBjaGFyYWN0ZXIsIGFuZCB0 aGUgdGVybWluYWwgb3Igd2luZG93IGNhbiBjb3BlLikgICovCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvZXh0ZW5zaW9uLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQw NjEzLm9yaWcvZ2RiL2V4dGVuc2lvbi5jCTIwMTQtMDYtMTMgMDM6NTk6MzYuMDAwMDAwMDAwICsw MjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZXh0ZW5zaW9uLmMJMjAxNC0wNi0xMyAy MzoxMTozMi40MzQ3MDQ4NTMgKzAyMDAKK0BAIC04MTcsNiArODE3LDkgQEAgY2hlY2tfcXVpdF9m bGFnICh2b2lkKQorICAgaW50IGksIHJlc3VsdCA9IDA7CisgICBjb25zdCBzdHJ1Y3QgZXh0ZW5z aW9uX2xhbmd1YWdlX2RlZm4gKmV4dGxhbmc7CiAgCi0gLyogQ2xlYXIgdGhlIHF1aXQgZmxhZy4g ICovCi1AQCAtMTU5LDYgKzE2NCw5IEBAIHNldF9xdWl0X2ZsYWcgKHZvaWQpCi0gaW50Ci0gY2hl Y2tfcXVpdF9mbGFnICh2b2lkKQotIHsKICsgIGlmIChxdWl0X2ZsYWdfY2xlYW51cCkKICsgICAg cmV0dXJuIDA7CiArCi0gICAvKiBUaGlzIGlzIHdyaXR0ZW4gaW4gYSBwYXJ0aWN1bGFyIHdheSB0 byBhdm9pZCByYWNlcy4gICovCi0gICBpZiAocXVpdF9mbGFnKQorICAgQUxMX0VOQUJMRURfRVhU RU5TSU9OX0xBTkdVQUdFUyAoaSwgZXh0bGFuZykKICAgICAgewotSW5kZXg6IGdkYi03LjYuNTAu MjAxMzA3MzEtY3ZzL2dkYi9weXRob24vcHl0aG9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42 LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMy0wOC0wMiAxNjo1 ODozMS40NTYwMTY1NzcgKzAyMDAKLSsrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvcHl0 aG9uL3B5dGhvbi5jCTIwMTMtMDgtMDIgMTY6NTg6NDEuMjI0MDMwNDE2ICswMjAwCi1AQCAtMTkx LDYgKzE5MSw5IEBAIHNldF9xdWl0X2ZsYWcgKHZvaWQpCi0gaW50Ci0gY2hlY2tfcXVpdF9mbGFn ICh2b2lkKQotIHsKLSsgIGlmIChxdWl0X2ZsYWdfY2xlYW51cCkKLSsgICAgcmV0dXJuIDA7Ci0r Ci0gICByZXR1cm4gUHlPU19JbnRlcnJ1cHRPY2N1cnJlZCAoKTsKLSB9Ci0gCisgICAgICAgaWYg KGV4dGxhbmctPm9wcy0+Y2hlY2tfcXVpdF9mbGFnICE9IE5VTEwpCgpkaWZmIC0tZ2l0IGEvZ2Ri LWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1h ZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAppbmRleCA2OGE2YTFhLi4xZjg0OWQxIDEwMDY0NAot LS0gYS9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAorKysgYi9nZGIt YXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUlu ZGV4OiBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2Ri LTcuNy41MC4yMDE0MDYwOS9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni41MC4yMDEzMDczMS1jdnMub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTMtMDgtMDIgMTY6Mjk6 MTYuMDY1NDAyMTE2ICswMjAwCi0rKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL2JyZWFr cG9pbnQuYwkyMDEzLTA4LTAyIDE2OjI5OjE3LjA3MzQwMzQ1NiArMDIwMAotQEAgLTE1OTYzLDYg KzE1OTYzLDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCistLS0gZ2RiLTcu Ny41MC4yMDE0MDYwOS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxNC0wNi0xMyAyMDoyNDozNC41 NjQ2NjcyMjUgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9icmVha3BvaW50LmMJ MjAxNC0wNi0xMyAyMDoyNDozNS42NTA2NjgzNTEgKzAyMDAKK0BAIC0xNjM2NCw2ICsxNjM2NCw1 MCBAQCBpbml0aWFsaXplX2JyZWFrcG9pbnRfb3BzICh2b2lkKQogIHN0YXRpYyBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqZW5hYmxlYnJlYWtsaXN0ID0gTlVMTDsKICAKICB2b2lkCkBAIC01Mywx MSArNTMsMTEgQEAgSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9icmVha3BvaW50 LmMKICBfaW5pdGlhbGl6ZV9icmVha3BvaW50ICh2b2lkKQogIHsKICAgIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpjOwotSW5kZXg6IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9icmVha3Bv aW50LmgKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9icmVha3BvaW50LmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dkYi9icmVha3BvaW50LmgJ MjAxMy0wOC0wMiAxNjoyOToxNy4wNzQ0MDM0NTcgKzAyMDAKLSsrKyBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvYnJlYWtwb2ludC5oCTIwMTMtMDgtMDIgMTY6Mjk6MzAuMjIxNDIwODk2ICsw MjAwCi1AQCAtMTU1NSw0ICsxNTU1LDcgQEAgZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9mcmVlX29i amZpbGUgKHN0cgorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvYnJlYWtwb2ludC5o CTIwMTQtMDYtMTMgMjA6MjQ6MzQuNTY2NjY3MjI3ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvYnJlYWtwb2ludC5oCTIwMTQtMDYtMTMgMjA6MjQ6MzUuNjUxNjY4MzUyICswMjAw CitAQCAtMTU1Myw0ICsxNTUzLDcgQEAgZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9mcmVlX29iamZp bGUgKHN0cgogIAogIGV4dGVybiBjaGFyICplcF9wYXJzZV9vcHRpb25hbF9pZl9jbGF1c2UgKGNo YXIgKiphcmcpOwogIApAQCAtNjUsMTMgKzY1LDEzIEBAIEluZGV4OiBnZGItNy42LjUwLjIwMTMw NzMxLWN2cy9nZGIvYnJlYWtwb2ludC5oCiArCQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAq ZGVsdGEpOwogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6 IGdkYi03LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9vYmpmaWxlcy5jCitJbmRleDogZ2RiLTcuNy41 MC4yMDE0MDYwOS9nZGIvb2JqZmlsZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuNTAuMjAx MzA3MzEtY3ZzLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMy0wOC0wMiAxNjoyOToxNi4wNjg0MDIx MjAgKzAyMDAKLSsrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvb2JqZmlsZXMuYwkyMDEz LTA4LTAyIDE2OjI5OjE3LjA3NTQwMzQ1OCArMDIwMAotQEAgLTg1MSw2ICs4NTEsMTEgQEAgb2Jq ZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotICAgICBvYmpmaWxlLT5zZi0+ c3ltX3Byb2JlX2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChvYmpmaWxlLAotIAkJCQkJCSAgICBu ZXdfb2Zmc2V0cywgZGVsdGEpOworLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvb2Jq ZmlsZXMuYwkyMDE0LTA2LTEzIDIwOjI0OjM1LjY1MjY2ODM1MyArMDIwMAorKysrIGdkYi03Ljcu NTAuMjAxNDA2MDkvZ2RiL29iamZpbGVzLmMJMjAxNC0wNi0xMyAyMDoyNToxMC44Njc3MDQ4OTEg KzAyMDAKK0BAIC04MjAsNiArODIwLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmkKKyAJCQkJb2JqX3NlY3Rpb25fYWRkciAocykpOworICAgICB9CiAgCiArICAv KiBGaW5hbCBjYWxsIG9mIGJyZWFrcG9pbnRfcmVfc2V0IGNhbiBrZWVwIGJyZWFrcG9pbnQgbG9j YXRpb25zIGRpc2FibGVkIGlmCiArICAgICB0aGVpciBhZGRyZXNzZXMgbWF0Y2guICAqLwoKZGlm ZiAtLWdpdCBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFk ZG9ucy5wYXRjaAppbmRleCBkMDk5YjViLi44ZjdjZGVhIDEwMDY0NAotLS0gYS9nZGItYXJjaGVy LXBpZS1hZGRvbnMucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0x LDI0ICsxLDI0IEBACi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2RidHlwZXMuaAor SW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMy0wMS0xOCAyMzow NzowMy40ODgzNTgzMTUgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9nZGJ0eXBl cy5oCTIwMTMtMDEtMTggMjM6MDg6MTAuMjg2NDUxNTcwICswMTAwCi1AQCAtNDIwLDYgKzQyMCw3 IEBAIGVudW0gZmllbGRfbG9jX2tpbmQKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2Ri L2dkYnR5cGVzLmgJMjAxNC0wNi0xMyAyMDoyMzo1NS4yMTA2MjY0MjcgKzAyMDAKKysrKyBnZGIt Ny43LjUwLjIwMTQwNjA5L2dkYi9nZGJ0eXBlcy5oCTIwMTQtMDYtMTMgMjA6MjQ6MjYuMTU2NjU4 NjIyICswMjAwCitAQCAtNDQwLDYgKzQ0MCw3IEBAIGVudW0gZmllbGRfbG9jX2tpbmQKICAgIHsK LSAgICAgRklFTERfTE9DX0tJTkRfQklUUE9TLAkvKiBiaXRwb3MgKi8KLSAgICAgRklFTERfTE9D X0tJTkRfRU5VTVZBTCwJLyogZW51bXZhbCAqLworICAgICBGSUVMRF9MT0NfS0lORF9CSVRQT1Ms CS8qKjwgYml0cG9zICovCisgICAgIEZJRUxEX0xPQ19LSU5EX0VOVU1WQUwsCS8qKjwgZW51bXZh bCAqLwogKyAgICAvKiBUaGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUn cyBBTk9GRlNFVC4gICovCi0gICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkvKiBwaHlzYWRk ciAqLwotICAgICBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJLyogcGh5c25hbWUgKi8KLSAgICAg RklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0sJLyogZHdhcmZfYmxvY2sgKi8KLUBAIC02MTQsNiAr NjE1LDcgQEAgc3RydWN0IG1haW5fdHlwZQotIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRoZSB0 YXJnZXQpIG9mIHRoZSBzdGF0aWMgZmllbGQuCi0gCSAgIE90aGVyd2lzZSwgcGh5c25hbWUgaXMg dGhlIG1hbmdsZWQgbGFiZWwgb2YgdGhlIHN0YXRpYyBmaWVsZC4gICovCisgICAgIEZJRUxEX0xP Q19LSU5EX1BIWVNBRERSLAkvKio8IHBoeXNhZGRyICovCisgICAgIEZJRUxEX0xPQ19LSU5EX1BI WVNOQU1FLAkvKio8IHBoeXNuYW1lICovCisgICAgIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NL CS8qKjwgZHdhcmZfYmxvY2sgKi8KK0BAIC02MTcsNiArNjE4LDcgQEAgc3RydWN0IG1haW5fdHlw ZQorIAkgICBmaWVsZC4gIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmdsZWQgbGFiZWwg b2YgdGhlCisgCSAgIHN0YXRpYyBmaWVsZC4gICovCiAgCiArCS8qIFRoaXMgYWRkcmVzcyBpcyB1 bnJlbG9jYXRlZCBieSB0aGUgb2JqZmlsZSdzIEFOT0ZGU0VULiAgKi8KICAJQ09SRV9BRERSIHBo eXNhZGRyOwogIAljb25zdCBjaGFyICpwaHlzbmFtZTsKICAKLUBAIC0xMjM3LDYgKzEyMzksNyBA QCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTI2Miw2ICsx MjY0LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZp bmUgRklFTERfRU5VTVZBTF9MVkFMKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmVudW12YWwpCiAg I2RlZmluZSBGSUVMRF9FTlVNVkFMKHRoaXNmbGQpIChGSUVMRF9FTlVNVkFMX0xWQUwgKHRoaXNm bGQpICsgMCkKICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzZmxkKSAoKHRoaXNm bGQpLmxvYy5waHlzbmFtZSkKQEAgLTI2LDcgKzI2LDcgQEAgSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlz ZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzYWRkcikKICAjZGVmaW5lIEZJRUxEX0RXQVJGX0JMT0NL KHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmR3YXJmX2Jsb2NrKQogICNkZWZpbmUgU0VUX0ZJRUxE X0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAotQEAgLTEyNDgsNiArMTI1MSw3IEBAIGV4dGVy biB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC0xMjczLDYgKzEyNzYsNyBA QCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBTRVRf RklFTERfUEhZU05BTUUodGhpc2ZsZCwgbmFtZSkJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRo aXNmbGQpID0gRklFTERfTE9DX0tJTkRfUEhZU05BTUUsCQlcCiAgICAgRklFTERfU1RBVElDX1BI WVNOQU1FICh0aGlzZmxkKSA9IChuYW1lKSkKQEAgLTM0LDcgKzM0LDcgQEAgSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFNFVF9GSUVMRF9QSFlTQURE Uih0aGlzZmxkLCBhZGRyKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVM RF9MT0NfS0lORF9QSFlTQUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKHRoaXNm bGQpID0gKGFkZHIpKQotQEAgLTEyNjQsNiArMTI2OCw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRl X2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC0xMjg5LDYgKzEyOTMsNyBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFBPUyh0 aGlzdHlwZSwgbikgRklFTERfQklUUE9TIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2Rl ZmluZSBUWVBFX0ZJRUxEX0VOVU1WQUwodGhpc3R5cGUsIG4pIEZJRUxEX0VOVU1WQUwgKFRZUEVf RklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1F KHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZUEVfRklFTEQgKHRoaXN0eXBl LCBuKSkKQEAgLTQyLDExICs0MiwxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv Z2RidHlwZXMuaAogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc3R5cGUs IG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNk ZWZpbmUgVFlQRV9GSUVMRF9EV0FSRl9CTE9DSyh0aGlzdHlwZSwgbikgRklFTERfRFdBUkZfQkxP Q0sgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfQVJUSUZJ Q0lBTCh0aGlzdHlwZSwgbikgRklFTERfQVJUSUZJQ0lBTChUWVBFX0ZJRUxEKHRoaXN0eXBlLG4p KQotSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LWxhbmcuYworSW5kZXg6IGdkYi03 LjcuNTAuMjAxNDA2MDkvZ2RiL2p2LWxhbmcuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9nZGIvanYtbGFuZy5jCTIwMTMtMDEtMTggMjM6MDc6MDMuNDg4MzU4MzE1 ICswMTAwCi0rKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvanYtbGFuZy5jCTIwMTMtMDEtMTgg MjM6MDg6MTAuMjg2NDUxNTcwICswMTAwCi1AQCAtNDMwLDcgKzQzMCw4IEBAIGphdmFfbGlua19j bGFzc190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9y aWcvZ2RiL2p2LWxhbmcuYwkyMDE0LTA2LTEzIDIwOjIzOjU1LjIxMTYyNjQyOCArMDIwMAorKysr IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2p2LWxhbmcuYwkyMDE0LTA2LTEzIDIwOjIzOjU2LjI3 ODYyNzUzNCArMDIwMAorQEAgLTQyNyw3ICs0MjcsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAo c3RydWN0IGdkYmFyY2ggKmdkCiAgCiAgICBmaWVsZHMgPSBOVUxMOwogICAgbmZpZWxkcy0tOwkJ CS8qIEZpcnN0IHNldCB1cCBkdW1teSAiY2xhc3MiIGZpZWxkLiAgKi8KQEAgLTU2LDcgKzU2LDcg QEAgSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LWxhbmcuYwogICAgVFlQRV9GSUVM RF9OQU1FICh0eXBlLCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBUWVBFX0ZJRUxEX1RZUEUgKHR5 cGUsIG5maWVsZHMpID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBTRVRfVFlQRV9GSUVMRF9QUklW QVRFICh0eXBlLCBuZmllbGRzKTsKLUBAIC00NzgsNyArNDc5LDggQEAgamF2YV9saW5rX2NsYXNz X3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorQEAgLTQ3NSw3ICs0NzYsOCBAQCBqYXZhX2xpbmtf Y2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VUX1RZUEVfRklFTERfUFJPVEVD VEVEICh0eXBlLCBpKTsKICAJfQogICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJLyogQUND X1NUQVRJQyAqLwpAQCAtNjYsMTEgKzY2LDExIEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9qdi1sYW5nLmMKICAgICAgICBlbHNlCiAgCVNFVF9GSUVMRF9CSVRQT1MgKFRZUEVfRklF TEQgKHR5cGUsIGkpLCA4ICogYm9mZnNldCk7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAw KQkvKiBGSUVMRF9VTlJFU09MVkVEX0ZMQUcgKi8KLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi92YWx1ZS5jCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdmFsdWUuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmFsdWUuYwkyMDEzLTAx LTE4IDIzOjA3OjAzLjQ5MDM1ODMxOSArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3ZhbHVlLmMJMjAxMy0wMS0xOCAyMzowODoxMC4yODc0NTE1NDMgKzAxMDAKLUBAIC0yNjI0LDcg KzI2MjQsOCBAQCB2YWx1ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCistLS0g Z2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTMgMjA6MjM6NTUu MjEyNjI2NDI5ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdmFsdWUuYwkyMDE0 LTA2LTEzIDIwOjIzOjU2LjI3OTYyNzUzNSArMDIwMAorQEAgLTI3ODMsNyArMjc4Myw4IEBAIHZh bHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgICAgewogICAgICBjYXNl IEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSOgogICAgICAgIHJldHZhbCA9IHZhbHVlX2F0X2xhenkg KFRZUEVfRklFTERfVFlQRSAodHlwZSwgZmllbGRubyksCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hl ci12bGEtdGVzdHMucGF0Y2ggYi9nZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjg4ODZkCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWFyY2hlci12bGEtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwzNDg4IEBACitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5LmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5h ZGEvcGFja2VkX2FycmF5LmV4cAkyMDE0LTA2LTEzIDAzOjU5OjM3LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJh eS5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMDc5NDA0ODMgKzAyMDAKK0BAIC01Niw1ICs1Niwx MSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICIkdGVzdCIgeworICAgICAgICAgIyBhcmUu ICBPYnNlcnZlZCB3aXRoIChGU0YgR05VIEFkYSA0LjUuMyAyMDExMDEyNCkuCisgICAgICAgICB4 ZmFpbCAkdGVzdAorICAgICB9CisrICAgIC1yZSAiPSBcXChcXClcW1xyXG5cXSskZ2RiX3Byb21w dCAkIiB7CisrCSMgYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhIHJlc29sdmVzIGl0IGFzIGEgZHlu YW1pYyB0eXBlIHJlc29sdmVkIGFzIGFuCisrCSMgZW1wdHkgYXJyYXkgWzAuLi0xXS4KKysJIyBE V19BVF91cHBlcl9ib3VuZCA6IChEV19PUF9mYnJlZzogLTQ4OyBEV19PUF9kZXJlZikKKysgICAg ICAgIHhmYWlsICR0ZXN0CisrICAgIH0KKyB9CisgCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAor KysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXBvaW50ZXItZm9vLlMJMjAxNC0wNi0xNiAyMzozMDozMC4xMDg5NDA0ODQgKzAyMDAKK0BAIC0w LDAgKzEsNDU3IEBACisrCS5maWxlCSJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIKKysJLnNlY3Rpb24J LmRlYnVnX2FiYnJldiwiIixAcHJvZ2JpdHMKKysuTGRlYnVnX2FiYnJldjA6CisrCS5zZWN0aW9u CS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cworKy5MZGVidWdfaW5mbzA6CisrCS5zZWN0aW9uCS5k ZWJ1Z19saW5lLCIiLEBwcm9nYml0cworKy5MZGVidWdfbGluZTA6CisrCS50ZXh0CisrLkx0ZXh0 MDoKKysuZ2xvYmwgZm9vCisrCS50eXBlCWZvbywgQGZ1bmN0aW9uCisrZm9vOgorKy5MRkIyOgor KwkuZmlsZSAxICJ4ODZfNjQtdmxhLXBvaW50ZXIuYyIKKysJLmxvYyAxIDIyIDAKKysJcHVzaHEJ JXJicAorKy5MQ0ZJMDoKKysJbW92cQklcnNwLCAlcmJwCisrLkxDRkkxOgorKwlzdWJxCSQ2NCwg JXJzcAorKy5MQ0ZJMjoKKysJbW92bAklZWRpLCAtMzYoJXJicCkKKysJLmxvYyAxIDIyIDAKKysJ bW92cQklcnNwLCAlcmF4CisrCW1vdnEJJXJheCwgLTQ4KCVyYnApCisrCS5sb2MgMSAyMyAwCisr CW1vdmwJLTM2KCVyYnApLCAlZWR4CisrCW1vdnNscQklZWR4LCVyYXgKKysJc3VicQkkMSwgJXJh eAorKwltb3ZxCSVyYXgsIC0yNCglcmJwKQorKwkubG9jIDEgMjQgMAorKwltb3ZzbHEJJWVkeCwl cmF4CisrCWFkZHEJJDE1LCAlcmF4CisrCWFkZHEJJDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgK KysJc2FscQkkNCwgJXJheAorKwlzdWJxCSVyYXgsICVyc3AKKysJbW92cQklcnNwLCAtNTYoJXJi cCkKKysJbW92cQktNTYoJXJicCksICVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJc2hycQkkNCwg JXJheAorKwlzYWxxCSQ0LCAlcmF4CisrCW1vdnEJJXJheCwgLTU2KCVyYnApCisrCW1vdnEJLTU2 KCVyYnApLCAlcmF4CisrCW1vdnEJJXJheCwgLTE2KCVyYnApCisrCS5sb2MgMSAyNyAwCisrCW1v dmwJJDAsIC00KCVyYnApCisrCWptcAkuTDIKKysuTDM6CisrCS5sb2MgMSAyOCAwCisrCW1vdmwJ LTQoJXJicCksICVlc2kKKysJbW92bAktNCglcmJwKSwgJWVheAorKwltb3ZsCSVlYXgsICVlY3gK KysJbW92cQktMTYoJXJicCksICVyZHgKKysJbW92c2xxCSVlc2ksJXJheAorKwltb3ZiCSVjbCwg KCVyZHgsJXJheCkKKysJLmxvYyAxIDI3IDAKKysJYWRkbAkkMSwgLTQoJXJicCkKKysuTDI6Cisr CW1vdmwJLTQoJXJicCksICVlYXgKKysJY21wbAktMzYoJXJicCksICVlYXgKKysJamwJLkwzCisr CS5sb2MgMSAzMCAwCisrCS5nbG9ibAlicmVha19oZXJlCisrYnJlYWtfaGVyZToKKysJbW92cQkt MTYoJXJicCksICVyYXgKKysJbW92YgkkMCwgKCVyYXgpCisrCW1vdnEJLTQ4KCVyYnApLCAlcnNw CisrCS5sb2MgMSAzMSAwCisrCWxlYXZlCisrCXJldAorKy5MRkUyOgorKwkuc2l6ZQlmb28sIC4t Zm9vCisrCS5zZWN0aW9uCS5kZWJ1Z19mcmFtZSwiIixAcHJvZ2JpdHMKKysuTGZyYW1lMDoKKysJ LmxvbmcJLkxFQ0lFMC0uTFNDSUUwCisrLkxTQ0lFMDoKKysJLmxvbmcJMHhmZmZmZmZmZgorKwku Ynl0ZQkweDEKKysJLnN0cmluZwkiIgorKwkudWxlYjEyOCAweDEKKysJLnNsZWIxMjggLTgKKysJ LmJ5dGUJMHgxMAorKwkuYnl0ZQkweGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAor KwkuYnl0ZQkweDkwCisrCS51bGViMTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTA6CisrLkxT RkRFMDoKKysJLmxvbmcJLkxFRkRFMC0uTEFTRkRFMAorKy5MQVNGREUwOgorKwkubG9uZwkuTGZy YW1lMAorKwkucXVhZAkuTEZCMgorKwkucXVhZAkuTEZFMi0uTEZCMgorKwkuYnl0ZQkweDQKKysJ LmxvbmcJLkxDRkkwLS5MRkIyCisrCS5ieXRlCTB4ZQorKwkudWxlYjEyOCAweDEwCisrCS5ieXRl CTB4ODYKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTEtLkxDRkkw CisrCS5ieXRlCTB4ZAorKwkudWxlYjEyOCAweDYKKysJLmFsaWduIDgKKysuTEVGREUwOgorKwku c2VjdGlvbgkuZWhfZnJhbWUsImEiLEBwcm9nYml0cworKy5MZnJhbWUxOgorKwkubG9uZwkuTEVD SUUxLS5MU0NJRTEKKysuTFNDSUUxOgorKwkubG9uZwkweDAKKysJLmJ5dGUJMHgxCisrCS5zdHJp bmcJInpSIgorKwkudWxlYjEyOCAweDEKKysJLnNsZWIxMjggLTgKKysJLmJ5dGUJMHgxMAorKwku dWxlYjEyOCAweDEKKysJLmJ5dGUJMHgzCisrCS5ieXRlCTB4YworKwkudWxlYjEyOCAweDcKKysJ LnVsZWIxMjggMHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5hbGlnbiA4Cisr LkxFQ0lFMToKKysuTFNGREUxOgorKwkubG9uZwkuTEVGREUxLS5MQVNGREUxCisrLkxBU0ZERTE6 CisrCS5sb25nCS5MQVNGREUxLS5MZnJhbWUxCisrCS5sb25nCS5MRkIyCisrCS5sb25nCS5MRkUy LS5MRkIyCisrCS51bGViMTI4IDB4MAorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkwLS5MRkIy CisrCS5ieXRlCTB4ZQorKwkudWxlYjEyOCAweDEwCisrCS5ieXRlCTB4ODYKKysJLnVsZWIxMjgg MHgyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTEtLkxDRkkwCisrCS5ieXRlCTB4ZAorKwku dWxlYjEyOCAweDYKKysJLmFsaWduIDgKKysuTEVGREUxOgorKwkudGV4dAorKy5MZXRleHQwOgor Kwkuc2VjdGlvbgkuZGVidWdfbG9jLCIiLEBwcm9nYml0cworKy5MZGVidWdfbG9jMDoKKysuTExT VDA6CisrCS5xdWFkCS5MRkIyLS5MdGV4dDAKKysJLnF1YWQJLkxDRkkwLS5MdGV4dDAKKysJLnZh bHVlCTB4MgorKwkuYnl0ZQkweDc3CisrCS5zbGViMTI4IDgKKysJLnF1YWQJLkxDRkkwLS5MdGV4 dDAKKysJLnF1YWQJLkxDRkkxLS5MdGV4dDAKKysJLnZhbHVlCTB4MgorKwkuYnl0ZQkweDc3Cisr CS5zbGViMTI4IDE2CisrCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCisrCS5xdWFkCS5MRkUyLS5MdGV4 dDAKKysJLnZhbHVlCTB4MgorKwkuYnl0ZQkweDc2CisrCS5zbGViMTI4IDE2CisrCS5xdWFkCTB4 MAorKwkucXVhZAkweDAKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8KKysuTGRlYnVnX3JlbGF0aXZl OgorKwkubG9uZwkuTGRlYnVnX2VuZCAtIC5MZGVidWdfc3RhcnQKKysuTGRlYnVnX3N0YXJ0Ogor KwkudmFsdWUJMHgyCisrCS5sb25nCS5MZGVidWdfYWJicmV2MAorKwkuYnl0ZQkweDgKKysJLnVs ZWIxMjggMHgxCisrCS5sb25nCS5MQVNGMgorKwkuYnl0ZQkweDEKKysJLmxvbmcJLkxBU0YzCisr CS5sb25nCS5MQVNGNAorKwkucXVhZAkuTHRleHQwCisrCS5xdWFkCS5MZXRleHQwCisrCS5sb25n CS5MZGVidWdfbGluZTAKKysJLnVsZWIxMjggMHgyCisrCS5ieXRlCTB4MQorKwkuc3RyaW5nCSJm b28iCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE2CisrCS5ieXRlCTB4MQorKwkucXVhZAkuTEZC MgorKwkucXVhZAkuTEZFMgorKwkubG9uZwkuTExTVDAKKysJLmxvbmcJLkx0eXBlX2ludCAtIC5M ZGVidWdfcmVsYXRpdmUKKysJLnVsZWIxMjggMHgzCisrCS5sb25nCS5MQVNGNQorKwkuYnl0ZQkw eDEKKysJLmJ5dGUJMHgxNQorKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQor KwkuYnl0ZQkweDIKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtNTIKKysuTHRhZ19wb2ludGVy OgorKwkudWxlYjEyOCAweDQKKysJLmJ5dGUJMHg4CS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwku bG9uZwkuTHRhZ19hcnJheV90eXBlIC0gLmRlYnVnX2luZm8JLyogRFdfQVRfdHlwZSAqLworKwku dWxlYjEyOCAweDUJLyogQWJicmV2IE51bWJlcjogNSAoRFdfVEFHX3ZhcmlhYmxlKSAqLworKwku bG9uZwkuTEFTRjAKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTgKKysjaWYgMQorKwkubG9uZwku THRhZ19wb2ludGVyIC0gLmRlYnVnX2luZm8KKysjZWxzZQorKwkvKiBEZWJ1Z2dpbmcgb25seTog U2tpcCB0aGUgdHlwZWRlZiBpbmRpcmVjdGlvbi4gICovCisrCS5sb25nCS5MdGFnX2FycmF5X3R5 cGUgLSAuZGVidWdfaW5mbworKyNlbmRpZgorKwkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9i bG9jazE6IHN0YXJ0ICovCisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC0z MgorKyNpZiAwCisrCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLworKyNlbHNlCisrCS5ieXRl CTB4OTYJLyogRFdfT1Bfbm9wICovCisrI2VuZGlmCisrCS8qIERXX0FUX2xvY2F0aW9uOiBEV19G T1JNX2Jsb2NrMTogZW5kICovCisrCS51bGViMTI4IDB4NgorKwkuc3RyaW5nCSJpIgorKwkuYnl0 ZQkweDEKKysJLmJ5dGUJMHgxOQorKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2 ZQorKwkuYnl0ZQkweDIKKysJLmJ5dGUJMHg5MQorKwkuc2xlYjEyOCAtMjAKKysJLmJ5dGUJMHgw CisrLkx0eXBlX2ludDoKKysJLnVsZWIxMjggMHg3CisrCS5ieXRlCTB4NAorKwkuYnl0ZQkweDUK KysJLnN0cmluZwkiaW50IgorKy5MdGFnX2FycmF5X3R5cGU6CisrCS51bGViMTI4IDB4OAkvKiBB YmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8KKysJLmxvbmcJLkx0eXBlX2No YXIgLSAuTGRlYnVnX3JlbGF0aXZlCisrCS5sb25nCS5MdHlwZV91bG9uZyAtIC5MZGVidWdfcmVs YXRpdmUJLyogRFdfQVRfc2libGluZzogRFdfRk9STV9yZWY0ICovCisrMToJLyogRFdfQVRfZGF0 YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCisrCS5ieXRlCTJmIC0gM2YJLyog bGVuZ3RoICovCisrMzoKKysJLmJ5dGUJMHg5NwkvKiBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNz ICovCisrI2lmIDEKKysJLmJ5dGUJMHg2CS8qIERXX09QX2RlcmVmICovCisrI2Vsc2UKKysJLmJ5 dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KKysjZW5kaWYKKysyOgkvKiBEV19BVF9kYXRhX2xvY2F0 aW9uOiBEV19GT1JNX2Jsb2NrMTogZW5kICovCisrCS51bGViMTI4IDB4OQorKwkubG9uZwkuTHR5 cGVfY2hhciAtIC5MZGVidWdfcmVsYXRpdmUJLyogRFdfQVRfdHlwZTogRFdfRk9STV9yZWY0ICov CisrCS5ieXRlCTB4MworKwkuYnl0ZQkweDkxCisrCS5zbGViMTI4IC00MAorKwkuYnl0ZQkweDYK KysJLmJ5dGUJMHgwCisrLkx0eXBlX3Vsb25nOgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHg4 CisrCS5ieXRlCTB4NworKy5MdHlwZV9jaGFyOgorKwkudWxlYjEyOCAweGIKKysJLmJ5dGUJMHgx CisrCS5ieXRlCTB4NgorKwkubG9uZwkuTEFTRjEKKysJLmJ5dGUJMHgwCisrLkxkZWJ1Z19lbmQ6 CisrCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4IDB4 MTEKKysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4MjUKKysJLnVsZWIxMjggMHhlCisrCS51bGVi MTI4IDB4MTMKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUK KysJLnVsZWIxMjggMHgxYgorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMQorKwkudWxl YjEyOCAweDEKKysJLnVsZWIxMjggMHgxMgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgx MAorKwkudWxlYjEyOCAweDYKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAw eDIKKysJLnVsZWIxMjggMHgyZQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHgzZgorKwkudWxl YjEyOCAweGMKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4OAorKwkudWxlYjEyOCAweDNh CisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxl YjEyOCAweDI3CisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4IDB4 MQorKwkudWxlYjEyOCAweDEyCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDQwCisrCS51 bGViMTI4IDB4NgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMworKwkuYnl0ZQkweDAK KysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDUKKysJLmJ5dGUJMHgw CisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgzYQorKwkudWxl YjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHg0 OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJLmJ5 dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDQJLyogLkx0YWdfcG9pbnRlciBhYmJy ZXYgKi8KKysJLnVsZWIxMjggMHgwZgkvKiBEV19UQUdfcG9pbnRlcl90eXBlICovCisrCS5ieXRl CTB4MAorKwkudWxlYjEyOCAweDBiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5Cisr CS51bGViMTI4IDB4MTMKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDUK KysJLnVsZWIxMjggMHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4 IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisr CS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLnVsZWIx MjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGVi MTI4IDB4NgorKwkudWxlYjEyOCAweDM0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDMKKysJ LnVsZWIxMjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4 IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJLnVsZWIxMjggMHgxMwor KwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAK KysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4 IDB4YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwkudWxlYjEyOCAweGIKKysJ LnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisr CS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdfYXJyYXlfdHlwZSkgKi8K KysJLnVsZWIxMjggMHgxCisrCS5ieXRlCTB4MQorKwkudWxlYjEyOCAweDQ5CS8qIERXX0FUX3R5 cGUgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjggMHgx CS8qIERXX0FUX3NpYmxpbmcgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8K KysJLnVsZWIxMjggMHg1MAkvKiBEV19BVF9kYXRhX2xvY2F0aW9uICovCisrCS51bGViMTI4IDB4 YQkvKiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGVi MTI4IDB4OQorKwkudWxlYjEyOCAweDIxCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDQ5CS8q IERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVs ZWIxMjggMHgyZgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwku dWxlYjEyOCAweGEKKysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHhi CisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGViMTI4IDB4YgorKwkuYnl0 ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDI0CisrCS5i eXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4M2UK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLmJ5dGUJ MHgwCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnNlY3Rpb24JLmRlYnVnX3B1Ym5hbWVz LCIiLEBwcm9nYml0cworKwkubG9uZwkweDE2CisrCS52YWx1ZQkweDIKKysJLmxvbmcJLkxkZWJ1 Z19pbmZvMAorKwkubG9uZwkweGE4CisrCS5sb25nCTB4MmQKKysJLnN0cmluZwkiZm9vIgorKwku bG9uZwkweDAKKysJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCisrCS5sb25n CTB4MmMKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8wCisrCS5ieXRlCTB4OAor KwkuYnl0ZQkweDAKKysJLnZhbHVlCTB4MAorKwkudmFsdWUJMHgwCisrCS5xdWFkCS5MdGV4dDAK KysJLnF1YWQJLkxldGV4dDAtLkx0ZXh0MAorKwkucXVhZAkweDAKKysJLnF1YWQJMHgwCisrCS5z ZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQorKy5MQVNGMDoKKysJLnN0cmluZwki YXJyYXkiCisrLkxBU0Y1OgorKwkuc3RyaW5nCSJzaXplIgorKy5MQVNGMzoKKysJLnN0cmluZwki eDg2XzY0LXZsYS1wb2ludGVyLmMiCisrLkxBU0Y2OgorKwkuc3RyaW5nCSJhcnJheV90IgorKy5M QVNGMToKKysJLnN0cmluZwkiY2hhciIKKysuTEFTRjQ6CisrCS5zdHJpbmcJImdkYi5hcmNoIgor Ky5MQVNGMjoKKysJLnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjIt NykiCisrCS5pZGVudAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03 KSIKKysJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cworSW5kZXg6IGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94 ODZfNjQtdmxhLXBvaW50ZXIuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwODk0MDQ4NCArMDIwMAor QEAgLTAsMCArMSw0MyBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor KworKyNpZiAwCisrCisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisreworKyAgdHlwZWRlZiBjaGFy IGFycmF5X3Rbc2l6ZV07CisrICBhcnJheV90IGFycmF5OworKyAgaW50IGk7CisrCisrICBmb3Ig KGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorKyAgICBhcnJheVtpXSA9IGk7CisrCisrICBhcnJheVsw XSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8KKyt9CisrCisrI2Vsc2UKKysKKytpbnQKKyttYWluICh2 b2lkKQorK3sKKysgIGZvbyAoMjYpOworKyAgZm9vICg3OCk7CisrICByZXR1cm4gMDsKKyt9Cisr CisrI2VuZGlmCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cAkyMDE0LTA2LTE2 IDIzOjMwOjMwLjEwODk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSw2NiBAQAorKyMgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysj IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorKworK2lmICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKKysg ICAgdmVyYm9zZSAiU2tpcHBpbmcgb3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhw IHRlc3QgbWFkZSBvbmx5IGZvciB4ODZfNjQuIgorKyAgICByZXR1cm4KKyt9CisrCisrc2V0IHRl c3RmaWxlIHg4Nl82NC12bGEtcG9pbnRlcgorK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZv by5TCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKytzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9LWZvby5vCisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjYXNtZmlsZX0iICIke2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewor KyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVy biAtMQorK30KKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSAke2Jpbm9iamZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAi IiB9IHsKKysgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAg ICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYgIVty dW50b19tYWluXSB7CisrICAgIHVudGVzdGVkIHg4Nl82NC12bGEtcG9pbnRlcgorKyAgICByZXR1 cm4gLTEKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCisrCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrX2hlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJh eSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFsyNlxcXF0iICJmaXJzdDogd2hhdGlzIGFycmF5 IgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFsyNlxc XF0iICJmaXJzdDogcHR5cGUgYXJyYXkiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0 eXBlID0gY2hhciBcXFxbdmFyaWFibGUgbGVuZ3RoXFxcXSIgImZpcnN0OiB3aGF0aXMgKmFycmF5 IgorK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGUgbGVu Z3RoXFxcXSIgImZpcnN0OiBwdHlwZSAqYXJyYXkiCisrCisrZ2RiX3Rlc3QgInAgKCphcnJheSlc WzFcXSIgIlxcJFxbMC05XF0gPSAxICdcXFxcMDAxJyIKKytnZGJfdGVzdCAicCAoKmFycmF5KVxb MlxdIiAiXFwkXFswLTlcXSA9IDIgJ1xcXFwwMDInIgorK2dkYl90ZXN0ICJwICgqYXJyYXkpXFsz XF0iICJcXCRcWzAtOVxdID0gMyAnXFxcXDAwMyciCisrZ2RiX3Rlc3QgInAgKCphcnJheSlcWzRc XSIgIlxcJFxbMC05XF0gPSA0ICdcXFxcMDA0JyIKKysKKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiYnJlYWtfaGVyZSIKKysKKytnZGJfdGVzdCAid2hhdGlzIGFycmF5IiAidHlwZSA9IGNo YXIgXFwoXFwqXFwpXFxcWzc4XFxcXSIgInNlY29uZDogd2hhdGlzIGFycmF5IgorK2dkYl90ZXN0 ICJwdHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcKFxcKlxcKVxcXFs3OFxcXF0iICJzZWNvbmQ6 IHB0eXBlIGFycmF5IgorKworK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlwZSA9IGNoYXIg XFxcW3ZhcmlhYmxlIGxlbmd0aFxcXF0iICJzZWNvbmQ6IHdoYXRpcyAqYXJyYXkiCisrZ2RiX3Rl c3QgInB0eXBlICphcnJheSIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZSBsZW5ndGhcXFxdIiAi c2Vjb25kOiBwdHlwZSAqYXJyYXkiCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUworPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYt Zm9vLlMJMjAxNC0wNi0xNiAyMzozMDozMC4xMDg5NDA0ODQgKzAyMDAKK0BAIC0wLDAgKzEsNDU1 IEBACisrCS5maWxlCSJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIKKysJLnNlY3Rpb24JLmRlYnVnX2Fi YnJldiwiIixAcHJvZ2JpdHMKKysuTGRlYnVnX2FiYnJldjA6CisrCS5zZWN0aW9uCS5kZWJ1Z19p bmZvLCIiLEBwcm9nYml0cworKy5MZGVidWdfaW5mbzA6CisrCS5zZWN0aW9uCS5kZWJ1Z19saW5l LCIiLEBwcm9nYml0cworKy5MZGVidWdfbGluZTA6CisrCS50ZXh0CisrLkx0ZXh0MDoKKysuZ2xv YmwgZm9vCisrCS50eXBlCWZvbywgQGZ1bmN0aW9uCisrZm9vOgorKy5MRkIyOgorKwkuZmlsZSAx ICJ4ODZfNjQtdmxhLXR5cGVkZWYuYyIKKysJLmxvYyAxIDIyIDAKKysJcHVzaHEJJXJicAorKy5M Q0ZJMDoKKysJbW92cQklcnNwLCAlcmJwCisrLkxDRkkxOgorKwlzdWJxCSQ2NCwgJXJzcAorKy5M Q0ZJMjoKKysJbW92bAklZWRpLCAtMzYoJXJicCkKKysJLmxvYyAxIDIyIDAKKysJbW92cQklcnNw LCAlcmF4CisrCW1vdnEJJXJheCwgLTQ4KCVyYnApCisrCS5sb2MgMSAyMyAwCisrCW1vdmwJLTM2 KCVyYnApLCAlZWR4CisrCW1vdnNscQklZWR4LCVyYXgKKysJc3VicQkkMSwgJXJheAorKwltb3Zx CSVyYXgsIC0yNCglcmJwKQorKwkubG9jIDEgMjQgMAorKwltb3ZzbHEJJWVkeCwlcmF4CisrCWFk ZHEJJDE1LCAlcmF4CisrCWFkZHEJJDE1LCAlcmF4CisrCXNocnEJJDQsICVyYXgKKysJc2FscQkk NCwgJXJheAorKwlzdWJxCSVyYXgsICVyc3AKKysJbW92cQklcnNwLCAtNTYoJXJicCkKKysJbW92 cQktNTYoJXJicCksICVyYXgKKysJYWRkcQkkMTUsICVyYXgKKysJc2hycQkkNCwgJXJheAorKwlz YWxxCSQ0LCAlcmF4CisrCW1vdnEJJXJheCwgLTU2KCVyYnApCisrCW1vdnEJLTU2KCVyYnApLCAl cmF4CisrCW1vdnEJJXJheCwgLTE2KCVyYnApCisrCS5sb2MgMSAyNyAwCisrCW1vdmwJJDAsIC00 KCVyYnApCisrCWptcAkuTDIKKysuTDM6CisrCS5sb2MgMSAyOCAwCisrCW1vdmwJLTQoJXJicCks ICVlc2kKKysJbW92bAktNCglcmJwKSwgJWVheAorKwltb3ZsCSVlYXgsICVlY3gKKysJbW92cQkt MTYoJXJicCksICVyZHgKKysJbW92c2xxCSVlc2ksJXJheAorKwltb3ZiCSVjbCwgKCVyZHgsJXJh eCkKKysJLmxvYyAxIDI3IDAKKysJYWRkbAkkMSwgLTQoJXJicCkKKysuTDI6CisrCW1vdmwJLTQo JXJicCksICVlYXgKKysJY21wbAktMzYoJXJicCksICVlYXgKKysJamwJLkwzCisrCS5sb2MgMSAz MCAwCisrCS5nbG9ibAlicmVha19oZXJlCisrYnJlYWtfaGVyZToKKysJbW92cQktMTYoJXJicCks ICVyYXgKKysJbW92YgkkMCwgKCVyYXgpCisrCW1vdnEJLTQ4KCVyYnApLCAlcnNwCisrCS5sb2Mg MSAzMSAwCisrCWxlYXZlCisrCXJldAorKy5MRkUyOgorKwkuc2l6ZQlmb28sIC4tZm9vCisrCS5z ZWN0aW9uCS5kZWJ1Z19mcmFtZSwiIixAcHJvZ2JpdHMKKysuTGZyYW1lMDoKKysJLmxvbmcJLkxF Q0lFMC0uTFNDSUUwCisrLkxTQ0lFMDoKKysJLmxvbmcJMHhmZmZmZmZmZgorKwkuYnl0ZQkweDEK KysJLnN0cmluZwkiIgorKwkudWxlYjEyOCAweDEKKysJLnNsZWIxMjggLTgKKysJLmJ5dGUJMHgx MAorKwkuYnl0ZQkweGMKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkw eDkwCisrCS51bGViMTI4IDB4MQorKwkuYWxpZ24gOAorKy5MRUNJRTA6CisrLkxTRkRFMDoKKysJ LmxvbmcJLkxFRkRFMC0uTEFTRkRFMAorKy5MQVNGREUwOgorKwkubG9uZwkuTGZyYW1lMAorKwku cXVhZAkuTEZCMgorKwkucXVhZAkuTEZFMi0uTEZCMgorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxD RkkwLS5MRkIyCisrCS5ieXRlCTB4ZQorKwkudWxlYjEyOCAweDEwCisrCS5ieXRlCTB4ODYKKysJ LnVsZWIxMjggMHgyCisrCS5ieXRlCTB4NAorKwkubG9uZwkuTENGSTEtLkxDRkkwCisrCS5ieXRl CTB4ZAorKwkudWxlYjEyOCAweDYKKysJLmFsaWduIDgKKysuTEVGREUwOgorKwkuc2VjdGlvbgku ZWhfZnJhbWUsImEiLEBwcm9nYml0cworKy5MZnJhbWUxOgorKwkubG9uZwkuTEVDSUUxLS5MU0NJ RTEKKysuTFNDSUUxOgorKwkubG9uZwkweDAKKysJLmJ5dGUJMHgxCisrCS5zdHJpbmcJInpSIgor KwkudWxlYjEyOCAweDEKKysJLnNsZWIxMjggLTgKKysJLmJ5dGUJMHgxMAorKwkudWxlYjEyOCAw eDEKKysJLmJ5dGUJMHgzCisrCS5ieXRlCTB4YworKwkudWxlYjEyOCAweDcKKysJLnVsZWIxMjgg MHg4CisrCS5ieXRlCTB4OTAKKysJLnVsZWIxMjggMHgxCisrCS5hbGlnbiA4CisrLkxFQ0lFMToK KysuTFNGREUxOgorKwkubG9uZwkuTEVGREUxLS5MQVNGREUxCisrLkxBU0ZERTE6CisrCS5sb25n CS5MQVNGREUxLS5MZnJhbWUxCisrCS5sb25nCS5MRkIyCisrCS5sb25nCS5MRkUyLS5MRkIyCisr CS51bGViMTI4IDB4MAorKwkuYnl0ZQkweDQKKysJLmxvbmcJLkxDRkkwLS5MRkIyCisrCS5ieXRl CTB4ZQorKwkudWxlYjEyOCAweDEwCisrCS5ieXRlCTB4ODYKKysJLnVsZWIxMjggMHgyCisrCS5i eXRlCTB4NAorKwkubG9uZwkuTENGSTEtLkxDRkkwCisrCS5ieXRlCTB4ZAorKwkudWxlYjEyOCAw eDYKKysJLmFsaWduIDgKKysuTEVGREUxOgorKwkudGV4dAorKy5MZXRleHQwOgorKwkuc2VjdGlv bgkuZGVidWdfbG9jLCIiLEBwcm9nYml0cworKy5MZGVidWdfbG9jMDoKKysuTExTVDA6CisrCS5x dWFkCS5MRkIyLS5MdGV4dDAKKysJLnF1YWQJLkxDRkkwLS5MdGV4dDAKKysJLnZhbHVlCTB4Mgor KwkuYnl0ZQkweDc3CisrCS5zbGViMTI4IDgKKysJLnF1YWQJLkxDRkkwLS5MdGV4dDAKKysJLnF1 YWQJLkxDRkkxLS5MdGV4dDAKKysJLnZhbHVlCTB4MgorKwkuYnl0ZQkweDc3CisrCS5zbGViMTI4 IDE2CisrCS5xdWFkCS5MQ0ZJMS0uTHRleHQwCisrCS5xdWFkCS5MRkUyLS5MdGV4dDAKKysJLnZh bHVlCTB4MgorKwkuYnl0ZQkweDc2CisrCS5zbGViMTI4IDE2CisrCS5xdWFkCTB4MAorKwkucXVh ZAkweDAKKysJLnNlY3Rpb24JLmRlYnVnX2luZm8KKysJLmxvbmcJLkxkZWJ1Z19lbmQgLSAuTGRl YnVnX3N0YXJ0CisrLkxkZWJ1Z19zdGFydDoKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVn X2FiYnJldjAKKysJLmJ5dGUJMHg4CisrCS51bGViMTI4IDB4MQorKwkubG9uZwkuTEFTRjIKKysJ LmJ5dGUJMHgxCisrCS5sb25nCS5MQVNGMworKwkubG9uZwkuTEFTRjQKKysJLnF1YWQJLkx0ZXh0 MAorKwkucXVhZAkuTGV0ZXh0MAorKwkubG9uZwkuTGRlYnVnX2xpbmUwCisrCS51bGViMTI4IDB4 MgorKwkuYnl0ZQkweDEKKysJLnN0cmluZwkiZm9vIgorKwkuYnl0ZQkweDEKKysJLmJ5dGUJMHgx NgorKwkuYnl0ZQkweDEKKysJLnF1YWQJLkxGQjIKKysJLnF1YWQJLkxGRTIKKysJLmxvbmcJLkxM U1QwCisrCS5sb25nCTB4ODMKKysJLnVsZWIxMjggMHgzCisrCS5sb25nCS5MQVNGNQorKwkuYnl0 ZQkweDEKKysJLmJ5dGUJMHgxNQorKwkubG9uZwkweDgzCisrCS5ieXRlCTB4MgorKwkuYnl0ZQkw eDkxCisrCS5zbGViMTI4IC01MgorKy5MdGFnX3R5cGVkZWY6CisrCS51bGViMTI4IDB4NAorKwku bG9uZwkuTEFTRjYKKysJLmJ5dGUJMHgxCisrCS5ieXRlCTB4MTcKKysJLmxvbmcJLkx0YWdfYXJy YXlfdHlwZSAtIC5kZWJ1Z19pbmZvCisrCS51bGViMTI4IDB4NQkvKiBBYmJyZXYgTnVtYmVyOiA1 IChEV19UQUdfdmFyaWFibGUpICovCisrCS5sb25nCS5MQVNGMAorKwkuYnl0ZQkweDEKKysJLmJ5 dGUJMHgxOAorKyNpZiAxCisrCS5sb25nCS5MdGFnX3R5cGVkZWYgLSAuZGVidWdfaW5mbworKyNl bHNlCisrCS8qIERlYnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGluZGlyZWN0aW9uLiAg Ki8KKysJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCisrI2VuZGlmCisrCS8q IERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KKysJLmJ5dGUJMHgzCisr CS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTMyCisrI2lmIDAKKysJLmJ5dGUJMHg2CS8qIERXX09Q X2RlcmVmICovCisrI2Vsc2UKKysJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3AgKi8KKysjZW5kaWYK KysJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8KKysJLnVsZWIxMjgg MHg2CisrCS5zdHJpbmcJImkiCisrCS5ieXRlCTB4MQorKwkuYnl0ZQkweDE5CisrCS5sb25nCTB4 ODMKKysJLmJ5dGUJMHgyCisrCS5ieXRlCTB4OTEKKysJLnNsZWIxMjggLTIwCisrCS5ieXRlCTB4 MAorKwkudWxlYjEyOCAweDcKKysJLmJ5dGUJMHg0CisrCS5ieXRlCTB4NQorKwkuc3RyaW5nCSJp bnQiCisrLkx0YWdfYXJyYXlfdHlwZToKKysJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6 IDggKERXX1RBR19hcnJheV90eXBlKSAqLworKwkubG9uZwkweGEwICsgKDJmIC0gMWYpCS8qIERX X0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLworKwkubG9uZwkweDlkICsgKDJmIC0gMWYpCS8qIERX X0FUX3NpYmxpbmc6IERXX0ZPUk1fcmVmNCAqLworKzE6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246 IERXX0ZPUk1fYmxvY2sxOiBzdGFydCAqLworKwkuYnl0ZQkyZiAtIDNmCS8qIGxlbmd0aCAqLwor KzM6CisrCS5ieXRlCTB4OTcJLyogRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyAqLworKwkuYnl0 ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KKysyOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19G T1JNX2Jsb2NrMTogZW5kICovCisrCS51bGViMTI4IDB4OQorKwkubG9uZwkweDlkICsgKDJiIC0g MWIpCS8qIERXX0FUX3R5cGU6IERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkweDMKKysJLmJ5dGUJ MHg5MQorKwkuc2xlYjEyOCAtNDAKKysJLmJ5dGUJMHg2CisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweGEKKysJLmJ5dGUJMHg4CisrCS5ieXRlCTB4NworKwkudWxlYjEyOCAweGIKKysJLmJ5dGUJ MHgxCisrCS5ieXRlCTB4NgorKwkubG9uZwkuTEFTRjEKKysJLmJ5dGUJMHgwCisrLkxkZWJ1Z19l bmQ6CisrCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYKKysJLnVsZWIxMjggMHgxCisrCS51bGViMTI4 IDB4MTEKKysJLmJ5dGUJMHgxCisrCS51bGViMTI4IDB4MjUKKysJLnVsZWIxMjggMHhlCisrCS51 bGViMTI4IDB4MTMKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAw eGUKKysJLnVsZWIxMjggMHgxYgorKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgxMQorKwku dWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjgg MHgxMAorKwkudWxlYjEyOCAweDYKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEy OCAweDIKKysJLnVsZWIxMjggMHgyZQorKwkuYnl0ZQkweDEKKysJLnVsZWIxMjggMHgzZgorKwku dWxlYjEyOCAweGMKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4OAorKwkudWxlYjEyOCAw eDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwku dWxlYjEyOCAweDI3CisrCS51bGViMTI4IDB4YworKwkudWxlYjEyOCAweDExCisrCS51bGViMTI4 IDB4MQorKwkudWxlYjEyOCAweDEyCisrCS51bGViMTI4IDB4MQorKwkudWxlYjEyOCAweDQwCisr CS51bGViMTI4IDB4NgorKwkudWxlYjEyOCAweDEKKysJLnVsZWIxMjggMHgxMworKwkuYnl0ZQkw eDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweDUKKysJLmJ5dGUJ MHgwCisrCS51bGViMTI4IDB4MworKwkudWxlYjEyOCAweGUKKysJLnVsZWIxMjggMHgzYQorKwku dWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzYgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjgg MHg0OQorKwkudWxlYjEyOCAweDEzCisrCS51bGViMTI4IDB4MgorKwkudWxlYjEyOCAweGEKKysJ LmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweDQKKysJLnVsZWIxMjggMHgxNgor KwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAw eDNhCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwku dWxlYjEyOCAweDQ5CisrCS51bGViMTI4IDB4MTMKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAor KwkudWxlYjEyOCAweDUKKysJLnVsZWIxMjggMHgzNAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjgg MHgzCisrCS51bGViMTI4IDB4ZQorKwkudWxlYjEyOCAweDNhCisrCS51bGViMTI4IDB4YgorKwku dWxlYjEyOCAweDNiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDQ5CisrCS51bGViMTI4 IDB4MTMKKysJLnVsZWIxMjggMHgyCisrCS51bGViMTI4IDB4YQorKwkuYnl0ZQkweDAKKysJLmJ5 dGUJMHgwCisrCS51bGViMTI4IDB4NgorKwkudWxlYjEyOCAweDM0CisrCS5ieXRlCTB4MAorKwku dWxlYjEyOCAweDMKKysJLnVsZWIxMjggMHg4CisrCS51bGViMTI4IDB4M2EKKysJLnVsZWIxMjgg MHhiCisrCS51bGViMTI4IDB4M2IKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4NDkKKysJ LnVsZWIxMjggMHgxMworKwkudWxlYjEyOCAweDIKKysJLnVsZWIxMjggMHhhCisrCS5ieXRlCTB4 MAorKwkuYnl0ZQkweDAKKysJLnVsZWIxMjggMHg3CisrCS51bGViMTI4IDB4MjQKKysJLmJ5dGUJ MHgwCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzZQorKwku dWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHgzCisrCS51bGViMTI4IDB4OAorKwkuYnl0ZQkweDAK KysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdf YXJyYXlfdHlwZSkgKi8KKysJLnVsZWIxMjggMHgxCisrCS5ieXRlCTB4MQorKwkudWxlYjEyOCAw eDQ5CS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JNX3JlZjQgKi8K KysJLnVsZWIxMjggMHgxCS8qIERXX0FUX3NpYmxpbmcgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBE V19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjggMHg1MAkvKiBEV19BVF9kYXRhX2xvY2F0aW9uICov CisrCS51bGViMTI4IDB4YQkvKiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkweDAKKysJLmJ5 dGUJMHgwCisrCS51bGViMTI4IDB4OQorKwkudWxlYjEyOCAweDIxCisrCS5ieXRlCTB4MAorKwku dWxlYjEyOCAweDQ5CS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjggMHgxMwkvKiBEV19GT1JN X3JlZjQgKi8KKysJLnVsZWIxMjggMHgyZgorKwkudWxlYjEyOCAweGEKKysJLmJ5dGUJMHgwCisr CS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGEKKysJLnVsZWIxMjggMHgyNAorKwkuYnl0ZQkweDAK KysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4YgorKwkudWxlYjEyOCAweDNlCisrCS51bGVi MTI4IDB4YgorKwkuYnl0ZQkweDAKKysJLmJ5dGUJMHgwCisrCS51bGViMTI4IDB4YgorKwkudWxl YjEyOCAweDI0CisrCS5ieXRlCTB4MAorKwkudWxlYjEyOCAweGIKKysJLnVsZWIxMjggMHhiCisr CS51bGViMTI4IDB4M2UKKysJLnVsZWIxMjggMHhiCisrCS51bGViMTI4IDB4MworKwkudWxlYjEy OCAweGUKKysJLmJ5dGUJMHgwCisrCS5ieXRlCTB4MAorKwkuYnl0ZQkweDAKKysJLnNlY3Rpb24J LmRlYnVnX3B1Ym5hbWVzLCIiLEBwcm9nYml0cworKwkubG9uZwkweDE2CisrCS52YWx1ZQkweDIK KysJLmxvbmcJLkxkZWJ1Z19pbmZvMAorKwkubG9uZwkweGE4CisrCS5sb25nCTB4MmQKKysJLnN0 cmluZwkiZm9vIgorKwkubG9uZwkweDAKKysJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHBy b2diaXRzCisrCS5sb25nCTB4MmMKKysJLnZhbHVlCTB4MgorKwkubG9uZwkuTGRlYnVnX2luZm8w CisrCS5ieXRlCTB4OAorKwkuYnl0ZQkweDAKKysJLnZhbHVlCTB4MAorKwkudmFsdWUJMHgwCisr CS5xdWFkCS5MdGV4dDAKKysJLnF1YWQJLkxldGV4dDAtLkx0ZXh0MAorKwkucXVhZAkweDAKKysJ LnF1YWQJMHgwCisrCS5zZWN0aW9uCS5kZWJ1Z19zdHIsIk1TIixAcHJvZ2JpdHMsMQorKy5MQVNG MDoKKysJLnN0cmluZwkiYXJyYXkiCisrLkxBU0Y1OgorKwkuc3RyaW5nCSJzaXplIgorKy5MQVNG MzoKKysJLnN0cmluZwkieDg2XzY0LXZsYS10eXBlZGVmLmMiCisrLkxBU0Y2OgorKwkuc3RyaW5n CSJhcnJheV90IgorKy5MQVNGMToKKysJLnN0cmluZwkiY2hhciIKKysuTEFTRjQ6CisrCS5zdHJp bmcJImdkYi5hcmNoIgorKy5MQVNGMjoKKysJLnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUg KFJlZCBIYXQgNC4zLjItNykiCisrCS5pZGVudAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAo UmVkIEhhdCA0LjMuMi03KSIKKysJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0 cworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZf NjQtdmxhLXR5cGVkZWYuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjEw OTk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSw0MyBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLworKworKyNpZiAwCisrCisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisrewor KyAgdHlwZWRlZiBjaGFyIGFycmF5X3Rbc2l6ZV07CisrICBhcnJheV90IGFycmF5OworKyAgaW50 IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQorKyAgICBhcnJheVtpXSA9IGk7 CisrCisrICBhcnJheVswXSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8KKyt9CisrCisrI2Vsc2UKKysK KytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIGZvbyAoMjYpOworKyAgZm9vICg3OCk7CisrICBy ZXR1cm4gMDsKKyt9CisrCisrI2VuZGlmCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVm LmV4cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSw2NCBA QAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGVzdCBEV19BVF9kYXRhX2xvY2F0 aW9uIGFjY2Vzc2VkIHRocm91Z2ggRFdfVEFHX3R5cGVkZWYgaW50ZXJtZWRpYXRlLgorKworK2lm ICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKKysgICAgdmVyYm9zZSAiU2tpcHBpbmcg b3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4 ODZfNjQuIgorKyAgICByZXR1cm4KKyt9CisrCisrc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtdHlw ZWRlZgorK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCisrc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K KytzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCisr aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIk e2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKytpZiAgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisr Z2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHVu dGVzdGVkIHg4Nl82NC12bGEtdHlwZWRlZgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2Jy ZWFrcG9pbnQgImJyZWFrX2hlcmUiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrX2hlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAi Zmlyc3Q6IHdoYXRpcyBhcnJheSIKKysKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0g Y2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgorKworK2dkYl90ZXN0ICJwIGFy cmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCisrZ2RiX3Rlc3QgInAgYXJyYXlc WzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKKytnZGJfdGVzdCAicCBhcnJheVxbM1xd IiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgorK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJc XCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrX2hlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90 IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCisrCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlw ZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9h cnJheWlkeC5jCTIwMTQtMDYtMTMgMDM6NTk6MzcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMJMjAxNC0wNi0x NiAyMzozMDozMC4xMDk5NDA0ODQgKzAyMDAKK0BAIC0xNyw2ICsxNywxMyBAQAorIAorIGludCBh cnJheVtdID0gezEsIDIsIDMsIDR9OworIAorKyNpZmRlZiBfX0dOVUNfXworK3N0cnVjdAorKyAg eworKyAgICBpbnQgYVswXTsKKysgIH0gdW5ib3VuZDsKKysjZW5kaWYKKysKKyBpbnQKKyBtYWlu ICh2b2lkKQorIHsKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYXJyYXlpZHguZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCTIwMTQtMDYtMTMgMDM6NTk6 MzcuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2FycmF5aWR4LmV4cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCArMDIw MAorQEAgLTQ5LDQgKzQ5LDEyIEBAIGdkYl90ZXN0ICJwcmludCBhcnJheSIgXAorICAgICAgICAg ICJcXHtcXFxbMFxcXF0gPSAxLCBcXFxbMVxcXF0gPSAyLCBcXFxbMlxcXF0gPSAzLCBcXFxbM1xc XF0gPSA0XFx9IiBcCisgICAgICAgICAgIlByaW50IGFycmF5IHdpdGggYXJyYXktaW5kZXhlcyBv biIKKyAKKy0KKytzZXQgdGVzdCAicCB1bmJvdW5kLmEgPT0gJnVuYm91bmQuYVxbMFxdIgorK2dk Yl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICIgPSAxXHJcbiRnZGJfcHJv bXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiTm8gc3ltYm9sIFwidW5i b3VuZFwiIGluIGN1cnJlbnQgY29udGV4dC5cclxuJGdkYl9wcm9tcHQgJCIgeworKwl1bnN1cHBv cnRlZCAiJHRlc3QgKG5vIEdDQykiCisrICAgIH0KKyt9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50 ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCAr MDIwMAorQEAgLTAsMCArMSwyMCBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIs IHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAg IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysg ICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLworKworK3N0cnVjdCB7CisrICBpbnQgZmllbGQ7CisrfSBzdGF0aWNzdHJ1Y3QgPSB7IDEg fTsKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50 ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAky MDE0LTA2LTE2IDIzOjMwOjMwLjEwOTk0MDQ4NCArMDIwMAorQEAgLTAsMCArMSwyNiBAQAorKyMg Q29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3NldCB0ZXN0IGludGVybmFsLXZhci1maWVsZC1h ZGRyZXNzCisrc2V0IGJpbmZpbGUgJHt0ZXN0fS54CisraWYgIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdH0uYyIgIltzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2JpbmZp bGV9XSIgb2JqZWN0IHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKysKKytjbGVhbl9yZXN0 YXJ0ICRiaW5maWxlCisrCisrZ2RiX3Rlc3Qge3NldCAkdmFyc3RydWN0ID0gc3RhdGljc3RydWN0 fQorK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIgPSAxIgorSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysr IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYwky MDE0LTA2LTE2IDIzOjMwOjMwLjExMDk0MDQ4NSArMDIwMAorQEAgLTAsMCArMSwzMSBAQAorKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAg Q29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKwor KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdHJpbmcu aD4KKysKKytpbnQKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgY2hhciBz WzIgKyBhcmdjXTsKKysgIHZvaWQgKCpmKSAoY2hhciAqKSA9IDA7CisrCisrICBtZW1zZXQgKHMs IDAsIHNpemVvZiAocykpOworKyAgc1swXSA9ICdYJzsKKysKKysgIGYgKHMpOworKyAgcmV0dXJu IDA7CisrfQorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEtZnJhbWUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTA5NDA0ODUg KzAyMDAKK0BAIC0wLDAgKzEsMzggQEAKKysjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr c2V0IHRlc3RmaWxlIHZsYS1mcmFtZQorK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9CisrCisr aWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHtleGVjdXRhYmxlfV0g fSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworK3NldCB0ZXN0ICJjb250aW51ZSIKKytnZGJfdGVzdF9tdWx0aXBsZSAk dGVzdCAkdGVzdCB7CisrICAgIC1yZSAiQ29udGludWluZ1xcLlxyXG5cclxuUHJvZ3JhbSByZWNl aXZlZCBzaWduYWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0XFwuXHJcbjB4MCsgaW4gXFw/ XFw/IFxcKFxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgJHRlc3QKKysgICAgfQorKyAg ICAtcmUgIlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAor KwlyZXR1cm4KKysgICAgfQorK30KKysKKytnZGJfdGVzdCAiYnQgZnVsbCIgIlxyXG4gK3MgPSBc IlhcXFxcMDAwXCJcclxuLioiCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCTIwMTQtMDYtMTYgMjM6MzA6 MzAuMTEwOTQwNDg1ICswMjAwCitAQCAtMCwwICsxLDMwIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKworK2ludAorK21h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7CisrICBpbnQgYXJyYXlbYXJnY107CisrCisr ICBhcnJheVswXSA9IGFycmF5WzBdOworKworKyAgYWJvcnQgKCk7CisrCisrICByZXR1cm4gMDsK Kyt9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS1vdmVyZmxvdy5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjExMDk0MDQ4 NSArMDIwMAorQEAgLTAsMCArMSwxMDkgQEAKKysjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisr IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysK KysjIFdlIGNvdWxkIGNyYXNoIGluOgorKyMgIzAgIGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGJs PTB4MCkgYXQgLi4vLi4vZ2RiL2Jsb2NrLmM6NjkKKysjICMxICBpbiBkd2FyZl9ibG9ja19nZXRf ZnJhbWVfYmFzZSAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzo5NworKyMgICA5Nwkg IGZyYW1lZnVuYyA9IGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGdldF9mcmFtZV9ibG9jayAoZnJh bWUsIE5VTEwpKTsKKysjICMyICBpbiBleGVjdXRlX3N0YWNrX29wICguLi4pIGF0IC4uLy4uL2dk Yi9kd2FyZjJleHByLmM6NDk2CisrIyAjMyAgaW4gZHdhcmZfYmxvY2tfZXhlY19jb3JlICgpIGF0 IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjE1NgorKyMgIzQgIGR3YXJmX2Jsb2NrX2V4ZWMgKC4u LikgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6MjA2CisrIyAjNSAgaW4gcmFuZ2VfdHlwZV9j b3VudF9ib3VuZF9pbnRlcm5hbCAoLi4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMuYzoxNDMwCisr IyAjNiAgaW4gY3JlYXRlX2FycmF5X3R5cGUgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6 ODQwCisrIyAuLi4KKysjICMyMSBpbiBwc3ltdGFiX3RvX3N5bXRhYiAoLi4uKSBhdCAuLi8uLi9n ZGIvc3ltZmlsZS5jOjI5MgorKyMgLi4uCisrIyAjMjkgaW4gYmFja3RyYWNlX2NvbW1hbmRfMSAo KSBhdCAuLi8uLi9nZGIvc3RhY2suYzoxMjczCisrCisrc2V0IHRlc3RmaWxlIHZsYS1vdmVyZmxv dworK3NldCBzaGZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIuc2gKKytz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysg ICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorKyAgICByZXR1cm4g LTEKKyt9CisrCisrc2V0IGYgW29wZW4gInxnZXRjb25mIFBBR0VTSVpFIiAiciJdCisrZ2V0cyAk ZiBwYWdlc2l6ZQorK2Nsb3NlICRmCisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisr c2V0IHBpZF9vZl9nZGIgW2V4cF9waWQgLWkgW2JvYXJkX2luZm8gaG9zdCBmaWxlaWRdXQorKwor K2lmIHsgW3J1bnRvX21haW5dIDwgMCB9IHsKKysgICAgdW50ZXN0ZWQgdmxhLW92ZXJmbG93Cisr ICAgIHJldHVybiAtMQorK30KKysKKysjIEdldCB0aGUgR0RCIG1lbW9yeSBzaXplIHdoZW4gd2Ug c3RheSBhdCBtYWluLgorKworK3Byb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKKysgICAgZ2xv YmFsIHBpZF9vZl9nZGIgcGFnZXNpemUKKysgICAgc2V0IGZkIFtvcGVuICIvcHJvYy8kcGlkX29m X2dkYi9zdGF0bSJdCisrICAgIGdldHMgJGZkIGxpbmUKKysgICAgY2xvc2UgJGZkCisrICAgICMg bnVtYmVyIG9mIHBhZ2VzIG9mIHZpcnR1YWwgbWVtb3J5CisrICAgIHNjYW4gJGxpbmUgIiVkIiBk cnMKKysgICAgcmV0dXJuICRkcnMKKyt9CisrCisrc2V0IHBhZ2VzX2ZvdW5kIFttZW1vcnlfdl9w YWdlc19nZXRdCisrCisrIyBzMzkweCB3aXRoIGdsaWJjLWRlYnVnaW5mby5zMzkweCBpbnN0YWxs ZWQgdXNlZCBhcHByb3guIDE2TUIuCisrc2V0IG1iX3Jlc2VydmUgNDAKKyt2ZXJib3NlIC1sb2cg InBhZ2VzX2ZvdW5kID0gJHBhZ2VzX2ZvdW5kLCBtYl9yZXNlcnZlID0gJG1iX3Jlc2VydmUiCisr c2V0IGtiX2ZvdW5kIFtleHByICRwYWdlc19mb3VuZCAqICRwYWdlc2l6ZSAvIDEwMjRdCisrc2V0 IGtiX3Blcm1pdCBbZXhwciAka2JfZm91bmQgKyAxICogMTAyNCArICRtYl9yZXNlcnZlICogMTAy NF0KKyt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kID0gJGtiX2ZvdW5kLCBrYl9wZXJtaXQgPSAka2Jf cGVybWl0IgorKworKyMgQ3JlYXRlIHRoZSB1bGltaXQgd3JhcHBlci4KKytzZXQgZiBbb3BlbiAk c2hmaWxlICJ3Il0KKytwdXRzICRmICIjISAvYmluL3NoIgorK3B1dHMgJGYgInVsaW1pdCAtdiAk a2JfcGVybWl0IgorK3B1dHMgJGYgImV4ZWMgJEdEQiBcIlwkQFwiIgorK2Nsb3NlICRmCisrcmVt b3RlX2V4ZWMgaG9zdCAiY2htb2QgK3ggJHNoZmlsZSIKKysKKytnZGJfZXhpdAorK3NldCBHREJv bGQgJEdEQgorK3NldCBHREIgIiRzaGZpbGUiCisrZ2RiX3N0YXJ0Cisrc2V0IEdEQiAkR0RCb2xk CisrCisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrZ2RiX2xvYWQgJHti aW5maWxlfQorKworK3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3Qg ZmlsZWlkXV0KKysKKysjIENoZWNrIHRoZSBzaXplIGFnYWluIGFmdGVyIHRoZSBzZWNvbmQgcnVu LgorKyMgV2UgbXVzdCBub3Qgc3RvcCBpbiBtYWluIGFzIGl0IHdvdWxkIGNhY2hlIGBhcnJheScg YW5kIG5ldmVyIGNyYXNoIGxhdGVyLgorKworK2dkYl9ydW5fY21kCisrCisrdmVyYm9zZSAtbG9n ICJrYl9mb3VuZCBiZWZvcmUgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICog JHBhZ2VzaXplIC8gMTAyNF0iCisrCisrZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVjZWl2ZWQgc2ln bmFsIFNJR0FCUlQsIEFib3J0ZWQuLioiICJFbnRlciBhYm9ydCgpIgorKworK3ZlcmJvc2UgLWxv ZyAia2JfZm91bmQgaW4gYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBh Z2VzaXplIC8gMTAyNF0iCisrCisrIyBgYWJvcnQnIGNhbiBnZXQgZXhwcmVzc2VkIGFzIGAqX19H SV9hYm9ydCcuCisrZ2RiX3Rlc3QgImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4g XFwoLioiICJCYWNrdHJhY2UgYWZ0ZXIgYWJvcnQoKSIKKysKKyt2ZXJib3NlIC1sb2cgImtiX2Zv dW5kIGluIGJ0IGFmdGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRw YWdlc2l6ZSAvIDEwMjRdIgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS92bGEuYwkyMDE0LTA2LTE2IDIzOjMwOjMwLjExMDk0MDQ4NSArMDIwMAor QEAgLTAsMCArMSw1NSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwor KworKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKyt2b2lkCisrbWFya2VyICh2b2lkKQorK3sKKyt9 CisrCisrdm9pZAorK2JhciAoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYywgaW50IHNpemUpCisr eworKyAgbWVtc2V0IChhLCAnMScsIHNpemUpOworKyAgbWVtc2V0IChiLCAnMicsIHNpemUpOwor KyAgbWVtc2V0IChjLCAnMycsIDQ4KTsKKyt9CisrCisrdm9pZAorK2ZvbyAoaW50IHNpemUpCisr eworKyAgY2hhciB0ZW1wMVtzaXplXTsKKysgIGNoYXIgdGVtcDNbNDhdOworKworKyAgdGVtcDFb c2l6ZSAtIDFdID0gJ1wwJzsKKysgIHsKKysgICAgY2hhciB0ZW1wMltzaXplXTsKKysKKysgICAg YmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCBzaXplKTsKKysKKysgICAgbWFya2VyICgpOwkvKiBi cmVhay1oZXJlICovCisrICB9CisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZm9v ICgyNik7CisrICBmb28gKDc4KTsKKysgIHJldHVybiAwOworK30KK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAorPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCTIwMTQtMDYtMTYg MjM6MzA6MzAuMTEwOTQwNDg1ICswMjAwCitAQCAtMCwwICsxLDYyIEBACisrIyBDb3B5cmlnaHQg MjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCisrCisrc2V0IHRlc3RmaWxlIHZsYQorK3NldCBzcmNmaWxlICR7dGVzdGZp bGV9LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CisraWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZp bGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfZXhp dAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dk Yl9sb2FkICR7YmluZmlsZX0KKysKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQg dmxhCisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiYnJlYWstaGVyZSJdCisrCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrLWhlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5cGUgPSBjaGFyIFxcXFsy NlxcXF0iICJmaXJzdDogd2hhdGlzIHRlbXAxIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0 eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMiIKKytnZGJfdGVzdCAi d2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0OiB3aGF0aXMgdGVt cDMiCisrCisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIg ImZpcnN0OiBwdHlwZSB0ZW1wMSIKKytnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hh ciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1w MyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDMiCisrCisrZ2Ri X3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50 IHRlbXAxIgorK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDI2IHRpbWVzPiIg ImZpcnN0OiBwcmludCB0ZW1wMiIKKytnZGJfdGVzdCAicCB0ZW1wMyIgIiA9ICczJyA8cmVwZWF0 cyA0OCB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDMiCisrCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgImJyZWFrLWhlcmUiCisrCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMSIgInR5cGUg PSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMSIKKytnZGJfdGVzdCAid2hh dGlzIHRlbXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAy IgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAic2Vj b25kOiB3aGF0aXMgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInB0eXBlIHRlbXAxIiAidHlwZSA9IGNo YXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDEiCisrZ2RiX3Rlc3QgInB0eXBlIHRl bXAyIiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgdGVtcDIiCisrZ2Ri X3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29uZDogcHR5 cGUgdGVtcDMiCisrCisrZ2RiX3Rlc3QgInAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzggdGlt ZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMSIKKytnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8 cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAyIgorK2dkYl90ZXN0ICJwIHRl bXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMiCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJv dW5kLWxvY2xpc3QuUworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMJMjAxNC0wNi0xNiAyMzozMDozMC4xMTE5 NDA0ODcgKzAyMDAKK0BAIC0wLDAgKzEsMjQ2IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCisrCisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KKysKKysvKiBXZSB3aWxs IGBicmVhayAqbWFpbicgYXQgdGhlIHZlcnkgZmlyc3QgaW5zdHJ1Y3Rpb24uICAqLworKyNkZWZp bmUgbWFpbl9sZW5ndGggMQorKworKwkuc2VjdGlvbgkuZGF0YQorK3ZhcmRhdGE6CisrCS8qIFNl ZSBEV19PUF9saXQzICsgMSAoMC1iYXNlZCkuICAqLworKwkuc3RyaW5nCQkic2Vlbm5vdHNlZW4i CisrCisrCS5zZWN0aW9uCS5kZWJ1Z19pbmZvCisrLkxjdTFfYmVnaW46CisrCS40Ynl0ZQkJLkxj dTFfZW5kIC0gLkxjdTFfc3RhcnQJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KKysu TGN1MV9zdGFydDoKKysJLjJieXRlCQkyCQkJLyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8KKysJ LjRieXRlCQkuTGRlYnVnX2FiYnJldjAJCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAq LworKwkuYnl0ZQkJNAkJCS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCisrCisrCS8qIENV IGRpZSAqLworKwkudWxlYjEyOAkxCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICov CisrCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLyogVXNlIEMr KyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNpbmcgRFdfQVRfbmFtZSAiIi4gICovCisrCS5ieXRl CQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMrKykgLSAgKi8KKysJLjRieXRlCQltYWluCQkJLyog RFdfQVRfbG93X3BjICovCisrCS5ieXRlCQltYWluX2xlbmd0aAkJLyogRFdfQVRfaGlnaF9wYyAq LworKworKy5MYXJyYXlfdHlwZToKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2Fy cmF5X3R5cGUgKi8KKysJLjRieXRlCQkuTGNoYXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90 eXBlICovCisrCisrCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90eXBl ICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwor KwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCisrCS40Ynl0ZQkJLkxsZW5fdmFy LS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCisrCS5ieXRlCQkwCQkJLyogRW5k IG9mIGNoaWxkcmVuIG9mIGRpZSAqLworKworKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZl cmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZhcmlhYmxlLiAgKi8KKysuTGFycmF5Yl90eXBlOgor KwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLworKwkuNGJ5dGUJ CS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KKysKKysJLnVsZWIxMjgJ MwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVpbnRf dHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkwCQkJLyogRFdfQVRf bG93ZXJfYm91bmQgKi8KKysJLjRieXRlCQkuTGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FU X3VwcGVyX2JvdW5kICovCisrCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAq LworKworKwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyByZWdpc3Rlci4gICov CisrLkxhcnJheXJlZ190eXBlOgorKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJy YXlfdHlwZSAqLworKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5 cGUgKi8KKysKKysJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUg d2l0aCBibG9jayAqLworKwkuNGJ5dGUJCS5MdWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FU X3R5cGUgKi8KKysJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLworKwkuYnl0ZQkJ MmYgLSAxZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCisrMToJLmJ5dGUJCTB4NTAJCQkvKiBE V19PUF9yZWcwICovCisrMjoKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGll ICovCisrCisrLkx1aW50X3R5cGU6CisrCS51bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19i YXNlX3R5cGUgKi8KKysJLjRieXRlCQkuTHVpbnRfc3RyCQkvKiBEV19BVF9uYW1lICovCisrCS5i eXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS5ieXRlCQk3CQkJLyogRFdfQVRfZW5j b2RpbmcgKi8KKysKKysuTGNoYXJfdHlwZToKKysJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjogRFdf VEFHX2Jhc2VfdHlwZSAqLworKwkuNGJ5dGUJCS5MY2hhcl9zdHIJCS8qIERXX0FUX25hbWUgKi8K KysJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmJ5dGUJCTYJCQkvKiBEV19B VF9lbmNvZGluZyAqLworKworKy5MbGVuX3ZhcjoKKysJLnVsZWIxMjgJNQkJCS8qIEFiYnJldjog RFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwgKi8KKysJLmJ5dGUJCTEJCQkvKiBEV19BVF9hcnRp ZmljaWFsICovCisrCS40Ynl0ZQkJLkx1aW50X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlw ZSAqLworKwkuNGJ5dGUJCS5MbGVuX2xvY2xpc3QtLkxsb2NsaXN0CS8qIERXX0FUX2xvY2F0aW9u ICovCisrCisrCS8qIG9wdGltaXplZC1vdXQgdmFyaWFibGUgZm9yIGJfc3RyaW5nLiAgKi8KKysu TGxlbmJfdmFyOgorKwkudWxlYjEyOAk3CQkJLyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgYXJ0 aWZpY2lhbCBubyBEV19BVF9sb2NhdGlvbiAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2FydGlm aWNpYWwgKi8KKysJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBl ICovCisrCisrCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JN X3N0cmluZyAqLworKwkuc3RyaW5nCQkiYV9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCisrCS40 Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KKysJLmJ5dGUJ CTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAqLworKzE6CS5ieXRlCQkzCQkJLyogICBEV19P UF9hZGRyICovCisrCS40Ynl0ZQkJdmFyZGF0YQkJCS8qICAgPGFkZHI+ICovCisrMjoKKysKKysJ LyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVmZXJlbmNpbmcgYW4gb3B0aW1pemVkLW91dCB2YXJp YWJsZS4gICovCisrCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19G T1JNX3N0cmluZyAqLworKwkuc3RyaW5nCQkiYl9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCisr CS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS5i eXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KKysxOgkuYnl0ZQkJMwkJCS8qICAg RFdfT1BfYWRkciAqLworKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLworKzI6Cisr CisrCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlzIHJlZmVyZW5jaW5nIHJlZ2lzdGVyLiAgKi8KKysJ LnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICov CisrCS5zdHJpbmcJCSJyZWdfc3RyaW5nIgkJLyogRFdfQVRfbmFtZSAqLworKwkuNGJ5dGUJCS5M YXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdpbiAvKiBEV19BVF90eXBlICovCisrCS5ieXRlCQkyZiAt IDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KKysxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRk ciAqLworKwkuNGJ5dGUJCXZhcmRhdGEJCQkvKiAgIDxhZGRyPiAqLworKzI6CisrCisrCS5ieXRl CQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCisrLkxjdTFfZW5kOgorKworKwkuc2Vj dGlvbgkuZGVidWdfbG9jCisrLkxsb2NsaXN0OgorKy5MbGVuX2xvY2xpc3Q6CisrCS40Ynl0ZQkw CQkJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MKKysJLjRieXRlCW1haW5fbGVuZ3RoCQkj IExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MKKysJLnZhbHVlCTJmLTFmCSMgTG9jYXRpb24gZXhw cmVzc2lvbiBzaXplCisrMToJLmJ5dGUJMHgzMwkjIERXX09QX2xpdDMKKysJLmJ5dGUJMHg5Zgkj IERXX09QX3N0YWNrX3ZhbHVlCisrMjoKKysJLnF1YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0ZXJt aW5hdG9yIGJlZ2luICgqLkxMU1QyKQorKwkucXVhZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRlcm1p bmF0b3IgZW5kICgqLkxMU1QyKQorKworKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2CisrLkxkZWJ1 Z19hYmJyZXYwOgorKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJ MHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KKysJLmJ5dGUJCTB4MQkJCS8qIGhhc19j aGlsZHJlbiAqLworKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KKysJLnVs ZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJwICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19B VF9sYW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51 bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdf Rk9STV9hZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS51 bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJ MgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MQkJCS8qIFRBRzogRFdfVEFHX2Fy cmF5X3R5cGUgKi8KKysJLmJ5dGUJCTB4MQkJCS8qIERXX2NoaWxkcmVuX3llcyAqLworKwkudWxl YjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9S TV9yZWY0ICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCisrCisrCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLwor KwkudWxlYjEyOAkweDIxCQkJLyogRFdfVEFHX3N1YnJhbmdlX3R5cGUgKi8KKysJLmJ5dGUJCTB4 MAkJCS8qIG5vIGNoaWxkcmVuICovCisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICov CisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjgJMHgyMgkJ CS8qIERXX0FUX2xvd2VyX2JvdW5kICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0 YTEgKi8KKysJLnVsZWIxMjgJMHgyZgkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCisrCS51bGVi MTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIxMjgJNAkJ CS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBl ICovCisrCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkv KiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4ZQkJCS8qIERXX0ZPUk1fc3RycCAqLworKwku dWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8K KysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxl YjEyOAk1CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192 YXJpYWJsZSAqLworKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJ MHgzNAkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KKysJLnVsZWIxMjgJMHgwYwkJCS8qIERXX0ZP Uk1fZmxhZyAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEy OAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MDIJCQkvKiBEV19BVF9s b2NhdGlvbiAqLworKwkudWxlYjEyOAkweDA2CQkJLyogRFdfRk9STV9kYXRhNCAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKworKwkudWxlYjEyOAk2CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgzNAkJ CS8qIERXX1RBR192YXJpYWJsZSAqLworKwkuYnl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4gKi8K KysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBE V19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwku dWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MgkJCS8qIERX X0FUX2xvY2F0aW9uICovCisrCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCisrCisrCS51bGViMTI4CTcJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkw eDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCisrCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJl biAqLworKwkudWxlYjEyOAkweDM0CQkJLyogRFdfQVRfYXJ0aWZpY2lhbCAqLworKwkudWxlYjEy OAkweDBjCQkJLyogRFdfRk9STV9mbGFnICovCisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90 eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KKysJLmJ5dGUJCTB4 MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysK KysJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MjEJCQkvKiBE V19UQUdfc3VicmFuZ2VfdHlwZSB3aXRoIGJsb2NrICovCisrCS5ieXRlCQkweDAJCQkvKiBubyBj aGlsZHJlbiAqLworKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEy OAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCisrCS51bGViMTI4CTB4MjIJCQkvKiBEV19BVF9s b3dlcl9ib3VuZCAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS51 bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAqLworKwkudWxlYjEyOAkweGEJCQkv KiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLworKworKy8qIFN0cmluZyB0YWJsZSAqLworKwkuc2VjdGlvbiAuZGVidWdfc3RyCisr Lkxwcm9kdWNlcjoKKysJLnN0cmluZwkJIkdOVSBDIDMuMy4zIgorKy5MY2hhcl9zdHI6CisrCS5z dHJpbmcJCSJjaGFyIgorKy5MdWludF9zdHI6CisrCS5zdHJpbmcJCSJ1bnNpZ25lZCBpbnQiCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJv dW5kLWxvY2xpc3QuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCTIwMTQtMDYtMTYgMjM6MzA6MzAu MTExOTQwNDg3ICswMjAwCitAQCAtMCwwICsxLDYzIEBACisrIyBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrCisrIyBUZXN0IHByaW50aW5nIHZhcmlhYmxlIHdpdGggZHluYW1pYyBib3VuZHMgd2hp Y2ggcmVmZXJlbmNlIGEgZGlmZmVyZW50CisrIyAoYXJ0aWZpY2lhbCBpbiB0aGUgR0NDIGNhc2Up IHZhcmlhYmxlIGNvbnRhaW5pbmcgbG9jbGlzdCBhcyBpdHMgbG9jYXRpb24uCisrIyBUaGlzIHRl c3RjYXNlIHVzZXMgdmFsdWUgKG5vdCBhZGRyZXNzKSBvZiB0aGUgcmVmZXJlbmNlZCB2YXJpYWJs ZToKKysjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NDM3NjIK KysKKysjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0 IERXQVJGLTIgYW5kIHVzZSBnYXMuCisrIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtl bHkgdGFyZ2V0cy4KKytpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQorKyAgICAmJiAhW2lzdGFy Z2V0ICotKi1nbnUqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQorKyAgICAmJiAhW2lz dGFyZ2V0ICotKi1vcGVuYnNkKl0KKysgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KKysg ICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7CisrICAgIHJldHVybiAwCisrfQor KworK3NldCB0ZXN0ZmlsZSBkdzItYm91bmQtbG9jbGlzdAorK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9IFtsaXN0ICR7dGVzdGZpbGV9LlMgbWFp bi5jXSB7fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKysjIFZlcmlmeSBpdCBiZWhhdmVz IGF0IGxlYXN0IGFzIGFuIHVuYm91bmQgYXJyYXkgd2l0aG91dCBpbmZlcmlvci4KKysKKytzZXQg dGVzdCAicCBhX3N0cmluZyIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAg IC1yZSAiID0gMHhcWzAtOWEtZlxdKyBcInNlZW5ub3RzZWVuXCJcclxuJGdkYl9wcm9tcHQgJCIg eworKwlwYXNzICR0ZXN0CisrICAgIH0KKysgICAgLXJlICJObyByZWdpc3RlcnNcXC5cclxuJGdk Yl9wcm9tcHQgJCIgeworKwlrZmFpbCAidmxhcmVncmVzc2lvbiIgJHRlc3QKKysgICAgfQorK30K KysKKytnZGJfdGVzdCAicHR5cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcW3ZhcmlhYmxlIGxl bmd0aFxdfQorKworKyMgTm90IHJ1bnRvX21haW4gYXMgZHcyLWJvdW5kLWxvY2xpc3QuUyBoYW5k bGVzIG9ubHkgdGhlIGZpcnN0IGJ5dGUgb2YgbWFpbi4KKytpZiAhW3J1bnRvICIqbWFpbiJdIHsK KysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl90ZXN0ICJwIGFfc3RyaW5nIiB7ID0gInNlZW4i fQorK2dkYl90ZXN0ICJwdHlwZSBhX3N0cmluZyIge3R5cGUgPSBjaGFyIFxbNFxdfQorKworK2dk Yl90ZXN0ICJwIGJfc3RyaW5nIiB7ID0gKDB4WzAtOWEtZl0rICk/InNlZW5ub3RzZWVuIn0KKytn ZGJfdGVzdCAicHR5cGUgYl9zdHJpbmciIHt0eXBlID0gY2hhciBcW1xdfQorKworKyMgVGhlIHJl Z2lzdGVyIGNvbnRhaW5zIHVucHJlZGljdGFibGUgdmFsdWUgLSB0aGUgYXJyYXkgc2l6ZS4KKytn ZGJfdGVzdCAicHR5cGUgcmVnX3N0cmluZyIge3R5cGUgPSBjaGFyIFxbLT9bMC05XStcXX0KK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3Ry aXBwZWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTExOTQwNDg3ICswMjAw CitAQCAtMCwwICsxLDQyIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIAorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywKKysgICBVU0EuICAqLworKworKworKy8qIFRoZSBmdW5jdGlvbiBgZnVuYzEnIHRyYWNl ZCBpbnRvIG11c3QgaGF2ZSBkZWJ1ZyBpbmZvIG9uIG9mZnNldCA+IDA7CisrICAgKERXX1VOU05E IChhdHRyKSkuICBUaGlzIGlzIHRoZSByZWFzb24gb2YgYGZ1bmMwJyBleGlzdGVuY2UuICAqLwor KworK3ZvaWQKKytmdW5jMChpbnQgYSwgaW50IGIpCisreworK30KKysKKysvKiBgZnVuYzEnIGJl aW5nIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBzb21lIGFyZ3VtZW50cyB0byBkdW1wLiAgKi8KKysK Kyt2b2lkCisrZnVuYzEoaW50IGEsIGludCBiKQorK3sKKysgIGZ1bmMwIChhLGIpOworK30KKysK KytpbnQKKyttYWluKHZvaWQpCisreworKyAgZnVuYzEgKDEsIDIpOworKyAgcmV0dXJuIDA7Cisr fQorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1zdHJpcHBlZC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTExOTQw NDg3ICswMjAwCitAQCAtMCwwICsxLDc5IEBACisrIyBDb3B5cmlnaHQgMjAwNiBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIyAK KysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx LTEzMDcsIFVTQS4KKysKKysjIE1pbmltYWwgRFdBUkYtMiB1bml0IHRlc3QKKysKKysjIFRoaXMg dGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIuCisr IyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KKytpZiB7IVtpc3Rh cmdldCAqLSotbGludXgqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQorKyAgICAmJiAh W2lzdGFyZ2V0ICotKi1lbGYqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KKysg ICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KKysgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBj LSotZWFiaSpdfSB7CisrICAgIHJldHVybiAwICAKKyt9CisrCisrc2V0IHRlc3RmaWxlICJkdzIt c3RyaXBwZWQiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0ueAorKworK3JlbW90ZV9leGVjIGJ1aWxkICJybSAt ZiAke2JpbmZpbGV9IgorKworKyMgZ2V0IHRoZSB2YWx1ZSBvZiBnY2NfY29tcGlsZWQKKytpZiBb Z2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisr IyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIGdjYyBhcyB3ZSB1c2UgYWRkaXRpb25hbF9m bGFncz1GSVhNRQorK2lmIHskZ2NjX2NvbXBpbGVkID09IDB9IHsKKysgICAgcmV0dXJuIDAKKyt9 CisrCisraWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0i ICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1nZ2RiM31d ICE9ICIiIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrcmVtb3RlX2V4ZWMgYnVpbGQgIm9i amNvcHkgLVIgLmRlYnVnX2xvYyAke2JpbmZpbGV9IgorK3NldCBzdHJpcF9vdXRwdXQgW3JlbW90 ZV9leGVjIGJ1aWxkICJvYmpkdW1wIC1oICR7YmluZmlsZX0iXQorKworK3NldCB0ZXN0ICJzdHJp cHBpbmcgdGVzdCBmaWxlIHByZXNlcnZhdGlvbiIKKytpZiBbIHJlZ2V4cCAiLmRlYnVnX2luZm8g IiAkc3RyaXBfb3V0cHV0XSAgeworKyAgICBwYXNzICIkdGVzdCAoLmRlYnVnX2luZm8gcHJlc2Vy dmVkKSIKKyt9IGVsc2UgeworKyAgICBmYWlsICIkdGVzdCAoLmRlYnVnX2luZm8gZ290IGFsc28g c3RyaXBwZWQpIgorK30KKysKKytzZXQgdGVzdCAic3RyaXBwaW5nIHRlc3QgZmlsZSBmdW5jdGlv bmFsaXR5IgorK2lmIFsgcmVnZXhwICIuZGVidWdfbG9jICIgJHN0cmlwX291dHB1dF0gIHsKKysg ICAgZmFpbCAiJHRlc3QgKC5kZWJ1Z19sb2Mgc3RpbGwgcHJlc2VudCkiCisrfSBlbHNlIHsKKysg ICAgcGFzcyAiJHRlc3QgKC5kZWJ1Z19sb2Mgc3RyaXBwZWQpIgorK30KKysKKytnZGJfZXhpdAor K2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9s b2FkICR7YmluZmlsZX0KKysKKysjIEZvciBDIHByb2dyYW1zLCAic3RhcnQiIHNob3VsZCBzdG9w IGluIG1haW4oKS4KKysKKytnZGJfdGVzdCAic3RhcnQiIFwKKysgICAgICAgICAiLiptYWluIFxc KFxcKSBhdCAuKiIgXAorKyAgICAgICAgICJzdGFydCIKKytnZGJfdGVzdCAic3RlcCIgXAorKyAg ICAgICAgICJmdW5jLiogXFwoLipcXCkgYXQgLioiIFwKKysgICAgICAgICAic3RlcCIKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0 LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMJ MjAxNC0wNi0xNiAyMzozMDozMC4xMTI5NDA0ODggKzAyMDAKK0BAIC0wLDAgKzEsODMgQEAKKysv KiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAg IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysK KysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysvKiBEZWJ1ZyBpbmZvcm1h dGlvbiAqLworKworKwkuc2VjdGlvbiAuZGVidWdfaW5mbworKy5MY3UxX2JlZ2luOgorKwkvKiBD VSBoZWFkZXIgKi8KKysJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGgg b2YgQ29tcGlsYXRpb24gVW5pdCAqLworKy5MY3UxX3N0YXJ0OgorKwkuMmJ5dGUJMgkJCQkvKiBE V0FSRiBWZXJzaW9uICovCisrCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50 byBhYmJyZXYgc2VjdGlvbiAqLworKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLworKwor KwkvKiBDVSBkaWUgKi8KKysJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxl X3VuaXQgKi8KKysJLmFzY2lpCSJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmNcMCIJ LyogRFdfQVRfbmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDQuMy4yXDAiCQkJLyogRFdfQVRfcHJv ZHVjZXIgKi8KKysJLmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgKi8KKysKKysuTHR5 cGVfdWNoYXI6CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19zdHJ1Y3R1cmVfdHlw ZSAqLworKwkuYXNjaWkJCSJzb21lX3N0cnVjdFwwIgkJLyogRFdfQVRfbmFtZSAqLworKworKwku dWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfbWVtYmVyICovCisrCS5hc2NpaQkJImZpZWxk XDAiCQkvKiBEV19BVF9uYW1lICovCisrCS5ieXRlCQkwCQkJLyogRFdfQVRfZGF0YV9tZW1iZXJf bG9jYXRpb24gKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2Ygc29tZV9z dHJ1Y3QgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KKysK KysuTGN1MV9lbmQ6CisrCisrLyogQWJicmV2IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19h YmJyZXYKKysuTGFiYnJldjFfYmVnaW46CisrCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAq LworKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJ MQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICov CisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJ CQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJLyog QWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJCS8qIERXX1RBR19zdHJ1Y3R1cmVfdHlw ZSAqLworKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkv KiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCisrCisrCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkw eDBkCQkJLyogRFdfVEFHX21lbWJlciAqLworKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAq LworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8q IERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MzgJCQkvKiBEV19BVF9kYXRhX21lbWJl cl9sb2NhdGlvbiAqLworKwkudWxlYjEyOAkweDBiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVj dC1tZW1iZXItZGF0YS1sb2NhdGlvbi5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTI5NDA0ODgg KzAyMDAKK0BAIC0wLDAgKzEsMzcgQEAKKysjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysj IFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJG LTIgYW5kIHVzZSBnYXMuCisrIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFy Z2V0cy4KKytpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1nbnUqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQorKyAgICAmJiAhW2lzdGFyZ2V0 ICotKi1vcGVuYnNkKl0KKysgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KKysgICAgJiYg IVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7CisrICAgIHJldHVybiAwICAKKyt9CisrCisr c2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uIgorK3NldCBzcmNm aWxlICR7dGVzdGZpbGV9LlMKKytzZXQgYmluZmlsZSAke3Rlc3RmaWxlfS54CisrCisraWYgIHsg W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICJbc3RhbmRhcmRf b3V0cHV0X2ZpbGUgJHtiaW5maWxlfV0iIG9iamVjdCB7bm9kZWJ1Z31dICE9ICIiIH0geworKyAg ICByZXR1cm4gLTEKKyt9CisrCisrY2xlYW5fcmVzdGFydCAkYmluZmlsZQorKworK2dkYl90ZXN0 ICJwdHlwZSBzdHJ1Y3Qgc29tZV9zdHJ1Y3QiICJ0eXBlID0gc3RydWN0IHNvbWVfc3RydWN0IHtc W1xyXG4gXHRcXSp2b2lkIGZpZWxkO1xbXHJcbiBcdFxdKn0iCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5cGUuUwor PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1zdWJyYW5nZS1uby10eXBlLlMJMjAxNC0wNi0xNiAyMzozMDozMC4xMTI5NDA0ODggKzAyMDAK K0BAIC0wLDAgKzEsMTIxIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CisrCisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8KKysKKysJLnNlY3Rpb24JLmRhdGEKKyt2YXJk YXRhOgorKwkucmVwdAkJMTI5CisrCS5hc2NpaQkJIngiCisrCS5lbmRyCisrCS5hc2NpaQkJIlVO U0VFTlwwIgorKworKwkuc2VjdGlvbgkuZGVidWdfaW5mbworKy5MY3UxX2JlZ2luOgorKwkuNGJ5 dGUJCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0 ICovCisrLkxjdTFfc3RhcnQ6CisrCS4yYnl0ZQkJMgkJCS8qIERXQVJGIHZlcnNpb24gbnVtYmVy ICovCisrCS40Ynl0ZQkJLkxkZWJ1Z19hYmJyZXYwCQkvKiBPZmZzZXQgSW50byBBYmJyZXYuIFNl Y3Rpb24gKi8KKysJLmJ5dGUJCTQJCQkvKiBQb2ludGVyIFNpemUgKGluIGJ5dGVzKSAqLworKwor KwkvKiBDVSBkaWUgKi8KKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBpbGVf dW5pdCAqLworKwkuYXNjaWkJCSJHTlUgQyAzLjMuM1wwIgkJLyogRFdfQVRfcHJvZHVjZXIgKi8K KysJLmJ5dGUJCTIJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgLSAgKi8KKysKKysuTGFycmF5X3R5 cGU6CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19hcnJheV90eXBlICovCisrCS40 Ynl0ZQkJLkxjaGFyX3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLworKworKwkudWxl YjEyOAk4CQkJLyogQWJicmV2OiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0IERXX0FUX3R5 cGUgKi8KKysJLmJ5dGUJCTAJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLworKwkuYnl0ZQkJMTI4 CQkJLyogRFdfQVRfdXBwZXJfYm91bmQgKi8KKysKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hp bGRyZW4gb2YgZGllICovCisrCisrLkxjaGFyX3R5cGU6CisrCS51bGViMTI4CTQJCQkvKiBBYmJy ZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmFzY2lpCQkiY2hhclwwIgkJLyogRFdfQVRfbmFt ZSAqLworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkuYnl0ZQkJNgkJCS8q IERXX0FUX2VuY29kaW5nICovCisrCisrCS51bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR192 YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLworKwkuYXNjaWkJCSJub3R5cGVfc3RyaW5nXDAiCS8q IERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTGFycmF5X3R5cGUtLkxjdTFfYmVnaW4gLyogRFdf QVRfdHlwZSAqLworKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX2xvY2F0aW9uICovCisrMToJ LmJ5dGUJCTMJCQkvKiAgIERXX09QX2FkZHIgKi8KKysJLjRieXRlCQl2YXJkYXRhCQkJLyogICA8 YWRkcj4gKi8KKysyOgorKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAq LworKy5MY3UxX2VuZDoKKysKKysJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgorKy5MZGVidWdfYWJi cmV2MDoKKysJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MTEJ CQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCisrCS5ieXRlCQkweDEJCQkvKiBoYXNfY2hpbGRy ZW4gKi8KKysJLnVsZWIxMjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCisrCS51bGViMTI4 CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9s YW5ndWFnZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRl CQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov CisrCisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEJCQkv KiBUQUc6IERXX1RBR19hcnJheV90eXBlICovCisrCS5ieXRlCQkweDEJCQkvKiBEV19jaGlsZHJl bl95ZXMgKi8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJ MHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAk0CQkJLyog QWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8K KysJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJCS8qIERX X0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KKysJLnVs ZWIxMjgJMHhiCQkJLyogRFdfQVRfYnl0ZV9zaXplICovCisrCS51bGViMTI4CTB4YgkJCS8qIERX X0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgzZQkJCS8qIERXX0FUX2VuY29kaW5nICovCisr CS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysKKysJLnVsZWIx MjgJNgkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MzQJCQkvKiBEV19UQUdfdmFy aWFibGUgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIG5vX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4 MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcg Ki8KKysJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KKysJLnVsZWIxMjgJMHgxMwkJ CS8qIERXX0ZPUk1fcmVmNCAqLworKwkudWxlYjEyOAkweDIJCQkvKiBEV19BVF9sb2NhdGlvbiAq LworKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkJMHgwCQkJ LyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwku dWxlYjEyOAk4CQkJLyogQWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyMQkJCS8qIERXX1RB R19zdWJyYW5nZV90eXBlIHdpdGhvdXQgRFdfQVRfdHlwZSAqLworKwkuYnl0ZQkJMHgwCQkJLyog bm8gY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICov CisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgyZgkJ CS8qIERXX0FUX3VwcGVyX2JvdW5kICovCisrCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0 YTEgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KKysKKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFu Z2Utbm8tdHlwZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5leHAJMjAxNC0wNi0xNiAyMzozMDoz MC4xMTI5NDA0ODggKzAyMDAKK0BAIC0wLDAgKzEsMzkgQEAKKysjIENvcHlyaWdodCAyMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKytsb2FkX2xpYiBkd2FyZi5leHAKKysKKysjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0 LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODA2OTIwCisrIyByZWFkX3N1YnJhbmdlX3R5cGUgPFRZUEVf Q09ERSAoYmFzZV90eXBlKSA9PSBUWVBFX0NPREVfVk9JRD4gcmVpbml0aWFsaXphdGlvbgorKyMg b2YgQkFTRV9UWVBFIHdhcyBkb25lIHRvbyBsYXRlLCBpdCBhZmZlY3RzIERXX1RBR19zdWJyYW5n ZV90eXBlIHdpdGhvdXQKKysjIHNwZWNpZmllZCBEV19BVF90eXBlLCBwcmVzZW50IG9ubHkgaW4g WExGIHByb2R1Y2VkIGNvZGUuCisrCisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRh cmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgorK2lmIHshW2R3YXJmMl9z dXBwb3J0XX0geworKyAgICByZXR1cm4gMCAgCisrfQorKworK3NldCB0ZXN0ZmlsZSBkdzItc3Vi cmFuZ2Utbm8tdHlwZQorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKKytzZXQgZXhlY3V0YWJs ZSAke3Rlc3RmaWxlfS54Cisrc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7ZXhl Y3V0YWJsZX1dCisrCisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIG9iamVjdCB7fV0gIT0gIiIgfSB7CisrICAgIHJldHVybiAt MQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrCisrZ2RiX3Rlc3QgInB0eXBl IG5vdHlwZV9zdHJpbmciIHt0eXBlID0gY2hhciBcWzEyOVxdfQorK2dkYl90ZXN0ICJwIG5vdHlw ZV9zdHJpbmciICIgPSAneCcgPHJlcGVhdHMgMTI5IHRpbWVzPiIKK0luZGV4OiBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2Fy Zi1zdHJpZGUuZXhwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTEyOTQwNDg4ICswMjAwCitAQCAtMCww ICsxLDQyIEBACisrIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIyAKKysjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIyAKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAorKwor KyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPi4KKysKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1 aXRlLiAgQXJyYXkgZWxlbWVudCBzdHJpZGUgbXVzdCBub3QgYmUKKysjIHNwZWNpZmllZCBpbiB0 aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJlciBvZiBieXRlcyBpbnN0ZWFkLgor KyMgT3JpZ2luYWwgcHJvYmxlbToKKysjIChnZGIpIHAgYzQwcHQoMSkKKysjICQxID0gJzAtaGVs bG8nLCAnICcgPHJlcGVhdHMgMzMgdGltZXM+CisrIyAoZ2RiKSBwIGM0MHB0KDIpCisrIyB3YXJu aW5nOiBGb3J0cmFuIGFycmF5IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5IHRoZSBlbGVtZW50IHNp emUKKysKKytzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCisrc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uZjkwCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjkwfV0gfSB7CisrICAgIHJldHVybiAtMQorK30K KysKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVu IHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiICIuKmJyZWFrLWhlcmUuKiIKKytnZGJfdGVzdCAicCBj NDBwdCgxKSIgIiA9ICcwLWhlbGxvLioiCisrZ2RiX3Rlc3QgInAgYzQwcHQoMikiICIgPSAnMS1o ZWxsby4qIgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9kd2FyZi1zdHJpZGUuZjkwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAJMjAxNC0wNi0xNiAyMzozMDoz MC4xMTI5NDA0ODggKzAyMDAKK0BAIC0wLDAgKzEsNDAgQEAKKyshIENvcHlyaWdodCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysh IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgRmlsZSB3cml0dGVuIGJ5IEFsYW4gTWF0c3Vva2Eu CisrCisrcHJvZ3JhbSByZXBybworKworKyAgdHlwZSBzbWFsbF9zdHJpZGUKKysgICAgIGNoYXJh Y3Rlcio0MCBsb25nX3N0cmluZworKyAgICAgaW50ZWdlciAgICAgIHNtYWxsX3BhZAorKyAgZW5k IHR5cGUgc21hbGxfc3RyaWRlCisrCisrICB0eXBlKHNtYWxsX3N0cmlkZSksIGRpbWVuc2lvbiAo MjApLCB0YXJnZXQgOjogdW5wbGVhc2FudAorKyAgY2hhcmFjdGVyKjQwLCBwb2ludGVyLCBkaW1l bnNpb24oOik6OiBjNDBwdAorKworKyAgaW50ZWdlciBpCisrCisrICBkbyBpID0gMCwxOQorKyAg ICAgdW5wbGVhc2FudChpKzEpJXNtYWxsX3BhZCA9IGkrMQorKyAgICAgdW5wbGVhc2FudChpKzEp JWxvbmdfc3RyaW5nID0gY2hhciAoaWNoYXIoJzAnKSArIGkpIC8vICctaGVsbG8nCisrICBlbmQg ZG8KKysKKysgIGM0MHB0ID0+IHVucGxlYXNhbnQlbG9uZ19zdHJpbmcKKysKKysgIHByaW50ICos IGM0MHB0ICAhIGJyZWFrLWhlcmUKKysKKytlbmQgcHJvZ3JhbSByZXBybworSW5kZXg6IGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZy YW1lLXN0dWIuZjkwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUtc3R1Yi5mOTAJMjAxNC0wNi0xNiAyMzoz MDozMC4xMTM5NDA0ODggKzAyMDAKK0BAIC0wLDAgKzEsMjQgQEAKKyshIENvcHlyaWdodCAyMDEw IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK KyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNv dXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KKyshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBK YWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKyshIE1vZGlmaWVkIGZvciB0aGUgR0RC IHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4K KysKKytzdWJyb3V0aW5lIGJhcgorKyAgcmVhbCA6OiBkdW1teQorKyAgZHVtbXkgPSAxCisrZW5k IHN1YnJvdXRpbmUgYmFyCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUu ZXhwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTEzOTQwNDg4ICswMjAwCitAQCAtMCwwICsxLDM3IEBA CisrIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIyAKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIyAK KysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0 byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNl IC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAorKworK3NldCB0ZXN0 ZmlsZSAiZHluYW1pYy1vdGhlci1mcmFtZSIKKytzZXQgc3JjZmlsZTEgJHt0ZXN0ZmlsZX0uZjkw Cisrc2V0IHNyY2ZpbGUyICR7dGVzdGZpbGV9LXN0dWIuZjkwCisrc2V0IG9iamZpbGUyIFtzdGFu ZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfS1zdHViLm9dCisrc2V0IGV4ZWN1dGFibGUgJHt0 ZXN0ZmlsZX0KKytzZXQgYmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtleGVjdXRhYmxl fV0KKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGUy fSIgIiR7b2JqZmlsZTJ9IiBvYmplY3Qge2Y5MH1dICE9ICIiCisrICAgICB8fCBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlMX0gJHtvYmpmaWxlMn0iICIke2JpbmZp bGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTB9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlMX0gb3IgJHtzcmNmaWxlMn0iCisrICAgIHJldHVybiAt MQorK30KKysKKytjbGVhbl9yZXN0YXJ0ICR7ZXhlY3V0YWJsZX0KKysKKytpZiAhW3J1bnRvIGJh cl9dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBiYXJfIgorKyAgICBjb250 aW51ZQorK30KKysKKytnZGJfdGVzdCAiYnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQorSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LW90aGVyLWZyYW1lLmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAkyMDE0LTA2LTE2IDIzOjMw OjMwLjExMzk0MDQ4OCArMDIwMAorQEAgLTAsMCArMSwzNiBAQAorKyEgQ29weXJpZ2h0IDIwMTAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor KyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291 cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIg dGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgor KworK3N1YnJvdXRpbmUgZm9vIChzdHJpbmcpCisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGlu ZSBiYXIKKysgICAgZW5kIHN1YnJvdXRpbmUKKysgIGVuZCBpbnRlcmZhY2UKKysgIGNoYXJhY3Rl ciBzdHJpbmcqKCopCisrICBjYWxsIGJhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ISBzdG9wLWhlcmUKKytlbmQgc3Vicm91dGluZSBmb28KKytwcm9ncmFtIHRlc3QKKysgIGludGVy ZmFjZQorKyAgICBzdWJyb3V0aW5lIGZvbyAoc3RyaW5nKQorKyAgICBjaGFyYWN0ZXIgc3RyaW5n KigqKQorKyAgICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgY2FsbCBmb28g KCdoZWxsbycpCisrZW5kCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTQtMDYtMTYgMjM6Mzc6NDUu NTY4MzYyNTYzICswMjAwCitAQCAtMCwwICsxLDE1MSBAQAorKyMgQ29weXJpZ2h0IDIwMDcgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgorKyMgCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysj IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBN QSAwMjExMS0xMzA3LCBVU0EuICAKKysKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4g S3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrIyBUaGlzIGZpbGUg aXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0IGNvbnRhaW5zIHRlc3RzIGZvciBkeW5h bWljYWxseQorKyMgYWxsb2NhdGVkIEZvcnRyYW4gYXJyYXlzLgorKyMgSXQgZGVwZW5kcyBvbiB0 aGUgR0NDIGR5bmFtaWMgRm9ydHJhbiBhcnJheXMgRFdBUkYgc3VwcG9ydDoKKysjIAlodHRwOi8v Z2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIyMjQ0CisrCisrc2V0IHRlc3Rm aWxlICJkeW5hbWljIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorK3NldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKytpZiAgeyBbZ2RiX2NvbXBpbGUg IiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUg e2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29t cGlsZSAke3NyY2ZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJf c3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAk e2JpbmZpbGV9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNv dWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtaW5pdCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtaW5pdCIKKytnZGJfdGVzdCAicCB2YXJ4IiAiXFwk XFswLTlcXSogPSA8bm90IGFsbG9jYXRlZD4iICJwIHZhcnggdW5hbGxvY2F0ZWQiCisrZ2RiX3Rl c3QgInB0eXBlIHZhcngiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmFyeCB1bmFs bG9jYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICJubyBzdWNoIHZlY3RvciBlbGVt ZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgInAgdmFyeCgxLDUsMTcpIHVuYWxsb2NhdGVkIgor K2dkYl90ZXN0ICJwIHZhcngoMSw1LDE3KT0xIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNh dXNlIG5vdCBhbGxvY2F0ZWQiICJwIHZhcngoMSw1LDE3KT0xIHVuYWxsb2NhdGVkIgorK2dkYl90 ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ug bm90IGFsbG9jYXRlZCIgInB0eXBlIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKKysKKytnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRlZCIKKysjICQxID0gKCggKCAwLCAw LCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAsIDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAsIDAsIC4u LikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5k PTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxvY2F0ZWQiCisr IyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2Vz IDEuCisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5 NSkiICJwIGwgaWYgdmFyeCBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgInZhcngtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFyeC1maWxsZWQiCisrZ2RiX3Rlc3QgInAgdmFyeCgyLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9 IDYiCisrZ2RiX3Rlc3QgInAgdmFyeCgxLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9IDciCisrZ2Ri X3Rlc3QgInAgdmFyeCgyLCA2LCAxOCkiICJcXCRcWzAtOVxdKiA9IDgiCisrZ2RiX3Rlc3QgInAg dmFyeCg2LCAxNSwgMjgpIiAiXFwkXFswLTlcXSogPSA5IgorK2dkYl90ZXN0ICJwIHZhcnYiICJc XCRcWzAtOVxdKiA9IDxub3QgYXNzb2NpYXRlZD4iICJwIHZhcnYgdW5hc3NvY2lhdGVkIgorK2dk Yl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9IDxub3QgYXNzb2NpYXRlZD4iICJwdHlwZSB2YXJ2 IHVuYXNzb2NpYXRlZCIKKysKKytzZXQgdGVzdCAib3V0cHV0IHZhcngiCisrZ2RiX3Rlc3RfbXVs dGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIl5vdXRwdXQgdmFyeFxyXG5cWygpICw2Nzg5 LlxdKiRnZGJfcHJvbXB0ICQiIHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrfQorKworK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWFzc29jaWF0ZWQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInAgdmFy eCgzLCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDYiICJwIHZhcngoMywgNywgMTkpIHdpdGggdmFy diBhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwIHZhcnYoMywgNywgMTkpIiAiXFwkXFswLTlcXSog PSA2IiAicCB2YXJ2KDMsIDcsIDE5KSBhc3NvY2lhdGVkIgorKyMgSW50ZWwgRm9ydHJhbiBDb21w aWxlciAxMC4xLjAwOCB1c2VzIC0xIHRoZXJlLCBHQ0MgdXNlcyAxLgorK2dkYl90ZXN0ICJwIGwi ICJcXCRcWzAtOVxdKiA9IChcXC5UUlVFXFwufDQyOTQ5NjcyOTUpIiAicCBsIGlmIHZhcnYgYXNz b2NpYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFyeCIgInR5cGUgPSByZWFsKFxcKGtpbmQ9NFxc KXxcXCo0KSBcXCg2LDU6MTUsMTc6MjhcXCkiICJwdHlwZSB2YXJ4IHdpdGggdmFydiBhc3NvY2lh dGVkIgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCB1c2VzIHRoZSBwb2ludGVy IHR5cGUuCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9y ZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg2LDU6MTUsMTc6MjhcXClcXCk/IiAicHR5cGUgdmFy diBhc3NvY2lhdGVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2 YXJ2LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtZmlsbGVkIgor K2dkYl90ZXN0ICJwIHZhcngoMywgNywgMTkpIiAiXFwkXFswLTlcXSogPSAxMCIgInAgdmFyeCgz LCA3LCAxOSkgd2l0aCB2YXJ2IGZpbGxlZCIKKytnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIg IlxcJFxbMC05XF0qID0gMTAiICJwIHZhcnYoMywgNywgMTkpIGZpbGxlZCIKKysKKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1kZWFzc29jaWF0ZWQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWRlYXNzb2NpYXRlZCIKKysjIFRoZSBsYXR0ZXIg b25lIGlzIGZvciB0aGUgSW50ZWwgRm9ydHJhbiBDb21waWxlciAxMC4xLjAwOCBwb2ludGVyIHR5 cGUuCisrZ2RiX3Rlc3QgInAgdmFydiIgIlxcJFxbMC05XF0qID0gKDxub3QgYXNzb2NpYXRlZD58 LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2Ug dGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IGRlYXNzb2NpYXRlZCIKKytn ZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3Qg YWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0 IGlzIG5vdCBhc3NvY2lhdGVkLikiICJwdHlwZSB2YXJ2IGRlYXNzb2NpYXRlZCIKKytnZGJfdGVz dCAicCBsIiAiXFwkXFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ2IGRlYXNzb2Np YXRlZCIKKytnZGJfdGVzdCAicCB2YXJ2KDEsNSwxNykiICJubyBzdWNoIHZlY3RvciBlbGVtZW50 IGJlY2F1c2Ugbm90IGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnYoMSw1LDE3KSIg Im5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIKKysKKytnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1kZWFsbG9jYXRlZCJdCisrZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcngtZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInAg dmFyeCIgIlxcJFxbMC05XF0qID0gPG5vdCBhbGxvY2F0ZWQ+IiAicCB2YXJ4IGRlYWxsb2NhdGVk IgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBl IHZhcnggZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwuRkFM U0VcXC4iICJwIGwgaWYgdmFyeCBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDEsNSwx NykiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgInAgdmFy eCgxLDUsMTcpIGRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNykiICJu byBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgInB0eXBlIHZhcngo MSw1LDE3KSBkZWFsbG9jYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFyeS1wYXNzZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LXBh c3NlZCIKKysjICQxID0gKCggKCAxLCAxLCAxLCAxLCAxLCAxKSAoIDEsIDEsIDEsIDEsIDEsIDEp IC0tLSAsIDEpICkgKCAoIDEsIDEsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFyeSIg IlxcJFxbMC05XF0qID0gXFwoXFsoKTEsIC5cXSpcXCkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgInZhcnktZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAidmFyeS1maWxsZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcnkiICJ0eXBlID0gcmVhbChc XChraW5kPTRcXCl8XFwqNCkgXFwoMTAsMTBcXCkiCisrZ2RiX3Rlc3QgInAgdmFyeSgxLCAxKSIg IlxcJFxbMC05XF0qID0gOCIKKytnZGJfdGVzdCAicCB2YXJ5KDIsIDIpIiAiXFwkXFswLTlcXSog PSA5IgorK2dkYl90ZXN0ICJwIHZhcnkoMSwgMykiICJcXCRcWzAtOVxdKiA9IDEwIgorKyMgJDEg PSAoKCAoIDMsIDMsIDMsIDMsIDMsIDMpICggMywgMywgMywgMywgMywgMykgLS0tICwgMykgKSAo ICggMywgMywgLi4uKSAuLi4pIC4uLikKKytnZGJfdGVzdCAicCB2YXJ3IiAiXFwkXFswLTlcXSog PSBcXChcWygpMywgLlxdKlxcKSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFydy1hbG1vc3RmaWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 YXJ3LWFsbW9zdGZpbGxlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFydyIgInR5cGUgPSByZWFsKFxc KGtpbmQ9NFxcKXxcXCo0KSBcXCg1LDQsM1xcKSIKKytnZGJfdGVzdCAicCB2YXJ3KDMsMSwxKT0x IiAiXFwkXFswLTlcXSogPSAxIgorKyMgJDEgPSAoKCAoIDYsIDUsIDEsIDUsIDUsIDUpICggNSwg NSwgNSwgNSwgNSwgNSkgLS0tICwgNSkgKSAoICggNSwgNSwgLi4uKSAuLi4pIC4uLikKKytnZGJf dGVzdCAicCB2YXJ3IiAiXFwkXFswLTlcXSogPSBcXCggKlxcKCAqXFwoICo2LCAqNSwgKjEsXFso KTUsIC5cXSpcXCkiICJwIHZhcncgZmlsbGVkIgorKyMgInVwIiB3b3JrcyB3aXRoIEdDQyBidXQg b3RoZXIgRm9ydHJhbiBjb21waWxlcnMgbWF5IGNvcHkgdGhlIHZhbHVlcyBpbnRvIHRoZQorKyMg b3V0ZXIgZnVuY3Rpb24gb25seSBvbiB0aGUgZXhpdCBvZiB0aGUgaW5uZXIgZnVuY3Rpb24uCisr IyBXZSBuZWVkIGJvdGggdmFyaWFudHMgYXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoIHdlIG9wdGlv bmFsbHkgbWF5IHN0aWxsIGJlCisrIyBleGVjdXRpbmcgdGhlIGNhbGxlciBsaW5lIG9yIG5vdCBh ZnRlciBgZmluaXNoJy4KKytnZGJfdGVzdCAiZmluaXNoIiAiLiooY2FsbCBiYXIgXFwoeSwgeFxc KXxjYWxsIGZvbyBcXCh4LCB6XFwoMjo2LCA0OjcsIDY6OFxcKVxcKSkiCisrZ2RiX3Rlc3QgInAg eigyLDQsNSkiICJcXCRcWzAtOVxdKiA9IDMiCisrZ2RiX3Rlc3QgInAgeigyLDQsNikiICJcXCRc WzAtOVxdKiA9IDYiCisrZ2RiX3Rlc3QgInAgeigyLDQsNykiICJcXCRcWzAtOVxdKiA9IDUiCisr Z2RiX3Rlc3QgInAgeig0LDQsNikiICJcXCRcWzAtOVxdKiA9IDEiCisrCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnotYWxtb3N0ZmlsbGVkIl0KKytnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAidmFyei1hbG1vc3RmaWxsZWQiCisrIyBHQ0MgdXNlcyB0aGUgcG9p bnRlciB0eXBlIGhlcmUsIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggZG9lcyBub3Qu CisrZ2RiX3Rlc3QgInB0eXBlIHZhcnoiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxc KGtpbmQ9NFxcKXxcXCo0KSBcXChcXCpcXClcXCk/IgorKyMgSW50ZWwgRm9ydHJhbiBDb21waWxl ciAxMC4xLjAwOCBoYXMgYSBidWcgaGVyZSAtICgyOjExLDc6NykKKysjIGFzIGl0IHByb2R1Y2Vz IERXX0FUX2xvd2VyX2JvdW5kID09IERXX0FUX3VwcGVyX2JvdW5kID09IDcuCisrZ2RiX3Rlc3Qg InB0eXBlIHZhcnQiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9NFxcKXxc XCo0KSBcXCgyOjExLDc6XFwqXFwpXFwpPyIKKytnZGJfdGVzdCAicCB2YXJ6IiAiXFwkXFswLTlc XSogPSBcXChcXCkiCisrZ2RiX3Rlc3QgInAgdmFydCIgIlxcJFxbMC05XF0qID0gXFwoXFwpIgor K2dkYl90ZXN0ICJwIHZhcnooMykiICJcXCRcWzAtOVxdKiA9IDQiCisrIyBtYXBzIHRvIGZvbzo6 dmFyeSgxLDEpCisrZ2RiX3Rlc3QgInAgdmFydCgyLDcpIiAiXFwkXFswLTlcXSogPSA4IgorKyMg bWFwcyB0byBmb286OnZhcnkoMiwyKQorK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05 XF0qID0gOSIKKysjIG1hcHMgdG8gZm9vOjp2YXJ5KDEsMykKKytnZGJfdGVzdCAicCB2YXJ0KDIs OSkiICJcXCRcWzAtOVxdKiA9IDEwIgorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAx NDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAkyMDE0LTA2LTE2IDIz OjMwOjMwLjExMzk0MDQ4OCArMDIwMAorQEAgLTAsMCArMSw5OCBAQAorKyEgQ29weXJpZ2h0IDIw MDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysh IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4g c291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5 IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBH REIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ LgorKworK3N1YnJvdXRpbmUgYmF6CisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZh cnggKDosIDosIDopCisrICByZWFsLCBwb2ludGVyIDo6IHZhcnYgKDosIDosIDopCisrICByZWFs LCB0YXJnZXQgOjogdmFydSAoMSwgMiwgMykKKysgIGxvZ2ljYWwgOjogbAorKyAgYWxsb2NhdGUg KHZhcnggKDE6NiwgNToxNSwgMTc6MjgpKSAgICAgICAgICAgICEgdmFyeC1pbml0CisrICBsID0g YWxsb2NhdGVkICh2YXJ4KQorKyAgdmFyeCg6LCA6LCA6KSA9IDYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEgdmFyeC1hbGxvY2F0ZWQKKysgIHZhcngoMSwgNSwgMTcpID0gNworKyAgdmFy eCgyLCA2LCAxOCkgPSA4CisrICB2YXJ4KDYsIDE1LCAyOCkgPSA5CisrICB2YXJ2ID0+IHZhcngg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWZpbGxlZAorKyAgbCA9IGFz c29jaWF0ZWQgKHZhcnYpCisrICB2YXJ2KDMsIDcsIDE5KSA9IDEwICAgICAgICAgICAgICAgICAg ICAgICAgICAgISB2YXJ2LWFzc29jaWF0ZWQKKysgIHZhcnYgPT4gbnVsbCAoKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZmlsbGVkCisrICBsID0gYXNzb2NpYXRlZCAodmFy dikKKysgIGRlYWxsb2NhdGUgKHZhcngpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZh cnYtZGVhc3NvY2lhdGVkCisrICBsID0gYWxsb2NhdGVkICh2YXJ4KQorKyAgdmFydSg6LCA6LCA6 KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1kZWFsbG9jYXRlZAorKyAg YWxsb2NhdGUgKHZhcnYgKDE6NiwgNToxNSwgMTc6MjgpKQorKyAgbCA9IGFzc29jaWF0ZWQgKHZh cnYpCisrICB2YXJ2KDosIDosIDopID0gNgorKyAgdmFydigxLCA1LCAxNykgPSA3CisrICB2YXJ2 KDIsIDYsIDE4KSA9IDgKKysgIHZhcnYoNiwgMTUsIDI4KSA9IDkKKysgIGRlYWxsb2NhdGUgKHZh cnYpCisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKysgIHZhcnYgPT4gdmFydQorKyAgdmFydigx LCAxLCAxKSA9IDYKKysgIHZhcnYoMSwgMiwgMykgPSA3CisrICBsID0gYXNzb2NpYXRlZCAodmFy dikKKytlbmQgc3Vicm91dGluZSBiYXoKKytzdWJyb3V0aW5lIGZvbyAodmFyeSwgdmFydykKKysg IHJlYWwgOjogdmFyeSAoOiwgOikKKysgIHJlYWwgOjogdmFydyAoOiwgOiwgOikKKysgIHZhcnko OiwgOikgPSA0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnktcGFzc2VkCisr ICB2YXJ5KDEsIDEpID0gOAorKyAgdmFyeSgyLCAyKSA9IDkKKysgIHZhcnkoMSwgMykgPSAxMAor KyAgdmFydyg6LCA6LCA6KSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeS1m aWxsZWQKKysgIHZhcncoMSwgMSwgMSkgPSA2CisrICB2YXJ3KDIsIDIsIDIpID0gNyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgISB2YXJ3LWFsbW9zdGZpbGxlZAorK2VuZCBzdWJyb3V0aW5l IGZvbworK3N1YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQorKyAgcmVhbCA6OiB2YXJ6ICgqKQor KyAgcmVhbCA6OiB2YXJ0ICgyOjExLCA3OiopCisrICB2YXJ6KDE6MykgPSA0CisrICB2YXJ6KDIp ID0gNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ6LWFsbW9zdGZpbGxl ZAorKyAgdmFydCgyLDcpID0gdmFydCgyLDcpCisrZW5kIHN1YnJvdXRpbmUgYmFyCisrcHJvZ3Jh bSB0ZXN0CisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncpCisr ICAgIHJlYWwgOjogdmFyeSAoOiwgOikKKysgICAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6KQorKyAg ICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgaW50ZXJmYWNlCisrICAgIHN1 YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQorKyAgICByZWFsIDo6IHZhcnogKCopCisrICAgIHJl YWwgOjogdmFydCAoMjoxMSwgNzoqKQorKyAgICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVy ZmFjZQorKyAgcmVhbCA6OiB4ICgxMCwgMTApLCB5ICg1KSwgeig4LCA4LCA4KQorKyAgeCg6LDop ID0gMQorKyAgeSg6KSA9IDIKKysgIHooOiw6LDopID0gMworKyAgY2FsbCBiYXoKKysgIGNhbGwg Zm9vICh4LCB6KDI6NiwgNDo3LCA2OjgpKQorKyAgY2FsbCBiYXIgKHksIHgpCisrICBpZiAoeCAo MSwgMSkgLm5lLiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBj YWxsIGFib3J0CisrICBpZiAoeCAoMSwgMykgLm5lLiAxMCkgY2FsbCBhYm9ydAorKyAgaWYgKHog KDIsIDQsIDYpIC5uZS4gNiAub3IuIHogKDMsIDUsIDcpIC5uZS4gNyAub3IuIHogKDIsIDQsIDcp IC5uZS4gNSkgY2FsbCBhYm9ydAorKyAgaWYgKGFueSAoeSAubmUuICgvNCwgNSwgNCwgMiwgMi8p KSkgY2FsbCBhYm9ydAorKyAgY2FsbCBmb28gKHRyYW5zcG9zZSAoeCksIHopCisrICBpZiAoeCAo MSwgMSkgLm5lLiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBj YWxsIGFib3J0CisrICBpZiAoeCAoMywgMSkgLm5lLiAxMCkgY2FsbCBhYm9ydAorK2VuZAorSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcu ZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3N0cmluZy5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTQ5NDA0ODkgKzAyMDAKK0BAIC0w LDAgKzEsNTkgQEAKKysjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjIAorKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KKysjIAorKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCisr CisrIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+LgorKworKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0 c3VpdGUuICBJdCBjb250YWlucyB0ZXN0cyBmb3IgRm9ydHJhbgorKyMgc3RyaW5ncyB3aXRoIGR5 bmFtaWMgbGVuZ3RoLgorKworK3NldCB0ZXN0ZmlsZSAic3RyaW5nIgorK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmY5MAorK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0KKysKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY5MCBxdWlldH1dICE9ICIiIH0gewor KyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorKyAgICByZXR1cm4g LTEKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50byBNQUlO X19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5f XyIKKysgICAgY29udGludWUKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInZhci1pbml0Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWluaXQi CisrZ2RiX3Rlc3QgInB0eXBlIGMiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9MVxcKXxcXCox KSIKKytnZGJfdGVzdCAicHR5cGUgZCIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD04XFwpfFxc KjgpIgorK2dkYl90ZXN0ICJwdHlwZSBlIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8 XFwqNCkiCisrZ2RiX3Rlc3QgInB0eXBlIGYiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxc KXxcXCo0KSBcXCg3LDg6MTBcXCkiCisrZ2RiX3Rlc3QgInB0eXBlICplIiAiQXR0ZW1wdCB0byB0 YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIgorK2dkYl90ZXN0ICJwdHlwZSAq ZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIFxcKDdcXCkiCisrZ2RiX3Rl c3QgInAgYyIgIlxcJFxbMC05XF0qID0gJ2MnIgorK2dkYl90ZXN0ICJwIGQiICJcXCRcWzAtOVxd KiA9ICdkICAgICAgICciCisrZ2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2cgICAnIgor K2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnaCAgICcsICdoICAgJywgJ2gg ICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAn LCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAn aCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKSIKKytn ZGJfdGVzdCAicCAqZSIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVy IHZhbHVlLiIKKytnZGJfdGVzdCAicCAqZiIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBh IG5vbi1wb2ludGVyIHZhbHVlLiIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFyLWZpbmlzaCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5p c2giCisrZ2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIK KytnZGJfdGVzdCAicCBmIiAiXFwkXFswLTlcXSogPSBcXChcXCggJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKCAnZjIgICcsICdmICAg JywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCkiICJw ICpmIHJlLXNldCIKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmY5MAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZjkwCTIwMTQtMDYtMTYgMjM6MzA6MzAuMTE0OTQw NDg5ICswMjAwCitAQCAtMCwwICsxLDM3IEBACisrISBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEK KyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywgVVNBLgorKyEKKyshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBm b3IgZHluYW1pYy5leHAuCisrISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5l ayA8amFrdWJAcmVkaGF0LmNvbT4uCisrISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBi eSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrc3Vicm91 dGluZSBmb28gKGUsIGYpCisrICBjaGFyYWN0ZXIgKGxlbj0xKSA6OiBjCisrICBjaGFyYWN0ZXIg KGxlbj04KSA6OiBkCisrICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBlCisrICBjaGFyYWN0ZXIgKGxl bj0qKSA6OiBmICgxOjcsIDg6MTApCisrICBjID0gJ2MnCisrICBkID0gJ2QnCisrICBlID0gJ2Un ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXItaW5pdAorKyAgZiA9 ICdmJworKyAgZigxLDkpID0gJ2YyJworKyAgYyA9ICdjJyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICEgdmFyLWZpbmlzaAorK2VuZCBzdWJyb3V0aW5lIGZvbworKyAgY2hh cmFjdGVyIChsZW49NCkgOjogZywgaCAoMTo3LCA4OjEwKQorKyAgZyA9ICdnJworKyAgaCA9ICdo JworKyAgY2FsbCBmb28gKGcsIGgpCisrZW5kCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAorPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAJMjAxNC0w Ni0xNiAyMzozMDozMC4xMTQ5NDA0ODkgKzAyMDAKK0BAIC0wLDAgKzEsNzIgQEAKKysjIENvcHly aWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysKKytpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1 cm4gLTEgfQorKworK3NldCB0ZXN0ZmlsZSAic3VicmFuZ2UiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0 ZmlsZX0uZjkwCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0 ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjkwfV0gfSB7CisrICAgIHJldHVybiAtMQorK30K KysKKytpZiAhW3J1bnRvIE1BSU5fX10geworKyAgICBwZXJyb3IgIkNvdWxkbid0IHJ1biB0byBN QUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworKyMgRGVwZW5kaW5nIG9uIHRoZSBjb21waWxl ciB2ZXJzaW9uIGJlaW5nIHVzZWQsIHRoZSBuYW1lIG9mIHRoZSA0LWJ5dGUgaW50ZWdlcgorKyMg YW5kIHJlYWwgdHlwZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHkuICBGb3IgaW5zdGFuY2Us IGdmb3J0cmFuLTQuMSB1c2VzCisrIyAiaW50NCIgd2hlcmVhcyBnZm9ydHJhbi00LjMgdXNlcyAi aW50KGtpbmQ9NCkiLgorK3NldCBpbnQ0ICIoaW50NHxpbnRlZ2VyXFwoa2luZD00XFwpKSIKKysK KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstc3RhdGljIl0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstc3RhdGljIiAiLipicmVhay1zdGF0aWMu KiIKKysKKytmb3JlYWNoIHZhciB7YSBhbGxvYyBwdHJ9IHsKKysgICAgZ2xvYmFsIHBmX3ByZWZp eAorKyAgICBzZXQgb2xkX3ByZWZpeCAkcGZfcHJlZml4CisrICAgIGxhcHBlbmQgcGZfcHJlZml4 ICIkdmFyOiIKKysKKysgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5 IgorKyAgICBnZGJfdGVzdCAicCAkdmFyICgyLCAyOjMpIiB7ID0gXCgyMiwgMzJcKX0KKysgICAg c2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVzc2lvbi85OTk5IgorKyAgICBnZGJfdGVzdCAi cCAkdmFyICgyOjMsIDMpIiB7ID0gXCgzMiwgMzNcKX0KKysgICAgc2V0dXBfa2ZhaWwgIiotKi0q IiAidmxhcmVncmVzc2lvbi85OTk5IgorKyAgICBnZGJfdGVzdCAicCAkdmFyICgxLCAyOikiIHsg PSBcKDIxLCAzMVwpfQorKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5 OTkiCisrICAgIGdkYl90ZXN0ICJwICR2YXIgKDIsIDoyKSIgeyA9IFwoMTIsIDIyXCl9CisrICAg IHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKKysgICAgZ2RiX3Rlc3Qg InAgJHZhciAoMywgMjoyKSIgeyA9IFwoMjNcKX0KKysgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAi dmxhcmVncmVzc2lvbi85OTk5IgorKyAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoMywgMjoyKSIg IiA9ICRpbnQ0IFxcKDI6MlxcKSIKKysgICAgc2V0dXBfa2ZhaWwgIiotKi0qIiAidmxhcmVncmVz c2lvbi85OTk5IgorKyAgICBnZGJfdGVzdCAicCAkdmFyICg0LCA6KSIgeyA9IFwoMTQsIDI0LCAz NFwpfQorKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisrICAg IGdkYl90ZXN0ICJwICR2YXIgKDosIDopIiB7ID0gXChcKCAqMTEsIDEyLCAxMywgMTRcKSBcKCAq MjEsIDIyLCAyMywgMjRcKSBcKCAqMzEsIDMyLCAzMywgMzRcKSAqXCl9CisrICAgIHNldHVwX2tm YWlsICIqLSotKiIgInZsYXJlZ3Jlc3Npb24vOTk5OSIKKysgICAgZ2RiX3Rlc3QgInB0eXBlICR2 YXIgKDosIDopIiAiID0gJGludDQgXFwoNCwzXFwpIgorKyAgICBzZXR1cF9rZmFpbCAiKi0qLSoi ICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisrICAgIGdkYl90ZXN0ICJwICR2YXIgKDopIiAiV3Jvbmcg bnVtYmVyIG9mIHN1YnNjcmlwdHMiCisrICAgIHNldHVwX2tmYWlsICIqLSotKiIgInZsYXJlZ3Jl c3Npb24vOTk5OSIKKysgICAgZ2RiX3Rlc3QgInAgJHZhciAoOiwgOiwgOikiICJXcm9uZyBudW1i ZXIgb2Ygc3Vic2NyaXB0cyIKKysKKysgICAgc2V0IHBmX3ByZWZpeCAkb2xkX3ByZWZpeAorK30K KysKKytnZGJfdGVzdF9ub19vdXRwdXQge3NldCAkYT1hfQorK2RlbGV0ZV9icmVha3BvaW50cwor K2dkYl91bmxvYWQKKytzZXR1cF9rZmFpbCAiKi0qLSoiICJ2bGFyZWdyZXNzaW9uLzk5OTkiCisr Z2RiX3Rlc3Qge3AgJGEgKDMsIDI6Mil9IHsgPSBcKDIzXCl9CitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MAorPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAorKysr IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5m OTAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTQ5NDA0ODkgKzAyMDAKK0BAIC0wLDAgKzEsMjggQEAK KyshIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKysh IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrISAKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrISAK KyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytwcm9ncmFtIHRlc3QKKysgIGludGVn ZXIsIHRhcmdldCA6OiBhICg0LCAzKQorKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogYWxsb2Mg KDosIDopCisrICBpbnRlZ2VyLCBwb2ludGVyIDo6IHB0ciAoOiwgOikKKysgIGRvIDEgaSA9IDEs IDQKKysgIGRvIDEgaiA9IDEsIDMKKysgICAgYSAoaSwgaikgPSBqICogMTAgKyBpCisrMSBjb250 aW51ZQorKyAgYWxsb2NhdGUgKGFsbG9jICg0LCAzKSkKKysgIGFsbG9jID0gYQorKyAgcHRyID0+ IGEKKysgIHdyaXRlICgqLCopIGEgICAgICAgICAgICAgICAgICEgYnJlYWstc3RhdGljCisrZW5k CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFy LXN0YWxlLXR5cGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMJMjAxNC0wNi0xNiAyMzozMDozMC4xMTQ5NDA0 ODkgKzAyMDAKK0BAIC0wLDAgKzEsMjYgQEAKKysvKiBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisr CisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK2ludAorK21h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyt7CisrICBjaGFyIHZsYVthcmdjXTsKKysKKysg IHZsYVswXSA9IDA7CS8qIGJyZWFrLWhlcmUgKi8KKysKKysgIHJldHVybiAwOworK30KK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUt dHlwZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pMi12YXItc3RhbGUtdHlwZS5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4xMTQ5NDA0ODkg KzAyMDAKK0BAIC0wLDAgKzEsNTcgQEAKKysjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisr bG9hZF9saWIgbWktc3VwcG9ydC5leHAKKytzZXQgTUlGTEFHUyAiLWk9bWkyIgorKworK2dkYl9l eGl0CisraWYgW21pX2dkYl9zdGFydF0geworKyAgICBjb250aW51ZQorK30KKysKKytzZXQgdGVz dGZpbGUgIm1pMi12YXItc3RhbGUtdHlwZSIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisr c2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxlICR7dGVzdGZpbGV9XQorK2lmIHtbYnVp bGRfZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS5leHAgJHRlc3RmaWxlICRzcmNmaWxlXSA9PSAtMX0g eworKyAgICByZXR1cm4gLTEKKyt9CisrCisrbWlfZGVsZXRlX2JyZWFrcG9pbnRzCisrbWlfZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrbWlfZ2RiX2xvYWQgJHtiaW5maWxl fQorKworK21pX2dkYl90ZXN0IHstaW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlICJtYWludGVuYW5j ZSBzZXQgaW50ZXJuYWwtZXJyb3IgcXVpdCB5ZXMifSBcCisrICB7XF5kb25lfSBcCisrICAibWFp bnRlbmFuY2Ugc2V0IGludGVybmFsLWVycm9yIHF1aXQgeWVzIgorKworK21pX2dkYl90ZXN0IHst aW50ZXJwcmV0ZXItZXhlYyBjb25zb2xlICJtYWludGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJyb3Ig Y29yZWZpbGUgeWVzIn0gXAorKyAge1xeZG9uZX0gXAorKyAgIm1haW50ZW5hbmNlIHNldCBpbnRl cm5hbC1lcnJvciBjb3JlZmlsZSB5ZXMiCisrCisrc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1i ZXIgImJyZWFrLWhlcmUiXQorK3NldCBmdW5jICJtYWluIgorKworK21pX2dkYl90ZXN0ICItYnJl YWstaW5zZXJ0IC10ICRzcmNmaWxlOiRsaW5lIiBcCisrICAiXFxeZG9uZSxia3B0PVx7bnVtYmVy PVwiXFswLTlcXStcIix0eXBlPVwiYnJlYWtwb2ludFwiLGRpc3A9XCJkZWxcIixlbmFibGVkPVwi eVwiLGFkZHI9XCIkaGV4XCIsZnVuYz1cIiRmdW5jXChcXFwoLipcXFwpXCk/XCIsZmlsZT1cIi4q XCIsZnVsbG5hbWU9XCIuKlwiLGxpbmU9XCIkbGluZVwiLFxbXlxyXG5cXSosb3JpZ2luYWwtbG9j YXRpb249XCIuKlwiXH0iIFwKKysgICJicmVha3BvaW50IGF0ICRmdW5jIgorKworK2lmIHsgW21p X3J1bl9jbWRdIDwgMCB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorK21pX2V4cGVjdF9zdG9wICJi cmVha3BvaW50LWhpdCIgJGZ1bmMgIi4qIiAiLioiICJcWzAtOVxdKyIgeyAiIiAiZGlzcD1cImRl bFwiIiB9ICJzdG9wIGFmdGVyIGluaXRpYWxpemluZyB2bGEiCisrCisrbWlfY3JlYXRlX3Zhcm9i aiAidmxhIiAidmxhIiAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHZsYSIKKysKKyttaV9nZGJfdGVz dCAiLXZhci11cGRhdGUgKiIgIlxcXmRvbmUsY2hhbmdlbGlzdD0uKiIgIi12YXItdXBkYXRlICoi CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXkt ZnJvbS1yZWdpc3Rlci1mdW5jLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90 ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwkyMDE0LTA2LTE2IDIz OjMwOjMwLjExNTk0MDQ5MCArMDIwMAorQEAgLTAsMCArMSwyMiBAQAorKy8qIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCisrCisraW50CisrZnVuYyAoaW50ICphcnIpCisreworKyAgcmV0 dXJuIGFyclswXTsKKyt9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRl L2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCTIwMTQtMDYt MTYgMjM6MzA6MzAuMTE1OTQwNDkwICswMjAwCitAQCAtMCwwICsxLDI4IEBACisrLyogVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKytleHRlcm4gaW50IGZ1bmMgKGludCAqYXJyKTsK KysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIGludCBhcnJbXSA9IHsgNDIgfTsKKysKKysg IGZ1bmMgKGFycik7CisrCisrICByZXR1cm4gMDsKKyt9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5leHAKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLmV4cAkyMDE0LTA2LTE2IDIzOjMwOjMwLjExNTk0MDQ5MCArMDIwMAorQEAgLTAs MCArMSwzMyBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVt cGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysjCisr IyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4KKysKKytpZiB7IFtwcmVw YXJlX2Zvcl90ZXN0aW5nIGFycmF5LWZyb20tcmVnaXN0ZXIuZXhwICJhcnJheS1mcm9tLXJlZ2lz dGVyIiAgICAgIFwKKysJCQkgIHthcnJheS1mcm9tLXJlZ2lzdGVyLmMgYXJyYXktZnJvbS1yZWdp c3Rlci1mdW5jLmN9IFwKKysJCQkgIHtkZWJ1ZyBvcHRpbWl6ZT0tTzJ9XSB9IHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gZnVuY10gdGhlbiB7CisrICAgIHJldHVybiAtMQor K30KKysKKytnZGJfdGVzdCAicCBhcnIiICJcXCRcWzAtOVxdKyA9IFxcKGludCBcXCpcXCkgKjB4 XFswLTlhLWZcXSsiCisrCisrIyBTZWVuIHJlZ3Jlc3Npb246CisrIyBBZGRyZXNzIHJlcXVlc3Rl ZCBmb3IgaWRlbnRpZmllciAiYXJyIiB3aGljaCBpcyBpbiByZWdpc3RlciAkcmRpCisrZ2RiX3Rl c3QgInAgYXJyXFswXF0iICJcXCRcWzAtOVxdKyA9IDQyIgorSW5kZXg6IGdkYi03LjcuOTAuMjAx NDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCTIwMTQt MDYtMTYgMjM6MzA6MzAuMTE1OTQwNDkwICswMjAwCitAQCAtMCwwICsxLDEwNCBAQAorKyMgQ29w eXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKysg ICAgc3RyYWNlICR0cmFjZWxldmVsCisrfQorKworK2xvYWRfbGliICJwYXNjYWwuZXhwIgorKwor K3NldCB0ZXN0ZmlsZSAiYXJyYXlzIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LnBhcworK3Nl dCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0kRVhFRVhUCisrCisrIyBU aGVzZSB0ZXN0cyBvbmx5IHdvcmsgd2l0aCBmcGMsIHVzaW5nIHRoZSAtZ3czIGNvbXBpbGUtb3B0 aW9uCisrcGFzY2FsX2luaXQKKytpZiB7ICRwYXNjYWxfY29tcGlsZXJfaXNfZnBjICE9IDEgfSB7 CisrICByZXR1cm4gLTEKKyt9CisrCisrIyBEZXRlY3QgaWYgdGhlIGZwYyB2ZXJzaW9uIGlzIGJl bG93IDIuMy4wCisrc2V0IGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzIDEK KytpZiB7ICgkZnBjdmVyc2lvbl9tYWpvciA8IDIpIHx8ICggKCRmcGN2ZXJzaW9uX21ham9yID09 IDIpICYmICgkZnBjdmVyc2lvbl9taW5vciA8IDMpKX0gIHsKKysgIHNldCBmcGNfZ2VuZXJhdGVz X2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyAwCisrfQorKworKworK2lmIHtbZ2RiX2NvbXBpbGVf cGFzY2FsICItZ3czICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0i IGV4ZWN1dGFibGUgW2xpc3QgZGVidWcgXV0gIT0gIiIgfSB7CisrICByZXR1cm4gLTEKKyt9Cisr CisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9Cisrc2V0IGJwX2xvY2F0aW9uMSBbZ2RiX2dldF9s aW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgMSBoZXJlIl0KKytzZXQgYnBfbG9jYXRpb24yIFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAyIGhlcmUiXQorKworKworK2lmIHsg W2dkYl9icmVha3BvaW50ICR7c3JjZmlsZX06JHticF9sb2NhdGlvbjF9XSB9IHsKKysgICAgcGFz cyAic2V0dGluZyBicmVha3BvaW50IDEiCisrfQorK2lmIHsgW2dkYl9icmVha3BvaW50ICR7c3Jj ZmlsZX06JHticF9sb2NhdGlvbjJ9XSB9IHsKKysgICAgcGFzcyAic2V0dGluZyBicmVha3BvaW50 IDIiCisrfQorKworKyMgVmVyaWZ5IHRoYXQgInN0YXJ0IiBsYW5kcyBpbnNpZGUgdGhlIHJpZ2h0 IHByb2NlZHVyZS4KKytpZiB7IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7CisrICAgIHVudGVzdGVk IHN0YXJ0CisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfdGVzdCAiIiAiLiogYXQgLioke3Ny Y2ZpbGV9LioiICJzdGFydCIKKysKKytnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHti cF9sb2NhdGlvbjF9LioiICJHb2luZyB0byBmaXJzdCBicmVha3BvaW50IgorKworK2dkYl90ZXN0 ICJwcmludCBTdGF0QXJySW50IiAiLiogPSBcXHs1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1Niwg NTcsIDU4LCA1OSwgNjAsIDYxXFx9IiAiUHJpbnQgc3RhdGljIGFycmF5IG9mIGludGVnZXIgdHlw ZSIKKytnZGJfdGVzdCAicHJpbnQgU3RhdEFyckludF8iICIuKiA9IFxcezUwLCA1MSwgNTIsIDUz LCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjFcXH0iICJQcmludCBzdGF0aWMgYXJyYXkg b2YgaW50ZWdlciIKKysKKytnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHticF9sb2Nh dGlvbjJ9LioiICJHb2luZyB0byBzZWNvbmQgYnJlYWtwb2ludCIKKysKKytnZGJfdGVzdCAicHJp bnQgU3RhdEFyckNoYXIiICIuKiA9ICdhYmNkZWZnaGlqa2wnIiAiUHJpbnQgc3RhdGljIGFycmF5 IG9mIGNoYXIiCisrZ2RiX3Rlc3QgInByaW50IFN0YXQyZEFyckludCIgIi4qID0gXFx7XFx7MCwg MSwgMiwgMywgNFxcfSwgXFx7MSwgMiwgMywgNCwgNVxcfSwgXFx7MiwgMywgNCwgNSwgNlxcfSwg XFx7MywgNCwgNSwgNiwgN1xcfSwgXFx7NCwgNSwgNiwgNywgOFxcfSwgXFx7NSwgNiwgNywgOCwg OVxcfSwgXFx7NiwgNywgOCwgOSwgMTBcXH0sIFxcezcsIDgsIDksIDEwLCAxMVxcfSwgXFx7OCwg OSwgMTAsIDExLCAxMlxcfSwgXFx7OSwgMTAsIDExLCAxMiwgMTNcXH0sIFxcezEwLCAxMSwgMTIs IDEzLCAxNFxcfSwgXFx7MTEsIDEyLCAxMywgMTQsIDE1XFx9XFx9IiAiUHJpbnQgc3RhdGljIDIt ZGltZW5zaW9uYWwgYXJyYXkgb2YgaW50ZWdlciIKKysKKytpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3 YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1cF94ZmFpbCAiKi0qLSoiCisr fQorK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJbnQiICIuKiA9IFxcezUwLCA1MSwgNTIsIDUzLCA1 NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyXFx9IiAiUHJpbnQgZHluYW1pYyBhcnJh eSBvZiBpbnRlZ2VyIHR5cGUiCisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1p Y19hcnJheXMgPT0gMH0geworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgorK30KKytnZGJfdGVzdCAi cHJpbnQgRHluQXJySW50XyIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3 LCA1OCwgNTksIDYwLCA2MSwgNjJcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIi CisrCisraWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0g eworKyAgc2V0dXBfeGZhaWwgIiotKi0qIgorK30KKytnZGJfdGVzdCAicHJpbnQgcyIgIi4qID0g J3Rlc3QnIzAnc3RyaW5nJyIgIlByaW50IHN0cmluZyBjb250YWluaW5nIG51bGwtY2hhciIKKysK KytpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Cisr ICBzZXR1cF94ZmFpbCAiKi0qLSoiCisrfQorK2dkYl90ZXN0ICJwcmludCBEeW5BcnJTdHIiICIu KiA9IFxceydkc3RyMCcsICdkc3RyMScsICdkc3RyMicsICdkc3RyMycsICdkc3RyNCcsICdkc3Ry NScsICdkc3RyNicsICdkc3RyNycsICdkc3RyOCcsICdkc3RyOScsICdkc3RyMTAnLCAnZHN0cjEx JywgJ2RzdHIxMidcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIHN0cmluZyIKKysKKytpZiB7 ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7CisrICBzZXR1 cF94ZmFpbCAiKi0qLSoiCisrfQorK2dkYl90ZXN0ICJwcmludCBTdGF0QXJyU3RyIiAiLiogPSBc XHsnc3RyMCcsICdzdHIxJywgJ3N0cjInLCAnc3RyMycsICdzdHI0JywgJ3N0cjUnLCAnc3RyNics ICdzdHI3JywgJ3N0cjgnLCAnc3RyOScsICdzdHIxMCcsICdzdHIxMScsICdzdHIxMidcXH0iICJQ cmludCBzdGF0aWMgYXJyYXkgb2Ygc3RyaW5nIgorKworK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdh cmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKKysgIHNldHVwX3hmYWlsICIqLSotKiIKKyt9 CisrZ2RiX3Rlc3QgInByaW50IER5bkFyckNoYXIiICIuKiA9ICdhYmNkZWZnaGlqa2xtJyIgIlBy aW50IGR5bmFtaWMgYXJyYXkgb2YgY2hhciIKKysKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcwkyMDE0LTA2LTE2 IDIzOjMwOjMwLjExNTk0MDQ5MCArMDIwMAorQEAgLTAsMCArMSw4MiBAQAorK3sKKysgQ29weXJp Z2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrCisrIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorK30KKysKKytwcm9ncmFtIGFycmF5czsKKysKKyt7JG1vZGUgb2JqZnBjfXsk aCt9CisrCisrdXNlcyBzeXN1dGlsczsKKysKKyt0eXBlIFRTdGF0QXJySW50PSBhcnJheVswLi4x MV0gb2YgaW50ZWdlcjsKKysgICAgIFREeW5BcnJJbnQ9IGFycmF5IG9mIGludGVnZXI7CisrICAg ICBUU3RhdEFyclN0cj0gYXJyYXlbMC4uMTJdIG9mIHN0cmluZzsKKysgICAgIFREeW5BcnJTdHI9 IGFycmF5IG9mIHN0cmluZzsKKysgICAgIFREeW5BcnJDaGFyID0gYXJyYXkgb2YgY2hhcjsKKysg ICAgIFRTdGF0QXJyQ2hhciA9IGFycmF5IFswLi4xMV0gb2YgY2hhcjsKKysKKysgICAgIFRTdGF0 MmRBcnJJbnQgPSBhcnJheVswLi4xMSwwLi40XSBvZiBpbnRlZ2VyOworKworK3ZhciBTdGF0QXJy SW50OiBUU3RhdEFyckludDsKKysgICAgU3RhdEFyckludF86IEFycmF5WzAuLjExXSBvZiBpbnRl Z2VyOworKyAgICBEeW5BcnJJbnQ6ICBURHluQXJySW50OworKyAgICBEeW5BcnJJbnRfOiBBcnJh eSBvZiBpbnRlZ2VyOworKyAgICBTdGF0QXJyU3RyOiBUU3RhdEFyclN0cjsKKysgICAgRHluQXJy U3RyOiBURHluQXJyU3RyOworKyAgICBTdGF0QXJyQ2hhcjogVFN0YXRBcnJDaGFyOworKyAgICBE eW5BcnJDaGFyOiBURHluQXJyQ2hhcjsKKysKKysgICAgU3RhdDJkQXJySW50OiBUU3RhdDJkQXJy SW50OworKworKyAgICBzOiBzdHJpbmc7CisrCQorKyAgICBpLGogOiBpbnRlZ2VyOworKworK2Jl Z2luCisrICBmb3IgaSA6PSAwIHRvIDExIGRvCisrICAgIGJlZ2luCisrICAgIFN0YXRBcnJJbnRb aV06PSBpKzUwOworKyAgICBTdGF0QXJySW50X1tpXTo9IGkrNTA7CisrICAgIFN0YXRBcnJDaGFy W2ldOj0gY2hyKG9yZCgnYScpK2kpOworKyAgICBmb3IgaiA6PSAwIHRvIDQgZG8KKysgICAgICBT dGF0MmRBcnJJbnRbaSxqXTo9aStqOworKyAgICBlbmQ7CisrICB3cml0ZWxuKFN0YXRBcnJJbnRf WzBdKTsKKysgIHdyaXRlbG4oU3RhdEFyckludFswXSk7IHsgc2V0IGJyZWFrcG9pbnQgMSBoZXJl IH0KKysgIHdyaXRlbG4oU3RhdEFyckNoYXJbMF0pOworKyAgd3JpdGVsbihTdGF0MmRBcnJJbnRb MCwwXSk7CisrCisrICBzZXRsZW5ndGgoRHluQXJySW50LDEzKTsKKysgIHNldGxlbmd0aChEeW5B cnJJbnRfLDEzKTsKKysgIHNldGxlbmd0aChEeW5BcnJTdHIsMTMpOworKyAgc2V0bGVuZ3RoKER5 bkFyckNoYXIsMTMpOworKyAgZm9yIGkgOj0gMCB0byAxMiBkbworKyAgICBiZWdpbgorKyAgICBE eW5BcnJJbnRbaV06PSBpKzUwOworKyAgICBEeW5BcnJJbnRfW2ldOj0gaSs1MDsKKysgICAgRHlu QXJyQ2hhcltpXTo9IGNocihvcmQoJ2EnKStpKTsKKysgICAgU3RhdEFyclN0cltpXTo9J3N0cicr aW50dG9zdHIoaSk7CisrICAgIER5bkFyclN0cltpXTo9J2RzdHInK2ludHRvc3RyKGkpOworKyAg ICBlbmQ7CisrICB3cml0ZWxuKER5bkFyckludF9bMV0pOworKyAgd3JpdGVsbihEeW5BcnJJbnRb MV0pOyAKKysgIHdyaXRlbG4oRHluQXJyU3RyWzFdKTsgCisrICB3cml0ZWxuKFN0YXRBcnJTdHJb MV0pOworKyAgd3JpdGVsbihEeW5BcnJDaGFyWzFdKTsKKysKKysgIHMgOj0gJ3Rlc3QnIzAnc3Ry aW5nJzsKKysgIHdyaXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQgMiBoZXJlIH0KKytlbmQuCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAJMjAxNC0wNi0xNiAyMzozMDoyOS4yNzg5Mzk3MDAgKzAyMDAKKysrKyBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxNC0wNi0xNiAyMzozMDozMC4x MTc5NDA0OTIgKzAyMDAKK0BAIC0xNTksNiArMTU5LDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7 CisgCSAgICBzZW5kX2dkYiAieVxuIgorIAkgICAgZXhwX2NvbnRpbnVlCisgCX0KKysJLXJlICJB IHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFkeS4uKkFyZSB5b3Ugc3VyZSB5b3Ugd2Fu dCB0byBjaGFuZ2UgdGhlIGZpbGUuKnkgb3Igbi4gJCJcCisrCSAgICB7IHNlbmRfZ2RiICJ5XG4i CisrCQl2ZXJib3NlICJcdFx0VW5sb2FkaW5nIHN5bWJvbHMgZm9yIHByb2dyYW0gYmVpbmcgZGVi dWdnZWQiCisrCSAgICBleHBfY29udGludWUKKysJfQorIAktcmUgIkRpc2NhcmQgc3ltYm9sIHRh YmxlIGZyb20gLip5IG9yIG4uKiQiIHsKKyAJICAgIHNlbmRfZ2RiICJ5XG4iCisgCSAgICBleHBf Y29udGludWUKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvbGliL3Bh c2NhbC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvcGFzY2FsLmV4cAkyMDE0LTA2LTEzIDAzOjU5OjM3LjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAky MDE0LTA2LTE2IDIzOjMwOjMwLjExNzk0MDQ5MiArMDIwMAorQEAgLTM3LDYgKzM3LDkgQEAgcHJv YyBwYXNjYWxfaW5pdCB7fSB7CisgICAgIGdsb2JhbCBwYXNjYWxfY29tcGlsZXJfaXNfZnBjCisg ICAgIGdsb2JhbCBncGNfY29tcGlsZXIKKyAgICAgZ2xvYmFsIGZwY19jb21waWxlcgorKyAgICBn bG9iYWwgZnBjdmVyc2lvbl9tYWpvcgorKyAgICBnbG9iYWwgZnBjdmVyc2lvbl9taW5vcgorKyAg ICBnbG9iYWwgZnBjdmVyc2lvbl9yZWxlYXNlCisgICAgIGdsb2JhbCBlbnYKKyAgCisgICAgIGlm IHsgJHBhc2NhbF9pbml0X2RvbmUgPT0gMSB9IHsKK0BAIC02NCw2ICs2NywyMCBAQCBwcm9jIHBh c2NhbF9pbml0IHt9IHsKKyAJICAgIHNldCBwYXNjYWxfY29tcGlsZXJfaXNfZnBjIDEKKyAJICAg IHZlcmJvc2UgLWxvZyAiRnJlZSBQYXNjYWwgY29tcGlsZXIgZm91bmQiCisgCX0KKysKKysJIyBE ZXRlY3QgdGhlIGZwYy12ZXJzaW9uCisrCWlmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgPT0g MSB9IHsKKysJICAgIHNldCBmcGN2ZXJzaW9uX21ham9yIDEKKysJICAgIHNldCBmcGN2ZXJzaW9u X21pbm9yIDAKKysJICAgIHNldCBmcGN2ZXJzaW9uX3JlbGVhc2UgMAorKwkgICAgc2V0IGZwY3Zl cnNpb24gWyByZW1vdGVfZXhlYyBob3N0ICRmcGNfY29tcGlsZXIgIi1pViIgXSAKKysJICAgIGlm IFtyZWdleHAgey4qKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/fSAkZnBjdmVyc2lvbl0g eworKyAgICAgICAgICAgICAgcmVnc3ViIHsuKihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKyku P1xuPy4/fSAkZnBjdmVyc2lvbiB7XDF9IGZwY3ZlcnNpb25fbWFqb3IKKysgICAgICAgICAgICAg IHJlZ3N1YiB7LiooWzAtOV0rKVwuKFswLTldKylcLihbMC05XSspLj9cbj8uP30gJGZwY3ZlcnNp b24ge1wyfSBmcGN2ZXJzaW9uX21pbm9yCisrICAgICAgICAgICAgICByZWdzdWIgey4qKFswLTld KylcLihbMC05XSspXC4oWzAtOV0rKS4/XG4/Lj99ICRmcGN2ZXJzaW9uIHtcM30gZnBjdmVyc2lv bl9yZWxlYXNlCisrCSAgICB9CisrICAgICAgICAgICAgdmVyYm9zZSAtbG9nICJGcmVlcGFzY2Fs IHZlcnNpb246ICRmcGN2ZXJzaW9uX21ham9yLiRmcGN2ZXJzaW9uX21pbm9yLiRmcGN2ZXJzaW9u X3JlbGVhc2UiCisrCX0KKyAgICAgfQorICAgICBzZXQgcGFzY2FsX2luaXRfZG9uZSAxCisgfSAg IAoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4 IDY2OTRkYzAuLmM2YmU1MWMgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2Ri LWFyY2hlci5wYXRjaApAQCAtMiwzNyArMiwyNCBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2Ri L3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hl ckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNuYXBzaG90OgotY29tbWl0IDIxYzhhYzhmYWE0MjU2 ZjI3ZDQ3NTFkOGYwZDJiMjE4ZjJkMjMyYTgKK2NvbW1pdCBiODgyMzBlZGY0ZTJkYTk0OGQ2MzNj MjgzYmEwODkzYmYyMmJkN2FlCiAKLWJyYW5jaCBqYW5rcmF0b2NodmlsL2ZlZG9yYWdkYjc3IC0g dGhlIG1lcmdlIG9mIGJyYW5jaGVzOgotamFua3JhdG9jaHZpbC92bGEKIHRyb21leS9weXRob24K IAogCiBkaWZmIC0tZ2l0IGEvUkVBRE1FLmFyY2hlciBiL1JFQURNRS5hcmNoZXIKIG5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41YWU1ODdlCitpbmRleCAwMDAwMDAwLi4xNzNi OGVhCiAtLS0gL2Rldi9udWxsCiArKysgYi9SRUFETUUuYXJjaGVyCi1AQCAtMCwwICsxLDEzIEBA Ci0rTWVyZ2UgZm9yIEZlZG9yYSAyMTogaHR0cDovL3BrZ3MuZmVkb3JhcHJvamVjdC5vcmcvY2dp dC9nZGIuZ2l0LwotKwotK2phbmtyYXRvY2h2aWwvdmxhCi0rdHJvbWV5L3B5dGhvbgotKwotKz09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KK0BAIC0wLDAgKzEsMiBAQAogK1RoaXMgYnJhbmNoIG9yaWdpbmFsbHkgaGVsZCB0aGUg UHl0aG9uIGNvZGUgZm9yIGdkYi4gIEl0IHN0aWxsIGV4aXN0cwogK2JlY2F1c2UgYSBzbWFsbCBh bW91bnQgb2YgY29kZSBoZXJlIGhhcyBub3QgeWV0IGJlZW4gbWVyZ2VkIHVwc3RyZWFtLgotKwot Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLStDIHZhcmlhYmxlIGxlbmd0aCBhcnJheXMgLyBEV19GT1JNX2Jsb2NrIC8gRm9y dHJhbiBkeW5hbWljIGFycmF5cy4KLStpbXBsZW1lbnRhdGlvbiBwbGFuOiAgICAgICAgICAgICBo dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLzIwMTItMTEvbXNnMDAwOTQuaHRtbAotK2V4cGxh bmF0aW9uIG9mIGl0cyBtZXJnZSBzdGF0dXM6IGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIv MjAxMS0wMy9tc2cwMDAyMS5odG1sCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2Ri L01ha2VmaWxlLmluCi1pbmRleCA4MjRiMjZiLi41NmYwNTJhIDEwMDY0NAoraW5kZXggZWEyN2Nm NS4uYmMwNDAyNCAxMDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2Vm aWxlLmluCi1AQCAtMTM3Miw2ICsxMzcyLDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcu aW4gY29uZmlnLnN0YXR1cworQEAgLTE0NzYsNiArMTQ3NiwxMiBAQCBzdGFtcC1oOiAkKHNyY2Rp cikvY29uZmlnLmluIGNvbmZpZy5zdGF0dXMKICAJICBDT05GSUdfTElOS1M9IFwKICAJICAkKFNI RUxMKSBjb25maWcuc3RhdHVzCiAgCkBAIC00MiwxODAgKzI5LDM5IEBAIGluZGV4IDgyNGIyNmIu LjU2ZjA1MmEgMTAwNjQ0CiArCSAgQ09ORklHX0hFQURFUlM9IFwKICsJICAkKFNIRUxMKSBjb25m aWcuc3RhdHVzCiArCi0gY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1 cmUudGd0IGNvbmZpZ3VyZS5ob3N0IGRldmVsb3BtZW50LnNoCisgY29uZmlnLnN0YXR1czogJChz cmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0IC4uL2JmZC9kZXZl bG9wbWVudC5zaAogIAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjawogIAotZGlmZiAt LWdpdCBhL2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKLWluZGV4IGU3MGEzM2IuLjk3 N2YzZTIgMTAwNjQ0Ci0tLS0gYS9nZGIvYWRhLWxhbmcuYwotKysrIGIvZ2RiL2FkYS1sYW5nLmMK LUBAIC0xMjcwMyw2ICsxMjcwMyw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCi0gCi0gc3RhdGljIGludAot IGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJ CSAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0g CQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQg KmRhdGEpLAotIAkJICAgIHZvaWQgKmRhdGEpCi0gewotQEAgLTEyNzE3LDEyICsxMjcxOCwxNSBA QCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0g CWJyZWFrOwotIAotICAgICAgIGRlZmF1bHQ6Ci0tCXJldHVybiBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoZXhwLCBwb3MsIG9iamZpbGVfZnVuYywgZGF0YSk7Ci0rCXJldHVybiBvcGVyYXRvcl9j aGVja19zdGFuZGFyZCAoZXhwLCBwb3MsIHR5cGVfZnVuYywgb2JqZmlsZV9mdW5jLAotKwkJCQkJ ZGF0YSk7Ci0gICAgIH0KLSAKLSAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9C SkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0gCi0tICBpZiAodHlwZSAm JiBUWVBFX09CSkZJTEUgKHR5cGUpCi0rICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMgJiYgKCp0eXBl X2Z1bmMpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuIDE7Ci0rICBpZiAodHlwZSAmJiBUWVBF X09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYwotICAgICAgICYmICgqb2JqZmlsZV9mdW5j KSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCi0gICAgIHJldHVybiAxOwotIAotZGlmZiAt LWdpdCBhL2dkYi9ibG9jay5jIGIvZ2RiL2Jsb2NrLmMKLWluZGV4IDJhZTZlZTIuLjM3NmExZTgg MTAwNjQ0Ci0tLS0gYS9nZGIvYmxvY2suYwotKysrIGIvZ2RiL2Jsb2NrLmMKLUBAIC02OTMsMyAr NjkzLDIxIEBAIGJsb2NrX2l0ZXJfbWF0Y2hfbmV4dCAoY29uc3QgY2hhciAqbmFtZSwKLSAKLSAg IHJldHVybiBibG9ja19pdGVyX21hdGNoX3N0ZXAgKGl0ZXJhdG9yLCBuYW1lLCBjb21wYXJlLCAw KTsKLSB9Ci0rCi0rLyogUmV0dXJuIE9CSkZJTEUgaW4gd2hpY2ggQkxPQ0sgaXMgbG9jYXRlZCBv ciBOVUxMIGlmIHdlIGNhbm5vdCBmaW5kIGl0IGZvcgotKyAgIHdoYXRldmVyIHJlYXNvbi4gICov Ci0rCi0rc3RydWN0IG9iamZpbGUgKgotK2Jsb2NrX29iamZpbGUgKGNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2spCi0rewotKyAgc3RydWN0IHN5bWJvbCAqZnVuYzsKLSsKLSsgIGlmIChibG9jayA9 PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIGZ1bmMgPSBibG9ja19saW5rYWdlX2Z1 bmN0aW9uIChibG9jayk7Ci0rICBpZiAoZnVuYyA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsK LSsKLSsgIHJldHVybiBTWU1CT0xfU1lNVEFCIChmdW5jKS0+b2JqZmlsZTsKLSt9Ci1kaWZmIC0t Z2l0IGEvZ2RiL2Jsb2NrLmggYi9nZGIvYmxvY2suaAotaW5kZXggY2ExNDNhOS4uMGYwNjVmOCAx MDA2NDQKLS0tLSBhL2dkYi9ibG9jay5oCi0rKysgYi9nZGIvYmxvY2suaAotQEAgLTI3OSw0ICsy NzksNiBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqYmxvY2tfaXRlcl9tYXRjaF9uZXh0IChjb25z dCBjaGFyICpuYW1lLAotICAgICAgICAoc3ltKTsJCQkJCQlcCi0gICAgICAgIChzeW0pID0gYmxv Y2tfaXRlcmF0b3JfbmV4dCAoJihpdGVyKSkpCi0gCi0rZXh0ZXJuIHN0cnVjdCBvYmpmaWxlICpi bG9ja19vYmpmaWxlIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsKLSsKLSAjZW5kaWYgLyog QkxPQ0tfSCAqLwotZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJlYWtwb2lu dC5jCi1pbmRleCA2NmE2OWI1Li45NTJlMWM1IDEwMDY0NAotLS0tIGEvZ2RiL2JyZWFrcG9pbnQu YwotKysrIGIvZ2RiL2JyZWFrcG9pbnQuYwotQEAgLTE1NzM0LDYgKzE1NzM0LDI0IEBAIGFsbF90 cmFjZXBvaW50cyAodm9pZCkKLSAgIHJldHVybiB0cF92ZWM7Ci0gfQotIAotKyNpZiAwCi0rLyog Q2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdE QiBzb3VyY2UgZmlsZS4gICovCi0rCi0rc3RhdGljIHZvaWQKLSticmVha3BvaW50X3R5cGVzX21h cmtfdXNlZCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKLSsKLSsgIEFMTF9C UkVBS1BPSU5UUyAoYikKLSsgICAgewotKyAgICAgIGlmIChiLT5leHApCi0rCWV4cF90eXBlc19t YXJrX3VzZWQgKGItPmV4cCk7Ci0rICAgICAgaWYgKGItPnZhbCkKLSsJdHlwZV9tYXJrX3VzZWQg KHZhbHVlX3R5cGUgKGItPnZhbCkpOwotKyAgICB9Ci0rfQotKyNlbmRpZgotKwotIAwKLSAvKiBU aGlzIGhlbHAgc3RyaW5nIGlzIHVzZWQgZm9yIHRoZSBicmVhaywgaGJyZWFrLCB0YnJlYWsgYW5k IHRoYnJlYWsKLSAgICBjb21tYW5kcy4gIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBwcmV2 ZW50IGR1cGxpY2F0aW9uLgotQEAgLTE2Njk5LDQgKzE2NzE3LDcgQEAgYWdlbnQtcHJpbnRmIFwi cHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBhcmduXG5cCi0g Ci0gICBvYnNlcnZlcl9hdHRhY2hfYWJvdXRfdG9fcHJvY2VlZCAoYnJlYWtwb2ludF9hYm91dF90 b19wcm9jZWVkKTsKLSAgIG9ic2VydmVyX2F0dGFjaF90aHJlYWRfZXhpdCAocmVtb3ZlX3RocmVh ZGVkX2JyZWFrcG9pbnRzKTsKLSsjaWYgMAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAo YnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQpOwotKyNlbmRpZgotIH0KLWRpZmYgLS1naXQgYS9n ZGIvYy10eXBlcHJpbnQuYyBiL2dkYi9jLXR5cGVwcmludC5jCi1pbmRleCA0ZWRjOWVjLi4yOTJl ZGRiIDEwMDY0NAotLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKLSsrKyBiL2dkYi9jLXR5cGVwcmlu dC5jCi1AQCAtNjg5LDcgKzY4OSwxMyBAQCBjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0 cnVjdCB0eXBlICp0eXBlLAotIAotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIChpc192ZWN0 b3IgPwotIAkJCQkgICAiIF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSgiIDogIlsiKSk7Ci0t CWlmIChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi0r CWlmIChUWVBFX1JBTkdFX0RBVEEgKFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpLT5oaWdoLmtpbmQK LSsJICAgICE9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQpCi0rCSAgewotKwkgICAgLyogTm8g XygpIC0gcHJpbnRlZCBzb3VyY2VzIHNob3VsZCBub3QgYmUgbG9jYWxlIGRlcGVuZGVudC4gICov Ci0rCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2YXJpYWJsZSIpOwotKwkgIH0KLSsJ ZWxzZSBpZiAoZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQp KQotIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVzIiwgCi0gCQkJICAgIHBsb25nZXN0 IChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSkpOwotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sIChpc192ZWN0b3IgPyAiKSkpIiA6ICJdIikpOwotZGlmZiAtLWdpdCBhL2dkYi9jbGVhbnVw cy5jIGIvZ2RiL2NsZWFudXBzLmMKLWluZGV4IGU1MjkxYWIuLjQ4MjA5NzIgMTAwNjQ0Ci0tLS0g YS9nZGIvY2xlYW51cHMuYwotKysrIGIvZ2RiL2NsZWFudXBzLmMKLUBAIC0yNjEsOSArMjYxLDEx IEBAIHNhdmVfZmluYWxfY2xlYW51cHMgKHZvaWQpCi0gc3RhdGljIHZvaWQKLSByZXN0b3JlX215 X2NsZWFudXBzIChzdHJ1Y3QgY2xlYW51cCAqKnBteV9jaGFpbiwgc3RydWN0IGNsZWFudXAgKmNo YWluKQotIHsKLSsjaWYgMCAvKiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEgKi8KLSAgIGlmICgq cG15X2NoYWluICE9IFNFTlRJTkVMX0NMRUFOVVApCi0gICAgIGludGVybmFsX3dhcm5pbmcgKF9f RklMRV9fLCBfX0xJTkVfXywKLSAJCSAgICAgIF8oInJlc3RvcmVfbXlfY2xlYW51cHMgaGFzIGZv dW5kIGEgc3RhbGUgY2xlYW51cCIpKTsKLSsjZW5kaWYKLSAKLSAgICpwbXlfY2hhaW4gPSBjaGFp bjsKLSB9CiBkaWZmIC0tZ2l0IGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIGIvZ2Ri L2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi1pbmRleCBlNTM1MzE2Li40NDRkZTlkIDEwMDY0 NAoraW5kZXggYjlmY2MwMy4uM2MyYWZlMiAxMDA2NDQKIC0tLSBhL2dkYi9kYXRhLWRpcmVjdG9y eS9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCi1AQCAt NjMsMTMgKzYzLDIxIEBAIFBZVEhPTl9GSUxFUyA9IFwKLSAJZ2RiL3Byb21wdC5weSBcCitAQCAt NjYsNiArNjYsOCBAQCBQWVRIT05fRklMRVMgPSBcCisgCWdkYi94bWV0aG9kLnB5IFwKICAJZ2Ri L2NvbW1hbmQvYm91bmRfcmVnaXN0ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvX19pbml0X18ucHkg XAogKwlnZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IFwKICsJZ2RiL2NvbW1hbmQvcGFob2xl LnB5IFwKKyAJZ2RiL2NvbW1hbmQveG1ldGhvZHMucHkgXAogIAlnZGIvY29tbWFuZC9mcmFtZV9m aWx0ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvdHlwZV9wcmludGVycy5weSBcCi0gCWdkYi9jb21t YW5kL3ByZXR0eV9wcmludGVycy5weSBcCitAQCAtNzMsNyArNzUsMTAgQEAgUFlUSE9OX0ZJTEVT ID0gXAogIAlnZGIvY29tbWFuZC9wcm9tcHQucHkgXAogIAlnZGIvY29tbWFuZC9leHBsb3JlLnB5 IFwKICAJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IFwKIC0JZ2RiL2Z1bmN0aW9uL3N0cmZucy5w eQogKwlnZGIvZnVuY3Rpb24vc3RyZm5zLnB5IFwKLSsJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5 IFwKICsJZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBcCiArCWdkYi9mdW5jdGlvbi9pbl9zY29w ZS5weSBcCi0rCWdkYi9wcmludGluZy5weSBcCi0rCWdkYi9wcm9tcHQucHkgXAogKwlnZGIvdHlw ZXMucHkKICAKLSBTWVNURU1fR0RCSU5JVF9ESVIgPSBzeXN0ZW0tZ2RiaW5pdAotIFNZU1RFTV9H REJJTklUX0lOU1RBTExfRElSID0gJChERVNURElSKSQoR0RCX0RBVEFESVIpLyQoU1lTVEVNX0dE QklOSVRfRElSKQorIEdVSUxFX0RJUiA9IGd1aWxlCisgR1VJTEVfSU5TVEFMTF9ESVIgPSAkKERF U1RESVIpJChHREJfREFUQURJUikvJChHVUlMRV9ESVIpCiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9n ZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLWluZGV4IDc0ZGRjZjUuLmM0NWUxZWIg MTAwNjQ0CitpbmRleCBhMGZiNjZkLi4zZmFlNjFlIDEwMDY0NAogLS0tIGEvZ2RiL2RvYy9nZGIu dGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTEyMjIsNiArMTIyMiwxNiBA QCBmb3IgcmVtb3RlIGRlYnVnZ2luZy4KK0BAIC0xMjI1LDYgKzEyMjUsMTYgQEAgZm9yIHJlbW90 ZSBkZWJ1Z2dpbmcuCiAgUnVuIHVzaW5nIEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mg c3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1dC4KICBAYyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhl cmUgaXMgbW9yZSB0byAtdHR5LiAgSW52ZXN0aWdhdGUuCiAgCkBAIC0yMzIsNyArNzgsMTEgQEAg aW5kZXggNzRkZGNmNS4uYzQ1ZTFlYiAxMDA2NDQKICBAYyByZXNvbHZlIHRoZSBzaXR1YXRpb24g b2YgdGhlc2UgZXZlbnR1YWxseQogIEBpdGVtIC10dWkKICBAY2luZGV4IEBjb2Rley0tdHVpfQot QEAgLTIzNTIxLDggKzIzNTMxLDYgQEAgY29udGFpbmluZyBAY29kZXtlbmR9LiAgRm9yIGV4YW1w bGU6CitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9weXRob24udGV4aSBiL2dkYi9kb2MvcHl0aG9uLnRl eGkKK2luZGV4IDQ2ODg3ODMuLmEzMjEzM2EgMTAwNjQ0CistLS0gYS9nZGIvZG9jL3B5dGhvbi50 ZXhpCisrKysgYi9nZGIvZG9jL3B5dGhvbi50ZXhpCitAQCAtODgsOCArODgsNiBAQCBjb250YWlu aW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1 ZXtHREJQfSkgcHl0aG9uCkBAIC0yNDEsNjkzOCArOTEsMzE1IEBAIGluZGV4IDc0ZGRjZjUuLmM0 NWUxZWIgMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMjM1MzYsNiArMjM1NDQs MTQgQEAgY29udHJvbGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHByaW50LXN0YWNrfTogaWYg QGNvZGV7ZnVsbH0sIHRoZW4KLSBmdWxsIFB5dGhvbiBzdGFjayBwcmludGluZyBpcyBlbmFibGVk OyBpZiBAY29kZXtub25lfSwgdGhlbiBQeXRob24gc3RhY2sKLSBhbmQgbWVzc2FnZSBwcmludGlu ZyBpcyBkaXNhYmxlZDsgaWYgQGNvZGV7bWVzc2FnZX0sIHRoZSBkZWZhdWx0LCBvbmx5Ci0gdGhl IG1lc3NhZ2UgY29tcG9uZW50IG9mIHRoZSBlcnJvciBpcyBwcmludGVkLgorZGlmZiAtLWdpdCBh L2dkYi9nZGItZ2RiLmdkYi5pbiBiL2dkYi9nZGItZ2RiLmdkYi5pbgoraW5kZXggMDVhMzhiMi4u OTgwMWZkZiAxMDA2NDQKKy0tLSBhL2dkYi9nZGItZ2RiLmdkYi5pbgorKysrIGIvZ2RiL2dkYi1n ZGIuZ2RiLmluCitAQCAtMSw1ICsxLDE1IEBACisgZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9u bWVudCBmb3IgZGVidWdnaW5nIGdkYi5cbgorIAorKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFy eSBhbmQgInJlcXVpcmUiIGNvbW1hbmQuCisrcHl0aG9uCisrZnJvbSBvcy5wYXRoIGltcG9ydCBh YnNwYXRoCisrZ2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCisr Z2RiLnB5dGhvbmxpYmRpciA9IGdkYi5kYXRhZGlyCisrZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRh ZGlyICsgJy9nZGInXQorK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKKytlbmQKKytz b3VyY2UgQHNyY2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKICsKLStAa2luZGV4IG1h aW50IHNldCBweXRob24gYXV0by1sb2FkCi0rQGl0ZW0gbWFpbnQgc2V0IHB5dGhvbiBhdXRvLWxv YWQKLStCeSBkZWZhdWx0LCBAdmFsdWV7R0RCTn0gd2lsbCBhdHRlbXB0IHRvIGF1dG9tYXRpY2Fs bHkgbG9hZCBQeXRob24KLStjb2RlIHdoZW4gYW4gb2JqZWN0IGZpbGUgaXMgb3BlbmVkLiAgVGhp cyBjYW4gYmUgY29udHJvbGxlZCB1c2luZwotK0Bjb2Rle21haW50IHNldCBweXRob24gYXV0by1s b2FkfTogaWYgQGNvZGV7b259LCB0aGUgZGVmYXVsdCwgdGhlbgotK1B5dGhvbiBhdXRvLWxvYWRp bmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24KLSthdXRvLWxvYWRpbmcg aXMgZGlzYWJsZWQuCi0gQGVuZCB0YWJsZQorIGlmICEkZ2RiX2luaXRfZG9uZQorICAgc2V0IHZh cmlhYmxlICRnZGJfaW5pdF9kb25lID0gMQogIAotIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhl Y3V0ZSBhIFB5dGhvbiBzY3JpcHQgZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1kaWZmIC0tZ2l0IGEv Z2RiL2RvYy9vYnNlcnZlci50ZXhpIGIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi1pbmRleCA2MWFj YmIyLi5hYzM3MzI0IDEwMDY0NAotLS0tIGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi0rKysgYi9n ZGIvZG9jL29ic2VydmVyLnRleGkKLUBAIC0yNTMsNiArMjUzLDExIEBAIFRoZSB0cmFjZSBzdGF0 ZSB2YXJpYWJsZSBAdmFye3Rzdn0gaXMgZGVsZXRlZC4gIElmIEB2YXJ7dHN2fSBpcwotIFRoZSB0 cmFjZSBzdGF0ZSB2YWx1ZSBAdmFye3Rzdn0gaXMgbW9kaWZpZWQuCi0gQGVuZCBkZWZ0eXBlZnVu CitkaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKK2luZGV4IDEwODc1OWQuLmE2 MjRjMWIgMTAwNjQ0CistLS0gYS9nZGIvbWFpbi5jCisrKysgYi9nZGIvbWFpbi5jCitAQCAtMzcs NiArMzcsNyBAQAogIAotK0BjIEBkZWZ0eXBlZnVuIHZvaWQgbWFya191c2VkICh2b2lkKQotK0Bj IE1hcmsgYW55IHBvc3NpYmx5IHJlY2xhaW1hYmxlIG9iamVjdHMgYXMgdXNlZCBkdXJpbmcgYSBt YXJrLWFuZC1zd2VlcCBnYXJiYWdlCi0rQGMgY29sbGVjdG9yIHBhc3MuICBDdXJyZW50bHkgb25s eSBAY29kZXt0eXBlX21hcmtfdXNlZH0gbWFya2VyIGlzIHN1cHBvcnRlZC4KLStAYyBAZW5kIGRl ZnR5cGVmdW4KLSsKLSBAZGVmdHlwZWZ1biB2b2lkIHRlc3Rfbm90aWZpY2F0aW9uIChpbnQgQHZh cntzb21lYXJnfSkKLSBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGludGVybmFsIHRlc3Rpbmcu ICBEbyBub3QgdXNlLiAgCi0gU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cC4KLWRp ZmYgLS1naXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwotaW5kZXggMzZj OWY2Ni4uMWYyMTc2NiAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJleHByLmMKLSsrKyBiL2dkYi9k d2FyZjJleHByLmMKLUBAIC0xNDc4LDYgKzE0NzgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3Ry dWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAotIAkgIH0KLSAJICBicmVhazsKKyAjaW5jbHVk ZSAiaW50ZXJwcy5oIgorICNpbmNsdWRlICJtYWluLmgiCisrI2luY2x1ZGUgInB5dGhvbi9weXRo b24uaCIKKyAjaW5jbHVkZSAic291cmNlLmgiCisgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgor ICNpbmNsdWRlICJvYmpmaWxlcy5oIgorQEAgLTM1OSw2ICszNjAsOCBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQorICAgY2hhciAqY2RhcmcgPSBOVUxMOworICAgY2hhciAqdHR5YXJnID0g TlVMTDsKICAKLSsJY2FzZSBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzOgotKwkgIGlmIChjdHgt PmZ1bmNzLT5nZXRfb2JqZWN0X2FkZHJlc3MgPT0gTlVMTCkKLSsJICAgIGVycm9yIChfKCJEV0FS Ri0yIGV4cHJlc3Npb24gZXJyb3I6IERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgbXVzdCAiCi0r CSAgICAgICAgICAgImhhdmUgYSB2YWx1ZSB0byBwdXNoLiIpKTsKLSsJICByZXN1bHQgPSAoY3R4 LT5mdW5jcy0+Z2V0X29iamVjdF9hZGRyZXNzKSAoY3R4LT5iYXRvbik7Ci0rCSAgcmVzdWx0X3Zh bCA9IHZhbHVlX2Zyb21fdWxvbmdlc3QgKGFkZHJlc3NfdHlwZSwgcmVzdWx0KTsKLSsJICBicmVh azsKKysgIGludCBweXRob25fc2NyaXB0ID0gMDsKICsKLSAJZGVmYXVsdDoKLSAJICBlcnJvciAo XygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwotIAl9Ci1k aWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IDM5 ZGFkZjMuLjhjZWJiZTggMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5oCi0rKysgYi9nZGIv ZHdhcmYyZXhwci5oCi1AQCAtODQsMTIgKzg0LDggQEAgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dF9mdW5jcwotICAgICAgVGhpcyBjYW4gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSBpbmRleCBp cyBvdXQgb2YgcmFuZ2UuICAqLwotICAgQ09SRV9BRERSICgqZ2V0X2FkZHJfaW5kZXgpICh2b2lk ICpiYXRvbiwgdW5zaWduZWQgaW50IGluZGV4KTsKKyAgIC8qIFRoZXNlIGFyZSBzdGF0aWMgc28g dGhhdCB3ZSBjYW4gdGFrZSB0aGVpciBhZGRyZXNzIGluIGFuCisgICAgICBpbml0aWFsaXplci4g ICovCisgICBzdGF0aWMgaW50IHByaW50X2hlbHA7CitAQCAtNTY2LDEwICs1NjksMTQgQEAgY2Fw dHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICB7ImFyZ3MiLCBub19hcmd1bWVudCwgJnNl dF9hcmdzLCAxfSwKKyAgICAgICB7ImwiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwgJ2wnfSwKKyAg ICAgICB7InJldHVybi1jaGlsZC1yZXN1bHQiLCBub19hcmd1bWVudCwgJnJldHVybl9jaGlsZF9y ZXN1bHQsIDF9LAorKyNpZiBIQVZFX1BZVEhPTgorKyAgICAgIHsicHl0aG9uIiwgbm9fYXJndW1l bnQsIDAsICdQJ30sCisrICAgICAgeyJQIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCisrI2VuZGlm CisgICAgICAgezAsIG5vX2FyZ3VtZW50LCAwLCAwfQorICAgICB9OwogIAotLSNpZiAwCi0tICAv KiBOb3QgeWV0IGltcGxlbWVudGVkLiAgKi8KLS0KLSAgIC8qIFJldHVybiB0aGUgYG9iamVjdCBh ZGRyZXNzJyBmb3IgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCi0gICBDT1JFX0FERFIg KCpnZXRfb2JqZWN0X2FkZHJlc3MpICh2b2lkICpiYXRvbik7Ci0tI2VuZGlmCi0gfTsKKy0gICAg d2hpbGUgKDEpCisrICAgIHdoaWxlICghcHl0aG9uX3NjcmlwdCkKKyAgICAgICB7CisgCWludCBv cHRpb25faW5kZXg7CiAgCi0gLyogVGhlIGxvY2F0aW9uIG9mIGEgdmFsdWUuICAqLwotZGlmZiAt LWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggZGQ5MjFlYy4u MDFhODU2NiAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJmMmxv Yy5jCi1AQCAtMzA2LDYgKzMwNiw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCi0gewotICAg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOwotICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq cGVyX2N1OwotKyAgLyogRnJvbSBEV19UQUdfdmFyaWFibGUncyBEV19BVF9sb2NhdGlvbiAobm90 IERXX1RBR190eXBlJ3MKLSsgICAgIERXX0FUX2RhdGFfbG9jYXRpb24pIGZvciBEV19PUF9wdXNo X29iamVjdF9hZGRyZXNzLiAgKi8KLSsgIENPUkVfQUREUiBvYmplY3RfYWRkcmVzczsKLSB9Owor QEAgLTU4Nyw2ICs1OTQsOSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQorIAkgIGNhc2Ug MDoKKyAJICAgIC8qIExvbmcgb3B0aW9uIHRoYXQganVzdCBzZXRzIGEgZmxhZy4gICovCisgCSAg ICBicmVhazsKKysJICBjYXNlICdQJzoKKysJICAgIHB5dGhvbl9zY3JpcHQgPSAxOworKwkgICAg YnJlYWs7CisgCSAgY2FzZSBPUFRfU0U6CisgCSAgICBzeW1hcmcgPSBvcHRhcmc7CisgCSAgICBl eGVjYXJnID0gb3B0YXJnOworQEAgLTc5MSw3ICs4MDEsMzEgQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKICAKLSAvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9j X2Rlc2MuICAqLwotQEAgLTQzMyw3ICs0MzYsNyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAo c3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCisgICAvKiBOb3cgdGhhdCBn ZGJfaW5pdCBoYXMgY3JlYXRlZCB0aGUgaW5pdGlhbCBpbmZlcmlvciwgd2UncmUgaW4KKyAgICAg IHBvc2l0aW9uIHRvIHNldCBhcmdzIGZvciB0aGF0IGluZmVyaW9yLiAgKi8KKy0gIGlmIChzZXRf YXJncykKKysgIGlmIChweXRob25fc2NyaXB0KQorKyAgICB7CisrICAgICAgLyogVGhlIGZpcnN0 IGFyZ3VtZW50IGlzIGEgcHl0aG9uIHNjcmlwdCB0byBldmFsdWF0ZSwgYW5kCisrCSBzdWJzZXF1 ZW50IGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSBzY3JpcHQgZm9yCisrCSBwcm9jZXNzaW5n IHRoZXJlLiAgKi8KKysgICAgICBpZiAob3B0aW5kID49IGFyZ2MpCisrCXsKKysJICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRlcnIsCisrCQkJICAgICAgXygiJXM6IFB5dGhvbiBzY3JpcHQg ZmlsZSBuYW1lIHJlcXVpcmVkXG4iKSwKKysJCQkgICAgICBhcmd2WzBdKTsKKysJICBleGl0ICgx KTsKKysJfQorKworKyAgICAgIC8qIEZJWE1FOiBzaG91bGQgaGFuZGxlIGluZmVyaW9yIEkvTyBp bnRlbGxpZ2VudGx5IGhlcmUuCisrCSBFLmcuLCBzaG91bGQgYmUgcG9zc2libGUgdG8gcnVuIGdk YiBpbiBwaXBlbGluZSBhbmQgaGF2ZQorKwkgUHl0aG9uIChhbmQgZ2RiKSBvdXRwdXQgZ28gdG8g c3RkZXJyIG9yIGZpbGU7IGFuZCBpZiBhCisrCSBwcm9tcHQgaXMgbmVlZGVkLCBvcGVuIHRoZSB0 dHkuICAqLworKyAgICAgIHF1aWV0ID0gMTsKKysgICAgICAvKiBGSVhNRTogc2hvdWxkIHJlYWQg LmdkYmluaXQgaWYsIGFuZCBvbmx5IGlmLCBhIHByb21wdCBpcworKwkgcmVxdWVzdGVkIGJ5IHRo ZSBzY3JpcHQuICBUaG91Z2guLi4gbWF5YmUgdGhpcyBpcyBub3QKKysJIGlkZWFsPyAgKi8KKysg ICAgICAvKiBGSVhNRTogbGlrZXdpc2UsIHJlYWRpbmcgaW4gaGlzdG9yeS4gICovCisrICAgICAg aW5oaWJpdF9nZGJpbml0ID0gMTsKKysgICAgfQorKyAgZWxzZSBpZiAoc2V0X2FyZ3MpCisgICAg IHsKKyAgICAgICAvKiBUaGUgcmVtYWluaW5nIG9wdGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUg b3B0aW9ucyBmb3IgdGhlCisgCSBpbmZlcmlvci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9l eGVjIGZpbGUsIGFuZCB0aGUgcmVzdAorQEAgLTEwNzcsNyArMTExMSw4IEBAIGNhcHR1cmVkX21h aW4gKHZvaWQgKmRhdGEpCiAgCi0gICBpZiAoKmxlbmd0aCA9PSAwKQotICAgICBlcnJvciAoXygi Q291bGQgbm90IGZpbmQgdGhlIGZyYW1lIGJhc2UgZm9yIFwiJXNcIi4iKSwKLS0JICAgU1lNQk9M X05BVFVSQUxfTkFNRSAoZnJhbWVmdW5jKSk7Ci0rCSAgIFNZTUJPTF9QUklOVF9OQU1FIChmcmFt ZWZ1bmMpKTsKLSB9CisgICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBhbGwgdGhl IGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuCisgICAgICByZWFkLiAgKi8KKy0gIGluaXRfaGlzdG9y eSAoKTsKKysgIGlmICghcHl0aG9uX3NjcmlwdCkKKysgICAgaW5pdF9oaXN0b3J5ICgpOwogIAot IC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgQ29tcHV0 ZXMgdGhlIENGQSBmb3IKLUBAIC01MDAsNiArNTAzLDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2Fs bCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBjdV9vZmZzZXQgZGllX29mZnNldCkK LSAJCSAgICAgY3R4LT5mdW5jcy0+Z2V0X2ZyYW1lX3BjLCBjdHgtPmJhdG9uKTsKLSB9CisgICBp ZiAoYmF0Y2hfZmxhZykKKyAgICAgeworQEAgLTEwODgsMTMgKzExMjMsMjUgQEAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKKyAgIC8qIFNob3cgdGltZSBhbmQvb3Igc3BhY2UgdXNhZ2UuICAq LworICAgZG9fY2xlYW51cHMgKHByZV9zdGF0X2NoYWluKTsKICAKLStzdGF0aWMgQ09SRV9BRERS Ci0rZHdhcmZfZXhwcl9vYmplY3RfYWRkcmVzcyAodm9pZCAqYmF0b24pCi0rewotKyAgc3RydWN0 IGR3YXJmX2V4cHJfYmF0b24gKmRlYmF0b24gPSBiYXRvbjsKLSsKLSsgIC8qIFRoZSBtZXNzYWdl IGlzIHN1cHByZXNzZWQgaW4gRFdBUkZfQkxPQ0tfRVhFQy4gICovCi0rICBpZiAoZGViYXRvbi0+ b2JqZWN0X2FkZHJlc3MgPT0gMCkKLSsgICAgZXJyb3IgKF8oIkNhbm5vdCByZXNvbHZlIERXX09Q X3B1c2hfb2JqZWN0X2FkZHJlc3MgZm9yIGEgbWlzc2luZyBvYmplY3QiKSk7CistICAvKiBOT1RF OiBjYWduZXkvMTk5OS0xMS0wNzogVGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QK Ky0gICAgIG1vdmluZyB0aGlzIGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2Nv bW1hbmRfbG9vcCgpCistICAgICBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUg bWFpbiB0aGluZyBob2xkaW5nIGJhY2sgdGhhdAorLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZF TCgpIC0gaGFzIGJlZW4gZWxpbWluYXRlZC4gICovCistICB3aGlsZSAoMSkKKysjaWYgSEFWRV9Q WVRIT04KKysgIGlmIChweXRob25fc2NyaXB0KQorICAgICB7CistICAgICAgY2F0Y2hfZXJyb3Jz IChjYXB0dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOworKyAgICAg IGV4dGVybiBpbnQgcGFnaW5hdGlvbl9lbmFibGVkOworKyAgICAgIHBhZ2luYXRpb25fZW5hYmxl ZCA9IDA7CisrICAgICAgcnVuX3B5dGhvbl9zY3JpcHQgKGFyZ2MgLSBvcHRpbmQsICZhcmd2W29w dGluZF0pOworKyAgICAgIHJldHVybiAxOworKyAgICB9CisrICBlbHNlCisrI2VuZGlmCisrICAg IHsKKysgICAgICAvKiBOT1RFOiBjYWduZXkvMTk5OS0xMS0wNzogVGhlcmUgaXMgcHJvYmFibHkg bm8gcmVhc29uIGZvciBub3QKKysJIG1vdmluZyB0aGlzIGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5k IGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCgpCisrCSBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBw cm9wZXIuICBUaGUgbWFpbiB0aGluZyBob2xkaW5nIGJhY2sgdGhhdAorKwkgY2hhbmdlIC0gU0VU X1RPUF9MRVZFTCgpIC0gaGFzIGJlZW4gZWxpbWluYXRlZC4gKi8KKysgICAgICB3aGlsZSAoMSkK KysJeworKwkgIGNhdGNoX2Vycm9ycyAoY2FwdHVyZWRfY29tbWFuZF9sb29wLCAwLCAiIiwgUkVU VVJOX01BU0tfQUxMKTsKKysJfQorICAgICB9CisgICAvKiBObyBleGl0IC0tIGV4aXQgaXMgdGhy b3VnaCBxdWl0X2NvbW1hbmQuICAqLworIH0KK0BAIC0xMTI4LDYgKzExNzUsMTIgQEAgcHJpbnRf Z2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCisgICBmcHV0c191bmZpbHRlcmVkIChf KCJcCisgVGhpcyBpcyB0aGUgR05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKKyAgICAgZ2RiIFtv cHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCisr ICAgIGdkYiBbb3B0aW9uc10gLS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1l bnRzIC4uLl1cbiIpLCBzdHJlYW0pOworKyNpZiBIQVZFX1BZVEhPTgorKyAgZnB1dHNfdW5maWx0 ZXJlZCAoXygiXAorKyAgICBnZGIgW29wdGlvbnNdIFstLXB5dGhvbnwtUF0gc2NyaXB0LWZpbGUg W3NjcmlwdC1hcmd1bWVudHMgLi4uXVxuIiksIHN0cmVhbSk7CisrI2VuZGlmCisrICBmcHV0c191 bmZpbHRlcmVkIChfKCJcblwKKyAgICAgZ2RiIFtvcHRpb25zXSAtLWFyZ3MgZXhlY3V0YWJsZS1m aWxlIFtpbmZlcmlvci1hcmd1bWVudHMgLi4uXVxuXG5cCisgIiksIHN0cmVhbSk7CisgICBmcHV0 c191bmZpbHRlcmVkIChfKCJcCitAQCAtMTE3Myw2ICsxMjI2LDEzIEBAIE91dHB1dCBhbmQgdXNl ciBpbnRlcmZhY2UgY29udHJvbDpcblxuXAorICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorICAg LS1kYnggICAgICAgICAgICAgIERCWCBjb21wYXRpYmlsaXR5IG1vZGUuXG5cCisgICAtLXhkYiAg ICAgICAgICAgICAgWERCIGNvbXBhdGliaWxpdHkgbW9kZS5cblwKKysiKSwgc3RyZWFtKTsKKysj aWYgSEFWRV9QWVRIT04KKysgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKKysgIC0tcHl0aG9uLCAt UCAgICAgICBGb2xsb3dpbmcgYXJndW1lbnQgaXMgUHl0aG9uIHNjcmlwdCBmaWxlOyByZW1haW5p bmdcblwKKysgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byBzY3Jp cHQuXG4iKSwgc3RyZWFtKTsKKysjZW5kaWYKKysgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKKyAg IC1xLCAtLXF1aWV0LCAtLXNpbGVudFxuXAorICAgICAgICAgICAgICAgICAgICAgIERvIG5vdCBw cmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXG5cCisgIiksIHN0cmVhbSk7CitkaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weSBiL2dk Yi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi42ZmE0OGZmCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv cHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5CitAQCAtMCwwICsxLDM3IEBA CisrIyBJZ25vcmUgZXJyb3JzIGluIHVzZXIgY29tbWFuZHMuCiArCi0rICByZXR1cm4gZGViYXRv bi0+b2JqZWN0X2FkZHJlc3M7Ci0rfQorKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwotKy8qIEFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlIHdlIGFy ZSBjdXJyZW50bHkgcmVmZXJyaW5nIHRvLiAgSXQgaXMgc2V0IGZyb20KLSsgICBEV19UQUdfdmFy aWFibGUncyBEV19BVF9sb2NhdGlvbiAobm90IERXX1RBR190eXBlJ3MgRFdfQVRfZGF0YV9sb2Nh dGlvbikgZm9yCi0rICAgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCisrIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgogKwotK3N0YXRpYyBDT1JFX0FERFIgb2JqZWN0X2FkZHJlc3M7 CisraW1wb3J0IGdkYgogKwotKy8qIENhbGxlcnMgdXNlIG9iamVjdF9hZGRyZXNzX3NldCB3aGls ZSB0aGVpciBjYWxsZXJzIHVzZSB0aGUgcmVzdWx0IHNldCBzbyB3ZQotKyAgIGNhbm5vdCBydW4g dGhlIGNsZWFudXAgYXQgdGhlIGxvY2FsIGJsb2NrIG9mIG91ciBkaXJlY3QgY2FsbGVyLiAgU3Rp bGwgd2UKLSsgICBzaG91bGQgcmVzZXQgT0JKRUNUX0FERFJFU1MgYXQgbGVhc3QgZm9yIHRoZSBu ZXh0IEdEQiBjb21tYW5kLiAgKi8KKytjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29t bWFuZCk6CisrICAgICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVy cm9ycy4KKytPbmx5IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCisrVGhpcyBpcyBw cmltYXJpbHkgdXNlZnVsIGluIHNjcmlwdHMuIiIiCiArCi0rc3RhdGljIHZvaWQKLStvYmplY3Rf YWRkcmVzc19jbGVhbnVwICh2b2lkICpwcmV2X3NhdmVfdm9pZHApCi0rewotKyAgQ09SRV9BRERS ICpwcmV2X3NhdmUgPSBwcmV2X3NhdmVfdm9pZHA7CisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6 CisrICAgICAgICBzdXBlciAoSWdub3JlRXJyb3JzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJp Z25vcmUtZXJyb3JzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2RiLkNPTU1BTkRfT0JTQ1VSRSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGSVhNRS4uLgorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFO RCkKICsKLSsgIG9iamVjdF9hZGRyZXNzID0gKnByZXZfc2F2ZTsKLSsgIHhmcmVlIChwcmV2X3Nh dmUpOwotK30KKysgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6CisrICAgICAg ICB0cnk6CisrICAgICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJvbV90dHkpCisrICAgICAg ICBleGNlcHQ6CisrICAgICAgICAgICAgcGFzcwogKwotKy8qIFNldCB0aGUgYmFzZSBhZGRyZXNz IC0gRFdfQVRfbG9jYXRpb24gLSBvZiBhIHZhcmlhYmxlLiAgSXQgaXMgYmVpbmcgbGF0ZXIKLSsg ICB1c2VkIHRvIGRlcml2ZSBvdGhlciBvYmplY3QgYWRkcmVzc2VzIGJ5IERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MuCisrSWdub3JlRXJyb3JzQ29tbWFuZCAoKQorZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL3BhaG9sZS5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjYzNmY5 OWQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9s ZS5weQorQEAgLTAsMCArMSw4MSBAQAorKyMgcGFob2xlIGNvbW1hbmQgZm9yIGdkYgogKwotKyAg IEl0IHdvdWxkIGJlIHVzZWZ1bCB0byBzYW5pdHkgY2hlY2sgQUREUkVTUyAtIHN1Y2ggYXMgZm9y IHNvbWUgb2JqZWN0cyB3aXRoCi0rICAgdW5zZXQgdmFsdWVfcmF3X2FkZHJlc3MgLSBidXQgc29t ZSB2YWxpZCBhZGRyZXNzZXMgbWF5IGJlIHplcm8gKHN1Y2ggYXMgZmlyc3QKLSsgICBvYmplY3Rz IGluIHJlbG9jYXRhYmxlIC5vIGZpbGVzKS4gICovCisrIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw MDksIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rdm9pZAotK29iamVj dF9hZGRyZXNzX3NldCAoQ09SRV9BRERSIGFkZHJlc3MpCi0rewotKyAgQ09SRV9BRERSICpwcmV2 X3NhdmU7CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgcHJldl9zYXZlID0g eG1hbGxvYyAoc2l6ZW9mICpwcmV2X3NhdmUpOwotKyAgKnByZXZfc2F2ZSA9IG9iamVjdF9hZGRy ZXNzOwotKyAgbWFrZV9jbGVhbnVwIChvYmplY3RfYWRkcmVzc19jbGVhbnVwLCBwcmV2X3NhdmUp OworK2ltcG9ydCBnZGIKICsKLSsgIG9iamVjdF9hZGRyZXNzID0gYWRkcmVzczsKLSt9CisrY2xh c3MgUGFob2xlIChnZGIuQ29tbWFuZCk6CisrICAgICIiIlNob3cgdGhlIGhvbGVzIGluIGEgc3Ry dWN0dXJlLgorK1RoaXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSB0eXBlIG5h bWUuCisrSXQgcHJpbnRzIHRoZSB0eXBlIGFuZCBkaXNwbGF5cyBjb21tZW50cyBzaG93aW5nIHdo ZXJlIGhvbGVzIGFyZS4iIiIKICsKLSsvKiBFdmFsdWF0ZSBEV0FSRiBsb2NhdGlvbiBsaXN0IGF0 IERMTEJBVE9OIGV4cGVjdGluZyBpdCBwcm9kdWNlcyBleGFjdGx5IG9uZQotKyAgIENPUkVfQURE UiByZXN1bHQgc3RvcmVkIHRvICpBRERSUCBvbiB0aGUgRFdBUkYgc3RhY2sgc3RhY2suICBJZiB0 aGUgcmVzdWx0Ci0rICAgY291bGQgbm90IGJlIGZvdW5kIHJldHVybiB6ZXJvIGFuZCBrZWVwICpB RERSUCB1bmNoYW5nZWQuICAqLwotKwotK2ludAotK2R3YXJmX2xvY2xpc3RfYmF0b25fZXZhbCAo c3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpkbGxiYXRvbiwKLSsJCQkgIHN0cnVjdCB0eXBl ICp0eXBlLCBDT1JFX0FERFIgKmFkZHJwKQotK3sKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCk7Ci0rICBjb25zdCBnZGJfYnl0ZSAqZGF0YTsK LSsgIHNpemVfdCBzaXplOwotKyAgc3RydWN0IHZhbHVlICp2YWw7Ci0rCi0rICBpZiAoIWRsbGJh dG9uKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGRhdGEgPSBkd2FyZjJfZmluZF9sb2NhdGlvbl9l eHByZXNzaW9uIChkbGxiYXRvbiwgJnNpemUsCi0rCQkJCQkgIGdldF9mcmFtZV9hZGRyZXNzX2lu X2Jsb2NrIChmcmFtZSkpOwotKyAgaWYgKGRhdGEgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7Ci0r Ci0rICB2YWwgPSBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHR5cGUsIGZyYW1lLCBkYXRhLCBz aXplLCBkbGxiYXRvbi0+cGVyX2N1KTsKLSsgIGlmICh2YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2YWwp KQotKyAgICByZXR1cm4gMDsKLSsKLSsgICphZGRycCA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7 Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0gLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzYy4gICovCi0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICoKLUBAIC0xMjE1 LDEwICsxMjk3LDEyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdfZW50cnlfdmFsdWUgKHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKLSAKLSAgIHNhdmVkX2N0eC5nZGJhcmNoID0g Y3R4LT5nZGJhcmNoOwotICAgc2F2ZWRfY3R4LmFkZHJfc2l6ZSA9IGN0eC0+YWRkcl9zaXplOwot KyAgc2F2ZWRfY3R4LnJlZl9hZGRyX3NpemUgPSBjdHgtPnJlZl9hZGRyX3NpemU7Ci0gICBzYXZl ZF9jdHgub2Zmc2V0ID0gY3R4LT5vZmZzZXQ7Ci0gICBzYXZlZF9jdHguYmF0b24gPSBjdHgtPmJh dG9uOwotICAgY3R4LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAoZHdhcmYyX3Blcl9jdV9v YmpmaWxlIChiYXRvbl9sb2NhbC5wZXJfY3UpKTsKLSAgIGN0eC0+YWRkcl9zaXplID0gZHdhcmYy X3Blcl9jdV9hZGRyX3NpemUgKGJhdG9uX2xvY2FsLnBlcl9jdSk7Ci0rICBjdHgtPnJlZl9hZGRy X3NpemUgPSBkd2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKGJhdG9uX2xvY2FsLnBlcl9jdSk7 Ci0gICBjdHgtPm9mZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKGJhdG9uX2xvY2Fs LnBlcl9jdSk7Ci0gICBjdHgtPmJhdG9uID0gJmJhdG9uX2xvY2FsOwotIAotQEAgLTEyMjYsMTAg KzEzMTAsNzggQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0 IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAotIAotICAgY3R4LT5nZGJhcmNoID0gc2F2ZWRfY3R4 LmdkYmFyY2g7Ci0gICBjdHgtPmFkZHJfc2l6ZSA9IHNhdmVkX2N0eC5hZGRyX3NpemU7Ci0rICBj dHgtPnJlZl9hZGRyX3NpemUgPSBzYXZlZF9jdHgucmVmX2FkZHJfc2l6ZTsKLSAgIGN0eC0+b2Zm c2V0ID0gc2F2ZWRfY3R4Lm9mZnNldDsKLSAgIGN0eC0+YmF0b24gPSBzYXZlZF9jdHguYmF0b247 Ci0gfQotIAotK3N0YXRpYyBDT1JFX0FERFIgZHdhcmZfZXhwcl9nZXRfYWRkcl9pbmRleCAodm9p ZCAqYmF0b24sIHVuc2lnbmVkIGludCBpbmRleCk7Ci0rCi0rLyogRXZhbHVhdGUgRFdBUkYgZXhw cmVzc2lvbiBhdCBEQVRBIC4uLiBEQVRBICsgU0laRSB3aXRoIGl0cyByZXN1bHQgcmVhZGFibGUK LSsgICBieSBkd2FyZl9leHByX2ZldGNoIChSRVRWQUwsIDApLiAgRlJBTUUgcGFyYW1ldGVyIGNh biBiZSBOVUxMIHRvIGNhbGwKLSsgICBnZXRfc2VsZWN0ZWRfZnJhbWUgdG8gZmluZCBpdC4gIFJl dHVybmVkIGR3YXJmX2V4cHJfY29udGV4dCBmcmVlaW5nIGlzCi0rICAgcHVzaGVkIG9uIHRoZSBj bGVhbnVwIGNoYWluLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2R3YXJmX2V4cHJfcHJlcF9jdHgg KHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l LAotKwkJICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwgc2l6ZV90IHNpemUsCi0rCQkgICAgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmZfZXhw cl9iYXRvbiBiYXRvbjsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9j dV9vYmpmaWxlIChwZXJfY3UpOwotKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7 Ci0rCi0rICBiYXRvbi5mcmFtZSA9IGZyYW1lOwotKyAgYmF0b24ucGVyX2N1ID0gcGVyX2N1Owot KyAgYmF0b24ub2JqZWN0X2FkZHJlc3MgPSBvYmplY3RfYWRkcmVzczsKLSsKLSsgIGN0eC0+Z2Ri YXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKyAgY3R4LT5hZGRyX3NpemUgPSBk d2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVyX2N1KTsKLSsgIGN0eC0+cmVmX2FkZHJfc2l6ZSA9 IGR3YXJmMl9wZXJfY3VfcmVmX2FkZHJfc2l6ZSAocGVyX2N1KTsKLSsgIGN0eC0+b2Zmc2V0ID0g ZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAocGVyX2N1KTsKLSsgIGN0eC0+YmF0b24gPSAmYmF0 b247Ci0rICBjdHgtPmZ1bmNzID0gJmR3YXJmX2V4cHJfY3R4X2Z1bmNzOwotKwotKyAgZHdhcmZf ZXhwcl9ldmFsIChjdHgsIGRhdGEsIHNpemUpOwotK30KLSsKLSsvKiBFdmFsdWF0ZSBEV0FSRiBl eHByZXNzaW9uIGF0IERMQkFUT04gZXhwZWN0aW5nIGl0IHByb2R1Y2VzIGV4YWN0bHkgb25lCi0r ICAgQ09SRV9BRERSIHJlc3VsdCBvbiB0aGUgRFdBUkYgc3RhY2sgc3RhY2suICAqLwotKwotK0NP UkVfQUREUgotK2R3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoc3RydWN0IGR3YXJmMl9sb2NleHBy X2JhdG9uICpkbGJhdG9uKQotK3sKLSsgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsK LSsgIENPUkVfQUREUiByZXR2YWw7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsKLSsg IGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQgKCk7Ci0rICBiYWNrX3RvID0gbWFrZV9jbGVh bnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotKwotKyAgZHdhcmZfZXhwcl9wcmVw X2N0eCAoY3R4LCBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpLCBkbGJhdG9uLT5kYXRhLAotKwkJ ICAgICAgIGRsYmF0b24tPnNpemUsIGRsYmF0b24tPnBlcl9jdSk7Ci0rCi0rICBpZiAoY3R4LT5u dW1fcGllY2VzID4gMCkKLSsgICAgZXJyb3IgKF8oIkRXX09QXypwaWVjZSBpcyB1bnN1cHBvcnRl ZCBmb3IgRFdfRk9STV9ibG9jayIpKTsKLSsKLSsgIHJldHZhbCA9IGR3YXJmX2V4cHJfZmV0Y2hf YWRkcmVzcyAoY3R4LCAwKTsKLSsKLSsgIGlmIChjdHgtPmxvY2F0aW9uID09IERXQVJGX1ZBTFVF X1JFR0lTVEVSKQotKyAgICB7Ci0rICAgICAgLyogSW5saW5lZCBkd2FyZl9leHByX3JlYWRfcmVn IGFzIHdlIG5vIGxvbmdlciBoYXZlIHRoZSBiYXRvbi4gKi8KLSsKLSsgICAgICBpbnQgZ2RiX3Jl Z251bSA9IGdkYmFyY2hfZHdhcmYyX3JlZ190b19yZWdudW0gKGN0eC0+Z2RiYXJjaCwgcmV0dmFs KTsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGJ1aWx0aW5fdHlwZSAoY3R4LT5nZGJhcmNo KS0+YnVpbHRpbl9kYXRhX3B0cjsKLSsgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBn ZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpOwotKwotKyAgICAgIHJldHZhbCA9IGFkZHJlc3NfZnJv bV9yZWdpc3RlciAodHlwZSwgZ2RiX3JlZ251bSwgZnJhbWUpOwotKyAgICB9Ci0rCi0rICBkb19j bGVhbnVwcyAoYmFja190byk7Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSAvKiBDYWxs YmFjayBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLgotICAgIEZldGNoIHRo ZSBhZGRyZXNzIGluZGV4ZWQgYnkgRFdfT1BfR05VX2FkZHJfaW5kZXguICAqLwotIAotQEAgLTIy MDUsNyArMjM1Nyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2Z1 bmNzIGR3YXJmX2V4cHJfY3R4X2Z1bmNzID0KLSAgIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwKLSAg IGR3YXJmX2V4cHJfZ2V0X2Jhc2VfdHlwZSwKLSAgIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdf ZW50cnlfdmFsdWUsCi0tICBkd2FyZl9leHByX2dldF9hZGRyX2luZGV4Ci0rICBkd2FyZl9leHBy X2dldF9hZGRyX2luZGV4LAotKyAgZHdhcmZfZXhwcl9vYmplY3RfYWRkcmVzcwotIH07Ci0gCi0g LyogRXZhbHVhdGUgYSBsb2NhdGlvbiBkZXNjcmlwdGlvbiwgc3RhcnRpbmcgYXQgREFUQSBhbmQg d2l0aCBsZW5ndGgKLUBAIC0yMjIwLDcgKzIzNzMsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rl c2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJ CQkgICAgICAgTE9OR0VTVCBieXRlX29mZnNldCkKLSB7Ci0gICBzdHJ1Y3QgdmFsdWUgKnJldHZh bDsKLS0gIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uIGJhdG9uOwotICAgc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4OwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVlX2No YWluOwotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUg KHBlcl9jdSk7Ci1AQCAtMjIzMiwyOSArMjM4NCwxOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rl c2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAg IGlmIChzaXplID09IDApCi0gICAgIHJldHVybiBhbGxvY2F0ZV9vcHRpbWl6ZWRfb3V0X3ZhbHVl ICh0eXBlKTsKLSAKLS0gIGJhdG9uLmZyYW1lID0gZnJhbWU7Ci0tICBiYXRvbi5wZXJfY3UgPSBw ZXJfY3U7Ci0tCi0gICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwotICAgb2xkX2No YWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotICAgdmFs dWVfY2hhaW4gPSBtYWtlX2NsZWFudXBfdmFsdWVfZnJlZV90b19tYXJrICh2YWx1ZV9tYXJrICgp KTsKLSAKLS0gIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotLSAg Y3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVyX2N1KTsKLS0gIGN0 eC0+cmVmX2FkZHJfc2l6ZSA9IGR3YXJmMl9wZXJfY3VfcmVmX2FkZHJfc2l6ZSAocGVyX2N1KTsK LS0gIGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAocGVyX2N1KTsKLS0g IGN0eC0+YmF0b24gPSAmYmF0b247Ci0tICBjdHgtPmZ1bmNzID0gJmR3YXJmX2V4cHJfY3R4X2Z1 bmNzOwotLQotICAgVFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCi0gICAgIHsKLS0g ICAgICBkd2FyZl9leHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6ZSk7Ci0rICAgICAgZHdhcmZfZXhw cl9wcmVwX2N0eCAoY3R4LCBmcmFtZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKLSAgICAgfQotICAg aWYgKGV4LnJlYXNvbiA8IDApCi0gICAgIHsKLSAgICAgICBpZiAoZXguZXJyb3IgPT0gTk9UX0FW QUlMQUJMRV9FUlJPUikKLSAJewotLQkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotIAkgIHJl dHZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSAJICBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZh aWxhYmxlIChyZXR2YWwsIDAsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gCSAgcmV0dXJuIHJldHZh bDsKLUBAIC0yMzI5LDYgKzI0NzAsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwg KHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0gCSAgICBpbnQg aW5fc3RhY2tfbWVtb3J5ID0gZHdhcmZfZXhwcl9mZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwg MCk7Ci0gCi0gCSAgICBkb19jbGVhbnVwcyAodmFsdWVfY2hhaW4pOwotKwotKwkgICAgLyogRnJh bWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBvZiBUWVBFX0RZTkFNSUMuICAqLwot KwkgICAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCk7Ci0rCSAgICBzZWxl Y3RfZnJhbWUgKGZyYW1lKTsKLSsKLSsJICAgIC8qIG9iamVjdF9hZGRyZXNzX3NldCBjYWxsZWQg aGVyZSBpcyByZXF1aXJlZCBpbiBBTExPQ0FURV9WQUxVRSdzCi0rCSAgICAgICBDSEVDS19UWVBF REVGIGZvciB0aGUgb2JqZWN0J3MgcG9zc2libGUKLSsJICAgICAgIERXX09QX3B1c2hfb2JqZWN0 X2FkZHJlc3MuICAqLwotKwkgICAgb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRyZXNzKTsKLSsKLSAJ ICAgIHJldHZhbCA9IHZhbHVlX2F0X2xhenkgKHR5cGUsIGFkZHJlc3MgKyBieXRlX29mZnNldCk7 Ci0gCSAgICBpZiAoaW5fc3RhY2tfbWVtb3J5KQotIAkgICAgICBzZXRfdmFsdWVfc3RhY2sgKHJl dHZhbCwgMSk7Ci1AQCAtNDI0MSw4ICs0MzkyLDcgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9y ZWYgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gCQkJ ICAgICAgIGRsYmF0b24tPnBlcl9jdSk7Ci0gfQotIAotLS8qIFRoZSBzZXQgb2YgbG9jYXRpb24g ZnVuY3Rpb25zIHVzZWQgd2l0aCB0aGUgRFdBUkYtMiBleHByZXNzaW9uCi0tICAgZXZhbHVhdG9y IGFuZCBsb2NhdGlvbiBsaXN0cy4gICovCi0rLyogVGhlIHNldCBvZiBsb2NhdGlvbiBmdW5jdGlv bnMgdXNlZCB3aXRoIHRoZSBEV0FSRi0yIGxvY2F0aW9uIGxpc3RzLiAgKi8KLSBjb25zdCBzdHJ1 Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKLSAgIGxvY2xp c3RfcmVhZF92YXJpYWJsZSwKLSAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZV9hdF9lbnRyeSwKLWRp ZmYgLS1naXQgYS9nZGIvZHdhcmYybG9jLmggYi9nZGIvZHdhcmYybG9jLmgKLWluZGV4IDc4NmU3 N2MuLjU1ZmY0ZTYgMTAwNjQ0Ci0tLS0gYS9nZGIvZHdhcmYybG9jLmgKLSsrKyBiL2dkYi9kd2Fy ZjJsb2MuaAotQEAgLTEzNyw2ICsxMzcsMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9u Ci0gCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2Nl eHByX2Z1bmNzOwotIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2Fy ZjJfbG9jbGlzdF9mdW5jczsKLStleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9v cHMgZHdhcmYyX21pc3NpbmdfZnVuY3M7Ci0rCi0rZXh0ZXJuIHZvaWQgb2JqZWN0X2FkZHJlc3Nf c2V0IChDT1JFX0FERFIgYWRkcmVzcyk7Ci0rCi0rZXh0ZXJuIENPUkVfQUREUiBkd2FyZl9sb2Nl eHByX2JhdG9uX2V2YWwKLSsgIChzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmRsYmF0b24p OwotKwotK2V4dGVybiBpbnQgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsIChzdHJ1Y3QgZHdhcmYy X2xvY2xpc3RfYmF0b24gKmRsbGJhdG9uLAotKwkJCQkgICAgIHN0cnVjdCB0eXBlICp0eXBlLCBD T1JFX0FERFIgKmFkZHJwKTsKLSAKLSBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9ibG9ja19v cHMgZHdhcmYyX2Jsb2NrX2ZyYW1lX2Jhc2VfbG9jZXhwcl9mdW5jczsKLSBleHRlcm4gY29uc3Qg c3RydWN0IHN5bWJvbF9ibG9ja19vcHMgZHdhcmYyX2Jsb2NrX2ZyYW1lX2Jhc2VfbG9jbGlzdF9m dW5jczsKLWRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwot aW5kZXggMjNiY2ZlMC4uY2E5ZmZkYSAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsr KyBiL2dkYi9kd2FyZjJyZWFkLmMKLUBAIC0xNzM4LDYgKzE3MzgsOSBAQCBzdGF0aWMgdm9pZCBm aWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotIAkJCQkgICBzdHJ1 Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uLAotIAkJCQkgICBjb25zdCBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyKTsKLSAKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpk d2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uCi0rICAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAq YXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotKwotIHN0YXRpYyB2b2lkIGR3YXJmMl9zeW1i b2xfbWFya19jb21wdXRlZCAoY29uc3Qgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKLSAJCQkJCSBz dHJ1Y3Qgc3ltYm9sICpzeW0sCi0gCQkJCQkgc3RydWN0IGR3YXJmMl9jdSAqY3UsCi1AQCAtMTc3 MSw2ICsxNzc0LDkgQEAgc3RhdGljIHZvaWQgYWdlX2NhY2hlZF9jb21wX3VuaXRzICh2b2lkKTsK LSAKLSBzdGF0aWMgdm9pZCBmcmVlX29uZV9jYWNoZWRfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9kYXRhICopOwotIAotK3N0YXRpYyB2b2lkIGZldGNoX2RpZV90eXBlX2F0dHJzIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsCi0rCQkJCSAgc3RydWN0IGR3 YXJmMl9jdSAqY3UpOwotKwotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0X2RpZV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICop OwotIAotQEAgLTE3OTksNiArMTgwNSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90 eXBlX2F0X29mZnNldCAoc2VjdF9vZmZzZXQsCi0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICpnZXRf ZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7Ci0g Ci0rc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmYyX2F0dHJfdG9fbG9j ZXhwcl9iYXRvbgotKyAgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KTsKLSsKLSBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9xdWV1ZSAodm9pZCAq ZHVtbXkpOwotIAotIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTEzMjI3LDYgKzEzMjM2LDI5IEBAIHByb2Nlc3NfZW51 bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKLSAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7Ci0gfQotIAotKy8qIENyZWF0 ZSBhIG5ldyBhcnJheSBkaW1lbnNpb24gcmVmZXJlbmNpbmcgaXRzIHRhcmdldCB0eXBlIFRZUEUu Ci0rCi0rICAgTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVzZW50 ZWQgYXMgYSBzdGFjayBvZgotKyAgIHNpbmdsZWRpbWVuc2lvbmFsIGFycmF5cyBiZWluZyByZWZl cmVuY2VkIGJ5IHRoZWlyIFRZUEVfVEFSR0VUX1RZUEUuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3Qg dHlwZSAqCi0rY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHR5cGUgPSBjcmVhdGVfYXJyYXlfdHlw ZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlwZSk7Ci0rCi0rICAvKiBUaGVzZSBnZW5lcmljIHR5cGUg YXR0cmlidXRlcyBuZWVkIHRvIGJlIGZldGNoZWQgYnkKLSsgICAgIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCA8bXVsdGlfZjc3X3N1YnNjcmlwdD4ncyBjYWxsIG9mCi0rICAgICB2YWx1ZV9zdWJz Y3JpcHRlZF9ydmFsdWUgb25seSBmb3IgdGhlIGlubmVybW9zdCBhcnJheSB0eXBlLiAgKi8KLSsg IGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHR5cGUsIGN1KTsKLSsKLSsgIC8qIFRoZXNlIGdl bmVyaWMgdHlwZSBhdHRyaWJ1dGVzIGFyZSBjaGVja2VkIGZvciBhbGxvY2F0ZWQvYXNzb2NpYXRl ZAotKyAgICAgdmFsaWRpdHkgd2hpbGUgYWNjZXNzaW5nIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JM T0NLLiAgKi8KLSsgIGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHJhbmdlX3R5cGUsIGN1KTsK LSsKLSsgIHJldHVybiB0eXBlOwotK30KLSsKLSAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlvbiBm cm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KLSAgICB0aGUgRElFJ3Mg dHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25hbAot ICAgIGFycmF5cy4gICovCi1AQCAtMTMyNDAsNyArMTMyNzIsNyBAQCByZWFkX2FycmF5X3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0cnVjdCB0 eXBlICplbGVtZW50X3R5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKLSAgIHN0cnVjdCB0 eXBlICoqcmFuZ2VfdHlwZXMgPSBOVUxMOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0g IGludCBuZGltID0gMDsKLSsgIGludCBuZGltID0gMCwgaTsKLSAgIHN0cnVjdCBjbGVhbnVwICpi YWNrX3RvOwotICAgY29uc3QgY2hhciAqbmFtZTsKLSAKLUBAIC0xMzI5MywxNyArMTMzMjUsMTkg QEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCi0gICB0eXBlID0gZWxlbWVudF90eXBlOwotIAotICAgaWYgKHJlYWRfYXJyYXlfb3Jk ZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCi0tICAgIHsKLS0gICAgICBpbnQgaSA9 IDA7Ci0tCi0tICAgICAgd2hpbGUgKGkgPCBuZGltKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5 cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOwotLSAgICB9Ci0tICBlbHNlCi0tICAg IHsKLS0gICAgICB3aGlsZSAobmRpbS0tID4gMCkKLS0JdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBl IChOVUxMLCB0eXBlLCByYW5nZV90eXBlc1tuZGltXSk7Ci0tICAgIH0KLSsgICAgZm9yIChpID0g MDsgaSA8IG5kaW07IGkrKykKLSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1l bnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKLSsgIGVsc2UgLyogKHJlYWRf YXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFqb3IpICovCi0rICAgIGZvciAo aSA9IG5kaW0gLSAxOyBpID49IDA7IGktLSkKLSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9h cnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKLSsKLSsgIC8q IERhdGEgbG9jYXRpb25zIHNob3VsZCBiZSBzZXQgb25seSBmb3IgdGhlIG91dGVybW9zdCBkaW1l bnNpb24gYXMgdGhleQotKyAgICAgd291bGQgYmUgY29uZnVzaW5nIGZvciB0aGUgZGVyZWZlcmVu Y2VkIG9mZnNldCBvbiB0aGUgaW5uZXIgb25lcy4gICovCi0rICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfZGF0YV9sb2NhdGlvbiwgY3UpOwotKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9j ayAoYXR0cikpCi0rICAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAodHlwZSkKLSsg ICAgICA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9h c3NlcnQgKCFUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkpOwotIAotICAgLyogVW5k ZXJzdGFuZCBEd2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIg b24KLSAgICAgIHRoZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVy IGF0dHJpYnV0ZSB0byB0aGUKLUBAIC0xMzk0MiwyOSArMTM5NzYsMTE0IEBAIHJlYWRfdGFnX3N0 cmluZ190eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwot ICAgc3RydWN0IHR5cGUgKnR5cGUsICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZSwgKmNoYXJfdHlw ZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwot KyAgaW50IGxlbmd0aDsKLSsKLSsgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUp LT5idWlsdGluX2ludDsKLSsgIC8qIFJBTkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklM RSwgbm90IGFzIGEgcGVybWFuZW50IHR5cGUuICAqLwotKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5 cGUgKG9iamZpbGUpOwotKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9y IHJlYWwgYmVsb3cuICAqLwotKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5n ZV90eXBlLCBpbmRleF90eXBlLCAwLCAtMSk7Ci0rCi0rICAvKiBDL0MrKyBzaG91bGQgcHJvYmFi bHkgaGF2ZSB0aGUgbG93IGJvdW5kIDAgYnV0IEMvQysrIGRvZXMgbm90IHVzZQotKyAgICAgRFdf VEFHX3N0cmluZ190eXBlLiAgKi8KLSsgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7 Ci0gCi0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgY3Up OwotLSAgaWYgKGF0dHIpCi0rICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp KQotICAgICB7Ci0tICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOwotKyAgICAgIC8qIFNl Y3VyaXR5IGNoZWNrIGZvciBhIHNpemUgb3ZlcmZsb3cuICAqLwotKyAgICAgIGlmIChEV19CTE9D SyAoYXR0ciktPnNpemUgKyAyIDwgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKQotKwlUWVBFX0hJR0hf Qk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICAvKiBFeHRlbmQgdGhlIERXQVJGIGJsb2Nr IGJ5IGEgbmV3IERXX09QX2RlcmVmL0RXX09QX2RlcmVmX3NpemUKLSsJIGluc3RydWN0aW9uIGFz IERXX0FUX3N0cmluZ19sZW5ndGggc3BlY2lmaWVzIHRoZSBsZW5ndGggbG9jYXRpb24sIG5vdAot KwkgaXRzIHZhbHVlLiAgKi8KLSsgICAgICBlbHNlCi0rCXsKLSsJICBzdHJ1Y3QgZHdhcmYyX2xv Y2V4cHJfYmF0b24gKmxlbmd0aF9iYXRvbiA9IE5VTEw7Ci0rCSAgc3RydWN0IGR3YXJmX2Jsb2Nr ICpibGsgPSBEV19CTE9DSyAoYXR0cik7Ci0rCi0rCSAgLyogVHVybiBhbnkgc2luZ2xlIERXX09Q X3JlZyogaW50byBEV19PUF9icmVnKigwKSBidXQgY2xlYXJpbmcKLSsJICAgICBEV19PUF9kZXJl ZiogaW4gc3VjaCBjYXNlLiAgKi8KLSsKLSsJICBpZiAoYmxrLT5zaXplID09IDEgJiYgYmxrLT5k YXRhWzBdID49IERXX09QX3JlZzAKLSsJICAgICAgJiYgYmxrLT5kYXRhWzBdIDw9IERXX09QX3Jl ZzMxKQotKwkgICAgbGVuZ3RoX2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAo YXR0ciwgY3UpOwotKwkgIGVsc2UgaWYgKGJsay0+c2l6ZSA+IDEgJiYgYmxrLT5kYXRhWzBdID09 IERXX09QX3JlZ3gpCi0rCSAgICB7Ci0rCSAgICAgIFVMT05HRVNUIHVsb25nZXN0OwotKwkgICAg ICBjb25zdCBnZGJfYnl0ZSAqZW5kOwotKwotKwkgICAgICBlbmQgPSBzYWZlX3JlYWRfdWxlYjEy OCAoJmJsay0+ZGF0YVsxXSwgJmJsay0+ZGF0YVtibGstPnNpemVdLAotKwkJCQkgICAgICAgJnVs b25nZXN0KTsKLSsJICAgICAgaWYgKGVuZCA9PSAmYmxrLT5kYXRhW2Jsay0+c2l6ZV0pCi0rCQls ZW5ndGhfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7Ci0r CSAgICB9Ci0rCi0rCSAgaWYgKGxlbmd0aF9iYXRvbiA9PSBOVUxMKQotKwkgICAgewotKwkgICAg ICBzdHJ1Y3QgYXR0cmlidXRlICpzaXplX2F0dHI7Ci0rCSAgICAgIGdkYl9ieXRlICpkYXRhOwot KwotKwkgICAgICBsZW5ndGhfYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5pdF9v YnN0YWNrLAotKwkJCQkJICAgIHNpemVvZiAoKmxlbmd0aF9iYXRvbikpOwotKwkgICAgICBsZW5n dGhfYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+c2l6 ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDI7Ci0rCSAgICAgIGRhdGEgPSBvYnN0YWNrX2Fs bG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAotKwkJCQkgICAgbGVuZ3RoX2JhdG9uLT5zaXpl KTsKLSsJICAgICAgbGVuZ3RoX2JhdG9uLT5kYXRhID0gZGF0YTsKLSsJICAgICAgbWVtY3B5IChk YXRhLCBEV19CTE9DSyAoYXR0ciktPmRhdGEsIERXX0JMT0NLIChhdHRyKS0+c2l6ZSk7Ci0rCi0r CSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhlciB3aXRoIERXX0FUX1NU UklOR19MRU5HVEgKLSsJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4gaW50ZWdlciB0byBmZXRj aC4gICovCi0rCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVf c2l6ZSwgY3UpOwotKwkgICAgICBpZiAoc2l6ZV9hdHRyKQotKwkJewotKwkJICBkYXRhW0RXX0JM T0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXplOwotKwkJICBkYXRhW0RXX0JMT0NL IChhdHRyKS0+c2l6ZSArIDFdID0gRFdfVU5TTkQgKHNpemVfYXR0cik7Ci0rCQkgIGlmIChkYXRh W0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdICE9IERXX1VOU05EIChzaXplX2F0dHIpKQotKwkJ ICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgICAgICAgXygiRFdfQVRf c3RyaW5nX2xlbmd0aCdzIERXX0FUX2J5dGVfc2l6ZSAiCi0rCQkJCSAiaW50ZWdlciBleGNlZWRz IHRoZSBieXRlIHNpemUgc3RvcmFnZSIpKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJ ICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZjsKLSsJCSAgZGF0YVtE V19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX09QX25vcDsKLSsJCX0KLSsJICAgIH0KLSsK LSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKLSsJICAgID0gUkFO R0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5 cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247Ci0rCSAgVFlQRV9EWU5BTUlD IChyYW5nZV90eXBlKSA9IDE7Ci0rCX0KLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAg LyogQ2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlLiAgKi8KLSsgICAgICBp ZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQotKwl7Ci0rCSAgLyogV2Ug Y3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IGEgY29uc3RhbnQgYWRkcmVzcyB3aGVyZSB0aGUgbG9j YXRpb24KLSsJICAgICBzaG91bGQgYmUgcmVhZCBmcm9tIC0gYXR0cl9mb3JtX2lzX2Jsb2NrIGlz IGV4cGVjdGVkIGluc3RlYWQuICBTZWUKLSsJICAgICBEV0FSRiBmb3IgdGhlIERXX0FUX1NUUklO R19MRU5HVEggdnMuIERXX0FUX0JZVEVfU0laRSBkaWZmZXJlbmNlLgotKwkgICAgICovCi0rCSAg LyogUEFTU1RIUlUgKi8KLSsJfQotKwotICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9ieXRlX3NpemUsIGN1KTsKLS0gICAgICBpZiAoYXR0cikKLS0gICAgICAgIHsKLS0gICAg ICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgICAgfQotKyAgICAgIGlmIChh dHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0rCXsKLSsJICBUWVBFX1JBTkdFX0RB VEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKLSsJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FS Rl9CTE9DSzsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZf YmxvY2sgPQotKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwot KwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKwl9Ci0rICAgICAgZWxzZSBpZiAo YXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQotKwlUWVBFX0hJR0hfQk9VTkQg KHJhbmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsK LSAgICAgICBlbHNlCi0tICAgICAgICB7Ci0tICAgICAgICAgIGxlbmd0aCA9IDE7Ci0tICAgICAg ICB9Ci0rCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSAxOwotICAgICB9Ci0gCi0tICBp bmRleF90eXBlID0gb2JqZmlsZV90eXBlIChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7Ci0tICByYW5n ZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7 Ci0gICBjaGFyX3R5cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2Vf ZGVmbiwgZ2RiYXJjaCk7Ci0gICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFy X3R5cGUsIHJhbmdlX3R5cGUpOwotIAotQEAgLTE0Mjg5LDcgKzE0NDA4LDcgQEAgcmVhZF9zdWJy YW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlLCAqb3JpZ19iYXNlX3R5cGU7Ci0gICBzdHJ1Y3QgdHlw ZSAqcmFuZ2VfdHlwZTsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBMT05HRVNUIGxv dywgaGlnaDsKLSsgIExPTkdFU1QgbG93OwotICAgaW50IGxvd19kZWZhdWx0X2lzX3ZhbGlkOwot ICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsKLUBAIC0xNDM0 OCw0MiArMTQ0NjcsNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAJCQkJICAgICAgIi0gRElFIGF0IDB4JXggW2luIG1v ZHVsZSAlc10iKSwKLSAJICAgICAgIGRpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBvYmpmaWxlX25hbWUg KGN1LT5vYmpmaWxlKSk7Ci0gCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBw ZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAgICB7Ci0tICAgICAgaWYgKGF0dHJfZm9y bV9pc19ibG9jayAoYXR0cikgfHwgYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikpCi0tICAgICAgICB7 Ci0tICAgICAgICAgIC8qIEdDQyBlbmNvZGVzIGFycmF5cyB3aXRoIHVuc3BlY2lmaWVkIG9yIGR5 bmFtaWMgbGVuZ3RoCi0tICAgICAgICAgICAgIHdpdGggYSBEV19GT1JNX2Jsb2NrMSBhdHRyaWJ1 dGUgb3IgYSByZWZlcmVuY2UgYXR0cmlidXRlLgotLSAgICAgICAgICAgICBGSVhNRTogR0RCIGRv ZXMgbm90IHlldCBrbm93IGhvdyB0byBoYW5kbGUgZHluYW1pYwotLSAgICAgICAgICAgICBhcnJh eXMgcHJvcGVybHksIHRyZWF0IHRoZW0gYXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQKLS0gICAg ICAgICAgICAgbGVuZ3RoIGZvciBub3cuCi0tCi0tICAgICAgICAgICAgIEZJWE1FOiBqaW1iLzIw MDMtMDktMjI6IEdEQiBkb2VzIG5vdCByZWFsbHkga25vdwotLSAgICAgICAgICAgICBob3cgdG8g aGFuZGxlIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGgKLS0gICAgICAgICAgICAgZWl0aGVy OyB3ZSBqdXN0IHJlcHJlc2VudCB0aGVtIGFzIHplcm8tbGVuZ3RoCi0tICAgICAgICAgICAgIGFy cmF5cy4gIENob29zZSBhbiBhcHByb3ByaWF0ZSB1cHBlciBib3VuZCBnaXZlbgotLSAgICAgICAg ICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJvdmUuICAqLwotLSAgICAgICAg ICBoaWdoID0gbG93IC0gMTsKLS0gICAgICAgIH0KLS0gICAgICBlbHNlCi0tICAgICAgICBoaWdo ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKLS0gICAgfQotLSAg ZWxzZQotLSAgICB7Ci0tICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50 LCBjdSk7Ci0tICAgICAgaWYgKGF0dHIpCi0tCXsKLS0JICBpbnQgY291bnQgPSBkd2FyZjJfZ2V0 X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOwotLQkgIGhpZ2ggPSBsb3cgKyBjb3VudCAt IDE7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICAvKiBVbnNwZWNpZmllZCBhcnJheSBsZW5n dGguICAqLwotLQkgIGhpZ2ggPSBsb3cgLSAxOwotLQl9Ci0tICAgIH0KLS0KLSAgIC8qIER3YXJm LTIgc3BlY2lmaWNhdGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8gY3JlYXRlIHN1YnJhbmdlIHR5 cGVzCi0gICAgICB3aXRob3V0IHNwZWNpZnlpbmcgYSBiYXNlIHR5cGUuCi0gICAgICBJbiB0aGF0 IGNhc2UsIHRoZSBiYXNlIHR5cGUgbXVzdCBiZSBzZXQgdG8gdGhlIHR5cGUgb2YKLUBAIC0xNDQy MiwyNCArMTQ1MDUsMTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAl9Ci0gICAgIH0KLSAKLS0gIG5lZ2F0aXZlX21h c2sgPQotKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVs b3cuICAqLwotKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBvcmlnX2Jh c2VfdHlwZSwgMCwgLTEpOwotKyAgVFlQRV9VTlNJR05FRCAocmFuZ2VfdHlwZSkgPSAwOwotKwot KyAgbmVnYXRpdmVfbWFzayA9IAotICAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChi YXNlX3R5cGUpICogVEFSR0VUX0NIQVJfQklUIC0gMSk7Ci0tICBpZiAoIVRZUEVfVU5TSUdORUQg KGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZlX21hc2spKQotLSAgICBsb3cgfD0gbmVnYXRp dmVfbWFzazsKLS0gIGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5l Z2F0aXZlX21hc2spKQotLSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7Ci0gCi0tICByYW5nZV90 eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIG9yaWdfYmFzZV90eXBlLCBsb3csIGhpZ2gp OwotKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlDIGNvbnN0 cnVjdHMgYmVsb3cuICBHREIgQWRhCi0rICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRoZSBkeW5h bWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQotKyAgICAgZXhpc3RpbmcgRFdB UkYgZHluYW1pYyBib3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFjY2Vzcwot KyAgICAgZXJyb3JzLiAgKi8KLSAKLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGggZHluYW1pYyBsZW5n dGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAgIGxlbmd0aC4gIEdE QiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVudGVk IGF0Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVsZW1lbnRzLiAgKi8K LS0gIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0tICAgIFRZUEVfSElH SF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3Jt X2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotKyAgICB7 Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9C T1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmxvdy51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsg ICAgICAvKiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQg YmUgbWlzc2luZy4gICovCi0rICAgICAgbG93ID0gMDsKLSsgICAgfQotKyAgZWxzZSBpZiAoYXR0 ciAmJiBhdHRyX2Zvcm1faXNfcmVmIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2Vf YWRhKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOwotKyAgICAg IHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OwotKyAgICAgIHN0cnVjdCBhdHRyaWJ1 dGUgKnRhcmdldF9sb2NfYXR0cjsKLSsKLSsgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9y ZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRh cmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7Ci0rICAgICAgdGFyZ2V0X2xvY19hdHRy ID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOwot KwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kID0gUkFOR0Vf Qk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBkd2FyZjJfYXR0 cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Ci0rICAgICAg VFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50eXBlCi0r ICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVf RFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKyAgICAgIC8qIEZvciBzZXR0aW5nIGEgZGVmYXVs dCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KLSsgICAgICBsb3cg PSAwOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zv cm1faXNfY29uc3RhbnQgKGF0dHIpKQotKwlsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRf dmFsdWUgKGF0dHIsIDApOwotKyAgICAgIGVsc2UKLSsJewotKwkgIGlmIChjdS0+bGFuZ3VhZ2Ug PT0gbGFuZ3VhZ2VfZm9ydHJhbikKLSsJICAgIHsKLSsJICAgICAgLyogRk9SVFJBTiBpbXBsaWVz IGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KLSsJICAgICAgbG93ID0gMTsK LSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIC8qIEFjY29yZGluZyB0byBEV0FS RiB3ZSBzaG91bGQgYXNzdW1lIHRoZSB2YWx1ZSAwIG9ubHkgZm9yCi0rCQkgTEFOR1VBR0VfQyBh bmQgTEFOR1VBR0VfQ1BMVVMuICAqLwotKwkgICAgICBsb3cgPSAwOwotKwkgICAgfQotKwl9Ci0r ICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChsb3cgJiBuZWdhdGl2ZV9t YXNrKSkKLSsJbG93IHw9IG5lZ2F0aXZlX21hc2s7Ci0rICAgICAgVFlQRV9MT1dfQk9VTkQgKHJh bmdlX3R5cGUpID0gbG93OwotKyAgICAgIGlmIChsb3cgPj0gMCkKLSsJVFlQRV9VTlNJR05FRCAo cmFuZ2VfdHlwZSkgPSAxOwotKyAgICB9Ci0gCi0tICAvKiBBZGEgZXhwZWN0cyBhbiBlbXB0eSBh cnJheSBvbiBubyBib3VuZGFyeSBhdHRyaWJ1dGVzLiAgKi8KLS0gIGlmIChhdHRyID09IE5VTEwg JiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLS0gICAgVFlQRV9ISUdIX0JPVU5EX1VO REVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX3VwcGVyX2JvdW5kLCBjdSk7Ci0rICBpZiAoIWF0dHIgfHwgKCFhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpICYmICFhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpCi0rCQkmJiAhYXR0cl9m b3JtX2lzX3JlZiAoYXR0cikpKQotKyAgICB7Ci0rICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2NvdW50LCBjdSk7Ci0rICAgICAgLyogSXQgZG9lcyBub3QgaHVydCBidXQgaXQg aXMgbmVlZGxlc3NseSBpbmVmZmVjdGl2ZSBpbiBjaGVja190eXBlZGVmLiAgKi8KLSsgICAgICBp ZiAoYXR0ciAmJiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSB8fCBhdHRyX2Zvcm1faXNfY29u c3RhbnQgKGF0dHIpKSkKLSsgICAgICAJewotKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19D T1VOVCAocmFuZ2VfdHlwZSkgPSAxOwotKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAx OwotKwl9Ci0rICAgICAgLyogUGFzcyBpdCBub3cgYXMgdGhlIHJlZ3VsYXIgRFdfQVRfdXBwZXJf Ym91bmQuICAqLwotKyAgICB9Ci0rCi0rICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sg KGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCi0rICAgIHsKLSsgICAgICBU WVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5E X0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gu dS5kd2FyZl9ibG9jayA9Ci0rCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRy LCBjdSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsg IGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikgJiYgY3UtPmxhbmd1YWdl ICE9IGxhbmd1YWdlX2FkYSkKLSsgICAgewotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0 X2RpZTsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKLSsgICAgICBz dHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0rCi0rICAgICAgdGFyZ2V0X2RpZSA9 IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsgICAgICBn ZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAgICAgIHRh cmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwg dGFyZ2V0X2N1KTsKLSsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdo LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7Ci0rICAgICAgVFlQRV9SQU5H RV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAg ICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdl dF9jdSk7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJm X2xvY2xpc3QudHlwZQotKyAgICAgICAgPSBkaWVfdHlwZSAodGFyZ2V0X2RpZSwgdGFyZ2V0X2N1 KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgfQotKyAgZWxz ZQotKyAgICB7Ci0rICAgICAgTE9OR0VTVCBoaWdoOwotKwotKyAgICAgIGlmIChhdHRyICYmIGF0 dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCWhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29u c3RhbnRfdmFsdWUgKGF0dHIsIDApOwotKyAgICAgIGVsc2UKLSsJewotKwkgIC8qIEFkYSBleHBl Y3RzIGFuIGVtcHR5IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLwotKwkgIGlm IChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotKwkgICAgVFlQRV9ISUdIX0JPVU5EX1VO REVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOwotKwkgIGhpZ2ggPSBsb3cgLSAxOwotKwl9Ci0rICAg ICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFz aykpCi0rCWhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKLSsgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJh bmdlX3R5cGUpID0gaGlnaDsKLSsgICAgfQotKwotKyAgLyogRFdfQVRfYml0X3N0cmlkZSBpcyBj dXJyZW50bHkgdW5zdXBwb3J0ZWQgYXMgd2UgY291bnQgaW4gYnl0ZXMuICAqLwotKyAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc3RyaWRlLCBjdSk7Ci0rICBpZiAoYXR0ciAm JiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9h ZGEpCi0rICAgIHsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0 cmlkZS5raW5kCi0rICAgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7Ci0rICAg ICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9ibG9j ayA9Ci0rCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7Ci0rICAg ICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0 dHIgJiYgYXR0cl9mb3JtX2lzX3JlZiAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdl X2FkYSkKLSsgICAgewotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKLSsgICAg ICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKLSsgICAgICBzdHJ1Y3QgYXR0cmli dXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0rCi0rICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVf cmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0 YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0 ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsK LSsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5k Ci0rICAgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBF X1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9j bGlzdAotKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9j X2F0dHIsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRh cmdldF9kaWUsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9 IDE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChh dHRyKSkKLSsgICAgewotKyAgICAgIFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpID0gZHdh cmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAgICBpZiAoVFlQRV9C WVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPT0gMCkKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21w bGFpbnRzLAotKwkJICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1cHBvcnRl ZCB2YWx1ZSAwIikpOwotKyAgICB9Ci0gCi0gICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3Up OwotICAgaWYgKG5hbWUpCi1AQCAtMTczNjEsMTEgKzE3NTgzLDE0IEBAIHZhcl9kZWNvZGVfbG9j YXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLSAgICAg IChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9uIGlz Ci0gICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9jaywgZXRjLikuICBUaGVu IGFnYWluLCBpdCBtaWdodAotICAgICAgbm90IGJlIHdvcnRod2hpbGUuICBJJ20gYXNzdW1pbmcg dGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKLS0gICAgIG9yIG1lbW9yeSBudW1iZXJz IHNob3cgbWUgb3RoZXJ3aXNlLiAgKi8KLSsgICAgIG9yIG1lbW9yeSBudW1iZXJzIHNob3cgbWUg b3RoZXJ3aXNlLgotKyAgICAgCi0rICAgICBTWU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVycmlkZW4g YnkgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KLSAKLSAgIGR3YXJmMl9zeW1ib2xf bWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSwgMCk7Ci0gCi0tICBpZiAoU1lNQk9MX0NPTVBV VEVEX09QUyAoc3ltKS0+bG9jYXRpb25faGFzX2xvY2xpc3QpCi0rICBpZiAoU1lNQk9MX0NPTVBV VEVEX09QUyAoc3ltKSAhPSBOVUxMCi0rICAgICAgJiYgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3lt KS0+bG9jYXRpb25faGFzX2xvY2xpc3QpCi0gICAgIGN1LT5oYXNfbG9jbGlzdCA9IDE7Ci0gfQot IAotQEAgLTE4MjEyLDYgKzE4NDM3LDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAK LSsgIGlmICh0aGlzX3R5cGUpCi0rICAgIGZpbmFsaXplX3R5cGUgKHRoaXNfdHlwZSk7Ci0rCi0g ICByZXR1cm4gdGhpc190eXBlOwotIH0KLSAKLUBAIC0yMDg5NCw2NiArMjExMjIsMTA5IEBAIGZp bGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCi0gICBiYXRvbi0+ZnJv bV9kd28gPSBjdS0+ZHdvX3VuaXQgIT0gTlVMTDsKLSB9Ci0gCi0tc3RhdGljIHZvaWQKLS1kd2Fy ZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0 cnVjdCBzeW1ib2wgKnN5bSwKLS0JCQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1LCBpbnQgaXNf YmxvY2spCi0rLyogQ29udmVydCBEV19CTE9DSyBpbnRvIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9i YXRvbi4gIEFUVFIgbXVzdCBiZSBhIERXX0JMT0NLCi0rICAgYXR0cmlidXRlIHR5cGUuICAqLwot KwotK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKgotK2R3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24gKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCi0rCQkJICAgICAg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBk d2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGU7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0 b24gKmJhdG9uOwotKwotKyAgZ2RiX2Fzc2VydCAoYXR0ciA9PSBOVUxMIHx8IGF0dHJfZm9ybV9p c19ibG9jayAoYXR0cikpOwotKwotKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKCpiYXRvbikpOwotKyAgYmF0b24tPnBlcl9jdSA9IGN1 LT5wZXJfY3U7Ci0rICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKLSsKLSsgIC8qIE5vdGUg dGhhdCB3ZSdyZSBqdXN0IGNvcHlpbmcgdGhlIGJsb2NrJ3MgZGF0YSBwb2ludGVyCi0rICAgICBo ZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUK LSsgICAgIGluZm9fYnVmZmVyIGZvciBTWU0ncyBvYmpmaWxlOyByaWdodCBub3cgd2UgbmV2ZXIg cmVsZWFzZQotKyAgICAgdGhhdCBidWZmZXIsIGJ1dCB3aGVuIHdlIGRvIGNsZWFuIHVwIHByb3Bl cmx5IHRoaXMgbWF5Ci0rICAgICBuZWVkIHRvIGNoYW5nZS4gICovCi0rICBpZiAoYXR0ciAhPSBO VUxMKQotKyAgICB7Ci0rICAgICAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7 Ci0rICAgICAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0rICAgIH0KLSsg IGVsc2UKLSsgICAgewotKyAgICAgIGJhdG9uLT5zaXplID0gMDsKLSsgICAgICBiYXRvbi0+ZGF0 YSA9IE5VTEw7Ci0rICAgIH0KLSsgIGdkYl9hc3NlcnQgKGJhdG9uLT5zaXplID09IDAgfHwgYmF0 b24tPmRhdGEgIT0gTlVMTCk7Ci0rCi0rICByZXR1cm4gYmF0b247Ci0rfQotKwotK3N0YXRpYyBz dHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKgotK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0 b24gKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCi0rCQkJICAgICAgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29i amZpbGUtPm9iamZpbGU7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiA9 IGN1X2RlYnVnX2xvY19zZWN0aW9uIChjdSk7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0 b24gKmJhdG9uOwotIAotLSAgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikK LSsgIC8qIERXX0FUX2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2VkIERJRSBtYXkgYmUgbWlzc2lu ZyBpZiB0aGUgcmVmZXJlbmNlZAotKyAgICAgdmFyaWFibGUgaGFzIGJlZW4gb3B0aW1pemVkIG91 dC4gICovCi0rICBpZiAoIWF0dHIpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgZHdhcmYyX3Jl YWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0aW9uKTsKLSsKLSsg IGlmICghKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKLSAgICAgICAvKiAuZGVi dWdfbG9jeywuZHdvfSBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUg b3V0c2lkZQotIAkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21w bGFpbnQgaW4gdGhlCi0gCSBvdGhlciBicmFuY2guICAqLwotLSAgICAgICYmIERXX1VOU05EIChh dHRyKSA8IGR3YXJmMl9zZWN0aW9uX3NpemUgKG9iamZpbGUsIHNlY3Rpb24pKQotLSAgICB7Ci0t ICAgICAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbjsKLSsgICAgICAmJiBEV19V TlNORCAoYXR0cikgPCBkd2FyZjJfc2VjdGlvbl9zaXplIChvYmpmaWxlLCBzZWN0aW9uKSkpCi0r ICAgIHJldHVybiBOVUxMOwotIAotLSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjaywKLS0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2Ns aXN0X2JhdG9uKSk7Ci0rICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxl X29ic3RhY2ssCi0rCQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7Ci0g Ci0tICAgICAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChjdSwgYmF0b24sIGF0dHIpOwotKyAgZmls bF9pbl9sb2NsaXN0X2JhdG9uIChjdSwgYmF0b24sIGF0dHIpOwotIAotLSAgICAgIGlmIChjdS0+ YmFzZV9rbm93biA9PSAwKQotLQljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0tCQkg ICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCAiCi0tCQkgICAgICJzcGVjaWZ5aW5nIHRo ZSBDVSBiYXNlIGFkZHJlc3MuIikpOwotKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCi0rICAg IGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJICAgICAgIF8oIkxvY2F0aW9uIGxp c3QgdXNlZCB3aXRob3V0ICIKLSsJCSAic3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIp KTsKLSsKLSsgIHJldHVybiBiYXRvbjsKLSt9Ci0rCi0rLyogU1lNIG1heSBnZXQgaXRzIFNZTUJP TF9DTEFTUyBvdmVycmlkZW4gb24gaW52YWxpZCBBVFRSIGNvbnRlbnQuICAqLwotKwotK3N0YXRp YyB2b2lkCi0rZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChjb25zdCBzdHJ1Y3QgYXR0cmli dXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0rCQkJICAgICBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSwgaW50IGlzX2Jsb2NrKQotK3sKLSsgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAq bG9jbGlzdF9iYXRvbjsKLSAKLSsgIGxvY2xpc3RfYmF0b24gPSBkd2FyZjJfYXR0cl90b19sb2Ns aXN0X2JhdG9uIChhdHRyLCBjdSk7Ci0rICBpZiAobG9jbGlzdF9iYXRvbikKLSsgICAgewotICAg ICAgIFNZTUJPTF9BQ0xBU1NfSU5ERVggKHN5bSkgPSAoaXNfYmxvY2sKLSAJCQkJICAgPyBkd2Fy ZjJfbG9jbGlzdF9ibG9ja19pbmRleAotIAkJCQkgICA6IGR3YXJmMl9sb2NsaXN0X2luZGV4KTsK LS0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsKLSsgICAgICBTWU1C T0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOwotKyAgICB9Ci0rICBlbHNl IGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAgU1lNQk9MX0FD TEFTU19JTkRFWCAoc3ltKSA9IChpc19ibG9jawotKwkJCQkgICA/IGR3YXJmMl9sb2NleHByX2Js b2NrX2luZGV4Ci0rCQkJCSAgIDogZHdhcmYyX2xvY2V4cHJfaW5kZXgpOwotKyAgICAgIFNZTUJP TF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0 dHIsIGN1KTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICpiYXRvbjsKLS0KLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0tCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbikpOwotLSAgICAgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotLSAg ICAgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3UpOwotLQotLSAgICAgIGlmIChhdHRyX2Zvcm1f aXNfYmxvY2sgKGF0dHIpKQotLQl7Ci0tCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWlu ZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKLS0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBk YXRhLiAgV2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKLS0JICAgICBpbmZvX2J1ZmZlciBm b3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKLS0JICAgICB0aGF0 IGJ1ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLS0JICAg ICBuZWVkIHRvIGNoYW5nZS4gICovCi0tCSAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0cikt PnNpemU7Ci0tCSAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0tCX0KLS0g ICAgICBlbHNlCi0tCXsKLS0JICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50 ICgibG9jYXRpb24gZGVzY3JpcHRpb24iLAotLQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChz eW0pKTsKLS0JICBiYXRvbi0+c2l6ZSA9IDA7Ci0tCX0KLSsgICAgICBkd2FyZjJfaW52YWxpZF9h dHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24gZGVzY3JpcHRpb24iLAotKwkJCQkJICAg ICBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKLSAKLSAgICAgICBTWU1CT0xfQUNMQVNTX0lO REVYIChzeW0pID0gKGlzX2Jsb2NrCi0gCQkJCSAgID8gZHdhcmYyX2xvY2V4cHJfYmxvY2tfaW5k ZXgKLSAJCQkJICAgOiBkd2FyZjJfbG9jZXhwcl9pbmRleCk7Ci0tICAgICAgU1lNQk9MX0xPQ0FU SU9OX0JBVE9OIChzeW0pID0gYmF0b247Ci0rICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChz eW0pID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoTlVMTCwgY3UpOwotICAgICB9Ci0g fQotIAotQEAgLTIxMzI2LDYgKzIxNTk3LDI1IEBAIHBlcl9jdV9vZmZzZXRfYW5kX3R5cGVfZXEg KGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSAJICAmJiBvZnNf bGhzLT5vZmZzZXQuc2VjdF9vZmYgPT0gb2ZzX3Jocy0+b2Zmc2V0LnNlY3Rfb2ZmKTsKLSB9Ci0g Ci0rLyogRmlsbCBpbiBnZW5lcmljIGF0dHJpYnV0ZXMgYXBwbGljYWJsZSBmb3IgdHlwZSBESUVz LiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2ZldGNoX2RpZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsCi0rCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKLSt7Ci0rICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotKwotKyAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOwotKyAgaWYgKGF0dHJfZm9ybV9pc19i bG9jayAoYXR0cikpCi0rICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BTExP Q0FURUQgKHR5cGUpKTsKLSsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3Nv Y2lhdGVkLCBjdSk7Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsgICAgVFlQ RV9BU1NPQ0lBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIs IGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSk7Ci0rfQot KwotIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0 IGluIENVJ3MgaGFzaAotICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwg cmV0dXJuIFRZUEUuCi0gCi1AQCAtMjEzNTAsNiArMjE2NDAsOCBAQCBzZXRfZGllX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7 Ci0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwotIAotKyAgZmV0Y2hf ZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwotKwotICAgLyogRm9yIEFkYSB0eXBlcywg bWFrZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKLSAgICAgIGlu aXRpYWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdo ZXJlCi0gICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNw ZWNpZmljIGFyZWEgaXMKLWRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5k ZXggYmZiZTMxOS4uM2ZkYzVkNSAxMDA2NDQKLS0tLSBhL2dkYi9ldmFsLmMKLSsrKyBiL2dkYi9l dmFsLmMKLUBAIC00MSw2ICs0MSw3IEBACi0gI2luY2x1ZGUgImdkYl9vYnN0YWNrLmgiCi0gI2lu Y2x1ZGUgIm9iamZpbGVzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSsjaW5jbHVk ZSAiZHdhcmYybG9jLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAKLUBAIC0zOTcs MjcgKzM5OCwyMjIgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBz dHJ1Y3QgdmFsdWUgKmVsZW1lbnQsCi0gfQotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXZh bHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKLS0JCSAgICBzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQotK3ZhbHVlX2Y5MF9z dWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50 ICpwb3MsCi0rCQkgICAgaW50IG5hcmdzLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0gewotLSAgaW50 IHBjID0gKCpwb3MpICsgMTsKLS0gIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwotLSAg c3RydWN0IHR5cGUgKnJhbmdlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9JTkRFWF9UWVBFICh2YWx1 ZV90eXBlIChhcnJheSkpKTsKLS0gIGVudW0gZjkwX3JhbmdlX3R5cGUgcmFuZ2VfdHlwZSA9IGxv bmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Ci0tIAotLSAgKnBvcyArPSAz OwotLQotLSAgaWYgKHJhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlw ZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0tICAgIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5E IChyYW5nZSk7Ci0rICAvKiBUeXBlIHRvIHVzZSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCB2YWx1 ZSBBUlJBWS4gICovCi0rICBzdHJ1Y3QgdHlwZSAqbmV3X2FycmF5X3R5cGU7Ci0rCi0rICAvKiBU eXBlIGJlaW5nIGl0ZXJhdGVkIGZvciBlYWNoIGRpbWVuc2lvbi4gICovCi0rICBzdHJ1Y3QgdHlw ZSAqdHlwZSwgKnR5cGVfbGFzdF90YXJnZXQ7Ci0rCi0rICAvKiBQb2ludGVyIGluIHRoZSBsYXN0 IGhvbGRlciB0byB0aGUgdHlwZSBvZiBjdXJyZW50IGRpbWVuc2lvbi4gICovCi0rICBzdHJ1Y3Qg dHlwZSAqKnR5cGVwID0gJm5ld19hcnJheV90eXBlOwotKwotKyAgc3RydWN0IHN1YnNjcmlwdF9p bmRleAotKyAgICB7Ci0rICAgICAgZW51bSB7IFNVQlNDUklQVF9SQU5HRSwgU1VCU0NSSVBUX05V TUJFUiB9IGtpbmQ7Ci0rICAgICAgdW5pb24KLSsJewotKwkgIHN0cnVjdCBzdWJzY3JpcHRfcmFu Z2UKLSsJICAgIHsKLSsJICAgICAgZW51bSBmOTBfcmFuZ2VfdHlwZSBmOTBfcmFuZ2VfdHlwZTsK LSsJICAgICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0rCSAgICB9Ci0rCSAgcmFu Z2U7Ci0rCSAgTE9OR0VTVCBudW1iZXI7Ci0rCX07Ci0rICAgIH0KLSsgICpzdWJzY3JpcHRfYXJy YXk7Ci0rICBzdHJ1Y3QgdHlwZSAqKnR5cGVfYXJyYXk7Ci0rICBpbnQgaTsKLSsgIHN0cnVjdCBj bGVhbnVwICpvbGRfY2hhaW47Ci0rICBDT1JFX0FERFIgdmFsdWVfYnl0ZV9hZGRyZXNzLCB2YWx1 ZV9ieXRlX29mZnNldCA9IDA7Ci0rICBodGFiX3QgY29waWVkX3R5cGVzOwotKyAgc3RydWN0IHZh bHVlICpzYXZlZF9hcnJheTsKLSsKLSsgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9j bGVhbnVwLCAwKTsKLSsgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFy cmF5KSk7Ci0rCi0rICBpZiAodmFsdWVfb3B0aW1pemVkX291dCAoYXJyYXkpCi0rICAgICAgfHwg KFZBTFVFX0xWQUwgKGFycmF5KSAhPSBub3RfbHZhbAotKyAgICAgICAgICAmJiBWQUxVRV9MVkFM IChhcnJheSkgIT0gbHZhbF9tZW1vcnkKLSsJICAmJiBWQUxVRV9MVkFMIChhcnJheSkgIT0gbHZh bF9pbnRlcm5hbHZhcl9jb21wb25lbnQKLSsJICAmJiBWQUxVRV9MVkFMIChhcnJheSkgIT0gbHZh bF9pbnRlcm5hbHZhcikpCi0rICAgIGVycm9yIChfKCJ2YWx1ZSBiZWluZyBzdWJyYW5nZWQgbXVz dCBiZSBpbiBtZW1vcnkiKSk7Ci0rICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAo YXJyYXkpKTsKLSsgIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAodHlwZSk7 Ci0rCi0rICBjb3BpZWRfdHlwZXMgPSBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKE5VTEwpOwot KyAgdHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90eXBlcyk7Ci0rICBo dGFiX2RlbGV0ZSAoY29waWVkX3R5cGVzKTsKLSsKLSsgIGlmIChuYXJncyAhPSBjYWxjX2Y3N19h cnJheV9kaW1zICh0eXBlKSkKLSsgICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBvZiBzdWJzY3Jp cHRzIikpOwotKwotKyAgaWYgKFRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSICh0eXBlKSkKLSsg ICAgewotKyAgICAgIHZhbHVlX2J5dGVfYWRkcmVzcyA9IChUWVBFX0RBVEFfTE9DQVRJT05fQURE UiAodHlwZSkKLSsJCQkgICAgKyB2YWx1ZV9vZmZzZXQgKGFycmF5KSk7Ci0rICAgICAgVFlQRV9E QVRBX0xPQ0FUSU9OX0lTX0FERFIgKHR5cGUpID0gMDsKLSsgICAgICBUWVBFX0RBVEFfTE9DQVRJ T05fRFdBUkZfQkxPQ0sgKHR5cGUpID0gTlVMTDsKLSsgICAgfQotICAgZWxzZQotLSAgICBsb3df Ym91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBw b3MsIG5vc2lkZSkpOwotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EQVRBX0xPQ0FU SU9OX0RXQVJGX0JMT0NLICh0eXBlKSA9PSBOVUxMKTsKLSsgICAgICB2YWx1ZV9ieXRlX2FkZHJl c3MgPSB2YWx1ZV9hZGRyZXNzIChhcnJheSk7Ci0rICAgIH0KLSsKLSsgIG5ld19hcnJheV90eXBl ID0gdHlwZTsKLSsKLSsgIHN1YnNjcmlwdF9hcnJheSA9IGFsbG9jYSAoc2l6ZW9mICgqc3Vic2Ny aXB0X2FycmF5KSAqIG5hcmdzKTsKLSsKLSsgIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rCi0r ICAvKiBOb3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhw cmVzc2lvbiAKLSsgICAgIGxldCB1cyBhY3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1l bnQgZXhpc3RzIGluIHRoZSBhcnJheS4gICovCi0rCi0rICAvKiBUYWtlIGFycmF5IGluZGljZXMg bGVmdCB0byByaWdodC4gICovCi0rICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsgICAg ewotKyAgICAgIHN0cnVjdCBzdWJzY3JpcHRfaW5kZXggKmluZGV4ID0gJnN1YnNjcmlwdF9hcnJh eVtpXTsKLSsKLSsgICAgICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFO R0UpCi0rCXsKLSsJICBpbnQgcGMgPSAoKnBvcykgKyAxOwotKwkgIHN0cnVjdCBzdWJzY3JpcHRf cmFuZ2UgKnJhbmdlOwotKwotKwkgIGluZGV4LT5raW5kID0gU1VCU0NSSVBUX1JBTkdFOwotKwkg IHJhbmdlID0gJmluZGV4LT5yYW5nZTsKLSsKLSsJICAqcG9zICs9IDM7Ci0rCSAgcmFuZ2UtPmY5 MF9yYW5nZV90eXBlID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1twY10ubG9uZ2NvbnN0KTsK LSsKLSsJICBpZiAocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVAot KwkgICAgICB8fCByYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQot KwkgICAgcmFuZ2UtPmxvd19ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAo TlVMTF9UWVBFLCBleHAsCi0rCQkJCQkJCSAgICAgICBwb3MsIG5vc2lkZSkpOwotKwotKwkgIGlm IChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQKLSsJICAgICAgfHwg cmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJICAgIHJhbmdl LT5oaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUs IGV4cCwKLSsJCQkJCQkJCXBvcywgbm9zaWRlKSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJ ICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSAKLS0gIGlmIChyYW5nZV90eXBlID09IEhJR0hfQk9VTkRf REVGQVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRfREVGQVVMVCkKLS0gICAgaGlnaF9i b3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2UpOwotKwkgIGluZGV4LT5raW5kID0gU1VCU0NS SVBUX05VTUJFUjsKLSsKLSsJICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBi ZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8KLSsJICB2YWwgPSBldmFsdWF0ZV9zdWJleHBf d2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0rCSAgaW5kZXgtPm51bWJlciA9IHZh bHVlX2FzX2xvbmcgKHZhbCk7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogSW50ZXJuYWwgdHlwZSBv ZiBhcnJheSBpcyBhcnJhbmdlZCByaWdodCB0byBsZWZ0LiAgKi8KLSsgIGZvciAoaSA9IG5hcmdz IC0gMTsgaSA+PSAwOyBpLS0pCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qgc3Vic2NyaXB0X2luZGV4 ICppbmRleCA9ICZzdWJzY3JpcHRfYXJyYXlbaV07Ci0rICAgICAgc3RydWN0IHR5cGUgKnJhbmdl X3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwotKwotKyAgICAgIHN3aXRjaCAoaW5kZXgt PmtpbmQpCi0rCXsKLSsJY2FzZSBTVUJTQ1JJUFRfUkFOR0U6Ci0rCSAgewotKwkgICAgc3RydWN0 IHN1YnNjcmlwdF9yYW5nZSAqcmFuZ2UgPSAmaW5kZXgtPnJhbmdlOwotKwkgICAgQ09SRV9BRERS IGJ5dGVfb2Zmc2V0OwotKwotKwkgICAgaWYgKHJhbmdlLT5mOTBfcmFuZ2VfdHlwZSA9PSBMT1df Qk9VTkRfREVGQVVMVAotKwkJfHwgcmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IEJPVEhfQk9VTkRf REVGQVVMVCkKLSsJICAgICAgcmFuZ2UtPmxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5n ZV90eXBlKTsKLSsKLSsJICAgIGlmIChyYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gSElHSF9CT1VO RF9ERUZBVUxUCi0rCQl8fCByYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZB VUxUKQotKwkgICAgICByYW5nZS0+aGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2Vf dHlwZSk7Ci0rCi0rCSAgICBpZiAocmFuZ2UtPmxvd19ib3VuZCA8IFRZUEVfTE9XX0JPVU5EIChy YW5nZV90eXBlKQotKwkJfHwgKCFUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBl KQotKwkJICAgICYmIHJhbmdlLT5oaWdoX2JvdW5kID4gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90 eXBlKSkpCi0rCSAgICAgIGVycm9yIChfKCJzbGljZSBvdXQgb2YgcmFuZ2UiKSk7Ci0rCi0rCSAg ICBieXRlX29mZnNldCA9ICgocmFuZ2UtPmxvd19ib3VuZCAtIFRZUEVfTE9XX0JPVU5EIChyYW5n ZV90eXBlKSkKLSsJCQkgICAqIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHR5cGUpKTsK LSsJICAgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IHJhbmdlLT5sb3dfYm91bmQ7Ci0r CSAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gcmFuZ2UtPmhpZ2hfYm91bmQ7Ci0r CSAgICBpZiAocmFuZ2UtPmY5MF9yYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCi0rCQl8 fCByYW5nZS0+ZjkwX3JhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQotKwkgICAgICBU WVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDA7Ci0rCi0rCSAgICB0eXBl cCA9ICZUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLSsJICAgIHZhbHVlX2J5dGVfb2Zmc2V0ICs9 IGJ5dGVfb2Zmc2V0OwotKwkgICAgdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwotKwkg IH0KLSsJICBicmVhazsKLSsKLSsJY2FzZSBTVUJTQ1JJUFRfTlVNQkVSOgotKwkgIHsKLSsJICAg IENPUkVfQUREUiBieXRlX29mZnNldDsKLSsKLSsJICAgIGlmIChpbmRleC0+bnVtYmVyIDwgVFlQ RV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpCi0rCQl8fCAoIVRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKHJhbmdlX3R5cGUpCi0rCQkgICAgJiYgaW5kZXgtPm51bWJlciA+IFRZUEVfSElHSF9CT1VO RCAocmFuZ2VfdHlwZSkpKQotKwkgICAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCIpKTsKLSsKLSsJICAgIGJ5dGVfb2Zmc2V0ID0gKChpbmRleC0+bnVtYmVyIC0gVFlQRV9MT1df Qk9VTkQgKHJhbmdlX3R5cGUpKQotKwkJCSAgICogVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxV RSAodHlwZSkpOwotKwotKwkgICAgdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwotKwkg ICAgKnR5cGVwID0gdHlwZTsKLSsJICAgIHZhbHVlX2J5dGVfb2Zmc2V0ICs9IGJ5dGVfb2Zmc2V0 OwotKwkgIH0KLSsJICBicmVhazsKLSsJfQotKyAgICB9Ci0rCi0rICB0eXBlX2xhc3RfdGFyZ2V0 ID0gdHlwZTsKLSsgIHR5cGVfYXJyYXkgPSBhbGxvY2EgKHNpemVvZiAoKnR5cGVfYXJyYXkpICog bmFyZ3MpOwotKyAgaSA9IDA7Ci0rICBmb3IgKHR5cGUgPSBuZXdfYXJyYXlfdHlwZTsgdHlwZSAh PSB0eXBlX2xhc3RfdGFyZ2V0OwotKyAgICAgICB0eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpCi0rICAgIHR5cGVfYXJyYXlbaSsrXSA9IHR5cGU7Ci0rICB3aGlsZSAoaSA+IDApCi0rICAg IHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHR5cGVfYXJyYXlbLS1pXTsKLSsKLSsgICAg ICAvKiBGb3JjZSBUWVBFX0xFTkdUSCAodHlwZSkgcmVjYWxjdWxhdGlvbi4gICovCi0rICAgICAg VFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAxOwotKyAgICAgIGNoZWNrX3R5cGVkZWYgKHR5cGUp OwotKyAgICB9Ci0rCi0rICBzYXZlZF9hcnJheSA9IGFycmF5OwotKyAgYXJyYXkgPSBhbGxvY2F0 ZV92YWx1ZV9sYXp5IChuZXdfYXJyYXlfdHlwZSk7Ci0rICBWQUxVRV9MVkFMIChhcnJheSkgPSBW QUxVRV9MVkFMIChzYXZlZF9hcnJheSk7Ci0rICBpZiAoVkFMVUVfTFZBTCAoc2F2ZWRfYXJyYXkp ID09IGx2YWxfaW50ZXJuYWx2YXJfY29tcG9uZW50KQotKyAgICBWQUxVRV9MVkFMIChhcnJheSkg PSBsdmFsX2ludGVybmFsdmFyOwotICAgZWxzZQotLSAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNf bG9uZyAoZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSsg ICAgVkFMVUVfTFZBTCAoYXJyYXkpID0gVkFMVUVfTFZBTCAoc2F2ZWRfYXJyYXkpOwotKyAgVkFM VUVfRlJBTUVfSUQgKGFycmF5KSA9IFZBTFVFX0ZSQU1FX0lEIChzYXZlZF9hcnJheSk7Ci0rICBp ZiAoVkFMVUVfTFZBTCAoYXJyYXkpICE9IGx2YWxfaW50ZXJuYWx2YXIpCi0rICAgIHNldF92YWx1 ZV9hZGRyZXNzIChhcnJheSwgdmFsdWVfYnl0ZV9hZGRyZXNzICsgdmFsdWVfYnl0ZV9vZmZzZXQp OwotKwotKyAgaWYgKCF2YWx1ZV9sYXp5IChzYXZlZF9hcnJheSkKLSsgICAgICAmJiBUWVBFX0xF TkdUSCAodmFsdWVfdHlwZSAoc2F2ZWRfYXJyYXkpKSA+IDAKLSsgICAgICAmJiBUWVBFX0xFTkdU SCAobmV3X2FycmF5X3R5cGUpID4gMCkKLSsgICAgewotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVf TEVOR1RIIChuZXdfYXJyYXlfdHlwZSkKLSsJCSAgPD0gVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUg KHNhdmVkX2FycmF5KSkpOwotKyAgICAgIC8qIEZJWE1FOiBJdCBzaW11bGF0ZXMgbm9uLXB1Ymxp YyBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cy4gICovCi0rICAgICAgdmFsdWVfY29udGVudHNfYWxs X3JhdyAoYXJyYXkpOwotKyAgICAgIHNldF92YWx1ZV9sYXp5IChhcnJheSwgMCk7Ci0rCi0rICAg ICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c193cml0ZWFibGUgKGFycmF5KSwKLSsJICAgICAgdmFs dWVfY29udGVudHMgKHNhdmVkX2FycmF5KSArIHZhbHVlX2J5dGVfb2Zmc2V0LAotKwkgICAgICBU WVBFX0xFTkdUSCAobmV3X2FycmF5X3R5cGUpKTsKLSsgICAgfQotIAotLSAgcmV0dXJuIHZhbHVl X3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0r ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsgIHJldHVybiBhcnJheTsKLSB9Ci0gCi0gCi1A QCAtNzE0LDYgKzkxMCw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmV4cGVjdF90eXBlLAotICAgaW50IHNhdmVfcG9zMTsKLSAgIHN0cnVjdCBzeW1ib2wgKmZ1bmN0 aW9uID0gTlVMTDsKLSAgIGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBOVUxMOwotKyAgc3RydWN0IGNs ZWFudXAgKm9sZF9jaGFpbjsKLSAKLSAgIHBjID0gKCpwb3MpKys7Ci0gICBvcCA9IGV4cC0+ZWx0 c1twY10ub3Bjb2RlOwotQEAgLTE3ODAsNiArMTk3Nyw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAotICAgICAgIC8qIEZpcnN0IGRldGVy bWluZSB0aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotICAgICAgIGFyZzEg PSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAg b2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAgIG9iamVj dF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGNvZGUgPSBUWVBFX0NP REUgKHR5cGUpOwotIAotQEAgLTE4MDAsMjMgKzE5OTksMTMgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgICAgIGNvZGUgPSBUWVBFX0NP REUgKHR5cGUpOwotIAkgICAgfQotIAl9IAotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4p OwotIAotICAgICAgIHN3aXRjaCAoY29kZSkKLSAJewotIAljYXNlIFRZUEVfQ09ERV9BUlJBWToK LS0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFOR0UpCi0tCSAgICBy ZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbm9zaWRlKTsKLS0JICBl bHNlCi0tCSAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7Ci0tCi0gCWNhc2UgVFlQRV9DT0RF X1NUUklORzoKLS0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9GOTBfUkFOR0Up Ci0tCSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbm9zaWRl KTsKLS0JICBlbHNlCi0tCSAgICB7Ci0tCSAgICAgIGFyZzIgPSBldmFsdWF0ZV9zdWJleHBfd2l0 aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCSAgICAgIHJldHVybiB2YWx1ZV9zdWJz Y3JpcHQgKGFyZzEsIHZhbHVlX2FzX2xvbmcgKGFyZzIpKTsKLS0JICAgIH0KLSsJICByZXR1cm4g dmFsdWVfZjkwX3N1YmFycmF5IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7Ci0gCi0g CWNhc2UgVFlQRV9DT0RFX1BUUjoKLSAJY2FzZSBUWVBFX0NPREVfRlVOQzoKLUBAIC0yMjI5LDQ5 ICsyNDE4LDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0 X3R5cGUsCi0gCX0KLSAgICAgICByZXR1cm4gKGFyZzEpOwotIAotLSAgICBtdWx0aV9mNzdfc3Vi c2NyaXB0OgotLSAgICAgIHsKLS0JTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5f RElNU107Ci0tCWludCBuZGltZW5zaW9ucyA9IDEsIGk7Ci0tCXN0cnVjdCB2YWx1ZSAqYXJyYXkg PSBhcmcxOwotLQotLQlpZiAobmFyZ3MgPiBNQVhfRk9SVFJBTl9ESU1TKQotLQkgIGVycm9yIChf KCJUb28gbWFueSBzdWJzY3JpcHRzIGZvciBGNzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElN Uyk7Ci0tCi0tCW5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0tCi0t CWlmIChuYXJncyAhPSBuZGltZW5zaW9ucykKLS0JICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9m IHN1YnNjcmlwdHMiKSk7Ci0tCi0tCWdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0tCi0tCS8qIE5v dyB0aGF0IHdlIGtub3cgd2UgaGF2ZSBhIGxlZ2FsIGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9u IAotLQkgICBsZXQgdXMgYWN0dWFsbHkgZmluZCBvdXQgd2hlcmUgdGhpcyBlbGVtZW50IGV4aXN0 cyBpbiB0aGUgYXJyYXkuICAqLwotLQotLQkvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byBy aWdodC4gICovCi0tCWZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQotLQkgIHsKLS0JICAgIC8q IEV2YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBG NzcuICAqLwotLQkgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAs IHBvcywgbm9zaWRlKTsKLS0KLS0JICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4g ICovCi0tCi0tCSAgICBzdWJzY3JpcHRfYXJyYXlbaV0gPSB2YWx1ZV9hc19sb25nIChhcmcyKTsK LS0JICB9Ci0tCi0tCS8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQg dG8gbGVmdC4gICovCi0tCWZvciAoaSA9IG5hcmdzOyBpID4gMDsgaS0tKQotLQkgIHsKLS0JICAg IHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJy YXkpKTsKLS0JICAgIExPTkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwotLQot LQkgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKLS0J CQkJCSAgICAgIGY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOwotLQkgIH0KLS0KLS0J cmV0dXJuIGFycmF5OwotLSAgICAgIH0KLS0KLSAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoK LSAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3Np ZGUpOwotICAgICAgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQotQEAgLTI1MDMsMTUgKzI2NDks MjMgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs Ci0gICAgICAgaWYgKGV4cGVjdF90eXBlICYmIFRZUEVfQ09ERSAoZXhwZWN0X3R5cGUpID09IFRZ UEVfQ09ERV9QVFIpCi0gCWV4cGVjdF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlw ZWRlZiAoZXhwZWN0X3R5cGUpKTsKLSAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChleHBl Y3RfdHlwZSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVh bnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVf cmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVf dHlwZSAoYXJnMSkpOwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9N RVRIT0RQVFIKLSAJICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NRU1CRVJQVFIp Ci0gCWVycm9yIChfKCJBdHRlbXB0IHRvIGRlcmVmZXJlbmNlIHBvaW50ZXIgIgotIAkJICJ0byBt ZW1iZXIgd2l0aG91dCBhbiBvYmplY3QiKSk7Ci0gICAgICAgaWYgKG5vc2lkZSA9PSBFVkFMX1NL SVApCi0tCWdvdG8gbm9zaWRlcmV0OwotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7 Ci0rCSAgZ290byBub3NpZGVyZXQ7Ci0rCX0KLSAgICAgICBpZiAodW5vcF91c2VyX2RlZmluZWRf cCAob3AsIGFyZzEpKQotLQlyZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsK LSsJewotKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgIHJldHVybiB2YWx1ZV94X3Vu b3AgKGFyZzEsIG9wLCBub3NpZGUpOwotKwl9Ci0gICAgICAgZWxzZSBpZiAobm9zaWRlID09IEVW QUxfQVZPSURfU0lERV9FRkZFQ1RTKQotIAl7Ci0gCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFyZzEpKTsKLUBAIC0yNTIwLDEyICsyNjc0LDE4IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgIC8qIEluIEMgeW91IGNh biBkZXJlZmVyZW5jZSBhbiBhcnJheSB0byBnZXQgdGhlIDFzdCBlbHQuICAqLwotIAkgICAgICB8 fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotIAkgICAgKQotLQkgICAgcmV0 dXJuIHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAotLQkJCSAgICAgICBsdmFs X21lbW9yeSk7Ci0rCSAgICB7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkg ICAgICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0rCQkJCSBs dmFsX21lbW9yeSk7Ci0rCSAgICB9Ci0gCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfSU5UKQotLQkgICAgLyogR0RCIGFsbG93cyBkZXJlZmVyZW5jaW5nIGFuIGludC4g ICovCi0tCSAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gp LT5idWlsdGluX2ludCwKLS0JCQkgICAgICAgbHZhbF9tZW1vcnkpOwotKwkgICAgewotKwkgICAg ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsJICAgICAgLyogR0RCIGFsbG93cyBkZXJlZmVy ZW5jaW5nIGFuIGludC4gICovCi0rCSAgICAgIHJldHVybiB2YWx1ZV96ZXJvIChidWlsdGluX3R5 cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAotKwkJCQkgbHZhbF9tZW1vcnkpOwotKwkg ICAgfQotIAkgIGVsc2UKLSAJICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMg b2YgYSBub24tcG9pbnRlciB2YWx1ZS4iKSk7Ci0gCX0KLUBAIC0yNTM1LDkgKzI2OTUsMTQgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSBk by4gICJsb25nIGxvbmciIHZhcmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAotIAkgQlVJTFRJ Tl9UWVBFX0xPTkdFU1Qgd291bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwotICAgICAgIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCi0tCXJldHVybiB2YWx1ZV9hdF9s YXp5IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAotLQkJCSAgICAg IChDT1JFX0FERFIpIHZhbHVlX2FzX2FkZHJlc3MgKGFyZzEpKTsKLS0gICAgICByZXR1cm4gdmFs dWVfaW5kIChhcmcxKTsKLSsJewotKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgIHJl dHVybiB2YWx1ZV9hdF9sYXp5IChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5f aW50LAotKwkJCQkoQ09SRV9BRERSKSB2YWx1ZV9hc19hZGRyZXNzIChhcmcxKSk7Ci0rCX0KLSsg ICAgICBhcmcxID0gdmFsdWVfaW5kIChhcmcxKTsKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKLSsgICAgICByZXR1cm4gYXJnMTsKLSAKLSAgICAgY2FzZSBVTk9QX0FERFI6Ci0gICAg ICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1lbWJlcnMuICAqLwot QEAgLTI5NjcsNyArMzEzMiw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLAotIHsKLSAgIGVudW0gZXhwX29wY29kZSBvcDsKLSAgIGludCBw YzsKLS0gIHN0cnVjdCB2YWx1ZSAqdmFsOwotKyAgc3RydWN0IHZhbHVlICp2YWwgPSBOVUxMOwot ICAgc3RydWN0IHN5bWJvbCAqdmFyOwotICAgc3RydWN0IHR5cGUgKnR5cGU7Ci0gCi1AQCAtMjk3 OCwxMyArMzE0MywxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwKLSAgICAgewotICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKLSAgICAgICB2 YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7Ci0rICAgICAgLyogYWRkcmVzc19vZl92YXJp YWJsZSB3aWxsIGNhbGwgb2JqZWN0X2FkZHJlc3Nfc2V0IGZvciBjaGVja190eXBlZGVmLgotKwkg Q2FsbCBpdCBvbmx5IGlmIHJlcXVpcmVkIGFzIGl0IGNhbiBlcnJvci1vdXQgb24gVkFSIGluIHJl Z2lzdGVyLiAgKi8KLSsgICAgICBpZiAoVFlQRV9EWU5BTUlDIChTWU1CT0xfVFlQRSAodmFyKSkp Ci0rCXZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxv Y2spOwotICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChTWU1CT0xfVFlQRSAodmFyKSk7Ci0g ICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0gCSAgJiYgIVRZ UEVfVkVDVE9SICh0eXBlKQotIAkgICYmIENBU1RfSVNfQ09OVkVSU0lPTiAoZXhwLT5sYW5ndWFn ZV9kZWZuKSkKLSAJewotIAkgICgqcG9zKSArPSA0OwotLQkgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFy aWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwotKwkgIGlmICghdmFsKQotKwkg ICAgdmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9j ayk7Ci0gCSAgcmV0dXJuIHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKSwKLSAJCQkgICAgIHZhbCk7Ci0gCX0KLUBAIC0zMDQyLDkgKzMyMTIs MTMgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IGludCAqcG9zKQotIAotICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKLSAgICAgICAoKnBvcykgKz0g NDsKLS0gICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAoU1lNQk9MX1RZUEUgKGV4cC0+ZWx0c1tw YyArIDJdLnN5bWJvbCkpOwotLSAgICAgIHJldHVybgotLQl2YWx1ZV9mcm9tX2xvbmdlc3QgKHNp emVfdHlwZSwgKExPTkdFU1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rICAgICAgLyogV2UgZG8g bm90IG5lZWQgdG8gY2FsbCByZWFkX3Zhcl92YWx1ZSBidXQgdGhlIG9iamVjdCBldmFsdWF0aW9u IG1heQotKwkgbmVlZCB0byBoYXZlIGV4ZWN1dGVkIG9iamVjdF9hZGRyZXNzX3NldCB3aGljaCBu ZWVkcyB2YWxpZAotKwkgU1lNQk9MX1ZBTFVFX0FERFJFU1Mgb2YgdGhlIHN5bWJvbC4gIFN0aWxs IFZBTFVFIHJldHVybmVkIGJ5Ci0rCSByZWFkX3Zhcl92YWx1ZSB3ZSBsZWZ0IGFzIGxhenkuICAq LwotKyAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChyZWFkX3Zhcl92YWx1ZSAoZXhwLT5lbHRzW3Bj ICsgMl0uc3ltYm9sLAotKwkJCQkJZGVwcmVjYXRlZF9zYWZlX2dldF9zZWxlY3RlZF9mcmFtZSAo KSkpOwotKyAgICAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdF U1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgdmFsID0g ZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lEX1NJREVfRUZG RUNUUyk7Ci1AQCAtMzA3NSwxOCArMzI0OSwyNSBAQCBwYXJzZV9hbmRfZXZhbF90eXBlIChjaGFy ICpwLCBpbnQgbGVuZ3RoKQotIGludAotIGNhbGNfZjc3X2FycmF5X2RpbXMgKHN0cnVjdCB0eXBl ICphcnJheV90eXBlKQotIHsKLS0gIGludCBuZGltZW4gPSAxOwotLSAgc3RydWN0IHR5cGUgKnRt cF90eXBlOwotKyAgc3dpdGNoIChUWVBFX0NPREUgKGFycmF5X3R5cGUpKQotKyAgICB7Ci0rICAg IGNhc2UgVFlQRV9DT0RFX1NUUklORzoKLSsgICAgICByZXR1cm4gMTsKLSAKLS0gIGlmICgoVFlQ RV9DT0RFIChhcnJheV90eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkpKQotLSAgICBlcnJvciAoXygi Q2FuJ3QgZ2V0IGRpbWVuc2lvbnMgZm9yIGEgbm9uLWFycmF5IHR5cGUiKSk7Ci0rICAgIGNhc2Ug VFlQRV9DT0RFX0FSUkFZOgotKyAgICAgIHsKLSsJaW50IG5kaW1lbiA9IDE7Ci0gCi0tICB0bXBf dHlwZSA9IGFycmF5X3R5cGU7Ci0rCXdoaWxlICgoYXJyYXlfdHlwZSA9IFRZUEVfVEFSR0VUX1RZ UEUgKGFycmF5X3R5cGUpKSkKLSsJICB7Ci0rCSAgICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBl KSA9PSBUWVBFX0NPREVfQVJSQVkpCi0rCSAgICAgICsrbmRpbWVuOwotKwkgIH0KLSsJcmV0dXJu IG5kaW1lbjsKLSsgICAgICB9Ci0gCi0tICB3aGlsZSAoKHRtcF90eXBlID0gVFlQRV9UQVJHRVRf VFlQRSAodG1wX3R5cGUpKSkKLS0gICAgewotLSAgICAgIGlmIChUWVBFX0NPREUgKHRtcF90eXBl KSA9PSBUWVBFX0NPREVfQVJSQVkpCi0tCSsrbmRpbWVuOwotKyAgICBkZWZhdWx0OgotKyAgICAg IGVycm9yIChfKCJDYW4ndCBnZXQgZGltZW5zaW9ucyBmb3IgYSBub24tYXJyYXkvbm9uLXN0cmlu ZyB0eXBlIikpOwotICAgICB9Ci0tICByZXR1cm4gbmRpbWVuOwotKwotIH0KLWRpZmYgLS1naXQg YS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55Ci1pbmRleCA3YTk0YjE1Li5hNmJhNzg0IDEwMDY0 NAotLS0tIGEvZ2RiL2YtZXhwLnkKLSsrKyBiL2dkYi9mLWV4cC55Ci1AQCAtMjk3LDcgKzI5Nyw5 IEBAIGFyZ2xpc3QgOglzdWJyYW5nZQotIAkJCXsgYXJnbGlzdF9sZW4gPSAxOyB9Ci0gCTsKLSAg ICAKLS1hcmdsaXN0CToJYXJnbGlzdCAnLCcgZXhwICAgJXByZWMgQUJPVkVfQ09NTUEKLSthcmds aXN0CToJYXJnbGlzdCAnLCcgZXhwICAgICAgICVwcmVjIEFCT1ZFX0NPTU1BCi0rCQkJeyBhcmds aXN0X2xlbisrOyB9Ci0rCXwJYXJnbGlzdCAnLCcgc3VicmFuZ2UgICVwcmVjIEFCT1ZFX0NPTU1B Ci0gCQkJeyBhcmdsaXN0X2xlbisrOyB9Ci0gCTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZi1sYW5n LmggYi9nZGIvZi1sYW5nLmgKLWluZGV4IDJkNjdhNDguLjRkMmY0MTEgMTAwNjQ0Ci0tLS0gYS9n ZGIvZi1sYW5nLmgKLSsrKyBiL2dkYi9mLWxhbmcuaAotQEAgLTI5LDYgKzI5LDEwIEBAIGV4dGVy biB2b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQgaW4gZi1leHAueSAqLwotIGV4dGVy biB2b2lkIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgY2hhciAqLCBzdHJ1Y3Qg dWlfZmlsZSAqLCBpbnQsCi0gCQkJICBpbnQsIGNvbnN0IHN0cnVjdCB0eXBlX3ByaW50X29wdGlv bnMgKik7Ci0gCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxp ZF9wcmludF90b19zdHJlYW0KLSsgIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSk7Ci0rZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vy cm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci0rCi0gZXh0ZXJuIHZvaWQgZl92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRlICosIGludCwgQ09SRV9BRERSLAotIAkJCSBzdHJ1 Y3QgdWlfZmlsZSAqLCBpbnQsCi0gCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAotZGlmZiAtLWdp dCBhL2dkYi9mLXR5cGVwcmludC5jIGIvZ2RiL2YtdHlwZXByaW50LmMKLWluZGV4IDgzNTZhYWIu LjUwNTAyNTUgMTAwNjQ0Ci0tLS0gYS9nZGIvZi10eXBlcHJpbnQuYwotKysrIGIvZ2RiL2YtdHlw ZXByaW50LmMKLUBAIC0zMCw2ICszMCw3IEBACi0gI2luY2x1ZGUgImdkYmNvcmUuaCIKLSAjaW5j bHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgImYtbGFuZy5oIgotKyNpbmNsdWRlICJkd2FyZjJs b2MuaCIKLSAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci1AQCAt NDcsNiArNDgsMzQgQEAgdm9pZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB1aV9maWxlICosCi0gdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0 IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwotIAwKLSAKLStjb25zdCBjaGFy ICoKLStmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKLSsJCQkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBj b25zdCBjaGFyICptc2c7Ci0rCi0rICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxp ZCAodHlwZSk7Ci0rICBpZiAobXNnICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBBc3N1bWlu ZyB0aGUgY29udGVudCBwcmludGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4g ICovCi0rICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7Ci0rICAg IH0KLSsKLSsgIHJldHVybiBtc2c7Ci0rfQotKwotK3ZvaWQKLStmX29iamVjdF9hZGRyZXNzX2Rh dGFfdmFsaWRfb3JfZXJyb3IgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGNvbnN0IGNoYXIg Km1zZzsKLSsKLSsgIG1zZyA9IG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKTsK LSsgIGlmIChtc2cgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNj ZXNzIGl0IGJlY2F1c2UgdGhlICVzLiIpLCBfKG1zZykpOwotKyAgICB9Ci0rfQotKwotIC8qIExF VkVMIGlzIHRoZSBkZXB0aCB0byBpbmRlbnQgbGluZXMgYnkuICAqLwotIAotIHZvaWQKLUBAIC01 Niw2ICs4NSw5IEBAIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIg KnZhcnN0cmluZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgIGVudW0gdHlwZV9jb2RlIGNv ZGU7Ci0gICBpbnQgZGVtYW5nbGVkX2FyZ3M7Ci0gCi0rICBpZiAoZl9vYmplY3RfYWRkcmVzc19k YXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAgICBy ZXR1cm47Ci0rCi0gICBmX3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93LCBsZXZl bCk7Ci0gICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKLSAgIGlmICgodmFyc3RyaW5nICE9IE5V TEwgJiYgKnZhcnN0cmluZyAhPSAnXDAnKQotQEAgLTE2Miw2ICsxOTQsOSBAQCBmX3R5cGVfcHJp bnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLAotIAotICAgUVVJVDsKLSAKLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09E RV9UWVBFREVGKQotKyAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLSsKLSAgIHN3aXRjaCAoVFlQ RV9DT0RFICh0eXBlKSkKLSAgICAgewotICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLWRpZmYg LS1naXQgYS9nZGIvZi12YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQuYwotaW5kZXggZDhjNzY3 Zi4uNGFhMGQ1ZSAxMDA2NDQKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZh bHByaW50LmMKLUBAIC01MSwxNSArNTEsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01B WF9GT1JUUkFOX0RJTVMgKyAxXVsyXTsKLSAvKiBUaGUgZm9sbG93aW5nIG1hY3JvIGdpdmVzIHVz IHRoZSBzaXplIG9mIHRoZSBudGggZGltZW5zaW9uLCBXaGVyZSAKLSAgICBuIGlzIDEgYmFzZWQu ICAqLwotIAotLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtu XVsxXSkKLSsjZGVmaW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25d WzFdKQotIAotLS8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIG9mZnNldCBmb3Igcm93IG4g d2hlcmUgbiBpcyAxLWJhc2VkLiAgKi8KLSsvKiBUaGUgZm9sbG93aW5nIGdpdmVzIHVzIHRoZSBl bGVtZW50IHNpemUgZm9yIHJvdyBuIHdoZXJlIG4gaXMgMS1iYXNlZC4gICovCi0gCi0tI2RlZmlu ZSBGNzdfRElNX09GRlNFVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCi0rI2RlZmlu ZSBGNzdfRElNX0JZVEVfU1RSSURFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkKLSAK LSBpbnQKLSBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIHsKLSsgIGZf b2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAodHlwZSk7Ci0rCi0gICBpZiAoVFlQ RV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQotICAgICBlcnJvciAoXygi TG93ZXIgYm91bmQgbWF5IG5vdCBiZSAnKicgaW4gRjc3IikpOwotIAotQEAgLTY5LDE0ICs3MSwx NyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIGludAotIGY3N19n ZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotKyAgZl9vYmplY3RfYWRkcmVz c19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKLSsKLSAgIGlmIChUWVBFX0FSUkFZX1VQUEVS X0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCi0gICAgIHsKLS0gICAgICAvKiBXZSBoYXZlIGFu IGFzc3VtZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFuZHMuICBBc3N1bWUgdGhhdAotLQkgdXBwZXJf Ym91bmQgPT0gbG93ZXJfYm91bmQgc28gdGhhdCB3ZSBzaG93IGF0IGxlYXN0IDEgZWxlbWVudC4K LS0JIElmIHRoZSB1c2VyIHdhbnRzIHRvIHNlZSBtb3JlIGVsZW1lbnRzLCBsZXQgaGltIG1hbnVh bGx5IGFzayBmb3IgJ2VtCi0tCSBhbmQgd2UnbGwgc3Vic2NyaXB0IHRoZSBhcnJheSBhbmQgc2hv dyBoaW0uICAqLwotKyAgICAgIC8qIFdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5IG9uIG91 ciBoYW5kcy4gIEFzIHR5cGVfbGVuZ3RoX2dldAotKwkgYWxyZWFkeSBhc3N1bWVzIGEgbGVuZ3Ro IHplcm8gb2YgYXJyYXlzIHdpdGggdW5kZXJmaW5lZCBib3VuZHMgVkFMQUREUgotKwkgcGFzc2Vk IHRvIHRoZSBGb3J0cmFuIGZ1bmN0aW9ucyBkb2VzIG5vdCBjb250YWluZWQgdGhlIHJlYWwgaW5m ZXJpb3IKLSsJIG1lbW9yeSBjb250ZW50LiAgVXNlciBzaG91bGQgcmVxdWVzdCBwcmludGluZyBv ZiBzcGVjaWZpYyBhcnJheQotKwkgZWxlbWVudHMgaW5zdGVhZC4gICovCi0gCi0tICAgICAgcmV0 dXJuIGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSk7Ci0rICAgICAgcmV0dXJuIGY3N19nZXRfbG93 ZXJib3VuZCAodHlwZSkgLSAxOwotICAgICB9Ci0gCi0gICByZXR1cm4gVFlQRV9BUlJBWV9VUFBF Ul9CT1VORF9WQUxVRSAodHlwZSk7Ci1AQCAtMTMyLDI0ICsxMzcsMjkgQEAgZjc3X2NyZWF0ZV9h cnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtKQotICAgICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7Ci0g ICAgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKLSAKLS0gICAgICBG NzdfRElNX1NJWkUgKG5kaW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKLSsgICAgICBGNzdfRElN X0NPVU5UIChuZGltZW4pID0gdXBwZXIgLSBsb3dlciArIDE7Ci0rCi0rICAgICAgRjc3X0RJTV9C WVRFX1NUUklERSAobmRpbWVuKSA9Ci0rICAgICAgICBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZB TFVFICh0bXBfdHlwZSk7Ci0gCi0gICAgICAgdG1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0 bXBfdHlwZSk7Ci0gICAgICAgbmRpbWVuKys7Ci0gICAgIH0KLSAKLS0gIC8qIE5vdyB3ZSBtdWx0 aXBseSBlbHRsZW4gYnkgYWxsIHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAotKyAgLyog Tm93IHdlIG11bHRpcGx5IGVsdGxlbiBieSBhbGwgdGhlIEJZVEVfU1RSSURFcywgc28gdGhhdCBs YXRlciB3ZQotICAgICAgY2FuIHByaW50IG91dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBV cCB0aWxsIG5vdyB3ZSAKLS0gICAgIGtub3cgYW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUg aXRlbSBidXQgd2UgYWxzbyAKLSsgICAgIGtub3cgYW4gZWx0bGVuIHRvIGFwcGx5IHRvIGdldCB0 aGUgaXRlbSBidXQgd2UgYWxzbyAKLSAgICAgIGhhdmUgdG8ga25vdyBob3cgbXVjaCB0byBhZGQg dG8gZ2V0IHRvIHRoZSBuZXh0IGl0ZW0uICAqLwotIAotICAgbmRpbWVuLS07Ci0gICBlbHRsZW4g PSBUWVBFX0xFTkdUSCAodG1wX3R5cGUpOwotLSAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBl bHRsZW47Ci0rICBpZiAoRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAwKQotKyAgICBG NzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0gZWx0bGVuOwotICAgd2hpbGUgKC0tbmRpbWVu ID4gMCkKLSAgICAgewotLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiArIDEp OwotLSAgICAgIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotKyAgICAgIGVsdGxl biAqPSBGNzdfRElNX0NPVU5UIChuZGltZW4gKyAxKTsKLSsgICAgICBpZiAoRjc3X0RJTV9CWVRF X1NUUklERSAobmRpbWVuKSA9PSAwKQotKwlGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0g ZWx0bGVuOwotICAgICB9Ci0gfQotIAotQEAgLTE3MSwzNyArMTgxLDM1IEBAIGY3N19wcmludF9h cnJheV8xIChpbnQgbnNzLCBpbnQgbmRpbWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAotIAot ICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKLSAgICAgewotLSAgICAgIGZvciAoaSA9IDA7Ci0t CSAgIChpIDwgRjc3X0RJTV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9t YXgpOwotLQkgICBpKyspCi0rICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX0NPVU5UIChu c3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCi0gCXsKLSAJICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOwotIAkgIGY3N19wcmludF9hcnJheV8xIChuc3Mg KyAxLCBuZGltZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0gCQkJICAgICB2YWxh ZGRyLAotLQkJCSAgICAgZW1iZWRkZWRfb2Zmc2V0ICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3Mp LAotKwkJCSAgICAgZW1iZWRkZWRfb2Zmc2V0ICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5z cyksCi0gCQkJICAgICBhZGRyZXNzLAotIAkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9w dGlvbnMsIGVsdHMpOwotIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikgIik7Ci0gCX0K LS0gICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdfRElNX1NJ WkUgKG5zcykpIAotKyAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8 IEY3N19ESU1fQ09VTlQgKG5zcykpCi0gCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIp OwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBmb3IgKGkgPSAwOyBpIDwgRjc3X0RJ TV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7Ci0rICAgICAgZm9y IChpID0gMDsgaSA8IEY3N19ESU1fQ09VTlQgKG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnBy aW50X21heDsKLSAJICAgaSsrLCAoKmVsdHMpKyspCi0gCXsKLSAJICB2YWxfcHJpbnQgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpLAotIAkJICAgICB2YWxhZGRyLAotLQkJICAgICBlbWJlZGRlZF9v ZmZzZXQgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKLSsJCSAgICAgZW1iZWRk ZWRfb2Zmc2V0ICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAg ICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLAotIAkJICAgICB2YWwsIG9wdGlvbnMsIGN1cnJl bnRfbGFuZ3VhZ2UpOwotIAotLQkgIGlmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkK LSsJICBpZiAoaSAhPSAoRjc3X0RJTV9DT1VOVCAobnNzKSAtIDEpKQotIAkgICAgZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAiLCAiKTsKLSAKLSAJICBpZiAoKCplbHRzID09IG9wdGlvbnMtPnBy aW50X21heCAtIDEpCi0tCSAgICAgICYmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAxKSkp Ci0rCSAgICAgICYmIChpICE9IChGNzdfRElNX0NPVU5UIChuc3MpIC0gMSkpKQotIAkgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0gCX0KLSAgICAgfQotQEAgLTI2Nyw2ICsy NzUsOSBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAotICAgQ09SRV9BRERSIGFkZHI7Ci0gICBpbnQg aW5kZXg7Ci0gCi0rICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0 cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0gICBDSEVDS19U WVBFREVGICh0eXBlKTsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKLSAgICAgewotZGlm ZiAtLWdpdCBhL2dkYi9maW5kdmFyLmMgYi9nZGIvZmluZHZhci5jCi1pbmRleCAwNjQ3YzBmLi5h MmEwYTRmIDEwMDY0NAotLS0tIGEvZ2RiL2ZpbmR2YXIuYwotKysrIGIvZ2RiL2ZpbmR2YXIuYwot QEAgLTM0LDYgKzM0LDcgQEAKLSAjaW5jbHVkZSAiYmxvY2suaCIKLSAjaW5jbHVkZSAib2JqZmls ZXMuaCIKLSAjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0g Ci0gLyogQmFzaWMgYnl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rp b25zIHJldHVybiBhCi0gICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1h dCBpbnRlZ2VyIGF0IEFERFIgd2hpY2ggaXMKLUBAIC00MTYsNyArNDE3LDEwIEBAIG1pbnN5bV9s b29rdXBfaXRlcmF0b3JfY2IgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpjYl9kYXRh KQotIH0KLSAKLSAvKiBBIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92 YXJfdmFsdWUiIGhvb2sgaW4KLS0gICB0aGUgbGFuZ3VhZ2UgdmVjdG9yIHdoaWNoIHNob3VsZCB3 b3JrIGluIG1vc3Qgc2l0dWF0aW9ucy4gICovCi0rICAgdGhlIGxhbmd1YWdlIHZlY3RvciB3aGlj aCBzaG91bGQgd29yayBpbiBtb3N0IHNpdHVhdGlvbnMuCi0rICAgV2UgaGF2ZSB0byBmaXJzdCBm aW5kIHRoZSBhZGRyZXNzIG9mIHRoZSB2YXJpYWJsZSBiZWZvcmUgYWxsb2NhdGluZyBzdHJ1Y3QK LSsgICB2YWx1ZSB0byByZXR1cm4gYXMgaXRzIHNpemUgbWF5IGRlcGVuZCBvbiBEV19PUF9QVVNI X09CSkVDVF9BRERSRVNTIHBvc3NpYmx5IAotKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLwotIAot IHN0cnVjdCB2YWx1ZSAqCi0gZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAq dmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi1AQCAtNDI1LDEzICs0MjksNiBAQCBkZWZh dWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSkKLSAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7Ci0gICBD T1JFX0FERFIgYWRkcjsKLSAKLS0gIC8qIENhbGwgY2hlY2tfdHlwZWRlZiBvbiBvdXIgdHlwZSB0 byBtYWtlIHN1cmUgdGhhdCwgaWYgVFlQRSBpcwotLSAgICAgYSBUWVBFX0NPREVfVFlQRURFRiwg aXRzIGxlbmd0aCBpcyBzZXQgdG8gdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHR5cGUKLS0gICAg IGluc3RlYWQgb2YgemVyby4gIEhvd2V2ZXIsIHdlIGRvIG5vdCByZXBsYWNlIHRoZSB0eXBlZGVm IHR5cGUgYnkgdGhlCi0tICAgICB0YXJnZXQgdHlwZSwgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAg dGhlIHR5cGVkZWYgaW4gb3JkZXIgdG8gYmUgYWJsZSB0bwotLSAgICAgc2V0IHRoZSByZXR1cm5l ZCB2YWx1ZSB0eXBlIGRlc2NyaXB0aW9uIGNvcnJlY3RseS4gICovCi0tICBjaGVja190eXBlZGVm ICh0eXBlKTsKLS0KLSAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKLSAgICAg Z2RiX2Fzc2VydCAoZnJhbWUpOwotIAotQEAgLTU5OSw2ICs1OTYsOSBAQCBkZWZhdWx0X3JlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK LSAgICAgICBicmVhazsKLSAgICAgfQotIAotKyAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxM T0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVGIGZvcgotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1Rf QUREUkVTUy4gICovCi0rICBvYmplY3RfYWRkcmVzc19zZXQgKGFkZHIpOwotICAgdiA9IHZhbHVl X2F0X2xhenkgKHR5cGUsIGFkZHIpOwotICAgcmV0dXJuIHY7Ci0gfQotQEAgLTcwMiwxMCArNzAy LDExIEBAIHN0cnVjdCB2YWx1ZSAqCi0gdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUg KnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0tICBzdHJ1Y3Qg dHlwZSAqdHlwZTEgPSBjaGVja190eXBlZGVmICh0eXBlKTsKLSAgIHN0cnVjdCB2YWx1ZSAqdjsK LSAKLS0gIGlmIChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVtLCB0 eXBlMSkpCi0rICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0rCi0rICBpZiAoZ2RiYXJj aF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZSkpCi0gICAgIHsKLSAg ICAgICBpbnQgb3B0aW0sIHVuYXZhaWwsIG9rOwotIAotQEAgLTcyMCw3ICs3MjEsNyBAQCB2YWx1 ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lKQotICAgICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9yZWdpc3RlcjsK LSAgICAgICBWQUxVRV9GUkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSAgICAg ICBWQUxVRV9SRUdOVU0gKHYpID0gcmVnbnVtOwotLSAgICAgIG9rID0gZ2RiYXJjaF9yZWdpc3Rl cl90b192YWx1ZSAoZ2RiYXJjaCwgZnJhbWUsIHJlZ251bSwgdHlwZTEsCi0rICAgICAgb2sgPSBn ZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJhcmNoLCBmcmFtZSwgcmVnbnVtLCB0eXBlLAot IAkJCQkgICAgICB2YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0aW0sCi0gCQkJCSAgICAgICZ1 bmF2YWlsKTsKLSAKLWRpZmYgLS1naXQgYS9nZGIvZ2RiLWdkYi5nZGIuaW4gYi9nZGIvZ2RiLWdk Yi5nZGIuaW4KLWluZGV4IDA1YTM4YjIuLjk4MDFmZGYgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RiLWdk Yi5nZGIuaW4KLSsrKyBiL2dkYi9nZGItZ2RiLmdkYi5pbgotQEAgLTEsNSArMSwxNSBAQAotIGVj aG8gU2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGRlYnVnZ2luZyBnZGIuXG4KLSAKLSsj IFNldCB1cCB0aGUgUHl0aG9uIGxpYnJhcnkgYW5kICJyZXF1aXJlIiBjb21tYW5kLgotK3B5dGhv bgotK2Zyb20gb3MucGF0aCBpbXBvcnQgYWJzcGF0aAotK2dkYi5kYXRhZGlyID0gYWJzcGF0aCAo J0BzcmNkaXJAL3B5dGhvbi9saWInKQotK2dkYi5weXRob25saWJkaXIgPSBnZGIuZGF0YWRpcgot K2dkYi5fX3BhdGhfXyA9IFtnZGIuZGF0YWRpciArICcvZ2RiJ10KLStzeXMucGF0aC5pbnNlcnQo MCwgZ2RiLmRhdGFkaXIpCi0rZW5kCi0rc291cmNlIEBzcmNkaXJAL3B5dGhvbi9saWIvZ2RiL19f aW5pdF9fLnB5Ci0rCi0gaWYgISRnZGJfaW5pdF9kb25lCi0gICBzZXQgdmFyaWFibGUgJGdkYl9p bml0X2RvbmUgPSAxCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlw ZXMuYwotaW5kZXggOGUzMDkwZC4uNzU4YjNjNSAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBlcy5j Ci0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTQwLDYgKzQwLDggQEAKLSAjaW5jbHVkZSAiY3At c3VwcG9ydC5oIgotICNpbmNsdWRlICJiY2FjaGUuaCIKLSAjaW5jbHVkZSAiZHdhcmYybG9jLmgi Ci0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmV4cHIuaCIKLSAKLSAv KiBJbml0aWFsaXplIEJBRE5FU1MgY29uc3RhbnRzLiAgKi8KLSAKLUBAIC0xODgsNiArMTkwLDQz IEBAIGFsbG9jX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgcmV0dXJuIHR5cGU7 Ci0gfQotIAotKyNpZiAwCi0rLyogRGVjbGFyZSBUWVBFIGFzIGRpc2NhcmRhYmxlIG9uIG5leHQg Z2FyYmFnZSBjb2xsZWN0aW9uIGJ5IGZyZWVfYWxsX3R5cGVzLgotKyAgIFlvdSBtdXN0IGNhbGwg dHlwZV9tYXJrX3VzZWQgZHVyaW5nIGVhY2ggZnJlZV9hbGxfdHlwZXMgdG8gcHJvdGVjdCBUWVBF IGZyb20KLSsgICBiZWluZyBkZWFsbG9jYXRlZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzZXRf dHlwZV9hc19kaXNjYXJkYWJsZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAgdm9pZCAqKnNs b3Q7Ci0rCi0rICBnZGJfYXNzZXJ0ICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpOwotKwotKyAg VFlQRV9ESVNDQVJEQUJMRSAodHlwZSkgPSAxOwotKyAgVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5 cGUpID0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudDsKLSsKLSsgIHNsb3QgPSBodGFiX2Zp bmRfc2xvdCAodHlwZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlwZSwgSU5TRVJUKTsKLSsgIGdkYl9h c3NlcnQgKCEqc2xvdCk7Ci0rICAqc2xvdCA9IHR5cGU7Ci0rfQotKyNlbmRpZgotKwotKy8qIEFs bG9jYXRlIGEgbmV3IHR5cGUgbGlrZSBhbGxvY190eXBlIGJ1dCBwcmVzZXJ2ZSBmb3IgaXQgdGhl IGRpc2NhcmRhYmlsaXR5Ci0rICAgc3RhdGUgb2YgUEFSRU5UX1RZUEUuICAqLwotKwotK3N0YXRp YyBzdHJ1Y3QgdHlwZSAqCi0rYWxsb2NfdHlwZV9hc19wYXJlbnQgKHN0cnVjdCB0eXBlICpwYXJl bnRfdHlwZSkKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqbmV3X3R5cGUgPSBhbGxvY190eXBlX2NvcHkg KHBhcmVudF90eXBlKTsKLSsKLSsjaWYgMAotKyAgaWYgKFRZUEVfRElTQ0FSREFCTEUgKHBhcmVu dF90eXBlKSkKLSsgICAgc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190eXBlKTsKLSsjZW5k aWYKLSsKLSsgIHJldHVybiBuZXdfdHlwZTsKLSt9Ci0rCi0gLyogQWxsb2NhdGUgYSBuZXcgR0RC QVJDSC1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0Ci0gICAgd2l0aCBzb21l IGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLSAg ICBvbiB0aGUgaGVhcC4gICovCi1AQCAtMzI4LDcgKzM2Nyw3IEBAIG1ha2VfcG9pbnRlcl90eXBl IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5 cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9u ZS4gICovCi0gICAgIHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0r ICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5 cGVwdHIpCi0gCSp0eXBlcHRyID0gbnR5cGU7Ci0gICAgIH0KLUBAIC00MDEsNyArNDQwLDcgQEAg bWFrZV9yZWZlcmVuY2VfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlw ZXB0cikKLSAKLSAgIGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwg bmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLwotICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190 eXBlX2NvcHkgKHR5cGUpOwotKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5 cGUpOwotICAgICAgIGlmICh0eXBlcHRyKQotIAkqdHlwZXB0ciA9IG50eXBlOwotICAgICB9Ci1A QCAtODI0LDYgKzg2Myw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0 X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAotICAgICBUWVBFX1pBTExPQyAocmVzdWx0 X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwotICAgVFlQRV9MT1dfQk9VTkQg KHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsKLSAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5 cGUpID0gaGlnaF9ib3VuZDsKLSsgIFRZUEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7 Ci0gCi0gICBpZiAobG93X2JvdW5kID49IDApCi0gICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90 eXBlKSA9IDE7Ci1AQCAtOTQ0LDYgKzk4NCwxMCBAQCBnZXRfYXJyYXlfYm91bmRzIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgTE9OR0VTVCAqbG93X2JvdW5kLCBMT05HRVNUICpoaWdoX2JvdW5kKQotICAg cmV0dXJuIDE7Ci0gfQotIAotK3N0YXRpYyBMT05HRVNUIHR5cGVfbGVuZ3RoX2dldCAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSwKLSsJCQkJaW50IGZ1bGxfc3Bh bik7Ci0rCi0rCi0gLyogQ3JlYXRlIGFuIGFycmF5IHR5cGUgdXNpbmcgZWl0aGVyIGEgYmxhbmsg dHlwZSBzdXBwbGllZCBpbgotICAgIFJFU1VMVF9UWVBFLCBvciBjcmVhdGluZyBhIG5ldyB0eXBl LCBpbmhlcml0aW5nIHRoZSBvYmpmaWxlIGZyb20KLSAgICBSQU5HRV9UWVBFLgotQEAgLTk2Nywy NiArMTAxMSwzMSBAQCBjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBl LAotIAotICAgVFlQRV9DT0RFIChyZXN1bHRfdHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7Ci0gICBU WVBFX1RBUkdFVF9UWVBFIChyZXN1bHRfdHlwZSkgPSBlbGVtZW50X3R5cGU7Ci0tICBpZiAoZ2V0 X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwg MCkKLS0gICAgbG93X2JvdW5kID0gaGlnaF9ib3VuZCA9IDA7Ci0tICBDSEVDS19UWVBFREVGIChl bGVtZW50X3R5cGUpOwotLSAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxl bmd0aC4gIEFkYSBhcnJheXMgY2FuIGJlCi0tICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGln aF9ib3VuZCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KLS0gICAgIEluIHN1Y2gg Y2FzZXMsIHRoZSBhcnJheSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICAqLwotLSAgaWYgKGhpZ2hf Ym91bmQgPCBsb3dfYm91bmQpCi0tICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwot LSAgZWxzZQotLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KLS0gICAgICBUWVBFX0xF TkdUSCAoZWxlbWVudF90eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0gICBU WVBFX05GSUVMRFMgKHJlc3VsdF90eXBlKSA9IDE7Ci0gICBUWVBFX0ZJRUxEUyAocmVzdWx0X3R5 cGUpID0KLSAgICAgKHN0cnVjdCBmaWVsZCAqKSBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNp emVvZiAoc3RydWN0IGZpZWxkKSk7Ci0gICBUWVBFX0lOREVYX1RZUEUgKHJlc3VsdF90eXBlKSA9 IHJhbmdlX3R5cGU7Ci0gICBUWVBFX1ZQVFJfRklFTEROTyAocmVzdWx0X3R5cGUpID0gLTE7Ci0g Ci0tICAvKiBUWVBFX0ZMQUdfVEFSR0VUX1NUVUIgd2lsbCB0YWtlIGNhcmUgb2YgemVybyBsZW5n dGggYXJyYXlzLiAgKi8KLSsgIC8qIERXQVJGIGJsb2NrcyBtYXkgZGVwZW5kIG9uIHJ1bnRpbWUg aW5mb3JtYXRpb24gbGlrZQotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBub3QgYmVp bmcgYXZhaWxhYmxlIGR1cmluZyB0aGUKLSsgICAgIENSRUFURV9BUlJBWV9UWVBFIHRpbWUuICAq LwotKyAgaWYgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kICE9IFJBTkdF X0JPVU5EX0tJTkRfQ09OU1RBTlQKLSsgICAgICB8fCBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5 cGUpLT5oaWdoLmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZ UEVfRFlOQU1JQyAoZWxlbWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBl KSA9IDA7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5 cGUpOwotKyAgICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQg KHJlc3VsdF90eXBlLCBlbGVtZW50X3R5cGUsCi0rCQkJCQkJICAgMCk7Ci0rICAgIH0KLSAgIGlm IChUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID09IDApCi0tICAgIFRZUEVfVEFSR0VUX1NUVUIg KHJlc3VsdF90eXBlKSA9IDE7Ci0rICAgIHsKLSsgICAgICAvKiBUaGUgcmVhbCBzaXplIHdpbGwg YmUgY29tcHV0ZWQgZm9yIHNwZWNpZmljIGluc3RhbmNlcyBieQotKwkgQ0hFQ0tfVFlQRURFRi4g ICovCi0rICAgICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKLSsgICAgfQot IAotICAgcmV0dXJuIHJlc3VsdF90eXBlOwotIH0KLUBAIC0xNTA4LDYgKzE1NTcsMTA1IEBAIHN0 dWJfbm9uYW1lX2NvbXBsYWludCAodm9pZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxh aW50cywgXygic3R1YiB0eXBlIGhhcyBOVUxMIG5hbWUiKSk7Ci0gfQotIAotKy8qIENhbGN1bGF0 ZSB0aGUgbWVtb3J5IGxlbmd0aCBvZiBhcnJheSBUWVBFLgotKwotKyAgIFRBUkdFVF9UWVBFIHNo b3VsZCBiZSBzZXQgdG8gYGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKScg YXMKLSsgICBhIHBlcmZvcm1hbmNlIGhpbnQuICBGZWVsIGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0 IEZVTExfU1BBTiB0byByZXR1cm4gdGhlCi0rICAgc2l6ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFk ZGluZyBvZiB0aGUgbGFzdCBlbGVtZW50IC0gaXQgbWF5IGRpZmZlciBmcm9tIHRoZQotKyAgIGNs ZWFyZWQgRlVMTF9TUEFOIHJldHVybiB2YWx1ZSAodGhlIGV4cGVjdGVkIFNJWkVPRikgZm9yIG5v bi16ZXJvCi0rICAgVFlQRV9CWVRFX1NUUklERSB2YWx1ZXMuICAqLwotKwotK3N0YXRpYyBMT05H RVNUCi0rdHlwZV9sZW5ndGhfZ2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRh cmdldF90eXBlLCBpbnQgZnVsbF9zcGFuKQotK3sKLSsgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBl OwotKyAgTE9OR0VTVCBieXRlX3N0cmlkZSA9IDA7CS8qIGA9IDAnIGZvciBhIGZhbHNlIEdDQyB3 YXJuaW5nLiAgKi8KLSsgIExPTkdFU1QgY291bnQsIGVsZW1lbnRfc2l6ZSwgcmV0dmFsOwotKwot KyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgJiYgVFlQ RV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSSU5HKQotKyAgICByZXR1cm4gVFlQRV9MRU5H VEggKHR5cGUpOwotKwotKyAgLyogQXZvaWQgZXhlY3V0aW5nIFRZUEVfSElHSF9CT1VORCBmb3Ig aW52YWxpZCAodW5hbGxvY2F0ZWQvdW5hc3NvY2lhdGVkKQotKyAgICAgRm9ydHJhbiBhcnJheXMu ICBUaGUgYWxsb2NhdGVkIGRhdGEgd2lsbCBuZXZlciBiZSB1c2VkIHNvIHRoZXkgY2FuIGJlCi0r ICAgICB6ZXJvLWxlbmd0aC4gICovCi0rICBpZiAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFs aWQgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVY X1RZUEUgKHR5cGUpOwotKyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlw ZSkKLSsgICAgICB8fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKLSsg ICAgcmV0dXJuIDA7Ci0rICBjb3VudCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBU WVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSkgKyAxOwotKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Ig d3JvbmcgRFdBUkYgYW5ub3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCi0rICBp ZiAoY291bnQgPCAwKQotKyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52 YWxpZCBib3VuZHMgJXMuLiVzIiksCi0rCSAgICAgVFlQRV9FUlJPUl9OQU1FICh0eXBlKSwgcGxv bmdlc3QgKFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSksCi0rCSAgICAgcGxvbmdlc3QgKFRZ UEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkpKTsKLSsgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMg bm90IGhhbmRsZSBjb3VudCA9PSAwIHJpZ2h0LiAgKi8KLSsgIGlmIChjb3VudCA8PSAwKQotKyAg ICByZXR1cm4gMDsKLSsgIGlmIChmdWxsX3NwYW4gfHwgY291bnQgPiAxKQotKyAgICB7Ci0rICAg ICAgLyogV2UgZG8gbm90IHVzZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBo ZXJlIGFzIHdlIHdhbnQgdG8KLSsgICAgICAgICBmb3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCi0r ICAgICAgYnl0ZV9zdHJpZGUgPSBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKLSsgICAg ICBpZiAoYnl0ZV9zdHJpZGUgPT0gMCkKLSsgICAgICAgIHsKLSsJICBpZiAodGFyZ2V0X3R5cGUg PT0gTlVMTCkKLSsJICAgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSkpOwotKwkgIGJ5dGVfc3RyaWRlID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRf dHlwZSwgTlVMTCwgMSk7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogRm9yIG5vdywgd2UgY29uc2Vy dmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAotKyAg ICAgZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8 IDAsCi0rICAgICAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBp cyB0ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZAotKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkg dHJ1ZSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAotKyAgICAg d2l0aCBpdHMgaGlnaC1vcmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9i b3VuZC1sb3dfYm91bmQgaXMKLSsgICAgIGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNU IGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93X2JvdW5kKzEKLSsgICAgIG92ZXJmbG93cywgaXQg b3ZlcmZsb3dzIHRvIDAuICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUg dG8KLSsgICAgIGluY3JlYXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9t IHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4KLSsgICAgICovCi0rCi0rICBpZiAoZnVsbF9zcGFu KQotKyAgICB7Ci0rICAgICAgcmV0dmFsID0gY291bnQgKiBieXRlX3N0cmlkZTsKLSsgICAgICBp ZiAoY291bnQgPT0gMCB8fCByZXR2YWwgLyBjb3VudCAhPSBieXRlX3N0cmlkZSB8fCByZXR2YWwg PiBVSU5UX01BWCkKLSsJcmV0dmFsID0gMDsKLSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9 Ci0rICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKLSsgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190 eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rICBlbGVtZW50X3NpemUgPSB0eXBl X2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsgIHJldHZhbCA9IChjb3VudCAt IDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7Ci0rICBpZiAocmV0dmFsIDwgZWxlbWVu dF9zaXplCi0rICAgICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKLSsgICAgICAgICAgJiYgKHJldHZh bCAtIGVsZW1lbnRfc2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3VudCAtIDEpCi0rICAgICAgfHwg cmV0dmFsID4gVUlOVF9NQVgpCi0rICAgIHJldHZhbCA9IDA7Ci0rICByZXR1cm4gcmV0dmFsOwot K30KLSsKLSsvKiBQcmVwYXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2Vu ZC4gIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uCi0rICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBF X0RZTkFNSUMgZmxhZy4gICovCi0rCi0rdm9pZAotK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBl ICp0eXBlKQotK3sKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxE UyAodHlwZSk7ICsraSkKLSsgICAgaWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkgJiYgVFlQ RV9EWU5BTUlDIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKSkKLSsgICAgICBicmVhazsKLSsK LSsgIC8qIEZJWE1FOiBjcGx1c19zdHVmZiBpcyBpZ25vcmVkIGhlcmUuICAqLwotKyAgaWYgKGkg PCBUWVBFX05GSUVMRFMgKHR5cGUpCi0rICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlw ZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKLSsgICAgICB8 fCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSkpKQotKyAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKLSt9Ci0rCi0gLyog RmluZCB0aGUgcmVhbCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJl YWwgdHlwZSwKLSAgICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5cGVkZWZzLCBhbmQg Y29tcGxldGluZyBvcGFxdWUgb3Igc3R1YgotICAgIHR5cGVzLiAgQ29tcGxldGlvbiBjaGFuZ2Vz IHRoZSBUWVBFIGFyZ3VtZW50LCBidXQgc3RyaXBwaW5nIG9mCi1AQCAtMTY3NCw1MiArMTgyMiwz NyBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgICAgIH0KLSAgICAg fQotIAotLSAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpKQotKyAgLyogY29weV90eXBlX3Jl Y3Vyc2l2ZSBhdXRvbWF0aWNhbGx5IG1ha2VzIHRoZSByZXN1bHRpbmcgdHlwZSBjb250YWluaW5n IG9ubHkKLSsgICAgIGNvbnN0YW50IHZhbHVlcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycyBvZiB0 aGlzIGZ1bmN0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQotKyAgICB7Ci0r ICAgICAgaHRhYl90IGNvcGllZF90eXBlczsKLSsKLSsgICAgICBjb3BpZWRfdHlwZXMgPSBjcmVh dGVfY29waWVkX3R5cGVzX2hhc2ggKE5VTEwpOwotKyAgICAgIHR5cGUgPSBjb3B5X3R5cGVfcmVj dXJzaXZlICh0eXBlLCBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGh0YWJfZGVsZXRlIChjb3BpZWRf dHlwZXMpOwotKwotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfRFlOQU1JQyAodHlwZSkgPT0gMCk7 Ci0rICAgICAgLyogRm9yY2UgVFlQRV9MRU5HVEggKHR5cGUpIHJlY2FsY3VsYXRpb24uICAqLwot KyAgICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAxOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9U QVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKLSAgICAgewotLSAgICAg IHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAKLSsgICAgICBp ZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKLSsJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0YXJn ZXRfdHlwZTsKLSAgICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9UQVJH RVRfU1RVQiAodGFyZ2V0X3R5cGUpKQotIAl7Ci0gCSAgLyogTm90aGluZyB3ZSBjYW4gZG8uICAq LwotIAl9Ci0gICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJS QVkKLS0JICAgICAgICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQotLQkgICAgICAgJiYgKFRZ UEVfQ09ERSAocmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCi0tCQkgICA9PSBU WVBFX0NPREVfUkFOR0UpKQotKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfU1RSSU5HKQotIAl7Ci0gCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBh cnJheSB0eXBlLCBiYXNlZCBvbiBpdHMKLS0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRo ZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4KLS0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFk YSBhcnJheXMgd2hlcmUgdGhlIGhpZ2ggYm91bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhl IGxvdyBib3VuZC4gICovCi0tCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xPV19C T1VORCAocmFuZ2VfdHlwZSk7Ci0tCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQRV9I SUdIX0JPVU5EIChyYW5nZV90eXBlKTsKLS0JICBVTE9OR0VTVCBsZW47Ci0tCi0tCSAgaWYgKGhp Z2hfYm91bmQgPCBsb3dfYm91bmQpCi0tCSAgICBsZW4gPSAwOwotLQkgIGVsc2UKLS0JICAgIHsK LS0JICAgICAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVu Z3RoIHRvIGJlIDAKLS0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29k ZSBiZWxvdyBhc3N1bWVzCi0tCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCAr IFVMT05HRVNUX01BWCArIDEsCi0tCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRl ZWQgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZQotLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRy dWUgaWYgeCB3ZXJlIHVuc2lnbmVkIHdpdGggaXRzCi0tCQkgaGlnaC1vcmRlciBiaXQgb24pLiAg SXQgdXNlcyB0aGUgZmFjdCB0aGF0Ci0tCQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlz IHJlcHJlc2VudGFibGUgaW4KLS0JCSBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxv d19ib3VuZCsxIG92ZXJmbG93cywKLS0JCSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hh bmdlIHRoZXNlIHRlc3RzIGlmIHdlIAotLQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVz ZW50YXRpb24gb2YgVFlQRV9MRU5HVEgKLS0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VT VC4gICovCi0tCSAgICAgIFVMT05HRVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9i b3VuZDsKLS0JICAgICAgVUxPTkdFU1QgdGxlbiA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7 Ci0tCi0tCSAgICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7Ci0tCSAgICAgIGlm ICh0bGVuID09IDAgfHwgKGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCi0tCQkgIHx8 IGxlbiA+IFVJTlRfTUFYKQotLQkJbGVuID0gMDsKLS0JICAgIH0KLS0JICBUWVBFX0xFTkdUSCAo dHlwZSkgPSBsZW47Ci0rCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0IHR5 cGUncyBsZW5ndGguICAqLwotKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVfbGVuZ3RoX2dl dCAodHlwZSwgdGFyZ2V0X3R5cGUsIDApOwotIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0g MDsKLSAJfQotICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JB TkdFKQotQEAgLTE3MjcsNiArMTg2MCw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0 eXBlKQotIAkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7 Ci0gCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwotIAl9Ci0rICAgICAgVFlQRV9EWU5B TUlDICh0eXBlKSA9IDA7Ci0gICAgIH0KLSAKLSAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBl ICh0eXBlLCBpbnN0YW5jZV9mbGFncywgTlVMTCk7Ci1AQCAtMzYzMiwzMyArMzc2Niw0MiBAQCB0 eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykK LSB9Ci0gCi0gLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVj dXJzaXZlIHRvIHdhbGsKLS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JK RklMRSdzIG9ic3RhY2ssIGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0 ZWQuICAqLwotKyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJfdAot IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewot LSAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9w YWlyX2VxLAotLQkJCSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJ CSAgICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29ic3Rh Y2tfZGVhbGxvY2F0ZSk7Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAg LyogTlVMTCBPQkpGSUxFIGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWlu ZWQgaW4KLSsJIE9CSkZJTEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVF X0hJU1RPUllfQ0hBSU4uICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQg YnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRl ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsgIGVs c2UKLSsgICAgewotKyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpG SUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdl dCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJu IGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAot KwkJCQkgICB4ZnJlZSwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFzaHRh Yl9vYnN0YWNrX2FsbG9jYXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwot KyAgICB9Ci0gfQotIAotLS8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRSwgaWYg aXQgaXMgYXNzb2NpYXRlZCB3aXRoCi0tICAgT0JKRklMRS4gIFJldHVybiBhIG5ldyB0eXBlIGFs bG9jYXRlZCB1c2luZyBtYWxsb2MsIGEgc2F2ZWQgdHlwZSBpZgotLSAgIHdlIGhhdmUgYWxyZWFk eSB2aXNpdGVkIFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyksIG9yIFRZUEUgaWYgaXQgaXMKLS0g ICBub3QgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLwotKy8qIEEgaGVscGVyIGZvciBjb3B5 X3R5cGVfcmVjdXJzaXZlLiAgVGhpcyBkb2VzIGFsbCB0aGUgd29yay4gIE9CSkZJTEUgaXMgdXNl ZAotKyAgIG9ubHkgZm9yIGFuIGFzc2VydGlvbiBjaGVja2luZy4gICovCi0gCi0tc3RydWN0IHR5 cGUgKgotLWNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKLS0J CSAgICAgc3RydWN0IHR5cGUgKnR5cGUsCi0tCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCi0r c3RhdGljIHN0cnVjdCB0eXBlICoKLStjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCAKLSsJCSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgICBo dGFiX3QgY29waWVkX3R5cGVzKQotIHsKLSAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0b3JlZCwgcGFp cjsKLSAgIHZvaWQgKipzbG90OwotICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwotIAotLSAgaWYg KCEgVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JKRklMRV9PV05F RCAodHlwZSkgJiYgIVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0eXBlOwotIAot ICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3Ro ZXIgb2JqZmlsZXM7Ci1AQCAtMzY3Myw5ICszODE2LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2gg KGdldF90eXBlX2FyY2ggKHR5cGUpKTsKLSAKLSAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlw ZSB0byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQotLSAgICAgd2UgZW5jb3Vu dGVyIHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gICovCi0t ICBzdG9yZWQKLS0gICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNr LCBzaXplb2YgKHN0cnVjdCB0eXBlX3BhaXIpKTsKLSsgICAgIHdlIGVuY291bnRlciB0aGlzIHR5 cGUgYWdhaW4gZHVyaW5nIGEgcmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQKLSsg ICAgIGJlIGFsbG9jYXRlZCBmcm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSByZW1v dmluZyBPQkpGSUxFLCB0aGlzCi0rICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4ZnJl ZSBpcyBjYWxsZWQgZm9yIGl0IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KLSsgIHN0b3JlZCA9IHht YWxsb2MgKHNpemVvZiAoKnN0b3JlZCkpOwotICAgc3RvcmVkLT5vbGQgPSB0eXBlOwotICAgc3Rv cmVkLT5uZXcgPSBuZXdfdHlwZTsKLSAgICpzbG90ID0gc3RvcmVkOwotQEAgLTM2ODYsNiArMzgz MCwyMSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAg IFRZUEVfT0JKRklMRV9PV05FRCAobmV3X3R5cGUpID0gMDsKLSAgIFRZUEVfT1dORVIgKG5ld190 eXBlKS5nZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7Ci0gCi0rI2lmIDAKLSsgIC8qIFRZ UEVfTUFJTl9UWVBFIG1lbW9yeSBjb3B5IGFib3ZlIHJld3JvdGUgdGhlIFRZUEVfRElTQ0FSREFC TEUgZmxhZyBzbyB3ZQotKyAgICAgbmVlZCB0byBpbml0aWFsaXplIGl0IGFnYWluLiAgQW5kIGV2 ZW4gaWYgVFlQRSB3YXMgYWxyZWFkeSBkaXNjYXJkYWJsZQotKyAgICAgTkVXX1RZUEUgc28gZmFy IGlzIG5vdCByZWdpc3RlcmVkIGluIFRZUEVfRElTQ0FSREFCTEVfVEFCTEUuICAqLwotKyAgVFlQ RV9ESVNDQVJEQUJMRSAobmV3X3R5cGUpID0gMDsKLSsgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxl IChuZXdfdHlwZSk7Ci0rI2VuZGlmCi0rCi0rICAvKiBQcmUtY2xlYXIgdGhlIGZpZWxkcyBwcm9j ZXNzZWQgYnkgZGVsZXRlX21haW5fdHlwZS4gIElmIERXQVJGIGJsb2NrCi0rICAgICBldmFsdWF0 aW9ucyBiZWxvdyBjYWxsIGVycm9yIHdlIHdvdWxkIGxlYXZlIGFuIHVuZnJlZWFibGUgVFlQRS4g ICovCi0rICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSBOVUxMOwotKyAgVFlQRV9WUFRS X0JBU0VUWVBFIChuZXdfdHlwZSkgPSBOVUxMOwotKyAgVFlQRV9ORklFTERTIChuZXdfdHlwZSkg PSAwOwotKyAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IE5VTEw7Ci0rCi0gICBpZiAoVFlQRV9O QU1FICh0eXBlKSkKLSAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05B TUUgKHR5cGUpKTsKLSAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkKLUBAIC0zNjk0LDEyICsz ODUzLDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot ICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAo dHlwZSk7Ci0gICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwot IAotKyAgaWYgKFRZUEVfQUxMT0NBVEVEIChuZXdfdHlwZSkpCi0rICAgIHsKLSsgICAgICBnZGJf YXNzZXJ0ICghVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkpOwotKwotKyAgICAgIGlmICgh ZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKSkKLSsg ICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gMTsKLSsgICAgICBUWVBFX0FM TE9DQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKLSsgICAgfQotKwotKyAgaWYgKFRZUEVfQVNTT0NJ QVRFRCAobmV3X3R5cGUpKQotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FT U09DSUFURUQgKG5ld190eXBlKSk7Ci0rCi0rICAgICAgaWYgKCFkd2FyZl9sb2NleHByX2JhdG9u X2V2YWwgKFRZUEVfQVNTT0NJQVRFRCAobmV3X3R5cGUpKSkKLSsgICAgICAgIFRZUEVfTk9UX0FT U09DSUFURUQgKG5ld190eXBlKSA9IDE7Ci0rICAgICAgVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlw ZSkgPSBOVUxMOwotKyAgICB9Ci0rCi0rICBpZiAoIVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERS IChuZXdfdHlwZSkKLSsgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5l d190eXBlKSkKLSsgICAgewotKyAgICAgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBl KQotKyAgICAgICAgICB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCi0rCVRZUEVf REFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpID0gTlVMTDsKLSsgICAgICBlbHNl Ci0rCXsKLSsJICBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAobmV3X3R5cGUpID0gMTsKLSsJ ICBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRv bl9ldmFsCi0rCQkJCSAgICAoVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlw ZSkpOwotKwl9Ci0rICAgIH0KLSsKLSAgIC8qIENvcHkgdGhlIGZpZWxkcy4gICovCi0gICBpZiAo VFlQRV9ORklFTERTICh0eXBlKSkKLSAgICAgewotICAgICAgIGludCBpLCBuZmllbGRzOwotIAot KyAgICAgIC8qIFRZUEVfQ09ERV9SQU5HRSB1c2VzIFRZUEVfUkFOR0VfREFUQSBvZiB0aGUgdW5p b24gd2l0aCBUWVBFX0ZJRUxEUy4gICovCi0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0 eXBlKSAhPSBUWVBFX0NPREVfUkFOR0UpOwotKwotICAgICAgIG5maWVsZHMgPSBUWVBFX05GSUVM RFMgKHR5cGUpOwotKyAgICAgIFRZUEVfTkZJRUxEUyAobmV3X3R5cGUpID0gbmZpZWxkczsKLSAg ICAgICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZp ZWxkKTsKLSAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQotIAl7Ci1AQCAtMzcw OCw4ICszOTAzLDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCi0gCSAgVFlQRV9GSUVMRF9CSVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJ VFNJWkUgKHR5cGUsIGkpOwotIAkgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQotIAkg ICAgVFlQRV9GSUVMRF9UWVBFIChuZXdfdHlwZSwgaSkKLS0JICAgICAgPSBjb3B5X3R5cGVfcmVj dXJzaXZlIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAotLQkJCQkgICAgIGNv cGllZF90eXBlcyk7Ci0rCSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLCBU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAotKwkJCQkgICAgICAgY29waWVkX3R5cGVzKTsKLSAJ ICBpZiAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSkKLSAJICAgIFRZUEVfRklFTERfTkFNRSAo bmV3X3R5cGUsIGkpID0gCi0gCSAgICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwg aSkpOwotQEAgLTM3NDAsMjQgKzM5MzUsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotIAl9Ci0gICAgIH0KLSAKLSsgIC8qIEJvdGggRklFTERfTE9D X0tJTkRfRFdBUkZfQkxPQ0sgYW5kIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCB3ZXJl Ci0rICAgICBwb3NzaWJseSBjb252ZXJ0ZWQuICAqLwotKyAgVFlQRV9EWU5BTUlDIChuZXdfdHlw ZSkgPSAwOwotKwotICAgLyogRm9yIHJhbmdlIHR5cGVzLCBjb3B5IHRoZSBib3VuZHMgaW5mb3Jt YXRpb24uICAqLwotLSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQot KyAgaWYgKFRZUEVfQ09ERSAobmV3X3R5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLSAgICAgewot ICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3QgcmFuZ2VfYm91bmRzKSk7Ci0gICAgICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0g KlRZUEVfUkFOR0VfREFUQSAodHlwZSk7Ci0rCi0rICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RB VEEgKG5ld190eXBlKS0+bG93LmtpbmQpCi0rCXsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0NP TlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6 Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0 cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBi eSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1Rf QVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAgICovCi0rCSAgaWYgKFRZ UEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190 eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMgKCkpCi0rCSAgICB7Ci0rCSAgICAg IC8qIFdlIHNob3VsZCBzZXQgMSBmb3IgRm9ydHJhbiBidXQgaG93IHRvIGZpbmQgdGhlIGxhbmd1 YWdlPyAgKi8KLSsJICAgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IDA7Ci0rCSAgICAg IFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgIH0KLSsJICBl bHNlCi0rCSAgICB7Ci0rCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBkd2FyZl9s b2NleHByX2JhdG9uX2V2YWwKLSsJCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cu dS5kd2FyZl9ibG9jayk7Ci0rCSAgICAgIGlmIChUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID49 IDApCi0rCQlUWVBFX1VOU0lHTkVEIChuZXdfdHlwZSkgPSAxOwotKwkgICAgfQotKwkgIFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RB TlQ7Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgot KwkgIHsKLSsJICAgIENPUkVfQUREUiBhZGRyOwotKwotKwkgICAgLyogYHN0cnVjdCBkd2FyZjJf bG9jbGlzdF9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgICBp dCBpcyBleHBlY3RlZCB0byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAg ICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2 YWxpZCBmb3IgVFlQRS4KLSsJICAgICAgICovCi0rCSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FU RUQgKG5ld190eXBlKQotKwkgICAgICAgICYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5 cGUpICYmIGhhc19zdGFja19mcmFtZXMgKCkKLSsJICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2Jh dG9uX2V2YWwKLSsJCSAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9s b2NsaXN0LmxvY2xpc3QsCi0rCQkgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUu ZHdhcmZfbG9jbGlzdC50eXBlLCAmYWRkcikpCi0rCSAgICAgIHsKLSsJCVRZUEVfTE9XX0JPVU5E IChuZXdfdHlwZSkgPSBhZGRyOwotKwkJaWYgKFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPj0g MCkKLSsJCSAgVFlQRV9VTlNJR05FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgICAgfQotKwkgICAg ZWxzZQotKwkgICAgICB7Ci0rCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhv dyB0byBmaW5kIHRoZSBsYW5ndWFnZT8gICovCi0rCQlUWVBFX0xPV19CT1VORCAobmV3X3R5cGUp ID0gMDsKLSsJCVRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAg ICAgfQotKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kID0gUkFOR0Vf Qk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBz d2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQpCi0rCXsKLSsJY2Fz ZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JP VU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRv bicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0ZWQg dG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9UX0FM TE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgot KwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVf Tk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMg KCkpCi0rCSAgICB7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9M T1dfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKG5ld190eXBlKSA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9ISUdIX0JP VU5EIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkgICAgICAgKFRZ UEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNU QU5UOwotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoK LSsJICB7Ci0rCSAgICBDT1JFX0FERFIgYWRkcjsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYy X2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAg aXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkg ICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3Qg dmFsaWQgZm9yIFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NB VEVEIChuZXdfdHlwZSkKLSsJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190 eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpCi0rCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9i YXRvbl9ldmFsCi0rCQkgICAgICAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5k d2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQkgICAgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlw ZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkgICAgICAgJmFkZHIpKQotKwkgICAg ICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IGFkZHI7Ci0rCSAgICBlbHNlCi0rCSAgICAg IHsKLSsJCVRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190 eXBlKSAtIDE7Ci0rCQlUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOwot KwkgICAgICB9Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0g UkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsg ICAgICBzd2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS5raW5k KQotKwl7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJICBicmVhazsKLSsJ Y2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBzdHJ1Y3QgZHdhcmYy X2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgIGl0 IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAg ICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxp ZCBmb3IgVFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190 eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgfHwgISBoYXNf c3RhY2tfZnJhbWVzICgpKQotKwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3X3R5cGUpID0gMDsK LSsJICBlbHNlCi0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBkd2FyZl9sb2Nl eHByX2JhdG9uX2V2YWwKLSsJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3Ry aWRlLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRl X3N0cmlkZS5raW5kCi0rCSAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgYnJl YWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJICAg IENPUkVfQUREUiBhZGRyID0gMDsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3Rf YmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAgaXQgaXMgZXhw ZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgICAgVFlQ RV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9y IFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdf dHlwZSkKLSsJCSYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19zdGFj a19mcmFtZXMgKCkpCi0rCSAgICAgIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAotKwkgICAgICAg KFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3Qu bG9jbGlzdCwKLSsJCVRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3 YXJmX2xvY2xpc3QudHlwZSwKLSsJCSZhZGRyKTsKLSsJICAgIFRZUEVfQllURV9TVFJJREUgKG5l d190eXBlKSA9IGFkZHI7Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9z dHJpZGUua2luZAotKwkgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgfQot KwkgIGJyZWFrOwotKwl9Ci0rCi0rICAgICAgLyogQ29udmVydCBUWVBFX1JBTkdFX0hJR0hfQk9V TkRfSVNfQ09VTlQgaW50byBhIHJlZ3VsYXIgYm91bmQuICAqLwotKyAgICAgIGlmIChUWVBFX1JB TkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSkKLSsJewotKwkgIFRZUEVfSElHSF9C T1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKQotKwkJCQkgICAgICAg KyBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgVFlQRV9SQU5HRV9ISUdIX0JP VU5EX0lTX0NPVU5UIChuZXdfdHlwZSkgPSAwOwotKwl9Ci0gICAgIH0KLSAKLSAgIC8qIENvcHkg cG9pbnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKQotICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5 cGVfcmVjdXJzaXZlIChvYmpmaWxlLCAKLS0JCQkgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwK LS0JCQkgICBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAob2Jq ZmlsZSwgCi0rCQkJICAgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkgICAgIGNvcGll ZF90eXBlcyk7Ci0gICBpZiAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSkKLSAgICAgVFlQRV9W UFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlIChv YmpmaWxlLAotLQkJCSAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksCi0tCQkJICAgY29waWVk X3R5cGVzKTsKLSsgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsCi0rCQkJICAg ICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLAotKwkJCSAgICAgY29waWVkX3R5cGVzKTsKLSsK LSsgIGlmIChUWVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0rICAgIHsK LSsgICAgICBzdHJ1Y3QgdHlwZSAqbmV3X2luZGV4X3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKG5l d190eXBlKTsKLSsKLSsgICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAobmV3X2luZGV4X3R5cGUp ID09IDApCi0rCVRZUEVfQllURV9TVFJJREUgKG5ld19pbmRleF90eXBlKQotKwkgID0gVFlQRV9M RU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSk7Ci0rICAgIH0KLSsKLSAgIC8qIE1h eWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KLSAKLSAgICAgIE5PVEUgZHJvdy8yMDA1 LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNpZmljIGJpdHMgbGlrZQotQEAgLTM3 NzQsNiArNDEyOSwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0rLyogUmVjdXJzaXZlbHkgY29weSAo ZGVlcCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nCi0rICAg bWFsbG9jLCBhIHNhdmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNp bmcgQ09QSUVEX1RZUEVTKSwKLSsgICBvciBUWVBFIGlmIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdp dGggT0JKRklMRS4gICovCi0rCi0rc3RydWN0IHR5cGUgKgotK2NvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCB0eXBlICp0eXBlLAotKwkJICAgICBodGFiX3QgY29waWVkX3R5cGVzKQotK3sKLSsg IHJldHVybiBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKFRZUEVfT0JKRklMRSAodHlwZSksIHR5cGUs IGNvcGllZF90eXBlcyk7Ci0rfQotKwotIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBF LCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQotICAgIHR5cGVzIGFyZSBub3Qg cHJlc2VydmVkLgotICAgIAotQEAgLTQzMzAsNiArNDY5NiwxMyBAQCB2b2lkCi0gX2luaXRpYWxp emVfZ2RidHlwZXMgKHZvaWQpCi0gewotICAgZ2RidHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0YV9y ZWdpc3Rlcl9wb3N0X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7Ci0rCi0rI2lmIDAKLSsgIHR5 cGVfZGlzY2FyZGFibGVfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMjAsIHR5cGVfZGlzY2Fy ZGFibGVfaGFzaCwKLSsJCQkJCSAgICAgdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCwgTlVMTCwKLSsJ CQkJCSAgICAgeGNhbGxvYywgeGZyZWUpOwotKyNlbmRpZgotKwotICAgb2JqZmlsZV90eXBlX2Rh dGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7Ci0gCi0gICBhZGRfc2V0c2hvd196dWludGVn ZXJfY21kICgib3ZlcmxvYWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2RlYnVnLAotZGlmZiAtLWdp dCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKLWluZGV4IDYxZGRlZmYuLmZjNmYy NzYgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RidHlwZXMuaAotKysrIGIvZ2RiL2dkYnR5cGVzLmgKLUBA IC0yMjYsNiArMjI2LDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCi0gCi0gI2Rl ZmluZSBUWVBFX1RBUkdFVF9TVFVCKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0 X3N0dWIpCi0gCi0rLyogVHlwZSBuZWVkcyB0byBiZSBldmFsdWF0ZWQgb24gZWFjaCBDSEVDS19U WVBFREVGIGFuZCBpdHMgcmVzdWx0cyBtdXN0IG5vdCBiZQotKyAgIHN0aWNreS4gICovCi0rCi0r I2RlZmluZSBUWVBFX0RZTkFNSUModCkJCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZHluYW1p YykKLSsKLSAvKiBTdGF0aWMgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGlu ZyB0eXBlIGhhZCAKLSAgICBhIHN0YXRpYyBtb2RpZmllci4KLSAgICBOb3RlOiBUaGlzIG1heSBi ZSB1bm5lY2Vzc2FyeSwgc2luY2Ugc3RhdGljIGRhdGEgbWVtYmVycwotQEAgLTMwOSw2ICszMTQs NTAgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKLSAKLSAjZGVmaW5lIFRZUEVfRkxB R19FTlVNKHQpIChUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZmxhZ19lbnVtKQotIAotKyNpZiAw Ci0rLyogRGVmaW5lIHRoaXMgdHlwZSBhcyBiZWluZyByZWNsYWltYWJsZSBkdXJpbmcgZnJlZV9h bGxfdHlwZXMuICBUeXBlIGlzCi0rICAgcmVxdWlyZWQgdG8gYmUgaGF2ZSBUWVBFX09CSkZJTEUg c2V0IHRvIE5VTEwuICBTZXR0aW5nIHRoaXMgZmxhZyByZXF1aXJlcwotKyAgIGluaXRpYWxpemlu ZyBUWVBFX0RJU0NBUkRBQkxFX0FHRSwgc2VlIGFsbG9jX3R5cGVfZGlzY2FyZGFibGUuICAqLwot KwotKyNkZWZpbmUgVFlQRV9ESVNDQVJEQUJMRSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFn X2Rpc2NhcmRhYmxlKQotKwotKy8qIE1hcmtlciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBi eSB0aGUgdHlwZV9tYXJrX3VzZWQgYnkgdGhpcwotKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdh cmJhZ2UgY29sbGVjdGluZyBwYXNzLiAgQ3VycmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCi0rICAg YnkgVFlQRV9ESVNDQVJEQUJMRV9BR0VfQ1VSUkVOVC4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJ U0NBUkRBQkxFX0FHRSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2Fn ZSkKLSsjZW5kaWYKLSsKLSsvKiBJcyBISUdIX0JPVU5EIGEgbG93LWJvdW5kIHJlbGF0aXZlIGNv dW50ICgxKSBvciB0aGUgaGlnaCBib3VuZCBpdHNlbGYgKDApPyAgKi8KLSsKLSsjZGVmaW5lIFRZ UEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVChyYW5nZV90eXBlKSBcCi0rICAoVFlQRV9NQUlO X1RZUEUgKHJhbmdlX3R5cGUpLT5mbGFnX3JhbmdlX2hpZ2hfYm91bmRfaXNfY291bnQpCi0rCi0r LyogTm90IGFsbG9jYXRlZC4gIFRZUEVfQUxMT0NBVEVEKHQpIG11c3QgYmUgTlVMTCBpbiBzdWNo IGNhc2UuICBJZiB0aGlzIGZsYWcKLSsgICBpcyB1bnNldCBhbmQgVFlQRV9BTExPQ0FURUQodCkg aXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFsbG9jYXRlZC4gIElmIHRoaXMKLSsgICBmbGFnIGlz IHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0cyBEV0FSRiBi bG9jawotKyAgIGRldGVybWluZXMgdGhlIGFjdHVhbCBhbGxvY2F0aW9uIHN0YXRlLiAgKi8KLSsK LSsjZGVmaW5lIFRZUEVfTk9UX0FMTE9DQVRFRCh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFn X25vdF9hbGxvY2F0ZWQpCi0rCi0rLyogTm90IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQo dCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElmIHRoaXMgZmxhZwotKyAgIGlzIHVuc2V0 IGFuZCBUWVBFX0FTU09DSUFURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0 ZWQuICBJZgotKyAgIHRoaXMgZmxhZyBpcyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlz IG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCi0rICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFs IGFzc29jaWF0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFURUQo dCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3RfYXNzb2NpYXRlZCkKLSsKLSsvKiBBZGRy ZXNzIG9mIHRoZSBhY3R1YWwgZGF0YSBhcyBmb3IgRFdfQVRfZGF0YV9sb2NhdGlvbi4gIEl0cyBk d2FyZiBibG9jayBtdXN0Ci0rICAgbm90IGJlIGV2YWx1YXRlZCB1bmxlc3MgYm90aCBUWVBFX05P VF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlCi0rICAgZmFsc2UuICBJZiBU WVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiBzZXQgdGhlbiBUWVBFX0RBVEFfTE9DQVRJT05fQURE UiB2YWx1ZQotKyAgIGlzIHRoZSBhY3R1YWwgZGF0YSBhZGRyZXNzIHZhbHVlLiAgSWYgdW5zZXQg YW5kCi0rICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIGlzIE5VTEwgdGhlbiB0aGUg dmFsdWUgaXMgdGhlIG5vcm1hbAotKyAgIHZhbHVlX3Jhd19hZGRyZXNzLiAgSWYgdW5zZXQgYW5k IFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyBpcyBub3QgTlVMTAotKyAgIHRoZW4gaXRz IERXQVJGIGJsb2NrIGRldGVybWluZXMgdGhlIGFjdHVhbCBkYXRhIGFkZHJlc3MuICAqLwotKwot KyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIodCkgXAotKyAgKFRZUEVfTUFJTl9U WVBFICh0KS0+ZmxhZ19kYXRhX2xvY2F0aW9uX2lzX2FkZHIpCi0rCi0gLyogQ29uc3RhbnQgdHlw ZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCi0gICAgY29u c3QgbW9kaWZpZXIuICAqLwotIAotQEAgLTQyNSw2ICs0NzQsMTUgQEAgc3RydWN0IG1haW5fdHlw ZQotICAgLyogVHJ1ZSBpZiB0aGlzIHR5cGUgd2FzIGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRo ZXIgdGhhbgotICAgICAgInN0cnVjdCIuICAqLwotICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFy ZWRfY2xhc3MgOiAxOwotKyNpZiAwCi0rICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZSA6 IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZV9hZ2UgOiAxOwotKyNlbmRpZgot KyAgdW5zaWduZWQgaW50IGZsYWdfZHluYW1pYyA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxhZ19y YW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50IDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX25vdF9h bGxvY2F0ZWQgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfbm90X2Fzc29jaWF0ZWQgOiAxOwot KyAgdW5zaWduZWQgaW50IGZsYWdfZGF0YV9sb2NhdGlvbl9pc19hZGRyIDogMTsKLSAKLSAgIC8q IFRydWUgaWYgdGhpcyBpcyBhbiBlbnVtIHR5cGUgd2l0aCBkaXNqb2ludCB2YWx1ZXMuICBUaGlz IGFmZmVjdHMKLSAgICAgIGhvdyB0aGUgZW51bSBpcyBwcmludGVkLiAgKi8KLUBAIC01MDUsNiAr NTYzLDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKLSAKLSAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlw ZTsKLSAKLSsgIC8qIEZvciBEV19BVF9kYXRhX2xvY2F0aW9uLiAgKi8KLSsgIHVuaW9uCi0rICAg IHsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmX2Jsb2NrOwotKyAg ICAgIENPUkVfQUREUiBhZGRyOwotKyAgICB9Ci0rICBkYXRhX2xvY2F0aW9uOwotKwotKyAgLyog Rm9yIERXX0FUX2FsbG9jYXRlZC4gICovCi0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KmFsbG9jYXRlZDsKLSsKLSsgIC8qIEZvciBEV19BVF9hc3NvY2lhdGVkLiAgKi8KLSsgIHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYXNzb2NpYXRlZDsKLSsKLSAgIC8qIEZvciBzdHJ1Y3R1 cmUgYW5kIHVuaW9uIHR5cGVzLCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQuCi0gICAgICBG b3Igc2V0IGFuZCBwYXNjYWwgYXJyYXkgdHlwZXMsIHRoZXJlIGlzIG9uZSAiZmllbGQiLAotICAg ICAgd2hvc2UgdHlwZSBpcyB0aGUgZG9tYWluIHR5cGUgb2YgdGhlIHNldCBvciBhcnJheS4KLUBA IC01ODcsMTMgKzY1OSwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCi0gCi0gICAgIHN0cnVjdCByYW5n ZV9ib3VuZHMKLSAgICAgewotKyAgICAgIHN0cnVjdAotKwl7Ci0rCSAgdW5pb24KLSsJICAgIHsK LSsJICAgICAgTE9OR0VTVCBjb25zdGFudDsKLSsJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHBy X2JhdG9uICpkd2FyZl9ibG9jazsKLSsJICAgICAgc3RydWN0Ci0rCQl7Ci0rCQkgIHN0cnVjdCBk d2FyZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlzdDsKLSsJCSAgc3RydWN0IHR5cGUgKnR5cGU7Ci0r CQl9Ci0rCSAgICAgIGR3YXJmX2xvY2xpc3Q7Ci0rCSAgICB9Ci0rCSAgdTsKLSsJICBlbnVtIHJh bmdlX2JvdW5kX2tpbmQKLSsJICAgIHsKLSsJICAgICAgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFO VCwKLSsJICAgICAgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSywKLSsJICAgICAgUkFOR0Vf Qk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUCi0rCSAgICB9Ci0rCSAga2luZDsKLSsJfQotICAgICAg IC8qIExvdyBib3VuZCBvZiByYW5nZS4gICovCi0tCi0tICAgICAgTE9OR0VTVCBsb3c7Ci0tCi0r ICAgICAgbG93LAotICAgICAgIC8qIEhpZ2ggYm91bmQgb2YgcmFuZ2UuICAqLwotLQotLSAgICAg IExPTkdFU1QgaGlnaDsKLSsgICAgICBoaWdoLAotKyAgICAgIC8qIEJ5dGUgc3RyaWRlIG9mIHJh bmdlLiAgKi8KLSsgICAgICBieXRlX3N0cmlkZTsKLSAKLSAgICAgICAvKiBGbGFncyBpbmRpY2F0 aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cgYW5kIGhpZ2ggYXJlCi0gICAgICAgICAgdmFs aWQuICBXaGVuIHRydWUsIHRoZSByZXNwZWN0aXZlIHJhbmdlIHZhbHVlIGlzCi1AQCAtMTA1Myw5 ICsxMTQ2LDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5 cGUgKik7Ci0gI2RlZmluZSBUWVBFX1BPSU5URVJfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+ cG9pbnRlcl90eXBlCi0gI2RlZmluZSBUWVBFX1JFRkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhp c3R5cGUpLT5yZWZlcmVuY2VfdHlwZQotICNkZWZpbmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRo aXN0eXBlKS0+Y2hhaW4KLS0vKiBOb3RlIHRoYXQgaWYgdGhpc3R5cGUgaXMgYSBUWVBFREVGIHR5 cGUsIHlvdSBoYXZlIHRvIGNhbGwgY2hlY2tfdHlwZWRlZi4KLS0gICBCdXQgY2hlY2tfdHlwZWRl ZiBkb2VzIHNldCB0aGUgVFlQRV9MRU5HVEggb2YgdGhlIFRZUEVERUYgdHlwZSwKLS0gICBzbyB5 b3Ugb25seSBoYXZlIHRvIGNhbGwgY2hlY2tfdHlwZWRlZiBvbmNlLiAgU2luY2UgYWxsb2NhdGVf dmFsdWUKLSsvKiBOb3RlIHRoYXQgaWYgdGhpc3R5cGUgaXMgYSBUWVBFREVGLCBBUlJBWSBvciBT VFJJTkcgdHlwZSwgeW91IGhhdmUgdG8gY2FsbAotKyAgIGNoZWNrX3R5cGVkZWYuICBCdXQgY2hl Y2tfdHlwZWRlZiBkb2VzIHNldCB0aGUgVFlQRV9MRU5HVEggb2YgdGhlIFRZUEVERUYKLSsgICB0 eXBlLCBzbyB5b3Ugb25seSBoYXZlIHRvIGNhbGwgY2hlY2tfdHlwZWRlZiBvbmNlLiAgU2luY2Ug YWxsb2NhdGVfdmFsdWUKLSAgICBjYWxscyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFM VUVfVFlQRSAoWCkpIGlzIHNhZmUuICAqLwotICNkZWZpbmUgVFlQRV9MRU5HVEgodGhpc3R5cGUp ICh0aGlzdHlwZSktPmxlbmd0aAotIC8qIE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJlIFRZUEVf Q09ERV9UWVBFREVGLCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAgLTEwNjMsMTEgKzExNTYs MTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7 Ci0gI2RlZmluZSBUWVBFX0NPREUodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+ Y29kZQotICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlz dHlwZSktPm5maWVsZHMKLSAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5f VFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMKLSsjZGVmaW5lIFRZUEVfREFUQV9MT0NB VElPTl9EV0FSRl9CTE9DSyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0 YV9sb2NhdGlvbi5kd2FyZl9ibG9jawotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIo dGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmRhdGFfbG9jYXRpb24uYWRkcgot KyNkZWZpbmUgVFlQRV9BTExPQ0FURUQodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlw ZSktPmFsbG9jYXRlZAotKyNkZWZpbmUgVFlQRV9BU1NPQ0lBVEVEKHRoaXN0eXBlKSBUWVBFX01B SU5fVFlQRSAodGhpc3R5cGUpLT5hc3NvY2lhdGVkCi0gCi0gI2RlZmluZSBUWVBFX0lOREVYX1RZ UEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKQotICNkZWZpbmUgVFlQRV9SQU5HRV9E QVRBKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5ib3VuZHMK LS0jZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5n ZV90eXBlKS0+bG93Ci0tI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9S QU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoCi0rI2RlZmluZSBUWVBFX0xPV19CT1VORChyYW5n ZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy51LmNvbnN0YW50Ci0rI2Rl ZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5 cGUpLT5oaWdoLnUuY29uc3RhbnQKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJREUocmFuZ2VfdHlw ZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmNvbnN0YW50Ci0g I2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkgXAotICAgIFRZUEVf UkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3VuZGVmaW5lZAotICNkZWZpbmUgVFlQRV9ISUdI X0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCi1AQCAtMTA4NCw3ICsxMTgyLDE0IEBAIGV4 dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICAgIChU WVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCi0gCi0gI2RlZmlu ZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAotLSAgIChUWVBFX0xP V19CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkKLSsgIFRZUEVfTE9XX0JPVU5E IChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpCi0rCi0rLyogVFlQRV9CWVRFX1NUUklERSAo VFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlCi0rICAg ZWxlbWVudCBzaXplIGlmIG5vIHNwZWNpZmljIHN0cmlkZSB2YWx1ZSBpcyBrbm93bi4gICovCi0r I2RlZmluZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFKGFycmF5dHlwZSkJCVwKLSsgIChU WVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpID09IDAJXAotKyAg ID8gVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5dHlwZSkpCQlcCi0rICAgOiBU WVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpKQotIAotIC8qIEMr KyAqLwotIAotQEAgLTE1MzMsNiArMTYzOCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0 ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkgICAgICAg c3RydWN0IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfYXJyYXlfcmFuZ2Vf dHlwZSAoc3RydWN0IHR5cGUgKiwgTE9OR0VTVCwgTE9OR0VTVCk7Ci0gCi0rZXh0ZXJuIENPUkVf QUREUiB0eXBlX3JhbmdlX2FueV9maWVsZF9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnJhbmdlX3R5 cGUsCi0rCQkJCQkJaW50IGZpZWxkbm8pOwotKwotK2V4dGVybiBpbnQgdHlwZV9yYW5nZV9oaWdo X2JvdW5kX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7Ci0rCi0rZXh0ZXJuIGlu dCB0eXBlX3JhbmdlX2NvdW50X2JvdW5kX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlw ZSk7Ci0rCi0rZXh0ZXJuIENPUkVfQUREUiB0eXBlX3JhbmdlX2J5dGVfc3RyaWRlX2ludGVybmFs IChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkJCQkgIHN0cnVjdCB0eXBlICplbGVtZW50 X3R5cGUpOwotKwotK2V4dGVybiB2b2lkIGZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBl KTsKLSsKLSBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJCXN0cnVjdCB0eXBlICopOwotIGV4dGVybiBzdHJ1 Y3QgdHlwZSAqbG9va3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBMT05HRVNU LCBMT05HRVNUKTsKLUBAIC0xNTc4LDYgKzE2OTUsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNf YW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICopOwotIAotIGV4dGVybiBpbnQg aXNfdW5pcXVlX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKik7Ci0gCi0r I2lmIDAKLStleHRlcm4gdm9pZCB0eXBlX21hcmtfdXNlZCAoc3RydWN0IHR5cGUgKnR5cGUpOwot KyNlbmRpZgotKwotIC8qIE92ZXJsb2FkIHJlc29sdXRpb24gKi8KLSAKLSAjZGVmaW5lIExFTkdU SF9NQVRDSChidikgKChidiktPnJhbmtbMF0pCi1AQCAtMTY1Niw4ICsxNzc3LDcgQEAgZXh0ZXJu IHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwotIAotIGV4dGVybiBo dGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7 Ci0gCi0tZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKLS0JCQkJCSBzdHJ1Y3QgdHlwZSAqdHlwZSwKLStleHRlcm4gc3RydWN0 IHR5cGUgKmNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0eXBlLAotIAkJCQkJIGh0 YWJfdCBjb3BpZWRfdHlwZXMpOwotIAotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY29weV90eXBlIChj b25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9t YWluLmMKLWluZGV4IDBjODM0OWUuLmEwN2Y0MWEgMTAwNjQ0Ci0tLS0gYS9nZGIvbWFpbi5jCi0r KysgYi9nZGIvbWFpbi5jCi1AQCAtMzcsNiArMzcsNyBAQAotIAotICNpbmNsdWRlICJpbnRlcnBz LmgiCi0gI2luY2x1ZGUgIm1haW4uaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNp bmNsdWRlICJzb3VyY2UuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0gI2luY2x1ZGUg InB5dGhvbi9weXRob24uaCIKLUBAIC0zMjUsNiArMzI2LDggQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKLSAgIGNoYXIgKmNkYXJnID0gTlVMTDsKLSAgIGNoYXIgKnR0eWFyZyA9IE5VTEw7 Ci0gCi0rICBpbnQgcHl0aG9uX3NjcmlwdCA9IDA7Ci0rCi0gICAvKiBUaGVzZSBhcmUgc3RhdGlj IHNvIHRoYXQgd2UgY2FuIHRha2UgdGhlaXIgYWRkcmVzcyBpbiBhbgotICAgICAgaW5pdGlhbGl6 ZXIuICAqLwotICAgc3RhdGljIGludCBwcmludF9oZWxwOwotQEAgLTUzMSwxMCArNTM0LDE0IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gICAgICAgeyJhcmdzIiwgbm9fYXJndW1lbnQs ICZzZXRfYXJncywgMX0sCi0gICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30s Ci0gICAgICAgeyJyZXR1cm4tY2hpbGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hp bGRfcmVzdWx0LCAxfSwKLSsjaWYgSEFWRV9QWVRIT04KLSsgICAgICB7InB5dGhvbiIsIG5vX2Fy Z3VtZW50LCAwLCAnUCd9LAotKyAgICAgIHsiUCIsIG5vX2FyZ3VtZW50LCAwLCAnUCd9LAotKyNl bmRpZgotICAgICAgIHswLCBub19hcmd1bWVudCwgMCwgMH0KLSAgICAgfTsKLSAKLS0gICAgd2hp bGUgKDEpCi0rICAgIHdoaWxlICghcHl0aG9uX3NjcmlwdCkKLSAgICAgICB7Ci0gCWludCBvcHRp b25faW5kZXg7Ci0gCi1AQCAtNTUyLDYgKzU1OSw5IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCi0gCSAgY2FzZSAwOgotIAkgICAgLyogTG9uZyBvcHRpb24gdGhhdCBqdXN0IHNldHMgYSBm bGFnLiAgKi8KLSAJICAgIGJyZWFrOwotKwkgIGNhc2UgJ1AnOgotKwkgICAgcHl0aG9uX3Njcmlw dCA9IDE7Ci0rCSAgICBicmVhazsKLSAJICBjYXNlIE9QVF9TRToKLSAJICAgIHN5bWFyZyA9IG9w dGFyZzsKLSAJICAgIGV4ZWNhcmcgPSBvcHRhcmc7Ci1AQCAtNzYxLDcgKzc3MSwzMSBAQCBjYXB0 dXJlZF9tYWluICh2b2lkICpkYXRhKQotIAotICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFzIGNy ZWF0ZWQgdGhlIGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCi0gICAgICBwb3NpdGlvbiB0byBz ZXQgYXJncyBmb3IgdGhhdCBpbmZlcmlvci4gICovCi0tICBpZiAoc2V0X2FyZ3MpCi0rICBpZiAo cHl0aG9uX3NjcmlwdCkKLSsgICAgewotKyAgICAgIC8qIFRoZSBmaXJzdCBhcmd1bWVudCBpcyBh IHB5dGhvbiBzY3JpcHQgdG8gZXZhbHVhdGUsIGFuZAotKwkgc3Vic2VxdWVudCBhcmd1bWVudHMg YXJlIHBhc3NlZCB0byB0aGUgc2NyaXB0IGZvcgotKwkgcHJvY2Vzc2luZyB0aGVyZS4gICovCi0r ICAgICAgaWYgKG9wdGluZCA+PSBhcmdjKQotKwl7Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkZXJyLAotKwkJCSAgICAgIF8oIiVzOiBQeXRob24gc2NyaXB0IGZpbGUgbmFtZSByZXF1 aXJlZFxuIiksCi0rCQkJICAgICAgYXJndlswXSk7Ci0rCSAgZXhpdCAoMSk7Ci0rCX0KLSsKLSsg ICAgICAvKiBGSVhNRTogc2hvdWxkIGhhbmRsZSBpbmZlcmlvciBJL08gaW50ZWxsaWdlbnRseSBo ZXJlLgotKwkgRS5nLiwgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIHJ1biBnZGIgaW4gcGlwZWxpbmUg YW5kIGhhdmUKLSsJIFB5dGhvbiAoYW5kIGdkYikgb3V0cHV0IGdvIHRvIHN0ZGVyciBvciBmaWxl OyBhbmQgaWYgYQotKwkgcHJvbXB0IGlzIG5lZWRlZCwgb3BlbiB0aGUgdHR5LiAgKi8KLSsgICAg ICBxdWlldCA9IDE7Ci0rICAgICAgLyogRklYTUU6IHNob3VsZCByZWFkIC5nZGJpbml0IGlmLCBh bmQgb25seSBpZiwgYSBwcm9tcHQgaXMKLSsJIHJlcXVlc3RlZCBieSB0aGUgc2NyaXB0LiAgVGhv dWdoLi4uIG1heWJlIHRoaXMgaXMgbm90Ci0rCSBpZGVhbD8gICovCi0rICAgICAgLyogRklYTUU6 IGxpa2V3aXNlLCByZWFkaW5nIGluIGhpc3RvcnkuICAqLwotKyAgICAgIGluaGliaXRfZ2RiaW5p dCA9IDE7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHNldF9hcmdzKQotICAgICB7Ci0gICAgICAgLyog VGhlIHJlbWFpbmluZyBvcHRpb25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRo ZQotIAkgaW5mZXJpb3IuICBUaGUgZmlyc3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQg dGhlIHJlc3QKLUBAIC0xMDQ3LDcgKzEwODEsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRh KQotIAotICAgLyogUmVhZCBpbiB0aGUgb2xkIGhpc3RvcnkgYWZ0ZXIgYWxsIHRoZSBjb21tYW5k IGZpbGVzIGhhdmUgYmVlbgotICAgICAgcmVhZC4gICovCi0tICBpbml0X2hpc3RvcnkgKCk7Ci0r ICBpZiAoIXB5dGhvbl9zY3JpcHQpCi0rICAgIGluaXRfaGlzdG9yeSAoKTsKLSAKLSAgIGlmIChi YXRjaF9mbGFnKQotICAgICB7Ci1AQCAtMTA1OCwxMyArMTA5MywyNSBAQCBjYXB0dXJlZF9tYWlu ICh2b2lkICpkYXRhKQotICAgLyogU2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1c2FnZS4gICovCi0g ICBkb19jbGVhbnVwcyAocHJlX3N0YXRfY2hhaW4pOwotIAotLSAgLyogTk9URTogY2FnbmV5LzE5 OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBmb3Igbm90Ci0tICAgICBtb3Zp bmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3Ao KQotLSAgICAgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhlIG1haW4gdGhpbmcg aG9sZGluZyBiYWNrIHRoYXQKLS0gICAgIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwoKSAtIGhhcyBi ZWVuIGVsaW1pbmF0ZWQuICAqLwotLSAgd2hpbGUgKDEpCi0rI2lmIEhBVkVfUFlUSE9OCi0rICBp ZiAocHl0aG9uX3NjcmlwdCkKLSAgICAgewotLSAgICAgIGNhdGNoX2Vycm9ycyAoY2FwdHVyZWRf Y29tbWFuZF9sb29wLCAwLCAiIiwgUkVUVVJOX01BU0tfQUxMKTsKLSsgICAgICBleHRlcm4gaW50 IHBhZ2luYXRpb25fZW5hYmxlZDsKLSsgICAgICBwYWdpbmF0aW9uX2VuYWJsZWQgPSAwOwotKyAg ICAgIHJ1bl9weXRob25fc2NyaXB0IChhcmdjIC0gb3B0aW5kLCAmYXJndltvcHRpbmRdKTsKLSsg ICAgICByZXR1cm4gMTsKLSsgICAgfQotKyAgZWxzZQotKyNlbmRpZgotKyAgICB7Ci0rICAgICAg LyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5IG5vIHJlYXNvbiBm b3Igbm90Ci0rCSBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3VuZCBpbiBjYXB0dXJl ZF9jb21tYW5kX2xvb3AoKQotKwkgaW50byB0aGUgY29tbWFuZF9sb29wKCkgcHJvcGVyLiAgVGhl IG1haW4gdGhpbmcgaG9sZGluZyBiYWNrIHRoYXQKLSsJIGNoYW5nZSAtIFNFVF9UT1BfTEVWRUwo KSAtIGhhcyBiZWVuIGVsaW1pbmF0ZWQuICovCi0rICAgICAgd2hpbGUgKDEpCi0rCXsKLSsJICBj YXRjaF9lcnJvcnMgKGNhcHR1cmVkX2NvbW1hbmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FM TCk7Ci0rCX0KLSAgICAgfQotICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9j b21tYW5kLiAgKi8KLSB9Ci1AQCAtMTA5OSw2ICsxMTQ2LDEyIEBAIHByaW50X2dkYl9oZWxwIChz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQotICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotIFRoaXMg aXMgdGhlIEdOVSBkZWJ1Z2dlci4gIFVzYWdlOlxuXG5cCi0gICAgIGdkYiBbb3B0aW9uc10gW2V4 ZWN1dGFibGUtZmlsZSBbY29yZS1maWxlIG9yIHByb2Nlc3MtaWRdXVxuXAotKyAgICBnZGIgW29w dGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5dXG4i KSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwK LSsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3JpcHQtYXJn dW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0ZXJlZCAo XygiXG5cCi0gICAgIGdkYiBbb3B0aW9uc10gLS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJp b3ItYXJndW1lbnRzIC4uLl1cblxuXAotICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5maWx0ZXJl ZCAoXygiXAotQEAgLTExNDQsNiArMTE5NywxMyBAQCBPdXRwdXQgYW5kIHVzZXIgaW50ZXJmYWNl IGNvbnRyb2w6XG5cblwKLSAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLSAgIC0tZGJ4ICAgICAg ICAgICAgICBEQlggY29tcGF0aWJpbGl0eSBtb2RlLlxuXAotICAgLS14ZGIgICAgICAgICAgICAg IFhEQiBjb21wYXRpYmlsaXR5IG1vZGUuXG5cCi0rIiksIHN0cmVhbSk7Ci0rI2lmIEhBVkVfUFlU SE9OCi0rICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0rICAtLXB5dGhvbiwgLVAgICAgICAgRm9s bG93aW5nIGFyZ3VtZW50IGlzIFB5dGhvbiBzY3JpcHQgZmlsZTsgcmVtYWluaW5nXG5cCi0rICAg ICAgICAgICAgICAgICAgICAgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gc2NyaXB0LlxuIiksIHN0 cmVhbSk7Ci0rI2VuZGlmCi0rICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gICAtLXF1aWV0ICAg ICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cblwKLSAi KSwgc3RyZWFtKTsKLSAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKLWRpZmYgLS1naXQgYS9nZGIv cC12YWxwcmludC5jIGIvZ2RiL3AtdmFscHJpbnQuYwotaW5kZXggYTg3ZjFmNC4uMGY5MzI3MSAx MDA2NDQKLS0tLSBhL2dkYi9wLXZhbHByaW50LmMKLSsrKyBiL2dkYi9wLXZhbHByaW50LmMKLUBA IC0zOCw2ICszOCw3IEBACi0gI2luY2x1ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJjcC1zdXBw b3J0LmgiCi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgi Ci0gDAotIAotIC8qIERlY29yYXRpb25zIGZvciBQYXNjYWwuICAqLwotQEAgLTczLDggKzc0LDMx IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKLSAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7Ci0gICBDT1JFX0FERFIgYWRkcjsK LSAgIGludCB3YW50X3NwYWNlID0gMDsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAg c3RydWN0IHR5cGUgKnNhdmVkX3R5cGUgPSB0eXBlOwotKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJl c3MgPSBhZGRyZXNzOwotKyAgCi0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFu dXAsIDApOwotKyAgYWRkcmVzcyArPSBlbWJlZGRlZF9vZmZzZXQ7Ci0rICB0eXBlID0gb2JqZWN0 X2FkZHJlc3NfZ2V0X2RhdGEgKHR5cGUsICZhZGRyZXNzKTsKLSsgIGlmICh0eXBlID09IE5VTEwp Ci0rICAgIHsKLSsgICAgICBmcHV0c19maWx0ZXJlZCAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3Rf dmFsaWQgKHNhdmVkX3R5cGUpLCBzdHJlYW0pOwotKyAgICAgIGdkYl9mbHVzaCAoc3RyZWFtKTsK LSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0r ICBpZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0KQotKyAgICB7 Ci0rICAgICAgc2l6ZV90IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLS0gIENIRUNL X1RZUEVERUYgKHR5cGUpOwotKyAgICAgIHZhbGFkZHIgPSB4bWFsbG9jIChsZW5ndGgpOwotKyAg ICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIChnZGJfYnl0ZSAqKSB2YWxhZGRyKTsKLSsgICAgICBy ZWFkX21lbW9yeSAoYWRkcmVzcywgKGdkYl9ieXRlICopIHZhbGFkZHIsIGxlbmd0aCk7Ci0rICAg ICAgZW1iZWRkZWRfb2Zmc2V0ID0gMDsKLSsgICAgfQotKyAgZWxzZQotKyAgICBhZGRyZXNzIC09 IGVtYmVkZGVkX29mZnNldDsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKLSAgICAgewot ICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLUBAIC0xMzAsOCArMTU0LDggQEAgcGFzY2FsX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAotIAkJ ewotIAkJICBpID0gMDsKLSAJCX0KLS0JICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzICh0 eXBlLCB2YWxhZGRyLCBlbWJlZGRlZF9vZmZzZXQsCi0tCQkJCQlhZGRyZXNzLCBzdHJlYW0sIHJl Y3Vyc2UsCi0rCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc2F2ZWRfdHlwZSwgdmFs YWRkciwgZW1iZWRkZWRfb2Zmc2V0LAotKwkJCQkJc2F2ZWRfYWRkcmVzcywgc3RyZWFtLCByZWN1 cnNlLAotIAkJCQkJb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGkpOwotIAkgICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7Ci0gCSAgICB9Ci1AQCAtMTY5LDYgKzE5Myw3IEBAIHBh c2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKLSAJewotIAkgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0by4g ICovCi0gCSAgcHJpbnRfYWRkcmVzc19kZW1hbmdsZSAob3B0aW9ucywgZ2RiYXJjaCwgYWRkciwg c3RyZWFtLCBkZW1hbmdsZSk7Ci0rCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotIAkgIHJldHVy bjsKLSAJfQotIAotQEAgLTI3MSw2ICsyOTYsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCSAgICB9Ci0gCX0KLSAKLSsg ICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuOwotIAotICAgICBjYXNl IFRZUEVfQ09ERV9SRUY6Ci1AQCAtNDExLDYgKzQzNyw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0 cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAgICBUWVBFX0NP REUgKHR5cGUpKTsKLSAgICAgfQotICAgZ2RiX2ZsdXNoIChzdHJlYW0pOwotKyAgZG9fY2xlYW51 cHMgKGJhY2tfdG8pOwotIH0KLSAMCi0gdm9pZAotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIv Z2RiL3BhcnNlLmMKLWluZGV4IDExNzEyODkuLjJhZmRiODUgMTAwNjQ0Ci0tLS0gYS9nZGIvcGFy c2UuYwotKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC0xNzczLDYgKzE3NzMsNyBAQCBwYXJzZXJfZnBy aW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQotIAotIGludAotIG9wZXJhdG9yX2No ZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAotKwkJCSBpbnQg KCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCQkJIGludCAo Km9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQkJICAgICAgdm9p ZCAqZGF0YSksCi0gCQkJIHZvaWQgKmRhdGEpCi1AQCAtMTgxMiw3ICsxODEzLDcgQEAgb3BlcmF0 b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0gCSAg ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsKLSAJICAgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKLSAKLS0JICAgIGlm IChvYmpmaWxlICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCi0rCSAgICBpZiAo b2JqZmlsZSAmJiBvYmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRh KSkKLSAJICAgICAgcmV0dXJuIDE7Ci0gCSAgfQotICAgICAgIH0KLUBAIC0xODMwLDcgKzE4MzEs OCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50 IHBvcywKLSAKLSAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlz IHBsYWNlZC4KLSAJICAgU1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAg Ki8KLS0JaWYgKCgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmls ZSwgZGF0YSkpCi0rCWlmIChvYmpmaWxlX2Z1bmMKLSsJICAgICYmICgqb2JqZmlsZV9mdW5jKSAo U1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0gCSAgcmV0dXJuIDE7Ci0g Ci0gCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRo ZSB2YXJpYWJsZS4gICovCi1AQCAtMTg0MywyNCArMTg0NSwyNyBAQCBvcGVyYXRvcl9jaGVja19z dGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAgIC8qIEludm9r ZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24t TlVMTC4gICovCi0gCi0tICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpCi0rICBpZiAo dHlwZSAmJiB0eXBlX2Z1bmMgJiYgKCp0eXBlX2Z1bmMpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0 dXJuIDE7Ci0rICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVu YwotICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkp Ci0gICAgIHJldHVybiAxOwotLSAgaWYgKG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpm aWxlLCBkYXRhKSkKLSsgIGlmIChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVf ZnVuYykgKG9iamZpbGUsIGRhdGEpKQotICAgICByZXR1cm4gMTsKLSAKLSAgIHJldHVybiAwOwot IH0KLSAKLS0vKiBDYWxsIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91 bmQgYmVpbmcgcmVmZXJlbmNlZCBieSBFWFAuCi0tICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIg Y2FsbGVkIHdpdGggTlVMTCBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KLS0gICBh cmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVu Y3Rpb25zIHJldHVybnMKLS0gICBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16 ZXJvIHZhbHVlIGlzIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvCi0tICAgdGhlIGNhbGxlci4gIE90 aGVyd2lzZSB6ZXJvIGlzIHJldHVybmVkIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVY UC4KLS0gICAqLwotKy8qIENhbGwgVFlQRV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBU WVBFIGFuZCBPQkpGSUxFIGZvdW5kIGJlaW5nCi0rICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUg ZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAotKyAgIE9C SkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVk IERBVEEgcG9pbnRlci4KLSsgICBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16 ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhlcikgbm9uLXplcm8KLSsgICB2YWx1ZSBpcyBpbW1lZGlh dGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQK LSsgICBhZnRlciBpdGVyYXRpbmcgdGhyb3VnaCB3aG9sZSBFWFAuICAqLwotIAotIHN0YXRpYyBp bnQKLSBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSsJICAgICBpbnQgKCp0 eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCSAgICAgaW50ICgq b2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAotIAkg ICAgIHZvaWQgKmRhdGEpCi0gewotQEAgLTE4NzUsNyArMTg4MCw5IEBAIGV4cF9pdGVyYXRlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAotICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwot ICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVj ayAoZXhwLCBwb3MsCi0tCQkJCQkJCSAgIG9iamZpbGVfZnVuYywgZGF0YSkpCi0rCQkJCQkJCSAg IHR5cGVfZnVuYywKLSsJCQkJCQkJICAgb2JqZmlsZV9mdW5jLAotKwkJCQkJCQkgICBkYXRhKSkK LSAJcmV0dXJuIDE7Ci0gCi0gICAgICAgZW5kcG9zID0gcG9zOwotQEAgLTE5MDYsOCArMTkxMywy OSBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1 Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwotIAotLSAgcmV0dXJuIGV4cF9pdGVyYXRlIChl eHAsIGV4cF91c2VzX29iamZpbGVfaXRlciwgb2JqZmlsZSk7Ci0rICByZXR1cm4gZXhwX2l0ZXJh dGUgKGV4cCwgTlVMTCwgZXhwX3VzZXNfb2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKLSt9Ci0rCi0r LyogSGVscGVyIGZvciBleHBfdHlwZXNfbWFya191c2VkLiAgKi8KLSsKLSsjaWYgMAotK3N0YXRp YyBpbnQKLStleHBfdHlwZXNfbWFya191c2VkX2l0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lk ICp1bnVzZWQpCi0rewotKyAgdHlwZV9tYXJrX3VzZWQgKHR5cGUpOwotKwotKyAgLyogQ29udGlu dWUgdGhlIHRyYXZlcnNhbC4gICovCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogQ2FsbCB0eXBl X21hcmtfdXNlZCBmb3IgYW55IHR5cGUgY29udGFpbmVkIGluIEVYUC4gICovCi0rCi0rdm9pZAot K2V4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApCi0rewotKyAgZXhw X2l0ZXJhdGUgKGV4cCwgZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyLCBOVUxMLCBOVUxMKTsKLSB9 Ci0rI2VuZGlmCi0gCi0gdm9pZAotIF9pbml0aWFsaXplX3BhcnNlICh2b2lkKQotZGlmZiAtLWdp dCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgKLWluZGV4IGMzZjI2MDcu LmZhMGFmN2IgMTAwNjQ0Ci0tLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAotKysrIGIvZ2RiL3BhcnNl ci1kZWZzLmgKLUBAIC0yNDUsNiArMjQ1LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3Ro X3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAotIAkJCQkg ICAgICBpbnQgKik7Ci0gCi0gZXh0ZXJuIGludCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkJICAgIGludCAoKnR5cGVfZnVuYykg KHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCQkJCSAgICAgIHZvaWQgKmRhdGEpLAotIAkJCQkgICAg aW50ICgqb2JqZmlsZV9mdW5jKQotIAkJCQkgICAgICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHZvaWQgKmRhdGEpLAotIAkJCQkgICAgdm9pZCAqZGF0YSk7Ci1AQCAtMzMxLDYgKzMzMyw3IEBA IHN0cnVjdCBleHBfZGVzY3JpcHRvcgotICAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRl bHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCi0gICAgICAgIHNob3Vs ZCBiZSByZXR1cm5lZC4gICovCi0gICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCQkJdm9pZCAqZGF0YSksCi0gCQkJICAgdm9pZCAq ZGF0YSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwotaW5k ZXggMTBkM2MyMy4uNTc1OWQ1YyAxMDA2NDQKLS0tLSBhL2dkYi9wcmludGNtZC5jCi0rKysgYi9n ZGIvcHJpbnRjbWQuYwotQEAgLTUwLDYgKzUwLDcgQEAKLSAjaW5jbHVkZSAiY2xpL2NsaS11dGls cy5oIgotICNpbmNsdWRlICJmb3JtYXQuaCIKLSAjaW5jbHVkZSAic291cmNlLmgiCi0rI2luY2x1 ZGUgImR3YXJmMmxvYy5oIgotIAotICNpZmRlZiBUVUkKLSAjaW5jbHVkZSAidHVpL3R1aS5oIgkJ LyogRm9yIHR1aV9hY3RpdmUgZXQgYWwuICAgKi8KLUBAIC05NzksNiArOTgwLDExIEBAIHByaW50 X2NvbW1hbmRfMSAoY29uc3QgY2hhciAqZXhwLCBpbnQgdm9pZHByaW50KQotICAgZWxzZQotICAg ICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7Ci0gCi0rICAvKiBEbyBub3QgdHJ5IHRv IE9CSkVDVF9BRERSRVNTX1NFVCBoZXJlIGFueXRoaW5nLiAgV2UgYXJlIGludGVyZXN0ZWQgaW4g dGhlCi0rICAgICBzb3VyY2UgdmFyaWFibGUgYmFzZSBhZGRyZXNzZXMgYXMgZm91bmQgYnkgUkVB RF9WQVJfVkFMVUUuICBUaGUgdmFsdWUgaGVyZQotKyAgICAgY2FuIGJlIGFscmVhZHkgYSBjYWxj dWxhdGVkIGV4cHJlc3Npb24gYWRkcmVzcyBpbmFwcHJvcHJpYXRlIGZvcgotKyAgICAgRFdfT1Bf cHVzaF9vYmplY3RfYWRkcmVzcy4gICovCi0rCi0gICBpZiAodm9pZHByaW50IHx8ICh2YWwgJiYg dmFsdWVfdHlwZSAodmFsKSAmJgotIAkJICAgIFRZUEVfQ09ERSAodmFsdWVfdHlwZSAodmFsKSkg IT0gVFlQRV9DT0RFX1ZPSUQpKQotICAgICB7Ci1AQCAtMTA2MCw2ICsxMDY2LDkgQEAgb3V0cHV0 X2NvbW1hbmRfY29uc3QgKGNvbnN0IGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQotIAotICAgdmFs ID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwcik7Ci0gCi0rICBpZiAoVkFMVUVfTFZBTCAodmFs KSA9PSBsdmFsX21lbW9yeSkKLSsgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRk cmVzcyAodmFsKSk7Ci0rCi0gICBhbm5vdGF0ZV92YWx1ZV9iZWdpbiAodmFsdWVfdHlwZSAodmFs KSk7Ci0gCi0gICBnZXRfZm9ybWF0dGVkX3ByaW50X29wdGlvbnMgKCZvcHRzLCBmb3JtYXQpOwot QEAgLTE0OTQsNiArMTUwMywyNCBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5 KQotIAlzZXRfaW50ZXJuYWx2YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhh bWluZV92YWx1ZSk7Ci0gICAgIH0KLSB9Ci0rCi0rI2lmIDAKLSsvKiBDYWxsIHR5cGVfbWFya191 c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAg Ki8KLSsKLStzdGF0aWMgdm9pZAotK3ByaW50X3R5cGVzX21hcmtfdXNlZCAodm9pZCkKLSt7Ci0r ICBzdHJ1Y3QgZGlzcGxheSAqZDsKLSsKLSsgIGlmIChsYXN0X2V4YW1pbmVfdmFsdWUpCi0rICAg IHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChsYXN0X2V4YW1pbmVfdmFsdWUpKTsKLSsKLSsg IGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQgPSBkLT5uZXh0KQotKyAgICBpZiAoZC0+ZXhw KQotKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQgKGQtPmV4cCk7Ci0rfQotKyNlbmRpZgotKwot IAwKLSAKLSAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgot QEAgLTE5OTUsNiArMjAyMiwxMCBAQCBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNo YXIgKm5hbWUsIHN0cnVjdCBzeW1ib2wgKnZhciwKLSAgICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyBvcHRzOwotIAotICAgICAgIHZhbCA9IHJlYWRfdmFyX3ZhbHVlICh2YXIsIGZyYW1l KTsKLSsKLSsgICAgICBtYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKTsKLSsg ICAgICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKLSsKLSAgICAgICBnZXRfdXNlcl9wcmludF9vcHRp b25zICgmb3B0cyk7Ci0gICAgICAgb3B0cy5kZXJlZl9yZWYgPSAxOwotICAgICAgIGNvbW1vbl92 YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCBpbmRlbnQsICZvcHRzLCBjdXJyZW50X2xhbmd1YWdlKTsK LUBAIC0yNjUxLDQgKzI2ODIsOCBAQCBTaG93IHByaW50aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBh bmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwgTlVMTCwKLSAgIGFkZF9jb20gKCJldmFs Iiwgbm9fY2xhc3MsIGV2YWxfY29tbWFuZCwgXygiXAotIENvbnZlcnQgXCJwcmludGYgZm9ybWF0 IHN0cmluZ1wiLCBhcmcxLCBhcmcyLCBhcmczLCAuLi4sIGFyZ24gdG9cblwKLSBhIGNvbW1hbmQg bGluZSwgYW5kIGNhbGwgaXQuIikpOwotKwotKyNpZiAwCi0rICBvYnNlcnZlcl9hdHRhY2hfbWFy a191c2VkIChwcmludF90eXBlc19tYXJrX3VzZWQpOwotKyNlbmRpZgotIH0KLWRpZmYgLS1naXQg YS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24v bGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIEln bm9yZSBlcnJvcnMgaW4gdXNlciBjb21tYW5kcy4KLSsKLSsjIENvcHlyaWdodCAoQykgMjAwOCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCi0rCi0raW1wb3J0IGdkYgotKwotK2NsYXNzIElnbm9yZUVycm9yc0NvbW1hbmQgKGdk Yi5Db21tYW5kKToKLSsgICAgIiIiRXhlY3V0ZSBhIHNpbmdsZSBjb21tYW5kLCBpZ25vcmluZyBh bGwgZXJyb3JzLgotK09ubHkgb25lLWxpbmUgY29tbWFuZHMgYXJlIHN1cHBvcnRlZC4KLStUaGlz IGlzIHByaW1hcmlseSB1c2VmdWwgaW4gc2NyaXB0cy4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9f IChzZWxmKToKLSsgICAgICAgIHN1cGVyIChJZ25vcmVFcnJvcnNDb21tYW5kLCBzZWxmKS5fX2lu aXRfXyAoImlnbm9yZS1lcnJvcnMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9PQlNDVVJFLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FLi4uCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVU RV9DT01NQU5EKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsg ICAgICAgIHRyeToKLSsgICAgICAgICAgICBnZGIuZXhlY3V0ZSAoYXJnLCBmcm9tX3R0eSkKLSsg ICAgICAgIGV4Y2VwdDoKLSsgICAgICAgICAgICBwYXNzCi0rCi0rSWdub3JlRXJyb3JzQ29tbWFu ZCAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weSBi L2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLjYzNmY5OWQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQotQEAgLTAsMCArMSw4MSBAQAotKyMgcGFob2xl IGNvbW1hbmQgZm9yIGdkYgotKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgUGFob2xlIChnZGIuQ29tbWFuZCk6Ci0r ICAgICIiIlNob3cgdGhlIGhvbGVzIGluIGEgc3RydWN0dXJlLgotK1RoaXMgY29tbWFuZCB0YWtl cyBhIHNpbmdsZSBhcmd1bWVudCwgYSB0eXBlIG5hbWUuCi0rSXQgcHJpbnRzIHRoZSB0eXBlIGFu ZCBkaXNwbGF5cyBjb21tZW50cyBzaG93aW5nIHdoZXJlIGhvbGVzIGFyZS4iIiIKLSsKLSsgICAg ZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChQYWhvbGUsIHNlbGYpLl9faW5p dF9fICgicGFob2xlIiwgZ2RiLkNPTU1BTkRfTk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfU1lNQk9MKQotKwotKyAgICBkZWYgbWF5YmVf cHJpbnRfaG9sZShzZWxmLCBiaXRwb3MsIGZpZWxkX2JpdHBvcyk6Ci0rICAgICAgICBpZiBiaXRw b3MgIT0gZmllbGRfYml0cG9zOgotKyAgICAgICAgICAgIGhvbGUgPSBmaWVsZF9iaXRwb3MgLSBi aXRwb3MKLSsgICAgICAgICAgICBwcmludCAnICAvKiBYWFggJWQgYml0IGhvbGUsIHRyeSB0byBw YWNrICovJyAlIGhvbGUKLSsKLSsgICAgZGVmIHBhaG9sZSAoc2VsZiwgdHlwZSwgbGV2ZWwsIG5h bWUpOgotKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgotKyAgICAgICAgICAgIG5hbWUgPSAnJwot KyAgICAgICAgdGFnID0gdHlwZS50YWcKLSsgICAgICAgIGlmIHRhZyBpcyBOb25lOgotKyAgICAg ICAgICAgIHRhZyA9ICcnCi0rICAgICAgICBwcmludCAnJXNzdHJ1Y3QgJXMgeycgJSAoJyAnICog KDIgKiBsZXZlbCksIHRhZykKLSsgICAgICAgIGJpdHBvcyA9IDAKLSsgICAgICAgIGZvciBmaWVs ZCBpbiB0eXBlLmZpZWxkcyAoKToKLSsgICAgICAgICAgICAjIFNraXAgc3RhdGljIGZpZWxkcy4K LSsgICAgICAgICAgICBpZiBub3QgaGFzYXR0ciAoZmllbGQsICgnYml0cG9zJykpOgotKyAgICAg ICAgICAgICAgICBjb250aW51ZQotKwotKyAgICAgICAgICAgIGZ0eXBlID0gZmllbGQudHlwZS5z dHJpcF90eXBlZGVmcygpCi0rCi0rICAgICAgICAgICAgc2VsZi5tYXliZV9wcmludF9ob2xlKGJp dHBvcywgZmllbGQuYml0cG9zKQotKyAgICAgICAgICAgIGJpdHBvcyA9IGZpZWxkLmJpdHBvcwot KyAgICAgICAgICAgIGlmIGZpZWxkLmJpdHNpemUgPiAwOgotKyAgICAgICAgICAgICAgICBmaWVs ZHNpemUgPSBmaWVsZC5iaXRzaXplCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAg ICAgIyBUQVJHRVRfQ0hBUl9CSVQgaGVyZS4uLgotKyAgICAgICAgICAgICAgICBmaWVsZHNpemUg PSA4ICogZnR5cGUuc2l6ZW9mCi0rCi0rICAgICAgICAgICAgIyBUQVJHRVRfQ0hBUl9CSVQKLSsg ICAgICAgICAgICBwcmludCAnIC8qICUzZCAlM2QgKi8nICUgKGludCAoYml0cG9zIC8gOCksIGlu dCAoZmllbGRzaXplIC8gOCkpLAotKyAgICAgICAgICAgIGJpdHBvcyA9IGJpdHBvcyArIGZpZWxk c2l6ZQotKwotKyAgICAgICAgICAgIGlmIGZ0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9TVFJV Q1Q6Ci0rICAgICAgICAgICAgICAgIHNlbGYucGFob2xlIChmdHlwZSwgbGV2ZWwgKyAxLCBmaWVs ZC5uYW1lKQotKyAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgIHByaW50ICcgJyAq ICgyICsgMiAqIGxldmVsKSwKLSsgICAgICAgICAgICAgICAgcHJpbnQgJyVzICVzJyAlIChzdHIg KGZ0eXBlKSwgZmllbGQubmFtZSkKLSsKLSsgICAgICAgIGlmIGxldmVsID09IDA6Ci0rICAgICAg ICAgICAgc2VsZi5tYXliZV9wcmludF9ob2xlKGJpdHBvcywgOCAqIHR5cGUuc2l6ZW9mKQotKwot KyAgICAgICAgcHJpbnQgJyAnICogKDE0ICsgMiAqIGxldmVsKSwKLSsgICAgICAgIHByaW50ICd9 ICVzJyAlIG5hbWUKLSsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0r ICAgICAgICB0eXBlID0gZ2RiLmxvb2t1cF90eXBlIChhcmcpCi0rICAgICAgICB0eXBlID0gdHlw ZS5zdHJpcF90eXBlZGVmcyAoKQotKyAgICAgICAgaWYgdHlwZS5jb2RlICE9IGdkYi5UWVBFX0NP REVfU1RSVUNUOgotKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvciwgJyVzIGlzIG5vdCBhIHN0 cnVjdCB0eXBlJyAlIGFyZwotKyAgICAgICAgcHJpbnQgJyAnICogMTQsCi0rICAgICAgICBzZWxm LnBhaG9sZSAodHlwZSwgMCwgJycpCi0rCi0rUGFob2xlKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1 bmN0aW9uL2NhbGxlcl9pcy5weQotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjJiOWM1YzcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlv bi9jYWxsZXJfaXMucHkKLUBAIC0wLDAgKzEsNTggQEAKLSsjIENhbGxlci1pcyBmdW5jdGlvbnMu Ci0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2ltcG9ydCBnZGIKLStpbXBv cnQgcmUKLSsKLStjbGFzcyBDYWxsZXJJcyAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJu IFRydWUgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5n LgotK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25lIG9yIHR3byBhcmd1bWVudHMuCi0rVGhlIGZpcnN0 IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0 aW9uJ3MKLStuYW1lIGlzIGVxdWFsIHRvIHRoaXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0 dXJucyBUcnVlLgotK1RoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5j dGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMKLSt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxs aW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgaXMgMS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9f IChzZWxmKToKLSsgICAgICAgIHN1cGVyIChDYWxsZXJJcywgc2VsZikuX19pbml0X18gKCJjYWxs ZXJfaXMiKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBuYW1lLCBuZnJhbWVzID0gMSk6Ci0r ICAgICAgICBmcmFtZSA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKQotKyAgICAgICAgd2hpbGUgbmZy YW1lcyA+IDA6Ci0rICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlciAoKQotKyAgICAgICAg ICAgIG5mcmFtZXMgPSBuZnJhbWVzIC0gMQotKyAgICAgICAgcmV0dXJuIGZyYW1lLm5hbWUgKCkg PT0gbmFtZS5zdHJpbmcgKCkKLSsKLStjbGFzcyBDYWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24p OgotKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0 Y2hlcyBhIHN0cmluZy4KLStUaGlzIGZ1bmN0aW9uIHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRz LgotK1RoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNh bGxpbmcgZnVuY3Rpb24ncwotK25hbWUgaXMgbWF0Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlz IGZ1bmN0aW9uIHJldHVybnMgVHJ1ZS4KLStUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRl bGxzIHRoaXMgZnVuY3Rpb24gaG93IG1hbnkgc3RhY2sgZnJhbWVzCi0rdG8gdHJhdmVyc2UgdG8g ZmluZCB0aGUgY2FsbGluZyBmdW5jdGlvbi4gIFRoZSBkZWZhdWx0IGlzIDEuIiIiCi0rCi0rICAg IGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAoQ2FsbGVyTWF0Y2hlcywgc2Vs ZikuX19pbml0X18gKCJjYWxsZXJfbWF0Y2hlcyIpCi0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYs IG5hbWUsIG5mcmFtZXMgPSAxKToKLSsgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1l ICgpCi0rICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKLSsgICAgICAgICAgICBmcmFtZSA9IGZy YW1lLm9sZGVyICgpCi0rICAgICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAxCi0rICAgICAg ICByZXR1cm4gcmUubWF0Y2ggKG5hbWUuc3RyaW5nICgpLCBmcmFtZS5uYW1lICgpKSBpcyBub3Qg Tm9uZQotKwotK0NhbGxlcklzKCkKLStDYWxsZXJNYXRjaGVzKCkKLWRpZmYgLS1naXQgYS9nZGIv cHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIv ZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li5kZWJiM2JiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rp b24vaW5fc2NvcGUucHkKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIEluLXNjb3BlIGZ1bmN0aW9uLgot KwotKyMgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpbXBvcnQgZ2RiCi0rCi0rY2xh c3MgSW5TY29wZSAoZ2RiLkZ1bmN0aW9uKToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRo ZSBnaXZlbiB2YXJpYWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KLStUYWtlcyBvbmUgYXJn dW1lbnQgZm9yIGVhY2ggdmFyaWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgotKwotKyAgICBk ZWYgX19pbml0X18gKHNlbGYpOgotKwlzdXBlciAoSW5TY29wZSwgc2VsZikuX19pbml0X18gKCJp bl9zY29wZSIpCi0rCi0rICAgIGRlZiBpbnZva2UgKHNlbGYsICp2YXJzKToKLSsgICAgICAgIGlm IGxlbiAodmFycykgPT0gMDoKLSsJICAgIHJhaXNlIFR5cGVFcnJvciwgImluX3Njb3BlIHRha2Vz IGF0IGxlYXN0IG9uZSBhcmd1bWVudCIKLSsKLSsgICAgICAgICMgZ2RiLlZhbHVlIGlzbid0IGhh c2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1dCBpbiBhIG1hcC4KLSsJIyBDb252ZXJ0IHRvIHN0cmlu ZyBmaXJzdC4KLSsJd2FudGVkID0gc2V0IChtYXAgKGxhbWJkYSB4OiB4LnN0cmluZyAoKSwgdmFy cykpCi0rCWZvdW5kID0gc2V0ICgpCi0rCWJsb2NrID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLmJs b2NrICgpCi0rCXdoaWxlIGJsb2NrOgotKwkgICAgZm9yIHN5bSBpbiBibG9jazoKLSsJCWlmIChz eW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0rCQkgICAgICBvciBzeW0uaXNfZnVu Y3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxlKToKLSsJCSAgICBpZiBzeW0ubmFtZSBpbiB3YW50ZWQ6 Ci0rCQkJZm91bmQuYWRkIChzeW0ubmFtZSkKLSsKLSsJICAgIGJsb2NrID0gYmxvY2suc3VwZXJi bG9jawotKwotKwlyZXR1cm4gd2FudGVkID09IGZvdW5kCi0rCi0rSW5TY29wZSAoKQotZGlmZiAt LWdpdCBhL2dkYi9weXRob24vcHktdHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLWluZGV4 IDE2YmI0NDIuLjhjZjZkZWIgMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9uL3B5LXR5cGUuYwotKysr IGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLUBAIC0yOSw2ICsyOSw4IEBACi0gI2luY2x1ZGUgImxh bmd1YWdlLmgiCi0gI2luY2x1ZGUgInZlYy5oIgotICNpbmNsdWRlICJ0eXBlcHJpbnQuaCIKLSsj aW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSsjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotIAotIHR5cGVk ZWYgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QKLSB7Ci1AQCAtMzcsMTEgKzM5LDE5IEBAIHR5cGVk ZWYgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QKLSAKLSAgIC8qIElmIGEgVHlwZSBvYmplY3QgaXMg YXNzb2NpYXRlZCB3aXRoIGFuIG9iamZpbGUsIGl0IGlzIGtlcHQgb24gYQotICAgICAgZG91Ymx5 LWxpbmtlZCBsaXN0LCByb290ZWQgaW4gdGhlIG9iamZpbGUuICBUaGlzIGxldHMgdXMgY29weSB0 aGUKLS0gICAgIHVuZGVybHlpbmcgc3RydWN0IHR5cGUgd2hlbiB0aGUgb2JqZmlsZSBpcyBkZWxl dGVkLiAgKi8KLSsgICAgIHVuZGVybHlpbmcgc3RydWN0IHR5cGUgd2hlbiB0aGUgb2JqZmlsZSBp cyBkZWxldGVkLgotKwotKyAgICAgV2l0aCBOVUxMIG9iamZpbGUgVHlwZSBzdGlsbCBjYW4gYmUg ZG91Ymx5LWxpbmtlZCBpbiB0aGUgbGlzdAotKyAgICAgUFlUWV9PQkpFQ1RTX0RJU0NBUkRBQkxF LiAgKi8KLSAgIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0ICpwcmV2OwotICAgc3RydWN0IHB5dHlf dHlwZV9vYmplY3QgKm5leHQ7Ci0gfSB0eXBlX29iamVjdDsKLSAKLSsjaWYgMAotKy8qIEZpcnN0 IGVsZW1lbnQgb2YgYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgVFlQRV9ESVNDQVJEQUJMRSBUeXBl cy4gICovCi0rc3RhdGljIHR5cGVfb2JqZWN0ICpweXR5X29iamVjdHNfZGlzY2FyZGFibGU7Ci0r I2VuZGlmCi0rCi0gc3RhdGljIFB5VHlwZU9iamVjdCB0eXBlX29iamVjdF90eXBlCi0gICAgIENQ WUNIRUNLRVJfVFlQRV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJ0eXBlX29iamVjdCIpOwotIAotQEAg LTEwMjQsOCArMTAzNCw2MyBAQCB0eXB5X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKm90aGVyLCBpbnQgb3ApCi0gCi0gDAotIAotKy8qIEtleSBhc3NvY2lhdGVkIHdpdGgg ZWFjaCBvYmpmaWxlIHBvaW50aW5nIHRvIHRoZSBmaXJzdCBlbGVtZW50IG9mCi0rICAgYSBkb3Vi bHktbGlua2VkIGxpc3Qgb2YgVHlwZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZmlsZS4gICov Ci0gc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKnR5cHlfb2JqZmlsZV9kYXRhX2tl eTsKLSAKLSsvKiBMaW5rIFRZUEVfT0JKIHRvIGl0cyBhcHByb3ByaWF0ZSBsaXN0LiAgRWl0aGVy IHRvIGl0cyBvYmpmaWxlIGFzc29jaWF0ZWQgb25lCi0rICAgb3IgYXQgbGVhc3QgdG8gdGhlIGds b2JhbCBsaXN0IGZvciBUWVBFX0RJU0NBUkRBQkxFIFR5cGVzLiAgUGVybWFuZW50IHR5cGVzCi0r ICAgZG8gbm90IGdldCBsaW5rZWQgYW55d2hlcmUuICAqLwotK3N0YXRpYyB2b2lkCi0rdHlweV9s aW5rICh0eXBlX29iamVjdCAqdHlwZV9vYmopCi0rewotKyAgdHlwZV9vYmotPnByZXYgPSBOVUxM OwotKwotKyAgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5 cGUpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJ TEUgKHR5cGVfb2JqLT50eXBlKTsKLSsKLSsgICAgICB0eXBlX29iai0+bmV4dCA9IG9iamZpbGVf ZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKLSsgICAgICBpZiAodHlwZV9v YmotPm5leHQpCi0rCXR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmo7Ci0rICAgICAgc2V0 X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iaik7 Ci0rICAgIH0KLSsjaWYgMAotKyAgZWxzZSBpZiAodHlwZV9vYmotPnR5cGUgJiYgVFlQRV9ESVND QVJEQUJMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAgICAgdHlwZV9vYmotPm5leHQg PSBweXR5X29iamVjdHNfZGlzY2FyZGFibGU7Ci0rICAgICAgaWYgKHR5cGVfb2JqLT5uZXh0KQot Kwl0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVfb2JqOwotKyAgICAgIHB5dHlfb2JqZWN0c19k aXNjYXJkYWJsZSA9IHR5cGVfb2JqOwotKyAgICB9Ci0rI2VuZGlmCi0rICBlbHNlCi0rICAgIHR5 cGVfb2JqLT5uZXh0ID0gTlVMTDsKLSt9Ci0rCi0rLyogVW5saW5rIFRZUEVfT0JKIGZyb20gaXRz IGN1cnJlbnQgbGlzdC4gIFBlcm1hbmVudCB0eXBlcyBhcmUgbm90IGxpbmtlZAotKyAgIGFueXdo ZXJlIGFuZCB0aGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlbS4gICovCi0rc3RhdGlj IHZvaWQKLSt0eXB5X3VubGluayAodHlwZV9vYmplY3QgKnR5cGVfb2JqKQotK3sKLSsgIGlmICh0 eXBlX29iai0+cHJldikKLSsgICAgdHlwZV9vYmotPnByZXYtPm5leHQgPSB0eXBlX29iai0+bmV4 dDsKLSsgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmot PnR5cGUpKQotKyAgICB7Ci0rICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwot KyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlX29iai0+ dHlwZSk7Ci0rCi0rICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxl X2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7Ci0rICAgIH0KLSsjaWYgMAotKyAgZWxzZSBpZiAo cHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID09IHR5cGVfb2JqKQotKyAgICBweXR5X29iamVjdHNf ZGlzY2FyZGFibGUgPSB0eXBlX29iai0+bmV4dDsKLSsjZW5kaWYKLSsKLSsgIGlmICh0eXBlX29i ai0+bmV4dCkKLSsgICAgdHlwZV9vYmotPm5leHQtPnByZXYgPSB0eXBlX29iai0+cHJldjsKLSt9 Ci0rCi0gc3RhdGljIHZvaWQKLSBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCB2b2lkICpkYXR1bSkKLSB7Ci1AQCAtMTA0NiwxMiArMTExMSwxMyBAQCBzYXZlX29i amZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKLSAgICAg ewotICAgICAgIHR5cGVfb2JqZWN0ICpuZXh0ID0gb2JqLT5uZXh0OwotIAotLSAgICAgIGh0YWJf ZW1wdHkgKGNvcGllZF90eXBlcyk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFIChv YmotPnR5cGUpID09IG9iamZpbGUpOwotKyAgICAgIHR5cHlfdW5saW5rIChvYmopOwotIAotLSAg ICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIG9iai0+dHlwZSwg Y29waWVkX3R5cGVzKTsKLSsgICAgICBvYmotPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChv YmotPnR5cGUsIGNvcGllZF90eXBlcyk7Ci0gCi0tICAgICAgb2JqLT5uZXh0ID0gTlVMTDsKLS0g ICAgICBvYmotPnByZXYgPSBOVUxMOwotKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAo b2JqLT50eXBlKSA9PSBOVUxMKTsKLSsgICAgICB0eXB5X2xpbmsgKG9iaik7Ci0gCi0gICAgICAg b2JqID0gbmV4dDsKLSAgICAgfQotQEAgLTEwNjIsNDMgKzExMjgsMjggQEAgc2F2ZV9vYmpmaWxl X3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCi0gfQotIAotIHN0 YXRpYyB2b2lkCi0tc2V0X3R5cGUgKHR5cGVfb2JqZWN0ICpvYmosIHN0cnVjdCB0eXBlICp0eXBl KQotK3R5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKLSB7Ci0tICBvYmotPnR5cGUgPSB0eXBl OwotLSAgb2JqLT5wcmV2ID0gTlVMTDsKLS0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlw ZSkpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklM RSAodHlwZSk7Ci0rICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikgb2Jq OwotIAotLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpm aWxlX2RhdGFfa2V5KTsKLS0gICAgICBpZiAob2JqLT5uZXh0KQotLQlvYmotPm5leHQtPnByZXYg PSBvYmo7Ci0tICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2Rh dGFfa2V5LCBvYmopOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0r ICB0eXB5X3VubGluayAodHlwZV9vYmopOwotKwotKyAgdHlwZV9vYmotPm9iX3R5cGUtPnRwX2Zy ZWUgKG9iaik7Ci0gfQotIAotKyNpZiAwCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55 IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCi0gc3RhdGlj IHZvaWQKLS10eXB5X2RlYWxsb2MgKFB5T2JqZWN0ICpvYmopCi0rdHlweV90eXBlc19tYXJrX3Vz ZWQgKHZvaWQpCi0gewotLSAgdHlwZV9vYmplY3QgKnR5cGUgPSAodHlwZV9vYmplY3QgKikgb2Jq OwotLQotLSAgaWYgKHR5cGUtPnByZXYpCi0tICAgIHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5u ZXh0OwotLSAgZWxzZSBpZiAodHlwZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUp KQotLSAgICB7Ci0tICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLwotLSAgICAg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKTsKLS0K LS0gICAgICBpZiAob2JqZmlsZSkKLS0Jc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9v YmpmaWxlX2RhdGFfa2V5LCB0eXBlLT5uZXh0KTsKLS0gICAgfQotLSAgaWYgKHR5cGUtPm5leHQp Ci0tICAgIHR5cGUtPm5leHQtPnByZXYgPSB0eXBlLT5wcmV2OwotKyAgdHlwZV9vYmplY3QgKnR5 cGVfb2JqOwotIAotLSAgUHlfVFlQRSAodHlwZSktPnRwX2ZyZWUgKHR5cGUpOwotKyAgZm9yICh0 eXBlX29iaiA9IHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKLSsgICAgICAgdHlwZV9vYmogIT0g TlVMTDsKLSsgICAgICAgdHlwZV9vYmogPSB0eXBlX29iai0+bmV4dCkKLSsgICAgdHlwZV9tYXJr X3VzZWQgKHR5cGVfb2JqLT50eXBlKTsKLSB9Ci0rI2VuZGlmCi0gCi0gLyogUmV0dXJuIG51bWJl ciBvZiBmaWVsZHMgKCJsZW5ndGgiIG9mIHRoZSBmaWVsZCBkaWN0aW9uYXJ5KS4gICovCi0gCi1A QCAtMTMxOCw3ICsxMzY5LDEwIEBAIHR5cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0eXBlICp0 eXBlKQotIAotICAgdHlwZV9vYmogPSBQeU9iamVjdF9OZXcgKHR5cGVfb2JqZWN0LCAmdHlwZV9v YmplY3RfdHlwZSk7Ci0gICBpZiAodHlwZV9vYmopCi0tICAgIHNldF90eXBlICh0eXBlX29iaiwg dHlwZSk7Ci0rICAgIHsKLSsgICAgICB0eXBlX29iai0+dHlwZSA9IHR5cGU7Ci0rICAgICAgdHlw eV9saW5rICh0eXBlX29iaik7Ci0rICAgIH0KLSAKLSAgIHJldHVybiAoUHlPYmplY3QgKikgdHlw ZV9vYmo7Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRo b24vcHktdmFsdWUuYwotaW5kZXggNGFiNzgyZC4uZWVkOTFiODc4IDEwMDY0NAotLS0tIGEvZ2Ri L3B5dGhvbi9weS12YWx1ZS5jCi0rKysgYi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKLUBAIC0yOSw2 ICsyOSw3IEBACi0gI2luY2x1ZGUgImV4cHJlc3Npb24uaCIKLSAjaW5jbHVkZSAiY3AtYWJpLmgi Ci0gI2luY2x1ZGUgInB5dGhvbi5oIgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotIAotICNpZmRl ZiBIQVZFX1BZVEhPTgotIAotQEAgLTE1MDMsMTIgKzE1MDQsMjggQEAgZ2RicHlfaXNfdmFsdWVf b2JqZWN0IChQeU9iamVjdCAqb2JqKQotICAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAob2Jq LCAmdmFsdWVfb2JqZWN0X3R5cGUpOwotIH0KLSAKLSsjaWYgMAotKy8qIENhbGwgdHlwZV9tYXJr X3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZpbGUu ICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHl0aG9uX3R5cGVzX21hcmtfdXNlZCAodm9pZCkKLSt7 Ci0rICB2YWx1ZV9vYmplY3QgKml0ZXI7Ci0rCi0rICBmb3IgKGl0ZXIgPSB2YWx1ZXNfaW5fcHl0 aG9uOyBpdGVyOyBpdGVyID0gaXRlci0+bmV4dCkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHZhbHVl X3R5cGUgKGl0ZXItPnZhbHVlKSk7Ci0rfQotKyNlbmRpZgotKwotIGludAotIGdkYnB5X2luaXRp YWxpemVfdmFsdWVzICh2b2lkKQotIHsKLSAgIGlmIChQeVR5cGVfUmVhZHkgKCZ2YWx1ZV9vYmpl Y3RfdHlwZSkgPCAwKQotICAgICByZXR1cm4gLTE7Ci0gCi0rI2lmIDAKLSsgIG9ic2VydmVyX2F0 dGFjaF9tYXJrX3VzZWQgKHB5dGhvbl90eXBlc19tYXJrX3VzZWQpOwotKyNlbmRpZgotICAgcmV0 dXJuIGdkYl9weW1vZHVsZV9hZGRvYmplY3QgKGdkYl9tb2R1bGUsICJWYWx1ZSIsCi0gCQkJCSAo UHlPYmplY3QgKikgJnZhbHVlX29iamVjdF90eXBlKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5 dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKLWluZGV4IDMzN2MxNzAuLjg3M2Mw ZGMgMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCi0rKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5jCi1AQCAtNjcsNiArNjcsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2RicHlfc2hvdWxk X3ByaW50X3N0YWNrID0gcHl0aG9uX2V4Y3BfbWVzc2FnZTsKLSAjaW5jbHVkZSAibGluZXNwZWMu aCIKLSAjaW5jbHVkZSAic291cmNlLmgiCi0gI2luY2x1ZGUgInZlcnNpb24uaCIKLSsjaW5jbHVk ZSAiaW5mZXJpb3IuaCIKLSsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgInRhcmdl dC5oIgotICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLUBA IC0xMTE2LDYgKzExMTgsNTYgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCi0gCi0gLyogUmV0 dXJuIHRoZSBjdXJyZW50IFByb2dzcGFjZS4KLSAgICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8K LSsvKiBUcnVlIGlmICdnZGIgLVAnIHdhcyB1c2VkLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0 YXRpYyBpbnQgcnVubmluZ19weXRob25fc2NyaXB0OwotKwotKy8qIFRydWUgaWYgd2UgYXJlIGN1 cnJlbnRseSBpbiBhIGNhbGwgdG8gJ2dkYi5jbGknLCBmYWxzZSBvdGhlcndpc2UuICAqLwotK3N0 YXRpYyBpbnQgaW5fY2xpOwotKwotKy8qIEVudGVyIHRoZSBjb21tYW5kIGxvb3AuICAqLwotKwot K3N0YXRpYyBQeU9iamVjdCAqCi0rZ2RicHlfY2xpIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmpl Y3QgKnVudXNlZDIpCi0rewotKyAgaWYgKCEgcnVubmluZ19weXRob25fc2NyaXB0IHx8IGluX2Ns aSkKLSsgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90 IGludm9rZSBDTEkgcmVjdXJzaXZlbHkiKTsKLSsgIAotKyAgaWYgKHVpX291dF9pc19taV9saWtl X3AgKGN1cnJlbnRfdWlvdXQpKQotKyAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChQeUV4Y19SdW50 aW1lRXJyb3IsIF8oIkNhbm5vdCBpbnZva2UgQ0xJIGZyb20gTUkuIikpOwotKwotKyAgaW5fY2xp ID0gMTsKLSsgIGN1cnJlbnRfaW50ZXJwX2NvbW1hbmRfbG9vcCAoKTsKLSsgIGluX2NsaSA9IDA7 Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rLyogU2V0IHVwIHRoZSBQeXRob24gYXJn dW1lbnQgdmVjdG9yIGFuZCBldmFsdWF0ZSBhIHNjcmlwdC4gIFRoaXMgaXMKLSsgICB1c2VkIHRv IGltcGxlbWVudCAnZ2RiIC1QJy4gICovCi0rCi0rdm9pZAotK3J1bl9weXRob25fc2NyaXB0IChp bnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgRklMRSAqaW5wdXQ7Ci0rCi0rICAvKiBXZSBu ZXZlciBmcmVlIHRoaXMsIHNpbmNlIHdlIHBsYW4gdG8gZXhpdCBhdCB0aGUgZW5kLiAgKi8KLSsg IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdl KTsKLSsKLSsgIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCA9IDE7Ci0rICBQeVN5c19TZXRBcmd2IChh cmdjIC0gMSwgYXJndiArIDEpOwotKyAgaW5wdXQgPSBmb3BlbiAoYXJndlswXSwgInIiKTsKLSsg IGlmICghIGlucHV0KQotKyAgICB7Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAiY291bGQgbm90 IG9wZW4gJXM6ICVzXG4iLCBhcmd2WzBdLCBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICBleGl0 ICgxKTsKLSsgICAgfQotKyAgUHlSdW5fU2ltcGxlRmlsZSAoaW5wdXQsIGFyZ3ZbMF0pOwotKyAg ZmNsb3NlIChpbnB1dCk7Ci0rICBleGl0ICgwKTsKLSt9Ci0rCi0rDAotKwotIAotIHN0YXRpYyBQ eU9iamVjdCAqCi0gZ2RicHlfZ2V0X2N1cnJlbnRfcHJvZ3NwYWNlIChQeU9iamVjdCAqdW51c2Vk MSwgUHlPYmplY3QgKnVudXNlZDIpCi1AQCAtMTgzMSw2ICsxODgzLDggQEAgc3RhdGljIFB5TWV0 aG9kRGVmIEdkYk1ldGhvZHNbXSA9Ci0gRXZhbHVhdGUgY29tbWFuZCwgYSBzdHJpbmcsIGFzIGEg Z2RiIENMSSBjb21tYW5kLiAgT3B0aW9uYWxseSByZXR1cm5zXG5cCi0gYSBQeXRob24gU3RyaW5n IGNvbnRhaW5pbmcgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCBpZiB0b19zdHJpbmcgaXNcblwK LSBzZXQgdG8gVHJ1ZS4iIH0sCi0rICB7ICJjbGkiLCBnZGJweV9jbGksIE1FVEhfTk9BUkdTLAot KyAgICAiRW50ZXIgdGhlIGdkYiBDTEkiIH0sCi0gICB7ICJwYXJhbWV0ZXIiLCBnZGJweV9wYXJh bWV0ZXIsIE1FVEhfVkFSQVJHUywKLSAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1 ZSIgfSwKLSAKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9w eXRob24uaAotaW5kZXggOTZiZjdjMi4uNzlhZDZjOSAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24v cHl0aG9uLmgKLSsrKyBiL2dkYi9weXRob24vcHl0aG9uLmgKLUBAIC0xMDgsNiArMTA4LDggQEAg dm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGlu ZSAqKTsKLSAKLSB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpmaWxlLCBjb25zdCBj aGFyICpmaWxlbmFtZSk7Ci0gCi0rdm9pZCBydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNo YXIgKiphcmd2KTsKLSsKLSBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCQkJICAgICAgaW50IGVtYmVkZGVk X29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCi0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwgaW50IHJlY3Vyc2UsCi1kaWZmIC0tZ2l0IGEvZ2RiL3N0YWNrLmMgYi9nZGIvc3RhY2su YwotaW5kZXggMzE0ZTRkYS4uZDA3YTljMiAxMDA2NDQKLS0tLSBhL2dkYi9zdGFjay5jCi0rKysg Yi9nZGIvc3RhY2suYwotQEAgLTUzNyw2ICs1MzcsMTAgQEAgcHJpbnRfZnJhbWVfYXJncyAoc3Ry dWN0IHN5bWJvbCAqZnVuYywgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAotICAgc3RiID0gbWVt X2ZpbGVvcGVuICgpOwotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRl IChzdGIpOwotIAotKyAgLyogRnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlwZWRlZiBv ZiBUWVBFX0RZTkFNSUMuICAqLwotKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJh bWUgKCk7Ci0rICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKLSsKLSAgIGlmIChmdW5jKQotICAgICB7 Ci0gICAgICAgc3RydWN0IGJsb2NrICpiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFja2VkX2FycmF5LmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCi1pbmRleCBhZmMxNDc1Li43ZTk0YzQ5 IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCi1AQCAtNTYsNSArNTYs MTEgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0ZXN0IiAiJHRlc3QiIHsKLSAgICAgICAgICMgYXJl LiAgT2JzZXJ2ZWQgd2l0aCAoRlNGIEdOVSBBZGEgNC41LjMgMjAxMTAxMjQpLgotICAgICAgICAg eGZhaWwgJHRlc3QKLSAgICAgfQotKyAgICAtcmUgIj0gXFwoXFwpXFtcclxuXF0rJGdkYl9wcm9t cHQgJCIgewotKwkjIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSByZXNvbHZlcyBpdCBhcyBhIGR5 bmFtaWMgdHlwZSByZXNvbHZlZCBhcyBhbgotKwkjIGVtcHR5IGFycmF5IFswLi4tMV0uCi0rCSMg RFdfQVRfdXBwZXJfYm91bmQgOiAoRFdfT1BfZmJyZWc6IC00ODsgRFdfT1BfZGVyZWYpCi0rICAg ICAgICB4ZmFpbCAkdGVzdAotKyAgICB9Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi44M2ZhYWY2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUwotQEAgLTAsMCArMSw0NTcgQEAKLSsJLmZp bGUJIng4Nl82NC12bGEtcG9pbnRlci5jIgotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBw cm9nYml0cwotKy5MZGVidWdfYWJicmV2MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2luZm8sIiIsQHBy b2diaXRzCi0rLkxkZWJ1Z19pbmZvMDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIsQHByb2di aXRzCi0rLkxkZWJ1Z19saW5lMDoKLSsJLnRleHQKLSsuTHRleHQwOgotKy5nbG9ibCBmb28KLSsJ LnR5cGUJZm9vLCBAZnVuY3Rpb24KLStmb286Ci0rLkxGQjI6Ci0rCS5maWxlIDEgIng4Nl82NC12 bGEtcG9pbnRlci5jIgotKwkubG9jIDEgMjIgMAotKwlwdXNocQklcmJwCi0rLkxDRkkwOgotKwlt b3ZxCSVyc3AsICVyYnAKLSsuTENGSTE6Ci0rCXN1YnEJJDY0LCAlcnNwCi0rLkxDRkkyOgotKwlt b3ZsCSVlZGksIC0zNiglcmJwKQotKwkubG9jIDEgMjIgMAotKwltb3ZxCSVyc3AsICVyYXgKLSsJ bW92cQklcmF4LCAtNDgoJXJicCkKLSsJLmxvYyAxIDIzIDAKLSsJbW92bAktMzYoJXJicCksICVl ZHgKLSsJbW92c2xxCSVlZHgsJXJheAotKwlzdWJxCSQxLCAlcmF4Ci0rCW1vdnEJJXJheCwgLTI0 KCVyYnApCi0rCS5sb2MgMSAyNCAwCi0rCW1vdnNscQklZWR4LCVyYXgKLSsJYWRkcQkkMTUsICVy YXgKLSsJYWRkcQkkMTUsICVyYXgKLSsJc2hycQkkNCwgJXJheAotKwlzYWxxCSQ0LCAlcmF4Ci0r CXN1YnEJJXJheCwgJXJzcAotKwltb3ZxCSVyc3AsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJw KSwgJXJheAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVy YXgKLSsJbW92cQklcmF4LCAtNTYoJXJicCkKLSsJbW92cQktNTYoJXJicCksICVyYXgKLSsJbW92 cQklcmF4LCAtMTYoJXJicCkKLSsJLmxvYyAxIDI3IDAKLSsJbW92bAkkMCwgLTQoJXJicCkKLSsJ am1wCS5MMgotKy5MMzoKLSsJLmxvYyAxIDI4IDAKLSsJbW92bAktNCglcmJwKSwgJWVzaQotKwlt b3ZsCS00KCVyYnApLCAlZWF4Ci0rCW1vdmwJJWVheCwgJWVjeAotKwltb3ZxCS0xNiglcmJwKSwg JXJkeAotKwltb3ZzbHEJJWVzaSwlcmF4Ci0rCW1vdmIJJWNsLCAoJXJkeCwlcmF4KQotKwkubG9j IDEgMjcgMAotKwlhZGRsCSQxLCAtNCglcmJwKQotKy5MMjoKLSsJbW92bAktNCglcmJwKSwgJWVh eAotKwljbXBsCS0zNiglcmJwKSwgJWVheAotKwlqbAkuTDMKLSsJLmxvYyAxIDMwIDAKLSsJLmds b2JsCWJyZWFrX2hlcmUKLSticmVha19oZXJlOgotKwltb3ZxCS0xNiglcmJwKSwgJXJheAotKwlt b3ZiCSQwLCAoJXJheCkKLSsJbW92cQktNDgoJXJicCksICVyc3AKLSsJLmxvYyAxIDMxIDAKLSsJ bGVhdmUKLSsJcmV0Ci0rLkxGRTI6Ci0rCS5zaXplCWZvbywgLi1mb28KLSsJLnNlY3Rpb24JLmRl YnVnX2ZyYW1lLCIiLEBwcm9nYml0cwotKy5MZnJhbWUwOgotKwkubG9uZwkuTEVDSUUwLS5MU0NJ RTAKLSsuTFNDSUUwOgotKwkubG9uZwkweGZmZmZmZmZmCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5n CSIiCi0rCS51bGViMTI4IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0ZQkweDEwCi0rCS5ieXRl CTB4YwotKwkudWxlYjEyOCAweDcKLSsJLnVsZWIxMjggMHg4Ci0rCS5ieXRlCTB4OTAKLSsJLnVs ZWIxMjggMHgxCi0rCS5hbGlnbiA4Ci0rLkxFQ0lFMDoKLSsuTFNGREUwOgotKwkubG9uZwkuTEVG REUwLS5MQVNGREUwCi0rLkxBU0ZERTA6Ci0rCS5sb25nCS5MZnJhbWUwCi0rCS5xdWFkCS5MRkIy Ci0rCS5xdWFkCS5MRkUyLS5MRkIyCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTAtLkxGQjIK LSsJLmJ5dGUJMHhlCi0rCS51bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4NgotKwkudWxlYjEyOCAw eDIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0rCS51 bGViMTI4IDB4NgotKwkuYWxpZ24gOAotKy5MRUZERTA6Ci0rCS5zZWN0aW9uCS5laF9mcmFtZSwi YSIsQHByb2diaXRzCi0rLkxmcmFtZTE6Ci0rCS5sb25nCS5MRUNJRTEtLkxTQ0lFMQotKy5MU0NJ RTE6Ci0rCS5sb25nCTB4MAotKwkuYnl0ZQkweDEKLSsJLnN0cmluZwkielIiCi0rCS51bGViMTI4 IDB4MQotKwkuc2xlYjEyOCAtOAotKwkuYnl0ZQkweDEwCi0rCS51bGViMTI4IDB4MQotKwkuYnl0 ZQkweDMKLSsJLmJ5dGUJMHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5 dGUJMHg5MAotKwkudWxlYjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUxOgotKy5MU0ZERTE6 Ci0rCS5sb25nCS5MRUZERTEtLkxBU0ZERTEKLSsuTEFTRkRFMToKLSsJLmxvbmcJLkxBU0ZERTEt LkxmcmFtZTEKLSsJLmxvbmcJLkxGQjIKLSsJLmxvbmcJLkxGRTItLkxGQjIKLSsJLnVsZWIxMjgg MHgwCi0rCS5ieXRlCTB4NAotKwkubG9uZwkuTENGSTAtLkxGQjIKLSsJLmJ5dGUJMHhlCi0rCS51 bGViMTI4IDB4MTAKLSsJLmJ5dGUJMHg4NgotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJMHg0Ci0r CS5sb25nCS5MQ0ZJMS0uTENGSTAKLSsJLmJ5dGUJMHhkCi0rCS51bGViMTI4IDB4NgotKwkuYWxp Z24gOAotKy5MRUZERTE6Ci0rCS50ZXh0Ci0rLkxldGV4dDA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19s b2MsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19sb2MwOgotKy5MTFNUMDoKLSsJLnF1YWQJLkxGQjIt Lkx0ZXh0MAotKwkucXVhZAkuTENGSTAtLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4 NzcKLSsJLnNsZWIxMjggOAotKwkucXVhZAkuTENGSTAtLkx0ZXh0MAotKwkucXVhZAkuTENGSTEt Lkx0ZXh0MAotKwkudmFsdWUJMHgyCi0rCS5ieXRlCTB4NzcKLSsJLnNsZWIxMjggMTYKLSsJLnF1 YWQJLkxDRkkxLS5MdGV4dDAKLSsJLnF1YWQJLkxGRTItLkx0ZXh0MAotKwkudmFsdWUJMHgyCi0r CS5ieXRlCTB4NzYKLSsJLnNsZWIxMjggMTYKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAotKwku c2VjdGlvbgkuZGVidWdfaW5mbwotKy5MZGVidWdfcmVsYXRpdmU6Ci0rCS5sb25nCS5MZGVidWdf ZW5kIC0gLkxkZWJ1Z19zdGFydAotKy5MZGVidWdfc3RhcnQ6Ci0rCS52YWx1ZQkweDIKLSsJLmxv bmcJLkxkZWJ1Z19hYmJyZXYwCi0rCS5ieXRlCTB4OAotKwkudWxlYjEyOCAweDEKLSsJLmxvbmcJ LkxBU0YyCi0rCS5ieXRlCTB4MQotKwkubG9uZwkuTEFTRjMKLSsJLmxvbmcJLkxBU0Y0Ci0rCS5x dWFkCS5MdGV4dDAKLSsJLnF1YWQJLkxldGV4dDAKLSsJLmxvbmcJLkxkZWJ1Z19saW5lMAotKwku dWxlYjEyOCAweDIKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJImZvbyIKLSsJLmJ5dGUJMHgxCi0r CS5ieXRlCTB4MTYKLSsJLmJ5dGUJMHgxCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyCi0r CS5sb25nCS5MTFNUMAotKwkubG9uZwkuTHR5cGVfaW50IC0gLkxkZWJ1Z19yZWxhdGl2ZQotKwku dWxlYjEyOCAweDMKLSsJLmxvbmcJLkxBU0Y1Ci0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE1Ci0r CS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0rCS5ieXRlCTB4MgotKwkuYnl0 ZQkweDkxCi0rCS5zbGViMTI4IC01MgotKy5MdGFnX3BvaW50ZXI6Ci0rCS51bGViMTI4IDB4NAot KwkuYnl0ZQkweDgJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5sb25nCS5MdGFnX2FycmF5X3R5 cGUgLSAuZGVidWdfaW5mbwkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4NQkvKiBBYmJy ZXYgTnVtYmVyOiA1IChEV19UQUdfdmFyaWFibGUpICovCi0rCS5sb25nCS5MQVNGMAotKwkuYnl0 ZQkweDEKLSsJLmJ5dGUJMHgxOAotKyNpZiAxCi0rCS5sb25nCS5MdGFnX3BvaW50ZXIgLSAuZGVi dWdfaW5mbwotKyNlbHNlCi0rCS8qIERlYnVnZ2luZyBvbmx5OiBTa2lwIHRoZSB0eXBlZGVmIGlu ZGlyZWN0aW9uLiAgKi8KLSsJLmxvbmcJLkx0YWdfYXJyYXlfdHlwZSAtIC5kZWJ1Z19pbmZvCi0r I2VuZGlmCi0rCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogc3RhcnQgKi8KLSsJ LmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNsZWIxMjggLTMyCi0rI2lmIDAKLSsJLmJ5dGUJ MHg2CS8qIERXX09QX2RlcmVmICovCi0rI2Vsc2UKLSsJLmJ5dGUJMHg5NgkvKiBEV19PUF9ub3Ag Ki8KLSsjZW5kaWYKLSsJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sxOiBlbmQgKi8K LSsJLnVsZWIxMjggMHg2Ci0rCS5zdHJpbmcJImkiCi0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE5 Ci0rCS5sb25nCS5MdHlwZV9pbnQgLSAuTGRlYnVnX3JlbGF0aXZlCi0rCS5ieXRlCTB4MgotKwku Ynl0ZQkweDkxCi0rCS5zbGViMTI4IC0yMAotKwkuYnl0ZQkweDAKLSsuTHR5cGVfaW50OgotKwku dWxlYjEyOCAweDcKLSsJLmJ5dGUJMHg0Ci0rCS5ieXRlCTB4NQotKwkuc3RyaW5nCSJpbnQiCi0r Lkx0YWdfYXJyYXlfdHlwZToKLSsJLnVsZWIxMjggMHg4CS8qIEFiYnJldiBOdW1iZXI6IDggKERX X1RBR19hcnJheV90eXBlKSAqLwotKwkubG9uZwkuTHR5cGVfY2hhciAtIC5MZGVidWdfcmVsYXRp dmUKLSsJLmxvbmcJLkx0eXBlX3Vsb25nIC0gLkxkZWJ1Z19yZWxhdGl2ZQkvKiBEV19BVF9zaWJs aW5nOiBEV19GT1JNX3JlZjQgKi8KLSsxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JN X2Jsb2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KLSszOgotKwku Ynl0ZQkweDk3CS8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KLSsjaWYgMQotKwkuYnl0 ZQkweDYJLyogRFdfT1BfZGVyZWYgKi8KLSsjZWxzZQotKwkuYnl0ZQkweDk2CS8qIERXX09QX25v cCAqLwotKyNlbmRpZgotKzI6CS8qIERXX0FUX2RhdGFfbG9jYXRpb246IERXX0ZPUk1fYmxvY2sx OiBlbmQgKi8KLSsJLnVsZWIxMjggMHg5Ci0rCS5sb25nCS5MdHlwZV9jaGFyIC0gLkxkZWJ1Z19y ZWxhdGl2ZQkvKiBEV19BVF90eXBlOiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5i eXRlCTB4OTEKLSsJLnNsZWIxMjggLTQwCi0rCS5ieXRlCTB4NgotKwkuYnl0ZQkweDAKLSsuTHR5 cGVfdWxvbmc6Ci0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDgKLSsJLmJ5dGUJMHg3Ci0rLkx0 eXBlX2NoYXI6Ci0rCS51bGViMTI4IDB4YgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHg2Ci0rCS5s b25nCS5MQVNGMQotKwkuYnl0ZQkweDAKLSsuTGRlYnVnX2VuZDoKLSsJLnNlY3Rpb24JLmRlYnVn X2FiYnJldgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHgxMQotKwkuYnl0ZQkweDEKLSsJ LnVsZWIxMjggMHgyNQotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEy OCAweGIKLSsJLnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDFiCi0r CS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDExCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEy OCAweDEyCi0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDEwCi0rCS51bGViMTI4IDB4Ngot KwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MgotKwkudWxlYjEyOCAweDJl Ci0rCS5ieXRlCTB4MQotKwkudWxlYjEyOCAweDNmCi0rCS51bGViMTI4IDB4YwotKwkudWxlYjEy OCAweDMKLSsJLnVsZWIxMjggMHg4Ci0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhiCi0r CS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MjcKLSsJLnVsZWIx MjggMHhjCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTIK LSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4NDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGVi MTI4IDB4MQotKwkudWxlYjEyOCAweDEzCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVs ZWIxMjggMHgzCi0rCS51bGViMTI4IDB4NQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgzCi0r CS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEy OCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4MTMK LSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgw Ci0rCS51bGViMTI4IDB4NAkvKiAuTHRhZ19wb2ludGVyIGFiYnJldiAqLwotKwkudWxlYjEyOCAw eDBmCS8qIERXX1RBR19wb2ludGVyX3R5cGUgKi8KLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4 MGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwku Ynl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NQotKwkudWxlYjEyOCAweDM0Ci0r CS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4 M2EKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51 bGViMTI4IDB4NDkKLSsJLnVsZWIxMjggMHgxMwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjgg MHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg2Ci0rCS51bGViMTI4 IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVs ZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAw eGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51bGViMTI4IDB4MgotKwku dWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcKLSsJ LnVsZWIxMjggMHgyNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4 YgotKwkudWxlYjEyOCAweDNlCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVs ZWIxMjggMHg4Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg4CS8qIEFi YnJldiBOdW1iZXI6IDggKERXX1RBR19hcnJheV90eXBlKSAqLwotKwkudWxlYjEyOCAweDEKLSsJ LmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAw eDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDEJLyogRFdfQVRfc2libGluZyAq LwotKwkudWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDUwCS8q IERXX0FUX2RhdGFfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjggMHhhCS8qIERXX0ZPUk1fYmxvY2sx ICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg5Ci0rCS51bGViMTI4 IDB4MjEKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4NDkJLyogRFdfQVRfdHlwZSAqLwotKwku dWxlYjEyOCAweDEzCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDJmCi0rCS51bGVi MTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4YQotKwkudWxl YjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0r CS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJ LnVsZWIxMjggMHgzCi0rCS51bGViMTI4IDB4ZQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0r CS5ieXRlCTB4MAotKwkuc2VjdGlvbgkuZGVidWdfcHVibmFtZXMsIiIsQHByb2diaXRzCi0rCS5s b25nCTB4MTYKLSsJLnZhbHVlCTB4MgotKwkubG9uZwkuTGRlYnVnX2luZm8wCi0rCS5sb25nCTB4 YTgKLSsJLmxvbmcJMHgyZAotKwkuc3RyaW5nCSJmb28iCi0rCS5sb25nCTB4MAotKwkuc2VjdGlv bgkuZGVidWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgyYwotKwkudmFsdWUJMHgy Ci0rCS5sb25nCS5MZGVidWdfaW5mbzAKLSsJLmJ5dGUJMHg4Ci0rCS5ieXRlCTB4MAotKwkudmFs dWUJMHgwCi0rCS52YWx1ZQkweDAKLSsJLnF1YWQJLkx0ZXh0MAotKwkucXVhZAkuTGV0ZXh0MC0u THRleHQwCi0rCS5xdWFkCTB4MAotKwkucXVhZAkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3N0ciwi TVMiLEBwcm9nYml0cywxCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJhcnJheSIKLSsuTEFTRjU6Ci0r CS5zdHJpbmcJInNpemUiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSJ4ODZfNjQtdmxhLXBvaW50ZXIu YyIKLSsuTEFTRjY6Ci0rCS5zdHJpbmcJImFycmF5X3QiCi0rLkxBU0YxOgotKwkuc3RyaW5nCSJj aGFyIgotKy5MQVNGNDoKLSsJLnN0cmluZwkiZ2RiLmFyY2giCi0rLkxBU0YyOgotKwkuc3RyaW5n CSJHTlUgQyA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMuMi03KSIKLSsJLmlkZW50CSJHQ0M6 IChHTlUpIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgotKwkuc2VjdGlvbgkubm90 ZS5HTlUtc3RhY2ssIiIsQHByb2diaXRzCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS1wb2ludGVyLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mZTJj OGY3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci5jCi1AQCAtMCwwICsxLDQzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCi0rCi0rI2lmIDAKLSsKLSt2b2lkCi0rZm9vIChpbnQgc2l6ZSkKLSt7Ci0r ICB0eXBlZGVmIGNoYXIgYXJyYXlfdFtzaXplXTsKLSsgIGFycmF5X3QgYXJyYXk7Ci0rICBpbnQg aTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCi0rICAgIGFycmF5W2ldID0gaTsK LSsKLSsgIGFycmF5WzBdID0gMDsJLyogYnJlYWstaGVyZSAqLwotK30KLSsKLSsjZWxzZQotKwot K2ludAotK21haW4gKHZvaWQpCi0rewotKyAgZm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJl dHVybiAwOwotK30KLSsKLSsjZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtcG9pbnRlci5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtcG9pbnRlci5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5k MjQzY2YxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82 NC12bGEtcG9pbnRlci5leHAKLUBAIC0wLDAgKzEsNjYgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStpZiAhW2lzdGFyZ2V0ICJ4ODZfNjQtKi0qIl0gdGhlbiB7Ci0rICAgIHZlcmJv c2UgIlNraXBwaW5nIG92ZXIgZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLmV4cCB0ZXN0IG1h ZGUgb25seSBmb3IgeDg2XzY0LiIKLSsgICAgcmV0dXJuCi0rfQotKwotK3NldCB0ZXN0ZmlsZSB4 ODZfNjQtdmxhLXBvaW50ZXIKLStzZXQgc3JjYXNtZmlsZSAke3Rlc3RmaWxlfS1mb28uUwotK3Nl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9Ci0rc2V0IGJpbm9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfS1mb28ubwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2FzbWZpbGV9IiAiJHtiaW5vYmpmaWxlfSIgb2JqZWN0IHt9XSAhPSAiIiB9IHsKLSsgICAgdW50 ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9 Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0gJHti aW5vYmpmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0r ICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJu IC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIg JHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFp bl0gewotKyAgICB1bnRlc3RlZCB4ODZfNjQtdmxhLXBvaW50ZXIKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK2dkYl9icmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBl ID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyBhcnJheSIK LStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbMjZcXFxd IiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJ3aGF0aXMgKmFycmF5IiAidHlw ZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiB3aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJw dHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlICphcnJh eSIKLSsKLStnZGJfdGVzdCAicCAoKmFycmF5KVxbMVxdIiAiXFwkXFswLTlcXSA9IDEgJ1xcXFww MDEnIgotK2dkYl90ZXN0ICJwICgqYXJyYXkpXFsyXF0iICJcXCRcWzAtOVxdID0gMiAnXFxcXDAw MiciCi0rZ2RiX3Rlc3QgInAgKCphcnJheSlcWzNcXSIgIlxcJFxbMC05XF0gPSAzICdcXFxcMDAz JyIKLStnZGJfdGVzdCAicCAoKmFycmF5KVxbNFxdIiAiXFwkXFswLTlcXSA9IDQgJ1xcXFwwMDQn IgotKwotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha19oZXJlIgotKwotK2dkYl90 ZXN0ICJ3aGF0aXMgYXJyYXkiICJ0eXBlID0gY2hhciBcXChcXCpcXClcXFxbdmFyaWFibGVcXFxd IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9 IGNoYXIgXFwoXFwqXFwpXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCi0rCi0rZ2Ri X3Rlc3QgIndoYXRpcyAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiB3 aGF0aXMgKmFycmF5IgotK2dkYl90ZXN0ICJwdHlwZSAqYXJyYXkiICJ0eXBlID0gY2hhciBcXFxb NzhcXFxdIiAic2Vjb25kOiBwdHlwZSAqYXJyYXkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYtZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLjY2ZjdhMzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLWZvby5TCi1AQCAtMCwwICsxLDQ1NSBAQAotKwkuZmls ZQkieDg2XzY0LXZsYS10eXBlZGVmLmMiCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHBy b2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkuc2VjdGlvbgkuZGVidWdfaW5mbywiIixAcHJv Z2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2Jp dHMKLSsuTGRlYnVnX2xpbmUwOgotKwkudGV4dAotKy5MdGV4dDA6Ci0rLmdsb2JsIGZvbwotKwku dHlwZQlmb28sIEBmdW5jdGlvbgotK2ZvbzoKLSsuTEZCMjoKLSsJLmZpbGUgMSAieDg2XzY0LXZs YS10eXBlZGVmLmMiCi0rCS5sb2MgMSAyMiAwCi0rCXB1c2hxCSVyYnAKLSsuTENGSTA6Ci0rCW1v dnEJJXJzcCwgJXJicAotKy5MQ0ZJMToKLSsJc3VicQkkNjQsICVyc3AKLSsuTENGSTI6Ci0rCW1v dmwJJWVkaSwgLTM2KCVyYnApCi0rCS5sb2MgMSAyMiAwCi0rCW1vdnEJJXJzcCwgJXJheAotKwlt b3ZxCSVyYXgsIC00OCglcmJwKQotKwkubG9jIDEgMjMgMAotKwltb3ZsCS0zNiglcmJwKSwgJWVk eAotKwltb3ZzbHEJJWVkeCwlcmF4Ci0rCXN1YnEJJDEsICVyYXgKLSsJbW92cQklcmF4LCAtMjQo JXJicCkKLSsJLmxvYyAxIDI0IDAKLSsJbW92c2xxCSVlZHgsJXJheAotKwlhZGRxCSQxNSwgJXJh eAotKwlhZGRxCSQxNSwgJXJheAotKwlzaHJxCSQ0LCAlcmF4Ci0rCXNhbHEJJDQsICVyYXgKLSsJ c3VicQklcmF4LCAlcnNwCi0rCW1vdnEJJXJzcCwgLTU2KCVyYnApCi0rCW1vdnEJLTU2KCVyYnAp LCAlcmF4Ci0rCWFkZHEJJDE1LCAlcmF4Ci0rCXNocnEJJDQsICVyYXgKLSsJc2FscQkkNCwgJXJh eAotKwltb3ZxCSVyYXgsIC01NiglcmJwKQotKwltb3ZxCS01NiglcmJwKSwgJXJheAotKwltb3Zx CSVyYXgsIC0xNiglcmJwKQotKwkubG9jIDEgMjcgMAotKwltb3ZsCSQwLCAtNCglcmJwKQotKwlq bXAJLkwyCi0rLkwzOgotKwkubG9jIDEgMjggMAotKwltb3ZsCS00KCVyYnApLCAlZXNpCi0rCW1v dmwJLTQoJXJicCksICVlYXgKLSsJbW92bAklZWF4LCAlZWN4Ci0rCW1vdnEJLTE2KCVyYnApLCAl cmR4Ci0rCW1vdnNscQklZXNpLCVyYXgKLSsJbW92YgklY2wsICglcmR4LCVyYXgpCi0rCS5sb2Mg MSAyNyAwCi0rCWFkZGwJJDEsIC00KCVyYnApCi0rLkwyOgotKwltb3ZsCS00KCVyYnApLCAlZWF4 Ci0rCWNtcGwJLTM2KCVyYnApLCAlZWF4Ci0rCWpsCS5MMwotKwkubG9jIDEgMzAgMAotKwkuZ2xv YmwJYnJlYWtfaGVyZQotK2JyZWFrX2hlcmU6Ci0rCW1vdnEJLTE2KCVyYnApLCAlcmF4Ci0rCW1v dmIJJDAsICglcmF4KQotKwltb3ZxCS00OCglcmJwKSwgJXJzcAotKwkubG9jIDEgMzEgMAotKwls ZWF2ZQotKwlyZXQKLSsuTEZFMjoKLSsJLnNpemUJZm9vLCAuLWZvbwotKwkuc2VjdGlvbgkuZGVi dWdfZnJhbWUsIiIsQHByb2diaXRzCi0rLkxmcmFtZTA6Ci0rCS5sb25nCS5MRUNJRTAtLkxTQ0lF MAotKy5MU0NJRTA6Ci0rCS5sb25nCTB4ZmZmZmZmZmYKLSsJLmJ5dGUJMHgxCi0rCS5zdHJpbmcJ IiIKLSsJLnVsZWIxMjggMHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLmJ5dGUJ MHhjCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHg5MAotKwkudWxl YjEyOCAweDEKLSsJLmFsaWduIDgKLSsuTEVDSUUwOgotKy5MU0ZERTA6Ci0rCS5sb25nCS5MRUZE RTAtLkxBU0ZERTAKLSsuTEFTRkRFMDoKLSsJLmxvbmcJLkxmcmFtZTAKLSsJLnF1YWQJLkxGQjIK LSsJLnF1YWQJLkxGRTItLkxGQjIKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgot KwkuYnl0ZQkweGUKLSsJLnVsZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4 MgotKwkuYnl0ZQkweDQKLSsJLmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVs ZWIxMjggMHg2Ci0rCS5hbGlnbiA4Ci0rLkxFRkRFMDoKLSsJLnNlY3Rpb24JLmVoX2ZyYW1lLCJh IixAcHJvZ2JpdHMKLSsuTGZyYW1lMToKLSsJLmxvbmcJLkxFQ0lFMS0uTFNDSUUxCi0rLkxTQ0lF MToKLSsJLmxvbmcJMHgwCi0rCS5ieXRlCTB4MQotKwkuc3RyaW5nCSJ6UiIKLSsJLnVsZWIxMjgg MHgxCi0rCS5zbGViMTI4IC04Ci0rCS5ieXRlCTB4MTAKLSsJLnVsZWIxMjggMHgxCi0rCS5ieXRl CTB4MwotKwkuYnl0ZQkweGMKLSsJLnVsZWIxMjggMHg3Ci0rCS51bGViMTI4IDB4OAotKwkuYnl0 ZQkweDkwCi0rCS51bGViMTI4IDB4MQotKwkuYWxpZ24gOAotKy5MRUNJRTE6Ci0rLkxTRkRFMToK LSsJLmxvbmcJLkxFRkRFMS0uTEFTRkRFMQotKy5MQVNGREUxOgotKwkubG9uZwkuTEFTRkRFMS0u TGZyYW1lMQotKwkubG9uZwkuTEZCMgotKwkubG9uZwkuTEZFMi0uTEZCMgotKwkudWxlYjEyOCAw eDAKLSsJLmJ5dGUJMHg0Ci0rCS5sb25nCS5MQ0ZJMC0uTEZCMgotKwkuYnl0ZQkweGUKLSsJLnVs ZWIxMjggMHgxMAotKwkuYnl0ZQkweDg2Ci0rCS51bGViMTI4IDB4MgotKwkuYnl0ZQkweDQKLSsJ LmxvbmcJLkxDRkkxLS5MQ0ZJMAotKwkuYnl0ZQkweGQKLSsJLnVsZWIxMjggMHg2Ci0rCS5hbGln biA4Ci0rLkxFRkRFMToKLSsJLnRleHQKLSsuTGV0ZXh0MDoKLSsJLnNlY3Rpb24JLmRlYnVnX2xv YywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgotKwkucXVhZAkuTEZCMi0u THRleHQwCi0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3 NwotKwkuc2xlYjEyOCA4Ci0rCS5xdWFkCS5MQ0ZJMC0uTHRleHQwCi0rCS5xdWFkCS5MQ0ZJMS0u THRleHQwCi0rCS52YWx1ZQkweDIKLSsJLmJ5dGUJMHg3NwotKwkuc2xlYjEyOCAxNgotKwkucXVh ZAkuTENGSTEtLkx0ZXh0MAotKwkucXVhZAkuTEZFMi0uTHRleHQwCi0rCS52YWx1ZQkweDIKLSsJ LmJ5dGUJMHg3NgotKwkuc2xlYjEyOCAxNgotKwkucXVhZAkweDAKLSsJLnF1YWQJMHgwCi0rCS5z ZWN0aW9uCS5kZWJ1Z19pbmZvCi0rCS5sb25nCS5MZGVidWdfZW5kIC0gLkxkZWJ1Z19zdGFydAot Ky5MZGVidWdfc3RhcnQ6Ci0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19hYmJyZXYwCi0r CS5ieXRlCTB4OAotKwkudWxlYjEyOCAweDEKLSsJLmxvbmcJLkxBU0YyCi0rCS5ieXRlCTB4MQot KwkubG9uZwkuTEFTRjMKLSsJLmxvbmcJLkxBU0Y0Ci0rCS5xdWFkCS5MdGV4dDAKLSsJLnF1YWQJ LkxldGV4dDAKLSsJLmxvbmcJLkxkZWJ1Z19saW5lMAotKwkudWxlYjEyOCAweDIKLSsJLmJ5dGUJ MHgxCi0rCS5zdHJpbmcJImZvbyIKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTYKLSsJLmJ5dGUJ MHgxCi0rCS5xdWFkCS5MRkIyCi0rCS5xdWFkCS5MRkUyCi0rCS5sb25nCS5MTFNUMAotKwkubG9u ZwkweDgzCi0rCS51bGViMTI4IDB4MwotKwkubG9uZwkuTEFTRjUKLSsJLmJ5dGUJMHgxCi0rCS5i eXRlCTB4MTUKLSsJLmxvbmcJMHg4MwotKwkuYnl0ZQkweDIKLSsJLmJ5dGUJMHg5MQotKwkuc2xl YjEyOCAtNTIKLSsuTHRhZ190eXBlZGVmOgotKwkudWxlYjEyOCAweDQKLSsJLmxvbmcJLkxBU0Y2 Ci0rCS5ieXRlCTB4MQotKwkuYnl0ZQkweDE3Ci0rCS5sb25nCS5MdGFnX2FycmF5X3R5cGUgLSAu ZGVidWdfaW5mbwotKwkudWxlYjEyOCAweDUJLyogQWJicmV2IE51bWJlcjogNSAoRFdfVEFHX3Zh cmlhYmxlKSAqLwotKwkubG9uZwkuTEFTRjAKLSsJLmJ5dGUJMHgxCi0rCS5ieXRlCTB4MTgKLSsj aWYgMQotKwkubG9uZwkuTHRhZ190eXBlZGVmIC0gLmRlYnVnX2luZm8KLSsjZWxzZQotKwkvKiBE ZWJ1Z2dpbmcgb25seTogU2tpcCB0aGUgdHlwZWRlZiBpbmRpcmVjdGlvbi4gICovCi0rCS5sb25n CS5MdGFnX2FycmF5X3R5cGUgLSAuZGVidWdfaW5mbwotKyNlbmRpZgotKwkvKiBEV19BVF9sb2Nh dGlvbjogRFdfRk9STV9ibG9jazE6IHN0YXJ0ICovCi0rCS5ieXRlCTB4MwotKwkuYnl0ZQkweDkx Ci0rCS5zbGViMTI4IC0zMgotKyNpZiAwCi0rCS5ieXRlCTB4NgkvKiBEV19PUF9kZXJlZiAqLwot KyNlbHNlCi0rCS5ieXRlCTB4OTYJLyogRFdfT1Bfbm9wICovCi0rI2VuZGlmCi0rCS8qIERXX0FU X2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMTogZW5kICovCi0rCS51bGViMTI4IDB4NgotKwkuc3Ry aW5nCSJpIgotKwkuYnl0ZQkweDEKLSsJLmJ5dGUJMHgxOQotKwkubG9uZwkweDgzCi0rCS5ieXRl CTB4MgotKwkuYnl0ZQkweDkxCi0rCS5zbGViMTI4IC0yMAotKwkuYnl0ZQkweDAKLSsJLnVsZWIx MjggMHg3Ci0rCS5ieXRlCTB4NAotKwkuYnl0ZQkweDUKLSsJLnN0cmluZwkiaW50IgotKy5MdGFn X2FycmF5X3R5cGU6Ci0rCS51bGViMTI4IDB4OAkvKiBBYmJyZXYgTnVtYmVyOiA4IChEV19UQUdf YXJyYXlfdHlwZSkgKi8KLSsJLmxvbmcJMHhhMCArICgyZiAtIDFmKQkvKiBEV19BVF90eXBlOiBE V19GT1JNX3JlZjQgKi8KLSsJLmxvbmcJMHg5ZCArICgyZiAtIDFmKQkvKiBEV19BVF9zaWJsaW5n OiBEV19GT1JNX3JlZjQgKi8KLSsxOgkvKiBEV19BVF9kYXRhX2xvY2F0aW9uOiBEV19GT1JNX2Js b2NrMTogc3RhcnQgKi8KLSsJLmJ5dGUJMmYgLSAzZgkvKiBsZW5ndGggKi8KLSszOgotKwkuYnl0 ZQkweDk3CS8qIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MgKi8KLSsJLmJ5dGUJMHg2CS8qIERX X09QX2RlcmVmICovCi0rMjoJLyogRFdfQVRfZGF0YV9sb2NhdGlvbjogRFdfRk9STV9ibG9jazE6 IGVuZCAqLwotKwkudWxlYjEyOCAweDkKLSsJLmxvbmcJMHg5ZCArICgyYiAtIDFiKQkvKiBEV19B VF90eXBlOiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgzCi0rCS5ieXRlCTB4OTEKLSsJLnNs ZWIxMjggLTQwCi0rCS5ieXRlCTB4NgotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhhCi0rCS5i eXRlCTB4OAotKwkuYnl0ZQkweDcKLSsJLnVsZWIxMjggMHhiCi0rCS5ieXRlCTB4MQotKwkuYnl0 ZQkweDYKLSsJLmxvbmcJLkxBU0YxCi0rCS5ieXRlCTB4MAotKy5MZGVidWdfZW5kOgotKwkuc2Vj dGlvbgkuZGVidWdfYWJicmV2Ci0rCS51bGViMTI4IDB4MQotKwkudWxlYjEyOCAweDExCi0rCS5i eXRlCTB4MQotKwkudWxlYjEyOCAweDI1Ci0rCS51bGViMTI4IDB4ZQotKwkudWxlYjEyOCAweDEz Ci0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGVi MTI4IDB4MWIKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4MTEKLSsJLnVsZWIxMjggMHgx Ci0rCS51bGViMTI4IDB4MTIKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTAKLSsJLnVs ZWIxMjggMHg2Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgyCi0rCS51 bGViMTI4IDB4MmUKLSsJLmJ5dGUJMHgxCi0rCS51bGViMTI4IDB4M2YKLSsJLnVsZWIxMjggMHhj Ci0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLnVsZWIxMjggMHgzYQotKwkudWxl YjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgy NwotKwkudWxlYjEyOCAweGMKLSsJLnVsZWIxMjggMHgxMQotKwkudWxlYjEyOCAweDEKLSsJLnVs ZWIxMjggMHgxMgotKwkudWxlYjEyOCAweDEKLSsJLnVsZWIxMjggMHg0MAotKwkudWxlYjEyOCAw eDYKLSsJLnVsZWIxMjggMHgxCi0rCS51bGViMTI4IDB4MTMKLSsJLmJ5dGUJMHgwCi0rCS5ieXRl CTB4MAotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHg1Ci0rCS5ieXRlCTB4MAotKwkudWxl YjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS51bGViMTI4IDB4M2EKLSsJLnVsZWIxMjggMHhi Ci0rCS51bGViMTI4IDB4M2IKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4NDkKLSsJLnVs ZWIxMjggMHgxMwotKwkudWxlYjEyOCAweDIKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAot KwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0Ci0rCS51bGViMTI4IDB4MTYKLSsJLmJ5dGUJMHgw Ci0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxl YjEyOCAweGIKLSsJLnVsZWIxMjggMHgzYgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0 OQotKwkudWxlYjEyOCAweDEzCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHg1Ci0rCS51bGViMTI4IDB4MzQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MwotKwkudWxl YjEyOCAweGUKLSsJLnVsZWIxMjggMHgzYQotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgz YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHg0OQotKwkudWxlYjEyOCAweDEzCi0rCS51 bGViMTI4IDB4MgotKwkudWxlYjEyOCAweGEKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweDYKLSsJLnVsZWIxMjggMHgzNAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgz Ci0rCS51bGViMTI4IDB4OAotKwkudWxlYjEyOCAweDNhCi0rCS51bGViMTI4IDB4YgotKwkudWxl YjEyOCAweDNiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDQ5Ci0rCS51bGViMTI4IDB4 MTMKLSsJLnVsZWIxMjggMHgyCi0rCS51bGViMTI4IDB4YQotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJ MHgwCi0rCS51bGViMTI4IDB4NwotKwkudWxlYjEyOCAweDI0Ci0rCS5ieXRlCTB4MAotKwkudWxl YjEyOCAweGIKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4M2UKLSsJLnVsZWIxMjggMHhi Ci0rCS51bGViMTI4IDB4MwotKwkudWxlYjEyOCAweDgKLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4 MAotKwkudWxlYjEyOCAweDgJLyogQWJicmV2IE51bWJlcjogOCAoRFdfVEFHX2FycmF5X3R5cGUp ICovCi0rCS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDEKLSsJLnVsZWIxMjggMHg0OQkvKiBEV19B VF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4 IDB4MQkvKiBEV19BVF9zaWJsaW5nICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0 ICovCi0rCS51bGViMTI4IDB4NTAJLyogRFdfQVRfZGF0YV9sb2NhdGlvbiAqLwotKwkudWxlYjEy OCAweGEJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweDkKLSsJLnVsZWIxMjggMHgyMQotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHg0 OQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4IDB4MTMJLyogRFdfRk9STV9yZWY0ICovCi0r CS51bGViMTI4IDB4MmYKLSsJLnVsZWIxMjggMHhhCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAK LSsJLnVsZWIxMjggMHhhCi0rCS51bGViMTI4IDB4MjQKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4 IDB4YgotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgzZQotKwkudWxlYjEyOCAweGIKLSsJ LmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweGIKLSsJLnVsZWIxMjggMHgyNAot KwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhiCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAw eDNlCi0rCS51bGViMTI4IDB4YgotKwkudWxlYjEyOCAweDMKLSsJLnVsZWIxMjggMHhlCi0rCS5i eXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19wdWJu YW1lcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgxNgotKwkudmFsdWUJMHgyCi0rCS5sb25nCS5M ZGVidWdfaW5mbzAKLSsJLmxvbmcJMHhhOAotKwkubG9uZwkweDJkCi0rCS5zdHJpbmcJImZvbyIK LSsJLmxvbmcJMHgwCi0rCS5zZWN0aW9uCS5kZWJ1Z19hcmFuZ2VzLCIiLEBwcm9nYml0cwotKwku bG9uZwkweDJjCi0rCS52YWx1ZQkweDIKLSsJLmxvbmcJLkxkZWJ1Z19pbmZvMAotKwkuYnl0ZQkw eDgKLSsJLmJ5dGUJMHgwCi0rCS52YWx1ZQkweDAKLSsJLnZhbHVlCTB4MAotKwkucXVhZAkuTHRl eHQwCi0rCS5xdWFkCS5MZXRleHQwLS5MdGV4dDAKLSsJLnF1YWQJMHgwCi0rCS5xdWFkCTB4MAot Kwkuc2VjdGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEKLSsuTEFTRjA6Ci0rCS5zdHJp bmcJImFycmF5IgotKy5MQVNGNToKLSsJLnN0cmluZwkic2l6ZSIKLSsuTEFTRjM6Ci0rCS5zdHJp bmcJIng4Nl82NC12bGEtdHlwZWRlZi5jIgotKy5MQVNGNjoKLSsJLnN0cmluZwkiYXJyYXlfdCIK LSsuTEFTRjE6Ci0rCS5zdHJpbmcJImNoYXIiCi0rLkxBU0Y0OgotKwkuc3RyaW5nCSJnZGIuYXJj aCIKLSsuTEFTRjI6Ci0rCS5zdHJpbmcJIkdOVSBDIDQuMy4yIDIwMDgxMTA1IChSZWQgSGF0IDQu My4yLTcpIgotKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4z LjItNykiCi0rCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuYwotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLmI4MDljNGUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMKLUBAIC0wLDAgKzEsNDMgQEAKLSsv KiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAg IENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsK LSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaWYgMAotKwotK3ZvaWQK LStmb28gKGludCBzaXplKQotK3sKLSsgIHR5cGVkZWYgY2hhciBhcnJheV90W3NpemVdOwotKyAg YXJyYXlfdCBhcnJheTsKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkr KykKLSsgICAgYXJyYXlbaV0gPSBpOwotKwotKyAgYXJyYXlbMF0gPSAwOwkvKiBicmVhay1oZXJl ICovCi0rfQotKwotKyNlbHNlCi0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmb28gKDI2 KTsKLSsgIGZvbyAoNzgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKyNlbmRpZgotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLmIwNTQxMWUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAotQEAgLTAsMCArMSw2NCBA QAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwot KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBEV19BVF9kYXRhX2xvY2F0 aW9uIGFjY2Vzc2VkIHRocm91Z2ggRFdfVEFHX3R5cGVkZWYgaW50ZXJtZWRpYXRlLgotKwotK2lm ICFbaXN0YXJnZXQgIng4Nl82NC0qLSoiXSB0aGVuIHsKLSsgICAgdmVyYm9zZSAiU2tpcHBpbmcg b3ZlciBnZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwIHRlc3QgbWFkZSBvbmx5IGZvciB4 ODZfNjQuIgotKyAgICByZXR1cm4KLSt9Ci0rCi0rc2V0IHRlc3RmaWxlIHg4Nl82NC12bGEtdHlw ZWRlZgotK3NldCBzcmNhc21maWxlICR7dGVzdGZpbGV9LWZvby5TCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K LStzZXQgYmlub2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9LWZvby5vCi0r aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjYXNtZmlsZX0iICIk e2Jpbm9iamZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KLStpZiAgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSAke2Jpbm9iamZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Z2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHVu dGVzdGVkIHg4Nl82NC12bGEtdHlwZWRlZgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2Jy ZWFrcG9pbnQgImJyZWFrX2hlcmUiCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJy ZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAi Zmlyc3Q6IHdoYXRpcyBhcnJheSIKLSsKLStnZGJfdGVzdCAicHR5cGUgYXJyYXkiICJ0eXBlID0g Y2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIGFycmF5IgotKwotK2dkYl90ZXN0ICJwIGFy cmF5XFsxXF0iICJcXCRcWzAtOVxdID0gMSAnXFxcXDAwMSciCi0rZ2RiX3Rlc3QgInAgYXJyYXlc WzJcXSIgIlxcJFxbMC05XF0gPSAyICdcXFxcMDAyJyIKLStnZGJfdGVzdCAicCBhcnJheVxbM1xd IiAiXFwkXFswLTlcXSA9IDMgJ1xcXFwwMDMnIgotK2dkYl90ZXN0ICJwIGFycmF5XFs0XF0iICJc XCRcWzAtOVxdID0gNCAnXFxcXDAwNCciCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg ImJyZWFrX2hlcmUiCi0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBhcnJheSIgInR5cGUgPSBhcnJheV90 IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCi0rCi0rZ2RiX3Rlc3QgInB0eXBlIGFycmF5IiAidHlw ZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5cGUgYXJyYXkiCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9hcnJheWlkeC5jCi1pbmRleCA1OGJlMDhjLi4wNGUzNmNkIDEwMDY0NAotLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2FycmF5aWR4LmMKLUBAIC0xNyw2ICsxNywxMyBAQAotIAotIGludCBhcnJheVtdID0gezEsIDIs IDMsIDR9OwotIAotKyNpZmRlZiBfX0dOVUNfXwotK3N0cnVjdAotKyAgewotKyAgICBpbnQgYVsw XTsKLSsgIH0gdW5ib3VuZDsKLSsjZW5kaWYKLSsKLSBpbnQKLSBtYWluICh2b2lkKQotIHsKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi1pbmRleCAzNTQ1NGUzLi42MTQ0ZDM2IDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi1AQCAtNDksNCArNDksMTIgQEAgZ2RiX3Rl c3QgInByaW50IGFycmF5IiBcCi0gICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxcXFsxXFxc XSA9IDIsIFxcXFsyXFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwKLSAgICAgICAgICAiUHJp bnQgYXJyYXkgd2l0aCBhcnJheS1pbmRleGVzIG9uIgotIAotLQotK3NldCB0ZXN0ICJwIHVuYm91 bmQuYSA9PSAmdW5ib3VuZC5hXFswXF0iCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3Qg ewotKyAgICAtcmUgIiA9IDFcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAg IH0KLSsgICAgLXJlICJObyBzeW1ib2wgXCJ1bmJvdW5kXCIgaW4gY3VycmVudCBjb250ZXh0Llxy XG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXVuc3VwcG9ydGVkICIkdGVzdCAobm8gR0NDKSIKLSsgICAg fQotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1m aWVsZC1hZGRyZXNzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVs ZC1hZGRyZXNzLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZWI3Yjg1 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZh ci1maWVsZC1hZGRyZXNzLmMKLUBAIC0wLDAgKzEsMjAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAg IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LiAgKi8KLSsKLStzdHJ1Y3QgewotKyAgaW50IGZpZWxkOwotK30gc3RhdGlj c3RydWN0ID0geyAxIH07Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRl cm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVy bmFsLXZhci1maWVsZC1hZGRyZXNzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAw MDAwMDAuLjMzYzllOTQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCi1AQCAtMCwwICsxLDI2IEBACi0rIyBD b3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3QgaW50ZXJuYWwtdmFyLWZpZWxkLWFk ZHJlc3MKLStzZXQgYmluZmlsZSAke3Rlc3R9LngKLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS5jIiAiW3N0YW5kYXJkX291dHB1dF9maWxlICR7YmluZmls ZX1dIiBvYmplY3Qge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBj b21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3Rh cnQgJGJpbmZpbGUKLSsKLStnZGJfdGVzdCB7c2V0ICR2YXJzdHJ1Y3QgPSBzdGF0aWNzdHJ1Y3R9 Ci0rZ2RiX3Rlc3Qge3AgJHZhcnN0cnVjdC5maWVsZH0gIiA9IDEiCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLWZyYW1lLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41NzUwZjY4 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5j Ci1AQCAtMCwwICsxLDMxIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFy ICoqYXJndikKLSt7Ci0rICBjaGFyIHNbMiArIGFyZ2NdOwotKyAgdm9pZCAoKmYpIChjaGFyICop ID0gMDsKLSsKLSsgIG1lbXNldCAocywgMCwgc2l6ZW9mIChzKSk7Ci0rICBzWzBdID0gJ1gnOwot KwotKyAgZiAocyk7Ci0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEtZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJh bWUuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDc3MzZjNwotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuZXhwCi1A QCAtMCwwICsxLDM4IEBACi0rIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAot KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCB0ZXN0 ZmlsZSB2bGEtZnJhbWUKLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotKwotK2lmIHsgW3By ZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7ZXhlY3V0YWJsZX1dIH0gewotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLStzZXQgdGVzdCAiY29udGludWUiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRl c3QgewotKyAgICAtcmUgIkNvbnRpbnVpbmdcXC5cclxuXHJcblByb2dyYW0gcmVjZWl2ZWQgc2ln bmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdFxcLlxyXG4weDArIGluIFxcP1xcPyBcXChc XClcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJc clxuJGdkYl9wcm9tcHQgJCIgewotKwl1bnRlc3RlZCAke3Rlc3RmaWxlfS5leHAKLSsJcmV0dXJu Ci0rICAgIH0KLSt9Ci0rCi0rZ2RiX3Rlc3QgImJ0IGZ1bGwiICJcclxuICtzID0gXCJYXFxcXDAw MFwiXHJcbi4qIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJm bG93LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYzVkNWVlMAotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwotQEAgLTAsMCArMSwzMCBAQAot Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0r ICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlIDxzdGRs aWIuaD4KLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rewotKyAgaW50 IGFycmF5W2FyZ2NdOwotKwotKyAgYXJyYXlbMF0gPSBhcnJheVswXTsKLSsKLSsgIGFib3J0ICgp OwotKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdmxhLW92ZXJmbG93LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93 LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjI0YTYwOGYKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAot QEAgLTAsMCArMSwxMDkgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFdlIGNv dWxkIGNyYXNoIGluOgotKyMgIzAgIGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGJsPTB4MCkgYXQg Li4vLi4vZ2RiL2Jsb2NrLmM6NjkKLSsjICMxICBpbiBkd2FyZl9ibG9ja19nZXRfZnJhbWVfYmFz ZSAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzo5NwotKyMgICA5NwkgIGZyYW1lZnVu YyA9IGJsb2NrX2xpbmthZ2VfZnVuY3Rpb24gKGdldF9mcmFtZV9ibG9jayAoZnJhbWUsIE5VTEwp KTsKLSsjICMyICBpbiBleGVjdXRlX3N0YWNrX29wICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJl eHByLmM6NDk2Ci0rIyAjMyAgaW4gZHdhcmZfYmxvY2tfZXhlY19jb3JlICgpIGF0IC4uLy4uL2dk Yi9kd2FyZjJibG9jay5jOjE1NgotKyMgIzQgIGR3YXJmX2Jsb2NrX2V4ZWMgKC4uLikgYXQgLi4v Li4vZ2RiL2R3YXJmMmJsb2NrLmM6MjA2Ci0rIyAjNSAgaW4gcmFuZ2VfdHlwZV9jb3VudF9ib3Vu ZF9pbnRlcm5hbCAoLi4uKSBhdCAuLi8uLi9nZGIvZ2RidHlwZXMuYzoxNDMwCi0rIyAjNiAgaW4g Y3JlYXRlX2FycmF5X3R5cGUgKC4uLikgYXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6ODQwCi0rIyAu Li4KLSsjICMyMSBpbiBwc3ltdGFiX3RvX3N5bXRhYiAoLi4uKSBhdCAuLi8uLi9nZGIvc3ltZmls ZS5jOjI5MgotKyMgLi4uCi0rIyAjMjkgaW4gYmFja3RyYWNlX2NvbW1hbmRfMSAoKSBhdCAuLi8u Li9nZGIvc3RhY2suYzoxMjczCi0rCi0rc2V0IHRlc3RmaWxlIHZsYS1vdmVyZmxvdwotK3NldCBz aGZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1nZGIuc2gKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9Ci0r Ci0rc2V0IGYgW29wZW4gInxnZXRjb25mIFBBR0VTSVpFIiAiciJdCi0rZ2V0cyAkZiBwYWdlc2l6 ZQotK2Nsb3NlICRmCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0IHBpZF9v Zl9nZGIgW2V4cF9waWQgLWkgW2JvYXJkX2luZm8gaG9zdCBmaWxlaWRdXQotKwotK2lmIHsgW3J1 bnRvX21haW5dIDwgMCB9IHsKLSsgICAgdW50ZXN0ZWQgdmxhLW92ZXJmbG93Ci0rICAgIHJldHVy biAtMQotK30KLSsKLSsjIEdldCB0aGUgR0RCIG1lbW9yeSBzaXplIHdoZW4gd2Ugc3RheSBhdCBt YWluLgotKwotK3Byb2MgbWVtb3J5X3ZfcGFnZXNfZ2V0IHt9IHsKLSsgICAgZ2xvYmFsIHBpZF9v Zl9nZGIgcGFnZXNpemUKLSsgICAgc2V0IGZkIFtvcGVuICIvcHJvYy8kcGlkX29mX2dkYi9zdGF0 bSJdCi0rICAgIGdldHMgJGZkIGxpbmUKLSsgICAgY2xvc2UgJGZkCi0rICAgICMgbnVtYmVyIG9m IHBhZ2VzIG9mIHZpcnR1YWwgbWVtb3J5Ci0rICAgIHNjYW4gJGxpbmUgIiVkIiBkcnMKLSsgICAg cmV0dXJuICRkcnMKLSt9Ci0rCi0rc2V0IHBhZ2VzX2ZvdW5kIFttZW1vcnlfdl9wYWdlc19nZXRd Ci0rCi0rIyBzMzkweCB3aXRoIGdsaWJjLWRlYnVnaW5mby5zMzkweCBpbnN0YWxsZWQgdXNlZCBh cHByb3guIDE2TUIuCi0rc2V0IG1iX3Jlc2VydmUgNDAKLSt2ZXJib3NlIC1sb2cgInBhZ2VzX2Zv dW5kID0gJHBhZ2VzX2ZvdW5kLCBtYl9yZXNlcnZlID0gJG1iX3Jlc2VydmUiCi0rc2V0IGtiX2Zv dW5kIFtleHByICRwYWdlc19mb3VuZCAqICRwYWdlc2l6ZSAvIDEwMjRdCi0rc2V0IGtiX3Blcm1p dCBbZXhwciAka2JfZm91bmQgKyAxICogMTAyNCArICRtYl9yZXNlcnZlICogMTAyNF0KLSt2ZXJi b3NlIC1sb2cgImtiX2ZvdW5kID0gJGtiX2ZvdW5kLCBrYl9wZXJtaXQgPSAka2JfcGVybWl0Igot KwotKyMgQ3JlYXRlIHRoZSB1bGltaXQgd3JhcHBlci4KLStzZXQgZiBbb3BlbiAkc2hmaWxlICJ3 Il0KLStwdXRzICRmICIjISAvYmluL3NoIgotK3B1dHMgJGYgInVsaW1pdCAtdiAka2JfcGVybWl0 IgotK3B1dHMgJGYgImV4ZWMgJEdEQiBcIlwkQFwiIgotK2Nsb3NlICRmCi0rcmVtb3RlX2V4ZWMg aG9zdCAiY2htb2QgK3ggJHNoZmlsZSIKLSsKLStnZGJfZXhpdAotK3NldCBHREJvbGQgJEdEQgot K3NldCBHREIgIiRzaGZpbGUiCi0rZ2RiX3N0YXJ0Ci0rc2V0IEdEQiAkR0RCb2xkCi0rCi0rZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQot KwotK3NldCBwaWRfb2ZfZ2RiIFtleHBfcGlkIC1pIFtib2FyZF9pbmZvIGhvc3QgZmlsZWlkXV0K LSsKLSsjIENoZWNrIHRoZSBzaXplIGFnYWluIGFmdGVyIHRoZSBzZWNvbmQgcnVuLgotKyMgV2Ug bXVzdCBub3Qgc3RvcCBpbiBtYWluIGFzIGl0IHdvdWxkIGNhY2hlIGBhcnJheScgYW5kIG5ldmVy IGNyYXNoIGxhdGVyLgotKwotK2dkYl9ydW5fY21kCi0rCi0rdmVyYm9zZSAtbG9nICJrYl9mb3Vu ZCBiZWZvcmUgYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXpl IC8gMTAyNF0iCi0rCi0rZ2RiX3Rlc3QgIiIgIlByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR0FC UlQsIEFib3J0ZWQuLioiICJFbnRlciBhYm9ydCgpIgotKwotK3ZlcmJvc2UgLWxvZyAia2JfZm91 bmQgaW4gYWJvcnQoKSA9IFtleHByIFttZW1vcnlfdl9wYWdlc19nZXRdICogJHBhZ2VzaXplIC8g MTAyNF0iCi0rCi0rIyBgYWJvcnQnIGNhbiBnZXQgZXhwcmVzc2VkIGFzIGAqX19HSV9hYm9ydCcu Ci0rZ2RiX3Rlc3QgImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4gXFwoLioiICJC YWNrdHJhY2UgYWZ0ZXIgYWJvcnQoKSIKLSsKLSt2ZXJib3NlIC1sb2cgImtiX2ZvdW5kIGluIGJ0 IGFmdGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdlc2l6ZSAv IDEwMjRdIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uZTFmM2VkMQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEuYwotQEAgLTAsMCArMSw1NSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwotKwotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSt2b2lkCi0rbWFya2VyICh2b2lk KQotK3sKLSt9Ci0rCi0rdm9pZAotK2JhciAoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYywgaW50 IHNpemUpCi0rewotKyAgbWVtc2V0IChhLCAnMScsIHNpemUpOwotKyAgbWVtc2V0IChiLCAnMics IHNpemUpOwotKyAgbWVtc2V0IChjLCAnMycsIDQ4KTsKLSt9Ci0rCi0rdm9pZAotK2ZvbyAoaW50 IHNpemUpCi0rewotKyAgY2hhciB0ZW1wMVtzaXplXTsKLSsgIGNoYXIgdGVtcDNbNDhdOwotKwot KyAgdGVtcDFbc2l6ZSAtIDFdID0gJ1wwJzsKLSsgIHsKLSsgICAgY2hhciB0ZW1wMltzaXplXTsK LSsKLSsgICAgYmFyICh0ZW1wMSwgdGVtcDIsIHRlbXAzLCBzaXplKTsKLSsKLSsgICAgbWFya2Vy ICgpOwkvKiBicmVhay1oZXJlICovCi0rICB9Ci0rfQotKwotK2ludAotK21haW4gKHZvaWQpCi0r ewotKyAgZm9vICgyNik7Ci0rICBmb28gKDc4KTsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZGE3Mzc4 Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKLUBA IC0wLDAgKzEsNjIgQEAKLSsjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElm IG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZp bGUgdmxhCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0g IiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFb cnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB2bGEKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KLSsKLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStnZGJfdGVzdCAid2hh dGlzIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMg dGVtcDEiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJs ZVxcXF0iICJmaXJzdDogd2hhdGlzIHRlbXAyIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0 eXBlID0gY2hhciBcXFxbNDhcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVz dCAicHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRl bXAxIgotK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJm aXJzdDogcHR5cGUgdGVtcDIiCi0rZ2RiX3Rlc3QgInB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIg XFxcWzQ4XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIg IiA9ICcxJyA8cmVwZWF0cyAyNiB0aW1lcz4iICJmaXJzdDogcHJpbnQgdGVtcDEiCi0rZ2RiX3Rl c3QgInAgdGVtcDIiICIgPSAnMicgPHJlcGVhdHMgMjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRl bXAyIgotK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgImZp cnN0OiBwcmludCB0ZW1wMyIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWst aGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3Zhcmlh YmxlXFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAxIgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIi ICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAic2Vjb25kOiB3aGF0aXMgdGVtcDIiCi0r Z2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6 IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBc XFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMSIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDIi ICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMiIKLStnZGJfdGVz dCAicHR5cGUgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAic2Vjb25kOiBwdHlwZSB0 ZW1wMyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyA3OCB0aW1lcz4i ICJzZWNvbmQ6IHByaW50IHRlbXAxIgotK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBl YXRzIDc4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDIiCi0rZ2RiX3Rlc3QgInAgdGVtcDMi ICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMyIKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCi1uZXcgZmlsZSBtb2Rl IDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYWFjM2JhYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKLUBAIC0wLDAgKzEsMjQ2 IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcg aW5mb3JtYXRpb24gKi8KLSsKLSsvKiBXZSB3aWxsIGBicmVhayAqbWFpbicgYXQgdGhlIHZlcnkg Zmlyc3QgaW5zdHJ1Y3Rpb24uICAqLwotKyNkZWZpbmUgbWFpbl9sZW5ndGggMQotKwotKwkuc2Vj dGlvbgkuZGF0YQotK3ZhcmRhdGE6Ci0rCS8qIFNlZSBEV19PUF9saXQzICsgMSAoMC1iYXNlZCku ICAqLwotKwkuc3RyaW5nCQkic2Vlbm5vdHNlZW4iCi0rCi0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZv Ci0rLkxjdTFfYmVnaW46Ci0rCS40Ynl0ZQkJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJLyogTGVu Z3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCQkyCQkJ LyogRFdBUkYgdmVyc2lvbiBudW1iZXIgKi8KLSsJLjRieXRlCQkuTGRlYnVnX2FiYnJldjAJCS8q IE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAqLwotKwkuYnl0ZQkJNAkJCS8qIFBvaW50ZXIg U2l6ZSAoaW4gYnl0ZXMpICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOAkxCQkJLyog QWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS40Ynl0ZQkJLkxwcm9kdWNlcgkJLyog RFdfQVRfcHJvZHVjZXIgKi8KLSsJLyogVXNlIEMrKyB0byBleHBsb2l0IGEgYnVnIGluIHBhcnNp bmcgRFdfQVRfbmFtZSAiIi4gICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMr KykgLSAgKi8KLSsJLjRieXRlCQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCi0rCS5ieXRlCQlt YWluX2xlbmd0aAkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwotKy5MYXJyYXlfdHlwZToKLSsJLnVs ZWIxMjgJMgkJCS8qIEFiYnJldjogRFdfVEFHX2FycmF5X3R5cGUgKi8KLSsJLjRieXRlCQkuTGNo YXJfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4CTMJCQkv KiBBYmJyZXY6IERXX1RBR19zdWJyYW5nZV90eXBlICovCi0rCS40Ynl0ZQkJLkx1aW50X3R5cGUt LkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkJMAkJCS8qIERXX0FUX2xvd2Vy X2JvdW5kICovCi0rCS40Ynl0ZQkJLkxsZW5fdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVy X2JvdW5kICovCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwot KwkvKiBEV19BVF91cHBlcl9ib3VuZCBpcyByZWZlcmVuY2luZyBhbiBvcHRpbWl6ZWQtb3V0IHZh cmlhYmxlLiAgKi8KLSsuTGFycmF5Yl90eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBE V19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8q IERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJh bmdlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVpbnRfdHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90 eXBlICovCi0rCS5ieXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KLSsJLjRieXRlCQku TGxlbmJfdmFyLS5MY3UxX2JlZ2luCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS5ieXRlCQkw CQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKwkvKiBEV19BVF91cHBlcl9ib3Vu ZCBpcyByZWZlcmVuY2luZyByZWdpc3Rlci4gICovCi0rLkxhcnJheXJlZ190eXBlOgotKwkudWxl YjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuNGJ5dGUJCS5MY2hh cl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8q IEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aCBibG9jayAqLwotKwkuNGJ5dGUJCS5M dWludF90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTAJCQkvKiBE V19BVF9sb3dlcl9ib3VuZCAqLwotKwkuYnl0ZQkJMmYgLSAxZgkJCS8qIERXX0FUX3VwcGVyX2Jv dW5kICovCi0rMToJLmJ5dGUJCTB4NTAJCQkvKiBEV19PUF9yZWcwICovCi0rMjoKLSsJLmJ5dGUJ CTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgZGllICovCi0rCi0rLkx1aW50X3R5cGU6Ci0rCS51 bGViMTI4CTQJCQkvKiBBYmJyZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLjRieXRlCQkuTHVp bnRfc3RyCQkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCQk0CQkJLyogRFdfQVRfYnl0ZV9zaXpl ICovCi0rCS5ieXRlCQk3CQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsKLSsuTGNoYXJfdHlwZToK LSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldjogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuNGJ5dGUJ CS5MY2hhcl9zdHIJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRl X3NpemUgKi8KLSsJLmJ5dGUJCTYJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwotKy5MbGVuX3Zh cjoKLSsJLnVsZWIxMjgJNQkJCS8qIEFiYnJldjogRFdfVEFHX3ZhcmlhYmxlIGFydGlmaWNpYWwg Ki8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rCS40Ynl0ZQkJLkx1aW50 X3R5cGUtLkxjdTFfYmVnaW4JLyogRFdfQVRfdHlwZSAqLwotKwkuNGJ5dGUJCS5MbGVuX2xvY2xp c3QtLkxsb2NsaXN0CS8qIERXX0FUX2xvY2F0aW9uICovCi0rCi0rCS8qIG9wdGltaXplZC1vdXQg dmFyaWFibGUgZm9yIGJfc3RyaW5nLiAgKi8KLSsuTGxlbmJfdmFyOgotKwkudWxlYjEyOAk3CQkJ LyogQWJicmV2OiBEV19UQUdfdmFyaWFibGUgYXJ0aWZpY2lhbCBubyBEV19BVF9sb2NhdGlvbiAq LwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJLjRieXRlCQkuTHVpbnRf dHlwZS0uTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4CTYJCQkvKiBB YmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQkiYV9z dHJpbmciCQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2Jl Z2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlv biAqLwotKzE6CS5ieXRlCQkzCQkJLyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0 YQkJCS8qICAgPGFkZHI+ICovCi0rMjoKLSsKLSsJLyogRFdfQVRfdXBwZXJfYm91bmQgaXMgcmVm ZXJlbmNpbmcgYW4gb3B0aW1pemVkLW91dCB2YXJpYWJsZS4gICovCi0rCS51bGViMTI4CTYJCQkv KiBBYmJyZXY6IERXX1RBR192YXJpYWJsZSBEV19GT1JNX3N0cmluZyAqLwotKwkuc3RyaW5nCQki Yl9zdHJpbmciCQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheWJfdHlwZS0uTGN1 MV9iZWdpbiAvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9j YXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZh cmRhdGEJCQkvKiAgIDxhZGRyPiAqLwotKzI6Ci0rCi0rCS8qIERXX0FUX3VwcGVyX2JvdW5kIGlz IHJlZmVyZW5jaW5nIHJlZ2lzdGVyLiAgKi8KLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldjogRFdf VEFHX3ZhcmlhYmxlIERXX0ZPUk1fc3RyaW5nICovCi0rCS5zdHJpbmcJCSJyZWdfc3RyaW5nIgkJ LyogRFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJCS5MYXJyYXlyZWdfdHlwZS0uTGN1MV9iZWdpbiAv KiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8K LSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdfT1BfYWRkciAqLwotKwkuNGJ5dGUJCXZhcmRhdGEJCQkv KiAgIDxhZGRyPiAqLwotKzI6Ci0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9m IENVICovCi0rLkxjdTFfZW5kOgotKwotKwkuc2VjdGlvbgkuZGVidWdfbG9jCi0rLkxsb2NsaXN0 OgotKy5MbGVuX2xvY2xpc3Q6Ci0rCS40Ynl0ZQkwCQkJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFk ZHJlc3MKLSsJLjRieXRlCW1haW5fbGVuZ3RoCQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MK LSsJLnZhbHVlCTJmLTFmCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rMToJLmJ5dGUJMHgz MwkjIERXX09QX2xpdDMKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rMjoKLSsJ LnF1YWQJMHgwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QyKQotKwku cXVhZAkweDAJIyBMb2NhdGlvbiBsaXN0IHRlcm1pbmF0b3IgZW5kICgqLkxMU1QyKQotKwotKwku c2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxkZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOAkxCQkJ LyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3Vu aXQgKi8KLSsJLmJ5dGUJCTB4MQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDI1 CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHhlCQkJLyogRFdfRk9STV9zdHJw ICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkudWxlYjEyOAkw eGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3df cGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4 MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0 YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51 bGViMTI4CTB4MQkJCS8qIFRBRzogRFdfVEFHX2FycmF5X3R5cGUgKi8KLSsJLmJ5dGUJCTB4MQkJ CS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAq LwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51 bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDIxCQkJLyogRFdfVEFH X3N1YnJhbmdlX3R5cGUgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51 bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19G T1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyMgkJCS8qIERXX0FUX2xvd2VyX2JvdW5kICovCi0r CS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgyZgkJCS8q IERXX0FUX3VwcGVyX2JvdW5kICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQg Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGVi MTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19j aGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4 CTB4ZQkJCS8qIERXX0ZPUk1fc3RycCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19BVF9ieXRl X3NpemUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEy OAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9S TV9kYXRhMSAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgw CQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAk1CQkJLyogQWJicmV2IGNvZGUgKi8K LSsJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkJMHgwCQkJ Lyogbm9fY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzNAkJCS8qIERXX0FUX2FydGlmaWNpYWwg Ki8KLSsJLnVsZWIxMjgJMHgwYwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkudWxlYjEyOAkweDQ5 CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICov Ci0rCS51bGViMTI4CTB4MDIJCQkvKiBEV19BVF9sb2NhdGlvbiAqLwotKwkudWxlYjEyOAkweDA2 CQkJLyogRFdfRk9STV9kYXRhNCAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAk2CQkJLyogQWJi cmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgzNAkJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwku Ynl0ZQkJMHgwCQkJLyogbm9fY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRf bmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEy OAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9y ZWY0ICovCi0rCS51bGViMTI4CTB4MgkJCS8qIERXX0FUX2xvY2F0aW9uICovCi0rCS51bGViMTI4 CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9y ICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTcJCQkv KiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdfVEFHX3ZhcmlhYmxlICov Ci0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDM0CQkJLyog RFdfQVRfYXJ0aWZpY2lhbCAqLwotKwkudWxlYjEyOAkweDBjCQkJLyogRFdfRk9STV9mbGFnICov Ci0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkv KiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBj b2RlICovCi0rCS51bGViMTI4CTB4MjEJCQkvKiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRoIGJs b2NrICovCi0rCS5ieXRlCQkweDAJCQkvKiBubyBjaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDQ5 CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICov Ci0rCS51bGViMTI4CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkw eGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4MmYJCQkvKiBEV19BVF91cHBl cl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGEJCQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKy8qIFN0cmluZyB0YWJs ZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfc3RyCi0rLkxwcm9kdWNlcjoKLSsJLnN0cmluZwkJIkdO VSBDIDMuMy4zIgotKy5MY2hhcl9zdHI6Ci0rCS5zdHJpbmcJCSJjaGFyIgotKy5MdWludF9zdHI6 Ci0rCS5zdHJpbmcJCSJ1bnNpZ25lZCBpbnQiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItYm91bmQtbG9jbGlzdC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi44MTVlZDkzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCi1AQCAtMCwwICsxLDU0IEBACi0rIyBDb3B5cmlnaHQg MjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCi0rCi0rIyBUZXN0IHByaW50aW5nIHZhcmlhYmxlIHdpdGggZHluYW1pYyBi b3VuZHMgd2hpY2ggcmVmZXJlbmNlIGEgZGlmZmVyZW50Ci0rIyAoYXJ0aWZpY2lhbCBpbiB0aGUg R0NDIGNhc2UpIHZhcmlhYmxlIGNvbnRhaW5pbmcgbG9jbGlzdCBhcyBpdHMgbG9jYXRpb24uCi0r IyBUaGlzIHRlc3RjYXNlIHVzZXMgdmFsdWUgKG5vdCBhZGRyZXNzKSBvZiB0aGUgcmVmZXJlbmNl ZCB2YXJpYWJsZToKLSsjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/ aWQ9NDM3NjIKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGlj aCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGlu ZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1l YWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVy biAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSBkdzItYm91bmQtbG9jbGlzdAotK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9IFtsaXN0ICR7dGVzdGZp bGV9LlMgbWFpbi5jXSB7fV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFZlcmlmeSBp dCBiZWhhdmVzIGF0IGxlYXN0IGFzIGFuIHVuYm91bmQgYXJyYXkgd2l0aG91dCBpbmZlcmlvci4K LSsKLStnZGJfdGVzdCAicCBhX3N0cmluZyIgeyA9IDB4WzAtOWEtZl0rICJzZWVubm90c2VlbiJ9 Ci0rZ2RiX3Rlc3QgInB0eXBlIGFfc3RyaW5nIiB7dHlwZSA9IGNoYXIgXFtcXX0KLSsKLSsjIE5v dCBydW50b19tYWluIGFzIGR3Mi1ib3VuZC1sb2NsaXN0LlMgaGFuZGxlcyBvbmx5IHRoZSBmaXJz dCBieXRlIG9mIG1haW4uCi0raWYgIVtydW50byAiKm1haW4iXSB7Ci0rICAgIHJldHVybiAtMQot K30KLSsKLStnZGJfdGVzdCAicCBhX3N0cmluZyIgeyA9ICJzZWVuIn0KLStnZGJfdGVzdCAicHR5 cGUgYV9zdHJpbmciIHt0eXBlID0gY2hhciBcWzRcXX0KLSsKLStnZGJfdGVzdCAicCBiX3N0cmlu ZyIgeyA9ICgweFswLTlhLWZdKyApPyJzZWVubm90c2VlbiJ9Ci0rZ2RiX3Rlc3QgInB0eXBlIGJf c3RyaW5nIiB7dHlwZSA9IGNoYXIgXFtcXX0KLSsKLSsjIFRoZSByZWdpc3RlciBjb250YWlucyB1 bnByZWRpY3RhYmxlIHZhbHVlIC0gdGhlIGFycmF5IHNpemUuCi0rZ2RiX3Rlc3QgInB0eXBlIHJl Z19zdHJpbmciIHt0eXBlID0gY2hhciBcWy0/WzAtOV0rXF19Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1zdHJpcHBlZC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u MWYwMmQ5MAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1zdHJpcHBlZC5jCi1AQCAtMCwwICsxLDQyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIAotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK LSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKwotKy8qIFRoZSBmdW5jdGlvbiBg ZnVuYzEnIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBkZWJ1ZyBpbmZvIG9uIG9mZnNldCA+IDA7Ci0r ICAgKERXX1VOU05EIChhdHRyKSkuICBUaGlzIGlzIHRoZSByZWFzb24gb2YgYGZ1bmMwJyBleGlz dGVuY2UuICAqLwotKwotK3ZvaWQKLStmdW5jMChpbnQgYSwgaW50IGIpCi0rewotK30KLSsKLSsv KiBgZnVuYzEnIGJlaW5nIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBzb21lIGFyZ3VtZW50cyB0byBk dW1wLiAgKi8KLSsKLSt2b2lkCi0rZnVuYzEoaW50IGEsIGludCBiKQotK3sKLSsgIGZ1bmMwIChh LGIpOwotK30KLSsKLStpbnQKLSttYWluKHZvaWQpCi0rewotKyAgZnVuYzEgKDEsIDIpOwotKyAg cmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt c3RyaXBwZWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xYzZlODRhCi0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cAotQEAg LTAsMCArMSw3OSBAQAotKyMgQ29weXJpZ2h0IDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0r Ci0rIyBNaW5pbWFsIERXQVJGLTIgdW5pdCB0ZXN0Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkg YmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yLgotKyMgRm9yIG5vdyBwaWNr IGEgc2FtcGxpbmcgb2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4 Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSot ZWxmKl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJn ZXQgYXJtLSotZWFiaSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewot KyAgICByZXR1cm4gMCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLXN0cmlwcGVkIgotK3Nl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9LngKLSsKLStyZW1vdGVfZXhlYyBidWlsZCAicm0gLWYgJHtiaW5maWxlfSIK LSsKLSsjIGdldCB0aGUgdmFsdWUgb2YgZ2NjX2NvbXBpbGVkCi0raWYgW2dldF9jb21waWxlcl9p bmZvICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgVGhpcyB0ZXN0IGNh biBvbmx5IGJlIHJ1biBvbiBnY2MgYXMgd2UgdXNlIGFkZGl0aW9uYWxfZmxhZ3M9RklYTUUKLStp ZiB7JGdjY19jb21waWxlZCA9PSAwfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK2lmICB7IFtn ZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIg ZXhlY3V0YWJsZSB7ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZ2dkYjN9XSAhPSAiIiB9IHsKLSsg ICAgcmV0dXJuIC0xCi0rfQotKwotK3JlbW90ZV9leGVjIGJ1aWxkICJvYmpjb3B5IC1SIC5kZWJ1 Z19sb2MgJHtiaW5maWxlfSIKLStzZXQgc3RyaXBfb3V0cHV0IFtyZW1vdGVfZXhlYyBidWlsZCAi b2JqZHVtcCAtaCAke2JpbmZpbGV9Il0KLSsKLStzZXQgdGVzdCAic3RyaXBwaW5nIHRlc3QgZmls ZSBwcmVzZXJ2YXRpb24iCi0raWYgWyByZWdleHAgIi5kZWJ1Z19pbmZvICIgJHN0cmlwX291dHB1 dF0gIHsKLSsgICAgcGFzcyAiJHRlc3QgKC5kZWJ1Z19pbmZvIHByZXNlcnZlZCkiCi0rfSBlbHNl IHsKLSsgICAgZmFpbCAiJHRlc3QgKC5kZWJ1Z19pbmZvIGdvdCBhbHNvIHN0cmlwcGVkKSIKLSt9 Ci0rCi0rc2V0IHRlc3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgZnVuY3Rpb25hbGl0eSIKLStpZiBb IHJlZ2V4cCAiLmRlYnVnX2xvYyAiICRzdHJpcF9vdXRwdXRdICB7Ci0rICAgIGZhaWwgIiR0ZXN0 ICguZGVidWdfbG9jIHN0aWxsIHByZXNlbnQpIgotK30gZWxzZSB7Ci0rICAgIHBhc3MgIiR0ZXN0 ICguZGVidWdfbG9jIHN0cmlwcGVkKSIKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStn ZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9 Ci0rCi0rIyBGb3IgQyBwcm9ncmFtcywgInN0YXJ0IiBzaG91bGQgc3RvcCBpbiBtYWluKCkuCi0r Ci0rZ2RiX3Rlc3QgInN0YXJ0IiBcCi0rICAgICAgICAgIi4qbWFpbiBcXChcXCkgYXQgLioiIFwK LSsgICAgICAgICAic3RhcnQiCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICAgICAgICAiZnVuYy4q IFxcKC4qXFwpIGF0IC4qIiBcCi0rICAgICAgICAgInN0ZXAiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZmNkZDg0Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0 YS1sb2NhdGlvbi5TCi1AQCAtMCwwICsxLDgzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4gICovCi0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsJLnNlY3Rpb24g LmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0ZQku TGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8K LSsuTGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5 dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KLSsJ LmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGVi MTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5hc2NpaQkiZHcy LXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5jXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmFz Y2lpCSJHTlUgQyA0LjMuMlwwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTEJCQkJ LyogRFdfQVRfbGFuZ3VhZ2UgKEMpICovCi0rCi0rLkx0eXBlX3VjaGFyOgotKwkudWxlYjEyOAky CQkJLyogQWJicmV2OiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSsJLmFzY2lpCQkic29tZV9z dHJ1Y3RcMCIJCS8qIERXX0FUX25hbWUgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjog RFdfVEFHX21lbWJlciAqLwotKwkuYXNjaWkJCSJmaWVsZFwwIgkJLyogRFdfQVRfbmFtZSAqLwot KwkuYnl0ZQkJMAkJCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCi0rCi0rCS5ieXRl CQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIHNvbWVfc3RydWN0ICovCi0rCi0rCS5ieXRlCQkw CQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rCi0rLkxjdTFfZW5kOgotKwotKy8qIEFi YnJldiB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2lu OgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8q IERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8K LSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBE V19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8K LSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJ CS8qIERXX0FUX2xhbmd1YWdlICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEg Ki8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRl cm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGVi MTI4CTB4MTMJCQkvKiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBo YXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxl YjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAkz CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19tZW1iZXIg Ki8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyog RFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwku dWxlYjEyOAkweDM4CQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsJLnVsZWIx MjgJMHgwYgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJ CS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1s b2NhdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXIt ZGF0YS1sb2NhdGlvbi5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5i YzM1MjA5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5leHAKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIENv cHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24g dGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBp Y2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGlu dXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3Rh cmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7 Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJl ci1kYXRhLWxvY2F0aW9uIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQgYmluZmls ZSAke3Rlc3RmaWxlfS54Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJk aXJ9LyR7c3JjZmlsZX0iICJbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtiaW5maWxlfV0iIG9iamVj dCB7bm9kZWJ1Z31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVz dGFydCAkYmluZmlsZQotKwotK2dkYl90ZXN0ICJwdHlwZSBzdHJ1Y3Qgc29tZV9zdHJ1Y3QiICJ0 eXBlID0gc3RydWN0IHNvbWVfc3RydWN0IHtcW1xyXG4gXHRcXSp2b2lkIGZpZWxkO1xbXHJcbiBc dFxdKn0iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5n ZS1uby10eXBlLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5 cGUuUwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjlkYmJmM2MKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8t dHlwZS5TCi1AQCAtMCwwICsxLDEyMSBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwotKwotKy8qIERlYnVnIGluZm9ybWF0aW9uICovCi0rCi0rCS5zZWN0aW9uCS5kYXRh Ci0rdmFyZGF0YToKLSsJLnJlcHQJCTEyOQotKwkuYXNjaWkJCSJ4IgotKwkuZW5kcgotKwkuYXNj aWkJCSJVTlNFRU5cMCIKLSsKLSsJLnNlY3Rpb24JLmRlYnVnX2luZm8KLSsuTGN1MV9iZWdpbjoK LSsJLjRieXRlCQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkvKiBMZW5ndGggb2YgQ29tcGlsYXRp b24gVW5pdCAqLwotKy5MY3UxX3N0YXJ0OgotKwkuMmJ5dGUJCTIJCQkvKiBEV0FSRiB2ZXJzaW9u IG51bWJlciAqLwotKwkuNGJ5dGUJCS5MZGVidWdfYWJicmV2MAkJLyogT2Zmc2V0IEludG8gQWJi cmV2LiBTZWN0aW9uICovCi0rCS5ieXRlCQk0CQkJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykg Ki8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGViMTI4CTEJCQkvKiBBYmJyZXY6IERXX1RBR19j b21waWxlX3VuaXQgKi8KLSsJLmFzY2lpCQkiR05VIEMgMy4zLjNcMCIJCS8qIERXX0FUX3Byb2R1 Y2VyICovCi0rCS5ieXRlCQkyCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpIC0gICovCi0rCi0rLkxh cnJheV90eXBlOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfYXJyYXlfdHlwZSAq LwotKwkuNGJ5dGUJCS5MY2hhcl90eXBlLS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsK LSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnJhbmdlX3R5cGUgd2l0aG91dCBE V19BVF90eXBlICovCi0rCS5ieXRlCQkwCQkJLyogRFdfQVRfbG93ZXJfYm91bmQgKi8KLSsJLmJ5 dGUJCTEyOAkJCS8qIERXX0FUX3VwcGVyX2JvdW5kICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5k IG9mIGNoaWxkcmVuIG9mIGRpZSAqLwotKwotKy5MY2hhcl90eXBlOgotKwkudWxlYjEyOAk0CQkJ LyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5hc2NpaQkJImNoYXJcMCIJCS8qIERX X0FUX25hbWUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJ CTYJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwotKwkudWxlYjEyOAk2CQkJLyogQWJicmV2OiBE V19UQUdfdmFyaWFibGUgRFdfRk9STV9zdHJpbmcgKi8KLSsJLmFzY2lpCQkibm90eXBlX3N0cmlu Z1wwIgkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkxhcnJheV90eXBlLS5MY3UxX2JlZ2lu IC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTJmIC0gMWYJCQkvKiBEV19BVF9sb2NhdGlvbiAq LwotKzE6CS5ieXRlCQkzCQkJLyogICBEV19PUF9hZGRyICovCi0rCS40Ynl0ZQkJdmFyZGF0YQkJ CS8qICAgPGFkZHI+ICovCi0rMjoKLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4g b2YgQ1UgKi8KLSsuTGN1MV9lbmQ6Ci0rCi0rCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKLSsuTGRl YnVnX2FiYnJldjA6Ci0rCS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEy OAkweDExCQkJLyogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYnl0ZQkJMHgxCQkJLyogaGFz X2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwku dWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyog RFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwot KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLwotKwotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJ MHgxCQkJLyogVEFHOiBEV19UQUdfYXJyYXlfdHlwZSAqLwotKwkuYnl0ZQkJMHgxCQkJLyogRFdf Y2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51 bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJ NAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90 eXBlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov Ci0rCS51bGViMTI4CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOAkweGIJ CQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGlu ZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0r CS51bGViMTI4CTYJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDM0CQkJLyogRFdf VEFHX3ZhcmlhYmxlICovCi0rCS5ieXRlCQkweDAJCQkvKiBub19jaGlsZHJlbiAqLwotKwkudWxl YjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1f c3RyaW5nICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4 CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9j YXRpb24gKi8KLSsJLnVsZWIxMjgJMHhhCQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsKLSsJLnVsZWIxMjgJOAkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjEJCQkv KiBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRob3V0IERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTB4 MAkJCS8qIG5vIGNoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MjIJCQkvKiBEV19BVF9sb3dlcl9i b3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4 CTB4MmYJCQkvKiBEV19BVF91cHBlcl9ib3VuZCAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19G T1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICov Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdWJyYW5nZS1uby10 eXBlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3VicmFuZ2Utbm8tdHlwZS5l eHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jZWM2NzNjCi0tLS0gL2Rl di9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN1YnJhbmdlLW5vLXR5 cGUuZXhwCi1AQCAtMCwwICsxLDM5IEBACi0rIyBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rbG9h ZF9saWIgZHdhcmYuZXhwCi0rCi0rIyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19i dWcuY2dpP2lkPTgwNjkyMAotKyMgcmVhZF9zdWJyYW5nZV90eXBlIDxUWVBFX0NPREUgKGJhc2Vf dHlwZSkgPT0gVFlQRV9DT0RFX1ZPSUQ+IHJlaW5pdGlhbGl6YXRpb24KLSsjIG9mIEJBU0VfVFlQ RSB3YXMgZG9uZSB0b28gbGF0ZSwgaXQgYWZmZWN0cyBEV19UQUdfc3VicmFuZ2VfdHlwZSB3aXRo b3V0Ci0rIyBzcGVjaWZpZWQgRFdfQVRfdHlwZSwgcHJlc2VudCBvbmx5IGluIFhMRiBwcm9kdWNl ZCBjb2RlLgotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRzIHdoaWNo IHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KLStpZiB7IVtkd2FyZjJfc3VwcG9ydF19IHsK LSsgICAgcmV0dXJuIDAgIAotK30KLSsKLStzZXQgdGVzdGZpbGUgZHcyLXN1YnJhbmdlLW5vLXR5 cGUKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0Zmls ZX0ueAotK3NldCBiaW5maWxlIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2V4ZWN1dGFibGV9XQot KwotK2lmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBvYmplY3Qge31dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0r Y2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotKwotK2dkYl90ZXN0ICJwdHlwZSBub3R5cGVfc3Ry aW5nIiB7dHlwZSA9IGNoYXIgXFsxMjlcXX0KLStnZGJfdGVzdCAicCBub3R5cGVfc3RyaW5nIiAi ID0gJ3gnIDxyZXBlYXRzIDEyOSB0aW1lcz4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k d2FyZi1zdHJpZGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDdi OGJlYQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2Fy Zi1zdHJpZGUuZXhwCi1AQCAtMCwwICsxLDQyIEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IyAKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIyAKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExLTEzMDcsIFVTQS4gIAotKwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBw YXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAgQXJyYXkgZWxlbWVudCBzdHJpZGUgbXVzdCBub3Qg YmUKLSsjIHNwZWNpZmllZCBpbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJl ciBvZiBieXRlcyBpbnN0ZWFkLgotKyMgT3JpZ2luYWwgcHJvYmxlbToKLSsjIChnZGIpIHAgYzQw cHQoMSkKLSsjICQxID0gJzAtaGVsbG8nLCAnICcgPHJlcGVhdHMgMzMgdGltZXM+Ci0rIyAoZ2Ri KSBwIGM0MHB0KDIpCi0rIyB3YXJuaW5nOiBGb3J0cmFuIGFycmF5IHN0cmlkZSBub3QgZGl2aXNp YmxlIGJ5IHRoZSBlbGVtZW50IHNpemUKLSsKLStzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCi0r c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGlu ZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjkwfV0gfSB7 Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7Ci0rICAg IHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAgICBjb250aW51 ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVy ZSJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiICIuKmJyZWFrLWhl cmUuKiIKLStnZGJfdGVzdCAicCBjNDBwdCgxKSIgIiA9ICcwLWhlbGxvLioiCi0rZ2RiX3Rlc3Qg InAgYzQwcHQoMikiICIgPSAnMS1oZWxsby4qIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHdhcmYtc3RyaWRlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmU0 OTJiM2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdh cmYtc3RyaWRlLmY5MAotQEAgLTAsMCArMSw0MCBAQAotKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91 bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAy MTExLTEzMDcsIFVTQS4KLSshCi0rISBGaWxlIHdyaXR0ZW4gYnkgQWxhbiBNYXRzdW9rYS4KLSsK LStwcm9ncmFtIHJlcHJvCi0rCi0rICB0eXBlIHNtYWxsX3N0cmlkZQotKyAgICAgY2hhcmFjdGVy KjQwIGxvbmdfc3RyaW5nCi0rICAgICBpbnRlZ2VyICAgICAgc21hbGxfcGFkCi0rICBlbmQgdHlw ZSBzbWFsbF9zdHJpZGUKLSsKLSsgIHR5cGUoc21hbGxfc3RyaWRlKSwgZGltZW5zaW9uICgyMCks IHRhcmdldCA6OiB1bnBsZWFzYW50Ci0rICBjaGFyYWN0ZXIqNDAsIHBvaW50ZXIsIGRpbWVuc2lv big6KTo6IGM0MHB0Ci0rCi0rICBpbnRlZ2VyIGkKLSsKLSsgIGRvIGkgPSAwLDE5Ci0rICAgICB1 bnBsZWFzYW50KGkrMSklc21hbGxfcGFkID0gaSsxCi0rICAgICB1bnBsZWFzYW50KGkrMSklbG9u Z19zdHJpbmcgPSBjaGFyIChpY2hhcignMCcpICsgaSkgLy8gJy1oZWxsbycKLSsgIGVuZCBkbwot KwotKyAgYzQwcHQgPT4gdW5wbGVhc2FudCVsb25nX3N0cmluZwotKwotKyAgcHJpbnQgKiwgYzQw cHQgICEgYnJlYWstaGVyZQotKwotK2VuZCBwcm9ncmFtIHJlcHJvCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIuZjkwCi1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjYxY2UxNwotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0dWIu ZjkwCi1AQCAtMCwwICsxLDI0IEBACi0rISBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLgotKyEKLSshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHlu YW1pYy5leHAuCi0rISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4uCi0rISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4g S3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rc3Vicm91dGluZSBi YXIKLSsgIHJlYWwgOjogZHVtbXkKLSsgIGR1bW15ID0gMQotK2VuZCBzdWJyb3V0aW5lIGJhcgot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFt ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhw Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTVhODJlZQotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1l LmV4cAotQEAgLTAsMCArMSwzNyBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24s IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3 LCBVU0EuICAKLSsKLStzZXQgdGVzdGZpbGUgImR5bmFtaWMtb3RoZXItZnJhbWUiCi0rc2V0IHNy Y2ZpbGUxICR7dGVzdGZpbGV9LmY5MAotK3NldCBzcmNmaWxlMiAke3Rlc3RmaWxlfS1zdHViLmY5 MAotK3NldCBvYmpmaWxlMiBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX0tc3R1Yi5v XQotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9Ci0rc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291 dHB1dF9maWxlICR7ZXhlY3V0YWJsZX1dCi0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHtzcmNmaWxlMn0iICIke29iamZpbGUyfSIgb2JqZWN0IHtmOTB9XSAhPSAi IgotKyAgICAgfHwgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZTF9 ICR7b2JqZmlsZTJ9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0gIT0gIiIg fSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZTF9IG9yICR7c3Jj ZmlsZTJ9IgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFi bGV9Ci0rCi0raWYgIVtydW50byBiYXJfXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gYmFyXyIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3QgImJ0IiB7Zm9vIFwo c3RyaW5nPSdoZWxsbycuKn0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2R5bmFtaWMtb3RoZXItZnJhbWUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5h bWljLW90aGVyLWZyYW1lLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjJiYzYzN2QKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHluYW1pYy1vdGhlci1mcmFtZS5mOTAKLUBAIC0wLDAgKzEsMzYgQEAKLSshIENvcHlyaWdodCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFu IHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBi eSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUg R0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t Pi4KLSsKLStzdWJyb3V0aW5lIGZvbyAoc3RyaW5nKQotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJv dXRpbmUgYmFyCi0rICAgIGVuZCBzdWJyb3V0aW5lCi0rICBlbmQgaW50ZXJmYWNlCi0rICBjaGFy YWN0ZXIgc3RyaW5nKigqKQotKyAgY2FsbCBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgc3RvcC1oZXJlCi0rZW5kIHN1YnJvdXRpbmUgZm9vCi0rcHJvZ3JhbSB0ZXN0Ci0rICBp bnRlcmZhY2UKLSsgICAgc3Vicm91dGluZSBmb28gKHN0cmluZykKLSsgICAgY2hhcmFjdGVyIHN0 cmluZyooKikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIGNhbGwg Zm9vICgnaGVsbG8nKQotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHluYW1pYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTc5ZTk0YQotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAotQEAgLTAsMCAr MSwxNTIgQEAKLSsjIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsjIAotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCi0rCi0r IyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+LgotKwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3Vp dGUuICBJdCBjb250YWlucyB0ZXN0cyBmb3IgZHluYW1pY2FsbHkKLSsjIGFsbG9jYXRlZCBGb3J0 cmFuIGFycmF5cy4KLSsjIEl0IGRlcGVuZHMgb24gdGhlIEdDQyBkeW5hbWljIEZvcnRyYW4gYXJy YXlzIERXQVJGIHN1cHBvcnQ6Ci0rIyAJaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3df YnVnLmNnaT9pZD0yMjI0NAotKwotK3NldCB0ZXN0ZmlsZSAiZHluYW1pYyIKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTAgcXVpZXR9XSAhPSAiIiB9 IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0 dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9k aXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG8g TUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBN QUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2YXJ4LWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4 LWluaXQiCi0rZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChvYmplY3R8dGhlIGFy cmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAi cHR5cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+ IiAicHR5cGUgdmFyeCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICIo Q2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhl IChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1LDE3KSB1bmFs bG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNyk9MSIgIihDYW5ub3QgYWNjZXNzIGl0 fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkg aXMgbm90IGFsbG9jYXRlZFxcLiIgInAgdmFyeCgxLDUsMTcpPTEgdW5hbGxvY2F0ZWQiCi0rZ2Ri X3Rlc3QgInB0eXBlIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBh Y2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9j YXRlZFxcLiIgInB0eXBlIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRlZCIKLSsjICQxID0gKCggKCAwLCAwLCAwLCAw LCAwLCAwKSAoIDAsIDAsIDAsIDAsIDAsIDApIC0tLSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4u KSAuLi4pCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8 XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCBhbGxvY2F0ZWQiCi0rIyBJbnRl bCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0r Z2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJw IGwgaWYgdmFyeCBhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInZhcngtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeC1m aWxsZWQiCi0rZ2RiX3Rlc3QgInAgdmFyeCgyLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9IDYiCi0r Z2RiX3Rlc3QgInAgdmFyeCgxLCA1LCAxNykiICJcXCRcWzAtOVxdKiA9IDciCi0rZ2RiX3Rlc3Qg InAgdmFyeCgyLCA2LCAxOCkiICJcXCRcWzAtOVxdKiA9IDgiCi0rZ2RiX3Rlc3QgInAgdmFyeCg2 LCAxNSwgMjgpIiAiXFwkXFswLTlcXSogPSA5IgotKyMgVGhlIGxhdHRlciBvbmUgaXMgZm9yIHRo ZSBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIgdHlwZS4KLStnZGJfdGVz dCAicCB2YXJ2IiAiXFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNz b2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3Qp IGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IHVuYXNzb2Np YXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChvYmplY3R8dGhlIGFycmF5 KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNz IHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicHR5 cGUgdmFydiB1bmFzc29jaWF0ZWQiCi0rCi0rc2V0IHRlc3QgIm91dHB1dCB2YXJ4IgotK2dkYl90 ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJeb3V0cHV0IHZhcnhcclxuXFso KSAsNjc4OS5cXSokZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1hc3NvY2lhdGVkIl0K LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydi1hc3NvY2lhdGVkIgotK2dkYl90ZXN0 ICJwIHZhcngoMywgNywgMTkpIiAiXFwkXFswLTlcXSogPSA2IiAicCB2YXJ4KDMsIDcsIDE5KSB3 aXRoIHZhcnYgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxb MC05XF0qID0gNiIgInAgdmFydigzLCA3LCAxOSkgYXNzb2NpYXRlZCIKLSsjIEludGVsIEZvcnRy YW4gQ29tcGlsZXIgMTAuMS4wMDggdXNlcyAtMSB0aGVyZSwgR0NDIHVzZXMgMS4KLStnZGJfdGVz dCAicCBsIiAiXFwkXFswLTlcXSogPSAoXFwuVFJVRVxcLnw0Mjk0OTY3Mjk1KSIgInAgbCBpZiB2 YXJ2IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChr aW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCB3aXRoIHZhcnYg YXNzb2NpYXRlZCIKLSsjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggdXNlcyB0aGUg cG9pbnRlciB0eXBlLgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9IChQVFIgVE8gLT4g XFwoICk/cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpXFwpPyIgInB0 eXBlIHZhcnYgYXNzb2NpYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFydi1maWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWZp bGxlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJw IHZhcngoMywgNywgMTkpIHdpdGggdmFydiBmaWxsZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigzLCA3 LCAxOSkiICJcXCRcWzAtOVxdKiA9IDEwIiAicCB2YXJ2KDMsIDcsIDE5KSBmaWxsZWQiCi0rCi0r Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtZGVhc3NvY2lhdGVkIl0K LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydi1kZWFzc29jaWF0ZWQiCi0rIyBUaGUg bGF0dGVyIG9uZSBpcyBmb3IgdGhlIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggcG9p bnRlciB0eXBlLgotK2dkYl90ZXN0ICJwIHZhcnYiICJcXCRcWzAtOVxdKiA9ICg8KG9iamVjdHx0 aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0 byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVk LikiICJwIHZhcnYgZGVhc3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9 ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNz IGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5v dCBhc3NvY2lhdGVkLikiICJwdHlwZSB2YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicCBs IiAiXFwkXFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ2IGRlYXNzb2NpYXRlZCIK LStnZGJfdGVzdCAicCB2YXJ2KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8g YWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhc3Nv Y2lhdGVkXFwuIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ2KDEsNSwxNykiICIoQ2Fubm90IGFjY2Vz cyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJy YXkpIGlzIG5vdCBhc3NvY2lhdGVkXFwuIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2YXJ4LWRlYWxsb2NhdGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAidmFyeC1kZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4IiAiXFwkXFswLTlcXSogPSA8 KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAicCB2YXJ4IGRlYWxsb2NhdGVk IgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IDwob2JqZWN0fHRoZSBhcnJheSkgaXMg bm90IGFsbG9jYXRlZD4iICJwdHlwZSB2YXJ4IGRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwIGwi ICJcXCRcWzAtOVxdKiA9IFxcLkZBTFNFXFwuIiAicCBsIGlmIHZhcnggZGVhbGxvY2F0ZWQiCi0r Z2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFj Y2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxsb2Nh dGVkXFwuIiAicCB2YXJ4KDEsNSwxNykgZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZh cngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVj dCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInB0eXBl IHZhcngoMSw1LDE3KSBkZWFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAidmFyeS1wYXNzZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 YXJ5LXBhc3NlZCIKLSsjICQxID0gKCggKCAxLCAxLCAxLCAxLCAxLCAxKSAoIDEsIDEsIDEsIDEs IDEsIDEpIC0tLSAsIDEpICkgKCAoIDEsIDEsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAg dmFyeSIgIlxcJFxbMC05XF0qID0gXFwoXFsoKTEsIC5cXSpcXCkiCi0rCi0rZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnktZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmFyeS1maWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnkiICJ0eXBlID0g cmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoMTAsMTBcXCkiCi0rZ2RiX3Rlc3QgInAgdmFyeSgx LCAxKSIgIlxcJFxbMC05XF0qID0gOCIKLStnZGJfdGVzdCAicCB2YXJ5KDIsIDIpIiAiXFwkXFsw LTlcXSogPSA5IgotK2dkYl90ZXN0ICJwIHZhcnkoMSwgMykiICJcXCRcWzAtOVxdKiA9IDEwIgot KyMgJDEgPSAoKCAoIDMsIDMsIDMsIDMsIDMsIDMpICggMywgMywgMywgMywgMywgMykgLS0tICwg MykgKSAoICggMywgMywgLi4uKSAuLi4pIC4uLikKLStnZGJfdGVzdCAicCB2YXJ3IiAiXFwkXFsw LTlcXSogPSBcXChcWygpMywgLlxdKlxcKSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAidmFydy1hbG1vc3RmaWxsZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJ2YXJ3LWFsbW9zdGZpbGxlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydyIgInR5cGUgPSBy ZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg1LDQsM1xcKSIKLStnZGJfdGVzdCAicCB2YXJ3KDMs MSwxKT0xIiAiXFwkXFswLTlcXSogPSAxIgotKyMgJDEgPSAoKCAoIDYsIDUsIDEsIDUsIDUsIDUp ICggNSwgNSwgNSwgNSwgNSwgNSkgLS0tICwgNSkgKSAoICggNSwgNSwgLi4uKSAuLi4pIC4uLikK LStnZGJfdGVzdCAicCB2YXJ3IiAiXFwkXFswLTlcXSogPSBcXCggKlxcKCAqXFwoICo2LCAqNSwg KjEsXFsoKTUsIC5cXSpcXCkiICJwIHZhcncgZmlsbGVkIgotKyMgInVwIiB3b3JrcyB3aXRoIEdD QyBidXQgb3RoZXIgRm9ydHJhbiBjb21waWxlcnMgbWF5IGNvcHkgdGhlIHZhbHVlcyBpbnRvIHRo ZQotKyMgb3V0ZXIgZnVuY3Rpb24gb25seSBvbiB0aGUgZXhpdCBvZiB0aGUgaW5uZXIgZnVuY3Rp b24uCi0rIyBXZSBuZWVkIGJvdGggdmFyaWFudHMgYXMgZGVwZW5kaW5nIG9uIHRoZSBhcmNoIHdl IG9wdGlvbmFsbHkgbWF5IHN0aWxsIGJlCi0rIyBleGVjdXRpbmcgdGhlIGNhbGxlciBsaW5lIG9y IG5vdCBhZnRlciBgZmluaXNoJy4KLStnZGJfdGVzdCAiZmluaXNoIiAiLiooY2FsbCBiYXIgXFwo eSwgeFxcKXxjYWxsIGZvbyBcXCh4LCB6XFwoMjo2LCA0OjcsIDY6OFxcKVxcKSkiCi0rZ2RiX3Rl c3QgInAgeigyLDQsNSkiICJcXCRcWzAtOVxdKiA9IDMiCi0rZ2RiX3Rlc3QgInAgeigyLDQsNiki ICJcXCRcWzAtOVxdKiA9IDYiCi0rZ2RiX3Rlc3QgInAgeigyLDQsNykiICJcXCRcWzAtOVxdKiA9 IDUiCi0rZ2RiX3Rlc3QgInAgeig0LDQsNikiICJcXCRcWzAtOVxdKiA9IDEiCi0rCi0rZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnotYWxtb3N0ZmlsbGVkIl0KLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAidmFyei1hbG1vc3RmaWxsZWQiCi0rIyBHQ0MgdXNlcyB0 aGUgcG9pbnRlciB0eXBlIGhlcmUsIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggZG9l cyBub3QuCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnoiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9y ZWFsKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXChcXCpcXClcXCk/IgotKyMgSW50ZWwgRm9ydHJhbiBD b21waWxlciAxMC4xLjAwOCBoYXMgYSBidWcgaGVyZSAtICgyOjExLDc6NykKLSsjIGFzIGl0IHBy b2R1Y2VzIERXX0FUX2xvd2VyX2JvdW5kID09IERXX0FUX3VwcGVyX2JvdW5kID09IDcuCi0rZ2Ri X3Rlc3QgInB0eXBlIHZhcnQiICJ0eXBlID0gKFBUUiBUTyAtPiBcXCggKT9yZWFsKFxcKGtpbmQ9 NFxcKXxcXCo0KSBcXCgyOjExLDc6XFwqXFwpXFwpPyIKLStnZGJfdGVzdCAicCB2YXJ6IiAiXFwk XFswLTlcXSogPSBcXChcXCkiCi0rZ2RiX3Rlc3QgInAgdmFydCIgIlxcJFxbMC05XF0qID0gXFwo XFwpIgotK2dkYl90ZXN0ICJwIHZhcnooMykiICJcXCRcWzAtOVxdKiA9IDQiCi0rIyBtYXBzIHRv IGZvbzo6dmFyeSgxLDEpCi0rZ2RiX3Rlc3QgInAgdmFydCgyLDcpIiAiXFwkXFswLTlcXSogPSA4 IgotKyMgbWFwcyB0byBmb286OnZhcnkoMiwyKQotK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxc JFxbMC05XF0qID0gOSIKLSsjIG1hcHMgdG8gZm9vOjp2YXJ5KDEsMykKLStnZGJfdGVzdCAicCB2 YXJ0KDIsOSkiICJcXCRcWzAtOVxdKiA9IDEwIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vZHluYW1pYy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFt aWMuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGY0MzU2NAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAot QEAgLTAsMCArMSw5OCBAQAotKyEgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv cgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwg NTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4K LSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMu ZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJl ZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3N1YnJvdXRpbmUgYmF6Ci0r ICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZhcnggKDosIDosIDopCi0rICByZWFsLCBw b2ludGVyIDo6IHZhcnYgKDosIDosIDopCi0rICByZWFsLCB0YXJnZXQgOjogdmFydSAoMSwgMiwg MykKLSsgIGxvZ2ljYWwgOjogbAotKyAgYWxsb2NhdGUgKHZhcnggKDE6NiwgNToxNSwgMTc6Mjgp KSAgICAgICAgICAgICEgdmFyeC1pbml0Ci0rICBsID0gYWxsb2NhdGVkICh2YXJ4KQotKyAgdmFy eCg6LCA6LCA6KSA9IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1hbGxvY2F0 ZWQKLSsgIHZhcngoMSwgNSwgMTcpID0gNwotKyAgdmFyeCgyLCA2LCAxOCkgPSA4Ci0rICB2YXJ4 KDYsIDE1LCAyOCkgPSA5Ci0rICB2YXJ2ID0+IHZhcnggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgISB2YXJ4LWZpbGxlZAotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICB2YXJ2 KDMsIDcsIDE5KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWFzc29jaWF0 ZWQKLSsgIHZhcnYgPT4gbnVsbCAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZh cnYtZmlsbGVkCi0rICBsID0gYXNzb2NpYXRlZCAodmFydikKLSsgIGRlYWxsb2NhdGUgKHZhcngp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZGVhc3NvY2lhdGVkCi0rICBsID0g YWxsb2NhdGVkICh2YXJ4KQotKyAgdmFydSg6LCA6LCA6KSA9IDEwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEgdmFyeC1kZWFsbG9jYXRlZAotKyAgYWxsb2NhdGUgKHZhcnYgKDE6NiwgNTox NSwgMTc6MjgpKQotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICB2YXJ2KDosIDosIDopID0g NgotKyAgdmFydigxLCA1LCAxNykgPSA3Ci0rICB2YXJ2KDIsIDYsIDE4KSA9IDgKLSsgIHZhcnYo NiwgMTUsIDI4KSA9IDkKLSsgIGRlYWxsb2NhdGUgKHZhcnYpCi0rICBsID0gYXNzb2NpYXRlZCAo dmFydikKLSsgIHZhcnYgPT4gdmFydQotKyAgdmFydigxLCAxLCAxKSA9IDYKLSsgIHZhcnYoMSwg MiwgMykgPSA3Ci0rICBsID0gYXNzb2NpYXRlZCAodmFydikKLStlbmQgc3Vicm91dGluZSBiYXoK LStzdWJyb3V0aW5lIGZvbyAodmFyeSwgdmFydykKLSsgIHJlYWwgOjogdmFyeSAoOiwgOikKLSsg IHJlYWwgOjogdmFydyAoOiwgOiwgOikKLSsgIHZhcnkoOiwgOikgPSA0ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIHZhcnktcGFzc2VkCi0rICB2YXJ5KDEsIDEpID0gOAotKyAgdmFy eSgyLCAyKSA9IDkKLSsgIHZhcnkoMSwgMykgPSAxMAotKyAgdmFydyg6LCA6LCA6KSA9IDUgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeS1maWxsZWQKLSsgIHZhcncoMSwgMSwgMSkg PSA2Ci0rICB2YXJ3KDIsIDIsIDIpID0gNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2 YXJ3LWFsbW9zdGZpbGxlZAotK2VuZCBzdWJyb3V0aW5lIGZvbwotK3N1YnJvdXRpbmUgYmFyICh2 YXJ6LCB2YXJ0KQotKyAgcmVhbCA6OiB2YXJ6ICgqKQotKyAgcmVhbCA6OiB2YXJ0ICgyOjExLCA3 OiopCi0rICB2YXJ6KDE6MykgPSA0Ci0rICB2YXJ6KDIpID0gNSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgISB2YXJ6LWFsbW9zdGZpbGxlZAotKyAgdmFydCgyLDcpID0gdmFydCgy LDcpCi0rZW5kIHN1YnJvdXRpbmUgYmFyCi0rcHJvZ3JhbSB0ZXN0Ci0rICBpbnRlcmZhY2UKLSsg ICAgc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncpCi0rICAgIHJlYWwgOjogdmFyeSAoOiwgOikK LSsgICAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6KQotKyAgICBlbmQgc3Vicm91dGluZQotKyAgZW5k IGludGVyZmFjZQotKyAgaW50ZXJmYWNlCi0rICAgIHN1YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0 KQotKyAgICByZWFsIDo6IHZhcnogKCopCi0rICAgIHJlYWwgOjogdmFydCAoMjoxMSwgNzoqKQot KyAgICBlbmQgc3Vicm91dGluZQotKyAgZW5kIGludGVyZmFjZQotKyAgcmVhbCA6OiB4ICgxMCwg MTApLCB5ICg1KSwgeig4LCA4LCA4KQotKyAgeCg6LDopID0gMQotKyAgeSg6KSA9IDIKLSsgIHoo Oiw6LDopID0gMwotKyAgY2FsbCBiYXoKLSsgIGNhbGwgZm9vICh4LCB6KDI6NiwgNDo3LCA2Ojgp KQotKyAgY2FsbCBiYXIgKHksIHgpCi0rICBpZiAoeCAoMSwgMSkgLm5lLiA4IC5vci4geCAoMiwg MikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0Ci0rICBpZiAoeCAoMSwg MykgLm5lLiAxMCkgY2FsbCBhYm9ydAotKyAgaWYgKHogKDIsIDQsIDYpIC5uZS4gNiAub3IuIHog KDMsIDUsIDcpIC5uZS4gNyAub3IuIHogKDIsIDQsIDcpIC5uZS4gNSkgY2FsbCBhYm9ydAotKyAg aWYgKGFueSAoeSAubmUuICgvNCwgNSwgNCwgMiwgMi8pKSkgY2FsbCBhYm9ydAotKyAgY2FsbCBm b28gKHRyYW5zcG9zZSAoeCksIHopCi0rICBpZiAoeCAoMSwgMSkgLm5lLiA4IC5vci4geCAoMiwg MikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0Ci0rICBpZiAoeCAoMywg MSkgLm5lLiAxMCkgY2FsbCBhYm9ydAotK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5n LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjM5ZGUyYzQKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAotQEAg LTAsMCArMSw1OSBAQAotKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsj IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5 IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAK LSsKLSsjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRl c3RzdWl0ZS4gIEl0IGNvbnRhaW5zIHRlc3RzIGZvciBGb3J0cmFuCi0rIyBzdHJpbmdzIHdpdGgg ZHluYW1pYyBsZW5ndGguCi0rCi0rc2V0IHRlc3RmaWxlICJzdHJpbmciCi0rc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uZjkwCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3Rm aWxlfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Zp bGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1aWV0fV0gIT0gIiIgfSB7 Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVy biAtMQotK30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGly ICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1B SU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJ Tl9fIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAidmFyLWluaXQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXItaW5p dCIKLStnZGJfdGVzdCAicHR5cGUgYyIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD0xXFwpfFxc KjEpIgotK2dkYl90ZXN0ICJwdHlwZSBkIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPThcXCl8 XFwqOCkiCi0rZ2RiX3Rlc3QgInB0eXBlIGUiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxc KXxcXCo0KSIKLStnZGJfdGVzdCAicHR5cGUgZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00 XFwpfFxcKjQpIFxcKDcsODoxMFxcKSIKLStnZGJfdGVzdCAicHR5cGUgKmUiICJBdHRlbXB0IHRv IHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iCi0rZ2RiX3Rlc3QgInB0eXBl ICpmIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkgXFwoN1xcKSIKLStnZGJf dGVzdCAicCBjIiAiXFwkXFswLTlcXSogPSAnYyciCi0rZ2RiX3Rlc3QgInAgZCIgIlxcJFxbMC05 XF0qID0gJ2QgICAgICAgJyIKLStnZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZyAgICci Ci0rZ2RiX3Rlc3QgInAgZiIgIlxcJFxbMC05XF0qID0gXFwoXFwoICdoICAgJywgJ2ggICAnLCAn aCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAg ICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKCAnaCAgICcs ICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwpIgot K2dkYl90ZXN0ICJwICplIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50 ZXIgdmFsdWUuIgotK2dkYl90ZXN0ICJwICpmIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9m IGEgbm9uLXBvaW50ZXIgdmFsdWUuIgotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2YXItZmluaXNoIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWZp bmlzaCIKLStnZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZSAgICciICJwIGUgcmUtc2V0 IgotK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2Yg ICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAn LCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIg InAgKmYgcmUtc2V0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIyNmRjNWQKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotQEAgLTAsMCArMSwzNyBAQAot KyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSsh IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUg aXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwg ZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9k aWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+LgotKwotK3N1YnJvdXRpbmUgZm9vIChlLCBmKQotKyAgY2hhcmFjdGVy IChsZW49MSkgOjogYwotKyAgY2hhcmFjdGVyIChsZW49OCkgOjogZAotKyAgY2hhcmFjdGVyIChs ZW49KikgOjogZQotKyAgY2hhcmFjdGVyIChsZW49KikgOjogZiAoMTo3LCA4OjEwKQotKyAgYyA9 ICdjJwotKyAgZCA9ICdkJwotKyAgZSA9ICdlJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEgdmFyLWluaXQKLSsgIGYgPSAnZicKLSsgIGYoMSw5KSA9ICdmMicKLSsgIGMg PSAnYycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhci1maW5pc2gK LStlbmQgc3Vicm91dGluZSBmb28KLSsgIGNoYXJhY3RlciAobGVuPTQpIDo6IGcsIGggKDE6Nywg ODoxMCkKLSsgIGcgPSAnZycKLSsgIGggPSAnaCcKLSsgIGNhbGwgZm9vIChnLCBoKQotK2VuZAot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi5jODE5ZTIzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmV4cAotQEAgLTAsMCArMSw2MCBAQAotKyMgQ29weXJp Z2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3Vw ZXIgKFBhaG9sZSwgc2VsZikuX19pbml0X18gKCJwYWhvbGUiLCBnZGIuQ09NTUFORF9OT05FLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9TWU1C T0wpCiArCi0raWYgeyBbc2tpcF9mb3J0cmFuX3Rlc3RzXSB9IHsgcmV0dXJuIC0xIH0KKysgICAg ZGVmIG1heWJlX3ByaW50X2hvbGUoc2VsZiwgYml0cG9zLCBmaWVsZF9iaXRwb3MpOgorKyAgICAg ICAgaWYgYml0cG9zICE9IGZpZWxkX2JpdHBvczoKKysgICAgICAgICAgICBob2xlID0gZmllbGRf Yml0cG9zIC0gYml0cG9zCisrICAgICAgICAgICAgcHJpbnQgJyAgLyogWFhYICVkIGJpdCBob2xl LCB0cnkgdG8gcGFjayAqLycgJSBob2xlCiArCi0rc2V0IHRlc3RmaWxlICJzdWJyYW5nZSIKLStz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IHtkZWJ1ZyBmOTB9XSB9IHsKLSsg ICAgcmV0dXJuIC0xCi0rfQorKyAgICBkZWYgcGFob2xlIChzZWxmLCB0eXBlLCBsZXZlbCwgbmFt ZSk6CisrICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisrICAgICAgICAgICAgbmFtZSA9ICcnCisr ICAgICAgICB0YWcgPSB0eXBlLnRhZworKyAgICAgICAgaWYgdGFnIGlzIE5vbmU6CisrICAgICAg ICAgICAgdGFnID0gJycKKysgICAgICAgIHByaW50ICclc3N0cnVjdCAlcyB7JyAlICgnICcgKiAo MiAqIGxldmVsKSwgdGFnKQorKyAgICAgICAgYml0cG9zID0gMAorKyAgICAgICAgZm9yIGZpZWxk IGluIHR5cGUuZmllbGRzICgpOgorKyAgICAgICAgICAgICMgU2tpcCBzdGF0aWMgZmllbGRzLgor KyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyIChmaWVsZCwgKCdiaXRwb3MnKSk6CisrICAgICAg ICAgICAgICAgIGNvbnRpbnVlCiArCi0raWYgIVtydW50byBNQUlOX19dIHsKLSsgICAgcGVycm9y ICJDb3VsZG4ndCBydW4gdG8gTUFJTl9fIgotKyAgICBjb250aW51ZQotK30KKysgICAgICAgICAg ICBmdHlwZSA9IGZpZWxkLnR5cGUuc3RyaXBfdHlwZWRlZnMoKQogKwotKyMgRGVwZW5kaW5nIG9u IHRoZSBjb21waWxlciB2ZXJzaW9uIGJlaW5nIHVzZWQsIHRoZSBuYW1lIG9mIHRoZSA0LWJ5dGUg aW50ZWdlcgotKyMgYW5kIHJlYWwgdHlwZXMgY2FuIGJlIHByaW50ZWQgZGlmZmVyZW50bHkuICBG b3IgaW5zdGFuY2UsIGdmb3J0cmFuLTQuMSB1c2VzCi0rIyAiaW50NCIgd2hlcmVhcyBnZm9ydHJh bi00LjMgdXNlcyAiaW50KGtpbmQ9NCkiLgotK3NldCBpbnQ0ICIoaW50NHxpbnRlZ2VyXFwoa2lu ZD00XFwpKSIKKysgICAgICAgICAgICBzZWxmLm1heWJlX3ByaW50X2hvbGUoYml0cG9zLCBmaWVs ZC5iaXRwb3MpCisrICAgICAgICAgICAgYml0cG9zID0gZmllbGQuYml0cG9zCisrICAgICAgICAg ICAgaWYgZmllbGQuYml0c2l6ZSA+IDA6CisrICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IGZp ZWxkLmJpdHNpemUKKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICAjIFRBUkdF VF9DSEFSX0JJVCBoZXJlLi4uCisrICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9IDggKiBmdHlw ZS5zaXplb2YKICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWst c3RhdGljIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstc3RhdGljIiAiLipi cmVhay1zdGF0aWMuKiIKKysgICAgICAgICAgICAjIFRBUkdFVF9DSEFSX0JJVAorKyAgICAgICAg ICAgIHByaW50ICcgLyogJTNkICUzZCAqLycgJSAoaW50IChiaXRwb3MgLyA4KSwgaW50IChmaWVs ZHNpemUgLyA4KSksCisrICAgICAgICAgICAgYml0cG9zID0gYml0cG9zICsgZmllbGRzaXplCiAr Ci0rZm9yZWFjaCB2YXIge2EgYWxsb2MgcHRyfSB7Ci0rICAgIGdsb2JhbCBwZl9wcmVmaXgKLSsg ICAgc2V0IG9sZF9wcmVmaXggJHBmX3ByZWZpeAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHZh cjoiCisrICAgICAgICAgICAgaWYgZnR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoK KysgICAgICAgICAgICAgICAgc2VsZi5wYWhvbGUgKGZ0eXBlLCBsZXZlbCArIDEsIGZpZWxkLm5h bWUpCisrICAgICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgcHJpbnQgJyAnICogKDIg KyAyICogbGV2ZWwpLAorKyAgICAgICAgICAgICAgICBwcmludCAnJXMgJXMnICUgKHN0ciAoZnR5 cGUpLCBmaWVsZC5uYW1lKQogKwotKyAgICBnZGJfdGVzdCAicCAkdmFyICgyLCAyOjMpIiB7ID0g XCgyMiwgMzJcKX0KLSsgICAgZ2RiX3Rlc3QgInAgJHZhciAoMjozLCAzKSIgeyA9IFwoMzIsIDMz XCl9Ci0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDEsIDI6KSIgeyA9IFwoMjEsIDMxXCl9Ci0rICAg IGdkYl90ZXN0ICJwICR2YXIgKDIsIDoyKSIgeyA9IFwoMTIsIDIyXCl9Ci0rICAgIGdkYl90ZXN0 ICJwICR2YXIgKDMsIDI6MikiIHsgPSBcKDIzXCl9Ci0rICAgIGdkYl90ZXN0ICJwdHlwZSAkdmFy ICgzLCAyOjIpIiAiID0gJGludDQgXFwoMjoyXFwpIgotKyAgICBnZGJfdGVzdCAicCAkdmFyICg0 LCA6KSIgeyA9IFwoMTQsIDI0LCAzNFwpfQotKyAgICBnZGJfdGVzdCAicCAkdmFyICg6LCA6KSIg eyA9IFwoXCggKjExLCAxMiwgMTMsIDE0XCkgXCggKjIxLCAyMiwgMjMsIDI0XCkgXCggKjMxLCAz MiwgMzMsIDM0XCkgKlwpfQotKyAgICBnZGJfdGVzdCAicHR5cGUgJHZhciAoOiwgOikiICIgPSAk aW50NCBcXCg0LDNcXCkiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDopIiAiV3JvbmcgbnVtYmVy IG9mIHN1YnNjcmlwdHMiCi0rICAgIGdkYl90ZXN0ICJwICR2YXIgKDosIDosIDopIiAiV3Jvbmcg bnVtYmVyIG9mIHN1YnNjcmlwdHMiCisrICAgICAgICBpZiBsZXZlbCA9PSAwOgorKyAgICAgICAg ICAgIHNlbGYubWF5YmVfcHJpbnRfaG9sZShiaXRwb3MsIDggKiB0eXBlLnNpemVvZikKICsKLSsg ICAgc2V0IHBmX3ByZWZpeCAkb2xkX3ByZWZpeAotK30KKysgICAgICAgIHByaW50ICcgJyAqICgx NCArIDIgKiBsZXZlbCksCisrICAgICAgICBwcmludCAnfSAlcycgJSBuYW1lCiArCi0rZ2RiX3Rl c3Rfbm9fb3V0cHV0IHtzZXQgJGE9YX0KLStkZWxldGVfYnJlYWtwb2ludHMKLStnZGJfdW5sb2Fk Ci0rZ2RiX3Rlc3Qge3AgJGEgKDMsIDI6Mil9IHsgPSBcKDIzXCl9Ci1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YnJhbmdlLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjQ3NDdlYTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3VicmFuZ2UuZjkwCi1AQCAtMCwwICsxLDI4IEBACi0rISBDb3B5cmlnaHQgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEgCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgdHlw ZSA9IGdkYi5sb29rdXBfdHlwZSAoYXJnKQorKyAgICAgICAgdHlwZSA9IHR5cGUuc3RyaXBfdHlw ZWRlZnMgKCkKKysgICAgICAgIGlmIHR5cGUuY29kZSAhPSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoK KysgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IsICclcyBpcyBub3QgYSBzdHJ1Y3QgdHlwZScg JSBhcmcKKysgICAgICAgIHByaW50ICcgJyAqIDE0LAorKyAgICAgICAgc2VsZi5wYWhvbGUgKHR5 cGUsIDAsICcnKQogKwotK3Byb2dyYW0gdGVzdAotKyAgaW50ZWdlciwgdGFyZ2V0IDo6IGEgKDQs IDMpCi0rICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBhbGxvYyAoOiwgOikKLSsgIGludGVnZXIs IHBvaW50ZXIgOjogcHRyICg6LCA6KQotKyAgZG8gMSBpID0gMSwgNAotKyAgZG8gMSBqID0gMSwg MwotKyAgICBhIChpLCBqKSA9IGogKiAxMCArIGkKLSsxIGNvbnRpbnVlCi0rICBhbGxvY2F0ZSAo YWxsb2MgKDQsIDMpKQotKyAgYWxsb2MgPSBhCi0rICBwdHIgPT4gYQotKyAgd3JpdGUgKCosKikg YSAgICAgICAgICAgICAgICAgISBicmVhay1zdGF0aWMKLStlbmQKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3Nl bGZ0ZXN0LmV4cAotaW5kZXggMWQwMjc3OS4uZjlmNWJlNCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9z ZWxmdGVzdC5leHAKLUBAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7 fSB7Ci0gCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0 aW9uIgotIAkJc2V0IGNvbW1hbmQgInN0ZXAiCi0gCSAgICB9Ci0rCSAgICAtcmUgIi4qcHl0aG9u X3NjcmlwdCA9IDAuKiRnZGJfcHJvbXB0ICQiIHsKLSsJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBv dmVyIHB5dGhvbl9zY3JpcHQgaW5pdGlhbGl6YXRpb24iCi0rCQlzZXQgY29tbWFuZCAic3RlcCIK LSsJICAgIH0KLSAJICAgIC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0 c19jbGVhbnVwLiokZ2RiX3Byb21wdCAkIiB7Ci0gCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3Zl ciBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKLSAJ CXNldCBjb21tYW5kICJuZXh0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p Mi12YXItc3RhbGUtdHlwZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10 eXBlLmMKKytQYWhvbGUoKQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlv bi9jYWxsZXJfaXMucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5 CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZWJjZWQzYworaW5kZXggMDAw MDAwMC4uMmI5YzVjNwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkv bWkyLXZhci1zdGFsZS10eXBlLmMKLUBAIC0wLDAgKzEsMjYgQEAKLSsvKiBDb3B5cmlnaHQgMjAx MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFy dCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwot KwotK2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBjaGFyIHZsYVth cmdjXTsKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKK0BA IC0wLDAgKzEsNTggQEAKKysjIENhbGxlci1pcyBmdW5jdGlvbnMuCiArCi0rICB2bGFbMF0gPSAw OwkvKiBicmVhay1oZXJlICovCisrIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri Lm1pL21pMi12YXItc3RhbGUtdHlwZS5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi44ODMyNmMwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taTItdmFyLXN0YWxlLXR5cGUuZXhwCi1AQCAtMCwwICsxLDU3IEBACi0rIyBDb3B5cmlnaHQg MjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCiArIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQog KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKICsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCkBAIC03MTg2LDE1NyArNDEzLDU3IEBAIGluZGV4 IDAwMDAwMDAuLjg4MzI2YzAKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStsb2Fk X2xpYiBtaS1zdXBwb3J0LmV4cAotK3NldCBNSUZMQUdTICItaT1taTIiCi0rCi0rZ2RiX2V4aXQK LStpZiBbbWlfZ2RiX3N0YXJ0XSB7Ci0rICAgIGNvbnRpbnVlCi0rfQotKwotK3NldCB0ZXN0Zmls ZSAibWkyLXZhci1zdGFsZS10eXBlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQg YmluZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHt0ZXN0ZmlsZX1dCi0raWYge1tidWlsZF9l eGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGVdID09IC0xfSB7Ci0r ICAgIHJldHVybiAtMQotK30KLSsKLSttaV9kZWxldGVfYnJlYWtwb2ludHMKLSttaV9nZGJfcmVp bml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSttaV9nZGJfbG9hZCAke2JpbmZpbGV9Ci0r Ci0rbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNl dCBpbnRlcm5hbC1lcnJvciBxdWl0IHllcyJ9IFwKLSsgIHtcXmRvbmV9IFwKLSsgICJtYWludGVu YW5jZSBzZXQgaW50ZXJuYWwtZXJyb3IgcXVpdCB5ZXMiCi0rCi0rbWlfZ2RiX3Rlc3Qgey1pbnRl cnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBjb3Jl ZmlsZSB5ZXMifSBcCi0rICB7XF5kb25lfSBcCi0rICAibWFpbnRlbmFuY2Ugc2V0IGludGVybmFs LWVycm9yIGNvcmVmaWxlIHllcyIKLSsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAi YnJlYWstaGVyZSJdCi0rc2V0IGZ1bmMgIm1haW4iCi0rCi0rbWlfZ2RiX3Rlc3QgIi1icmVhay1p bnNlcnQgLXQgJHNyY2ZpbGU6JGxpbmUiIFwKLSsgICJcXF5kb25lLGJrcHQ9XHtudW1iZXI9XCJc WzAtOVxdK1wiLHR5cGU9XCJicmVha3BvaW50XCIsZGlzcD1cImRlbFwiLGVuYWJsZWQ9XCJ5XCIs YWRkcj1cIiRoZXhcIixmdW5jPVwiJGZ1bmNcKFxcXCguKlxcXClcKT9cIixmaWxlPVwiLipcIixm dWxsbmFtZT1cIi4qXCIsbGluZT1cIiRsaW5lXCIsXFteXHJcblxdKixvcmlnaW5hbC1sb2NhdGlv bj1cIi4qXCJcfSIgXAotKyAgImJyZWFrcG9pbnQgYXQgJGZ1bmMiCi0rCi0raWYgeyBbbWlfcnVu X2NtZF0gPCAwIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rbWlfZXhwZWN0X3N0b3AgImJyZWFr cG9pbnQtaGl0IiAkZnVuYyAiLioiICIuKiIgIlxbMC05XF0rIiB7ICIiICJkaXNwPVwiZGVsXCIi IH0gInN0b3AgYWZ0ZXIgaW5pdGlhbGl6aW5nIHZsYSIKLSsKLSttaV9jcmVhdGVfdmFyb2JqICJ2 bGEiICJ2bGEiICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgdmxhIgotKwotK21pX2dkYl90ZXN0ICIt dmFyLXVwZGF0ZSAqIiAiXFxeZG9uZSxjaGFuZ2VsaXN0PS4qIiAiLXZhci11cGRhdGUgKiIKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5j LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MjlmNDU3Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMK LUBAIC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y Ci0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwot K2ludAotK2Z1bmMgKGludCAqYXJyKQotK3sKLSsgIHJldHVybiBhcnJbMF07Ci0rfQotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uMzA5MGU3ZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYwotQEAgLTAsMCArMSwyOCBAQAot Ky8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBD b3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytpbXBvcnQgZ2Ri CisraW1wb3J0IHJlCiArCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKytjbGFzcyBD YWxsZXJJcyAoZ2RiLkZ1bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxp bmcgZnVuY3Rpb24ncyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5nLgorK1RoaXMgZnVuY3Rpb24g dGFrZXMgb25lIG9yIHR3byBhcmd1bWVudHMuCisrVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBu YW1lIG9mIGEgZnVuY3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKKytuYW1lIGlzIGVx dWFsIHRvIHRoaXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgorK1RoZSBv cHRpb25hbCBzZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFj ayBmcmFtZXMKKyt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhl IGRlZmF1bHQgaXMgMS4iIiIKICsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAgICBkZWYg X19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKENhbGxlcklzLCBzZWxmKS5fX2luaXRf XyAoImNhbGxlcl9pcyIpCiArCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisr ICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKKysgICAgICAgIGZyYW1l ID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCisrICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKKysg ICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCisrICAgICAgICAgICAgbmZyYW1lcyA9 IG5mcmFtZXMgLSAxCisrICAgICAgICByZXR1cm4gZnJhbWUubmFtZSAoKSA9PSBuYW1lLnN0cmlu ZyAoKQogKwotK2V4dGVybiBpbnQgZnVuYyAoaW50ICphcnIpOworK2NsYXNzIENhbGxlck1hdGNo ZXMgKGdkYi5GdW5jdGlvbik6CisrICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBjYWxsaW5nIGZ1 bmN0aW9uJ3MgbmFtZSBtYXRjaGVzIGEgc3RyaW5nLgorK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25l IG9yIHR3byBhcmd1bWVudHMuCisrVGhlIGZpcnN0IGFyZ3VtZW50IGlzIGEgcmVndWxhciBleHBy ZXNzaW9uOyBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzCisrbmFtZSBpcyBtYXRjaGVkIGJ5IHRo aXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgorK1RoZSBvcHRpb25hbCBz ZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMK Kyt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQg aXMgMS4iIiIKICsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGludCBhcnJbXSA9IHsgNDIg fTsKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAgICAgIHN1cGVyIChDYWxsZXJNYXRj aGVzLCBzZWxmKS5fX2luaXRfXyAoImNhbGxlcl9tYXRjaGVzIikKICsKLSsgIGZ1bmMgKGFycik7 CisrICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKKysgICAgICAgIGZy YW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCisrICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoK KysgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCisrICAgICAgICAgICAgbmZyYW1l cyA9IG5mcmFtZXMgLSAxCisrICAgICAgICByZXR1cm4gcmUubWF0Y2ggKG5hbWUuc3RyaW5nICgp LCBmcmFtZS5uYW1lICgpKSBpcyBub3QgTm9uZQogKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAorK0NhbGxlcklzKCkK KytDYWxsZXJNYXRjaGVzKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rp b24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkK IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mMmRlNzE4CitpbmRleCAwMDAw MDAwLi5kZWJiM2JiCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQv YXJyYXktZnJvbS1yZWdpc3Rlci5leHAKLUBAIC0wLDAgKzEsMzMgQEAKLSsjIENvcHlyaWdodCAy MDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIwotKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl IGdkYiB0ZXN0c3VpdGUuCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyBhcnJheS1mcm9t LXJlZ2lzdGVyLmV4cCAiYXJyYXktZnJvbS1yZWdpc3RlciIgICAgICBcCi0rCQkJICB7YXJyYXkt ZnJvbS1yZWdpc3Rlci5jIGFycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jfSBcCi0rCQkJICB7ZGVi dWcgb3B0aW1pemU9LU8yfV0gfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRv IGZ1bmNdIHRoZW4gewotKyAgICByZXR1cm4gLTEKLSt9CisrKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKK0BAIC0wLDAgKzEsNDcgQEAKKysjIEluLXNjb3BlIGZ1 bmN0aW9uLgogKwotK2dkYl90ZXN0ICJwIGFyciIgIlxcJFxbMC05XF0rID0gXFwoaW50IFxcKlxc KSAqMHhcWzAtOWEtZlxdKyIKKysjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKLSsjIFNlZW4gcmVncmVzc2lvbjoKLSsjIEFkZHJlc3MgcmVxdWVz dGVkIGZvciBpZGVudGlmaWVyICJhcnIiIHdoaWNoIGlzIGluIHJlZ2lzdGVyICRyZGkKLStnZGJf dGVzdCAicCBhcnJcWzBcXSIgIlxcJFxbMC05XF0rID0gNDIiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwv YXJyYXlzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmNjYzZlMWUK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhw Ci1AQCAtMCwwICsxLDEwNCBAQAotKyMgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAr IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgpAQCAtNzM1MCwxODMgKzQ3NywxNDEgQEAgaW5kZXggMDAwMDAwMC4uY2NjNmUx ZQogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKICsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK2lmICR0cmFjZWxldmVsIHRoZW4g ewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0rCi0rbG9hZF9saWIgInBhc2NhbC5leHAi Ci0rCi0rc2V0IHRlc3RmaWxlICJhcnJheXMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0ucGFz Ci0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfSRFWEVFWFQKLSsK LSsjIFRoZXNlIHRlc3RzIG9ubHkgd29yayB3aXRoIGZwYywgdXNpbmcgdGhlIC1ndzMgY29tcGls ZS1vcHRpb24KLStwYXNjYWxfaW5pdAotK2lmIHsgJHBhc2NhbF9jb21waWxlcl9pc19mcGMgIT0g MSB9IHsKLSsgIHJldHVybiAtMQotK30KLSsKLSsjIERldGVjdCBpZiB0aGUgZnBjIHZlcnNpb24g aXMgYmVsb3cgMi4zLjAKLStzZXQgZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJh eXMgMQotK2lmIHsgKCRmcGN2ZXJzaW9uX21ham9yIDwgMikgfHwgKCAoJGZwY3ZlcnNpb25fbWFq b3IgPT0gMikgJiYgKCRmcGN2ZXJzaW9uX21pbm9yIDwgMykpfSAgewotKyAgc2V0IGZwY19nZW5l cmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzIDAKLSt9Ci0rCi0rCi0raWYge1tnZGJfY29t cGlsZV9wYXNjYWwgIi1ndzMgJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBdXSAhPSAiIiB9IHsKLSsgIHJldHVybiAtMQot K30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNk aXIvJHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLStzZXQgYnBfbG9jYXRpb24xIFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAxIGhlcmUiXQotK3NldCBicF9sb2NhdGlv bjIgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDIgaGVyZSJdCisraW1wb3J0 IGdkYgogKworK2NsYXNzIEluU2NvcGUgKGdkYi5GdW5jdGlvbik6CisrICAgICIiIlJldHVybiBU cnVlIGlmIGFsbCB0aGUgZ2l2ZW4gdmFyaWFibGVzIG9yIG1hY3JvcyBhcmUgaW4gc2NvcGUuCisr VGFrZXMgb25lIGFyZ3VtZW50IGZvciBlYWNoIHZhcmlhYmxlIG5hbWUgdG8gYmUgY2hlY2tlZC4i IiIKICsKLStpZiB7IFtnZGJfYnJlYWtwb2ludCAke3NyY2ZpbGV9OiR7YnBfbG9jYXRpb24xfV0g fSB7Ci0rICAgIHBhc3MgInNldHRpbmcgYnJlYWtwb2ludCAxIgotK30KLStpZiB7IFtnZGJfYnJl YWtwb2ludCAke3NyY2ZpbGV9OiR7YnBfbG9jYXRpb24yfV0gfSB7Ci0rICAgIHBhc3MgInNldHRp bmcgYnJlYWtwb2ludCAyIgotK30KKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysJc3VwZXIg KEluU2NvcGUsIHNlbGYpLl9faW5pdF9fICgiaW5fc2NvcGUiKQogKwotKyMgVmVyaWZ5IHRoYXQg InN0YXJ0IiBsYW5kcyBpbnNpZGUgdGhlIHJpZ2h0IHByb2NlZHVyZS4KLStpZiB7IFtnZGJfc3Rh cnRfY21kXSA8IDAgfSB7Ci0rICAgIHVudGVzdGVkIHN0YXJ0Ci0rICAgIHJldHVybiAtMQotK30K KysgICAgZGVmIGludm9rZSAoc2VsZiwgKnZhcnMpOgorKyAgICAgICAgaWYgbGVuICh2YXJzKSA9 PSAwOgorKwkgICAgcmFpc2UgVHlwZUVycm9yLCAiaW5fc2NvcGUgdGFrZXMgYXQgbGVhc3Qgb25l IGFyZ3VtZW50IgogKwotK2dkYl90ZXN0ICIiICIuKiBhdCAuKiR7c3JjZmlsZX0uKiIgInN0YXJ0 IgorKyAgICAgICAgIyBnZGIuVmFsdWUgaXNuJ3QgaGFzaGFibGUgc28gaXQgY2FuJ3QgYmUgcHV0 IGluIGEgbWFwLgorKwkjIENvbnZlcnQgdG8gc3RyaW5nIGZpcnN0LgorKwl3YW50ZWQgPSBzZXQg KG1hcCAobGFtYmRhIHg6IHguc3RyaW5nICgpLCB2YXJzKSkKKysJZm91bmQgPSBzZXQgKCkKKysJ YmxvY2sgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkuYmxvY2sgKCkKKysJd2hpbGUgYmxvY2s6Cisr CSAgICBmb3Igc3ltIGluIGJsb2NrOgorKwkJaWYgKHN5bS5pc19hcmd1bWVudCBvciBzeW0uaXNf Y29uc3RhbnQKKysJCSAgICAgIG9yIHN5bS5pc19mdW5jdGlvbiBvciBzeW0uaXNfdmFyaWFibGUp OgorKwkJICAgIGlmIHN5bS5uYW1lIGluIHdhbnRlZDoKKysJCQlmb3VuZC5hZGQgKHN5bS5uYW1l KQogKwotK2dkYl90ZXN0ICJjb250IiAiQnJlYWtwb2ludCAuKjoke2JwX2xvY2F0aW9uMX0uKiIg IkdvaW5nIHRvIGZpcnN0IGJyZWFrcG9pbnQiCisrCSAgICBibG9jayA9IGJsb2NrLnN1cGVyYmxv Y2sKICsKLStnZGJfdGVzdCAicHJpbnQgU3RhdEFyckludCIgIi4qID0gXFx7NTAsIDUxLCA1Miwg NTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MVxcfSIgIlByaW50IHN0YXRpYyBhcnJh eSBvZiBpbnRlZ2VyIHR5cGUiCi0rZ2RiX3Rlc3QgInByaW50IFN0YXRBcnJJbnRfIiAiLiogPSBc XHs1MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxXFx9IiAiUHJp bnQgc3RhdGljIGFycmF5IG9mIGludGVnZXIiCisrCXJldHVybiB3YW50ZWQgPT0gZm91bmQKICsK LStnZGJfdGVzdCAiY29udCIgIkJyZWFrcG9pbnQgLio6JHticF9sb2NhdGlvbjJ9LioiICJHb2lu ZyB0byBzZWNvbmQgYnJlYWtwb2ludCIKKytJblNjb3BlICgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5 dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKK2luZGV4IDM2OWEyNDkuLjBmMTM2 YTggMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5jCitAQCAtOTUsNiArOTUsOCBAQCBjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdl X2RlZm4gZXh0ZW5zaW9uX2xhbmd1YWdlX3B5dGhvbiA9CisgI2luY2x1ZGUgImxpbmVzcGVjLmgi CisgI2luY2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisrI2luY2x1ZGUg ImluZmVyaW9yLmgiCisrI2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJ0YXJnZXQu aCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCisgI2luY2x1ZGUgImludGVycHMuaCIKK0BAIC0x MjIyLDYgKzEyMjQsNTYgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCisgCisgLyogUmV0dXJu IHRoZSBjdXJyZW50IFByb2dzcGFjZS4KKyAgICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8KKysv KiBUcnVlIGlmICdnZGIgLVAnIHdhcyB1c2VkLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRp YyBpbnQgcnVubmluZ19weXRob25fc2NyaXB0OwogKwotK2dkYl90ZXN0ICJwcmludCBTdGF0QXJy Q2hhciIgIi4qID0gJ2FiY2RlZmdoaWprbCciICJQcmludCBzdGF0aWMgYXJyYXkgb2YgY2hhciIK LStnZGJfdGVzdCAicHJpbnQgU3RhdDJkQXJySW50IiAiLiogPSBcXHtcXHswLCAxLCAyLCAzLCA0 XFx9LCBcXHsxLCAyLCAzLCA0LCA1XFx9LCBcXHsyLCAzLCA0LCA1LCA2XFx9LCBcXHszLCA0LCA1 LCA2LCA3XFx9LCBcXHs0LCA1LCA2LCA3LCA4XFx9LCBcXHs1LCA2LCA3LCA4LCA5XFx9LCBcXHs2 LCA3LCA4LCA5LCAxMFxcfSwgXFx7NywgOCwgOSwgMTAsIDExXFx9LCBcXHs4LCA5LCAxMCwgMTEs IDEyXFx9LCBcXHs5LCAxMCwgMTEsIDEyLCAxM1xcfSwgXFx7MTAsIDExLCAxMiwgMTMsIDE0XFx9 LCBcXHsxMSwgMTIsIDEzLCAxNCwgMTVcXH1cXH0iICJQcmludCBzdGF0aWMgMi1kaW1lbnNpb25h bCBhcnJheSBvZiBpbnRlZ2VyIgorKy8qIFRydWUgaWYgd2UgYXJlIGN1cnJlbnRseSBpbiBhIGNh bGwgdG8gJ2dkYi5jbGknLCBmYWxzZSBvdGhlcndpc2UuICAqLworK3N0YXRpYyBpbnQgaW5fY2xp OwogKwotK2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9 IHsKLSsgIHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFycklu dCIgIi4qID0gXFx7NTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2 MSwgNjJcXH0iICJQcmludCBkeW5hbWljIGFycmF5IG9mIGludGVnZXIgdHlwZSIKLStpZiB7ICRm cGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9PSAwfSB7Ci0rICBzZXR1cF94 ZmFpbCAiKi0qLSoiCi0rfQotK2dkYl90ZXN0ICJwcmludCBEeW5BcnJJbnRfIiAiLiogPSBcXHs1 MCwgNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjAsIDYxLCA2MlxcfSIgIlBy aW50IGR5bmFtaWMgYXJyYXkgb2YgaW50ZWdlciIKKysvKiBFbnRlciB0aGUgY29tbWFuZCBsb29w LiAgKi8KICsKLStpZiB7ICRmcGNfZ2VuZXJhdGVzX2R3YXJmX2Zvcl9keW5hbWljX2FycmF5cyA9 PSAwfSB7Ci0rICBzZXR1cF94ZmFpbCAiKi0qLSoiCi0rfQotK2dkYl90ZXN0ICJwcmludCBzIiAi LiogPSAndGVzdCcjMCdzdHJpbmcnIiAiUHJpbnQgc3RyaW5nIGNvbnRhaW5pbmcgbnVsbC1jaGFy IgorK3N0YXRpYyBQeU9iamVjdCAqCisrZ2RicHlfY2xpIChQeU9iamVjdCAqdW51c2VkMSwgUHlP YmplY3QgKnVudXNlZDIpCisreworKyAgaWYgKCEgcnVubmluZ19weXRob25fc2NyaXB0IHx8IGlu X2NsaSkKKysgICAgcmV0dXJuIFB5RXJyX0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fu bm90IGludm9rZSBDTEkgcmVjdXJzaXZlbHkiKTsKKysgIAorKyAgaWYgKHVpX291dF9pc19taV9s aWtlX3AgKGN1cnJlbnRfdWlvdXQpKQorKyAgICByZXR1cm4gUHlFcnJfRm9ybWF0IChQeUV4Y19S dW50aW1lRXJyb3IsIF8oIkNhbm5vdCBpbnZva2UgQ0xJIGZyb20gTUkuIikpOwogKwotK2lmIHsg JGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsgIHNldHVw X3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFyclN0ciIgIi4qID0gXFx7 J2RzdHIwJywgJ2RzdHIxJywgJ2RzdHIyJywgJ2RzdHIzJywgJ2RzdHI0JywgJ2RzdHI1JywgJ2Rz dHI2JywgJ2RzdHI3JywgJ2RzdHI4JywgJ2RzdHI5JywgJ2RzdHIxMCcsICdkc3RyMTEnLCAnZHN0 cjEyJ1xcfSIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2Ygc3RyaW5nIgorKyAgaW5fY2xpID0gMTsK KysgIGN1cnJlbnRfaW50ZXJwX2NvbW1hbmRfbG9vcCAoKTsKKysgIGluX2NsaSA9IDA7CiArCi0r aWYgeyAkZnBjX2dlbmVyYXRlc19kd2FyZl9mb3JfZHluYW1pY19hcnJheXMgPT0gMH0gewotKyAg c2V0dXBfeGZhaWwgIiotKi0qIgorKyAgUHlfUkVUVVJOX05PTkU7CiArfQotK2dkYl90ZXN0ICJw cmludCBTdGF0QXJyU3RyIiAiLiogPSBcXHsnc3RyMCcsICdzdHIxJywgJ3N0cjInLCAnc3RyMycs ICdzdHI0JywgJ3N0cjUnLCAnc3RyNicsICdzdHI3JywgJ3N0cjgnLCAnc3RyOScsICdzdHIxMCcs ICdzdHIxMScsICdzdHIxMidcXH0iICJQcmludCBzdGF0aWMgYXJyYXkgb2Ygc3RyaW5nIgogKwot K2lmIHsgJGZwY19nZW5lcmF0ZXNfZHdhcmZfZm9yX2R5bmFtaWNfYXJyYXlzID09IDB9IHsKLSsg IHNldHVwX3hmYWlsICIqLSotKiIKLSt9Ci0rZ2RiX3Rlc3QgInByaW50IER5bkFyckNoYXIiICIu KiA9ICdhYmNkZWZnaGlqa2xtJyIgIlByaW50IGR5bmFtaWMgYXJyYXkgb2YgY2hhciIKKysvKiBT ZXQgdXAgdGhlIFB5dGhvbiBhcmd1bWVudCB2ZWN0b3IgYW5kIGV2YWx1YXRlIGEgc2NyaXB0LiAg VGhpcyBpcworKyAgIHVzZWQgdG8gaW1wbGVtZW50ICdnZGIgLVAnLiAgKi8KICsKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnBhc2NhbC9hcnJheXMucGFzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uMjk1NjAyZAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2Fs L2FycmF5cy5wYXMKLUBAIC0wLDAgKzEsODIgQEAKKyt2b2lkCisrcnVuX3B5dGhvbl9zY3JpcHQg KGludCBhcmdjLCBjaGFyICoqYXJndikKICt7Ci0rIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAg RklMRSAqaW5wdXQ7CiArCi0rIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAvKiBXZSBuZXZlciBmcmVlIHRo aXMsIHNpbmNlIHdlIHBsYW4gdG8gZXhpdCBhdCB0aGUgZW5kLiAgKi8KKysgIGVuc3VyZV9weXRo b25fZW52IChnZXRfY3VycmVudF9hcmNoICgpLCBjdXJyZW50X2xhbmd1YWdlKTsKICsKLSsgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOworKyAg UHlTeXNfU2V0QXJndiAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsKKysgIGlucHV0ID0gZm9wZW4gKGFy Z3ZbMF0sICJyIik7CisrICBpZiAoISBpbnB1dCkKKysgICAgeworKyAgICAgIGZwcmludGYgKHN0 ZGVyciwgImNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIiwgYXJndlswXSwgc3RyZXJyb3IgKGVycm5v KSk7CisrICAgICAgZXhpdCAoMSk7CisrICAgIH0KKysgIFB5UnVuX1NpbXBsZUZpbGUgKGlucHV0 LCBhcmd2WzBdKTsKKysgIGZjbG9zZSAoaW5wdXQpOworKyAgZXhpdCAoMCk7CiArfQogKwotK3By b2dyYW0gYXJyYXlzOwotKwotK3skbW9kZSBvYmpmcGN9eyRoK30KLSsKLSt1c2VzIHN5c3V0aWxz OwotKwotK3R5cGUgVFN0YXRBcnJJbnQ9IGFycmF5WzAuLjExXSBvZiBpbnRlZ2VyOwotKyAgICAg VER5bkFyckludD0gYXJyYXkgb2YgaW50ZWdlcjsKLSsgICAgIFRTdGF0QXJyU3RyPSBhcnJheVsw Li4xMl0gb2Ygc3RyaW5nOwotKyAgICAgVER5bkFyclN0cj0gYXJyYXkgb2Ygc3RyaW5nOwotKyAg ICAgVER5bkFyckNoYXIgPSBhcnJheSBvZiBjaGFyOwotKyAgICAgVFN0YXRBcnJDaGFyID0gYXJy YXkgWzAuLjExXSBvZiBjaGFyOwotKwotKyAgICAgVFN0YXQyZEFyckludCA9IGFycmF5WzAuLjEx LDAuLjRdIG9mIGludGVnZXI7Ci0rCi0rdmFyIFN0YXRBcnJJbnQ6IFRTdGF0QXJySW50OwotKyAg ICBTdGF0QXJySW50XzogQXJyYXlbMC4uMTFdIG9mIGludGVnZXI7Ci0rICAgIER5bkFyckludDog IFREeW5BcnJJbnQ7Ci0rICAgIER5bkFyckludF86IEFycmF5IG9mIGludGVnZXI7Ci0rICAgIFN0 YXRBcnJTdHI6IFRTdGF0QXJyU3RyOwotKyAgICBEeW5BcnJTdHI6IFREeW5BcnJTdHI7Ci0rICAg IFN0YXRBcnJDaGFyOiBUU3RhdEFyckNoYXI7Ci0rICAgIER5bkFyckNoYXI6IFREeW5BcnJDaGFy OwotKwotKyAgICBTdGF0MmRBcnJJbnQ6IFRTdGF0MmRBcnJJbnQ7Ci0rCi0rICAgIHM6IHN0cmlu ZzsKLSsJCi0rICAgIGksaiA6IGludGVnZXI7Ci0rCi0rYmVnaW4KLSsgIGZvciBpIDo9IDAgdG8g MTEgZG8KLSsgICAgYmVnaW4KLSsgICAgU3RhdEFyckludFtpXTo9IGkrNTA7Ci0rICAgIFN0YXRB cnJJbnRfW2ldOj0gaSs1MDsKLSsgICAgU3RhdEFyckNoYXJbaV06PSBjaHIob3JkKCdhJykraSk7 Ci0rICAgIGZvciBqIDo9IDAgdG8gNCBkbwotKyAgICAgIFN0YXQyZEFyckludFtpLGpdOj1pK2o7 Ci0rICAgIGVuZDsKLSsgIHdyaXRlbG4oU3RhdEFyckludF9bMF0pOwotKyAgd3JpdGVsbihTdGF0 QXJySW50WzBdKTsgeyBzZXQgYnJlYWtwb2ludCAxIGhlcmUgfQotKyAgd3JpdGVsbihTdGF0QXJy Q2hhclswXSk7Ci0rICB3cml0ZWxuKFN0YXQyZEFyckludFswLDBdKTsKKysMCiArCi0rICBzZXRs ZW5ndGgoRHluQXJySW50LDEzKTsKLSsgIHNldGxlbmd0aChEeW5BcnJJbnRfLDEzKTsKLSsgIHNl dGxlbmd0aChEeW5BcnJTdHIsMTMpOwotKyAgc2V0bGVuZ3RoKER5bkFyckNoYXIsMTMpOwotKyAg Zm9yIGkgOj0gMCB0byAxMiBkbwotKyAgICBiZWdpbgotKyAgICBEeW5BcnJJbnRbaV06PSBpKzUw OwotKyAgICBEeW5BcnJJbnRfW2ldOj0gaSs1MDsKLSsgICAgRHluQXJyQ2hhcltpXTo9IGNocihv cmQoJ2EnKStpKTsKLSsgICAgU3RhdEFyclN0cltpXTo9J3N0cicraW50dG9zdHIoaSk7Ci0rICAg IER5bkFyclN0cltpXTo9J2RzdHInK2ludHRvc3RyKGkpOwotKyAgICBlbmQ7Ci0rICB3cml0ZWxu KER5bkFyckludF9bMV0pOwotKyAgd3JpdGVsbihEeW5BcnJJbnRbMV0pOyAKLSsgIHdyaXRlbG4o RHluQXJyU3RyWzFdKTsgCi0rICB3cml0ZWxuKFN0YXRBcnJTdHJbMV0pOwotKyAgd3JpdGVsbihE eW5BcnJDaGFyWzFdKTsKKyAKKyBzdGF0aWMgUHlPYmplY3QgKgorIGdkYnB5X2dldF9jdXJyZW50 X3Byb2dzcGFjZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQorQEAgLTE5 MTAsNiArMTk2Miw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQorIEV2YWx1 YXRlIGNvbW1hbmQsIGEgc3RyaW5nLCBhcyBhIGdkYiBDTEkgY29tbWFuZC4gIE9wdGlvbmFsbHkg cmV0dXJuc1xuXAorIGEgUHl0aG9uIFN0cmluZyBjb250YWluaW5nIHRoZSBvdXRwdXQgb2YgdGhl IGNvbW1hbmQgaWYgdG9fc3RyaW5nIGlzXG5cCisgc2V0IHRvIFRydWUuIiB9LAorKyAgeyAiY2xp IiwgZ2RicHlfY2xpLCBNRVRIX05PQVJHUywKKysgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAor ICAgeyAicGFyYW1ldGVyIiwgZ2RicHlfcGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgICJS ZXR1cm4gYSBnZGIgcGFyYW1ldGVyJ3MgdmFsdWUiIH0sCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5 dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgKK2luZGV4IDllOTk5OTIuLmM3NzZl NTkgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCisrKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5oCitAQCAtMjUsNCArMjUsNiBAQAorIC8qIFRoaXMgaXMgYWxsIHRoYXQgcHl0aG9uIGV4 cG9ydHMgdG8gZ2RiLiAgKi8KKyBleHRlcm4gY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFn ZV9kZWZuIGV4dGVuc2lvbl9sYW5ndWFnZV9weXRob247CisgCisrZXh0ZXJuIHZvaWQgcnVuX3B5 dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CiArCi0rICBzIDo9ICd0ZXN0JyMw J3N0cmluZyc7Ci0rICB3cml0ZWxuKHMpOyB7IHNldCBicmVha3BvaW50IDIgaGVyZSB9Ci0rZW5k LgorICNlbmRpZiAvKiBHREJfUFlUSE9OX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4 cAoraW5kZXggOTExNDJmZS4uNzI0Njc5ZiAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmdkYi9zZWxmdGVzdC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5l eHAKK0BAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlz ZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBjbWRhcmdfdmVjIGluaXRpYWxpemF0aW9uIgorIAkJ c2V0IGNvbW1hbmQgInN0ZXAiCisgCSAgICB9CisrCSAgICAtcmUgIi4qcHl0aG9uX3NjcmlwdCA9 IDAuKiRnZGJfcHJvbXB0ICQiIHsKKysJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHB5dGhv bl9zY3JpcHQgaW5pdGlhbGl6YXRpb24iCisrCQlzZXQgY29tbWFuZCAic3RlcCIKKysJICAgIH0K KyAJICAgIC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVw LiokZ2RiX3Byb21wdCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2Nv bW1hbmRfc3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKKyAJCXNldCBjb21t YW5kICJuZXh0IgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFt ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCiBpbmRleCAzNTE3 ODI0Li40ZmEyYmQ4IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZy YW1lLmV4cApAQCAtNzUzOCw3ICs2MjMsNyBAQCBpbmRleCAzNTE3ODI0Li40ZmEyYmQ4IDEwMDY0 NAogKwogK2dkYl90ZXN0ICJweXRob24gcHJpbnQgKCdyZXN1bHQgPSAlcycgJSAoZjAuYmxvY2sg KCkpKSIgIjxnZGIuQmxvY2sgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidGVzdCBG cmFtZS5ibG9jayIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFs dWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotaW5kZXggZWQz MzJkYi4uMDY0NjZlYyAxMDA2NDQKK2luZGV4IDEzNDMzZmQuLmIxNDYxNjUgMTAwNjQ0CiAtLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCiArKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCiBAQCAtMzg1LDYgKzM4NSwxNSBAQCBwcm9jIHRl c3RfdmFsdWVfYWZ0ZXJfZGVhdGgge30gewpAQCAtNzU1Nyw3ICs2NDIsNyBAQCBpbmRleCBlZDMz MmRiLi4wNjQ2NmVjIDEwMDY0NAogICMgUmVncmVzc2lvbiB0ZXN0IGZvciBpbnZhbGlkIHN1YnNj cmlwdCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMgdGhhdAogICMgdGhlIHR5cGUgb2YgdGhlIHZh bHVlIHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dpbmcgYQogICMgc3Vic2NyaXB0 IG9wZXJhdGlvbiB0byBwcm9jZWVkLgotQEAgLTUxMiw2ICs1MjEsNyBAQCB0ZXN0X3ZhbHVlX2lu X2luZmVyaW9yCitAQCAtNTE0LDYgKzUyMyw3IEBAIHRlc3RfdmFsdWVfaW5faW5mZXJpb3IKICB0 ZXN0X2luZmVyaW9yX2Z1bmN0aW9uX2NhbGwKICB0ZXN0X2xhenlfc3RyaW5ncwogIHRlc3RfdmFs dWVfYWZ0ZXJfZGVhdGgKQEAgLTc1NjUsNjE4ICs2NTAsMyBAQCBpbmRleCBlZDMzMmRiLi4wNjQ2 NmVjIDEwMDY0NAogIAogICMgVGVzdCBlaXRoZXIgQyBvciBDKysgdmFsdWVzLiAKICAKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cAotaW5kZXggMjcxM2RkZi4uNTMzYjgxYiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLUBAIC0xNTAsNiAr MTUwLDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7Ci0gCSAgICBzZW5kX2dkYiAieVxuIgotIAkg ICAgZXhwX2NvbnRpbnVlCi0gCX0KLSsJLXJlICJBIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQg YWxyZWFkeS4uKkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGZpbGUuKnkgb3Ig bi4gJCJcCi0rCSAgICB7IHNlbmRfZ2RiICJ5XG4iCi0rCQl2ZXJib3NlICJcdFx0VW5sb2FkaW5n IHN5bWJvbHMgZm9yIHByb2dyYW0gYmVpbmcgZGVidWdnZWQiCi0rCSAgICBleHBfY29udGludWUK LSsJfQotIAktcmUgIkRpc2NhcmQgc3ltYm9sIHRhYmxlIGZyb20gLip5IG9yIG4uKiQiIHsKLSAJ ICAgIHNlbmRfZ2RiICJ5XG4iCi0gCSAgICBleHBfY29udGludWUKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAot aW5kZXggMWI0OTRlZS4uM2JiOGFkOSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bh c2NhbC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKLUBAIC0zNyw2ICsz Nyw5IEBAIHByb2MgcGFzY2FsX2luaXQge30gewotICAgICBnbG9iYWwgcGFzY2FsX2NvbXBpbGVy X2lzX2ZwYwotICAgICBnbG9iYWwgZ3BjX2NvbXBpbGVyCi0gICAgIGdsb2JhbCBmcGNfY29tcGls ZXIKLSsgICAgZ2xvYmFsIGZwY3ZlcnNpb25fbWFqb3IKLSsgICAgZ2xvYmFsIGZwY3ZlcnNpb25f bWlub3IKLSsgICAgZ2xvYmFsIGZwY3ZlcnNpb25fcmVsZWFzZQotICAgICBnbG9iYWwgZW52Ci0g IAotICAgICBpZiB7ICRwYXNjYWxfaW5pdF9kb25lID09IDEgfSB7Ci1AQCAtNjQsNiArNjcsMjAg QEAgcHJvYyBwYXNjYWxfaW5pdCB7fSB7Ci0gCSAgICBzZXQgcGFzY2FsX2NvbXBpbGVyX2lzX2Zw YyAxCi0gCSAgICB2ZXJib3NlIC1sb2cgIkZyZWUgUGFzY2FsIGNvbXBpbGVyIGZvdW5kIgotIAl9 Ci0rCi0rCSMgRGV0ZWN0IHRoZSBmcGMtdmVyc2lvbgotKwlpZiB7ICRwYXNjYWxfY29tcGlsZXJf aXNfZnBjID09IDEgfSB7Ci0rCSAgICBzZXQgZnBjdmVyc2lvbl9tYWpvciAxCi0rCSAgICBzZXQg ZnBjdmVyc2lvbl9taW5vciAwCi0rCSAgICBzZXQgZnBjdmVyc2lvbl9yZWxlYXNlIDAKLSsJICAg IHNldCBmcGN2ZXJzaW9uIFsgcmVtb3RlX2V4ZWMgaG9zdCAkZnBjX2NvbXBpbGVyICItaVYiIF0g Ci0rCSAgICBpZiBbcmVnZXhwIHsuKihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKykuP30gJGZw Y3ZlcnNpb25dIHsKLSsgICAgICAgICAgICAgIHJlZ3N1YiB7LiooWzAtOV0rKVwuKFswLTldKylc LihbMC05XSspLj9cbj8uP30gJGZwY3ZlcnNpb24ge1wxfSBmcGN2ZXJzaW9uX21ham9yCi0rICAg ICAgICAgICAgICByZWdzdWIgey4qKFswLTldKylcLihbMC05XSspXC4oWzAtOV0rKS4/XG4/Lj99 ICRmcGN2ZXJzaW9uIHtcMn0gZnBjdmVyc2lvbl9taW5vcgotKyAgICAgICAgICAgICAgcmVnc3Vi IHsuKihbMC05XSspXC4oWzAtOV0rKVwuKFswLTldKykuP1xuPy4/fSAkZnBjdmVyc2lvbiB7XDN9 IGZwY3ZlcnNpb25fcmVsZWFzZQotKwkgICAgfQotKyAgICAgICAgICAgIHZlcmJvc2UgLWxvZyAi RnJlZXBhc2NhbCB2ZXJzaW9uOiAkZnBjdmVyc2lvbl9tYWpvci4kZnBjdmVyc2lvbl9taW5vci4k ZnBjdmVyc2lvbl9yZWxlYXNlIgotKwl9Ci0gICAgIH0KLSAgICAgc2V0IHBhc2NhbF9pbml0X2Rv bmUgMQotIH0gICAKLWRpZmYgLS1naXQgYS9nZGIvdG9wLmMgYi9nZGIvdG9wLmMKLWluZGV4IGQw Njg0NTAuLmUyYjQxMTAgMTAwNjQ0Ci0tLS0gYS9nZGIvdG9wLmMKLSsrKyBiL2dkYi90b3AuYwot QEAgLTMzMSw2ICszMzEsOSBAQCBwcmVwYXJlX2V4ZWN1dGVfY29tbWFuZCAodm9pZCkKLSAKLSAg IG1hcmsgPSB2YWx1ZV9tYXJrICgpOwotICAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF92YWx1ZV9m cmVlX3RvX21hcmsgKG1hcmspOwotKyNpZiAwCi0rICBmcmVlX2FsbF90eXBlcyAoKTsKLSsjZW5k aWYKLSAKLSAgIC8qIFdpdGggbXVsdGlwbGUgdGhyZWFkcyBydW5uaW5nIHdoaWxlIHRoZSBvbmUg d2UncmUgZXhhbWluaW5nIGlzCi0gICAgICBzdG9wcGVkLCB0aGUgZGNhY2hlIGNhbiBnZXQgc3Rh bGUgd2l0aG91dCB1cyBiZWluZyBhYmxlIHRvIGRldGVjdAotZGlmZiAtLWdpdCBhL2dkYi90eXBl cHJpbnQuYyBiL2dkYi90eXBlcHJpbnQuYwotaW5kZXggMDk5OTNkZC4uOWZjYjNiMyAxMDA2NDQK LS0tLSBhL2dkYi90eXBlcHJpbnQuYwotKysrIGIvZ2RiL3R5cGVwcmludC5jCi1AQCAtMzQsNiAr MzQsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgot ICNpbmNsdWRlICJ2YWxwcmludC5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAjaW5jbHVk ZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSAiY2xpL2NsaS11dGls cy5oIgotQEAgLTM2Myw2ICszNjQsOSBAQCB2b2lkCi0gdHlwZV9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0cmluZywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAJ ICAgIGludCBzaG93KQotIHsKLSsgIGlmIChzaG93ID49IDAgJiYgY3VycmVudF9sYW5ndWFnZS0+ bGFfbGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotKyAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAo dHlwZSk7Ci0rCi0gICBMQV9QUklOVF9UWVBFICh0eXBlLCB2YXJzdHJpbmcsIHN0cmVhbSwgc2hv dywgMCwgJmRlZmF1bHRfcHR5cGVfZmxhZ3MpOwotIH0KLSAKLUBAIC00MTAsNiArNDE0LDcgQEAg d2hhdGlzX2V4cCAoY2hhciAqZXhwLCBpbnQgc2hvdykKLSAgIHN0cnVjdCB2YWx1ZV9wcmludF9v cHRpb25zIG9wdHM7Ci0gICBzdHJ1Y3QgdHlwZV9wcmludF9vcHRpb25zIGZsYWdzID0gZGVmYXVs dF9wdHlwZV9mbGFnczsKLSAKLSsgIC8qIFJlcXVpcmVkIGF0IGxlYXN0IGZvciB0aGUgb2JqZWN0 X2FkZHJlc3Nfc2V0IGNhbGwuICAqLwotICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxs X2NsZWFudXAsIE5VTEwpOwotIAotICAgaWYgKGV4cCkKLUBAIC00NTcsNiArNDYyLDcgQEAgd2hh dGlzX2V4cCAoY2hhciAqZXhwLCBpbnQgc2hvdykKLSAgIGVsc2UKLSAgICAgdmFsID0gYWNjZXNz X3ZhbHVlX2hpc3RvcnkgKDApOwotIAotKyAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdf YWRkcmVzcyAodmFsKSk7Ci0gICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKLSAKLSAgIGdldF91 c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLWRpZmYgLS1naXQgYS9nZGIvdXRpbHMuYyBiL2dk Yi91dGlscy5jCi1pbmRleCBlMDYyZTg5Li43NzMyNDJkIDEwMDY0NAotLS0tIGEvZ2RiL3V0aWxz LmMKLSsrKyBiL2dkYi91dGlscy5jCi1AQCAtMTc0NSw2ICsxNzQ1LDM2IEBAIHNldF9iYXRjaF9m bGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpCi0gICByZXR1cm4g YmFja190bzsKLSB9Ci0gCi0rLyogSGVscGVyIGZvciBtYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdl X2luZm8uICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZG9fcmVzdG9yZV9zZWxlY3RlZF9mcmFtZV9j bGVhbnVwICh2b2lkICphcmcpCi0rewotKyAgc3RydWN0IGZyYW1lX2lkICpmcmFtZV9pZHAgPSBh cmc7Ci0rCi0rICBzZWxlY3RfZnJhbWUgKGZyYW1lX2ZpbmRfYnlfaWQgKCpmcmFtZV9pZHApKTsK LSsKLSsgIHhmcmVlIChmcmFtZV9pZHApOwotK30KLSsKLSsvKiBQcm92aWRlIGNsZWFudXAgZm9y IHJlc3RvcmluZyBjdXJyZW50bHkgc2VsZWN0ZWQgZnJhbWUuICBVc2UgZnJhbWVfaWQgZm9yCi0r ICAgdGhlIGNhc2UgdGhlIGN1cnJlbnQgZnJhbWUgYmVjb21lcyBzdGFsZSBpbiB0aGUgbWVhbnRp bWUuICAqLwotKwotK3N0cnVjdCBjbGVhbnVwICoKLSttYWtlX2NsZWFudXBfcmVzdG9yZV9zZWxl Y3RlZF9mcmFtZSAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgZnJhbWVfaWQgKmZyYW1lX2lkcDsKLSsK LSsgIC8qIGdldF9zZWxlY3RlZF9mcmFtZS0+Z2V0X2N1cnJlbnRfZnJhbWUgd291bGQgZXJyb3Ig b3RoZXJ3aXNlLiAgKi8KLSsgIGlmICghaGFzX3N0YWNrX2ZyYW1lcyAoKSkKLSsgICAgcmV0dXJu IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLSsKLSsgIGZyYW1lX2lkcCA9IHht YWxsb2MgKHNpemVvZiAoKmZyYW1lX2lkcCkpOwotKyAgKmZyYW1lX2lkcCA9IGdldF9mcmFtZV9p ZCAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSk7Ci0rCi0rICByZXR1cm4gbWFrZV9jbGVhbnVw IChkb19yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lX2NsZWFudXAsIGZyYW1lX2lkcCk7Ci0rfQotKwot IC8qIFNldCB0aGUgc2NyZWVuIHNpemUgYmFzZWQgb24gTElORVNfUEVSX1BBR0UgYW5kIENIQVJT X1BFUl9MSU5FLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL2dkYi91dGlscy5o IGIvZ2RiL3V0aWxzLmgKLWluZGV4IDhiYmNjNWYuLjEzNDJkNjggMTAwNjQ0Ci0tLS0gYS9nZGIv dXRpbHMuaAotKysrIGIvZ2RiL3V0aWxzLmgKLUBAIC0zODIsNCArMzgyLDYgQEAgZXh0ZXJuIFVM T05HRVNUIGFsaWduX2Rvd24gKFVMT05HRVNUIHYsIGludCBuKTsKLSAKLSBleHRlcm4gTE9OR0VT VCBnZGJfc2lnbl9leHRlbmQgKExPTkdFU1QgdmFsdWUsIGludCBiaXQpOwotIAotK2V4dGVybiBz dHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKHZvaWQp OwotKwotICNlbmRpZiAvKiBVVElMU19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMg Yi9nZGIvdmFsYXJpdGguYwotaW5kZXggOGU4NjNlMy4uOTdhOGIwZiAxMDA2NDQKLS0tLSBhL2dk Yi92YWxhcml0aC5jCi0rKysgYi9nZGIvdmFsYXJpdGguYwotQEAgLTE5NSw3ICsxOTUsMTAgQEAg dmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGlu ZGV4LCBpbnQgbG93ZXJib3VuZCkKLSAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLSAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKLSAgIHVuc2ln bmVkIGludCBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7Ci0tICB1bnNpZ25lZCBp bnQgZWx0X29mZnMgPSBlbHRfc2l6ZSAqIGxvbmdlc3RfdG9faW50IChpbmRleCAtIGxvd2VyYm91 bmQpOwotKyAgdW5zaWduZWQgaW50IGVsdF9zdHJpZGUKLSsgICAgPSAoVFlQRV9CWVRFX1NUUklE RSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSkgPT0gMAotKyAgICAgICA/IGVsdF9zaXpl IDogVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSkpOwotKyAg dW5zaWduZWQgaW50IGVsdF9vZmZzID0gZWx0X3N0cmlkZSAqIGxvbmdlc3RfdG9faW50IChpbmRl eCAtIGxvd2VyYm91bmQpOwotICAgc3RydWN0IHZhbHVlICp2OwotIAotICAgaWYgKGluZGV4IDwg bG93ZXJib3VuZCB8fCAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJh eV90eXBlKQotQEAgLTI1NSw2ICsyNTgsMTAgQEAgaW50Ci0gYmlub3BfdXNlcl9kZWZpbmVkX3Ag KGVudW0gZXhwX29wY29kZSBvcCwKLSAJCSAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0 IHZhbHVlICphcmcyKQotIHsKLSsgIC8qIEZJWE1FOiBXZSBzaG91bGQgc3VwcG9ydCB1c2VyIGRl ZmluZWQgb3BzIGZvciBkeW5hbWljIHR5cGVzLiAgKi8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHZh bHVlX3R5cGUgKGFyZzEpKSB8fCBUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFyZzIpKSkKLSsg ICAgcmV0dXJuIDA7Ci0rCi0gICByZXR1cm4gYmlub3BfdHlwZXNfdXNlcl9kZWZpbmVkX3AgKG9w LCB2YWx1ZV90eXBlIChhcmcxKSwgdmFsdWVfdHlwZSAoYXJnMikpOwotIH0KLSAKLWRpZmYgLS1n aXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4IDUzODJjNDkuLjBkZTgwMDkg MTAwNjQ0Ci0tLS0gYS9nZGIvdmFsb3BzLmMKLSsrKyBiL2dkYi92YWxvcHMuYwotQEAgLTQyLDYg KzQyLDcgQEAKLSAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIK LSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKLSBl eHRlcm4gdW5zaWduZWQgaW50IG92ZXJsb2FkX2RlYnVnOwotIC8qIExvY2FsIGZ1bmN0aW9ucy4g ICovCi1AQCAtOTAwLDYgKzkwMSw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlKQot ICAgcmV0dXJuIHZhbDsKLSB9Ci0gCi0rLyogb2JqZWN0X2FkZHJlc3Nfc2V0IG11c3QgYmUgYWxy ZWFkeSBjYWxsZWQgYmVmb3JlIHRoaXMgZnVuY3Rpb24uICAqLwotKwotK2NvbnN0IGNoYXIgKgot K29iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0r ICAvKiBBdHRyaWJ1dGVzIGFyZSBwcmVzZW50IG9ubHkgYXQgdGhlIHRhcmdldCB0eXBlIG9mIGEg dHlwZWRlZi4gIE1ha2UgdGhlCi0rICAgICBjYWxsIGNvbmRpdGlvbmFsIGFzIGl0IHdvdWxkIG90 aGVyd2lzZSBsb29wIHRocm91Z2ggdHlwZV9sZW5ndGhfZ2V0LiAgKi8KLSsgIGlmIChUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9UWVBFREVGKQotKyAgICBDSEVDS19UWVBFREVGICh0eXBl KTsKLSsKLSsgIC8qIERXX0FUX2Fzc29jaWF0ZWQgaGFzIGEgcHJlZmVyZW5jZSBvdmVyIERXX0FU X2FsbG9jYXRlZC4gICovCi0rICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAodHlwZSkKLSsgICAg ICB8fCAoVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSAhPSBOVUxMCi0rCSAgJiYgMCA9PSBkd2FyZl9s b2NleHByX2JhdG9uX2V2YWwgKFRZUEVfQVNTT0NJQVRFRCAodHlwZSkpKSkKLSsgICAgcmV0dXJu IE5fKCJvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQiKTsKLSsKLSsgIGlmIChUWVBFX05PVF9BTExP Q0FURUQgKHR5cGUpCi0rICAgICAgfHwgKFRZUEVfQUxMT0NBVEVEICh0eXBlKSAhPSBOVUxMCi0r CSAgJiYgMCA9PSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwgKFRZUEVfQUxMT0NBVEVEICh0eXBl KSkpKQotKyAgICByZXR1cm4gTl8oIm9iamVjdCBpcyBub3QgYWxsb2NhdGVkIik7Ci0rCi0rICBy ZXR1cm4gTlVMTDsKLSt9Ci0rCi0rLyogUmV0dXJuIG5vbi1OVUxMIGNoZWNrX3R5cGVkZWYgcmVz dWx0IG9uIFRZUEUgaWYgdGhlIHZhcmlhYmxlIGlzIHZhbGlkLiAgSWYKLSsgICBpdCBpcyB2YWxp ZCB0aGUgZnVuY3Rpb24gbWF5IHN0b3JlIHRoZSBkYXRhIGFkZHJlc3MgKERXX0FUX0RBVEFfTE9D QVRJT04pIG9mCi0rICAgVFlQRSBhdCAqQUREUkVTU19SRVRVUk4uICBZb3UgbXVzdCBzZXQgKkFE RFJFU1NfUkVUVVJOIGZyb20KLSsgICB2YWx1ZV9yYXdfYWRkcmVzcyAoVkFMKSBiZWZvcmUgY2Fs bGluZyB0aGlzIGZ1bmN0aW9uLiAgSWYgbm8KLSsgICBEV19BVF9EQVRBX0xPQ0FUSU9OIGlzIHBy ZXNlbnQgZm9yIFRZUEUgdGhlIGFkZHJlc3MgYXQgKkFERFJFU1NfUkVUVVJOIGlzCi0rICAgbGVm dCB1bmNoYW5nZWQuICBBRERSRVNTX1JFVFVSTiBtdXN0IG5vdCBiZSBOVUxMLCB1c2UKLSsgICBv YmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAoKSBmb3IganVzdCB0aGUgZGF0YSB2YWxpZGl0 eSBjaGVjay4gICovCi0rCi0rc3RydWN0IHR5cGUgKgotK29iamVjdF9hZGRyZXNzX2dldF9kYXRh IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSICphZGRyZXNzX3JldHVybikKLSt7Ci0rICBn ZGJfYXNzZXJ0IChhZGRyZXNzX3JldHVybiAhPSBOVUxMKTsKLSsKLSsgIG9iamVjdF9hZGRyZXNz X3NldCAoKmFkZHJlc3NfcmV0dXJuKTsKLSsKLSsgIC8qIFRZUEVfREFUQV9MT0NBVElPTl9EV0FS Rl9CTE9DSyAvIFRZUEVfREFUQV9MT0NBVElPTl9BRERSIGFyZSBwcmVzZW50IG9ubHkKLSsgICAg IGF0IHRoZSB0YXJnZXQgdHlwZSBvZiBhIHR5cGVkZWYuICAqLwotKyAgQ0hFQ0tfVFlQRURFRiAo dHlwZSk7Ci0rCi0rICBpZiAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUpICE9 IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBEbyBub3QgdHJ5IHRvIGV2YWx1YXRlIERXX0FUX2Rh dGFfbG9jYXRpb24gYXMgaXQgbWF5IGV2ZW4gY3Jhc2gKLSsJIChpdCB3b3VsZCBqdXN0IHJldHVy biB0aGUgdmFsdWUgemVybyBpbiB0aGUgZ2ZvcnRyYW4gY2FzZSkuICAqLwotKyAgICAgIHJldHVy biBOVUxMOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgKHR5 cGUpKQotKyAgICAqYWRkcmVzc19yZXR1cm4gPSBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAodHlw ZSk7Ci0rICBlbHNlIGlmIChUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpICE9 IE5VTEwpCi0rICAgICphZGRyZXNzX3JldHVybgotKyAgICAgID0gZHdhcmZfbG9jZXhwcl9iYXRv bl9ldmFsIChUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpKTsKLSsKLSsgIHJl dHVybiB0eXBlOwotK30KLSsKLSAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHZhbHVlX2F0LCB2YWx1 ZV9hdF9sYXp5LCBhbmQgdmFsdWVfYXRfbGF6eV9zdGFjay4gICovCi0gCi0gc3RhdGljIHN0cnVj dCB2YWx1ZSAqCi1AQCAtMTM2NSw3ICsxNDI1LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgY29uc3Qgc3RydWN0IGJsb2NrICpiKQotICAgaWYgKChWQUxVRV9M VkFMICh2YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCi0gICAgICAgfHwg VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKLSAgICAgewotLSAgICAgIENPUkVf QUREUiBhZGRyID0gdmFsdWVfYWRkcmVzcyAodmFsKTsKLSsgICAgICBDT1JFX0FERFIgYWRkcjsK LSsKLSsgICAgICBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKLSsJewotKwkg IGFkZHIgPSB2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKTsKLSsJICBpZiAoIW9iamVjdF9hZGRyZXNz X2dldF9kYXRhICh0eXBlLCAmYWRkcikpCi0rCSAgICBlcnJvciAoXygiQ2FuJ3QgdGFrZSBhZGRy ZXNzIG9mIG1lbW9yeSBsdmFsdWUgXCIlc1wiLiIpLAotKwkJICAgU1lNQk9MX1BSSU5UX05BTUUg KHZhcikpOwotKwkgIHNldF92YWx1ZV9hZGRyZXNzICh2YWwsIGFkZHIpOwotKwl9Ci0rCi0rICAg ICAgYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7Ci0gCi0gICAgICAgcmV0dXJuIHZhbHVlX2Zy b21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwotICAgICB9Ci1A QCAtMTQ3Miw2ICsxNTQzLDcgQEAgc3RydWN0IHZhbHVlICoKLSB2YWx1ZV9jb2VyY2VfYXJyYXkg KHN0cnVjdCB2YWx1ZSAqYXJnMSkKLSB7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKLSsgIENPUkVfQUREUiBhZGRyZXNzOwotIAotICAg LyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIg d2l0aCBhbgotICAgICAgYXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUg dGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0xNDgxLDggKzE1NTMsMTIgQEAgdmFsdWVfY29l cmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCi0gICBpZiAoVkFMVUVfTFZBTCAoYXJnMSkg IT0gbHZhbF9tZW1vcnkpCi0gICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgYWRkcmVzcyBv ZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuIikpOwotIAotKyAgYWRkcmVzcyA9IHZhbHVl X3Jhd19hZGRyZXNzIChhcmcxKTsKLSsgIGlmICghb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHR5 cGUsICZhZGRyZXNzKSkKLSsgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBhZGRyZXNzIG9m IG5vbi12YWxpZCB2YWx1ZS4iKSk7Ci0rCi0gICByZXR1cm4gdmFsdWVfZnJvbV9wb2ludGVyIChs b29rdXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCi0tCQkJICAgICB2 YWx1ZV9hZGRyZXNzIChhcmcxKSk7Ci0rCQkJICAgICBhZGRyZXNzICsgdmFsdWVfb2Zmc2V0IChh cmcxKSk7Ci0gfQotIAotIC8qIEdpdmVuIGEgdmFsdWUgd2hpY2ggaXMgYSBmdW5jdGlvbiwgcmV0 dXJuIGEgdmFsdWUgd2hpY2ggaXMgYSBwb2ludGVyCi1AQCAtMzU3MSw2ICszNjQ3LDggQEAgdmFs dWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3dib3VuZCwgaW50IGxlbmd0aCkK LSAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAotIAkJCQkJbG93Ym91bmQsIAot IAkJCQkJbG93Ym91bmQgKyBsZW5ndGggLSAxKTsKLSsgIFRZUEVfQllURV9TVFJJREUgKHNsaWNl X3JhbmdlX3R5cGUpID0gVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSk7Ci0rCi0gCi0gICAg IHsKLSAgICAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAo YXJyYXlfdHlwZSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbHByaW50LmMgYi9nZGIvdmFscHJpbnQu YwotaW5kZXggMDE4ODljNS4uZTI1ZTNjOCAxMDA2NDQKLS0tLSBhL2dkYi92YWxwcmludC5jCi0r KysgYi9nZGIvdmFscHJpbnQuYwotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAiZ2RiX29i c3RhY2suaCIKLSAjaW5jbHVkZSAiY2hhcnNldC5oIgotICNpbmNsdWRlIDxjdHlwZS5oPgotKyNp bmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLUBAIC0yOTAs NyArMjkxLDYgQEAgdmFsX3ByaW50X3NjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQot ICAgICBjYXNlIFRZUEVfQ09ERV9TVFJVQ1Q6Ci0gICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgot ICAgICBjYXNlIFRZUEVfQ09ERV9TRVQ6Ci0tICAgIGNhc2UgVFlQRV9DT0RFX1NUUklORzoKLSAg ICAgICByZXR1cm4gMDsKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gMTsKLUBAIC0xNjI1 LDYgKzE2MjUsNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBl LAotIHsKLSAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7Ci0gICB1bnNpZ25lZCBs ZW47Ci0rICBzdHJ1Y3QgdHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAq ZWx0dHlwZSwgKmluZGV4X3R5cGU7Ci0gICB1bnNpZ25lZCBlbHRsZW47Ci0gICAvKiBQb3NpdGlv biBvZiB0aGUgYXJyYXkgZWxlbWVudCB3ZSBhcmUgZXhhbWluaW5nIHRvIHNlZQotQEAgLTE2MzMs OSArMTYzNCwzMyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBl LAotICAgLyogTnVtYmVyIG9mIHJlcGV0aXRpb25zIHdlIGhhdmUgZGV0ZWN0ZWQgc28gZmFyLiAg Ki8KLSAgIHVuc2lnbmVkIGludCByZXBzOwotICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91 bmQ7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSsgIENPUkVfQUREUiBzYXZlZF9hZGRy ZXNzID0gYWRkcmVzczsKLSsgIAotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVh bnVwLCAwKTsKLSsgIHR5cGUgPSBvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAodHlwZSwgJmFkZHJl c3MpOwotKyAgaWYgKCF0eXBlKQotKyAgICB7Ci0rICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVj dF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKSwgc3RyZWFtKTsKLSsgICAgICBkb19jbGVh bnVwcyAoYmFja190byk7Ci0rICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICBpZiAoYWRkcmVzcyAh PSBzYXZlZF9hZGRyZXNzKQotKyAgICB7Ci0rICAgICAgc2l6ZV90IGxlbmd0aCA9IFRZUEVfTEVO R1RIICh0eXBlKTsKLSAKLS0gIGVsdHR5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLS0g IGVsdGxlbiA9IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmIChlbHR0eXBlKSk7Ci0rICAgICAg dmFsYWRkciA9IHhtYWxsb2MgKGxlbmd0aCk7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwg KGdkYl9ieXRlICopIHZhbGFkZHIpOwotKyAgICAgIHJlYWRfbWVtb3J5IChhZGRyZXNzLCAoZ2Ri X2J5dGUgKikgdmFsYWRkciwgbGVuZ3RoKTsKLSsgICAgfQotKwotKyAgLyogU2tpcCB0eXBlZGVm cyBidXQgZG8gbm90IHJlc29sdmUgVFlQRV9EWU5BTUlDLiAgKi8KLSsgIGVsdHR5cGUgPSBzYXZl ZF90eXBlOwotKyAgd2hpbGUgKFRZUEVfQ09ERSAoZWx0dHlwZSkgPT0gVFlQRV9DT0RFX1RZUEVE RUYpCi0rICAgIGVsdHR5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChlbHR0eXBlKTsKLSsgIGVsdHR5 cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChlbHR0eXBlKTsKLSsKLSsgIGVsdGxlbiA9IFRZUEVfQVJS QVlfQllURV9TVFJJREVfVkFMVUUgKHR5cGUpOwotICAgaW5kZXhfdHlwZSA9IFRZUEVfSU5ERVhf VFlQRSAodHlwZSk7Ci0gCi0gICBpZiAoZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3Vu ZCwgJmhpZ2hfYm91bmQpKQotQEAgLTE3MjIsNiArMTc0Nyw4IEBAIHZhbF9wcmludF9hcnJheV9l bGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsCi0gICAgIHsKLSAgICAgICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIuLi4iKTsKLSAgICAgfQotKwotKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OwotIH0KLSAKLSAvKiBSZWFkIExFTiBieXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3Mg TUVNQUREUiwgcGxhY2luZyB0aGUKLWRpZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1 ZS5jCi1pbmRleCA4NTQyMzE2Li5mNzVjZjM3IDEwMDY0NAotLS0tIGEvZ2RiL3ZhbHVlLmMKLSsr KyBiL2dkYi92YWx1ZS5jCi1AQCAtNDMsNiArNDMsNyBAQAotICNpbmNsdWRlICJ0cmFjZXBvaW50 LmgiCi0gI2luY2x1ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKLSsjaW5j bHVkZSAib2JzZXJ2ZXIuaCIKLSAKLSAvKiBQcm90b3R5cGVzIGZvciBleHBvcnRlZCBmdW5jdGlv bnMuICAqLwotIAotQEAgLTE2MjMsMTIgKzE2MjQsMTUgQEAgdm9pZAotIHNldF92YWx1ZV9jb21w b25lbnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAotIAkJCSAgICAgIGNvbnN0 IHN0cnVjdCB2YWx1ZSAqd2hvbGUpCi0gewotKyAgQ09SRV9BRERSIGFkZHI7Ci0rCi0gICBpZiAo d2hvbGUtPmx2YWwgPT0gbHZhbF9pbnRlcm5hbHZhcikKLSAgICAgVkFMVUVfTFZBTCAoY29tcG9u ZW50KSA9IGx2YWxfaW50ZXJuYWx2YXJfY29tcG9uZW50OwotICAgZWxzZQotICAgICBWQUxVRV9M VkFMIChjb21wb25lbnQpID0gd2hvbGUtPmx2YWw7Ci0gCi0gICBjb21wb25lbnQtPmxvY2F0aW9u ID0gd2hvbGUtPmxvY2F0aW9uOwotKwotICAgaWYgKHdob2xlLT5sdmFsID09IGx2YWxfY29tcHV0 ZWQpCi0gICAgIHsKLSAgICAgICBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB3aG9s ZS0+bG9jYXRpb24uY29tcHV0ZWQuZnVuY3M7Ci1AQCAtMTYzNiw2ICsxNjQwLDEyIEBAIHNldF92 YWx1ZV9jb21wb25lbnRfbG9jYXRpb24gKHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAotICAgICAg IGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQotICAgICAgICAgY29tcG9uZW50LT5sb2NhdGlvbi5j b21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlfY2xvc3VyZSAod2hvbGUpOwotICAgICB9Ci0r Ci0rICBhZGRyID0gdmFsdWVfcmF3X2FkZHJlc3MgKGNvbXBvbmVudCk7Ci0rICBvYmplY3RfYWRk cmVzc19nZXRfZGF0YSAodmFsdWVfdHlwZSAod2hvbGUpLCAmYWRkcik7Ci0rICBpZiAoY29tcG9u ZW50LT5sdmFsICE9IGx2YWxfaW50ZXJuYWx2YXIKLSsgICAgICAmJiBjb21wb25lbnQtPmx2YWwg IT0gbHZhbF9pbnRlcm5hbHZhcl9jb21wb25lbnQpCi0rICAgIHNldF92YWx1ZV9hZGRyZXNzIChj b21wb25lbnQsIGFkZHIpOwotIH0KLSAKLSAMCi1AQCAtMTc2OSw2ICsxNzc5LDMxIEBAIHNob3df dmFsdWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkpCi0gICAgICAgbnVtX2V4cFsxXSA9 ICdcMCc7Ci0gICAgIH0KLSB9Ci0rCi0rLyogU2FuaXR5IGNoZWNrIGZvciBtZW1vcnkgbGVha3Mg YW5kIHByb3BlciB0eXBlcyByZWZlcmVuY2UgY291bnRpbmcuICAqLwotKwotK3N0YXRpYyB2b2lk Ci0rdmFsdWVfaGlzdG9yeV9jbGVhbnVwICh2b2lkICp1bnVzZWQpCi0rewotKyAgd2hpbGUgKHZh bHVlX2hpc3RvcnlfY2hhaW4pCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdmFsdWVfaGlzdG9yeV9j aHVuayAqY2h1bmsgPSB2YWx1ZV9oaXN0b3J5X2NoYWluOwotKyAgICAgIGludCBpOwotKwotKyAg ICAgIGZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFIChjaHVuay0+dmFsdWVzKTsgaSsrKQotKyAg ICAgIAl2YWx1ZV9mcmVlIChjaHVuay0+dmFsdWVzW2ldKTsKLSsKLSsgICAgICB2YWx1ZV9oaXN0 b3J5X2NoYWluID0gY2h1bmstPm5leHQ7Ci0rICAgICAgeGZyZWUgKGNodW5rKTsKLSsgICAgfQot KyAgdmFsdWVfaGlzdG9yeV9jb3VudCA9IDA7Ci0rCi0rICAvKiBGcmVlIHRoZSB1bnJlZmVyZW5j ZWQgdHlwZXMgYWJvdmUuICAqLwotKyAgZnJlZV9hbGxfdmFsdWVzICgpOwotKyNpZiAwCi0rICBm cmVlX2FsbF90eXBlcyAoKTsKLSsjZW5kaWYKLSt9Ci0gDAotIC8qIEludGVybmFsIHZhcmlhYmxl cy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgotICAgIHRoYXQgaG9s ZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMjMwNCw2ICsyMzM5 LDM4IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot ICAgcmV0dXJuICgqaWZuLT5oYW5kbGVyKSAoZ2RiYXJjaCwgbGFuZ3VhZ2UsIGlmbi0+Y29va2ll LCBhcmdjLCBhcmd2KTsKLSB9Ci0gCi0rI2lmIDAKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZv ciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK3ZhbHVlX3R5cGVzX21hcmtfdXNlZCAodm9pZCkKLSt7Ci0rICBzdHJ1 Y3QgaW50ZXJuYWx2YXIgKnZhcjsKLSsgIHN0cnVjdCB2YWx1ZV9oaXN0b3J5X2NodW5rICpjaHVu azsKLSsKLSsgIGZvciAodmFyID0gaW50ZXJuYWx2YXJzOyB2YXIgIT0gTlVMTDsgdmFyID0gdmFy LT5uZXh0KQotKyAgICBzd2l0Y2ggKHZhci0+a2luZCkKLSsgICAgICB7Ci0rICAgICAgY2FzZSBJ TlRFUk5BTFZBUl9WQUxVRToKLSsJdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKHZhci0+dS52 YWx1ZSkpOwotKwlicmVhazsKLSsKLSsgICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVHRVI6Ci0r CXR5cGVfbWFya191c2VkICh2YXItPnUuaW50ZWdlci50eXBlKTsKLSsJYnJlYWs7Ci0rICAgICAg fQotKwotKyAgZm9yIChjaHVuayA9IHZhbHVlX2hpc3RvcnlfY2hhaW47IGNodW5rICE9IE5VTEw7 IGNodW5rID0gY2h1bmstPm5leHQpCi0rICAgIHsKLSsgICAgICBpbnQgaTsKLSsKLSsgICAgICBm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSAoY2h1bmstPnZhbHVlcyk7IGkrKykKLSsJaWYgKGNo dW5rLT52YWx1ZXNbaV0pCi0rCSAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGNodW5rLT52 YWx1ZXNbaV0pKTsKLSsgICAgfQotK30KLSsjZW5kaWYKLSsKLSAvKiBUaGUgJ2Z1bmN0aW9uJyBj b21tYW5kLiAgVGhpcyBkb2VzIG5vdGhpbmcgLS0gaXQgaXMganVzdCBhCi0gICAgcGxhY2Vob2xk ZXIgdG8gbGV0ICJoZWxwIGZ1bmN0aW9uIE5BTUUiIHdvcmsuICBUaGlzIGlzIGFsc28gdXNlZCBh cwotICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3ViLWNvbW1hbmQgdGhhdCBpcyBjcmVh dGVkIHdoZW4KLUBAIC0yMzUxLDExICsyNDE4LDEwIEBAIHByZXNlcnZlX29uZV92YWx1ZSAoc3Ry dWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkgICAgaHRhYl90 IGNvcGllZF90eXBlcykKLSB7Ci0gICBpZiAoVFlQRV9PQkpGSUxFICh2YWx1ZS0+dHlwZSkgPT0g b2JqZmlsZSkKLS0gICAgdmFsdWUtPnR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxl LCB2YWx1ZS0+dHlwZSwgY29waWVkX3R5cGVzKTsKLSsgICAgdmFsdWUtPnR5cGUgPSBjb3B5X3R5 cGVfcmVjdXJzaXZlICh2YWx1ZS0+dHlwZSwgY29waWVkX3R5cGVzKTsKLSAKLSAgIGlmIChUWVBF X09CSkZJTEUgKHZhbHVlLT5lbmNsb3NpbmdfdHlwZSkgPT0gb2JqZmlsZSkKLS0gICAgdmFsdWUt PmVuY2xvc2luZ190eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwKLS0JCQkJCQkg dmFsdWUtPmVuY2xvc2luZ190eXBlLAotKyAgICB2YWx1ZS0+ZW5jbG9zaW5nX3R5cGUgPSBjb3B5 X3R5cGVfcmVjdXJzaXZlICh2YWx1ZS0+ZW5jbG9zaW5nX3R5cGUsCi0gCQkJCQkJIGNvcGllZF90 eXBlcyk7Ci0gfQotIAotQEAgLTIzNzAsNyArMjQzNiw3IEBAIHByZXNlcnZlX29uZV9pbnRlcm5h bHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot ICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVHRVI6Ci0gICAgICAgaWYgKHZhci0+dS5pbnRlZ2Vy LnR5cGUgJiYgVFlQRV9PQkpGSUxFICh2YXItPnUuaW50ZWdlci50eXBlKSA9PSBvYmpmaWxlKQot IAl2YXItPnUuaW50ZWdlci50eXBlCi0tCSAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxl LCB2YXItPnUuaW50ZWdlci50eXBlLCBjb3BpZWRfdHlwZXMpOwotKwkgID0gY29weV90eXBlX3Jl Y3Vyc2l2ZSAodmFyLT51LmludGVnZXIudHlwZSwgY29waWVkX3R5cGVzKTsKLSAgICAgICBicmVh azsKLSAKLSAgICAgY2FzZSBJTlRFUk5BTFZBUl9WQUxVRToKLUBAIC0zNDc5LDEwICszNTQ1LDI3 IEBAIHJlYWRqdXN0X2luZGlyZWN0X3ZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0 cnVjdCB0eXBlICplbmNfdHlwZSwKLSBzdHJ1Y3QgdmFsdWUgKgotIGNvZXJjZV9yZWYgKHN0cnVj dCB2YWx1ZSAqYXJnKQotIHsKLS0gIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlX2FyZ190bXAgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKLSsgIHN0cnVjdCB0eXBlICp2YWx1ZV90 eXBlX2FyZ190bXA7Ci0gICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKLSAgIHN0cnVjdCB0eXBlICpl bmNfdHlwZTsKLSAKLSsgIGlmIChUWVBFX0RZTkFNSUMgKHZhbHVlX3R5cGUgKGFyZykpKQotKyAg ICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxs X2NsZWFudXAsIE5VTEwpOwotKyAgICAgIENPUkVfQUREUiBhZGRyZXNzOwotKwotKyAgICAgIHZh bHVlX3R5cGVfYXJnX3RtcCA9IHZhbHVlX3R5cGUgKGFyZyk7Ci0rICAgICAgYWRkcmVzcyA9IHZh bHVlX3Jhd19hZGRyZXNzIChhcmcpOwotKyAgICAgIHZhbHVlX3R5cGVfYXJnX3RtcCA9IG9iamVj dF9hZGRyZXNzX2dldF9kYXRhICh2YWx1ZV90eXBlX2FyZ190bXAsCi0rCQkJCQkJICAgICZhZGRy ZXNzKTsKLSsgICAgICBpZiAoISB2YWx1ZV90eXBlX2FyZ190bXApCi0rCWVycm9yIChfKCJBdHRl bXB0IHRvIGNvZXJjZSBub24tdmFsaWQgdmFsdWUuIikpOwotKyAgICAgIGFyZyA9IHZhbHVlX2F0 X2xhenkgKHZhbHVlX3R5cGVfYXJnX3RtcCwgYWRkcmVzcyk7Ci0rICAgICAgZG9fY2xlYW51cHMg KGNsZWFudXBzKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB2YWx1ZV90eXBlX2FyZ190bXAgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKLSsKLSAgIHJldHZhbCA9IGNvZXJjZV9y ZWZfaWZfY29tcHV0ZWQgKGFyZyk7Ci0gICBpZiAocmV0dmFsKQotICAgICByZXR1cm4gcmV0dmFs OwotQEAgLTM1OTAsNyArMzY3Myw4IEBAIGludAotIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2 YWx1ZSAqdmFsKQotIHsKLSAgIGdkYl9hc3NlcnQgKHZhbHVlX2xhenkgKHZhbCkpOwotLSAgYWxs b2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0rICBpZiAoVkFMVUVfTFZBTCAodmFsKSAhPSBs dmFsX21lbW9yeSkKLSsgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0gICBpZiAo dmFsdWVfYml0c2l6ZSAodmFsKSkKLSAgICAgewotICAgICAgIC8qIFRvIHJlYWQgYSBsYXp5IGJp dGZpZWxkLCByZWFkIHRoZSBlbnRpcmUgZW5jbG9zaW5nIHZhbHVlLiAgVGhpcwotQEAgLTM2MjUs MTMgKzM3MDksMjQgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCi0gICAg IH0KLSAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCi0gICAgIHsK LS0gICAgICBDT1JFX0FERFIgYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7Ci0tICAgICAgc3Ry dWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFs KSk7Ci0rICAgICAgQ09SRV9BRERSIGFkZHIgPSB2YWx1ZV9yYXdfYWRkcmVzcyAodmFsKTsKLSsK LSsgICAgICBpZiAob2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHZhbHVlX3R5cGUgKHZhbCksICZh ZGRyKSkKLSsJewotKwkgIHN0cnVjdCB0eXBlICp0eXBlID0gdmFsdWVfZW5jbG9zaW5nX3R5cGUg KHZhbCk7Ci0rCSAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmICh0eXBl KSk7Ci0gCi0tICAgICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSkKLS0JcmVhZF92YWx1ZV9tZW1v cnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sgKHZhbCksCi0tCQkJICAgYWRkciwgdmFsdWVfY29udGVu dHNfYWxsX3JhdyAodmFsKSwKLS0JCQkgICBUWVBFX0xFTkdUSCAodHlwZSkpOwotKwkgIGlmIChs ZW5ndGgpCi0rCSAgICB7Ci0rCSAgICAgIC8qIERlbGF5IGl0IGFmdGVyIG9iamVjdF9hZGRyZXNz X2dldF9kYXRhIGFib3ZlLiAgKi8KLSsJICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZh bCk7Ci0rCSAgICAgIGFkZHIgKz0gdmFsdWVfb2Zmc2V0ICh2YWwpOwotKwkgICAgICByZWFkX3Zh bHVlX21lbW9yeSAodmFsLCAwLCB2YWx1ZV9zdGFjayAodmFsKSwKLSsJCQkJIGFkZHIsIHZhbHVl X2NvbnRlbnRzX2FsbF9yYXcgKHZhbCksIGxlbmd0aCk7Ci0rCSAgICB9Ci0rCX0KLSsgICAgICAv KiBKdXN0IHRvIGJlIHN1cmUgaXQgaGFzIGJlZW4gY2FsbGVkLiAgKi8KLSsgICAgICBhbGxvY2F0 ZV92YWx1ZV9jb250ZW50cyAodmFsKTsKLSAgICAgfQotICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAo dmFsKSA9PSBsdmFsX3JlZ2lzdGVyKQotICAgICB7Ci1AQCAtMzgxNCw0ICszOTA5LDEwIEBAIENo ZWNrIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBpcyB2b2lkLlxuXAotIFVzYWdlOiAkX2lzdm9pZCAo ZXhwcmVzc2lvbilcblwKLSBSZXR1cm4gMSBpZiB0aGUgZXhwcmVzc2lvbiBpcyB2b2lkLCB6ZXJv IG90aGVyd2lzZS4iKSwKLSAJCQkgaXN2b2lkX2ludGVybmFsX2ZuLCBOVUxMKTsKLSsKLSsgIG1h a2VfZmluYWxfY2xlYW51cCAodmFsdWVfaGlzdG9yeV9jbGVhbnVwLCBOVUxMKTsKLSsKLSsjaWYg MAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAodmFsdWVfdHlwZXNfbWFya191c2VkKTsK LSsjZW5kaWYKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9nZGIvdmFsdWUuaAotaW5k ZXggNTkyNGIyZi4uZWFlMzU1MyAxMDA2NDQKLS0tLSBhL2dkYi92YWx1ZS5oCi0rKysgYi9nZGIv dmFsdWUuaAotQEAgLTU3MSw2ICs1NzEsMTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf ZnJvbV9kZWNmbG9hdCAoc3RydWN0IHR5cGUgKnR5cGUsCi0gCQkJCQkgIGNvbnN0IGdkYl9ieXRl ICpkZWNieXRlcyk7Ci0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9oaXN0b3J5X3Jl ZiAoY2hhciAqLCBjaGFyICoqKTsKLSAKLStleHRlcm4gY29uc3QgY2hhciAqb2JqZWN0X2FkZHJl c3NfZGF0YV9ub3RfdmFsaWQgKHN0cnVjdCB0eXBlICp0eXBlKTsKLStleHRlcm4gc3RydWN0IHR5 cGUgKm9iamVjdF9hZGRyZXNzX2dldF9kYXRhIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCSAg ICAgQ09SRV9BRERSICphZGRyZXNzX3JldHVybik7Ci0rCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAq dmFsdWVfYXQgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7Ci0gZXh0ZXJuIHN0 cnVjdCB2YWx1ZSAqdmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBh ZGRyKTsKLSAKCmRpZmYgLS1naXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNo IGIvZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNS5wYXRjaAppbmRleCAxZjU4ZDM0Li45MWQy OTU5IDEwMDY0NAotLS0gYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCisrKyBi L2dkYi1hdHRhY2gtZmFpbC1yZWFzb25zLTVvZjUucGF0Y2gKQEAgLTM3LDEwICszNywxMCBAQCBn ZGIvZ2Ric2VydmVyLwogCShsaW51eF9jcmVhdGVfaW5mZXJpb3IsIGxpbnV4X3RyYWNlZm9ya19j aGlsZCk6IENhbGwgaXQgaW5zdGVhZCBvZgogCWRpcmVjdCBwdHJhY2UuCiAKLUluZGV4OiBnZGIt Ny42LjkwLjIwMTQwMTI3L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKK0luZGV4OiBnZGItNy43 LjUwLjIwMTQwNjA5L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwkyMDE0LTAy LTA2IDE3OjQwOjMyLjUzMDE0NTk2MCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2Ri L2NvbW1vbi9saW51eC1wdHJhY2UuYwkyMDE0LTAyLTA2IDE3OjQ4OjE2LjMyOTY0NDUzNCArMDEw MAorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5j CTIwMTQtMDYtMTMgMjA6Mjg6MDQuMzc1ODg0ODI4ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTQtMDYtMTMgMjA6Mjg6NTcuNTE0OTQw MDc5ICswMjAwCiBAQCAtMzIsNiArMzIsMTAgQEAKICAKICAjaW5jbHVkZSA8c3RkaW50Lmg+CkBA IC01MiwxNiArNTIsMTYgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbW1vbi9s aW51eC1wdHJhY2UuYwogIC8qIFN0b3JlcyB0aGUgY3VycmVudGx5IHN1cHBvcnRlZCBwdHJhY2Ug b3B0aW9ucy4gIEEgdmFsdWUgb2YKICAgICAtMSBtZWFucyB3ZSBkaWQgbm90IGNoZWNrIGZvciBm ZWF0dXJlcyB5ZXQuICBBIHZhbHVlIG9mIDAgbWVhbnMKICAgICB0aGVyZSBhcmUgbm8gc3VwcG9y dGVkIGZlYXR1cmVzLiAgKi8KLUBAIC01Niw2ICs2MCw4IEBAIGxpbnV4X3B0cmFjZV9hdHRhY2hf d2FybmluZ3MgKHBpZF90IHBpZCwKLSAgICAgYnVmZmVyX3htbF9wcmludGYgKGJ1ZmZlciwgXygi d2FybmluZzogcHJvY2VzcyAlZCBpcyBhIHpvbWJpZSAiCi0gCQkJCSAiLSB0aGUgcHJvY2VzcyBo YXMgYWxyZWFkeSB0ZXJtaW5hdGVkXG4iKSwKK0BAIC01Niw2ICs2MCw4IEBAIGxpbnV4X3B0cmFj ZV9hdHRhY2hfZmFpbF9yZWFzb24gKHBpZF90IHAKKyAgICAgYnVmZmVyX3htbF9wcmludGYgKGJ1 ZmZlciwgXygicHJvY2VzcyAlZCBpcyBhIHpvbWJpZSAiCisgCQkJCSAiLSB0aGUgcHJvY2VzcyBo YXMgYWxyZWFkeSB0ZXJtaW5hdGVkIiksCiAgCQkgICAgICAgKGludCkgcGlkKTsKICsKICsgIGxp bnV4X3B0cmFjZV9jcmVhdGVfd2FybmluZ3MgKGJ1ZmZlcik7CiAgfQogIAogICNpZiBkZWZpbmVk IF9faTM4Nl9fIHx8IGRlZmluZWQgX194ODZfNjRfXwotQEAgLTU0MiwzICs1NDgsMTkgQEAgbGlu dXhfcHRyYWNlX2luaXRfd2FybmluZ3MgKHZvaWQpCitAQCAtNTUxLDMgKzU1NywxOSBAQCBsaW51 eF9wdHJhY2VfaW5pdF93YXJuaW5ncyAodm9pZCkKICAKICAgIGxpbnV4X3B0cmFjZV90ZXN0X3Jl dF90b19ueCAoKTsKICB9CkBAIC04MSwyMyArODEsMjMgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuYwogKwkJCSAiKGdkYikgc2hlbGwgc3VkbyBz ZXRzZWJvb2wgZGVueV9wdHJhY2U9MCIpKTsKICsjZW5kaWYgLyogSEFWRV9MSUJTRUxJTlVYICov CiArfQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2Uu aAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvY29tbW9uL2xpbnV4 LXB0cmFjZS5oCTIwMTQtMDItMDYgMTc6NDA6MzUuNTA2MTQ5MTYyICswMTAwCi0rKysgZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTQtMDItMDYgMTc6NDg6 MDAuNjAxNjI3OTk1ICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9jb21t b24vbGludXgtcHRyYWNlLmgJMjAxNC0wNi0xMyAyMDoyODoxNC4zNzU4OTUyMDIgKzAyMDAKKysr KyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgJMjAxNC0wNi0x MyAyMDoyODozMy4yOTg5MTQwNDcgKzAyMDAKIEBAIC04NSw2ICs4NSw3IEBAIHN0cnVjdCBidWZm ZXI7CiAgCi0gZXh0ZXJuIHZvaWQgbGludXhfcHRyYWNlX2F0dGFjaF93YXJuaW5ncyAocGlkX3Qg cGlkLCBzdHJ1Y3QgYnVmZmVyICpidWZmZXIpOworIGV4dGVybiB2b2lkIGxpbnV4X3B0cmFjZV9h dHRhY2hfZmFpbF9yZWFzb24gKHBpZF90IHBpZCwgc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsKICBl eHRlcm4gdm9pZCBsaW51eF9wdHJhY2VfaW5pdF93YXJuaW5ncyAodm9pZCk7CiArZXh0ZXJuIHZv aWQgbGludXhfcHRyYWNlX2NyZWF0ZV93YXJuaW5ncyAoc3RydWN0IGJ1ZmZlciAqYnVmZmVyKTsK ICBleHRlcm4gdm9pZCBsaW51eF9lbmFibGVfZXZlbnRfcmVwb3J0aW5nIChwaWRfdCBwaWQpOwor IGV4dGVybiB2b2lkIGxpbnV4X2Rpc2FibGVfZXZlbnRfcmVwb3J0aW5nIChwaWRfdCBwaWQpOwog IGV4dGVybiBpbnQgbGludXhfc3VwcG9ydHNfdHJhY2Vmb3JrICh2b2lkKTsKLSBleHRlcm4gaW50 IGxpbnV4X3N1cHBvcnRzX3RyYWNlY2xvbmUgKHZvaWQpOwotSW5kZXg6IGdkYi03LjYuOTAuMjAx NDAxMjcvZ2RiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2Nv bmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIv Y29uZmlndXJlLmFjCTIwMTQtMDItMDYgMTc6NDA6MzIuNTMyMTQ1OTYyICswMTAwCi0rKysgZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlndXJlLmFjCTIwMTQtMDItMDYgMTc6NDA6MzUuNTA3 MTQ5MTYzICswMTAwCi1AQCAtMTk3NSw2ICsxOTc1LDEwIEBAIGNhc2UgJGhvc3Rfb3MgaW4KKy0t LSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDE0LTA2LTEzIDIw OjI4OjA0LjM3Nzg4NDgzMCArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZp Z3VyZS5hYwkyMDE0LTA2LTEzIDIwOjI4OjE0LjM3Njg5NTIwMyArMDIwMAorQEAgLTIxMzgsNiAr MjEzOCwxMCBAQCBjYXNlICRob3N0X29zIGluCiAgZXNhYwogIEFDX0RFRklORV9VTlFVT1RFRChH REJJTklULCIkZ2RiaW5pdCIsW1RoZSAuZ2RiaW5pdCBmaWxlbmFtZS5dKQogIApAQCAtMTA4LDEw ICsxMDgsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZ3VyZS5hYwog IGRubCBIYW5kbGUgb3B0aW9uYWwgZmVhdHVyZXMgdGhhdCBjYW4gYmUgZW5hYmxlZC4KICAKICAj IFN1cHBvcnQgZm9yIC0td2l0aC1zeXNyb290IGlzIGEgY29weSBvZiBHREJfQUNfV0lUSF9ESVIs Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwor SW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2dkYnNlcnZlci9jb25m aWd1cmUuYWMJMjAxNC0wMi0wNiAxNzo0MDozMi41MzIxNDU5NjIgKzAxMDAKLSsrKyBnZGItNy42 LjkwLjIwMTQwMTI3L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTQtMDItMDYgMTc6NDA6 MzUuNTA3MTQ5MTYzICswMTAwCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9nZGJz ZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTQtMDYtMTMgMjA6Mjg6MDQuMzc3ODg0ODMwICswMjAwCisr KysgZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwkyMDE0LTA2 LTEzIDIwOjI4OjE0LjM3Njg5NTIwMyArMDIwMAogQEAgLTQ1NCw2ICs0NTQsMTAgQEAgaWYgJHdh bnRfaXBhIDsgdGhlbgogICAgIGZpCiAgZmkKQEAgLTEyMywxMSArMTIzLDExIEBAIEluZGV4OiBn ZGItNy42LjkwLjIwMTQwMTI3L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCiAgQUNfU1VCU1Qo R0RCU0VSVkVSX0RFUEZJTEVTKQogIEFDX1NVQlNUKEdEQlNFUlZFUl9MSUJTKQogIEFDX1NVQlNU KHNydl94bWxidWlsdGluKQotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZl ci9saW51eC1sb3cuYworSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2dkYnNlcnZlci9s aW51eC1sb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIv Z2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTQtMDItMDYgMTc6NDA6MzIuNTM0MTQ1OTY0ICswMTAw Ci0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTQt MDItMDYgMTc6NDk6MzIuMzg1NzI2NTE0ICswMTAwCi1AQCAtNTQzLDYgKzU0MywyOSBAQCBhZGRf bHdwIChwdGlkX3QgcHRpZCkKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2dkYnNl cnZlci9saW51eC1sb3cuYwkyMDE0LTA2LTEzIDIwOjI4OjA0LjM3OTg4NDgzMiArMDIwMAorKysr IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDE0LTA2LTEz IDIwOjI4OjE0LjM3Nzg5NTIwNCArMDIwMAorQEAgLTU0MSw2ICs1NDEsMjkgQEAgYWRkX2x3cCAo cHRpZF90IHB0aWQpCiAgICByZXR1cm4gbHdwOwogIH0KICAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBJ bmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCiAgLyog U3RhcnQgYW4gaW5mZXJpb3IgcHJvY2VzcyBhbmQgcmV0dXJucyBpdHMgcGlkLgogICAgIEFMTEFS R1MgaXMgYSB2ZWN0b3Igb2YgcHJvZ3JhbS1uYW1lIGFuZCBhcmdzLiAqLwogIAotQEAgLTU4NCw3 ICs2MDcsNyBAQCBsaW51eF9jcmVhdGVfaW5mZXJpb3IgKGNoYXIgKnByb2dyYW0sIGNoCitAQCAt NTgyLDcgKzYwNSw3IEBAIGxpbnV4X2NyZWF0ZV9pbmZlcmlvciAoY2hhciAqcHJvZ3JhbSwgY2gK ICAgIGlmIChwaWQgPT0gMCkKICAgICAgewogICAgICAgIGNsb3NlX21vc3RfZmRzICgpOwpAQCAt MTY2LDEwICsxNjYsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZl ci9saW51eC1sb3cuYwogIAogICNpZm5kZWYgX19BTkRST0lEX18gLyogQmlvbmljIGRvZXNuJ3Qg dXNlIFNJR1JUTUlOIHRoZSB3YXkgZ2xpYmMgZG9lcy4gICovCiAgICAgICAgc2lnbmFsIChfX1NJ R1JUTUlOICsgMSwgU0lHX0RGTCk7Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvaW5m LXB0cmFjZS5jCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvaW5mLXB0cmFjZS5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9pbmYtcHRyYWNlLmMJ MjAxNC0wMi0wNiAxNzo0MDozMi41MzUxNDU5NjUgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9pbmYtcHRyYWNlLmMJMjAxNC0wMi0wNiAxNzo0MDozNS41MTAxNDkxNjcgKzAxMDAK Ky0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2luZi1wdHJhY2UuYwkyMDE0LTA2LTEz IDIwOjI4OjA0LjM4MDg4NDgzMyArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2lu Zi1wdHJhY2UuYwkyMDE0LTA2LTEzIDIwOjI4OjE0LjM3Nzg5NTIwNCArMDIwMAogQEAgLTEwNSw3 ICsxMDUsMTUgQEAgc3RhdGljIHZvaWQKICBpbmZfcHRyYWNlX21lICh2b2lkKQogIHsKQEAgLTE4 NiwxMSArMTg2LDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9pbmYtcHRyYWNl LmMKICB9CiAgCiAgLyogU3RhcnQgYSBuZXcgaW5mZXJpb3IgVW5peCBjaGlsZCBwcm9jZXNzLiAg RVhFQ19GSUxFIGlzIHRoZSBmaWxlIHRvCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIv bGludXgtbmF0LmMKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9saW51eC1uYXQuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvbGludXgtbmF0LmMJ MjAxNC0wMi0wNiAxNzo0MDozMi41MzcxNDU5NjggKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQw MTI3L2dkYi9saW51eC1uYXQuYwkyMDE0LTAyLTA2IDE3OjQwOjM1LjUxMTE0OTE2OCArMDEwMAot QEAgLTEyODMsNiArMTI4Myw3IEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0 YXJnZXQKKy0tLSBnZGItNy43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTQt MDYtMTMgMjA6Mjg6MDQuMzgyODg0ODM1ICswMjAwCisrKysgZ2RiLTcuNy41MC4yMDE0MDYwOS9n ZGIvbGludXgtbmF0LmMJMjAxNC0wNi0xMyAyMDoyOTozNC41NTQ5Nzc5OTUgKzAyMDAKK0BAIC0x Mjg1LDYgKzEyODUsNyBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0 CiAgI2lmZGVmIEhBVkVfUEVSU09OQUxJVFkKICAgIGludCBwZXJzb25hbGl0eV9vcmlnID0gMCwg cGVyc29uYWxpdHlfc2V0ID0gMDsKICAjZW5kaWYgLyogSEFWRV9QRVJTT05BTElUWSAqLwpAQCAt MTk4LDkgKzE5OCw5IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9saW51eC1uYXQu YwogIAogICAgLyogVGhlIGZvcmtfY2hpbGQgbWVjaGFuaXNtIGlzIHN5bmNocm9ub3VzIGFuZCBj YWxscyB0YXJnZXRfd2FpdCwgc28KICAgICAgIHdlIGhhdmUgdG8gbWFzayB0aGUgYXN5bmMgbW9k ZS4gICovCi1AQCAtMTMwNyw3ICsxMzA4LDEwIEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3Ig KHN0cnVjdCB0YXJnZXQKK0BAIC0xMzA5LDcgKzEzMTAsMTAgQEAgbGludXhfbmF0X2NyZWF0ZV9p bmZlcmlvciAoc3RydWN0IHRhcmdldAogICAgLyogTWFrZSBzdXJlIHdlIHJlcG9ydCBhbGwgc2ln bmFscyBkdXJpbmcgc3RhcnR1cC4gICovCi0gICBsaW51eF9uYXRfcGFzc19zaWduYWxzICgwLCBO VUxMKTsKKyAgIGxpbnV4X25hdF9wYXNzX3NpZ25hbHMgKG9wcywgMCwgTlVMTCk7CiAgCiAtICBs aW51eF9vcHMtPnRvX2NyZWF0ZV9pbmZlcmlvciAob3BzLCBleGVjX2ZpbGUsIGFsbGFyZ3MsIGVu diwgZnJvbV90dHkpOwogKyAgVFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tfRVJST1IpCkBAIC0y MTAsNyArMjEwLDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2xpbnV4LW5hdC5j CiAgCiAgI2lmZGVmIEhBVkVfUEVSU09OQUxJVFkKICAgIGlmIChwZXJzb25hbGl0eV9zZXQpCi1A QCAtMTMxOSw2ICsxMzIzLDI0IEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0 YXJnZXQKK0BAIC0xMzIxLDYgKzEzMjUsMjQgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAo c3RydWN0IHRhcmdldAogIAkJIHNhZmVfc3RyZXJyb3IgKGVycm5vKSk7CiAgICAgIH0KICAjZW5k aWYgLyogSEFWRV9QRVJTT05BTElUWSAqLwpAQCAtMjM1LDExICsyMzUsMTEgQEAgSW5kZXg6IGdk Yi03LjYuOTAuMjAxNDAxMjcvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1J bmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlnLmluCitJbmRleDogZ2RiLTcuNy41 MC4yMDE0MDYwOS9nZGIvY29uZmlnLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0 MDEyNy5vcmlnL2dkYi9jb25maWcuaW4JMjAxNC0wMi0wNiAxNzo0MDozMi41MzgxNDU5NjkgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWcuaW4JMjAxNC0wMi0wNiAxNzo0 MDozNS41MTExNDkxNjggKzAxMDAKLUBAIC0yMTMsNiArMjEzLDkgQEAKKy0tLSBnZGItNy43LjUw LjIwMTQwNjA5Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDE0LTA2LTEzIDIwOjI4OjA0LjM4Mzg4NDgz NiArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy5pbgkyMDE0LTA2LTEz IDIwOjI5OjU3LjM3ODAwMjA2NyArMDIwMAorQEAgLTIxNiw2ICsyMTYsOSBAQAogIC8qIERlZmlu ZSBpZiBsaWJycG0gbGlicmFyeSBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlJQ TQogIApAQCAtMjQ5LDkgKzI0OSw5IEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9j b25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpYnVud2luZC1pYTY0 Lmg+IGhlYWRlciBmaWxlLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORF9JQTY0X0gKICAKLUBA IC0zNDUsNiArMzQ4LDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNicmsn IGZ1bmN0aW9uLiAqLwotICN1bmRlZiBIQVZFX1NCUksKK0BAIC0zNTEsNiArMzU0LDkgQEAKKyAv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNjbV9uZXdfc21vYicgZnVuY3Rpb24uICov CisgI3VuZGVmIEhBVkVfU0NNX05FV19TTU9CCiAgCiArLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgdGhlIDxzZWxpbnV4L3NlbGludXguaD4gaGVhZGVyIGZpbGUuICovCiArI3VuZGVmIEhBVkVf U0VMSU5VWF9TRUxJTlVYX0gKQEAgLTI1OSwxMSArMjU5LDExIEBAIEluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUg YHNldGxvY2FsZScgZnVuY3Rpb24uICovCiAgI3VuZGVmIEhBVkVfU0VUTE9DQUxFCiAgCi1JbmRl eDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlndXJlCitJbmRleDogZ2RiLTcuNy41MC4y MDE0MDYwOS9nZGIvY29uZmlndXJlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEy Ny5vcmlnL2dkYi9jb25maWd1cmUJMjAxNC0wMi0wNiAxNzo0MDozMi41NDExNDU5NzIgKzAxMDAK LSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWd1cmUJMjAxNC0wMi0wNiAxNzo0MDoz NS41MTUxNDkxNzIgKzAxMDAKLUBAIC0xMjg2MSw2ICsxMjg2MSw2NCBAQCBjYXQgPj5jb25mZGVm cy5oIDw8X0FDRU9GCistLS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi9jb25maWd1cmUJ MjAxNC0wNi0xMyAyMDoyODowNC4zODc4ODQ4NDAgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQw NjA5L2dkYi9jb25maWd1cmUJMjAxNC0wNi0xMyAyMDoyODoxNC4zODM4OTUyMTAgKzAyMDAKK0BA IC0xMzI4Miw2ICsxMzI4Miw2NCBAQCBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCiAgX0FDRU9G CiAgCiAgCkBAIC0zMjgsMTEgKzMyOCwxMSBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvY29uZmlndXJlCiAgCiAgIyBTdXBwb3J0IGZvciAtLXdpdGgtc3lzcm9vdCBpcyBhIGNvcHkg b2YgR0RCX0FDX1dJVEhfRElSLAogICMgZXhjZXB0IHRoYXQgdGhlIGFyZ3VtZW50IHRvIC0td2l0 aC1zeXNyb290IGlzIG9wdGlvbmFsLgotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dk YnNlcnZlci9jb25maWcuaW4KK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9nZGJzZXJ2 ZXIvY29uZmlnLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dk Yi9nZGJzZXJ2ZXIvY29uZmlnLmluCTIwMTQtMDItMDYgMTc6NDA6MzIuNTQyMTQ1OTczICswMTAw Ci0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZ2Ric2VydmVyL2NvbmZpZy5pbgkyMDE0LTAy LTA2IDE3OjU0OjA2LjkyMzAyMTc5OSArMDEwMAotQEAgLTc4LDYgKzc4LDkgQEAKKy0tLSBnZGIt Ny43LjUwLjIwMTQwNjA5Lm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWcuaW4JMjAxNC0wNi0xMyAy MDoyODowNC4zODk4ODQ4NDIgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9nZGJz ZXJ2ZXIvY29uZmlnLmluCTIwMTQtMDYtMTMgMjA6Mjg6MTQuMzgzODk1MjEwICswMjAwCitAQCAt ODEsNiArODEsOSBAQAogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWNoZWNrJyBs aWJyYXJ5ICgtbG1jaGVjaykuICovCiAgI3VuZGVmIEhBVkVfTElCTUNIRUNLCiAgCkBAIC0zNDIs NyArMzQyLDcgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9jb25m aWcuaW4KICAvKiBEZWZpbmUgaWYgdGhlIHRhcmdldCBzdXBwb3J0cyBicmFuY2ggdHJhY2luZy4g Ki8KICAjdW5kZWYgSEFWRV9MSU5VWF9CVFJBQ0UKICAKLUBAIC0xNTEsNiArMTU0LDkgQEAKK0BA IC0xNTQsNiArMTU3LDkgQEAKICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRs aW5rJyBmdW5jdGlvbi4gKi8KICAjdW5kZWYgSEFWRV9SRUFETElOSwogIApAQCAtMzUyLDEwICsz NTIsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9jb25maWcu aW4KICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNndHR5Lmg+IGhlYWRlciBmaWxl LiAqLwogICN1bmRlZiBIQVZFX1NHVFRZX0gKICAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIv Z2Ric2VydmVyL2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcu b3JpZy9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZQkyMDE0LTAyLTA2IDE3OjQwOjMyLjU0MzE0NTk3 NCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUJ MjAxNC0wMi0wNiAxNzo0MDozNS41MTYxNDkxNzMgKzAxMDAKKy0tLSBnZGItNy43LjUwLjIwMTQw NjA5Lm9yaWcvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUJMjAxNC0wNi0xMyAyMDoyODowNC4zOTA4 ODQ4NDQgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9nZGJzZXJ2ZXIvY29uZmln dXJlCTIwMTQtMDYtMTMgMjA6Mjg6MTQuMzg0ODk1MjExICswMjAwCiBAQCAtNjE3MCw2ICs2MTcw LDY0IEBAIGlmICR3YW50X2lwYSA7IHRoZW4KICAgICBmaQogIGZpCgpkaWZmIC0tZ2l0IGEvZ2Ri LWJmZC1kZW1hbmdsZWQtbmFtZXMucGF0Y2ggYi9nZGItYmZkLWRlbWFuZ2xlZC1uYW1lcy5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmJkODM0Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWJmZC1kZW1hbmdsZWQtbmFtZXMucGF0Y2gKQEAgLTAsMCArMSwyMDcgQEAK K1JlOiBBU0FOIGNyYXNoIHJlZ3Jlc3Npb24gW1JlOiBbUEFUQ0ggMi8yXSBtb3ZlIHRoZSBkZW1h bmdsZWRfbmFtZXNfaGFzaCBpbnRvIHRoZSBwZXItQkZEXQoraHR0cHM6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDE0LTA2L21zZzAwNTUwLmh0bWwKKworSmFuPiAuL2NvbmZpZ3Vy ZSAuLi4gLWZzYW5pdGl6ZT1hZGRyZXNzCitKYW4+IGVjaG8gJ3ZvaWQgZigpe31tYWluKCl7fSd8 Z2NjIC14IGMrKyAtIC1nO0FTQU5fT1BUSU9OUz1zeW1ib2xpemU9MSBBU0FOX1NZTUJPTElaRVJf UEFUSD0vdXNyL2Jpbi9sbHZtLXN5bWJvbGl6ZXIgLi9nZGIgLWJhdGNoIGEub3V0IC1leCAnZmls ZSBhLm91dCcKKworUmVhZGlseSBzZWVuIHdpdGggdmFsZ3JpbmQgYXMgd2VsbC4KKworSGVyZSdz IG15IHByb3Bvc2VkIGZpeC4KKworVG9tCisKK2NvbW1pdCAzYTkzYTY3YWQwZWEzNDk1ZjY3Yzk3 MDg2NzMzNDViNzNkZTJkODA2CitBdXRob3I6IFRvbSBUcm9tZXkgPHRyb21leUByZWRoYXQuY29t PgorRGF0ZTogICBNb24gSnVuIDE2IDAzOjE3OjE5IDIwMTQgLTA2MDAKKworICAgIGZpeCBtZW1v cnkgZXJyb3JzIHdpdGggZGVtYW5nbGVkIG5hbWUgaGFzaAorICAgIAorICAgIFRoaXMgZml4ZXMg YSByZWdyZXNzaW9uIHRoYXQgSmFuIHBvaW50ZWQgb3V0LgorICAgIAorICAgIFRoZSBidWcgaXMg dGhhdCBzb21lIG5hbWVzIHdlcmUgYWxsb2NhdGVkIGJ5IGR3YXJmMnJlYWQgb24gdGhlIG9iamZp bGUKKyAgICBvYnN0YWNrLCBidXQgdGhlbiBwYXNzZWQgdG8gU1lNQk9MX1NFVF9OQU1FUyB3aXRo IGNvcHlfbmFtZT0wLiAgVGhpcworICAgIHZpb2xhdGVzIHRoZSBpbnZhcmlhbnQgdGhhdCB0aGUg bmFtZXMgbXVzdCBoYXZlIGEgbGlmZXRpbWUgdGllZCB0byB0aGUKKyAgICBsaWZldGltZSBvZiB0 aGUgQkZELgorICAgIAorICAgIFRoZSBmaXggaXMgdG8gYWxsb2NhdGUgbmFtZXMgb24gdGhlIHBl ci1CRkQgb2JzdGFjay4KKyAgICAKKyAgICBJIGxvb2tlZCBhdCBhbGwgY2FsbGVycywgZGlyZWN0 IG9yIGluZGlyZWN0LCBvZiBTWU1CT0xfU0VUX05BTUVTIHRoYXQKKyAgICBwYXNzIGNvcHlfbmFt ZT0wLiAgTm90ZSB0aGF0IG9ubHkgdGhlIEVMRiBhbmQgRFdBUkYgcmVhZGVycyBkbyB0aGlzOwor ICAgIG90aGVyIHN5bWJvbCByZWFkZXJzIHdlcmUgbmV2ZXIgdXBkYXRlZCAoYW5kIHBlcmhhcHMg Y2Fubm90IGJlLAorICAgIGRlcGVuZGluZyBvbiB0aGUgZGV0YWlscyBvZiB0aGUgZm9ybWF0cyku ICBUaGlzIGlzIHdoeSB0aGUgcGF0Y2ggaXMKKyAgICByZWxhdGl2ZWx5IHNtYWxsLgorICAgIAor ICAgIEJ1aWx0IGFuZCByZWd0ZXN0ZWQgb24geDg2LTY0IEZlZG9yYSAyMC4KKyAgICAKKyAgICAy MDE0LTA2LTE2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgICAgCisgICAgCSog ZHdhcmYycmVhZC5jIChmaXh1cF9nb19wYWNrYWdpbmcsIGR3YXJmMl9jb21wdXRlX25hbWUpCisg ICAgCShkd2FyZjJfcGh5c25hbWUsIHJlYWRfcGFydGlhbF9kaWUpCisgICAgCShndWVzc19wYXJ0 aWFsX2RpZV9zdHJ1Y3R1cmVfbmFtZSwgZml4dXBfcGFydGlhbF9kaWUpCisgICAgCShndWVzc19m dWxsX2RpZV9zdHJ1Y3R1cmVfbmFtZSwgYW5vbnltb3VzX3N0cnVjdF9wcmVmaXgpCisgICAgCShk d2FyZjJfbmFtZSk6IFVzZSBwZXItQkZEIG9ic3RhY2suCisKKyMjIyBhL2dkYi9DaGFuZ2VMb2cK KyMjIyBiL2dkYi9DaGFuZ2VMb2cKKyMjIC0xLDUgKzEsMTMgQEAKKyAyMDE0LTA2LTE2ICBUb20g VHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgCisrCSogZHdhcmYycmVhZC5jIChmaXh1cF9n b19wYWNrYWdpbmcsIGR3YXJmMl9jb21wdXRlX25hbWUpCisrCShkd2FyZjJfcGh5c25hbWUsIHJl YWRfcGFydGlhbF9kaWUpCisrCShndWVzc19wYXJ0aWFsX2RpZV9zdHJ1Y3R1cmVfbmFtZSwgZml4 dXBfcGFydGlhbF9kaWUpCisrCShndWVzc19mdWxsX2RpZV9zdHJ1Y3R1cmVfbmFtZSwgYW5vbnlt b3VzX3N0cnVjdF9wcmVmaXgpCisrCShkd2FyZjJfbmFtZSk6IFVzZSBwZXItQkZEIG9ic3RhY2su CisrCisrMjAxNC0wNi0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorKworIAkq IG1pbnN5bXMuaCAocHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wpCisgCShwcmltX3JlY29yZF9t aW5pbWFsX3N5bWJvbF9hbmRfaW5mbyk6IFVwZGF0ZSBjb21tZW50cy4KKyAKKy0tLSBhL2dkYi9k d2FyZjJyZWFkLmMKKysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKK0BAIC03NzQ1LDkgKzc3NDUsMTAg QEAgZml4dXBfZ29fcGFja2FnaW5nIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIGlmIChwYWNr YWdlX25hbWUgIT0gTlVMTCkKKyAgICAgeworICAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl ID0gY3UtPm9iamZpbGU7CistICAgICAgY29uc3QgY2hhciAqc2F2ZWRfcGFja2FnZV9uYW1lID0g b2JzdGFja19jb3B5MCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkJCQkgICAgICBw YWNrYWdlX25hbWUsCistCQkJCQkJICAgICAgc3RybGVuIChwYWNrYWdlX25hbWUpKTsKKysgICAg ICBjb25zdCBjaGFyICpzYXZlZF9wYWNrYWdlX25hbWUKKysJPSBvYnN0YWNrX2NvcHkwICgmb2Jq ZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrLAorKwkJCSBwYWNrYWdlX25hbWUsCisrCQkJ IHN0cmxlbiAocGFja2FnZV9uYW1lKSk7CisgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBpbml0 X3R5cGUgKFRZUEVfQ09ERV9NT0RVTEUsIDAsIDAsCisgCQkJCSAgICAgc2F2ZWRfcGFja2FnZV9u YW1lLCBvYmpmaWxlKTsKKyAgICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CitAQCAtODM2NSw2ICs4 MzY2LDggQEAgZHdhcmYyX2NvbXB1dGVfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwKKyAJICBsb25n IGxlbmd0aDsKKyAJICBjb25zdCBjaGFyICpwcmVmaXg7CisgCSAgc3RydWN0IHVpX2ZpbGUgKmJ1 ZjsKKysJICBjaGFyICppbnRlcm1lZGlhdGVfbmFtZTsKKysJICBjb25zdCBjaGFyICpjYW5vbmlj YWxfbmFtZSA9IE5VTEw7CisgCisgCSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBj dSk7CisgCSAgYnVmID0gbWVtX2ZpbGVvcGVuICgpOworQEAgLTg1NDEsMTkgKzg1NDQsMjUgQEAg ZHdhcmYyX2NvbXB1dGVfbmFtZSAoY29uc3QgY2hhciAqbmFtZSwKKyAJCX0KKyAJICAgIH0KKyAK Ky0JICBuYW1lID0gdWlfZmlsZV9vYnNhdmVzdHJpbmcgKGJ1ZiwgJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjaywKKy0JCQkJICAgICAgICZsZW5ndGgpOworKwkgIGludGVybWVkaWF0ZV9uYW1lID0g dWlfZmlsZV94c3RyZHVwIChidWYsICZsZW5ndGgpOworIAkgIHVpX2ZpbGVfZGVsZXRlIChidWYp OworIAorIAkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCistCSAgICB7Cist CSAgICAgIGNvbnN0IGNoYXIgKmNuYW1lCistCQk9IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAo bmFtZSwgY3UsCistCQkJCQkgICAgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7CisrCSAgICBj YW5vbmljYWxfbmFtZQorKwkgICAgICA9IGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAoaW50ZXJt ZWRpYXRlX25hbWUsIGN1LAorKwkJCQkJICAmb2JqZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0 YWNrKTsKKysKKysJICAvKiBJZiB3ZSBvbmx5IGNvbXB1dGVkIElOVEVSTUVESUFURV9OQU1FLCBv ciBpZgorKwkgICAgIElOVEVSTUVESUFURV9OQU1FIGlzIGFscmVhZHkgY2Fub25pY2FsLCB0aGVu IHdlIG5lZWQgdG8KKysJICAgICBjb3B5IGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBvYnN0YWNrLiAg Ki8KKysJICBpZiAoY2Fub25pY2FsX25hbWUgPT0gTlVMTCB8fCBjYW5vbmljYWxfbmFtZSA9PSBp bnRlcm1lZGlhdGVfbmFtZSkKKysJICAgIG5hbWUgPSBvYnN0YWNrX2NvcHkwICgmb2JqZmlsZS0+ cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrLAorKwkJCQkgIGludGVybWVkaWF0ZV9uYW1lLAorKwkJ CQkgIHN0cmxlbiAoaW50ZXJtZWRpYXRlX25hbWUpKTsKKysJICBlbHNlCisrCSAgICBuYW1lID0g Y2Fub25pY2FsX25hbWU7CisgCistCSAgICAgIGlmIChjbmFtZSAhPSBOVUxMKQorLQkJbmFtZSA9 IGNuYW1lOworLQkgICAgfQorKwkgIHhmcmVlIChpbnRlcm1lZGlhdGVfbmFtZSk7CisgCX0KKyAg ICAgfQorIAorQEAgLTg1NjIsNyArODU3MSw3IEBAIGR3YXJmMl9jb21wdXRlX25hbWUgKGNvbnN0 IGNoYXIgKm5hbWUsCisgCisgLyogUmV0dXJuIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiBE SUUsIGJhc2VkIG9uIGl0cyBEV19BVF9uYW1lLgorICAgIElmIHNjb3BlIHF1YWxpZmllcnMgYXJl IGFwcHJvcHJpYXRlIHRoZXkgd2lsbCBiZSBhZGRlZC4gIFRoZSByZXN1bHQKKy0gICB3aWxsIGJl IGFsbG9jYXRlZCBvbiB0aGUgb2JqZmlsZV9vYnN0YWNrLCBvciBOVUxMIGlmIHRoZSBESUUgZG9l cworKyAgIHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBzdG9yYWdlX29ic3RhY2ssIG9yIE5VTEwg aWYgdGhlIERJRSBkb2VzCisgICAgbm90IGhhdmUgYSBuYW1lLiAgTkFNRSBtYXkgZWl0aGVyIGJl IGZyb20gYSBwcmV2aW91cyBjYWxsIHRvCisgICAgZHdhcmYyX25hbWUgb3IgTlVMTC4KKyAKK0BA IC04Njc3LDcgKzg2ODYsOCBAQCBkd2FyZjJfcGh5c25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgcmV0dmFsID0g Y2Fub247CisgCisgICBpZiAobmVlZF9jb3B5KQorLSAgICByZXR2YWwgPSBvYnN0YWNrX2NvcHkw ICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCByZXR2YWwsIHN0cmxlbiAocmV0dmFsKSk7Cisr ICAgIHJldHZhbCA9IG9ic3RhY2tfY29weTAgKCZvYmpmaWxlLT5wZXJfYmZkLT5zdG9yYWdlX29i c3RhY2ssCisrCQkJICAgIHJldHZhbCwgc3RybGVuIChyZXR2YWwpKTsKKyAKKyAgIGRvX2NsZWFu dXBzIChiYWNrX3RvKTsKKyAgIHJldHVybiByZXR2YWw7CitAQCAtMTU1MDgsNyArMTU1MTgsNyBA QCByZWFkX3BhcnRpYWxfZGllIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVy LAorIAkgICAgZGVmYXVsdDoKKyAJICAgICAgcGFydF9kaWUtPm5hbWUKKyAJCT0gZHdhcmYyX2Nh bm9uaWNhbGl6ZV9uYW1lIChEV19TVFJJTkcgKCZhdHRyKSwgY3UsCistCQkJCQkgICAgJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjayk7CisrCQkJCQkgICAgJm9iamZpbGUtPnBlcl9iZmQtPnN0b3Jh Z2Vfb2JzdGFjayk7CisgCSAgICAgIGJyZWFrOworIAkgICAgfQorIAkgIGJyZWFrOworQEAgLTE1 NzkzLDcgKzE1ODAzLDcgQEAgZ3Vlc3NfcGFydGlhbF9kaWVfc3RydWN0dXJlX25hbWUgKHN0cnVj dCBwYXJ0aWFsX2RpZV9pbmZvICpzdHJ1Y3RfcGRpLAorIAkgIGlmIChhY3R1YWxfY2xhc3NfbmFt ZSAhPSBOVUxMKQorIAkgICAgeworIAkgICAgICBzdHJ1Y3RfcGRpLT5uYW1lCistCQk9IG9ic3Rh Y2tfY29weTAgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJPSBvYnN0YWNrX2Nv cHkwICgmY3UtPm9iamZpbGUtPnBlcl9iZmQtPnN0b3JhZ2Vfb2JzdGFjaywKKyAJCQkJIGFjdHVh bF9jbGFzc19uYW1lLAorIAkJCQkgc3RybGVuIChhY3R1YWxfY2xhc3NfbmFtZSkpOworIAkgICAg ICB4ZnJlZSAoYWN0dWFsX2NsYXNzX25hbWUpOworQEAgLTE1ODc5LDggKzE1ODg5LDkgQEAgZml4 dXBfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKKyAJICBl bHNlCisgCSAgICBiYXNlID0gZGVtYW5nbGVkOworIAorLQkgIHBhcnRfZGllLT5uYW1lID0gb2Jz dGFja19jb3B5MCAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCistCQkJCQkgIGJhc2Us IHN0cmxlbiAoYmFzZSkpOworKwkgIHBhcnRfZGllLT5uYW1lCisrCSAgICA9IG9ic3RhY2tfY29w eTAgKCZjdS0+b2JqZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrLAorKwkJCSAgICAgYmFz ZSwgc3RybGVuIChiYXNlKSk7CisgCSAgeGZyZWUgKGRlbWFuZ2xlZCk7CisgCX0KKyAgICAgfQor QEAgLTE4NTU3LDcgKzE4NTY4LDcgQEAgZ3Vlc3NfZnVsbF9kaWVfc3RydWN0dXJlX25hbWUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAJCQkgICYmIGFjdHVh bF9uYW1lW2FjdHVhbF9uYW1lX2xlbgorIAkJCQkJIC0gZGllX25hbWVfbGVuIC0gMV0gPT0gJzon KQorIAkJCW5hbWUgPQorLQkJCSAgb2JzdGFja19jb3B5MCAoJmN1LT5vYmpmaWxlLT5vYmpmaWxl X29ic3RhY2ssCisrCQkJICBvYnN0YWNrX2NvcHkwICgmY3UtPm9iamZpbGUtPnBlcl9iZmQtPnN0 b3JhZ2Vfb2JzdGFjaywKKyAJCQkJCSBhY3R1YWxfbmFtZSwKKyAJCQkJCSBhY3R1YWxfbmFtZV9s ZW4gLSBkaWVfbmFtZV9sZW4gLSAyKTsKKyAJCSAgICB9CitAQCAtMTg2MDMsNyArMTg2MTQsNyBA QCBhbm9ueW1vdXNfc3RydWN0X3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorICAgaWYgKGJhc2UgPT0gTlVMTCB8fCBiYXNlID09IERXX1NUUklORyAo YXR0cikgfHwgYmFzZVstMV0gIT0gJzonKQorICAgICByZXR1cm4gIiI7CisgCistICByZXR1cm4g b2JzdGFja19jb3B5MCAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrICByZXR1cm4g b2JzdGFja19jb3B5MCAoJmN1LT5vYmpmaWxlLT5wZXJfYmZkLT5zdG9yYWdlX29ic3RhY2ssCisg CQkJRFdfU1RSSU5HIChhdHRyKSwgJmJhc2VbLTFdIC0gRFdfU1RSSU5HIChhdHRyKSk7CisgfQor IAorQEAgLTE4OTQzLDggKzE4OTU0LDkgQEAgZHdhcmYyX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAJICAgICAgY2hhciAqYmFzZTsKKyAKKyAJICAg ICAgLyogRklYTUU6IHdlIGFscmVhZHkgZGlkIHRoaXMgZm9yIHRoZSBwYXJ0aWFsIHN5bWJvbC4u LiAqLworLQkgICAgICBEV19TVFJJTkcgKGF0dHIpID0gb2JzdGFja19jb3B5MCAoJmN1LT5vYmpm aWxlLT5vYmpmaWxlX29ic3RhY2ssCistCQkJCQkJZGVtYW5nbGVkLCBzdHJsZW4gKGRlbWFuZ2xl ZCkpOworKwkgICAgICBEV19TVFJJTkcgKGF0dHIpCisrCQk9IG9ic3RhY2tfY29weTAgKCZjdS0+ b2JqZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrLAorKwkJCQkgZGVtYW5nbGVkLCBzdHJs ZW4gKGRlbWFuZ2xlZCkpOworIAkgICAgICBEV19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9 IDE7CisgCSAgICAgIHhmcmVlIChkZW1hbmdsZWQpOworIAorQEAgLTE4OTY3LDcgKzE4OTc5LDcg QEAgZHdhcmYyX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKKyAgICAgeworICAgICAgIERXX1NUUklORyAoYXR0cikKKyAJPSBkd2FyZjJfY2Fub25pY2Fs aXplX25hbWUgKERXX1NUUklORyAoYXR0ciksIGN1LAorLQkJCQkgICAgJmN1LT5vYmpmaWxlLT5v YmpmaWxlX29ic3RhY2spOworKwkJCQkgICAgJmN1LT5vYmpmaWxlLT5wZXJfYmZkLT5zdG9yYWdl X29ic3RhY2spOworICAgICAgIERXX1NUUklOR19JU19DQU5PTklDQUwgKGF0dHIpID0gMTsKKyAg ICAgfQorICAgcmV0dXJuIERXX1NUUklORyAoYXR0cik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTMz MTc2LWZvcnRyYW4tb21wLXN0ZXAucGF0Y2ggYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3Rl cC5wYXRjaAppbmRleCAxOTc4ZDVlLi4xYWQ0MmI5IDEwMDY0NAotLS0gYS9nZGItYno1MzMxNzYt Zm9ydHJhbi1vbXAtc3RlcC5wYXRjaAorKysgYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3Rl cC5wYXRjaApAQCAtMjEsMTEgKzIxLDExIEBAIGRlYnVnZ2luZyBwcm9ibGVtIG9mIEdPTVAgb3V0 c2lkZSBvZiB0aGUgc2NvcGUgb2YgdGhpcyBCdWcuCiAKIAogCi1JbmRleDogZ2RiLTcuNi41MC4y MDEzMDczMS1jdnMvZ2RiL2luZnJ1bi5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv aW5mcnVuLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy5vcmlnL2dk Yi9pbmZydW4uYwkyMDEzLTA4LTAyIDE3OjEwOjA4LjQ0Njk2Mjk1OCArMDIwMAotKysrIGdkYi03 LjYuNTAuMjAxMzA3MzEtY3ZzL2dkYi9pbmZydW4uYwkyMDEzLTA4LTAyIDE3OjEwOjQ5LjEwOTAx NjY4NSArMDIwMAotQEAgLTQ5MzAsNiArNDkzMCwxNiBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVz dDoKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTQtMDYtMTMg MjE6NTk6MTAuODM1ODA1NTEyICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaW5m cnVuLmMJMjAxNC0wNi0xMyAyMTo1OTozMS4wNjQ4MjkxMjEgKzAyMDAKK0BAIC00ODIwLDYgKzQ4 MjAsMTYgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3QgKHN0cnVjdCBleGVjdXRpbwogIAogICAg ICAgIGlmIChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMgPT0gU1RF UF9PVkVSX0FMTCkKICAJewpAQCAtMzYsMTMgKzM2LDEzIEBAIEluZGV4OiBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvaW5mcnVuLmMKICsJICAgICAgIHx8IHN0cnN0ciAoU1lNQk9MX0xJTktB R0VfTkFNRSAoc3RvcF9mbiksICIub21wX2ZuLiIpID09IE5VTEwpCiArCSAgICAgIC8qIGdjYy00 LjcuMi05LmZjMTkueDg2XzY0IHVzZXMgYSBuZXcgZm9ybWF0LiAgKi8KICsJICAgICAgJiYgKHN0 b3BmID09IE5VTEwKLSsJCSAgfHwgc3Ryc3RyIChTWU1CT0xfTElOS0FHRV9OQU1FIChzdG9wZiks ICIuX29tcF9mbi4iKSA9PSBOVUxMKSkKKysJCSAgfHwgc3Ryc3RyIChNU1lNQk9MX0xJTktBR0Vf TkFNRSAoc3RvcGYpLCAiLl9vbXBfZm4uIikgPT0gTlVMTCkpCiArewkvKiAiLm9tcF9mbi4iICov CiArCiAgCSAgLyogV2UncmUgZG9pbmcgYSAibmV4dCIuCiAgCiAgCSAgICAgTm9ybWFsIChmb3J3 YXJkKSBleGVjdXRpb246IHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlCi1AQCAtNDk2NSw2ICs0OTc1 LDcgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CitAQCAtNDg1NSw2ICs0ODY1LDcgQEAgcHJv Y2Vzc19ldmVudF9zdG9wX3Rlc3QgKHN0cnVjdCBleGVjdXRpbwogIAogIAkgIGtlZXBfZ29pbmcg KGVjcyk7CiAgCSAgcmV0dXJuOwpAQCAtNTAsMTAgKzUwLDEwIEBAIEluZGV4OiBnZGItNy42LjUw LjIwMTMwNzMxLWN2cy9nZGIvaW5mcnVuLmMKICAJfQogIAogICAgICAgIC8qIElmIHdlIGFyZSBp biBhIGZ1bmN0aW9uIGNhbGwgdHJhbXBvbGluZSAoYSBzdHViIGJldHdlZW4gdGhlCi1JbmRleDog Z2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3Rl cC5leHAKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vb21wLXN0ZXAuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi41MC4yMDEzMDczMS1jdnMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMy0wOC0wMiAxNzoxMDozNy4wNjMw MDA1NzEgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vb21wLXN0ZXAuZXhwCTIwMTQtMDYtMTMgMjE6NTk6MjIuODAxODE5NDgxICswMjAwCiBA QCAtMCwwICsxLDMxIEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICsKQEAgLTg2LDEwICs4NiwxMCBAQCBJbmRleDogZ2RiLTcuNi41MC4yMDEzMDcz MS1jdnMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKICsKICtnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAic3VjY2VzcyJdCiArZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInN1Y2Nlc3MiICIuKnN1Y2Nlc3MuKiIKLUluZGV4OiBnZGItNy42LjUwLjIw MTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAorSW5kZXg6 IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5m OTAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy42LjUwLjIwMTMwNzMxLWN2cy9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL29tcC1zdGVwLmY5MAkyMDEzLTA4LTAyIDE3OjEwOjM3LjA2MzAwMDU3MSArMDIwMAor KysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3Rl cC5mOTAJMjAxNC0wNi0xMyAyMTo1OToyMi44MDE4MTk0ODEgKzAyMDAKIEBAIC0wLDAgKzEsMzIg QEAKICshIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoK ZGlmZiAtLWdpdCBhL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaCBiL2dkYi1i ejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAppbmRleCBlNjA3M2ViLi43YmZlNDExIDEw MDY0NAotLS0gYS9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKKysrIGIvZ2Ri LWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgKK0luZGV4OiBn ZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1o CTIwMTQtMDItMDYgMTc6MzA6MjMuMDIxNDg5NzM2ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvY29uZmlnL2kzODYvbGludXg2NC5taAkyMDE0LTAyLTA2IDE3OjMwOjQ0Ljk4NDUx MzQwMyArMDEwMAorLS0tIGdkYi03LjcuNTAuMjAxNDA2MDkub3JpZy9nZGIvY29uZmlnL2kzODYv bGludXg2NC5taAkyMDE0LTA2LTEzIDIwOjI1OjM3LjM1NjczMjMzNSArMDIwMAorKysrIGdkYi03 LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4NjQubWgJMjAxNC0wNi0xMyAyMDoy NjowNy45ODQ3NjQwOTggKzAyMDAKIEBAIC01LDcgKzUsNyBAQCBOQVRERVBGSUxFUz0gaW5mLXB0 cmFjZS5vIGZvcmstY2hpbGQubyBcCiAgCXByb2Mtc2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5v IGxpbnV4LWZvcmsubyBcCiAgCWxpbnV4LXByb2Nmcy5vIGxpbnV4LXB0cmFjZS5vIGxpbnV4LWJ0 cmFjZS5vIFwKQEAgLTExLDEwICsxMSwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvY29uZmlnL2kzODYvbGludXg2NC5taAogIE5BVF9DREVQUyA9ICQoc3JjZGlyKS9wcm9jLXNl cnZpY2UubGlzdAogIAogICMgVGhlIGR5bmFtaWNhbGx5IGxvYWRlZCBsaWJ0aHJlYWRfZGIgbmVl ZHMgYWNjZXNzIHRvIHN5bWJvbHMgaW4gdGhlCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvY29uZmlnL2kzODYvbGludXgubWgKK0luZGV4OiBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9j b25maWcvaTM4Ni9saW51eC5taAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcu b3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxNC0wMi0wNiAxNzozMDoxNS44OTM0ODIw NTYgKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWcvaTM4Ni9saW51eC5t aAkyMDE0LTAyLTA2IDE3OjMwOjIzLjAyMTQ4OTczNiArMDEwMAorLS0tIGdkYi03LjcuNTAuMjAx NDA2MDkub3JpZy9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxNC0wNi0xMyAyMDoyNTozNy4z NTY3MzIzMzUgKzAyMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dkYi9jb25maWcvaTM4Ni9s aW51eC5taAkyMDE0LTA2LTEzIDIwOjI2OjA3Ljk4NDc2NDA5OCArMDIwMAogQEAgLTEsNiArMSw2 IEBACiAgIyBIb3N0OiBJbnRlbCAzODYgcnVubmluZyBHTlUvTGludXguCiAgCkBAIC0yMywxMCAr MjMsMTAgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4 Lm1oCiAgTkFUREVQRklMRVM9IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAogIAlpMzg2LW5h dC5vIGkzODYtbGludXgtbmF0Lm8gXAogIAlwcm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIu byBcCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvY29uZmlnL2kzODYvbm0tbGludXgu aAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9jb25maWcvaTM4Ni9ubS1saW51eC5o CTIwMTQtMDItMDYgMTc6MzA6MjMuMDIxNDg5NzM2ICswMTAwCisrKysgZ2RiLTcuNy41MC4yMDE0 MDYwOS9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAkyMDE0LTA2LTEzIDIwOjI2OjA3Ljk4NDc2 NDA5OCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBzdXBwb3J0IGZvciBHTlUv TGludXggaTM4Ni4KICsKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0 MDEyNy9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAogKyNkZWZpbmUgdGFyZ2V0X2Nhbl91c2Vf aGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiArCiArI2VuZGlmIC8qIE5NX0xJ TlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L25t LWxpbnV4NjQuaAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy9pMzg2L25t LWxpbnV4NjQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2 L25tLWxpbnV4NjQuaAkyMDE0LTAyLTA2IDE3OjMwOjIzLjAyMTQ4OTczNiArMDEwMAorKysrIGdk Yi03LjcuNTAuMjAxNDA2MDkvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAkyMDE0LTA2LTEz IDIwOjI2OjA3Ljk4NDc2NDA5OCArMDIwMAogQEAgLTAsMCArMSwyOCBAQAogKy8qIE5hdGl2ZSBz dXBwb3J0IGZvciBHTlUvTGludXggYW1kNjQuCiArCkBAIC04OSwyNSArODksMjYgQEAgSW5kZXg6 IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAogKyNkZWZp bmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCh0eXBlLCBjbnQsIG90KSAxCiAr CiArI2VuZGlmIC8qIE5NX0xJTlVYNjRfSCAqLwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL3RhcmdldC5oCitJbmRleDogZ2RiLTcuNy41MC4yMDE0MDYwOS9nZGIvdGFyZ2V0LmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTQt MDItMDYgMTc6MzA6MTUuODk0NDgyMDU3ICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvdGFyZ2V0LmgJMjAxNC0wMi0wNiAxNzozMDoyMy4wMjI0ODk3MzcgKzAxMDAKLUBAIC0xNTIx LDggKzE1MjEsMTAgQEAgZXh0ZXJuIGNoYXIgKnRhcmdldF90aHJlYWRfbmFtZSAoc3RydWN0Cist LS0gZ2RiLTcuNy41MC4yMDE0MDYwOS5vcmlnL2dkYi90YXJnZXQuaAkyMDE0LTA2LTEzIDIwOjI2 OjA3Ljk4NTc2NDA5OSArMDIwMAorKysrIGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3RhcmdldC5o CTIwMTQtMDYtMTMgMjA6MjY6MzQuOTE1NzkyMDk1ICswMjAwCitAQCAtMTcyOCw5ICsxNzI4LDEx IEBAIGV4dGVybiBjaGFyICp0YXJnZXRfdGhyZWFkX25hbWUgKHN0cnVjdAogICAgIGJwX2hhcmR3 YXJlX2JyZWFrcG9pbnQuICBDTlQgaXMgdGhlIG51bWJlciBvZiBzdWNoIHdhdGNocG9pbnRzIHVz ZWQgc28gZmFyCiAgICAgKGluY2x1ZGluZyB0aGlzIG9uZT8pLiAgT1RIRVJUWVBFIGlzIHdobyBr bm93cyB3aGF0Li4uICAqLwogIAogKyNpZm5kZWYgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0 Y2hwb2ludAogICNkZWZpbmUgdGFyZ2V0X2Nhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludChUWVBF LENOVCxPVEhFUlRZUEUpIFwKLSAgKCpjdXJyZW50X3RhcmdldC50b19jYW5fdXNlX2h3X2JyZWFr cG9pbnQpIChUWVBFLCBDTlQsIE9USEVSVFlQRSk7CisgICgqY3VycmVudF90YXJnZXQudG9fY2Fu X3VzZV9od19icmVha3BvaW50KSAoJmN1cnJlbnRfdGFyZ2V0LCAgXAorIAkJCQkJICAgICBUWVBF LCBDTlQsIE9USEVSVFlQRSk7CiArI2VuZGlmCiAgCiAgLyogUmV0dXJucyB0aGUgbnVtYmVyIG9m IGRlYnVnIHJlZ2lzdGVycyBuZWVkZWQgdG8gd2F0Y2ggdGhlIGdpdmVuCiAgICAgbWVtb3J5IHJl Z2lvbiwgb3IgemVybyBpZiBub3Qgc3VwcG9ydGVkLiAgKi8KLUluZGV4OiBnZGItNy42LjkwLjIw MTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4 cAorSW5kZXg6IGdkYi03LjcuNTAuMjAxNDA2MDkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRj aHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHctYmVmb3JlLXJ1bi5leHAJMjAxNC0w Mi0wNiAxNzozMDoyMy4wMjI0ODk3MzcgKzAxMDAKKysrKyBnZGItNy43LjUwLjIwMTQwNjA5L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4cAkyMDE0LTA2 LTEzIDIwOjI2OjA3Ljk4Njc2NDEwMSArMDIwMAogQEAgLTAsMCArMSw0MCBAQAogKyMgQ29weXJp Z2h0IDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0t Z2l0IGEvZ2RiLWR0cy1yaGVsNi1weXRob24tY29tcGF0LnBhdGNoIGIvZ2RiLWR0cy1yaGVsNi1w eXRob24tY29tcGF0LnBhdGNoCmluZGV4IDY5ZWI5MmUuLjM2ODg3MTMgMTAwNjQ0Ci0tLSBhL2dk Yi1kdHMtcmhlbDYtcHl0aG9uLWNvbXBhdC5wYXRjaAorKysgYi9nZGItZHRzLXJoZWw2LXB5dGhv bi1jb21wYXQucGF0Y2gKQEAgLTEsOSArMSwxMCBAQAogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQu Y29tL3Nob3dfYnVnLmNnaT9pZD0xMDIwMDA0CiAKLWRpZmYgLWR1cCAtcnVOcCBnZGItNy43LW9y aWcvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluIGdkYi03LjcvZ2RiL2RhdGEtZGlyZWN0 b3J5L01ha2VmaWxlLmluCi0tLS0gZ2RiLTcuNy1vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZS5pbgkyMDE0LTAyLTIzIDE4OjEyOjUxLjMzODg2NjM5MSArMDEwMAotKysrIGdkYi03Ljcv Z2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTQtMDItMjMgMTg6MTQ6MzEuMTg3NzU2 OTgzICswMTAwCi1AQCAtNTgsOSArNTgsMTIgQEAgUFlUSE9OX0ZJTEVTID0gXAorSW5kZXg6IGdk Yi03LjcuOTAuMjAxNDA2MTMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtl ZmlsZS5pbgkyMDE0LTA2LTEzIDIzOjAyOjM3LjU5NzExNTc4NyArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTQtMDYtMTMgMjM6 MDM6MjEuMjg1MTYzOTA5ICswMjAwCitAQCAtNjAsNiArNjAsOCBAQCBQWVRIT05fRklMRVMgPSBc CiAgCWdkYi9mcmFtZXMucHkgXAogIAlnZGIvRnJhbWVJdGVyYXRvci5weSBcCiAgCWdkYi9GcmFt ZURlY29yYXRvci5weSBcCkBAIC0xMiwxMyArMTMsMTggQEAgZGlmZiAtZHVwIC1ydU5wIGdkYi03 Ljctb3JpZy9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4gZ2RiLTcuNy9nZGIvZGF0YS1k aXIKICAJZ2RiL3R5cGVzLnB5IFwKICAJZ2RiL3ByaW50aW5nLnB5IFwKICAJZ2RiL3Byb21wdC5w eSBcCitAQCAtNzQsNiArNzYsNyBAQCBQWVRIT05fRklMRVMgPSBcCisgCWdkYi9jb21tYW5kL3By ZXR0eV9wcmludGVycy5weSBcCisgCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCisgCWdkYi9jb21t YW5kL2V4cGxvcmUucHkgXAogKwlnZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgXAotIAlnZGIvY29t bWFuZC9ib3VuZF9yZWdpc3RlcnMucHkgXAotIAlnZGIvY29tbWFuZC9fX2luaXRfXy5weSBcCi0g CWdkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkgXAotZGlmZiAtZHVwIC1ydU5wIGdkYi03Ljct b3JpZy9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5IGdkYi03LjcvZ2RiL3B5dGhv bi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQotLS0tIGdkYi03Ljctb3JpZy9nZGIvcHl0aG9uL2xp Yi9nZGIvRnJhbWVXcmFwcGVyLnB5CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNy9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFwcGVyLnB5CTIwMTQtMDIt MjMgMTg6MTQ6MzEuMTg4NzU2OTgxICswMTAwCisgCWdkYi9mdW5jdGlvbi9fX2luaXRfXy5weSBc CisgCWdkYi9mdW5jdGlvbi9zdHJmbnMucHkgXAorIAlnZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5 IFwKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdy YXBwZXIucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dk Yi9GcmFtZVdyYXBwZXIucHkJMjAxNC0wNi0xMyAyMzowMjozNy41OTgxMTU3ODggKzAyMDAKIEBA IC0wLDAgKzEsMTIyIEBACiArIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVzLgogKwpAQCAtMTQyLDkg KzE0OCwxMCBAQCBkaWZmIC1kdXAgLXJ1TnAgZ2RiLTcuNy1vcmlnL2dkYi9weXRob24vbGliL2dk Yi9GcmFtZVdyYXBwZXIucHkgZ2RiLTcuNy9nZGIvcHl0aAogKwogKyAgICBkZWYgX19nZXRhdHRy X18gKHNlbGYsIG5hbWUpOgogKyAgICAgICAgcmV0dXJuIGdldGF0dHIgKHNlbGYuZnJhbWUsIG5h bWUpCi1kaWZmIC1kdXAgLXJ1TnAgZ2RiLTcuNy1vcmlnL2dkYi9weXRob24vbGliL2dkYi9iYWNr dHJhY2UucHkgZ2RiLTcuNy9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5Ci0tLS0gZ2Ri LTcuNy1vcmlnL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMTk3MC0wMS0wMSAwMTow MDowMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43L2dkYi9weXRob24vbGliL2dkYi9iYWNr dHJhY2UucHkJMjAxNC0wMi0yMyAxODoxNDozMS4xODg3NTY5ODEgKzAxMDAKK0luZGV4OiBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysr KyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMjAx NC0wNi0xMyAyMzowMjozNy41OTgxMTU3ODggKzAyMDAKIEBAIC0wLDAgKzEsNDIgQEAKICsjIEZp bHRlcmluZyBiYWNrdHJhY2UuCiArCkBAIC0xODgsOSArMTk1LDEwIEBAIGRpZmYgLWR1cCAtcnVO cCBnZGItNy43LW9yaWcvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weSBnZGItNy43L2dk Yi9weXRob24vCiArICAgICAgICByZXR1cm4gaXRlcgogKyAgICByZXR1cm4gb2xkX2ZyYW1lX2Zp bHRlciAoaXRlcikKICsKLWRpZmYgLWR1cCAtcnVOcCBnZGItNy43LW9yaWcvZ2RiL3B5dGhvbi9s aWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5IGdkYi03LjcvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvYmFja3RyYWNlLnB5Ci0tLS0gZ2RiLTcuNy1vcmlnL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL2JhY2t0cmFjZS5weQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjcvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5CTIwMTQt MDItMjMgMTg6MTQ6MzEuMTg4NzU2OTgxICswMTAwCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2JhY2t0cmFjZS5weQky MDE0LTA2LTEzIDIzOjAyOjM3LjU5ODExNTc4OCArMDIwMAogQEAgLTAsMCArMSwxMDYgQEAKICsj IE5ldyBiYWNrdHJhY2UgY29tbWFuZC4KICsKCmRpZmYgLS1naXQgYS9nZGItZ2xpYmMtc3Ryc3Ry LXdvcmthcm91bmQucGF0Y2ggYi9nZGItZ2xpYmMtc3Ryc3RyLXdvcmthcm91bmQucGF0Y2gKaW5k ZXggYzYzODNkYi4uM2MwYzA0MiAxMDA2NDQKLS0tIGEvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJv dW5kLnBhdGNoCisrKyBiL2dkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaApAQCAtMSw4 ICsxLDggQEAKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9kd2FyZjJyZWFkLmMKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTAyLTA2IDE4 OjE4OjA5LjY3NjU3MjI3MSArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2R3YXJm MnJlYWQuYwkyMDE0LTAyLTA2IDE4OjE4OjQyLjY2NDYwNzgyMyArMDEwMAotQEAgLTE3NjQ2LDYg KzE3NjQ2LDI1IEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKKy0t LSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTA2LTEzIDIx OjU2OjU0Ljc0NDY1MzQ0MyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJm MnJlYWQuYwkyMDE0LTA2LTEzIDIyOjAxOjUxLjUyOTk5MDY4NCArMDIwMAorQEAgLTE3Njk1LDYg KzE3Njk1LDI2IEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMKICAg ICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVk IGZvcm0gKGlmIGFueSkuICAqLwogICAgICAgIFNZTUJPTF9TRVRfTEFOR1VBR0UgKHN5bSwgY3Ut Pmxhbmd1YWdlLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrKTsKICAgICAgICBsaW5rYWdlbmFt ZSA9IGR3YXJmMl9waHlzbmFtZSAobmFtZSwgZGllLCBjdSk7CkBAIC0xNCwyNCArMTQsMjUgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2R3YXJmMnJlYWQuYwogKwkgICYmIHN0cnN0 ciAob2JqZmlsZV9uYW1lIChvYmpmaWxlKSwgIi9saWJjIikgIT0gTlVMTCkKICsJewogKwkgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlX21zeW07Ci0rCSAgc3RydWN0IG1pbmltYWxfc3ltYm9sICpt c3ltOworKwkgIHN0cnVjdCBib3VuZF9taW5pbWFsX3N5bWJvbCBibXN5bTsKICsKICsJICBpZiAo b2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluaykKICsJICAgIG9iamZpbGVf bXN5bSA9IG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbms7CiArCSAgZWxz ZQogKwkgICAgb2JqZmlsZV9tc3ltID0gb2JqZmlsZTsKLSsJICBtc3ltID0gbG9va3VwX21pbmlt YWxfc3ltYm9sICgic3Ryc3RyIiwgTlVMTCwgb2JqZmlsZV9tc3ltKTsKLSsJICBpZiAobXN5bSAm JiBNU1lNQk9MX1RZUEUgKG1zeW0pID09IG1zdF90ZXh0X2dudV9pZnVuYykKKysJICBibXN5bSA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoInN0cnN0ciIsIE5VTEwsIG9iamZpbGVfbXN5bSk7Cisr CSAgaWYgKGJtc3ltLm1pbnN5bSAhPSBOVUxMCisrCSAgICAgICYmIE1TWU1CT0xfVFlQRSAoYm1z eW0ubWluc3ltKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCiArCSAgICBsaW5rYWdlbmFtZSA9ICJf X3N0cnN0ciI7CiArCX0KICsKICAgICAgICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxpbmthZ2Vu YW1lLCBzdHJsZW4gKGxpbmthZ2VuYW1lKSwgMCwgb2JqZmlsZSk7CiAgCiAgICAgICAgLyogRm9y dHJhbiBkb2VzIG5vdCBoYXZlIG1hbmdsaW5nIHN0YW5kYXJkIGFuZCB0aGUgbWFuZ2xpbmcgZG9l cyBkaWZmZXIKLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ251LWlmdW5jLXN0cnN0ci13b3JrYXJvdW5kLmV4cAorSW5kZXg6IGdkYi03LjcuOTAuMjAx NDA2MTMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtc3Ryc3RyLXdvcmthcm91bmQu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2dudS1pZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAJMjAxNC0wMi0wNiAxODoxODoxNi4yOTQ1 NzkzODEgKzAxMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ251LWlmdW5jLXN0cnN0ci13b3JrYXJvdW5kLmV4cAkyMDE0LTA2LTEzIDIxOjU5OjQxLjE3 NDg0MDg3MSArMDIwMAogQEAgLTAsMCArMSwxMDggQEAKICsjIENvcHlyaWdodCAoQykgMjAxMiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItZ25hdC1k d2FyZi1jcmFzaC0xb2YzLnBhdGNoIGIvZ2RiLWduYXQtZHdhcmYtY3Jhc2gtMW9mMy5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhZDMzMi4uMDAwMDAwMAotLS0gYS9nZGIt Z25hdC1kd2FyZi1jcmFzaC0xb2YzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUxICswLDAg QEAKLWNvbW1pdCBhZGRlMmJmZjA3NTdlODkxNzVlZGU0OTNmMDNiODY5NTNkMGQ5MzUyCi1BdXRo b3I6IERvdWcgRXZhbnMgPHhkamU0MkBnbWFpbC5jb20+Ci1EYXRlOiAgIFRodSBGZWIgMjAgMDk6 MTM6NTMgMjAxNCAtMDgwMAotCi0gICAgRml4IFBSIHN5bXRhYi8xNjU4MQotICAgIAotICAgIAkq IGR3YXJmMnJlYWQuYyAoc3RydWN0IGRpZV9pbmZvKTogTmV3IG1lbWJlciBpbl9wcm9jZXNzLgot ICAgIAkocmVzZXRfZGllX2luX3Byb2Nlc3MpOiBOZXcgZnVuY3Rpb24uCi0gICAgCShwcm9jZXNz X2RpZSk6IFNldCBpdCBhdCB0aGUgc3RhcnQsIHJlc2V0IHdoZW4gcmV0dXJuaW5nLgotICAgIAko aW5oZXJpdF9hYnN0cmFjdF9kaWVzKTogT25seSBjYWxsIHByb2Nlc3NfZGllIGlmIG9yaWdpbl9j aGlsZF9kaWUKLSAgICAJbm90IGFscmVhZHkgYmVpbmcgcHJvY2Vzc2VkLgotICAgIAotICAgIAl0 ZXN0c3VpdGUvCi0gICAgCSogZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLlM6IE5ldyBmaWxlLgotICAg IAkqIGdkYi5kd2FyZjIvZHcyLWljeWNsZS5jOiBOZXcgZmlsZS4KLSAgICAJKiBnZGIuZHdhcmYy L2R3Mi1pY3ljbGUuZXhwOiBOZXcgZmlsZS4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIv Z2RiL0NoYW5nZUxvZwotIyMgLTEsMyArMSwxNCBAQAotKzIwMTQtMDItMjAgIGxpbiB6dW9qaWFu ICA8bWFuamlhbjIwMDZAZ21haWwuY29tPgotKwkgICAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNr ZXJAYWRhY29yZS5jb20+Ci0rCSAgICBEb3VnIEV2YW5zICA8eGRqZTQyQGdtYWlsLmNvbT4KLSsK LSsJUFIgc3ltdGFiLzE2NTgxCi0rCSogZHdhcmYycmVhZC5jIChzdHJ1Y3QgZGllX2luZm8pOiBO ZXcgbWVtYmVyIGluX3Byb2Nlc3MuCi0rCShyZXNldF9kaWVfaW5fcHJvY2Vzcyk6IE5ldyBmdW5j dGlvbi4KLSsJKHByb2Nlc3NfZGllKTogU2V0IGl0IGF0IHRoZSBzdGFydCwgcmVzZXQgd2hlbiBy ZXR1cm5pbmcuCi0rCShpbmhlcml0X2Fic3RyYWN0X2RpZXMpOiBPbmx5IGNhbGwgcHJvY2Vzc19k aWUgaWYgb3JpZ2luX2NoaWxkX2RpZQotKwlub3QgYWxyZWFkeSBiZWluZyBwcm9jZXNzZWQuCi0r Ci0gMjAxNC0wMi0yMCAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+Ci0g Ci0gCSogd2luZG93cy1uYXQuYyAoaGFuZGxlX3VubG9hZF9kbGwpOiBBZGQgZnVuY3Rpb24gZG9j dW1lbnRhdGlvbi4KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFk LmMKLUBAIC0xMjI1LDYgKzEyMjUsOSBAQCBzdHJ1Y3QgZGllX2luZm8KLSAgICAgICAgdHlwZSBk ZXJpdmVkIGZyb20gdGhpcyBESUUuICAqLwotICAgICB1bnNpZ25lZCBjaGFyIGJ1aWxkaW5nX2Z1 bGxuYW1lIDogMTsKLSAKLSsgICAgLyogVHJ1ZSBpZiB0aGlzIGRpZSBpcyBpbiBwcm9jZXNzLiAg UFIgMTY1ODEuICAqLwotKyAgICB1bnNpZ25lZCBjaGFyIGluX3Byb2Nlc3MgOiAxOwotKwotICAg ICAvKiBBYmJyZXYgbnVtYmVyICovCi0gICAgIHVuc2lnbmVkIGludCBhYmJyZXY7Ci0gCi1AQCAt ODAwOCwxMSArODAxMSwyOCBAQCBwcm9jZXNzX2ltcG9ydGVkX3VuaXRfZGllIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgIH0KLSB9Ci0gCi0rLyogUmVz ZXQgdGhlIGluX3Byb2Nlc3MgYml0IG9mIGEgZGllLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Jl c2V0X2RpZV9pbl9wcm9jZXNzICh2b2lkICphcmcpCi0rewotKyAgc3RydWN0IGRpZV9pbmZvICpk aWUgPSBhcmc7Ci0rICBkaWUtPmluX3Byb2Nlc3MgPSAwOwotK30KLSsKLSAvKiBQcm9jZXNzIGEg ZGllIGFuZCBpdHMgY2hpbGRyZW4uICAqLwotIAotIHN0YXRpYyB2b2lkCi0gcHJvY2Vzc19kaWUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0rICBzdHJ1 Y3QgY2xlYW51cCAqaW5fcHJvY2VzczsKLSsKLSsgIC8qIFdlIHNob3VsZCBvbmx5IGJlIHByb2Nl c3NpbmcgdGhvc2Ugbm90IGFscmVhZHkgaW4gcHJvY2Vzcy4gICovCi0rICBnZGJfYXNzZXJ0ICgh ZGllLT5pbl9wcm9jZXNzKTsKLSsKLSsgIGRpZS0+aW5fcHJvY2VzcyA9IDE7Ci0rICBpbl9wcm9j ZXNzID0gbWFrZV9jbGVhbnVwIChyZXNldF9kaWVfaW5fcHJvY2VzcyxkaWUpOwotKwotICAgc3dp dGNoIChkaWUtPnRhZykKLSAgICAgewotICAgICBjYXNlIERXX1RBR19wYWRkaW5nOgotQEAgLTc3 NjIsNiArNzc4Miw4IEBAIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWMK LSAgICAgICBuZXdfc3ltYm9sIChkaWUsIE5VTEwsIGN1KTsKLSAgICAgICBicmVhazsKLSAgICAg fQotKwotKyAgZG9fY2xlYW51cHMgKGluX3Byb2Nlc3MpOwotIH0KLSAMCi0gLyogRFdBUkYgbmFt ZSBjb21wdXRhdGlvbi4gICovCi1AQCAtMTA5NjcsOCArMTA5ODksMTIgQEAgaW5oZXJpdF9hYnN0 cmFjdF9kaWVzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g ICAgICAgaWYgKG9mZnNldHAgPj0gb2Zmc2V0c19lbmQKLSAJICB8fCBvZmZzZXRwLT5zZWN0X29m ZiA+IG9yaWdpbl9jaGlsZF9kaWUtPm9mZnNldC5zZWN0X29mZikKLSAJewotLQkgIC8qIEZvdW5k IHRoYXQgT1JJR0lOX0NISUxEX0RJRSBpcyByZWFsbHkgbm90IHJlZmVyZW5jZWQuICAqLwotLQkg IHByb2Nlc3NfZGllIChvcmlnaW5fY2hpbGRfZGllLCBvcmlnaW5fY3UpOwotKwkgIC8qIEZvdW5k IHRoYXQgT1JJR0lOX0NISUxEX0RJRSBpcyByZWFsbHkgbm90IHJlZmVyZW5jZWQuCi0rCSAgICAg Q2hlY2sgd2hldGhlciB3ZSdyZSBhbHJlYWR5IHByb2Nlc3NpbmcgT1JJR0lOX0NISUxEX0RJRS4K LSsJICAgICBUaGlzIGNhbiBoYXBwZW4gd2l0aCBtdXR1YWxseSByZWZlcmVuY2VkIGFic3RyYWN0 X29yaWdpbnMuCi0rCSAgICAgUFIgMTY1ODEuICAqLwotKwkgIGlmICghb3JpZ2luX2NoaWxkX2Rp ZS0+aW5fcHJvY2VzcykKLSsJICAgIHByb2Nlc3NfZGllIChvcmlnaW5fY2hpbGRfZGllLCBvcmln aW5fY3UpOwotIAl9Ci0gICAgICAgb3JpZ2luX2NoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChvcmln aW5fY2hpbGRfZGllKTsKLSAgICAgfQotIyMjIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLSMj IyBiL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0jIyAtMSwzICsxLDEyIEBACi0rMjAxNC0wMi0y MCAgbGluIHp1b2ppYW4gIDxtYW5qaWFuMjAwNkBnbWFpbC5jb20+Ci0rCSAgICBKb2VsIEJyb2Jl Y2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KLSsJICAgIERvdWcgRXZhbnMgIDx4ZGplNDJA Z21haWwuY29tPgotKwotKwlQUiBzeW10YWIvMTY1ODEKLSsJKiBnZGIuZHdhcmYyL2R3Mi1pY3lj bGUuUzogTmV3IGZpbGUuCi0rCSogZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLmM6IE5ldyBmaWxlLgot KwkqIGdkYi5kd2FyZjIvZHcyLWljeWNsZS5leHA6IE5ldyBmaWxlLgotKwotIDIwMTQtMDItMTkg IFNpdmEgQ2hhbmRyYSBSZWRkeSAgPHNpdmFjaGFuZHJhQGdvb2dsZS5jb20+Ci0gCi0gCSogZ2Ri LnB5dGhvbi9weS12YWx1ZS1jYy5jYzogSW1wcm92ZSB0ZXN0IGNhc2UgdG8gZW5hYmxlIHRlc3Rp bmcKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWN5 Y2xlLlMKLUBAIC0wLDAgKzEsMjU4IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCi0rCi0rCS50ZXh0Ci0rCi0rLkx0ZXh0MDoKLSsJLnR5cGUJcF9fdG9wX19taWRkbGVf X2luc2lkZS4zMDYyLCBAZnVuY3Rpb24KLStwX190b3BfX21pZGRsZV9faW5zaWRlLjMwNjI6Ci0r LkxGQjQ6Ci0rCS5maWxlIDEgInAuYWRiIgotKyAgICAgICAgLjRieXRlIDAKLSsuTEJFNjoKLSsK LSsJLmdsb2JsCXBfX3RvcAotKwkudHlwZQlwX190b3AsIEBmdW5jdGlvbgotK3BfX3RvcDoKLSsu TEZCMjoKLSsgICAgICAgIC40Ynl0ZSAwCi0rLkxGRTI6Ci0rLkxldGV4dDA6Ci0rCi0rCS5zZWN0 aW9uCS5kZWJ1Z19pbmZvLCIiLEBwcm9nYml0cwotKy5MZGVidWdfaW5mbzA6Ci0rCS40Ynl0ZQku TGVkZWJ1Z19pbmZvMCAtIC5Mc2RlYnVnX2luZm8wICAvKiBMZW5ndGggb2YgQ1UgSW5mbyAqLwot Ky5Mc2RlYnVnX2luZm8wOgotKwkuMmJ5dGUJMHg0CS8qIERXQVJGIHZlcnNpb24gbnVtYmVyICov Ci0rCS40Ynl0ZQkuTGRlYnVnX2FiYnJldjAJLyogT2Zmc2V0IEludG8gQWJicmV2LiBTZWN0aW9u ICovCi0rCS5ieXRlCTB4NAkvKiBQb2ludGVyIFNpemUgKGluIGJ5dGVzKSAqLwotKwkudWxlYjEy OCAweDEJLyogKERJRSAoMHhiKSBEV19UQUdfY29tcGlsZV91bml0KSAqLwotKwkuYXNjaWkJIkdO VSBBZGEgNC45LjAgMjAxNDAxMjZcMCIgLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMHhk CS8qIERXX0FUX2xhbmd1YWdlICovCi0rCS5hc2NpaQkicC5hZGJcMCIgLyogRFdfQVRfbmFtZSAq LwotKwkuYXNjaWkJIi90bXBcMCIgIC8qIERXX0FUX2NvbXBfZGlyICovCi0rCS40Ynl0ZQkuTHRl eHQwCS8qIERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJLkxldGV4dDAtLkx0ZXh0MAkvKiBEV19B VF9oaWdoX3BjICovCi0rLlMweDE0MjoKLSsJLnVsZWIxMjggMHg4CS8qIChESUUgKDB4MTQyKSBE V19UQUdfYmFzZV90eXBlKSAqLwotKwkuYnl0ZQkweDQJLyogRFdfQVRfYnl0ZV9zaXplICovCi0r CS5ieXRlCTB4NQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkuYXNjaWkJImludGVnZXJcMCIgLyog RFdfQVRfbmFtZSAqLwotKwotKwkudWxlYjEyOCAweDEzCS8qIChESUUgKDB4MWI0KSBEV19UQUdf c3VicHJvZ3JhbSkgKi8KLSsJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuYXNjaWkJInBfX3Rv cFwwIiAvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNsX2ZpbGUgKHAu YWRiKSAqLwotKwkuYnl0ZQkweDMJLyogRFdfQVRfZGVjbF9saW5lICovCi0rCS40Ynl0ZQkuTEZC MgkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLjRieXRlCS5MRkUyLS5MRkIyCS8qIERXX0FUX2hpZ2hf cGMgKi8KLSsJLnVsZWIxMjggMHgxCS8qIERXX0FUX2ZyYW1lX2Jhc2UgKi8KLSsJLmJ5dGUJMHg5 YwkvKiBEV19PUF9jYWxsX2ZyYW1lX2NmYSAqLwotKwkJCS8qIERXX0FUX0dOVV9hbGxfY2FsbF9z aXRlcyAqLwotKwkuNGJ5dGUJLlMweDRmYyAtIC5MZGVidWdfaW5mbzAJLyogRFdfQVRfc2libGlu ZyAqLwotKy5TMHgxZTA6Ci0rCS51bGViMTI4IDB4MTUJLyogKERJRSAoMHgxZTApIERXX1RBR19z dWJwcm9ncmFtKSAqLwotKwkuYXNjaWkJInBfX3RvcF9fbWlkZGxlXDAiIC8qIERXX0FUX25hbWUg Ki8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2RlY2xfZmlsZSAocC5hZGIpICovCi0rCS5ieXRlCTB4 NAkvKiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FUX2lubGluZSAqLwot KwkuNGJ5dGUJLlMweDM3NCAtIC5MZGVidWdfaW5mbzAJLyogRFdfQVRfc2libGluZyAqLwotKy5T MHgyMDI6Ci0rCS51bGViMTI4IDB4MTUJLyogKERJRSAoMHgyMDIpIERXX1RBR19zdWJwcm9ncmFt KSAqLwotKwkuYXNjaWkJInBfX3RvcF9fbWlkZGxlX19pbnNpZGVcMCIgLyogRFdfQVRfbmFtZSAq LwotKwkuYnl0ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChwLmFkYikgKi8KLSsJLmJ5dGUJMHg1 CS8qIERXX0FUX2RlY2xfbGluZSAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfaW5saW5lICovCi0r CS40Ynl0ZQkuUzB4MjI1CS0gLkxkZWJ1Z19pbmZvMCAvKiBEV19BVF9zaWJsaW5nICovCi0rCS5i eXRlCTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDIwMiAqLwotKy5TMHgyMjU6Ci0rCS51 bGViMTI4IDB4MTgJLyogKERJRSAoMHgyMjUpIERXX1RBR19zdWJwcm9ncmFtKSAqLwotKwkuNGJ5 dGUJLlMweDIwMiAtIC5MZGVidWdfaW5mbzAJLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2luICovCi0r CS40Ynl0ZQkuTEZCNAkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLjRieXRlCS5MQkU2LS5MRkI0CS8q IERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjggMHgxCS8qIERXX0FUX2ZyYW1lX2Jhc2UgKi8K LSsJLmJ5dGUJMHg5YwkvKiBEV19PUF9jYWxsX2ZyYW1lX2NmYSAqLwotKwkudWxlYjEyOCAweDEJ LyogRFdfQVRfc3RhdGljX2xpbmsgKi8KLSsJLmJ5dGUJMHg1NgkvKiBEV19PUF9yZWc2ICovCi0r CQkJLyogRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzICovCi0rCS51bGViMTI4IDB4MWEJLyogKERJ RSAoMHgyNDcpIERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpICovCi0rCS40Ynl0ZQkuUzB4MWUw IC0gLkxkZWJ1Z19pbmZvMAkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLjRieXRlCS5M RkI0CS8qIERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJLkxCRTYtLkxGQjQJLyogRFdfQVRfaGln aF9wYyAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfY2FsbF9maWxlIChwLmFkYikgKi8KLSsJLmJ5 dGUJMHgxNAkvKiBEV19BVF9jYWxsX2xpbmUgKi8KLSsJLjRieXRlCS5TMHgzNzQJLSAuTGRlYnVn X2luZm8wIC8qIERXX0FUX3NpYmxpbmcgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4g b2YgRElFIDB4MjQ3ICovCi0rCS5ieXRlCTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDIy NSAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxZTAgKi8KLSsuUzB4 Mzc0OgotKwkudWxlYjEyOCAweDIzCS8qIChESUUgKDB4MzgyKSBEV19UQUdfaW5saW5lZF9zdWJy b3V0aW5lKSAqLwotKwkuNGJ5dGUJLlMweDFlMCAtIC5MZGVidWdfaW5mbzAgLyogRFdfQVRfYWJz dHJhY3Rfb3JpZ2luICovCi0rCS40Ynl0ZQkuTEZCNAkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLjRi eXRlCS5MQkU2LS5MRkI0CS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX0FU X2NhbGxfZmlsZSAocC5hZGIpICovCi0rCS5ieXRlCTB4MWQJLyogRFdfQVRfY2FsbF9saW5lICov Ci0rCS5ieXRlCTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDM4MiAqLwotKwkuYnl0ZQkw CS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxYjQgKi8KLSsuUzB4NGZjOgotKwkudWxlYjEy OCAweDI4CS8qIChESUUgKDB4NTJlKSBEV19UQUdfc3VicHJvZ3JhbSkgKi8KLSsJCQkvKiBEV19B VF9leHRlcm5hbCAqLwotKwkuYXNjaWkJIl9fZ25hdF9yY2hlY2tfUEVfRXhwbGljaXRfUmFpc2Vc MCIgLyogRFdfQVRfbmFtZSAqLwotKwkJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJCQkvKiBE V19BVF9kZWNsYXJhdGlvbiAqLwotKwkuYnl0ZQkwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUg MHg1MmUgKi8KLSsJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YiAqLwotKy5M ZWRlYnVnX2luZm8wOgotKwotKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwot Ky5MZGVidWdfYWJicmV2MDoKLSsJLnVsZWIxMjggMHgxCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJ LnVsZWIxMjggMHgxMQkvKiAoVEFHOiBEV19UQUdfY29tcGlsZV91bml0KSAqLwotKwkuYnl0ZQkw eDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4MjUJLyogKERXX0FUX3Byb2R1 Y2VyKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEy OCAweDEzCS8qIChEV19BVF9sYW5ndWFnZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JN X2RhdGExKSAqLwotKwkudWxlYjEyOCAweDMJLyogKERXX0FUX25hbWUpICovCi0rCS51bGViMTI4 IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4IDB4MWIJLyogKERXX0FUX2Nv bXBfZGlyKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxl YjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9S TV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxl YjEyOCAweDYJLyogKERXX0ZPUk1fZGF0YTQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwku dWxlYjEyOCAweDgJLyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDI0CS8qIChUQUc6 IERXX1RBR19iYXNlX3R5cGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJ LnVsZWIxMjggMHhiCS8qIChEV19BVF9ieXRlX3NpemUpICovCi0rCS51bGViMTI4IDB4YgkvKiAo RFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzZQkvKiAoRFdfQVRfZW5jb2RpbmcpICov Ci0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzCS8q IChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwot KwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHgxMwkvKiAoYWJicmV2IGNvZGUpICov Ci0rCS51bGViMTI4IDB4MmUJLyogKFRBRzogRFdfVEFHX3N1YnByb2dyYW0pICovCi0rCS5ieXRl CTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjggMHgzZgkvKiAoRFdfQVRfZXh0 ZXJuYWwpICovCi0rCS51bGViMTI4IDB4MTkJLyogKERXX0ZPUk1fZmxhZ19wcmVzZW50KSAqLwot KwkudWxlYjEyOCAweDMJLyogKERXX0FUX25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdf Rk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4IDB4M2EJLyogKERXX0FUX2RlY2xfZmlsZSkgKi8K LSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDNiCS8q IChEV19BVF9kZWNsX2xpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkg Ki8KLSsJLnVsZWIxMjggMHgxMQkvKiAoRFdfQVRfbG93X3BjKSAqLwotKwkudWxlYjEyOCAweDEJ LyogKERXX0ZPUk1fYWRkcikgKi8KLSsJLnVsZWIxMjggMHgxMgkvKiAoRFdfQVRfaGlnaF9wYykg Ki8KLSsJLnVsZWIxMjggMHg2CS8qIChEV19GT1JNX2RhdGE0KSAqLwotKwkudWxlYjEyOCAweDQw CS8qIChEV19BVF9mcmFtZV9iYXNlKSAqLwotKwkudWxlYjEyOCAweDE4CS8qIChEV19GT1JNX2V4 cHJsb2MpICovCi0rCS51bGViMTI4IDB4MjExNwkvKiAoRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVz KSAqLwotKwkudWxlYjEyOCAweDE5CS8qIChEV19GT1JNX2ZsYWdfcHJlc2VudCkgKi8KLSsJLnVs ZWIxMjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19G T1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDE1CS8qIChh YmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgyZQkvKiAoVEFHOiBEV19UQUdfc3VicHJvZ3Jh bSkgKi8KLSsJLmJ5dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMJ LyogKERXX0FUX25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICov Ci0rCS51bGViMTI4IDB4M2EJLyogKERXX0FUX2RlY2xfZmlsZSkgKi8KLSsJLnVsZWIxMjggMHhi CS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDNiCS8qIChEV19BVF9kZWNsX2xp bmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjgg MHgyMAkvKiAoRFdfQVRfaW5saW5lKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0 YTEpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfQVRfc2libGluZykgKi8KLSsJLnVsZWIxMjgg MHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIx MjggMHgxOAkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4IDB4MmUJLyogKFRBRzogRFdf VEFHX3N1YnByb2dyYW0pICovCi0rCS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJ LnVsZWIxMjggMHgzMQkvKiAoRFdfQVRfYWJzdHJhY3Rfb3JpZ2luKSAqLwotKwkudWxlYjEyOCAw eDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS51bGViMTI4IDB4MTEJLyogKERXX0FUX2xvd19w YykgKi8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19GT1JNX2FkZHIpICovCi0rCS51bGViMTI4IDB4 MTIJLyogKERXX0FUX2hpZ2hfcGMpICovCi0rCS51bGViMTI4IDB4NgkvKiAoRFdfRk9STV9kYXRh NCkgKi8KLSsJLnVsZWIxMjggMHg0MAkvKiAoRFdfQVRfZnJhbWVfYmFzZSkgKi8KLSsJLnVsZWIx MjggMHgxOAkvKiAoRFdfRk9STV9leHBybG9jKSAqLwotKwkudWxlYjEyOCAweDQ4CS8qIChEV19B VF9zdGF0aWNfbGluaykgKi8KLSsJLnVsZWIxMjggMHgxOAkvKiAoRFdfRk9STV9leHBybG9jKSAq LwotKwkudWxlYjEyOCAweDIxMTcJLyogKERXX0FUX0dOVV9hbGxfY2FsbF9zaXRlcykgKi8KLSsJ LnVsZWIxMjggMHgxOQkvKiAoRFdfRk9STV9mbGFnX3ByZXNlbnQpICovCi0rCS5ieXRlCTAKLSsJ LmJ5dGUJMAotKwkudWxlYjEyOCAweDFhCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjgg MHgxZAkvKiAoVEFHOiBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKSAqLwotKwkuYnl0ZQkweDEJ LyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4MzEJLyogKERXX0FUX2Fic3RyYWN0 X29yaWdpbikgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxl YjEyOCAweDExCS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9S TV9hZGRyKSAqLwotKwkudWxlYjEyOCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxl YjEyOCAweDYJLyogKERXX0ZPUk1fZGF0YTQpICovCi0rCS51bGViMTI4IDB4NTgJLyogKERXX0FU X2NhbGxfZmlsZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwku dWxlYjEyOCAweDU5CS8qIChEV19BVF9jYWxsX2xpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAo RFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwot KwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJ MAotKwkudWxlYjEyOCAweDIzCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgxZAkv KiAoVEFHOiBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5lKSAqLwotKwkuYnl0ZQkweDEJLyogRFdf Y2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4MzEJLyogKERXX0FUX2Fic3RyYWN0X29yaWdp bikgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoRFdfRk9STV9yZWY0KSAqLwotKwkudWxlYjEyOCAw eDExCS8qIChEV19BVF9sb3dfcGMpICovCi0rCS51bGViMTI4IDB4MQkvKiAoRFdfRk9STV9hZGRy KSAqLwotKwkudWxlYjEyOCAweDEyCS8qIChEV19BVF9oaWdoX3BjKSAqLwotKwkudWxlYjEyOCAw eDYJLyogKERXX0ZPUk1fZGF0YTQpICovCi0rCS51bGViMTI4IDB4NTgJLyogKERXX0FUX2NhbGxf ZmlsZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEy OCAweDU5CS8qIChEV19BVF9jYWxsX2xpbmUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9S TV9kYXRhMSkgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4MjgJLyogKGFi YnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDJlCS8qIChUQUc6IERXX1RBR19zdWJwcm9ncmFt KSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4M2YJ LyogKERXX0FUX2V4dGVybmFsKSAqLwotKwkudWxlYjEyOCAweDE5CS8qIChEV19GT1JNX2ZsYWdf cHJlc2VudCkgKi8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEy OCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDM0CS8qIChEV19BVF9h cnRpZmljaWFsKSAqLwotKwkudWxlYjEyOCAweDE5CS8qIChEV19GT1JNX2ZsYWdfcHJlc2VudCkg Ki8KLSsJLnVsZWIxMjggMHgzYwkvKiAoRFdfQVRfZGVjbGFyYXRpb24pICovCi0rCS51bGViMTI4 IDB4MTkJLyogKERXX0ZPUk1fZmxhZ19wcmVzZW50KSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAK LSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsKLSsgICAgICAgIC5zZWN0aW9uIC5k ZWJ1Z19saW5lCi0rLkxsaW5lMV9iZWdpbjoKLSsgICAgICAgIC5ieXRlICAgMAotKwotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1pY3ljbGUuYwotQEAg LTAsMCArMSwyNCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDQtMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rLyogRHVtbXkgbWFpbiBmdW5jdGlvbi4gICovCi0rCi0raW50Ci0rbWFpbigpCi0rewot KyAgcmV0dXJuIDA7Ci0rfQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1pY3ljbGUuZXhwCi1AQCAtMCwwICsxLDQ2IEBACi0rIyBDb3B5cmlnaHQgMjAx NCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0rIyBUaGlzIHRlc3QgZXhlcmNpc2VzIFBSIDE2NTgxLgotKwotK2xvYWRf bGliIGR3YXJmLmV4cAotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBvbiB0YXJnZXRz IHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KLStpZiB7IVtkd2FyZjJfc3VwcG9y dF19IHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rc3RhbmRhcmRfdGVzdGZpbGUgLlMgLmMKLSsK LStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBc Ci0rCSAgW2xpc3QgJHNyY2ZpbGUgJHNyY2ZpbGUyXSB7bm9kZWJ1Z31dIH0gewotKyAgICByZXR1 cm4gLTEKLSt9Ci0rCi0rIyBXZSBhcmUgdHJ5aW5nIHRvIHZlcmlmeSB0aGF0IHRoZSBwYXJ0aWFs IHN5bXRhYiB0byBzeW10YWIgZXhwYW5zaW9uCi0rIyBmb3IgdGhlIGRlYnVnZ2luZyBpbmZvIGhh bmQtY29kZWQgaW4gb3VyIGFzc2VtYmx5IGZpbGUgZG9lcyBub3QgY2F1c2UKLSsjIHRoZSBkZWJ1 Z2dlciB0byBjcmFzaCAoaW5maW5pdGUgcmVjdXJzaW9uKS4gIFRvIGZhY2lsaXRhdGUgdGhlIHRl c3QsCi0rIyBzdGFydCB0aGUgZGVidWdnZXIgd2l0aCAtcmVhZG5vdy4gIFRoaXMgZm9yY2UgZXhw YW5zaW9uIGFzIHNvb24gYXMKLSsjIHRoZSBvYmpmaWxlIGlzIGxvYWRlZC4KLSsKLStzZXQgc2F2 ZWRfZ2RiZmxhZ3MgJEdEQkZMQUdTCi0rc2V0IEdEQkZMQUdTICIkR0RCRkxBR1MgLXJlYWRub3ci Ci0rY2xlYW5fcmVzdGFydCAke3Rlc3RmaWxlfQotK3NldCBHREJGTEFHUyAkc2F2ZWRfZ2RiZmxh Z3MKLSsKLSsjIEFuZCBqdXN0IHRvIGJlIHN1cmUgdGhhdCB0aGUgZGVidWdnZXIgZGlkIG5vdCBj cmFzaCBhZnRlciBoYXZpbmcKLSsjIGV4cGFuZGVkIG91ciBzeW1ib2xzLCBkbyBhIGxpZmUtY2hl Y2suCi0rCi0rZ2RiX3Rlc3QgImVjaG8gbGlmZSBjaGVja1xcbiIgImxpZmUgY2hlY2siCgpkaWZm IC0tZ2l0IGEvZ2RiLWduYXQtZHdhcmYtY3Jhc2gtMm9mMy5wYXRjaCBiL2dkYi1nbmF0LWR3YXJm LWNyYXNoLTJvZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyZjAyNTku LjAwMDAwMDAKLS0tIGEvZ2RiLWduYXQtZHdhcmYtY3Jhc2gtMm9mMy5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDEyNSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNo ZXMvMjAxNC0wMi9tc2cwMDcyOS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFt0ZXN0c3VpdGVdIEZp eCBkdzItaWN5Y2xlLmV4cCAtZnNhbml0aXplPWFkZHJlc3MgR0RCIGNyYXNoCi0KLQotLS1XSXla NDZSMmk4d0R6a1N1Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkK LUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZQotCi1IaSBEb3VnLAotCi1pbiBmYWN0IG9idmlv dXMsIEkgd2lsbCBjaGVjayBpdCBpbi4KLQotYmludXRpbHMgcmVhZGVsZiAtd2k6Ci0gPDQ+PGEy PjogQWJicmV2IE51bWJlcjogMjYgKERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpCi0gICAgPGEz PiAgIERXX0FUX2Fic3RyYWN0X29yaWdpbjogPDB4NWE+Ci0gICAgPGE3PiAgIERXX0FUX2xvd19w YyAgICAgIDogMHg0MDA1OTAKLSAgICA8YWI+ICAgRFdfQVRfaGlnaF9wYyAgICAgOiAweDQKLSAg ICA8YWY+ICAgRFdfQVRfY2FsbF9maWxlICAgOiAxCi0gICAgPGIwPiAgIERXX0FUX2NhbGxfbGlu ZSAgIDogMjAKLSAgICA8YjE+ICAgRFdfQVRfc2libGluZyAgICAgOiA8MHhiOD4KLSA8Mj48Yjg+ OiBBYmJyZXYgTnVtYmVyOiAzNSAoRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSkKLSAgICA8Yjk+ ICAgRFdfQVRfYWJzdHJhY3Rfb3JpZ2luOiA8MHg1YT4KLSAgICA8YmQ+ICAgRFdfQVRfbG93X3Bj ICAgICAgOiAweDQwMDU5MAotICAgIDxjMT4gICBEV19BVF9oaWdoX3BjICAgICA6IDB4NAotICAg IDxjNT4gICBEV19BVF9jYWxsX2ZpbGUgICA6IDEKLSAgICA8YzY+ICAgRFdfQVRfY2FsbF9saW5l ICAgOiAyOQotCi08YjE+IERXX0FUX3NpYmxpbmcgcG9pbnRzIHRvIHRoZSBuZXh0IERJRSAtIGJ1 dCB0aGF0IERJRSBpcyAyIGxldmVscwotdXB3YXJkcyAtIGRlZmluaXRlbHkgbm90IGEgc2libGlu Zy4gIFRoaXMgY29uZnVzZXMgR0RCIHVwIHRvIGEgY3Jhc2g6Ci0KLT09MzIxNDM9PSBFUlJPUjog QWRkcmVzc1Nhbml0aXplcjogaGVhcC1idWZmZXItb3ZlcmZsb3cgb24gYWRkcmVzcyAweDYwMjQw MDAxOThhYyBhdCBwYyAweGI0ZDEwNCBicCAweDdmZmY2M2U5NmU3MCBzcCAweDdmZmY2M2U5NmU2 MAotUkVBRCBvZiBzaXplIDEgYXQgMHg2MDI0MDAwMTk4YWMgdGhyZWFkIFQwCi0gICAgIzAgMHhi NGQxMDMgaW4gcmVhZF91bnNpZ25lZF9sZWIxMjggKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGIt Y2xlYW4vZ2RiL2dkYisweGI0ZDEwMykKLSAgICAjMSAweGIxNWYzYyBpbiBwZWVrX2RpZV9hYmJy ZXYgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweGIxNWYzYykKLSAg ICAjMiAweGI0NjE4NSBpbiBsb2FkX3BhcnRpYWxfZGllcyAoL2hvbWUvamtyYXRvY2gvcmVkaGF0 L2dkYi1jbGVhbi9nZGIvZ2RiKzB4YjQ2MTg1KQotICAgICMzIDB4YjEwM2ZiIGluIHByb2Nlc3Nf cHN5bXRhYl9jb21wX3VuaXRfcmVhZGVyICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2RiLWNsZWFu L2dkYi9nZGIrMHhiMTAzZmIpCi0gICAgIzQgMHhiMGQyYTkgaW4gaW5pdF9jdXR1X2FuZF9yZWFk X2RpZXMgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweGIwZDJhOSkK LSAgICAjNSAweGIxMTE1ZiBpbiBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0ICgvaG9tZS9qa3Jh dG9jaC9yZWRoYXQvZ2RiLWNsZWFuL2dkYi9nZGIrMHhiMTExNWYpCi0gICAgIzYgMHhiMTIzNWYg aW4gZHdhcmYyX2J1aWxkX3BzeW10YWJzX2hhcmQgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGIt Y2xlYW4vZ2RiL2dkYisweGIxMjM1ZikKLSAgICAjNyAweGIwNTUzNiBpbiBkd2FyZjJfYnVpbGRf cHN5bXRhYnMgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisweGIwNTUz NikKLSAgICAjOCAweDg2ZDVhNSBpbiByZWFkX3BzeW1zICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQv Z2RiLWNsZWFuL2dkYi9nZGIrMHg4NmQ1YTUpCi0gICAgIzkgMHg5YjFjMzcgaW4gcmVxdWlyZV9w YXJ0aWFsX3N5bWJvbHMgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL2dkYisw eDliMWMzNykKLSAgICAjMTAgMHg5YmYyZDAgaW4gcmVhZF9zeW1ib2xzICgvaG9tZS9qa3JhdG9j aC9yZWRoYXQvZ2RiLWNsZWFuL2dkYi9nZGIrMHg5YmYyZDApCi0gICAgIzExIDB4OWMwMTRjIGlu IHN5bXNfZnJvbV9vYmpmaWxlXzEgKC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2Ri L2dkYisweDljMDE0YykKLQotSSBoYXZlIGFkZGVkID09PSBEZWxldGUgYWxsIERXX0FUX3NpYmxp bmcgPT09OgotCWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvR0RCVGVzdGNhc2VDb29r Ym9vaz9hY3Rpb249ZGlmZiZyZXYyPTMxJnJldjE9MzAKLQotCi1KYW4KLQotLS1XSXlaNDZSMmk4 d0R6a1N1Ci1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRl bnQtRGlzcG9zaXRpb246IGlubGluZTsgZmlsZW5hbWU9InNpYmxpbmcucGF0Y2giCi0KLWdkYi90 ZXN0c3VpdGUvCi0yMDE0LTAyLTI0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+Ci0KLQlGaXggZHcyLWljeWNsZS5leHAgLWZzYW5pdGl6ZT1hZGRyZXNzIEdEQiBj cmFzaC4KLQkqIGdkYi5kd2FyZjIvZHcyLWljeWNsZS5TOiBSZW1vdmUgYWxsIERXX0FUX3NpYmxp bmcuCi0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWljeWNsZS5T IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1pY3ljbGUuUwotaW5kZXggMWY4NGU0YS4u OTM4ZmYyMCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWN5Y2xl LlMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWN5Y2xlLlMKLUBAIC02Mywy MSArNjMsMTggQEAgcF9fdG9wOgotIAkudWxlYjEyOCAweDEJLyogRFdfQVRfZnJhbWVfYmFzZSAq LwotIAkuYnl0ZQkweDljCS8qIERXX09QX2NhbGxfZnJhbWVfY2ZhICovCi0gCQkJLyogRFdfQVRf R05VX2FsbF9jYWxsX3NpdGVzICovCi0tCS40Ynl0ZQkuUzB4NGZjIC0gLkxkZWJ1Z19pbmZvMAkv KiBEV19BVF9zaWJsaW5nICovCi0gLlMweDFlMDoKLSAJLnVsZWIxMjggMHgxNQkvKiAoRElFICgw eDFlMCkgRFdfVEFHX3N1YnByb2dyYW0pICovCi0gCS5hc2NpaQkicF9fdG9wX19taWRkbGVcMCIg LyogRFdfQVRfbmFtZSAqLwotIAkuYnl0ZQkweDEJLyogRFdfQVRfZGVjbF9maWxlIChwLmFkYikg Ki8KLSAJLmJ5dGUJMHg0CS8qIERXX0FUX2RlY2xfbGluZSAqLwotIAkuYnl0ZQkweDEJLyogRFdf QVRfaW5saW5lICovCi0tCS40Ynl0ZQkuUzB4Mzc0IC0gLkxkZWJ1Z19pbmZvMAkvKiBEV19BVF9z aWJsaW5nICovCi0gLlMweDIwMjoKLSAJLnVsZWIxMjggMHgxNQkvKiAoRElFICgweDIwMikgRFdf VEFHX3N1YnByb2dyYW0pICovCi0gCS5hc2NpaQkicF9fdG9wX19taWRkbGVfX2luc2lkZVwwIiAv KiBEV19BVF9uYW1lICovCi0gCS5ieXRlCTB4MQkvKiBEV19BVF9kZWNsX2ZpbGUgKHAuYWRiKSAq LwotIAkuYnl0ZQkweDUJLyogRFdfQVRfZGVjbF9saW5lICovCi0gCS5ieXRlCTB4MQkvKiBEV19B VF9pbmxpbmUgKi8KLS0JLjRieXRlCS5TMHgyMjUJLSAuTGRlYnVnX2luZm8wIC8qIERXX0FUX3Np YmxpbmcgKi8KLSAJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4MjAyICovCi0g LlMweDIyNToKLSAJLnVsZWIxMjggMHgxOAkvKiAoRElFICgweDIyNSkgRFdfVEFHX3N1YnByb2dy YW0pICovCi1AQCAtOTUsNyArOTIsNiBAQCBwX190b3A6Ci0gCS40Ynl0ZQkuTEJFNi0uTEZCNAkv KiBEV19BVF9oaWdoX3BjICovCi0gCS5ieXRlCTB4MQkvKiBEV19BVF9jYWxsX2ZpbGUgKHAuYWRi KSAqLwotIAkuYnl0ZQkweDE0CS8qIERXX0FUX2NhbGxfbGluZSAqLwotLQkuNGJ5dGUJLlMweDM3 NAktIC5MZGVidWdfaW5mbzAgLyogRFdfQVRfc2libGluZyAqLwotIAkuYnl0ZQkwCS8qIGVuZCBv ZiBjaGlsZHJlbiBvZiBESUUgMHgyNDcgKi8KLSAJLmJ5dGUJMAkvKiBlbmQgb2YgY2hpbGRyZW4g b2YgRElFIDB4MjI1ICovCi0gCS5ieXRlCTAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDFl MCAqLwotQEAgLTE2Nyw4ICsxNjMsNiBAQCBwX190b3A6Ci0gCS51bGViMTI4IDB4MTgJLyogKERX X0ZPUk1fZXhwcmxvYykgKi8KLSAJLnVsZWIxMjggMHgyMTE3CS8qIChEV19BVF9HTlVfYWxsX2Nh bGxfc2l0ZXMpICovCi0gCS51bGViMTI4IDB4MTkJLyogKERXX0ZPUk1fZmxhZ19wcmVzZW50KSAq LwotLQkudWxlYjEyOCAweDEJLyogKERXX0FUX3NpYmxpbmcpICovCi0tCS51bGViMTI4IDB4MTMJ LyogKERXX0ZPUk1fcmVmNCkgKi8KLSAJLmJ5dGUJMAotIAkuYnl0ZQkwCi0gCS51bGViMTI4IDB4 MTUJLyogKGFiYnJldiBjb2RlKSAqLwotQEAgLTE4Miw4ICsxNzYsNiBAQCBwX190b3A6Ci0gCS51 bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSAJLnVsZWIxMjggMHgyMAkvKiAoRFdf QVRfaW5saW5lKSAqLwotIAkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0tCS51 bGViMTI4IDB4MQkvKiAoRFdfQVRfc2libGluZykgKi8KLS0JLnVsZWIxMjggMHgxMwkvKiAoRFdf Rk9STV9yZWY0KSAqLwotIAkuYnl0ZQkwCi0gCS5ieXRlCTAKLSAJLnVsZWIxMjggMHgxOAkvKiAo YWJicmV2IGNvZGUpICovCi1AQCAtMjE2LDggKzIwOCw2IEBAIHBfX3RvcDoKLSAJLnVsZWIxMjgg MHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotIAkudWxlYjEyOCAweDU5CS8qIChEV19BVF9jYWxs X2xpbmUpICovCi0gCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLS0JLnVsZWIx MjggMHgxCS8qIChEV19BVF9zaWJsaW5nKSAqLwotLQkudWxlYjEyOCAweDEzCS8qIChEV19GT1JN X3JlZjQpICovCi0gCS5ieXRlCTAKLSAJLmJ5dGUJMAotIAkudWxlYjEyOCAweDIzCS8qIChhYmJy ZXYgY29kZSkgKi8KLQotLS1XSXlaNDZSMmk4d0R6a1N1LS0KLQoKZGlmZiAtLWdpdCBhL2dkYi1y aGJ6Nzk1NDI0LWJpdHBvcy0yMG9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBv ZjI1LnBhdGNoCmluZGV4IGVkMjBkOGIuLmNkMTczNjQgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1 NDI0LWJpdHBvcy0yMG9mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIwb2Yy NS5wYXRjaApAQCAtNDYzLDExICs0NjMsMTEgQEAgQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2gK IENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKIENvbnRlbnQtRGlzcG9zaXRpb246IGF0 dGFjaG1lbnQ7IGZpbGVuYW1lPWJpdHBvcy1tYWluLnBhdGNoCiAKLUluZGV4OiBnZGItNy43LjEv Z2RiL2FkYS1sYW5nLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtbGFuZy5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxNC0wNS0x MiAyMDoyMjowNC43NjE0NDM0OTUgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMJ MjAxNC0wNS0xMiAyMDoyMjowNS43ODE0NDQxMDcgKzAyMDAKLUBAIC04MCw3ICs4MCw3IEBAIHN0 YXRpYyBzdHJ1Y3QgdHlwZSAqZGVzY19ib3VuZHNfdHlwZSAoc3QKKy0tLSBnZGItNy43LjkwLjIw MTQwNjEzLm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMjU3NDcwMTkg KzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtbGFuZy5jCTIwMTQtMDYtMTYg MjM6Mjc6MDcuODUwNzQ5NTkxICswMjAwCitAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgc3RydWN0 IHR5cGUgKmRlc2NfYm91bmRzX3R5cGUgKHN0CiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqZGVz Y19ib3VuZHMgKHN0cnVjdCB2YWx1ZSAqKTsKICAKQEAgLTQ3Niw3ICs0NzYsNyBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgCiAgc3RhdGljIGludCBmYXRfcG50cl9ib3VuZHNf Yml0c2l6ZSAoc3RydWN0IHR5cGUgKik7CiAgCi1AQCAtODgsMTMgKzg4LDEzIEBAIHN0YXRpYyBz dHJ1Y3QgdHlwZSAqZGVzY19kYXRhX3RhcmdldF90eXAKK0BAIC04NiwxMyArODYsMTMgQEAgc3Rh dGljIHN0cnVjdCB0eXBlICpkZXNjX2RhdGFfdGFyZ2V0X3R5cAogIAogIHN0YXRpYyBzdHJ1Y3Qg dmFsdWUgKmRlc2NfZGF0YSAoc3RydWN0IHZhbHVlICopOwogIApAQCAtNDkyLDcgKzQ5Miw3IEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAKICBzdGF0aWMgaW50IGRlc2NfYm91 bmRfYml0c2l6ZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwogIAotQEAgLTE3NCw3ICsxNzQs NyBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKnN0YXRpY191bndyYXBfdHlwZSAoCitAQCAtMTcyLDcg KzE3Miw3IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc3RhdGljX3Vud3JhcF90eXBlICgKICAKICBz dGF0aWMgc3RydWN0IHZhbHVlICp1bndyYXBfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqKTsKICAKQEAg LTUwMSw3ICs1MDEsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgCiAgc3Rh dGljIHN0cnVjdCB0eXBlICpkZWNvZGVfY29uc3RyYWluZWRfcGFja2VkX2FycmF5X3R5cGUgKHN0 cnVjdCB0eXBlICopOwogIAotQEAgLTE4OSw3ICsxODksOCBAQCBzdGF0aWMgaW50IGFkYV9pc191 bmNvbnN0cmFpbmVkX3BhY2tlZF9hCitAQCAtMTg3LDcgKzE4Nyw4IEBAIHN0YXRpYyBpbnQgYWRh X2lzX3VuY29uc3RyYWluZWRfcGFja2VkX2EKICBzdGF0aWMgc3RydWN0IHZhbHVlICp2YWx1ZV9z dWJzY3JpcHRfcGFja2VkIChzdHJ1Y3QgdmFsdWUgKiwgaW50LAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqKik7CiAgCkBAIC01MTEs NyArNTExLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIAogIHN0YXRpYyBz dHJ1Y3QgdmFsdWUgKmNvZXJjZV91bnNwZWNfdmFsX3RvX3R5cGUgKHN0cnVjdCB2YWx1ZSAqLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0 eXBlICopOwotQEAgLTIxNywxNCArMjE4LDE0IEBAIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKnZhbHVl X3ZhbF9hdHIgKHN0cnUKK0BAIC0yMTUsMTQgKzIxNiwxNCBAQCBzdGF0aWMgc3RydWN0IHZhbHVl ICp2YWx1ZV92YWxfYXRyIChzdHJ1CiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKnN0YW5kYXJkX2xv b2t1cCAoY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW5fZW51bSk7CiAgCkBAIC01MzAsNyArNTMw LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIAogIHN0YXRpYyBzdHJ1Y3Qg dmFsdWUgKmFkYV90b19maXhlZF92YWx1ZV9jcmVhdGUgKHN0cnVjdCB0eXBlICosIENPUkVfQURE UiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgdmFsdWUgKik7Ci1AQCAtMjQwLDcgKzI0MSw3IEBAIHN0YXRpYyB2b2lkIGFkYV9sYW5ndWFn ZV9hcmNoX2luZm8gKHN0cnUKK0BAIC0yMzgsNyArMjM5LDcgQEAgc3RhdGljIHZvaWQgYWRhX2xh bmd1YWdlX2FyY2hfaW5mbyAoc3RydQogIAogIHN0YXRpYyB2b2lkIGNoZWNrX3NpemUgKGNvbnN0 IHN0cnVjdCB0eXBlICopOwogIApAQCAtNTM5LDcgKzUzOSw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL2FkYS1sYW5nLmMKICAJCQkJCSAgICAgc3RydWN0IHR5cGUgKik7CiAgCiAgc3RhdGljIHN0 cnVjdCB2YWx1ZSAqYXNzaWduX2FnZ3JlZ2F0ZSAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB2YWx1 ZSAqLCAKLUBAIC01ODcsNyArNTg4LDcgQEAgY29lcmNlX3Vuc3BlY192YWxfdG9fdHlwZSAoc3Ry dWN0IHZhbHVlCitAQCAtNjk0LDcgKzY5NSw3IEBAIGNvZXJjZV91bnNwZWNfdmFsX3RvX3R5cGUg KHN0cnVjdCB2YWx1ZQogIH0KICAKICBzdGF0aWMgY29uc3QgZ2RiX2J5dGUgKgpAQCAtNTQ4LDcg KzU0OCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICB7CiAgICBpZiAodmFs YWRkciA9PSBOVUxMKQogICAgICByZXR1cm4gTlVMTDsKLUBAIC01OTYsNyArNTk3LDcgQEAgY29u ZF9vZmZzZXRfaG9zdCAoY29uc3QgZ2RiX2J5dGUgKnZhbGFkZAorQEAgLTcwMyw3ICs3MDQsNyBA QCBjb25kX29mZnNldF9ob3N0IChjb25zdCBnZGJfYnl0ZSAqdmFsYWRkCiAgfQogIAogIHN0YXRp YyBDT1JFX0FERFIKQEAgLTU1Nyw3ICs1NTcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEt bGFuZy5jCiAgewogICAgaWYgKGFkZHJlc3MgPT0gMCkKICAgICAgcmV0dXJuIDA7Ci1AQCAtMTYw Miw3ICsxNjAzLDcgQEAgZGVzY19ib3VuZHMgKHN0cnVjdCB2YWx1ZSAqYXJyKQorQEAgLTE3MTEs NyArMTcxMiw3IEBAIGRlc2NfYm91bmRzIChzdHJ1Y3QgdmFsdWUgKmFycikKICAvKiBJZiBUWVBF IGlzIHRoZSB0eXBlIG9mIGFuIGFycmF5LWRlc2NyaXB0b3IgKGZhdCBwb2ludGVyKSwgIHRoZSBi aXQKICAgICBwb3NpdGlvbiBvZiB0aGUgZmllbGQgY29udGFpbmluZyB0aGUgYWRkcmVzcyBvZiB0 aGUgYm91bmRzIGRhdGEuICAqLwogIApAQCAtNTY2LDcgKzU2Niw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL2FkYS1sYW5nLmMKICBmYXRfcG50cl9ib3VuZHNfYml0cG9zIChzdHJ1Y3QgdHlwZSAq dHlwZSkKICB7CiAgICByZXR1cm4gVFlQRV9GSUVMRF9CSVRQT1MgKGRlc2NfYmFzZV90eXBlICh0 eXBlKSwgMSk7Ci1AQCAtMTY2OCw3ICsxNjY5LDcgQEAgZGVzY19kYXRhIChzdHJ1Y3QgdmFsdWUg KmFycikKK0BAIC0xNzc3LDcgKzE3NzgsNyBAQCBkZXNjX2RhdGEgKHN0cnVjdCB2YWx1ZSAqYXJy KQogIC8qIElmIFRZUEUgaXMgdGhlIHR5cGUgb2YgYW4gYXJyYXktZGVzY3JpcHRvciAoZmF0IHBv aW50ZXIpLCB0aGUgYml0CiAgICAgcG9zaXRpb24gb2YgdGhlIGZpZWxkIGNvbnRhaW5pbmcgdGhl IGFkZHJlc3Mgb2YgdGhlIGRhdGEuICAqLwogIApAQCAtNTc1LDcgKzU3NSw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICBmYXRfcG50cl9kYXRhX2JpdHBvcyAoc3RydWN0IHR5 cGUgKnR5cGUpCiAgewogICAgcmV0dXJuIFRZUEVfRklFTERfQklUUE9TIChkZXNjX2Jhc2VfdHlw ZSAodHlwZSksIDApOwotQEAgLTE3MDMsNyArMTcwNCw3IEBAIGRlc2Nfb25lX2JvdW5kIChzdHJ1 Y3QgdmFsdWUgKmJvdW5kcywgaW4KK0BAIC0xODEyLDcgKzE4MTMsNyBAQCBkZXNjX29uZV9ib3Vu ZCAoc3RydWN0IHZhbHVlICpib3VuZHMsIGluCiAgICAgb2YgdGhlIEl0aCBsb3dlciBib3VuZCBz dG9yZWQgaW4gaXQsIGlmIFdISUNIIGlzIDAsIGFuZCB0aGUgSXRoIHVwcGVyCiAgICAgYm91bmQs IGlmIFdISUNIIGlzIDEuICBUaGUgZmlyc3QgYm91bmQgaXMgST0xLiAgKi8KICAKQEAgLTU4NCw3 ICs1ODQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgZGVzY19ib3VuZF9i aXRwb3MgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgaSwgaW50IHdoaWNoKQogIHsKICAgIHJldHVy biBUWVBFX0ZJRUxEX0JJVFBPUyAoZGVzY19iYXNlX3R5cGUgKHR5cGUpLCAyICogaSArIHdoaWNo IC0gMik7Ci1AQCAtMTg5Myw3ICsxODk0LDcgQEAgYWRhX3R5cGVfb2ZfYXJyYXkgKHN0cnVjdCB2 YWx1ZSAqYXJyLCBpbgorQEAgLTIwMDIsNyArMjAwMyw3IEBAIGFkYV90eXBlX29mX2FycmF5IChz dHJ1Y3QgdmFsdWUgKmFyciwgaW4KICAJICAgICAgICAgemVybywgYW5kIGRvZXMgbm90IG5lZWQg dG8gYmUgcmVjb21wdXRlZC4gICovCiAgCSAgICAgIGlmIChsbyA8IGhpKQogIAkJewpAQCAtNTkz LDcgKzU5Myw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAJCSAgICAgICAg KGhpIC0gbG8gKyAxKSAqIFRZUEVfRklFTERfQklUU0laRSAoZWx0X3R5cGUsIDApOwogIAogIAkJ ICBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkgPSAoYXJyYXlfYml0c2l6ZSArIDcpIC8gODsKLUBA IC0yMDQ1LDcgKzIwNDYsNyBAQCBkZWNvZGVfcGFja2VkX2FycmF5X2JpdHNpemUgKHN0cnVjdCB0 eXBlCitAQCAtMjE1NCw3ICsyMTU1LDcgQEAgZGVjb2RlX3BhY2tlZF9hcnJheV9iaXRzaXplIChz dHJ1Y3QgdHlwZQogICAgIGluIGJpdHMuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCkBA IC02MDIsNyArNjAyLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIHsKICAg IHN0cnVjdCB0eXBlICpuZXdfZWx0X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqbmV3X3R5cGU7Ci1A QCAtMjA5Nyw3ICsyMDk4LDcgQEAgZGVjb2RlX2NvbnN0cmFpbmVkX3BhY2tlZF9hcnJheV90eXBl IChzdAorQEAgLTIyMDYsNyArMjIwNyw3IEBAIGRlY29kZV9jb25zdHJhaW5lZF9wYWNrZWRfYXJy YXlfdHlwZSAoc3QKICAgIGNoYXIgKm5hbWU7CiAgICBjb25zdCBjaGFyICp0YWlsOwogICAgc3Ry dWN0IHR5cGUgKnNoYWRvd190eXBlOwpAQCAtNjExLDcgKzYxMSw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL2FkYS1sYW5nLmMKICAKICAgIGlmICghcmF3X25hbWUpCiAgICAgIHJhd19uYW1lID0g YWRhX3R5cGVfbmFtZSAoZGVzY19iYXNlX3R5cGUgKHR5cGUpKTsKLUBAIC0yMTY4LDcgKzIxNjks OCBAQCBkZWNvZGVfY29uc3RyYWluZWRfcGFja2VkX2FycmF5IChzdHJ1Y3QKK0BAIC0yMjc3LDcg KzIyNzgsOCBAQCBkZWNvZGVfY29uc3RyYWluZWRfcGFja2VkX2FycmF5IChzdHJ1Y3QKICAgCSBh cnJheSB3aXRoIG5vIHdyYXBwZXIuICBJbiBvcmRlciB0byBpbnRlcnByZXQgdGhlIHZhbHVlIHRo cm91Z2gKICAgCSB0aGUgKGxlZnQtanVzdGlmaWVkKSBwYWNrZWQgYXJyYXkgdHlwZSB3ZSBqdXN0 IGJ1aWx0LCB3ZSBtdXN0CiAgIAkgZmlyc3QgbGVmdC1qdXN0aWZ5IGl0LiAgKi8KQEAgLTYyMSw3 ICs2MjEsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICAgICAgVUxPTkdF U1QgbW9kOwogIAogICAgICAgIG1vZCA9IGFkYV9tb2R1bHVzICh2YWx1ZV90eXBlIChhcnIpKSAt IDE7Ci1AQCAtMjI2OSwxNSArMjI3MSwxNiBAQCBoYXNfbmVnYXRpdmVzIChzdHJ1Y3QgdHlwZSAq dHlwZSkKK0BAIC0yMzc4LDE1ICsyMzgwLDE2IEBAIGhhc19uZWdhdGl2ZXMgKHN0cnVjdCB0eXBl ICp0eXBlKQogIAogIHN0cnVjdCB2YWx1ZSAqCiAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRf dmFsIChzdHJ1Y3QgdmFsdWUgKm9iaiwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC02NDQs NyArNjQ0LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZSBvZiBzb3VyY2UgdGhhdCBhcmUgdW51c2VkICov CiAgICAgIGFjY3VtU2l6ZTsgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgbWVhbmluZ2Z1 bCBiaXRzIGluIGFjY3VtICovCiAgICB1bnNpZ25lZCBjaGFyICpieXRlczsgICAgICAgICAvKiBG aXJzdCBieXRlIGNvbnRhaW5pbmcgZGF0YSB0byB1bnBhY2sgKi8KLUBAIC0yMzEwLDcgKzIzMTMs NyBAQCBhZGFfdmFsdWVfcHJpbWl0aXZlX3BhY2tlZF92YWwgKHN0cnVjdCB2CitAQCAtMjQyMCw3 ICsyNDIzLDcgQEAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3QgdgogIAog ICAgaWYgKG9iaiAhPSBOVUxMKQogICAgICB7CkBAIC02NTMsNyArNjUzLDcgQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIAogICAgICAgIHNldF92YWx1ZV9jb21wb25lbnRfbG9j YXRpb24gKHYsIG9iaik7CiAgICAgICAgc2V0X3ZhbHVlX2JpdHBvcyAodiwgYml0X29mZnNldCAr IHZhbHVlX2JpdHBvcyAob2JqKSk7Ci1AQCAtMjQyNiw3ICsyNDI5LDcgQEAgYWRhX3ZhbHVlX3By aW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3QgdgorQEAgLTI1MzYsNyArMjUzOSw3IEBAIGFkYV92 YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHYKICAgICBub3Qgb3ZlcmxhcC4gICov CiAgc3RhdGljIHZvaWQKICBtb3ZlX2JpdHMgKGdkYl9ieXRlICp0YXJnZXQsIGludCB0YXJnX29m ZnNldCwgY29uc3QgZ2RiX2J5dGUgKnNvdXJjZSwKQEAgLTY2Miw3ICs2NjIsNyBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgewogICAgdW5zaWduZWQgaW50IGFjY3VtLCBtYXNr OwogICAgaW50IGFjY3VtX2JpdHMsIGNodW5rX3NpemU7Ci1AQCAtMjUxNiw3ICsyNTE5LDcgQEAg YWRhX3ZhbHVlX2Fzc2lnbiAoc3RydWN0IHZhbHVlICp0b3ZhbCwgcworQEAgLTI2MjYsNyArMjYy OSw3IEBAIGFkYV92YWx1ZV9hc3NpZ24gKHN0cnVjdCB2YWx1ZSAqdG92YWwsIHMKICAgICAgewog ICAgICAgIGludCBsZW4gPSAodmFsdWVfYml0cG9zICh0b3ZhbCkKICAJCSArIGJpdHMgKyBIT1NU X0NIQVJfQklUIC0gMSkgLyBIT1NUX0NIQVJfQklUOwpAQCAtNjcxLDcgKzY3MSw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAgICAgICBnZGJfYnl0ZSAqYnVmZmVyID0gYWxs b2NhIChsZW4pOwogICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsOwogICAgICAgIENPUkVfQUREUiB0 b19hZGRyID0gdmFsdWVfYWRkcmVzcyAodG92YWwpOwotQEAgLTI1NjEsNyArMjU2NCw3IEBAIHZh bHVlX2Fzc2lnbl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQorQEAgLTI2NzEsNyArMjY3NCw3 IEBAIHZhbHVlX2Fzc2lnbl90b19jb21wb25lbnQgKHN0cnVjdCB2YWx1ZQogICAgICAoTE9OR0VT VCkgICh2YWx1ZV9hZGRyZXNzIChjb21wb25lbnQpIC0gdmFsdWVfYWRkcmVzcyAoY29udGFpbmVy KSk7CiAgICBpbnQgYml0X29mZnNldF9pbl9jb250YWluZXIgPSAKICAgICAgdmFsdWVfYml0cG9z IChjb21wb25lbnQpIC0gdmFsdWVfYml0cG9zIChjb250YWluZXIpOwpAQCAtNjgwLDcgKzY4MCw3 IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAgIAogICAgdmFsID0gdmFsdWVf Y2FzdCAodmFsdWVfdHlwZSAoY29tcG9uZW50KSwgdmFsKTsKICAKLUBAIC00MDg1LDcgKzQwODgs NyBAQCBlbnN1cmVfbHZhbCAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtNDE5Niw3ICs0MTk5LDcg QEAgZW5zdXJlX2x2YWwgKHN0cnVjdCB2YWx1ZSAqdmFsKQogICAgaWYgKFZBTFVFX0xWQUwgKHZh bCkgPT0gbm90X2x2YWwKICAgICAgICB8fCBWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfaW50ZXJu YWx2YXIpCiAgICAgIHsKQEAgLTY4OSw3ICs2ODksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9h ZGEtbGFuZy5jCiAgICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHIgPQogICAgICAgICAgdmFsdWVf YXNfbG9uZyAodmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGxlbikpOwogIAotQEAg LTQxNTksNyArNDE2Miw3IEBAIHN0YXRpYyBDT1JFX0FERFIKK0BAIC00MjcwLDcgKzQyNzMsNyBA QCBzdGF0aWMgQ09SRV9BRERSCiAgdmFsdWVfcG9pbnRlciAoc3RydWN0IHZhbHVlICp2YWx1ZSwg c3RydWN0IHR5cGUgKnR5cGUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRf dHlwZV9hcmNoICh0eXBlKTsKQEAgLTY5OCw3ICs2OTgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9hZGEtbGFuZy5jCiAgICBnZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChsZW4pOwogICAgQ09SRV9B RERSIGFkZHI7CiAgCi1AQCAtNjE0NSw3ICs2MTQ4LDcgQEAgdmFsdWVfdGFnX2Zyb21fY29udGVu dHNfYW5kX2FkZHJlc3MgKHN0cgorQEAgLTYzNzQsNyArNjM3Nyw3IEBAIHZhbHVlX3RhZ19mcm9t X2NvbnRlbnRzX2FuZF9hZGRyZXNzIChzdHIKICAJCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIGFk ZHJlc3MpCiAgewpAQCAtNzA3LDcgKzcwNyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1s YW5nLmMKICAgIHN0cnVjdCB0eXBlICp0YWdfdHlwZTsKICAKICAgIGlmIChmaW5kX3N0cnVjdF9m aWVsZCAoIl90YWciLCB0eXBlLCAwLCAmdGFnX3R5cGUsICZ0YWdfYnl0ZV9vZmZzZXQsCi1AQCAt NjYxMCw3ICs2NjEzLDcgQEAgYWRhX2luX3ZhcmlhbnQgKExPTkdFU1QgdmFsLCBzdHJ1Y3QgdHlw ZQorQEAgLTY4MzksNyArNjg0Miw3IEBAIGFkYV9pbl92YXJpYW50IChMT05HRVNUIHZhbCwgc3Ry dWN0IHR5cGUKICAgICBvbmx5IGluIHRoYXQgaXQgY2FuIGhhbmRsZSBwYWNrZWQgdmFsdWVzIG9m IGFyYml0cmFyeSB0eXBlLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTcxNiw3 ICs3MTYsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKmFyZ190eXBlKQogIHsKICAgIHN0cnVjdCB0eXBl ICp0eXBlOwotQEAgLTY2MjIsNyArNjYyNSw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQg KHN0cnVjdCB2YWx1ZQorQEAgLTY4NTEsNyArNjg1NCw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVf ZmllbGQgKHN0cnVjdCB2YWx1ZQogIAogICAgaWYgKFRZUEVfRklFTERfQklUU0laRSAoYXJnX3R5 cGUsIGZpZWxkbm8pICE9IDApCiAgICAgIHsKQEAgLTcyNSw3ICs3MjUsNyBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9GSUVMRF9C SVRTSVpFIChhcmdfdHlwZSwgZmllbGRubyk7CiAgCiAgICAgICAgcmV0dXJuIGFkYV92YWx1ZV9w cmltaXRpdmVfcGFja2VkX3ZhbCAoYXJnMSwgdmFsdWVfY29udGVudHMgKGFyZzEpLAotQEAgLTY2 NDksOSArNjY1Miw5IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQor QEAgLTY4NzgsOSArNjg4MSw5IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2 YWx1ZQogICAgIFJldHVybnMgMSBpZiBmb3VuZCwgMCBvdGhlcndpc2UuICAqLwogIAogIHN0YXRp YyBpbnQKQEAgLTczNyw3ICs3MzcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5j CiAgCQkgICBpbnQgKmluZGV4X3ApCiAgewogICAgaW50IGk7Ci1AQCAtNjY2OSw4ICs2NjcyLDgg QEAgZmluZF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cgorQEAgLTY4OTgsOCAr NjkwMSw4IEBAIGZpbmRfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lLCBzdHIKICAKICAg IGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpICs9IDEpCiAgICAgIHsKQEAg LTc0OCw3ICs3NDgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICAgICAg Y29uc3QgY2hhciAqdF9maWVsZF9uYW1lID0gVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKTsKICAK ICAgICAgICBpZiAodF9maWVsZF9uYW1lID09IE5VTEwpCi1AQCAtNjc0MCw3ICs2NzQzLDcgQEAg bnVtX3Zpc2libGVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC02OTY5LDcgKzY5NzIs NyBAQCBudW1fdmlzaWJsZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgIFNlYXJjaGVz IHJlY3Vyc2l2ZWx5IHRocm91Z2ggd3JhcHBlciBmaWVsZHMgKGUuZy4sICdfcGFyZW50JykuICAq LwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNzU3LDcgKzc1Nyw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IHR5cGUgKnR5cGUpCiAgewogICAgaW50IGk7Ci1AQCAtNjc3Myw3ICs2Nzc2LDcgQEAgYWRhX3Nl YXJjaF9zdHJ1Y3RfZmllbGQgKGNoYXIgKm5hbWUsIHN0cgorQEAgLTcwMDIsNyArNzAwNSw3IEBA IGFkYV9zZWFyY2hfc3RydWN0X2ZpZWxkIChjaGFyICpuYW1lLCBzdHIKICAgICAgICAgICAgaW50 IGo7CiAgICAgICAgICAgIHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gYWRhX2NoZWNrX3R5cGVk ZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwKICAJCQkJCQkJCQlpKSk7CkBAIC03NjYsNyArNzY2 LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLWxhbmcuYwogIAogICAgICAgICAgICBmb3Ig KGogPSAwOyBqIDwgVFlQRV9ORklFTERTIChmaWVsZF90eXBlKTsgaiArPSAxKQogICAgICAgICAg ICAgIHsKLUBAIC02NzkxLDggKzY3OTQsOCBAQCBhZGFfc2VhcmNoX3N0cnVjdF9maWVsZCAoY2hh ciAqbmFtZSwgc3RyCitAQCAtNzAyMCw4ICs3MDIzLDggQEAgYWRhX3NlYXJjaF9zdHJ1Y3RfZmll bGQgKGNoYXIgKm5hbWUsIHN0cgogICAgcmV0dXJuIE5VTEw7CiAgfQogIApAQCAtNzc3LDcgKzc3 Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAKICAKICAvKiBSZXR1cm4g ZmllbGQgI0lOREVYIGluIEFSRywgd2hlcmUgdGhlIGluZGV4IGlzIHRoYXQgcmV0dXJuZWQgYnkK LUBAIC02ODAxLDcgKzY4MDQsNyBAQCBzdGF0aWMgc3RydWN0IHZhbHVlICphZGFfaW5kZXhfc3Ry dWN0X2ZpCitAQCAtNzAzMCw3ICs3MDMzLDcgQEAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqYWRhX2lu ZGV4X3N0cnVjdF9maQogICAqIElmIGZvdW5kLCByZXR1cm4gdmFsdWUsIGVsc2UgcmV0dXJuIE5V TEwuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNzg2LDcgKzc4Niw3IEBAIElu ZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmMKICAJCQlzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7 CiAgICByZXR1cm4gYWRhX2luZGV4X3N0cnVjdF9maWVsZF8xICgmaW5kZXgsIGFyZywgb2Zmc2V0 LCB0eXBlKTsKLUBAIC02ODEzLDcgKzY4MTYsNyBAQCBhZGFfaW5kZXhfc3RydWN0X2ZpZWxkIChp bnQgaW5kZXgsIHN0cnVjCitAQCAtNzA0Miw3ICs3MDQ1LDcgQEAgYWRhX2luZGV4X3N0cnVjdF9m aWVsZCAoaW50IGluZGV4LCBzdHJ1YwogICAqICpJTkRFWF9QLiAgKi8KICAKICBzdGF0aWMgc3Ry dWN0IHZhbHVlICoKQEAgLTc5NSw3ICs3OTUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEt bGFuZy5jCiAgCQkJICBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICBpbnQgaTsKLUBAIC02OTAz LDcgKzY5MDYsOCBAQCBhZGFfdmFsdWVfc3RydWN0X2VsdCAoc3RydWN0IHZhbHVlICphcmcsCitA QCAtNzEzMiw3ICs3MTM1LDggQEAgYWRhX3ZhbHVlX3N0cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAq YXJnLAogICAgICB2ID0gYWRhX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZywgMCwgdCk7 CiAgICBlbHNlCiAgICAgIHsKQEAgLTgwNSw3ICs4MDUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9hZGEtbGFuZy5jCiAgICAgICAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGU7CiAgICAgICAgQ09S RV9BRERSIGFkZHJlc3M7CiAgCi1AQCAtNzIxNiw4ICs3MjIwLDggQEAgYWRhX2NvZXJjZV9yZWYg KHN0cnVjdCB2YWx1ZSAqdmFsMCkKK0BAIC03NDQ5LDggKzc0NTMsOCBAQCBhZGFfY29lcmNlX3Jl ZiAoc3RydWN0IHZhbHVlICp2YWwwKQogIC8qIFJldHVybiBPRkYgcm91bmRlZCB1cHdhcmQgaWYg bmVjZXNzYXJ5IHRvIGEgbXVsdGlwbGUgb2YKICAgICBBTElHTk1FTlQgKGEgcG93ZXIgb2YgMiku ICAqLwogIApAQCAtODE2LDcgKzgxNiw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5n LmMKICB7CiAgICByZXR1cm4gKG9mZiArIGFsaWdubWVudCAtIDEpICYgfihhbGlnbm1lbnQgLSAx KTsKICB9Ci1AQCAtNzU5NiwxMCArNzYwMCw5IEBAIGFkYV90ZW1wbGF0ZV90b19maXhlZF9yZWNv cmRfdHlwZV8xIChzdHIKK0BAIC03ODMyLDEwICs3ODM2LDkgQEAgYWRhX3RlbXBsYXRlX3RvX2Zp eGVkX3JlY29yZF90eXBlXzEgKHN0cgogICAgc3RydWN0IHZhbHVlICptYXJrID0gdmFsdWVfbWFy ayAoKTsKICAgIHN0cnVjdCB2YWx1ZSAqZHZhbDsKICAgIHN0cnVjdCB0eXBlICpydHlwZTsKQEAg LTgyOSw3ICs4MjksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5jCiAgICBpbnQg ZjsKICAKICAgIC8qIENvbXB1dGUgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdGhpcyByZWNvcmQg dHlwZSB0aGF0IGFyZSBnb2luZwotQEAgLTc2NzAsNyArNzY3Myw3IEBAIGFkYV90ZW1wbGF0ZV90 b19maXhlZF9yZWNvcmRfdHlwZV8xIChzdHIKK0BAIC03OTEzLDcgKzc5MTYsNyBAQCBhZGFfdGVt cGxhdGVfdG9fZml4ZWRfcmVjb3JkX3R5cGVfMSAoc3RyCiAgCSAgICAgdGhhdCBmb2xsb3cgdGhp cyBvbmUuICAqLwogIAkgIGlmIChhZGFfaXNfYWxpZ25lcl90eXBlIChmaWVsZF90eXBlKSkKICAJ ICAgIHsKQEAgLTgzOCw3ICs4MzgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5j CiAgCiAgCSAgICAgIGZpZWxkX3ZhbGFkZHIgPSBjb25kX29mZnNldF9ob3N0IChmaWVsZF92YWxh ZGRyLCBmaWVsZF9vZmZzZXQpOwogIAkgICAgICBmaWVsZF9hZGRyZXNzID0gY29uZF9vZmZzZXRf dGFyZ2V0IChmaWVsZF9hZGRyZXNzLCBmaWVsZF9vZmZzZXQpOwotQEAgLTc3OTksMTEgKzc4MDIs MTEgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0cgorQEAgLTgwNDks MTEgKzgwNTIsMTEgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0cgog ICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSAwKQogICAgICB7CiAgICAgICAgaWYgKFRZUEVf TkFNRSAocnR5cGUpKQpAQCAtODU0LDcgKzg1NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2Fk YS1sYW5nLmMKICAgICAgfQogICAgZWxzZQogICAgICB7Ci1AQCAtODE0MCw3ICs4MTQzLDggQEAg dG9fZml4ZWRfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLAorQEAgLTgzOTMsNyArODM5 Niw4IEBAIHRvX2ZpeGVkX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlMCwKICAJIHR5cGUg d2FzIGEgcmVndWxhciAobm9uLXBhY2tlZCkgYXJyYXkgdHlwZS4gIEFzIGEgcmVzdWx0LCB0aGUK ICAJIGJpdHNpemUgb2YgdGhlIGFycmF5IGVsZW1lbnRzIG5lZWRzIHRvIGJlIHNldCBhZ2Fpbiwg YW5kIHRoZSBhcnJheQogIAkgbGVuZ3RoIG5lZWRzIHRvIGJlIHJlY29tcHV0ZWQgYmFzZWQgb24g dGhhdCBiaXRzaXplLiAgKi8KQEAgLTg2NCwxMSArODY0LDExIEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL2FkYS1sYW5nLmMKICAgICAgICBpbnQgZWx0X2JpdHNpemUgPSBUWVBFX0ZJRUxEX0JJVFNJ WkUgKHR5cGUwLCAwKTsKICAKICAgICAgICBUWVBFX0ZJRUxEX0JJVFNJWkUgKHJlc3VsdCwgMCkg PSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUwLCAwKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2Fk YS1sYW5nLmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtbGFuZy5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FkYS1sYW5nLmgJMjAxNC0wNS0wNSAyMzo1 MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmgJMjAxNC0w NS0xMiAyMDoyMjowNS43ODE0NDQxMDcgKzAyMDAKLUBAIC0xODAsNyArMTgwLDcgQEAgZXh0ZXJu IHZvaWQgYWRhX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlCistLS0gZ2RiLTcuNy45MC4yMDE0MDYx My5vcmlnL2dkYi9hZGEtbGFuZy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI2NzQ3MDIwICswMjAw CisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYWRhLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3 OjA3Ljg1MDc0OTU5MSArMDIwMAorQEAgLTE4MSw3ICsxODEsNyBAQCBleHRlcm4gdm9pZCBhZGFf cHJpbnRfdHlwZSAoc3RydWN0IHR5cGUKICBleHRlcm4gdm9pZCBhZGFfcHJpbnRfdHlwZWRlZiAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBzeW1ib2wgKm5ld19zeW1ib2wsCiAgCQkJICAgICAg IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwogIApAQCAtODc3LDcgKzg3Nyw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2FkYS1sYW5nLmgKICAJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAg CQkJICAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKik7Ci1AQCAtMTk1LDcgKzE5NSw3IEBAIGV4dGVybiB2b2lkIGFkYV9lbWl0 X2NoYXIgKGludCwgc3RydWN0IHQKK0BAIC0xOTYsNyArMTk2LDcgQEAgZXh0ZXJuIHZvaWQgYWRh X2VtaXRfY2hhciAoaW50LCBzdHJ1Y3QgdAogIGV4dGVybiB2b2lkIGFkYV9wcmludGNoYXIgKGlu dCwgc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKik7CiAgCiAgZXh0ZXJuIHZvaWQgYWRh X3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0 ZSAqLApAQCAtODg2LDcgKzg4Niw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FkYS1sYW5nLmgK ICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogIAogIHN0cnVjdCB2 YWx1ZSAqYWRhX2NvbnZlcnRfYWN0dWFsIChzdHJ1Y3QgdmFsdWUgKmFjdHVhbCwKLUBAIC0yNjgs NyArMjY4LDcgQEAgZXh0ZXJuIGludCBhZGFfaXNfY29uc3RyYWluZWRfcGFja2VkX2FycgorQEAg LTI2Nyw3ICsyNjcsNyBAQCBleHRlcm4gaW50IGFkYV9pc19jb25zdHJhaW5lZF9wYWNrZWRfYXJy CiAgCiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFs IChzdHJ1Y3QgdmFsdWUgKiwKICAJCQkJCQkgICAgIGNvbnN0IGdkYl9ieXRlICosCkBAIC04OTUs MTEgKzg5NSwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hZGEtbGFuZy5oCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAq KTsKICAKICBleHRlcm4gc3RydWN0IHR5cGUgKmFkYV9jb2VyY2VfdG9fc2ltcGxlX2FycmF5X3R5 cGUgKHN0cnVjdCB0eXBlICopOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLXR5cGVwcmludC5j CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYWRhLXR5cGVwcmludC5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDE0LTA1LTA1IDIz OjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYWRhLXR5cGVwcmludC5j CTIwMTQtMDUtMTIgMjA6MjI6MDUuNzgxNDQ0MTA3ICswMjAwCi1AQCAtODI5LDggKzgyOSw4IEBA IGFkYV9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZTAsIGNvbnMKKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjEy Njc0NzAyMCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FkYS10eXBlcHJpbnQu YwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1MTc0OTU5MiArMDIwMAorQEAgLTg2NSw4ICs4NjUsOCBA QCBhZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAgICBjb25zdCBj aGFyICpuYW1lID0gYWRhX3R5cGVfbmFtZSAodHlwZSk7CiAgCiAgCSAgICBpZiAoIWFkYV9pc19y YW5nZV90eXBlX25hbWUgKG5hbWUpKQpAQCAtOTEwLDcgKzkxMCw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL2FkYS10eXBlcHJpbnQuYwogIAkgICAgZWxzZQogIAkgICAgICB7CiAgCQlmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICJyYW5nZSAiKTsKLUBAIC04NTEsNyArODUxLDggQEAgYWRhX3By aW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlMCwgY29ucworQEAgLTg4Nyw3ICs4ODcsOCBAQCBh ZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAgfQogIAlicmVhazsK ICAgICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6CkBAIC05MjAsMTAgKzkyMCwxMCBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi9hZGEtdHlwZXByaW50LmMKICAJYnJlYWs7CiAgICAgICAgY2FzZSBUWVBF X0NPREVfRU5VTToKICAJaWYgKHNob3cgPCAwKQotSW5kZXg6IGdkYi03LjcuMS9nZGIvYWRhLXZh bHByaW50LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9hZGEtdmFscHJpbnQuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9hZGEtdmFscHJpbnQuYwkyMDE0LTA1 LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYWRhLXZhbHBy aW50LmMJMjAxNC0wNS0xMiAyMDoyMjowNS43ODI0NDQxMDcgKzAyMDAKKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2FkYS12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI3 NzQ3MDIxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYWRhLXZhbHByaW50LmMJ MjAxNC0wNi0xNiAyMzoyNzowNy44NTE3NDk1OTIgKzAyMDAKIEBAIC0zNSwxMSArMzUsMTEgQEAK ICAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICAKQEAgLTEwNzcsMTEgKzEwNzcsMTEgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvYWRhLXZhbHByaW50LmMKICAJICAgICAgIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sIGludCByZWN1cnNlLAogIAkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAg CSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKLUluZGV4 OiBnZGItNy43LjEvZ2RiL2Fubm90YXRlLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi9hbm5vdGF0ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2Fubm90YXRl LmMJMjAxNC0wMS0wOCAxMDoyMzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2Ri L2Fubm90YXRlLmMJMjAxNC0wNS0xMiAyMDoyMjowNS43ODI0NDQxMDcgKzAyMDAKLUBAIC01MjMs MjEgKzUyMywyMSBAQCBhbm5vdGF0ZV9mcmFtZV9lbmQgKHZvaWQpCistLS0gZ2RiLTcuNy45MC4y MDE0MDYxMy5vcmlnL2dkYi9hbm5vdGF0ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI3NzQ3MDIx ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYW5ub3RhdGUuYwkyMDE0LTA2LTE2 IDIzOjI3OjA3Ljg1MTc0OTU5MiArMDIwMAorQEAgLTUyNCwyMSArNTI0LDIxIEBAIGFubm90YXRl X2ZyYW1lX2VuZCAodm9pZCkKICB9CiAgDAogIHZvaWQKQEAgLTExMDcsMTAgKzExMDcsMTAgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvYW5ub3RhdGUuYwogIH0KICAKICB2b2lkCi1JbmRleDogZ2Ri LTcuNy4xL2dkYi9hbm5vdGF0ZS5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYW5u b3RhdGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9hbm5vdGF0ZS5oCTIw MTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9hbm5v dGF0ZS5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzgyNDQ0MTA3ICswMjAwCistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi9hbm5vdGF0ZS5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTI3NzQ3 MDIxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYW5ub3RhdGUuaAkyMDE0LTA2 LTE2IDIzOjI3OjA3Ljg1Mjc0OTU5MyArMDIwMAogQEAgLTkyLDggKzkyLDggQEAgZXh0ZXJuIHZv aWQgYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAodgogIGV4dGVybiB2b2lkIGFubm90YXRlX2Zy YW1lX3doZXJlICh2b2lkKTsKICBleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9lbmQgKHZvaWQp OwpAQCAtMTEyMiwyNCArMTEyMiwyNCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hbm5vdGF0ZS5o CiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZWx0X3JlcF9lbmQgKHZvaWQpOwogIGV4dGVybiB2b2lk IGFubm90YXRlX2VsdCAodm9pZCk7CiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfYXJyYXlfc2VjdGlv bl9lbmQgKHZvaWQpOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvYXJtLWxpbnV4LW5hdC5jCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYXJtLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE0LTA1LTA1IDIzOjUxOjI0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYXJtLWxpbnV4LW5hdC5jCTIwMTQt MDUtMTIgMjA6MjI6MDUuNzgyNDQ0MTA3ICswMjAwCi1AQCAtMTA3Myw3ICsxMDczLDcgQEAgYXJt X2xpbnV4X3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZwotIC8qIEFyZSB3ZSBhYmxlIHRv IHVzZSBhIGhhcmR3YXJlIHdhdGNocG9pbnQgZm9yIHRoZSBMRU4gYnl0ZXMgc3RhcnRpbmcgYXQg CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9hcm0tbGludXgtbmF0LmMJMjAxNC0w Ni0xNiAyMzoyNzowNS4xMjg3NDcwMjIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi9hcm0tbGludXgtbmF0LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NTI3NDk1OTMgKzAyMDAKK0BA IC0xMTg3LDcgKzExODcsNyBAQCBhcm1fbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVj dCB0CiAgICAgQUREUj8gICovCiAgc3RhdGljIGludAotLWFybV9saW51eF9yZWdpb25fb2tfZm9y X2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotK2FybV9saW51eF9yZWdp b25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyBh cm1fbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAq c2VsZiwKKy0JCQkJICAgICAgIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQorKwkJCQkgICAgICAg Q09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQogIHsKICAgIGNvbnN0IHN0cnVjdCBhcm1fbGlu dXhfaHdicF9jYXAgKmNhcCA9IGFybV9saW51eF9nZXRfaHdicF9jYXAgKCk7CiAgICBDT1JFX0FE RFIgbWF4X3dwX2xlbmd0aCwgYWxpZ25lZF9hZGRyOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvYXgt Z2RiLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9heC1nZGIuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9heC1nZGIuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYXgtZ2RiLmMJMjAxNC0wNS0xMiAyMDoy MjowNS43ODM0NDQxMDggKzAyMDAKLUBAIC04MiwxMiArODIsMTIgQEAgc3RhdGljIHZvaWQgZ2Vu X3RyYWNlZF9wb3AgKHN0cnVjdCBnZGJhcgorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9n ZGIvYXgtZ2RiLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMjk3NDcwMjIgKzAyMDAKKysrKyBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9heC1nZGIuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1Mzc0OTU5 NCArMDIwMAorQEAgLTgzLDEyICs4MywxMiBAQCBzdGF0aWMgdm9pZCBnZW5fdHJhY2VkX3BvcCAo c3RydWN0IGdkYmFyCiAgc3RhdGljIHZvaWQgZ2VuX3NpZ25fZXh0ZW5kIChzdHJ1Y3QgYWdlbnRf ZXhwciAqLCBzdHJ1Y3QgdHlwZSAqKTsKICBzdGF0aWMgdm9pZCBnZW5fZXh0ZW5kIChzdHJ1Y3Qg YWdlbnRfZXhwciAqLCBzdHJ1Y3QgdHlwZSAqKTsKICBzdGF0aWMgdm9pZCBnZW5fZmV0Y2ggKHN0 cnVjdCBhZ2VudF9leHByICosIHN0cnVjdCB0eXBlICopOwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvYXgtZ2RiLmMKICBzdGF0aWMgdm9pZCBnZW5fc3ltX29mZnNl dCAoc3RydWN0IGFnZW50X2V4cHIgKiwgc3RydWN0IHN5bWJvbCAqKTsKICBzdGF0aWMgdm9pZCBn ZW5fdmFyX3JlZiAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGFnZW50X2V4cHIgKmF4LAogIAkJ CSBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwgc3RydWN0IHN5bWJvbCAqdmFyKTsKLUBAIC0xMzUs MTUgKzEzNSwxNiBAQCBzdGF0aWMgdm9pZCBnZW5fZGVyZWYgKHN0cnVjdCBhZ2VudF9leHByCitA QCAtMTM2LDE1ICsxMzYsMTYgQEAgc3RhdGljIHZvaWQgZ2VuX2RlcmVmIChzdHJ1Y3QgYWdlbnRf ZXhwcgogIHN0YXRpYyB2b2lkIGdlbl9hZGRyZXNzX29mIChzdHJ1Y3QgYWdlbnRfZXhwciAqLCBz dHJ1Y3QgYXhzX3ZhbHVlICopOwogIHN0YXRpYyB2b2lkIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCQkgICAgICBzdHJ1 Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKQEAgLTExNzQsNyArMTE3NCw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL2F4LWdkYi5jCiAgCQkJCSAgICAgc3RydWN0IHR5cGUgKnR5cGUpOwogIHN0YXRpYyB2 b2lkIGdlbl9zdHJ1Y3RfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3QgYWdlbnRf ZXhwciAqYXgsCiAgCQkJICAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAotQEAgLTUzOCw3ICs1 MzksNyBAQCBnZW5fZmV0Y2ggKHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0CitAQCAtNTM5 LDcgKzU0MCw3IEBAIGdlbl9mZXRjaCAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QKICAg ICByaWdodCBzaGlmdCBpdCBieSAtRElTVEFOQ0UgYml0cyBpZiBESVNUQU5DRSA8IDAuICBUaGlz IGdlbmVyYXRlcwogICAgIHVuc2lnbmVkIChsb2dpY2FsKSByaWdodCBzaGlmdHMuICAqLwogIHN0 YXRpYyB2b2lkCkBAIC0xMTgzLDcgKzExODMsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9heC1n ZGIuYwogIHsKICAgIGlmIChkaXN0YW5jZSA+IDApCiAgICAgIHsKLUBAIC01OTIsNyArNTkzLDcg QEAgZ2VuX2ZyYW1lX2xvY2Fsc19hZGRyZXNzIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTU5Myw3ICs1 OTQsNyBAQCBnZW5fZnJhbWVfbG9jYWxzX2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoCiAgICAgcHJv Z3JhbW1pbmcgaW4gTUwsIGl0IHdvdWxkIGJlIGNsZWFyZXIgd2h5IHRoZXNlIGFyZSB0aGUgc2Ft ZQogICAgIHRoaW5nLiAgKi8KICBzdGF0aWMgdm9pZApAQCAtMTE5Miw3ICsxMTkyLDcgQEAgSW5k ZXg6IGdkYi03LjcuMS9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBJdCB3b3VsZCBzdWZmaWNlIHRv IHNpbXBseSBwdXNoIHRoZSBvZmZzZXQgYW5kIGFkZCBpdCwgYnV0IHRoaXMKICAgICAgIG1ha2Vz IGl0IGVhc2llciB0byByZWFkIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBvZmZzZXRzIGluIHRoZQot QEAgLTEyNDgsNyArMTI0OSw3IEBAIGdlbl9hZGRyZXNzX29mIChzdHJ1Y3QgYWdlbnRfZXhwciAq YXgsIHMKK0BAIC0xMjQ5LDcgKzEyNTAsNyBAQCBnZW5fYWRkcmVzc19vZiAoc3RydWN0IGFnZW50 X2V4cHIgKmF4LCBzCiAgc3RhdGljIHZvaWQKICBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCiAgCQkgIHN0cnVjdCBheHNfdmFs dWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTEyMDEsNyArMTIwMSw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL2F4LWdkYi5jCiAgewogICAgLyogTm90ZSB0aGF0IG9wc1tpXSBmZXRj aGVzIDggPDwgaSBiaXRzLiAgKi8KICAgIHN0YXRpYyBlbnVtIGFnZW50X29wIG9wc1tdCi1AQCAt MTI4MywxMyArMTI4NCwxMyBAQCBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwCitAQCAtMTI4NCwxMyArMTI4NSwxMyBAQCBnZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwCiAgCiAgICAvKiBUaGUgZmlyc3QgYW5kIG9uZS1hZnRlci1sYXN0IGJpdHMg aW4gdGhlIGZpZWxkLCBidXQgcm91bmRlZCBkb3duCiAgICAgICBhbmQgdXAgdG8gYnl0ZSBib3Vu ZGFyaWVzLiAgKi8KQEAgLTEyMjAsNyArMTIyMCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2F4 LWdkYi5jCiAgCiAgICAvKiBUaGUgaW5kZXggaW4gb3BzIG9mIHRoZSBvcGNvZGUgd2UncmUgY29u c2lkZXJpbmcuICAqLwogICAgaW50IG9wOwotQEAgLTE0MDgsNyArMTQwOSw3IEBAIGdlbl9iaXRm aWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAKK0BAIC0xNDA5LDcgKzE0MTAsNyBAQCBn ZW5fYml0ZmllbGRfcmVmIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwCiAgc3RhdGljIHZvaWQKICBn ZW5fcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAkJICAgICBzdHJ1 Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLApAQCAtMTIyOSw3ICsx MjI5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBJcyB0aGlz IGEgYml0ZmllbGQ/ICAqLwogICAgaWYgKFRZUEVfRklFTERfUEFDS0VEICh0eXBlLCBmaWVsZG5v KSkKLUBAIC0xNDMzLDcgKzE0MzQsNyBAQCBnZW5fcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgZXhw cmVzc2lvbiAqCitAQCAtMTQzNCw3ICsxNDM1LDcgQEAgZ2VuX3ByaW1pdGl2ZV9maWVsZCAoc3Ry dWN0IGV4cHJlc3Npb24gKgogIHN0YXRpYyBpbnQKICBnZW5fc3RydWN0X3JlZl9yZWN1cnNpdmUg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCQkgIHN0 cnVjdCBheHNfdmFsdWUgKnZhbHVlLApAQCAtMTIzOCwxMCArMTIzOCwxMCBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi9heC1nZGIuYwogIHsKICAgIGludCBpLCByc2x0OwogICAgaW50IG5iYXNlcyA9 IFRZUEVfTl9CQVNFQ0xBU1NFUyAodHlwZSk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9heC1nZW5l cmFsLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9heC1nZW5lcmFsLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvYXgtZ2VuZXJhbC5jCTIwMTQtMDEtMDggMTA6 MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9heC1nZW5lcmFsLmMJMjAx NC0wNS0xMiAyMDoyMjowNS43ODM0NDQxMDggKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL2F4LWdlbmVyYWwuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjEyOTc0NzAyMiArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2F4LWdlbmVyYWwuYwkyMDE0LTA2LTE2IDIz OjI3OjA3Ljg1Mzc0OTU5NCArMDIwMAogQEAgLTE5NSw3ICsxOTUsNyBAQCBheF96ZXJvX2V4dCAo c3RydWN0IGFnZW50X2V4cHIgKngsIGludCBuCiAgCiAgLyogQXBwZW5kIGEgdHJhY2VfcXVpY2sg aW5zdHJ1Y3Rpb24gdG8gRVhQUiwgdG8gcmVjb3JkIE4gYnl0ZXMuICAqLwpAQCAtMTI1MSwxMCAr MTI1MSwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9heC1nZW5lcmFsLmMKICB7CiAgICAvKiBO IG11c3QgZml0IGluIGEgYnl0ZS4gICovCiAgICBpZiAobiA8IDAgfHwgbiA+IDI1NSkKLUluZGV4 OiBnZGItNy43LjEvZ2RiL2F4LmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9heC5o CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2F4LmgJMjAxNC0wMS0wOCAxMDoy MzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL2F4LmgJMjAxNC0wNS0xMiAy MDoyMjowNS43ODM0NDQxMDggKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2Ri L2F4LmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xMjk3NDcwMjIgKzAyMDAKKysrKyBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9heC5oCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODUzNzQ5NTk0ICswMjAwCiBA QCAtMjA3LDcgKzIwNyw3IEBAIGV4dGVybiB2b2lkIGF4X2V4dCAoc3RydWN0IGFnZW50X2V4cHIg KkUKICBleHRlcm4gdm9pZCBheF96ZXJvX2V4dCAoc3RydWN0IGFnZW50X2V4cHIgKkVYUFIsIGlu dCBOKTsKICAKQEAgLTEyNjQsMTEgKzEyNjQsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYXgu aAogIAogIC8qIEFwcGVuZCBhIGdvdG8gb3AgdG8gRVhQUi4gIE9QIGlzIHRoZSBhY3R1YWwgb3Ag KG11c3QgYmUgYW9wX2dvdG8gb3IKICAgICBhb3BfaWZfZ290bykuICBXZSBhc3N1bWUgd2UgZG9u J3Qga25vdyB0aGUgdGFyZ2V0IG9mZnNldCB5ZXQsCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9icmVh a3BvaW50LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9icmVha3BvaW50LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTQtMDUtMTIg MjA6MjI6MDUuNTg1NDQzOTg5ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmMJ MjAxNC0wNS0xMiAyMDoyMjowNS43ODU0NDQxMDkgKzAyMDAKLUBAIC02NzU0LDcgKzY3NTQsNyBA QCBicmVha3BvaW50X2FkZHJlc3NfbWF0Y2ggKHN0cnVjdCBhZGRyZXNzCistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzI3 NDcwMjUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9icmVha3BvaW50LmMJMjAx NC0wNi0xNiAyMzoyNzowNy44NTc3NDk1OTcgKzAyMDAKK0BAIC02OTMwLDcgKzY5MzAsNyBAQCBi cmVha3BvaW50X2FkZHJlc3NfbWF0Y2ggKHN0cnVjdCBhZGRyZXNzCiAgCiAgc3RhdGljIGludAog IGJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaF9yYW5nZSAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFz cGFjZTEsIENPUkVfQUREUiBhZGRyMSwKQEAgLTEyNzcsNyArMTI3Nyw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2JyZWFrcG9pbnQuYwogIAkJCQlDT1JFX0FERFIgYWRkcjIpCiAgewogICAgcmV0 dXJuICgoZ2RiYXJjaF9oYXNfZ2xvYmFsX2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSkK LUBAIC0xMTM1Myw3ICsxMTM1Myw3IEBAIGNhbl91c2VfaGFyZHdhcmVfd2F0Y2hwb2ludCAoc3Ry dWN0IHZhbHUKK0BAIC0xMTU0Miw3ICsxMTU0Miw3IEBAIGNhbl91c2VfaGFyZHdhcmVfd2F0Y2hw b2ludCAoc3RydWN0IHZhbHUKICAJCSAgICAgICYmIFRZUEVfQ09ERSAodnR5cGUpICE9IFRZUEVf Q09ERV9BUlJBWSkpCiAgCQl7CiAgCQkgIENPUkVfQUREUiB2YWRkciA9IHZhbHVlX2FkZHJlc3Mg KHYpOwpAQCAtMTI4NiwxMSArMTI4NiwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9icmVha3Bv aW50LmMKICAJCSAgaW50IG51bV9yZWdzOwogIAogIAkJICBsZW4gPSAodGFyZ2V0X2V4YWN0X3dh dGNocG9pbnRzCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 LjEub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuNTQ2NDQzOTY2ICsw MjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmgJMjAxNC0wNS0xMiAyMDoyMjowNS43 ODY0NDQxMTAgKzAyMDAKLUBAIC0yNDIsNyArMjQyLDcgQEAgc3RydWN0IGJwX3RhcmdldF9pbmZv CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxNC0wNi0x NiAyMzoyNzowNS4xMzM3NDcwMjYgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9i cmVha3BvaW50LmgJMjAxNC0wNi0xNiAyMzoyNzowNy44NTc3NDk1OTcgKzAyMDAKK0BAIC0yNDQs NyArMjQ0LDcgQEAgc3RydWN0IGJwX3RhcmdldF9pbmZvCiAgCiAgICAvKiBJZiB0aGlzIGlzIGEg cmFuZ2VkIGJyZWFrcG9pbnQsIHRoZW4gdGhpcyBmaWVsZCBjb250YWlucyB0aGUKICAgICAgIGxl bmd0aCBvZiB0aGUgcmFuZ2UgdGhhdCB3aWxsIGJlIHdhdGNoZWQgZm9yIGV4ZWN1dGlvbi4gICov CkBAIC0xMjk5LDcgKzEyOTksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9icmVha3BvaW50LmgK ICAKICAgIC8qIElmIHRoZSBicmVha3BvaW50IGxpdmVzIGluIG1lbW9yeSBhbmQgcmVhZGluZyB0 aGF0IG1lbW9yeSB3b3VsZAogICAgICAgZ2l2ZSBiYWNrIHRoZSBicmVha3BvaW50LCBpbnN0ZWFk IG9mIHRoZSBvcmlnaW5hbCBjb250ZW50cywgdGhlbgotQEAgLTQxMSw3ICs0MTEsNyBAQCBzdHJ1 Y3QgYnBfbG9jYXRpb24KK0BAIC00MTMsNyArNDEzLDcgQEAgc3RydWN0IGJwX2xvY2F0aW9uCiAg ICAvKiBGb3IgaGFyZHdhcmUgd2F0Y2hwb2ludHMsIHRoZSBzaXplIG9mIHRoZSBtZW1vcnkgcmVn aW9uIGJlaW5nCiAgICAgICB3YXRjaGVkLiAgRm9yIGhhcmR3YXJlIHJhbmdlZCBicmVha3BvaW50 cywgdGhlIHNpemUgb2YgdGhlCiAgICAgICBicmVha3BvaW50IHJhbmdlLiAgKi8KQEAgLTEzMDgs MTAgKzEzMDgsMTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYnJlYWtwb2ludC5oCiAgCiAgICAv KiBUeXBlIG9mIGhhcmR3YXJlIHdhdGNocG9pbnQuICAqLwogICAgZW51bSB0YXJnZXRfaHdfYnBf dHlwZSB3YXRjaHBvaW50X3R5cGU7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9jLWxhbmcuYworSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2MtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNy4xLm9yaWcvZ2RiL2MtbGFuZy5jCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9jLWxhbmcuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NjQ0 NDExMCArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvYy1sYW5nLmMJMjAx NC0wNi0xNiAyMzoyNzowNS4xMzQ3NDcwMjcgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9jLWxhbmcuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1ODc0OTU5OCArMDIwMAogQEAgLTE5 MCw3ICsxOTAsNyBAQCBjX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlLCBzCiAg CiAgdm9pZApAQCAtMTMzOSwxMSArMTMzOSwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9jLWxh bmcuYwogIAogIAkJaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKFRZUEVfSU5ERVhfVFlQRSAoZXhw ZWN0X3R5cGUpLAogIAkJCQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi1JbmRleDog Z2RiLTcuNy4xL2dkYi9jLWxhbmcuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2Mt bGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2MtbGFuZy5oCTIwMTQt MDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9jLWxhbmcu aAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NjQ0NDExMCArMDIwMAotQEAgLTczLDcgKzczLDcgQEAg ZXh0ZXJuIHZvaWQgY19wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZQorLS0tIGdkYi03LjcuOTAu MjAxNDA2MTMub3JpZy9nZGIvYy1sYW5nLmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzQ3NDcwMjcg KzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jLWxhbmcuaAkyMDE0LTA2LTE2IDIz OjI3OjA3Ljg1ODc0OTU5OCArMDIwMAorQEAgLTc0LDcgKzc0LDcgQEAgZXh0ZXJuIHZvaWQgY19w cmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZQogIAkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKik7CiAg CiAgZXh0ZXJuIHZvaWQgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICosIGNvbnN0IGdkYl9ieXRl ICosCkBAIC0xMzUyLDcgKzEzNTIsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9jLWxhbmcuaAog IAkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAog IAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUBAIC05Myw3ICs5Myw3 IEBAIGV4dGVybiB2b2lkIGNfcHJpbnRjaGFyIChpbnQsIHN0cnVjdCB0eXAKK0BAIC05NCw3ICs5 NCw3IEBAIGV4dGVybiB2b2lkIGNfcHJpbnRjaGFyIChpbnQsIHN0cnVjdCB0eXAKICBleHRlcm4g dm9pZCBjX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqIHN0cmVhbSwKICAJCQlzdHJ1Y3QgdHlw ZSAqZWx0dHlwZSwKICAJCQljb25zdCBnZGJfYnl0ZSAqc3RyaW5nLApAQCAtMTM2MSw3ICsxMzYx LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvYy1sYW5nLmgKICAJCQljb25zdCBjaGFyICp1c2Vy X2VuY29kaW5nLAogIAkJCWludCBmb3JjZV9lbGxpcHNlcywKICAJCQljb25zdCBzdHJ1Y3QgdmFs dWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucyk7Ci1AQCAtMTE5LDE0ICsxMTksMTQgQEAgZXh0ZXJu IHZvaWQgY3BfcHJpbnRfY2xhc3NfbWVtYmVyIChjb25zdAorQEAgLTEyMCwxNCArMTIwLDE0IEBA IGV4dGVybiB2b2lkIGNwX3ByaW50X2NsYXNzX21lbWJlciAoY29uc3QKICAJCQkJICAgc3RydWN0 IHVpX2ZpbGUgKiwgY2hhciAqKTsKICAKICBleHRlcm4gdm9pZCBjcF9wcmludF92YWx1ZV9maWVs ZHMgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCkBAIC0xMzc4LDExICsxMzc4LDExIEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL2MtbGFuZy5oCiAgCQkJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBp bnQsCiAgCQkJCQljb25zdCBzdHJ1Y3QgdmFsdWUgKiwKICAJCQkJCWNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICosCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9jLXZhbHByaW50LmMKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jLXZhbHByaW50LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy43LjEub3JpZy9nZGIvYy12YWxwcmludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9jLXZhbHByaW50LmMJMjAxNC0wNS0xMiAy MDoyMjowNS43ODY0NDQxMTAgKzAyMDAKLUBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIGNvbnN0 IHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvYy12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTM0NzQ3MDI3ICswMjAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYy12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6 MDcuODU4NzQ5NTk4ICswMjAwCitAQCAtMTMzLDcgKzEzMyw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKICAKICB2b2lkCiAgY192YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTEzOTEsNyArMTM5MSw3IEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL2MtdmFscHJpbnQuYwogIAkgICAgIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2lu YWxfdmFsdWUsCiAgCSAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMpCi1AQCAtMTQzLDcgKzE0Myw3IEBAIGNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2QKK0BAIC0xNDQsNyArMTQ0LDcgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBnZAogICAgdW5zaWduZWQgbGVuOwogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUs ICp1bnJlc29sdmVkX2VsdHR5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqdW5yZXNvbHZlZF90eXBlID0g dHlwZTsKQEAgLTE0MDAsNyArMTQwMCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2MtdmFscHJp bnQuYwogICAgQ09SRV9BRERSIGFkZHI7CiAgCiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBA IC0zNzksOSArMzc5LDkgQEAgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZAorQEAgLTM4MCw5ICszODAsOSBAQCBjX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkCiAgCSAgLyogUHJpbnQgdnRhYmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiBO T1QgdXNpbmcKICAJICAgICAtZnZ0YWJsZV90aHVua3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVy CiAgCSAgICAgVFlQRV9DT0RFX1BUUi4pICAqLwpAQCAtMTQxMyw3ICsxNDEzLDcgQEAgSW5kZXg6 IGdkYi03LjcuMS9nZGIvYy12YWxwcmludC5jCiAgCSAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGUg PSBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsCiAgCQkJCQkJICAgICBWVEJMX0ZOQUREUl9PRkZTRVQp OwogIAkgIENPUkVfQUREUiBhZGRyCi1AQCAtNDYwLDcgKzQ2MCw4IEBAIGNfdmFsdWVfcHJpbnQg KHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1Y3QKK0BAIC00NjEsNyArNDYxLDggQEAgY192YWx1ZV9w cmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdAogIAkgICAgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGUsICpy ZWFsX3R5cGUsICp2YWxfdHlwZTsKQEAgLTE0MjMsMTAgKzE0MjMsMTAgQEAgSW5kZXg6IGdkYi03 LjcuMS9nZGIvYy12YWxwcmludC5jCiAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRz ID0gKm9wdGlvbnM7CiAgCiAgICBvcHRzLmRlcmVmX3JlZiA9IDE7Ci1JbmRleDogZ2RiLTcuNy4x L2dkYi9jcC1hYmkuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2NwLWFiaS5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2NwLWFiaS5jCTIwMTQtMDEtMDggMTA6 MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9jcC1hYmkuYwkyMDE0LTA1 LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvY3AtYWJpLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzQ3NDcwMjcgKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jcC1hYmkuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1OTc0 OTU5OSArMDIwMAogQEAgLTY4LDEzICs2OCwxMyBAQCBpc19vcGVyYXRvcl9uYW1lIChjb25zdCBj aGFyICpuYW1lKQogICAgcmV0dXJuICgqY3VycmVudF9jcF9hYmkuaXNfb3BlcmF0b3JfbmFtZSkg KG5hbWUpOwogIH0KQEAgLTE0NjIsMTAgKzE0NjIsMTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv Y3AtYWJpLmMKICB7CiAgICBzdHJ1Y3QgdHlwZSAqcmV0ID0gTlVMTDsKICAgIHZvbGF0aWxlIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9jcC1hYmkuaAorSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2NwLWFiaS5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNy4xLm9yaWcvZ2RiL2NwLWFiaS5oCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9jcC1hYmkuaAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0 NDExMCArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvY3AtYWJpLmgJMjAx NC0wNi0xNiAyMzoyNzowNS4xMzU3NDcwMjggKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEz L2dkYi9jcC1hYmkuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1OTc0OTU5OSArMDIwMAogQEAgLTEw OCw3ICsxMDgsNyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV92aXJ0dWFsX2ZuX2ZpCiAg CQkJCQkgICAgIHN0cnVjdCBmbl9maWVsZCAqZiwKICAJCQkJCSAgICAgaW50IGosCkBAIC0xNTIw LDEwICsxNTIwLDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2NwLWFiaS5oCiAgICB2b2lkICgq cHJpbnRfbWV0aG9kX3B0cikgKGNvbnN0IGdkYl9ieXRlICpjb250ZW50cywKICAJCQkgICAgc3Ry dWN0IHR5cGUgKnR5cGUsCiAgCQkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwotSW5kZXg6 IGdkYi03LjcuMS9nZGIvY3AtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2NwLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvY3At dmFscHJpbnQuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjcuMS9nZGIvY3AtdmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIw MAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDE0LTA2 LTE2IDIzOjI3OjA1LjEzNTc0NzAyOCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2NwLXZhbHByaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NTk3NDk1OTkgKzAyMDAKIEBAIC04 Miw3ICs4Miw3IEBAIHN0YXRpYyB2b2lkIGNwX3ByaW50X3N0YXRpY19maWVsZCAoc3RydWMKICAJ CQkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAgCkBAIC0xNTcwLDcg KzE1NzAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9jcC12YWxwcmludC5jCiAgCiAgICAgICAg LyogVWdoLCB3ZSBoYXZlIHRvIGNvbnZlcnQgYmFjayB0byBhIHZhbHVlIGhlcmUuICAqLwogICAg ICAgIHZhbHVlID0gdmFsdWVfZnJvbV9jb250ZW50c19hbmRfYWRkcmVzcyAodHlwZSwgdmFsYWRk ciArIG9mZnNldCwKLUBAIC00NjIsNyArNDYzLDcgQEAgY3BfcHJpbnRfdmFsdWVfZmllbGRzX3J0 dGkgKHN0cnVjdCB0eXBlCitAQCAtNDYzLDcgKzQ2NCw3IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxk c19ydHRpIChzdHJ1Y3QgdHlwZQogIAogIHN0YXRpYyB2b2lkCiAgY3BfcHJpbnRfdmFsdWUgKHN0 cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlLApAQCAtMTU3OSw3ICsxNTc5 LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvY3AtdmFscHJpbnQuYwogIAkJQ09SRV9BRERSIGFk ZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQlpbnQgcmVjdXJzZSwgY29uc3Qgc3Ry dWN0IHZhbHVlICp2YWwsCiAgCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucywKLUBAIC00NzIsNyArNDczLDcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1YworQEAgLTQ3Myw3ICs0NzQsNyBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjCiAgICAgID0gKHN0cnVjdCB0eXBlICoqKSBvYnN0YWNrX25leHRfZnJl ZSAoJmRvbnRfcHJpbnRfdmJfb2JzdGFjayk7CiAgICBzdHJ1Y3Qgb2JzdGFjayB0bXBfb2JzdGFj ayA9IGRvbnRfcHJpbnRfdmJfb2JzdGFjazsKICAgIGludCBpLCBuX2Jhc2VjbGFzc2VzID0gVFlQ RV9OX0JBU0VDTEFTU0VTICh0eXBlKTsKQEAgLTE1ODgsNyArMTU4OCw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2NwLXZhbHByaW50LmMKICAgIHN0cnVjdCB0eXBlICp0aGlzdHlwZTsKICAKICAg IGlmIChkb250X3ByaW50X3ZiID09IDApCi1AQCAtNDg2LDcgKzQ4Nyw3IEBAIGNwX3ByaW50X3Zh bHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWMKK0BAIC00ODcsNyArNDg4LDcgQEAgY3BfcHJp bnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1YwogIAogICAgZm9yIChpID0gMDsgaSA8 IG5fYmFzZWNsYXNzZXM7IGkrKykKICAgICAgewpAQCAtMTU5NywxMiArMTU5NywxMiBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi9jcC12YWxwcmludC5jCiAgICAgICAgaW50IHNraXA7CiAgICAgICAg c3RydWN0IHR5cGUgKmJhc2VjbGFzcyA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfQkFTRUNMQVNTICh0 eXBlLCBpKSk7CiAgICAgICAgY29uc3QgY2hhciAqYmFzZW5hbWUgPSBUWVBFX05BTUUgKGJhc2Vj bGFzcyk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9kLWxhbmcuaAorSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL2QtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2Ri L2QtbGFuZy5oCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu Ny4xL2dkYi9kLWxhbmcuaAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIwMAotQEAg LTI1LDcgKzI1LDcgQEAKLSBleHRlcm4gY2hhciAqZF9kZW1hbmdsZSAoY29uc3QgY2hhciAqbWFu Z2xlZCwgaW50IG9wdGlvbnMpOworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZC1s YW5nLmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzU3NDcwMjggKzAyMDAKKysrKyBnZGItNy43Ljkw LjIwMTQwNjEzL2dkYi9kLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg1OTc0OTU5OSArMDIw MAorQEAgLTY5LDcgKzY5LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmRfcGFyc2Vfc3ltYm9sIChz dHJ1YworIC8qIERlZmluZWQgaW4gZC12YWxwcmludC5jICAqLwogIAogIGV4dGVybiB2b2lkIGRf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAt CQkJIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLApAQCAtMTYxMCwxMCAr MTYxMCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9kLWxhbmcuaAogIAkJCSBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICp2YWws CiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsKLUluZGV4 OiBnZGItNy43LjEvZ2RiL2QtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2QtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9kLXZh bHByaW50LmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43 LjEvZ2RiL2QtdmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc4NzQ0NDExMCArMDIwMAor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZC12YWxwcmludC5jCTIwMTQtMDYtMTYg MjM6Mjc6MDUuMTM1NzQ3MDI4ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZC12 YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODU5NzQ5NTk5ICswMjAwCiBAQCAtMjksNyAr MjksNyBAQAogIAogIHN0YXRpYyBpbnQKQEAgLTE2MjMsNyArMTYyMyw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2QtdmFscHJpbnQuYwogIAkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCByZWN1cnNlLAogIAkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgIGNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotQEAgLTcxLDkgKzcxLDkgQEAg ZHluYW1pY19hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgYworQEAgLTcyLDkgKzcyLDkg QEAgZHluYW1pY19hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgYwogIAogIC8qIEltcGxl bWVudHMgdGhlIGxhX3ZhbF9wcmludCByb3V0aW5lIGZvciBsYW5ndWFnZSBELiAgKi8KICB2b2lk CkBAIC0xNjM2LDEwICsxNjM2LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2QtdmFscHJpbnQu YwogICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cykKICB7CiAgICBpbnQgcmV0OwotSW5kZXg6IGdkYi03LjcuMS9nZGIvZG91Ymxlc3QuYworSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2RvdWJsZXN0LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy43LjEub3JpZy9nZGIvZG91Ymxlc3QuYwkyMDE0LTAxLTA4IDEwOjIzOjM2LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjcuMS9nZGIvZG91Ymxlc3QuYwkyMDE0LTA1LTEyIDIwOjIyOjA1 Ljc4NzQ0NDExMCArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZG91Ymxl c3QuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjEzNjc0NzAyOSArMDIwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL2RvdWJsZXN0LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NjA3NDk2MDAgKzAy MDAKIEBAIC03NjcsNyArNzY3LDcgQEAgZmxvYXRmb3JtYXRfZnJvbV9kb3VibGVzdCAoY29uc3Qg c3RydWN0CiAgICAgYnV0IG5vdCBwYXNzZWQgb24gYnkgR0RCLiAgVGhpcyBzaG91bGQgYmUgZml4 ZWQuICAqLwogIApAQCAtMTY2MCwxMSArMTY2MCwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9k b3VibGVzdC5jCiAgICByZXR1cm4gZm9ybWF0OwogIH0KICAKLUluZGV4OiBnZGItNy43LjEvZ2Ri L2R3YXJmMmxvYy5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNS0x MiAyMDoyMjowNC43NzM0NDM1MDIgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2R3YXJmMmxvYy5j CTIwMTQtMDUtMTIgMjA6MjI6MDUuNzg4NDQ0MTExICswMjAwCi1AQCAtMTcwOSwxOSArMTcwOSwx OSBAQCBpbnNlcnRfYml0cyAodW5zaWduZWQgaW50IGRhdHVtLAorLS0tIGdkYi03LjcuOTAuMjAx NDA2MTMub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xMzc3NDcwMzAg KzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYwkyMDE0LTA2LTE2 IDIzOjI3OjA3Ljg2MTc0OTYwMSArMDIwMAorQEAgLTE1NzIsMTkgKzE1NzIsMTkgQEAgaW5zZXJ0 X2JpdHMgKHVuc2lnbmVkIGludCBkYXR1bSwKICAgICBCSVRTX0JJR19FTkRJQU4gaXMgdGFrZW4g ZGlyZWN0bHkgZnJvbSBnZGJhcmNoLiAgKi8KICAKICBzdGF0aWMgdm9pZApAQCAtMTY5MCw3ICsx NjkwLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZHdhcmYybG9jLmMKICAKICAgIGRlc3RfYXZh aWwgPSA4IC0gZGVzdF9vZmZzZXRfYml0cyAlIDg7CiAgCi1AQCAtMTc1OSwxMyArMTc1OSwxMyBA QCBzdGF0aWMgdm9pZAorQEAgLTE2MjIsMTMgKzE2MjIsMTMgQEAgc3RhdGljIHZvaWQKICByZWFk X3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2KQogIHsKICAgIGludCBpOwpAQCAtMTcwNiw3 ICsxNzA2LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZHdhcmYybG9jLmMKICAgIHNpemVfdCBi dWZmZXJfc2l6ZSA9IDA7CiAgICBnZGJfYnl0ZSAqYnVmZmVyID0gTlVMTDsKICAgIHN0cnVjdCBj bGVhbnVwICpjbGVhbnVwOwotQEAgLTE3OTIsOCArMTc5Miw4IEBAIHJlYWRfcGllY2VkX3ZhbHVl IChzdHJ1Y3QgdmFsdWUgKnYpCitAQCAtMTY1NSw4ICsxNjU1LDggQEAgcmVhZF9waWVjZWRfdmFs dWUgKHN0cnVjdCB2YWx1ZSAqdikKICAgIGZvciAoaSA9IDA7IGkgPCBjLT5uX3BpZWNlcyAmJiBv ZmZzZXQgPCB0eXBlX2xlbjsgaSsrKQogICAgICB7CiAgICAgICAgc3RydWN0IGR3YXJmX2V4cHJf cGllY2UgKnAgPSAmYy0+cGllY2VzW2ldOwpAQCAtMTcxNyw3ICsxNzE3LDcgQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvZHdhcmYybG9jLmMKICAgICAgICBjb25zdCBnZGJfYnl0ZSAqaW50ZXJtZWRp YXRlX2J1ZmZlcjsKICAKICAgICAgICAvKiBDb21wdXRlIHNpemUsIHNvdXJjZSwgYW5kIGRlc3Rp bmF0aW9uIG9mZnNldHMgZm9yIGNvcHlpbmcsIGluCi1AQCAtMTk0MiwxMyArMTk0MiwxMyBAQCBz dGF0aWMgdm9pZAorQEAgLTE4MDUsMTMgKzE4MDUsMTMgQEAgc3RhdGljIHZvaWQKICB3cml0ZV9w aWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0cnVjdCB2YWx1ZSAqZnJvbSkKICB7CiAg ICBpbnQgaTsKQEAgLTE3MzMsNyArMTczMyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2R3YXJm MmxvYy5jCiAgICBzaXplX3QgYnVmZmVyX3NpemUgPSAwOwogICAgZ2RiX2J5dGUgKmJ1ZmZlciA9 IE5VTEw7CiAgICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLUBAIC0xOTc2LDggKzE5NzYsOCBA QCB3cml0ZV9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CitAQCAtMTgzOSw4ICsx ODM5LDggQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRvLCBzdAogICAgZm9y IChpID0gMDsgaSA8IGMtPm5fcGllY2VzICYmIG9mZnNldCA8IHR5cGVfbGVuOyBpKyspCiAgICAg IHsKICAgICAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZSAqcCA9ICZjLT5waWVjZXNbaV07CkBA IC0xNzQ0LDcgKzE3NDQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9kd2FyZjJsb2MuYwogICAg ICAgIGludCBuZWVkX2JpdHdpc2U7CiAgICAgICAgY29uc3QgZ2RiX2J5dGUgKnNvdXJjZV9idWZm ZXI7CiAgCi1AQCAtMjEwNyw4ICsyMTA3LDggQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3Qg dmFsdWUgKnRvLCBzdAorQEAgLTE5NzAsOCArMTk3MCw4IEBAIHdyaXRlX3BpZWNlZF92YWx1ZSAo c3RydWN0IHZhbHVlICp0bywgc3QKICAgICBpbXBsaWNpdCBwb2ludGVyLiAgKi8KICAKICBzdGF0 aWMgaW50CkBAIC0xNzU1LDcgKzE3NTUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9kd2FyZjJs b2MuYwogIAkJCSBlbnVtIGR3YXJmX3ZhbHVlX2xvY2F0aW9uIGNoZWNrX2ZvcikKICB7CiAgICBz dHJ1Y3QgcGllY2VfY2xvc3VyZSAqYwotQEAgLTIxMjQsNyArMjEyNCw3IEBAIGNoZWNrX3BpZWNl ZF92YWx1ZV9iaXRzIChjb25zdCBzdHJ1Y3QgdmEKK0BAIC0xOTg3LDcgKzE5ODcsNyBAQCBjaGVj a19waWVjZWRfdmFsdWVfYml0cyAoY29uc3Qgc3RydWN0IHZhCiAgICBmb3IgKGkgPSAwOyBpIDwg Yy0+bl9waWVjZXMgJiYgYml0X2xlbmd0aCA+IDA7IGkrKykKICAgICAgewogICAgICAgIHN0cnVj dCBkd2FyZl9leHByX3BpZWNlICpwID0gJmMtPnBpZWNlc1tpXTsKQEAgLTE3NjQsNyArMTc2NCw3 IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2R3YXJmMmxvYy5jCiAgCiAgICAgICAgaWYgKGJpdF9v ZmZzZXQgPiAwKQogIAl7Ci1AQCAtMjE2Miw4ICsyMTYyLDggQEAgY2hlY2tfcGllY2VkX3ZhbHVl X2JpdHMgKGNvbnN0IHN0cnVjdCB2YQorQEAgLTIwMjUsOCArMjAyNSw4IEBAIGNoZWNrX3BpZWNl ZF92YWx1ZV9iaXRzIChjb25zdCBzdHJ1Y3QgdmEKICB9CiAgCiAgc3RhdGljIGludApAQCAtMTc3 NSw3ICsxNzc1LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZHdhcmYybG9jLmMKICB7CiAgICBy ZXR1cm4gY2hlY2tfcGllY2VkX3ZhbHVlX2JpdHMgKHZhbHVlLCBiaXRfb2Zmc2V0LCBiaXRfbGVu Z3RoLAogIAkJCQkgIERXQVJGX1ZBTFVFX01FTU9SWSk7Ci1AQCAtMjE4MSw4ICsyMTgxLDggQEAg Y2hlY2tfcGllY2VkX3ZhbHVlX2ludmFsaWQgKGNvbnN0IHN0cnVjdAorQEAgLTIwNDQsOCArMjA0 NCw4IEBAIGNoZWNrX3BpZWNlZF92YWx1ZV9pbnZhbGlkIChjb25zdCBzdHJ1Y3QKICAgICBhIHN5 bnRoZXRpYyBwb2ludGVyLiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC0xNzg2LDcgKzE3ODYsNyBA QCBJbmRleDogZ2RiLTcuNy4xL2dkYi9kd2FyZjJsb2MuYwogIHsKICAgIHJldHVybiBjaGVja19w aWVjZWRfdmFsdWVfYml0cyAodmFsdWUsIGJpdF9vZmZzZXQsIGJpdF9sZW5ndGgsCiAgCQkJCSAg RFdBUkZfVkFMVUVfSU1QTElDSVRfUE9JTlRFUik7Ci1AQCAtMjIwNyw5ICsyMjA3LDEwIEBAIGlu ZGlyZWN0X3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWwKK0BAIC0yMDcwLDkgKzIwNzAs MTAgQEAgaW5kaXJlY3RfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbAogICAgc3RydWN0 IHR5cGUgKnR5cGU7CiAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7CiAgICBzdHJ1Y3QgZHdh cmYyX2xvY2V4cHJfYmF0b24gYmF0b247CkBAIC0xNzk5LDcgKzE3OTksNyBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi9kd2FyZjJsb2MuYwogIAogICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKHZhbHVlKSk7CiAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfUFRS KQotQEAgLTIyMjMsNyArMjIyNCw3IEBAIGluZGlyZWN0X3BpZWNlZF92YWx1ZSAoc3RydWN0IHZh bHVlICp2YWwKK0BAIC0yMDg2LDcgKzIwODcsNyBAQCBpbmRpcmVjdF9waWVjZWRfdmFsdWUgKHN0 cnVjdCB2YWx1ZSAqdmFsCiAgICBmb3IgKGkgPSAwOyBpIDwgYy0+bl9waWVjZXMgJiYgYml0X2xl bmd0aCA+IDA7IGkrKykKICAgICAgewogICAgICAgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpw ID0gJmMtPnBpZWNlc1tpXTsKQEAgLTE4MDgsNyArMTgwOCw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL2R3YXJmMmxvYy5jCiAgCiAgICAgICAgaWYgKGJpdF9vZmZzZXQgPiAwKQogIAl7Ci1AQCAt MjQ5MSw3ICsyNDkyLDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0 eQorQEAgLTIzNTcsNyArMjM1OCw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChz dHJ1Y3QgdHkKICAJICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWUgPSBkd2FyZl9leHByX2ZldGNoIChj dHgsIDApOwogIAkgICAgZ2RiX2J5dGUgKmNvbnRlbnRzOwogIAkgICAgY29uc3QgZ2RiX2J5dGUg KnZhbF9ieXRlczsKQEAgLTE4MTcsMTEgKzE4MTcsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv ZHdhcmYybG9jLmMKICAKICAJICAgIGlmIChieXRlX29mZnNldCArIFRZUEVfTEVOR1RIICh0eXBl KSA+IG4pCiAgCSAgICAgIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKCk7Ci1JbmRleDogZ2Ri LTcuNy4xL2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9k d2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZHdhcmYycmVh ZC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzUyNDQ0MDg5ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dk Yi9kd2FyZjJyZWFkLmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTE0NDQxMTMgKzAyMDAKLUBAIC0x ODkzLDEyICsxODkzLDEyIEBAIGR3YXJmMl9jb21wbGV4X2xvY2F0aW9uX2V4cHJfY29tcGxhaW50 ICgKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDE0LTA2 LTE2IDIzOjI3OjA1LjE0MTc0NzAzNCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2R3YXJmMnJlYWQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2NDc0OTYwNCArMDIwMAorQEAgLTE4 ODksMTIgKzE4ODksMTIgQEAgZHdhcmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQg KAogIH0KICAKICBzdGF0aWMgdm9pZApAQCAtMTgzOCw3ICsxODM4LDcgQEAgSW5kZXg6IGdkYi03 LjcuMS9nZGIvZHdhcmYycmVhZC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1AQCAtMTIxOTAsOCAr MTIxOTAsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwCitAQCAt MTIzMjYsOCArMTIzMjYsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmllbGRfaW5mbyAq ZmlwCiAgCSAgICAgICAgIG9iamVjdCwgYW5kIHRoZW4gc3VidHJhY3Qgb2ZmIHRoZSBudW1iZXIg b2YgYml0cyBvZgogIAkgICAgICAgICB0aGUgZmllbGQgaXRzZWxmLiAgVGhlIHJlc3VsdCBpcyB0 aGUgYml0IG9mZnNldCBvZgogIAkgICAgICAgICB0aGUgTFNCIG9mIHRoZSBmaWVsZC4gICovCkBA IC0xODQ5LDExICsxODQ5LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2R3YXJmMnJlYWQuYwog IAogIAkgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zaXplLCBjdSk7 CiAgCSAgICAgIGlmIChhdHRyKQotSW5kZXg6IGdkYi03LjcuMS9nZGIvZXZhbC5jCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZXZhbC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4x Lm9yaWcvZ2RiL2V2YWwuYwkyMDE0LTA1LTEyIDIwOjIyOjA0Ljc3NzQ0MzUwNCArMDIwMAotKysr IGdkYi03LjcuMS9nZGIvZXZhbC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzkyNDQ0MTEzICswMjAw Ci1AQCAtMjk4LDcgKzI5OCw4IEBAIGV2YWx1YXRlX3N0cnVjdF90dXBsZSAoc3RydWN0IHZhbHVl ICpzdHIKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2V2YWwuYwkyMDE0LTA2LTE2 IDIzOjI3OjA1LjE0Mzc0NzAzNiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2V2 YWwuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2NDc0OTYwNCArMDIwMAorQEAgLTI5Nyw3ICsyOTcs OCBAQCBldmFsdWF0ZV9zdHJ1Y3RfdHVwbGUgKHN0cnVjdCB2YWx1ZSAqc3RyCiAgICB3aGlsZSAo LS1uYXJncyA+PSAwKQogICAgICB7CiAgICAgICAgc3RydWN0IHZhbHVlICp2YWwgPSBOVUxMOwpA QCAtMTg2Myw3ICsxODYzLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZXZhbC5jCiAgICAgICAg YmZkX2J5dGUgKmFkZHI7CiAgCiAgICAgICAgZmllbGRubysrOwotQEAgLTM2MCw3ICszNjEsNyBA QCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCitAQCAtMzU5LDcgKzM2 MCw3IEBAIGluaXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwKICAJCSAgICBl bnVtIG5vc2lkZSBub3NpZGUsIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQp CiAgewogICAgTE9OR0VTVCBpbmRleDsKQEAgLTE4NzIsNyArMTg3Miw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2V2YWwuYwogIAogICAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gQklO T1BfQ09NTUEpCiAgICAgIHsKLUBAIC03MTgsMTEgKzcxOSwxMSBAQCBiaW5vcF9wcm9tb3RlIChj b25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmCitAQCAtNTIyLDExICs1MjMsMTEgQEAgYmlub3BfcHJv bW90ZSAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZgogICAgICAvKiBGSVhNRTogQWxzbyBtaXhl ZCBpbnRlZ3JhbC9ib29sZWFucywgd2l0aCByZXN1bHQgYW4gaW50ZWdlci4gICovCiAgICAgIHsK ICAgICAgICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidWlsdGluID0gYnVpbHRpbl90eXBl IChnZGJhcmNoKTsKQEAgLTE4ODcsNyArMTg4Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2V2 YWwuYwogICAgICAgIGludCB1bnNpZ25lZF9vcGVyYXRpb247CiAgCiAgICAgICAgLyogRGV0ZXJt aW5lIHR5cGUgbGVuZ3RoIGFuZCBzaWduZWRuZXNzIGFmdGVyIHByb21vdGlvbiBmb3IKLUBAIC05 MDUsNyArOTA2LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQor QEAgLTcwOSw3ICs3MTAsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICplCiAgICBzdHJ1Y3QgdmFsdWUgKiphcmd2ZWM7CiAgICBpbnQgY29kZTsKICAgIGludCBpeDsK QEAgLTE4OTYsNyArMTg5Niw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2V2YWwuYwogICAgc3Ry dWN0IHR5cGUgKiphcmdfdHlwZXM7CiAgICBpbnQgc2F2ZV9wb3MxOwogICAgc3RydWN0IHN5bWJv bCAqZnVuY3Rpb24gPSBOVUxMOwotQEAgLTEwODUsNyArMTA4Niw3IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKK0BAIC04ODgsNyArODg5LDcgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQogIAkgIHN0cnVjdCB0eXBlICpyYW5nZV90 eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsKICAJICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7CiAgCSAgc3RydWN0IHZhbHVlICphcnJheSA9 IGFsbG9jYXRlX3ZhbHVlIChleHBlY3RfdHlwZSk7CkBAIC0xOTA1LDcgKzE5MDUsNyBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi9ldmFsLmMKICAJICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3Vu ZCwgaW5kZXg7CiAgCiAgCSAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZs b3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi1AQCAtMjA4MCw3ICsyMDgxLDggQEAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTE5MDMsNyArMTkwNCw4IEBA IGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAgICAgICB7CiAgICAg ICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZhbHVlX3R5cGUgKGFyZzEpOwogICAgICAgICAgc3Ry dWN0IHR5cGUgKnJlYWxfdHlwZTsKQEAgLTE5MTUsMTAgKzE5MTUsMTAgQEAgSW5kZXg6IGdkYi03 LjcuMS9nZGIvZXZhbC5jCiAgCXN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7CiAgCiAg CWdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2Yt bGFuZy5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi1sYW5nLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZi1sYW5nLmMJMjAxNC0wMS0wOCAxMDoyMzozNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL2YtbGFuZy5jCTIwMTQtMDUtMTIgMjA6 MjI6MDUuNzkyNDQ0MTEzICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9m LWxhbmcuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE0Mzc0NzAzNiArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2YtbGFuZy5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY1NzQ5NjA1ICsw MjAwCiBAQCAtMTA0LDcgKzEwNCw3IEBAIGZfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUg KnR5cGUsIHMKICAKICBzdGF0aWMgdm9pZApAQCAtMTkyOCwyNSArMTkyOCwyNSBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi9mLWxhbmcuYwogIAkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29w dGlvbnMgKm9wdGlvbnMpCiAgewogICAgY29uc3QgY2hhciAqdHlwZV9lbmNvZGluZyA9IGZfZ2V0 X2VuY29kaW5nICh0eXBlKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2YtbGFuZy5oCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 LjEub3JpZy9nZGIvZi1sYW5nLmgJMjAxNC0wNS0xMiAyMDoyMjowNC43Nzc0NDM1MDQgKzAyMDAK LSsrKyBnZGItNy43LjEvZ2RiL2YtbGFuZy5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzkyNDQ0MTEz ICswMjAwCi1AQCAtMzMsNyArMzMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqZl9vYmplY3RfYWRk cmVzc19kYXRhCi0gICAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0p OwotIGV4dGVybiB2b2lkIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3Ry dWN0IHR5cGUgKnR5cGUpOworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi1sYW5n LmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xNDM3NDcwMzYgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9mLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2NTc0OTYwNSArMDIwMAor QEAgLTMwLDcgKzMwLDcgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5l ZAorIGV4dGVybiB2b2lkIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgY2hhciAq LCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisgCQkJICBpbnQsIGNvbnN0IHN0cnVjdCB0eXBlX3By aW50X29wdGlvbnMgKik7CiAgCiAtZXh0ZXJuIHZvaWQgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICosIGNvbnN0IGdkYl9ieXRlICosIGludCwgQ09SRV9BRERSLAogK2V4dGVybiB2b2lkIGZfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBMT05HRVNULCBDT1JFX0FE RFIsCiAgCQkJIHN0cnVjdCB1aV9maWxlICosIGludCwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVl ICosCiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwotSW5kZXg6IGdk Yi03LjcuMS9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv Zi12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2YtdmFscHJp bnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA0Ljc3ODQ0MzUwNSArMDIwMAotKysrIGdkYi03LjcuMS9n ZGIvZi12YWxwcmludC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzkzNDQ0MTE0ICswMjAwCi1AQCAt NDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0Ci0g CQkJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqKTsKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL2YtdmFscHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE0Mzc0NzAzNiArMDIwMAor KysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2YtdmFscHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3 OjA3Ljg2NTc0OTYwNSArMDIwMAorQEAgLTQxLDcgKzQxLDcgQEAgZXh0ZXJuIHZvaWQgX2luaXRp YWxpemVfZl92YWxwcmludCAodm9pZAorIHN0YXRpYyB2b2lkIGluZm9fY29tbW9uX2NvbW1hbmQg KGNoYXIgKiwgaW50KTsKICBzdGF0aWMgdm9pZCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2Fn Z3JlZ2F0ZSAoc3RydWN0IHR5cGUgKik7CiAgCiAtaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01B WF9GT1JUUkFOX0RJTVMgKyAxXVsyXTsKQEAgLTE5NTQsMTYgKzE5NTQsMTggQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvZi12YWxwcmludC5jCiAgCiAgLyogQXJyYXkgd2hpY2ggaG9sZHMgb2Zmc2V0 cyB0byBiZSBhcHBsaWVkIHRvIGdldCBhIHJvdydzIGVsZW1lbnRzCiAgICAgZm9yIGEgZ2l2ZW4g YXJyYXkuICBBcnJheSBhbHNvIGhvbGRzIHRoZSBzaXplIG9mIGVhY2ggc3ViYXJyYXkuICAqLwot QEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgdm9pZAotIGY3N19jcmVhdGVfYXJyYXlwcmludF9v ZmZzZXRfdGJsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKK0BA IC03Niw4ICs3Niw4IEBAIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCisg c3RhdGljIHZvaWQKKyBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0 IHR5cGUgKnR5cGUpCiAgewotICAgc3RydWN0IHR5cGUgKnRtcF90eXBlOwotLSAgaW50IGVsdGxl bjsKLSsgIExPTkdFU1QgZWx0bGVuOwotICAgaW50IG5kaW1lbiA9IDE7Ci0gICBpbnQgdXBwZXIs IGxvd2VyOworLSAgaW50IHVwcGVyX2JvdW5kID0gLTE7CistICBpbnQgbG93ZXJfYm91bmQgPSAx OworKyAgTE9OR0VTVCB1cHBlcl9ib3VuZCA9IC0xOworKyAgTE9OR0VTVCBsb3dlcl9ib3VuZCA9 IDE7CiAgCi1AQCAtMTcxLDEzICsxNzEsMTMgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNl dF90YmwgKHN0cnVjdAorICAgLyogUmVjdXJzaXZlbHkgZ28gYWxsIHRoZSB3YXkgZG93biBpbnRv IGEgcG9zc2libHkgbXVsdGktZGltZW5zaW9uYWwKKyAgICAgIEY3NyBhcnJheSBhbmQgZ2V0IHRo ZSBib3VuZHMuICBGb3Igc2ltcGxlIGFycmF5cywgdGhpcyBpcyBwcmV0dHkKK0BAIC0xMDksNyAr MTA5LDcgQEAgZjc3X2dldF9keW5hbWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cgogIHN0YXRp YyB2b2lkCiAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3Ry dWN0IHR5cGUgKnR5cGUsCiAgCQkgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTE5NzIs MTQgKzE5NzQsMTYgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZi12YWxwcmludC5jCiAgCQkgICBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgIGNvbnN0IHN0cnVjdCB2 YWx1ZSAqdmFsLAogIAkJICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlv bnMsCi0gCQkgICBpbnQgKmVsdHMpCi0geworQEAgLTExOCw3ICsxMTgsNyBAQCBmNzdfcHJpbnRf YXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpCisgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlw ZSA9IFRZUEVfSU5ERVhfVFlQRSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOworICAgQ09SRV9BRERS IGFkZHIgPSBhZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0OworICAgTE9OR0VTVCBsb3dlcmJvdW5k LCB1cHBlcmJvdW5kOwogLSAgaW50IGk7CiArICBMT05HRVNUIGk7CiAgCi0gICBpZiAobnNzICE9 IG5kaW1lbnNpb25zKQotICAgICB7Ci1AQCAtMjIwLDcgKzIyMCw3IEBAIGY3N19wcmludF9hcnJh eV8xIChpbnQgbnNzLCBpbnQgbmRpbWVuc2kKKyAgIGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJhbmdl X3R5cGUsICZsb3dlcmJvdW5kLCAmdXBwZXJib3VuZCk7CisgCitAQCAtMTc1LDcgKzE3NSw3IEBA IGY3N19wcmludF9hcnJheV8xIChpbnQgbnNzLCBpbnQgbmRpbWVuc2kKICAKICBzdGF0aWMgdm9p ZAogIGY3N19wcmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLApAQCAtMTk4OCw3ICsxOTkyLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZi12YWxw cmludC5jCiAgCQkgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAg CQkgaW50IHJlY3Vyc2UsCiAgCQkgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtMjYzLDgg KzI2Myw5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKK0BAIC0y MTIsOCArMjEyLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQog ICAgIGZ1bmN0aW9uOyB0aGV5IGFyZSBpZGVudGljYWwuICAqLwogIAogIHZvaWQKQEAgLTIwMDAs MjkgKzIwMDQsMjAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZi12YWxwcmludC5jCiAgCSAgICAg Y29uc3Qgc3RydWN0IHZhbHVlICpvcmlnaW5hbF92YWx1ZSwKICAJICAgICBjb25zdCBzdHJ1Y3Qg dmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKICB7Ci1AQCAtMzg5LDcgKzM5MCw3IEBAIGZf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2QKLSAgICAgICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIoICIpOwotICAgICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IFRZ UEVfTkZJRUxEUyAodHlwZSk7IGluZGV4KyspCi0gICAgICAgICB7Ci0tICAgICAgICAgIGludCBv ZmZzZXQgPSBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaW5kZXgpIC8gODsKLSsJICBMT05HRVNU IG9mZnNldCA9IFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpbmRleCkgLyA4OwotIAotICAgICAg ICAgICB2YWxfcHJpbnQgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaW5kZXgpLCB2YWxhZGRyLAot IAkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBvZmZzZXQsCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9m aW5kdmFyLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9maW5kdmFyLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZmluZHZhci5jCTIwMTQtMDUtMTIgMjA6MjI6 MDQuNzc4NDQzNTA1ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9maW5kdmFyLmMJMjAxNC0wNS0x MiAyMDoyMjowNS43OTM0NDQxMTQgKzAyMDAKLUBAIC02MjMsNyArNjIzLDcgQEAgZGVmYXVsdF92 YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZQotIAkJCSAgICAgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZmluZHZhci5jCTIw MTQtMDYtMTYgMjM6Mjc6MDUuMTQ0NzQ3MDM3ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvZmluZHZhci5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY1NzQ5NjA1ICswMjAwCitAQCAt NjI4LDcgKzYyOCw3IEBAIHN0cnVjdCB2YWx1ZSAqCisgZGVmYXVsdF92YWx1ZV9mcm9tX3JlZ2lz dGVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHR5cGUgKnR5cGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaWQgZnJhbWVf aWQpCiAgewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJh bWUpOwogLSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKICsgIExPTkdFU1QgbGVuID0g VFlQRV9MRU5HVEggKHR5cGUpOwogICAgc3RydWN0IHZhbHVlICp2YWx1ZSA9IGFsbG9jYXRlX3Zh bHVlICh0eXBlKTsKICAKICAgIFZBTFVFX0xWQUwgKHZhbHVlKSA9IGx2YWxfcmVnaXN0ZXI7Ci1A QCAtNjU2LDEwICs2NTYsMTAgQEAgdm9pZAorQEAgLTY2MSwxMCArNjYxLDEwIEBAIHZvaWQKICBy ZWFkX2ZyYW1lX3JlZ2lzdGVyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJh bWVfYXJjaCAoZnJhbWUpOwpAQCAtMjAzNiw3ICsyMDMxLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9n ZGIvZmluZHZhci5jCiAgCiAgICBnZGJfYXNzZXJ0IChWQUxVRV9MVkFMICh2YWx1ZSkgPT0gbHZh bF9yZWdpc3Rlcik7CiAgCi1AQCAtNjc0LDcgKzY3NCw3IEBAIHJlYWRfZnJhbWVfcmVnaXN0ZXJf dmFsdWUgKHN0cnVjdCB2YWx1ZQorQEAgLTY3OSw3ICs2NzksNyBAQCByZWFkX2ZyYW1lX3JlZ2lz dGVyX3ZhbHVlIChzdHJ1Y3QgdmFsdWUKICAgIHdoaWxlIChsZW4gPiAwKQogICAgICB7CiAgICAg ICAgc3RydWN0IHZhbHVlICpyZWd2YWwgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdmFsdWUgKGZyYW1l LCByZWdudW0pOwpAQCAtMjA0NSwxMSArMjA0MCwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9m aW5kdmFyLmMKICAKICAgICAgICBpZiAodmFsdWVfb3B0aW1pemVkX291dCAocmVndmFsKSkKICAJ ewotSW5kZXg6IGdkYi03LjcuMS9nZGIvZnJhbWUuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL2ZyYW1lLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZnJhbWUu YwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIv ZnJhbWUuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5MzQ0NDExNCArMDIwMAotQEAgLTEyNDcsNyAr MTI0Nyw3IEBAIGRlcHJlY2F0ZWRfZnJhbWVfcmVnaXN0ZXJfcmVhZCAoc3RydWN0IGYKKy0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2ZyYW1lLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4x NDQ3NDcwMzcgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9mcmFtZS5jCTIwMTQt MDYtMTYgMjM6Mjc6MDcuODY2NzQ5NjA2ICswMjAwCitAQCAtMTI3Miw3ICsxMjcyLDcgQEAgZGVw cmVjYXRlZF9mcmFtZV9yZWdpc3Rlcl9yZWFkIChzdHJ1Y3QgZgogIAogIGludAogIGdldF9mcmFt ZV9yZWdpc3Rlcl9ieXRlcyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcmVnbnVtLApA QCAtMjA1OCw3ICsyMDUzLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZnJhbWUuYwogIAkJCSAg aW50ICpvcHRpbWl6ZWRwLCBpbnQgKnVuYXZhaWxhYmxlcCkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci1AQCAtMTI3Niw3ICsxMjc2LDcg QEAgZ2V0X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaQorQEAgLTEzMDEsNyAr MTMwMSw3IEBAIGdldF9mcmFtZV9yZWdpc3Rlcl9ieXRlcyAoc3RydWN0IGZyYW1lX2kKICAgICAg fQogICAgaWYgKGxlbiA+IG1heHNpemUpCiAgICAgIGVycm9yIChfKCJCYWQgZGVidWcgaW5mb3Jt YXRpb24gZGV0ZWN0ZWQ6ICIKQEAgLTIwNjcsMTEgKzIwNjIsMTEgQEAgSW5kZXg6IGdkYi03Ljcu MS9nZGIvZnJhbWUuYwogIAogICAgLyogQ29weSB0aGUgZGF0YS4gICovCiAgICB3aGlsZSAobGVu ID4gMCkKLUluZGV4OiBnZGItNy43LjEvZ2RiL2ZyYW1lLmgKK0luZGV4OiBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9mcmFtZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2Zy YW1lLmgJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEv Z2RiL2ZyYW1lLmgJMjAxNC0wNS0xMiAyMDoyMjowNS43OTM0NDQxMTQgKzAyMDAKLUBAIC01NTYs NyArNTU2LDcgQEAgZXh0ZXJuIHZvaWQgcHV0X2ZyYW1lX3JlZ2lzdGVyIChzdHJ1Y3QgZgorLS0t IGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZnJhbWUuaAkyMDE0LTA2LTE2IDIzOjI3OjA1 LjE0NTc0NzAzOCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2ZyYW1lLmgJMjAx NC0wNi0xNiAyMzoyNzowNy44NjY3NDk2MDYgKzAyMDAKK0BAIC01ODMsNyArNTgzLDcgQEAgZXh0 ZXJuIHZvaWQgcHV0X2ZyYW1lX3JlZ2lzdGVyIChzdHJ1Y3QgZgogICAgIGNvbnRlbnRzIGFyZSBv cHRpbWl6ZWQgb3V0IG9yIHVuYXZhaWxhYmxlLCBzZXQgKk9QVElNSVpFRFAsCiAgICAgKlVOQVZB SUxBQkxFUCBhY2NvcmRpbmdseS4gICovCiAgZXh0ZXJuIGludCBnZXRfZnJhbWVfcmVnaXN0ZXJf Ynl0ZXMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHJlZ251bSwKQEAgLTIwODAsMTEg KzIwNzUsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZnJhbWUuaAogIAkJCQkgICAgIGdkYl9i eXRlICpteWFkZHIsCiAgCQkJCSAgICAgaW50ICpvcHRpbWl6ZWRwLCBpbnQgKnVuYXZhaWxhYmxl cCk7CiAgCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5jCitJbmRleDogZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzc5NDQzNTA1ICswMjAwCi0rKysg Z2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk0NDQ0MTE0ICsw MjAwCi1AQCAtMjEwOCw3ICsyMTA4LDcgQEAgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0 IHR5cGUgKnR5cAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwky MDE0LTA2LTE2IDIzOjI3OjA1LjE0Njc0NzAzOSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL2dkYnR5cGVzLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NjY3NDk2MDYgKzAyMDAKK0BA IC0yNDYzLDcgKzI0NjMsNyBAQCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAq dHlwCiAgICAgbGVhc3QgYXMgbG9uZyBhcyBPQkpGSUxFLiAgKi8KICAKICBzdHJ1Y3QgdHlwZSAq CkBAIC0yMDkzLDcgKzIwODgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5jCiAg CSAgIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogIHsKICAgIHN0 cnVjdCB0eXBlICp0eXBlOwotQEAgLTIzMzksOCArMjMzOSw4IEBAIGlzX3B1YmxpY19hbmNlc3Rv ciAoc3RydWN0IHR5cGUgKmJhc2UsIHMKK0BAIC0yNjk0LDggKzI2OTQsOCBAQCBpc19wdWJsaWNf YW5jZXN0b3IgKHN0cnVjdCB0eXBlICpiYXNlLCBzCiAgCiAgc3RhdGljIGludAogIGlzX3VuaXF1 ZV9hbmNlc3Rvcl93b3JrZXIgKHN0cnVjdCB0eXBlICpiYXNlLCBzdHJ1Y3QgdHlwZSAqZGNsYXNz LApAQCAtMjEwNCw3ICsyMDk5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvZ2RidHlwZXMuYwog IAkJCSAgIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBpbnQg aSwgY291bnQgPSAwOwotQEAgLTIzNTEsNyArMjM1MSw3IEBAIGlzX3VuaXF1ZV9hbmNlc3Rvcl93 b3JrZXIgKHN0cnVjdCB0eXBlICoKK0BAIC0yNzA2LDcgKzI3MDYsNyBAQCBpc191bmlxdWVfYW5j ZXN0b3Jfd29ya2VyIChzdHJ1Y3QgdHlwZSAqCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JB U0VDTEFTU0VTIChkY2xhc3MpICYmIGNvdW50IDwgMjsgKytpKQogICAgICB7CiAgICAgICAgc3Ry dWN0IHR5cGUgKml0ZXI7CkBAIC0yMTEzLDcgKzIxMDgsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9nZGJ0eXBlcy5jCiAgCiAgICAgICAgaXRlciA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfQkFTRUNM QVNTIChkY2xhc3MsIGkpKTsKICAKLUBAIC0yMzkyLDcgKzIzOTIsNyBAQCBpc191bmlxdWVfYW5j ZXN0b3Jfd29ya2VyIChzdHJ1Y3QgdHlwZSAqCitAQCAtMjc0Nyw3ICsyNzQ3LDcgQEAgaXNfdW5p cXVlX2FuY2VzdG9yX3dvcmtlciAoc3RydWN0IHR5cGUgKgogIGludAogIGlzX3VuaXF1ZV9hbmNl c3RvciAoc3RydWN0IHR5cGUgKmJhc2UsIHN0cnVjdCB2YWx1ZSAqdmFsKQogIHsKQEAgLTIxMjIs NyArMjExNyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2dkYnR5cGVzLmMKICAKICAgIHJldHVy biBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2VyIChiYXNlLCB2YWx1ZV90eXBlICh2YWwpLCAmb2Zm c2V0LAogIAkJCQkgICAgdmFsdWVfY29udGVudHNfZm9yX3ByaW50aW5nICh2YWwpLAotQEAgLTM1 MzAsNyArMzUzMCw3IEBAIHJlY3Vyc2l2ZV9kdW1wX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAor QEAgLTM4OTEsNyArMzg5MSw3IEBAIHJlY3Vyc2l2ZV9kdW1wX3R5cGUgKHN0cnVjdCB0eXBlICp0 eXBlLAogICAgICAgIGJyZWFrOwogICAgICB9CiAgICBwdXRzX2ZpbHRlcmVkICgiXG4iKTsKQEAg LTIxMzEsNyArMjEyNiw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2dkYnR5cGVzLmMKICAgIGlm IChUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpKQogICAgICB7CiAgICAgICAgcHJpbnRmaV9maWx0 ZXJlZCAoc3BhY2VzLCAib2JqZmlsZSAiKTsKLUBAIC0zNjU0LDggKzM2NTQsOCBAQCByZWN1cnNp dmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC00MDE1LDggKzQwMTUsOCBAQCBy ZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAJCQkgIGlkeCwgcGxvbmdl c3QgKFRZUEVfRklFTERfRU5VTVZBTCAodHlwZSwgaWR4KSkpOwogICAgICAgIGVsc2UKICAJcHJp bnRmaV9maWx0ZXJlZCAoc3BhY2VzICsgMiwKQEAgLTIxNDIsNyArMjEzNyw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2dkYnR5cGVzLmMKICAJCQkgIFRZUEVfRklFTERfQklUU0laRSAodHlwZSwg aWR4KSk7CiAgICAgICAgZ2RiX3ByaW50X2hvc3RfYWRkcmVzcyAoVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCBpZHgpLCBnZGJfc3Rkb3V0KTsKICAgICAgICBwcmludGZfZmlsdGVyZWQgKCIgbmFtZSAn JXMnICgiLAotQEAgLTQxNjksNyArNDE2OSw3IEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5 cGUgKnR5cGUpCitAQCAtNDM1Nyw3ICs0MzU3LDcgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3Qg dHlwZSAqdHlwZSkKICAKICBzdHJ1Y3QgdHlwZSAqCiAgYXJjaF90eXBlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKQEAgLTIxNTEsMzIgKzIxNDYsMzIgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv Z2RidHlwZXMuYwogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogIAotSW5kZXg6IGdkYi03Ljcu MS9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVz LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA1 LTEyIDIwOjIyOjA1LjUzMzQ0Mzk1OCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvZ2RidHlwZXMu aAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5NTQ0NDExNSArMDIwMAotQEAgLTYwNiw3ICs2MDYsNyBA QCBzdHJ1Y3QgbWFpbl90eXBlCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9nZGJ0 eXBlcy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTQ3NzQ3MDQwICswMjAwCisrKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2Nzc0OTYwNyAr MDIwMAorQEAgLTYwOCw3ICs2MDgsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCSAgIGdkYmFyY2hf Yml0c19iaWdfZW5kaWFuPTAgdGFyZ2V0cywgaXQgaXMgdGhlIGJpdCBvZmZzZXQgdG8KICAJICAg dGhlIExTQi4gICovCiAgCiAtCWludCBiaXRwb3M7CiArCUxPTkdFU1QgYml0cG9zOwogIAotIAkv KiBFbnVtIHZhbHVlLiAgKi8KKyAJLyogKiBFbnVtIHZhbHVlLiAgKi8KICAJTE9OR0VTVCBlbnVt dmFsOwotQEAgLTc5OCw3ICs3OTgsNyBAQCBzdHJ1Y3QgdHlwZQorQEAgLTgxMCw3ICs4MTAsNyBA QCBzdHJ1Y3QgdHlwZQogICAgICAgSE9TVF9DSEFSX0JJVC4gIEhvd2V2ZXIsIHRoaXMgd291bGQg c3RpbGwgZmFpbCB0byBhZGRyZXNzCiAgICAgICBtYWNoaW5lcyBiYXNlZCBvbiBhIHRlcm5hcnkg b3IgZGVjaW1hbCByZXByZXNlbnRhdGlvbi4gICovCiAgICAKIC0gIHVuc2lnbmVkIGxlbmd0aDsK ICsgIFVMT05HRVNUIGxlbmd0aDsKICAKLSAgIC8qIENvcmUgdHlwZSwgc2hhcmVkIGJ5IGEgZ3Jv dXAgb2YgcXVhbGlmaWVkIHR5cGVzLiAgKi8KLSAgIHN0cnVjdCBtYWluX3R5cGUgKm1haW5fdHlw ZTsKLUBAIC0xNTQ2LDExICsxNTQ2LDEyIEBAIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3R5 cGVfYXJjaCAoY28KLSBleHRlcm4gc3RydWN0IHR5cGUgKmdldF90YXJnZXRfdHlwZSAoc3RydWN0 IHR5cGUgKnR5cGUpOworICAgLyogKiBDb3JlIHR5cGUsIHNoYXJlZCBieSBhIGdyb3VwIG9mIHF1 YWxpZmllZCB0eXBlcy4gICovCisgCitAQCAtMTY0MCwxMSArMTY0MCwxMiBAQCBleHRlcm4gc3Ry dWN0IHR5cGUgKmdldF90YXJnZXRfdHlwZSAoc3RyCisgCisgLyogKiBIZWxwZXIgZnVuY3Rpb24g dG8gY29uc3RydWN0IG9iamZpbGUtb3duZWQgdHlwZXMuICAqLwogIAotIC8qIEhlbHBlciBmdW5j dGlvbiB0byBjb25zdHJ1Y3Qgb2JqZmlsZS1vd25lZCB0eXBlcy4gICovCiAtZXh0ZXJuIHN0cnVj dCB0eXBlICppbml0X3R5cGUgKGVudW0gdHlwZV9jb2RlLCBpbnQsIGludCwgY29uc3QgY2hhciAq LAogK2V4dGVybiBzdHJ1Y3QgdHlwZSAqaW5pdF90eXBlIChlbnVtIHR5cGVfY29kZSwgTE9OR0VT VCwgaW50LCBjb25zdCBjaGFyICosCiAgCQkJICAgICAgIHN0cnVjdCBvYmpmaWxlICopOwpAQCAt MjE4OCwxMCArMjE4MywxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9nZGJ0eXBlcy5oCiAgZXh0 ZXJuIHN0cnVjdCB0eXBlICphcmNoX2ludGVnZXJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKiwgaW50 LCBpbnQsIGNoYXIgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICphcmNoX2NoYXJhY3Rlcl90eXBl IChzdHJ1Y3QgZ2RiYXJjaCAqLCBpbnQsIGludCwgY2hhciAqKTsKICBleHRlcm4gc3RydWN0IHR5 cGUgKmFyY2hfYm9vbGVhbl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqLCBpbnQsIGludCwgY2hhciAq KTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL2dudS12Mi1hYmkuYworSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL2dudS12Mi1hYmkuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi9nbnUtdjItYWJpLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy43LjEvZ2RiL2dudS12Mi1hYmkuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5NTQ0NDEx NSArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ251LXYyLWFiaS5jCTIw MTQtMDYtMTYgMjM6Mjc6MDUuMTQ3NzQ3MDQwICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvZ251LXYyLWFiaS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY3NzQ5NjA3ICswMjAwCiBA QCAtODUsNyArODUsNyBAQCBnbnV2Ml9pc19vcGVyYXRvcl9uYW1lIChjb25zdCBjaGFyICpuYW1l CiAgICAgVFlQRSBpcyB0aGUgdHlwZSBpbiB3aGljaCBGIGlzIGxvY2F0ZWQuICAqLwogIHN0YXRp YyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMjI0MywxMCArMjIzOCwxMCBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi9nbnUtdjItYWJpLmMKICAJICAgIGdudXYyX2Jhc2VjbGFzc19vZmZzZXQgKHR5cGUsIGks IHZhbGFkZHIsCiAgCQkJCSAgICBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIHZhbCk7CiAgCi1J bmRleDogZ2RiLTcuNy4xL2dkYi9nbnUtdjMtYWJpLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQw NjEzL2dkYi9nbnUtdjMtYWJpLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIv Z251LXYzLWFiaS5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9nbnUtdjMtYWJpLmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTU0NDQxMTUgKzAy MDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dudS12My1hYmkuYwkyMDE0LTA2 LTE2IDIzOjI3OjA1LjE0ODc0NzA0MCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2dudS12My1hYmkuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2Nzc0OTYwNyArMDIwMAogQEAgLTEx Miw3ICsxMTIsNyBAQCBidWlsZF9nZGJfdnRhYmxlX3R5cGUgKHN0cnVjdCBnZGJhcmNoICphCiAg ewogICAgc3RydWN0IHR5cGUgKnQ7CkBAIC0yMzIxLDExICsyMzE2LDExIEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2dudS12My1hYmkuYwogICAgICAgIHN0cnVjdCB0eXBlICpiYXNldHlwZTsKICAK ICAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJUlRVQUwgKGRvbWFpbiwgaSkpCi1JbmRleDogZ2Ri LTcuNy4xL2dkYi9nby1sYW5nLmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nby1s YW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvZ28tbGFuZy5oCTIwMTQt MDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9nby1sYW5n LmgJMjAxNC0wNS0xMiAyMDoyMjowNS43OTU0NDQxMTUgKzAyMDAKLUBAIC04Myw3ICs4Myw3IEBA IGV4dGVybiB2b2lkIGdvX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICoKKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL2dvLWxhbmcuaAkyMDE0LTA2LTE2IDIzOjI3OjA1LjE0ODc0NzA0 MCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dvLWxhbmcuaAkyMDE0LTA2LTE2 IDIzOjI3OjA3Ljg2Nzc0OTYwNyArMDIwMAorQEAgLTg1LDcgKzg1LDcgQEAgZXh0ZXJuIHZvaWQg Z29fcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKgogIC8qIERlZmluZWQgaW4gZ28tdmFscHJpbnQu Yy4gICovCiAgCiAgZXh0ZXJuIHZvaWQgZ29fdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0yMzM0LDEwICsyMzI5LDEwIEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2dvLWxhbmcuaAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IHJlY3Vyc2UsCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgIGNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKTsKLUluZGV4OiBnZGItNy43LjEvZ2Ri L2dvLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nby12YWxwcmlu dC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2dvLXZhbHByaW50LmMJMjAx NC0wMS0wOCAxMDoyMzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL2dvLXZh bHByaW50LmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTU0NDQxMTUgKzAyMDAKKy0tLSBnZGItNy43 LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dvLXZhbHByaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4x NDg3NDcwNDAgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nby12YWxwcmludC5j CTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY4NzQ5NjA4ICswMjAwCiBAQCAtMzcsNyArMzcsNyBAQAog IAogIHN0YXRpYyB2b2lkCkBAIC0yMzYwLDEwICsyMzU1LDEwIEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL2dvLXZhbHByaW50LmMKICAJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMpCiAgewogICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7Ci1JbmRleDogZ2RiLTcu Ny4xL2dkYi9pMzg2LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaTM4Ni1u YXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9pMzg2LW5hdC5jCTIwMTQt MDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9pMzg2LW5h dC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk2NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4y MDE0MDYxMy5vcmlnL2dkYi9pMzg2LW5hdC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTQ4NzQ3MDQw ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvaTM4Ni1uYXQuYwkyMDE0LTA2LTE2 IDIzOjI3OjA3Ljg2ODc0OTYwOCArMDIwMAogQEAgLTI5MCw3ICsyOTAsNyBAQCBzdGF0aWMgaW50 IGkzODZfcmVtb3ZlX2FsaWduZWRfd2F0Y2hwb2luCiAgICAgdmFsaWQgdmFsdWUsIGJvbWJzIHRo cm91Z2ggaW50ZXJuYWxfZXJyb3IuICAqLwogIHN0YXRpYyBpbnQgaTM4Nl9oYW5kbGVfbm9uYWxp Z25lZF93YXRjaHBvaW50IChzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLApAQCAt MjM4NCwzMiArMjM3OSwzMiBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9pMzg2LW5hdC5jCiAgewog ICAgaW50IHJldHZhbCA9IDA7CiAgICBpbnQgbWF4X3dwX2xlbiA9IFRBUkdFVF9IQVNfRFJfTEVO XzggPyA4IDogNDsKLUBAIC02NjIsNyArNjYyLDcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsCi0gICAgYWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMgTEVO IGJ5dGVzLiAgKi8KK0BAIC02NjUsNyArNjY1LDcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAo c3RydWN0IHRhcmdldF9vcAogIAogIHN0YXRpYyBpbnQKLS1pMzg2X3JlZ2lvbl9va19mb3Jfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCi0raTM4Nl9yZWdpb25fb2tfZm9yX3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyBpMzg2X3JlZ2lvbl9va19m b3Jfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCistCQkJICAgICAgIENPUkVf QUREUiBhZGRyLCBpbnQgbGVuKQorKwkJCSAgICAgICBDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBs ZW4pCiAgewogICAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZQogICAgICA9IGkz ODZfZGVidWdfcmVnX3N0YXRlIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKLUluZGV4 OiBnZGItNy43LjEvZ2RiL2luZi10dHJhY2UuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2luZi10dHJhY2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9pbmYt dHRyYWNlLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43 LjEvZ2RiL2luZi10dHJhY2UuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5NjQ0NDExNiArMDIwMAot QEAgLTM2NSw3ICszNjUsNyBAQCBpbmZfdHRyYWNlX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50 IHR5Ci0gfQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvaW5mLXR0cmFjZS5jCTIw MTQtMDYtMTYgMjM6Mjc6MDUuMTQ5NzQ3MDQxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvaW5mLXR0cmFjZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY4NzQ5NjA4ICswMjAwCitA QCAtMzY5LDcgKzM2OSw3IEBAIGluZl90dHJhY2VfY2FuX3VzZV9od19icmVha3BvaW50IChzdHJ1 Y3QKICAKICBzdGF0aWMgaW50Ci0taW5mX3R0cmFjZV9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotK2luZl90dHJhY2VfcmVnaW9uX29rX2Zvcl9o d193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCisgaW5mX3R0cmFjZV9y ZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAorLQkJ CQkJQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCisrCQkJCQlDT1JFX0FERFIgYWRkciwgTE9OR0VT VCBsZW4pCiAgewogICAgcmV0dXJuIDE7CiAgfQotSW5kZXg6IGdkYi03LjcuMS9nZGIvanYtbGFu Zy5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDE0LTA1LTEyIDIwOjIyOjA1LjUz NDQ0Mzk1OCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvanYtbGFuZy5jCTIwMTQtMDUtMTIgMjA6 MjI6MDUuNzk2NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9q di1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNDk3NDcwNDEgKzAyMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9qdi1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44Njg3NDk2MDgg KzAyMDAKIEBAIC00MzYsNyArNDM2LDcgQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBn ZGJhcmNoICpnZAogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKTsgaSA8IG5m aWVsZHM7IGkrKykKICAgICAgewpAQCAtMjQyOCwxMSArMjQyMywxMSBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi9qdi1sYW5nLmMKICAJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICpvcHRpb25zKQogIHsKICAgIGNvbnN0IGNoYXIgKnR5cGVfZW5jb2RpbmcgPSBqYXZhX2dl dF9lbmNvZGluZyAodHlwZSk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9qdi1sYW5nLmgKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9qdi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjEub3JpZy9nZGIvanYtbGFuZy5oCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9qdi1sYW5nLmgJMjAxNC0wNS0xMiAyMDoyMjowNS43OTY0 NDQxMTYgKzAyMDAKLUBAIC00Miw4ICs0Miw4IEBAIHN0cnVjdCBidWlsdGluX2phdmFfdHlwZQor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvanYtbGFuZy5oCTIwMTQtMDYtMTYgMjM6 Mjc6MDUuMTQ5NzQ3MDQxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvanYtbGFu Zy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY4NzQ5NjA4ICswMjAwCitAQCAtNDMsOCArNDMsOCBA QCBzdHJ1Y3QgYnVpbHRpbl9qYXZhX3R5cGUKICAKICBleHRlcm4gY29uc3Qgc3RydWN0IGJ1aWx0 aW5famF2YV90eXBlICpidWlsdGluX2phdmFfdHlwZSAoc3RydWN0IGdkYmFyY2ggKik7CiAgCkBA IC0yNDQzLDExICsyNDM4LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2p2LWxhbmcuaAogIAkJ CSAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKiwKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKik7CiAgCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9qdi12YWxwcmludC5jCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvanYtdmFscHJpbnQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjcuMS5vcmlnL2dkYi9qdi12YWxwcmludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9qdi12YWxwcmludC5jCTIwMTQtMDUt MTIgMjA6MjI6MDUuNzk2NDQ0MTE2ICswMjAwCi1AQCAtMjY2LDcgKzI2Niw3IEBAIGphdmFfdmFs dWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHIKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEz Lm9yaWcvZ2RiL2p2LXZhbHByaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTA3NDcwNDIgKzAy MDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9qdi12YWxwcmludC5jCTIwMTQtMDYtMTYg MjM6Mjc6MDcuODY5NzQ5NjA5ICswMjAwCitAQCAtMjY3LDcgKzI2Nyw3IEBAIGphdmFfdmFsdWVf cHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHIKICAKICBzdGF0aWMgdm9pZAogIGphdmFfcHJp bnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCkBAIC0yNDU2LDcgKzI0NTEsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9qdi12YWxwcmlu dC5jCiAgCQkJIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogIAkJ CSBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNDU5LDcg KzQ1OSw3IEBAIGphdmFfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHkKK0BAIC00 NjAsNyArNDYwLDcgQEAgamF2YV9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eQog IAogIHZvaWQKICBqYXZhX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLApAQCAtMjQ2NSwxMCArMjQ2MCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9qdi12YWxwcmludC5jCiAgCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwK ICAJCWNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKm9wdGlvbnMpCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9sYW5ndWFnZS5jCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbGFuZ3VhZ2UuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjcuMS5vcmlnL2dkYi9sYW5ndWFnZS5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9sYW5ndWFnZS5jCTIwMTQtMDUtMTIgMjA6MjI6MDUu Nzk3NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9sYW5ndWFn ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUwNzQ3MDQyICswMjAwCisrKysgZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvbGFuZ3VhZ2UuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg2OTc0OTYwOSArMDIw MAogQEAgLTcyMiw3ICs3MjIsNyBAQCB1bmtfbGFuZ19wcmludGNoYXIgKGludCBjLCBzdHJ1Y3Qg dHlwZSAqCiAgCiAgc3RhdGljIHZvaWQKQEAgLTI0ODcsMTEgKzI0ODIsMTEgQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvbGFuZ3VhZ2UuYwogIAkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGlu dCByZWN1cnNlLAogIAkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgIGNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotSW5kZXg6IGdkYi03LjcuMS9n ZGIvbGFuZ3VhZ2UuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2xhbmd1YWdlLmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvbGFuZ3VhZ2UuaAkyMDE0LTA1LTA1 IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvbGFuZ3VhZ2UuaAky MDE0LTA1LTEyIDIwOjIyOjA1Ljc5NzQ0NDExNiArMDIwMAotQEAgLTE4Miw3ICsxODIsNyBAQCBz dHJ1Y3QgbGFuZ3VhZ2VfZGVmbgorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvbGFu Z3VhZ2UuaAkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1MDc0NzA0MiArMDIwMAorKysrIGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2xhbmd1YWdlLmgJMjAxNC0wNi0xNiAyMzoyNzowNy44Njk3NDk2MDkg KzAyMDAKK0BAIC0xODMsNyArMTgzLDcgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm4KICAJCQkgIHN0 cnVjdCB1aV9maWxlICogc3RyZWFtKTsKICAKICAgICAgdm9pZCAoKmxhX3ByaW50c3RyKSAoc3Ry dWN0IHVpX2ZpbGUgKiBzdHJlYW0sIHN0cnVjdCB0eXBlICplbHR0eXBlLApAQCAtMjUwMCw3ICsy NDk1LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvbGFuZ3VhZ2UuaAogIAkJCSBjb25zdCBjaGFy ICplbmNvZGluZywgaW50IGZvcmNlX2VsbGlwc2VzLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqKTsKICAKLUBAIC0yMjQsNyArMjI0LDcgQEAgc3RydWN0IGxhbmd1YWdl X2RlZm4KK0BAIC0yMjUsNyArMjI1LDcgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm4KICAKICAgICAg dm9pZCAoKmxhX3ZhbF9wcmludCkgKHN0cnVjdCB0eXBlICp0eXBlLAogIAkJCSAgY29uc3QgZ2Ri X2J5dGUgKmNvbnRlbnRzLApAQCAtMjUwOSwxMCArMjUwNCwxMCBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi9sYW5ndWFnZS5oCiAgCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJz ZSwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvbTItbGFu Zy5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbTItbGFuZy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL20yLWxhbmcuYwkyMDE0LTAxLTA4IDEwOjIzOjM2LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjcuMS9nZGIvbTItbGFuZy5jCTIwMTQtMDUtMTIgMjA6 MjI6MDUuNzk3NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9t Mi1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTE3NDcwNDMgKzAyMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9tMi1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44Njk3NDk2MDkg KzAyMDAKIEBAIC0xMDQsMTAgKzEwNCwxMCBAQCBtMl9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwKICAKICBzdGF0aWMgdm9pZApAQCAtMjU0NywxMSArMjU0MiwxMSBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi9tMi1sYW5nLmMKICAJICBpID0gcmVwMSAtIDE7CiAgCSAgdGhpbmdz X3ByaW50ZWQgKz0gb3B0aW9ucy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKICAJICBuZWVkX2Nv bW1hID0gMTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL20yLWxhbmcuaAorSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL20yLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi9tMi1sYW5nLmgJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy43LjEvZ2RiL20yLWxhbmcuaAkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5NzQ0NDExNiArMDIw MAotQEAgLTMzLDcgKzMzLDcgQEAgZXh0ZXJuIHZvaWQgbTJfcHJpbnRfdHlwZWRlZiAoc3RydWN0 IHR5cAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvbTItbGFuZy5oCTIwMTQtMDYt MTYgMjM6Mjc6MDUuMTUxNzQ3MDQzICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv bTItbGFuZy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY5NzQ5NjA5ICswMjAwCitAQCAtMzQsNyAr MzQsNyBAQCBleHRlcm4gdm9pZCBtMl9wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwCiAgZXh0ZXJu IGludCBtMl9pc19sb25nX3NldCAoc3RydWN0IHR5cGUgKnR5cGUpOwogIGV4dGVybiBpbnQgbTJf aXNfdW5ib3VuZGVkX2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgCkBAIC0yNTYwLDEwICsy NTU1LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL20yLWxhbmcuaAogIAkJCSAgc3RydWN0IHVp X2ZpbGUgKiwgaW50LAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUluZGV4OiBnZGItNy43LjEvZ2RiL20yLXR5 cGVwcmludC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbTItdHlwZXByaW50LmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvbTItdHlwZXByaW50LmMJMjAxNC0w MS0wOCAxMDoyMzozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL20yLXR5cGVw cmludC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk3NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi9tMi10eXBlcHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1 MTc0NzA0MyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL20yLXR5cGVwcmludC5j CTIwMTQtMDYtMTYgMjM6Mjc6MDcuODY5NzQ5NjA5ICswMjAwCiBAQCAtMjMzLDkgKzIzMywxMiBA QCBzdGF0aWMgdm9pZCBtMl9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCSAgbTJfcHJpbnRf Ym91bmRzIChUWVBFX0lOREVYX1RZUEUgKHR5cGUpLCBzdHJlYW0sIHNob3csIC0xLCAxKTsKICAJ fQpAQCAtMjU4MCwxMCArMjU3NSwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9tMi10eXBlcHJp bnQuYwogICAgICB9CiAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJdIE9GICIpOwogICAg bTJfcHJpbnRfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksICIiLCBzdHJlYW0sIHNob3cs IGxldmVsLCBmbGFncyk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9tMi12YWxwcmludC5jCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbTItdmFscHJpbnQuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjcuMS5vcmlnL2dkYi9tMi12YWxwcmludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9tMi12YWxwcmludC5jCTIwMTQtMDUtMTIg MjA6MjI6MDUuNzk3NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dk Yi9tMi12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUxNzQ3MDQzICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbTItdmFscHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3 Ljg3MDc0OTYxMCArMDIwMAogQEAgLTM1LDcgKzM1LDcgQEAgc3RhdGljIGludCBwcmludF91bnBh Y2tlZF9wb2ludGVyIChzdHJ1YwogIAkJCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKICBz dGF0aWMgdm9pZApAQCAtMjY0OSwxMCArMjY0NCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9t Mi12YWxwcmludC5jCiAgCiAgCQkgIC8qIExvb2sgZm9yIGEgTlVMTCBjaGFyLiAgKi8KICAJCSAg Zm9yICh0ZW1wX2xlbiA9IDA7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5jCitJbmRl eDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbWVtcmFuZ2UuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjcuMS5vcmlnL2dkYi9tZW1yYW5nZS5jCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5jCTIwMTQtMDUtMTIgMjA6MjI6MDUu Nzk3NDQ0MTE2ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9tZW1yYW5n ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUxNzQ3MDQzICswMjAwCisrKysgZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvbWVtcmFuZ2UuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MDc0OTYxMCArMDIw MAogQEAgLTIxLDggKzIxLDggQEAKICAjaW5jbHVkZSAibWVtcmFuZ2UuaCIKICAKQEAgLTI2NjQs MTAgKzI2NTksMTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvbWVtcmFuZ2UuYwogIHsKICAgIFVM T05HRVNUIGgsIGw7CiAgCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5oCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvbWVtcmFuZ2UuaAogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjcuMS5vcmlnL2dkYi9tZW1yYW5nZS5oCTIwMTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk4 NDQ0MTE3ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9tZW1yYW5nZS5o CTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUyNzQ3MDQ0ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvbWVtcmFuZ2UuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MDc0OTYxMCArMDIwMAog QEAgLTMwLDcgKzMwLDcgQEAgc3RydWN0IG1lbV9yYW5nZQogICAgQ09SRV9BRERSIHN0YXJ0Owog IApAQCAtMjY4OCwyMyArMjY4MywyMyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9tZW1yYW5nZS5o CiAgCiAgLyogU29ydCByYW5nZXMgYnkgc3RhcnQgYWRkcmVzcywgdGhlbiBjb2FsZXNjZSBjb250 aWd1b3VzIG9yCiAgICAgb3ZlcmxhcHBpbmcgcmFuZ2VzLiAgKi8KLUluZGV4OiBnZGItNy43LjEv Z2RiL21pcHMtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9taXBz LWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL21pcHMtbGlu dXgtbmF0LmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43 LjEvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAxNC0wNS0xMiAyMDoyMjowNS43OTg0NDQxMTcgKzAy MDAKLUBAIC01ODgsNyArNTg4LDcgQEAgbWlwc19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAo c3RydWN0Ci0gICAgdGhlIHNwZWNpZmllZCByZWdpb24gY2FuIGJlIGNvdmVyZWQgYnkgdGhlIHdh dGNoIHJlZ2lzdGVycy4gICovCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9taXBz LWxpbnV4LW5hdC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUyNzQ3MDQ0ICswMjAwCisrKysgZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvbWlwcy1saW51eC1uYXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3 Ljg3MDc0OTYxMCArMDIwMAorQEAgLTU5MCw3ICs1OTAsNyBAQCBtaXBzX2xpbnV4X3N0b3BwZWRf ZGF0YV9hZGRyZXNzIChzdHJ1Y3QKICAKICBzdGF0aWMgaW50Ci0tbWlwc19saW51eF9yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotK21pcHNfbGlu dXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBs ZW4pCisgbWlwc19saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJn ZXRfb3BzICpzZWxmLAorLQkJCQkJQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCisrCQkJCQlDT1JF X0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCiAgewogICAgc3RydWN0IHB0X3dhdGNoX3JlZ3MgZHVt bXlfcmVnczsKICAgIGludCBpOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvb3BlbmNsLWxhbmcuYwor SW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL29wZW5jbC1sYW5nLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy43LjEub3JpZy9nZGIvb3BlbmNsLWxhbmcuYwkyMDE0LTA1LTA1IDIzOjUxOjI0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvb3BlbmNsLWxhbmcuYwkyMDE0LTA1 LTEyIDIwOjIyOjA1Ljc5ODQ0NDExNyArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvb3BlbmNsLWxhbmcuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1Mjc0NzA0NCArMDIwMAor KysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL29wZW5jbC1sYW5nLmMJMjAxNC0wNi0xNiAyMzoy NzowNy44NzA3NDk2MTAgKzAyMDAKIEBAIC04MCwxMSArODAsMTEgQEAgYnVpbHRpbl9vcGVuY2xf dHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYgogIAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCkBAIC0y ODMxLDEwICsyODI2LDEwIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL29wZW5jbC1sYW5nLmMKICAK ICAgICAgICBpZiAoIXZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50ZXIgKGMtPnZhbCwKICAJCQkJ CSBjLT5pbmRpY2VzW2ldICogZWxzaXplICsgY29tcF9vZmZzZXQsCi1JbmRleDogZ2RiLTcuNy4x L2dkYi9wLWxhbmcuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3AtbGFuZy5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3AtbGFuZy5jCTIwMTQtMDUtMDUgMjM6 NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9wLWxhbmcuYwkyMDE0LTA1 LTEyIDIwOjIyOjA1Ljc5ODQ0NDExNyArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvcC1sYW5nLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTM3NDcwNDUgKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wLWxhbmcuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MTc0 OTYxMCArMDIwMAogQEAgLTk2LDggKzk2LDggQEAgcGFzY2FsX21haW5fbmFtZSAodm9pZCkKICAg ICBhcmUgbm90IG11bHRpcGxlIG9mIFRBUkdFVF9DSEFSX0JJVCB0aGVuIHRoZSByZXN1bHRzIGFy ZSB3cm9uZwogICAgIGJ1dCB0aGlzIGRvZXMgbm90IGhhcHBlbiBmb3IgRnJlZSBQYXNjYWwgbm9y IGZvciBHUEMuICAqLwpAQCAtMjg4MiwxMSArMjg3NywxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi9wLWxhbmcuYwogIAkgIGkgPSByZXAxIC0gMTsKICAJICB0aGluZ3NfcHJpbnRlZCArPSBvcHRp b25zLT5yZXBlYXRfY291bnRfdGhyZXNob2xkOwogIAkgIG5lZWRfY29tbWEgPSAxOwotSW5kZXg6 IGdkYi03LjcuMS9nZGIvcC1sYW5nLmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9w LWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9wLWxhbmcuaAkyMDE0 LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvcC1sYW5n LmgJMjAxNC0wNS0xMiAyMDoyMjowNS43OTg0NDQxMTcgKzAyMDAKLUBAIC0zNSw3ICszNSw3IEBA IGV4dGVybiB2b2lkIHBhc2NhbF9wcmludF90eXBlIChzdHJ1Y3QgdHkKKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL3AtbGFuZy5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTUzNzQ3MDQ1 ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcC1sYW5nLmgJMjAxNC0wNi0xNiAy MzoyNzowNy44NzE3NDk2MTAgKzAyMDAKK0BAIC0zNiw3ICszNiw3IEBAIGV4dGVybiB2b2lkIHBh c2NhbF9wcmludF90eXBlIChzdHJ1Y3QgdHkKICBleHRlcm4gdm9pZCBwYXNjYWxfcHJpbnRfdHlw ZWRlZiAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHN5bWJvbCAqLAogIAkJCQkgIHN0cnVjdCB1aV9m aWxlICopOwogIApAQCAtMjg5NSw3ICsyODkwLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcC1s YW5nLmgKICAJCQkgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwKICAJCQkg ICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKiwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqKTsKLUBAIC00OSwxMyArNDksMTMgQEAgZXh0ZXJuIHZvaWQgcGFzY2Fs X3R5cGVfcHJpbnRfbWV0aG9kX2FyZworQEAgLTUwLDEzICs1MCwxMyBAQCBleHRlcm4gdm9pZCBw YXNjYWxfdHlwZV9wcmludF9tZXRob2RfYXJnCiAgLyogVGhlc2UgYXJlIGluIHAtbGFuZy5jOiAq LwogIAogIGV4dGVybiBpbnQKQEAgLTI5MTEsNyArMjkwNiw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL3AtbGFuZy5oCiAgCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq KTsKICAKICBleHRlcm4gc3RydWN0IHR5cGUgKipjb25zdCAocGFzY2FsX2J1aWx0aW5fdHlwZXNb XSk7Ci1AQCAtNzEsNyArNzEsNyBAQCBleHRlcm4gdm9pZAorQEAgLTcyLDcgKzcyLDcgQEAgZXh0 ZXJuIHZvaWQKICAJCQkJICAgIGNvbnN0IHN0cnVjdCB0eXBlX3ByaW50X29wdGlvbnMgKik7CiAg CiAgZXh0ZXJuIHZvaWQgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0 eXBlICosIGNvbnN0IGdkYl9ieXRlICosCkBAIC0yOTIwLDEwICsyOTE1LDEwIEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL3AtbGFuZy5oCiAgCQkJCQkgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9m aWxlICosCiAgCQkJCQkgICAgICBpbnQsCiAgCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUg KiwKLUluZGV4OiBnZGItNy43LjEvZ2RiL3AtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3AtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi9wLXZhbHByaW50LmMJMjAxNC0wNS0xMiAyMDoyMjowNC43ODA0NDM1MDYgKzAyMDAKLSsr KyBnZGItNy43LjEvZ2RiL3AtdmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIyOjA1Ljc5OTQ0NDEx NyArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvcC12YWxwcmludC5jCTIw MTQtMDYtMTYgMjM6Mjc6MDUuMTUzNzQ3MDQ1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYx My9nZGIvcC12YWxwcmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODcxNzQ5NjEwICswMjAwCiBA QCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2Rl CiAgCiAgdm9pZApAQCAtMjk0NCw3ICsyOTM5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcC12 YWxwcmludC5jCiAgICBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlOwogICAgQ09SRV9BRERSIGFkZHI7 CiAgICBpbnQgd2FudF9zcGFjZSA9IDA7Ci1AQCAtNDk0LDcgKzQ5NCw3IEBAIHN0YXRpYyB2b2lk IHBhc2NhbF9vYmplY3RfcHJpbnRfc3RhdGljX2YKK0BAIC00NjgsNyArNDY4LDcgQEAgc3RhdGlj IHZvaWQgcGFzY2FsX29iamVjdF9wcmludF9zdGF0aWNfZgogIAkJCQkJICAgICAgY29uc3Qgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAgCiAgc3RhdGljIHZvaWQgcGFzY2FsX29iamVj dF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwKQEAgLTI5NTMs NyArMjk0OCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3AtdmFscHJpbnQuYwogIAkJCQkgICAg ICAgQ09SRV9BRERSLCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJCSAgICAgICBjb25zdCBz dHJ1Y3QgdmFsdWUgKiwKICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICosCi1AQCAtNTUzLDcgKzU1Myw3IEBAIHBhc2NhbF9vYmplY3RfaXNfdnRibF9tZW1iZXIg KHN0cnVjdCB0eXAKK0BAIC01MjcsNyArNTI3LDcgQEAgcGFzY2FsX29iamVjdF9pc192dGJsX21l bWJlciAoc3RydWN0IHR5cAogIAogIHZvaWQKICBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2Zp ZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjk2 Miw3ICsyOTU3LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcC12YWxwcmludC5jCiAgCQkJCSAg Q09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkJCSAgaW50IHJl Y3Vyc2UsCiAgCQkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNzI5LDcgKzcyOSw3 IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QKK0BAIC03MDMsNyAr NzAzLDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdAogIAogIHN0 YXRpYyB2b2lkCiAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjk3MSw3ICsyOTY2LDcgQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvcC12YWxwcmludC5jCiAgCQkJICAgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sCiAgCQkJICAgaW50IHJlY3Vyc2UsCiAgCQkJICAgY29uc3Qgc3Ry dWN0IHZhbHVlICp2YWwsCi1AQCAtNzUyLDExICs3NTIsMTEgQEAgcGFzY2FsX29iamVjdF9wcmlu dF92YWx1ZSAoc3RydWN0IHR5cGUgKgorQEAgLTcyNiwxMSArNzI2LDExIEBAIHBhc2NhbF9vYmpl Y3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICoKICAKICAgIGZvciAoaSA9IDA7IGkgPCBuX2Jh c2VjbGFzc2VzOyBpKyspCiAgICAgIHsKQEAgLTI5ODUsMjQgKzI5ODAsMjQgQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvcC12YWxwcmludC5jCiAgICAgICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNl cHRpb24gZXg7CiAgICAgICAgaW50IHNraXAgPSAwOwogIAotSW5kZXg6IGdkYi03LjcuMS9nZGIv cHBjLWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcHBjLWxpbnV4 LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQu YwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIv cHBjLWxpbnV4LW5hdC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuNzk5NDQ0MTE3ICswMjAwCi1AQCAt MTQ5Niw3ICsxNDk2LDcgQEAgcHBjX2xpbnV4X2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5 cAotIH0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwky MDE0LTA2LTE2IDIzOjI3OjA1LjE1NDc0NzA0NiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3MTc0OTYxMCArMDIw MAorQEAgLTE0OTgsNyArMTQ5OCw3IEBAIHBwY19saW51eF9jYW5fdXNlX2h3X2JyZWFrcG9pbnQg KHN0cnVjdAogIAogIHN0YXRpYyBpbnQKLS1wcGNfbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbikKLStwcGNfbGludXhfcmVnaW9uX29rX2Zv cl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCisgcHBjX2xpbnV4 X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCist CQkJCSAgICAgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgICAgIENPUkVfQURE UiBhZGRyLCBMT05HRVNUIGxlbikKICB7CiAgICAvKiBIYW5kbGUgc3ViLTgtYnl0ZSBxdWFudGl0 aWVzLiAgKi8KICAgIGlmIChsZW4gPD0gMCkKLUluZGV4OiBnZGItNy43LjEvZ2RiL3ByaW50Y21k LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wcmludGNtZC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3ByaW50Y21kLmMJMjAxNC0wNS0xMiAyMDoyMjowNS4w OTE0NDM2OTMgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3ByaW50Y21kLmMJMjAxNC0wNS0xMiAy MDoyMjowNS43OTk0NDQxMTcgKzAyMDAKLUBAIC0yODksNyArMjg5LDcgQEAgcHJpbnRfZm9ybWF0 dGVkIChzdHJ1Y3QgdmFsdWUgKnZhbCwgaW50CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmln L2dkYi9wcmludGNtZC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTU1NzQ3MDQ3ICswMjAwCisrKysg Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcHJpbnRjbWQuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3 Mjc0OTYxMiArMDIwMAorQEAgLTI4OCw3ICsyODgsNyBAQCBwcmludF9mb3JtYXR0ZWQgKHN0cnVj dCB2YWx1ZSAqdmFsLCBpbnQKICAJCSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogIHsKICAgIHN0 cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAodmFsKSk7CkBAIC0z MDExLDcgKzMwMDYsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9wcmludGNtZC5jCiAgCiAgICBp ZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKICAgICAgbmV4dF9hZGRyZXNzID0g dmFsdWVfYWRkcmVzcyAodmFsKSArIGxlbjsKLUBAIC0zNjcsNyArMzY3LDcgQEAgcHJpbnRfc2Nh bGFyX2Zvcm1hdHRlZCAoY29uc3Qgdm9pZCAqdmFsYQorQEAgLTM2Niw3ICszNjYsNyBAQCBwcmlu dF9zY2FsYXJfZm9ybWF0dGVkIChjb25zdCB2b2lkICp2YWxhCiAgewogICAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAgIExPTkdFU1QgdmFsX2xvbmcg PSAwOwpAQCAtMzAyMCw1OCArMzAxNSwzNiBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi9wcmludGNt ZC5jCiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAo Z2RiYXJjaCk7CiAgCiAgICAvKiBTdHJpbmcgcHJpbnRpbmcgc2hvdWxkIGdvIHRocm91Z2ggdmFs X3ByaW50X3NjYWxhcl9mb3JtYXR0ZWQuICAqLwotSW5kZXg6IGdkYi03LjcuMS9nZGIvcHJvY2Zz LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjcuMS5vcmlnL2dkYi9wcm9jZnMuYwkyMDE0LTA1LTA1IDIzOjUxOjI0LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvcHJvY2ZzLmMJMjAxNC0wNS0xMiAyMDoyMjow NS44MDA0NDQxMTggKzAyMDAKLUBAIC00OTI0LDcgKzQ5MjQsNyBAQCBwcm9jZnNfcmVtb3ZlX3dh dGNocG9pbnQgKENPUkVfQUREUiBhZGRyCi0gfQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvcHJvY2ZzLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTY3NDcwNDggKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wcm9jZnMuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3Mjc0 OTYxMiArMDIwMAorQEAgLTQ5MTYsNyArNDkxNiw3IEBAIHByb2Nmc19yZW1vdmVfd2F0Y2hwb2lu dCAoc3RydWN0IHRhcmdldF8KICAKICBzdGF0aWMgaW50Ci0tcHJvY2ZzX3JlZ2lvbl9va19mb3Jf aHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCi0rcHJvY2ZzX3JlZ2lvbl9v a19mb3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQorIHByb2Nm c19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAor LQkJCQkgICAgQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCisrCQkJCSAgICBDT1JFX0FERFIgYWRk ciwgTE9OR0VTVCBsZW4pCiAgewogICAgLyogVGhlIG1hbiBwYWdlIGZvciBwcm9jKDQpIG9uIFNv bGFyaXMgMi42IGFuZCB1cCBzYXlzIHRoYXQgdGhlCiAgICAgICBzeXN0ZW0gY2FuIHN1cHBvcnQg InRob3VzYW5kcyIgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludHMsIGJ1dCBnaXZlcwotSW5kZXg6IGdk Yi03LjcuMS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjEub3JpZy9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxNC0wNS0wNSAyMzo1MToy NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmlu dC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODAwNDQ0MTE4ICswMjAwCi1AQCAtNjg4LDcgKzY4OCw3 IEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKLSAKLSBpbnQKLSBh cHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKLS0JCQkgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNz LAotKwkJCSAgTE9OR0VTVCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotIAkJ CSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi0gCQkJICBjb25zdCBzdHJ1 Y3QgdmFsdWUgKnZhbCwKLSAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpv cHRpb25zLAotQEAgLTg0Myw3ICs4NDMsNyBAQCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5 T2JqZWN0ICpzZWxmCi0gCi0gaW50Ci0gYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0tCQkJICBpbnQgZW1iZWRkZWRf b2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKLSsJCQkgIExPTkdFU1QgZW1iZWRkZWRfb2Zmc2V0 LCBDT1JFX0FERFIgYWRkcmVzcywKLSAJCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBy ZWN1cnNlLAotIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi0gCQkJICBjb25zdCBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKLUluZGV4OiBnZGItNy43LjEvZ2RiL3B5 dGhvbi9weXRob24uaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3B5dGhvbi9weS1w cmV0dHlwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3B5dGhvbi9w eXRob24uaAkyMDE0LTA1LTEyIDIwOjIyOjA0Ljc4MzQ0MzUwOCArMDIwMAotKysrIGdkYi03Ljcu MS9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuODAxNDQ0MTE5ICswMjAw Ci1AQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKmZp bGUsIGMKLSB2b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOwot IAotIGludCBhcHBseV92YWxfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKLS0JCQkgICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JF X0FERFIgYWRkcmVzcywKLSsJCQkgICAgICBMT05HRVNUIGVtYmVkZGVkX29mZnNldCwgQ09SRV9B RERSIGFkZHJlc3MsCi0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vy c2UsCi0gCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi0gCQkJICAgICAgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1JbmRleDogZ2RiLTcuNy4xL2dk Yi9yZWdjYWNoZS5jCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9weXRob24vcHkt cHJldHR5cHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1Njc0NzA0OCArMDIwMAorKysrIGdk Yi03LjcuOTAuMjAxNDA2MTMvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTQtMDYtMTYg MjM6Mjc6MDcuODczNzQ5NjEyICswMjAwCitAQCAtNjg3LDcgKzY4Nyw3IEBAIHByaW50X2NoaWxk cmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKKyBlbnVtIGV4dF9sYW5nX3JjCisgZ2RicHlf YXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChjb25zdCBzdHJ1Y3QgZXh0ZW5zaW9uX2xhbmd1YWdl X2RlZm4gKmV4dGxhbmcsCisgCQkJCXN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKKy0JCQkJaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJlc3MsCisr CQkJCUxPTkdFU1QgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKKyAJCQkJc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisgCQkJCWNvbnN0IHN0cnVjdCB2YWx1 ZSAqdmFsLAorIAkJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywK K0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9yZWdjYWNoZS5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3JlZ2NhY2hlLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3JlZ2NhY2hlLmMJMjAxNC0wNS0xMiAyMDoy MjowNS44MDE0NDQxMTkgKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3Jl Z2NhY2hlLmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNTc3NDcwNDkgKzAyMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9yZWdjYWNoZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODczNzQ5NjEy ICswMjAwCiBAQCAtODk5LDcgKzg5OSw3IEBAIHR5cGVkZWYgdm9pZCAocmVnY2FjaGVfd3JpdGVf ZnR5cGUpIChzdHIKICAKICBzdGF0aWMgZW51bSByZWdpc3Rlcl9zdGF0dXMKQEAgLTMxMTcsMTAg KzMwOTAsMTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcmVnY2FjaGUuYwogIHsKICAgIHN0cnVj dCByZWdjYWNoZV9kZXNjciAqZGVzY3IgPSByZWdjYWNoZS0+ZGVzY3I7CiAgCi1JbmRleDogZ2Ri LTcuNy4xL2dkYi9yZWdjYWNoZS5oCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcmVn Y2FjaGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9yZWdjYWNoZS5oCTIw MTQtMDEtMDggMTA6MjM6MzYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNy4xL2dkYi9yZWdj YWNoZS5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuODAxNDQ0MTE5ICswMjAwCistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi9yZWdjYWNoZS5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTU3NzQ3 MDQ5ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcmVnY2FjaGUuaAkyMDE0LTA2 LTE2IDIzOjI3OjA3Ljg3Mzc0OTYxMiArMDIwMAogQEAgLTg5LDkgKzg5LDkgQEAgZXh0ZXJuIHZv aWQgcmVnY2FjaGVfcmF3X3dyaXRlX3Vuc2lnbmVkCiAgCiAgZXh0ZXJuIGVudW0gcmVnaXN0ZXJf c3RhdHVzCkBAIC0zMTQ4LDM3ICszMTIxLDM3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3JlZ2Nh Y2hlLmgKICAKICAvKiBTcGVjaWFsIHJvdXRpbmVzIHRvIHJlYWQvd3JpdGUgdGhlIFBDLiAgKi8K ICAKLUluZGV4OiBnZGItNy43LjEvZ2RiL3JlbW90ZS5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvcmVtb3RlLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvcmVt b3RlLmMJMjAxNC0wNS0xMiAyMDoyMjowNS4xMTA0NDM3MDQgKzAyMDAKLSsrKyBnZGItNy43LjEv Z2RiL3JlbW90ZS5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODAzNDQ0MTIwICswMjAwCi1AQCAtODQx Myw3ICs4NDEzLDcgQEAgaW50IHJlbW90ZV9od193YXRjaHBvaW50X2xlbmd0aF9saW1pdCA9Ci0g aW50IHJlbW90ZV9od19icmVha3BvaW50X2xpbWl0ID0gLTE7CistLS0gZ2RiLTcuNy45MC4yMDE0 MDYxMy5vcmlnL2dkYi9yZW1vdGUuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE1OTc0NzA1MSArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3JlbW90ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6 MDcuODc1NzQ5NjE0ICswMjAwCitAQCAtODI3Miw3ICs4MjcyLDcgQEAgaW50IHJlbW90ZV9od19i cmVha3BvaW50X2xpbWl0ID0gLTE7CiAgCiAgc3RhdGljIGludAotLXJlbW90ZV9yZWdpb25fb2tf Zm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQotK3JlbW90ZV9yZWdp b25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyBy ZW1vdGVfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqc2Vs ZiwKKy0JCQkJICAgIENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQorKwkJCQkgICAgQ09SRV9BRERS IGFkZHIsIExPTkdFU1QgbGVuKQogIHsKICAgIGlmIChyZW1vdGVfaHdfd2F0Y2hwb2ludF9sZW5n dGhfbGltaXQgPT0gMCkKICAgICAgcmV0dXJuIDA7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9zcHUt bXVsdGlhcmNoLmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9zcHUtbXVsdGlhcmNo LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvc3B1LW11bHRpYXJjaC5jCTIw MTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9zcHUt bXVsdGlhcmNoLmMJMjAxNC0wNS0xMiAyMDoyMjowNS44MDM0NDQxMjAgKzAyMDAKLUBAIC0xMTgs NyArMTE4LDcgQEAgc3B1X3RocmVhZF9hcmNoaXRlY3R1cmUgKHN0cnVjdCB0YXJnZXRfbwotIAor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTQtMDYt MTYgMjM6Mjc6MDUuMTU5NzQ3MDUxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv c3B1LW11bHRpYXJjaC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc1NzQ5NjE0ICswMjAwCitAQCAt MTE5LDcgKzExOSw3IEBAIHNwdV90aHJlYWRfYXJjaGl0ZWN0dXJlIChzdHJ1Y3QgdGFyZ2V0X28K ICAvKiBPdmVycmlkZSB0aGUgdG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IHJvdXRpbmUu ICAqLwogIHN0YXRpYyBpbnQKLS1zcHVfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgaW50IGxlbikKLStzcHVfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCisgc3B1X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hw b2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCistCQkJCSBDT1JFX0FERFIgYWRkciwgaW50 IGxlbikKKysJCQkJIENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKICB7CiAgICBzdHJ1Y3Qg dGFyZ2V0X29wcyAqb3BzX2JlbmVhdGggPSBmaW5kX3RhcmdldF9iZW5lYXRoICgmc3B1X29wcyk7 CiAgICB3aGlsZSAob3BzX2JlbmVhdGggJiYgIW9wc19iZW5lYXRoLT50b19yZWdpb25fb2tfZm9y X2h3X3dhdGNocG9pbnQpCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9zdGFjay5jCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvc3RhY2suYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5v cmlnL2dkYi9zdGFjay5jCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzgzNDQzNTA4ICswMjAwCi0rKysg Z2RiLTcuNy4xL2dkYi9zdGFjay5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODAzNDQ0MTIwICswMjAw Ci1AQCAtMTgwLDcgKzE4MCw3IEBAIHByaW50X3N0YWNrX2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5m byAqZnIKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3N0YWNrLmMJMjAxNC0wNi0x NiAyMzoyNzowNS4xNjA3NDcwNTIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9z dGFjay5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc1NzQ5NjE0ICswMjAwCitAQCAtMTc5LDcgKzE3 OSw3IEBAIHByaW50X3N0YWNrX2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnIKICAgICBhcmd1 bWVudCAobm90IGp1c3QgdGhlIGZpcnN0IG5hbWVsZXNzIGFyZ3VtZW50KS4gICovCiAgCiAgc3Rh dGljIHZvaWQKQEAgLTMxODcsNyArMzE2MCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3N0YWNr LmMKICAJCQkgICBpbnQgZmlyc3QsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgewogICAgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwotQEAgLTUyNiw3 ICs1MjYsNyBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzCitAQCAt NTI1LDcgKzUyNSw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMK ICAgIC8qIE9mZnNldCBvZiBuZXh0IHN0YWNrIGFyZ3VtZW50IGJleW9uZCB0aGUgb25lIHdlIGhh dmUgc2VlbiB0aGF0IGlzCiAgICAgICBhdCB0aGUgaGlnaGVzdCBvZmZzZXQsIG9yIC0xIGlmIHdl IGhhdmVuJ3QgY29tZSB0byBhIHN0YWNrCiAgICAgICBhcmd1bWVudCB5ZXQuICAqLwpAQCAtMzE5 Niw3ICszMTY5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvc3RhY2suYwogICAgLyogTnVtYmVy IG9mIGludHMgb2YgYXJndW1lbnRzIHRoYXQgd2UgaGF2ZSBwcmludGVkIHNvIGZhci4gICovCiAg ICBpbnQgYXJnc19wcmludGVkID0gMDsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci1A QCAtNTY0LDggKzU2NCw4IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMs IHMKK0BAIC01NTksOCArNTU5LDggQEAgcHJpbnRfZnJhbWVfYXJncyAoc3RydWN0IHN5bWJvbCAq ZnVuYywgcwogIAkgICAgY2FzZSBMT0NfQVJHOgogIAkgICAgY2FzZSBMT0NfUkVGX0FSRzoKICAJ ICAgICAgewpAQCAtMzIwNyw3ICszMTgwLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvc3RhY2su YwogIAogIAkJLyogQ29tcHV0ZSBhZGRyZXNzIG9mIG5leHQgYXJndW1lbnQgYnkgYWRkaW5nIHRo ZSBzaXplIG9mCiAgCQkgICB0aGlzIGFyZ3VtZW50IGFuZCByb3VuZGluZyB0byBhbiBpbnQgYm91 bmRhcnkuICAqLwotQEAgLTcwMCw3ICs3MDAsNyBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qg c3ltYm9sICpmdW5jLCBzCitAQCAtNjk1LDcgKzY5NSw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0 cnVjdCBzeW1ib2wgKmZ1bmMsIHMKICAgICAgIGVub3VnaCBhYm91dCB0aGUgc3RhY2sgdG8gZmlu ZCB0aGVtLiAgKi8KICAgIGlmIChudW0gIT0gLTEpCiAgICAgIHsKQEAgLTMyMTYsMTEgKzMxODks MTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvc3RhY2suYwogIAogICAgICAgIGlmIChoaWdoZXN0 X29mZnNldCA9PSAtMSkKICAJc3RhcnQgPSBnZGJhcmNoX2ZyYW1lX2FyZ3Nfc2tpcCAoZ2V0X2Zy YW1lX2FyY2ggKGZyYW1lKSk7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi9zeW1taXNjLmMKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9zeW1taXNjLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjEub3JpZy9nZGIvc3ltbWlzYy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuMjEyNDQzNzY1ICsw MjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9zeW1taXNjLmMJMjAxNC0wNS0xMiAyMDoyMjowNS44MDQ0 NDQxMjAgKzAyMDAKLUBAIC01MjksMTEgKzUyOSwxMSBAQCBwcmludF9zeW1ib2wgKHZvaWQgKmFy Z3MpCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9zeW1taXNjLmMJMjAxNC0wNi0x NiAyMzoyNzowNS4xNjA3NDcwNTIgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9z eW1taXNjLmMJMjAxNC0wNi0xNiAyMzoyNzowNy44NzU3NDk2MTQgKzAyMDAKK0BAIC01MzAsMTEg KzUzMCwxMSBAQCBwcmludF9zeW1ib2wgKHZvaWQgKmFyZ3MpCiAgCiAgCWNhc2UgTE9DX0NPTlNU X0JZVEVTOgogIAkgIHsKQEAgLTMyMzUsNjQgKzMyMDgsNjQgQEAgSW5kZXg6IGdkYi03LjcuMS9n ZGIvc3ltbWlzYy5jCiAgCSAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9MRU5HVEggKHR5cGUpOyBp KyspCiAgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKG91dGZpbGUsICIgJTAyeCIsCiAgCQkJCSh1 bnNpZ25lZCkgU1lNQk9MX1ZBTFVFX0JZVEVTIChzeW1ib2wpW2ldKTsKLUluZGV4OiBnZGItNy43 LjEvZ2RiL3RhcmdldC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGFyZ2V0LmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvdGFyZ2V0LmMJMjAxNC0wNS0wNSAy Mzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3RhcmdldC5jCTIwMTQt MDUtMTIgMjA6MjI6MDUuODA0NDQ0MTIwICswMjAwCi1AQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMg dm9pZCBkZWZhdWx0X3Rlcm1pbmFsX2luZm8gKGNvbnN0Ci0gc3RhdGljIGludCBkZWZhdWx0X3dh dGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICosCistLS0gZ2Ri LTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi90YXJnZXQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE2 MTc0NzA1MyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3RhcmdldC5jCTIwMTQt MDYtMTYgMjM6Mjc6MDcuODc2NzQ5NjE1ICswMjAwCitAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMg aW50IGRlZmF1bHRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpCiAgCQkJCQkJIENPUkVfQUREUiwgQ09S RV9BRERSLCBpbnQpOwogIAotLXN0YXRpYyBpbnQgZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dh dGNocG9pbnQgKENPUkVfQUREUiwgaW50KTsKLStzdGF0aWMgaW50IGRlZmF1bHRfcmVnaW9uX29r X2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIsIExPTkdFU1QpOworIHN0YXRpYyBpbnQgZGVm YXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICosCist CQkJCQkJQ09SRV9BRERSLCBpbnQpOworKwkJCQkJCUNPUkVfQUREUiwgTE9OR0VTVCk7CiAgCi0g c3RhdGljIHZvaWQgdGNvbXBsYWluICh2b2lkKSBBVFRSSUJVVEVfTk9SRVRVUk47Cisgc3RhdGlj IHZvaWQgZGVmYXVsdF9yY21kIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBjaGFyICosIHN0cnVjdCB1 aV9maWxlICopOwogIAotQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX3N0 b3BwZWRfZGF0YV9hZGRyZXNzCi0gc3RhdGljIGludCBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJf d2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAorQEAgLTE1Myw3ICsxNTMsNyBAQCBz dGF0aWMgaW50IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoCiAgCQkJCQkJICBDT1JFX0FE RFIsIENPUkVfQUREUiwgaW50KTsKICAKLS1zdGF0aWMgaW50IGRlYnVnX3RvX3JlZ2lvbl9va19m b3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQpOwotK3N0YXRpYyBpbnQgZGVidWdfdG9f cmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIsIExPTkdFU1QpOwotIAotIHN0 YXRpYyBpbnQgZGVidWdfdG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FE RFIsIGludCwgaW50LAotIAkJCQkJCSAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLUBAIC0zNTkw LDcgKzM1OTAsNyBAQCB0YXJnZXRfZmlsZWlvX3JlYWRfc3RyYWxsb2MgKGNvbnN0IGNoYXIKKyBz dGF0aWMgaW50IGRlYnVnX3RvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRh cmdldF9vcHMgKnNlbGYsCistCQkJCQkJIENPUkVfQUREUiwgaW50KTsKKysJCQkJCQkgQ09SRV9B RERSLCBMT05HRVNUKTsKICAKKyBzdGF0aWMgaW50IGRlYnVnX3RvX2Nhbl9hY2NlbF93YXRjaHBv aW50X2NvbmRpdGlvbiAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCisgCQkJCQkJICAgIENPUkVf QUREUiwgaW50LCBpbnQsCitAQCAtMjk1MSw3ICsyOTUxLDcgQEAgdGFyZ2V0X2ZpbGVpb19yZWFk X3N0cmFsbG9jIChjb25zdCBjaGFyCiAgCiAgc3RhdGljIGludAotLWRlZmF1bHRfcmVnaW9uX29r X2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbikKLStkZWZhdWx0X3Jl Z2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQor IGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAq c2VsZiwKKy0JCQkJICAgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgICBDT1JF X0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCiAgewogICAgcmV0dXJuIChsZW4gPD0gZ2RiYXJjaF9w dHJfYml0ICh0YXJnZXRfZ2RiYXJjaCAoKSkgLyBUQVJHRVRfQ0hBUl9CSVQpOwogIH0KLUBAIC00 NTU3LDcgKzQ1NTcsNyBAQCBkZWJ1Z190b19jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKGludCB0eXBl Ci0gfQorQEAgLTM2NjQsNyArMzY2NCw3IEBAIGRlYnVnX3RvX2Nhbl91c2VfaHdfYnJlYWtwb2lu dCAoc3RydWN0IHQKICAKICBzdGF0aWMgaW50Ci0tZGVidWdfdG9fcmVnaW9uX29rX2Zvcl9od193 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbikKLStkZWJ1Z190b19yZWdpb25fb2tf Zm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbikKKyBkZWJ1Z190 b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLAor LQkJCQkgICAgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgICAgQ09SRV9BRERS IGFkZHIsIExPTkdFU1QgbGVuKQogIHsKICAgIENPUkVfQUREUiByZXR2YWw7CiAgCi1JbmRleDog Z2RiLTcuNy4xL2dkYi90YXJnZXQuaAorSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rh cmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3RhcmdldC5oCTIwMTQt MDUtMTIgMjA6MjI6MDUuNTc0NDQzOTgyICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi90YXJnZXQu aAkyMDE0LTA1LTEyIDIwOjIyOjA1LjgwNTQ0NDEyMSArMDIwMAotQEAgLTQyOCw3ICs0MjgsNyBA QCBzdHJ1Y3QgdGFyZ2V0X29wcwotIAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIv dGFyZ2V0LmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xNjI3NDcwNTQgKzAyMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi90YXJnZXQuaAkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg3Njc0OTYxNSAr MDIwMAorQEAgLTQ3NSw3ICs0NzUsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogICAgICAvKiBEb2N1 bWVudGF0aW9uIG9mIHRoaXMgcm91dGluZSBpcyBwcm92aWRlZCB3aXRoIHRoZSBjb3JyZXNwb25k aW5nCiAgICAgICAgIHRhcmdldF8qIG1hY3JvLiAgKi8KLS0gICAgaW50ICgqdG9fcmVnaW9uX29r X2Zvcl9od193YXRjaHBvaW50KSAoQ09SRV9BRERSLCBpbnQpOwotKyAgICBpbnQgKCp0b19yZWdp b25fb2tfZm9yX2h3X3dhdGNocG9pbnQpIChDT1JFX0FERFIsIExPTkdFU1QpOworICAgICBpbnQg KCp0b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQpIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAor LQkJCQkJICAgQ09SRV9BRERSLCBpbnQpCisrCQkJCQkgICBDT1JFX0FERFIsIExPTkdFU1QpCisg ICAgICAgVEFSR0VUX0RFRkFVTFRfRlVOQyAoZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNo cG9pbnQpOwogIAotICAgICBpbnQgKCp0b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24p IChDT1JFX0FERFIsIGludCwgaW50LAotIAkJCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKik7 Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi90cmFjZXBvaW50LmMKKyAgICAgaW50ICgqdG9fY2FuX2Fj Y2VsX3dhdGNocG9pbnRfY29uZGl0aW9uKSAoc3RydWN0IHRhcmdldF9vcHMgKiwKK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi90cmFjZXBvaW50LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny43LjEub3JpZy9nZGIvdHJhY2Vwb2ludC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi90cmFjZXBvaW50LmMJMjAxNC0wNS0xMiAyMDoyMjow NS44MDY0NDQxMjIgKzAyMDAKLUBAIC05MzcsMTMgKzkzNywxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0 cnVjdCBjb2xsZWN0aW9uX2xpc3QgKmNvCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dk Yi90cmFjZXBvaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNS4xNjM3NDcwNTUgKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi90cmFjZXBvaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44 Nzc3NDk2MTYgKzAyMDAKK0BAIC05MzAsMTMgKzkzMCwxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0cnVj dCBjb2xsZWN0aW9uX2xpc3QgKmNvCiAgc3RhdGljIHZvaWQKICBhZGRfbWVtcmFuZ2UgKHN0cnVj dCBjb2xsZWN0aW9uX2xpc3QgKm1lbXJhbmdlcywgCiAgCSAgICAgIGludCB0eXBlLCBiZmRfc2ln bmVkX3ZtYSBiYXNlLApAQCAtMzMwOCw3ICszMjgxLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv dHJhY2Vwb2ludC5jCiAgICAgIH0KICAKICAgIC8qIHR5cGU6IG1lbXJhbmdlX2Fic29sdXRlID09 IG1lbW9yeSwgb3RoZXIgbiA9PSBiYXNlcmVnICovCi1AQCAtOTczLDcgKzk3Myw3IEBAIGNvbGxl Y3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BAIC05NjYsNyArOTY2LDcgQEAg Y29sbGVjdF9zeW1ib2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3QgKgogIAkJQ09SRV9BRERSIHNj b3BlLAogIAkJaW50IHRyYWNlX3N0cmluZykKICB7CkBAIC0zMzE3LDcgKzMyOTAsNyBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi90cmFjZXBvaW50LmMKICAgIHVuc2lnbmVkIGludCByZWc7CiAgICBi ZmRfc2lnbmVkX3ZtYSBvZmZzZXQ7CiAgICBpbnQgdHJlYXRfYXNfZXhwciA9IDA7Ci1AQCAtOTk3 LDggKzk5Nyw4IEBAIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BA IC05OTAsOCArOTkwLDggQEAgY29sbGVjdF9zeW1ib2wgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3Qg KgogIAkgIGNoYXIgdG1wWzQwXTsKICAKICAJICBzcHJpbnRmX3ZtYSAodG1wLCBvZmZzZXQpOwpA QCAtMzMyOCw3ICszMzAxLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdHJhY2Vwb2ludC5jCiAg CQkJICAgdG1wIC8qIGFkZHJlc3MgKi8pOwogIAl9CiAgICAgICAgLyogQSBzdHJ1Y3QgbWF5IGJl IGEgQysrIGNsYXNzIHdpdGggc3RhdGljIGZpZWxkcywgZ28gdG8gZ2VuZXJhbAotQEAgLTEwMzAs OCArMTAzMCw4IEBAIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BA IC0xMDIzLDggKzEwMjMsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlz dCAqCiAgICAgICAgb2Zmc2V0ID0gZnJhbWVfb2Zmc2V0ICsgU1lNQk9MX1ZBTFVFIChzeW0pOwog ICAgICAgIGlmIChpbmZvX3ZlcmJvc2UpCiAgCXsKQEAgLTMzMzksNyArMzMxMiw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL3RyYWNlcG9pbnQuYwogIAkgIHByaW50Zl92bWEgKG9mZnNldCk7CiAg CSAgcHJpbnRmX2ZpbHRlcmVkICgiIGZyb20gZnJhbWUgcHRyIHJlZyAlZFxuIiwgcmVnKTsKICAJ fQotQEAgLTEwNDIsOCArMTA0Miw4IEBAIGNvbGxlY3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlv bl9saXN0ICoKK0BAIC0xMDM1LDggKzEwMzUsOCBAQCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNv bGxlY3Rpb25fbGlzdCAqCiAgICAgICAgb2Zmc2V0ID0gMDsKICAgICAgICBpZiAoaW5mb192ZXJi b3NlKQogIAl7CkBAIC0zMzUwLDcgKzMzMjMsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90cmFj ZXBvaW50LmMKICAJICBwcmludGZfdm1hIChvZmZzZXQpOwogIAkgIHByaW50Zl9maWx0ZXJlZCAo IiBmcm9tIHJlZyAlZFxuIiwgcmVnKTsKICAJfQotQEAgLTEwNTQsOCArMTA1NCw4IEBAIGNvbGxl Y3Rfc3ltYm9sIChzdHJ1Y3QgY29sbGVjdGlvbl9saXN0ICoKK0BAIC0xMDQ3LDggKzEwNDcsOCBA QCBjb2xsZWN0X3N5bWJvbCAoc3RydWN0IGNvbGxlY3Rpb25fbGlzdCAqCiAgICAgICAgb2Zmc2V0 ID0gZnJhbWVfb2Zmc2V0ICsgU1lNQk9MX1ZBTFVFIChzeW0pOwogICAgICAgIGlmIChpbmZvX3Zl cmJvc2UpCiAgCXsKQEAgLTMzNjEsNyArMzMzNCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Ry YWNlcG9pbnQuYwogIAkgIHByaW50Zl92bWEgKG9mZnNldCk7CiAgCSAgcHJpbnRmX2ZpbHRlcmVk ICgiIGZyb20gZnJhbWUgcHRyIHJlZyAlZFxuIiwgcmVnKTsKICAJfQotQEAgLTI3MTMsNyArMjcx Myw4IEBAIHNjb3BlX2luZm8gKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0yNzA5LDcg KzI3MDksOCBAQCBzY29wZV9pbmZvIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBjb25z dCBjaGFyICpzeW1uYW1lOwogICAgY2hhciAqc2F2ZV9hcmdzID0gYXJnczsKICAgIHN0cnVjdCBi bG9ja19pdGVyYXRvciBpdGVyOwpAQCAtMzM3MSw3ICszMzQ0LDcgQEAgSW5kZXg6IGdkYi03Ljcu MS9nZGIvdHJhY2Vwb2ludC5jCiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKICAgIGludCBy ZWdubzsKICAKLUBAIC0yODQ5LDggKzI4NTAsMTEgQEAgc2NvcGVfaW5mbyAoY2hhciAqYXJncywg aW50IGZyb21fdHR5KQorQEAgLTI4NDUsOCArMjg0NiwxMSBAQCBzY29wZV9pbmZvIChjaGFyICph cmdzLCBpbnQgZnJvbV90dHkpCiAgCQl9CiAgCSAgICB9CiAgCSAgaWYgKFNZTUJPTF9UWVBFIChz eW0pKQpAQCAtMzM4NSwxMSArMzM1OCwxMSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90cmFjZXBv aW50LmMKICAJfQogICAgICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2spKQogIAlicmVhazsK LUluZGV4OiBnZGItNy43LjEvZ2RiL3R5cGVwcmludC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvdHlwZXByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIv dHlwZXByaW50LmMJMjAxNC0wNS0xMiAyMDoyMjowNC43OTA0NDM1MTIgKzAyMDAKLSsrKyBnZGIt Ny43LjEvZ2RiL3R5cGVwcmludC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODA2NDQ0MTIyICswMjAw Ci1AQCAtNDA5LDcgKzQwOSw3IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCist LS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi90eXBlcHJpbnQuYwkyMDE0LTA2LTE2IDIz OjI3OjA1LjE2NDc0NzA1NiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3R5cGVw cmludC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc3NzQ5NjE2ICswMjAwCitAQCAtNDA1LDcgKzQw NSw3IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCiAgICBzdHJ1Y3QgdHlwZSAq cmVhbF90eXBlID0gTlVMTDsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwogICAgaW50IGZ1bGwgPSAw OwpAQCAtMzM5OCwzMSArMzM3MSwzOSBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90eXBlcHJpbnQu YwogICAgaW50IHVzaW5nX2VuYyA9IDA7CiAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBv cHRzOwogICAgc3RydWN0IHR5cGVfcHJpbnRfb3B0aW9ucyBmbGFncyA9IGRlZmF1bHRfcHR5cGVf ZmxhZ3M7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi92YWxhcml0aC5jCitJbmRleDogZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmln L2dkYi92YWxhcml0aC5jCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzkxNDQzNTEzICswMjAwCi0rKysg Z2RiLTcuNy4xL2dkYi92YWxhcml0aC5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODA2NDQ0MTIyICsw MjAwCi1AQCAtMTkwLDE1ICsxOTAsMTUgQEAgdmFsdWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFsdWUg KmFycmF5LCBMTworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFsYXJpdGguYwky MDE0LTA2LTE2IDIzOjI3OjA1LjE2NDc0NzA1NiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2 MTMvZ2RiL3ZhbGFyaXRoLmMJMjAxNC0wNi0xNiAyMzoyNzozOS4xMjQ3NzkyNjUgKzAyMDAKK0BA IC0xOTAsMTIgKzE5MCwxMyBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAqYXJyYXks IExPCiAgICAgdG8gZG91YmxlcywgYnV0IG5vIGxvbmdlciBkb2VzLiAgKi8KICAKICBzdHJ1Y3Qg dmFsdWUgKgogLXZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwg TE9OR0VTVCBpbmRleCwgaW50IGxvd2VyYm91bmQpCi0rdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVl IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBMT05HRVNUIGxvd2VyYm91bmQp CisrdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNU IGluZGV4LAorKwkJCSAgTE9OR0VTVCBsb3dlcmJvdW5kKQogIHsKICAgIHN0cnVjdCB0eXBlICph cnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKICAgIHN0cnVj dCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5 X3R5cGUpKTsKIC0gIHVuc2lnbmVkIGludCBlbHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlw ZSk7Ci0tICB1bnNpZ25lZCBpbnQgZWx0X3N0cmlkZQorLSAgdW5zaWduZWQgaW50IGVsdF9vZmZz OwogKyAgVUxPTkdFU1QgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwotKyAgVUxP TkdFU1QgZWx0X3N0cmlkZQotICAgICA9IChUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZ UEUgKGFycmF5X3R5cGUpKSA9PSAwCi0gICAgICAgID8gZWx0X3NpemUgOiBUWVBFX0JZVEVfU1RS SURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5X3R5cGUpKSk7Ci0tICB1bnNpZ25lZCBpbnQgZWx0 X29mZnMgPSBlbHRfc3RyaWRlICogbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3VuZCk7 Ci0rICBVTE9OR0VTVCBlbHRfb2ZmcyA9IGVsdF9zdHJpZGUgKiBsb25nZXN0X3RvX2ludCAoaW5k ZXggLSBsb3dlcmJvdW5kKTsKKysgIFVMT05HRVNUIGVsdF9vZmZzOworICAgTE9OR0VTVCBlbHRf c3RyaWRlID0gVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheV90eXBlKSk7 CiAgICBzdHJ1Y3QgdmFsdWUgKnY7CiAgCi0gICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8ICgh VFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKGFycmF5X3R5cGUpCi1AQCAtNjM1 LDcgKzYzNSw3IEBAIHZhbHVlX2NvbmNhdCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QKK0BA IC0yMDQsNyArMjA1LDkgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUg KgorICAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCisgICAgIGVycm9yIChf KCJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIpKTsKKyAKKy0g IGVsdF9vZmZzID0gbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3VuZCk7CisrICBpZiAo aW5kZXggPCBsb3dlcmJvdW5kKQorKyAgICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVu dCIpKTsKKysgIGVsdF9vZmZzID0gaW5kZXggLSBsb3dlcmJvdW5kOworIAorICAgaWYgKGVsdF9z dHJpZGUgPiAwKQorICAgICBlbHRfb2ZmcyAqPSBlbHRfc3RyaWRlOworQEAgLTY2Miw3ICs2NjUs NyBAQCB2YWx1ZV9jb25jYXQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0CiAgICBzdHJ1Y3Qg dmFsdWUgKmludmFsMTsKICAgIHN0cnVjdCB2YWx1ZSAqaW52YWwyOwogICAgc3RydWN0IHZhbHVl ICpvdXR2YWwgPSBOVUxMOwpAQCAtMzQzMSw3ICszNDEyLDcgQEAgSW5kZXg6IGdkYi03LjcuMS9n ZGIvdmFsYXJpdGguYwogICAgaW50IGNvdW50LCBpZHg7CiAgICBjaGFyICpwdHI7CiAgICBjaGFy IGluY2hhcjsKLUBAIC0xNDg4LDcgKzE0ODgsNyBAQCB2YWx1ZV9iaW5vcCAoc3RydWN0IHZhbHVl ICphcmcxLCBzdHJ1Y3QKK0BAIC0xNTE1LDcgKzE1MTgsNyBAQCB2YWx1ZV9iaW5vcCAoc3RydWN0 IHZhbHVlICphcmcxLCBzdHJ1Y3QKICBpbnQKICB2YWx1ZV9sb2dpY2FsX25vdCAoc3RydWN0IHZh bHVlICphcmcxKQogIHsKQEAgLTM0NDAsNyArMzQyMSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L3ZhbGFyaXRoLmMKICAgIGNvbnN0IGdkYl9ieXRlICpwOwogICAgc3RydWN0IHR5cGUgKnR5cGUx OwogIAotQEAgLTE1MTksMTEgKzE1MTksMTEgQEAgdmFsdWVfbG9naWNhbF9ub3QgKHN0cnVjdCB2 YWx1ZSAqYXJnMSkKK0BAIC0xNTQ2LDExICsxNTQ5LDExIEBAIHZhbHVlX2xvZ2ljYWxfbm90IChz dHJ1Y3QgdmFsdWUgKmFyZzEpCiAgc3RhdGljIGludAogIHZhbHVlX3N0cmNtcCAoc3RydWN0IHZh bHVlICphcmcxLCBzdHJ1Y3QgdmFsdWUgKmFyZzIpCiAgewpAQCAtMzQ1NSwxMCArMzQzNiwxMCBA QCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxhcml0aC5jCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwg bGVuOyBpKyspCiAgICAgIHsKLUluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsb3BzLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 LjEub3JpZy9nZGIvdmFsb3BzLmMJMjAxNC0wNS0xMiAyMDoyMjowNS40NDQ0NDM5MDQgKzAyMDAK LSsrKyBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCTIwMTQtMDUtMTIgMjA6MjI6MDUuODA3NDQ0MTIy ICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi92YWxvcHMuYwkyMDE0LTA2 LTE2IDIzOjI3OjA1LjE2Nzc0NzA1OCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L3ZhbG9wcy5jCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc5NzQ5NjE4ICswMjAwCiBAQCAtNTEsMTEg KzUxLDExIEBAIHN0YXRpYyBpbnQgdHlwZWNtcCAoaW50IHN0YXRpY3AsIGludCB2YXIKICAJCSAg ICBzdHJ1Y3QgZmllbGQgdDFbXSwgc3RydWN0IHZhbHVlICp0MltdKTsKICAKQEAgLTM0NzksMjEg KzM0NjAsMjIgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsb3BzLmMKICBzdGF0aWMgc3RydWN0 IHZhbHVlICp2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICosCiAt CQkJCQkJICAgICBpbnQsIHN0cnVjdCB0eXBlICosCiArCQkJCQkJICAgICBMT05HRVNULCBzdHJ1 Y3QgdHlwZSAqLAotIAkJCQkJCSAgICAgY2hhciAqLAorIAkJCQkJCSAgICAgY29uc3QgY2hhciAq LAogIAkJCQkJCSAgICAgc3RydWN0IHR5cGUgKiwKICAJCQkJCQkgICAgIGludCwgZW51bSBub3Np ZGUpOwotQEAgLTEwMCw4ICsxMDAsOCBAQCBzdGF0aWMgQ09SRV9BRERSIGFsbG9jYXRlX3NwYWNl X2luX2luZmVyCitAQCAtMTAwLDkgKzEwMCw5IEBAIHN0YXRpYyBDT1JFX0FERFIgYWxsb2NhdGVf c3BhY2VfaW5faW5mZXIKICBzdGF0aWMgc3RydWN0IHZhbHVlICpjYXN0X2ludG9fY29tcGxleCAo c3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogIAotIHN0YXRpYyBzdHJ1Y3QgZm5fZmll bGQgKmZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKiwgY29uc3QgY2hhciAqLAotLQkJ CQkJICBpbnQsIHN0cnVjdCB0eXBlICosIGludCAqLAotLQkJCQkJICBzdHJ1Y3QgdHlwZSAqKiwg aW50ICopOwotKwkJCQkJICBMT05HRVNULCBzdHJ1Y3QgdHlwZSAqLCBpbnQgKiwKLSsJCQkJCSAg c3RydWN0IHR5cGUgKiosIExPTkdFU1QgKik7Cisgc3RhdGljIHZvaWQgZmluZF9tZXRob2RfbGlz dCAoc3RydWN0IHZhbHVlICoqLCBjb25zdCBjaGFyICosCistCQkJICAgICAgaW50LCBzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgZm5fZmllbGQgKiosIGludCAqLAorKwkJCSAgICAgIExPTkdFU1QsIHN0 cnVjdCB0eXBlICosIHN0cnVjdCBmbl9maWVsZCAqKiwgaW50ICosCisgCQkJICAgICAgVkVDICh4 bWV0aG9kX3dvcmtlcl9wdHIpICoqLAorLQkJCSAgICAgIHN0cnVjdCB0eXBlICoqLCBpbnQgKik7 CisrCQkJICAgICAgc3RydWN0IHR5cGUgKiosIExPTkdFU1QgKik7CiAgCiAgdm9pZCBfaW5pdGlh bGl6ZV92YWxvcHMgKHZvaWQpOwogIAotQEAgLTE4Niw3ICsxODYsNyBAQCBmaW5kX2Z1bmN0aW9u X2luX2luZmVyaW9yIChjb25zdCBjaGFyICpuCitAQCAtMTg3LDcgKzE4Nyw3IEBAIGZpbmRfZnVu Y3Rpb25faW5faW5mZXJpb3IgKGNvbnN0IGNoYXIgKm4KICAgICBzcGFjZS4gICovCiAgCiAgc3Ry dWN0IHZhbHVlICoKQEAgLTM1MDIsNyArMzQ4NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Zh bG9wcy5jCiAgewogICAgc3RydWN0IG9iamZpbGUgKm9iamY7CiAgICBzdHJ1Y3QgdmFsdWUgKnZh bCA9IGZpbmRfZnVuY3Rpb25faW5faW5mZXJpb3IgKCJtYWxsb2MiLCAmb2JqZik7Ci1AQCAtMjU5 LDcgKzI1OSw4IEBAIHZhbHVlX2Nhc3Rfc3RydWN0cyAoc3RydWN0IHR5cGUgKnR5cGUsIHMKK0BA IC0yNjAsNyArMjYwLDggQEAgdmFsdWVfY2FzdF9zdHJ1Y3RzIChzdHJ1Y3QgdHlwZSAqdHlwZSwg cwogICAgaWYgKFRZUEVfTkFNRSAodDIpICE9IE5VTEwpCiAgICAgIHsKICAgICAgICAvKiBUcnkg ZG93bmNhc3RpbmcgdXNpbmcgdGhlIHJ1bi10aW1lIHR5cGUgb2YgdGhlIHZhbHVlLiAgKi8KQEAg LTM1MTIsNyArMzQ5NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgICAgICAg c3RydWN0IHR5cGUgKnJlYWxfdHlwZTsKICAKICAgICAgICByZWFsX3R5cGUgPSB2YWx1ZV9ydHRp X3R5cGUgKHYyLCAmZnVsbCwgJnRvcCwgJnVzaW5nX2VuYyk7Ci1AQCAtMzk4LDEyICszOTksMTIg QEAgdmFsdWVfY2FzdCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB2YQorQEAgLTQwMCwxMiAr NDAxLDEyIEBAIHZhbHVlX2Nhc3QgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmEKICAgIGlm IChjb2RlMSA9PSBUWVBFX0NPREVfQVJSQVkpCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdHlwZSAq ZWxlbWVudF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7CkBAIC0zNTI3LDcgKzM1MDks NyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAkgIExPTkdFU1QgbG93X2JvdW5k LCBoaWdoX2JvdW5kLCBuZXdfbGVuZ3RoOwogIAogIAkgIGlmIChnZXRfZGlzY3JldGVfYm91bmRz IChyYW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQotQEAgLTYzNyw3ICs2 MzgsNyBAQCB2YWx1ZV9yZWludGVycHJldF9jYXN0IChzdHJ1Y3QgdHlwZSAqdHlwCitAQCAtNjM5 LDcgKzY0MCw3IEBAIHZhbHVlX3JlaW50ZXJwcmV0X2Nhc3QgKHN0cnVjdCB0eXBlICp0eXAKICBz dGF0aWMgaW50CiAgZHluYW1pY19jYXN0X2NoZWNrXzEgKHN0cnVjdCB0eXBlICpkZXNpcmVkX3R5 cGUsCiAgCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTM1MzYsNyArMzUxOCw3 IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCQkgICAgICBDT1JFX0FERFIgYWRk cmVzcywKICAJCSAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgICAgc3RydWN0IHR5cGUg KnNlYXJjaF90eXBlLAotQEAgLTY0OSw4ICs2NTAsOCBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMSAo c3RydWN0IHR5cGUgKmRlc2lyCitAQCAtNjUxLDggKzY1Miw4IEBAIGR5bmFtaWNfY2FzdF9jaGVj a18xIChzdHJ1Y3QgdHlwZSAqZGVzaXIKICAKICAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05fQkFT RUNMQVNTRVMgKHNlYXJjaF90eXBlKSAmJiByZXN1bHRfY291bnQgPCAyOyArK2kpCiAgICAgIHsK QEAgLTM1NDcsNyArMzUyOSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCiAg ICAgICAgaWYgKGNsYXNzX3R5cGVzX3NhbWVfcCAoZGVzaXJlZF90eXBlLCBUWVBFX0JBU0VDTEFT UyAoc2VhcmNoX3R5cGUsIGkpKSkKICAJewotQEAgLTY4NCw3ICs2ODUsNyBAQCBkeW5hbWljX2Nh c3RfY2hlY2tfMSAoc3RydWN0IHR5cGUgKmRlc2lyCitAQCAtNjg2LDcgKzY4Nyw3IEBAIGR5bmFt aWNfY2FzdF9jaGVja18xIChzdHJ1Y3QgdHlwZSAqZGVzaXIKICBzdGF0aWMgaW50CiAgZHluYW1p Y19jYXN0X2NoZWNrXzIgKHN0cnVjdCB0eXBlICpkZXNpcmVkX3R5cGUsCiAgCQkgICAgICBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTM1NTYsNyArMzUzOCw3IEBAIEluZGV4OiBnZGItNy43 LjEvZ2RiL3ZhbG9wcy5jCiAgCQkgICAgICBDT1JFX0FERFIgYWRkcmVzcywKICAJCSAgICAgIHN0 cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgICAgc3RydWN0IHR5cGUgKnNlYXJjaF90eXBlLAotQEAg LTY5NCw3ICs2OTUsNyBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAoc3RydWN0IHR5cGUgKmRlc2ly CitAQCAtNjk2LDcgKzY5Nyw3IEBAIGR5bmFtaWNfY2FzdF9jaGVja18yIChzdHJ1Y3QgdHlwZSAq ZGVzaXIKICAKICAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05fQkFTRUNMQVNTRVMgKHNlYXJjaF90 eXBlKSAmJiByZXN1bHRfY291bnQgPCAyOyArK2kpCiAgICAgIHsKQEAgLTM1NjUsNyArMzU0Nyw3 IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKCEgQkFTRVRZ UEVfVklBX1BVQkxJQyAoc2VhcmNoX3R5cGUsIGkpKQogIAljb250aW51ZTsKLUBAIC03MjUsNyAr NzI2LDggQEAgZHluYW1pY19jYXN0X2NoZWNrXzIgKHN0cnVjdCB0eXBlICpkZXNpcgorQEAgLTcy Nyw3ICs3MjgsOCBAQCBkeW5hbWljX2Nhc3RfY2hlY2tfMiAoc3RydWN0IHR5cGUgKmRlc2lyCiAg c3RydWN0IHZhbHVlICoKICB2YWx1ZV9keW5hbWljX2Nhc3QgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgdmFsdWUgKmFyZykKICB7CkBAIC0zNTc1LDcgKzM1NTcsNyBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi92YWxvcHMuYwogICAgc3RydWN0IHR5cGUgKnJlc29sdmVkX3R5cGUgPSBjaGVja190 eXBlZGVmICh0eXBlKTsKICAgIHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKGFyZykpOwogICAgc3RydWN0IHR5cGUgKmNsYXNzX3R5cGUsICpydHRpX3R5 cGU7Ci1AQCAtMTAwNSw3ICsxMDA3LDcgQEAgdmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5 cGUsIENPUkVfQQorQEAgLTk1OCw3ICs5NjAsNyBAQCB2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlw ZSAqdHlwZSwgQ09SRV9BCiAgfQogIAogIHZvaWQKQEAgLTM1ODQsNyArMzU2Niw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCQkgICBpbnQgc3RhY2ssIENPUkVfQUREUiBtZW1h ZGRyLAogIAkJICAgZ2RiX2J5dGUgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKICB7Ci1AQCAtMTE1 NSw3ICsxMTU3LDcgQEAgdmFsdWVfYXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1Ywor QEAgLTEwNTgsNyArMTA2MCw3IEBAIHZhbHVlX2Fzc2lnbiAoc3RydWN0IHZhbHVlICp0b3ZhbCwg c3RydWMKICAgICAgICB7CiAgCWNvbnN0IGdkYl9ieXRlICpkZXN0X2J1ZmZlcjsKICAJQ09SRV9B RERSIGNoYW5nZWRfYWRkcjsKQEAgLTM1OTMsNyArMzU3NSw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL3ZhbG9wcy5jCiAgICAgICAgICBnZGJfYnl0ZSBidWZmZXJbc2l6ZW9mIChMT05HRVNUKV07 CiAgCiAgCWlmICh2YWx1ZV9iaXRzaXplICh0b3ZhbCkpCi1AQCAtMTIzNCw3ICsxMjM2LDcgQEAg dmFsdWVfYXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBzdHJ1YworQEAgLTExMzcsNyArMTEz OSw3IEBAIHZhbHVlX2Fzc2lnbiAoc3RydWN0IHZhbHVlICp0b3ZhbCwgc3RydWMKICAJICAgIGlm ICh2YWx1ZV9iaXRzaXplICh0b3ZhbCkpCiAgCSAgICAgIHsKICAJCXN0cnVjdCB2YWx1ZSAqcGFy ZW50ID0gdmFsdWVfcGFyZW50ICh0b3ZhbCk7CkBAIC0zNjAyLDcgKzM1ODQsNyBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAkJaW50IGNoYW5nZWRfbGVuOwogIAkJZ2RiX2J5dGUg YnVmZmVyW3NpemVvZiAoTE9OR0VTVCldOwogIAkJaW50IG9wdGltLCB1bmF2YWlsOwotQEAgLTE3 MTUsNyArMTcxNyw3IEBAIHZhbHVlX2FycmF5IChpbnQgbG93Ym91bmQsIGludCBoaWdoYm91bmQK K0BAIC0xNjA1LDcgKzE2MDcsNyBAQCB2YWx1ZV9hcnJheSAoaW50IGxvd2JvdW5kLCBpbnQgaGln aGJvdW5kCiAgewogICAgaW50IG5lbGVtOwogICAgaW50IGlkeDsKQEAgLTM2MTEsNyArMzU5Myw3 IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgICBzdHJ1Y3QgdmFsdWUgKnZhbDsK ICAgIHN0cnVjdCB0eXBlICphcnJheXR5cGU7CiAgCi1AQCAtMTg5MCw3ICsxODkyLDcgQEAgdHlw ZWNtcCAoaW50IHN0YXRpY3AsIGludCB2YXJhcmdzLCBpbnQgbgorQEAgLTE3ODAsNyArMTc4Miw3 IEBAIHR5cGVjbXAgKGludCBzdGF0aWNwLCBpbnQgdmFyYXJncywgaW50IG4KICAKICBzdGF0aWMg dm9pZAogIHVwZGF0ZV9zZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXN1bHRfcHRyLCBz dHJ1Y3QgdmFsdWUgKnYsCkBAIC0zNjIwLDcgKzM2MDIsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi92YWxvcHMuYwogIAkJICAgICAgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHR5cGUgKnR5cGUp CiAgewogICAgaWYgKHYgIT0gTlVMTCkKLUBAIC0xOTE0LDEwICsxOTE2LDEwIEBAIHVwZGF0ZV9z ZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXMKK0BAIC0xODA0LDEwICsxODA2LDEwIEBA IHVwZGF0ZV9zZWFyY2hfcmVzdWx0IChzdHJ1Y3QgdmFsdWUgKipyZXMKICAgICBsb29rdXAgaXMg YW1iaWd1b3VzLiAgKi8KICAKICBzdGF0aWMgdm9pZApAQCAtMzYzMyw3ICszNjE1LDcgQEAgSW5k ZXg6IGdkYi03LjcuMS9nZGIvdmFsb3BzLmMKICAJCQlzdHJ1Y3QgdHlwZSAqb3V0ZXJtb3N0X3R5 cGUpCiAgewogICAgaW50IGk7Ci1AQCAtMTk2Niw3ICsxOTY4LDcgQEAgZG9fc2VhcmNoX3N0cnVj dF9maWVsZCAoY29uc3QgY2hhciAqbmFtZQorQEAgLTE4NTYsNyArMTg1OCw3IEBAIGRvX3NlYXJj aF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUKICAJCSAgIDx2YXJpYW50IGZpZWxkPi4g ICovCiAgCiAgCQlzdHJ1Y3QgdmFsdWUgKnYgPSBOVUxMOwpAQCAtMzY0Miw3ICszNjI0LDcgQEAg SW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsb3BzLmMKICAKICAJCS8qIFRoaXMgaXMgcHJldHR5IGdy b3NzLiAgSW4gRysrLCB0aGUgb2Zmc2V0IGluIGFuCiAgCQkgICBhbm9ueW1vdXMgdW5pb24gaXMg cmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKLUBAIC0yMDA1LDcgKzIwMDcsNyBAQCBk b19zZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lCitAQCAtMTg5NSw3ICsxODk3 LDcgQEAgZG9fc2VhcmNoX3N0cnVjdF9maWVsZCAoY29uc3QgY2hhciAqbmFtZQogIAkJCSAgICAg JiYgKHN0cmNtcF9pdyAobmFtZSwgCiAgCQkJCQkgICAgVFlQRV9CQVNFQ0xBU1NfTkFNRSAodHlw ZSwgCiAgCQkJCQkJCQkgaSkpID09IDApKTsKQEAgLTM2NTEsNyArMzYzMyw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJQV9WSVJUVUFM ICh0eXBlLCBpKSkKICAJewotQEAgLTIwNzgsMTEgKzIwODAsMTEgQEAgZG9fc2VhcmNoX3N0cnVj dF9maWVsZCAoY29uc3QgY2hhciAqbmFtZQorQEAgLTE5NjgsMTEgKzE5NzAsMTEgQEAgZG9fc2Vh cmNoX3N0cnVjdF9maWVsZCAoY29uc3QgY2hhciAqbmFtZQogICAgIGZpZWxkcywgbG9vayBmb3Ig YSBiYXNlY2xhc3MgbmFtZWQgTkFNRS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBA IC0zNjY1LDcgKzM2NDcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAogICAg ZG9fc2VhcmNoX3N0cnVjdF9maWVsZCAobmFtZSwgYXJnMSwgb2Zmc2V0LCB0eXBlLCBsb29raW5n X2Zvcl9iYXNlY2xhc3MsCiAgCQkJICAmcmVzdWx0LCAmYm9mZnNldCwgdHlwZSk7Ci1AQCAtMjA5 OSw3ICsyMTAxLDcgQEAgc2VhcmNoX3N0cnVjdF9maWVsZCAoY29uc3QgY2hhciAqbmFtZSwgcwor QEAgLTE5ODksNyArMTk5MSw3IEBAIHNlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5h bWUsIHMKICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKICBzZWFyY2hfc3RydWN0X21ldGhvZCAo Y29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHZhbHVlICoqYXJnMXAsCkBAIC0zNjc0LDcgKzM2NTYs NyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAkJICAgICAgaW50ICpzdGF0aWNf bWVtZnVuY3AsIHN0cnVjdCB0eXBlICp0eXBlKQogIHsKICAgIGludCBpOwotQEAgLTIxNjMsOCAr MjE2NSw4IEBAIHNlYXJjaF9zdHJ1Y3RfbWV0aG9kIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTIw NTMsOCArMjA1NSw4IEBAIHNlYXJjaF9zdHJ1Y3RfbWV0aG9kIChjb25zdCBjaGFyICpuYW1lLAog IAogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKSAtIDE7IGkgPj0gMDsgaS0t KQogICAgICB7CkBAIC0zNjg1LDE5ICszNjY3LDIxIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Zh bG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJQV9WSVJUVUFMICh0eXBlLCBpKSkKICAJ ewotQEAgLTIzOTEsOCArMjM5Myw4IEBAIHZhbHVlX3N0cnVjdF9lbHRfYml0cG9zIChzdHJ1Y3Qg dmFsdWUgKioKK0BAIC0yMjg5LDEwICsyMjkxLDEwIEBAIHZhbHVlX3N0cnVjdF9lbHRfYml0cG9z IChzdHJ1Y3QgdmFsdWUgKioKICAKLSBzdGF0aWMgc3RydWN0IGZuX2ZpZWxkICoKKyBzdGF0aWMg dm9pZAogIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIg Km1ldGhvZCwKLS0JCSAgaW50IG9mZnNldCwgc3RydWN0IHR5cGUgKnR5cGUsIGludCAqbnVtX2Zu cywKKy0JCSAgaW50IG9mZnNldCwgc3RydWN0IHR5cGUgKnR5cGUsCisrCQkgIExPTkdFU1Qgb2Zm c2V0LCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAJCSAgc3RydWN0IGZuX2ZpZWxkICoqZm5fbGlzdCwg aW50ICpudW1fZm5zLAorIAkJICBWRUMgKHhtZXRob2Rfd29ya2VyX3B0cikgKip4bV93b3JrZXJf dmVjLAogLQkJICBzdHJ1Y3QgdHlwZSAqKmJhc2V0eXBlLCBpbnQgKmJvZmZzZXQpCi0rCQkgIExP TkdFU1Qgb2Zmc2V0LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50ICpudW1fZm5zLAogKwkJICBzdHJ1 Y3QgdHlwZSAqKmJhc2V0eXBlLCBMT05HRVNUICpib2Zmc2V0KQogIHsKICAgIGludCBpOwotICAg c3RydWN0IGZuX2ZpZWxkICpmOwotQEAgLTI0MjUsNyArMjQyNyw3IEBAIGZpbmRfbWV0aG9kX2xp c3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGMKLSAgIC8qIE5vdCBmb3VuZCBpbiBvYmplY3QsIGNo ZWNrIGluIGJhc2Ugc3Vib2JqZWN0cy4gICovCisgICBzdHJ1Y3QgZm5fZmllbGQgKmYgPSBOVUxM OworQEAgLTIzNDksNyArMjM1MSw3IEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAq KmFyZ3AsIGMKKyAgICAgIGV4dGVuc2lvbiBtZXRob2RzLiAgKi8KICAgIGZvciAoaSA9IFRZUEVf Tl9CQVNFQ0xBU1NFUyAodHlwZSkgLSAxOyBpID49IDA7IGktLSkKICAgICAgewogLSAgICAgIGlu dCBiYXNlX29mZnNldDsKQEAgLTM3MDUsMTYgKzM2ODksMTYgQEAgSW5kZXg6IGdkYi03LjcuMS9n ZGIvdmFsb3BzLmMKICAKICAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJUlRVQUwgKHR5cGUsIGkp KQogIAl7Ci1AQCAtMjQ2MSw3ICsyNDYzLDcgQEAgZmluZF9tZXRob2RfbGlzdCAoc3RydWN0IHZh bHVlICoqYXJncCwgYwotIHN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQgKgotIHZhbHVlX2ZpbmRfb2xv YWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIgKm1ldGhvZCwK LSAJCQkgICAgICBpbnQgb2Zmc2V0LCBpbnQgKm51bV9mbnMsIAorQEAgLTIzOTIsNyArMjM5NCw3 IEBAIHZhbHVlX2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0LCBzdHJ1Y3QgZm5fZmllbGQgKipmbl9saXN0 LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqbnVtX2ZucywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBWRUMgKHhtZXRob2Rfd29ya2VyX3B0cikgKip4bV93b3Jr ZXJfdmVjLAogLQkJCSAgICAgIHN0cnVjdCB0eXBlICoqYmFzZXR5cGUsIGludCAqYm9mZnNldCkK ICsJCQkgICAgICBzdHJ1Y3QgdHlwZSAqKmJhc2V0eXBlLCBMT05HRVNUICpib2Zmc2V0KQogIHsK ICAgIHN0cnVjdCB0eXBlICp0OwogIAotQEAgLTI1NTEsNyArMjU1Myw3IEBAIGZpbmRfb3Zlcmxv YWRfbWF0Y2ggKHN0cnVjdCB2YWx1ZSAqKmFyZ3MKK0BAIC0yNDk2LDcgKzI0OTgsNyBAQCBmaW5k X292ZXJsb2FkX21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzCiAgICAvKiBOdW1iZXIgb2Ygb3Zl cmxvYWRlZCBpbnN0YW5jZXMgYmVpbmcgY29uc2lkZXJlZC4gICovCiAgICBpbnQgbnVtX2ZucyA9 IDA7CiAgICBzdHJ1Y3QgdHlwZSAqYmFzZXR5cGUgPSBOVUxMOwpAQCAtMzcyMywxNiArMzcwNywx NiBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAogICAgc3RydWN0IGNsZWFudXAg KmFsbF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKICAKLUBA IC0zMjIxLDcgKzMyMjMsNyBAQCBjb21wYXJlX3BhcmFtZXRlcnMgKHN0cnVjdCB0eXBlICp0MSwg c3RyCitAQCAtMzMwNyw3ICszMzA5LDcgQEAgY29tcGFyZV9wYXJhbWV0ZXJzIChzdHJ1Y3QgdHlw ZSAqdDEsIHN0cgogICAgIHRoZSBmb3JtICJET01BSU46Ok5BTUUiLiAgKi8KICAKICBzdGF0aWMg c3RydWN0IHZhbHVlICoKIC12YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0 eXBlICpkb21haW4sIGludCBvZmZzZXQsCiArdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNl IChzdHJ1Y3QgdHlwZSAqZG9tYWluLCBMT05HRVNUIG9mZnNldCwKLSAJCQkJc3RydWN0IHR5cGUg KmN1cnR5cGUsIGNoYXIgKm5hbWUsCisgCQkJCXN0cnVjdCB0eXBlICpjdXJ0eXBlLCBjb25zdCBj aGFyICpuYW1lLAogIAkJCQlzdHJ1Y3QgdHlwZSAqaW50eXBlLCAKICAJCQkJaW50IHdhbnRfYWRk cmVzcywKLUBAIC0zMjU1LDcgKzMyNTcsNyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZlcmVu Y2UgKHN0cnVjdCB0CitAQCAtMzM0MSw3ICszMzQzLDcgQEAgdmFsdWVfc3RydWN0X2VsdF9mb3Jf cmVmZXJlbmNlIChzdHJ1Y3QgdAogIAkgIGlmICh3YW50X2FkZHJlc3MpCiAgCSAgICByZXR1cm4g dmFsdWVfZnJvbV9sb25nZXN0CiAgCSAgICAgIChsb29rdXBfbWVtYmVycHRyX3R5cGUgKFRZUEVf RklFTERfVFlQRSAodCwgaSksIGRvbWFpbiksCkBAIC0zNzQxLDcgKzM3MjUsNyBAQCBJbmRleDog Z2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAkgIGVsc2UgaWYgKG5vc2lkZSAhPSBFVkFMX05PUk1B TCkKICAJICAgIHJldHVybiBhbGxvY2F0ZV92YWx1ZSAoVFlQRV9GSUVMRF9UWVBFICh0LCBpKSk7 CiAgCSAgZWxzZQotQEAgLTM0MjMsNyArMzQyNSw3IEBAIHZhbHVlX3N0cnVjdF9lbHRfZm9yX3Jl ZmVyZW5jZSAoc3RydWN0IHQKK0BAIC0zNTA5LDcgKzM1MTEsNyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0 X2Zvcl9yZWZlcmVuY2UgKHN0cnVjdCB0CiAgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMg KHQpIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgdmFsdWUgKnY7CkBA IC0zNzUwLDcgKzM3MzQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIAogICAg ICAgIGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAodCwgaSkpCiAgCWJhc2Vfb2Zmc2V0ID0gMDsK LUBAIC0zNTEzLDcgKzM1MTUsNyBAQCB2YWx1ZV9tYXliZV9uYW1lc3BhY2VfZWx0IChjb25zdCBz dHJ1Y3QKK0BAIC0zNTk5LDcgKzM2MDEsNyBAQCB2YWx1ZV9tYXliZV9uYW1lc3BhY2VfZWx0IChj b25zdCBzdHJ1Y3QKICAKICBzdHJ1Y3QgdHlwZSAqCiAgdmFsdWVfcnR0aV9pbmRpcmVjdF90eXBl IChzdHJ1Y3QgdmFsdWUgKnYsIGludCAqZnVsbCwgCkBAIC0zNzU5LDcgKzM3NDMsNyBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi92YWxvcHMuYwogIHsKICAgIHN0cnVjdCB2YWx1ZSAqdGFyZ2V0Owog ICAgc3RydWN0IHR5cGUgKnR5cGUsICpyZWFsX3R5cGUsICp0YXJnZXRfdHlwZTsKLUBAIC0zNTYz LDEyICszNTY1LDEyIEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3RydWN0IHZhbHVlICoK K0BAIC0zNjQ5LDEyICszNjUxLDEyIEBAIHZhbHVlX3J0dGlfaW5kaXJlY3RfdHlwZSAoc3RydWN0 IHZhbHVlICoKICBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2Z1bGxfb2JqZWN0IChzdHJ1Y3QgdmFs dWUgKmFyZ3AsIAogIAkJICAgc3RydWN0IHR5cGUgKnJ0eXBlLCAKQEAgLTM3NzQsMTAgKzM3NTgs MTAgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsb3BzLmMKICAgIGludCB1c2luZ19lbmMgPSAw OwogICAgc3RydWN0IHZhbHVlICpuZXdfdmFsOwogIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFs cHJpbnQuYworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvdmFscHJpbnQuYwkyMDE0LTA1LTEyIDIwOjIy OjA0Ljc5MjQ0MzUxMyArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwkyMDE0LTA1 LTEyIDIwOjIyOjA1LjgwNzQ0NDEyMiArMDIwMAorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3Jp Zy9nZGIvdmFscHJpbnQuYwkyMDE0LTA2LTE2IDIzOjI3OjA1LjE2ODc0NzA1OSArMDIwMAorKysr IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMJMjAxNC0wNi0xNiAyMzoyNzowNy44 Nzk3NDk2MTggKzAyMDAKIEBAIC0zMDIsNyArMzAyLDcgQEAgdmFsX3ByaW50X3NjYWxhcl90eXBl X3AgKHN0cnVjdCB0eXBlICp0eQogIGludAogIHZhbHByaW50X2NoZWNrX3ZhbGlkaXR5IChzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLApAQCAtMzc4Nyw3ICszNzcxLDcgQEAgSW5kZXg6IGdkYi03Ljcu MS9nZGIvdmFscHJpbnQuYwogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBD SEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zNzUsNyArMzc1LDcgQEAgdmFsX3ByaW50X2ludmFs aWRfYWRkcmVzcyAoc3RydWN0IHVpX2ZpbAorQEAgLTM5OSw3ICszOTksNyBAQCB2YWxfcHJpbnRf bm90X2Fzc29jaWF0ZWQgKHN0cnVjdCB1aV9maWxlCiAgCiAgdm9pZAogIGdlbmVyaWNfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zNzk2 LDcgKzM3ODAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxwcmludC5jCiAgCQkgICBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1 ZSAqb3JpZ2luYWxfdmFsdWUsCiAgCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqb3B0aW9ucywKLUBAIC03MzcsNyArNzM3LDcgQEAgZ2VuZXJpY192YWxfcHJpbnQgKHN0cnVj dCB0eXBlICp0eXBlLCBjbworQEAgLTc2MSw3ICs3NjEsNyBAQCBnZW5lcmljX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvCiAgICAgUkVDVVJTRS4gICovCiAgCiAgdm9pZApAQCAtMzgw NSw3ICszNzg5LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwogIAkgICBDT1JF X0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCSAg IGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucywKLUBAIC05NTgsNyArOTU4LDcgQEAgdmFsX3ByaW50X3R5cGVfY29k ZV9mbGFncyAoc3RydWN0IHR5cGUgKgorQEAgLTk5OSw3ICs5OTksNyBAQCB2YWxfcHJpbnRfdHlw ZV9jb2RlX2ZsYWdzIChzdHJ1Y3QgdHlwZSAqCiAgCiAgdm9pZAogIHZhbF9wcmludF9zY2FsYXJf Zm9ybWF0dGVkIChzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTM4MTQsNyArMzc5OCw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL3ZhbHByaW50LmMKICAJCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2 YWwsCiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAog IAkJCSAgICBpbnQgc2l6ZSwKLUBAIC0xNDk5LDcgKzE0OTksNyBAQCBwcmludF9kZWNpbWFsX2No YXJzIChzdHJ1Y3QgdWlfZmlsZSAqc3RyCitAQCAtMTU0MCw3ICsxNTQwLDcgQEAgcHJpbnRfZGVj aW1hbF9jaGFycyAoc3RydWN0IHVpX2ZpbGUgKnN0cgogIAogIHZvaWQKICBwcmludF9oZXhfY2hh cnMgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAt MzgyMyw3ICszODA3LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwogIHsKICAg IGNvbnN0IGdkYl9ieXRlICpwOwogIAotQEAgLTE2MTYsMjMgKzE2MTYsMjMgQEAgbWF5YmVfcHJp bnRfYXJyYXlfaW5kZXggKHN0cnVjdCB0eXBlICppbgorQEAgLTE2NTcsMjIgKzE2NTcsMjIgQEAg bWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cnVjdCB0eXBlICppbgogIAogIHZvaWQKICB2YWxf cHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMzgzOSw3ICszODIz LDYgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFscHJpbnQuYwogICAgdW5zaWduZWQgaW50IHRo aW5nc19wcmludGVkID0gMDsKIC0gIHVuc2lnbmVkIGxlbjsKICsgIFVMT05HRVNUIGxlbjsKLSAg IHN0cnVjdCB0eXBlICpzYXZlZF90eXBlID0gdHlwZTsKICAgIHN0cnVjdCB0eXBlICplbHR0eXBl LCAqaW5kZXhfdHlwZTsKIC0gIHVuc2lnbmVkIGVsdGxlbjsKICsgIFVMT05HRVNUIGVsdGxlbjsK QEAgLTM4NTEsOSArMzgzNCw5IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHByaW50LmMKIC0g IHVuc2lnbmVkIGludCByZXBzOwogKyAgVUxPTkdFU1QgcmVwczsKICAgIExPTkdFU1QgbG93X2Jv dW5kLCBoaWdoX2JvdW5kOwotICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0gICBDT1JFX0FE RFIgc2F2ZWRfYWRkcmVzcyA9IGFkZHJlc3M7Ci1AQCAtMTcyNyw3ICsxNzI3LDcgQEAgdmFsX3By aW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorIAorICAgZWx0dHlwZSA9IFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpOworQEAgLTE3NDMsNyArMTc0Myw3IEBAIHZhbF9wcmludF9hcnJh eV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnQKICAJCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1 cnNlICsgMSwgdmFsLCBvcHRpb25zLAogIAkJICAgICBjdXJyZW50X2xhbmd1YWdlKTsKICAJICBh bm5vdGF0ZV9lbHRfcmVwIChyZXBzKTsKQEAgLTM4NjIsNyArMzg0NSw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL3ZhbHByaW50LmMKICAJICBhbm5vdGF0ZV9lbHRfcmVwX2VuZCAoKTsKICAKICAJ ICBpID0gcmVwMSAtIDE7Ci1AQCAtMjM4Miw3ICsyMzgyLDcgQEAgcHJpbnRfY29udmVydGVkX2No YXJzX3RvX29ic3RhY2sgKHN0cnVjdAorQEAgLTI0MDAsNyArMjQwMCw3IEBAIHByaW50X2NvbnZl cnRlZF9jaGFyc190b19vYnN0YWNrIChzdHJ1Y3QKICAKICB2b2lkCiAgZ2VuZXJpY19wcmludHN0 ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUsIApAQCAtMzg3MSwx MCArMzg1NCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxwcmludC5jCiAgCQkgIGNvbnN0 IGNoYXIgKmVuY29kaW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkgIGludCBxdW90ZV9jaGFy LCBpbnQgY19zdHlsZV90ZXJtaW5hdG9yLAogIAkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucykKLUluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHByaW50LmgKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWxwcmludC5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNy4xLm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxNC0wMS0wOCAxMDoyMzozNi4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy43LjEvZ2RiL3ZhbHByaW50LmgJMjAxNC0wNS0xMiAyMDoyMjowNS44 MDg0NDQxMjMgKzAyMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHByaW50 LmgJMjAxNC0wNi0xNiAyMzoyNzowNS4xNjg3NDcwNTkgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi92YWxwcmludC5oCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODc5NzQ5NjE4ICswMjAw CiBAQCAtMTE1LDExICsxMTUsMTEgQEAgZXh0ZXJuIHZvaWQgbWF5YmVfcHJpbnRfYXJyYXlfaW5k ZXggKHN0cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLAogIAkJCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICopOwpAQCAtMzkyNSwxMCArMzkwOCwxMCBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWxwcmlu dC5oCiAgCQkJICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIGludCBmb3JjZV9lbGxpcHNlcywK ICAJCQkgICAgICBpbnQgcXVvdGVfY2hhciwgaW50IGNfc3R5bGVfdGVybWluYXRvciwKICAJCQkg ICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucyk7Ci1JbmRleDog Z2RiLTcuNy4xL2dkYi92YWx1ZS5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFs dWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi92YWx1ZS5jCTIwMTQtMDUt MTIgMjA6MjI6MDUuNTM0NDQzOTU4ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCTIw MTQtMDUtMTIgMjA6MjI6MDUuODA4NDQ0MTIzICswMjAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYx My5vcmlnL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTcxNzQ3MDYyICswMjAwCisr KysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsdWUuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg4 MDc0OTYxOSArMDIwMAogQEAgLTY5LDEwICs2OSwxMCBAQCBzdHJ1Y3QgaW50ZXJuYWxfZnVuY3Rp b24KICBzdHJ1Y3QgcmFuZ2UKICB7CkBAIC0zOTYyLDcgKzM5NDUsNyBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi92YWx1ZS5jCiAgewogICAgcmFuZ2VfcyB3aGF0OwogICAgaW50IGk7Ci1AQCAtMjQ2 LDcgKzI0Niw3IEBAIHN0cnVjdCB2YWx1ZQorQEAgLTI1Miw3ICsyNTIsNyBAQCBzdHJ1Y3QgdmFs dWUKICAgICAgIGx2YWwgPT0gbHZhbF9yZWdpc3RlciwgdGhpcyBpcyBhIGZ1cnRoZXIgb2Zmc2V0 IGZyb20KICAgICAgIGxvY2F0aW9uLmFkZHJlc3Mgd2l0aGluIHRoZSByZWdpc3RlcnMgc3RydWN0 dXJlLiAgTm90ZSBhbHNvIHRoZQogICAgICAgbWVtYmVyIGVtYmVkZGVkX29mZnNldCBiZWxvdy4g ICovCkBAIC0zOTcxLDcgKzM5NTQsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAg CiAgICAvKiBPbmx5IHVzZWQgZm9yIGJpdGZpZWxkczsgbnVtYmVyIG9mIGJpdHMgY29udGFpbmVk IGluIHRoZW0uICAqLwogICAgaW50IGJpdHNpemU7Ci1AQCAtMzE2LDggKzMxNiw4IEBAIHN0cnVj dCB2YWx1ZQorQEAgLTMyMiw4ICszMjIsOCBAQCBzdHJ1Y3QgdmFsdWUKICAgICAgIGB0eXBlJywg YW5kIGBlbWJlZGRlZF9vZmZzZXQnIGlzIHplcm8sIHNvIGV2ZXJ5dGhpbmcgd29ya3MKICAgICAg IG5vcm1hbGx5LiAgKi8KICAgIHN0cnVjdCB0eXBlICplbmNsb3NpbmdfdHlwZTsKQEAgLTM5ODIs NyArMzk2NSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICAKICAgIC8qIFZhbHVl cyBhcmUgc3RvcmVkIGluIGEgY2hhaW4sIHNvIHRoYXQgdGhleSBjYW4gYmUgZGVsZXRlZCBlYXNp bHkKICAgICAgIG92ZXIgY2FsbHMgdG8gdGhlIGluZmVyaW9yLiAgVmFsdWVzIGFzc2lnbmVkIHRv IGludGVybmFsCi1AQCAtMzQ4LDcgKzM0OCw4IEBAIHZhbHVlX2JpdHNfYXZhaWxhYmxlIChjb25z dCBzdHJ1Y3QgdmFsdWUKK0BAIC0zNTEsNyArMzUxLDggQEAgdmFsdWVfYml0c19hdmFpbGFibGUg KGNvbnN0IHN0cnVjdCB2YWx1ZQogIH0KICAKICBpbnQKQEAgLTM5OTIsNyArMzk3NSw3IEBAIElu ZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICByZXR1cm4gdmFsdWVfYml0c19hdmFp bGFibGUgKHZhbHVlLAogIAkJCSAgICAgICBvZmZzZXQgKiBUQVJHRVRfQ0hBUl9CSVQsCi1AQCAt NTU1LDcgKzU1Niw4IEBAIG1hcmtfdmFsdWVfYml0c191bmF2YWlsYWJsZSAoc3RydWN0IHZhbHUK K0BAIC01NTgsNyArNTU5LDggQEAgbWFya192YWx1ZV9iaXRzX3VuYXZhaWxhYmxlIChzdHJ1Y3Qg dmFsdQogIH0KICAKICB2b2lkCkBAIC00MDAyLDcgKzM5ODUsNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi92YWx1ZS5jCiAgewogICAgbWFya192YWx1ZV9iaXRzX3VuYXZhaWxhYmxlICh2YWx1ZSwK ICAJCQkgICAgICAgb2Zmc2V0ICogVEFSR0VUX0NIQVJfQklULAotQEAgLTU2OSw3ICs1NzEsNyBA QCBtYXJrX3ZhbHVlX2J5dGVzX3VuYXZhaWxhYmxlIChzdHJ1Y3QgdmFsCitAQCAtNTcyLDcgKzU3 NCw3IEBAIG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHN0cnVjdCB2YWwKICAKICBzdGF0 aWMgaW50CiAgZmluZF9maXJzdF9yYW5nZV9vdmVybGFwIChWRUMocmFuZ2VfcykgKnJhbmdlcywg aW50IHBvcywKQEAgLTQwMTEsNyArMzk5NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVl LmMKICB7CiAgICByYW5nZV9zICpyOwogICAgaW50IGk7Ci1AQCAtNzYwLDkgKzc2Miw5IEBAIHZh bHVlX2F2YWlsYWJsZV9jb250ZW50c19iaXRzX2VxIChjb25zdAorQEAgLTc2Myw5ICs3NjUsOSBA QCB2YWx1ZV9hdmFpbGFibGVfY29udGVudHNfYml0c19lcSAoY29uc3QKICB9CiAgCiAgaW50CkBA IC00MDI0LDcgKzQwMDcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgewogICAg cmV0dXJuIHZhbHVlX2F2YWlsYWJsZV9jb250ZW50c19iaXRzX2VxICh2YWwxLCBvZmZzZXQxICog VEFSR0VUX0NIQVJfQklULAogIAkJCQkJICAgdmFsMiwgb2Zmc2V0MiAqIFRBUkdFVF9DSEFSX0JJ VCwKLUBAIC05MjcsMTMgKzkyOSwxMyBAQCBkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlIChzdHJ1 Y3QgdmFsdWUKK0BAIC05MzAsMTMgKzkzMiwxMyBAQCBkZXByZWNhdGVkX3NldF92YWx1ZV90eXBl IChzdHJ1Y3QgdmFsdWUKICAgIHZhbHVlLT50eXBlID0gdHlwZTsKICB9CiAgCkBAIC00MDQwLDcg KzQwMjMsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgewogICAgdmFsdWUtPm9m ZnNldCA9IG9mZnNldDsKICB9Ci1AQCAtMTEwMyw4ICsxMTA1LDkgQEAgdmFsdWVfY29udGVudHNf YWxsIChzdHJ1Y3QgdmFsdWUgKnZhbHVlKQorQEAgLTExMDYsOCArMTEwOCw5IEBAIHZhbHVlX2Nv bnRlbnRzX2FsbCAoc3RydWN0IHZhbHVlICp2YWx1ZSkKICAgICBEU1RfT0ZGU0VUK0xFTkdUSCkg cmFuZ2UgYXJlIHdob2xseSBhdmFpbGFibGUuICAqLwogIAogIHZvaWQKQEAgLTQwNTIsNyArNDAz NSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICByYW5nZV9zICpyOwog ICAgaW50IGk7Ci1AQCAtMTE1Niw4ICsxMTU5LDggQEAgdmFsdWVfY29udGVudHNfY29weV9yYXcg KHN0cnVjdCB2YWx1ZSAqZAorQEAgLTExNTksOCArMTE2Miw4IEBAIHZhbHVlX2NvbnRlbnRzX2Nv cHlfcmF3IChzdHJ1Y3QgdmFsdWUgKmQKICAgICBEU1RfT0ZGU0VUK0xFTkdUSCkgcmFuZ2UgYXJl IHdob2xseSBhdmFpbGFibGUuICAqLwogIAogIHZvaWQKQEAgLTQwNjMsNyArNDA0Niw3IEBAIElu ZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICByZXF1aXJlX25vdF9vcHRpbWl6ZWRf b3V0IChzcmMpOwogIAotQEAgLTEyNjIsNyArMTI2NSw3IEBAIHZhbHVlX2VudGlyZWx5X29wdGlt aXplZF9vdXQgKGNvbnN0IHN0cnUKK0BAIC0xMjY1LDcgKzEyNjgsNyBAQCB2YWx1ZV9lbnRpcmVs eV9vcHRpbWl6ZWRfb3V0IChjb25zdCBzdHJ1CiAgfQogIAogIGludApAQCAtNDA3Miw3ICs0MDU1 LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsdWUuYwogIHsKICAgIGlmICghdmFsdWUtPm9w dGltaXplZF9vdXQpCiAgICAgIHJldHVybiAxOwotQEAgLTEyNzUsNyArMTI3OCw3IEBAIHZhbHVl X2JpdHNfdmFsaWQgKGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmEKK0BAIC0xMjc4LDcgKzEyODEsNyBA QCB2YWx1ZV9iaXRzX3ZhbGlkIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhCiAgCiAgaW50CiAgdmFs dWVfYml0c19zeW50aGV0aWNfcG9pbnRlciAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAg LTQwODEsNyArNDA2NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICBp ZiAodmFsdWUtPmx2YWwgIT0gbHZhbF9jb21wdXRlZAogICAgICAgIHx8ICF2YWx1ZS0+bG9jYXRp b24uY29tcHV0ZWQuZnVuY3MtPmNoZWNrX3N5bnRoZXRpY19wb2ludGVyKQotQEAgLTEyODUsMjYg KzEyODgsMjYgQEAgdmFsdWVfYml0c19zeW50aGV0aWNfcG9pbnRlciAoY29uc3Qgc3RydQorQEAg LTEyODgsMjYgKzEyOTEsMjYgQEAgdmFsdWVfYml0c19zeW50aGV0aWNfcG9pbnRlciAoY29uc3Qg c3RydQogIAkJCQkJCQkJICBsZW5ndGgpOwogIH0KICAKQEAgLTQxMTIsNyArNDA5NSw3IEBAIElu ZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICB7CiAgICB2YWx1ZS0+cG9pbnRlZF90b19vZmZz ZXQgPSB2YWw7CiAgfQotQEAgLTIxNTcsNyArMjE2MCw3IEBAIGdldF9pbnRlcm5hbHZhcl9mdW5j dGlvbiAoc3RydWN0IGludGVybmEKK0BAIC0yMTU0LDcgKzIxNTcsNyBAQCBnZXRfaW50ZXJuYWx2 YXJfZnVuY3Rpb24gKHN0cnVjdCBpbnRlcm5hCiAgfQogIAogIHZvaWQKQEAgLTQxMjEsNyArNDEw NCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmMKICAJCQkgICBpbnQgYml0c2l6ZSwg c3RydWN0IHZhbHVlICpuZXd2YWwpCiAgewogICAgZ2RiX2J5dGUgKmFkZHI7Ci1AQCAtMjg2Myw3 ICsyODY2LDcgQEAgc2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKgorQEAg LTI4NjAsNyArMjg2Myw3IEBAIHNldF92YWx1ZV9lbmNsb3NpbmdfdHlwZSAoc3RydWN0IHZhbHVl ICoKICAgICBGSUVMRE5PIHNheXMgd2hpY2ggZmllbGQuICAqLwogIAogIHN0cnVjdCB2YWx1ZSAq CkBAIC00MTMwLDcgKzQxMTMsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgCQkg ICAgICAgaW50IGZpZWxkbm8sIHN0cnVjdCB0eXBlICphcmdfdHlwZSkKICB7CiAgICBzdHJ1Y3Qg dmFsdWUgKnY7Ci1AQCAtMjg5MSw3ICsyODk0LDcgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChz dHJ1Y3QgdmFsdWUgKmFyZworQEAgLTI4ODgsNyArMjg5MSw3IEBAIHZhbHVlX3ByaW1pdGl2ZV9m aWVsZCAoc3RydWN0IHZhbHVlICphcmcKICAJIGJpdC4gIEFzc3VtZSB0aGF0IHRoZSBhZGRyZXNz LCBvZmZzZXQsIGFuZCBlbWJlZGRlZCBvZmZzZXQKICAJIGFyZSBzdWZmaWNpZW50bHkgYWxpZ25l ZC4gICovCiAgCkBAIC00MTM5LDcgKzQxMjIsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1 ZS5jCiAgICAgICAgaW50IGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5HVEggKHR5cGUpICog ODsKICAKICAgICAgICBpZiAoYXJnMS0+b3B0aW1pemVkX291dCkKLUBAIC0yOTE4LDcgKzI5MjEs NyBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnCitAQCAtMjkxNSw3 ICsyOTE4LDcgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZwogICAg ICAgIC8qIFRoaXMgZmllbGQgaXMgYWN0dWFsbHkgYSBiYXNlIHN1Ym9iamVjdCwgc28gcHJlc2Vy dmUgdGhlCiAgCSBlbnRpcmUgb2JqZWN0J3MgY29udGVudHMgZm9yIGxhdGVyIHJlZmVyZW5jZXMg dG8gdmlydHVhbAogIAkgYmFzZXMsIGV0Yy4gICovCkBAIC00MTQ4LDcgKzQxMzEsNyBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgCiAgICAgICAgLyogTGF6eSByZWdpc3RlciB2YWx1 ZXMgd2l0aCBvZmZzZXRzIGFyZSBub3Qgc3VwcG9ydGVkLiAgKi8KICAgICAgICBpZiAoVkFMVUVf TFZBTCAoYXJnMSkgPT0gbHZhbF9yZWdpc3RlciAmJiB2YWx1ZV9sYXp5IChhcmcxKSkKLUBAIC0z MDA4LDcgKzMwMTEsNyBAQCB2YWx1ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgZmll CitAQCAtMzAxNCw3ICszMDE3LDcgQEAgdmFsdWVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwg aW50IGZpZQogIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAq KmFyZzFwLCBzdHJ1Y3QgZm5fZmllbGQgKmYsCiAgCQlpbnQgaiwgc3RydWN0IHR5cGUgKnR5cGUs CkBAIC00MTU3LDcgKzQxNDAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgewog ICAgc3RydWN0IHZhbHVlICp2OwogICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gVFlQRV9GTl9GSUVM RF9UWVBFIChmLCBqKTsKLUBAIC0zMDY4LDggKzMwNzEsOCBAQCB2YWx1ZV9mbl9maWVsZCAoc3Ry dWN0IHZhbHVlICoqYXJnMXAsIHN0CitAQCAtMzA3NCw4ICszMDc3LDggQEAgdmFsdWVfZm5fZmll bGQgKHN0cnVjdCB2YWx1ZSAqKmFyZzFwLCBzdAogIAogIHN0YXRpYyBpbnQKICB1bnBhY2tfdmFs dWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKQEAgLTQxNjgsNyArNDE1MSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Zh bHVlLmMKICAJCQkgICAgIExPTkdFU1QgKnJlc3VsdCkKICB7CiAgICBlbnVtIGJmZF9lbmRpYW4g Ynl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAoZmllbGRfdHlw ZSkpOwotQEAgLTMwNzcsNyArMzA4MCw3IEBAIHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmdfMSAo c3RydWN0IHR5cGUKK0BAIC0zMDgzLDcgKzMwODYsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19s b25nXzEgKHN0cnVjdCB0eXBlCiAgICBVTE9OR0VTVCB2YWxtYXNrOwogICAgaW50IGxzYmNvdW50 OwogICAgaW50IGJ5dGVzX3JlYWQ7CkBAIC00MTc3LDcgKzQxNjAsNyBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi92YWx1ZS5jCiAgCiAgICAvKiBSZWFkIHRoZSBtaW5pbXVtIG51bWJlciBvZiBieXRl cyByZXF1aXJlZDsgdGhlcmUgbWF5IG5vdCBiZQogICAgICAgZW5vdWdoIGJ5dGVzIHRvIHJlYWQg YW4gZW50aXJlIFVMT05HRVNULiAgKi8KLUBAIC0zMTQ3LDcgKzMxNTAsNyBAQCB1bnBhY2tfdmFs dWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlCitAQCAtMzE1Myw3ICszMTU2LDcgQEAgdW5w YWNrX3ZhbHVlX2JpdHNfYXNfbG9uZ18xIChzdHJ1Y3QgdHlwZQogIAogIGludAogIHVucGFja192 YWx1ZV9iaXRzX2FzX2xvbmcgKHN0cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKQEAgLTQxODYsNyArNDE2OSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Zh bHVlLmMKICAJCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJCSAg IExPTkdFU1QgKnJlc3VsdCkKICB7Ci1AQCAtMzE2NSwxMCArMzE2OCwxMCBAQCB1bnBhY2tfdmFs dWVfYml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAqCitAQCAtMzE3MSwxMCArMzE3NCwxMCBAQCB1 bnBhY2tfdmFsdWVfYml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAqCiAgCiAgc3RhdGljIGludAog IHVucGFja192YWx1ZV9maWVsZF9hc19sb25nXzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQxOTksNyArNDE4Miw3IEBAIEluZGV4OiBnZGItNy43LjEv Z2RiL3ZhbHVlLmMKICAgIGludCBiaXRzaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBm aWVsZG5vKTsKICAgIHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCBmaWVsZG5vKTsKICAKLUBAIC0zMTg0LDcgKzMxODcsNyBAQCB1bnBhY2tfdmFsdWVfZmll bGRfYXNfbG9uZ18xIChzdHJ1Y3QgdHlwCitAQCAtMzE5MCw3ICszMTkzLDcgQEAgdW5wYWNrX3Zh bHVlX2ZpZWxkX2FzX2xvbmdfMSAoc3RydWN0IHR5cAogIAogIGludAogIHVucGFja192YWx1ZV9m aWVsZF9hc19sb25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CkBAIC00MjA4LDcgKzQxOTEsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgCQkJ ICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLCBMT05HRVNUICpyZXN1bHQpCiAgewogICAgZ2Ri X2Fzc2VydCAodmFsICE9IE5VTEwpOwotQEAgLTMyMTYsNyArMzIxOSw3IEBAIHVucGFja19maWVs ZF9hc19sb25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0zMjIyLDcgKzMyMjUsNyBAQCB1bnBh Y2tfZmllbGRfYXNfbG9uZyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgc3RydWN0IHZhbHVlICoKICB2 YWx1ZV9maWVsZF9iaXRmaWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVsZG5vLAogIAkJ ICAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00MjE3LDcgKzQyMDAsNyBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5jCiAgewogICAgTE9OR0VTVCBsOwogIAotQEAgLTMyNDMs MTIgKzMyNDYsMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLAor QEAgLTMyNDksMTIgKzMyNTIsMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBl ICp0eXBlLAogIAogIHZvaWQKICBtb2RpZnlfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBnZGJf Ynl0ZSAqYWRkciwKQEAgLTQyMzIsMTEgKzQyMTUsMTEgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIv dmFsdWUuYwogIAogICAgLyogTm9ybWFsaXplIEJJVFBPUy4gICovCiAgICBhZGRyICs9IGJpdHBv cyAvIDg7Ci1JbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvdmFsdWUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi92 YWx1ZS5oCTIwMTQtMDUtMTIgMjA6MjI6MDQuNzkzNDQzNTE0ICswMjAwCi0rKysgZ2RiLTcuNy4x L2dkYi92YWx1ZS5oCTIwMTQtMDUtMTIgMjA6MjI6MDUuODA5NDQ0MTIzICswMjAwCi1AQCAtODIs OCArODIsOCBAQCBleHRlcm4gdm9pZCBzZXRfdmFsdWVfcGFyZW50IChzdHJ1Y3QgdmFsCistLS0g Z2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi92YWx1ZS5oCTIwMTQtMDYtMTYgMjM6Mjc6MDUu MTcyNzQ3MDYzICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsdWUuaAkyMDE0 LTA2LTE2IDIzOjI3OjA3Ljg4MDc0OTYxOSArMDIwMAorQEAgLTgzLDggKzgzLDggQEAgZXh0ZXJu IHZvaWQgc2V0X3ZhbHVlX3BhcmVudCAoc3RydWN0IHZhbAogICAgIHdpdGhpbiB0aGUgcmVnaXN0 ZXJzIHN0cnVjdHVyZS4gIE5vdGUgYWxzbyB0aGUgbWVtYmVyCiAgICAgZW1iZWRkZWRfb2Zmc2V0 IGJlbG93LiAgKi8KICAKQEAgLTQyNDcsNyArNDIzMCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L3ZhbHVlLmgKICAKICAvKiBUaGUgY29tbWVudCBmcm9tICJzdHJ1Y3QgdmFsdWUiIHJlYWRzOiBg YElzIGl0IG1vZGlmaWFibGU/ICBPbmx5CiAgICAgcmVsZXZhbnQgaWYgbHZhbCAhPSBub3RfbHZh bC4nJy4gIFNob3VsZG4ndCB0aGUgdmFsdWUgaW5zdGVhZCBiZQotQEAgLTE1MiwxMCArMTUyLDEw IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqdmFsdWVfYWN0dWFsX3R5cGUgKHMKK0BAIC0xNTMsMTAg KzE1MywxMCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKnZhbHVlX2FjdHVhbF90eXBlIChzCiAgCQkJ CSAgICAgICBpbnQgcmVzb2x2ZV9zaW1wbGVfdHlwZXMsCiAgCQkJCSAgICAgICBpbnQgKnJlYWxf dHlwZV9mb3VuZCk7CiAgCkBAIC00MjYyLDcgKzQyNDUsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dk Yi92YWx1ZS5oCiAgCiAgLyogRm9yIGx2YWxfY29tcHV0ZWQgdmFsdWVzLCB0aGlzIHN0cnVjdHVy ZSBob2xkcyBmdW5jdGlvbnMgdXNlZCB0bwogICAgIHJldHJpZXZlIGFuZCBzZXQgdGhlIHZhbHVl IChvciBwb3J0aW9ucyBvZiB0aGUgdmFsdWUpLgotQEAgLTE4Myw3ICsxODMsOCBAQCBzdHJ1Y3Qg bHZhbF9mdW5jcworQEAgLTE4NCw3ICsxODQsOCBAQCBzdHJ1Y3QgbHZhbF9mdW5jcwogICAgLyog Q2hlY2sgdGhlIHZhbGlkaXR5IG9mIHNvbWUgYml0cyBpbiBWQUxVRS4gIFRoaXMgc2hvdWxkIHJl dHVybiAxCiAgICAgICBpZiBhbGwgdGhlIGJpdHMgc3RhcnRpbmcgYXQgT0ZGU0VUIGFuZCBleHRl bmRpbmcgZm9yIExFTkdUSCBiaXRzCiAgICAgICBhcmUgdmFsaWQsIG9yIDAgaWYgYW55IGJpdCBp cyBpbnZhbGlkLiAgKi8KQEAgLTQyNzIsNyArNDI1NSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2Ri L3ZhbHVlLmgKICAKICAgIC8qIFJldHVybiAxIGlmIGFueSBiaXQgaW4gVkFMVUUgaXMgdmFsaWQs IDAgaWYgdGhleSBhcmUgYWxsIGludmFsaWQuICAqLwogICAgaW50ICgqY2hlY2tfYW55X3ZhbGlk KSAoY29uc3Qgc3RydWN0IHZhbHVlICp2YWx1ZSk7Ci1AQCAtMjAxLDcgKzIwMiw3IEBAIHN0cnVj dCBsdmFsX2Z1bmNzCitAQCAtMjAyLDcgKzIwMyw3IEBAIHN0cnVjdCBsdmFsX2Z1bmNzCiAgICAv KiBJZiBub24tTlVMTCwgdGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBpbmRp Y2F0ZWQgYml0cwogICAgICAgb2YgVkFMVUUgYXJlIGEgc3ludGhldGljIHBvaW50ZXIuICAqLwog ICAgaW50ICgqY2hlY2tfc3ludGhldGljX3BvaW50ZXIpIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZh bHVlLApAQCAtNDI4MSw3ICs0MjY0LDcgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvdmFsdWUuaAog IAogICAgLyogUmV0dXJuIGEgZHVwbGljYXRlIG9mIFZBTFVFJ3MgY2xvc3VyZSwgZm9yIHVzZSBp biBhIG5ldyB2YWx1ZS4KICAgICAgIFRoaXMgbWF5IHNpbXBseSByZXR1cm4gdGhlIHNhbWUgY2xv c3VyZSwgaWYgVkFMVUUncyBpcwotQEAgLTIzOCw3ICsyMzksNyBAQCBleHRlcm4gc3RydWN0IHZh bHVlICphbGxvY2F0ZV9jb21wdXRlZF92CitAQCAtMjM5LDcgKzI0MCw3IEBAIGV4dGVybiBzdHJ1 Y3QgdmFsdWUgKmFsbG9jYXRlX2NvbXB1dGVkX3YKICAgICBPdGhlcndpc2UsIHJldHVybiAxLiAg Ki8KICAKICBleHRlcm4gaW50IHZhbHByaW50X2NoZWNrX3ZhbGlkaXR5IChzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTQyOTAsNyArNDI3Myw3IEBAIEluZGV4 OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmgKICAJCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFs KTsKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICphbGxvY2F0ZV9vcHRpbWl6ZWRfb3V0X3ZhbHVl IChzdHJ1Y3QgdHlwZSAqdHlwZSk7Ci1AQCAtNDIwLDEzICs0MjEsMTMgQEAgZXh0ZXJuIHN0cnVj dCB2YWx1ZSAqY29lcmNlX2FycmF5IChzdHJ1YworQEAgLTQyMSwxMyArNDIyLDEzIEBAIGV4dGVy biBzdHJ1Y3QgdmFsdWUgKmNvZXJjZV9hcnJheSAoc3RydWMKICAgICBiaXRzIGluIHRoZSBnaXZl biByYW5nZSBhcmUgdmFsaWQsIHplcm8gaWYgYW55IGJpdCBpcyBpbnZhbGlkLiAgKi8KICAKICBl eHRlcm4gaW50IHZhbHVlX2JpdHNfdmFsaWQgKGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsdWUsCkBA IC00MzA2LDcgKzQyODksNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCiAgCiAgLyog R2l2ZW4gYSB2YWx1ZSwgZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGNvbnRlbnRzIGJ5dGVzIHN0YXJ0 aW5nIGF0CiAgICAgT0ZGU0VUIGFuZCBleHRlbmRpbmcgZm9yIExFTkdUSCBieXRlcyBhcmUgYXZh aWxhYmxlLiAgVGhpcyByZXR1cm5zCi1AQCAtNDM0LDcgKzQzNSw3IEBAIGV4dGVybiBpbnQgdmFs dWVfYml0c19zeW50aGV0aWNfcG9pbnRlcgorQEAgLTQzNSw3ICs0MzYsNyBAQCBleHRlcm4gaW50 IHZhbHVlX2JpdHNfc3ludGhldGljX3BvaW50ZXIKICAgICBieXRlIGlzIHVuYXZhaWxhYmxlLiAg Ki8KICAKICBleHRlcm4gaW50IHZhbHVlX2J5dGVzX2F2YWlsYWJsZSAoY29uc3Qgc3RydWN0IHZh bHVlICp2YWx1ZSwKQEAgLTQzMTUsNyArNDI5OCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Zh bHVlLmgKICAKICAvKiBHaXZlbiBhIHZhbHVlLCBkZXRlcm1pbmUgd2hldGhlciB0aGUgY29udGVu dHMgYml0cyBzdGFydGluZyBhdAogICAgIE9GRlNFVCBhbmQgZXh0ZW5kaW5nIGZvciBMRU5HVEgg Yml0cyBhcmUgYXZhaWxhYmxlLiAgVGhpcyByZXR1cm5zCi1AQCAtNDU2LDcgKzQ1Nyw3IEBAIGV4 dGVybiBpbnQgdmFsdWVfZW50aXJlbHlfdW5hdmFpbGFibGUgKHMKK0BAIC00NTcsNyArNDU4LDcg QEAgZXh0ZXJuIGludCB2YWx1ZV9lbnRpcmVseV91bmF2YWlsYWJsZSAocwogICAgIExFTkdUSCBi eXRlcyBhcyB1bmF2YWlsYWJsZS4gICovCiAgCiAgZXh0ZXJuIHZvaWQgbWFya192YWx1ZV9ieXRl c191bmF2YWlsYWJsZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwKQEAgLTQzMjQsNyArNDMwNyw3IEBA IEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmgKICAKICAvKiBNYXJrIFZBTFVFJ3MgY29udGVu dCBiaXRzIHN0YXJ0aW5nIGF0IE9GRlNFVCBhbmQgZXh0ZW5kaW5nIGZvcgogICAgIExFTkdUSCBi aXRzIGFzIHVuYXZhaWxhYmxlLiAgKi8KLUBAIC00NzIsNyArNDczLDcgQEAgZXh0ZXJuIHZvaWQg bWFya192YWx1ZV9iaXRzX3VuYXZhaWxhYmxlCitAQCAtNDczLDcgKzQ3NCw3IEBAIGV4dGVybiB2 b2lkIG1hcmtfdmFsdWVfYml0c191bmF2YWlsYWJsZQogICAgIGV4YW1wbGUsIHRvIGNvbXBhcmUg YSBjb21wbGV0ZSBvYmplY3QgdmFsdWUgd2l0aCBpdHNlbGYsIGluY2x1ZGluZwogICAgIGl0cyBl bmNsb3NpbmcgdHlwZSBjaHVuaywgeW91J2QgZG86CiAgCkBAIC00MzMzLDcgKzQzMTYsNyBAQCBJ bmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCiAgICAgICB2YWx1ZV9hdmFpbGFibGVfY29udGVu dHMgKHZhbCwgMCwgdmFsLCAwLCBsZW4pOwogIAogICAgIFJldHVybnMgdHJ1ZSBpZmYgdGhlIHNl dCBvZiBhdmFpbGFibGUgY29udGVudHMgbWF0Y2guICBVbmF2YWlsYWJsZQotQEAgLTQ5OSw5ICs1 MDAsOSBAQCBleHRlcm4gdm9pZCBtYXJrX3ZhbHVlX2JpdHNfdW5hdmFpbGFibGUKK0BAIC01MDAs OSArNTAxLDkgQEAgZXh0ZXJuIHZvaWQgbWFya192YWx1ZV9iaXRzX3VuYXZhaWxhYmxlCiAgICAg Z29uZSwgaXQgd29ya3Mgd2l0aCBjb25zdCB2YWx1ZXMuICBUaGVyZWZvcmUsIHRoaXMgcm91dGlu ZSBtdXN0IG5vdAogICAgIGJlIGNhbGxlZCB3aXRoIGxhenkgdmFsdWVzLiAgKi8KICAKQEAgLTQz NDYsNyArNDMyOSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3ZhbHVlLmgKICAKICAvKiBSZWFk IExFTkdUSCBieXRlcyBvZiBtZW1vcnkgc3RhcnRpbmcgYXQgTUVNQUREUiBpbnRvIEJVRkZFUiwg d2hpY2gKICAgICBpcyAob3Igd2lsbCBiZSBjb3BpZWQgdG8pIFZBTCdzIGNvbnRlbnRzIGJ1ZmZl ciBvZmZzZXQgYnkKLUBAIC01MTAsNyArNTExLDcgQEAgZXh0ZXJuIGludCB2YWx1ZV9hdmFpbGFi bGVfY29udGVudHNfZXEgKAorQEAgLTUxMSw3ICs1MTIsNyBAQCBleHRlcm4gaW50IHZhbHVlX2F2 YWlsYWJsZV9jb250ZW50c19lcSAoCiAgICAgbWVtb3J5IGlzIGxpa2V3aXNlIHVuYXZhaWxhYmxl LiAgU1RBQ0sgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG1lbW9yeQogICAgIGlzIGtub3duIHRvIGJl IHN0YWNrIG1lbW9yeS4gICovCiAgCkBAIC00MzU1LDcgKzQzMzgsNyBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi92YWx1ZS5oCiAgCQkJICAgICAgIGludCBzdGFjaywgQ09SRV9BRERSIG1lbWFkZHIs CiAgCQkJICAgICAgIGdkYl9ieXRlICpidWZmZXIsIHNpemVfdCBsZW5ndGgpOwogIAotQEAgLTU0 NCw3ICs1NDUsNyBAQCBleHRlcm4gQ09SRV9BRERSIHVucGFja19wb2ludGVyIChzdHJ1Y3QKK0BA IC01NDUsNyArNTQ2LDcgQEAgZXh0ZXJuIENPUkVfQUREUiB1bnBhY2tfcG9pbnRlciAoc3RydWN0 CiAgCiAgZXh0ZXJuIGludCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAq ZmllbGRfdHlwZSwKICAJCQkJICAgICAgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00MzY0 LDcgKzQzNDcsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi92YWx1ZS5oCiAgCQkJCSAgICAgIGlu dCBiaXRzaXplLAogIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVl LAogIAkJCQkgICAgICBMT05HRVNUICpyZXN1bHQpOwotQEAgLTU1MywxMiArNTU0LDEyIEBAIGV4 dGVybiBMT05HRVNUIHVucGFja19maWVsZF9hc19sb25nIChzdHIKK0BAIC01NTQsMTIgKzU1NSwx MiBAQCBleHRlcm4gTE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3RyCiAgCQkJCSAgICAg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQkJCSAgICAgaW50IGZpZWxkbm8pOwogIGV4dGVy biBpbnQgdW5wYWNrX3ZhbHVlX2ZpZWxkX2FzX2xvbmcgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQ0NjksMTYgKzQ0NTIsNTUgQEAgSW5kZXg6IGdkYi03 LjcuMS9nZGIvdmFsdWUuaAogIAogIC8qIFVzZXIgZnVuY3Rpb24gaGFuZGxlci4gICovCiAgCi1J bmRleDogZ2RiLTcuNy4xL2dkYi9zMzkwLWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4y MDE0MDYxMy9nZGIvczM5MC1saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5v cmlnL2dkYi9zMzkwLWxpbnV4LW5hdC5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9zMzkwLWxpbnV4LW5hdC5jCTIwMTQtMDUtMTIgMjA6MjI6 NDguNzY3NDcwMDEwICswMjAwCi1AQCAtNTYzLDcgKzU2Myw3IEBAIHMzOTBfY2FuX3VzZV9od19i cmVha3BvaW50IChpbnQgdHlwZSwgaW4KLSB9CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmln L2dkYi9zMzkwLWxpbnV4LW5hdC5jCTIwMTQtMDYtMTYgMjM6Mjc6MDUuMTcyNzQ3MDYzICswMjAw CisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvczM5MC1saW51eC1uYXQuYwkyMDE0LTA2LTE2 IDIzOjI3OjA3Ljg4MTc0OTYyMCArMDIwMAorQEAgLTU2Nyw3ICs1NjcsNyBAQCBzMzkwX2Nhbl91 c2VfaHdfYnJlYWtwb2ludCAoc3RydWN0IHRhcmdlCiAgCiAgc3RhdGljIGludAotLXMzOTBfcmVn aW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGNudCkKLStzMzkw X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgY250 KQorIHMzOTBfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAq c2VsZiwKKy0JCQkJICBDT1JFX0FERFIgYWRkciwgaW50IGNudCkKKysJCQkJICBDT1JFX0FERFIg YWRkciwgTE9OR0VTVCBjbnQpCiAgewogICAgcmV0dXJuIDE7CiAgfQorSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2V4dGVuc2lvbi1wcml2LmgKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43 LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2V4dGVuc2lvbi1wcml2LmgJMjAxNC0wNi0xNiAyMzoyNzow NS4xNzI3NDcwNjMgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9leHRlbnNpb24t cHJpdi5oCTIwMTQtMDYtMTYgMjM6Mjc6MDcuODgxNzQ5NjIwICswMjAwCitAQCAtMTc1LDcgKzE3 NSw3IEBAIHN0cnVjdCBleHRlbnNpb25fbGFuZ3VhZ2Vfb3BzCisgICBlbnVtIGV4dF9sYW5nX3Jj ICgqYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyKQorICAgICAoY29uc3Qgc3RydWN0IGV4dGVuc2lv bl9sYW5ndWFnZV9kZWZuICosCisgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCistICAgICBpbnQgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVz cywKKysgICAgIExPTkdFU1QgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKKyAg ICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAorICAgICAgY29uc3Qgc3Ry dWN0IHZhbHVlICp2YWwsIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25z LAorICAgICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlKTsKK0luZGV4OiBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3B5dGhvbi9weXRob24taW50ZXJu YWwuaAkyMDE0LTA2LTE2IDIzOjI3OjA1LjE3Mjc0NzA2MyArMDIwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAkyMDE0LTA2LTE2IDIzOjI3OjA3 Ljg4MTc0OTYyMCArMDIwMAorQEAgLTMxNyw3ICszMTcsNyBAQCBleHRlcm4gaW50IGdkYnB5X2F1 dG9fbG9hZF9lbmFibGVkIChjb25zCisgZXh0ZXJuIGVudW0gZXh0X2xhbmdfcmMgZ2RicHlfYXBw bHlfdmFsX3ByZXR0eV9wcmludGVyCisgICAoY29uc3Qgc3RydWN0IGV4dGVuc2lvbl9sYW5ndWFn ZV9kZWZuICosCisgICAgc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRy LAorLSAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAorKyAgIExPTkdF U1QgZW1iZWRkZWRfb2Zmc2V0LCBDT1JFX0FERFIgYWRkcmVzcywKKyAgICBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKKyAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKKyAg ICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKK0luZGV4OiBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi90YXJnZXQtZGVsZWdhdGVzLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYwkyMDE0LTA2LTE2 IDIzOjI3OjA1LjE3Mzc0NzA2NCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Rh cmdldC1kZWxlZ2F0ZXMuYwkyMDE0LTA2LTE2IDIzOjI3OjA3Ljg4MTc0OTYyMCArMDIwMAorQEAg LTI2OCw3ICsyNjgsNyBAQCBkZWxlZ2F0ZV93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChz CisgfQorIAorIHN0YXRpYyBpbnQKKy1kZWxlZ2F0ZV9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9p bnQgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgaW50IGFyZzIpCisr ZGVsZWdhdGVfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAq c2VsZiwgQ09SRV9BRERSIGFyZzEsIExPTkdFU1QgYXJnMikKKyB7CisgICBzZWxmID0gc2VsZi0+ YmVuZWF0aDsKKyAgIHJldHVybiBzZWxmLT50b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQg KHNlbGYsIGFyZzEsIGFyZzIpOwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0y MW9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjFvZjI1LnBhdGNoCmluZGV4IDdk MGI2ZmUuLjljYTAwMTAgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMW9mMjUu cGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIxb2YyNS5wYXRjaApAQCAtNTIsMTAg KzUyLDEwIEBAIENvbnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVu Y29kaW5nOiA3Yml0CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1i aXRwb3MtZW5zdXJlLXNpemVfdC5wYXRjaAogCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvYWxwaGEtdGRlcC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYWxwaGEtdGRl cC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9hbHBoYS10 ZGVwLmMJMjAxNC0wMi0wNiAxODoxODo1MS4wMDU2MTY2NzYgKzAxMDAKLSsrKyBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9hbHBoYS10ZGVwLmMJMjAxNC0wMi0wNiAxODoxODo1My42NzE2MjEzNDkg KzAxMDAKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDE0 LTA2LTEzIDIyOjE0OjQ5LjcyNTg0NjM4MyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2FscGhhLXRkZXAuYwkyMDE0LTA2LTEzIDIyOjE0OjUzLjE2Mzg1MDA4MSArMDIwMAogQEAg LTQxNCw2ICs0MTQsMTMgQEAgYWxwaGFfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAq ZwogICAgICBhY2N1bXVsYXRlX3NpemUgPSAwOwogICAgZWxzZQpAQCAtNzAsMTEgKzcwLDExIEBA IEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9hbHBoYS10ZGVwLmMKICAgIHNwIC09IGFj Y3VtdWxhdGVfc2l6ZTsKICAKICAgIC8qIEtlZXAgc3AgYWxpZ25lZCB0byBhIG11bHRpcGxlIG9m IDE2IGFzIHRoZSBBQkkgcmVxdWlyZXMuICAqLwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcv Z2RiL2NwLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9jcC12YWxw cmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9jcC12 YWxwcmludC5jCTIwMTQtMDItMDYgMTg6MTg6NTEuMDA2NjE2Njc3ICswMTAwCi0rKysgZ2RiLTcu Ni45MC4yMDE0MDEyNy9nZGIvY3AtdmFscHJpbnQuYwkyMDE0LTAyLTA2IDE4OjE4OjUzLjY3MTYy MTM0OSArMDEwMAotQEAgLTUzNyw2ICs1MzcsOCBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9jcC12YWxw cmludC5jCTIwMTQtMDYtMTMgMjI6MTQ6NDkuNzI1ODQ2MzgzICswMjAwCisrKysgZ2RiLTcuNy45 MC4yMDE0MDYxMy9nZGIvY3AtdmFscHJpbnQuYwkyMDE0LTA2LTEzIDIyOjE0OjUzLjE2NDg1MDA4 MSArMDIwMAorQEAgLTUzOCw2ICs1MzgsOCBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjCiAgCQkgIGdkYl9ieXRlICpidWY7CiAgCQkgIHN0cnVjdCBjbGVhbnVwICpi YWNrX3RvOwogIApAQCAtODMsMTEgKzgzLDExIEBAIEluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3 L2dkYi9jcC12YWxwcmludC5jCiAgCQkgIGJ1ZiA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNl Y2xhc3MpKTsKICAJCSAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1Zik7CiAgCi1J bmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZHdhcmYybG9jLmMKK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAu MjAxNDAxMjcub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wMi0wNiAxODoxODo1MS4wMDc2MTY2 NzggKzAxMDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi9kd2FyZjJsb2MuYwkyMDE0LTAy LTA2IDE4OjE4OjUzLjY3MjYyMTI5MyArMDEwMAotQEAgLTE4MjEsNiArMTgyMSw4IEBAIHJlYWRf cGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnYpCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5v cmlnL2dkYi9kd2FyZjJsb2MuYwkyMDE0LTA2LTEzIDIyOjE0OjQ5LjcyNjg0NjM4NCArMDIwMAor KysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMmxvYy5jCTIwMTQtMDYtMTMgMjI6MTQ6 NTMuMTY2ODUwMDg0ICswMjAwCitAQCAtMTY2Niw2ICsxNjY2LDggQEAgcmVhZF9waWVjZWRfdmFs dWUgKHN0cnVjdCB2YWx1ZSAqdikKICAKICAgICAgICB0aGlzX3NpemUgPSAodGhpc19zaXplX2Jp dHMgKyBzb3VyY2Vfb2Zmc2V0X2JpdHMgJSA4ICsgNykgLyA4OwogICAgICAgIHNvdXJjZV9vZmZz ZXQgPSBzb3VyY2Vfb2Zmc2V0X2JpdHMgLyA4OwpAQCAtOTYsNyArOTYsNyBAQCBJbmRleDogZ2Ri LTcuNi45MC4yMDE0MDEyNy9nZGIvZHdhcmYybG9jLmMKICAgICAgICBpZiAoYnVmZmVyX3NpemUg PCB0aGlzX3NpemUpCiAgCXsKICAJICBidWZmZXJfc2l6ZSA9IHRoaXNfc2l6ZTsKLUBAIC0yMDEy LDYgKzIwMTQsNyBAQCB3cml0ZV9waWVjZWRfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdG8sIHN0CitA QCAtMTg1Nyw2ICsxODU5LDcgQEAgd3JpdGVfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnRv LCBzdAogIAl9CiAgICAgICAgZWxzZQogIAl7CkBAIC0xMDQsMTAgKzEwNCwxMCBAQCBJbmRleDog Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZHdhcmYybG9jLmMKICAJICBpZiAoYnVmZmVyX3NpemUg PCB0aGlzX3NpemUpCiAgCSAgICB7CiAgCSAgICAgIGJ1ZmZlcl9zaXplID0gdGhpc19zaXplOwot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2ZpbmRjbWQuYworSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL2ZpbmRjbWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAx NDAxMjcub3JpZy9nZGIvZmluZGNtZC5jCTIwMTQtMDItMDYgMTg6MTg6NTEuMDA4NjE2Njc5ICsw MTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZmluZGNtZC5jCTIwMTQtMDItMDYgMTg6 MTg6NTMuNjczNjIxMjM5ICswMTAwCistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9m aW5kY21kLmMJMjAxNC0wNi0xMyAyMjoxNDo0OS43MjY4NDYzODQgKzAyMDAKKysrKyBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9maW5kY21kLmMJMjAxNC0wNi0xMyAyMjoxNDo1My4xNjY4NTAwODQg KzAyMDAKIEBAIC0xODUsNiArMTg1LDcgQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBV TE9OR0VTVCAqbQogIAkgIHNpemVfdCBjdXJyZW50X29mZnNldCA9IHBhdHRlcm5fYnVmX2VuZCAt IHBhdHRlcm5fYnVmOwogIApAQCAtMTE2LDExICsxMTYsMTEgQEAgSW5kZXg6IGdkYi03LjYuOTAu MjAxNDAxMjcvZ2RiL2ZpbmRjbWQuYwogIAkgIHBhdHRlcm5fYnVmID0geHJlYWxsb2MgKHBhdHRl cm5fYnVmLCBwYXR0ZXJuX2J1Zl9zaXplKTsKICAJICBwYXR0ZXJuX2J1Zl9lbmQgPSBwYXR0ZXJu X2J1ZiArIGN1cnJlbnRfb2Zmc2V0OwogIAl9Ci1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9n ZGIvcC12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvcC12YWxwcmlu dC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNi45MC4yMDE0MDEyNy5vcmlnL2dkYi9wLXZhbHBy aW50LmMJMjAxNC0wMi0wNiAxODoxODo1MS4wMDg2MTY2NzkgKzAxMDAKLSsrKyBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi9wLXZhbHByaW50LmMJMjAxNC0wMi0wNiAxODoxODo1My42NzM2MjEyMzkg KzAxMDAKLUBAIC03OTgsNiArNzk4LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3Ry dWN0IHR5cGUgKgorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvcC12YWxwcmludC5j CTIwMTQtMDYtMTMgMjI6MTQ6NDkuNzI4ODQ2Mzg3ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0 MDYxMy9nZGIvcC12YWxwcmludC5jCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY2ODUwMDg0ICswMjAw CitAQCAtNzcyLDYgKzc3Miw3IEBAIHBhc2NhbF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0 eXBlICoKICAJICAgICAgZ2RiX2J5dGUgKmJ1ZjsKICAJICAgICAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG87CiAgCkBAIC0xMjgsMTIgKzEyOCwxMiBAQCBJbmRleDogZ2RiLTcuNi45MC4yMDE0MDEy Ny9nZGIvcC12YWxwcmludC5jCiAgCSAgICAgIGJ1ZiA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChi YXNlY2xhc3MpKTsKICAJICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1Zik7 CiAgCi1JbmRleDogZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdXRpbHMuYworSW5kZXg6IGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3V0aWxzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy42LjkwLjIw MTQwMTI3Lm9yaWcvZ2RiL3V0aWxzLmMJMjAxNC0wMi0wNiAxODoxODo1MS4wMDg2MTY2NzkgKzAx MDAKLSsrKyBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi91dGlscy5jCTIwMTQtMDItMDYgMTg6MTg6 NTMuNjc0NjIxMTg2ICswMTAwCi1AQCAtMzE2OSw2ICszMTY5LDE4IEBAIGhvc3RfYWRkcmVzc190 b19zdHJpbmcgKGNvbnN0IHZvaWQgKmFkZHIKLSAgIHJldHVybiBzdHI7CistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi91dGlscy5jCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY2ODUwMDg0 ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdXRpbHMuYwkyMDE0LTA2LTEzIDIy OjE1OjE2LjgzOTg3NTM0MSArMDIwMAorQEAgLTI4MzgsNiArMjgzOCwxOCBAQCBzdHJpbmdfdG9f Y29yZV9hZGRyIChjb25zdCBjaGFyICpteV9zdHJpCisgICByZXR1cm4gYWRkcjsKICB9CiAgCiAr LyogRW5zdXJlIHRoYXQgdGhlIGlucHV0IE5VTSBpcyBub3QgbGFyZ2VyIHRoYW4gdGhlIG1heGlt dW0gY2FwYWNpdHkgb2YgdGhlCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBJbmRleDogZ2RiLTcuNi45 MC4yMDE0MDEyNy9nZGIvdXRpbHMuYwogIGNoYXIgKgogIGdkYl9yZWFscGF0aCAoY29uc3QgY2hh ciAqZmlsZW5hbWUpCiAgewotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbG9wcy5j CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsb3BzLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy42LjkwLjIwMTQwMTI3Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTQtMDItMDYgMTg6MTg6 NTEuMDA5NjE2NjgwICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdmFsb3BzLmMJ MjAxNC0wMi0wNiAxODoxODo1My42NzU2MjExMzUgKzAxMDAKLUBAIC0yMTg0LDYgKzIxODQsNyBA QCBzZWFyY2hfc3RydWN0X21ldGhvZCAoY29uc3QgY2hhciAqbmFtZSwKKy0tLSBnZGItNy43Ljkw LjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTQtMDYtMTMgMjI6MTQ6NDkuNzMwODQ2Mzg5 ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsb3BzLmMJMjAxNC0wNi0xMyAy MjoxNDo1My4xNjk4NTAwODggKzAyMDAKK0BAIC0yMDc0LDYgKzIwNzQsNyBAQCBzZWFyY2hfc3Ry dWN0X21ldGhvZCAoY29uc3QgY2hhciAqbmFtZSwKICAJICAgICAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG87CiAgCSAgICAgIENPUkVfQUREUiBhZGRyZXNzOwogIApAQCAtMTYzLDExICsxNjMsMTEg QEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbG9wcy5jCiAgCSAgICAgIHRtcCA9 IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKICAJICAgICAgYmFja190byA9IG1h a2VfY2xlYW51cCAoeGZyZWUsIHRtcCk7CiAgCSAgICAgIGFkZHJlc3MgPSB2YWx1ZV9hZGRyZXNz ICgqYXJnMXApOwotSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbHVlLmMKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ni45MC4yMDE0MDEyNy5vcmlnL2dkYi92YWx1ZS5jCTIwMTQtMDItMDYgMTg6MTg6NTEuMDEwNjE2 NjgxICswMTAwCi0rKysgZ2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvdmFsdWUuYwkyMDE0LTAyLTA2 IDE4OjE5OjEwLjI2MTYzNzM5OCArMDEwMAotQEAgLTgyMiw2ICs4MjIsNyBAQCBhbGxvY2F0ZV92 YWx1ZV9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSkKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL3ZhbHVlLmMJMjAxNC0wNi0xMyAyMjoxNDo0OS43MzI4NDYzOTEgKzAyMDAKKysrKyBn ZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTMgMjI6MTQ6NTMuMTY5ODUw MDg4ICswMjAwCitAQCAtODI0LDYgKzgyNCw3IEBAIGFsbG9jYXRlX3ZhbHVlX2xhenkgKHN0cnVj dCB0eXBlICp0eXBlKQogICAgICAgZGVzY3JpcHRpb24gY29ycmVjdGx5LiAgKi8KICAgIGNoZWNr X3R5cGVkZWYgKHR5cGUpOwogIApAQCAtMTc1LDcgKzE3NSw3IEBAIEluZGV4OiBnZGItNy42Ljkw LjIwMTQwMTI3L2dkYi92YWx1ZS5jCiAgICB2YWwgPSAoc3RydWN0IHZhbHVlICopIHh6YWxsb2Mg KHNpemVvZiAoc3RydWN0IHZhbHVlKSk7CiAgICB2YWwtPmNvbnRlbnRzID0gTlVMTDsKICAgIHZh bC0+bmV4dCA9IGFsbF92YWx1ZXM7Ci1AQCAtODUzLDYgKzg1NCw4IEBAIGFsbG9jYXRlX3ZhbHVl X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTg1NSw2ICs4NTYsOCBAQCBhbGxvY2F0ZV92 YWx1ZV9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSkKICBzdGF0aWMgdm9pZAogIGFsbG9jYXRlX3Zh bHVlX2NvbnRlbnRzIChzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CkBAIC0xODQsNyArMTg0LDcgQEAg SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbHVlLmMKICAgIGlmICghdmFsLT5jb250 ZW50cykKICAgICAgdmFsLT5jb250ZW50cyA9IChnZGJfYnl0ZSAqKSB4emFsbG9jIChUWVBFX0xF TkdUSCAodmFsLT5lbmNsb3NpbmdfdHlwZSkpOwogIH0KLUBAIC0yODU0LDggKzI4NTcsMTIgQEAg dm9pZAorQEAgLTI4MzEsOCArMjgzNCwxMiBAQCB2b2lkCiAgc2V0X3ZhbHVlX2VuY2xvc2luZ190 eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHR5cGUgKm5ld19lbmNsX3R5cGUpCiAgewog ICAgaWYgKFRZUEVfTEVOR1RIIChuZXdfZW5jbF90eXBlKSA+IFRZUEVfTEVOR1RIICh2YWx1ZV9l bmNsb3NpbmdfdHlwZSAodmFsKSkpIApAQCAtMTk5LDEwICsxOTksMTAgQEAgSW5kZXg6IGdkYi03 LjYuOTAuMjAxNDAxMjcvZ2RiL3ZhbHVlLmMKICAKICAgIHZhbC0+ZW5jbG9zaW5nX3R5cGUgPSBu ZXdfZW5jbF90eXBlOwogIH0KLUluZGV4OiBnZGItNy42LjkwLjIwMTQwMTI3L2dkYi92YXgtdGRl cC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmF4LXRkZXAuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcub3JpZy9nZGIvdmF4LXRkZXAuYwkyMDE0LTAyLTA2 IDE4OjE4OjUxLjM3MDYxNzA2OCArMDEwMAotKysrIGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Zh eC10ZGVwLmMJMjAxNC0wMi0wNiAxODoxODo1My42NzY2MjEwODYgKzAxMDAKKy0tLSBnZGItNy43 LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZheC10ZGVwLmMJMjAxNC0wNi0xMyAyMjoxNDo0OS43MzI4 NDYzOTEgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YXgtdGRlcC5jCTIwMTQt MDYtMTMgMjI6MTQ6NTMuMTY5ODUwMDg4ICswMjAwCiBAQCAtMjIzLDYgKzIyMyw3IEBAIHZheF9y ZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmMKICAJICBVTE9OR0VTVCBhZGRyOwog IApAQCAtMjExLDExICsyMTEsMTEgQEAgSW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL3Zh eC10ZGVwLmMKICAJICByZWFkX21lbW9yeSAoYWRkciwgcmVhZGJ1ZiwgbGVuKTsKICAJfQogIAot SW5kZXg6IGdkYi03LjYuOTAuMjAxNDAxMjcvZ2RiL2RlZnMuaAorSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL2RlZnMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjYuOTAuMjAxNDAxMjcu b3JpZy9nZGIvZGVmcy5oCTIwMTQtMDItMDYgMTg6MTg6NTEuMzcwNjE3MDY4ICswMTAwCi0rKysg Z2RiLTcuNi45MC4yMDE0MDEyNy9nZGIvZGVmcy5oCTIwMTQtMDItMDYgMTg6MTg6NTMuNjc3NjIx MDM4ICswMTAwCi1AQCAtNzY4LDQgKzc2OCw2IEBAIGVudW0gYmxvY2tfZW51bQorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZGVmcy5oCTIwMTQtMDYtMTMgMjI6MTQ6NDkuNzMyODQ2 MzkxICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZGVmcy5oCTIwMTQtMDYtMTMg MjI6MTQ6NTMuMTY5ODUwMDg4ICswMjAwCitAQCAtNzU2LDQgKzc1Niw2IEBAIGVudW0gYmxvY2tf ZW51bQogIAogICNpbmNsdWRlICJ1dGlscy5oIgogIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1 NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjJvZjI1LnBh dGNoCmluZGV4IDg4NjNiNDIuLjBmMjM4OTUgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0yMm9mMjUucGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRj aApAQCAtOTYsMjkgKzk2LDExIEBAIENvbnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50 LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50 OyBmaWxlbmFtZT1iaXRwb3Mtd3AucGF0Y2gKIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvYXJtLWxp bnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYXJtLWxpbnV4LW5hdC5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE0 LTA1LTMwIDIzOjI0OjE0LjcyODEwMzQ3NiArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYXJtLWxp bnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzgzMTAzNDk5ICswMjAwCi1AQCAtMTEwNSw3 ICsxMTA1LDcgQEAgYXJtX2xpbnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQwotIAot IC8qIEluc2VydCBhIEhhcmR3YXJlIGJyZWFrcG9pbnQuICAqLwotIHN0YXRpYyBpbnQKLS1hcm1f bGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncs Ci0rYXJtX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBs ZW4sIGludCBydywKLSAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0 cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMTEyMyw3ICsxMTIzLDcgQEAgYXJtX2xpbnV4X2luc2Vy dF93YXRjaHBvaW50IChDT1JFX0FERFIgYQotIAotIC8qIFJlbW92ZSBhIGhhcmR3YXJlIGJyZWFr cG9pbnQuICAqLwotIHN0YXRpYyBpbnQKLS1hcm1fbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0rYXJtX2xpbnV4X3JlbW92ZV93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCBydywKLSAJCQkgICAgIHN0cnVj dCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMTE4 MCw3ICsxMTgwLDcgQEAgYXJtX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKKy0t LSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2FybS1saW51eC1uYXQuYwkyMDE0LTA2LTEz IDIyOjIzOjA5LjYzMDQ0MDY5OSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2Fy bS1saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIyOjIzOjU0LjY2NjQ5MjE5OSArMDIwMAorQEAgLTEy OTYsNyArMTI5Niw3IEBAIGFybV9saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHN0cnVjdAog IHN0YXRpYyBpbnQKICBhcm1fbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3Ry dWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJCUNPUkVfQUREUiBhZGRyLApAQCAtMTI3LDE1 MSArMTA5LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FybS1saW51eC1uYXQuYwogIHsKICAg IHJldHVybiBzdGFydCA8PSBhZGRyICYmIHN0YXJ0ICsgbGVuZ3RoIC0gMSA+PSBhZGRyOwogIH0K LUluZGV4OiBnZGItNy43LjEvZ2RiL2kzODYtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy43 LjEub3JpZy9nZGIvaTM4Ni1uYXQuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0MjEwMzQ4MiArMDIw MAotKysrIGdkYi03LjcuMS9nZGIvaTM4Ni1uYXQuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc4MzEw MzQ5OSArMDIwMAotQEAgLTU4OSw3ICs1ODksNyBAQCBpMzg2X3VwZGF0ZV9pbmZlcmlvcl9kZWJ1 Z19yZWdzIChzdHJ1Y3QKLSAgICBvZiB0aGUgdHlwZSBUWVBFLiAgUmV0dXJuIDAgb24gc3VjY2Vz cywgLTEgb24gZmFpbHVyZS4gICovCi0gCi0gc3RhdGljIGludAotLWkzODZfaW5zZXJ0X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStpMzg2X2luc2VydF93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCXN0 cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0 ZSAqc3RhdGUKLUBAIC02MjcsNyArNjI3LDcgQEAgaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsCi0gICAgYWRkcmVzcyBBRERSLCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVz LCBhbmQgZm9yIGFjY2Vzc2VzIG9mIHRoZQotICAgIHR5cGUgVFlQRS4gIFJldHVybiAwIG9uIHN1 Y2Nlc3MsIC0xIG9uIGZhaWx1cmUuICAqLwotIHN0YXRpYyBpbnQKLS1pMzg2X3JlbW92ZV93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0raTM4Nl9yZW1vdmVf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQlz dHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3Rh dGUgKnN0YXRlCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9pYTY0LWxpbnV4LW5hdC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL2lhNjQtbGludXgtbmF0LmMJMjAxNC0wNS0wNSAy Mzo1MToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL2lhNjQtbGludXgtbmF0 LmMJMjAxNC0wNS0zMCAyMzoyNDoxNC43ODQxMDM1MDAgKzAyMDAKLUBAIC01NDIsNyArNTQyLDcg QEAgaXNfcG93ZXJfb2ZfMiAoaW50IHZhbCkKLSB9Ci0gCi0gc3RhdGljIGludAotLWlhNjRfbGlu dXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0r aWE2NF9saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVu LCBpbnQgcncsCi0gCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgc3Ry dWN0IGx3cF9pbmZvICpscDsKLUBAIC01OTYsNyArNTk2LDcgQEAgaWE2NF9saW51eF9pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSCi0gfQotIAotIHN0YXRpYyBpbnQKLS1pYTY0X2xpbnV4X3Jl bW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0raWE2 NF9saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBp bnQgdHlwZSwKLSAJCQkgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBpbnQg aWR4OwotSW5kZXg6IGdkYi03LjcuMS9nZGIvaW5mLXR0cmFjZS5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNy4xLm9yaWcvZ2RiL2luZi10dHJhY2UuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0MjEw MzQ4MiArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvaW5mLXR0cmFjZS5jCTIwMTQtMDUtMzAgMjM6 MjQ6MTQuNzg0MTAzNTAwICswMjAwCi1AQCAtMzE0LDE0ICszMTQsMTQgQEAgaW5mX3R0cmFjZV9k aXNhYmxlX3BhZ2VfcHJvdGVjdGlvbnMgKHBpZAotICAgIHR5cGUgVFlQRS4gICovCi0gCi0gc3Rh dGljIGludAotLWluZl90dHJhY2VfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBp bnQgbGVuLCBpbnQgdHlwZSwKLStpbmZfdHRyYWNlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCSAgICAgIHN0cnVjdCBleHByZXNz aW9uICpjb25kKQotIHsKLSAgIGNvbnN0IGludCBwYWdlc2l6ZSA9IGluZl90dHJhY2VfcGFnZV9k aWN0LnBhZ2VzaXplOwotICAgcGlkX3QgcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlk KTsKLSAgIENPUkVfQUREUiBwYWdlX2FkZHI7Ci0tICBpbnQgbnVtX3BhZ2VzOwotLSAgaW50IHBh Z2U7Ci0rICBMT05HRVNUIG51bV9wYWdlczsKLSsgIExPTkdFU1QgcGFnZTsKLSAKLSAgIGdkYl9h c3NlcnQgKHR5cGUgPT0gaHdfd3JpdGUpOwotIAotQEAgLTMzOCwxNCArMzM4LDE0IEBAIGluZl90 dHJhY2VfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUgotICAgIHR5cGUgVFlQRS4gICovCi0g Ci0gc3RhdGljIGludAotLWluZl90dHJhY2VfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStpbmZfdHRyYWNlX3JlbW92ZV93YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCSAgICAgIHN0cnVjdCBl eHByZXNzaW9uICpjb25kKQotIHsKLSAgIGNvbnN0IGludCBwYWdlc2l6ZSA9IGluZl90dHJhY2Vf cGFnZV9kaWN0LnBhZ2VzaXplOwotICAgcGlkX3QgcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlv cl9wdGlkKTsKLSAgIENPUkVfQUREUiBwYWdlX2FkZHI7Ci0tICBpbnQgbnVtX3BhZ2VzOwotLSAg aW50IHBhZ2U7Ci0rICBMT05HRVNUIG51bV9wYWdlczsKLSsgIExPTkdFU1QgcGFnZTsKLSAKLSAg IGdkYl9hc3NlcnQgKHR5cGUgPT0gaHdfd3JpdGUpOwotIAotSW5kZXg6IGdkYi03LjcuMS9nZGIv bWlwcy1saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9taXBz LWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzQ0MTAzNDgzICswMjAwCi0rKysgZ2Ri LTcuNy4xL2dkYi9taXBzLWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzg0MTAzNTAw ICswMjAwCi1AQCAtNjQ0LDcgKzY0NCw3IEBAIG1pcHNfbGludXhfbmV3X3RocmVhZCAoc3RydWN0 IGx3cF9pbmZvICoKLSAgICB3YXRjaC4gIFJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuICAqLwotIAot IHN0YXRpYyBpbnQKLS1taXBzX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgaW50IGxlbiwgaW50IHR5cGUsCi0rbWlwc19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQkgICAgICBzdHJ1Y3QgZXhw cmVzc2lvbiAqY29uZCkKLSB7Ci0gICBzdHJ1Y3QgcHRfd2F0Y2hfcmVncyByZWdzOwotQEAgLTY5 Nyw3ICs2OTcsNyBAQCBtaXBzX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIKLSAg ICBSZXR1cm4gemVybyBvbiBzdWNjZXNzLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tbWlwc19saW51 eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAot K21pcHNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxl biwgaW50IHR5cGUsCi0gCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAg aW50IHJldHZhbDsKLUluZGV4OiBnZGItNy43LjEvZ2RiL250by1wcm9jZnMuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi9udG8tcHJvY2ZzLmMJMjAxNC0wNS0wNSAyMzo1MToy NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL250by1wcm9jZnMuYwkyMDE0LTA1 LTMwIDIzOjI0OjE0Ljc4NTEwMzUwMCArMDIwMAotQEAgLTY5LDEwICs2OSwxMCBAQCBzdGF0aWMg cHRpZF90IGRvX2F0dGFjaCAocHRpZF90IHB0aWQpOwotIAotIHN0YXRpYyBpbnQgcHJvY2ZzX2Nh bl91c2VfaHdfYnJlYWtwb2ludCAoaW50LCBpbnQsIGludCk7Ci0gCi0tc3RhdGljIGludCBwcm9j ZnNfaW5zZXJ0X2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlw ZSwKLStzdGF0aWMgaW50IHByb2Nmc19pbnNlcnRfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQkJCXN0cnVjdCBleHByZXNzaW9uICpjb25k KTsKLSAKLS1zdGF0aWMgaW50IHByb2Nmc19yZW1vdmVfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotK3N0YXRpYyBpbnQgcHJvY2ZzX3JlbW92ZV9od193 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCQkJ c3RydWN0IGV4cHJlc3Npb24gKmNvbmQpOwotIAotIHN0YXRpYyBpbnQgcHJvY2ZzX3N0b3BwZWRf Ynlfd2F0Y2hwb2ludCAodm9pZCk7Ci1AQCAtMTQ5NCwxNCArMTQ5NCwxNCBAQCBwcm9jZnNfY2Fu X3VzZV9od19icmVha3BvaW50IChpbnQgdHlwZSwKLSB9Ci0gCi0gc3RhdGljIGludAotLXByb2Nm c19yZW1vdmVfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBl LAotK3Byb2Nmc19yZW1vdmVfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1Qg bGVuLCBpbnQgdHlwZSwKLSAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAg IHJldHVybiBwcm9jZnNfaHdfd2F0Y2hwb2ludCAoYWRkciwgLTEsIHR5cGUpOwotIH0KLSAKLSBz dGF0aWMgaW50Ci0tcHJvY2ZzX2luc2VydF9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwg aW50IGxlbiwgaW50IHR5cGUsCi0rcHJvY2ZzX2luc2VydF9od193YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAotIAkJCSAgICAgc3RydWN0IGV4cHJlc3Np b24gKmNvbmQpCi0gewotICAgcmV0dXJuIHByb2Nmc19od193YXRjaHBvaW50IChhZGRyLCBsZW4s IHR5cGUpOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvcHBjLWxpbnV4LW5hdC5jCitJbmRleDogZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvcHBjLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNy4xLm9yaWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0NTEw MzQ4MyArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAg MjM6MjQ6MTQuNzg2MTAzNTAxICswMjAwCi1AQCAtMTg1MywxMSArMTg1MywxMSBAQCBjYW5fdXNl X3dhdGNocG9pbnRfY29uZF9hY2NlbCAodm9pZCkKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9y aWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIyOjIzOjA5LjYzNTQ0MDcwNCArMDIw MAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDE0LTA2LTEz IDIyOjIzOjU0LjY3MjQ5MjIwNiArMDIwMAorQEAgLTE4NTcsMTEgKzE4NTcsMTEgQEAgY2FuX3Vz ZV93YXRjaHBvaW50X2NvbmRfYWNjZWwgKHZvaWQpCiAgICAgQ09ORElUSU9OX1ZBTFVFIHdpbGwg aG9sZCB0aGUgdmFsdWUgd2hpY2ggc2hvdWxkIGJlIHB1dCBpbiB0aGUKICAgICBEVkMgcmVnaXN0 ZXIuICAqLwogIHN0YXRpYyB2b2lkCkBAIC0yODYsNyArMTI4LDcgQEAgSW5kZXg6IGdkYi03Ljcu MS9nZGIvcHBjLWxpbnV4LW5hdC5jCiAgICBDT1JFX0FERFIgYWRkcl9lbmRfZGF0YSwgYWRkcl9l bmRfZHZjOwogIAogICAgLyogVGhlIERWQyByZWdpc3RlciBjb21wYXJlcyBieXRlcyB3aXRoaW4g Zml4ZWQtbGVuZ3RoIHdpbmRvd3Mgd2hpY2gKLUBAIC0xOTQ0LDcgKzE5NDQsNyBAQCBudW1fbWVt b3J5X2FjY2Vzc2VzIChzdHJ1Y3QgdmFsdWUgKnYpCitAQCAtMTk0OCw3ICsxOTQ4LDcgQEAgbnVt X21lbW9yeV9hY2Nlc3NlcyAoc3RydWN0IHZhbHVlICp2KQogICAgIG9mIHRoZSBjb25zdGFudC4g ICovCiAgc3RhdGljIGludAogIGNoZWNrX2NvbmRpdGlvbiAoQ09SRV9BRERSIHdhdGNoX2FkZHIs IHN0cnVjdCBleHByZXNzaW9uICpjb25kLApAQCAtMjk1LDE2ICsxMzcsNyBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi9wcGMtbGludXgtbmF0LmMKICB7CiAgICBpbnQgcGMgPSAxLCBudW1fYWNjZXNz ZXNfbGVmdCwgbnVtX2FjY2Vzc2VzX3JpZ2h0OwogICAgc3RydWN0IHZhbHVlICpsZWZ0X3ZhbCwg KnJpZ2h0X3ZhbCwgKmxlZnRfY2hhaW4sICpyaWdodF9jaGFpbjsKLUBAIC0yMDExLDcgKzIwMTEs NyBAQCBjaGVja19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzCi0gICAgdGhlIGNv bmRpdGlvbiBleHByZXNzaW9uLCB0aHVzIG9ubHkgdHJpZ2dlcmluZyB0aGUgd2F0Y2hwb2ludCB3 aGVuIGl0IGlzCi0gICAgdHJ1ZS4gICovCi0gc3RhdGljIGludAotLXBwY19saW51eF9jYW5fYWNj ZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncs Ci0rcHBjX2xpbnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbiAoQ09SRV9BRERSIGFk ZHIsIExPTkdFU1QgbGVuLCBpbnQgcncsCi0gCQkJCQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25k KQotIHsKLSAgIENPUkVfQUREUiBkYXRhX3ZhbHVlOwotQEAgLTIwMjgsNyArMjAyOCw3IEBAIHBw Y19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24KK0BAIC0yMDMzLDcgKzIwMzMs NyBAQCBwcGNfbGludXhfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uCiAgCiAgc3RhdGlj IHZvaWQKICBjcmVhdGVfd2F0Y2hwb2ludF9yZXF1ZXN0IChzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9p bnQgKnAsIENPUkVfQUREUiBhZGRyLApAQCAtMzEzLDI1ICsxNDYsNyBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi9wcGMtbGludXgtbmF0LmMKICAJCQkgICBpbnQgaW5zZXJ0KQogIHsKICAgIGlmIChs ZW4gPT0gMQotQEAgLTIwNzMsNyArMjA3Myw3IEBAIGNyZWF0ZV93YXRjaHBvaW50X3JlcXVlc3Qg KHN0cnVjdCBwcGNfaHcKLSB9Ci0gCi0gc3RhdGljIGludAotLXBwY19saW51eF9pbnNlcnRfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydywKLStwcGNfbGludXhfaW5z ZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHJ3LAotIAkJ CSAgICAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgc3RydWN0IGx3cF9pbmZvICps cDsKLUBAIC0yMTQxLDcgKzIxNDEsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENP UkVfQUREUiBhCi0gfQotIAotIHN0YXRpYyBpbnQKLS1wcGNfbGludXhfcmVtb3ZlX3dhdGNocG9p bnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCi0rcHBjX2xpbnV4X3JlbW92ZV93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCBydywKLSAJCQkgICAg IHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1A QCAtMjI5Miw3ICsyMjkyLDcgQEAgcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9p ZCkKK0BAIC0yMjk5LDcgKzIyOTksNyBAQCBwcGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50 IChzdHJ1Y3QKICBzdGF0aWMgaW50CiAgcHBjX2xpbnV4X3dhdGNocG9pbnRfYWRkcl93aXRoaW5f cmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCQlDT1JFX0FERFIgYWRkciwK QEAgLTM0MCwxMSArMTU1LDExIEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3BwYy1saW51eC1uYXQu YwogIHsKICAgIGludCBtYXNrOwogIAotSW5kZXg6IGdkYi03LjcuMS9nZGIvcHJvY2ZzLmMKK0lu ZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjcuMS5vcmlnL2dkYi9wcm9jZnMuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc0NjEwMzQ4NCAr MDIwMAotKysrIGdkYi03LjcuMS9nZGIvcHJvY2ZzLmMJMjAxNC0wNS0zMCAyMzoyNDoxNC43ODcx MDM1MDEgKzAyMDAKLUBAIC0yNDI4LDcgKzI0MjgsNyBAQCBwcm9jZnNfYWRkcmVzc190b19ob3N0 X3BvaW50ZXIgKENPUkVfQURECistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9wcm9j ZnMuYwkyMDE0LTA2LTEzIDIyOjIzOjA5LjYzODQ0MDcwOCArMDIwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3Byb2Nmcy5jCTIwMTQtMDYtMTMgMjI6MjM6NTQuNjczNDkyMjA3ICswMjAw CitAQCAtMjQyOSw3ICsyNDI5LDcgQEAgcHJvY2ZzX2FkZHJlc3NfdG9faG9zdF9wb2ludGVyIChD T1JFX0FERAogICNlbmRpZgogIAogIHN0YXRpYyBpbnQKQEAgLTM1Myw3ICsxNjgsNyBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi9wcm9jZnMuYwogIHsKICAjaWYgIWRlZmluZWQgKFBDV0FUQ0gpICYm ICFkZWZpbmVkIChQSU9DU1dBVENIKQogICAgLyogSWYgbmVpdGhlciBvciB0aGVzZSBpcyBkZWZp bmVkLCB3ZSBjYW4ndCBzdXBwb3J0IHdhdGNocG9pbnRzLgotQEAgLTQ3NzQsNyArNDc3NCw3IEBA IHByb2Nmc19waWRfdG9fc3RyIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3AKK0BAIC00NzYyLDcgKzQ3 NjIsNyBAQCBwcm9jZnNfcGlkX3RvX3N0ciAoc3RydWN0IHRhcmdldF9vcHMgKm9wCiAgLyogSW5z ZXJ0IGEgd2F0Y2hwb2ludC4gICovCiAgCiAgc3RhdGljIGludApAQCAtMzYyLDEwMiArMTc3LDEx IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3Byb2Nmcy5jCiAgCQkgICAgICAgaW50IGFmdGVyKQog IHsKICAjaWZuZGVmIEFJWDUKLUBAIC00ODk1LDcgKzQ4OTUsNyBAQCBwcm9jZnNfc3RvcHBlZF9k YXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnCi0gfQotIAotIHN0YXRpYyBpbnQKLS1wcm9jZnNfaW5z ZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStwcm9j ZnNfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5 cGUsCi0gCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBpZiAoIXRhcmdldF9o YXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50Ci1AQCAtNDkxNyw3ICs0OTE3LDcgQEAgcHJvY2ZzX2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgotIH0KLSAKLSBzdGF0aWMgaW50Ci0tcHJv Y2ZzX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUs Ci0rcHJvY2ZzX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4s IGludCB0eXBlLAotIAkJCSAgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgcmV0dXJu IHByb2Nmc19zZXRfd2F0Y2hwb2ludCAoaW5mZXJpb3JfcHRpZCwgYWRkciwgMCwgMCwgMCk7Ci1J bmRleDogZ2RiLTcuNy4xL2dkYi9yZW1vdGUtbTMyci1zZGkuYworSW5kZXg6IGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL3JlbW90ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2Ri L3JlbW90ZS1tMzJyLXNkaS5jCTIwMTQtMDUtMDUgMjM6NTE6MjQuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNy4xL2dkYi9yZW1vdGUtbTMyci1zZGkuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc4 ODEwMzUwMiArMDIwMAotQEAgLTE0MTUsMTQgKzE0MTUsMTUgQEAgbTMycl9jYW5fdXNlX2h3X3dh dGNocG9pbnQgKGludCB0eXBlLCBpbgotICAgIHdhdGNocG9pbnQuICAqLwotIAotIHN0YXRpYyBp bnQKLS1tMzJyX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHR5cGUsCi0rbTMycl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1Qg bGVuLCBpbnQgdHlwZSwKLSAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBpbnQg aTsKLSAKLSAgIGlmIChyZW1vdGVfZGVidWcpCi0tICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywgIm0zMnJfaW5zZXJ0X3dhdGNocG9pbnQoJXMsJWQsJWQpXG4iLAotLQkJCXBhZGRy ZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgYWRkciksIGxlbiwgdHlwZSk7Ci0rICAgIGZwcmludGZf dW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIm0zMnJfaW5zZXJ0X3dhdGNocG9pbnQoJXMsJXMsJWQp XG4iLAotKwkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgYWRkciksIHBsb25nZXN0IChs ZW4pLAotKwkJCXR5cGUpOwotIAotICAgZm9yIChpID0gMDsgaSA8IE1BWF9BQ0NFU1NfQlJFQUtT OyBpKyspCi0gICAgIHsKLUBAIC0xNDQwLDE0ICsxNDQxLDE1IEBAIG0zMnJfaW5zZXJ0X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLAotIH0KLSAKLSBzdGF0aWMgaW50Ci0tbTMycl9yZW1vdmVf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotK20zMnJfcmVt b3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0g CQkJc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgaW50IGk7Ci0gCi0gICBpZiAocmVt b3RlX2RlYnVnKQotLSAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJtMzJyX3Jl bW92ZV93YXRjaHBvaW50KCVzLCVkLCVkKVxuIiwKLS0JCQlwYWRkcmVzcyAodGFyZ2V0X2dkYmFy Y2ggKCksIGFkZHIpLCBsZW4sIHR5cGUpOwotKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csICJtMzJyX3JlbW92ZV93YXRjaHBvaW50KCVzLCVzLCVkKVxuIiwKLSsJCQlwYWRkcmVz cyAodGFyZ2V0X2dkYmFyY2ggKCksIGFkZHIpLCBwbG9uZ2VzdCAobGVuKSwKLSsJCQl0eXBlKTsK LSAKLSAgIGZvciAoaSA9IDA7IGkgPCBNQVhfQUNDRVNTX0JSRUFLUzsgaSsrKQotICAgICB7Ci1J bmRleDogZ2RiLTcuNy4xL2dkYi9yZW1vdGUtbWlwcy5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Ny4xLm9yaWcvZ2RiL3JlbW90ZS1taXBzLmMJMjAxNC0wNS0wNSAyMzo1MToyNC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3JlbW90ZS1taXBzLmMJMjAxNC0wNS0zMCAyMzoyNDox NC43ODkxMDM1MDIgKzAyMDAKLUBAIC0yNDI0LDcgKzI0MjQsNyBAQCBjYWxjdWxhdGVfbWFzayAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4pCi0gICAgd2F0Y2hwb2ludC4gICovCi0gCi0gc3RhdGlj IGludAotLW1pcHNfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBp bnQgdHlwZSwKLSttaXBzX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VT VCBsZW4sIGludCB0eXBlLAotIAkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIGlm IChtaXBzX3NldF9icmVha3BvaW50IChhZGRyLCBsZW4sIHR5cGUpKQotQEAgLTI0MzYsNyArMjQz Niw3IEBAIG1pcHNfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAotIC8qIFJlbW92 ZSBhIHdhdGNocG9pbnQuICAqLwotIAotIHN0YXRpYyBpbnQKLS1taXBzX3JlbW92ZV93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rbWlwc19yZW1vdmVfd2F0 Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlwZSwKLSAJCQlzdHJ1 Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBpZiAobWlwc19jbGVhcl9icmVha3BvaW50IChh ZGRyLCBsZW4sIHR5cGUpKQotSW5kZXg6IGdkYi03LjcuMS9nZGIvcmVtb3RlLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvcmVtb3RlLmMJMjAxNC0wNS0zMCAyMzoyNDoxNC43 NDgxMDM0ODQgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3JlbW90ZS5jCTIwMTQtMDUtMzAgMjM6 MjQ6MTQuNzkxMTAzNTAzICswMjAwCi1AQCAtODMyMiw3ICs4MzIyLDcgQEAgd2F0Y2hwb2ludF90 b19aX3BhY2tldCAoaW50IHR5cGUpCi0gfQotIAotIHN0YXRpYyBpbnQKLS1yZW1vdGVfaW5zZXJ0 X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStyZW1vdGVf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUs Ci0gCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKLSB7Ci0gICBzdHJ1Y3QgcmVtb3RlX3N0 YXRlICpycyA9IGdldF9yZW1vdGVfc3RhdGUgKCk7Ci1AQCAtODM0Miw3ICs4MzQyLDcgQEAgcmVt b3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgorLS0tIGdkYi03LjcuOTAuMjAx NDA2MTMub3JpZy9nZGIvcmVtb3RlLmMJMjAxNC0wNi0xMyAyMjoyMzowOS42NDM0NDA3MTMgKzAy MDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9yZW1vdGUuYwkyMDE0LTA2LTEzIDIyOjIz OjU0LjY4MDQ5MjIxNSArMDIwMAorQEAgLTgxOTksNyArODE5OSw3IEBAIHJlbW90ZV9pbnNlcnRf d2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF8KICAgIHAgPSBzdHJjaHIgKHJzLT5idWYsICdcMCcp OwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRkcik7CiAgICBwICs9IGhleG51 bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTQ2Niw3ICsxOTAsNyBAQCBJbmRleDogZ2Ri LTcuNy4xL2dkYi9yZW1vdGUuYwogIAogICAgcHV0cGt0IChycy0+YnVmKTsKICAgIGdldHBrdCAo JnJzLT5idWYsICZycy0+YnVmX3NpemUsIDApOwotQEAgLTgzNjIsNyArODM2Miw3IEBAIHJlbW90 ZV9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIKK0BAIC04MjE5LDcgKzgyMTksNyBA QCByZW1vdGVfaW5zZXJ0X3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfCiAgCiAgc3RhdGljIGlu dAogIHJlbW90ZV93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29w cyAqdGFyZ2V0LCBDT1JFX0FERFIgYWRkciwKQEAgLTQ3NSwxNiArMTk5LDcgQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvcmVtb3RlLmMKICB7CiAgICBDT1JFX0FERFIgZGlmZiA9IHJlbW90ZV9hZGRy ZXNzX21hc2tlZCAoYWRkciAtIHN0YXJ0KTsKICAKLUBAIC04MzcxLDcgKzgzNzEsNyBAQCByZW1v dGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RyCi0gCi0gCi0gc3RhdGljIGludAot LXJlbW90ZV9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0 eXBlLAotK3JlbW90ZV9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1Qg bGVuLCBpbnQgdHlwZSwKLSAJCQkgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0 cnVjdCByZW1vdGVfc3RhdGUgKnJzID0gZ2V0X3JlbW90ZV9zdGF0ZSAoKTsKLUBAIC04MzkxLDcg KzgzOTEsNyBAQCByZW1vdGVfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyCitAQCAt ODI0OSw3ICs4MjQ5LDcgQEAgcmVtb3RlX3JlbW92ZV93YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0 XwogICAgcCA9IHN0cmNociAocnMtPmJ1ZiwgJ1wwJyk7CiAgICBhZGRyID0gcmVtb3RlX2FkZHJl c3NfbWFza2VkIChhZGRyKTsKICAgIHAgKz0gaGV4bnVtc3RyIChwLCAoVUxPTkdFU1QpIGFkZHIp OwpAQCAtNDkzLDkyICsyMDgsMjkgQEAgSW5kZXg6IGdkYi03LjcuMS9nZGIvcmVtb3RlLmMKICAg IHB1dHBrdCAocnMtPmJ1Zik7CiAgICBnZXRwa3QgKCZycy0+YnVmLCAmcnMtPmJ1Zl9zaXplLCAw KTsKICAKLUluZGV4OiBnZGItNy43LjEvZ2RiL3MzOTAtbGludXgtbmF0LmMKK0luZGV4OiBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi90YXJnZXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5v cmlnL2dkYi9zMzkwLWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzU0MTAzNDg3ICsw MjAwCi0rKysgZ2RiLTcuNy4xL2dkYi9zMzkwLWxpbnV4LW5hdC5jCTIwMTQtMDUtMzAgMjM6MjQ6 MTQuNzkxMTAzNTAzICswMjAwCi1AQCAtNTA4LDcgKzUwOCw3IEBAIHMzOTBfZml4X3dhdGNoX3Bv aW50cyAoc3RydWN0IGx3cF9pbmZvICoKLSB9Ci0gCi0gc3RhdGljIGludAotLXMzOTBfaW5zZXJ0 X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLStzMzkwX2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4sIGludCB0eXBlLAot IAkJCXN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7 Ci1AQCAtNTI5LDcgKzUyOSw3IEBAIHMzOTBfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLAotIH0KLSAKLSBzdGF0aWMgaW50Ci0tczM5MF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAotK3MzOTBfcmVtb3ZlX3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJc3RydWN0IGV4cHJlc3Np b24gKmNvbmQpCi0gewotICAgc3RydWN0IGx3cF9pbmZvICpscDsKLUluZGV4OiBnZGItNy43LjEv Z2RiL3RhcmdldC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3RhcmdldC5j CTIwMTQtMDUtMzAgMjM6MjQ6MTQuNzUwMTAzNDg1ICswMjAwCi0rKysgZ2RiLTcuNy4xL2dkYi90 YXJnZXQuYwkyMDE0LTA1LTMwIDIzOjI0OjE0Ljc5MjEwMzUwMyArMDIwMAotQEAgLTUwLDcgKzUw LDcgQEAgc3RhdGljIHZvaWQgdGFyZ2V0X2luZm8gKGNoYXIgKiwgaW50KTsKLSBzdGF0aWMgdm9p ZCBkZWZhdWx0X3Rlcm1pbmFsX2luZm8gKGNvbnN0IGNoYXIgKiwgaW50KTsKKy0tLSBnZGItNy43 LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3RhcmdldC5jCTIwMTQtMDYtMTMgMjI6MjM6MDkuNjQ1NDQw NzE2ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGFyZ2V0LmMJMjAxNC0wNi0x MyAyMjoyNjoyNC4wNzc2NjE2MDEgKzAyMDAKK0BAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2b2lk IHRhcmdldF9pbmZvIChjaGFyICosIGludCk7Cisgc3RhdGljIHZvaWQgZGVmYXVsdF90ZXJtaW5h bF9pbmZvIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBjb25zdCBjaGFyICosIGludCk7CiAgCiAgc3Rh dGljIGludCBkZWZhdWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJn ZXRfb3BzICosCiAtCQkJCQkJIENPUkVfQUREUiwgQ09SRV9BRERSLCBpbnQpOwogKwkJCQkJCSBD T1JFX0FERFIsIENPUkVfQUREUiwgTE9OR0VTVCk7CiAgCi0gc3RhdGljIGludCBkZWZhdWx0X3Jl Z2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBMT05HRVNUKTsKLSAKLUBAIC0x MDMsMTAgKzEwMywxMCBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX2luc2VydF9od19icmVha3BvaW50 Ci0gc3RhdGljIGludCBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFy Y2ggKiwKLSAJCQkJCSAgc3RydWN0IGJwX3RhcmdldF9pbmZvICopOwotIAotLXN0YXRpYyBpbnQg ZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiwgaW50LCBpbnQsCi0rc3RhdGlj IGludCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBMT05HRVNULCBpbnQs Ci0gCQkJCSAgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSAKLS1zdGF0aWMgaW50IGRlYnVn X3RvX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50LAotK3N0YXRpYyBpbnQg ZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiwgTE9OR0VTVCwgaW50LAotIAkJ CQkgICAgICAgc3RydWN0IGV4cHJlc3Npb24gKik7Ci0gCi0gc3RhdGljIGludCBkZWJ1Z190b19z dG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaWQpOwotQEAgLTExNCwxMSArMTE0LDEyIEBAIHN0YXRp YyBpbnQgZGVidWdfdG9fc3RvcHBlZF9ieV93YXRjaHBvaW4KKyBzdGF0aWMgaW50IGRlZmF1bHRf cmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAorIAkJCQkJ CUNPUkVfQUREUiwgTE9OR0VTVCk7CitAQCAtMTUwLDcgKzE1MCw3IEBAIHN0YXRpYyBpbnQgZGVi dWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKHMKICBzdGF0aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRf ZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKik7CiAgCiAgc3Rh dGljIGludCBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFy Z2V0X29wcyAqLAogLQkJCQkJCSAgQ09SRV9BRERSLCBDT1JFX0FERFIsIGludCk7Ci0rCQkJCQkJ ICBDT1JFX0FERFIsIENPUkVfQUREUiwKLSsJCQkJCQkgIExPTkdFU1QpOworKwkJCQkJCSAgQ09S RV9BRERSLCBDT1JFX0FERFIsIExPTkdFU1QpOwogIAotIHN0YXRpYyBpbnQgZGVidWdfdG9fcmVn aW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIsIExPTkdFU1QpOwotIAotLXN0YXRp YyBpbnQgZGVidWdfdG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIs IGludCwgaW50LAotK3N0YXRpYyBpbnQgZGVidWdfdG9fY2FuX2FjY2VsX3dhdGNocG9pbnRfY29u ZGl0aW9uIChDT1JFX0FERFIsIExPTkdFU1QsIGludCwKLSAJCQkJCQkgICAgc3RydWN0IGV4cHJl c3Npb24gKik7Ci0gCi0gc3RhdGljIHZvaWQgZGVidWdfdG9fdGVybWluYWxfaW5pdCAodm9pZCk7 Ci1AQCAtNzM5LDEwICs3NDAsMTAgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQotIAkg ICAgKGludCAoKikgKHN0cnVjdCBnZGJhcmNoICosIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqKSkK LSAJICAgIHJldHVybl9taW51c19vbmUpOwotICAgZGVfZmF1bHQgKHRvX2luc2VydF93YXRjaHBv aW50LAotLQkgICAgKGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQsIHN0cnVjdCBleHByZXNz aW9uICopKQotKwkgICAgKGludCAoKikgKENPUkVfQUREUiwgTE9OR0VTVCwgaW50LCBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqKSkKLSAJICAgIHJldHVybl9taW51c19vbmUpOwotICAgZGVfZmF1bHQgKHRv X3JlbW92ZV93YXRjaHBvaW50LAotLQkgICAgKGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQs IHN0cnVjdCBleHByZXNzaW9uICopKQotKwkgICAgKGludCAoKikgKENPUkVfQUREUiwgTE9OR0VT VCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKSkKLSAJICAgIHJldHVybl9taW51c19vbmUpOwot ICAgZGVfZmF1bHQgKHRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCwKLSAJICAgIChpbnQgKCopICh2 b2lkKSkKLUBAIC03NTUsNyArNzU2LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQot ICAgZGVfZmF1bHQgKHRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCwKLSAJICAgIGRlZmF1 bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50KTsKLSAgIGRlX2ZhdWx0ICh0b19jYW5fYWNj ZWxfd2F0Y2hwb2ludF9jb25kaXRpb24sCi0tICAgICAgICAgICAgKGludCAoKikgKENPUkVfQURE UiwgaW50LCBpbnQsIHN0cnVjdCBleHByZXNzaW9uICopKQotKyAgICAgICAgICAgIChpbnQgKCop IChDT1JFX0FERFIsIExPTkdFU1QsIGludCwgc3RydWN0IGV4cHJlc3Npb24gKikpCi0gICAgICAg ICAgICAgcmV0dXJuX3plcm8pOwotICAgZGVfZmF1bHQgKHRvX3Rlcm1pbmFsX2luaXQsCi0gCSAg ICAodm9pZCAoKikgKHZvaWQpKQotQEAgLTM1OTgsNyArMzU5OSw3IEBAIGRlZmF1bHRfcmVnaW9u X29rX2Zvcl9od193YXRjaHBvaW50IChDT1IKKyBzdGF0aWMgaW50IGRlYnVnX3RvX3JlZ2lvbl9v a19mb3JfaHdfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYsCisgCQkJCQkJIENP UkVfQUREUiwgTE9OR0VTVCk7CitAQCAtMjk1OSw3ICsyOTU5LDcgQEAgZGVmYXVsdF9yZWdpb25f b2tfZm9yX2h3X3dhdGNocG9pbnQgKHN0cgogIHN0YXRpYyBpbnQKICBkZWZhdWx0X3dhdGNocG9p bnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0YXJnZXQsCiAgCQkJCSAg ICAgIENPUkVfQUREUiBhZGRyLApAQCAtNTg3LDE2ICsyMzksNyBAQCBJbmRleDogZ2RiLTcuNy4x L2dkYi90YXJnZXQuYwogIHsKICAgIHJldHVybiBhZGRyID49IHN0YXJ0ICYmIGFkZHIgPCBzdGFy dCArIGxlbmd0aDsKICB9Ci1AQCAtNDU3MSw3ICs0NTcyLDcgQEAgZGVidWdfdG9fcmVnaW9uX29r X2Zvcl9od193YXRjaHBvaW50IChDTwotIH0KLSAKLSBzdGF0aWMgaW50Ci0tZGVidWdfdG9fY2Fu X2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHJ3LAotK2RlYnVnX3RvX2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbiAoQ09SRV9BRERS IGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgcncsCi0gCQkJCQkgc3RydWN0IGV4cHJlc3Npb24gKmNv bmQpCi0gewotICAgaW50IHJldHZhbDsKLUBAIC00NTgxLDggKzQ1ODIsOCBAQCBkZWJ1Z190b19j YW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24KK0BAIC0zNjkxLDggKzM2OTEsOCBAQCBkZWJ1 Z190b19jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24KICAKICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywKICAJCSAgICAgICJ0YXJnZXRfY2FuX2FjY2VsX3dhdGNocG9pbnRf Y29uZGl0aW9uICIKQEAgLTYwNyw3ICsyNTAsNyBAQCBJbmRleDogZ2RiLTcuNy4xL2dkYi90YXJn ZXQuYwogIAkJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uZCksICh1bnNpZ25lZCBs b25nKSByZXR2YWwpOwogICAgcmV0dXJuIHJldHZhbDsKICB9Ci1AQCAtNDYxNyw3ICs0NjE4LDcg QEAgZGVidWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YQorQEAgLTM3MjcsNyAr MzcyNyw3IEBAIGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGEKICBzdGF0 aWMgaW50CiAgZGVidWdfdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRh cmdldF9vcHMgKnRhcmdldCwKICAJCQkJICAgICAgIENPUkVfQUREUiBhZGRyLApAQCAtNjE2LDcg KzI1OSw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL3RhcmdldC5jCiAgewogICAgaW50IHJldHZh bDsKICAKLUBAIC00NjI1LDkgKzQ2MjYsOSBAQCBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0 aGluX3JhbmdlIChzCitAQCAtMzczNSw5ICszNzM1LDkgQEAgZGVidWdfdG9fd2F0Y2hwb2ludF9h ZGRyX3dpdGhpbl9yYW5nZSAocwogIAkJCQkJCQkgc3RhcnQsIGxlbmd0aCk7CiAgCiAgICBmcHJp bnRmX2ZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtNjI4LDc5ICsyNzEsMjMgQEAgSW5kZXg6IGdk Yi03LjcuMS9nZGIvdGFyZ2V0LmMKICAgIHJldHVybiByZXR2YWw7CiAgfQogIAotQEAgLTQ2NjIs NyArNDY2Myw3IEBAIGRlYnVnX3RvX3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZ2QKLSB9 Ci0gCi0gc3RhdGljIGludAotLWRlYnVnX3RvX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIg YWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQgKENP UkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUsCi0gCQkJICAgIHN0cnVjdCBleHBy ZXNzaW9uICpjb25kKQotIHsKLSAgIGludCByZXR2YWw7Ci1AQCAtNDY3MCwxNCArNDY3MSwxNCBA QCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkCi0gICByZXR2YWwgPSBk ZWJ1Z190YXJnZXQudG9faW5zZXJ0X3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlwZSwgY29uZCk7 Ci0gCi0gICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCi0tCQkgICAgICAidGFyZ2V0 X2luc2VydF93YXRjaHBvaW50ICglcywgJWQsICVkLCAlcykgPSAlbGRcbiIsCi0tCQkgICAgICBj b3JlX2FkZHJfdG9fc3RyaW5nIChhZGRyKSwgbGVuLCB0eXBlLAotKwkJICAgICAgInRhcmdldF9p bnNlcnRfd2F0Y2hwb2ludCAoJXMsICVzLCAlZCwgJXMpID0gJWxkXG4iLAotKwkJICAgICAgY29y ZV9hZGRyX3RvX3N0cmluZyAoYWRkciksIHBsb25nZXN0IChsZW4pLCB0eXBlLAotIAkJICAgICAg aG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uZCksICh1bnNpZ25lZCBsb25nKSByZXR2YWwpOwot ICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0gc3RhdGljIGludAotLWRlYnVnX3RvX3JlbW92ZV93 YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rZGVidWdfdG9f cmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwgaW50IHR5cGUs Ci0gCQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIGludCByZXR2YWw7Ci1A QCAtNDY4NSw4ICs0Njg2LDggQEAgZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQURE UiBhZAotICAgcmV0dmFsID0gZGVidWdfdGFyZ2V0LnRvX3JlbW92ZV93YXRjaHBvaW50IChhZGRy LCBsZW4sIHR5cGUsIGNvbmQpOwotIAotICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAotLQkJICAgICAgInRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludCAoJXMsICVkLCAlZCwgJXMpID0g JWxkXG4iLAotLQkJICAgICAgY29yZV9hZGRyX3RvX3N0cmluZyAoYWRkciksIGxlbiwgdHlwZSwK LSsJCSAgICAgICJ0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQgKCVzLCAlcywgJWQsICVzKSA9ICVs ZFxuIiwKLSsJCSAgICAgIGNvcmVfYWRkcl90b19zdHJpbmcgKGFkZHIpLCBwbG9uZ2VzdCAobGVu KSwgdHlwZSwKLSAJCSAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGNvbmQpLCAodW5zaWdu ZWQgbG9uZykgcmV0dmFsKTsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotSW5kZXg6IGdkYi03Ljcu MS9nZGIvdGFyZ2V0LmgKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi90YXJnZXQuaAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjcuMS5vcmlnL2dkYi90YXJnZXQuaAkyMDE0LTA1LTMwIDIz OjI0OjE0Ljc1MDEwMzQ4NSArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvdGFyZ2V0LmgJMjAxNC0w NS0zMCAyMzoyNDoxNC43OTMxMDM1MDQgKzAyMDAKLUBAIC00MTIsOCArNDEyLDggQEAgc3RydWN0 IHRhcmdldF9vcHMKLSAKLSAgICAgLyogRG9jdW1lbnRhdGlvbiBvZiB3aGF0IHRoZSB0d28gcm91 dGluZXMgYmVsb3cgYXJlIGV4cGVjdGVkIHRvIGRvIGlzCi0gICAgICAgIHByb3ZpZGVkIHdpdGgg dGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0XyogbWFjcm9zLiAgKi8KLS0gICAgaW50ICgqdG9fcmVt b3ZlX3dhdGNocG9pbnQpIChDT1JFX0FERFIsIGludCwgaW50LCBzdHJ1Y3QgZXhwcmVzc2lvbiAq KTsKLS0gICAgaW50ICgqdG9faW5zZXJ0X3dhdGNocG9pbnQpIChDT1JFX0FERFIsIGludCwgaW50 LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKLSsgICAgaW50ICgqdG9fcmVtb3ZlX3dhdGNocG9pbnQp IChDT1JFX0FERFIsIExPTkdFU1QsIGludCwgc3RydWN0IGV4cHJlc3Npb24gKik7Ci0rICAgIGlu dCAoKnRvX2luc2VydF93YXRjaHBvaW50KSAoQ09SRV9BRERSLCBMT05HRVNULCBpbnQsIHN0cnVj dCBleHByZXNzaW9uICopOwotIAotICAgICBpbnQgKCp0b19pbnNlcnRfbWFza193YXRjaHBvaW50 KSAoc3RydWN0IHRhcmdldF9vcHMgKiwKLSAJCQkJICAgICAgQ09SRV9BRERSLCBDT1JFX0FERFIs IGludCk7Ci1AQCAtNDI0LDEzICs0MjQsMTMgQEAgc3RydWN0IHRhcmdldF9vcHMKLSAgICAgaW50 IHRvX2hhdmVfY29udGludWFibGVfd2F0Y2hwb2ludDsKLSAgICAgaW50ICgqdG9fc3RvcHBlZF9k YXRhX2FkZHJlc3MpIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLCBDT1JFX0FERFIgKik7CistLS0gZ2Ri LTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi90YXJnZXQuaAkyMDE0LTA2LTEzIDIyOjIzOjU0LjY4 MzQ5MjIxOSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3RhcmdldC5oCTIwMTQt MDYtMTMgMjI6MjU6NDEuMzcyNjEzMDM5ICswMjAwCitAQCAtNDY5LDcgKzQ2OSw3IEBAIHN0cnVj dCB0YXJnZXRfb3BzCisgICAgIGludCAoKnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzKSAoc3RydWN0 IHRhcmdldF9vcHMgKiwgQ09SRV9BRERSICopCisgICAgICAgVEFSR0VUX0RFRkFVTFRfUkVUVVJO ICgwKTsKICAgICAgaW50ICgqdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSkgKHN0cnVj dCB0YXJnZXRfb3BzICosCi0tCQkJCQkgICAgQ09SRV9BRERSLCBDT1JFX0FERFIsIGludCk7Ci0r CQkJCQkgICAgQ09SRV9BRERSLCBDT1JFX0FERFIsIExPTkdFU1QpOworLQkJCQkJICAgIENPUkVf QUREUiwgQ09SRV9BRERSLCBpbnQpCisrCQkJCQkgICAgQ09SRV9BRERSLCBDT1JFX0FERFIsIExP TkdFU1QpCisgICAgICAgVEFSR0VUX0RFRkFVTFRfRlVOQyAoZGVmYXVsdF93YXRjaHBvaW50X2Fk ZHJfd2l0aGluX3JhbmdlKTsKICAKICAgICAgLyogRG9jdW1lbnRhdGlvbiBvZiB0aGlzIHJvdXRp bmUgaXMgcHJvdmlkZWQgd2l0aCB0aGUgY29ycmVzcG9uZGluZwotICAgICAgICB0YXJnZXRfKiBt YWNyby4gICovCi0gICAgIGludCAoKnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCkgKENP UkVfQUREUiwgTE9OR0VTVCk7Ci0gCi0tICAgIGludCAoKnRvX2Nhbl9hY2NlbF93YXRjaHBvaW50 X2NvbmRpdGlvbikgKENPUkVfQUREUiwgaW50LCBpbnQsCi0rICAgIGludCAoKnRvX2Nhbl9hY2Nl bF93YXRjaHBvaW50X2NvbmRpdGlvbikgKENPUkVfQUREUiwgTE9OR0VTVCwgaW50LAotIAkJCQkJ ICAgICAgc3RydWN0IGV4cHJlc3Npb24gKik7Ci0gICAgIGludCAoKnRvX21hc2tlZF93YXRjaF9u dW1fcmVnaXN0ZXJzKSAoc3RydWN0IHRhcmdldF9vcHMgKiwKLSAJCQkJCSAgQ09SRV9BRERSLCBD T1JFX0FERFIpOwotSW5kZXg6IGdkYi03LjcuMS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYworSW5k ZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE0LTA1LTMw IDIzOjMwOjQ5LjA4ODI3NzkzMCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvYWFyY2g2NC1saW51 eC1uYXQuYwkyMDE0LTA1LTMwIDIzOjMwOjU2LjkxMTI4MDcyNSArMDIwMAorLS0tIGdkYi03Ljcu OTAuMjAxNDA2MTMub3JpZy9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwkyMDE0LTA2LTEzIDIyOjIz OjA5LjY0NzQ0MDcxOCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2FhcmNoNjQt bGludXgtbmF0LmMJMjAxNC0wNi0xMyAyMjoyMzo1NC42ODM0OTIyMTkgKzAyMDAKIEBAIC00Mjgs MTQgKzQyOCwxNCBAQCBhYXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChjb25zdCBzCiAg c3RhdGljIHZvaWQKICBhYXJjaDY0X3Nob3dfZGVidWdfcmVnX3N0YXRlIChzdHJ1Y3QgYWFyY2g2 NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLApAQCAtNzE5LDcgKzMwNiw3IEBAIEluZGV4OiBnZGIt Ny43LjEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKICAJCQl0eXBlID09IGh3X3dyaXRlID8gImh3 LXdyaXRlLXdhdGNocG9pbnQiCiAgCQkJOiAodHlwZSA9PSBod19yZWFkID8gImh3LXJlYWQtd2F0 Y2hwb2ludCIKICAJCQkgICA6ICh0eXBlID09IGh3X2FjY2VzcyA/ICJody1hY2Nlc3Mtd2F0Y2hw b2ludCIKLUBAIC04NjcsOSArODY3LDEwIEBAIGFhcmNoNjRfbGludXhfcmVhZF9kZXNjcmlwdGlv biAoc3RydWN0IHQKK0BAIC04NjksOSArODY5LDEwIEBAIGFhcmNoNjRfbGludXhfcmVhZF9kZXNj cmlwdGlvbiAoc3RydWN0IHQKICAgICBnZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1sb3cuYyBmb3Ig bW9yZSBpbmZvcm1hdGlvbi4gICovCiAgCiAgc3RhdGljIHZvaWQKQEAgLTczMiw3ICszMTksNyBA QCBJbmRleDogZ2RiLTcuNy4xL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCiAgewogICAgaW50IGFs aWduZWRfbGVuOwogICAgdW5zaWduZWQgaW50IG9mZnNldDsKLUBAIC0xMDM1LDcgKzEwMzYsNyBA QCBhYXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAoaW50IHR5cGUsCitAQCAtMTAzOCw3ICsx MDM5LDcgQEAgYWFyY2g2NF9wb2ludF9lbmNvZGVfY3RybF9yZWcgKGludCB0eXBlLAogICAgIFJl dHVybiAwIGZvciBhbnkgbm9uLWNvbXBsaWFudCBBRERSIGFuZC9vciBMRU47IHJldHVybiAxIG90 aGVyd2lzZS4gICovCiAgCiAgc3RhdGljIGludApAQCAtNzQxLDcgKzMyOCw3IEBAIEluZGV4OiBn ZGItNy43LjEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKICB7CiAgICB1bnNpZ25lZCBpbnQgYWxp Z25tZW50ID0gaXNfd2F0Y2hwb2ludCA/IEFBUkNINjRfSFdQX0FMSUdOTUVOVAogICAgICA6IEFB UkNINjRfSEJQX0FMSUdOTUVOVDsKLUBAIC0xMjg1LDcgKzEyODYsNyBAQCBhYXJjaDY0X2hhbmRs ZV9hbGlnbmVkX3dhdGNocG9pbnQgKGludCB0CitAQCAtMTI5MCw3ICsxMjkxLDcgQEAgYWFyY2g2 NF9oYW5kbGVfYWxpZ25lZF93YXRjaHBvaW50IChpbnQgdAogICAgIFJldHVybiAwIGlmIHN1Y2Nl ZWQuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTc1MCw3ICszMzcsNyBAQCBJbmRleDogZ2RiLTcu Ny4xL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCiAgCQkJCSAgICAgaW50IGlzX2luc2VydCkKICB7 CiAgICBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlCi1AQCAtMTMxMCw4ICsx MzExLDggQEAgYWFyY2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQgKGludAorQEAgLTEz MTUsOCArMTMxNiw4IEBAIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChpbnQK ICAJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAogICJoYW5kbGVfdW5hbGlnbmVkX3dh dGNocG9pbnQ6IGlzX2luc2VydDogJWRcbiIKICAiICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhbGlnbmVkX2FkZHI6IDB4JTA4bHgsIGFsaWduZWRfbGVuOiAlZFxuIgpAQCAtNzYxLDcgKzM0 OCw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMKICAKICAgICAg ICBpZiAocmV0ICE9IDApCiAgCXJldHVybiByZXQ7Ci1AQCAtMTMyMyw3ICsxMzI0LDcgQEAgYWFy Y2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNocG9pbnQgKGludAorQEAgLTEzMjgsNyArMTMyOSw3 IEBAIGFhcmNoNjRfaGFuZGxlX3VuYWxpZ25lZF93YXRjaHBvaW50IChpbnQKICAvKiBJbXBsZW1l bnRzIGluc2VydGlvbiBhbmQgcmVtb3ZhbCBvZiBhIHNpbmdsZSB3YXRjaHBvaW50LiAgKi8KICAK ICBzdGF0aWMgaW50CkBAIC03NzAsNTQgKzM1Nyw3IEBAIEluZGV4OiBnZGItNy43LjEvZ2RiL2Fh cmNoNjQtbGludXgtbmF0LmMKICB7CiAgICBpZiAoYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkICgx IC8qIGlzX3dhdGNocG9pbnQgKi8gLCBhZGRyLCBsZW4pKQogICAgICByZXR1cm4gYWFyY2g2NF9o YW5kbGVfYWxpZ25lZF93YXRjaHBvaW50ICh0eXBlLCBhZGRyLCBsZW4sIGlzX2luc2VydCk7Ci1A QCAtMTMzOCwxNSArMTMzOSwxNSBAQCBhYXJjaDY0X2hhbmRsZV93YXRjaHBvaW50IChpbnQgdHlw ZSwgQ09SCi0gICAgb2YgdGhlIHR5cGUgVFlQRS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9u IGZhaWx1cmUuICAqLwotIAotIHN0YXRpYyBpbnQKLS1hYXJjaDY0X2xpbnV4X2luc2VydF93YXRj aHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0rYWFyY2g2NF9saW51 eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuLCBpbnQgdHlw ZSwKLSAJCQkJIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQotIHsKLSAgIGludCByZXQ7Ci0gCi0g ICBpZiAoZGVidWdfaHdfcG9pbnRzKQotICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRs b2csCi0tCQkJImluc2VydF93YXRjaHBvaW50IG9uIGVudHJ5IChhZGRyPTB4JTA4bHgsIGxlbj0l ZClcbiIsCi0tCQkJKHVuc2lnbmVkIGxvbmcpIGFkZHIsIGxlbik7Ci0rCQkJImluc2VydF93YXRj aHBvaW50IG9uIGVudHJ5IChhZGRyPTB4JTA4bHgsIGxlbj0lcylcbiIsCi0rCQkJKHVuc2lnbmVk IGxvbmcpIGFkZHIsIHBsb25nZXN0IChsZW4pKTsKLSAKLSAgIGdkYl9hc3NlcnQgKHR5cGUgIT0g aHdfZXhlY3V0ZSk7Ci0gCi1AQCAtMTM3MCwxNSArMTM3MSwxNSBAQCBhYXJjaDY0X2xpbnV4X2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FECi0gICAgdHlwZSBUWVBFLiAgUmV0dXJuIDAgb24gc3Vj Y2VzcywgLTEgb24gZmFpbHVyZS4gICovCi0gCi0gc3RhdGljIGludAotLWFhcmNoNjRfbGludXhf cmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLSth YXJjaDY0X2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBs ZW4sIGludCB0eXBlLAotIAkJCQkgc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCi0gewotICAgaW50 IHJldDsKLSAKLSAgIGlmIChkZWJ1Z19od19wb2ludHMpCi0gICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGxvZywKLS0JCQkicmVtb3ZlX3dhdGNocG9pbnQgb24gZW50cnkgKGFkZHI9MHgl MDhseCwgbGVuPSVkKVxuIiwKLS0JCQkodW5zaWduZWQgbG9uZykgYWRkciwgbGVuKTsKLSsJCQki cmVtb3ZlX3dhdGNocG9pbnQgb24gZW50cnkgKGFkZHI9MHglMDhseCwgbGVuPSVzKVxuIiwKLSsJ CQkodW5zaWduZWQgbG9uZykgYWRkciwgcGxvbmdlc3QgKGxlbikpOwotIAotICAgZ2RiX2Fzc2Vy dCAodHlwZSAhPSBod19leGVjdXRlKTsKLSAKLUBAIC0xMzk5LDcgKzE0MDAsNyBAQCBhYXJjaDY0 X2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FECi0gLyogSW1wbGVtZW50IHRoZSAidG9f cmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IiB0YXJnZXRfb3BzIG1ldGhvZC4gICovCi0gCi0g c3RhdGljIGludAotLWFhcmNoNjRfbGludXhfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgaW50IGxlbikKLSthYXJjaDY0X2xpbnV4X3JlZ2lvbl9va19mb3JfaHdf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExPTkdFU1QgbGVuKQotIHsKLSAgIENPUkVfQURE UiBhbGlnbmVkX2FkZHI7Ci0gCi1AQCAtMTQ4OSw3ICsxNDkwLDcgQEAgYWFyY2g2NF9saW51eF9z dG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaQorQEAgLTE0OTcsNyArMTQ5OCw3IEBAIGFhcmNoNjRf bGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50IChzdHIKICBzdGF0aWMgaW50CiAgYWFyY2g2NF9s aW51eF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFy Z2V0LAogIAkJCQkJICAgIENPUkVfQUREUiBhZGRyLApAQCAtODI2LDMgKzM2NiwxNiBAQCBJbmRl eDogZ2RiLTcuNy4xL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCiAgewogICAgcmV0dXJuIHN0YXJ0 IDw9IGFkZHIgJiYgc3RhcnQgKyBsZW5ndGggLSAxID49IGFkZHI7CiAgfQorSW5kZXg6IGdkYi03 LjcuOTAuMjAxNDA2MTMvZ2RiL3RhcmdldC1kZWxlZ2F0ZXMuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdGFyZ2V0LWRlbGVnYXRlcy5jCTIwMTQtMDYtMTMg MjI6MjI6MzcuOTE3NDA0NjExICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdGFy Z2V0LWRlbGVnYXRlcy5jCTIwMTQtMDYtMTMgMjI6MjY6MDYuMDkyNjQwOTI0ICswMjAwCitAQCAt MjYxLDcgKzI2MSw3IEBAIHRkZWZhdWx0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGEK KyB9CisgCisgc3RhdGljIGludAorLWRlbGVnYXRlX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFu Z2UgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgQ09SRV9BRERSIGFy ZzIsIGludCBhcmczKQorK2RlbGVnYXRlX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0 cnVjdCB0YXJnZXRfb3BzICpzZWxmLCBDT1JFX0FERFIgYXJnMSwgQ09SRV9BRERSIGFyZzIsIExP TkdFU1QgYXJnMykKKyB7CisgICBzZWxmID0gc2VsZi0+YmVuZWF0aDsKKyAgIHJldHVybiBzZWxm LT50b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlIChzZWxmLCBhcmcxLCBhcmcyLCBhcmcz KTsKCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoIGIvZ2Ri LXJoYno3OTU0MjQtYml0cG9zLTI1b2YyNS5wYXRjaAppbmRleCAxYzM5YjllLi4zYTY2YzAxIDEw MDY0NAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoCisrKyBiL2dkYi1y aGJ6Nzk1NDI0LWJpdHBvcy0yNW9mMjUucGF0Y2gKQEAgLTQ3LDExICs0NywxMSBAQCBDb250ZW50 LVR5cGU6IHRleHQveC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAogQ29u dGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Zjc3LWJvdW5kcy5wYXRjaAog Ci1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi1sYW5nLmgKK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9mLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvZi1sYW5nLmgJMjAxMy0wMS0xOCAyMzozOTo0MC4yMDk1MDA5NjggKzAx MDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjQw OjA0LjAxMDUzMTE3NyArMDEwMAotQEAgLTY1LDkgKzY1LDkgQEAgc3RydWN0IGNvbW1vbl9ibG9j aworLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi1sYW5nLmgJMjAxNC0wNi0xNiAy Mjo0NTowMC40MDQ0NzA5NDQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9mLWxh bmcuaAkyMDE0LTA2LTE2IDIyOjQ1OjEwLjM1MjQ3Nzc2MSArMDIwMAorQEAgLTYyLDkgKzYyLDkg QEAgc3RydWN0IGNvbW1vbl9ibG9jawogICAgc3RydWN0IHN5bWJvbCAqY29udGVudHNbMV07CiAg fTsKICAKQEAgLTYzLDExICs2MywxMSBAQCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv Zi1sYW5nLmgKICAKICBleHRlcm4gdm9pZCBmNzdfZ2V0X2R5bmFtaWNfYXJyYXlfbGVuZ3RoIChz dHJ1Y3QgdHlwZSAqKTsKICAKLUluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXR5cGVw cmludC5jCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi10eXBlcHJpbnQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZi10eXBlcHJpbnQuYwky MDEzLTAxLTE4IDIzOjM5OjM3LjU2NDQ5NzYyMCArMDEwMAotKysrIGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2YtdHlwZXByaW50LmMJMjAxMy0wMS0xOCAyMzozOTo0MC4yMTA1MDA5NzAgKzAxMDAK LUBAIC0xODAsNyArMTgwLDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3Qg dHlwZQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDE0 LTA2LTE2IDIyOjQ1OjAwLjQwNDQ3MDk0NCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMv Z2RiL2YtdHlwZXByaW50LmMJMjAxNC0wNi0xNiAyMjo0NToxMC4zNTM0Nzc3NjEgKzAyMDAKK0BA IC0xNjEsNyArMTYxLDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlw ZQogIAkJCSAgICAgaW50IHNob3csIGludCBwYXNzZWRfYV9wdHIsIGludCBkZW1hbmdsZWRfYXJn cywKICAJCQkgICAgIGludCBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpCiAgewpAQCAtNzYsMjUg Kzc2LDI1IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXR5cGVwcmludC5jCiAg CiAgICAvKiBObyBzdGF0aWMgdmFyaWFibGVzIGFyZSBwZXJtaXR0ZWQgYXMgYW4gZXJyb3IgY2Fs bCBtYXkgb2NjdXIgZHVyaW5nCiAgICAgICBleGVjdXRpb24gb2YgdGhpcyBmdW5jdGlvbi4gICov Ci1AQCAtMjEwLDcgKzIxMCw3IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0 IHR5cGUKLSAKLSAgICAgICBsb3dlcl9ib3VuZCA9IGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSk7 Ci0gICAgICAgaWYgKGxvd2VyX2JvdW5kICE9IDEpCS8qIE5vdCB0aGUgZGVmYXVsdC4gICovCi0t CWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkOiIsIGxvd2VyX2JvdW5kKTsKLSsJZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJXM6IiwgcGxvbmdlc3QgKGxvd2VyX2JvdW5kKSk7Ci0gCi0g ICAgICAgLyogTWFrZSBzdXJlIHRoYXQsIGlmIHdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5 LCB3ZQotICAgICAgICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJv dW5kIGFzICcqJy4gICovCi1AQCAtMjIwLDcgKzIyMCw3IEBAIGZfdHlwZV9wcmludF92YXJzcGVj X3N1ZmZpeCAoc3RydWN0IHR5cGUKLSAgICAgICBlbHNlCi0gCXsKLSAJICB1cHBlcl9ib3VuZCA9 IGY3N19nZXRfdXBwZXJib3VuZCAodHlwZSk7Ci0tCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiJWQiLCB1cHBlcl9ib3VuZCk7Ci0rCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJXMi LCBwbG9uZ2VzdCAodXBwZXJfYm91bmQpKTsKLSAJfQotIAotICAgICAgIGlmIChUWVBFX0NPREUg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCi1AQCAtMjg4LDcg KzI4OCw3IEBAIHZvaWQKK0BAIC0xOTUsNyArMTk1LDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNf c3VmZml4IChzdHJ1Y3QgdHlwZQorIAorICAgICAgICAgICBsb3dlcl9ib3VuZCA9IGY3N19nZXRf bG93ZXJib3VuZCAodHlwZSk7CisgICAgICAgICAgIGlmIChsb3dlcl9ib3VuZCAhPSAxKQkvKiBO b3QgdGhlIGRlZmF1bHQuICAqLworLSAgICAgICAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIiVkOiIsIGxvd2VyX2JvdW5kKTsKKysJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwg IiVzOiIsIHBsb25nZXN0IChsb3dlcl9ib3VuZCkpOworIAorICAgICAgICAgICAvKiBNYWtlIHN1 cmUgdGhhdCwgaWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCisgICAgICAgICAg ICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5kIGFzICcqJy4g ICovCitAQCAtMjA1LDcgKzIwNSw3IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3Ry dWN0IHR5cGUKKyAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg IHVwcGVyX2JvdW5kID0gZjc3X2dldF91cHBlcmJvdW5kICh0eXBlKTsKKy0gICAgICAgICAgICAg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwgdXBwZXJfYm91bmQpOworKwkgICAgICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlcyIsIHBsb25nZXN0ICh1cHBlcl9ib3VuZCkpOwor ICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgaWYgKFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSkpICE9IFRZUEVfQ09ERV9BUlJBWSkKK0BAIC0yNzQsNyArMjc0LDcgQEAgdm9p ZAogIGZfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwgaW50IHNob3csCiAgCQkgICBpbnQgbGV2ZWwpCiAgewpAQCAtMTAzLDcgKzEwMyw3 IEBAIEluZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXR5cGVwcmludC5jCiAgICBpbnQg aW5kZXg7CiAgCiAgICBRVUlUOwotQEAgLTM3MCw3ICszNzAsNyBAQCBmX3R5cGVfcHJpbnRfYmFz ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0CitAQCAtMzU2LDcgKzM1Niw3IEBAIGZfdHlwZV9wcmlu dF9iYXNlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3QKICAgICAgICBlbHNlCiAgCXsKICAJICB1cHBl cl9ib3VuZCA9IGY3N19nZXRfdXBwZXJib3VuZCAodHlwZSk7CkBAIC0xMTIsMjAgKzExMiwyMCBA QCBJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi10eXBlcHJpbnQuYwogIAl9CiAgICAg ICAgYnJlYWs7CiAgCi1JbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi12YWxwcmludC5j CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi12YWxwcmludC5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMy0wMS0x OCAyMzozOTozNy41NjQ0OTc2MjAgKzAxMDAKLSsrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9m LXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzozOTo0MC4yMTA1MDA5NzAgKzAxMDAKLUBAIC01Nyw3 ICs1Nyw3IEBAIExPTkdFU1QgZjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZPUlRSQU4KLSAKLSAj ZGVmaW5lIEY3N19ESU1fQllURV9TVFJJREUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBd KQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTQtMDYt MTYgMjI6NDU6MzQuOTAxNDk1MDY5ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv Zi12YWxwcmludC5jCTIwMTQtMDYtMTYgMjI6NDU6NDQuOTMzNTAyMDY3ICswMjAwCitAQCAtNDYs NyArNDYsNyBAQCBMT05HRVNUIGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOCisgLyog QXJyYXkgd2hpY2ggaG9sZHMgb2Zmc2V0cyB0byBiZSBhcHBsaWVkIHRvIGdldCBhIHJvdydzIGVs ZW1lbnRzCisgICAgZm9yIGEgZ2l2ZW4gYXJyYXkuICBBcnJheSBhbHNvIGhvbGRzIHRoZSBzaXpl IG9mIGVhY2ggc3ViYXJyYXkuICAqLwogIAogLWludAogK0xPTkdFU1QKICBmNzdfZ2V0X2xvd2Vy Ym91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQogIHsKLSAgIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92 YWxpZF9vcl9lcnJvciAodHlwZSk7Ci1AQCAtNjgsNyArNjgsNyBAQCBmNzdfZ2V0X2xvd2VyYm91 bmQgKHN0cnVjdCB0eXBlICp0eXBlKQorICAgaWYgKFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNf VU5ERUZJTkVEICh0eXBlKSkKK0BAIC01NSw3ICs1NSw3IEBAIGY3N19nZXRfbG93ZXJib3VuZCAo c3RydWN0IHR5cGUgKnR5cGUpCiAgICByZXR1cm4gVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9WQUxV RSAodHlwZSk7CiAgfQogIApAQCAtMTMzLDI0ICsxMzMsNCBAQCBJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvZi12YWxwcmludC5jCiArTE9OR0VTVAogIGY3N19nZXRfdXBwZXJib3VuZCAo c3RydWN0IHR5cGUgKnR5cGUpCiAgewotICAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29y X2Vycm9yICh0eXBlKTsKLUBAIC05Miw4ICs5Miw4IEBAIGY3N19nZXRfdXBwZXJib3VuZCAoc3Ry dWN0IHR5cGUgKnR5cGUpCi0gc3RhdGljIHZvaWQKLSBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29m X2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotLSAgaW50IHVwcGVyX2JvdW5kID0g LTE7Ci0tICBpbnQgbG93ZXJfYm91bmQgPSAxOwotKyAgTE9OR0VTVCB1cHBlcl9ib3VuZCA9IC0x OwotKyAgTE9OR0VTVCBsb3dlcl9ib3VuZCA9IDE7Ci0gCi0gICAvKiBSZWN1cnNpdmVseSBnbyBh bGwgdGhlIHdheSBkb3duIGludG8gYSBwb3NzaWJseSBtdWx0aS1kaW1lbnNpb25hbAotICAgICAg Rjc3IGFycmF5IGFuZCBnZXQgdGhlIGJvdW5kcy4gIEZvciBzaW1wbGUgYXJyYXlzLCB0aGlzIGlz IHByZXR0eQotQEAgLTEyOCw3ICsxMjgsNyBAQCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0 X3RibCAoc3RydWN0Ci0gICBzdHJ1Y3QgdHlwZSAqdG1wX3R5cGU7Ci0gICBMT05HRVNUIGVsdGxl bjsKLSAgIGludCBuZGltZW4gPSAxOwotLSAgaW50IHVwcGVyLCBsb3dlcjsKLSsgIExPTkdFU1Qg dXBwZXIsIGxvd2VyOwotIAotICAgdG1wX3R5cGUgPSB0eXBlOwotIAorICAgaWYgKFRZUEVfQVJS QVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKCmRpZmYgLS1naXQgYS9nZGItc3Rh dGljLXRscy0xb2YyLnBhdGNoIGIvZ2RiLXN0YXRpYy10bHMtMW9mMi5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggY2FkZGFkMC4uMDAwMDAwMAotLS0gYS9nZGItc3RhdGljLXRs cy0xb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDQvbXNnMDAxNTQuaHRtbAotU3ViamVjdDog W3BhdGNoXSBGaXggZ2Ric2VydmVyIHFHZXRUTFNBZGRyIGZvciB4ODZfNjQgLW0zMgotCi0KLS0t U3Q3Vkl1RUdaNmRscHUxMwotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFz Y2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotSGksCi0KLWdkYnNlcnZlciBtYWtl cyBsaWJ0aHJlYWRfZGIgdG8gYWNjZXNzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiAgU3VycHJpc2lu Z2x5IGl0Ci1kb2VzIG5vdCBoYXJtIG5vcm1hbGx5LCBldmVuIC1mc2FuaXRpemU9YWRkcmVzcyB3 b3JrcyB3aXRoIGN1cnJlbnQgZ2Ric2VydmVyLgotSSBoYXZlIGZvdW5kIGp1c3QgdmFsZ3JpbmQg ZGV0ZWN0cyBpdCBhcyBhIHZlcnkgZmlyc3Qgd2FybmluZyBmb3IgZ2Ric2VydmVyOgotCi1TeXNj YWxsIHBhcmFtIHB0cmFjZShhZGRyKSBjb250YWlucyB1bmluaXRpYWxpc2VkIGJ5dGUocykKLSAg IGF0IDB4MzcyMUVFQ0VCRTogcHRyYWNlIChwdHJhY2UuYzo0NSkKLSAgIGJ5IDB4NDM2RUU1OiBw c19nZXRfdGhyZWFkX2FyZWEgKGxpbnV4LXg4Ni1sb3cuYzoyNTIpCi0gICBieSAweDU1NTlEMDI6 IF9fdGRfdGFfbG9va3VwX3RoX3VuaXF1ZSAodGRfdGFfbWFwX2x3cDJ0aHIuYzoxNTcpCi0gICBi eSAweDU1NTlFQzM6IHRkX3RhX21hcF9sd3AydGhyICh0ZF90YV9tYXBfbHdwMnRoci5jOjIwNykK LSAgIGJ5IDB4NDNGODdEOiBmaW5kX29uZV90aHJlYWQgKHRocmVhZC1kYi5jOjI4MSkKLSAgIGJ5 IDB4NDQwMDM4OiB0aHJlYWRfZGJfZ2V0X3Rsc19hZGRyZXNzICh0aHJlYWQtZGIuYzo1MDUpCi0g ICBieSAweDQwRjZEMDogaGFuZGxlX3F1ZXJ5IChzZXJ2ZXIuYzoyMDA0KQotICAgYnkgMHg0MTI0 Q0Y6IHByb2Nlc3Nfc2VyaWFsX2V2ZW50IChzZXJ2ZXIuYzozNDQ1KQotICAgYnkgMHg0MTM2QjY6 IGhhbmRsZV9zZXJpYWxfZXZlbnQgKHNlcnZlci5jOjM4ODkpCi0gICBieSAweDQxOTU3MTogaGFu ZGxlX2ZpbGVfZXZlbnQgKGV2ZW50LWxvb3AuYzo0MzQpCi0gICBieSAweDQxOEQzODogcHJvY2Vz c19ldmVudCAoZXZlbnQtbG9vcC5jOjE4OSkKLSAgIGJ5IDB4NDE5QUI3OiBzdGFydF9ldmVudF9s b29wIChldmVudC1sb29wLmM6NTUyKQotICAgCi1SZXByb2R1Y2libGUgd2l0aDoKLWNkIGdkYi90 ZXN0c3VpdGUKLWcrKyAtbyBnZGIudGhyZWFkcy90bHMgZ2RiLnRocmVhZHMvdGxzeywyfS5jIC1t MzIgLXB0aHJlYWQKLS4uL2dkYnNlcnZlci9nZGJzZXJ2ZXIgOjEyMzQgZ2RiLnRocmVhZHMvdGxz Ci0uLi9nZGIgLWJhdGNoIGdkYi50aHJlYWRzL3RscyAtZXggJ3RhcmdldCByZW1vdGUgOjEyMzQn IC1leCAnYiBzcGluJyAtZXggYyAtZXggJ3AgYV90aHJlYWRfbG9jYWwnCi0KLUl0IGlzIG1vcmUg ZWFzaWx5IHJlcHJvZHVjaWJsZSBldmVuIHdpdGhvdXQgdmFsZ3JpbmQgdXNpbmcgcy8weDAwLzB4 ZmYvIGluIHRoZQotYXR0YWNoZWQgcGF0Y2guICBJdCB3aWxsIHRoZW4gdHVybiB0aGUgb3V0cHV0 IG9mIHJlcHJvZHVjZXIgYWJvdmU6Ci0kMSA9IDAKLS0+Ci1DYW5ub3QgZmluZCB0aHJlYWQtbG9j YWwgc3RvcmFnZSBmb3IgVGhyZWFkIDI5MDQ0LCBleGVjdXRhYmxlIGZpbGUgLi4uL2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvdGxzOgotUmVtb3RlIHRhcmdldCBmYWlsZWQgdG8gcHJvY2VzcyBx R2V0VExTQWRkciByZXF1ZXN0Ci0KLQotVGhhbmtzLAotSmFuCi0KLS0tU3Q3Vkl1RUdaNmRscHUx MwotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURp c3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPSIwMGZmLnBhdGNoIgotCi1nZGIvZ2Ric2VydmVy LwotMjAxNC0wNC0xMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotCi0JRml4IGdkYnNlcnZlciBxR2V0VExTQWRkciBmb3IgeDg2XzY0IC1tMzIuCi0JKiBsaW51 eC14ODYtbG93LmMgKFg4Nl82NF9VU0VSX1JFR1MpOiBOZXcuCi0JKHg4Nl9maWxsX2dyZWdzZXQp OiBDYWxsIG1lbXNldCBmb3IgQlVGIGZpcnN0IGluIHg4Nl82NCAtbTMyIGNhc2UuCi0KLWRpZmYg LS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGlu dXgteDg2LWxvdy5jCi1pbmRleCAzM2I1ZjI2Li4xMTU2ZTU4IDEwMDY0NAotLS0tIGEvZ2RiL2dk YnNlcnZlci9saW51eC14ODYtbG93LmMKLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxv dy5jCi1AQCAtMTg1LDYgKzE4NSw3IEBAIHN0YXRpYyBjb25zdCBpbnQgeDg2XzY0X3JlZ21hcFtd ID0KLSB9OwotIAotICNkZWZpbmUgWDg2XzY0X05VTV9SRUdTIChzaXplb2YgKHg4Nl82NF9yZWdt YXApIC8gc2l6ZW9mICh4ODZfNjRfcmVnbWFwWzBdKSkKLSsjZGVmaW5lIFg4Nl82NF9VU0VSX1JF R1MgKEdTICsgMSkKLSAKLSAjZWxzZSAvKiAhIF9feDg2XzY0X18gKi8KLSAKLUBAIC0zNDMsNiAr MzQ0LDEwIEBAIHg4Nl9maWxsX2dyZWdzZXQgKHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsIHZv aWQgKmJ1ZikKLSAJICBjb2xsZWN0X3JlZ2lzdGVyIChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1 ZikgKyB4ODZfNjRfcmVnbWFwW2ldKTsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSsKLSsgIC8q IDMyLWJpdCBpbmZlcmlvciByZWdpc3RlcnMgbmVlZCB0byBiZSB6ZXJvLWV4dGVuZGVkLgotKyAg ICAgQ2FsbGVycyB3b3VsZCByZWFkIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG90aGVyd2lzZS4gICov Ci0rICBtZW1zZXQgKGJ1ZiwgMHgwMCwgWDg2XzY0X1VTRVJfUkVHUyAqIDgpOwotICNlbmRpZgot IAotICAgZm9yIChpID0gMDsgaSA8IEkzODZfTlVNX1JFR1M7IGkrKykKLQotLS1TdDdWSXVFR1o2 ZGxwdTEzLS0KLQoKZGlmZiAtLWdpdCBhL2dkYi1zdGF0aWMtdGxzLTJvZjIucGF0Y2ggYi9nZGIt c3RhdGljLXRscy0yb2YyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MmRk MWIzLi4wMDAwMDAwCi0tLSBhL2dkYi1zdGF0aWMtdGxzLTJvZjIucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwzMjYgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTQtMDQvbXNnMDAxNTUuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggVExTIGFjY2VzcyBm b3IgLXN0YXRpYyAtcHRocmVhZAotCi0KLS0tcXRaRmVoSHNLZ3dTNXJQegotQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxp bmUKLQotSGksCi0KLXRlc3RjYXNlIHJlc3VsdHMgbWF5IGRlcGVuZCBvbiBwYXRjaDoKLQlbcGF0 Y2hdIEZpeCBnZGJzZXJ2ZXIgcUdldFRMU0FkZHIgZm9yIHg4Nl82NCAtbTMyCi0JaHR0cHM6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE0LTA0L21zZzAwMTU0Lmh0bWwKLQlNZXNz YWdlLUlEOiA8MjAxNDA0MTAxMTQ5MDEuR0ExNjQxMUBob3N0Mi5qYW5rcmF0b2NodmlsLm5ldD4K LQotVGhlcmUgaXM6Ci0gKiBnZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cCB0byB0ZXN0IC1z dGF0aWMgLXB0aHJlYWQgJ2luZm8gdGhyZWFkcycKLSAqIGdkYi50aHJlYWRzL3Rscy5leHAgdG8g dGVzdCBUTFMgYWNjZXNzIChfX3RocmVhZCB2YXJpYWJsZXMpCi1idXQgbm8gdGVzdGNhc2UgdG8g dGVzdCBib3RoIHRvZ2V0aGVyIC0gaXQgZXZlbiBkb2VzIG5vdCB3b3JrLgotCi1JIGhhdmUgcG9z dGVkOgotCVRMUyB2YXJpYWJsZXMgYWNjZXNzIGZvciAtc3RhdGljIC1scHRocmVhZCBleGVjdXRh YmxlcwotCWh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1oZWxwLzIwMTQtMDMvbXNnMDAw MjQuaHRtbAotYW5kIHRoZSBHREIgcGF0Y2ggYmVsb3cgaGFzIGJlZW4gY29uZmlybWVkIGFzIE9L IGZvciBjdXJyZW50IGdsaWJjcy4KLQotRnV0dXJlIGdsaWJjcyBtYXkgaW1wbGVtZW50IG1vcmUg bmF0aXZlIHN1cHBvcnQgZm9yIC1zdGF0aWMgLXB0aHJlYWQgVExTCi0JaHR0cHM6Ly9zb3VyY2V3 YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTY4MjgKLXdoaWNoIHdpbGwgcmVxdWly ZSBhbHNvIHNvbWUgbmV3IEdEQiBzdXBwb3J0LgotCi1TdGlsbCB0aGUgcGF0Y2ggYmVsb3cgaW1w bGVtZW50cyB0aGUgZmVhdHVyZSBpbiBhIGZ1bGx5IGZ1bmN0aW9uYWwgd2F5IGJhY2t3YXJkCi1j b21wYXRpYmxlIHdpdGggY3VycmVudCBnbGliY3MsIGl0IGRlcGVuZHMgb24gdGhlIGZvbGxvd2lu ZyBnbGliYyBzb3VyY2UgbGluZToKLQljc3UvbGliYy10bHMuYwotCW1haW5fbWFwLT5sX3Rsc19t b2RpZCA9IDE7Ci0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMn0tZmVkb3Jh cmF3aGlkZS1saW51eC1nbnUuCi0KLQotVGhhbmtzLAotSmFuCi0KLS0tcXRaRmVoSHNLZ3dTNXJQ egotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURp c3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPSJzdGF0aWN0aHJlYWQucGF0Y2giCi0KLWdkYi8K LTIwMTQtMDQtMTAgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCUZpeCBUTFMgYWNjZXNzIGZvciAtc3RhdGljIC1wdGhyZWFkLgotCSogbGludXgtdGhyZWFk LWRiLmMgKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyk6IEFkZCB0ZF90aHJfdGxzYmFzZV9wLgotCSh0 cnlfdGhyZWFkX2RiX2xvYWRfMSk6IEluaXRpYWxpemUgaXQuCi0JKHRocmVhZF9kYl9nZXRfdGhy ZWFkX2xvY2FsX2FkZHJlc3MpOiBDYWxsIGl0IGlmIExNIGlzIHplcm8uCi0JKiB0YXJnZXQuYyAo dGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyk6IFJlbW92ZSBMTV9BRERSIHplcm8gY2hlY2su Ci0JKiB0YXJnZXQuaCAoc3RydWN0IHRhcmdldF9vcHMpICh0b19nZXRfdGhyZWFkX2xvY2FsX2Fk ZHJlc3MpOiBBZGQKLQlsb2FkX21vZHVsZV9hZGRyIGNvbW1lbnQuCi0KLWdkYi9nZGJzZXJ2ZXIv Ci0yMDE0LTA0LTEwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0KLQlGaXggVExTIGFjY2VzcyBmb3IgLXN0YXRpYyAtcHRocmVhZC4KLQkqIGdkYnNlcnZlci90 aHJlYWQtZGIuYyAoc3RydWN0IHRocmVhZF9kYik6IEFkZCB0ZF90aHJfdGxzYmFzZV9wLgotCSh0 aHJlYWRfZGJfZ2V0X3Rsc19hZGRyZXNzKTogQ2FsbCBpdCBpZiBMT0FEX01PRFVMRSBpcyB6ZXJv LgotCSh0aHJlYWRfZGJfbG9hZF9zZWFyY2gsIHRyeV90aHJlYWRfZGJfbG9hZF8xKTogSW5pdGlh bGl6ZSBpdC4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTQtMDQtMTAgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBUTFMgYWNjZXNzIGZvciAtc3RhdGlj IC1wdGhyZWFkLgotCSogZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5jIDxIQVZFX1RMUz4gKHRs c3Zhcik6IE5ldy4KLQk8SEFWRV9UTFM+ICh0aHJlYWRfZnVuY3Rpb24sIG1haW4pOiBJbml0aWFs aXplIGl0LgotCSogZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHA6IFRyeSBnZGJfY29tcGls ZV9wdGhyZWFkcyBmb3IgJGhhdmVfdGxzLgotCUFkZCBjbGVhbl9yZXN0YXJ0LgotCTwkaGF2ZV90 bHMgIT0gIiI+OiBDaGVjayBUTFNWQVIuCi0KLWRpZmYgLS1naXQgYS9nZGIvbGludXgtdGhyZWFk LWRiLmMgYi9nZGIvbGludXgtdGhyZWFkLWRiLmMKLWluZGV4IGNhNjE0YTMuLjQ1Nzg2MTAgMTAw NjQ0Ci0tLS0gYS9nZGIvbGludXgtdGhyZWFkLWRiLmMKLSsrKyBiL2dkYi9saW51eC10aHJlYWQt ZGIuYwotQEAgLTE5Niw2ICsxOTYsOSBAQCBzdHJ1Y3QgdGhyZWFkX2RiX2luZm8KLSAgIHRkX2Vy cl9lICgqdGRfdGhyX3Rsc19nZXRfYWRkcl9wKSAoY29uc3QgdGRfdGhyaGFuZGxlX3QgKnRoLAot IAkJCQkgICAgIHBzYWRkcl90IG1hcF9hZGRyZXNzLAotIAkJCQkgICAgIHNpemVfdCBvZmZzZXQs IHBzYWRkcl90ICphZGRyZXNzKTsKLSsgIHRkX2Vycl9lICgqdGRfdGhyX3Rsc2Jhc2VfcCkgKGNv bnN0IHRkX3RocmhhbmRsZV90ICp0aCwKLSsJCQkJdW5zaWduZWQgbG9uZyBpbnQgbW9kaWQsCi0r CQkJCXBzYWRkcl90ICpiYXNlKTsKLSB9OwotIAotIC8qIExpc3Qgb2Yga25vd24gcHJvY2Vzc2Vz IHVzaW5nIHRocmVhZF9kYiwgYW5kIHRoZSByZXF1aXJlZAotQEAgLTc5OSw2ICs4MDIsNyBAQCB0 cnlfdGhyZWFkX2RiX2xvYWRfMSAoc3RydWN0IHRocmVhZF9kYl9pbmZvICppbmZvKQotICAgaW5m by0+dGRfdGFfZXZlbnRfZ2V0bXNnX3AgPSBkbHN5bSAoaW5mby0+aGFuZGxlLCAidGRfdGFfZXZl bnRfZ2V0bXNnIik7Ci0gICBpbmZvLT50ZF90aHJfZXZlbnRfZW5hYmxlX3AgPSBkbHN5bSAoaW5m by0+aGFuZGxlLCAidGRfdGhyX2V2ZW50X2VuYWJsZSIpOwotICAgaW5mby0+dGRfdGhyX3Rsc19n ZXRfYWRkcl9wID0gZGxzeW0gKGluZm8tPmhhbmRsZSwgInRkX3Rocl90bHNfZ2V0X2FkZHIiKTsK LSsgIGluZm8tPnRkX3Rocl90bHNiYXNlX3AgPSBkbHN5bSAoaW5mby0+aGFuZGxlLCAidGRfdGhy X3Rsc2Jhc2UiKTsKLSAKLSAgIGlmICh0aHJlYWRfZGJfZmluZF9uZXdfdGhyZWFkc19zaWxlbnRs eSAoaW5mZXJpb3JfcHRpZCkgIT0gMCkKLSAgICAgewotQEAgLTE4MTEsMjEgKzE4MTUsMzQgQEAg dGhyZWFkX2RiX2dldF90aHJlYWRfbG9jYWxfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKm9w cywKLSAKLSAgICAgICBpbmZvID0gZ2V0X3RocmVhZF9kYl9pbmZvIChwdGlkX2dldF9waWQgKHB0 aWQpKTsKLSAKLS0gICAgICAvKiBnbGliYyBkb2Vzbid0IHByb3ZpZGUgdGhlIG5lZWRlZCBpbnRl cmZhY2UuICAqLwotLSAgICAgIGlmICghaW5mby0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wKQotLQl0 aHJvd19lcnJvciAoVExTX05PX0xJQlJBUllfU1VQUE9SVF9FUlJPUiwKLS0JCSAgICAgXygiTm8g VExTIGxpYnJhcnkgc3VwcG9ydCIpKTsKLS0KLS0gICAgICAvKiBDYWxsZXIgc2hvdWxkIGhhdmUg dmVyaWZpZWQgdGhhdCBsbSAhPSAwLiAgKi8KLS0gICAgICBnZGJfYXNzZXJ0IChsbSAhPSAwKTsK LS0KLSAgICAgICAvKiBGaW5hbGx5LCBnZXQgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlLiAg Ki8KLS0gICAgICAvKiBOb3RlIHRoZSBjYXN0IHRocm91Z2ggdWludHB0cl90OiB0aGlzIGludGVy ZmFjZSBvbmx5IHdvcmtzIGlmCi0tCSBhIHRhcmdldCBhZGRyZXNzIGZpdHMgaW4gYSBwc2FkZHJf dCwgd2hpY2ggaXMgYSBob3N0IHBvaW50ZXIuCi0tCSBTbyBhIDMyLWJpdCBkZWJ1Z2dlciBjYW4g bm90IGFjY2VzcyA2NC1iaXQgVExTIHRocm91Z2ggdGhpcy4gICovCi0tICAgICAgZXJyID0gaW5m by0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wICgmdGhyZWFkX2luZm8tPnByaXZhdGUtPnRoLAotLQkJ CQkJIChwc2FkZHJfdCkodWludHB0cl90KSBsbSwKLS0JCQkJCSBvZmZzZXQsICZhZGRyZXNzKTsK LSsgICAgICBpZiAobG0gIT0gMCkKLSsJewotKwkgIC8qIGdsaWJjIGRvZXNuJ3QgcHJvdmlkZSB0 aGUgbmVlZGVkIGludGVyZmFjZS4gICovCi0rCSAgaWYgKCFpbmZvLT50ZF90aHJfdGxzX2dldF9h ZGRyX3ApCi0rCSAgICB0aHJvd19lcnJvciAoVExTX05PX0xJQlJBUllfU1VQUE9SVF9FUlJPUiwK LSsJCQkgXygiTm8gVExTIGxpYnJhcnkgc3VwcG9ydCIpKTsKLSsKLSsJICAvKiBOb3RlIHRoZSBj YXN0IHRocm91Z2ggdWludHB0cl90OiB0aGlzIGludGVyZmFjZSBvbmx5IHdvcmtzIGlmCi0rCSAg ICAgYSB0YXJnZXQgYWRkcmVzcyBmaXRzIGluIGEgcHNhZGRyX3QsIHdoaWNoIGlzIGEgaG9zdCBw b2ludGVyLgotKwkgICAgIFNvIGEgMzItYml0IGRlYnVnZ2VyIGNhbiBub3QgYWNjZXNzIDY0LWJp dCBUTFMgdGhyb3VnaCB0aGlzLiAgKi8KLSsJICBlcnIgPSBpbmZvLT50ZF90aHJfdGxzX2dldF9h ZGRyX3AgKCZ0aHJlYWRfaW5mby0+cHJpdmF0ZS0+dGgsCi0rCQkJCQkgICAgIChwc2FkZHJfdCko dWludHB0cl90KSBsbSwKLSsJCQkJCSAgICAgb2Zmc2V0LCAmYWRkcmVzcyk7Ci0rCX0KLSsgICAg ICBlbHNlCi0rCXsKLSsJICAvKiBJZiBnbGliYyBkb2Vzbid0IHByb3ZpZGUgdGhlIG5lZWRlZCBp bnRlcmZhY2UgdGhyb3cgYW4gZXJyb3IKLSsJICAgICB0aGF0IExNIGlzIHplcm8gLSBub3JtYWxs eSBjYXNlcyBpdCBzaG91bGQgbm90IGJlLiAgKi8KLSsJICBpZiAoIWluZm8tPnRkX3Rocl90bHNi YXNlX3ApCi0rCSAgICB0aHJvd19lcnJvciAoVExTX0xPQURfTU9EVUxFX05PVF9GT1VORF9FUlJP UiwKLSsJCQkgXygiVExTIGxvYWQgbW9kdWxlIG5vdCBmb3VuZCIpKTsKLSsKLSsJICAvKiBHTlUg X19saWJjX3NldHVwX3RscyBpbml0aWFsaXplcyBsX3Rsc19tb2RpZCBhcyAxLiAgKi8KLSsJICBl cnIgPSBpbmZvLT50ZF90aHJfdGxzYmFzZV9wICgmdGhyZWFkX2luZm8tPnByaXZhdGUtPnRoLAot KwkJCQkJMSwgJmFkZHJlc3MpOwotKwkgIGFkZHJlc3MgPSAoY2hhciAqKSBhZGRyZXNzICsgb2Zm c2V0OwotKwl9Ci0gCi0gI2lmZGVmIFRIUkVBRF9EQl9IQVNfVERfTk9UQUxMT0MKLSAgICAgICAv KiBUaGUgbWVtb3J5IGhhc24ndCBiZWVuIGFsbG9jYXRlZCwgeWV0LiAgKi8KLWRpZmYgLS1naXQg YS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKLWluZGV4IDFiNDhmNzkuLmZjZTY0NmMgMTAw NjQ0Ci0tLS0gYS9nZGIvdGFyZ2V0LmMKLSsrKyBiL2dkYi90YXJnZXQuYwotQEAgLTc1MywxMCAr NzUzLDYgQEAgdGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIENPUkVfQUREUiBvZmZzZXQpCi0gCSAgLyogRmV0Y2ggdGhlIGxvYWQgbW9kdWxlIGFk ZHJlc3MgZm9yIHRoaXMgb2JqZmlsZS4gICovCi0gCSAgbG1fYWRkciA9IGdkYmFyY2hfZmV0Y2hf dGxzX2xvYWRfbW9kdWxlX2FkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLAotIAkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpmaWxlKTsKLS0JICAv KiBJZiBpdCdzIDAsIHRocm93IHRoZSBhcHByb3ByaWF0ZSBleGNlcHRpb24uICAqLwotLQkgIGlm IChsbV9hZGRyID09IDApCi0tCSAgICB0aHJvd19lcnJvciAoVExTX0xPQURfTU9EVUxFX05PVF9G T1VORF9FUlJPUiwKLS0JCQkgXygiVExTIGxvYWQgbW9kdWxlIG5vdCBmb3VuZCIpKTsKLSAKLSAJ ICBhZGRyID0gdGFyZ2V0LT50b19nZXRfdGhyZWFkX2xvY2FsX2FkZHJlc3MgKHRhcmdldCwgcHRp ZCwKLSAJCQkJCQkgICAgICBsbV9hZGRyLCBvZmZzZXQpOwotZGlmZiAtLWdpdCBhL2dkYi90YXJn ZXQuaCBiL2dkYi90YXJnZXQuaAotaW5kZXggZDdjNmMzZC4uMWFiYTllMSAxMDA2NDQKLS0tLSBh L2dkYi90YXJnZXQuaAotKysrIGIvZ2RiL3RhcmdldC5oCi1AQCAtNjA1LDcgKzYwNSw4IEBAIHN0 cnVjdCB0YXJnZXRfb3BzCi0gICAgICAgIHRocmVhZC1sb2NhbCBzdG9yYWdlIGZvciB0aGUgdGhy ZWFkIFBUSUQgYW5kIHRoZSBzaGFyZWQgbGlicmFyeQotICAgICAgICBvciBleGVjdXRhYmxlIGZp bGUgZ2l2ZW4gYnkgT0JKRklMRS4gIElmIHRoYXQgYmxvY2sgb2YKLSAgICAgICAgdGhyZWFkLWxv Y2FsIHN0b3JhZ2UgaGFzbid0IGJlZW4gYWxsb2NhdGVkIHlldCwgdGhpcyBmdW5jdGlvbgotLSAg ICAgICBtYXkgcmV0dXJuIGFuIGVycm9yLiAgKi8KLSsgICAgICAgbWF5IHJldHVybiBhbiBlcnJv ci4gIExPQURfTU9EVUxFX0FERFIgbWF5IGJlIHplcm8gZm9yIHN0YXRpY2FsbHkKLSsgICAgICAg bGlua2VkIG11bHRpdGhyZWFkZWQgaW5mZXJpb3JzLiAgKi8KLSAgICAgQ09SRV9BRERSICgqdG9f Z2V0X3RocmVhZF9sb2NhbF9hZGRyZXNzKSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSAJCQkJ CSAgICAgIHB0aWRfdCBwdGlkLAotIAkJCQkJICAgICAgQ09SRV9BRERSIGxvYWRfbW9kdWxlX2Fk ZHIsCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci90aHJlYWQtZGIuYyBiL2dkYi9nZGJzZXJ2 ZXIvdGhyZWFkLWRiLmMKLWluZGV4IGY2M2UzOWUuLmYyMzM1YWIgMTAwNjQ0Ci0tLS0gYS9nZGIv Z2Ric2VydmVyL3RocmVhZC1kYi5jCi0rKysgYi9nZGIvZ2Ric2VydmVyL3RocmVhZC1kYi5jCi1A QCAtODgsNiArODgsOSBAQCBzdHJ1Y3QgdGhyZWFkX2RiCi0gICB0ZF9lcnJfZSAoKnRkX3Rocl90 bHNfZ2V0X2FkZHJfcCkgKGNvbnN0IHRkX3RocmhhbmRsZV90ICp0aCwKLSAJCQkJICAgICBwc2Fk ZHJfdCBtYXBfYWRkcmVzcywKLSAJCQkJICAgICBzaXplX3Qgb2Zmc2V0LCBwc2FkZHJfdCAqYWRk cmVzcyk7Ci0rICB0ZF9lcnJfZSAoKnRkX3Rocl90bHNiYXNlX3ApIChjb25zdCB0ZF90aHJoYW5k bGVfdCAqdGgsCi0rCQkJCXVuc2lnbmVkIGxvbmcgaW50IG1vZGlkLAotKwkJCQlwc2FkZHJfdCAq YmFzZSk7Ci0gICBjb25zdCBjaGFyICoqICgqdGRfc3ltYm9sX2xpc3RfcCkgKHZvaWQpOwotIH07 Ci0gCi1AQCAtNDk3LDcgKzUwMCwxMCBAQCB0aHJlYWRfZGJfZ2V0X3Rsc19hZGRyZXNzIChzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRocmVhZCwgQ09SRV9BRERSIG9mZnNldCwKLSAgIGlmICh0aHJlYWRf ZGIgPT0gTlVMTCB8fCAhdGhyZWFkX2RiLT5hbGxfc3ltYm9sc19sb29rZWRfdXApCi0gICAgIHJl dHVybiBURF9FUlI7Ci0gCi0tICBpZiAodGhyZWFkX2RiLT50ZF90aHJfdGxzX2dldF9hZGRyX3Ag PT0gTlVMTCkKLSsgIC8qIElmIHRkX3Rocl90bHNfZ2V0X2FkZHIgaXMgbWlzc2luZyByYXRoZXIg ZG8gbm90IGV4cGVjdCB0ZF90aHJfdGxzYmFzZQotKyAgICAgY291bGQgd29yay4gICovCi0rICBp ZiAodGhyZWFkX2RiLT50ZF90aHJfdGxzX2dldF9hZGRyX3AgPT0gTlVMTAotKyAgICAgIHx8IChs b2FkX21vZHVsZSA9PSAwICYmIHRocmVhZF9kYi0+dGRfdGhyX3Rsc2Jhc2VfcCA9PSBOVUxMKSkK LSAgICAgcmV0dXJuIC0xOwotIAotICAgbHdwID0gZ2V0X3RocmVhZF9sd3AgKHRocmVhZCk7Ci1A QCAtNTA4LDEyICs1MTQsMjMgQEAgdGhyZWFkX2RiX2dldF90bHNfYWRkcmVzcyAoc3RydWN0IHRo cmVhZF9pbmZvICp0aHJlYWQsIENPUkVfQUREUiBvZmZzZXQsCi0gCi0gICBzYXZlZF9pbmZlcmlv ciA9IGN1cnJlbnRfaW5mZXJpb3I7Ci0gICBjdXJyZW50X2luZmVyaW9yID0gdGhyZWFkOwotLSAg LyogTm90ZSB0aGUgY2FzdCB0aHJvdWdoIHVpbnRwdHJfdDogdGhpcyBpbnRlcmZhY2Ugb25seSB3 b3JrcyBpZgotLSAgICAgYSB0YXJnZXQgYWRkcmVzcyBmaXRzIGluIGEgcHNhZGRyX3QsIHdoaWNo IGlzIGEgaG9zdCBwb2ludGVyLgotLSAgICAgU28gYSAzMi1iaXQgZGVidWdnZXIgY2FuIG5vdCBh Y2Nlc3MgNjQtYml0IFRMUyB0aHJvdWdoIHRoaXMuICAqLwotLSAgZXJyID0gdGhyZWFkX2RiLT50 ZF90aHJfdGxzX2dldF9hZGRyX3AgKCZsd3AtPnRoLAotLQkJCQkJICAocHNhZGRyX3QpICh1aW50 cHRyX3QpIGxvYWRfbW9kdWxlLAotLQkJCQkJICBvZmZzZXQsICZhZGRyKTsKLSsKLSsgIGlmIChs b2FkX21vZHVsZSAhPSAwKQotKyAgICB7Ci0rICAgICAgLyogTm90ZSB0aGUgY2FzdCB0aHJvdWdo IHVpbnRwdHJfdDogdGhpcyBpbnRlcmZhY2Ugb25seSB3b3JrcyBpZgotKwkgYSB0YXJnZXQgYWRk cmVzcyBmaXRzIGluIGEgcHNhZGRyX3QsIHdoaWNoIGlzIGEgaG9zdCBwb2ludGVyLgotKwkgU28g YSAzMi1iaXQgZGVidWdnZXIgY2FuIG5vdCBhY2Nlc3MgNjQtYml0IFRMUyB0aHJvdWdoIHRoaXMu ICAqLwotKyAgICAgIGVyciA9IHRocmVhZF9kYi0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wICgmbHdw LT50aCwKLSsJCQkJCSAgICAgKHBzYWRkcl90KSAodWludHB0cl90KSBsb2FkX21vZHVsZSwKLSsJ CQkJCSAgICAgIG9mZnNldCwgJmFkZHIpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAg ICAvKiBHTlUgX19saWJjX3NldHVwX3RscyBpbml0aWFsaXplcyBsX3Rsc19tb2RpZCBhcyAxLiAg Ki8KLSsgICAgICBlcnIgPSB0aHJlYWRfZGItPnRkX3Rocl90bHNiYXNlX3AgKCZsd3AtPnRoLCAx LCAmYWRkcik7Ci0rICAgICAgYWRkciA9IChjaGFyICopIGFkZHIgKyBvZmZzZXQ7Ci0rICAgIH0K LSsKLSAgIGN1cnJlbnRfaW5mZXJpb3IgPSBzYXZlZF9pbmZlcmlvcjsKLSAgIGlmIChlcnIgPT0g VERfT0spCi0gICAgIHsKLUBAIC01NjUsNiArNTgyLDcgQEAgdGhyZWFkX2RiX2xvYWRfc2VhcmNo ICh2b2lkKQotICAgdGRiLT50ZF90YV9zZXRfZXZlbnRfcCA9ICZ0ZF90YV9zZXRfZXZlbnQ7Ci0g ICB0ZGItPnRkX3RhX2V2ZW50X2dldG1zZ19wID0gJnRkX3RhX2V2ZW50X2dldG1zZzsKLSAgIHRk Yi0+dGRfdGhyX3Rsc19nZXRfYWRkcl9wID0gJnRkX3Rocl90bHNfZ2V0X2FkZHI7Ci0rICB0ZGIt PnRkX3Rocl90bHNiYXNlX3AgPSAmdGRfdGhyX3Rsc2Jhc2U7Ci0gCi0gICByZXR1cm4gMTsKLSB9 Ci1AQCAtNjMzLDYgKzY1MSw3IEBAIHRyeV90aHJlYWRfZGJfbG9hZF8xICh2b2lkICpoYW5kbGUp Ci0gICBDSEsgKDAsIHRkYi0+dGRfdGFfc2V0X2V2ZW50X3AgPSBkbHN5bSAoaGFuZGxlLCAidGRf dGFfc2V0X2V2ZW50IikpOwotICAgQ0hLICgwLCB0ZGItPnRkX3RhX2V2ZW50X2dldG1zZ19wID0g ZGxzeW0gKGhhbmRsZSwgInRkX3RhX2V2ZW50X2dldG1zZyIpKTsKLSAgIENISyAoMCwgdGRiLT50 ZF90aHJfdGxzX2dldF9hZGRyX3AgPSBkbHN5bSAoaGFuZGxlLCAidGRfdGhyX3Rsc19nZXRfYWRk ciIpKTsKLSsgIENISyAoMCwgdGRiLT50ZF90aHJfdGxzYmFzZV9wID0gZGxzeW0gKGhhbmRsZSwg InRkX3Rocl90bHNiYXNlIikpOwotIAotICN1bmRlZiBDSEsKLSAKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMuYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvc3RhdGljdGhyZWFkcy5jCi1pbmRleCBmOThmNGYxLi45M2JlZjU2IDEwMDY0NAot LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmMKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5jCi1AQCAtMjgsMTAgKzI4LDE3 IEBACi0gCi0gc2VtX3Qgc2VtYXBob3JlOwotIAotKyNpZmRlZiBIQVZFX1RMUwotK19fdGhyZWFk IGludCB0bHN2YXI7Ci0rI2VuZGlmCi0rCi0gdm9pZCAqCi0gdGhyZWFkX2Z1bmN0aW9uICh2b2lk ICphcmcpCi0gewotLSAgcHJpbnRmICgiVGhyZWFkIGV4ZWN1dGluZ1xuIik7Ci0rI2lmZGVmIEhB VkVfVExTCi0rICB0bHN2YXIgPSAyOwotKyNlbmRpZgotKyAgcHJpbnRmICgiVGhyZWFkIGV4ZWN1 dGluZ1xuIik7IC8qIHRsc3Zhci1pcy1zZXQgKi8KLSAgIHdoaWxlIChzZW1fd2FpdCAoJnNlbWFw aG9yZSkgIT0gMCkKLSAgICAgewotICAgICAgIGlmIChlcnJubyAhPSBFSU5UUikKLUBAIC01Nyw2 ICs2NCw5IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICByZXR1cm4gLTE7 Ci0gICAgIH0KLSAKLSsjaWZkZWYgSEFWRV9UTFMKLSsgIHRsc3ZhciA9IDE7Ci0rI2VuZGlmCi0g Ci0gICAvKiBDcmVhdGUgYSB0aHJlYWQsIHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLiAgKi8KLSAg IHsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3N0YXRpY3RocmVhZHMu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cAotaW5kZXgg ODBiMGJhOC4uOWZhNjI1YSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv c3RhdGljdGhyZWFkcy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RhdGlj dGhyZWFkcy5leHAKLUBAIC0yMiwxMSArMjIsMTYgQEAKLSBzdGFuZGFyZF90ZXN0ZmlsZQotIHNl dCBzdGF0aWNfZmxhZyAiLXN0YXRpYyIKLSAKLS1pZiB7W2dkYl9jb21waWxlX3B0aHJlYWRzICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBcCi0tCSBleGVjdXRh YmxlIFwKLS0JIFtsaXN0IGRlYnVnICJhZGRpdGlvbmFsX2ZsYWdzPSR7c3RhdGljX2ZsYWd9IiBc Ci0tCSAgICAgXV0gIT0gIiIgfSB7Ci0tICAgIHJldHVybiAtMQotK2ZvcmVhY2ggaGF2ZV90bHMg eyAiLURIQVZFX1RMUyIgIiIgfSB7Ci0rICAgIGlmIHtbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIFwKLSsJICAgICBleGVj dXRhYmxlIFwKLSsJICAgICBbbGlzdCBkZWJ1ZyAiYWRkaXRpb25hbF9mbGFncz0ke3N0YXRpY19m bGFnfSAke2hhdmVfdGxzfSIgXAotKwkJIF1dID09ICIiIH0gewotKwlicmVhawotKyAgICB9Ci0r ICAgIGlmIHsgJGhhdmVfdGxzID09ICIiIH0gewotKwlyZXR1cm4gLTEKLSsgICAgfQotIH0KLSAK LSBjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KLUBAIC04OSwzICs5NCwxOCBAQCBnZGJfdGVzdF9t dWx0aXBsZSAicXVpdCIgIiR0ZXN0IiB7Ci0gICAgICAgICBwYXNzICIkdGVzdCIKLSAgICAgfQot IH0KLStjbGVhbl9yZXN0YXJ0ICR7YmluZmlsZX0KLSsKLSsKLStpZiB7ICIkaGF2ZV90bHMiICE9 ICIiIH0gewotKyAgICBpZiAhW3J1bnRvX21haW5dIHsKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSsg ICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInRsc3Zhci1pcy1zZXQiXQot KyAgICBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidGxzdmFyLWlzLXNldCIgIi4qIHRsc3Zh ci1pcy1zZXQgLioiCi0rICAgIGdkYl90ZXN0ICJwIHRsc3ZhciIgIiA9IDIiICJ0bHN2YXIgaW4g dGhyZWFkIgotKyAgICBnZGJfdGVzdCAidGhyZWFkIDEiICIuKiIKLSsgICAgIyBVbndpbmQgZnJv bSBwdGhyZWFkX2pvaW4uCi0rICAgIGdkYl90ZXN0ICJ1cCAxMCIgIiBpbiBtYWluIC4qIgotKyAg ICBnZGJfdGVzdCAicCB0bHN2YXIiICIgPSAxIiAidGxzdmFyIGluIG1haW4iCi0rfQotCi0tLXF0 WkZlaEhzS2d3UzVyUHotLQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXRlc3RzdWl0ZS1ub2hvc3RpZC5w YXRjaCBiL2dkYi10ZXN0c3VpdGUtbm9ob3N0aWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGRjODgwYTguLjAwMDAwMDAKLS0tIGEvZ2RiLXRlc3RzdWl0ZS1ub2hvc3RpZC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDE0LTAyL21zZzAwMTU4Lmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0g dGVzdHN1aXRlOiBGaXggIkVSUk9SOiBubyBmaWxlaWQgZm9yIgotCi0KLS0tYXpMSEZOeU4zMllD UUdDVQotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PXVzLWFzY2lpCi1Db250ZW50 LURpc3Bvc2l0aW9uOiBpbmxpbmUKLQotSGksCi0KLWEzNWNmYjQwMDdjZWU4Y2I4NDEwNjQxMmNk MTdmNGUxMmYxMzM0NWIgaXMgdGhlIGZpcnN0IGJhZCBjb21taXQKLWNvbW1pdCBhMzVjZmI0MDA3 Y2VlOGNiODQxMDY0MTJjZDE3ZjRlMTJmMTMzNDViCi1BdXRob3I6IE1hY2llaiBXLiBSb3p5Y2tp IDxtYWNyb0Bjb2Rlc291cmNlcnkuY29tPgotRGF0ZTogICBUaHUgT2N0IDI0IDIzOjMyOjMwIDIw MTMgKzAxMDAKLQotJCBydW50ZXN0IGdkYi5iYXNlL3NvbGliLWRpc2MuZXhwCi1SdW5uaW5nIC4v Z2RiLmJhc2Uvc29saWItZGlzYy5leHAgLi4uCi1FUlJPUjogbm8gZmlsZWlkIGZvciBob3N0MQot Wy4uLl0KLQotCi1KYW4KLQotLS1hekxIRk55TjMyWUNRR0NVCi1Db250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsgZmls ZW5hbWU9ImdkYmZpbmlzaC5wYXRjaCIKLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTQtMDItMDYgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCAiRVJST1I6 IG5vIGZpbGVpZCBmb3IiIGluIHRoZSB0ZXN0c3VpdGUuCi0JKiBsaWIvZ2RiLmV4cCAoZ2RiX2Zp bmlzaCk6IENoZWNrIGdkYl9zcGF3bl9pZC4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1pbmRleCA1MzNiODFiLi41 YzUzY2RmIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotQEAgLTM3MDgsNyArMzcwOCw4IEBAIHByb2MgZ2RiX2Zp bmlzaCB7IH0gewotICAgICBnbG9iYWwgY2xlYW5maWxlcwotIAotICAgICAjIEdpdmUgcGVyc2lz dGVudCBnZGJzZXJ2ZXIgYSBjaGFuY2UgdG8gdGVybWluYXRlIGJlZm9yZSBHREIgaXMga2lsbGVk LgotLSAgICBpZiB7W2luZm8gZXhpc3RzIGdkYnNlcnZlcl9yZWNvbm5lY3RfcF0gJiYgJGdkYnNl cnZlcl9yZWNvbm5lY3RfcH0gewotKyAgICBpZiB7W2luZm8gZXhpc3RzIGdkYnNlcnZlcl9yZWNv bm5lY3RfcF0gJiYgJGdkYnNlcnZlcl9yZWNvbm5lY3RfcAotKwkmJiBbaW5mbyBleGlzdHMgZ2Ri X3NwYXduX2lkXX0gewotIAlzZW5kX2dkYiAia2lsbFxuIjsKLSAJZ2RiX2V4cGVjdCAxMCB7Ci0g CSAgICAtcmUgInkgb3IgbiIgewotCi0tLWF6TEhGTnlOMzJZQ1FHQ1UtLQotCgpkaWZmIC0tZ2l0 IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwMm9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRs ZTAyb2YxNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAyZTNmNS4uMDAw MDAwMAotLS0gYS9nZGItdXBzdHJlYW0tcHBjNjRsZTAyb2YxNS5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDYxICswLDAgQEAKLWNvbW1pdCA3MThlZTRkYzliMDk0OTE3MDc0MjBhZTQwM2FkMWNl OGRmZGI2MWIyCi1BdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0u Y29tPgotRGF0ZTogICBUaHUgSmFuIDMwIDE5OjEyOjM1IDIwMTQgKzAxMDAKLQotICAgIEFkZCBz dXBwb3J0IGZvciBBVF9IV0NBUDIgYXV4diBlbnRyeQotICAgIAotICAgIFJlY2VudCBwcGM2NCBM aW51eCBrZXJuZWxzIHByb3ZpZGUgYSBuZXcgYXV4diBlbnRyeSBBVF9IV0NBUDIsCi0gICAgd2hp Y2ggaXMgY3VycmVudGx5IG5vdCByZWNvZ25pemVkIGJ5IEdEQiwgY2F1c2luZyBldmVyeSB1c2Ug b2YKLSAgICAiaW5mbyBhdXh2IiB0byBzaG93IGFuIGVycm9yLgotICAgIAotICAgIFRoaXMgY29t bWl0IGFkZHMgdGhlIEFUX0hXQ0FQMiBkZWZpbmUgdG8gaW5jbHVkZS9lbGYvY29tbW9uLmgKLSAg ICBhbmQgaGFuZGxlcyBpdCBpbiBHREIuCi0gICAgCi0gICAgaW5jbHVkZS9lbGYvQ2hhbmdlTG9n OgotICAgIAotICAgIAkqIGNvbW1vbi5oIChBVF9IV0NBUDIpOiBEZWZpbmUuCi0gICAgCi0gICAg Z2RiL0NoYW5nZUxvZzoKLSAgICAKLSAgICAJKiBhdXh2LmMgKGZwcmludF90YXJnZXRfYXV4dik6 IEhhbmRsZSBBVF9IV0NBUDIuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFu Z2VMb2cKLSMjIC0xLDMgKzEsNyBAQAotKzIwMTQtMDEtMzAgIFVscmljaCBXZWlnYW5kwqAgPHV3 ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0rCSogYXV4di5jIChmcHJpbnRfdGFyZ2V0X2F1eHYpOiBI YW5kbGUgQVRfSFdDQVAyLgotKwotIDIwMTQtMDEtMjkgIEpvc2UgRS4gTWFyY2hlc2kgIDxqb3Nl Lm1hcmNoZXNpQG9yYWNsZS5jb20+Ci0gCi0gCSogc3BhcmM2NC1saW51eC10ZGVwLmMgKHNwYXJj NjRfbGludXhfc3RlcF90cmFwKTogR2V0IFBDIGZyb20KLS0tLSBhL2dkYi9hdXh2LmMKLSsrKyBi L2dkYi9hdXh2LmMKLUBAIC00NDIsNiArNDQyLDcgQEAgZnByaW50X3RhcmdldF9hdXh2IChzdHJ1 Y3QgdWlfZmlsZSAqZmlsZSwgc3RydWN0IHRhcmdldF9vcHMgKm9wcykKLSAJICBUQUcgKEFUX0lH Tk9SRVBQQywgXygiRW50cnkgc2hvdWxkIGJlIGlnbm9yZWQiKSwgZGVjKTsKLSAJICBUQUcgKEFU X0JBU0VfUExBVEZPUk0sIF8oIlN0cmluZyBpZGVudGlmeWluZyBiYXNlIHBsYXRmb3JtIiksIHN0 cik7Ci0gCSAgVEFHIChBVF9SQU5ET00sIF8oIkFkZHJlc3Mgb2YgMTYgcmFuZG9tIGJ5dGVzIiks IGhleCk7Ci0rCSAgVEFHIChBVF9IV0NBUDIsIF8oIkV4dGVuc2lvbiBvZiBBVF9IV0NBUCIpLCBo ZXgpOwotIAkgIFRBRyAoQVRfRVhFQ0ZOLCBfKCJGaWxlIG5hbWUgb2YgZXhlY3V0YWJsZSIpLCBz dHIpOwotIAkgIFRBRyAoQVRfU0VDVVJFLCBfKCJCb29sZWFuLCB3YXMgZXhlYyBzZXR1aWQtbGlr ZT8iKSwgZGVjKTsKLSAJICBUQUcgKEFUX1NZU0lORk8sIF8oIlNwZWNpYWwgc3lzdGVtIGluZm8v ZW50cnkgcG9pbnRzIiksIGhleCk7Ci0jIyMgYS9pbmNsdWRlL2VsZi9DaGFuZ2VMb2cKLSMjIyBi L2luY2x1ZGUvZWxmL0NoYW5nZUxvZwotIyMgLTEsMyArMSw3IEBACi0rMjAxNC0wMS0zMCAgVWxy aWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotKwkqIGNvbW1vbi5oIChBVF9I V0NBUDIpOiBEZWZpbmUuCi0rCi0gMjAxMy0xMi0xMyAgS3Vhbi1MaW4gQ2hlbiAgPGt1YW5saW5j aGVudHdAZ21haWwuY29tPgotIAkgICAgV2VpLUNoZW5nIFdhbmcgIDxjb2xlOTQ1QGdtYWlsLmNv bT4KLSAKLS0tLSBhL2luY2x1ZGUvZWxmL2NvbW1vbi5oCi0rKysgYi9pbmNsdWRlL2VsZi9jb21t b24uaAotQEAgLTk1OSw2ICs5NTksNyBAQAotICNkZWZpbmUgQVRfQkFTRV9QTEFURk9STSAyNAkJ LyogU3RyaW5nIGlkZW50aWZ5aW5nIHJlYWwgcGxhdGZvcm0sCi0gCQkJCQkgICBtYXkgZGlmZmVy IGZyb20gQVRfUExBVEZPUk0uICAqLwotICNkZWZpbmUgQVRfUkFORE9NCTI1CQkvKiBBZGRyZXNz IG9mIDE2IHJhbmRvbSBieXRlcy4gICovCi0rI2RlZmluZSBBVF9IV0NBUDIJMjYJCS8qIEV4dGVu c2lvbiBvZiBBVF9IV0NBUC4gICovCi0gI2RlZmluZSBBVF9FWEVDRk4JMzEJCS8qIEZpbGVuYW1l IG9mIGV4ZWN1dGFibGUuICAqLwotIC8qIFBvaW50ZXIgdG8gdGhlIGdsb2JhbCBzeXN0ZW0gcGFn ZSB1c2VkIGZvciBzeXN0ZW0gY2FsbHMgYW5kIG90aGVyCi0gICAgbmljZSB0aGluZ3MuICAqLwoK ZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMDNvZjE1LnBhdGNoIGIvZ2RiLXVwc3Ry ZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMw YjRmY2YuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1jb21taXQgMzZjMjRkOTUzODI1NzJlOWNmNDA5 NTcxMmE4NjEzNjY0ZDcxNjVjYwotQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdh bmRAZGUuaWJtLmNvbT4KLURhdGU6ICAgVHVlIEZlYiA0IDE4OjE5OjUxIDIwMTQgKzAxMDAKLQot ICAgIERvY3VtZW50IHN1cHBvcnQgZm9yIHBvd2VycGM2NGxlLSotbGludXgqIHRhcmdldAotICAg IAotICAgIGdkYi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogTkVXUzogRG9jdW1lbnQgbmV3IHRh cmdldCBwb3dlcnBjNjRsZS0qLWxpbnV4Ki4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIv Z2RiL0NoYW5nZUxvZwotIyMgLTEsMyArMSw3IEBACi0rMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdh bmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KLSsKLSsJKiBORVdTOiBEb2N1bWVudCBuZXcgdGFy Z2V0IHBvd2VycGM2NGxlLSotbGludXgqLgotKwotIDIwMTQtMDItMDQgIE1hcmsgS2V0dGVuaXMg IDxrZXR0ZW5pc0BnbnUub3JnPgotIAotIAkqIHNwYXJjNjRvYnNkLXRkZXAuYyAoc3BhcmM2NG9i c2RfZ3JlZ3NldCk6IE5ldyB2YXJpYWJsZS4KLUluZGV4OiBnZGItNy43LjEvZ2RiL05FV1MKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy43LjEub3JpZy9nZGIvTkVXUwkyMDE0LTA1LTA5IDE5OjIxOjU3 Ljc5ODIzNTAwMiArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvTkVXUwkyMDE0LTA1LTA5IDE5OjIy OjMwLjIwNjIzOTE0NSArMDIwMAotQEAgLTEsNiArMSwxMSBAQAotIAkJV2hhdCBoYXMgY2hhbmdl ZCBpbiBHREI/Ci0gCSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCi0gCi0rKioq IENoYW5nZXMgc2luY2UgR0RCIDcuNwotKwotKyogTmV3IHRhcmdldHMKLStQb3dlclBDNjQgR05V L0xpbnV4IGxpdHRsZS1lbmRpYW4JcG93ZXJwYzY0bGUtKi1saW51eCoKLSsKLSAqKiogQ2hhbmdl cyBpbiBHREIgNy43Ci0gCi0gKiBHREIgbm93IHN1cHBvcnRzIFN5c3RlbVRhcCBTRFQgcHJvYmVz IG9uIEFBcmNoNjQgR05VL0xpbnV4LgoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2NGxl MDRvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNG9mMTUucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiNjczMGYuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFt LXBwYzY0bGUwNG9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEzICswLDAgQEAKLWNv bW1pdCBlNzY1YjQ0YzM4NTNlZDIyODUwNmZjMjJjMjc2YmVjZDYzMTk4MjM4Ci1BdXRob3I6IFVs cmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBUdWUgRmVi IDQgMTg6MjQ6NDIgMjAxNCArMDEwMAotCi0gICAgUmVmYWN0b3IgcHBjNjQgZnVuY3Rpb24gY2Fs bCBhbmQgcmV0dXJuIHZhbHVlIGhhbmRsaW5nCi0gICAgCi0gICAgVGhpcyBwYXRjaCByZWZhY3Rv cnMgdGhlIHBwYzY0IGZ1bmN0aW9uIGNhbGwgYW5kIHJldHVybiB2YWx1ZSBoYW5kbGluZyBjb2Rl Ci0gICAgaW4gcHBjLXN5c3YtdGRlcC5jLiAgVGhlIG1haW4gcHJvYmxlbSB0byBiZSBhZGRyZXNz ZWQgYnkgdGhpcyByZWZhY3RvcmluZwotICAgIGlzIHRoZSBjb2RlIGR1cGxpY2F0aW9uIGNhdXNl ZCBieSBjZXJ0YWluIGFnZ3JlZ2F0ZSB0eXBlczoKLSAgICAKLSAgICBBY2NvcmRpbmcgdG8gdGhl IEFCSSwgc29tZSB0eXBlcyBhcmUgdG8gYmUgZGVjb21wb3NlZCBpbnRvIGNvbXBvbmVudCB0eXBl cwotICAgIGZvciBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZSBoYW5kbGluZy4gIEZvciBleGFt cGxlLCBjb21wbGV4IHR5cGVzIGFyZQotICAgIHRvIGJlIHBhc3NlZCBhcyBpZiB0aGUgcmVhbCBh bmQgaW1hZ2luYXJ5IGNvbXBvbmVudCB3ZXJlIHNlcGFyYXRlIGFyZ3VtZW50cy4KLSAgICBTaW1p bGFybHksIGNlcnRhaW4gT3BlbkNMIHZlY3RvciB0eXBlcyBhcmUgcGFzc2VkIGFzIGlmIHRoZXkg d2VyZSBtdWx0aXBsZQotICAgIHNlcGFyYXRlIGFyZ3VtZW50cyBvZiB0aGUgdmVjdG9yIGVsZW1l bnQgdHlwZS4gIFdpdGggdGhlIG5ldyBFTEZ2MiBBQkksCi0gICAgdGhlcmUgaXMgYW5vdGhlciBj YXNlOiAiaG9tb2dlbmVvdXMgYWdncmVnYXRlcyIgKGUuZy4gYSBzdHJ1Y3QgY29udGFpbmluZwot ICAgIDQgZmxvYXRzKSBhcmUgcGFzc2VkIGluIG11bHRpcGxlIGZsb2F0aW5nIHBvaW50IHJlZ2lz dGVycyBhcyB3ZWxsLgotICAgIAotICAgIFVuZm9ydHVuYXRlbHksIHRoZSBjdXJyZW50IGNvZGUg aXMgbm90IHN0cnVjdHVyZWQgdG8gZWFzaWx5IG1vZGVsIHRoZXNlCi0gICAgQUJJIHByb3BlcnRp ZXMuICBGb3IgZXhhbXBsZSwgY29kZSB0byBwYXNzIGNvbXBsZXggdmFsdWVzIHJlLWltcGxlbWVu dHMKLSAgICBjb2RlIHRvIHBhc3MgdGhlIHVuZGVybHlpbmcgKGZsb2F0aW5nLXBvaW50KSB0eXBl LiAgVGhpcyBoYXMgYWxyZWFkeQotICAgIGxlZCB0byBzb21lIHVuZm9ydHVuYXRlIGNvZGUgZHVw bGljYXRpb24sIGFuZCB3aXRoIHRoZSBhZGRpdGlvbiBvZgotICAgIEVMRnYyIEFCSSBzdXBwb3J0 LCBJIHdvdWxkIGhhdmUgaGFkIHRvIGFkZCB5ZXQgbW9yZSBzdWNoIGR1cGxpY2F0aW9uLgotICAg IAotICAgIFRvIGF2b2lkIHRoYXQsIEkndmUgZGVjaWRlZCB0byByZWZhY3RvciB0aGUgY29kZSBp biBvcmRlciB0byByZS11c2UKLSAgICBzdWJyb3V0aW5lcyB0aGF0IGhhbmRsZSB0aGUgImJhc2Ui IHR5cGVzIHdoZW4gaGFuZGxpbmcgdGhvc2UgYWdncmVnYXRlCi0gICAgdHlwZXMuICBUaGlzIHdh cyBub3QgaW50ZW5kZWQgdG8gY2F1c2UgYW55IGRpZmZlcmVuY2Ugb24gY3VycmVudAotICAgIChF TEZ2MSkgQUJJIGNvZGUsIGJ1dCBpbiBmYWN0IGl0IGZpeGVzIGEgYnVnOgotICAgIAotICAgIEZB SUw6IGdkYi5iYXNlL3ZhcmFyZ3MuZXhwOiBwcmludCBmaW5kX21heF9mbG9hdF9yZWFsKDQsIGZj MSwgZmMyLCBmYzMsIGZjNCkKLSAgICAKLSAgICBUaGlzIHdhcyBjYXVzZWQgYnkgdGhlIG9sZCBj b2RlIGluIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQgaW5jb3JyZWN0bHkKLSAgICBoYW5kbGlu ZyBmbG9hdGluZy1wb2ludCBhcmd1bWVudHMgdG8gdmFyYXJnIHJvdXRpbmVzLCB3aGljaCBqdXN0 IGhhcHBlbnMKLSAgICB0byB3b3JrIG91dCBjb3JyZWN0bHkgYXV0b21hdGljYWxseSBpbiB0aGUg cmVmYWN0b3JlZCBjb2RlIC4uLgotICAgIAotICAgIGdkYi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAg CSogcHBjLXN5c3YtdGRlcC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBVcGRh dGUgY29tbWVudC4KLSAgICAJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0 cnVjdHVyZS4KLSAgICAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCi0gICAg CShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCk6IE5ldyBmdW5jdGlvbi4KLSAgICAJKHBwYzY0X3N5 c3ZfYWJpX3B1c2hfaW50ZWdlcik6IExpa2V3aXNlLgotICAgIAkocHBjNjRfc3lzdl9hYmlfcHVz aF9mcmVnKTogTGlrZXdpc2UuCi0gICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtl d2lzZS4KLSAgICAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBMaWtld2lzZS4KLSAgICAJ KHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBu ZXcgcm91dGluZXMuCi0gICAgCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IE5l dyBmdW5jdGlvbi4KLSAgICAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSk6IFJlZmFjdG9y IHRvIHVzZSBpdC4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5nZUxvZwot IyMgLTEsNSArMSwxOSBAQAotIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5k QGRlLmlibS5jb20+Ci0gCi0rCSogcHBjLXN5c3YtdGRlcC5jIChnZXRfZGVjaW1hbF9mbG9hdF9y ZXR1cm5fdmFsdWUpOiBVcGRhdGUgY29tbWVudC4KLSsJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bv cyk6IE5ldyBkYXRhIHN0cnVjdHVyZS4KLSsJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBS ZW1vdmUuCi0rCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCk6IE5ldyBmdW5jdGlvbi4KLSsJKHBw YzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlcik6IExpa2V3aXNlLgotKwkocHBjNjRfc3lzdl9hYmlf cHVzaF9mcmVnKTogTGlrZXdpc2UuCi0rCShwcGM2NF9zeXN2X2FiaV9wdXNoX3ZyZWcpOiBMaWtl d2lzZS4KLSsJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0pOiBMaWtld2lzZS4KLSsJKHBwYzY0 X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IFJlZmFjdG9yIHRvIHVzZSB0aG9zZSBuZXcgcm91 dGluZXMuCi0rCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSk6IE5ldyBmdW5jdGlv bi4KLSsJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSk6IFJlZmFjdG9yIHRvIHVzZSBpdC4K LSsKLSsyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgot KwotIAkqIE5FV1M6IERvY3VtZW50IG5ldyB0YXJnZXQgcG93ZXJwYzY0bGUtKi1saW51eCouCi0g Ci0gMjAxNC0wMi0wNCAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+Ci0tLS0gYS9n ZGIvcHBjLXN5c3YtdGRlcC5jCi0rKysgYi9nZGIvcHBjLXN5c3YtdGRlcC5jCi1AQCAtNjA5LDgg KzYwOSw3IEBAIHBwY19zeXN2X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLAotICAgcmV0dXJuIHNwOwotIH0KLSAKLS0v KiBIYW5kbGUgdGhlIHJldHVybi12YWx1ZSBjb252ZW50aW9ucyBmb3IgRGVjaW1hbCBGbG9hdGlu ZyBQb2ludCB2YWx1ZXMKLS0gICBpbiBib3RoIHBwYzMyIGFuZCBwcGM2NCwgd2hpY2ggYXJlIHRo ZSBzYW1lLiAgKi8KLSsvKiBIYW5kbGUgdGhlIHJldHVybi12YWx1ZSBjb252ZW50aW9ucyBmb3Ig RGVjaW1hbCBGbG9hdGluZyBQb2ludCB2YWx1ZXMuICAqLwotIHN0YXRpYyBpbnQKLSBnZXRfZGVj aW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3Qg dHlwZSAqdmFsdHlwZSwKLSAJCQkJc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgZ2RiX2J5dGUg KnJlYWRidWYsCi1AQCAtMTEwMiw4MCArMTEwMSwyODcgQEAgY29udmVydF9jb2RlX2FkZHJfdG9f ZGVzY19hZGRyIChDT1JFX0FERFIgY29kZV9hZGRyLCBDT1JFX0FERFIgKmRlc2NfYWRkcikKLSAg IHJldHVybiAxOwotIH0KLSAKLS0vKiBQdXNoIGEgZmxvYXQgaW4gZWl0aGVyIHJlZ2lzdGVycywg b3IgaW4gdGhlIHN0YWNrLiAgVXNpbmcgdGhlIHBwYyA2NCBiaXQKLS0gICBTeXNWIEFCSS4KLSsv KiBTdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmV4dCBhcmd1bWVudCBwb3NpdGlvbi4gICovCi0rc3Ry dWN0IHBwYzY0X3N5c3ZfYXJncG9zCi0rICB7Ci0rICAgIC8qIFJlZ2lzdGVyIGNhY2hlIGhvbGRp bmcgYXJndW1lbnQgcmVnaXN0ZXJzLiAgSWYgdGhpcyBpcyBOVUxMLAotKyAgICAgICB3ZSBvbmx5 IHNpbXVsYXRlIGFyZ3VtZW50IHByb2Nlc3Npbmcgd2l0aG91dCBhY3R1YWxseSB1cGRhdGluZwot KyAgICAgICBhbnkgcmVnaXN0ZXJzIG9yIG1lbW9yeS4gICovCi0rICAgIHN0cnVjdCByZWdjYWNo ZSAqcmVnY2FjaGU7Ci0rICAgIC8qIE5leHQgYXZhaWxhYmxlIGdlbmVyYWwtcHVycG9zZSBhcmd1 bWVudCByZWdpc3Rlci4gICovCi0rICAgIGludCBncmVnOwotKyAgICAvKiBOZXh0IGF2YWlsYWJs ZSBmbG9hdGluZy1wb2ludCBhcmd1bWVudCByZWdpc3Rlci4gICovCi0rICAgIGludCBmcmVnOwot KyAgICAvKiBOZXh0IGF2YWlsYWJsZSB2ZWN0b3IgYXJndW1lbnQgcmVnaXN0ZXIuICAqLwotKyAg ICBpbnQgdnJlZzsKLSsgICAgLyogVGhlIGFkZHJlc3MsIGF0IHdoaWNoIHRoZSBuZXh0IGdlbmVy YWwgcHVycG9zZSBwYXJhbWV0ZXIKLSsgICAgICAgKGludGVnZXIsIHN0cnVjdCwgZmxvYXQsIHZl Y3RvciwgLi4uKSBzaG91bGQgYmUgc2F2ZWQuICAqLwotKyAgICBDT1JFX0FERFIgZ3BhcmFtOwot KyAgICAvKiBUaGUgYWRkcmVzcywgYXQgd2hpY2ggdGhlIG5leHQgYnktcmVmZXJlbmNlIHBhcmFt ZXRlcgotKyAgICAgICAobm9uLUFsdGl2ZWMgdmVjdG9yLCB2YXJpYWJseS1zaXplZCB0eXBlKSBz aG91bGQgYmUgc2F2ZWQuICAqLwotKyAgICBDT1JFX0FERFIgcmVmcGFyYW07Ci0rICB9OwotKwot Ky8qIFZBTCBpcyBhIHZhbHVlIG9mIGxlbmd0aCBMRU4uICBTdG9yZSBpdCBpbnRvIHRoZSBhcmd1 bWVudCBhcmVhIG9uIHRoZQotKyAgIHN0YWNrIGFuZCBsb2FkIGl0IGludG8gdGhlIGNvcnJlc3Bv bmRpbmcgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycwotKyAgIHJlcXVpcmVkIGJ5IHRoZSBBQkks IGFuZCB1cGRhdGUgQVJHUE9TLgotKwotKyAgIElmIEFMSUdOIGlzIG5vbnplcm8sIGl0IHNwZWNp ZmllcyB0aGUgbWluaW11bSBhbGlnbm1lbnQgcmVxdWlyZWQKLSsgICBmb3IgdGhlIG9uLXN0YWNr IGNvcHkgb2YgdGhlIGFyZ3VtZW50LiAgKi8KLSAKLS0gICBUaGlzIGltcGxlbWVudHMgYSBkdW1i ZWQgZG93biB2ZXJzaW9uIG9mIHRoZSBBQkkuICBJdCBhbHdheXMgd3JpdGVzCi0tICAgdmFsdWVz IHRvIG1lbW9yeSwgR1BSIGFuZCBGUFIsIGV2ZW4gd2hlbiBub3QgbmVjZXNzYXJ5LiAgRG9pbmcg dGhpcwotLSAgIGdyZWF0bHkgc2ltcGxpZmllcyB0aGUgbG9naWMuICAqLwotK3N0YXRpYyB2b2lk Ci0rcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotKwkJ CSBjb25zdCBiZmRfYnl0ZSAqdmFsLCBpbnQgbGVuLCBpbnQgYWxpZ24sCi0rCQkJIHN0cnVjdCBw cGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRk ZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgaW50IG9mZnNldCA9IDA7Ci0rCi0rICAv KiBFbmZvcmNlIGFsaWdubWVudCBvZiBzdGFjayBsb2NhdGlvbiwgaWYgcmVxdWVzdGVkLiAgKi8K LSsgIGlmIChhbGlnbiA+IHRkZXAtPndvcmRzaXplKQotKyAgICB7Ci0rICAgICAgQ09SRV9BRERS IGFsaWduZWRfZ3BhcmFtID0gYWxpZ25fdXAgKGFyZ3Bvcy0+Z3BhcmFtLCBhbGlnbik7Ci0rCi0r ICAgICAgYXJncG9zLT5ncmVnICs9IChhbGlnbmVkX2dwYXJhbSAtIGFyZ3Bvcy0+Z3BhcmFtKSAv IHRkZXAtPndvcmRzaXplOwotKyAgICAgIGFyZ3Bvcy0+Z3BhcmFtID0gYWxpZ25lZF9ncGFyYW07 Ci0rICAgIH0KLSsKLSsgIC8qIFRoZSBBQkkgKHZlcnNpb24gMS45KSBzcGVjaWZpZXMgdGhhdCB2 YWx1ZXMgc21hbGxlciB0aGFuIG9uZQotKyAgICAgZG91Ymxld29yZCBhcmUgcmlnaHQtYWxpZ25l ZCBhbmQgdGhvc2UgbGFyZ2VyIGFyZSBsZWZ0LWFsaWduZWQuCi0rICAgICBHQ0MgdmVyc2lvbnMg YmVmb3JlIDMuNCBpbXBsZW1lbnRlZCB0aGlzIGluY29ycmVjdGx5OyBzZWUKLSsgICAgIDxodHRw Oi8vZ2NjLmdudS5vcmcvZ2NjLTMuNC9wb3dlcnBjLWFiaS5odG1sPi4gICovCi0rICBpZiAobGVu IDwgdGRlcC0+d29yZHNpemUpCi0rICAgIG9mZnNldCA9IHRkZXAtPndvcmRzaXplIC0gbGVuOwot KwotKyAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUpCi0rICAgIHdyaXRlX21lbW9yeSAoYXJncG9zLT5n cGFyYW0gKyBvZmZzZXQsIHZhbCwgbGVuKTsKLSsgIGFyZ3Bvcy0+Z3BhcmFtID0gYWxpZ25fdXAg KGFyZ3Bvcy0+Z3BhcmFtICsgbGVuLCB0ZGVwLT53b3Jkc2l6ZSk7Ci0rCi0rICB3aGlsZSAobGVu ID49IHRkZXAtPndvcmRzaXplKQotKyAgICB7Ci0rICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUg JiYgYXJncG9zLT5ncmVnIDw9IDEwKQotKwlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+ cmVnY2FjaGUsCi0rCQkJICAgICAgIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgYXJncG9zLT5ncmVn LCB2YWwpOwotKyAgICAgIGFyZ3Bvcy0+Z3JlZysrOwotKyAgICAgIGxlbiAtPSB0ZGVwLT53b3Jk c2l6ZTsKLSsgICAgICB2YWwgKz0gdGRlcC0+d29yZHNpemU7Ci0rICAgIH0KLSsKLSsgIGlmIChs ZW4gPiAwKQotKyAgICB7Ci0rICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5n cmVnIDw9IDEwKQotKwlyZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFydCAoYXJncG9zLT5yZWdjYWNo ZSwKLSsJCQkJICAgIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgYXJncG9zLT5ncmVnLAotKwkJCQkg ICAgb2Zmc2V0LCBsZW4sIHZhbCk7Ci0rICAgICAgYXJncG9zLT5ncmVnKys7Ci0rICAgIH0KLSt9 Ci0rCi0rLyogVGhlIHNhbWUgYXMgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwsIGJ1dCB1c2luZyBh IHNpbmdsZS13b3JkIGludGVnZXIKLSsgICB2YWx1ZSBWQUwgYXMgYXJndW1lbnQuICAqLwotIAot IHN0YXRpYyB2b2lkCi0tcHBjNjRfc3lzdl9hYmlfcHVzaF9mbG9hdCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0tCQkJICAgc3RydWN0IGdkYmFy Y2hfdGRlcCAqdGRlcCwgc3RydWN0IHR5cGUgKnR5cGUsIAotLQkJCSAgIGNvbnN0IGJmZF9ieXRl ICp2YWwsIGludCBmcmVnLCBpbnQgZ3JlZywKLS0JCQkgICBDT1JFX0FERFIgZ3BhcmFtKQotK3Bw YzY0X3N5c3ZfYWJpX3B1c2hfaW50ZWdlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIFVMT05H RVNUIHZhbCwKLSsJCQkgICAgIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQotIHsK LS0gIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tICBjb25zdCBnZGJfYnl0 ZSAqcDsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFy Y2gpOwotKyAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIg KGdkYmFyY2gpOwotKyAgZ2RiX2J5dGUgYnVmW01BWF9SRUdJU1RFUl9TSVpFXTsKLSAKLS0gIGlm IChUWVBFX0xFTkdUSCAodHlwZSkgPD0gOCkKLSsgIGlmIChhcmdwb3MtPnJlZ2NhY2hlKQotKyAg ICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChidWYsIHRkZXAtPndvcmRzaXplLCBieXRlX29yZGVy LCB2YWwpOwotKyAgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwgKGdkYmFyY2gsIGJ1ZiwgdGRlcC0+ d29yZHNpemUsIDAsIGFyZ3Bvcyk7Ci0rfQotKwotKy8qIFZBTCBpcyBhIHZhbHVlIG9mIFRZUEUs IGEgKGJpbmFyeSBvciBkZWNpbWFsKSBmbG9hdGluZy1wb2ludCB0eXBlLgotKyAgIExvYWQgaXQg aW50byBhIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIGlmIHJlcXVpcmVkIGJ5IHRoZSBBQkksCi0r ICAgYW5kIHVwZGF0ZSBBUkdQT1MuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHBjNjRfc3lzdl9h YmlfcHVzaF9mcmVnIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSsJCQkgIHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBiZmRfYnl0ZSAqdmFsLAotKwkJCSAgc3RydWN0IHBwYzY0X3N5c3ZfYXJn cG9zICphcmdwb3MpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hf dGRlcCAoZ2RiYXJjaCk7Ci0rICBpZiAodGRlcC0+c29mdF9mbG9hdCkKLSsgICAgcmV0dXJuOwot KwotKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSA4Ci0rICAgICAgJiYgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfRkxUKQotICAgICB7Ci0tICAgICAgLyogVmVyc2lvbiAxLjcgb2Yg dGhlIDY0LWJpdCBQb3dlclBDIEVMRiBBQkkgc2F5czoKLSsgICAgICAvKiBGbG9hdHMgYW5kIGRv dWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGZsb2F0cyBhcmUgY29udmVydGVkCi0rIAkg dG8gZG91YmxlIGZpcnN0LiAgKi8KLSsgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdw b3MtPmZyZWcgPD0gMTMpCi0rCXsKLSsJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdu dW0gKyBhcmdwb3MtPmZyZWc7Ci0rCSAgc3RydWN0IHR5cGUgKnJlZ3R5cGUgPSByZWdpc3Rlcl90 eXBlIChnZGJhcmNoLCByZWdudW0pOwotKwkgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJf U0laRV07Ci0gCi0tCSAiU2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgYXJl IG1hcHBlZCB0bwotLQkgdGhlIGZpcnN0IHdvcmQgaW4gYSBzaW5nbGUgZG91Ymxld29yZC4iCi0r CSAgY29udmVydF90eXBlZF9mbG9hdGluZyAodmFsLCB0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOwot KwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCByZWd2 YWwpOwotKwl9Ci0gCi0tCSBBbmQgdmVyc2lvbiAxLjkgc2F5czoKLSsgICAgICBhcmdwb3MtPmZy ZWcrKzsKLSsgICAgfQotKyAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDgKLSsJICAg JiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfREVDRkxPQVQpCi0rICAgIHsKLSsgICAg ICAvKiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGRlY2ltYWwg ZmxvYXRzIGFyZQotKwkgcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkLiAgKi8K LSsgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTMpCi0rCXsK LSsJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBhcmdwb3MtPmZyZWc7Ci0r CSAgaW50IG9mZnNldCA9IDggLSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0tCSAiU2luZ2xlIHBy ZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMgYXJlIG1hcHBlZCB0bwotLQkgdGhlIHNlY29u ZCB3b3JkIGluIGEgc2luZ2xlIGRvdWJsZXdvcmQuIgotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZV9wYXJ0IChhcmdwb3MtPnJlZ2NhY2hlLCByZWdudW0sCi0rCQkJCSAgICAgIG9mZnNldCwgVFlQ RV9MRU5HVEggKHR5cGUpLCB2YWwpOwotKwl9Ci0gCi0tCSBHREIgdGhlbiB3cml0ZXMgc2luZ2xl IHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCB2YWx1ZXMKLS0JIGF0IGJvdGggd29yZHMgaW4gYSBk b3VibGV3b3JkLCB0byBzdXBwb3J0IGJvdGggQUJJcy4gICovCi0tICAgICAgaWYgKFRZUEVfTEVO R1RIICh0eXBlKSA9PSA0KQotKyAgICAgIGFyZ3Bvcy0+ZnJlZysrOwotKyAgICB9Ci0rICBlbHNl IGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYKLSsJICAgJiYgVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfRkxUCi0rCSAgICYmIChnZGJhcmNoX2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2Ri YXJjaCkKLSsJICAgICAgID09IGZsb2F0Zm9ybWF0c19pYm1fbG9uZ19kb3VibGUpKQotKyAgICB7 Ci0rICAgICAgLyogSUJNIGxvbmcgZG91YmxlIHN0b3JlZCBpbiB0d28gY29uc2VjdXRpdmUgRlBS cy4gICovCi0rICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUgJiYgYXJncG9zLT5mcmVnIDw9IDEz KQotIAl7Ci0tCSAgbWVtY3B5IChyZWd2YWwsIHZhbCwgNCk7Ci0tCSAgbWVtY3B5IChyZWd2YWwg KyA0LCB2YWwsIDQpOwotLQkgIHAgPSByZWd2YWw7Ci0rCSAgaW50IHJlZ251bSA9IHRkZXAtPnBw Y19mcDBfcmVnbnVtICsgYXJncG9zLT5mcmVnOwotKwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCB2YWwpOwotKwkgIGlmIChhcmdwb3MtPmZyZWcg PD0gMTIpCi0rCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJl Z251bSArIDEsIHZhbCArIDgpOwotIAl9Ci0tICAgICAgZWxzZQotLQlwID0gdmFsOwotIAotLSAg ICAgIC8qIFdyaXRlIHZhbHVlIGluIHRoZSBzdGFjaydzIHBhcmFtZXRlciBzYXZlIGFyZWEuICAq LwotLSAgICAgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4KTsKLSsgICAgICBhcmdwb3MtPmZy ZWcgKz0gMjsKLSsgICAgfQotKyAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID09IDE2Ci0r CSAgICYmIFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQotKyAgICB7Ci0r ICAgICAgLyogMTI4LWJpdCBkZWNpbWFsIGZsb2F0aW5nLXBvaW50IHZhbHVlcyBhcmUgc3RvcmVk IGluIGFuZCBldmVuL29kZAotKwkgcGFpciBvZiBGUFJzLCB3aXRoIHRoZSBldmVuIEZQUiBob2xk aW5nIHRoZSBtb3N0IHNpZ25pZmljYW50IGhhbGYuICAqLwotKyAgICAgIGFyZ3Bvcy0+ZnJlZyAr PSBhcmdwb3MtPmZyZWcgJiAxOwotIAotLSAgICAgIC8qIEZsb2F0cyBhbmQgRG91YmxlcyBnbyBp biBmMSAuLiBmMTMuICBUaGV5IGFsc28gY29uc3VtZSBhIGxlZnQgYWxpZ25lZAotLQkgR1JFRywg YW5kIGNhbiBlbmQgdXAgaW4gbWVtb3J5LiAgKi8KLS0gICAgICBpZiAoZnJlZyA8PSAxMykKLSsg ICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZyZWcgPD0gMTIpCi0gCXsKLS0J ICBzdHJ1Y3QgdHlwZSAqcmVndHlwZTsKLSsJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9y ZWdudW0gKyBhcmdwb3MtPmZyZWc7Ci0gCi0tCSAgcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdk YmFyY2gsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZyk7Ci0tCSAgY29udmVydF90eXBlZF9m bG9hdGluZyAodmFsLCB0eXBlLCByZWd2YWwsIHJlZ3R5cGUpOwotLQkgIHJlZ2NhY2hlX2Nvb2tl ZF93cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZywgcmVndmFsKTsK LSsJICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSwgdmFs KTsKLSsJICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKGFyZ3Bvcy0+cmVnY2FjaGUsIHJlZ251bSAr IDEsIHZhbCArIDgpOwotIAl9Ci0tICAgICAgaWYgKGdyZWcgPD0gMTApCi0tCXJlZ2NhY2hlX2Nv b2tlZF93cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgZ3JlZywgcmVndmFs KTsKLSsKLSsgICAgICBhcmdwb3MtPmZyZWcgKz0gMjsKLSAgICAgfQotLSAgZWxzZQotK30KLSsK LSsvKiBWQUwgaXMgYSB2YWx1ZSBvZiBBbHRpVmVjIHZlY3RvciB0eXBlLiAgTG9hZCBpdCBpbnRv IGEgdmVjdG9yIHJlZ2lzdGVyCi0rICAgaWYgcmVxdWlyZWQgYnkgdGhlIEFCSSwgYW5kIHVwZGF0 ZSBBUkdQT1MuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHBjNjRfc3lzdl9hYmlfcHVzaF92cmVn IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgYmZkX2J5dGUgKnZhbCwKLSsJCQkgIHN0 cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3Rk ZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKwotKyAgaWYgKGFyZ3Bvcy0+cmVn Y2FjaGUgJiYgYXJncG9zLT52cmVnIDw9IDEzKQotKyAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUg KGFyZ3Bvcy0+cmVnY2FjaGUsCi0rCQkJICAgdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyBhcmdwb3Mt PnZyZWcsIHZhbCk7Ci0rCi0rICBhcmdwb3MtPnZyZWcrKzsKLSt9Ci0rCi0rLyogVkFMIGlzIGEg dmFsdWUgb2YgVFlQRS4gIExvYWQgaXQgaW50byBtZW1vcnkgYW5kL29yIHJlZ2lzdGVycwotKyAg IGFzIHJlcXVpcmVkIGJ5IHRoZSBBQkksIGFuZCB1cGRhdGUgQVJHUE9TLiAgKi8KLSsKLStzdGF0 aWMgdm9pZAotK3BwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAotKwkJCSAgIHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBiZmRfYnl0ZSAqdmFsLAotKwkJ CSAgIHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3BvcyAqYXJncG9zKQotK3sKLSsgIHN0cnVjdCBnZGJh cmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKwotKyAgaWYgKFRZUEVf Q09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAotKyAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQotKyAgICB7Ci0rICAgICAgLyogRmxvYXRpbmctcG9pbnQg c2NhbGFycyBhcmUgcGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0rICAg ICAgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwgKGdkYmFyY2gsIHZhbCwgVFlQRV9MRU5HVEggKHR5 cGUpLCAwLCBhcmdwb3MpOwotKyAgICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyAoZ2RiYXJj aCwgdHlwZSwgdmFsLCBhcmdwb3MpOwotKyAgICB9Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKHR5 cGUpID09IFRZUEVfQ09ERV9BUlJBWSAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKLSsJICAgJiYgdGRl cC0+dmVjdG9yX2FiaSA9PSBQT1dFUlBDX1ZFQ19BTFRJVkVDCi0rCSAgICYmIFRZUEVfTEVOR1RI ICh0eXBlKSA9PSAxNikKLSsgICAgewotKyAgICAgIC8qIEFsdGlWZWMgdmVjdG9ycyBhcmUgcGFz c2VkIGFsaWduZWQsIGFuZCBpbiB2ZWN0b3IgcmVnaXN0ZXJzLiAgKi8KLSsgICAgICBwcGM2NF9z eXN2X2FiaV9wdXNoX3ZhbCAoZ2RiYXJjaCwgdmFsLCBUWVBFX0xFTkdUSCAodHlwZSksIDE2LCBh cmdwb3MpOwotKyAgICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfdnJlZyAoZ2RiYXJjaCwgdmFsLCBh cmdwb3MpOwotKyAgICB9Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9BUlJBWSAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkKLSsJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUp ID49IDE2KQotICAgICB7Ci0tICAgICAgLyogSUJNIGxvbmcgZG91YmxlIHN0b3JlZCBpbiB0d28g ZG91Ymxld29yZHMgb2YgdGhlCi0tCSBwYXJhbWV0ZXIgc2F2ZSBhcmVhIGFuZCBjb3JyZXNwb25k aW5nIHJlZ2lzdGVycy4gICovCi0tICAgICAgaWYgKCF0ZGVwLT5zb2Z0X2Zsb2F0ICYmIGZyZWcg PD0gMTMpCi0rICAgICAgLyogTm9uLUFsdGl2ZWMgdmVjdG9ycyBhcmUgcGFzc2VkIGJ5IHJlZmVy ZW5jZS4gICovCi0rCi0rICAgICAgLyogQ29weSB2YWx1ZSBvbnRvIHRoZSBzdGFjayAuLi4gICov Ci0rICAgICAgQ09SRV9BRERSIGFkZHIgPSBhbGlnbl91cCAoYXJncG9zLT5yZWZwYXJhbSwgMTYp OwotKyAgICAgIGlmIChhcmdwb3MtPnJlZ2NhY2hlKQotKwl3cml0ZV9tZW1vcnkgKGFkZHIsIHZh bCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSsgICAgICBhcmdwb3MtPnJlZnBhcmFtID0gYWxpZ25f dXAgKGFkZHIgKyBUWVBFX0xFTkdUSCAodHlwZSksIHRkZXAtPndvcmRzaXplKTsKLSsKLSsgICAg ICAvKiAuLi4gYW5kIHBhc3MgYSBwb2ludGVyIHRvIHRoZSBjb3B5IGFzIHBhcmFtZXRlci4gICov Ci0rICAgICAgcHBjNjRfc3lzdl9hYmlfcHVzaF9pbnRlZ2VyIChnZGJhcmNoLCBhZGRyLCBhcmdw b3MpOwotKyAgICB9Ci0rICBlbHNlIGlmICgoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf SU5UCi0rCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9FTlVNCi0rCSAgICB8 fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9CT09MCi0rCSAgICB8fCBUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9DSEFSCi0rCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZ UEVfQ09ERV9QVFIKLSsJICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikK LSsJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUpIDw9IHRkZXAtPndvcmRzaXplKQotKyAgICB7Ci0r ICAgICAgVUxPTkdFU1Qgd29yZCA9IDA7Ci0rCi0rICAgICAgaWYgKGFyZ3Bvcy0+cmVnY2FjaGUp Ci0gCXsKLS0JICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAw X3JlZ251bSArIGZyZWcsIHZhbCk7Ci0tCSAgaWYgKGZyZWcgPD0gMTIpCi0tCSAgICByZWdjYWNo ZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcgKyAx LAotLQkJCQkgICB2YWwgKyA4KTsKLSsJICAvKiBTaWduIGV4dGVuZCB0aGUgdmFsdWUsIHRoZW4g c3RvcmUgaXQgdW5zaWduZWQuICAqLwotKwkgIHdvcmQgPSB1bnBhY2tfbG9uZyAodHlwZSwgdmFs KTsKLSsKLSsJICAvKiBDb252ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBpbnRvIGRl c2NyaXB0b3JzLiAgKi8KLSsJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRS Ci0rCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKLSsJICAgIHsK LSsJICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlCi0rCQk9IGNoZWNrX3R5cGVkZWYgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSsKLSsJICAgICAgaWYgKFRZUEVfQ09ERSAodGFyZ2V0 X3R5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0rCQkgIHx8IFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUp ID09IFRZUEVfQ09ERV9NRVRIT0QpCi0rCQl7Ci0rCQkgIENPUkVfQUREUiBkZXNjID0gd29yZDsK LSsKLSsJCSAgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyICh3b3JkLCAmZGVzYyk7Ci0r CQkgIHdvcmQgPSBkZXNjOwotKwkJfQotKwkgICAgfQotIAl9Ci0tICAgICAgaWYgKGdyZWcgPD0g MTApCi0rCi0rICAgICAgcHBjNjRfc3lzdl9hYmlfcHVzaF9pbnRlZ2VyIChnZGJhcmNoLCB3b3Jk LCBhcmdwb3MpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBwcGM2NF9zeXN2X2Fi aV9wdXNoX3ZhbCAoZ2RiYXJjaCwgdmFsLCBUWVBFX0xFTkdUSCAodHlwZSksIDAsIGFyZ3Bvcyk7 Ci0rCi0rICAgICAgLyogVGhlIEFCSSAodmVyc2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHN0cnVj dHMgY29udGFpbmluZyBhCi0rCSBzaW5nbGUgZmxvYXRpbmctcG9pbnQgdmFsdWUsIGF0IGFueSBs ZXZlbCBvZiBuZXN0aW5nIG9mCi0rCSBzaW5nbGUtbWVtYmVyIHN0cnVjdHMsIGFyZSBwYXNzZWQg aW4gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KLSsgICAgICBpZiAoVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUCi0rCSAgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAx KQotIAl7Ci0tCSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dw MF9yZWdudW0gKyBncmVnLCB2YWwpOwotLQkgIGlmIChncmVnIDw9IDkpCi0tCSAgICByZWdjYWNo ZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIGdyZWcgKyAx LAotLQkJCQkgICB2YWwgKyA4KTsKLSsJICB3aGlsZSAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfU1RSVUNUCi0rCQkgJiYgVFlQRV9ORklFTERTICh0eXBlKSA9PSAxKQotKwkgICAgdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpOwotKwotKwkgIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9GTFQpCi0rCSAgICBwcGM2NF9zeXN2X2Fi aV9wdXNoX2ZyZWcgKGdkYmFyY2gsIHR5cGUsIHZhbCwgYXJncG9zKTsKLSAJfQotLSAgICAgIHdy aXRlX21lbW9yeSAoZ3BhcmFtLCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gICAgIH0KLSB9 Ci0gCi1AQCAtMTIzNywyMCArMTQ0MywxMSBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15X2Nh bGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3Jp dGVfcGFzcyA8IDI7IHdyaXRlX3Bhc3MrKykKLSAgICAgewotICAgICAgIGludCBhcmdubzsKLS0g ICAgICAvKiBOZXh0IGF2YWlsYWJsZSBmbG9hdGluZyBwb2ludCByZWdpc3RlciBmb3IgZmxvYXQg YW5kIGRvdWJsZQotLSAgICAgICAgIGFyZ3VtZW50cy4gICovCi0tICAgICAgaW50IGZyZWcgPSAx OwotLSAgICAgIC8qIE5leHQgYXZhaWxhYmxlIGdlbmVyYWwgcmVnaXN0ZXIgZm9yIG5vbi12ZWN0 b3IgKGJ1dCBwb3NzaWJseQotLSAgICAgICAgIGZsb2F0KSBhcmd1bWVudHMuICAqLwotLSAgICAg IGludCBncmVnID0gMzsKLS0gICAgICAvKiBOZXh0IGF2YWlsYWJsZSB2ZWN0b3IgcmVnaXN0ZXIg Zm9yIHZlY3RvciBhcmd1bWVudHMuICAqLwotLSAgICAgIGludCB2cmVnID0gMjsKLS0gICAgICAv KiBUaGUgYWRkcmVzcywgYXQgd2hpY2ggdGhlIG5leHQgZ2VuZXJhbCBwdXJwb3NlIHBhcmFtZXRl cgotLSAgICAgICAgIChpbnRlZ2VyLCBzdHJ1Y3QsIGZsb2F0LCB2ZWN0b3IsIC4uLikgc2hvdWxk IGJlIHNhdmVkLiAgKi8KLS0gICAgICBDT1JFX0FERFIgZ3BhcmFtOwotLSAgICAgIC8qIFRoZSBh ZGRyZXNzLCBhdCB3aGljaCB0aGUgbmV4dCBieS1yZWZlcmVuY2UgcGFyYW1ldGVyCi0tCSAobm9u LUFsdGl2ZWMgdmVjdG9yLCB2YXJpYWJseS1zaXplZCB0eXBlKSBzaG91bGQgYmUgc2F2ZWQuICAq LwotLSAgICAgIENPUkVfQUREUiByZWZwYXJhbTsKLSsKLSsgICAgICBzdHJ1Y3QgcHBjNjRfc3lz dl9hcmdwb3MgYXJncG9zOwotKyAgICAgIGFyZ3Bvcy5ncmVnID0gMzsKLSsgICAgICBhcmdwb3Mu ZnJlZyA9IDE7Ci0rICAgICAgYXJncG9zLnZyZWcgPSAyOwotIAotICAgICAgIGlmICghd3JpdGVf cGFzcykKLSAJewotQEAgLTEyNTgsMTkgKzE0NTUsMjEgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9k dW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJICAgICBvZmZzZXRzIChzdGFy dCBhZGRyZXNzIHplcm8pIHRoYW4gYWRkcmVzc2VzLiAgVGhhdCB3YXkKLSAJICAgICB0aGV5IGFj Y3VtdWxhdGUgdGhlIHRvdGFsIHN0YWNrIHNwYWNlIGVhY2ggcmVnaW9uCi0gCSAgICAgcmVxdWly ZXMuICAqLwotLQkgIGdwYXJhbSA9IDA7Ci0tCSAgcmVmcGFyYW0gPSAwOwotKwkgIGFyZ3Bvcy5y ZWdjYWNoZSA9IE5VTEw7Ci0rCSAgYXJncG9zLmdwYXJhbSA9IDA7Ci0rCSAgYXJncG9zLnJlZnBh cmFtID0gMDsKLSAJfQotICAgICAgIGVsc2UKLSAJewotIAkgIC8qIERlY3JlbWVudCB0aGUgc3Rh Y2sgcG9pbnRlciBtYWtpbmcgc3BhY2UgZm9yIHRoZSBBbHRpdmVjCi0gCSAgICAgYW5kIGdlbmVy YWwgb24tc3RhY2sgcGFyYW1ldGVycy4gIFNldCByZWZwYXJhbSBhbmQgZ3BhcmFtCi0gCSAgICAg dG8gdGhlaXIgY29ycmVzcG9uZGluZyByZWdpb25zLiAgKi8KLS0JICByZWZwYXJhbSA9IGFsaWdu X2Rvd24gKHNwIC0gcmVmcGFyYW1fc2l6ZSwgMTYpOwotLQkgIGdwYXJhbSA9IGFsaWduX2Rvd24g KHJlZnBhcmFtIC0gZ3BhcmFtX3NpemUsIDE2KTsKLSsJICBhcmdwb3MucmVnY2FjaGUgPSByZWdj YWNoZTsKLSsJICBhcmdwb3MucmVmcGFyYW0gPSBhbGlnbl9kb3duIChzcCAtIHJlZnBhcmFtX3Np emUsIDE2KTsKLSsJICBhcmdwb3MuZ3BhcmFtID0gYWxpZ25fZG93biAoYXJncG9zLnJlZnBhcmFt IC0gZ3BhcmFtX3NpemUsIDE2KTsKLSAJICAvKiBBZGQgaW4gc3BhY2UgZm9yIHRoZSBUT0MsIGxp bmsgZWRpdG9yIGRvdWJsZSB3b3JkLAotIAkgICAgIGNvbXBpbGVyIGRvdWJsZSB3b3JkLCBMUiBz YXZlIGFyZWEsIENSIHNhdmUgYXJlYS4gICovCi0tCSAgc3AgPSBhbGlnbl9kb3duIChncGFyYW0g LSA0OCwgMTYpOwotKwkgIHNwID0gYWxpZ25fZG93biAoYXJncG9zLmdwYXJhbSAtIDQ4LCAxNik7 Ci0gCX0KLSAKLSAgICAgICAvKiBJZiB0aGUgZnVuY3Rpb24gaXMgcmV0dXJuaW5nIGEgYHN0cnVj dCcsIHRoZW4gdGhlcmUgaXMgYW4KLUBAIC0xMjc5LDE0ICsxNDc4LDcgQEAgcHBjNjRfc3lzdl9h YmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgICAgICBz aG91bGQgYWR2YW5jZSBvbmUgd29yZCBhbmQgc3RhcnQgZnJvbSByNCByZWdpc3RlciB0byBjb3B5 Ci0gICAgICAgICAgcGFyYW1ldGVycy4gIFRoaXMgYWxzbyBjb25zdW1lcyBvbmUgb24tc3RhY2sg cGFyYW1ldGVyIHNsb3QuICAqLwotICAgICAgIGlmIChzdHJ1Y3RfcmV0dXJuKQotLQl7Ci0tCSAg aWYgKHdyaXRlX3Bhc3MpCi0tCSAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfc2lnbmVkIChyZWdj YWNoZSwKLS0JCQkJCSAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLAotLQkJCQkJICBzdHJ1 Y3RfYWRkcik7Ci0tCSAgZ3JlZysrOwotLQkgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyB0 ZGVwLT53b3Jkc2l6ZSwgdGRlcC0+d29yZHNpemUpOwotLQl9Ci0rCXBwYzY0X3N5c3ZfYWJpX3B1 c2hfaW50ZWdlciAoZ2RiYXJjaCwgc3RydWN0X2FkZHIsICZhcmdwb3MpOwotIAotICAgICAgIGZv ciAoYXJnbm8gPSAwOyBhcmdubyA8IG5hcmdzOyBhcmdubysrKQotIAl7Ci1AQCAtMTI5NCw0MzIg KzE0ODYsNTQgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKLSAJICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFyZykpOwotIAkgIGNvbnN0IGJmZF9ieXRlICp2YWwgPSB2YWx1ZV9jb250ZW50cyAo YXJnKTsKLSAKLS0JICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUICYmIFRZ UEVfTEVOR1RIICh0eXBlKSA8PSA4KQotKwkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9DT01QTEVYKQotIAkgICAgewotLQkgICAgICBpZiAod3JpdGVfcGFzcykKLS0JCSAgcHBj NjRfc3lzdl9hYmlfcHVzaF9mbG9hdCAoZ2RiYXJjaCwgcmVnY2FjaGUsIHRkZXAsIHR5cGUsCi0t CQkJCQkgICAgIHZhbCwgZnJlZywgZ3JlZywgZ3BhcmFtKTsKLS0KLS0JICAgICAgZnJlZysrOwot LQkgICAgICBncmVnKys7Ci0tCSAgICAgIC8qIEFsd2F5cyBjb25zdW1lIHBhcmFtZXRlciBzdGFj ayBzcGFjZS4gICovCi0tCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyA4LCB0ZGVw LT53b3Jkc2l6ZSk7Ci0tCSAgICB9Ci0tCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfRkxUCi0tCQkgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYKLS0JCSAgICYm IChnZGJhcmNoX2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKLS0JCSAgICAgICA9PSBmbG9h dGZvcm1hdHNfaWJtX2xvbmdfZG91YmxlKSkKLS0JICAgIHsKLS0JICAgICAgaWYgKHdyaXRlX3Bh c3MpCi0tCQlwcGM2NF9zeXN2X2FiaV9wdXNoX2Zsb2F0IChnZGJhcmNoLCByZWdjYWNoZSwgdGRl cCwgdHlwZSwKLS0JCQkJCSAgIHZhbCwgZnJlZywgZ3JlZywgZ3BhcmFtKTsKLS0JICAgICAgZnJl ZyArPSAyOwotLQkgICAgICBncmVnICs9IDI7Ci0tCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChn cGFyYW0gKyBUWVBFX0xFTkdUSCAodHlwZSksIHRkZXAtPndvcmRzaXplKTsKLS0JICAgIH0KLS0J ICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYCi0tCSAgICAg ICYmIChUWVBFX0xFTkdUSCAodHlwZSkgPT0gOCB8fCBUWVBFX0xFTkdUSCAodHlwZSkgPT0gMTYp KQotLQkgICAgewotLQkgICAgICBpbnQgaTsKLS0KLS0JICAgICAgZm9yIChpID0gMDsgaSA8IDI7 IGkrKykKLS0JCXsKLS0JCSAgaWYgKHdyaXRlX3Bhc3MpCi0tCQkgICAgewotLQkJICAgICAgc3Ry dWN0IHR5cGUgKnRhcmdldF90eXBlOwotLQotLQkJICAgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190 eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0tCQkgICAgICBwcGM2NF9zeXN2X2Fi aV9wdXNoX2Zsb2F0IChnZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwKLS0JCQkJCQkgdGFyZ2V0X3R5 cGUsIHZhbCArIGkgKgotLQkJCQkJCSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpLAotLQkJCQkJ CSBmcmVnLCBncmVnLCBncGFyYW0pOwotLQkJICAgIH0KLS0JCSAgZnJlZysrOwotLQkJICBncmVn Kys7Ci0tCQkgIC8qIEFsd2F5cyBjb25zdW1lIHBhcmFtZXRlciBzdGFjayBzcGFjZS4gICovCi0t CQkgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyA4LCB0ZGVwLT53b3Jkc2l6ZSk7Ci0tCQl9 Ci0tCSAgICB9Ci0tCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQ09N UExFWAotLQkJICAgJiYgVFlQRV9MRU5HVEggKHR5cGUpID09IDMyCi0tCQkgICAmJiAoZ2RiYXJj aF9sb25nX2RvdWJsZV9mb3JtYXQgKGdkYmFyY2gpCi0tCQkgICAgICAgPT0gZmxvYXRmb3JtYXRz X2libV9sb25nX2RvdWJsZSkpCi0tCSAgICB7Ci0tCSAgICAgIGludCBpOwotLQotLQkgICAgICBm b3IgKGkgPSAwOyBpIDwgMjsgaSsrKQotLQkJewotLQkJICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5 cGU7Ci0tCi0tCQkgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSkpOwotLQkJICBpZiAod3JpdGVfcGFzcykKLS0JCSAgICBwcGM2NF9zeXN2X2FiaV9w dXNoX2Zsb2F0IChnZGJhcmNoLCByZWdjYWNoZSwgdGRlcCwKLS0JCQkJCSAgICAgICB0YXJnZXRf dHlwZSwgdmFsICsgaSAqCi0tCQkJCQkgICAgICAgVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKSwK LS0JCQkJCSAgICAgICBmcmVnLCBncmVnLCBncGFyYW0pOwotLQkJICBmcmVnICs9IDI7Ci0tCQkg IGdyZWcgKz0gMjsKLS0JCSAgZ3BhcmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RI ICh0YXJnZXRfdHlwZSksCi0tCQkJCSAgICAgdGRlcC0+d29yZHNpemUpOwotLQkJfQotLQkgICAg fQotLQkgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUCi0t CQkgICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPD0gOCkKLS0JICAgIHsKLS0JICAgICAgLyogMzIt Yml0IGFuZCA2NC1iaXQgZGVjaW1hbCBmbG9hdHMgZ28gaW4gZjEgLi4gZjEzLiAgVGhleSBjYW4K LS0JICAgICAgICAgZW5kIHVwIGluIG1lbW9yeS4gICovCi0tCSAgICAgIGlmICh3cml0ZV9wYXNz KQotLQkJewotLQkJICBnZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOwotLQkJICBj b25zdCBnZGJfYnl0ZSAqcDsKLS0KLS0JCSAgLyogMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZSBy aWdodCBhbGlnbmVkIGluIHRoZQotLQkJICAgICBkb3VibGV3b3JkLiAgKi8KLS0JCSAgaWYgKFRZ UEVfTEVOR1RIICh0eXBlKSA9PSA0KQotLQkJICAgIHsKLS0JCSAgICAgIG1lbWNweSAocmVndmFs ICsgNCwgdmFsLCA0KTsKLS0JCSAgICAgIHAgPSByZWd2YWw7Ci0tCQkgICAgfQotLQkJICBlbHNl Ci0tCQkgICAgcCA9IHZhbDsKLS0KLS0JCSAgLyogV3JpdGUgdmFsdWUgaW4gdGhlIHN0YWNrJ3Mg cGFyYW1ldGVyIHNhdmUgYXJlYS4gICovCi0tCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCBwLCA4 KTsKLS0KLS0JCSAgaWYgKGZyZWcgPD0gMTMpCi0tCQkgICAgcmVnY2FjaGVfY29va2VkX3dyaXRl IChyZWdjYWNoZSwKLS0JCQkJCSAgIHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZywgcCk7Ci0t CQl9Ci0tCi0tCSAgICAgIGZyZWcrKzsKLS0JICAgICAgZ3JlZysrOwotLQkgICAgICAvKiBBbHdh eXMgY29uc3VtZSBwYXJhbWV0ZXIgc3RhY2sgc3BhY2UuICAqLwotLQkgICAgICBncGFyYW0gPSBh bGlnbl91cCAoZ3BhcmFtICsgOCwgdGRlcC0+d29yZHNpemUpOwotLQkgICAgfQotLQkgIGVsc2Ug aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUICYmCi0tCQkgICBUWVBF X0xFTkdUSCAodHlwZSkgPT0gMTYpCi0tCSAgICB7Ci0tCSAgICAgIC8qIDEyOC1iaXQgZGVjaW1h bCBmbG9hdHMgZ28gaW4gZjIgLi4gZjEyLCBhbHdheXMgaW4gZXZlbi9vZGQKLS0JICAgICAgICAg cGFpcnMuICBUaGV5IGNhbiBlbmQgdXAgaW4gbWVtb3J5LCB1c2luZyB0d28gZG91Ymxld29yZHMu ICAqLwotLQkgICAgICBpZiAod3JpdGVfcGFzcykKLS0JCXsKLS0JCSAgaWYgKGZyZWcgPD0gMTIp Ci0tCQkgICAgewotLQkJICAgICAgLyogTWFrZSBzdXJlIGZyZWcgaXMgZXZlbi4gICovCi0tCQkg ICAgICBmcmVnICs9IGZyZWcgJiAxOwotLQkJICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChy ZWdjYWNoZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 ZGVwLT5wcGNfZnAwX3JlZ251bSArIGZyZWcsIHZhbCk7Ci0tCQkgICAgICByZWdjYWNoZV9jb29r ZWRfd3JpdGUgKHJlZ2NhY2hlLAotLQkJCSAgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBmcmVnICsg MSwgdmFsICsgOCk7Ci0tCQkgICAgfQotLQotLQkJICB3cml0ZV9tZW1vcnkgKGdwYXJhbSwgdmFs LCBUWVBFX0xFTkdUSCAodHlwZSkpOwotLQkJfQotKwkgICAgICAvKiBDb21wbGV4IHR5cGVzIGFy ZSBwYXNzZWQgYXMgaWYgdHdvIGluZGVwZW5kZW50IHNjYWxhcnMuICAqLwotKwkgICAgICBzdHJ1 Y3QgdHlwZSAqZWx0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkp OwotIAotLQkgICAgICBmcmVnICs9IDI7Ci0tCSAgICAgIGdyZWcgKz0gMjsKLS0JICAgICAgZ3Bh cmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNp emUpOwotKwkgICAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5cGUs IHZhbCwgJmFyZ3Bvcyk7Ci0rCSAgICAgIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKGdkYmFy Y2gsIGVsdHlwZSwKLSsJCQkJIAkgdmFsICsgVFlQRV9MRU5HVEggKGVsdHlwZSksICZhcmdwb3Mp OwotIAkgICAgfQotLQkgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8IDE2Ci0tCQkgICAm JiBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotLQkJICAgJiYgVFlQRV9WRUNU T1IgKHR5cGUpCi0rCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJS QVkgJiYgVFlQRV9WRUNUT1IgKHR5cGUpCi0gCQkgICAmJiBvcGVuY2xfYWJpKQotIAkgICAgewot IAkgICAgICAvKiBPcGVuQ0wgdmVjdG9ycyBzaG9ydGVyIHRoYW4gMTYgYnl0ZXMgYXJlIHBhc3Nl ZCBhcyBpZgotLQkJIGEgc2VyaWVzIG9mIGluZGVwZW5kZW50IHNjYWxhcnMuICAqLwotLQkgICAg ICBzdHJ1Y3QgdHlwZSAqZWx0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpOwotLQkgICAgICBpbnQgaSwgbmVsdCA9IFRZUEVfTEVOR1RIICh0eXBlKSAvIFRZUEVf TEVOR1RIIChlbHR5cGUpOwotKwkJIGEgc2VyaWVzIG9mIGluZGVwZW5kZW50IHNjYWxhcnM7IE9w ZW5DTCB2ZWN0b3JzIDE2IGJ5dGVzCi0rCQkgb3IgbG9uZ2VyIGFyZSBwYXNzZWQgYXMgaWYgYSBz ZXJpZXMgb2YgQWx0aVZlYyB2ZWN0b3JzLiAgKi8KLSsJICAgICAgc3RydWN0IHR5cGUgKmVsdHlw ZTsKLSsJICAgICAgaW50IGksIG5lbHQ7Ci0gCi0rCSAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlw ZSkgPCAxNikKLSsJCWVsdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKTsKLSsJICAgICAgZWxzZQotKwkJZWx0eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwg dGRlcC0+cHBjX3ZyMF9yZWdudW0pOwotKwotKwkgICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHR5 cGUpIC8gVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0gCSAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0 OyBpKyspCi0gCQl7Ci0gCQkgIGNvbnN0IGdkYl9ieXRlICplbHZhbCA9IHZhbCArIGkgKiBUWVBF X0xFTkdUSCAoZWx0eXBlKTsKLSAKLS0JCSAgaWYgKFRZUEVfQ09ERSAoZWx0eXBlKSA9PSBUWVBF X0NPREVfRkxUKQotLQkJICAgIHsKLS0JCSAgICAgIGlmICh3cml0ZV9wYXNzKQotLQkJCXsKLS0J CQkgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tCQkJICBjb25zdCBnZGJf Ynl0ZSAqcDsKLS0KLS0JCQkgIGlmIChUWVBFX0xFTkdUSCAoZWx0eXBlKSA9PSA0KQotLQkJCSAg ICB7Ci0tCQkJICAgICAgbWVtY3B5IChyZWd2YWwsIGVsdmFsLCA0KTsKLS0JCQkgICAgICBtZW1j cHkgKHJlZ3ZhbCArIDQsIGVsdmFsLCA0KTsKLS0JCQkgICAgICBwID0gcmVndmFsOwotLQkJCSAg ICB9Ci0tCQkJICBlbHNlCi0tCQkJICAgIHAgPSBlbHZhbDsKLS0KLS0JCQkgIHdyaXRlX21lbW9y eSAoZ3BhcmFtLCBwLCA4KTsKLS0KLS0JCQkgIGlmIChmcmVnIDw9IDEzKQotLQkJCSAgICB7Ci0t CQkJICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgZnJlZzsKLS0JCQkg ICAgICBzdHJ1Y3QgdHlwZSAqcmVndHlwZQotLQkJCQk9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gs IHJlZ251bSk7Ci0tCi0tCQkJICAgICAgY29udmVydF90eXBlZF9mbG9hdGluZyAoZWx2YWwsIGVs dHlwZSwKLS0JCQkJCQkgICAgICByZWd2YWwsIHJlZ3R5cGUpOwotLQkJCSAgICAgIHJlZ2NhY2hl X2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKLS0JCQkgICAgfQotLQot LQkJCSAgaWYgKGdyZWcgPD0gMTApCi0tCQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVn Y2FjaGUsCi0tCQkJCQkJICAgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVnLAotLQkJCQkJCSAg IHJlZ3ZhbCk7Ci0tCQkJfQotLQotLQkJICAgICAgZnJlZysrOwotLQkJICAgICAgZ3JlZysrOwot LQkJICAgICAgZ3BhcmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIDgsIHRkZXAtPndvcmRzaXplKTsK LS0JCSAgICB9Ci0tCQkgIGVsc2UKLS0JCSAgICB7Ci0tCQkgICAgICBpZiAod3JpdGVfcGFzcykK LS0JCQl7Ci0tCQkJICBVTE9OR0VTVCB3b3JkID0gdW5wYWNrX2xvbmcgKGVsdHlwZSwgZWx2YWwp OwotLQkJCSAgaWYgKGdyZWcgPD0gMTApCi0tCQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91 bnNpZ25lZAotLQkJCSAgICAgIChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyBncmVn LCB3b3JkKTsKLS0KLS0JCQkgIHdyaXRlX21lbW9yeV91bnNpZ25lZF9pbnRlZ2VyCi0tCQkJICAg IChncGFyYW0sIHRkZXAtPndvcmRzaXplLCBieXRlX29yZGVyLCB3b3JkKTsKLS0JCQl9Ci0tCi0t CQkgICAgICBncmVnKys7Ci0tCQkgICAgICBncGFyYW0gPSBhbGlnbl91cCAoZ3BhcmFtICsgVFlQ RV9MRU5HVEggKGVsdHlwZSksCi0tCQkJCQkgdGRlcC0+d29yZHNpemUpOwotLQkJICAgIH0KLS0J CX0KLS0JICAgIH0KLS0JICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPj0gMTYKLS0JCSAg ICYmIFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0tCQkgICAmJiBUWVBFX1ZF Q1RPUiAodHlwZSkKLS0JCSAgICYmIG9wZW5jbF9hYmkpCi0tCSAgICB7Ci0tCSAgICAgIC8qIE9w ZW5DTCB2ZWN0b3JzIDE2IGJ5dGVzIG9yIGxvbmdlciBhcmUgcGFzc2VkIGFzIGlmCi0tCQkgYSBz ZXJpZXMgb2YgQWx0aVZlYyB2ZWN0b3JzLiAgKi8KLS0JICAgICAgaW50IGk7Ci0tCi0tCSAgICAg IGZvciAoaSA9IDA7IGkgPCBUWVBFX0xFTkdUSCAodHlwZSkgLyAxNjsgaSsrKQotLQkJewotLQkJ ICBjb25zdCBnZGJfYnl0ZSAqZWx2YWwgPSB2YWwgKyBpICogMTY7Ci0tCi0tCQkgIGdwYXJhbSA9 IGFsaWduX3VwIChncGFyYW0sIDE2KTsKLS0JCSAgZ3JlZyArPSBncmVnICYgMTsKLS0KLS0JCSAg aWYgKHdyaXRlX3Bhc3MpCi0tCQkgICAgewotLQkJICAgICAgaWYgKHZyZWcgPD0gMTMpCi0tCQkJ cmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwKLS0JCQkJCSAgICAgICB0ZGVwLT5wcGNf dnIwX3JlZ251bSArIHZyZWcsCi0tCQkJCQkgICAgICAgZWx2YWwpOwotLQotLQkJICAgICAgd3Jp dGVfbWVtb3J5IChncGFyYW0sIGVsdmFsLCAxNik7Ci0tCQkgICAgfQotLQotLQkJICBncmVnICs9 IDI7Ci0tCQkgIHZyZWcrKzsKLS0JCSAgZ3BhcmFtICs9IDE2OwotLQkJfQotLQkgICAgfQotLQkg IGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxNiAmJiBUWVBFX1ZFQ1RPUiAodHlwZSkK LS0JCSAgICYmIFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0tCQkgICAmJiB0 ZGVwLT52ZWN0b3JfYWJpID09IFBPV0VSUENfVkVDX0FMVElWRUMpCi0tCSAgICB7Ci0tCSAgICAg IC8qIEluIHRoZSBBbHRpdmVjIEFCSSwgdmVjdG9ycyBnbyBpbiB0aGUgdmVjdG9yIHJlZ2lzdGVy cwotLQkJIHYyIC4uIHYxMywgYXMgd2VsbCBhcyB0aGUgcGFyYW1ldGVyIGFyZWEgLS0gYWx3YXlz IGF0Ci0tCQkgMTYtYnl0ZSBhbGlnbmVkIGFkZHJlc3Nlcy4gICovCi0tCi0tCSAgICAgIGdwYXJh bSA9IGFsaWduX3VwIChncGFyYW0sIDE2KTsKLS0JICAgICAgZ3JlZyArPSBncmVnICYgMTsKLS0K LS0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCi0tCQl7Ci0tCQkgIGlmICh2cmVnIDw9IDEzKQotLQkJ ICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCi0tCQkJCQkgICB0ZGVwLT5wcGNf dnIwX3JlZ251bSArIHZyZWcsIHZhbCk7Ci0tCi0tCQkgIHdyaXRlX21lbW9yeSAoZ3BhcmFtLCB2 YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0tCQl9Ci0tCi0tCSAgICAgIGdyZWcgKz0gMjsKLS0J ICAgICAgdnJlZysrOwotLQkgICAgICBncGFyYW0gKz0gMTY7Ci0tCSAgICB9Ci0tCSAgZWxzZSBp ZiAoVFlQRV9MRU5HVEggKHR5cGUpID49IDE2ICYmIFRZUEVfVkVDVE9SICh0eXBlKQotLQkJICAg JiYgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0tCSAgICB7Ci0tCSAgICAg IC8qIE5vbi1BbHRpdmVjIHZlY3RvcnMgYXJlIHBhc3NlZCBieSByZWZlcmVuY2UuICAqLwotLQot LQkgICAgICAvKiBDb3B5IHZhbHVlIG9udG8gdGhlIHN0YWNrIC4uLiAgKi8KLS0JICAgICAgcmVm cGFyYW0gPSBhbGlnbl91cCAocmVmcGFyYW0sIDE2KTsKLS0JICAgICAgaWYgKHdyaXRlX3Bhc3Mp Ci0tCQl3cml0ZV9tZW1vcnkgKHJlZnBhcmFtLCB2YWwsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0t Ci0tCSAgICAgIC8qIC4uLiBhbmQgcGFzcyBhIHBvaW50ZXIgdG8gdGhlIGNvcHkgYXMgcGFyYW1l dGVyLiAgKi8KLS0JICAgICAgaWYgKHdyaXRlX3Bhc3MpCi0tCQl7Ci0tCQkgIGlmIChncmVnIDw9 IDEwKQotLQkJICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsCi0t CQkJCQkJICAgIHRkZXAtPnBwY19ncDBfcmVnbnVtICsKLS0JCQkJCQkgICAgZ3JlZywgcmVmcGFy YW0pOwotLQkJICB3cml0ZV9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciAoZ3BhcmFtLCB0ZGVwLT53 b3Jkc2l6ZSwKLS0JCQkJCQkgYnl0ZV9vcmRlciwgcmVmcGFyYW0pOwotLQkJfQotLQkgICAgICBn cmVnKys7Ci0tCSAgICAgIGdwYXJhbSA9IGFsaWduX3VwIChncGFyYW0gKyB0ZGVwLT53b3Jkc2l6 ZSwgdGRlcC0+d29yZHNpemUpOwotLQkgICAgICByZWZwYXJhbSA9IGFsaWduX3VwIChyZWZwYXJh bSArIFRZUEVfTEVOR1RIICh0eXBlKSwgdGRlcC0+d29yZHNpemUpOwotLQkgICAgfQotLQkgIGVs c2UgaWYgKChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQKLS0JCSAgICB8fCBUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9FTlVNCi0tCQkgICAgfHwgVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfQk9PTAotLQkJICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9D T0RFX0NIQVIKLS0JCSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIKLS0J CSAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCi0tCQkgICAmJiBUWVBF X0xFTkdUSCAodHlwZSkgPD0gOCkKLS0JICAgIHsKLS0JICAgICAgLyogU2NhbGFycyBhbmQgUG9p bnRlcnMgZ2V0IHNpZ25bdW5dZXh0ZW5kZWQgYW5kIGdvIGluCi0tCSAgICAgICAgIGdwcjMgLi4g Z3ByMTAuICBUaGV5IGNhbiBhbHNvIGVuZCB1cCBpbiBtZW1vcnkuICAqLwotLQkgICAgICBpZiAo d3JpdGVfcGFzcykKLS0JCXsKLS0JCSAgLyogU2lnbiBleHRlbmQgdGhlIHZhbHVlLCB0aGVuIHN0 b3JlIGl0IHVuc2lnbmVkLiAgKi8KLS0JCSAgVUxPTkdFU1Qgd29yZCA9IHVucGFja19sb25nICh0 eXBlLCB2YWwpOwotLQkJICAvKiBDb252ZXJ0IGFueSBmdW5jdGlvbiBjb2RlIGFkZHJlc3NlcyBp bnRvCi0tCQkgICAgIGRlc2NyaXB0b3JzLiAgKi8KLS0JCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1BUUgotLQkJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfUkVGKQotLQkJICAgIHsKLS0JCSAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKLS0J CSAgICAgIHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpOwotLQotLQkJICAgICAgaWYgKFRZUEVfQ09ERSAodGFyZ2V0X3R5cGUpID09IFRZUEVfQ09E RV9GVU5DCi0tCQkJICB8fCBUWVBFX0NPREUgKHRhcmdldF90eXBlKSA9PSBUWVBFX0NPREVfTUVU SE9EKQotLQkJCXsKLS0JCQkgIENPUkVfQUREUiBkZXNjID0gd29yZDsKLS0JCQkgIGNvbnZlcnRf Y29kZV9hZGRyX3RvX2Rlc2NfYWRkciAod29yZCwgJmRlc2MpOwotLQkJCSAgd29yZCA9IGRlc2M7 Ci0tCQkJfQotLQkJICAgIH0KLS0JCSAgaWYgKGdyZWcgPD0gMTApCi0tCQkgICAgcmVnY2FjaGVf Y29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwKLS0JCQkJCQkgICAgdGRlcC0+cHBjX2dw MF9yZWdudW0gKwotLQkJCQkJCSAgICBncmVnLCB3b3JkKTsKLS0JCSAgd3JpdGVfbWVtb3J5X3Vu c2lnbmVkX2ludGVnZXIgKGdwYXJhbSwgdGRlcC0+d29yZHNpemUsCi0tCQkJCQkJIGJ5dGVfb3Jk ZXIsIHdvcmQpOwotKwkJICBwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChnZGJhcmNoLCBlbHR5 cGUsIGVsdmFsLCAmYXJncG9zKTsKLSAJCX0KLS0JICAgICAgZ3JlZysrOwotLQkgICAgICBncGFy YW0gPSBhbGlnbl91cCAoZ3BhcmFtICsgVFlQRV9MRU5HVEggKHR5cGUpLCB0ZGVwLT53b3Jkc2l6 ZSk7Ci0gCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgewotLQkgICAgICBpbnQgYnl0ZTsKLS0JICAg ICAgZm9yIChieXRlID0gMDsgYnl0ZSA8IFRZUEVfTEVOR1RIICh0eXBlKTsKLS0JCSAgIGJ5dGUg Kz0gdGRlcC0+d29yZHNpemUpCi0tCQl7Ci0tCQkgIGlmICh3cml0ZV9wYXNzICYmIGdyZWcgPD0g MTApCi0tCQkgICAgewotLQkJICAgICAgZ2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpF XTsKLS0JCSAgICAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSkgLSBieXRlOwotLQkJICAg ICAgaWYgKGxlbiA+IHRkZXAtPndvcmRzaXplKQotLQkJCWxlbiA9IHRkZXAtPndvcmRzaXplOwot LQkJICAgICAgbWVtc2V0IChyZWd2YWwsIDAsIHNpemVvZiByZWd2YWwpOwotLQkJICAgICAgLyog VGhlIEFCSSAodmVyc2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHZhbHVlcwotLQkJCSBzbWFsbGVy IHRoYW4gb25lIGRvdWJsZXdvcmQgYXJlIHJpZ2h0LWFsaWduZWQKLS0JCQkgYW5kIHRob3NlIGxh cmdlciBhcmUgbGVmdC1hbGlnbmVkLiAgR0NDCi0tCQkJIHZlcnNpb25zIGJlZm9yZSAzLjQgaW1w bGVtZW50ZWQgdGhpcwotLQkJCSBpbmNvcnJlY3RseTsgc2VlCi0tCQkJIDxodHRwOi8vZ2NjLmdu dS5vcmcvZ2NjLTMuNC9wb3dlcnBjLWFiaS5odG1sPi4gICovCi0tCQkgICAgICBpZiAoYnl0ZSA9 PSAwKQotLQkJCW1lbWNweSAocmVndmFsICsgdGRlcC0+d29yZHNpemUgLSBsZW4sCi0tCQkJCXZh bCArIGJ5dGUsIGxlbik7Ci0tCQkgICAgICBlbHNlCi0tCQkJbWVtY3B5IChyZWd2YWwsIHZhbCAr IGJ5dGUsIGxlbik7Ci0tCQkgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBn cmVnLCByZWd2YWwpOwotLQkJICAgIH0KLS0JCSAgZ3JlZysrOwotLQkJfQotLQkgICAgICBpZiAo d3JpdGVfcGFzcykKLS0JCXsKLS0JCSAgLyogV0FSTklORzogY2FnbmV5LzIwMDMtMDktMjE6IFN0 cmljdGx5IHNwZWFraW5nLCB0aGlzCi0tCQkgICAgIGlzbid0IG5lY2Vzc2FyeSwgdW5mb3J0dW5h dGVseSwgR0NDIGFwcGVhcnMgdG8gZ2V0Ci0tCQkgICAgICJzdHJ1Y3QgY29udmVudGlvbiIgcGFy YW1ldGVyIHBhc3Npbmcgd3JvbmcgcHV0dGluZwotLQkJICAgICBvZGQgc2l6ZWQgc3RydWN0dXJl cyBpbiBtZW1vcnkgaW5zdGVhZCBvZiBpbiBhCi0tCQkgICAgIHJlZ2lzdGVyLiAgV29yayBhcm91 bmQgdGhpcyBieSBhbHdheXMgd3JpdGluZyB0aGUKLS0JCSAgICAgdmFsdWUgdG8gbWVtb3J5LiAg Rm9ydHVuYXRlbHksIGRvaW5nIHRoaXMKLS0JCSAgICAgc2ltcGxpZmllcyB0aGUgY29kZS4gICov Ci0tCQkgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0tCQkgIGlmIChsZW4gPCB0ZGVw LT53b3Jkc2l6ZSkKLS0JCSAgICB3cml0ZV9tZW1vcnkgKGdwYXJhbSArIHRkZXAtPndvcmRzaXpl IC0gbGVuLCB2YWwsIGxlbik7Ci0tCQkgIGVsc2UKLS0JCSAgICB3cml0ZV9tZW1vcnkgKGdwYXJh bSwgdmFsLCBsZW4pOwotLQkJfQotLQkgICAgICBpZiAoZnJlZyA8PSAxMwotLQkJICAmJiBUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJVQ1QKLS0JCSAgJiYgVFlQRV9ORklFTERTICh0 eXBlKSA9PSAxCi0tCQkgICYmIFRZUEVfTEVOR1RIICh0eXBlKSA8PSAxNikKLS0JCXsKLS0JCSAg LyogVGhlIEFCSSAodmVyc2lvbiAxLjkpIHNwZWNpZmllcyB0aGF0IHN0cnVjdHMKLS0JCSAgICAg Y29udGFpbmluZyBhIHNpbmdsZSBmbG9hdGluZy1wb2ludCB2YWx1ZSwgYXQgYW55Ci0tCQkgICAg IGxldmVsIG9mIG5lc3Rpbmcgb2Ygc2luZ2xlLW1lbWJlciBzdHJ1Y3RzLCBhcmUKLS0JCSAgICAg cGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0tCQkgIHdoaWxlIChUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJVQ1QKLS0JCQkgJiYgVFlQRV9ORklFTERTICh0 eXBlKSA9PSAxKQotLQkJICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUg KHR5cGUsIDApKTsKLS0JCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZMVCkK LS0JCSAgICB7Ci0tCQkgICAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDgpCi0tCQkJewot LQkJCSAgaWYgKHdyaXRlX3Bhc3MpCi0tCQkJICAgIHsKLS0JCQkgICAgICBnZGJfYnl0ZSByZWd2 YWxbTUFYX1JFR0lTVEVSX1NJWkVdOwotLQkJCSAgICAgIHN0cnVjdCB0eXBlICpyZWd0eXBlCi0t CQkJCT0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwKLS0JCQkJCQkgdGRlcC0+cHBjX2ZwMF9yZWdu dW0pOwotLQkJCSAgICAgIGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcgKHZhbCwgdHlwZSwgcmVndmFs LAotLQkJCQkJCSAgICAgIHJlZ3R5cGUpOwotLQkJCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZSAocmVnY2FjaGUsCi0tCQkJCQkJICAgICAodGRlcC0+cHBjX2ZwMF9yZWdudW0KLS0JCQkJCQkg ICAgICArIGZyZWcpLAotLQkJCQkJCSAgICAgcmVndmFsKTsKLS0JCQkgICAgfQotLQkJCSAgZnJl ZysrOwotLQkJCX0KLS0JCSAgICAgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA9PSAxNgot LQkJCSAgICAgICAmJiAoZ2RiYXJjaF9sb25nX2RvdWJsZV9mb3JtYXQgKGdkYmFyY2gpCi0tCQkJ CSAgID09IGZsb2F0Zm9ybWF0c19pYm1fbG9uZ19kb3VibGUpKQotLQkJCXsKLS0JCQkgIGlmICh3 cml0ZV9wYXNzKQotLQkJCSAgICB7Ci0tCQkJICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChy ZWdjYWNoZSwKLS0JCQkJCQkgICAgICh0ZGVwLT5wcGNfZnAwX3JlZ251bQotLQkJCQkJCSAgICAg ICsgZnJlZyksCi0tCQkJCQkJICAgICB2YWwpOwotLQkJCSAgICAgIGlmIChmcmVnIDw9IDEyKQot LQkJCQlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLAotLQkJCQkJCSAgICAgICAodGRl cC0+cHBjX2ZwMF9yZWdudW0KLS0JCQkJCQkJKyBmcmVnICsgMSksCi0tCQkJCQkJICAgICAgIHZh bCArIDgpOwotLQkJCSAgICB9Ci0tCQkJICBmcmVnICs9IDI7Ci0tCQkJfQotLQkJICAgIH0KLS0J CX0KLS0JICAgICAgLyogQWx3YXlzIGNvbnN1bWUgcGFyYW1ldGVyIHN0YWNrIHNwYWNlLiAgKi8K LS0JICAgICAgZ3BhcmFtID0gYWxpZ25fdXAgKGdwYXJhbSArIFRZUEVfTEVOR1RIICh0eXBlKSwg dGRlcC0+d29yZHNpemUpOwotKwkgICAgICAvKiBBbGwgb3RoZXIgdHlwZXMgYXJlIHBhc3NlZCBh cyBzaW5nbGUgYXJndW1lbnRzLiAgKi8KLSsJICAgICAgcHBjNjRfc3lzdl9hYmlfcHVzaF9wYXJh bSAoZ2RiYXJjaCwgdHlwZSwgdmFsLCAmYXJncG9zKTsKLSAJICAgIH0KLSAJfQotIAotICAgICAg IGlmICghd3JpdGVfcGFzcykKLSAJewotIAkgIC8qIFNhdmUgdGhlIHRydWUgcmVnaW9uIHNpemVz IHJlYWR5IGZvciB0aGUgc2Vjb25kIHBhc3MuICAqLwotLQkgIHJlZnBhcmFtX3NpemUgPSByZWZw YXJhbTsKLSsJICByZWZwYXJhbV9zaXplID0gYXJncG9zLnJlZnBhcmFtOwotIAkgIC8qIE1ha2Ug Y2VydGFpbiB0aGF0IHRoZSBnZW5lcmFsIHBhcmFtZXRlciBzYXZlIGFyZWEgaXMgYXQKLSAJICAg ICBsZWFzdCB0aGUgbWluaW11bSA4IHJlZ2lzdGVycyAob3IgZG91Ymxld29yZHMpIGluIHNpemUu ICAqLwotLQkgIGlmIChncmVnIDwgOCkKLSsJICBpZiAoYXJncG9zLmdyZWcgPCA4KQotIAkgICAg Z3BhcmFtX3NpemUgPSA4ICogdGRlcC0+d29yZHNpemU7Ci0gCSAgZWxzZQotLQkgICAgZ3BhcmFt X3NpemUgPSBncGFyYW07Ci0rCSAgICBncGFyYW1fc2l6ZSA9IGFyZ3Bvcy5ncGFyYW07Ci0gCX0K LSAgICAgfQotIAotQEAgLTE3NTUsMjcxICsxNTY5LDI1MiBAQCBwcGM2NF9zeXN2X2FiaV9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgcmV0dXJuIHNwOwotIH0K LSAKLSsvKiBTdWJyb3V0aW5lIG9mIHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZSB0aGF0IGhh bmRsZXMgImJhc2UiIHR5cGVzOgotKyAgIGludGVnZXIsIGZsb2F0aW5nLXBvaW50LCBhbmQgQWx0 aVZlYyB2ZWN0b3IgdHlwZXMuCi0gCi0tLyogVGhlIDY0IGJpdCBBQkkgcmV0dXJuIHZhbHVlIGNv bnZlbnRpb24uCi0tCi0tICAgUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSByZXR1cm4tdmFsdWUgaXMg c3RvcmVkIGluIGEgcmVnaXN0ZXIsIHJldHVybgotLSAgIDAgaWYgdGhlIHJldHVybi12YWx1ZSBp cyBpbnN0ZWFkIHN0b3JlZCBvbiB0aGUgc3RhY2sgKGEuay5hLiwKLS0gICBzdHJ1Y3QgcmV0dXJu IGNvbnZlbnRpb24pLgotKyAgIFRoaXMgcm91dGluZSBhbHNvIGhhbmRsZXMgY29tcG9uZW50cyBv ZiBhZ2dyZWdhdGUgcmV0dXJuIHR5cGVzOwotKyAgIElOREVYIGRlc2NyaWJlcyB3aGljaCBwYXJ0 IG9mIHRoZSBhZ2dyZWdhdGUgaXMgdG8gYmUgaGFuZGxlZC4KLSAKLS0gICBGb3IgYSByZXR1cm4t dmFsdWUgc3RvcmVkIGluIGEgcmVnaXN0ZXI6IHdoZW4gV1JJVEVCVUYgaXMgbm9uLU5VTEwsCi0t ICAgY29weSB0aGUgYnVmZmVyIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12 YWx1ZSBsb2NhdGlvbgotLSAgIGxvY2F0aW9uOyB3aGVuIFJFQURCVUYgaXMgbm9uLU5VTEwsIGZp bGwgdGhlIGJ1ZmZlciBmcm9tIHRoZQotLSAgIGNvcnJlc3BvbmRpbmcgcmVnaXN0ZXIgcmV0dXJu LXZhbHVlIGxvY2F0aW9uLiAgKi8KLS1lbnVtIHJldHVybl92YWx1ZV9jb252ZW50aW9uCi0tcHBj NjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IHZhbHVlICpmdW5jdGlvbiwKLS0JCQkgICAgIHN0cnVjdCB0eXBlICp2YWx0eXBlLCBzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLAotLQkJCSAgICAgZ2RiX2J5dGUgKnJlYWRidWYsIGNvbnN0IGdk Yl9ieXRlICp3cml0ZWJ1ZikKLSsgICBSZXR1cm5zIHRydWUgaWYgVkFMVFlQRSBpcyBzb21lIHN1 Y2ggYmFzZSB0eXBlIHRoYXQgY291bGQgYmUgaGFuZGxlZCwKLSsgICBmYWxzZSBvdGhlcndpc2Uu ICAqLwotK3N0YXRpYyBpbnQKLStwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICp2YWx0eXBlLAotKwkJCQkgIHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsIGdkYl9ieXRlICpyZWFkYnVmLAotKwkJCQkgIGNvbnN0IGdk Yl9ieXRlICp3cml0ZWJ1ZiwgaW50IGluZGV4KQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoX3RkZXAg KnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotLSAgZW51bSBiZmRfZW5kaWFuIGJ5dGVf b3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwotLSAgc3RydWN0IHR5cGUgKmZ1 bmNfdHlwZSA9IGZ1bmN0aW9uID8gdmFsdWVfdHlwZSAoZnVuY3Rpb24pIDogTlVMTDsKLS0gIGlu dCBvcGVuY2xfYWJpID0gZnVuY190eXBlPyBwcGNfc3lzdl91c2Vfb3BlbmNsX2FiaSAoZnVuY190 eXBlKSA6IDA7Ci0gCi0tICAvKiBUaGlzIGZ1bmN0aW9uIGV4aXN0cyB0byBzdXBwb3J0IGEgY2Fs bGluZyBjb252ZW50aW9uIHRoYXQKLS0gICAgIHJlcXVpcmVzIGZsb2F0aW5nLXBvaW50IHJlZ2lz dGVycy4gIEl0IHNob3VsZG4ndCBiZSB1c2VkIG9uCi0tICAgICBwcm9jZXNzb3JzIHRoYXQgbGFj ayB0aGVtLiAgKi8KLS0gIGdkYl9hc3NlcnQgKHBwY19mbG9hdGluZ19wb2ludF91bml0X3AgKGdk YmFyY2gpKTsKLS0KLS0gIC8qIEZsb2F0cyBhbmQgZG91YmxlcyBpbiBGMS4gICovCi0tICBpZiAo VFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfRkxUICYmIFRZUEVfTEVOR1RIICh2YWx0 eXBlKSA8PSA4KQotLSAgICB7Ci0tICAgICAgZ2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9T SVpFXTsKLS0gICAgICBzdHJ1Y3QgdHlwZSAqcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFy Y2gsIHRkZXAtPnBwY19mcDBfcmVnbnVtKTsKLS0gICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkK LS0JewotLQkgIGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcgKHdyaXRlYnVmLCB2YWx0eXBlLCByZWd2 YWwsIHJlZ3R5cGUpOwotLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHRkZXAt PnBwY19mcDBfcmVnbnVtICsgMSwgcmVndmFsKTsKLS0JfQotLSAgICAgIGlmIChyZWFkYnVmICE9 IE5VTEwpCi0tCXsKLS0JICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBw Y19mcDBfcmVnbnVtICsgMSwgcmVndmFsKTsKLS0JICBjb252ZXJ0X3R5cGVkX2Zsb2F0aW5nIChy ZWd2YWwsIHJlZ3R5cGUsIHJlYWRidWYsIHZhbHR5cGUpOwotLQl9Ci0tICAgICAgcmV0dXJuIFJF VFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5USU9OOwotLSAgICB9Ci0tICBpZiAoVFlQRV9DT0RF ICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfREVDRkxPQVQpCi0tICAgIHJldHVybiBnZXRfZGVjaW1h bF9mbG9hdF9yZXR1cm5fdmFsdWUgKGdkYmFyY2gsIHZhbHR5cGUsIHJlZ2NhY2hlLCByZWFkYnVm LAotLQkJCQkJICAgd3JpdGVidWYpOwotLSAgLyogSW50ZWdlcnMgaW4gcjMuICAqLwotKyAgLyog SW50ZWdlcnMgbGl2ZSBpbiBHUFJzIHN0YXJ0aW5nIGF0IHIzLiAgKi8KLSAgIGlmICgoVFlQRV9D T0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfSU5UCi0gICAgICAgIHx8IFRZUEVfQ09ERSAodmFs dHlwZSkgPT0gVFlQRV9DT0RFX0VOVU0KLSAgICAgICAgfHwgVFlQRV9DT0RFICh2YWx0eXBlKSA9 PSBUWVBFX0NPREVfQ0hBUgotICAgICAgICB8fCBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVf Q09ERV9CT09MKQotICAgICAgICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA8PSA4KQotICAgICB7 Ci0rICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMyArIGluZGV4Owot KwotICAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxMKQotIAl7Ci0gCSAgLyogQmUgY2FyZWZ1bCB0 byBzaWduIGV4dGVuZCB0aGUgdmFsdWUuICAqLwotLQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91 bnNpZ25lZCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywKLSsJICByZWdjYWNo ZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLCByZWdudW0sCi0gCQkJCQkgIHVucGFj a19sb25nICh2YWx0eXBlLCB3cml0ZWJ1ZikpOwotIAl9Ci0gICAgICAgaWYgKHJlYWRidWYgIT0g TlVMTCkKLSAJewotLQkgIC8qIEV4dHJhY3QgdGhlIGludGVnZXIgZnJvbSByMy4gIFNpbmNlIHRo aXMgaXMgdHJ1bmNhdGluZyB0aGUKLSsJICAvKiBFeHRyYWN0IHRoZSBpbnRlZ2VyIGZyb20gR1BS LiAgU2luY2UgdGhpcyBpcyB0cnVuY2F0aW5nIHRoZQotIAkgICAgIHZhbHVlLCB0aGVyZSBpc24n dCBhIHNpZ24gZXh0ZW5zaW9uIHByb2JsZW0uICAqLwotIAkgIFVMT05HRVNUIHJlZ3ZhbDsKLS0J ICByZWdjYWNoZV9jb29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBf cmVnbnVtICsgMywKLS0JCQkJCSAmcmVndmFsKTsKLS0JICBzdG9yZV91bnNpZ25lZF9pbnRlZ2Vy IChyZWFkYnVmLCBUWVBFX0xFTkdUSCAodmFsdHlwZSksIGJ5dGVfb3JkZXIsCi0tCQkJCSAgcmVn dmFsKTsKLSsKLSsJICByZWdjYWNoZV9jb29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIHJl Z251bSwgJnJlZ3ZhbCk7Ci0rCSAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAocmVhZGJ1ZiwgVFlQ RV9MRU5HVEggKHZhbHR5cGUpLAotKwkJCQkgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCks IHJlZ3ZhbCk7Ci0gCX0KLS0gICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZF TlRJT047Ci0rICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLS0gIC8qIEFsbCBwb2ludGVycyBsaXZl IGluIHIzLiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIK LS0gICAgICB8fCBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCi0rCi0rICAv KiBGbG9hdHMgYW5kIGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGZsb2F0cyBhcmUg Y29udmVydGVkCi0rICAgICB0byBkb3VibGUgZmlyc3QuICAqLwotKyAgaWYgKFRZUEVfTEVOR1RI ICh2YWx0eXBlKSA8PSA4Ci0rICAgICAgJiYgVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NP REVfRkxUKQotICAgICB7Ci0tICAgICAgLyogQWxsIHBvaW50ZXJzIGxpdmUgaW4gcjMuICAqLwot KyAgICAgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyBpbmRleDsKLSsg ICAgICBzdHJ1Y3QgdHlwZSAqcmVndHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHJlZ251 bSk7Ci0rICAgICAgZ2RiX2J5dGUgcmVndmFsW01BWF9SRUdJU1RFUl9TSVpFXTsKLSsKLSAgICAg ICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLS0JcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNo ZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAzLCB3cml0ZWJ1Zik7Ci0rCXsKLSsJICBjb252ZXJ0 X3R5cGVkX2Zsb2F0aW5nICh3cml0ZWJ1ZiwgdmFsdHlwZSwgcmVndmFsLCByZWd0eXBlKTsKLSsJ ICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHJlZ3ZhbCk7Ci0rCX0K LSAgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotLQlyZWdjYWNoZV9jb29rZWRfcmVhZCAocmVn Y2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywgcmVhZGJ1Zik7Ci0tICAgICAgcmV0dXJu IFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05WRU5USU9OOwotKwl7Ci0rCSAgcmVnY2FjaGVfY29v a2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0sIHJlZ3ZhbCk7Ci0rCSAgY29udmVydF90eXBlZF9m bG9hdGluZyAocmVndmFsLCByZWd0eXBlLCByZWFkYnVmLCB2YWx0eXBlKTsKLSsJfQotKyAgICAg IHJldHVybiAxOwotICAgICB9Ci0tICAvKiBPcGVuQ0wgdmVjdG9ycyA8IDE2IGJ5dGVzIGFyZSBy ZXR1cm5lZCBhcyBkaXN0aW5jdAotLSAgICAgc2NhbGFycyBpbiBmMS4uZjIgb3IgcjMuLnIxMC4g ICovCi0tICBpZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLS0gICAg ICAmJiBUWVBFX1ZFQ1RPUiAodmFsdHlwZSkKLS0gICAgICAmJiBUWVBFX0xFTkdUSCAodmFsdHlw ZSkgPCAxNgotLSAgICAgICYmIG9wZW5jbF9hYmkpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgdHlw ZSAqZWx0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkpOwot LSAgICAgIGludCBpLCBuZWx0ID0gVFlQRV9MRU5HVEggKHZhbHR5cGUpIC8gVFlQRV9MRU5HVEgg KGVsdHlwZSk7Ci0gCi0tICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHQ7IGkrKykKLS0JewotLQkg IGludCBvZmZzZXQgPSBpICogVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0rICAvKiBGbG9hdHMgYW5k IGRvdWJsZXMgZ28gaW4gZjEgLi4gZjEzLiAgMzItYml0IGRlY2ltYWwgZmxvYXRzIGFyZQotKyAg ICAgcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCB3b3JkLiAgKi8KLSsgIGlmIChUWVBF X0xFTkdUSCAodmFsdHlwZSkgPD0gOAotKyAgICAgICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0g VFlQRV9DT0RFX0RFQ0ZMT0FUKQotKyAgICB7Ci0rICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBw Y19mcDBfcmVnbnVtICsgMSArIGluZGV4OwotKyAgICAgIGludCBvZmZzZXQgPSA4IC0gVFlQRV9M RU5HVEggKHZhbHR5cGUpOwotIAotLQkgIGlmIChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9D T0RFX0ZMVCkKLS0JICAgIHsKLS0JICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVn bnVtICsgMSArIGk7Ci0tCSAgICAgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07 Ci0tCSAgICAgIHN0cnVjdCB0eXBlICpyZWd0eXBlID0gcmVnaXN0ZXJfdHlwZSAoZ2RiYXJjaCwg cmVnbnVtKTsKLSsgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSsJcmVnY2FjaGVfY29va2Vk X3dyaXRlX3BhcnQgKHJlZ2NhY2hlLCByZWdudW0sCi0rCQkJCSAgICBvZmZzZXQsIFRZUEVfTEVO R1RIICh2YWx0eXBlKSwgd3JpdGVidWYpOwotKyAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0r CXJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3BhcnQgKHJlZ2NhY2hlLCByZWdudW0sCi0rCQkJCSAgIG9m ZnNldCwgVFlQRV9MRU5HVEggKHZhbHR5cGUpLCByZWFkYnVmKTsKLSsgICAgICByZXR1cm4gMTsK LSsgICAgfQotIAotLQkgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLS0JCXsKLS0JCSAgY29u dmVydF90eXBlZF9mbG9hdGluZyAod3JpdGVidWYgKyBvZmZzZXQsIGVsdHlwZSwKLS0JCQkJCSAg cmVndmFsLCByZWd0eXBlKTsKLS0JCSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwg cmVnbnVtLCByZWd2YWwpOwotLQkJfQotLQkgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotLQkJ ewotLQkJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsK LS0JCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAocmVndmFsLCByZWd0eXBlLAotLQkJCQkJICBy ZWFkYnVmICsgb2Zmc2V0LCBlbHR5cGUpOwotLQkJfQotLQkgICAgfQotLQkgIGVsc2UKLS0JICAg IHsKLS0JICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMyArIGk7Ci0t CSAgICAgIFVMT05HRVNUIHJlZ3ZhbDsKLSsgIC8qIElCTSBsb25nIGRvdWJsZSBzdG9yZWQgaW4g dHdvIGNvbnNlY3V0aXZlIEZQUnMuICAqLwotKyAgaWYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9 PSAxNgotKyAgICAgICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZMVAotKyAg ICAgICYmIChnZGJhcmNoX2xvbmdfZG91YmxlX2Zvcm1hdCAoZ2RiYXJjaCkKLSsJICA9PSBmbG9h dGZvcm1hdHNfaWJtX2xvbmdfZG91YmxlKSkKLSsgICAgewotKyAgICAgIGludCByZWdudW0gPSB0 ZGVwLT5wcGNfZnAwX3JlZ251bSArIDEgKyAyICogaW5kZXg7Ci0gCi0tCSAgICAgIGlmICh3cml0 ZWJ1ZiAhPSBOVUxMKQotLQkJewotLQkJICByZWd2YWwgPSB1bnBhY2tfbG9uZyAoZWx0eXBlLCB3 cml0ZWJ1ZiArIG9mZnNldCk7Ci0tCQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAo cmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKLS0JCX0KLS0JICAgICAgaWYgKHJlYWRidWYgIT0g TlVMTCkKLS0JCXsKLS0JCSAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hl LCByZWdudW0sICZyZWd2YWwpOwotLQkJICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChyZWFkYnVm ICsgb2Zmc2V0LAotLQkJCQkJICBUWVBFX0xFTkdUSCAoZWx0eXBlKSwgYnl0ZV9vcmRlciwKLS0J CQkJCSAgcmVndmFsKTsKLS0JCX0KLS0JICAgIH0KLSsgICAgICBpZiAod3JpdGVidWYgIT0gTlVM TCkKLSsJewotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3Jp dGVidWYpOwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSArIDEs IHdyaXRlYnVmICsgOCk7Ci0gCX0KLS0KLS0gICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lT VEVSX0NPTlZFTlRJT047Ci0rICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLSsJewotKwkgIHJl Z2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsKLSsJICByZWdj YWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSArIDEsIHJlYWRidWYgKyA4KTsKLSsJ fQotKyAgICAgIHJldHVybiAxOwotICAgICB9Ci0tICAvKiBPcGVuQ0wgdmVjdG9ycyA+PSAxNiBi eXRlcyBhcmUgcmV0dXJuZWQgaW4gdjIuLnY5LiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKHZhbHR5 cGUpID09IFRZUEVfQ09ERV9BUlJBWQotLSAgICAgICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQot LSAgICAgICYmIFRZUEVfTEVOR1RIICh2YWx0eXBlKSA+PSAxNgotLSAgICAgICYmIG9wZW5jbF9h YmkpCi0rCi0rICAvKiAxMjgtYml0IGRlY2ltYWwgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFyZSBz dG9yZWQgaW4gYW4gZXZlbi9vZGQKLSsgICAgIHBhaXIgb2YgRlBScywgd2l0aCB0aGUgZXZlbiBG UFIgaG9sZGluZyB0aGUgbW9zdCBzaWduaWZpY2FudCBoYWxmLiAgKi8KLSsgIGlmIChUWVBFX0xF TkdUSCAodmFsdHlwZSkgPT0gMTYKLSsgICAgICAmJiBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZ UEVfQ09ERV9ERUNGTE9BVCkKLSAgICAgewotLSAgICAgIGludCBuX3JlZ3MgPSBUWVBFX0xFTkdU SCAodmFsdHlwZSkgLyAxNjsKLS0gICAgICBpbnQgaTsKLSsgICAgICBpbnQgcmVnbnVtID0gdGRl cC0+cHBjX2ZwMF9yZWdudW0gKyAyICsgMiAqIGluZGV4OwotIAotLSAgICAgIGZvciAoaSA9IDA7 IGkgPCBuX3JlZ3M7IGkrKykKLSsgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAJewotLQkg IGludCBvZmZzZXQgPSBpICogMTY7Ci0tCSAgaW50IHJlZ251bSA9IHRkZXAtPnBwY192cjBfcmVn bnVtICsgMiArIGk7Ci0tCi0tCSAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0tCSAgICByZWdjYWNo ZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmICsgb2Zmc2V0KTsKLS0J ICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotLQkgICAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2Nh Y2hlLCByZWdudW0sIHJlYWRidWYgKyBvZmZzZXQpOwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZSAocmVnY2FjaGUsIHJlZ251bSwgd3JpdGVidWYpOwotKwkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZSAocmVnY2FjaGUsIHJlZ251bSArIDEsIHdyaXRlYnVmICsgOCk7Ci0gCX0KLS0KLS0gICAgICBy ZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047Ci0rICAgICAgaWYgKHJlYWRi dWYgIT0gTlVMTCkKLSsJewotKwkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVn bnVtLCByZWFkYnVmKTsKLSsJICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251 bSArIDEsIHJlYWRidWYgKyA4KTsKLSsJfQotKyAgICAgIHJldHVybiAxOwotICAgICB9Ci0tICAv KiBBcnJheSB0eXBlIGhhcyBtb3JlIHRoYW4gb25lIHVzZS4gICovCi0tICBpZiAoVFlQRV9DT0RF ICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpCi0rCi0rICAvKiBBbHRpVmVjIHZlY3RvcnMg YXJlIHJldHVybmVkIGluIFZScyBzdGFydGluZyBhdCB2Mi4gICovCi0rICBpZiAoVFlQRV9DT0RF ICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkgJiYgVFlQRV9WRUNUT1IgKHZhbHR5cGUpCi0r ICAgICAgJiYgdGRlcC0+dmVjdG9yX2FiaSA9PSBQT1dFUlBDX1ZFQ19BTFRJVkVDKQotICAgICB7 Ci0tICAgICAgLyogU21hbGwgY2hhcmFjdGVyIGFycmF5cyBhcmUgcmV0dXJuZWQsIHJpZ2h0IGp1 c3RpZmllZCwgaW4gcjMuICAqLwotLSAgICAgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPD0g OAotLSAgICAgICAgJiYgVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh2YWx0eXBlKSkgPT0g VFlQRV9DT0RFX0lOVAotLSAgICAgICAgJiYgVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUg KHZhbHR5cGUpKSA9PSAxKQotLSAgICAgICAgewotLSAgICAgICAgICBpbnQgb2Zmc2V0ID0gKHJl Z2lzdGVyX3NpemUgKGdkYmFyY2gsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMykKLS0gICAgICAg ICAgICAgICAgICAgICAgIC0gVFlQRV9MRU5HVEggKHZhbHR5cGUpKTsKLS0gICAgICAgICAgaWYg KHdyaXRlYnVmICE9IE5VTEwpCi0tICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFy dCAocmVnY2FjaGUsIHRkZXAtPnBwY19ncDBfcmVnbnVtICsgMywKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwgVFlQRV9MRU5HVEggKHZhbHR5cGUpLCB3cml0 ZWJ1Zik7Ci0tICAgICAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0tICAgICAgICAgICByZWdj YWNoZV9jb29rZWRfcmVhZF9wYXJ0IChyZWdjYWNoZSwgdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAz LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBUWVBFX0xF TkdUSCAodmFsdHlwZSksIHJlYWRidWYpOwotLSAgICAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVF X1JFR0lTVEVSX0NPTlZFTlRJT047Ci0tCX0KLS0gICAgICAvKiBBIFZNWCB2ZWN0b3IgaXMgcmV0 dXJuZWQgaW4gdjIuICAqLwotLSAgICAgIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVf Q09ERV9BUlJBWQotLQkgICYmIFRZUEVfVkVDVE9SICh2YWx0eXBlKQotLQkgICYmIHRkZXAtPnZl Y3Rvcl9hYmkgPT0gUE9XRVJQQ19WRUNfQUxUSVZFQykKLS0gICAgICAgIHsKLS0gICAgICAgICAg aWYgKHJlYWRidWYpCi0tICAgICAgICAgICAgcmVnY2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hl LCB0ZGVwLT5wcGNfdnIwX3JlZ251bSArIDIsIHJlYWRidWYpOwotLSAgICAgICAgICBpZiAod3Jp dGVidWYpCi0tICAgICAgICAgICAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRl cC0+cHBjX3ZyMF9yZWdudW0gKyAyLAotLQkJCQkgICB3cml0ZWJ1Zik7Ci0tICAgICAgICAgIHJl dHVybiBSRVRVUk5fVkFMVUVfUkVHSVNURVJfQ09OVkVOVElPTjsKLS0gICAgICAgIH0KLSsgICAg ICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyAyICsgaW5kZXg7Ci0rCi0rICAg ICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0rCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2Fj aGUsIHJlZ251bSwgd3JpdGVidWYpOwotKyAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0rCXJl Z2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtLCByZWFkYnVmKTsKLSsgICAgICBy ZXR1cm4gMTsKLSAgICAgfQotLSAgLyogQmlnIGZsb2F0aW5nIHBvaW50IHZhbHVlcyBnZXQgc3Rv cmVkIGluIGFkamFjZW50IGZsb2F0aW5nCi0tICAgICBwb2ludCByZWdpc3RlcnMsIHN0YXJ0aW5n IHdpdGggRjEuICAqLwotLSAgaWYgKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0ZM VAotLSAgICAgICYmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkgPT0gMTYgfHwgVFlQRV9MRU5HVEgg KHZhbHR5cGUpID09IDMyKSkKLSsKLSsgIHJldHVybiAwOwotK30KLSsKLSsvKiBUaGUgNjQgYml0 IEFCSSByZXR1cm4gdmFsdWUgY29udmVudGlvbi4KLSsKLSsgICBSZXR1cm4gbm9uLXplcm8gaWYg dGhlIHJldHVybi12YWx1ZSBpcyBzdG9yZWQgaW4gYSByZWdpc3RlciwgcmV0dXJuCi0rICAgMCBp ZiB0aGUgcmV0dXJuLXZhbHVlIGlzIGluc3RlYWQgc3RvcmVkIG9uIHRoZSBzdGFjayAoYS5rLmEu LAotKyAgIHN0cnVjdCByZXR1cm4gY29udmVudGlvbikuCi0rCi0rICAgRm9yIGEgcmV0dXJuLXZh bHVlIHN0b3JlZCBpbiBhIHJlZ2lzdGVyOiB3aGVuIFdSSVRFQlVGIGlzIG5vbi1OVUxMLAotKyAg IGNvcHkgdGhlIGJ1ZmZlciB0byB0aGUgY29ycmVzcG9uZGluZyByZWdpc3RlciByZXR1cm4tdmFs dWUgbG9jYXRpb24KLSsgICBsb2NhdGlvbjsgd2hlbiBSRUFEQlVGIGlzIG5vbi1OVUxMLCBmaWxs IHRoZSBidWZmZXIgZnJvbSB0aGUKLSsgICBjb3JyZXNwb25kaW5nIHJlZ2lzdGVyIHJldHVybi12 YWx1ZSBsb2NhdGlvbi4gICovCi0rZW51bSByZXR1cm5fdmFsdWVfY29udmVudGlvbgotK3BwYzY0 X3N5c3ZfYWJpX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2 YWx1ZSAqZnVuY3Rpb24sCi0rCQkJICAgICBzdHJ1Y3QgdHlwZSAqdmFsdHlwZSwgc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwKLSsJCQkgICAgIGdkYl9ieXRlICpyZWFkYnVmLCBjb25zdCBnZGJf Ynl0ZSAqd3JpdGVidWYpCi0rewotKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFy Y2hfdGRlcCAoZ2RiYXJjaCk7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY190eXBlID0gZnVuY3Rpb24g PyB2YWx1ZV90eXBlIChmdW5jdGlvbikgOiBOVUxMOwotKyAgaW50IG9wZW5jbF9hYmkgPSBmdW5j X3R5cGU/IHBwY19zeXN2X3VzZV9vcGVuY2xfYWJpIChmdW5jX3R5cGUpIDogMDsKLSsgIHN0cnVj dCB0eXBlICplbHR5cGU7Ci0rICBpbnQgbmVsdCwgaSwgb2s7Ci0rCi0rICAvKiBUaGlzIGZ1bmN0 aW9uIGV4aXN0cyB0byBzdXBwb3J0IGEgY2FsbGluZyBjb252ZW50aW9uIHRoYXQKLSsgICAgIHJl cXVpcmVzIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gIEl0IHNob3VsZG4ndCBiZSB1c2VkIG9u Ci0rICAgICBwcm9jZXNzb3JzIHRoYXQgbGFjayB0aGVtLiAgKi8KLSsgIGdkYl9hc3NlcnQgKHBw Y19mbG9hdGluZ19wb2ludF91bml0X3AgKGdkYmFyY2gpKTsKLSsKLSsgIC8qIENvbXBsZXggdHlw ZXMgYXJlIHJldHVybmVkIGFzIGlmIHR3byBpbmRlcGVuZGVudCBzY2FsYXJzLiAgKi8KLSsgIGlm IChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYKQotICAgICB7Ci0tICAg ICAgaWYgKHdyaXRlYnVmIHx8IHJlYWRidWYgIT0gTlVMTCkKLSsgICAgICBlbHR5cGUgPSBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh2YWx0eXBlKSk7Ci0rCi0rICAgICAgZm9yIChp ID0gMDsgaSA8IDI7IGkrKykKLSAJewotLQkgIGludCBpOwotLQkgIGZvciAoaSA9IDA7IGkgPCBU WVBFX0xFTkdUSCAodmFsdHlwZSkgLyA4OyBpKyspCi0tCSAgICB7Ci0tCSAgICAgIGlmICh3cml0 ZWJ1ZiAhPSBOVUxMKQotLQkJcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+ cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKLS0JCQkJICAgICAgIChjb25zdCBiZmRfYnl0ZSAqKSB3 cml0ZWJ1ZiArIGkgKiA4KTsKLS0JICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLS0JCXJlZ2Nh Y2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwK LS0JCQkJICAgICAgKGJmZF9ieXRlICopIHJlYWRidWYgKyBpICogOCk7Ci0tCSAgICB9Ci0rCSAg b2sgPSBwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCBy ZWdjYWNoZSwKLSsJCQkJCQkgcmVhZGJ1Ziwgd3JpdGVidWYsIGkpOwotKwkgIGdkYl9hc3NlcnQg KG9rKTsKLSsKLSsJICBpZiAocmVhZGJ1ZikKLSsJICAgIHJlYWRidWYgKz0gVFlQRV9MRU5HVEgg KGVsdHlwZSk7Ci0rCSAgaWYgKHdyaXRlYnVmKQotKwkgICAgd3JpdGVidWYgKz0gVFlQRV9MRU5H VEggKGVsdHlwZSk7Ci0gCX0KLSAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NP TlZFTlRJT047Ci0gICAgIH0KLS0gIC8qIENvbXBsZXggdmFsdWVzIGdldCByZXR1cm5lZCBpbiBm MTpmMiwgbmVlZCB0byBjb252ZXJ0LiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09 IFRZUEVfQ09ERV9DT01QTEVYCi0tICAgICAgJiYgKFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSA4 IHx8IFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSAxNikpCi0rCi0rICAvKiBPcGVuQ0wgdmVjdG9y cyBzaG9ydGVyIHRoYW4gMTYgYnl0ZXMgYXJlIHJldHVybmVkIGFzIGlmCi0rICAgICBhIHNlcmll cyBvZiBpbmRlcGVuZGVudCBzY2FsYXJzOyBPcGVuQ0wgdmVjdG9ycyAxNiBieXRlcwotKyAgICAg b3IgbG9uZ2VyIGFyZSByZXR1cm5lZCBhcyBpZiBhIHNlcmllcyBvZiBBbHRpVmVjIHZlY3RvcnMu ICAqLwotKyAgaWYgKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZICYmIFRZ UEVfVkVDVE9SICh2YWx0eXBlKQotKyAgICAgICYmIG9wZW5jbF9hYmkpCi0gICAgIHsKLS0gICAg ICBpZiAocmVnY2FjaGUgIT0gTlVMTCkKLSsgICAgICBpZiAoVFlQRV9MRU5HVEggKHZhbHR5cGUp IDwgMTYpCi0rCWVsdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5 cGUpKTsKLSsgICAgICBlbHNlCi0rCWVsdHlwZSA9IHJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRk ZXAtPnBwY192cjBfcmVnbnVtKTsKLSsKLSsgICAgICBuZWx0ID0gVFlQRV9MRU5HVEggKHZhbHR5 cGUpIC8gVFlQRV9MRU5HVEggKGVsdHlwZSk7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IG5lbHQ7 IGkrKykKLSAJewotLQkgIGludCBpOwotLQkgIGZvciAoaSA9IDA7IGkgPCAyOyBpKyspCi0tCSAg ICB7Ci0tCSAgICAgIGdkYl9ieXRlIHJlZ3ZhbFtNQVhfUkVHSVNURVJfU0laRV07Ci0tCSAgICAg IHN0cnVjdCB0eXBlICpyZWd0eXBlID0KLS0JCXJlZ2lzdGVyX3R5cGUgKGdkYmFyY2gsIHRkZXAt PnBwY19mcDBfcmVnbnVtKTsKLS0JICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlOwotLQkg ICAgICB0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHZhbHR5 cGUpKTsKLS0JICAgICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0tCQl7Ci0tCQkgIGNvbnZlcnRf dHlwZWRfZmxvYXRpbmcgKChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArCi0tCQkJCQkgIGkg KiBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpLCAKLS0JCQkJCSAgdGFyZ2V0X3R5cGUsIHJlZ3Zh bCwgcmVndHlwZSk7Ci0tCQkgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZGVwLT5wcGNfZnAwX3JlZ251 bSArIDEgKyBpLAotLQkJCQkJIHJlZ3ZhbCk7Ci0tCQl9Ci0tCSAgICAgIGlmIChyZWFkYnVmICE9 IE5VTEwpCi0tCQl7Ci0tCQkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGRlcC0+cHBjX2ZwMF9yZWdudW0g KyAxICsgaSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVndmFs KTsKLS0JCSAgY29udmVydF90eXBlZF9mbG9hdGluZyAocmVndmFsLCByZWd0eXBlLAotLQkJCQkJ ICAoYmZkX2J5dGUgKikgcmVhZGJ1ZiArCi0tCQkJCQkgIGkgKiBUWVBFX0xFTkdUSCAodGFyZ2V0 X3R5cGUpLAotLQkJCQkJICB0YXJnZXRfdHlwZSk7Ci0tCQl9Ci0tCSAgICB9Ci0rCSAgb2sgPSBw cGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFzZSAoZ2RiYXJjaCwgZWx0eXBlLCByZWdjYWNo ZSwKLSsJCQkJCQkgcmVhZGJ1Ziwgd3JpdGVidWYsIGkpOwotKwkgIGdkYl9hc3NlcnQgKG9rKTsK LSsKLSsJICBpZiAocmVhZGJ1ZikKLSsJICAgIHJlYWRidWYgKz0gVFlQRV9MRU5HVEggKGVsdHlw ZSk7Ci0rCSAgaWYgKHdyaXRlYnVmKQotKwkgICAgd3JpdGVidWYgKz0gVFlQRV9MRU5HVEggKGVs dHlwZSk7Ci0gCX0KLSAgICAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJ T047Ci0gICAgIH0KLS0gIC8qIEJpZyBjb21wbGV4IHZhbHVlcyBnZXQgc3RvcmVkIGluIGYxOmY0 LiAgKi8KLS0gIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9DT01QTEVYICYm IFRZUEVfTEVOR1RIICh2YWx0eXBlKSA9PSAzMikKLSsKLSsgIC8qIEFsbCBwb2ludGVycyBsaXZl IGluIHIzLiAgKi8KLSsgIGlmIChUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9QVFIK LSsgICAgICB8fCBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCi0gICAgIHsK LS0gICAgICBpZiAocmVnY2FjaGUgIT0gTlVMTCkKLS0JewotLQkgIGludCBpOwotLQkgIGZvciAo aSA9IDA7IGkgPCA0OyBpKyspCi0tCSAgICB7Ci0tCSAgICAgIGlmICh3cml0ZWJ1ZiAhPSBOVUxM KQotLQkJcmVnY2FjaGVfY29va2VkX3dyaXRlIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdu dW0gKyAxICsgaSwKLS0JCQkJICAgICAgIChjb25zdCBiZmRfYnl0ZSAqKSB3cml0ZWJ1ZiArIGkg KiA4KTsKLS0JICAgICAgaWYgKHJlYWRidWYgIT0gTlVMTCkKLS0JCXJlZ2NhY2hlX2Nvb2tlZF9y ZWFkIChyZWdjYWNoZSwgdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyAxICsgaSwKLS0JCQkJICAgICAg KGJmZF9ieXRlICopIHJlYWRidWYgKyBpICogOCk7Ci0tCSAgICB9Ci0tCX0KLSsgICAgICBpbnQg cmVnbnVtID0gdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAzOwotKwotKyAgICAgIGlmICh3cml0ZWJ1 ZiAhPSBOVUxMKQotKwlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCByZWdudW0sIHdy aXRlYnVmKTsKLSsgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotKwlyZWdjYWNoZV9jb29rZWRf cmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVhZGJ1Zik7Ci0gICAgICAgcmV0dXJuIFJFVFVSTl9W QUxVRV9SRUdJU1RFUl9DT05WRU5USU9OOwotICAgICB9Ci0rCi0rICAvKiBTbWFsbCBjaGFyYWN0 ZXIgYXJyYXlzIGFyZSByZXR1cm5lZCwgcmlnaHQganVzdGlmaWVkLCBpbiByMy4gICovCi0rICBp ZiAoVFlQRV9DT0RFICh2YWx0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLSsgICAgICAmJiBUWVBF X0xFTkdUSCAodmFsdHlwZSkgPD0gOAotKyAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRf VFlQRSAodmFsdHlwZSkpID09IFRZUEVfQ09ERV9JTlQKLSsgICAgICAmJiBUWVBFX0xFTkdUSCAo VFlQRV9UQVJHRVRfVFlQRSAodmFsdHlwZSkpID09IDEpCi0rICAgIHsKLSsgICAgICBpbnQgcmVn bnVtID0gdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAzOwotKyAgICAgIGludCBvZmZzZXQgPSAocmVn aXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnbnVtKSAtIFRZUEVfTEVOR1RIICh2YWx0eXBlKSk7Ci0r Ci0rICAgICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0rCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZV9w YXJ0IChyZWdjYWNoZSwgcmVnbnVtLAotKwkJCQkgICAgb2Zmc2V0LCBUWVBFX0xFTkdUSCAodmFs dHlwZSksIHdyaXRlYnVmKTsKLSsgICAgICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotKwlyZWdjYWNo ZV9jb29rZWRfcmVhZF9wYXJ0IChyZWdjYWNoZSwgcmVnbnVtLAotKwkJCQkgICBvZmZzZXQsIFRZ UEVfTEVOR1RIICh2YWx0eXBlKSwgcmVhZGJ1Zik7Ci0rICAgICAgcmV0dXJuIFJFVFVSTl9WQUxV RV9SRUdJU1RFUl9DT05WRU5USU9OOwotKyAgICB9Ci0rCi0rICAvKiBIYW5kbGUgcGxhaW4gYmFz ZSB0eXBlcy4gICovCi0rICBpZiAocHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UgKGdk YmFyY2gsIHZhbHR5cGUsIHJlZ2NhY2hlLAotKwkJCQkJcmVhZGJ1Ziwgd3JpdGVidWYsIDApKQot KyAgICByZXR1cm4gUkVUVVJOX1ZBTFVFX1JFR0lTVEVSX0NPTlZFTlRJT047Ci0rCi0gICByZXR1 cm4gUkVUVVJOX1ZBTFVFX1NUUlVDVF9DT05WRU5USU9OOwotIH0KLSAKCmRpZmYgLS1naXQgYS9n ZGItdXBzdHJlYW0tcHBjNjRsZTA1b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMDVv ZjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYTNmZGEwLi4wMDAwMDAw Ci0tLSBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMDVvZjE1LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNDQgKzAsMCBAQAotY29tbWl0IGQ2MzE2N2FmZmMyYTU2MTg5ZTNiYTJjYzQ3ZGQ5YTM0NTEy MDhiNTkKLUF1dGhvcjogVWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+ Ci1EYXRlOiAgIFR1ZSBGZWIgNCAxODoyNjoyNiAyMDE0ICswMTAwCi0KLSAgICBQb3dlclBDNjQg bGl0dGxlLWVuZGlhbiBmaXhlczogc3RydWN0dXJlIHBhc3NpbmcKLSAgICAKLSAgICBXaGVuIHBh c3NpbmcgYSBzbWFsbCBzdHJ1Y3R1cmUgaW4gYSBHUFIsIHRoZSBBQkkgc3BlY2lmaWVzIHRoYXQg aXQKLSAgICBzaG91bGQgYmUgcGFzc2VkIGluIHRoZSBsZWFzdC1zaWduaWZpY2FudCBieXRlcyBv ZiB0aGUgcmVnaXN0ZXIKLSAgICAob3Igc3RhY2sgc2xvdCkuICBPbiBiaWctZW5kaWFuIHN5c3Rl bXMsIHRoaXMgbWVhbnMgdGhlIHZhbHVlCi0gICAgbmVlZHMgdG8gYmUgc3RvcmVkIGF0IGFuIG9m ZnNldCwgd2hpY2ggaXMgd2hhdCBjdXJyZW50IGNvZGUgZG9lcy4KLSAgICAKLSAgICBIb3dldmVy LCBvbiBsaXR0bGUtZW5kaWFuIHN5c3RlbXMsIHRoZSBsZWFzdC1zaWduaWZpY2FudCBieXRlcyBh cmUKLSAgICBhZGRyZXNzZXMgd2l0aCBvZmZzZXQgMC4gIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdC4K LSAgICAKLSAgICBnZGIvQ2hhbmdlTG9nOgotICAgIAotICAgIAkqIHBwYy1zeXN2LXRkZXAuYyAo cHBjNjRfc3lzdl9hYmlfcHVzaF92YWwpOiBVc2UgY29ycmVjdAotICAgIAlvZmZzZXQgb24gbGl0 dGxlLWVuZGlhbiB3aGVuIHBhc3Npbmcgc21hbGwgc3RydWN0dXJlcy4KLQotIyMjIGEvZ2RiL0No YW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5nZUxvZwotIyMgLTEsNSArMSwxMCBAQAotIDIwMTQtMDIt MDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0gCi0rCSogcHBjLXN5 c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX3ZhbCk6IFVzZSBjb3JyZWN0Ci0rCW9mZnNl dCBvbiBsaXR0bGUtZW5kaWFuIHdoZW4gcGFzc2luZyBzbWFsbCBzdHJ1Y3R1cmVzLgotKwotKzIw MTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSog cHBjLXN5c3YtdGRlcC5jIChnZXRfZGVjaW1hbF9mbG9hdF9yZXR1cm5fdmFsdWUpOiBVcGRhdGUg Y29tbWVudC4KLSAJKHN0cnVjdCBwcGM2NF9zeXN2X2FyZ3Bvcyk6IE5ldyBkYXRhIHN0cnVjdHVy ZS4KLSAJKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZmxvYXQpOiBSZW1vdmUuCi0tLS0gYS9nZGIvcHBj LXN5c3YtdGRlcC5jCi0rKysgYi9nZGIvcHBjLXN5c3YtdGRlcC5jCi1AQCAtMTE1MCw3ICsxMTUw LDggQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF92YWwgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAot ICAgICAgZG91Ymxld29yZCBhcmUgcmlnaHQtYWxpZ25lZCBhbmQgdGhvc2UgbGFyZ2VyIGFyZSBs ZWZ0LWFsaWduZWQuCi0gICAgICBHQ0MgdmVyc2lvbnMgYmVmb3JlIDMuNCBpbXBsZW1lbnRlZCB0 aGlzIGluY29ycmVjdGx5OyBzZWUKLSAgICAgIDxodHRwOi8vZ2NjLmdudS5vcmcvZ2NjLTMuNC9w b3dlcnBjLWFiaS5odG1sPi4gICovCi0tICBpZiAobGVuIDwgdGRlcC0+d29yZHNpemUpCi0rICBp ZiAobGVuIDwgdGRlcC0+d29yZHNpemUKLSsgICAgICAmJiBnZGJhcmNoX2J5dGVfb3JkZXIgKGdk YmFyY2gpID09IEJGRF9FTkRJQU5fQklHKQotICAgICBvZmZzZXQgPSB0ZGVwLT53b3Jkc2l6ZSAt IGxlbjsKLSAKLSAgIGlmIChhcmdwb3MtPnJlZ2NhY2hlKQoKZGlmZiAtLWdpdCBhL2dkYi11cHN0 cmVhbS1wcGM2NGxlMDZvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMzI1OGQuLjAwMDAwMDAKLS0tIGEv Z2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NyAr MCwwIEBACi1jb21taXQgNmVkMTRmZjMzOTc5YmM0ODM2N2MzNWIxYjIzNWZlZjhjNWUyMjI5Ygot QXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KLURhdGU6 ICAgVHVlIEZlYiA0IDE4OjI4OjI0IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBsaXR0bGUt ZW5kaWFuIGZpeGVzOiBBbHRpVmVjIHRlc3RzCi0gICAgCi0gICAgQSBjb3VwbGUgb2YgQWx0aVZl YyB0ZXN0cyBmYWlsIHNwdXJpb3VzbHkgb24gcG93ZXJwYzY0bGUtbGludXgsIGJlY2F1c2UKLSAg ICB0aGV5IGNvbXBhcmUgYWdhaW5zdCBhbiBpbmNvcnJlY3QgcGF0dGVybi4gIE5vdGUgdGhhdCB0 aG9zZSB0ZXN0cyBhbHJlYWR5Ci0gICAgY29udGFpbiBsaXR0bGUtZW5kaWFuIHZhcmlhbnRzIG9m IHRoZSBwYXR0ZXJucywgYnV0IHRob3NlIHNlZW0gdG8gaGF2ZQotICAgIGJpdC1yb3R0ZWQgYSBi aXQ6IHdoZW4gb3V0cHV0dGluZyBhIHZlY3RvciwgR0RCIG5vIGxvbmdlciBvbWl0cyB0cmFpbGlu ZwotICAgIHplcm8gZWxlbWVudHMgKGFzIGl0IHVzZWQgdG8gZG8gaW4gdGhlIHBhc3QpLgotICAg IAotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgcGF0dGVybiB0byB0aGUgbmV3IEdEQiBvdXRw dXQgYmVoYXZpb3IuCi0gICAgCi0gICAgSW4gYWRkaXRpb24sIHRoZSBwYXRjaCB1cGRhdGVzIHRo ZSBlbmRpYW4gdGVzdCB0byB1c2UgdGhlIG5ldwotICAgIGdkYl90ZXN0X211bHRpcGxlIGxvZ2lj IGluc3RlYWQgb2YgZ2RiX2V4cGVjdC4KLSAgICAKLSAgICBnZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZzoKLSAgICAKLSAgICAJKiBnZGIuYXJjaC9hbHRpdmVjLXJlZ3MuZXhwOiBVc2UgZ2RiX3Rlc3Rf bXVsdGlwbGUgZm9yIGVuZGlhbiB0ZXN0LgotICAgIAkoZGVjaW1hbF92ZWN0b3IpOiBGaXggZm9y IGxpdHRsZS1lbmRpYW4uCi0KLSMjIyBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0jIyMgYi9n ZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsMyArMSw4IEBACi0rMjAxNC0wMi0wNCAgVWxy aWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotKwkqIGdkYi5hcmNoL2FsdGl2 ZWMtcmVncy5leHA6IFVzZSBnZGJfdGVzdF9tdWx0aXBsZSBmb3IgZW5kaWFuIHRlc3QuCi0rCShk ZWNpbWFsX3ZlY3Rvcik6IEZpeCBmb3IgbGl0dGxlLWVuZGlhbi4KLSsKLSAyMDE0LTAxLTI5ICBK b3NlIEUuIE1hcmNoZXNpICA8am9zZS5tYXJjaGVzaUBvcmFjbGUuY29tPgotIAotIAkqIGdkYi5h cmNoL3NwYXJjLXN5c3N0ZXAuZXhwOiBOZXcgZmlsZS4KLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gvYWx0aXZlYy1yZWdzLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbHRp dmVjLXJlZ3MuZXhwCi1AQCAtNzksMTcgKzc5LDE2IEBAIGdkYl90ZXN0ICJzZXQgXCR2cnNhdmUg PSAxIiAiIiAiIgotIAotIGdkYl90ZXN0ICJuZXh0IiAiIiAiIgotIAotLXNlbmRfZ2RiICJzaG93 IGVuZGlhblxuIgotIHNldCBlbmRpYW5uZXNzICIiCi0tZ2RiX2V4cGVjdCB7Ci0rc2V0IG1zZyAi ZGV0ZWN0IGVuZGlhbm5lc3MiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInNob3cgZW5kaWFuIiAiJG1z ZyIgewotICAgICAtcmUgIihUaGUgdGFyZ2V0IGVuZGlhbm5lc3MgaXMgc2V0IGF1dG9tYXRpY2Fs bHkgLmN1cnJlbnRseSApKGJpZ3xsaXR0bGUpKCBlbmRpYW4uKikkZ2RiX3Byb21wdCAkIiB7Ci0t ICAgICAgICBwYXNzICJlbmRpYW5uZXNzIgotLQlzZXQgZW5kaWFubmVzcyAkZXhwZWN0X291dCgy LHN0cmluZykKLSsgICAgICAgIHBhc3MgIiRtc2ciCi0rICAgICAgICBzZXQgZW5kaWFubmVzcyAk ZXhwZWN0X291dCgyLHN0cmluZykKLSAgICAgfQotICAgICAtcmUgIi4qJGdkYl9wcm9tcHQgJCIg ewotLQlmYWlsICJjb3VsZG4ndCBnZXQgZW5kaWFubmVzcyIKLSsgICAgICAgIGZhaWwgIiRtc2ci Ci0gICAgIH0KLS0gICAgdGltZW91dAkJeyBmYWlsICIodGltZW91dCkgZW5kaWFubmVzcyIgfQot IH0KLSAKLSAjIEFuZCB0aGVuIHJlYWQgdGhlIEFsdGlWZWMgcmVnaXN0ZXJzIGJhY2ssIHRvIHNl ZSB0aGF0Ci1AQCAtMTE4LDcgKzExNyw3IEBAIGdkYl90ZXN0ICJpbmZvIHJlZyB2c2NyIiAidnNj ci4qMHgxXHQxIiAiaW5mbyByZWcgdnNjciIKLSBpZiB7JGVuZGlhbm5lc3MgPT0gImJpZyJ9IHsK LSAgICAgIHNldCBkZWNpbWFsX3ZlY3RvciAiLnVpbnQxMjggPSAweDAwMDAwMDAxMDAwMDAwMDEw MDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9IC4xLiplLTQ1LCAxLiplLTQ1LCAxLiplLTQ1LCAx LiplLTQ1LiwgdjRfaW50MzIgPSAuMSwgMSwgMSwgMS4sIHY4X2ludDE2ID0gLjAsIDEsIDAsIDEs IDAsIDEsIDAsIDEuLCB2MTZfaW50OCA9IC4wLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLCAw LCAxLCAwLCAwLCAwLCAxLi4iCi0gfSBlbHNlIHsKLS0gICAgIHNldCBkZWNpbWFsX3ZlY3RvciAi LnVpbnQxMjggPSAweDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9 IC4xLiplLTQ1LCAxLiplLTQ1LCAxLiplLTQ1LCAxLiplLTQ1LiwgdjRfaW50MzIgPSAuMSwgMSwg MSwgMS4sIHY4X2ludDE2ID0gLjEsIDAsIDEsIDAsIDEsIDAsIDEsIDAuLCB2MTZfaW50OCA9IC4x LCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwLi4iCi0rICAgICBzZXQg ZGVjaW1hbF92ZWN0b3IgIi51aW50MTI4ID0gMHgwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEwMDAw MDAwMSwgdjRfZmxvYXQgPSAuMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NSwgMS4qZS00NS4sIHY0 X2ludDMyID0gLjEsIDEsIDEsIDEuLCB2OF9pbnQxNiA9IC4xLCAwLCAxLCAwLCAxLCAwLCAxLCAw LiwgdjE2X2ludDggPSAuMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMSwgMCwg MCwgMC4uIgotIH0KLSAKLSBmb3Ige3NldCBpIDB9IHskaSA8IDMyfSB7aW5jciBpIDF9IHsKCmRp ZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaCBiL2dkYi11cHN0cmVh bS1wcGM2NGxlMDdvZjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDhk NDE5Li4wMDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMDdvZjE1LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLWNvbW1pdCAwODRlZTU0NTUyZjZjMzVkNzQwZThi OWJjODFhNGZlOGQ4YmIxNzhiCi1BdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2Fu ZEBkZS5pYm0uY29tPgotRGF0ZTogICBUdWUgRmViIDQgMTg6MzE6MzggMjAxNCArMDEwMAotCi0g ICAgUG93ZXJQQzY0IGxpdHRsZS1lbmRpYW4gZml4ZXM6IFZTWCB0ZXN0cyBhbmQgcHNldWRvLXJl Z3MKLSAgICAKLSAgICBNYW55IFZTWCB0ZXN0IHdlcmUgZmFpbGluZyBvbiBwb3dlcnBjNjRsZS1s aW51eCwgc2luY2UgLWFzIG9wcG9zZWQgdG8gdGhlCi0gICAgQWx0aVZlYyB0ZXN0cy0gdGhlcmUg bmV2ZXIgd2VyZSBsaXR0bGUtZW5kaWFuIHZlcnNpb25zIG9mIHRoZSB0ZXN0IHBhdHRlcm5zLgot ICAgIAotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdWNoIHBhdHRlcm5zLCBhbG9uZyB0aGUgbGluZXMg b2YgYWx0aXZlYy1yZWdzLmV4cC4KLSAgICAKLSAgICBJbiBhZGRpdGlvbiwgdGhlcmUgaXMgYW4g YWN0dWFsIGNvZGUgY2hhbmdlIHJlcXVpcmVkOiBGb3IgdGhvc2UgVlNYCi0gICAgcmVnaXN0ZXJz IHRoYXQgb3ZlcmxhcCBhIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyLCB0aGUgRlAgcmVnaXN0ZXIK LSAgICBvdmVybGFwcyB0aGUgbW9zdC1zaWduaWZpY2FudCBoYWxmIG9mIHRoZSBWU1ggcmVnaXN0 ZXIgYm90aCBvbiBiaWctCi0gICAgYW5kIGxpdHRsZS1lbmRpYW4gc3lzdGVtcy4gIEhvd2V2ZXIs IG9uIGxpdHRsZS1lbmRpYW4gc3lzdGVtcywgdGhhdAotICAgIGhhbGYgaXMgc3RvcmVkIGF0IGFu IG9mZnNldCBvZiA4IGJ5dGVzIChub3QgMCkuICBUaGlzIHdvcmtzIGFscmVhZHkKLSAgICBmb3Ig dGhlICJyZWFsIiBGUCByZWdpc3RlcnMsIGJ1dCBjdXJyZW50IGNvZGUgZ2V0cyBpdCB3cm9uZyBm b3IKLSAgICB0aGUgImV4dGVuZGVkIiBwc2V1ZG8gRlAgcmVnaXN0ZXIgR0RCIGdlbmVyYXRlcyBm b3IgdGhlIHNlY29uZAotICAgIGhhbGYgb2YgdGhlIFZTWCByZWdpc3RlciBiYW5rLgotICAgIAot ICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgY29ycmVzcG9uZGluZyBwc2V1ZG8gcmVhZC93cml0 ZSByb3V0aW5lcwotICAgIHRvIHRha2UgdGhlIGFwcHJvcHJpYXRlIG9mZnNldCBpbnRvIGNvbnNp ZGVyYXRpb24uCi0gICAgCi0gICAgZ2RiL0NoYW5nZUxvZzoKLSAgICAKLSAgICAJKiByczYwMDAt dGRlcC5jIChlZnByX3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogVXNlIGNvcnJlY3Qgb2Zmc2V0Ci0g ICAgCW9mIHRoZSBvdmVybGFwcGVkIEZQIHJlZ2lzdGVyIHdpdGhpbiB0aGUgVlNYIHJlZ2lzdGVy IG9uIGxpdHRsZS0KLSAgICAJZW5kaWFuIHBsYXRmb3Jtcy4KLSAgICAJKGVmcHJfcHNldWRvX3Jl Z2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCi0gICAgCi0gICAgZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2c6Ci0gICAgCi0gICAgCSogZ2RiLmFyY2gvdnN4LXJlZ3MuZXhwOiBDaGVjayB0YXJnZXQgZW5k aWFubmVzcy4gIFByb3ZpZGUgdmFyaWFudHMKLSAgICAJb2YgdGhlIHRlc3QgcGF0dGVybnMgZm9y IHVzZSBvbiBsaXR0bGUtZW5kaWFuIHN5c3RlbXMuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMj IyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTIgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2gg V2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHJzNjAwMC10ZGVwLmMgKGVm cHJfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBVc2UgY29ycmVjdCBvZmZzZXQKLSsJb2YgdGhlIG92 ZXJsYXBwZWQgRlAgcmVnaXN0ZXIgd2l0aGluIHRoZSBWU1ggcmVnaXN0ZXIgb24gbGl0dGxlLQot KwllbmRpYW4gcGxhdGZvcm1zLgotKwkoZWZwcl9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtl d2lzZS4KLSsKLSsyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0u Y29tPgotKwotIAkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF92YWwpOiBV c2UgY29ycmVjdAotIAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3aGVuIHBhc3Npbmcgc21hbGwg c3RydWN0dXJlcy4KLSAKLS0tLSBhL2dkYi9yczYwMDAtdGRlcC5jCi0rKysgYi9nZGIvcnM2MDAw LXRkZXAuYwotQEAgLTI3NzksMTAgKzI3NzksMTIgQEAgZWZwcl9wc2V1ZG9fcmVnaXN0ZXJfcmVh ZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0g ewotICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7 Ci0gICBpbnQgcmVnX2luZGV4ID0gcmVnX25yIC0gdGRlcC0+cHBjX2VmcHIwX3JlZ251bTsKLSsg IGludCBvZmZzZXQgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5f QklHID8gMCA6IDg7Ci0gCi0gICAvKiBSZWFkIHRoZSBwb3J0aW9uIHRoYXQgb3ZlcmxhcHMgdGhl IFZNWCByZWdpc3Rlci4gICovCi0tICByZXR1cm4gcmVnY2FjaGVfcmF3X3JlYWRfcGFydCAocmVn Y2FjaGUsIHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnX2luZGV4LCAwLAotLQkJCQkgcmVnaXN0 ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnX25yKSwgYnVmZmVyKTsKLSsgIHJldHVybiByZWdjYWNoZV9y YXdfcmVhZF9wYXJ0IChyZWdjYWNoZSwgdGRlcC0+cHBjX3ZyMF9yZWdudW0gKyByZWdfaW5kZXgs Ci0rCQkJCSBvZmZzZXQsIHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ19uciksCi0rCQkJCSBi dWZmZXIpOwotIH0KLSAKLSAvKiBXcml0ZSBtZXRob2QgZm9yIFBPV0VSNyBFeHRlbmRlZCBGUCBw c2V1ZG8tcmVnaXN0ZXJzLiAgKi8KLUBAIC0yNzkyLDEwICsyNzk0LDEyIEBAIGVmcHJfcHNldWRv X3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90 ZGVwIChnZGJhcmNoKTsKLSAgIGludCByZWdfaW5kZXggPSByZWdfbnIgLSB0ZGVwLT5wcGNfZWZw cjBfcmVnbnVtOwotKyAgaW50IG9mZnNldCA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkg PT0gQkZEX0VORElBTl9CSUcgPyAwIDogODsKLSAKLSAgIC8qIFdyaXRlIHRoZSBwb3J0aW9uIHRo YXQgb3ZlcmxhcHMgdGhlIFZNWCByZWdpc3Rlci4gICovCi0tICByZWdjYWNoZV9yYXdfd3JpdGVf cGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnX2luZGV4LCAwLAotLQkJ CSAgIHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ19uciksIGJ1ZmZlcik7Ci0rICByZWdjYWNo ZV9yYXdfd3JpdGVfcGFydCAocmVnY2FjaGUsIHRkZXAtPnBwY192cjBfcmVnbnVtICsgcmVnX2lu ZGV4LAotKwkJCSAgIG9mZnNldCwgcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnX25yKSwKLSsJ CQkgICBidWZmZXIpOwotIH0KLSAKLSBzdGF0aWMgZW51bSByZWdpc3Rlcl9zdGF0dXMKLSMjIyBh L2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwot IyMgLTEsNSArMSwxMCBAQAotIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRA ZGUuaWJtLmNvbT4KLSAKLSsJKiBnZGIuYXJjaC92c3gtcmVncy5leHA6IENoZWNrIHRhcmdldCBl bmRpYW5uZXNzLiAgUHJvdmlkZSB2YXJpYW50cwotKwlvZiB0aGUgdGVzdCBwYXR0ZXJucyBmb3Ig dXNlIG9uIGxpdHRsZS1lbmRpYW4gc3lzdGVtcy4KLSsKLSsyMDE0LTAyLTA0ICBVbHJpY2ggV2Vp Z2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSogZ2RiLmFyY2gvYWx0aXZlYy1yZWdz LmV4cDogVXNlIGdkYl90ZXN0X211bHRpcGxlIGZvciBlbmRpYW4gdGVzdC4KLSAJKGRlY2ltYWxf dmVjdG9yKTogRml4IGZvciBsaXR0bGUtZW5kaWFuLgotIAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC92c3gtcmVncy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvdnN4LXJl Z3MuZXhwCi1AQCAtNTgsMTkgKzU4LDQ1IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0gICAg IGdkYl9zdXBwcmVzc190ZXN0cwotIH0KLSAKLStzZXQgZW5kaWFubmVzcyAiIgotK3NldCBtc2cg ImRldGVjdCBlbmRpYW5uZXNzIgotK2dkYl90ZXN0X211bHRpcGxlICJzaG93IGVuZGlhbiIgIiRt c2ciIHsKLSsgICAgLXJlICIoVGhlIHRhcmdldCBlbmRpYW5uZXNzIGlzIHNldCBhdXRvbWF0aWNh bGx5IC5jdXJyZW50bHkgKShiaWd8bGl0dGxlKSggZW5kaWFuLiopJGdkYl9wcm9tcHQgJCIgewot KyAgICAgICAgcGFzcyAiJG1zZyIKLSsgICAgICAgIHNldCBlbmRpYW5uZXNzICRleHBlY3Rfb3V0 KDIsc3RyaW5nKQotKyAgICB9Ci0rICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICAg ICBmYWlsICIkbXNnIgotKyAgICB9Ci0rfQotKwotICMgRGF0YSBzZXRzIHVzZWQgdGhyb3VnaG91 dCB0aGUgdGVzdAotIAotLXNldCB2ZWN0b3JfcmVnaXN0ZXIxICIudWludDEyOCA9IDB4M2ZmNGNj Y2NjY2NjY2NjYzAwMDAwMDAwMDAwMDAwMDAsIHYyX2RvdWJsZSA9IC4weDEsIDB4MC4sIHY0X2Zs b2F0ID0gLjB4MSwgMHhmOTk5OTlhMCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weDNmZjRjY2Nj LCAweGNjY2NjY2NjLCAweDAsIDB4MC4sIHY4X2ludDE2ID0gLjB4M2ZmNCwgMHhjY2NjLCAweGNj Y2MsIDB4Y2NjYywgMHgwLCAweDAsIDB4MCwgMHgwLiwgdjE2X2ludDggPSAuMHgzZiwgMHhmNCwg MHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHhjYywgMHgwLCAweDAsIDB4MCwgMHgwLCAw eDAsIDB4MCwgMHgwLCAweDAuLiIKLStpZiB7JGVuZGlhbm5lc3MgPT0gImJpZyJ9IHsKLSsgICAg c2V0IHZlY3Rvcl9yZWdpc3RlcjEgIi51aW50MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAw MDAwMDAwMDAwMCwgdjJfZG91YmxlID0gLjB4MSwgMHgwLiwgdjRfZmxvYXQgPSAuMHgxLCAweGY5 OTk5OWEwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4M2ZmNGNjY2MsIDB4Y2NjY2NjY2MsIDB4 MCwgMHgwLiwgdjhfaW50MTYgPSAuMHgzZmY0LCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDAs IDB4MCwgMHgwLCAweDAuLCB2MTZfaW50OCA9IC4weDNmLCAweGY0LCAweGNjLCAweGNjLCAweGNj LCAweGNjLCAweGNjLCAweGNjLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4 MC4uIgotKwotKyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVyMV92ciAiLnVpbnQxMjggPSAweDNmZjRj Y2NjY2NjY2NjY2MwMDAwMDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9IC4weDEsIDB4Zjk5OTk5YTAs IDB4MCwgMHgwLiwgdjRfaW50MzIgPSAuMHgzZmY0Y2NjYywgMHhjY2NjY2NjYywgMHgxLCAweDEu LCB2OF9pbnQxNiA9IC4weDNmZjQsIDB4Y2NjYywgMHhjY2NjLCAweGNjY2MsIDB4MCwgMHgxLCAw eDAsIDB4MS4sIHYxNl9pbnQ4ID0gLjB4M2YsIDB4ZjQsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2Ms IDB4Y2MsIDB4Y2MsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgxLi4iCi0g Ci0tc2V0IHZlY3Rvcl9yZWdpc3RlcjFfdnIgIi51aW50MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2Nj MDAwMDAwMDEwMDAwMDAwMSwgdjRfZmxvYXQgPSAuMHgxLCAweGY5OTk5OWEwLCAweDAsIDB4MC4s IHY0X2ludDMyID0gLjB4M2ZmNGNjY2MsIDB4Y2NjY2NjY2MsIDB4MSwgMHgxLiwgdjhfaW50MTYg PSAuMHgzZmY0LCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDAsIDB4MSwgMHgwLCAweDEuLCB2 MTZfaW50OCA9IC4weDNmLCAweGY0LCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNjLCAweGNj LCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MS4uIgotKyAgICBzZXQgdmVj dG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJl ZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4 MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVh ZGJlZWYuLCB2OF9pbnQxNiA9IC4weGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVh ZCwgMHhiZWVmLCAweGRlYWQsIDB4YmVlZi4sIHYxNl9pbnQ4ID0gLjB4ZGUsIDB4YWQsIDB4YmUs IDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4 ZGUsIDB4YWQsIDB4YmUsIDB4ZWYuLiIKLSAKLS1zZXQgdmVjdG9yX3JlZ2lzdGVyMiAidWludDEy OCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9IC4weDEs IDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4ZGVh ZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQxNiA9IC4w eGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4 YmVlZi4sIHYxNl9pbnQ4ID0gLjB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4 YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYu LiIKLSsgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVmZGVh ZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2 NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVm LiwgdjhfaW50MTYgPSAuMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQsIDB4 YmVlZiwgMHhkZWFkLCAweGJlZWYuLCB2MTZfaW50OCA9IC4weGRlLCAweGFkLCAweGJlLCAweGVm LCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAw eGFkLCAweGJlLCAweGVmLi4iCi0gCi0tc2V0IHZlY3Rvcl9yZWdpc3RlcjJfdnIgInVpbnQxMjgg PSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVmLCB2NF9mbG9hdCA9IC4weDAsIDB4 MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRi ZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYgPSAuMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhi ZWVmLCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYuLCB2MTZfaW50OCA9IC4weGRlLCAw eGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJl LCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLi4iCi0rICAgIHNldCB2ZWN0b3JfcmVnaXN0 ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2Rv dWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2lu dDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4 MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAw eDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgx Li4iCi0rCi0rICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzX3ZyICIudWludDEyOCA9IDB4MDAwMDAw MDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4 MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MCwgMHgx LCAweDAsIDB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgwLCAweDAsIDB4 MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAs IDB4MCwgMHgxLi4iCi0rfSBlbHNlIHsKLSsgICAgc2V0IHZlY3Rvcl9yZWdpc3RlcjEgIi51aW50 MTI4ID0gMHgzZmY0Y2NjY2NjY2NjY2NjMDAwMDAwMDAwMDAwMDAwMCwgdjJfZG91YmxlID0gLjB4 MCwgMHgxLiwgdjRfZmxvYXQgPSAuMHgwLCAweDAsIDB4Zjk5OTk5YTAsIDB4MS4sIHY0X2ludDMy ID0gLjB4MCwgMHgwLCAweGNjY2NjY2NjLCAweDNmZjRjY2NjLiwgdjhfaW50MTYgPSAuMHgwLCAw eDAsIDB4MCwgMHgwLCAweGNjY2MsIDB4Y2NjYywgMHhjY2NjLCAweDNmZjQuLCB2MTZfaW50OCA9 IC4weDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHhjYywgMHhjYywgMHhj YywgMHhjYywgMHhjYywgMHhjYywgMHhmNCwgMHgzZi4uIgotIAotLXNldCB2ZWN0b3JfcmVnaXN0 ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHYyX2Rv dWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2lu dDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2ludDE2ID0gLjB4MCwgMHgxLCAweDAsIDB4 MSwgMHgwLCAweDEsIDB4MCwgMHgxLiwgdjE2X2ludDggPSAuMHgwLCAweDAsIDB4MCwgMHgxLCAw eDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAsIDB4MCwgMHgx Li4iCi0rICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIxX3ZyICIudWludDEyOCA9IDB4M2ZmNGNjY2Nj Y2NjY2NjYzAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zsb2F0ID0gLjB4MCwgMHgwLCAweGY5OTk5OWEw LCAweDEuLCB2NF9pbnQzMiA9IC4weDEsIDB4MSwgMHhjY2NjY2NjYywgMHgzZmY0Y2NjYy4sIHY4 X2ludDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwgMHhjY2NjLCAweGNjY2MsIDB4Y2NjYywgMHgz ZmY0LiwgdjE2X2ludDggPSAuMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAs IDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4Y2MsIDB4ZjQsIDB4M2YuLiIKLSAKLS1z ZXQgdmVjdG9yX3JlZ2lzdGVyM192ciAiLnVpbnQxMjggPSAweDAwMDAwMDAxMDAwMDAwMDEwMDAw MDAwMTAwMDAwMDAxLCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9 IC4weDEsIDB4MSwgMHgxLCAweDEuLCB2OF9pbnQxNiA9IC4weDAsIDB4MSwgMHgwLCAweDEsIDB4 MCwgMHgxLCAweDAsIDB4MS4sIHYxNl9pbnQ4ID0gLjB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAw eDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MS4uIgot KyAgICBzZXQgdmVjdG9yX3JlZ2lzdGVyMiAidWludDEyOCA9IDB4ZGVhZGJlZWZkZWFkYmVlZmRl YWRiZWVmZGVhZGJlZWYsIHYyX2RvdWJsZSA9IC4weDEsIDB4MS4sIHY0X2Zsb2F0ID0gLjB4MCwg MHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4ZGVhZGJlZWYsIDB4ZGVhZGJlZWYsIDB4ZGVh ZGJlZWYsIDB4ZGVhZGJlZWYuLCB2OF9pbnQxNiA9IC4weGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAw eGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZC4sIHYxNl9pbnQ4ID0gLjB4ZWYs IDB4YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4 YWQsIDB4ZGUsIDB4ZWYsIDB4YmUsIDB4YWQsIDB4ZGUuLiIKLSsKLSsgICAgc2V0IHZlY3Rvcl9y ZWdpc3RlcjJfdnIgInVpbnQxMjggPSAweGRlYWRiZWVmZGVhZGJlZWZkZWFkYmVlZmRlYWRiZWVm LCB2NF9mbG9hdCA9IC4weDAsIDB4MCwgMHgwLCAweDAuLCB2NF9pbnQzMiA9IC4weGRlYWRiZWVm LCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLCAweGRlYWRiZWVmLiwgdjhfaW50MTYgPSAuMHhiZWVm LCAweGRlYWQsIDB4YmVlZiwgMHhkZWFkLCAweGJlZWYsIDB4ZGVhZCwgMHhiZWVmLCAweGRlYWQu LCB2MTZfaW50OCA9IC4weGVmLCAweGJlLCAweGFkLCAweGRlLCAweGVmLCAweGJlLCAweGFkLCAw eGRlLCAweGVmLCAweGJlLCAweGFkLCAweGRlLCAweGVmLCAweGJlLCAweGFkLCAweGRlLi4iCi0r Ci0rICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIzICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAw MTAwMDAwMDAxMDAwMDAwMDEsIHYyX2RvdWJsZSA9IC4weDAsIDB4MC4sIHY0X2Zsb2F0ID0gLjB4 MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4MS4sIHY4X2lu dDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLiwgdjE2X2ludDgg PSAuMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwgMHgwLCAweDAs IDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLi4iCi0rCi0rICAgIHNldCB2ZWN0b3JfcmVnaXN0ZXIz X3ZyICIudWludDEyOCA9IDB4MDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDEsIHY0X2Zs b2F0ID0gLjB4MCwgMHgwLCAweDAsIDB4MC4sIHY0X2ludDMyID0gLjB4MSwgMHgxLCAweDEsIDB4 MS4sIHY4X2ludDE2ID0gLjB4MSwgMHgwLCAweDEsIDB4MCwgMHgxLCAweDAsIDB4MSwgMHgwLiwg djE2X2ludDggPSAuMHgxLCAweDAsIDB4MCwgMHgwLCAweDEsIDB4MCwgMHgwLCAweDAsIDB4MSwg MHgwLCAweDAsIDB4MCwgMHgxLCAweDAsIDB4MCwgMHgwLi4iCi0rfQotIAotIHNldCBmbG9hdF9y ZWdpc3RlciAiLnJhdyAweGRlYWRiZWVmZGVhZGJlZWYuIgotIAoKZGlmZiAtLWdpdCBhL2dkYi11 cHN0cmVhbS1wcGM2NGxlMDhvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwOG9mMTUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5MmZmM2IuLjAwMDAwMDAKLS0t IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUwOG9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1 NyArMCwwIEBACi1jb21taXQgNWI3NTdlNWRkYmQ5YWQyNTJkOWM1MTEwM2YxYWE1MmI0MWMyZTk0 NwotQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4KLURh dGU6ICAgVHVlIEZlYiA0IDE4OjMzOjA0IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBsaXR0 bGUtZW5kaWFuIGZpeGVzOiAzMi1iaXQgREZQIHBhcmFtZXRlcnMKLSAgICAKLSAgICBQYXNzaW5n IGEgMzItYml0IERGUCBpbiByZWdpc3RlciBuZWVkcyB0byB1c2UgdGhlIGxlYXN0LXNpZ25pZmlj YW50IHBhcnQKLSAgICBvZiB0aGUgcmVnaXN0ZXIuICBMaWtlIHdpdGggYSBwcmV2aW91cyBwYXRj aCB0aGF0IGFkZHJlc3NlZCB0aGUgc2FtZQotICAgIGlzc3VlIGZvciBzbWFsbCBzdHJ1Y3RzLCB0 aGlzIHBhdGNoIG1ha2VzIHN1cmUgdGhlIGFwcHJvcHJpYXRlIG9mZnNldAotICAgIGlzIHVzZWQg b24gbGl0dGxlLWVuZGlhbiBzeXN0ZW1zLgotICAgIAotICAgIGdkYi9DaGFuZ2VMb2c6Ci0gICAg Ci0gICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcpOiBVc2Ug Y29ycmVjdAotICAgIAlvZmZzZXQgb24gbGl0dGxlLWVuZGlhbiB3aGVuIHBhc3NpbmcgX0RlY2lt YWwzMi4KLSAgICAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdpc2Ug Zm9yIHJldHVybiB2YWx1ZXMuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFu Z2VMb2cKLSMjIC0xLDUgKzEsMTEgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1 d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHBwYy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9h YmlfcHVzaF9mcmVnKTogVXNlIGNvcnJlY3QKLSsJb2Zmc2V0IG9uIGxpdHRsZS1lbmRpYW4gd2hl biBwYXNzaW5nIF9EZWNpbWFsMzIuCi0rCShwcGM2NF9zeXN2X2FiaV9yZXR1cm5fdmFsdWVfYmFz ZSk6IExpa2V3aXNlIGZvciByZXR1cm4gdmFsdWVzLgotKwotKzIwMTQtMDItMDQgIFVscmljaCBX ZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSogcnM2MDAwLXRkZXAuYyAoZWZw cl9wc2V1ZG9fcmVnaXN0ZXJfcmVhZCk6IFVzZSBjb3JyZWN0IG9mZnNldAotIAlvZiB0aGUgb3Zl cmxhcHBlZCBGUCByZWdpc3RlciB3aXRoaW4gdGhlIFZTWCByZWdpc3RlciBvbiBsaXR0bGUtCi0g CWVuZGlhbiBwbGF0Zm9ybXMuCi0tLS0gYS9nZGIvcHBjLXN5c3YtdGRlcC5jCi0rKysgYi9nZGIv cHBjLXN5c3YtdGRlcC5jCi1AQCAtMTIzMiw3ICsxMjMyLDEwIEBAIHBwYzY0X3N5c3ZfYWJpX3B1 c2hfZnJlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAgICAgaWYgKGFyZ3Bvcy0+cmVn Y2FjaGUgJiYgYXJncG9zLT5mcmVnIDw9IDEzKQotIAl7Ci0gCSAgaW50IHJlZ251bSA9IHRkZXAt PnBwY19mcDBfcmVnbnVtICsgYXJncG9zLT5mcmVnOwotLQkgIGludCBvZmZzZXQgPSA4IC0gVFlQ RV9MRU5HVEggKHR5cGUpOwotKwkgIGludCBvZmZzZXQgPSAwOwotKwotKwkgIGlmIChnZGJhcmNo X2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHKQotKwkgICAgb2Zmc2V0ID0g OCAtIFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAJICByZWdjYWNoZV9jb29rZWRfd3JpdGVfcGFy dCAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLAotIAkJCQkgICAgICBvZmZzZXQsIFRZUEVfTEVO R1RIICh0eXBlKSwgdmFsKTsKLUBAIC0xNjQxLDcgKzE2NDQsMTAgQEAgcHBjNjRfc3lzdl9hYmlf cmV0dXJuX3ZhbHVlX2Jhc2UgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdHlwZSAq dmFsdHlwZSwKLSAgICAgICAmJiBUWVBFX0NPREUgKHZhbHR5cGUpID09IFRZUEVfQ09ERV9ERUNG TE9BVCkKLSAgICAgewotICAgICAgIGludCByZWdudW0gPSB0ZGVwLT5wcGNfZnAwX3JlZ251bSAr IDEgKyBpbmRleDsKLS0gICAgICBpbnQgb2Zmc2V0ID0gOCAtIFRZUEVfTEVOR1RIICh2YWx0eXBl KTsKLSsgICAgICBpbnQgb2Zmc2V0ID0gMDsKLSsKLSsgICAgICBpZiAoZ2RiYXJjaF9ieXRlX29y ZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRykKLSsJb2Zmc2V0ID0gOCAtIFRZUEVfTEVO R1RIICh2YWx0eXBlKTsKLSAKLSAgICAgICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSAJcmVnY2Fj aGVfY29va2VkX3dyaXRlX3BhcnQgKHJlZ2NhY2hlLCByZWdudW0sCgpkaWZmIC0tZ2l0IGEvZ2Ri LXVwc3RyZWFtLXBwYzY0bGUwOW9mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTA5b2Yx NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRmN2VkZC4uMDAwMDAwMAot LS0gYS9nZGItdXBzdHJlYW0tcHBjNjRsZTA5b2YxNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE0MCArMCwwIEBACi1jb21taXQgMGZmM2UwMWZkYzY3YTM4NDJlZTU0MjI0Y2YxOTdlOWE1NWYw YTc1MAotQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4K LURhdGU6ICAgVHVlIEZlYiA0IDE4OjM0OjE5IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBs aXR0bGUtZW5kaWFuIGZpeGVzOiAxMjgtYml0IERGUCBwYXJhbWV0ZXJzIC8gcmVnaXN0ZXJzCi0g ICAgCi0gICAgVGhlIHBvd2VycGM2NGxlLWxpbnV4IEFCSSBzcGVjaWZpZXMgdGhhdCB3aGVuIGEg MTI4LWJpdCBERlAgdmFsdWUgaXMKLSAgICBwYXNzZWQgaW4gYSBwYWlyIG9mIGZsb2F0aW5nLXBv aW50IHJlZ2lzdGVycywgdGhlIGZpcnN0IHJlZ2lzdGVyIGhvbGRzCi0gICAgdGhlIG1vc3Qtc2ln bmlmaWNhbnQgcGFydCBvZiB0aGUgdmFsdWUuICBUaGlzIGlzIGFzIG9wcG9zZWQgdG8gdGhlCi0g ICAgdXN1YWwgcnVsZSBvbiBsaXR0bGUtZW5kaWFuIHN5c3RlbXMsIHdoZXJlIHRoZSBmaXJzdCBy ZWdpc3RlciB3b3VsZAotICAgIGhvbGQgdGhlIGxlYXN0LXNpZ25pZmljYW50IHBhcnQuCi0gICAg Ci0gICAgVGhpcyBhZmZlY3RzIHR3byBwbGFjZXMgaW4gR0RCLCB0aGUgcmVhZC93cml0ZSByb3V0 aW5lcyBmb3IgdGhlCi0gICAgMTI4LWJpdCBERlAgcHNldWRvLXJlZ2lzdGVycywgYW5kIHRoZSBm dW5jdGlvbiBjYWxsIC8gcmV0dXJuCi0gICAgc2VxdWVuY2UuICBGb3IgdGhlIGZvcm1lciwgY3Vy cmVudCBjb2RlIGFscmVhZHkgZGlzdGluZ3Vpc2hlcwotICAgIGJldHdlZW4gYmlnLSBhbmQgbGl0 dGxlLWVuZGlhbiB0YXJnZXRzLCBidXQgZ2V0cyB0aGUgbGF0dGVyCi0gICAgd3JvbmcuICBUaGlz IGlzIHByZXN1bWFibHkgYmVjYXVzZSAqR0NDKiBhbHNvIGdvdCBpdCB3cm9uZywKLSAgICBhbmQg R0RCIG1hdGNoZXMgdGhlIG9sZCBHQ0MgYmVoYXZpb3IuICBCdXQgR0NDIGlzIG5vdyBmaXhlZDoK LSAgICBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxMy0xMS9tc2cwMjE0NS5o dG1sCi0gICAgc28gR0RCIG5lZWRzIHRvIGJlIGZpeGVkIHRvby4gIChPbGQgY29kZSBzaG91bGRu J3QgcmVhbGx5IGJlCi0gICAgYW4gaXNzdWUgc2luY2UgdGhlcmUgaXMgbm8gY29kZSAib3V0IHRo ZXJlIiBzbyBmYXIgdGhhdCB1c2VzCi0gICAgZGZwMTI4IG9uIGxpdHRsZS1lbmRpYW4gLi4uKQot ICAgIAotICAgIGdkYi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogcHBjLXN5c3YtdGRlcC5jIChw cGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcpOiBVc2UgY29ycmVjdCBvcmRlcgotICAgIAl3aXRoaW4g YSByZWdpc3RlciBwYWlyIGhvbGRpbmcgYSBERlAgMTI4LWJpdCB2YWx1ZSBvbiBsaXR0bGUtZW5k aWFuLgotICAgIAkocHBjNjRfc3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UpOiBMaWtld2lzZS4K LSAgICAJKiByczYwMDAtdGRlcC5jIChkZnBfcHNldWRvX3JlZ2lzdGVyX3JlYWQpOiBMaWtld2lz ZS4KLSAgICAJKGRmcF9wc2V1ZG9fcmVnaXN0ZXJfd3JpdGUpOiBMaWtld2lzZS4KLSAgICAKLSAg ICBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKLSAgICAKLSAgICAJKiBnZGIuYXJjaC9wb3dlcnBj LWQxMjgtcmVncy5leHA6IEVuYWJsZSBvbiBwb3dlcnBjNjQqLSouCi0KLSMjIyBhL2dkYi9DaGFu Z2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTMgQEAKLSAyMDE0LTAyLTA0 ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHBwYy1zeXN2 LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogVXNlIGNvcnJlY3Qgb3JkZXIKLSsJ d2l0aGluIGEgcmVnaXN0ZXIgcGFpciBob2xkaW5nIGEgREZQIDEyOC1iaXQgdmFsdWUgb24gbGl0 dGxlLWVuZGlhbi4KLSsJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTogTGlrZXdp c2UuCi0rCSogcnM2MDAwLXRkZXAuYyAoZGZwX3BzZXVkb19yZWdpc3Rlcl9yZWFkKTogTGlrZXdp c2UuCi0rCShkZnBfcHNldWRvX3JlZ2lzdGVyX3dyaXRlKTogTGlrZXdpc2UuCi0rCi0rMjAxNC0w Mi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KLSsKLSAJKiBwcGMt c3lzdi10ZGVwLmMgKHBwYzY0X3N5c3ZfYWJpX3B1c2hfZnJlZyk6IFVzZSBjb3JyZWN0Ci0gCW9m ZnNldCBvbiBsaXR0bGUtZW5kaWFuIHdoZW4gcGFzc2luZyBfRGVjaW1hbDMyLgotIAkocHBjNjRf c3lzdl9hYmlfcmV0dXJuX3ZhbHVlX2Jhc2UpOiBMaWtld2lzZSBmb3IgcmV0dXJuIHZhbHVlcy4K LS0tLSBhL2dkYi9wcGMtc3lzdi10ZGVwLmMKLSsrKyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKLUBA IC0xMjcwLDkgKzEyNzAsMTEgQEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKLSAgICAgICBpZiAoYXJncG9zLT5yZWdjYWNoZSAmJiBhcmdwb3MtPmZy ZWcgPD0gMTIpCi0gCXsKLSAJICBpbnQgcmVnbnVtID0gdGRlcC0+cHBjX2ZwMF9yZWdudW0gKyBh cmdwb3MtPmZyZWc7Ci0rCSAgaW50IGxvcGFydCA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJj aCkgPT0gQkZEX0VORElBTl9CSUcgPyA4IDogMDsKLSsJICBpbnQgaGlwYXJ0ID0gZ2RiYXJjaF9i eXRlX29yZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRyA/IDAgOiA4OwotIAotLQkgIHJl Z2NhY2hlX2Nvb2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtLCB2YWwpOwotLQkg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAoYXJncG9zLT5yZWdjYWNoZSwgcmVnbnVtICsgMSwgdmFs ICsgOCk7Ci0rCSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChhcmdwb3MtPnJlZ2NhY2hlLCByZWdu dW0sIHZhbCArIGhpcGFydCk7Ci0rCSAgcmVnY2FjaGVfY29va2VkX3dyaXRlIChhcmdwb3MtPnJl Z2NhY2hlLCByZWdudW0gKyAxLCB2YWwgKyBsb3BhcnQpOwotIAl9Ci0gCi0gICAgICAgYXJncG9z LT5mcmVnICs9IDI7Ci1AQCAtMTY4NSwxNiArMTY4NywxOCBAQCBwcGM2NF9zeXN2X2FiaV9yZXR1 cm5fdmFsdWVfYmFzZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICp2YWx0 eXBlLAotICAgICAgICYmIFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FU KQotICAgICB7Ci0gICAgICAgaW50IHJlZ251bSA9IHRkZXAtPnBwY19mcDBfcmVnbnVtICsgMiAr IDIgKiBpbmRleDsKLSsgICAgICBpbnQgbG9wYXJ0ID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJh cmNoKSA9PSBCRkRfRU5ESUFOX0JJRyA/IDggOiAwOwotKyAgICAgIGludCBoaXBhcnQgPSBnZGJh cmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpID09IEJGRF9FTkRJQU5fQklHID8gMCA6IDg7Ci0gCi0g ICAgICAgaWYgKHdyaXRlYnVmICE9IE5VTEwpCi0gCXsKLS0JICByZWdjYWNoZV9jb29rZWRfd3Jp dGUgKHJlZ2NhY2hlLCByZWdudW0sIHdyaXRlYnVmKTsKLS0JICByZWdjYWNoZV9jb29rZWRfd3Jp dGUgKHJlZ2NhY2hlLCByZWdudW0gKyAxLCB3cml0ZWJ1ZiArIDgpOwotKwkgIHJlZ2NhY2hlX2Nv b2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgd3JpdGVidWYgKyBoaXBhcnQpOwotKwkgIHJl Z2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSArIDEsIHdyaXRlYnVmICsgbG9w YXJ0KTsKLSAJfQotICAgICAgIGlmIChyZWFkYnVmICE9IE5VTEwpCi0gCXsKLS0JICByZWdjYWNo ZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVhZGJ1Zik7Ci0tCSAgcmVnY2FjaGVf Y29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0gKyAxLCByZWFkYnVmICsgOCk7Ci0rCSAgcmVn Y2FjaGVfY29va2VkX3JlYWQgKHJlZ2NhY2hlLCByZWdudW0sIHJlYWRidWYgKyBoaXBhcnQpOwot KwkgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgcmVnbnVtICsgMSwgcmVhZGJ1ZiAr IGxvcGFydCk7Ci0gCX0KLSAgICAgICByZXR1cm4gMTsKLSAgICAgfQotLS0tIGEvZ2RiL3JzNjAw MC10ZGVwLmMKLSsrKyBiL2dkYi9yczYwMDAtdGRlcC5jCi1AQCAtMjY3MiwxMCArMjY3MiwxMCBA QCBkZnBfcHNldWRvX3JlZ2lzdGVyX3JlYWQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1 Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotICAgZWxzZQotICAgICB7Ci0gICAgICAgc3RhdHVzID0g cmVnY2FjaGVfcmF3X3JlYWQgKHJlZ2NhY2hlLCB0ZGVwLT5wcGNfZnAwX3JlZ251bSArCi0tCQkJ CSAgMiAqIHJlZ19pbmRleCArIDEsIGJ1ZmZlciArIDgpOwotKwkJCQkgIDIgKiByZWdfaW5kZXgg KyAxLCBidWZmZXIpOwotICAgICAgIGlmIChzdGF0dXMgPT0gUkVHX1ZBTElEKQotIAlzdGF0dXMg PSByZWdjYWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsKLS0J CQkJICAgIDIgKiByZWdfaW5kZXgsIGJ1ZmZlcik7Ci0rCQkJCSAgICAyICogcmVnX2luZGV4LCBi dWZmZXIgKyA4KTsKLSAgICAgfQotIAotICAgcmV0dXJuIHN0YXR1czsKLUBAIC0yNzAxLDkgKzI3 MDEsOSBAQCBkZnBfcHNldWRvX3JlZ2lzdGVyX3dyaXRlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHJl Z2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBwY19mcDBfcmVnbnVtICsKLS0JCQkg IDIgKiByZWdfaW5kZXggKyAxLCBidWZmZXIgKyA4KTsKLSsJCQkgIDIgKiByZWdfaW5kZXggKyAx LCBidWZmZXIpOwotICAgICAgIHJlZ2NhY2hlX3Jhd193cml0ZSAocmVnY2FjaGUsIHRkZXAtPnBw Y19mcDBfcmVnbnVtICsKLS0JCQkgIDIgKiByZWdfaW5kZXgsIGJ1ZmZlcik7Ci0rCQkJICAyICog cmVnX2luZGV4LCBidWZmZXIgKyA4KTsKLSAgICAgfQotIH0KLSAKLSMjIyBhL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsNSArMSw5 IEBACi0gMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgot IAotKwkqIGdkYi5hcmNoL3Bvd2VycGMtZDEyOC1yZWdzLmV4cDogRW5hYmxlIG9uIHBvd2VycGM2 NCotKi4KLSsKLSsyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5j b20+Ci0rCi0gCSogZ2RiLmFyY2gvdnN4LXJlZ3MuZXhwOiBDaGVjayB0YXJnZXQgZW5kaWFubmVz cy4gIFByb3ZpZGUgdmFyaWFudHMKLSAJb2YgdGhlIHRlc3QgcGF0dGVybnMgZm9yIHVzZSBvbiBs aXR0bGUtZW5kaWFuIHN5c3RlbXMuCi0gCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3Bv d2VycGMtZDEyOC1yZWdzLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9wb3dlcnBj LWQxMjgtcmVncy5leHAKLUBAIC0yMCw3ICsyMCw3IEBACi0gCi0gIyBUZXN0Y2FzZSBmb3IgcHBj IGRlY2ltYWwxMjggcHNldWRvLXJlZ2lzdGVycy4KLSAKLS1pZiAhW2lzdGFyZ2V0ICJwb3dlcnBj NjQtKiJdIHRoZW4gewotK2lmICFbaXN0YXJnZXQgInBvd2VycGM2NCotKiJdIHRoZW4gewotICAg ICB2ZXJib3NlICJTa2lwcGluZyBwb3dlcnBjIERlY2ltYWwxMjggcHNldWRvLXJlZ2lzdGVycyB0 ZXN0Y2FzZS4iCi0gICAgIHJldHVybgotIH0KCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBj NjRsZTEwb2YxNS5wYXRjaCBiL2dkYi11cHN0cmVhbS1wcGM2NGxlMTBvZjE1LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTMwN2Q5Li4wMDAwMDAwCi0tLSBhL2dkYi11cHN0 cmVhbS1wcGM2NGxlMTBvZjE1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU5ICswLDAgQEAK LWNvbW1pdCBjZDQ1M2NkMDcyMDA0ZDI2ZWRlMzU1Yjg1MGIzODMxYWNmZmFlZGRkCi1BdXRob3I6 IFVscmljaCBXZWlnYW5kIDx1bHJpY2gud2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBUdWUg RmViIDQgMTg6Mzg6NTYgMjAxNCArMDEwMAotCi0gICAgUG93ZXJQQzY0IEVMRnYyIEFCSTogYmFz ZSBzdXBwb3J0Ci0gICAgCi0gICAgVGhpcyBpcyB0aGUgZmlyc3QgcGF0Y2ggb2YgYSBzZXJpZXMg dG8gaW1wbGVtZW50IHN1cHBvcnQgZm9yIHRoZQotICAgIFBvd2VyUEMgRUxGdjIgQUJJLiAgV2hp bGUgcG93ZXJwYzY0bGUtbGludXggd2lsbCB1c2UgRUxGdjIsIGFuZAotICAgIHRoZSBleGlzdGlu ZyBwb3dlcnBjNjQtbGludXggY29kZSB3aWxsIGNvbnRpbnVlIHRvIHVzZSBFTEZ2MSwKLSAgICBp biB0aGVvcnkgRUxGdjIgaXMgYWxzbyBkZWZpbmVkIGZvciBiaWctZW5kaWFuIHN5c3RlbXMgKGFu ZAotICAgIEVMRnYxIHdhcyBhbHNvIGRlZmluZWQgZm9yIGxpdHRsZS1lbmRpYW4gc3lzdGVtcyku Ci0gICAgCi0gICAgVGhlcmVmb3JlIHRoaXMgcGF0Y2ggYWRkcyBhIG5ldyB0ZGVwLT5lbGZfYWJp IHZhcmlhYmxlIHRvIGRlY2lkZQotICAgIHdoaWNoIEFCSSB2ZXJzaW9uIHRvIHVzZS4gIFRoaXMg aXMgZGV0ZWN0ZWQgZnJvbSB0aGUgRUxGIGhlYWRlcgotICAgIGVfZmxhZ3MgdmFsdWU7IGlmIHRo aXMgaXMgbm90IHByZXNlbnQsIHdlIGRlZmF1bHQgdG8gRUxGdjIgb24KLSAgICBsaXR0bGUtZW5k aWFuIGFuZCBFTEZ2MSBvdGhlcndpc2UuCi0gICAgCi0gICAgVGhpcyBwYXRjaCBkb2VzIG5vdCB5 ZXQgaW50cm9kdWNlIGFueSBhY3R1YWwgZGlmZmVyZW5jZSBpbiBHREIncwotICAgIGhhbmRsaW5n IG9mIHRoZSB0d28gQUJJcy4gIFRob3NlIHdpbGwgYmUgYWRkZWQgYnkgdGhlIHJlbWFpbmRlcgot ICAgIG9mIHRoaXMgcGF0Y2ggc2VyaWVzLgotICAgIAotICAgIEZvciBhbiBvdmVydmlldyBvZiB0 aGUgY2hhbmdlcyBpbiBFTEZ2MiwgaGF2ZSBhIGxvb2sgYXQgdGhlCi0gICAgY29tbWVudHMgaW4g dGhlIHBhdGNoIHNlcmllcyB0aGF0IGFkZGVkIEVMRnYyIHRvIEdDQywgc3RhcnRpbmcgYXQ6Ci0g ICAgaHR0cDovL2djYy5nbnUub3JnL21sL2djYy1wYXRjaGVzLzIwMTMtMTEvbXNnMDExNDQuaHRt bAotICAgIAotICAgIGdkYi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogcHBjLXRkZXAuaCAoZW51 bSBwb3dlcnBjX2VsZl9hYmkpOiBOZXcgZGF0YSB0eXBlLgotICAgIAkoc3RydWN0IGdkYmFyY2hf dGRlcCk6IE5ldyBtZW1iZXIgZWxmX2FiaS4KLSAgICAKLSAgICAJKiByczYwMDAtdGRlcC5jOiBJ bmNsdWRlICJlbGYvcHBjNjQuaCIuCi0gICAgCShyczYwMDBfZ2RiYXJjaF9pbml0KTogRGV0ZWN0 IEVMRiBBQkkgdmVyc2lvbi4KLQotIyMjIGEvZ2RiL0NoYW5nZUxvZwotIyMjIGIvZ2RiL0NoYW5n ZUxvZwotIyMgLTEsNSArMSwxMyBAQAotIDIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3 ZWlnYW5kQGRlLmlibS5jb20+Ci0gCi0rCSogcHBjLXRkZXAuaCAoZW51bSBwb3dlcnBjX2VsZl9h YmkpOiBOZXcgZGF0YSB0eXBlLgotKwkoc3RydWN0IGdkYmFyY2hfdGRlcCk6IE5ldyBtZW1iZXIg ZWxmX2FiaS4KLSsKLSsJKiByczYwMDAtdGRlcC5jOiBJbmNsdWRlICJlbGYvcHBjNjQuaCIuCi0r CShyczYwMDBfZ2RiYXJjaF9pbml0KTogRGV0ZWN0IEVMRiBBQkkgdmVyc2lvbi4KLSsKLSsyMDE0 LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotIAkqIHBw Yy1zeXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9mcmVnKTogVXNlIGNvcnJlY3Qgb3Jk ZXIKLSAJd2l0aGluIGEgcmVnaXN0ZXIgcGFpciBob2xkaW5nIGEgREZQIDEyOC1iaXQgdmFsdWUg b24gbGl0dGxlLWVuZGlhbi4KLSAJKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlKTog TGlrZXdpc2UuCi1JbmRleDogZ2RiLTcuNy4xL2dkYi9wcGMtdGRlcC5oCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNy4xLm9yaWcvZ2RiL3BwYy10ZGVwLmgJMjAxNC0wNS0wOSAxOToyMzo0MC44OTIy NDgwNjQgKzAyMDAKLSsrKyBnZGItNy43LjEvZ2RiL3BwYy10ZGVwLmgJMjAxNC0wNS0wOSAxOToy Mzo0Mi4zNDYyNDgyNDYgKzAyMDAKLUBAIC0xODIsNiArMTgyLDE1IEBAIGV4dGVybiB2b2lkIHBw Y19jb2xsZWN0X3ZzeHJlZ3NldCAoY29uc3QKLSAKLSAvKiBQcml2YXRlIGRhdGEgdGhhdCB0aGlz IG1vZHVsZSBhdHRhY2hlcyB0byBzdHJ1Y3QgZ2RiYXJjaC4gICovCi0gCi0rLyogRUxGIEFCSSB2 ZXJzaW9uIHVzZWQgYnkgdGhlIGluZmVyaW9yLiAgKi8KLStlbnVtIHBvd2VycGNfZWxmX2FiaQot K3sKLSsgIFBPV0VSUENfRUxGX0FVVE8sCi0rICBQT1dFUlBDX0VMRl9WMSwKLSsgIFBPV0VSUENf RUxGX1YyLAotKyAgUE9XRVJQQ19FTEZfTEFTVAotK307Ci0rCi0gLyogVmVjdG9yIEFCSSB1c2Vk IGJ5IHRoZSBpbmZlcmlvci4gICovCi0gZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkKLSB7Ci1AQCAt MTk3LDYgKzIwNiw4IEBAIHN0cnVjdCBnZGJhcmNoX3RkZXAKLSAgICAgaW50IHdvcmRzaXplOwkJ LyogU2l6ZSBpbiBieXRlcyBvZiBmaXhlZC1wb2ludCB3b3JkLiAgKi8KLSAgICAgaW50IHNvZnRf ZmxvYXQ7CQkvKiBBdm9pZCBGUCByZWdpc3RlcnMgZm9yIGFyZ3VtZW50cz8gICovCi0gCi0rICAg IGVudW0gcG93ZXJwY19lbGZfYWJpIGVsZl9hYmk7CS8qIEVMRiBBQkkgdmVyc2lvbi4gICovCi0r Ci0gICAgIC8qIEhvdyB0byBwYXNzIHZlY3RvciBhcmd1bWVudHMuICBOZXZlciBzZXQgdG8gQVVU TyBvciBMQVNULiAgKi8KLSAgICAgZW51bSBwb3dlcnBjX3ZlY3Rvcl9hYmkgdmVjdG9yX2FiaTsK LSAKLUluZGV4OiBnZGItNy43LjEvZ2RiL3JzNjAwMC10ZGVwLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy43LjEub3JpZy9nZGIvcnM2MDAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5OjIzOjQwLjg5NDI0 ODA2NCArMDIwMAotKysrIGdkYi03LjcuMS9nZGIvcnM2MDAwLXRkZXAuYwkyMDE0LTA1LTA5IDE5 OjIzOjU3Ljk3NDI1MDE5NyArMDIwMAotQEAgLTQ4LDYgKzQ4LDcgQEAKLSAKLSAjaW5jbHVkZSAi ZWxmLWJmZC5oIgotICNpbmNsdWRlICJlbGYvcHBjLmgiCi0rI2luY2x1ZGUgImVsZi9wcGM2NC5o IgotIAotICNpbmNsdWRlICJzb2xpYi1zdnI0LmgiCi0gI2luY2x1ZGUgInBwYy10ZGVwLmgiCi1A QCAtMzU1NCw2ICszNTU1LDcgQEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hf aW5mbwotICAgZW51bSBhdXRvX2Jvb2xlYW4gc29mdF9mbG9hdF9mbGFnID0gcG93ZXJwY19zb2Z0 X2Zsb2F0X2dsb2JhbDsKLSAgIGludCBzb2Z0X2Zsb2F0OwotICAgZW51bSBwb3dlcnBjX3ZlY3Rv cl9hYmkgdmVjdG9yX2FiaSA9IHBvd2VycGNfdmVjdG9yX2FiaV9nbG9iYWw7Ci0rICBlbnVtIHBv d2VycGNfZWxmX2FiaSBlbGZfYWJpID0gUE9XRVJQQ19FTEZfQVVUTzsKLSAgIGludCBoYXZlX2Zw dSA9IDEsIGhhdmVfc3BlID0gMCwgaGF2ZV9tcSA9IDAsIGhhdmVfYWx0aXZlYyA9IDAsIGhhdmVf ZGZwID0gMCwKLSAgICAgICBoYXZlX3ZzeCA9IDA7Ci0gICBpbnQgdGRlc2Nfd29yZHNpemUgPSAt MTsKLUBAIC0zODYwLDYgKzM4NjIsMjEgQEAgcnM2MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdk YmFyY2hfaW5mbwotICAgICB9Ci0gCi0gI2lmZGVmIEhBVkVfRUxGCi0rICBpZiAoZnJvbV9lbGZf ZXhlYykKLSsgICAgewotKyAgICAgIHN3aXRjaCAoZWxmX2VsZmhlYWRlciAoaW5mby5hYmZkKS0+ ZV9mbGFncyAmIEVGX1BQQzY0X0FCSSkKLSsJewotKwljYXNlIDE6Ci0rCSAgZWxmX2FiaSA9IFBP V0VSUENfRUxGX1YxOwotKwkgIGJyZWFrOwotKwljYXNlIDI6Ci0rCSAgZWxmX2FiaSA9IFBPV0VS UENfRUxGX1YyOwotKwkgIGJyZWFrOwotKwlkZWZhdWx0OgotKwkgIGJyZWFrOwotKwl9Ci0rICAg IH0KLSsKLSAgIGlmIChzb2Z0X2Zsb2F0X2ZsYWcgPT0gQVVUT19CT09MRUFOX0FVVE8gJiYgZnJv bV9lbGZfZXhlYykKLSAgICAgewotICAgICAgIHN3aXRjaCAoYmZkX2VsZl9nZXRfb2JqX2F0dHJf aW50IChpbmZvLmFiZmQsIE9CSl9BVFRSX0dOVSwKLUBAIC0zODk2LDYgKzM5MTMsMjEgQEAgcnM2 MDAwX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbwotICAgICB9Ci0gI2VuZGlmCi0g Ci0rICAvKiBBdCB0aGlzIHBvaW50LCB0aGUgb25seSBzdXBwb3J0ZWQgRUxGLWJhc2VkIDY0LWJp dCBsaXR0bGUtZW5kaWFuCi0rICAgICBvcGVyYXRpbmcgc3lzdGVtIGlzIEdOVS9MaW51eCwgYW5k IHRoaXMgdXNlcyB0aGUgRUxGdjIgQUJJIGJ5Ci0rICAgICBkZWZhdWx0LiAgQWxsIG90aGVyIHN1 cHBvcnRlZCBFTEYtYmFzZWQgb3BlcmF0aW5nIHN5c3RlbXMgdXNlIHRoZQotKyAgICAgRUxGdjEg QUJJIGJ5IGRlZmF1bHQuICBUaGVyZWZvcmUsIGlmIHRoZSBBQkkgbWFya2VyIGlzIG1pc3Npbmcs Ci0rICAgICBlLmcuIGJlY2F1c2Ugd2UgcnVuIGEgbGVnYWN5IGJpbmFyeSwgb3IgaGF2ZSBhdHRh Y2hlZCB0byBhIHByb2Nlc3MKLSsgICAgIGFuZCBoYXZlIG5vdCBmb3VuZCBhbnkgYXNzb2NpYXRl ZCBiaW5hcnkgZmlsZSwgc2V0IHRoZSBkZWZhdWx0Ci0rICAgICBhY2NvcmRpbmcgdG8gdGhpcyBo ZXVyaXN0aWMuICAqLwotKyAgaWYgKGVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfQVVUTykKLSsgICAg ewotKyAgICAgIGlmICh3b3Jkc2l6ZSA9PSA4ICYmIGluZm8uYnl0ZV9vcmRlciA9PSBCRkRfRU5E SUFOX0xJVFRMRSkKLSsgICAgICAgIGVsZl9hYmkgPSBQT1dFUlBDX0VMRl9WMjsKLSsgICAgICBl bHNlCi0rICAgICAgICBlbGZfYWJpID0gUE9XRVJQQ19FTEZfVjE7Ci0rICAgIH0KLSsKLSAgIGlm IChzb2Z0X2Zsb2F0X2ZsYWcgPT0gQVVUT19CT09MRUFOX1RSVUUpCi0gICAgIHNvZnRfZmxvYXQg PSAxOwotICAgZWxzZSBpZiAoc29mdF9mbG9hdF9mbGFnID09IEFVVE9fQk9PTEVBTl9GQUxTRSkK LUBAIC0zOTM4LDYgKzM5NzAsOCBAQCByczYwMDBfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJj aF9pbmZvCi0gICAgICAgICAgbWVhbmluZ2Z1bCwgYmVjYXVzZSA2NC1iaXQgQ1BVcyBjYW4gcnVu IGluIDMyLWJpdCBtb2RlLiAgU28sIHBlcmZvcm0KLSAgICAgICAgICBzZXBhcmF0ZSB3b3JkIHNp emUgY2hlY2suICAqLwotICAgICAgIHRkZXAgPSBnZGJhcmNoX3RkZXAgKGFyY2hlcy0+Z2RiYXJj aCk7Ci0rICAgICAgaWYgKHRkZXAgJiYgdGRlcC0+ZWxmX2FiaSAhPSBlbGZfYWJpKQotKwljb250 aW51ZTsKLSAgICAgICBpZiAodGRlcCAmJiB0ZGVwLT5zb2Z0X2Zsb2F0ICE9IHNvZnRfZmxvYXQp Ci0gCWNvbnRpbnVlOwotICAgICAgIGlmICh0ZGVwICYmIHRkZXAtPnZlY3Rvcl9hYmkgIT0gdmVj dG9yX2FiaSkKLUBAIC0zOTYwLDYgKzM5OTQsNyBAQCByczYwMDBfZ2RiYXJjaF9pbml0IChzdHJ1 Y3QgZ2RiYXJjaF9pbmZvCi0gCi0gICB0ZGVwID0gWENBTExPQyAoMSwgc3RydWN0IGdkYmFyY2hf dGRlcCk7Ci0gICB0ZGVwLT53b3Jkc2l6ZSA9IHdvcmRzaXplOwotKyAgdGRlcC0+ZWxmX2FiaSA9 IGVsZl9hYmk7Ci0gICB0ZGVwLT5zb2Z0X2Zsb2F0ID0gc29mdF9mbG9hdDsKLSAgIHRkZXAtPnZl Y3Rvcl9hYmkgPSB2ZWN0b3JfYWJpOwotIAoKZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS1wcGM2 NGxlMTFvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMW9mMTUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkYmQ3YWIuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3Ry ZWFtLXBwYzY0bGUxMW9mMTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAot Y29tbWl0IGQ0MDk0YjZhODg4M2FlNDgxYzc2NDRjNWEyMTAyNTRlZmU5MmU5YWQKLUF1dGhvcjog VWxyaWNoIFdlaWdhbmQgPHVscmljaC53ZWlnYW5kQGRlLmlibS5jb20+Ci1EYXRlOiAgIFR1ZSBG ZWIgNCAxODo0MDoxNiAyMDE0ICswMTAwCi0KLSAgICBQb3dlclBDNjQgRUxGdjIgQUJJOiBubyBm dW5jdGlvbiBkZXNjcmlwdG9ycwotICAgIAotICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgbW9zdCBz aWduaWZpY2FudCBkaWZmZXJlbmNlIHdpdGggdGhlIEVMRnYyIEFCSToKLSAgICB3ZSBubyBsb25n ZXIgdXNlIGZ1bmN0aW9uIGRlc2NyaXB0b3JzLiAgVGhlIHBhdGNoIGNvbnNpc3RzIG1vc3RseQot ICAgIG9mIHN3aXRjaGluZyBvZmYgY29kZSB0byBkZWFsIHdpdGggZGVzY3JpcHRvcnMgOi0pCi0g ICAgCi0gICAgSW4gYWRkaXRpb24sIHdoZW4gY2FsbGluZyBhbiBpbmZlcmlvciBmdW5jdGlvbiwg d2Ugbm8gbG9uZ2VyIG5lZWQKLSAgICB0byBwcm92aWRlIGl0cyBUT0MgaW4gcjIuICBJbnN0ZWFk LCBFTEZ2MiBjb2RlIGV4cGVjdHMgdG8gYmUgY2FsbGVkCi0gICAgd2l0aCByMTIgcG9pbnRpbmcg dG8gdGhlIGNvZGUgYWRkcmVzcyBpdHNlbGYuCi0gICAgCi0gICAgZ2RiL0NoYW5nZUxvZzoKLSAg ICAKLSAgICAJKiBwcGMtbGludXgtdGRlcC5jIChwcGNfbGludXhfaW5pdF9hYmkpOiBPbmx5IGNh bGwKLSAgICAJc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgYW5kCi0gICAg CXNldF9nZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCBmb3IgRUxGdjEuCi0gICAgCSog cHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtKTogT25seSBoYW5kbGUK LSAgICAJZnVuY3Rpb24gZGVzY3JpcHRvcnMgb24gRUxGdjEuCi0gICAgCShwcGM2NF9zeXN2X2Fi aV9wdXNoX2R1bW15X2NhbGwpOiBMaWtld2lzZS4gIE9uIEVMRnYyLAotICAgIAlzZXQgdXAgcjEy IGF0IGZ1bmN0aW9uIGVudHJ5LgotCi0jIyMgYS9nZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hh bmdlTG9nCi0jIyAtMSw1ICsxLDE1IEBACi0gMjAxNC0wMi0wNCAgVWxyaWNoIFdlaWdhbmTCoCA8 dXdlaWdhbmRAZGUuaWJtLmNvbT4KLSAKLSsJKiBwcGMtbGludXgtdGRlcC5jIChwcGNfbGludXhf aW5pdF9hYmkpOiBPbmx5IGNhbGwKLSsJc2V0X2dkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIgYW5kCi0rCXNldF9nZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCBmb3IgRUxG djEuCi0rCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtKTogT25s eSBoYW5kbGUKLSsJZnVuY3Rpb24gZGVzY3JpcHRvcnMgb24gRUxGdjEuCi0rCShwcGM2NF9zeXN2 X2FiaV9wdXNoX2R1bW15X2NhbGwpOiBMaWtld2lzZS4gIE9uIEVMRnYyLAotKwlzZXQgdXAgcjEy IGF0IGZ1bmN0aW9uIGVudHJ5LgotKwotKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3 ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSogcHBjLXRkZXAuaCAoZW51bSBwb3dlcnBjX2VsZl9h YmkpOiBOZXcgZGF0YSB0eXBlLgotIAkoc3RydWN0IGdkYmFyY2hfdGRlcCk6IE5ldyBtZW1iZXIg ZWxmX2FiaS4KLSAKLS0tLSBhL2dkYi9wcGMtbGludXgtdGRlcC5jCi0rKysgYi9nZGIvcHBjLWxp bnV4LXRkZXAuYwotQEAgLTEzMzksMTMgKzEzMzksMTYgQEAgcHBjX2xpbnV4X2luaXRfYWJpIChz dHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sCi0gICAKLSAgIGlmICh0ZGVwLT53b3Jkc2l6ZSA9PSA4 KQotICAgICB7Ci0tICAgICAgLyogSGFuZGxlIFBQQyBHTlUvTGludXggNjQtYml0IGZ1bmN0aW9u IHBvaW50ZXJzICh3aGljaCBhcmUgcmVhbGx5Ci0tCSBmdW5jdGlvbiBkZXNjcmlwdG9ycykuICAq LwotLSAgICAgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyCi0tCShnZGJh cmNoLCBwcGM2NF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkcik7Ci0rICAgICAgaWYgKHRkZXAt PmVsZl9hYmkgPT0gUE9XRVJQQ19FTEZfVjEpCi0rCXsKLSsJICAvKiBIYW5kbGUgUFBDIEdOVS9M aW51eCA2NC1iaXQgZnVuY3Rpb24gcG9pbnRlcnMgKHdoaWNoIGFyZSByZWFsbHkKLSsJICAgICBm dW5jdGlvbiBkZXNjcmlwdG9ycykuICAqLwotKwkgIHNldF9nZGJhcmNoX2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyCi0rCSAgICAoZ2RiYXJjaCwgcHBjNjRfY29udmVydF9mcm9tX2Z1bmNfcHRy X2FkZHIpOwotIAotLSAgICAgIHNldF9nZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCAo Z2RiYXJjaCwKLS0JCQkJCSAgICBwcGM2NF9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwpOwotKwkg IHNldF9nZGJhcmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbAotKwkgICAgKGdkYmFyY2gsIHBw YzY0X2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbCk7Ci0rCX0KLSAKLSAgICAgICAvKiBTaGFyZWQg bGlicmFyeSBoYW5kbGluZy4gICovCi0gICAgICAgc2V0X2dkYmFyY2hfc2tpcF90cmFtcG9saW5l X2NvZGUgKGdkYmFyY2gsIHBwYzY0X3NraXBfdHJhbXBvbGluZV9jb2RlKTsKLS0tLSBhL2dkYi9w cGMtc3lzdi10ZGVwLmMKLSsrKyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKLUBAIC0xMzUyLDggKzEz NTIsOSBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKLSAJICB3b3JkID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbCk7Ci0gCi0gCSAgLyogQ29udmVy dCBhbnkgZnVuY3Rpb24gY29kZSBhZGRyZXNzZXMgaW50byBkZXNjcmlwdG9ycy4gICovCi0tCSAg aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BUUgotLQkgICAgICB8fCBUWVBFX0NP REUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCi0rCSAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9X RVJQQ19FTEZfVjEKLSsJICAgICAgJiYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1BU UgotKwkJICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpKQotIAkgICAgewot IAkgICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUKLSAJCT0gY2hlY2tfdHlwZWRlZiAoVFlQ RV9UQVJHRVRfVFlQRSAodHlwZSkpOwotQEAgLTE1NTMsMjQgKzE1NTQsMzIgQEAgcHBjNjRfc3lz dl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgIGJy ZWFrcG9pbnQuICAqLwotICAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3NpZ25lZCAocmVnY2FjaGUs IHRkZXAtPnBwY19scl9yZWdudW0sIGJwX2FkZHIpOwotIAotLSAgLyogVXNlIHRoZSBmdW5jX2Fk ZHIgdG8gZmluZCB0aGUgZGVzY3JpcHRvciwgYW5kIHVzZSB0aGF0IHRvIGZpbmQKLS0gICAgIHRo ZSBUT0MuICBJZiB3ZSdyZSBjYWxsaW5nIHZpYSBhIGZ1bmN0aW9uIHBvaW50ZXIsIHRoZSBwb2lu dGVyCi0tICAgICBpdHNlbGYgaWRlbnRpZmllcyB0aGUgZGVzY3JpcHRvci4gICovCi0tICB7Ci0t ICAgIHN0cnVjdCB0eXBlICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0 aW9uKSk7Ci0tICAgIENPUkVfQUREUiBkZXNjX2FkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChmdW5j dGlvbik7Ci0tCi0tICAgIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfUFRSCi0t CXx8IGNvbnZlcnRfY29kZV9hZGRyX3RvX2Rlc2NfYWRkciAoZnVuY19hZGRyLCAmZGVzY19hZGRy KSkKLS0gICAgICB7Ci0tCS8qIFRoZSBUT0MgaXMgdGhlIHNlY29uZCBkb3VibGUgd29yZCBpbiB0 aGUgZGVzY3JpcHRvci4gICovCi0tCUNPUkVfQUREUiB0b2MgPQotLQkgIHJlYWRfbWVtb3J5X3Vu c2lnbmVkX2ludGVnZXIgKGRlc2NfYWRkciArIHRkZXAtPndvcmRzaXplLAotLQkJCQkJdGRlcC0+ d29yZHNpemUsIGJ5dGVfb3JkZXIpOwotLQlyZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQg KHJlZ2NhY2hlLAotLQkJCQkJdGRlcC0+cHBjX2dwMF9yZWdudW0gKyAyLCB0b2MpOwotLSAgICAg IH0KLS0gIH0KLSsgIC8qIEluIHRoZSBFTEZ2MSBBQkksIHVzZSB0aGUgZnVuY19hZGRyIHRvIGZp bmQgdGhlIGRlc2NyaXB0b3IsIGFuZCB1c2UKLSsgICAgIHRoYXQgdG8gZmluZCB0aGUgVE9DLiAg SWYgd2UncmUgY2FsbGluZyB2aWEgYSBmdW5jdGlvbiBwb2ludGVyLAotKyAgICAgdGhlIHBvaW50 ZXIgaXRzZWxmIGlkZW50aWZpZXMgdGhlIGRlc2NyaXB0b3IuICAqLwotKyAgaWYgKHRkZXAtPmVs Zl9hYmkgPT0gUE9XRVJQQ19FTEZfVjEpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZnR5 cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChmdW5jdGlvbikpOwotKyAgICAgIENPUkVf QUREUiBkZXNjX2FkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChmdW5jdGlvbik7Ci0rCi0rICAgICAg aWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9QVFIKLSsJICB8fCBjb252ZXJ0X2Nv ZGVfYWRkcl90b19kZXNjX2FkZHIgKGZ1bmNfYWRkciwgJmRlc2NfYWRkcikpCi0rCXsKLSsJICAv KiBUaGUgVE9DIGlzIHRoZSBzZWNvbmQgZG91YmxlIHdvcmQgaW4gdGhlIGRlc2NyaXB0b3IuICAq LwotKwkgIENPUkVfQUREUiB0b2MgPQotKwkgICAgcmVhZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdl ciAoZGVzY19hZGRyICsgdGRlcC0+d29yZHNpemUsCi0rCQkJCQkgIHRkZXAtPndvcmRzaXplLCBi eXRlX29yZGVyKTsKLSsKLSsJICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2Nh Y2hlLAotKwkJCQkJICB0ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDIsIHRvYyk7Ci0rCX0KLSsgICAg fQotKwotKyAgLyogSW4gdGhlIEVMRnYyIEFCSSwgd2UgbmVlZCB0byBwYXNzIHRoZSB0YXJnZXQg YWRkcmVzcyBpbiByMTIgc2luY2UKLSsgICAgIHdlIG1heSBiZSBjYWxsaW5nIGEgZ2xvYmFsIGVu dHJ5IHBvaW50LiAgKi8KLSsgIGlmICh0ZGVwLT5lbGZfYWJpID09IFBPV0VSUENfRUxGX1YyKQot KyAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLAotKwkJCQkgICAg dGRlcC0+cHBjX2dwMF9yZWdudW0gKyAxMiwgZnVuY19hZGRyKTsKLSAKLSAgIHJldHVybiBzcDsK LSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxMm9mMTUucGF0Y2ggYi9nZGIt dXBzdHJlYW0tcHBjNjRsZTEyb2YxNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggM2IzODY4Mi4uMDAwMDAwMAotLS0gYS9nZGItdXBzdHJlYW0tcHBjNjRsZTEyb2YxNS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLWNvbW1pdCA1MmY1NDhlNDFmMDg1NTUw ZDc3NDBjMzUwYzFjOGEyMzk1MzJhZjc3Ci1BdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gu d2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBUdWUgRmViIDQgMTg6NDE6MzYgMjAxNCArMDEw MAotCi0gICAgUG93ZXJQQzY0IEVMRnYyIEFCSTogc3RhY2sgZnJhbWUgbGF5b3V0IGNoYW5nZXMK LSAgICAKLSAgICBUaGlzIGltcGxlbWVudGVzIGFub3RoZXIgY2hhbmdlIGluIEVMRnYyOiB0aGUg c3RhY2sgZnJhbWUgbm8gbG9uZ2VyCi0gICAgY29udGFpbnMgdGhlIHJlc2VydmVkIGRvdWJsZSB3 b3JkcyBmb3IgbGlua2VyIGFuZCBjb21waWxlciB1c2UKLSAgICAod2hpY2ggd2VyZW4ndCByZWFs bHkgdXNlZCBmb3IgbXVjaCBvZiBhbnl0aGluZyBhbnl3YXkpLiAgVGhpcwotICAgIGFmZmVjdHMg cGxhY2VtZW50IG9mIG9uLXN0YWNrIHBhcmFtZXRlcnMgaW4gaW5mZXJpb3IgY2FsbHMuCi0gICAg Ci0gICAgZ2RiL0NoYW5nZUxvZzoKLSAgICAKLSAgICAJKiBwcGMtc3lzdi10ZGVwLmMgKHBwYzY0 X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCk6IFVzZSBjb3JyZWN0Ci0gICAgCW9mZnNldCB0byB0 aGUgc3RhY2sgcGFyYW1ldGVyIGxpc3QgZm9yIHRoZSBFTEZ2MiBBQkkuCi0KLSMjIyBhL2dkYi9D aGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTAgQEAKLSAyMDE0LTAy LTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHBwYy1z eXN2LXRkZXAuYyAocHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsKTogVXNlIGNvcnJlY3QK LSsJb2Zmc2V0IHRvIHRoZSBzdGFjayBwYXJhbWV0ZXIgbGlzdCBmb3IgdGhlIEVMRnYyIEFCSS4K LSsKLSsyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgot KwotIAkqIHBwYy1saW51eC10ZGVwLmMgKHBwY19saW51eF9pbml0X2FiaSk6IE9ubHkgY2FsbAot IAlzZXRfZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciBhbmQKLSAJc2V0X2dkYmFy Y2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsIGZvciBFTEZ2MS4KLS0tLSBhL2dkYi9wcGMtc3lz di10ZGVwLmMKLSsrKyBiL2dkYi9wcGMtc3lzdi10ZGVwLmMKLUBAIC0xNDc0LDkgKzE0NzQsMTMg QEAgcHBjNjRfc3lzdl9hYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKLSAJICBhcmdwb3MucmVnY2FjaGUgPSByZWdjYWNoZTsKLSAJICBhcmdwb3MucmVmcGFyYW0g PSBhbGlnbl9kb3duIChzcCAtIHJlZnBhcmFtX3NpemUsIDE2KTsKLSAJICBhcmdwb3MuZ3BhcmFt ID0gYWxpZ25fZG93biAoYXJncG9zLnJlZnBhcmFtIC0gZ3BhcmFtX3NpemUsIDE2KTsKLS0JICAv KiBBZGQgaW4gc3BhY2UgZm9yIHRoZSBUT0MsIGxpbmsgZWRpdG9yIGRvdWJsZSB3b3JkLAotLQkg ICAgIGNvbXBpbGVyIGRvdWJsZSB3b3JkLCBMUiBzYXZlIGFyZWEsIENSIHNhdmUgYXJlYS4gICov Ci0tCSAgc3AgPSBhbGlnbl9kb3duIChhcmdwb3MuZ3BhcmFtIC0gNDgsIDE2KTsKLSsJICAvKiBB ZGQgaW4gc3BhY2UgZm9yIHRoZSBUT0MsIGxpbmsgZWRpdG9yIGRvdWJsZSB3b3JkICh2MSBvbmx5 KSwKLSsJICAgICBjb21waWxlciBkb3VibGUgd29yZCAodjEgb25seSksIExSIHNhdmUgYXJlYSwg Q1Igc2F2ZSBhcmVhLAotKwkgICAgIGFuZCBiYWNrY2hhaW4uICAqLwotKwkgIGlmICh0ZGVwLT5l bGZfYWJpID09IFBPV0VSUENfRUxGX1YxKQotKwkgICAgc3AgPSBhbGlnbl9kb3duIChhcmdwb3Mu Z3BhcmFtIC0gNDgsIDE2KTsKLSsJICBlbHNlCi0rCSAgICBzcCA9IGFsaWduX2Rvd24gKGFyZ3Bv cy5ncGFyYW0gLSAzMiwgMTYpOwotIAl9Ci0gCi0gICAgICAgLyogSWYgdGhlIGZ1bmN0aW9uIGlz IHJldHVybmluZyBhIGBzdHJ1Y3QnLCB0aGVuIHRoZXJlIGlzIGFuCgpkaWZmIC0tZ2l0IGEvZ2Ri LXVwc3RyZWFtLXBwYzY0bGUxM29mMTUucGF0Y2ggYi9nZGItdXBzdHJlYW0tcHBjNjRsZTEzb2Yx NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzljZTU5OS4uMDAwMDAwMAot LS0gYS9nZGItdXBzdHJlYW0tcHBjNjRsZTEzb2YxNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDMwOSArMCwwIEBACi1jb21taXQgY2MwZTg5YzUxOTkxMmUwZTRlNzVhMmZjMGQ4MzZmNzE1Y2Rj NjgwNgotQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJtLmNvbT4K LURhdGU6ICAgVHVlIEZlYiA0IDE4OjQyOjM1IDIwMTQgKzAxMDAKLQotICAgIFBvd2VyUEM2NCBF TEZ2MiBBQkk6IHN0cnVjdHVyZSBwYXNzaW5nIC8gcmV0dXJuCi0gICAgCi0gICAgQW5vdGhlciBz aWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBFTEZ2MiBBQkkgaXMgdGhhdCAiaG9tb2dlbmVv dXMiCi0gICAgZmxvYXRpbmctcG9pbnQgYW5kIHZlY3RvciBhZ2dyZWdhdGVzLCBpLmUuIGFnZ3Jl Z2F0ZXMgdGhlIGNvbnNpc3QKLSAgICAocmVjdXJzaXZlbHkpIG9ubHkgb2YgbWVtYmVycyBvZiB0 aGUgc2FtZSBmbG9hdGluZy1wb2ludCBvciB2ZWN0b3IgdHlwZSwKLSAgICBhcmUgcGFzc2VkIGlu IGEgc2VyaWVzIG9mIGZsb2F0aW5nLXBvaW50IC8gdmVjdG9yIHJlZ2lzdGVycywgYXMgaWYgdGhl eQotICAgIHdlcmUgc2VwZXJhdGUgcGFyYW1ldGVycy4gIChUaGlzIGlzIHNpbWlsYXIgdG8gdGhl IEFSTSBBQkkuKSAgVGhpcwotICAgIGFwcGxpZXMgdG8gYm90aCBjYWxscyBhbmQgcmV0dXJucy4K LSAgICAKLSAgICBJbiBhZGRpdGlvbiB3aGVuIHJldHVybmluZyBhbnkgYWdncmVnYXRlIG9mIHVw IHRvIDE2IGJ5dGVzLCBFTEZ2MiBub3cKLSAgICB1c2VkIGdlbmVyYWwtcHVycG9zZSByZWdpc3Rl cnMuCi0gICAgCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZXNlIGFzcGVjdHMg b2YgdGhlIEFCSSwgd2hpY2ggaXMgcmVsYXRpdmVseQotICAgIHN0cmFpZ2h0Zm9yd2FyZCBhZnRl ciB0aGUgcmVmYWN0b3JpbmcgcGF0Y2ggdG8gcHBjLXN5c3YtdGRlcC5jLgotICAgIAotICAgIGdk Yi9DaGFuZ2VMb2c6Ci0gICAgCi0gICAgCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9hZ2dyZWdh dGVfY2FuZGlkYXRlKTogTmV3IHJvdXRpbmUuCi0gICAgCShwcGM2NF9lbGZ2Ml9hYmlfaG9tb2dl bmVvdXNfYWdncmVnYXRlKTogTGlrZXdpc2UuCi0gICAgCShwcGM2NF9zeXN2X2FiaV9wdXNoX3Bh cmFtKTogSGFuZGxlIEVMRnYyIGhvbW9nZW5lb3VzIHN0cnVjdHMuCi0gICAgCShwcGM2NF9zeXN2 X2FiaV9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4gIEFsc28sIGhhbmRsZSBzbWFsbAotICAgIAlz dHJ1Y3R1cmVzIHJldHVybmVkIGluIEdQUnMuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBi L2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTMgQEAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2Vp Z2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIHBwYy1zeXN2LXRkZXAuYyAocHBj NjRfYWdncmVnYXRlX2NhbmRpZGF0ZSk6IE5ldyByb3V0aW5lLgotKwkocHBjNjRfZWxmdjJfYWJp X2hvbW9nZW5lb3VzX2FnZ3JlZ2F0ZSk6IExpa2V3aXNlLgotKwkocHBjNjRfc3lzdl9hYmlfcHVz aF9wYXJhbSk6IEhhbmRsZSBFTEZ2MiBob21vZ2VuZW91cyBzdHJ1Y3RzLgotKwkocHBjNjRfc3lz dl9hYmlfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuICBBbHNvLCBoYW5kbGUgc21hbGwKLSsJc3Ry dWN0dXJlcyByZXR1cm5lZCBpbiBHUFJzLgotKwotKzIwMTQtMDItMDQgIFVscmljaCBXZWlnYW5k wqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSogcHBjLXN5c3YtdGRlcC5jIChwcGM2NF9z eXN2X2FiaV9wdXNoX2R1bW15X2NhbGwpOiBVc2UgY29ycmVjdAotIAlvZmZzZXQgdG8gdGhlIHN0 YWNrIHBhcmFtZXRlciBsaXN0IGZvciB0aGUgRUxGdjIgQUJJLgotIAotLS0tIGEvZ2RiL3BwYy1z eXN2LXRkZXAuYwotKysrIGIvZ2RiL3BwYy1zeXN2LXRkZXAuYwotQEAgLTExMDEsNiArMTEwMSwx NjAgQEAgY29udmVydF9jb2RlX2FkZHJfdG9fZGVzY19hZGRyIChDT1JFX0FERFIgY29kZV9hZGRy LCBDT1JFX0FERFIgKmRlc2NfYWRkcikKLSAgIHJldHVybiAxOwotIH0KLSAKLSsvKiBXYWxrIGRv d24gdGhlIHR5cGUgdHJlZSBvZiBUWVBFIGNvdW50aW5nIGNvbnNlY3V0aXZlIGJhc2UgZWxlbWVu dHMuCi0rICAgSWYgKkZJRUxEX1RZUEUgaXMgTlVMTCwgdGhlbiBzZXQgaXQgdG8gdGhlIGZpcnN0 IHZhbGlkIGZsb2F0aW5nIHBvaW50Ci0rICAgb3IgdmVjdG9yIHR5cGUuICBJZiBhIG5vbi1mbG9h dGluZyBwb2ludCBvciB2ZWN0b3IgdHlwZSBpcyBmb3VuZCwgb3IKLSsgICBpZiBhIGZsb2F0aW5n IHBvaW50IG9yIHZlY3RvciB0eXBlIHRoYXQgZG9lc24ndCBtYXRjaCBhIG5vbi1OVUxMCi0rICAg KkZJRUxEX1RZUEUgaXMgZm91bmQsIHRoZW4gcmV0dXJuIC0xLCBvdGhlcndpc2UgcmV0dXJuIHRo ZSBjb3VudCBpbiB0aGUKLSsgICBzdWItdHJlZS4gICovCi0rCi0rc3RhdGljIExPTkdFU1QKLStw cGM2NF9hZ2dyZWdhdGVfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkgICBzdHJ1 Y3QgdHlwZSAqKmZpZWxkX3R5cGUpCi0rewotKyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUp OwotKwotKyAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotKyAgICB7Ci0rICAgIGNhc2UgVFlQ RV9DT0RFX0ZMVDoKLSsgICAgY2FzZSBUWVBFX0NPREVfREVDRkxPQVQ6Ci0rICAgICAgaWYgKCEq ZmllbGRfdHlwZSkKLSsJKmZpZWxkX3R5cGUgPSB0eXBlOwotKyAgICAgIGlmIChUWVBFX0NPREUg KCpmaWVsZF90eXBlKSA9PSBUWVBFX0NPREUgKHR5cGUpCi0rCSAgJiYgVFlQRV9MRU5HVEggKCpm aWVsZF90eXBlKSA9PSBUWVBFX0xFTkdUSCAodHlwZSkpCi0rCXJldHVybiAxOwotKyAgICAgIGJy ZWFrOwotKwotKyAgICBjYXNlIFRZUEVfQ09ERV9DT01QTEVYOgotKyAgICAgIHR5cGUgPSBUWVBF X1RBUkdFVF9UWVBFICh0eXBlKTsKLSsgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfRkxUCi0rCSAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfREVDRkxPQVQp Ci0rCXsKLSsJICBpZiAoISpmaWVsZF90eXBlKQotKwkgICAgKmZpZWxkX3R5cGUgPSB0eXBlOwot KwkgIGlmIChUWVBFX0NPREUgKCpmaWVsZF90eXBlKSA9PSBUWVBFX0NPREUgKHR5cGUpCi0rCSAg ICAgICYmIFRZUEVfTEVOR1RIICgqZmllbGRfdHlwZSkgPT0gVFlQRV9MRU5HVEggKHR5cGUpKQot KwkgICAgcmV0dXJuIDI7Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBUWVBFX0NP REVfQVJSQVk6Ci0rICAgICAgaWYgKFRZUEVfVkVDVE9SICh0eXBlKSkKLSsJewotKwkgIGlmICgh KmZpZWxkX3R5cGUpCi0rCSAgICAqZmllbGRfdHlwZSA9IHR5cGU7Ci0rCSAgaWYgKFRZUEVfQ09E RSAoKmZpZWxkX3R5cGUpID09IFRZUEVfQ09ERSAodHlwZSkKLSsJICAgICAgJiYgVFlQRV9MRU5H VEggKCpmaWVsZF90eXBlKSA9PSBUWVBFX0xFTkdUSCAodHlwZSkpCi0rCSAgICByZXR1cm4gMTsK LSsJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIExPTkdFU1QgY291bnQsIGxvd19ib3VuZCwgaGln aF9ib3VuZDsKLSsKLSsJICBjb3VudCA9IHBwYzY0X2FnZ3JlZ2F0ZV9jYW5kaWRhdGUKLSsJCSAg IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgZmllbGRfdHlwZSk7Ci0rCSAgaWYgKGNvdW50ID09 IC0xKQotKwkgICAgcmV0dXJuIC0xOwotKwotKwkgIGlmICghZ2V0X2FycmF5X2JvdW5kcyAodHlw ZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpKQotKwkgICAgcmV0dXJuIC0xOwotKwkgIGNvdW50 ICo9IGhpZ2hfYm91bmQgLSBsb3dfYm91bmQ7Ci0rCi0rCSAgLyogVGhlcmUgbXVzdCBiZSBubyBw YWRkaW5nLiAgKi8KLSsJICBpZiAoY291bnQgPT0gMCkKLSsJICAgIHJldHVybiBUWVBFX0xFTkdU SCAodHlwZSkgPT0gMCA/IDAgOiAtMTsKLSsJICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkg IT0gY291bnQgKiBUWVBFX0xFTkdUSCAoKmZpZWxkX3R5cGUpKQotKwkgICAgcmV0dXJuIC0xOwot KwotKwkgIHJldHVybiBjb3VudDsKLSsJfQotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIFRZ UEVfQ09ERV9TVFJVQ1Q6Ci0rICAgIGNhc2UgVFlQRV9DT0RFX1VOSU9OOgotKwl7Ci0rCSAgTE9O R0VTVCBjb3VudCA9IDA7Ci0rCSAgaW50IGk7Ci0rCi0rCSAgZm9yIChpID0gMDsgaSA8IFRZUEVf TkZJRUxEUyAodHlwZSk7IGkrKykKLSsJICAgIHsKLSsJICAgICAgTE9OR0VTVCBzdWJfY291bnQ7 Ci0rCi0rCSAgICAgIGlmIChmaWVsZF9pc19zdGF0aWMgKCZUWVBFX0ZJRUxEICh0eXBlLCBpKSkp Ci0rCQljb250aW51ZTsKLSsKLSsJICAgICAgc3ViX2NvdW50ID0gcHBjNjRfYWdncmVnYXRlX2Nh bmRpZGF0ZQotKwkJCSAgIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCBmaWVsZF90eXBlKTsK LSsJICAgICAgaWYgKHN1Yl9jb3VudCA9PSAtMSkKLSsJCXJldHVybiAtMTsKLSsKLSsJICAgICAg aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVCkKLSsJCWNvdW50ICs9IHN1 Yl9jb3VudDsKLSsJICAgICAgZWxzZQotKwkJY291bnQgPSBtYXggKGNvdW50LCBzdWJfY291bnQp OwotKwkgICAgfQotKwotKwkgIC8qIFRoZXJlIG11c3QgYmUgbm8gcGFkZGluZy4gICovCi0rCSAg aWYgKGNvdW50ID09IDApCi0rCSAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpID09IDAgPyAw IDogLTE7Ci0rCSAgZWxzZSBpZiAoVFlQRV9MRU5HVEggKHR5cGUpICE9IGNvdW50ICogVFlQRV9M RU5HVEggKCpmaWVsZF90eXBlKSkKLSsJICAgIHJldHVybiAtMTsKLSsKLSsJICByZXR1cm4gY291 bnQ7Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBicmVhazsK LSsgICAgfQotKwotKyAgcmV0dXJuIC0xOwotK30KLSsKLSsvKiBJZiBhbiBhcmd1bWVudCBvZiB0 eXBlIFRZUEUgaXMgYSBob21vZ2VuZW91cyBmbG9hdCBvciB2ZWN0b3IgYWdncmVnYXRlCi0rICAg dGhhdCBzaGFsbCBiZSBwYXNzZWQgaW4gRlAvdmVjdG9yIHJlZ2lzdGVycyBhY2NvcmRpbmcgdG8g dGhlIEVMRnYyIEFCSSwKLSsgICByZXR1cm4gdGhlIGhvbW9nZW5lb3VzIGVsZW1lbnQgdHlwZSBp biAqRUxUX1RZUEUgYW5kIHRoZSBudW1iZXIgb2YKLSsgICBlbGVtZW50cyBpbiAqTl9FTFRTLCBh bmQgcmV0dXJuIG5vbi16ZXJvLiAgT3RoZXJ3aXNlLCByZXR1cm4gemVyby4gICovCi0rCi0rc3Rh dGljIGludAotK3BwYzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHN0cnVjdCB0 eXBlICp0eXBlLAotKwkJCQkgICAgICAgc3RydWN0IHR5cGUgKiplbHRfdHlwZSwgaW50ICpuX2Vs dHMpCi0rewotKyAgLyogQ29tcGxleCB0eXBlcyBhdCB0aGUgdG9wIGxldmVsIGFyZSB0cmVhdGVk IHNlcGFyYXRlbHkuICBIb3dldmVyLAotKyAgICAgY29tcGxleCB0eXBlcyBjYW4gYmUgZWxlbWVu dHMgb2YgaG9tb2dlbmVvdXMgYWdncmVnYXRlcy4gICovCi0rICBpZiAoVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfU1RSVUNUCi0rICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfVU5JT04KLSsgICAgICB8fCAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJS QVkgJiYgIVRZUEVfVkVDVE9SICh0eXBlKSkpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAq ZmllbGRfdHlwZSA9IE5VTEw7Ci0rICAgICAgTE9OR0VTVCBmaWVsZF9jb3VudCA9IHBwYzY0X2Fn Z3JlZ2F0ZV9jYW5kaWRhdGUgKHR5cGUsICZmaWVsZF90eXBlKTsKLSsKLSsgICAgICBpZiAoZmll bGRfY291bnQgPiAwKQotKwl7Ci0rCSAgaW50IG5fcmVncyA9ICgoVFlQRV9DT0RFIChmaWVsZF90 eXBlKSA9PSBUWVBFX0NPREVfRkxUCi0rCQkJIHx8IFRZUEVfQ09ERSAoZmllbGRfdHlwZSkgPT0g VFlQRV9DT0RFX0RFQ0ZMT0FUKT8KLSsJCQkoVFlQRV9MRU5HVEggKGZpZWxkX3R5cGUpICsgNykg Pj4gMyA6IDEpOwotKwotKwkgIC8qIFRoZSBFTEZ2MiBBQkkgYWxsb3dzIGhvbW9nZW5lb3VzIGFn Z3JlZ2F0ZXMgdG8gb2NjdXB5Ci0rCSAgICAgdXAgdG8gOCByZWdpc3RlcnMuICAqLwotKwkgIGlm IChmaWVsZF9jb3VudCAqIG5fcmVncyA8PSA4KQotKwkgICAgewotKwkgICAgICBpZiAoZWx0X3R5 cGUpCi0rCQkqZWx0X3R5cGUgPSBmaWVsZF90eXBlOwotKwkgICAgICBpZiAobl9lbHRzKQotKwkJ Km5fZWx0cyA9IChpbnQpIGZpZWxkX2NvdW50OwotKwkgICAgICAvKiBOb3RlIHRoYXQgZmllbGRf Y291bnQgaXMgTE9OR0VTVCBzaW5jZSBpdCBtYXkgaG9sZCB0aGUgc2l6ZQotKwkJIG9mIGFuIGFy cmF5LCB3aGlsZSAqbl9lbHRzIGlzIGludCBzaW5jZSBpdHMgdmFsdWUgaXMgYm91bmRlZAotKwkJ IGJ5IHRoZSBudW1iZXIgb2YgcmVnaXN0ZXJzIHVzZWQgZm9yIGFyZ3VtZW50IHBhc3NpbmcuICBU aGUKLSsJCSBjYXN0IGNhbm5vdCBvdmVyZmxvdyBkdWUgdG8gdGhlIGJvdW5kcyBjaGVja2luZyBh Ym92ZS4gICovCi0rCSAgICAgIHJldHVybiAxOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsKLSsg IHJldHVybiAwOwotK30KLSsKLSAvKiBTdHJ1Y3R1cmUgaG9sZGluZyB0aGUgbmV4dCBhcmd1bWVu dCBwb3NpdGlvbi4gICovCi0gc3RydWN0IHBwYzY0X3N5c3ZfYXJncG9zCi0gICB7Ci1AQCAtMTM4 OSw2ICsxNTQzLDI5IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfcGFyYW0gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLAotIAkgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9GTFQpCi0g CSAgICBwcGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIHR5cGUsIHZhbCwgYXJncG9z KTsKLSAJfQotKwotKyAgICAgIC8qIEluIHRoZSBFTEZ2MiBBQkksIGhvbW9nZW5lb3VzIGZsb2F0 aW5nLXBvaW50IG9yIHZlY3RvcgotKwkgYWdncmVnYXRlcyBhcmUgcGFzc2VkIGluIGEgc2VyaWVz IG9mIHJlZ2lzdGVycy4gICovCi0rICAgICAgaWYgKHRkZXAtPmVsZl9hYmkgPT0gUE9XRVJQQ19F TEZfVjIpCi0rCXsKLSsJICBzdHJ1Y3QgdHlwZSAqZWx0eXBlOwotKwkgIGludCBpLCBuZWx0Owot KwotKwkgIGlmIChwcGM2NF9lbGZ2Ml9hYmlfaG9tb2dlbmVvdXNfYWdncmVnYXRlICh0eXBlLCAm ZWx0eXBlLCAmbmVsdCkpCi0rCSAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdDsgaSsrKQotKwkgICAg ICB7Ci0rCQljb25zdCBnZGJfYnl0ZSAqZWx2YWwgPSB2YWwgKyBpICogVFlQRV9MRU5HVEggKGVs dHlwZSk7Ci0rCi0rCQlpZiAoVFlQRV9DT0RFIChlbHR5cGUpID09IFRZUEVfQ09ERV9GTFQKLSsJ CSAgICB8fCBUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0RFQ0ZMT0FUKQotKwkJICBw cGM2NF9zeXN2X2FiaV9wdXNoX2ZyZWcgKGdkYmFyY2gsIGVsdHlwZSwgZWx2YWwsIGFyZ3Bvcyk7 Ci0rCQllbHNlIGlmIChUWVBFX0NPREUgKGVsdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0rCQkJ ICYmIFRZUEVfVkVDVE9SIChlbHR5cGUpCi0rCQkJICYmIHRkZXAtPnZlY3Rvcl9hYmkgPT0gUE9X RVJQQ19WRUNfQUxUSVZFQwotKwkJCSAmJiBUWVBFX0xFTkdUSCAoZWx0eXBlKSA9PSAxNikKLSsJ CSAgcHBjNjRfc3lzdl9hYmlfcHVzaF92cmVnIChnZGJhcmNoLCBlbHZhbCwgYXJncG9zKTsKLSsJ ICAgICAgfQotKwl9Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTgzNCw2ICsyMDExLDcyIEBAIHBwYzY0 X3N5c3ZfYWJpX3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2 YWx1ZSAqZnVuY3Rpb24sCi0gICAgICAgcmV0dXJuIFJFVFVSTl9WQUxVRV9SRUdJU1RFUl9DT05W RU5USU9OOwotICAgICB9Ci0gCi0rICAvKiBJbiB0aGUgRUxGdjIgQUJJLCBob21vZ2VuZW91cyBm bG9hdGluZy1wb2ludCBvciB2ZWN0b3IKLSsgICAgIGFnZ3JlZ2F0ZXMgYXJlIHJldHVybmVkIGlu IHJlZ2lzdGVycy4gICovCi0rICBpZiAodGRlcC0+ZWxmX2FiaSA9PSBQT1dFUlBDX0VMRl9WMgot KyAgICAgICYmIHBwYzY0X2VsZnYyX2FiaV9ob21vZ2VuZW91c19hZ2dyZWdhdGUgKHZhbHR5cGUs ICZlbHR5cGUsICZuZWx0KSkKLSsgICAgewotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0OyBp KyspCi0rCXsKLSsJICBvayA9IHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNlIChnZGJh cmNoLCBlbHR5cGUsIHJlZ2NhY2hlLAotKwkJCQkJCSByZWFkYnVmLCB3cml0ZWJ1ZiwgaSk7Ci0r CSAgZ2RiX2Fzc2VydCAob2spOwotKwotKwkgIGlmIChyZWFkYnVmKQotKwkgICAgcmVhZGJ1ZiAr PSBUWVBFX0xFTkdUSCAoZWx0eXBlKTsKLSsJICBpZiAod3JpdGVidWYpCi0rCSAgICB3cml0ZWJ1 ZiArPSBUWVBFX0xFTkdUSCAoZWx0eXBlKTsKLSsJfQotKwotKyAgICAgIHJldHVybiBSRVRVUk5f VkFMVUVfUkVHSVNURVJfQ09OVkVOVElPTjsKLSsgICAgfQotKwotKyAgLyogSW4gdGhlIEVMRnYy IEFCSSwgYWdncmVnYXRlIHR5cGVzIG9mIHVwIHRvIDE2IGJ5dGVzIGFyZQotKyAgICAgcmV0dXJu ZWQgaW4gcmVnaXN0ZXJzIHIzOnI0LiAgKi8KLSsgIGlmICh0ZGVwLT5lbGZfYWJpID09IFBPV0VS UENfRUxGX1YyCi0rICAgICAgJiYgVFlQRV9MRU5HVEggKHZhbHR5cGUpIDw9IDE2Ci0rICAgICAg JiYgKFRZUEVfQ09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVDVAotKwkgIHx8IFRZUEVf Q09ERSAodmFsdHlwZSkgPT0gVFlQRV9DT0RFX1VOSU9OCi0rCSAgfHwgKFRZUEVfQ09ERSAodmFs dHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0rCSAgICAgICYmICFUWVBFX1ZFQ1RPUiAodmFsdHlw ZSkpKSkKLSsgICAgewotKyAgICAgIGludCBuX3JlZ3MgPSAoKFRZUEVfTEVOR1RIICh2YWx0eXBl KSArIHRkZXAtPndvcmRzaXplIC0gMSkKLSsJCSAgICAvIHRkZXAtPndvcmRzaXplKTsKLSsgICAg ICBpbnQgaTsKLSsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yZWdzOyBpKyspCi0rCXsKLSsJ ICBnZGJfYnl0ZSByZWd2YWxbTUFYX1JFR0lTVEVSX1NJWkVdOwotKwkgIGludCByZWdudW0gPSB0 ZGVwLT5wcGNfZ3AwX3JlZ251bSArIDMgKyBpOwotKwkgIGludCBvZmZzZXQgPSBpICogdGRlcC0+ d29yZHNpemU7Ci0rCSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh2YWx0eXBlKSAtIG9mZnNldDsK LSsKLSsJICBpZiAobGVuID4gdGRlcC0+d29yZHNpemUpCi0rCSAgICBsZW4gPSB0ZGVwLT53b3Jk c2l6ZTsKLSsKLSsJICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgbWVt c2V0IChyZWd2YWwsIDAsIHNpemVvZiByZWd2YWwpOwotKwkgICAgICBpZiAoZ2RiYXJjaF9ieXRl X29yZGVyIChnZGJhcmNoKSA9PSBCRkRfRU5ESUFOX0JJRwotKwkJICAmJiBvZmZzZXQgPT0gMCkK LSsJCW1lbWNweSAocmVndmFsICsgdGRlcC0+d29yZHNpemUgLSBsZW4sIHdyaXRlYnVmLCBsZW4p OwotKwkgICAgICBlbHNlCi0rCQltZW1jcHkgKHJlZ3ZhbCwgd3JpdGVidWYgKyBvZmZzZXQsIGxl bik7Ci0rCSAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIHJlZ251bSwgcmVn dmFsKTsKLSsJICAgIH0KLSsJICBpZiAocmVhZGJ1ZiAhPSBOVUxMKQotKwkgICAgewotKwkgICAg ICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIHJlZ251bSwgcmVndmFsKTsKLSsJICAg ICAgaWYgKGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCkgPT0gQkZEX0VORElBTl9CSUcKLSsJ CSAgJiYgb2Zmc2V0ID09IDApCi0rCQltZW1jcHkgKHJlYWRidWYsIHJlZ3ZhbCArIHRkZXAtPndv cmRzaXplIC0gbGVuLCBsZW4pOwotKwkgICAgICBlbHNlCi0rCQltZW1jcHkgKHJlYWRidWYgKyBv ZmZzZXQsIHJlZ3ZhbCwgbGVuKTsKLSsJICAgIH0KLSsJfQotKyAgICAgIHJldHVybiBSRVRVUk5f VkFMVUVfUkVHSVNURVJfQ09OVkVOVElPTjsKLSsgICAgfQotKwotICAgLyogSGFuZGxlIHBsYWlu IGJhc2UgdHlwZXMuICAqLwotICAgaWYgKHBwYzY0X3N5c3ZfYWJpX3JldHVybl92YWx1ZV9iYXNl IChnZGJhcmNoLCB2YWx0eXBlLCByZWdjYWNoZSwKLSAJCQkJCXJlYWRidWYsIHdyaXRlYnVmLCAw KSkKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0tcHBjNjRsZTE0b2YxNS5wYXRjaCBiL2dkYi11 cHN0cmVhbS1wcGM2NGxlMTRvZjE1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBhYmVlOTgzLi4wMDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMTRvZjE1LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMzc1ICswLDAgQEAKLWNvbW1pdCA1OTFhMTJhMWQ0Yzg4NDMz NDNlYjk5OTE0NWQ4YmNjMWVmZWRmNDA4Ci1BdXRob3I6IFVscmljaCBXZWlnYW5kIDx1bHJpY2gu d2VpZ2FuZEBkZS5pYm0uY29tPgotRGF0ZTogICBUdWUgRmViIDQgMTg6NDQ6MTQgMjAxNCArMDEw MAotCi0gICAgUG93ZXJQQzY0IEVMRnYyIEFCSTogc2tpcCBnbG9iYWwgZW50cnkgcG9pbnQgY29k ZQotICAgIAotICAgIFRoaXMgcGF0Y2ggaGFuZGxlcyBhbm90aGVyIGFzcGVjdCBvZiB0aGUgRUxG djIgQUJJLCB3aGljaCB1bmZvcnR1bmF0ZWx5Ci0gICAgcmVxdWlyZXMgY29tbW9uIGNvZGUgY2hh bmdlcy4KLSAgICAKLSAgICBJbiBFTEZ2MiwgZnVuY3Rpb25zIG1heSBwcm92aWRlIGJvdGggYSBn bG9iYWwgYW5kIGEgbG9jYWwgZW50cnkgcG9pbnQuCi0gICAgVGhlIGdsb2JhbCBlbnRyeSBwb2lu dCAod2hlcmUgdGhlIGZ1bmN0aW9uIHN5bWJvbCBwb2ludHMgdG8pIGlzIGludGVuZGVkCi0gICAg dG8gYmUgdXNlZCBmb3IgZnVuY3Rpb24tcG9pbnRlciBvciBjcm9zcy1tb2R1bGUgKFBMVCkgY2Fs bHMsIGFuZCByZXF1aXJlcwotICAgIHIxMiB0byBiZSBzZXQgdXAgdG8gdGhlIGVudHJ5IHBvaW50 IGFkZHJlc3MgaXRzZWxmLiAgIFRoZSBsb2NhbCBlbnRyeQotICAgIHBvaW50ICh3aGljaCBpcyBm b3VuZCBhdCBhIGZpeGVkIG9mZnNldCBhZnRlciB0aGUgZ2xvYmFsIGVudHJ5IHBvaW50LAotICAg IGFzIGRlZmluZWQgYnkgYml0cyBpbiB0aGUgc3ltYm9sIHRhYmxlIGVudHJpZXMnIHN0X290aGVy IGZpZWxkKSwgaW5zdGVhZAotICAgIGV4cGVjdHMgcjIgdG8gYmUgc2V0IHVwIHRvIHRoZSBjdXJy ZW50IFRPQy4KLSAgICAKLSAgICBOb3csIHdoZW4gc2V0dGluZyBhIGJyZWFrcG9pbnQgb24gYSBm dW5jdGlvbiBieSBuYW1lLCB5b3UgcmVhbGx5IHdhbnQKLSAgICB0aGF0IGJyZWFrcG9pbnQgdG8g dHJpZ2dlciBlaXRoZXIgd2F5LCBubyBtYXR0ZXIgd2hldGhlciB0aGUgZnVuY3Rpb24KLSAgICBp cyBjYWxsZWQgdmlhIGl0cyBsb2NhbCBvciBnbG9iYWwgZW50cnkgcG9pbnQuICBTaW5jZSB0aGUg Z2xvYmFsIGVudHJ5Ci0gICAgcG9pbnQgd2lsbCBhbHdheXMgZmFsbCB0aHJvdWdoIGludG8gdGhl IGxvY2FsIGVudHJ5IHBvaW50LCB0aGUgd2F5IHRvCi0gICAgYWNoaWV2ZSB0aGF0IGlzIHRvIHNp bXBseSBzZXQgdGhlIGJyZWFrcG9pbnQgYXQgdGhlIGxvY2FsIGVudHJ5IHBvaW50LgotICAgIAot ICAgIE9uZSB3YXkgdG8gZG8gdGhhdCB3b3VsZCBiZSB0byBoYXZlIHByb2xvZ3VlIHBhcnNpbmcg c2tpcCB0aGUgY29kZQotICAgIHNlcXVlbmNlIHRoYXQgbWFrZXMgdXAgdGhlIGdsb2JhbCBlbnRy eSBwb2ludC4gIFVuZm9ydHVuYXRlbHksIHRoaXMKLSAgICBkb2VzIG5vdCB3b3JrIHJlbGlhYmx5 LCBzaW5jZSAtZm9yIG9wdGltaXplZCBjb2RlLSBHREIgdGhlc2UgZGF5cwotICAgIHdpbGwgbm90 IGFjdHVhbGwgaW52b2tlIHRoZSBwcm9sb2d1ZSBwYXJzaW5nIGNvZGUgYnV0IGluc3RlYWQganVz dAotICAgIHNldCB0aGUgYnJlYWtwb2ludCBhdCB0aGUgc3ltYm9sIGFkZHJlc3MgYW5kIHJlbHkg b24gRFdBUkYgYmVpbmcKLSAgICBjb3JyZWN0IGF0IGFueSBwb2ludCB0aHJvdWdob3V0IHRoZSBm dW5jdGlvbiAuLi4KLSAgICAKLSAgICBVbmZvcnR1bmF0ZWx5LCBJIGRvbid0IHJlYWxseSBzZWUg YW55IHdheSB0byBleHByZXNzIHRoZSBub3Rpb24gb2YKLSAgICBsb2NhbCBlbnRyeSBwb2ludHMg d2l0aCB0aGUgY3VycmVudCBzZXQgb2YgZ2RiYXJjaCBjYWxsYmFja3MuCi0gICAgCi0gICAgVGh1 cyB0aGlzIHBhdGNoIGFkZHMgYSBuZXcgY2FsbGJhY2ssIHNraXBfZW50cnlwb2ludCwgdGhhdCBp cwotICAgIHNvbWV3aGF0IGFuYWxvZ291cyB0byBza2lwX3Byb2xvZ3VlLCBidXQgaXMgY2FsbGVk IGV2ZXJ5IHRpbWUKLSAgICBHREIgbmVlZHMgdG8gZGV0ZXJtaW5lIGEgZnVuY3Rpb24gc3RhcnQg YWRkcmVzcywgZXZlbiBpbiB0aG9zZQotICAgIGNhc2VzIHdoZXJlIEdEQiBkZWNpZGVzIHRvIG5v dCBjYWxsIHNraXBfcHJvbG9ndWUuCi0gICAgCi0gICAgQXMgYSBzaWRlIGVmZmVjdCwgdGhlIHNr aXBfZW50cnlwb2ludCBpbXBsZW1lbnRhdGlvbiBvbiBwcGM2NAotICAgIGRvZXMgbm90IG5lZWQg dG8gcGVyZm9ybSBhbnkgaW5zdHJ1Y3Rpb24gcGFyc2luZzsgaXQgY2FuIHNpbXBseQotICAgIHJl bHkgb24gdGhlIGxvY2FsIGVudHJ5IHBvaW50IGZsYWdzIGluIHRoZSBzeW1ib2wgdGFibGUgZW50 cnkuCi0gICAgCi0gICAgV2l0aCB0aGlzIGltcGxlbWVudGVkLCB0d28gdGVzdCBjYXNlcyB3b3Vs ZCBzdGlsbCBmYWlsIHRvIHNldAotICAgIHRoZSBicmVha3BvaW50IGNvcnJlY3RseSwgYnV0IHRo YXQncyBiZWNhdXNlIHRoZXkgdXNlIHRoZSBjb25zdHJ1Y3Q6Ci0gICAgCi0gICAgIGdkYl90ZXN0 ICJicmVhayAqaGVsbG8iCi0gICAgCi0gICAgTm93LCB1c2luZyAiKmhlbGxvIiBleHBsaWNpdGx5 IGluc3RydWN0cyBHREIgdG8gc2V0IHRoZSBicmVha3BvaW50Ci0gICAgYXQgdGhlIG51bWVyaWNh bCB2YWx1ZSBvZiAiaGVsbG8iIHRyZWF0ZWQgYXMgZnVuY3Rpb24gcG9pbnRlciwgc28KLSAgICBp dCB3aWxsIGJ5IGRlZmluaXRpb24gb25seSBoaXQgdGhlIGdsb2JhbCBlbnRyeSBwb2ludC4KLSAg ICAKLSAgICBJIHRoaW5rIHRoaXMgYmVoYXZpb3VyIGlzIHVuYXZvaWRhYmxlLCBidXQgYWNjZXB0 YWJsZSAtLSBtb3N0IHBlb3BsZQotICAgIGRvIG5vdCB1c2UgdGhpcyBjb25zdHJ1Y3QsIGFuZCBp ZiB0aGV5IGRvLCB0aGV5IGdldCB3aGF0IHRoZXkKLSAgICBhc2tlZCBmb3IgLi4uCi0gICAgCi0g ICAgSW4gb25lIG9mIHRob3NlIHR3byB0ZXN0IGNhc2VzLCB1c2Ugb2YgdGhpcyBjb25zdHJ1Y3Qg aXMgcmVhbGx5Ci0gICAgbm90IGFwcHJvcHJpYXRlLiAgSSB0aGluayB0aGlzIHdhcyBhZGRlZCB3 YXkgYmFjayB3aGVuIGFzIGEgbWVhbnMKLSAgICB0byB3b3JrIGFyb3VuZCBwcm9sb2d1ZSBza2lw cGluZyBwcm9ibGVtcyBvbiBzb21lIHBsYXRmb3Jtcy4gIFRoZXNlCi0gICAgZGF5cyB0aGF0IHNo b3VsZG4ndCByZWFsbHkgYmUgbmVjZXNzYXJ5IGFueSBtb3JlIC4uLgotICAgIAotICAgIEZvciB0 aGUgb3RoZXIgKHN0ZXAtYnQpLCB3ZSByZWFsbHkgd2FudCB0byBtYWtlIHN1cmUgYmFja3RyYWNp bmcKLSAgICB3b3JrcyBvbiB0aGUgdmVyeSBmaXJzdCBpbnN0cnVjdGlvbiBvZiB0aGUgcm91dGlu ZS4gIFRvIGVuYWJsZSB0aGF0Ci0gICAgdGVzdCBhbHNvIG9uIHBvd2VycGM2NGxlLWxpbnV4LCB3 ZSBjYW4gbW9kaWZ5IHRoZSBjb2RlIHRvIGNhbGwgdGhlCi0gICAgdGVzdCBmdW5jdGlvbiB2aWEg ZnVuY3Rpb24gcG9pbnRlciAod2hpY2ggbWFrZXMgaXQgdXNlIHRoZSBnbG9iYWwKLSAgICBlbnRy eSBwb2ludCBpbiB0aGUgRUxGdjIgQUJJKS4KLSAgICAKLSAgICBnZGIvQ2hhbmdlTG9nOgotICAg IAotICAgIAkqIGdkYmFyY2guc2ggKHNraXBfZW50cnlwb2ludCk6IE5ldyBjYWxsYmFjay4KLSAg ICAJKiBnZGJhcmNoLmMsIGdkYmFyY2guaDogUmVnZW5lcmF0ZS4KLSAgICAJKiBzeW10YWIuYyAo c2tpcF9wcm9sb2d1ZV9zYWwpOiBDYWxsIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50LgotICAgIAkq IGluZnJ1bi5jIChmaWxsX2luX3N0b3BfZnVuYyk6IExpa2V3aXNlLgotICAgIAkqIHBwYy1saW51 eC10ZGVwLmM6IEluY2x1ZGUgImVsZi9wcGM2NC5oIi4KLSAgICAJKHBwY19lbGZ2Ml9lbGZfbWFr ZV9tc3ltYm9sX3NwZWNpYWwpOiBOZXcgZnVuY3Rpb24uCi0gICAgCShwcGNfZWxmdjJfc2tpcF9l bnRyeXBvaW50KTogTGlrZXdpc2UuCi0gICAgCShwcGNfbGludXhfaW5pdF9hYmkpOiBJbnN0YWxs IHRoZW0gZm9yIEVMRnYyLgotICAgIAotICAgIGdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgotICAg IAotICAgIAkqIGdkYi5iYXNlL3NpZ2JwdC5leHA6IERvIG5vdCB1c2UgIioiIHdoZW4gc2V0dGlu ZyBicmVha3BvaW50Ci0gICAgCW9uIGEgZnVuY3Rpb24uCi0gICAgCSogZ2RiLmJhc2Uvc3RlcC1i dC5jOiBDYWxsIGhlbGxvIHZpYSBmdW5jdGlvbiBwb2ludGVyIHRvIG1ha2UKLSAgICAJc3VyZSBp dHMgZmlyc3QgaW5zdHJ1Y3Rpb24gaXMgZXhlY3V0ZWQgb24gcG93ZXJwYzY0bGUtbGludXguCi0K LSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsMTYg QEAKLSAyMDE0LTAyLTA0ICBVbHJpY2ggV2VpZ2FuZMKgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgot IAotKwkqIGdkYmFyY2guc2ggKHNraXBfZW50cnlwb2ludCk6IE5ldyBjYWxsYmFjay4KLSsJKiBn ZGJhcmNoLmMsIGdkYmFyY2guaDogUmVnZW5lcmF0ZS4KLSsJKiBzeW10YWIuYyAoc2tpcF9wcm9s b2d1ZV9zYWwpOiBDYWxsIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50LgotKwkqIGluZnJ1bi5jIChm aWxsX2luX3N0b3BfZnVuYyk6IExpa2V3aXNlLgotKwkqIHBwYy1saW51eC10ZGVwLmM6IEluY2x1 ZGUgImVsZi9wcGM2NC5oIi4KLSsJKHBwY19lbGZ2Ml9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwp OiBOZXcgZnVuY3Rpb24uCi0rCShwcGNfZWxmdjJfc2tpcF9lbnRyeXBvaW50KTogTGlrZXdpc2Uu Ci0rCShwcGNfbGludXhfaW5pdF9hYmkpOiBJbnN0YWxsIHRoZW0gZm9yIEVMRnYyLgotKwotKzIw MTQtMDItMDQgIFVscmljaCBXZWlnYW5kwqAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0rCi0gCSog cHBjLXN5c3YtdGRlcC5jIChwcGM2NF9hZ2dyZWdhdGVfY2FuZGlkYXRlKTogTmV3IHJvdXRpbmUu Ci0gCShwcGM2NF9lbGZ2Ml9hYmlfaG9tb2dlbmVvdXNfYWdncmVnYXRlKTogTGlrZXdpc2UuCi0g CShwcGM2NF9zeXN2X2FiaV9wdXNoX3BhcmFtKTogSGFuZGxlIEVMRnYyIGhvbW9nZW5lb3VzIHN0 cnVjdHMuCi0tLS0gYS9nZGIvZ2RiYXJjaC5jCi0rKysgYi9nZGIvZ2RiYXJjaC5jCi1AQCAtMjI5 LDYgKzIyOSw3IEBAIHN0cnVjdCBnZGJhcmNoCi0gICBnZGJhcmNoX3JldHVybl9pbl9maXJzdF9o aWRkZW5fcGFyYW1fcF9mdHlwZSAqcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJhbV9wOwotICAg Z2RiYXJjaF9za2lwX3Byb2xvZ3VlX2Z0eXBlICpza2lwX3Byb2xvZ3VlOwotICAgZ2RiYXJjaF9z a2lwX21haW5fcHJvbG9ndWVfZnR5cGUgKnNraXBfbWFpbl9wcm9sb2d1ZTsKLSsgIGdkYmFyY2hf c2tpcF9lbnRyeXBvaW50X2Z0eXBlICpza2lwX2VudHJ5cG9pbnQ7Ci0gICBnZGJhcmNoX2lubmVy X3RoYW5fZnR5cGUgKmlubmVyX3RoYW47Ci0gICBnZGJhcmNoX2JyZWFrcG9pbnRfZnJvbV9wY19m dHlwZSAqYnJlYWtwb2ludF9mcm9tX3BjOwotICAgZ2RiYXJjaF9yZW1vdGVfYnJlYWtwb2ludF9m cm9tX3BjX2Z0eXBlICpyZW1vdGVfYnJlYWtwb2ludF9mcm9tX3BjOwotQEAgLTQwNSw2ICs0MDYs NyBAQCBzdHJ1Y3QgZ2RiYXJjaCBzdGFydHVwX2dkYmFyY2ggPQotICAgZGVmYXVsdF9yZXR1cm5f aW5fZmlyc3RfaGlkZGVuX3BhcmFtX3AsICAvKiByZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFt X3AgKi8KLSAgIDAsICAvKiBza2lwX3Byb2xvZ3VlICovCi0gICAwLCAgLyogc2tpcF9tYWluX3By b2xvZ3VlICovCi0rICAwLCAgLyogc2tpcF9lbnRyeXBvaW50ICovCi0gICAwLCAgLyogaW5uZXJf dGhhbiAqLwotICAgMCwgIC8qIGJyZWFrcG9pbnRfZnJvbV9wYyAqLwotICAgZGVmYXVsdF9yZW1v dGVfYnJlYWtwb2ludF9mcm9tX3BjLCAgLyogcmVtb3RlX2JyZWFrcG9pbnRfZnJvbV9wYyAqLwot QEAgLTcxNCw2ICs3MTYsNyBAQCB2ZXJpZnlfZ2RiYXJjaCAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gpCi0gICBpZiAoZ2RiYXJjaC0+c2tpcF9wcm9sb2d1ZSA9PSAwKQotICAgICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGxvZywgIlxuXHRza2lwX3Byb2xvZ3VlIik7Ci0gICAvKiBTa2lwIHZlcmlmeSBv ZiBza2lwX21haW5fcHJvbG9ndWUsIGhhcyBwcmVkaWNhdGUuICAqLwotKyAgLyogU2tpcCB2ZXJp Znkgb2Ygc2tpcF9lbnRyeXBvaW50LCBoYXMgcHJlZGljYXRlLiAgKi8KLSAgIGlmIChnZGJhcmNo LT5pbm5lcl90aGFuID09IDApCi0gICAgIGZwcmludGZfdW5maWx0ZXJlZCAobG9nLCAiXG5cdGlu bmVyX3RoYW4iKTsKLSAgIGlmIChnZGJhcmNoLT5icmVha3BvaW50X2Zyb21fcGMgPT0gMCkKLUBA IC0xMzUzLDYgKzEzNTYsMTIgQEAgZ2RiYXJjaF9kdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgc3RydWN0IHVpX2ZpbGUgKmZpbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNo X2R1bXA6IHNpbmdsZV9zdGVwX3Rocm91Z2hfZGVsYXkgPSA8JXM+XG4iLAotICAgICAgICAgICAg ICAgICAgICAgICBob3N0X2FkZHJlc3NfdG9fc3RyaW5nIChnZGJhcmNoLT5zaW5nbGVfc3RlcF90 aHJvdWdoX2RlbGF5KSk7Ci0gICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAg ICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X3AoKSA9 ICVkXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoX3NraXBfZW50cnlwb2ludF9w IChnZGJhcmNoKSk7Ci0rICBmcHJpbnRmX3VuZmlsdGVyZWQgKGZpbGUsCi0rICAgICAgICAgICAg ICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHNraXBfZW50cnlwb2ludCA9IDwlcz5cbiIsCi0rICAg ICAgICAgICAgICAgICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnNraXBf ZW50cnlwb2ludCkpOwotKyAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAotICAgICAgICAgICAg ICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX3NraXBfbWFpbl9wcm9sb2d1ZV9wKCkg PSAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9za2lwX21haW5fcHJvbG9n dWVfcCAoZ2RiYXJjaCkpOwotICAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAotQEAgLTI3MDMs NiArMjcxMiwzMCBAQCBzZXRfZ2RiYXJjaF9za2lwX21haW5fcHJvbG9ndWUgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAotIH0KLSAKLSBpbnQKLStnZGJhcmNoX3NraXBfZW50cnlwb2ludF9wIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5V TEwpOwotKyAgcmV0dXJuIGdkYmFyY2gtPnNraXBfZW50cnlwb2ludCAhPSBOVUxMOwotK30KLSsK LStDT1JFX0FERFIKLStnZGJhcmNoX3NraXBfZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIENPUkVfQUREUiBpcCkKLSt7Ci0rICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwp OwotKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaC0+c2tpcF9lbnRyeXBvaW50ICE9IE5VTEwpOwotKyAg aWYgKGdkYmFyY2hfZGVidWcgPj0gMikKLSsgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3Rk bG9nLCAiZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQgY2FsbGVkXG4iKTsKLSsgIHJldHVybiBnZGJh cmNoLT5za2lwX2VudHJ5cG9pbnQgKGdkYmFyY2gsIGlwKTsKLSt9Ci0rCi0rdm9pZAotK3NldF9n ZGJhcmNoX3NraXBfZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoX3NraXBfZW50cnlwb2ludF9mdHlwZSBza2lw X2VudHJ5cG9pbnQpCi0rewotKyAgZ2RiYXJjaC0+c2tpcF9lbnRyeXBvaW50ID0gc2tpcF9lbnRy eXBvaW50OwotK30KLSsKLStpbnQKLSBnZGJhcmNoX2lubmVyX3RoYW4gKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBDT1JFX0FERFIgbGhzLCBDT1JFX0FERFIgcmhzKQotIHsKLSAgIGdkYl9hc3Nl cnQgKGdkYmFyY2ggIT0gTlVMTCk7Ci0tLS0gYS9nZGIvZ2RiYXJjaC5oCi0rKysgYi9nZGIvZ2Ri YXJjaC5oCi1AQCAtNDg2LDYgKzQ4NiwyNCBAQCB0eXBlZGVmIENPUkVfQUREUiAoZ2RiYXJjaF9z a2lwX21haW5fcHJvbG9ndWVfZnR5cGUpIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQwotIGV4 dGVybiBDT1JFX0FERFIgZ2RiYXJjaF9za2lwX21haW5fcHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoLCBDT1JFX0FERFIgaXApOwotIGV4dGVybiB2b2lkIHNldF9nZGJhcmNoX3NraXBf bWFpbl9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfc2tpcF9tYWlu X3Byb2xvZ3VlX2Z0eXBlICpza2lwX21haW5fcHJvbG9ndWUpOwotIAotKy8qIE9uIHNvbWUgcGxh dGZvcm1zLCBhIHNpbmdsZSBmdW5jdGlvbiBtYXkgcHJvdmlkZSBtdWx0aXBsZSBlbnRyeSBwb2lu dHMsCi0rICAgZS5nLiBvbmUgdGhhdCBpcyB1c2VkIGZvciBmdW5jdGlvbi1wb2ludGVyIGNhbGxz IGFuZCBhIGRpZmZlcmVudCBvbmUKLSsgICB0aGF0IGlzIHVzZWQgZm9yIGRpcmVjdCBmdW5jdGlv biBjYWxscy4KLSsgICBJbiBvcmRlciB0byBlbnN1cmUgdGhhdCBicmVha3BvaW50cyBzZXQgb24g dGhlIGZ1bmN0aW9uIHdpbGwgdHJpZ2dlcgotKyAgIG5vIG1hdHRlciB2aWEgd2hpY2ggZW50cnkg cG9pbnQgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQsIGEgcGxhdGZvcm0KLSsgICBtYXkgcHJvdmlk ZSB0aGUgc2tpcF9lbnRyeXBvaW50IGNhbGxiYWNrLiAgSXQgaXMgY2FsbGVkIHdpdGggSVAgc2V0 Ci0rICAgdG8gdGhlIG1haW4gZW50cnkgcG9pbnQgb2YgYSBmdW5jdGlvbiAoYXMgZGV0ZXJtaW5l ZCBieSB0aGUgc3ltYm9sIHRhYmxlKSwKLSsgICBhbmQgc2hvdWxkIHJldHVybiB0aGUgYWRkcmVz cyBvZiB0aGUgaW5uZXJtb3N0IGVudHJ5IHBvaW50LCB3aGVyZSB0aGUKLSsgICBhY3R1YWwgYnJl YWtwb2ludCBuZWVkcyB0byBiZSBzZXQuICBOb3RlIHRoYXQgc2tpcF9lbnRyeXBvaW50IGlzIHVz ZWQKLSsgICBieSBHREIgY29tbW9uIGNvZGUgZXZlbiB3aGVuIGRlYnVnZ2luZyBvcHRpbWl6ZWQg Y29kZSwgd2hlcmUgc2tpcF9wcm9sb2d1ZQotKyAgIGlzIG5vdCB1c2VkLiAqLwotKwotK2V4dGVy biBpbnQgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp OwotKwotK3R5cGVkZWYgQ09SRV9BRERSIChnZGJhcmNoX3NraXBfZW50cnlwb2ludF9mdHlwZSkg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgaXApOwotK2V4dGVybiBDT1JFX0FE RFIgZ2RiYXJjaF9za2lwX2VudHJ5cG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JF X0FERFIgaXApOwotK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3NraXBfZW50cnlwb2ludCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50X2Z0eXBlICpza2lw X2VudHJ5cG9pbnQpOwotKwotIHR5cGVkZWYgaW50IChnZGJhcmNoX2lubmVyX3RoYW5fZnR5cGUp IChDT1JFX0FERFIgbGhzLCBDT1JFX0FERFIgcmhzKTsKLSBleHRlcm4gaW50IGdkYmFyY2hfaW5u ZXJfdGhhbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBsaHMsIENPUkVfQURE UiByaHMpOwotIGV4dGVybiB2b2lkIHNldF9nZGJhcmNoX2lubmVyX3RoYW4gKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLCBnZGJhcmNoX2lubmVyX3RoYW5fZnR5cGUgKmlubmVyX3RoYW4pOwotLS0t IGEvZ2RiL2dkYmFyY2guc2gKLSsrKyBiL2dkYi9nZGJhcmNoLnNoCi1AQCAtNTMwLDYgKzUzMCwx OSBAQCBtOmludDpyZXR1cm5faW5fZmlyc3RfaGlkZGVuX3BhcmFtX3A6c3RydWN0IHR5cGUgKnR5 cGU6dHlwZTo6ZGVmYXVsdF9yZXR1cm5faW5fZgotIAotIG06Q09SRV9BRERSOnNraXBfcHJvbG9n dWU6Q09SRV9BRERSIGlwOmlwOjA6MAotIE06Q09SRV9BRERSOnNraXBfbWFpbl9wcm9sb2d1ZTpD T1JFX0FERFIgaXA6aXAKLSsjIE9uIHNvbWUgcGxhdGZvcm1zLCBhIHNpbmdsZSBmdW5jdGlvbiBt YXkgcHJvdmlkZSBtdWx0aXBsZSBlbnRyeSBwb2ludHMsCi0rIyBlLmcuIG9uZSB0aGF0IGlzIHVz ZWQgZm9yIGZ1bmN0aW9uLXBvaW50ZXIgY2FsbHMgYW5kIGEgZGlmZmVyZW50IG9uZQotKyMgdGhh dCBpcyB1c2VkIGZvciBkaXJlY3QgZnVuY3Rpb24gY2FsbHMuCi0rIyBJbiBvcmRlciB0byBlbnN1 cmUgdGhhdCBicmVha3BvaW50cyBzZXQgb24gdGhlIGZ1bmN0aW9uIHdpbGwgdHJpZ2dlcgotKyMg bm8gbWF0dGVyIHZpYSB3aGljaCBlbnRyeSBwb2ludCB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZCwg YSBwbGF0Zm9ybQotKyMgbWF5IHByb3ZpZGUgdGhlIHNraXBfZW50cnlwb2ludCBjYWxsYmFjay4g IEl0IGlzIGNhbGxlZCB3aXRoIElQIHNldAotKyMgdG8gdGhlIG1haW4gZW50cnkgcG9pbnQgb2Yg YSBmdW5jdGlvbiAoYXMgZGV0ZXJtaW5lZCBieSB0aGUgc3ltYm9sIHRhYmxlKSwKLSsjIGFuZCBz aG91bGQgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBpbm5lcm1vc3QgZW50cnkgcG9pbnQsIHdo ZXJlIHRoZQotKyMgYWN0dWFsIGJyZWFrcG9pbnQgbmVlZHMgdG8gYmUgc2V0LiAgTm90ZSB0aGF0 IHNraXBfZW50cnlwb2ludCBpcyB1c2VkCi0rIyBieSBHREIgY29tbW9uIGNvZGUgZXZlbiB3aGVu IGRlYnVnZ2luZyBvcHRpbWl6ZWQgY29kZSwgd2hlcmUgc2tpcF9wcm9sb2d1ZQotKyMgaXMgbm90 IHVzZWQuCi0rTTpDT1JFX0FERFI6c2tpcF9lbnRyeXBvaW50OkNPUkVfQUREUiBpcDppcAotKwot IGY6aW50OmlubmVyX3RoYW46Q09SRV9BRERSIGxocywgQ09SRV9BRERSIHJoczpsaHMsIHJoczow OjAKLSBtOmNvbnN0IGdkYl9ieXRlICo6YnJlYWtwb2ludF9mcm9tX3BjOkNPUkVfQUREUiAqcGNw dHIsIGludCAqbGVucHRyOnBjcHRyLCBsZW5wdHI6OjA6Ci0gIyBSZXR1cm4gdGhlIGFkanVzdGVk IGFkZHJlc3MgYW5kIGtpbmQgdG8gdXNlIGZvciBaMC9aMSBwYWNrZXRzLgotLS0tIGEvZ2RiL2lu ZnJ1bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC0zMTU5LDYgKzMxNTksMTAgQEAgZmlsbF9p bl9zdG9wX2Z1bmMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICAgIGVjcy0+c3RvcF9m dW5jX3N0YXJ0Ci0gCSs9IGdkYmFyY2hfZGVwcmVjYXRlZF9mdW5jdGlvbl9zdGFydF9vZmZzZXQg KGdkYmFyY2gpOwotIAotKyAgICAgIGlmIChnZGJhcmNoX3NraXBfZW50cnlwb2ludF9wIChnZGJh cmNoKSkKLSsJZWNzLT5zdG9wX2Z1bmNfc3RhcnQgPSBnZGJhcmNoX3NraXBfZW50cnlwb2ludCAo Z2RiYXJjaCwKLSsJCQkJCQkJZWNzLT5zdG9wX2Z1bmNfc3RhcnQpOwotKwotICAgICAgIGVjcy0+ c3RvcF9mdW5jX2ZpbGxlZF9pbiA9IDE7Ci0gICAgIH0KLSB9Ci0tLS0gYS9nZGIvcHBjLWxpbnV4 LXRkZXAuYwotKysrIGIvZ2RiL3BwYy1saW51eC10ZGVwLmMKLUBAIC00NCw2ICs0NCw3IEBACi0g I2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gI2luY2x1ZGUgImF1eHYuaCIKLSAjaW5jbHVkZSAiZWxm L2NvbW1vbi5oIgotKyNpbmNsdWRlICJlbGYvcHBjNjQuaCIKLSAjaW5jbHVkZSAiZXhjZXB0aW9u cy5oIgotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gI2luY2x1ZGUgInNwdS10ZGVwLmgiCi1A QCAtODc2LDYgKzg3Nyw1NSBAQCBwcGNfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAgICAgfQotIH0KLSAKLSsKLSsvKiBJbXBsZW1lbnRhdGlv biBvZiBgZ2RiYXJjaF9lbGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwnLCBhcyBkZWZpbmVkIGluCi0r ICAgZ2RiYXJjaC5oLiAgVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkIGZvciB0aGUgRUxGdjIg QUJJIG9ubHkuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHBjX2VsZnYyX2VsZl9tYWtlX21zeW1i b2xfc3BlY2lhbCAoYXN5bWJvbCAqc3ltLCBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW0pCi0r ewotKyAgZWxmX3N5bWJvbF90eXBlICplbGZfc3ltID0gKGVsZl9zeW1ib2xfdHlwZSAqKXN5bTsK LSsKLSsgIC8qIElmIHRoZSBzeW1ib2wgaXMgbWFya2VkIGFzIGhhdmluZyBhIGxvY2FsIGVudHJ5 IHBvaW50LCBzZXQgYSB0YXJnZXQKLSsgICAgIGZsYWcgaW4gdGhlIG1zeW1ib2wuICBXZSBjdXJy ZW50bHkgb25seSBzdXBwb3J0IGxvY2FsIGVudHJ5IHBvaW50Ci0rICAgICBvZmZzZXRzIG9mIDgg Ynl0ZXMsIHdoaWNoIGlzIHRoZSBvbmx5IGVudHJ5IHBvaW50IG9mZnNldCBldmVyIHVzZWQKLSsg ICAgIGJ5IGN1cnJlbnQgY29tcGlsZXJzLiAgSWYvd2hlbiBvdGhlciBvZmZzZXRzIGFyZSBldmVy IHVzZWQsIHdlIHdpbGwKLSsgICAgIGhhdmUgdG8gdXNlIGFkZGl0aW9uYWwgdGFyZ2V0IGZsYWcg Yml0cyB0byBzdG9yZSB0aGVtLiAgKi8KLSsgIHN3aXRjaCAoUFBDNjRfTE9DQUxfRU5UUllfT0ZG U0VUIChlbGZfc3ltLT5pbnRlcm5hbF9lbGZfc3ltLnN0X290aGVyKSkKLSsgICAgewotKyAgICBk ZWZhdWx0OgotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIDg6Ci0rICAgICAgTVNZTUJPTF9UQVJH RVRfRkxBR18xIChtc3ltKSA9IDE7Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSt9Ci0rCi0rLyog SW1wbGVtZW50YXRpb24gb2YgYGdkYmFyY2hfc2tpcF9lbnRyeXBvaW50JywgYXMgZGVmaW5lZCBp bgotKyAgIGdkYmFyY2guaC4gIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgdXNlZCBmb3IgdGhlIEVM RnYyIEFCSSBvbmx5LiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rcHBjX2VsZnYyX3NraXBf ZW50cnlwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKLSt7Ci0r ICBzdHJ1Y3QgYm91bmRfbWluaW1hbF9zeW1ib2wgZnVuOwotKyAgaW50IGxvY2FsX2VudHJ5X29m ZnNldCA9IDA7Ci0rCi0rICBmdW4gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsK LSsgIGlmIChmdW4ubWluc3ltID09IE5VTEwpCi0rICAgIHJldHVybiBwYzsKLSsKLSsgIC8qIFNl ZSBwcGNfZWxmdjJfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsIGZvciBob3cgbG9jYWwgZW50cnkg cG9pbnQKLSsgICAgIG9mZnNldCB2YWx1ZXMgYXJlIGVuY29kZWQuICAqLwotKyAgaWYgKE1TWU1C T0xfVEFSR0VUX0ZMQUdfMSAoZnVuLm1pbnN5bSkpCi0rICAgIGxvY2FsX2VudHJ5X29mZnNldCA9 IDg7Ci0rCi0rICBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGZ1bi5taW5zeW0pIDw9IHBjCi0r ICAgICAgJiYgcGMgPCBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZnVuLm1pbnN5bSkgKyBsb2NhbF9l bnRyeV9vZmZzZXQpCi0rICAgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZnVuLm1pbnN5 bSkgKyBsb2NhbF9lbnRyeV9vZmZzZXQ7Ci0rCi0rICByZXR1cm4gcGM7Ci0rfQotKwotIC8qIElt cGxlbWVudGF0aW9uIG9mIGBnZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQnLCBhcyBkZWZp bmVkIGluCi0gICAgZ2RiYXJjaC5oLiAgKi8KLSAKLUBAIC0xMzQ5LDYgKzEzOTksMTMgQEAgcHBj X2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sCi0gCSAgc2V0X2dkYmFy Y2hfZWxmX21ha2VfbXN5bWJvbF9zcGVjaWFsCi0gCSAgICAoZ2RiYXJjaCwgcHBjNjRfZWxmX21h a2VfbXN5bWJvbF9zcGVjaWFsKTsKLSAJfQotKyAgICAgIGVsc2UKLSsJewotKwkgIHNldF9nZGJh cmNoX2VsZl9tYWtlX21zeW1ib2xfc3BlY2lhbAotKwkgICAgKGdkYmFyY2gsIHBwY19lbGZ2Ml9l bGZfbWFrZV9tc3ltYm9sX3NwZWNpYWwpOwotKwotKwkgIHNldF9nZGJhcmNoX3NraXBfZW50cnlw b2ludCAoZ2RiYXJjaCwgcHBjX2VsZnYyX3NraXBfZW50cnlwb2ludCk7Ci0rCX0KLSAKLSAgICAg ICAvKiBTaGFyZWQgbGlicmFyeSBoYW5kbGluZy4gICovCi0gICAgICAgc2V0X2dkYmFyY2hfc2tp cF90cmFtcG9saW5lX2NvZGUgKGdkYmFyY2gsIHBwYzY0X3NraXBfdHJhbXBvbGluZV9jb2RlKTsK LS0tLSBhL2dkYi9zeW10YWIuYwotKysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtMjk1MCw2ICsyOTUw LDggQEAgc2tpcF9wcm9sb2d1ZV9zYWwgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCkKLSAK LSAgICAgICAvKiBTa2lwICJmaXJzdCBsaW5lIiBvZiBmdW5jdGlvbiAod2hpY2ggaXMgYWN0dWFs bHkgaXRzIHByb2xvZ3VlKS4gICovCi0gICAgICAgcGMgKz0gZ2RiYXJjaF9kZXByZWNhdGVkX2Z1 bmN0aW9uX3N0YXJ0X29mZnNldCAoZ2RiYXJjaCk7Ci0rICAgICAgaWYgKGdkYmFyY2hfc2tpcF9l bnRyeXBvaW50X3AgKGdkYmFyY2gpKQotKyAgICAgICAgcGMgPSBnZGJhcmNoX3NraXBfZW50cnlw b2ludCAoZ2RiYXJjaCwgcGMpOwotICAgICAgIGlmIChza2lwKQotIAlwYyA9IGdkYmFyY2hfc2tp cF9wcm9sb2d1ZSAoZ2RiYXJjaCwgcGMpOwotIAotIyMjIGEvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VM b2cKLSMjIyBiL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0jIyAtMSw1ICsxLDEyIEBACi0gMjAx NC0wMi0wNCAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotIAotKwkqIGdk Yi5iYXNlL3NpZ2JwdC5leHA6IERvIG5vdCB1c2UgIioiIHdoZW4gc2V0dGluZyBicmVha3BvaW50 Ci0rCW9uIGEgZnVuY3Rpb24uCi0rCSogZ2RiLmJhc2Uvc3RlcC1idC5jOiBDYWxsIGhlbGxvIHZp YSBmdW5jdGlvbiBwb2ludGVyIHRvIG1ha2UKLSsJc3VyZSBpdHMgZmlyc3QgaW5zdHJ1Y3Rpb24g aXMgZXhlY3V0ZWQgb24gcG93ZXJwYzY0bGUtbGludXguCi0rCi0rMjAxNC0wMi0wNCAgVWxyaWNo IFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwotIAkqIGdkYi5hcmNoL3Bvd2VycGMt ZDEyOC1yZWdzLmV4cDogRW5hYmxlIG9uIHBvd2VycGM2NCotKi4KLSAKLSAyMDE0LTAyLTA0ICBV bHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0tLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3NpZ2JwdC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYnB0 LmV4cAotQEAgLTc2LDcgKzc2LDcgQEAgZ2RiX3Rlc3QgImJyZWFrIGtlZXBlciIKLSBzZXQgYm93 bGVyX2FkZHJzIGJvd2xlcgotIHNldCBzZWd2X2FkZHIgbm9uZQotIGdkYl90ZXN0IHtkaXNwbGF5 L2kgJHBjfQotLWdkYl90ZXN0ICJhZHZhbmNlICpib3dsZXIiICJib3dsZXIuKiIgImFkdmFuY2Ug dG8gdGhlIGJvd2xlciIKLStnZGJfdGVzdCAiYWR2YW5jZSBib3dsZXIiICJib3dsZXIuKiIgImFk dmFuY2UgdG8gdGhlIGJvd2xlciIKLSBzZXQgdGVzdCAic3RlcHBpbmcgdG8gZmF1bHQiCi0gc2V0 IHNpZ25hbWUgIlNJR1NFR1YiCi0gZ2RiX3Rlc3RfbXVsdGlwbGUgInN0ZXBpIiAiJHRlc3QiIHsK LS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RlcC1idC5jCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3N0ZXAtYnQuYwotQEAgLTIzLDEwICsyMywxOSBAQCBoZWxsbyAodm9pZCkK LSAgIHByaW50ZiAoIkhlbGxvIHdvcmxkLlxuIik7Ci0gfQotIAotKy8qIFRoZSB0ZXN0IGNhc2Ug dXNlcyAiYnJlYWsgKmhlbGxvIiB0byBtYWtlIHN1cmUgdG8gc3RlcCBhdCB0aGUgdmVyeQotKyAg IGZpcnN0IGluc3RydWN0aW9uIG9mIHRoZSBmdW5jdGlvbi4gIFRoaXMgY2F1c2VzIGEgcHJvYmxl bSBydW5uaW5nCi0rICAgdGhlIHRlc3Qgb24gcG93ZXJwYzY0bGUtbGludXgsIHNpbmNlIHRoZSBm aXJzdCBpbnN0cnVjdGlvbiBiZWxvbmdzCi0rICAgdG8gdGhlIGdsb2JhbCBlbnRyeSBwb2ludCBw cm9sb2d1ZSwgd2hpY2ggaXMgc2tpcHBlZCB3aGVuIGRvaW5nIGEKLSsgICBsb2NhbCBkaXJlY3Qg ZnVuY3Rpb24gY2FsbC4gIFRvIG1ha2Ugc3VyZSB0aGF0IGZpcnN0IGluc3RydWN0aW9uIGlzCi0r ICAgaW5kZWVkIGJlaW5nIGV4ZWN1dGVkIGFuZCB0aGUgYnJlYWtwb2ludCBoaXRzLCB3ZSBtYWtl IHN1cmUgdG8gY2FsbAotKyAgIHRoZSByb3V0aW5lIHZpYSBhbiBpbmRpcmVjdCBjYWxsLiAgKi8K LSt2b2lkICgqcHRyKSAodm9pZCkgPSBoZWxsbzsKLSsKLSBpbnQKLSBtYWluICh2b2lkKQotIHsK LS0gIGhlbGxvICgpOwotKyAgcHRyICgpOwotIAotICAgcmV0dXJuIDA7Ci0gfQoKZGlmZiAtLWdp dCBhL2dkYi11cHN0cmVhbS1wcGM2NGxlMTVvZjE1LnBhdGNoIGIvZ2RiLXVwc3RyZWFtLXBwYzY0 bGUxNW9mMTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2MWJmNjguLjAw MDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw5MCArMCwwIEBACi1jb21taXQgYmM5YTU1MjUzZWQ3MTIyY2ZlZWU5MGNkMjNkOTY0 ZjQ0YzhiMGU2YQotQXV0aG9yOiBVbHJpY2ggV2VpZ2FuZCA8dWxyaWNoLndlaWdhbmRAZGUuaWJt LmNvbT4KLURhdGU6ICAgVHVlIE1hciAyNSAxNTozOTozMiAyMDE0ICswMTAwCi0KLSAgICBTdXBw b3J0IGdkYi5hc20vYXNtLXNvdXJjZS5leHAgb24gcG93ZXJwYzY0bGUKLSAgICAKLSAgICBBZGQg bmV3IHBvd2VycGM2NGxlLmluYyBmaWxlIGFwcHJvcHJpYXRlIGZvciB0aGUgRUxGdjIgQUJJIGFu ZAotICAgIHVzZSBpdCB0byBzdXBwb3J0IHRoZSBhc20tc291cmNlLmV4cCB0ZXN0IGNhc2Ugb24g cG93ZXJwYzY0bGUuCi0gICAgCi0gICAgZ2RiL3Rlc3RzdWl0ZS8KLSAgICAyMDE0LTAzLTI1ICBV bHJpY2ggV2VpZ2FuZCAgPHV3ZWlnYW5kQGRlLmlibS5jb20+Ci0gICAgCi0gICAgCSogZ2RiLmFz bS9hc20tc291cmNlLmV4cDogSGFuZGxlIHBvd2VycGM2NGxlLSogdGFyZ2V0cy4KLSAgICAJKiBn ZGIuYXNtL3Bvd2VycGM2NGxlLmluYzogTmV3IGZpbGUuCi0KLSMjIyBhL2dkYi90ZXN0c3VpdGUv Q2hhbmdlTG9nCi0jIyMgYi9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMgLTEsMyArMSw4IEBA Ci0rMjAxNC0wMy0yNSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgotKwot KwkqIGdkYi5hc20vYXNtLXNvdXJjZS5leHA6IEhhbmRsZSBwb3dlcnBjNjRsZS0qIHRhcmdldHMu Ci0rCSogZ2RiLmFzbS9wb3dlcnBjNjRsZS5pbmM6IE5ldyBmaWxlLgotKwotIDIwMTQtMDMtMjUg IFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCSAgICBEb3VnIEV2YW5zICA8ZGpl QGdvb2dsZS5jb20+Ci0gCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAotQEAgLTk3LDYg Kzk3LDExIEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKLSAgICAgIm1pcHMqLSoiIHsK LSAgICAgICAgIHNldCBhc20tYXJjaCBtaXBzCi0gICAgIH0KLSsgICAgInBvd2VycGM2NGxlLSoi IHsKLSsgICAgICAgIHNldCBhc20tYXJjaCBwb3dlcnBjNjRsZQotKyAgICAgICAgc2V0IGFzbS1m bGFncyAiLWE2NCAtSSR7c3JjZGlyfS8ke3N1YmRpcn0gJG9ial9pbmNsdWRlIgotKyAgICAgICAg YXBwZW5kIGxpbmstZmxhZ3MgIiAtbSBlbGY2NGxwcGMiCi0rICAgIH0KLSAgICAgInBvd2VycGMq LSoiIHsKLSAgICAgICAgIGlmIHsgW2lzX2xwNjRfdGFyZ2V0XSB9IHsKLSAgICAgICAgICAgICBz ZXQgYXNtLWFyY2ggcG93ZXJwYzY0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5hc20vcG93ZXJwYzY0bGUuaW5jCi1AQCAtMCwwICsxLDQ3IEBACi0rCWNvbW1lbnQgInN1 YnJvdXRpbmUgcHJvbG9ndWUiCi0rCS5tYWNybyBnZGJhc21fZW50ZXIKLSsJc3RkdSAxLCAtMzIo MSkKLSsJbWZsciAwCi0rCXN0ZCAwLCA0OCgxKQotKwkuZW5kbQotKwotKwljb21tZW50ICJzdWJy b3V0aW5lIGVwaWxvZ3VlIgotKwkubWFjcm8gZ2RiYXNtX2xlYXZlCi0rCWxkIDAsIDQ4KDEpCi0r CW10bHIgMAotKwlsZCAxLCAwKDEpCi0rCWJscgotKwkuZW5kbQotKwotKwkubWFjcm8gZ2RiYXNt X2NhbGwgc3VicgotKwlibCBcc3VicgotKwlub3AKLSsJLmVuZG0KLSsKLSsJLm1hY3JvIGdkYmFz bV9zZXZlcmFsX25vcHMKLSsJbm9wCi0rCW5vcAotKwlub3AKLSsJbm9wCi0rCS5lbmRtCi0rCi0r CWNvbW1lbnQgImV4aXQgKDApIgotKwkubWFjcm8gZ2RiYXNtX2V4aXQwCi0rCWNvbW1lbnQgInN5 c19leGl0IgotKwlsaQkwLCAxCi0rCXNjCi0rCS5lbmRtCi0rCi0rCWNvbW1lbnQgImNydDAgc3Rh cnR1cCIKLSsJLm1hY3JvIGdkYmFzbV9zdGFydHVwCi0rCS5hYml2ZXJzaW9uIDIKLSsJLnAyYWxp Z24gMgotKwkuZW5kbQotKwotKwljb21tZW50ICJEZWNsYXJlIGEgZGF0YSB2YXJpYWJsZSIKLSsJ LnB1cmdlbSBnZGJhc21fZGF0YXZhcgotKwkubWFjcm8gZ2RiYXNtX2RhdGF2YXIgbmFtZSB2YWx1 ZQotKwkuc2VjdGlvbgkiLmRhdGEiCi0rXG5hbWU6Ci0rCS5sb25nIFx2YWx1ZQotKwkuZW5kbQoK ZGlmZiAtLWdpdCBhL2dkYi11cHN0cmVhbS5wYXRjaCBiL2dkYi11cHN0cmVhbS5wYXRjaAppbmRl eCA1MzhmZTM1Li4yMWE2ZDIwIDEwMDY0NAotLS0gYS9nZGItdXBzdHJlYW0ucGF0Y2gKKysrIGIv Z2RiLXVwc3RyZWFtLnBhdGNoCkBAIC0xLDM2OSArMSwzMjEgQEAKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItcGF0Y2hlcy8yMDE0LTAyL21zZzAwMTc5Lmh0bWwKLVN1YmplY3Q6IFtvYnZd IHRlc3RzdWl0ZTogRml4IGkzODYtc3NlLXN0YWNrLWFsaWduLmV4cCByZWdyZXNzaW9uIHNpbmNl IEdEQl9QQVJBTExFTAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQt MDYvbXNnMDA2NTYuaHRtbAorU3ViamVjdDogUmU6IFJlZ3Jlc3Npb24gd2l0aCBkZWZhdWx0IHNj aGVkdWxlci1sb2NraW5nPXN0ZXAgIFtSZTogW3B1c2hlZF0gQ29uc2VjdXRpdmUgc3RlcC1vdmVy cyB0cmlnZ2VyIGludGVybmFsIGVycm9yLl0KIAorT24gMDYvMTcvMjAxNCAwODoyNCBQTSwgSmFu IEtyYXRvY2h2aWwgd3JvdGU6Cis+IE9uIFR1ZSwgMjIgQXByIDIwMTQgMjA6MjQ6MjggKzAyMDAs IFBlZHJvIEFsdmVzIHdyb3RlOgorPj4gVGVzdGVkIG9uIHg4Nl82NCBGZWRvcmEgMTcsIG5hdGl2 ZSBhbmQgZ2Ric2VydmVyLCBhbmQgYWxzbyBuYXRpdmUgb24KKz4+IHRvcCBvZiBteSAic29mdHdh cmUgc2luZ2xlLXN0ZXAgb24geDg2XzY0IiBzZXJpZXMuCis+IAorPiA0ODM4MDVjZjllYTVhNmRh Y2U0MTQxNWQ4ODMwZTkzZmNjYzQ5YzQzIGlzIHRoZSBmaXJzdCBiYWQgY29tbWl0Cis+IGNvbW1p dCA0ODM4MDVjZjllYTVhNmRhY2U0MTQxNWQ4ODMwZTkzZmNjYzQ5YzQzCis+IEF1dGhvcjogUGVk cm8gQWx2ZXMgPHBhbHZlc0ByZWRoYXQuY29tPgorPiBEYXRlOiAgIFR1ZSBBcHIgMjIgMTU6MDA6 NTYgMjAxNCArMDEwMAorPiAgICAgQ29uc2VjdXRpdmUgc3RlcC1vdmVycyB0cmlnZ2VyIGludGVy bmFsIGVycm9yLgorPiAgICAgCis+IChnZGIpIG5leHReTQorPiBbVGhyZWFkIDB4N2ZmZmY3ZmRh NzAwIChMV1AgMjcxNjgpIGV4aXRlZF1eTQorPiBbTmV3IExXUCAyNzE2OF1eTQorPiBbVGhyZWFk IDB4N2ZmZmY3NGVlNzAwIChMV1AgMjcxNzQpIGV4aXRlZF1eTQorPiBwcm9jZXNzIDI3MTY4IGlz IGV4ZWN1dGluZyBuZXcgcHJvZ3JhbTogL2hvbWUvamtyYXRvY2gvcmVkaGF0L2dkYi1jbGVhbi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3RocmVhZC1leGVjbF5NCis+IFtUaHJlYWQgZGVidWdn aW5nIHVzaW5nIGxpYnRocmVhZF9kYiBlbmFibGVkXV5NCis+IFVzaW5nIGhvc3QgbGlidGhyZWFk X2RiIGxpYnJhcnkgIi9saWI2NC9saWJ0aHJlYWRfZGIuc28uMSIuXk0KKz4gaW5mcnVuLmM6NTIy NTogaW50ZXJuYWwtZXJyb3I6IHN3aXRjaF9iYWNrX3RvX3N0ZXBwZWRfdGhyZWFkOiBBc3NlcnRp b24gYCFzY2hlZGxvY2tfYXBwbGllcyAoMSknIGZhaWxlZC5eTQorPiBBIHByb2JsZW0gaW50ZXJu YWwgdG8gR0RCIGhhcyBiZWVuIGRldGVjdGVkLF5NCis+IGZ1cnRoZXIgZGVidWdnaW5nIG1heSBw cm92ZSB1bnJlbGlhYmxlLl5NCis+IFF1aXQgdGhpcyBkZWJ1Z2dpbmcgc2Vzc2lvbj8gKHkgb3Ig bikgRkFJTDogZ2RiLnRocmVhZHMvdGhyZWFkLWV4ZWNsLmV4cDogZ2V0IHRvIG1haW4gaW4gbmV3 IGltYWdlIChHREIgaW50ZXJuYWwgZXJyb3IpCis+IFJlc3luY2luZyBkdWUgdG8gaW50ZXJuYWwg ZXJyb3IuCiAKLS0tdTMvclpSbXhMNk1ta0syNAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBj aGFyc2V0PXVzLWFzY2lpCi1Db250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKK1RoYW5rcyBKYW4u CiAKLUhpIFRvbSwKKz4gCis+IFRoZSByZWdyZXNzaW9ucyBoYXBwZW5zIG9ubHkgd2l0aCB0aGUg YXR0YWNoZWQgcGF0Y2ggd2hpY2ggSSBhbSBub3Qgc3VyZSBpZiBpdAorPiBpcyBjb25zaWRlcmVk IGFzIGEgdmFsaWQgRlNGIEdEQiByZWdyZXNzaW9uIG9yIG5vdCBidXQgSSB0aGluayBpdCBpcy4K IAotJCBtYWtlIGNoZWNrLy91bml4Ly1tMzIgUlVOVEVTVEZMQUdTPSJnZGIuYXJjaC9pMzg2LXNz ZS1zdGFjay1hbGlnbi5leHAgR0RCX1BBUkFMTEVMPTEiCi1bLi4uXQotUnVubmluZyAvaG9tZS9q a3JhdG9jaC9yZWRoYXQvZ2RiLWNsZWFuL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1zc2Ut c3RhY2stYWxpZ24uZXhwIC4uLgotRVJST1I6ICgvaG9tZS9qa3JhdG9jaC9yZWRoYXQvZ2RiLWNs ZWFuL2dkYi90ZXN0c3VpdGUudW5peC4tbTMyL291dHB1dHMvZ2RiLmFyY2gvaTM4Ni1zc2Utc3Rh Y2stYWxpZ24vaTM4Ni1zc2Utc3RhY2stYWxpZ24pIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkK K0lmIGl0IHdvcmtlZCBiZWZvcmUsIHRoZW4gaXQncyBjZXJ0YWlubHkgYSByZWdyZXNzaW9uLiAg VGhlIHVzZXIgaXMKK2ZyZWUgdG8gZG8gInNldCBzY2hlZHVsZXItbG9ja2luZyBzdGVwIiBoZXJz ZWxmLgogCitIZXJlJ3MgYSBmaXguICBMZXQgbWUga25vdyB3aGF0IHlvdSB0aGluay4KIAotQ2hl Y2tlZCBpbi4KKzg8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis+RnJvbSBmNzE3 Mzc4YzE2Y2IwNGY4MzUwOTM1YTEzMzY3NjdkMjU0MWIzNmE1IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogUGVkcm8gQWx2ZXMgPHBhbHZlc0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAx OCBKdW4gMjAxNCAxNDoyMDozMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggbmV4dCBvdmVy IHRocmVhZGVkIGV4ZWNsIHdpdGggInNldCBzY2hlZHVsZXItbG9ja2luZworU3ViamVjdDogW1BB VENIXSBGaXggbmV4dCBvdmVyIHRocmVhZGVkIGV4ZWNsIHdpdGggInNldCBzY2hlZHVsZXItbG9j a2luZworIHN0ZXAiLgogCitSdW5uaW5nIGdkYi50aHJlYWRzL3RocmVhZC1leGVjbC5leHAgd2l0 aCBzY2hlZHVsZXItbG9ja2luZyBzZXQgdG8KKyJzdGVwIiByZXZlYWxzIGEgcHJvYmxlbToKIAot SmFuCisgKGdkYikgbmV4dF5NCisgW1RocmVhZCAweDdmZmZmN2ZkYTcwMCAoTFdQIDI3MTY4KSBl eGl0ZWRdXk0KKyBbTmV3IExXUCAyNzE2OF1eTQorIFtUaHJlYWQgMHg3ZmZmZjc0ZWU3MDAgKExX UCAyNzE3NCkgZXhpdGVkXV5NCisgcHJvY2VzcyAyNzE2OCBpcyBleGVjdXRpbmcgbmV3IHByb2dy YW06IC9ob21lL2prcmF0b2NoL3JlZGhhdC9nZGItY2xlYW4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy90aHJlYWQtZXhlY2xeTQorIFtUaHJlYWQgZGVidWdnaW5nIHVzaW5nIGxpYnRocmVhZF9k YiBlbmFibGVkXV5NCisgVXNpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeSAiL2xpYjY0L2xp YnRocmVhZF9kYi5zby4xIi5eTQorIGluZnJ1bi5jOjUyMjU6IGludGVybmFsLWVycm9yOiBzd2l0 Y2hfYmFja190b19zdGVwcGVkX3RocmVhZDogQXNzZXJ0aW9uIGAhc2NoZWRsb2NrX2FwcGxpZXMg KDEpJyBmYWlsZWQuXk0KKyBBIHByb2JsZW0gaW50ZXJuYWwgdG8gR0RCIGhhcyBiZWVuIGRldGVj dGVkLF5NCisgZnVydGhlciBkZWJ1Z2dpbmcgbWF5IHByb3ZlIHVucmVsaWFibGUuXk0KKyBRdWl0 IHRoaXMgZGVidWdnaW5nIHNlc3Npb24/ICh5IG9yIG4pIEZBSUw6IGdkYi50aHJlYWRzL3RocmVh ZC1leGVjbC5leHA6IHNjaGVkbG9jayBzdGVwOiBnZXQgdG8gbWFpbiBpbiBuZXcgaW1hZ2UgKEdE QiBpbnRlcm5hbCBlcnJvcikKIAotLS11My9yWlJteEw2TW1rSzI0Ci1Db250ZW50LVR5cGU6IHRl eHQvcGxhaW47IGNoYXJzZXQ9dXMtYXNjaWkKLUNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZTsg ZmlsZW5hbWU9MQorVGhlIGFzc2VydGlvbiBpcyBjb3JyZWN0LiAgVGhlIGlzc3VlIGlzIHRoYXQg R0RCIGlzIG1pc3Rha2VubHkgdHJ5aW5nCit0byBzd2l0Y2ggYmFjayB0byBhbiBleGl0ZWQgdGhy ZWFkLCB0aGF0IHdhcyBwcmV2aW91c2x5IHN0ZXBwaW5nIHdoZW4KK2l0IGV4aXRlZC4gIFRoaXMg aXMgZXhhY3RseSB0aGUgc29ydCBvZiB0aGluZyB0aGUgdGVzdCB3YW50cyB0byBtYWtlCitzdXJl IGRvZXNuJ3QgaGFwcGVuOgogCi1jb21taXQgM2M3N2ZhZjMzZGM0YzdiYjY5M2YwNWY0NDA3N2Vk Njg3ZTlmODIxNwotQXV0aG9yOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4KLURhdGU6ICAgVGh1IEZlYiA2IDIzOjE0OjIwIDIwMTQgKzAxMDAKKwkjIE5vdyBzZXQg YSBicmVha3BvaW50IGF0IGBtYWluJywgYW5kIHN0ZXAgb3ZlciB0aGUgZXhlY2wgY2FsbC4gIFRo ZQorCSMgYnJlYWtwb2ludCBhdCBtYWluIHNob3VsZCBiZSByZWFjaGVkLiAgR0RCIHNob3VsZCBu b3QgdHJ5IHRvIHJldmVydAorCSMgYmFjayB0byB0aGUgb2xkIHRocmVhZCBmcm9tIHRoZSBvbGQg aW1hZ2UgYW5kIHJlc3VtZSBzdGVwcGluZyBpdAogCi0gICAgRml4IGkzODYtc3NlLXN0YWNrLWFs aWduLmV4cCByZWdyZXNzaW9uIHNpbmNlIEdEQl9QQVJBTExFTC4KLSAgICAKLSAgICBnZGIvdGVz dHN1aXRlLwotICAgIDIwMTQtMDItMDYgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLSAgICAKLSAgICAJRml4IGkzODYtc3NlLXN0YWNrLWFsaWduLmV4cCByZWdy ZXNzaW9uIHNpbmNlIEdEQl9QQVJBTExFTC4KLSAgICAJKiBnZGIuYXJjaC9pMzg2LXNzZS1zdGFj ay1hbGlnbi5leHA6IFVzZSBzdGFuZGFyZF9vdXRwdXRfZmlsZS4KK1dlIGRvbid0IHNlZSB0aGlz IGJ1ZyB3aXRoIHNjaGVkbG9jayBvZmYgb25seSBiZWNhdXNlIGEgZGlmZmVyZW50CitzZXF1ZW5j ZSBvZiBldmVudHMgbWFrZXMgR0RCIG1hbmFnZSB0byBkZWxldGUgdGhlIHRocmVhZCBpbnN0ZWFk IG9mCittYXJraW5nIGl0IGV4aXRlZC4KIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvQ2hh bmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLWluZGV4IDhjODQ2YjguLjEzY2NhZjMg MTAwNjQ0Ci0jIyMgYS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotIyMjIGIvZ2RiL3Rlc3RzdWl0 ZS9DaGFuZ2VMb2cKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTQtMDItMDYgIEphbiBLcmF0b2Nodmls ICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IGkzODYtc3NlLXN0YWNrLWFs aWduLmV4cCByZWdyZXNzaW9uIHNpbmNlIEdEQl9QQVJBTExFTC4KLSsJKiBnZGIuYXJjaC9pMzg2 LXNzZS1zdGFjay1hbGlnbi5leHA6IFVzZSBzdGFuZGFyZF9vdXRwdXRfZmlsZS4KLSsKLSAyMDE0 LTAyLTA2ICBEb3VnIEV2YW5zICA8eGRqZTQyQGdtYWlsLmNvbT4KLSAKLSAJKiBnZGIucHl0aG9u L3B5LWJyZWFrcG9pbnQuZXhwICh0ZXN0X2JrcHRfZXZhbF9mdW5jcyk6IFVwZGF0ZSBleHBlY3Rl ZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvaTM4Ni1zc2Utc3RhY2stYWxp Z24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9pMzg2LXNzZS1zdGFjay1hbGlnbi5leHAK LWluZGV4IGI1YTdlMWUuLjQ2MmRmMWYgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5h cmNoL2kzODYtc3NlLXN0YWNrLWFsaWduLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC9pMzg2LXNzZS1zdGFjay1hbGlnbi5leHAKLUBAIC0yMiw3ICsyMiw3IEBAIHNldCB0ZXN0Zmls ZSAiaTM4Ni1zc2Utc3RhY2stYWxpZ24iCi0gc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotIHNl dCBjc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0gc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLS1z ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KLStzZXQgYmluZmls ZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHtleGVjdXRhYmxlfV0KLSBzZXQgb3B0cyB7fQotIAot IGlmIFtpbmZvIGV4aXN0cyBDT01QSUxFXSB7CitUaGlzIHBhcnRpY3VsYXIgaW50ZXJuYWwgZXJy b3IgY2FuIGJlIGZpeGVkIGJ5IG1ha2luZyB0aGUgbG9vcCBvdmVyCithbGwgdGhyZWFkcyBpbiBz d2l0Y2hfYmFja190b19zdGVwcGVkX3RocmVhZCBza2lwIGV4aXRlZCB0aHJlYWRzLgorQnV0LCBs b29raW5nIG92ZXIgb3RoZXIgQUxMX1RIUkVBRFMgdXNlcnMsIGFsbCBlaXRoZXIgY2FuIG9yIHNo b3VsZCBiZQorc2tpcHBpbmcgZXhpdGVkIHRocmVhZHMgdG9vLiAgU28gZm9yIHNpbXBsaWNpdHks IHRoaXMgcGF0Y2ggcmVwbGFjZXMKK0FMTF9USFJFQURTIHdpdGggYSBuZXcgbWFjcm8gdGhhdCBz a2lwcyBleGl0ZWQgdGhyZWFkcyBpdHNlbGYsIGFuZAordXBkYXRlcyBldmVyeXRoaW5nIHRvIHVz ZSBpdC4KIAotLS11My9yWlJteEw2TW1rSzI0LS0KK1Rlc3RlZCBvbiB4ODZfNjQgRmVkb3JhIDIw LgogCitnZGIvCisyMDE0LTA2LTE4ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgog CisJKiBnZGJ0aHJlYWQuaCAoQUxMX1RIUkVBRFMpOiBEZWxldGUuCisJKEFMTF9OT05fRVhJVEVE X1RIUkVBRFMpOiBOZXcgbWFjcm8uCisJKiBidHJhY2UuYyAoYnRyYWNlX2ZyZWVfb2JqZmlsZSk6 IFVzZSBBTExfTk9OX0VYSVRFRF9USFJFQURTCisJaW5zdGVhZCBvZiBBTExfVEhSRUFEUy4KKwkq IGluZnJ1bi5jIChmaW5kX3RocmVhZF9uZWVkc19zdGVwX292ZXIpCisJKHN3aXRjaF9iYWNrX3Rv X3N0ZXBwZWRfdGhyZWFkKTogVXNlIEFMTF9OT05fRVhJVEVEX1RIUkVBRFMKKwlpbnN0ZWFkIG9m IEFMTF9USFJFQURTLgorCSogcmVjb3JkLWJ0cmFjZS5jIChyZWNvcmRfYnRyYWNlX29wZW4pCisJ KHJlY29yZF9idHJhY2Vfc3RvcF9yZWNvcmRpbmcsIHJlY29yZF9idHJhY2VfY2xvc2UpCisJKHJl Y29yZF9idHJhY2VfaXNfcmVwbGF5aW5nLCByZWNvcmRfYnRyYWNlX3Jlc3VtZSkKKwkocmVjb3Jk X2J0cmFjZV9maW5kX3RocmVhZF90b19tb3ZlLCByZWNvcmRfYnRyYWNlX3dhaXQpOiBMaWtld2lz ZS4KKwkqIHJlbW90ZS5jIChhcHBlbmRfcGVuZGluZ190aHJlYWRfcmVzdW1wdGlvbnMpOiBMaWtl d2lzZS4KIAotY29tbWl0IDIwZGNhMDk2NjJhYTBkMjcwNmZiZTMyNWI4ZjQ0OGVmNzQ3NzMwMjgK LUF1dGhvcjogQW5kcmVhcyBBcm5leiA8YXJuZXpAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZTog ICBUdWUgTWF5IDEzIDE0OjU1OjUzIDIwMTQgKzAyMDAKK2dkYi90ZXN0c3VpdGUvCisyMDE0LTA2 LTE4ICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29tPgogCi0gICAgUFIgdGFyZ2V0LzE2 OTQwIFMzOTA6IEZpeCBlcnJvbmVvdXMgb2Zmc2V0IGluIGZpbGxfZ3JlZ3NldC4KLSAgICAKLSAg ICBUaGlzIGZpeGVzIGEgYnVnIHRoYXQgbGVhZHMgdG8gdmFyaW91cyBmYWlsdXJlcyB3aGVuIGRl YnVnZ2luZyBhCi0gICAgMzEtYml0IGluZmVyaW9yIHdpdGggYSA2NC1iaXQgZ2RiIG9uIHMzOTB4 LgotICAgIAotICAgIENvbmZsaWN0czoKLSAgICAKLSAgICAJZ2RiL0NoYW5nZUxvZworCSogZ2Ri LnRocmVhZHMvdGhyZWFkLWV4ZWNsLmV4cCAoZG9fdGVzdCk6IE5ldyBwcm9jZWR1cmUsIGZhY3Rv cmVkCisJb3V0IGZyb20gLi4uCisJKHRvcCBsZXZlbCk6IC4uLiBoZXJlLiAgSXRlcmF0ZSBydW5u aW5nIHRlc3RzIHVuZGVyIGRpZmZlcmVudAorCXNjaGVkdWxlci1sb2NraW5nIHNldHRpbmdzLgor LS0tCisgZ2RiL2J0cmFjZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0K KyBnZGIvZ2RidGhyZWFkLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrLS0K KyBnZGIvaW5mcnVuLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNCArLS0KKyBn ZGIvcmVjb3JkLWJ0cmFjZS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAxNCArKysrKy0tLS0t CisgZ2RiL3JlbW90ZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKyBn ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3RocmVhZC1leGVjbC5leHAgfCA0NCArKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0KKyBnZGIvdGhyZWFkLmMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgMiArLQorIDcgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMzAg ZGVsZXRpb25zKC0pCiAKLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBiL2dkYi9DaGFuZ2VMb2cK LSMjIC0xLDMgKzEsOSBAQAotKzIwMTQtMDUtMTMgIEFuZHJlYXMgQXJuZXogIDxhcm5lekB2bmV0 LmxpbnV4LmlibS5jb20+Ci0rCi0rCVBSIHRhcmdldC8xNjk0MAotKwkqIHMzOTAtbGludXgtbmF0 LmMgKGZpbGxfZ3JlZ3NldCk6IFJlbW92ZSBlcnJvbmVvdXMgb2Zmc2V0IDQgaW4KLSsJY2FsbCB0 byByZWdjYWNoZV9yYXdfY29sbGVjdC4KLSsKLSAyMDE0LTA1LTA1ICBKb2VsIEJyb2JlY2tlciAg PGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KLSAKLSAJKiB2ZXJzaW9uLmluOiBTZXQgR0RCIHZlcnNp b24gbnVtYmVyIHRvIDcuNy4xLkRBVEUtY3ZzLgotLS0tIGEvZ2RiL3MzOTAtbGludXgtbmF0LmMK LSsrKyBiL2dkYi9zMzkwLWxpbnV4LW5hdC5jCi1AQCAtMTY0LDcgKzE2NCw3IEBAIGZpbGxfZ3Jl Z3NldCAoY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgZ3JlZ3NldF90ICpyZWdwLCBp bnQgcmVnbm8pCi0gCQkgIG1lbXNldCAocCwgMCwgNCk7Ci0gCQkgIHAgKz0gNDsKLSAJCX0KLS0J ICAgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCByZWcsIHAgKyA0KTsKLSsJICAg ICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCByZWcsIHApOwotIAkgICAgfQotIAl9 CitkaWZmIC0tZ2l0IGEvZ2RiL2J0cmFjZS5jIGIvZ2RiL2J0cmFjZS5jCitpbmRleCA2MDFlYjQx Li44N2ExNzFlIDEwMDY0NAorLS0tIGEvZ2RiL2J0cmFjZS5jCisrKysgYi9nZGIvYnRyYWNlLmMK K0BAIC05NTgsNyArOTU4LDcgQEAgYnRyYWNlX2ZyZWVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCiAgCi0KLQotCi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcu Y2dpP2lkPTEwODY4OTQKLWNvbW1pdCBmMjIwNWRlMDA4MGQ5OTljOWI2Nzg3MmM5ZGI0NzFjMzFi NTNlMzc4Ci1BdXRob3I6IEh1aSBaaHUgPHRlYXdhdGVyQGdtYWlsLmNvbT4KLURhdGU6ICAgVHVl IE1heSAyMCAxMzoxOTowNiAyMDE0ICswODAwCi0KLSAgICBGaXggaXNzdWUgIzE1Nzc4OiBHREIg QWFyY2g2NCBzaWduYWwgZnJhbWUgdW53aW5kZXIgaXNzdWUKLSAgICAKLSAgICBUaGUgcm9vdCBj YXVzZSBvZiB0aGlzIGlzc3VlIGlzIHVud2luZGVyIG9mICIjMyAgPHNpZ25hbCBoYW5kbGVyIGNh bGxlZD4iCi0gICAgZG9lc24ndCBzdXBwbHkgcmlnaHQgdmFsdWVzIG9mIHJlZ2lzdGVycy4KLSAg ICBXaGVuIEdEQiB3YW50IHRvIGdldCB0aGUgcHJldmlvdXMgZnJhbWUgb2YgIiMzICA8c2lnbmFs IGhhbmRsZXIgY2FsbGVkPiIsCi0gICAgaXQgd2lsbCBjYWxsIGNhY2hlIGluaXQgZnVuY3Rpb24g b2YgdW53aW5kZXIgImFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5pdCIuCi0gICAgVGhlIGFkZHJl c3Mgb3IgdGhlIHZhbHVlIG9mIHRoZSByZWdpc3RlcnMgaXMgZ2V0IGZyb20gdGhpcyBmdW5jdGlv bi4KLSAgICBTbyB0aGUgYnVnIGlzIGluc2lkZSB0aGllIGZ1bmN0aW9uLgotICAgIAotICAgIEkg Y2hlY2sgdGhlIGFzbSBjb2RlIG9mICIjMyAgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD4iOgotICAg IChnZGIpIGZyYW1lIDMKLSAgICAoZ2RiKSBwICRwYwotICAgICQxID0gKHZvaWQgKCopKCkpIDB4 N2Y5MzFmYTRkMAotICAgIChnZGIpIGRpc2Fzc2VtYmxlICRwYywgKzEwCi0gICAgRHVtcCBvZiBh c3NlbWJsZXIgY29kZSBmcm9tIDB4N2Y5MzFmYTRkMCB0byAweDdmOTMxZmE0ZGE6Ci0gICAgPT4g MHgwMDAwMDA3ZjkzMWZhNGQwOgltb3YJeDgsICMweDhiICAgICAgICAgICAgICAgICAgCS8vICMx MzkKLSAgICAgICAweDAwMDAwMDdmOTMxZmE0ZDQ6CXN2YwkjMHgwCi0gICAgICAgMHgwMDAwMDA3 ZjkzMWZhNGQ4Oglub3AKLSAgICAKLSAgICBUaGlzIGlzIHRoZSBzeXNjYWxsIHN5c19ydF9zaWdy ZXR1cm4sIExpbnV4IGtlcm5lbCBmdW5jdGlvbiAicmVzdG9yZV9zaWdmcmFtZSIKLSAgICB3aWxs IHNldCB0aGUgZnJhbWU6Ci0gICAgCWZvciAoaSA9IDA7IGkgPCAzMTsgaSsrKQotICAgIAkJX19n ZXRfdXNlcl9lcnJvcihyZWdzLT5yZWdzW2ldLCAmc2YtPnVjLnVjX21jb250ZXh0LnJlZ3NbaV0s Ci0gICAgCQkJCSBlcnIpOwotICAgIAlfX2dldF91c2VyX2Vycm9yKHJlZ3MtPnNwLCAmc2YtPnVj LnVjX21jb250ZXh0LnNwLCBlcnIpOwotICAgIAlfX2dldF91c2VyX2Vycm9yKHJlZ3MtPnBjLCAm c2YtPnVjLnVjX21jb250ZXh0LnBjLCBlcnIpOwotICAgIFRoZSBzdHJ1Y3Qgb2YgdWNfbWNvbnRl eHQgaXM6Ci0gICAgc3RydWN0IHNpZ2NvbnRleHQgewotICAgIAlfX3U2NCBmYXVsdF9hZGRyZXNz OwotICAgIAkvKiBBQXJjaDY0IHJlZ2lzdGVycyAqLwotICAgIAlfX3U2NCByZWdzWzMxXTsKLSAg ICAJX191NjQgc3A7Ci0gICAgCV9fdTY0IHBjOwotICAgIAlfX3U2NCBwc3RhdGU7Ci0gICAgCS8q IDRLIHJlc2VydmVkIGZvciBGUC9TSU1EIHN0YXRlIGFuZCBmdXR1cmUgZXhwYW5zaW9uICovCi0g ICAgCV9fdTggX19yZXNlcnZlZFs0MDk2XSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikp KTsKLSAgICB9OwotICAgIAotICAgIEJ1dCBpbiBHREIgZnVuY3Rpb24gImFhcmNoNjRfbGludXhf c2lnZnJhbWVfaW5pdCIsIHRoZSBjb2RlIHRoZSBnZXQgYWRkcmVzcwotICAgIG9mIHJlZ2lzdGVy cyBpczoKLSAgICAgIGZvciAoaSA9IDA7IGkgPCAzMTsgaSsrKQotICAgICAgICB7Ci0gICAgICAg ICAgdHJhZF9mcmFtZV9zZXRfcmVnX2FkZHIgKHRoaXNfY2FjaGUsCi0gICAgCQkJICAgICAgIEFB UkNINjRfWDBfUkVHTlVNICsgaSwKLSAgICAJCQkgICAgICAgc2lnY29udGV4dF9hZGRyICsgQUFS Q0g2NF9TSUdDT05URVhUX1hPX09GRlNFVAotICAgIAkJCSAgICAgICArIGkgKiBBQVJDSDY0X1NJ R0NPTlRFWFRfUkVHX1NJWkUpOwotICAgICAgICB9Ci0gICAgCi0gICAgICB0cmFkX2ZyYW1lX3Nl dF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2NF9GUF9SRUdOVU0sIGZwKTsKLSAgICAgIHRy YWRfZnJhbWVfc2V0X3JlZ19hZGRyICh0aGlzX2NhY2hlLCBBQVJDSDY0X0xSX1JFR05VTSwgZnAg KyA4KTsKLSAgICAgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyICh0aGlzX2NhY2hlLCBBQVJDSDY0 X1BDX1JFR05VTSwgZnAgKyA4KTsKLSAgICAKLSAgICBUaGUgY29kZSB0aGF0IGdldCBwYyBhbmQg c3AgaXMgbm90IHJpZ2h0LCBzbyBJIGNoYW5nZSB0aGUgY29kZSBhY2NvcmRpbmcKLSAgICB0byBM aW51eCBrZXJuZWwgY29kZToKLSAgICAgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyICh0aGlzX2Nh Y2hlLCBBQVJDSDY0X1NQX1JFR05VTSwKLSAgICAJCQkgICBzaWdjb250ZXh0X2FkZHIgKyBBQVJD SDY0X1NJR0NPTlRFWFRfWE9fT0ZGU0VUCi0gICAgCQkJICAgICArIDMxICogQUFSQ0g2NF9TSUdD T05URVhUX1JFR19TSVpFKTsKLSAgICAgIHRyYWRfZnJhbWVfc2V0X3JlZ19hZGRyICh0aGlzX2Nh Y2hlLCBBQVJDSDY0X1BDX1JFR05VTSwKLSAgICAJCQkgICBzaWdjb250ZXh0X2FkZHIgKyBBQVJD SDY0X1NJR0NPTlRFWFRfWE9fT0ZGU0VUCi0gICAgCQkJICAgICArIDMyICogQUFSQ0g2NF9TSUdD T05URVhUX1JFR19TSVpFKTsKLSAgICAKLSAgICBUaGUgaXNzdWUgd2FzIGZpeGVkIGJ5IHRoaXMg Y2hhbmdlLCBhbmQgSSBkaWQgdGhlIHJlZ3Jlc3Npb24gdGVzdC4gIEl0Ci0gICAgYWxzbyBmaXhl ZCBhIGxvdCBvZiBvdGhlciBYRkFJTCBhbmQgRkFJTC4KLSAgICAKLSAgICAyMDE0LTA1LTIwICBI dWkgWmh1ICA8aHVpQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgCSAgICBZYW8gUWkgIDx5YW9AY29k ZXNvdXJjZXJ5LmNvbT4KLSAgICAKLSAgICAJUFIgYmFja3RyYWNlLzE2NTU4Ci0gICAgCSogYWFy Y2g2NC1saW51eC10ZGVwLmMgKGFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5pdCk6IFVwZGF0ZSBj b21tZW50cwotICAgIAlhbmQgY2hhbmdlIGFkZHJlc3Mgb2Ygc3AgYW5kIHBjLgotCi0jIyMgYS9n ZGIvQ2hhbmdlTG9nCi0jIyMgYi9nZGIvQ2hhbmdlTG9nCi0jIyAtMSwzICsxLDEwIEBACi0rMjAx NC0wNS0yMCAgSHVpIFpodSAgPGh1aUBjb2Rlc291cmNlcnkuY29tPgotKwkgICAgWWFvIFFpICA8 eWFvQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rCVBSIGJhY2t0cmFjZS8xNjU1OAotKwkqIGFhcmNo NjQtbGludXgtdGRlcC5jIChhYXJjaDY0X2xpbnV4X3NpZ2ZyYW1lX2luaXQpOiBVcGRhdGUgY29t bWVudHMKLSsJYW5kIGNoYW5nZSBhZGRyZXNzIG9mIHNwIGFuZCBwYy4KLSsKLSAyMDE0LTA1LTE5 ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisgICBERUJVRyAoImZyZWUgb2JqZmls ZSIpOwogIAotIAkqIGdkYnR5cGVzLmMgKHJhbmtfZnVuY3Rpb24pOiBVc2UgWE5FV1ZFQy4KLS0t LSBhL2dkYi9hYXJjaDY0LWxpbnV4LXRkZXAuYwotKysrIGIvZ2RiL2FhcmNoNjQtbGludXgtdGRl cC5jCi1AQCAtNTMsMjggKzUzLDMwIEBACistICBBTExfVEhSRUFEUyAodHApCisrICBBTExfTk9O X0VYSVRFRF9USFJFQURTICh0cCkKKyAgICAgYnRyYWNlX2NsZWFyICh0cCk7CisgfQogIAotIC8q IFNpZ25hbCBmcmFtZSBoYW5kbGluZy4KK2RpZmYgLS1naXQgYS9nZGIvZ2RidGhyZWFkLmggYi9n ZGIvZ2RidGhyZWFkLmgKK2luZGV4IDlmNWRlZTYuLjY0ZTM3YzMgMTAwNjQ0CistLS0gYS9nZGIv Z2RidGhyZWFkLmgKKysrKyBiL2dkYi9nZGJ0aHJlYWQuaAorQEAgLTMxNywxMCArMzE3LDEyIEBA IHZvaWQgdGhyZWFkX2NoYW5nZV9wdGlkIChwdGlkX3Qgb2xkX3B0aWQsIHB0aWRfdCBuZXdfcHRp ZCk7CisgdHlwZWRlZiBpbnQgKCp0aHJlYWRfY2FsbGJhY2tfZnVuYykgKHN0cnVjdCB0aHJlYWRf aW5mbyAqLCB2b2lkICopOworIGV4dGVybiBzdHJ1Y3QgdGhyZWFkX2luZm8gKml0ZXJhdGVfb3Zl cl90aHJlYWRzICh0aHJlYWRfY2FsbGJhY2tfZnVuYywgdm9pZCAqKTsKICAKLS0gICAgICArLS0t LS0tLS0tLSsgIF4KLS0gICAgICB8IHNhdmVkIGxyIHwgIHwKLS0gICArLT58IHNhdmVkIGZwIHwt LSsKLS0gICB8ICB8ICAgICAgICAgIHwKLS0gICB8ICB8ICAgICAgICAgIHwKLS0gICB8ICArLS0t LS0tLS0tLSsKLS0gICB8ICB8IHNhdmVkIGxyIHwKLS0gICArLS18IHNhdmVkIGZwIHwKLS0gICBe ICB8ICAgICAgICAgIHwKLS0gICB8ICB8ICAgICAgICAgIHwKLS0gICB8ICArLS0tLS0tLS0tLSsK LS0gICBeICB8ICAgICAgICAgIHwKLS0gICB8ICB8IHNpZ25hbCAgIHwKLS0gICB8ICB8ICAgICAg ICAgIHwKLS0gICB8ICB8IHNhdmVkIGxyIHwtLT5pbnRlcnJ1cHRlZF9mdW5jdGlvbl9wYwotLSAg ICstLXwgc2F2ZWQgZnAgfAotLSAgIHwgICstLS0tLS0tLS0tKwotLSAgIHwgIHwgc2F2ZWQgbHIg fC0tPiBkZWZhdWx0X3Jlc3RvcmVyIChtb3Z6IHg4LCBOUl9zeXNfcnRfc2lncmV0dXJuOyBzdmMg MCkKLS0gICArLS18IHNhdmVkIGZwIHw8LSBGUAotLSAgICAgIHwgICAgICAgICAgfAotLSAgICAg IHwgICAgICAgICAgfDwtIFNQCi0tICAgICAgKy0tLS0tLS0tLS0rCi0rICAgICAgKy0tLS0tLS0t LS0tLSsgIF4KLSsgICAgICB8IHNhdmVkIGxyICAgfCAgfAotKyAgICstPnwgc2F2ZWQgZnAgICB8 LS0rCi0rICAgfCAgfCAgICAgICAgICAgIHwKLSsgICB8ICB8ICAgICAgICAgICAgfAotKyAgIHwg ICstLS0tLS0tLS0tLS0rCi0rICAgfCAgfCBzYXZlZCBsciAgIHwKLSsgICArLS18IHNhdmVkIGZw ICAgfAotKyAgIF4gIHwgICAgICAgICAgICB8Ci0rICAgfCAgfCAgICAgICAgICAgIHwKLSsgICB8 ICArLS0tLS0tLS0tLS0tKwotKyAgIF4gIHwgICAgICAgICAgICB8Ci0rICAgfCAgfCBzaWduYWwg ICAgIHwKLSsgICB8ICB8ICAgICAgICAgICAgfCAgICAgICAgU0lHVFJBTVBfRlJBTUUgKHN0cnVj dCBydF9zaWdmcmFtZSkKLSsgICB8ICB8IHNhdmVkIHJlZ3MgfAotKyAgICstLXwgc2F2ZWQgc3Ag ICB8LS0+IGludGVycnVwdGVkX3NwCi0rICAgfCAgfCBzYXZlZCBwYyAgIHwtLT4gaW50ZXJydXB0 ZWRfcGMKLSsgICB8ICB8ICAgICAgICAgICAgfAotKyAgIHwgICstLS0tLS0tLS0tLS0rCi0rICAg fCAgfCBzYXZlZCBsciAgIHwtLT4gZGVmYXVsdF9yZXN0b3JlciAobW92eiB4OCwgTlJfc3lzX3J0 X3NpZ3JldHVybjsgc3ZjIDApCi0rICAgKy0tfCBzYXZlZCBmcCAgIHw8LSBGUAotKyAgICAgIHwg ICAgICAgICAgICB8ICAgICAgICAgTk9STUFMX0ZSQU1FCi0rICAgICAgfCAgICAgICAgICAgIHw8 LSBTUAotKyAgICAgICstLS0tLS0tLS0tLS0rCistLyogVHJhdmVyc2UgYWxsIHRocmVhZHMuICAq LworKy8qIFRyYXZlcnNlIGFsbCB0aHJlYWRzLCBleGNlcHQgdGhvc2UgdGhhdCBoYXZlIFRIUkVB RF9FWElURUQKKysgICBzdGF0ZS4gICovCiAgCi0gICBPbiBzaWduYWwgZGVsaXZlcnksIHRoZSBr ZXJuZWwgd2lsbCBjcmVhdGUgYSBzaWduYWwgaGFuZGxlciBzdGFjawotICAgZnJhbWUgYW5kIHNl dHVwIHRoZSByZXR1cm4gYWRkcmVzcyBpbiBMUiB0byBwb2ludCBhdCByZXN0b3JlciBzdHViLgot QEAgLTEyMyw2ICsxMjUsOCBAQAotICAgZDI4MDE1YTggICAgICAgIG1vdnogICAgeDgsICMweGFk Ci0gICBkNDAwMDAwMSAgICAgICAgc3ZjICAgICAjMHgwCistI2RlZmluZSBBTExfVEhSRUFEUyhU KQkJCQlcCistICBmb3IgKFQgPSB0aHJlYWRfbGlzdDsgVDsgVCA9IFQtPm5leHQpCisrI2RlZmlu ZSBBTExfTk9OX0VYSVRFRF9USFJFQURTKFQpCQkJCVwKKysgIGZvciAoVCA9IHRocmVhZF9saXN0 OyBUOyBUID0gVC0+bmV4dCkgXAorKyAgICBpZiAoKFQpLT5zdGF0ZSAhPSBUSFJFQURfRVhJVEVE KQogIAotKyAgVGhpcyBpcyBhIHN5c3RlbSBjYWxsIHN5c19ydF9zaWdyZXR1cm4uCi0rCi0gICBX ZSBkZXRlY3Qgc2lnbmFsIGZyYW1lcyBieSBzbm9vcGluZyB0aGUgcmV0dXJuIGNvZGUgZm9yIHRo ZSByZXN0b3JlcgotICAgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UuCisgZXh0ZXJuIGludCB0aHJlYWRf Y291bnQgKHZvaWQpOwogIAotQEAgLTE0Niw3ICsxNTAsNiBAQCBhYXJjaDY0X2xpbnV4X3NpZ2Zy YW1lX2luaXQgKGNvbnN0IHN0cnVjdCB0cmFtcF9mcmFtZSAqc2VsZiwKLSB7Ci0gICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKLSAgIENPUkVf QUREUiBzcCA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgQUFSQ0g2 NF9TUF9SRUdOVU0pOwotLSAgQ09SRV9BRERSIGZwID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2ln bmVkICh0aGlzX2ZyYW1lLCBBQVJDSDY0X0ZQX1JFR05VTSk7Ci0gICBDT1JFX0FERFIgc2lnY29u dGV4dF9hZGRyID0KLSAgICAgc3AKLSAgICAgKyBBQVJDSDY0X1JUX1NJR0ZSQU1FX1VDT05URVhU X09GRlNFVAotQEAgLTE2MCwxMiArMTYzLDE0IEBAIGFhcmNoNjRfbGludXhfc2lnZnJhbWVfaW5p dCAoY29uc3Qgc3RydWN0IHRyYW1wX2ZyYW1lICpzZWxmLAotIAkJCSAgICAgICBzaWdjb250ZXh0 X2FkZHIgKyBBQVJDSDY0X1NJR0NPTlRFWFRfWE9fT0ZGU0VUCi0gCQkJICAgICAgICsgaSAqIEFB UkNINjRfU0lHQ09OVEVYVF9SRUdfU0laRSk7CitkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIv Z2RiL2luZnJ1bi5jCitpbmRleCA0ZTgwOGQ5Li5lOGUyNmUwIDEwMDY0NAorLS0tIGEvZ2RiL2lu ZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC0yMTYwLDcgKzIxNjAsNyBAQCBmaW5kX3Ro cmVhZF9uZWVkc19zdGVwX292ZXIgKGludCBzdGVwLCBzdHJ1Y3QgdGhyZWFkX2luZm8gKmV4Y2Vw dCkKKyAgICAgICByZXR1cm4gTlVMTDsKICAgICAgfQotLQotLSAgdHJhZF9mcmFtZV9zZXRfcmVn X2FkZHIgKHRoaXNfY2FjaGUsIEFBUkNINjRfRlBfUkVHTlVNLCBmcCk7Ci0tICB0cmFkX2ZyYW1l X3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2NF9MUl9SRUdOVU0sIGZwICsgOCk7Ci0t ICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2NF9QQ19SRUdOVU0s IGZwICsgOCk7Ci0tCi0tICB0cmFkX2ZyYW1lX3NldF9pZCAodGhpc19jYWNoZSwgZnJhbWVfaWRf YnVpbGQgKGZwLCBmdW5jKSk7Ci0rICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNo ZSwgQUFSQ0g2NF9TUF9SRUdOVU0sCi0rCQkJICAgc2lnY29udGV4dF9hZGRyICsgQUFSQ0g2NF9T SUdDT05URVhUX1hPX09GRlNFVAotKwkJCSAgICAgKyAzMSAqIEFBUkNINjRfU0lHQ09OVEVYVF9S RUdfU0laRSk7Ci0rICB0cmFkX2ZyYW1lX3NldF9yZWdfYWRkciAodGhpc19jYWNoZSwgQUFSQ0g2 NF9QQ19SRUdOVU0sCi0rCQkJICAgc2lnY29udGV4dF9hZGRyICsgQUFSQ0g2NF9TSUdDT05URVhU X1hPX09GRlNFVAotKwkJCSAgICAgKyAzMiAqIEFBUkNINjRfU0lHQ09OVEVYVF9SRUdfU0laRSk7 Ci0rCi0rICB0cmFkX2ZyYW1lX3NldF9pZCAodGhpc19jYWNoZSwgZnJhbWVfaWRfYnVpbGQgKHNw LCBmdW5jKSk7CisgCistICBBTExfVEhSRUFEUyAodHApCisrICBBTExfTk9OX0VYSVRFRF9USFJF QURTICh0cCkKKyAgICAgeworICAgICAgIC8qIElnbm9yZSB0aGUgRVhDRVBUIHRocmVhZC4gICov CisgICAgICAgaWYgKHRwID09IGV4Y2VwdCkKK0BAIC01MjA0LDcgKzUyMDQsNyBAQCBzd2l0Y2hf YmFja190b19zdGVwcGVkX3RocmVhZCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICpl Y3MpCisgCSBzdGVwL25leHQvZXRjLiAgKi8KKyAgICAgICBzdGVwcGluZ190aHJlYWQgPSBOVUxM OworICAgICAgIHN0ZXBfb3ZlciA9IE5VTEw7CistICAgICAgQUxMX1RIUkVBRFMgKHRwKQorKyAg ICAgIEFMTF9OT05fRVhJVEVEX1RIUkVBRFMgKHRwKQorICAgICAgICAgeworIAkgIC8qIElnbm9y ZSB0aHJlYWRzIG9mIHByb2Nlc3NlcyB3ZSdyZSBub3QgcmVzdW1pbmcuICAqLworIAkgIGlmICgh c2NoZWRfbXVsdGkKK2RpZmYgLS1naXQgYS9nZGIvcmVjb3JkLWJ0cmFjZS5jIGIvZ2RiL3JlY29y ZC1idHJhY2UuYworaW5kZXggZTBjNTM3YTguLjZhOWJmZTEgMTAwNjQ0CistLS0gYS9nZGIvcmVj b3JkLWJ0cmFjZS5jCisrKysgYi9nZGIvcmVjb3JkLWJ0cmFjZS5jCitAQCAtMjA2LDcgKzIwNiw3 IEBAIHJlY29yZF9idHJhY2Vfb3BlbiAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorICAgZ2Ri X2Fzc2VydCAocmVjb3JkX2J0cmFjZV90aHJlYWRfb2JzZXJ2ZXIgPT0gTlVMTCk7CisgCisgICBk aXNhYmxlX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOworLSAgQUxM X1RIUkVBRFMgKHRwKQorKyAgQUxMX05PTl9FWElURURfVEhSRUFEUyAodHApCisgICAgIGlmIChh cmdzID09IE5VTEwgfHwgKmFyZ3MgPT0gMCB8fCBudW1iZXJfaXNfaW5fbGlzdCAoYXJncywgdHAt Pm51bSkpCisgICAgICAgeworIAlidHJhY2VfZW5hYmxlICh0cCk7CitAQCAtMjM4LDcgKzIzOCw3 IEBAIHJlY29yZF9idHJhY2Vfc3RvcF9yZWNvcmRpbmcgKHN0cnVjdCB0YXJnZXRfb3BzICpzZWxm KQorIAorICAgcmVjb3JkX2J0cmFjZV9hdXRvX2Rpc2FibGUgKCk7CisgCistICBBTExfVEhSRUFE UyAodHApCisrICBBTExfTk9OX0VYSVRFRF9USFJFQURTICh0cCkKKyAgICAgaWYgKHRwLT5idHJh Y2UudGFyZ2V0ICE9IE5VTEwpCisgICAgICAgYnRyYWNlX2Rpc2FibGUgKHRwKTsKICB9CitAQCAt MjU5LDcgKzI1OSw3IEBAIHJlY29yZF9idHJhY2VfY2xvc2UgKHN0cnVjdCB0YXJnZXRfb3BzICpz ZWxmKQogIAotIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdHJhbXBfZnJhbWUgYWFyY2g2NF9saW51eF9y dF9zaWdmcmFtZSA9Ci0KLQotCi1CdWcgMTEwMjYyNCAtIGxhdGVzdCBnZGIgLTE1IGJ1aWxkIGlz IEZUQkZTIG9uIGFhcmNoNjQKLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5j Z2k/aWQ9MTEwMjYyNAotY29tbWl0IDAzNmNkMzgxODJiZGUzMmQ4Mjk3YjYzMGNkNWM4NjFkNTNi ODk0OWUKLUF1dGhvcjogUmFtYW5hIFJhZGhha3Jpc2huYW4gPHJhbWFuYS5yYWRoYWtyaXNobmFu QGFybS5jb20+Ci1EYXRlOiAgIFRodSBNYXkgMjIgMTY6MDc6MjAgMjAxNCArMDEwMAotCi0gICAg SW5jbHVkZSBhc20vcHRyYWNlLmggaW4gYWFyY2g2NC1saW51eC1uYXQuYwotICAgIAotICAgIEEg cmVjZW50IGNoYW5nZSB0byBnbGliYyByZW1vdmVkIGFzbS9wdHJhY2UuaCBmcm9tIHVzZXIuaCBm b3IKLSAgICBBQXJjaDY0LiBUaGlzIG1lYW50IHRoYXQgY3Jvc3MtbmF0aXZlIGJ1aWxkcyBvZiBn ZGIgdXNpbmcgdHJ1bmsKLSAgICBnbGliYyBicm9rZSBiZWNhdXNlIGFhcmNoNjQtbGludXgtbmF0 LmMgYmVjYXVzZSB1c2VyX2h3ZGVidWdfc3RhdGUKLSAgICBjb3VsZG4ndCBiZSBmb3VuZC4KLSAg ICAKLSAgICBGaXhlZCBieSBpbmNsdWRpbmcgYXNtL3B0cmFjZS5oIGxpa2Ugb3RoZXIgcG9ydHMu Ci0gICAgCi0gICAgMjAxNC0wNS0yMiAgUmFtYW5hIFJhZGhha3Jpc2huYW4gIDxyYW1hbmEucmFk aGFrcmlzaG5hbkBhcm0uY29tPgotICAgIAotICAgICAgICAgICAqIGFhcmNoNjQtbGludXgtbmF0 LmMgKGFzbS9wdHJhY2UuaCk6IEluY2x1ZGUuCi0KLSMjIyBhL2dkYi9DaGFuZ2VMb2cKLSMjIyBi L2dkYi9DaGFuZ2VMb2cKLSMjIC0xLDUgKzEsOSBAQAotIDIwMTQtMDUtMjIgIFJhbWFuYSBSYWRo YWtyaXNobmFuICA8cmFtYW5hLnJhZGhha3Jpc2huYW5AYXJtLmNvbT4KKyAgIC8qIFdlIHNob3Vs ZCBoYXZlIGFscmVhZHkgc3RvcHBlZCByZWNvcmRpbmcuCisgICAgICBUZWFyIGRvd24gYnRyYWNl IGluIGNhc2Ugd2UgaGF2ZSBub3QuICAqLworLSAgQUxMX1RIUkVBRFMgKHRwKQorKyAgQUxMX05P Tl9FWElURURfVEhSRUFEUyAodHApCisgICAgIGJ0cmFjZV90ZWFyZG93biAodHApOworIH0KICAK LSsJKiBhYXJjaDY0LWxpbnV4LW5hdC5jIChhc20vcHRyYWNlLmgpOiBJbmNsdWRlLgotKwotKzIw MTQtMDUtMjIgIFJhbWFuYSBSYWRoYWtyaXNobmFuICA8cmFtYW5hLnJhZGhha3Jpc2huYW5AYXJt LmNvbT4KLSsKLSAJKiBNQUlOVEFJTkVSUyAoV3JpdGUgQWZ0ZXIgQXBwcm92YWwpOiBNb3ZlIHNl bGYgYmFjayBmcm9tCi0gCXBhcGVyIHRyYWlsLgorQEAgLTgzNSw3ICs4MzUsNyBAQCByZWNvcmRf YnRyYWNlX2lzX3JlcGxheWluZyAoc3RydWN0IHRhcmdldF9vcHMgKnNlbGYpCisgeworICAgc3Ry dWN0IHRocmVhZF9pbmZvICp0cDsKICAKLS0tLSBhL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jCi0r KysgYi9nZGIvYWFyY2g2NC1saW51eC1uYXQuYwotQEAgLTMzLDYgKzMzLDcgQEAKKy0gIEFMTF9U SFJFQURTICh0cCkKKysgIEFMTF9OT05fRVhJVEVEX1RIUkVBRFMgKHRwKQorICAgICBpZiAoYnRy YWNlX2lzX3JlcGxheWluZyAodHApKQorICAgICAgIHJldHVybiAxOwogIAotICNpbmNsdWRlIDxz eXMvcHRyYWNlLmg+Ci0gI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0rI2luY2x1ZGUgPGFzbS9w dHJhY2UuaD4KK0BAIC0xNTIyLDcgKzE1MjIsNyBAQCByZWNvcmRfYnRyYWNlX3Jlc3VtZSAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcywgcHRpZF90IHB0aWQsIGludCBzdGVwLAogIAotICNpbmNsdWRl ICJncmVnc2V0LmgiCisgICAvKiBTdG9wIHJlcGxheWluZyBvdGhlciB0aHJlYWRzIGlmIHRoZSB0 aHJlYWQgdG8gcmVzdW1lIGlzIG5vdCByZXBsYXlpbmcuICAqLworICAgaWYgKCFidHJhY2VfaXNf cmVwbGF5aW5nICh0cCkgJiYgZXhlY3V0aW9uX2RpcmVjdGlvbiAhPSBFWEVDX1JFVkVSU0UpCist ICAgIEFMTF9USFJFQURTIChvdGhlcikKKysgICAgQUxMX05PTl9FWElURURfVEhSRUFEUyAob3Ro ZXIpCisgICAgICAgcmVjb3JkX2J0cmFjZV9zdG9wX3JlcGxheWluZyAob3RoZXIpOwogIAotY29t bWl0IGU5ZGFlMDVlOWMzMmVmZGE5NzI0MzMwYzZkNWFkZTNjYTg0ODU5MWQKLUF1dGhvcjogUmFt YW5hIFJhZGhha3Jpc2huYW4gPHJhbWFuYS5yYWRoYWtyaXNobmFuQGFybS5jb20+Ci1EYXRlOiAg IEZyaSBNYXkgMjMgMDk6MDE6MTQgMjAxNCArMDEwMAotCi0gICAgSW5jbHVkZSBhc20vcHRyYWNl LmggZm9yIGxpbnV4LWFhcmNoNjQtbG93LmMKLSAgICAKLSAgICBBIHJlY2VudCBjaGFuZ2UgdG8g Z2xpYmMgcmVtb3ZlZCBhc20vcHRyYWNlLmggZnJvbSB1c2VyLmggZm9yIEFBcmNoNjQuCi0gICAg VGhpcyBtZWFudCB0aGF0IGNyb3NzLW5hdGl2ZSBidWlsZHMgb2YgZ2Ric2VydmVyIHVzaW5nIHRy dW5rIGdsaWJjIGJyb2tlCi0gICAgYmVjYXVzZSBsaW51eC1hYXJjaDY0LWxvdy5jIGJlY2F1c2Ug dXNlcl9od2RlYnVnX3N0YXRlIGNvdWxkbid0IGJlIGZvdW5kLgotICAgIAotICAgIFRoaXMgaXMg bGlrZSBjb21taXQgIzAzNmNkMzgxODJiZGUzMmQ4Mjk3YjYzMGNkNWM4NjFkNTNiODk0OWUKLSAg ICAKLSAgICAyMDE0LTA1LTIzICBSYW1hbmEgUmFkaGFrcmlzaG5hbiAgPHJhbWFuYS5yYWRoYWty aXNobmFuQGFybS5jb20+Ci0gICAgCi0gICAgICAgICAgICAqIGxpbnV4LWFhcmNoNjQtbG93LmMg KGFzbS9wdHJhY2UuaCk6IEluY2x1ZGUuCi0KLSMjIyBhL2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9n Ci0jIyMgYi9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwotIyMgLTEsMyArMSw3IEBACi0rMjAxNC0w NS0yMyAgUmFtYW5hIFJhZGhha3Jpc2huYW4gIDxyYW1hbmEucmFkaGFrcmlzaG5hbkBhcm0uY29t PgorICAgLyogQXMgbG9uZyBhcyB3ZSdyZSBub3QgcmVwbGF5aW5nLCBqdXN0IGZvcndhcmQgdGhl IHJlcXVlc3QuICAqLworQEAgLTE1NzIsNyArMTU3Miw3IEBAIHJlY29yZF9idHJhY2VfZmluZF90 aHJlYWRfdG9fbW92ZSAocHRpZF90IHB0aWQpCisgICAgIHJldHVybiB0cDsKKyAKKyAgIC8qIE90 aGVyd2lzZSwgZmluZCBvbmUgb3RoZXIgdGhyZWFkIHRoYXQgaGFzIGJlZW4gcmVzdW1lZC4gICov CistICBBTExfVEhSRUFEUyAodHApCisrICBBTExfTk9OX0VYSVRFRF9USFJFQURTICh0cCkKKyAg ICAgaWYgKCh0cC0+YnRyYWNlLmZsYWdzICYgQlRIUl9NT1ZFKSAhPSAwKQorICAgICAgIHJldHVy biB0cDsKKyAKK0BAIC0xNzc3LDcgKzE3NzcsNyBAQCByZWNvcmRfYnRyYWNlX3dhaXQgKHN0cnVj dCB0YXJnZXRfb3BzICpvcHMsIHB0aWRfdCBwdGlkLAorIAorICAgLyogU3RvcCBhbGwgb3RoZXIg dGhyZWFkcy4gKi8KKyAgIGlmICghbm9uX3N0b3ApCistICAgIEFMTF9USFJFQURTIChvdGhlcikK KysgICAgQUxMX05PTl9FWElURURfVEhSRUFEUyAob3RoZXIpCisgICAgICAgb3RoZXItPmJ0cmFj ZS5mbGFncyAmPSB+QlRIUl9NT1ZFOworIAorICAgLyogU3RhcnQgcmVjb3JkIGhpc3RvcmllcyBh bmV3IGZyb20gdGhlIGN1cnJlbnQgcG9zaXRpb24uICAqLworZGlmZiAtLWdpdCBhL2dkYi9yZW1v dGUuYyBiL2dkYi9yZW1vdGUuYworaW5kZXggNjkxNWRkOC4uYjUzMThmMSAxMDA2NDQKKy0tLSBh L2dkYi9yZW1vdGUuYworKysrIGIvZ2RiL3JlbW90ZS5jCitAQCAtNDYyNiw3ICs0NjI2LDcgQEAg YXBwZW5kX3BlbmRpbmdfdGhyZWFkX3Jlc3VtcHRpb25zIChjaGFyICpwLCBjaGFyICplbmRwLCBw dGlkX3QgcHRpZCkKKyB7CisgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRocmVhZDsKKyAKKy0gIEFM TF9USFJFQURTICh0aHJlYWQpCisrICBBTExfTk9OX0VYSVRFRF9USFJFQURTICh0aHJlYWQpCisg ICAgIGlmIChwdGlkX21hdGNoICh0aHJlYWQtPnB0aWQsIHB0aWQpCisgCSYmICFwdGlkX2VxdWFs IChpbmZlcmlvcl9wdGlkLCB0aHJlYWQtPnB0aWQpCisgCSYmIHRocmVhZC0+c3VzcGVuZC5zdG9w X3NpZ25hbCAhPSBHREJfU0lHTkFMXzAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3RocmVhZC1leGVjbC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3RocmVh ZC1leGVjbC5leHAKK2luZGV4IGQ4MzdmZTQuLjE0Yjk2ZDIgMTAwNjQ0CistLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3RocmVhZC1leGVjbC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvdGhyZWFkLWV4ZWNsLmV4cAorQEAgLTI4LDE5ICsyOCwzMyBAQCBpZiB7W2dk Yl9jb21waWxlX3B0aHJlYWRzICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9IiBcCisgICAgIHJldHVybiAtMQorIH0KKyAKKy1jbGVhbl9yZXN0YXJ0ICR7YmluZmls ZX0KKy0KKy1ydW50b19tYWluCistCistIyBHZXQgb3Vyc2VsdmVzIHRvIHRoZSB0aHJlYWQgdGhh dCBleGVjcworLWdkYl9icmVha3BvaW50ICJ0aHJlYWRfZXhlY2xlciIKKy1nZGJfdGVzdCAiY29u dGludWUiICIuKnRocmVhZF9leGVjbGVyLioiICJjb250aW51ZSB0byB0aHJlYWQgc3RhcnQiCist CistIyBOb3cgc2V0IGEgYnJlYWtwb2ludCBhdCBgbWFpbicsIGFuZCBzdGVwIG92ZXIgdGhlIGV4 ZWNsIGNhbGwuICBUaGUKKy0jIGJyZWFrcG9pbnQgYXQgbWFpbiBzaG91bGQgYmUgcmVhY2hlZC4g IEdEQiBzaG91bGQgbm90IHRyeSB0byByZXZlcnQKKy0jIGJhY2sgdG8gdGhlIG9sZCB0aHJlYWQg ZnJvbSB0aGUgb2xkIGltYWdlIGFuZCByZXN1bWUgc3RlcHBpbmcgaXQKKy0jIChzaW5jZSBpdCBp cyBnb25lKS4KKy1nZGJfYnJlYWtwb2ludCAibWFpbiIKKy1nZGJfdGVzdCAibmV4dCIgIi4qbWFp bi4qIiAiZ2V0IHRvIG1haW4gaW4gbmV3IGltYWdlIgorKyMgUnVuIHRoZSB0ZXN0IHByb3Blci4g IFNDSEVETE9DSyBzcGVjaWZpZXMgd2hhdCBzY2hlZHVsZXItbG9ja2luZworKyMgc2hvdWxkIGJl IHNldCB0by4KKysKKytwcm9jIGRvX3Rlc3QgeyBzY2hlZGxvY2sgfSB7CisrICAgIGdsb2JhbCBi aW5maWxlCisrCisrICAgIHdpdGhfdGVzdF9wcmVmaXggInNjaGVkbG9jayAkc2NoZWRsb2NrIiB7 CisrCWNsZWFuX3Jlc3RhcnQgJHtiaW5maWxlfQogKwotKwkqIGxpbnV4LWFhcmNoNjQtbG93LmMg KGFzbS9wdHJhY2UuaCk6IEluY2x1ZGUuCisrCWlmICFbcnVudG9fbWFpbl0geworKwkgICAgcmV0 dXJuIDAKKysJfQogKwotIDIwMTQtMDUtMjEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KKysJIyBHZXQgb3Vyc2VsdmVzIHRvIHRoZSB0aHJlYWQgdGhhdCBleGVj cy4KKysJZ2RiX2JyZWFrcG9pbnQgInRocmVhZF9leGVjbGVyIgorKwlnZGJfdGVzdCAiY29udGlu dWUiICIuKnRocmVhZF9leGVjbGVyLioiICJjb250aW51ZSB0byB0aHJlYWQgc3RhcnQiCisrCisr CSMgTm93IHNldCBhIGJyZWFrcG9pbnQgYXQgYG1haW4nLCBhbmQgc3RlcCBvdmVyIHRoZSBleGVj bCBjYWxsLiAgVGhlCisrCSMgYnJlYWtwb2ludCBhdCBtYWluIHNob3VsZCBiZSByZWFjaGVkLiAg R0RCIHNob3VsZCBub3QgdHJ5IHRvIHJldmVydAorKwkjIGJhY2sgdG8gdGhlIG9sZCB0aHJlYWQg ZnJvbSB0aGUgb2xkIGltYWdlIGFuZCByZXN1bWUgc3RlcHBpbmcgaXQKKysJIyAoc2luY2UgaXQg aXMgZ29uZSkuCisrCWdkYl9icmVha3BvaW50ICJtYWluIgorKwlnZGJfdGVzdF9ub19vdXRwdXQg InNldCBzY2hlZHVsZXItbG9ja2luZyAkc2NoZWRsb2NrIgorKwlnZGJfdGVzdCAibmV4dCIgIi4q bWFpbi4qIiAiZ2V0IHRvIG1haW4gaW4gbmV3IGltYWdlIgorKyAgICB9CisrfQogIAotIAlGaXgg VExTIGFjY2VzcyBmb3IgLXN0YXRpYyAtcHRocmVhZC4KLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGlu dXgtYWFyY2g2NC1sb3cuYwotKysrIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hYXJjaDY0LWxvdy5j Ci1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxzaWduYWwuaD4KLSAjaW5jbHVkZSA8c3lz L3VzZXIuaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotKyNpbmNsdWRlIDxhc20vcHRyYWNl Lmg+Ci0gI2luY2x1ZGUgPHN5cy91aW8uaD4KKy1yZXR1cm4gMAorK2ZvcmVhY2ggc2NoZWRsb2Nr IHsib2ZmIiAic3RlcCIgIm9uIn0geworKyAgICBkb190ZXN0ICRzY2hlZGxvY2sKKyt9CitkaWZm IC0tZ2l0IGEvZ2RiL3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCitpbmRleCA3YmM1MjcxLi41MzIx NDlkIDEwMDY0NAorLS0tIGEvZ2RiL3RocmVhZC5jCisrKysgYi9nZGIvdGhyZWFkLmMKK0BAIC0x MjQzLDcgKzEyNDMsNyBAQCB0aHJlYWRfYXBwbHlfYWxsX2NvbW1hbmQgKGNoYXIgKmNtZCwgaW50 IGZyb21fdHR5KQorICAgICAgIHRhX2NsZWFudXAudHBfYXJyYXkgPSB0cF9hcnJheTsKKyAgICAg ICB0YV9jbGVhbnVwLmNvdW50ID0gdGM7CiAgCi0gI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2Uu aCIKKy0gICAgICBBTExfVEhSRUFEUyAodHApCisrICAgICAgQUxMX05PTl9FWElURURfVEhSRUFE UyAodHApCisgICAgICAgICB7CisgICAgICAgICAgIHRwX2FycmF5W2ldID0gdHA7CisgICAgICAg ICAgIHRwLT5yZWZjb3VudCsrOworLS0gCisxLjkuMworCisKCmRpZmYgLS1naXQgYS9nZGItdmxh LWludGVsLTAxb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMDFvZjIzLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMzc4YTQKLS0tIC9kZXYvbnVsbAorKysgYi9n ZGItdmxhLWludGVsLTAxb2YyMy5wYXRjaApAQCAtMCwwICsxLDI3MCBAQAorU3ViamVjdDogW1BB VENIIDAxLzIzXSBkd2FyZjogYWRkIGR3YXJmMyBEV19PUF9wdXNoX29iamVjdF9hZGRyZXNzIG9w Y29kZQorTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0yLWdpdC1zZW5kLWVtYWlsLWtldmVu LmJvZWxsQGludGVsLmNvbT4KKworVGhlIG9wY29kZSBwdXNoZXMgdGhlIGFkZHJlc3Mgb2YgdGhl IG9iamVjdCBiZWluZyBldmFsdWF0ZWQuIFRoZSBzZW1hbnRpYyBpcworZXF1aXZhbGVudCB0byB0 aGUgaW1wbGljaXQgcHVzaCBvZiB0aGUgYmFzZSBhZGRyZXNzIG9mIGEgZGF0YSBtZW1iZXIgbG9j YXRpb24uCisKKzIwMTQtMDUtMjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50 ZWwuY29tPgorICAgICAgICAgICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+ CisKKwkqIGR3YXJmMmV4cHIuYyAoZXhlY3V0ZV9zdGFja19vcCkgPERXX09QX3B1c2hfb2JqZWN0 X2FkZHJlc3M+OiBOZXcgY2FzZS4KKwkqIGR3YXJmMmV4cHIuaCAoc3RydWN0IGR3YXJmX2V4cHJf Y29udGV4dF9mdW5jcykKKwk8RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcz46IE5ldyBmdW5jdGlv biBwb2ludGVyIGdldF9vYmplY3RfYWRkci4KKwkqIGR3YXJmMmxvYy5jIChzdHJ1Y3QgZHdhcmZf ZXhwcl9iYXRvbik6IEFkZCBvYmpfYWRkcmVzcy4KKwkoZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIp OiBOZXcgZnVuY3Rpb24uCisJKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MpOiBBZGQK Kwlkd2FyZl9leHByX2dldF9vYmpfYWRkciB0byBkd2FyZl9leHByX2N0eF9mdW5jcy4KKwkoZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwpOiBJbml0aWFsaXplIGJhdG9uLm9ial9hZGRyZXNz LgorCShkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsKTogU2V0IGJhdG9uLm9ial9hZGRyZXNzIHRv IGFkZHIuCisJKG5lZWRzX2dldF9vYmpfYWRkcik6IE5ldyBmdW5jdGlvbi4KKwkoc3RydWN0IGR3 YXJmX2V4cHJfY29udGV4dF9mdW5jcyk6IEFkZCBuZWVkc19nZXRfb2JqX2FkZHIgdG8KKwluZWVk c19mcmFtZV9jdHhfZnVuY3MuCisKK0NoYW5nZS1JZDogSWVkOWUxYmE2MzJlOGQzNWQwZWMwMGNj ODMyYjk2ZDQzMjQ0OWZkODIKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJv ZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi9kd2FyZjJleHByLmMgfCAgICA2ICsrKysrKworIGdk Yi9kd2FyZjJleHByLmggfCAgICA0IC0tLS0KKyBnZGIvZHdhcmYybG9jLmMgIHwgICA0MSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLQorIGdkYi9kd2FyZjJsb2MuaCAg fCAgICAxICsKKyBnZGIvZ2RidHlwZXMuYyAgIHwgICAxNiArKysrKysrKy0tLS0tLS0tCisgNSBm aWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworSW5kZXg6 IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2R3YXJmMmV4cHIuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZHdhcmYyZXhwci5jCTIwMTQtMDYtMTQgMTU6MDI6 MjEuNDg0NTUxMTMyICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYyZXhw ci5jCTIwMTQtMDYtMTQgMTU6MDI6NTIuMjk5NTc1MzY5ICswMjAwCitAQCAtMTQ3OCw2ICsxNDc4 LDEyIEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnQKKyAJICB9Cisg CSAgYnJlYWs7CisgCisrICAgICAgICBjYXNlIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3M6Cisr CSAgLyogUmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBvYmplY3Qgd2UgYXJlIGN1cnJlbnRseSBv YnNlcnZpbmcuICAqLworKwkgIHJlc3VsdCA9IChjdHgtPmZ1bmNzLT5nZXRfb2JqZWN0X2FkZHJl c3MpIChjdHgtPmJhdG9uKTsKKysJICByZXN1bHRfdmFsID0gdmFsdWVfZnJvbV91bG9uZ2VzdCAo YWRkcmVzc190eXBlLCByZXN1bHQpOworKwkgIGJyZWFrOworKworIAlkZWZhdWx0OgorIAkgIGVy cm9yIChfKCJVbmhhbmRsZWQgZHdhcmYgZXhwcmVzc2lvbiBvcGNvZGUgMHgleCIpLCBvcCk7Cisg CX0KK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJleHByLmgKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmV4cHIuaAkyMDE0LTA2 LTE0IDE1OjAyOjIxLjQ4NTU1MTEzMyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2R3YXJmMmV4cHIuaAkyMDE0LTA2LTE0IDE1OjAyOjUyLjI5OTU3NTM2OSArMDIwMAorQEAgLTg0 LDEyICs4NCw4IEBAIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKKyAgICAgIFRoaXMg Y2FuIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLiAgKi8K KyAgIENPUkVfQUREUiAoKmdldF9hZGRyX2luZGV4KSAodm9pZCAqYmF0b24sIHVuc2lnbmVkIGlu dCBpbmRleCk7CisgCistI2lmIDAKKy0gIC8qIE5vdCB5ZXQgaW1wbGVtZW50ZWQuICAqLworLQor ICAgLyogUmV0dXJuIHRoZSBgb2JqZWN0IGFkZHJlc3MnIGZvciBEV19PUF9wdXNoX29iamVjdF9h ZGRyZXNzLiAgKi8KKyAgIENPUkVfQUREUiAoKmdldF9vYmplY3RfYWRkcmVzcykgKHZvaWQgKmJh dG9uKTsKKy0jZW5kaWYKKyB9OworIAorIC8qIFRoZSBsb2NhdGlvbiBvZiBhIHZhbHVlLiAgKi8K K0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJsb2MuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNCAx NTowMjoyMS40ODc1NTExMzUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2Fy ZjJsb2MuYwkyMDE0LTA2LTE0IDE1OjAyOjUyLjMwMTU3NTM3MCArMDIwMAorQEAgLTMwNiw2ICsz MDYsNyBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgorIHsKKyAgIHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZTsKKyAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKKysgIENPUkVf QUREUiBvYmpfYWRkcmVzczsKKyB9OworIAorIC8qIEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJm Ml9ldmFsdWF0ZV9sb2NfZGVzYy4gICovCitAQCAtMTIwOSw2ICsxMjEwLDcgQEAgZHdhcmZfZXhw cl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAocworIAorICAgYmF0b25fbG9jYWwuZnJhbWUg PSBjYWxsZXJfZnJhbWU7CisgICBiYXRvbl9sb2NhbC5wZXJfY3UgPSBjYWxsZXJfcGVyX2N1Owor KyAgYmF0b25fbG9jYWwub2JqX2FkZHJlc3MgPSAwOworIAorICAgc2F2ZWRfY3R4LmdkYmFyY2gg PSBjdHgtPmdkYmFyY2g7CisgICBzYXZlZF9jdHguYWRkcl9zaXplID0gY3R4LT5hZGRyX3NpemU7 CitAQCAtMTIzOCw2ICsxMjQwLDIyIEBAIGR3YXJmX2V4cHJfZ2V0X2FkZHJfaW5kZXggKHZvaWQg KmJhdG9uLAorICAgcmV0dXJuIGR3YXJmMl9yZWFkX2FkZHJfaW5kZXggKGRlYmF0b24tPnBlcl9j dSwgaW5kZXgpOworIH0KKyAKKysvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZ2V0X29iamVjdF9h ZGRyZXNzLiBSZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIFZMQQorKyAgIG9iamVjdC4gICovCisr Cisrc3RhdGljIENPUkVfQUREUgorK2R3YXJmX2V4cHJfZ2V0X29ial9hZGRyICh2b2lkICpiYXRv bikKKyt7CisrICBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiAqZGViYXRvbiA9IGJhdG9uOworKwor KyAgZ2RiX2Fzc2VydCAoZGViYXRvbiAhPSBOVUxMKTsKKysKKysgIGlmIChkZWJhdG9uLT5vYmpf YWRkcmVzcyA9PSAwKQorKyAgICBlcnJvciAoXygiTG9jYXRpb24gYWRkcmVzcyBpcyBub3Qgc2V0 LiIpKTsKKysKKysgIHJldHVybiBkZWJhdG9uLT5vYmpfYWRkcmVzczsKKyt9CisrCisgLyogVkFM VUUgbXVzdCBiZSBvZiB0eXBlIGx2YWxfY29tcHV0ZWQgd2l0aCBlbnRyeV9kYXRhX3ZhbHVlX2Z1 bmNzLiAgUGVyZm9ybQorICAgIHRoZSBpbmRpcmVjdCBtZXRob2Qgb24gaXQsIHRoYXQgaXMgdXNl IGl0cyBzdG9yZWQgdGFyZ2V0IHZhbHVlLCB0aGUgc29sZQorICAgIHB1cnBvc2Ugb2YgZW50cnlf ZGF0YV92YWx1ZV9mdW5jcy4uICAqLworQEAgLTIyMDYsNyArMjIyNCw4IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2YKKyAgIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCwK KyAgIGR3YXJmX2V4cHJfZ2V0X2Jhc2VfdHlwZSwKKyAgIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9y ZWdfZW50cnlfdmFsdWUsCistICBkd2FyZl9leHByX2dldF9hZGRyX2luZGV4CisrICBkd2FyZl9l eHByX2dldF9hZGRyX2luZGV4LAorKyAgZHdhcmZfZXhwcl9nZXRfb2JqX2FkZHIKKyB9OworIAor IC8qIEV2YWx1YXRlIGEgbG9jYXRpb24gZGVzY3JpcHRpb24sIHN0YXJ0aW5nIGF0IERBVEEgYW5k IHdpdGggbGVuZ3RoCitAQCAtMjIzNSw2ICsyMjU0LDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjX2Z1bGwgKHN0cnVjdCB0eQorIAorICAgYmF0b24uZnJhbWUgPSBmcmFtZTsKKyAgIGJhdG9u LnBlcl9jdSA9IHBlcl9jdTsKKysgIGJhdG9uLm9ial9hZGRyZXNzID0gMDsKKyAKKyAgIGN0eCA9 IG5ld19kd2FyZl9leHByX2NvbnRleHQgKCk7CisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBf ZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7CitAQCAtMjQ0MCw2ICsyNDYwLDcgQEAgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdAorIAorIHN0YXRpYyBpbnQKKyBk d2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0 b24gKmRsYmF0b24sCisrICAgICAgICAgQ09SRV9BRERSIGFkZHIsCisgCQkJICAgQ09SRV9BRERS ICp2YWxwKQorIHsKKyAgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsKK0BAIC0yNDU1 LDYgKzI0NzYsNyBAQCBkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsIChjb25zdCBzdHJ1Y3QKKyAK KyAgIGJhdG9uLmZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKTsKKyAgIGJhdG9uLnBl cl9jdSA9IGRsYmF0b24tPnBlcl9jdTsKKysgIGJhdG9uLm9ial9hZGRyZXNzID0gYWRkcjsKKyAK KyAgIG9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZpbGUgKGRsYmF0b24tPnBlcl9jdSk7Cisg CitAQCAtMjQ5NSw3ICsyNTE3LDggQEAgZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoY29uc3Qg c3RydWN0CisgLyogU2VlIGR3YXJmMmxvYy5oLiAgKi8KKyAKKyBpbnQKKy1kd2FyZjJfZXZhbHVh dGVfcHJvcGVydHkgKGNvbnN0IHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3AsIENPUkVfQUREUiAq dmFsdWUpCisrZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19w cm9wICpwcm9wLCBDT1JFX0FERFIgYWRkcmVzcywKKysgICAgICAgIENPUkVfQUREUiAqdmFsdWUp CisgeworICAgaWYgKHByb3AgPT0gTlVMTCkKKyAgICAgcmV0dXJuIDA7CitAQCAtMjUwNiw3ICsy NTI5LDcgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChjb25zdCBzdHJ1Y3QgZAorICAgICAg IHsKKyAJY29uc3Qgc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0b24gPSBwcm9wLT5k YXRhLmJhdG9uOworIAorLQlpZiAoZHdhcmYyX2xvY2V4cHJfYmF0b25fZXZhbCAoJmJhdG9uLT5s b2NleHByLCB2YWx1ZSkpCisrCWlmIChkd2FyZjJfbG9jZXhwcl9iYXRvbl9ldmFsICgmYmF0b24t PmxvY2V4cHIsIGFkZHJlc3MsIHZhbHVlKSkKKyAJICB7CisgCSAgICBpZiAoYmF0b24tPnJlZmVy ZW5jZWRfdHlwZSkKKyAJICAgICAgeworQEAgLTI2NTcsNiArMjY4MCwxNSBAQCBuZWVkc19nZXRf YWRkcl9pbmRleCAodm9pZCAqYmF0b24sIHVuc2lnCisgICByZXR1cm4gMTsKKyB9CisgCisrLyog RFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcyBoYXMgYSBmcmFtZSBhbHJlYWR5IHBhc3NlZCB0aHJ1 LiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrbmVlZHNfZ2V0X29ial9hZGRyICh2b2lkICpi YXRvbikKKyt7CisrICAvKiBOb3RoaW5nIHRvIGRvLiAgKi8KKysgIHJldHVybiAxOworK30KKysK KyAvKiBWaXJ0dWFsIG1ldGhvZCB0YWJsZSBmb3IgZHdhcmYyX2xvY19kZXNjX25lZWRzX2ZyYW1l IGJlbG93LiAgKi8KKyAKKyBzdGF0aWMgY29uc3Qgc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dF9m dW5jcyBuZWVkc19mcmFtZV9jdHhfZnVuY3MgPQorQEAgLTI2NzEsNyArMjcwMyw4IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0X2YKKyAgIG5lZWRzX2ZyYW1lX2R3YXJm X2NhbGwsCisgICBOVUxMLAkJCQkvKiBnZXRfYmFzZV90eXBlICovCisgICBuZWVkc19kd2FyZl9y ZWdfZW50cnlfdmFsdWUsCistICBuZWVkc19nZXRfYWRkcl9pbmRleAorKyAgbmVlZHNfZ2V0X2Fk ZHJfaW5kZXgsCisrICBuZWVkc19nZXRfb2JqX2FkZHIKKyB9OworIAorIC8qIFJldHVybiBub24t emVybyBpZmYgdGhlIGxvY2F0aW9uIGV4cHJlc3Npb24gYXQgREFUQSAobGVuZ3RoIFNJWkUpCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6 MDI6MjEuNDg4NTUxMTM1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYy bG9jLmgJMjAxNC0wNi0xNCAxNTowMjo1Mi4zMDE1NzUzNzAgKzAyMDAKK0BAIC05Niw2ICs5Niw3 IEBAIHN0cnVjdCB2YWx1ZSAqZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjICgKKyAgICBpbnRvIFZB TFVFLCBvdGhlcndpc2UgcmV0dXJucyAwLiAgKi8KKyAKKyBpbnQgZHdhcmYyX2V2YWx1YXRlX3By b3BlcnR5IChjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wLAorKwkJCSAgICAgIENPUkVf QUREUiBhZGRyZXNzLAorIAkJCSAgICAgIENPUkVfQUREUiAqdmFsdWUpOworIAorIENPUkVfQURE UiBkd2FyZjJfcmVhZF9hZGRyX2luZGV4IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJf Y3UsCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0 IDE1OjAyOjIxLjQ5MDU1MTEzNyArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dk YnR5cGVzLmMJMjAxNC0wNi0xNCAxNTowMzozNy45MTk2MDk5NTUgKzAyMDAKK0BAIC0xNjU3LDcg KzE2NTcsNyBAQCBpc19keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorICAgIG9mIHRo YXQgdHlwZS4gICovCisgCisgc3RhdGljIHN0cnVjdCB0eXBlICoKKy1yZXNvbHZlX2R5bmFtaWNf cmFuZ2UgKHN0cnVjdCB0eXBlICpkeW5fcmFuZ2VfdHlwZSkKKytyZXNvbHZlX2R5bmFtaWNfcmFu Z2UgKHN0cnVjdCB0eXBlICpkeW5fcmFuZ2VfdHlwZSwgQ09SRV9BRERSIGFkZHIpCisgeworICAg Q09SRV9BRERSIHZhbHVlOworICAgc3RydWN0IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlOworQEAg LTE2NjgsNyArMTY2OCw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5 bl8KKyAgIGdkYl9hc3NlcnQgKFRZUEVfQ09ERSAoZHluX3JhbmdlX3R5cGUpID09IFRZUEVfQ09E RV9SQU5HRSk7CisgCisgICBwcm9wID0gJlRZUEVfUkFOR0VfREFUQSAoZHluX3JhbmdlX3R5cGUp LT5sb3c7CistICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCAmdmFsdWUpKQor KyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKKyAg ICAgeworICAgICAgIGxvd19ib3VuZC5raW5kID0gUFJPUF9DT05TVDsKKyAgICAgICBsb3dfYm91 bmQuZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKK0BAIC0xNjgwLDcgKzE2ODAsNyBAQCByZXNvbHZl X2R5bmFtaWNfcmFuZ2UgKHN0cnVjdCB0eXBlICpkeW5fCisgICAgIH0KKyAKKyAgIHByb3AgPSAm VFlQRV9SQU5HRV9EQVRBIChkeW5fcmFuZ2VfdHlwZSktPmhpZ2g7CistICBpZiAoZHdhcmYyX2V2 YWx1YXRlX3Byb3BlcnR5IChwcm9wLCAmdmFsdWUpKQorKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9w cm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKKyAgICAgeworICAgICAgIGhpZ2hfYm91bmQu a2luZCA9IFBST1BfQ09OU1Q7CisgICAgICAgaGlnaF9ib3VuZC5kYXRhLmNvbnN0X3ZhbCA9IHZh bHVlOworQEAgLTE3MDcsNyArMTcwNyw3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0 IHR5cGUgKmR5bl8KKyAgICBvZiB0aGUgYXNzb2NpYXRlZCBhcnJheS4gICovCisgCisgc3RhdGlj IHN0cnVjdCB0eXBlICoKKy1yZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBl KQorK3Jlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBh ZGRyKQorIHsKKyAgIENPUkVfQUREUiB2YWx1ZTsKKyAgIHN0cnVjdCB0eXBlICplbHRfdHlwZTsK K0BAIC0xNzE4LDEyICsxNzE4LDEyIEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5 cGUgKnR5cGUKKyAKKyAgIGVsdF90eXBlID0gdHlwZTsKKyAgIHJhbmdlX3R5cGUgPSBjaGVja190 eXBlZGVmIChUWVBFX0lOREVYX1RZUEUgKGVsdF90eXBlKSk7CistICByYW5nZV90eXBlID0gcmVz b2x2ZV9keW5hbWljX3JhbmdlIChyYW5nZV90eXBlKTsKKysgIHJhbmdlX3R5cGUgPSByZXNvbHZl X2R5bmFtaWNfcmFuZ2UgKHJhbmdlX3R5cGUsIGFkZHIpOworIAorICAgYXJ5X2RpbSA9IGNoZWNr X3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGVsdF90eXBlKSk7CisgCisgICBpZiAoYXJ5X2Rp bSAhPSBOVUxMICYmIFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9DT0RFX0FSUkFZKQorLSAg ICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpOworKyAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSksIGFkZHIpOworICAgZWxzZQorICAgICBlbHRfdHlwZSA9IFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpOworIAorQEAgLTE4NTMsMTEgKzE4NTMsMTEgQEAgcmVzb2x2ZV9keW5hbWlj X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorIAl9CisgCisgICAgICAgY2FzZSBUWVBFX0NPREVf QVJSQVk6CistCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJyYXkgKHR5cGUpOwor KwlyZXNvbHZlZF90eXBlID0gcmVzb2x2ZV9keW5hbWljX2FycmF5ICh0eXBlLCBhZGRyKTsKKyAJ YnJlYWs7CisgCisgICAgICAgY2FzZSBUWVBFX0NPREVfUkFOR0U6CistCXJlc29sdmVkX3R5cGUg PSByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHR5cGUpOworKwlyZXNvbHZlZF90eXBlID0gcmVzb2x2 ZV9keW5hbWljX3JhbmdlICh0eXBlLCBhZGRyKTsKKyAJYnJlYWs7CisgCisgICAgIGNhc2UgVFlQ RV9DT0RFX1VOSU9OOgoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDJvZjIzLnBhdGNoIGIv Z2RiLXZsYS1pbnRlbC0wMm9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYjc5N2VjZQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMDJvZjIzLnBh dGNoCkBAIC0wLDAgKzEsMTkyIEBACitTdWJqZWN0OiBbUEFUQ0ggMDIvMjNdIGR3YXJmOiBhZGQg RFdfQVRfZGF0YV9sb2NhdGlvbiBzdXBwb3J0CitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQw LTMtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitBbiBvYmplY3QgbWln aHQgaGF2ZSBhIGRlc2NyaXB0b3IgcHJvY2VlZGluZyB0aGUgYWN0dWFsIHZhbHVlLgorVG8gcG9p bnQgdGhlIGRlYnVnZ2VyIHRvIHRoZSBhY3R1YWxseSB2YWx1ZSBvZiBhbiBvYmplY3QKK0RXX0FU X2RhdGFfbG9jYXRpb24gaXMgdXNlZCBmb3IuIEZvciBleGFtcGxlIHRoZSBjb21waWxlIG1heQor ZW1pdCBmb3IgdGhpcyBlbnRpdHk6CisKKyAgMXwgaW50IGZvb1tOXTsKKwordGhlIGZvbGxvd2lu ZyBkZXNjcmlwdG9yOgorCitzdHJ1Y3QgYXJyYXkgeworICBzaXplX3Qgc2l6ZTsKKyAgdm9pZCog IGRhdGE7IC8vIERXX0FUX2RhdGFfbG9jYXRpb24gZGVzY3JpYmVzIHRoaXMgbG9jYXRpb24KK30K KworVGhpcyBhbGxvd3MgR0RCIHRvIHByaW50IHRoZSBhY3R1YWwgZGF0YSBvZiBhbiB0eXBlLgor CisyMDE0LTA1LTI4ICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4K KyAgICAgICAgICAgIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCisJKiBk d2FyZjJyZWFkLmMgKHNldF9kaWVfdHlwZSk6IFBhcnNlIGFuZCBzYXZlIERXX0FUX2RhdGFfbG9j YXRpb24KKwlhdHRyaWJ1dGUuCisJKiBnZGJ0eXBlcy5jIChpc19keW5hbWljX3R5cGUpOiBDb25z aWRlciBhIHR5cGUgYmVpbmcgZHluYW1pYyBpZgorCXRoZSBkYXRhIGxvY2F0aW9uIGhhcyBub3Qg eWV0IGJlZW4gcmVzb2x2ZWQuCisJKHJlc29sdmVfZHluYW1pY190eXBlKTogRXZhbHVhdGUgZGF0 YSBsb2NhdGlvbiBiYXRvbgorCWlmIHByZXNlbnQgYW5kIHNhdmUgaXRzIHZhbHVlLgorCSogZ2Ri dHlwZXMuaCA8bWFpbl90eXBlPjogQWRkIGRhdGFfbG9jYXRpb24uCisJKFRZUEVfREFUQV9MT0NB VElPTik6IE5ldyBtYWNyby4KKwkoVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIpOiBOZXcgbWFjcm8u CisJKFRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSRVNTKTogTmV3IG1hY3JvLgorCSogdmFsdWUu YzogSW5jbHVkZSBkd2FyZjJsb2MuaC4KKwkodmFsdWVfZmV0Y2hfbGF6eSk6IFVzZSBkYXRhIGxv Y2F0aW9uIGFkZHJlcyB0byByZWFkIHZhbHVlIGZyb20KKwltZW1vcnkuCisJKGNvZXJjZV9yZWYp OiBDb25zdHJ1Y3QgbmV3IHZhbHVlIGZyb20gZGF0YSBsb2NhdGlvbi4KKworQ2hhbmdlLUlkOiBJ YzYzM2ZhMTI1ZWZkYjVlNDM4MjA0ZTRmODBiYjNhMWM5Nzc1OGIxMgorCitTaWduZWQtb2ZmLWJ5 OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL2R3YXJmMnJl YWQuYyB8ICAgMTUgKysrKysrKysrKysrKysrCisgZ2RiL2dkYnR5cGVzLmMgICB8ICAgMjkgKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBnZGIvZ2RidHlwZXMuaCAgIHwgICAxNCArKysr KysrKysrKysrKworIGdkYi92YWx1ZS5jICAgICAgfCAgICA4ICsrKysrKystCisgNCBmaWxlcyBj aGFuZ2VkLCA2MyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitJbmRleDogZ2RiLTcu Ny45MC4yMDE0MDYxMy9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxNC0wNi0xNCAxNTowNjowMC44MzQ3 MTQ0MDkgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJyZWFkLmMJMjAx NC0wNi0xNCAxNTowNjowOC4zMjY3MTk3NTMgKzAyMDAKK0BAIC0yMTY0Miw2ICsyMTY0Miw3IEBA IHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnUKKyB7CisgICBzdHJ1Y3Qg ZHdhcmYyX3Blcl9jdV9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7CisgICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOworKyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsK KyAKKyAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNpZmlj IGRhdGEgaXMgYWx3YXlzCisgICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0KS4g IFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQorQEAgLTIxNjU2LDYgKzIxNjU3LDIwIEBAIHNl dF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnUKKyAgICAgICAmJiAhSEFWRV9H TkFUX0FVWF9JTkZPICh0eXBlKSkKKyAgICAgSU5JVF9HTkFUX1NQRUNJRklDICh0eXBlKTsKKyAK KysgIC8qIFJlYWQgRFdfQVRfZGF0YV9sb2NhdGlvbiBhbmQgc2V0IGluIHR5cGUuICAqLworKyAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKKysgIGlm IChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICB7CisrICAgICAgc3RydWN0IGR5bmFt aWNfcHJvcCBwcm9wOworKworKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwg ZGllLCBjdSwgJnByb3ApKQorKwl7CisrCSAgVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKQorKwkg ICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHBy b3ApKTsKKysJICAqVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKSA9IHByb3A7CisrCX0KKysgICAg fQorKworICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+ZGllX3R5cGVfaGFzaCA9PSBOVUxMKQor ICAgICB7CisgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5kaWVfdHlwZV9oYXNoID0KK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTQgMTU6MDY6MDAu ODM2NzE0NDEwICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwky MDE0LTA2LTE0IDE1OjEyOjI4Ljk2Mzk4NjM0NCArMDIwMAorQEAgLTE2MzQsNyArMTYzNCwxMiBA QCBpc19keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorIAkgICBvciB0aGUgZWxlbWVu dHMgaXQgY29udGFpbnMgaGF2ZSBhIGR5bmFtaWMgY29udGVudHMuICAqLworIAlpZiAoaXNfZHlu YW1pY190eXBlIChUWVBFX0lOREVYX1RZUEUgKHR5cGUpKSkKKyAJICByZXR1cm4gMTsKKy0JcmV0 dXJuIGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworKwllbHNlIGlm IChUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpICE9IE5VTEwKKysgICAgICAgICAgJiYgKFRZUEVf REFUQV9MT0NBVElPTl9LSU5EICh0eXBlKSA9PSBQUk9QX0xPQ0VYUFIKKysgICAgICAgICAgICAg IHx8IFRZUEVfREFUQV9MT0NBVElPTl9LSU5EICh0eXBlKSA9PSBQUk9QX0xPQ0xJU1QpKQorKyAg ICByZXR1cm4gMTsKKysgIGVsc2UKKysgICAgcmV0dXJuIGlzX2R5bmFtaWNfdHlwZSAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSkpOworICAgICAgIH0KKyAKKyAgICAgY2FzZSBUWVBFX0NPREVfU1RS VUNUOgorQEAgLTE4MzAsNiArMTgzNSw4IEBAIHJlc29sdmVfZHluYW1pY190eXBlIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKKyB7CisgICBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlID0gY2hlY2tfdHlwZWRl ZiAodHlwZSk7CisgICBzdHJ1Y3QgdHlwZSAqcmVzb2x2ZWRfdHlwZSA9IHR5cGU7CisrICBjb25z dCBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wOworKyAgQ09SRV9BRERSIHZhbHVlOworIAorICAg aWYgKCFpc19keW5hbWljX3R5cGUgKHJlYWxfdHlwZSkpCisgICAgIHJldHVybiB0eXBlOworQEAg LTE4NjksNiArMTg3NiwxOCBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5 cGUsCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIHR5cGUgPSByZXNvbHZlZF90eXBlOwor KworKyAgLyogUmVzb2x2ZSBkYXRhX2xvY2F0aW9uIGF0dHJpYnV0ZS4gICovCisrICBwcm9wID0g VFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKTsKKysgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVy dHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCisrICAgIHsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJ T05fQUREUiAodHlwZSkgPSB2YWx1ZTsKKysgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAo dHlwZSkgPSBQUk9QX0NPTlNUOworKyAgICB9CisrICBlbHNlCisrICAgIFRZUEVfREFUQV9MT0NB VElPTiAodHlwZSkgPSBOVUxMOworKworICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7CisgfQorIAor QEAgLTQwNzgsNiArNDA5NywxMyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqCisgICAgICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0gKlRZUEVfUkFOR0Vf REFUQSAodHlwZSk7CisgICAgIH0KKyAKKysgIC8qIENvcHkgdGhlIGRhdGEgbG9jYXRpb24gaW5m b3JtYXRpb24uICAqLworKyAgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkgIT0gTlVMTCkK KysgICAgeworKyAgICAgIFRZUEVfREFUQV9MT0NBVElPTiAobmV3X3R5cGUpID0geG1hbGxvYyAo c2l6ZW9mIChzdHJ1Y3QgZHluYW1pY19wcm9wKSk7CisrICAgICAgKlRZUEVfREFUQV9MT0NBVElP TiAobmV3X3R5cGUpID0gKlRZUEVfREFUQV9MT0NBVElPTiAodHlwZSk7CisrICAgIH0KKysKKyAg IC8qIENvcHkgcG9pbnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLworICAgaWYgKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpKQorICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKK0luZGV4 OiBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5oCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTQtMDYtMTQgMTU6MDY6MDAu ODM3NzE0NDExICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuaAky MDE0LTA2LTE0IDE1OjA2OjA4LjMyODcxOTc1NCArMDIwMAorQEAgLTcyNSw2ICs3MjUsMTAgQEAg c3RydWN0IG1haW5fdHlwZQorIAorICAgICBzdHJ1Y3QgZnVuY190eXBlICpmdW5jX3N0dWZmOwor ICAgfSB0eXBlX3NwZWNpZmljOworKworKyAgLyogKiBJbmRpcmVjdGlvbiB0byBhY3R1YWwgZGF0 YS4gICovCisrCisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICpkYXRhX2xvY2F0aW9uOworIH07Cisg CisgLyogKiBBIGBgc3RydWN0IHR5cGUnJyBkZXNjcmliZXMgYSBwYXJ0aWN1bGFyIGluc3RhbmNl IG9mIGEgdHlwZSwgd2l0aAorQEAgLTEyMDQsNiArMTIwOCwxNiBAQCBleHRlcm4gdm9pZCBhbGxv Y2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CisgI2RlZmluZSBUWVBFX0xPV19CT1VORF9LSU5EKHJh bmdlX3R5cGUpIFwKKyAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93LmtpbmQKKyAK KysvKiBBdHRyaWJ1dGUgYWNjZXNzb3JzIGZvciBWTEEgc3VwcG9ydC4gICovCisrI2RlZmluZSBU WVBFX0RBVEFfTE9DQVRJT04odGhpc3R5cGUpIFwKKysgIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBl KS0+ZGF0YV9sb2NhdGlvbgorKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0JBVE9OKHRoaXN0 eXBlKSBcCisrICBUWVBFX0RBVEFfTE9DQVRJT04gKHRoaXN0eXBlKS0+ZGF0YS5iYXRvbgorKyNk ZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIodGhpc3R5cGUpIFwKKysgIFRZUEVfREFUQV9M T0NBVElPTiAodGhpc3R5cGUpLT5kYXRhLmNvbnN0X3ZhbAorKyNkZWZpbmUgVFlQRV9EQVRBX0xP Q0FUSU9OX0tJTkQodGhpc3R5cGUpIFwKKysgIFRZUEVfREFUQV9MT0NBVElPTiAodGhpc3R5cGUp LT5raW5kCisrCisgLyogTW90by1zcGVjaWZpYyBzdHVmZiBmb3IgRk9SVFJBTiBhcnJheXMuICAq LworIAorICNkZWZpbmUgVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQoYXJyYXl0 eXBlKSBcCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsdWUuYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFsdWUuYwkyMDE0LTA2LTE0IDE1 OjA2OjAwLjgzODcxNDQxMiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHVl LmMJMjAxNC0wNi0xNCAxNTowNjowOC4zMjk3MTk3NTUgKzAyMDAKK0BAIC0zNjk5LDggKzM2OTks MTQgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCisgICAgIH0KKyAgIGVs c2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCisgICAgIHsKKy0gICAgICBD T1JFX0FERFIgYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisgICAgICAgc3RydWN0IHR5cGUg KnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSk7CisrICAg ICAgQ09SRV9BRERSIGFkZHI7CisrCisrICAgICAgaWYgKFRZUEVfREFUQV9MT0NBVElPTiAodHlw ZSkgIT0gTlVMTAorKwkgICYmIFRZUEVfREFUQV9MT0NBVElPTl9LSU5EICh0eXBlKSA9PSBQUk9Q X0NPTlNUKQorKwlhZGRyID0gVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKHR5cGUpOworKyAgICAg IGVsc2UKKysJYWRkciA9IHZhbHVlX2FkZHJlc3MgKHZhbCk7CisgCisgICAgICAgaWYgKFRZUEVf TEVOR1RIICh0eXBlKSkKKyAJcmVhZF92YWx1ZV9tZW1vcnkgKHZhbCwgMCwgdmFsdWVfc3RhY2sg KHZhbCksCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wM29mMjMucGF0Y2ggYi9nZGItdmxh LWludGVsLTAzb2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5m YjI4NGU5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0wM29mMjMucGF0Y2gKQEAg LTAsMCArMSwxMTUgQEAKK1N1YmplY3Q6IFtQQVRDSCAwMy8yM10gdmxhOiBpbnRyb2R1Y2UgYWxs b2NhdGVkL2Fzc29jaWF0ZWQgZmxhZ3MKK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtNC1n aXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKK0ZvcnRyYW4gOTAgcHJvdmlk ZSB0eXBlcyB3aG9zZSB2YWx1ZXMgbWF5IGJlIGR5bmFtaWNhbGx5CithbGxvY2F0ZWQgb3IgYXNz b2NpYXRlZCB3aXRoIGEgdmFyaWFibGUgdW5kZXIgZXhwbGljaXQKK3Byb2dyYW0gY29udHJvbC4g VGhlIHB1cnBvc2Ugb2YgdGhpcyBjb21taXQgaXMgdG8gcmVhZAorYWxsb2NhdGVkL2Fzc29jaWF0 ZWQgRFdBUkYgdGFncyBhbmQgc3RvcmUgdGhlbSB0byB0aGUKK21haW5fdHlwZS4KKworMjAxNC0w NS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisgICAgICAgICAgICBT YW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KKworCSogZHdhcmYycmVh ZC5jIChzZXRfZGllX3R5cGUpOiBBZGQgcmVhZGluZyBvZgorCWFsbG9jYXRlZC9hc3NvY2lhdGVk IGZsYWdzLgorCSogZ2RidHlwZXMuaCAoc3RydWN0IG1haW5fdHlwZSk6IEFkZCBhbGxvY2F0ZWQv CisJYXNzb2NpYXRlZCBkd2FyZjJfcHJvcCBhdHRyaWJ1dGVzLgorCShUWVBFX0FMTE9DQVRFRF9Q Uk9QKTogTmV3IG1hY3JvLgorCShUWVBFX0FTU09DSUFURURfUFJPUCk6IE5ldyBtYWNyby4KKwko VFlQRV9OT1RfQUxMT0NBVEVEKTogTmV3IG1hY3JvLgorCShUWVBFX05PVF9BU1NPQ0lBVEVEKTog TmV3IG1hY3JvLgorCitDaGFuZ2UtSWQ6IEk0NGE5ZTIxOTg2ZGUxNmRlMDYxYjNlYTJhNzY4OWYx YmZhMjhlZDJlCisKK1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRl bC5jb20+CistLS0KKyBnZGIvZHdhcmYycmVhZC5jIHwgICAyOCArKysrKysrKysrKysrKysrKysr KysrKysrKysrCisgZ2RiL2dkYnR5cGVzLmggICB8ICAgMjYgKysrKysrKysrKysrKysrKysrKysr KysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBh L2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCitpbmRleCA3YTBmN2Y0Li5lYTY2 NjAyIDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQu YworQEAgLTIxNTE0LDYgKzIxNTE0LDM0IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgICAm JiAhSEFWRV9HTkFUX0FVWF9JTkZPICh0eXBlKSkKKyAgICAgSU5JVF9HTkFUX1NQRUNJRklDICh0 eXBlKTsKKyAKKysgIC8qIFJlYWQgRFdfQVRfYWxsb2NhdGVkIGFuZCBzZXQgaW4gdHlwZS4gICov CisrICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYWxsb2NhdGVkLCBjdSk7CisrICBp ZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgeworKyAgICAgIHN0cnVjdCBkeW5h bWljX3Byb3AgcHJvcDsKKysKKysgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIs IGRpZSwgY3UsICZwcm9wKSkKKysgICAgICAgIHsKKysgICAgICAgICAgVFlQRV9BTExPQ0FURURf UFJPUCAodHlwZSkKKysgICAgICAgICAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssIHNpemVvZiAocHJvcCkpOworKyAgICAgICAgICAqVFlQRV9BTExPQ0FURURf UFJPUCAodHlwZSkgPSBwcm9wOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAvKiBSZWFkIERX X0FUX2Fzc29jaWF0ZWQgYW5kIHNldCBpbiB0eXBlLiAgKi8KKysgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7CisrICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2Nr IChhdHRyKSkKKysgICAgeworKyAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3AgcHJvcDsKKysKKysg ICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZwcm9wKSkKKysg ICAgICAgIHsKKysgICAgICAgICAgVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpCisrICAgICAg ICAgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2Yg KHByb3ApKTsKKysgICAgICAgICAgKlRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKSA9IHByb3A7 CisrICAgICAgICB9CisrICAgIH0KKysKKyAgIC8qIFJlYWQgRFdfQVRfZGF0YV9sb2NhdGlvbiBh bmQgc2V0IGluIHR5cGUuICAqLworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2Rh dGFfbG9jYXRpb24sIGN1KTsKKyAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorZGlm ZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IGM2ZDE0ZDIu LjUyZTYyMzMgMTAwNjQ0CistLS0gYS9nZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVz LmgKK0BAIC03MjYsNiArNzI2LDE4IEBAIHN0cnVjdCBtYWluX3R5cGUKKyAgIC8qICogSW5kaXJl Y3Rpb24gdG8gYWN0dWFsIGRhdGEuICAqLworIAorICAgc3RydWN0IGR5bmFtaWNfcHJvcCAqZGF0 YV9sb2NhdGlvbjsKKysKKysgIC8qIFN0cnVjdHVyZSBmb3IgRFdfQVRfYWxsb2NhdGVkLgorKyAg ICAgVGhlIHByZXNlbmNlIG9mIHRoaXMgYXR0cmlidXRlIGluZGljYXRlcyB0aGF0IHRoZSBvYmpl Y3Qgb2YgdGhlIHR5cGUKKysgICAgIGNhbiBiZSBhbGxvY2F0ZWQvZGVhbGxvY2F0ZWQuICBUaGUg dmFsdWUgY2FuIGJlIGEgZHdhcmYgZXhwcmVzc2lvbiwKKysgICAgIHJlZmVyZW5jZSwgb3IgYSBj b25zdGFudC4gICovCisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICphbGxvY2F0ZWQ7CisrCisrICAv KiBTdHJ1Y3R1cmUgZm9yIERXX0FUX2Fzc29jaWF0ZWQuCisrICAgICBUaGUgcHJlc2VuY2Ugb2Yg dGhpcyBhdHRyaWJ1dGUgaW5kaWNhdGVkIHRoYXQgdGhlIG9iamVjdCBvZiB0aGUgdHlwZQorKyAg ICAgY2FuIGJlIGFzc29jaWF0ZWQuICBUaGUgdmFsdWUgY2FuIGJlIGEgZHdhcmYgZXhwcmVzc2lv biwKKysgICAgIHJlZmVyZW5jZSwgb3IgYSBjb25zdGFudC4gICovCisrICBzdHJ1Y3QgZHluYW1p Y19wcm9wICphc3NvY2lhdGVkOworIH07CisgCisgLyogKiBBIGBgc3RydWN0IHR5cGUnJyBkZXNj cmliZXMgYSBwYXJ0aWN1bGFyIGluc3RhbmNlIG9mIGEgdHlwZSwgd2l0aAorQEAgLTEyMTQsNiAr MTIyNiwyMCBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlw ZSAqKTsKKyAgIFRZUEVfREFUQV9MT0NBVElPTiAodGhpc3R5cGUpLT5kYXRhLmNvbnN0X3ZhbAor ICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0tJTkQodGhpc3R5cGUpIFwKKyAgIFRZUEVfREFU QV9MT0NBVElPTiAodGhpc3R5cGUpLT5raW5kCisrI2RlZmluZSBUWVBFX0FMTE9DQVRFRF9QUk9Q KHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmFsbG9jYXRlZAorKyNkZWZpbmUg VFlQRV9BU1NPQ0lBVEVEX1BST1AodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+ YXNzb2NpYXRlZAorKworKy8qIEFsbG9jYXRlZCBzdGF0dXMgb2YgdHlwZSBvYmplY3QuICBJZiBz ZXQgdG8gbm9uLXplcm8gaXQgbWVhbnMgdGhlIG9iamVjdAorKyAgIGlzIGFsbG9jYXRlZC4gQSB6 ZXJvIHZhbHVlIG1lYW5zIGl0IGlzIG5vdCBhbGxvY2F0ZWQuICAqLworKyNkZWZpbmUgVFlQRV9O T1RfQUxMT0NBVEVEKHQpICAoVFlQRV9BTExPQ0FURURfUFJPUCAodCkgXAorKyAgJiYgVFlQRV9B TExPQ0FURURfUFJPUCAodCktPmtpbmQgPT0gUFJPUF9DT05TVCBcCisrICAmJiAhVFlQRV9BTExP Q0FURURfUFJPUCAodCktPmRhdGEuY29uc3RfdmFsKQorKworKy8qIEFzc29jaWF0ZWQgc3RhdHVz IG9mIHR5cGUgb2JqZWN0LiAgSWYgc2V0IHRvIG5vbi16ZXJvIGl0IG1lYW5zIHRoZSBvYmplY3QK KysgICBpcyBhc3NvY2lhdGVkLiBBIHplcm8gdmFsdWUgbWVhbnMgaXQgaXMgbm90IGFzc29jaWF0 ZWQuICAqLworKyNkZWZpbmUgVFlQRV9OT1RfQVNTT0NJQVRFRCh0KSAgKFRZUEVfQVNTT0NJQVRF RF9QUk9QICh0KSBcCisrICAmJiBUWVBFX0FTU09DSUFURURfUFJPUCAodCktPmtpbmQgPT0gUFJP UF9DT05TVCBcCisrICAmJiAhVFlQRV9BU1NPQ0lBVEVEX1BST1AgKHQpLT5kYXRhLmNvbnN0X3Zh bCkKKyAKKyAvKiBNb3RvLXNwZWNpZmljIHN0dWZmIGZvciBGT1JUUkFOIGFycmF5cy4gICovCisg CistLSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDRvZjIzLWZpeC5w YXRjaCBiL2dkYi12bGEtaW50ZWwtMDRvZjIzLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zMDVjNTQxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRl bC0wNG9mMjMtZml4LnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK1JlOiBbUEFUQ0ggMDQvMjNdIHZs YTogbWFrZSBkeW5hbWljIGZvcnRyYW4gYXJyYXlzIGZ1bmN0aW9uYWwuCitodHRwczovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDYvbXNnMDA1NzAuaHRtbAorCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE2IDIzOjE2OjQ4LjEy OTE2NDY0NCArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbGFyaXRoLmMJMjAx NC0wNi0xNiAyMzoxNzo1Mi41NDQyMjU0NTIgKzAyMDAKK0BAIC0xOTUsMTkgKzE5NSwxOSBAQCB2 YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKHN0cnVjdCB2YWx1ZSAqCisgICBzdHJ1Y3QgdHlwZSAq YXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CisgICBzdHJ1 Y3QgdHlwZSAqZWx0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJh eV90eXBlKSk7CisgICB1bnNpZ25lZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5 cGUpOworLSAgdW5zaWduZWQgaW50IGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2lu dCAoaW5kZXggLSBsb3dlcmJvdW5kKTsKKysgIHVuc2lnbmVkIGludCBlbHRfb2ZmczsKKyAgIHN0 cnVjdCB2YWx1ZSAqdjsKKyAKKysgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVEIChhcnJheV90eXBl KSkKKysgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNz b2NpYXRlZCIpKTsKKysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKGFycmF5X3R5cGUpKQorKyAg ICBlcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQi KSk7CisrCisrICBlbHRfb2ZmcyA9IGVsdF9zaXplICogbG9uZ2VzdF90b19pbnQgKGluZGV4IC0g bG93ZXJib3VuZCk7CisrCisgICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8ICghVFlQRV9BUlJB WV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKGFycmF5X3R5cGUpCisgCQkJICAgICAmJiBlbHRf b2ZmcyA+PSBUWVBFX0xFTkdUSCAoYXJyYXlfdHlwZSkpKQorLSAgICB7CistICAgICAgaWYgKFRZ UEVfTk9UX0FTU09DSUFURUQgKGFycmF5X3R5cGUpKQorLSAgICAgICAgZXJyb3IgKF8oIm5vIHN1 Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIpKTsKKy0gICAgICBlbHNl IGlmIChUWVBFX05PVF9BTExPQ0FURUQgKGFycmF5X3R5cGUpKQorLSAgICAgICAgZXJyb3IgKF8o Im5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIikpOworLSAgICAg IGVsc2UKKy0gICAgICAgIGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworLSAg ICB9CisrICAgIGVycm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IikpOworIAorICAgaWYg KFZBTFVFX0xWQUwgKGFycmF5KSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5IChhcnJheSkp CisgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZV9sYXp5IChlbHRfdHlwZSk7CgpkaWZmIC0tZ2l0IGEv Z2RiLXZsYS1pbnRlbC0wNG9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTA0b2YyMy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDAzYWIzCi0tLSAvZGV2L251bGwK KysrIGIvZ2RiLXZsYS1pbnRlbC0wNG9mMjMucGF0Y2gKQEAgLTAsMCArMSw2MTQgQEAKK1N1Ympl Y3Q6IFtQQVRDSCAwNC8yM10gdmxhOiBtYWtlIGR5bmFtaWMgZm9ydHJhbiBhcnJheXMgZnVuY3Rp b25hbC4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtNS1naXQtc2VuZC1lbWFpbC1rZXZl bi5ib2VsbEBpbnRlbC5jb20+CisKK1RoaXMgcGF0Y2ggZW5hYmxlcyBHREIgdG8gcHJpbnQgdGhl IHZhbHVlIG9mIGEgZHluYW1pYworYXJyYXkgKFZMQSkgaWYgYWxsb2NhdGVkL2Fzc29jaWF0ZWQg aW4gZm9ydHJhbi4gSWYgbm90IHRoZQorYWxsb2NhdGlvbiBzdGF0dXMgd2lsbCBiZSBwcmludGVk IHRvIHRoZSBjb21tYW5kIGxpbmUuCisKKyhnZGIpIHAgdmxhX25vdF9hbGxvY2F0ZWQKKyQxID0g PG5vdCBhbGxvY2F0ZWQ+CisKKyhnZGIpIHAgdmxhX2FsbG9jYXRlZAorJDEgPSAoMSwgMiwgMykK KworKGdkYikgcCB2bGFfbm90X2Fzc29jaWF0ZWQKKyQxID0gPG5vdCBhc3NvY2lhdGVkPgorCiso Z2RiKSBwIHZsYV9hc3NvY2lhdGVkCiskMSA9ICgzLCAyLCAxKQorCitUaGUgcGF0Y2ggY292ZXJz IHZhcmlvdXMgbG9jYXRpb25zIHdoZXJlIHRoZSBhbGxvY2F0aW9uLworYXNzb2NpYXRpb24gc3Rh dHVzIG1ha2VzIHNlbnNlIHRvIHByaW50LgorCisyMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtl dmVuLmJvZWxsQGludGVsLmNvbT4KKyAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1p ci5hZ292aWNAaW50ZWwuY29tPgorCisJKiBkd2FyZjJsb2MuYyAoZHdhcmYyX2FkZHJlc3NfZGF0 YV92YWxpZCk6IE5ldworCWZ1bmN0aW9uLgorCSogZHdhcmYybG9jLmggKGR3YXJmMl9hZGRyZXNz X2RhdGFfdmFsaWQpOiBOZXcKKwlmdW5jdGlvbi4KKwkqIGYtdHlwZXByaW50LmMgKGZfcHJpbnRf dHlwZSk6IFByaW50IGFsbG9jYXRpb24vCisJYXNzb2NpYXRpb24gc3RhdHVzLgorCShmX3R5cGVf cHJpbnRfdmFyc3BlY19zdWZmaXgpOiBQcmludCBhbGxvY2F0aW9uLworCWFzc29jaWF0aW9uIHN0 YXR1cyBmb3IgJi1vcGVyYXRvciB1c2FnZXMuCisJKiBnZGJ0eXBlcy5jIChjcmVhdGVfYXJyYXlf dHlwZV93aXRoX3N0cmlkZSk6IEFkZAorCXF1ZXJ5IGZvciB2YWxpZCBkYXRhIGxvY2F0aW9uLgor CShpc19keW5hbWljX3R5cGUpOiBFeHRlbmQgZHluYW1pYyB0eXBlIGRldGVjdGlvbgorCXdpdGgg YWxsb2NhdGVkL2Fzc29jaWF0ZWQuIEFkZCB0eXBlIGRldGVjdGlvbiBmb3IKKwlmaWVsZHMuCisJ KHJlc29sdmVfZHluYW1pY19yYW5nZSk6IENvcHkgdHlwZSBiZWZvcmUgcmVzb2x2aW5nCisJaXQg YXMgZHluYW1pYyBhdHRyaWJ1dGVzIG5lZWQgdG8gYmUgcHJlc2VydmVkLgorCShyZXNvbHZlX2R5 bmFtaWNfYXJyYXkpOiBDb3B5IHR5cGUgYmVmb3JlIHJlc29sdmluZworCWl0IGFzIGR5bmFtaWMg YXR0cmlidXRlcyBuZWVkIHRvIGJlIHByZXNlcnZlZC4gQWRkCisJcmVzb2x2aW5nIG9mIGFsbG9j YXRlZC9hc3NvY2lhdGVkIGF0dHJpYnV0ZXMuCisJKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRk IGNhbGwgdG8gbmVzdGVkCisJdHlwZSByZXNvbHZpbmcuCisJKGNvcHlfdHlwZV9yZWN1cnNpdmUp OiBBZGQgYWxsb2NhdGVkL2Fzc29jaWF0ZWQKKwlhdHRyaWJ1dGVzIHRvIGJlIGNvcGllZC4KKwko Y29weV90eXBlKTogQ29weSBhbGxvY2F0ZWQvYXNzb2NpYXRlZC9kYXRhX2xvY2F0aW9uCisJYXMg d2VsbCBhcyB0aGUgZmllbGRzIHN0cnVjdHVyZSBpZiBhdmFpbGFibGUuCisJKHJlc29sdmVfZHlu YW1pY19jb21wb3VuZCk6IE5ldyBmdW5jdGlvbi4KKwkqIHZhbGFyaXRoLmMgKHZhbHVlX3N1YnNj cmlwdGVkX3J2YWx1ZSk6IFByaW50IGFsbG9jYXRlZC8KKwlhc3NvY2lhdGVkIHN0YXR1cyB3aGVu IGluZGV4aW5nIGEgVkxBLgorCSogdmFscHJpbnQuYyAodmFscHJpbnRfY2hlY2tfdmFsaWRpdHkp OiBQcmludCBhbGxvY2F0ZWQvCisJYXNzb2NpYXRlZCBzdGF0dXMuCisJKHZhbF9wcmludF9ub3Rf YWxsb2NhdGVkKTogTmV3IGZ1bmN0aW9uLgorCSh2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQpOiBO ZXcgZnVuY3Rpb24uCisJKiB2YWxwcmludC5oICh2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCk6IE5l dyBmdW5jdGlvbi4KKwkodmFsX3ByaW50X25vdF9hc3NvY2lhdGVkKTogTmV3IGZ1bmN0aW9uLgor CSogdmFsdWUuYyAoc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbik6IEFkanVzdCB0aGUgdmFs dWUKKwlhZGRyZXNzIGZvciBzaW5nbGUgdmFsdWUgcHJpbnRzLgorCitDaGFuZ2UtSWQ6IElkZmI0 NGM4YTZiMzgwMDhmOGUyYzg0Y2IwZmRiMTM3MjllYzE2MGY0CisKK1NpZ25lZC1vZmYtYnk6IEtl dmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CistLS0KKyBnZGIvZHdhcmYybG9jLmMg ICB8ICAgMTQgKysrKysKKyBnZGIvZHdhcmYybG9jLmggICB8ICAgIDYgKysKKyBnZGIvZi10eXBl cHJpbnQuYyB8ICAgNjIgKysrKysrKysrKysrKy0tLS0tLS0KKyBnZGIvZ2RidHlwZXMuYyAgICB8 ICAxNjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0KKyBnZGIvdmFsYXJpdGguYyAgICB8ICAgIDkgKystCisgZ2RiL3ZhbHByaW50LmMgICAgfCAg IDQwICsrKysrKysrKysrKysKKyBnZGIvdmFscHJpbnQuaCAgICB8ICAgIDQgKysKKyBnZGIvdmFs dWUuYyAgICAgICB8ICAgMjAgKysrKysrKworIDggZmlsZXMgY2hhbmdlZCwgMjkyIGluc2VydGlv bnMoKyksIDI4IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIv ZHdhcmYybG9jLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2Ri L2R3YXJmMmxvYy5jCTIwMTQtMDYtMTQgMTU6MTI6NDMuNzk3OTk2ODg1ICswMjAwCisrKysgZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODU5 OTgwNDkgKzAyMDAKK0BAIC0yNTY5LDYgKzI1NjksMjAgQEAgZHdhcmYyX2V2YWx1YXRlX3Byb3Bl cnR5IChjb25zdCBzdHJ1Y3QgZAorICAgcmV0dXJuIDA7CisgfQorIAorKy8qIFNlZSBkd2FyZjJs b2MuaC4gICovCisrCisraW50CisrZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAoY29uc3Qgc3Ry dWN0IHR5cGUgKnR5cGUpCisreworKyAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKQor KyAgICByZXR1cm4gMDsKKysKKysgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKHR5cGUpKQorKyAg ICByZXR1cm4gMDsKKysKKysgIHJldHVybiAxOworK30KKysKKyAMCisgLyogSGVscGVyIGZ1bmN0 aW9ucyBhbmQgYmF0b24gZm9yIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZS4gICovCisgCitJ bmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYybG9jLmgKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2R3YXJmMmxvYy5oCTIwMTQtMDYtMTQgMTU6 MTI6NDMuNzk3OTk2ODg1ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYy bG9jLmgJMjAxNC0wNi0xNCAxNToxMjo0NS40ODY5OTgwNjQgKzAyMDAKK0BAIC0xMDIsNiArMTAy LDEyIEBAIGludCBkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKGNvbnN0IHN0cnUKKyBDT1JFX0FE RFIgZHdhcmYyX3JlYWRfYWRkcl9pbmRleCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVy X2N1LAorIAkJCQkgIHVuc2lnbmVkIGludCBhZGRyX2luZGV4KTsKKyAKKysvKiBDaGVja3MgaWYg YSBkd2FyZiBsb2NhdGlvbiBkZWZpbml0aW9uIGlzIHZhbGlkLgorKyAgIFJldHVybnMgMSBpZiB2 YWxpZDsgMCBvdGhlcndpc2UuICAqLworKworK2V4dGVybiBpbnQgZHdhcmYyX2FkZHJlc3NfZGF0 YV92YWxpZCAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpOworKworKworIC8qIFRoZSBzeW1ib2wg bG9jYXRpb24gYmF0b24gdHlwZXMgdXNlZCBieSB0aGUgRFdBUkYtMiByZWFkZXIgKGkuZS4KKyAg ICBTWU1CT0xfTE9DQVRJT05fQkFUT04gZm9yIGEgTE9DX0NPTVBVVEVEIHN5bWJvbCkuICAic3Ry dWN0CisgICAgZHdhcmYyX2xvY2V4cHJfYmF0b24iIGlzIGZvciBhIHN5bWJvbCB3aXRoIGEgc2lu Z2xlIGxvY2F0aW9uCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZi10eXBlcHJpbnQu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZi10eXBlcHJp bnQuYwkyMDE0LTA2LTE0IDE1OjEyOjQzLjc5ODk5Njg4NiArMDIwMAorKysrIGdkYi03LjcuOTAu MjAxNDA2MTMvZ2RiL2YtdHlwZXByaW50LmMJMjAxNC0wNi0xNCAxNToxMjo0NS40ODY5OTgwNjQg KzAyMDAKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgImdkYmNvcmUuaCIKKyAjaW5jbHVk ZSAidGFyZ2V0LmgiCisgI2luY2x1ZGUgImYtbGFuZy5oIgorKyNpbmNsdWRlICJ2YWxwcmludC5o IgorIAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KK0BAIC01Niw2 ICs1NywxNyBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjCisgICBl bnVtIHR5cGVfY29kZSBjb2RlOworICAgaW50IGRlbWFuZ2xlZF9hcmdzOworIAorKyAgaWYgKFRZ UEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKQorKyAgICB7CisrICAgICAgdmFsX3ByaW50X25vdF9h c3NvY2lhdGVkIChzdHJlYW0pOworKyAgICAgIHJldHVybjsKKysgICAgfQorKyAgaWYgKFRZUEVf Tk9UX0FMTE9DQVRFRCAodHlwZSkpCisrICAgIHsKKysgICAgICB2YWxfcHJpbnRfbm90X2FsbG9j YXRlZCAoc3RyZWFtKTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKyAgIGZfdHlwZV9wcmlu dF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsKKyAgIGNvZGUgPSBUWVBFX0NPREUg KHR5cGUpOworICAgaWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcp CitAQCAtMTcwLDI4ICsxODIsMzYgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1 Y3QgdHlwZQorICAgICAgIGlmIChhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwgPT0gMSkKKyAJZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCIpOworIAorLSAgICAgIGlmIChUWVBFX0NPREUgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfQVJSQVkpCistCWZfdHlwZV9wcmlu dF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwg MCwKKy0JCQkJICAgICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOworLQorLSAgICAgIGxvd2Vy X2JvdW5kID0gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKKy0gICAgICBpZiAobG93ZXJfYm91 bmQgIT0gMSkJLyogTm90IHRoZSBkZWZhdWx0LiAgKi8KKy0JZnByaW50Zl9maWx0ZXJlZCAoc3Ry ZWFtLCAiJWQ6IiwgbG93ZXJfYm91bmQpOworLQorLSAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0LCBp ZiB3ZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSwgd2UKKy0gICAgICAgICBwcmludCBvdXQg YSB3YXJuaW5nIGFuZCBwcmludCB0aGUgdXBwZXJib3VuZCBhcyAnKicuICAqLworLQorLSAgICAg IGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCistCWZwcmlu dGZfZmlsdGVyZWQgKHN0cmVhbSwgIioiKTsKKysgICAgICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRF RCAodHlwZSkpCisrICAgICAgICB2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0cmVhbSk7Cisr ICAgICAgZWxzZSBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEICh0eXBlKSkKKysgICAgICAgIHZhbF9w cmludF9ub3RfYWxsb2NhdGVkIChzdHJlYW0pOworICAgICAgIGVsc2UKKy0JeworLQkgIHVwcGVy X2JvdW5kID0gZjc3X2dldF91cHBlcmJvdW5kICh0eXBlKTsKKy0JICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICIlZCIsIHVwcGVyX2JvdW5kKTsKKy0JfQorLQorLSAgICAgIGlmIChUWVBFX0NP REUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSAhPSBUWVBFX0NPREVfQVJSQVkpCistCWZfdHlw ZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwg MCwgMCwgMCwKKy0JCQkJICAgICBhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwpOworKyAgICAgICAg eworKworKyAgICAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkg PT0gVFlQRV9DT0RFX0FSUkFZKQorKyAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVjX3N1 ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKKysgICAgICAg ICAgICAgICAgIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CisrCisrICAgICAgICAgIGxvd2Vy X2JvdW5kID0gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKKysgICAgICAgICAgaWYgKGxvd2Vy X2JvdW5kICE9IDEpCS8qIE5vdCB0aGUgZGVmYXVsdC4gICovCisrICAgICAgICAgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQ6IiwgbG93ZXJfYm91bmQpOworKworKyAgICAgICAgICAv KiBNYWtlIHN1cmUgdGhhdCwgaWYgd2UgaGF2ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXksIHdlCisr ICAgICAgICAgICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJvdW5k IGFzICcqJy4gICovCisrCisrICAgICAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lT X1VOREVGSU5FRCAodHlwZSkpCisrICAgICAgICAgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFt LCAiKiIpOworKyAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAg dXBwZXJfYm91bmQgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOworKyAgICAgICAgICAgICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLCB1cHBlcl9ib3VuZCk7CisrICAgICAgICAg ICAgfQorKworKyAgICAgICAgICBpZiAoVFlQRV9DT0RFIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSkgIT0gVFlQRV9DT0RFX0FSUkFZKQorKyAgICAgICAgICAgIGZfdHlwZV9wcmludF92YXJzcGVj X3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHN0cmVhbSwgMCwgMCwgMCwKKysgICAg ICAgICAgICAgICAgIGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCk7CisrICAgICAgfQorICAgICAg IGlmIChhcnJheXByaW50X3JlY3Vyc2VfbGV2ZWwgPT0gMSkKKyAJZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiKSIpOworICAgICAgIGVsc2UKK0luZGV4OiBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4yMDE0MDYxMy5vcmlnL2dk Yi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTQgMTU6MTI6NDMuODAxOTk2ODg4ICswMjAwCisrKysgZ2Ri LTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE0IDE1OjE0OjM0LjgzNzEw MjM2OSArMDIwMAorQEAgLTEwMDMsNyArMTAwMyw4IEBAIGNyZWF0ZV9hcnJheV90eXBlX3dpdGhf c3RyaWRlIChzdHJ1Y3QgdHkKKyAKKyAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9D T0RFX0FSUkFZOworICAgVFlQRV9UQVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90 eXBlOworLSAgaWYgKGhhc19zdGF0aWNfcmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSkpKQorKyAgaWYgKGhhc19zdGF0aWNfcmFuZ2UgKFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSkpCisrICAgICAgJiYgZHdhcmYyX2FkZHJlc3NfZGF0YV92YWxpZCAocmVzdWx0X3R5cGUpKQor ICAgICB7CisgICAgICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CisgCitAQCAtMTYx NiwxMSArMTYxNywzMCBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCisgaW50CisgaXNf ZHluYW1pY190eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyB7CisrICBpbnQgaW5kZXg7CisrCisr ICBpZiAoIXR5cGUpCisrICAgIHJldHVybiAwOworKworICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHR5cGUpOworIAorICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JFRikKKyAg ICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKyAKKysg IGlmIChUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkpCisrICAgIHJldHVybiAxOworKworKyAg aWYgKFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpKQorKyAgICByZXR1cm4gMTsKKysKKysgIC8q IFNjYW4gZmllbGQgdHlwZXMgaW4gdGhlIEZvcnRyYW4gY2FzZSBmb3IgbmVzdGVkIGR5bmFtaWMg dHlwZXMuCisrICAgICBUaGlzIHdpbGwgYmUgZG9uZSBvbmx5IGZvciBGb3J0cmFuIGFzIGluIHRo ZSBDKysgY2FzZSBhbiBlbmRsZXNzIHJlY3Vyc2lvbgorKyAgICAgY2FuIG9jY3VyIGluIHRoZSBh cmVhIG9mIGNsYXNzZXMuICAqLworKyAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdl ID09IGxhbmd1YWdlX2ZvcnRyYW4pCisrICAgIGZvciAoaW5kZXggPSAwOyBpbmRleCA8IFRZUEVf TkZJRUxEUyAodHlwZSk7IGluZGV4KyspCisrICAgICAgaWYgKGlzX2R5bmFtaWNfdHlwZSAoVFlQ RV9GSUVMRF9UWVBFICh0eXBlLCBpbmRleCkpKQorKyAgICAgICAgcmV0dXJuIDE7CisrCisgICBz d2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCisgICAgIHsKKyAgICAgY2FzZSBUWVBFX0NPREVfUkFO R0U6CitAQCAtMTY2OSw2ICsxNjg5LDcgQEAgcmVzb2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3Qg dHlwZSAqZHluXworICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKyAgIGNvbnN0 IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CisgICBzdHJ1Y3QgZHluYW1pY19w cm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgIHN0cnVjdCB0eXBlICpyYW5nZV9jb3B5ID0g Y29weV90eXBlIChkeW5fcmFuZ2VfdHlwZSk7CisgCisgICBnZGJfYXNzZXJ0IChUWVBFX0NPREUg KGR5bl9yYW5nZV90eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpOworIAorQEAgLTE3MDAsOCArMTcy MSw4IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0IHR5cGUgKmR5bl8KKyAgICAgICBo aWdoX2JvdW5kLmRhdGEuY29uc3RfdmFsID0gMDsKKyAgICAgfQorIAorLSAgc3RhdGljX3Jhbmdl X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoY29weV90eXBlIChkeW5fcmFuZ2VfdHlwZSksCist CQkJCQkgVFlQRV9UQVJHRVRfVFlQRSAoZHluX3JhbmdlX3R5cGUpLAorKyAgc3RhdGljX3Jhbmdl X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAocmFuZ2VfY29weSwKKysJCQkJCSBUWVBFX1RBUkdF VF9UWVBFIChyYW5nZV9jb3B5KSwKKyAJCQkJCSAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7Cisg ICBUWVBFX1JBTkdFX0RBVEEgKHN0YXRpY19yYW5nZV90eXBlKS0+ZmxhZ19ib3VuZF9ldmFsdWF0 ZWQgPSAxOworICAgcmV0dXJuIHN0YXRpY19yYW5nZV90eXBlOworQEAgLTE3MTgsNiArMTczOSw4 IEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUKKyAgIHN0cnVjdCB0 eXBlICplbHRfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOworICAgc3RydWN0IHR5 cGUgKmFyeV9kaW07CisrICBzdHJ1Y3QgZHluYW1pY19wcm9wICpwcm9wOworKyAgc3RydWN0IHR5 cGUgKmNvcHkgPSBjb3B5X3R5cGUgKHR5cGUpOworIAorICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RF ICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkpOworIAorQEAgLTE3MjUsMTggKzE3NDgsOTMgQEAg cmVzb2x2ZV9keW5hbWljX2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZQorICAgcmFuZ2VfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKFRZUEVfSU5ERVhfVFlQRSAoZWx0X3R5cGUpKTsKKyAgIHJhbmdlX3R5 cGUgPSByZXNvbHZlX2R5bmFtaWNfcmFuZ2UgKHJhbmdlX3R5cGUsIGFkZHIpOworIAorKyAgcHJv cCA9IFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpOworKyAgaWYgKGR3YXJmMl9ldmFsdWF0ZV9w cm9wZXJ0eSAocHJvcCwgYWRkciwgJnZhbHVlKSkKKysgICAgeworKyAgICAgIFRZUEVfQUxMT0NB VEVEX1BST1AgKGNvcHkpLT5raW5kID0gUFJPUF9DT05TVDsKKysgICAgICBUWVBFX0FMTE9DQVRF RF9QUk9QIChjb3B5KS0+ZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKKysgICAgfQorKworKyAgcHJv cCA9IFRZUEVfQVNTT0NJQVRFRF9QUk9QICh0eXBlKTsKKysgIGlmIChkd2FyZjJfZXZhbHVhdGVf cHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCisrICAgIHsKKysgICAgICBUWVBFX0FTU09D SUFURURfUFJPUCAoY29weSktPmtpbmQgPSBQUk9QX0NPTlNUOworKyAgICAgIFRZUEVfQVNTT0NJ QVRFRF9QUk9QIChjb3B5KS0+ZGF0YS5jb25zdF92YWwgPSB2YWx1ZTsKKysgICAgfQorKworICAg YXJ5X2RpbSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGVsdF90eXBlKSk7Cisg CisgICBpZiAoYXJ5X2RpbSAhPSBOVUxMICYmIFRZUEVfQ09ERSAoYXJ5X2RpbSkgPT0gVFlQRV9D T0RFX0FSUkFZKQorLSAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY19hcnJheSAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksIGFkZHIpOworKyAgICBlbHRfdHlwZSA9IHJlc29sdmVfZHluYW1p Y19hcnJheSAoVFlQRV9UQVJHRVRfVFlQRSAoY29weSksIGFkZHIpOworICAgZWxzZQorICAgICBl bHRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOworIAorLSAgcmV0dXJuIGNyZWF0ZV9h cnJheV90eXBlIChjb3B5X3R5cGUgKHR5cGUpLAorKyAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBl IChjb3B5LAorIAkJCSAgICBlbHRfdHlwZSwKKyAJCQkgICAgcmFuZ2VfdHlwZSk7CisgfQorIAor Ky8qIFJlc29sdmVzIGR5bmFtaWMgY29tcG91bmQgdHlwZXMsIGUuZy4gU1RSVUNUUydzIHRvIHN0 YXRpYyBvbmVzLgorKyAgIEFERFJFU1MgaXMgbmVlZGVkIHRvIHJlc29sdmUgdGhlIGNvbXBvdW5k IHR5cGUgZGF0YSBsb2NhdGlvbi4gICovCisrCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKytyZXNv bHZlX2R5bmFtaWNfY29tcG91bmQgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcikK Kyt7CisrICBzdHJ1Y3QgdHlwZSAqY3VyX3R5cGUsICpwcmV2X3R5cGUsICpjb3B5OworKyAgaW50 IGluZGV4LCBkZXB0aCA9IDA7CisrCisrICBjdXJfdHlwZSA9IHR5cGU7CisrICBwcmV2X3R5cGUg PSBjdXJfdHlwZTsKKysgIHdoaWxlIChjdXJfdHlwZSkKKysgICAgeworKyAgICAgIHN3aXRjaCAo VFlQRV9DT0RFIChjdXJfdHlwZSkpCisrICAgICAgICB7CisrICAgICAgICAgIGNhc2UgVFlQRV9D T0RFX1NUUlVDVDoKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICBjb3B5ID0gY29weV90 eXBlIChjdXJfdHlwZSk7CisrICAgICAgICAgICAgICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBU WVBFX05GSUVMRFMgKGNvcHkpOyBpbmRleCsrKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAg ICAgICAgICAgICAgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUgPSBUWVBFX0ZJRUxEX1RZUEUgKGNv cHksIGluZGV4KTsKKysKKysgICAgICAgICAgICAgICAgICBpZiAoaW5kZXhfdHlwZSA9PSBOVUxM KQorKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisrCisrICAgICAgICAgICAgICAgICAg aWYgKFRZUEVfQ09ERSAoaW5kZXhfdHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisrICAgICAgICAg ICAgICAgICAgICAgIHx8IFRZUEVfQ09ERSAoaW5kZXhfdHlwZSkgPT0gVFlQRV9DT0RFX1NUUlVD VCkKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICAgaWYgKFRZ UEVfQ09ERSAoaW5kZXhfdHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKQorKyAgICAgICAgICAgICAg ICAgICAgICAgIGFkZHIgKz0KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUWVBF X0ZJRUxEX0JJVFBPUyAoY29weSwgaW5kZXgpIC8gOCk7CisrCisrICAgICAgICAgICAgICAgICAg ICAgIFRZUEVfRklFTERfVFlQRSAoY29weSwgaW5kZXgpID0KKysgICAgICAgICAgICAgICAgICAg ICAgICByZXNvbHZlX2R5bmFtaWNfdHlwZSAoVFlQRV9GSUVMRF9UWVBFIChjb3B5LCBpbmRleCks CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcik7CisrICAgICAgICAgICAgICAg ICAgICB9CisrICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgIC8qIElmIGEgc3Ry dWN0IHR5cGUgd2lsbCBiZSByZXNvbHZlZCBhcyB0aGUgZmlyc3QgdHlwZSwgd2UgbmVlZAorKyAg ICAgICAgICAgICAgICAgdG8gYXNzaWduIGl0IGJhY2sgdGhlIHJlc29sdmVkX3R5cGUuIEluIHRo ZSBvdGhlciBjYXNlIGl0IGNhbgorKyAgICAgICAgICAgICAgICAgYmUgdGhhdCB3ZSBoYXZlIGEg c3RydWN0LCB3aGljaCBpcyBuZXN0ZWQgaW4gYW5vdGhlciB0eXBlLgorKyAgICAgICAgICAgICAg ICAgVGhlcmVmb3JlIHdlIG5lZWQgdG8gcHJlc2VydmUgdGhlIHByZXZpb3VzIHR5cGUsIHRvIGFz c2lnbiB0aGUKKysgICAgICAgICAgICAgICAgIG5ldyByZXNvbHZlZCB0eXBlIGFzIHRoZSBwcmV2 aW91cycgdGFyZ2V0IHR5cGUuICAqLworKyAgICAgICAgICAgICAgaWYgKGRlcHRoID09IDApCisr ICAgICAgICAgICAgICAgIHR5cGUgPSBjb3B5OworKyAgICAgICAgICAgICAgZWxzZQorKyAgICAg ICAgICAgICAgICBUWVBFX1RBUkdFVF9UWVBFIChwcmV2X3R5cGUpID0gY29weTsKKysgICAgICAg ICAgICB9CisrICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKworKyAgICAgIC8qIFN0b3Jl IHRoZSBwcmV2aW91cyB0eXBlLCBpbiBvcmRlciB0byBhc3NpZ24gcmVzb2x2ZWQgdHlwZXMgYmFj ayB0bworKyAgICAgICAgdGhlIHJpZ2h0IHRhcmdldCB0eXBlLiAgKi8KKysgICAgICBwcmV2X3R5 cGUgPSBjdXJfdHlwZTsKKysgICAgICBjdXJfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGN1cl90 eXBlKTsKKysgICAgICBkZXB0aCsrOworKyAgICB9OworKworKyAgICByZXR1cm4gdHlwZTsKKyt9 CisrCisgLyogUmVzb2x2ZSBkeW5hbWljIGJvdW5kcyBvZiBtZW1iZXJzIG9mIHRoZSB1bmlvbiBU WVBFIHRvIHN0YXRpYworICAgIGJvdW5kcy4gICovCisgCitAQCAtMTgzNiw3ICsxOTM0LDcgQEAg cmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorICAgc3RydWN0IHR5cGUg KnJlYWxfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOworICAgc3RydWN0IHR5cGUgKnJlc29s dmVkX3R5cGUgPSB0eXBlOworICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcDsKKy0g IENPUkVfQUREUiB2YWx1ZTsKKysgIENPUkVfQUREUiB2YWx1ZSwgYWRqdXN0ZWRfYWRkcmVzcyA9 IGFkZHI7CisgCisgICBpZiAoIWlzX2R5bmFtaWNfdHlwZSAocmVhbF90eXBlKSkKKyAgICAgcmV0 dXJuIHR5cGU7CitAQCAtMTg4MiwxMiArMTk4MCwxNSBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAo c3RydWN0IHR5cGUgKnR5cGUsCisgICBwcm9wID0gVFlQRV9EQVRBX0xPQ0FUSU9OICh0eXBlKTsK KyAgIGlmIChkd2FyZjJfZXZhbHVhdGVfcHJvcGVydHkgKHByb3AsIGFkZHIsICZ2YWx1ZSkpCisg ICAgIHsKKysgICAgICBhZGp1c3RlZF9hZGRyZXNzID0gdmFsdWU7CisgICAgICAgVFlQRV9EQVRB X0xPQ0FUSU9OX0FERFIgKHR5cGUpID0gdmFsdWU7CisgICAgICAgVFlQRV9EQVRBX0xPQ0FUSU9O X0tJTkQgKHR5cGUpID0gUFJPUF9DT05TVDsKKyAgICAgfQorICAgZWxzZQorICAgICBUWVBFX0RB VEFfTE9DQVRJT04gKHR5cGUpID0gTlVMTDsKKyAKKysgIHJlc29sdmVkX3R5cGUgPSByZXNvbHZl X2R5bmFtaWNfY29tcG91bmQgKHR5cGUsIGFkanVzdGVkX2FkZHJlc3MpOworKworICAgcmV0dXJu IHJlc29sdmVkX3R5cGU7CisgfQorIAorQEAgLTQxMDQsNiArNDIwNSwyMCBAQCBjb3B5X3R5cGVf cmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqCisgICAgICAgKlRZUEVfREFUQV9MT0NBVElP TiAobmV3X3R5cGUpID0gKlRZUEVfREFUQV9MT0NBVElPTiAodHlwZSk7CisgICAgIH0KKyAKKysg IC8qIENvcHkgYWxsb2NhdGVkIGluZm9ybWF0aW9uLiAgKi8KKysgIGlmIChUWVBFX0FMTE9DQVRF RF9QUk9QICh0eXBlKSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgVFlQRV9BTExPQ0FURURfUFJP UCAobmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZHluYW1pY19wcm9wKSk7Cisr ICAgICAgKlRZUEVfQUxMT0NBVEVEX1BST1AgKG5ld190eXBlKSA9ICpUWVBFX0FMTE9DQVRFRF9Q Uk9QICh0eXBlKTsKKysgICAgfQorKworKyAgLyogQ29weSBhc3NvY2lhdGVkIGluZm9ybWF0aW9u LiAgKi8KKysgIGlmIChUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSkgIT0gTlVMTCkKKysgICAg eworKyAgICAgIFRZUEVfQVNTT0NJQVRFRF9QUk9QIChuZXdfdHlwZSkgPSB4bWFsbG9jIChzaXpl b2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgICAqVFlQRV9BU1NPQ0lBVEVEX1BST1Ag KG5ld190eXBlKSA9ICpUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSk7CisrICAgIH0KKysKKyAg IC8qIENvcHkgcG9pbnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLworICAgaWYgKFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpKQorICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKK0BAIC00 MTUwLDYgKzQyNjUsNDQgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAg IG1lbWNweSAoVFlQRV9NQUlOX1RZUEUgKG5ld190eXBlKSwgVFlQRV9NQUlOX1RZUEUgKHR5cGUp LAorIAkgIHNpemVvZiAoc3RydWN0IG1haW5fdHlwZSkpOworIAorKyAgaWYgKFRZUEVfQUxMT0NB VEVEX1BST1AgKHR5cGUpKQorKyAgICB7CisrICAgICAgVFlQRV9BTExPQ0FURURfUFJPUCAobmV3 X3R5cGUpCisrICAgICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05FUiAodHlw ZSkub2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCk7CisrICAgICAgbWVtY3B5IChUWVBFX0FMTE9DQVRF RF9QUk9QIChuZXdfdHlwZSksIFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpLAorKyAgICAgICAg c2l6ZW9mIChzdHJ1Y3QgZHluYW1pY19wcm9wKSk7CisrICAgIH0KKysKKysgIGlmIChUWVBFX0FT U09DSUFURURfUFJPUCAodHlwZSkpCisrICAgIHsKKysgICAgICBUWVBFX0FTU09DSUFURURfUFJP UCAobmV3X3R5cGUpCisrICAgICAgICAgICAgICA9IE9CU1RBQ0tfWkFMTE9DICgmVFlQRV9PV05F UiAodHlwZSkub2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGR5bmFtaWNfcHJvcCk7CisrICAgICAgbWVtY3B5IChUWVBFX0FT U09DSUFURURfUFJPUCAobmV3X3R5cGUpLCBUWVBFX0FTU09DSUFURURfUFJPUCAodHlwZSksCisr ICAgICAgICBzaXplb2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgfQorKworKyAgaWYg KFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSkpCisrICAgIHsKKysgICAgICBUWVBFX0RBVEFfTE9D QVRJT04gKG5ld190eXBlKQorKyAgICAgICAgICAgICAgPSBPQlNUQUNLX1pBTExPQyAoJlRZUEVf T1dORVIgKHR5cGUpLm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkeW5hbWljX3Byb3ApOworKyAgICAgIG1lbWNweSAoVFlQ RV9EQVRBX0xPQ0FUSU9OIChuZXdfdHlwZSksIFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSksCisr ICAgICAgICBzaXplb2YgKHN0cnVjdCBkeW5hbWljX3Byb3ApKTsKKysgICAgfQorKworKyAgaWYg KFRZUEVfTkZJRUxEUyAodHlwZSkpCisrICAgIHsKKysgICAgICBpbnQgbmZpZWxkcyA9IFRZUEVf TkZJRUxEUyAodHlwZSk7CisrCisrICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKQorKyAgICAg ICAgICAgICAgPSBPQlNUQUNLX0NBTExPQyAoJlRZUEVfT1dORVIgKHR5cGUpLm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5maWVsZHMs IHN0cnVjdCBmaWVsZCk7CisrICAgICAgbWVtY3B5IChUWVBFX0ZJRUxEUyAobmV3X3R5cGUpLCBU WVBFX0ZJRUxEUyAodHlwZSksCisrICAgICAgICBuZmllbGRzICogc2l6ZW9mIChzdHJ1Y3QgZmll bGQpKTsKKysgICB9CisrCisgICByZXR1cm4gbmV3X3R5cGU7CisgfQorIAwKK0luZGV4OiBnZGIt Ny43LjkwLjIwMTQwNjEzL2dkYi92YWxhcml0aC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45 MC4yMDE0MDYxMy5vcmlnL2dkYi92YWxhcml0aC5jCTIwMTQtMDYtMTQgMTU6MTI6NDMuODAxOTk2 ODg4ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2 LTE0IDE1OjEyOjQ1LjQ4ODk5ODA3NSArMDIwMAorQEAgLTIwMCw3ICsyMDAsMTQgQEAgdmFsdWVf c3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorIAorICAgaWYgKGluZGV4IDwgbG93 ZXJib3VuZCB8fCAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJheV90 eXBlKQorIAkJCSAgICAgJiYgZWx0X29mZnMgPj0gVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpKSkK Ky0gICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiKSk7CisrICAgIHsKKysgICAg ICBpZiAoVFlQRV9OT1RfQVNTT0NJQVRFRCAoYXJyYXlfdHlwZSkpCisrICAgICAgICBlcnJvciAo Xygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhc3NvY2lhdGVkIikpOworKyAg ICAgIGVsc2UgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCisrICAgICAgICBl cnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiKSk7 CisrICAgICAgZWxzZQorKyAgICAgICAgZXJyb3IgKF8oIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQi KSk7CisrICAgIH0KKyAKKyAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkg JiYgdmFsdWVfbGF6eSAoYXJyYXkpKQorICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAoZWx0 X3R5cGUpOworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3ZhbHByaW50LmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL3ZhbHByaW50LmMJMjAxNC0w Ni0xNCAxNToxMjo0My44MDI5OTY4ODggKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dk Yi92YWxwcmludC5jCTIwMTQtMDYtMTQgMTU6MTI6NDUuNDg4OTk4MDc1ICswMjAwCitAQCAtMzA3 LDYgKzMwNywxOCBAQCB2YWxwcmludF9jaGVja192YWxpZGl0eSAoc3RydWN0IHVpX2ZpbGUKKyB7 CisgICBDSEVDS19UWVBFREVGICh0eXBlKTsKKyAKKysgIGlmIChUWVBFX05PVF9BU1NPQ0lBVEVE ICh0eXBlKSkKKysgICAgeworKyAgICAgIHZhbF9wcmludF9ub3RfYXNzb2NpYXRlZCAoc3RyZWFt KTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgaWYgKFRZUEVfTk9UX0FMTE9DQVRF RCAodHlwZSkpCisrICAgIHsKKysgICAgICB2YWxfcHJpbnRfbm90X2FsbG9jYXRlZCAoc3RyZWFt KTsKKysgICAgICByZXR1cm4gMDsKKysgICAgfQorKworICAgaWYgKFRZUEVfQ09ERSAodHlwZSkg IT0gVFlQRV9DT0RFX1VOSU9OCisgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NP REVfU1RSVUNUCisgICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkp CitAQCAtMzYyLDYgKzM3NCwxOCBAQCB2YWxfcHJpbnRfaW52YWxpZF9hZGRyZXNzIChzdHJ1Y3Qg dWlfZmlsCisgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIF8oIjxpbnZhbGlkIGFkZHJlc3M+ IikpOworIH0KKyAKKyt2b2lkCisrdmFsX3ByaW50X25vdF9hbGxvY2F0ZWQgKHN0cnVjdCB1aV9m aWxlICpzdHJlYW0pCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBfKCI8bm90IGFs bG9jYXRlZD4iKSk7CisrfQorKworK3ZvaWQKKyt2YWxfcHJpbnRfbm90X2Fzc29jaWF0ZWQgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0pCisreworKyAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBf KCI8bm90IGFzc29jaWF0ZWQ+IikpOworK30KKysKKyAvKiBBIGdlbmVyaWMgdmFsX3ByaW50IHRo YXQgaXMgc3VpdGFibGUgZm9yIHVzZSBieSBsYW5ndWFnZQorICAgIGltcGxlbWVudGF0aW9ucyBv ZiB0aGUgbGFfdmFsX3ByaW50IG1ldGhvZC4gIFRoaXMgZnVuY3Rpb24gY2FuCisgICAgaGFuZGxl IG1vc3QgdHlwZSBjb2RlcywgdGhvdWdoIG5vdCBhbGwsIG5vdGFibHkgZXhjZXB0aW9uCitAQCAt ODAzLDEyICs4MjcsMTYgQEAgc3RhdGljIGludAorIHZhbHVlX2NoZWNrX3ByaW50YWJsZSAoc3Ry dWN0IHZhbHVlICp2YWwsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisgCQkgICAgICAgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCisgeworKyAgY29uc3Qgc3RydWN0 IHR5cGUgKnR5cGU7CisrCisgICBpZiAodmFsID09IDApCisgICAgIHsKKyAgICAgICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sIF8oIjxhZGRyZXNzIG9mIHZhbHVlIHVua25vd24+IikpOworICAg ICAgIHJldHVybiAwOworICAgICB9CisgCisrICB0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsKKysK KyAgIGlmICh2YWx1ZV9lbnRpcmVseV9vcHRpbWl6ZWRfb3V0ICh2YWwpKQorICAgICB7CisgICAg ICAgaWYgKG9wdGlvbnMtPnN1bW1hcnkgJiYgIXZhbF9wcmludF9zY2FsYXJfdHlwZV9wICh2YWx1 ZV90eXBlICh2YWwpKSkKK0BAIC04MzQsNiArODYyLDE4IEBAIHZhbHVlX2NoZWNrX3ByaW50YWJs ZSAoc3RydWN0IHZhbHVlICp2YWwKKyAgICAgICByZXR1cm4gMDsKKyAgICAgfQorIAorKyAgaWYg KFRZUEVfTk9UX0FTU09DSUFURUQgKHR5cGUpKQorKyAgICB7CisrICAgICAgdmFsX3ByaW50X25v dF9hc3NvY2lhdGVkIChzdHJlYW0pOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICBp ZiAoVFlQRV9OT1RfQUxMT0NBVEVEICh0eXBlKSkKKysgICAgeworKyAgICAgIHZhbF9wcmludF9u b3RfYWxsb2NhdGVkIChzdHJlYW0pOworKyAgICAgIHJldHVybiAwOworKyAgICB9CisrCisgICBy ZXR1cm4gMTsKKyB9CisgCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFscHJpbnQu aAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFscHJpbnQu aAkyMDE0LTA2LTE0IDE1OjEyOjQzLjgwMzk5Njg4OSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAx NDA2MTMvZ2RiL3ZhbHByaW50LmgJMjAxNC0wNi0xNCAxNToxMjo0NS40ODk5OTgwNzMgKzAyMDAK K0BAIC0yMTcsNCArMjE3LDggQEAgZXh0ZXJuIHZvaWQgb3V0cHV0X2NvbW1hbmRfY29uc3QgKGNv bnN0CisgCisgZXh0ZXJuIGludCB2YWxfcHJpbnRfc2NhbGFyX3R5cGVfcCAoc3RydWN0IHR5cGUg KnR5cGUpOworIAorK2V4dGVybiB2b2lkIHZhbF9wcmludF9ub3RfYWxsb2NhdGVkIChzdHJ1Y3Qg dWlfZmlsZSAqc3RyZWFtKTsKKysKKytleHRlcm4gdm9pZCB2YWxfcHJpbnRfbm90X2Fzc29jaWF0 ZWQgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOworKworICNlbmRpZgorSW5kZXg6IGdkYi03Ljcu OTAuMjAxNDA2MTMvZ2RiL3ZhbHVlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQw NjEzLm9yaWcvZ2RiL3ZhbHVlLmMJMjAxNC0wNi0xNCAxNToxMjo0My44MDQ5OTY4OTAgKzAyMDAK KysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi92YWx1ZS5jCTIwMTQtMDYtMTQgMTU6MTI6NDUu NDkwOTk4MDY5ICswMjAwCitAQCAtNDMsNiArNDMsNyBAQAorICNpbmNsdWRlICJ0cmFjZXBvaW50 LmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKysjaW5j bHVkZSAiZHdhcmYybG9jLmgiCisgCisgLyogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQgZnVuY3Rp b25zLiAgKi8KKyAKK0BAIC0xNjQ2LDYgKzE2NDcsMjUgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9s b2NhdGlvbiAoc3RydWN0IHZhbAorICAgICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJlKQorICAg ICAgICAgY29tcG9uZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3MtPmNvcHlf Y2xvc3VyZSAod2hvbGUpOworICAgICB9CisrCisrICAvKiBGb3IgZHluYW1pYyB0eXBlcyBjb21w dXRlIHRoZSBhZGRyZXNzIG9mIHRoZSBjb21wb25lbnQgdmFsdWUgbG9jYXRpb24gaW4KKysgICAg IHN1YiByYW5nZSB0eXBlcyBiYXNlZCBvbiB0aGUgbG9jYXRpb24gb2YgdGhlIHN1YiByYW5nZSB0 eXBlLCBpZiBub3QgYmVpbmcKKysgICAgIGFuIGludGVybmFsIEdEQiB2YXJpYWJsZSBvciBwYXJ0 cyBvZiBpdC4gICovCisrICBpZiAoVkFMVUVfTFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVy bmFsdmFyCisrICAgICAgJiYgVkFMVUVfTFZBTCAoY29tcG9uZW50KSAhPSBsdmFsX2ludGVybmFs dmFyX2NvbXBvbmVudCkKKysgICAgeworKyAgICAgIENPUkVfQUREUiBhZGRyOworKyAgICAgIHN0 cnVjdCB0eXBlICp0eXBlID0gdmFsdWVfdHlwZSAod2hvbGUpOworKworKyAgICAgIGFkZHIgPSB2 YWx1ZV9yYXdfYWRkcmVzcyAoY29tcG9uZW50KTsKKysKKysgICAgICBpZiAoVFlQRV9EQVRBX0xP Q0FUSU9OICh0eXBlKQorKyAgICAgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlw ZSkgPT0gUFJPUF9DT05TVCkKKysgICAgICAgIHsKKysgICAgICAgICAgYWRkciA9IFRZUEVfREFU QV9MT0NBVElPTl9BRERSICh0eXBlKTsKKysgICAgICAgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKGNv bXBvbmVudCwgYWRkcik7CisrICAgICAgICB9CisrICAgIH0KKyB9CisgCisgDAoKZGlmZiAtLWdp dCBhL2dkYi12bGEtaW50ZWwtMDVvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0wNW9mMjMucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IwOTkzNwotLS0gL2Rldi9u dWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMDVvZjIzLnBhdGNoCkBAIC0wLDAgKzEsNjUgQEAKK1N1 YmplY3Q6IFtQQVRDSCAwNS8yM10gdmxhOiBtYWtlIGZpZWxkIHNlbGVjdGlvbiB3b3JrIHdpdGgg dmxhCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTYtZ2l0LXNlbmQtZW1haWwta2V2ZW4u Ym9lbGxAaW50ZWwuY29tPgorCitJbiBGb3J0cmFuIHZsYSBhcmUgcG9pbnRlcnMgdG8gYXJyYXlz LiBUaHVzIGEKK3R5cGUgb25seSBjb250YWlucyBhIHBvaW50ZXIgdG8gc3VjaCBhcnJheSBhbmQK K3dlIG5lZWQgdG8gcmUtcmVhZCB0aGUgZmllbGQgdG8gcmV0cmlldmUgdGhlCitjb3JyZWN0IHZs YS4KKworb2xkICh3cm9uZyB2YWx1ZSk6CisoZ2RiKSBwIHR5cGVfdmFyJXZsYSgxNCkKKyQxID0g MQorCituZXcgKGNvcnJlY3QgdmFsdWUpOgorKGdkYikgcCB0eXBlX3ZhciV2bGEoMTQpCiskMSA9 IDQyCisKKzIwMTQtMDUtMjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwu Y29tPgorICAgICAgICAgICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisK KwkqIHZhbHVlLmMgKHZhbHVlX3ByaW1pdGl2ZV9maWVsZCk6IFJlLWV2YWx1YXRlCisJZmllbGQg dmFsdWUgdG8gZ2V0IHRoZSBhY3R1YWwgdmFsdWUuCisKK0NoYW5nZS1JZDogSWMyMmMzNzMyNDk2 M2FjYTUyMGM1MmE4MGZiYmQwMDQyZDFmZGRjMDUKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9l bGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi92YWx1ZS5jIHwgICAyMSArKysr KysrKysrKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNiBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKK2lu ZGV4IDA4NTkzYjYuLjFmMGQ5YTQgMTAwNjQ0CistLS0gYS9nZGIvdmFsdWUuYworKysrIGIvZ2Ri L3ZhbHVlLmMKK0BAIC0yOTI5LDEzICsyOTI5LDIyIEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAo c3RydWN0IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAorIAl2ID0gYWxsb2NhdGVfdmFsdWVfbGF6 eSAodHlwZSk7CisgICAgICAgZWxzZQorIAl7CistCSAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBl KTsKKy0JICB2YWx1ZV9jb250ZW50c19jb3B5X3JhdyAodiwgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0 ICh2KSwKKy0JCQkJICAgYXJnMSwgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChhcmcxKSArIG9mZnNl dCwKKy0JCQkJICAgVFlQRV9MRU5HVEggKHR5cGUpKTsKKysJICBpZiAoVFlQRV9EQVRBX0xPQ0FU SU9OICh0eXBlKQorKwkgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0g UFJPUF9DT05TVCkKKysJICAgIHYgPSB2YWx1ZV9hdF9sYXp5ICh0eXBlLCB2YWx1ZV9hZGRyZXNz IChhcmcxKSArIG9mZnNldCk7CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICB2ID0gYWxsb2Nh dGVfdmFsdWUgKHR5cGUpOworKwkgICAgICB2YWx1ZV9jb250ZW50c19jb3B5X3JhdyAodiwgdmFs dWVfZW1iZWRkZWRfb2Zmc2V0ICh2KSwKKysJCQkJICAgICAgIGFyZzEsIHZhbHVlX2VtYmVkZGVk X29mZnNldCAoYXJnMSkgKyBvZmZzZXQsCisrCQkJCSAgICAgICBUWVBFX0xFTkdUSCAodHlwZSkp OworKwkgICAgfQorIAl9CistICAgICAgdi0+b2Zmc2V0ID0gKHZhbHVlX29mZnNldCAoYXJnMSkg KyBvZmZzZXQKKy0JCSAgICsgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0IChhcmcxKSk7CisrCisrICAg ICAgaWYgKCFUWVBFX0RBVEFfTE9DQVRJT04gKHR5cGUpCisrICAgICAgICAgIHx8ICFUWVBFX0RB VEFfTE9DQVRJT05fS0lORCAodHlwZSkgPT0gUFJPUF9DT05TVCkKKysJdi0+b2Zmc2V0ID0gKHZh bHVlX29mZnNldCAoYXJnMSkgKyBvZmZzZXQKKysJCSAgICAgKyB2YWx1ZV9lbWJlZGRlZF9vZmZz ZXQgKGFyZzEpKTsKKyAgICAgfQorICAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAodiwg YXJnMSk7CisgICBWQUxVRV9SRUdOVU0gKHYpID0gVkFMVUVfUkVHTlVNIChhcmcxKTsKKy0tIAor MS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0wNm9mMjMucGF0Y2ggYi9nZGIt dmxhLWludGVsLTA2b2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zOWMyZDA1Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0wNm9mMjMucGF0Y2gK QEAgLTAsMCArMSw2NyBAQAorU3ViamVjdDogW1BBVENIIDA2LzIzXSB2bGE6IHJlY29uc3RydWN0 IHZhbHVlIHRvIGNvbXB1dGUgYm91bmRzIG9mIHRhcmdldCB0eXBlCitNZXNzYWdlLUlkOiA8MTQw MTg2MTI2Ni02MjQwLTctZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitQ cmludGluZyBhIHBvaW50ZXIgdG8gYW4gYXJyYXksIGdkYiB0cmllcyB0byBwcmludCB0aGUKK3Rh cmdldCB0eXBlIGluY2x1ZGluZyBpdHMgYm91bmRzLiBUbyBmb2xsb3cgdGhpcworc2VtYW50aWMg d2l0aCB2bGEsIHRoaXMgcGF0Y2ggcmUtY29uc3RydWN0cyB0aGUgdmFsdWUgdG8KK3Jlc29sdmUg dGhlIGJvdW5kcyBvZiB0aGUgdGFyZ2V0IHR5cGUuCisKKzIwMTQtMDUtMjggIFNhbmltaXIgQWdv dmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorICAgICAgICAgICAgS2V2ZW4gQm9lbGwg IDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKKwkqIHR5cGVwcmludC5jICh3aGF0aXNfZXhwKTog UmUtY29uc3RydWN0IHZhbHVlIHRvCisJY29tcHV0ZSBib3VuZHMgb2YgdGFyZ2V0IHR5cGUuCisJ KiBjLXZhbHByaW50LmMgKGNfdmFsdWVfcHJpbnQpOiBSZS1jb25zdHJ1Y3QgdmFsdWUKKwl0byBj b21wdXRlIGJvdW5kcyBvZiB0YXJnZXQgdHlwZS4KKworQ2hhbmdlLUlkOiBJYThhMjUwMjFjN2Nj MjA2NzExY2E2ZjM1OWFlNTU2NmEzNjdlM2IzZAorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2Vs bCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL2MtdmFscHJpbnQuYyB8ICAgMTEg KysrKysrKysrKy0KKyBnZGIvdHlwZXByaW50LmMgIHwgICAgNyArKysrKysrCisgMiBmaWxlcyBj aGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9n ZGIvYy12YWxwcmludC5jIGIvZ2RiL2MtdmFscHJpbnQuYworaW5kZXggZjQ2OTRiMC4uOGM0NTI3 NiAxMDA2NDQKKy0tLSBhL2dkYi9jLXZhbHByaW50LmMKKysrKyBiL2dkYi9jLXZhbHByaW50LmMK K0BAIC01MzgsNyArNTM4LDE2IEBAIGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAqdmFsLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAorIAl7CisgCSAgLyogbm9ybWFsIGNhc2UgKi8KKyAJICBm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7CistCSAgdHlwZV9wcmludCAodmFsdWVfdHlw ZSAodmFsKSwgIiIsIHN0cmVhbSwgLTEpOworKwkgIGlmIChpc19keW5hbWljX3R5cGUgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKSkKKysJICAgIHsKKysJICAgICAgc3RydWN0IHZhbHVlICp2Owor KworKwkgICAgICB2ID0gdmFsdWVfaW5kICh2YWwpOworKwkgICAgICB2ID0gdmFsdWVfYWRkciAo dik7CisrCSAgICAgIHR5cGVfcHJpbnQgKHZhbHVlX3R5cGUgKHYpLCAiIiwgc3RyZWFtLCAtMSk7 CisrCSAgICB9CisrCSAgZWxzZQorKwkgICAgdHlwZV9wcmludCAodmFsdWVfdHlwZSAodmFsKSwg IiIsIHN0cmVhbSwgLTEpOworIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikgIik7Cisg CX0KKyAgICAgfQorZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuYyBiL2dkYi90eXBlcHJpbnQu YworaW5kZXggYjRhZDQzMS4uYjNjNzNhOCAxMDA2NDQKKy0tLSBhL2dkYi90eXBlcHJpbnQuYwor KysrIGIvZ2RiL3R5cGVwcmludC5jCitAQCAtNDU5LDYgKzQ1OSwxMyBAQCB3aGF0aXNfZXhwIChj aGFyICpleHAsIGludCBzaG93KQorIAorICAgdHlwZSA9IHZhbHVlX3R5cGUgKHZhbCk7CisgCisr ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorKyAgICBpZiAoaXNfZHlu YW1pY190eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpCisrICAgICAgeworKwl2YWwgPSB2 YWx1ZV9hZGRyICh2YWx1ZV9pbmQgKHZhbCkpOworKwl0eXBlID0gdmFsdWVfdHlwZSAodmFsKTsK KysgICAgICB9CisrCisgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CisgICBpZiAo b3B0cy5vYmplY3RwcmludCkKKyAgICAgeworLS0gCisxLjcuOS41CisKCmRpZmYgLS1naXQgYS9n ZGItdmxhLWludGVsLTA3b2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMDdvZjIzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZWViZTIKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItdmxhLWludGVsLTA3b2YyMy5wYXRjaApAQCAtMCwwICsxLDIxMSBAQAorU3ViamVj dDogW1BBVENIIDA3LzIzXSB2bGE6IHVzZSB2YWx1ZSBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIHJh dy1idWZmZXIgbWFuaXB1bGF0aW9uCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTgtZ2l0 LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitJbnN0ZWFkIG9mIHByZS1jb21w dXRpbmcgaW5kaWNlcyBpbnRvIGEgZm9ydHJhbiBhcnJheSByZS11c2UKK3RoZSB2YWx1ZV8qIGlu dGVyZmFjZXMgdG8gc3Vic2NyaXB0IGEgZm9ydHJhbiBhcnJheS4KKworMjAxNC0wNS0yOCAgU2Fu aW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisgICAgICAgICAgICBLZXZl biBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKworCSogZi12YWxwcmludC5jIChmNzdf Y3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCk6IFJlbW92ZQorCWZ1bmN0aW9uLgorCShGNzdf RElNX1NJWkUsIEY3N19ESU1fT0ZGU0VUKTogUmVtb3ZlIG1hY3JvLgorCShmNzdfcHJpbnRfYXJy YXlfMSk6IFVzZSB2YWx1ZV9zdWJzY3JpcHQgdG8gc3Vic2NyaXB0IGEKKwl2YWx1ZSBhcnJheS4K KwkoZjc3X3ByaW50X2FycmF5KTogUmVtb3ZlIGNhbGwgdG8gZjc3X2NyZWF0ZV9hcnJheXByaW50 X29mZnNldF90YmwuCisJKGZfdmFsX3ByaW50KTogVXNlIHZhbHVlX2ZpZWxkIHRvIGNvbnN0cnVj dCBhIGZpZWxkIHZhbHVlLgorCitDaGFuZ2UtSWQ6IEkwOWU0ODJjZWIxMTRlZWIwZjA4YjU1Mjhk NDBmZmVkOGQ3OTExOWVlCisKK1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2Vs bEBpbnRlbC5jb20+CistLS0KKyBnZGIvZi12YWxwcmludC5jIHwgIDExOCArKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdl ZCwgMzkgaW5zZXJ0aW9ucygrKSwgNzkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIv Zi12YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQuYworaW5kZXggZDhjNzY3Zi4uMWFiNWJkOCAx MDA2NDQKKy0tLSBhL2dkYi9mLXZhbHByaW50LmMKKysrKyBiL2dkYi9mLXZhbHByaW50LmMKK0BA IC0zOSw4ICszOSw2IEBACisgCisgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAo dm9pZCk7Cisgc3RhdGljIHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOwor LXN0YXRpYyB2b2lkIGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlw ZSAqLAorLQkJCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKik7Cisgc3RhdGljIHZvaWQgZjc3X2dl dF9keW5hbWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICopOworIAorIGludCBm NzdfYXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07CitAQCAtNDgsMTUg KzQ2LDYgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAxXVsy XTsKKyAvKiBBcnJheSB3aGljaCBob2xkcyBvZmZzZXRzIHRvIGJlIGFwcGxpZWQgdG8gZ2V0IGEg cm93J3MgZWxlbWVudHMKKyAgICBmb3IgYSBnaXZlbiBhcnJheS4gIEFycmF5IGFsc28gaG9sZHMg dGhlIHNpemUgb2YgZWFjaCBzdWJhcnJheS4gICovCisgCistLyogVGhlIGZvbGxvd2luZyBtYWNy byBnaXZlcyB1cyB0aGUgc2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCistICAgbiBp cyAxIGJhc2VkLiAgKi8KKy0KKy0jZGVmaW5lIEY3N19ESU1fU0laRShuKSAoZjc3X2FycmF5X29m ZnNldF90Ymxbbl1bMV0pCistCistLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0 IGZvciByb3cgbiB3aGVyZSBuIGlzIDEtYmFzZWQuICAqLworLQorLSNkZWZpbmUgRjc3X0RJTV9P RkZTRVQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQorLQorIGludAorIGY3N19nZXRf bG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCisgeworQEAgLTExNCw0NyArMTAzLDYgQEAg Zjc3X2dldF9keW5hbWljX2xlbmd0aF9vZl9hZ2dyZWdhdGUgKHN0cnVjdCB0eXBlICp0eXBlKQor ICAgICAqIFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSkpOworIH0KKyAKKy0vKiBGdW5jdGlvbiB0aGF0IHNldHMgdXAgdGhlIGFycmF5IG9mZnNldCxz aXplIHRhYmxlIGZvciB0aGUgYXJyYXkgCistICAgdHlwZSAidHlwZSIuICAqLworLQorLXN0YXRp YyB2b2lkCistZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorLXsKKy0gIHN0cnVjdCB0eXBlICp0bXBfdHlw ZTsKKy0gIGludCBlbHRsZW47CistICBpbnQgbmRpbWVuID0gMTsKKy0gIGludCB1cHBlciwgbG93 ZXI7CistCistICB0bXBfdHlwZSA9IHR5cGU7CistCistICB3aGlsZSAoVFlQRV9DT0RFICh0bXBf dHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZKQorLSAgICB7CistICAgICAgdXBwZXIgPSBmNzdfZ2V0 X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKKy0gICAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3Vu ZCAodG1wX3R5cGUpOworLQorLSAgICAgIEY3N19ESU1fU0laRSAobmRpbWVuKSA9IHVwcGVyIC0g bG93ZXIgKyAxOworLQorLSAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5 cGUpOworLSAgICAgIG5kaW1lbisrOworLSAgICB9CistCistICAvKiBOb3cgd2UgbXVsdGlwbHkg ZWx0bGVuIGJ5IGFsbCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKKy0gICAgIGNhbiBw cmludCBvdXQgYXJyYXkgZWxlbWVudHMgY29ycmVjdGx5LiAgVXAgdGlsbCBub3cgd2UgCistICAg ICBrbm93IGFuIG9mZnNldCB0byBhcHBseSB0byBnZXQgdGhlIGl0ZW0gYnV0IHdlIGFsc28gCist ICAgICBoYXZlIHRvIGtub3cgaG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBpdGVt LiAgKi8KKy0KKy0gIG5kaW1lbi0tOworLSAgZWx0bGVuID0gVFlQRV9MRU5HVEggKHRtcF90eXBl KTsKKy0gIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOworLSAgd2hpbGUgKC0tbmRp bWVuID4gMCkKKy0gICAgeworLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiAr IDEpOworLSAgICAgIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOworLSAgICB9Cist fQorLQorLQorLQorIC8qIEFjdHVhbCBmdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IEY3NyBhcnJh eXMsIFZhbGFkZHIgPT0gYWRkcmVzcyBpbiAKKyAgICB0aGUgc3VwZXJpb3IuICBBZGRyZXNzID09 IHRoZSBhZGRyZXNzIGluIHRoZSBpbmZlcmlvci4gICovCisgCitAQCAtMTY3LDQxICsxMTUsNTYg QEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5 cGUgKnR5cGUsCisgCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cywKKyAJCSAgIGludCAqZWx0cykKKyB7CisrICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IFRZ UEVfSU5ERVhfVFlQRSAoY2hlY2tfdHlwZWRlZiAodHlwZSkpOworKyAgQ09SRV9BRERSIGFkZHIg PSBhZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0OworKyAgTE9OR0VTVCBsb3dlcmJvdW5kLCB1cHBl cmJvdW5kOworICAgaW50IGk7CisgCisrICBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBl LCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpOworKworICAgaWYgKG5zcyAhPSBuZGltZW5zaW9u cykKKyAgICAgeworLSAgICAgIGZvciAoaSA9IDA7CistCSAgIChpIDwgRjc3X0RJTV9TSVpFIChu c3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOworKyAgICAgIHNpemVfdCBkaW1f c2l6ZSA9IFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICAgICAgc2l6 ZV90IG9mZnMgPSAwOworKworKyAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7CisrCSAgIChpIDwg dXBwZXJib3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heCk7CisgCSAgIGkr KykKKyAJeworKwkgIHN0cnVjdCB2YWx1ZSAqc3ViYXJyYXkgPSB2YWx1ZV9mcm9tX2NvbnRlbnRz X2FuZF9hZGRyZXNzCisrCSAgICAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIHZhbHVlX2NvbnRl bnRzX2Zvcl9wcmludGluZ19jb25zdCAodmFsKQorKwkgICAgICsgb2ZmcywgYWRkciArIG9mZnMp OworKworIAkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiggIik7CistCSAgZjc3X3ByaW50 X2FycmF5XzEgKG5zcyArIDEsIG5kaW1lbnNpb25zLCBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwK Ky0JCQkgICAgIHZhbGFkZHIsCistCQkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBpICogRjc3X0RJ TV9PRkZTRVQgKG5zcyksCistCQkJICAgICBhZGRyZXNzLAorLQkJCSAgICAgc3RyZWFtLCByZWN1 cnNlLCB2YWwsIG9wdGlvbnMsIGVsdHMpOworKwkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAx LCBuZGltZW5zaW9ucywgdmFsdWVfdHlwZSAoc3ViYXJyYXkpLAorKwkJCSAgICAgdmFsdWVfY29u dGVudHNfZm9yX3ByaW50aW5nIChzdWJhcnJheSksCisrCQkJICAgICB2YWx1ZV9lbWJlZGRlZF9v ZmZzZXQgKHN1YmFycmF5KSwKKysJCQkgICAgIHZhbHVlX2FkZHJlc3MgKHN1YmFycmF5KSwKKysJ CQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgc3ViYXJyYXksIG9wdGlvbnMsIGVsdHMpOworKwkgIG9m ZnMgKz0gZGltX3NpemU7CisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKKyAJ fQorLSAgICAgIGlmICgqZWx0cyA+PSBvcHRpb25zLT5wcmludF9tYXggJiYgaSA8IEY3N19ESU1f U0laRSAobnNzKSkgCisrICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBp IDwgdXBwZXJib3VuZCkKKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CisgICAg IH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJWkUg KG5zcykgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50X21heDsKKysgICAgICBmb3IgKGkgPSBs b3dlcmJvdW5kOyBpIDwgdXBwZXJib3VuZCArIDEgJiYgKCplbHRzKSA8IG9wdGlvbnMtPnByaW50 X21heDsKKyAJICAgaSsrLCAoKmVsdHMpKyspCisgCXsKKy0JICB2YWxfcHJpbnQgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpLAorLQkJICAgICB2YWxhZGRyLAorLQkJICAgICBlbWJlZGRlZF9vZmZz ZXQgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKKy0JCSAgICAgYWRkcmVzcywg c3RyZWFtLCByZWN1cnNlLAorLQkJICAgICB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2Up OworKwkgIHN0cnVjdCB2YWx1ZSAqZWx0ID0gdmFsdWVfc3Vic2NyaXB0ICgoc3RydWN0IHZhbHVl ICopdmFsLCBpKTsKKysKKysJICB2YWxfcHJpbnQgKHZhbHVlX3R5cGUgKGVsdCksCisrCQkgICAg IHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAoZWx0KSwKKysJCSAgICAgdmFsdWVfZW1iZWRk ZWRfb2Zmc2V0IChlbHQpLAorKwkJICAgICB2YWx1ZV9hZGRyZXNzIChlbHQpLCBzdHJlYW0sIHJl Y3Vyc2UsCisrCQkgICAgIGVsdCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CisgCistCSAg aWYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNzKSAtIDEpKQorKwkgIGlmIChpICE9IHVwcGVyYm91 bmQpCisgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOworIAorIAkgIGlmICgo KmVsdHMgPT0gb3B0aW9ucy0+cHJpbnRfbWF4IC0gMSkKKy0JICAgICAgJiYgKGkgIT0gKEY3N19E SU1fU0laRSAobnNzKSAtIDEpKSkKKysJICAgICAgJiYgKGkgIT0gdXBwZXJib3VuZCkpCisgCSAg ICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAJfQorICAgICB9CitAQCAtMjI4 LDEyICsxOTEsNiBAQCBmNzdfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKKyBUeXBlIG5vZGUgY29ycnVwdCEgRjc3IGFycmF5cyBjYW5ub3Qg aGF2ZSAlZCBzdWJzY3JpcHRzICglZCBNYXgpIiksCisgCSAgIG5kaW1lbnNpb25zLCBNQVhfRk9S VFJBTl9ESU1TKTsKKyAKKy0gIC8qIFNpbmNlIEY3NyBhcnJheXMgYXJlIHN0b3JlZCBjb2x1bW4t bWFqb3IsIHdlIHNldCB1cCBhbiAKKy0gICAgIG9mZnNldCB0YWJsZSB0byBnZXQgYXQgdGhlIHZh cmlvdXMgcm93J3MgZWxlbWVudHMuICBUaGUgCistICAgICBvZmZzZXQgdGFibGUgY29udGFpbnMg ZW50cmllcyBmb3IgYm90aCBvZmZzZXQgYW5kIHN1YmFycmF5IHNpemUuICAqLworLQorLSAgZjc3 X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHR5cGUsIHN0cmVhbSk7CistCisgICBmNzdf cHJpbnRfYXJyYXlfMSAoMSwgbmRpbWVuc2lvbnMsIHR5cGUsIHZhbGFkZHIsIGVtYmVkZGVkX29m ZnNldCwKKyAJCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsICZl bHRzKTsKKyB9CitAQCAtMzc4LDEyICszMzUsMTUgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKKyAg ICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOworICAgICAgIGZvciAoaW5kZXgg PSAwOyBpbmRleCA8IFRZUEVfTkZJRUxEUyAodHlwZSk7IGluZGV4KyspCisgICAgICAgICB7Cist ICAgICAgICAgIGludCBvZmZzZXQgPSBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaW5kZXgpIC8g ODsKKysJICBzdHJ1Y3QgdmFsdWUgKmZpZWxkID0gdmFsdWVfZmllbGQKKysJICAgICgoc3RydWN0 IHZhbHVlICopb3JpZ2luYWxfdmFsdWUsIGluZGV4KTsKKysKKysgICAgICAgICAgdmFsX3ByaW50 ICh2YWx1ZV90eXBlIChmaWVsZCksCisrCQkgICAgIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGlu ZyAoZmllbGQpLAorKwkJICAgICB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGZpZWxkKSwKKysJCSAg ICAgdmFsdWVfYWRkcmVzcyAoZmllbGQpLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAorKwkJICAgICBm aWVsZCwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7CisgCistICAgICAgICAgIHZhbF9wcmlu dCAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpbmRleCksIHZhbGFkZHIsCistCQkgICAgIGVtYmVk ZGVkX29mZnNldCArIG9mZnNldCwKKy0JCSAgICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlICsg MSwKKy0JCSAgICAgb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwor ICAgICAgICAgICBpZiAoaW5kZXggIT0gVFlQRV9ORklFTERTICh0eXBlKSAtIDEpCisgICAgICAg ICAgICAgZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7CisgICAgICAgICB9CistLSAKKzEu Ny45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMDhvZjIzLnBhdGNoIGIvZ2RiLXZs YS1pbnRlbC0wOG9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u NzU1OWQwMAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMDhvZjIzLnBhdGNoCkBA IC0wLDAgKzEsNDkgQEAKK1N1YmplY3Q6IFtQQVRDSCAwOC8yM10gdmxhOiBnZXQgZHluYW1pYyBh cnJheSBjb3JuZXIgY2FzZXMgdG8gd29yaworTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC05 LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKworVGhpcyBwYXRjaCBkb2Vz IG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIHR5cGUgaW4KK2Nhc2UgaXQgaXMgYSBkeW5hbWljIHR5 cGUuIEZvciBkeW5hbWljIHR5cGVzIEdEQgorcmVzb2x2ZWQgaXRzIGR5bmFtaWMgdmFsdWVzIGlu IGEgY29weSBvZiB0aGUgdHlwZS4KK1RoZSBjYWxsIHRvIGRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5 cGUgb3ZlcndyaXRlcyB0aGUKK3Jlc29sdmVkIHR5cGUgd2l0aCB0aGUgb3JpZ2luYWwgdHlwZSwg d2hpY2ggYnJlYWtzCitlLmcuIHBvaW50ZXIgdG8gYSBGb3J0cmFuIHR5cGUsIHdoaWNoIGNvbnRh aW5zIGEgZHluYW1pYworYXJyYXkuCisKK09sZDoKKyhnZGIpIHByaW50ICZ2bGExCisoUFRSIFRP IC0+ICggcmVhbChraW5kPTQpICgyMzk1OTEzNjoyMzk1OTE4NCkpKSAweDdmZmZmZmZmZDQ5MAor CitOZXc6CisoZ2RiKSBwcmludCAmdmxhMQorKFBUUiBUTyAtPiAoIHJlYWwoa2luZD00KSAoNSkp KSAweDdmZmZmZmZmZDQ5MAorCisyMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxs QGludGVsLmNvbT4KKyAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNA aW50ZWwuY29tPgorCisJKiB2YWx1ZS5jIChyZWFkanVzdF9pbmRpcmVjdF92YWx1ZV90eXBlKTog QWRkCisJY2hlY2sgZm9yIGR5bmFtaWMgdHlwZXMuCisKK0NoYW5nZS1JZDogSWYxYzZmYjBiZDNj MWQwNDYxOWU4OWExYjU4ODUwZWRiNjliYmZkZTAKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9l bGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi92YWx1ZS5jIHwgICAgMyArKy0K KyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYg LS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCitpbmRleCAxZjBkOWE0Li43YWJiMjBh IDEwMDY0NAorLS0tIGEvZ2RiL3ZhbHVlLmMKKysrKyBiL2dkYi92YWx1ZS5jCitAQCAtMzUwNCw3 ICszNTA0LDggQEAgcmVhZGp1c3RfaW5kaXJlY3RfdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlICp2 YWx1ZSwgc3RydWN0IHR5cGUgKmVuY190eXBlLAorIAkJCSAgICAgIHN0cnVjdCB2YWx1ZSAqb3Jp Z2luYWxfdmFsdWUpCisgeworICAgLyogUmUtYWRqdXN0IHR5cGUuICAqLworLSAgZGVwcmVjYXRl ZF9zZXRfdmFsdWVfdHlwZSAodmFsdWUsIFRZUEVfVEFSR0VUX1RZUEUgKG9yaWdpbmFsX3R5cGUp KTsKKysgIGlmICghaXNfZHluYW1pY190eXBlIChUWVBFX1RBUkdFVF9UWVBFIChvcmlnaW5hbF90 eXBlKSkpCisrICAgIGRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5cGUgKHZhbHVlLCBUWVBFX1RBUkdF VF9UWVBFIChvcmlnaW5hbF90eXBlKSk7CisgCisgICAvKiBBZGQgZW1iZWRkaW5nIGluZm8uICAq LworICAgc2V0X3ZhbHVlX2VuY2xvc2luZ190eXBlICh2YWx1ZSwgZW5jX3R5cGUpOworLS0gCisx LjcuOS41CisKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaCBiL2dkYi12 bGEtaW50ZWwtMDlvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LmI3MmJjYzUKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVsLTA5b2YyMy5wYXRjaApA QCAtMCwwICsxLDMxNiBAQAorU3ViamVjdDogW1BBVENIIDA5LzIzXSB2bGE6IGNoYW5nZWQgc3Ry aW5nIGxlbmd0aCBzZW1hbnRpYy4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTAtZ2l0 LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitUaGlzIHBhdGNoIGNoYW5nZXMg dGhlIHNlbWFudGljIG9mIHRoZSBEd2FyZiBzdHJpbmcgbGVuZ3RoCithdHRyaWJ1dGUgdG8gcmVm bGVjdCB0aGUgc3RhbmRhcmQuIFRoaXMgc2VydmVzIGFzIHByZS13b3JrCit0byBnZXQgdmFyaWFi bGUgc3RyaW5ncyBpbiBGb3J0cmFuIHRvIHdvcmsuCisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxs ICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxz YW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKKwkqIGR3YXJmMnJlYWQuYyAocmVhZF90YWdfc3Ry aW5nX3R5cGUpOiBjaGFuZ2VkCisJc2VtYW50aWMgb2YgRFdfQVRfc3RyaW5nX2xlbmd0aCB0byBi ZSBhYmxlIHRvCisJaGFuZGxlIER3YXJmIGJsb2NrcyBhcyB3ZWxsLiBTdXBwb3J0IGZvcgorCURX X0FUX2J5dGVfbGVuZ3RoIGFkZGVkIHRvIGdldCBjb3JyZWN0IGxlbmd0aAorCWlmIHNwZWNpZmll ZCBpbiBjb21iaW5hdGlvbiB3aXRoCisJRFdfQVRfc3RyaW5nX2xlbmd0aC4KKwkoYXR0cl90b19k eW5hbWljX3Byb3ApOiBhZGRlZAorCWZ1bmN0aW9uYWxpdHkgdG8gYWRkIER3YXJmIG9wZXJhdG9y cyB0byBiYXRvbgorCWRhdGEgYXR0cmlidXRlLiBBZGRlZCBwb3N0IHZhbHVlcyB0byBiYXRvbgor CWFzIHJlcXVpcmVkIGJ5IHRoZSBzdHJpbmcgZXZhbHVhdGlvbiBjYXNlLgorCShyZWFkX3N1YnJh bmdlX3R5cGUpOiBBZGFwdCBjYWxsZXIuCisJKHNldF9kaWVfdHlwZSk6IEFkYXB0IGNhbGxlci4K KwkoYWRkX3Bvc3RfdmFsdWVzX3RvX2JhdG9uKTogTmV3IGZ1bmN0aW9uLgorCSogZHdhcmYybG9j LmMgKGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0eSk6IEV2YWx1YXRlCisJcG9zdCBwcm9jZXNzaW5n IGR3YXJmLgorCSogZHdhcmYybG9jLmggKHN0cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24pOiBB ZGQKKwlwb3N0IGR3YXJmIHZhbHVlcyBhdHRyaWJ1dGUuCisKK0NoYW5nZS1JZDogSTZlZGZhMDA1 ZjQxNmNkZGM4ZTM2NGQzNDg5MWI5YWJmNmI0NGY3NTcKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4g Qm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi9kd2FyZjJsb2MuYyAgfCAg IDEwICsrKysrCisgZ2RiL2R3YXJmMmxvYy5oICB8ICAgIDMgKysKKyBnZGIvZHdhcmYycmVhZC5j IHwgIDEyOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDEyNyBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMo LSkKKworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYworaW5k ZXggN2FiNzM0ZC4uMjQ3M2Y4MCAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuYworKysrIGIv Z2RiL2R3YXJmMmxvYy5jCitAQCAtMjUzMyw2ICsyNTMzLDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9w cm9wZXJ0eSAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwgQ09SRV9BRERSIGFkZHJl c3MsCisgCisgCQkqdmFsdWUgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWwpOworIAkgICAgICB9Cisr CSAgICBpZiAoYmF0b24tPnBvc3RfdmFsdWVzLmRhdGEgJiYgYmF0b24tPnBvc3RfdmFsdWVzLnNp emUgPiAwKQorKwkgICAgICB7CisrCSAgICAgICAgQ09SRV9BRERSIG5ld19hZGRyID0gKnZhbHVl OworKwkgICAgICAgIGR3YXJmMl9sb2NleHByX2JhdG9uX2V2YWwgKCZiYXRvbi0+cG9zdF92YWx1 ZXMsIG5ld19hZGRyLCB2YWx1ZSk7CisrCSAgICAgIH0KKyAJICAgIHJldHVybiAxOworIAkgIH0K KyAgICAgICB9CitAQCAtMjU1NSw2ICsyNTYwLDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9wcm9wZXJ0 eSAoY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwgQ09SRV9BRERSIGFkZHJlc3MsCisg CSAgICBpZiAoIXZhbHVlX29wdGltaXplZF9vdXQgKHZhbCkpCisgCSAgICAgIHsKKyAJCSp2YWx1 ZSA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbCk7CisrCQlpZiAoYmF0b24tPnBvc3RfdmFsdWVzLmRh dGEgJiYgYmF0b24tPnBvc3RfdmFsdWVzLnNpemUgPiAwKQorKwkJICB7CisrCQkgICAgQ09SRV9B RERSIG5ld19hZGRyID0gKnZhbHVlOworKwkJICAgIGR3YXJmMl9sb2NleHByX2JhdG9uX2V2YWwg KCZiYXRvbi0+cG9zdF92YWx1ZXMsIG5ld19hZGRyLCB2YWx1ZSk7CisrCQkgIH0KKyAJCXJldHVy biAxOworIAkgICAgICB9CisgCSAgfQorZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuaCBiL2dk Yi9kd2FyZjJsb2MuaAoraW5kZXggZmI2NWM1Yy4uY2Y2NDhlYiAxMDA2NDQKKy0tLSBhL2dkYi9k d2FyZjJsb2MuaAorKysrIGIvZ2RiL2R3YXJmMmxvYy5oCitAQCAtMTY4LDYgKzE2OCw5IEBAIHN0 cnVjdCBkd2FyZjJfcHJvcGVydHlfYmF0b24KKyAgICAgLyogTG9jYXRpb24gbGlzdCB0byBiZSBl dmFsdWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgUkVGRVJFTkNFRF9UWVBFLiAgKi8KKyAgICAgc3Ry dWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uIGxvY2xpc3Q7CisgICB9OworKworKyAgLyogQXR0cmli dXRlcywgd2hpY2ggd2lsbCBiZSBwdXNoZWQgYWZ0ZXIgZXZhbHVhdGluZyBsb2NleHByIG9yIGxv Y2xpc3QuICAqLworKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uIHBvc3RfdmFsdWVzOwor IH07CisgCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9s b2NleHByX2Z1bmNzOworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYy cmVhZC5jCitpbmRleCBlYTY2NjAyLi4wYjIzNzAxIDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMnJl YWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQuYworQEAgLTE4NDIsNiArMTg0MiwxNSBAQCBzdGF0 aWMgdm9pZCBmcmVlX2R3b19maWxlX2NsZWFudXAgKHZvaWQgKik7Cisgc3RhdGljIHZvaWQgcHJv Y2Vzc19jdV9pbmNsdWRlcyAodm9pZCk7CisgCisgc3RhdGljIHZvaWQgY2hlY2tfcHJvZHVjZXIg KHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysKKytzdGF0aWMgaW50CisrYXR0cl90b19keW5hbWlj X3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGll LAorKwkJICAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UsIHN0cnVjdCBkeW5hbWljX3Byb3AgKnBy b3AsCisrCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqYWRkaXRpb25hbF9kYXRhLCBpbnQgYWRkaXRp b25hbF9kYXRhX3NpemUpOworKworK3N0YXRpYyB2b2lkIGFkZF9wb3N0X3ZhbHVlc190b19iYXRv biAoc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAqYmF0b24sCisrICAgICAgICBjb25zdCBn ZGJfYnl0ZSAqZGF0YSwgaW50IHNpemUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysKKyAMCisg LyogVmFyaW91cyBjb21wbGFpbnRzIGFib3V0IHN5bWJvbCByZWFkaW5nIHRoYXQgZG9uJ3QgYWJv cnQgdGhlIHByb2Nlc3MuICAqLworIAorQEAgLTE0MDI5LDI5ICsxNDAzOCw5MCBAQCByZWFkX3Rh Z19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxl KTsKKyAgIHN0cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFy X3R5cGU7CisgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOworLSAgdW5zaWduZWQgaW50IGxlbmd0 aDsKKysgIHVuc2lnbmVkIGludCBsZW5ndGggPSBVSU5UX01BWDsKKysKKysgIGluZGV4X3R5cGUg PSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKKysgIHJhbmdlX3R5cGUgPSBj cmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Cisg CisrICAvKiBJZiBEV19BVF9zdHJpbmdfbGVuZ3RoIGlzIGRlZmluZWQsIHRoZSBsZW5ndGggaXMg c3RvcmVkIGF0IHNvbWUgbG9jYXRpb24KKysgICAqIGluIG1lbW9yeS4gKi8KKyAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9zdHJpbmdfbGVuZ3RoLCBjdSk7CisgICBpZiAoYXR0cikK KyAgICAgeworLSAgICAgIGxlbmd0aCA9IERXX1VOU05EIChhdHRyKTsKKysgICAgICBpZiAoYXR0 cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgICAgIHsKKysgICAgICAgICAgc3RydWN0IGF0 dHJpYnV0ZSAqYnl0ZV9zaXplLCAqYml0X3NpemU7CisrICAgICAgICAgIHN0cnVjdCBkeW5hbWlj X3Byb3AgaGlnaDsKKysKKysgICAgICAgICAgYnl0ZV9zaXplID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfYnl0ZV9zaXplLCBjdSk7CisrICAgICAgICAgIGJpdF9zaXplID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfYml0X3NpemUsIGN1KTsKKysKKysgICAgICAgICAgLyogRFdfQVRfYnl0ZV9z aXplIHNob3VsZCBuZXZlciBvY2N1ciB0b2dldGhlciBpbiBjb21iaW5hdGlvbiB3aXRoCisrICAg ICAgICAgICAgIERXX0FUX3N0cmluZ19sZW5ndGguICAqLworKyAgICAgICAgICBpZiAoKGJ5dGVf c2l6ZSA9PSBOVUxMICYmIGJpdF9zaXplICE9IE5VTEwpIHx8CisrICAgICAgICAgICAgICAgICAg KGJ5dGVfc2l6ZSAhPSBOVUxMICYmIGJpdF9zaXplID09IE5VTEwpKQorKyAgICAgICAgICAgIGNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiRFdfQVRfYnl0ZV9zaXplIEFORCAiCisr ICAgICAgICAgICAgICAgICAgICAgICJEV19BVF9iaXRfc2l6ZSBmb3VuZCB0b2dldGhlciBhdCB0 aGUgc2FtZSB0aW1lLiIpKTsKKysKKysgICAgICAgICAgLyogSWYgRFdfQVRfc3RyaW5nX2xlbmd0 aCBBTkQgRFdfQVRfYnl0ZV9zaXplIGV4aXN0IHRvZ2V0aGVyLCBpdAorKyAgICAgICAgICAgICBk ZXNjcmliZXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHNob3VsZCBiZSByZWFkIGZyb20gdGhl IGxlbmd0aAorKyAgICAgICAgICAgICBtZW1vcnkgbG9jYXRpb24uICAqLworKyAgICAgICAgICBp ZiAoYnl0ZV9zaXplICE9IE5VTEwgJiYgYml0X3NpemUgPT0gTlVMTCkKKysgICAgICAgICAgICB7 CisrICAgICAgICAgICAgICAvKiBCdWlsZCBuZXcgZHdhcmYyX2xvY2V4cHJfYmF0b24gc3RydWN0 dXJlIHdpdGggYWRkaXRpb25zIHRvIHRoZQorKyAgICAgICAgICAgICAgICAgZGF0YSBhdHRyaWJ1 dGUsIHRvIHJlZmxlY3QgRFdBUkYgc3BlY2lhbGl0aWVzIHRvIGdldCBhZGRyZXNzCisrICAgICAg ICAgICAgICAgICBzaXplcy4gICovCisrICAgICAgICAgICAgICBjb25zdCBnZGJfYnl0ZSBhcHBl bmRfb3BzW10gPSB7CisrICAgICAgICAgICAgICAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3Ms CisrICAgICAgICAgICAgICAgIC8qIERXX09QX2RlcmVmX3NpemU6IHNpemUgb2YgYW4gYWRkcmVz cyBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUKKysgICAgICAgICAgICAgICAgICAgKGJ5dGVzKSwgd2hl cmUgdGhlIHNpemUgd2lsbCBiZSBzcGVjaWZpZWQgYnkgdGhlIG5leHQKKysgICAgICAgICAgICAg ICAgICAgb3BlcmFuZC4gICovCisrICAgICAgICAgICAgICAgIERXX09QX2RlcmVmX3NpemUsCisr ICAgICAgICAgICAgICAgIC8qIE9wZXJhbmQgZm9yIERXX09QX2RlcmVmX3NpemUuICAqLworKyAg ICAgICAgICAgICAgICBEV19VTlNORCAoYnl0ZV9zaXplKSB9OworKworKyAgICAgICAgICAgICAg aWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsCisrICAgICAg ICAgICAgICAgICAgICAgIGFwcGVuZF9vcHMsIEFSUkFZX1NJWkUgKGFwcGVuZF9vcHMpKSkKKysg ICAgICAgICAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIF8oIkNvdWxkIG5vdCBwYXJzZSBEV19BVF9ieXRlX3NpemUiKSk7Cisr ICAgICAgICAgICAgfQorKyAgICAgICAgICBlbHNlIGlmIChiaXRfc2l6ZSAhPSBOVUxMICYmIGJ5 dGVfc2l6ZSA9PSBOVUxMKQorKyAgICAgICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxh aW50cywgXygiRFdfQVRfc3RyaW5nX2xlbmd0aCBBTkQgIgorKyAgICAgICAgICAgICAgICAgICAg ICAiRFdfQVRfYml0X3NpemUgZm91bmQgYnV0IG5vdCBzdXBwb3J0ZWQgeWV0LiIpKTsKKysgICAg ICAgICAgLyogSWYgRFdfQVRfc3RyaW5nX2xlbmd0aCBXSVRIT1VUIERXX0FUX2J5dGVfc2l6ZSBl eGlzdCwgdGhlIGRlZmF1bHQKKysgICAgICAgICAgICAgaXMgdGhlIGFkZHJlc3Mgc2l6ZSBvZiB0 aGUgdGFyZ2V0IG1hY2hpbmUuICAqLworKyAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgewor KyAgICAgICAgICAgICAgaWYgKCFhdHRyX3RvX2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwg JmhpZ2gsIE5VTEwsIDApKQorKyAgICAgICAgICAgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2Nv bXBsYWludHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgXygiQ291bGQgbm90IHBhcnNlIERX X0FUX3N0cmluZ19sZW5ndGgiKSk7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICBUWVBF X1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoID0gaGlnaDsKKysgICAgICAgIH0KKysgICAg ICBlbHNlCisrICAgICAgICB7CisrICAgICAgICAgIFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlw ZSkgPSBEV19VTlNORCAoYXR0cik7CisrICAgICAgICAgIFRZUEVfSElHSF9CT1VORF9LSU5EIChy YW5nZV90eXBlKSA9IFBST1BfQ09OU1Q7CisrICAgICAgICB9CisgICAgIH0KKyAgIGVsc2UKKyAg ICAgeworLSAgICAgIC8qIENoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0dHJpYnV0ZS4g ICovCisrICAgICAgLyogQ2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlLCB3 aGljaCByZXByZXNlbnRzIHRoZSBsZW5ndGgKKysgICAgICAgICBpbiB0aGlzIGNhc2UuICAqLwor ICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKyAg ICAgICBpZiAoYXR0cikKKyAgICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQg KGF0dHIpOworKyAgICAgICAgICBUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gRFdfVU5T TkQgKGF0dHIpOworKyAgICAgICAgICBUWVBFX0hJR0hfQk9VTkRfS0lORCAocmFuZ2VfdHlwZSkg PSBQUk9QX0NPTlNUOworICAgICAgICAgfQorICAgICAgIGVsc2UKKyAgICAgICAgIHsKKy0gICAg ICAgICAgbGVuZ3RoID0gMTsKKysgICAgICAgICAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBl KSA9IDE7CisrICAgICAgICAgIFRZUEVfSElHSF9CT1VORF9LSU5EIChyYW5nZV90eXBlKSA9IFBS T1BfQ09OU1Q7CisgICAgICAgICB9CisgICAgIH0KKyAKKy0gIGluZGV4X3R5cGUgPSBvYmpmaWxl X3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKKy0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfc3Rh dGljX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7CisgICBjaGFyX3R5 cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJj aCk7CisgICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdl X3R5cGUpOworIAorQEAgLTE0MzY4LDEzICsxNDQzOCwzNiBAQCByZWFkX2Jhc2VfdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgcmV0dXJuIHNldF9k aWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7CisgfQorIAorKy8qIEFkZCBwb3N0IHByb2Nlc3Npbmcg b3AtY29kZXMgdG8gYSBkd2FyZjJfcHJvcGVydHlfYmF0b24uICAqLworKworK3N0YXRpYyB2b2lk IGFkZF9wb3N0X3ZhbHVlc190b19iYXRvbiAoc3RydWN0IGR3YXJmMl9wcm9wZXJ0eV9iYXRvbiAq YmF0b24sCisrICAgICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwgaW50IHNpemUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorK3sKKysgIGlmIChkYXRhICE9IE5VTEwgJiYgc2l6ZSA+IDApCisrICAg IHsKKysgICAgICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjayA9ICZjdS0+b2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrOworKyAgICAgIGdkYl9ieXRlICpwb3N0X2RhdGE7CisrCisrICAgICAgcG9zdF9k YXRhID0gb2JzdGFja19hbGxvYyAob2JzdGFjaywgc2l6ZSk7CisrICAgICAgbWVtY3B5KHBvc3Rf ZGF0YSwgZGF0YSwgc2l6ZSk7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLmRhdGEgPSBwb3N0 X2RhdGE7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLnNpemUgPSBzaXplOworKyAgICAgIGJh dG9uLT5wb3N0X3ZhbHVlcy5wZXJfY3UgPSBjdS0+cGVyX2N1OworKyAgICB9IGVsc2UgeworKyAg ICAgIGJhdG9uLT5wb3N0X3ZhbHVlcy5kYXRhID0gTlVMTDsKKysgICAgICBiYXRvbi0+cG9zdF92 YWx1ZXMuc2l6ZSA9IDA7CisrICAgICAgYmF0b24tPnBvc3RfdmFsdWVzLnBlcl9jdSA9IE5VTEw7 CisrICAgIH0KKyt9CisrCisgLyogUGFyc2UgZHdhcmYgYXR0cmlidXRlIGlmIGl0J3MgYSBibG9j aywgcmVmZXJlbmNlIG9yIGNvbnN0YW50IGFuZCBwdXQgdGhlCisgICAgcmVzdWx0aW5nIHZhbHVl IG9mIHRoZSBhdHRyaWJ1dGUgaW50byBzdHJ1Y3QgYm91bmRfcHJvcC4KKyAgICBSZXR1cm5zIDEg aWYgQVRUUiBjb3VsZCBiZSByZXNvbHZlZCBpbnRvIFBST1AsIDAgb3RoZXJ3aXNlLiAgKi8KKyAK KyBzdGF0aWMgaW50CisgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorLQkJICAgICAgc3RydWN0IGR3YXJmMl9j dSAqY3UsIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3ApCisrCQkgICAgICBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSwgc3RydWN0IGR5bmFtaWNfcHJvcCAqcHJvcCwKKysJCSAgICAgIGNvbnN0IGdkYl9i eXRlICphZGRpdGlvbmFsX2RhdGEsIGludCBhZGRpdGlvbmFsX2RhdGFfc2l6ZSkKKyB7CisgICBz dHJ1Y3QgZHdhcmYyX3Byb3BlcnR5X2JhdG9uICpiYXRvbjsKKyAgIHN0cnVjdCBvYnN0YWNrICpv YnN0YWNrID0gJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2s7CitAQCAtMTQzODcsOCArMTQ0 ODAsMTAgQEAgYXR0cl90b19keW5hbWljX3Byb3AgKGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHIsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAorICAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAo b2JzdGFjaywgc2l6ZW9mICgqYmF0b24pKTsKKyAgICAgICBiYXRvbi0+cmVmZXJlbmNlZF90eXBl ID0gTlVMTDsKKyAgICAgICBiYXRvbi0+bG9jZXhwci5wZXJfY3UgPSBjdS0+cGVyX2N1OworLSAg ICAgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7CisgICAgICAg YmF0b24tPmxvY2V4cHIuZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKysgICAgICBiYXRv bi0+bG9jZXhwci5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOworKyAgICAgIGFkZF9wb3N0 X3ZhbHVlc190b19iYXRvbiAoYmF0b24sIGFkZGl0aW9uYWxfZGF0YSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfZGF0YV9zaXplLCBjdSk7CisgICAgICAgcHJv cC0+ZGF0YS5iYXRvbiA9IGJhdG9uOworICAgICAgIHByb3AtPmtpbmQgPSBQUk9QX0xPQ0VYUFI7 CisgICAgICAgZ2RiX2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BAIC0xNDQw OSw2ICsxNDUwNCw4IEBAIGF0dHJfdG9fZHluYW1pY19wcm9wIChjb25zdCBzdHJ1Y3QgYXR0cmli dXRlICphdHRyLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKyAJICBiYXRvbiA9IG9ic3RhY2tfYWxs b2MgKG9ic3RhY2ssIHNpemVvZiAoKmJhdG9uKSk7CisgCSAgYmF0b24tPnJlZmVyZW5jZWRfdHlw ZSA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOworIAkgIGZpbGxfaW5fbG9jbGlz dF9iYXRvbiAoY3UsICZiYXRvbi0+bG9jbGlzdCwgdGFyZ2V0X2F0dHIpOworKwkgIGFkZF9wb3N0 X3ZhbHVlc190b19iYXRvbiAoYmF0b24sIGFkZGl0aW9uYWxfZGF0YSwKKysJICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfZGF0YV9zaXplLCBjdSk7CisgCSAgcHJvcC0+ZGF0 YS5iYXRvbiA9IGJhdG9uOworIAkgIHByb3AtPmtpbmQgPSBQUk9QX0xPQ0xJU1Q7CisgCSAgZ2Ri X2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BAIC0xNDQyMCw2ICsxNDUxNyw4 IEBAIGF0dHJfdG9fZHluYW1pY19wcm9wIChjb25zdCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBz dHJ1Y3QgZGllX2luZm8gKmRpZSwKKyAJICBiYXRvbi0+bG9jZXhwci5wZXJfY3UgPSBjdS0+cGVy X2N1OworIAkgIGJhdG9uLT5sb2NleHByLnNpemUgPSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5z aXplOworIAkgIGJhdG9uLT5sb2NleHByLmRhdGEgPSBEV19CTE9DSyAodGFyZ2V0X2F0dHIpLT5k YXRhOworKwkgIGFkZF9wb3N0X3ZhbHVlc190b19iYXRvbiAoYmF0b24sIGFkZGl0aW9uYWxfZGF0 YSwKKysJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfZGF0YV9zaXplLCBj dSk7CisgCSAgcHJvcC0+ZGF0YS5iYXRvbiA9IGJhdG9uOworIAkgIHByb3AtPmtpbmQgPSBQUk9Q X0xPQ0VYUFI7CisgCSAgZ2RiX2Fzc2VydCAocHJvcC0+ZGF0YS5iYXRvbiAhPSBOVUxMKTsKK0BA IC0xNDUwOSwxNyArMTQ2MDgsMTcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCisgICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKKyAgIGlmIChhdHRyKQorLSAgICBhdHRyX3Rv X2R5bmFtaWNfcHJvcCAoYXR0ciwgZGllLCBjdSwgJmxvdyk7CisrICAgIGF0dHJfdG9fZHluYW1p Y19wcm9wIChhdHRyLCBkaWUsIGN1LCAmbG93LCBOVUxMLCAwKTsKKyAgIGVsc2UgaWYgKCFsb3df ZGVmYXVsdF9pc192YWxpZCkKKyAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBf KCJNaXNzaW5nIERXX0FUX2xvd2VyX2JvdW5kICIKKyAJCQkJICAgICAgIi0gRElFIGF0IDB4JXgg W2luIG1vZHVsZSAlc10iKSwKKyAJICAgICAgIGRpZS0+b2Zmc2V0LnNlY3Rfb2ZmLCBvYmpmaWxl X25hbWUgKGN1LT5vYmpmaWxlKSk7CisgCisgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdf QVRfdXBwZXJfYm91bmQsIGN1KTsKKy0gIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIs IGRpZSwgY3UsICZoaWdoKSkKKysgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRp ZSwgY3UsICZoaWdoLCBOVUxMLCAwKSkKKyAgICAgeworICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOworLSAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJv cCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gpKQorKyAgICAgIGlmIChhdHRyX3RvX2R5bmFtaWNfcHJv cCAoYXR0ciwgZGllLCBjdSwgJmhpZ2gsIE5VTEwsIDApKQorIAl7CisgCSAgLyogSWYgYm91bmRz IGFyZSBjb25zdGFudCBkbyB0aGUgZmluYWwgY2FsY3VsYXRpb24gaGVyZS4gICovCisgCSAgaWYg KGxvdy5raW5kID09IFBST1BfQ09OU1QgJiYgaGlnaC5raW5kID09IFBST1BfQ09OU1QpCitAQCAt MjE1MjAsNyArMjE2MTksNyBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgIHsKKyAgICAgICBz dHJ1Y3QgZHluYW1pY19wcm9wIHByb3A7CisgCistICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19w cm9wIChhdHRyLCBkaWUsIGN1LCAmcHJvcCkpCisrICAgICAgaWYgKGF0dHJfdG9fZHluYW1pY19w cm9wIChhdHRyLCBkaWUsIGN1LCAmcHJvcCwgTlVMTCwgMCkpCisgICAgICAgICB7CisgICAgICAg ICAgIFRZUEVfQUxMT0NBVEVEX1BST1AgKHR5cGUpCisgICAgICAgICAgICAgPSBvYnN0YWNrX2Fs bG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHByb3ApKTsKK0BAIC0yMTUz NCw3ICsyMTYzMyw3IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgeworICAgICAgIHN0cnVj dCBkeW5hbWljX3Byb3AgcHJvcDsKKyAKKy0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3Ag KGF0dHIsIGRpZSwgY3UsICZwcm9wKSkKKysgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3Ag KGF0dHIsIGRpZSwgY3UsICZwcm9wLCBOVUxMLCAwKSkKKyAgICAgICAgIHsKKyAgICAgICAgICAg VFlQRV9BU1NPQ0lBVEVEX1BST1AgKHR5cGUpCisgICAgICAgICAgICAgPSBvYnN0YWNrX2FsbG9j ICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHByb3ApKTsKK0BAIC0yMTU0OCw3 ICsyMTY0Nyw3IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgeworICAgICAgIHN0cnVjdCBk eW5hbWljX3Byb3AgcHJvcDsKKyAKKy0gICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0 dHIsIGRpZSwgY3UsICZwcm9wKSkKKysgICAgICBpZiAoYXR0cl90b19keW5hbWljX3Byb3AgKGF0 dHIsIGRpZSwgY3UsICZwcm9wLCBOVUxMLCAwKSkKKyAJeworIAkgIFRZUEVfREFUQV9MT0NBVElP TiAodHlwZSkKKyAJICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywgc2l6ZW9mIChwcm9wKSk7CistLSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEt aW50ZWwtMTBvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0xMG9mMjMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ1NTk3OAotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi12bGEtaW50ZWwtMTBvZjIzLnBhdGNoCkBAIC0wLDAgKzEsOTQgQEAKK1N1YmplY3Q6IFtQQVRD SCAxMC8yM10gdmxhOiBnZXQgRm9ydHJhbiBkeW5hbWljIHN0cmluZ3Mgd29ya2luZy4KK01lc3Nh Z2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTEtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50 ZWwuY29tPgorCitUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIGNvcnJlY3QgY2FsY3VsYXRpb24gb2Yg ZHluYW1pYworc3RyaW5nIGxlbmd0aC4KKworT2xkOgorKGdkYikgcCBteV9keW5fc3RyaW5nCisk MSA9IChQVFIgVE8gLT4gKCBjaGFyYWN0ZXIqMjM5NTkxMzYgKSkgMHg2MDVmYzAKKworKGdkYikg cCAqbXlfZHluX3N0cmluZworQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweDYwNWZj MAorCitOZXc6CisoZ2RiKSBwIG15X2R5bl9zdHJpbmcKKyQxID0gKFBUUiBUTyAtPiAoIGNoYXJh Y3RlcioxMCApKSAweDYwNWZjMAorCisoZ2RiKSBwICpteV9keW5fc3RyaW5nCiskMiA9ICdmb28n CisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAg ICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKKwkq IGdkYnR5cGVzLmMgKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRkCisJY29uZGl0aW9ucyB0byBz dXBwb3J0IHN0cmluZyB0eXBlcy4KKwkocmVzb2x2ZV9keW5hbWljX2FycmF5KTogQWRkIGNvbmRp dGlvbnMgZm9yIGR5bmFtaWMKKwlzdHJpbmdzIGFuZCBjcmVhdGUgYSBuZXcgc3RyaW5nIHR5cGUu CisJKGlzX2R5bmFtaWNfdHlwZSk6IEZvbGxvdyBwb2ludGVyIGlmIGEgc3RyaW5nIHR5cGUKKwl3 YXMgZGV0ZWN0ZWQsIGFzIEZvcnRyYW4gc3RyaW5ncyBhcmUgcmVwcmVzZW50ZWQKKwlhcyBwb2lu dGVycyB0byBzdHJpbmdzIGludGVybmFsbHkuCisKK0NoYW5nZS1JZDogSTdkNTRkNzYyYTA4MWNl MDM0YmUzN2FjM2UzNjhiYWM4MTExZGM0ZTYKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwg PGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi9nZGJ0eXBlcy5jIHwgICAyNCArKysr KysrKysrKysrKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKKworSW5kZXg6IGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2dkYnR5cGVz LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzLm9yaWcvZ2RiL2dkYnR5cGVz LmMJMjAxNC0wNi0xNCAxNToxNDo0OC42MjMxMTU1OTcgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTQgMTU6MTU6MjYuODc2MTUxMTg3ICswMjAw CitAQCAtMTY2Miw2ICsxNjYyLDE1IEBAIGlzX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUgKnR5 cGUpCisgICAgIHJldHVybiBpc19keW5hbWljX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsKKyAgICAgICB9CisgCisrICAgIGNhc2UgVFlQRV9DT0RFX1BUUjoKKysgICAgICB7CisrICAg ICAgICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkKKysgICAgICAgICAgICAmJiBUWVBFX0NP REUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSA9PSBUWVBFX0NPREVfU1RSSU5HKQorKyAgICAg ICAgICByZXR1cm4gaXNfZHluYW1pY190eXBlIChjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSkpOworKworKyAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICBicmVhazsKKysg ICAgICB9CisgICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKKyAgICAgY2FzZSBUWVBFX0NPREVf VU5JT046CisgICAgICAgeworQEAgLTE3NDIsNyArMTc1MSw4IEBAIHJlc29sdmVfZHluYW1pY19h cnJheSAoc3RydWN0IHR5cGUgKnR5cGUKKyAgIHN0cnVjdCBkeW5hbWljX3Byb3AgKnByb3A7Cisg ICBzdHJ1Y3QgdHlwZSAqY29weSA9IGNvcHlfdHlwZSAodHlwZSk7CisgCistICBnZGJfYXNzZXJ0 IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWSk7CisrICBnZGJfYXNzZXJ0IChU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorKyAgICAgICAgICAgICAgfHwgVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKTsKKyAKKyAgIGVsdF90eXBlID0gdHlw ZTsKKyAgIHJhbmdlX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX0lOREVYX1RZUEUgKGVsdF90 eXBlKSk7CitAQCAtMTc2OSw5ICsxNzc5LDE0IEBAIHJlc29sdmVfZHluYW1pY19hcnJheSAoc3Ry dWN0IHR5cGUgKnR5cGUKKyAgIGVsc2UKKyAgICAgZWx0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKTsKKyAKKy0gIHJldHVybiBjcmVhdGVfYXJyYXlfdHlwZSAoY29weSwKKy0JCQkgICAg ZWx0X3R5cGUsCistCQkJICAgIHJhbmdlX3R5cGUpOworKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1NUUklORykKKysgICAgcmV0dXJuIGNyZWF0ZV9zdHJpbmdfdHlwZSAoY29w eSwKKysgICAgICAgICAgICBlbHRfdHlwZSwKKysgICAgICAgICAgICByYW5nZV90eXBlKTsKKysg IGVsc2UKKysgICAgcmV0dXJuIGNyZWF0ZV9hcnJheV90eXBlIChjb3B5LAorKyAgICAgICAgICAg IGVsdF90eXBlLAorKyAgICAgICAgICAgIHJhbmdlX3R5cGUpOworIH0KKyAKKyAvKiBSZXNvbHZl cyBkeW5hbWljIGNvbXBvdW5kIHR5cGVzLCBlLmcuIFNUUlVDVFMncyB0byBzdGF0aWMgb25lcy4K K0BAIC0xOTU4LDYgKzE5NzMsNyBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUsCisgCX0KKyAKKyAgICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKKysgICAgICBjYXNl IFRZUEVfQ09ERV9TVFJJTkc6CisgCXJlc29sdmVkX3R5cGUgPSByZXNvbHZlX2R5bmFtaWNfYXJy YXkgKHR5cGUsIGFkZHIpOworIAlicmVhazsKKyAKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVs LTExb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMTFvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMThjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxh LWludGVsLTExb2YyMy5wYXRjaApAQCAtMCwwICsxLDI3MiBAQAorU3ViamVjdDogW1BBVENIIDEx LzIzXSB2bGE6IGFkZCBzdHJpZGUgc3VwcG9ydCB0byBmb3J0cmFuIGFycmF5cy4KK01lc3NhZ2Ut SWQ6IDwxNDAxODYxMjY2LTYyNDAtMTItZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwu Y29tPgorCisyMDE0LTA1LTI4ICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVs LmNvbT4KKyAgICAgICAgICAgIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgor CisJKiBkd2FyZjJyZWFkLmMgKHJlYWRfc3VicmFuZ2VfdHlwZSk6IFJlYWQgZHluYW1pYworCXN0 cmlkZSBhdHRyaWJ1dGVzLgorCSogZ2RidHlwZXMuYyAoY3JlYXRlX2FycmF5X3R5cGVfd2l0aF9z dHJpZGUpOiBBZGQKKwlzdHJpZGUgc3VwcG9ydAorCShjcmVhdGVfcmFuZ2VfdHlwZSk6IEFkZCBz dHJpZGUgcGFyYW1ldGVyLgorCShjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUpOiBQYXNzIGRlZmF1 bHQgc3RyaWRlCisJcGFyYW1ldGVyLgorCShyZXNvbHZlX2R5bmFtaWNfcmFuZ2UpOiBFdmFsdWF0 ZSBzdHJpZGUgYmF0b24uCisJKHJlc29sdmVfZHluYW1pY190eXBlKTogQWRqdXN0IGRhdGEgbG9j YXRpb24gd2l0aAorCXRoZSB2YWx1ZSBvZiBieXRlIHN0cmlkZS4KKwkqIGdkYnR5cGVzLmggKFRZ UEVfQllURV9TVFJJREUpOiBOZXcgbWFjcm8uCisJKFRZUEVfQllURV9TVFJJREVfQkxPQ0spOiBO ZXcgbWFjcm8uCisJKFRZUEVfQllURV9TVFJJREVfTE9DTElTVCk6IE5ldyBtYWNyby4KKwkoVFlQ RV9CWVRFX1NUUklERV9LSU5EKTogTmV3IG1hY3JvLgorCSogdmFsYXJpdGguYyAodmFsdWVfc3Vi c2NyaXB0ZWRfcnZhbHVlKTogVXNlIHN0cmlkZS4KKworQ2hhbmdlLUlkOiBJM2Q4MTBjMGRjMzdm OWQ5ZmQ4NGRiYTRjNzY0Y2RlZmM1MmQ4NTAxZQorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2Vs bCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL2R3YXJmMnJlYWQuYyB8ICAgMTMg KysrKysrKysrKystLQorIGdkYi9nZGJ0eXBlcy5jICAgfCAgIDQwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0KKyBnZGIvZ2RidHlwZXMuaCAgIHwgICAxNyArKysrKysr KysrKysrKysrKworIGdkYi92YWxhcml0aC5jICAgfCAgIDE0ICsrKysrKysrKysrKystCisgNCBm aWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQorCitJbmRleDog Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZHdhcmYycmVhZC5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNy45MC4yMDE0MDYxMy5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxNC0wNi0xNiAyMzoyNDox Mi43NDE1ODQzMTUgKzAyMDAKKysrKyBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9kd2FyZjJyZWFk LmMJMjAxNC0wNi0xNiAyMzoyNToxMi43MDI2NDA5MTAgKzAyMDAKK0BAIC0xNDY5Niw3ICsxNDY5 Niw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUKKyAgIHN0cnVj dCB0eXBlICpiYXNlX3R5cGUsICpvcmlnX2Jhc2VfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICpyYW5n ZV90eXBlOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIHN0cnVjdCBkeW5hbWljX3By b3AgbG93LCBoaWdoOworKyAgc3RydWN0IGR5bmFtaWNfcHJvcCBsb3csIGhpZ2gsIHN0cmlkZTsK KyAgIGludCBsb3dfZGVmYXVsdF9pc192YWxpZDsKKyAgIGludCBoaWdoX2JvdW5kX2lzX2NvdW50 ID0gMDsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CitAQCAtMTQ3MTYsNyArMTQ3MTYsOSBAQCByZWFk X3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCisgCisgICBsb3cua2luZCA9IFBS T1BfQ09OU1Q7CisgICBoaWdoLmtpbmQgPSBQUk9QX0NPTlNUOworKyAgc3RyaWRlLmtpbmQgPSBQ Uk9QX0NPTlNUOworICAgaGlnaC5kYXRhLmNvbnN0X3ZhbCA9IDA7CisrICBzdHJpZGUuZGF0YS5j b25zdF92YWwgPSAwOworIAorICAgLyogU2V0IExPV19ERUZBVUxUX0lTX1ZBTElEIGlmIGN1cnJl bnQgbGFuZ3VhZ2UgYW5kIERXQVJGIHZlcnNpb24gYWxsb3cKKyAgICAgIG9taXR0aW5nIERXX0FU X2xvd2VyX2JvdW5kLiAgKi8KK0BAIC0xNDc0OSw2ICsxNDc1MSwxMyBAQCByZWFkX3N1YnJhbmdl X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOworKyAgaWYg KGF0dHIpCisrICAgIGlmICghYXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZz dHJpZGUsIE5VTEwsIDApKQorKyAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRz LCBfKCJNaXNzaW5nIERXX0FUX2J5dGVfc3RyaWRlICIKKysgICAgICAgICAgICAgICAgICAiLSBE SUUgYXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAorKyAgICAgICAgICAgICBkaWUtPm9mZnNldC5z ZWN0X29mZiwgb2JqZmlsZV9uYW1lIChjdS0+b2JqZmlsZSkpOworKworICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2xvd2VyX2JvdW5kLCBjdSk7CisgICBpZiAoYXR0cikKKyAgICAg YXR0cl90b19keW5hbWljX3Byb3AgKGF0dHIsIGRpZSwgY3UsICZsb3csIE5VTEwsIDApOworQEAg LTE0ODI1LDcgKzE0ODM0LDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZQorICAgICAgICYmICFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoLmRhdGEu Y29uc3RfdmFsICYgbmVnYXRpdmVfbWFzaykpCisgICAgIGhpZ2guZGF0YS5jb25zdF92YWwgfD0g bmVnYXRpdmVfbWFzazsKKyAKKy0gIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoTlVM TCwgb3JpZ19iYXNlX3R5cGUsICZsb3csICZoaWdoKTsKKysgIHJhbmdlX3R5cGUgPSBjcmVhdGVf cmFuZ2VfdHlwZSAoTlVMTCwgb3JpZ19iYXNlX3R5cGUsICZsb3csICZoaWdoLCAmc3RyaWRlKTsK KyAKKyAgIGlmIChoaWdoX2JvdW5kX2lzX2NvdW50KQorICAgICBUWVBFX1JBTkdFX0RBVEEgKHJh bmdlX3R5cGUpLT5mbGFnX3VwcGVyX2JvdW5kX2lzX2NvdW50ID0gMTsKK0luZGV4OiBnZGItNy43 LjkwLjIwMTQwNjEzL2dkYi9nZGJ0eXBlcy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNy45MC4y MDE0MDYxMy5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTQtMDYtMTYgMjM6MjQ6MTIuNzQxNTg0MzE1 ICswMjAwCisrKysgZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuYwkyMDE0LTA2LTE2 IDIzOjI1OjEyLjcwNDY0MDkxMSArMDIwMAorQEAgLTgwNSw3ICs4MDUsOCBAQCBhbGxvY2F0ZV9z dHViX21ldGhvZCAoc3RydWN0IHR5cGUgKnR5cGUpCisgc3RydWN0IHR5cGUgKgorIGNyZWF0ZV9y YW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90 eXBlLAorIAkJICAgY29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqbG93X2JvdW5kLAorLQkJICAg Y29uc3Qgc3RydWN0IGR5bmFtaWNfcHJvcCAqaGlnaF9ib3VuZCkKKysJCSAgIGNvbnN0IHN0cnVj dCBkeW5hbWljX3Byb3AgKmhpZ2hfYm91bmQsCisrCQkgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19w cm9wICpzdHJpZGUpCisgeworICAgaWYgKHJlc3VsdF90eXBlID09IE5VTEwpCisgICAgIHJlc3Vs dF90eXBlID0gYWxsb2NfdHlwZV9jb3B5IChpbmRleF90eXBlKTsKK0BAIC04MjAsNiArODIxLDcg QEAgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdAorICAgICBUWVBFX1pB TExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOworICAgVFlQ RV9SQU5HRV9EQVRBIChyZXN1bHRfdHlwZSktPmxvdyA9ICpsb3dfYm91bmQ7CisgICBUWVBFX1JB TkdFX0RBVEEgKHJlc3VsdF90eXBlKS0+aGlnaCA9ICpoaWdoX2JvdW5kOworKyAgVFlQRV9SQU5H RV9EQVRBIChyZXN1bHRfdHlwZSktPnN0cmlkZSA9ICpzdHJpZGU7CisgCisgICBpZiAobG93X2Jv dW5kLT5raW5kID09IFBST1BfQ09OU1QgJiYgbG93X2JvdW5kLT5kYXRhLmNvbnN0X3ZhbCA+PSAw KQorICAgICBUWVBFX1VOU0lHTkVEIChyZXN1bHRfdHlwZSkgPSAxOworQEAgLTg0MSw3ICs4NDMs NyBAQCBzdHJ1Y3QgdHlwZSAqCisgY3JlYXRlX3N0YXRpY19yYW5nZV90eXBlIChzdHJ1Y3QgdHlw ZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorIAkJCSAgTE9OR0VTVCBs b3dfYm91bmQsIExPTkdFU1QgaGlnaF9ib3VuZCkKKyB7CistICBzdHJ1Y3QgZHluYW1pY19wcm9w IGxvdywgaGlnaDsKKysgIHN0cnVjdCBkeW5hbWljX3Byb3AgbG93LCBoaWdoLCBzdHJpZGU7Cisg CisgICBsb3cua2luZCA9IFBST1BfQ09OU1Q7CisgICBsb3cuZGF0YS5jb25zdF92YWwgPSBsb3df Ym91bmQ7CitAQCAtODQ5LDcgKzg1MSwxMSBAQCBjcmVhdGVfc3RhdGljX3JhbmdlX3R5cGUgKHN0 cnVjdCB0eXBlICpyCisgICBoaWdoLmtpbmQgPSBQUk9QX0NPTlNUOworICAgaGlnaC5kYXRhLmNv bnN0X3ZhbCA9IGhpZ2hfYm91bmQ7CisgCistICByZXN1bHRfdHlwZSA9IGNyZWF0ZV9yYW5nZV90 eXBlIChyZXN1bHRfdHlwZSwgaW5kZXhfdHlwZSwgJmxvdywgJmhpZ2gpOworKyAgc3RyaWRlLmtp bmQgPSBQUk9QX0NPTlNUOworKyAgc3RyaWRlLmRhdGEuY29uc3RfdmFsID0gMDsKKysKKysgIHJl c3VsdF90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKHJlc3VsdF90eXBlLCBpbmRleF90eXBlLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxvdywgJmhpZ2gsICZzdHJpZGUp OworIAorICAgcmV0dXJuIHJlc3VsdF90eXBlOworIH0KK0BAIC0xMDA2LDE2ICsxMDEyLDIxIEBA IGNyZWF0ZV9hcnJheV90eXBlX3dpdGhfc3RyaWRlIChzdHJ1Y3QgdHkKKyAgIGlmIChoYXNfc3Rh dGljX3JhbmdlIChUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpKQorICAgICAgICYmIGR3YXJm Ml9hZGRyZXNzX2RhdGFfdmFsaWQgKHJlc3VsdF90eXBlKSkKKyAgICAgeworLSAgICAgIExPTkdF U1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOworKyAgICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdo X2JvdW5kLCBieXRlX3N0cmlkZTsKKyAKKyAgICAgICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5kcyAo cmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKKyAJbG93X2JvdW5kID0g aGlnaF9ib3VuZCA9IDA7CisgICAgICAgQ0hFQ0tfVFlQRURFRiAoZWxlbWVudF90eXBlKTsKKysK KysgICAgICBieXRlX3N0cmlkZSA9IGFicyAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkp OworKworICAgICAgIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGgu ICBBZGEgYXJyYXlzIGNhbiBiZQorIAkgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQg YmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCisgCSBJbiBzdWNoIGNhc2VzLCB0aGUg YXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KKyAgICAgICBpZiAoaGlnaF9ib3VuZCA8 IGxvd19ib3VuZCkKKyAJVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IDA7CisrICAgICAgZWxz ZSBpZiAoYnl0ZV9zdHJpZGUgPiAwKQorKwlUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gYnl0 ZV9zdHJpZGUgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOworICAgICAgIGVsc2UgaWYg KGJpdF9zdHJpZGUgPiAwKQorIAlUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KKyAJICAoYml0 X3N0cmlkZSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSkgKyA3KSAvIDg7CitAQCAtMTY5 Nyw3ICsxNzA4LDcgQEAgcmVzb2x2ZV9keW5hbWljX3JhbmdlIChzdHJ1Y3QgdHlwZSAqZHluXwor ICAgc3RydWN0IHR5cGUgKnN0YXRpY19yYW5nZV90eXBlOworICAgY29uc3Qgc3RydWN0IGR5bmFt aWNfcHJvcCAqcHJvcDsKKyAgIGNvbnN0IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0 b247CistICBzdHJ1Y3QgZHluYW1pY19wcm9wIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKKysgIHN0 cnVjdCBkeW5hbWljX3Byb3AgbG93X2JvdW5kLCBoaWdoX2JvdW5kLCBzdHJpZGU7CisgICBzdHJ1 Y3QgdHlwZSAqcmFuZ2VfY29weSA9IGNvcHlfdHlwZSAoZHluX3JhbmdlX3R5cGUpOworIAorICAg Z2RiX2Fzc2VydCAoVFlQRV9DT0RFIChkeW5fcmFuZ2VfdHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdF KTsKK0BAIC0xNzI5LDEwICsxNzQwLDE3IEBAIHJlc29sdmVfZHluYW1pY19yYW5nZSAoc3RydWN0 IHR5cGUgKmR5bl8KKyAgICAgICBoaWdoX2JvdW5kLmtpbmQgPSBQUk9QX1VOREVGSU5FRDsKKyAg ICAgICBoaWdoX2JvdW5kLmRhdGEuY29uc3RfdmFsID0gMDsKKyAgICAgfQorKyAgCisrICBwcm9w ID0gJlRZUEVfUkFOR0VfREFUQSAoZHluX3JhbmdlX3R5cGUpLT5zdHJpZGU7CisrICBpZiAoZHdh cmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorKyAgICB7CisrICAg ICAgc3RyaWRlLmtpbmQgPSBQUk9QX0NPTlNUOworKyAgICAgIHN0cmlkZS5kYXRhLmNvbnN0X3Zh bCA9IHZhbHVlOworKyAgICB9CisgCisgICBzdGF0aWNfcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5n ZV90eXBlIChyYW5nZV9jb3B5LAorIAkJCQkJIFRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX2NvcHkp LAorLQkJCQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKTsKKysJCQkJCSAmbG93X2JvdW5kLCAm aGlnaF9ib3VuZCwgJnN0cmlkZSk7CisgICBUWVBFX1JBTkdFX0RBVEEgKHN0YXRpY19yYW5nZV90 eXBlKS0+ZmxhZ19ib3VuZF9ldmFsdWF0ZWQgPSAxOworICAgcmV0dXJuIHN0YXRpY19yYW5nZV90 eXBlOworIH0KK0BAIC0xOTk2LDcgKzIwMTQsMTcgQEAgcmVzb2x2ZV9keW5hbWljX3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlLAorICAgcHJvcCA9IFRZUEVfREFUQV9MT0NBVElPTiAodHlwZSk7Cisg ICBpZiAoZHdhcmYyX2V2YWx1YXRlX3Byb3BlcnR5IChwcm9wLCBhZGRyLCAmdmFsdWUpKQorICAg ICB7CisrICAgICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5 cGUpOworKworKyAgICAgIC8qIEFkanVzdCB0aGUgZGF0YSBsb2NhdGlvbiB3aXRoIHRoZSB2YWx1 ZSBvZiBieXRlIHN0cmlkZSBpZiBzZXQsIHdoaWNoCisrICAgICAgICAgY2FuIGRlc2NyaWJlIHRo ZSBzZXBhcmF0aW9uIGJldHdlZW4gc3VjY2Vzc2l2ZSBlbGVtZW50cyBhbG9uZyB0aGUKKysgICAg ICAgICBkaW1lbnNpb24uICAqLworKyAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90 eXBlKSA8IDApCisrICAgICAgICB2YWx1ZSArPSAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBl KSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSkKKysgICAgICAgICAgICAgICAgICAqIFRZ UEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpOworKworICAgICAgIGFkanVzdGVkX2FkZHJlc3Mg PSB2YWx1ZTsKKysKKyAgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAodHlwZSkgPSB2YWx1 ZTsKKyAgICAgICBUWVBFX0RBVEFfTE9DQVRJT05fS0lORCAodHlwZSkgPSBQUk9QX0NPTlNUOwor ICAgICB9CitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvZ2RidHlwZXMuaAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDE0LTA2 LTE2IDIzOjI0OjEyLjc0MTU4NDMxNSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2Ri L2dkYnR5cGVzLmgJMjAxNC0wNi0xNiAyMzoyNToxMi43MDQ2NDA5MTEgKzAyMDAKK0BAIC02NzAs NiArNjcwLDEwIEBAIHN0cnVjdCBtYWluX3R5cGUKKyAKKyAgICAgICBzdHJ1Y3QgZHluYW1pY19w cm9wIGhpZ2g7CisgCisrICAgICAgLyogKiBTdHJpZGUgb2YgcmFuZ2UuICAqLworKworKyAgICAg IHN0cnVjdCBkeW5hbWljX3Byb3Agc3RyaWRlOworKworICAgICAgIC8qIFRydWUgaWYgSElHSCBy YW5nZSBib3VuZCBjb250YWlucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZQorIAkgc3Vi cmFuZ2UuIFRoaXMgYWZmZWN0cyBob3cgdGhlIGZpbmFsIGhpZ2h0IGJvdW5kIGlzIGNvbXB1dGVk LiAgKi8KKyAKK0BAIC0xMjE5LDYgKzEyMjMsMTUgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25h dF9hdXhfdHlwZSAoc3RydQorICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoLmtp bmQKKyAjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX0tJTkQocmFuZ2VfdHlwZSkgXAorICAgVFlQRV9S QU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3cua2luZAorKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklE RShyYW5nZV90eXBlKSBcCisrICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPnN0cmlkZS5k YXRhLmNvbnN0X3ZhbAorKyNkZWZpbmUgVFlQRV9CWVRFX1NUUklERV9CTE9DSyhyYW5nZV90eXBl KSBcCisrICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPnN0cmlkZS5kYXRhLmxvY2V4cHIK KysjZGVmaW5lIFRZUEVfQllURV9TVFJJREVfTE9DTElTVChyYW5nZV90eXBlKSBcCisrICBUWVBF X1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPnN0cmlkZS5kYXRhLmxvY2xpc3QKKysjZGVmaW5lIFRZ UEVfQllURV9TVFJJREVfS0lORChyYW5nZV90eXBlKSBcCisrICBUWVBFX1JBTkdFX0RBVEEocmFu Z2VfdHlwZSktPnN0cmlkZS5raW5kCisrCisgCisgLyogQXR0cmlidXRlIGFjY2Vzc29ycyBmb3Ig VkxBIHN1cHBvcnQuICAqLworICNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OKHRoaXN0eXBlKSBc CitAQCAtMTI1MCw2ICsxMjYzLDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydQorICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBFKGFy cmF5dHlwZSkpCisgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRChh cnJheXR5cGUpIFwKKyAgICBUWVBFX0xPV19CT1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBF KGFycmF5dHlwZSkpCisrI2RlZmluZSBUWVBFX0FSUkFZX1NUUklERV9JU19VTkRFRklORUQoYXJy YXl0eXBlKSBcCisrICAgKFRZUEVfQllURV9TVFJJREUoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlw ZSkpID09IDApCisrCisgCisgI2RlZmluZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX1ZBTFVFKGFy cmF5dHlwZSkgXAorICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5 cGUpKSkpCitAQCAtMTcxOCw2ICsxNzM0LDcgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVf YXJyYXlfdHlwZV93aQorIAorIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3JhbmdlX3R5cGUg KHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCisgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qg ZHluYW1pY19wcm9wICosCisrCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICos CisgCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgZHluYW1pY19wcm9wICopOworIAorIGV4dGVybiBz dHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBl ICosCitJbmRleDogZ2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvdmFsYXJpdGguYworPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0tIGdkYi03LjcuOTAuMjAxNDA2MTMub3JpZy9nZGIvdmFsYXJpdGguYwkyMDE0LTA2LTE2 IDIzOjI0OjEyLjc0MTU4NDMxNSArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL3Zh bGFyaXRoLmMJMjAxNC0wNi0xNiAyMzoyNjo0Mi41NDE3MjU4ODYgKzAyMDAKK0BAIC0xOTYsNiAr MTk2LDcgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKgorICAgc3Ry dWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoYXJy YXlfdHlwZSkpOworICAgdW5zaWduZWQgaW50IGVsdF9zaXplID0gVFlQRV9MRU5HVEggKGVsdF90 eXBlKTsKKyAgIHVuc2lnbmVkIGludCBlbHRfb2ZmczsKKysgIExPTkdFU1QgZWx0X3N0cmlkZSA9 IFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSkpOworICAgc3Ry dWN0IHZhbHVlICp2OworIAorICAgaWYgKFRZUEVfTk9UX0FTU09DSUFURUQgKGFycmF5X3R5cGUp KQorQEAgLTIwMyw3ICsyMDQsMTggQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3Qg dmFsdWUgKgorICAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAoYXJyYXlfdHlwZSkpCisgICAgIGVy cm9yIChfKCJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIpKTsK KyAKKy0gIGVsdF9vZmZzID0gZWx0X3NpemUgKiBsb25nZXN0X3RvX2ludCAoaW5kZXggLSBsb3dl cmJvdW5kKTsKKysgIGVsdF9vZmZzID0gbG9uZ2VzdF90b19pbnQgKGluZGV4IC0gbG93ZXJib3Vu ZCk7CisrCisrICBpZiAoZWx0X3N0cmlkZSA+IDApCisrICAgIGVsdF9vZmZzICo9IGVsdF9zdHJp ZGU7CisrICBlbHNlIGlmIChlbHRfc3RyaWRlIDwgMCkKKysgICAgeworKyAgICAgIGludCBvZmZz ID0gKGVsdF9vZmZzICsgMSkgKiBlbHRfc3RyaWRlOworKworKyAgICAgIGVsdF9vZmZzID0gVFlQ RV9MRU5HVEggKGFycmF5X3R5cGUpICsgb2ZmczsKKysgICAgfQorKyAgZWxzZQorKyAgICBlbHRf b2ZmcyAqPSBlbHRfc2l6ZTsKKyAKKyAgIGlmIChpbmRleCA8IGxvd2VyYm91bmQgfHwgKCFUWVBF X0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAoYXJyYXlfdHlwZSkKKyAJCQkgICAgICYm IGVsdF9vZmZzID49IFRZUEVfTEVOR1RIIChhcnJheV90eXBlKSkpCgpkaWZmIC0tZ2l0IGEvZ2Ri LXZsYS1pbnRlbC0xMm9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTEyb2YyMy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTJlYWIwCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiLXZsYS1pbnRlbC0xMm9mMjMucGF0Y2gKQEAgLTAsMCArMSwyNDMgQEAKK1N1YmplY3Q6 IFtQQVRDSCAxMi8yM10gdGVzdDogYmFzaWMgdGVzdHMgZm9yIGR5bmFtaWMgYXJyYXkgZXZhbHVh dGlvbnMgaW4gRm9ydHJhbi4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTMtZ2l0LXNl bmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitUZXN0cyBlbnN1cmUgdGhhdCB2YWx1 ZXMgb2YgRm9ydHJhbiBkeW5hbWljIGFycmF5cworY2FuIGJlIGV2YWx1YXRlZCBjb3JyZWN0bHkg aW4gdmFyaW91cyB3YXlzIGFuZCBzdGF0ZXMuCisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8 a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5p bWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi86CisKKwkqIHZs YS5mOTA6IE5ldyBmaWxlLgorCSogdmxhLXZhbHVlLmV4cDogTmV3IGZpbGUuCisKK0NoYW5nZS1J ZDogSTAyMjljM2I1OGY3MmFlODljMmVlNDJkMTIxOWU0NTM4Y2I2YmYwMjMKKworU2lnbmVkLW9m Zi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLmV4cCB8ICAxNDggKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLmY5MCAgICAgICB8 ICAgNTYgKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAyMDQgaW5zZXJ0aW9ucygrKQor IGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5l eHAKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEuZjkw CisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kN2I4YTFlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS5leHAKK0BAIC0wLDAgKzEsMTQ4IEBACisr IyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgInZsYS5mOTAi CisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0Zmls ZX0gJHtzcmNmaWxlfSBcCisrICAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVy biAtMQorK30KKysKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291 bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysj IFRyeSB0byBhY2Nlc3MgdmFsdWVzIGluIG5vbiBhbGxvY2F0ZWQgVkxBCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtaW5pdCJdCisrZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgInZsYTEtaW5pdCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IDxub3QgYWxs b2NhdGVkPiIgInByaW50IG5vbi1hbGxvY2F0ZWQgdmxhMSIKKytnZGJfdGVzdCAicHJpbnQgJnZs YTEiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggcmVhbFxcXChraW5kPTRcXFwpIFxcXCg8 bm90IGFsbG9jYXRlZD5cXFwpXFxcKVxcXCkgJGhleCIgXAorKyAgInByaW50IG5vbi1hbGxvY2F0 ZWQgJnZsYTEiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoMSwxLDEpIiAibm8gc3VjaCB2ZWN0b3Ig ZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwcmludCBtZW1iZXIgaW4gbm9u LWFsbG9jYXRlZCB2bGExICgxKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgxMDEsMjAyLDMwMyki IFwKKysgICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFsbG9jYXRlZCIgXAor KyAgInByaW50IG1lbWJlciBpbiBub24tYWxsb2NhdGVkIHZsYTEgKDIpIgorK2dkYl90ZXN0ICJw cmludCB2bGExKDUsMiwxOCk9MSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3Qg YWxsb2NhdGVkIiBcCisrICAic2V0IG1lbWJlciBpbiBub24tYWxsb2NhdGVkIHZsYTEiCisrCisr IyBUcnkgdG8gYWNjZXNzIHZhbHVlIGluIGFsbG9jYXRlZCBWTEEKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmxhMi1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJ2bGEyLWFsbG9jYXRlZCIKKytnZGJfdGVzdCAibmV4dCIgIlxcZCsoXFx0fFxc cykrdmxhMVxcXCgzLCA2LCA5XFxcKSA9IDQyIiBcCisrICAic3RlcCBvdmVyIHZhbHVlIGFzc2ln bm1lbnQgb2YgdmxhMSIKKytnZGJfdGVzdCAicHJpbnQgJnZsYTEiIFwKKysgICIgPSBcXFwoUFRS IFRPIC0+IFxcXCggcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXClcXFwpXFxcKSAk aGV4IiBcCisrICAicHJpbnQgYWxsb2NhdGVkICZ2bGExIgorK2dkYl90ZXN0ICJwcmludCB2bGEx KDMsIDYsIDkpIiAiID0gMTMxMSIgInByaW50IGFsbG9jYXRlZCB2bGExKDMsNiw5KSIKKytnZGJf dGVzdCAicHJpbnQgdmxhMSgxLCAzLCA4KSIgIiA9IDEzMTEiICJwcmludCBhbGxvY2F0ZWQgdmxh MSgxLDMsOCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEoOSwgOSwgOSkgPSA5OTkiICIgPSA5OTki IFwKKysgICJwcmludCBhbGxvY2F0ZWQgdmxhMSg5LDksOSk9MSIKKysKKysjIFRyeSB0byBhY2Nl c3MgdmFsdWVzIGluIGFsbG9jYXRlZCBWTEEgYWZ0ZXIgc3BlY2lmaWMgYXNzaWdubWVudAorK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtZmlsbGVkIgorK2dkYl90ZXN0ICJwcmludCB2bGEx KDMsIDYsIDkpIiAiID0gNDIiIFwKKysgICJwcmludCBhbGxvY2F0ZWQgdmxhMSgzLDYsOSkgYWZ0 ZXIgc3BlY2lmaWMgYXNzaWdubWVudCAoZmlsbGVkKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgx LCAzLCA4KSIgIiA9IDEwMDEiIFwKKysgICJwcmludCBhbGxvY2F0ZWQgdmxhMSgxLDMsOCkgYWZ0 ZXIgc3BlY2lmaWMgYXNzaWdubWVudCAoZmlsbGVkKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSg5 LCA5LCA5KSIgIiA9IDk5OSIgXAorKyAgInByaW50IGFsbG9jYXRlZCB2bGExKDksOSw5KSBhZnRl ciBhc3NpZ25tZW50IGluIGRlYnVnZ2VyIChmaWxsZWQpIgorKworKyMgVHJ5IHRvIGFjY2VzcyB2 YWx1ZXMgaW4gdW5kZWZpbmVkIHBvaW50ZXIgdG8gVkxBIChkYW5nbGluZykKKytnZGJfdGVzdCAi cHJpbnQgcHZsYSIgIiA9IDxub3QgYXNzb2NpYXRlZD4iICJwcmludCB1bmRlZmluZWQgcHZsYSIK KytnZGJfdGVzdCAicHJpbnQgJnB2bGEiIFwKKysgICIgPSBcXFwoUFRSIFRPIC0+IFxcXCggcmVh bFxcXChraW5kPTRcXFwpIFxcXCg8bm90IGFzc29jaWF0ZWQ+XFxcKVxcXClcXFwpICRoZXgiIFwK KysgICJwcmludCBub24tYXNzb2NpYXRlZCAmcHZsYSIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgx LCAzLCA4KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIg XAorKyAgInByaW50IHVuZGVmaW5lZCBwdmxhKDEsMyw4KSIKKysKKysjIFRyeSB0byBhY2Nlc3Mg dmFsdWVzIGluIHBvaW50ZXIgdG8gVkxBIGFuZCBjb21wYXJlIHRoZW0KKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAicHZsYS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCAmcHZsYSIg XAorKyAgIiA9IFxcXChQVFIgVE8gLT4gXFxcKCByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDEwLDEw LDEwXFxcKVxcXClcXFwpICRoZXgiIFwKKysgICJwcmludCBhc3NvY2lhdGVkICZwdmxhIgorK2dk Yl90ZXN0ICJwcmludCBwdmxhKDMsIDYsIDkpIiAiID0gNDIiICJwcmludCBhc3NvY2lhdGVkIHB2 bGEoMyw2LDkpIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEsIDMsIDgpIiAiID0gMTAwMSIgInBy aW50IGFzc29jaWF0ZWQgcHZsYSgxLDMsOCkiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoOSwgOSwg OSkiICIgPSA5OTkiICJwcmludCBhc3NvY2lhdGVkIHB2bGEoOSw5LDkpIgorKworKyMgRmlsbCB2 YWx1ZXMgdG8gVkxBIHVzaW5nIHBvaW50ZXIgYW5kIGNoZWNrCisrZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgInB2bGEtcmUtYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInB2bGEtcmUtYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSg1 LCA0NSwgMjApIiBcCisrICAiID0gMSIgInByaW50IHB2bGEoNSwgNDUsIDIwKSBhZnRlciBmaWxs ZWQgdXNpbmcgcG9pbnRlciIKKytnZGJfdGVzdCAicHJpbnQgdmxhMig1LCA0NSwgMjApIiBcCisr ICAiID0gMSIgInByaW50IHZsYTIoNSwgNDUsIDIwKSBhZnRlciBmaWxsZWQgdXNpbmcgcG9pbnRl ciIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSg3LCA0NSwgMTQpIiAiID0gMiIgXAorKyAgInByaW50 IHB2bGEoNywgNDUsIDE0KSBhZnRlciBmaWxsZWQgdXNpbmcgcG9pbnRlciIKKytnZGJfdGVzdCAi cHJpbnQgdmxhMig3LCA0NSwgMTQpIiAiID0gMiIgXAorKyAgInByaW50IHZsYTIoNywgNDUsIDE0 KSBhZnRlciBmaWxsZWQgdXNpbmcgcG9pbnRlciIKKysKKysjIFRyeSB0byBhY2Nlc3MgdmFsdWVz IG9mIGRlYXNzb2NpYXRlZCBWTEEgcG9pbnRlcgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJwdmxhLWRlYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInB2bGEtZGVhc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDUsIDQ1LCAyMCki IFwKKysgICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJlY2F1c2Ugbm90IGFzc29jaWF0ZWQiIFwK KysgICJwcmludCBwdmxhKDUsIDQ1LCAyMCkgYWZ0ZXIgZGVhc3NvY2lhdGVkIgorK2dkYl90ZXN0 ICJwcmludCBwdmxhKDcsIDQ1LCAxNCkiIFwKKysgICJubyBzdWNoIHZlY3RvciBlbGVtZW50IGJl Y2F1c2Ugbm90IGFzc29jaWF0ZWQiIFwKKysgICJwcmludCBwdmxhKDcsIDQ1LCAxNCkgYWZ0ZXIg ZGlzc2Fzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIgIiA9IDxub3QgYXNzb2NpYXRl ZD4iIFwKKysgICJwcmludCB2bGExIGFmdGVyIGRlYXNzb2NpYXRlZCIKKysKKysjIFRyeSB0byBh Y2Nlc3MgdmFsdWVzIG9mIGRlYWxsb2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ2bGExLWRlYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAidmxhMS1kZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgzLCA2LCA5KSIg Im5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIiBcCisrICAicHJp bnQgYWxsb2NhdGVkIHZsYTEoMyw2LDkpIGFmdGVyIHNwZWNpZmljIGFzc2lnbm1lbnQgKGRlYWxs b2NhdGVkKSIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSgxLCAzLCA4KSIgIm5vIHN1Y2ggdmVjdG9y IGVsZW1lbnQgYmVjYXVzZSBub3QgYWxsb2NhdGVkIiBcCisrICAicHJpbnQgYWxsb2NhdGVkIHZs YTEoMSwzLDgpIGFmdGVyIHNwZWNpZmljIGFzc2lnbm1lbnQgKGRlYWxsb2NhdGVkKSIKKytnZGJf dGVzdCAicHJpbnQgdmxhMSg5LCA5LCA5KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQgYmVjYXVz ZSBub3QgYWxsb2NhdGVkIiBcCisrICAicHJpbnQgYWxsb2NhdGVkIHZsYTEoOSw5LDkpIGFmdGVy IGFzc2lnbm1lbnQgaW4gZGVidWdnZXIgKGRlYWxsb2NhdGVkKSIKKysKKysKKysjIFRyeSB0byBh c3NpZ24gVkxBIHRvIHVzZXIgdmFyaWFibGUKKytjbGVhbl9yZXN0YXJ0ICR7dGVzdGZpbGV9Cisr CisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxsb2NhdGVkIl0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgIm5leHQiICJcXGQrLip2bGEx XFwoMywgNiwgOVxcKSA9IDQyIiAibmV4dCAoMSkiCisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz ZXQgXCRteXZhciA9IHZsYTEiICJzZXQgXCRteXZhciA9IHZsYTEiCisrZ2RiX3Rlc3QgInByaW50 IFwkbXl2YXIiIFwKKysgICIgPSBcXCggKlxcKCAqXFwoICoxMzExLCAqMTMxMSwgKjEzMTEsXFso KTEzMTEsIC5cXSpcXCkiIFwKKysgICJwcmludCBcJG15dmFyIHNldCB0byB2bGExIgorKworK2dk Yl90ZXN0ICJuZXh0IiAiXFxkKy4qdmxhMVxcKDEsIDMsIDhcXCkgPSAxMDAxIiAibmV4dCAoMiki CisrZ2RiX3Rlc3QgInByaW50IFwkbXl2YXIoMyw2LDkpIiAiID0gMTMxMSIgInByaW50IFwkbXl2 YXIoMyw2LDkpIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxh LWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0 ZWQiCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgXCRteXB2YXIgPSBwdmxhIiAic2V0IFwkbXlw dmFyID0gcHZsYSIKKytnZGJfdGVzdCAicHJpbnQgXCRteXB2YXIoMSwzLDgpIiAiID0gMTAwMSIg InByaW50IFwkbXlwdmFyKDEsMyw4KSIKKysKKysjIGRlYWxsb2NhdGUgcG9pbnRlciBhbmQgbWFr ZSBzdXJlIHVzZXIgZGVmaW5lZCB2YXJpYWJsZSBzdGlsbCBoYXMgdGhlCisrIyByaWdodCB2YWx1 ZS4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFzc29jaWF0 ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRlZCIKKytn ZGJfdGVzdCAicHJpbnQgXCRteXB2YXIoMSwzLDgpIiAiID0gMTAwMSIgXAorKyAgInByaW50IFwk bXlwdmFyKDEsMyw4KSBhZnRlciBkZWFsbG9jYXRlZCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS5m OTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MzQyNWYzCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS5mOTAKK0BAIC0wLDAg KzEsNTYgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlz IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrcHJvZ3JhbSB2bGEKKysg IHJlYWwsIHRhcmdldCwgYWxsb2NhdGFibGUgOjogdmxhMSAoOiwgOiwgOikKKysgIHJlYWwsIHRh cmdldCwgYWxsb2NhdGFibGUgOjogdmxhMiAoOiwgOiwgOikKKysgIHJlYWwsIHRhcmdldCwgYWxs b2NhdGFibGUgOjogdmxhMyAoOiwgOikKKysgIHJlYWwsIHBvaW50ZXIgOjogcHZsYSAoOiwgOiwg OikKKysgIGxvZ2ljYWwgOjogbAorKworKyAgYWxsb2NhdGUgKHZsYTEgKDEwLDEwLDEwKSkgICAg ICAgICAgISB2bGExLWluaXQKKysgIGwgPSBhbGxvY2F0ZWQodmxhMSkKKysKKysgIGFsbG9jYXRl ICh2bGEyICgxOjcsNDI6NTAsMTM6MzUpKSAgICEgdmxhMS1hbGxvY2F0ZWQKKysgIGwgPSBhbGxv Y2F0ZWQodmxhMikKKysKKysgIHZsYTEoOiwgOiwgOikgPSAxMzExICAgICAgICAgICAgICAgICEg dmxhMi1hbGxvY2F0ZWQKKysgIHZsYTEoMywgNiwgOSkgPSA0MgorKyAgdmxhMSgxLCAzLCA4KSA9 IDEwMDEKKysgIHZsYTEoNiwgMiwgNykgPSAxMworKworKyAgdmxhMig6LCA6LCA6KSA9IDEzMTEg ICAgICAgICAgICAgICAgISB2bGExLWZpbGxlZAorKyAgdmxhMig1LCA0NSwgMjApID0gNDIKKysK KysgIHB2bGEgPT4gdmxhMSAgICAgICAgICAgICAgICAgICAgICAgICEgdmxhMi1maWxsZWQKKysg IGwgPSBhc3NvY2lhdGVkKHB2bGEpCisrCisrICBwdmxhID0+IHZsYTIgICAgICAgICAgICAgICAg ICAgICAgICAhIHB2bGEtYXNzb2NpYXRlZAorKyAgbCA9IGFzc29jaWF0ZWQocHZsYSkKKysgIHB2 bGEoNSwgNDUsIDIwKSA9IDEKKysgIHB2bGEoNywgNDUsIDE0KSA9IDIKKysKKysgIHB2bGEgPT4g bnVsbCgpICAgICAgICAgICAgICAgICAgICAgICEgcHZsYS1yZS1hc3NvY2lhdGVkCisrICBsID0g YXNzb2NpYXRlZChwdmxhKQorKworKyAgZGVhbGxvY2F0ZSAodmxhMSkgICAgICAgICAgICAgICAg ICAgISBwdmxhLWRlYXNzb2NpYXRlZAorKyAgbCA9IGFsbG9jYXRlZCh2bGExKQorKworKyAgZGVh bGxvY2F0ZSAodmxhMikgICAgICAgICAgICAgICAgICAgISB2bGExLWRlYWxsb2NhdGVkCisrICBs ID0gYWxsb2NhdGVkKHZsYTIpCisrCisrICBhbGxvY2F0ZSAodmxhMyAoMiwyKSkgICAgICAgICAg ICAgICAhIHZsYTItZGVhbGxvY2F0ZWQKKysgIHZsYTMoOiw6KSA9IDEzCisrZW5kIHByb2dyYW0g dmxhCistLSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMTNvZjIzLnBh dGNoIGIvZ2RiLXZsYS1pbnRlbC0xM29mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMzE0ZmRjOAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMTNv ZjIzLnBhdGNoCkBAIC0wLDAgKzEsMjczIEBACitTdWJqZWN0OiBbUEFUQ0ggMTMvMjNdIHRlc3Q6 IGV2YWx1YXRlIEZvcnRyYW4gZHluYW1pYyBhcnJheXMgb2YgdHlwZXMuCitNZXNzYWdlLUlkOiA8 MTQwMTg2MTI2Ni02MjQwLTE0LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4K KworVGVzdHMgZW5zdXJlIHRoYXQgZHluYW1pYyBhcnJheXMgb2YgdmFyaW91cyBGb3J0cmFuCitk YXRhdHlwZXMgY2FuIGJlIGV2YWx1YXRlZCBjb3JyZWN0bHkuCisKKzIwMTQtMDUtMjggIEtldmVu IEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292 aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi86 CisKKwkqIHZsYS10eXBlLmV4cDogTmV3IGZpbGUuCisJKiB2bGEtdHlwZS5mOTA6IE5ldyBmaWxl LgorCitDaGFuZ2UtSWQ6IEk3YzFhMzgxYzVjYjBhZDQ4ODcyYjc3OTkzZTdjN2ZkYWM4NWJjNzU2 CisKK1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+Cist LS0KKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cCB8ICAxMjcgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3Zs YS10eXBlLmY5MCB8ICAxMDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBj aGFuZ2VkLCAyMzQgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MAorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS10eXBlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmFkNTBk OWMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5 cGUuZXhwCitAQCAtMCwwICsxLDEyNyBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysj IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExp Y2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKwor K3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgorKworK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcg JHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorKyAgICAge2RlYnVnIGY5 MCBxdWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19d IHRoZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIK KysgICAgY29udGludWUKKyt9CisrCisrIyBDaGVjayBpZiBub3QgYWxsb2NhdGVkIFZMQSBpbiB0 eXBlIGRvZXMgbm90IGJyZWFrCisrIyB0aGUgZGVidWdnZXIgd2hlbiBhY2Nlc3NpbmcgaXQuCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJlZm9yZS1hbGxvY2F0ZWQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJiZWZvcmUtYWxsb2NhdGVkIgorK2dkYl90ZXN0 ICJwcmludCB0d292IiAiID0gXFxcKCA8bm90IGFsbG9jYXRlZD4sIDxub3QgYWxsb2NhdGVkPiBc XFwpIiBcCisrICAicHJpbnQgdHdvdiBiZWZvcmUgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmlu dCB0d292JWl2bGExIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IiBcCisrICAicHJpbnQgdHdvdiVpdmxh MSBiZWZvcmUgYWxsb2NhdGVkIgorKworKyMgQ2hlY2sgdHlwZSB3aXRoIG9uZSBWTEEncyBpbnNp ZGUKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAib25ldi1maWxsZWQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJvbmV2LWZpbGxlZCIKKytnZGJfdGVzdCAicHJp bnQgb25ldiVpdmxhKDUsIDExLCAyMykiICIgPSAxIiAicHJpbnQgb25ldiVpdmxhKDUsIDExLCAy MykiCisrZ2RiX3Rlc3QgInByaW50IG9uZXYlaXZsYSgxLCAyLCAzKSIgIiA9IDEyMyIgInByaW50 IG9uZXYlaXZsYSgxLCAyLCAzKSIKKytnZGJfdGVzdCAicHJpbnQgb25ldiVpdmxhKDMsIDIsIDEp IiAiID0gMzIxIiAicHJpbnQgb25ldiVpdmxhKDMsIDIsIDEpIgorK2dkYl90ZXN0ICJwdHlwZSBv bmV2IiBcCisrICAidHlwZSA9IFR5cGUgb25lXHJcblxccytyZWFsXFxcKGtpbmQ9NFxcXCkgOjog aXZsYVxcXCgxMSwyMiwzM1xcXClcclxuRW5kIFR5cGUgb25lIiBcCisrICAicHR5cGUgb25ldiIK KysKKysjIENoZWNrIHR5cGUgd2l0aCB0d28gVkxBJ3MgaW5zaWRlCisrZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInR3b3YtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAidHdvdi1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHR3b3YlaXZsYTEoNSwgMTEs IDIzKSIgIiA9IDEiIFwKKysgICJwcmludCB0d292JWl2bGExKDUsIDExLCAyMykiCisrZ2RiX3Rl c3QgInByaW50IHR3b3YlaXZsYTEoMSwgMiwgMykiICIgPSAxMjMiIFwKKysgICJwcmludCB0d292 JWl2bGExKDEsIDIsIDMpIgorK2dkYl90ZXN0ICJwcmludCB0d292JWl2bGExKDMsIDIsIDEpIiAi ID0gMzIxIiBcCisrICAicHJpbnQgdHdvdiVpdmxhMSgzLCAyLCAxKSIKKytnZGJfdGVzdCAicHR5 cGUgdHdvdiIgXAorKyAgInR5cGUgPSBUeXBlIHR3b1xyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwp IDo6IGl2bGExXFxcKDUsMTIsOTlcXFwpXHJcblxccytyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZs YTJcXFwoOSwxMlxcXClcclxuRW5kIFR5cGUgdHdvIiBcCisrICAicHR5cGUgdHdvdiIKKysKKysj IENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgYmVnaW5uIG9mIHR5cGUKKytnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidGhyZWV2LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInRocmVldi1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHRocmVldiVp dmxhKDEpIiAiID0gMSIgInByaW50IHRocmVldiVpdmxhKDEpIgorK2dkYl90ZXN0ICJwcmludCB0 aHJlZXYlaXZsYSg1KSIgIiA9IDQyIiAicHJpbnQgdGhyZWV2JWl2bGEoNSkiCisrZ2RiX3Rlc3Qg InByaW50IHRocmVldiVpdmxhKDE0KSIgIiA9IDI0IiAicHJpbnQgdGhyZWV2JWl2bGEoMTQpIgor K2dkYl90ZXN0ICJwcmludCB0aHJlZXYlaXZhciIgIiA9IDMuMTRcXGQrPyIgInByaW50IHRocmVl diVpdmFyIgorK2dkYl90ZXN0ICJwdHlwZSB0aHJlZXYiIFwKKysgICJ0eXBlID0gVHlwZSB0aHJl ZVxyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2YXJcclxuXFxzK3JlYWxcXFwoa2luZD00 XFxcKSA6OiBpdmxhXFxcKDIwXFxcKVxyXG5FbmQgVHlwZSB0aHJlZSIgXAorKyAgInB0eXBlIHRo cmVldiIKKysKKysjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgZW5kIG9mIHR5cGUKKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZm91cnYtZmlsbGVkIl0KKytnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiZm91cnYtZmlsbGVkIgorK2dkYl90ZXN0ICJwcmludCBm b3VydiVpdmxhKDEpIiAiID0gMSIgInByaW50IGZvdXJ2JWl2bGEoMSkiCisrZ2RiX3Rlc3QgInBy aW50IGZvdXJ2JWl2bGEoMikiICIgPSAyIiAicHJpbnQgZm91cnYlaXZsYSgyKSIKKytnZGJfdGVz dCAicHJpbnQgZm91cnYlaXZsYSg3KSIgIiA9IDciICJwcmludCBmb3VydiVpdmxhKDcpIgorK2dk Yl90ZXN0ICJwcmludCBmb3VydiVpdmxhKDEyKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiICJw cmludCBmb3VydiVpdmxhKDEyKSIKKytnZGJfdGVzdCAicHJpbnQgZm91cnYlaXZhciIgIiA9IDMu MTRcXGQrPyIgInByaW50IGZvdXJ2JWl2YXIiCisrZ2RiX3Rlc3QgInB0eXBlIGZvdXJ2IiBcCisr ICAidHlwZSA9IFR5cGUgZm91clxyXG5cXHMrcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGFcXFwo MTBcXFwpXHJcblxccytyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZhclxyXG5FbmQgVHlwZSBmb3Vy IiBcCisrICAicHR5cGUgZm91cnYiCisrCisrIyBDaGVjayBWTEEgb2YgdHlwZXMKKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAib25ldmxhLWZpbGxlZCJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgIm9uZXZsYS1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IG9uZXZs YSgyLDIpJWl2bGEoMywgNiwgOSkiIFwKKysgICIgPSAzNjkiICJwcmludCBvbmV2bGEoMiwyKSVp dmxhKDMsIDYsIDkpIgorK2dkYl90ZXN0ICJwcmludCBvbmV2bGEoMiwyKSVpdmxhKDksIDMsIDYp IiBcCisrICAiID0gOTM2IiAicHJpbnQgb25ldmxhKDIsMiklaXZsYSg5LCAzLCA2KSIKKysKKysj IENoZWNrIG5lc3RlZCB0eXBlcyBjb250YWluaW5nIGEgVkxBCisrZ2RiX2JyZWFrcG9pbnQgW2dk Yl9nZXRfbGluZV9udW1iZXIgImZpdmV2LWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgImZpdmV2LWZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgZml2ZXYldG9uZSVpdmxhKDUs IDUsIDEpIiAiID0gMSIgXAorKyAgInByaW50IGZpdmV2JXRvbmUlaXZsYSg1LCA1LCAxKSIKKytn ZGJfdGVzdCAicHJpbnQgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpIiAiID0gMTIzIiBcCisrICAi cHJpbnQgZml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpIgorK2dkYl90ZXN0ICJwcmludCBmaXZldiV0 b25lJWl2bGEoMywgMiwgMSkiICIgPSAzMjEiIFwKKysgICJwcmludCBmaXZldiV0b25lJWl2bGEo MywgMiwgMSkiCisrZ2RiX3Rlc3QgInB0eXBlIGZpdmV2IiBcCisrICAidHlwZSA9IFR5cGUgZml2 ZVxyXG5cXHMrVHlwZSBvbmVcclxuXFxzK3JlYWxcXFwoa2luZD00XFxcKSA6OiBpdmxhXFxcKDEw LDEwLDEwXFxcKVxyXG5cXHMrRW5kIFR5cGUgb25lIDo6IHRvbmVcclxuRW5kIFR5cGUgZml2ZSIg XAorKyAgInB0eXBlIGZpdmV2IgorKworKyMgQ2hlY2sgcG9pbnRlciB0byB0eXBlLCBjb250YWlu aW5nIGEgVkxBCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm9uZXAtYXNz b2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm9uZXAtYXNzb2NpYXRlZCIK KytnZGJfdGVzdCAicHR5cGUgb25ldiIgIi4qcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGFcXFwo MTEsMjIsMzNcXFwpLioiIFwKKysgICJwdHlwZSBvbmV2IgorK2dkYl90ZXN0ICJwdHlwZSBvbmVw IiAiLipyZWFsXFxcKGtpbmQ9NFxcXCkgOjogaXZsYVxcXCgxMSwyMiwzM1xcXCkuKiIgXAorKyAg InB0eXBlIG9uZXAiCisrCisrZ2RiX3Rlc3QgInByaW50IG9uZXYlaXZsYSIgIiA9IFxcKCAqXFwo ICpcXCggKjIsICoyLCAqMixcWygpMiwgLlxdKlxcKSIgXAorKyAgInByaW50IG9uZXYlaXZsYSIK KytnZGJfdGVzdCAicHJpbnQgb25ldiIgIiA9IFxcKCAqXFwoICpcXCggKlxcKCAqMiwgKjIsICoy LFxbKCkyLCAuXF0qXFwpIiBcCisrICAicHJpbnQgb25ldiIKKytnZGJfdGVzdCAicHJpbnQgb25l cCIgIi4qcmVhbFxcXChraW5kPTRcXFwpIDo6IGl2bGFcXFwoMTEsMjIsMzNcXFwpLioiIFwKKysg ICJwcmludCBvbmVwIgorKworK2dkYl90ZXN0ICJwdHlwZSBvbmV2JWl2bGEiICJ0eXBlID0gcmVh bFxcXChraW5kPTRcXFwpIFxcXCgxMSwyMiwzM1xcXCkiIFwKKysgICJwdHlwZSBvbmV2JWl2bGEi CisrZ2RiX3Rlc3QgInB0eXBlIG9uZXAlaXZsYSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkg XFxcKDExLDIyLDMzXFxcKSIgXAorKyAgInB0eXBlIG9uZXAlaXZsYSIKKysKKytnZGJfdGVzdCAi cHR5cGUgb25ldiVpdmxhKDEsMSwxKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysg ICJwdHlwZSBvbmV2JWl2bGEoMSwxLDEpIgorK2dkYl90ZXN0ICJwdHlwZSBvbmVwJWl2bGEoMSwx LDEpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIG9uZXAlaXZsYSgx LDEsMSkiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5m OTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmY5MAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjA2NjAwYzkKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZjkwCitAQCAtMCwwICsxLDEwNyBAQAor KyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKysh IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g U3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysKKytwcm9ncmFtIHZsYV9z dHJ1Y3QKKysgIHR5cGUgOjogb25lCisrICAgIHJlYWwsIGFsbG9jYXRhYmxlIDo6IGl2bGEgKDos IDosIDopCisrICBlbmQgdHlwZSBvbmUKKysgIHR5cGUgOjogdHdvCisrICAgIHJlYWwsIGFsbG9j YXRhYmxlIDo6IGl2bGExICg6LCA6LCA6KQorKyAgICByZWFsLCBhbGxvY2F0YWJsZSA6OiBpdmxh MiAoOiwgOikKKysgIGVuZCB0eXBlIHR3bworKyAgdHlwZSA6OiB0aHJlZQorKyAgICByZWFsIDo6 IGl2YXIKKysgICAgcmVhbCwgYWxsb2NhdGFibGUgOjogaXZsYSAoOikKKysgIGVuZCB0eXBlIHRo cmVlCisrICB0eXBlIDo6IGZvdXIKKysgICAgcmVhbCwgYWxsb2NhdGFibGUgOjogaXZsYSAoOikK KysgICAgcmVhbCA6OiBpdmFyCisrICBlbmQgdHlwZSBmb3VyCisrICB0eXBlIDo6IGZpdmUKKysg ICAgdHlwZShvbmUpIDo6IHRvbmUKKysgIGVuZCB0eXBlIGZpdmUKKysKKysgIHR5cGUob25lKSwg dGFyZ2V0ICAgICAgICA6OiBvbmV2CisrICB0eXBlKHR3bykgICAgICAgICAgICAgICAgOjogdHdv dgorKyAgdHlwZSh0aHJlZSkgICAgICAgICAgICAgIDo6IHRocmVldgorKyAgdHlwZShmb3VyKSAg ICAgICAgICAgICAgIDo6IGZvdXJ2CisrICB0eXBlKGZpdmUpICAgICAgICAgICAgICAgOjogZml2 ZXYKKysgIHR5cGUob25lKSwgYWxsb2NhdGFibGUgICA6OiBvbmV2bGEoOiwgOikKKysgIHR5cGUo b25lKSwgcG9pbnRlciAgICAgICA6OiBvbmVwCisrICBsb2dpY2FsICAgICAgICAgICAgICAgICAg OjogbAorKyAgaW50ZWdlciAgICAgICAgICAgICAgICAgIDo6IGksIGoKKysKKysgIGFsbG9jYXRl IChvbmV2JWl2bGEgKDExLDIyLDMzKSkgICAgICAgICAhIGJlZm9yZS1hbGxvY2F0ZWQKKysgIGwg PSBhbGxvY2F0ZWQob25ldiVpdmxhKQorKworKyAgb25ldiVpdmxhKDosIDosIDopID0gMQorKyAg b25ldiVpdmxhKDEsIDIsIDMpID0gMTIzCisrICBvbmV2JWl2bGEoMywgMiwgMSkgPSAzMjEKKysK KysgIGFsbG9jYXRlICh0d292JWl2bGExICg1LDEyLDk5KSkgICAgICAgICAhIG9uZXYtZmlsbGVk CisrICBsID0gYWxsb2NhdGVkKHR3b3YlaXZsYTEpCisrICBhbGxvY2F0ZSAodHdvdiVpdmxhMiAo OSwxMikpCisrICBsID0gYWxsb2NhdGVkKHR3b3YlaXZsYTIpCisrCisrICB0d292JWl2bGExKDos IDosIDopID0gMQorKyAgdHdvdiVpdmxhMSgxLCAyLCAzKSA9IDEyMworKyAgdHdvdiVpdmxhMSgz LCAyLCAxKSA9IDMyMQorKworKyAgdHdvdiVpdmxhMig6LCA6KSA9IDEKKysgIHR3b3YlaXZsYTIo MSwgMikgPSAxMgorKyAgdHdvdiVpdmxhMigyLCAxKSA9IDIxCisrCisrICB0aHJlZXYlaXZhciA9 IDMuMTQgICAgICAgICAgICAgICAgICAgICAgISB0d292LWZpbGxlZAorKyAgYWxsb2NhdGUgKHRo cmVldiVpdmxhICgyMCkpCisrICBsID0gYWxsb2NhdGVkKHRocmVldiVpdmxhKQorKworKyAgdGhy ZWV2JWl2bGEoOikgPSAxCisrICB0aHJlZXYlaXZsYSg1KSA9IDQyCisrICB0aHJlZXYlaXZsYSgx NCkgPSAyNAorKworKyAgYWxsb2NhdGUgKGZvdXJ2JWl2bGEgKDEwKSkgICAgICAgICAgICAgISB0 aHJlZXYtZmlsbGVkCisrICBsID0gYWxsb2NhdGVkKGZvdXJ2JWl2bGEpCisrCisrICBmb3VydiVp dmFyID0gMy4xNAorKyAgZm91cnYlaXZsYSg6KSA9IDEKKysgIGZvdXJ2JWl2bGEoMikgPSAyCisr ICBmb3VydiVpdmxhKDcpID0gNworKworKworKyAgYWxsb2NhdGUgKG9uZXZsYSAoMTAsIDEwKSkg ICAgICAgICAgICAgISBmb3Vydi1maWxsZWQKKysgIGRvIGkgPSAxLCAxMAorKyAgICBkbyBqID0g MSwgMTAKKysgICAgICBhbGxvY2F0ZSAob25ldmxhKGksaiklaXZsYSgxMCwxMCwxMCkpCisrICAg ICAgbCA9IGFsbG9jYXRlZChvbmV2bGEoaSxqKSVpdmxhKQorKworKyAgICAgIG9uZXZsYShpLGop JWl2bGEoMywgNiwgOSkgPSAzNjkKKysgICAgICBvbmV2bGEoaSxqKSVpdmxhKDksIDMsIDYpID0g OTM2CisrICAgIGVuZCBkbworKyAgZW5kIGRvCisrCisrICBhbGxvY2F0ZSAoZml2ZXYldG9uZSVp dmxhICgxMCwgMTAsIDEwKSkgICAgICAgICAhIG9uZXZsYS1maWxsZWQKKysgIGwgPSBhbGxvY2F0 ZWQoZml2ZXYldG9uZSVpdmxhKQorKyAgZml2ZXYldG9uZSVpdmxhKDosIDosIDopID0gMQorKyAg Zml2ZXYldG9uZSVpdmxhKDEsIDIsIDMpID0gMTIzCisrICBmaXZldiV0b25lJWl2bGEoMywgMiwg MSkgPSAzMjEKKysKKysKKysgIG9uZXYlaXZsYSg6LDosOikgPSAyICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEgZml2ZXYtZmlsbGVkCisrICBvbmVwID0+IG9uZXYKKysKKysgICEgZHVtbXkg c3RhdGVtZW50IGZvciBicAorKyAgbCA9IGFsbG9jYXRlZChmaXZldiV0b25lJWl2bGEpICAgICAg ICAgICAgICAgICAgISBvbmVwLWFzc29jaWF0ZWQKKytlbmQgcHJvZ3JhbSB2bGFfc3RydWN0Cist LSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMTRvZjIzLnBhdGNoIGIv Z2RiLXZsYS1pbnRlbC0xNG9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uNjVkZDhmNAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMTRvZjIzLnBh dGNoCkBAIC0wLDAgKzEsMTcyIEBACitTdWJqZWN0OiBbUEFUQ0ggMTQvMjNdIHRlc3Q6IGV2YWx1 YXRlIGR5bmFtaWMgYXJyYXlzIHVzaW5nIEZvcnRyYW4gcHJpbWl0aXZlcy4KK01lc3NhZ2UtSWQ6 IDwxNDAxODYxMjY2LTYyNDAtMTUtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29t PgorCitUZXN0cyBlbnN1cmUgdGhhdCBGb3J0cmFuIHByaW1pdGl2ZXMgY2FuIGJlIGV2YWx1YXRl ZAorY29ycmVjdGx5IHdoZW4gdXNlZCBhcyBhIGR5bmFtaWMgYXJyYXkuCisKKzIwMTQtMDUtMjgg IEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1p ciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRlbC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi86CisKKwkqIHZsYS1kYXRhdHlwZXMuZjkwOiBOZXcgZmlsZS4KKwkqIHZsYS1kYXRhdHlw ZXMuZXhwOiBOZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJOGU4MmZhMzgzM2Q3N2JmZDdlOWI0YmRj NDBlM2Y5NmNlNWU3MmRhMgorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9l bGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5 cGVzLmV4cCB8ICAgODIgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmY5MCB8ICAgNTEgKysrKysrKysrKysrKysrKysK KyAyIGZpbGVzIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0 IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAKKyBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmY5MAorCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZGF0YXR5cGVzLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWRhdGF0eXBlcy5leHAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yMDI3NmQ2CistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZXhwCitAQCAtMCwwICsxLDgy IEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysj CisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5m OTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0 ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0 dXJuIC0xCisrfQorKworKyMgY2hlY2sgdGhhdCBhbGwgZm9ydHJhbiBzdGFuZGFyZCBkYXRhdHlw ZXMgd2lsbCBiZQorKyMgaGFuZGxlZCBjb3JyZWN0bHkgd2hlbiB1c2luZyBhcyBWTEEncworKwor K2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8g YnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGFzLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZsYXMtYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJuZXh0IiAiID0gYWxsb2Nh dGVkXFxcKHJlYWx2bGFcXFwpIiBcCisrICAibmV4dCB0byBhbGxvY2F0aW9uIHN0YXR1cyBvZiBp bnR2bGEiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiAiaW50dmxhIGFsbG9j YXRlZCIKKytnZGJfdGVzdCAibmV4dCIgIiA9IGFsbG9jYXRlZFxcXChjb21wbGV4dmxhXFxcKSIg XAorKyAgIm5leHQgdG8gYWxsb2NhdGlvbiBzdGF0dXMgb2YgcmVhbHZsYSIKKytnZGJfdGVzdCAi cHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iICJyZWFsdmxhIGFsbG9jYXRlZCIKKytnZGJfdGVzdCAi bmV4dCIgIiA9IGFsbG9jYXRlZFxcXChsb2dpY2FsdmxhXFxcKSIgXAorKyAgIm5leHQgdG8gYWxs b2NhdGlvbiBzdGF0dXMgb2YgY29tcGxleHZsYSIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxc LlRSVUVcXC4iICJjb21wbGV4dmxhIGFsbG9jYXRlZCIKKytnZGJfdGVzdCAibmV4dCIgIiA9IGFs bG9jYXRlZFxcXChjaGFyYWN0ZXJ2bGFcXFwpIiBcCisrICAibmV4dCB0byBhbGxvY2F0aW9uIHN0 YXR1cyBvZiBsb2dpY2FsdmxhIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxcLiIg ImxvZ2ljYWx2bGEgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJuZXh0IiAiaW50dmxhXFxcKDosOiw6 XFxcKSA9IDEiIFwKKysgICJuZXh0IHRvIGFsbG9jYXRpb24gc3RhdHVzIG9mIGNoYXJhY3RlcnZs YSIKKytnZGJfdGVzdCAicHJpbnQgbCIgIiA9IFxcLlRSVUVcXC4iICJjaGFyYWN0ZXJ2bGEgYWxs b2NhdGVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGFzLWlu aXRpYWxpemVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhcy1pbml0aWFsaXpl ZCIKKytnZGJfdGVzdCAicHR5cGUgaW50dmxhIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxc KSBcXFwoMTEsMjIsMzNcXFwpIiBcCisrICAicHR5cGUgaW50dmxhIgorK2dkYl90ZXN0ICJwdHlw ZSByZWFsdmxhIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoMTEsMjIsMzNcXFwpIiBc CisrICAicHR5cGUgcmVhbHZsYSIKKytnZGJfdGVzdCAicHR5cGUgY29tcGxleHZsYSIgInR5cGUg PSBjb21wbGV4XFxcKGtpbmQ9NFxcXCkgXFxcKDExLDIyLDMzXFxcKSIgXAorKyAgInB0eXBlIGNv bXBsZXh2bGEiCisrZ2RiX3Rlc3QgInB0eXBlIGxvZ2ljYWx2bGEiICJ0eXBlID0gbG9naWNhbFxc XChraW5kPTRcXFwpIFxcXCgxMSwyMiwzM1xcXCkiIFwKKysgICJwdHlwZSBsb2dpY2FsdmxhIgor K2dkYl90ZXN0ICJwdHlwZSBjaGFyYWN0ZXJ2bGEiICJ0eXBlID0gY2hhcmFjdGVyXFxcKjEgXFxc KDExLDIyLDMzXFxcKSIgXAorKyAgInB0eXBlIGNoYXJhY3RlcnZsYSIKKysKKytnZGJfdGVzdCAi cHJpbnQgaW50dmxhKDUsNSw1KSIgIiA9IDEiICJwcmludCBpbnR2bGEoNSw1LDUpICgxc3QpIgor K2dkYl90ZXN0ICJwcmludCByZWFsdmxhKDUsNSw1KSIgIiA9IDMuMTRcXGQrIiBcCisrICAicHJp bnQgcmVhbHZsYSg1LDUsNSkgKDFzdCkiCisrZ2RiX3Rlc3QgInByaW50IGNvbXBsZXh2bGEoNSw1 LDUpIiAiID0gXFxcKDIsLTNcXFwpIiBcCisrICAicHJpbnQgY29tcGxleHZsYSg1LDUsNSkgKDFz dCkiCisrZ2RiX3Rlc3QgInByaW50IGxvZ2ljYWx2bGEoNSw1LDUpIiAiID0gXFwuVFJVRVxcLiIg XAorKyAgInByaW50IGxvZ2ljYWx2bGEoNSw1LDUpICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBj aGFyYWN0ZXJ2bGEoNSw1LDUpIiAiID0gJ0snIiBcCisrICAicHJpbnQgY2hhcmFjdGVydmxhKDUs NSw1KSAoMXN0KSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxh cy1tb2RpZmllZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYXMtbW9kaWZpZWQi CisrZ2RiX3Rlc3QgInByaW50IGludHZsYSg1LDUsNSkiICIgPSA0MiIgInByaW50IGludHZsYSg1 LDUsNSkgKDJuZCkiCisrZ2RiX3Rlc3QgInByaW50IHJlYWx2bGEoNSw1LDUpIiAiID0gNC4xM1xc ZCsiIFwKKysgICJwcmludCByZWFsdmxhKDUsNSw1KSAoMm5kKSIKKytnZGJfdGVzdCAicHJpbnQg Y29tcGxleHZsYSg1LDUsNSkiICIgPSBcXFwoLTMsMlxcXCkiIFwKKysgICJwcmludCBjb21wbGV4 dmxhKDUsNSw1KSAoMm5kKSIKKytnZGJfdGVzdCAicHJpbnQgbG9naWNhbHZsYSg1LDUsNSkiICIg PSBcXC5GQUxTRVxcLiIgXAorKyAgInByaW50IGxvZ2ljYWx2bGEoNSw1LDUpICgybmQpIgorK2dk Yl90ZXN0ICJwcmludCBjaGFyYWN0ZXJ2bGEoNSw1LDUpIiAiID0gJ1gnIiBcCisrICAicHJpbnQg Y2hhcmFjdGVydmxhKDUsNSw1KSAoMm5kKSIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3ZsYS1kYXRhdHlwZXMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtZGF0YXR5cGVzLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmIx MTg3OWEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LWRhdGF0eXBlcy5mOTAKK0BAIC0wLDAgKzEsNTEgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZv dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAw MjExMS0xMzA3LCBVU0EuCisrCisrcHJvZ3JhbSB2bGFfcHJpbWl0aXZlcworKyAgaW50ZWdlciwg YWxsb2NhdGFibGUgICAgOjogaW50dmxhKDosIDosIDopCisrICByZWFsLCBhbGxvY2F0YWJsZSAg ICAgICA6OiByZWFsdmxhKDosIDosIDopCisrICBjb21wbGV4LCBhbGxvY2F0YWJsZSAgICA6OiBj b21wbGV4dmxhKDosIDosIDopCisrICBsb2dpY2FsLCBhbGxvY2F0YWJsZSAgICA6OiBsb2dpY2Fs dmxhKDosIDosIDopCisrICBjaGFyYWN0ZXIsIGFsbG9jYXRhYmxlICA6OiBjaGFyYWN0ZXJ2bGEo OiwgOiwgOikKKysgIGxvZ2ljYWwgICAgICAgICAgICAgICAgIDo6IGwKKysKKysgIGFsbG9jYXRl IChpbnR2bGEgKDExLDIyLDMzKSkKKysgIGFsbG9jYXRlIChyZWFsdmxhICgxMSwyMiwzMykpCisr ICBhbGxvY2F0ZSAoY29tcGxleHZsYSAoMTEsMjIsMzMpKQorKyAgYWxsb2NhdGUgKGxvZ2ljYWx2 bGEgKDExLDIyLDMzKSkKKysgIGFsbG9jYXRlIChjaGFyYWN0ZXJ2bGEgKDExLDIyLDMzKSkKKysK KysgIGwgPSBhbGxvY2F0ZWQoaW50dmxhKSAgICAgICAgICAgICAgICAgICAhIHZsYXMtYWxsb2Nh dGVkCisrICBsID0gYWxsb2NhdGVkKHJlYWx2bGEpCisrICBsID0gYWxsb2NhdGVkKGNvbXBsZXh2 bGEpCisrICBsID0gYWxsb2NhdGVkKGxvZ2ljYWx2bGEpCisrICBsID0gYWxsb2NhdGVkKGNoYXJh Y3RlcnZsYSkKKysKKysgIGludHZsYSg6LDosOikgPSAxCisrICByZWFsdmxhKDosOiw6KSA9IDMu MTQKKysgIGNvbXBsZXh2bGEoOiw6LDopID0gY21wbHgoMi4wLC0zLjApCisrICBsb2dpY2Fsdmxh KDosOiw6KSA9IC5UUlVFLgorKyAgY2hhcmFjdGVydmxhKDosOiw6KSA9IGNoYXIoNzUpCisrCisr ICBpbnR2bGEoNSw1LDUpID0gNDIgICAgICAgICAgICAgICAgICAgICAgISB2bGFzLWluaXRpYWxp emVkCisrICByZWFsdmxhKDUsNSw1KSA9IDQuMTMKKysgIGNvbXBsZXh2bGEoNSw1LDUpID0gY21w bHgoLTMuMCwyLjApCisrICBsb2dpY2FsdmxhKDUsNSw1KSA9IC5GQUxTRS4KKysgIGNoYXJhY3Rl cnZsYSg1LDUsNSkgPSAnWCcKKysKKysgICEgZHVtbXkgc3RhdGVtZW50IGZvciBicAorKyAgbCA9 IC5GQUxTRS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmxhcy1tb2RpZmllZAorK2Vu ZCBwcm9ncmFtIHZsYV9wcmltaXRpdmVzCistLSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dk Yi12bGEtaW50ZWwtMTVvZjIzLnBhdGNoIGIvZ2RiLXZsYS1pbnRlbC0xNW9mMjMucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ2ZDVhZQotLS0gL2Rldi9udWxsCisr KyBiL2dkYi12bGEtaW50ZWwtMTVvZjIzLnBhdGNoCkBAIC0wLDAgKzEsNDA5IEBACitTdWJqZWN0 OiBbUEFUQ0ggMTUvMjNdIHRlc3Q6IGR5bmFtaWMgYXJyYXlzIHBhc3NlZCB0byBzdWJyb3V0aW5l cy4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMTYtZ2l0LXNlbmQtZW1haWwta2V2ZW4u Ym9lbGxAaW50ZWwuY29tPgorCitUZXN0cyBkeW5hbWljIGFycmF5cyBwYXNzZWQgdG8gc3Vicm91 dGluZXMgYW5kIGhhbmRsZWQKK2luIGRpZmZlcmVudCB3YXlzIGluc2lkZSB0aGUgcm91dGluZS4K KworMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisgICAg ICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVsLmNvbT4KKwordGVz dHN1aXRlL2dkYi5mb3J0cmFuLzoKKworCSogdmxhLXN1Yi5mOTA6IE5ldyBmaWxlLgorCSogdmxh LXB0eXBlLXN1Yi5leHA6IE5ldyBmaWxlLgorCSogdmxhLXZhbHVlLXN1Yi1hcmJpdHJhcnkuZXhw OiBOZXcgZmlsZS4KKwkqIHZsYS12YWx1ZS1zdWItZmluaXNoLmV4cDogTmV3IGZpbGUuCisJKiB2 bGEtdmFsdWUtc3ViLmV4cDogTmV3IGZpbGUuCisKK0NoYW5nZS1JZDogSTc2ZGI5NTBmYmFjYmYx NWIxZjVlODg3YmZkMTY0ZWI4Zjg1YzU1ZDEKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4gQm9lbGwg PGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXB0eXBlLXN1Yi5leHAgICAgICAgIHwgICA4NyArKysrKysrKysrKysrKysrKysrCisgZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3ViLmY5MCAgICAgICAgICAgICAgfCAgIDgyICsr KysrKysrKysrKysrKysrKworIC4uLi9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWFyYml0cmFy eS5leHAgICAgICAgIHwgICAzNSArKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXZhbHVlLXN1Yi1maW5pc2guZXhwIHwgICA0OSArKysrKysrKysrKworIGdkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi5leHAgICAgICAgIHwgICA5MCArKysrKysrKysr KysrKysrKysrKworIDUgZmlsZXMgY2hhbmdlZCwgMzQzIGluc2VydGlvbnMoKykKKyBjcmVhdGUg bW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUtc3ViLmV4cAor IGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdWIuZjkw CisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVl LXN1Yi1hcmJpdHJhcnkuZXhwCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1maW5pc2guZXhwCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi5leHAKKworZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXB0eXBlLXN1Yi5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS1zdWIuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uMmVlMjkxNAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUtc3ViLmV4cAorQEAgLTAsMCArMSw4NyBAQAorKyMgQ29w eXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEtc3ViLmY5MCIK KysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxl fSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4g LTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBQ YXNzIGZpeGVkIGFycmF5IHRvIGZ1bmN0aW9uIGFuZCBoYW5kbGUgdGhlbSBhcyB2bGEgaW4gZnVu Y3Rpb24uCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm5vdC1maWxsZWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVkICgxc3QpIgorK2dkYl90 ZXN0ICJwdHlwZSBhcnJheTEiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCg0Miw0 MlxcXCkiIFwKKysgICJwdHlwZSBhcnJheTEgKHBhc3NlZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0 eXBlIGFycmF5MiIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDQyLDQyLDQyXFxcKSIg XAorKyAgInB0eXBlIGFycmF5MiAocGFzc2VkIGZpeGVkKSIKKytnZGJfdGVzdCAicHR5cGUgYXJy YXkxKDQwLCAxMCkiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUg YXJyYXkxKDQwLCAxMCkgKHBhc3NlZCBmaXhlZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5Migx MywgMTEsIDUpIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5 MigxMywgMTEsIDUpIChwYXNzZWQgZml4ZWQpIgorKworKyMgUGFzcyBzdWIgYXJyYXlzIHRvIGZ1 bmN0aW9uIGFuZCBoYW5kbGUgdGhlbSBhcyB2bGEgaW4gZnVuY3Rpb24uCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgIm5vdC1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInB0eXBlIGFycmF5 MSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkgXFxcKDYsNlxcXCkiIFwKKysgICJwdHlw ZSBhcnJheTEgKHBhc3NlZCBzdWItYXJyYXkpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0 eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCg2LDYsNlxcXCkiIFwKKysgICJwdHlwZSBhcnJh eTIgKHBhc3NlZCBzdWItYXJyYXkpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0 eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChw YXNzZWQgc3ViLWFycmF5KSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlw ZSA9IHJlYWxcXFwoa2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5Mig0LCA0LCA0KSAocGFz c2VkIHN1Yi1hcnJheSkiCisrCisrIyBDaGVjayBwdHlwZSBvdXRzaWRlIG9mIGJvdW5kcy4gVGhp cyBzaG91bGQgbm90IGNyYXNoIEdEQi4KKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCwgMTAw KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwKKysgICJwdHlwZSBhcnJheTEoMTAwLCAxMDAp IHN1YmFycmF5IGRvIG5vdCBjcmFzaCAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInB0 eXBlIGFycmF5MigxMDAsIDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiIFwKKysg ICJwdHlwZSBhcnJheTIoMTAwLCAxMDAsIDEwMCkgc3ViYXJyYXkgZG8gbm90IGNyYXNoIChwYXNz ZWQgc3ViLWFycmF5KSIKKysKKysjIFBhc3MgdmxhIHRvIGZ1bmN0aW9uLgorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJub3QtZmlsbGVkICgzcmQpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJh eTEiICJ0eXBlID0gaW50ZWdlclxcXChraW5kPTRcXFwpIFxcXCgyMCwyMFxcXCkiIFwKKysgICJw dHlwZSBhcnJheTEgKHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiICJ0eXBl ID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXCkiIFwKKysgICJwdHlwZSBhcnJh eTIgKHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTEoMywgMykiICJ0eXBlID0g aW50ZWdlclxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgYXJyYXkxKDMsIDMpIChwYXNzZWQg dmxhKSIKKytnZGJfdGVzdCAicHR5cGUgYXJyYXkyKDQsIDQsIDQpIiAidHlwZSA9IHJlYWxcXFwo a2luZD00XFxcKSIgXAorKyAgInB0eXBlIGFycmF5Mig0LCA0LCA0KSAocGFzc2VkIHZsYSkiCisr CisrIyBDaGVjayBwdHlwZSBvdXRzaWRlIG9mIGJvdW5kcy4gVGhpcyBzaG91bGQgbm90IGNyYXNo IEdEQi4KKytnZGJfdGVzdCAicHR5cGUgYXJyYXkxKDEwMCwgMTAwKSIgIm5vIHN1Y2ggdmVjdG9y IGVsZW1lbnQiIFwKKysgICJwdHlwZSBhcnJheTEoMTAwLCAxMDApIFZMQSBkbyBub3QgY3Jhc2gg KHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIoMTAwLCAxMDAsIDEwMCkiICJu byBzdWNoIHZlY3RvciBlbGVtZW50IiBcCisrICAicHR5cGUgYXJyYXkyKDEwMCwgMTAwLCAxMDAp IFZMQSBkbyBub3QgY3Jhc2ggKHBhc3NlZCB2bGEpIgorKworKyMgUGFzcyBmaXhlZCBhcnJheSB0 byBmdW5jdGlvbiBhbmQgaGFuZGxlIGl0IGFzIFZMQSBvZiBhcmJpdHJhcnkgbGVuZ3RoIGluCisr IyBmdW5jdGlvbi4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZW5kLW9m LWJhciJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImVuZC1vZi1iYXIiCisrZ2RiX3Rl c3QgInB0eXBlIGFycmF5MSIgXAorKyAgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCApP2ludGVnZXIo XFwoa2luZD00XFwpfFxcKjQpIFxcKFxcKlxcKVxcKT8iIFwKKysgICJwdHlwZSBhcnJheTEgKGFy Yml0cmFyeSBsZW5ndGgpIgorK2dkYl90ZXN0ICJwdHlwZSBhcnJheTIiIFwKKysgICJ0eXBlID0g KFBUUiBUTyAtPiBcXCggKT9pbnRlZ2VyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg0OjksMTA6XFwq XFwpXFwpPyIgXAorKyAgInB0eXBlIGFycmF5MiAoYXJiaXRyYXJ5IGxlbmd0aCkiCisrZ2RiX3Rl c3QgInB0eXBlIGFycmF5MSgxMDApIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSIgXAor KyAgInB0eXBlIGFycmF5MSgxMDApIChhcmJpdHJhcnkgbGVuZ3RoKSIKKytnZGJfdGVzdCAicHR5 cGUgYXJyYXkyKDQsMTAwKSIgInR5cGUgPSBpbnRlZ2VyXFxcKGtpbmQ9NFxcXCkiIFwKKysgICJw dHlwZSBhcnJheTIoNCwxMDApIChhcmJpdHJhcnkgbGVuZ3RoKSIKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdWIuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi92bGEtc3ViLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjhj MmM5ZmYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxh LXN1Yi5mOTAKK0BAIC0wLDAgKzEsODIgQEAKKyshIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUg TGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIQor KyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuCisrIQorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsg PGpha3ViQHJlZGhhdC5jb20+IGFuZAorKyEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2VzIGJ5IEtldmVu IEJvZWxsIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+LgorKworK3N1YnJvdXRpbmUgZm9vIChhcnJh eTEsIGFycmF5MikKKysgIGludGVnZXIgOjogYXJyYXkxICg6LCA6KQorKyAgcmVhbCAgICA6OiBh cnJheTIgKDosIDosIDopCisrCisrICBhcnJheTEoOiw6KSA9IDUgICAgICAgICAgICAgICAgICAg ICAgICEgbm90LWZpbGxlZAorKyAgYXJyYXkxKDEsIDEpID0gMzAKKysKKysgIGFycmF5Mig6LDos OikgPSA2ICAgICAgICAgICAgICAgICAgICAgISBhcnJheTEtZmlsbGVkCisrICBhcnJheTIoOiw6 LDopID0gMworKyAgYXJyYXkyKDEsMSwxKSA9IDMwCisrICBhcnJheTIoMywzLDMpID0gOTAgICAg ICAgICAgICAgICAgICAgICEgYXJyYXkyLWFsbW9zdC1maWxsZWQKKytlbmQgc3Vicm91dGluZQor KworK3N1YnJvdXRpbmUgYmFyIChhcnJheTEsIGFycmF5MikKKysgIGludGVnZXIgOjogYXJyYXkx ICgqKQorKyAgaW50ZWdlciA6OiBhcnJheTIgKDQ6OSwgMTA6KikKKysKKysgIGFycmF5MSg1OjEw KSA9IDEzMTEKKysgIGFycmF5MSg3KSA9IDEKKysgIGFycmF5MSgxMDApID0gMTAwCisrICBhcnJh eTIoNCwxMCkgPSBhcnJheTEoNykKKysgIGFycmF5Mig0LDEwMCkgPSBhcnJheTEoNykKKysgIHJl dHVybiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISBlbmQtb2YtYmFyCisrZW5kIHN1 YnJvdXRpbmUKKysKKytwcm9ncmFtIHZsYV9zdWIKKysgIGludGVyZmFjZQorKyAgICBzdWJyb3V0 aW5lIGZvbyAoYXJyYXkxLCBhcnJheTIpCisrICAgICAgaW50ZWdlciA6OiBhcnJheTEgKDosIDop CisrICAgICAgcmVhbCA6OiBhcnJheTIgKDosIDosIDopCisrICAgIGVuZCBzdWJyb3V0aW5lCisr ICBlbmQgaW50ZXJmYWNlCisrICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBiYXIgKGFycmF5 MSwgYXJyYXkyKQorKyAgICAgIGludGVnZXIgOjogYXJyYXkxICgqKQorKyAgICAgIGludGVnZXIg OjogYXJyYXkyICg0OjksIDEwOiopCisrICAgIGVuZCBzdWJyb3V0aW5lCisrICBlbmQgaW50ZXJm YWNlCisrCisrICByZWFsLCBhbGxvY2F0YWJsZSA6OiB2bGExICg6LCA6LCA6KQorKyAgaW50ZWdl ciwgYWxsb2NhdGFibGUgOjogdmxhMiAoOiwgOikKKysKKysgICEgdXNlZCBmb3Igc3Vicm91dGlu ZQorKyAgaW50ZWdlciA6OiBzdWJfYXJyMSg0MiwgNDIpCisrICByZWFsICAgIDo6IHN1Yl9hcnIy KDQyLCA0MiwgNDIpCisrICBpbnRlZ2VyIDo6IHN1Yl9hcnIzKDQyKQorKworKyAgc3ViX2FycjEo Oiw6KSA9IDEgICAgICAgICAgICAgICAgICAgISB2bGEyLWRlYWxsb2NhdGVkCisrICBzdWJfYXJy Mig6LDosOikgPSAyCisrICBzdWJfYXJyMyg6KSA9IDMKKysKKysgIGNhbGwgZm9vKHN1Yl9hcnIx LCBzdWJfYXJyMikKKysgIGNhbGwgZm9vKHN1Yl9hcnIxKDU6MTAsIDU6MTApLCBzdWJfYXJyMigx MDoxNSwxMDoxNSwxMDoxNSkpCisrCisrICBhbGxvY2F0ZSAodmxhMSAoMTAsMTAsMTApKQorKyAg YWxsb2NhdGUgKHZsYTIgKDIwLDIwKSkKKysgIHZsYTEoOiw6LDopID0gMTMxMQorKyAgdmxhMig6 LDopID0gNDIKKysgIGNhbGwgZm9vKHZsYTIsIHZsYTEpCisrCisrICBjYWxsIGJhcihzdWJfYXJy Mywgc3ViX2FycjEpCisrZW5kIHByb2dyYW0gdmxhX3N1YgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1hcmJpdHJhcnkuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWFyYml0cmFyeS5leHAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mZDExYWRiCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItYXJiaXRyYXJ5LmV4cAorQEAg LTAsMCArMSwzNSBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rl c3RmaWxlICJ2bGEtc3ViLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWll dH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4g eworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAg Y29udGludWUKKyt9CisrCisrIyBDaGVjayBWTEEgd2l0aCBhcmJpdGFyeSBsZW5ndGggYW5kIGNo ZWNrIHRoYXQgZWxlbWVudHMgb3V0c2lkZSBvZgorKyMgYm91bmRzIG9mIHRoZSBwYXNzZWQgVkxB IGNhbiBiZSBhY2Nlc3NlZCBjb3JyZWN0bHkuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgImVuZC1vZi1iYXIiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJlbmQt b2YtYmFyIgorK2dkYl90ZXN0ICJwIGFycmF5MSg0MikiICIgPSAzIiAicHJpbnQgYXJiaXRhcnkg YXJyYXkxKDQyKSIKKytnZGJfdGVzdCAicCBhcnJheTEoMTAwKSIgIiA9IDEwMCIgInByaW50IGFy Yml0YXJ5IGFycmF5MSgxMDApIgorK2dkYl90ZXN0ICJwIGFycmF5Mig0LDEwKSIgIiA9IDEiICJw cmludCBhcmJpdGFyeSBhcnJheTIoNCwxMCkiCisrZ2RiX3Rlc3QgInAgYXJyYXkyKDQsMTAwKSIg IiA9IDEiICJwcmludCBhcmJpdGFyeSBhcnJheTIoNCwxMDApIgorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1Yi1maW5pc2guZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUtc3ViLWZpbmlzaC5leHAKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hMTYzNjE3CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS12YWx1ZS1zdWItZmluaXNoLmV4cAorQEAgLTAsMCAr MSw0OSBAQAorKyMgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxl ICJ2bGEtc3ViLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9 LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0g eworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAg ICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGlu dWUKKyt9CisrCisrIyAidXAiIHdvcmtzIHdpdGggR0NDIGJ1dCBvdGhlciBGb3J0cmFuIGNvbXBp bGVycyBtYXkgY29weSB0aGUgdmFsdWVzIGludG8gdGhlCisrIyBvdXRlciBmdW5jdGlvbiBvbmx5 IG9uIHRoZSBleGl0IG9mIHRoZSBpbm5lciBmdW5jdGlvbi4KKysjIFdlIG5lZWQgYm90aCB2YXJp YW50cyBhcyBkZXBlbmRpbmcgb24gdGhlIGFyY2ggd2Ugb3B0aW9uYWxseSBtYXkgc3RpbGwgYmUK KysjIGV4ZWN1dGluZyB0aGUgY2FsbGVyIGxpbmUgb3Igbm90IGFmdGVyIGBmaW5pc2gnLgorKwor K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJhcnJheTItYWxtb3N0LWZpbGxl ZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImFycmF5Mi1hbG1vc3QtZmlsbGVkIgor K2dkYl90ZXN0ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjMsICozLFxb KCkzLCAuXF0qXFwpIiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgZmls bGVkIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0gMjAiIFwKKysgICJz ZXQgYXJyYXkoMiwyLDIpIHRvIDIwIGluIHN1YnJvdXRpbmUiCisrZ2RiX3Rlc3QgInByaW50IGFy cmF5MiIgIiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMjAsICozLFxbKCkzLCAuXF0qXFwpIiBcCisr ICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgbW9maWZpZWQgaW4gZGVidWdnZXIi CisrCisrZ2RiX3Rlc3QgImZpbmlzaCIgXAorKyAgIi4qZm9vXFxcKHN1Yl9hcnIxXFxcKDU6MTAs IDU6MTBcXFwpLCBzdWJfYXJyMlxcXCgxMDoxNSwxMDoxNSwxMDoxNVxcXClcXFwpIiBcCisrICAi ZmluaXNoIGZ1bmN0aW9uIgorK2dkYl90ZXN0ICJwIHN1Yl9hcnIxKDUsIDcpIiAiID0gNSIgInN1 Yl9hcnIxKDUsIDcpIGFmdGVyIGZpbmlzaCIKKytnZGJfdGVzdCAicCBzdWJfYXJyMSgxLCAxKSIg IiA9IDMwIiAic3ViX2FycjEoMSwgMSkgYWZ0ZXIgZmluaXNoIgorK2dkYl90ZXN0ICJwIHN1Yl9h cnIyKDEsIDEsIDEpIiAiID0gMzAiICJzdWJfYXJyMigxLCAxLCAxKSBhZnRlciBmaW5pc2giCisr Z2RiX3Rlc3QgInAgc3ViX2FycjIoMiwgMSwgMSkiICIgPSAyMCIgInN1Yl9hcnIyKDIsIDEsIDEp IGFmdGVyIGZpbmlzaCIKKysKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3ZsYS12YWx1ZS1zdWIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdmFsdWUt c3ViLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjg0OGY5ZDcKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXZhbHVlLXN1 Yi5leHAKK0BAIC0wLDAgKzEsOTAgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytz dGFuZGFyZF90ZXN0ZmlsZSAidmxhLXN1Yi5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVz dGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1 ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJ Tl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlO X18iCisrICAgIGNvbnRpbnVlCisrfQorKworKyMgQ2hlY2sgdGhlIHZhbHVlcyBvZiBWTEEncyBp biBzdWJyb3V0aW5lIGNhbiBiZSBldmFsdWF0ZWQgY29ycmVjdGx5CisrCisrIyBUcnkgdG8gYWNj ZXNzIHZhbHVlcyBmcm9tIGEgZml4ZWQgYXJyYXkgaGFuZGxlZCBhcyBWTEEgaW4gc3Vicm91dGlu ZS4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibm90LWZpbGxlZCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm5vdC1maWxsZWQgKDFzdCkiCisrZ2RiX3Rlc3Qg InByaW50IGFycmF5MSIgIiA9IFxcKFxbKCkxLCAuXF0qXFwpIiBcCisrICAicHJpbnQgcGFzc2Vk IGFycmF5MSBpbiBmb28gKHBhc3NlZCBmaXhlZCBhcnJheSkiCisrCisrZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgImFycmF5MS1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19i cmVha3BvaW50ICJhcnJheTEtZmlsbGVkICgxc3QpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTEo NSwgNykiICIgPSA1IiBcCisrICAicHJpbnQgYXJyYXkxKDUsIDcpIGFmdGVyIGZpbGxlZCBpbiBm b28gKHBhc3NlZCBmaXhlZCBhcnJheSkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MSgxLCAxKSIg IiA9IDMwIiBcCisrICAicHJpbnQgYXJyYXkxKDEsIDEpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBh c3NlZCBmaXhlZCBhcnJheSkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgImFycmF5Mi1hbG1vc3QtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi YXJyYXkyLWFsbW9zdC1maWxsZWQgKDFzdCkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MiIgIiA9 IFxcKCAqXFwoICpcXCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpcXCkiIFwKKysgICJwcmludCBh cnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBmaWxsZWQgKHBhc3NlZCBmaXhlZCBhcnJheSkiCisr Z2RiX3Rlc3QgInByaW50IGFycmF5MigyLDEsMSk9MjAiICIgPSAyMCIgXAorKyAgInNldCBhcnJh eSgyLDIsMikgdG8gMjAgaW4gc3Vicm91dGluZSAocGFzc2VkIGZpeGVkIGFycmF5KSIKKytnZGJf dGVzdCAicHJpbnQgYXJyYXkyIiAiID0gXFwoICpcXCggKlxcKCAqMzAsICoyMCwgKjMsXFsoKTMs IC5cXSpcXCkiIFwKKysgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBtb2ZpZmll ZCBpbiBkZWJ1Z2dlciAocGFzc2VkIGZpeGVkIGFycmF5KSIKKysKKysKKysjIFRyeSB0byBhY2Nl c3MgdmFsdWVzIGZyb20gYSBmaXhlZCBzdWItYXJyYXkgaGFuZGxlZCBhcyBWTEEgaW4gc3Vicm91 dGluZS4KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibm90LWZpbGxlZCAoMm5kKSIKKytn ZGJfdGVzdCAicHJpbnQgYXJyYXkxIiAiID0gXFwoXFsoKTUsIC5cXSpcXCkiIFwKKysgICJwcmlu dCBwYXNzZWQgYXJyYXkxIGluIGZvbyAocGFzc2VkIHN1Yi1hcnJheSkiCisrCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgImFycmF5MS1maWxsZWQgKDJuZCkiCisrZ2RiX3Rlc3QgInByaW50 IGFycmF5MSg1LCA1KSIgIiA9IDUiIFwKKysgICJwcmludCBhcnJheTEoNSwgNSkgYWZ0ZXIgZmls bGVkIGluIGZvbyAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3QgInByaW50IGFycmF5MSgx LCAxKSIgIiA9IDMwIiBcCisrICAicHJpbnQgYXJyYXkxKDEsIDEpIGFmdGVyIGZpbGxlZCBpbiBm b28gKHBhc3NlZCBzdWItYXJyYXkpIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJh cnJheTItYWxtb3N0LWZpbGxlZCAoMm5kKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkyIiAiID0g XFwoICpcXCggKlxcKCAqMzAsICozLCAqMyxcWygpMywgLlxdKlxcKSIgXAorKyAgInByaW50IGFy cmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIGZpbGxlZCAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2Ri X3Rlc3QgInByaW50IGFycmF5MigyLDEsMSk9MjAiICIgPSAyMCIgXAorKyAgInNldCBhcnJheSgy LDIsMikgdG8gMjAgaW4gc3Vicm91dGluZSAocGFzc2VkIHN1Yi1hcnJheSkiCisrZ2RiX3Rlc3Qg InByaW50IGFycmF5MiIgIiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMjAsICozLFxbKCkzLCAuXF0q XFwpIiBcCisrICAicHJpbnQgYXJyYXkyIGluIGZvbyBhZnRlciBpdCB3YXMgbW9maWZpZWQgaW4g ZGVidWdnZXIgKHBhc3NlZCBzdWItYXJyYXkpIgorKworKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1 ZXMgZnJvbSBhIFZMQSBwYXNzZWQgdG8gc3Vicm91dGluZS4KKytnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAibm90LWZpbGxlZCAoM3JkKSIKKytnZGJfdGVzdCAicHJpbnQgYXJyYXkxIiAiID0g XFwoXFsoKTQyLCAuXF0qXFwpIiBcCisrICAicHJpbnQgcGFzc2VkIGFycmF5MSBpbiBmb28gKHBh c3NlZCB2bGEpIgorKworK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhcnJheTEtZmlsbGVk ICgzcmQpIgorK2dkYl90ZXN0ICJwcmludCBhcnJheTEoNSwgNSkiICIgPSA1IiBcCisrICAicHJp bnQgYXJyYXkxKDUsIDUpIGFmdGVyIGZpbGxlZCBpbiBmb28gKHBhc3NlZCB2bGEpIgorK2dkYl90 ZXN0ICJwcmludCBhcnJheTEoMSwgMSkiICIgPSAzMCIgXAorKyAgInByaW50IGFycmF5MSgxLCAx KSBhZnRlciBmaWxsZWQgaW4gZm9vIChwYXNzZWQgdmxhKSIKKysKKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiYXJyYXkyLWFsbW9zdC1maWxsZWQgKDNyZCkiCisrZ2RiX3Rlc3QgInByaW50 IGFycmF5MiIgIiA9IFxcKCAqXFwoICpcXCggKjMwLCAqMywgKjMsXFsoKTMsIC5cXSpcXCkiIFwK KysgICJwcmludCBhcnJheTIgaW4gZm9vIGFmdGVyIGl0IHdhcyBmaWxsZWQgKHBhc3NlZCB2bGEp IgorK2dkYl90ZXN0ICJwcmludCBhcnJheTIoMiwxLDEpPTIwIiAiID0gMjAiIFwKKysgICJzZXQg YXJyYXkoMiwyLDIpIHRvIDIwIGluIHN1YnJvdXRpbmUgKHBhc3NlZCB2bGEpIgorK2dkYl90ZXN0 ICJwcmludCBhcnJheTIiICIgPSBcXCggKlxcKCAqXFwoICozMCwgKjIwLCAqMyxcWygpMywgLlxd KlxcKSIgXAorKyAgInByaW50IGFycmF5MiBpbiBmb28gYWZ0ZXIgaXQgd2FzIG1vZmlmaWVkIGlu IGRlYnVnZ2VyIChwYXNzZWQgdmxhKSIKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2Ri LXZsYS1pbnRlbC0xNm9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTE2b2YyMy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGZjYWZhCi0tLSAvZGV2L251bGwKKysr IGIvZ2RiLXZsYS1pbnRlbC0xNm9mMjMucGF0Y2gKQEAgLTAsMCArMSwxMjYgQEAKK1N1YmplY3Q6 IFtQQVRDSCAxNi8yM10gdGVzdDogY29ycmVjdCBwdHlwZSBvZiBkeW5hbWljIGFycmF5cyBpbiBG b3J0cmFuLgorTWVzc2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0xNy1naXQtc2VuZC1lbWFpbC1r ZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKK1Rlc3RzIGVuc3VyZSB0aGF0IHRoZSBwdHlwZSBvZiBk eW5hbWljIGFycmF5cyBpbgorRm9ydHJhbiBjYW4gYmUgcHJpbnRlZCBpbiBHREIgY29ycmVjdGx5 LgorCisyMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKyAg ICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorCit0 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vOgorCisJKiB2bGEtcHR5cGUuZXhwOiBOZXcgZmlsZS4KKwor Q2hhbmdlLUlkOiBJNTA4YTA1MzdiZTdjYWM1NzM5YTI2Mzc4OGJlODliMThlODRkOGY4ZgorCitT aWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisg Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUuZXhwIHwgICA5NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKykK KyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtcHR5cGUu ZXhwCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi45MjY3NzIzCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1wdHlwZS5leHAKK0BAIC0wLDAgKzEsOTYgQEAK KysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSAidmxhLmY5 MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3Rm aWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1 cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNv dWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisr IyBDaGVjayB0aGUgcHR5cGUgb2YgdmFyaW91cyBWTEEgc3RhdGVzIGFuZCBwb2ludGVyIHRvIFZM QSdzLgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWluaXQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWluaXQiCisrZ2RiX3Rlc3QgInB0eXBl IHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmxhMSBub3QgaW5pdGlhbGl6 ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIiICJ0eXBlID0gPG5vdCBhbGxvY2F0ZWQ+IiAicHR5 cGUgdmxhMiBub3QgaW5pdGlhbGl6ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEiICJ0eXBlID0g PG5vdCBhc3NvY2lhdGVkPiIgInB0eXBlIHB2bGEgbm90IGluaXRpYWxpemVkIgorK2dkYl90ZXN0 ICJwdHlwZSB2bGExKDMsIDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5v dCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBpbml0aWFsaXplZCIK KytnZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjApIiBcCisrICAibm8gc3VjaCB2ZWN0b3Ig ZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGExKDUsIDQ1LCAy MCkgbm90IGluaXRpYWxpemVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJ2bGExLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEt YWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IHJlYWxcXFwoa2luZD00 XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCisrICAicHR5cGUgdmxhMSBhbGxvY2F0ZWQiCisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxsb2NhdGVkIl0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0 eXBlIHZsYTIiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCg3LDQyOjUwLDEzOjM1XFxc KSIgXAorKyAgInB0eXBlIHZsYTIgYWxsb2NhdGVkIgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgInZsYTEtZmlsbGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExIiAidHlwZSA9IHJlYWxcXFwo a2luZD00XFxcKSBcXFwoMTAsMTAsMTBcXFwpIiBcCisrICAicHR5cGUgdmxhMSBmaWxsZWQiCisr Z2RiX3Rlc3QgInB0eXBlIHZsYTEoMywgNiwgOSkiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwp IiBcCisrICAicHR5cGUgdmxhMSgzLCA2LCA5KSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAidmxhMi1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50 ICJ2bGEyLWZpbGxlZCIKKytnZGJfdGVzdCAicHR5cGUgdmxhMiIgInR5cGUgPSByZWFsXFxcKGtp bmQ9NFxcXCkgXFxcKDcsNDI6NTAsMTM6MzVcXFwpIiBcCisrICAicHR5cGUgdmxhMiBmaWxsZWQi CisrZ2RiX3Rlc3QgInB0eXBlIHZsYTIoNSwgNDUsIDIwKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9 NFxcXCkiIFwKKysgICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgZmlsbGVkIgorKworK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQiXQorK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2 bGEiICJ0eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIFxcXCgxMCwxMCwxMFxcXCkiIFwKKysgICJw dHlwZSBwdmxhIGFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHB2bGEoMywgNiwgOSkiICJ0 eXBlID0gcmVhbFxcXChraW5kPTRcXFwpIiBcCisrICAicHR5cGUgcHZsYSgzLCA2LCA5KSIKKysK KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1yZS1hc3NvY2lhdGVk Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1yZS1hc3NvY2lhdGVkIgorK2dk Yl90ZXN0ICJwdHlwZSBwdmxhIiAidHlwZSA9IHJlYWxcXFwoa2luZD00XFxcKSBcXFwoNyw0Mjo1 MCwxMzozNVxcXCkiIFwKKysgICJwdHlwZSBwdmxhIHJlLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3Qg InB0eXBlIHZsYTIoNSwgNDUsIDIwKSIgInR5cGUgPSByZWFsXFxcKGtpbmQ9NFxcXCkiIFwKKysg ICJwdHlwZSB2bGExKDUsIDQ1LCAyMCkgcmUtYXNzb2NpYXRlZCIKKysKKytnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAicHZsYS1kZWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJwdmxhLWRlYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgcHZs YSIgInR5cGUgPSA8bm90IGFzc29jaWF0ZWQ+IiAicHR5cGUgcHZsYSBkZWFzc29jaWF0ZWQiCisr Z2RiX3Rlc3QgInB0eXBlIHB2bGEoNSwgNDUsIDIwKSIgXAorKyAgIm5vIHN1Y2ggdmVjdG9yIGVs ZW1lbnQgYmVjYXVzZSBub3QgYXNzb2NpYXRlZCIgXAorKyAgInB0eXBlIHB2bGEoNSwgNDUsIDIw KSBub3QgYXNzb2NpYXRlZCIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAidmxhMS1kZWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEt ZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZsYTEiICJ0eXBlID0gPG5vdCBhbGxvY2F0 ZWQ+IiAicHR5cGUgdmxhMSBub3QgYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGExKDMs IDYsIDkpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwK KysgICJwdHlwZSB2bGExKDMsIDYsIDkpIG5vdCBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItZGVhbGxvY2F0ZWQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJ2bGEyLWRlYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEy IiAidHlwZSA9IDxub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZsYTIgbm90IGFsbG9jYXRlZCIKKytn ZGJfdGVzdCAicHR5cGUgdmxhMig1LCA0NSwgMjApIiBcCisrICAibm8gc3VjaCB2ZWN0b3IgZWxl bWVudCBiZWNhdXNlIG5vdCBhbGxvY2F0ZWQiIFwKKysgICJwdHlwZSB2bGEyKDUsIDQ1LCAyMCkg bm90IGFsbG9jYXRlZCIKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRl bC0xN29mMjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTE3b2YyMy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmExNjMzCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZs YS1pbnRlbC0xN29mMjMucGF0Y2gKQEAgLTAsMCArMSw5NSBAQAorU3ViamVjdDogW1BBVENIIDE3 LzIzXSB0ZXN0OiBldmFsdWF0aW5nIGFsbG9jYXRpb24vYXNzb2NpYXRpb24gc3RhdHVzCitNZXNz YWdlLUlkOiA8MTQwMTg2MTI2Ni02MjQwLTE4LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGlu dGVsLmNvbT4KKworVGVzdHMgZW5zdXJlIHRoYXQgZHluYW1pYyBhcnJheXMgaW4gZGlmZmVyZW50 IHN0YXRlcworKGFsbG9jYXRlZC9hc3NvY2lhdGVkKSBjYW4gYmUgZXZhbHVhdGVkLgorCisyMDE0 LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKyAgICAgICAgICAg IFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorCit0ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vOgorCisJKiB2bGEtYWxsb2MtYXNzb2MuZXhwOiBOZXcgZmlsZS4KKworQ2hh bmdlLUlkOiBJNjk1MDQ3M2MzZjE3MjRlYmY1YzdiMDM3NzA2MTg2YjJjZDZhZjVmMAorCitTaWdu ZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNzb2MuZXhwIHwgICA2NSArKysrKysr KysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKykKKyBj cmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtYWxsb2MtYXNz b2MuZXhwCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1hbGxv Yy1hc3NvYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1hbGxvYy1hc3NvYy5l eHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yMDYwN2MzCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1hbGxvYy1hc3NvYy5l eHAKK0BAIC0wLDAgKzEsNjUgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFu ZGFyZF90ZXN0ZmlsZSAidmxhLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBx dWlldH1dIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRo ZW4geworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysg ICAgY29udGludWUKKyt9CisrCisrIyBDaGVjayB0aGUgYXNzb2NpYXRpb24gc3RhdHVzIG9mIHZh cmlvdXMgdHlwZXMgb2YgVkxBJ3MKKysjIGFuZCBwb2ludGVyIHRvIFZMQSdzLgorK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGExLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAi ID0gXFwuVFJVRVxcLiIgXAorKyAgInByaW50IHZsYTEgYWxsb2NhdGlvbiBzdGF0dXMgKGFsbG9j YXRlZCkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTItYWxs b2NhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1hbGxvY2F0ZWQiCisr Z2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiBcCisrICAicHJpbnQgdmxhMiBhbGxv Y2F0aW9uIHN0YXR1cyAoYWxsb2NhdGVkKSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAicHZsYS1hc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAicHZsYS1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwcmludCBsIiAiID0gXFwuVFJVRVxcLiIg XAorKyAgInByaW50IHB2bGEgYXNzb2NpYXRlZCBzdGF0dXMgKGFzc29jaWF0ZWQpIgorKworK2dk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLXJlLWFzc29jaWF0ZWQiXQor K2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLXJlLWFzc29jaWF0ZWQiCisrZ2RiX3Rl c3QgInByaW50IGwiICIgPSBcXC5UUlVFXFwuIiBcCisrICAicHJpbnQgcHZsYSBhc3NvY2lhdGVk IHN0YXR1cyAocmUtYXNzb2NpYXRlZCkiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInB2bGEtZGVhc3NvY2lhdGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAicHZsYS1kZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSBcXC5GQUxTRVxc LiIgXAorKyAgInByaW50IHB2bGEgYWxsb2NhdGlvbiBzdGF0dXMgKGRlYXNzb2NpYXRlZCkiCisr CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZGVhbGxvY2F0ZWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWRlYWxsb2NhdGVkIgorK2dkYl90 ZXN0ICJwcmludCBsIiAiID0gXFwuRkFMU0VcXC4iIFwKKysgICJwcmludCB2bGExIGFsbG9jYXRp b24gc3RhdHVzIChkZWFsbG9jYXRlZCkiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEiICIgPSA8bm90 IGFsbG9jYXRlZD4iIFwKKysgICJwcmludCBkZWFsbG9jYXRlZCB2bGExIgorKworK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWRlYWxsb2NhdGVkIl0KKytnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidmxhMi1kZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQg bCIgIiA9IFxcLkZBTFNFXFwuIiAicHJpbnQgdmxhMiBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAi cHJpbnQgdmxhMiIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInByaW50IGRlYWxsb2NhdGVkIHZsYTIi CistLSAKKzEuNy45LjUKKwoKZGlmZiAtLWdpdCBhL2dkYi12bGEtaW50ZWwtMThvZjIzLnBhdGNo IGIvZ2RiLXZsYS1pbnRlbC0xOG9mMjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZWU1YjMyZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi12bGEtaW50ZWwtMThvZjIz LnBhdGNoCkBAIC0wLDAgKzEsMTcxIEBACitTdWJqZWN0OiBbUEFUQ0ggMTgvMjNdIHRlc3Q6IGR5 bmFtaWMgYXJyYXlzIHBhc3NlZCB0byBmdW5jdGlvbnMuCitNZXNzYWdlLUlkOiA8MTQwMTg2MTI2 Ni02MjQwLTE5LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKworVGVzdHMg Zm9yIGR5bmFtaWMgYXJyYXlzIHBhc3NlZCB0byBmdW5jdGlvbnMKK2FuZCByZXR1cm5lZCBmcm9t IGZ1bmN0aW9ucy4KKworMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRl bC5jb20+CisgICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdvdmljQGludGVs LmNvbT4KKwordGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKKworCSogdmxhLWZ1bmMuZjkwOiBOZXcg ZmlsZS4KKwkqIHZsYS1mdW5jLmV4cDogTmV3IGZpbGUuCisKK0NoYW5nZS1JZDogSWMzZWIyMTJm MzVmNTk5ZTRjMTBhMjg0YzIzMTI1NDkxNjUzYjE3ZGYKKworU2lnbmVkLW9mZi1ieTogS2V2ZW4g Qm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vdmxhLWZ1bmMuZXhwIHwgICA2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBn ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmY5MCB8ICAgNzEgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRpb25zKCsp CisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMu ZXhwCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1 bmMuZjkwCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1mdW5j LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjBmMjM2YgorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5leHAKK0BAIC0wLDAgKzEsNjEgQEAK KysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSAiLmY5MCIK KysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxl fSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1dIH0geworKyAgICByZXR1cm4g LTEKKyt9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisrIyBD aGVjayBWTEEgcGFzc2VkIHRvIGZpcnN0IEZvcnRyYW4gZnVuY3Rpb24uCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZ1bmMxLXZsYS1wYXNzZWQiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJmdW5jMS12bGEtcGFzc2VkIgorK2dkYl90ZXN0ICJwcmludCB2bGEi ICIgPSBcXCggKlxcKCAqMjIsICoyMiwgKjIyLFxbKCkyMiwgLlxdKlxcKSIgXAorKyAgInByaW50 IHZsYSAoZnVuYzEpIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEiICJ0eXBlID0gaW50ZWdlclxcXChr aW5kPTRcXFwpIFxcXCgxMCwxMFxcXCkiIFwKKysgICJwdHlwZSB2bGEgKGZ1bmMxKSIKKysKKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzEtdmxhLW1vZGlmaWVkIl0K KytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzEtdmxhLW1vZGlmaWVkIgorK2dkYl90 ZXN0ICJwcmludCB2bGEoNSw1KSIgIiA9IDU1IiAicHJpbnQgdmxhKDUsNSkgKGZ1bmMxKSIKKytn ZGJfdGVzdCAicHJpbnQgdmxhKDcsNykiICIgPSA3NyIgInByaW50IHZsYSg1LDUpIChmdW5jMSki CisrCisrIyBDaGVjayBpZiB0aGUgdmFsdWVzIGFyZSBjb3JyZWN0IGFmdGVyIHJldHVybmluZyBm cm9tIGZ1bmMxCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImZ1bmMxLXJl dHVybmVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiZnVuYzEtcmV0dXJuZWQiCisr Z2RiX3Rlc3QgInByaW50IHJldCIgIiA9IC5UUlVFLiIgInByaW50IHJldCBhZnRlciBmdW5jMSBy ZXR1cm5lZCIKKysKKysjIENoZWNrIFZMQSBwYXNzZWQgdG8gc2Vjb25kIEZvcnRyYW4gZnVuY3Rp b24KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZnVuYzItdmxhLXBhc3Nl ZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImZ1bmMyLXZsYS1wYXNzZWQiCisrZ2Ri X3Rlc3QgInByaW50IHZsYSIgXAorKyAgIiA9IFxcXCg0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0 NCwgNDQsIDQ0LCA0NFxcXCkiIFwKKysgICJwcmludCB2bGEgKGZ1bmMyKSIKKytnZGJfdGVzdCAi cHR5cGUgdmxhIiAidHlwZSA9IGludGVnZXJcXFwoa2luZD00XFxcKSBcXFwoMTBcXFwpIiBcCisr ICAicHR5cGUgdmxhIChmdW5jMikiCisrCisrIyBDaGVjayBpZiB0aGUgcmV0dXJuZWQgVkxBIGhh cyB0aGUgY29ycmVjdCB2YWx1ZXMgYW5kIHB0eXBlLgorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJmdW5jMi1yZXR1cm5lZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImZ1bmMyLXJldHVybmVkIgorK2dkYl90ZXN0ICJwcmludCB2bGEzIiAiID0gXFxcKDEsIDIs IDQ0LCA0LCA0NCwgNDQsIDQ0LCA4LCA0NCwgNDRcXFwpIiBcCisrICAicHJpbnQgdmxhMyAoYWZ0 ZXIgZnVuYzIpIgorK2dkYl90ZXN0ICJwdHlwZSB2bGEzIiAidHlwZSA9IGludGVnZXJcXFwoa2lu ZD00XFxcKSBcXFwoMTBcXFwpIiBcCisrICAicHR5cGUgdmxhMyAoYWZ0ZXIgZnVuYzIpIgorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWZ1bmMuZjkwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtZnVuYy5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi40ZjQ1ZGExCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1mdW5jLmY5MAorQEAgLTAsMCArMSw3MSBAQAorKyEgQ29weXJpZ2h0 IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr ISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKysKKytsb2dpY2FsIGZ1bmN0aW9uIGZ1bmMxICh2 bGEpCisrICBpbXBsaWNpdCBub25lCisrICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGEgKDos IDopCisrICBmdW5jMSA9IGFsbG9jYXRlZCh2bGEpCisrICB2bGEoNSw1KSA9IDU1ICAgICAgICAg ICAgICAgISBmdW5jMS12bGEtcGFzc2VkCisrICB2bGEoNyw3KSA9IDc3CisrICByZXR1cm4gICAg ICAgICAgICAgICAgICAgICAgISBmdW5jMS12bGEtbW9kaWZpZWQKKytlbmQgZnVuY3Rpb24gZnVu YzEKKysKKytmdW5jdGlvbiBmdW5jMih2bGEpCisrICBpbXBsaWNpdCBub25lCisrICBpbnRlZ2Vy IDo6IHZsYSAoOikKKysgIGludGVnZXIgOjogZnVuYzIoc2l6ZSh2bGEpKQorKyAgaW50ZWdlciA6 OiBrCisrCisrICB2bGEoMSkgPSAxICAgICAgICAgICAgICAgICAgICAhIGZ1bmMyLXZsYS1wYXNz ZWQKKysgIHZsYSgyKSA9IDIKKysgIHZsYSg0KSA9IDQKKysgIHZsYSg4KSA9IDgKKysKKysgIGZ1 bmMyID0gdmxhCisrZW5kIGZ1bmN0aW9uIGZ1bmMyCisrCisrcHJvZ3JhbSB2bGFfZnVuYworKyAg aW1wbGljaXQgbm9uZQorKyAgaW50ZXJmYWNlCisrICAgIGxvZ2ljYWwgZnVuY3Rpb24gZnVuYzEg KHZsYSkKKysgICAgICBpbnRlZ2VyIDo6IHZsYSAoOiwgOikKKysgICAgZW5kIGZ1bmN0aW9uCisr ICBlbmQgaW50ZXJmYWNlCisrICBpbnRlcmZhY2UKKysgICAgZnVuY3Rpb24gZnVuYzIgKHZsYSkK KysgICAgICBpbnRlZ2VyIDo6IHZsYSAoOikKKysgICAgICBpbnRlZ2VyIGZ1bmMyKHNpemUodmxh KSkKKysgICAgZW5kIGZ1bmN0aW9uCisrICBlbmQgaW50ZXJmYWNlCisrCisrICBsb2dpY2FsIDo6 IHJldAorKyAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogdmxhMSAoOiwgOikKKysgIGludGVnZXIs IGFsbG9jYXRhYmxlIDo6IHZsYTIgKDopCisrICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiB2bGEz ICg6KQorKworKyAgcmV0ID0gLkZBTFNFLgorKworKyAgYWxsb2NhdGUgKHZsYTEgKDEwLDEwKSkK KysgIHZsYTEoOiw6KSA9IDIyCisrCisrICBhbGxvY2F0ZSAodmxhMiAoMTApKQorKyAgdmxhMig6 KSA9IDQ0CisrCisrICByZXQgPSBmdW5jMSh2bGExKQorKyAgdmxhMyA9IGZ1bmMyKHZsYTIpICAg ICAgICAgICEgZnVuYzEtcmV0dXJuZWQKKysKKysgIHJldCA9IC5UUlVFLiAgICAgICAgICAgICAg ICAhIGZ1bmMyLXJldHVybmVkCisrZW5kIHByb2dyYW0gdmxhX2Z1bmMKKy0tIAorMS43LjkuNQor CgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0xOW9mMjMucGF0Y2ggYi9nZGItdmxhLWludGVs LTE5b2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWY5MWI4 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRlbC0xOW9mMjMucGF0Y2gKQEAgLTAsMCAr MSw5MiBAQAorU3ViamVjdDogW1BBVENIIDE5LzIzXSB0ZXN0OiBhY2Nlc3NpbmcgZHluYW1pYyBh cnJheSBoaXN0b3J5IHZhbHVlcy4KK01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMjAtZ2l0 LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorCitUZXN0cyBpZiB0aGUgaGlzdG9y eSB2YWx1ZXMgb2YgZHluYW1pYyBhcnJheXMgY2FuIGJlCithY2Nlc3NlZCBhbmQgcHJpbnRlZCBh Z2FpbiB3aXRoIHRoZSBjb3JyZWN0IHZhbHVlcy4KKworMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwg IDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisgICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNh bmltaXIuYWdvdmljQGludGVsLmNvbT4KKwordGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKKworCSog dmxhLWhpc3RvcnkuZXhwOiBOZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJYjZkMmQzMDI3MmFlZmMy NGI2ZGI1ZmEwNjMzZmU3MjI3NDM5MGU5MQorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8 a2V2ZW4uYm9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtaGlzdG9yeS5leHAgfCAgIDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBm aWxlIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtaGlzdG9yeS5leHAKKworZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLWhpc3RvcnkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi92bGEtaGlzdG9yeS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi4xNzBlMWViCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1oaXN0b3J5LmV4cAorQEAgLTAsMCArMSw2MiBAQAorKyMgQ29weXJpZ2h0IDIwMTQg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorKworK3N0YW5kYXJkX3Rlc3RmaWxlICJ2bGEuZjkwIgorKworK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAor KyAgICB7ZGVidWcgZjkwIHF1aWV0fV0gfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKytpZiAh W3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFr cG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKysjIFNldCBzb21lIGJyZWFrcG9p bnRzIGFuZCBwcmludCBjb21wbGV0ZSB2bGEuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInZsYTEtaW5pdCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEt aW5pdCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IDxub3QgYWxsb2NhdGVkPiIgInByaW50 IG5vbi1hbGxvY2F0ZWQgdmxhMSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmxhMi1hbGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2bGEy LWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgdmxhMSIgIiA9IFxcKCAqXFwoICpcXCggKjAs ICowLCAqMCxcWygpMCwgLlxdKlxcKSIgXAorKyAgInByaW50IHZsYTEgYWxsb2NhdGVkIgorK2dk Yl90ZXN0ICJwcmludCB2bGEyIiAiID0gXFwoICpcXCggKlxcKCAqMCwgKjAsICowLFxbKCkwLCAu XF0qXFwpIiBcCisrICAicHJpbnQgdmxhMiBhbGxvY2F0ZWQiCisrCisrZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAidmxhMS1maWxsZWQiCisrZ2RiX3Rlc3QgInByaW50IHZsYTEiIFwKKysgICIgPSBc XCggKlxcKCAqXFwoICoxMzExLCAqMTMxMSwgKjEzMTEsXFsoKTEzMTEsIC5cXSpcXCkiIFwKKysg ICJwcmludCB2bGExIGZpbGxlZCIKKysKKysjIFRyeSB0byBhY2Nlc3MgaGlzdG9yeSB2YWx1ZXMg Zm9yIGZ1bGwgdmxhIHByaW50cy4KKytnZGJfdGVzdCAicHJpbnQgXCQxIiAiID0gPG5vdCBhbGxv Y2F0ZWQ+IiAicHJpbnQgXCQxIgorK2dkYl90ZXN0ICJwcmludCBcJDIiICIgPSBcXCggKlxcKCAq XFwoICowLCAqMCwgKjAsXFsoKTAsIC5cXSpcXCkiIFwKKysgICJwcmludCBcJDIiCisrZ2RiX3Rl c3QgInByaW50IFwkMyIgIiA9IFxcKCAqXFwoICpcXCggKjAsICowLCAqMCxcWygpMCwgLlxdKlxc KSIgXAorKyAgInByaW50IFwkMyIKKytnZGJfdGVzdCAicHJpbnQgXCQ0IiBcCisrICAiID0gXFwo ICpcXCggKlxcKCAqMTMxMSwgKjEzMTEsICoxMzExLFxbKCkxMzExLCAuXF0qXFwpIiAicHJpbnQg XCQ0IgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWZpbGxl ZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTItZmlsbGVkIgorK2dkYl90ZXN0 ICJwcmludCB2bGEyKDEsNDMsMjApIiAiID0gMTMxMSIgInByaW50IHZsYTIoMSw0MywyMCkiCisr Z2RiX3Rlc3QgInByaW50IHZsYTEoMSwzLDgpIiAiID0gMTAwMSIgInByaW50IHZsYTIoMSwzLDgp IgorKworKyMgVHJ5IHRvIGFjY2VzcyBoaXN0b3J5IHZhbHVlcyBmb3IgdmxhIHZhbHVlcy4KKytn ZGJfdGVzdCAicHJpbnQgXCQ5IiAiID0gMTMxMSIgInByaW50IFwkOSIKKytnZGJfdGVzdCAicHJp bnQgXCQxMCIgIiA9IDEwMDEiICJwcmludCBcJDEwIgorLS0gCisxLjcuOS41CisKCmRpZmYgLS1n aXQgYS9nZGItdmxhLWludGVsLTIwb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMjBvZjIzLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZjVhYzkKLS0tIC9kZXYv bnVsbAorKysgYi9nZGItdmxhLWludGVsLTIwb2YyMy5wYXRjaApAQCAtMCwwICsxLDE4MSBAQAor U3ViamVjdDogW1BBVENIIDIwLzIzXSB0ZXN0OiBkeW5hbWljIHN0cmluZyBldmFsdWF0aW9ucy4K K01lc3NhZ2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMjEtZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9l bGxAaW50ZWwuY29tPgorCitUZXN0cyB2YXJpb3VzIGR5bmFtaWMgc3RyaW5nIGV2YWx1YXRpb25z LiBEeW5hbWljIHN0cmluZ3MKK3dpbGwgYmUgaGFuZGxlZCBpbnRlcm5hbGx5IHRoZSBzYW1lIHdh eSBhcyBkeW5hbWljIGFycmF5cy4KKworMjAxNC0wNS0yOCAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5i b2VsbEBpbnRlbC5jb20+CisgICAgICAgICAgICBTYW5pbWlyIEFnb3ZpYyAgPHNhbmltaXIuYWdv dmljQGludGVsLmNvbT4KKwordGVzdHN1aXRlL2dkYi5mb3J0cmFuLzoKKworCSogdmxhLXN0cmlu Z3MuZjkwOiBOZXcgZmlsZS4KKwkqIHZsYS1zdHJpbmdzLmV4cDogTmV3IGZpbGUuCisKK0NoYW5n ZS1JZDogSWIyZjNkZGVkMmZiYzVmMGE5Njg0MDUwYzVjZmEyMmE0NTBlMTgzNTgKKworU2lnbmVk LW9mZi1ieTogS2V2ZW4gQm9lbGwgPGtldmVuLmJvZWxsQGludGVsLmNvbT4KKy0tLQorIGdkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZXhwIHwgIDEwNCArKysrKysrKysrKysr KysrKysrKysrKysrKysrKworIGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3Mu ZjkwIHwgICAzOCArKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMo KykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3Ry aW5ncy5leHAKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtc3RyaW5ncy5mOTAKKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v dmxhLXN0cmluZ3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaW5ncy5l eHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43ZmMxNzM0CistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmV4cAor QEAgLTAsMCArMSwxMDQgQEAKKysjIENvcHlyaWdodCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzdGFuZGFy ZF90ZXN0ZmlsZSAiLmY5MCIKKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZp bGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKysgICAge2RlYnVnIGY5MCBxdWlldH1d IH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBjaGVjayB0aGF0IGFsbCBmb3J0cmFuIHN0 YW5kYXJkIGRhdGF0eXBlcyB3aWxsIGJlCisrIyBoYW5kbGVkIGNvcnJlY3RseSB3aGVuIHVzaW5n IGFzIFZMQSdzCisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3IgImNv dWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9CisrCisr Z2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWFsbG9jYXRlZC0x Il0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItYWxsb2NhdGVkLTEiCisr Z2RiX3Rlc3QgInByaW50IHZhcl9jaGFyIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFy YWN0ZXJcXCoxMCBcXClcXCkgJHtoZXh9IiBcCisrICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgYWxs b2NhdGVkIGZpcnN0IHRpbWUiCisrZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgXAorKyAgIiA9 ICdcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAwMFxcXFwwMDBcXFxcMDAwXFxcXDAw MFxcXFwwMDBcXFxcMDAwJyIgXAorKyAgInByaW50ICp2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQg Zmlyc3QgdGltZSIKKytnZGJfdGVzdCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAt PiBcXCggY2hhcmFjdGVyXFwqMTAgXFwpIiBcCisrICAid2hhdGlzIHZhcl9jaGFyIGZpcnN0IHRp bWUiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hh cmFjdGVyXFwqMTAgXFwpIiBcCisrICAicHR5cGUgdmFyX2NoYXIgZmlyc3QgdGltZSIKKytnZGJf dGVzdCAibmV4dCIgIlxcZCsuKnZhcl9jaGFyID0gJ2ZvbycuKiIgXAorKyAgIm5leHQgdG8gYWxs b2NhdGlvbiBzdGF0dXMgb2YgdmFyX2NoYXIiCisrZ2RiX3Rlc3QgInByaW50IGwiICIgPSAuVFJV RS4iICJwcmludCBhbGxvY2F0aW9uIHN0YXR1cyBmaXJzdCB0aW1lIgorKworK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJfY2hhci1maWxsZWQtMSJdCisrZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZhcl9jaGFyLWZpbGxlZC0xIgorK2dkYl90ZXN0ICJwcmludCB2 YXJfY2hhciIgXAorKyAgIiA9IFxcKFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqMyBcXClcXCkg JHtoZXh9IiBcCisrICAicHJpbnQgdmFyX2NoYXIgYWZ0ZXIgZmlsbGVkIGZpcnN0IHRpbWUiCisr Z2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIiA9ICdmb28nIiBcCisrICAicHJpbnQgKnZhcl9j aGFyIGFmdGVyIGZpbGxlZCBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJ3aGF0aXMgdmFyX2NoYXIi ICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKSIgXAorKyAgIndoYXRpcyB2 YXJfY2hhciBhZnRlciBmaWxsZWQgZmlyc3QgdGltZSIKKytnZGJfdGVzdCAicHR5cGUgdmFyX2No YXIiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCozIFxcKSIgXAorKyAgInB0eXBl IHZhcl9jaGFyIGFmdGVyIGZpbGxlZCBmaXJzdCB0aW1lIgorK2dkYl90ZXN0ICJwcmludCB2YXJf Y2hhcigxKSIgIiA9IDEwMiAnZiciICJwcmludCB2YXJfY2hhcigxKSIKKytnZGJfdGVzdCAicHJp bnQgdmFyX2NoYXIoMykiICIgPSAxMTEgJ28nIiAicHJpbnQgdmFyX2NoYXIoMykiCisrCisrZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcl9jaGFyLWZpbGxlZC0yIl0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyX2NoYXItZmlsbGVkLTIiCisrZ2RiX3Rlc3Qg InByaW50IHZhcl9jaGFyIiBcCisrICAiID0gXFwoUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCo2 IFxcKVxcKSAke2hleH0iIFwKKysgICJwcmludCB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgc2Vj b25kIHRpbWUiCisrZ2RiX3Rlc3QgInByaW50ICp2YXJfY2hhciIgIiA9ICdmb29iYXInIiBcCisr ICAicHJpbnQgKnZhcl9jaGFyIGFmdGVyIGFsbG9jYXRlZCBzZWNvbmQgdGltZSIKKytnZGJfdGVz dCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBc XCkiIFwKKysgICJ3aGF0aXMgdmFyX2NoYXIgc2Vjb25kIHRpbWUiCisrZ2RiX3Rlc3QgInB0eXBl IHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hhcmFjdGVyXFwqNiBcXCkiIFwKKysg ICJwdHlwZSB2YXJfY2hhciBzZWNvbmQgdGltZSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dl dF9saW5lX251bWJlciAidmFyX2NoYXItZW1wdHkiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJ2YXJfY2hhci1lbXB0eSIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2NoYXIiIFwKKysgICIg PSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjAgXFwpXFwpICR7aGV4fSIgXAorKyAgInBy aW50IHZhcl9jaGFyIGFmdGVyIHNldCBlbXB0eSIKKytnZGJfdGVzdCAicHJpbnQgKnZhcl9jaGFy IiAiID0gXCJcIiIgInByaW50ICp2YXJfY2hhciBhZnRlciBzZXQgZW1wdHkiCisrZ2RiX3Rlc3Qg IndoYXRpcyB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjAgXFwp IiBcCisrICAid2hhdGlzIHZhcl9jaGFyIGFmdGVyIHNldCBlbXB0eSIKKytnZGJfdGVzdCAicHR5 cGUgdmFyX2NoYXIiICJ0eXBlID0gUFRSIFRPIC0+IFxcKCBjaGFyYWN0ZXJcXCowIFxcKSIgXAor KyAgInB0eXBlIHZhcl9jaGFyIGFmdGVyIHNldCBlbXB0eSIKKysKKytnZGJfYnJlYWtwb2ludCBb Z2RiX2dldF9saW5lX251bWJlciAidmFyX2NoYXItYWxsb2NhdGVkLTMiXQorK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJ2YXJfY2hhci1hbGxvY2F0ZWQtMyIKKytnZGJfdGVzdCAicHJpbnQg dmFyX2NoYXIiIFwKKysgICIgPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjIxIFxcKVxc KSAke2hleH0iIFwKKysgICJwcmludCB2YXJfY2hhciBhZnRlciBhbGxvY2F0ZWQgdGhpcmQgdGlt ZSIKKytnZGJfdGVzdCAid2hhdGlzIHZhcl9jaGFyIiAidHlwZSA9IFBUUiBUTyAtPiBcXCggY2hh cmFjdGVyXFwqMjEgXFwpIiBcCisrICAid2hhdGlzIHZhcl9jaGFyIGFmdGVyIGFsbG9jYXRlZCB0 aGlyZCB0aW1lIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhciIgInR5cGUgPSBQVFIgVE8gLT4g XFwoIGNoYXJhY3RlclxcKjIxIFxcKSIgXAorKyAgInB0eXBlIHZhcl9jaGFyIGFmdGVyIGFsbG9j YXRlZCB0aGlyZCB0aW1lIgorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ2YXJfY2hhcl9wLWFzc29jaWF0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2 YXJfY2hhcl9wLWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9jaGFyX3AiIFwKKysg ICIgPSBcXChQVFIgVE8gLT4gXFwoIGNoYXJhY3RlclxcKjcgXFwpXFwpICR7aGV4fSIgXAorKyAg InByaW50IHZhcl9jaGFyX3AgYWZ0ZXIgYXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicHJpbnQgKnZh cl9jaGFyX3AiICIgPSAnam9obmRvZSciIFwKKysgICJwcmludCAqdmFyX2NoYXJfIGFmdGVyIGFz c29jaWF0ZWQiCisrZ2RiX3Rlc3QgIndoYXRpcyB2YXJfY2hhcl9wIiAidHlwZSA9IFBUUiBUTyAt PiBcXCggY2hhcmFjdGVyXFwqNyBcXCkiIFwKKysgICJ3aGF0aXMgdmFyX2NoYXJfcCBhZnRlciBh c3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJfY2hhcl9wIiAidHlwZSA9IFBUUiBUTyAt PiBcXCggY2hhcmFjdGVyXFwqNyBcXCkiIFwKKysgICJwdHlwZSB2YXJfY2hhcl9wIGFmdGVyIGFz c29jaWF0ZWQiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3Ry aW5ncy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpbmdzLmY5MAorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjY2NzkwNDMKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmluZ3MuZjkwCitAQCAtMCww ICsxLDM4IEBACisrISBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrISAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0 IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg b2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3Qs IHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1w bGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKworK3By b2dyYW0gdmxhX3N0cmluZ3MKKysgIGNoYXJhY3RlcihsZW49OiksIHRhcmdldCwgYWxsb2NhdGFi bGUgICA6OiB2YXJfY2hhcgorKyAgY2hhcmFjdGVyKGxlbj06KSwgcG9pbnRlciAgICAgICAgICAg ICAgIDo6IHZhcl9jaGFyX3AKKysgIGxvZ2ljYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6OiBsCisrCisrICBhbGxvY2F0ZShjaGFyYWN0ZXIobGVuPTEwKSA6OiB2YXJfY2hhcikK KysgIGwgPSBhbGxvY2F0ZWQodmFyX2NoYXIpICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWFs bG9jYXRlZC0xCisrICB2YXJfY2hhciA9ICdmb28nCisrICBkZWFsbG9jYXRlKHZhcl9jaGFyKSAg ICAgICAgICAgICAgICAgICAgISB2YXJfY2hhci1maWxsZWQtMQorKyAgbCA9IGFsbG9jYXRlZCh2 YXJfY2hhcikgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItZGVhbGxvY2F0ZWQKKysgIGFsbG9j YXRlKGNoYXJhY3RlcihsZW49NDIpIDo6IHZhcl9jaGFyKQorKyAgbCA9IGFsbG9jYXRlZCh2YXJf Y2hhcikKKysgIHZhcl9jaGFyID0gJ2Zvb2JhcicKKysgIHZhcl9jaGFyID0gJycgICAgICAgICAg ICAgICAgICAgICAgICAgICAhIHZhcl9jaGFyLWZpbGxlZC0yCisrICBhbGxvY2F0ZShjaGFyYWN0 ZXIobGVuPTIxKSA6OiB2YXJfY2hhcikgISB2YXJfY2hhci1lbXB0eQorKyAgbCA9IGFsbG9jYXRl ZCh2YXJfY2hhcikgICAgICAgICAgICAgICAgICEgdmFyX2NoYXItYWxsb2NhdGVkLTMKKysgIHZh cl9jaGFyID0gJ2pvaG5kb2UnCisrICB2YXJfY2hhcl9wID0+IHZhcl9jaGFyCisrICBsID0gYXNz b2NpYXRlZCh2YXJfY2hhcl9wKSAgICAgICAgICAgICAgISB2YXJfY2hhcl9wLWFzc29jaWF0ZWQK KysgIHZhcl9jaGFyX3AgPT4gbnVsbCgpCisrICBsID0gYXNzb2NpYXRlZCh2YXJfY2hhcl9wKSAg ICAgICAgICAgICAgISB2YXJfY2hhcl9wLW5vdC1hc3NvY2lhdGVkCisrZW5kIHByb2dyYW0gdmxh X3N0cmluZ3MKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXZsYS1pbnRlbC0yMW9m MjMucGF0Y2ggYi9nZGItdmxhLWludGVsLTIxb2YyMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi45NDk0YjkyCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXZsYS1pbnRl bC0yMW9mMjMucGF0Y2gKQEAgLTAsMCArMSwyNjIgQEAKK1N1YmplY3Q6IFtQQVRDSCAyMS8yM10g dGVzdDogYmFzaWMgTUkgdGVzdCBmb3IgdGhlIGR5bmFtaWMgYXJyYXkgc3VwcG9ydC4KK01lc3Nh Z2UtSWQ6IDwxNDAxODYxMjY2LTYyNDAtMjItZ2l0LXNlbmQtZW1haWwta2V2ZW4uYm9lbGxAaW50 ZWwuY29tPgorCitUZXN0cyBkeW5hbWljIGFycmF5IGV2YWx1YXRpb25zIHVzaW5nIE1JIHByb3Rv Y29sLgorCisyMDE0LTA1LTI4ICBLZXZlbiBCb2VsbCAgPGtldmVuLmJvZWxsQGludGVsLmNvbT4K KyAgICAgICAgICAgIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgor Cit0ZXN0c3VpdGUvZ2RiLm1pLzoKKworCSogbWktdmxhLWZvcnRyYW4uZXhwOiBOZXcgZmlsZS4K KwkqIHZsYS5mOTA6IE5ldyBmaWxlLgorCitDaGFuZ2UtSWQ6IEkzN2NhYTg1YjE0OTg0NzhmNWVm ZjBmNTJkM2ZkNDMxMzg4YWFhYjZmCisKK1NpZ25lZC1vZmYtYnk6IEtldmVuIEJvZWxsIDxrZXZl bi5ib2VsbEBpbnRlbC5jb20+CistLS0KKyBnZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9y dHJhbi5leHAgfCAgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBnZGIvdGVz dHN1aXRlL2dkYi5taS92bGEuZjkwICAgICAgICAgICAgfCAgIDQyICsrKysrKysKKyAyIGZpbGVz IGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGdkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIv dGVzdHN1aXRlL2dkYi5taS92bGEuZjkwCisKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5taS9taS12bGEtZm9ydHJhbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9y dHJhbi5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MmIwYmUyCist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9ydHJhbi5l eHAKK0BAIC0wLDAgKzEsMTgyIEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBW ZXJpZnkgdGhhdCwgdXNpbmcgdGhlIE1JLCB3ZSBjYW4gZXZhbHVhdGUgYSBzaW1wbGUgQyBWYXJp YWJsZSBMZW5ndGgKKysjIEFycmF5IChWTEEpLgorKworK2xvYWRfbGliIG1pLXN1cHBvcnQuZXhw Cisrc2V0IE1JRkxBR1MgIi1pPW1pIgorKworK2dkYl9leGl0CisraWYgW21pX2dkYl9zdGFydF0g eworKyAgICBjb250aW51ZQorK30KKysKKytzdGFuZGFyZF90ZXN0ZmlsZSB2bGEuZjkwCisrCisr aWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7Ymlu ZmlsZX0iIGV4ZWN1dGFibGUgXAorKyAgICAge2RlYnVnIGY5MH1dICE9ICIiIH0geworKyAgICAg dW50ZXN0ZWQgbWktdmxhLWZvcnRyYW4uZXhwCisrICAgICByZXR1cm4gLTEKKyt9CisrCisrbWlf ZGVsZXRlX2JyZWFrcG9pbnRzCisrbWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3Vi ZGlyCisrbWlfZ2RiX2xvYWQgJHtiaW5maWxlfQorKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRf bGluZV9udW1iZXIgInZsYTEtbm90LWFsbG9jYXRlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQg Ii10IHZsYS5mOTA6JGJwX2xpbmVubyIgMSAiZGVsIiAidmxhIiBcCisrICAiLip2bGEuZjkwIiAk YnBfbGluZW5vICRoZXggXAorKyAgImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVu byAodmxhIG5vdCBhbGxvY2F0ZWQpIgorK21pX3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJl YWtwb2ludC1oaXQiICJ2bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIi ICJkaXNwPVwiZGVsXCIiIH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIK KyttaV9nZGJfdGVzdCAiNTAwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExIiBcCisrICAi NTAwXFxeZG9uZSx2YWx1ZT1cIjxub3QgYWxsb2NhdGVkPlwiIiAiZXZhbHVhdGUgbm90IGFsbG9j YXRlZCB2bGEiCisrCisrbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHZsYTFfbm90X2FsbG9jYXRl ZCB2bGExICI8bm90IGFsbG9jYXRlZD4iIFwKKysgICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgdmxh MV9ub3RfYWxsb2NhdGVkIgorK21pX2dkYl90ZXN0ICI1MDEtdmFyLWluZm8tdHlwZSB2bGExX25v dF9hbGxvY2F0ZWQiIFwKKysgICI1MDFcXF5kb25lLHR5cGU9XCI8bm90IGFsbG9jYXRlZD5cIiIg XAorKyAgImluZm8gdHlwZSB2YXJpYWJsZSB2bGExX25vdF9hbGxvY2F0ZWQiCisrbWlfZ2RiX3Rl c3QgIjUwMi12YXItc2hvdy1mb3JtYXQgdmxhMV9ub3RfYWxsb2NhdGVkIiBcCisrICAiNTAyXFxe ZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKKysgICJzaG93IGZvcm1hdCB2YXJpYWJsZSB2bGEx X25vdF9hbGxvY2F0ZWQiCisrbWlfZ2RiX3Rlc3QgIjUwMy12YXItZXZhbHVhdGUtZXhwcmVzc2lv biB2bGExX25vdF9hbGxvY2F0ZWQiIFwKKysgICI1MDNcXF5kb25lLHZhbHVlPVwiXFxcWzBcXFxd XCIiIFwKKysgICJldmFsIHZhcmlhYmxlIHZsYTFfbm90X2FsbG9jYXRlZCIKKyttaV9saXN0X2Fy cmF5X3Zhcm9ial9jaGlsZHJlbl93aXRoX2luZGV4ICJ2bGExX25vdF9hbGxvY2F0ZWQiICIwIiAi MSIgXAorKyAgICAicmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9mIHZsYTFfbm90 X2FsbG9jYXRlZCIKKysKKysKKysKKytzZXQgYnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJ2bGExLWFsbG9jYXRlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJw X2xpbmVubyIgMiAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXgg Imluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyAodmxhIGFsbG9jYXRlZCkiCisr bWlfcnVuX2NtZAorK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4q dmxhLmY5MCIgIiRicF9saW5lbm8iIFwKKysgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRv IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21pX2dkYl90ZXN0ICI1MTAtZGF0YS1l dmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwKKysgICI1MTBcXF5kb25lLHZhbHVlPVwiXFwoMCwg MCwgMCwgMCwgMFxcKVwiIiAiZXZhbHVhdGUgYWxsb2NhdGVkIHZsYSIKKysKKyttaV9jcmVhdGVf dmFyb2JqX2NoZWNrZWQgdmxhMV9hbGxvY2F0ZWQgdmxhMSAicmVhbFxcXChraW5kPTRcXFwpIFxc XCg1XFxcKSIgXAorKyAgImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSB2bGExX2FsbG9jYXRlZCIKKytt aV9nZGJfdGVzdCAiNTExLXZhci1pbmZvLXR5cGUgdmxhMV9hbGxvY2F0ZWQiIFwKKysgICI1MTFc XF5kb25lLHR5cGU9XCJyZWFsXFxcKGtpbmQ9NFxcXCkgXFxcKDVcXFwpXCIiIFwKKysgICJpbmZv IHR5cGUgdmFyaWFibGUgdmxhMV9hbGxvY2F0ZWQiCisrbWlfZ2RiX3Rlc3QgIjUxMi12YXItc2hv dy1mb3JtYXQgdmxhMV9hbGxvY2F0ZWQiIFwKKysgICI1MTJcXF5kb25lLGZvcm1hdD1cIm5hdHVy YWxcIiIgXAorKyAgInNob3cgZm9ybWF0IHZhcmlhYmxlIHZsYTFfYWxsb2NhdGVkIgorK21pX2dk Yl90ZXN0ICI1MTMtdmFyLWV2YWx1YXRlLWV4cHJlc3Npb24gdmxhMV9hbGxvY2F0ZWQiIFwKKysg ICI1MTNcXF5kb25lLHZhbHVlPVwiXFxcWzVcXFxdXCIiIFwKKysgICJldmFsIHZhcmlhYmxlIHZs YTFfYWxsb2NhdGVkIgorK21pX2xpc3RfYXJyYXlfdmFyb2JqX2NoaWxkcmVuX3dpdGhfaW5kZXgg InZsYTFfYWxsb2NhdGVkIiAiNSIgIjEiIFwKKysgICAgInJlYWxcXFwoa2luZD00XFxcKSIgImdl dCBjaGlsZHJlbiBvZiB2bGExX2FsbG9jYXRlZCIKKysKKysKKytzZXQgYnBfbGluZW5vIFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJ2bGExLWZpbGxlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10 IHZsYS5mOTA6JGJwX2xpbmVubyIgMyAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBf bGluZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9y dW5fY21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEu ZjkwIiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJl YWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjUyMC1kYXRhLWV2YWx1 YXRlLWV4cHJlc3Npb24gdmxhMSIgXAorKyAgIjUyMFxcXmRvbmUsdmFsdWU9XCJcXCgxLCAxLCAx LCAxLCAxXFwpXCIiICJldmFsdWF0ZSBmaWxsZWQgdmxhIgorKworKworK3NldCBicF9saW5lbm8g W2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtbW9kaWZpZWQiXQorK21pX2NyZWF0ZV9icmVha3Bv aW50ICItdCB2bGEuZjkwOiRicF9saW5lbm8iIDQgImRlbCIgInZsYSIgIi4qdmxhLmY5MCIgXAor KyAgJGJwX2xpbmVubyAkaGV4ICJpbnNlcnQgYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8i CisrbWlfcnVuX2NtZAorK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIg Ii4qdmxhLmY5MCIgIiRicF9saW5lbm8iIFwKKysgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVu IHRvIGJyZWFrcG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21pX2dkYl90ZXN0ICI1MzAtZGF0 YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEiIFwKKysgICI1MzBcXF5kb25lLHZhbHVlPVwiXFwo MSwgNDIsIDEsIDI0LCAxXFwpXCIiICJldmFsdWF0ZSBmaWxsZWQgdmxhIgorK21pX2dkYl90ZXN0 ICI1NDAtZGF0YS1ldmFsdWF0ZS1leHByZXNzaW9uIHZsYTEoMSkiIFwKKysgICI1NDBcXF5kb25l LHZhbHVlPVwiMVwiIiAiZXZhbHVhdGUgZmlsbGVkIHZsYSIKKyttaV9nZGJfdGVzdCAiNTUwLWRh dGEtZXZhbHVhdGUtZXhwcmVzc2lvbiB2bGExKDIpIiBcCisrICAiNTUwXFxeZG9uZSx2YWx1ZT1c IjQyXCIiICJldmFsdWF0ZSBmaWxsZWQgdmxhIgorK21pX2dkYl90ZXN0ICI1NjAtZGF0YS1ldmFs dWF0ZS1leHByZXNzaW9uIHZsYTEoNCkiIFwKKysgICI1NjBcXF5kb25lLHZhbHVlPVwiMjRcIiIg ImV2YWx1YXRlIGZpbGxlZCB2bGEiCisrCisrCisrc2V0IGJwX2xpbmVubyBbZ2RiX2dldF9saW5l X251bWJlciAidmxhMS1kZWFsbG9jYXRlZCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZs YS5mOTA6JGJwX2xpbmVubyIgNSAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGlu ZW5vICRoZXggImluc2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9ydW5f Y21kCisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkw IiAiJGJwX2xpbmVubyIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtw b2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjU3MC1kYXRhLWV2YWx1YXRl LWV4cHJlc3Npb24gdmxhMSIgXAorKyAgIjU3MFxcXmRvbmUsdmFsdWU9XCI8bm90IGFsbG9jYXRl ZD5cIiIgImV2YWx1YXRlIG5vdCBhbGxvY2F0ZWQgdmxhIgorKworKworK3NldCBicF9saW5lbm8g W2dkYl9nZXRfbGluZV9udW1iZXIgInB2bGEyLW5vdC1hc3NvY2lhdGVkIl0KKyttaV9jcmVhdGVf YnJlYWtwb2ludCAiLXQgdmxhLmY5MDokYnBfbGluZW5vIiA2ICJkZWwiICJ2bGEiICIuKnZsYS5m OTAiIFwKKysgICRicF9saW5lbm8gJGhleCAiaW5zZXJ0IGJyZWFrcG9pbnQgYXQgbGluZSAkYnBf bGluZW5vIgorK21pX3J1bl9jbWQKKyttaV9leHBlY3Rfc3RvcCAiYnJlYWtwb2ludC1oaXQiICJ2 bGEiICIiICIuKnZsYS5mOTAiICIkYnBfbGluZW5vIiBcCisrICB7ICIiICJkaXNwPVwiZGVsXCIi IH0gInJ1biB0byBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9nZGJfdGVzdCAi NTgwLWRhdGEtZXZhbHVhdGUtZXhwcmVzc2lvbiBwdmxhMiIgXAorKyAgIjU4MFxcXmRvbmUsdmFs dWU9XCI8bm90IGFzc29jaWF0ZWQ+XCIiICJldmFsdWF0ZSBub3QgYXNzb2NpYXRlZCB2bGEiCisr CisrbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHB2bGEyX25vdF9hc3NvY2lhdGVkIHB2bGEyICI8 bm90IGFzc29jaWF0ZWQ+IiBcCisrICAiY3JlYXRlIGxvY2FsIHZhcmlhYmxlIHB2bGEyX25vdF9h c3NvY2lhdGVkIgorK21pX2dkYl90ZXN0ICI1ODEtdmFyLWluZm8tdHlwZSBwdmxhMl9ub3RfYXNz b2NpYXRlZCIgXAorKyAgIjU4MVxcXmRvbmUsdHlwZT1cIjxub3QgYXNzb2NpYXRlZD5cIiIgXAor KyAgImluZm8gdHlwZSB2YXJpYWJsZSBwdmxhMl9ub3RfYXNzb2NpYXRlZCIKKyttaV9nZGJfdGVz dCAiNTgyLXZhci1zaG93LWZvcm1hdCBwdmxhMl9ub3RfYXNzb2NpYXRlZCIgXAorKyAgIjU4Mlxc XmRvbmUsZm9ybWF0PVwibmF0dXJhbFwiIiBcCisrICAic2hvdyBmb3JtYXQgdmFyaWFibGUgcHZs YTJfbm90X2Fzc29jaWF0ZWQiCisrbWlfZ2RiX3Rlc3QgIjU4My12YXItZXZhbHVhdGUtZXhwcmVz c2lvbiBwdmxhMl9ub3RfYXNzb2NpYXRlZCIgXAorKyAgIjU4M1xcXmRvbmUsdmFsdWU9XCJcXFxb MFxcXF1cIiIgXAorKyAgImV2YWwgdmFyaWFibGUgcHZsYTJfbm90X2Fzc29jaWF0ZWQiCisrbWlf bGlzdF9hcnJheV92YXJvYmpfY2hpbGRyZW5fd2l0aF9pbmRleCAicHZsYTJfbm90X2Fzc29jaWF0 ZWQiICIwIiAiMSIgXAorKyAgICAicmVhbFxcXChraW5kPTRcXFwpIiAiZ2V0IGNoaWxkcmVuIG9m IHB2bGEyX25vdF9hc3NvY2lhdGVkIgorKworKworK3NldCBicF9saW5lbm8gW2dkYl9nZXRfbGlu ZV9udW1iZXIgInB2bGEyLWFzc29jaWF0ZWQiXQorK21pX2NyZWF0ZV9icmVha3BvaW50ICItdCB2 bGEuZjkwOiRicF9saW5lbm8iIDcgImRlbCIgInZsYSIgIi4qdmxhLmY5MCIgXAorKyAgJGJwX2xp bmVubyAkaGV4ICJpbnNlcnQgYnJlYWtwb2ludCBhdCBsaW5lICRicF9saW5lbm8iCisrbWlfcnVu X2NtZAorK21pX2V4cGVjdF9zdG9wICJicmVha3BvaW50LWhpdCIgInZsYSIgIiIgIi4qdmxhLmY5 MCIgIiRicF9saW5lbm8iIFwKKysgIHsgIiIgImRpc3A9XCJkZWxcIiIgfSAicnVuIHRvIGJyZWFr cG9pbnQgYXQgbGluZSAkYnBfbGluZW5vIgorK21pX2dkYl90ZXN0ICI1OTAtZGF0YS1ldmFsdWF0 ZS1leHByZXNzaW9uIHB2bGEyIiBcCisrICAiNTkwXFxeZG9uZSx2YWx1ZT1cIlxcKFxcKCAyLCAy LCAyLCAyLCAyXFwpIFxcKCAyLCAyLCAyLCAyLCAyXFwpIFxcKVwiIiBcCisrICAiZXZhbHVhdGUg YXNzb2NpYXRlZCB2bGEiCisrCisrbWlfY3JlYXRlX3Zhcm9ial9jaGVja2VkIHB2bGEyX2Fzc29j aWF0ZWQgcHZsYTIgXAorKyAgInJlYWxcXFwoa2luZD00XFxcKSBcXFwoNSwyXFxcKSIgImNyZWF0 ZSBsb2NhbCB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorK21pX2dkYl90ZXN0ICI1OTEtdmFy LWluZm8tdHlwZSBwdmxhMl9hc3NvY2lhdGVkIiBcCisrICAiNTkxXFxeZG9uZSx0eXBlPVwicmVh bFxcXChraW5kPTRcXFwpIFxcXCg1LDJcXFwpXCIiIFwKKysgICJpbmZvIHR5cGUgdmFyaWFibGUg cHZsYTJfYXNzb2NpYXRlZCIKKyttaV9nZGJfdGVzdCAiNTkyLXZhci1zaG93LWZvcm1hdCBwdmxh Ml9hc3NvY2lhdGVkIiBcCisrICAiNTkyXFxeZG9uZSxmb3JtYXQ9XCJuYXR1cmFsXCIiIFwKKysg ICJzaG93IGZvcm1hdCB2YXJpYWJsZSBwdmxhMl9hc3NvY2lhdGVkIgorK21pX2dkYl90ZXN0ICI1 OTMtdmFyLWV2YWx1YXRlLWV4cHJlc3Npb24gcHZsYTJfYXNzb2NpYXRlZCIgXAorKyAgIjU5M1xc XmRvbmUsdmFsdWU9XCJcXFxbMlxcXF1cIiIgXAorKyAgImV2YWwgdmFyaWFibGUgcHZsYTJfYXNz b2NpYXRlZCIKKysKKysKKytzZXQgYnBfbGluZW5vIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxh Mi1zZXQtdG8tbnVsbCJdCisrbWlfY3JlYXRlX2JyZWFrcG9pbnQgIi10IHZsYS5mOTA6JGJwX2xp bmVubyIgOCAiZGVsIiAidmxhIiAiLip2bGEuZjkwIiBcCisrICAkYnBfbGluZW5vICRoZXggImlu c2VydCBicmVha3BvaW50IGF0IGxpbmUgJGJwX2xpbmVubyIKKyttaV9ydW5fY21kCisrbWlfZXhw ZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVu byIgXAorKyAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5l ICRicF9saW5lbm8iCisrbWlfZ2RiX3Rlc3QgIjYwMC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24g cHZsYTIiIFwKKysgICI2MDBcXF5kb25lLHZhbHVlPVwiPG5vdCBhc3NvY2lhdGVkPlwiIiAiZXZh bHVhdGUgdmxhIHBvaW50ZXIgc2V0IHRvIG51bGwiCisrCisrbWlfZ2RiX2V4aXQKKytyZXR1cm4g MAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL3ZsYS5mOTAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5taS92bGEuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u NDZlZGFkMgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmxhLmY5 MAorQEAgLTAsMCArMSw0MiBAQAorKyEgQ29weXJpZ2h0IDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytwcm9n cmFtIHZsYQorKyAgcmVhbCwgYWxsb2NhdGFibGUgOjogdmxhMSAoOikKKysgIHJlYWwsIHRhcmdl dCwgYWxsb2NhdGFibGUgOjogdmxhMig6LCA6KQorKyAgcmVhbCwgcG9pbnRlciA6OiBwdmxhMiAo OiwgOikKKysgIGxvZ2ljYWwgOjogbAorKworKyAgYWxsb2NhdGUgKHZsYTEgKDUpKSAgICAgICAg ICEgdmxhMS1ub3QtYWxsb2NhdGVkCisrICBsID0gYWxsb2NhdGVkKHZsYTEpICAgICAgICAgISB2 bGExLWFsbG9jYXRlZAorKworKyAgdmxhMSg6KSA9IDEKKysgIHZsYTEoMikgPSA0MiAgICAgICAg ICAgICAgICAhIHZsYTEtZmlsbGVkCisrICB2bGExKDQpID0gMjQKKysKKysgIGRlYWxsb2NhdGUg KHZsYTEpICAgICAgICAgICAhIHZsYTEtbW9kaWZpZWQKKysgIGwgPSBhbGxvY2F0ZWQodmxhMSkg ICAgICAgICAhIHZsYTEtZGVhbGxvY2F0ZWQKKysKKysgIGFsbG9jYXRlICh2bGEyICg1LCAyKSkK KysgIHZsYTIoOiwgOikgPSAyCisrCisrICBwdmxhMiA9PiB2bGEyICAgICAgICAgICAgICAgISBw dmxhMi1ub3QtYXNzb2NpYXRlZAorKyAgbCA9IGFzc29jaWF0ZWQocHZsYTIpICAgICAgICEgcHZs YTItYXNzb2NpYXRlZAorKworKyAgcHZsYTIoMiwgMSkgPSA0MgorKworKyAgcHZsYTIgPT4gbnVs bCgpCisrICBsID0gYXNzb2NpYXRlZChwdmxhMikgICAgICAgISBwdmxhMi1zZXQtdG8tbnVsbAor K2VuZCBwcm9ncmFtIHZsYQorLS0gCisxLjcuOS41CisKCmRpZmYgLS1naXQgYS9nZGItdmxhLWlu dGVsLTIyb2YyMy5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMjJvZjIzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhMDY3NGMKLS0tIC9kZXYvbnVsbAorKysgYi9nZGIt dmxhLWludGVsLTIyb2YyMy5wYXRjaApAQCAtMCwwICsxLDc1IEBACitTdWJqZWN0OiBbUEFUQ0gg MjIvMjNdIHRlc3Q6IHRlc3Qgc2l6ZW9mIGZvciBkeW5hbWljIGZvcnRyYW4gYXJyYXlzLgorTWVz c2FnZS1JZDogPDE0MDE4NjEyNjYtNjI0MC0yMy1naXQtc2VuZC1lbWFpbC1rZXZlbi5ib2VsbEBp bnRlbC5jb20+CisKK1Rlc3RzIHNpemVvZiBvdXRwdXQgb2YgZHluYW1pYyBhcnJheXMgaW4gdmFy aW91cyBzdGF0ZXMuCisKKzIwMTQtMDUtMjggIEtldmVuIEJvZWxsICA8a2V2ZW4uYm9lbGxAaW50 ZWwuY29tPgorICAgICAgICAgICAgU2FuaW1pciBBZ292aWMgIDxzYW5pbWlyLmFnb3ZpY0BpbnRl bC5jb20+CisKK3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi86CisKKwkqIHZsYS1zaXplb2YuZXhwOiBO ZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJNjhkODFkMDNmZjJkYWEzMmFiODdkMjc1MDg3MzY1MmQ2 ODRlNzM4OQorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4uYm9lbGxAaW50ZWwu Y29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cCB8ICAg NDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDQ2IGlu c2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtc2l6ZW9mLmV4cAorCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi92bGEtc2l6ZW9mLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXNpemVvZi5l eHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42MDUzYzE3CistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXplb2YuZXhwCitA QCAtMCwwICsxLDQ2IEBACisrIyBDb3B5cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK KysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisr IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRf dGVzdGZpbGUgInZsYS5mOTAiCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9 XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKworK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsK KysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNv bnRpbnVlCisrfQorKworKyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gbm9uIGFsbG9jYXRlZCBW TEEKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1pbml0Il0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmxhMS1pbml0IgorK2dkYl90ZXN0ICJwcmludCBz aXplb2YodmxhMSkiICIgPSAwIiAicHJpbnQgc2l6ZW9mIG5vbi1hbGxvY2F0ZWQgdmxhMSIKKysK KysjIFRyeSB0byBhY2Nlc3MgdmFsdWUgaW4gYWxsb2NhdGVkIFZMQQorK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2bGEyLWFsbG9jYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgInZsYTItYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwcmludCBzaXplb2Yodmxh MSkiICIgPSA0MDAwIiAicHJpbnQgc2l6ZW9mIGFsbG9jYXRlZCB2bGExIgorKworKyMgVHJ5IHRv IGFjY2VzcyB2YWx1ZXMgaW4gdW5kZWZpbmVkIHBvaW50ZXIgdG8gVkxBIChkYW5nbGluZykKKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmxhMS1maWxsZWQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJ2bGExLWZpbGxlZCIKKytnZGJfdGVzdCAicHJpbnQgc2l6 ZW9mKHB2bGEpIiAiID0gMCIgInByaW50IHNpemVvZiBub24tYXNzb2NpYXRlZCBwdmxhIgorKwor KyMgVHJ5IHRvIGFjY2VzcyB2YWx1ZXMgaW4gcG9pbnRlciB0byBWTEEgYW5kIGNvbXBhcmUgdGhl bQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJwdmxhLWFzc29jaWF0ZWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJwdmxhLWFzc29jaWF0ZWQiCisrZ2RiX3Rl c3QgInByaW50IHNpemVvZihwdmxhKSIgIiA9IDQwMDAiICJwcmludCBzaXplb2YgYXNzb2NpYXRl ZCBwdmxhIgorLS0gCisxLjcuOS41CisKCmRpZmYgLS1naXQgYS9nZGItdmxhLWludGVsLTIzb2Yy My5wYXRjaCBiL2dkYi12bGEtaW50ZWwtMjNvZjIzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmM5NjU3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItdmxhLWludGVs LTIzb2YyMy5wYXRjaApAQCAtMCwwICsxLDExOSBAQAorU3ViamVjdDogW1BBVENIIDIzLzIzXSB0 ZXN0OiBzdHJpZGUgc3VwcG9ydCBmb3IgZHluYW1pYyBhcnJheXMuCitNZXNzYWdlLUlkOiA8MTQw MTg2MTI2Ni02MjQwLTI0LWdpdC1zZW5kLWVtYWlsLWtldmVuLmJvZWxsQGludGVsLmNvbT4KKwor VGVzdHMgdGhlIHVzYWdlIG9mIHN0cmlkZSB2YWx1ZXMgaW4gZHluYW1pYyBhcnJheXMuCisKKzIw MTQtMDUtMjggIFNhbmltaXIgQWdvdmljICA8c2FuaW1pci5hZ292aWNAaW50ZWwuY29tPgorICAg ICAgICAgICAgS2V2ZW4gQm9lbGwgIDxrZXZlbi5ib2VsbEBpbnRlbC5jb20+CisKK3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi86CisKKwkqIHZsYS1zdHJpZGUuZXhwOiBOZXcgZmlsZS4KKwkqIHZsYS1z dHJpZGUuZjkwOiBOZXcgZmlsZS4KKworQ2hhbmdlLUlkOiBJYzRmNjhjZjk3MDQ2Y2M5ZjVmMzY2 NGZlNGMxMmQyYjc1MjhjMjJlZQorCitTaWduZWQtb2ZmLWJ5OiBLZXZlbiBCb2VsbCA8a2V2ZW4u Ym9lbGxAaW50ZWwuY29tPgorLS0tCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3Ry aWRlLmV4cCB8ICAgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MCB8ICAgMzAgKysrKysrKysrKysrKysrKysr CisgMiBmaWxlcyBjaGFuZ2VkLCA4MSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0 IGdkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAKKyBjcmVhdGUgbW9kZSAx MDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MAorCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi5lNzkxMTE1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZXhwCitAQCAtMCwwICsxLDUxIEBACisrIyBDb3B5cmln aHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uCisrCisrc3RhbmRhcmRfdGVzdGZpbGUgIi5mOTAiCisrCisraWYgeyBb cHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxl fSBcCisrICAgIHtkZWJ1ZyBmOTAgcXVpZXR9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKwor K2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8g YnJlYWtwb2ludCBNQUlOX18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJyZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAicmV2ZXJzZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIg IiA9IFxcXCgxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMVxcXCkiIFwKKysgICJwcmludCBy ZXZlcnNlLWVsZW1lbnRzIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMTAiICJwcmlu dCBmaXJzdCByZXZlcnNlLWVsZW1lbnQiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEoMTApIiAiID0g MSIgInByaW50IGxhc3QgcmV2ZXJzZS1lbGVtZW50IgorKworK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJyZS1yZXZlcnNlLWVsZW1lbnRzIl0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAicmUtcmV2ZXJzZS1lbGVtZW50cyIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSIg IiA9IFxcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcXCkiIFwKKysgICJwcmludCBy ZS1yZXZlcnNlLWVsZW1lbnRzIgorK2dkYl90ZXN0ICJwcmludCBwdmxhKDEpIiAiID0gMSIgInBy aW50IGZpcnN0IHJlLXJldmVyc2UtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQgcHZsYSgxMCki ICIgPSAxMCIgInByaW50IGxhc3QgcmUtcmV2ZXJzZS1lbGVtZW50IgorKworK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJvZGQtZWxlbWVudHMiXQorK2dkYl9jb250aW51ZV90 b19icmVha3BvaW50ICJvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInByaW50IHB2bGEiICIgPSBc XFwoMSwgMywgNSwgNywgOVxcXCkiICJwcmludCBvZGQtZWxlbWVudHMiCisrZ2RiX3Rlc3QgInBy aW50IHB2bGEoMSkiICIgPSAxIiAicHJpbnQgZmlyc3Qgb2RkLWVsZW1lbnQiCisrZ2RiX3Rlc3Qg InByaW50IHB2bGEoNSkiICIgPSA5IiAicHJpbnQgbGFzdCBvZGQtZWxlbWVudCIKKysKKytnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAic2luZ2xlLWVsZW1lbnQiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJzaW5nbGUtZWxlbWVudCIKKytnZGJfdGVzdCAicHJpbnQg cHZsYSIgIiA9IFxcXCg1XFxcKSIgInByaW50IHNpbmdsZS1lbGVtZW50IgorK2dkYl90ZXN0ICJw cmludCBwdmxhKDEpIiAiID0gNSIgInByaW50IG9uZSBzaW5nbGUtZWxlbWVudCIKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtc3RyaWRlLmY5MAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjFmOGNjNTUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vdmxhLXN0cmlkZS5mOTAKK0BAIC0wLDAgKzEsMzAgQEAKKyshIENvcHlyaWdo dCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrCisrcHJvZ3JhbSB2bGFfc3RyaWRlCisrICBp bnRlZ2VyLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZsYSAoOikKKysgIGludGVnZXIsIHBvaW50 ZXIgOjogcHZsYSAoOikKKysKKysgIGFsbG9jYXRlKHZsYSgxMCkpCisrICB2bGEgPSAoLyAoSSwg SSA9IDEsMTApIC8pCisrCisrICBwdmxhID0+IHZsYSgxMDoxOi0xKQorKyAgcHZsYSA9PiBwdmxh KDEwOjE6LTEpICEgcmV2ZXJzZS1lbGVtZW50cworKyAgcHZsYSA9PiB2bGEoMToxMDoyKSAgICEg cmUtcmV2ZXJzZS1lbGVtZW50cworKyAgcHZsYSA9PiB2bGEoNTo0Oi0yKSAgICEgb2RkLWVsZW1l bnRzCisrCisrICBwdmxhID0+IG51bGwoKSAgICAgICAgISBzaW5nbGUtZWxlbWVudAorK2VuZCBw cm9ncmFtIHZsYV9zdHJpZGUKKy0tIAorMS43LjkuNQorCgpkaWZmIC0tZ2l0IGEvZ2RiLXdhdGNo cG9pbnQtZm9yay1maXgucGF0Y2ggYi9nZGItd2F0Y2hwb2ludC1mb3JrLWZpeC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODhkM2E4Ci0tLSAvZGV2L251bGwKKysr IGIvZ2RiLXdhdGNocG9pbnQtZm9yay1maXgucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAoraHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTQtMDYvbXNnMDA3MTAuaHRtbAorU3Vi amVjdDogUmU6IFJlZ3Jlc3Npb24gZm9yIHdhdGNocG9pbnQtZm9yay5leHAgIFtSZTogW1BBVENI IHYzIDIvNV0gUFIgYnJlYWtwb2ludHMvNzE0MyAtIFdhdGNocG9pbnQgZG9lcyBub3QgdHJpZ2dl ciB3aGVuIGZpcnN0IHNldF0KKworT24gMDYvMTkvMjAxNCAwNDowMiBQTSwgUGVkcm8gQWx2ZXMg d3JvdGU6CisKKz4+IEF0dGFjaGluZyBnemlwcGVkIGdkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9y ay1wYXJlbnQtc3QKKz4+IGZyb20gZ2NjLTQuOS4wLTkuZmMyMS54ODZfNjQuCis+IAorPiBUaGFu a3MsIEkgY2FuIHJlcHJvZHVjZSBpdC4KKworSG1tLCBJIHN1c3BlY3QgdGhpcyBtaWdodCBiZSBy ZWxhdGVkIHRvIGtlcm5lbC1zaWRlIHZhbGlkYXRpb24KK29mIERSX0NPTlRST0wgdnMgRFIwLTMs IGxpa2Ugd2hhdCB3ZSBhbHJlYWR5IGhhbmRsZSBpbiBhbWQ2NF9saW51eF9wcmVwYXJlX3RvX3Jl c3VtZS4KK0FuZCBpbmRlZWQgdGhpcyBiZWxvdyBtYWtlcyB0aGUgZXJyb3IgZ28gYXdheS4gIE5v dCBleGFjdGx5IHN1cmUgd2h5IHlldC4KKworWyBwYXRjaCBleHRlbmRlZCBieSBKYW4gS3JhdG9j aHZpbCBdCisKKy0tLSBnZGItNy43LjkwLjIwMTQwNjEzL2dkYi9pMzg2LWxpbnV4LW5hdC5jLm9y aWcJMjAxNC0wNi0xOSAyMTo0MjowMC43ODg2MTE1NDQgKzAyMDAKKysrKyBnZGItNy43LjkwLjIw MTQwNjEzL2dkYi9pMzg2LWxpbnV4LW5hdC5jCTIwMTQtMDYtMTkgMjE6NDI6MDQuNTU2NjE0NDAx ICswMjAwCitAQCAtNzc4LDYgKzc3OCw4IEBAIGkzODZfbGludXhfcHJlcGFyZV90b19yZXN1bWUg KHN0cnVjdCBsd3AKKyAgICAgICAvKiBTZWUgYW1kNjRfbGludXhfcHJlcGFyZV90b19yZXN1bWUg Zm9yIExpbnV4IGtlcm5lbCBub3RlIG9uCisgCSBpMzg2X2xpbnV4X2RyX3NldCBjYWxscyBvcmRl cmluZy4gICovCisgCisrICAgICAgaTM4Nl9saW51eF9kcl9zZXQgKGx3cC0+cHRpZCwgRFJfQ09O VFJPTCwgMCk7CisrCisgICAgICAgZm9yIChpID0gRFJfRklSU1RBRERSOyBpIDw9IERSX0xBU1RB RERSOyBpKyspCisgCWlmIChzdGF0ZS0+ZHJfcmVmX2NvdW50W2ldID4gMCkKKyAJICB7CistLS0g Z2RiLTcuNy45MC4yMDE0MDYxMy9nZGIvYW1kNjQtbGludXgtbmF0LmMub3JpZwkyMDE0LTA2LTE5 IDIxOjQwOjM3LjU4MjUzNDM5MiArMDIwMAorKysrIGdkYi03LjcuOTAuMjAxNDA2MTMvZ2RiL2Ft ZDY0LWxpbnV4LW5hdC5jCTIwMTQtMDYtMTkgMjE6NDE6MTcuMTkyNTcwOTAyICswMjAwCitAQCAt NDE1LDYgKzQxNSw4IEBAIGFtZDY0X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChzdHJ1Y3QgbHcK KyAKKyAJIEVuc3VyZSBEUl9DT05UUk9MIGdldHMgd3JpdHRlbiBhcyB0aGUgdmVyeSBsYXN0IHJl Z2lzdGVyIGhlcmUuICAqLworIAorKyAgICAgIGFtZDY0X2xpbnV4X2RyX3NldCAobHdwLT5wdGlk LCBEUl9DT05UUk9MLCAwKTsKKysKKyAgICAgICBmb3IgKGkgPSBEUl9GSVJTVEFERFI7IGkgPD0g RFJfTEFTVEFERFI7IGkrKykKKyAJaWYgKHN0YXRlLT5kcl9yZWZfY291bnRbaV0gPiAwKQorIAkg IHsKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDllNTIyNzUuLjY1Nzgw MWMgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0xNywxNyArMTcsMTUg QEAKIFN1bW1hcnk6IEEgR05VIHNvdXJjZS1sZXZlbCBkZWJ1Z2dlciBmb3IgQywgQysrLCBGb3J0 cmFuLCBHbyBhbmQgb3RoZXIgbGFuZ3VhZ2VzCiBOYW1lOiAlez9zY2xfcHJlZml4fWdkYgogCi0j IDZlNWM5NWU2Y2YxZTNjMzdiZDNhODIyY2E5ZTY3MjFjYWFiOTdhODUKLSNnbG9iYWwgc25hcCAg ICAgICAyMDE0MDEyNwogIyBGcmVlemUgaXQgd2hlbiBHREIgZ2V0cyBicmFuY2hlZAotJWdsb2Jh bCBzbmFwc3JjICAgIDIwMTQwMTA4CislZ2xvYmFsIHNuYXBzcmMgICAgMjAxNDA2MTMKICMgU2Vl IHRpbWVzdGFtcCBvZiBzb3VyY2UgZ251bGliIGluc3RhbGxlZCBpbnRvIGdkYi9nbnVsaWIvIC4K ICVnbG9iYWwgc25hcGdudWxpYiAyMDEyMTIxMwotVmVyc2lvbjogNy43LjEKK1ZlcnNpb246IDcu Ny45MC4yMDE0MDYxMwogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcg cmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBh cnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZv ciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDIxJXs/ZGlzdH0KK1JlbGVhc2U6IDElez9kaXN0fQog CiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBh bmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQTHYyKyBhbmQgQlNEIGFu ZCBQdWJsaWMgRG9tYWluIGFuZCBHRkRMCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdnZXJzCkBA IC0yMjEsMjAgKzIxOSw2IEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1w dGhyZWFkLXRlc3QucGF0Y2gKICMgQmFja3BvcnRlZCBmaXh1cHMgcG9zdCB0aGUgc291cmNlIHRh cmJhbGwuCiAjWGRyb3A6IEp1c3QgYmFja3BvcnRzLgogUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5w YXRjaAotUGF0Y2g4Njg6IGdkYi11cHN0cmVhbS1wcGM2NGxlMDJvZjE1LnBhdGNoCi1QYXRjaDg2 OTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUwM29mMTUucGF0Y2gKLVBhdGNoODcwOiBnZGItdXBzdHJl YW0tcHBjNjRsZTA0b2YxNS5wYXRjaAotUGF0Y2g4NzE6IGdkYi11cHN0cmVhbS1wcGM2NGxlMDVv ZjE1LnBhdGNoCi1QYXRjaDg3MjogZ2RiLXVwc3RyZWFtLXBwYzY0bGUwNm9mMTUucGF0Y2gKLVBh dGNoODczOiBnZGItdXBzdHJlYW0tcHBjNjRsZTA3b2YxNS5wYXRjaAotUGF0Y2g4NzQ6IGdkYi11 cHN0cmVhbS1wcGM2NGxlMDhvZjE1LnBhdGNoCi1QYXRjaDg3NTogZ2RiLXVwc3RyZWFtLXBwYzY0 bGUwOW9mMTUucGF0Y2gKLVBhdGNoODc2OiBnZGItdXBzdHJlYW0tcHBjNjRsZTEwb2YxNS5wYXRj aAotUGF0Y2g4Nzc6IGdkYi11cHN0cmVhbS1wcGM2NGxlMTFvZjE1LnBhdGNoCi1QYXRjaDg3ODog Z2RiLXVwc3RyZWFtLXBwYzY0bGUxMm9mMTUucGF0Y2gKLVBhdGNoODc5OiBnZGItdXBzdHJlYW0t cHBjNjRsZTEzb2YxNS5wYXRjaAotUGF0Y2g4ODA6IGdkYi11cHN0cmVhbS1wcGM2NGxlMTRvZjE1 LnBhdGNoCi1QYXRjaDg4MTogZ2RiLXVwc3RyZWFtLXBwYzY0bGUxNW9mMTUucGF0Y2gKIAogIyBU ZXN0Y2FzZSBmb3IgUFBDIFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5IChCWiAy MzAwMDApLgogIz1mZWRvcmF0ZXN0K3BwYwpAQCAtMjg3LDEwICsyNzEsNiBAQCBQYXRjaDgzMzog Z2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCiAjIGJ1dCBub3QgY29ycmVzcG9u ZGluZyBiaW5hcnkgcGtnJyAoUkggQlogOTgxMTU0KS4KIFBhdGNoODYzOiBnZGItNi42LWJ1aWxk aWQtbG9jYXRlLW1pc2xlYWRpbmctd2FybmluZy1taXNzaW5nLWRlYnVnaW5mby1yaGJ6OTgxMTU0 LnBhdGNoCiAKLSMgQWRkIGtlcm5lbCB2RFNPIHdvcmthcm91bmQgKGBubyBsb2FkYWJsZSAuLi4n KSBvbiBSSEVMLTUgKGtlcm5lbCBCWiA3NjU4NzUpLgotIz1wdXNoCi1QYXRjaDI3NjogZ2RiLTYu Ni1iZmQtdmRzbzhrLnBhdGNoCi0KICMgRml4IGRpc3BsYXlpbmcgb2YgbnVtZXJpYyBjaGFyIGFy cmF5cyBhcyBzdHJpbmdzIChCWiAyMjQxMjgpLgogIz1mZWRvcmF0ZXN0OiBCdXQgaXQgaXMgZmFp bGluZyBhbnl3YXksIG9uZSBzaG91bGQgY2hlY2sgdGhlIGJlaGF2aW9yIG1vcmUuCiBQYXRjaDI4 MjogZ2RiLTYuNy1jaGFyc2lnbi10ZXN0LnBhdGNoCkBAIC01MTgsMjAgKzQ5OCw0NCBAQCBQYXRj aDgzMjogZ2RiLXJoYno5NDc1NjQtZmluZHZhci1hc3NlcnRpb24tZnJhbWUtZmFpbGVkLXRlc3Rj YXNlLnBhdGNoCiAjIEZpeCBjcmFzaCBvbiAnZW5hYmxlIGNvdW50JyAoU2ltb24gTWFyY2hpLCBC WiA5OTMxMTgpLgogUGF0Y2g4NDM6IGdkYi1lbmFibGUtY291bnQtY3Jhc2gucGF0Y2gKIAotIyBG aXggdGVzdHN1aXRlICJFUlJPUjogbm8gZmlsZWlkIGZvciIuCi1QYXRjaDg0NjogZ2RiLXRlc3Rz dWl0ZS1ub2hvc3RpZC5wYXRjaAotCiAjIFtyaGVsNl0gRFRTIGJhY2t3YXJkIFB5dGhvbiBjb21w YXRpYmlsaXR5IEFQSSAoQlogMTAyMDAwNCwgUGhpbCBNdWxkb29uKS4KIFBhdGNoODQ4OiBnZGIt ZHRzLXJoZWw2LXB5dGhvbi1jb21wYXQucGF0Y2gKIAogIyBGaXggY3Jhc2ggb2YgLXJlYWRub3cg L3Vzci9saWIvZGVidWcvdXNyL2Jpbi9nbmF0YmluZC5kZWJ1ZyAoQlogMTA2OTIxMSkuCi1QYXRj aDg1MDogZ2RiLWduYXQtZHdhcmYtY3Jhc2gtMW9mMy5wYXRjaAotUGF0Y2g4NTE6IGdkYi1nbmF0 LWR3YXJmLWNyYXNoLTJvZjMucGF0Y2gKIFBhdGNoODUyOiBnZGItZ25hdC1kd2FyZi1jcmFzaC0z b2YzLnBhdGNoCiAKLSMgRml4IFRMUyBhY2Nlc3MgZm9yIC1zdGF0aWMgLXB0aHJlYWQgKEJaIDEw ODA2NjApLgotUGF0Y2g4NjU6IGdkYi1zdGF0aWMtdGxzLTFvZjIucGF0Y2gKLVBhdGNoODY2OiBn ZGItc3RhdGljLXRscy0yb2YyLnBhdGNoCisjIFZMQSAoRm9ydHJhbiBkeW5hbWljIGFycmF5cykg ZnJvbSBJbnRlbCArIGFyY2hlci1qYW5rcmF0b2NodmlsLXZsYSB0ZXN0cy4KK1BhdGNoODg3OiBn ZGItYXJjaGVyLXZsYS10ZXN0cy5wYXRjaAorUGF0Y2g4ODg6IGdkYi12bGEtaW50ZWwtMDFvZjIz LnBhdGNoCitQYXRjaDg4OTogZ2RiLXZsYS1pbnRlbC0wMm9mMjMucGF0Y2gKK1BhdGNoODkwOiBn ZGItdmxhLWludGVsLTAzb2YyMy5wYXRjaAorUGF0Y2g4OTE6IGdkYi12bGEtaW50ZWwtMDRvZjIz LnBhdGNoCitQYXRjaDkxMjogZ2RiLXZsYS1pbnRlbC0wNG9mMjMtZml4LnBhdGNoCitQYXRjaDg5 MjogZ2RiLXZsYS1pbnRlbC0wNW9mMjMucGF0Y2gKK1BhdGNoODkzOiBnZGItdmxhLWludGVsLTA2 b2YyMy5wYXRjaAorUGF0Y2g4OTQ6IGdkYi12bGEtaW50ZWwtMDdvZjIzLnBhdGNoCitQYXRjaDg5 NTogZ2RiLXZsYS1pbnRlbC0wOG9mMjMucGF0Y2gKK1BhdGNoODk2OiBnZGItdmxhLWludGVsLTA5 b2YyMy5wYXRjaAorUGF0Y2g4OTc6IGdkYi12bGEtaW50ZWwtMTBvZjIzLnBhdGNoCitQYXRjaDg5 ODogZ2RiLXZsYS1pbnRlbC0xMW9mMjMucGF0Y2gKK1BhdGNoODk5OiBnZGItdmxhLWludGVsLTEy b2YyMy5wYXRjaAorUGF0Y2g5MDA6IGdkYi12bGEtaW50ZWwtMTNvZjIzLnBhdGNoCitQYXRjaDkw MTogZ2RiLXZsYS1pbnRlbC0xNG9mMjMucGF0Y2gKK1BhdGNoOTAyOiBnZGItdmxhLWludGVsLTE1 b2YyMy5wYXRjaAorUGF0Y2g5MDM6IGdkYi12bGEtaW50ZWwtMTZvZjIzLnBhdGNoCitQYXRjaDkw NDogZ2RiLXZsYS1pbnRlbC0xN29mMjMucGF0Y2gKK1BhdGNoOTA1OiBnZGItdmxhLWludGVsLTE4 b2YyMy5wYXRjaAorUGF0Y2g5MDY6IGdkYi12bGEtaW50ZWwtMTlvZjIzLnBhdGNoCitQYXRjaDkw NzogZ2RiLXZsYS1pbnRlbC0yMG9mMjMucGF0Y2gKK1BhdGNoOTA4OiBnZGItdmxhLWludGVsLTIx b2YyMy5wYXRjaAorUGF0Y2g5MDk6IGdkYi12bGEtaW50ZWwtMjJvZjIzLnBhdGNoCitQYXRjaDkx MDogZ2RiLXZsYS1pbnRlbC0yM29mMjMucGF0Y2gKKworIyBGaXggQVNBTiBjcmFzaCByZWdyZXNz aW9uIHdpdGggZGVtYW5nbGVkIG5hbWVzIGNvcHkgKFRvbSBUcm9tZXkpLgorUGF0Y2g5MTE6IGdk Yi1iZmQtZGVtYW5nbGVkLW5hbWVzLnBhdGNoCisKKyMgRml4IGdkYi03Ljggd2F0Y2hwb2ludC1m b3JrLmV4cCByZWdyZXNzaW9uIChQZWRybyBBbHZlcykuCitQYXRjaDkxMzogZ2RiLXdhdGNocG9p bnQtZm9yay1maXgucGF0Y2gKIAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAj IFJMX1NUQVRFX0ZFRE9SQV9HREIgd291bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTcwNywyMCAr NzExLDMwIEBAIGZpbmQgLW5hbWUgIiouaW5mbyoifHhhcmdzIHJtIC1mCiAKICVwYXRjaDM0OSAt cDEKICVwYXRjaDIzMiAtcDEKLSVwYXRjaDg2OCAtcDEKLSVwYXRjaDg2OSAtcDEKLSVwYXRjaDg3 MCAtcDEKLSVwYXRjaDg3MSAtcDEKLSVwYXRjaDg3MiAtcDEKLSVwYXRjaDg3MyAtcDEKLSVwYXRj aDg3NCAtcDEKLSVwYXRjaDg3NSAtcDEKLSVwYXRjaDg3NiAtcDEKLSVwYXRjaDg3NyAtcDEKLSVw YXRjaDg3OCAtcDEKLSVwYXRjaDg3OSAtcDEKLSVwYXRjaDg4MCAtcDEKLSVwYXRjaDg4MSAtcDEK KyVwYXRjaDg4OCAtcDEKKyVwYXRjaDg4OSAtcDEKKyVwYXRjaDg5MCAtcDEKKyVwYXRjaDg5MSAt cDEKKyVwYXRjaDkxMiAtcDEKKyVwYXRjaDg5MiAtcDEKKyVwYXRjaDg5MyAtcDEKKyVwYXRjaDg5 NCAtcDEKKyVwYXRjaDg5NSAtcDEKKyVwYXRjaDg5NiAtcDEKKyVwYXRjaDg5NyAtcDEKKyVwYXRj aDg5OCAtcDEKKyVwYXRjaDg5OSAtcDEKKyVwYXRjaDkwMCAtcDEKKyVwYXRjaDkwMSAtcDEKKyVw YXRjaDkwMiAtcDEKKyVwYXRjaDkwMyAtcDEKKyVwYXRjaDkwNCAtcDEKKyVwYXRjaDkwNSAtcDEK KyVwYXRjaDkwNiAtcDEKKyVwYXRjaDkwNyAtcDEKKyVwYXRjaDkwOCAtcDEKKyVwYXRjaDkwOSAt cDEKKyVwYXRjaDkxMCAtcDEKICVwYXRjaDEgLXAxCiAKICVwYXRjaDEwNSAtcDEKQEAgLTc2MCw3 ICs3NzQsNiBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBhdGNoMjc0IC1w MQogJXBhdGNoNjU5IC1wMQogJXBhdGNoMzUzIC1wMQotJXBhdGNoMjc2IC1wMQogJXBhdGNoMjgy IC1wMQogJXBhdGNoMjg0IC1wMQogJXBhdGNoMjg5IC1wMQpAQCAtODE3LDEzICs4MzAsMTEgQEAg ZmluZCAtbmFtZSAiKi5pbmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDgxOCAtcDEKICVwYXRjaDgz MiAtcDEKICVwYXRjaDg0MyAtcDEKLSVwYXRjaDg0NiAtcDEKLSVwYXRjaDg1MCAtcDEKLSVwYXRj aDg1MSAtcDEKICVwYXRjaDg1MiAtcDEKICVwYXRjaDg2MyAtcDEKLSVwYXRjaDg2NSAtcDEKLSVw YXRjaDg2NiAtcDEKKyVwYXRjaDg4NyAtcDEKKyVwYXRjaDkxMSAtcDEKKyVwYXRjaDkxMyAtcDEK IAogJXBhdGNoODQ4IC1wMQogJWlmIDAleyE/ZWw2OjF9CkBAIC05MTAsNiArOTIxLDcgQEAgZXhw b3J0IExERkxBR1M9IiV7P19fZ2xvYmFsX2xkZmxhZ3N9ICV7P193aXRoX2FzYW46LWZzYW5pdGl6 ZT1hZGRyZXNzfSIKIAktLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyPS91c3IvbGliL2RlYnVnCQlc CiAJLS1kaXNhYmxlLXNpbQkJCQkJCVwKIAktLWRpc2FibGUtcnBhdGgJCQkJCQlcCisJLS13aXRo b3V0LWd1aWxlCQkJCQkJXAogJWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAJLS13 aXRoLXN5c3RlbS1yZWFkbGluZQkJCQkJXAogJWVsc2UKQEAgLTEzMDgsNiArMTMyMCw5IEBAIHRo ZW4KIGZpCiAKICVjaGFuZ2Vsb2cKKyogVGh1IEp1biAxOSAyMDE0IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNy45MC4yMDE0MDYxMy0xLmZjMjEKKy0gUmVi YXNlIHRvIEZTRiBHREIgNy43LjkwLjIwMTQwNjEzIChwcmUtNy44IHNuYXBzaG90KS4KKwogKiBT YXQgSnVuIDA3IDIwMTQgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbC1lbmdAbGlzdHMu ZmVkb3JhcHJvamVjdC5vcmc+IC0gNy43LjEtMjEKIC0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRv cmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9yYV8yMV9NYXNzX1JlYnVpbGQKIAoKZGlmZiAtLWdpdCBh L3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDkzYWZlNTQuLmYxYzYxZDggMTAwNjQ0Ci0tLSBhL3Nv dXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDQ5ODEzMDdhYTk2MTliYmVjNWI3 MzI2MWU0ZTQxYzhkICBnZGItbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLTc3 YjIwYjUxNWU3YzI1ZjAzMmNiOTczMmE2NjYyMGZlICBnZGItNy43LjEudGFyLmJ6MgorY2Y0ZGRj ZWI3OWZlZjU2YjQxNDZlMTRiZTcyYzg3MjcgIGdkYi03LjcuOTAuMjAxNDA2MTMudGFyLmJ6Mgo=