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: Tomas Mraz To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: pull some fixes and improvements from RHEL-8 Date: Tue, 09 Jun 2026 12:44:44 GMT Message-ID: <178100908455.1.17353932276976211492.rpms-openssl-1e6a98d9e90a@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: 1e6a98d9e90acffa4e2de6a0d4e5f23d6b16d4b1 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbnNzbApCcmFu Y2ggOiByZWJhc2VfNDBiZXRhCkNvbW1pdCA6IDFlNmE5OGQ5ZTkwYWNmZmE0ZTJkZTZhMGQ0ZTVm MjNkNmIxNmQ0YjEKQXV0aG9yIDogVG9tYXMgTXJheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMjAtMDUtMThUMTM6MjY6NTMrMDI6MDAKU3RhdHMgIDogKzQwMTEvLTMgaW4g NSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvb3Bl bnNzbC9jLzFlNmE5OGQ5ZTkwYWNmZmE0ZTJkZTZhMGQ0ZTVmMjNkNmIxNmQ0YjE/YnJhbmNoPXJl YmFzZV80MGJldGEKCkxvZzoKcHVsbCBzb21lIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMgZnJvbSBS SEVMLTgKCi0tLQpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjEuMS1hcm0tdXBkYXRlLnBhdGNoIGIv b3BlbnNzbC0xLjEuMS1hcm0tdXBkYXRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjk5ODkwNWYKLS0tIC9kZXYvbnVsbAorKysgYi9vcGVuc3NsLTEuMS4xLWFybS11 cGRhdGUucGF0Y2gKQEAgLTAsMCArMSwxNDM0IEBACitkaWZmIC11cCBvcGVuc3NsLTEuMS4xYy9j cnlwdG8vYWVzL2FzbS9hZXN2OC1hcm14LnBsLmFybS11cGRhdGUgb3BlbnNzbC0xLjEuMWMvY3J5 cHRvL2Flcy9hc20vYWVzdjgtYXJteC5wbAorLS0tIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9hZXMv YXNtL2Flc3Y4LWFybXgucGwuYXJtLXVwZGF0ZQkyMDE5LTA1LTI4IDE1OjEyOjIxLjAwMDAwMDAw MCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9hZXMvYXNtL2Flc3Y4LWFybXgucGwJ MjAxOS0xMS0yMCAxMTozNjoyMi4zODk1MDYxNTUgKzAxMDAKK0BAIC0yNyw0NCArMjcsNzIgQEAK KyAjIENCQyBlbmNyeXB0IGNhc2UuIE9uIENvcnRleC1BNTcgcGFyYWxsZWxpemFibGUgbW9kZSBw ZXJmb3JtYW5jZQorICMgc2VlbXMgdG8gYmUgbGltaXRlZCBieSBzaGVlciBhbW91bnQgb2YgTkVP TiBpbnN0cnVjdGlvbnMuLi4KKyAjCisrIyBBcHJpbCAyMDE5CisrIworKyMgS2V5IHRvIHBlcmZv cm1hbmNlIG9mIHBhcmFsbGVsaXplLWFibGUgbW9kZXMgaXMgcm91bmQgaW5zdHJ1Y3Rpb24KKysj IGludGVybGVhdmluZy4gQnV0IHdoaWNoIGZhY3RvciB0byB1c2U/IFRoZXJlIGlzIG9wdGltYWwg b25lIGZvcgorKyMgZWFjaCBjb21iaW5hdGlvbiBvZiBpbnN0cnVjdGlvbiBsYXRlbmN5IGFuZCBp c3N1ZSByYXRlLCBiZXlvbmQKKysjIHdoaWNoIGluY3JlYXNpbmcgaW50ZXJsZWF2ZSBmYWN0b3Ig ZG9lc24ndCBwYXkgb2ZmLiBXaGlsZSBvbiBjb25zCisrIyBzaWRlIHdlIGhhdmUgY29kZSBzaXpl IGluY3JlYXNlIGFuZCByZXNvdXJjZSB3YXN0ZSBvbiBwbGF0Zm9ybXMgZm9yCisrIyB3aGljaCBp bnRlcmxlYXZlIGZhY3RvciBpcyB0b28gaGlnaC4gSW4gb3RoZXIgd29yZHMgeW91IHdhbnQgaXQg dG8KKysjIGJlIGp1c3QgcmlnaHQuIFNvIGZhciBpbnRlcmxlYXZlIGZhY3RvciBvZiAzeCB3YXMg c2VydmluZyB3ZWxsIGFsbAorKyMgcGxhdGZvcm1zLiBCdXQgZm9yIFRodW5kZXJYMiBvcHRpbWFs IGludGVybGVhdmUgZmFjdG9yIHdhcyBtZWFzdXJlZAorKyMgdG8gYmUgNXguLi4KKysjCisgIyBQ ZXJmb3JtYW5jZSBpbiBjeWNsZXMgcGVyIGJ5dGUgcHJvY2Vzc2VkIHdpdGggMTI4LWJpdCBrZXk6 CisgIworICMJCUNCQyBlbmMJCUNCQyBkZWMJCUNUUgorICMgQXBwbGUgQTcJMi4zOQkJMS4yMAkJ MS4yMAorLSMgQ29ydGV4LUE1MwkxLjMyCQkxLjI5CQkxLjQ2CistIyBDb3J0ZXgtQTU3KCopCTEu OTUJCTAuODUJCTAuOTMKKy0jIERlbnZlcgkxLjk2CQkwLjg2CQkwLjgwCistIyBNb25nb29zZQkx LjMzCQkxLjIwCQkxLjIwCistIyBLcnlvCQkxLjI2CQkwLjk0CQkxLjAwCisrIyBDb3J0ZXgtQTUz CTEuMzIJCTEuMTcvMS4yOSgqKikJMS4zNi8xLjQ2CisrIyBDb3J0ZXgtQTU3KCopCTEuOTUJCTAu ODIvMC44NQkwLjg5LzAuOTMKKysjIENvcnRleC1BNzIJMS4zMwkJMC44NS8wLjg4CTAuOTIvMC45 NgorKyMgRGVudmVyCTEuOTYJCTAuNjUvMC44NgkwLjc2LzAuODAKKysjIE1vbmdvb3NlCTEuMzMJ CTEuMjMvMS4yMAkxLjMwLzEuMjAKKysjIEtyeW8JCTEuMjYJCTAuODcvMC45NAkxLjAwLzEuMDAK KysjIFRodW5kZXJYMgk1Ljk1CQkxLjI1CQkxLjMwCisgIworICMgKCopCW9yaWdpbmFsIDMuNjQv MS4zNC8xLjMyIHJlc3VsdHMgd2VyZSBmb3IgcjBwMCByZXZpc2lvbgorICMJYW5kIGFyZSBzdGls bCBzYW1lIGV2ZW4gZm9yIHVwZGF0ZWQgbW9kdWxlOworKyMgKCoqKQludW1iZXJzIGFmdGVyIHNs YXNoIGFyZSBmb3IgMzItYml0IGNvZGUsIHdoaWNoIGlzIDN4LQorKyMJaW50ZXJsZWF2ZWQ7Cisg CistJGZsYXZvdXIgPSBzaGlmdDsKKy0kb3V0cHV0ICA9IHNoaWZ0OworKyMgJG91dHB1dCBpcyB0 aGUgbGFzdCBhcmd1bWVudCBpZiBpdCBsb29rcyBsaWtlIGEgZmlsZSAoaXQgaGFzIGFuIGV4dGVu c2lvbikKKysjICRmbGF2b3VyIGlzIHRoZSBmaXJzdCBhcmd1bWVudCBpZiBpdCBkb2Vzbid0IGxv b2sgbGlrZSBhIGZpbGUKKyskb3V0cHV0ID0gJCNBUkdWID49IDAgJiYgJEFSR1ZbJCNBUkdWXSA9 fiBtfFwuXHcrJHwgPyBwb3AgOiB1bmRlZjsKKyskZmxhdm91ciA9ICQjQVJHViA+PSAwICYmICRB UkdWWzBdICF+IG18XC58ID8gc2hpZnQgOiB1bmRlZjsKKyAKKyAkMCA9fiBtLyguKltcL1xcXSlb XlwvXFxdKyQvOyAkZGlyPSQxOworICggJHhsYXRlPSIke2Rpcn1hcm0teGxhdGUucGwiIGFuZCAt ZiAkeGxhdGUgKSBvcgorICggJHhsYXRlPSIke2Rpcn0uLi8uLi9wZXJsYXNtL2FybS14bGF0ZS5w bCIgYW5kIC1mICR4bGF0ZSkgb3IKKyBkaWUgImNhbid0IGxvY2F0ZSBhcm0teGxhdGUucGwiOwor IAorLW9wZW4gT1VULCJ8IFwiJF5YXCIgJHhsYXRlICRmbGF2b3VyICRvdXRwdXQiOworK29wZW4g T1VULCJ8IFwiJF5YXCIgJHhsYXRlICRmbGF2b3VyIFwiJG91dHB1dFwiIgorKyAgICBvciBkaWUg ImNhbid0IGNhbGwgJHhsYXRlOiAkISI7CisgKlNURE9VVD0qT1VUOworIAorICRwcmVmaXg9ImFl c192OCI7CisgCisrJF9ieXRlID0gKCRmbGF2b3VyID1+IC93aW4vID8gIkRDQiIgOiAiLmJ5dGUi KTsKKysKKyAkY29kZT08PF9fXzsKKyAjaW5jbHVkZSAiYXJtX2FyY2guaCIKKyAKKyAjaWYgX19B Uk1fTUFYX0FSQ0hfXz49NworLS50ZXh0CisgX19fCistJGNvZGUuPSIuYXJjaAlhcm12OC1hK2Ny eXB0b1xuIgkJCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKyskY29kZS49Ii5hcmNoCWFybXY4LWEr Y3J5cHRvXG4udGV4dFxuIgkJaWYgKCRmbGF2b3VyID1+IC82NC8pOworICRjb2RlLj08PF9fXwkJ CQkJCWlmICgkZmxhdm91ciAhfiAvNjQvKTsKKyAuYXJjaAlhcm12Ny1hCS8vIGRvbid0IGNvbmZ1 c2Ugbm90LXNvLWxhdGVzdCBiaW51dGlscyB3aXRoIGFyZ3Y4IDotKQorIC5mcHUJbmVvbgorKyNp ZmRlZglfX3RodW1iMl9fCisrLnN5bnRheAl1bmlmaWVkCisrLnRodW1iCisrIyBkZWZpbmUgSU5T VChhLGIsYyxkKQkkX2J5dGUJYyxkfDB4YyxhLGIKKysjZWxzZQorIC5jb2RlCTMyCistI3VuZGVm CV9fdGh1bWIyX18KKysjIGRlZmluZSBJTlNUKGEsYixjLGQpCSRfYnl0ZQlhLGIsYyxkCisrI2Vu ZGlmCisrCisrLnRleHQKKyBfX18KKyAKKyAjIEFzc2VtYmxlciBtbmVtb25pY3MgYXJlIGFuIGVj bGVjdGljIG1peCBvZiAzMi0gYW5kIDY0LWJpdCBzeW50YXgsCitAQCAtNTE0LDYgKzU0MiwxMyBA QCAkY29kZS49PDxfX187CisgX19fCisgeworIG15ICgkZGF0MiwkaW4yLCR0bXAyKT1tYXAoInEk XyIsKDEwLDExLDkpKTsKKysKKytteSAoJGRhdDMsJGluMywkdG1wMyk7CSMgdXNlZCBvbmx5IGlu IDY0LWJpdCBtb2RlCisrbXkgKCRkYXQ0LCRpbjQsJHRtcDQpOworK2lmICgkZmxhdm91ciA9fiAv NjQvKSB7CisrICAgICgkZGF0MiwkZGF0MywkZGF0NCwkaW4yLCRpbjMsJGluNCwkdG1wMywkdG1w NCk9bWFwKCJxJF8iLCgxNi4uMjMpKTsKKyt9CisrCisgJGNvZGUuPTw8X19fOworIC5hbGlnbgk1 CisgLkxjYmNfZGVjOgorQEAgLTUzMCw3ICs1NjUsMTk2IEBAICRjb2RlLj08PF9fXzsKKyAJdm9y cgkkaW4wLCRkYXQsJGRhdAorIAl2b3JyCSRpbjEsJGRhdDEsJGRhdDEKKyAJdm9ycgkkaW4yLCRk YXQyLCRkYXQyCisrX19fCisrJGNvZGUuPTw8X19fCWlmICgkZmxhdm91ciA9fiAvNjQvKTsKKysJ Y21wCSRsZW4sIzMyCisrCWIubG8JLkxvb3AzeF9jYmNfZGVjCisrCisrCXZsZDEuOAl7JGRhdDN9 LFskaW5wXSwjMTYKKysJdmxkMS44CXskZGF0NH0sWyRpbnBdLCMxNgorKwlzdWIJJGxlbiwkbGVu LCMzMgkJLy8gYmlhcworKwltb3YJJGNudCwkcm91bmRzCisrCXZvcnIJJGluMywkZGF0MywkZGF0 MworKwl2b3JyCSRpbjQsJGRhdDQsJGRhdDQKKysKKysuTG9vcDV4X2NiY19kZWM6CisrCWFlc2QJ JGRhdDAscTgKKysJYWVzaW1jCSRkYXQwLCRkYXQwCisrCWFlc2QJJGRhdDEscTgKKysJYWVzaW1j CSRkYXQxLCRkYXQxCisrCWFlc2QJJGRhdDIscTgKKysJYWVzaW1jCSRkYXQyLCRkYXQyCisrCWFl c2QJJGRhdDMscTgKKysJYWVzaW1jCSRkYXQzLCRkYXQzCisrCWFlc2QJJGRhdDQscTgKKysJYWVz aW1jCSRkYXQ0LCRkYXQ0CisrCXZsZDEuMzIJe3E4fSxbJGtleV9dLCMxNgorKwlzdWJzCSRjbnQs JGNudCwjMgorKwlhZXNkCSRkYXQwLHE5CisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNkCSRk YXQxLHE5CisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwlhZXNkCSRkYXQyLHE5CisrCWFlc2ltYwkk ZGF0MiwkZGF0MgorKwlhZXNkCSRkYXQzLHE5CisrCWFlc2ltYwkkZGF0MywkZGF0MworKwlhZXNk CSRkYXQ0LHE5CisrCWFlc2ltYwkkZGF0NCwkZGF0NAorKwl2bGQxLjMyCXtxOX0sWyRrZXlfXSwj MTYKKysJYi5ndAkuTG9vcDV4X2NiY19kZWMKKysKKysJYWVzZAkkZGF0MCxxOAorKwlhZXNpbWMJ JGRhdDAsJGRhdDAKKysJYWVzZAkkZGF0MSxxOAorKwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJYWVz ZAkkZGF0MixxOAorKwlhZXNpbWMJJGRhdDIsJGRhdDIKKysJYWVzZAkkZGF0MyxxOAorKwlhZXNp bWMJJGRhdDMsJGRhdDMKKysJYWVzZAkkZGF0NCxxOAorKwlhZXNpbWMJJGRhdDQsJGRhdDQKKysJ IGNtcAkkbGVuLCMweDQwCQkvLyBiZWNhdXNlIC5MY2JjX3RhaWw0eAorKwkgc3ViCSRsZW4sJGxl biwjMHg1MAorKworKwlhZXNkCSRkYXQwLHE5CisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNk CSRkYXQxLHE5CisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwlhZXNkCSRkYXQyLHE5CisrCWFlc2lt YwkkZGF0MiwkZGF0MgorKwlhZXNkCSRkYXQzLHE5CisrCWFlc2ltYwkkZGF0MywkZGF0MworKwlh ZXNkCSRkYXQ0LHE5CisrCWFlc2ltYwkkZGF0NCwkZGF0NAorKwkgY3NlbAl4Nix4enIsJGxlbixn dAkJLy8gYm9ycm93IHg2LCAkY250LCAiZ3QiIGlzIG5vdCB0eXBvCisrCSBtb3YJJGtleV8sJGtl eQorKworKwlhZXNkCSRkYXQwLHExMAorKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzZAkkZGF0 MSxxMTAKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCWFlc2QJJGRhdDIscTEwCisrCWFlc2ltYwkk ZGF0MiwkZGF0MgorKwlhZXNkCSRkYXQzLHExMAorKwlhZXNpbWMJJGRhdDMsJGRhdDMKKysJYWVz ZAkkZGF0NCxxMTAKKysJYWVzaW1jCSRkYXQ0LCRkYXQ0CisrCSBhZGQJJGlucCwkaW5wLHg2CQkv LyAkaW5wIGlzIGFkanVzdGVkIGluIHN1Y2ggd2F5IHRoYXQKKysJCQkJCS8vIGF0IGV4aXQgZnJv bSB0aGUgbG9vcCAkZGF0MS0kZGF0NAorKwkJCQkJLy8gYXJlIGxvYWRlZCB3aXRoIGxhc3QgIndv cmRzIgorKwkgYWRkCXg2LCRsZW4sIzB4NjAJCS8vIGJlY2F1c2UgLkxjYmNfdGFpbDR4CisrCisr CWFlc2QJJGRhdDAscTExCisrCWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNkCSRkYXQxLHExMQor KwlhZXNpbWMJJGRhdDEsJGRhdDEKKysJYWVzZAkkZGF0MixxMTEKKysJYWVzaW1jCSRkYXQyLCRk YXQyCisrCWFlc2QJJGRhdDMscTExCisrCWFlc2ltYwkkZGF0MywkZGF0MworKwlhZXNkCSRkYXQ0 LHExMQorKwlhZXNpbWMJJGRhdDQsJGRhdDQKKysKKysJYWVzZAkkZGF0MCxxMTIKKysJYWVzaW1j CSRkYXQwLCRkYXQwCisrCWFlc2QJJGRhdDEscTEyCisrCWFlc2ltYwkkZGF0MSwkZGF0MQorKwlh ZXNkCSRkYXQyLHExMgorKwlhZXNpbWMJJGRhdDIsJGRhdDIKKysJYWVzZAkkZGF0MyxxMTIKKysJ YWVzaW1jCSRkYXQzLCRkYXQzCisrCWFlc2QJJGRhdDQscTEyCisrCWFlc2ltYwkkZGF0NCwkZGF0 NAorKworKwlhZXNkCSRkYXQwLHExMworKwlhZXNpbWMJJGRhdDAsJGRhdDAKKysJYWVzZAkkZGF0 MSxxMTMKKysJYWVzaW1jCSRkYXQxLCRkYXQxCisrCWFlc2QJJGRhdDIscTEzCisrCWFlc2ltYwkk ZGF0MiwkZGF0MgorKwlhZXNkCSRkYXQzLHExMworKwlhZXNpbWMJJGRhdDMsJGRhdDMKKysJYWVz ZAkkZGF0NCxxMTMKKysJYWVzaW1jCSRkYXQ0LCRkYXQ0CisrCisrCWFlc2QJJGRhdDAscTE0Cisr CWFlc2ltYwkkZGF0MCwkZGF0MAorKwlhZXNkCSRkYXQxLHExNAorKwlhZXNpbWMJJGRhdDEsJGRh dDEKKysJYWVzZAkkZGF0MixxMTQKKysJYWVzaW1jCSRkYXQyLCRkYXQyCisrCWFlc2QJJGRhdDMs cTE0CisrCWFlc2ltYwkkZGF0MywkZGF0MworKwlhZXNkCSRkYXQ0LHExNAorKwlhZXNpbWMJJGRh dDQsJGRhdDQKKysKKysJIHZlb3IJJHRtcDAsJGl2ZWMsJHJuZGxhc3QKKysJYWVzZAkkZGF0MCxx MTUKKysJIHZlb3IJJHRtcDEsJGluMCwkcm5kbGFzdAorKwkgdmxkMS44CXskaW4wfSxbJGlucF0s IzE2CisrCWFlc2QJJGRhdDEscTE1CisrCSB2ZW9yCSR0bXAyLCRpbjEsJHJuZGxhc3QKKysJIHZs ZDEuOAl7JGluMX0sWyRpbnBdLCMxNgorKwlhZXNkCSRkYXQyLHExNQorKwkgdmVvcgkkdG1wMywk aW4yLCRybmRsYXN0CisrCSB2bGQxLjgJeyRpbjJ9LFskaW5wXSwjMTYKKysJYWVzZAkkZGF0Myxx MTUKKysJIHZlb3IJJHRtcDQsJGluMywkcm5kbGFzdAorKwkgdmxkMS44CXskaW4zfSxbJGlucF0s IzE2CisrCWFlc2QJJGRhdDQscTE1CisrCSB2b3JyCSRpdmVjLCRpbjQsJGluNAorKwkgdmxkMS44 CXskaW40fSxbJGlucF0sIzE2CisrCWNiegl4NiwuTGNiY190YWlsNHgKKysJIHZsZDEuMzIge3E4 fSxbJGtleV9dLCMxNgkvLyByZS1wcmUtbG9hZCBybmRrZXlbMF0KKysJdmVvcgkkdG1wMCwkdG1w MCwkZGF0MAorKwkgdm9ycgkkZGF0MCwkaW4wLCRpbjAKKysJdmVvcgkkdG1wMSwkdG1wMSwkZGF0 MQorKwkgdm9ycgkkZGF0MSwkaW4xLCRpbjEKKysJdmVvcgkkdG1wMiwkdG1wMiwkZGF0MgorKwkg dm9ycgkkZGF0MiwkaW4yLCRpbjIKKysJdmVvcgkkdG1wMywkdG1wMywkZGF0MworKwkgdm9ycgkk ZGF0MywkaW4zLCRpbjMKKysJdmVvcgkkdG1wNCwkdG1wNCwkZGF0NAorKwl2c3QxLjgJeyR0bXAw fSxbJG91dF0sIzE2CisrCSB2b3JyCSRkYXQ0LCRpbjQsJGluNAorKwl2c3QxLjgJeyR0bXAxfSxb JG91dF0sIzE2CisrCSBtb3YJJGNudCwkcm91bmRzCisrCXZzdDEuOAl7JHRtcDJ9LFskb3V0XSwj MTYKKysJIHZsZDEuMzIge3E5fSxbJGtleV9dLCMxNgkvLyByZS1wcmUtbG9hZCBybmRrZXlbMV0K KysJdnN0MS44CXskdG1wM30sWyRvdXRdLCMxNgorKwl2c3QxLjgJeyR0bXA0fSxbJG91dF0sIzE2 CisrCWIuaHMJLkxvb3A1eF9jYmNfZGVjCisrCisrCWFkZAkkbGVuLCRsZW4sIzB4NTAKKysJY2J6 CSRsZW4sLkxjYmNfZG9uZQorKworKwlhZGQJJGNudCwkcm91bmRzLCMyCisrCXN1YnMJJGxlbiwk bGVuLCMweDMwCisrCXZvcnIJJGRhdDAsJGluMiwkaW4yCisrCXZvcnIJJGluMCwkaW4yLCRpbjIK KysJdm9ycgkkZGF0MSwkaW4zLCRpbjMKKysJdm9ycgkkaW4xLCRpbjMsJGluMworKwl2b3JyCSRk YXQyLCRpbjQsJGluNAorKwl2b3JyCSRpbjIsJGluNCwkaW40CisrCWIubG8JLkxjYmNfZGVjX3Rh aWwKKysKKysJYgkuTG9vcDN4X2NiY19kZWMKKyAKKysuYWxpZ24JNAorKy5MY2JjX3RhaWw0eDoK KysJdmVvcgkkdG1wMSwkdG1wMCwkZGF0MQorKwl2ZW9yCSR0bXAyLCR0bXAyLCRkYXQyCisrCXZl b3IJJHRtcDMsJHRtcDMsJGRhdDMKKysJdmVvcgkkdG1wNCwkdG1wNCwkZGF0NAorKwl2c3QxLjgJ eyR0bXAxfSxbJG91dF0sIzE2CisrCXZzdDEuOAl7JHRtcDJ9LFskb3V0XSwjMTYKKysJdnN0MS44 CXskdG1wM30sWyRvdXRdLCMxNgorKwl2c3QxLjgJeyR0bXA0fSxbJG91dF0sIzE2CisrCisrCWIJ LkxjYmNfZG9uZQorKy5hbGlnbgk0CisrX19fCisrJGNvZGUuPTw8X19fOworIC5Mb29wM3hfY2Jj X2RlYzoKKyAJYWVzZAkkZGF0MCxxOAorIAlhZXNpbWMJJGRhdDAsJGRhdDAKK0BAIC02OTEsNiAr OTE1LDkgQEAgbXkgJHN0ZXA9IngxMiI7CQkjIGFsaWFzZXMgd2l0aCAkdGN0cjIKKyBteSAoJGRh dDAsJGRhdDEsJGluMCwkaW4xLCR0bXAwLCR0bXAxLCRpdmVjLCRybmRsYXN0KT1tYXAoInEkXyIs KDAuLjcpKTsKKyBteSAoJGRhdDIsJGluMiwkdG1wMik9bWFwKCJxJF8iLCgxMCwxMSw5KSk7Cisg CisrIyB1c2VkIG9ubHkgaW4gNjQtYml0IG1vZGUuLi4KKytteSAoJGRhdDMsJGRhdDQsJGluMywk aW40KT1tYXAoInEkXyIsKDE2Li4yMykpOworKworIG15ICgkZGF0LCR0bXApPSgkZGF0MCwkdG1w MCk7CisgCisgIyMjIHE4LXExNQlwcmVsb2FkZWQga2V5IHNjaGVkdWxlCitAQCAtNzQzLDYgKzk3 MCwxNzUgQEAgJGNvZGUuPTw8X19fOworIAlyZXYJCSR0Y3RyMiwgJGN0cgorIAlzdWIJCSRsZW4s JGxlbiwjMwkJLy8gYmlhcworIAl2bW92LjMyCQkke2RhdDJ9WzNdLCR0Y3RyMgorK19fXworKyRj b2RlLj08PF9fXwlpZiAoJGZsYXZvdXIgPX4gLzY0Lyk7CisrCWNtcAkJJGxlbiwjMgorKwliLmxv CQkuTG9vcDN4X2N0cjMyCisrCisrCWFkZAkJdzEzLCRjdHIsIzEKKysJYWRkCQl3MTQsJGN0ciwj MgorKwl2b3JyCQkkZGF0MywkZGF0MCwkZGF0MAorKwlyZXYJCXcxMyx3MTMKKysJdm9ycgkJJGRh dDQsJGRhdDAsJGRhdDAKKysJcmV2CQl3MTQsdzE0CisrCXZtb3YuMzIJCSR7ZGF0M31bM10sdzEz CisrCXN1YgkJJGxlbiwkbGVuLCMyCQkvLyBiaWFzCisrCXZtb3YuMzIJCSR7ZGF0NH1bM10sdzE0 CisrCWFkZAkJJGN0ciwkY3RyLCMyCisrCWIJCS5Mb29wNXhfY3RyMzIKKysKKysuYWxpZ24JNAor Ky5Mb29wNXhfY3RyMzI6CisrCWFlc2UJCSRkYXQwLHE4CisrCWFlc21jCQkkZGF0MCwkZGF0MAor KwlhZXNlCQkkZGF0MSxxOAorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJYWVzZQkJJGRhdDIscTgK KysJYWVzbWMJCSRkYXQyLCRkYXQyCisrCWFlc2UJCSRkYXQzLHE4CisrCWFlc21jCQkkZGF0Mywk ZGF0MworKwlhZXNlCQkkZGF0NCxxOAorKwlhZXNtYwkJJGRhdDQsJGRhdDQKKysJdmxkMS4zMgkJ e3E4fSxbJGtleV9dLCMxNgorKwlzdWJzCQkkY250LCRjbnQsIzIKKysJYWVzZQkJJGRhdDAscTkK KysJYWVzbWMJCSRkYXQwLCRkYXQwCisrCWFlc2UJCSRkYXQxLHE5CisrCWFlc21jCQkkZGF0MSwk ZGF0MQorKwlhZXNlCQkkZGF0MixxOQorKwlhZXNtYwkJJGRhdDIsJGRhdDIKKysJYWVzZQkJJGRh dDMscTkKKysJYWVzbWMJCSRkYXQzLCRkYXQzCisrCWFlc2UJCSRkYXQ0LHE5CisrCWFlc21jCQkk ZGF0NCwkZGF0NAorKwl2bGQxLjMyCQl7cTl9LFska2V5X10sIzE2CisrCWIuZ3QJCS5Mb29wNXhf Y3RyMzIKKysKKysJbW92CQkka2V5Xywka2V5CisrCWFlc2UJCSRkYXQwLHE4CisrCWFlc21jCQkk ZGF0MCwkZGF0MAorKwlhZXNlCQkkZGF0MSxxOAorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJYWVz ZQkJJGRhdDIscTgKKysJYWVzbWMJCSRkYXQyLCRkYXQyCisrCWFlc2UJCSRkYXQzLHE4CisrCWFl c21jCQkkZGF0MywkZGF0MworKwlhZXNlCQkkZGF0NCxxOAorKwlhZXNtYwkJJGRhdDQsJGRhdDQK KysJdmxkMS4zMgkgCXtxOH0sWyRrZXlfXSwjMTYJLy8gcmUtcHJlLWxvYWQgcm5ka2V5WzBdCisr CisrCWFlc2UJCSRkYXQwLHE5CisrCWFlc21jCQkkZGF0MCwkZGF0MAorKwlhZXNlCQkkZGF0MSxx OQorKwlhZXNtYwkJJGRhdDEsJGRhdDEKKysJYWVzZQkJJGRhdDIscTkKKysJYWVzbWMJCSRkYXQy LCRkYXQyCisrCWFlc2UJCSRkYXQzLHE5CisrCWFlc21jCQkkZGF0MywkZGF0MworKwlhZXNlCQkk ZGF0NCxxOQorKwlhZXNtYwkJJGRhdDQsJGRhdDQKKysJdmxkMS4zMgkgCXtxOX0sWyRrZXlfXSwj MTYJLy8gcmUtcHJlLWxvYWQgcm5ka2V5WzFdCisrCisrCWFlc2UJCSRkYXQwLHExMgorKwlhZXNt YwkJJGRhdDAsJGRhdDAKKysJIGFkZAkJJHRjdHIwLCRjdHIsIzEKKysJIGFkZAkJJHRjdHIxLCRj dHIsIzIKKysJYWVzZQkJJGRhdDEscTEyCisrCWFlc21jCQkkZGF0MSwkZGF0MQorKwkgYWRkCQkk dGN0cjIsJGN0ciwjMworKwkgYWRkCQl3MTMsJGN0ciwjNAorKwlhZXNlCQkkZGF0MixxMTIKKysJ YWVzbWMJCSRkYXQyLCRkYXQyCisrCSBhZGQJCXcxNCwkY3RyLCM1CisrCSByZXYJCSR0Y3RyMCwk dGN0cjAKKysJYWVzZQkJJGRhdDMscTEyCisrCWFlc21jCQkkZGF0MywkZGF0MworKwkgcmV2CQkk dGN0cjEsJHRjdHIxCisrCSByZXYJCSR0Y3RyMiwkdGN0cjIKKysJYWVzZQkJJGRhdDQscTEyCisr CWFlc21jCQkkZGF0NCwkZGF0NAorKwkgcmV2CQl3MTMsdzEzCisrCSByZXYJCXcxNCx3MTQKKysK KysJYWVzZQkJJGRhdDAscTEzCisrCWFlc21jCQkkZGF0MCwkZGF0MAorKwlhZXNlCQkkZGF0MSxx MTMKKysJYWVzbWMJCSRkYXQxLCRkYXQxCisrCWFlc2UJCSRkYXQyLHExMworKwlhZXNtYwkJJGRh dDIsJGRhdDIKKysJYWVzZQkJJGRhdDMscTEzCisrCWFlc21jCQkkZGF0MywkZGF0MworKwlhZXNl CQkkZGF0NCxxMTMKKysJYWVzbWMJCSRkYXQ0LCRkYXQ0CisrCisrCWFlc2UJCSRkYXQwLHExNAor KwlhZXNtYwkJJGRhdDAsJGRhdDAKKysJIHZsZDEuOAkJeyRpbjB9LFskaW5wXSwjMTYKKysJYWVz ZQkJJGRhdDEscTE0CisrCWFlc21jCQkkZGF0MSwkZGF0MQorKwkgdmxkMS44CQl7JGluMX0sWyRp bnBdLCMxNgorKwlhZXNlCQkkZGF0MixxMTQKKysJYWVzbWMJCSRkYXQyLCRkYXQyCisrCSB2bGQx LjgJCXskaW4yfSxbJGlucF0sIzE2CisrCWFlc2UJCSRkYXQzLHExNAorKwlhZXNtYwkJJGRhdDMs JGRhdDMKKysJIHZsZDEuOAkJeyRpbjN9LFskaW5wXSwjMTYKKysJYWVzZQkJJGRhdDQscTE0Cisr CWFlc21jCQkkZGF0NCwkZGF0NAorKwkgdmxkMS44CQl7JGluNH0sWyRpbnBdLCMxNgorKworKwlh ZXNlCQkkZGF0MCxxMTUKKysJIHZlb3IJCSRpbjAsJGluMCwkcm5kbGFzdAorKwlhZXNlCQkkZGF0 MSxxMTUKKysJIHZlb3IJCSRpbjEsJGluMSwkcm5kbGFzdAorKwlhZXNlCQkkZGF0MixxMTUKKysJ IHZlb3IJCSRpbjIsJGluMiwkcm5kbGFzdAorKwlhZXNlCQkkZGF0MyxxMTUKKysJIHZlb3IJCSRp bjMsJGluMywkcm5kbGFzdAorKwlhZXNlCQkkZGF0NCxxMTUKKysJIHZlb3IJCSRpbjQsJGluNCwk cm5kbGFzdAorKworKwl2ZW9yCQkkaW4wLCRpbjAsJGRhdDAKKysJIHZvcnIJCSRkYXQwLCRpdmVj LCRpdmVjCisrCXZlb3IJCSRpbjEsJGluMSwkZGF0MQorKwkgdm9ycgkJJGRhdDEsJGl2ZWMsJGl2 ZWMKKysJdmVvcgkJJGluMiwkaW4yLCRkYXQyCisrCSB2b3JyCQkkZGF0MiwkaXZlYywkaXZlYwor Kwl2ZW9yCQkkaW4zLCRpbjMsJGRhdDMKKysJIHZvcnIJCSRkYXQzLCRpdmVjLCRpdmVjCisrCXZl b3IJCSRpbjQsJGluNCwkZGF0NAorKwkgdm9ycgkJJGRhdDQsJGl2ZWMsJGl2ZWMKKysKKysJdnN0 MS44CQl7JGluMH0sWyRvdXRdLCMxNgorKwkgdm1vdi4zMgkke2RhdDB9WzNdLCR0Y3RyMAorKwl2 c3QxLjgJCXskaW4xfSxbJG91dF0sIzE2CisrCSB2bW92LjMyCSR7ZGF0MX1bM10sJHRjdHIxCisr CXZzdDEuOAkJeyRpbjJ9LFskb3V0XSwjMTYKKysJIHZtb3YuMzIJJHtkYXQyfVszXSwkdGN0cjIK KysJdnN0MS44CQl7JGluM30sWyRvdXRdLCMxNgorKwkgdm1vdi4zMgkke2RhdDN9WzNdLHcxMwor Kwl2c3QxLjgJCXskaW40fSxbJG91dF0sIzE2CisrCSB2bW92LjMyCSR7ZGF0NH1bM10sdzE0Cisr CisrCW1vdgkJJGNudCwkcm91bmRzCisrCWNiegkJJGxlbiwuTGN0cjMyX2RvbmUKKysKKysJYWRk CQkkY3RyLCRjdHIsIzUKKysJc3VicwkJJGxlbiwkbGVuLCM1CisrCWIuaHMJCS5Mb29wNXhfY3Ry MzIKKysKKysJYWRkCQkkbGVuLCRsZW4sIzUKKysJc3ViCQkkY3RyLCRjdHIsIzUKKysKKysJY21w CQkkbGVuLCMyCisrCW1vdgkJJHN0ZXAsIzE2CisrCWNjbHIJCSRzdGVwLGxvCisrCWIubHMJCS5M Y3RyMzJfdGFpbAorKworKwlzdWIJCSRsZW4sJGxlbiwjMwkJLy8gYmlhcworKwlhZGQJCSRjdHIs JGN0ciwjMworK19fXworKyRjb2RlLj08PF9fXzsKKyAJYgkJLkxvb3AzeF9jdHIzMgorIAorIC5h bGlnbgk0CitAQCAtOTU1LDcgKzEzNTEsNyBAQCBpZiAoJGZsYXZvdXIgPX4gLzY0LykgewkJCSMj IyMjIyMjIDY0LWJpCisgCSAgICAjIHNpbmNlIEFSTXY3IGluc3RydWN0aW9ucyBhcmUgYWx3YXlz IGVuY29kZWQgbGl0dGxlLWVuZGlhbi4KKyAJICAgICMgY29ycmVjdCBzb2x1dGlvbiBpcyB0byB1 c2UgLmluc3QgZGlyZWN0aXZlLCBidXQgb2xkZXIKKyAJICAgICMgYXNzZW1ibGVycyBkb24ndCBp bXBsZW1lbnQgaXQ6LSgKKy0JICAgIHNwcmludGYgIi5ieXRlXHQweCUwMngsMHglMDJ4LDB4JTAy eCwweCUwMnhcdEAgJXMgJXMiLAorKwkgICAgc3ByaW50ZiAiSU5TVCgweCUwMngsMHglMDJ4LDB4 JTAyeCwweCUwMngpXHRAICVzICVzIiwKKyAJCQkkd29yZCYweGZmLCgkd29yZD4+OCkmMHhmZiwK KyAJCQkoJHdvcmQ+PjE2KSYweGZmLCgkd29yZD4+MjQpJjB4ZmYsCisgCQkJJG1uZW1vbmljLCRh cmc7CitAQCAtOTk2LDE0ICsxMzkyLDE3IEBAIGlmICgkZmxhdm91ciA9fiAvNjQvKSB7CQkJIyMj IyMjIyMgNjQtYmkKKyAJcy9cXSwjWzAtOV0rL10hL287CisgCisgCXMvW3ZdPyhhZXNcdyspXHMr KFtxdl0uKikvdW5hZXMoJDEsJDIpL2dlbwlvcgorLQlzL2NjbHJccysoW14sXSspLFxzKihbYS16 XSspL21vdiQyCSQxLCMwL28Jb3IKKysJcy9jY2xyXHMrKFteLF0rKSxccyooW2Etel0rKS9tb3Yu JDIJJDEsIzAvbwlvcgorIAlzL3Z0YmxcLjhccysoLiopL3VudnRibCgkMSkvZ2VvCQkJb3IKKyAJ cy92ZHVwXC4zMlxzKyguKikvdW52ZHVwMzIoJDEpL2dlbwkJb3IKKyAJcy92bW92XC4zMlxzKygu KikvdW52bW92MzIoJDEpL2dlbwkJb3IKKyAJcy9eKFxzKyliXC4vJDFiL28JCQkJb3IKKy0Jcy9e KFxzKyltb3ZcLi8kMW1vdi9vCQkJCW9yCisgCXMvXihccyspcmV0LyQxYnhcdGxyL287CisgCisr CWlmIChzL14oXHMrKW1vdlwuKFthLXpdKykvJDFtb3YkMi8pIHsKKysJICAgIHByaW50ICIJaXQJ JDJcbiI7CisrCX0KKysKKyAJcHJpbnQgJF8sIlxuIjsKKyAgICAgfQorIH0KK2RpZmYgLXVwIG9w ZW5zc2wtMS4xLjFjL2NyeXB0by9hZXMvYXNtL3ZwYWVzLWFybXY4LnBsLmFybS11cGRhdGUgb3Bl bnNzbC0xLjEuMWMvY3J5cHRvL2Flcy9hc20vdnBhZXMtYXJtdjgucGwKKy0tLSBvcGVuc3NsLTEu MS4xYy9jcnlwdG8vYWVzL2FzbS92cGFlcy1hcm12OC5wbC5hcm0tdXBkYXRlCTIwMTktMDUtMjgg MTU6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWMvY3J5cHRvL2Flcy9h c20vdnBhZXMtYXJtdjgucGwJMjAxOS0xMS0yMCAxMTozNjoyMi4zODk1MDYxNTUgKzAxMDAKK0BA IC0zMCw2ICszMCw3IEBACisgIyBEZW52ZXIoKioqKSAgICAgICAxNi42KCoqKSAgICAxNS4xLzE3 LjgoKiopICAgIFs4LjgwLzkuOTMgICAgICAgICBdCisgIyBBcHBsZSBBNygqKiopICAgICAyMi43 KCoqKSAgICAxMC45LzE0LjMgICAgICAgIFs4LjQ1LzEwLjAgICAgICAgICBdCisgIyBNb25nb29z ZSgqKiopICAgICAyNi4zKCoqKSAgICAyMS4wLzI1LjAoKiopICAgIFsxMy4zLzE2LjggICAgICAg ICBdCisrIyBUaHVuZGVyWDIoKioqKSAgICAzOS40KCoqKSAgICAzMy44LzQ4LjYoKiopCisgIwor ICMgKCopCUVDQiBkZW5vdGVzIGFwcHJveGltYXRlIHJlc3VsdCBmb3IgcGFyYWxsZWxpemFibGUg bW9kZXMKKyAjCXN1Y2ggYXMgQ0JDIGRlY3J5cHQsIENUUiwgZXRjLjsKK2RpZmYgLXVwIG9wZW5z c2wtMS4xLjFjL2NyeXB0by9jaGFjaGEvYXNtL2NoYWNoYS1hcm12OC5wbC5hcm0tdXBkYXRlIG9w ZW5zc2wtMS4xLjFjL2NyeXB0by9jaGFjaGEvYXNtL2NoYWNoYS1hcm12OC5wbAorLS0tIG9wZW5z c2wtMS4xLjFjL2NyeXB0by9jaGFjaGEvYXNtL2NoYWNoYS1hcm12OC5wbC5hcm0tdXBkYXRlCTIw MTktMDUtMjggMTU6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWMvY3J5 cHRvL2NoYWNoYS9hc20vY2hhY2hhLWFybXY4LnBsCTIwMTktMTEtMjEgMTY6NDQ6NTAuODE0NjUx NTUzICswMTAwCitAQCAtMTgsMzIgKzE4LDQ0IEBACisgIworICMgQ2hhQ2hhMjAgZm9yIEFSTXY4 LgorICMKKysjIEFwcmlsIDIwMTkKKysjCisrIyBSZXBsYWNlIDN4TkVPTisxeElBTFUgY29kZSBw YXRoIHdpdGggNCsxLiA0KzEgaXMgYWN0dWFsbHkgZmFzdGVzdAorKyMgb3B0aW9uIG9uIG1vc3Qo KiksIGJ1dCBub3QgYWxsLCBwcm9jZXNzb3JzLCB5ZXQgNisyIGlzIHJldGFpbmVkLgorKyMgVGhp cyBpcyBiZWNhdXNlIHBlbmFsdGllcyBhcmUgY29uc2lkZXJlZCB0b2xlcmFibGUgaW4gY29tcGFy aXNvbiB0bworKyMgaW1wcm92ZW1lbnQgb24gcHJvY2Vzc29ycyB3aGVyZSA2KzIgaGVscHMuIE1v c3Qgbm90YWJseSArMzclIG9uCisrIyBUaHVuZGVyWDIuIEl0J3Mgc2VydmVyLW9yaWVudGVkIHBy b2Nlc3NvciB3aGljaCB3aWxsIGhhdmUgdG8gc2VydmUKKysjIGFzIG1hbnkgcmVxdWVzdHMgYXMg cG9zc2libGUuIFdoaWxlIG90aGVycyBhcmUgbW9zdGx5IGNsaWVudHMsIHdoZW4KKysjIHBlcmZv cm1hbmNlIGRvZXNuJ3QgaGF2ZSB0byBiZSBhYnNvbHV0ZSB0b3Atbm90Y2gsIGp1c3QgZmFzdCBl bm91Z2gsCisrIyBhcyBtYWpvcml0eSBvZiB0aW1lIGlzIHNwZW50ICJlbnRlcnRhaW5pbmciIHJl bGF0aXZlbHkgc2xvdyBodW1hbi4KKysjCisgIyBQZXJmb3JtYW5jZSBpbiBjeWNsZXMgcGVyIGJ5 dGUgb3V0IG9mIGxhcmdlIGJ1ZmZlci4KKyAjCistIwkJCUlBTFUvZ2NjLTQuOSAgICAzeE5FT04r MXhJQUxVCTZ4TkVPTisyeElBTFUKKysjCQkJSUFMVS9nY2MtNC45CTR4TkVPTisxeElBTFUJNnhO RU9OKzJ4SUFMVQorICMKKy0jIEFwcGxlIEE3CQk1LjUwLys0OSUgICAgICAgMy4zMyAgICAgICAg ICAgIDEuNzAKKy0jIENvcnRleC1BNTMJCTguNDAvKzgwJSAgICAgICA0LjcyCQk0LjcyKCopCist IyBDb3J0ZXgtQTU3CQk4LjA2Lys0MyUgICAgICAgNC45MCAgICAgICAgICAgIDQuNDMoKiopCist IyBEZW52ZXIJCTQuNTAvKzgyJSAgICAgICAyLjYzCQkyLjY3KCopCistIyBYLUdlbmUJCTkuNTAv KzQ2JSAgICAgICA4LjgyCQk4Ljg5KCopCistIyBNb25nb29zZQkJOC4wMC8rNDQlCTMuNjQJCTMu MjUKKy0jIEtyeW8JCQk4LjE3Lys1MCUJNC44MwkJNC42NQorKyMgQXBwbGUgQTcJCTUuNTAvKzQ5 JQkyLjcyCQkxLjYwCisrIyBDb3J0ZXgtQTUzCQk4LjQwLys4MCUJNC4wNgkJNC40NSgqKQorKyMg Q29ydGV4LUE1NwkJOC4wNi8rNDMlCTQuMTUJCTQuNDAoKikKKysjIERlbnZlcgkJNC41MC8rODIl CTIuMzAJCTIuNzAoKikKKysjIFgtR2VuZQkJOS41MC8rNDYlCTguMjAJCTguOTAoKikKKysjIE1v bmdvb3NlCQk4LjAwLys0NCUJMi43NAkJMy4xMigqKQorKyMgS3J5bwkJCTguMTcvKzUwJQk0LjQ3 CQk0LjY1KCopCisrIyBUaHVuZGVyWDIJCTcuMjIvKzQ4JQk1LjY0CQk0LjEwCisgIworLSMgKCop CWl0J3MgZXhwZWN0ZWQgdGhhdCBkb3VibGluZyBpbnRlcmxlYXZlIGZhY3RvciBkb2Vzbid0IGhl bHAKKy0jCWFsbCBwcm9jZXNzb3JzLCBvbmx5IHRob3NlIHdpdGggaGlnaGVyIE5FT04gbGF0ZW5j eSBhbmQKKy0jCWhpZ2hlciBpbnN0cnVjdGlvbiBpc3N1ZSByYXRlOworLSMgKCoqKQlleHBlY3Rl ZCBpbXByb3ZlbWVudCB3YXMgYWN0dWFsbHkgaGlnaGVyOworKyMgKCopCXNsb3dlciB0aGFuIDQr MTotKAorIAorLSRmbGF2b3VyPXNoaWZ0OworLSRvdXRwdXQ9c2hpZnQ7CisrIyAkb3V0cHV0IGlz IHRoZSBsYXN0IGFyZ3VtZW50IGlmIGl0IGxvb2tzIGxpa2UgYSBmaWxlIChpdCBoYXMgYW4gZXh0 ZW5zaW9uKQorKyMgJGZsYXZvdXIgaXMgdGhlIGZpcnN0IGFyZ3VtZW50IGlmIGl0IGRvZXNuJ3Qg bG9vayBsaWtlIGEgZmlsZQorKyRvdXRwdXQgPSAkI0FSR1YgPj0gMCAmJiAkQVJHVlskI0FSR1Zd ID1+IG18XC5cdyskfCA/IHBvcCA6IHVuZGVmOworKyRmbGF2b3VyID0gJCNBUkdWID49IDAgJiYg JEFSR1ZbMF0gIX4gbXxcLnwgPyBzaGlmdCA6IHVuZGVmOworIAorICQwID1+IG0vKC4qW1wvXFxd KVteXC9cXF0rJC87ICRkaXI9JDE7CisgKCAkeGxhdGU9IiR7ZGlyfWFybS14bGF0ZS5wbCIgYW5k IC1mICR4bGF0ZSApIG9yCisgKCAkeGxhdGU9IiR7ZGlyfS4uLy4uL3Blcmxhc20vYXJtLXhsYXRl LnBsIiBhbmQgLWYgJHhsYXRlKSBvcgorIGRpZSAiY2FuJ3QgbG9jYXRlIGFybS14bGF0ZS5wbCI7 CisgCistb3BlbiBPVVQsInwgXCIkXlhcIiAkeGxhdGUgJGZsYXZvdXIgJG91dHB1dCI7Cisrb3Bl biBPVVQsInwgXCIkXlhcIiAkeGxhdGUgJGZsYXZvdXIgXCIkb3V0cHV0XCIiCisrICAgIG9yIGRp ZSAiY2FuJ3QgY2FsbCAkeGxhdGU6ICQhIjsKKyAqU1RET1VUPSpPVVQ7CisgCisgc3ViIEFVVE9M T0FEKCkJCSMgdGh1bmsgW3NpbXBsaWZpZWRdIHg4Ni1zdHlsZSBwZXJsYXNtCitAQCAtMTIwLDQx ICsxMzIsMzYgQEAgbXkgKCRhMywkYjMsJGMzLCRkMyk9bWFwKCgkXyZ+MykrKCgkXysxKQorIH0K KyAKKyAkY29kZS49PDxfX187CistI2luY2x1ZGUgImFybV9hcmNoLmgiCisrI2lmbmRlZglfX0tF Uk5FTF9fCisrIyBpbmNsdWRlICJhcm1fYXJjaC5oIgorKy5leHRlcm4JT1BFTlNTTF9hcm1jYXBf UAorKyNlbmRpZgorIAorIC50ZXh0CisgCistLmV4dGVybglPUEVOU1NMX2FybWNhcF9QCistCisg LmFsaWduCTUKKyAuTHNpZ21hOgorIC5xdWFkCTB4MzMyMDY0NmU2MTcwNzg2NSwweDZiMjA2NTc0 Nzk2MjJkMzIJCS8vIGVuZGlhbi1uZXV0cmFsCisgLkxvbmU6CistLmxvbmcJMSwwLDAsMAorLS5M T1BFTlNTTF9hcm1jYXBfUDoKKy0jaWZkZWYJX19JTFAzMl9fCistLmxvbmcJT1BFTlNTTF9hcm1j YXBfUC0uCistI2Vsc2UKKy0ucXVhZAlPUEVOU1NMX2FybWNhcF9QLS4KKy0jZW5kaWYKKy0uYXNj aXoJIkNoYUNoYTIwIGZvciBBUk12OCwgQ1JZUFRPR0FNUyBieSA8YXBwcm9cQG9wZW5zc2wub3Jn PiIKKysubG9uZwkxLDIsMyw0CisrLkxyb3QyNDoKKysubG9uZwkweDAyMDEwMDAzLDB4MDYwNTA0 MDcsMHgwYTA5MDgwYiwweDBlMGQwYzBmCisrLmFzY2l6CSJDaGFDaGEyMCBmb3IgQVJNdjgsIENS WVBUT0dBTVMgYnkgXEBkb3QtYXNtIgorIAorIC5nbG9ibAlDaGFDaGEyMF9jdHIzMgorIC50eXBl CUNoYUNoYTIwX2N0cjMyLCVmdW5jdGlvbgorIC5hbGlnbgk1CisgQ2hhQ2hhMjBfY3RyMzI6Cisg CWNiegkkbGVuLC5MYWJvcnQKKy0JYWRyCUB4WzBdLC5MT1BFTlNTTF9hcm1jYXBfUAorIAljbXAJ JGxlbiwjMTkyCisgCWIubG8JLkxzaG9ydAorLSNpZmRlZglfX0lMUDMyX18KKy0JbGRyc3cJQHhb MV0sW0B4WzBdXQorLSNlbHNlCistCWxkcglAeFsxXSxbQHhbMF1dCistI2VuZGlmCistCWxkcgl3 MTcsW0B4WzFdLEB4WzBdXQorKworKyNpZm5kZWYJX19LRVJORUxfXworKwlhZHJwCXgxNyxPUEVO U1NMX2FybWNhcF9QCisrCWxkcgl3MTcsW3gxNywjOmxvMTI6T1BFTlNTTF9hcm1jYXBfUF0KKyAJ dHN0CXcxNywjQVJNVjdfTkVPTgorLQliLm5lCUNoYUNoYTIwX25lb24KKysJYi5uZQkuTENoYUNo YTIwX25lb24KKysjZW5kaWYKKyAKKyAuTHNob3J0OgorIAkuaW5zdAkweGQ1MDMyMzNmCQkJLy8g cGFjaWFzcAorQEAgLTE3Myw3ICsxODAsNyBAQCBDaGFDaGEyMF9jdHIzMjoKKyAJbGRwCUBkWzJd LEBkWzNdLFska2V5XQkJLy8gbG9hZCBrZXkKKyAJbGRwCUBkWzRdLEBkWzVdLFska2V5LCMxNl0K KyAJbGRwCUBkWzZdLEBkWzddLFskY3RyXQkJLy8gbG9hZCBjb3VudGVyCistI2lmZGVmCV9fQVJN RUJfXworKyNpZmRlZglfX0FBUkNINjRFQl9fCisgCXJvcglAZFsyXSxAZFsyXSwjMzIKKyAJcm9y CUBkWzNdLEBkWzNdLCMzMgorIAlyb3IJQGRbNF0sQGRbNF0sIzMyCitAQCAtMjQyLDcgKzI0OSw3 IEBAICRjb2RlLj08PF9fXzsKKyAJYWRkCUB4WzE0XSxAeFsxNF0sQHhbMTVdLGxzbCMzMgorIAls ZHAJQHhbMTNdLEB4WzE1XSxbJGlucCwjNDhdCisgCWFkZAkkaW5wLCRpbnAsIzY0CistI2lmZGVm CV9fQVJNRUJfXworKyNpZmRlZglfX0FBUkNINjRFQl9fCisgCXJldglAeFswXSxAeFswXQorIAly ZXYJQHhbMl0sQHhbMl0KKyAJcmV2CUB4WzRdLEB4WzRdCitAQCAtMjk5LDcgKzMwNiw3IEBAICRj b2RlLj08PF9fXzsKKyAJYWRkCUB4WzEwXSxAeFsxMF0sQHhbMTFdLGxzbCMzMgorIAlhZGQJQHhb MTJdLEB4WzEyXSxAeFsxM10sbHNsIzMyCisgCWFkZAlAeFsxNF0sQHhbMTRdLEB4WzE1XSxsc2wj MzIKKy0jaWZkZWYJX19BUk1FQl9fCisrI2lmZGVmCV9fQUFSQ0g2NEVCX18KKyAJcmV2CUB4WzBd LEB4WzBdCisgCXJldglAeFsyXSxAeFsyXQorIAlyZXYJQHhbNF0sQHhbNF0KK0BAIC0zNDAsNDYg KzM0Nyw5MSBAQCAkY29kZS49PDxfX187CisgX19fCisgCisge3t7CistbXkgKCRBMCwkQjAsJEMw LCREMCwkQTEsJEIxLCRDMSwkRDEsJEEyLCRCMiwkQzIsJEQyLCRUMCwkVDEsJFQyLCRUMykgPQor LSAgICBtYXAoInYkXy40cyIsKDAuLjcsMTYuLjIzKSk7CistbXkgKEBLKT1tYXAoInYkXy40cyIs KDI0Li4zMCkpOworLW15ICRPTkU9InYzMS40cyI7CisrbXkgQEsgPSBtYXAoInYkXy40cyIsKDAu LjMpKTsKKytteSAoJHh0MCwkeHQxLCR4dDIsJHh0MywgJENUUiwkUk9UMjQpID0gbWFwKCJ2JF8u NHMiLCg0Li45KSk7CisrbXkgQFggPSBtYXAoInYkXy40cyIsKDE2LDIwLDI0LDI4LCAxNywyMSwy NSwyOSwgMTgsMjIsMjYsMzAsIDE5LDIzLDI3LDMxKSk7CisrbXkgKCR4YTAsJHhhMSwkeGEyLCR4 YTMsICR4YjAsJHhiMSwkeGIyLCR4YjMsCisrICAgICR4YzAsJHhjMSwkeGMyLCR4YzMsICR4ZDAs JHhkMSwkeGQyLCR4ZDMpID0gQFg7CisgCistc3ViIE5FT05ST1VORCB7CistbXkgJG9kZCA9IHBv cDsKKy1teSAoJGEsJGIsJGMsJGQsJHQpPUBfOworK3N1YiBORU9OX2xhbmVfUk9VTkQgeworK215 ICgkYTAsJGIwLCRjMCwkZDApPUBfOworK215ICgkYTEsJGIxLCRjMSwkZDEpPW1hcCgoJF8mfjMp KygoJF8rMSkmMyksKCRhMCwkYjAsJGMwLCRkMCkpOworK215ICgkYTIsJGIyLCRjMiwkZDIpPW1h cCgoJF8mfjMpKygoJF8rMSkmMyksKCRhMSwkYjEsJGMxLCRkMSkpOworK215ICgkYTMsJGIzLCRj MywkZDMpPW1hcCgoJF8mfjMpKygoJF8rMSkmMyksKCRhMiwkYjIsJGMyLCRkMikpOworK215IEB4 PW1hcCgiJyRfJyIsQFgpOworIAorIAkoCistCSImYWRkCQkoJyRhJywnJGEnLCckYicpIiwKKy0J IiZlb3IJCSgnJGQnLCckZCcsJyRhJykiLAorLQkiJnJldjMyXzE2CSgnJGQnLCckZCcpIiwJCSMg dnJvdCAoJGQsMTYpCistCistCSImYWRkCQkoJyRjJywnJGMnLCckZCcpIiwKKy0JIiZlb3IJCSgn JHQnLCckYicsJyRjJykiLAorLQkiJnVzaHIJCSgnJGInLCckdCcsMjApIiwKKy0JIiZzbGkJCSgn JGInLCckdCcsMTIpIiwKKy0KKy0JIiZhZGQJCSgnJGEnLCckYScsJyRiJykiLAorLQkiJmVvcgkJ KCckdCcsJyRkJywnJGEnKSIsCistCSImdXNocgkJKCckZCcsJyR0JywyNCkiLAorLQkiJnNsaQkJ KCckZCcsJyR0Jyw4KSIsCistCistCSImYWRkCQkoJyRjJywnJGMnLCckZCcpIiwKKy0JIiZlb3IJ CSgnJHQnLCckYicsJyRjJykiLAorLQkiJnVzaHIJCSgnJGInLCckdCcsMjUpIiwKKy0JIiZzbGkJ CSgnJGInLCckdCcsNykiLAorLQorLQkiJmV4dAkJKCckYycsJyRjJywnJGMnLDgpIiwKKy0JIiZl eHQJCSgnJGQnLCckZCcsJyRkJywkb2RkPzQ6MTIpIiwKKy0JIiZleHQJCSgnJGInLCckYicsJyRi Jywkb2RkPzEyOjQpIgorKwkiJmFkZAkJKEB4WyRhMF0sQHhbJGEwXSxAeFskYjBdKSIsCSMgUTEK KysJICImYWRkCQkoQHhbJGExXSxAeFskYTFdLEB4WyRiMV0pIiwJIyBRMgorKwkgICImYWRkCQko QHhbJGEyXSxAeFskYTJdLEB4WyRiMl0pIiwJIyBRMworKwkgICAiJmFkZAkoQHhbJGEzXSxAeFsk YTNdLEB4WyRiM10pIiwJIyBRNAorKwkiJmVvcgkJKEB4WyRkMF0sQHhbJGQwXSxAeFskYTBdKSIs CisrCSAiJmVvcgkJKEB4WyRkMV0sQHhbJGQxXSxAeFskYTFdKSIsCisrCSAgIiZlb3IJCShAeFsk ZDJdLEB4WyRkMl0sQHhbJGEyXSkiLAorKwkgICAiJmVvcgkoQHhbJGQzXSxAeFskZDNdLEB4WyRh M10pIiwKKysJIiZyZXYzMl8xNgkoQHhbJGQwXSxAeFskZDBdKSIsCisrCSAiJnJldjMyXzE2CShA eFskZDFdLEB4WyRkMV0pIiwKKysJICAiJnJldjMyXzE2CShAeFskZDJdLEB4WyRkMl0pIiwKKysJ ICAgIiZyZXYzMl8xNgkoQHhbJGQzXSxAeFskZDNdKSIsCisrCisrCSImYWRkCQkoQHhbJGMwXSxA eFskYzBdLEB4WyRkMF0pIiwKKysJICImYWRkCQkoQHhbJGMxXSxAeFskYzFdLEB4WyRkMV0pIiwK KysJICAiJmFkZAkJKEB4WyRjMl0sQHhbJGMyXSxAeFskZDJdKSIsCisrCSAgICImYWRkCShAeFsk YzNdLEB4WyRjM10sQHhbJGQzXSkiLAorKwkiJmVvcgkJKCckeHQwJyxAeFskYjBdLEB4WyRjMF0p IiwKKysJICImZW9yCQkoJyR4dDEnLEB4WyRiMV0sQHhbJGMxXSkiLAorKwkgICImZW9yCQkoJyR4 dDInLEB4WyRiMl0sQHhbJGMyXSkiLAorKwkgICAiJmVvcgkoJyR4dDMnLEB4WyRiM10sQHhbJGMz XSkiLAorKwkiJnVzaHIJCShAeFskYjBdLCckeHQwJywyMCkiLAorKwkgIiZ1c2hyCQkoQHhbJGIx XSwnJHh0MScsMjApIiwKKysJICAiJnVzaHIJKEB4WyRiMl0sJyR4dDInLDIwKSIsCisrCSAgICIm dXNocgkoQHhbJGIzXSwnJHh0MycsMjApIiwKKysJIiZzbGkJCShAeFskYjBdLCckeHQwJywxMiki LAorKwkgIiZzbGkJCShAeFskYjFdLCckeHQxJywxMikiLAorKwkgICImc2xpCQkoQHhbJGIyXSwn JHh0MicsMTIpIiwKKysJICAgIiZzbGkJKEB4WyRiM10sJyR4dDMnLDEyKSIsCisrCisrCSImYWRk CQkoQHhbJGEwXSxAeFskYTBdLEB4WyRiMF0pIiwKKysJICImYWRkCQkoQHhbJGExXSxAeFskYTFd LEB4WyRiMV0pIiwKKysJICAiJmFkZAkJKEB4WyRhMl0sQHhbJGEyXSxAeFskYjJdKSIsCisrCSAg ICImYWRkCShAeFskYTNdLEB4WyRhM10sQHhbJGIzXSkiLAorKwkiJmVvcgkJKCckeHQwJyxAeFsk ZDBdLEB4WyRhMF0pIiwKKysJICImZW9yCQkoJyR4dDEnLEB4WyRkMV0sQHhbJGExXSkiLAorKwkg ICImZW9yCQkoJyR4dDInLEB4WyRkMl0sQHhbJGEyXSkiLAorKwkgICAiJmVvcgkoJyR4dDMnLEB4 WyRkM10sQHhbJGEzXSkiLAorKwkiJnRibAkJKEB4WyRkMF0sJ3skeHQwfScsJyRST1QyNCcpIiwK KysJICImdGJsCQkoQHhbJGQxXSwneyR4dDF9JywnJFJPVDI0JykiLAorKwkgICImdGJsCQkoQHhb JGQyXSwneyR4dDJ9JywnJFJPVDI0JykiLAorKwkgICAiJnRibAkoQHhbJGQzXSwneyR4dDN9Jywn JFJPVDI0JykiLAorKworKwkiJmFkZAkJKEB4WyRjMF0sQHhbJGMwXSxAeFskZDBdKSIsCisrCSAi JmFkZAkJKEB4WyRjMV0sQHhbJGMxXSxAeFskZDFdKSIsCisrCSAgIiZhZGQJCShAeFskYzJdLEB4 WyRjMl0sQHhbJGQyXSkiLAorKwkgICAiJmFkZAkoQHhbJGMzXSxAeFskYzNdLEB4WyRkM10pIiwK KysJIiZlb3IJCSgnJHh0MCcsQHhbJGIwXSxAeFskYzBdKSIsCisrCSAiJmVvcgkJKCckeHQxJyxA eFskYjFdLEB4WyRjMV0pIiwKKysJICAiJmVvcgkJKCckeHQyJyxAeFskYjJdLEB4WyRjMl0pIiwK KysJICAgIiZlb3IJKCckeHQzJyxAeFskYjNdLEB4WyRjM10pIiwKKysJIiZ1c2hyCQkoQHhbJGIw XSwnJHh0MCcsMjUpIiwKKysJICImdXNocgkJKEB4WyRiMV0sJyR4dDEnLDI1KSIsCisrCSAgIiZ1 c2hyCShAeFskYjJdLCckeHQyJywyNSkiLAorKwkgICAiJnVzaHIJKEB4WyRiM10sJyR4dDMnLDI1 KSIsCisrCSImc2xpCQkoQHhbJGIwXSwnJHh0MCcsNykiLAorKwkgIiZzbGkJCShAeFskYjFdLCck eHQxJyw3KSIsCisrCSAgIiZzbGkJCShAeFskYjJdLCckeHQyJyw3KSIsCisrCSAgICImc2xpCShA eFskYjNdLCckeHQzJyw3KSIKKyAJKTsKKyB9CisgCisgJGNvZGUuPTw8X19fOworIAorKyNpZmRl ZglfX0tFUk5FTF9fCisrLmdsb2JsCUNoYUNoYTIwX25lb24KKysjZW5kaWYKKyAudHlwZQlDaGFD aGEyMF9uZW9uLCVmdW5jdGlvbgorIC5hbGlnbgk1CisgQ2hhQ2hhMjBfbmVvbjoKKysuTENoYUNo YTIwX25lb246CisgCS5pbnN0CTB4ZDUwMzIzM2YJCQkvLyBwYWNpYXNwCisgCXN0cAl4MjkseDMw LFtzcCwjLTk2XSEKKyAJYWRkCXgyOSxzcCwjMAorQEAgLTQwMiw4ICs0NTQsOSBAQCBDaGFDaGEy MF9uZW9uOgorIAlsZDEJe0BLWzFdLEBLWzJdfSxbJGtleV0KKyAJbGRwCUBkWzZdLEBkWzddLFsk Y3RyXQkJLy8gbG9hZCBjb3VudGVyCisgCWxkMQl7QEtbM119LFskY3RyXQorLQlsZDEJeyRPTkV9 LFtAeFswXV0KKy0jaWZkZWYJX19BUk1FQl9fCisrCXN0cAlkOCxkOSxbc3BdCQkJLy8gbWVldCBB QkkgcmVxdWlyZW1lbnRzCisrCWxkMQl7JENUUiwkUk9UMjR9LFtAeFswXV0KKysjaWZkZWYJX19B QVJDSDY0RUJfXworIAlyZXY2NAlAS1swXSxAS1swXQorIAlyb3IJQGRbMl0sQGRbMl0sIzMyCisg CXJvcglAZFszXSxAZFszXSwjMzIKK0BAIC00MTIsMTE1ICs0NjUsMTI5IEBAIENoYUNoYTIwX25l b246CisgCXJvcglAZFs2XSxAZFs2XSwjMzIKKyAJcm9yCUBkWzddLEBkWzddLCMzMgorICNlbmRp ZgorLQlhZGQJQEtbM10sQEtbM10sJE9ORQkJLy8gKz0gMQorLQlhZGQJQEtbNF0sQEtbM10sJE9O RQorLQlhZGQJQEtbNV0sQEtbNF0sJE9ORQorLQlzaGwJJE9ORSwkT05FLCMyCQkJLy8gMSAtPiA0 CisgCisgLkxvb3Bfb3V0ZXJfbmVvbjoKKy0JbW92LjMyCUB4WzBdLEBkWzBdCQkJLy8gdW5wYWNr IGtleSBibG9jaworLQlsc3IJQHhbMV0sQGRbMF0sIzMyCistCSBtb3YJJEEwLEBLWzBdCistCW1v di4zMglAeFsyXSxAZFsxXQorLQlsc3IJQHhbM10sQGRbMV0sIzMyCistCSBtb3YJJEExLEBLWzBd CistCW1vdi4zMglAeFs0XSxAZFsyXQorLQlsc3IJQHhbNV0sQGRbMl0sIzMyCistCSBtb3YJJEEy LEBLWzBdCistCW1vdi4zMglAeFs2XSxAZFszXQorLQkgbW92CSRCMCxAS1sxXQorLQlsc3IJQHhb N10sQGRbM10sIzMyCistCSBtb3YJJEIxLEBLWzFdCistCW1vdi4zMglAeFs4XSxAZFs0XQorLQkg bW92CSRCMixAS1sxXQorLQlsc3IJQHhbOV0sQGRbNF0sIzMyCistCSBtb3YJJEQwLEBLWzNdCist CW1vdi4zMglAeFsxMF0sQGRbNV0KKy0JIG1vdgkkRDEsQEtbNF0KKy0JbHNyCUB4WzExXSxAZFs1 XSwjMzIKKy0JIG1vdgkkRDIsQEtbNV0KKy0JbW92LjMyCUB4WzEyXSxAZFs2XQorLQkgbW92CSRD MCxAS1syXQorLQlsc3IJQHhbMTNdLEBkWzZdLCMzMgorLQkgbW92CSRDMSxAS1syXQorLQltb3Yu MzIJQHhbMTRdLEBkWzddCistCSBtb3YJJEMyLEBLWzJdCistCWxzcglAeFsxNV0sQGRbN10sIzMy CisrCWR1cAkkeGEwLEB7S1swXX1bMF0JCQkvLyB1bnBhY2sga2V5IGJsb2NrCisrCSBtb3YuMzIJ QHhbMF0sQGRbMF0KKysJZHVwCSR4YTEsQHtLWzBdfVsxXQorKwkgbHNyCUB4WzFdLEBkWzBdLCMz MgorKwlkdXAJJHhhMixAe0tbMF19WzJdCisrCSBtb3YuMzIJQHhbMl0sQGRbMV0KKysJZHVwCSR4 YTMsQHtLWzBdfVszXQorKwkgbHNyCUB4WzNdLEBkWzFdLCMzMgorKwlkdXAJJHhiMCxAe0tbMV19 WzBdCisrCSBtb3YuMzIJQHhbNF0sQGRbMl0KKysJZHVwCSR4YjEsQHtLWzFdfVsxXQorKwkgbHNy CUB4WzVdLEBkWzJdLCMzMgorKwlkdXAJJHhiMixAe0tbMV19WzJdCisrCSBtb3YuMzIJQHhbNl0s QGRbM10KKysJZHVwCSR4YjMsQHtLWzFdfVszXQorKwkgbHNyCUB4WzddLEBkWzNdLCMzMgorKwlk dXAJJHhkMCxAe0tbM119WzBdCisrCSBtb3YuMzIJQHhbOF0sQGRbNF0KKysJZHVwCSR4ZDEsQHtL WzNdfVsxXQorKwkgbHNyCUB4WzldLEBkWzRdLCMzMgorKwlkdXAJJHhkMixAe0tbM119WzJdCisr CSBtb3YuMzIJQHhbMTBdLEBkWzVdCisrCWR1cAkkeGQzLEB7S1szXX1bM10KKysJIGxzcglAeFsx MV0sQGRbNV0sIzMyCisrCWFkZAkkeGQwLCR4ZDAsJENUUgorKwkgbW92LjMyCUB4WzEyXSxAZFs2 XQorKwlkdXAJJHhjMCxAe0tbMl19WzBdCisrCSBsc3IJQHhbMTNdLEBkWzZdLCMzMgorKwlkdXAJ JHhjMSxAe0tbMl19WzFdCisrCSBtb3YuMzIJQHhbMTRdLEBkWzddCisrCWR1cAkkeGMyLEB7S1sy XX1bMl0KKysJIGxzcglAeFsxNV0sQGRbN10sIzMyCisrCWR1cAkkeGMzLEB7S1syXX1bM10KKyAK KyAJbW92CSRjdHIsIzEwCistCXN1YnMJJGxlbiwkbGVuLCMyNTYKKysJc3VicwkkbGVuLCRsZW4s IzMyMAorIC5Mb29wX25lb246CisgCXN1YgkkY3RyLCRjdHIsIzEKKyBfX18KKy0JbXkgQHRocmVh ZDA9Jk5FT05ST1VORCgkQTAsJEIwLCRDMCwkRDAsJFQwLDApOworLQlteSBAdGhyZWFkMT0mTkVP TlJPVU5EKCRBMSwkQjEsJEMxLCREMSwkVDEsMCk7CistCW15IEB0aHJlYWQyPSZORU9OUk9VTkQo JEEyLCRCMiwkQzIsJEQyLCRUMiwwKTsKKy0JbXkgQHRocmVhZDM9JlJPVU5EKDAsNCw4LDEyKTsK Ky0KKy0JZm9yZWFjaCAoQHRocmVhZDApIHsKKy0JCWV2YWw7CQkJZXZhbChzaGlmdChAdGhyZWFk MykpOworLQkJZXZhbChzaGlmdChAdGhyZWFkMSkpOwlldmFsKHNoaWZ0KEB0aHJlYWQzKSk7Cist CQlldmFsKHNoaWZ0KEB0aHJlYWQyKSk7CWV2YWwoc2hpZnQoQHRocmVhZDMpKTsKKy0JfQorLQor LQlAdGhyZWFkMD0mTkVPTlJPVU5EKCRBMCwkQjAsJEMwLCREMCwkVDAsMSk7CistCUB0aHJlYWQx PSZORU9OUk9VTkQoJEExLCRCMSwkQzEsJEQxLCRUMSwxKTsKKy0JQHRocmVhZDI9Jk5FT05ST1VO RCgkQTIsJEIyLCRDMiwkRDIsJFQyLDEpOworLQlAdGhyZWFkMz0mUk9VTkQoMCw1LDEwLDE1KTsK KysJbXkgQHBsdXNfb25lPSZST1VORCgwLDQsOCwxMik7CisrCWZvcmVhY2ggKCZORU9OX2xhbmVf Uk9VTkQoMCw0LDgsMTIpKSAgeyBldmFsOyBldmFsKHNoaWZ0KEBwbHVzX29uZSkpOyB9CisgCist CWZvcmVhY2ggKEB0aHJlYWQwKSB7CistCQlldmFsOwkJCWV2YWwoc2hpZnQoQHRocmVhZDMpKTsK Ky0JCWV2YWwoc2hpZnQoQHRocmVhZDEpKTsJZXZhbChzaGlmdChAdGhyZWFkMykpOworLQkJZXZh bChzaGlmdChAdGhyZWFkMikpOwlldmFsKHNoaWZ0KEB0aHJlYWQzKSk7CistCX0KKysJQHBsdXNf b25lPSZST1VORCgwLDUsMTAsMTUpOworKwlmb3JlYWNoICgmTkVPTl9sYW5lX1JPVU5EKDAsNSwx MCwxNSkpIHsgZXZhbDsgZXZhbChzaGlmdChAcGx1c19vbmUpKTsgfQorICRjb2RlLj08PF9fXzsK KyAJY2JuegkkY3RyLC5Mb29wX25lb24KKyAKKy0JYWRkLjMyCUB4WzBdLEB4WzBdLEBkWzBdCQkv LyBhY2N1bXVsYXRlIGtleSBibG9jaworLQkgYWRkCSRBMCwkQTAsQEtbMF0KKy0JYWRkCUB4WzFd LEB4WzFdLEBkWzBdLGxzciMzMgorLQkgYWRkCSRBMSwkQTEsQEtbMF0KKy0JYWRkLjMyCUB4WzJd LEB4WzJdLEBkWzFdCistCSBhZGQJJEEyLCRBMixAS1swXQorLQlhZGQJQHhbM10sQHhbM10sQGRb MV0sbHNyIzMyCistCSBhZGQJJEMwLCRDMCxAS1syXQorLQlhZGQuMzIJQHhbNF0sQHhbNF0sQGRb Ml0KKy0JIGFkZAkkQzEsJEMxLEBLWzJdCistCWFkZAlAeFs1XSxAeFs1XSxAZFsyXSxsc3IjMzIK Ky0JIGFkZAkkQzIsJEMyLEBLWzJdCistCWFkZC4zMglAeFs2XSxAeFs2XSxAZFszXQorLQkgYWRk CSREMCwkRDAsQEtbM10KKy0JYWRkCUB4WzddLEB4WzddLEBkWzNdLGxzciMzMgorLQlhZGQuMzIJ QHhbOF0sQHhbOF0sQGRbNF0KKy0JIGFkZAkkRDEsJEQxLEBLWzRdCistCWFkZAlAeFs5XSxAeFs5 XSxAZFs0XSxsc3IjMzIKKy0JYWRkLjMyCUB4WzEwXSxAeFsxMF0sQGRbNV0KKy0JIGFkZAkkRDIs JEQyLEBLWzVdCistCWFkZAlAeFsxMV0sQHhbMTFdLEBkWzVdLGxzciMzMgorLQlhZGQuMzIJQHhb MTJdLEB4WzEyXSxAZFs2XQorLQkgYWRkCSRCMCwkQjAsQEtbMV0KKy0JYWRkCUB4WzEzXSxAeFsx M10sQGRbNl0sbHNyIzMyCistCWFkZC4zMglAeFsxNF0sQHhbMTRdLEBkWzddCistCSBhZGQJJEIx LCRCMSxAS1sxXQorLQlhZGQJQHhbMTVdLEB4WzE1XSxAZFs3XSxsc3IjMzIKKy0JIGFkZAkkQjIs JEIyLEBLWzFdCisrCWFkZAkkeGQwLCR4ZDAsJENUUgorKworKwl6aXAxCSR4dDAsJHhhMCwkeGEx CQkJLy8gdHJhbnNwb3NlIGRhdGEKKysJemlwMQkkeHQxLCR4YTIsJHhhMworKwl6aXAyCSR4dDIs JHhhMCwkeGExCisrCXppcDIJJHh0MywkeGEyLCR4YTMKKysJemlwMS42NAkkeGEwLCR4dDAsJHh0 MQorKwl6aXAyLjY0CSR4YTEsJHh0MCwkeHQxCisrCXppcDEuNjQJJHhhMiwkeHQyLCR4dDMKKysJ emlwMi42NAkkeGEzLCR4dDIsJHh0MworKworKwl6aXAxCSR4dDAsJHhiMCwkeGIxCisrCXppcDEJ JHh0MSwkeGIyLCR4YjMKKysJemlwMgkkeHQyLCR4YjAsJHhiMQorKwl6aXAyCSR4dDMsJHhiMiwk eGIzCisrCXppcDEuNjQJJHhiMCwkeHQwLCR4dDEKKysJemlwMi42NAkkeGIxLCR4dDAsJHh0MQor Kwl6aXAxLjY0CSR4YjIsJHh0MiwkeHQzCisrCXppcDIuNjQJJHhiMywkeHQyLCR4dDMKKysKKysJ emlwMQkkeHQwLCR4YzAsJHhjMQorKwkgYWRkLjMyCUB4WzBdLEB4WzBdLEBkWzBdCQkvLyBhY2N1 bXVsYXRlIGtleSBibG9jaworKwl6aXAxCSR4dDEsJHhjMiwkeGMzCisrCSBhZGQJQHhbMV0sQHhb MV0sQGRbMF0sbHNyIzMyCisrCXppcDIJJHh0MiwkeGMwLCR4YzEKKysJIGFkZC4zMglAeFsyXSxA eFsyXSxAZFsxXQorKwl6aXAyCSR4dDMsJHhjMiwkeGMzCisrCSBhZGQJQHhbM10sQHhbM10sQGRb MV0sbHNyIzMyCisrCXppcDEuNjQJJHhjMCwkeHQwLCR4dDEKKysJIGFkZC4zMglAeFs0XSxAeFs0 XSxAZFsyXQorKwl6aXAyLjY0CSR4YzEsJHh0MCwkeHQxCisrCSBhZGQJQHhbNV0sQHhbNV0sQGRb Ml0sbHNyIzMyCisrCXppcDEuNjQJJHhjMiwkeHQyLCR4dDMKKysJIGFkZC4zMglAeFs2XSxAeFs2 XSxAZFszXQorKwl6aXAyLjY0CSR4YzMsJHh0MiwkeHQzCisrCSBhZGQJQHhbN10sQHhbN10sQGRb M10sbHNyIzMyCisrCisrCXppcDEJJHh0MCwkeGQwLCR4ZDEKKysJIGFkZC4zMglAeFs4XSxAeFs4 XSxAZFs0XQorKwl6aXAxCSR4dDEsJHhkMiwkeGQzCisrCSBhZGQJQHhbOV0sQHhbOV0sQGRbNF0s bHNyIzMyCisrCXppcDIJJHh0MiwkeGQwLCR4ZDEKKysJIGFkZC4zMglAeFsxMF0sQHhbMTBdLEBk WzVdCisrCXppcDIJJHh0MywkeGQyLCR4ZDMKKysJIGFkZAlAeFsxMV0sQHhbMTFdLEBkWzVdLGxz ciMzMgorKwl6aXAxLjY0CSR4ZDAsJHh0MCwkeHQxCisrCSBhZGQuMzIJQHhbMTJdLEB4WzEyXSxA ZFs2XQorKwl6aXAyLjY0CSR4ZDEsJHh0MCwkeHQxCisrCSBhZGQJQHhbMTNdLEB4WzEzXSxAZFs2 XSxsc3IjMzIKKysJemlwMS42NAkkeGQyLCR4dDIsJHh0MworKwkgYWRkLjMyCUB4WzE0XSxAeFsx NF0sQGRbN10KKysJemlwMi42NAkkeGQzLCR4dDIsJHh0MworKwkgYWRkCUB4WzE1XSxAeFsxNV0s QGRbN10sbHNyIzMyCisgCisgCWIubG8JLkx0YWlsX25lb24KKyAKKyAJYWRkCUB4WzBdLEB4WzBd LEB4WzFdLGxzbCMzMgkvLyBwYWNrCisgCWFkZAlAeFsyXSxAeFsyXSxAeFszXSxsc2wjMzIKKyAJ bGRwCUB4WzFdLEB4WzNdLFskaW5wLCMwXQkJLy8gbG9hZCBpbnB1dAorKwkgYWRkCSR4YTAsJHhh MCxAS1swXQkJCS8vIGFjY3VtdWxhdGUga2V5IGJsb2NrCisgCWFkZAlAeFs0XSxAeFs0XSxAeFs1 XSxsc2wjMzIKKyAJYWRkCUB4WzZdLEB4WzZdLEB4WzddLGxzbCMzMgorIAlsZHAJQHhbNV0sQHhb N10sWyRpbnAsIzE2XQorKwkgYWRkCSR4YjAsJHhiMCxAS1sxXQorIAlhZGQJQHhbOF0sQHhbOF0s QHhbOV0sbHNsIzMyCisgCWFkZAlAeFsxMF0sQHhbMTBdLEB4WzExXSxsc2wjMzIKKyAJbGRwCUB4 WzldLEB4WzExXSxbJGlucCwjMzJdCisrCSBhZGQJJHhjMCwkeGMwLEBLWzJdCisgCWFkZAlAeFsx Ml0sQHhbMTJdLEB4WzEzXSxsc2wjMzIKKyAJYWRkCUB4WzE0XSxAeFsxNF0sQHhbMTVdLGxzbCMz MgorIAlsZHAJQHhbMTNdLEB4WzE1XSxbJGlucCwjNDhdCisrCSBhZGQJJHhkMCwkeGQwLEBLWzNd CisgCWFkZAkkaW5wLCRpbnAsIzY0CistI2lmZGVmCV9fQVJNRUJfXworKyNpZmRlZglfX0FBUkNI NjRFQl9fCisgCXJldglAeFswXSxAeFswXQorIAlyZXYJQHhbMl0sQHhbMl0KKyAJcmV2CUB4WzRd LEB4WzRdCitAQCAtNTMwLDQ4ICs1OTcsNjggQEAgJGNvZGUuPTw8X19fOworIAlyZXYJQHhbMTJd LEB4WzEyXQorIAlyZXYJQHhbMTRdLEB4WzE0XQorICNlbmRpZgorLQlsZDEuOAl7JFQwLSRUM30s WyRpbnBdLCM2NAorKwlsZDEuOAl7JHh0MC0keHQzfSxbJGlucF0sIzY0CisgCWVvcglAeFswXSxA eFswXSxAeFsxXQorKwkgYWRkCSR4YTEsJHhhMSxAS1swXQorIAllb3IJQHhbMl0sQHhbMl0sQHhb M10KKysJIGFkZAkkeGIxLCR4YjEsQEtbMV0KKyAJZW9yCUB4WzRdLEB4WzRdLEB4WzVdCisrCSBh ZGQJJHhjMSwkeGMxLEBLWzJdCisgCWVvcglAeFs2XSxAeFs2XSxAeFs3XQorKwkgYWRkCSR4ZDEs JHhkMSxAS1szXQorIAllb3IJQHhbOF0sQHhbOF0sQHhbOV0KKy0JIGVvcgkkQTAsJEEwLCRUMAor KwkgZW9yCSR4YTAsJHhhMCwkeHQwCisrCSBtb3ZpCSR4dDAsIzUKKyAJZW9yCUB4WzEwXSxAeFsx MF0sQHhbMTFdCistCSBlb3IJJEIwLCRCMCwkVDEKKysJIGVvcgkkeGIwLCR4YjAsJHh0MQorIAll b3IJQHhbMTJdLEB4WzEyXSxAeFsxM10KKy0JIGVvcgkkQzAsJEMwLCRUMgorKwkgZW9yCSR4YzAs JHhjMCwkeHQyCisgCWVvcglAeFsxNF0sQHhbMTRdLEB4WzE1XQorLQkgZW9yCSREMCwkRDAsJFQz CistCSBsZDEuOAl7JFQwLSRUM30sWyRpbnBdLCM2NAorKwkgZW9yCSR4ZDAsJHhkMCwkeHQzCisr CSBhZGQJJENUUiwkQ1RSLCR4dDAJCQkvLyArPSA1CisrCSBsZDEuOAl7JHh0MC0keHQzfSxbJGlu cF0sIzY0CisgCisgCXN0cAlAeFswXSxAeFsyXSxbJG91dCwjMF0JCS8vIHN0b3JlIG91dHB1dAor LQkgYWRkCUBkWzZdLEBkWzZdLCM0CQkJLy8gaW5jcmVtZW50IGNvdW50ZXIKKysJIGFkZAlAZFs2 XSxAZFs2XSwjNQkJCS8vIGluY3JlbWVudCBjb3VudGVyCisgCXN0cAlAeFs0XSxAeFs2XSxbJG91 dCwjMTZdCistCSBhZGQJQEtbM10sQEtbM10sJE9ORQkJLy8gKz0gNAorIAlzdHAJQHhbOF0sQHhb MTBdLFskb3V0LCMzMl0KKy0JIGFkZAlAS1s0XSxAS1s0XSwkT05FCisgCXN0cAlAeFsxMl0sQHhb MTRdLFskb3V0LCM0OF0KKy0JIGFkZAlAS1s1XSxAS1s1XSwkT05FCisgCWFkZAkkb3V0LCRvdXQs IzY0CisgCistCXN0MS44CXskQTAtJEQwfSxbJG91dF0sIzY0CistCWxkMS44CXskQTAtJEQwfSxb JGlucF0sIzY0CistCistCWVvcgkkQTEsJEExLCRUMAorLQllb3IJJEIxLCRCMSwkVDEKKy0JZW9y CSRDMSwkQzEsJFQyCistCWVvcgkkRDEsJEQxLCRUMworLQlzdDEuOAl7JEExLSREMX0sWyRvdXRd LCM2NAorLQorLQllb3IJJEEyLCRBMiwkQTAKKy0JZW9yCSRCMiwkQjIsJEIwCistCWVvcgkkQzIs JEMyLCRDMAorLQllb3IJJEQyLCREMiwkRDAKKy0Jc3QxLjgJeyRBMi0kRDJ9LFskb3V0XSwjNjQK KysJc3QxLjgJeyR4YTAtJHhkMH0sWyRvdXRdLCM2NAorKwkgYWRkCSR4YTIsJHhhMixAS1swXQor KwkgYWRkCSR4YjIsJHhiMixAS1sxXQorKwkgYWRkCSR4YzIsJHhjMixAS1syXQorKwkgYWRkCSR4 ZDIsJHhkMixAS1szXQorKwlsZDEuOAl7JHhhMC0keGQwfSxbJGlucF0sIzY0CisrCisrCWVvcgkk eGExLCR4YTEsJHh0MAorKwllb3IJJHhiMSwkeGIxLCR4dDEKKysJZW9yCSR4YzEsJHhjMSwkeHQy CisrCWVvcgkkeGQxLCR4ZDEsJHh0MworKwlzdDEuOAl7JHhhMS0keGQxfSxbJG91dF0sIzY0Cisr CSBhZGQJJHhhMywkeGEzLEBLWzBdCisrCSBhZGQJJHhiMywkeGIzLEBLWzFdCisrCSBhZGQJJHhj MywkeGMzLEBLWzJdCisrCSBhZGQJJHhkMywkeGQzLEBLWzNdCisrCWxkMS44CXskeGExLSR4ZDF9 LFskaW5wXSwjNjQKKysKKysJZW9yCSR4YTIsJHhhMiwkeGEwCisrCWVvcgkkeGIyLCR4YjIsJHhi MAorKwllb3IJJHhjMiwkeGMyLCR4YzAKKysJZW9yCSR4ZDIsJHhkMiwkeGQwCisrCXN0MS44CXsk eGEyLSR4ZDJ9LFskb3V0XSwjNjQKKysKKysJZW9yCSR4YTMsJHhhMywkeGExCisrCWVvcgkkeGIz LCR4YjMsJHhiMQorKwllb3IJJHhjMywkeGMzLCR4YzEKKysJZW9yCSR4ZDMsJHhkMywkeGQxCisr CXN0MS44CXskeGEzLSR4ZDN9LFskb3V0XSwjNjQKKyAKKyAJYi5oaQkuTG9vcF9vdXRlcl9uZW9u CisgCisrCWxkcAlkOCxkOSxbc3BdCQkJLy8gbWVldCBBQkkgcmVxdWlyZW1lbnRzCisrCisgCWxk cAl4MTkseDIwLFt4MjksIzE2XQorIAlhZGQJc3Asc3AsIzY0CisgCWxkcAl4MjEseDIyLFt4Mjks IzMyXQorQEAgLTU4Miw4ICs2NjksMTAgQEAgJGNvZGUuPTw8X19fOworIAkuaW5zdAkweGQ1MDMy M2JmCQkJLy8gYXV0aWFzcAorIAlyZXQKKyAKKysuYWxpZ24JNAorIC5MdGFpbF9uZW9uOgorLQlh ZGQJJGxlbiwkbGVuLCMyNTYKKysJYWRkCSRsZW4sJGxlbiwjMzIwCisrCWxkcAlkOCxkOSxbc3Bd CQkJLy8gbWVldCBBQkkgcmVxdWlyZW1lbnRzCisgCWNtcAkkbGVuLCM2NAorIAliLmxvCS5MZXNz X3RoYW5fNjQKKyAKK0BAIC02MDAsNyArNjg5LDcgQEAgJGNvZGUuPTw8X19fOworIAlhZGQJQHhb MTRdLEB4WzE0XSxAeFsxNV0sbHNsIzMyCisgCWxkcAlAeFsxM10sQHhbMTVdLFskaW5wLCM0OF0K KyAJYWRkCSRpbnAsJGlucCwjNjQKKy0jaWZkZWYJX19BUk1FQl9fCisrI2lmZGVmCV9fQUFSQ0g2 NEVCX18KKyAJcmV2CUB4WzBdLEB4WzBdCisgCXJldglAeFsyXSxAeFsyXQorIAlyZXYJQHhbNF0s QHhbNF0KK0BAIC02MjAsNDggKzcwOSw2OCBAQCAkY29kZS49PDxfX187CisgCWVvcglAeFsxNF0s QHhbMTRdLEB4WzE1XQorIAorIAlzdHAJQHhbMF0sQHhbMl0sWyRvdXQsIzBdCQkvLyBzdG9yZSBv dXRwdXQKKy0JIGFkZAlAZFs2XSxAZFs2XSwjNAkJCS8vIGluY3JlbWVudCBjb3VudGVyCisrCSBh ZGQJJHhhMCwkeGEwLEBLWzBdCQkJLy8gYWNjdW11bGF0ZSBrZXkgYmxvY2sKKyAJc3RwCUB4WzRd LEB4WzZdLFskb3V0LCMxNl0KKysJIGFkZAkkeGIwLCR4YjAsQEtbMV0KKyAJc3RwCUB4WzhdLEB4 WzEwXSxbJG91dCwjMzJdCisrCSBhZGQJJHhjMCwkeGMwLEBLWzJdCisgCXN0cAlAeFsxMl0sQHhb MTRdLFskb3V0LCM0OF0KKysJIGFkZAkkeGQwLCR4ZDAsQEtbM10KKyAJYWRkCSRvdXQsJG91dCwj NjQKKyAJYi5lcQkuTGRvbmVfbmVvbgorIAlzdWIJJGxlbiwkbGVuLCM2NAorIAljbXAJJGxlbiwj NjQKKy0JYi5sbwkuTGVzc190aGFuXzEyOAorKwliLmxvCS5MYXN0X25lb24KKyAKKy0JbGQxLjgJ eyRUMC0kVDN9LFskaW5wXSwjNjQKKy0JZW9yCSRBMCwkQTAsJFQwCistCWVvcgkkQjAsJEIwLCRU MQorLQllb3IJJEMwLCRDMCwkVDIKKy0JZW9yCSREMCwkRDAsJFQzCistCXN0MS44CXskQTAtJEQw fSxbJG91dF0sIzY0CisrCWxkMS44CXskeHQwLSR4dDN9LFskaW5wXSwjNjQKKysJZW9yCSR4YTAs JHhhMCwkeHQwCisrCWVvcgkkeGIwLCR4YjAsJHh0MQorKwllb3IJJHhjMCwkeGMwLCR4dDIKKysJ ZW9yCSR4ZDAsJHhkMCwkeHQzCisrCXN0MS44CXskeGEwLSR4ZDB9LFskb3V0XSwjNjQKKyAJYi5l cQkuTGRvbmVfbmVvbgorKworKwlhZGQJJHhhMCwkeGExLEBLWzBdCisrCWFkZAkkeGIwLCR4YjEs QEtbMV0KKyAJc3ViCSRsZW4sJGxlbiwjNjQKKysJYWRkCSR4YzAsJHhjMSxAS1syXQorIAljbXAJ JGxlbiwjNjQKKy0JYi5sbwkuTGVzc190aGFuXzE5MgorKwlhZGQJJHhkMCwkeGQxLEBLWzNdCisr CWIubG8JLkxhc3RfbmVvbgorIAorLQlsZDEuOAl7JFQwLSRUM30sWyRpbnBdLCM2NAorLQllb3IJ JEExLCRBMSwkVDAKKy0JZW9yCSRCMSwkQjEsJFQxCistCWVvcgkkQzEsJEMxLCRUMgorLQllb3IJ JEQxLCREMSwkVDMKKy0Jc3QxLjgJeyRBMS0kRDF9LFskb3V0XSwjNjQKKysJbGQxLjgJeyR4dDAt JHh0M30sWyRpbnBdLCM2NAorKwllb3IJJHhhMSwkeGEwLCR4dDAKKysJZW9yCSR4YjEsJHhiMCwk eHQxCisrCWVvcgkkeGMxLCR4YzAsJHh0MgorKwllb3IJJHhkMSwkeGQwLCR4dDMKKysJc3QxLjgJ eyR4YTEtJHhkMX0sWyRvdXRdLCM2NAorIAliLmVxCS5MZG9uZV9uZW9uCisrCisrCWFkZAkkeGEw LCR4YTIsQEtbMF0KKysJYWRkCSR4YjAsJHhiMixAS1sxXQorIAlzdWIJJGxlbiwkbGVuLCM2NAor KwlhZGQJJHhjMCwkeGMyLEBLWzJdCisrCWNtcAkkbGVuLCM2NAorKwlhZGQJJHhkMCwkeGQyLEBL WzNdCisrCWIubG8JLkxhc3RfbmVvbgorIAorLQlzdDEuOAl7JEEyLSREMn0sW3NwXQorLQliCS5M YXN0X25lb24KKysJbGQxLjgJeyR4dDAtJHh0M30sWyRpbnBdLCM2NAorKwllb3IJJHhhMiwkeGEw LCR4dDAKKysJZW9yCSR4YjIsJHhiMCwkeHQxCisrCWVvcgkkeGMyLCR4YzAsJHh0MgorKwllb3IJ JHhkMiwkeGQwLCR4dDMKKysJc3QxLjgJeyR4YTItJHhkMn0sWyRvdXRdLCM2NAorKwliLmVxCS5M ZG9uZV9uZW9uCisgCistLkxlc3NfdGhhbl8xMjg6CistCXN0MS44CXskQTAtJEQwfSxbc3BdCist CWIJLkxhc3RfbmVvbgorLS5MZXNzX3RoYW5fMTkyOgorLQlzdDEuOAl7JEExLSREMX0sW3NwXQor LQliCS5MYXN0X25lb24KKysJYWRkCSR4YTAsJHhhMyxAS1swXQorKwlhZGQJJHhiMCwkeGIzLEBL WzFdCisrCWFkZAkkeGMwLCR4YzMsQEtbMl0KKysJYWRkCSR4ZDAsJHhkMyxAS1szXQorKwlzdWIJ JGxlbiwkbGVuLCM2NAorIAorLS5hbGlnbgk0CisgLkxhc3RfbmVvbjoKKysJc3QxLjgJeyR4YTAt JHhkMH0sW3NwXQorKworIAlzdWIJJG91dCwkb3V0LCMxCisgCWFkZAkkaW5wLCRpbnAsJGxlbgor IAlhZGQJJG91dCwkb3V0LCRsZW4KK0BAIC02OTQsOSArODAzLDQxIEBAICRjb2RlLj08PF9fXzsK KyAuc2l6ZQlDaGFDaGEyMF9uZW9uLC4tQ2hhQ2hhMjBfbmVvbgorIF9fXworIHsKKytteSBASyA9 IG1hcCgidiRfLjRzIiwoMC4uNikpOworIG15ICgkVDAsJFQxLCRUMiwkVDMsJFQ0LCRUNSk9QEs7 CisgbXkgKCRBMCwkQjAsJEMwLCREMCwkQTEsJEIxLCRDMSwkRDEsJEEyLCRCMiwkQzIsJEQyLAor LSAgICAkQTMsJEIzLCRDMywkRDMsJEE0LCRCNCwkQzQsJEQ0LCRBNSwkQjUsJEM1LCRENSkgPSBt YXAoInYkXy40cyIsKDAuLjIzKSk7CisrICAgICRBMywkQjMsJEMzLCREMywkQTQsJEI0LCRDNCwk RDQsJEE1LCRCNSwkQzUsJEQ1KSA9IG1hcCgidiRfLjRzIiwoOC4uMzEpKTsKKytteSAkcm90MjQg PSBAS1s2XTsKKytteSAkT05FID0gInY3LjRzIjsKKysKKytzdWIgTkVPTlJPVU5EIHsKKytteSAk b2RkID0gcG9wOworK215ICgkYSwkYiwkYywkZCwkdCk9QF87CisrCisrCSgKKysJIiZhZGQJCSgn JGEnLCckYScsJyRiJykiLAorKwkiJmVvcgkJKCckZCcsJyRkJywnJGEnKSIsCisrCSImcmV2MzJf MTYJKCckZCcsJyRkJykiLAkJIyB2cm90ICgkZCwxNikKKysKKysJIiZhZGQJCSgnJGMnLCckYycs JyRkJykiLAorKwkiJmVvcgkJKCckdCcsJyRiJywnJGMnKSIsCisrCSImdXNocgkJKCckYicsJyR0 JywyMCkiLAorKwkiJnNsaQkJKCckYicsJyR0JywxMikiLAorKworKwkiJmFkZAkJKCckYScsJyRh JywnJGInKSIsCisrCSImZW9yCQkoJyRkJywnJGQnLCckYScpIiwKKysJIiZ0YmwJCSgnJGQnLCd7 JGR9JywnJHJvdDI0JykiLAorKworKwkiJmFkZAkJKCckYycsJyRjJywnJGQnKSIsCisrCSImZW9y CQkoJyR0JywnJGInLCckYycpIiwKKysJIiZ1c2hyCQkoJyRiJywnJHQnLDI1KSIsCisrCSImc2xp CQkoJyRiJywnJHQnLDcpIiwKKysKKysJIiZleHQJCSgnJGMnLCckYycsJyRjJyw4KSIsCisrCSIm ZXh0CQkoJyRkJywnJGQnLCckZCcsJG9kZD80OjEyKSIsCisrCSImZXh0CQkoJyRiJywnJGInLCck YicsJG9kZD8xMjo0KSIKKysJKTsKKyt9CisgCisgJGNvZGUuPTw8X19fOworIC50eXBlCUNoYUNo YTIwXzUxMl9uZW9uLCVmdW5jdGlvbgorQEAgLTcxNiw2ICs4NTcsNyBAQCBDaGFDaGEyMF81MTJf bmVvbjoKKyAuTDUxMl9vcl9tb3JlX25lb246CisgCXN1YglzcCxzcCwjMTI4KzY0CisgCisrCWVv cgkkT05FLCRPTkUsJE9ORQorIAlsZHAJQGRbMF0sQGRbMV0sW0B4WzBdXQkJLy8gbG9hZCBzaWdt YQorIAlsZDEJe0BLWzBdfSxbQHhbMF1dLCMxNgorIAlsZHAJQGRbMl0sQGRbM10sWyRrZXldCQkv LyBsb2FkIGtleQorQEAgLTcyMyw4ICs4NjUsOSBAQCBDaGFDaGEyMF81MTJfbmVvbjoKKyAJbGQx CXtAS1sxXSxAS1syXX0sWyRrZXldCisgCWxkcAlAZFs2XSxAZFs3XSxbJGN0cl0JCS8vIGxvYWQg Y291bnRlcgorIAlsZDEJe0BLWzNdfSxbJGN0cl0KKy0JbGQxCXskT05FfSxbQHhbMF1dCistI2lm ZGVmCV9fQVJNRUJfXworKwlsZDEJeyRPTkV9WzBdLFtAeFswXV0KKysJYWRkCSRrZXksQHhbMF0s IzE2CQkJLy8gLkxyb3QyNAorKyNpZmRlZglfX0FBUkNINjRFQl9fCisgCXJldjY0CUBLWzBdLEBL WzBdCisgCXJvcglAZFsyXSxAZFsyXSwjMzIKKyAJcm9yCUBkWzNdLEBkWzNdLCMzMgorQEAgLTc5 MSw5ICs5MzQsMTAgQEAgQ2hhQ2hhMjBfNTEyX25lb246CisgCSBtb3YJJEM0LEBLWzJdCisgCSBz dHAJQEtbM10sQEtbNF0sW3NwLCM0OF0JCS8vIG9mZi1sb2FkIGtleSBibG9jaywgdmFyaWFibGUg cGFydAorIAkgbW92CSRDNSxAS1syXQorLQkgc3RyCUBLWzVdLFtzcCwjODBdCisrCSBzdHAJQEtb NV0sQEtbNl0sW3NwLCM4MF0KKyAKKyAJbW92CSRjdHIsIzUKKysJbGQxCXskcm90MjR9LFska2V5 XQorIAlzdWJzCSRsZW4sJGxlbiwjNTEyCisgLkxvb3BfdXBwZXJfbmVvbjoKKyAJc3ViCSRjdHIs JGN0ciwjMQorQEAgLTg2Niw3ICsxMDEwLDcgQEAgJGNvZGUuPTw8X19fOworIAlhZGQJQHhbMTRd LEB4WzE0XSxAeFsxNV0sbHNsIzMyCisgCWxkcAlAeFsxM10sQHhbMTVdLFskaW5wLCM0OF0KKyAJ YWRkCSRpbnAsJGlucCwjNjQKKy0jaWZkZWYJX19BUk1FQl9fCisrI2lmZGVmCV9fQUFSQ0g2NEVC X18KKyAJcmV2CUB4WzBdLEB4WzBdCisgCXJldglAeFsyXSxAeFsyXQorIAlyZXYJQHhbNF0sQHhb NF0KK0BAIC05NTUsNiArMTA5OSw3IEBAICRjb2RlLj08PF9fXzsKKyAJYWRkLjMyCUB4WzJdLEB4 WzJdLEBkWzFdCisgCSBsZHAJQEtbNF0sQEtbNV0sW3NwLCM2NF0KKyAJYWRkCUB4WzNdLEB4WzNd LEBkWzFdLGxzciMzMgorKwkgbGRyCUBLWzZdLFtzcCwjOTZdCisgCSBhZGQJJEEwLCRBMCxAS1sw XQorIAlhZGQuMzIJQHhbNF0sQHhbNF0sQGRbMl0KKyAJIGFkZAkkQTEsJEExLEBLWzBdCitAQCAt MTAwNyw3ICsxMTUyLDcgQEAgJGNvZGUuPTw8X19fOworIAlhZGQJJGlucCwkaW5wLCM2NAorIAkg YWRkCSRCNSwkQjUsQEtbMV0KKyAKKy0jaWZkZWYJX19BUk1FQl9fCisrI2lmZGVmCV9fQUFSQ0g2 NEVCX18KKyAJcmV2CUB4WzBdLEB4WzBdCisgCXJldglAeFsyXSxAeFsyXQorIAlyZXYJQHhbNF0s QHhbNF0KK0BAIC0xMDg1LDI2ICsxMjMwLDI2IEBAICRjb2RlLj08PF9fXzsKKyAJYi5ocwkuTG9v cF9vdXRlcl81MTJfbmVvbgorIAorIAlhZGRzCSRsZW4sJGxlbiwjNTEyCistCXVzaHIJJEEwLCRP TkUsIzIJCQkvLyA0IC0+IDEKKysJdXNocgkkT05FLCRPTkUsIzEJCQkvLyA0IC0+IDIKKyAKKy0J bGRwCWQ4LGQ5LFtzcCwjMTI4KzBdCQkvLyBtZWV0IEFCSSByZXF1aXJlbWVudHMKKyAJbGRwCWQx MCxkMTEsW3NwLCMxMjgrMTZdCisgCWxkcAlkMTIsZDEzLFtzcCwjMTI4KzMyXQorIAlsZHAJZDE0 LGQxNSxbc3AsIzEyOCs0OF0KKyAKKy0Jc3RwCUBLWzBdLCRPTkUsW3NwLCMwXQkJLy8gd2lwZSBv ZmYtbG9hZCBhcmVhCistCXN0cAlAS1swXSwkT05FLFtzcCwjMzJdCistCXN0cAlAS1swXSwkT05F LFtzcCwjNjRdCisrCXN0cAlAS1swXSxAS1swXSxbc3AsIzBdCQkvLyB3aXBlIG9mZi1sb2FkIGFy ZWEKKysJc3RwCUBLWzBdLEBLWzBdLFtzcCwjMzJdCisrCXN0cAlAS1swXSxAS1swXSxbc3AsIzY0 XQorIAorIAliLmVxCS5MZG9uZV81MTJfbmVvbgorIAorKwlzdWIJJGtleSwka2V5LCMxNgkJCS8v IC5Mb25lCisgCWNtcAkkbGVuLCMxOTIKKy0Jc3ViCUBLWzNdLEBLWzNdLCRBMAkJCS8vIC09IDEK Ky0Jc3ViCUBLWzRdLEBLWzRdLCRBMAorLQlzdWIJQEtbNV0sQEtbNV0sJEEwCisgCWFkZAlzcCxz cCwjMTI4CisrCXN1YglAS1szXSxAS1szXSwkT05FCQkvLyAtPSAyCisrCWxkMQl7JENUUiwkUk9U MjR9LFska2V5XQorIAliLmhzCS5Mb29wX291dGVyX25lb24KKyAKKysJbGRwCWQ4LGQ5LFtzcCwj MF0JCQkvLyBtZWV0IEFCSSByZXF1aXJlbWVudHMKKyAJZW9yCUBLWzFdLEBLWzFdLEBLWzFdCisg CWVvcglAS1syXSxAS1syXSxAS1syXQorIAllb3IJQEtbM10sQEtbM10sQEtbM10KK0BAIC0xMTE0 LDYgKzEyNTksNyBAQCAkY29kZS49PDxfX187CisgCWIJLkxvb3Bfb3V0ZXIKKyAKKyAuTGRvbmVf NTEyX25lb246CisrCWxkcAlkOCxkOSxbc3AsIzEyOCswXQkJLy8gbWVldCBBQkkgcmVxdWlyZW1l bnRzCisgCWxkcAl4MTkseDIwLFt4MjksIzE2XQorIAlhZGQJc3Asc3AsIzEyOCs2NAorIAlsZHAJ eDIxLHgyMixbeDI5LCMzMl0KK0BAIC0xMTMyLDkgKzEyNzgsMTEgQEAgZm9yZWFjaCAoc3BsaXQo IlxuIiwkY29kZSkpIHsKKyAJcy9cYChbXlxgXSopXGAvZXZhbCAkMS9nZW87CisgCisgCShzL1xi KFthLXpdKylcLjMyXGIvJDEvIGFuZCAocy94KFswLTldKykvdyQxL2cgb3IgMSkpCW9yCistCSht L1xiKGVvcnxleHR8bW92KVxiLyBhbmQgKHMvXC40cy9cLjE2Yi9nIG9yIDEpKQlvcgorKwkobS9c Yihlb3J8ZXh0fG1vdnx0YmwpXGIvIGFuZCAocy9cLjRzL1wuMTZiL2cgb3IgMSkpCW9yCisgCShz L1xiKCg/OmxkfHN0KTEpXC44XGIvJDEvIGFuZCAocy9cLjRzL1wuMTZiL2cgb3IgMSkpCW9yCisg CShtL1xiKGxkfHN0KVtycF1cYi8gYW5kIChzL3YoWzAtOV0rKVwuNHMvcSQxL2cgb3IgMSkpCW9y CisrCShtL1xiKGR1cHxsZDEpXGIvIGFuZCAocy9cLjQoc30/XFtbMC0zXVxdKS8uJDEvZyBvciAx KSkJb3IKKysJKHMvXGIoemlwWzEyXSlcLjY0XGIvJDEvIGFuZCAocy9cLjRzL1wuMmQvZyBvciAx KSkJb3IKKyAJKHMvXGJyZXYzMlwuMTZcYi9yZXYzMi8gYW5kIChzL1wuNHMvXC44aC9nIG9yIDEp KTsKKyAKKyAJI3MvXGJxKFswLTldKykjKGxvfGhpKS9zcHJpbnRmICJkJWQiLDIqJDErKCQyIGVx ICJoaSIpL2dlbzsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9tb2Rlcy9hc20vZ2hh c2h2OC1hcm14LnBsLmFybS11cGRhdGUgb3BlbnNzbC0xLjEuMWMvY3J5cHRvL21vZGVzL2FzbS9n aGFzaHY4LWFybXgucGwKKy0tLSBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vbW9kZXMvYXNtL2doYXNo djgtYXJteC5wbC5hcm0tdXBkYXRlCTIwMTktMDUtMjggMTU6MTI6MjEuMDAwMDAwMDAwICswMjAw CisrKysgb3BlbnNzbC0xLjEuMWMvY3J5cHRvL21vZGVzL2FzbS9naGFzaHY4LWFybXgucGwJMjAx OS0xMS0yMCAxMTozNjoyMi4zODk1MDYxNTUgKzAxMDAKK0BAIC00Miw2ICs0Miw3IEBACisgIyBE ZW52ZXIJMC41MQkJMC42NQkJNi4wMgorICMgTW9uZ29vc2UJMC42NQkJMS4xMAkJOC4wNgorICMg S3J5bwkJMC43NgkJMS4xNgkJOC4wMAorKyMgVGh1bmRlclgyCTEuMDUKKyAjCisgIyAoKikJcHJl c2VudGVkIGZvciByZWZlcmVuY2UvY29tcGFyaXNvbiBwdXJwb3NlczsKKyAKK2RpZmYgLXVwIG9w ZW5zc2wtMS4xLjFjL2NyeXB0by9wb2x5MTMwNS9hc20vcG9seTEzMDUtYXJtdjgucGwuYXJtLXVw ZGF0ZSBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vcG9seTEzMDUvYXNtL3BvbHkxMzA1LWFybXY4LnBs CistLS0gb3BlbnNzbC0xLjEuMWMvY3J5cHRvL3BvbHkxMzA1L2FzbS9wb2x5MTMwNS1hcm12OC5w bC5hcm0tdXBkYXRlCTIwMTktMDUtMjggMTU6MTI6MjEuMDAwMDAwMDAwICswMjAwCisrKysgb3Bl bnNzbC0xLjEuMWMvY3J5cHRvL3BvbHkxMzA1L2FzbS9wb2x5MTMwNS1hcm12OC5wbAkyMDE5LTEx LTIwIDExOjM2OjIyLjM5MDUwNjEzNyArMDEwMAorQEAgLTI5LDYgKzI5LDcgQEAKKyAjIFgtR2Vu ZQkyLjEzLys2OCUJMi4yNworICMgTW9uZ29vc2UJMS43Ny8rNzUlCTEuMTIKKyAjIEtyeW8JCTIu NzAvKzU1JQkxLjEzCisrIyBUaHVuZGVyWDIJMS4xNy8rOTUlCTEuMzYKKyAjCisgIyAoKikJZXN0 aW1hdGUgYmFzZWQgb24gcmVzb3VyY2VzIGF2YWlsYWJpbGl0eSBpcyBsZXNzIHRoYW4gMS4wLAor ICMJaS5lLiBtZWFzdXJlZCByZXN1bHQgaXMgd29yc2UgdGhhbiBleHBlY3RlZCwgcHJlc3VtYWJs eSBiaW5hcnkKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFjL2NyeXB0by9zaGEvYXNtL2tlY2NhazE2 MDAtYXJtdjgucGwuYXJtLXVwZGF0ZSBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vc2hhL2FzbS9rZWNj YWsxNjAwLWFybXY4LnBsCistLS0gb3BlbnNzbC0xLjEuMWMvY3J5cHRvL3NoYS9hc20va2VjY2Fr MTYwMC1hcm12OC5wbC5hcm0tdXBkYXRlCTIwMTktMDUtMjggMTU6MTI6MjEuMDAwMDAwMDAwICsw MjAwCisrKysgb3BlbnNzbC0xLjEuMWMvY3J5cHRvL3NoYS9hc20va2VjY2FrMTYwMC1hcm12OC5w bAkyMDE5LTExLTIwIDExOjM2OjIyLjM5MDUwNjEzNyArMDEwMAorQEAgLTUxLDYgKzUxLDcgQEAK KyAjIEtyeW8JCTEyCisgIyBEZW52ZXIJNy44CisgIyBBcHBsZSBBNwk3LjIKKysjIFRodW5kZXJY Mgk5LjcKKyAjCisgIyAoKikJQ29ycmVzcG9uZHMgdG8gU0hBMy0yNTYuIE5vIGltcHJvdmVtZW50 IGNvZWZmaWNpZW50cyBhcmUgbGlzdGVkCisgIwliZWNhdXNlIHRoZXkgdmFyeSB0b28gbXVjaCBm cm9tIGNvbXBpbGVyIHRvIGNvbXBpbGVyLiBOZXdlcgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWMv Y3J5cHRvL3NoYS9hc20vc2hhMS1hcm12OC5wbC5hcm0tdXBkYXRlIG9wZW5zc2wtMS4xLjFjL2Ny eXB0by9zaGEvYXNtL3NoYTEtYXJtdjgucGwKKy0tLSBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vc2hh L2FzbS9zaGExLWFybXY4LnBsLmFybS11cGRhdGUJMjAxOS0wNS0yOCAxNToxMjoyMS4wMDAwMDAw MDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vc2hhL2FzbS9zaGExLWFybXY4LnBs CTIwMTktMTEtMjAgMTE6MzY6MjIuMzkwNTA2MTM3ICswMTAwCitAQCAtMjcsNiArMjcsNyBAQAor ICMgWC1HZW5lCQkJCTguODAgKCsyMDAlKQorICMgTW9uZ29vc2UJMi4wNQkJCTYuNTAgKCsxNjAl KQorICMgS3J5bwkJMS44OAkJCTguMDAgKCs5MCUpCisrIyBUaHVuZGVyWDIJMi42NAkJCTYuMzYg KCsxNTAlKQorICMKKyAjICgqKQlTb2Z0d2FyZSByZXN1bHRzIGFyZSBwcmVzZW50ZWQgbW9zdGx5 IGZvciByZWZlcmVuY2UgcHVycG9zZXMuCisgIyAoKiopCUtlZXAgaW4gbWluZCB0aGF0IERlbnZl ciByZWxpZXMgb24gYmluYXJ5IHRyYW5zbGF0aW9uLCB3aGljaAorZGlmZiAtdXAgb3BlbnNzbC0x LjEuMWMvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsLmFybS11cGRhdGUgb3BlbnNzbC0x LjEuMWMvY3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsCistLS0gb3BlbnNzbC0xLjEuMWMv Y3J5cHRvL3NoYS9hc20vc2hhNTEyLWFybXY4LnBsLmFybS11cGRhdGUJMjAxOS0wNS0yOCAxNTox MjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xYy9jcnlwdG8vc2hhL2FzbS9z aGE1MTItYXJtdjgucGwJMjAxOS0xMS0yMCAxMTozNjoyMi4zOTA1MDYxMzcgKzAxMDAKK0BAIC0y OCw2ICsyOCw3IEBACisgIyBYLUdlbmUJCQkyMC4wICgrMTAwJSkJMTIuOCAoKzMwMCUoKioqKSkK KyAjIE1vbmdvb3NlCTIuMzYJCTEzLjAgKCs1MCUpCTguMzYgKCszMyUpCisgIyBLcnlvCQkxLjky CQkxNy40ICgrMzAlKQkxMS4yICgrOCUpCisrIyBUaHVuZGVyWDIJMi41NAkJMTMuMiAoKzQwJSkJ OC40MCAoKzE4JSkKKyAjCisgIyAoKikJU29mdHdhcmUgU0hBMjU2IHJlc3VsdHMgYXJlIG9mIGxl c3NlciByZWxldmFuY2UsIHByZXNlbnRlZAorICMJbW9zdGx5IGZvciBpbmZvcm1hdGlvbmFsIHB1 cnBvc2VzLgoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4xLjEtZWRrMi1idWlsZC5wYXRjaCBiL29w ZW5zc2wtMS4xLjEtZWRrMi1idWlsZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi5iMTM3MDhlCi0tLSAvZGV2L251bGwKKysrIGIvb3BlbnNzbC0xLjEuMS1lZGsyLWJ1 aWxkLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFnL2NyeXB0 by9ldnAvcGtleV9rZGYuYy5lZGsyLWJ1aWxkIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9ldnAvcGtl eV9rZGYuYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9ldnAvcGtleV9rZGYuYy5lZGsyLWJ1 aWxkCTIwMjAtMDUtMTggMTI6NTU6NTMuMjk5NTQ4NDMyICswMjAwCisrKysgb3BlbnNzbC0xLjEu MWcvY3J5cHRvL2V2cC9wa2V5X2tkZi5jCTIwMjAtMDUtMTggMTI6NTU6NTMuMzQwNTQ4Nzg4ICsw MjAwCitAQCAtMTIsNiArMTIsNyBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2V2cC5oPgorICNpbmNs dWRlIDxvcGVuc3NsL2Vyci5oPgorICNpbmNsdWRlIDxvcGVuc3NsL2tkZi5oPgorKyNpbmNsdWRl ICJpbnRlcm5hbC9udW1iZXJzLmgiCisgI2luY2x1ZGUgImNyeXB0by9ldnAuaCIKKyAKKyBzdGF0 aWMgaW50IHBrZXlfa2RmX2luaXQoRVZQX1BLRVlfQ1RYICpjdHgpCitkaWZmIC11cCBvcGVuc3Ns LTEuMS4xZy9jcnlwdG8va2RmL2hrZGYuYy5lZGsyLWJ1aWxkIG9wZW5zc2wtMS4xLjFnL2NyeXB0 by9rZGYvaGtkZi5jCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2tkZi9oa2RmLmMuZWRrMi1i dWlsZAkyMDIwLTA1LTE4IDEyOjU1OjUzLjM0MDU0ODc4OCArMDIwMAorKysrIG9wZW5zc2wtMS4x LjFnL2NyeXB0by9rZGYvaGtkZi5jCTIwMjAtMDUtMTggMTI6NTc6MTguNjQ4Mjg4OTA0ICswMjAw CitAQCAtMTMsNiArMTMsNyBAQAorICNpbmNsdWRlIDxvcGVuc3NsL2htYWMuaD4KKyAjaW5jbHVk ZSA8b3BlbnNzbC9rZGYuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKysjaW5jbHVkZSAi aW50ZXJuYWwvbnVtYmVycy5oIgorICNpbmNsdWRlICJpbnRlcm5hbC9jcnlwdGxpYi5oIgorICNp bmNsdWRlICJjcnlwdG8vZXZwLmgiCisgI2luY2x1ZGUgImtkZl9sb2NhbC5oIgorZGlmZiAtdXAg b3BlbnNzbC0xLjEuMWcvY3J5cHRvL3JhbmQvcmFuZF91bml4LmMuZWRrMi1idWlsZCBvcGVuc3Ns LTEuMS4xZy9jcnlwdG8vcmFuZC9yYW5kX3VuaXguYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0 by9yYW5kL3JhbmRfdW5peC5jLmVkazItYnVpbGQJMjAyMC0wNS0xOCAxMjo1NjowNS42NDY2NTU1 NTQgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vcmFuZC9yYW5kX3VuaXguYwkyMDIw LTA1LTE4IDEyOjU4OjUxLjA4ODA5MDg5NiArMDIwMAorQEAgLTIwLDcgKzIwLDcgQEAKKyAjaW5j bHVkZSAiY3J5cHRvL2ZpcHMuaCIKKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAjaW5jbHVkZSAiaW50 ZXJuYWwvZHNvLmgiCistI2lmZGVmIF9fbGludXgKKysjaWYgZGVmaW5lZChfX2xpbnV4KSAmJiAh ZGVmaW5lZChPUEVOU1NMX1NZU19VRUZJKQorICMgaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KKyAj IGluY2x1ZGUgPHN5cy9yYW5kb20uaD4KKyAjIGlmZGVmIERFVlJBTkRPTV9XQUlUCitkaWZmIC11 cCBvcGVuc3NsLTEuMS4xZy9pbmNsdWRlL2NyeXB0by9maXBzLmguZWRrMi1idWlsZCBvcGVuc3Ns LTEuMS4xZy9pbmNsdWRlL2NyeXB0by9maXBzLmgKKy0tLSBvcGVuc3NsLTEuMS4xZy9pbmNsdWRl L2NyeXB0by9maXBzLmguZWRrMi1idWlsZAkyMDIwLTA1LTE4IDEyOjU1OjUzLjI5NjU0ODQwNiAr MDIwMAorKysrIG9wZW5zc2wtMS4xLjFnL2luY2x1ZGUvY3J5cHRvL2ZpcHMuaAkyMDIwLTA1LTE4 IDEyOjU1OjUzLjM0MDU0ODc4OCArMDIwMAorQEAgLTUwLDEwICs1MCw2IEBACisgI2luY2x1ZGUg PG9wZW5zc2wvb3BlbnNzbGNvbmYuaD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD4KKyAKKy0j aWZuZGVmIE9QRU5TU0xfRklQUworLSMgZXJyb3IgRklQUyBpcyBkaXNhYmxlZC4KKy0jZW5kaWYK Ky0KKyAjaWZkZWYgT1BFTlNTTF9GSVBTCisgCisgaW50IEZJUFNfbW9kdWxlX21vZGVfc2V0KGlu dCBvbm9mZik7CitAQCAtOTcsNCArOTMsOCBAQCB2b2lkIGZpcHNfc2V0X3NlbGZ0ZXN0X2ZhaWwo dm9pZCk7CisgCisgdm9pZCBGSVBTX2dldF90aW1ldmVjKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgdW5z aWduZWQgbG9uZyAqcGN0cik7CisgCisrI2Vsc2UKKysKKysjIGRlZmluZSBmaXBzX2luX3Bvc3Qo KSAwCisrCisgI2VuZGlmCgpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjEuMS1maXBzLWN1cnZlcy5w YXRjaCBiL29wZW5zc2wtMS4xLjEtZmlwcy1jdXJ2ZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMzNlOWZjNQotLS0gL2Rldi9udWxsCisrKyBiL29wZW5zc2wtMS4x LjEtZmlwcy1jdXJ2ZXMucGF0Y2gKQEAgLTAsMCArMSwyMDAgQEAKK2RpZmYgLXVwIG9wZW5zc2wt MS4xLjFnL2NyeXB0by9lYy9lY19jdXJ2ZS5jLmZpcHMtY3VydmVzIG9wZW5zc2wtMS4xLjFnL2Ny eXB0by9lYy9lY19jdXJ2ZS5jCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjX2N1cnZl LmMuZmlwcy1jdXJ2ZXMJMjAyMC0wNS0xOCAxMjo1OTo1NC44Mzk2NDM5ODAgKzAyMDAKKysrKyBv cGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNfY3VydmUuYwkyMDIwLTA1LTE4IDEyOjU5OjU0Ljg1 MjY0NDA5MyArMDIwMAorQEAgLTEzLDYgKzEzLDcgQEAKKyAjaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KKyAjaW5jbHVkZSA8b3BlbnNzbC9vYmpfbWFjLmg+CisgI2luY2x1ZGUgPG9wZW5zc2wvb3Bl bnNzbGNvbmYuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9jcnlwdG8uaD4KKyAjaW5jbHVkZSAiaW50 ZXJuYWwvbmVsZW0uaCIKKyAKKyB0eXBlZGVmIHN0cnVjdCB7CitAQCAtMjM3LDYgKzIzOCw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgeworIAorIHR5cGVkZWYgc3RydWN0IF9lY19saXN0X2VsZW1l bnRfc3QgeworICAgICBpbnQgbmlkOworKyAgICBpbnQgZmlwc19hbGxvd2VkOworICAgICBjb25z dCBFQ19DVVJWRV9EQVRBICpkYXRhOworICAgICBjb25zdCBFQ19NRVRIT0QgKigqbWV0aCkgKHZv aWQpOworICAgICBjb25zdCBjaGFyICpjb21tZW50OworQEAgLTI0NiwyMyArMjQ4LDIzIEBAIHN0 YXRpYyBjb25zdCBlY19saXN0X2VsZW1lbnQgY3VydmVfbGlzdFsKKyAgICAgLyogcHJpbWUgZmll bGQgY3VydmVzICovCisgICAgIC8qIHNlY2cgY3VydmVzICovCisgI2lmbmRlZiBPUEVOU1NMX05P X0VDX05JU1RQXzY0X0dDQ18xMjgKKy0gICAge05JRF9zZWNwMjI0cjEsICZfRUNfTklTVF9QUklN RV8yMjQuaCwgRUNfR0ZwX25pc3RwMjI0X21ldGhvZCwKKysgICAge05JRF9zZWNwMjI0cjEsIDEs ICZfRUNfTklTVF9QUklNRV8yMjQuaCwgRUNfR0ZwX25pc3RwMjI0X21ldGhvZCwKKyAgICAgICJO SVNUL1NFQ0cgY3VydmUgb3ZlciBhIDIyNCBiaXQgcHJpbWUgZmllbGQifSwKKyAjZWxzZQorLSAg ICB7TklEX3NlY3AyMjRyMSwgJl9FQ19OSVNUX1BSSU1FXzIyNC5oLCAwLAorKyAgICB7TklEX3Nl Y3AyMjRyMSwgMSwgJl9FQ19OSVNUX1BSSU1FXzIyNC5oLCAwLAorICAgICAgIk5JU1QvU0VDRyBj dXJ2ZSBvdmVyIGEgMjI0IGJpdCBwcmltZSBmaWVsZCJ9LAorICNlbmRpZgorLSAgICB7TklEX3Nl Y3AyNTZrMSwgJl9FQ19TRUNHX1BSSU1FXzI1NksxLmgsIDAsCisrICAgIHtOSURfc2VjcDI1Nmsx LCAwLCAmX0VDX1NFQ0dfUFJJTUVfMjU2SzEuaCwgMCwKKyAgICAgICJTRUNHIGN1cnZlIG92ZXIg YSAyNTYgYml0IHByaW1lIGZpZWxkIn0sCisgICAgIC8qIFNFQ0cgc2VjcDI1NnIxIGlzIHRoZSBz YW1lIGFzIFg5LjYyIHByaW1lMjU2djEgYW5kIGhlbmNlIG9taXR0ZWQgKi8KKy0gICAge05JRF9z ZWNwMzg0cjEsICZfRUNfTklTVF9QUklNRV8zODQuaCwKKysgICAge05JRF9zZWNwMzg0cjEsIDEs ICZfRUNfTklTVF9QUklNRV8zODQuaCwKKyAjIGlmIGRlZmluZWQoUzM5MFhfRUNfQVNNKQorICAg ICAgRUNfR0ZwX3MzOTB4X25pc3RwMzg0X21ldGhvZCwKKyAjIGVsc2UKKyAgICAgIDAsCisgIyBl bmRpZgorICAgICAgIk5JU1QvU0VDRyBjdXJ2ZSBvdmVyIGEgMzg0IGJpdCBwcmltZSBmaWVsZCJ9 LAorLSAgICB7TklEX3NlY3A1MjFyMSwgJl9FQ19OSVNUX1BSSU1FXzUyMS5oLAorKyAgICB7TklE X3NlY3A1MjFyMSwgMSwgJl9FQ19OSVNUX1BSSU1FXzUyMS5oLAorICMgaWYgZGVmaW5lZChTMzkw WF9FQ19BU00pCisgICAgICBFQ19HRnBfczM5MHhfbmlzdHA1MjFfbWV0aG9kLAorICMgZWxpZiAh ZGVmaW5lZChPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgpCitAQCAtMjcyLDcgKzI3NCw3 IEBAIHN0YXRpYyBjb25zdCBlY19saXN0X2VsZW1lbnQgY3VydmVfbGlzdFsKKyAjIGVuZGlmCisg ICAgICAiTklTVC9TRUNHIGN1cnZlIG92ZXIgYSA1MjEgYml0IHByaW1lIGZpZWxkIn0sCisgICAg IC8qIFg5LjYyIGN1cnZlcyAqLworLSAgICB7TklEX1g5XzYyX3ByaW1lMjU2djEsICZfRUNfWDlf NjJfUFJJTUVfMjU2VjEuaCwKKysgICAge05JRF9YOV82Ml9wcmltZTI1NnYxLCAxLCAmX0VDX1g5 XzYyX1BSSU1FXzI1NlYxLmgsCisgI2lmIGRlZmluZWQoRUNQX05JU1RaMjU2X0FTTSkKKyAgICAg IEVDX0dGcF9uaXN0ejI1Nl9tZXRob2QsCisgIyBlbGlmIGRlZmluZWQoUzM5MFhfRUNfQVNNKQor QEAgLTQwNCw2ICs0MDYsMTAgQEAgRUNfR1JPVVAgKkVDX0dST1VQX25ld19ieV9jdXJ2ZV9uYW1l KGludAorIAorICAgICBmb3IgKGkgPSAwOyBpIDwgY3VydmVfbGlzdF9sZW5ndGg7IGkrKykKKyAg ICAgICAgIGlmIChjdXJ2ZV9saXN0W2ldLm5pZCA9PSBuaWQpIHsKKysgICAgICAgICAgICBpZiAo IWN1cnZlX2xpc3RbaV0uZmlwc19hbGxvd2VkICYmIEZJUFNfbW9kZSgpKSB7CisrICAgICAgICAg ICAgICAgIEVDZXJyKEVDX0ZfRUNfR1JPVVBfTkVXX0JZX0NVUlZFX05BTUUsIEVDX1JfTk9UX0Ff TklTVF9QUklNRSk7CisrICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgICByZXQgPSBlY19ncm91cF9uZXdfZnJvbV9kYXRhKGN1cnZlX2xpc3Rb aV0pOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorQEAgLTQxOCwxOSArNDI0LDMx IEBAIEVDX0dST1VQICpFQ19HUk9VUF9uZXdfYnlfY3VydmVfbmFtZShpbnQKKyAKKyBzaXplX3Qg RUNfZ2V0X2J1aWx0aW5fY3VydmVzKEVDX2J1aWx0aW5fY3VydmUgKnIsIHNpemVfdCBuaXRlbXMp CisgeworLSAgICBzaXplX3QgaSwgbWluOworKyAgICBzaXplX3QgaSwgaiwgbnVtOworKyAgICBp bnQgZmlwc19tb2RlID0gRklQU19tb2RlKCk7CisgCistICAgIGlmIChyID09IE5VTEwgfHwgbml0 ZW1zID09IDApCistICAgICAgICByZXR1cm4gY3VydmVfbGlzdF9sZW5ndGg7CisrICAgIG51bSA9 IGN1cnZlX2xpc3RfbGVuZ3RoOworKyAgICBpZiAoZmlwc19tb2RlKQorKyAgICAgICAgZm9yIChp ID0gMDsgaSA8IGN1cnZlX2xpc3RfbGVuZ3RoOyBpKyspIHsKKysgICAgICAgICAgICBpZiAoIWN1 cnZlX2xpc3RbaV0uZmlwc19hbGxvd2VkKQorKyAgICAgICAgICAgICAgICAtLW51bTsKKysgICAg ICAgIH0KKyAKKy0gICAgbWluID0gbml0ZW1zIDwgY3VydmVfbGlzdF9sZW5ndGggPyBuaXRlbXMg OiBjdXJ2ZV9saXN0X2xlbmd0aDsKKysgICAgaWYgKHIgPT0gTlVMTCB8fCBuaXRlbXMgPT0gMCkg eworKyAgICAgICAgcmV0dXJuIG51bTsKKysgICAgfQorIAorLSAgICBmb3IgKGkgPSAwOyBpIDwg bWluOyBpKyspIHsKKy0gICAgICAgIHJbaV0ubmlkID0gY3VydmVfbGlzdFtpXS5uaWQ7CistICAg ICAgICByW2ldLmNvbW1lbnQgPSBjdXJ2ZV9saXN0W2ldLmNvbW1lbnQ7CisrICAgIGZvciAoaSA9 IDAsIGogPSAwOyBpIDwgY3VydmVfbGlzdF9sZW5ndGg7IGkrKykgeworKyAgICAgICAgaWYgKGog Pj0gbml0ZW1zKQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgaWYgKCFmaXBzX21vZGUg fHwgY3VydmVfbGlzdFtpXS5maXBzX2FsbG93ZWQpIHsKKysgICAgICAgICAgICByW2pdLm5pZCA9 IGN1cnZlX2xpc3RbaV0ubmlkOworKyAgICAgICAgICAgIHJbal0uY29tbWVudCA9IGN1cnZlX2xp c3RbaV0uY29tbWVudDsKKysgICAgICAgICAgICArK2o7CisrICAgICAgICB9CisgICAgIH0KKyAK Ky0gICAgcmV0dXJuIGN1cnZlX2xpc3RfbGVuZ3RoOworKyAgICByZXR1cm4gbnVtOworIH0KKyAK KyAvKiBGdW5jdGlvbnMgdG8gdHJhbnNsYXRlIGJldHdlZW4gY29tbW9uIE5JU1QgY3VydmUgbmFt ZXMgYW5kIE5JRHMgKi8KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFnL3NzbC90MV9saWIuYy5maXBz LWN1cnZlcyBvcGVuc3NsLTEuMS4xZy9zc2wvdDFfbGliLmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9z c2wvdDFfbGliLmMuZmlwcy1jdXJ2ZXMJMjAyMC0wNS0xOCAxMjo1OTo1NC43OTc2NDM2MTYgKzAy MDAKKysrKyBvcGVuc3NsLTEuMS4xZy9zc2wvdDFfbGliLmMJMjAyMC0wNS0xOCAxMzowMzo1NC43 NDg3MjU0NjMgKzAyMDAKK0BAIC02NzgsNiArNjc4LDM2IEBAIHN0YXRpYyBjb25zdCB1aW50MTZf dCB0bHMxMl9zaWdhbGdzW10gPQorICNlbmRpZgorIH07CisgCisrc3RhdGljIGNvbnN0IHVpbnQx Nl90IHRsczEyX2ZpcHNfc2lnYWxnc1tdID0geworKyNpZm5kZWYgT1BFTlNTTF9OT19FQworKyAg ICBUTFNFWFRfU0lHQUxHX2VjZHNhX3NlY3AyNTZyMV9zaGEyNTYsCisrICAgIFRMU0VYVF9TSUdB TEdfZWNkc2Ffc2VjcDM4NHIxX3NoYTM4NCwKKysgICAgVExTRVhUX1NJR0FMR19lY2RzYV9zZWNw NTIxcjFfc2hhNTEyLAorKyNlbmRpZgorKworKyAgICBUTFNFWFRfU0lHQUxHX3JzYV9wc3NfcHNz X3NoYTI1NiwKKysgICAgVExTRVhUX1NJR0FMR19yc2FfcHNzX3Bzc19zaGEzODQsCisrICAgIFRM U0VYVF9TSUdBTEdfcnNhX3Bzc19wc3Nfc2hhNTEyLAorKyAgICBUTFNFWFRfU0lHQUxHX3JzYV9w c3NfcnNhZV9zaGEyNTYsCisrICAgIFRMU0VYVF9TSUdBTEdfcnNhX3Bzc19yc2FlX3NoYTM4NCwK KysgICAgVExTRVhUX1NJR0FMR19yc2FfcHNzX3JzYWVfc2hhNTEyLAorKworKyAgICBUTFNFWFRf U0lHQUxHX3JzYV9wa2NzMV9zaGEyNTYsCisrICAgIFRMU0VYVF9TSUdBTEdfcnNhX3BrY3MxX3No YTM4NCwKKysgICAgVExTRVhUX1NJR0FMR19yc2FfcGtjczFfc2hhNTEyLAorKworKyNpZm5kZWYg T1BFTlNTTF9OT19FQworKyAgICBUTFNFWFRfU0lHQUxHX2VjZHNhX3NoYTIyNCwKKysjZW5kaWYK KysgICAgVExTRVhUX1NJR0FMR19yc2FfcGtjczFfc2hhMjI0LAorKyNpZm5kZWYgT1BFTlNTTF9O T19EU0EKKysgICAgVExTRVhUX1NJR0FMR19kc2Ffc2hhMjI0LAorKyAgICBUTFNFWFRfU0lHQUxH X2RzYV9zaGEyNTYsCisrICAgIFRMU0VYVF9TSUdBTEdfZHNhX3NoYTM4NCwKKysgICAgVExTRVhU X1NJR0FMR19kc2Ffc2hhNTEyLAorKyNlbmRpZgorK307CisrCisgI2lmbmRlZiBPUEVOU1NMX05P X0VDCisgc3RhdGljIGNvbnN0IHVpbnQxNl90IHN1aXRlYl9zaWdhbGdzW10gPSB7CisgICAgIFRM U0VYVF9TSUdBTEdfZWNkc2Ffc2VjcDI1NnIxX3NoYTI1NiwKK0BAIC04OTQsNiArOTI0LDggQEAg c3RhdGljIGNvbnN0IFNJR0FMR19MT09LVVAgKnRsczFfZ2V0X2xlZworICAgICB9CisgICAgIGlm IChpZHggPCAwIHx8IGlkeCA+PSAoaW50KU9TU0xfTkVMRU0odGxzX2RlZmF1bHRfc2lnYWxnKSkK KyAgICAgICAgIHJldHVybiBOVUxMOworKyAgICBpZiAoRklQU19tb2RlKCkpIC8qIFdlIGRvIG5v dCBhbGxvdyBsZWdhY3kgU0hBMSBzaWduYXR1cmVzIGluIEZJUFMgbW9kZSAqLworKyAgICAgICAg cmV0dXJuIE5VTEw7CisgICAgIGlmIChTU0xfVVNFX1NJR0FMR1MocykgfHwgaWR4ICE9IFNTTF9Q S0VZX1JTQSkgeworICAgICAgICAgY29uc3QgU0lHQUxHX0xPT0tVUCAqbHUgPSB0bHMxX2xvb2t1 cF9zaWdhbGcodGxzX2RlZmF1bHRfc2lnYWxnW2lkeF0pOworIAorQEAgLTk1NCw2ICs5ODYsOSBA QCBzaXplX3QgdGxzMTJfZ2V0X3BzaWdhbGdzKFNTTCAqcywgaW50IHNlCisgICAgIH0gZWxzZSBp ZiAocy0+Y2VydC0+Y29uZl9zaWdhbGdzKSB7CisgICAgICAgICAqcHNpZ3MgPSBzLT5jZXJ0LT5j b25mX3NpZ2FsZ3M7CisgICAgICAgICByZXR1cm4gcy0+Y2VydC0+Y29uZl9zaWdhbGdzbGVuOwor KyAgICB9IGVsc2UgaWYgKEZJUFNfbW9kZSgpKSB7CisrICAgICAgICAqcHNpZ3MgPSB0bHMxMl9m aXBzX3NpZ2FsZ3M7CisrICAgICAgICByZXR1cm4gT1NTTF9ORUxFTSh0bHMxMl9maXBzX3NpZ2Fs Z3MpOworICAgICB9IGVsc2UgeworICAgICAgICAgKnBzaWdzID0gdGxzMTJfc2lnYWxnczsKKyAg ICAgICAgIHJldHVybiBPU1NMX05FTEVNKHRsczEyX3NpZ2FsZ3MpOworQEAgLTk3Myw2ICsxMDA4 LDkgQEAgaW50IHRsc19jaGVja19zaWdhbGdfY3VydmUoY29uc3QgU1NMICpzLAorICAgICBpZiAo cy0+Y2VydC0+Y29uZl9zaWdhbGdzKSB7CisgICAgICAgICBzaWdzID0gcy0+Y2VydC0+Y29uZl9z aWdhbGdzOworICAgICAgICAgc2lnbGVuID0gcy0+Y2VydC0+Y29uZl9zaWdhbGdzbGVuOworKyAg ICB9IGVsc2UgaWYgKEZJUFNfbW9kZSgpKSB7CisrICAgICAgICBzaWdzID0gdGxzMTJfZmlwc19z aWdhbGdzOworKyAgICAgICAgc2lnbGVuID0gT1NTTF9ORUxFTSh0bHMxMl9maXBzX3NpZ2FsZ3Mp OworICAgICB9IGVsc2UgeworICAgICAgICAgc2lncyA9IHRsczEyX3NpZ2FsZ3M7CisgICAgICAg ICBzaWdsZW4gPSBPU1NMX05FTEVNKHRsczEyX3NpZ2FsZ3MpOworQEAgLTE2MTcsNiArMTY1NSw4 IEBAIHN0YXRpYyBpbnQgdGxzMTJfc2lnYWxnX2FsbG93ZWQoY29uc3QgU1MKKyAgICAgaWYgKGx1 LT5zaWcgPT0gTklEX2lkX0dvc3RSMzQxMF8yMDEyXzI1NgorICAgICAgICAgICAgIHx8IGx1LT5z aWcgPT0gTklEX2lkX0dvc3RSMzQxMF8yMDEyXzUxMgorICAgICAgICAgICAgIHx8IGx1LT5zaWcg PT0gTklEX2lkX0dvc3RSMzQxMF8yMDAxKSB7CisrICAgICAgICBpZiAoRklQU19tb2RlKCkpCisr ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAvKiBXZSBuZXZlciBhbGxvdyBHT1NUIHNp ZyBhbGdzIG9uIHRoZSBzZXJ2ZXIgd2l0aCBUTFN2MS4zICovCisgICAgICAgICBpZiAocy0+c2Vy dmVyICYmIFNTTF9JU19UTFMxMyhzKSkKKyAgICAgICAgICAgICByZXR1cm4gMDsKK0BAIC0yODQy LDYgKzI4ODIsMTMgQEAgaW50IHRsc19jaG9vc2Vfc2lnYWxnKFNTTCAqcywgaW50IGZhdGFsZQor ICAgICAgICAgICAgICAgICBjb25zdCB1aW50MTZfdCAqc2VudF9zaWdzOworICAgICAgICAgICAg ICAgICBzaXplX3Qgc2VudF9zaWdzbGVuOworIAorKyAgICAgICAgICAgICAgICBpZiAoZmF0YWxl cnJzICYmIEZJUFNfbW9kZSgpKSB7CisrICAgICAgICAgICAgICAgICAgICAvKiBUaGVyZSBhcmUg bm8gc3VpdGFibGUgbGVnYWN5IGFsZ29yaXRobXMgaW4gRklQUyBtb2RlICovCisrICAgICAgICAg ICAgICAgICAgICBTU0xmYXRhbChzLCBTU0xfQURfSEFORFNIQUtFX0ZBSUxVUkUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTU0xfRl9UTFNfQ0hPT1NFX1NJR0FMRywKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNTTF9SX05PX1NVSVRBQkxFX1NJR05BVFVSRV9BTEdPUklU SE0pOworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisrICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgaWYgKChsdSA9IHRsczFfZ2V0X2xlZ2FjeV9zaWdhbGcocywgLTEp KSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICBpZiAoIWZhdGFsZXJycykKKyAgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMS4x LXMzOTB4LWVjYy5wYXRjaCBiL29wZW5zc2wtMS4xLjEtczM5MHgtZWNjLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNTk2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9v cGVuc3NsLTEuMS4xLXMzOTB4LWVjYy5wYXRjaApAQCAtMCwwICsxLDIzMDYgQEAKK2RpZmYgLXVw IG9wZW5zc2wtMS4xLjFnL0NvbmZpZ3VyYXRpb25zLzAwLWJhc2UtdGVtcGxhdGVzLmNvbmYuczM5 MHgtZWNjIG9wZW5zc2wtMS4xLjFnL0NvbmZpZ3VyYXRpb25zLzAwLWJhc2UtdGVtcGxhdGVzLmNv bmYKKy0tLSBvcGVuc3NsLTEuMS4xZy9Db25maWd1cmF0aW9ucy8wMC1iYXNlLXRlbXBsYXRlcy5j b25mLnMzOTB4LWVjYwkyMDIwLTA0LTIxIDE0OjIyOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIG9w ZW5zc2wtMS4xLjFnL0NvbmZpZ3VyYXRpb25zLzAwLWJhc2UtdGVtcGxhdGVzLmNvbmYJMjAyMC0w NS0xOCAxMjo0NTo0MC44NTUyMzQyNjIgKzAyMDAKK0BAIC0yODksNiArMjg5LDcgQEAgbXkgJXRh cmdldHM9KAorIAl0ZW1wbGF0ZQk9PiAxLAorIAljcHVpZF9hc21fc3JjICAgPT4gInMzOTB4Y2Fw LmMgczM5MHhjcHVpZC5TIiwKKyAJYm5fYXNtX3NyYyAgICAgID0+ICJhc20vczM5MHguUyBzMzkw eC1tb250LlMgczM5MHgtZ2YybS5zIiwKKysJZWNfYXNtX3NyYyAgICAgID0+ICJlY3BfczM5MHhf bmlzdHAuYyIsCisgCWFlc19hc21fc3JjICAgICA9PiAiYWVzLXMzOTB4LlMgYWVzLWN0ci5mYWtl IGFlcy14dHMuZmFrZSIsCisgCXNoYTFfYXNtX3NyYyAgICA9PiAic2hhMS1zMzkweC5TIHNoYTI1 Ni1zMzkweC5TIHNoYTUxMi1zMzkweC5TIiwKKyAJcmM0X2FzbV9zcmMgICAgID0+ICJyYzQtczM5 MHgucyIsCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZy9Db25maWd1cmUuczM5MHgtZWNjIG9wZW5z c2wtMS4xLjFnL0NvbmZpZ3VyZQorLS0tIG9wZW5zc2wtMS4xLjFnL0NvbmZpZ3VyZS5zMzkweC1l Y2MJMjAyMC0wNS0xOCAxMjo0NTo0MC43ODEyMzM2MTggKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4x Zy9Db25maWd1cmUJMjAyMC0wNS0xOCAxMjo0NTo0MC44NTYyMzQyNzAgKzAyMDAKK0BAIC0xMzk4 LDYgKzEzOTgsOSBAQCB1bmxlc3MgKCRkaXNhYmxlZHthc219KSB7CisgICAgIGlmICgkdGFyZ2V0 e2VjX2FzbV9zcmN9ID1+IC9lY3BfbmlzdHoyNTYvKSB7CisgICAgICAgICBwdXNoIEB7JGNvbmZp Z3tsaWJfZGVmaW5lc319LCAiRUNQX05JU1RaMjU2X0FTTSI7CisgICAgIH0KKysgICAgaWYgKCR0 YXJnZXR7ZWNfYXNtX3NyY30gPX4gL2VjcF9zMzkweF9uaXN0cC8pIHsKKysgICAgICAgIHB1c2gg QHskY29uZmlne2xpYl9kZWZpbmVzfX0sICJTMzkwWF9FQ19BU00iOworKyAgICB9CisgICAgIGlm ICgkdGFyZ2V0e2VjX2FzbV9zcmN9ID1+IC94MjU1MTkvKSB7CisgICAgICAgICBwdXNoIEB7JGNv bmZpZ3tsaWJfZGVmaW5lc319LCAiWDI1NTE5X0FTTSI7CisgICAgIH0KK2RpZmYgLXVwIG9wZW5z c2wtMS4xLjFnL2NyeXB0by9jbWFjL2NtX3BtZXRoLmMuczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFn L2NyeXB0by9jbWFjL2NtX3BtZXRoLmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vY21hYy9j bV9wbWV0aC5jLnMzOTB4LWVjYwkyMDIwLTA1LTE4IDEyOjQ1OjQwLjc4MjIzMzYyNyArMDIwMAor KysrIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9jbWFjL2NtX3BtZXRoLmMJMjAyMC0wNS0xOCAxMjo0 NTo0Mi42NjEyNDk5NTcgKzAyMDAKK0BAIC0xNTksMyArMTU5LDggQEAgY29uc3QgRVZQX1BLRVlf TUVUSE9EIGNtYWNfcGtleV9tZXRoID0geworICAgICBwa2V5X2NtYWNfY3RybCwKKyAgICAgcGtl eV9jbWFjX2N0cmxfc3RyCisgfTsKKysKKytjb25zdCBFVlBfUEtFWV9NRVRIT0QgKmNtYWNfcGtl eV9tZXRob2Qodm9pZCkKKyt7CisrICAgIHJldHVybiAmY21hY19wa2V5X21ldGg7CisrfQorZGlm ZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2RoL2RoX3BtZXRoLmMuczM5MHgtZWNjIG9wZW5z c2wtMS4xLjFnL2NyeXB0by9kaC9kaF9wbWV0aC5jCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRv L2RoL2RoX3BtZXRoLmMuczM5MHgtZWNjCTIwMjAtMDUtMTggMTI6NDU6NDAuNzgyMjMzNjI3ICsw MjAwCisrKysgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2RoL2RoX3BtZXRoLmMJMjAyMC0wNS0xOCAx Mjo0NTo0Mi42NjEyNDk5NTcgKzAyMDAKK0BAIC01MTIsNiArNTEyLDExIEBAIGNvbnN0IEVWUF9Q S0VZX01FVEhPRCBkaF9wa2V5X21ldGggPSB7CisgICAgIHBrZXlfZGhfY3RybF9zdHIKKyB9Owor IAorK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqZGhfcGtleV9tZXRob2Qodm9pZCkKKyt7CisrICAg IHJldHVybiAmZGhfcGtleV9tZXRoOworK30KKysKKyBjb25zdCBFVlBfUEtFWV9NRVRIT0QgZGh4 X3BrZXlfbWV0aCA9IHsKKyAgICAgRVZQX1BLRVlfREhYLAorICAgICBFVlBfUEtFWV9GTEFHX0ZJ UFMsCitAQCAtNTQ1LDMgKzU1MCw4IEBAIGNvbnN0IEVWUF9QS0VZX01FVEhPRCBkaHhfcGtleV9t ZXRoID0geworICAgICBwa2V5X2RoX2N0cmwsCisgICAgIHBrZXlfZGhfY3RybF9zdHIKKyB9Owor KworK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqZGh4X3BrZXlfbWV0aG9kKHZvaWQpCisreworKyAg ICByZXR1cm4gJmRoeF9wa2V5X21ldGg7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5 cHRvL2RzYS9kc2FfcG1ldGguYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2RzYS9k c2FfcG1ldGguYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9kc2EvZHNhX3BtZXRoLmMuczM5 MHgtZWNjCTIwMjAtMDUtMTggMTI6NDU6NDAuNzgzMjMzNjM2ICswMjAwCisrKysgb3BlbnNzbC0x LjEuMWcvY3J5cHRvL2RzYS9kc2FfcG1ldGguYwkyMDIwLTA1LTE4IDEyOjQ1OjQyLjY2MjI0OTk2 NiArMDIwMAorQEAgLTI3MSwzICsyNzEsOCBAQCBjb25zdCBFVlBfUEtFWV9NRVRIT0QgZHNhX3Br ZXlfbWV0aCA9IHsKKyAgICAgcGtleV9kc2FfY3RybCwKKyAgICAgcGtleV9kc2FfY3RybF9zdHIK KyB9OworKworK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqZHNhX3BrZXlfbWV0aG9kKHZvaWQpCisr eworKyAgICByZXR1cm4gJmRzYV9wa2V5X21ldGg7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEu MWcvY3J5cHRvL2VjL2J1aWxkLmluZm8uczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9l Yy9idWlsZC5pbmZvCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2J1aWxkLmluZm8uczM5 MHgtZWNjCTIwMjAtMDQtMjEgMTQ6MjI6MzkuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0x LjEuMWcvY3J5cHRvL2VjL2J1aWxkLmluZm8JMjAyMC0wNS0xOCAxMjo0NTo0Mi42NjIyNDk5NjYg KzAyMDAKK0BAIC0yNiw2ICsyNiw5IEBAIEdFTkVSQVRFW2VjcF9uaXN0ejI1Ni1hcm12OC5TXT1h c20vZWNwX24KKyBJTkNMVURFW2VjcF9uaXN0ejI1Ni1hcm12OC5vXT0uLgorIEdFTkVSQVRFW2Vj cF9uaXN0ejI1Ni1wcGM2NC5zXT1hc20vZWNwX25pc3R6MjU2LXBwYzY0LnBsICQoUEVSTEFTTV9T Q0hFTUUpCisgCisrSU5DTFVERVtlY3BfczM5MHhfbmlzdHAub109Li4KKytJTkNMVURFW2VjeF9t ZXRoLm9dPS4uCisrCisgR0VORVJBVEVbeDI1NTE5LXg4Nl82NC5zXT1hc20veDI1NTE5LXg4Nl82 NC5wbCAkKFBFUkxBU01fU0NIRU1FKQorIEdFTkVSQVRFW3gyNTUxOS1wcGM2NC5zXT1hc20veDI1 NTE5LXBwYzY0LnBsICQoUEVSTEFTTV9TQ0hFTUUpCisgCitkaWZmIC11cCBvcGVuc3NsLTEuMS4x Zy9jcnlwdG8vZWMvZWNfY3VydmUuYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2Vj L2VjX2N1cnZlLmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNfY3VydmUuYy5zMzkw eC1lY2MJMjAyMC0wNS0xOCAxMjo0NTo0MC43NTMyMzMzNzUgKzAyMDAKKysrKyBvcGVuc3NsLTEu MS4xZy9jcnlwdG8vZWMvZWNfY3VydmUuYwkyMDIwLTA1LTE4IDEyOjQ1OjQyLjY2MzI0OTk3NSAr MDIwMAorQEAgLTI1NSwyMCArMjU1LDI5IEBAIHN0YXRpYyBjb25zdCBlY19saXN0X2VsZW1lbnQg Y3VydmVfbGlzdFsKKyAgICAge05JRF9zZWNwMjU2azEsICZfRUNfU0VDR19QUklNRV8yNTZLMS5o LCAwLAorICAgICAgIlNFQ0cgY3VydmUgb3ZlciBhIDI1NiBiaXQgcHJpbWUgZmllbGQifSwKKyAg ICAgLyogU0VDRyBzZWNwMjU2cjEgaXMgdGhlIHNhbWUgYXMgWDkuNjIgcHJpbWUyNTZ2MSBhbmQg aGVuY2Ugb21pdHRlZCAqLworLSAgICB7TklEX3NlY3AzODRyMSwgJl9FQ19OSVNUX1BSSU1FXzM4 NC5oLCAwLAorKyAgICB7TklEX3NlY3AzODRyMSwgJl9FQ19OSVNUX1BSSU1FXzM4NC5oLAorKyMg aWYgZGVmaW5lZChTMzkwWF9FQ19BU00pCisrICAgICBFQ19HRnBfczM5MHhfbmlzdHAzODRfbWV0 aG9kLAorKyMgZWxzZQorKyAgICAgMCwKKysjIGVuZGlmCisgICAgICAiTklTVC9TRUNHIGN1cnZl IG92ZXIgYSAzODQgYml0IHByaW1lIGZpZWxkIn0sCistI2lmbmRlZiBPUEVOU1NMX05PX0VDX05J U1RQXzY0X0dDQ18xMjgKKy0gICAge05JRF9zZWNwNTIxcjEsICZfRUNfTklTVF9QUklNRV81MjEu aCwgRUNfR0ZwX25pc3RwNTIxX21ldGhvZCwKKy0gICAgICJOSVNUL1NFQ0cgY3VydmUgb3ZlciBh IDUyMSBiaXQgcHJpbWUgZmllbGQifSwKKy0jZWxzZQorLSAgICB7TklEX3NlY3A1MjFyMSwgJl9F Q19OSVNUX1BSSU1FXzUyMS5oLCAwLAorKyAgICB7TklEX3NlY3A1MjFyMSwgJl9FQ19OSVNUX1BS SU1FXzUyMS5oLAorKyMgaWYgZGVmaW5lZChTMzkwWF9FQ19BU00pCisrICAgICBFQ19HRnBfczM5 MHhfbmlzdHA1MjFfbWV0aG9kLAorKyMgZWxpZiAhZGVmaW5lZChPUEVOU1NMX05PX0VDX05JU1RQ XzY0X0dDQ18xMjgpCisrICAgICBFQ19HRnBfbmlzdHA1MjFfbWV0aG9kLAorKyMgZWxzZQorKyAg ICAgMCwKKysjIGVuZGlmCisgICAgICAiTklTVC9TRUNHIGN1cnZlIG92ZXIgYSA1MjEgYml0IHBy aW1lIGZpZWxkIn0sCistI2VuZGlmCisgICAgIC8qIFg5LjYyIGN1cnZlcyAqLworICAgICB7TklE X1g5XzYyX3ByaW1lMjU2djEsICZfRUNfWDlfNjJfUFJJTUVfMjU2VjEuaCwKKyAjaWYgZGVmaW5l ZChFQ1BfTklTVFoyNTZfQVNNKQorICAgICAgRUNfR0ZwX25pc3R6MjU2X21ldGhvZCwKKy0jZWxp ZiAhZGVmaW5lZChPUEVOU1NMX05PX0VDX05JU1RQXzY0X0dDQ18xMjgpCisrIyBlbGlmIGRlZmlu ZWQoUzM5MFhfRUNfQVNNKQorKyAgICAgRUNfR0ZwX3MzOTB4X25pc3RwMjU2X21ldGhvZCwKKysj IGVsaWYgIWRlZmluZWQoT1BFTlNTTF9OT19FQ19OSVNUUF82NF9HQ0NfMTI4KQorICAgICAgRUNf R0ZwX25pc3RwMjU2X21ldGhvZCwKKyAjZWxzZQorICAgICAgMCwKK2RpZmYgLXVwIG9wZW5zc2wt MS4xLjFnL2NyeXB0by9lYy9lY2RzYV9vc3NsLmMuczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2Ny eXB0by9lYy9lY2RzYV9vc3NsLmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNkc2Ff b3NzbC5jLnMzOTB4LWVjYwkyMDIwLTA1LTE4IDEyOjQ1OjQwLjc4NDIzMzY0NCArMDIwMAorKysr IG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY2RzYV9vc3NsLmMJMjAyMC0wNS0xOCAxMjo0NTo0 Mi42NjQyNDk5ODMgKzAyMDAKK0BAIC0xOCw2ICsxOCw0MSBAQAorICMgaW5jbHVkZSA8b3BlbnNz bC9maXBzLmg+CisgI2VuZGlmCisgCisraW50IG9zc2xfZWNkc2Ffc2lnbl9zZXR1cChFQ19LRVkg KmVja2V5LCBCTl9DVFggKmN0eF9pbiwgQklHTlVNICoqa2ludnAsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICBCSUdOVU0gKipycCkKKyt7CisrICAgIGlmIChlY2tleS0+Z3JvdXAtPm1ldGgt PmVjZHNhX3NpZ25fc2V0dXAgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9PU1NMX0VD RFNBX1NJR05fU0VUVVAsIEVDX1JfQ1VSVkVfRE9FU19OT1RfU1VQUE9SVF9FQ0RTQSk7CisrICAg ICAgICByZXR1cm4gMDsKKysgICAgfQorKworKyAgICByZXR1cm4gZWNrZXktPmdyb3VwLT5tZXRo LT5lY2RzYV9zaWduX3NldHVwKGVja2V5LCBjdHhfaW4sIGtpbnZwLCBycCk7CisrfQorKworK0VD RFNBX1NJRyAqb3NzbF9lY2RzYV9zaWduX3NpZyhjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBp bnQgZGdzdF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05V TSAqaW5fa2ludiwgY29uc3QgQklHTlVNICppbl9yLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFQ19LRVkgKmVja2V5KQorK3sKKysgICAgaWYgKGVja2V5LT5ncm91cC0+bWV0aC0+ ZWNkc2Ffc2lnbl9zaWcgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9PU1NMX0VDRFNB X1NJR05fU0lHLCBFQ19SX0NVUlZFX0RPRVNfTk9UX1NVUFBPUlRfRUNEU0EpOworKyAgICAgICAg cmV0dXJuIE5VTEw7CisrICAgIH0KKysKKysgICAgcmV0dXJuIGVja2V5LT5ncm91cC0+bWV0aC0+ ZWNkc2Ffc2lnbl9zaWcoZGdzdCwgZGdzdF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluX2tpbnYsIGluX3IsIGVja2V5KTsKKyt9CisrCisraW50 IG9zc2xfZWNkc2FfdmVyaWZ5X3NpZyhjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0LCBpbnQgZGdz dF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBFQ0RTQV9TSUcgKnNpZywg RUNfS0VZICplY2tleSkKKyt7CisrICAgIGlmIChlY2tleS0+Z3JvdXAtPm1ldGgtPmVjZHNhX3Zl cmlmeV9zaWcgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9PU1NMX0VDRFNBX1ZFUklG WV9TSUcsIEVDX1JfQ1VSVkVfRE9FU19OT1RfU1VQUE9SVF9FQ0RTQSk7CisrICAgICAgICByZXR1 cm4gMDsKKysgICAgfQorKworKyAgICByZXR1cm4gZWNrZXktPmdyb3VwLT5tZXRoLT5lY2RzYV92 ZXJpZnlfc2lnKGRnc3QsIGRnc3RfbGVuLCBzaWcsIGVja2V5KTsKKyt9CisrCisgaW50IG9zc2xf ZWNkc2Ffc2lnbihpbnQgdHlwZSwgY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRsZW4s CisgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzaWcsIHVuc2lnbmVkIGludCAq c2lnbGVuLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICpraW52LCBjb25zdCBC SUdOVU0gKnIsIEVDX0tFWSAqZWNrZXkpCitAQCAtMTQ5LDE1ICsxODQsMTUgQEAgc3RhdGljIGlu dCBlY2RzYV9zaWduX3NldHVwKEVDX0tFWSAqZWNrZQorICAgICByZXR1cm4gcmV0OworIH0KKyAK Ky1pbnQgb3NzbF9lY2RzYV9zaWduX3NldHVwKEVDX0tFWSAqZWNrZXksIEJOX0NUWCAqY3R4X2lu LCBCSUdOVU0gKipraW52cCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgIEJJR05VTSAqKnJw KQorK2ludCBlY2RzYV9zaW1wbGVfc2lnbl9zZXR1cChFQ19LRVkgKmVja2V5LCBCTl9DVFggKmN0 eF9pbiwgQklHTlVNICoqa2ludnAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJR05V TSAqKnJwKQorIHsKKyAgICAgcmV0dXJuIGVjZHNhX3NpZ25fc2V0dXAoZWNrZXksIGN0eF9pbiwg a2ludnAsIHJwLCBOVUxMLCAwKTsKKyB9CisgCistRUNEU0FfU0lHICpvc3NsX2VjZHNhX3NpZ25f c2lnKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0X2xlbiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICppbl9raW52LCBjb25zdCBCSUdOVU0g KmluX3IsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDX0tFWSAqZWNrZXkpCisr RUNEU0FfU0lHICplY2RzYV9zaW1wbGVfc2lnbl9zaWcoY29uc3QgdW5zaWduZWQgY2hhciAqZGdz dCwgaW50IGRnc3RfbGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEJJR05VTSAqaW5fa2ludiwgY29uc3QgQklHTlVNICppbl9yLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEVDX0tFWSAqZWNrZXkpCisgeworICAgICBpbnQgb2sgPSAwLCBpOwor ICAgICBCSUdOVU0gKmtpbnYgPSBOVUxMLCAqcywgKm0gPSBOVUxMOworQEAgLTIxOCwyNSArMjUz LDI1IEBAIEVDRFNBX1NJRyAqb3NzbF9lY2RzYV9zaWduX3NpZyhjb25zdCB1bnMKKyAgICAgaWYg KDggKiBkZ3N0X2xlbiA+IGkpCisgICAgICAgICBkZ3N0X2xlbiA9IChpICsgNykgLyA4OworICAg ICBpZiAoIUJOX2JpbjJibihkZ3N0LCBkZ3N0X2xlbiwgbSkpIHsKKy0gICAgICAgIEVDZXJyKEVD X0ZfT1NTTF9FQ0RTQV9TSUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKysgICAgICAgIEVDZXJyKEVD X0ZfRUNEU0FfU0lNUExFX1NJR05fU0lHLCBFUlJfUl9CTl9MSUIpOworICAgICAgICAgZ290byBl cnI7CisgICAgIH0KKyAgICAgLyogSWYgc3RpbGwgdG9vIGxvbmcsIHRydW5jYXRlIHJlbWFpbmlu ZyBiaXRzIHdpdGggYSBzaGlmdCAqLworICAgICBpZiAoKDggKiBkZ3N0X2xlbiA+IGkpICYmICFC Tl9yc2hpZnQobSwgbSwgOCAtIChpICYgMHg3KSkpIHsKKy0gICAgICAgIEVDZXJyKEVDX0ZfT1NT TF9FQ0RTQV9TSUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKysgICAgICAgIEVDZXJyKEVDX0ZfRUNE U0FfU0lNUExFX1NJR05fU0lHLCBFUlJfUl9CTl9MSUIpOworICAgICAgICAgZ290byBlcnI7Cisg ICAgIH0KKyAgICAgZG8geworICAgICAgICAgaWYgKGluX2tpbnYgPT0gTlVMTCB8fCBpbl9yID09 IE5VTEwpIHsKKyAgICAgICAgICAgICBpZiAoIWVjZHNhX3NpZ25fc2V0dXAoZWNrZXksIGN0eCwg JmtpbnYsICZyZXQtPnIsIGRnc3QsIGRnc3RfbGVuKSkgeworLSAgICAgICAgICAgICAgICBFQ2Vy cihFQ19GX09TU0xfRUNEU0FfU0lHTl9TSUcsIEVSUl9SX0VDRFNBX0xJQik7CisrICAgICAgICAg ICAgICAgIEVDZXJyKEVDX0ZfRUNEU0FfU0lNUExFX1NJR05fU0lHLCBFUlJfUl9FQ0RTQV9MSUIp OworICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgY2tpbnYgPSBraW52OworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBja2ludiA9 IGluX2tpbnY7CisgICAgICAgICAgICAgaWYgKEJOX2NvcHkocmV0LT5yLCBpbl9yKSA9PSBOVUxM KSB7CistICAgICAgICAgICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9FQ0RTQV9TSUdOX1NJRywgRVJS X1JfTUFMTE9DX0ZBSUxVUkUpOworKyAgICAgICAgICAgICAgICBFQ2VycihFQ19GX0VDRFNBX1NJ TVBMRV9TSUdOX1NJRywgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworICAgICAgICAgICAgICAgICBn b3RvIGVycjsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtMjUwLDExICsyODUsMTEg QEAgRUNEU0FfU0lHICpvc3NsX2VjZHNhX3NpZ25fc2lnKGNvbnN0IHVucworICAgICAgICAgICov CisgICAgICAgICBpZiAoIWJuX3RvX21vbnRfZml4ZWRfdG9wKHMsIHJldC0+ciwgZ3JvdXAtPm1v bnRfZGF0YSwgY3R4KQorICAgICAgICAgICAgIHx8ICFibl9tdWxfbW9udF9maXhlZF90b3Aocywg cywgcHJpdl9rZXksIGdyb3VwLT5tb250X2RhdGEsIGN0eCkpIHsKKy0gICAgICAgICAgICBFQ2Vy cihFQ19GX09TU0xfRUNEU0FfU0lHTl9TSUcsIEVSUl9SX0JOX0xJQik7CisrICAgICAgICAgICAg RUNlcnIoRUNfRl9FQ0RTQV9TSU1QTEVfU0lHTl9TSUcsIEVSUl9SX0JOX0xJQik7CisgICAgICAg ICAgICAgZ290byBlcnI7CisgICAgICAgICB9CisgICAgICAgICBpZiAoIWJuX21vZF9hZGRfZml4 ZWRfdG9wKHMsIHMsIG0sIG9yZGVyKSkgeworLSAgICAgICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9F Q0RTQV9TSUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKysgICAgICAgICAgICBFQ2VycihFQ19GX0VD RFNBX1NJTVBMRV9TSUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKyAgICAgICAgICAgICBnb3RvIGVy cjsKKyAgICAgICAgIH0KKyAgICAgICAgIC8qCitAQCAtMjYzLDcgKzI5OCw3IEBAIEVDRFNBX1NJ RyAqb3NzbF9lY2RzYV9zaWduX3NpZyhjb25zdCB1bnMKKyAgICAgICAgICAqLworICAgICAgICAg aWYgKCFibl90b19tb250X2ZpeGVkX3RvcChzLCBzLCBncm91cC0+bW9udF9kYXRhLCBjdHgpCisg ICAgICAgICAgICAgfHwgIUJOX21vZF9tdWxfbW9udGdvbWVyeShzLCBzLCBja2ludiwgZ3JvdXAt Pm1vbnRfZGF0YSwgY3R4KSkgeworLSAgICAgICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9FQ0RTQV9T SUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKysgICAgICAgICAgICBFQ2VycihFQ19GX0VDRFNBX1NJ TVBMRV9TSUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKyAgICAgICAgICAgICBnb3RvIGVycjsKKyAg ICAgICAgIH0KKyAKK0BAIC0yNzMsNyArMzA4LDcgQEAgRUNEU0FfU0lHICpvc3NsX2VjZHNhX3Np Z25fc2lnKGNvbnN0IHVucworICAgICAgICAgICAgICAqIGdlbmVyYXRlIG5ldyBraW52IGFuZCBy IHZhbHVlcworICAgICAgICAgICAgICAqLworICAgICAgICAgICAgIGlmIChpbl9raW52ICE9IE5V TEwgJiYgaW5fciAhPSBOVUxMKSB7CistICAgICAgICAgICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9F Q0RTQV9TSUdOX1NJRywgRUNfUl9ORUVEX05FV19TRVRVUF9WQUxVRVMpOworKyAgICAgICAgICAg ICAgICBFQ2VycihFQ19GX0VDRFNBX1NJTVBMRV9TSUdOX1NJRywgRUNfUl9ORUVEX05FV19TRVRV UF9WQUxVRVMpOworICAgICAgICAgICAgICAgICBnb3RvIGVycjsKKyAgICAgICAgICAgICB9Cisg ICAgICAgICB9IGVsc2UgeworQEAgLTMyNSw4ICszNjAsOCBAQCBpbnQgb3NzbF9lY2RzYV92ZXJp ZnkoaW50IHR5cGUsIGNvbnN0IHVuCisgICAgIHJldHVybiByZXQ7CisgfQorIAorLWludCBvc3Ns X2VjZHNhX3ZlcmlmeV9zaWcoY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRnc3RfbGVu LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUNEU0FfU0lHICpzaWcsIEVDX0tF WSAqZWNrZXkpCisraW50IGVjZHNhX3NpbXBsZV92ZXJpZnlfc2lnKGNvbnN0IHVuc2lnbmVkIGNo YXIgKmRnc3QsIGludCBkZ3N0X2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgRUNEU0FfU0lHICpzaWcsIEVDX0tFWSAqZWNrZXkpCisgeworICAgICBpbnQgcmV0ID0gLTEs IGk7CisgICAgIEJOX0NUWCAqY3R4OworQEAgLTM0NiwxOCArMzgxLDE4IEBAIGludCBvc3NsX2Vj ZHNhX3ZlcmlmeV9zaWcoY29uc3QgdW5zaWduZWQKKyAgICAgLyogY2hlY2sgaW5wdXQgdmFsdWVz ICovCisgICAgIGlmIChlY2tleSA9PSBOVUxMIHx8IChncm91cCA9IEVDX0tFWV9nZXQwX2dyb3Vw KGVja2V5KSkgPT0gTlVMTCB8fAorICAgICAgICAgKHB1Yl9rZXkgPSBFQ19LRVlfZ2V0MF9wdWJs aWNfa2V5KGVja2V5KSkgPT0gTlVMTCB8fCBzaWcgPT0gTlVMTCkgeworLSAgICAgICAgRUNlcnIo RUNfRl9PU1NMX0VDRFNBX1ZFUklGWV9TSUcsIEVDX1JfTUlTU0lOR19QQVJBTUVURVJTKTsKKysg ICAgICAgIEVDZXJyKEVDX0ZfRUNEU0FfU0lNUExFX1ZFUklGWV9TSUcsIEVDX1JfTUlTU0lOR19Q QVJBTUVURVJTKTsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorIAorICAgICBpZiAoIUVD X0tFWV9jYW5fc2lnbihlY2tleSkpIHsKKy0gICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9FQ0RTQV9W RVJJRllfU0lHLCBFQ19SX0NVUlZFX0RPRVNfTk9UX1NVUFBPUlRfU0lHTklORyk7CisrICAgICAg ICBFQ2VycihFQ19GX0VDRFNBX1NJTVBMRV9WRVJJRllfU0lHLCBFQ19SX0NVUlZFX0RPRVNfTk9U X1NVUFBPUlRfU0lHTklORyk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKyAKKyAgICAg Y3R4ID0gQk5fQ1RYX25ldygpOworICAgICBpZiAoY3R4ID09IE5VTEwpIHsKKy0gICAgICAgIEVD ZXJyKEVDX0ZfT1NTTF9FQ0RTQV9WRVJJRllfU0lHLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7Cisr ICAgICAgICBFQ2VycihFQ19GX0VDRFNBX1NJTVBMRV9WRVJJRllfU0lHLCBFUlJfUl9NQUxMT0Nf RkFJTFVSRSk7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgIH0KKyAgICAgQk5fQ1RYX3N0YXJ0 KGN0eCk7CitAQCAtMzY2LDI2ICs0MDEsMjYgQEAgaW50IG9zc2xfZWNkc2FfdmVyaWZ5X3NpZyhj b25zdCB1bnNpZ25lZAorICAgICBtID0gQk5fQ1RYX2dldChjdHgpOworICAgICBYID0gQk5fQ1RY X2dldChjdHgpOworICAgICBpZiAoWCA9PSBOVUxMKSB7CistICAgICAgICBFQ2VycihFQ19GX09T U0xfRUNEU0FfVkVSSUZZX1NJRywgRVJSX1JfQk5fTElCKTsKKysgICAgICAgIEVDZXJyKEVDX0Zf RUNEU0FfU0lNUExFX1ZFUklGWV9TSUcsIEVSUl9SX0JOX0xJQik7CisgICAgICAgICBnb3RvIGVy cjsKKyAgICAgfQorIAorICAgICBvcmRlciA9IEVDX0dST1VQX2dldDBfb3JkZXIoZ3JvdXApOwor ICAgICBpZiAob3JkZXIgPT0gTlVMTCkgeworLSAgICAgICAgRUNlcnIoRUNfRl9PU1NMX0VDRFNB X1ZFUklGWV9TSUcsIEVSUl9SX0VDX0xJQik7CisrICAgICAgICBFQ2VycihFQ19GX0VDRFNBX1NJ TVBMRV9WRVJJRllfU0lHLCBFUlJfUl9FQ19MSUIpOworICAgICAgICAgZ290byBlcnI7CisgICAg IH0KKyAKKyAgICAgaWYgKEJOX2lzX3plcm8oc2lnLT5yKSB8fCBCTl9pc19uZWdhdGl2ZShzaWct PnIpIHx8CisgICAgICAgICBCTl91Y21wKHNpZy0+ciwgb3JkZXIpID49IDAgfHwgQk5faXNfemVy byhzaWctPnMpIHx8CisgICAgICAgICBCTl9pc19uZWdhdGl2ZShzaWctPnMpIHx8IEJOX3VjbXAo c2lnLT5zLCBvcmRlcikgPj0gMCkgeworLSAgICAgICAgRUNlcnIoRUNfRl9PU1NMX0VDRFNBX1ZF UklGWV9TSUcsIEVDX1JfQkFEX1NJR05BVFVSRSk7CisrICAgICAgICBFQ2VycihFQ19GX0VDRFNB X1NJTVBMRV9WRVJJRllfU0lHLCBFQ19SX0JBRF9TSUdOQVRVUkUpOworICAgICAgICAgcmV0ID0g MDsgICAgICAgICAgICAgICAgLyogc2lnbmF0dXJlIGlzIGludmFsaWQgKi8KKyAgICAgICAgIGdv dG8gZXJyOworICAgICB9CisgICAgIC8qIGNhbGN1bGF0ZSB0bXAxID0gaW52KFMpIG1vZCBvcmRl ciAqLworICAgICBpZiAoIWVjX2dyb3VwX2RvX2ludmVyc2Vfb3JkKGdyb3VwLCB1Miwgc2lnLT5z LCBjdHgpKSB7CistICAgICAgICBFQ2VycihFQ19GX09TU0xfRUNEU0FfVkVSSUZZX1NJRywgRVJS X1JfQk5fTElCKTsKKysgICAgICAgIEVDZXJyKEVDX0ZfRUNEU0FfU0lNUExFX1ZFUklGWV9TSUcs IEVSUl9SX0JOX0xJQik7CisgICAgICAgICBnb3RvIGVycjsKKyAgICAgfQorICAgICAvKiBkaWdl c3QgLT4gbSAqLworQEAgLTM5Niw0MSArNDMxLDQxIEBAIGludCBvc3NsX2VjZHNhX3ZlcmlmeV9z aWcoY29uc3QgdW5zaWduZWQKKyAgICAgaWYgKDggKiBkZ3N0X2xlbiA+IGkpCisgICAgICAgICBk Z3N0X2xlbiA9IChpICsgNykgLyA4OworICAgICBpZiAoIUJOX2JpbjJibihkZ3N0LCBkZ3N0X2xl biwgbSkpIHsKKy0gICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9FQ0RTQV9WRVJJRllfU0lHLCBFUlJf Ul9CTl9MSUIpOworKyAgICAgICAgRUNlcnIoRUNfRl9FQ0RTQV9TSU1QTEVfVkVSSUZZX1NJRywg RVJSX1JfQk5fTElCKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgICAgIC8qIElmIHN0 aWxsIHRvbyBsb25nIHRydW5jYXRlIHJlbWFpbmluZyBiaXRzIHdpdGggYSBzaGlmdCAqLworICAg ICBpZiAoKDggKiBkZ3N0X2xlbiA+IGkpICYmICFCTl9yc2hpZnQobSwgbSwgOCAtIChpICYgMHg3 KSkpIHsKKy0gICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9FQ0RTQV9WRVJJRllfU0lHLCBFUlJfUl9C Tl9MSUIpOworKyAgICAgICAgRUNlcnIoRUNfRl9FQ0RTQV9TSU1QTEVfVkVSSUZZX1NJRywgRVJS X1JfQk5fTElCKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgICAgIC8qIHUxID0gbSAq IHRtcCBtb2Qgb3JkZXIgKi8KKyAgICAgaWYgKCFCTl9tb2RfbXVsKHUxLCBtLCB1Miwgb3JkZXIs IGN0eCkpIHsKKy0gICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9FQ0RTQV9WRVJJRllfU0lHLCBFUlJf Ul9CTl9MSUIpOworKyAgICAgICAgRUNlcnIoRUNfRl9FQ0RTQV9TSU1QTEVfVkVSSUZZX1NJRywg RVJSX1JfQk5fTElCKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgICAgIC8qIHUyID0g ciAqIHcgbW9kIHEgKi8KKyAgICAgaWYgKCFCTl9tb2RfbXVsKHUyLCBzaWctPnIsIHUyLCBvcmRl ciwgY3R4KSkgeworLSAgICAgICAgRUNlcnIoRUNfRl9PU1NMX0VDRFNBX1ZFUklGWV9TSUcsIEVS Ul9SX0JOX0xJQik7CisrICAgICAgICBFQ2VycihFQ19GX0VDRFNBX1NJTVBMRV9WRVJJRllfU0lH LCBFUlJfUl9CTl9MSUIpOworICAgICAgICAgZ290byBlcnI7CisgICAgIH0KKyAKKyAgICAgaWYg KChwb2ludCA9IEVDX1BPSU5UX25ldyhncm91cCkpID09IE5VTEwpIHsKKy0gICAgICAgIEVDZXJy KEVDX0ZfT1NTTF9FQ0RTQV9WRVJJRllfU0lHLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrICAg ICAgICBFQ2VycihFQ19GX0VDRFNBX1NJTVBMRV9WRVJJRllfU0lHLCBFUlJfUl9NQUxMT0NfRkFJ TFVSRSk7CisgICAgICAgICBnb3RvIGVycjsKKyAgICAgfQorICAgICBpZiAoIUVDX1BPSU5UX211 bChncm91cCwgcG9pbnQsIHUxLCBwdWJfa2V5LCB1MiwgY3R4KSkgeworLSAgICAgICAgRUNlcnIo RUNfRl9PU1NMX0VDRFNBX1ZFUklGWV9TSUcsIEVSUl9SX0VDX0xJQik7CisrICAgICAgICBFQ2Vy cihFQ19GX0VDRFNBX1NJTVBMRV9WRVJJRllfU0lHLCBFUlJfUl9FQ19MSUIpOworICAgICAgICAg Z290byBlcnI7CisgICAgIH0KKyAKKyAgICAgaWYgKCFFQ19QT0lOVF9nZXRfYWZmaW5lX2Nvb3Jk aW5hdGVzKGdyb3VwLCBwb2ludCwgWCwgTlVMTCwgY3R4KSkgeworLSAgICAgICAgRUNlcnIoRUNf Rl9PU1NMX0VDRFNBX1ZFUklGWV9TSUcsIEVSUl9SX0VDX0xJQik7CisrICAgICAgICBFQ2VycihF Q19GX0VDRFNBX1NJTVBMRV9WRVJJRllfU0lHLCBFUlJfUl9FQ19MSUIpOworICAgICAgICAgZ290 byBlcnI7CisgICAgIH0KKyAKKyAgICAgaWYgKCFCTl9ubm1vZCh1MSwgWCwgb3JkZXIsIGN0eCkp IHsKKy0gICAgICAgIEVDZXJyKEVDX0ZfT1NTTF9FQ0RTQV9WRVJJRllfU0lHLCBFUlJfUl9CTl9M SUIpOworKyAgICAgICAgRUNlcnIoRUNfRl9FQ0RTQV9TSU1QTEVfVkVSSUZZX1NJRywgRVJSX1Jf Qk5fTElCKTsKKyAgICAgICAgIGdvdG8gZXJyOworICAgICB9CisgICAgIC8qICBpZiB0aGUgc2ln bmF0dXJlIGlzIGNvcnJlY3QgdTEgaXMgZXF1YWwgdG8gc2lnLT5yICovCitkaWZmIC11cCBvcGVu c3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNfZXJyLmMuczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2Ny eXB0by9lYy9lY19lcnIuYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY19lcnIuYy5z MzkweC1lY2MJMjAyMC0wNC0yMSAxNDoyMjozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3Ns LTEuMS4xZy9jcnlwdG8vZWMvZWNfZXJyLmMJMjAyMC0wNS0xOCAxMjo0NTo0Mi42NjQyNDk5ODMg KzAyMDAKK0BAIC0zMSw2ICszMSwxMSBAQCBzdGF0aWMgY29uc3QgRVJSX1NUUklOR19EQVRBIEVD X3N0cl9mdW5jCisgICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCBFQ19GX0VDRFNBX1NJR05fU0VU VVAsIDApLCAiRUNEU0Ffc2lnbl9zZXR1cCJ9LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywg RUNfRl9FQ0RTQV9TSUdfTkVXLCAwKSwgIkVDRFNBX1NJR19uZXcifSwKKyAgICAge0VSUl9QQUNL KEVSUl9MSUJfRUMsIEVDX0ZfRUNEU0FfVkVSSUZZLCAwKSwgIkVDRFNBX3ZlcmlmeSJ9LAorKyAg ICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9FQ0RTQV9TSU1QTEVfU0lHTl9TRVRVUCwgMCks ICJlY2RzYV9zaW1wbGVfc2lnbl9zZXR1cCJ9LAorKyAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywg RUNfRl9FQ0RTQV9TSU1QTEVfU0lHTl9TSUcsIDApLCAiZWNkc2Ffc2ltcGxlX3NpZ25fc2lnIn0s CisrICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCBFQ19GX0VDRFNBX1NJTVBMRV9WRVJJRllfU0lH LCAwKSwgImVjZHNhX3NpbXBsZV92ZXJpZnlfc2lnIn0sCisrICAgIHtFUlJfUEFDSyhFUlJfTElC X0VDLCBFQ19GX0VDRFNBX1MzOTBYX05JU1RQX1NJR05fU0lHLCAwKSwgImVjZHNhX3MzOTB4X25p c3RwX3NpZ25fc2lnIn0sCisrICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCBFQ19GX0VDRFNBX1Mz OTBYX05JU1RQX1ZFUklGWV9TSUcsIDApLCAiZWNkc2FfczM5MHhfbmlzdHBfdmVyaWZ5X3NpZyJ9 LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9FQ0RfSVRFTV9WRVJJRlksIDApLCAi ZWNkX2l0ZW1fdmVyaWZ5In0sCisgICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCBFQ19GX0VDS0VZ X1BBUkFNMlRZUEUsIDApLCAiZWNrZXlfcGFyYW0ydHlwZSJ9LAorICAgICB7RVJSX1BBQ0soRVJS X0xJQl9FQywgRUNfRl9FQ0tFWV9QQVJBTV9ERUNPREUsIDApLCAiZWNrZXlfcGFyYW1fZGVjb2Rl In0sCitAQCAtMjY2LDYgKzI3MSw3IEBAIHN0YXRpYyBjb25zdCBFUlJfU1RSSU5HX0RBVEEgRUNf c3RyX2Z1bmMKKyAgICAge0VSUl9QQUNLKEVSUl9MSUJfRUMsIEVDX0ZfT0xEX0VDX1BSSVZfREVD T0RFLCAwKSwgIm9sZF9lY19wcml2X2RlY29kZSJ9LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9F QywgRUNfRl9PU1NMX0VDREhfQ09NUFVURV9LRVksIDApLAorICAgICAgIm9zc2xfZWNkaF9jb21w dXRlX2tleSJ9LAorKyAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9PU1NMX0VDRFNBX1NJ R05fU0VUVVAsIDApLCAib3NzbF9lY2RzYV9zaWduX3NldHVwIn0sCisgICAgIHtFUlJfUEFDSyhF UlJfTElCX0VDLCBFQ19GX09TU0xfRUNEU0FfU0lHTl9TSUcsIDApLCAib3NzbF9lY2RzYV9zaWdu X3NpZyJ9LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9PU1NMX0VDRFNBX1ZFUklG WV9TSUcsIDApLAorICAgICAgIm9zc2xfZWNkc2FfdmVyaWZ5X3NpZyJ9LAorQEAgLTI4NCw2ICsy OTAsMTIgQEAgc3RhdGljIGNvbnN0IEVSUl9TVFJJTkdfREFUQSBFQ19zdHJfZnVuYworICAgICB7 RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9QS0VZX0VDX0tFWUdFTiwgMCksICJwa2V5X2VjX2tl eWdlbiJ9LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9QS0VZX0VDX1BBUkFNR0VO LCAwKSwgInBrZXlfZWNfcGFyYW1nZW4ifSwKKyAgICAge0VSUl9QQUNLKEVSUl9MSUJfRUMsIEVD X0ZfUEtFWV9FQ19TSUdOLCAwKSwgInBrZXlfZWNfc2lnbiJ9LAorKyAgICB7RVJSX1BBQ0soRVJS X0xJQl9FQywgRUNfRl9TMzkwWF9QS0VZX0VDRF9ESUdFU1RTSUdOMjU1MTksIDApLCAiczM5MHhf cGtleV9lY2RfZGlnZXN0c2lnbjI1NTE5In0sCisrICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCBF Q19GX1MzOTBYX1BLRVlfRUNEX0RJR0VTVFNJR040NDgsIDApLCAiczM5MHhfcGtleV9lY2RfZGln ZXN0c2lnbjQ0OCJ9LAorKyAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9TMzkwWF9QS0VZ X0VDRF9LRVlHRU4yNTUxOSwgMCksICJzMzkweF9wa2V5X2VjZF9rZXlnZW4yNTUxOSJ9LAorKyAg ICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgRUNfRl9TMzkwWF9QS0VZX0VDRF9LRVlHRU40NDgsIDAp LCAiczM5MHhfcGtleV9lY2Rfa2V5Z2VuNDQ4In0sCisrICAgIHtFUlJfUEFDSyhFUlJfTElCX0VD LCBFQ19GX1MzOTBYX1BLRVlfRUNYX0tFWUdFTjI1NTE5LCAwKSwgInMzOTB4X3BrZXlfZWN4X2tl eWdlbjI1NTE5In0sCisrICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCBFQ19GX1MzOTBYX1BLRVlf RUNYX0tFWUdFTjQ0OCwgMCksICJzMzkweF9wa2V5X2VjeF9rZXlnZW40NDgifSwKKyAgICAge0VS Ul9QQUNLKEVSUl9MSUJfRUMsIEVDX0ZfVkFMSURBVEVfRUNYX0RFUklWRSwgMCksICJ2YWxpZGF0 ZV9lY3hfZGVyaXZlIn0sCisgICAgIHswLCBOVUxMfQorIH07CitAQCAtMjk4LDYgKzMxMCw4IEBA IHN0YXRpYyBjb25zdCBFUlJfU1RSSU5HX0RBVEEgRUNfc3RyX3JlYXMKKyAgICAgImNvb3JkaW5h dGVzIG91dCBvZiByYW5nZSJ9LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgMCwgRUNfUl9D VVJWRV9ET0VTX05PVF9TVVBQT1JUX0VDREgpLAorICAgICAiY3VydmUgZG9lcyBub3Qgc3VwcG9y dCBlY2RoIn0sCisrICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCAwLCBFQ19SX0NVUlZFX0RPRVNf Tk9UX1NVUFBPUlRfRUNEU0EpLAorKyAgICAiY3VydmUgZG9lcyBub3Qgc3VwcG9ydCBlY2RzYSJ9 LAorICAgICB7RVJSX1BBQ0soRVJSX0xJQl9FQywgMCwgRUNfUl9DVVJWRV9ET0VTX05PVF9TVVBQ T1JUX1NJR05JTkcpLAorICAgICAiY3VydmUgZG9lcyBub3Qgc3VwcG9ydCBzaWduaW5nIn0sCisg ICAgIHtFUlJfUEFDSyhFUlJfTElCX0VDLCAwLCBFQ19SX0QySV9FQ1BLUEFSQU1FVEVSU19GQUlM VVJFKSwKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY19sb2NhbC5oLnMzOTB4 LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNfbG9jYWwuaAorLS0tIG9wZW5zc2wtMS4x LjFnL2NyeXB0by9lYy9lY19sb2NhbC5oLnMzOTB4LWVjYwkyMDIwLTA1LTE4IDEyOjQ1OjQwLjU1 NDIzMTY0NiArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY19sb2NhbC5oCTIw MjAtMDUtMTggMTI6NDU6NDQuNTY0MjY2NDk2ICswMjAwCitAQCAtMTc5LDYgKzE3OSwxNCBAQCBz dHJ1Y3QgZWNfbWV0aG9kX3N0IHsKKyAgICAgLyogY3VzdG9tIEVDREggb3BlcmF0aW9uICovCisg ICAgIGludCAoKmVjZGhfY29tcHV0ZV9rZXkpKHVuc2lnbmVkIGNoYXIgKipwb3V0LCBzaXplX3Qg KnBvdXRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVDX1BPSU5UICpw dWJfa2V5LCBjb25zdCBFQ19LRVkgKmVjZGgpOworKyAgICAvKiBjdXN0b20gRUNEU0EgKi8KKysg ICAgaW50ICgqZWNkc2Ffc2lnbl9zZXR1cCkoRUNfS0VZICplY2tleSwgQk5fQ1RYICpjdHgsIEJJ R05VTSAqKmtpbnZwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSUdOVU0gKipycCk7 CisrICAgIEVDRFNBX1NJRyAqKCplY2RzYV9zaWduX3NpZykoY29uc3QgdW5zaWduZWQgY2hhciAq ZGdzdCwgaW50IGRnc3RsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgQklHTlVNICpraW52LCBjb25zdCBCSUdOVU0gKnIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRUNfS0VZICplY2tleSk7CisrICAgIGludCAoKmVjZHNhX3ZlcmlmeV9zaWcp KGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBkZ3N0bGVuLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBFQ0RTQV9TSUcgKnNpZywgRUNfS0VZICplY2tleSk7CisgICAg IC8qIEludmVyc2UgbW9kdWxvIG9yZGVyICovCisgICAgIGludCAoKmZpZWxkX2ludmVyc2VfbW9k X29yZCkoY29uc3QgRUNfR1JPVVAgKiwgQklHTlVNICpyLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqeCwgQk5fQ1RYICopOworQEAgLTU4Nyw2ICs1OTUs MTEgQEAgaW50IGVjX2dyb3VwX3NpbXBsZV9vcmRlcl9iaXRzKGNvbnN0IEVDXworICAqLworIGNv bnN0IEVDX01FVEhPRCAqRUNfR0ZwX25pc3R6MjU2X21ldGhvZCh2b2lkKTsKKyAjZW5kaWYKKysj aWZkZWYgUzM5MFhfRUNfQVNNCisrY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfczM5MHhfbmlzdHAy NTZfbWV0aG9kKHZvaWQpOworK2NvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX3MzOTB4X25pc3RwMzg0 X21ldGhvZCh2b2lkKTsKKytjb25zdCBFQ19NRVRIT0QgKkVDX0dGcF9zMzkweF9uaXN0cDUyMV9t ZXRob2Qodm9pZCk7CisrI2VuZGlmCisgCisgc2l6ZV90IGVjX2tleV9zaW1wbGVfcHJpdjJvY3Qo Y29uc3QgRUNfS0VZICplY2tleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjaGFyICpidWYsIHNpemVfdCBsZW4pOworQEAgLTY1MSw2ICs2NjQsMTMgQEAgaW50IG9z c2xfZWNkc2FfdmVyaWZ5KGludCB0eXBlLCBjb25zdCB1bgorICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWdidWYsIGludCBzaWdfbGVuLCBFQ19LRVkgKmVja2V5 KTsKKyBpbnQgb3NzbF9lY2RzYV92ZXJpZnlfc2lnKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3Qs IGludCBkZ3N0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEVDRFNBX1NJ RyAqc2lnLCBFQ19LRVkgKmVja2V5KTsKKytpbnQgZWNkc2Ffc2ltcGxlX3NpZ25fc2V0dXAoRUNf S0VZICplY2tleSwgQk5fQ1RYICpjdHhfaW4sIEJJR05VTSAqKmtpbnZwLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBCSUdOVU0gKipycCk7CisrRUNEU0FfU0lHICplY2RzYV9zaW1wbGVf c2lnbl9zaWcoY29uc3QgdW5zaWduZWQgY2hhciAqZGdzdCwgaW50IGRnc3RfbGVuLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJJR05VTSAqaW5fa2ludiwgY29uc3Qg QklHTlVNICppbl9yLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVDX0tFWSAq ZWNrZXkpOworK2ludCBlY2RzYV9zaW1wbGVfdmVyaWZ5X3NpZyhjb25zdCB1bnNpZ25lZCBjaGFy ICpkZ3N0LCBpbnQgZGdzdF9sZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEVDRFNBX1NJRyAqc2lnLCBFQ19LRVkgKmVja2V5KTsKKyAKKyBpbnQgRUQyNTUxOV9zaWduKHVp bnQ4X3QgKm91dF9zaWcsIGNvbnN0IHVpbnQ4X3QgKm1lc3NhZ2UsIHNpemVfdCBtZXNzYWdlX2xl biwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgcHVibGljX2tleVszMl0sIGNvbnN0 IHVpbnQ4X3QgcHJpdmF0ZV9rZXlbMzJdKTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFnL2NyeXB0 by9lYy9lY19wbWV0aC5jLnMzOTB4LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNfcG1l dGguYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY19wbWV0aC5jLnMzOTB4LWVjYwky MDIwLTA1LTE4IDEyOjQ1OjQwLjc4NDIzMzY0NCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFnL2Ny eXB0by9lYy9lY19wbWV0aC5jCTIwMjAtMDUtMTggMTI6NDU6NDQuNTY1MjY2NTA1ICswMjAwCitA QCAtNDc0LDMgKzQ3NCw4IEBAIGNvbnN0IEVWUF9QS0VZX01FVEhPRCBlY19wa2V5X21ldGggPSB7 CisgICAgIHBrZXlfZWNfY3RybCwKKyAgICAgcGtleV9lY19jdHJsX3N0cgorIH07CisrCisrY29u c3QgRVZQX1BLRVlfTUVUSE9EICplY19wa2V5X21ldGhvZCh2b2lkKQorK3sKKysgICAgcmV0dXJu ICZlY19wa2V5X21ldGg7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2Vj cF9tb250LmMuczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY3BfbW9udC5jCist LS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjcF9tb250LmMuczM5MHgtZWNjCTIwMjAtMDQt MjEgMTQ6MjI6MzkuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2Vj L2VjcF9tb250LmMJMjAyMC0wNS0xOCAxMjo0NTo0NC41NjcyNjY1MjMgKzAyMDAKK0BAIC02Myw2 ICs2Myw5IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX21vbnRfbWV0aG9kKHZvaWQKKyAgICAg ICAgIDAsIC8qIGtleWNvcHkgKi8KKyAgICAgICAgIDAsIC8qIGtleWZpbmlzaCAqLworICAgICAg ICAgZWNkaF9zaW1wbGVfY29tcHV0ZV9rZXksCisrICAgICAgICBlY2RzYV9zaW1wbGVfc2lnbl9z ZXR1cCwKKysgICAgICAgIGVjZHNhX3NpbXBsZV9zaWduX3NpZywKKysgICAgICAgIGVjZHNhX3Np bXBsZV92ZXJpZnlfc2lnLAorICAgICAgICAgMCwgLyogZmllbGRfaW52ZXJzZV9tb2Rfb3JkICov CisgICAgICAgICBlY19HRnBfc2ltcGxlX2JsaW5kX2Nvb3JkaW5hdGVzLAorICAgICAgICAgZWNf R0ZwX3NpbXBsZV9sYWRkZXJfcHJlLAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2Vj L2VjcF9uaXN0LmMuczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY3BfbmlzdC5j CistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjcF9uaXN0LmMuczM5MHgtZWNjCTIwMjAt MDQtMjEgMTQ6MjI6MzkuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWcvY3J5cHRv L2VjL2VjcF9uaXN0LmMJMjAyMC0wNS0xOCAxMjo0NTo0NC41NjcyNjY1MjMgKzAyMDAKK0BAIC02 NSw2ICs2NSw5IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX25pc3RfbWV0aG9kKHZvaWQKKyAg ICAgICAgIDAsIC8qIGtleWNvcHkgKi8KKyAgICAgICAgIDAsIC8qIGtleWZpbmlzaCAqLworICAg ICAgICAgZWNkaF9zaW1wbGVfY29tcHV0ZV9rZXksCisrICAgICAgICBlY2RzYV9zaW1wbGVfc2ln bl9zZXR1cCwKKysgICAgICAgIGVjZHNhX3NpbXBsZV9zaWduX3NpZywKKysgICAgICAgIGVjZHNh X3NpbXBsZV92ZXJpZnlfc2lnLAorICAgICAgICAgMCwgLyogZmllbGRfaW52ZXJzZV9tb2Rfb3Jk ICovCisgICAgICAgICBlY19HRnBfc2ltcGxlX2JsaW5kX2Nvb3JkaW5hdGVzLAorICAgICAgICAg ZWNfR0ZwX3NpbXBsZV9sYWRkZXJfcHJlLAorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRv L2VjL2VjcF9uaXN0cDIyNC5jLnMzOTB4LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNw X25pc3RwMjI0LmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNwX25pc3RwMjI0LmMu czM5MHgtZWNjCTIwMjAtMDQtMjEgMTQ6MjI6MzkuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNz bC0xLjEuMWcvY3J5cHRvL2VjL2VjcF9uaXN0cDIyNC5jCTIwMjAtMDUtMTggMTI6NDU6NDQuNTY4 MjY2NTMxICswMjAwCitAQCAtMjkyLDYgKzI5Miw5IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNfR0Zw X25pc3RwMjI0X21ldGhvZCgKKyAgICAgICAgIDAsIC8qIGtleWNvcHkgKi8KKyAgICAgICAgIDAs IC8qIGtleWZpbmlzaCAqLworICAgICAgICAgZWNkaF9zaW1wbGVfY29tcHV0ZV9rZXksCisrICAg ICAgICBlY2RzYV9zaW1wbGVfc2lnbl9zZXR1cCwKKysgICAgICAgIGVjZHNhX3NpbXBsZV9zaWdu X3NpZywKKysgICAgICAgIGVjZHNhX3NpbXBsZV92ZXJpZnlfc2lnLAorICAgICAgICAgMCwgLyog ZmllbGRfaW52ZXJzZV9tb2Rfb3JkICovCisgICAgICAgICAwLCAvKiBibGluZF9jb29yZGluYXRl cyAqLworICAgICAgICAgMCwgLyogbGFkZGVyX3ByZSAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjEu MWcvY3J5cHRvL2VjL2VjcF9uaXN0cDI1Ni5jLnMzOTB4LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlw dG8vZWMvZWNwX25pc3RwMjU2LmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNwX25p c3RwMjU2LmMuczM5MHgtZWNjCTIwMjAtMDQtMjEgMTQ6MjI6MzkuMDAwMDAwMDAwICswMjAwCisr Kysgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjcF9uaXN0cDI1Ni5jCTIwMjAtMDUtMTggMTI6 NDU6NDQuNTY4MjY2NTMxICswMjAwCitAQCAtMTgyOSw2ICsxODI5LDkgQEAgY29uc3QgRUNfTUVU SE9EICpFQ19HRnBfbmlzdHAyNTZfbWV0aG9kKAorICAgICAgICAgMCwgLyoga2V5Y29weSAqLwor ICAgICAgICAgMCwgLyoga2V5ZmluaXNoICovCisgICAgICAgICBlY2RoX3NpbXBsZV9jb21wdXRl X2tleSwKKysgICAgICAgIGVjZHNhX3NpbXBsZV9zaWduX3NldHVwLAorKyAgICAgICAgZWNkc2Ff c2ltcGxlX3NpZ25fc2lnLAorKyAgICAgICAgZWNkc2Ffc2ltcGxlX3ZlcmlmeV9zaWcsCisgICAg ICAgICAwLCAvKiBmaWVsZF9pbnZlcnNlX21vZF9vcmQgKi8KKyAgICAgICAgIDAsIC8qIGJsaW5k X2Nvb3JkaW5hdGVzICovCisgICAgICAgICAwLCAvKiBsYWRkZXJfcHJlICovCitkaWZmIC11cCBv cGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNwX25pc3RwNTIxLmMuczM5MHgtZWNjIG9wZW5zc2wt MS4xLjFnL2NyeXB0by9lYy9lY3BfbmlzdHA1MjEuYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0 by9lYy9lY3BfbmlzdHA1MjEuYy5zMzkweC1lY2MJMjAyMC0wNC0yMSAxNDoyMjozOS4wMDAwMDAw MDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNwX25pc3RwNTIxLmMJMjAy MC0wNS0xOCAxMjo0NTo0NC41NjkyNjY1NDAgKzAyMDAKK0BAIC0xNjY5LDYgKzE2NjksOSBAQCBj b25zdCBFQ19NRVRIT0QgKkVDX0dGcF9uaXN0cDUyMV9tZXRob2QoCisgICAgICAgICAwLCAvKiBr ZXljb3B5ICovCisgICAgICAgICAwLCAvKiBrZXlmaW5pc2ggKi8KKyAgICAgICAgIGVjZGhfc2lt cGxlX2NvbXB1dGVfa2V5LAorKyAgICAgICAgZWNkc2Ffc2ltcGxlX3NpZ25fc2V0dXAsCisrICAg ICAgICBlY2RzYV9zaW1wbGVfc2lnbl9zaWcsCisrICAgICAgICBlY2RzYV9zaW1wbGVfdmVyaWZ5 X3NpZywKKyAgICAgICAgIDAsIC8qIGZpZWxkX2ludmVyc2VfbW9kX29yZCAqLworICAgICAgICAg MCwgLyogYmxpbmRfY29vcmRpbmF0ZXMgKi8KKyAgICAgICAgIDAsIC8qIGxhZGRlcl9wcmUgKi8K K2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY3BfbmlzdHoyNTYuYy5zMzkweC1l Y2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjcF9uaXN0ejI1Ni5jCistLS0gb3BlbnNzbC0x LjEuMWcvY3J5cHRvL2VjL2VjcF9uaXN0ejI1Ni5jLnMzOTB4LWVjYwkyMDIwLTA0LTIxIDE0OjIy OjM5LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9lYy9lY3Bfbmlz dHoyNTYuYwkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU3MDI2NjU0OSArMDIwMAorQEAgLTE3MjAsNiAr MTcyMCw5IEBAIGNvbnN0IEVDX01FVEhPRCAqRUNfR0ZwX25pc3R6MjU2X21ldGhvZCgKKyAgICAg ICAgIDAsIC8qIGtleWNvcHkgKi8KKyAgICAgICAgIDAsIC8qIGtleWZpbmlzaCAqLworICAgICAg ICAgZWNkaF9zaW1wbGVfY29tcHV0ZV9rZXksCisrICAgICAgICBlY2RzYV9zaW1wbGVfc2lnbl9z ZXR1cCwKKysgICAgICAgIGVjZHNhX3NpbXBsZV9zaWduX3NpZywKKysgICAgICAgIGVjZHNhX3Np bXBsZV92ZXJpZnlfc2lnLAorICAgICAgICAgZWNwX25pc3R6MjU2X2ludl9tb2Rfb3JkLCAgICAg ICAgICAgICAgICAgICAvKiBjYW4gYmUgI2RlZmluZS1kIE5VTEwgKi8KKyAgICAgICAgIDAsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYmxpbmRfY29vcmRpbmF0 ZXMgKi8KKyAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogbGFkZGVyX3ByZSAqLworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2Vj cF9zMzkweF9uaXN0cC5jLnMzOTB4LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNwX3Mz OTB4X25pc3RwLmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNwX3MzOTB4X25pc3Rw LmMuczM5MHgtZWNjCTIwMjAtMDUtMTggMTI6NDU6NDQuNTcxMjY2NTU3ICswMjAwCisrKysgb3Bl bnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjcF9zMzkweF9uaXN0cC5jCTIwMjAtMDUtMTggMTI6NDU6 NDQuNTcxMjY2NTU3ICswMjAwCitAQCAtMCwwICsxLDM5NCBAQAorKy8qCisrICogQ29weXJpZ2h0 IDIwMTkgVGhlIE9wZW5TU0wgUHJvamVjdCBBdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor KyAqCisrICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIuMCAodGhlICJMaWNl bnNlIikuICBZb3UgbWF5IG5vdCB1c2UKKysgKiB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFu Y2Ugd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBjYW4gb2J0YWluIGEgY29weQorKyAqIGluIHRoZSBm aWxlIExJQ0VOU0UgaW4gdGhlIHNvdXJjZSBkaXN0cmlidXRpb24gb3IgYXQKKysgKiBodHRwczov L3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5zZS5odG1sCisrICovCisrCisrI2luY2x1ZGUg PHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8b3BlbnNzbC9lcnIu aD4KKysjaW5jbHVkZSA8b3BlbnNzbC9yYW5kLmg+CisrI2luY2x1ZGUgImVjX2xvY2FsLmgiCisr I2luY2x1ZGUgInMzOTB4X2FyY2guaCIKKysKKysvKiBTaXplIG9mIHBhcmFtZXRlciBibG9ja3Mg Ki8KKysjZGVmaW5lIFMzOTBYX1NJWkVfUEFSQU0gICAgICAgICAgICAgICAgNDA5NgorKworKy8q IFNpemUgb2YgZmllbGRzIGluIHBhcmFtZXRlciBibG9ja3MgKi8KKysjZGVmaW5lIFMzOTBYX1NJ WkVfUDI1NiAgICAgICAgICAgICAgICAgMzIKKysjZGVmaW5lIFMzOTBYX1NJWkVfUDM4NCAgICAg ICAgICAgICAgICAgNDgKKysjZGVmaW5lIFMzOTBYX1NJWkVfUDUyMSAgICAgICAgICAgICAgICAg ODAKKysKKysvKiBPZmZzZXRzIG9mIGZpZWxkcyBpbiBQQ0MgcGFyYW1ldGVyIGJsb2NrcyAqLwor KyNkZWZpbmUgUzM5MFhfT0ZGX1JFU19YKG4pICAgICAgICAgICAgICAoMCAqIG4pCisrI2RlZmlu ZSBTMzkwWF9PRkZfUkVTX1kobikgICAgICAgICAgICAgICgxICogbikKKysjZGVmaW5lIFMzOTBY X09GRl9TUkNfWChuKSAgICAgICAgICAgICAgKDIgKiBuKQorKyNkZWZpbmUgUzM5MFhfT0ZGX1NS Q19ZKG4pICAgICAgICAgICAgICAoMyAqIG4pCisrI2RlZmluZSBTMzkwWF9PRkZfU0NBTEFSKG4p ICAgICAgICAgICAgICg0ICogbikKKysKKysvKiBPZmZzZXRzIG9mIGZpZWxkcyBpbiBLRFNBIHBh cmFtZXRlciBibG9ja3MgKi8KKysjZGVmaW5lIFMzOTBYX09GRl9SKG4pICAgICAgICAgICAgICAg ICAgKDAgKiBuKQorKyNkZWZpbmUgUzM5MFhfT0ZGX1MobikgICAgICAgICAgICAgICAgICAoMSAq IG4pCisrI2RlZmluZSBTMzkwWF9PRkZfSChuKSAgICAgICAgICAgICAgICAgICgyICogbikKKysj ZGVmaW5lIFMzOTBYX09GRl9LKG4pICAgICAgICAgICAgICAgICAgKDMgKiBuKQorKyNkZWZpbmUg UzM5MFhfT0ZGX1gobikgICAgICAgICAgICAgICAgICAoMyAqIG4pCisrI2RlZmluZSBTMzkwWF9P RkZfUk4obikgICAgICAgICAgICAgICAgICg0ICogbikKKysjZGVmaW5lIFMzOTBYX09GRl9ZKG4p ICAgICAgICAgICAgICAgICAgKDQgKiBuKQorKworK3N0YXRpYyBpbnQgZWNfR0ZwX3MzOTB4X25p c3RwX211bChjb25zdCBFQ19HUk9VUCAqZ3JvdXAsIEVDX1BPSU5UICpyLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKnNjYWxhciwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG51bSwgY29uc3QgRUNfUE9JTlQgKnBvaW50 c1tdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0gKnNj YWxhcnNbXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQk5fQ1RYICpjdHgs IHVuc2lnbmVkIGludCBmYywgaW50IGxlbikKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIgcGFyYW1b UzM5MFhfU0laRV9QQVJBTV07CisrICAgIEJJR05VTSAqeCwgKnk7CisrICAgIGNvbnN0IEVDX1BP SU5UICpwb2ludF9wdHIgPSBOVUxMOworKyAgICBjb25zdCBCSUdOVU0gKnNjYWxhcl9wdHIgPSBO VUxMOworKyAgICBCTl9DVFggKm5ld19jdHggPSBOVUxMOworKyAgICBpbnQgcmMgPSAtMTsKKysK KysgICAgaWYgKGN0eCA9PSBOVUxMKSB7CisrICAgICAgICBjdHggPSBuZXdfY3R4ID0gQk5fQ1RY X25ldygpOworKyAgICAgICAgaWYgKGN0eCA9PSBOVUxMKQorKyAgICAgICAgICAgIHJldHVybiAw OworKyAgICB9CisrCisrICAgIEJOX0NUWF9zdGFydChjdHgpOworKworKyAgICB4ID0gQk5fQ1RY X2dldChjdHgpOworKyAgICB5ID0gQk5fQ1RYX2dldChjdHgpOworKyAgICBpZiAoeCA9PSBOVUxM IHx8IHkgPT0gTlVMTCkgeworKyAgICAgICAgcmMgPSAwOworKyAgICAgICAgZ290byByZXQ7Cisr ICAgIH0KKysKKysgICAgLyoKKysgICAgICogVXNlIFBDQyBmb3IgRUMga2V5Z2VuIGFuZCBFQ0RI IGtleSBkZXJpdmF0aW9uOgorKyAgICAgKiBzY2FsYXIgKiBnZW5lcmF0b3IgYW5kIHNjYWxhciAq IHBlZXIgcHVibGljIGtleSwKKysgICAgICogc2NhbGFyIGluIFswLG9yZGVyKS4KKysgICAgICov CisrICAgIGlmICgoc2NhbGFyICE9IE5VTEwgJiYgbnVtID09IDAgJiYgQk5faXNfbmVnYXRpdmUo c2NhbGFyKSA9PSAwKQorKyAgICAgICAgfHwgKHNjYWxhciA9PSBOVUxMICYmIG51bSA9PSAxICYm IEJOX2lzX25lZ2F0aXZlKHNjYWxhcnNbMF0pID09IDApKSB7CisrCisrICAgICAgICBpZiAobnVt ID09IDApIHsKKysgICAgICAgICAgICBwb2ludF9wdHIgPSBFQ19HUk9VUF9nZXQwX2dlbmVyYXRv cihncm91cCk7CisrICAgICAgICAgICAgc2NhbGFyX3B0ciA9IHNjYWxhcjsKKysgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgcG9pbnRfcHRyID0gcG9pbnRzWzBdOworKyAgICAgICAgICAg IHNjYWxhcl9wdHIgPSBzY2FsYXJzWzBdOworKyAgICAgICAgfQorKworKyAgICAgICAgaWYgKEVD X1BPSU5UX2lzX2F0X2luZmluaXR5KGdyb3VwLCBwb2ludF9wdHIpID09IDEKKysgICAgICAgICAg ICB8fCBCTl9pc196ZXJvKHNjYWxhcl9wdHIpKSB7CisrICAgICAgICAgICAgcmMgPSBFQ19QT0lO VF9zZXRfdG9faW5maW5pdHkoZ3JvdXAsIHIpOworKyAgICAgICAgICAgIGdvdG8gcmV0OworKyAg ICAgICAgfQorKworKyAgICAgICAgbWVtc2V0KCZwYXJhbSwgMCwgc2l6ZW9mKHBhcmFtKSk7Cisr CisrICAgICAgICBpZiAoZ3JvdXAtPm1ldGgtPnBvaW50X2dldF9hZmZpbmVfY29vcmRpbmF0ZXMo Z3JvdXAsIHBvaW50X3B0ciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB4LCB5LCBjdHgpICE9IDEKKysgICAgICAgICAgICB8fCBCTl9ibjJi aW5wYWQoeCwgcGFyYW0gKyBTMzkwWF9PRkZfU1JDX1gobGVuKSwgbGVuKSA9PSAtMQorKyAgICAg ICAgICAgIHx8IEJOX2JuMmJpbnBhZCh5LCBwYXJhbSArIFMzOTBYX09GRl9TUkNfWShsZW4pLCBs ZW4pID09IC0xCisrICAgICAgICAgICAgfHwgQk5fYm4yYmlucGFkKHNjYWxhcl9wdHIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtICsgUzM5MFhfT0ZGX1NDQUxBUihsZW4pLCBs ZW4pID09IC0xCisrICAgICAgICAgICAgfHwgczM5MHhfcGNjKGZjLCBwYXJhbSkgIT0gMAorKyAg ICAgICAgICAgIHx8IEJOX2JpbjJibihwYXJhbSArIFMzOTBYX09GRl9SRVNfWChsZW4pLCBsZW4s IHgpID09IE5VTEwKKysgICAgICAgICAgICB8fCBCTl9iaW4yYm4ocGFyYW0gKyBTMzkwWF9PRkZf UkVTX1kobGVuKSwgbGVuLCB5KSA9PSBOVUxMCisrICAgICAgICAgICAgfHwgZ3JvdXAtPm1ldGgt PnBvaW50X3NldF9hZmZpbmVfY29vcmRpbmF0ZXMoZ3JvdXAsIHIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwgeSwgY3R4KSAhPSAx KQorKyAgICAgICAgICAgIGdvdG8gcmV0OworKworKyAgICAgICAgcmMgPSAxOworKyAgICB9Cisr CisrcmV0OgorKyAgICAvKiBPdGhlcndpc2UgdXNlIGRlZmF1bHQuICovCisrICAgIGlmIChyYyA9 PSAtMSkKKysgICAgICAgIHJjID0gZWNfd05BRl9tdWwoZ3JvdXAsIHIsIHNjYWxhciwgbnVtLCBw b2ludHMsIHNjYWxhcnMsIGN0eCk7CisrICAgIE9QRU5TU0xfY2xlYW5zZShwYXJhbSArIFMzOTBY X09GRl9TQ0FMQVIobGVuKSwgbGVuKTsKKysgICAgQk5fQ1RYX2VuZChjdHgpOworKyAgICBCTl9D VFhfZnJlZShuZXdfY3R4KTsKKysgICAgcmV0dXJuIHJjOworK30KKysKKytzdGF0aWMgRUNEU0Ff U0lHICplY2RzYV9zMzkweF9uaXN0cF9zaWduX3NpZyhjb25zdCB1bnNpZ25lZCBjaGFyICpkZ3N0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZ3N0 bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IEJJR05VTSAqa2ludiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBCSUdOVU0gKnIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRUNfS0VZICplY2tleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZmMsIGludCBsZW4pCisreworKyAgICB1bnNp Z25lZCBjaGFyIHBhcmFtW1MzOTBYX1NJWkVfUEFSQU1dOworKyAgICBpbnQgb2sgPSAwOworKyAg ICBCSUdOVU0gKms7CisrICAgIEVDRFNBX1NJRyAqc2lnOworKyAgICBjb25zdCBFQ19HUk9VUCAq Z3JvdXA7CisrICAgIGNvbnN0IEJJR05VTSAqcHJpdmtleTsKKysgICAgaW50IG9mZjsKKysKKysg ICAgZ3JvdXAgPSBFQ19LRVlfZ2V0MF9ncm91cChlY2tleSk7CisrICAgIHByaXZrZXkgPSBFQ19L RVlfZ2V0MF9wcml2YXRlX2tleShlY2tleSk7CisrICAgIGlmIChncm91cCA9PSBOVUxMIHx8IHBy aXZrZXkgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9FQ0RTQV9TMzkwWF9OSVNUUF9T SUdOX1NJRywgRUNfUl9NSVNTSU5HX1BBUkFNRVRFUlMpOworKyAgICAgICAgcmV0dXJuIE5VTEw7 CisrICAgIH0KKysKKysgICAgaWYgKCFFQ19LRVlfY2FuX3NpZ24oZWNrZXkpKSB7CisrICAgICAg ICBFQ2VycihFQ19GX0VDRFNBX1MzOTBYX05JU1RQX1NJR05fU0lHLAorKyAgICAgICAgICAgICAg RUNfUl9DVVJWRV9ET0VTX05PVF9TVVBQT1JUX1NJR05JTkcpOworKyAgICAgICAgcmV0dXJuIE5V TEw7CisrICAgIH0KKysKKysgICAgayA9IEJOX3NlY3VyZV9uZXcoKTsKKysgICAgc2lnID0gRUNE U0FfU0lHX25ldygpOworKyAgICBpZiAoayA9PSBOVUxMIHx8IHNpZyA9PSBOVUxMKSB7CisrICAg ICAgICBFQ2VycihFQ19GX0VDRFNBX1MzOTBYX05JU1RQX1NJR05fU0lHLCBFUlJfUl9NQUxMT0Nf RkFJTFVSRSk7CisrICAgICAgICBnb3RvIHJldDsKKysgICAgfQorKworKyAgICBzaWctPnIgPSBC Tl9uZXcoKTsKKysgICAgc2lnLT5zID0gQk5fbmV3KCk7CisrICAgIGlmIChzaWctPnIgPT0gTlVM TCB8fCBzaWctPnMgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9FQ0RTQV9TMzkwWF9O SVNUUF9TSUdOX1NJRywgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKyAgICAgICAgZ290byByZXQ7 CisrICAgIH0KKysKKysgICAgbWVtc2V0KHBhcmFtLCAwLCBzaXplb2YocGFyYW0pKTsKKysgICAg b2ZmID0gbGVuIC0gKGRnc3RsZW4gPiBsZW4gPyBsZW4gOiBkZ3N0bGVuKTsKKysgICAgbWVtY3B5 KHBhcmFtICsgUzM5MFhfT0ZGX0gobGVuKSArIG9mZiwgZGdzdCwgbGVuIC0gb2ZmKTsKKysKKysg ICAgaWYgKEJOX2JuMmJpbnBhZChwcml2a2V5LCBwYXJhbSArIFMzOTBYX09GRl9LKGxlbiksIGxl bikgPT0gLTEpIHsKKysgICAgICAgIEVDZXJyKEVDX0ZfRUNEU0FfUzM5MFhfTklTVFBfU0lHTl9T SUcsIEVSUl9SX0JOX0xJQik7CisrICAgICAgICBnb3RvIHJldDsKKysgICAgfQorKworKyAgICBp ZiAociA9PSBOVUxMIHx8IGtpbnYgPT0gTlVMTCkgeworKyAgICAgICAgLyoKKysgICAgICAgICAq IEdlbmVyYXRlIHJhbmRvbSBrIGFuZCBjb3B5IHRvIHBhcmFtIHBhcmFtIGJsb2NrLiBSQU5EX3By aXZfYnl0ZXMKKysgICAgICAgICAqIGlzIHVzZWQgaW5zdGVhZCBvZiBCTl9wcml2X3JhbmRfcmFu Z2Ugb3IgQk5fZ2VuZXJhdGVfZHNhX25vbmNlCisrICAgICAgICAgKiBiZWNhdXNlIGtkc2EgaW5z dHJ1Y3Rpb24gY29uc3RydWN0cyBhbiBpbi1yYW5nZSwgaW52ZXJ0aWJsZSBub25jZQorKyAgICAg ICAgICogaW50ZXJuYWxseSBpbXBsZW1lbnRpbmcgY291bnRlci1tZWFzdXJlcyBmb3IgUk5HIHdl YWtuZXNzLgorKyAgICAgICAgICovCisrICAgICAgICAgaWYgKFJBTkRfcHJpdl9ieXRlcyhwYXJh bSArIFMzOTBYX09GRl9STihsZW4pLCBsZW4pICE9IDEpIHsKKysgICAgICAgICAgICAgRUNlcnIo RUNfRl9FQ0RTQV9TMzkwWF9OSVNUUF9TSUdOX1NJRywKKysgICAgICAgICAgICAgICAgICAgRUNf Ul9SQU5ET01fTlVNQkVSX0dFTkVSQVRJT05fRkFJTEVEKTsKKysgICAgICAgICAgICAgZ290byBy ZXQ7CisrICAgICAgICAgfQorKyAgICB9IGVsc2UgeworKyAgICAgICAgLyogUmVjb25zdHJ1Y3Qg ayA9IChrXi0xKV4tMS4gKi8KKysgICAgICAgIGlmIChlY19ncm91cF9kb19pbnZlcnNlX29yZChn cm91cCwgaywga2ludiwgTlVMTCkgPT0gMAorKyAgICAgICAgICAgIHx8IEJOX2JuMmJpbnBhZChr LCBwYXJhbSArIFMzOTBYX09GRl9STihsZW4pLCBsZW4pID09IC0xKSB7CisrICAgICAgICAgICAg RUNlcnIoRUNfRl9FQ0RTQV9TMzkwWF9OSVNUUF9TSUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKysg ICAgICAgICAgICBnb3RvIHJldDsKKysgICAgICAgIH0KKysgICAgICAgIC8qIFR1cm5zIEtEU0Eg aW50ZXJuYWwgbm9uY2UtZ2VuZXJhdGlvbiBvZmYuICovCisrICAgICAgICBmYyB8PSBTMzkwWF9L RFNBX0Q7CisrICAgIH0KKysKKysgICAgaWYgKHMzOTB4X2tkc2EoZmMsIHBhcmFtLCBOVUxMLCAw KSAhPSAwKSB7CisrICAgICAgICBFQ2VycihFQ19GX0VDRFNBX1MzOTBYX05JU1RQX1NJR05fU0lH LCBFUlJfUl9FQ0RTQV9MSUIpOworKyAgICAgICAgZ290byByZXQ7CisrICAgIH0KKysKKysgICAg aWYgKEJOX2JpbjJibihwYXJhbSArIFMzOTBYX09GRl9SKGxlbiksIGxlbiwgc2lnLT5yKSA9PSBO VUxMCisrICAgICAgICB8fCBCTl9iaW4yYm4ocGFyYW0gKyBTMzkwWF9PRkZfUyhsZW4pLCBsZW4s IHNpZy0+cykgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9FQ0RTQV9TMzkwWF9OSVNU UF9TSUdOX1NJRywgRVJSX1JfQk5fTElCKTsKKysgICAgICAgIGdvdG8gcmV0OworKyAgICB9Cisr CisrICAgIG9rID0gMTsKKytyZXQ6CisrICAgIE9QRU5TU0xfY2xlYW5zZShwYXJhbSArIFMzOTBY X09GRl9LKGxlbiksIDIgKiBsZW4pOworKyAgICBpZiAob2sgIT0gMSkgeworKyAgICAgICAgRUNE U0FfU0lHX2ZyZWUoc2lnKTsKKysgICAgICAgIHNpZyA9IE5VTEw7CisrICAgIH0KKysgICAgQk5f Y2xlYXJfZnJlZShrKTsKKysgICAgcmV0dXJuIHNpZzsKKyt9CisrCisrc3RhdGljIGludCBlY2Rz YV9zMzkweF9uaXN0cF92ZXJpZnlfc2lnKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmRnc3QsIGludCBk Z3N0bGVuLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBF Q0RTQV9TSUcgKnNpZywgRUNfS0VZICplY2tleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZjLCBpbnQgbGVuKQorK3sKKysgICAgdW5zaWdu ZWQgY2hhciBwYXJhbVtTMzkwWF9TSVpFX1BBUkFNXTsKKysgICAgaW50IHJjID0gLTE7CisrICAg IEJOX0NUWCAqY3R4OworKyAgICBCSUdOVU0gKngsICp5OworKyAgICBjb25zdCBFQ19HUk9VUCAq Z3JvdXA7CisrICAgIGNvbnN0IEVDX1BPSU5UICpwdWJrZXk7CisrICAgIGludCBvZmY7CisrCisr ICAgIGdyb3VwID0gRUNfS0VZX2dldDBfZ3JvdXAoZWNrZXkpOworKyAgICBwdWJrZXkgPSBFQ19L RVlfZ2V0MF9wdWJsaWNfa2V5KGVja2V5KTsKKysgICAgaWYgKGVja2V5ID09IE5VTEwgfHwgZ3Jv dXAgPT0gTlVMTCB8fCBwdWJrZXkgPT0gTlVMTCB8fCBzaWcgPT0gTlVMTCkgeworKyAgICAgICAg RUNlcnIoRUNfRl9FQ0RTQV9TMzkwWF9OSVNUUF9WRVJJRllfU0lHLCBFQ19SX01JU1NJTkdfUEFS QU1FVEVSUyk7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgICAgaWYgKCFFQ19L RVlfY2FuX3NpZ24oZWNrZXkpKSB7CisrICAgICAgICBFQ2VycihFQ19GX0VDRFNBX1MzOTBYX05J U1RQX1ZFUklGWV9TSUcsCisrICAgICAgICAgICAgICBFQ19SX0NVUlZFX0RPRVNfTk9UX1NVUFBP UlRfU0lHTklORyk7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgICAgY3R4ID0g Qk5fQ1RYX25ldygpOworKyAgICBpZiAoY3R4ID09IE5VTEwpIHsKKysgICAgICAgIEVDZXJyKEVD X0ZfRUNEU0FfUzM5MFhfTklTVFBfVkVSSUZZX1NJRywgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOwor KyAgICAgICAgcmV0dXJuIC0xOworKyAgICB9CisrCisrICAgIEJOX0NUWF9zdGFydChjdHgpOwor KworKyAgICB4ID0gQk5fQ1RYX2dldChjdHgpOworKyAgICB5ID0gQk5fQ1RYX2dldChjdHgpOwor KyAgICBpZiAoeCA9PSBOVUxMIHx8IHkgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9F Q0RTQV9TMzkwWF9OSVNUUF9WRVJJRllfU0lHLCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrICAg ICAgICBnb3RvIHJldDsKKysgICAgfQorKworKyAgICBtZW1zZXQocGFyYW0sIDAsIHNpemVvZihw YXJhbSkpOworKyAgICBvZmYgPSBsZW4gLSAoZGdzdGxlbiA+IGxlbiA/IGxlbiA6IGRnc3RsZW4p OworKyAgICBtZW1jcHkocGFyYW0gKyBTMzkwWF9PRkZfSChsZW4pICsgb2ZmLCBkZ3N0LCBsZW4g LSBvZmYpOworKworKyAgICBpZiAoZ3JvdXAtPm1ldGgtPnBvaW50X2dldF9hZmZpbmVfY29vcmRp bmF0ZXMoZ3JvdXAsIHB1YmtleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHgsIHksIGN0eCkgIT0gMQorKyAgICAgICAgfHwgQk5fYm4yYmlucGFk KHNpZy0+ciwgcGFyYW0gKyBTMzkwWF9PRkZfUihsZW4pLCBsZW4pID09IC0xCisrICAgICAgICB8 fCBCTl9ibjJiaW5wYWQoc2lnLT5zLCBwYXJhbSArIFMzOTBYX09GRl9TKGxlbiksIGxlbikgPT0g LTEKKysgICAgICAgIHx8IEJOX2JuMmJpbnBhZCh4LCBwYXJhbSArIFMzOTBYX09GRl9YKGxlbiks IGxlbikgPT0gLTEKKysgICAgICAgIHx8IEJOX2JuMmJpbnBhZCh5LCBwYXJhbSArIFMzOTBYX09G Rl9ZKGxlbiksIGxlbikgPT0gLTEpIHsKKysgICAgICAgIEVDZXJyKEVDX0ZfRUNEU0FfUzM5MFhf TklTVFBfVkVSSUZZX1NJRywgRVJSX1JfQk5fTElCKTsKKysgICAgICAgIGdvdG8gcmV0OworKyAg ICB9CisrCisrICAgIHJjID0gczM5MHhfa2RzYShmYywgcGFyYW0sIE5VTEwsIDApID09IDAgPyAx IDogMDsKKytyZXQ6CisrICAgIEJOX0NUWF9lbmQoY3R4KTsKKysgICAgQk5fQ1RYX2ZyZWUoY3R4 KTsKKysgICAgcmV0dXJuIHJjOworK30KKysKKysjZGVmaW5lIEVDX0dGUF9TMzkwWF9OSVNUUF9N RVRIT0QoYml0cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorK3N0YXRpYyBpbnQgZWNfR0ZwX3MzOTB4X25pc3RwIyNiaXRzIyNfbXVsKGNvbnN0 IEVDX0dST1VQICpncm91cCwgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBFQ19QT0lOVCAqciwgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICpzY2FsYXIsICAg ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVf dCBudW0sICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBFQ19QT0lOVCAqcG9pbnRzW10sICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQklHTlVNICpzY2FsYXJzW10s ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJOX0NU WCAqY3R4KSAgICAgICAgICAgICAgICAgIFwKKyt7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHJldHVy biBlY19HRnBfczM5MHhfbmlzdHBfbXVsKGdyb3VwLCByLCBzY2FsYXIsIG51bSwgcG9pbnRzLCAg ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FsYXJzLCBjdHgs ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUzM5MFhfU0NBTEFSX01VTFRJUExZX1AjI2JpdHMsICAgICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFMzOTBYX1NJWkVfUCMjYml0cyk7ICAgICAgICAgICAg ICAgICAgXAorK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrc3RhdGljIEVD RFNBX1NJRyAqZWNkc2FfczM5MHhfbmlzdHAjI2JpdHMjI19zaWduX3NpZyhjb25zdCB1bnNpZ25l ZCAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2hhciAqZGdzdCwgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZ3N0bGVuLCAgICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCSUdOVU0g KmtpbnYsXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgQklHTlVNICpyLCAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVDX0tFWSAqZWNrZXkpICAgICBcCisreyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICByZXR1cm4gZWNkc2FfczM5MHhfbmlzdHBfc2lnbl9zaWcoZGdzdCwgZGdz dGxlbiwga2ludiwgciwgZWNrZXksICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFMzOTBYX0VDRFNBX1NJR05fUCMjYml0cywgICAgICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTMzkwWF9TSVpFX1AjI2JpdHMpOyAgICAgICAg ICAgICAgXAorK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrc3RhdGljIGlu dCBlY2RzYV9zMzkweF9uaXN0cCMjYml0cyMjX3ZlcmlmeV9zaWcoY29uc3QgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVuc2lnbmVkIGNoYXIgKmRnc3QsICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgZGdzdGxlbiwgICAgICAgICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRUNEU0FfU0lHICpz aWcsICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEVDX0tFWSAqZWNrZXkpICAgICAgICAgIFwKKyt7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHJldHVy biBlY2RzYV9zMzkweF9uaXN0cF92ZXJpZnlfc2lnKGRnc3QsIGRnc3RsZW4sIHNpZywgZWNrZXks ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTMzkwWF9F Q0RTQV9WRVJJRllfUCMjYml0cywgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUzM5MFhfU0laRV9QIyNiaXRzKTsgICAgICAgICAgICBcCisrfSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKytjb25zdCBFQ19NRVRIT0QgKkVDX0dGcF9zMzkw eF9uaXN0cCMjYml0cyMjX21ldGhvZCh2b2lkKSAgICAgICAgICAgICAgICBcCisreyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICBzdGF0aWMgY29uc3QgRUNfTUVUSE9EIEVDX0dGcF9zMzkweF9uaXN0cCMj Yml0cyMjX21ldGggPSB7ICAgICAgICAgIFwKKysgICAgICAgIEVDX0ZMQUdTX0RFRkFVTFRfT0NU LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBO SURfWDlfNjJfcHJpbWVfZmllbGQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9ncm91cF9pbml0LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfZ3JvdXBf ZmluaXNoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2dyb3VwX2NsZWFyX2ZpbmlzaCwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9ncm91cF9jb3B5LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfZ3JvdXBf c2V0X2N1cnZlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2dyb3VwX2dldF9jdXJ2ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9ncm91cF9nZXRfZGVncmVlLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX2dyb3VwX3NpbXBsZV9vcmRl cl9iaXRzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2dyb3VwX2NoZWNrX2Rpc2NyaW1pbmFudCwgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9wb2ludF9pbml0LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfcG9pbnRf ZmluaXNoLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX3BvaW50X2NsZWFyX2ZpbmlzaCwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9wb2ludF9jb3B5LCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfcG9pbnRf c2V0X3RvX2luZmluaXR5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX3NldF9KcHJvamVjdGl2ZV9jb29yZGluYXRlc19HRnAsICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9nZXRfSnByb2plY3RpdmVfY29vcmRpbmF0 ZXNfR0ZwLCAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfcG9pbnRf c2V0X2FmZmluZV9jb29yZGluYXRlcywgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX3BvaW50X2dldF9hZmZpbmVfY29vcmRpbmF0ZXMsICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgTlVMTCwgLyogcG9pbnRfc2V0X2NvbXByZXNzZWRfY29vcmRpbmF0 ZXMgKi8gICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIE5VTEwsIC8qIHBvaW50Mm9jdCAq LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBO VUxMLCAvKiBvY3QycG9pbnQgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9hZGQsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfZGJsLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2ludmVydCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9pc19hdF9pbmZpbml0eSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfaXNfb25f Y3VydmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2NtcCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9tYWtlX2FmZmluZSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfcG9pbnRz X21ha2VfYWZmaW5lLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfczM5MHhfbmlzdHAjI2JpdHMjI19tdWwsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgTlVMTCwgLyogcHJlY29tcHV0ZV9tdWx0ICovICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIE5VTEwsIC8qIGhhdmVfcHJlY29t cHV0ZV9tdWx0ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2ZpZWxkX211bCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9maWVsZF9zcXIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIE5VTEwsIC8qIGZpZWxkX2RpdiAq LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2ZpZWxkX2ludiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgTlVMTCwgLyogZmllbGRfZW5jb2RlICovICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIE5VTEwsIC8qIGZpZWxkX2RlY29k ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBO VUxMLCAvKiBmaWVsZF9zZXRfdG9fb25lICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfa2V5X3NpbXBsZV9wcml2Mm9jdCwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX2tleV9zaW1wbGVfb2N0MnBy aXYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBO VUxMLCAvKiBzZXRfcHJpdmF0ZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfa2V5X3NpbXBsZV9nZW5lcmF0ZV9rZXksICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX2tleV9zaW1wbGVfY2hlY2tf a2V5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19rZXlfc2ltcGxlX2dlbmVyYXRlX3B1YmxpY19rZXksICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgTlVMTCwgLyoga2V5Y29weSAqLyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIE5VTEwsIC8qIGtleWZpbmlzaCAq LyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y2RoX3NpbXBsZV9jb21wdXRlX2tleSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNkc2Ffc2ltcGxlX3NpZ25fc2V0dXAsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjZHNhX3MzOTB4X25pc3RwIyNi aXRzIyNfc2lnbl9zaWcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y2RzYV9zMzkweF9uaXN0cCMjYml0cyMjX3ZlcmlmeV9zaWcsICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgTlVMTCwgLyogZmllbGRfaW52ZXJzZV9tb2Rfb3JkICovICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfYmxpbmRf Y29vcmRpbmF0ZXMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBl Y19HRnBfc2ltcGxlX2xhZGRlcl9wcmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgZWNfR0ZwX3NpbXBsZV9sYWRkZXJfc3RlcCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIGVjX0dGcF9zaW1wbGVfbGFkZGVy X3Bvc3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIH07ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICBzdGF0aWMgY29uc3QgRUNfTUVUSE9EICpyZXQ7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIGlmICgo T1BFTlNTTF9zMzkweGNhcF9QLnBjY1sxXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgICYgUzM5MFhfQ0FQQklUKFMzOTBYX1NDQUxBUl9NVUxUSVBMWV9Q IyNiaXRzKSkgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICYmIChPUEVOU1NMX3MzOTB4Y2Fw X1Aua2RzYVswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgJiBTMzkwWF9DQVBCSVQoUzM5MFhfRUNEU0FfVkVSSUZZX1AjI2JpdHMpKSAgICAgICAgICAg ICAgICAgXAorKyAgICAgICAgJiYgKE9QRU5TU0xfczM5MHhjYXBfUC5rZHNhWzBdICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAmIFMzOTBYX0NBUEJJVChT MzkwWF9FQ0RTQV9TSUdOX1AjI2JpdHMpKSkgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBy ZXQgPSAmRUNfR0ZwX3MzOTB4X25pc3RwIyNiaXRzIyNfbWV0aDsgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgIHJldCA9IEVDX0dGcF9tb250X21l dGhvZCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorKyAgICByZXR1cm4gcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyt9CisrCisrRUNfR0ZQX1MzOTBYX05JU1RQX01F VEhPRCgyNTYpCisrRUNfR0ZQX1MzOTBYX05JU1RQX01FVEhPRCgzODQpCisrRUNfR0ZQX1MzOTBY X05JU1RQX01FVEhPRCg1MjEpCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNw X3NtcGwuYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjcF9zbXBsLmMKKy0t LSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWNwX3NtcGwuYy5zMzkweC1lY2MJMjAyMC0wNS0x OCAxMjo0NTo0MC43NjkyMzM1MTQgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMv ZWNwX3NtcGwuYwkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU3MjI2NjU2NiArMDIwMAorQEAgLTY0LDYg KzY0LDkgQEAgY29uc3QgRUNfTUVUSE9EICpFQ19HRnBfc2ltcGxlX21ldGhvZCh2bworICAgICAg ICAgMCwgLyoga2V5Y29weSAqLworICAgICAgICAgMCwgLyoga2V5ZmluaXNoICovCisgICAgICAg ICBlY2RoX3NpbXBsZV9jb21wdXRlX2tleSwKKysgICAgICAgIGVjZHNhX3NpbXBsZV9zaWduX3Nl dHVwLAorKyAgICAgICAgZWNkc2Ffc2ltcGxlX3NpZ25fc2lnLAorKyAgICAgICAgZWNkc2Ffc2lt cGxlX3ZlcmlmeV9zaWcsCisgICAgICAgICAwLCAvKiBmaWVsZF9pbnZlcnNlX21vZF9vcmQgKi8K KyAgICAgICAgIGVjX0dGcF9zaW1wbGVfYmxpbmRfY29vcmRpbmF0ZXMsCisgICAgICAgICBlY19H RnBfc2ltcGxlX2xhZGRlcl9wcmUsCitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMv ZWN4X21ldGguYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2VjL2VjeF9tZXRoLmMK Ky0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZWMvZWN4X21ldGguYy5zMzkweC1lY2MJMjAyMC0w NC0yMSAxNDoyMjozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8v ZWMvZWN4X21ldGguYwkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU3MzI2NjU3NSArMDIwMAorQEAgLTIw LDYgKzIwLDcgQEAKKyAjZGVmaW5lIFgyNTUxOV9CSVRTICAgICAgICAgIDI1MworICNkZWZpbmUg WDI1NTE5X1NFQ1VSSVRZX0JJVFMgMTI4CisgCisrI2RlZmluZSBFRDI1NTE5X0tFWUxFTiAgICAg ICAzMgorICNkZWZpbmUgRUQyNTUxOV9TSUdTSVpFICAgICAgNjQKKyAKKyAjZGVmaW5lIFg0NDhf QklUUyAgICAgICAgICAgIDQ0OAorQEAgLTgzOSwzICs4NDAsNjY2IEBAIGNvbnN0IEVWUF9QS0VZ X01FVEhPRCBlZDQ0OF9wa2V5X21ldGggPQorICAgICBwa2V5X2VjZF9kaWdlc3RzaWduNDQ4LAor ICAgICBwa2V5X2VjZF9kaWdlc3R2ZXJpZnk0NDgKKyB9OworKworKyNpZmRlZiBTMzkwWF9FQ19B U00KKysjIGluY2x1ZGUgInMzOTB4X2FyY2guaCIKKysjIGluY2x1ZGUgImludGVybmFsL2NvbnN0 YW50X3RpbWUuaCIKKysKKytzdGF0aWMgdm9pZCBzMzkweF94MjU1MTlfbW9kX3AodW5zaWduZWQg Y2hhciB1WzMyXSkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIgdV9yZWRbMzJdOworKyAgICB1bnNp Z25lZCBpbnQgYyA9IDA7CisrICAgIGludCBpOworKworKyAgICBtZW1jcHkodV9yZWQsIHUsIHNp emVvZih1X3JlZCkpOworKworKyAgICBjICs9ICh1bnNpZ25lZCBpbnQpdV9yZWRbMzFdICsgMTk7 CisrICAgIHVfcmVkWzMxXSA9ICh1bnNpZ25lZCBjaGFyKWM7CisrICAgIGMgPj49IDg7CisrCisr ICAgIGZvciAoaSA9IDMwOyBpID49IDA7IGktLSkgeworKyAgICAgICAgYyArPSAodW5zaWduZWQg aW50KXVfcmVkW2ldOworKyAgICAgICAgdV9yZWRbaV0gPSAodW5zaWduZWQgY2hhciljOworKyAg ICAgICAgYyA+Pj0gODsKKysgICAgfQorKworKyAgICBjID0gKHVfcmVkWzBdICYgMHg4MCkgPj4g NzsKKysgICAgdV9yZWRbMF0gJj0gMHg3ZjsKKysgICAgY29uc3RhbnRfdGltZV9jb25kX3N3YXBf YnVmZigwIC0gKHVuc2lnbmVkIGNoYXIpYywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1LCB1X3JlZCwgc2l6ZW9mKHVfcmVkKSk7CisrfQorKworK3N0YXRpYyB2b2lkIHMzOTB4 X3g0NDhfbW9kX3AodW5zaWduZWQgY2hhciB1WzU2XSkKKyt7CisrICAgIHVuc2lnbmVkIGNoYXIg dV9yZWRbNTZdOworKyAgICB1bnNpZ25lZCBpbnQgYyA9IDA7CisrICAgIGludCBpOworKworKyAg ICBtZW1jcHkodV9yZWQsIHUsIHNpemVvZih1X3JlZCkpOworKworKyAgICBjICs9ICh1bnNpZ25l ZCBpbnQpdV9yZWRbNTVdICsgMTsKKysgICAgdV9yZWRbNTVdID0gKHVuc2lnbmVkIGNoYXIpYzsK KysgICAgYyA+Pj0gODsKKysKKysgICAgZm9yIChpID0gNTQ7IGkgPj0gMjg7IGktLSkgeworKyAg ICAgICAgYyArPSAodW5zaWduZWQgaW50KXVfcmVkW2ldOworKyAgICAgICAgdV9yZWRbaV0gPSAo dW5zaWduZWQgY2hhciljOworKyAgICAgICAgYyA+Pj0gODsKKysgICAgfQorKworKyAgICBjICs9 ICh1bnNpZ25lZCBpbnQpdV9yZWRbMjddICsgMTsKKysgICAgdV9yZWRbMjddID0gKHVuc2lnbmVk IGNoYXIpYzsKKysgICAgYyA+Pj0gODsKKysKKysgICAgZm9yIChpID0gMjY7IGkgPj0gMDsgaS0t KSB7CisrICAgICAgICBjICs9ICh1bnNpZ25lZCBpbnQpdV9yZWRbaV07CisrICAgICAgICB1X3Jl ZFtpXSA9ICh1bnNpZ25lZCBjaGFyKWM7CisrICAgICAgICBjID4+PSA4OworKyAgICB9CisrCisr ICAgIGNvbnN0YW50X3RpbWVfY29uZF9zd2FwX2J1ZmYoMCAtICh1bnNpZ25lZCBjaGFyKWMsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdV9yZWQsIHNpemVvZih1X3JlZCkp OworK30KKysKKytzdGF0aWMgaW50IHMzOTB4X3gyNTUxOV9tdWwodW5zaWduZWQgY2hhciB1X2Rz dFszMl0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIg dV9zcmNbMzJdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBj aGFyIGRfc3JjWzMyXSkKKyt7CisrICAgIHVuaW9uIHsKKysgICAgICAgIHN0cnVjdCB7CisrICAg ICAgICAgICAgdW5zaWduZWQgY2hhciB1X2RzdFszMl07CisrICAgICAgICAgICAgdW5zaWduZWQg Y2hhciB1X3NyY1szMl07CisrICAgICAgICAgICAgdW5zaWduZWQgY2hhciBkX3NyY1szMl07Cisr ICAgICAgICB9IHgyNTUxOTsKKysgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBidWZmWzUxMl07 CisrICAgIH0gcGFyYW07CisrICAgIGludCByYzsKKysKKysgICAgbWVtc2V0KCZwYXJhbSwgMCwg c2l6ZW9mKHBhcmFtKSk7CisrCisrICAgIHMzOTB4X2ZsaXBfZW5kaWFuMzIocGFyYW0ueDI1NTE5 LnVfc3JjLCB1X3NyYyk7CisrICAgIHBhcmFtLngyNTUxOS51X3NyY1swXSAmPSAweDdmOworKyAg ICBzMzkweF94MjU1MTlfbW9kX3AocGFyYW0ueDI1NTE5LnVfc3JjKTsKKysKKysgICAgczM5MHhf ZmxpcF9lbmRpYW4zMihwYXJhbS54MjU1MTkuZF9zcmMsIGRfc3JjKTsKKysgICAgcGFyYW0ueDI1 NTE5LmRfc3JjWzMxXSAmPSAyNDg7CisrICAgIHBhcmFtLngyNTUxOS5kX3NyY1swXSAmPSAxMjc7 CisrICAgIHBhcmFtLngyNTUxOS5kX3NyY1swXSB8PSA2NDsKKysKKysgICAgcmMgPSBzMzkweF9w Y2MoUzM5MFhfU0NBTEFSX01VTFRJUExZX1gyNTUxOSwgJnBhcmFtLngyNTUxOSkgPyAwIDogMTsK KysgICAgaWYgKHJjID09IDEpCisrICAgICAgICBzMzkweF9mbGlwX2VuZGlhbjMyKHVfZHN0LCBw YXJhbS54MjU1MTkudV9kc3QpOworKworKyAgICBPUEVOU1NMX2NsZWFuc2UocGFyYW0ueDI1NTE5 LmRfc3JjLCBzaXplb2YocGFyYW0ueDI1NTE5LmRfc3JjKSk7CisrICAgIHJldHVybiByYzsKKyt9 CisrCisrc3RhdGljIGludCBzMzkweF94NDQ4X211bCh1bnNpZ25lZCBjaGFyIHVfZHN0WzU2XSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgdV9zcmNbNTZd LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBkX3NyY1s1 Nl0pCisreworKyAgICB1bmlvbiB7CisrICAgICAgICBzdHJ1Y3QgeworKyAgICAgICAgICAgIHVu c2lnbmVkIGNoYXIgdV9kc3RbNjRdOworKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdV9zcmNb NjRdOworKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgZF9zcmNbNjRdOworKyAgICAgICAgfSB4 NDQ4OworKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJ1ZmZbNTEyXTsKKysgICAgfSBwYXJh bTsKKysgICAgaW50IHJjOworKworKyAgICBtZW1zZXQoJnBhcmFtLCAwLCBzaXplb2YocGFyYW0p KTsKKysKKysgICAgbWVtY3B5KHBhcmFtLng0NDgudV9zcmMsIHVfc3JjLCA1Nik7CisrICAgIG1l bWNweShwYXJhbS54NDQ4LmRfc3JjLCBkX3NyYywgNTYpOworKworKyAgICBzMzkweF9mbGlwX2Vu ZGlhbjY0KHBhcmFtLng0NDgudV9zcmMsIHBhcmFtLng0NDgudV9zcmMpOworKyAgICBzMzkweF94 NDQ4X21vZF9wKHBhcmFtLng0NDgudV9zcmMgKyA4KTsKKysKKysgICAgczM5MHhfZmxpcF9lbmRp YW42NChwYXJhbS54NDQ4LmRfc3JjLCBwYXJhbS54NDQ4LmRfc3JjKTsKKysgICAgcGFyYW0ueDQ0 OC5kX3NyY1s2M10gJj0gMjUyOworKyAgICBwYXJhbS54NDQ4LmRfc3JjWzhdIHw9IDEyODsKKysK KysgICAgcmMgPSBzMzkweF9wY2MoUzM5MFhfU0NBTEFSX01VTFRJUExZX1g0NDgsICZwYXJhbS54 NDQ4KSA/IDAgOiAxOworKyAgICBpZiAocmMgPT0gMSkgeworKyAgICAgICAgczM5MHhfZmxpcF9l bmRpYW42NChwYXJhbS54NDQ4LnVfZHN0LCBwYXJhbS54NDQ4LnVfZHN0KTsKKysgICAgICAgIG1l bWNweSh1X2RzdCwgcGFyYW0ueDQ0OC51X2RzdCwgNTYpOworKyAgICB9CisrCisrICAgIE9QRU5T U0xfY2xlYW5zZShwYXJhbS54NDQ4LmRfc3JjLCBzaXplb2YocGFyYW0ueDQ0OC5kX3NyYykpOwor KyAgICByZXR1cm4gcmM7CisrfQorKworK3N0YXRpYyBpbnQgczM5MHhfZWQyNTUxOV9tdWwodW5z aWduZWQgY2hhciB4X2RzdFszMl0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjaGFyIHlfZHN0WzMyXSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHVuc2lnbmVkIGNoYXIgeF9zcmNbMzJdLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3QgdW5zaWduZWQgY2hhciB5X3NyY1szMl0sCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGRfc3JjWzMyXSkKKyt7CisrICAgIHVuaW9uIHsKKysg ICAgICAgIHN0cnVjdCB7CisrICAgICAgICAgICAgdW5zaWduZWQgY2hhciB4X2RzdFszMl07Cisr ICAgICAgICAgICAgdW5zaWduZWQgY2hhciB5X2RzdFszMl07CisrICAgICAgICAgICAgdW5zaWdu ZWQgY2hhciB4X3NyY1szMl07CisrICAgICAgICAgICAgdW5zaWduZWQgY2hhciB5X3NyY1szMl07 CisrICAgICAgICAgICAgdW5zaWduZWQgY2hhciBkX3NyY1szMl07CisrICAgICAgICB9IGVkMjU1 MTk7CisrICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYnVmZls1MTJdOworKyAgICB9IHBhcmFt OworKyAgICBpbnQgcmM7CisrCisrICAgIG1lbXNldCgmcGFyYW0sIDAsIHNpemVvZihwYXJhbSkp OworKworKyAgICBzMzkweF9mbGlwX2VuZGlhbjMyKHBhcmFtLmVkMjU1MTkueF9zcmMsIHhfc3Jj KTsKKysgICAgczM5MHhfZmxpcF9lbmRpYW4zMihwYXJhbS5lZDI1NTE5Lnlfc3JjLCB5X3NyYyk7 CisrICAgIHMzOTB4X2ZsaXBfZW5kaWFuMzIocGFyYW0uZWQyNTUxOS5kX3NyYywgZF9zcmMpOwor KworKyAgICByYyA9IHMzOTB4X3BjYyhTMzkwWF9TQ0FMQVJfTVVMVElQTFlfRUQyNTUxOSwgJnBh cmFtLmVkMjU1MTkpID8gMCA6IDE7CisrICAgIGlmIChyYyA9PSAxKSB7CisrICAgICAgICBzMzkw eF9mbGlwX2VuZGlhbjMyKHhfZHN0LCBwYXJhbS5lZDI1NTE5LnhfZHN0KTsKKysgICAgICAgIHMz OTB4X2ZsaXBfZW5kaWFuMzIoeV9kc3QsIHBhcmFtLmVkMjU1MTkueV9kc3QpOworKyAgICB9Cisr CisrICAgIE9QRU5TU0xfY2xlYW5zZShwYXJhbS5lZDI1NTE5LmRfc3JjLCBzaXplb2YocGFyYW0u ZWQyNTUxOS5kX3NyYykpOworKyAgICByZXR1cm4gcmM7CisrfQorKworK3N0YXRpYyBpbnQgczM5 MHhfZWQ0NDhfbXVsKHVuc2lnbmVkIGNoYXIgeF9kc3RbNTddLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgeV9kc3RbNTddLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgeF9zcmNbNTddLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgeV9zcmNbNTddLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZF9zcmNbNTddKQorK3sKKysgICAgdW5p b24geworKyAgICAgICAgc3RydWN0IHsKKysgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHhfZHN0 WzY0XTsKKysgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHlfZHN0WzY0XTsKKysgICAgICAgICAg ICB1bnNpZ25lZCBjaGFyIHhfc3JjWzY0XTsKKysgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHlf c3JjWzY0XTsKKysgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGRfc3JjWzY0XTsKKysgICAgICAg IH0gZWQ0NDg7CisrICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYnVmZls1MTJdOworKyAgICB9 IHBhcmFtOworKyAgICBpbnQgcmM7CisrCisrICAgIG1lbXNldCgmcGFyYW0sIDAsIHNpemVvZihw YXJhbSkpOworKworKyAgICBtZW1jcHkocGFyYW0uZWQ0NDgueF9zcmMsIHhfc3JjLCA1Nyk7Cisr ICAgIG1lbWNweShwYXJhbS5lZDQ0OC55X3NyYywgeV9zcmMsIDU3KTsKKysgICAgbWVtY3B5KHBh cmFtLmVkNDQ4LmRfc3JjLCBkX3NyYywgNTcpOworKyAgICBzMzkweF9mbGlwX2VuZGlhbjY0KHBh cmFtLmVkNDQ4Lnhfc3JjLCBwYXJhbS5lZDQ0OC54X3NyYyk7CisrICAgIHMzOTB4X2ZsaXBfZW5k aWFuNjQocGFyYW0uZWQ0NDgueV9zcmMsIHBhcmFtLmVkNDQ4Lnlfc3JjKTsKKysgICAgczM5MHhf ZmxpcF9lbmRpYW42NChwYXJhbS5lZDQ0OC5kX3NyYywgcGFyYW0uZWQ0NDguZF9zcmMpOworKwor KyAgICByYyA9IHMzOTB4X3BjYyhTMzkwWF9TQ0FMQVJfTVVMVElQTFlfRUQ0NDgsICZwYXJhbS5l ZDQ0OCkgPyAwIDogMTsKKysgICAgaWYgKHJjID09IDEpIHsKKysgICAgICAgIHMzOTB4X2ZsaXBf ZW5kaWFuNjQocGFyYW0uZWQ0NDgueF9kc3QsIHBhcmFtLmVkNDQ4LnhfZHN0KTsKKysgICAgICAg IHMzOTB4X2ZsaXBfZW5kaWFuNjQocGFyYW0uZWQ0NDgueV9kc3QsIHBhcmFtLmVkNDQ4LnlfZHN0 KTsKKysgICAgICAgIG1lbWNweSh4X2RzdCwgcGFyYW0uZWQ0NDgueF9kc3QsIDU3KTsKKysgICAg ICAgIG1lbWNweSh5X2RzdCwgcGFyYW0uZWQ0NDgueV9kc3QsIDU3KTsKKysgICAgfQorKworKyAg ICBPUEVOU1NMX2NsZWFuc2UocGFyYW0uZWQ0NDguZF9zcmMsIHNpemVvZihwYXJhbS5lZDQ0OC5k X3NyYykpOworKyAgICByZXR1cm4gcmM7CisrfQorKworK3N0YXRpYyBpbnQgczM5MHhfcGtleV9l Y3hfa2V5Z2VuMjU1MTkoRVZQX1BLRVlfQ1RYICpjdHgsIEVWUF9QS0VZICpwa2V5KQorK3sKKysg ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2VuZXJhdG9yW10gPSB7CisrICAgICAgICAw eDA5LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLCAweDAwLAorKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKysgICAgICAgIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAKKysgICAgfTsKKysgICAgRUNY X0tFWSAqa2V5OworKyAgICB1bnNpZ25lZCBjaGFyICpwcml2a2V5ID0gTlVMTCwgKnB1YmtleTsK KysKKysgICAga2V5ID0gT1BFTlNTTF96YWxsb2Moc2l6ZW9mKCprZXkpKTsKKysgICAgaWYgKGtl eSA9PSBOVUxMKSB7CisrICAgICAgICBFQ2VycihFQ19GX1MzOTBYX1BLRVlfRUNYX0tFWUdFTjI1 NTE5LCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAgfQor KworKyAgICBwdWJrZXkgPSBrZXktPnB1YmtleTsKKysKKysgICAgcHJpdmtleSA9IGtleS0+cHJp dmtleSA9IE9QRU5TU0xfc2VjdXJlX21hbGxvYyhYMjU1MTlfS0VZTEVOKTsKKysgICAgaWYgKHBy aXZrZXkgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9TMzkwWF9QS0VZX0VDWF9LRVlH RU4yNTUxOSwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKyAgICAgICAgZ290byBlcnI7CisrICAg IH0KKysKKysgICAgaWYgKFJBTkRfcHJpdl9ieXRlcyhwcml2a2V5LCBYMjU1MTlfS0VZTEVOKSA8 PSAwKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIHByaXZrZXlbMF0gJj0gMjQ4OworKyAg ICBwcml2a2V5WzMxXSAmPSAxMjc7CisrICAgIHByaXZrZXlbMzFdIHw9IDY0OworKworKyAgICBp ZiAoczM5MHhfeDI1NTE5X211bChwdWJrZXksIGdlbmVyYXRvciwgcHJpdmtleSkgIT0gMSkKKysg ICAgICAgIGdvdG8gZXJyOworKworKyAgICBFVlBfUEtFWV9hc3NpZ24ocGtleSwgY3R4LT5wbWV0 aC0+cGtleV9pZCwga2V5KTsKKysgICAgcmV0dXJuIDE7CisrIGVycjoKKysgICAgT1BFTlNTTF9z ZWN1cmVfY2xlYXJfZnJlZShwcml2a2V5LCBYMjU1MTlfS0VZTEVOKTsKKysgICAga2V5LT5wcml2 a2V5ID0gTlVMTDsKKysgICAgT1BFTlNTTF9mcmVlKGtleSk7CisrICAgIHJldHVybiAwOworK30K KysKKytzdGF0aWMgaW50IHMzOTB4X3BrZXlfZWN4X2tleWdlbjQ0OChFVlBfUEtFWV9DVFggKmN0 eCwgRVZQX1BLRVkgKnBrZXkpCisreworKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciBn ZW5lcmF0b3JbXSA9IHsKKysgICAgICAgIDB4MDUsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisrICAgICAgICAweDAwLCAw eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLAorKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKysgICAgICAgIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs CisrICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw CisrICAgIH07CisrICAgIEVDWF9LRVkgKmtleTsKKysgICAgdW5zaWduZWQgY2hhciAqcHJpdmtl eSA9IE5VTEwsICpwdWJrZXk7CisrCisrICAgIGtleSA9IE9QRU5TU0xfemFsbG9jKHNpemVvZigq a2V5KSk7CisrICAgIGlmIChrZXkgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9TMzkw WF9QS0VZX0VDWF9LRVlHRU40NDgsIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysgICAgICAgIGdv dG8gZXJyOworKyAgICB9CisrCisrICAgIHB1YmtleSA9IGtleS0+cHVia2V5OworKworKyAgICBw cml2a2V5ID0ga2V5LT5wcml2a2V5ID0gT1BFTlNTTF9zZWN1cmVfbWFsbG9jKFg0NDhfS0VZTEVO KTsKKysgICAgaWYgKHByaXZrZXkgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9TMzkw WF9QS0VZX0VDWF9LRVlHRU40NDgsIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysgICAgICAgIGdv dG8gZXJyOworKyAgICB9CisrCisrICAgIGlmIChSQU5EX3ByaXZfYnl0ZXMocHJpdmtleSwgWDQ0 OF9LRVlMRU4pIDw9IDApCisrICAgICAgICBnb3RvIGVycjsKKysKKysgICAgcHJpdmtleVswXSAm PSAyNTI7CisrICAgIHByaXZrZXlbNTVdIHw9IDEyODsKKysKKysgICAgaWYgKHMzOTB4X3g0NDhf bXVsKHB1YmtleSwgZ2VuZXJhdG9yLCBwcml2a2V5KSAhPSAxKQorKyAgICAgICAgZ290byBlcnI7 CisrCisrICAgIEVWUF9QS0VZX2Fzc2lnbihwa2V5LCBjdHgtPnBtZXRoLT5wa2V5X2lkLCBrZXkp OworKyAgICByZXR1cm4gMTsKKysgZXJyOgorKyAgICBPUEVOU1NMX3NlY3VyZV9jbGVhcl9mcmVl KHByaXZrZXksIFg0NDhfS0VZTEVOKTsKKysgICAga2V5LT5wcml2a2V5ID0gTlVMTDsKKysgICAg T1BFTlNTTF9mcmVlKGtleSk7CisrICAgIHJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50IHMz OTB4X3BrZXlfZWNkX2tleWdlbjI1NTE5KEVWUF9QS0VZX0NUWCAqY3R4LCBFVlBfUEtFWSAqcGtl eSkKKyt7CisrICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIGdlbmVyYXRvcl94W10gPSB7 CisrICAgICAgICAweDFhLCAweGQ1LCAweDI1LCAweDhmLCAweDYwLCAweDJkLCAweDU2LCAweGM5 LCAweGIyLCAweGE3LCAweDI1LCAweDk1LAorKyAgICAgICAgMHg2MCwgMHhjNywgMHgyYywgMHg2 OSwgMHg1YywgMHhkYywgMHhkNiwgMHhmZCwgMHgzMSwgMHhlMiwgMHhhNCwgMHhjMCwKKysgICAg ICAgIDB4ZmUsIDB4NTMsIDB4NmUsIDB4Y2QsIDB4ZDMsIDB4MzYsIDB4NjksIDB4MjEKKysgICAg fTsKKysgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgZ2VuZXJhdG9yX3lbXSA9IHsKKysg ICAgICAgIDB4NTgsIDB4NjYsIDB4NjYsIDB4NjYsIDB4NjYsIDB4NjYsIDB4NjYsIDB4NjYsIDB4 NjYsIDB4NjYsIDB4NjYsIDB4NjYsCisrICAgICAgICAweDY2LCAweDY2LCAweDY2LCAweDY2LCAw eDY2LCAweDY2LCAweDY2LCAweDY2LCAweDY2LCAweDY2LCAweDY2LCAweDY2LAorKyAgICAgICAg MHg2NiwgMHg2NiwgMHg2NiwgMHg2NiwgMHg2NiwgMHg2NiwgMHg2NiwgMHg2NiwKKysgICAgfTsK KysgICAgdW5zaWduZWQgY2hhciB4X2RzdFszMl0sIGJ1ZmZbU0hBNTEyX0RJR0VTVF9MRU5HVEhd OworKyAgICBFQ1hfS0VZICprZXk7CisrICAgIHVuc2lnbmVkIGNoYXIgKnByaXZrZXkgPSBOVUxM LCAqcHVia2V5OworKworKyAgICBrZXkgPSBPUEVOU1NMX3phbGxvYyhzaXplb2YoKmtleSkpOwor KyAgICBpZiAoa2V5ID09IE5VTEwpIHsKKysgICAgICAgIEVDZXJyKEVDX0ZfUzM5MFhfUEtFWV9F Q0RfS0VZR0VOMjU1MTksIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysgICAgICAgIGdvdG8gZXJy OworKyAgICB9CisrCisrICAgIHB1YmtleSA9IGtleS0+cHVia2V5OworKworKyAgICBwcml2a2V5 ID0ga2V5LT5wcml2a2V5ID0gT1BFTlNTTF9zZWN1cmVfbWFsbG9jKEVEMjU1MTlfS0VZTEVOKTsK KysgICAgaWYgKHByaXZrZXkgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9TMzkwWF9Q S0VZX0VDRF9LRVlHRU4yNTUxOSwgRVJSX1JfTUFMTE9DX0ZBSUxVUkUpOworKyAgICAgICAgZ290 byBlcnI7CisrICAgIH0KKysKKysgICAgaWYgKFJBTkRfcHJpdl9ieXRlcyhwcml2a2V5LCBFRDI1 NTE5X0tFWUxFTikgPD0gMCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBTSEE1MTIocHJp dmtleSwgMzIsIGJ1ZmYpOworKyAgICBidWZmWzBdICY9IDI0ODsKKysgICAgYnVmZlszMV0gJj0g NjM7CisrICAgIGJ1ZmZbMzFdIHw9IDY0OworKworKyAgICBpZiAoczM5MHhfZWQyNTUxOV9tdWwo eF9kc3QsIHB1YmtleSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcl94LCBn ZW5lcmF0b3JfeSwgYnVmZikgIT0gMSkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBwdWJr ZXlbMzFdIHw9ICgoeF9kc3RbMF0gJiAweDAxKSA8PCA3KTsKKysKKysgICAgRVZQX1BLRVlfYXNz aWduKHBrZXksIGN0eC0+cG1ldGgtPnBrZXlfaWQsIGtleSk7CisrICAgIHJldHVybiAxOworKyBl cnI6CisrICAgIE9QRU5TU0xfc2VjdXJlX2NsZWFyX2ZyZWUocHJpdmtleSwgRUQyNTUxOV9LRVlM RU4pOworKyAgICBrZXktPnByaXZrZXkgPSBOVUxMOworKyAgICBPUEVOU1NMX2ZyZWUoa2V5KTsK KysgICAgcmV0dXJuIDA7CisrfQorKworK3N0YXRpYyBpbnQgczM5MHhfcGtleV9lY2Rfa2V5Z2Vu NDQ4KEVWUF9QS0VZX0NUWCAqY3R4LCBFVlBfUEtFWSAqcGtleSkKKyt7CisrICAgIHN0YXRpYyBj b25zdCB1bnNpZ25lZCBjaGFyIGdlbmVyYXRvcl94W10gPSB7CisrICAgICAgICAweDVlLCAweGMw LCAweDBjLCAweGM3LCAweDJiLCAweGE4LCAweDI2LCAweDI2LCAweDhlLCAweDkzLCAweDAwLCAw eDhiLAorKyAgICAgICAgMHhlMSwgMHg4MCwgMHgzYiwgMHg0MywgMHgxMSwgMHg2NSwgMHhiNiwg MHgyYSwgMHhmNywgMHgxYSwgMHhhZSwgMHgxMiwKKysgICAgICAgIDB4NjQsIDB4YTQsIDB4ZDMs IDB4YTMsIDB4MjQsIDB4ZTMsIDB4NmQsIDB4ZWEsIDB4NjcsIDB4MTcsIDB4MGYsIDB4NDcsCisr ICAgICAgICAweDcwLCAweDY1LCAweDE0LCAweDllLCAweGRhLCAweDM2LCAweGJmLCAweDIyLCAw eGE2LCAweDE1LCAweDFkLCAweDIyLAorKyAgICAgICAgMHhlZCwgMHgwZCwgMHhlZCwgMHg2Yiwg MHhjNiwgMHg3MCwgMHgxOSwgMHg0ZiwgMHgwMAorKyAgICB9OworKyAgICBzdGF0aWMgY29uc3Qg dW5zaWduZWQgY2hhciBnZW5lcmF0b3JfeVtdID0geworKyAgICAgICAgMHgxNCwgMHhmYSwgMHgz MCwgMHhmMiwgMHg1YiwgMHg3OSwgMHgwOCwgMHg5OCwgMHhhZCwgMHhjOCwgMHhkNywgMHg0ZSwK KysgICAgICAgIDB4MmMsIDB4MTMsIDB4YmQsIDB4ZmQsIDB4YzQsIDB4MzksIDB4N2MsIDB4ZTYs IDB4MWMsIDB4ZmYsIDB4ZDMsIDB4M2EsCisrICAgICAgICAweGQ3LCAweGMyLCAweGEwLCAweDA1 LCAweDFlLCAweDljLCAweDc4LCAweDg3LCAweDQwLCAweDk4LCAweGEzLCAweDZjLAorKyAgICAg ICAgMHg3MywgMHg3MywgMHhlYSwgMHg0YiwgMHg2MiwgMHhjNywgMHhjOSwgMHg1NiwgMHgzNywg MHgyMCwgMHg3NiwgMHg4OCwKKysgICAgICAgIDB4MjQsIDB4YmMsIDB4YjYsIDB4NmUsIDB4NzEs IDB4NDYsIDB4M2YsIDB4NjksIDB4MDAKKysgICAgfTsKKysgICAgdW5zaWduZWQgY2hhciB4X2Rz dFs1N10sIGJ1ZmZbMTE0XTsKKysgICAgRUNYX0tFWSAqa2V5OworKyAgICB1bnNpZ25lZCBjaGFy ICpwcml2a2V5ID0gTlVMTCwgKnB1YmtleTsKKysgICAgRVZQX01EX0NUWCAqaGFzaGN0eCA9IE5V TEw7CisrCisrICAgIGtleSA9IE9QRU5TU0xfemFsbG9jKHNpemVvZigqa2V5KSk7CisrICAgIGlm IChrZXkgPT0gTlVMTCkgeworKyAgICAgICAgRUNlcnIoRUNfRl9TMzkwWF9QS0VZX0VDRF9LRVlH RU40NDgsIEVSUl9SX01BTExPQ19GQUlMVVJFKTsKKysgICAgICAgIGdvdG8gZXJyOworKyAgICB9 CisrCisrICAgIHB1YmtleSA9IGtleS0+cHVia2V5OworKworKyAgICBwcml2a2V5ID0ga2V5LT5w cml2a2V5ID0gT1BFTlNTTF9zZWN1cmVfbWFsbG9jKEVENDQ4X0tFWUxFTik7CisrICAgIGlmIChw cml2a2V5ID09IE5VTEwpIHsKKysgICAgICAgIEVDZXJyKEVDX0ZfUzM5MFhfUEtFWV9FQ0RfS0VZ R0VONDQ4LCBFUlJfUl9NQUxMT0NfRkFJTFVSRSk7CisrICAgICAgICBnb3RvIGVycjsKKysgICAg fQorKworKyAgICBpZiAoUkFORF9wcml2X2J5dGVzKHByaXZrZXksIEVENDQ4X0tFWUxFTikgPD0g MCkKKysgICAgICAgIGdvdG8gZXJyOworKworKyAgICBoYXNoY3R4ID0gRVZQX01EX0NUWF9uZXco KTsKKysgICAgaWYgKGhhc2hjdHggPT0gTlVMTCkKKysgICAgICAgIGdvdG8gZXJyOworKyAgICBp ZiAoRVZQX0RpZ2VzdEluaXRfZXgoaGFzaGN0eCwgRVZQX3NoYWtlMjU2KCksIE5VTEwpICE9IDEp CisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9EaWdlc3RVcGRhdGUoaGFzaGN0eCwg cHJpdmtleSwgNTcpICE9IDEpCisrICAgICAgICBnb3RvIGVycjsKKysgICAgaWYgKEVWUF9EaWdl c3RGaW5hbFhPRihoYXNoY3R4LCBidWZmLCBzaXplb2YoYnVmZikpICE9IDEpCisrICAgICAgICBn b3RvIGVycjsKKysKKysgICAgYnVmZlswXSAmPSAtNDsKKysgICAgYnVmZls1NV0gfD0gMHg4MDsK KysgICAgYnVmZls1Nl0gPSAwOworKworKyAgICBpZiAoczM5MHhfZWQ0NDhfbXVsKHhfZHN0LCBw dWJrZXksCisrICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yX3gsIGdlbmVyYXRvcl95 LCBidWZmKSAhPSAxKQorKyAgICAgICAgZ290byBlcnI7CisrCisrICAgIHB1YmtleVs1Nl0gfD0g KCh4X2RzdFswXSAmIDB4MDEpIDw8IDcpOworKworKyAgICBFVlBfUEtFWV9hc3NpZ24ocGtleSwg Y3R4LT5wbWV0aC0+cGtleV9pZCwga2V5KTsKKysgICAgRVZQX01EX0NUWF9mcmVlKGhhc2hjdHgp OworKyAgICByZXR1cm4gMTsKKysgZXJyOgorKyAgICBPUEVOU1NMX3NlY3VyZV9jbGVhcl9mcmVl KHByaXZrZXksIEVENDQ4X0tFWUxFTik7CisrICAgIGtleS0+cHJpdmtleSA9IE5VTEw7CisrICAg IE9QRU5TU0xfZnJlZShrZXkpOworKyAgICBFVlBfTURfQ1RYX2ZyZWUoaGFzaGN0eCk7CisrICAg IHJldHVybiAwOworK30KKysKKytzdGF0aWMgaW50IHMzOTB4X3BrZXlfZWN4X2Rlcml2ZTI1NTE5 KEVWUF9QS0VZX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICprZXksCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmtleWxlbikKKyt7CisrICAgIGNvbnN0IHVu c2lnbmVkIGNoYXIgKnByaXZrZXksICpwdWJrZXk7CisrCisrICAgIGlmICghdmFsaWRhdGVfZWN4 X2Rlcml2ZShjdHgsIGtleSwga2V5bGVuLCAmcHJpdmtleSwgJnB1YmtleSkpCisrICAgICAgICBy ZXR1cm4gMDsKKysKKysgICAgaWYgKGtleSAhPSBOVUxMKQorKyAgICAgICAgcmV0dXJuIHMzOTB4 X3gyNTUxOV9tdWwoa2V5LCBwdWJrZXksIHByaXZrZXkpOworKworKyAgICAqa2V5bGVuID0gWDI1 NTE5X0tFWUxFTjsKKysgICAgcmV0dXJuIDE7CisrfQorKworK3N0YXRpYyBpbnQgczM5MHhfcGtl eV9lY3hfZGVyaXZlNDQ4KEVWUF9QS0VZX0NUWCAqY3R4LCB1bnNpZ25lZCBjaGFyICprZXksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmtleWxlbikKKyt7 CisrICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnByaXZrZXksICpwdWJrZXk7CisrCisrICAgIGlm ICghdmFsaWRhdGVfZWN4X2Rlcml2ZShjdHgsIGtleSwga2V5bGVuLCAmcHJpdmtleSwgJnB1Ymtl eSkpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgaWYgKGtleSAhPSBOVUxMKQorKyAgICAg ICAgcmV0dXJuIHMzOTB4X3g0NDhfbXVsKGtleSwgcHVia2V5LCBwcml2a2V5KTsKKysKKysgICAg KmtleWxlbiA9IFg0NDhfS0VZTEVOOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGlu dCBzMzkweF9wa2V5X2VjZF9kaWdlc3RzaWduMjU1MTkoRVZQX01EX0NUWCAqY3R4LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKnNpZywg c2l6ZV90ICpzaWdsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCB0YnNsZW4pCisreworKyAgICB1bmlvbiB7CisrICAgICAg ICBzdHJ1Y3QgeworKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2lnWzY0XTsKKysgICAgICAg ICAgICB1bnNpZ25lZCBjaGFyIHByaXZbMzJdOworKyAgICAgICAgfSBlZDI1NTE5OworKyAgICAg ICAgdW5zaWduZWQgbG9uZyBsb25nIGJ1ZmZbNTEyXTsKKysgICAgfSBwYXJhbTsKKysgICAgY29u c3QgRUNYX0tFWSAqZWRrZXkgPSBFVlBfTURfQ1RYX3BrZXlfY3R4KGN0eCktPnBrZXktPnBrZXku ZWN4OworKyAgICBpbnQgcmM7CisrCisrICAgIGlmIChzaWcgPT0gTlVMTCkgeworKyAgICAgICAg KnNpZ2xlbiA9IEVEMjU1MTlfU0lHU0laRTsKKysgICAgICAgIHJldHVybiAxOworKyAgICB9Cisr CisrICAgIGlmICgqc2lnbGVuIDwgRUQyNTUxOV9TSUdTSVpFKSB7CisrICAgICAgICBFQ2VycihF Q19GX1MzOTBYX1BLRVlfRUNEX0RJR0VTVFNJR04yNTUxOSwgRUNfUl9CVUZGRVJfVE9PX1NNQUxM KTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIG1lbXNldCgmcGFyYW0sIDAs IHNpemVvZihwYXJhbSkpOworKyAgICBtZW1jcHkocGFyYW0uZWQyNTUxOS5wcml2LCBlZGtleS0+ cHJpdmtleSwgc2l6ZW9mKHBhcmFtLmVkMjU1MTkucHJpdikpOworKworKyAgICByYyA9IHMzOTB4 X2tkc2EoUzM5MFhfRUREU0FfU0lHTl9FRDI1NTE5LCAmcGFyYW0uZWQyNTUxOSwgdGJzLCB0YnNs ZW4pOworKyAgICBPUEVOU1NMX2NsZWFuc2UocGFyYW0uZWQyNTUxOS5wcml2LCBzaXplb2YocGFy YW0uZWQyNTUxOS5wcml2KSk7CisrICAgIGlmIChyYyAhPSAwKQorKyAgICAgICAgcmV0dXJuIDA7 CisrCisrICAgIHMzOTB4X2ZsaXBfZW5kaWFuMzIoc2lnLCBwYXJhbS5lZDI1NTE5LnNpZyk7Cisr ICAgIHMzOTB4X2ZsaXBfZW5kaWFuMzIoc2lnICsgMzIsIHBhcmFtLmVkMjU1MTkuc2lnICsgMzIp OworKworKyAgICAqc2lnbGVuID0gRUQyNTUxOV9TSUdTSVpFOworKyAgICByZXR1cm4gMTsKKyt9 CisrCisrc3RhdGljIGludCBzMzkweF9wa2V5X2VjZF9kaWdlc3RzaWduNDQ4KEVWUF9NRF9DVFgg KmN0eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg Y2hhciAqc2lnLCBzaXplX3QgKnNpZ2xlbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGJzLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdGJzbGVuKQorK3sKKysgICAgdW5pb24gewor KyAgICAgICAgc3RydWN0IHsKKysgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHNpZ1sxMjhdOwor KyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgcHJpdls2NF07CisrICAgICAgICB9IGVkNDQ4Owor KyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGJ1ZmZbNTEyXTsKKysgICAgfSBwYXJhbTsKKysg ICAgY29uc3QgRUNYX0tFWSAqZWRrZXkgPSBFVlBfTURfQ1RYX3BrZXlfY3R4KGN0eCktPnBrZXkt PnBrZXkuZWN4OworKyAgICBpbnQgcmM7CisrCisrICAgIGlmIChzaWcgPT0gTlVMTCkgeworKyAg ICAgICAgKnNpZ2xlbiA9IEVENDQ4X1NJR1NJWkU7CisrICAgICAgICByZXR1cm4gMTsKKysgICAg fQorKworKyAgICBpZiAoKnNpZ2xlbiA8IEVENDQ4X1NJR1NJWkUpIHsKKysgICAgICAgIEVDZXJy KEVDX0ZfUzM5MFhfUEtFWV9FQ0RfRElHRVNUU0lHTjQ0OCwgRUNfUl9CVUZGRVJfVE9PX1NNQUxM KTsKKysgICAgICAgIHJldHVybiAwOworKyAgICB9CisrCisrICAgIG1lbXNldCgmcGFyYW0sIDAs IHNpemVvZihwYXJhbSkpOworKyAgICBtZW1jcHkocGFyYW0uZWQ0NDgucHJpdiArIDY0IC0gNTcs IGVka2V5LT5wcml2a2V5LCA1Nyk7CisrCisrICAgIHJjID0gczM5MHhfa2RzYShTMzkwWF9FRERT QV9TSUdOX0VENDQ4LCAmcGFyYW0uZWQ0NDgsIHRicywgdGJzbGVuKTsKKysgICAgT1BFTlNTTF9j bGVhbnNlKHBhcmFtLmVkNDQ4LnByaXYsIHNpemVvZihwYXJhbS5lZDQ0OC5wcml2KSk7CisrICAg IGlmIChyYyAhPSAwKQorKyAgICAgICAgcmV0dXJuIDA7CisrCisrICAgIHMzOTB4X2ZsaXBfZW5k aWFuNjQocGFyYW0uZWQ0NDguc2lnLCBwYXJhbS5lZDQ0OC5zaWcpOworKyAgICBzMzkweF9mbGlw X2VuZGlhbjY0KHBhcmFtLmVkNDQ4LnNpZyArIDY0LCBwYXJhbS5lZDQ0OC5zaWcgKyA2NCk7Cisr ICAgIG1lbWNweShzaWcsIHBhcmFtLmVkNDQ4LnNpZywgNTcpOworKyAgICBtZW1jcHkoc2lnICsg NTcsIHBhcmFtLmVkNDQ4LnNpZyArIDY0LCA1Nyk7CisrCisrICAgICpzaWdsZW4gPSBFRDQ0OF9T SUdTSVpFOworKyAgICByZXR1cm4gMTsKKyt9CisrCisrc3RhdGljIGludCBzMzkweF9wa2V5X2Vj ZF9kaWdlc3R2ZXJpZnkyNTUxOShFVlBfTURfQ1RYICpjdHgsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaWcsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgc2lnbGVuLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqdGJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2l6ZV90IHRic2xlbikKKyt7CisrICAgIHVuaW9uIHsKKysgICAgICAgIHN0cnVjdCB7Cisr ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBzaWdbNjRdOworKyAgICAgICAgICAgIHVuc2lnbmVk IGNoYXIgcHViWzMyXTsKKysgICAgICAgIH0gZWQyNTUxOTsKKysgICAgICAgIHVuc2lnbmVkIGxv bmcgbG9uZyBidWZmWzUxMl07CisrICAgIH0gcGFyYW07CisrICAgIGNvbnN0IEVDWF9LRVkgKmVk a2V5ID0gRVZQX01EX0NUWF9wa2V5X2N0eChjdHgpLT5wa2V5LT5wa2V5LmVjeDsKKysKKysgICAg aWYgKHNpZ2xlbiAhPSBFRDI1NTE5X1NJR1NJWkUpCisrICAgICAgICByZXR1cm4gMDsKKysKKysg ICAgbWVtc2V0KCZwYXJhbSwgMCwgc2l6ZW9mKHBhcmFtKSk7CisrICAgIHMzOTB4X2ZsaXBfZW5k aWFuMzIocGFyYW0uZWQyNTUxOS5zaWcsIHNpZyk7CisrICAgIHMzOTB4X2ZsaXBfZW5kaWFuMzIo cGFyYW0uZWQyNTUxOS5zaWcgKyAzMiwgc2lnICsgMzIpOworKyAgICBzMzkweF9mbGlwX2VuZGlh bjMyKHBhcmFtLmVkMjU1MTkucHViLCBlZGtleS0+cHVia2V5KTsKKysKKysgICAgcmV0dXJuIHMz OTB4X2tkc2EoUzM5MFhfRUREU0FfVkVSSUZZX0VEMjU1MTksCisrICAgICAgICAgICAgICAgICAg ICAgICZwYXJhbS5lZDI1NTE5LCB0YnMsIHRic2xlbikgPT0gMCA/IDEgOiAwOworK30KKysKKytz dGF0aWMgaW50IHMzOTB4X3BrZXlfZWNkX2RpZ2VzdHZlcmlmeTQ0OChFVlBfTURfQ1RYICpjdHgs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWdu ZWQgY2hhciAqc2lnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCBzaWdsZW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgdW5zaWduZWQgY2hhciAqdGJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCB0YnNsZW4pCisreworKyAgICB1bmlvbiB7CisrICAgICAg ICBzdHJ1Y3QgeworKyAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2lnWzEyOF07CisrICAgICAg ICAgICAgdW5zaWduZWQgY2hhciBwdWJbNjRdOworKyAgICAgICAgfSBlZDQ0ODsKKysgICAgICAg IHVuc2lnbmVkIGxvbmcgbG9uZyBidWZmWzUxMl07CisrICAgIH0gcGFyYW07CisrICAgIGNvbnN0 IEVDWF9LRVkgKmVka2V5ID0gRVZQX01EX0NUWF9wa2V5X2N0eChjdHgpLT5wa2V5LT5wa2V5LmVj eDsKKysKKysgICAgaWYgKHNpZ2xlbiAhPSBFRDQ0OF9TSUdTSVpFKQorKyAgICAgICAgcmV0dXJu IDA7CisrCisrICAgIG1lbXNldCgmcGFyYW0sIDAsIHNpemVvZihwYXJhbSkpOworKyAgICBtZW1j cHkocGFyYW0uZWQ0NDguc2lnLCBzaWcsIDU3KTsKKysgICAgczM5MHhfZmxpcF9lbmRpYW42NChw YXJhbS5lZDQ0OC5zaWcsIHBhcmFtLmVkNDQ4LnNpZyk7CisrICAgIG1lbWNweShwYXJhbS5lZDQ0 OC5zaWcgKyA2NCwgc2lnICsgNTcsIDU3KTsKKysgICAgczM5MHhfZmxpcF9lbmRpYW42NChwYXJh bS5lZDQ0OC5zaWcgKyA2NCwgcGFyYW0uZWQ0NDguc2lnICsgNjQpOworKyAgICBtZW1jcHkocGFy YW0uZWQ0NDgucHViLCBlZGtleS0+cHVia2V5LCA1Nyk7CisrICAgIHMzOTB4X2ZsaXBfZW5kaWFu NjQocGFyYW0uZWQ0NDgucHViLCBwYXJhbS5lZDQ0OC5wdWIpOworKworKyAgICByZXR1cm4gczM5 MHhfa2RzYShTMzkwWF9FRERTQV9WRVJJRllfRUQ0NDgsCisrICAgICAgICAgICAgICAgICAgICAg ICZwYXJhbS5lZDQ0OCwgdGJzLCB0YnNsZW4pID09IDAgPyAxIDogMDsKKyt9CisrCisrc3RhdGlj IGNvbnN0IEVWUF9QS0VZX01FVEhPRCBlY3gyNTUxOV9zMzkweF9wa2V5X21ldGggPSB7CisrICAg IEVWUF9QS0VZX1gyNTUxOSwKKysgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKysgICAgczM5MHhf cGtleV9lY3hfa2V5Z2VuMjU1MTksCisrICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs IDAsIDAsIDAsIDAsIDAsCisrICAgIHMzOTB4X3BrZXlfZWN4X2Rlcml2ZTI1NTE5LAorKyAgICBw a2V5X2VjeF9jdHJsLAorKyAgICAwCisrfTsKKysKKytzdGF0aWMgY29uc3QgRVZQX1BLRVlfTUVU SE9EIGVjeDQ0OF9zMzkweF9wa2V5X21ldGggPSB7CisrICAgIEVWUF9QS0VZX1g0NDgsCisrICAg IDAsIDAsIDAsIDAsIDAsIDAsIDAsCisrICAgIHMzOTB4X3BrZXlfZWN4X2tleWdlbjQ0OCwKKysg ICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKysgICAgczM5 MHhfcGtleV9lY3hfZGVyaXZlNDQ4LAorKyAgICBwa2V5X2VjeF9jdHJsLAorKyAgICAwCisrfTsK KytzdGF0aWMgY29uc3QgRVZQX1BLRVlfTUVUSE9EIGVkMjU1MTlfczM5MHhfcGtleV9tZXRoID0g eworKyAgICBFVlBfUEtFWV9FRDI1NTE5LCBFVlBfUEtFWV9GTEFHX1NJR0NUWF9DVVNUT00sCisr ICAgIDAsIDAsIDAsIDAsIDAsIDAsCisrICAgIHMzOTB4X3BrZXlfZWNkX2tleWdlbjI1NTE5LAor KyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorKyAg ICBwa2V5X2VjZF9jdHJsLAorKyAgICAwLAorKyAgICBzMzkweF9wa2V5X2VjZF9kaWdlc3RzaWdu MjU1MTksCisrICAgIHMzOTB4X3BrZXlfZWNkX2RpZ2VzdHZlcmlmeTI1NTE5CisrfTsKKysKKytz dGF0aWMgY29uc3QgRVZQX1BLRVlfTUVUSE9EIGVkNDQ4X3MzOTB4X3BrZXlfbWV0aCA9IHsKKysg ICAgRVZQX1BLRVlfRUQ0NDgsIEVWUF9QS0VZX0ZMQUdfU0lHQ1RYX0NVU1RPTSwKKysgICAgMCwg MCwgMCwgMCwgMCwgMCwKKysgICAgczM5MHhfcGtleV9lY2Rfa2V5Z2VuNDQ4LAorKyAgICAwLCAw LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorKyAgICBwa2V5X2Vj ZF9jdHJsLAorKyAgICAwLAorKyAgICBzMzkweF9wa2V5X2VjZF9kaWdlc3RzaWduNDQ4LAorKyAg ICBzMzkweF9wa2V5X2VjZF9kaWdlc3R2ZXJpZnk0NDgKKyt9OworKyNlbmRpZgorKworK2NvbnN0 IEVWUF9QS0VZX01FVEhPRCAqZWN4MjU1MTlfcGtleV9tZXRob2Qodm9pZCkKKyt7CisrI2lmZGVm IFMzOTBYX0VDX0FTTQorKyAgICBpZiAoT1BFTlNTTF9zMzkweGNhcF9QLnBjY1sxXSAmIFMzOTBY X0NBUEJJVChTMzkwWF9TQ0FMQVJfTVVMVElQTFlfWDI1NTE5KSkKKysgICAgICAgIHJldHVybiAm ZWN4MjU1MTlfczM5MHhfcGtleV9tZXRoOworKyNlbmRpZgorKyAgICByZXR1cm4gJmVjeDI1NTE5 X3BrZXlfbWV0aDsKKyt9CisrCisrY29uc3QgRVZQX1BLRVlfTUVUSE9EICplY3g0NDhfcGtleV9t ZXRob2Qodm9pZCkKKyt7CisrI2lmZGVmIFMzOTBYX0VDX0FTTQorKyAgICBpZiAoT1BFTlNTTF9z MzkweGNhcF9QLnBjY1sxXSAmIFMzOTBYX0NBUEJJVChTMzkwWF9TQ0FMQVJfTVVMVElQTFlfWDQ0 OCkpCisrICAgICAgICByZXR1cm4gJmVjeDQ0OF9zMzkweF9wa2V5X21ldGg7CisrI2VuZGlmCisr ICAgIHJldHVybiAmZWN4NDQ4X3BrZXlfbWV0aDsKKyt9CisrCisrY29uc3QgRVZQX1BLRVlfTUVU SE9EICplZDI1NTE5X3BrZXlfbWV0aG9kKHZvaWQpCisreworKyNpZmRlZiBTMzkwWF9FQ19BU00K KysgICAgaWYgKE9QRU5TU0xfczM5MHhjYXBfUC5wY2NbMV0gJiBTMzkwWF9DQVBCSVQoUzM5MFhf U0NBTEFSX01VTFRJUExZX0VEMjU1MTkpCisrICAgICAgICAmJiBPUEVOU1NMX3MzOTB4Y2FwX1Au a2RzYVswXSAmIFMzOTBYX0NBUEJJVChTMzkwWF9FRERTQV9TSUdOX0VEMjU1MTkpCisrICAgICAg ICAmJiBPUEVOU1NMX3MzOTB4Y2FwX1Aua2RzYVswXQorKyAgICAgICAgICAgICYgUzM5MFhfQ0FQ QklUKFMzOTBYX0VERFNBX1ZFUklGWV9FRDI1NTE5KSkKKysgICAgICAgIHJldHVybiAmZWQyNTUx OV9zMzkweF9wa2V5X21ldGg7CisrI2VuZGlmCisrICAgIHJldHVybiAmZWQyNTUxOV9wa2V5X21l dGg7CisrfQorKworK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqZWQ0NDhfcGtleV9tZXRob2Qodm9p ZCkKKyt7CisrI2lmZGVmIFMzOTBYX0VDX0FTTQorKyAgICBpZiAoT1BFTlNTTF9zMzkweGNhcF9Q LnBjY1sxXSAmIFMzOTBYX0NBUEJJVChTMzkwWF9TQ0FMQVJfTVVMVElQTFlfRUQ0NDgpCisrICAg ICAgICAmJiBPUEVOU1NMX3MzOTB4Y2FwX1Aua2RzYVswXSAmIFMzOTBYX0NBUEJJVChTMzkwWF9F RERTQV9TSUdOX0VENDQ4KQorKyAgICAgICAgJiYgT1BFTlNTTF9zMzkweGNhcF9QLmtkc2FbMF0g JiBTMzkwWF9DQVBCSVQoUzM5MFhfRUREU0FfVkVSSUZZX0VENDQ4KSkKKysgICAgICAgIHJldHVy biAmZWQ0NDhfczM5MHhfcGtleV9tZXRoOworKyNlbmRpZgorKyAgICByZXR1cm4gJmVkNDQ4X3Br ZXlfbWV0aDsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZXJyL29wZW5zc2wu dHh0LnMzOTB4LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZXJyL29wZW5zc2wudHh0CistLS0g b3BlbnNzbC0xLjEuMWcvY3J5cHRvL2Vyci9vcGVuc3NsLnR4dC5zMzkweC1lY2MJMjAyMC0wNS0x OCAxMjo0NTo0MC44MzQyMzQwNzkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZXJy L29wZW5zc2wudHh0CTIwMjAtMDUtMTggMTI6NDU6NDQuNTc1MjY2NTkyICswMjAwCitAQCAtNDk2 LDYgKzQ5NiwxMSBAQCBFQ19GX0VDRFNBX1NJR05fRVg6MjU0OkVDRFNBX3NpZ25fZXgKKyBFQ19G X0VDRFNBX1NJR05fU0VUVVA6MjQ4OkVDRFNBX3NpZ25fc2V0dXAKKyBFQ19GX0VDRFNBX1NJR19O RVc6MjY1OkVDRFNBX1NJR19uZXcKKyBFQ19GX0VDRFNBX1ZFUklGWToyNTM6RUNEU0FfdmVyaWZ5 CisrRUNfRl9FQ0RTQV9TSU1QTEVfU0lHTl9TRVRVUDozMTA6ZWNkc2Ffc2ltcGxlX3NpZ25fc2V0 dXAKKytFQ19GX0VDRFNBX1NJTVBMRV9TSUdOX1NJRzozMTE6ZWNkc2Ffc2ltcGxlX3NpZ25fc2ln CisrRUNfRl9FQ0RTQV9TSU1QTEVfVkVSSUZZX1NJRzozMTI6ZWNkc2Ffc2ltcGxlX3ZlcmlmeV9z aWcKKytFQ19GX0VDRFNBX1MzOTBYX05JU1RQX1NJR05fU0lHOjMxMzplY2RzYV9zMzkweF9uaXN0 cF9zaWduX3NpZworK0VDX0ZfRUNEU0FfUzM5MFhfTklTVFBfVkVSSUZZX1NJRzozMTQ6ZWNkc2Ff czM5MHhfbmlzdHBfdmVyaWZ5X3NpZworIEVDX0ZfRUNEX0lURU1fVkVSSUZZOjI3MDplY2RfaXRl bV92ZXJpZnkKKyBFQ19GX0VDS0VZX1BBUkFNMlRZUEU6MjIzOmVja2V5X3BhcmFtMnR5cGUKKyBF Q19GX0VDS0VZX1BBUkFNX0RFQ09ERToyMTI6ZWNrZXlfcGFyYW1fZGVjb2RlCitAQCAtNjU3LDYg KzY2Miw3IEBAIEVDX0ZfTklTVFA1MjFfUFJFX0NPTVBfTkVXOjIzNzpuaXN0cDUyMV8KKyBFQ19G X08ySV9FQ1BVQkxJQ0tFWToxNTI6bzJpX0VDUHVibGljS2V5CisgRUNfRl9PTERfRUNfUFJJVl9E RUNPREU6MjIyOm9sZF9lY19wcml2X2RlY29kZQorIEVDX0ZfT1NTTF9FQ0RIX0NPTVBVVEVfS0VZ OjI0Nzpvc3NsX2VjZGhfY29tcHV0ZV9rZXkKKytFQ19GX09TU0xfRUNEU0FfU0lHTl9TRVRVUDoz MDA6b3NzbF9lY2RzYV9zaWduX3NldHVwCisgRUNfRl9PU1NMX0VDRFNBX1NJR05fU0lHOjI0OTpv c3NsX2VjZHNhX3NpZ25fc2lnCisgRUNfRl9PU1NMX0VDRFNBX1ZFUklGWV9TSUc6MjUwOm9zc2xf ZWNkc2FfdmVyaWZ5X3NpZworIEVDX0ZfUEtFWV9FQ0RfQ1RSTDoyNzE6cGtleV9lY2RfY3RybAor QEAgLTY3Miw2ICs2NzgsMTIgQEAgRUNfRl9QS0VZX0VDX0tERl9ERVJJVkU6MjgzOnBrZXlfZWNf a2RmXworIEVDX0ZfUEtFWV9FQ19LRVlHRU46MTk5OnBrZXlfZWNfa2V5Z2VuCisgRUNfRl9QS0VZ X0VDX1BBUkFNR0VOOjIxOTpwa2V5X2VjX3BhcmFtZ2VuCisgRUNfRl9QS0VZX0VDX1NJR046MjE4 OnBrZXlfZWNfc2lnbgorK0VDX0ZfUzM5MFhfUEtFWV9FQ0RfRElHRVNUU0lHTjI1NTE5OjMwMzpz MzkweF9wa2V5X2VjZF9kaWdlc3RzaWduMjU1MTkKKytFQ19GX1MzOTBYX1BLRVlfRUNEX0RJR0VT VFNJR040NDg6MzA0OnMzOTB4X3BrZXlfZWNkX2RpZ2VzdHNpZ240NDgKKytFQ19GX1MzOTBYX1BL RVlfRUNEX0tFWUdFTjI1NTE5OjMwNTpzMzkweF9wa2V5X2VjZF9rZXlnZW4yNTUxOQorK0VDX0Zf UzM5MFhfUEtFWV9FQ0RfS0VZR0VONDQ4OjMwNjpzMzkweF9wa2V5X2VjZF9rZXlnZW40NDgKKytF Q19GX1MzOTBYX1BLRVlfRUNYX0tFWUdFTjI1NTE5OjMwNzpzMzkweF9wa2V5X2VjeF9rZXlnZW4y NTUxOQorK0VDX0ZfUzM5MFhfUEtFWV9FQ1hfS0VZR0VONDQ4OjMwODpzMzkweF9wa2V5X2VjeF9r ZXlnZW40NDgKKyBFQ19GX1ZBTElEQVRFX0VDWF9ERVJJVkU6Mjc4OnZhbGlkYXRlX2VjeF9kZXJp dmUKKyBFTkdJTkVfRl9ESUdFU1RfVVBEQVRFOjE5ODpkaWdlc3RfdXBkYXRlCisgRU5HSU5FX0Zf RFlOQU1JQ19DVFJMOjE4MDpkeW5hbWljX2N0cmwKK0BAIC0yMTYwLDYgKzIxNzIsNyBAQCBFQ19S X0JVRkZFUl9UT09fU01BTEw6MTAwOmJ1ZmZlciB0b28gc21hCisgRUNfUl9DQU5OT1RfSU5WRVJU OjE2NTpjYW5ub3QgaW52ZXJ0CisgRUNfUl9DT09SRElOQVRFU19PVVRfT0ZfUkFOR0U6MTQ2OmNv b3JkaW5hdGVzIG91dCBvZiByYW5nZQorIEVDX1JfQ1VSVkVfRE9FU19OT1RfU1VQUE9SVF9FQ0RI OjE2MDpjdXJ2ZSBkb2VzIG5vdCBzdXBwb3J0IGVjZGgKKytFQ19SX0NVUlZFX0RPRVNfTk9UX1NV UFBPUlRfRUNEU0E6MTcwOmN1cnZlIGRvZXMgbm90IHN1cHBvcnQgZWNkc2EKKyBFQ19SX0NVUlZF X0RPRVNfTk9UX1NVUFBPUlRfU0lHTklORzoxNTk6Y3VydmUgZG9lcyBub3Qgc3VwcG9ydCBzaWdu aW5nCisgRUNfUl9EMklfRUNQS1BBUkFNRVRFUlNfRkFJTFVSRToxMTc6ZDJpIGVjcGtwYXJhbWV0 ZXJzIGZhaWx1cmUKKyBFQ19SX0RFQ09ERV9FUlJPUjoxNDI6ZGVjb2RlIGVycm9yCitkaWZmIC11 cCBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZXZwL3BtZXRoX2xpYi5jLnMzOTB4LWVjYyBvcGVuc3Ns LTEuMS4xZy9jcnlwdG8vZXZwL3BtZXRoX2xpYi5jCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRv L2V2cC9wbWV0aF9saWIuYy5zMzkweC1lY2MJMjAyMC0wNS0xOCAxMjo0NTo0MC43ODcyMzM2NzEg KzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vZXZwL3BtZXRoX2xpYi5jCTIwMjAtMDUt MTggMTI6NDU6NDQuNTc2MjY2NjAxICswMjAwCitAQCAtMTcsNjAgKzE3LDY3IEBACisgI2luY2x1 ZGUgImNyeXB0by9ldnAuaCIKKyAjaW5jbHVkZSAiaW50ZXJuYWwvbnVtYmVycy5oIgorIAorK3R5 cGVkZWYgY29uc3QgRVZQX1BLRVlfTUVUSE9EICooKnBtZXRoX2ZuKSh2b2lkKTsKKyB0eXBlZGVm IGludCBza19jbXBfZm5fdHlwZShjb25zdCBjaGFyICpjb25zdCAqYSwgY29uc3QgY2hhciAqY29u c3QgKmIpOworIAorIHN0YXRpYyBTVEFDS19PRihFVlBfUEtFWV9NRVRIT0QpICphcHBfcGtleV9t ZXRob2RzID0gTlVMTDsKKyAKKyAvKiBUaGlzIGFycmF5IG5lZWRzIHRvIGJlIGluIG9yZGVyIG9m IE5JRHMgKi8KKy1zdGF0aWMgY29uc3QgRVZQX1BLRVlfTUVUSE9EICpzdGFuZGFyZF9tZXRob2Rz W10gPSB7Cisrc3RhdGljIHBtZXRoX2ZuIHN0YW5kYXJkX21ldGhvZHNbXSA9IHsKKyAjaWZuZGVm IE9QRU5TU0xfTk9fUlNBCistICAgICZyc2FfcGtleV9tZXRoLAorKyAgICByc2FfcGtleV9tZXRo b2QsCisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX0RICistICAgICZkaF9wa2V5X21ldGgs CisrICAgIGRoX3BrZXlfbWV0aG9kLAorICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19EU0EK Ky0gICAgJmRzYV9wa2V5X21ldGgsCisrICAgIGRzYV9wa2V5X21ldGhvZCwKKyAjZW5kaWYKKyAj aWZuZGVmIE9QRU5TU0xfTk9fRUMKKy0gICAgJmVjX3BrZXlfbWV0aCwKKysgICAgZWNfcGtleV9t ZXRob2QsCisgI2VuZGlmCistICAgICZobWFjX3BrZXlfbWV0aCwKKysgICAgaG1hY19wa2V5X21l dGhvZCwKKyAjaWZuZGVmIE9QRU5TU0xfTk9fQ01BQworLSAgICAmY21hY19wa2V5X21ldGgsCisr ICAgIGNtYWNfcGtleV9tZXRob2QsCisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX1JTQQor LSAgICAmcnNhX3Bzc19wa2V5X21ldGgsCisrICAgIHJzYV9wc3NfcGtleV9tZXRob2QsCisgI2Vu ZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX0RICistICAgICZkaHhfcGtleV9tZXRoLAorKyAgICBk aHhfcGtleV9tZXRob2QsCisgI2VuZGlmCisgI2lmbmRlZiBPUEVOU1NMX05PX1NDUllQVAorLSAg ICAmc2NyeXB0X3BrZXlfbWV0aCwKKysgICAgc2NyeXB0X3BrZXlfbWV0aG9kLAorICNlbmRpZgor LSAgICAmdGxzMV9wcmZfcGtleV9tZXRoLAorKyAgICB0bHMxX3ByZl9wa2V5X21ldGhvZCwKKyAj aWZuZGVmIE9QRU5TU0xfTk9fRUMKKy0gICAgJmVjeDI1NTE5X3BrZXlfbWV0aCwKKy0gICAgJmVj eDQ0OF9wa2V5X21ldGgsCisrICAgIGVjeDI1NTE5X3BrZXlfbWV0aG9kLAorKyAgICBlY3g0NDhf cGtleV9tZXRob2QsCisgI2VuZGlmCistICAgICZoa2RmX3BrZXlfbWV0aCwKKysgICAgaGtkZl9w a2V5X21ldGhvZCwKKyAjaWZuZGVmIE9QRU5TU0xfTk9fUE9MWTEzMDUKKy0gICAgJnBvbHkxMzA1 X3BrZXlfbWV0aCwKKysgICAgcG9seTEzMDVfcGtleV9tZXRob2QsCisgI2VuZGlmCisgI2lmbmRl ZiBPUEVOU1NMX05PX1NJUEhBU0gKKy0gICAgJnNpcGhhc2hfcGtleV9tZXRoLAorKyAgICBzaXBo YXNoX3BrZXlfbWV0aG9kLAorICNlbmRpZgorICNpZm5kZWYgT1BFTlNTTF9OT19FQworLSAgICAm ZWQyNTUxOV9wa2V5X21ldGgsCistICAgICZlZDQ0OF9wa2V5X21ldGgsCisrICAgIGVkMjU1MTlf cGtleV9tZXRob2QsCisrICAgIGVkNDQ4X3BrZXlfbWV0aG9kLAorICNlbmRpZgorICNpZm5kZWYg T1BFTlNTTF9OT19TTTIKKy0gICAgJnNtMl9wa2V5X21ldGgsCisrICAgIHNtMl9wa2V5X21ldGhv ZCwKKyAjZW5kaWYKKyB9OworIAorLURFQ0xBUkVfT0JKX0JTRUFSQ0hfQ01QX0ZOKGNvbnN0IEVW UF9QS0VZX01FVEhPRCAqLCBjb25zdCBFVlBfUEtFWV9NRVRIT0QgKiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICBwbWV0aCk7CisrREVDTEFSRV9PQkpfQlNFQVJDSF9DTVBfRk4oY29uc3Qg RVZQX1BLRVlfTUVUSE9EICosIHBtZXRoX2ZuLCBwbWV0aF9mdW5jKTsKKysKKytzdGF0aWMgaW50 IHBtZXRoX2Z1bmNfY21wKGNvbnN0IEVWUF9QS0VZX01FVEhPRCAqY29uc3QgKmEsIHBtZXRoX2Zu IGNvbnN0ICpiKQorK3sKKysgICAgcmV0dXJuICgoKmEpLT5wa2V5X2lkIC0gKCgqKmIpKCkpLT5w a2V5X2lkKTsKKyt9CisrCisrSU1QTEVNRU5UX09CSl9CU0VBUkNIX0NNUF9GTihjb25zdCBFVlBf UEtFWV9NRVRIT0QgKiwgcG1ldGhfZm4sIHBtZXRoX2Z1bmMpOworIAorIHN0YXRpYyBpbnQgcG1l dGhfY21wKGNvbnN0IEVWUF9QS0VZX01FVEhPRCAqY29uc3QgKmEsCisgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgRVZQX1BLRVlfTUVUSE9EICpjb25zdCAqYikKK0BAIC03OCwxMyArODUsMTEg QEAgc3RhdGljIGludCBwbWV0aF9jbXAoY29uc3QgRVZQX1BLRVlfTUVUSAorICAgICByZXR1cm4g KCgqYSktPnBrZXlfaWQgLSAoKmIpLT5wa2V5X2lkKTsKKyB9CisgCistSU1QTEVNRU5UX09CSl9C U0VBUkNIX0NNUF9GTihjb25zdCBFVlBfUEtFWV9NRVRIT0QgKiwgY29uc3QgRVZQX1BLRVlfTUVU SE9EICosCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbWV0aCk7CistCisgY29uc3Qg RVZQX1BLRVlfTUVUSE9EICpFVlBfUEtFWV9tZXRoX2ZpbmQoaW50IHR5cGUpCisgeworKyAgICBw bWV0aF9mbiAqcmV0OworICAgICBFVlBfUEtFWV9NRVRIT0QgdG1wOworLSAgICBjb25zdCBFVlBf UEtFWV9NRVRIT0QgKnQgPSAmdG1wLCAqKnJldDsKKysgICAgY29uc3QgRVZQX1BLRVlfTUVUSE9E ICp0ID0gJnRtcDsKKyAgICAgdG1wLnBrZXlfaWQgPSB0eXBlOworICAgICBpZiAoYXBwX3BrZXlf bWV0aG9kcykgeworICAgICAgICAgaW50IGlkeDsKK0BAIC05MiwxMiArOTcsMTIgQEAgY29uc3Qg RVZQX1BLRVlfTUVUSE9EICpFVlBfUEtFWV9tZXRoX2ZpbgorICAgICAgICAgaWYgKGlkeCA+PSAw KQorICAgICAgICAgICAgIHJldHVybiBza19FVlBfUEtFWV9NRVRIT0RfdmFsdWUoYXBwX3BrZXlf bWV0aG9kcywgaWR4KTsKKyAgICAgfQorLSAgICByZXQgPSBPQkpfYnNlYXJjaF9wbWV0aCgmdCwg c3RhbmRhcmRfbWV0aG9kcywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0 YW5kYXJkX21ldGhvZHMpIC8KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEVW UF9QS0VZX01FVEhPRCAqKSk7CisrICAgIHJldCA9IE9CSl9ic2VhcmNoX3BtZXRoX2Z1bmMoJnQs IHN0YW5kYXJkX21ldGhvZHMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6 ZW9mKHN0YW5kYXJkX21ldGhvZHMpIC8KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaXplb2YocG1ldGhfZm4pKTsKKyAgICAgaWYgKCFyZXQgfHwgISpyZXQpCisgICAgICAgICBy ZXR1cm4gTlVMTDsKKy0gICAgcmV0dXJuICpyZXQ7CisrICAgIHJldHVybiAoKipyZXQpKCk7Cisg fQorIAorIHN0YXRpYyBFVlBfUEtFWV9DVFggKmludF9jdHhfbmV3KEVWUF9QS0VZICpwa2V5LCBF TkdJTkUgKmUsIGludCBpZCkKK0BAIC0zNDgsNyArMzUzLDcgQEAgc2l6ZV90IEVWUF9QS0VZX21l dGhfZ2V0X2NvdW50KHZvaWQpCisgY29uc3QgRVZQX1BLRVlfTUVUSE9EICpFVlBfUEtFWV9tZXRo X2dldDAoc2l6ZV90IGlkeCkKKyB7CisgICAgIGlmIChpZHggPCBPU1NMX05FTEVNKHN0YW5kYXJk X21ldGhvZHMpKQorLSAgICAgICAgcmV0dXJuIHN0YW5kYXJkX21ldGhvZHNbaWR4XTsKKysgICAg ICAgIHJldHVybiAoc3RhbmRhcmRfbWV0aG9kc1tpZHhdKSgpOworICAgICBpZiAoYXBwX3BrZXlf bWV0aG9kcyA9PSBOVUxMKQorICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgIGlkeCAtPSBPU1NM X05FTEVNKHN0YW5kYXJkX21ldGhvZHMpOworZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRv L2htYWMvaG1fcG1ldGguYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2htYWMvaG1f cG1ldGguYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9obWFjL2htX3BtZXRoLmMuczM5MHgt ZWNjCTIwMjAtMDUtMTggMTI6NDU6NDAuNzk2MjMzNzQ5ICswMjAwCisrKysgb3BlbnNzbC0xLjEu MWcvY3J5cHRvL2htYWMvaG1fcG1ldGguYwkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU3NjI2NjYwMSAr MDIwMAorQEAgLTIxMCwzICsyMTAsOCBAQCBjb25zdCBFVlBfUEtFWV9NRVRIT0QgaG1hY19wa2V5 X21ldGggPSB7CisgICAgIHBrZXlfaG1hY19jdHJsLAorICAgICBwa2V5X2htYWNfY3RybF9zdHIK KyB9OworKworK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqaG1hY19wa2V5X21ldGhvZCh2b2lkKQor K3sKKysgICAgcmV0dXJuICZobWFjX3BrZXlfbWV0aDsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEu MS4xZy9jcnlwdG8va2RmL2hrZGYuYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2tk Zi9oa2RmLmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8va2RmL2hrZGYuYy5zMzkweC1lY2MJ MjAyMC0wNS0xOCAxMjo0NTo0MC44MjYyMzQwMDkgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9j cnlwdG8va2RmL2hrZGYuYwkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU3NzI2NjYwOSArMDIwMAorQEAg LTIzMyw2ICsyMzMsMTEgQEAgY29uc3QgRVZQX0tERl9NRVRIT0QgaGtkZl9rZGZfbWV0aCA9IHsK KyAgICAga2RmX2hrZGZfZGVyaXZlCisgfTsKKyAKKytjb25zdCBFVlBfUEtFWV9NRVRIT0QgKmhr ZGZfcGtleV9tZXRob2Qodm9pZCkKKyt7CisrICAgIHJldHVybiAmaGtkZl9wa2V5X21ldGg7Cisr fQorKworIHN0YXRpYyBpbnQgSEtERihjb25zdCBFVlBfTUQgKmV2cF9tZCwKKyAgICAgICAgICAg ICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2FsdCwgc2l6ZV90IHNhbHRfbGVuLAorICAgICAg ICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICprZXksIHNpemVfdCBrZXlfbGVuLAorZGlm ZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2tkZi9zY3J5cHQuYy5zMzkweC1lY2Mgb3BlbnNz bC0xLjEuMWcvY3J5cHRvL2tkZi9zY3J5cHQuYworLS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9r ZGYvc2NyeXB0LmMuczM5MHgtZWNjCTIwMjAtMDUtMTggMTI6NDU6NDAuODI3MjM0MDE4ICswMjAw CisrKysgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2tkZi9zY3J5cHQuYwkyMDIwLTA1LTE4IDEyOjQ1 OjQ0LjU3ODI2NjYxOCArMDIwMAorQEAgLTUwNCw0ICs1MDQsOSBAQCBzdGF0aWMgaW50IHNjcnlw dF9hbGcoY29uc3QgY2hhciAqcGFzcywKKyAgICAgcmV0dXJuIHJ2OworIH0KKyAKKytjb25zdCBF VlBfUEtFWV9NRVRIT0QgKnNjcnlwdF9wa2V5X21ldGhvZCh2b2lkKQorK3sKKysgICAgcmV0dXJu ICZzY3J5cHRfcGtleV9tZXRoOworK30KKysKKyAjZW5kaWYKK2RpZmYgLXVwIG9wZW5zc2wtMS4x LjFnL2NyeXB0by9rZGYvdGxzMV9wcmYuYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvY3J5cHRv L2tkZi90bHMxX3ByZi5jCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRvL2tkZi90bHMxX3ByZi5j LnMzOTB4LWVjYwkyMDIwLTA1LTE4IDEyOjQ1OjQwLjgyODIzNDAyNyArMDIwMAorKysrIG9wZW5z c2wtMS4xLjFnL2NyeXB0by9rZGYvdGxzMV9wcmYuYwkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU3ODI2 NjYxOCArMDIwMAorQEAgLTE2OCw2ICsxNjgsMTEgQEAgY29uc3QgRVZQX0tERl9NRVRIT0QgdGxz MV9wcmZfa2RmX21ldGggPQorICAgICBrZGZfdGxzMV9wcmZfZGVyaXZlCisgfTsKKyAKKytjb25z dCBFVlBfUEtFWV9NRVRIT0QgKnRsczFfcHJmX3BrZXlfbWV0aG9kKHZvaWQpCisreworKyAgICBy ZXR1cm4gJnRsczFfcHJmX3BrZXlfbWV0aDsKKyt9CisrCisgc3RhdGljIGludCB0bHMxX3ByZl9Q X2hhc2goY29uc3QgRVZQX01EICptZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCB1bnNpZ25lZCBjaGFyICpzZWMsIHNpemVfdCBzZWNfbGVuLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlZWQsIHNpemVfdCBzZWVkX2xlbiwKK2Rp ZmYgLXVwIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9wb2x5MTMwNS9wb2x5MTMwNV9wbWV0aC5jLnMz OTB4LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vcG9seTEzMDUvcG9seTEzMDVfcG1ldGguYwor LS0tIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9wb2x5MTMwNS9wb2x5MTMwNV9wbWV0aC5jLnMzOTB4 LWVjYwkyMDIwLTA0LTIxIDE0OjIyOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4x LjFnL2NyeXB0by9wb2x5MTMwNS9wb2x5MTMwNV9wbWV0aC5jCTIwMjAtMDUtMTggMTI6NDU6NDQu NTc5MjY2NjI3ICswMjAwCitAQCAtMTkyLDMgKzE5Miw4IEBAIGNvbnN0IEVWUF9QS0VZX01FVEhP RCBwb2x5MTMwNV9wa2V5X21ldGgKKyAgICAgcGtleV9wb2x5MTMwNV9jdHJsLAorICAgICBwa2V5 X3BvbHkxMzA1X2N0cmxfc3RyCisgfTsKKysKKytjb25zdCBFVlBfUEtFWV9NRVRIT0QgKnBvbHkx MzA1X3BrZXlfbWV0aG9kKHZvaWQpCisreworKyAgICByZXR1cm4gJnBvbHkxMzA1X3BrZXlfbWV0 aDsKKyt9CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vcnNhL3JzYV9wbWV0aC5jLnMz OTB4LWVjYyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vcnNhL3JzYV9wbWV0aC5jCistLS0gb3BlbnNz bC0xLjEuMWcvY3J5cHRvL3JzYS9yc2FfcG1ldGguYy5zMzkweC1lY2MJMjAyMC0wNS0xOCAxMjo0 NTo0MC43OTgyMzM3NjYgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vcnNhL3JzYV9w bWV0aC5jCTIwMjAtMDUtMTggMTI6NDU6NDQuNTgwMjY2NjM1ICswMjAwCitAQCAtNzg5LDYgKzc4 OSwxMSBAQCBjb25zdCBFVlBfUEtFWV9NRVRIT0QgcnNhX3BrZXlfbWV0aCA9IHsKKyAgICAgcGtl eV9yc2FfY3RybF9zdHIKKyB9OworIAorK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqcnNhX3BrZXlf bWV0aG9kKHZvaWQpCisreworKyAgICByZXR1cm4gJnJzYV9wa2V5X21ldGg7CisrfQorKworIC8q CisgICogQ2FsbGVkIGZvciBQU1Mgc2lnbiBvciB2ZXJpZnkgaW5pdGlhbGlzYXRpb246IGNoZWNr cyBQU1MgcGFyYW1ldGVyCisgICogc2FuaXR5IGFuZCBzZXRzIGFueSByZXN0cmljdGlvbnMgb24g a2V5IHVzYWdlLgorQEAgLTg1OSwzICs4NjQsOCBAQCBjb25zdCBFVlBfUEtFWV9NRVRIT0QgcnNh X3Bzc19wa2V5X21ldGgKKyAgICAgcGtleV9yc2FfY3RybCwKKyAgICAgcGtleV9yc2FfY3RybF9z dHIKKyB9OworKworK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqcnNhX3Bzc19wa2V5X21ldGhvZCh2 b2lkKQorK3sKKysgICAgcmV0dXJuICZyc2FfcHNzX3BrZXlfbWV0aDsKKyt9CitkaWZmIC11cCBv cGVuc3NsLTEuMS4xZy9jcnlwdG8vczM5MHhfYXJjaC5oLnMzOTB4LWVjYyBvcGVuc3NsLTEuMS4x Zy9jcnlwdG8vczM5MHhfYXJjaC5oCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRvL3MzOTB4X2Fy Y2guaC5zMzkweC1lY2MJMjAyMC0wNS0xOCAxMjo0NTo0MC42MDMyMzIwNzIgKzAyMDAKKysrKyBv cGVuc3NsLTEuMS4xZy9jcnlwdG8vczM5MHhfYXJjaC5oCTIwMjAtMDUtMTggMTI6NDU6NDQuNTgw MjY2NjM1ICswMjAwCitAQCAtMjYsNiArMjYsMTIgQEAgdm9pZCBzMzkweF9rbWYoY29uc3QgdW5z aWduZWQgY2hhciAqaW4sCisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGZjLCB2b2lkICpw YXJhbSk7Cisgdm9pZCBzMzkweF9rbWEoY29uc3QgdW5zaWduZWQgY2hhciAqYWFkLCBzaXplX3Qg YWxlbiwgY29uc3QgdW5zaWduZWQgY2hhciAqaW4sCisgICAgICAgICAgICAgICAgc2l6ZV90IGxl biwgdW5zaWduZWQgY2hhciAqb3V0LCB1bnNpZ25lZCBpbnQgZmMsIHZvaWQgKnBhcmFtKTsKKytp bnQgczM5MHhfcGNjKHVuc2lnbmVkIGludCBmYywgdm9pZCAqcGFyYW0pOworK2ludCBzMzkweF9r ZHNhKHVuc2lnbmVkIGludCBmYywgdm9pZCAqcGFyYW0sIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlu LAorKyAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOworKworK3ZvaWQgczM5MHhfZmxpcF9lbmRp YW4zMih1bnNpZ25lZCBjaGFyIGRzdFszMl0sIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3JjWzMyXSk7 Cisrdm9pZCBzMzkweF9mbGlwX2VuZGlhbjY0KHVuc2lnbmVkIGNoYXIgZHN0WzY0XSwgY29uc3Qg dW5zaWduZWQgY2hhciBzcmNbNjRdKTsKKyAKKyAvKgorICAqIFRoZSBmaWVsZCBlbGVtZW50cyBv ZiBPUEVOU1NMX3MzOTB4Y2FwX1AgYXJlIHRoZSA2NC1iaXQgd29yZHMgcmV0dXJuZWQgYnkKK0BA IC00NSw2ICs1MSw4IEBAIHN0cnVjdCBPUEVOU1NMX3MzOTB4Y2FwX3N0IHsKKyAgICAgdW5zaWdu ZWQgbG9uZyBsb25nIGttZlsyXTsKKyAgICAgdW5zaWduZWQgbG9uZyBsb25nIHBybm9bMl07Cisg ICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBrbWFbMl07CisrICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBw Y2NbMl07CisrICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBrZHNhWzJdOworIH07CisgCisgZXh0ZXJu IHN0cnVjdCBPUEVOU1NMX3MzOTB4Y2FwX3N0IE9QRU5TU0xfczM5MHhjYXBfUDsKK0BAIC02Niwx MSArNzQsMTQgQEAgZXh0ZXJuIHN0cnVjdCBPUEVOU1NMX3MzOTB4Y2FwX3N0IE9QRU5TUworICMg ZGVmaW5lIFMzOTBYX0tNRgkJMHg5MAorICMgZGVmaW5lIFMzOTBYX1BSTk8JCTB4YTAKKyAjIGRl ZmluZSBTMzkwWF9LTUEJCTB4YjAKKysjIGRlZmluZSBTMzkwWF9QQ0MJCTB4YzAKKysjIGRlZmlu ZSBTMzkwWF9LRFNBCQkweGQwCisgCisgLyogRmFjaWxpdHkgQml0IE51bWJlcnMgKi8KKyAjIGRl ZmluZSBTMzkwWF9WWAkJMTI5CisgIyBkZWZpbmUgUzM5MFhfVlhECQkxMzQKKyAjIGRlZmluZSBT MzkwWF9WWEUJCTEzNQorKyMgZGVmaW5lIFMzOTBYX01TQTkJCTE1NQkvKiBtZXNzYWdlLXNlY3Vy aXR5LWFzc2lzdC1leHQuIDkgKi8KKyAKKyAvKiBGdW5jdGlvbiBDb2RlcyAqLworIAorQEAgLTk0 LDEwICsxMDUsMzIgQEAgZXh0ZXJuIHN0cnVjdCBPUEVOU1NMX3MzOTB4Y2FwX3N0IE9QRU5TUwor IC8qIHBybm8gKi8KKyAjIGRlZmluZSBTMzkwWF9UUk5HCQkxMTQKKyAKKysvKiBwY2MgKi8KKysj IGRlZmluZSBTMzkwWF9TQ0FMQVJfTVVMVElQTFlfUDI1Ngk2NAorKyMgZGVmaW5lIFMzOTBYX1ND QUxBUl9NVUxUSVBMWV9QMzg0CTY1CisrIyBkZWZpbmUgUzM5MFhfU0NBTEFSX01VTFRJUExZX1A1 MjEJNjYKKysjIGRlZmluZSBTMzkwWF9TQ0FMQVJfTVVMVElQTFlfRUQyNTUxOSAgNzIKKysjIGRl ZmluZSBTMzkwWF9TQ0FMQVJfTVVMVElQTFlfRUQ0NDggICAgNzMKKysjIGRlZmluZSBTMzkwWF9T Q0FMQVJfTVVMVElQTFlfWDI1NTE5ICAgODAKKysjIGRlZmluZSBTMzkwWF9TQ0FMQVJfTVVMVElQ TFlfWDQ0OCAgICAgODEKKysKKysvKiBrZHNhICovCisrIyBkZWZpbmUgUzM5MFhfRUNEU0FfVkVS SUZZX1AyNTYJMQorKyMgZGVmaW5lIFMzOTBYX0VDRFNBX1ZFUklGWV9QMzg0CTIKKysjIGRlZmlu ZSBTMzkwWF9FQ0RTQV9WRVJJRllfUDUyMQkzCisrIyBkZWZpbmUgUzM5MFhfRUNEU0FfU0lHTl9Q MjU2CQk5CisrIyBkZWZpbmUgUzM5MFhfRUNEU0FfU0lHTl9QMzg0CQkxMAorKyMgZGVmaW5lIFMz OTBYX0VDRFNBX1NJR05fUDUyMQkJMTEKKysjIGRlZmluZSBTMzkwWF9FRERTQV9WRVJJRllfRUQy NTUxOSAgICAgMzIKKysjIGRlZmluZSBTMzkwWF9FRERTQV9WRVJJRllfRUQ0NDggICAgICAgMzYK KysjIGRlZmluZSBTMzkwWF9FRERTQV9TSUdOX0VEMjU1MTkgICAgICAgNDAKKysjIGRlZmluZSBT MzkwWF9FRERTQV9TSUdOX0VENDQ4ICAgICAgICAgNDQKKysKKyAvKiBSZWdpc3RlciAwIEZsYWdz ICovCisgIyBkZWZpbmUgUzM5MFhfREVDUllQVAkJMHg4MAorICMgZGVmaW5lIFMzOTBYX0tNQV9M UEMJCTB4MTAwCisgIyBkZWZpbmUgUzM5MFhfS01BX0xBQUQJCTB4MjAwCisgIyBkZWZpbmUgUzM5 MFhfS01BX0hTCQkweDQwMAorKyMgZGVmaW5lIFMzOTBYX0tEU0FfRAkJMHg4MAorIAorICNlbmRp ZgorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL3MzOTB4Y3B1aWQucGwuczM5MHgtZWNj IG9wZW5zc2wtMS4xLjFnL2NyeXB0by9zMzkweGNwdWlkLnBsCistLS0gb3BlbnNzbC0xLjEuMWcv Y3J5cHRvL3MzOTB4Y3B1aWQucGwuczM5MHgtZWNjCTIwMjAtMDQtMjEgMTQ6MjI6MzkuMDAwMDAw MDAwICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWcvY3J5cHRvL3MzOTB4Y3B1aWQucGwJMjAyMC0w NS0xOCAxMjo0NTo0NC41ODEyNjY2NDQgKzAyMDAKK0BAIC01OCw2ICs1OCwxMCBAQCBPUEVOU1NM X3MzOTB4X2ZhY2lsaXRpZXM6CisgCXN0ZwklcjAsUzM5MFhfUFJOTys4KCVyNCkKKyAJc3RnCSVy MCxTMzkwWF9LTUEoJXI0KQorIAlzdGcJJXIwLFMzOTBYX0tNQSs4KCVyNCkKKysJc3RnCSVyMCxT MzkwWF9QQ0MoJXI0KQorKwlzdGcJJXIwLFMzOTBYX1BDQys4KCVyNCkKKysJc3RnCSVyMCxTMzkw WF9LRFNBKCVyNCkKKysJc3RnCSVyMCxTMzkwWF9LRFNBKzgoJXI0KQorIAorIAkubG9uZwkweGIy YjA0MDAwCQkjIHN0ZmxlCTAoJXI0KQorIAlicmMJOCwuTGRvbmUKK0BAIC02OCw2ICs3Miw3IEBA IE9QRU5TU0xfczM5MHhfZmFjaWxpdGllczoKKyAJLmxvbmcJMHhiMmIwNDAwMAkJIyBzdGZsZSAw KCVyNCkKKyAuTGRvbmU6CisgCWxtZwklcjIsJXIzLFMzOTBYX1NURkxFKCVyNCkKKysKKyAJdG1o bAklcjIsMHg0MDAwCQkjIGNoZWNrIGZvciBtZXNzYWdlLXNlY3VyaXR5LWFzc2lzdAorIAlqegku THJldAorIAorQEAgLTkxLDYgKzk2LDEzIEBAIE9QRU5TU0xfczM5MHhfZmFjaWxpdGllczoKKyAJ bGEJJXIxLFMzOTBYX0tNQUMoJXI0KQorIAkubG9uZwkweGI5MWUwMDQyCQkjIGttYWMgJXI0LCVy MgorIAorKwl0bWhoCSVyMywweDAwMDgJCSMgY2hlY2sgZm9yIG1lc3NhZ2Utc2VjdXJpdHktYXNz aXN0LTMKKysJanoJLkxyZXQKKysKKysJbGdoaQklcjAsUzM5MFhfUVVFUlkJCSMgcXVlcnkgcGNj IGNhcGFiaWxpdHkgdmVjdG9yCisrCWxhCSVyMSxTMzkwWF9QQ0MoJXI0KQorKwkubG9uZwkweGI5 MmMwMDAwCQkjIHBjYworKworIAl0bWhoCSVyMywweDAwMDQJCSMgY2hlY2sgZm9yIG1lc3NhZ2Ut c2VjdXJpdHktYXNzaXN0LTQKKyAJanoJLkxyZXQKKyAKK0BAIC0xMTQsNiArMTI2LDcgQEAgT1BF TlNTTF9zMzkweF9mYWNpbGl0aWVzOgorIAkubG9uZwkweGI5M2MwMDQyCQkjIHBybm8gJXI0LCVy MgorIAorIAlsZwklcjIsUzM5MFhfU1RGTEUrMTYoJXI0KQorKworIAl0bWhsCSVyMiwweDIwMDAJ CSMgY2hlY2sgZm9yIG1lc3NhZ2Utc2VjdXJpdHktYXNzaXN0LTgKKyAJanoJLkxyZXQKKyAKK0BA IC0xMjEsNiArMTM0LDEzIEBAIE9QRU5TU0xfczM5MHhfZmFjaWxpdGllczoKKyAJbGEJJXIxLFMz OTBYX0tNQSglcjQpCisgCS5sb25nCTB4YjkyOTQwMjIJCSMga21hICVyMiwlcjQsJXIyCisgCisr CXRtaGwJJXIyLDB4MDAxMAkJIyBjaGVjayBmb3IgbWVzc2FnZS1zZWN1cml0eS1hc3Npc3QtOQor KwlqegkuTHJldAorKworKwlsZ2hpCSVyMCxTMzkwWF9RVUVSWQkJIyBxdWVyeSBrZHNhIGNhcGFi aWxpdHkgdmVjdG9yCisrCWxhCSVyMSxTMzkwWF9LRFNBKCVyNCkKKysJLmxvbmcJMHhiOTNhMDAw MgkJIyBrZHNhICVyMCwlcjIKKysKKyAuTHJldDoKKyAJYnIJJHJhCisgLnNpemUJT1BFTlNTTF9z MzkweF9mYWNpbGl0aWVzLC4tT1BFTlNTTF9zMzkweF9mYWNpbGl0aWVzCitAQCAtNDExLDYgKzQz MSwxMTMgQEAgczM5MHhfa21hOgorIF9fXworIH0KKyAKKysjIyMjIyMjIyMjIyMjIyMjCisrIyBp bnQgczM5MHhfcGNjKHVuc2lnbmVkIGludCBmYywgdm9pZCAqcGFyYW0pCisreworK215ICgkZmMs JHBhcmFtKSA9IG1hcCgiJXIkXyIsKDIuLjMpKTsKKyskY29kZS49PDxfX187CisrLmdsb2JsCXMz OTB4X3BjYworKy50eXBlCXMzOTB4X3BjYyxcQGZ1bmN0aW9uCisrLmFsaWduCTE2CisrczM5MHhf cGNjOgorKwlscgklcjAsJGZjCisrCWwke2d9cgklcjEsJHBhcmFtCisrCWxoaQklcjIsMAorKwor KwkubG9uZwkweGI5MmMwMDAwCSMgcGNjCisrCWJyYwkxLC4tNAkJIyBwYXkgYXR0ZW50aW9uIHRv ICJwYXJ0aWFsIGNvbXBsZXRpb24iCisrCWJyYwk3LC5McGNjX2VycgkjIGlmIENDPT0wIHJldHVy biAwLCBlbHNlIHJldHVybiAxCisrLkxwY2Nfb3V0OgorKwlicgkkcmEKKysuTHBjY19lcnI6Cisr CWxoaQklcjIsMQorKwlqCS5McGNjX291dAorKy5zaXplCXMzOTB4X3BjYywuLXMzOTB4X3BjYwor K19fXworK30KKysKKysjIyMjIyMjIyMjIyMjIyMjCisrIyBpbnQgczM5MHhfa2RzYSh1bnNpZ25l ZCBpbnQgZmMsIHZvaWQgKnBhcmFtLAorKyMgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQg Y2hhciAqaW4sIHNpemVfdCBsZW4pCisreworK215ICgkZmMsJHBhcmFtLCRpbiwkbGVuKSA9IG1h cCgiJXIkXyIsKDIuLjUpKTsKKyskY29kZS49PDxfX187CisrLmdsb2JsCXMzOTB4X2tkc2EKKysu dHlwZQlzMzkweF9rZHNhLFxAZnVuY3Rpb24KKysuYWxpZ24JMTYKKytzMzkweF9rZHNhOgorKwls cgklcjAsJGZjCisrCWwke2d9cgklcjEsJHBhcmFtCisrCWxoaQklcjIsMAorKworKwkubG9uZwkw eGI5M2EwMDA0CSMga2RzYSAlcjAsJGluCisrCWJyYwkxLC4tNAkJIyBwYXkgYXR0ZW50aW9uIHRv ICJwYXJ0aWFsIGNvbXBsZXRpb24iCisrCWJyYwk3LC5Ma2RzYV9lcnIJIyBpZiBDQz09MCByZXR1 cm4gMCwgZWxzZSByZXR1cm4gMQorKy5Ma2RzYV9vdXQ6CisrCWJyCSRyYQorKy5Ma2RzYV9lcnI6 CisrCWxoaQklcjIsMQorKwlqCS5Ma2RzYV9vdXQKKysuc2l6ZQlzMzkweF9rZHNhLC4tczM5MHhf a2RzYQorK19fXworK30KKysKKysjIyMjIyMjIyMjIyMjIyMjCisrIyB2b2lkIHMzOTB4X2ZsaXBf ZW5kaWFuMzIodW5zaWduZWQgY2hhciBkc3RbMzJdLCBjb25zdCB1bnNpZ25lZCBjaGFyIHNyY1sz Ml0pCisreworK215ICgkZHN0LCRzcmMpID0gbWFwKCIlciRfIiwoMi4uMykpOworKyRjb2RlLj08 PF9fXzsKKysuZ2xvYmwJczM5MHhfZmxpcF9lbmRpYW4zMgorKy50eXBlCXMzOTB4X2ZsaXBfZW5k aWFuMzIsXEBmdW5jdGlvbgorKy5hbGlnbgkxNgorK3MzOTB4X2ZsaXBfZW5kaWFuMzI6CisrCWxy dmcJJXIwLDAoJXIwLCRzcmMpCisrCWxydmcJJXIxLDgoJXIwLCRzcmMpCisrCWxydmcJJXI0LDE2 KCVyMCwkc3JjKQorKwlscnZnCSVyNSwyNCglcjAsJHNyYykKKysJc3RnCSVyMCwyNCglcjAsJGRz dCkKKysJc3RnCSVyMSwxNiglcjAsJGRzdCkKKysJc3RnCSVyNCw4KCVyMCwkZHN0KQorKwlzdGcJ JXI1LDAoJXIwLCRkc3QpCisrCWJyCSRyYQorKy5zaXplCXMzOTB4X2ZsaXBfZW5kaWFuMzIsLi1z MzkweF9mbGlwX2VuZGlhbjMyCisrX19fCisrfQorKworKyMjIyMjIyMjIyMjIyMjIyMKKysjIHZv aWQgczM5MHhfZmxpcF9lbmRpYW42NCh1bnNpZ25lZCBjaGFyIGRzdFs2NF0sIGNvbnN0IHVuc2ln bmVkIGNoYXIgc3JjWzY0XSkKKyt7CisrbXkgKCRkc3QsJHNyYykgPSBtYXAoIiVyJF8iLCgyLi4z KSk7CisrJGNvZGUuPTw8X19fOworKy5nbG9ibAlzMzkweF9mbGlwX2VuZGlhbjY0CisrLnR5cGUJ czM5MHhfZmxpcF9lbmRpYW42NCxcQGZ1bmN0aW9uCisrLmFsaWduCTE2CisrczM5MHhfZmxpcF9l bmRpYW42NDoKKysJc3RtZwklcjYsJXI5LDYqJFNJWkVfVCgkc3ApCisrCisrCWxydmcJJXIwLDAo JXIwLCRzcmMpCisrCWxydmcJJXIxLDgoJXIwLCRzcmMpCisrCWxydmcJJXI0LDE2KCVyMCwkc3Jj KQorKwlscnZnCSVyNSwyNCglcjAsJHNyYykKKysJbHJ2ZwklcjYsMzIoJXIwLCRzcmMpCisrCWxy dmcJJXI3LDQwKCVyMCwkc3JjKQorKwlscnZnCSVyOCw0OCglcjAsJHNyYykKKysJbHJ2Zwklcjks NTYoJXIwLCRzcmMpCisrCXN0ZwklcjAsNTYoJXIwLCRkc3QpCisrCXN0ZwklcjEsNDgoJXIwLCRk c3QpCisrCXN0ZwklcjQsNDAoJXIwLCRkc3QpCisrCXN0ZwklcjUsMzIoJXIwLCRkc3QpCisrCXN0 ZwklcjYsMjQoJXIwLCRkc3QpCisrCXN0ZwklcjcsMTYoJXIwLCRkc3QpCisrCXN0ZwklcjgsOCgl cjAsJGRzdCkKKysJc3RnCSVyOSwwKCVyMCwkZHN0KQorKworKwlsbWcJJXI2LCVyOSw2KiRTSVpF X1QoJHNwKQorKwlicgkkcmEKKysuc2l6ZQlzMzkweF9mbGlwX2VuZGlhbjY0LC4tczM5MHhfZmxp cF9lbmRpYW42NAorK19fXworK30KKysKKyAkY29kZS49PDxfX187CisgLnNlY3Rpb24JLmluaXQK KyAJYnJhc2wJJHJhLE9QRU5TU0xfY3B1aWRfc2V0dXAKK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFn L2NyeXB0by9zaXBoYXNoL3NpcGhhc2hfcG1ldGguYy5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcv Y3J5cHRvL3NpcGhhc2gvc2lwaGFzaF9wbWV0aC5jCistLS0gb3BlbnNzbC0xLjEuMWcvY3J5cHRv L3NpcGhhc2gvc2lwaGFzaF9wbWV0aC5jLnMzOTB4LWVjYwkyMDIwLTA0LTIxIDE0OjIyOjM5LjAw MDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9zaXBoYXNoL3NpcGhhc2hf cG1ldGguYwkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU4MTI2NjY0NCArMDIwMAorQEAgLTIwMywzICsy MDMsOCBAQCBjb25zdCBFVlBfUEtFWV9NRVRIT0Qgc2lwaGFzaF9wa2V5X21ldGgKKyAgICAgcGtl eV9zaXBoYXNoX2N0cmwsCisgICAgIHBrZXlfc2lwaGFzaF9jdHJsX3N0cgorIH07CisrCisrY29u c3QgRVZQX1BLRVlfTUVUSE9EICpzaXBoYXNoX3BrZXlfbWV0aG9kKHZvaWQpCisreworKyAgICBy ZXR1cm4gJnNpcGhhc2hfcGtleV9tZXRoOworK30KK2RpZmYgLXVwIG9wZW5zc2wtMS4xLjFnL2Ny eXB0by9zbTIvc20yX3BtZXRoLmMuczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2NyeXB0by9zbTIv c20yX3BtZXRoLmMKKy0tLSBvcGVuc3NsLTEuMS4xZy9jcnlwdG8vc20yL3NtMl9wbWV0aC5jLnMz OTB4LWVjYwkyMDIwLTA0LTIxIDE0OjIyOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wt MS4xLjFnL2NyeXB0by9zbTIvc20yX3BtZXRoLmMJMjAyMC0wNS0xOCAxMjo0NTo0NC41ODIyNjY2 NTMgKzAyMDAKK0BAIC0zMjcsMyArMzI3LDggQEAgY29uc3QgRVZQX1BLRVlfTUVUSE9EIHNtMl9w a2V5X21ldGggPSB7CisgCisgICAgIHBrZXlfc20yX2RpZ2VzdF9jdXN0b20KKyB9OworKworK2Nv bnN0IEVWUF9QS0VZX01FVEhPRCAqc20yX3BrZXlfbWV0aG9kKHZvaWQpCisreworKyAgICByZXR1 cm4gJnNtMl9wa2V5X21ldGg7CisrfQorZGlmZiAtdXAgb3BlbnNzbC0xLjEuMWcvaW5jbHVkZS9j cnlwdG8vZXZwLmguczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2luY2x1ZGUvY3J5cHRvL2V2cC5o CistLS0gb3BlbnNzbC0xLjEuMWcvaW5jbHVkZS9jcnlwdG8vZXZwLmguczM5MHgtZWNjCTIwMjAt MDUtMTggMTI6NDU6NDAuODM0MjM0MDc5ICswMjAwCisrKysgb3BlbnNzbC0xLjEuMWcvaW5jbHVk ZS9jcnlwdG8vZXZwLmgJMjAyMC0wNS0xOCAxMjo0NTo0NC41NzcyNjY2MDkgKzAyMDAKK0BAIC00 NTksMyArNDU5LDIyIEBAIHZvaWQgZXZwX2VuY29kZV9jdHhfc2V0X2ZsYWdzKEVWUF9FTkNPREUK KyAjZGVmaW5lIEVWUF9FTkNPREVfQ1RYX05PX05FV0xJTkVTICAgICAgICAgIDEKKyAvKiBVc2Ug dGhlIFNSUCBiYXNlNjQgYWxwaGFiZXQgaW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgb25lICovCisg I2RlZmluZSBFVlBfRU5DT0RFX0NUWF9VU0VfU1JQX0FMUEhBQkVUICAgICAyCisrCisrY29uc3Qg RVZQX1BLRVlfTUVUSE9EICpjbWFjX3BrZXlfbWV0aG9kKHZvaWQpOworK2NvbnN0IEVWUF9QS0VZ X01FVEhPRCAqZGhfcGtleV9tZXRob2Qodm9pZCk7CisrY29uc3QgRVZQX1BLRVlfTUVUSE9EICpk aHhfcGtleV9tZXRob2Qodm9pZCk7CisrY29uc3QgRVZQX1BLRVlfTUVUSE9EICpkc2FfcGtleV9t ZXRob2Qodm9pZCk7CisrY29uc3QgRVZQX1BLRVlfTUVUSE9EICplY19wa2V5X21ldGhvZCh2b2lk KTsKKytjb25zdCBFVlBfUEtFWV9NRVRIT0QgKnNtMl9wa2V5X21ldGhvZCh2b2lkKTsKKytjb25z dCBFVlBfUEtFWV9NRVRIT0QgKmVjeDI1NTE5X3BrZXlfbWV0aG9kKHZvaWQpOworK2NvbnN0IEVW UF9QS0VZX01FVEhPRCAqZWN4NDQ4X3BrZXlfbWV0aG9kKHZvaWQpOworK2NvbnN0IEVWUF9QS0VZ X01FVEhPRCAqZWQyNTUxOV9wa2V5X21ldGhvZCh2b2lkKTsKKytjb25zdCBFVlBfUEtFWV9NRVRI T0QgKmVkNDQ4X3BrZXlfbWV0aG9kKHZvaWQpOworK2NvbnN0IEVWUF9QS0VZX01FVEhPRCAqaG1h Y19wa2V5X21ldGhvZCh2b2lkKTsKKytjb25zdCBFVlBfUEtFWV9NRVRIT0QgKnJzYV9wa2V5X21l dGhvZCh2b2lkKTsKKytjb25zdCBFVlBfUEtFWV9NRVRIT0QgKnJzYV9wc3NfcGtleV9tZXRob2Qo dm9pZCk7CisrY29uc3QgRVZQX1BLRVlfTUVUSE9EICpzY3J5cHRfcGtleV9tZXRob2Qodm9pZCk7 CisrY29uc3QgRVZQX1BLRVlfTUVUSE9EICp0bHMxX3ByZl9wa2V5X21ldGhvZCh2b2lkKTsKKytj b25zdCBFVlBfUEtFWV9NRVRIT0QgKmhrZGZfcGtleV9tZXRob2Qodm9pZCk7CisrY29uc3QgRVZQ X1BLRVlfTUVUSE9EICpwb2x5MTMwNV9wa2V5X21ldGhvZCh2b2lkKTsKKytjb25zdCBFVlBfUEtF WV9NRVRIT0QgKnNpcGhhc2hfcGtleV9tZXRob2Qodm9pZCk7CitkaWZmIC11cCBvcGVuc3NsLTEu MS4xZy9pbmNsdWRlL2ludGVybmFsL2NvbnN0YW50X3RpbWUuaC5zMzkweC1lY2Mgb3BlbnNzbC0x LjEuMWcvaW5jbHVkZS9pbnRlcm5hbC9jb25zdGFudF90aW1lLmgKKy0tLSBvcGVuc3NsLTEuMS4x Zy9pbmNsdWRlL2ludGVybmFsL2NvbnN0YW50X3RpbWUuaC5zMzkweC1lY2MJMjAyMC0wNC0yMSAx NDoyMjozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy9pbmNsdWRlL2ludGVy bmFsL2NvbnN0YW50X3RpbWUuaAkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU4MjI2NjY1MyArMDIwMAor QEAgLTM1Myw2ICszNTMsMzQgQEAgc3RhdGljIG9zc2xfaW5saW5lIHZvaWQgY29uc3RhbnRfdGlt ZV9jbworIH0KKyAKKyAvKgorKyAqIG1hc2sgbXVzdCBiZSAweEZGIG9yIDB4MDAuCisrICogImNv bnN0YW50IHRpbWUiIGlzIHBlciBsZW4uCisrICoKKysgKiBpZiAobWFzaykgeworKyAqICAgICB1 bnNpZ25lZCBjaGFyIHRtcFtsZW5dOworKyAqCisrICogICAgIG1lbWNweSh0bXAsIGEsIGxlbik7 CisrICogICAgIG1lbWNweShhLCBiKTsKKysgKiAgICAgbWVtY3B5KGIsIHRtcCk7CisrICogfQor KyAqLworK3N0YXRpYyBvc3NsX2lubGluZSB2b2lkIGNvbnN0YW50X3RpbWVfY29uZF9zd2FwX2J1 ZmYodW5zaWduZWQgY2hhciBtYXNrLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmIsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3QgbGVuKQorK3sKKysgICAgc2l6ZV90IGk7CisrICAgIHVuc2lnbmVkIGNoYXIgdG1wOworKwor KyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKysgICAgICAgIHRtcCA9IGFbaV0gXiBi W2ldOworKyAgICAgICAgdG1wICY9IG1hc2s7CisrICAgICAgICBhW2ldIF49IHRtcDsKKysgICAg ICAgIGJbaV0gXj0gdG1wOworKyAgICB9CisrfQorKworKy8qCisgICogdGFibGUgaXMgYSB0d28g ZGltZW5zaW9uYWwgYXJyYXkgb2YgYnl0ZXMuIEVhY2ggcm93IGhhcyByb3dzaXplIGVsZW1lbnRz LgorICAqIENvcGllcyByb3cgbnVtYmVyIGlkeCBpbnRvIG91dC4gcm93c2l6ZSBhbmQgbnVtcm93 cyBhcmUgbm90IGNvbnNpZGVyZWQKKyAgKiBwcml2YXRlLgorZGlmZiAtdXAgb3BlbnNzbC0xLjEu MWcvaW5jbHVkZS9vcGVuc3NsL2VjZXJyLmguczM5MHgtZWNjIG9wZW5zc2wtMS4xLjFnL2luY2x1 ZGUvb3BlbnNzbC9lY2Vyci5oCistLS0gb3BlbnNzbC0xLjEuMWcvaW5jbHVkZS9vcGVuc3NsL2Vj ZXJyLmguczM5MHgtZWNjCTIwMjAtMDQtMjEgMTQ6MjI6MzkuMDAwMDAwMDAwICswMjAwCisrKysg b3BlbnNzbC0xLjEuMWcvaW5jbHVkZS9vcGVuc3NsL2VjZXJyLmgJMjAyMC0wNS0xOCAxMjo0NTo0 NC41ODMyNjY2NjIgKzAyMDAKK0BAIC00Miw2ICs0MiwxMSBAQCBpbnQgRVJSX2xvYWRfRUNfc3Ry aW5ncyh2b2lkKTsKKyAjICBkZWZpbmUgRUNfRl9FQ0RTQV9TSUdOX1NFVFVQICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDI0OAorICMgIGRlZmluZSBFQ19GX0VDRFNBX1NJR19ORVcgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMjY1CisgIyAgZGVmaW5lIEVDX0ZfRUNEU0FfVkVSSUZZ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNTMKKysjICBkZWZpbmUgRUNfRl9FQ0RT QV9TSU1QTEVfU0lHTl9TRVRVUCAgICAgICAgICAgICAgICAgICAgIDMxMAorKyMgIGRlZmluZSBF Q19GX0VDRFNBX1NJTVBMRV9TSUdOX1NJRyAgICAgICAgICAgICAgICAgICAgICAgMzExCisrIyAg ZGVmaW5lIEVDX0ZfRUNEU0FfU0lNUExFX1ZFUklGWV9TSUcgICAgICAgICAgICAgICAgICAgICAz MTIKKysjICBkZWZpbmUgRUNfRl9FQ0RTQV9TMzkwWF9OSVNUUF9TSUdOX1NJRyAgICAgICAgICAg ICAgICAgIDMxMworKyMgIGRlZmluZSBFQ19GX0VDRFNBX1MzOTBYX05JU1RQX1ZFUklGWV9TSUcg ICAgICAgICAgICAgICAgMzE0CisgIyAgZGVmaW5lIEVDX0ZfRUNEX0lURU1fVkVSSUZZICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAyNzAKKyAjICBkZWZpbmUgRUNfRl9FQ0tFWV9QQVJBTTJU WVBFICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyMworICMgIGRlZmluZSBFQ19GX0VDS0VZ X1BBUkFNX0RFQ09ERSAgICAgICAgICAgICAgICAgICAgICAgICAgMjEyCitAQCAtMTg1LDYgKzE5 MCw3IEBAIGludCBFUlJfbG9hZF9FQ19zdHJpbmdzKHZvaWQpOworICMgIGRlZmluZSBFQ19GX08y SV9FQ1BVQkxJQ0tFWSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUyCisgIyAgZGVmaW5l IEVDX0ZfT0xEX0VDX1BSSVZfREVDT0RFICAgICAgICAgICAgICAgICAgICAgICAgICAyMjIKKyAj ICBkZWZpbmUgRUNfRl9PU1NMX0VDREhfQ09NUFVURV9LRVkgICAgICAgICAgICAgICAgICAgICAg IDI0NworKyMgIGRlZmluZSBFQ19GX09TU0xfRUNEU0FfU0lHTl9TRVRVUCAgICAgICAgICAgICAg ICAgICAgICAgMzAwCisgIyAgZGVmaW5lIEVDX0ZfT1NTTF9FQ0RTQV9TSUdOX1NJRyAgICAgICAg ICAgICAgICAgICAgICAgICAyNDkKKyAjICBkZWZpbmUgRUNfRl9PU1NMX0VDRFNBX1ZFUklGWV9T SUcgICAgICAgICAgICAgICAgICAgICAgIDI1MAorICMgIGRlZmluZSBFQ19GX1BLRVlfRUNEX0NU UkwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjcxCitAQCAtMjAwLDYgKzIwNiwxMiBA QCBpbnQgRVJSX2xvYWRfRUNfc3RyaW5ncyh2b2lkKTsKKyAjICBkZWZpbmUgRUNfRl9QS0VZX0VD X0tFWUdFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5OQorICMgIGRlZmluZSBFQ19G X1BLRVlfRUNfUEFSQU1HRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjE5CisgIyAgZGVm aW5lIEVDX0ZfUEtFWV9FQ19TSUdOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMTgK KysjICAgZGVmaW5lIEVDX0ZfUzM5MFhfUEtFWV9FQ0RfRElHRVNUU0lHTjI1NTE5ICAgICAgICAg ICAgIDMyMAorKyMgICBkZWZpbmUgRUNfRl9TMzkwWF9QS0VZX0VDRF9ESUdFU1RTSUdONDQ4ICAg ICAgICAgICAgICAgMzIxCisrIyAgIGRlZmluZSBFQ19GX1MzOTBYX1BLRVlfRUNEX0tFWUdFTjI1 NTE5ICAgICAgICAgICAgICAgICAzMjIKKysjICAgZGVmaW5lIEVDX0ZfUzM5MFhfUEtFWV9FQ0Rf S0VZR0VONDQ4ICAgICAgICAgICAgICAgICAgIDMyMworKyMgICBkZWZpbmUgRUNfRl9TMzkwWF9Q S0VZX0VDWF9LRVlHRU4yNTUxOSAgICAgICAgICAgICAgICAgMzI0CisrIyAgIGRlZmluZSBFQ19G X1MzOTBYX1BLRVlfRUNYX0tFWUdFTjQ0OCAgICAgICAgICAgICAgICAgICAzMjUKKyAjICBkZWZp bmUgRUNfRl9WQUxJREFURV9FQ1hfREVSSVZFICAgICAgICAgICAgICAgICAgICAgICAgIDI3OAor IAorIC8qCitAQCAtMjEyLDYgKzIyNCw3IEBAIGludCBFUlJfbG9hZF9FQ19zdHJpbmdzKHZvaWQp OworICMgIGRlZmluZSBFQ19SX0NBTk5PVF9JTlZFUlQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMTY1CisgIyAgZGVmaW5lIEVDX1JfQ09PUkRJTkFURVNfT1VUX09GX1JBTkdFICAgICAg ICAgICAgICAgICAgICAxNDYKKyAjICBkZWZpbmUgRUNfUl9DVVJWRV9ET0VTX05PVF9TVVBQT1JU X0VDREggICAgICAgICAgICAgICAgIDE2MAorKyMgIGRlZmluZSBFQ19SX0NVUlZFX0RPRVNfTk9U X1NVUFBPUlRfRUNEU0EgICAgICAgICAgICAgICAgMTcwCisgIyAgZGVmaW5lIEVDX1JfQ1VSVkVf RE9FU19OT1RfU1VQUE9SVF9TSUdOSU5HICAgICAgICAgICAgICAxNTkKKyAjICBkZWZpbmUgRUNf Ul9EMklfRUNQS1BBUkFNRVRFUlNfRkFJTFVSRSAgICAgICAgICAgICAgICAgIDExNworICMgIGRl ZmluZSBFQ19SX0RFQ09ERV9FUlJPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQy CitkaWZmIC11cCBvcGVuc3NsLTEuMS4xZy90ZXN0L3JlY2lwZXMvMzAtdGVzdF9ldnBfZGF0YS9l dnBwa2V5LnR4dC5zMzkweC1lY2Mgb3BlbnNzbC0xLjEuMWcvdGVzdC9yZWNpcGVzLzMwLXRlc3Rf ZXZwX2RhdGEvZXZwcGtleS50eHQKKy0tLSBvcGVuc3NsLTEuMS4xZy90ZXN0L3JlY2lwZXMvMzAt dGVzdF9ldnBfZGF0YS9ldnBwa2V5LnR4dC5zMzkweC1lY2MJMjAyMC0wNC0yMSAxNDoyMjozOS4w MDAwMDAwMDAgKzAyMDAKKysrKyBvcGVuc3NsLTEuMS4xZy90ZXN0L3JlY2lwZXMvMzAtdGVzdF9l dnBfZGF0YS9ldnBwa2V5LnR4dAkyMDIwLTA1LTE4IDEyOjQ1OjQ0LjU5MDI2NjcyMiArMDIwMAor QEAgLTgxNCw2ICs4MTQsOCBAQCBQdWJsaWNLZXlSYXc9Qm9iLTQ0OC1QVUJMSUMtUmF3Olg0NDg6 M2ViCisgCisgUHJpdlB1YktleVBhaXIgPSBCb2ItNDQ4LVJhdzpCb2ItNDQ4LVBVQkxJQy1SYXcK KyAKKytQdWJsaWNLZXlSYXc9Qm9iLTQ0OC1QVUJMSUMtUmF3LU5vbkNhbm9uaWNhbDpYNDQ4OmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYKKysK KyBEZXJpdmU9QWxpY2UtNDQ4CisgUGVlcktleT1Cb2ItNDQ4LVBVQkxJQworIFNoYXJlZFNlY3Jl dD0wN2ZmZjQxODFhYzZjYzk1ZWMxYzE2YTk0YTBmNzRkMTJkYTIzMmNlNDBhNzc1NTIyODFkMjgy YmI2MGMwYjU2ZmQyNDY0YzMzNTU0MzkzNjUyMWMyNDQwMzA4NWQ1OWE0NDlhNTAzNzUxNGE4Nzlk CitAQCAtODMwLDYgKzgzMiwxMSBAQCBEZXJpdmU9Qm9iLTQ0OC1SYXcKKyBQZWVyS2V5PUFsaWNl LTQ0OC1QVUJMSUMtUmF3CisgU2hhcmVkU2VjcmV0PTA3ZmZmNDE4MWFjNmNjOTVlYzFjMTZhOTRh MGY3NGQxMmRhMjMyY2U0MGE3NzU1MjI4MWQyODJiYjYwYzBiNTZmZDI0NjRjMzM1NTQzOTM2NTIx YzI0NDAzMDg1ZDU5YTQ0OWE1MDM3NTE0YTg3OWQKKyAKKysjIFNlbGYtZ2VuZXJhdGVkIG5vbi1j YW5vbmljYWwKKytEZXJpdmU9QWxpY2UtNDQ4LVJhdworK1BlZXJLZXk9Qm9iLTQ0OC1QVUJMSUMt UmF3LU5vbkNhbm9uaWNhbAorK1NoYXJlZFNlY3JldD02NmUyZTY4MmIxZjhlNjhjODA5ZjFiYjNl NDA2YmQ4MjY5MjFkOWMxYTViZmJmY2JhYjdhZTcyZmVlY2VlNjM2NjBlYWJkNTQ5MzRmMzM4MjA2 MWQxNzYwN2Y1ODFhOTBiZGFjOTE3YTA2NDk1OWZiCisrCisgIyBJbGxlZ2FsIHNpZ24vdmVyaWZ5 IG9wZXJhdGlvbnMgd2l0aCBYNDQ4IGtleQorIAorIFNpZ249QWxpY2UtNDQ4CgpkaWZmIC0tZ2l0 IGEvb3BlbnNzbC5zcGVjIGIvb3BlbnNzbC5zcGVjCmluZGV4IGU0YzJjYmEuLjUyMjA1NWMgMTAw NjQ0Ci0tLSBhL29wZW5zc2wuc3BlYworKysgYi9vcGVuc3NsLnNwZWMKQEAgLTIyLDcgKzIyLDcg QEAKIFN1bW1hcnk6IFV0aWxpdGllcyBmcm9tIHRoZSBnZW5lcmFsIHB1cnBvc2UgY3J5cHRvZ3Jh cGh5IGxpYnJhcnkgd2l0aCBUTFMgaW1wbGVtZW50YXRpb24KIE5hbWU6IG9wZW5zc2wKIFZlcnNp b246IDEuMS4xZwotUmVsZWFzZTogMiV7P2Rpc3R9CitSZWxlYXNlOiAzJXs/ZGlzdH0KIEVwb2No OiAxCiAjIFdlIGhhdmUgdG8gcmVtb3ZlIGNlcnRhaW4gcGF0ZW50ZWQgYWxnb3JpdGhtcyBmcm9t IHRoZSBvcGVuc3NsIHNvdXJjZQogIyB0YXJiYWxsIHdpdGggdGhlIGhvYmJsZS1vcGVuc3NsIHNj cmlwdCB3aGljaCBpcyBpbmNsdWRlZCBiZWxvdy4KQEAgLTYyLDEyICs2MiwxNiBAQCBQYXRjaDQ3 OiBvcGVuc3NsLTEuMS4xLXRzLXNoYTI1Ni1kZWZhdWx0LnBhdGNoCiBQYXRjaDQ4OiBvcGVuc3Ns LTEuMS4xLWZpcHMtcG9zdC1yYW5kLnBhdGNoCiBQYXRjaDQ5OiBvcGVuc3NsLTEuMS4xLWV2cC1r ZGYucGF0Y2gKIFBhdGNoNTA6IG9wZW5zc2wtMS4xLjEtc3NoLWtkZi5wYXRjaAorUGF0Y2g1MTog b3BlbnNzbC0xLjEuMS1pbnRlbC1jZXQucGF0Y2gKIFBhdGNoNjA6IG9wZW5zc2wtMS4xLjEta3Ji NS1rZGYucGF0Y2gKLVBhdGNoNjE6IG9wZW5zc2wtMS4xLjEtaW50ZWwtY2V0LnBhdGNoCitQYXRj aDYxOiBvcGVuc3NsLTEuMS4xLWVkazItYnVpbGQucGF0Y2gKK1BhdGNoNjI6IG9wZW5zc2wtMS4x LjEtZmlwcy1jdXJ2ZXMucGF0Y2gKIFBhdGNoNjU6IG9wZW5zc2wtMS4xLjEtZmlwcy1kcmJnLXNl bGZ0ZXN0LnBhdGNoCiAjIEJhY2twb3J0ZWQgZml4ZXMgaW5jbHVkaW5nIHNlY3VyaXR5IGZpeGVz CiBQYXRjaDUyOiBvcGVuc3NsLTEuMS4xLXMzOTB4LXVwZGF0ZS5wYXRjaAogUGF0Y2g1Mzogb3Bl bnNzbC0xLjEuMS1maXBzLWNybmctdGVzdC5wYXRjaAorUGF0Y2g1NTogb3BlbnNzbC0xLjEuMS1h cm0tdXBkYXRlLnBhdGNoCitQYXRjaDU2OiBvcGVuc3NsLTEuMS4xLXMzOTB4LWVjYy5wYXRjaAog CiBMaWNlbnNlOiBPcGVuU1NMCiBVUkw6IGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvCkBAIC0xNjYs MTAgKzE3MCwxNCBAQCBjcCAle1NPVVJDRTEzfSB0ZXN0LwogJXBhdGNoNDggLXAxIC1iIC5maXBz LXBvc3QtcmFuZAogJXBhdGNoNDkgLXAxIC1iIC5ldnAta2RmCiAlcGF0Y2g1MCAtcDEgLWIgLnNz aC1rZGYKKyVwYXRjaDUxIC1wMSAtYiAuaW50ZWwtY2V0CiAlcGF0Y2g1MiAtcDEgLWIgLnMzOTB4 LXVwZGF0ZQogJXBhdGNoNTMgLXAxIC1iIC5jcm5nLXRlc3QKKyVwYXRjaDU1IC1wMSAtYiAuYXJt LXVwZGF0ZQorJXBhdGNoNTYgLXAxIC1iIC5zMzkweC1lY2MKICVwYXRjaDYwIC1wMSAtYiAua3Ji NS1rZGYKLSVwYXRjaDYxIC1wMSAtYiAuaW50ZWwtY2V0CislcGF0Y2g2MSAtcDEgLWIgLmVkazIt YnVpbGQKKyVwYXRjaDYyIC1wMSAtYiAuZmlwcy1jdXJ2ZXMKICVwYXRjaDY1IC1wMSAtYiAuZHJi Zy1zZWxmdGVzdAogCiAKQEAgLTQ1Nyw2ICs0NjUsOSBAQCBleHBvcnQgTERfTElCUkFSWV9QQVRI CiAlbGRjb25maWdfc2NyaXB0bGV0cyBsaWJzCiAKICVjaGFuZ2Vsb2cKKyogTW9uIE1heSAxOCAy MDIwIFRvbcOhxaEgTXLDoXogPHRtcmF6QHJlZGhhdC5jb20+IDEuMS4xZy0zCistIHB1bGwgc29t ZSBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIGZyb20gUkhFTC04CisKICogRnJpIE1heSAxNSAyMDIw IFRvbcOhxaEgTXLDoXogPHRtcmF6QHJlZGhhdC5jb20+IDEuMS4xZy0yCiAtIEZJUFMgbW9kdWxl IGluc3RhbGxlZCBzdGF0ZSBkZWZpbml0aW9uIGlzIG1vZGlmaWVkCiAK