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: =?utf-8?b?VG9tw6HFoSBNcsOheiA8dG1yYXpAZmVkb3JhcHJvamVjdC5vcmc+?= To: git-commits@fedoraproject.org Subject: [rpms/openssl] rebase_40beta: - gracefully handle zero length in assembler implementations of Date: Tue, 09 Jun 2026 12:42:04 GMT Message-ID: <178100892480.1.6563927397929959899.rpms-openssl-bffe20438c4a@fedoraproject.org> List-ID: X-Git-Repo: rpms/openssl X-Git-Branch: rebase_40beta X-Git-Rev: bffe20438c4a0d0e16e93abe87499fe2df6a8d62 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvb3BlbnNzbAogICAgICAgICAgICBCcmFuY2ggOiByZWJhc2VfNDBiZXRhCiAg ICAgICAgICAgIENvbW1pdCA6IGJmZmUyMDQzOGM0YTBkMGUxNmU5M2FiZTg3NDk5ZmUyZGY2YThk NjIKICAgICAgICAgICAgQXV0aG9yIDogVG9tw6HFoSBNcsOheiA8dG1yYXpAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDItMTJUMTc6MjA6NTArMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzYxNy8tNTA4IGluIDQgZmlsZShzKQogICAgICAgICAgICBVUkwg ICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL29wZW5zc2wvYy9iZmZlMjA0 MzhjNGEwZDBlMTZlOTNhYmU4NzQ5OWZlMmRmNmE4ZDYyP2JyYW5jaD1yZWJhc2VfNDBiZXRhCgog ICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIC0gZ3JhY2VmdWxseSBoYW5kbGUgemVybyBsZW5n dGggaW4gYXNzZW1ibGVyIGltcGxlbWVudGF0aW9ucyBvZgogICAgT1BFTlNTTF9jbGVhbnNlICgj NTY0MDI5KQotIGRvIG5vdCBmYWlsIGluIHNfc2VydmVyIGlmIGNsaWVudCBob3N0bmFtZSBub3Qg cmVzb2x2YWJsZSAoIzU2MTI2MCkKCi0tLQpkaWZmIC0tZ2l0IGEvb3BlbnNzbC0xLjAuMC1iZXRh My1pcHY2LWFwcHMucGF0Y2ggYi9vcGVuc3NsLTEuMC4wLWJldGEzLWlwdjYtYXBwcy5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjkwYmM5OC4uMDAwMDAwMAotLS0gYS9vcGVu c3NsLTEuMC4wLWJldGEzLWlwdjYtYXBwcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwNiAr MCwwIEBACi1kaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGEzL2FwcHMvc19hcHBzLmguaXB2Ni1h cHBzIG9wZW5zc2wtMS4wLjAtYmV0YTMvYXBwcy9zX2FwcHMuaAotLS0tIG9wZW5zc2wtMS4wLjAt YmV0YTMvYXBwcy9zX2FwcHMuaC5pcHY2LWFwcHMJMjAwOS0wOC0wNSAyMToyOTo1OC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGEzL2FwcHMvc19hcHBzLmgJMjAwOS0wOC0w NSAyMToyOTo1OC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNDgsNyArMTQ4LDcgQEAgdHlwZWRlZiBm ZF9tYXNrIGZkX3NldDsKLSAjZGVmaW5lIFBPUlRfU1RSICAgICAgICAiNDQzMyIKLSAjZGVmaW5l IFBST1RPQ09MICAgICAgICAidGNwIgotIAotLWludCBkb19zZXJ2ZXIoaW50IHBvcnQsIGludCB0 eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpIChjaGFyICpob3N0bmFtZSwgaW50IHMsIHVuc2lnbmVk IGNoYXIgKmNvbnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KTsKLStpbnQgZG9fc2VydmVy KGNoYXIgKnBvcnQsIGludCB0eXBlLCBpbnQgKnJldCwgaW50ICgqY2IpIChjaGFyICpob3N0bmFt ZSwgaW50IHMsIHVuc2lnbmVkIGNoYXIgKmNvbnRleHQpLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0 KTsKLSAjaWZkZWYgSEVBREVSX1g1MDlfSAotIGludCBNU19DQUxMQkFDSyB2ZXJpZnlfY2FsbGJh Y2soaW50IG9rLCBYNTA5X1NUT1JFX0NUWCAqY3R4KTsKLSAjZW5kaWYKLUBAIC0xNTYsMTAgKzE1 Niw5IEBAIGludCBNU19DQUxMQkFDSyB2ZXJpZnlfY2FsbGJhY2soaW50IG9rLCAKLSBpbnQgc2V0 X2NlcnRfc3R1ZmYoU1NMX0NUWCAqY3R4LCBjaGFyICpjZXJ0X2ZpbGUsIGNoYXIgKmtleV9maWxl KTsKLSBpbnQgc2V0X2NlcnRfa2V5X3N0dWZmKFNTTF9DVFggKmN0eCwgWDUwOSAqY2VydCwgRVZQ X1BLRVkgKmtleSk7Ci0gI2VuZGlmCi0taW50IGluaXRfY2xpZW50KGludCAqc29jaywgY2hhciAq c2VydmVyLCBpbnQgcG9ydCwgaW50IHR5cGUpOwotK2ludCBpbml0X2NsaWVudChpbnQgKnNvY2ss IGNoYXIgKnNlcnZlciwgY2hhciAqcG9ydCwgaW50IHR5cGUpOwotIGludCBzaG91bGRfcmV0cnko aW50IGkpOwotLWludCBleHRyYWN0X3BvcnQoY2hhciAqc3RyLCBzaG9ydCAqcG9ydF9wdHIpOwot LWludCBleHRyYWN0X2hvc3RfcG9ydChjaGFyICpzdHIsY2hhciAqKmhvc3RfcHRyLHVuc2lnbmVk IGNoYXIgKmlwLHNob3J0ICpwKTsKLStpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLGNo YXIgKipob3N0X3B0cixjaGFyICoqcG9ydF9wdHIpOwotIAotIGxvbmcgTVNfQ0FMTEJBQ0sgYmlv X2R1bXBfY2FsbGJhY2soQklPICpiaW8sIGludCBjbWQsIGNvbnN0IGNoYXIgKmFyZ3AsCi0gCQkJ CSAgIGludCBhcmdpLCBsb25nIGFyZ2wsIGxvbmcgcmV0KTsKLWRpZmYgLXVwIG9wZW5zc2wtMS4w LjAtYmV0YTMvYXBwcy9zX2NsaWVudC5jLmlwdjYtYXBwcyBvcGVuc3NsLTEuMC4wLWJldGEzL2Fw cHMvc19jbGllbnQuYwotLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTMvYXBwcy9zX2NsaWVudC5jLmlw djYtYXBwcwkyMDA5LTA4LTA1IDIxOjI5OjU4LjAwMDAwMDAwMCArMDIwMAotKysrIG9wZW5zc2wt MS4wLjAtYmV0YTMvYXBwcy9zX2NsaWVudC5jCTIwMDktMDgtMDUgMjI6MzM6NDQuMDAwMDAwMDAw ICswMjAwCi1AQCAtMzg4LDcgKzM4OCw3IEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJn dikKLSAJaW50IGNidWZfbGVuLGNidWZfb2ZmOwotIAlpbnQgc2J1Zl9sZW4sc2J1Zl9vZmY7Ci0g CWZkX3NldCByZWFkZmRzLHdyaXRlZmRzOwotLQlzaG9ydCBwb3J0PVBPUlQ7Ci0rCWNoYXIgKnBv cnRfc3RyID0gUE9SVF9TVFI7Ci0gCWludCBmdWxsX2xvZz0xOwotIAljaGFyICpob3N0PVNTTF9I T1NUX05BTUU7Ci0gCWNoYXIgKmNlcnRfZmlsZT1OVUxMLCprZXlfZmlsZT1OVUxMOwotQEAgLTQ4 NiwxMyArNDg2LDEyIEBAIGludCBNQUlOKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCWVsc2Ug aWYJKHN0cmNtcCgqYXJndiwiLXBvcnQiKSA9PSAwKQotIAkJCXsKLSAJCQlpZiAoLS1hcmdjIDwg MSkgZ290byBiYWQ7Ci0tCQkJcG9ydD1hdG9pKCooKythcmd2KSk7Ci0tCQkJaWYgKHBvcnQgPT0g MCkgZ290byBiYWQ7Ci0rCQkJcG9ydF9zdHI9ICooKythcmd2KTsKLSAJCQl9Ci0gCQllbHNlIGlm IChzdHJjbXAoKmFyZ3YsIi1jb25uZWN0IikgPT0gMCkKLSAJCQl7Ci0gCQkJaWYgKC0tYXJnYyA8 IDEpIGdvdG8gYmFkOwotLQkJCWlmICghZXh0cmFjdF9ob3N0X3BvcnQoKigrK2FyZ3YpLCZob3N0 LE5VTEwsJnBvcnQpKQotKwkJCWlmICghZXh0cmFjdF9ob3N0X3BvcnQoKigrK2FyZ3YpLCZob3N0 LCZwb3J0X3N0cikpCi0gCQkJCWdvdG8gYmFkOwotIAkJCX0KLSAJCWVsc2UgaWYJKHN0cmNtcCgq YXJndiwiLXZlcmlmeSIpID09IDApCi1AQCAtOTU2LDcgKzk1NSw3IEBAIGJhZDoKLSAKLSByZV9z dGFydDoKLSAKLS0JaWYgKGluaXRfY2xpZW50KCZzLGhvc3QscG9ydCxzb2NrZXRfdHlwZSkgPT0g MCkKLSsJaWYgKGluaXRfY2xpZW50KCZzLGhvc3QscG9ydF9zdHIsc29ja2V0X3R5cGUpID09IDAp Ci0gCQl7Ci0gCQlCSU9fcHJpbnRmKGJpb19lcnIsImNvbm5lY3Q6ZXJybm89JWRcbiIsZ2V0X2xh c3Rfc29ja2V0X2Vycm9yKCkpOwotIAkJU0hVVERPV04ocyk7Ci1kaWZmIC11cCBvcGVuc3NsLTEu MC4wLWJldGEzL2FwcHMvc19zZXJ2ZXIuYy5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMC1iZXRhMy9h cHBzL3Nfc2VydmVyLmMKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGEzL2FwcHMvc19zZXJ2ZXIuYy5p cHY2LWFwcHMJMjAwOS0wOC0wNSAyMToyOTo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBvcGVuc3Ns LTEuMC4wLWJldGEzL2FwcHMvc19zZXJ2ZXIuYwkyMDA5LTA4LTA1IDIxOjI5OjU4LjAwMDAwMDAw MCArMDIwMAotQEAgLTgzNyw3ICs4MzcsNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqYXJn dltdKQotIAl7Ci0gCVg1MDlfVkVSSUZZX1BBUkFNICp2cG0gPSBOVUxMOwotIAlpbnQgYmFkYXJn ID0gMDsKLS0Jc2hvcnQgcG9ydD1QT1JUOwotKwljaGFyICpwb3J0X3N0ciA9IFBPUlRfU1RSOwot IAljaGFyICpDQXBhdGg9TlVMTCwqQ0FmaWxlPU5VTEw7Ci0gCXVuc2lnbmVkIGNoYXIgKmNvbnRl eHQgPSBOVUxMOwotIAljaGFyICpkaGZpbGUgPSBOVUxMOwotQEAgLTkwNyw4ICs5MDcsNyBAQCBp bnQgTUFJTihpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAkJCSAoc3RyY21wKCphcmd2LCItYWNj ZXB0IikgPT0gMCkpCi0gCQkJewotIAkJCWlmICgtLWFyZ2MgPCAxKSBnb3RvIGJhZDsKLS0JCQlp ZiAoIWV4dHJhY3RfcG9ydCgqKCsrYXJndiksJnBvcnQpKQotLQkJCQlnb3RvIGJhZDsKLSsJCQlw b3J0X3N0cj0gKigrK2FyZ3YpOwotIAkJCX0KLSAJCWVsc2UgaWYJKHN0cmNtcCgqYXJndiwiLXZl cmlmeSIpID09IDApCi0gCQkJewotQEAgLTE2ODUsOSArMTY4NCw5IEBAIGJhZDoKLSAJQklPX3By aW50ZihiaW9fc19vdXQsIkFDQ0VQVFxuIik7Ci0gCSh2b2lkKUJJT19mbHVzaChiaW9fc19vdXQp OwotIAlpZiAod3d3KQotLQkJZG9fc2VydmVyKHBvcnQsc29ja2V0X3R5cGUsJmFjY2VwdF9zb2Nr ZXQsd3d3X2JvZHksIGNvbnRleHQpOwotKwkJZG9fc2VydmVyKHBvcnRfc3RyLHNvY2tldF90eXBl LCZhY2NlcHRfc29ja2V0LHd3d19ib2R5LCBjb250ZXh0KTsKLSAJZWxzZQotLQkJZG9fc2VydmVy KHBvcnQsc29ja2V0X3R5cGUsJmFjY2VwdF9zb2NrZXQsc3ZfYm9keSwgY29udGV4dCk7Ci0rCQlk b19zZXJ2ZXIocG9ydF9zdHIsc29ja2V0X3R5cGUsJmFjY2VwdF9zb2NrZXQsc3ZfYm9keSwgY29u dGV4dCk7Ci0gCXByaW50X3N0YXRzKGJpb19zX291dCxjdHgpOwotIAlyZXQ9MDsKLSBlbmQ6Ci1k aWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGEzL2FwcHMvc19zb2NrZXQuYy5pcHY2LWFwcHMgb3Bl bnNzbC0xLjAuMC1iZXRhMy9hcHBzL3Nfc29ja2V0LmMKLS0tLSBvcGVuc3NsLTEuMC4wLWJldGEz L2FwcHMvc19zb2NrZXQuYy5pcHY2LWFwcHMJMjAwOC0xMS0xMiAwNDo1Nzo0Ny4wMDAwMDAwMDAg KzAxMDAKLSsrKyBvcGVuc3NsLTEuMC4wLWJldGEzL2FwcHMvc19zb2NrZXQuYwkyMDA5LTA4LTA1 IDIxOjI5OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTk2LDkgKzk2LDcgQEAgc3RhdGljIHN0cnVj dCBob3N0ZW50ICpHZXRIb3N0QnlOYW1lKGNoYQotIHN0YXRpYyB2b2lkIHNzbF9zb2NrX2NsZWFu dXAodm9pZCk7Ci0gI2VuZGlmCi0gc3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpOwotLXN0 YXRpYyBpbnQgaW5pdF9jbGllbnRfaXAoaW50ICpzb2NrLHVuc2lnbmVkIGNoYXIgaXBbNF0sIGlu dCBwb3J0LCBpbnQgdHlwZSk7Ci0tc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ssIGlu dCBwb3J0LCBpbnQgdHlwZSk7Ci0tc3RhdGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29j aywgaW50IHBvcnQsY2hhciAqaXAsIGludCB0eXBlKTsKLStzdGF0aWMgaW50IGluaXRfc2VydmVy KGludCAqc29jaywgY2hhciAqcG9ydCwgaW50IHR5cGUpOwotIHN0YXRpYyBpbnQgZG9fYWNjZXB0 KGludCBhY2Nfc29jaywgaW50ICpzb2NrLCBjaGFyICoqaG9zdCk7Ci0gc3RhdGljIGludCBob3N0 X2lwKGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciBpcFs0XSk7Ci0gCi1AQCAtMjI4LDU4ICsyMjYs NzAgQEAgc3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpCi0gCXJldHVybigxKTsKLSAJfQot IAotLWludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKmhvc3QsIGludCBwb3J0LCBpbnQg dHlwZSkKLStpbnQgaW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpob3N0LCBjaGFyICpwb3J0 LCBpbnQgdHlwZSkKLSAJewotLQl1bnNpZ25lZCBjaGFyIGlwWzRdOwotLQotLQlpZiAoIWhvc3Rf aXAoaG9zdCwmKGlwWzBdKSkpCi0tCQl7Ci0tCQlyZXR1cm4oMCk7Ci0tCQl9Ci0tCXJldHVybihp bml0X2NsaWVudF9pcChzb2NrLGlwLHBvcnQsdHlwZSkpOwotLQl9Ci0tCi0tc3RhdGljIGludCBp bml0X2NsaWVudF9pcChpbnQgKnNvY2ssIHVuc2lnbmVkIGNoYXIgaXBbNF0sIGludCBwb3J0LCBp bnQgdHlwZSkKLS0JewotLQl1bnNpZ25lZCBsb25nIGFkZHI7Ci0tCXN0cnVjdCBzb2NrYWRkcl9p biB0aGVtOwotLQlpbnQgcyxpOwotKwlzdHJ1Y3QgYWRkcmluZm8gKnJlcywgKnJlczAsIGhpbnRz OwotKwljaGFyICogZmFpbGVkX2NhbGwgPSBOVUxMOwotKwlpbnQgczsKLSsJaW50IGU7Ci0gCi0g CWlmICghc3NsX3NvY2tfaW5pdCgpKSByZXR1cm4oMCk7Ci0gCi0tCW1lbXNldCgoY2hhciAqKSZ0 aGVtLDAsc2l6ZW9mKHRoZW0pKTsKLS0JdGhlbS5zaW5fZmFtaWx5PUFGX0lORVQ7Ci0tCXRoZW0u c2luX3BvcnQ9aHRvbnMoKHVuc2lnbmVkIHNob3J0KXBvcnQpOwotLQlhZGRyPSh1bnNpZ25lZCBs b25nKQotLQkJKCh1bnNpZ25lZCBsb25nKWlwWzBdPDwyNEwpfAotLQkJKCh1bnNpZ25lZCBsb25n KWlwWzFdPDwxNkwpfAotLQkJKCh1bnNpZ25lZCBsb25nKWlwWzJdPDwgOEwpfAotLQkJKCh1bnNp Z25lZCBsb25nKWlwWzNdKTsKLS0JdGhlbS5zaW5fYWRkci5zX2FkZHI9aHRvbmwoYWRkcik7Ci0t Ci0tCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQotLQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NLX1NU UkVBTSxTT0NLRVRfUFJPVE9DT0wpOwotLQllbHNlIC8qICggdHlwZSA9PSBTT0NLX0RHUkFNKSAq LwotLQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NLX0RHUkFNLElQUFJPVE9fVURQKTsKLS0JCQkKLS0J aWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpIHsgcGVycm9yKCJzb2NrZXQiKTsgcmV0dXJuKDApOyB9 Ci0rCW1lbXNldCgmaGludHMsICdcMCcsIHNpemVvZihoaW50cykpOwotKwloaW50cy5haV9zb2Nr dHlwZSA9IHR5cGU7Ci0rCWhpbnRzLmFpX2ZsYWdzID0gQUlfQUREUkNPTkZJRzsKLSsKLSsJZSA9 IGdldGFkZHJpbmZvKGhvc3QsIHBvcnQsICZoaW50cywgJnJlcyk7Ci0rCWlmIChlKQotKwl7Ci0r CQlmcHJpbnRmKHN0ZGVyciwgImdldGFkZHJpbmZvOiAlc1xuIiwgZ2FpX3N0cmVycm9yKGUpKTsK LSsJCWlmIChlID09IEVBSV9TWVNURU0pCi0rCQkJcGVycm9yKCJnZXRhZGRyaW5mbyIpOwotKwkJ cmV0dXJuICgwKTsKLSsJCX0KLSAKLSsJcmVzMCA9IHJlczsKLSsJd2hpbGUgKHJlcykKLSsJCXsK LSsJCXMgPSBzb2NrZXQocmVzLT5haV9mYW1pbHksIHJlcy0+YWlfc29ja3R5cGUsIHJlcy0+YWlf cHJvdG9jb2wpOwotKwkJaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpCi0rCQkJewotKwkJCWZhaWxl ZF9jYWxsID0gInNvY2tldCI7Ci0rCQkJZ290byBuZXh0cmVzOwotKwkJCX0KLSAjaWYgZGVmaW5l ZChTT19LRUVQQUxJVkUpICYmICFkZWZpbmVkKE9QRU5TU0xfU1lTX01QRSkKLSAJaWYgKHR5cGUg PT0gU09DS19TVFJFQU0pCi0gCQl7Ci0tCQlpPTA7Ci0tCQlpPXNldHNvY2tvcHQocyxTT0xfU09D S0VULFNPX0tFRVBBTElWRSwoY2hhciAqKSZpLHNpemVvZihpKSk7Ci0tCQlpZiAoaSA8IDApIHsg cGVycm9yKCJrZWVwYWxpdmUiKTsgcmV0dXJuKDApOyB9Ci0rCQkJaW50IGk9MDsKLSsJCQlpPXNl dHNvY2tvcHQocyxTT0xfU09DS0VULFNPX0tFRVBBTElWRSwKLSsJCQkJKGNoYXIgKikmaSxzaXpl b2YoaSkpOwotKwkJCWlmIChpIDwgMCkgewotKwkJCQlmYWlsZWRfY2FsbCA9ICJrZWVwYWxpdmUi OwotKwkJCQlnb3RvIG5leHRyZXM7Ci0rCQkJCX0KLSAJCX0KLSAjZW5kaWYKLS0KLS0JaWYgKGNv bm5lY3Qocywoc3RydWN0IHNvY2thZGRyICopJnRoZW0sc2l6ZW9mKHRoZW0pKSA9PSAtMSkKLS0J CXsgY2xvc2Vzb2NrZXQocyk7IHBlcnJvcigiY29ubmVjdCIpOyByZXR1cm4oMCk7IH0KLSsJCWlm IChjb25uZWN0KHMsKHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwKLSsJCQlyZXMtPmFp X2FkZHJsZW4pID09IDApCi0rCQkJewotKwkJCWZyZWVhZGRyaW5mbyhyZXMwKTsKLSAJKnNvY2s9 czsKLSAJcmV0dXJuKDEpOwotIAl9Ci0gCi0taW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5 cGUsIGludCAqcmV0LCBpbnQgKCpjYikoY2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25lZCBj aGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4dCkKLSsJCWZhaWxlZF9jYWxsID0g InNvY2tldCI7Ci0rbmV4dHJlczoKLSsJCWlmIChzICE9IElOVkFMSURfU09DS0VUKQotKwkJCWNs b3NlKHMpOwotKwkJcmVzID0gcmVzLT5haV9uZXh0OwotKwkJfQotKwlmcmVlYWRkcmluZm8ocmVz MCk7Ci0rCi0rCXBlcnJvcihmYWlsZWRfY2FsbCk7Ci0rCXJldHVybigwKTsKLSsJfQotKwotK2lu dCBkb19zZXJ2ZXIoY2hhciAqcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQgKCpjYikoY2hh ciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hh ciAqY29udGV4dCkKLSAJewotIAlpbnQgc29jazsKLSAJY2hhciAqbmFtZSA9IE5VTEw7Ci1AQCAt MzE3LDMzICszMjcsMzggQEAgaW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGludCAq cgotIAkJfQotIAl9Ci0gCi0tc3RhdGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29jaywg aW50IHBvcnQsIGNoYXIgKmlwLCBpbnQgdHlwZSkKLStzdGF0aWMgaW50IGluaXRfc2VydmVyKGlu dCAqc29jaywgY2hhciAqcG9ydCwgaW50IHR5cGUpCi0gCXsKLS0JaW50IHJldD0wOwotLQlzdHJ1 Y3Qgc29ja2FkZHJfaW4gc2VydmVyOwotLQlpbnQgcz0gLTEsaTsKLSsJc3RydWN0IGFkZHJpbmZv ICpyZXMsICpyZXMwLCBoaW50czsKLSsJY2hhciAqIGZhaWxlZF9jYWxsID0gTlVMTDsKLSsJY2hh ciBwb3J0X25hbWVbOF07Ci0rCWludCBzOwotKwlpbnQgZTsKLSAKLSAJaWYgKCFzc2xfc29ja19p bml0KCkpIHJldHVybigwKTsKLSAKLS0JbWVtc2V0KChjaGFyICopJnNlcnZlciwwLHNpemVvZihz ZXJ2ZXIpKTsKLS0Jc2VydmVyLnNpbl9mYW1pbHk9QUZfSU5FVDsKLS0Jc2VydmVyLnNpbl9wb3J0 PWh0b25zKCh1bnNpZ25lZCBzaG9ydClwb3J0KTsKLS0JaWYgKGlwID09IE5VTEwpCi0tCQlzZXJ2 ZXIuc2luX2FkZHIuc19hZGRyPUlOQUREUl9BTlk7Ci0tCWVsc2UKLS0vKiBBZGRlZCBmb3IgVDNF LCBhZGRyZXNzLW9mIGZhaWxzIG9uIGJpdCBmaWVsZCAoYmVja21hbkBhY2wubGFubC5nb3YpICov Ci0tI2lmbmRlZiBCSVRfRklFTERfTElNSVRTCi0tCQltZW1jcHkoJnNlcnZlci5zaW5fYWRkci5z X2FkZHIsaXAsNCk7Ci0tI2Vsc2UKLS0JCW1lbWNweSgmc2VydmVyLnNpbl9hZGRyLGlwLDQpOwot LSNlbmRpZgotKwltZW1zZXQoJmhpbnRzLCAnXDAnLCBzaXplb2YoaGludHMpKTsKLSsJaGludHMu YWlfc29ja3R5cGUgPSB0eXBlOwotKwloaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkUgfCBBSV9B RERSQ09ORklHOwotIAkKLS0JCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQotLQkJCXM9c29ja2V0 KEFGX0lORVQsU09DS19TVFJFQU0sU09DS0VUX1BST1RPQ09MKTsKLS0JCWVsc2UgLyogdHlwZSA9 PSBTT0NLX0RHUkFNICovCi0tCQkJcz1zb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSxJUFBST1RP X1VEUCk7Ci0rCWUgPSBnZXRhZGRyaW5mbyhOVUxMLCBwb3J0LCAmaGludHMsICZyZXMpOwotKwlp ZiAoZSkKLSsJCXsKLSsJCWZwcmludGYoc3RkZXJyLCAiZ2V0YWRkcmluZm86ICVzXG4iLCBnYWlf c3RyZXJyb3IoZSkpOwotKwkJaWYgKGUgPT0gRUFJX1NZU1RFTSkKLSsJCQlwZXJyb3IoImdldGFk ZHJpbmZvIik7Ci0rCQlyZXR1cm4gKDApOwotKwkJfQotIAotLQlpZiAocyA9PSBJTlZBTElEX1NP Q0tFVCkgZ290byBlcnI7Ci0rCXJlczAgPSByZXM7Ci0rCXdoaWxlIChyZXMpCi0rCQl7Ci0rCQlz ID0gc29ja2V0KHJlcy0+YWlfZmFtaWx5LCByZXMtPmFpX3NvY2t0eXBlLCByZXMtPmFpX3Byb3Rv Y29sKTsKLSsJCWlmIChzID09IElOVkFMSURfU09DS0VUKQotKwkJCXsKLSsJCQlmYWlsZWRfY2Fs bCA9ICJzb2NrZXQiOwotKwkJCWdvdG8gbmV4dHJlczsKLSsJCQl9Ci0gI2lmIGRlZmluZWQgU09M X1NPQ0tFVCAmJiBkZWZpbmVkIFNPX1JFVVNFQUREUgotIAkJewotIAkJaW50IGogPSAxOwotQEAg LTM1MSwzNiArMzY2LDM5IEBAIHN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNvY2ss IGkKLSAJCQkgICAodm9pZCAqKSAmaiwgc2l6ZW9mIGopOwotIAkJfQotICNlbmRpZgotLQlpZiAo YmluZChzLChzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLHNpemVvZihzZXJ2ZXIpKSA9PSAtMSkK LSsKLSsJCWlmIChiaW5kKHMsKHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwgcmVzLT5h aV9hZGRybGVuKSA9PSAtMSkKLSAJCXsKLS0jaWZuZGVmIE9QRU5TU0xfU1lTX1dJTkRPV1MKLS0J CXBlcnJvcigiYmluZCIpOwotLSNlbmRpZgotLQkJZ290byBlcnI7Ci0rCQkJZmFpbGVkX2NhbGwg PSAiYmluZCI7Ci0rCQkJZ290byBuZXh0cmVzOwotIAkJfQotLQkvKiBNYWtlIGl0IDEyOCBmb3Ig bGludXggKi8KLS0JaWYgKHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxpc3RlbihzLDEyOCkgPT0gLTEp IGdvdG8gZXJyOwotLQlpPTA7Ci0tCSpzb2NrPXM7Ci0tCXJldD0xOwotLWVycjoKLS0JaWYgKChy ZXQgPT0gMCkgJiYgKHMgIT0gLTEpKQotKwkJaWYgKHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxpc3Rl bihzLDEyOCkgPT0gLTEpCi0gCQl7Ci0tCQlTSFVURE9XTihzKTsKLSsJCQlmYWlsZWRfY2FsbCA9 ICJsaXN0ZW4iOwotKwkJCWdvdG8gbmV4dHJlczsKLSAJCX0KLS0JcmV0dXJuKHJldCk7Ci0rCi0r CQkqc29jaz1zOwotKwkJcmV0dXJuKDEpOwotKwotK25leHRyZXM6Ci0rCQlpZiAocyAhPSBJTlZB TElEX1NPQ0tFVCkKLSsJCQljbG9zZShzKTsKLSsJCXJlcyA9IHJlcy0+YWlfbmV4dDsKLSAJfQot KwlmcmVlYWRkcmluZm8ocmVzMCk7Ci0gCi0tc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNv Y2ssIGludCBwb3J0LCBpbnQgdHlwZSkKLS0JewotLQlyZXR1cm4oaW5pdF9zZXJ2ZXJfbG9uZyhz b2NrLCBwb3J0LCBOVUxMLCB0eXBlKSk7Ci0rCWlmIChzID09IElOVkFMSURfU09DS0VUKSB7IHBl cnJvcigic29ja2V0Iik7IHJldHVybigwKTsgfQotKwotKwlwZXJyb3IoZmFpbGVkX2NhbGwpOwot KwlyZXR1cm4oMCk7Ci0gCX0KLSAKLSBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3NvY2ss IGludCAqc29jaywgY2hhciAqKmhvc3QpCi0gCXsKLS0JaW50IHJldCxpOwotLQlzdHJ1Y3QgaG9z dGVudCAqaDEsKmgyOwotLQlzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIGZyb207Ci0rCXN0YXRp YyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBmcm9tOwotKwljaGFyIGJ1ZmZlcltOSV9NQVhIT1NU XTsKLSsJaW50IHJldDsKLSAJaW50IGxlbjsKLSAvKglzdHJ1Y3QgbGluZ2VyIGxpbmc7ICovCi0g Ci1AQCAtNDI1LDEzNyArNDQzLDYyIEBAIHJlZG9pdDoKLSAJaWYgKGkgPCAwKSB7IHBlcnJvcigi a2VlcGFsaXZlIik7IHJldHVybigwKTsgfQotICovCi0gCi0tCWlmIChob3N0ID09IE5VTEwpIGdv dG8gZW5kOwotLSNpZm5kZWYgQklUX0ZJRUxEX0xJTUlUUwotLQkvKiBJIHNob3VsZCB1c2UgV1NB QXN5bmNHZXRIb3N0QnlOYW1lKCkgdW5kZXIgd2luZG93cyAqLwotLQloMT1nZXRob3N0YnlhZGRy KChjaGFyICopJmZyb20uc2luX2FkZHIuc19hZGRyLAotLQkJc2l6ZW9mKGZyb20uc2luX2FkZHIu c19hZGRyKSxBRl9JTkVUKTsKLS0jZWxzZQotLQloMT1nZXRob3N0YnlhZGRyKChjaGFyICopJmZy b20uc2luX2FkZHIsCi0tCQlzaXplb2Yoc3RydWN0IGluX2FkZHIpLEFGX0lORVQpOwotLSNlbmRp ZgotLQlpZiAoaDEgPT0gTlVMTCkKLSsJaWYgKGhvc3QgPT0gTlVMTCkKLSAJCXsKLS0JCUJJT19w cmludGYoYmlvX2VyciwiYmFkIGdldGhvc3RieWFkZHJcbiIpOwotLQkJKmhvc3Q9TlVMTDsKLS0J CS8qIHJldHVybigwKTsgKi8KLS0JCX0KLS0JZWxzZQotLQkJewotLQkJaWYgKCgqaG9zdD0oY2hh ciAqKU9QRU5TU0xfbWFsbG9jKHN0cmxlbihoMS0+aF9uYW1lKSsxKSkgPT0gTlVMTCkKLS0JCQl7 Ci0tCQkJcGVycm9yKCJPUEVOU1NMX21hbGxvYyIpOwotKwkJKnNvY2s9cmV0OwotIAkJCXJldHVy bigwKTsKLSAJCQl9Ci0tCQlCVUZfc3RybGNweSgqaG9zdCxoMS0+aF9uYW1lLHN0cmxlbihoMS0+ aF9uYW1lKSsxKTsKLSAKLS0JCWgyPUdldEhvc3RCeU5hbWUoKmhvc3QpOwotLQkJaWYgKGgyID09 IE5VTEwpCi0rCWlmIChnZXRuYW1laW5mbygoc3RydWN0IHNvY2thZGRyICopJmZyb20sIHNpemVv Zihmcm9tKSwKLSsJCWJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksCi0rCQlOVUxMLCAwLCAwKSkKLSAJ CQl7Ci0tCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRob3N0YnluYW1lIGZhaWx1cmVcbiIpOwot KwkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRuYW1laW5mbyBmYWlsZWRcbiIpOwotKwkJKmhvc3Q9 TlVMTDsKLSAJCQlyZXR1cm4oMCk7Ci0gCQkJfQotLQkJaT0wOwotLQkJaWYgKGgyLT5oX2FkZHJ0 eXBlICE9IEFGX0lORVQpCi0rCWVsc2UKLSAJCQl7Ci0tCQkJQklPX3ByaW50ZihiaW9fZXJyLCJn ZXRob3N0YnluYW1lIGFkZHIgaXMgbm90IEFGX0lORVRcbiIpOwotKwkJaWYgKCgqaG9zdD0oY2hh ciAqKU9QRU5TU0xfbWFsbG9jKHN0cmxlbihidWZmZXIpKzEpKSA9PSBOVUxMKQotKwkJCXsKLSsJ CQlwZXJyb3IoIk9QRU5TU0xfbWFsbG9jIik7Ci0gCQkJcmV0dXJuKDApOwotIAkJCX0KLS0JCX0K LS1lbmQ6Ci0rCQlzdHJjcHkoKmhvc3QsIGJ1ZmZlcik7Ci0gCSpzb2NrPXJldDsKLSAJcmV0dXJu KDEpOwotIAl9Ci0rCX0KLSAKLS1pbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLCBjaGFy ICoqaG9zdF9wdHIsIHVuc2lnbmVkIGNoYXIgKmlwLAotLQkgICAgIHNob3J0ICpwb3J0X3B0cikK LStpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLCBjaGFyICoqaG9zdF9wdHIsIAotKwkg ICAgIGNoYXIgKipwb3J0X3B0cikKLSAJewotLQljaGFyICpoLCpwOwotKwljaGFyICpoLCpwLCp4 OwotIAotLQloPXN0cjsKLS0JcD1zdHJjaHIoc3RyLCc6Jyk7Ci0rCXg9aD1zdHI7Ci0rCWlmICgq aCA9PSAnWycpCi0rCQl7Ci0rCQloKys7Ci0rCQlwPXN0cmNocihoLCddJyk7Ci0gCWlmIChwID09 IE5VTEwpCi0gCQl7Ci0tCQlCSU9fcHJpbnRmKGJpb19lcnIsIm5vIHBvcnQgZGVmaW5lZFxuIik7 Ci0rCQkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBlbmRpbmcgYnJhY2tldCBmb3IgSVB2NiBhZGRy ZXNzXG4iKTsKLSAJCXJldHVybigwKTsKLSAJCX0KLSAJKihwKyspPSdcMCc7Ci0tCi0tCWlmICgo aXAgIT0gTlVMTCkgJiYgIWhvc3RfaXAoc3RyLGlwKSkKLS0JCWdvdG8gZXJyOwotLQlpZiAoaG9z dF9wdHIgIT0gTlVMTCkgKmhvc3RfcHRyPWg7Ci0tCi0tCWlmICghZXh0cmFjdF9wb3J0KHAscG9y dF9wdHIpKQotLQkJZ290byBlcnI7Ci0tCXJldHVybigxKTsKLS1lcnI6Ci0tCXJldHVybigwKTsK LSsJCXggPSBwOwotIAl9Ci0tCi0tc3RhdGljIGludCBob3N0X2lwKGNoYXIgKnN0ciwgdW5zaWdu ZWQgY2hhciBpcFs0XSkKLS0JewotLQl1bnNpZ25lZCBpbnQgaW5bNF07IAotLQlpbnQgaTsKLS0K LS0JaWYgKHNzY2FuZihzdHIsIiV1LiV1LiV1LiV1IiwmKGluWzBdKSwmKGluWzFdKSwmKGluWzJd KSwmKGluWzNdKSkgPT0gNCkKLS0JCXsKLS0JCWZvciAoaT0wOyBpPDQ7IGkrKykKLS0JCQlpZiAo aW5baV0gPiAyNTUpCi0tCQkJCXsKLS0JCQkJQklPX3ByaW50ZihiaW9fZXJyLCJpbnZhbGlkIElQ IGFkZHJlc3NcbiIpOwotLQkJCQlnb3RvIGVycjsKLS0JCQkJfQotLQkJaXBbMF09aW5bMF07Ci0t CQlpcFsxXT1pblsxXTsKLS0JCWlwWzJdPWluWzJdOwotLQkJaXBbM109aW5bM107Ci0tCQl9Ci0t CWVsc2UKLS0JCXsgLyogZG8gYSBnZXRob3N0YnluYW1lICovCi0tCQlzdHJ1Y3QgaG9zdGVudCAq aGU7Ci0tCi0tCQlpZiAoIXNzbF9zb2NrX2luaXQoKSkgcmV0dXJuKDApOwotLQotLQkJaGU9R2V0 SG9zdEJ5TmFtZShzdHIpOwotLQkJaWYgKGhlID09IE5VTEwpCi0tCQkJewotLQkJCUJJT19wcmlu dGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFtZSBmYWlsdXJlXG4iKTsKLS0JCQlnb3RvIGVycjsKLS0J CQl9Ci0tCQkvKiBjYXN0IHRvIHNob3J0IGJlY2F1c2Ugb2Ygd2luMTYgd2luc29jayBkZWZpbml0 aW9uICovCi0tCQlpZiAoKHNob3J0KWhlLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpCi0rCXA9c3Ry Y2hyKHgsJzonKTsKLSsJaWYgKHAgPT0gTlVMTCkKLSAJCQl7Ci0tCQkJQklPX3ByaW50ZihiaW9f ZXJyLCJnZXRob3N0YnluYW1lIGFkZHIgaXMgbm90IEFGX0lORVRcbiIpOwotLQkJCXJldHVybigw KTsKLS0JCQl9Ci0tCQlpcFswXT1oZS0+aF9hZGRyX2xpc3RbMF1bMF07Ci0tCQlpcFsxXT1oZS0+ aF9hZGRyX2xpc3RbMF1bMV07Ci0tCQlpcFsyXT1oZS0+aF9hZGRyX2xpc3RbMF1bMl07Ci0tCQlp cFszXT1oZS0+aF9hZGRyX2xpc3RbMF1bM107Ci0tCQl9Ci0tCXJldHVybigxKTsKLS1lcnI6Ci0r CQlCSU9fcHJpbnRmKGJpb19lcnIsIm5vIHBvcnQgZGVmaW5lZFxuIik7Ci0gCXJldHVybigwKTsK LSAJfQotKwkqKHArKyk9J1wwJzsKLSAKLS1pbnQgZXh0cmFjdF9wb3J0KGNoYXIgKnN0ciwgc2hv cnQgKnBvcnRfcHRyKQotLQl7Ci0tCWludCBpOwotLQlzdHJ1Y3Qgc2VydmVudCAqczsKLSsJaWYg KGhvc3RfcHRyICE9IE5VTEwpICpob3N0X3B0cj1oOwotKwlpZiAocG9ydF9wdHIgIT0gTlVMTCkg KnBvcnRfcHRyPXA7Ci0gCi0tCWk9YXRvaShzdHIpOwotLQlpZiAoaSAhPSAwKQotLQkJKnBvcnRf cHRyPSh1bnNpZ25lZCBzaG9ydClpOwotLQllbHNlCi0tCQl7Ci0tCQlzPWdldHNlcnZieW5hbWUo c3RyLCJ0Y3AiKTsKLS0JCWlmIChzID09IE5VTEwpCi0tCQkJewotLQkJCUJJT19wcmludGYoYmlv X2VyciwiZ2V0c2VydmJ5bmFtZSBmYWlsdXJlIGZvciAlc1xuIixzdHIpOwotLQkJCXJldHVybigw KTsKLS0JCQl9Ci0tCQkqcG9ydF9wdHI9bnRvaHMoKHVuc2lnbmVkIHNob3J0KXMtPnNfcG9ydCk7 Ci0tCQl9Ci0gCXJldHVybigxKTsKLSAJfQotIAoKZGlmZiAtLWdpdCBhL29wZW5zc2wtMS4wLjAt YmV0YTUtY2xlYW5zZS5wYXRjaCBiL29wZW5zc2wtMS4wLjAtYmV0YTUtY2xlYW5zZS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmY3NDQ2Ci0tLSAvZGV2L251bGwK KysrIGIvb3BlbnNzbC0xLjAuMC1iZXRhNS1jbGVhbnNlLnBhdGNoCkBAIC0wLDAgKzEsMTA5IEBA CitHcmFjZWZ1bGx5IGhhbmRsZSB6ZXJvIGxlbmd0aCBpbiBhc3NlbWJsZXIgaW1wbGVtZW50YXRp b25zIG9mIE9QRU5TU0xfY2xlYW5zZS4KK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUvY3J5 cHRvL2lhNjRjcHVpZC5TLmNsZWFuc2Ugb3BlbnNzbC0xLjAuMC1iZXRhNS9jcnlwdG8vaWE2NGNw dWlkLlMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE1L2NyeXB0by9pYTY0Y3B1aWQuUy5jbGVhbnNl CTIwMDctMDctMjcgMjA6MDM6MjcuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMC1i ZXRhNS9jcnlwdG8vaWE2NGNwdWlkLlMJMjAxMC0wMi0xMiAxODoxMzo1Mi4wMDAwMDAwMDAgKzAx MDAKK0BAIC0xMzAsOSArMTMwLDExIEBAIE9QRU5TU0xfd2lwZV9jcHU6CisgLmdsb2JhbAlPUEVO U1NMX2NsZWFuc2UjCisgLnByb2MJT1BFTlNTTF9jbGVhbnNlIworIE9QRU5TU0xfY2xlYW5zZToK Kyt7IC5taWI7CWNtcC5lcQkJcDYscDA9MCxyMzMJICAgIC8vIGxlbj09MAorICNpZiBkZWZpbmVk KF9IUFVYX1NPVVJDRSkgJiYgIWRlZmluZWQoX0xQNjQpCisteyAubW1pOwlhZGRwNAkJcjMyPTAs cjMyCX07OworKwlhZGRwNAkJcjMyPTAscjMyCisgI2VuZGlmCisrKHA2KQlici5yZXQuc3BudAli MAkJfTs7CisgeyAubWliOwlhbmQJCXIyPTcscjMyCisgCWNtcC5sZXUJCXA2LHAwPTE1LHIzMwkg ICAgLy8gbGVuPj0xNQorIChwNikJYnIuY29uZC5kcHRrCS5Mb3QJCX07OworZGlmZiAtdXAgb3Bl bnNzbC0xLjAuMC1iZXRhNS9jcnlwdG8vcGVybGFzbS9wcGMteGxhdGUucGwuY2xlYW5zZSBvcGVu c3NsLTEuMC4wLWJldGE1L2NyeXB0by9wZXJsYXNtL3BwYy14bGF0ZS5wbAorLS0tIG9wZW5zc2wt MS4wLjAtYmV0YTUvY3J5cHRvL3Blcmxhc20vcHBjLXhsYXRlLnBsLmNsZWFuc2UJMjAwOC0wMS0x MyAyMzowMToyOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3NsLTEuMC4wLWJldGE1L2NyeXB0 by9wZXJsYXNtL3BwYy14bGF0ZS5wbAkyMDEwLTAyLTEyIDE4OjEzOjUyLjAwMDAwMDAwMCArMDEw MAorQEAgLTEwMSw2ICsxMDEsMTMgQEAgbXkgJGJuZWxyID0gc3ViIHsKKyAJIgkubG9uZwkiLnNw cmludGYgIjB4JXgiLDE5PDwyNnwkYm88PDIxfDI8PDE2fDE2PDwxIDoKKyAJIgliY2xyCSRibywy IjsKKyB9OworK215ICRiZXFsciA9IHN1YiB7CisrICAgIG15ICRmID0gc2hpZnQ7CisrICAgIG15 ICRibyA9ICRmPX4vLS8gPyAxMisyIDogMTI7CSMgb3B0aW9uYWwgIm5vdCB0byBiZSB0YWtlbiIg aGludAorKyAgICAoJGZsYXZvdXIgPX4gL2xpbnV4LykgPwkJIyBHTlUgYXMgZG9lc24ndCBhbGxv dyBtb3N0IHJlY2VudCBoaW50cworKwkiCS5sb25nCSIuc3ByaW50ZiAiMHglWCIsMTk8PDI2fCRi bzw8MjF8Mjw8MTZ8MTY8PDEgOgorKwkiCWJjbHIJJGJvLDIiOworK307CisgIyBHTlUgYXNzZW1i bGVyIGNhbid0IGhhbmRsZSBleHRyZGkgckEsclMsMTYsNDgsIG9yIHdoZW4gc3VtIG9mIGxhc3Qg dHdvCisgIyBhcmd1bWVudHMgaXMgNjQsIHdpdGggIm9wZXJhbmQgb3V0IG9mIHJhbmdlIiBlcnJv ci4KKyBteSAkZXh0cmRpID0gc3ViIHsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUvY3J5 cHRvL3BwY2NwdWlkLnBsLmNsZWFuc2Ugb3BlbnNzbC0xLjAuMC1iZXRhNS9jcnlwdG8vcHBjY3B1 aWQucGwKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE1L2NyeXB0by9wcGNjcHVpZC5wbC5jbGVhbnNl CTIwMDgtMDktMTIgMTY6NDU6NTMuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMC1i ZXRhNS9jcnlwdG8vcHBjY3B1aWQucGwJMjAxMC0wMi0xMiAxODoxMzo1Mi4wMDAwMDAwMDAgKzAx MDAKK0BAIC02Nyw2ICs2Nyw4IEBAIExvb3A6CWx3YXJ4CXI1LDAscjMKKyAJJENNUExJCXI0LDcK KyAJbGkJcjAsMAorIAliZ2UJTG90CisrCSRDTVBMSQlyNCwwCisrCWJlcWxyLQorIExpdHRsZToJ bXRjdHIJcjQKKyAJc3RiCXIwLDAocjMpCisgCWFkZGkJcjMscjMsMQorZGlmZiAtdXAgb3BlbnNz bC0xLjAuMC1iZXRhNS9jcnlwdG8vc3BhcmNjcHVpZC5TLmNsZWFuc2Ugb3BlbnNzbC0xLjAuMC1i ZXRhNS9jcnlwdG8vc3BhcmNjcHVpZC5TCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9jcnlwdG8v c3BhcmNjcHVpZC5TLmNsZWFuc2UJMjAwNy0wNS0xOSAxOToyNjo0OC4wMDAwMDAwMDAgKzAyMDAK KysrKyBvcGVuc3NsLTEuMC4wLWJldGE1L2NyeXB0by9zcGFyY2NwdWlkLlMJMjAxMC0wMi0xMiAx ODoxMzo1Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yNDIsNiArMjQyLDEwIEBAIE9QRU5TU0xfY2xl YW5zZToKKyAjZWxzZQorIAliZ3UJLkxvdAorICNlbmRpZgorKwljbXAJJW8xLDAKKysJYm5lCS5M aXR0bGUKKysJbm9wCisrCXJldGwKKyAJbm9wCisgCisgLkxpdHRsZToKK2RpZmYgLXVwIG9wZW5z c2wtMS4wLjAtYmV0YTUvY3J5cHRvL3MzOTB4Y3B1aWQuUy5jbGVhbnNlIG9wZW5zc2wtMS4wLjAt YmV0YTUvY3J5cHRvL3MzOTB4Y3B1aWQuUworLS0tIG9wZW5zc2wtMS4wLjAtYmV0YTUvY3J5cHRv L3MzOTB4Y3B1aWQuUy5jbGVhbnNlCTIwMTAtMDEtMTkgMjI6NDA6NTYuMDAwMDAwMDAwICswMTAw CisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNS9jcnlwdG8vczM5MHhjcHVpZC5TCTIwMTAtMDItMTIg MTg6MTM6NTIuMDAwMDAwMDAwICswMTAwCitAQCAtNjIsNiArNjIsOCBAQCBPUEVOU1NMX2NsZWFu c2U6CisgCWxnaGkJJXIwLDAKKyAJY2xncgklcjMsJXI0CisgCWpoCS5Mb3QKKysJY2xncgklcjMs JXIwCisrCWJjcgk4LCVyMTQKKyAuTGl0dGxlOgorIAlzdGMJJXIwLDAoJXIyKQorIAlsYQklcjIs MSglcjIpCitkaWZmIC11cCBvcGVuc3NsLTEuMC4wLWJldGE1L2NyeXB0by94ODZjcHVpZC5wbC5j bGVhbnNlIG9wZW5zc2wtMS4wLjAtYmV0YTUvY3J5cHRvL3g4NmNwdWlkLnBsCistLS0gb3BlbnNz bC0xLjAuMC1iZXRhNS9jcnlwdG8veDg2Y3B1aWQucGwuY2xlYW5zZQkyMDA5LTA1LTE0IDIwOjI1 OjI5LjAwMDAwMDAwMCArMDIwMAorKysrIG9wZW5zc2wtMS4wLjAtYmV0YTUvY3J5cHRvL3g4NmNw dWlkLnBsCTIwMTAtMDItMTIgMTg6MTM6NTIuMDAwMDAwMDAwICswMTAwCitAQCAtMjc5LDExICsy NzksMTQgQEAgZm9yIChAQVJHVikgeyAkc3NlMj0xIGlmICgvLURPUEVOU1NMX0lBMworIAkmeG9y CSgiZWF4IiwiZWF4Iik7CisgCSZjbXAJKCJlY3giLDcpOworIAkmamFlCSgmbGFiZWwoImxvdCIp KTsKKysJJmNtcAkoImVjeCIsMCk7CisrCSZqZQkoJmxhYmVsKCJyZXQiKSk7CisgJnNldF9sYWJl bCgibGl0dGxlIik7CisgCSZtb3YJKCZCUCgwLCJlZHgiKSwiYWwiKTsKKyAJJnN1YgkoImVjeCIs MSk7CisgCSZsZWEJKCJlZHgiLCZEV1AoMSwiZWR4IikpOworIAkmam56CSgmbGFiZWwoImxpdHRs ZSIpKTsKKysmc2V0X2xhYmVsKCJyZXQiKTsKKyAJJnJldAkoKTsKKyAKKyAmc2V0X2xhYmVsKCJs b3QiLDE2KTsKK2RpZmYgLXVwIG9wZW5zc2wtMS4wLjAtYmV0YTUvY3J5cHRvL3g4Nl82NGNwdWlk LnBsLmNsZWFuc2Ugb3BlbnNzbC0xLjAuMC1iZXRhNS9jcnlwdG8veDg2XzY0Y3B1aWQucGwKKy0t LSBvcGVuc3NsLTEuMC4wLWJldGE1L2NyeXB0by94ODZfNjRjcHVpZC5wbC5jbGVhbnNlCTIwMDkt MDUtMTQgMjA6MjU6MjkuMDAwMDAwMDAwICswMjAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNS9j cnlwdG8veDg2XzY0Y3B1aWQucGwJMjAxMC0wMi0xMiAxODoxMzo1Mi4wMDAwMDAwMDAgKzAxMDAK K0BAIC0xNDUsMTIgKzE0NSwxNCBAQCBPUEVOU1NMX2NsZWFuc2U6CisgCXhvcgklcmF4LCVyYXgK KyAJY21wCVwkMTUsJGFyZzIKKyAJamFlCS5Mb3QKKysJY21wCVwkMCwkYXJnMgorKwlqZQkuTHJl dAorIC5MaXR0bGU6CisgCW1vdgklYWwsKCRhcmcxKQorIAlzdWIJXCQxLCRhcmcyCisgCWxlYQkx KCRhcmcxKSwkYXJnMQorIAlqbnoJLkxpdHRsZQorLQlyZXQKKysuTHJldDoJcmV0CisgLmFsaWdu CTE2CisgLkxvdDoKKyAJdGVzdAlcJDcsJGFyZzEKCmRpZmYgLS1naXQgYS9vcGVuc3NsLTEuMC4w LWJldGE1LWlwdjYtYXBwcy5wYXRjaCBiL29wZW5zc2wtMS4wLjAtYmV0YTUtaXB2Ni1hcHBzLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMDRjMDEKLS0tIC9kZXYv bnVsbAorKysgYi9vcGVuc3NsLTEuMC4wLWJldGE1LWlwdjYtYXBwcy5wYXRjaApAQCAtMCwwICsx LDQ5OSBAQAorZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfYXBwcy5oLmlwdjYt YXBwcyBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19hcHBzLmgKKy0tLSBvcGVuc3NsLTEuMC4w LWJldGE1L2FwcHMvc19hcHBzLmguaXB2Ni1hcHBzCTIwMTAtMDItMDMgMDk6NDM6NDkuMDAwMDAw MDAwICswMTAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3NfYXBwcy5oCTIwMTAtMDIt MDMgMDk6NDM6NDkuMDAwMDAwMDAwICswMTAwCitAQCAtMTQ4LDcgKzE0OCw3IEBAIHR5cGVkZWYg ZmRfbWFzayBmZF9zZXQ7CisgI2RlZmluZSBQT1JUX1NUUiAgICAgICAgIjQ0MzMiCisgI2RlZmlu ZSBQUk9UT0NPTCAgICAgICAgInRjcCIKKyAKKy1pbnQgZG9fc2VydmVyKGludCBwb3J0LCBpbnQg dHlwZSwgaW50ICpyZXQsIGludCAoKmNiKSAoY2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25l ZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4dCk7CisraW50IGRvX3NlcnZl cihjaGFyICpwb3J0LCBpbnQgdHlwZSwgaW50ICpyZXQsIGludCAoKmNiKSAoY2hhciAqaG9zdG5h bWUsIGludCBzLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4 dCk7CisgI2lmZGVmIEhFQURFUl9YNTA5X0gKKyBpbnQgTVNfQ0FMTEJBQ0sgdmVyaWZ5X2NhbGxi YWNrKGludCBvaywgWDUwOV9TVE9SRV9DVFggKmN0eCk7CisgI2VuZGlmCitAQCAtMTU2LDEwICsx NTYsOSBAQCBpbnQgTVNfQ0FMTEJBQ0sgdmVyaWZ5X2NhbGxiYWNrKGludCBvaywgCisgaW50IHNl dF9jZXJ0X3N0dWZmKFNTTF9DVFggKmN0eCwgY2hhciAqY2VydF9maWxlLCBjaGFyICprZXlfZmls ZSk7CisgaW50IHNldF9jZXJ0X2tleV9zdHVmZihTU0xfQ1RYICpjdHgsIFg1MDkgKmNlcnQsIEVW UF9QS0VZICprZXkpOworICNlbmRpZgorLWludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIg KnNlcnZlciwgaW50IHBvcnQsIGludCB0eXBlKTsKKytpbnQgaW5pdF9jbGllbnQoaW50ICpzb2Nr LCBjaGFyICpzZXJ2ZXIsIGNoYXIgKnBvcnQsIGludCB0eXBlKTsKKyBpbnQgc2hvdWxkX3JldHJ5 KGludCBpKTsKKy1pbnQgZXh0cmFjdF9wb3J0KGNoYXIgKnN0ciwgc2hvcnQgKnBvcnRfcHRyKTsK Ky1pbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3RyLGNoYXIgKipob3N0X3B0cix1bnNpZ25l ZCBjaGFyICppcCxzaG9ydCAqcCk7CisraW50IGV4dHJhY3RfaG9zdF9wb3J0KGNoYXIgKnN0cixj aGFyICoqaG9zdF9wdHIsY2hhciAqKnBvcnRfcHRyKTsKKyAKKyBsb25nIE1TX0NBTExCQUNLIGJp b19kdW1wX2NhbGxiYWNrKEJJTyAqYmlvLCBpbnQgY21kLCBjb25zdCBjaGFyICphcmdwLAorIAkJ CQkgICBpbnQgYXJnaSwgbG9uZyBhcmdsLCBsb25nIHJldCk7CitkaWZmIC11cCBvcGVuc3NsLTEu MC4wLWJldGE1L2FwcHMvc19jbGllbnQuYy5pcHY2LWFwcHMgb3BlbnNzbC0xLjAuMC1iZXRhNS9h cHBzL3NfY2xpZW50LmMKKy0tLSBvcGVuc3NsLTEuMC4wLWJldGE1L2FwcHMvc19jbGllbnQuYy5p cHY2LWFwcHMJMjAxMC0wMi0wMyAwOTo0Mzo0OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBvcGVuc3Ns LTEuMC4wLWJldGE1L2FwcHMvc19jbGllbnQuYwkyMDEwLTAyLTAzIDA5OjQzOjQ5LjAwMDAwMDAw MCArMDEwMAorQEAgLTM4OSw3ICszODksNyBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCisgCWludCBjYnVmX2xlbixjYnVmX29mZjsKKyAJaW50IHNidWZfbGVuLHNidWZfb2ZmOwor IAlmZF9zZXQgcmVhZGZkcyx3cml0ZWZkczsKKy0Jc2hvcnQgcG9ydD1QT1JUOworKwljaGFyICpw b3J0X3N0ciA9IFBPUlRfU1RSOworIAlpbnQgZnVsbF9sb2c9MTsKKyAJY2hhciAqaG9zdD1TU0xf SE9TVF9OQU1FOworIAljaGFyICpjZXJ0X2ZpbGU9TlVMTCwqa2V5X2ZpbGU9TlVMTDsKK0BAIC00 ODgsMTMgKzQ4OCwxMiBAQCBpbnQgTUFJTihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQllbHNl IGlmCShzdHJjbXAoKmFyZ3YsIi1wb3J0IikgPT0gMCkKKyAJCQl7CisgCQkJaWYgKC0tYXJnYyA8 IDEpIGdvdG8gYmFkOworLQkJCXBvcnQ9YXRvaSgqKCsrYXJndikpOworLQkJCWlmIChwb3J0ID09 IDApIGdvdG8gYmFkOworKwkJCXBvcnRfc3RyPSAqKCsrYXJndik7CisgCQkJfQorIAkJZWxzZSBp ZiAoc3RyY21wKCphcmd2LCItY29ubmVjdCIpID09IDApCisgCQkJeworIAkJCWlmICgtLWFyZ2Mg PCAxKSBnb3RvIGJhZDsKKy0JCQlpZiAoIWV4dHJhY3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9z dCxOVUxMLCZwb3J0KSkKKysJCQlpZiAoIWV4dHJhY3RfaG9zdF9wb3J0KCooKythcmd2KSwmaG9z dCwmcG9ydF9zdHIpKQorIAkJCQlnb3RvIGJhZDsKKyAJCQl9CisgCQllbHNlIGlmCShzdHJjbXAo KmFyZ3YsIi12ZXJpZnkiKSA9PSAwKQorQEAgLTk2Nyw3ICs5NjYsNyBAQCBiYWQ6CisgCisgcmVf c3RhcnQ6CisgCistCWlmIChpbml0X2NsaWVudCgmcyxob3N0LHBvcnQsc29ja2V0X3R5cGUpID09 IDApCisrCWlmIChpbml0X2NsaWVudCgmcyxob3N0LHBvcnRfc3RyLHNvY2tldF90eXBlKSA9PSAw KQorIAkJeworIAkJQklPX3ByaW50ZihiaW9fZXJyLCJjb25uZWN0OmVycm5vPSVkXG4iLGdldF9s YXN0X3NvY2tldF9lcnJvcigpKTsKKyAJCVNIVVRET1dOKHMpOworZGlmZiAtdXAgb3BlbnNzbC0x LjAuMC1iZXRhNS9hcHBzL3Nfc2VydmVyLmMuaXB2Ni1hcHBzIG9wZW5zc2wtMS4wLjAtYmV0YTUv YXBwcy9zX3NlcnZlci5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3Nfc2VydmVyLmMu aXB2Ni1hcHBzCTIwMTAtMDItMDMgMDk6NDM6NDkuMDAwMDAwMDAwICswMTAwCisrKysgb3BlbnNz bC0xLjAuMC1iZXRhNS9hcHBzL3Nfc2VydmVyLmMJMjAxMC0wMi0wMyAwOTo0Mzo0OS4wMDAwMDAw MDAgKzAxMDAKK0BAIC04MzgsNyArODM4LDcgQEAgaW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFy Z3ZbXSkKKyAJeworIAlYNTA5X1ZFUklGWV9QQVJBTSAqdnBtID0gTlVMTDsKKyAJaW50IGJhZGFy ZyA9IDA7CistCXNob3J0IHBvcnQ9UE9SVDsKKysJY2hhciAqcG9ydF9zdHIgPSBQT1JUX1NUUjsK KyAJY2hhciAqQ0FwYXRoPU5VTEwsKkNBZmlsZT1OVUxMOworIAl1bnNpZ25lZCBjaGFyICpjb250 ZXh0ID0gTlVMTDsKKyAJY2hhciAqZGhmaWxlID0gTlVMTDsKK0BAIC05MDksOCArOTA5LDcgQEAg aW50IE1BSU4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyAJCQkgKHN0cmNtcCgqYXJndiwiLWFj Y2VwdCIpID09IDApKQorIAkJCXsKKyAJCQlpZiAoLS1hcmdjIDwgMSkgZ290byBiYWQ7CistCQkJ aWYgKCFleHRyYWN0X3BvcnQoKigrK2FyZ3YpLCZwb3J0KSkKKy0JCQkJZ290byBiYWQ7CisrCQkJ cG9ydF9zdHI9ICooKythcmd2KTsKKyAJCQl9CisgCQllbHNlIGlmCShzdHJjbXAoKmFyZ3YsIi12 ZXJpZnkiKSA9PSAwKQorIAkJCXsKK0BAIC0xNzAwLDkgKzE2OTksOSBAQCBiYWQ6CisgCUJJT19w cmludGYoYmlvX3Nfb3V0LCJBQ0NFUFRcbiIpOworIAkodm9pZClCSU9fZmx1c2goYmlvX3Nfb3V0 KTsKKyAJaWYgKHd3dykKKy0JCWRvX3NlcnZlcihwb3J0LHNvY2tldF90eXBlLCZhY2NlcHRfc29j a2V0LHd3d19ib2R5LCBjb250ZXh0KTsKKysJCWRvX3NlcnZlcihwb3J0X3N0cixzb2NrZXRfdHlw ZSwmYWNjZXB0X3NvY2tldCx3d3dfYm9keSwgY29udGV4dCk7CisgCWVsc2UKKy0JCWRvX3NlcnZl cihwb3J0LHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNvbnRleHQpOworKwkJ ZG9fc2VydmVyKHBvcnRfc3RyLHNvY2tldF90eXBlLCZhY2NlcHRfc29ja2V0LHN2X2JvZHksIGNv bnRleHQpOworIAlwcmludF9zdGF0cyhiaW9fc19vdXQsY3R4KTsKKyAJcmV0PTA7CisgZW5kOgor ZGlmZiAtdXAgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3Nfc29ja2V0LmMuaXB2Ni1hcHBzIG9w ZW5zc2wtMS4wLjAtYmV0YTUvYXBwcy9zX3NvY2tldC5jCistLS0gb3BlbnNzbC0xLjAuMC1iZXRh NS9hcHBzL3Nfc29ja2V0LmMuaXB2Ni1hcHBzCTIwMDktMDgtMjYgMTM6MjE6NTAuMDAwMDAwMDAw ICswMjAwCisrKysgb3BlbnNzbC0xLjAuMC1iZXRhNS9hcHBzL3Nfc29ja2V0LmMJMjAxMC0wMi0w MyAxMDowMDozMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDIsOSArMTAyLDcgQEAgc3RhdGljIHN0 cnVjdCBob3N0ZW50ICpHZXRIb3N0QnlOYW1lKGNoYQorIHN0YXRpYyB2b2lkIHNzbF9zb2NrX2Ns ZWFudXAodm9pZCk7CisgI2VuZGlmCisgc3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpOwor LXN0YXRpYyBpbnQgaW5pdF9jbGllbnRfaXAoaW50ICpzb2NrLHVuc2lnbmVkIGNoYXIgaXBbNF0s IGludCBwb3J0LCBpbnQgdHlwZSk7Cistc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQgKnNvY2ss IGludCBwb3J0LCBpbnQgdHlwZSk7Cistc3RhdGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAq c29jaywgaW50IHBvcnQsY2hhciAqaXAsIGludCB0eXBlKTsKKytzdGF0aWMgaW50IGluaXRfc2Vy dmVyKGludCAqc29jaywgY2hhciAqcG9ydCwgaW50IHR5cGUpOworIHN0YXRpYyBpbnQgZG9fYWNj ZXB0KGludCBhY2Nfc29jaywgaW50ICpzb2NrLCBjaGFyICoqaG9zdCk7Cisgc3RhdGljIGludCBo b3N0X2lwKGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciBpcFs0XSk7CisgCitAQCAtMjM0LDU4ICsy MzIsNzAgQEAgc3RhdGljIGludCBzc2xfc29ja19pbml0KHZvaWQpCisgCXJldHVybigxKTsKKyAJ fQorIAorLWludCBpbml0X2NsaWVudChpbnQgKnNvY2ssIGNoYXIgKmhvc3QsIGludCBwb3J0LCBp bnQgdHlwZSkKKytpbnQgaW5pdF9jbGllbnQoaW50ICpzb2NrLCBjaGFyICpob3N0LCBjaGFyICpw b3J0LCBpbnQgdHlwZSkKKyAJeworLQl1bnNpZ25lZCBjaGFyIGlwWzRdOworLQorLQlpZiAoIWhv c3RfaXAoaG9zdCwmKGlwWzBdKSkpCistCQl7CistCQlyZXR1cm4oMCk7CistCQl9CistCXJldHVy bihpbml0X2NsaWVudF9pcChzb2NrLGlwLHBvcnQsdHlwZSkpOworLQl9CistCistc3RhdGljIGlu dCBpbml0X2NsaWVudF9pcChpbnQgKnNvY2ssIHVuc2lnbmVkIGNoYXIgaXBbNF0sIGludCBwb3J0 LCBpbnQgdHlwZSkKKy0JeworLQl1bnNpZ25lZCBsb25nIGFkZHI7CistCXN0cnVjdCBzb2NrYWRk cl9pbiB0aGVtOworLQlpbnQgcyxpOworKwlzdHJ1Y3QgYWRkcmluZm8gKnJlcywgKnJlczAsIGhp bnRzOworKwljaGFyICogZmFpbGVkX2NhbGwgPSBOVUxMOworKwlpbnQgczsKKysJaW50IGU7Cisg CisgCWlmICghc3NsX3NvY2tfaW5pdCgpKSByZXR1cm4oMCk7CisgCistCW1lbXNldCgoY2hhciAq KSZ0aGVtLDAsc2l6ZW9mKHRoZW0pKTsKKy0JdGhlbS5zaW5fZmFtaWx5PUFGX0lORVQ7CistCXRo ZW0uc2luX3BvcnQ9aHRvbnMoKHVuc2lnbmVkIHNob3J0KXBvcnQpOworLQlhZGRyPSh1bnNpZ25l ZCBsb25nKQorLQkJKCh1bnNpZ25lZCBsb25nKWlwWzBdPDwyNEwpfAorLQkJKCh1bnNpZ25lZCBs b25nKWlwWzFdPDwxNkwpfAorLQkJKCh1bnNpZ25lZCBsb25nKWlwWzJdPDwgOEwpfAorLQkJKCh1 bnNpZ25lZCBsb25nKWlwWzNdKTsKKy0JdGhlbS5zaW5fYWRkci5zX2FkZHI9aHRvbmwoYWRkcik7 CistCistCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQorLQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NL X1NUUkVBTSxTT0NLRVRfUFJPVE9DT0wpOworLQllbHNlIC8qICggdHlwZSA9PSBTT0NLX0RHUkFN KSAqLworLQkJcz1zb2NrZXQoQUZfSU5FVCxTT0NLX0RHUkFNLElQUFJPVE9fVURQKTsKKy0JCQkK Ky0JaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpIHsgcGVycm9yKCJzb2NrZXQiKTsgcmV0dXJuKDAp OyB9CisrCW1lbXNldCgmaGludHMsICdcMCcsIHNpemVvZihoaW50cykpOworKwloaW50cy5haV9z b2NrdHlwZSA9IHR5cGU7CisrCWhpbnRzLmFpX2ZsYWdzID0gQUlfQUREUkNPTkZJRzsKKysKKysJ ZSA9IGdldGFkZHJpbmZvKGhvc3QsIHBvcnQsICZoaW50cywgJnJlcyk7CisrCWlmIChlKQorKwl7 CisrCQlmcHJpbnRmKHN0ZGVyciwgImdldGFkZHJpbmZvOiAlc1xuIiwgZ2FpX3N0cmVycm9yKGUp KTsKKysJCWlmIChlID09IEVBSV9TWVNURU0pCisrCQkJcGVycm9yKCJnZXRhZGRyaW5mbyIpOwor KwkJcmV0dXJuICgwKTsKKysJCX0KKyAKKysJcmVzMCA9IHJlczsKKysJd2hpbGUgKHJlcykKKysJ CXsKKysJCXMgPSBzb2NrZXQocmVzLT5haV9mYW1pbHksIHJlcy0+YWlfc29ja3R5cGUsIHJlcy0+ YWlfcHJvdG9jb2wpOworKwkJaWYgKHMgPT0gSU5WQUxJRF9TT0NLRVQpCisrCQkJeworKwkJCWZh aWxlZF9jYWxsID0gInNvY2tldCI7CisrCQkJZ290byBuZXh0cmVzOworKwkJCX0KKyAjaWYgZGVm aW5lZChTT19LRUVQQUxJVkUpICYmICFkZWZpbmVkKE9QRU5TU0xfU1lTX01QRSkKKyAJaWYgKHR5 cGUgPT0gU09DS19TVFJFQU0pCisgCQl7CistCQlpPTA7CistCQlpPXNldHNvY2tvcHQocyxTT0xf U09DS0VULFNPX0tFRVBBTElWRSwoY2hhciAqKSZpLHNpemVvZihpKSk7CistCQlpZiAoaSA8IDAp IHsgcGVycm9yKCJrZWVwYWxpdmUiKTsgcmV0dXJuKDApOyB9CisrCQkJaW50IGk9MDsKKysJCQlp PXNldHNvY2tvcHQocyxTT0xfU09DS0VULFNPX0tFRVBBTElWRSwKKysJCQkJKGNoYXIgKikmaSxz aXplb2YoaSkpOworKwkJCWlmIChpIDwgMCkgeworKwkJCQlmYWlsZWRfY2FsbCA9ICJrZWVwYWxp dmUiOworKwkJCQlnb3RvIG5leHRyZXM7CisrCQkJCX0KKyAJCX0KKyAjZW5kaWYKKy0KKy0JaWYg KGNvbm5lY3Qocywoc3RydWN0IHNvY2thZGRyICopJnRoZW0sc2l6ZW9mKHRoZW0pKSA9PSAtMSkK Ky0JCXsgY2xvc2Vzb2NrZXQocyk7IHBlcnJvcigiY29ubmVjdCIpOyByZXR1cm4oMCk7IH0KKysJ CWlmIChjb25uZWN0KHMsKHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwKKysJCQlyZXMt PmFpX2FkZHJsZW4pID09IDApCisrCQkJeworKwkJCWZyZWVhZGRyaW5mbyhyZXMwKTsKKyAJKnNv Y2s9czsKKyAJcmV0dXJuKDEpOworIAl9CisgCistaW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50 IHR5cGUsIGludCAqcmV0LCBpbnQgKCpjYikoY2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25l ZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQgY2hhciAqY29udGV4dCkKKysJCWZhaWxlZF9jYWxs ID0gInNvY2tldCI7CisrbmV4dHJlczoKKysJCWlmIChzICE9IElOVkFMSURfU09DS0VUKQorKwkJ CWNsb3NlKHMpOworKwkJcmVzID0gcmVzLT5haV9uZXh0OworKwkJfQorKwlmcmVlYWRkcmluZm8o cmVzMCk7CisrCisrCXBlcnJvcihmYWlsZWRfY2FsbCk7CisrCXJldHVybigwKTsKKysJfQorKwor K2ludCBkb19zZXJ2ZXIoY2hhciAqcG9ydCwgaW50IHR5cGUsIGludCAqcmV0LCBpbnQgKCpjYiko Y2hhciAqaG9zdG5hbWUsIGludCBzLCB1bnNpZ25lZCBjaGFyICpjb250ZXh0KSwgdW5zaWduZWQg Y2hhciAqY29udGV4dCkKKyAJeworIAlpbnQgc29jazsKKyAJY2hhciAqbmFtZSA9IE5VTEw7CitA QCAtMzIzLDMzICszMzMsMzggQEAgaW50IGRvX3NlcnZlcihpbnQgcG9ydCwgaW50IHR5cGUsIGlu dCAqcgorIAkJfQorIAl9CisgCistc3RhdGljIGludCBpbml0X3NlcnZlcl9sb25nKGludCAqc29j aywgaW50IHBvcnQsIGNoYXIgKmlwLCBpbnQgdHlwZSkKKytzdGF0aWMgaW50IGluaXRfc2VydmVy KGludCAqc29jaywgY2hhciAqcG9ydCwgaW50IHR5cGUpCisgCXsKKy0JaW50IHJldD0wOworLQlz dHJ1Y3Qgc29ja2FkZHJfaW4gc2VydmVyOworLQlpbnQgcz0gLTEsaTsKKysJc3RydWN0IGFkZHJp bmZvICpyZXMsICpyZXMwLCBoaW50czsKKysJY2hhciAqIGZhaWxlZF9jYWxsID0gTlVMTDsKKysJ Y2hhciBwb3J0X25hbWVbOF07CisrCWludCBzOworKwlpbnQgZTsKKyAKKyAJaWYgKCFzc2xfc29j a19pbml0KCkpIHJldHVybigwKTsKKyAKKy0JbWVtc2V0KChjaGFyICopJnNlcnZlciwwLHNpemVv ZihzZXJ2ZXIpKTsKKy0Jc2VydmVyLnNpbl9mYW1pbHk9QUZfSU5FVDsKKy0Jc2VydmVyLnNpbl9w b3J0PWh0b25zKCh1bnNpZ25lZCBzaG9ydClwb3J0KTsKKy0JaWYgKGlwID09IE5VTEwpCistCQlz ZXJ2ZXIuc2luX2FkZHIuc19hZGRyPUlOQUREUl9BTlk7CistCWVsc2UKKy0vKiBBZGRlZCBmb3Ig VDNFLCBhZGRyZXNzLW9mIGZhaWxzIG9uIGJpdCBmaWVsZCAoYmVja21hbkBhY2wubGFubC5nb3Yp ICovCistI2lmbmRlZiBCSVRfRklFTERfTElNSVRTCistCQltZW1jcHkoJnNlcnZlci5zaW5fYWRk ci5zX2FkZHIsaXAsNCk7CistI2Vsc2UKKy0JCW1lbWNweSgmc2VydmVyLnNpbl9hZGRyLGlwLDQp OworLSNlbmRpZgorKwltZW1zZXQoJmhpbnRzLCAnXDAnLCBzaXplb2YoaGludHMpKTsKKysJaGlu dHMuYWlfc29ja3R5cGUgPSB0eXBlOworKwloaW50cy5haV9mbGFncyA9IEFJX1BBU1NJVkUgfCBB SV9BRERSQ09ORklHOworIAkKKy0JCWlmICh0eXBlID09IFNPQ0tfU1RSRUFNKQorLQkJCXM9c29j a2V0KEFGX0lORVQsU09DS19TVFJFQU0sU09DS0VUX1BST1RPQ09MKTsKKy0JCWVsc2UgLyogdHlw ZSA9PSBTT0NLX0RHUkFNICovCistCQkJcz1zb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSxJUFBS T1RPX1VEUCk7CisrCWUgPSBnZXRhZGRyaW5mbyhOVUxMLCBwb3J0LCAmaGludHMsICZyZXMpOwor KwlpZiAoZSkKKysJCXsKKysJCWZwcmludGYoc3RkZXJyLCAiZ2V0YWRkcmluZm86ICVzXG4iLCBn YWlfc3RyZXJyb3IoZSkpOworKwkJaWYgKGUgPT0gRUFJX1NZU1RFTSkKKysJCQlwZXJyb3IoImdl dGFkZHJpbmZvIik7CisrCQlyZXR1cm4gKDApOworKwkJfQorIAorLQlpZiAocyA9PSBJTlZBTElE X1NPQ0tFVCkgZ290byBlcnI7CisrCXJlczAgPSByZXM7CisrCXdoaWxlIChyZXMpCisrCQl7Cisr CQlzID0gc29ja2V0KHJlcy0+YWlfZmFtaWx5LCByZXMtPmFpX3NvY2t0eXBlLCByZXMtPmFpX3By b3RvY29sKTsKKysJCWlmIChzID09IElOVkFMSURfU09DS0VUKQorKwkJCXsKKysJCQlmYWlsZWRf Y2FsbCA9ICJzb2NrZXQiOworKwkJCWdvdG8gbmV4dHJlczsKKysJCQl9CisgI2lmIGRlZmluZWQg U09MX1NPQ0tFVCAmJiBkZWZpbmVkIFNPX1JFVVNFQUREUgorIAkJeworIAkJaW50IGogPSAxOwor QEAgLTM1NywzNiArMzcyLDM5IEBAIHN0YXRpYyBpbnQgaW5pdF9zZXJ2ZXJfbG9uZyhpbnQgKnNv Y2ssIGkKKyAJCQkgICAodm9pZCAqKSAmaiwgc2l6ZW9mIGopOworIAkJfQorICNlbmRpZgorLQlp ZiAoYmluZChzLChzdHJ1Y3Qgc29ja2FkZHIgKikmc2VydmVyLHNpemVvZihzZXJ2ZXIpKSA9PSAt MSkKKysKKysJCWlmIChiaW5kKHMsKHN0cnVjdCBzb2NrYWRkciAqKXJlcy0+YWlfYWRkciwgcmVz LT5haV9hZGRybGVuKSA9PSAtMSkKKyAJCXsKKy0jaWZuZGVmIE9QRU5TU0xfU1lTX1dJTkRPV1MK Ky0JCXBlcnJvcigiYmluZCIpOworLSNlbmRpZgorLQkJZ290byBlcnI7CisrCQkJZmFpbGVkX2Nh bGwgPSAiYmluZCI7CisrCQkJZ290byBuZXh0cmVzOworIAkJfQorLQkvKiBNYWtlIGl0IDEyOCBm b3IgbGludXggKi8KKy0JaWYgKHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxpc3RlbihzLDEyOCkgPT0g LTEpIGdvdG8gZXJyOworLQlpPTA7CistCSpzb2NrPXM7CistCXJldD0xOworLWVycjoKKy0JaWYg KChyZXQgPT0gMCkgJiYgKHMgIT0gLTEpKQorKwkJaWYgKHR5cGU9PVNPQ0tfU1RSRUFNICYmIGxp c3RlbihzLDEyOCkgPT0gLTEpCisgCQl7CistCQlTSFVURE9XTihzKTsKKysJCQlmYWlsZWRfY2Fs bCA9ICJsaXN0ZW4iOworKwkJCWdvdG8gbmV4dHJlczsKKyAJCX0KKy0JcmV0dXJuKHJldCk7Cisr CisrCQkqc29jaz1zOworKwkJcmV0dXJuKDEpOworKworK25leHRyZXM6CisrCQlpZiAocyAhPSBJ TlZBTElEX1NPQ0tFVCkKKysJCQljbG9zZShzKTsKKysJCXJlcyA9IHJlcy0+YWlfbmV4dDsKKyAJ fQorKwlmcmVlYWRkcmluZm8ocmVzMCk7CisgCistc3RhdGljIGludCBpbml0X3NlcnZlcihpbnQg KnNvY2ssIGludCBwb3J0LCBpbnQgdHlwZSkKKy0JeworLQlyZXR1cm4oaW5pdF9zZXJ2ZXJfbG9u Zyhzb2NrLCBwb3J0LCBOVUxMLCB0eXBlKSk7CisrCWlmIChzID09IElOVkFMSURfU09DS0VUKSB7 IHBlcnJvcigic29ja2V0Iik7IHJldHVybigwKTsgfQorKworKwlwZXJyb3IoZmFpbGVkX2NhbGwp OworKwlyZXR1cm4oMCk7CisgCX0KKyAKKyBzdGF0aWMgaW50IGRvX2FjY2VwdChpbnQgYWNjX3Nv Y2ssIGludCAqc29jaywgY2hhciAqKmhvc3QpCisgCXsKKy0JaW50IHJldCxpOworLQlzdHJ1Y3Qg aG9zdGVudCAqaDEsKmgyOworLQlzdGF0aWMgc3RydWN0IHNvY2thZGRyX2luIGZyb207CisrCXN0 YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBmcm9tOworKwljaGFyIGJ1ZmZlcltOSV9NQVhI T1NUXTsKKysJaW50IHJldDsKKyAJaW50IGxlbjsKKyAvKglzdHJ1Y3QgbGluZ2VyIGxpbmc7ICov CisgCitAQCAtNDMyLDEzNiArNDUwLDU4IEBAIHJlZG9pdDoKKyAqLworIAorIAlpZiAoaG9zdCA9 PSBOVUxMKSBnb3RvIGVuZDsKKy0jaWZuZGVmIEJJVF9GSUVMRF9MSU1JVFMKKy0JLyogSSBzaG91 bGQgdXNlIFdTQUFzeW5jR2V0SG9zdEJ5TmFtZSgpIHVuZGVyIHdpbmRvd3MgKi8KKy0JaDE9Z2V0 aG9zdGJ5YWRkcigoY2hhciAqKSZmcm9tLnNpbl9hZGRyLnNfYWRkciwKKy0JCXNpemVvZihmcm9t LnNpbl9hZGRyLnNfYWRkciksQUZfSU5FVCk7CistI2Vsc2UKKy0JaDE9Z2V0aG9zdGJ5YWRkcigo Y2hhciAqKSZmcm9tLnNpbl9hZGRyLAorLQkJc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSxBRl9JTkVU KTsKKy0jZW5kaWYKKy0JaWYgKGgxID09IE5VTEwpCisrCisrCWlmIChnZXRuYW1laW5mbygoc3Ry dWN0IHNvY2thZGRyICopJmZyb20sIHNpemVvZihmcm9tKSwKKysJCWJ1ZmZlciwgc2l6ZW9mKGJ1 ZmZlciksCisrCQlOVUxMLCAwLCAwKSkKKyAJCXsKKy0JCUJJT19wcmludGYoYmlvX2VyciwiYmFk IGdldGhvc3RieWFkZHJcbiIpOworKwkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRuYW1laW5mbyBm YWlsZWRcbiIpOworIAkJKmhvc3Q9TlVMTDsKKyAJCS8qIHJldHVybigwKTsgKi8KKyAJCX0KKyAJ ZWxzZQorIAkJeworLQkJaWYgKCgqaG9zdD0oY2hhciAqKU9QRU5TU0xfbWFsbG9jKHN0cmxlbiho MS0+aF9uYW1lKSsxKSkgPT0gTlVMTCkKKysJCWlmICgoKmhvc3Q9KGNoYXIgKilPUEVOU1NMX21h bGxvYyhzdHJsZW4oYnVmZmVyKSsxKSkgPT0gTlVMTCkKKyAJCQl7CisgCQkJcGVycm9yKCJPUEVO U1NMX21hbGxvYyIpOworIAkJCXJldHVybigwKTsKKyAJCQl9CistCQlCVUZfc3RybGNweSgqaG9z dCxoMS0+aF9uYW1lLHN0cmxlbihoMS0+aF9uYW1lKSsxKTsKKy0KKy0JCWgyPUdldEhvc3RCeU5h bWUoKmhvc3QpOworLQkJaWYgKGgyID09IE5VTEwpCistCQkJeworLQkJCUJJT19wcmludGYoYmlv X2VyciwiZ2V0aG9zdGJ5bmFtZSBmYWlsdXJlXG4iKTsKKy0JCQlyZXR1cm4oMCk7CistCQkJfQor LQkJaT0wOworLQkJaWYgKGgyLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpCistCQkJeworLQkJCUJJ T19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFtZSBhZGRyIGlzIG5vdCBBRl9JTkVUXG4iKTsK Ky0JCQlyZXR1cm4oMCk7CistCQkJfQorKwkJc3RyY3B5KCpob3N0LCBidWZmZXIpOworIAkJfQor IGVuZDoKKyAJKnNvY2s9cmV0OworIAlyZXR1cm4oMSk7CisgCX0KKyAKKy1pbnQgZXh0cmFjdF9o b3N0X3BvcnQoY2hhciAqc3RyLCBjaGFyICoqaG9zdF9wdHIsIHVuc2lnbmVkIGNoYXIgKmlwLAor LQkgICAgIHNob3J0ICpwb3J0X3B0cikKKytpbnQgZXh0cmFjdF9ob3N0X3BvcnQoY2hhciAqc3Ry LCBjaGFyICoqaG9zdF9wdHIsIAorKwkgICAgIGNoYXIgKipwb3J0X3B0cikKKyAJeworLQljaGFy ICpoLCpwOworKwljaGFyICpoLCpwLCp4OworIAorLQloPXN0cjsKKy0JcD1zdHJjaHIoc3RyLCc6 Jyk7CisrCXg9aD1zdHI7CisrCWlmICgqaCA9PSAnWycpCisrCQl7CisrCQloKys7CisrCQlwPXN0 cmNocihoLCddJyk7CisgCWlmIChwID09IE5VTEwpCisgCQl7CistCQlCSU9fcHJpbnRmKGJpb19l cnIsIm5vIHBvcnQgZGVmaW5lZFxuIik7CisrCQkJQklPX3ByaW50ZihiaW9fZXJyLCJubyBlbmRp bmcgYnJhY2tldCBmb3IgSVB2NiBhZGRyZXNzXG4iKTsKKyAJCXJldHVybigwKTsKKyAJCX0KKyAJ KihwKyspPSdcMCc7CistCistCWlmICgoaXAgIT0gTlVMTCkgJiYgIWhvc3RfaXAoc3RyLGlwKSkK Ky0JCWdvdG8gZXJyOworLQlpZiAoaG9zdF9wdHIgIT0gTlVMTCkgKmhvc3RfcHRyPWg7CistCist CWlmICghZXh0cmFjdF9wb3J0KHAscG9ydF9wdHIpKQorLQkJZ290byBlcnI7CistCXJldHVybigx KTsKKy1lcnI6CistCXJldHVybigwKTsKKysJCXggPSBwOworIAl9CistCistc3RhdGljIGludCBo b3N0X2lwKGNoYXIgKnN0ciwgdW5zaWduZWQgY2hhciBpcFs0XSkKKy0JeworLQl1bnNpZ25lZCBp bnQgaW5bNF07IAorLQlpbnQgaTsKKy0KKy0JaWYgKHNzY2FuZihzdHIsIiV1LiV1LiV1LiV1Iiwm KGluWzBdKSwmKGluWzFdKSwmKGluWzJdKSwmKGluWzNdKSkgPT0gNCkKKy0JCXsKKy0JCWZvciAo aT0wOyBpPDQ7IGkrKykKKy0JCQlpZiAoaW5baV0gPiAyNTUpCistCQkJCXsKKy0JCQkJQklPX3By aW50ZihiaW9fZXJyLCJpbnZhbGlkIElQIGFkZHJlc3NcbiIpOworLQkJCQlnb3RvIGVycjsKKy0J CQkJfQorLQkJaXBbMF09aW5bMF07CistCQlpcFsxXT1pblsxXTsKKy0JCWlwWzJdPWluWzJdOwor LQkJaXBbM109aW5bM107CistCQl9CistCWVsc2UKKy0JCXsgLyogZG8gYSBnZXRob3N0YnluYW1l ICovCistCQlzdHJ1Y3QgaG9zdGVudCAqaGU7CistCistCQlpZiAoIXNzbF9zb2NrX2luaXQoKSkg cmV0dXJuKDApOworLQorLQkJaGU9R2V0SG9zdEJ5TmFtZShzdHIpOworLQkJaWYgKGhlID09IE5V TEwpCistCQkJeworLQkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0aG9zdGJ5bmFtZSBmYWlsdXJl XG4iKTsKKy0JCQlnb3RvIGVycjsKKy0JCQl9CistCQkvKiBjYXN0IHRvIHNob3J0IGJlY2F1c2Ug b2Ygd2luMTYgd2luc29jayBkZWZpbml0aW9uICovCistCQlpZiAoKHNob3J0KWhlLT5oX2FkZHJ0 eXBlICE9IEFGX0lORVQpCisrCXA9c3RyY2hyKHgsJzonKTsKKysJaWYgKHAgPT0gTlVMTCkKKyAJ CQl7CistCQkJQklPX3ByaW50ZihiaW9fZXJyLCJnZXRob3N0YnluYW1lIGFkZHIgaXMgbm90IEFG X0lORVRcbiIpOworLQkJCXJldHVybigwKTsKKy0JCQl9CistCQlpcFswXT1oZS0+aF9hZGRyX2xp c3RbMF1bMF07CistCQlpcFsxXT1oZS0+aF9hZGRyX2xpc3RbMF1bMV07CistCQlpcFsyXT1oZS0+ aF9hZGRyX2xpc3RbMF1bMl07CistCQlpcFszXT1oZS0+aF9hZGRyX2xpc3RbMF1bM107CistCQl9 CistCXJldHVybigxKTsKKy1lcnI6CisrCQlCSU9fcHJpbnRmKGJpb19lcnIsIm5vIHBvcnQgZGVm aW5lZFxuIik7CisgCXJldHVybigwKTsKKyAJfQorKwkqKHArKyk9J1wwJzsKKyAKKy1pbnQgZXh0 cmFjdF9wb3J0KGNoYXIgKnN0ciwgc2hvcnQgKnBvcnRfcHRyKQorLQl7CistCWludCBpOworLQlz dHJ1Y3Qgc2VydmVudCAqczsKKysJaWYgKGhvc3RfcHRyICE9IE5VTEwpICpob3N0X3B0cj1oOwor KwlpZiAocG9ydF9wdHIgIT0gTlVMTCkgKnBvcnRfcHRyPXA7CisgCistCWk9YXRvaShzdHIpOwor LQlpZiAoaSAhPSAwKQorLQkJKnBvcnRfcHRyPSh1bnNpZ25lZCBzaG9ydClpOworLQllbHNlCist CQl7CistCQlzPWdldHNlcnZieW5hbWUoc3RyLCJ0Y3AiKTsKKy0JCWlmIChzID09IE5VTEwpCist CQkJeworLQkJCUJJT19wcmludGYoYmlvX2VyciwiZ2V0c2VydmJ5bmFtZSBmYWlsdXJlIGZvciAl c1xuIixzdHIpOworLQkJCXJldHVybigwKTsKKy0JCQl9CistCQkqcG9ydF9wdHI9bnRvaHMoKHVu c2lnbmVkIHNob3J0KXMtPnNfcG9ydCk7CistCQl9CisgCXJldHVybigxKTsKKyAJfQorIAoKZGlm ZiAtLWdpdCBhL29wZW5zc2wuc3BlYyBiL29wZW5zc2wuc3BlYwppbmRleCA3Y2NlYzM0Li5kNmVi NjdiIDEwMDY0NAotLS0gYS9vcGVuc3NsLnNwZWMKKysrIGIvb3BlbnNzbC5zcGVjCkBAIC0yMyw3 ICsyMyw3IEBACiBTdW1tYXJ5OiBBIGdlbmVyYWwgcHVycG9zZSBjcnlwdG9ncmFwaHkgbGlicmFy eSB3aXRoIFRMUyBpbXBsZW1lbnRhdGlvbgogTmFtZTogb3BlbnNzbAogVmVyc2lvbjogMS4wLjAK LVJlbGVhc2U6IDAuMjAuJXtiZXRhfSV7P2Rpc3R9CitSZWxlYXNlOiAwLjIxLiV7YmV0YX0lez9k aXN0fQogIyBXZSByZW1vdmUgY2VydGFpbiBwYXRlbnRlZCBhbGdvcml0aG1zIGZyb20gdGhlIG9w ZW5zc2wgc291cmNlIHRhcmJhbGwKICMgd2l0aCB0aGUgaG9iYmxlLW9wZW5zc2wgc2NyaXB0IHdo aWNoIGlzIGluY2x1ZGVkIGJlbG93LgogU291cmNlOiBvcGVuc3NsLSV7dmVyc2lvbn0tJXtiZXRh fS11c2EudGFyLmJ6MgpAQCAtNTAsNyArNTAsNyBAQCBQYXRjaDMzOiBvcGVuc3NsLTEuMC4wLWJl dGE0LWNhLWRpci5wYXRjaAogUGF0Y2gzNDogb3BlbnNzbC0wLjkuNi14NTA5LnBhdGNoCiBQYXRj aDM1OiBvcGVuc3NsLTAuOS44ai12ZXJzaW9uLWFkZC1lbmdpbmVzLnBhdGNoCiBQYXRjaDM4OiBv cGVuc3NsLTEuMC4wLWJldGE1LWNpcGhlci1jaGFuZ2UucGF0Y2gKLVBhdGNoMzk6IG9wZW5zc2wt MS4wLjAtYmV0YTMtaXB2Ni1hcHBzLnBhdGNoCitQYXRjaDM5OiBvcGVuc3NsLTEuMC4wLWJldGE1 LWlwdjYtYXBwcy5wYXRjaAogUGF0Y2g0MDogb3BlbnNzbC0xLjAuMC1iZXRhNS1maXBzLnBhdGNo CiBQYXRjaDQxOiBvcGVuc3NsLTEuMC4wLWJldGEzLWZpcHNjaGVjay5wYXRjaAogUGF0Y2g0Mzog b3BlbnNzbC0xLjAuMC1iZXRhMy1maXBzbW9kZS5wYXRjaApAQCAtNjIsNiArNjIsNyBAQCBQYXRj aDUwOiBvcGVuc3NsLTEuMC4wLWJldGE0LWR0bHMxLWFiaS5wYXRjaAogUGF0Y2g1MTogb3BlbnNz bC0xLjAuMC1iZXRhNS12ZXJzaW9uLnBhdGNoCiBQYXRjaDUyOiBvcGVuc3NsLTEuMC4wLWJldGE0 LWFlc25pLnBhdGNoCiAjIEJhY2twb3J0ZWQgZml4ZXMgaW5jbHVkaW5nIHNlY3VyaXR5IGZpeGVz CitQYXRjaDUzOiBvcGVuc3NsLTEuMC4wLWJldGE1LWNsZWFuc2UucGF0Y2gKIAogTGljZW5zZTog T3BlblNTTAogR3JvdXA6IFN5c3RlbSBFbnZpcm9ubWVudC9MaWJyYXJpZXMKQEAgLTE0MCw2ICsx NDEsNyBAQCBmcm9tIG90aGVyIGZvcm1hdHMgdG8gdGhlIGZvcm1hdHMgdXNlZCBieSB0aGUgT3Bl blNTTCB0b29sa2l0LgogJXBhdGNoNTAgLXAxIC1iIC5kdGxzMS1hYmkKICVwYXRjaDUxIC1wMSAt YiAudmVyc2lvbgogJXBhdGNoNTIgLXAxIC1iIC5hZXNuaQorJXBhdGNoNTMgLXAxIC1iIC5jbGVh bnNlCiAKICMgTW9kaWZ5IHRoZSB2YXJpb3VzIHBlcmwgc2NyaXB0cyB0byByZWZlcmVuY2UgcGVy bCBpbiB0aGUgcmlnaHQgbG9jYXRpb24uCiBwZXJsIHV0aWwvcGVybHBhdGgucGwgYGRpcm5hbWUg JXtfX3Blcmx9YApAQCAtMzg1LDYgKzM4NywxMSBAQCBybSAtcmYgJFJQTV9CVUlMRF9ST09ULyV7 X2xpYmRpcn0vZmlwc2NhbmlzdGVyLioKICVwb3N0dW4gLXAgL3NiaW4vbGRjb25maWcKIAogJWNo YW5nZWxvZworKiBGcmkgRmViIDEyIDIwMTAgVG9tYXMgTXJheiA8dG1yYXpAcmVkaGF0LmNvbT4g MS4wLjAtMC4yMS5iZXRhNQorLSBncmFjZWZ1bGx5IGhhbmRsZSB6ZXJvIGxlbmd0aCBpbiBhc3Nl bWJsZXIgaW1wbGVtZW50YXRpb25zIG9mCisgIE9QRU5TU0xfY2xlYW5zZSAoIzU2NDAyOSkKKy0g ZG8gbm90IGZhaWwgaW4gc19zZXJ2ZXIgaWYgY2xpZW50IGhvc3RuYW1lIG5vdCByZXNvbHZhYmxl ICgjNTYxMjYwKQorCiAqIFdlZCBKYW4gMjAgMjAxMCBUb21hcyBNcmF6IDx0bXJhekByZWRoYXQu Y29tPiAxLjAuMC0wLjIwLmJldGE1CiAtIG5ldyB1cHN0cmVhbSByZWxlYXNlCiAK