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: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Delete upstreamed patches Date: Sun, 31 May 2026 02:07:40 GMT Message-ID: <178019326059.1.17452965003865725176.rpms-ibus-9fc0c9da0a16@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 9fc0c9da0a16d5b6fdac3d8d78741c4336c9f76d QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvaWJ1cwpCcmFuY2gg OiBhdXRvdG9vbApDb21taXQgOiA5ZmMwYzlkYTBhMTZkNWI2ZmRhYzNkOGQ3ODc0MWM0MzM2Yzlm NzZkCkF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgpEYXRlICAg OiAyMDIxLTA4LTIwVDE1OjU1OjQ1KzA5OjAwClN0YXRzICA6ICswLy02MjAxIGluIDEgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2lidXMvYy85ZmMw YzlkYTBhMTZkNWI2ZmRhYzNkOGQ3ODc0MWM0MzM2YzlmNzZkP2JyYW5jaD1hdXRvdG9vbAoKTG9n OgpEZWxldGUgdXBzdHJlYW1lZCBwYXRjaGVzCgotLS0KZGlmZiAtLWdpdCBhL2lidXMtSEVBRC5w YXRjaCBiL2lidXMtSEVBRC5wYXRjaAppbmRleCAwYjU2YWY3Li4wNWMzYzk3IDEwMDY0NAotLS0g YS9pYnVzLUhFQUQucGF0Y2gKKysrIGIvaWJ1cy1IRUFELnBhdGNoCkBAIC0xLDYyMDQgKzEsMyBA QAotRnJvbSAyMTRiNjBhM2FmNjdiNmU4ZGFmZGI4ZWRiYTY2NmEzNjlmMThiZTEyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwu Y29tPgotRGF0ZTogRnJpLCAyNiBNYXIgMjAyMSAyMjo0ODowOCArMDkwMAotU3ViamVjdDogW1BB VENIXSBzcmMvdGVzdHM6IFJ1biBnbm9tZS1zZXNzaW9uIHdpdGggbm8tb3ZlcnZpZXcgbW9kZQot Ci1nbm9tZS1zaGVsbCA0MCBub3cgc2hvd3MgdGhlIG92ZXJ2aWV3IG1vZGUgYnkgbG9naW4gYW5k Ci1nbm9tZS1kZXNrdG9wLXRlc3RpbmctcnVubmVyIGNhbm5vdCBnZXQgdGhlIGlucHV0IGZvY3Vz LgotUnVubmluZyBnbm9tZS1zZXNzaW9uIHdpdGggbm8tb3ZlcnZpZXcgc2hlbGwgZXh0ZW5zaW9u IGNhbgotZ2V0IHRoZSBpbnB1dCBmb2N1cyBvciBtdXR0ZXIgaXMgYW5vdGhlciBvcHRpb24uCi1U aGUgZGVmYXVsdCBtYXkgYmUgY2hhbmdlZCB0byB0d20gaWYgbXV0dGVyIGFsc28gd2lsbCBiZSBj aGFuZ2VkCi1ub3QgdG8gYWNjZXB0IHRoZSBhcHBsaWNhdGlvbiBmb2N1cyBpbiB0aGUgZnV0dXJl LgotCi1EaXNhYmxlIFRvdXIgZGlhbG9nIHdoaWNoIHByZXZlbnQgdGVzdCBhcHBsaWNhdGlvbiBm cm9tIGdldHRpbmcgdGhlCi1pbnB1dCBmb2N1cy4KLQotRG9uJ3Qgb3V0cHV0IEZBSUwgaWYgdGhl IGFjdHVhbCBmYWlsdXJlIGlzIDAgZm9yIEZlZG9yYSBDSS4KLQotQlVHPWh0dHBzOi8vZGlzY291 cnNlLmdub21lLm9yZy90L2ZvY3VzLW9uLWF1dG9zdGFydC1hcHBsaWNhdGlvbi1ieS1sb2dpbi81 ODYzCi0tLS0KLSBzcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluIHwgNjkg KysrKysrKysrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYwIGluc2VydGlvbnMo KyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9w LXRlc3RpbmctcnVubmVyLmluIGIvc3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5l ci5pbgotaW5kZXggNDIzMmM1NDkuLjE1YjIzNjlkIDEwMDc1NQotLS0tIGEvc3JjL3Rlc3RzL2li dXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbgotKysrIGIvc3JjL3Rlc3RzL2lidXMtZGVza3Rv cC10ZXN0aW5nLXJ1bm5lci5pbgotQEAgLTQsNyArNCw3IEBACi0gIwotICMgaWJ1cyAtIFRoZSBJ bnB1dCBCdXMKLSAjCi0tIyBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMCBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsjIENvcHlyaWdodCAoYykgMjAxOC0yMDIxIFRh a2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICMgQ29weXJpZ2h0IChj KSAyMDE4IFJlZCBIYXQsIEluYy4KLSAjCi0gIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotQEAgLTM2LDcgKzM2LDcg QEAKLSAKLSAKLSBQUk9HTkFNRT1gYmFzZW5hbWUgJDBgCi0tVkVSU0lPTj0wLjEKLStWRVJTSU9O PTAuMgotIERJU1BMQVk9Ojk5LjAKLSBCVUlMRERJUj0iLiIKLSBTUkNESVI9Ii4iCi1AQCAtODAs NyArODAsOSBAQCB1c2FnZSgpCi0gIi1iLCAtLWJ1aWxkZGlyPUJVSUxERElSICAgICAgICAgIFNl dCB0aGUgQlVJTERESVJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAiLXMsIC0tc3Jj ZGlyPVNPVVJDRURJUiAgICAgICAgICAgU2V0IHRoZSBTT1VSQ0VESVJcbiIgICAgICAgICAgICAg ICAgICAgICAgICAgXAotICItYywgLS1uby1ncmFwaGljcyAgICAgICAgICAgICAgICBVc2UgWHZm YiBpbnN0ZWFkIG9mIFhvcmdcbiIgICAgICAgICAgICAgICAgICBcCi0tIi1kLCAtLWRlc2t0b3A9 REVTS1RPUCAgICAgICAgICAgIFJ1biBERVNUS1RPUC4gVGhlIGRlZmF1bHQgaXMgZ25vbWUtc2Vz c2lvblxuIiBcCi0rIi1kLCAtLWRlc2t0b3A9REVTS1RPUCAgICAgICAgICAgIFJ1biBERVNUS1RP UC4gVGhlIGRlZmF1bHQgaXMgZ25vbWUtc2Vzc2lvbi5cbiIgXAotKyIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBTdWZmaXggJy13aXRoLWRidXMnIGNhbiBydW4gREVTS1RPUCB3aXRo IGRidXMgc2Vzc2lvbi4iIFwKLSsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRS5n LiAtLWRlc2t0b3A9bXV0dGVyLXdpdGgtZGJ1cyIgICAgICAgICAgICAgXAotICItdCwgLS10ZXN0 cz1cIlRFU1RTLi4uXCIgICAgICAgICAgIFJ1biBURVNUUyBwcm9ncmFtcyB3aGljaCBpcyBzZXBh cmF0ZWQgYnkgc3BhY2VcbiIgXAotICItciwgLS1ydW5uZXI9UlVOTkVSICAgICAgICAgICAgICBS dW4gVEVTVFMgcHJvZ3JhbXMgd2l0aCBhIHRlc3QgUlVOTkVSLlxuIiAgICBcCi0gIiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJVTk5ERVIgPSBnbm9tZSBvciBkZWZhdWx0LlxuIiAg ICAgICAgICAgICAgIFwKLUBAIC0xMTUsNiArMTE3LDEzIEBAIHBhcnNlX2FyZ3MoKQotICAgICAg ICAgKiApICAgICAgICAgICAgICAgICAgdXNhZ2U7IGV4aXQgMTs7Ci0gICAgICAgICBlc2FjCi0g ICAgIGRvbmUKLSsgICAgREw9JyQnCi0rICAgIGVjaG8gIiRERVNLVE9QX0NPTU1BTkQiIHwgZ3Jl cCAiXC13aXRoXC1kYnVzJERMIiA+IC9kZXYvbnVsbAotKyAgICBIQVNfREJVU19TVUZGSVg9JD8K LSsgICAgaWYgWyAkSEFTX0RCVVNfU1VGRklYIC1lcSAwIF0gOyB0aGVuCi0rICAgICAgICBERVNL VE9QX0NPTU1BTkQ9YGVjaG8gIiRERVNLVE9QX0NPTU1BTkQiIHwgc2VkIC1lICdzLy13aXRoLWRi dXMkLy8nYAotKyAgICAgICAgREVTS1RPUF9DT01NQU5EPSJkYnVzLWxhdW5jaCAtLWV4aXQtd2l0 aC1zZXNzaW9uICRERVNLVE9QX0NPTU1BTkQiCi0rICAgIGZpCi0gfQotIAotIGluaXRfZGVza3Rv cCgpCi1AQCAtMTI0LDggKzEzMyw5IEBAIGluaXRfZGVza3RvcCgpCi0gICAgICAgICAgICAgcm0g JFJFU1VMVF9MT0cKLSAgICAgICAgIGZpCi0gICAgIGZpCi0tICAgIEhBU19TVERPVVQ9YGVjaG8g IiRURVNUX0xPRyIgfCBncmVwICc6c3Rkb3V0J2AKLS0gICAgaWYgWyB4IiRIQVNfU1RET1VUIiAh PSB4IF0gOyB0aGVuCi0rICAgIGVjaG8gIiRURVNUX0xPRyIgfCBncmVwICc6c3Rkb3V0JyA+IC9k ZXYvbnVsbAotKyAgICBIQVNfU1RET1VUPSQ/Ci0rICAgIGlmIFsgJEhBU19TVERPVVQgLWVxIDAg XSA7IHRoZW4KLSAgICAgICAgIFRFU1RfTE9HPWBlY2hvICIkVEVTVF9MT0ciIHwgc2VkIC1lICdz fDpzdGRvdXR8fCdgCi0gICAgICAgICBURVNUX0xPR19TVERPVVQ9MQotICAgICBmaQotQEAgLTIw Myw2ICsyMTMsMzkgQEAgcnVuX2RidXNfZGFlbW9uKCkKLSAgICAgZXhwb3J0IERCVVNfU0VTU0lP Tl9CVVNfQUREUkVTUz0idW5peDpwYXRoPS9ydW4vdXNlci8kVUlEL2J1cyIKLSB9Ci0gCi0raW5p dF9nbm9tZSgpCi0rewotKyAgICAjIERpc2FibGUgVG91ciBkaWFsb2cgdG8gZ2V0IGZvY3VzCi0r ICAgIFY9YGdzZXR0aW5ncyBnZXQgb3JnLmdub21lLnNoZWxsIHdlbGNvbWUtZGlhbG9nLWxhc3Qt c2hvd24tdmVyc2lvbmAKLSsgICAgaWYgWyB4IiRWIiA9IHggXSA7IHRoZW4KLSsgICAgICAgIGdz ZXR0aW5ncyBzZXQgb3JnLmdub21lLnNoZWxsIHdlbGNvbWUtZGlhbG9nLWxhc3Qtc2hvd24tdmVy c2lvbiAnMTAwJwotKyAgICBmaQotKyAgICAjIGdub21lLXNoZWxsIG5vdyBzdGFydHMgb3ZlcnZp ZXcgbW9kZSBieSBsb2dpbi4KLSsgICAgIyBodHRwczovL2V4dGVuc2lvbnMuZ25vbWUub3JnL2V4 dGVuc2lvbi80MDk5L25vLW92ZXJ2aWV3LwotKyAgICBOT19TWVNfRElSPS91c3Ivc2hhcmUvZ25v bWUtc2hlbGwvZXh0ZW5zaW9ucy9uby1vdmVydmlld0BmdGh4Ci0rICAgIE5PX1VTRVJfRElSPSRI T01FLy5sb2NhbC9zaGFyZS9nbm9tZS1zaGVsbC9leHRlbnNpb25zL25vLW92ZXJ2aWV3QGZ0aHgK LSsgICAgaWYgWyAhIC1kICROT19TWVNfRElSIF0gJiYgWyAhIC1kICROT19VU0VSX0RJUiBdIDsg dGhlbgotKyAgICAgICAgbWtkaXIgLXAgYGRpcm5hbWUgJE5PX1VTRVJfRElSYAotKyAgICAgICAg Y3AgLVIgbm8tb3ZlcnZpZXdAZnRoeCBgZGlybmFtZSAkTk9fVVNFUl9ESVJgCi0rICAgIGZpCi0r ICAgIFY9YGdzZXR0aW5ncyBnZXQgb3JnLmdub21lLnNoZWxsIGRpc2FibGUtdXNlci1leHRlbnNp b25zYAotKyAgICBpZiBbIHgiJFYiID0geCJ0cnVlIiBdIDsgdGhlbgotKyAgICAgICAgZ3NldHRp bmdzIHNldCBvcmcuZ25vbWUuc2hlbGwgZGlzYWJsZS11c2VyLWV4dGVuc2lvbnMgZmFsc2UKLSsg ICAgZmkKLSsgICAgVj1gZ3NldHRpbmdzIGdldCBvcmcuZ25vbWUuc2hlbGwgZW5hYmxlZC1leHRl bnNpb25zYAotKyAgICBlY2hvICIkViIgfCBncmVwICJuby1vdmVydmlldyIgPiAvZGV2L251bGwK LSsgICAgVjI9JD8KLSsgICAgaWYgWyAkVjIgLW5lIDAgXSA7IHRoZW4KLSsgICAgICAgIFYzPWBl Y2hvICIkViIgfCBzZWQgLWUgJ3MvXFsvLycgLWUgJ3MvXF0vLydgCi0rICAgICAgICBpZiBbIHgi JFYzIiA9IHggXSA7IHRoZW4KLSsgICAgICAgICAgICBWND0iWyduby1vdmVydmlld0BmdGh4J10i Ci0rICAgICAgICBlbHNlCi0rICAgICAgICAgICAgVjQ9IlskVjMsICduby1vdmVydmlld0BmdGh4 J10iCi0rICAgICAgICBmaQotKyAgICAgICAgZ3NldHRpbmdzIHNldCBvcmcuZ25vbWUuc2hlbGwg ZW5hYmxlZC1leHRlbnNpb25zICIkVjQiCi0rICAgIGZpCi0rfQotKwotIHJ1bl9kZXNrdG9wKCkK LSB7Ci0gICAgIGlmIHRlc3QgJEhBVkVfR1JBUEhJQ1MgLWVxIDEgOyB0aGVuCi1AQCAtMjE3LDgg KzI2MCwxMSBAQCBydW5fZGVza3RvcCgpCi0gICAgICRERVNLVE9QX0NPTU1BTkQgJgotICAgICBQ SURfR05PTUVfU0VTU0lPTj0kIQotICAgICBzbGVlcCAzMAotLSAgICBIQVNfR05PTUU9YGVjaG8g JERFU0tUT1BfQ09NTUFORCB8IGdyZXAgZ25vbWUtc2Vzc2lvbmAKLS0gICAgaWYgWyB4IiRIQVNf R05PTUUiID0geCBdIDsgdGhlbgotKyAgICBlY2hvICIkREVTS1RPUF9DT01NQU5EIiB8IGdyZXAg Z25vbWUtc2Vzc2lvbiA+IC9kZXYvbnVsbAotKyAgICBIQVNfR05PTUU9JD8KLSsgICAgaWYgWyAg JEhBU19HTk9NRSAtZXEgMCBdIDsgdGhlbgotKyAgICAgICAgaW5pdF9nbm9tZQotKyAgICBlbHNl Ci0gICAgICAgICBpYnVzLWRhZW1vbiAtLWRhZW1vbml6ZSAtLXZlcmJvc2UKLSAgICAgICAgIHNs ZWVwIDMKLSAgICAgZmkKLUBAIC0zNjAsOCArNDA2LDEzIEBAIEVPRl9SVU5ORVIKLSAgICAgICAg IDs7Ci0gICAgIGVzYWMKLSAgICAgZWNobyAiIgotLSAgICBwcmludF9sb2cgLWUgIiR7R1JFRU59 UEFTUyR7TkN9OiAkcGFzcyIKLS0gICAgcHJpbnRfbG9nIC1lICIke1JFRH1GQUlMJHtOQ306ICRm YWlsIgotKyAgICAjIEZlZG9yYSBDSSBhc3N1bWVzIHRoZSB0ZXN0IGlzIGZhaWxlZCBldmVuIGlm ICRmYWlsIGlzIDAuCi0rICAgIGlmIFsgJHBhc3MgLW5lIDAgXSA7IHRoZW4KLSsgICAgICAgIHBy aW50X2xvZyAtZSAiJHtHUkVFTn1QQVNTJHtOQ306ICRwYXNzIgotKyAgICBmaQotKyAgICBpZiBb ICRmYWlsIC1uZSAwIF0gOyB0aGVuCi0rICAgICAgICBwcmludF9sb2cgLWUgIiR7UkVEfUZBSUwk e05DfTogJGZhaWwiCi0rICAgIGZpCi0gICAgIGVjaG8gIiIKLSAgICAgaWYgWyAkVEVTVF9MT0df U1RET1VUIC1lcSAxIF0gOyB0aGVuCi0gICAgICAgICBjYXQgJFRFU1RfTE9HCi0tLSAKLTIuMjgu MAotCi1Gcm9tIGQxMDVhMzk0MWFhZDUzYjBjNzQ3MGExZTljMTAzMzk4N2IwMjlmYjggTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFp bC5jb20+Ci1EYXRlOiBXZWQsIDEyIE1heSAyMDIxIDE4OjU0OjMwICswOTAwCi1TdWJqZWN0OiBb UEFUQ0hdIGNsaWVudC9ndGsyOiBJbXBsZW1lbnQKLSBpYnVzX2ltX2NvbnRleHRfc2V0X3N1cnJv dW5kaW5nX3dpdGhfc2VsZWN0aW9uKCkKLQotU2VsZWN0aW9uIGJvdW5kcyBuZWVkIHRvIGJlIHJl LWNhbGN1bGF0ZWQgd2hlbiBwcmUtZWRpdCB0ZXh0IGlzCi1pbnNlcnRlZCBhbmQgdGhlIHNlbGVj dGlvbiBwb3NpdGlvbiBpcyBjaGFuZ2VkLgotR1RLNCBoYXMgYSBuZXcgQVBJIEd0a0lNQ29udGV4 dC5zZXRfc3Vycm91bmRpbmdfd2l0aF9zZWxlY3Rpb24oKQotdG8gZml4IHRoaXMgaXNzdWUgYW5k IG5vdyBJQnVzIEdUSyBtb2R1bGUgaW5oZXJpdHMgdGhlIEFQSS4KLQotQlVHPWh0dHBzOi8vZ2l0 aHViLmNvbS9pYnVzL2lidXMvaXNzdWVzLzIwMTMKLS0tLQotIGNsaWVudC9ndGsyL2lidXNpbWNv bnRleHQuYyB8IDUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KLSAxIGZp bGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdp dCBhL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRl eHQuYwotaW5kZXggZTE1MzA4MWQuLjYxMTk0ODE2IDEwMDY0NAotLS0tIGEvY2xpZW50L2d0azIv aWJ1c2ltY29udGV4dC5jCi0rKysgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMKLUBAIC0y LDggKzIsOCBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1 dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1 YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMCBUYWthbyBGdWppd2Fy YSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAy MCBSZWQgSGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA4LTIw MjEgUmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC0xNjUsMTEgKzE2NSwx OSBAQCBzdGF0aWMgdm9pZCAgICAgaWJ1c19pbV9jb250ZXh0X3NldF9jdXJzb3JfbG9jYXRpb24K LSBzdGF0aWMgdm9pZCAgICAgaWJ1c19pbV9jb250ZXh0X3NldF91c2VfcHJlZWRpdAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEd0a0lNQ29udGV4dCAgICAg ICAgICAgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICB1c2VfcHJlZWRpdCk7Ci0rI2lmICFHVEtfQ0hF Q0tfVkVSU0lPTiAoNCwgMSwgMikKLSBzdGF0aWMgdm9pZCAgICAgaWJ1c19pbV9jb250ZXh0X3Nl dF9zdXJyb3VuZGluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKEd0a0lNQ29udGV4dCAgKnNsYXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKnRleHQsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgbGVuLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgIGN1cnNv cl9pbmRleCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50ICAgICAgICAgICAgbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCAgICAgICAgICAgIGN1cnNvcl9pbmRleCk7Ci0rI2VuZGlmCi0rc3RhdGlj IHZvaWQgICAgIGlidXNfaW1fY29udGV4dF9zZXRfc3Vycm91bmRpbmdfd2l0aF9zZWxlY3Rpb24K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHdGtJTUNvbnRl eHQgICpzbGF2ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBnY2hhciAgICp0ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCAgICAgICAgICAgIGxlbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBjdXJzb3JfaW5kZXgsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAg YW5jaG9yX2luZGV4KTsKLSAKLSAvKiBzdGF0aWMgbWV0aG9kcyovCi0gc3RhdGljIHZvaWQgICAg IF9pYnVzX2NvbnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dF9jYgotQEAgLTcyNCw3ICs3MzIsMTIg QEAgaWJ1c19pbV9jb250ZXh0X2NsYXNzX2luaXQgKElCdXNJTUNvbnRleHRDbGFzcyAqY2xhc3Mp Ci0gI2VuZGlmCi0gICAgIGltX2NvbnRleHRfY2xhc3MtPnNldF9jdXJzb3JfbG9jYXRpb24gPSBp YnVzX2ltX2NvbnRleHRfc2V0X2N1cnNvcl9sb2NhdGlvbjsKLSAgICAgaW1fY29udGV4dF9jbGFz cy0+c2V0X3VzZV9wcmVlZGl0ID0gaWJ1c19pbV9jb250ZXh0X3NldF91c2VfcHJlZWRpdDsKLSsj aWYgR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDEsIDIpCi0rICAgIGltX2NvbnRleHRfY2xhc3MtPnNl dF9zdXJyb3VuZGluZ193aXRoX3NlbGVjdGlvbgotKyAgICAgICAgICAgID0gaWJ1c19pbV9jb250 ZXh0X3NldF9zdXJyb3VuZGluZ193aXRoX3NlbGVjdGlvbjsKLSsjZWxzZQotICAgICBpbV9jb250 ZXh0X2NsYXNzLT5zZXRfc3Vycm91bmRpbmcgPSBpYnVzX2ltX2NvbnRleHRfc2V0X3N1cnJvdW5k aW5nOwotKyNlbmRpZgotICAgICBnb2JqZWN0X2NsYXNzLT5ub3RpZnkgPSBpYnVzX2ltX2NvbnRl eHRfbm90aWZ5OwotICAgICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGlidXNfaW1fY29udGV4 dF9maW5hbGl6ZTsKLSAKLUBAIC0xNjI0LDggKzE2MzcsMjIgQEAgZ2V0X3NlbGVjdGlvbl9hbmNo b3JfcG9pbnQgKElCdXNJTUNvbnRleHQgKmlidXNpbWNvbnRleHQsCi0gc3RhdGljIHZvaWQKLSBp YnVzX2ltX2NvbnRleHRfc2V0X3N1cnJvdW5kaW5nIChHdGtJTUNvbnRleHQgICpjb250ZXh0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKnRleHQsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgbGVuLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgIGN1cnNvcl9pbmRl eCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICBsZW4s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgY3Vyc29y X2luZGV4KQotK3sKLSsgICAgaWJ1c19pbV9jb250ZXh0X3NldF9zdXJyb3VuZGluZ193aXRoX3Nl bGVjdGlvbiAoY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjdXJzb3JfaW5kZXgsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9pbmRleCk7Ci0rfQotKwotK3N0 YXRpYyB2b2lkCi0raWJ1c19pbV9jb250ZXh0X3NldF9zdXJyb3VuZGluZ193aXRoX3NlbGVjdGlv biAoR3RrSU1Db250ZXh0ICAqY29udGV4dCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICp0ZXh0LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgIGxlbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAg ICAgICBjdXJzb3JfaW5kZXgsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50ICAgICAgICAgICAgYW5jaG9yX2luZGV4KQotIHsKLSAgICAgZ19yZXR1 cm5faWZfZmFpbCAoY29udGV4dCAhPSBOVUxMKTsKLSAgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJV U19JU19JTV9DT05URVhUIChjb250ZXh0KSk7Ci1AQCAtMTY0NywxOCArMTY3NCwyNiBAQCBpYnVz X2ltX2NvbnRleHRfc2V0X3N1cnJvdW5kaW5nIChHdGtJTUNvbnRleHQgICpjb250ZXh0LAotICAg ICAgICAgaWJ1c3RleHQgPSBpYnVzX3RleHRfbmV3X2Zyb21fc3RyaW5nIChwKTsKLSAgICAgICAg IGdfZnJlZSAocCk7Ci0gCi0tICAgICAgICBndWludCBhbmNob3JfcG9zID0gZ2V0X3NlbGVjdGlv bl9hbmNob3JfcG9pbnQgKGlidXNpbWNvbnRleHQsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0ZjhfbGVuKTsKLSsg ICAgICAgIGdpbnQgYW5jaG9yX3BvcyA9IGdldF9zZWxlY3Rpb25fYW5jaG9yX3BvaW50IChpYnVz aW1jb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGN1cnNvcl9wb3MsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdXRmOF9sZW4pOwotICAgICAgICAgaWJ1c19pbnB1dF9jb250 ZXh0X3NldF9zdXJyb3VuZGluZ190ZXh0IChpYnVzaW1jb250ZXh0LT5pYnVzY29udGV4dCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c3RleHQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNv cl9wb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGFuY2hvcl9wb3MpOwotICAgICB9Ci0rI2lmIEdUS19DSEVDS19WRVJTSU9OICg0LCAxLCAyKQot KyAgICBndGtfaW1fY29udGV4dF9zZXRfc3Vycm91bmRpbmdfd2l0aF9zZWxlY3Rpb24gKGlidXNp bWNvbnRleHQtPnNsYXZlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGVuLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGN1cnNvcl9pbmRleCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JfaW5kZXgpOwotKyNlbHNlCi0gICAgIGd0 a19pbV9jb250ZXh0X3NldF9zdXJyb3VuZGluZyAoaWJ1c2ltY29udGV4dC0+c2xhdmUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3Vyc29yX2luZGV4KTsKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS0tIAot Mi4yOC4wCi0KLUZyb20gZTllMTY0Mjg3MDk5NGFiZmRiZDA2YjAxMzg1MjRhYzIzMWMxNTliOCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmEx QGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTYgSnVuIDIwMjEgMTg6MDA6MzEgKzA5MDAKLVN1Ympl Y3Q6IFtQQVRDSF0gRml4IGNvZGUgcmV2aWV3cwotCi0tLS0KLSBidXMvaWJ1c2ltcGwuYyAgICAg ICAgICAgICAgICB8ICAyMyArKysrLS0KLSBidXMvc2VydmVyLmMgICAgICAgICAgICAgICAgICB8 ICAxMCArLS0KLSBjbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgICB8ICAgOCArKwotIGNsaWVu dC93YXlsYW5kL21haW4uYyAgICAgICAgIHwgICA5ICsrLQotIGNsaWVudC94MTEvbWFpbi5jICAg ICAgICAgICAgIHwgIDIyICsrKy0tCi0gY29uZi9kY29uZi9tYWluLmMgICAgICAgICAgICAgfCAg IDcgKy0KLSBwb3J0YWwvcG9ydGFsLmMgICAgICAgICAgICAgICB8ICAgNyArLQotIHNldHVwL2li dXMtc2V0dXAuaW4gICAgICAgICAgIHwgICAyICstCi0gc3JjL2Vtb2ppLXBhcnNlci5jICAgICAg ICAgICAgfCAgNDYgKysrKysrLS0tLS0KLSBzcmMvaWJ1c2FjY2VsZ3JvdXAuYyAgICAgICAgICB8 ICAgMiArLQotIHNyYy9pYnVzYnVzLmMgICAgICAgICAgICAgICAgIHwgIDEwICsrLQotIHNyYy9p YnVzY29tcG9zZXRhYmxlLmMgICAgICAgIHwgIDkxICsrKysrKysrKysrKysrKysrKy0tLQotIHNy Yy9pYnVzZW1vamkuYyAgICAgICAgICAgICAgIHwgICA4ICstCi0gc3JjL2lidXNlbmdpbmVzaW1w bGUuYyAgICAgICAgfCAgMjEgKysrLS0KLSBzcmMvaWJ1c2hvdGtleS5jICAgICAgICAgICAgICB8 ICAgNCArLQotIHNyYy9pYnVzcmVnaXN0cnkuYyAgICAgICAgICAgIHwgICA5ICsrLQotIHNyYy9p YnVzc2hhcmUuYyAgICAgICAgICAgICAgIHwgIDM2ICsrKysrLS0tLQotIHNyYy9pYnVzdGV4dC5j ICAgICAgICAgICAgICAgIHwgICA1ICstCi0gc3JjL2lidXN1bmljb2RlLmMgICAgICAgICAgICAg fCAgMTcgKysrLQotIHNyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYyAgICAgIHwgICA2ICstCi0gc3Jj L3Rlc3RzL2lidXMta2V5cHJlc3MuYyAgICAgfCAgIDMgKy0KLSBzcmMvdW5pY29kZS1wYXJzZXIu YyAgICAgICAgICB8ICA1MiArKysrKystLS0tLS0KLSB1dGlsL0lNZGtpdC9GcmFtZU1nci5jICAg ICAgICB8ICAzNCArKysrKysrLQotIHV0aWwvSU1ka2l0L2kxOG5JYy5jICAgICAgICAgIHwgIDQx ICsrKysrKysrLS0KLSB1dGlsL0lNZGtpdC9pMThuTWV0aG9kLmMgICAgICB8ICAyNCArKysrKy0K LSB1dGlsL0lNZGtpdC9pMThuT2Zmc2V0Q2FjaGUuYyB8ICAgMiArLQotIHV0aWwvSU1ka2l0L2kx OG5QdEhkci5jICAgICAgIHwgMTQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0K LSB1dGlsL0lNZGtpdC9pMThuVXRpbC5jICAgICAgICB8ICAyMCArKysrKwotIHV0aWwvSU1ka2l0 L2kxOG5YLmMgICAgICAgICAgIHwgIDI5ICsrKystLS0KLSAyOSBmaWxlcyBjaGFuZ2VkLCA1MjQg aW5zZXJ0aW9ucygrKSwgMTcyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVzL2lidXNp bXBsLmMgYi9idXMvaWJ1c2ltcGwuYwotaW5kZXggZTQzMmU4NDkuLjQ5YTEzOGZlIDEwMDY0NAot LS0tIGEvYnVzL2lidXNpbXBsLmMKLSsrKyBiL2J1cy9pYnVzaW1wbC5jCi1AQCAtMiw4ICsyLDgg QEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0g ICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTMgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFp bC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDExLTIwMjAgVGFrYW8gRnVqaXdhcmEgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgUmVkIEhh dCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIxIFRha2FvIEZ1aml3YXJhIDx0YWth by5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAwOC0yMDIxIFJlZCBI YXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtNjI0LDcgKzYyNCw2IEBAIGJ1c19p YnVzX2ltcGxfZGVzdHJveSAoQnVzSUJ1c0ltcGwgKmlidXMpCi0gCi0gICAgIGdfbGlzdF9mb3Jl YWNoIChpYnVzLT5jb21wb25lbnRzLCAoR0Z1bmMpIGJ1c19jb21wb25lbnRfc3RvcCwgTlVMTCk7 Ci0gCi0tICAgIHBpZCA9IDA7Ci0gICAgIHRpbWVvdXQgPSAwOwotICAgICBmbGFnID0gRkFMU0U7 Ci0gICAgIHdoaWxlICgxKSB7Ci1AQCAtMTE5MCw2ICsxMTg5LDcgQEAgX2lidXNfZ2V0X2N1cnJl bnRfaW5wdXRfY29udGV4dCAoQnVzSUJ1c0ltcGwgICAgICppYnVzLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdEQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgICAgICAgICAqKmVycm9yKQotIHsKLSsg ICAgR1ZhcmlhbnQgKnJldHZhbCA9IE5VTEw7Ci0gICAgIGlmIChlcnJvcikgewotICAgICAgICAg KmVycm9yID0gTlVMTDsKLSAgICAgfQotQEAgLTEyMDQsOCArMTIwNCwxNCBAQCBfaWJ1c19nZXRf Y3VycmVudF9pbnB1dF9jb250ZXh0IChCdXNJQnVzSW1wbCAgICAgKmlidXMsCi0gICAgICAgICBj b25zdCBnY2hhciAqcGF0aCA9IGlidXNfc2VydmljZV9nZXRfb2JqZWN0X3BhdGggKAotICAgICAg ICAgICAgICAgICAoSUJ1c1NlcnZpY2UgKikgaWJ1cy0+Zm9jdXNlZF9jb250ZXh0KTsKLSAgICAg ICAgIC8qIHRoZSBmb3JtYXQtc3RyaW5nICdvJyBpcyBmb3IgYSBELUJ1cyBvYmplY3QgcGF0aC4g Ki8KLS0gICAgICAgIHJldHVybiBnX3ZhcmlhbnRfbmV3X29iamVjdF9wYXRoIChwYXRoKTsKLSsg ICAgICAgIHJldHZhbCA9IGdfdmFyaWFudF9uZXdfb2JqZWN0X3BhdGggKHBhdGgpOwotKyAgICAg ICAgaWYgKCFyZXR2YWwpIHsKLSsgICAgICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdfREJV U19FUlJPUiwgR19EQlVTX0VSUk9SX0ZBSUxFRCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg IkNvdWxkIG5vdCBnZXQgb2JqZWN0IHBhdGggZnJvbSAlcyIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgIHBhdGggPyBwYXRoIDogIihudWxsKSIpOwotKyAgICAgICAgfQotICAgICB9Ci0rICAg IHJldHVybiByZXR2YWw7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTU3Miw2ICsxNTc4LDcg QEAgX2lidXNfZ2V0X2dsb2JhbF9lbmdpbmUgKEJ1c0lCdXNJbXBsICAgICAqaWJ1cywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgKiplcnJvcikKLSB7Ci0gICAgIElC dXNFbmdpbmVEZXNjICpkZXNjID0gTlVMTDsKLSsgICAgR1ZhcmlhbnQgKnJldHZhbCA9IE5VTEw7 Ci0gCi0gICAgIGlmIChlcnJvcikgewotICAgICAgICAgKmVycm9yID0gTlVMTDsKLUBAIC0xNTky LDcgKzE1OTksMTMgQEAgX2lidXNfZ2V0X2dsb2JhbF9lbmdpbmUgKEJ1c0lCdXNJbXBsICAgICAq aWJ1cywKLSAgICAgICAgIEdWYXJpYW50ICp2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2Vy aWFsaXplICgKLSAgICAgICAgICAgICAgICAgKElCdXNTZXJpYWxpemFibGUgKikgZGVzYyk7Ci0g ICAgICAgICAvLyBTZXQgdHlwZSAidiIgZm9yIGludHJvc3BlY3Rpb25feG1sLgotLSAgICAgICAg cmV0dXJuIGdfdmFyaWFudF9uZXdfdmFyaWFudCAodmFyaWFudCk7Ci0rICAgICAgICByZXR2YWwg PSBnX3ZhcmlhbnRfbmV3X3ZhcmlhbnQgKHZhcmlhbnQpOwotKyAgICAgICAgaWYgKCFyZXR2YWwp IHsKLSsgICAgICAgICAgICBnX3NldF9lcnJvciAoZXJyb3IsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgIEdfREJVU19FUlJPUiwgR19EQlVTX0VSUk9SX0ZBSUxFRCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIkZhaWxlZCB0byBzZXJpYWxpemUgZW5naW5lIGRlc2MuIik7Ci0rICAgICAg ICB9Ci0rICAgICAgICByZXR1cm4gcmV0dmFsOwotICAgICB9IHdoaWxlICgwKTsKLSAKLSAgICAg Z19zZXRfZXJyb3IgKGVycm9yLAotZGlmZiAtLWdpdCBhL2J1cy9zZXJ2ZXIuYyBiL2J1cy9zZXJ2 ZXIuYwotaW5kZXggNmM5ZTJjMDIuLmU4ZDBjZTJiIDEwMDY0NAotLS0tIGEvYnVzL3NlcnZlci5j Ci0rKysgYi9idXMvc2VydmVyLmMKLUBAIC0yLDggKzIsOCBAQAotIC8qIHZpbTpzZXQgZXQgc3Rz PTQ6ICovCi0gLyogYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0y MDEwIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAo QykgMjAxMS0yMDE5IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgot LSAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE5IFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5cmlnaHQg KEMpIDIwMTEtMjAyMSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K LSsgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAyMSBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlz IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y Ci0gICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwotQEAgLTIyLDEyICsyMiwxMSBAQAotICAqLwotICNpbmNsdWRlICJzZXJ2ZXIuaCIK LSAKLS0jaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8Z2xpYi9nc3RkaW8uaD4KLSAjaW5j bHVkZSA8Z2lvL2dpby5oPgotLSNpbmNsdWRlIDxzdGRsaWIuaD4KLS0jaW5jbHVkZSA8ZmNudGwu aD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8 c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotIAotICNpbmNsdWRlICJkYnVzaW1wbC5o IgotQEAgLTI4Miw2ICsyODEsNyBAQCBidXNfc2VydmVyX2luaXQgKHZvaWQpCi0gICAgICAgICAg KiBgY2htb2RgIHJ1bnMgZm9yIHRoZSBsYXN0IGRpcmVjdG9yeSBvbmx5IG5vdCB0byBjaGFuZ2Ug dGhlIG1vZGVzCi0gICAgICAgICAgKiBvZiB0aGUgcGFyZW50IGRpcmVjdG9yaWVzLiBFLmcuICIv dG1wL2lidXMiLgotICAgICAgICAgICovCi0rICAgICAgICBlcnJubyA9IDA7Ci0gICAgICAgICBp ZiAoZ19ta2Rpcl93aXRoX3BhcmVudHMgKHVuaXhfZGlyLCAwNzAwKSAhPSAwKSB7Ci0gICAgICAg ICAgICAgZ19lcnJvciAoIm1rZGlyIGlzIGZhaWxlZCBpbjogJXM6ICVzIiwKLSAgICAgICAgICAg ICAgICAgICAgICB1bml4X2RpciwgZ19zdHJlcnJvciAoZXJybm8pKTsKLWRpZmYgLS1naXQgYS9j bGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMgYi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMK LWluZGV4IDYxMTk0ODE2Li5lN2NlNTM2MyAxMDA2NDQKLS0tLSBhL2NsaWVudC9ndGsyL2lidXNp bWNvbnRleHQuYwotKysrIGIvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCi1AQCAtMzg1LDcg KzM4NSw5IEBAIF9wcm9jZXNzX2tleV9ldmVudF9kb25lIChHT2JqZWN0ICAgICAgKm9iamVjdCwK LSAKLSAgICAgUHJvY2Vzc0tleUV2ZW50RGF0YSAqZGF0YSA9IChQcm9jZXNzS2V5RXZlbnREYXRh ICopdXNlcl9kYXRhOwotICAgICBHZGtFdmVudCAqZXZlbnQgPSBkYXRhLT5ldmVudDsKLSsjaWYg R1RLX0NIRUNLX1ZFUlNJT04gKDMsIDk4LCA0KQotICAgICBJQnVzSU1Db250ZXh0ICppYnVzaW1j b250ZXh0ID0gZGF0YS0+aWJ1c2ltY29udGV4dDsKLSsjZW5kaWYKLSAgICAgR0Vycm9yICplcnJv ciA9IE5VTEw7Ci0gCi0gICAgIGdfc2xpY2VfZnJlZSAoUHJvY2Vzc0tleUV2ZW50RGF0YSwgZGF0 YSk7Ci1AQCAtMTYzNCw2ICsxNjM2LDcgQEAgZ2V0X3NlbGVjdGlvbl9hbmNob3JfcG9pbnQgKElC dXNJTUNvbnRleHQgKmlidXNpbWNvbnRleHQsCi0gICAgIHJldHVybiBhbmNob3I7Ci0gfQotIAot KyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04gKDQsIDEsIDIpCi0gc3RhdGljIHZvaWQKLSBpYnVzX2lt X2NvbnRleHRfc2V0X3N1cnJvdW5kaW5nIChHdGtJTUNvbnRleHQgICpjb250ZXh0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKnRleHQsCi1AQCAtMTY0 Niw2ICsxNjQ5LDcgQEAgaWJ1c19pbV9jb250ZXh0X3NldF9zdXJyb3VuZGluZyAoR3RrSU1Db250 ZXh0ICAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY3Vyc29yX2luZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfaW5kZXgpOwotIH0KLSsjZW5kaWYKLSAKLSBz dGF0aWMgdm9pZAotIGlidXNfaW1fY29udGV4dF9zZXRfc3Vycm91bmRpbmdfd2l0aF9zZWxlY3Rp b24gKEd0a0lNQ29udGV4dCAgKmNvbnRleHQsCi1AQCAtMTg1MSw3ICsxODU1LDExIEBAIF9jcmVh dGVfZ2RrX2V2ZW50IChJQnVzSU1Db250ZXh0ICppYnVzaW1jb250ZXh0LAotICAgICAgICAgaWYg KGV2ZW50LT5zdGF0ZSAmIEdES19DT05UUk9MX01BU0spIHsKLSAgICAgICAgICAgICBpZiAoKGMg Pj0gJ0AnICYmIGMgPCAnXDE3NycpIHx8IGMgPT0gJyAnKSBjICY9IDB4MUY7Ci0gICAgICAgICAg ICAgZWxzZSBpZiAoYyA9PSAnMicpIHsKLSsjaWYgR0xJQl9DSEVDS19WRVJTSU9OICgyLCA2OCwg MCkKLSsgICAgICAgICAgICAgICAgZXZlbnQtPnN0cmluZyA9IGdfbWVtZHVwMiAoIlwwXDAiLCAy KTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBldmVudC0+c3RyaW5nID0gZ19tZW1kdXAgKCJc MFwwIiwgMik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgICAgIGV2ZW50LT5sZW5ndGggPSAxOwot ICAgICAgICAgICAgICAgICBidWZbMF0gPSAnXDAnOwotICAgICAgICAgICAgICAgICBnb3RvIG91 dDsKLWRpZmYgLS1naXQgYS9jbGllbnQvd2F5bGFuZC9tYWluLmMgYi9jbGllbnQvd2F5bGFuZC9t YWluLmMKLWluZGV4IGQ4NmJhYjllLi4xZjk5YzgwNCAxMDA2NDQKLS0tLSBhL2NsaWVudC93YXls YW5kL21haW4uYwotKysrIGIvY2xpZW50L3dheWxhbmQvbWFpbi5jCi1AQCAtMSw3ICsxLDcgQEAK LSAvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5p bDsgLSotICovCi0gLyogdmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0 IEJ1cwotLSAqIENvcHlyaWdodCAoQykgMjAxOSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdh cmExQGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTktMjAyMSBUYWthbyBGdWppd2Fy YSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50 ZWwgQ29ycG9yYXRpb24KLSAgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxOSBSZWQgSGF0LCBJbmMu Ci0gICoKLUBAIC0zMzksMTYgKzMzOSwxOSBAQCBpbnB1dF9tZXRob2Rfa2V5Ym9hcmRfa2V5bWFw ICh2b2lkICAgICAgICAgICAgICAgKmRhdGEsCi0gewotICAgICBJQnVzV2F5bGFuZElNICp3bGlt ID0gZGF0YTsKLSAgICAgR01hcHBlZEZpbGUgKm1hcDsKLS0gICAgR0Vycm9yICplcnJvcjsKLSsg ICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gCi0gICAgIGlmIChmb3JtYXQgIT0gV0xfS0VZQk9B UkRfS0VZTUFQX0ZPUk1BVF9YS0JfVjEpIHsKLSAgICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAg IHJldHVybjsKLSAgICAgfQotIAotLSAgICBlcnJvciA9IE5VTEw7Ci0gICAgIG1hcCA9IGdfbWFw cGVkX2ZpbGVfbmV3X2Zyb21fZmQgKGZkLCBGQUxTRSwgJmVycm9yKTsKLSAgICAgaWYgKG1hcCA9 PSBOVUxMKSB7Ci0rICAgICAgICBpZiAoZXJyb3IpIHsKLSsgICAgICAgICAgICBnX3dhcm5pbmcg KCJGYWlsZWQgdG8gbWFwIGZpbGUgZmQgJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICAg ICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0rICAgICAgICB9Ci0gICAgICAgICBjbG9zZSAoZmQp OwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvY2xpZW50L3gxMS9tYWlu LmMgYi9jbGllbnQveDExL21haW4uYwotaW5kZXggYzllZTE3NGQuLmZmZDc3NmZkIDEwMDY0NAot LS0tIGEvY2xpZW50L3gxMS9tYWluLmMKLSsrKyBiL2NsaWVudC94MTEvbWFpbi5jCi1AQCAtMiw3 ICsyLDcgQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMKLSAgKiBDb3B5cmln aHQgKEMpIDIwMDctMjAxNSBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0g KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmEx QGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAxNSBS ZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBtYWluLmM6Ci1AQCAtMjI5LDEyICsyMjksMTMgQEAgX3hp bV9wcmVlZGl0X2NhbGxiYWNrX2RyYXcgKFhJTVMgeGltcywgWDExSUMgKngxMWljLCBjb25zdCBn Y2hhciAqcHJlZWRpdF9zdHJpbmcKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgICBmb3IgKGkg PSAwOyBpIDwgbGVuOyBpKyspIHsKLSsgICAgZm9yIChpID0gMDsgZmVlZGJhY2sgJiYgaSA8IGxl bjsgaSsrKSB7Ci0gICAgICAgICBpZiAoZmVlZGJhY2tbaV0gPT0gMCkgewotICAgICAgICAgICAg IGZlZWRiYWNrW2ldID0gWElNVW5kZXJsaW5lOwotICAgICAgICAgfQotICAgICB9Ci0tICAgIGZl ZWRiYWNrW2xlbl0gPSAwOwotKyAgICBpZiAoZmVlZGJhY2spCi0rICAgICAgICBmZWVkYmFja1ts ZW5dID0gMDsKLSAKLSAgICAgcGNiLm1ham9yX2NvZGUgPSBYSU1fUFJFRURJVF9EUkFXOwotICAg ICBwY2IuY29ubmVjdF9pZCA9IHgxMWljLT5jb25uZWN0X2lkOwotQEAgLTczNiw5ICs3MzcsMjAg QEAgeGltX2dldF9pY192YWx1ZXMgKFhJTVMgeGltcywgSU1DaGFuZ2VJQ1N0cnVjdCAqY2FsbF9k YXRhKQotIAotICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgY2FsbF9kYXRhLT5pY19hdHRyX251 bTsgKytpLCArK2ljX2F0dHIpIHsKLSAgICAgICAgIGlmIChnX3N0cmNtcDAgKFhORmlsdGVyRXZl bnRzLCBpY19hdHRyLT5uYW1lKSA9PSAwKSB7Ci0rICAgICAgICAgICAgLyogaWNfYXR0ci0+dmFs dWUgd2lsbCBiZSBmcmVlZCBpbiBzZXJ2ZXIgc2lkZSBhbmQgaWdub3JlCi0rICAgICAgICAgICAg ICogbGVhayBvZiBtYWxsb2Mgd2l0aCAtV2FuYWx5emVyLW1hbGxvYy1sZWFrIGZsYWdzIGluIGdj YyAxMS4wLjEKLSsgICAgICAgICAgICAgKi8KLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gK LSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XYW5hbHl6ZXItbWFsbG9jLWxlYWsi Ci0gICAgICAgICAgICAgaWNfYXR0ci0+dmFsdWUgPSAodm9pZCAqKSBtYWxsb2MgKHNpemVvZiAo Q0FSRDMyKSk7Ci0tICAgICAgICAgICAgKihDQVJEMzIgKikgaWNfYXR0ci0+dmFsdWUgPSBLZXlQ cmVzc01hc2sgfCBLZXlSZWxlYXNlTWFzazsKLS0gICAgICAgICAgICBpY19hdHRyLT52YWx1ZV9s ZW5ndGggPSBzaXplb2YgKENBUkQzMik7Ci0rICAgICAgICAgICAgaWYgKGljX2F0dHItPnZhbHVl KSB7Ci0rICAgICAgICAgICAgICAgICooQ0FSRDMyICopIGljX2F0dHItPnZhbHVlID0gS2V5UHJl c3NNYXNrIHwgS2V5UmVsZWFzZU1hc2s7Ci0rICAgICAgICAgICAgICAgIGljX2F0dHItPnZhbHVl X2xlbmd0aCA9IHNpemVvZiAoQ0FSRDMyKTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAg ICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gbWFsbG9jIik7Ci0rICAgICAgICAgICAg ICAgIGljX2F0dHItPnZhbHVlX2xlbmd0aCA9IDA7Ci0rICAgICAgICAgICAgfQotKyNwcmFnbWEg R0NDIGRpYWdub3N0aWMgcG9wCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLWRpZmYgLS1naXQgYS9j b25mL2Rjb25mL21haW4uYyBiL2NvbmYvZGNvbmYvbWFpbi5jCi1pbmRleCBlNjg3ODQyNC4uYzgy NTBmNjggMTAwNjQ0Ci0tLS0gYS9jb25mL2Rjb25mL21haW4uYwotKysrIGIvY29uZi9kY29uZi9t YWluLmMKLUBAIC0yLDcgKzIsOCBAQAotIC8qIHZpbTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1 cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCBQZW5nIEh1YW5n IDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0gKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxMCBS ZWQgSGF0LCBJbmMuCi0rICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMjEgVGFrYW8gRnVqaXdhcmEg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMjEg UmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC03MCw3ICs3MSw5IEBAIG1h aW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQotICAgICBHT3B0aW9uQ29udGV4dCAqY29udGV4 dDsKLSAKLSAgICAgc2V0bG9jYWxlIChMQ19BTEwsICIiKTsKLS0gICAgZ19zZXRlbnYgKCJEQ09O Rl9QUk9GSUxFIiwgImlidXMiLCBGQUxTRSk7Ci0rICAgIGVycm5vID0gMDsKLSsgICAgaWYgKCFn X3NldGVudiAoIkRDT05GX1BST0ZJTEUiLCAiaWJ1cyIsIEZBTFNFKSkKLSsgICAgICAgIGdfd2Fy bmluZyAoIkZhaWxlZCBzZXRlbnYgJXMiLCBzdHJlcnJvciAoZXJybm8pKTsKLSAKLSAgICAgY29u dGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3ICgiLSBpYnVzIGRjb25mIGNvbXBvbmVudCIpOwot IAotZGlmZiAtLWdpdCBhL3BvcnRhbC9wb3J0YWwuYyBiL3BvcnRhbC9wb3J0YWwuYwotaW5kZXgg ZTc4YmM5MmYuLmMyZTRmYzdmIDEwMDY0NAotLS0tIGEvcG9ydGFsL3BvcnRhbC5jCi0rKysgYi9w b3J0YWwvcG9ydGFsLmMKLUBAIC0xLDcgKzEsNyBAQAotIC8qIC0qLSBtb2RlOiBDOyBjLWJhc2lj LW9mZnNldDogNDsgaW5kZW50LXRhYnMtbW9kZTogbmlsOyAtKi0gKi8KLSAvKiB2aW06c2V0IGV0 IHN0cz00OiAqLwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0tICogQ29weXJpZ2h0IChDKSAy MDE3LTIwMTkgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDIxIFJlZCBI YXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAtNTA4LDcgKzUwOCw2IEBAIGNyZWF0 ZV9pbnB1dF9jb250ZXh0X2RvbmUgKElCdXNCdXMgICAgICAgICAgICAgICAqYnVzLAotICAgICBp ZiAocG9ydGFsX2NvbnRleHQgPT0gTlVMTCkgewotICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZv Y2F0aW9uX3JldHVybl9nZXJyb3IgKGludm9jYXRpb24sIGVycm9yKTsKLSAgICAgICAgIGdfZXJy b3JfZnJlZSAoZXJyb3IpOwotLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKHBvcnRhbF9jb250ZXh0 KTsKLSAgICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAgLTY1Niw4ICs2NTUsMTAgQEAgbWFp biAoZ2ludCBhcmdjLCBnY2hhciAqKmFyZ3YpCi0gICAgICAgICBleGl0ICgtMSk7Ci0gICAgIH0K LSAKLSsgICAgIGVycm5vID0gMDsKLSAgICAgLyogQXZvaWQgZXZlbiBsb2FkaW5nIGd2ZnMgdG8g YXZvaWQgYWNjaWRlbnRhbCBjb25mdXNpb24gKi8KLS0gICAgZ19zZXRlbnYgKCJHSU9fVVNFX1ZG UyIsICJsb2NhbCIsIFRSVUUpOwotKyAgICBpZiAoIWdfc2V0ZW52ICgiR0lPX1VTRV9WRlMiLCAi bG9jYWwiLCBUUlVFKSkKLSsgICAgICAgIGdfd2FybmluZyAoIkZhaWxlZCBzZXRlbnYgJXMiLCBz dHJlcnJvciAoZXJybm8pKTsKLSAKLSAgICAgaWJ1c19pbml0ICgpOwotIAotZGlmZiAtLWdpdCBh L3NldHVwL2lidXMtc2V0dXAuaW4gYi9zZXR1cC9pYnVzLXNldHVwLmluCi1pbmRleCA0YTY4MzBh Zi4uNDc0Y2U4YTggMTAwNjQ0Ci0tLS0gYS9zZXR1cC9pYnVzLXNldHVwLmluCi0rKysgYi9zZXR1 cC9pYnVzLXNldHVwLmluCi1AQCAtMjcsNSArMjcsNSBAQCBleHBvcnQgSUJVU19QUkVGSVg9QHBy ZWZpeEAKLSBleHBvcnQgSUJVU19EQVRBUk9PVERJUj1AZGF0YXJvb3RkaXJACi0gZXhwb3J0IElC VVNfTE9DQUxFRElSPUBsb2NhbGVkaXJACi0gZXhwb3J0IElCVVNfTElCRVhFQ0RJUj0ke2xpYmV4 ZWNkaXJ9Ci0tZXhlYyAke1BZVEhPTjotQFBZVEhPTkB9IEBwcmVmaXhAL3NoYXJlL2lidXMvc2V0 dXAvbWFpbi5weSAkQAotK2V4ZWMgJHtQWVRIT046LUBQWVRIT05AfSBAcHJlZml4QC9zaGFyZS9p YnVzL3NldHVwL21haW4ucHkgIiRAIgotIAotZGlmZiAtLWdpdCBhL3NyYy9lbW9qaS1wYXJzZXIu YyBiL3NyYy9lbW9qaS1wYXJzZXIuYwotaW5kZXggYjExN2IxYjQuLjM2ZDM2ZTA1IDEwMDY0NAot LS0tIGEvc3JjL2Vtb2ppLXBhcnNlci5jCi0rKysgYi9zcmMvZW1vamktcGFyc2VyLmMKLUBAIC0x LDcgKzEsNyBAQAotIC8qIC0qLSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRh YnMtbW9kZTogbmlsOyAtKi0gKi8KLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIGlidXMg LSBUaGUgSW5wdXQgQnVzCi0tICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjAgVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE2LTIw MjEgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICogQ29weXJp Z2h0IChDKSAyMDE2IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC0yOTEsMTEgKzI5 MSw5IEBAIGVtb2ppX2RhdGFfbmV3X29iamVjdCAoRW1vamlEYXRhICpkYXRhKQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJhbm5vdGF0aW9ucyIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YS0+YW5ub3RhdGlvbnMsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhLT5kZXNjcmlwdGlvbiA/IGRhdGEtPmRlc2NyaXB0aW9uCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdfc3RyZHVwICgiIiksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZGVzY3JpcHRpb24gPyBkYXRhLT5kZXNj cmlwdGlvbiA6ICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYXRlZ29y eSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+Y2F0ZWdvcnkgPyBk YXRhLT5jYXRlZ29yeQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg OiBnX3N0cmR1cCAoIiIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEt PmNhdGVnb3J5ID8gZGF0YS0+Y2F0ZWdvcnkgOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMKTsKLSAgICAgZGF0YS0+bGlzdCA9IGdfc2xpc3RfYXBwZW5kIChkYXRh LT5saXN0LCBlbW9qaSk7Ci0gfQotQEAgLTYwOCw3ICs2MDYsNyBAQCB1bmljb2RlX2Vtb2ppX3Rl c3RfcGFyc2VfbGluZSAoY29uc3QgZ2NoYXIgKmxpbmUsCi0gICAgICAgICByZXR1cm4gRkFMU0U7 Ci0gICAgIH0KLSAgICAgdW5pY29kZV9lbW9qaV90ZXN0X3BhcnNlX2Rlc2NyaXB0aW9uIChzZWdt ZW50c1sxXSwgZGF0YSk7Ci0tICAgIGdfc3RyZnJlZXYgKHNlZ21lbnRzKTsKLSsgICAgZ19jbGVh cl9wb2ludGVyICgmc2VnbWVudHMsIGdfc3RyZnJlZXYpOwotICAgICBpZiAoZGF0YS0+YW5ub3Rh dGlvbnMgPT0gTlVMTCkgewotICAgICAgICAgaWYgKGRhdGEtPnN1YmNhdGVnb3J5KSB7Ci0gICAg ICAgICAgICAgaW50IGk7Ci1AQCAtNjMxLDcgKzYyOSw3IEBAIHVuaWNvZGVfZW1vamlfdGVzdF9w YXJzZV9saW5lIChjb25zdCBnY2hhciAqbGluZSwKLSAgICAgICAgICAgICAgICAgZGF0YS0+YW5u b3RhdGlvbnMgPSBnX3NsaXN0X2FwcGVuZCAoZGF0YS0+YW5ub3RhdGlvbnMsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZHVwIChzZWdt ZW50c1tpXSkpOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBnX3N0cmZyZWV2IChzZWdt ZW50cyk7Ci0rICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmc2VnbWVudHMsIGdfc3RyZnJl ZXYpOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICBnX3dhcm5pbmcgKCJObyBzdWJj YXRlZ29yeSBsaW5lXG4iKTsKLSAgICAgICAgICAgICBnb3RvIGZhaWxlZF90b19wYXJzZV91bmlj b2RlX2Vtb2ppX3Rlc3RfbGluZTsKLUBAIC02NzIsNyArNjcwLDcgQEAgdW5pY29kZV9lbW9qaV90 ZXN0X3BhcnNlX2ZpbGUgKGNvbnN0IGdjaGFyICpmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgZmlsZW5hbWUsIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiIik7Ci0gICAgICAgICBnb3Rv IGZhaWxlZF90b19wYXJzZV91bmljb2RlX2Vtb2ppX3Rlc3Q7Ci0gICAgIH0KLS0gICAgaGVhZCA9 IGVuZCA9IGNvbnRlbnQ7Ci0rICAgIGVuZCA9IGNvbnRlbnQ7Ci0gICAgIHdoaWxlICgqZW5kID09 ICdcbicgJiYgZW5kIC0gY29udGVudCA8IGxlbmd0aCkgewotICAgICAgICAgZW5kKys7Ci0gICAg ICAgICBuKys7Ci1AQCAtMTEwMCwxMCArMTA5OCwxMiBAQCBzdGF0aWMgdm9pZAotIGNhdGVnb3J5 X2xpc3RfZHVtcCAoY29uc3QgZ2NoYXIgKmNhdGVnb3J5LAotICAgICAgICAgICAgICAgICAgICAg R1N0cmluZyAgICAgKmJ1ZmYpCi0gewotKyAgICBnY2hhciAqbGluZTsKLSAgICAgZ19yZXR1cm5f aWZfZmFpbCAoYnVmZiAhPSBOVUxMKTsKLSAKLS0gICAgY29uc3QgZ2NoYXIgKmxpbmUgPSBnX3N0 cmR1cF9wcmludGYgKCIgICAgTl8oXCIlc1wiKSxcbiIsIGNhdGVnb3J5KTsKLSsgICAgbGluZSA9 IGdfc3RyZHVwX3ByaW50ZiAoIiAgICBOXyhcIiVzXCIpLFxuIiwgY2F0ZWdvcnkpOwotICAgICBn X3N0cmluZ19hcHBlbmQgKGJ1ZmYsIGxpbmUpOwotKyAgICBnX2ZyZWUgKGxpbmUpOwotIH0KLSAK LSBzdGF0aWMgdm9pZAotQEAgLTExMTMsNyArMTExMyw3IEBAIGNhdGVnb3J5X2ZpbGVfc2F2ZSAo Y29uc3QgZ2NoYXIgKmZpbGVuYW1lLAotICAgICBnY2hhciAqY29udGVudCA9IE5VTEw7Ci0gICAg IGdzaXplIGxlbmd0aCA9IDA7Ci0gICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotLSAgICBnY2hh ciAqcDsKLSsgICAgZ2NoYXIgKnAsICpzdWJzdHI7Ci0gICAgIEdTdHJpbmcgKmJ1ZmYgPSBOVUxM OwotICAgICBpbnQgaTsKLSAgICAgR1NMaXN0ICpsaXN0X2NhdGVnb3JpZXMgPSBOVUxMOwotQEAg LTExMzksMjQgKzExMzksMjggQEAgY2F0ZWdvcnlfZmlsZV9zYXZlIChjb25zdCBnY2hhciAqZmls ZW5hbWUsCi0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgaWYgKHAgIT0gTlVMTCkg ewotLSAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCBnX3N0cm5kdXAgKGNvbnRlbnQsIHAg LSBjb250ZW50KSk7Ci0rICAgICAgICBzdWJzdHIgPSBnX3N0cm5kdXAgKGNvbnRlbnQsIHAgLSBj b250ZW50KTsKLSsgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgc3Vic3RyKTsKLSsgICAg ICAgIGdfZnJlZSAoc3Vic3RyKTsKLSAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9jIChidWZmLCAn XG4nKTsKLSAgICAgfQotICAgICBnX2NsZWFyX3BvaW50ZXIgKCZjb250ZW50LCBnX2ZyZWUpOwot IAotLSAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsIGdfc3RyZHVwICgiXG4iKSk7Ci0tICAgIGdf c3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJkdXBfcHJpbnRmICgiLyogVGhpcyBmaWxlIGlzIGdl bmVyYXRlZCBieSAlcy4gKi8iLCBfX0ZJTEVfXykpOwotLSAgICBnX3N0cmluZ19hcHBlbmQgKGJ1 ZmYsIGdfc3RyZHVwICgiXG4iKSk7Ci0tICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJk dXAgKCJpbmNsdWRlIDxnbGliL2dpMThuLmg+XG4iKSk7Ci0tICAgIGdfc3RyaW5nX2FwcGVuZCAo YnVmZiwgZ19zdHJkdXAgKCJcbiIpKTsKLS0gICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCBnX3N0 cmR1cCAoIiNpZm5kZWYgX19JQlVTX0VNT0pJX0dFTl9IX1xuIikpOwotLSAgICBnX3N0cmluZ19h cHBlbmQgKGJ1ZmYsIGdfc3RyZHVwICgiI2RlZmluZSBfX0lCVVNfRU1PSklfR0VOX0hfXG4iKSk7 Ci0tICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJkdXAgKCJjb25zdCBzdGF0aWMgY2hh ciAqdW5pY29kZV9lbW9qaV9jYXRlZ29yaWVzW10gPSB7XG4iKSk7Ci0rICAgIGdfc3RyaW5nX2Fw cGVuZCAoYnVmZiwgIlxuIik7Ci0rICAgIHN1YnN0ciA9IGdfc3RyZHVwX3ByaW50ZiAoIi8qIFRo aXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkgJXMuICovIiwgX19GSUxFX18pOwotKyAgICBnX3N0cmlu Z19hcHBlbmQgKGJ1ZmYsIHN1YnN0cik7Ci0rICAgIGdfZnJlZSAoc3Vic3RyKTsKLSsgICAgZ19z dHJpbmdfYXBwZW5kIChidWZmLCAiXG4iKTsKLSsgICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCAi aW5jbHVkZSA8Z2xpYi9naTE4bi5oPlxuIik7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwg IlxuIik7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgIiNpZm5kZWYgX19JQlVTX0VNT0pJ X0dFTl9IX1xuIik7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgIiNkZWZpbmUgX19JQlVT X0VNT0pJX0dFTl9IX1xuIik7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgImNvbnN0IHN0 YXRpYyBjaGFyICp1bmljb2RlX2Vtb2ppX2NhdGVnb3JpZXNbXSA9IHtcbiIpOwotICAgICBsaXN0 X2NhdGVnb3JpZXMgPSBnX3NsaXN0X3NvcnQgKGxpc3RfY2F0ZWdvcmllcywgKEdDb21wYXJlRnVu YylnX3N0cmNtcDApOwotICAgICBnX3NsaXN0X2ZvcmVhY2ggKGxpc3RfY2F0ZWdvcmllcywgKEdG dW5jKWNhdGVnb3J5X2xpc3RfZHVtcCwgYnVmZik7Ci0gICAgIGdfc2xpc3RfZnJlZSAobGlzdF9j YXRlZ29yaWVzKTsKLS0gICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCBnX3N0cmR1cCAoIn07XG4i KSk7Ci0tICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJkdXAgKCIjZW5kaWZcbiIpKTsK LSsgICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCAifTtcbiIpOwotKyAgICBnX3N0cmluZ19hcHBl bmQgKGJ1ZmYsICIjZW5kaWZcbiIpOwotIAotICAgICBpZiAoIWdfZmlsZV9zZXRfY29udGVudHMg KGZpbGVuYW1lLCBidWZmLT5zdHIsIC0xLCAmZXJyb3IpKSB7Ci0gICAgICAgICBnX3dhcm5pbmcg KCJGYWlsZWQgdG8gc2F2ZSBlbW9qaSBjYXRlZ29yeSBmaWxlICVzOiAlcyIsIGZpbGVuYW1lLCBl cnJvci0+bWVzc2FnZSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNhY2NlbGdyb3VwLmMgYi9zcmMv aWJ1c2FjY2VsZ3JvdXAuYwotaW5kZXggOGE4MTU5N2UuLmVmMmQzOTc2IDEwMDY0NAotLS0tIGEv c3JjL2lidXNhY2NlbGdyb3VwLmMKLSsrKyBiL3NyYy9pYnVzYWNjZWxncm91cC5jCi1AQCAtNDY4 LDcgKzQ2OCw3IEBAIGlidXNfYWNjZWxlcmF0b3JfbmFtZSAoZ3VpbnQgICAgICAgICAgICBhY2Nl bGVyYXRvcl9rZXksCi0gICAgIGlmIChhY2NlbGVyYXRvcl9tb2RzICYgSUJVU19TVVBFUl9NQVNL KQotICAgICAgICAgbCArPSBzaXplb2YgKHRleHRfc3VwZXIpIC0gMTsKLSAKLS0gICAgYWNjZWxl cmF0b3IgPSBnX25ldyAoZ2NoYXIsIGwgKyAxKTsKLSsgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwg KChhY2NlbGVyYXRvciA9IGdfbmV3IChnY2hhciwgbCArIDEpKSwgTlVMTCk7Ci0gCi0gICAgIGFj Y2VsZXJhdG9yX21vZHMgPSBzYXZlZF9tb2RzOwotICAgICBsID0gMDsKLWRpZmYgLS1naXQgYS9z cmMvaWJ1c2J1cy5jIGIvc3JjL2lidXNidXMuYwotaW5kZXggYjdmZmJiNDcuLmU5YjBiY2JiIDEw MDY0NAotLS0tIGEvc3JjL2lidXNidXMuYwotKysrIGIvc3JjL2lidXNidXMuYwotQEAgLTIsNyAr Miw3IEBACi0gLyogdmltOnNldCBldCBzdHM9NDogKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1 cwotICAqIENvcHlyaWdodCAoQykgMjAwOC0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdA Z21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE5IFRha2FvIEZ1aml3YXJhIDx0 YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDIxIFRh a2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqIENvcHlyaWdodCAo QykgMjAwOC0yMDE2IFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLUBAIC01NTUsMTIgKzU1 NSwxOCBAQCBpYnVzX2J1c19pbml0IChJQnVzQnVzICpidXMpCi0gCi0gICAgIHBhdGggPSBnX3Bh dGhfZ2V0X2Rpcm5hbWUgKGlidXNfZ2V0X3NvY2tldF9wYXRoICgpKTsKLSAKLS0gICAgZ19ta2Rp cl93aXRoX3BhcmVudHMgKHBhdGgsIDA3MDApOwotKyAgICBlcnJubyA9IDA7Ci0rICAgIGlmIChn X21rZGlyX3dpdGhfcGFyZW50cyAocGF0aCwgMDcwMCkpIHsKLSsgICAgICAgIGdfd2FybmluZyAo IkZhaWxlZCB0byBta2RpciAlczogJXMiLCBwYXRoLCBnX3N0cmVycm9yIChlcnJubykpOwotKyAg ICAgICAgZ19mcmVlIChwYXRoKTsKLSsgICAgICAgIHJldHVybjsKLSsgICAgfQotIAotICAgICBp ZiAoc3RhdCAocGF0aCwgJmJ1ZikgPT0gMCkgewotICAgICAgICAgaWYgKGJ1Zi5zdF91aWQgIT0g Z2V0dWlkICgpKSB7Ci0gICAgICAgICAgICAgZ193YXJuaW5nICgiVGhlIG93bmVyIG9mICVzIGlz IG5vdCAlcyEiLAotICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgaWJ1c19nZXRfdXNlcl9u YW1lICgpKTsKLSsgICAgICAgICAgICBnX2ZyZWUgKHBhdGgpOwotICAgICAgICAgICAgIHJldHVy bjsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChidWYuc3RfbW9kZSAhPSAoU19JRkRJUiB8IFNf SVJXWFUpKSB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNjb21wb3NldGFibGUuYyBiL3NyYy9pYnVz Y29tcG9zZXRhYmxlLmMKLWluZGV4IGVmMjA0NjljLi42ODVhYzcxNyAxMDA2NDQKLS0tLSBhL3Ny Yy9pYnVzY29tcG9zZXRhYmxlLmMKLSsrKyBiL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMKLUBAIC0x LDcgKzEsNyBAQAotIC8qIC0qLSBtb2RlOiBDOyBjLWJhc2ljLW9mZnNldDogNDsgaW5kZW50LXRh YnMtbW9kZTogbmlsOyAtKi0gKi8KLSAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cwotICAqIENvcHly aWdodCAoQykgMjAxMy0yMDE0IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgot LSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE5IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2Fy YTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDIxIFRha2FvIEZ1aml3YXJh IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICAqIG1vZGlmeSBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLUBAIC0x MDgsNiArMTA4LDcgQEAgcGFyc2VfY29tcG9zZV92YWx1ZSAoSUJ1c0NvbXBvc2VEYXRhICAqY29t cG9zZV9kYXRhLAotICAgICB9Ci0gICAgICsraGVhZDsKLSAgICAgcCA9IGhlYWQ7Ci0rICAgIGVu ZCA9IE5VTEw7Ci0gICAgIHdoaWxlICgoKnAgIT0gJ1wwJykgJiYgKGVuZCA9IHN0cmNociAocCwg J1wiJykpKSB7Ci0gICAgICAgICBpZiAoKihlbmQgLSAxKSA9PSAnXFwnICYmICooZW5kIC0gMikg PT0gJ1xcJykKLSAgICAgICAgICAgICBicmVhazsKLUBAIC01MTYsMTAgKzUxNywxMCBAQCBpYnVz X2NvbXBvc2VfaGFzaF9nZXRfY2FjaGVfcGF0aCAoZ3VpbnQzMiBoYXNoKQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgImlidXMiLCAiY29tcG9zZSIsIE5VTEwpOwotICAgICB9Ci0g ICAgIHBhdGggPSBnX2J1aWxkX2ZpbGVuYW1lIChkaXIsIGJhc2VuYW1lLCBOVUxMKTsKLS0gICAg aWYgKGdfbWtkaXJfd2l0aF9wYXJlbnRzIChkaXIsIDA3NTUpICE9IDApIHsKLS0gICAgICAgIGdf d2FybmluZyAoIkZhaWxlZCB0byBta2RpciAlcyIsIGRpcik7Ci0tICAgICAgICBnX2ZyZWUgKHBh dGgpOwotLSAgICAgICAgcGF0aCA9IE5VTEw7Ci0rICAgIGVycm5vID0gMDsKLSsgICAgaWYgKGdf bWtkaXJfd2l0aF9wYXJlbnRzIChkaXIsIDA3NTUpKSB7Ci0rICAgICAgICBnX3dhcm5pbmcgKCJG YWlsZWQgdG8gbWtkaXIgJXM6ICVzIiwgZGlyLCBnX3N0cmVycm9yIChlcnJubykpOwotKyAgICAg ICAgZ19jbGVhcl9wb2ludGVyICgmcGF0aCwgZ19mcmVlKTsKLSAgICAgfQotIAotICAgICBnX2Zy ZWUgKGRpcik7Ci1AQCAtODEyLDEwICs4MTMsMTQgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2Rlc2Vy aWFsaXplIChjb25zdCBnY2hhciAqY29udGVudHMsCi0gICAgICAgICB9Ci0gICAgIH0KLSAgICAg aWYgKGRhdGFfbGVuZ3RoKSB7Ci0tICAgICAgICByZXR2YWwtPnByaXYtPmRhdGFfc2Vjb25kID0g Z19uZXcgKGd1aW50MzIsIGRhdGFfbGVuZ3RoKTsKLS0gICAgICAgIG1lbWNweSAocmV0dmFsLT5w cml2LT5kYXRhX3NlY29uZCwKLS0gICAgICAgICAgICAgICAgZGF0YV8zMmJpdF9zZWNvbmQsIGRh dGFfbGVuZ3RoICogc2l6ZW9mIChndWludDMyKSk7Ci0tICAgICAgICByZXR2YWwtPnByaXYtPnNl Y29uZF9zaXplID0gc2Vjb25kX3NpemU7Ci0rICAgICAgICBpZiAoKHJldHZhbC0+cHJpdi0+ZGF0 YV9zZWNvbmQgPSBnX25ldyAoZ3VpbnQzMiwgZGF0YV9sZW5ndGgpKSkgewotKyAgICAgICAgICAg IG1lbWNweSAocmV0dmFsLT5wcml2LT5kYXRhX3NlY29uZCwKLSsgICAgICAgICAgICAgICAgICAg IGRhdGFfMzJiaXRfc2Vjb25kLCBkYXRhX2xlbmd0aCAqIHNpemVvZiAoZ3VpbnQzMikpOwotKyAg ICAgICAgICAgIHJldHZhbC0+cHJpdi0+c2Vjb25kX3NpemUgPSBzZWNvbmRfc2l6ZTsKLSsgICAg ICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIGdfbmV3Iik7Ci0r ICAgICAgICAgICAgcmV0dmFsLT5wcml2LT5zZWNvbmRfc2l6ZSA9IDA7Ci0rICAgICAgICB9Ci0g ICAgIH0KLSAKLSAKLUBAIC05MTAsNiArOTE1LDQzIEBAIGlidXNfY29tcG9zZV90YWJsZV9uZXdf d2l0aF9saXN0IChHTGlzdCAgICpjb21wb3NlX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCAgICAgIG5faW5kZXhfc3RyaWRlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludDMyICBoYXNoKQotIHsKLSsgICAgLyogQGlidXNfY29tcG9z ZV9zZXFzOiBJbmNsdWRlIGJvdGggY29tcG9zZSBzZXF1ZW5jZSBhbmQgdGhlIHZhbHVlKGNvbXBv c2UKLSsgICAgICogICAgIG91dHB1dCkgYXMgdGhlIHRyYWRpdGlvbiBHVEsuIFRoZSB2YWx1ZSBp cyBvbmUgY2hhcmFjdGVyIG9ubHkKLSsgICAgICogICAgIGFuZCB3aXRoaW4gMTZiaXQuIEkuZS4g QWxsIGNvbXBvc2Ugc2VxdWVuY2VzIGFuZCB0aGUgdmFsdWVzCi0rICAgICAqICAgICBhcmUgMTZi aXQuCi0rICAgICAqIEBpYnVzX2NvbXBvc2Vfc2Vxc18zMmJpdF9zZWNvbmQ6IEluY2x1ZGUgdGhl IGNvbXBvc2UgdmFsdWVzIG9ubHkuCi0rICAgICAqICAgICBUaGUgbGVuZ3RoIG9mIHZhbHVlcyBi eSBjb21wb3NlIHNlcXVlbmNlIGlzIG1vcmUgdGhhbiBvbmUgY2hhcmFjc3RlcgotKyAgICAgKiAg ICAgb3Igb25lIG9mIHRoZSB2YWx1ZXMgaXMgb3V0c2lkZSAxNmJpdCBidXQgd2l0aGluIDMyYml0 LgotKyAgICAgKiAgICAgU29tZSB2YWx1ZXMgY291bGQgYmUgbW9yZSB0aGFuIG9uZSBjaGFyYWN0 ZXIgYW5kIEVtb2ppIGNoYXJhY3RlcgotKyAgICAgKiAgICAgY291bGQgYmUgb3V0c2lkZSAxNmJp dC4KLSsgICAgICogICAgIFNlZSBhbHNvIGlidXMvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5lbW9q aSBmaWxlIGZvciBlLmcuCi0rICAgICAqIEBpYnVzX2NvbXBvc2Vfc2Vxc18zMmJpdF9maXJzdDog SW5jbHVkZSB0aGUgY29tcG9zZSBzZXF1ZW5jZSBvbmx5IGluCi0rICAgICAqICAgICBjYXNlIHRo ZSB2YWx1ZSBpcyBpbmNsdWRlZCBpbiBAaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRfc2Vjb25kLgot KyAgICAgKiBAc19zaXplX3RvdGFsOiBUaGUgbnVtYmVyIG9mIGNvbXBvc2Ugc2VxdWVuY2VzLgot KyAgICAgKiBAc19zaXplXzE2Yml0OiBUaGUgbnVtYmVyIG9mIGNvbXBvc2Ugc2VxdWVuY2VzIHdo b3NlIHZhbHVlIGlzIG9uZQotKyAgICAgKiAgICAgY2hhcmFjdGVyIG9ubHkgYW5kIHdpdGhpbiAx NmJpdC4gSS5lLiB0aGUgbnVtYmVyIG9mIHRoZSBjb21wb3NlCi0rICAgICAqICAgICBzZXF1ZW5j ZSBpbiBAaWJ1c19jb21wb3NlX3NlcXMgaXMgQEBzX3NpemVfMTZiaXQuIEFuZAotKyAgICAgKiAg ICAgQHNfc2l6ZV90b3RhbCAtIEBzX3NpemVfMTZiaXQgaXMgdGhlIG51bWJlciBvZiB0aGUgY29t cG9zZSBzZXF1ZW5jZQotKyAgICAgKiAgICAgaW4gQGlidXNfY29tcG9zZV9zZXFzXzMyYml0X2Zp cnN0LgotKyAgICAgKiBAdl9zaXplXzMyYml0OiBUaGUgdG90YWwgbnVtYmVyIG9mIGNvbXBvc2Ug dmFsdWVzLiBFYWNoIGxlbmd0aCBvZiB0aGUKLSsgICAgICogICAgIHZhbHVlcyBpcyBtb3JlIHRo YW4gb25lIGNoYXJhY3RlciBvciBvbmUgb2YgdGhlIHZhbHVlIGlzCi0rICAgICAqICAgICBvdXRz aWRlIDE2Yml0IGJ1dCB3aXRoaW4gMzJiaXQuIEkuZS4gVGhlIHNpemUgb2YKLSsgICAgICogICAg IEBpYnVzX2NvbXBvc2Vfc2Vxc18zMmJpdF9zZWNvbmQgaXMgQHZfc2l6ZV8zMmJpdC4KLSsgICAg ICogQHZfaW5kZXhfMzJiaXQ6IEVhY2ggaW5kZXggb2YgdGhlIGNvbXBvc2UgdmFsdWVzIGluCi0r ICAgICAqICAgICBAaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRfc2Vjb25kIGFuZCB0aGlzIGlzIG5v dCBhIGZpeGVkIHZhbHVlIGluCi0rICAgICAqICAgICB0aGlzIEFQSS4gSWYgYSBjb21wb3NlIHNl cXVlbmNlIGlzIGZvdW5kIGluCi0rICAgICAqICAgICBAaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRf Zmlyc3QgYW5kIHRoZSBuZXh0IHZhbHVlIGlzIDAsIDAgaXMgbGluZWQKLSsgICAgICogICAgIGlu IEBpYnVzX2NvbXBvc2Vfc2Vxc18zMmJpdF9maXJzdCB1bnRpbCBAbWF4X2NvbXBvc2VfbGVuIGFm dGVyCi0rICAgICAqICAgICB0aGUgZm91bmQgY29tcG9zZSBzZXF1ZW5jZS4gQW5kIHRoZSBuZXh0 IHZhbHVlIGlzIHRoZSBsZW5ndGggb2YKLSsgICAgICogICAgIHRoZSBjb21wb3NlIHZhbHVlcyBh bmQgdGhlIG5leHQgdmFsdWUgaXMgdGhlIEB2X2luZGV4XzMyYml0LCBpLmUuCi0rICAgICAqICAg ICB0aGUgaW5kZXggb2YgQGlidXNfY29tcG9zZV9zZXFzXzMyYml0X3NlY29uZC4KLSsgICAgICog ICAgIEUuZy4gdGhlIGZvbGxvd2luZyBsaW5lIGNvdWxkIGJlIGZvdW5kIGluCi0rICAgICAqICAg ICBAaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRfZmlyc3Q6Ci0rICAgICAqICAgICAgICAgLi4uLCAi VTE3ZmYiLCAiMCIsICIwIiwgIjAiLCAiMCIsIDIsIDEwMCwgLi4uCi0rICAgICAqICAgICBAaWJ1 c19jb21wb3NlX3NlcXNfMzJiaXRfc2Vjb25kWzEwMF0gaXMgIuGetuGfhiIgIGFuZCB0aGUgY2hh cmFjdGVyCi0rICAgICAqICAgICBsZW5ndGggaXMgMi4KLSsgICAgICogICAgIEBtYXhfY29tcG9z ZV9sZW4gaXMgNSBhbmQgQG5faW5kZXhfc3RyaWRlIGlzIDcuCi0rICAgICAqLwotICAgICBnc2l6 ZSBzX3NpemVfdG90YWwsIHNfc2l6ZV8xNmJpdCwgdl9zaXplXzMyYml0LCB2X2luZGV4XzMyYml0 OwotICAgICBndWludCBuID0gMCwgbSA9IDA7Ci0gICAgIGludCBpLCBqOwotQEAgLTkzNSwxMyAr OTc3LDI1IEBAIGlidXNfY29tcG9zZV90YWJsZV9uZXdfd2l0aF9saXN0IChHTGlzdCAgICpjb21w b3NlX2xpc3QsCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAgaWYgKHNfc2l6ZV8xNmJpdCkK LSsgICAgaWYgKHNfc2l6ZV8xNmJpdCkgewotICAgICAgICAgaWJ1c19jb21wb3NlX3NlcXMgPSBn X25ldyAoZ3VpbnQxNiwgc19zaXplXzE2Yml0ICogbl9pbmRleF9zdHJpZGUpOwotKyAgICAgICAg aWYgKCFpYnVzX2NvbXBvc2Vfc2VxcykgewotKyAgICAgICAgICAgIGdfd2FybmluZyAoIkZhaWxl ZCBnX25ldyIpOwotKyAgICAgICAgICAgIHJldHVybiBOVUxMOwotKyAgICAgICAgfQotKyAgICB9 Ci0gICAgIGlmIChzX3NpemVfdG90YWwgPiBzX3NpemVfMTZiaXQpIHsKLSAgICAgICAgIGlidXNf Y29tcG9zZV9zZXFzXzMyYml0X2ZpcnN0ID0KLSAgICAgICAgICAgICAgICAgZ19uZXcgKGd1aW50 MTYsCi0gICAgICAgICAgICAgICAgICAgICAgICAoc19zaXplX3RvdGFsIC0gc19zaXplXzE2Yml0 KSAqIG5faW5kZXhfc3RyaWRlKTsKLSAgICAgICAgIGlidXNfY29tcG9zZV9zZXFzXzMyYml0X3Nl Y29uZCA9IGdfbmV3IChndWludDMyLCB2X3NpemVfMzJiaXQpOwotKyAgICAgICAgaWYgKCFpYnVz X2NvbXBvc2Vfc2Vxc18zMmJpdF9maXJzdCB8fCAhaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRfc2Vj b25kKSB7Ci0rICAgICAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIGdfbmV3Iik7Ci0rICAgICAg ICAgICAgZ19mcmVlIChpYnVzX2NvbXBvc2Vfc2Vxcyk7Ci0rICAgICAgICAgICAgZ19mcmVlIChp YnVzX2NvbXBvc2Vfc2Vxc18zMmJpdF9maXJzdCk7Ci0rICAgICAgICAgICAgZ19mcmVlIChpYnVz X2NvbXBvc2Vfc2Vxc18zMmJpdF9zZWNvbmQpOwotKyAgICAgICAgICAgIHJldHVybiBOVUxMOwot KyAgICAgICAgfQotICAgICB9Ci0gCi0gICAgIHZfaW5kZXhfMzJiaXQgPSAwOwotQEAgLTk1MSwz MiArMTAwNSw0NSBAQCBpYnVzX2NvbXBvc2VfdGFibGVfbmV3X3dpdGhfbGlzdCAoR0xpc3QgICAq Y29tcG9zZV9saXN0LAotIAotICAgICAgICAgaXNfMzJiaXQgPSB1bmljaGFyX2xlbmd0aCAoY29t cG9zZV9kYXRhLT52YWx1ZXMpID4gMSA/IFRSVUUgOgotICAgICAgICAgICAgICAgICBjb21wb3Nl X2RhdGEtPnZhbHVlc1swXSA+PSAweEZGRkYgPyBUUlVFIDogRkFMU0U7Ci0rICAgICAgICBpZiAo aXNfMzJiaXQpIHsKLSsgICAgICAgICAgICBnX2Fzc2VydCAoaWJ1c19jb21wb3NlX3NlcXNfMzJi aXRfZmlyc3QpOwotKyAgICAgICAgICAgIGdfYXNzZXJ0IChpYnVzX2NvbXBvc2Vfc2Vxc18zMmJp dF9zZWNvbmQpOwotKyAgICAgICAgfQotICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1heF9jb21w b3NlX2xlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgaWYgKGNvbXBvc2VfZGF0YS0+c2VxdWVuY2Vb aV0gPT0gMCkgewotICAgICAgICAgICAgICAgICBmb3IgKGogPSBpOyBqIDwgbWF4X2NvbXBvc2Vf bGVuOyBqKyspIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmIChpc18zMmJpdCkKLSsgICAgICAg ICAgICAgICAgICAgIGlmIChpc18zMmJpdCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGdf YXNzZXJ0IChtIDwgKHNfc2l6ZV90b3RhbCAtIHNfc2l6ZV8xNmJpdCkKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKiBuX2luZGV4X3N0cmlkZSk7Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgaWJ1c19jb21wb3NlX3NlcXNfMzJiaXRfZmlyc3RbbSsrXSA9IDA7Ci0tICAgICAg ICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAg ICAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0IChuIDwgc19zaXplXzE2Yml0ICogbl9pbmRleF9z dHJpZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNfY29tcG9zZV9zZXFzW24rK10g PSAwOwotKyAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBpZiAoaXNfMzJi aXQpIHsKLSsgICAgICAgICAgICAgICAgZ19hc3NlcnQgKG0gPCAoc19zaXplX3RvdGFsIC0gc19z aXplXzE2Yml0KSAqIG5faW5kZXhfc3RyaWRlKTsKLSAgICAgICAgICAgICAgICAgaWJ1c19jb21w b3NlX3NlcXNfMzJiaXRfZmlyc3RbbSsrXSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKGd1 aW50MTYpIGNvbXBvc2VfZGF0YS0+c2VxdWVuY2VbaV07Ci0gICAgICAgICAgICAgfSBlbHNlIHsK LSsgICAgICAgICAgICAgICAgZ19hc3NlcnQgKG4gPCBzX3NpemVfMTZiaXQgKiBuX2luZGV4X3N0 cmlkZSk7Ci0gICAgICAgICAgICAgICAgIGlidXNfY29tcG9zZV9zZXFzW24rK10gPSAoZ3VpbnQx NikgY29tcG9zZV9kYXRhLT5zZXF1ZW5jZVtpXTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9 Ci0gICAgICAgICBpZiAoaXNfMzJiaXQpIHsKLSAgICAgICAgICAgICBmb3IgKGogPSAwOyBjb21w b3NlX2RhdGEtPnZhbHVlc1tqXTsgaisrKSB7Ci0rICAgICAgICAgICAgICAgIGdfYXNzZXJ0ICh2 X2luZGV4XzMyYml0ICsgaiA8ICB2X3NpemVfMzJiaXQpOwotICAgICAgICAgICAgICAgICBpYnVz X2NvbXBvc2Vfc2Vxc18zMmJpdF9zZWNvbmRbdl9pbmRleF8zMmJpdCArIGpdID0KLSAgICAgICAg ICAgICAgICAgICAgICAgICBjb21wb3NlX2RhdGEtPnZhbHVlc1tqXTsKLSAgICAgICAgICAgICB9 Ci0rICAgICAgICAgICAgZ19hc3NlcnQgKG0gKyAxIDwgKHNfc2l6ZV90b3RhbCAtIHNfc2l6ZV8x NmJpdCkgKiBuX2luZGV4X3N0cmlkZSk7Ci0gICAgICAgICAgICAgaWJ1c19jb21wb3NlX3NlcXNf MzJiaXRfZmlyc3RbbSsrXSA9IGo7Ci0gICAgICAgICAgICAgaWJ1c19jb21wb3NlX3NlcXNfMzJi aXRfZmlyc3RbbSsrXSA9IHZfaW5kZXhfMzJiaXQ7Ci0gICAgICAgICAgICAgdl9pbmRleF8zMmJp dCArPSBqOwotICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBnX2Fzc2VydCAobiArIDEg PCBzX3NpemVfMTZiaXQgKiBuX2luZGV4X3N0cmlkZSk7Ci0gICAgICAgICAgICAgaWJ1c19jb21w b3NlX3NlcXNbbisrXSA9IChndWludDE2KSBjb21wb3NlX2RhdGEtPnZhbHVlc1swXTsKLSAgICAg ICAgICAgICBpYnVzX2NvbXBvc2Vfc2Vxc1tuKytdID0gMDsKLSAgICAgICAgIH0KLWRpZmYgLS1n aXQgYS9zcmMvaWJ1c2Vtb2ppLmMgYi9zcmMvaWJ1c2Vtb2ppLmMKLWluZGV4IGFlODkwN2EyLi5k Zjk3MjY0YiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW1vamkuYwotKysrIGIvc3JjL2lidXNlbW9q aS5jCi1AQCAtMSw3ICsxLDcgQEAKLSAvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1vZmZzZXQ6IDQ7 IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0gLyogdmltOnNldCBldCBzdHM9NDogKi8K LSAvKiBidXMgLSBUaGUgSW5wdXQgQnVzCi0tICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgVGFr YW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChD KSAyMDE3LTIwMjEgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0g ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgUmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBs aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot QEAgLTQ5Nyw3ICs0OTcsMTEgQEAgaWJ1c19lbW9qaV9kYXRhX3NhdmUgKGNvbnN0IGdjaGFyICpw YXRoLAotIAotICAgICBkaXIgPSBnX3BhdGhfZ2V0X2Rpcm5hbWUgKHBhdGgpOwotICAgICBpZiAo Z19zdHJjbXAwIChkaXIsICIuIikgIT0gMCAmJiBnX3N0YXQgKGRpciwgJmJ1ZikgIT0gMCkgewot LSAgICAgICAgZ19ta2Rpcl93aXRoX3BhcmVudHMgKGRpciwgMDc3Nyk7Ci0rICAgICAgICBlcnJu byA9IDA7Ci0rICAgICAgICBpZiAoZ19ta2Rpcl93aXRoX3BhcmVudHMgKGRpciwgMDc3NykpIHsK LSsgICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgbWtkaXIgJXM6ICVzIiwgZGlyLCBnX3N0 cmVycm9yIChlcnJubykpOwotKyAgICAgICAgICAgIHJldHVybjsKLSsgICAgICAgIH0KLSAgICAg fQotICAgICBnX2ZyZWUgKGRpcik7Ci0gICAgIGlmICghZ19maWxlX3NldF9jb250ZW50cyAocGF0 aCwgY29udGVudHMsIGxlbmd0aCwgJmVycm9yKSkgewotZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5n aW5lc2ltcGxlLmMgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCi1pbmRleCA0M2JkNTI4My4uNmRi YzM5YzcgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCi0rKysgYi9zcmMvaWJ1 c2VuZ2luZXNpbXBsZS5jCi1AQCAtMiw3ICsyLDcgQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAq LwotIC8qIGlidXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDE0IFBlbmcg SHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSAqIENvcHlyaWdodCAoQykgMjAxNS0y MDE5IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHly aWdodCAoQykgMjAxNS0yMDIxIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwu Y29tPgotICAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE3IFJlZCBIYXQsIEluYy4KLSAgKgotICAq IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IKLUBAIC00NjYsMTEgKzQ2NiwxNSBAQCBjaGVja19oZXggKElCdXNFbmdpbmVTaW1wbGUg KnNpbXBsZSwKLSAKLSAgICAgICAgIGNoID0gaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAocHJpdi0+ Y29tcG9zZV9idWZmZXJbaV0pOwotIAotLSAgICAgICAgaWYgKGNoID09IDApCi0rICAgICAgICBp ZiAoY2ggPT0gMCkgewotKyAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUgKHN0ciwgVFJVRSk7Ci0g ICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICAgICAgfQotIAotLSAgICAgICAgaWYgKCFn X3VuaWNoYXJfaXN4ZGlnaXQgKGNoKSkKLSsgICAgICAgIGlmICghZ191bmljaGFyX2lzeGRpZ2l0 IChjaCkpIHsKLSsgICAgICAgICAgICBnX3N0cmluZ19mcmVlIChzdHIsIFRSVUUpOwotICAgICAg ICAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgICAgIH0KLSAKLSAgICAgICAgIGJ1ZltnX3VuaWNo YXJfdG9fdXRmOCAoY2gsIGJ1ZildID0gJ1wwJzsKLSAKLUBAIC00ODcsOCArNDkxLDkgQEAgY2hl Y2tfaGV4IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgIGlmIChucHRyIC0gc3RyLT5z dHIgPCBzdHItPmxlbikgewotICAgICAgICAgZ19zdHJpbmdfZnJlZSAoc3RyLCBUUlVFKTsKLSAg ICAgICAgIHJldHVybiBGQUxTRTsKLS0gICAgfSBlbHNlCi0rICAgIH0gZWxzZSB7Ci0gICAgICAg ICBnX3N0cmluZ19mcmVlIChzdHIsIFRSVUUpOwotKyAgICB9Ci0gCi0gICAgIGlmIChnX3VuaWNo YXJfdmFsaWRhdGUgKG4pKSB7Ci0gICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2ggPSBuOwot QEAgLTU1OSwxMSArNTY0LDE1IEBAIGNoZWNrX2Vtb2ppX3RhYmxlIChJQnVzRW5naW5lU2ltcGxl ICAgICAgICpzaW1wbGUsCi0gCi0gICAgICAgICBjaCA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUg KHByaXYtPmNvbXBvc2VfYnVmZmVyW2ldKTsKLSAKLS0gICAgICAgIGlmIChjaCA9PSAwKQotKyAg ICAgICAgaWYgKGNoID09IDApIHsKLSsgICAgICAgICAgICBnX3N0cmluZ19mcmVlIChzdHIsIFRS VUUpOwotICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgICAgIH0KLSAKLS0gICAgICAg IGlmICghZ191bmljaGFyX2lzcHJpbnQgKGNoKSkKLSsgICAgICAgIGlmICghZ191bmljaGFyX2lz cHJpbnQgKGNoKSkgewotKyAgICAgICAgICAgIGdfc3RyaW5nX2ZyZWUgKHN0ciwgVFJVRSk7Ci0g ICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwotKyAgICAgICAgfQotIAotICAgICAgICAgYnVmW2df dW5pY2hhcl90b191dGY4IChjaCwgYnVmKV0gPSAnXDAnOwotIAotZGlmZiAtLWdpdCBhL3NyYy9p YnVzaG90a2V5LmMgYi9zcmMvaWJ1c2hvdGtleS5jCi1pbmRleCBkNGFiN2MyMy4uZTcyYjgzMDUg MTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2hvdGtleS5jCi0rKysgYi9zcmMvaWJ1c2hvdGtleS5jCi1A QCAtMiw3ICsyLDcgQEAKLSAvKiB2aW06c2V0IGV0IHN0cz00OiAqLwotIC8qIElCdXMgLSBUaGUg SW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4LTIwMTAgUGVuZyBIdWFuZyA8c2hhd24u cC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgVGFrYW8gRnVq aXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0rICogQ29weXJpZ2h0IChDKSAyMDE4 LTIwMjEgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0gICogQ29w eXJpZ2h0IChDKSAyMDA4LTIwMTkgUmVkIEhhdCwgSW5jLgotICAqCi0gICogVGhpcyBsaWJyYXJ5 IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotQEAgLTM3 Myw2ICszNzMsOCBAQCBpYnVzX2hvdGtleV9wcm9maWxlX2FkZF9ob3RrZXkgKElCdXNIb3RrZXlQ cm9maWxlICpwcm9maWxlLAotICAgICAgICAgcC0+ZXZlbnQgPSBldmVudDsKLSAgICAgfQotIAot KyAgICBpZiAoIXApCi0rICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIHAtPmhvdGtleXMgPSBn X2xpc3RfYXBwZW5kIChwLT5ob3RrZXlzLCBob3RrZXkpOwotIAotICAgICByZXR1cm4gVFJVRTsK LWRpZmYgLS1naXQgYS9zcmMvaWJ1c3JlZ2lzdHJ5LmMgYi9zcmMvaWJ1c3JlZ2lzdHJ5LmMKLWlu ZGV4IDMzODZhNWQxLi4yM2M1Y2ExYiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzcmVnaXN0cnkuYwot KysrIGIvc3JjL2lidXNyZWdpc3RyeS5jCi1AQCAtMiw3ICsyLDcgQEAKLSAvKiB2aW06c2V0IGV0 IHN0cz00OiAqLwotIC8qIGJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmlnaHQgKEMpIDIw MTUgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0IChD KSAyMDE1LTIwMjAgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0r ICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjEgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+Ci0gICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMjAgUmVkIEhhdCwgSW5jLgot ICAqCi0gICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgotQEAgLTQzOCw3ICs0MzgsMTIgQEAgaWJ1c19yZWdpc3RyeV9zYXZlX2Nh Y2hlX2ZpbGUgKElCdXNSZWdpc3RyeSAqcmVnaXN0cnksCi0gICAgIGdfYXNzZXJ0IChmaWxlbmFt ZSAhPSBOVUxMKTsKLSAKLSAgICAgY2FjaGVkaXIgPSBnX3BhdGhfZ2V0X2Rpcm5hbWUgKGZpbGVu YW1lKTsKLS0gICAgZ19ta2Rpcl93aXRoX3BhcmVudHMgKGNhY2hlZGlyLCAwNzc1KTsKLSsgICAg ZXJybm8gPSAwOwotKyAgICBpZiAoZ19ta2Rpcl93aXRoX3BhcmVudHMgKGNhY2hlZGlyLCAwNzc1 KSkgewotKyAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIG1rZGlyICVzOiAlcyIsIGNhY2hl ZGlyLCBnX3N0cmVycm9yIChlcnJubykpOwotKyAgICAgICAgZ19mcmVlIChjYWNoZWRpcik7Ci0r ICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgIH0KLSAgICAgZ19mcmVlIChjYWNoZWRpcik7Ci0g Ci0gICAgIHZhcmlhbnQgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKElCVVNfU0VSSUFM SVpBQkxFIChyZWdpc3RyeSkpOwotZGlmZiAtLWdpdCBhL3NyYy9pYnVzc2hhcmUuYyBiL3NyYy9p YnVzc2hhcmUuYwotaW5kZXggZTBlZjJjZTAuLjg5NzQ1MTFhIDEwMDY0NAotLS0tIGEvc3JjL2li dXNzaGFyZS5jCi0rKysgYi9zcmMvaWJ1c3NoYXJlLmMKLUBAIC0yLDcgKzIsNyBAQAotIC8qIHZp bTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLSAgKiBDb3B5cmln aHQgKEMpIDIwMDgtMjAxMCBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KLS0g KiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmEx QGdtYWlsLmNvbT4KLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBUYWthbyBGdWppd2FyYSA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSAgKiBDb3B5cmlnaHQgKEMpIDIwMDgtMjAxOCBS ZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi1AQCAtMTk3LDIyICsxOTcsMTcgQEAgaWJ1c19n ZXRfYWRkcmVzcyAodm9pZCkKLSAgICAgRklMRSAqcGY7Ci0gCi0gICAgIC8qIGZyZWUgYWRkcmVz cyAqLwotLSAgICBpZiAoYWRkcmVzcyAhPSBOVUxMKSB7Ci0tICAgICAgICBnX2ZyZWUgKGFkZHJl c3MpOwotLSAgICAgICAgYWRkcmVzcyA9IE5VTEw7Ci0tICAgIH0KLSsgICAgZ19jbGVhcl9wb2lu dGVyICgmYWRkcmVzcywgZ19mcmVlKTsKLSAKLSAgICAgLyogZ2V0IGFkZHJlc3MgZnJvbSBlbnYg dmFyaWFibGUgKi8KLSAgICAgYWRkcmVzcyA9IGdfc3RyZHVwIChnX2dldGVudiAoIklCVVNfQURE UkVTUyIpKTsKLS0gICAgaWYgKGFkZHJlc3MpIHsKLSsgICAgaWYgKGFkZHJlc3MpCi0gICAgICAg ICByZXR1cm4gYWRkcmVzczsKLS0gICAgfQotIAotICAgICAvKiByZWFkIGFkZHJlc3MgZnJvbSB+ Ly5jb25maWcvaWJ1cy9idXMvc29rZXRmaWxlICovCi0gICAgIHBmID0gZm9wZW4gKGlidXNfZ2V0 X3NvY2tldF9wYXRoICgpLCAiciIpOwotLSAgICBpZiAocGYgPT0gTlVMTCkgewotKyAgICBpZiAo cGYgPT0gTlVMTCkKLSAgICAgICAgIHJldHVybiBOVUxMOwotLSAgICB9Ci0gCi0gICAgIHdoaWxl ICghZmVvZiAocGYpKSB7Ci0gICAgICAgICBnY2hhciAqcCA9IGJ1ZmZlcjsKLUBAIC0yMjQsMTEg KzIxOSwxMiBAQCBpYnVzX2dldF9hZGRyZXNzICh2b2lkKQotICAgICAgICAgICAgIGNvbnRpbnVl OwotICAgICAgICAgLyogcGFyc2UgSUJVU19BRERSRVNTICovCi0gICAgICAgICBpZiAoc3RybmNt cCAocCwgIklCVVNfQUREUkVTUz0iLCBzaXplb2YgKCJJQlVTX0FERFJFU1M9IikgLSAxKSA9PSAw KSB7Ci0tICAgICAgICAgICAgYWRkcmVzcyA9IHAgKyBzaXplb2YgKCJJQlVTX0FERFJFU1M9Iikg LSAxOwotLSAgICAgICAgICAgIGZvciAocCA9IChnY2hhciAqKWFkZHJlc3M7ICpwICE9ICdcbicg JiYgKnAgIT0gJ1wwJzsgcCsrKTsKLSsgICAgICAgICAgICBnY2hhciAqaGVhZCA9IHAgKyBzaXpl b2YgKCJJQlVTX0FERFJFU1M9IikgLSAxOwotKyAgICAgICAgICAgIGZvciAocCA9IGhlYWQ7ICpw ICE9ICdcbicgJiYgKnAgIT0gJ1wwJzsgcCsrKTsKLSAgICAgICAgICAgICBpZiAoKnAgPT0gJ1xu JykKLSAgICAgICAgICAgICAgICAgKnAgPSAnXDAnOwotLSAgICAgICAgICAgIGFkZHJlc3MgPSBn X3N0cmR1cCAoYWRkcmVzcyk7Ci0rICAgICAgICAgICAgZ19mcmVlIChhZGRyZXNzKTsKLSsgICAg ICAgICAgICBhZGRyZXNzID0gZ19zdHJkdXAgKGhlYWQpOwotICAgICAgICAgICAgIGNvbnRpbnVl OwotICAgICAgICAgfQotIAotQEAgLTI0MSw5ICsyMzcsOCBAQCBpYnVzX2dldF9hZGRyZXNzICh2 b2lkKQotICAgICB9Ci0gICAgIGZjbG9zZSAocGYpOwotIAotLSAgICBpZiAocGlkID09IC0xIHx8 IGtpbGwgKHBpZCwgMCkgIT0gMCkgewotKyAgICBpZiAocGlkID09IC0xIHx8IGtpbGwgKHBpZCwg MCkgIT0gMCkKLSAgICAgICAgIHJldHVybiBOVUxMOwotLSAgICB9Ci0gCi0gICAgIHJldHVybiBh ZGRyZXNzOwotIH0KLUBAIC0yNTYsMTAgKzI1MSwxOSBAQCBpYnVzX3dyaXRlX2FkZHJlc3MgKGNv bnN0IGdjaGFyICphZGRyZXNzKQotICAgICBnX3JldHVybl9pZl9mYWlsIChhZGRyZXNzICE9IE5V TEwpOwotIAotICAgICBwYXRoID0gZ19wYXRoX2dldF9kaXJuYW1lIChpYnVzX2dldF9zb2NrZXRf cGF0aCAoKSk7Ci0tICAgIGdfbWtkaXJfd2l0aF9wYXJlbnRzIChwYXRoLCAwNzAwKTsKLSsgICAg ZXJybm8gPSAwOwotKyAgICBpZiAoZ19ta2Rpcl93aXRoX3BhcmVudHMgKHBhdGgsIDA3MDApKSB7 Ci0rICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gbWtkaXIgJXM6ICVzIiwgcGF0aCwgZ19z dHJlcnJvciAoZXJybm8pKTsKLSsgICAgICAgIGdfZnJlZSAocGF0aCk7Ci0rICAgICAgICByZXR1 cm47Ci0rICAgIH0KLSAgICAgZ19mcmVlIChwYXRoKTsKLSAKLS0gICAgZ191bmxpbmsgKGlidXNf Z2V0X3NvY2tldF9wYXRoICgpKTsKLSsgICAgZXJybm8gPSAwOwotKyAgICBpZiAoZ191bmxpbmsg KGlidXNfZ2V0X3NvY2tldF9wYXRoICgpKSkgewotKyAgICAgICAgZ193YXJuaW5nICgiRmFpbGVk IHRvIHVubGluayAlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICBpYnVzX2dldF9zb2NrZXRf cGF0aCAoKSwgZ19zdHJlcnJvciAoZXJybm8pKTsKLSsgICAgfQotICAgICBwZiA9IGZvcGVuIChp YnVzX2dldF9zb2NrZXRfcGF0aCAoKSwgInciKTsKLSAgICAgZ19yZXR1cm5faWZfZmFpbCAocGYg IT0gTlVMTCk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL2lidXN0ZXh0LmMgYi9zcmMvaWJ1c3RleHQu YwotaW5kZXggYTVlM2M0M2IuLmVkMGZlNjY2IDEwMDY0NAotLS0tIGEvc3JjL2lidXN0ZXh0LmMK LSsrKyBiL3NyYy9pYnVzdGV4dC5jCi1AQCAtMiw3ICsyLDggQEAKLSAvKiB2aW06c2V0IGV0IHN0 cz00OiAqLwotIC8qIElCdXMgLSBUaGUgSW5wdXQgQnVzCi0gICogQ29weXJpZ2h0IChDKSAyMDA4 LTIwMTAgUGVuZyBIdWFuZyA8c2hhd24ucC5odWFuZ0BnbWFpbC5jb20+Ci0tICogQ29weXJpZ2h0 IChDKSAyMDA4LTIwMTAgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDIx IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENvcHlyaWdo dCAoQykgMjAwOC0yMDIxIFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFyeSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi1AQCAt MjIwLDcgKzIyMSw3IEBAIGlidXNfdGV4dF9uZXdfZnJvbV91bmljaGFyIChndW5pY2hhciBjKQot ICAgICB0ZXh0PSBnX29iamVjdF9uZXcgKElCVVNfVFlQRV9URVhULCBOVUxMKTsKLSAKLSAgICAg dGV4dC0+aXNfc3RhdGljID0gRkFMU0U7Ci0tICAgIHRleHQtPnRleHQgPSAoZ2NoYXIgKilnX21h bGxvYyAoMTIpOwotKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoKHRleHQtPnRleHQgPSAoZ2No YXIgKilnX21hbGxvYyAoMTIpKSwgTlVMTCk7Ci0gICAgIGxlbiA9IGdfdW5pY2hhcl90b191dGY4 IChjLCB0ZXh0LT50ZXh0KTsKLSAgICAgdGV4dC0+dGV4dFtsZW5dID0gIDA7Ci0gCi1kaWZmIC0t Z2l0IGEvc3JjL2lidXN1bmljb2RlLmMgYi9zcmMvaWJ1c3VuaWNvZGUuYwotaW5kZXggOWU2ZjZi MmIuLmY3YTg5N2QxIDEwMDY0NAotLS0tIGEvc3JjL2lidXN1bmljb2RlLmMKLSsrKyBiL3NyYy9p YnVzdW5pY29kZS5jCi1AQCAtMSw4ICsxLDggQEAKLSAvKiAtKi0gbW9kZTogQzsgYy1iYXNpYy1v ZmZzZXQ6IDQ7IGluZGVudC10YWJzLW1vZGU6IG5pbDsgLSotICovCi0gLyogdmltOnNldCBldCBz dHM9NDogKi8KLSAvKiBidXMgLSBUaGUgSW5wdXQgQnVzCi0tICogQ29weXJpZ2h0IChDKSAyMDE4 LTIwMTkgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0tICogQ29w eXJpZ2h0IChDKSAyMDE4LTIwMTkgUmVkIEhhdCwgSW5jLgotKyAqIENvcHlyaWdodCAoQykgMjAx OC0yMDIxIFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotKyAqIENv cHlyaWdodCAoQykgMjAxOC0yMDIxIFJlZCBIYXQsIEluYy4KLSAgKgotICAqIFRoaXMgbGlicmFy eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAgKiBt b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj Ci1AQCAtNDcyLDcgKzQ3MiwxMiBAQCBpYnVzX3VuaWNvZGVfZGF0YV9zYXZlIChjb25zdCBnY2hh ciAqcGF0aCwKLSAKLSAgICAgZGlyID0gZ19wYXRoX2dldF9kaXJuYW1lIChwYXRoKTsKLSAgICAg aWYgKGdfc3RyY21wMCAoZGlyLCAiLiIpICE9IDAgJiYgZ19zdGF0IChkaXIsICZidWYpICE9IDAp IHsKLS0gICAgICAgIGdfbWtkaXJfd2l0aF9wYXJlbnRzIChkaXIsIDA3NzcpOwotKyAgICAgICAg ZXJybm8gPSAwOwotKyAgICAgICAgaWYgKGdfbWtkaXJfd2l0aF9wYXJlbnRzIChkaXIsIDA3Nzcp KSB7Ci0rICAgICAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIG1rZGlyICVzOiAlcyIsIGRp ciwgZ19zdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9 Ci0rCi0gICAgIH0KLSAgICAgZ19mcmVlIChkaXIpOwotICAgICBpZiAoIWdfZmlsZV9zZXRfY29u dGVudHMgKHBhdGgsIGNvbnRlbnRzLCBsZW5ndGgsICZlcnJvcikpIHsKLUBAIC05NjcsNyArOTcy LDExIEBAIGlidXNfdW5pY29kZV9ibG9ja19zYXZlIChjb25zdCBnY2hhciAqcGF0aCwKLSAKLSAg ICAgZGlyID0gZ19wYXRoX2dldF9kaXJuYW1lIChwYXRoKTsKLSAgICAgaWYgKGdfc3RyY21wMCAo ZGlyLCAiLiIpICE9IDAgJiYgZ19zdGF0IChkaXIsICZidWYpICE9IDApIHsKLS0gICAgICAgIGdf bWtkaXJfd2l0aF9wYXJlbnRzIChkaXIsIDA3NzcpOwotKyAgICAgICAgZXJybm8gPSAwOwotKyAg ICAgICAgaWYgKGdfbWtkaXJfd2l0aF9wYXJlbnRzIChkaXIsIDA3NzcpKSB7Ci0rICAgICAgICAg ICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIG1rZGlyICVzOiAlcyIsIGRpciwgZ19zdHJlcnJvciAo ZXJybm8pKTsKLSsgICAgICAgICAgICByZXR1cm47Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAg Z19mcmVlIChkaXIpOwotICAgICBpZiAoIWdfZmlsZV9zZXRfY29udGVudHMgKHBhdGgsIGNvbnRl bnRzLCBsZW5ndGgsICZlcnJvcikpIHsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1jb21w b3NlLmMgYi9zcmMvdGVzdHMvaWJ1cy1jb21wb3NlLmMKLWluZGV4IDRiNGM1NmU3Li44MWJmYzY5 YiAxMDA2NDQKLS0tLSBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYwotKysrIGIvc3JjL3Rlc3Rz L2lidXMtY29tcG9zZS5jCi1AQCAtMzYwLDExICszNjAsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKLSAgICAgLyogQXZvaWQgYSB3YXJuaW5nIG9mICJBVC1TUEk6IENvdWxkIG5v dCBvYnRhaW4gZGVza3RvcCBwYXRoIG9yIG5hbWUiCi0gICAgICAqIHdpdGggZ3RrX21haW4oKS4K LSAgICAgICovCi0tICAgIGdfc2V0ZW52ICgiTk9fQVRfQlJJREdFIiwgIjEiLCBUUlVFKTsKLSsg ICAgaWYgKCFnX3NldGVudiAoIk5PX0FUX0JSSURHRSIsICIxIiwgVFJVRSkpCi0rICAgICAgICBn X21lc3NhZ2UgKCJGYWlsZWQgc2V0ZW52IE5PX0FUX0JSSURHRVxuIik7Ci0gICAgIGdfdGVzdF9p bml0ICgmYXJnYywgJmFyZ3YsIE5VTEwpOwotICAgICBndGtfaW5pdCAoJmFyZ2MsICZhcmd2KTsK LSAKLS0gICAgbV9zcmNkaXIgPSBhcmdjID4gMSA/IGdfc3RyZHVwIChhcmd2WzFdKSA6IGdfc3Ry ZHVwICgiLiIpOwotKyAgICBtX3NyY2RpciA9IChhcmdjID4gMSAmJiBzdHJsZW4gKGFyZ3ZbMV0p IDwgRklMRU5BTUVfTUFYKQotKyAgICAgICAgICAgID8gZ19zdHJkdXAgKGFyZ3ZbMV0pIDogZ19z dHJkdXAgKCIuIik7Ci0gICAgIG1fY29tcG9zZV9maWxlID0gZ19zdHJkdXAgKGdfZ2V0ZW52ICgi Q09NUE9TRV9GSUxFIikpOwotICNpZiBHTElCX0NIRUNLX1ZFUlNJT04gKDIsIDU4LCAwKQotICAg ICB0ZXN0X25hbWUgPSBnX2dldF9sYW5ndWFnZV9uYW1lc193aXRoX2NhdGVnb3J5ICgiTENfQ1RZ UEUiKVswXTsKLWRpZmYgLS1naXQgYS9zcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jIGIvc3JjL3Rl c3RzL2lidXMta2V5cHJlc3MuYwotaW5kZXggZGQxYjAwNDIuLmJhYjA1Mzk4IDEwMDY0NAotLS0t IGEvc3JjL3Rlc3RzL2lidXMta2V5cHJlc3MuYwotKysrIGIvc3JjL3Rlc3RzL2lidXMta2V5cHJl c3MuYwotQEAgLTI5MSw3ICsyOTEsOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQot ICAgICAvKiBBdm9pZCBhIHdhcm5pbmcgb2YgIkFULVNQSTogQ291bGQgbm90IG9idGFpbiBkZXNr dG9wIHBhdGggb3IgbmFtZSIKLSAgICAgICogd2l0aCBndGtfbWFpbigpLgotICAgICAgKi8KLS0g ICAgZ19zZXRlbnYgKCJOT19BVF9CUklER0UiLCAiMSIsIFRSVUUpOwotKyAgICBpZiAoIWdfc2V0 ZW52ICgiTk9fQVRfQlJJREdFIiwgIjEiLCBUUlVFKSkKLSsgICAgICAgIGdfbWVzc2FnZSAoIkZh aWxlZCBzZXRlbnYgTk9fQVRfQlJJREdFXG4iKTsKLSAgICAgZ190ZXN0X2luaXQgKCZhcmdjLCAm YXJndiwgTlVMTCk7Ci0gICAgIGd0a19pbml0ICgmYXJnYywgJmFyZ3YpOwotIAotZGlmZiAtLWdp dCBhL3NyYy91bmljb2RlLXBhcnNlci5jIGIvc3JjL3VuaWNvZGUtcGFyc2VyLmMKLWluZGV4IGI0 MzAzZWE4Li4yYzRlYjY3NyAxMDA2NDQKLS0tLSBhL3NyYy91bmljb2RlLXBhcnNlci5jCi0rKysg Yi9zcmMvdW5pY29kZS1wYXJzZXIuYwotQEAgLTEsOCArMSw4IEBACi0gLyogLSotIG1vZGU6IEM7 IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWw7IC0qLSAqLwotIC8qIHZp bTpzZXQgZXQgc3RzPTQ6ICovCi0gLyogaWJ1cyAtIFRoZSBJbnB1dCBCdXMKLS0gKiBDb3B5cmln aHQgKEMpIDIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+Ci0t ICogQ29weXJpZ2h0IChDKSAyMDE4IFJlZCBIYXQsIEluYy4KLSsgKiBDb3B5cmlnaHQgKEMpIDIw MTgtMjAyMSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLSsgKiBD b3B5cmlnaHQgKEMpIDIwMTgtMjAyMSBSZWQgSGF0LCBJbmMuCi0gICoKLSAgKiBUaGlzIGxpYnJh cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp YwotQEAgLTc2LDExICs3Niw5IEBAIHVuaWNvZGVfZGF0YV9uZXdfb2JqZWN0IChVbmljb2RlRGF0 YSAqZGF0YSkKLSAgICAgICAgICAgICBpYnVzX3VuaWNvZGVfZGF0YV9uZXcgKCJjb2RlIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPmNvZGUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZSIsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhLT5uYW1lID8gZ19zdHJkdXAgKGRhdGEtPm5hbWUpCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZ19zdHJkdXAgKCIiKSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtPm5hbWUgPyBkYXRhLT5uYW1l IDogIiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxpYXMiLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+YWxpYXMgPyBnX3N0cmR1cCAo ZGF0YS0+YWxpYXMpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDogZ19zdHJkdXAgKCIiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRh dGEtPmFsaWFzID8gZGF0YS0+YWxpYXMgOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwpOwotICAgICBkYXRhLT5saXN0ID0gZ19zbGlzdF9hcHBlbmQgKGRhdGEt Pmxpc3QsIHVuaWNvZGUpOwotIH0KLUBAIC05OCw4ICs5Niw3IEBAIHVuaWNvZGVfYmxvY2tfbmV3 X29iamVjdCAoVW5pY29kZURhdGEgKmRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImVuZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0 YS0+ZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5uYW1lID8gZ19zdHJkdXAg KGRhdGEtPm5hbWUpCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDogZ19zdHJkdXAgKCIiKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhLT5uYW1lID8gZGF0YS0+bmFtZSA6ICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTlVMTCk7Ci0gICAgIGRhdGEtPmxpc3QgPSBnX3NsaXN0X2FwcGVuZCAoZGF0YS0+ bGlzdCwgYmxvY2spOwotIH0KLUBAIC0yODUsNyArMjgyLDcgQEAgdWNkX3BhcnNlX2ZpbGUgKGNv bnN0IGdjaGFyICpmaWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGVycm9y ID8gZXJyb3ItPm1lc3NhZ2UgOiAiIik7Ci0gICAgICAgICBnb3RvIGZhaWxlZF90b19wYXJzZV91 Y2RfbmFtZXNfbGlzdDsKLSAgICAgfQotLSAgICBoZWFkID0gZW5kID0gY29udGVudDsKLSsgICAg ZW5kID0gY29udGVudDsKLSAgICAgd2hpbGUgKCplbmQgPT0gJ1xuJyAmJiBlbmQgLSBjb250ZW50 IDwgbGVuZ3RoKSB7Ci0gICAgICAgICBlbmQrKzsKLSAgICAgICAgIG4rKzsKLUBAIC0zNTIsNiAr MzQ5LDcgQEAgc3RhdGljIHZvaWQKLSBibG9ja19saXN0X2R1bXAgKElCdXNVbmljb2RlQmxvY2sg KmJsb2NrLAotICAgICAgICAgICAgICAgICAgR1N0cmluZyAgICAgICAgICAqYnVmZikKLSB7Ci0r ICAgIGdjaGFyICpsaW5lOwotICAgICBnX3JldHVybl9pZl9mYWlsIChidWZmICE9IE5VTEwpOwot IAotICAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsICIgICAgLyogVFJBTlNMQVRPUlM6IFlvdSBt aWdodCByZWZlciB0aGUgIiAgICAgICAgIFwKLUBAIC0zNTksOSArMzU3LDEwIEBAIGJsb2NrX2xp c3RfZHVtcCAoSUJ1c1VuaWNvZGVCbG9jayAqYmxvY2ssCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIiAgICAgICAgICAgICAgICAgICAgdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuIiAgICAg XAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgICAgbXNnbWVyZ2UgLUMgZ3VjaGFy bWFwLnBvIGlidXMucG8gIiAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi aWJ1cy5wb3QgKi9cbiIpOwotLSAgICBnY2hhciAqbGluZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiAg ICBOXyhcIiVzXCIpLFxuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGli dXNfdW5pY29kZV9ibG9ja19nZXRfbmFtZSAoYmxvY2spKTsKLSsgICAgbGluZSA9IGdfc3RyZHVw X3ByaW50ZiAoIiAgICBOXyhcIiVzXCIpLFxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWJ1c191bmljb2RlX2Jsb2NrX2dldF9uYW1lIChibG9jaykpOwotICAgICBnX3N0cmluZ19h cHBlbmQgKGJ1ZmYsIGxpbmUpOwotKyAgICBnX2ZyZWUgKGxpbmUpOwotIH0KLSAKLSBzdGF0aWMg dm9pZAotQEAgLTM3MSw3ICszNzAsNyBAQCB1Y2RfYmxvY2tfdHJhbnNsYXRhYmxlX3NhdmUgKGNv bnN0IGdjaGFyICpmaWxlbmFtZSwKLSAgICAgZ2NoYXIgKmNvbnRlbnQgPSBOVUxMOwotICAgICBn c2l6ZSBsZW5ndGggPSAwOwotICAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLS0gICAgZ2NoYXIg KnA7Ci0rICAgIGdjaGFyICpwLCAqc3Vic3RyOwotICAgICBHU3RyaW5nICpidWZmID0gTlVMTDsK LSAgICAgaW50IGk7Ci0gICAgIEdTTGlzdCAqbGlzdCA9IGJsb2Nrc19saXN0OwotQEAgLTM5Miwy NSArMzkxLDMwIEBAIHVjZF9ibG9ja190cmFuc2xhdGFibGVfc2F2ZSAoY29uc3QgZ2NoYXIgKmZp bGVuYW1lLAotICAgICAgICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGlmIChwICE9IE5VTEwp IHsKLS0gICAgICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19zdHJuZHVwIChjb250ZW50LCBw IC0gY29udGVudCkpOwotKyAgICAgICAgc3Vic3RyID0gZ19zdHJuZHVwIChjb250ZW50LCBwIC0g Y29udGVudCk7Ci0rICAgICAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsIHN1YnN0cik7Ci0rICAg ICAgICBnX2ZyZWUgKHN1YnN0cik7Ci0gICAgICAgICBnX3N0cmluZ19hcHBlbmRfYyAoYnVmZiwg J1xuJyk7Ci0gICAgIH0KLSAgICAgZ19jbGVhcl9wb2ludGVyICgmY29udGVudCwgZ19mcmVlKTsK LSAKLS0gICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCBnX3N0cmR1cCAoIlxuIikpOwotLSAgICBn X3N0cmluZ19hcHBlbmQgKGJ1ZmYsIGdfc3RyZHVwX3ByaW50ZiAoIi8qIFRoaXMgZmlsZSBpcyBn ZW5lcmF0ZWQgYnkgJXMuICovIiwgX19GSUxFX18pKTsKLS0gICAgZ19zdHJpbmdfYXBwZW5kIChi dWZmLCBnX3N0cmR1cCAoIlxuIikpOwotLSAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsIGdfc3Ry ZHVwICgiaW5jbHVkZSA8Z2xpYi9naTE4bi5oPlxuIikpOwotLSAgICBnX3N0cmluZ19hcHBlbmQg KGJ1ZmYsIGdfc3RyZHVwICgiXG4iKSk7Ci0tICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgZ19z dHJkdXAgKCIjaWZuZGVmIF9fSUJVU19VTklDT0RFX0dFTl9IX1xuIikpOwotLSAgICBnX3N0cmlu Z19hcHBlbmQgKGJ1ZmYsIGdfc3RyZHVwICgiI2RlZmluZSBfX0lCVVNfVU5JQ09ERV9HRU5fSF9c biIpKTsKLS0gICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCBnX3N0cmR1cCAoImNvbnN0IHN0YXRp YyBjaGFyICp1bmljb2RlX2Jsb2Nrc1tdID0ge1xuIikpOwotKyAgICBnX3N0cmluZ19hcHBlbmQg KGJ1ZmYsICJcbiIpOwotKyAgICBzdWJzdHIgPSBnX3N0cmR1cF9wcmludGYgKCIvKiBUaGlzIGZp bGUgaXMgZ2VuZXJhdGVkIGJ5ICVzLiAqLyIsIF9fRklMRV9fKTsKLSsgICAgZ19zdHJpbmdfYXBw ZW5kIChidWZmLCBzdWJzdHIpOwotKyAgICBnX2ZyZWUgKHN1YnN0cik7Ci0rICAgIGdfc3RyaW5n X2FwcGVuZCAoYnVmZiwgIlxuIik7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgImluY2x1 ZGUgPGdsaWIvZ2kxOG4uaD5cbiIpOwotKyAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsICJcbiIp OwotKyAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsICIjaWZuZGVmIF9fSUJVU19VTklDT0RFX0dF Tl9IX1xuIik7Ci0rICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVmZiwgIiNkZWZpbmUgX19JQlVTX1VO SUNPREVfR0VOX0hfXG4iKTsKLSsgICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCAiY29uc3Qgc3Rh dGljIGNoYXIgKnVuaWNvZGVfYmxvY2tzW10gPSB7XG4iKTsKLSAgICAgZ19zbGlzdF9mb3JlYWNo IChsaXN0LCAoR0Z1bmMpYmxvY2tfbGlzdF9kdW1wLCBidWZmKTsKLS0gICAgZ19zdHJpbmdfYXBw ZW5kIChidWZmLCBnX3N0cmR1cCAoIn07XG4iKSk7Ci0tICAgIGdfc3RyaW5nX2FwcGVuZCAoYnVm ZiwgZ19zdHJkdXAgKCIjZW5kaWZcbiIpKTsKLSsgICAgZ19zdHJpbmdfYXBwZW5kIChidWZmLCAi fTtcbiIpOwotKyAgICBnX3N0cmluZ19hcHBlbmQgKGJ1ZmYsICIjZW5kaWZcbiIpOwotIAotICAg ICBpZiAoIWdfZmlsZV9zZXRfY29udGVudHMgKGZpbGVuYW1lLCBidWZmLT5zdHIsIC0xLCAmZXJy b3IpKSB7Ci0tICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gc2F2ZSBlbW9qaSBjYXRlZ29y eSBmaWxlICVzOiAlcyIsIGZpbGVuYW1lLCBlcnJvci0+bWVzc2FnZSk7Ci0rICAgICAgICBnX3dh cm5pbmcgKCJGYWlsZWQgdG8gc2F2ZSBlbW9qaSBjYXRlZ29yeSBmaWxlICVzOiAlcyIsCi0rICAg ICAgICAgICAgICAgICAgIGZpbGVuYW1lLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgICBnX2Vy cm9yX2ZyZWUgKGVycm9yKTsKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL3V0aWwvSU1ka2l0L0Zy YW1lTWdyLmMgYi91dGlsL0lNZGtpdC9GcmFtZU1nci5jCi1pbmRleCAwZTkxYjc4ZS4uODBkMDE5 YTAgMTAwNjQ0Ci0tLS0gYS91dGlsL0lNZGtpdC9GcmFtZU1nci5jCi0rKysgYi91dGlsL0lNZGtp dC9GcmFtZU1nci5jCi1AQCAtODUxLDcgKzg1MSw3IEBAIHN0YXRpYyBCb29sIF9GcmFtZU1nclBy b2Nlc3NQYWRkaW5nIChGcmFtZU1nciBmbSwgRm1TdGF0dXMqIHN0YXR1cykKLSAgICAgICAgICAg ICByZXR1cm4gVHJ1ZTsKLSAgICAgICAgIH0KLSAgICAgICAgIC8qZW5kaWYqLwotLSAgICAgICAg bmV4dF90eXBlID0gRnJhbWVJbnN0R2V0TmV4dFR5cGUgKGZtLT5maSwgJmluZm8pOwotKyAgICAg ICAgRnJhbWVJbnN0R2V0TmV4dFR5cGUgKGZtLT5maSwgJmluZm8pOwotICAgICAgICAgZm0tPmlk eCArPSBpbmZvLm51bTsKLSAgICAgICAgIGlmICgoZml0ciA9IF9GcmFtZUl0ZXJDb3VudGVySW5j ciAoZm0tPml0ZXJzLCBpbmZvLm51bSkpKQotICAgICAgICAgICAgIF9GcmFtZU1nclJlbW92ZUl0 ZXIgKGZtLCBmaXRyKTsKLUBAIC0xNTI1LDYgKzE1MjUsMTEgQEAgc3RhdGljIEl0ZXIgSXRlcklu aXQgKFhpbUZyYW1lIGZyYW1lLCBpbnQgY291bnQpCi0gICAgIHJlZ2lzdGVyIFhpbUZyYW1lVHlw ZSB0eXBlOwotIAotICAgICBpdCA9IChJdGVyKSBYbWFsbG9jIChzaXplb2YgKEl0ZXJSZWMpKTsK LSsgICAgaWYgKCFpdCkgewotKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQp IFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQgaW4gJXM6JWQuXG4iLAotKyAgICAgICAgICAgICAgICAg X19GSUxFX18sIF9fTElORV9fKTsKLSsgICAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0gICAg IGl0LT50ZW1wbGF0ZSA9IGZyYW1lOwotICAgICBpdC0+bWF4X2NvdW50ID0gKGNvdW50ID09IE5P X1ZBTFVFKSAgPyAgMCAgOiAgY291bnQ7Ci0gICAgIGl0LT5hbGxvd19leHBhbnNpb24gPSAoY291 bnQgPT0gTk9fVkFMVUUpOwotQEAgLTE2NjksOCArMTY3NCwxNSBAQCBzdGF0aWMgQm9vbCBJdGVy SXNMb29wRW5kIChJdGVyIGl0LCBCb29sICpteXNlbGYpCi0gCi0gc3RhdGljIFhpbUZyYW1lVHlw ZSBJdGVyR2V0TmV4dFR5cGUgKEl0ZXIgaXQsIFhpbUZyYW1lVHlwZUluZm8gaW5mbykKLSB7Ci0t ICAgIFhpbUZyYW1lVHlwZSB0eXBlID0gaXQtPnRlbXBsYXRlLT50eXBlOwotKyAgICBYaW1GcmFt ZVR5cGUgdHlwZTsKLSsKLSsgICAgaWYgKCFpdCB8fCAhaXQtPnRlbXBsYXRlKSB7Ci0rICAgICAg ICBmcHJpbnRmIChzdGRlcnIsICIoWElNLUlNZGtpdCkgV0FSTklORzogbWFsbG9jIGZhaWxlZCBp biAlczolZC5cbiIsCi0rICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKwly ZXR1cm4gKFhpbUZyYW1lVHlwZSkgTlVMTDsKLSsgICAgfQotIAotKyAgICB0eXBlID0gaXQtPnRl bXBsYXRlLT50eXBlOwotICAgICBpZiAoaXQtPnN0YXJ0X2NvdW50ZXIpCi0gICAgIHsKLSAgICAg ICAgICgqaXQtPnN0YXJ0X3dhdGNoX3Byb2MpIChpdCwgaXQtPmNsaWVudF9kYXRhKTsKLUBAIC0x NzY2LDcgKzE3NzgsMTUgQEAgc3RhdGljIFhpbUZyYW1lVHlwZSBJdGVyR2V0TmV4dFR5cGUgKEl0 ZXIgaXQsIFhpbUZyYW1lVHlwZUluZm8gaW5mbykKLSAKLSBzdGF0aWMgWGltRnJhbWVUeXBlIEl0 ZXJQZWVrTmV4dFR5cGUgKEl0ZXIgaXQsIFhpbUZyYW1lVHlwZUluZm8gaW5mbykKLSB7Ci0tICAg IFhpbUZyYW1lVHlwZSB0eXBlID0gaXQtPnRlbXBsYXRlLT50eXBlOwotKyAgICBYaW1GcmFtZVR5 cGUgdHlwZTsKLSsKLSsgICAgaWYgKCFpdC0+dGVtcGxhdGUpIHsKLSsgICAgICAgIGZwcmludGYg KHN0ZGVyciwgIihYSU0tSU1ka2l0KSBXQVJOSU5HOiBkZXJlZmVyZW5jZSBwb2ludGVyICVzOiVk LlxuIiwKLSsgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rICAgICAgICBy ZXR1cm4gKFhpbUZyYW1lVHlwZSkgTlVMTDsKLSsgICAgfQotKwotKyAgICB0eXBlID0gaXQtPnRl bXBsYXRlLT50eXBlOwotIAotICAgICBpZiAoIWl0LT5hbGxvd19leHBhbnNpb24gICYmICBpdC0+ Y3VyX25vID49IGl0LT5tYXhfY291bnQpCi0gICAgICAgICByZXR1cm4gKEVPTCk7Ci1AQCAtMTg2 Niw2ICsxODg2LDkgQEAgc3RhdGljIEZtU3RhdHVzIEl0ZXJTZXRTaXplIChJdGVyIGl0LCBpbnQg bnVtKQotICAgICAgICAgICAgICAgICAgICAgZHIubnVtID0gTk9fVkFMVUU7Ci0gICAgICAgICAg ICAgICAgICAgICBkID0gQ2hhaW5NZ3JTZXREYXRhICgmaXQtPmNtLCBpLCBkcik7Ci0gICAgICAg ICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgaWYgKCFkKSB7Ci0rICAgICAgICAgICAgICAg ICAgICByZXR1cm4gRm1Ob01vcmVEYXRhOwotKyAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgIC8qZW5kaWYqLwotICAgICAgICAgICAgICAgICBpZiAoZC0+bnVtID09IE5PX1ZBTFVF KQotICAgICAgICAgICAgICAgICB7Ci1AQCAtMjI1NCw2ICsyMjc3LDExIEBAIHN0YXRpYyBFeHRy YURhdGEgQ2hhaW5NZ3JTZXREYXRhIChDaGFpbk1nciBjbSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgRXh0cmFEYXRhUmVjIGRhdGEpCi0gewotICAgICBDaGFpbiBjdXIgPSAo Q2hhaW4pIFhtYWxsb2MgKHNpemVvZiAoQ2hhaW5SZWMpKTsKLSsgICAgaWYgKCFjdXIpIHsKLSsg ICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0tSU1ka2l0KSBXQVJOSU5HOiBtYWxsb2MgZmFp bGVkIGluICVzOiVkLlxuIiwKLSsgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7 Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotIAotICAgICBjdXItPmZyYW1lX25vID0g ZnJhbWVfbm87Ci0gICAgIGN1ci0+ZCA9IGRhdGE7Ci1kaWZmIC0tZ2l0IGEvdXRpbC9JTWRraXQv aTE4bkljLmMgYi91dGlsL0lNZGtpdC9pMThuSWMuYwotaW5kZXggMjg5ODM3YTYuLjE0YTNkYzUx IDEwMDY0NAotLS0tIGEvdXRpbC9JTWRraXQvaTE4bkljLmMKLSsrKyBiL3V0aWwvSU1ka2l0L2kx OG5JYy5jCi1AQCAtNDcwLDEzICs0NzAsMTYgQEAgc3RhdGljIFhJQ0F0dHJpYnV0ZSAqQ3JlYXRl TmVzdGVkTGlzdCAoQ0FSRDE2IGF0dHJfaWQsCi0gICAgIC8qZW5kZm9yKi8KLSAgICAgCi0gICAg IG5lc3RfbGlzdCA9IChYSUNBdHRyaWJ1dGUgKikgbWFsbG9jIChzaXplb2YgKFhJQ0F0dHJpYnV0 ZSkpOwotLSAgICBpZiAobmVzdF9saXN0ID09IE5VTEwpCi0rICAgIGlmIChuZXN0X2xpc3QgPT0g TlVMTCkgewotKyAgICAgICAgWEZyZWUgKHZhbHVlcyk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsK LSsgICAgfQotICAgICAvKmVuZGlmKi8KLSAgICAgbWVtc2V0IChuZXN0X2xpc3QsIDAsIHNpemVv ZiAoWElDQXR0cmlidXRlKSk7Ci0gICAgIG5lc3RfbGlzdC0+dmFsdWUgPSAodm9pZCAqKSBtYWxs b2MgKHZhbHVlX2xlbmd0aCk7Ci0gICAgIGlmIChuZXN0X2xpc3QtPnZhbHVlID09IE5VTEwpIHsK LSAgICAgICAgIFhGcmVlIChuZXN0X2xpc3QpOwotKyAgICAgICAgWEZyZWUgKHZhbHVlcyk7Ci0g ICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotICAgICAvKmVuZGlmKi8KLUBAIC01MzksNyAr NTQyLDEzIEBAIHN0YXRpYyBpbnQgR2V0SUNWYWx1ZSAoWGkxOG4gaTE4bl9jb3JlLAotICAgICAg ICAgICAgICAgICAgICAgYXR0cl9yZXRbbl0uYXR0cmlidXRlX2lkID0geGljX2F0dHJbal0uYXR0 cmlidXRlX2lkOwotICAgICAgICAgICAgICAgICAgICAgYXR0cl9yZXRbbl0ubmFtZV9sZW5ndGgg PSB4aWNfYXR0cltqXS5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgICBhdHRyX3JldFtuXS5u YW1lID0gbWFsbG9jICh4aWNfYXR0cltqXS5sZW5ndGggKyAxKTsKLS0JCSAgICBzdHJjcHkoYXR0 cl9yZXRbbl0ubmFtZSwgeGljX2F0dHJbal0ubmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgICBp ZiAoIWF0dHJfcmV0W25dLm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRm IChzdGRlcnIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihYSU0tSU1ka2l0 KSBXQVJOSU5HOiBtYWxsb2MgZmFpbGVkIGluICVzOiVkLlxuIiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyAgICAgICAgICAgICAgICAg ICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICBzdHJjcHkoYXR0cl9yZXRbbl0u bmFtZSwgeGljX2F0dHJbal0ubmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgICAgICBhdHRyX3JldFtuXS50eXBlID0geGljX2F0dHJbal0udHlwZTsKLSAgICAg ICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICAgICAgIGkrKzsKLUBAIC01NjAs NyArNTY5LDEzIEBAIHN0YXRpYyBpbnQgR2V0SUNWYWx1ZSAoWGkxOG4gaTE4bl9jb3JlLAotICAg ICAgICAgICAgICAgICBhdHRyX3JldFtuXS5hdHRyaWJ1dGVfaWQgPSB4aWNfYXR0cltqXS5hdHRy aWJ1dGVfaWQ7Ci0gICAgICAgICAgICAgICAgIGF0dHJfcmV0W25dLm5hbWVfbGVuZ3RoID0geGlj X2F0dHJbal0ubGVuZ3RoOwotICAgICAgICAgICAgICAgICBhdHRyX3JldFtuXS5uYW1lID0gbWFs bG9jICh4aWNfYXR0cltqXS5sZW5ndGggKyAxKTsKLS0JCXN0cmNweShhdHRyX3JldFtuXS5uYW1l LCB4aWNfYXR0cltqXS5uYW1lKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFhdHRyX3JldFtuXS5u YW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICBmcHJpbnRmIChzdGRlcnIsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQg aW4gJXM6JWQuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9f TElORV9fKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsJCSAgICBzdHJjcHkoYXR0cl9y ZXRbbl0ubmFtZSwgeGljX2F0dHJbal0ubmFtZSk7Ci0rICAgICAgICAgICAgICAgIH0KLSAgICAg ICAgICAgICAgICAgYXR0cl9yZXRbbl0udHlwZSA9IHhpY19hdHRyW2pdLnR5cGU7Ci0gICAgICAg ICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgICAgICAgYnJlYWs7Ci1AQCAtNzAwLDEwICs3MTUs MTUgQEAgdm9pZCBfWGkxOG5DaGFuZ2VJQyAoWElNUyBpbXMsCi0gICAgICAgICBhdHRyaWJfbGlz dFthdHRyaWJfbnVtXS52YWx1ZV9sZW5ndGggPSB2YWx1ZV9sZW5ndGg7Ci0gICAgICAgICBGcmFt ZU1nckdldFRva2VuIChmbSwgdmFsdWUpOwotICAgICAgICAgYXR0cmliX2xpc3RbYXR0cmliX251 bV0udmFsdWUgPSAodm9pZCAqKSBtYWxsb2MgKHZhbHVlX2xlbmd0aCArIDEpOwotLSAgICAgICAg bWVtbW92ZSAoYXR0cmliX2xpc3RbYXR0cmliX251bV0udmFsdWUsIHZhbHVlLCB2YWx1ZV9sZW5n dGgpOwotLQkoKGNoYXIgKilhdHRyaWJfbGlzdFthdHRyaWJfbnVtXS52YWx1ZSlbdmFsdWVfbGVu Z3RoXSA9ICdcMCc7Ci0rICAgICAgICBpZiAoIWF0dHJpYl9saXN0W2F0dHJpYl9udW1dLnZhbHVl KSB7Ci0rICAgICAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6 IG1hbGxvYyBmYWlsZWQgaW4gJXM6JWQuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgIF9fRklM RV9fLCBfX0xJTkVfXyk7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIG1lbW1vdmUg KGF0dHJpYl9saXN0W2F0dHJpYl9udW1dLnZhbHVlLCB2YWx1ZSwgdmFsdWVfbGVuZ3RoKTsKLSsg ICAgICAgICAgICAoKGNoYXIgKilhdHRyaWJfbGlzdFthdHRyaWJfbnVtXS52YWx1ZSlbdmFsdWVf bGVuZ3RoXSA9ICdcMCc7Ci0rICAgICAgICAgICAgdG90YWxfdmFsdWVfbGVuZ3RoICs9ICh2YWx1 ZV9sZW5ndGggKyAxKTsKLSsgICAgICAgIH0KLSAgICAgICAgIGF0dHJpYl9udW0rKzsKLS0gICAg ICAgIHRvdGFsX3ZhbHVlX2xlbmd0aCArPSAodmFsdWVfbGVuZ3RoICsgMSk7Ci0gICAgIH0KLSAg ICAgLyplbmR3aGlsZSovCi0gCi1AQCAtOTE3LDYgKzkzNywxMiBAQCB2b2lkIF9YaTE4bkdldElD IChYSU1TIGltcywgSU1Qcm90b2NvbCAqY2FsbF9kYXRhLCB1bnNpZ25lZCBjaGFyICpwKQotICAg ICBGcmFtZU1nckdldFRva2VuIChmbSwgYnl0ZV9sZW5ndGgpOwotIAotICAgICBhdHRySURfbGlz dCA9IChDQVJEMTYgKikgbWFsbG9jIChzaXplb2YgKENBUkQxNikqSUNfU0laRSk7ICAvKiBib2d1 cyAqLwotKyAgICBpZiAoIWF0dHJJRF9saXN0KSB7Ci0rICAgICAgICBmcHJpbnRmIChzdGRlcnIs ICIoWElNLUlNZGtpdCkgV0FSTklORzogbWFsbG9jIGZhaWxlZCBpbiAlczolZC5cbiIsCi0rICAg ICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyAgICAgICAgRnJhbWVNZ3JGcmVl IChmbSk7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSAgICAgbWVtc2V0IChhdHRySURfbGlz dCwgMCwgc2l6ZW9mIChDQVJEMTYpKklDX1NJWkUpOwotIAotICAgICBudW1iZXIgPSAwOwotQEAg LTEwMjYsNyArMTA1Miw3IEBAIHZvaWQgX1hpMThuR2V0SUMgKFhJTVMgaW1zLCBJTVByb3RvY29s ICpjYWxsX2RhdGEsIHVuc2lnbmVkIGNoYXIgKnApCi0gICAgIHsKLSAgICAgICAgIF9YaTE4blNl bmRNZXNzYWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0gICAgICAg ICBYRnJlZSAoYXR0cklEX2xpc3QpOwotLSAgICAgICAgRnJhbWVNZ3JGcmVlIChmbSk7Ci0rICAg ICAgICBnb3RvIF9YaTE4bkdldElDX2Zpbml0OwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0g ICAgIC8qZW5kaWYqLwotQEAgLTEwOTcsNiArMTEyMyw3IEBAIHZvaWQgX1hpMThuR2V0SUMgKFhJ TVMgaW1zLCBJTVByb3RvY29sICpjYWxsX2RhdGEsIHVuc2lnbmVkIGNoYXIgKnApCi0gICAgIH0K LSAgICAgLyplbmRmb3IqLwotICAgICAKLStfWGkxOG5HZXRJQ19maW5pdDoKLSAgICAgaWYgKHBy ZWVkaXRfcmV0KQotICAgICB7Ci0gICAgICAgICBYRnJlZSAocHJlZWRpdF9yZXQtPnZhbHVlKTsK LWRpZmYgLS1naXQgYS91dGlsL0lNZGtpdC9pMThuTWV0aG9kLmMgYi91dGlsL0lNZGtpdC9pMThu TWV0aG9kLmMKLWluZGV4IDM2ZGQyOGFjLi45YzQ0ZTdmZSAxMDA2NDQKLS0tLSBhL3V0aWwvSU1k a2l0L2kxOG5NZXRob2QuYwotKysrIGIvdXRpbC9JTWRraXQvaTE4bk1ldGhvZC5jCi1AQCAtMTY2 LDggKzE2NiwxNCBAQCBzdGF0aWMgQm9vbCBHZXRFbmNvZGluZ3MoWGkxOG4gaTE4bl9jb3JlLCBY SU1FbmNvZGluZ3MgKipwX2VuY29kaW5nKQotICAgICB7Ci0gICAgICAgICAoKnBfZW5jb2Rpbmcp LT5zdXBwb3J0ZWRfZW5jb2RpbmdzW2ldCi0gICAgICAgICAgICAgPSAoY2hhciAqKSBtYWxsb2Mg KHN0cmxlbiAocC0+c3VwcG9ydGVkX2VuY29kaW5nc1tpXSkgKyAxKTsKLS0gICAgICAgIHN0cmNw eSAoKCpwX2VuY29kaW5nKS0+c3VwcG9ydGVkX2VuY29kaW5nc1tpXSwKLS0gICAgICAgICAgICAg ICAgcC0+c3VwcG9ydGVkX2VuY29kaW5nc1tpXSk7Ci0rICAgICAgICBpZiAoISgoKnBfZW5jb2Rp bmcpLT5zdXBwb3J0ZWRfZW5jb2RpbmdzW2ldKSkgewotKyAgICAgICAgICAgIGZwcmludGYgKHN0 ZGVyciwgIihYSU0tSU1ka2l0KSBXQVJOSU5HOiBtYWxsb2MgZmFpbGVkIGluICVzOiVkLlxuIiwK LSsgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKwotKyAgICAgICAg fSBlbHNlIHsKLSsgICAgICAgICAgICBzdHJjcHkgKCgqcF9lbmNvZGluZyktPnN1cHBvcnRlZF9l bmNvZGluZ3NbaV0sCi0rICAgICAgICAgICAgICAgICAgICBwLT5zdXBwb3J0ZWRfZW5jb2Rpbmdz W2ldKTsKLSsgICAgICAgIH0KLSAgICAgfQotICAgICAvKmVuZGlmKi8KLSAgICAgcmV0dXJuIFRy dWU7Ci1AQCAtMTg3LDExICsxOTMsMTcgQEAgc3RhdGljIGNoYXIgKlBhcnNlQXJncyAoWGkxOG4g aTE4bl9jb3JlLCBpbnQgbW9kZSwgWElNQXJnICphcmdzKQotICAgICAgICAgICAgICAgICBpZiAo YWRkcmVzcy0+aW12YWx1ZV9tYXNrICYgSTE4Tl9JTV9MT0NBTEUpCi0gICAgICAgICAgICAgICAg ICAgICByZXR1cm4gSU1Mb2NhbGU7Ci0gICAgICAgICAgICAgICAgIC8qZW5kaWYqLwotKyAgICAg ICAgICAgICAgICAvKiBhZGRyZXNzLT5pbV9sb2NhbGUgd2lsbCBiZSByZWxlYXNlZCBsYXRlciBh bmQgZG9uJ3QgbmVlZAotKyAgICAgICAgICAgICAgICAgKiAtV2FuYWx5emVyLW1hbGxvYy1sZWFr IGZsYWcgaW4gZ2NjIDExLjAuMS4KLSsgICAgICAgICAgICAgICAgICovCi0rI3ByYWdtYSBHQ0Mg ZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2FuYWx5 emVyLW1hbGxvYy1sZWFrIgotICAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbV9sb2NhbGUgPSAo Y2hhciAqKSBtYWxsb2MgKHN0cmxlbiAocC0+dmFsdWUpICsgMSk7Ci0gICAgICAgICAgICAgICAg IGlmICghYWRkcmVzcy0+aW1fbG9jYWxlKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElN TG9jYWxlOwotICAgICAgICAgICAgICAgICAvKmVuZGlmKi8KLSAgICAgICAgICAgICAgICAgc3Ry Y3B5IChhZGRyZXNzLT5pbV9sb2NhbGUsIHAtPnZhbHVlKTsKLSsjcHJhZ21hIEdDQyBkaWFnbm9z dGljIHBvcAotICAgICAgICAgICAgICAgICBhZGRyZXNzLT5pbXZhbHVlX21hc2sgfD0gSTE4Tl9J TV9MT0NBTEU7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcCAo cC0+bmFtZSwgSU1TZXJ2ZXJUcmFuc3BvcnQpID09IDApCi1AQCAtMTk5LDExICsyMTEsMTQgQEAg c3RhdGljIGNoYXIgKlBhcnNlQXJncyAoWGkxOG4gaTE4bl9jb3JlLCBpbnQgbW9kZSwgWElNQXJn ICphcmdzKQotICAgICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+aW12YWx1ZV9tYXNrICYgSTE4 Tl9JTV9BRERSRVNTKQotICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElNU2VydmVyVHJhbnNw b3J0OwotICAgICAgICAgICAgICAgICAvKmVuZGlmKi8KLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGlj IHB1c2gKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XYW5hbHl6ZXItbWFsbG9j LWxlYWsiCi0gICAgICAgICAgICAgICAgIGFkZHJlc3MtPmltX2FkZHIgPSAoY2hhciAqKSBtYWxs b2MgKHN0cmxlbiAocC0+dmFsdWUpICsgMSk7Ci0gICAgICAgICAgICAgICAgIGlmICghYWRkcmVz cy0+aW1fYWRkcikKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTVNlcnZlclRyYW5zcG9y dDsKLSAgICAgICAgICAgICAgICAgLyplbmRpZiovCi0gICAgICAgICAgICAgICAgIHN0cmNweShh ZGRyZXNzLT5pbV9hZGRyLCBwLT52YWx1ZSk7Ci0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AK LSAgICAgICAgICAgICAgICAgYWRkcmVzcy0+aW12YWx1ZV9tYXNrIHw9IEkxOE5fSU1fQUREUkVT UzsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wIChwLT5uYW1l LCBJTVNlcnZlck5hbWUpID09IDApCi1AQCAtMjExLDExICsyMjYsMTQgQEAgc3RhdGljIGNoYXIg KlBhcnNlQXJncyAoWGkxOG4gaTE4bl9jb3JlLCBpbnQgbW9kZSwgWElNQXJnICphcmdzKQotICAg ICAgICAgICAgICAgICBpZiAoYWRkcmVzcy0+aW12YWx1ZV9tYXNrICYgSTE4Tl9JTV9OQU1FKQot ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIElNU2VydmVyTmFtZTsKLSAgICAgICAgICAgICAg ICAgLyplbmRpZiovCi0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCi0rI3ByYWdtYSBHQ0Mg ZGlhZ25vc3RpYyBpZ25vcmVkICItV2FuYWx5emVyLW1hbGxvYy1sZWFrIgotICAgICAgICAgICAg ICAgICBhZGRyZXNzLT5pbV9uYW1lID0gKGNoYXIgKikgbWFsbG9jIChzdHJsZW4gKHAtPnZhbHVl KSArIDEpOwotICAgICAgICAgICAgICAgICBpZiAoIWFkZHJlc3MtPmltX25hbWUpCi0gICAgICAg ICAgICAgICAgICAgICByZXR1cm4gSU1TZXJ2ZXJOYW1lOwotICAgICAgICAgICAgICAgICAvKmVu ZGlmKi8KLSAgICAgICAgICAgICAgICAgc3RyY3B5IChhZGRyZXNzLT5pbV9uYW1lLCBwLT52YWx1 ZSk7Ci0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgICAgICAgICAgYWRkcmVz cy0+aW12YWx1ZV9tYXNrIHw9IEkxOE5fSU1fTkFNRTsKLSAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgZWxzZSBpZiAoc3RyY21wIChwLT5uYW1lLCBJTVNlcnZlcldpbmRvdykgPT0gMCkKLUBA IC02OTgsNyArNzE2LDcgQEAgc3RhdGljIHZvaWQgUmV0dXJuU2VsZWN0aW9uTm90aWZ5IChYaTE4 biBpMThuX2NvcmUsIFhTZWxlY3Rpb25SZXF1ZXN0RXZlbnQgKmV2KQotIHsKLSAgICAgWEV2ZW50 IGV2ZW50OwotICAgICBEaXNwbGF5ICpkcHkgPSBpMThuX2NvcmUtPmFkZHJlc3MuZHB5OwotLSAg ICBjaGFyIGJ1Zls0MDk2XTsKLSsgICAgY2hhciBidWZbNDA5Nl0gPSB7ICdcMCcsIH07Ci0gCi0g ICAgIGV2ZW50LnR5cGUgPSBTZWxlY3Rpb25Ob3RpZnk7Ci0gICAgIGV2ZW50LnhzZWxlY3Rpb24u cmVxdWVzdG9yID0gZXYtPnJlcXVlc3RvcjsKLWRpZmYgLS1naXQgYS91dGlsL0lNZGtpdC9pMThu T2Zmc2V0Q2FjaGUuYyBiL3V0aWwvSU1ka2l0L2kxOG5PZmZzZXRDYWNoZS5jCi1pbmRleCBkNTM3 OTA1MS4uZTJmZThjNmIgMTAwNjQ0Ci0tLS0gYS91dGlsL0lNZGtpdC9pMThuT2Zmc2V0Q2FjaGUu YwotKysrIGIvdXRpbC9JTWRraXQvaTE4bk9mZnNldENhY2hlLmMKLUBAIC05NCw3ICs5NCw3IEBA IHZvaWQgX1hpMThuU2V0UHJvcGVydHlPZmZzZXQgKFhpMThuT2Zmc2V0Q2FjaGUgKm9mZnNldF9j YWNoZSwgQXRvbSBrZXksCi0gICAgIH0KLSAKLSAgICAgYXNzZXJ0IChkYXRhICE9IE5VTEwpOwot LSAgICBpZiAob2Zmc2V0X2NhY2hlLT5zaXplID4gMCkgewotKyAgICBpZiAob2Zmc2V0X2NhY2hl LT5zaXplID4gMCAmJiBpIDwgb2Zmc2V0X2NhY2hlLT5jYXBhY2l0eSkgewotICAgICAgICAgZGF0 YVtpXS5rZXkgPSBrZXk7Ci0gICAgICAgICBkYXRhW2ldLm9mZnNldCA9IG9mZnNldDsKLSAgICAg fQotZGlmZiAtLWdpdCBhL3V0aWwvSU1ka2l0L2kxOG5QdEhkci5jIGIvdXRpbC9JTWRraXQvaTE4 blB0SGRyLmMKLWluZGV4IGVhZWVlZTFjLi44ZGM1MjcxNCAxMDA2NDQKLS0tLSBhL3V0aWwvSU1k a2l0L2kxOG5QdEhkci5jCi0rKysgYi91dGlsL0lNZGtpdC9pMThuUHRIZHIuYwotQEAgLTE4MSw4 ICsxODEsMTMgQEAgc3RhdGljIHZvaWQgT3Blbk1lc3NhZ2VQcm9jKFhJTVMgaW1zLCBJTVByb3Rv Y29sICpjYWxsX2RhdGEsIHVuc2lnbmVkIGNoYXIgKnApCi0gICAgIEZyYW1lTWdyR2V0VG9rZW4g KGZtLCBuYW1lKTsKLSAgICAgaW1vcGVuLT5sYW5nLmxlbmd0aCA9IHN0cl9sZW5ndGg7Ci0gICAg IGltb3Blbi0+bGFuZy5uYW1lID0gbWFsbG9jIChzdHJfbGVuZ3RoICsgMSk7Ci0tICAgIHN0cm5j cHkgKGltb3Blbi0+bGFuZy5uYW1lLCBuYW1lLCBzdHJfbGVuZ3RoKTsKLS0gICAgaW1vcGVuLT5s YW5nLm5hbWVbc3RyX2xlbmd0aF0gPSAoY2hhcikgMDsKLSsgICAgaWYgKCFpbW9wZW4tPmxhbmcu bmFtZSkgewotKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6 IG1hbGxvYyBmYWlsZWQgaW4gJXM6JWQuXG4iLAotKyAgICAgICAgICAgICAgICAgX19GSUxFX18s IF9fTElORV9fKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIHN0cm5jcHkgKGltb3Blbi0+bGFu Zy5uYW1lLCBuYW1lLCBzdHJfbGVuZ3RoKTsKLSsgICAgICAgIGltb3Blbi0+bGFuZy5uYW1lW3N0 cl9sZW5ndGhdID0gKGNoYXIpIDA7Ci0rICAgIH0KLSAKLSAgICAgRnJhbWVNZ3JGcmVlIChmbSk7 Ci0gCi1AQCAtMzM5LDcgKzM0NCw3IEBAIHN0YXRpYyBYSU1FeHQgKk1ha2VFeHRlbnNpb25MaXN0 IChYaTE4biBpMThuX2NvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBudW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqcmVwbHlf bnVtYmVyKQotIHsKLS0gICAgWElNRXh0ICpleHRfbGlzdDsKLSsgICAgWElNRXh0ICpleHRfbGlz dCA9IE5VTEw7Ci0gICAgIFhJTUV4dCAqaW1fZXh0ID0gKFhJTUV4dCAqKSBpMThuX2NvcmUtPmFk ZHJlc3MuZXh0ZW5zaW9uOwotICAgICBpbnQgaW1fZXh0X2xlbiA9IGkxOG5fY29yZS0+YWRkcmVz cy5leHRfbnVtOwotICAgICBpbnQgaTsKLUBAIC0zNTgsNyArMzYzLDggQEAgc3RhdGljIFhJTUV4 dCAqTWFrZUV4dGVuc2lvbkxpc3QgKFhpMThuIGkxOG5fY29yZSwKLSAgICAgICAgIHsKLSAgICAg ICAgICAgICBmb3IgKGogPSAwOyAgaiA8IChpbnQpIG51bWJlcjsgIGorKykKLSAgICAgICAgICAg ICB7Ci0tICAgICAgICAgICAgICAgIGlmIChzdHJjbXAgKGxpYl9leHRlbnNpb25bal0ubmFtZSwg aW1fZXh0W2ldLm5hbWUpID09IDApCi0rICAgICAgICAgICAgICAgIGlmIChsaWJfZXh0ZW5zaW9u W2pdLm5hbWUKLSsgICAgICAgICAgICAgICAgICAgICYmIHN0cmNtcCAobGliX2V4dGVuc2lvbltq XS5uYW1lLCBpbV9leHRbaV0ubmFtZSkgPT0gMCkKLSAgICAgICAgICAgICAgICAgewotICAgICAg ICAgICAgICAgICAgICAgKCpyZXBseV9udW1iZXIpKys7Ci0gICAgICAgICAgICAgICAgICAgICBi cmVhazsKLUBAIC0zODksNyArMzk1LDEzIEBAIHN0YXRpYyBYSU1FeHQgKk1ha2VFeHRlbnNpb25M aXN0IChYaTE4biBpMThuX2NvcmUsCi0gICAgICAgICAgICAgZXh0X2xpc3RbaV0ubWlub3Jfb3Bj b2RlID0gaW1fZXh0W2ldLm1pbm9yX29wY29kZTsKLSAgICAgICAgICAgICBleHRfbGlzdFtpXS5s ZW5ndGggPSBpbV9leHRbaV0ubGVuZ3RoOwotICAgICAgICAgICAgIGV4dF9saXN0W2ldLm5hbWUg PSBtYWxsb2MgKGltX2V4dFtpXS5sZW5ndGggKyAxKTsKLS0gICAgICAgICAgICBzdHJjcHkgKGV4 dF9saXN0W2ldLm5hbWUsIGltX2V4dFtpXS5uYW1lKTsKLSsgICAgICAgICAgICBpZiAoIWV4dF9s aXN0W2ldLm5hbWUpIHsKLSsgICAgICAgICAgICAgICAgZnByaW50ZiAoc3RkZXJyLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQg aW4gJXM6JWQuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5F X18pOwotKyAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHN0cmNweSAoZXh0 X2xpc3RbaV0ubmFtZSwgaW1fZXh0W2ldLm5hbWUpOwotKyAgICAgICAgICAgIH0KLSAgICAgICAg IH0KLSAgICAgICAgIC8qZW5kZm9yKi8KLSAgICAgfQotQEAgLTQwMSwxMyArNDEzLDIwIEBAIHN0 YXRpYyBYSU1FeHQgKk1ha2VFeHRlbnNpb25MaXN0IChYaTE4biBpMThuX2NvcmUsCi0gICAgICAg ICB7Ci0gICAgICAgICAgICAgZm9yIChqID0gMDsgIGogPCAoaW50KW51bWJlcjsgIGorKykKLSAg ICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgIGlmIChzdHJjbXAgKGxpYl9leHRlbnNpb25b al0ubmFtZSwgaW1fZXh0W2ldLm5hbWUpID09IDApCi0rICAgICAgICAgICAgICAgIGlmIChsaWJf ZXh0ZW5zaW9uW2pdLm5hbWUKLSsgICAgICAgICAgICAgICAgICAgICYmIHN0cmNtcCAobGliX2V4 dGVuc2lvbltqXS5uYW1lLCBpbV9leHRbaV0ubmFtZSkgPT0gMCkKLSAgICAgICAgICAgICAgICAg ewotICAgICAgICAgICAgICAgICAgICAgZXh0X2xpc3Rbbl0ubWFqb3Jfb3Bjb2RlID0gaW1fZXh0 W2ldLm1ham9yX29wY29kZTsKLSAgICAgICAgICAgICAgICAgICAgIGV4dF9saXN0W25dLm1pbm9y X29wY29kZSA9IGltX2V4dFtpXS5taW5vcl9vcGNvZGU7Ci0gICAgICAgICAgICAgICAgICAgICBl eHRfbGlzdFtuXS5sZW5ndGggPSBpbV9leHRbaV0ubGVuZ3RoOwotICAgICAgICAgICAgICAgICAg ICAgZXh0X2xpc3Rbbl0ubmFtZSA9IG1hbGxvYyAoaW1fZXh0W2ldLmxlbmd0aCArIDEpOwotLSAg ICAgICAgICAgICAgICAgICAgc3RyY3B5IChleHRfbGlzdFtuXS5uYW1lLCBpbV9leHRbaV0ubmFt ZSk7Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoIWV4dF9saXN0W25dLm5hbWUpIHsKLSsgICAg ICAgICAgICAgICAgICAgICAgICBmcHJpbnRmIChzdGRlcnIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIihYSU0tSU1ka2l0KSBXQVJOSU5HOiBtYWxsb2MgZmFpbGVkIGluICVz OiVkLlxuIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19M SU5FX18pOwotKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAg ICAgICAgICBzdHJjcHkgKGV4dF9saXN0W25dLm5hbWUsIGltX2V4dFtpXS5uYW1lKTsKLSsgICAg ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICB9Ci1AQCAtNDUwLDYgKzQ2OSwxMSBA QCBzdGF0aWMgdm9pZCBRdWVyeUV4dGVuc2lvbk1lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAg RnJhbWVNZ3JHZXRUb2tlbiAoZm0sIGlucHV0X21ldGhvZF9JRCk7Ci0gICAgIEZyYW1lTWdyR2V0 VG9rZW4gKGZtLCBieXRlX2xlbmd0aCk7Ci0gICAgIHF1ZXJ5X2V4dC0+ZXh0ZW5zaW9uID0gKFhJ TVN0ciAqKSBtYWxsb2MgKHNpemVvZiAoWElNU3RyKSoxMCk7Ci0rICAgIGlmICghcXVlcnlfZXh0 LT5leHRlbnNpb24pIHsKLSsgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0tSU1ka2l0KSBX QVJOSU5HOiBtYWxsb2MgZmFpbGVkIGluICVzOiVkLlxuIiwKLSsgICAgICAgICAgICAgICAgIF9f RklMRV9fLCBfX0xJTkVfXyk7Ci0rICAgICAgICByZXR1cm47Ci0rICAgIH0KLSAgICAgbWVtc2V0 IChxdWVyeV9leHQtPmV4dGVuc2lvbiwgMCwgc2l6ZW9mIChYSU1TdHIpKjEwKTsKLSAgICAgbnVt YmVyID0gMDsKLSAgICAgd2hpbGUgKEZyYW1lTWdySXNJdGVyTG9vcEVuZCAoZm0sICZzdGF0dXMp ID09IEZhbHNlKQotQEAgLTQ2MSw5ICs0ODUsMjAgQEAgc3RhdGljIHZvaWQgUXVlcnlFeHRlbnNp b25NZXNzYWdlUHJvYyAoWElNUyBpbXMsCi0gICAgICAgICBGcmFtZU1nclNldFNpemUgKGZtLCBz dHJfbGVuZ3RoKTsKLSAgICAgICAgIHF1ZXJ5X2V4dC0+ZXh0ZW5zaW9uW251bWJlcl0ubGVuZ3Ro ID0gc3RyX2xlbmd0aDsKLSAgICAgICAgIEZyYW1lTWdyR2V0VG9rZW4gKGZtLCBuYW1lKTsKLSsg ICAgICAgIC8qIEkgZG9uJ3Qga25vdyB3aHkgZXh0ZW5zaW9uW251bWJlcl0ubmFtZSBpcyBkZXRl Y3RlZCBhcyBsZWFrCi0rICAgICAgICAgKiB3aXRoIC1XYW5hbHl6ZXItbWFsbG9jLWxlYWsgb3B0 aW9uIGluIGdjYyAxMS4wLjEuCi0rICAgICAgICAgKi8KLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGlj IHB1c2gKLSsjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XYW5hbHl6ZXItbWFsbG9j LWxlYWsiCi0gICAgICAgICBxdWVyeV9leHQtPmV4dGVuc2lvbltudW1iZXJdLm5hbWUgPSBtYWxs b2MgKHN0cl9sZW5ndGggKyAxKTsKLS0gICAgICAgIHN0cm5jcHkgKHF1ZXJ5X2V4dC0+ZXh0ZW5z aW9uW251bWJlcl0ubmFtZSwgbmFtZSwgc3RyX2xlbmd0aCk7Ci0tICAgICAgICBxdWVyeV9leHQt PmV4dGVuc2lvbltudW1iZXJdLm5hbWVbc3RyX2xlbmd0aF0gPSAoY2hhcikgMDsKLSsgICAgICAg IGlmICghcXVlcnlfZXh0LT5leHRlbnNpb25bbnVtYmVyXS5uYW1lKSB7Ci0rICAgICAgICAgICAg ZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQgaW4g JXM6JWQuXG4iLAotKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0r ICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIHN0cm5jcHkgKHF1ZXJ5X2V4dC0+ZXh0ZW5z aW9uW251bWJlcl0ubmFtZSwgbmFtZSwgc3RyX2xlbmd0aCk7Ci0rICAgICAgICAgICAgcXVlcnlf ZXh0LT5leHRlbnNpb25bbnVtYmVyXS5uYW1lW3N0cl9sZW5ndGhdID0gKGNoYXIpIDA7Ci0rICAg ICAgICB9Ci0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgIG51bWJlcisrOwot ICAgICB9Ci0gICAgIC8qZW5kd2hpbGUqLwotQEAgLTQ5MCw2ICs1MjUsOCBAQCBzdGF0aWMgdm9p ZCBRdWVyeUV4dGVuc2lvbk1lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAgICAgIFhGcmVlIChx dWVyeV9leHQtPmV4dGVuc2lvbltpXS5uYW1lKTsKLSAgICAgLyplbmRmb3IqLwotICAgICBYRnJl ZSAocXVlcnlfZXh0LT5leHRlbnNpb24pOwotKyAgICBpZiAoIWV4dF9saXN0KQotKyAgICAgICAg cmV0dXJuOwotIAotICAgICBmbSA9IEZyYW1lTWdySW5pdCAocXVlcnlfZXh0ZW5zaW9uX3JlcGx5 X2ZyLAotICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLUBAIC01MDEsNyArNTM4LDEwIEBA IHN0YXRpYyB2b2lkIFF1ZXJ5RXh0ZW5zaW9uTWVzc2FnZVByb2MgKFhJTVMgaW1zLAotICAgICAv KiBzZXQgbGVuZ3RoIG9mIEJBUlJBWSBpdGVtIGluIGV4dF9mciAqLwotICAgICBmb3IgKGkgPSAw OyAgaSA8IHJlcGx5X251bWJlcjsgIGkrKykKLSAgICAgewotLSAgICAgICAgc3RyX3NpemUgPSBz dHJsZW4gKGV4dF9saXN0W2ldLm5hbWUpOwotKyAgICAgICAgaWYgKGV4dF9saXN0W2ldLm5hbWUp Ci0rICAgICAgICAgICAgc3RyX3NpemUgPSBzdHJsZW4gKGV4dF9saXN0W2ldLm5hbWUpOwotKyAg ICAgICAgZWxzZQotKyAgICAgICAgICAgIHN0cl9zaXplID0gMDsKLSAgICAgICAgIEZyYW1lTWdy U2V0U2l6ZSAoZm0sIHN0cl9zaXplKTsKLSAgICAgfQotICAgICAvKmVuZGZvciovCi1AQCAtNzAw LDcgKzc0MCwxMyBAQCBzdGF0aWMgWElNQXR0cmlidXRlICpNYWtlSU1BdHRyaWJ1dGVMaXN0IChY aTE4biBpMThuX2NvcmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZh bHVlX2xlbmd0aCk7Ci0gICAgICAgICAgICAgICAgIGF0dHJpYl9saXN0W2xpc3RfbnVtXS52YWx1 ZV9sZW5ndGggPSB2YWx1ZV9sZW5ndGg7Ci0gICAgICAgICAgICAgICAgIGF0dHJpYl9saXN0W2xp c3RfbnVtXS52YWx1ZSA9ICh2b2lkICopIG1hbGxvYyAodmFsdWVfbGVuZ3RoKTsKLS0gICAgICAg ICAgICAgICAgbWVtc2V0KGF0dHJpYl9saXN0W2xpc3RfbnVtXS52YWx1ZSwgMCwgdmFsdWVfbGVu Z3RoKTsKLSsgICAgICAgICAgICAgICAgaWYgKGF0dHJpYl9saXN0W2xpc3RfbnVtXS52YWx1ZSkg ewotKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGF0dHJpYl9saXN0W2xpc3RfbnVtXS52YWx1 ZSwgMCwgdmFsdWVfbGVuZ3RoKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAg ICAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICIoWElNLUlNZGtpdCkgV0FSTklORzogbWFsbG9jIGZhaWxlZCBpbiAlczolZC5cbiIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIEdldElNVmFsdWVGcm9tTmFtZSAoaTE4bl9j b3JlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3RfaWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmliX2xpc3RbbGlzdF9udW1d LnZhbHVlLAotQEAgLTczNywxMCArNzgzLDEwIEBAIHN0YXRpYyB2b2lkIEdldElNVmFsdWVzTWVz c2FnZVByb2MgKFhJTVMgaW1zLAotICAgICByZWdpc3RlciBpbnQgaTsKLSAgICAgcmVnaXN0ZXIg aW50IGo7Ci0gICAgIGludCBudW1iZXI7Ci0tICAgIENBUkQxNiAqaW1fYXR0cklEX2xpc3Q7Ci0t ICAgIGNoYXIgKipuYW1lX2xpc3Q7Ci0rICAgIENBUkQxNiAqaW1fYXR0cklEX2xpc3QgPSBOVUxM OwotKyAgICBjaGFyICoqbmFtZV9saXN0ID0gTlVMTDsKLSAgICAgQ0FSRDE2IG5hbWVfbnVtYmVy OwotLSAgICBYSU1BdHRyaWJ1dGUgKmltX2F0dHJpYnV0ZV9saXN0OwotKyAgICBYSU1BdHRyaWJ1 dGUgKmltX2F0dHJpYnV0ZV9saXN0ID0gTlVMTDsKLSAgICAgSU1HZXRJTVZhbHVlc1N0cnVjdCAq Z2V0aW0gPSAoSU1HZXRJTVZhbHVlc1N0cnVjdCAqKSZjYWxsX2RhdGEtPmdldGltOwotICAgICBD QVJEMTYgY29ubmVjdF9pZCA9IGNhbGxfZGF0YS0+YW55LmNvbm5lY3RfaWQ7Ci0gICAgIENBUkQx NiBpbnB1dF9tZXRob2RfSUQ7Ci1AQCAtNzUzLDggKzc5OSwxOCBAQCBzdGF0aWMgdm9pZCBHZXRJ TVZhbHVlc01lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAgRnJhbWVNZ3JHZXRUb2tlbiAoZm0s IGlucHV0X21ldGhvZF9JRCk7Ci0gICAgIEZyYW1lTWdyR2V0VG9rZW4gKGZtLCBieXRlX2xlbmd0 aCk7Ci0gICAgIGltX2F0dHJJRF9saXN0ID0gKENBUkQxNiAqKSBtYWxsb2MgKHNpemVvZiAoQ0FS RDE2KSoyMCk7Ci0rICAgIGlmICghaW1fYXR0cklEX2xpc3QpIHsKLSsgICAgICAgIGZwcmludGYg KHN0ZGVyciwgIihYSU0tSU1ka2l0KSBXQVJOSU5HOiBtYWxsb2MgZmFpbGVkIGluICVzOiVkLlxu IiwKLSsgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rICAgICAgICBnb3Rv IEdldElNVmFsdWVzTWVzc2FnZVByb2NfZmluaXQ7Ci0rICAgIH0KLSAgICAgbWVtc2V0IChpbV9h dHRySURfbGlzdCwgMCwgc2l6ZW9mIChDQVJEMTYpKjIwKTsKLSAgICAgbmFtZV9saXN0ID0gKGNo YXIgKiopbWFsbG9jKHNpemVvZihjaGFyICopICogMjApOwotKyAgICBpZiAoIW5hbWVfbGlzdCkg ewotKyAgICAgICAgZnByaW50ZiAoc3RkZXJyLCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxv YyBmYWlsZWQgaW4gJXM6JWQuXG4iLAotKyAgICAgICAgICAgICAgICAgX19GSUxFX18sIF9fTElO RV9fKTsKLSsgICAgICAgIGdvdG8gR2V0SU1WYWx1ZXNNZXNzYWdlUHJvY19maW5pdDsKLSsgICAg fQotICAgICBtZW1zZXQobmFtZV9saXN0LCAwLCBzaXplb2YoY2hhciAqKSAqIDIwKTsKLSAgICAg bnVtYmVyID0gMDsKLSAgICAgd2hpbGUgKEZyYW1lTWdySXNJdGVyTG9vcEVuZCAoZm0sICZzdGF0 dXMpID09IEZhbHNlKQotQEAgLTc5Miw4ICs4NDgsMTEgQEAgc3RhdGljIHZvaWQgR2V0SU1WYWx1 ZXNNZXNzYWdlUHJvYyAoWElNUyBpbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW1fYXR0cklEX2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJm51bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAmbGlzdF9sZW4pOwotLSAgICBpZiAoaW1fYXR0cklEX2xpc3Qp Ci0tICAgICAgICBYRnJlZSAoaW1fYXR0cklEX2xpc3QpOwotKyAgICBpZiAoIWltX2F0dHJpYnV0 ZV9saXN0KSB7Ci0rICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIoWElNLUlNZGtpdCkgV0FSTklO RzogbWFsbG9jIGZhaWxlZCBpbiAlczolZC5cbiIsCi0rICAgICAgICAgICAgICAgICBfX0ZJTEVf XywgX19MSU5FX18pOwotKyAgICAgICAgZ290byBHZXRJTVZhbHVlc01lc3NhZ2VQcm9jX2Zpbml0 MjsKLSsgICAgfQotICAgICAvKmVuZGlmKi8KLSAKLSAgICAgZm0gPSBGcmFtZU1nckluaXQgKGdl dF9pbV92YWx1ZXNfcmVwbHlfZnIsCi1AQCAtODE1LDExICs4NzQsNyBAQCBzdGF0aWMgdm9pZCBH ZXRJTVZhbHVlc01lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAgaWYgKCFyZXBseSkKLSAgICAg ewotICAgICAgICAgX1hpMThuU2VuZE1lc3NhZ2UgKGltcywgY29ubmVjdF9pZCwgWElNX0VSUk9S LCAwLCAwLCAwKTsKLS0gICAgICAgIEZyYW1lTWdyRnJlZSAoZm0pOwotLSAgICAgICAgZm9yIChp ID0gMDsgaSA8IGl0ZXJfY291bnQ7IGkrKykKLS0gICAgICAgICAgICBYRnJlZShpbV9hdHRyaWJ1 dGVfbGlzdFtpXS52YWx1ZSk7Ci0tICAgICAgICBYRnJlZSAoaW1fYXR0cmlidXRlX2xpc3QpOwot LSAgICAgICAgcmV0dXJuOwotKyAgICAgICAgZ290byBHZXRJTVZhbHVlc01lc3NhZ2VQcm9jX2Zp bml0OwotICAgICB9Ci0gICAgIC8qZW5kaWYqLwotICAgICBtZW1zZXQgKHJlcGx5LCAwLCB0b3Rh bF9zaXplKTsKLUBAIC04NDAsMTIgKzg5NSwxOCBAQCBzdGF0aWMgdm9pZCBHZXRJTVZhbHVlc01l c3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAg ICAgICAgICAgICAgICAgICByZXBseSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Np emUpOwotLSAgICBGcmFtZU1nckZyZWUgKGZtKTsKLSAgICAgWEZyZWUgKHJlcGx5KTsKLSAKLS0g ICAgZm9yIChpID0gMDsgaSA8IGl0ZXJfY291bnQ7IGkrKykKLS0gICAgICAgIFhGcmVlKGltX2F0 dHJpYnV0ZV9saXN0W2ldLnZhbHVlKTsKLS0gICAgWEZyZWUgKGltX2F0dHJpYnV0ZV9saXN0KTsK LStHZXRJTVZhbHVlc01lc3NhZ2VQcm9jX2Zpbml0OgotKyAgICBGcmFtZU1nckZyZWUgKGZtKTsK LStHZXRJTVZhbHVlc01lc3NhZ2VQcm9jX2Zpbml0MjoKLSsgICAgaWYgKGltX2F0dHJJRF9saXN0 KQotKyAgICAgICAgWEZyZWUgKGltX2F0dHJJRF9saXN0KTsKLSsgICAgaWYgKGltX2F0dHJpYnV0 ZV9saXN0KSB7Ci0rICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaXRlcl9jb3VudDsgaSsrKQotKyAg ICAgICAgICAgIFhGcmVlKGltX2F0dHJpYnV0ZV9saXN0W2ldLnZhbHVlKTsKLSsgICAgICAgIFhG cmVlIChpbV9hdHRyaWJ1dGVfbGlzdCk7Ci0rICAgIH0KLSB9Ci0gCi0gc3RhdGljIHZvaWQgQ3Jl YXRlSUNNZXNzYWdlUHJvYyAoWElNUyBpbXMsCi1AQCAtMTQzNSw2ICsxNDk2LDExIEBAIHN0YXRp YyB2b2lkIEVuY29kaW5nTmVnb3RpYXRvbk1lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAgaWYg KGJ5dGVfbGVuZ3RoID4gMCkKLSAgICAgewotICAgICAgICAgZW5jX25lZ28tPmVuY29kaW5nID0g KFhJTVN0ciAqKSBtYWxsb2MgKHNpemVvZiAoWElNU3RyKSoxMCk7Ci0rICAgICAgICBpZiAoIWVu Y19uZWdvLT5lbmNvZGluZykgewotKyAgICAgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0t SU1ka2l0KSBXQVJOSU5HOiBtYWxsb2MgZmFpbGVkIGluICVzOiVkLlxuIiwKLSsgICAgICAgICAg ICAgICAgICAgICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyAgICAgICAgICAgIGdvdG8gRW5jb2Rp bmdOZWdvdGlhdG9uTWVzc2FnZVByb2NfZmluaXQ7Ci0rICAgICAgICB9Ci0gICAgICAgICBtZW1z ZXQgKGVuY19uZWdvLT5lbmNvZGluZywgMCwgc2l6ZW9mIChYSU1TdHIpKjEwKTsKLSAgICAgICAg IGkgPSAwOwotICAgICAgICAgd2hpbGUgKEZyYW1lTWdySXNJdGVyTG9vcEVuZCAoZm0sICZzdGF0 dXMpID09IEZhbHNlKQotQEAgLTE0NDYsOSArMTUxMiwyMSBAQCBzdGF0aWMgdm9pZCBFbmNvZGlu Z05lZ290aWF0b25NZXNzYWdlUHJvYyAoWElNUyBpbXMsCi0gICAgICAgICAgICAgRnJhbWVNZ3JT ZXRTaXplIChmbSwgc3RyX2xlbmd0aCk7Ci0gICAgICAgICAgICAgZW5jX25lZ28tPmVuY29kaW5n W2ldLmxlbmd0aCA9IHN0cl9sZW5ndGg7Ci0gICAgICAgICAgICAgRnJhbWVNZ3JHZXRUb2tlbiAo Zm0sIG5hbWUpOwotKyAgICAgICAgICAgIC8qIEkgZG9uJ3Qga25vdyB3aHkgZW5jb2RpbmdbaV0u bmFtZSBpcyBkZXRlY3RlZCBhcyBsZWFrCi0rICAgICAgICAgICAgICogd2l0aCAtV2FuYWx5emVy LW1hbGxvYy1sZWFrIG9wdGlvbiBpbiBnY2MgMTEuMC4xLgotKyAgICAgICAgICAgICAqLwotKyNw cmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3Jl ZCAiLVdhbmFseXplci1tYWxsb2MtbGVhayIKLSAgICAgICAgICAgICBlbmNfbmVnby0+ZW5jb2Rp bmdbaV0ubmFtZSA9IG1hbGxvYyAoc3RyX2xlbmd0aCArIDEpOwotKyAgICAgICAgICAgIGlmICgh KGVuY19uZWdvLT5lbmNvZGluZ1tpXS5uYW1lKSkgewotKyAgICAgICAgICAgICAgICBmcHJpbnRm IChzdGRlcnIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICIoWElNLUlNZGtpdCkgV0FSTklO RzogbWFsbG9jIGZhaWxlZCBpbiAlczolZC5cbiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAg IF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rICAgICAgICAgICAgICAgIGdvdG8gRW5jb2RpbmdOZWdv dGlhdG9uTWVzc2FnZVByb2NfZmluaXQ7Ci0rICAgICAgICAgICAgfQotICAgICAgICAgICAgIHN0 cm5jcHkgKGVuY19uZWdvLT5lbmNvZGluZ1tpXS5uYW1lLCBuYW1lLCBzdHJfbGVuZ3RoKTsKLSAg ICAgICAgICAgICBlbmNfbmVnby0+ZW5jb2RpbmdbaV0ubmFtZVtzdHJfbGVuZ3RoXSA9ICdcMCc7 Ci0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgICAgICBpKys7Ci0gICAgICAg ICB9Ci0gICAgICAgICAvKmVuZHdoaWxlKi8KLUBAIC0xNDYwLDIwICsxNTM4LDM3IEBAIHN0YXRp YyB2b2lkIEVuY29kaW5nTmVnb3RpYXRvbk1lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAgaWYg KGJ5dGVfbGVuZ3RoID4gMCkKLSAgICAgewotICAgICAgICAgZW5jX25lZ28tPmVuY29kaW5naW5m byA9IChYSU1TdHIgKikgbWFsbG9jIChzaXplb2YgKFhJTVN0cikqMTApOwotKyAgICAgICAgaWYg KCFlbmNfbmVnby0+ZW5jb2RpbmdpbmZvKSB7Ci0rICAgICAgICAgICAgZnByaW50ZiAoc3RkZXJy LCAiKFhJTS1JTWRraXQpIFdBUk5JTkc6IG1hbGxvYyBmYWlsZWQgaW4gJXM6JWQuXG4iLAotKyAg ICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rICAgICAgICAgICAgZ290 byBFbmNvZGluZ05lZ290aWF0b25NZXNzYWdlUHJvY19maW5pdDsKLSsgICAgICAgIH0KLSAgICAg ICAgIG1lbXNldCAoZW5jX25lZ28tPmVuY29kaW5naW5mbywgMCwgc2l6ZW9mIChYSU1TdHIpKjEw KTsKLSAgICAgICAgIGkgPSAwOwotICAgICAgICAgd2hpbGUgKEZyYW1lTWdySXNJdGVyTG9vcEVu ZCAoZm0sICZzdGF0dXMpID09IEZhbHNlKQotICAgICAgICAgewotICAgICAgICAgICAgIGNoYXIg Km5hbWU7Ci0gICAgICAgICAgICAgaW50IHN0cl9sZW5ndGg7Ci0tICAgICAgICAgICAgCi0rCi0g ICAgICAgICAgICAgRnJhbWVNZ3JHZXRUb2tlbiAoZm0sIHN0cl9sZW5ndGgpOwotICAgICAgICAg ICAgIEZyYW1lTWdyU2V0U2l6ZSAoZm0sIHN0cl9sZW5ndGgpOwotICAgICAgICAgICAgIGVuY19u ZWdvLT5lbmNvZGluZ2luZm9baV0ubGVuZ3RoID0gc3RyX2xlbmd0aDsKLSAgICAgICAgICAgICBG cmFtZU1nckdldFRva2VuIChmbSwgbmFtZSk7Ci0rICAgICAgICAgICAgLyogSSBkb24ndCBrbm93 IHdoeSBlbmNvZGluZ2luZm9baV0ubmFtZSBpcyBkZXRlY3RlZCBhcyBsZWFrCi0rICAgICAgICAg ICAgICogd2l0aCAtV2FuYWx5emVyLW1hbGxvYy1sZWFrIG9wdGlvbiBpbiBnY2MgMTEuMC4xLgot KyAgICAgICAgICAgICAqLwotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAotKyNwcmFnbWEg R0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdhbmFseXplci1tYWxsb2MtbGVhayIKLSAgICAgICAg ICAgICBlbmNfbmVnby0+ZW5jb2RpbmdpbmZvW2ldLm5hbWUgPSBtYWxsb2MgKHN0cl9sZW5ndGgg KyAxKTsKLSsgICAgICAgICAgICBpZiAoIWVuY19uZWdvLT5lbmNvZGluZ2luZm9baV0ubmFtZSkg ewotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChzdGRlcnIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICIoWElNLUlNZGtpdCkgV0FSTklORzogbWFsbG9jIGZhaWxlZCBpbiAlczolZC5cbiIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0rICAgICAg ICAgICAgICAgIGdvdG8gRW5jb2RpbmdOZWdvdGlhdG9uTWVzc2FnZVByb2NfZmluaXQ7Ci0rICAg ICAgICAgICAgfQotICAgICAgICAgICAgIHN0cm5jcHkgKGVuY19uZWdvLT5lbmNvZGluZ2luZm9b aV0ubmFtZSwgbmFtZSwgc3RyX2xlbmd0aCk7Ci0gICAgICAgICAgICAgZW5jX25lZ28tPmVuY29k aW5naW5mb1tpXS5uYW1lW3N0cl9sZW5ndGhdID0gJ1wwJzsKLSsjcHJhZ21hIEdDQyBkaWFnbm9z dGljIHBvcAotICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgIH0KLSAgICAgICAgIC8qZW5kd2hp bGUqLwotQEAgLTE1MjQsNiArMTYxOSw3IEBAIHN0YXRpYyB2b2lkIEVuY29kaW5nTmVnb3RpYXRv bk1lc3NhZ2VQcm9jIChYSU1TIGltcywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsX3Np emUpOwotICAgICBYRnJlZSAocmVwbHkpOwotIAotK0VuY29kaW5nTmVnb3RpYXRvbk1lc3NhZ2VQ cm9jX2Zpbml0OgotICAgICAvKiBmcmVlIGRhdGEgZm9yIGVuY29kaW5nIGxpc3QgKi8KLSAgICAg aWYgKGVuY19uZWdvLT5lbmNvZGluZykKLSAgICAgewotZGlmZiAtLWdpdCBhL3V0aWwvSU1ka2l0 L2kxOG5VdGlsLmMgYi91dGlsL0lNZGtpdC9pMThuVXRpbC5jCi1pbmRleCAxMDlkY2RmOS4uYzYy MTU0ZTcgMTAwNjQ0Ci0tLS0gYS91dGlsL0lNZGtpdC9pMThuVXRpbC5jCi0rKysgYi91dGlsL0lN ZGtpdC9pMThuVXRpbC5jCi1AQCAtNDYsNiArNDYsOCBAQCBfWGkxOG5OZWVkU3dhcCAoWGkxOG4g aTE4bl9jb3JlLCBDQVJEMTYgY29ubmVjdF9pZCkKLSAgICAgQ0FSRDggaW1fYnl0ZU9yZGVyID0g aTE4bl9jb3JlLT5hZGRyZXNzLmltX2J5dGVPcmRlcjsKLSAgICAgWGkxOG5DbGllbnQgKmNsaWVu dCA9IF9YaTE4bkZpbmRDbGllbnQgKGkxOG5fY29yZSwgY29ubmVjdF9pZCk7Ci0gCi0rICAgIGlm ICghY2xpZW50KQotKyAgICAgICAgcmV0dXJuIFRydWU7Ci0gICAgIHJldHVybiAoY2xpZW50LT5i eXRlX29yZGVyICE9IGltX2J5dGVPcmRlcik7Ci0gfQotIAotQEAgLTY3LDYgKzY5LDExIEBAIFhp MThuQ2xpZW50ICpfWGkxOG5OZXdDbGllbnQoWGkxOG4gaTE4bl9jb3JlKQotIAluZXdfY29ubmVj dF9pZCA9ICsrY29ubmVjdF9pZDsKLSAgICAgfQotICAgICAvKmVuZGlmKi8KLSsgICAgaWYgKCFj bGllbnQpIHsKLSsgICAgICAgIGZwcmludGYgKHN0ZGVyciwgIihYSU0tSU1ka2l0KSBXQVJOSU5H OiBtYWxsb2MgZmFpbGVkIGluICVzOiVkLlxuIiwKLSsgICAgICAgICAgICAgICAgIF9fRklMRV9f LCBfX0xJTkVfXyk7Ci0rICAgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotICAgICBtZW1zZXQg KGNsaWVudCwgMCwgc2l6ZW9mIChYaTE4bkNsaWVudCkpOwotICAgICBjbGllbnQtPmNvbm5lY3Rf aWQgPSBuZXdfY29ubmVjdF9pZDsKLSAgICAgY2xpZW50LT5wZW5kaW5nID0gKFhJTVBlbmRpbmcg KikgTlVMTDsKLUBAIC0xMTMsNyArMTIwLDE0IEBAIHZvaWQgX1hpMThuRGVsZXRlQ2xpZW50IChY aTE4biBpMThuX2NvcmUsIENBUkQxNiBjb25uZWN0X2lkKQotICAgICAgICAgICAgICAgICBjY3Aw LT5uZXh0ID0gY2NwLT5uZXh0OwotICAgICAgICAgICAgIC8qZW5kaWYqLwotICAgICAgICAgICAg IC8qIHB1dCBpdCBiYWNrIHRvIGZyZWUgbGlzdCAqLwotKyAgICAgICAgICAgIC8qIGdjYyAxMS4w LjEgd2FybnMgZGVyZWZlcmVuY2Ugb2YgTlVMTCB3aXRoCi0rICAgICAgICAgICAgICogLVdhbmFs eXplci1udWxsLWRlcmVmZXJlbmNlIG9wdGlvbgotKyAgICAgICAgICAgICAqIGJ1dCB0YXJnZXQg c2hvdWxkIG5vdCBiZSBOVUxMLgotKyAgICAgICAgICAgICAqLwotKyNwcmFnbWEgR0NDIGRpYWdu b3N0aWMgcHVzaAotKyNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdhbmFseXplci1u dWxsLWRlcmVmZXJlbmNlIgotICAgICAgICAgICAgIHRhcmdldC0+bmV4dCA9IGkxOG5fY29yZS0+ YWRkcmVzcy5mcmVlX2NsaWVudHM7Ci0rI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKLSAgICAg ICAgICAgICBpMThuX2NvcmUtPmFkZHJlc3MuZnJlZV9jbGllbnRzID0gdGFyZ2V0OwotICAgICAg ICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLUBAIC0xNjEsNiArMTc1LDEyIEBAIHZvaWQgX1hp MThuU2VuZE1lc3NhZ2UgKFhJTVMgaW1zLAotIAotICAgICByZXBseV9sZW5ndGggPSBoZWFkZXJf c2l6ZSArIGxlbmd0aDsKLSAgICAgcmVwbHkgPSAodW5zaWduZWQgY2hhciAqKSBtYWxsb2MgKHJl cGx5X2xlbmd0aCk7Ci0rICAgIGlmICghcmVwbHkpIHsKLSsgICAgICAgIF9YaTE4blNlbmRNZXNz YWdlIChpbXMsIGNvbm5lY3RfaWQsIFhJTV9FUlJPUiwgMCwgMCwgMCk7Ci0rICAgICAgICBYRnJl ZSAocmVwbHlfaGRyKTsKLSsgICAgICAgIEZyYW1lTWdyRnJlZSAoZm0pOwotKyAgICAgICAgcmV0 dXJuOwotKyAgICB9Ci0gICAgIHJlcGx5cCA9IHJlcGx5OwotICAgICBtZW1tb3ZlIChyZXBseSwg cmVwbHlfaGRyLCBoZWFkZXJfc2l6ZSk7Ci0gICAgIHJlcGx5cCArPSBoZWFkZXJfc2l6ZTsKLWRp ZmYgLS1naXQgYS91dGlsL0lNZGtpdC9pMThuWC5jIGIvdXRpbC9JTWRraXQvaTE4blguYwotaW5k ZXggNWU1YzE1ZmEuLjE1MmZjNGU4IDEwMDY0NAotLS0tIGEvdXRpbC9JTWRraXQvaTE4blguYwot KysrIGIvdXRpbC9JTWRraXQvaTE4blguYwotQEAgLTU4LDE2ICs1OCwyMSBAQCBzdGF0aWMgWENs aWVudCAqTmV3WENsaWVudCAoWGkxOG4gaTE4bl9jb3JlLCBXaW5kb3cgbmV3X2NsaWVudCkKLSAg ICAgWENsaWVudCAqeF9jbGllbnQ7Ci0gCi0gICAgIHhfY2xpZW50ID0gKFhDbGllbnQgKikgbWFs bG9jIChzaXplb2YgKFhDbGllbnQpKTsKLS0gICAgeF9jbGllbnQtPmNsaWVudF93aW4gPSBuZXdf Y2xpZW50OwotLSAgICB4X2NsaWVudC0+YWNjZXB0X3dpbiA9IFhDcmVhdGVTaW1wbGVXaW5kb3cg KGRweSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBE ZWZhdWx0Um9vdFdpbmRvdyhkcHkpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDAsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotKyAg ICBpZiAoIXhfY2xpZW50KSB7Ci0rICAgICAgICBmcHJpbnRmIChzdGRlcnIsICIoWElNLUlNZGtp dCkgV0FSTklORzogbWFsbG9jIGZhaWxlZCBpbiAlczolZC5cbiIsCi0rICAgICAgICAgICAgICAg ICBfX0ZJTEVfXywgX19MSU5FX18pOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgeF9jbGllbnQt PmNsaWVudF93aW4gPSBuZXdfY2xpZW50OwotKyAgICAgICAgeF9jbGllbnQtPmFjY2VwdF93aW4g PSBYQ3JlYXRlU2ltcGxlV2luZG93IChkcHksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRSb290V2luZG93KGRweSksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotKyAgICB9 Ci0gICAgIGNsaWVudC0+dHJhbnNfcmVjID0geF9jbGllbnQ7Ci0gICAgIHJldHVybiAoKFhDbGll bnQgKikgeF9jbGllbnQpOwotIH0KLUBAIC0yMTksNyArMjI0LDcgQEAgc3RhdGljIHZvaWQgUmVh ZFhDb25uZWN0TWVzc2FnZSAoWElNUyBpbXMsIFhDbGllbnRNZXNzYWdlRXZlbnQgKmV2KQotICAg ICB9Ci0gICAgIC8qZW5kaWYqLwotICAgICBfWFJlZ2lzdGVyRmlsdGVyQnlUeXBlIChkcHksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhfY2xpZW50LT5hY2NlcHRfd2luLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICB4X2NsaWVudCA/IHhfY2xpZW50LT5hY2NlcHRfd2luIDog MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50TWVzc2FnZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ2xpZW50TWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgV2FpdFhJTVByb3RvY29sLAotQEAgLTIyOSw3ICsyMzQsNyBAQCBzdGF0aWMgdm9p ZCBSZWFkWENvbm5lY3RNZXNzYWdlIChYSU1TIGltcywgWENsaWVudE1lc3NhZ2VFdmVudCAqZXYp Ci0gICAgIGV2ZW50LnhjbGllbnQud2luZG93ID0gbmV3X2NsaWVudDsKLSAgICAgZXZlbnQueGNs aWVudC5tZXNzYWdlX3R5cGUgPSBzcGVjLT5jb25uZWN0X3JlcXVlc3Q7Ci0gICAgIGV2ZW50Lnhj bGllbnQuZm9ybWF0ID0gMzI7Ci0tICAgIGV2ZW50LnhjbGllbnQuZGF0YS5sWzBdID0geF9jbGll bnQtPmFjY2VwdF93aW47Ci0rICAgIGV2ZW50LnhjbGllbnQuZGF0YS5sWzBdID0geF9jbGllbnQg PyB4X2NsaWVudC0+YWNjZXB0X3dpbiA6IDA7Ci0gICAgIGV2ZW50LnhjbGllbnQuZGF0YS5sWzFd ID0gbWFqb3JfdmVyc2lvbjsKLSAgICAgZXZlbnQueGNsaWVudC5kYXRhLmxbMl0gPSBtaW5vcl92 ZXJzaW9uOwotICAgICBldmVudC54Y2xpZW50LmRhdGEubFszXSA9IFhDTV9EQVRBX0xJTUlUOwot LS0gCi0yLjI4LjAKLQotRnJvbSBiYzc4MTFjNjI0N2I3YmI4ZWJhMmY5ZjgwYzRmOWYxNTEwY2Q2 YjY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNiBKdW4gMjAyMSAyMDozOTozNSArMDkwMAot U3ViamVjdDogW1BBVENIXSBzcmMvdGVzdHM6IEZpeCBpYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5u ZXIgdG8gZ2V0IGdzZXR0aW5ncyByZXN1bHQKLQotZ3NldHRpbmdzIG51bGwgc3RyaW5nIGlzICcn IGFuZCB0aGUgcXVvdGUgbWFyayBuZWVkcyB0byBiZSBwYXJzZWQuCi1BbHNvIG5vLW92ZXJ2aWV3 IGdzZXR0aW5nIHNob3VsZCBiZSBjaGFuZ2VkIGJlZm9yZSBydW4gZ25vbWUtc2Vzc2lvbi4KLS0t LQotIHNyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4gfCAxOCArKysrKysr KysrKy0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5u ZXIuaW4gYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluCi1pbmRleCAx NWIyMzY5ZC4uNTRiN2UwZDcgMTAwNzU1Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRl c3RpbmctcnVubmVyLmluCi0rKysgYi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVu bmVyLmluCi1AQCAtMjE1LDkgKzIxNSwxMSBAQCBydW5fZGJ1c19kYWVtb24oKQotIAotIGluaXRf Z25vbWUoKQotIHsKLSsgICAgIyBnc2V0dGluZ3Mgc2V0IGNvbW1hbmQgbmVlZHMgZGNvbmYtc2Vy dmljZSB3aXRoIHRoZSBzYW1lICRESVNQTEFZCi0rICAgIHBraWxsIGRjb25mLXNlcnZpY2UKLSAg ICAgIyBEaXNhYmxlIFRvdXIgZGlhbG9nIHRvIGdldCBmb2N1cwotICAgICBWPWBnc2V0dGluZ3Mg Z2V0IG9yZy5nbm9tZS5zaGVsbCB3ZWxjb21lLWRpYWxvZy1sYXN0LXNob3duLXZlcnNpb25gCi0t ICAgIGlmIFsgeCIkViIgPSB4IF0gOyB0aGVuCi0rICAgIGlmIFsgeCIkViIgPSB4IicnIiBdIDsg dGhlbgotICAgICAgICAgZ3NldHRpbmdzIHNldCBvcmcuZ25vbWUuc2hlbGwgd2VsY29tZS1kaWFs b2ctbGFzdC1zaG93bi12ZXJzaW9uICcxMDAnCi0gICAgIGZpCi0gICAgICMgZ25vbWUtc2hlbGwg bm93IHN0YXJ0cyBvdmVydmlldyBtb2RlIGJ5IGxvZ2luLgotQEAgLTIzNyw3ICsyMzksNyBAQCBp bml0X2dub21lKCkKLSAgICAgVjI9JD8KLSAgICAgaWYgWyAkVjIgLW5lIDAgXSA7IHRoZW4KLSAg ICAgICAgIFYzPWBlY2hvICIkViIgfCBzZWQgLWUgJ3MvXFsvLycgLWUgJ3MvXF0vLydgCi0tICAg ICAgICBpZiBbIHgiJFYzIiA9IHggXSA7IHRoZW4KLSsgICAgICAgIGlmIFsgeCIkVjMiID0geCIn JyIgXSA7IHRoZW4KLSAgICAgICAgICAgICBWND0iWyduby1vdmVydmlld0BmdGh4J10iCi0gICAg ICAgICBlbHNlCi0gICAgICAgICAgICAgVjQ9IlskVjMsICduby1vdmVydmlld0BmdGh4J10iCi1A QCAtMjQ4LDYgKzI1MCw4IEBAIGluaXRfZ25vbWUoKQotIAotIHJ1bl9kZXNrdG9wKCkKLSB7Ci0r ICAgIGVjaG8gIiRERVNLVE9QX0NPTU1BTkQiIHwgZ3JlcCBnbm9tZS1zZXNzaW9uID4gL2Rldi9u dWxsCi0rICAgIEhBU19HTk9NRT0kPwotICAgICBpZiB0ZXN0ICRIQVZFX0dSQVBISUNTIC1lcSAx IDsgdGhlbgotICAgICAgICAgL3Vzci9saWJleGVjL1hvcmcud3JhcCAtbm9yZXNldCArZXh0ZW5z aW9uIEdMWCArZXh0ZW5zaW9uIFJBTkRSICtleHRlbnNpb24gUkVOREVSIC1sb2dmaWxlIC4veG9y Zy5sb2cgLWNvbmZpZyAuL3hvcmcuY29uZiAtY29uZmlnZGlyIC4gJERJU1BMQVkgJgotICAgICBl bHNlCi1AQCAtMjU2LDE1ICsyNjAsMTUgQEAgcnVuX2Rlc2t0b3AoKQotICAgICBQSURfWE9SRz0k IQotICAgICBzbGVlcCAxCi0gICAgIGV4cG9ydCBESVNQTEFZPSRESVNQTEFZCi0rICAgICMgaW5p dF9nbm9tZSBuZWVkIHRvIGJlIGNhbGxlZCB3aXRoICRESVNQTEFZIGJlZm9yZSBnbm9tZS1zZXNz aW9uIGlzIGNhbGxlZAotKyAgICBpZiBbICAkSEFTX0dOT01FIC1lcSAwIF0gOyB0aGVuCi0rICAg ICAgICBpbml0X2dub21lCi0rICAgIGZpCi0gICAgIGVjaG8gIlJ1bm5pbmcgJERFU0tUT1BfQ09N TUFORCB3aXRoICRVU0VSIGluIGB0dHlgIgotICAgICAkREVTS1RPUF9DT01NQU5EICYKLSAgICAg UElEX0dOT01FX1NFU1NJT049JCEKLSAgICAgc2xlZXAgMzAKLS0gICAgZWNobyAiJERFU0tUT1Bf Q09NTUFORCIgfCBncmVwIGdub21lLXNlc3Npb24gPiAvZGV2L251bGwKLS0gICAgSEFTX0dOT01F PSQ/Ci0tICAgIGlmIFsgICRIQVNfR05PTUUgLWVxIDAgXSA7IHRoZW4KLS0gICAgICAgIGluaXRf Z25vbWUKLS0gICAgZWxzZQotKyAgICBpZiBbICAkSEFTX0dOT01FIC1uZSAwIF0gOyB0aGVuCi0g ICAgICAgICBpYnVzLWRhZW1vbiAtLWRhZW1vbml6ZSAtLXZlcmJvc2UKLSAgICAgICAgIHNsZWVw IDMKLSAgICAgZmkKLS0tIAotMi4yOC4wCi0KLUZyb20gOWY5Yzg4YmU0NjQzNmIwYTdhYThlMDll MDQ0YTIyMjMzNTZiNDZkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGxmLSA8c29m dHdhcmVAbGZjb2RlLmNhPgotRGF0ZTogRnJpLCAxOCBKdW4gMjAyMSAxNTozOToxOSArMDkwMAot U3ViamVjdDogW1BBVENIXSBzcmMvaWJ1c2NvbXBvc2V0YWJsZTogQWRkIHN1cHBvcnQgZm9yIHRo ZSBpbmNsdWRlCi0gZGlyZWN0aXZlCi0KLVdlIGFsc28gZml4IGFuIGlzc3VlIHdpdGggZXhjZXNz IHNwYWNlIGF0IHRoZSBzdGFydCBvZiBsaW5lcyBzdG9wcGluZwotY29tbWVudHMgYmVpbmcgcmVj b2duaXplZC4KLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8yMjk2Ci0t LS0KLSBzcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIHwgMTAwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDk1IGluc2VydGlvbnMoKyksIDUg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIGIvc3Jj L2lidXNjb21wb3NldGFibGUuYwotaW5kZXggNjg1YWM3MTcuLjY2YTVkZmE3IDEwMDY0NAotLS0t IGEvc3JjL2lidXNjb21wb3NldGFibGUuYwotKysrIGIvc3JjL2lidXNjb21wb3NldGFibGUuYwot QEAgLTIxLDcgKzIxLDYgQEAKLSAKLSAjaW5jbHVkZSA8Z2xpYi5oPgotICNpbmNsdWRlIDxnbGli L2dzdGRpby5oPgotLSNpbmNsdWRlIDxsb2NhbGUuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0g I2luY2x1ZGUgPHN0cmluZy5oPgotIAotQEAgLTM2LDYgKzM1LDcgQEAKLSAKLSAjZGVmaW5lIElC VVNfQ09NUE9TRV9UQUJMRV9NQUdJQyAiSUJ1c0NvbXBvc2VUYWJsZSIKLSAjZGVmaW5lIElCVVNf Q09NUE9TRV9UQUJMRV9WRVJTSU9OICgzKQotKyNkZWZpbmUgUEFUSExFTl9NQVggMjU2Ci0gCi0g dHlwZWRlZiBzdHJ1Y3QgewotICAgZ3VuaWNoYXIgICAgICpzZXF1ZW5jZTsKLUBAIC0xODEsNyAr MTgxLDggQEAgcGFyc2VfY29tcG9zZV9zZXF1ZW5jZSAoSUJ1c0NvbXBvc2VEYXRhICpjb21wb3Nl X2RhdGEsCi0gICAgIGludCBuID0gMDsKLSAKLSAgICAgaWYgKGdfc3Rydl9sZW5ndGggKHdvcmRz KSA8IDIpIHsKLS0gICAgICAgIGdfd2FybmluZyAoImtleSBzZXF1ZW5jZSBmb3JtYXQgaXMgPGE+ IDxiPi4uLjogJXMiLCBsaW5lKTsKLSsgICAgICAgIGdfd2FybmluZyAoInRvbyBmZXcgd29yZHM7 IGtleSBzZXF1ZW5jZSBmb3JtYXQgaXMgPGE+IDxiPi4uLjogJXMiLAotKyAgICAgICAgICAgICAg ICAgICBsaW5lKTsKLSAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgfQotIAotQEAgLTI0NCwxMCAr MjQ1LDY4IEBAIGZhaWw6Ci0gfQotIAotIAotK3N0YXRpYyBnY2hhciAqCi0rZXhwYW5kX2luY2x1 ZGVfcGF0aCAoY29uc3QgZ2NoYXIgKmluY2x1ZGVfcGF0aCkgewotKyAgICBnY2hhciAqb3V0ID0g Z19tYWxsb2MwIChQQVRITEVOX01BWCk7Ci0rICAgIGdjaGFyICpvdXRfbGFzdGNoYXIgPSBvdXQg KyBQQVRITEVOX01BWCAtIDI7Ci0rICAgIGNvbnN0IGdjaGFyICppID0gaW5jbHVkZV9wYXRoOwot KyAgICBnY2hhciAqbyA9IG91dDsKLSsKLSsgICAgd2hpbGUgKCppICYmIG8gPCBvdXRfbGFzdGNo YXIpIHsKLSsgICAgICAgIC8vIGV4cGFuZCBzZXF1ZW5jZQotKyAgICAgICAgaWYgKCppID09ICcl JykgewotKyAgICAgICAgICAgIHN3aXRjaCAoKihpKzEpKSB7Ci0rICAgICAgICAgICAgLy8gJEhP TUUKLSsgICAgICAgICAgICBjYXNlICdIJzogewotKyAgICAgICAgICAgICAgICBjb25zdCBnY2hh ciAqaG9tZSA9IGdldGVudiAoIkhPTUUiKTsKLSsgICAgICAgICAgICAgICAgaWYgKCFob21lKSB7 Ci0rICAgICAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJ3aGlsZSBwYXJzaW5nIFhDb21wb3Nl IGluY2x1ZGUgdGFyZ2V0ICVzLCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIl JUggcmVwbGFjZW1lbnQgZmFpbGVkIGJlY2F1c2UgSE9NRSBpcyBub3QgIgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZGVmaW5lZDsgdGhlIGluY2x1ZGUgaGFzIGJlZW4gaWdub3Jl ZCIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcGF0aCk7Ci0rICAg ICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAg ICAgICAgICAgbyA9IG91dCArIGdfc3RybGNhdCAob3V0LCBob21lLCBQQVRITEVOX01BWCk7Ci0r ICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAvLyBs b2NhbGUgY29tcG9zZSBmaWxlCi0rICAgICAgICAgICAgY2FzZSAnTCc6Ci0rICAgICAgICAgICAg ICAgIGdfd2FybmluZyAoIndoaWxlIGhhbmRsaW5nIFhDb21wb3NlIGluY2x1ZGUgdGFyZ2V0ICVz LCBmb3VuZCAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkdW5kYW50ICUlTCBpbmNs dWRlOyB0aGUgaW5jbHVkZSBoYXMgYmVlbiAiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAi aWdub3JlZCIsIGluY2x1ZGVfcGF0aCk7Ci0rICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKLSsg ICAgICAgICAgICAvLyBzeXN0ZW0gY29tcG9zZSBkaXIKLSsgICAgICAgICAgICBjYXNlICdTJzoK LSsgICAgICAgICAgICAgICAgbyA9IG91dCArIGdfc3RybGNhdCAob3V0LCAiL3Vzci9zaGFyZS9Y MTEvbG9jYWxlIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFUSExF Tl9NQVgpOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICAvLyBlc2NhcGVk ICUKLSsgICAgICAgICAgICBjYXNlICclJzoKLSsgICAgICAgICAgICAgICAgKm8rKyA9ICclJzsK LSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgZGVmYXVsdDoKLSsgICAgICAg ICAgICAgICAgZ193YXJuaW5nICgid2hpbGUgcGFyc2luZyBYQ29tcG9zZSBpbmNsdWRlIHRhcmdl dCAlcywgZm91bmQgIgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIHN1YnN0 aXR1dGlvbiBjaGFyYWN0ZXIgJyVjJzsgdGhlIGluY2x1ZGUgIgotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICJoYXMgYmVlbiBpZ25vcmVkIiwgaW5jbHVkZV9wYXRoLCAqKGkrMSkpOwotKyAg ICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGkg Kz0gMjsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgKm8rKyA9ICppKys7Ci0rICAg ICAgICB9Ci0rICAgIH0KLSsgICAgcmV0dXJuIG91dDsKLStmYWlsOgotKyAgICBnX2ZyZWUgKG91 dCk7Ci0rICAgIHJldHVybiBOVUxMOwotK30KLSsKLSsKLSBzdGF0aWMgdm9pZAotIHBhcnNlX2Nv bXBvc2VfbGluZSAoR0xpc3QgICAgICAgKipjb21wb3NlX2xpc3QsCi0gICAgICAgICAgICAgICAg ICAgICBjb25zdCBnY2hhciAgKmxpbmUsCi0tICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAg ICAgKmNvbXBvc2VfbGVuKQotKyAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICpjb21w b3NlX2xlbiwKLSsgICAgICAgICAgICAgICAgICAgIGdjaGFyICAgICAgICAqKmluY2x1ZGUpCi0g ewotICAgICBnY2hhciAqKmNvbXBvbmVudHMgPSBOVUxMOwotICAgICBJQnVzQ29tcG9zZURhdGEg KmNvbXBvc2VfZGF0YSA9IE5VTEw7Ci1AQCAtMjU2LDExICszMTUsMzIgQEAgcGFyc2VfY29tcG9z ZV9saW5lIChHTGlzdCAgICAgICAqKmNvbXBvc2VfbGlzdCwKLSAgICAgZ19hc3NlcnQgKGNvbXBv c2VfbGVuKTsKLSAgICAgKmNvbXBvc2VfbGVuID0gMDsKLSAKLSsgICAgLy8gZWF0IHNwYWNlcyBh dCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUKLSsgICAgd2hpbGUgKCpsaW5lICYmICgqbGluZSA9PSAn ICcgfHwgKmxpbmUgPT0gJ1x0JykpIGxpbmUrKzsKLSsKLSAgICAgaWYgKGxpbmVbMF0gPT0gJ1ww JyB8fCBsaW5lWzBdID09ICcjJykKLSAgICAgICAgIHJldHVybjsKLSAKLS0gICAgaWYgKGdfc3Ry X2hhc19wcmVmaXggKGxpbmUsICJpbmNsdWRlICIpKQotKyAgICBpZiAoZ19zdHJfaGFzX3ByZWZp eCAobGluZSwgImluY2x1ZGUgIikpIHsKLSsgICAgICAgIGNvbnN0IGNoYXIgKnJlc3QgPSBsaW5l ICsgc2l6ZW9mICgiaW5jbHVkZSAiKSAtIDE7Ci0rICAgICAgICB3aGlsZSAoKnJlc3QgJiYgKnJl c3QgPT0gJyAnKSByZXN0Kys7Ci0rCi0rICAgICAgICAvLyBncmFiYmVkIHRoZSBwYXRoIHBhcnQg b2YgdGhlIGxpbmUKLSsgICAgICAgIGNoYXIgKnJlc3QyOwotKyAgICAgICAgaWYgKCpyZXN0ID09 ICciJykgewotKyAgICAgICAgICAgIHJlc3QrKzsKLSsgICAgICAgICAgICByZXN0MiA9IGdfc3Ry ZHVwIChyZXN0KTsKLSsgICAgICAgICAgICAvLyBlYXQgdGhlIGNsb3NpbmcgcXVvdGUKLSsgICAg ICAgICAgICBjaGFyICppID0gcmVzdDI7Ci0rICAgICAgICAgICAgd2hpbGUgKCppICYmICppICE9 ICciJykgaSsrOwotKyAgICAgICAgICAgICppID0gJ1wwJzsKLSsgICAgICAgIH0gZWxzZSB7Ci0r ICAgICAgICAgICAgcmVzdDIgPSBnX3N0cmR1cCAocmVzdCk7Ci0rICAgICAgICB9Ci0rICAgICAg ICAqaW5jbHVkZSA9IGV4cGFuZF9pbmNsdWRlX3BhdGggKHJlc3QyKTsKLSsgICAgICAgIGdfZnJl ZSAocmVzdDIpOwotICAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0gCi0gICAgIGNvbXBvbmVudHMg PSBnX3N0cnNwbGl0IChsaW5lLCAiOiIsIDIpOwotIAotQEAgLTMxNiw4ICszOTYsMTggQEAgaWJ1 c19jb21wb3NlX2xpc3RfcGFyc2VfZmlsZSAoY29uc3QgZ2NoYXIgKmNvbXBvc2VfZmlsZSwKLSAK LSAgICAgbGluZXMgPSBnX3N0cnNwbGl0IChjb250ZW50cywgIlxuIiwgLTEpOwotICAgICBnX2Zy ZWUgKGNvbnRlbnRzKTsKLSsgICAgZ2NoYXIgKmluY2x1ZGUgPSBOVUxMOwotICAgICBmb3IgKGkg PSAwOyBsaW5lc1tpXSAhPSBOVUxMOyBpKyspIHsKLS0gICAgICAgIHBhcnNlX2NvbXBvc2VfbGlu ZSAoJmNvbXBvc2VfbGlzdCwgbGluZXNbaV0sICZjb21wb3NlX2xlbik7Ci0rICAgICAgICBwYXJz ZV9jb21wb3NlX2xpbmUgKCZjb21wb3NlX2xpc3QsIGxpbmVzW2ldLCAmY29tcG9zZV9sZW4sICZp bmNsdWRlKTsKLSsgICAgICAgIGlmIChpbmNsdWRlICYmICppbmNsdWRlKSB7Ci0rICAgICAgICAg ICAgR0xpc3QgKnJlc3QgPSBpYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChpbmNsdWRlLAot KyAgICAgICAgICAgICAgICAgICAgbWF4X2NvbXBvc2VfbGVuKTsKLSsgICAgICAgICAgICBpZiAo cmVzdCkgewotKyAgICAgICAgICAgICAgICBjb21wb3NlX2xpc3QgPSBnX2xpc3RfY29uY2F0IChj b21wb3NlX2xpc3QsIHJlc3QpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsKLSsgICAg ICAgIGdfY2xlYXJfcG9pbnRlciAoJmluY2x1ZGUsIGdfZnJlZSk7Ci0gICAgICAgICBpZiAoKm1h eF9jb21wb3NlX2xlbiA8IGNvbXBvc2VfbGVuKQotICAgICAgICAgICAgICptYXhfY29tcG9zZV9s ZW4gPSBjb21wb3NlX2xlbjsKLSAgICAgfQotLS0gCi0yLjI4LjAKLQotRnJvbSBhNzU1ZDE2MDFh NzMwYjVmYTBkNDYzZTc4MjAzMTFjMTJiMWYxNjYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogRnJpLCAx OCBKdW4gMjAyMSAxNTozOTo1MCArMDkwMAotU3ViamVjdDogW1BBVENIXSBzcmMvaWJ1c2NvbXBv c2V0YWJsZTogRG8gbm90IGluY2x1ZGUgdGhlIHNhbWUgY29tcG9zZQotIGZpbGUKLQotQlVHPWh0 dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2lidXMvcHVsbC8yMjk2Ci0tLS0KLSBzcmMvaWJ1c2NvbXBv c2V0YWJsZS5jIHwgMTMwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0t Ci0gMSBmaWxlIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJs ZS5jCi1pbmRleCA2NmE1ZGZhNy4uOTE2ZmNhZTMgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBv c2V0YWJsZS5jCi0rKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1AQCAtMzQsOCArMzQsOCBA QAotICNpbmNsdWRlICJpYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oIgotIAotICNkZWZpbmUgSUJV U19DT01QT1NFX1RBQkxFX01BR0lDICJJQnVzQ29tcG9zZVRhYmxlIgotLSNkZWZpbmUgSUJVU19D T01QT1NFX1RBQkxFX1ZFUlNJT04gKDMpCi0tI2RlZmluZSBQQVRITEVOX01BWCAyNTYKLSsjZGVm aW5lIElCVVNfQ09NUE9TRV9UQUJMRV9WRVJTSU9OICg0KQotKyNkZWZpbmUgWDExX0RBVEFESVIg WDExX0RBVEFfUFJFRklYICIvc2hhcmUvWDExL2xvY2FsZSIKLSAKLSB0eXBlZGVmIHN0cnVjdCB7 Ci0gICBndW5pY2hhciAgICAgKnNlcXVlbmNlOwotQEAgLTI0NywxNyArMjQ3LDE1IEBAIGZhaWw6 Ci0gCi0gc3RhdGljIGdjaGFyICoKLSBleHBhbmRfaW5jbHVkZV9wYXRoIChjb25zdCBnY2hhciAq aW5jbHVkZV9wYXRoKSB7Ci0tICAgIGdjaGFyICpvdXQgPSBnX21hbGxvYzAgKFBBVEhMRU5fTUFY KTsKLS0gICAgZ2NoYXIgKm91dF9sYXN0Y2hhciA9IG91dCArIFBBVEhMRU5fTUFYIC0gMjsKLS0g ICAgY29uc3QgZ2NoYXIgKmkgPSBpbmNsdWRlX3BhdGg7Ci0tICAgIGdjaGFyICpvID0gb3V0Owot KyAgICBnY2hhciAqb3V0ID0gc3RyZHVwICgiIik7Ci0rICAgIGNvbnN0IGdjaGFyICpoZWFkLCAq aTsKLSsgICAgZ2NoYXIgKmZvcm1lciwgKm87Ci0gCi0tICAgIHdoaWxlICgqaSAmJiBvIDwgb3V0 X2xhc3RjaGFyKSB7Ci0tICAgICAgICAvLyBleHBhbmQgc2VxdWVuY2UKLSsgICAgZm9yIChoZWFk ID0gaSA9IGluY2x1ZGVfcGF0aDsgKmk7ICsraSkgewotKyAgICAgICAgLyogZXhwYW5kIHNlcXVl bmNlICovCi0gICAgICAgICBpZiAoKmkgPT0gJyUnKSB7Ci0tICAgICAgICAgICAgc3dpdGNoICgq KGkrMSkpIHsKLS0gICAgICAgICAgICAvLyAkSE9NRQotLSAgICAgICAgICAgIGNhc2UgJ0gnOiB7 Ci0rICAgICAgICAgICAgc3dpdGNoICgqKGkgKyAxKSkgewotKyAgICAgICAgICAgIGNhc2UgJ0gn OiB7IC8qICRIT01FICovCi0gICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpob21lID0gZ2V0 ZW52ICgiSE9NRSIpOwotICAgICAgICAgICAgICAgICBpZiAoIWhvbWUpIHsKLSAgICAgICAgICAg ICAgICAgICAgIGdfd2FybmluZyAoIndoaWxlIHBhcnNpbmcgWENvbXBvc2UgaW5jbHVkZSB0YXJn ZXQgJXMsICIKLUBAIC0yNjYsMjMgKzI2NCwzNCBAQCBleHBhbmRfaW5jbHVkZV9wYXRoIChjb25z dCBnY2hhciAqaW5jbHVkZV9wYXRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluY2x1ZGVfcGF0aCk7Ci0gICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAg ICAgICAgICAgIH0KLS0gICAgICAgICAgICAgICAgbyA9IG91dCArIGdfc3RybGNhdCAob3V0LCBo b21lLCBQQVRITEVOX01BWCk7Ci0rICAgICAgICAgICAgICAgIG8gPSBvdXQ7Ci0rICAgICAgICAg ICAgICAgIGZvcm1lciA9IGdfc3RybmR1cCAoaGVhZCwgaSAtIGhlYWQpOwotKyAgICAgICAgICAg ICAgICBvdXQgPSBnX3N0cmR1cF9wcmludGYgKCIlcyVzJXMiLCBvLCBmb3JtZXIsIGhvbWUpOwot KyAgICAgICAgICAgICAgICBoZWFkID0gaSArIDI7Ci0rICAgICAgICAgICAgICAgIGdfZnJlZSAo byk7Ci0rICAgICAgICAgICAgICAgIGdfZnJlZSAoZm9ybWVyKTsKLSAgICAgICAgICAgICAgICAg YnJlYWs7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgIC8vIGxvY2FsZSBjb21wb3NlIGZp bGUKLS0gICAgICAgICAgICBjYXNlICdMJzoKLSsgICAgICAgICAgICBjYXNlICdMJzogLyogbG9j YWxlIGNvbXBvc2UgZmlsZSAqLwotICAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJ3aGlsZSBo YW5kbGluZyBYQ29tcG9zZSBpbmNsdWRlIHRhcmdldCAlcywgZm91bmQgIgotICAgICAgICAgICAg ICAgICAgICAgICAgICAgInJlZHVuZGFudCAlJUwgaW5jbHVkZTsgdGhlIGluY2x1ZGUgaGFzIGJl ZW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgImlnbm9yZWQiLCBpbmNsdWRlX3BhdGgp OwotICAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0tICAgICAgICAgICAgLy8gc3lzdGVtIGNv bXBvc2UgZGlyCi0tICAgICAgICAgICAgY2FzZSAnUyc6Ci0tICAgICAgICAgICAgICAgIG8gPSBv dXQgKyBnX3N0cmxjYXQgKG91dCwgIi91c3Ivc2hhcmUvWDExL2xvY2FsZSIsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVEhMRU5fTUFYKTsKLSsgICAgICAgICAgICBj YXNlICdTJzogLyogc3lzdGVtIGNvbXBvc2UgZGlyICovCi0rICAgICAgICAgICAgICAgIG8gPSBv dXQ7Ci0rICAgICAgICAgICAgICAgIGZvcm1lciA9IGdfc3RybmR1cCAoaGVhZCwgaSAtIGhlYWQp OwotKyAgICAgICAgICAgICAgICBvdXQgPSBnX3N0cmR1cF9wcmludGYgKCIlcyVzJXMiLCBvLCBm b3JtZXIsIFgxMV9EQVRBRElSKTsKLSsgICAgICAgICAgICAgICAgaGVhZCA9IGkgKyAyOwotKyAg ICAgICAgICAgICAgICBnX2ZyZWUgKG8pOwotKyAgICAgICAgICAgICAgICBnX2ZyZWUgKGZvcm1l cik7Ci0gICAgICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgIC8vIGVzY2FwZWQgJQot LSAgICAgICAgICAgIGNhc2UgJyUnOgotLSAgICAgICAgICAgICAgICAqbysrID0gJyUnOwotKyAg ICAgICAgICAgIGNhc2UgJyUnOiAvKiBlc2NhcGVkICUgKi8KLSsgICAgICAgICAgICAgICAgbyA9 IG91dDsKLSsgICAgICAgICAgICAgICAgZm9ybWVyID0gZ19zdHJuZHVwIChoZWFkLCBpIC0gaGVh ZCk7Ci0rICAgICAgICAgICAgICAgIG91dCA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzJXMlcyIsIG8s IGZvcm1lciwgIiUiKTsKLSsgICAgICAgICAgICAgICAgaGVhZCA9IGkgKyAyOwotKyAgICAgICAg ICAgICAgICBnX2ZyZWUgKG8pOwotKyAgICAgICAgICAgICAgICBnX2ZyZWUgKGZvcm1lcik7Ci0g ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg ICAgICAgIGdfd2FybmluZyAoIndoaWxlIHBhcnNpbmcgWENvbXBvc2UgaW5jbHVkZSB0YXJnZXQg JXMsIGZvdW5kICIKLUBAIC0yOTAsMTEgKzI5OSwxMiBAQCBleHBhbmRfaW5jbHVkZV9wYXRoIChj b25zdCBnY2hhciAqaW5jbHVkZV9wYXRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ImhhcyBiZWVuIGlnbm9yZWQiLCBpbmNsdWRlX3BhdGgsICooaSsxKSk7Ci0gICAgICAgICAgICAg ICAgIGdvdG8gZmFpbDsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgaSArPSAyOwotLSAg ICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICAqbysrID0gKmkrKzsKLSsgICAgICAgICAgICAr K2k7Ci0gICAgICAgICB9Ci0gICAgIH0KLSsgICAgbyA9IG91dDsKLSsgICAgb3V0ID0gZ19zdHJk dXBfcHJpbnRmICgiJXMlcyIsIG8sIGhlYWQpOwotKyAgICBnX2ZyZWUgKG8pOwotICAgICByZXR1 cm4gb3V0OwotIGZhaWw6Ci0gICAgIGdfZnJlZSAob3V0KTsKLUBAIC0zMTUsNyArMzI1LDcgQEAg cGFyc2VfY29tcG9zZV9saW5lIChHTGlzdCAgICAgICAqKmNvbXBvc2VfbGlzdCwKLSAgICAgZ19h c3NlcnQgKGNvbXBvc2VfbGVuKTsKLSAgICAgKmNvbXBvc2VfbGVuID0gMDsKLSAKLS0gICAgLy8g ZWF0IHNwYWNlcyBhdCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUKLSsgICAgLyogZWF0IHNwYWNlcyBh dCB0aGUgc3RhcnQgb2YgdGhlIGxpbmUgKi8KLSAgICAgd2hpbGUgKCpsaW5lICYmICgqbGluZSA9 PSAnICcgfHwgKmxpbmUgPT0gJ1x0JykpIGxpbmUrKzsKLSAKLSAgICAgaWYgKGxpbmVbMF0gPT0g J1wwJyB8fCBsaW5lWzBdID09ICcjJykKLUBAIC0zMjUsMTIgKzMzNSwxMiBAQCBwYXJzZV9jb21w b3NlX2xpbmUgKEdMaXN0ICAgICAgICoqY29tcG9zZV9saXN0LAotICAgICAgICAgY29uc3QgY2hh ciAqcmVzdCA9IGxpbmUgKyBzaXplb2YgKCJpbmNsdWRlICIpIC0gMTsKLSAgICAgICAgIHdoaWxl ICgqcmVzdCAmJiAqcmVzdCA9PSAnICcpIHJlc3QrKzsKLSAKLS0gICAgICAgIC8vIGdyYWJiZWQg dGhlIHBhdGggcGFydCBvZiB0aGUgbGluZQotKyAgICAgICAgLyogZ3JhYmJlZCB0aGUgcGF0aCBw YXJ0IG9mIHRoZSBsaW5lICovCi0gICAgICAgICBjaGFyICpyZXN0MjsKLSAgICAgICAgIGlmICgq cmVzdCA9PSAnIicpIHsKLSAgICAgICAgICAgICByZXN0Kys7Ci0gICAgICAgICAgICAgcmVzdDIg PSBnX3N0cmR1cCAocmVzdCk7Ci0tICAgICAgICAgICAgLy8gZWF0IHRoZSBjbG9zaW5nIHF1b3Rl Ci0rICAgICAgICAgICAgLyogZWF0IHRoZSBjbG9zaW5nIHF1b3RlICovCi0gICAgICAgICAgICAg Y2hhciAqaSA9IHJlc3QyOwotICAgICAgICAgICAgIHdoaWxlICgqaSAmJiAqaSAhPSAnIicpIGkr KzsKLSAgICAgICAgICAgICAqaSA9ICdcMCc7Ci1AQCAtMzc0LDYgKzM4NCwyMyBAQCBmYWlsOgot IH0KLSAKLSAKLStzdGF0aWMgZ2NoYXIgKgotK2dldF9lbl9jb21wb3NlX2ZpbGUgKHZvaWQpCi0r ewotKyAgICBnY2hhciAqIGNvbnN0IHN5c19sYW5nc1tdID0geyAiZW5fVVMuVVRGLTgiLCAiZW5f VVMiLCAiZW4uVVRGLTgiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW4i LCBOVUxMIH07Ci0rICAgIGdjaGFyICogY29uc3QgKnN5c19sYW5nID0gTlVMTDsKLSsgICAgZ2No YXIgKnBhdGggPSBOVUxMOwotKyAgICBmb3IgKHN5c19sYW5nID0gc3lzX2xhbmdzOyAqc3lzX2xh bmc7IHN5c19sYW5nKyspIHsKLSsgICAgICAgIHBhdGggPSBnX2J1aWxkX2ZpbGVuYW1lIChYMTFf REFUQURJUiwgKnN5c19sYW5nLCAiQ29tcG9zZSIsIE5VTEwpOwotKyAgICAgICAgaWYgKGdfZmls ZV90ZXN0IChwYXRoLCBHX0ZJTEVfVEVTVF9FWElTVFMpKQotKyAgICAgICAgICAgIGJyZWFrOwot KyAgICAgICAgZ19mcmVlIChwYXRoKTsKLSsgICAgfQotKyAgICByZXR1cm4gcGF0aDsKLSt9Ci0r Ci0rCi0gc3RhdGljIEdMaXN0ICoKLSBpYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChjb25z dCBnY2hhciAqY29tcG9zZV9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAgICAgICAgICptYXhfY29tcG9zZV9sZW4pCi1AQCAtMzk5LDYgKzQyNiw1MiBAQCBpYnVzX2Nv bXBvc2VfbGlzdF9wYXJzZV9maWxlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlLAotICAgICBn Y2hhciAqaW5jbHVkZSA9IE5VTEw7Ci0gICAgIGZvciAoaSA9IDA7IGxpbmVzW2ldICE9IE5VTEw7 IGkrKykgewotICAgICAgICAgcGFyc2VfY29tcG9zZV9saW5lICgmY29tcG9zZV9saXN0LCBsaW5l c1tpXSwgJmNvbXBvc2VfbGVuLCAmaW5jbHVkZSk7Ci0rICAgICAgICBpZiAoKm1heF9jb21wb3Nl X2xlbiA8IGNvbXBvc2VfbGVuKQotKyAgICAgICAgICAgICptYXhfY29tcG9zZV9sZW4gPSBjb21w b3NlX2xlbjsKLSsgICAgICAgIGlmIChpbmNsdWRlICYmICppbmNsdWRlKSB7Ci0rICAgICAgICAg ICAgR1N0YXRCdWYgYnVmX2luY2x1ZGUgPSB7IDAsIH07Ci0rICAgICAgICAgICAgR1N0YXRCdWYg YnVmX3BhcmVudCA9IHsgMCwgfTsKLSsgICAgICAgICAgICBnY2hhciAqZW5fY29tcG9zZTsKLSsg ICAgICAgICAgICBlcnJubyA9IDA7Ci0rICAgICAgICAgICAgaWYgKGdfc3RhdCAoaW5jbHVkZSwg ICZidWZfaW5jbHVkZSkpIHsKLSsgICAgICAgICAgICAgICAgZ193YXJuaW5nICgiQ2Fubm90IGFj Y2VzcyAlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ19zdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICAgICAg ICAgICAgZ19jbGVhcl9wb2ludGVyICgmaW5jbHVkZSwgZ19mcmVlKTsKLSsgICAgICAgICAgICAg ICAgY29udGludWU7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGVycm5vID0gMDsKLSsg ICAgICAgICAgICBpZiAoZ19zdGF0IChjb21wb3NlX2ZpbGUsICAmYnVmX3BhcmVudCkpIHsKLSsg ICAgICAgICAgICAgICAgZ193YXJuaW5nICgiQ2Fubm90IGFjY2VzcyAlczogJXMiLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbXBvc2VfZmlsZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICBnX3N0cmVycm9yIChlcnJubykpOwotKyAgICAgICAgICAgICAgICBnX2NsZWFyX3Bv aW50ZXIgKCZpbmNsdWRlLCBnX2ZyZWUpOwotKyAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsg ICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKGJ1Zl9pbmNsdWRlLnN0X2lubyA9PSBidWZf cGFyZW50LnN0X2lubykgewotKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJGb3VuZCByZWN1 cnNpdmUgbmVzdCBzYW1lIGZpbGUgJXMiLCBpbmNsdWRlKTsKLSsgICAgICAgICAgICAgICAgZ19j bGVhcl9wb2ludGVyICgmaW5jbHVkZSwgZ19mcmVlKTsKLSsgICAgICAgICAgICAgICAgY29udGlu dWU7Ci0rICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGVuX2NvbXBvc2UgPSBnZXRfZW5fY29t cG9zZV9maWxlICgpOwotKyAgICAgICAgICAgIGlmIChlbl9jb21wb3NlKSB7Ci0rICAgICAgICAg ICAgICAgIGVycm5vID0gMDsKLSsgICAgICAgICAgICAgICAgaWYgKGdfc3RhdCAoZW5fY29tcG9z ZSwgICZidWZfcGFyZW50KSkgewotKyAgICAgICAgICAgICAgICAgICAgZ193YXJuaW5nICgiQ2Fu bm90IGFjY2VzcyAlczogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21w b3NlX2ZpbGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyZXJyb3IgKGVy cm5vKSk7Ci0rICAgICAgICAgICAgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZpbmNsdWRlLCBn X2ZyZWUpOwotKyAgICAgICAgICAgICAgICAgICAgZ19mcmVlIChlbl9jb21wb3NlKTsKLSsgICAg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAg ICAgfQotKyAgICAgICAgICAgIGdfZnJlZSAoZW5fY29tcG9zZSk7Ci0rICAgICAgICAgICAgaWYg KGJ1Zl9pbmNsdWRlLnN0X2lubyA9PSBidWZfcGFyZW50LnN0X2lubykgewotKyAgICAgICAgICAg ICAgICBnX2xvZyAoIlN5c3RlbSBlbl9VUyBDb21wb3NlIGlzIGFscmVhZHkgbG9hZGVkICVzXG4i LCBpbmNsdWRlKTsKLSsgICAgICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVyICgmaW5jbHVkZSwg Z19mcmVlKTsKLSsgICAgICAgICAgICAgICAgY29udGludWU7Ci0rICAgICAgICAgICAgfQotKyAg ICAgICAgfQotICAgICAgICAgaWYgKGluY2x1ZGUgJiYgKmluY2x1ZGUpIHsKLSAgICAgICAgICAg ICBHTGlzdCAqcmVzdCA9IGlidXNfY29tcG9zZV9saXN0X3BhcnNlX2ZpbGUgKGluY2x1ZGUsCi0g ICAgICAgICAgICAgICAgICAgICBtYXhfY29tcG9zZV9sZW4pOwotQEAgLTQwNiwxMCArNDc5LDcg QEAgaWJ1c19jb21wb3NlX2xpc3RfcGFyc2VfZmlsZSAoY29uc3QgZ2NoYXIgKmNvbXBvc2VfZmls ZSwKLSAgICAgICAgICAgICAgICAgY29tcG9zZV9saXN0ID0gZ19saXN0X2NvbmNhdCAoY29tcG9z ZV9saXN0LCByZXN0KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0tCi0gICAgICAgICBn X2NsZWFyX3BvaW50ZXIgKCZpbmNsdWRlLCBnX2ZyZWUpOwotLSAgICAgICAgaWYgKCptYXhfY29t cG9zZV9sZW4gPCBjb21wb3NlX2xlbikKLS0gICAgICAgICAgICAqbWF4X2NvbXBvc2VfbGVuID0g Y29tcG9zZV9sZW47Ci0gICAgIH0KLSAgICAgZ19zdHJmcmVldiAobGluZXMpOwotIAotLS0gCi0y LjI4LjAKLQotRnJvbSA3ZjA5Mzc5YjNjYjY5YzdkZTZkOGQ2NjdjZTM5OGRjZmMwMDAwNDMzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbGYtIDxzb2Z0d2FyZUBsZmNvZGUuY2E+Ci1E YXRlOiBUaHUsIDI0IEp1biAyMDIxIDE2OjEwOjEyICswOTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNy Yy9pYnVzY29tcG9zZXRhYmxlOiBGaXggYSBidWZmZXIgb3ZlcmZsb3cgaW4gY29tcG9zZQotIGhh bmRsaW5nCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLUkgYmVsaWV2ZSB0 aGlzIGhhcyBubyBzZWN1cml0eSBpbXBhY3QgYnV0IGl0IGlzIG1ha2luZyBteSBWYWxncmluZCBz YWQuCi0KLVRoYW5rcyB0byBPbW5pIGZvciB0aGUgaGVscCBpbiBmaW5kaW5nIHRoZSByb290IGNh dXNlIG9mIHRoaXMuCi0KLX4vLlhDb21wb3NlIGlzOgotYGBgCi08TXVsdGlfa2V5PiA8Zz4gPGg+ IDogIs63IgotPE11bHRpX2tleT4gPGc+IDx2PiA8dD4gPGg+IDogIs+RIgotPE11bHRpX2tleT4g PGc+IDxoPiAgICAgOiAiyaMiCi1gYGAKLQotQlVHPWh0dHBzOi8vZ2l0aHViLmNvbS9pYnVzL2li dXMvcHVsbC8yMjk3Ci0tLS0KLSBzcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIHwgMTUgKysrKysrKysr KysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIGIvc3JjL2lidXNjb21wb3Nl dGFibGUuYwotaW5kZXggOTE2ZmNhZTMuLmRkN2NiZjgzIDEwMDY0NAotLS0tIGEvc3JjL2lidXNj b21wb3NldGFibGUuYwotKysrIGIvc3JjL2lidXNjb21wb3NldGFibGUuYwotQEAgLTQxMCw3ICs0 MTAsNiBAQCBpYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChjb25zdCBnY2hhciAqY29tcG9z ZV9maWxlLAotICAgICBnc2l6ZSBsZW5ndGggPSAwOwotICAgICBHRXJyb3IgKmVycm9yID0gTlVM TDsKLSAgICAgR0xpc3QgKmNvbXBvc2VfbGlzdCA9IE5VTEw7Ci0tICAgIGludCBjb21wb3NlX2xl biA9IDA7Ci0gICAgIGludCBpOwotIAotICAgICBnX2Fzc2VydCAobWF4X2NvbXBvc2VfbGVuKTsK LUBAIC00MjMsOCArNDIyLDkgQEAgaWJ1c19jb21wb3NlX2xpc3RfcGFyc2VfZmlsZSAoY29uc3Qg Z2NoYXIgKmNvbXBvc2VfZmlsZSwKLSAKLSAgICAgbGluZXMgPSBnX3N0cnNwbGl0IChjb250ZW50 cywgIlxuIiwgLTEpOwotICAgICBnX2ZyZWUgKGNvbnRlbnRzKTsKLS0gICAgZ2NoYXIgKmluY2x1 ZGUgPSBOVUxMOwotICAgICBmb3IgKGkgPSAwOyBsaW5lc1tpXSAhPSBOVUxMOyBpKyspIHsKLSsg ICAgICAgIGludCBjb21wb3NlX2xlbiA9IDA7Ci0rICAgICAgICBnY2hhciAqaW5jbHVkZSA9IE5V TEw7Ci0gICAgICAgICBwYXJzZV9jb21wb3NlX2xpbmUgKCZjb21wb3NlX2xpc3QsIGxpbmVzW2ld LCAmY29tcG9zZV9sZW4sICZpbmNsdWRlKTsKLSAgICAgICAgIGlmICgqbWF4X2NvbXBvc2VfbGVu IDwgY29tcG9zZV9sZW4pCi0gICAgICAgICAgICAgKm1heF9jb21wb3NlX2xlbiA9IGNvbXBvc2Vf bGVuOwotQEAgLTQ2Nyw3ICs0NjcsOCBAQCBpYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChj b25zdCBnY2hhciAqY29tcG9zZV9maWxlLAotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBn X2ZyZWUgKGVuX2NvbXBvc2UpOwotICAgICAgICAgICAgIGlmIChidWZfaW5jbHVkZS5zdF9pbm8g PT0gYnVmX3BhcmVudC5zdF9pbm8pIHsKLS0gICAgICAgICAgICAgICAgZ19sb2cgKCJTeXN0ZW0g ZW5fVVMgQ29tcG9zZSBpcyBhbHJlYWR5IGxvYWRlZCAlc1xuIiwgaW5jbHVkZSk7Ci0rICAgICAg ICAgICAgICAgIGdfbWVzc2FnZSAoIlN5c3RlbSBlbl9VUyBDb21wb3NlIGlzIGFscmVhZHkgbG9h ZGVkICVzXG4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGUpOwotICAgICAg ICAgICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZpbmNsdWRlLCBnX2ZyZWUpOwotICAgICAgICAg ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICB9Ci1AQCAtNTgzLDEyICs1ODQsMjAgQEAg aWJ1c19jb21wb3NlX2RhdGFfY29tcGFyZSAoZ3BvaW50ZXIgYSwKLSAgICAgSUJ1c0NvbXBvc2VE YXRhICpjb21wb3NlX2RhdGFfYiA9IGI7Ci0gICAgIGludCBtYXhfY29tcG9zZV9sZW4gPSBHUE9J TlRFUl9UT19JTlQgKGRhdGEpOwotICAgICBpbnQgaTsKLSsgICAgLyogVGhlIGFsbG9jYXRpb24g bGVuZ3RoIG9mIGNvbXBvc2VfZGF0YV9hLT5zZXF1ZW5jZVtdIGlzIGRpZmZlcmVudCBmcm9tCi0r ICAgICAqIG9uZSBvZiBjb21wb3NlX2RhdGFfYi0+c2VxdWVuY2VbXSBhbmQgbWF4X2NvbXBvc2Vf bGVuIGluZGljYXRlcwotKyAgICAgKiB0aGUgc2VxdWVuY2UgbGVuZ3RoIG9ubHkgYnV0IG5vdCBp bmNsdWRlIHRoZSBjb21wb3NlIHZhbHVlIGxlbmd0aC4KLSsgICAgICogU28gbWF4X2NvbXBvc2Vf bGVuIGlzIGdyZWF0ZXIgdGhhbiBhbnkgYWxsb2NhdGlvbiBsZW5ndGhzIG9mIHNlcXVlbmNlW10K LSsgICAgICogYW5kIHRoaXMgQVBJIHNob3VsZCByZXR1cm4gaWYgY29kZV9hIG9yIGNvZGVfYiBp cyAwLgotKyAgICAgKi8KLSAgICAgZm9yIChpID0gMDsgaSA8IG1heF9jb21wb3NlX2xlbjsgaSsr KSB7Ci0gICAgICAgICBndW5pY2hhciBjb2RlX2EgPSBjb21wb3NlX2RhdGFfYS0+c2VxdWVuY2Vb aV07Ci0gICAgICAgICBndW5pY2hhciBjb2RlX2IgPSBjb21wb3NlX2RhdGFfYi0+c2VxdWVuY2Vb aV07Ci0gCi0gICAgICAgICBpZiAoY29kZV9hICE9IGNvZGVfYikKLSAgICAgICAgICAgICByZXR1 cm4gY29kZV9hIC0gY29kZV9iOwotKyAgICAgICAgaWYgKGNvZGVfYSA9PSAwICYmIGNvZGVfYiA9 PSAwKQotKyAgICAgICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gICAgIHJldHVybiAwOwotIH0K LS0tIAotMi4yOC4wCi0KLUZyb20gYWI2Yjk1ODdhNDk3ZTk2NjJhMjkzNmRmM2RhYmVkNDU4MmVl YWJkYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjkgSnVuIDIwMjEgMTI6NDA6MjAgKzA5MDAK LVN1YmplY3Q6IFtQQVRDSF0gc3JjL3Rlc3RzOiBEZWxldGUgR19NRVNTQUdFU19ERUJVRyBpbiBk ZXNrdG9wLXRlc3RpbmcgZm9yCi0gZ3NldHRpbmdzCi0KLUdfTUVTU0FHRVNfREVCVUcgbWVzc2Fn ZSBjb3VsZCBiZSBhcHBlbmRlZCB0byB0aGUgb3V0cHV0IG9mIGdzZXR0aW5ncwotY29tbWFuZCBh bmQgaXQncyBub3QgdXNlZnVsIHRvIGNoZWNrIHRoZSBvdXRwdXQuCi0tLS0KLSBzcmMvdGVzdHMv aWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluIHwgMTEgKysrKysrKysrLS0KLSAxIGZpbGUg Y2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEv c3JjL3Rlc3RzL2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbiBiL3NyYy90ZXN0cy9pYnVz LWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4KLWluZGV4IDU0YjdlMGQ3Li4wZWY3MmMwMyAxMDA3 NTUKLS0tLSBhL3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4KLSsrKyBi L3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4KLUBAIC0yMTcsNiArMjE3 LDEwIEBAIGluaXRfZ25vbWUoKQotIHsKLSAgICAgIyBnc2V0dGluZ3Mgc2V0IGNvbW1hbmQgbmVl ZHMgZGNvbmYtc2VydmljZSB3aXRoIHRoZSBzYW1lICRESVNQTEFZCi0gICAgIHBraWxsIGRjb25m LXNlcnZpY2UKLSsgICAgIyBHX01FU1NBR0VTX0RFQlVHPWFsbCBvciBHX01FU1NBR0VTX0RFQlVH PUdMaWItR0lPLURFQlVHIHdvdWxkIGFwcGVuZAotKyAgICAjIGRlYnVnIG1lc3NhZ2VzIHRvIGdz ZXR0aW5ncyBvdXRwdXQgYW5kIGNvdWxkIG5vdCBnZXQgdGhlIHJlc3VsdCBjb3JyZWN0bHkuCi0r ICAgIGJhY2t1cF9HX01FU1NBR0VTX0RFQlVHPSIkR19NRVNTQUdFU19ERUJVRyIKLSsgICAgZXhw b3J0IC1uIEdfTUVTU0FHRVNfREVCVUc9JycKLSAgICAgIyBEaXNhYmxlIFRvdXIgZGlhbG9nIHRv IGdldCBmb2N1cwotICAgICBWPWBnc2V0dGluZ3MgZ2V0IG9yZy5nbm9tZS5zaGVsbCB3ZWxjb21l LWRpYWxvZy1sYXN0LXNob3duLXZlcnNpb25gCi0gICAgIGlmIFsgeCIkViIgPSB4IicnIiBdIDsg dGhlbgotQEAgLTIzOCwxNCArMjQyLDE3IEBAIGluaXRfZ25vbWUoKQotICAgICBlY2hvICIkViIg fCBncmVwICJuby1vdmVydmlldyIgPiAvZGV2L251bGwKLSAgICAgVjI9JD8KLSAgICAgaWYgWyAk VjIgLW5lIDAgXSA7IHRoZW4KLS0gICAgICAgIFYzPWBlY2hvICIkViIgfCBzZWQgLWUgJ3MvXFsv LycgLWUgJ3MvXF0vLydgCi0tICAgICAgICBpZiBbIHgiJFYzIiA9IHgiJyciIF0gOyB0aGVuCi0r ICAgICAgICBWMz1gZWNobyAiJFYiIHwgc2VkIC1lICdzL0BhcyAvLycgLWUgJ3MvXFsvLycgLWUg J3MvXF0vLydgCi0rICAgICAgICBpZiBbIHgiJFYzIiA9IHgiJyciIF0gfHwgWyB4IiRWMyIgPSB4 IiIgXTsgdGhlbgotICAgICAgICAgICAgIFY0PSJbJ25vLW92ZXJ2aWV3QGZ0aHgnXSIKLSAgICAg ICAgIGVsc2UKLSAgICAgICAgICAgICBWND0iWyRWMywgJ25vLW92ZXJ2aWV3QGZ0aHgnXSIKLSAg ICAgICAgIGZpCi0gICAgICAgICBnc2V0dGluZ3Mgc2V0IG9yZy5nbm9tZS5zaGVsbCBlbmFibGVk LWV4dGVuc2lvbnMgIiRWNCIKLSAgICAgZmkKLSsgICAgaWYgWyB4IiRiYWNrdXBfR19NRVNTQUdF U19ERUJVRyIgIT0geCBdIDsgdGhlbgotKyAgICAgICAgZXhwb3J0IEdfTUVTU0FHRVNfREVCVUc9 IiRiYWNrdXBfR19NRVNTQUdFU19ERUJVRyIKLSsgICAgZmkKLSB9Ci0gCi0gcnVuX2Rlc2t0b3Ao KQotLS0gCi0yLjI4LjAKLQotRnJvbSBiOTUyZDMwYTFiN2M3NDEwNTJjMTY4ZmUxMDgxZWNiNGQ0 YjFjMDM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5m dWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogV2VkLCAxNCBKdWwgMjAyMSAyMjozMTo0NyArMDkw MAotU3ViamVjdDogW1BBVENIXSBDaGFuZ2UgZGVmYXVsdCBFbW9qaSBzaG9ydGN1dCBrZXkKLQot VGhlIHNob3J0Y3V0IGtleSB3YXMgQ3RybC1TaGl0LWUgdG8gZm9sbG93IFVuaWNvZGUgY29kZSBw b2ludAotc2hvcnRjdXQga2V5IGJ1dCBub3cgdGhlIHNob3JjdXQga2V5IGlzIGNoYW5nZWQgdG8g Q3RybC1wZXJpb2QKLXRvIGZvbGxvdyBHVEsuCi0KLUJVRz1odHRwczovL2dpdGh1Yi5jb20vaWJ1 cy9pYnVzL2lzc3Vlcy8yMzI1Ci0tLS0KLSBkYXRhL2Rjb25mL29yZy5mcmVlZGVza3RvcC5pYnVz LmdzY2hlbWEueG1sIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBk ZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZGF0YS9kY29uZi9vcmcuZnJlZWRlc2t0b3AuaWJ1 cy5nc2NoZW1hLnhtbCBiL2RhdGEvZGNvbmYvb3JnLmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54 bWwKLWluZGV4IGE3OWU5Mjk2Li4wOTliOWM2MCAxMDA2NDQKLS0tLSBhL2RhdGEvZGNvbmYvb3Jn LmZyZWVkZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwKLSsrKyBiL2RhdGEvZGNvbmYvb3JnLmZyZWVk ZXNrdG9wLmlidXMuZ3NjaGVtYS54bWwKLUBAIC0xODMsNyArMTgzLDcgQEAKLSAgICAgICA8ZGVz Y3JpcHRpb24+VGhlIHNob3J0Y3V0IGtleXMgZm9yIHR1cm5pbmcgVW5pY29kZSB0eXBpbmcgb24g b3Igb2ZmPC9kZXNjcmlwdGlvbj4KLSAgICAgPC9rZXk+Ci0gICAgIDxrZXkgbmFtZT0iaG90a2V5 IiB0eXBlPSJhcyI+Ci0tICAgICAgPGRlZmF1bHQ+WyAnJmx0O0NvbnRyb2wmZ3Q7Jmx0O1NoaWZ0 Jmd0O2UnIF08L2RlZmF1bHQ+Ci0rICAgICAgPGRlZmF1bHQ+WyAnJmx0O0NvbnRyb2wmZ3Q7cGVy aW9kJyBdPC9kZWZhdWx0PgotICAgICAgIDxzdW1tYXJ5PkVtb2ppIHNob3J0Y3V0IGtleXMgZm9y IGd0a19hY2NlbGVyYXRvcl9wYXJzZTwvc3VtbWFyeT4KLSAgICAgICA8ZGVzY3JpcHRpb24+VGhl IHNob3J0Y3V0IGtleXMgZm9yIHR1cm5pbmcgZW1vamkgdHlwaW5nIG9uIG9yIG9mZjwvZGVzY3Jp cHRpb24+Ci0gICAgIDwva2V5PgotLS0gCi0yLjI4LjAKLQotRnJvbSBhNDkzOWY2N2Y5ZGU4Mjc1 MjE5ZTJjZmNkMzg3M2UwZmJlNTkwNThmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog ZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNiBKdWwg MjAyMSAxMzowODowMiArMDkwMAotU3ViamVjdDogW1BBVENIXSBzZXR1cDogRW5oYW5jZSBlbmdp bmUgc2VhcmNoIGZ1bmN0aW9uCi0KLWlidXMtc2V0dXAgY2FuIHNlYXJjaCBib3RoIHRoZSBsYW5n dWFnZSBuYW1lcyBhbmQgaW5wdXQgbWV0aG9kIG5hbWVzCi1pbiB0aGUgdG9wIGxhbmd1YWdlIGxp c3QgYnV0IHdoZW4geW91IHNlYXJjaCBhIGxhbmd1YWdlIGtleXdvcmQKLWluIHRoZSBsYW5ndWFn ZSBsaXN0IGFuZCBtb3ZlIHRvIHRoZSBpbnB1dCBtZXRob2QgbGlzdCBhZnRlciBjbGljawotdGhl IGhpdCBsYW5ndWFnZSBuYW1lLCBhbnkgaW5wdXQgbWV0aG9kcyBjb3VsZCBub3QgYmUgc2hvd24g YmVjYXVzZQotdGhlIGxhbmd1YWdlIGRpZG4ndCBoaXQgaW4gYW55IGlucHV0IG1ldGhvZCBuYW1l cy4KLQotSW4gdGhpcyBlbmhhbmNlbWVudCwgaWJ1cy1zZXR1cCBjYW4gc2hvdyB0aGUgaW5wdXQg bWV0aG9kcyB0byBoaXQKLXRoZSBsYW5ndWFnZSBuYW1lcy4KLS0tLQotIHNldHVwL2VuZ2luZWRp YWxvZy5weSB8IDI2ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQs IDIwIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cC9l bmdpbmVkaWFsb2cucHkgYi9zZXR1cC9lbmdpbmVkaWFsb2cucHkKLWluZGV4IGUxYzMyMmJmLi40 NzBmODAxYyAxMDA2NDQKLS0tLSBhL3NldHVwL2VuZ2luZWRpYWxvZy5weQotKysrIGIvc2V0dXAv ZW5naW5lZGlhbG9nLnB5Ci1AQCAtMTIwLDEyICsxMjAsMjYgQEAgY2xhc3MgRW5naW5lRGlhbG9n KEd0ay5EaWFsb2cpOgotICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICBpZiB3b3Jk IGluIHJvdy51bnRyYW5zLmxvd2VyKCk6Ci0gICAgICAgICAgICAgcmV0dXJuIFRydWUKLS0gICAg ICAgIGlmIHJvdy5sYW5nX2luZm8gYW5kIHJvdy5uYW1lIGluIHNlbGYuX19lbmdpbmVzX2Zvcl9s YW5nOgotLSAgICAgICAgICAgIGZvciByb3dfZSBpbiBzZWxmLl9fZW5naW5lc19mb3JfbGFuZ1ty b3cubmFtZV06Ci0tICAgICAgICAgICAgICAgIGlmIHdvcmQgaW4gcm93X2UubmFtZS5sb3dlcigp OgotLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLS0gICAgICAgICAgICAgICAgaWYg d29yZCBpbiByb3dfZS51bnRyYW5zLmxvd2VyKCk6Ci0tICAgICAgICAgICAgICAgICAgICByZXR1 cm4gVHJ1ZQotKyAgICAgICAgIyBTZWFyY2ggZW5naW5lIG5hbWUgaW4gbGFuZ3VhZ2UgbGlzdAot KyAgICAgICAgaWYgcm93LmxhbmdfaW5mbzoKLSsgICAgICAgICAgICBpZiByb3cubmFtZSBpbiBz ZWxmLl9fZW5naW5lc19mb3JfbGFuZy5rZXlzKCk6Ci0rICAgICAgICAgICAgICAgIGZvciByb3df bCBpbiBzZWxmLl9fZW5naW5lc19mb3JfbGFuZ1tyb3cubmFtZV06Ci0rICAgICAgICAgICAgICAg ICAgICBpZiB3b3JkIGluIHJvd19sLm5hbWUubG93ZXIoKToKLSsgICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgICAgICAgICAgICAgaWYgd29yZCBpbiByb3dfbC51 bnRyYW5zLmxvd2VyKCk6Ci0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsg ICAgICAgICMgU2VhcmNoIGxhbmd1YWdlIG5hbWUgaW4gZW5naW5lIGxpc3QKLSsgICAgICAgIGlm IG5vdCByb3cubGFuZ19pbmZvOgotKyAgICAgICAgICAgIGZvciBsIGluIHNlbGYuX19lbmdpbmVz X2Zvcl9sYW5nLmtleXMoKToKLSsgICAgICAgICAgICAgICAgaWYgd29yZCBpbiBsLmxvd2VyKCk6 Ci0rICAgICAgICAgICAgICAgICAgICBmb3Igcm93X2wgaW4gc2VsZi5fX2VuZ2luZXNfZm9yX2xh bmdbbF06Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgcm93Lm5hbWUgPT0gcm93X2wubmFt ZToKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSsgICAgICAgICAg ICBmb3IgKHRyYW5zLCB1bnRyYW5zKSBpbiBzZWxmLl9fdW50cmFuc19mb3JfbGFuZy5pdGVtcygp OgotKyAgICAgICAgICAgICAgICBpZiB3b3JkIGluIHVudHJhbnMubG93ZXIoKToKLSsgICAgICAg ICAgICAgICAgICAgIGZvciByb3dfbCBpbiBzZWxmLl9fZW5naW5lc19mb3JfbGFuZ1t0cmFuc106 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgcm93Lm5hbWUgPT0gcm93X2wubmFtZToKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgIHJldHVybiBG YWxzZQotIAotIAotLS0gCi0yLjI4LjAKLQotRnJvbSA3ZTEyZDU4OWVlNDk3OWZkZDBmMGIwOGYx YmFjOTA0OTc0MWVjNjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0 IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAyMjo1 MjoxMiArMDkwMAotU3ViamVjdDogW1BBVENIIDEvNl0gc3JjL2lidXNjb21wb3NldGFibGU6IE1v dmUgaWJ1c19jb21wb3NlX3RhYmxlX2NoZWNrCi0KLS0gTW92ZSBpYnVzX2NvbXBvc2VfdGFibGVf Y2hlY2sgYW5kIGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrCi0gIGZyb20gaWJ1c2Vu Z2luZXNpbXBsZS5jIHRvIGlidXNjb21wb3NldGFibGUuYwotLSBGaXggc3JjL3Rlc3RzL2lidXMt Y29tcG9zZS5jIHRvIHJlYWQgY29tcG9zZSBzZXF1ZW5jZXMgY29ycmVjdGx5LgotLS0tCi0gc3Jj L2lidXNjb21wb3NldGFibGUuYyAgICAgICAgfCA1MTkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCi0gc3JjL2lidXNlbmdpbmVzaW1wbGUuYyAgICAgICAgfCA1ODMgKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oIHwg IDE3ICstCi0gc3JjL3Rlc3RzL01ha2VmaWxlLmFtICAgICAgICAgfCAgIDMgKy0KLSBzcmMvdGVz dHMvaWJ1cy1jb21wb3NlLmMgICAgICB8ICAgNyArLQotIDUgZmlsZXMgY2hhbmdlZCwgNjAxIGlu c2VydGlvbnMoKyksIDUyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9pYnVzY29t cG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1pbmRleCBkZDdjYmY4My4uZjg1 MTc3YTYgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi0rKysgYi9zcmMvaWJ1 c2NvbXBvc2V0YWJsZS5jCi1AQCAtMzMsNiArMzMsMTMgQEAKLSAKLSAjaW5jbHVkZSAiaWJ1c2Vu Z2luZXNpbXBsZXByaXZhdGUuaCIKLSAKLSsvKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHRhYmxl IG9mIHRoZSBjb21wb3NlIHNlcXVlbmNlcywKLSsgKiBzdGF0aWMgY29uc3QgZ3VpbnQxNiBndGtf Y29tcG9zZV9zZXFzX2NvbXBhY3RbXSA9IHt9Ci0rICogSXQgaXMgZ2VuZXJhdGVkIGZyb20gdGhl IGNvbXBvc2UtcGFyc2UucHkgc2NyaXB0LgotKyAqLwotKyNpbmNsdWRlICJndGtpbWNvbnRleHRz aW1wbGVzZXFzLmgiCi0rCi0rCi0gI2RlZmluZSBJQlVTX0NPTVBPU0VfVEFCTEVfTUFHSUMgIklC dXNDb21wb3NlVGFibGUiCi0gI2RlZmluZSBJQlVTX0NPTVBPU0VfVEFCTEVfVkVSU0lPTiAoNCkK LSAjZGVmaW5lIFgxMV9EQVRBRElSIFgxMV9EQVRBX1BSRUZJWCAiL3NoYXJlL1gxMS9sb2NhbGUi Ci1AQCAtNDQsNiArNTEsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgewotIH0gSUJ1c0NvbXBvc2VEYXRh OwotIAotIAotK2V4dGVybiBjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4IGlidXNfY29t cG9zZV90YWJsZV9jb21wYWN0OwotK2V4dGVybiBjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFj dEV4IGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0XzMyYml0OwotKwotKwotIHN0YXRpYyB2b2lk Ci0gaWJ1c19jb21wb3NlX2RhdGFfZnJlZSAoSUJ1c0NvbXBvc2VEYXRhICpjb21wb3NlX2RhdGEp Ci0gewotQEAgLTUyNywyMCArNTM4LDIyIEBAIGlidXNfY29tcG9zZV9saXN0X2NoZWNrX2R1cGxp Y2F0ZWQgKEdMaXN0ICpjb21wb3NlX2xpc3QsCi0gICAgICAgICBpc18zMmJpdCA9IChuX291dHB1 dHMgPiAxKSA/IFRSVUUgOgotICAgICAgICAgICAgICAgICAoY29tcG9zZV9kYXRhLT52YWx1ZXNb MF0gPj0gMHhGRkZGKSA/IFRSVUUgOiBGQUxTRTsKLSAgICAgICAgIGlmICghaXNfMzJiaXQgJiYK LS0gICAgICAgICAgICBpYnVzX2NoZWNrX2NvbXBhY3RfdGFibGUgKCZpYnVzX2NvbXBvc2VfdGFi bGVfY29tcGFjdCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN5 bXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9zZV9maW5pc2gsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2NoYXJzKSAmJiBj b21wb3NlX2ZpbmlzaCkgewotKyAgICAgICAgICAgIGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0 X2NoZWNrICgmaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3QsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN5bXMsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvc2VfZmluaXNoLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2NoYXJzKSAmJgot KyAgICAgICAgICAgIGNvbXBvc2VfZmluaXNoKSB7Ci0gICAgICAgICAgICAgaWYgKGNvbXBvc2Vf ZGF0YS0+dmFsdWVzWzBdID09ICpvdXRwdXRfY2hhcnMpCi0gICAgICAgICAgICAgICAgIHJlbW92 ZWRfbGlzdCA9IGdfbGlzdF9hcHBlbmQgKHJlbW92ZWRfbGlzdCwgY29tcG9zZV9kYXRhKTsKLSAg ICAgICAgICAgICBnX2ZyZWUgKG91dHB1dF9jaGFycyk7Ci0gICAgICAgICB9IGVsc2UgaWYgKGlz XzMyYml0ICYmCi0tICAgICAgICAgICAgICAgICAgIGlidXNfY2hlY2tfY29tcGFjdF90YWJsZSAo JmlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0XzMyYml0LAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGtleXN5bXMsCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wb3NlX2ZpbmlzaCwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2NoYXJzKSAmJiBjb21wb3Nl X2ZpbmlzaCkgewotKyAgICAgICAgICAgICAgICAgICBpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFj dF9jaGVjayAoCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAmaWJ1c19jb21wb3NlX3RhYmxl X2NvbXBhY3RfMzJiaXQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzeW1zLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgJmNvbXBvc2VfZmluaXNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB1 dF9jaGFycykgJiYgY29tcG9zZV9maW5pc2gpIHsKLSAgICAgICAgICAgICAKLSAgICAgICAgICAg ICBpZiAobl9vdXRwdXRzID09IHVuaWNoYXJfbGVuZ3RoIChvdXRwdXRfY2hhcnMpKSB7Ci0gICAg ICAgICAgICAgICAgIGludCBqID0gMDsKLUBAIC0xMzU0LDMgKzEzNjcsNDg5IEBAIGlidXNfY29t cG9zZV90YWJsZV9saXN0X2FkZF9maWxlIChHU0xpc3QgICAgICAqY29tcG9zZV90YWJsZXMsCi0g ICAgIGlidXNfY29tcG9zZV90YWJsZV9zYXZlX2NhY2hlIChjb21wb3NlX3RhYmxlKTsKLSAgICAg cmV0dXJuIGdfc2xpc3RfcHJlcGVuZCAoY29tcG9zZV90YWJsZXMsIGNvbXBvc2VfdGFibGUpOwot IH0KLSsKLSsKLStzdGF0aWMgaW50Ci0rY29tcGFyZV9zZXEgKGNvbnN0IHZvaWQgKmtleSwgY29u c3Qgdm9pZCAqdmFsdWUpCi0rewotKyAgICBpbnQgaSA9IDA7Ci0rICAgIGNvbnN0IGd1aW50MTYg KmtleXN5bXMgPSBrZXk7Ci0rICAgIGNvbnN0IGd1aW50MTYgKnNlcSA9IHZhbHVlOwotKwotKyAg ICB3aGlsZSAoa2V5c3ltc1tpXSkgewotKyAgICAgICAgaWYgKGtleXN5bXNbaV0gPCBzZXFbaV0p Ci0rICAgICAgICAgICAgcmV0dXJuIC0xOwotKyAgICAgICAgZWxzZSBpZiAoa2V5c3ltc1tpXSA+ IHNlcVtpXSkKLSsgICAgICAgICAgICByZXR1cm4gMTsKLSsKLSsgICAgICAgIGkrKzsKLSsgICAg fQotKwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rCi0rZ2Jvb2xlYW4KLStpYnVzX2NvbXBvc2Vf dGFibGVfY2hlY2sgKGNvbnN0IElCdXNDb21wb3NlVGFibGVFeCAqdGFibGUsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludDE2ICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfYnVmZmVy LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICAgICBu X2NvbXBvc2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAg ICAgICAgKmNvbXBvc2VfZmluaXNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xl YW4gICAgICAgICAgICAgICAgICpjb21wb3NlX21hdGNoLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgR1N0cmluZyAgICAgICAgICAgICAgICAgICpvdXRwdXQsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgIGlzXzMyYml0KQotK3sKLSsgICAg Z2ludCByb3dfc3RyaWRlID0gdGFibGUtPm1heF9zZXFfbGVuICsgMjsKLSsgICAgZ3VpbnQxNiAq ZGF0YV9maXJzdDsKLSsgICAgaW50IG5fc2VxczsKLSsgICAgZ3VpbnQxNiAqc2VxOwotKwotKyAg ICBpZiAoY29tcG9zZV9maW5pc2gpCi0rICAgICAgICAqY29tcG9zZV9maW5pc2ggPSBGQUxTRTsK LSsgICAgaWYgKGNvbXBvc2VfbWF0Y2gpCi0rICAgICAgICAqY29tcG9zZV9tYXRjaCA9IEZBTFNF OwotKyAgICBpZiAob3V0cHV0KQotKyAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKG91dHB1dCwg MCk7Ci0rCi0rICAgIGlmIChuX2NvbXBvc2UgPiB0YWJsZS0+bWF4X3NlcV9sZW4pCi0rICAgICAg ICByZXR1cm4gRkFMU0U7Ci0rCi0rICAgIGlmIChpc18zMmJpdCkgewotKyAgICAgICAgaWYgKCF0 YWJsZS0+cHJpdikKLSsgICAgICAgICAgICByZXR1cm4gRkFMU0U7Ci0rICAgICAgICBkYXRhX2Zp cnN0ID0gdGFibGUtPnByaXYtPmRhdGFfZmlyc3Q7Ci0rICAgICAgICBuX3NlcXMgPSB0YWJsZS0+ cHJpdi0+Zmlyc3Rfbl9zZXFzOwotKyAgICB9IGVsc2UgewotKyAgICAgICAgZGF0YV9maXJzdCA9 IHRhYmxlLT5kYXRhOwotKyAgICAgICAgbl9zZXFzID0gdGFibGUtPm5fc2VxczsKLSsgICAgfQot KyAgICBzZXEgPSBic2VhcmNoIChjb21wb3NlX2J1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAg ZGF0YV9maXJzdCwgbl9zZXFzLAotKyAgICAgICAgICAgICAgICAgICBzaXplb2YgKGd1aW50MTYp ICogcm93X3N0cmlkZSwKLSsgICAgICAgICAgICAgICAgICAgY29tcGFyZV9zZXEpOwotKwotKyAg ICBpZiAoc2VxID09IE5VTEwpCi0rICAgICAgICByZXR1cm4gRkFMU0U7Ci0rCi0rICAgIGd1aW50 MTYgKnByZXZfc2VxOwotKwotKyAgICAvKiBCYWNrIHVwIHRvIHRoZSBmaXJzdCBzZXF1ZW5jZSB0 aGF0IG1hdGNoZXMgdG8gbWFrZSBzdXJlCi0rICAgICAqIHdlIGZpbmQgdGhlIGV4YWN0IG1hdGNo IGlmIHRoZWlyIGlzIG9uZS4KLSsgICAgICovCi0rICAgIHdoaWxlIChzZXEgPiBkYXRhX2ZpcnN0 KSB7Ci0rICAgICAgICBwcmV2X3NlcSA9IHNlcSAtIHJvd19zdHJpZGU7Ci0rICAgICAgICBpZiAo Y29tcGFyZV9zZXEgKGNvbXBvc2VfYnVmZmVyLCBwcmV2X3NlcSkgIT0gMCkKLSsgICAgICAgICAg ICBicmVhazsKLSsgICAgICAgIHNlcSA9IHByZXZfc2VxOwotKyAgICB9Ci0rCi0rICAgIC8qIGNv bXBsZXRlIHNlcXVlbmNlICovCi0rICAgIGlmIChuX2NvbXBvc2UgPT0gdGFibGUtPm1heF9zZXFf bGVuIHx8IHNlcVtuX2NvbXBvc2VdID09IDApIHsKLSsgICAgICAgIGd1aW50MTYgKm5leHRfc2Vx OwotKyAgICAgICAgZ3VuaWNoYXIgdmFsdWUgPSAwOwotKyAgICAgICAgaW50IG51bSA9IDA7Ci0r ICAgICAgICBpbnQgaW5kZXggPSAwOwotKyAgICAgICAgZ2NoYXIgKm91dHB1dF9zdHIgPSBOVUxM OwotKyAgICAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0rCi0rICAgICAgICBpZiAoaXNfMzJi aXQpIHsKLSsgICAgICAgICAgICBudW0gPSBzZXFbdGFibGUtPm1heF9zZXFfbGVuXTsKLSsgICAg ICAgICAgICBpbmRleCA9IHNlcVt0YWJsZS0+bWF4X3NlcV9sZW4gKyAxXTsKLSsgICAgICAgICAg ICB2YWx1ZSA9ICB0YWJsZS0+cHJpdi0+ZGF0YV9zZWNvbmRbaW5kZXhdOwotKyAgICAgICAgfSBl bHNlIHsKLSsgICAgICAgICAgICB2YWx1ZSA9IHNlcVt0YWJsZS0+bWF4X3NlcV9sZW5dOwotKyAg ICAgICAgfQotKwotKyAgICAgICAgaWYgKGlzXzMyYml0KSB7Ci0rICAgICAgICAgICAgb3V0cHV0 X3N0ciA9IGdfdWNzNF90b191dGY4ICh0YWJsZS0+cHJpdi0+ZGF0YV9zZWNvbmQgKyBpbmRleCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSwgTlVMTCwgTlVM TCwgJmVycm9yKTsKLSsgICAgICAgICAgICBpZiAob3V0cHV0X3N0cikgewotKyAgICAgICAgICAg ICAgICBpZiAob3V0cHV0KQotKyAgICAgICAgICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChv dXRwdXQsIG91dHB1dF9zdHIpOwotKyAgICAgICAgICAgICAgICBnX2ZyZWUgKG91dHB1dF9zdHIp OwotKyAgICAgICAgICAgICAgICBpZiAoY29tcG9zZV9tYXRjaCkKLSsgICAgICAgICAgICAgICAg ICAgICpjb21wb3NlX21hdGNoID0gVFJVRTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAg ICAgICAgICAgICBnX3dhcm5pbmcgKCJGYWlsZWQgdG8gb3V0cHV0IG11bHRpcGxlIGNoYXJhY3Rl cnM6ICVzIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvci0+bWVzc2FnZSk7Ci0r ICAgICAgICAgICAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgICAgIH0KLSsg ICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgaWYgKG91dHB1dCkKLSsgICAgICAgICAgICAg ICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKG91dHB1dCwgdmFsdWUpOwotKyAgICAgICAgICAg IGlmIChjb21wb3NlX21hdGNoKQotKyAgICAgICAgICAgICAgICAqY29tcG9zZV9tYXRjaCA9IFRS VUU7Ci0rICAgICAgICB9Ci0rCi0rICAgICAgICAvKiBXZSBmb3VuZCBhIHRlbnRhdGl2ZSBtYXRj aC4gU2VlIGlmIHRoZXJlIGFyZSBhbnkgbG9uZ2VyCi0rICAgICAgICAgKiBzZXF1ZW5jZXMgY29u dGFpbmluZyB0aGlzIHN1YnNlcXVlbmNlCi0rICAgICAgICAgKi8KLSsgICAgICAgIG5leHRfc2Vx ID0gc2VxICsgcm93X3N0cmlkZTsKLSsgICAgICAgIGlmIChuZXh0X3NlcSA8IGRhdGFfZmlyc3Qg KyByb3dfc3RyaWRlICogbl9zZXFzKSB7Ci0rICAgICAgICAgICAgaWYgKGNvbXBhcmVfc2VxIChj b21wb3NlX2J1ZmZlciwgbmV4dF9zZXEpID09IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiBU UlVFOwotKyAgICAgICAgfQotKwotKyAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKQotKyAgICAg ICAgICAgICpjb21wb3NlX2ZpbmlzaCA9IFRSVUU7Ci0rICAgICAgICBjb21wb3NlX2J1ZmZlclsw XSA9IDA7Ci0rICAgIH0KLSsgICAgcmV0dXJuIFRSVUU7Ci0rfQotKwotKwotK3N0YXRpYyBpbnQK LStjb21wYXJlX3NlcV9pbmRleCAoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICp2YWx1ZSkK LSt7Ci0rICAgIGNvbnN0IGd1aW50MTYgKmtleXN5bXMgPSBrZXk7Ci0rICAgIGNvbnN0IGd1aW50 MTYgKnNlcSA9IHZhbHVlOwotKwotKyAgICBpZiAoa2V5c3ltc1swXSA8IHNlcVswXSkKLSsgICAg ICAgIHJldHVybiAtMTsKLSsgICAgZWxzZSBpZiAoa2V5c3ltc1swXSA+IHNlcVswXSkKLSsgICAg ICAgIHJldHVybiAxOwotKyAgICByZXR1cm4gMDsKLSt9Ci0rCi0rCi0rLyoqCi0rICogaWJ1c19j b21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2s6Ci0rICogQHRhYmxlOiBBIGNvbnN0IGBJQnVzQ29t cG9zZVRhYmxlQ29tcGFjdEV4YAotKyAqIEBjb21wb3NlX2J1ZmZlcjogVHlwZWQgY29tcG9zZSBz ZXF1ZW5jZSBidWZmZXIKLSsgKiBAbl9jb21wb3NlOiBUaGUgbGVuZ3RoIG9mIGBjb21wb3NlX2J1 ZmZlcmAKLSsgKiBAY29tcG9zZV9maW5pc2g6IElmICVUUlVFLCBgb3V0cHV0X2NoYXJzYCBzaG91 bGQgYmUgY29tbWl0dGVkCi0rICogQG91dHB1dF9jaGFyczogQW4gYXJyYXkgb2YgZ3VuaWNoYXIg b2Ygb3V0cHV0IGNvbXBvc2UgY2hhcmFjdGVycwotKyAqCi0rICogb3V0cHV0X2NoYXJzIGlzIGJl dHRlciB0byB1c2UgZ3VuaWNoYXIgaW5zdGVhZCBvZiBHU3RyaW5nIGJlY2F1c2UKLSsgKiBJQnVz Q29tcG9zZURhdGEtPnZhbHVlc1tdIGlzIHRoZSBndW5pY2hhciBhcnJheS4KLSsgKi8KLStnYm9v bGVhbgotK2lidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrIChjb25zdCBJQnVzQ29tcG9z ZVRhYmxlQ29tcGFjdEV4ICp0YWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQxNgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3Nl LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbgotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpj b21wb3NlX2ZpbmlzaCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VuaWNo YXIgICAgICAgICAgICAgICAgICAgICAgICoqb3V0cHV0X2NoYXJzKQotK3sKLSsgICAgZ2ludCBy b3dfc3RyaWRlOwotKyAgICBndWludDE2ICpzZXFfaW5kZXg7Ci0rICAgIGd1aW50MTYgKnNlcTsK LSsgICAgZ2ludCBpOwotKwotKyAgICBpZiAoY29tcG9zZV9maW5pc2gpCi0rICAgICAgICAqY29t cG9zZV9maW5pc2ggPSBGQUxTRTsKLSsgICAgaWYgKG91dHB1dF9jaGFycykKLSsgICAgICAgICpv dXRwdXRfY2hhcnMgPSBOVUxMOwotKwotKyAgICAvKiBXaWxsIG5ldmVyIG1hdGNoLCBpZiB0aGUg c2VxdWVuY2UgaW4gdGhlIGNvbXBvc2UgYnVmZmVyIGlzIGxvbmdlcgotKyAgICAgKiB0aGFuIHRo ZSBzZXF1ZW5jZXMgaW4gdGhlIHRhYmxlLiAgRnVydGhlciwgY29tcGFyZV9zZXEgKGtleSwgdmFs KQotKyAgICAgKiB3aWxsIG92ZXJydW4gdmFsIGlmIGtleSBpcyBsb25nZXIgdGhhbiB2YWwuICov Ci0rICAgIGlmIChuX2NvbXBvc2UgPiB0YWJsZS0+bWF4X3NlcV9sZW4pCi0rICAgICAgICByZXR1 cm4gRkFMU0U7Ci0rCi0rICAgIHNlcV9pbmRleCA9IGJzZWFyY2ggKGNvbXBvc2VfYnVmZmVyLAot KyAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+ZGF0YSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgdGFibGUtPm5faW5kZXhfc2l6ZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg c2l6ZW9mIChndWludDE2KSAqICB0YWJsZS0+bl9pbmRleF9zdHJpZGUsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbXBhcmVfc2VxX2luZGV4KTsKLSsKLSsgICAgaWYgKHNlcV9pbmRleCA9 PSBOVUxMKQotKyAgICAgICAgcmV0dXJuIEZBTFNFOwotKwotKyAgICBpZiAobl9jb21wb3NlID09 IDEpCi0rICAgICAgICByZXR1cm4gVFJVRTsKLSsKLSsgICAgc2VxID0gTlVMTDsKLSsKLSsgICAg aWYgKHRhYmxlLT5wcml2KSB7Ci0rICAgICAgICBmb3IgKGkgPSBuX2NvbXBvc2UgLSAxOyBpIDwg dGFibGUtPm1heF9zZXFfbGVuOyBpKyspIHsKLSsgICAgICAgICAgICByb3dfc3RyaWRlID0gaSAr IDI7Ci0rCi0rICAgICAgICAgICAgaWYgKHNlcV9pbmRleFtpICsgMV0gLSBzZXFfaW5kZXhbaV0g PiAwKSB7Ci0rICAgICAgICAgICAgICAgIHNlcSA9IGJzZWFyY2ggKGNvbXBvc2VfYnVmZmVyICsg MSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUtPmRhdGEgKyBzZXFfaW5k ZXhbaV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXFfaW5kZXhbaSArIDFd IC0gc2VxX2luZGV4W2ldKSAvIHJvd19zdHJpZGUsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZiAoZ3VpbnQxNikgKiByb3dfc3RyaWRlLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb21wYXJlX3NlcSk7Ci0rICAgICAgICAgICAgICAgIGlmIChzZXEpIHsK LSsgICAgICAgICAgICAgICAgICAgIGlmIChpID09IG5fY29tcG9zZSAtIDEpCi0rICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAg ICAgICAgICB9Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoIXNlcSkgewotKyAgICAgICAgICAg IHJldHVybiBGQUxTRTsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgaW50IGluZGV4 ID0gc2VxW3Jvd19zdHJpZGUgLSAyXTsKLSsgICAgICAgICAgICBpbnQgbGVuZ3RoID0gc2VxW3Jv d19zdHJpZGUgLSAxXTsKLSsgICAgICAgICAgICBpbnQgajsKLSsgICAgICAgICAgICBpZiAoY29t cG9zZV9maW5pc2gpCi0rICAgICAgICAgICAgICAgICpjb21wb3NlX2ZpbmlzaCA9IFRSVUU7Ci0r ICAgICAgICAgICAgaWYgKG91dHB1dF9jaGFycykgewotKyAgICAgICAgICAgICAgICAqb3V0cHV0 X2NoYXJzID0gZ19uZXcgKGd1bmljaGFyLCBsZW5ndGggKyAxKTsKLSsgICAgICAgICAgICAgICAg Zm9yIChqID0gMDsgaiA8IGxlbmd0aDsgaisrKSB7Ci0rICAgICAgICAgICAgICAgICAgICAoKm91 dHB1dF9jaGFycylbal0gPSB0YWJsZS0+cHJpdi0+ZGF0YTJbaW5kZXggKyBqXTsKLSsgICAgICAg ICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAoKm91dHB1dF9jaGFycylbbGVuZ3RoXSA9IDA7 Ci0rICAgICAgICAgICAgfQotKwotKyAgICAgICAgICAgIHJldHVybiBUUlVFOwotKyAgICAgICAg fQotKyAgICB9IGVsc2UgewotKyAgICAgICAgZm9yIChpID0gbl9jb21wb3NlIC0gMTsgaSA8IHRh YmxlLT5tYXhfc2VxX2xlbjsgaSsrKSB7Ci0rICAgICAgICAgICAgcm93X3N0cmlkZSA9IGkgKyAx OwotKwotKyAgICAgICAgICAgIGlmIChzZXFfaW5kZXhbaSArIDFdIC0gc2VxX2luZGV4W2ldID4g MCkgewotKyAgICAgICAgICAgICAgICBzZXEgPSBic2VhcmNoIChjb21wb3NlX2J1ZmZlciArIDEs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5kYXRhICsgc2VxX2luZGV4 W2ldLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VxX2luZGV4W2kgKyAxXSAt IHNlcV9pbmRleFtpXSkgLyByb3dfc3RyaWRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2YgKGd1aW50MTYpICogcm93X3N0cmlkZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29tcGFyZV9zZXEpOwotKwotKyAgICAgICAgICAgICAgICBpZiAoc2VxKSB7 Ci0rICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBuX2NvbXBvc2UgLSAxKQotKyAgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgICAgICAgICAgZWxzZQotKyAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBUUlVFOwotKyAgICAgICAgICAgICAgICB9Ci0rICAg ICAgICAgICAgfQotKyAgICAgICAgfQotKyAgICAgICAgaWYgKCFzZXEpIHsKLSsgICAgICAgICAg ICByZXR1cm4gRkFMU0U7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIGlmIChjb21w b3NlX2ZpbmlzaCkKLSsgICAgICAgICAgICAgICAgKmNvbXBvc2VfZmluaXNoID0gVFJVRTsKLSsg ICAgICAgICAgICBpZiAob3V0cHV0X2NoYXJzKSB7Ci0rICAgICAgICAgICAgICAgICpvdXRwdXRf Y2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIDIpOwotKyAgICAgICAgICAgICAgICAoKm91dHB1dF9j aGFycylbMF0gPSBzZXFbcm93X3N0cmlkZSAtIDFdOwotKyAgICAgICAgICAgICAgICAoKm91dHB1 dF9jaGFycylbMV0gPSAwOwotKyAgICAgICAgICAgIH0KLSsKLSsgICAgICAgICAgICByZXR1cm4g VFJVRTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAo KTsKLSt9Ci0rCi0rCi0rLyogQ2hlY2tzIGlmIGEga2V5c3ltIGlzIGEgZGVhZCBrZXkuIERlYWQg a2V5IGtleXN5bSB2YWx1ZXMgYXJlIGRlZmluZWQgaW4KLSsgKiAuLi9nZGsvZ2Rra2V5c3ltcy5o IGFuZCB0aGUgZmlyc3QgaXMgR0RLX0tFWV9kZWFkX2dyYXZlLiBBcyBYLk9yZyBpcyB1cGRhdGVk LAotKyAqIG1vcmUgZGVhZCBrZXlzIGFyZSBhZGRlZCBhbmQgd2UgbmVlZCB0byB1cGRhdGUgdGhl IHVwcGVyIGxpbWl0LgotKyAqIEN1cnJlbnRseSwgdGhlIHVwcGVyIGxpbWl0IGlzIEdES19LRVlf ZGVhZF9kYXNpYSsxLiBUaGUgKzEgaGFzIHRvIGRvIHdpdGgKLSsgKiBhIHRlbXBvcmFyeSBpc3N1 ZSBpbiB0aGUgWC5PcmcgaGVhZGVyIGZpbGVzLgotKyAqIEluIGZ1dHVyZSB2ZXJzaW9ucyBpdCB3 aWxsIGJlIGp1c3QgdGhlIGtleXN5bSAobm8gKzEpLgotKyAqLwotKyNkZWZpbmUgSVNfREVBRF9L RVkoaykgXAotKyAgICAgICgoaykgPj0gSUJVU19LRVlfZGVhZF9ncmF2ZSAmJiAoaykgPD0gSUJV U19LRVlfZGVhZF9ncmVlaykKLSsKLSsvKiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIGEgc2VxdWVu Y2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGFuZCB0cmllcyB0bwotKyAqIG5vcm1hbGl6ZSBpdCAo TkZDKS4gV2UgY2hlY2sgZm9yIHRoZSBjYXNlIHRoZSB0aGUgcmVzdWx0aW5nIHN0cmluZwotKyAq IGhhcyBsZW5ndGggMSAoc2luZ2xlIGNoYXJhY3RlcikuCi0rICogTkZDIG5vcm1hbGlzYXRpb24g bm9ybWFsbHkgcmVhcnJhbmdlcyBkaWFjcml0aWMgbWFya3MsIHVubGVzcyB0aGVzZQotKyAqIGJl bG9uZyB0byB0aGUgc2FtZSBDYW5vbmljYWwgQ29tYmluaW5nIENsYXNzLgotKyAqIElmIHRoZXkg YmVsb25nIHRvIHRoZSBzYW1lIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3MsIHdlIHByb2R1Y2Ug YWxsCi0rICogcGVybXV0YXRpb25zIG9mIHRoZSBkaWFjcml0aWMgbWFya3MsIHRoZW4gYXR0ZW1w dCB0byBub3JtYWxpemUuCi0rICovCi0rc3RhdGljIGdib29sZWFuCi0rY2hlY2tfbm9ybWFsaXpl X25mYyAoZ3VuaWNoYXIqIGNvbWJpbmF0aW9uX2J1ZmZlciwgZ2ludCBuX2NvbXBvc2UpCi0rewot KyAgICBndW5pY2hhciBjb21iaW5hdGlvbl9idWZmZXJfdGVtcFtJQlVTX01BWF9DT01QT1NFX0xF Tl07Ci0rICAgIGdjaGFyICpjb21iaW5hdGlvbl91dGY4X3RlbXAgPSBOVUxMOwotKyAgICBnY2hh ciAqbmZjX3RlbXAgPSBOVUxMOwotKyAgICBnaW50IG5fY29tYmluYXRpb25zOwotKyAgICBndW5p Y2hhciB0ZW1wX3N3YXA7Ci0rICAgIGdpbnQgaTsKLSsKLSsgICAgbl9jb21iaW5hdGlvbnMgPSAx OwotKwotKyAgICBmb3IgKGkgPSAxOyBpIDwgbl9jb21wb3NlOyBpKysgKQotKyAgICAgICAgbl9j b21iaW5hdGlvbnMgKj0gaTsKLSsKLSsgICAgLyogWG9yZyByZXVzZXMgZGVhZF90aWxkZSBmb3Ig dGhlIHBlcmlzcG9tZW5pIGRpYWNyaXRpYyBtYXJrLgotKyAgICAgKiBXZSBjaGVjayBpZiBiYXNl IGNoYXJhY3RlciBiZWxvbmdzIHRvIEdyZWVrIFVuaWNvZGUgYmxvY2ssCi0rICAgICAqIGFuZCBp ZiBzbywgd2UgcmVwbGFjZSB0aWxkZSB3aXRoIHBlcmlzcG9tZW5pLiAqLwotKyAgICBpZiAoY29t YmluYXRpb25fYnVmZmVyWzBdID49IDB4MzkwICYmIGNvbWJpbmF0aW9uX2J1ZmZlclswXSA8PSAw eDNGRikgewotKyAgICAgICAgZm9yIChpID0gMTsgaSA8IG5fY29tcG9zZTsgaSsrICkKLSsgICAg ICAgICAgICBpZiAoY29tYmluYXRpb25fYnVmZmVyW2ldID09IDB4MzAzKQotKyAgICAgICAgICAg ICAgICBjb21iaW5hdGlvbl9idWZmZXJbaV0gPSAweDM0MjsKLSsgICAgfQotKwotKyAgICBtZW1j cHkgKGNvbWJpbmF0aW9uX2J1ZmZlcl90ZW1wLAotKyAgICAgICAgICAgIGNvbWJpbmF0aW9uX2J1 ZmZlciwKLSsgICAgICAgICAgICBJQlVTX01BWF9DT01QT1NFX0xFTiAqIHNpemVvZiAoZ3VuaWNo YXIpICk7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBuX2NvbWJpbmF0aW9uczsgaSsrICkgewot KyAgICAgICAgZ191bmljb2RlX2Nhbm9uaWNhbF9vcmRlcmluZyAoY29tYmluYXRpb25fYnVmZmVy X3RlbXAsIG5fY29tcG9zZSk7Ci0rICAgICAgICBjb21iaW5hdGlvbl91dGY4X3RlbXAgPSBnX3Vj czRfdG9fdXRmOCAoY29tYmluYXRpb25fYnVmZmVyX3RlbXAsIC0xLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwsIE5VTEwpOwotKyAg ICAgICAgbmZjX3RlbXAgPSBnX3V0Zjhfbm9ybWFsaXplIChjb21iaW5hdGlvbl91dGY4X3RlbXAs IC0xLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX05PUk1BTElaRV9O RkMpOwotKwotKyAgICAgICAgaWYgKGdfdXRmOF9zdHJsZW4gKG5mY190ZW1wLCAtMSkgPT0gMSkg ewotKyAgICAgICAgICAgIG1lbWNweSAoY29tYmluYXRpb25fYnVmZmVyLAotKyAgICAgICAgICAg ICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyX3RlbXAsCi0rICAgICAgICAgICAgICAgICAgICBJ QlVTX01BWF9DT01QT1NFX0xFTiAqIHNpemVvZiAoZ3VuaWNoYXIpICk7Ci0rCi0rICAgICAgICAg ICAgZ19mcmVlIChjb21iaW5hdGlvbl91dGY4X3RlbXApOwotKyAgICAgICAgICAgIGdfZnJlZSAo bmZjX3RlbXApOwotKwotKyAgICAgICAgICAgIHJldHVybiBUUlVFOwotKyAgICAgICAgfQotKwot KyAgICAgICAgZ19mcmVlIChjb21iaW5hdGlvbl91dGY4X3RlbXApOwotKyAgICAgICAgZ19mcmVl IChuZmNfdGVtcCk7Ci0rCi0rICAgICAgICBpZiAobl9jb21wb3NlID4gMikgewotKyAgICAgICAg ICAgIGdpbnQgaiA9IGkgJSAobl9jb21wb3NlIC0gMSkgKyAxOwotKyAgICAgICAgICAgIGdpbnQg ayA9IChpKzEpICUgKG5fY29tcG9zZSAtIDEpICsgMTsKLSsgICAgICAgICAgICBpZiAoaiA+PSBJ QlVTX01BWF9DT01QT1NFX0xFTikgewotKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJqID49 IElCVVNfTUFYX0NPTVBPU0VfTEVOIGZvciAiIFwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAiY29tYmluYXRpb25fYnVmZmVyX3RlbXAiKTsKLSsgICAgICAgICAgICAgICAgYnJlYWs7Ci0r ICAgICAgICAgICAgfQotKyAgICAgICAgICAgIGlmIChrID49IElCVVNfTUFYX0NPTVBPU0VfTEVO KSB7Ci0rICAgICAgICAgICAgICAgIGdfd2FybmluZyAoImsgPj0gSUJVU19NQVhfQ09NUE9TRV9M RU4gZm9yICIgXAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21iaW5hdGlvbl9idWZm ZXJfdGVtcCIpOwotKyAgICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAg ICAgICAgICAgdGVtcF9zd2FwID0gY29tYmluYXRpb25fYnVmZmVyX3RlbXBbal07Ci0rICAgICAg ICAgICAgY29tYmluYXRpb25fYnVmZmVyX3RlbXBbal0gPSBjb21iaW5hdGlvbl9idWZmZXJfdGVt cFtrXTsKLSsgICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJfdGVtcFtrXSA9IHRlbXBfc3dh cDsKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICB9Ci0r ICAgIH0KLSsKLSsgICAgcmV0dXJuIEZBTFNFOwotK30KLSsKLSsKLStnYm9vbGVhbgotK2lidXNf Y2hlY2tfYWxnb3JpdGhtaWNhbGx5IChjb25zdCBndWludDE2ICpjb21wb3NlX2J1ZmZlciwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgbl9jb21wb3NlLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBndW5pY2hhciAgICAgICpvdXRwdXRfY2hhcikKLSsK LSt7Ci0rICAgIGdpbnQgaTsKLSsgICAgZ3VuaWNoYXIgY29tYmluYXRpb25fYnVmZmVyW0lCVVNf TUFYX0NPTVBPU0VfTEVOXTsKLSsgICAgZ2NoYXIgKmNvbWJpbmF0aW9uX3V0ZjgsICpuZmM7Ci0r Ci0rICAgIGlmIChvdXRwdXRfY2hhcikKLSsgICAgICAgICpvdXRwdXRfY2hhciA9IDA7Ci0rCi0r ICAgIGlmIChuX2NvbXBvc2UgPj0gSUJVU19NQVhfQ09NUE9TRV9MRU4pCi0rICAgICAgICByZXR1 cm4gRkFMU0U7Ci0rCi0rICAgIGZvciAoaSA9IDA7IGkgPCBuX2NvbXBvc2UgJiYgSVNfREVBRF9L RVkgKGNvbXBvc2VfYnVmZmVyW2ldKTsgaSsrKQotKyAgICAgICAgOwotKyAgICBpZiAoaSA9PSBu X2NvbXBvc2UpCi0rICAgICAgICByZXR1cm4gVFJVRTsKLSsKLSsgICAgaWYgKGkgPiAwICYmIGkg PT0gbl9jb21wb3NlIC0gMSkgewotKyAgICAgICAgY29tYmluYXRpb25fYnVmZmVyWzBdID0gaWJ1 c19rZXl2YWxfdG9fdW5pY29kZSAoY29tcG9zZV9idWZmZXJbaV0pOwotKyAgICAgICAgY29tYmlu YXRpb25fYnVmZmVyW25fY29tcG9zZV0gPSAwOwotKyAgICAgICAgaS0tOwotKyAgICAgICAgd2hp bGUgKGkgPj0gMCkgewotKyAgICAgICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltpKzFdID0gaWJ1 c19rZXlzeW1fdG9fdW5pY29kZSAoY29tcG9zZV9idWZmZXJbaV0sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFKTsKLSsg ICAgICAgICAgICBpZiAoIWNvbWJpbmF0aW9uX2J1ZmZlcltpKzFdKSB7Ci0rICAgICAgICAgICAg ICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltpKzFdID0KLSsgICAgICAgICAgICAgICAgICAgICAgICBp YnVzX2tleXZhbF90b191bmljb2RlIChjb21wb3NlX2J1ZmZlcltpXSk7Ci0rICAgICAgICAgICAg fQotKyAgICAgICAgICAgIGktLTsKLSsgICAgICAgIH0KLSsKLSsgICAgICAgIC8qIElmIHRoZSBi dWZmZXIgbm9ybWFsaXplcyB0byBhIHNpbmdsZSBjaGFyYWN0ZXIsCi0rICAgICAgICAgKiB0aGVu IG1vZGlmeSB0aGUgb3JkZXIgb2YgY29tYmluYXRpb25fYnVmZmVyIGFjY29yZGluZ2x5LCBpZgot KyAgICAgICAgICogbmVjZXNzYXJ5LCBhbmQgcmV0dXJuIFRSVUUuCi0rICAgICAgICAgKi8KLSsg ICAgICAgIGlmIChjaGVja19ub3JtYWxpemVfbmZjIChjb21iaW5hdGlvbl9idWZmZXIsIG5fY29t cG9zZSkpIHsKLSsgICAgICAgICAgICBjb21iaW5hdGlvbl91dGY4ID0gZ191Y3M0X3RvX3V0Zjgg KGNvbWJpbmF0aW9uX2J1ZmZlciwgLTEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLCBOVUxMKTsKLSsgICAgICAgICAgICBuZmMgPSBn X3V0Zjhfbm9ybWFsaXplIChjb21iaW5hdGlvbl91dGY4LCAtMSwgR19OT1JNQUxJWkVfTkZDKTsK LSsKLSsgICAgICAgICAgICBpZiAob3V0cHV0X2NoYXIpCi0rICAgICAgICAgICAgICAgICpvdXRw dXRfY2hhciA9IGdfdXRmOF9nZXRfY2hhciAobmZjKTsKLSsKLSsgICAgICAgICAgICBnX2ZyZWUg KGNvbWJpbmF0aW9uX3V0ZjgpOwotKyAgICAgICAgICAgIGdfZnJlZSAobmZjKTsKLSsKLSsgICAg ICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgICAgIH0KLSsgICAgfQotKwotKyAgICByZXR1cm4g RkFMU0U7Ci0rfQotKwotKwotK2d1bmljaGFyCi0raWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoZ3Vp bnQxNiAga2V5c3ltLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGNvbWJpbmlu ZykgewotKyNkZWZpbmUgQ0FTRShrZXlzeW1fc3VmZml4LCB1bmljb2RlKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIGNhc2UgSUJVU19LRVlfZGVhZF8jI2tl eXN5bV9zdWZmaXg6IHJldHVybiB1bmljb2RlCi0rI2RlZmluZSBDQVNFX0NPTUJJTkUoa2V5c3lt X3N1ZmZpeCwgY29tYmluZWRfdW5pY29kZSwgaXNvbGF0ZWRfdW5pY29kZSkgXAotKyAgICAgICAg Y2FzZSBJQlVTX0tFWV9kZWFkXyMja2V5c3ltX3N1ZmZpeDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICBpZiAoY29tYmluaW5nKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgIHJldHVybiBjb21i aW5lZF91bmljb2RlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAg ICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGlzb2xhdGVkX3VuaWNvZGUKLSsgICAg c3dpdGNoIChrZXlzeW0pIHsKLSsgICAgQ0FTRSAoYSwgMHgwMzA0MSk7Ci0rICAgIENBU0UgKEEs IDB4MDMwNDIpOwotKyAgICBDQVNFIChpLCAweDAzMDQzKTsKLSsgICAgQ0FTRSAoSSwgMHgwMzA0 NCk7Ci0rICAgIENBU0UgKHUsIDB4MDMwNDUpOwotKyAgICBDQVNFIChVLCAweDAzMDQ2KTsKLSsg ICAgQ0FTRSAoZSwgMHgwMzA0Nyk7Ci0rICAgIENBU0UgKEUsIDB4MDMwNDgpOwotKyAgICBDQVNF IChvLCAweDAzMDQ5KTsKLSsgICAgQ0FTRSAoTywgMHgwMzA0QSk7Ci0rICAgIENBU0UgICAgICAg ICAoYWJvdmVjb21tYSwgICAgICAgICAgICAgICAgICAgMHgwMzEzKTsKLSsgICAgQ0FTRV9DT01C SU5FIChhYm92ZWRvdCwgICAgICAgICAgICAgICAgICAgICAweDAzMDcsIDB4MDJEOSk7Ci0rICAg IENBU0UgICAgICAgICAoYWJvdmVyZXZlcnNlZGNvbW1hLCAgICAgICAgICAgMHgwMzE0KTsKLSsg ICAgQ0FTRV9DT01CSU5FIChhYm92ZXJpbmcsICAgICAgICAgICAgICAgICAgICAweDAzMEEsIDB4 MDJEQSk7Ci0rICAgIENBU0VfQ09NQklORSAoYWN1dGUsICAgICAgICAgICAgICAgICAgICAgICAg MHgwMzAxLCAweDAwQjQpOwotKyAgICBDQVNFICAgICAgICAgKGJlbG93YnJldmUsICAgICAgICAg ICAgICAgICAgIDB4MDMyRSk7Ci0rICAgIENBU0VfQ09NQklORSAoYmVsb3djaXJjdW1mbGV4LCAg ICAgICAgICAgICAgMHgwMzJELCAweEE3ODgpOwotKyAgICBDQVNFX0NPTUJJTkUgKGJlbG93Y29t bWEsICAgICAgICAgICAgICAgICAgIDB4MDMyNiwgMHgwMDJDKTsKLSsgICAgQ0FTRSAgICAgICAg IChiZWxvd2RpYWVyZXNpcywgICAgICAgICAgICAgICAweDAzMjQpOwotKyAgICBDQVNFX0NPTUJJ TkUgKGJlbG93ZG90LCAgICAgICAgICAgICAgICAgICAgIDB4MDMyMywgMHgwMDJFKTsKLSsgICAg Q0FTRV9DT01CSU5FIChiZWxvd21hY3JvbiwgICAgICAgICAgICAgICAgICAweDAzMzEsIDB4MDJD RCk7Ci0rICAgIENBU0VfQ09NQklORSAoYmVsb3dyaW5nLCAgICAgICAgICAgICAgICAgICAgMHgw MzBBLCAweDAyRjMpOwotKyAgICBDQVNFX0NPTUJJTkUgKGJlbG93dGlsZGUsICAgICAgICAgICAg ICAgICAgIDB4MDMzMCwgMHgwMkY3KTsKLSsgICAgQ0FTRV9DT01CSU5FIChicmV2ZSwgICAgICAg ICAgICAgICAgICAgICAgICAweDAzMDYsIDB4MDJEOCk7Ci0rICAgIENBU0VfQ09NQklORSAoY2Fw aXRhbF9zY2h3YSwgICAgICAgICAgICAgICAgMHgwMThGLCAweDA0RDgpOwotKyAgICBDQVNFX0NP TUJJTkUgKGNhcm9uLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwQywgMHgwMkM3KTsKLSsg ICAgQ0FTRV9DT01CSU5FIChjZWRpbGxhLCAgICAgICAgICAgICAgICAgICAgICAweDAzMjcsIDB4 MDBCOCk7Ci0rICAgIENBU0VfQ09NQklORSAoY2lyY3VtZmxleCwgICAgICAgICAgICAgICAgICAg MHgwMzAyLCAweDAwNUUpOwotKyAgICBDQVNFICAgICAgICAgKGN1cnJlbmN5LCAgICAgICAgICAg ICAgICAgICAgIDB4MDBBNCk7Ci0rICAgIC8vIElCVVNfS0VZX2RlYWRfZGFzaWEgPT0gSUJVU19L RVlfZGVhZF9hYm92ZXJldmVyc2VkY29tbWEKLSsgICAgQ0FTRV9DT01CSU5FIChkaWFlcmVzaXMs ICAgICAgICAgICAgICAgICAgICAweDAzMDgsIDB4MDBBOCk7Ci0rICAgIENBU0VfQ09NQklORSAo ZG91YmxlYWN1dGUsICAgICAgICAgICAgICAgICAgMHgwMzBCLCAweDAyREQpOwotKyAgICBDQVNF X0NPTUJJTkUgKGRvdWJsZWdyYXZlLCAgICAgICAgICAgICAgICAgIDB4MDMwRiwgMHgwMkY1KTsK LSsgICAgQ0FTRV9DT01CSU5FIChncmF2ZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDAs IDB4MDA2MCk7Ci0rICAgIENBU0UgICAgICAgICAoZ3JlZWssICAgICAgICAgICAgICAgICAgICAg ICAgMHgwM0JDKTsKLSsgICAgQ0FTRSAgICAgICAgIChob29rLCAgICAgICAgICAgICAgICAgICAg ICAgICAweDAzMDkpOwotKyAgICBDQVNFICAgICAgICAgKGhvcm4sICAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDMxQik7Ci0rICAgIENBU0UgICAgICAgICAoaW52ZXJ0ZWRicmV2ZSwgICAgICAg ICAgICAgICAgMHgwMzJGKTsKLSsgICAgQ0FTRV9DT01CSU5FIChpb3RhLCAgICAgICAgICAgICAg ICAgICAgICAgICAweDAzNDUsIDB4MDM3QSk7Ci0rICAgIENBU0VfQ09NQklORSAobWFjcm9uLCAg ICAgICAgICAgICAgICAgICAgICAgMHgwMzA0LCAweDAwQUYpOwotKyAgICBDQVNFX0NPTUJJTkUg KG9nb25laywgICAgICAgICAgICAgICAgICAgICAgIDB4MDMyOCwgMHgwMkRCKTsKLSsgICAgLy8g SUJVU19LRVlfZGVhZF9wZXJpc3BvbWVuaSA9PSBJQlVTX0tFWV9kZWFkX3RpbGRlCi0rICAgIC8v IElCVVNfS0VZX2RlYWRfcHNpbGkgPT0gSUJVU19LRVlfZGVhZF9hYm92ZWNvbW1hCi0rICAgIENB U0VfQ09NQklORSAoc2VtaXZvaWNlZF9zb3VuZCwgICAgICAgICAgICAgMHgzMDlBLCAweDMwOUMp OwotKyAgICBDQVNFX0NPTUJJTkUgKHNtYWxsX3NjaHdhLCAgICAgICAgICAgICAgICAgIDB4MUQ0 QSwgMHgwNEQ5KTsKLSsgICAgQ0FTRSAgICAgICAgIChzdHJva2UsICAgICAgICAgICAgICAgICAg ICAgICAweDAwMkYpOwotKyAgICBDQVNFX0NPTUJJTkUgKHRpbGRlLCAgICAgICAgICAgICAgICAg ICAgICAgIDB4MDMwMywgMHgwMDdFKTsKLSsgICAgQ0FTRV9DT01CSU5FICh2b2ljZWRfc291bmQs ICAgICAgICAgICAgICAgICAweDMwOTksIDB4MzA5Qik7Ci0rICAgIGNhc2UgSUJVU19LRVlfTXVs dGlfa2V5OgotKyAgICAgICAgcmV0dXJuIDB4MjM4NDsKLSsgICAgZGVmYXVsdDo7Ci0rICAgIH0K LSsgICAgcmV0dXJuIDB4MDsKLSsjdW5kZWYgQ0FTRQotKyN1bmRlZiBDQVNFX0NPTUJJTkUKLSt9 Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYyBiL3NyYy9pYnVzZW5naW5lc2lt cGxlLmMKLWluZGV4IDZkYmMzOWM3Li40NjQ0NjIwYiAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5n aW5lc2ltcGxlLmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLUBAIC05MSwxMSArOTEs NiBAQCBzdHJ1Y3QgX0lCdXNFbmdpbmVTaW1wbGVQcml2YXRlIHsKLSAgICAgZ2Jvb2xlYW4gICAg ICAgICAgICBsb29rdXBfdGFibGVfdmlzaWJsZTsKLSB9OwotIAotLXN0cnVjdCBfSUJ1c0NvbXBv c2VUYWJsZUNvbXBhY3RQcml2YXRlCi0tewotLSAgICBjb25zdCBndWludDMyICpkYXRhMjsKLS19 OwotLQotIC8qIEZyb20gdGhlIHZhbHVlcyBiZWxvdywgdGhlIHZhbHVlIDMwIG1lYW5zIHRoZSBu dW1iZXIgb2YgZGlmZmVyZW50IGZpcnN0IGtleXN5bXMKLSAgKiB0aGF0IGV4aXN0IGluIHRoZSBD b21wb3NlIGZpbGUgKGZyb20gWG9yZykuIFdoZW4gcnVubmluZyBjb21wb3NlLXBhcnNlLnB5IHdp dGhvdXQKLSAgKiBwYXJhbWV0ZXJzLCB5b3UgZ2V0IHRoZSBjb3VudCB0aGF0IHlvdSBjYW4gcHV0 IGhlcmUuIE5lZWRlZCB3aGVuIHVwZGF0aW5nIHRoZQotQEAgLTEyNCw2ICsxMTksNyBAQCBjb25z dCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4IGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0XzMy Yml0ID0gewotIH07Ci0gCi0gZ3VpbnQgQ09NUE9TRV9CVUZGRVJfU0laRSA9IDIwOwotK0dfTE9D S19ERUZJTkVfU1RBVElDIChnbG9iYWxfdGFibGVzKTsKLSBzdGF0aWMgR1NMaXN0ICpnbG9iYWxf dGFibGVzOwotIAotIC8qIGZ1bmN0aW9ucyBwcm90b3R5cGUgKi8KLUBAIC0yNjEsNzQgKzI1Nyw2 IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoSUJ1c0VuZ2luZVNpbXBsZSAqc2lt cGxlLAotICAgICAgICAgICAgIGlidXNfdGV4dF9uZXdfZnJvbV91bmljaGFyIChjaCkpOwotIH0K LSAKLS1zdGF0aWMgZ3VuaWNoYXIKLS1pYnVzX2tleXN5bV90b191bmljb2RlIChndWludDE2ICBr ZXlzeW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gY29tYmluaW5nKSB7Ci0t I2RlZmluZSBDQVNFKGtleXN5bV9zdWZmaXgsIHVuaWNvZGUpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAotLSAgICAgICAgY2FzZSBJQlVTX0tFWV9kZWFkXyMja2V5c3ltX3N1 ZmZpeDogcmV0dXJuIHVuaWNvZGUKLS0jZGVmaW5lIENBU0VfQ09NQklORShrZXlzeW1fc3VmZml4 LCBjb21iaW5lZF91bmljb2RlLCBpc29sYXRlZF91bmljb2RlKSBcCi0tICAgICAgICBjYXNlIElC VVNfS0VZX2RlYWRfIyNrZXlzeW1fc3VmZml4OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLSAgICAgICAgICAgIGlmIChjb21iaW5pbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVkX3Vu aWNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgZWxz ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotLSAgICAgICAgICAgICAgICByZXR1cm4gaXNvbGF0ZWRfdW5pY29kZQotLSAgICBzd2l0Y2gg KGtleXN5bSkgewotLSAgICBDQVNFIChhLCAweDAzMDQxKTsKLS0gICAgQ0FTRSAoQSwgMHgwMzA0 Mik7Ci0tICAgIENBU0UgKGksIDB4MDMwNDMpOwotLSAgICBDQVNFIChJLCAweDAzMDQ0KTsKLS0g ICAgQ0FTRSAodSwgMHgwMzA0NSk7Ci0tICAgIENBU0UgKFUsIDB4MDMwNDYpOwotLSAgICBDQVNF IChlLCAweDAzMDQ3KTsKLS0gICAgQ0FTRSAoRSwgMHgwMzA0OCk7Ci0tICAgIENBU0UgKG8sIDB4 MDMwNDkpOwotLSAgICBDQVNFIChPLCAweDAzMDRBKTsKLS0gICAgQ0FTRSAgICAgICAgIChhYm92 ZWNvbW1hLCAgICAgICAgICAgICAgICAgICAweDAzMTMpOwotLSAgICBDQVNFX0NPTUJJTkUgKGFi b3ZlZG90LCAgICAgICAgICAgICAgICAgICAgIDB4MDMwNywgMHgwMkQ5KTsKLS0gICAgQ0FTRSAg ICAgICAgIChhYm92ZXJldmVyc2VkY29tbWEsICAgICAgICAgICAweDAzMTQpOwotLSAgICBDQVNF X0NPTUJJTkUgKGFib3ZlcmluZywgICAgICAgICAgICAgICAgICAgIDB4MDMwQSwgMHgwMkRBKTsK LS0gICAgQ0FTRV9DT01CSU5FIChhY3V0ZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDEs IDB4MDBCNCk7Ci0tICAgIENBU0UgICAgICAgICAoYmVsb3dicmV2ZSwgICAgICAgICAgICAgICAg ICAgMHgwMzJFKTsKLS0gICAgQ0FTRV9DT01CSU5FIChiZWxvd2NpcmN1bWZsZXgsICAgICAgICAg ICAgICAweDAzMkQsIDB4QTc4OCk7Ci0tICAgIENBU0VfQ09NQklORSAoYmVsb3djb21tYSwgICAg ICAgICAgICAgICAgICAgMHgwMzI2LCAweDAwMkMpOwotLSAgICBDQVNFICAgICAgICAgKGJlbG93 ZGlhZXJlc2lzLCAgICAgICAgICAgICAgIDB4MDMyNCk7Ci0tICAgIENBU0VfQ09NQklORSAoYmVs b3dkb3QsICAgICAgICAgICAgICAgICAgICAgMHgwMzIzLCAweDAwMkUpOwotLSAgICBDQVNFX0NP TUJJTkUgKGJlbG93bWFjcm9uLCAgICAgICAgICAgICAgICAgIDB4MDMzMSwgMHgwMkNEKTsKLS0g ICAgQ0FTRV9DT01CSU5FIChiZWxvd3JpbmcsICAgICAgICAgICAgICAgICAgICAweDAzMEEsIDB4 MDJGMyk7Ci0tICAgIENBU0VfQ09NQklORSAoYmVsb3d0aWxkZSwgICAgICAgICAgICAgICAgICAg MHgwMzMwLCAweDAyRjcpOwotLSAgICBDQVNFX0NPTUJJTkUgKGJyZXZlLCAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDMwNiwgMHgwMkQ4KTsKLS0gICAgQ0FTRV9DT01CSU5FIChjYXBpdGFsX3Nj aHdhLCAgICAgICAgICAgICAgICAweDAxOEYsIDB4MDREOCk7Ci0tICAgIENBU0VfQ09NQklORSAo Y2Fyb24sICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzBDLCAweDAyQzcpOwotLSAgICBDQVNF X0NPTUJJTkUgKGNlZGlsbGEsICAgICAgICAgICAgICAgICAgICAgIDB4MDMyNywgMHgwMEI4KTsK LS0gICAgQ0FTRV9DT01CSU5FIChjaXJjdW1mbGV4LCAgICAgICAgICAgICAgICAgICAweDAzMDIs IDB4MDA1RSk7Ci0tICAgIENBU0UgICAgICAgICAoY3VycmVuY3ksICAgICAgICAgICAgICAgICAg ICAgMHgwMEE0KTsKLS0gICAgLy8gSUJVU19LRVlfZGVhZF9kYXNpYSA9PSBJQlVTX0tFWV9kZWFk X2Fib3ZlcmV2ZXJzZWRjb21tYQotLSAgICBDQVNFX0NPTUJJTkUgKGRpYWVyZXNpcywgICAgICAg ICAgICAgICAgICAgIDB4MDMwOCwgMHgwMEE4KTsKLS0gICAgQ0FTRV9DT01CSU5FIChkb3VibGVh Y3V0ZSwgICAgICAgICAgICAgICAgICAweDAzMEIsIDB4MDJERCk7Ci0tICAgIENBU0VfQ09NQklO RSAoZG91YmxlZ3JhdmUsICAgICAgICAgICAgICAgICAgMHgwMzBGLCAweDAyRjUpOwotLSAgICBD QVNFX0NPTUJJTkUgKGdyYXZlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMCwgMHgwMDYw KTsKLS0gICAgQ0FTRSAgICAgICAgIChncmVlaywgICAgICAgICAgICAgICAgICAgICAgICAweDAz QkMpOwotLSAgICBDQVNFICAgICAgICAgKGhvb2ssICAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDMwOSk7Ci0tICAgIENBU0UgICAgICAgICAoaG9ybiwgICAgICAgICAgICAgICAgICAgICAgICAg MHgwMzFCKTsKLS0gICAgQ0FTRSAgICAgICAgIChpbnZlcnRlZGJyZXZlLCAgICAgICAgICAgICAg ICAweDAzMkYpOwotLSAgICBDQVNFX0NPTUJJTkUgKGlvdGEsICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDM0NSwgMHgwMzdBKTsKLS0gICAgQ0FTRV9DT01CSU5FIChtYWNyb24sICAgICAgICAg ICAgICAgICAgICAgICAweDAzMDQsIDB4MDBBRik7Ci0tICAgIENBU0VfQ09NQklORSAob2dvbmVr LCAgICAgICAgICAgICAgICAgICAgICAgMHgwMzI4LCAweDAyREIpOwotLSAgICAvLyBJQlVTX0tF WV9kZWFkX3BlcmlzcG9tZW5pID09IElCVVNfS0VZX2RlYWRfdGlsZGUKLS0gICAgLy8gSUJVU19L RVlfZGVhZF9wc2lsaSA9PSBJQlVTX0tFWV9kZWFkX2Fib3ZlY29tbWEKLS0gICAgQ0FTRV9DT01C SU5FIChzZW1pdm9pY2VkX3NvdW5kLCAgICAgICAgICAgICAweDMwOUEsIDB4MzA5Qyk7Ci0tICAg IENBU0VfQ09NQklORSAoc21hbGxfc2Nod2EsICAgICAgICAgICAgICAgICAgMHgxRDRBLCAweDA0 RDkpOwotLSAgICBDQVNFICAgICAgICAgKHN0cm9rZSwgICAgICAgICAgICAgICAgICAgICAgIDB4 MDAyRik7Ci0tICAgIENBU0VfQ09NQklORSAodGlsZGUsICAgICAgICAgICAgICAgICAgICAgICAg MHgwMzAzLCAweDAwN0UpOwotLSAgICBDQVNFX0NPTUJJTkUgKHZvaWNlZF9zb3VuZCwgICAgICAg ICAgICAgICAgIDB4MzA5OSwgMHgzMDlCKTsKLS0gICAgY2FzZSBJQlVTX0tFWV9NdWx0aV9rZXk6 Ci0tICAgICAgICByZXR1cm4gMHgyMzg0OwotLSAgICBkZWZhdWx0OjsKLS0gICAgfQotLSAgICBy ZXR1cm4gMHgwOwotLSN1bmRlZiBDQVNFCi0tI3VuZGVmIENBU0VfQ09NQklORQotLX0KLSAKLSBz dGF0aWMgdm9pZAotIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfc3RyIChJQnVzRW5naW5lU2lt cGxlICpzaW1wbGUsCi1AQCAtNjA3LDQxNSArNTM1LDYgQEAgY2hlY2tfZW1vamlfdGFibGUgKElC dXNFbmdpbmVTaW1wbGUgICAgICAgKnNpbXBsZSwKLSAgICAgcmV0dXJuIEZBTFNFOwotIH0KLSAK LS1zdGF0aWMgaW50Ci0tY29tcGFyZV9zZXFfaW5kZXggKGNvbnN0IHZvaWQgKmtleSwgY29uc3Qg dm9pZCAqdmFsdWUpCi0tewotLSAgICBjb25zdCBndWludDE2ICprZXlzeW1zID0ga2V5OwotLSAg ICBjb25zdCBndWludDE2ICpzZXEgPSB2YWx1ZTsKLS0KLS0gICAgaWYgKGtleXN5bXNbMF0gPCBz ZXFbMF0pCi0tICAgICAgICByZXR1cm4gLTE7Ci0tICAgIGVsc2UgaWYgKGtleXN5bXNbMF0gPiBz ZXFbMF0pCi0tICAgICAgICByZXR1cm4gMTsKLS0gICAgcmV0dXJuIDA7Ci0tfQotLQotLXN0YXRp YyBpbnQKLS1jb21wYXJlX3NlcSAoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICp2YWx1ZSkK LS17Ci0tICAgIGludCBpID0gMDsKLS0gICAgY29uc3QgZ3VpbnQxNiAqa2V5c3ltcyA9IGtleTsK LS0gICAgY29uc3QgZ3VpbnQxNiAqc2VxID0gdmFsdWU7Ci0tCi0tICAgIHdoaWxlIChrZXlzeW1z W2ldKSB7Ci0tICAgICAgICBpZiAoa2V5c3ltc1tpXSA8IHNlcVtpXSkKLS0gICAgICAgICAgICBy ZXR1cm4gLTE7Ci0tICAgICAgICBlbHNlIGlmIChrZXlzeW1zW2ldID4gc2VxW2ldKQotLSAgICAg ICAgICAgIHJldHVybiAxOwotLQotLSAgICAgICAgaSsrOwotLSAgICB9Ci0tCi0tICAgIHJldHVy biAwOwotLX0KLS0KLS0KLS1zdGF0aWMgZ2Jvb2xlYW4KLS1jaGVja190YWJsZSAoSUJ1c0VuZ2lu ZVNpbXBsZSAgICAgICAgICpzaW1wbGUsCi0tICAgICAgICAgICAgIGNvbnN0IElCdXNDb21wb3Nl VGFibGVFeCAqdGFibGUsCi0tICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgICAg bl9jb21wb3NlLAotLSAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgIGlzXzMy Yml0KQotLXsKLS0gICAgSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUgKnByaXYgPSBzaW1wbGUtPnBy aXY7Ci0tICAgIGdpbnQgcm93X3N0cmlkZSA9IHRhYmxlLT5tYXhfc2VxX2xlbiArIDI7Ci0tICAg IGd1aW50MTYgKmRhdGFfZmlyc3Q7Ci0tICAgIGludCBuX3NlcXM7Ci0tICAgIGd1aW50MTYgKnNl cTsKLS0KLS0gICAgZ19hc3NlcnQgKElCVVNfSVNfRU5HSU5FX1NJTVBMRSAoc2ltcGxlKSk7Ci0t ICAgIENIRUNLX0NPTVBPU0VfQlVGRkVSX0xFTkdUSCAobl9jb21wb3NlKTsKLS0KLS0gICAgaWYg KG5fY29tcG9zZSA+IHRhYmxlLT5tYXhfc2VxX2xlbikKLS0gICAgICAgIHJldHVybiBGQUxTRTsK LS0KLS0gICAgaWYgKGlzXzMyYml0KSB7Ci0tICAgICAgICBpZiAoIXRhYmxlLT5wcml2KQotLSAg ICAgICAgICAgIHJldHVybiBGQUxTRTsKLS0gICAgICAgIGRhdGFfZmlyc3QgPSB0YWJsZS0+cHJp di0+ZGF0YV9maXJzdDsKLS0gICAgICAgIG5fc2VxcyA9IHRhYmxlLT5wcml2LT5maXJzdF9uX3Nl cXM7Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgICBkYXRhX2ZpcnN0ID0gdGFibGUtPmRhdGE7Ci0t ICAgICAgICBuX3NlcXMgPSB0YWJsZS0+bl9zZXFzOwotLSAgICB9Ci0tICAgIHNlcSA9IGJzZWFy Y2ggKHByaXYtPmNvbXBvc2VfYnVmZmVyLAotLSAgICAgICAgICAgICAgICAgICBkYXRhX2ZpcnN0 LCBuX3NlcXMsCi0tICAgICAgICAgICAgICAgICAgIHNpemVvZiAoZ3VpbnQxNikgKiByb3dfc3Ry aWRlLAotLSAgICAgICAgICAgICAgICAgICBjb21wYXJlX3NlcSk7Ci0tCi0tICAgIGlmIChzZXEg PT0gTlVMTCkKLS0gICAgICAgIHJldHVybiBGQUxTRTsKLS0KLS0gICAgZ3VpbnQxNiAqcHJldl9z ZXE7Ci0tCi0tICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IDA7Ci0tICAgIHByaXYtPnRlbnRh dGl2ZV9tYXRjaF9sZW4gPSAwOwotLSAgICAvKiBCYWNrIHVwIHRvIHRoZSBmaXJzdCBzZXF1ZW5j ZSB0aGF0IG1hdGNoZXMgdG8gbWFrZSBzdXJlCi0tICAgICAqIHdlIGZpbmQgdGhlIGV4YWN0IG1h dGNoIGlmIHRoZWlyIGlzIG9uZS4KLS0gICAgICovCi0tICAgIHdoaWxlIChzZXEgPiBkYXRhX2Zp cnN0KSB7Ci0tICAgICAgICBwcmV2X3NlcSA9IHNlcSAtIHJvd19zdHJpZGU7Ci0tICAgICAgICBp ZiAoY29tcGFyZV9zZXEgKHByaXYtPmNvbXBvc2VfYnVmZmVyLCBwcmV2X3NlcSkgIT0gMCkgewot LSAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgfQotLSAgICAgICAgc2VxID0gcHJldl9zZXE7 Ci0tICAgIH0KLS0KLS0gICAgLyogY29tcGxldGUgc2VxdWVuY2UgKi8KLS0gICAgaWYgKG5fY29t cG9zZSA9PSB0YWJsZS0+bWF4X3NlcV9sZW4gfHwgc2VxW25fY29tcG9zZV0gPT0gMCkgewotLSAg ICAgICAgZ3VpbnQxNiAqbmV4dF9zZXE7Ci0tICAgICAgICBndW5pY2hhciB2YWx1ZSA9IDA7Ci0t ICAgICAgICBpbnQgbnVtID0gMDsKLS0gICAgICAgIGludCBpbmRleCA9IDA7Ci0tICAgICAgICBn Y2hhciAqb3V0cHV0X3N0ciA9IE5VTEw7Ci0tICAgICAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsK LS0KLS0gICAgICAgIGlmIChpc18zMmJpdCkgewotLSAgICAgICAgICAgIG51bSA9IHNlcVt0YWJs ZS0+bWF4X3NlcV9sZW5dOwotLSAgICAgICAgICAgIGluZGV4ID0gc2VxW3RhYmxlLT5tYXhfc2Vx X2xlbiArIDFdOwotLSAgICAgICAgICAgIHZhbHVlID0gIHRhYmxlLT5wcml2LT5kYXRhX3NlY29u ZFtpbmRleF07Ci0tICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIHZhbHVlID0gc2VxW3Rh YmxlLT5tYXhfc2VxX2xlbl07Ci0tICAgICAgICB9Ci0tCi0tICAgICAgICAvKiBXZSBmb3VuZCBh IHRlbnRhdGl2ZSBtYXRjaC4gU2VlIGlmIHRoZXJlIGFyZSBhbnkgbG9uZ2VyCi0tICAgICAgICAg KiBzZXF1ZW5jZXMgY29udGFpbmluZyB0aGlzIHN1YnNlcXVlbmNlCi0tICAgICAgICAgKi8KLS0g ICAgICAgIG5leHRfc2VxID0gc2VxICsgcm93X3N0cmlkZTsKLS0gICAgICAgIGlmIChuZXh0X3Nl cSA8IGRhdGFfZmlyc3QgKyByb3dfc3RyaWRlICogbl9zZXFzKSB7Ci0tICAgICAgICAgICAgaWYg KGNvbXBhcmVfc2VxIChwcml2LT5jb21wb3NlX2J1ZmZlciwgbmV4dF9zZXEpID09IDApIHsKLS0g ICAgICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gdmFsdWU7Ci0tICAgICAgICAg ICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSBuX2NvbXBvc2U7Ci0tCi0tICAgICAg ICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUp OwotLQotLSAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKLS0gICAgICAgICAgICB9Ci0tICAg ICAgICB9Ci0tCi0tICAgICAgICBpZiAoaXNfMzJiaXQpIHsKLS0gICAgICAgICAgICBvdXRwdXRf c3RyID0gZ191Y3M0X3RvX3V0ZjggKHRhYmxlLT5wcml2LT5kYXRhX3NlY29uZCArIGluZGV4LAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtLCBOVUxMLCBOVUxM LCAmZXJyb3IpOwotLSAgICAgICAgICAgIGlmIChvdXRwdXRfc3RyKSB7Ci0tICAgICAgICAgICAg ICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfc3RyKHNpbXBsZSwgb3V0cHV0X3N0cik7Ci0t ICAgICAgICAgICAgICAgIGdfZnJlZSAob3V0cHV0X3N0cik7Ci0tICAgICAgICAgICAgfSBlbHNl IHsKLS0gICAgICAgICAgICAgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIG91dHB1dCBtdWx0aXBs ZSBjaGFyYWN0ZXJzOiAlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3ItPm1l c3NhZ2UpOwotLSAgICAgICAgICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLS0gICAgICAg ICAgICB9Ci0tICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBs ZV9jb21taXRfY2hhciAoc2ltcGxlLCB2YWx1ZSk7Ci0tICAgICAgICB9Ci0tICAgICAgICBwcml2 LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7Ci0tICAgIH0KLS0gICAgaWJ1c19lbmdpbmVfc2ltcGxl X3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0tICAgIHJldHVybiBUUlVFOwotLX0KLS0K LS1nYm9vbGVhbgotLWlidXNfY2hlY2tfY29tcGFjdF90YWJsZSAoY29uc3QgSUJ1c0NvbXBvc2VU YWJsZUNvbXBhY3RFeCAqdGFibGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDE2 ICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlciwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICAg ICAgKmNvbXBvc2VfZmluaXNoLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VuaWNoYXIg ICAgICAgICAgICAgICAgICAgICAgICoqb3V0cHV0X2NoYXJzKQotLXsKLS0gICAgZ2ludCByb3df c3RyaWRlOwotLSAgICBndWludDE2ICpzZXFfaW5kZXg7Ci0tICAgIGd1aW50MTYgKnNlcTsKLS0g ICAgZ2ludCBpOwotLQotLSAgICBpZiAoY29tcG9zZV9maW5pc2gpCi0tICAgICAgICAqY29tcG9z ZV9maW5pc2ggPSBGQUxTRTsKLS0gICAgaWYgKG91dHB1dF9jaGFycykKLS0gICAgICAgICpvdXRw dXRfY2hhcnMgPSBOVUxMOwotLQotLSAgICBDSEVDS19DT01QT1NFX0JVRkZFUl9MRU5HVEggKG5f Y29tcG9zZSk7Ci0tCi0tICAgIC8qIFdpbGwgbmV2ZXIgbWF0Y2gsIGlmIHRoZSBzZXF1ZW5jZSBp biB0aGUgY29tcG9zZSBidWZmZXIgaXMgbG9uZ2VyCi0tICAgICAqIHRoYW4gdGhlIHNlcXVlbmNl cyBpbiB0aGUgdGFibGUuICBGdXJ0aGVyLCBjb21wYXJlX3NlcSAoa2V5LCB2YWwpCi0tICAgICAq IHdpbGwgb3ZlcnJ1biB2YWwgaWYga2V5IGlzIGxvbmdlciB0aGFuIHZhbC4gKi8KLS0gICAgaWYg KG5fY29tcG9zZSA+IHRhYmxlLT5tYXhfc2VxX2xlbikKLS0gICAgICAgIHJldHVybiBGQUxTRTsK LS0KLS0gICAgLy8gZ19kZWJ1ZyAoImNoZWNrX2NvbXBhY3RfdGFibGUobl9jb21wb3NlPSVkKSBb JTA0eCwgJTA0eCwgJTA0eCwgJTA0eF0iLAotLSAgICAvLyAgICAgICAgICBuX2NvbXBvc2UsCi0t ICAgIC8vICAgICAgICAgIGNvbXBvc2VfYnVmZmVyWzBdLAotLSAgICAvLyAgICAgICAgICBjb21w b3NlX2J1ZmZlclsxXSwKLS0gICAgLy8gICAgICAgICAgY29tcG9zZV9idWZmZXJbMl0sCi0tICAg IC8vICAgICAgICAgIGNvbXBvc2VfYnVmZmVyWzNdKTsKLS0KLS0gICAgc2VxX2luZGV4ID0gYnNl YXJjaCAoY29tcG9zZV9idWZmZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5k YXRhLAotLSAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+bl9pbmRleF9zaXplLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKGd1aW50MTYpICogIHRhYmxlLT5uX2luZGV4 X3N0cmlkZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgY29tcGFyZV9zZXFfaW5kZXgpOwot LQotLSAgICBpZiAoc2VxX2luZGV4ID09IE5VTEwpIHsKLS0gICAgICAgIC8vIGdfZGVidWcgKCJj b21wYWN0OiBub1xuIik7Ci0tICAgICAgICByZXR1cm4gRkFMU0U7Ci0tICAgIH0KLS0KLS0gICAg aWYgKG5fY29tcG9zZSA9PSAxKSB7Ci0tICAgICAgICAvLyBnX2RlYnVnICgiY29tcGFjdDogeWVz XG4iKTsKLS0gICAgICAgIHJldHVybiBUUlVFOwotLSAgICB9Ci0tCi0tICAgIC8vIGdfZGVidWcg KCJjb21wYWN0OiAlMDR4ICIsICpzZXFfaW5kZXgpOwotLSAgICBzZXEgPSBOVUxMOwotLQotLSAg ICBpZiAodGFibGUtPnByaXYpIHsKLS0gICAgICAgIGZvciAoaSA9IG5fY29tcG9zZSAtIDE7IGkg PCB0YWJsZS0+bWF4X3NlcV9sZW47IGkrKykgewotLSAgICAgICAgICAgIHJvd19zdHJpZGUgPSBp ICsgMjsKLS0KLS0gICAgICAgICAgICBpZiAoc2VxX2luZGV4W2kgKyAxXSAtIHNlcV9pbmRleFtp XSA+IDApIHsKLS0gICAgICAgICAgICAgICAgc2VxID0gYnNlYXJjaCAoY29tcG9zZV9idWZmZXIg KyAxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS0+ZGF0YSArIHNlcV9p bmRleFtpXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlcV9pbmRleFtpICsg MV0gLSBzZXFfaW5kZXhbaV0pIC8gcm93X3N0cmlkZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2l6ZW9mIChndWludDE2KSAqIHJvd19zdHJpZGUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbXBhcmVfc2VxKTsKLS0gICAgICAgICAgICAgICAgaWYgKHNlcSkg ewotLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbl9jb21wb3NlIC0gMSkKLS0gICAgICAg ICAgICAgICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gVFJVRTsKLS0gICAgICAgICAgICAgICAgfQotLSAg ICAgICAgICAgIH0KLS0gICAgICAgIH0KLS0gICAgICAgIGlmICghc2VxKSB7Ci0tICAgICAgICAg ICAgcmV0dXJuIEZBTFNFOwotLSAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBpbnQgaW5k ZXggPSBzZXFbcm93X3N0cmlkZSAtIDJdOwotLSAgICAgICAgICAgIGludCBsZW5ndGggPSBzZXFb cm93X3N0cmlkZSAtIDFdOwotLSAgICAgICAgICAgIGludCBqOwotLSAgICAgICAgICAgIGlmIChj b21wb3NlX2ZpbmlzaCkKLS0gICAgICAgICAgICAgICAgKmNvbXBvc2VfZmluaXNoID0gVFJVRTsK LS0gICAgICAgICAgICBpZiAob3V0cHV0X2NoYXJzKSB7Ci0tICAgICAgICAgICAgICAgICpvdXRw dXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIGxlbmd0aCArIDEpOwotLSAgICAgICAgICAgICAg ICBmb3IgKGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspCi0tICAgICAgICAgICAgICAgICAgICAoKm91 dHB1dF9jaGFycylbal0gPSB0YWJsZS0+cHJpdi0+ZGF0YTJbaW5kZXggKyBqXTsKLS0gICAgICAg ICAgICAgICAgKCpvdXRwdXRfY2hhcnMpW2xlbmd0aF0gPSAwOwotLSAgICAgICAgICAgIH0KLS0K LS0gICAgICAgICAgICAvLyBnX2RlYnVnICgiVSslMDRYXG4iLCB2YWx1ZSk7Ci0tICAgICAgICAg ICAgcmV0dXJuIFRSVUU7Ci0tICAgICAgICB9Ci0tICAgIH0gZWxzZSB7Ci0tICAgICAgICBmb3Ig KGkgPSBuX2NvbXBvc2UgLSAxOyBpIDwgdGFibGUtPm1heF9zZXFfbGVuOyBpKyspIHsKLS0gICAg ICAgICAgICByb3dfc3RyaWRlID0gaSArIDE7Ci0tCi0tICAgICAgICAgICAgaWYgKHNlcV9pbmRl eFtpICsgMV0gLSBzZXFfaW5kZXhbaV0gPiAwKSB7Ci0tICAgICAgICAgICAgICAgIHNlcSA9IGJz ZWFyY2ggKGNvbXBvc2VfYnVmZmVyICsgMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFibGUtPmRhdGEgKyBzZXFfaW5kZXhbaV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzZXFfaW5kZXhbaSArIDFdIC0gc2VxX2luZGV4W2ldKSAvIHJvd19zdHJpZGUsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoZ3VpbnQxNikgKiByb3dfc3Ry aWRlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXJlX3NlcSk7Ci0tCi0t ICAgICAgICAgICAgICAgIGlmIChzZXEpIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmIChpID09 IG5fY29tcG9zZSAtIDEpCi0tICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAg ICAgICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7 Ci0tICAgICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICB9Ci0tICAgICAgICB9Ci0tICAgICAg ICBpZiAoIXNlcSkgewotLSAgICAgICAgICAgIHJldHVybiBGQUxTRTsKLS0gICAgICAgIH0gZWxz ZSB7Ci0tICAgICAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKQotLSAgICAgICAgICAgICAgICAq Y29tcG9zZV9maW5pc2ggPSBUUlVFOwotLSAgICAgICAgICAgIGlmIChvdXRwdXRfY2hhcnMpIHsK LS0gICAgICAgICAgICAgICAgKm91dHB1dF9jaGFycyA9IGdfbmV3IChndW5pY2hhciwgMik7Ci0t ICAgICAgICAgICAgICAgICgqb3V0cHV0X2NoYXJzKVswXSA9IHNlcVtyb3dfc3RyaWRlIC0gMV07 Ci0tICAgICAgICAgICAgICAgICgqb3V0cHV0X2NoYXJzKVsxXSA9IDA7Ci0tICAgICAgICAgICAg fQotLQotLSAgICAgICAgICAgIC8vIGdfZGVidWcgKCJVKyUwNFhcbiIsIHZhbHVlKTsKLS0gICAg ICAgICAgICByZXR1cm4gVFJVRTsKLS0gICAgICAgIH0KLS0gICAgfQotLQotLSAgICBnX2Fzc2Vy dF9ub3RfcmVhY2hlZCAoKTsKLS19Ci0tCi0tCi0tLyogQ2hlY2tzIGlmIGEga2V5c3ltIGlzIGEg ZGVhZCBrZXkuIERlYWQga2V5IGtleXN5bSB2YWx1ZXMgYXJlIGRlZmluZWQgaW4KLS0gKiAuLi9n ZGsvZ2Rra2V5c3ltcy5oIGFuZCB0aGUgZmlyc3QgaXMgR0RLX0tFWV9kZWFkX2dyYXZlLiBBcyBY Lk9yZyBpcyB1cGRhdGVkLAotLSAqIG1vcmUgZGVhZCBrZXlzIGFyZSBhZGRlZCBhbmQgd2UgbmVl ZCB0byB1cGRhdGUgdGhlIHVwcGVyIGxpbWl0LgotLSAqIEN1cnJlbnRseSwgdGhlIHVwcGVyIGxp bWl0IGlzIEdES19LRVlfZGVhZF9kYXNpYSsxLiBUaGUgKzEgaGFzIHRvIGRvIHdpdGgKLS0gKiBh IHRlbXBvcmFyeSBpc3N1ZSBpbiB0aGUgWC5PcmcgaGVhZGVyIGZpbGVzLgotLSAqIEluIGZ1dHVy ZSB2ZXJzaW9ucyBpdCB3aWxsIGJlIGp1c3QgdGhlIGtleXN5bSAobm8gKzEpLgotLSAqLwotLSNk ZWZpbmUgSVNfREVBRF9LRVkoaykgXAotLSAgICAgICgoaykgPj0gSUJVU19LRVlfZGVhZF9ncmF2 ZSAmJiAoaykgPD0gKElCVVNfS0VZX2RlYWRfZGFzaWEgKyAxKSkKLS0KLS0vKiBUaGlzIGZ1bmN0 aW9uIHJlY2VpdmVzIGEgc2VxdWVuY2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzIGFuZCB0cmllcyB0 bwotLSAqIG5vcm1hbGl6ZSBpdCAoTkZDKS4gV2UgY2hlY2sgZm9yIHRoZSBjYXNlIHRoZSB0aGUg cmVzdWx0aW5nIHN0cmluZwotLSAqIGhhcyBsZW5ndGggMSAoc2luZ2xlIGNoYXJhY3RlcikuCi0t ICogTkZDIG5vcm1hbGlzYXRpb24gbm9ybWFsbHkgcmVhcnJhbmdlcyBkaWFjcml0aWMgbWFya3Ms IHVubGVzcyB0aGVzZQotLSAqIGJlbG9uZyB0byB0aGUgc2FtZSBDYW5vbmljYWwgQ29tYmluaW5n IENsYXNzLgotLSAqIElmIHRoZXkgYmVsb25nIHRvIHRoZSBzYW1lIGNhbm9uaWNhbCBjb21iaW5p bmcgY2xhc3MsIHdlIHByb2R1Y2UgYWxsCi0tICogcGVybXV0YXRpb25zIG9mIHRoZSBkaWFjcml0 aWMgbWFya3MsIHRoZW4gYXR0ZW1wdCB0byBub3JtYWxpemUuCi0tICovCi0tc3RhdGljIGdib29s ZWFuCi0tY2hlY2tfbm9ybWFsaXplX25mYyAoZ3VuaWNoYXIqIGNvbWJpbmF0aW9uX2J1ZmZlciwg Z2ludCBuX2NvbXBvc2UpCi0tewotLSAgICBndW5pY2hhciBjb21iaW5hdGlvbl9idWZmZXJfdGVt cFtJQlVTX01BWF9DT01QT1NFX0xFTl07Ci0tICAgIGdjaGFyICpjb21iaW5hdGlvbl91dGY4X3Rl bXAgPSBOVUxMOwotLSAgICBnY2hhciAqbmZjX3RlbXAgPSBOVUxMOwotLSAgICBnaW50IG5fY29t YmluYXRpb25zOwotLSAgICBndW5pY2hhciB0ZW1wX3N3YXA7Ci0tICAgIGdpbnQgaTsKLS0KLS0g ICAgbl9jb21iaW5hdGlvbnMgPSAxOwotLQotLSAgICBDSEVDS19DT01QT1NFX0JVRkZFUl9MRU5H VEggKG5fY29tcG9zZSk7Ci0tCi0tICAgIGZvciAoaSA9IDE7IGkgPCBuX2NvbXBvc2U7IGkrKyAp Ci0tICAgICAgICBuX2NvbWJpbmF0aW9ucyAqPSBpOwotLQotLSAgICAvKiBYb3JnIHJldXNlcyBk ZWFkX3RpbGRlIGZvciB0aGUgcGVyaXNwb21lbmkgZGlhY3JpdGljIG1hcmsuCi0tICAgICAqIFdl IGNoZWNrIGlmIGJhc2UgY2hhcmFjdGVyIGJlbG9uZ3MgdG8gR3JlZWsgVW5pY29kZSBibG9jaywK LS0gICAgICogYW5kIGlmIHNvLCB3ZSByZXBsYWNlIHRpbGRlIHdpdGggcGVyaXNwb21lbmkuICov Ci0tICAgIGlmIChjb21iaW5hdGlvbl9idWZmZXJbMF0gPj0gMHgzOTAgJiYgY29tYmluYXRpb25f YnVmZmVyWzBdIDw9IDB4M0ZGKSB7Ci0tICAgICAgICBmb3IgKGkgPSAxOyBpIDwgbl9jb21wb3Nl OyBpKysgKQotLSAgICAgICAgICAgIGlmIChjb21iaW5hdGlvbl9idWZmZXJbaV0gPT0gMHgzMDMp Ci0tICAgICAgICAgICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltpXSA9IDB4MzQyOwotLSAgICB9 Ci0tCi0tICAgIG1lbWNweSAoY29tYmluYXRpb25fYnVmZmVyX3RlbXAsCi0tICAgICAgICAgICAg Y29tYmluYXRpb25fYnVmZmVyLAotLSAgICAgICAgICAgIElCVVNfTUFYX0NPTVBPU0VfTEVOICog c2l6ZW9mIChndW5pY2hhcikgKTsKLS0KLS0gICAgZm9yIChpID0gMDsgaSA8IG5fY29tYmluYXRp b25zOyBpKysgKSB7Ci0tICAgICAgICBnX3VuaWNvZGVfY2Fub25pY2FsX29yZGVyaW5nIChjb21i aW5hdGlvbl9idWZmZXJfdGVtcCwgbl9jb21wb3NlKTsKLS0gICAgICAgIGNvbWJpbmF0aW9uX3V0 ZjhfdGVtcCA9IGdfdWNzNF90b191dGY4IChjb21iaW5hdGlvbl9idWZmZXJfdGVtcCwgLTEsIE5V TEwsIE5VTEwsIE5VTEwpOwotLSAgICAgICAgbmZjX3RlbXAgPSBnX3V0Zjhfbm9ybWFsaXplIChj b21iaW5hdGlvbl91dGY4X3RlbXAsIC0xLCBHX05PUk1BTElaRV9ORkMpOwotLQotLSAgICAgICAg aWYgKGdfdXRmOF9zdHJsZW4gKG5mY190ZW1wLCAtMSkgPT0gMSkgewotLSAgICAgICAgICAgIG1l bWNweSAoY29tYmluYXRpb25fYnVmZmVyLAotLSAgICAgICAgICAgICAgICAgICAgY29tYmluYXRp b25fYnVmZmVyX3RlbXAsCi0tICAgICAgICAgICAgICAgICAgICBJQlVTX01BWF9DT01QT1NFX0xF TiAqIHNpemVvZiAoZ3VuaWNoYXIpICk7Ci0tCi0tICAgICAgICAgICAgZ19mcmVlIChjb21iaW5h dGlvbl91dGY4X3RlbXApOwotLSAgICAgICAgICAgIGdfZnJlZSAobmZjX3RlbXApOwotLQotLSAg ICAgICAgICAgIHJldHVybiBUUlVFOwotLSAgICAgICAgfQotLQotLSAgICAgICAgZ19mcmVlIChj b21iaW5hdGlvbl91dGY4X3RlbXApOwotLSAgICAgICAgZ19mcmVlIChuZmNfdGVtcCk7Ci0tCi0t ICAgICAgICBpZiAobl9jb21wb3NlID4gMikgewotLSAgICAgICAgICAgIGdpbnQgaiA9IGkgJSAo bl9jb21wb3NlIC0gMSkgKyAxOwotLSAgICAgICAgICAgIGdpbnQgayA9IChpKzEpICUgKG5fY29t cG9zZSAtIDEpICsgMTsKLS0gICAgICAgICAgICBpZiAoaiA+PSBJQlVTX01BWF9DT01QT1NFX0xF TikgewotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJqID49IElCVVNfTUFYX0NPTVBPU0Vf TEVOIGZvciAiIFwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tYmluYXRpb25fYnVm ZmVyX3RlbXAiKTsKLS0gICAgICAgICAgICAgICAgYnJlYWs7Ci0tICAgICAgICAgICAgfQotLSAg ICAgICAgICAgIGlmIChrID49IElCVVNfTUFYX0NPTVBPU0VfTEVOKSB7Ci0tICAgICAgICAgICAg ICAgIGdfd2FybmluZyAoImsgPj0gSUJVU19NQVhfQ09NUE9TRV9MRU4gZm9yICIgXAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICJjb21iaW5hdGlvbl9idWZmZXJfdGVtcCIpOwotLSAgICAg ICAgICAgICAgICBicmVhazsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgdGVtcF9zd2Fw ID0gY29tYmluYXRpb25fYnVmZmVyX3RlbXBbal07Ci0tICAgICAgICAgICAgY29tYmluYXRpb25f YnVmZmVyX3RlbXBbal0gPSBjb21iaW5hdGlvbl9idWZmZXJfdGVtcFtrXTsKLS0gICAgICAgICAg ICBjb21iaW5hdGlvbl9idWZmZXJfdGVtcFtrXSA9IHRlbXBfc3dhcDsKLS0gICAgICAgIH0KLS0g ICAgICAgIGVsc2UKLS0gICAgICAgICAgICBicmVhazsKLS0gICAgfQotLQotLSAgICByZXR1cm4g RkFMU0U7Ci0tfQotLQotLWdib29sZWFuCi0taWJ1c19jaGVja19hbGdvcml0aG1pY2FsbHkgKGNv bnN0IGd1aW50MTYgKmNvbXBvc2VfYnVmZmVyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnaW50ICAgICAgICAgICBuX2NvbXBvc2UsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg IGd1bmljaGFyICAgICAgKm91dHB1dF9jaGFyKQotLQotLXsKLS0gICAgZ2ludCBpOwotLSAgICBn dW5pY2hhciBjb21iaW5hdGlvbl9idWZmZXJbSUJVU19NQVhfQ09NUE9TRV9MRU5dOwotLSAgICBn Y2hhciAqY29tYmluYXRpb25fdXRmOCwgKm5mYzsKLS0KLS0gICAgaWYgKG91dHB1dF9jaGFyKQot LSAgICAgICAgKm91dHB1dF9jaGFyID0gMDsKLS0KLS0gICAgQ0hFQ0tfQ09NUE9TRV9CVUZGRVJf TEVOR1RIIChuX2NvbXBvc2UpOwotLQotLSAgICBpZiAobl9jb21wb3NlID49IElCVVNfTUFYX0NP TVBPU0VfTEVOKQotLSAgICAgICAgcmV0dXJuIEZBTFNFOwotLQotLSAgICBmb3IgKGkgPSAwOyBp IDwgbl9jb21wb3NlICYmIElTX0RFQURfS0VZIChjb21wb3NlX2J1ZmZlcltpXSk7IGkrKykKLS0g ICAgICAgIDsKLS0gICAgaWYgKGkgPT0gbl9jb21wb3NlKQotLSAgICAgICAgcmV0dXJuIFRSVUU7 Ci0tCi0tICAgIGlmIChpID4gMCAmJiBpID09IG5fY29tcG9zZSAtIDEpIHsKLS0gICAgICAgIGNv bWJpbmF0aW9uX2J1ZmZlclswXSA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKGNvbXBvc2VfYnVm ZmVyW2ldKTsKLS0gICAgICAgIGNvbWJpbmF0aW9uX2J1ZmZlcltuX2NvbXBvc2VdID0gMDsKLS0g ICAgICAgIGktLTsKLS0gICAgICAgIHdoaWxlIChpID49IDApIHsKLS0gICAgICAgICAgICBjb21i aW5hdGlvbl9idWZmZXJbaSsxXSA9IGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGNvbXBvc2VfYnVm ZmVyW2ldLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgVFJVRSk7Ci0tICAgICAgICAgICAgaWYgKCFjb21iaW5hdGlvbl9idWZm ZXJbaSsxXSkgewotLSAgICAgICAgICAgICAgICBjb21iaW5hdGlvbl9idWZmZXJbaSsxXSA9Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoY29tcG9zZV9i dWZmZXJbaV0pOwotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBpLS07Ci0tICAgICAgICB9 Ci0tCi0tICAgICAgICAvKiBJZiB0aGUgYnVmZmVyIG5vcm1hbGl6ZXMgdG8gYSBzaW5nbGUgY2hh cmFjdGVyLAotLSAgICAgICAgICogdGhlbiBtb2RpZnkgdGhlIG9yZGVyIG9mIGNvbWJpbmF0aW9u X2J1ZmZlciBhY2NvcmRpbmdseSwgaWYgbmVjZXNzYXJ5LAotLSAgICAgICAgICogYW5kIHJldHVy biBUUlVFLgotLSAgICAgICAgICovCi0tICAgICAgICBpZiAoY2hlY2tfbm9ybWFsaXplX25mYyAo Y29tYmluYXRpb25fYnVmZmVyLCBuX2NvbXBvc2UpKSB7Ci0tICAgICAgICAgICAgY29tYmluYXRp b25fdXRmOCA9IGdfdWNzNF90b191dGY4IChjb21iaW5hdGlvbl9idWZmZXIsIC0xLCBOVUxMLCBO VUxMLCBOVUxMKTsKLS0gICAgICAgICAgICBuZmMgPSBnX3V0Zjhfbm9ybWFsaXplIChjb21iaW5h dGlvbl91dGY4LCAtMSwgR19OT1JNQUxJWkVfTkZDKTsKLS0KLS0gICAgICAgICAgICBpZiAob3V0 cHV0X2NoYXIpCi0tICAgICAgICAgICAgICAgICpvdXRwdXRfY2hhciA9IGdfdXRmOF9nZXRfY2hh ciAobmZjKTsKLS0KLS0gICAgICAgICAgICBnX2ZyZWUgKGNvbWJpbmF0aW9uX3V0ZjgpOwotLSAg ICAgICAgICAgIGdfZnJlZSAobmZjKTsKLS0KLS0gICAgICAgICAgICByZXR1cm4gVFJVRTsKLS0g ICAgICAgIH0KLS0gICAgfQotLQotLSAgICByZXR1cm4gRkFMU0U7Ci0tfQotIAotIHN0YXRpYyBn Ym9vbGVhbgotIG5vX3NlcXVlbmNlX21hdGNoZXMgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwK LUBAIC0xMTg0LDM0ICs3MDMsNzEgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2NoZWNrX2FsbF9jb21w b3NlX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICBuX2NvbXBvc2UpCi0g ewotICAgICBJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdiA9IHNpbXBsZS0+cHJpdjsKLS0g ICAgZ2Jvb2xlYW4gY29tcG9zZV9maW5pc2g7Ci0tICAgIGd1bmljaGFyIG91dHB1dF9jaGFyOwot KyAgICBnYm9vbGVhbiBjb21wb3NlX2ZpbmlzaCA9IEZBTFNFOwotKyAgICBnYm9vbGVhbiBjb21w b3NlX21hdGNoID0gRkFMU0U7Ci0rICAgIEdTdHJpbmcgKm91dHB1dCA9IGdfc3RyaW5nX25ldyAo IiIpOwotKyAgICBnYm9vbGVhbiBkb2VzX2hpdCA9IEZBTFNFOwotKyAgICBnYm9vbGVhbiBpc18z MmJpdCA9IEZBTFNFOwotKyAgICBHU0xpc3QgKnRtcF9saXN0OwotICAgICBndW5pY2hhciAqb3V0 cHV0X2NoYXJzID0gTlVMTDsKLS0gICAgZ2NoYXIgKm91dHB1dF9zdHIgPSBOVUxMOwotLSAgICBH RXJyb3IgKmVycm9yID0gTlVMTDsKLS0gICAgR1NMaXN0ICpsaXN0ID0gZ2xvYmFsX3RhYmxlczsK LSsgICAgZ3VuaWNoYXIgb3V0cHV0X2NoYXI7Ci0gCi0tICAgIHdoaWxlIChsaXN0KSB7Ci0tICAg ICAgICBpZiAoY2hlY2tfdGFibGUgKHNpbXBsZSwKLS0gICAgICAgICAgICAoSUJ1c0NvbXBvc2VU YWJsZUV4ICopbGlzdC0+ZGF0YSwKLSsgICAgR19MT0NLIChnbG9iYWxfdGFibGVzKTsKLSsgICAg dG1wX2xpc3QgPSBnbG9iYWxfdGFibGVzOwotKyAgICB3aGlsZSAodG1wX2xpc3QpIHsKLSsgICAg ICAgIGlzXzMyYml0ID0gRkFMU0U7Ci0rICAgICAgICBpZiAoaWJ1c19jb21wb3NlX3RhYmxlX2No ZWNrICgKLSsgICAgICAgICAgICAoSUJ1c0NvbXBvc2VUYWJsZUV4ICopdG1wX2xpc3QtPmRhdGEs Ci0rICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCi0gICAgICAgICAgICAgbl9jb21w b3NlLAotLSAgICAgICAgICAgIEZBTFNFKSkgewotLSAgICAgICAgICAgIHJldHVybiBUUlVFOwot KyAgICAgICAgICAgICZjb21wb3NlX2ZpbmlzaCwKLSsgICAgICAgICAgICAmY29tcG9zZV9tYXRj aCwKLSsgICAgICAgICAgICBvdXRwdXQsCi0rICAgICAgICAgICAgaXNfMzJiaXQpKSB7Ci0rICAg ICAgICAgICAgZG9lc19oaXQgPSBUUlVFOwotKyAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg fQotLSAgICAgICAgaWYgKGNoZWNrX3RhYmxlIChzaW1wbGUsCi0tICAgICAgICAgICAgKElCdXND b21wb3NlVGFibGVFeCAqKWxpc3QtPmRhdGEsCi0rICAgICAgICBpc18zMmJpdCA9IFRSVUU7Ci0r ICAgICAgICBpZiAoaWJ1c19jb21wb3NlX3RhYmxlX2NoZWNrICgKLSsgICAgICAgICAgICAoSUJ1 c0NvbXBvc2VUYWJsZUV4ICopdG1wX2xpc3QtPmRhdGEsCi0rICAgICAgICAgICAgcHJpdi0+Y29t cG9zZV9idWZmZXIsCi0gICAgICAgICAgICAgbl9jb21wb3NlLAotLSAgICAgICAgICAgIFRSVUUp KSB7Ci0tICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0rICAgICAgICAgICAgJmNvbXBvc2VfZmlu aXNoLAotKyAgICAgICAgICAgICZjb21wb3NlX21hdGNoLAotKyAgICAgICAgICAgIG91dHB1dCwK LSsgICAgICAgICAgICBpc18zMmJpdCkpIHsKLSsgICAgICAgICAgICBkb2VzX2hpdCA9IFRSVUU7 Ci0rICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0tICAgICAgICBsaXN0ID0gbGlzdC0+ bmV4dDsKLSsgICAgICAgIHRtcF9saXN0ID0gdG1wX2xpc3QtPm5leHQ7Ci0gICAgIH0KLSsgICAg R19VTkxPQ0sgKGdsb2JhbF90YWJsZXMpOwotIAotLSAgICBpZiAoaWJ1c19jaGVja19jb21wYWN0 X3RhYmxlICgmaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3QsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZjb21wb3NlX2ZpbmlzaCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJm91dHB1dF9jaGFycykpIHsKLSsgICAgaWYgKGRvZXNfaGl0KSB7Ci0rICAgICAgICBpZiAo Y29tcG9zZV9maW5pc2gpIHsKLSsgICAgICAgICAgICBpZiAoY29tcG9zZV9tYXRjaCkgewotKyAg ICAgICAgICAgICAgICBpZiAoaXNfMzJiaXQpIHsKLSsgICAgICAgICAgICAgICAgICAgIGlidXNf ZW5naW5lX3NpbXBsZV9jb21taXRfc3RyIChzaW1wbGUsIG91dHB1dC0+c3RyKTsKLSsgICAgICAg ICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBs ZV9jb21taXRfY2hhciAoc2ltcGxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnX3V0ZjhfZ2V0X2NoYXIgKG91dHB1dC0+c3RyKSk7Ci0rICAg ICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9IGVsc2UgaWYgKGNvbXBv c2VfbWF0Y2gpIHsKLSsgICAgICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2ggPSBnX3V0Zjhf Z2V0X2NoYXIgKG91dHB1dC0+c3RyKTsKLSsgICAgICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0 Y2hfbGVuID0gbl9jb21wb3NlOwotKyAgICAgICAgfQotKyAgICAgICAgaWJ1c19lbmdpbmVfc2lt cGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0rICAgICAgICBnX3N0cmluZ19mcmVl IChvdXRwdXQsIFRSVUUpOwotKyAgICAgICAgcmV0dXJuIFRSVUU7Ci0rICAgIH0KLSsgICAgZ19z dHJpbmdfZnJlZSAob3V0cHV0LCBUUlVFKTsKLSsKLSsgICAgaWYgKGlidXNfY29tcG9zZV90YWJs ZV9jb21wYWN0X2NoZWNrICgmaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3QsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjb21wb3NlX2ZpbmlzaCwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2NoYXJz KSkgewotICAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKSB7Ci0gICAgICAgICAgICAgaWJ1c19l bmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsICpvdXRwdXRfY2hhcnMpOwotICAgICAg ICAgICAgIGdfZnJlZSAob3V0cHV0X2NoYXJzKTsKLUBAIC0xMjIwLDI4ICs3NzYsMjkgQEAgaWJ1 c19lbmdpbmVfc2ltcGxlX2NoZWNrX2FsbF9jb21wb3NlX3RhYmxlIChJQnVzRW5naW5lU2ltcGxl ICpzaW1wbGUsCi0gICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4 dCAoc2ltcGxlKTsKLSAgICAgICAgIHJldHVybiBUUlVFOwotICAgICB9Ci0tICAgIGlmIChpYnVz X2NoZWNrX2NvbXBhY3RfdGFibGUgKCZpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdF8zMmJpdCwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvc2VfZmluaXNoLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHV0X2NoYXJzKSkgewotKyAgICBpZiAoaWJ1c19j b21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sgKCZpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdF8z MmJpdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5j b21wb3NlX2J1ZmZlciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuX2NvbXBvc2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmNvbXBvc2VfZmluaXNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZvdXRwdXRfY2hhcnMpKSB7Ci0gICAgICAgICBpZiAoY29tcG9zZV9maW5pc2gpIHsKLS0g ICAgICAgICAgICBvdXRwdXRfc3RyID0gZ191Y3M0X3RvX3V0ZjggKG91dHB1dF9jaGFycywgLTEs IE5VTEwsIE5VTEwsICZlcnJvcik7Ci0tICAgICAgICAgICAgaWYgKG91dHB1dF9zdHIpIHsKLS0g ICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9zdHIgKHNpbXBsZSwgb3V0 cHV0X3N0cik7Ci0tICAgICAgICAgICAgICAgIGdfZnJlZSAob3V0cHV0X3N0cik7Ci0rICAgICAg ICAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0rICAgICAgICAgICAgY2hhciAqc3RyID0gZ191 Y3M0X3RvX3V0ZjggKG91dHB1dF9jaGFycywgLTEsIE5VTEwsIE5VTEwsICZlcnJvcik7Ci0rICAg ICAgICAgICAgaWYgKHN0cikgewotKyAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf Y29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOwotKyAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cik7 Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgZ193YXJuaW5nICgiRmFp bGVkIHRvIG91dHB1dCBtdWx0aXBsZSBjaGFyYWN0ZXJzOiAlcyIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICAgICAgICAgICBnX2Vycm9yX2Zy ZWUgKGVycm9yKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgZ19mcmVlIChvdXRwdXRf Y2hhcnMpOwotICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKLSAgICAg ICAgIH0KLS0gICAgICAgIAotKyAgICAgICAgZ19mcmVlIChvdXRwdXRfY2hhcnMpOwotICAgICAg ICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0gICAg ICAgICByZXR1cm4gVFJVRTsKLSAgICAgfQotKyAgICBnX2Fzc2VydCAoIW91dHB1dF9jaGFycyk7 Ci0gICAgIGlmIChpYnVzX2NoZWNrX2FsZ29yaXRobWljYWxseSAocHJpdi0+Y29tcG9zZV9idWZm ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfY2hhcikpIHsKLWRpZmYg LS1naXQgYS9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaCBiL3NyYy9pYnVzZW5naW5lc2lt cGxlcHJpdmF0ZS5oCi1pbmRleCA1MDhkOTM0NC4uNDdmMmEzZDQgMTAwNjQ0Ci0tLS0gYS9zcmMv aWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaAotKysrIGIvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2 YXRlLmgKLUBAIC0zNywxNSArMzcsMzAgQEAgc3RydWN0IF9JQnVzQ29tcG9zZVRhYmxlUHJpdmF0 ZQotICAgICBnc2l6ZSBzZWNvbmRfc2l6ZTsKLSB9OwotIAotK3N0cnVjdCBfSUJ1c0NvbXBvc2VU YWJsZUNvbXBhY3RQcml2YXRlCi0rewotKyAgICBjb25zdCBndWludDMyICpkYXRhMjsKLSt9Owot KwotIGdib29sZWFuIGlidXNfY2hlY2tfYWxnb3JpdGhtaWNhbGx5IChjb25zdCBndWludDE2ICAg ICAgICAgICAgICAqY29tcG9zZV9idWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1bmljaGFyICAgICAgICAgICAgICAgICAg ICpvdXRwdXQpOwotLWdib29sZWFuIGlidXNfY2hlY2tfY29tcGFjdF90YWJsZSAgIChjb25zdCBJ QnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4Ci0rZ2Jvb2xlYW4gaWJ1c19jb21wb3NlX3RhYmxlX2No ZWNrICAgKGNvbnN0IElCdXNDb21wb3NlVGFibGVFeCAgICp0YWJsZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNiAgICAgICAgICAgICAgICAgICAgKmNvbXBv c2VfYnVmZmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAg ICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9maW5pc2gs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAg ICAgICAgICAgICpjb21wb3NlX21hdGNoLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHU3RyaW5nICAgICAgICAgICAgICAgICAgICAqb3V0cHV0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgaXNf MzJiaXQpOwotK2dib29sZWFuIGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IElCdXNDb21wb3NlVGFibGVD b21wYWN0RXgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBndWludDE2ICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9idWZmZXIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAg ICAgICBuX2NvbXBvc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdi b29sZWFuICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2ZpbmlzaCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAqKm91dHB1 dF9jaGFycyk7Ci0rZ3VuaWNoYXIgaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAgICAgKGd1aW50MTYg ICAgICAgICAgICAgICAgICAgICBrZXlzeW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICBjb21iaW5pbmcpOwotIAotIEdf RU5EX0RFQ0xTCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL01ha2VmaWxlLmFtIGIvc3JjL3Rl c3RzL01ha2VmaWxlLmFtCi1pbmRleCAwYTJlNTIzYy4uMTNjMDZlYjQgMTAwNjQ0Ci0tLS0gYS9z cmMvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTMs NyArMyw3IEBACi0gIyBpYnVzIC0gVGhlIElucHV0IEJ1cwotICMKLSAjIENvcHlyaWdodCAoYykg MjAwNy0yMDE1IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgotLSMgQ29weXJp Z2h0IChjKSAyMDE1LTIwMTkgVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5j b20+Ci0rIyBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMSBUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVq aXdhcmExQGdtYWlsLmNvbT4KLSAjIENvcHlyaWdodCAoYykgMjAwNy0yMDE4IFJlZCBIYXQsIElu Yy4KLSAjCi0gIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yCi1AQCAtMzAsNiArMzAsNyBAQCBBTV9DUFBGTEFHUyA9IFwKLSAgICAg QEdMSUIyX0NGTEFHU0AgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgQEdJTzJfQ0ZM QUdTQCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgLURJQlVTX0RJU0FCTEVfREVQ UkVDQVRJT05fV0FSTklOR1MgICAgIFwKLSsgICAgLURYMTFfREFUQV9QUkVGSVg9XCIkKFgxMV9Q UkVGSVgpXCIgICAgIFwKLSAgICAgLUkkKHRvcF9zcmNkaXIpL3NyYyAgICAgICAgICAgICAgICAg ICAgIFwKLSAgICAgLUkkKHRvcF9idWlsZGRpcikvc3JjICAgICAgICAgICAgICAgICAgIFwKLSAg ICAgJChOVUxMKQotZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9pYnVzLWNvbXBvc2UuYyBiL3NyYy90 ZXN0cy9pYnVzLWNvbXBvc2UuYwotaW5kZXggODFiZmM2OWIuLjBiZTAxZDI3IDEwMDY0NAotLS0t IGEvc3JjL3Rlc3RzL2lidXMtY29tcG9zZS5jCi0rKysgYi9zcmMvdGVzdHMvaWJ1cy1jb21wb3Nl LmMKLUBAIC02LDYgKzYsNyBAQAotICNkZWZpbmUgR1JFRU4gIlwwMzNbMDszMm0iCi0gI2RlZmlu ZSBSRUQgICAiXDAzM1swOzMxbSIKLSAjZGVmaW5lIE5DICAgICJcMDMzWzBtIgotKyNkZWZpbmUg WDExX0RBVEFESVIgWDExX0RBVEFfUFJFRklYICIvc2hhcmUvWDExL2xvY2FsZSIKLSAKLSBJQnVz QnVzICptX2J1czsKLSBnY2hhciAqbV9jb21wb3NlX2ZpbGU7Ci1AQCAtMzUsNyArMzYsNyBAQCBn ZXRfY29tcG9zZV9wYXRoICgpCi0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICBpZiAoZ19z dHJjbXAwICgqbCwgIkMiKSA9PSAwKQotICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY29t cG9zZV9wYXRoID0gZ19idWlsZF9maWxlbmFtZSAoIi91c3Ivc2hhcmUvWDExL2xvY2FsZSIsCi0r ICAgICAgICBjb21wb3NlX3BhdGggPSBnX2J1aWxkX2ZpbGVuYW1lIChYMTFfREFUQURJUiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpsLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbXBvc2UiLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci1AQCAtMTU1LDcgKzE1Niw3IEBAIHNl dF9lbmdpbmVfY2IgKEdPYmplY3QgKm9iamVjdCwgR0FzeW5jUmVzdWx0ICpyZXMsIGdwb2ludGVy IGRhdGEpCi0gICAgIGZvciAoaSA9IDA7Ci0gICAgICAgICAgaSA8IChtX2NvbXBvc2VfdGFibGUt Pm5fc2VxcyAqIGluZGV4X3N0cmlkZSk7Ci0gICAgICAgICAgaSArPSBpbmRleF9zdHJpZGUpIHsK LS0gICAgICAgIGZvciAoaiA9IGk7IGogPCBpICsgKGluZGV4X3N0cmlkZSAtIDEpOyBqKyspIHsK LSsgICAgICAgIGZvciAoaiA9IGk7IGogPCBpICsgKGluZGV4X3N0cmlkZSAtIDIpOyBqKyspIHsK LSAgICAgICAgICAgICBndWludCBrZXl2YWwgPSBtX2NvbXBvc2VfdGFibGUtPmRhdGFbal07Ci0g ICAgICAgICAgICAgZ3VpbnQga2V5Y29kZSA9IDA7Ci0gICAgICAgICAgICAgZ3VpbnQgbW9kaWZp ZXJzID0gMDsKLUBAIC0xNzUsNyArMTc2LDcgQEAgc2V0X2VuZ2luZV9jYiAoR09iamVjdCAqb2Jq ZWN0LCBHQXN5bmNSZXN1bHQgKnJlcywgZ3BvaW50ZXIgZGF0YSkKLSAgICAgICAgIGZvciAoaSA9 IDA7Ci0gICAgICAgICAgICAgIGkgPCAocHJpdi0+Zmlyc3Rfbl9zZXFzICogaW5kZXhfc3RyaWRl KTsKLSAgICAgICAgICAgICAgaSArPSBpbmRleF9zdHJpZGUpIHsKLS0gICAgICAgICAgICBmb3Ig KGogPSBpOyBqIDwgaSArIChpbmRleF9zdHJpZGUgLSAxKTsgaisrKSB7Ci0rICAgICAgICAgICAg Zm9yIChqID0gaTsgaiA8IGkgKyAoaW5kZXhfc3RyaWRlIC0gMik7IGorKykgewotICAgICAgICAg ICAgICAgICBndWludCBrZXl2YWwgPSBwcml2LT5kYXRhX2ZpcnN0W2pdOwotICAgICAgICAgICAg ICAgICBndWludCBrZXljb2RlID0gMDsKLSAgICAgICAgICAgICAgICAgZ3VpbnQgbW9kaWZpZXJz ID0gMDsKLS0tIAotMi4yOC4wCi0KLUZyb20gMmZjMWEwMjhhYTY5N2YxMzIwZDg1YTc2NTQ4Y2Rl MTI4OTRiZjlhYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFr YW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgSnVsIDIwMjEgMjI6NTI6MTgg KzA5MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzZdIHNyYy9pYnVzZW5naW5lc2ltcGxlOiBNdWx0aV9r ZXkgdG8gMHhCNwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsg Y2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1Vc2Ugwrcg aW5zdGVhZCBvZiDijoQgdG8gZGlzcGxheSBNdWx0aV9rZXkgaW4gcHJlLWVkaXQuCi0KLUJVRz1o dHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3RrLy0vaXNzdWVzLzM2NjkKLUJVRz1odHRw czovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3RrLy0vbWVyZ2VfcmVxdWVzdHMvMzIyMAotLS0t Ci0gc3JjL2lidXNjb21wb3NldGFibGUuYyB8ICA4ICsrKysrKy0KLSBzcmMvaWJ1c2VuZ2luZXNp bXBsZS5jIHwgNDkgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g MiBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyNyBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5j Ci1pbmRleCBmODUxNzdhNi4uNGViZjExOWIgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBvc2V0 YWJsZS5jCi0rKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1AQCAtMTg0Niw3ICsxODQ2LDEz IEBAIGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGd1aW50MTYgIGtleXN5bSwKLSAgICAgQ0FTRV9D T01CSU5FICh0aWxkZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDMsIDB4MDA3RSk7Ci0g ICAgIENBU0VfQ09NQklORSAodm9pY2VkX3NvdW5kLCAgICAgICAgICAgICAgICAgMHgzMDk5LCAw eDMwOUIpOwotICAgICBjYXNlIElCVVNfS0VZX011bHRpX2tleToKLS0gICAgICAgIHJldHVybiAw eDIzODQ7Ci0rICAgICAgICAvKiBXZSBvbmx5IHNob3cgdGhlIENvbXBvc2Uga2V5IHZpc2libHkg d2hlbiBpdCBpcyB0aGUKLSsgICAgICAgICAqIG9ubHkgZ2x5cGggaW4gdGhlIHByZWVkaXQsIG9y IHdoZW4gaXQgb2NjdXJzIGluIHRoZQotKyAgICAgICAgICogbWlkZGxlIG9mIHRoZSBzZXF1ZW5j ZS4gU2FkbHksIHRoZSBvZmZpY2lhbCBjaGFyYWN0ZXIsCi0rICAgICAgICAgKiBVKzIzODQsIENP TVBPU0lUSU9OIFNZTUJPTCwgaXMgYml0IHRvbyBkaXN0cmFjdGluZywgc28KLSsgICAgICAgICAq IHdlIHVzZSBVKzAwQjcsIE1JRERMRSBET1QuCi0rICAgICAgICAgKi8KLSsgICAgICAgIHJldHVy biAweDAwQjc7Ci0gICAgIGRlZmF1bHQ6OwotICAgICB9Ci0gICAgIHJldHVybiAweDA7Ci1kaWZm IC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGUuYyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMK LWluZGV4IDQ2NDQ2MjBiLi41N2NhMTBjNCAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lc2lt cGxlLmMKLSsrKyBiL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMKLUBAIC0yODksMzIgKzI4OSwyNyBA QCBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoSUJ1c0VuZ2luZVNpbXBs ZSAqc2ltcGxlKQotIHsKLSAgICAgSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUgKnByaXYgPSBzaW1w bGUtPnByaXY7Ci0gCi0tICAgIGd1bmljaGFyIG91dGJ1ZltDT01QT1NFX0JVRkZFUl9TSVpFICsg MV07Ci0tICAgIGludCBsZW4gPSAwOwotKyAgICBHU3RyaW5nICpzID0gZ19zdHJpbmdfbmV3ICgi Iik7Ci0gCi0gICAgIGlmIChwcml2LT5pbl9oZXhfc2VxdWVuY2UgfHwgcHJpdi0+aW5fZW1vamlf c2VxdWVuY2UpIHsKLSAgICAgICAgIGludCBoZXhjaGFycyA9IDA7Ci0gCi0gICAgICAgICBpZiAo cHJpdi0+aW5faGV4X3NlcXVlbmNlKQotLSAgICAgICAgICAgIG91dGJ1ZlswXSA9IEwndSc7Ci0r ICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX2MgKHMsICd1Jyk7Ci0gICAgICAgICBlbHNlCi0t ICAgICAgICAgICAgb3V0YnVmWzBdID0gTCdAJzsKLS0KLS0gICAgICAgIGxlbiA9IDE7Ci0rICAg ICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX2MgKHMsICdAJyk7Ci0gCi0gICAgICAgICB3aGlsZSAo cHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdICE9IDApIHsKLS0gICAgICAgICAgICBvdXRi dWZbbGVuXSA9IGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKAotLSAgICAgICAgICAgICAgICBwcml2 LT5jb21wb3NlX2J1ZmZlcltoZXhjaGFyc10pOwotLSAgICAgICAgICAgICsrbGVuOwotLSAgICAg ICAgICAgICsraGV4Y2hhcnM7Ci0rICAgICAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIo Ci0rICAgICAgICAgICAgICAgICAgICBzLAotKyAgICAgICAgICAgICAgICAgICAgaWJ1c19rZXl2 YWxfdG9fdW5pY29kZSAocHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnMrK10pCi0rICAgICAg ICAgICAgKTsKLSAgICAgICAgIH0KLS0KLS0gICAgICAgIGdfYXNzZXJ0IChsZW4gPD0gQ09NUE9T RV9CVUZGRVJfU0laRSk7Ci0gICAgIH0gZWxzZSBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNoKSB7 Ci0tICAgICAgICBvdXRidWZbbGVuKytdID0gcHJpdi0+dGVudGF0aXZlX21hdGNoOwotKyAgICAg ICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIocywgcHJpdi0+dGVudGF0aXZlX21hdGNoKTsKLSAg ICAgfSBlbHNlIGlmIChwcml2LT50ZW50YXRpdmVfZW1vamkgJiYgKnByaXYtPnRlbnRhdGl2ZV9l bW9qaSkgewotICAgICAgICAgSUJ1c1RleHQgKnRleHQgPSBpYnVzX3RleHRfbmV3X2Zyb21fc3Ry aW5nIChwcml2LT50ZW50YXRpdmVfZW1vamkpOwotLSAgICAgICAgbGVuID0gc3RybGVuIChwcml2 LT50ZW50YXRpdmVfZW1vamkpOwotKyAgICAgICAgaW50IGxlbiA9IHN0cmxlbiAocHJpdi0+dGVu dGF0aXZlX2Vtb2ppKTsKLSAgICAgICAgIGlidXNfdGV4dF9hcHBlbmRfYXR0cmlidXRlICh0ZXh0 LAotICAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQRV9VTkRFUkxJTkUsIElCVVNfQVRUUl9V TkRFUkxJTkVfU0lOR0xFLCAwLCBsZW4pOwotICAgICAgICAgaWJ1c19lbmdpbmVfdXBkYXRlX3By ZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUsIHRleHQsIGxlbiwgVFJVRSk7Ci1AQCAt MzI0LDMxICszMTksMzMgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQg KElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSkKLSAgICAgICAgIHdoaWxlIChwcml2LT5jb21wb3Nl X2J1ZmZlcltoZXhjaGFyc10gIT0gMCkgewotICAgICAgICAgICAgIGd1aW50MTYga2V5c3ltID0g cHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdOwotICAgICAgICAgICAgIGd1bmljaGFyIHVu aWNoYXIgPSBpYnVzX2tleXN5bV90b191bmljb2RlIChrZXlzeW0sIEZBTFNFKTsKLS0gICAgICAg ICAgICBpZiAodW5pY2hhciA+IDApCi0tICAgICAgICAgICAgICAgIG91dGJ1ZltsZW5dID0gdW5p Y2hhcjsKLS0gICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgIG91dGJ1ZltsZW5dID0g aWJ1c19rZXl2YWxfdG9fdW5pY29kZSAoa2V5c3ltKTsKLS0gICAgICAgICAgICBpZiAoIW91dGJ1 ZltsZW5dKSB7Ci0rICAgICAgICAgICAgaWYgKHVuaWNoYXIgPiAwKSB7Ci0rICAgICAgICAgICAg ICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyKHMsIHVuaWNoYXIpOwotKyAgICAgICAgICAgIH0g ZWxzZSB7Ci0rICAgICAgICAgICAgICAgIHVuaWNoYXIgPSBpYnVzX2tleXZhbF90b191bmljb2Rl IChrZXlzeW0pOwotKyAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhcihzLCB1 bmljaGFyKTsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgaWYgKCF1bmljaGFyKSB7Ci0g ICAgICAgICAgICAgICAgIGdfd2FybmluZyAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIk5v dCBmb3VuZCBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXIgb2YgY29tcG9zZSBrZXkgMHglWCIsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdKTsKLSAg ICAgICAgICAgICB9Ci0tICAgICAgICAgICAgKytsZW47Ci0gICAgICAgICAgICAgKytoZXhjaGFy czsKLSAgICAgICAgIH0KLS0gICAgICAgIGdfYXNzZXJ0IChsZW4gPD0gSUJVU19NQVhfQ09NUE9T RV9MRU4pOwotICAgICB9Ci0gCi0tICAgIG91dGJ1ZltsZW5dID0gTCdcMCc7Ci0tICAgIGlmIChs ZW4gPT0gMCkgewotKyAgICBpZiAocy0+bGVuID09IDApIHsKLSAgICAgICAgIGlidXNfZW5naW5l X2hpZGVfcHJlZWRpdF90ZXh0ICgoSUJ1c0VuZ2luZSAqKXNpbXBsZSk7Ci0tICAgIH0KLS0gICAg ZWxzZSB7Ci0tICAgICAgICBJQnVzVGV4dCAqdGV4dCA9IGlidXNfdGV4dF9uZXdfZnJvbV91Y3M0 IChvdXRidWYpOwotKyAgICB9IGVsc2UgaWYgKHMtPmxlbiA+PSBHX01BWElOVCkgewotKyAgICAg ICAgZ193YXJuaW5nICgiJXMgaXMgdG9vIGxvbmcgY29tcG9zZSBsZW5ndGg6ICVsdSIsIHMtPnN0 ciwgcy0+bGVuKTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICAgIGludCBsZW4gPSAoaW50KXMtPmxl bjsKLSsgICAgICAgIElCdXNUZXh0ICp0ZXh0ID0gaWJ1c190ZXh0X25ld19mcm9tX3N0cmluZyAo cy0+c3RyKTsKLSAgICAgICAgIGlidXNfdGV4dF9hcHBlbmRfYXR0cmlidXRlICh0ZXh0LAotICAg ICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQRV9VTkRFUkxJTkUsIElCVVNfQVRUUl9VTkRFUkxJ TkVfU0lOR0xFLCAwLCBsZW4pOwotICAgICAgICAgaWJ1c19lbmdpbmVfdXBkYXRlX3ByZWVkaXRf dGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUsIHRleHQsIGxlbiwgVFJVRSk7Ci0gICAgIH0KLSsg ICAgZ19zdHJpbmdfZnJlZSAocywgVFJVRSk7Ci0gfQotIAotIAotLS0gCi0yLjI4LjAKLQotRnJv bSAzZTI2MDllNjhjOTEwN2NlN2M2NWUyZDU4NzZiZmRjOWYwZjhjODU0IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgot RGF0ZTogTW9uLCAyNiBKdWwgMjAyMSAyMjo1MjoyMSArMDkwMAotU3ViamVjdDogW1BBVENIIDMv Nl0gc3JjOiBVcGRhdGUgaWJ1c2tleXN5bXMuaCBmb3IgbGF0ZXN0IGRlYWQga2V5cwotCi0tLS0K LSBzcmMvaWJ1c2tleXN5bXMuaCB8IDE4NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDE4NSBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvaWJ1c2tleXN5bXMuaCBiL3NyYy9pYnVza2V5 c3ltcy5oCi1pbmRleCBkMzVlYjRhNy4uMmZiMmVhMTkgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2tl eXN5bXMuaAotKysrIGIvc3JjL2lidXNrZXlzeW1zLmgKLUBAIC0yNzQsNiArMjc0LDEwIEBACi0g I2RlZmluZSBJQlVTX0tFWV9kZWFkX2ludmVydGVkYnJldmUgMHhmZTZkCi0gI2RlZmluZSBJQlVT X0tFWV9kZWFkX2JlbG93Y29tbWEgMHhmZTZlCi0gI2RlZmluZSBJQlVTX0tFWV9kZWFkX2N1cnJl bmN5IDB4ZmU2ZgotKyNkZWZpbmUgSUJVU19LRVlfZGVhZF9sb3dsaW5lIDB4ZmU5MAotKyNkZWZp bmUgSUJVU19LRVlfZGVhZF9hYm92ZXZlcnRpY2FsbGluZSAweGZlOTEKLSsjZGVmaW5lIElCVVNf S0VZX2RlYWRfYmVsb3d2ZXJ0aWNhbGxpbmUgMHhmZTkyCi0rI2RlZmluZSBJQlVTX0tFWV9kZWFk X2xvbmdzb2xpZHVzb3ZlcmxheSAweGZlOTMKLSAjZGVmaW5lIElCVVNfS0VZX2RlYWRfYSAweGZl ODAKLSAjZGVmaW5lIElCVVNfS0VZX2RlYWRfQSAweGZlODEKLSAjZGVmaW5lIElCVVNfS0VZX2Rl YWRfZSAweGZlODIKLUBAIC0xMjAxLDYgKzEyMDUsNyBAQAotICNkZWZpbmUgSUJVU19LRVlfbGVm dGRvdWJsZXF1b3RlbWFyayAweGFkMgotICNkZWZpbmUgSUJVU19LRVlfcmlnaHRkb3VibGVxdW90 ZW1hcmsgMHhhZDMKLSAjZGVmaW5lIElCVVNfS0VZX3ByZXNjcmlwdGlvbiAweGFkNAotKyNkZWZp bmUgSUJVU19LRVlfcGVybWlsbGUgMHhhZDUKLSAjZGVmaW5lIElCVVNfS0VZX21pbnV0ZXMgMHhh ZDYKLSAjZGVmaW5lIElCVVNfS0VZX3NlY29uZHMgMHhhZDcKLSAjZGVmaW5lIElCVVNfS0VZX2xh dGluY3Jvc3MgMHhhZDkKLUBAIC0xNjMzLDggKzE2MzgsOCBAQAotICNkZWZpbmUgSUJVU19LRVlf b2Nhcm9uIDB4MTAwMDFkMgotICNkZWZpbmUgSUJVU19LRVlfb2JhcnJlZCAweDEwMDAyNzUKLSAj ZGVmaW5lIElCVVNfS0VZX1NDSFdBIDB4MTAwMDE4ZgotLSNkZWZpbmUgSUJVU19LRVlfRVpIIDB4 MTAwMDFiNwotICNkZWZpbmUgSUJVU19LRVlfc2Nod2EgMHgxMDAwMjU5Ci0rI2RlZmluZSBJQlVT X0tFWV9FWkggMHgxMDAwMWI3Ci0gI2RlZmluZSBJQlVTX0tFWV9lemggMHgxMDAwMjkyCi0gI2Rl ZmluZSBJQlVTX0tFWV9MYmVsb3dkb3QgMHgxMDAxZTM2Ci0gI2RlZmluZSBJQlVTX0tFWV9sYmVs b3dkb3QgMHgxMDAxZTM3Ci1AQCAtMjEyMSw1ICsyMTI2LDE4NCBAQAotICNkZWZpbmUgSUJVU19L RVlfU2luaF9ydXUyIDB4MTAwMGRmMgotICNkZWZpbmUgSUJVU19LRVlfU2luaF9sdXUyIDB4MTAw MGRmMwotICNkZWZpbmUgSUJVU19LRVlfU2luaF9rdW5kZGFsaXlhIDB4MTAwMGRmNAotKyNkZWZp bmUgSUJVU19LRVlfTW9kZUxvY2sgMHgxMDA4ZmYwMQotKyNkZWZpbmUgSUJVU19LRVlfTW9uQnJp Z2h0bmVzc1VwIDB4MTAwOGZmMDIKLSsjZGVmaW5lIElCVVNfS0VZX01vbkJyaWdodG5lc3NEb3du IDB4MTAwOGZmMDMKLSsjZGVmaW5lIElCVVNfS0VZX0tiZExpZ2h0T25PZmYgMHgxMDA4ZmYwNAot KyNkZWZpbmUgSUJVU19LRVlfS2JkQnJpZ2h0bmVzc1VwIDB4MTAwOGZmMDUKLSsjZGVmaW5lIElC VVNfS0VZX0tiZEJyaWdodG5lc3NEb3duIDB4MTAwOGZmMDYKLSsjZGVmaW5lIElCVVNfS0VZX1N0 YW5kYnkgMHgxMDA4ZmYxMAotKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9Mb3dlclZvbHVtZSAweDEw MDhmZjExCi0rI2RlZmluZSBJQlVTX0tFWV9BdWRpb011dGUgMHgxMDA4ZmYxMgotKyNkZWZpbmUg SUJVU19LRVlfQXVkaW9SYWlzZVZvbHVtZSAweDEwMDhmZjEzCi0rI2RlZmluZSBJQlVTX0tFWV9B dWRpb1BsYXkgMHgxMDA4ZmYxNAotKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9TdG9wIDB4MTAwOGZm MTUKLSsjZGVmaW5lIElCVVNfS0VZX0F1ZGlvUHJldiAweDEwMDhmZjE2Ci0rI2RlZmluZSBJQlVT X0tFWV9BdWRpb05leHQgMHgxMDA4ZmYxNwotKyNkZWZpbmUgSUJVU19LRVlfSG9tZVBhZ2UgMHgx MDA4ZmYxOAotKyNkZWZpbmUgSUJVU19LRVlfTWFpbCAweDEwMDhmZjE5Ci0rI2RlZmluZSBJQlVT X0tFWV9TdGFydCAweDEwMDhmZjFhCi0rI2RlZmluZSBJQlVTX0tFWV9TZWFyY2ggMHgxMDA4ZmYx YgotKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9SZWNvcmQgMHgxMDA4ZmYxYwotKyNkZWZpbmUgSUJV U19LRVlfQ2FsY3VsYXRvciAweDEwMDhmZjFkCi0rI2RlZmluZSBJQlVTX0tFWV9NZW1vIDB4MTAw OGZmMWUKLSsjZGVmaW5lIElCVVNfS0VZX1RvRG9MaXN0IDB4MTAwOGZmMWYKLSsjZGVmaW5lIElC VVNfS0VZX0NhbGVuZGFyIDB4MTAwOGZmMjAKLSsjZGVmaW5lIElCVVNfS0VZX1Bvd2VyRG93biAw eDEwMDhmZjIxCi0rI2RlZmluZSBJQlVTX0tFWV9Db250cmFzdEFkanVzdCAweDEwMDhmZjIyCi0r I2RlZmluZSBJQlVTX0tFWV9Sb2NrZXJVcCAweDEwMDhmZjIzCi0rI2RlZmluZSBJQlVTX0tFWV9S b2NrZXJEb3duIDB4MTAwOGZmMjQKLSsjZGVmaW5lIElCVVNfS0VZX1JvY2tlckVudGVyIDB4MTAw OGZmMjUKLSsjZGVmaW5lIElCVVNfS0VZX0JhY2sgMHgxMDA4ZmYyNgotKyNkZWZpbmUgSUJVU19L RVlfRm9yd2FyZCAweDEwMDhmZjI3Ci0rI2RlZmluZSBJQlVTX0tFWV9TdG9wIDB4MTAwOGZmMjgK LSsjZGVmaW5lIElCVVNfS0VZX1JlZnJlc2ggMHgxMDA4ZmYyOQotKyNkZWZpbmUgSUJVU19LRVlf UG93ZXJPZmYgMHgxMDA4ZmYyYQotKyNkZWZpbmUgSUJVU19LRVlfV2FrZVVwIDB4MTAwOGZmMmIK LSsjZGVmaW5lIElCVVNfS0VZX0VqZWN0IDB4MTAwOGZmMmMKLSsjZGVmaW5lIElCVVNfS0VZX1Nj cmVlblNhdmVyIDB4MTAwOGZmMmQKLSsjZGVmaW5lIElCVVNfS0VZX1dXVyAweDEwMDhmZjJlCi0r I2RlZmluZSBJQlVTX0tFWV9TbGVlcCAweDEwMDhmZjJmCi0rI2RlZmluZSBJQlVTX0tFWV9GYXZv cml0ZXMgMHgxMDA4ZmYzMAotKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9QYXVzZSAweDEwMDhmZjMx Ci0rI2RlZmluZSBJQlVTX0tFWV9BdWRpb01lZGlhIDB4MTAwOGZmMzIKLSsjZGVmaW5lIElCVVNf S0VZX015Q29tcHV0ZXIgMHgxMDA4ZmYzMwotKyNkZWZpbmUgSUJVU19LRVlfVmVuZG9ySG9tZSAw eDEwMDhmZjM0Ci0rI2RlZmluZSBJQlVTX0tFWV9MaWdodEJ1bGIgMHgxMDA4ZmYzNQotKyNkZWZp bmUgSUJVU19LRVlfU2hvcCAweDEwMDhmZjM2Ci0rI2RlZmluZSBJQlVTX0tFWV9IaXN0b3J5IDB4 MTAwOGZmMzcKLSsjZGVmaW5lIElCVVNfS0VZX09wZW5VUkwgMHgxMDA4ZmYzOAotKyNkZWZpbmUg SUJVU19LRVlfQWRkRmF2b3JpdGUgMHgxMDA4ZmYzOQotKyNkZWZpbmUgSUJVU19LRVlfSG90TGlu a3MgMHgxMDA4ZmYzYQotKyNkZWZpbmUgSUJVU19LRVlfQnJpZ2h0bmVzc0FkanVzdCAweDEwMDhm ZjNiCi0rI2RlZmluZSBJQlVTX0tFWV9GaW5hbmNlIDB4MTAwOGZmM2MKLSsjZGVmaW5lIElCVVNf S0VZX0NvbW11bml0eSAweDEwMDhmZjNkCi0rI2RlZmluZSBJQlVTX0tFWV9BdWRpb1Jld2luZCAw eDEwMDhmZjNlCi0rI2RlZmluZSBJQlVTX0tFWV9CYWNrRm9yd2FyZCAweDEwMDhmZjNmCi0rI2Rl ZmluZSBJQlVTX0tFWV9MYXVuY2gwIDB4MTAwOGZmNDAKLSsjZGVmaW5lIElCVVNfS0VZX0xhdW5j aDEgMHgxMDA4ZmY0MQotKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNoMiAweDEwMDhmZjQyCi0rI2Rl ZmluZSBJQlVTX0tFWV9MYXVuY2gzIDB4MTAwOGZmNDMKLSsjZGVmaW5lIElCVVNfS0VZX0xhdW5j aDQgMHgxMDA4ZmY0NAotKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNoNSAweDEwMDhmZjQ1Ci0rI2Rl ZmluZSBJQlVTX0tFWV9MYXVuY2g2IDB4MTAwOGZmNDYKLSsjZGVmaW5lIElCVVNfS0VZX0xhdW5j aDcgMHgxMDA4ZmY0NwotKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNoOCAweDEwMDhmZjQ4Ci0rI2Rl ZmluZSBJQlVTX0tFWV9MYXVuY2g5IDB4MTAwOGZmNDkKLSsjZGVmaW5lIElCVVNfS0VZX0xhdW5j aEEgMHgxMDA4ZmY0YQotKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNoQiAweDEwMDhmZjRiCi0rI2Rl ZmluZSBJQlVTX0tFWV9MYXVuY2hDIDB4MTAwOGZmNGMKLSsjZGVmaW5lIElCVVNfS0VZX0xhdW5j aEQgMHgxMDA4ZmY0ZAotKyNkZWZpbmUgSUJVU19LRVlfTGF1bmNoRSAweDEwMDhmZjRlCi0rI2Rl ZmluZSBJQlVTX0tFWV9MYXVuY2hGIDB4MTAwOGZmNGYKLSsjZGVmaW5lIElCVVNfS0VZX0FwcGxp Y2F0aW9uTGVmdCAweDEwMDhmZjUwCi0rI2RlZmluZSBJQlVTX0tFWV9BcHBsaWNhdGlvblJpZ2h0 IDB4MTAwOGZmNTEKLSsjZGVmaW5lIElCVVNfS0VZX0Jvb2sgMHgxMDA4ZmY1MgotKyNkZWZpbmUg SUJVU19LRVlfQ0QgMHgxMDA4ZmY1MwotKyNkZWZpbmUgSUJVU19LRVlfV2luZG93Q2xlYXIgMHgx MDA4ZmY1NQotKyNkZWZpbmUgSUJVU19LRVlfQ2xvc2UgMHgxMDA4ZmY1NgotKyNkZWZpbmUgSUJV U19LRVlfQ29weSAweDEwMDhmZjU3Ci0rI2RlZmluZSBJQlVTX0tFWV9DdXQgMHgxMDA4ZmY1OAot KyNkZWZpbmUgSUJVU19LRVlfRGlzcGxheSAweDEwMDhmZjU5Ci0rI2RlZmluZSBJQlVTX0tFWV9E T1MgMHgxMDA4ZmY1YQotKyNkZWZpbmUgSUJVU19LRVlfRG9jdW1lbnRzIDB4MTAwOGZmNWIKLSsj ZGVmaW5lIElCVVNfS0VZX0V4Y2VsIDB4MTAwOGZmNWMKLSsjZGVmaW5lIElCVVNfS0VZX0V4cGxv cmVyIDB4MTAwOGZmNWQKLSsjZGVmaW5lIElCVVNfS0VZX0dhbWUgMHgxMDA4ZmY1ZQotKyNkZWZp bmUgSUJVU19LRVlfR28gMHgxMDA4ZmY1ZgotKyNkZWZpbmUgSUJVU19LRVlfaVRvdWNoIDB4MTAw OGZmNjAKLSsjZGVmaW5lIElCVVNfS0VZX0xvZ09mZiAweDEwMDhmZjYxCi0rI2RlZmluZSBJQlVT X0tFWV9NYXJrZXQgMHgxMDA4ZmY2MgotKyNkZWZpbmUgSUJVU19LRVlfTWVldGluZyAweDEwMDhm ZjYzCi0rI2RlZmluZSBJQlVTX0tFWV9NZW51S0IgMHgxMDA4ZmY2NQotKyNkZWZpbmUgSUJVU19L RVlfTWVudVBCIDB4MTAwOGZmNjYKLSsjZGVmaW5lIElCVVNfS0VZX015U2l0ZXMgMHgxMDA4ZmY2 NwotKyNkZWZpbmUgSUJVU19LRVlfTmV3IDB4MTAwOGZmNjgKLSsjZGVmaW5lIElCVVNfS0VZX05l d3MgMHgxMDA4ZmY2OQotKyNkZWZpbmUgSUJVU19LRVlfT2ZmaWNlSG9tZSAweDEwMDhmZjZhCi0r I2RlZmluZSBJQlVTX0tFWV9PcGVuIDB4MTAwOGZmNmIKLSsjZGVmaW5lIElCVVNfS0VZX09wdGlv biAweDEwMDhmZjZjCi0rI2RlZmluZSBJQlVTX0tFWV9QYXN0ZSAweDEwMDhmZjZkCi0rI2RlZmlu ZSBJQlVTX0tFWV9QaG9uZSAweDEwMDhmZjZlCi0rI2RlZmluZSBJQlVTX0tFWV9SZXBseSAweDEw MDhmZjcyCi0rI2RlZmluZSBJQlVTX0tFWV9SZWxvYWQgMHgxMDA4ZmY3MwotKyNkZWZpbmUgSUJV U19LRVlfUm90YXRlV2luZG93cyAweDEwMDhmZjc0Ci0rI2RlZmluZSBJQlVTX0tFWV9Sb3RhdGlv blBCIDB4MTAwOGZmNzUKLSsjZGVmaW5lIElCVVNfS0VZX1JvdGF0aW9uS0IgMHgxMDA4ZmY3Ngot KyNkZWZpbmUgSUJVU19LRVlfU2F2ZSAweDEwMDhmZjc3Ci0rI2RlZmluZSBJQlVTX0tFWV9TY3Jv bGxVcCAweDEwMDhmZjc4Ci0rI2RlZmluZSBJQlVTX0tFWV9TY3JvbGxEb3duIDB4MTAwOGZmNzkK LSsjZGVmaW5lIElCVVNfS0VZX1Njcm9sbENsaWNrIDB4MTAwOGZmN2EKLSsjZGVmaW5lIElCVVNf S0VZX1NlbmQgMHgxMDA4ZmY3YgotKyNkZWZpbmUgSUJVU19LRVlfU3BlbGwgMHgxMDA4ZmY3Ywot KyNkZWZpbmUgSUJVU19LRVlfU3BsaXRTY3JlZW4gMHgxMDA4ZmY3ZAotKyNkZWZpbmUgSUJVU19L RVlfU3VwcG9ydCAweDEwMDhmZjdlCi0rI2RlZmluZSBJQlVTX0tFWV9UYXNrUGFuZSAweDEwMDhm ZjdmCi0rI2RlZmluZSBJQlVTX0tFWV9UZXJtaW5hbCAweDEwMDhmZjgwCi0rI2RlZmluZSBJQlVT X0tFWV9Ub29scyAweDEwMDhmZjgxCi0rI2RlZmluZSBJQlVTX0tFWV9UcmF2ZWwgMHgxMDA4ZmY4 MgotKyNkZWZpbmUgSUJVU19LRVlfVXNlclBCIDB4MTAwOGZmODQKLSsjZGVmaW5lIElCVVNfS0VZ X1VzZXIxS0IgMHgxMDA4ZmY4NQotKyNkZWZpbmUgSUJVU19LRVlfVXNlcjJLQiAweDEwMDhmZjg2 Ci0rI2RlZmluZSBJQlVTX0tFWV9WaWRlbyAweDEwMDhmZjg3Ci0rI2RlZmluZSBJQlVTX0tFWV9X aGVlbEJ1dHRvbiAweDEwMDhmZjg4Ci0rI2RlZmluZSBJQlVTX0tFWV9Xb3JkIDB4MTAwOGZmODkK LSsjZGVmaW5lIElCVVNfS0VZX1hmZXIgMHgxMDA4ZmY4YQotKyNkZWZpbmUgSUJVU19LRVlfWm9v bUluIDB4MTAwOGZmOGIKLSsjZGVmaW5lIElCVVNfS0VZX1pvb21PdXQgMHgxMDA4ZmY4YwotKyNk ZWZpbmUgSUJVU19LRVlfQXdheSAweDEwMDhmZjhkCi0rI2RlZmluZSBJQlVTX0tFWV9NZXNzZW5n ZXIgMHgxMDA4ZmY4ZQotKyNkZWZpbmUgSUJVU19LRVlfV2ViQ2FtIDB4MTAwOGZmOGYKLSsjZGVm aW5lIElCVVNfS0VZX01haWxGb3J3YXJkIDB4MTAwOGZmOTAKLSsjZGVmaW5lIElCVVNfS0VZX1Bp Y3R1cmVzIDB4MTAwOGZmOTEKLSsjZGVmaW5lIElCVVNfS0VZX011c2ljIDB4MTAwOGZmOTIKLSsj ZGVmaW5lIElCVVNfS0VZX0JhdHRlcnkgMHgxMDA4ZmY5MwotKyNkZWZpbmUgSUJVU19LRVlfQmx1 ZXRvb3RoIDB4MTAwOGZmOTQKLSsjZGVmaW5lIElCVVNfS0VZX1dMQU4gMHgxMDA4ZmY5NQotKyNk ZWZpbmUgSUJVU19LRVlfVVdCIDB4MTAwOGZmOTYKLSsjZGVmaW5lIElCVVNfS0VZX0F1ZGlvRm9y d2FyZCAweDEwMDhmZjk3Ci0rI2RlZmluZSBJQlVTX0tFWV9BdWRpb1JlcGVhdCAweDEwMDhmZjk4 Ci0rI2RlZmluZSBJQlVTX0tFWV9BdWRpb1JhbmRvbVBsYXkgMHgxMDA4ZmY5OQotKyNkZWZpbmUg SUJVU19LRVlfU3VidGl0bGUgMHgxMDA4ZmY5YQotKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9DeWNs ZVRyYWNrIDB4MTAwOGZmOWIKLSsjZGVmaW5lIElCVVNfS0VZX0N5Y2xlQW5nbGUgMHgxMDA4ZmY5 YwotKyNkZWZpbmUgSUJVU19LRVlfRnJhbWVCYWNrIDB4MTAwOGZmOWQKLSsjZGVmaW5lIElCVVNf S0VZX0ZyYW1lRm9yd2FyZCAweDEwMDhmZjllCi0rI2RlZmluZSBJQlVTX0tFWV9UaW1lIDB4MTAw OGZmOWYKLSsjZGVmaW5lIElCVVNfS0VZX1NlbGVjdEJ1dHRvbiAweDEwMDhmZmEwCi0rI2RlZmlu ZSBJQlVTX0tFWV9WaWV3IDB4MTAwOGZmYTEKLSsjZGVmaW5lIElCVVNfS0VZX1RvcE1lbnUgMHgx MDA4ZmZhMgotKyNkZWZpbmUgSUJVU19LRVlfUmVkIDB4MTAwOGZmYTMKLSsjZGVmaW5lIElCVVNf S0VZX0dyZWVuIDB4MTAwOGZmYTQKLSsjZGVmaW5lIElCVVNfS0VZX1llbGxvdyAweDEwMDhmZmE1 Ci0rI2RlZmluZSBJQlVTX0tFWV9CbHVlIDB4MTAwOGZmYTYKLSsjZGVmaW5lIElCVVNfS0VZX1N1 c3BlbmQgMHgxMDA4ZmZhNwotKyNkZWZpbmUgSUJVU19LRVlfSGliZXJuYXRlIDB4MTAwOGZmYTgK LSsjZGVmaW5lIElCVVNfS0VZX1RvdWNocGFkVG9nZ2xlIDB4MTAwOGZmYTkKLSsjZGVmaW5lIElC VVNfS0VZX1RvdWNocGFkT24gMHgxMDA4ZmZiMAotKyNkZWZpbmUgSUJVU19LRVlfVG91Y2hwYWRP ZmYgMHgxMDA4ZmZiMQotKyNkZWZpbmUgSUJVU19LRVlfQXVkaW9NaWNNdXRlIDB4MTAwOGZmYjIK LSsjZGVmaW5lIElCVVNfS0VZX0tleWJvYXJkIDB4MTAwOGZmYjMKLSsjZGVmaW5lIElCVVNfS0VZ X1dXQU4gMHgxMDA4ZmZiNAotKyNkZWZpbmUgSUJVU19LRVlfUkZLaWxsIDB4MTAwOGZmYjUKLSsj ZGVmaW5lIElCVVNfS0VZX0F1ZGlvUHJlc2V0IDB4MTAwOGZmYjYKLSsjZGVmaW5lIElCVVNfS0VZ X1N3aXRjaF9WVF8xIDB4MTAwOGZlMDEKLSsjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF8yIDB4 MTAwOGZlMDIKLSsjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF8zIDB4MTAwOGZlMDMKLSsjZGVm aW5lIElCVVNfS0VZX1N3aXRjaF9WVF80IDB4MTAwOGZlMDQKLSsjZGVmaW5lIElCVVNfS0VZX1N3 aXRjaF9WVF81IDB4MTAwOGZlMDUKLSsjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF82IDB4MTAw OGZlMDYKLSsjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF83IDB4MTAwOGZlMDcKLSsjZGVmaW5l IElCVVNfS0VZX1N3aXRjaF9WVF84IDB4MTAwOGZlMDgKLSsjZGVmaW5lIElCVVNfS0VZX1N3aXRj aF9WVF85IDB4MTAwOGZlMDkKLSsjZGVmaW5lIElCVVNfS0VZX1N3aXRjaF9WVF8xMCAweDEwMDhm ZTBhCi0rI2RlZmluZSBJQlVTX0tFWV9Td2l0Y2hfVlRfMTEgMHgxMDA4ZmUwYgotKyNkZWZpbmUg SUJVU19LRVlfU3dpdGNoX1ZUXzEyIDB4MTAwOGZlMGMKLSsjZGVmaW5lIElCVVNfS0VZX1VuZ3Jh YiAweDEwMDhmZTIwCi0rI2RlZmluZSBJQlVTX0tFWV9DbGVhckdyYWIgMHgxMDA4ZmUyMQotKyNk ZWZpbmUgSUJVU19LRVlfTmV4dF9WTW9kZSAweDEwMDhmZTIyCi0rI2RlZmluZSBJQlVTX0tFWV9Q cmV2X1ZNb2RlIDB4MTAwOGZlMjMKLSsjZGVmaW5lIElCVVNfS0VZX0xvZ1dpbmRvd1RyZWUgMHgx MDA4ZmUyNAotKyNkZWZpbmUgSUJVU19LRVlfTG9nR3JhYkluZm8gMHgxMDA4ZmUyNQotIAotICNl bmRpZiAvKiBfX0lCVVNfS0VZU1lNU19IX18gKi8KLS0tIAotMi4yOC4wCi0KLUZyb20gZGY0OTU2 NjBhNmRhNDkyZmUwY2FjOGY3ZmU3NDhmMjVhMWMzMjE3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1v biwgMjYgSnVsIDIwMjEgMjI6NTI6MjMgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzZdIHNyYy9p YnVzZW5naW5lc2ltcGxlOiBDaGFuZ2UgZ2ludCB0byBpbnQKLQotLS0tCi0gc3JjL2lidXNjb21w b3NldGFibGUuYyAgICAgICAgfCAxMjggKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LQotIHNyYy9pYnVzZW5naW5lc2ltcGxlLmMgICAgICAgIHwgIDU4ICsrKysrKystLS0tLS0tLQot IHNyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oIHwgICA2ICstCi0gMyBmaWxlcyBjaGFuZ2Vk LCA5NiBpbnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9p YnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1pbmRleCA0ZWJmMTE5 Yi4uYWE1OGYxMzYgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi0rKysgYi9z cmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1AQCAtNDcsNyArNDcsNyBAQAotIHR5cGVkZWYgc3RydWN0 IHsKLSAgIGd1bmljaGFyICAgICAqc2VxdWVuY2U7Ci0gICBndW5pY2hhciAgICAgKnZhbHVlczsK LS0gIGdjaGFyICAgICAgICAqY29tbWVudDsKLSsgIGNoYXIgICAgICAgICAqY29tbWVudDsKLSB9 IElCdXNDb21wb3NlRGF0YTsKLSAKLSAKLUBAIC04NSw3ICs4NSw3IEBAIHVuaWNoYXJfbGVuZ3Ro IChndW5pY2hhciAqdW5pX2FycmF5KQotIAotIAotIHN0YXRpYyBnYm9vbGVhbgotLWlzX2NvZGVw b2ludCAoY29uc3QgZ2NoYXIgKnN0cikKLStpc19jb2RlcG9pbnQgKGNvbnN0IGNoYXIgKnN0cikK LSB7Ci0gICAgIGludCBpOwotIAotQEAgLTEwNCwxMSArMTA0LDExIEBAIGlzX2NvZGVwb2ludCAo Y29uc3QgZ2NoYXIgKnN0cikKLSAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBwYXJzZV9jb21wb3NlX3Zh bHVlIChJQnVzQ29tcG9zZURhdGEgICpjb21wb3NlX2RhdGEsCi0tICAgICAgICAgICAgICAgICAg ICAgY29uc3QgZ2NoYXIgICAgICAqdmFsLAotLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj aGFyICAgICAgKmxpbmUpCi0rICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAq dmFsLAotKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgKmxpbmUpCi0gewot LSAgICBnY2hhciAqaGVhZCwgKmVuZCwgKnA7Ci0tICAgIGdjaGFyICp1c3RyID0gTlVMTDsKLSsg ICAgY2hhciAqaGVhZCwgKmVuZCwgKnA7Ci0rICAgIGNoYXIgKnVzdHIgPSBOVUxMOwotICAgICBn dW5pY2hhciAqdWNoYXJzID0gTlVMTCwgKnVwOwotICAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsK LSAgICAgaW50IG5fdWNoYXJzID0gMDsKLUBAIC0xODQsMTAgKzE4NCwxMCBAQCBmYWlsOgotIAot IHN0YXRpYyBpbnQKLSBwYXJzZV9jb21wb3NlX3NlcXVlbmNlIChJQnVzQ29tcG9zZURhdGEgKmNv bXBvc2VfZGF0YSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKnNl cSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAgKmxpbmUpCi0rICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICpzZXEsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICpsaW5lKQotIHsKLS0gICAgZ2NoYXIgKip3b3Jk cyA9IGdfc3Ryc3BsaXQgKHNlcSwgIjwiLCAtMSk7Ci0rICAgIGNoYXIgKip3b3JkcyA9IGdfc3Ry c3BsaXQgKHNlcSwgIjwiLCAtMSk7Ci0gICAgIGludCBpOwotICAgICBpbnQgbiA9IDA7Ci0gCi1A QCAtMTk4LDkgKzE5OCw5IEBAIHBhcnNlX2NvbXBvc2Vfc2VxdWVuY2UgKElCdXNDb21wb3NlRGF0 YSAqY29tcG9zZV9kYXRhLAotICAgICB9Ci0gCi0gICAgIGZvciAoaSA9IDE7IHdvcmRzW2ldICE9 IE5VTEw7IGkrKykgewotLSAgICAgICAgZ2NoYXIgKnN0YXJ0ID0gd29yZHNbaV07Ci0tICAgICAg ICBnY2hhciAqZW5kID0gaW5kZXggKHdvcmRzW2ldLCAnPicpOwotLSAgICAgICAgZ2NoYXIgKm1h dGNoOwotKyAgICAgICAgY2hhciAqc3RhcnQgPSB3b3Jkc1tpXTsKLSsgICAgICAgIGNoYXIgKmVu ZCA9IGluZGV4ICh3b3Jkc1tpXSwgJz4nKTsKLSsgICAgICAgIGNoYXIgKm1hdGNoOwotICAgICAg ICAgZ3VuaWNoYXIgY29kZXBvaW50OwotIAotICAgICAgICAgaWYgKHdvcmRzW2ldWzBdID09ICdc MCcpCi1AQCAtMjU2LDE4ICsyNTYsMTggQEAgZmFpbDoKLSB9Ci0gCi0gCi0tc3RhdGljIGdjaGFy ICoKLS1leHBhbmRfaW5jbHVkZV9wYXRoIChjb25zdCBnY2hhciAqaW5jbHVkZV9wYXRoKSB7Ci0t ICAgIGdjaGFyICpvdXQgPSBzdHJkdXAgKCIiKTsKLS0gICAgY29uc3QgZ2NoYXIgKmhlYWQsICpp OwotLSAgICBnY2hhciAqZm9ybWVyLCAqbzsKLStzdGF0aWMgY2hhciAqCi0rZXhwYW5kX2luY2x1 ZGVfcGF0aCAoY29uc3QgY2hhciAqaW5jbHVkZV9wYXRoKSB7Ci0rICAgIGNoYXIgKm91dCA9IHN0 cmR1cCAoIiIpOwotKyAgICBjb25zdCBjaGFyICpoZWFkLCAqaTsKLSsgICAgY2hhciAqZm9ybWVy LCAqbzsKLSAKLSAgICAgZm9yIChoZWFkID0gaSA9IGluY2x1ZGVfcGF0aDsgKmk7ICsraSkgewot ICAgICAgICAgLyogZXhwYW5kIHNlcXVlbmNlICovCi0gICAgICAgICBpZiAoKmkgPT0gJyUnKSB7 Ci0gICAgICAgICAgICAgc3dpdGNoICgqKGkgKyAxKSkgewotICAgICAgICAgICAgIGNhc2UgJ0gn OiB7IC8qICRIT01FICovCi0tICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpob21lID0gZ2V0 ZW52ICgiSE9NRSIpOwotKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpob21lID0gZ2V0ZW52 ICgiSE9NRSIpOwotICAgICAgICAgICAgICAgICBpZiAoIWhvbWUpIHsKLSAgICAgICAgICAgICAg ICAgICAgIGdfd2FybmluZyAoIndoaWxlIHBhcnNpbmcgWENvbXBvc2UgaW5jbHVkZSB0YXJnZXQg JXMsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUlSCByZXBsYWNlbWVudCBm YWlsZWQgYmVjYXVzZSBIT01FIGlzIG5vdCAiCi1AQCAtMzI1LDExICszMjUsMTEgQEAgZmFpbDoK LSAKLSBzdGF0aWMgdm9pZAotIHBhcnNlX2NvbXBvc2VfbGluZSAoR0xpc3QgICAgICAgKipjb21w b3NlX2xpc3QsCi0tICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgKmxpbmUsCi0rICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgKmxpbmUsCi0gICAgICAgICAgICAgICAgICAg ICBpbnQgICAgICAgICAgKmNvbXBvc2VfbGVuLAotLSAgICAgICAgICAgICAgICAgICAgZ2NoYXIg ICAgICAgICoqaW5jbHVkZSkKLSsgICAgICAgICAgICAgICAgICAgIGNoYXIgICAgICAgICoqaW5j bHVkZSkKLSB7Ci0tICAgIGdjaGFyICoqY29tcG9uZW50cyA9IE5VTEw7Ci0rICAgIGNoYXIgKipj b21wb25lbnRzID0gTlVMTDsKLSAgICAgSUJ1c0NvbXBvc2VEYXRhICpjb21wb3NlX2RhdGEgPSBO VUxMOwotICAgICBpbnQgbDsKLSAKLUBAIC0zOTUsMTMgKzM5NSwxMyBAQCBmYWlsOgotIH0KLSAK LSAKLS1zdGF0aWMgZ2NoYXIgKgotK3N0YXRpYyBjaGFyICoKLSBnZXRfZW5fY29tcG9zZV9maWxl ICh2b2lkKQotIHsKLS0gICAgZ2NoYXIgKiBjb25zdCBzeXNfbGFuZ3NbXSA9IHsgImVuX1VTLlVU Ri04IiwgImVuX1VTIiwgImVuLlVURi04IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImVuIiwgTlVMTCB9OwotLSAgICBnY2hhciAqIGNvbnN0ICpzeXNfbGFuZyA9IE5VTEw7 Ci0tICAgIGdjaGFyICpwYXRoID0gTlVMTDsKLSsgICAgY2hhciAqIGNvbnN0IHN5c19sYW5nc1td ID0geyAiZW5fVVMuVVRGLTgiLCAiZW5fVVMiLCAiZW4uVVRGLTgiLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJlbiIsIE5VTEwgfTsKLSsgICAgY2hhciAqIGNvbnN0ICpzeXNf bGFuZyA9IE5VTEw7Ci0rICAgIGNoYXIgKnBhdGggPSBOVUxMOwotICAgICBmb3IgKHN5c19sYW5n ID0gc3lzX2xhbmdzOyAqc3lzX2xhbmc7IHN5c19sYW5nKyspIHsKLSAgICAgICAgIHBhdGggPSBn X2J1aWxkX2ZpbGVuYW1lIChYMTFfREFUQURJUiwgKnN5c19sYW5nLCAiQ29tcG9zZSIsIE5VTEwp OwotICAgICAgICAgaWYgKGdfZmlsZV90ZXN0IChwYXRoLCBHX0ZJTEVfVEVTVF9FWElTVFMpKQot QEAgLTQxMywxMSArNDEzLDExIEBAIGdldF9lbl9jb21wb3NlX2ZpbGUgKHZvaWQpCi0gCi0gCi0g c3RhdGljIEdMaXN0ICoKLS1pYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChjb25zdCBnY2hh ciAqY29tcG9zZV9maWxlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAg ICAgICptYXhfY29tcG9zZV9sZW4pCi0raWJ1c19jb21wb3NlX2xpc3RfcGFyc2VfZmlsZSAoY29u c3QgY2hhciAqY29tcG9zZV9maWxlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCAgICAgICAgKm1heF9jb21wb3NlX2xlbikKLSB7Ci0tICAgIGdjaGFyICpjb250ZW50cyA9IE5V TEw7Ci0tICAgIGdjaGFyICoqbGluZXMgPSBOVUxMOwotKyAgICBjaGFyICpjb250ZW50cyA9IE5V TEw7Ci0rICAgIGNoYXIgKipsaW5lcyA9IE5VTEw7Ci0gICAgIGdzaXplIGxlbmd0aCA9IDA7Ci0g ICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotICAgICBHTGlzdCAqY29tcG9zZV9saXN0ID0gTlVM TDsKLUBAIC00MzUsMTQgKzQzNSwxNCBAQCBpYnVzX2NvbXBvc2VfbGlzdF9wYXJzZV9maWxlIChj b25zdCBnY2hhciAqY29tcG9zZV9maWxlLAotICAgICBnX2ZyZWUgKGNvbnRlbnRzKTsKLSAgICAg Zm9yIChpID0gMDsgbGluZXNbaV0gIT0gTlVMTDsgaSsrKSB7Ci0gICAgICAgICBpbnQgY29tcG9z ZV9sZW4gPSAwOwotLSAgICAgICAgZ2NoYXIgKmluY2x1ZGUgPSBOVUxMOwotKyAgICAgICAgY2hh ciAqaW5jbHVkZSA9IE5VTEw7Ci0gICAgICAgICBwYXJzZV9jb21wb3NlX2xpbmUgKCZjb21wb3Nl X2xpc3QsIGxpbmVzW2ldLCAmY29tcG9zZV9sZW4sICZpbmNsdWRlKTsKLSAgICAgICAgIGlmICgq bWF4X2NvbXBvc2VfbGVuIDwgY29tcG9zZV9sZW4pCi0gICAgICAgICAgICAgKm1heF9jb21wb3Nl X2xlbiA9IGNvbXBvc2VfbGVuOwotICAgICAgICAgaWYgKGluY2x1ZGUgJiYgKmluY2x1ZGUpIHsK LSAgICAgICAgICAgICBHU3RhdEJ1ZiBidWZfaW5jbHVkZSA9IHsgMCwgfTsKLSAgICAgICAgICAg ICBHU3RhdEJ1ZiBidWZfcGFyZW50ID0geyAwLCB9OwotLSAgICAgICAgICAgIGdjaGFyICplbl9j b21wb3NlOwotKyAgICAgICAgICAgIGNoYXIgKmVuX2NvbXBvc2U7Ci0gICAgICAgICAgICAgZXJy bm8gPSAwOwotICAgICAgICAgICAgIGlmIChnX3N0YXQgKGluY2x1ZGUsICAmYnVmX2luY2x1ZGUp KSB7Ci0gICAgICAgICAgICAgICAgIGdfd2FybmluZyAoIkNhbm5vdCBhY2Nlc3MgJXM6ICVzIiwK LUBAIC01ODgsNyArNTg4LDcgQEAgaWJ1c19jb21wb3NlX2xpc3RfY2hlY2tfZHVwbGljYXRlZCAo R0xpc3QgKmNvbXBvc2VfbGlzdCwKLSB9Ci0gCi0gCi0tc3RhdGljIGdpbnQKLStzdGF0aWMgaW50 Ci0gaWJ1c19jb21wb3NlX2RhdGFfY29tcGFyZSAoZ3BvaW50ZXIgYSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBncG9pbnRlciBiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdw b2ludGVyIGRhdGEpCi1AQCAtNjI1LDcgKzYyNSw3IEBAIGlidXNfY29tcG9zZV9saXN0X3ByaW50 IChHTGlzdCAqY29tcG9zZV9saXN0LAotICAgICBpbnQgaSwgajsKLSAgICAgSUJ1c0NvbXBvc2VE YXRhICpjb21wb3NlX2RhdGE7Ci0gICAgIGludCB0b3RhbF9zaXplID0gMDsKLS0gICAgY29uc3Qg Z2NoYXIgKmtleXZhbDsKLSsgICAgY29uc3QgY2hhciAqa2V5dmFsOwotIAotICAgICBmb3IgKGxp c3QgPSBjb21wb3NlX2xpc3Q7IGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKLSAg ICAgICAgIGNvbXBvc2VfZGF0YSA9IGxpc3QtPmRhdGE7Ci1AQCAtNjgyLDEzICs2ODIsMTMgQEAg aWJ1c19jb21wb3NlX3RhYmxlX2RhdGFfaGFzaCAoZ2NvbnN0cG9pbnRlciB2LAotIH0KLSAKLSAK LS1zdGF0aWMgZ2NoYXIgKgotK3N0YXRpYyBjaGFyICoKLSBpYnVzX2NvbXBvc2VfaGFzaF9nZXRf Y2FjaGVfcGF0aCAoZ3VpbnQzMiBoYXNoKQotIHsKLS0gICAgZ2NoYXIgKmJhc2VuYW1lID0gTlVM TDsKLS0gICAgY29uc3QgZ2NoYXIgKmNhY2hlX2RpcjsKLS0gICAgZ2NoYXIgKmRpciA9IE5VTEw7 Ci0tICAgIGdjaGFyICpwYXRoID0gTlVMTDsKLSsgICAgY2hhciAqYmFzZW5hbWUgPSBOVUxMOwot KyAgICBjb25zdCBjaGFyICpjYWNoZV9kaXI7Ci0rICAgIGNoYXIgKmRpciA9IE5VTEw7Ci0rICAg IGNoYXIgKnBhdGggPSBOVUxMOwotIAotICAgICBiYXNlbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAo IiUwOHguY2FjaGUiLCBoYXNoKTsKLSAKLUBAIC03MTUsNyArNzE1LDcgQEAgaWJ1c19jb21wb3Nl X2hhc2hfZ2V0X2NhY2hlX3BhdGggKGd1aW50MzIgaGFzaCkKLSBzdGF0aWMgR1ZhcmlhbnQgKgot IGlidXNfY29tcG9zZV90YWJsZV9zZXJpYWxpemUgKElCdXNDb21wb3NlVGFibGVFeCAqY29tcG9z ZV90YWJsZSkKLSB7Ci0tICAgIGNvbnN0IGdjaGFyICpoZWFkZXIgPSBJQlVTX0NPTVBPU0VfVEFC TEVfTUFHSUM7Ci0rICAgIGNvbnN0IGNoYXIgKmhlYWRlciA9IElCVVNfQ09NUE9TRV9UQUJMRV9N QUdJQzsKLSAgICAgY29uc3QgZ3VpbnQxNiB2ZXJzaW9uID0gSUJVU19DT01QT1NFX1RBQkxFX1ZF UlNJT047Ci0gICAgIGd1aW50MTYgbWF4X3NlcV9sZW47Ci0gICAgIGd1aW50MTYgaW5kZXhfc3Ry aWRlOwotQEAgLTgyNSw3ICs4MjUsNyBAQCBvdXRfc2VyaWFsaXplOgotIH0KLSAKLSAKLS1zdGF0 aWMgZ2ludAotK3N0YXRpYyBpbnQKLSBpYnVzX2NvbXBvc2VfdGFibGVfZmluZCAoZ2NvbnN0cG9p bnRlciBkYXRhMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NvbnN0cG9pbnRlciBkYXRh MikKLSB7Ci1AQCAtODM3LDggKzgzNyw4IEBAIGlidXNfY29tcG9zZV90YWJsZV9maW5kIChnY29u c3Rwb2ludGVyIGRhdGExLAotIAotIAotIHN0YXRpYyBJQnVzQ29tcG9zZVRhYmxlRXggKgotLWli dXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAoY29uc3QgZ2NoYXIgKmNvbnRlbnRzLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgIGxlbmd0aCkKLStpYnVz X2NvbXBvc2VfdGFibGVfZGVzZXJpYWxpemUgKGNvbnN0IGNoYXIgKmNvbnRlbnRzLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgICAgICAgbGVuZ3RoKQotIHsKLSAgICAg SUJ1c0NvbXBvc2VUYWJsZUV4ICpyZXR2YWwgPSBOVUxMOwotICAgICBHVmFyaWFudFR5cGUgKnR5 cGU7Ci1AQCAtODQ2LDcgKzg0Niw3IEBAIGlidXNfY29tcG9zZV90YWJsZV9kZXNlcmlhbGl6ZSAo Y29uc3QgZ2NoYXIgKmNvbnRlbnRzLAotICAgICBHVmFyaWFudCAqdmFyaWFudF9kYXRhXzMyYml0 X2ZpcnN0ID0gTlVMTDsKLSAgICAgR1ZhcmlhbnQgKnZhcmlhbnRfZGF0YV8zMmJpdF9zZWNvbmQg PSBOVUxMOwotICAgICBHVmFyaWFudCAqdmFyaWFudF90YWJsZSA9IE5VTEw7Ci0tICAgIGNvbnN0 IGdjaGFyICpoZWFkZXIgPSBOVUxMOwotKyAgICBjb25zdCBjaGFyICpoZWFkZXIgPSBOVUxMOwot ICAgICBndWludDE2IHZlcnNpb24gPSAwOwotICAgICBndWludDE2IG1heF9zZXFfbGVuID0gMDsK LSAgICAgZ3VpbnQxNiBuX3NlcXMgPSAwOwotQEAgLTEwMjAsOCArMTAyMCw4IEBAIGlidXNfY29t cG9zZV90YWJsZV9sb2FkX2NhY2hlIChjb25zdCBnY2hhciAqY29tcG9zZV9maWxlKQotIHsKLSAg ICAgSUJ1c0NvbXBvc2VUYWJsZUV4ICpyZXR2YWwgPSBOVUxMOwotICAgICBndWludDMyIGhhc2g7 Ci0tICAgIGdjaGFyICpwYXRoID0gTlVMTDsKLS0gICAgZ2NoYXIgKmNvbnRlbnRzID0gTlVMTDsK LSsgICAgY2hhciAqcGF0aCA9IE5VTEw7Ci0rICAgIGNoYXIgKmNvbnRlbnRzID0gTlVMTDsKLSAg ICAgR1N0YXRCdWYgb3JpZ2luYWxfYnVmOwotICAgICBHU3RhdEJ1ZiBjYWNoZV9idWY7Ci0gICAg IGdzaXplIGxlbmd0aCA9IDA7Ci1AQCAtMTA2Myw5ICsxMDYzLDkgQEAgaWJ1c19jb21wb3NlX3Rh YmxlX2xvYWRfY2FjaGUgKGNvbnN0IGdjaGFyICpjb21wb3NlX2ZpbGUpCi0gdm9pZAotIGlidXNf Y29tcG9zZV90YWJsZV9zYXZlX2NhY2hlIChJQnVzQ29tcG9zZVRhYmxlRXggKmNvbXBvc2VfdGFi bGUpCi0gewotLSAgICBnY2hhciAqcGF0aCA9IE5VTEw7Ci0rICAgIGNoYXIgKnBhdGggPSBOVUxM OwotICAgICBHVmFyaWFudCAqdmFyaWFudF90YWJsZSA9IE5VTEw7Ci0tICAgIGNvbnN0IGdjaGFy ICpjb250ZW50cyA9IE5VTEw7Ci0rICAgIGNvbnN0IGNoYXIgKmNvbnRlbnRzID0gTlVMTDsKLSAg ICAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gICAgIGdzaXplIGxlbmd0aCA9IDA7Ci0gCi1AQCAt MTM5MiwxMyArMTM5MiwxMyBAQCBjb21wYXJlX3NlcSAoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2 b2lkICp2YWx1ZSkKLSBnYm9vbGVhbgotIGlidXNfY29tcG9zZV90YWJsZV9jaGVjayAoY29uc3Qg SUJ1c0NvbXBvc2VUYWJsZUV4ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50MTYgICAgICAgICAgICAgICAgICAqY29tcG9zZV9idWZmZXIsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICAgICpjb21w b3NlX2ZpbmlzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAg ICAgICAgICAqY29tcG9zZV9tYXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIEdTdHJp bmcgICAgICAgICAgICAgICAgICAqb3V0cHV0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2Jvb2xlYW4gICAgICAgICAgICAgICAgICBpc18zMmJpdCkKLSB7Ci0tICAgIGdpbnQgcm93X3N0 cmlkZSA9IHRhYmxlLT5tYXhfc2VxX2xlbiArIDI7Ci0rICAgIGludCByb3dfc3RyaWRlID0gdGFi bGUtPm1heF9zZXFfbGVuICsgMjsKLSAgICAgZ3VpbnQxNiAqZGF0YV9maXJzdDsKLSAgICAgaW50 IG5fc2VxczsKLSAgICAgZ3VpbnQxNiAqc2VxOwotQEAgLTE0NDgsNyArMTQ0OCw3IEBAIGlidXNf Y29tcG9zZV90YWJsZV9jaGVjayAoY29uc3QgSUJ1c0NvbXBvc2VUYWJsZUV4ICp0YWJsZSwKLSAg ICAgICAgIGd1bmljaGFyIHZhbHVlID0gMDsKLSAgICAgICAgIGludCBudW0gPSAwOwotICAgICAg ICAgaW50IGluZGV4ID0gMDsKLS0gICAgICAgIGdjaGFyICpvdXRwdXRfc3RyID0gTlVMTDsKLSsg ICAgICAgIGNoYXIgKm91dHB1dF9zdHIgPSBOVUxMOwotICAgICAgICAgR0Vycm9yICplcnJvciA9 IE5VTEw7Ci0gCi0gICAgICAgICBpZiAoaXNfMzJiaXQpIHsKLUBAIC0xNTI2LDE1ICsxNTI2LDE1 IEBAIGdib29sZWFuCi0gaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sgKGNvbnN0IElC dXNDb21wb3NlVGFibGVDb21wYWN0RXggKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBndWludDE2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfYnVmZmVyLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu X2NvbXBvc2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ2Jvb2xlYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9maW5pc2gsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGd1bmljaGFyICAgICAgICAgICAgICAgICAgICAgICAq Km91dHB1dF9jaGFycykKLSB7Ci0tICAgIGdpbnQgcm93X3N0cmlkZTsKLSsgICAgaW50IHJvd19z dHJpZGU7Ci0gICAgIGd1aW50MTYgKnNlcV9pbmRleDsKLSAgICAgZ3VpbnQxNiAqc2VxOwotLSAg ICBnaW50IGk7Ci0rICAgIGludCBpOwotIAotICAgICBpZiAoY29tcG9zZV9maW5pc2gpCi0gICAg ICAgICAqY29tcG9zZV9maW5pc2ggPSBGQUxTRTsKLUBAIC0xNjU0LDE0ICsxNjU0LDE0IEBAIGli dXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrIChjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29t cGFjdEV4ICp0YWJsZSwKLSAgKiBwZXJtdXRhdGlvbnMgb2YgdGhlIGRpYWNyaXRpYyBtYXJrcywg dGhlbiBhdHRlbXB0IHRvIG5vcm1hbGl6ZS4KLSAgKi8KLSBzdGF0aWMgZ2Jvb2xlYW4KLS1jaGVj a19ub3JtYWxpemVfbmZjIChndW5pY2hhciogY29tYmluYXRpb25fYnVmZmVyLCBnaW50IG5fY29t cG9zZSkKLStjaGVja19ub3JtYWxpemVfbmZjIChndW5pY2hhciogY29tYmluYXRpb25fYnVmZmVy LCBpbnQgbl9jb21wb3NlKQotIHsKLSAgICAgZ3VuaWNoYXIgY29tYmluYXRpb25fYnVmZmVyX3Rl bXBbSUJVU19NQVhfQ09NUE9TRV9MRU5dOwotLSAgICBnY2hhciAqY29tYmluYXRpb25fdXRmOF90 ZW1wID0gTlVMTDsKLS0gICAgZ2NoYXIgKm5mY190ZW1wID0gTlVMTDsKLS0gICAgZ2ludCBuX2Nv bWJpbmF0aW9uczsKLSsgICAgY2hhciAqY29tYmluYXRpb25fdXRmOF90ZW1wID0gTlVMTDsKLSsg ICAgY2hhciAqbmZjX3RlbXAgPSBOVUxMOwotKyAgICBpbnQgbl9jb21iaW5hdGlvbnM7Ci0gICAg IGd1bmljaGFyIHRlbXBfc3dhcDsKLS0gICAgZ2ludCBpOwotKyAgICBpbnQgaTsKLSAKLSAgICAg bl9jb21iaW5hdGlvbnMgPSAxOwotIAotQEAgLTE3MDMsOCArMTcwMyw4IEBAIGNoZWNrX25vcm1h bGl6ZV9uZmMgKGd1bmljaGFyKiBjb21iaW5hdGlvbl9idWZmZXIsIGdpbnQgbl9jb21wb3NlKQot ICAgICAgICAgZ19mcmVlIChuZmNfdGVtcCk7Ci0gCi0gICAgICAgICBpZiAobl9jb21wb3NlID4g MikgewotLSAgICAgICAgICAgIGdpbnQgaiA9IGkgJSAobl9jb21wb3NlIC0gMSkgKyAxOwotLSAg ICAgICAgICAgIGdpbnQgayA9IChpKzEpICUgKG5fY29tcG9zZSAtIDEpICsgMTsKLSsgICAgICAg ICAgICBpbnQgaiA9IGkgJSAobl9jb21wb3NlIC0gMSkgKyAxOwotKyAgICAgICAgICAgIGludCBr ID0gKGkrMSkgJSAobl9jb21wb3NlIC0gMSkgKyAxOwotICAgICAgICAgICAgIGlmIChqID49IElC VVNfTUFYX0NPTVBPU0VfTEVOKSB7Ci0gICAgICAgICAgICAgICAgIGdfd2FybmluZyAoImogPj0g SUJVU19NQVhfQ09NUE9TRV9MRU4gZm9yICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJjb21iaW5hdGlvbl9idWZmZXJfdGVtcCIpOwotQEAgLTE3MjksMTMgKzE3MjksMTMgQEAgY2hl Y2tfbm9ybWFsaXplX25mYyAoZ3VuaWNoYXIqIGNvbWJpbmF0aW9uX2J1ZmZlciwgZ2ludCBuX2Nv bXBvc2UpCi0gCi0gZ2Jvb2xlYW4KLSBpYnVzX2NoZWNrX2FsZ29yaXRobWljYWxseSAoY29uc3Qg Z3VpbnQxNiAqY29tcG9zZV9idWZmZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdp bnQgICAgICAgICAgIG5fY29tcG9zZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 ICAgICAgICAgICAgbl9jb21wb3NlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndW5p Y2hhciAgICAgICpvdXRwdXRfY2hhcikKLSAKLSB7Ci0tICAgIGdpbnQgaTsKLSsgICAgaW50IGk7 Ci0gICAgIGd1bmljaGFyIGNvbWJpbmF0aW9uX2J1ZmZlcltJQlVTX01BWF9DT01QT1NFX0xFTl07 Ci0tICAgIGdjaGFyICpjb21iaW5hdGlvbl91dGY4LCAqbmZjOwotKyAgICBjaGFyICpjb21iaW5h dGlvbl91dGY4LCAqbmZjOwotIAotICAgICBpZiAob3V0cHV0X2NoYXIpCi0gICAgICAgICAqb3V0 cHV0X2NoYXIgPSAwOwotZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMgYi9zcmMv aWJ1c2VuZ2luZXNpbXBsZS5jCi1pbmRleCA1N2NhMTBjNC4uNjk5Y2YwZDQgMTAwNjQ0Ci0tLS0g YS9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCi0rKysgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCi1A QCAtNzksOCArNzksOCBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gc3RydWN0IF9JQnVzRW5naW5lU2lt cGxlUHJpdmF0ZSB7Ci0gICAgIGd1aW50MTYgICAgICAgICAgICAqY29tcG9zZV9idWZmZXI7Ci0g ICAgIGd1bmljaGFyICAgICAgICAgICAgdGVudGF0aXZlX21hdGNoOwotLSAgICBnY2hhciAgICAg ICAgICAgICAgKnRlbnRhdGl2ZV9lbW9qaTsKLS0gICAgZ2ludCAgICAgICAgICAgICAgICB0ZW50 YXRpdmVfbWF0Y2hfbGVuOwotKyAgICBjaGFyICAgICAgICAgICAgICAgKnRlbnRhdGl2ZV9lbW9q aTsKLSsgICAgaW50ICAgICAgICAgICAgICAgICB0ZW50YXRpdmVfbWF0Y2hfbGVuOwotIAotICAg ICBndWludCAgICAgICAgICAgICAgIGhleF9tb2RlX2VuYWJsZWQgOiAxOwotICAgICBndWludCAg ICAgICAgICAgICAgIGluX2hleF9zZXF1ZW5jZSA6IDE7Ci1AQCAtMTQyLDcgKzE0Miw3IEBAIHN0 YXRpYyB2b2lkICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY2FuZGlkYXRlX2NsaWNrZWQKLSBzdGF0 aWMgdm9pZCAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChJQnVzRW5naW5lU2lt cGxlICAgICpzaW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgY2gpOwotIHN0YXRpYyB2b2lkICAgICBpYnVz X2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAgKElCdXNFbmdpbmVTaW1wbGUgICAgKnNpbXBsZSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBn Y2hhciAgICAgICAgICpzdHIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAgICAgICAgKnN0cik7Ci0gc3RhdGljIHZvaWQgICAg IGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c0VuZ2luZVNpbXBsZSAgICAqc2lt cGxlKTsKLSAKLUBAIC0yNjAsMTAgKzI2MCwxMCBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0 X2NoYXIgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAKLSBzdGF0aWMgdm9pZAotIGlidXNf ZW5naW5lX3NpbXBsZV9jb21taXRfc3RyIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAgKnN0cikKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAgICAgICAqc3RyKQotIHsKLSAg ICAgSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUgKnByaXYgPSBzaW1wbGUtPnByaXY7Ci0tICAgIGdj aGFyICpiYWNrdXBfc3RyOwotKyAgICBjaGFyICpiYWNrdXBfc3RyOwotIAotICAgICBnX3JldHVy bl9pZl9mYWlsIChzdHIgJiYgKnN0cik7Ci0gCi1AQCAtMzY4LDE1ICszNjgsMTUgQEAgaWJ1c19l bmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBs ZSkKLSAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBjaGVja19oZXggKElCdXNFbmdpbmVTaW1wbGUgKnNp bXBsZSwKLS0gICAgICAgICAgIGdpbnQgICAgICAgICAgICAgIG5fY29tcG9zZSkKLSsgICAgICAg ICAgIGludCAgICAgICAgICAgICAgIG5fY29tcG9zZSkKLSB7Ci0gICAgIElCdXNFbmdpbmVTaW1w bGVQcml2YXRlICpwcml2ID0gc2ltcGxlLT5wcml2OwotIAotLSAgICBnaW50IGk7Ci0rICAgIGlu dCBpOwotICAgICBHU3RyaW5nICpzdHI7Ci0gICAgIGd1bG9uZyBuOwotLSAgICBnY2hhciAqbnB0 ciA9IE5VTEw7Ci0tICAgIGdjaGFyIGJ1Zls3XTsKLSsgICAgY2hhciAqbnB0ciA9IE5VTEw7Ci0r ICAgIGNoYXIgYnVmWzddOwotIAotICAgICBDSEVDS19DT01QT1NFX0JVRkZFUl9MRU5HVEggKG5f Y29tcG9zZSk7Ci0gCi1AQCAtNDUzLDE0ICs0NTMsMTQgQEAgbG9hZF9lbW9qaV9kaWN0ICgpCi0g Ci0gc3RhdGljIGdib29sZWFuCi0gY2hlY2tfZW1vamlfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUg ICAgICAgKnNpbXBsZSwKLS0gICAgICAgICAgICAgICAgICAgZ2ludCAgICAgICAgICAgICAgICAg ICAgbl9jb21wb3NlLAotLSAgICAgICAgICAgICAgICAgICBnaW50ICAgICAgICAgICAgICAgICAg ICBpbmRleCkKLSsgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbl9j b21wb3NlLAotKyAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBpbmRl eCkKLSB7Ci0gICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2ltcGxlLT5wcml2 OwotICAgICBJQnVzRW5naW5lRGljdCAqZW1vamlfZGljdCA9IHByaXYtPmVtb2ppX2RpY3Q7Ci0g ICAgIEdTdHJpbmcgKnN0ciA9IE5VTEw7Ci0tICAgIGdpbnQgaTsKLS0gICAgZ2NoYXIgYnVmWzdd OwotKyAgICBpbnQgaTsKLSsgICAgY2hhciBidWZbN107Ci0gICAgIEdTTGlzdCAqd29yZHMgPSBO VUxMOwotIAotICAgICBnX2Fzc2VydCAoSUJVU19JU19FTkdJTkVfU0lNUExFIChzaW1wbGUpKTsK LUBAIC01MzUsNyArNTM1LDcgQEAgY2hlY2tfZW1vamlfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUg ICAgICAgKnNpbXBsZSwKLSAKLSBzdGF0aWMgZ2Jvb2xlYW4KLSBub19zZXF1ZW5jZV9tYXRjaGVz IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0tICAgICAgICAgICAgICAgICAgICAgZ2ludCAg ICAgICAgICAgICAgbl9jb21wb3NlLAotKyAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAg ICAgICAgIG5fY29tcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAg ICBrZXl2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAga2V5Y29k ZSwKLSAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBtb2RpZmllcnMpCi1A QCAtNTUwLDcgKzU1MCw3IEBAIG5vX3NlcXVlbmNlX21hdGNoZXMgKElCdXNFbmdpbmVTaW1wbGUg KnNpbXBsZSwKLSAgICAgICogbWF0Y2ggcGVuZGluZy4KLSAgICAgICovCi0gICAgIGlmIChwcml2 LT50ZW50YXRpdmVfbWF0Y2gpIHsKLS0gICAgICAgIGdpbnQgbGVuID0gcHJpdi0+dGVudGF0aXZl X21hdGNoX2xlbjsKLSsgICAgICAgIGludCBsZW4gPSBwcml2LT50ZW50YXRpdmVfbWF0Y2hfbGVu OwotICAgICAgICAgaW50IGk7Ci0gCi0gICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0 X2NoYXIgKHNpbXBsZSwgcHJpdi0+dGVudGF0aXZlX21hdGNoKTsKLUBAIC02MTUsNyArNjE1LDcg QEAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9sb29rdXBfYW5kX2F1eF90YWJsZSAoSUJ1c0Vu Z2luZVNpbXBsZSAqc2ltcGxlKQotIHsKLSAgICAgSUJ1c0VuZ2luZVNpbXBsZVByaXZhdGUgKnBy aXY7Ci0gICAgIGd1aW50IGluZGV4LCBjYW5kaWRhdGVzOwotLSAgICBnY2hhciAqYXV4X2xhYmVs ID0gTlVMTDsKLSsgICAgY2hhciAqYXV4X2xhYmVsID0gTlVMTDsKLSAgICAgSUJ1c1RleHQgKnRl eHQgPSBOVUxMOwotIAotICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX0VOR0lORV9TSU1Q TEUgKHNpbXBsZSkpOwotQEAgLTY5Nyw3ICs2OTcsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfc2V0 X251bWJlcl9vbl9sb29rdXBfdGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAKLSBz dGF0aWMgZ2Jvb2xlYW4KLSBpYnVzX2VuZ2luZV9zaW1wbGVfY2hlY2tfYWxsX2NvbXBvc2VfdGFi bGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgIG5fY29tcG9zZSkKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgIG5f Y29tcG9zZSkKLSB7Ci0gICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2ltcGxl LT5wcml2OwotICAgICBnYm9vbGVhbiBjb21wb3NlX2ZpbmlzaCA9IEZBTFNFOwotQEAgLTgxOCw3 ICs4MTgsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdp bmUgKmVuZ2luZSwKLSB7Ci0gICAgIElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSA9IChJQnVzRW5n aW5lU2ltcGxlICopZW5naW5lOwotICAgICBJQnVzRW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdiA9 IHNpbXBsZS0+cHJpdjsKLS0gICAgZ2ludCBuX2NvbXBvc2UgPSAwOwotKyAgICBpbnQgbl9jb21w b3NlID0gMDsKLSAgICAgZ2Jvb2xlYW4gaGF2ZV9oZXhfbW9kczsKLSAgICAgZ2Jvb2xlYW4gaXNf aGV4X3N0YXJ0ID0gRkFMU0U7Ci0gICAgIGdib29sZWFuIGlzX2Vtb2ppX3N0YXJ0ID0gRkFMU0U7 Ci1AQCAtODI4LDcgKzgyOCw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVu dCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICBnYm9vbGVhbiBpc19lc2NhcGU7Ci0gICAgIGd1 aW50IGhleF9rZXl2YWw7Ci0gICAgIGd1aW50IHByaW50YWJsZV9rZXl2YWw7Ci0tICAgIGdpbnQg aTsKLSsgICAgaW50IGk7Ci0gCi0gICAgIHdoaWxlIChuX2NvbXBvc2UgPD0gQ09NUE9TRV9CVUZG RVJfU0laRSAmJiBwcml2LT5jb21wb3NlX2J1ZmZlcltuX2NvbXBvc2VdICE9IDApCi0gICAgICAg ICBuX2NvbXBvc2UrKzsKLUBAIC0xMjc0LDcgKzEyNzQsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVf Y2FuZGlkYXRlX2NsaWNrZWQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAgSUJ1c0VuZ2luZVNp bXBsZSAqc2ltcGxlID0gKElCdXNFbmdpbmVTaW1wbGUgKillbmdpbmU7Ci0gICAgIElCdXNFbmdp bmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2ltcGxlLT5wcml2OwotICAgICBndWludCBrZXl2YWw7 Ci0tICAgIGdpbnQgbl9jb21wb3NlID0gMDsKLSsgICAgaW50IG5fY29tcG9zZSA9IDA7Ci0gCi0g ICAgIGlmIChwcml2LT5sb29rdXBfdGFibGUgPT0gTlVMTCB8fCAhcHJpdi0+bG9va3VwX3RhYmxl X3Zpc2libGUpCi0gICAgICAgICByZXR1cm47Ci1AQCAtMTMwOCwxOCArMTMwOCwxOCBAQCBpYnVz X2VuZ2luZV9zaW1wbGVfYWRkX3RhYmxlX2J5X2xvY2FsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2lt cGxlLAotIHsKLSAgICAgLyogTm93IGlidXNfZW5naW5lX3NpbXBsZV9hZGRfY29tcG9zZV9maWxl KCkgYWx3YXlzIHJldHVybnMgVFJVRS4gKi8KLSAgICAgZ2Jvb2xlYW4gcmV0dmFsID0gVFJVRTsK LS0gICAgZ2NoYXIgKnBhdGggPSBOVUxMOwotLSAgICBjb25zdCBnY2hhciAqaG9tZTsKLSsgICAg Y2hhciAqcGF0aCA9IE5VTEw7Ci0rICAgIGNvbnN0IGNoYXIgKmhvbWU7Ci0gI2lmIEdMSUJfQ0hF Q0tfVkVSU0lPTiAoMiwgNTgsIDApCi0tICAgIGNvbnN0IGdjaGFyICogY29uc3QgKmxhbmdzOwot LSAgICBjb25zdCBnY2hhciAqIGNvbnN0ICpsYW5nID0gTlVMTDsKLSsgICAgY29uc3QgY2hhciAq IGNvbnN0ICpsYW5nczsKLSsgICAgY29uc3QgY2hhciAqIGNvbnN0ICpsYW5nID0gTlVMTDsKLSAj ZWxzZQotLSAgICBjb25zdCBnY2hhciAqX2xvY2FsZTsKLS0gICAgZ2NoYXIgKipsYW5ncyA9IE5V TEw7Ci0tICAgIGdjaGFyICoqbGFuZyA9IE5VTEw7Ci0rICAgIGNvbnN0IGNoYXIgKl9sb2NhbGU7 Ci0rICAgIGNoYXIgKipsYW5ncyA9IE5VTEw7Ci0rICAgIGNoYXIgKipsYW5nID0gTlVMTDsKLSAj ZW5kaWYKLS0gICAgZ2NoYXIgKiBjb25zdCBzeXNfbGFuZ3NbXSA9IHsgImVsX2dyIiwgImZpX2Zp IiwgInB0X2JyIiwgTlVMTCB9OwotLSAgICBnY2hhciAqIGNvbnN0ICpzeXNfbGFuZyA9IE5VTEw7 Ci0rICAgIGNoYXIgKiBjb25zdCBzeXNfbGFuZ3NbXSA9IHsgImVsX2dyIiwgImZpX2ZpIiwgInB0 X2JyIiwgTlVMTCB9OwotKyAgICBjaGFyICogY29uc3QgKnN5c19sYW5nID0gTlVMTDsKLSAKLSAg ICAgaWYgKGxvY2FsZSA9PSBOVUxMKSB7Ci0gICAgICAgICBwYXRoID0gZ19idWlsZF9maWxlbmFt ZSAoZ19nZXRfdXNlcl9jb25maWdfZGlyICgpLAotZGlmZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5l c2ltcGxlcHJpdmF0ZS5oIGIvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2YXRlLmgKLWluZGV4IDQ3 ZjJhM2Q0Li41NDc5ZTU1MyAxMDA2NDQKLS0tLSBhL3NyYy9pYnVzZW5naW5lc2ltcGxlcHJpdmF0 ZS5oCi0rKysgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaAotQEAgLTQzLDExICs0Mywx MSBAQCBzdHJ1Y3QgX0lCdXNDb21wb3NlVGFibGVDb21wYWN0UHJpdmF0ZQotIH07Ci0gCi0gZ2Jv b2xlYW4gaWJ1c19jaGVja19hbGdvcml0aG1pY2FsbHkgKGNvbnN0IGd1aW50MTYgICAgICAgICAg ICAgICpjb21wb3NlX2J1ZmZlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2ludCAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29t cG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VuaWNoYXIgICAg ICAgICAgICAgICAgICAgKm91dHB1dCk7Ci0gZ2Jvb2xlYW4gaWJ1c19jb21wb3NlX3RhYmxlX2No ZWNrICAgKGNvbnN0IElCdXNDb21wb3NlVGFibGVFeCAgICp0YWJsZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQxNiAgICAgICAgICAgICAgICAgICAgKmNvbXBv c2VfYnVmZmVyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50ICAg ICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbl9jb21wb3NlLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAg ICAgICAqY29tcG9zZV9maW5pc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdib29sZWFuICAgICAgICAgICAgICAgICAgICpjb21wb3NlX21hdGNoLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU3RyaW5nICAgICAgICAgICAgICAgICAgICAq b3V0cHV0LAotQEAgLTU2LDcgKzU2LDcgQEAgZ2Jvb2xlYW4gaWJ1c19jb21wb3NlX3RhYmxlX2Nv bXBhY3RfY2hlY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qg SUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RFeAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFibGUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50MTYgICAgICAgICAgICAgICAgICAgICpjb21w b3NlX2J1ZmZlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAg ICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAg ICAgICAgKmNvbXBvc2VfZmluaXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBndW5pY2hhciAgICAgICAgICAgICAgICAgICoqb3V0cHV0X2NoYXJzKTsKLSBndW5pY2hh ciBpYnVzX2tleXN5bV90b191bmljb2RlICAgICAoZ3VpbnQxNiAgICAgICAgICAgICAgICAgICAg IGtleXN5bSwKLS0tIAotMi4yOC4wCi0KLUZyb20gNDI1OWYxNjMyNGQ1NzhhYTI1MDVjZjUwZjJm MjM5MjNkOGQ4N2U3NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8 dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMjYgSnVsIDIwMjEgMjI6NTM6 MTkgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA1LzZdIHNyYy9pYnVzZW5naW5lc2ltcGxlOiBNYWtl IENvbXBvc2UgcHJlZWRpdCBsZXNzIGludHJ1c2l2ZQotCi1Ud2VhayB0aGUgcHJlZWRpdCBkaXNw bGF5IGZvciBDb21wb3NlIHNlcXVlbmNlcyB0bwotYmUgbm90IHNvIGRpc3RyYWN0aW5nLiBXZSBv bmx5IHNob3cgdGhlIENvbXBvc2Uga2V5Ci13aGVuIGl0IG9jY3VycyBpbiB0aGUgbWlkZGxlIG9m IHRoZSBzZXF1ZW5jZSBvciBpcwotdGhlIG9ubHkga2V5IHNvIGZhci4KLQotQlVHPWh0dHBzOi8v Z2l0bGFiLmdub21lLm9yZy9HTk9NRS9ndGsvLS9pc3N1ZXMvMzY2OQotQlVHPWh0dHBzOi8vZ2l0 bGFiLmdub21lLm9yZy9HTk9NRS9ndGsvLS9tZXJnZV9yZXF1ZXN0cy8zMjIwCi1CVUc9aHR0cHM6 Ly9ibG9nLmd0ay5vcmcvMjAyMS8wMy8yNC9pbnB1dC1yZXZpc2l0ZWQvCi0tLS0KLSBzcmMvaWJ1 c2NvbXBvc2V0YWJsZS5jICAgICAgICB8IDE3NSArKysrKysrKysrKy0tLS0tLS0tLQotIHNyYy9p YnVzZW5naW5lc2ltcGxlLmMgICAgICAgIHwgMzAxICsrKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0KLSBzcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaCB8ICAgOSArLQotIDMgZmls ZXMgY2hhbmdlZCwgMzI1IGluc2VydGlvbnMoKyksIDE2MCBkZWxldGlvbnMoLSkKLQotZGlmZiAt LWdpdCBhL3NyYy9pYnVzY29tcG9zZXRhYmxlLmMgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1p bmRleCBhYTU4ZjEzNi4uMmFkMjE1NTEgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2NvbXBvc2V0YWJs ZS5jCi0rKysgYi9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jCi1AQCAtMTUyMywyMyArMTUyMywyMiBA QCBjb21wYXJlX3NlcV9pbmRleCAoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICp2YWx1ZSkK LSAgKiBJQnVzQ29tcG9zZURhdGEtPnZhbHVlc1tdIGlzIHRoZSBndW5pY2hhciBhcnJheS4KLSAg Ki8KLSBnYm9vbGVhbgotLWlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrIChjb25zdCBJ QnVzQ29tcG9zZVRhYmxlQ29tcGFjdEV4ICp0YWJsZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQxNgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlciwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bl9jb21wb3NlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbgot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICpjb21wb3NlX2ZpbmlzaCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAgICAgICoqb3V0cHV0X2NoYXJzKQotK2lidXNf Y29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrIChjb25zdCBJQnVzQ29tcG9zZVRhYmxlQ29tcGFj dEV4Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICp0YWJsZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQxNiAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBvc2VfYnVmZmVyLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAg bl9jb21wb3NlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAg ICAgICAgICAgICAgICAgICAgICAqY29tcG9zZV9maW5pc2gsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1bmljaGFyICAgICAgICAgICAgICAgICAgICAgKipvdXRwdXRfY2hh cnMpCi0gewotICAgICBpbnQgcm93X3N0cmlkZTsKLSAgICAgZ3VpbnQxNiAqc2VxX2luZGV4Owot ICAgICBndWludDE2ICpzZXE7Ci0gICAgIGludCBpOwotIAotLSAgICBpZiAoY29tcG9zZV9maW5p c2gpCi0tICAgICAgICAqY29tcG9zZV9maW5pc2ggPSBGQUxTRTsKLS0gICAgaWYgKG91dHB1dF9j aGFycykKLS0gICAgICAgICpvdXRwdXRfY2hhcnMgPSBOVUxMOwotKyAgICAvKiBjb21wb3NlX2Zp bmlzaCBhbmQgb3V0cHV0X2NoYXJzIHNob3VsZCBub3QgYmUgaW5pdGlhbGl6ZWQgYmVjYXVzZQot KyAgICAgKiBpYnVzX2NvbXBvc2VfdGFibGVfY2hlY2soKSBpcyBjYWxsZWQgYXQgZmlyc3QgYW5k Ci0rICAgICAqIGVuZ2luZS0+cHJpdi0+dGVudGF0aXZlX21hdGNoIHdpbGwgYmUgcHJlZWRpdCBh ZnRlciB0aGlzIGlzIGNhbGxlZC4KLSsgICAgICovCi0gCi0gICAgIC8qIFdpbGwgbmV2ZXIgbWF0 Y2gsIGlmIHRoZSBzZXF1ZW5jZSBpbiB0aGUgY29tcG9zZSBidWZmZXIgaXMgbG9uZ2VyCi0gICAg ICAqIHRoYW4gdGhlIHNlcXVlbmNlcyBpbiB0aGUgdGFibGUuICBGdXJ0aGVyLCBjb21wYXJlX3Nl cSAoa2V5LCB2YWwpCi1AQCAtMTU4OCw3ICsxNTg3LDggQEAgaWJ1c19jb21wb3NlX3RhYmxlX2Nv bXBhY3RfY2hlY2sgKGNvbnN0IElCdXNDb21wb3NlVGFibGVDb21wYWN0RXggKnRhYmxlLAotICAg ICAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkKLSAgICAgICAgICAgICAgICAgKmNvbXBvc2Vf ZmluaXNoID0gVFJVRTsKLSAgICAgICAgICAgICBpZiAob3V0cHV0X2NoYXJzKSB7Ci0tICAgICAg ICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIGxlbmd0aCArIDEpOwot KyAgICAgICAgICAgICAgICBpZiAoISgqb3V0cHV0X2NoYXJzKSkKLSsgICAgICAgICAgICAgICAg ICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIGxlbmd0aCArIDEpOwotICAgICAg ICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgICAg ICAgICAgICgqb3V0cHV0X2NoYXJzKVtqXSA9IHRhYmxlLT5wcml2LT5kYXRhMltpbmRleCArIGpd OwotICAgICAgICAgICAgICAgICB9Ci1AQCAtMTYyMiw3ICsxNjIyLDggQEAgaWJ1c19jb21wb3Nl X3RhYmxlX2NvbXBhY3RfY2hlY2sgKGNvbnN0IElCdXNDb21wb3NlVGFibGVDb21wYWN0RXggKnRh YmxlLAotICAgICAgICAgICAgIGlmIChjb21wb3NlX2ZpbmlzaCkKLSAgICAgICAgICAgICAgICAg KmNvbXBvc2VfZmluaXNoID0gVFJVRTsKLSAgICAgICAgICAgICBpZiAob3V0cHV0X2NoYXJzKSB7 Ci0tICAgICAgICAgICAgICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIDIpOwot KyAgICAgICAgICAgICAgICBpZiAoISgqb3V0cHV0X2NoYXJzKSkKLSsgICAgICAgICAgICAgICAg ICAgICpvdXRwdXRfY2hhcnMgPSBnX25ldyAoZ3VuaWNoYXIsIDIpOwotICAgICAgICAgICAgICAg ICAoKm91dHB1dF9jaGFycylbMF0gPSBzZXFbcm93X3N0cmlkZSAtIDFdOwotICAgICAgICAgICAg ICAgICAoKm91dHB1dF9jaGFycylbMV0gPSAwOwotICAgICAgICAgICAgIH0KLUBAIC0xNjM1LDE2 ICsxNjM2LDYgQEAgaWJ1c19jb21wb3NlX3RhYmxlX2NvbXBhY3RfY2hlY2sgKGNvbnN0IElCdXND b21wb3NlVGFibGVDb21wYWN0RXggKnRhYmxlLAotIH0KLSAKLSAKLS0vKiBDaGVja3MgaWYgYSBr ZXlzeW0gaXMgYSBkZWFkIGtleS4gRGVhZCBrZXkga2V5c3ltIHZhbHVlcyBhcmUgZGVmaW5lZCBp bgotLSAqIC4uL2dkay9nZGtrZXlzeW1zLmggYW5kIHRoZSBmaXJzdCBpcyBHREtfS0VZX2RlYWRf Z3JhdmUuIEFzIFguT3JnIGlzIHVwZGF0ZWQsCi0tICogbW9yZSBkZWFkIGtleXMgYXJlIGFkZGVk IGFuZCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGUgdXBwZXIgbGltaXQuCi0tICogQ3VycmVudGx5LCB0 aGUgdXBwZXIgbGltaXQgaXMgR0RLX0tFWV9kZWFkX2Rhc2lhKzEuIFRoZSArMSBoYXMgdG8gZG8g d2l0aAotLSAqIGEgdGVtcG9yYXJ5IGlzc3VlIGluIHRoZSBYLk9yZyBoZWFkZXIgZmlsZXMuCi0t ICogSW4gZnV0dXJlIHZlcnNpb25zIGl0IHdpbGwgYmUganVzdCB0aGUga2V5c3ltIChubyArMSku Ci0tICovCi0tI2RlZmluZSBJU19ERUFEX0tFWShrKSBcCi0tICAgICAgKChrKSA+PSBJQlVTX0tF WV9kZWFkX2dyYXZlICYmIChrKSA8PSBJQlVTX0tFWV9kZWFkX2dyZWVrKQotLQotIC8qIFRoaXMg ZnVuY3Rpb24gcmVjZWl2ZXMgYSBzZXF1ZW5jZSBvZiBVbmljb2RlIGNoYXJhY3RlcnMgYW5kIHRy aWVzIHRvCi0gICogbm9ybWFsaXplIGl0IChORkMpLiBXZSBjaGVjayBmb3IgdGhlIGNhc2UgdGhl IHRoZSByZXN1bHRpbmcgc3RyaW5nCi0gICogaGFzIGxlbmd0aCAxIChzaW5nbGUgY2hhcmFjdGVy KS4KLUBAIC0xNzU0LDcgKzE3NDUsOCBAQCBpYnVzX2NoZWNrX2FsZ29yaXRobWljYWxseSAoY29u c3QgZ3VpbnQxNiAqY29tcG9zZV9idWZmZXIsCi0gICAgICAgICBpLS07Ci0gICAgICAgICB3aGls ZSAoaSA+PSAwKSB7Ci0gICAgICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyW2krMV0gPSBpYnVz X2tleXN5bV90b191bmljb2RlIChjb21wb3NlX2J1ZmZlcltpXSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUpOwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVFJVRSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgIGlmICghY29tYmluYXRpb25fYnVm ZmVyW2krMV0pIHsKLSAgICAgICAgICAgICAgICAgY29tYmluYXRpb25fYnVmZmVyW2krMV0gPQot ICAgICAgICAgICAgICAgICAgICAgICAgIGlidXNfa2V5dmFsX3RvX3VuaWNvZGUgKGNvbXBvc2Vf YnVmZmVyW2ldKTsKLUBAIC0xNzg2LDY2ICsxNzc4LDkxIEBAIGlidXNfY2hlY2tfYWxnb3JpdGht aWNhbGx5IChjb25zdCBndWludDE2ICpjb21wb3NlX2J1ZmZlciwKLSAKLSAKLSBndW5pY2hhcgot LWlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGd1aW50MTYgIGtleXN5bSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBnYm9vbGVhbiBjb21iaW5pbmcpIHsKLS0jZGVmaW5lIENBU0Uoa2V5c3ltX3N1 ZmZpeCwgdW5pY29kZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAg ICAgICBjYXNlIElCVVNfS0VZX2RlYWRfIyNrZXlzeW1fc3VmZml4OiByZXR1cm4gdW5pY29kZQot LSNkZWZpbmUgQ0FTRV9DT01CSU5FKGtleXN5bV9zdWZmaXgsIGNvbWJpbmVkX3VuaWNvZGUsIGlz b2xhdGVkX3VuaWNvZGUpIFwKLS0gICAgICAgIGNhc2UgSUJVU19LRVlfZGVhZF8jI2tleXN5bV9z dWZmaXg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0tICAgICAgICAgICAgaWYgKGNv bWJpbmluZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot LSAgICAgICAgICAgICAgICByZXR1cm4gY29tYmluZWRfdW5pY29kZTsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0raWJ1c19rZXlzeW1fdG9fdW5p Y29kZSAoZ3VpbnQxNiAgIGtleXN5bSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVh biAgY29tYmluaW5nLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICpuZWVkX3Nw YWNlKSB7Ci0rI2RlZmluZSBDQVNFKGtleXN5bV9zdWZmaXgsIHVuaWNvZGUsIHNwKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgY2FzZSBJQlVTX0tFWV9k ZWFkXyMja2V5c3ltX3N1ZmZpeDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK LSsgICAgICAgICAgICBpZiAobmVlZF9zcGFjZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICpuZWVkX3NwYWNlID0g c3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAg ICAgICAgIHJldHVybiB1bmljb2RlCi0rI2RlZmluZSBDQVNFX0NPTUJJTkUoa2V5c3ltX3N1ZmZp eCwgY29tYmluZWRfdW5pY29kZSwgaXNvbGF0ZWRfdW5pY29kZSwgc3ApICAgXAotKyAgICAgICAg Y2FzZSBJQlVTX0tFWV9kZWFkXyMja2V5c3ltX3N1ZmZpeDogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICBpZiAobmVlZF9zcGFjZSkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAg ICpuZWVkX3NwYWNlID0gc3A7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAotKyAgICAgICAgICAgIGlmIChjb21iaW5pbmcpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgcmV0dXJu IGNvbWJpbmVkX3VuaWNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc Ci0rICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICByZXR1cm4gaXNvbGF0 ZWRfdW5pY29kZQotICAgICBzd2l0Y2ggKGtleXN5bSkgewotLSAgICBDQVNFIChhLCAweDAzMDQx KTsKLS0gICAgQ0FTRSAoQSwgMHgwMzA0Mik7Ci0tICAgIENBU0UgKGksIDB4MDMwNDMpOwotLSAg ICBDQVNFIChJLCAweDAzMDQ0KTsKLS0gICAgQ0FTRSAodSwgMHgwMzA0NSk7Ci0tICAgIENBU0Ug KFUsIDB4MDMwNDYpOwotLSAgICBDQVNFIChlLCAweDAzMDQ3KTsKLS0gICAgQ0FTRSAoRSwgMHgw MzA0OCk7Ci0tICAgIENBU0UgKG8sIDB4MDMwNDkpOwotLSAgICBDQVNFIChPLCAweDAzMDRBKTsK LS0gICAgQ0FTRSAgICAgICAgIChhYm92ZWNvbW1hLCAgICAgICAgICAgICAgICAgICAweDAzMTMp OwotLSAgICBDQVNFX0NPTUJJTkUgKGFib3ZlZG90LCAgICAgICAgICAgICAgICAgICAgIDB4MDMw NywgMHgwMkQ5KTsKLS0gICAgQ0FTRSAgICAgICAgIChhYm92ZXJldmVyc2VkY29tbWEsICAgICAg ICAgICAweDAzMTQpOwotLSAgICBDQVNFX0NPTUJJTkUgKGFib3ZlcmluZywgICAgICAgICAgICAg ICAgICAgIDB4MDMwQSwgMHgwMkRBKTsKLS0gICAgQ0FTRV9DT01CSU5FIChhY3V0ZSwgICAgICAg ICAgICAgICAgICAgICAgICAweDAzMDEsIDB4MDBCNCk7Ci0tICAgIENBU0UgICAgICAgICAoYmVs b3dicmV2ZSwgICAgICAgICAgICAgICAgICAgMHgwMzJFKTsKLS0gICAgQ0FTRV9DT01CSU5FIChi ZWxvd2NpcmN1bWZsZXgsICAgICAgICAgICAgICAweDAzMkQsIDB4QTc4OCk7Ci0tICAgIENBU0Vf Q09NQklORSAoYmVsb3djb21tYSwgICAgICAgICAgICAgICAgICAgMHgwMzI2LCAweDAwMkMpOwot LSAgICBDQVNFICAgICAgICAgKGJlbG93ZGlhZXJlc2lzLCAgICAgICAgICAgICAgIDB4MDMyNCk7 Ci0tICAgIENBU0VfQ09NQklORSAoYmVsb3dkb3QsICAgICAgICAgICAgICAgICAgICAgMHgwMzIz LCAweDAwMkUpOwotLSAgICBDQVNFX0NPTUJJTkUgKGJlbG93bWFjcm9uLCAgICAgICAgICAgICAg ICAgIDB4MDMzMSwgMHgwMkNEKTsKLS0gICAgQ0FTRV9DT01CSU5FIChiZWxvd3JpbmcsICAgICAg ICAgICAgICAgICAgICAweDAzMEEsIDB4MDJGMyk7Ci0tICAgIENBU0VfQ09NQklORSAoYmVsb3d0 aWxkZSwgICAgICAgICAgICAgICAgICAgMHgwMzMwLCAweDAyRjcpOwotLSAgICBDQVNFX0NPTUJJ TkUgKGJyZXZlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwNiwgMHgwMkQ4KTsKLS0gICAg Q0FTRV9DT01CSU5FIChjYXBpdGFsX3NjaHdhLCAgICAgICAgICAgICAgICAweDAxOEYsIDB4MDRE OCk7Ci0tICAgIENBU0VfQ09NQklORSAoY2Fyb24sICAgICAgICAgICAgICAgICAgICAgICAgMHgw MzBDLCAweDAyQzcpOwotLSAgICBDQVNFX0NPTUJJTkUgKGNlZGlsbGEsICAgICAgICAgICAgICAg ICAgICAgIDB4MDMyNywgMHgwMEI4KTsKLS0gICAgQ0FTRV9DT01CSU5FIChjaXJjdW1mbGV4LCAg ICAgICAgICAgICAgICAgICAweDAzMDIsIDB4MDA1RSk7Ci0tICAgIENBU0UgICAgICAgICAoY3Vy cmVuY3ksICAgICAgICAgICAgICAgICAgICAgMHgwMEE0KTsKLSsjaWZkZWYgSUJVU19FTkdMSVNI X0RFQURfS0VZCi0rICAgIENBU0UgKGEsIDB4MDM2MywgMSk7Ci0rICAgIENBU0UgKEEsIDB4MDM2 MywgMSk7Ci0rICAgIENBU0UgKGksIDB4MDM2NSwgMSk7Ci0rICAgIENBU0UgKEksIDB4MDM2NSwg MSk7Ci0rICAgIENBU0UgKHUsIDB4MDM2NywgMSk7Ci0rICAgIENBU0UgKFUsIDB4MDM2NywgMSk7 Ci0rICAgIENBU0UgKGUsIDB4MDM2NCwgMSk7Ci0rICAgIENBU0UgKEUsIDB4MDM2NCwgMSk7Ci0r ICAgIENBU0UgKG8sIDB4MDM2NiwgMSk7Ci0rICAgIENBU0UgKE8sIDB4MDM2NiwgMSk7Ci0rI2Vs c2UKLSsgICAgQ0FTRSAoYSwgMHgzMDQxLCAwKTsKLSsgICAgQ0FTRSAoQSwgMHgzMDQyLCAwKTsK LSsgICAgQ0FTRSAoaSwgMHgzMDQzLCAwKTsKLSsgICAgQ0FTRSAoSSwgMHgzMDQ0LCAwKTsKLSsg ICAgQ0FTRSAodSwgMHgzMDQ1LCAwKTsKLSsgICAgQ0FTRSAoVSwgMHgzMDQ2LCAwKTsKLSsgICAg Q0FTRSAoZSwgMHgzMDQ3LCAwKTsKLSsgICAgQ0FTRSAoRSwgMHgzMDQ4LCAwKTsKLSsgICAgQ0FT RSAobywgMHgzMDQ5LCAwKTsKLSsgICAgQ0FTRSAoTywgMHgzMDRBLCAwKTsKLSsjZW5kaWYKLSsg ICAgQ0FTRV9DT01CSU5FIChhYm92ZWNvbW1hLCAgICAgICAgICAgICAgICAgICAweDAzMTMsIDB4 MDJCQywgMCk7Ci0rICAgIENBU0VfQ09NQklORSAoYWJvdmVkb3QsICAgICAgICAgICAgICAgICAg ICAgMHgwMzA3LCAweDAyRDksIDApOwotKyAgICBDQVNFX0NPTUJJTkUgKGFib3ZlcmV2ZXJzZWRj b21tYSwgICAgICAgICAgIDB4MDMxNCwgMHgwMkJELCAwKTsKLSsgICAgQ0FTRV9DT01CSU5FIChh Ym92ZXJpbmcsICAgICAgICAgICAgICAgICAgICAweDAzMEEsIDB4MDJEQSwgMCk7Ci0rICAgIENB U0VfQ09NQklORSAoYWJvdmV2ZXJ0aWNhbGxpbmUsICAgICAgICAgICAgMHgwMzBELCAweDAyQzgs IDApOwotKyAgICBDQVNFX0NPTUJJTkUgKGFjdXRlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDMwMSwgMHgwMEI0LCAwKTsKLSsgICAgQ0FTRSAgICAgICAgIChiZWxvd2JyZXZlLCAgICAgICAg ICAgICAgICAgICAweDAzMkUsIDEpOwotKyAgICBDQVNFX0NPTUJJTkUgKGJlbG93Y2lyY3VtZmxl eCwgICAgICAgICAgICAgIDB4MDMyRCwgMHhBNzg4LCAwKTsKLSsgICAgQ0FTRV9DT01CSU5FIChi ZWxvd2NvbW1hLCAgICAgICAgICAgICAgICAgICAweDAzMjYsIDB4MDAyQywgMCk7Ci0rICAgIENB U0UgICAgICAgICAoYmVsb3dkaWFlcmVzaXMsICAgICAgICAgICAgICAgMHgwMzI0LCAxKTsKLSsg ICAgQ0FTRV9DT01CSU5FIChiZWxvd2RvdCwgICAgICAgICAgICAgICAgICAgICAweDAzMjMsIDB4 MDAyRSwgMCk7Ci0rICAgIENBU0VfQ09NQklORSAoYmVsb3dtYWNyb24sICAgICAgICAgICAgICAg ICAgMHgwMzMxLCAweDAyQ0QsIDApOwotKyAgICBDQVNFX0NPTUJJTkUgKGJlbG93cmluZywgICAg ICAgICAgICAgICAgICAgIDB4MDMwQSwgMHgwMkYzLCAwKTsKLSsgICAgQ0FTRV9DT01CSU5FIChi ZWxvd3RpbGRlLCAgICAgICAgICAgICAgICAgICAweDAzMzAsIDB4MDJGNywgMCk7Ci0rICAgIENB U0VfQ09NQklORSAoYmVsb3d2ZXJ0aWNhbGxpbmUsICAgICAgICAgICAgMHgwMzI5LCAweDAyQ0Ms IDApOwotKyAgICBDQVNFX0NPTUJJTkUgKGJyZXZlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4 MDMwNiwgMHgwMkQ4LCAwKTsKLSsgICAgQ0FTRV9DT01CSU5FIChjYXBpdGFsX3NjaHdhLCAgICAg ICAgICAgICAgICAweDFERUEsIDB4MUQ0QSwgMCk7Ci0rICAgIENBU0VfQ09NQklORSAoY2Fyb24s ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMzBDLCAweDAyQzcsIDApOwotKyAgICBDQVNFX0NP TUJJTkUgKGNlZGlsbGEsICAgICAgICAgICAgICAgICAgICAgIDB4MDMyNywgMHgwMEI4LCAwKTsK LSsgICAgQ0FTRV9DT01CSU5FIChjaXJjdW1mbGV4LCAgICAgICAgICAgICAgICAgICAweDAzMDIs IDB4MDA1RSwgMCk7Ci0rICAgIENBU0UgICAgICAgICAoY3VycmVuY3ksICAgICAgICAgICAgICAg ICAgICAgMHgwMEE0LCAwKTsKLSAgICAgLy8gSUJVU19LRVlfZGVhZF9kYXNpYSA9PSBJQlVTX0tF WV9kZWFkX2Fib3ZlcmV2ZXJzZWRjb21tYQotLSAgICBDQVNFX0NPTUJJTkUgKGRpYWVyZXNpcywg ICAgICAgICAgICAgICAgICAgIDB4MDMwOCwgMHgwMEE4KTsKLS0gICAgQ0FTRV9DT01CSU5FIChk b3VibGVhY3V0ZSwgICAgICAgICAgICAgICAgICAweDAzMEIsIDB4MDJERCk7Ci0tICAgIENBU0Vf Q09NQklORSAoZG91YmxlZ3JhdmUsICAgICAgICAgICAgICAgICAgMHgwMzBGLCAweDAyRjUpOwot LSAgICBDQVNFX0NPTUJJTkUgKGdyYXZlLCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMCwg MHgwMDYwKTsKLS0gICAgQ0FTRSAgICAgICAgIChncmVlaywgICAgICAgICAgICAgICAgICAgICAg ICAweDAzQkMpOwotLSAgICBDQVNFICAgICAgICAgKGhvb2ssICAgICAgICAgICAgICAgICAgICAg ICAgIDB4MDMwOSk7Ci0tICAgIENBU0UgICAgICAgICAoaG9ybiwgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMzFCKTsKLS0gICAgQ0FTRSAgICAgICAgIChpbnZlcnRlZGJyZXZlLCAgICAgICAg ICAgICAgICAweDAzMkYpOwotLSAgICBDQVNFX0NPTUJJTkUgKGlvdGEsICAgICAgICAgICAgICAg ICAgICAgICAgIDB4MDM0NSwgMHgwMzdBKTsKLS0gICAgQ0FTRV9DT01CSU5FIChtYWNyb24sICAg ICAgICAgICAgICAgICAgICAgICAweDAzMDQsIDB4MDBBRik7Ci0tICAgIENBU0VfQ09NQklORSAo b2dvbmVrLCAgICAgICAgICAgICAgICAgICAgICAgMHgwMzI4LCAweDAyREIpOwotKyAgICBDQVNF X0NPTUJJTkUgKGRpYWVyZXNpcywgICAgICAgICAgICAgICAgICAgIDB4MDMwOCwgMHgwMEE4LCAw KTsKLSsgICAgQ0FTRV9DT01CSU5FIChkb3VibGVhY3V0ZSwgICAgICAgICAgICAgICAgICAweDAz MEIsIDB4MDJERCwgMCk7Ci0rICAgIENBU0VfQ09NQklORSAoZG91YmxlZ3JhdmUsICAgICAgICAg ICAgICAgICAgMHgwMzBGLCAweDAyRjUsIDApOwotKyAgICBDQVNFX0NPTUJJTkUgKGdyYXZlLCAg ICAgICAgICAgICAgICAgICAgICAgIDB4MDMwMCwgMHgwMDYwLCAwKTsKLSsgICAgQ0FTRSAgICAg ICAgIChncmVlaywgICAgICAgICAgICAgICAgICAgICAgICAweDAzQkMsIDApOwotKyAgICBDQVNF X0NPTUJJTkUgKGhvb2ssICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwOSwgMHgwMkMwLCAw KTsKLSsgICAgQ0FTRSAgICAgICAgIChob3JuLCAgICAgICAgICAgICAgICAgICAgICAgICAweDAz MUIsIDEpOwotKyAgICBDQVNFICAgICAgICAgKGludmVydGVkYnJldmUsICAgICAgICAgICAgICAg IDB4MDMyRiwgMSk7Ci0rICAgIENBU0VfQ09NQklORSAoaW90YSwgICAgICAgICAgICAgICAgICAg ICAgICAgMHgwMzQ1LCAweDAzN0EsIDApOwotKyAgICBDQVNFICAgICAgICAgKGxvbmdzb2xpZHVz b3ZlcmxheSwgICAgICAgICAgIDB4MDMzOCwgMSk7Ci0rICAgIENBU0VfQ09NQklORSAobG93bGlu ZSwgICAgICAgICAgICAgICAgICAgICAgMHgwMzMyLCAweDAwNUYsIDApOwotKyAgICBDQVNFX0NP TUJJTkUgKG1hY3JvbiwgICAgICAgICAgICAgICAgICAgICAgIDB4MDMwNCwgMHgwMEFGLCAwKTsK LSsgICAgQ0FTRV9DT01CSU5FIChvZ29uZWssICAgICAgICAgICAgICAgICAgICAgICAweDAzMjgs IDB4MDJEQiwgMCk7Ci0gICAgIC8vIElCVVNfS0VZX2RlYWRfcGVyaXNwb21lbmkgPT0gSUJVU19L RVlfZGVhZF90aWxkZQotICAgICAvLyBJQlVTX0tFWV9kZWFkX3BzaWxpID09IElCVVNfS0VZX2Rl YWRfYWJvdmVjb21tYQotLSAgICBDQVNFX0NPTUJJTkUgKHNlbWl2b2ljZWRfc291bmQsICAgICAg ICAgICAgIDB4MzA5QSwgMHgzMDlDKTsKLS0gICAgQ0FTRV9DT01CSU5FIChzbWFsbF9zY2h3YSwg ICAgICAgICAgICAgICAgICAweDFENEEsIDB4MDREOSk7Ci0tICAgIENBU0UgICAgICAgICAoc3Ry b2tlLCAgICAgICAgICAgICAgICAgICAgICAgMHgwMDJGKTsKLS0gICAgQ0FTRV9DT01CSU5FICh0 aWxkZSwgICAgICAgICAgICAgICAgICAgICAgICAweDAzMDMsIDB4MDA3RSk7Ci0tICAgIENBU0Vf Q09NQklORSAodm9pY2VkX3NvdW5kLCAgICAgICAgICAgICAgICAgMHgzMDk5LCAweDMwOUIpOwot KyAgICBDQVNFX0NPTUJJTkUgKHNlbWl2b2ljZWRfc291bmQsICAgICAgICAgICAgIDB4MzA5QSwg MHgzMDlDLCAwKTsKLSsgICAgQ0FTRV9DT01CSU5FIChzbWFsbF9zY2h3YSwgICAgICAgICAgICAg ICAgICAweDFERUEsIDB4MUQ0QSwgMCk7Ci0rICAgIENBU0UgICAgICAgICAoc3Ryb2tlLCAgICAg ICAgICAgICAgICAgICAgICAgMHgwMzM1LCAxKTsKLSsgICAgQ0FTRV9DT01CSU5FICh0aWxkZSwg ICAgICAgICAgICAgICAgICAgICAgICAweDAzMDMsIDB4MDA3RSwgMCk7Ci0rICAgIENBU0VfQ09N QklORSAodm9pY2VkX3NvdW5kLCAgICAgICAgICAgICAgICAgMHgzMDk5LCAweDMwOUIsIDApOwot ICAgICBjYXNlIElCVVNfS0VZX011bHRpX2tleToKLSsgICAgICAgIGlmIChuZWVkX3NwYWNlKQot KyAgICAgICAgICAgICpuZWVkX3NwYWNlID0gRkFMU0U7Ci0gICAgICAgICAvKiBXZSBvbmx5IHNo b3cgdGhlIENvbXBvc2Uga2V5IHZpc2libHkgd2hlbiBpdCBpcyB0aGUKLSAgICAgICAgICAqIG9u bHkgZ2x5cGggaW4gdGhlIHByZWVkaXQsIG9yIHdoZW4gaXQgb2NjdXJzIGluIHRoZQotICAgICAg ICAgICogbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZS4gU2FkbHksIHRoZSBvZmZpY2lhbCBjaGFyYWN0 ZXIsCi1AQCAtMTg1NCw2ICsxODcxLDggQEAgaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoZ3VpbnQx NiAga2V5c3ltLAotICAgICAgICAgICovCi0gICAgICAgICByZXR1cm4gMHgwMEI3OwotICAgICBk ZWZhdWx0OjsKLSsgICAgICAgIGlmIChuZWVkX3NwYWNlKQotKyAgICAgICAgICAgICpuZWVkX3Nw YWNlID0gRkFMU0U7Ci0gICAgIH0KLSAgICAgcmV0dXJuIDB4MDsKLSAjdW5kZWYgQ0FTRQotZGlm ZiAtLWdpdCBhL3NyYy9pYnVzZW5naW5lc2ltcGxlLmMgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5j Ci1pbmRleCA2OTljZjBkNC4uYWNmYzAyNjQgMTAwNjQ0Ci0tLS0gYS9zcmMvaWJ1c2VuZ2luZXNp bXBsZS5jCi0rKysgYi9zcmMvaWJ1c2VuZ2luZXNpbXBsZS5jCi1AQCAtNzgsMTMgKzc4LDE0IEBA IHR5cGVkZWYgc3RydWN0IHsKLSAKLSBzdHJ1Y3QgX0lCdXNFbmdpbmVTaW1wbGVQcml2YXRlIHsK LSAgICAgZ3VpbnQxNiAgICAgICAgICAgICpjb21wb3NlX2J1ZmZlcjsKLS0gICAgZ3VuaWNoYXIg ICAgICAgICAgICB0ZW50YXRpdmVfbWF0Y2g7Ci0tICAgIGNoYXIgICAgICAgICAgICAgICAqdGVu dGF0aXZlX2Vtb2ppOwotKyAgICBHU3RyaW5nICAgICAgICAgICAgKnRlbnRhdGl2ZV9tYXRjaDsK LSAgICAgaW50ICAgICAgICAgICAgICAgICB0ZW50YXRpdmVfbWF0Y2hfbGVuOwotKyAgICBjaGFy ICAgICAgICAgICAgICAgKnRlbnRhdGl2ZV9lbW9qaTsKLSAKLSAgICAgZ3VpbnQgICAgICAgICAg ICAgICBoZXhfbW9kZV9lbmFibGVkIDogMTsKLSAgICAgZ3VpbnQgICAgICAgICAgICAgICBpbl9o ZXhfc2VxdWVuY2UgOiAxOwotICAgICBndWludCAgICAgICAgICAgICAgIGluX2Vtb2ppX3NlcXVl bmNlIDogMTsKLSsgICAgZ3VpbnQgICAgICAgICAgICAgICBpbl9jb21wb3NlX3NlcXVlbmNlIDog MTsKLSAgICAgZ3VpbnQgICAgICAgICAgICAgICBtb2RpZmllcnNfZHJvcHBlZCA6IDE7Ci0gICAg IElCdXNFbmdpbmVEaWN0ICAgICAqZW1vamlfZGljdDsKLSAgICAgSUJ1c0xvb2t1cFRhYmxlICAg ICpsb29rdXBfdGFibGU7Ci1AQCAtMTc4LDYgKzE3OSw4IEBAIGlidXNfZW5naW5lX3NpbXBsZV9p bml0IChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUpCi0gICAgIHNpbXBsZS0+cHJpdi0+aGV4X21v ZGVfZW5hYmxlZCA9Ci0gICAgICAgICBnX2dldGVudigiSUJVU19FTkFCTEVfQ1RSTF9TSElGVF9V IikgIT0gTlVMTCB8fAotICAgICAgICAgZ19nZXRlbnYoIklCVVNfRU5BQkxFX0NPTlRST0xfU0hJ RlRfVSIpICE9IE5VTEw7Ci0rICAgIHNpbXBsZS0+cHJpdi0+dGVudGF0aXZlX21hdGNoID0gZ19z dHJpbmdfbmV3ICgiIik7Ci0rICAgIHNpbXBsZS0+cHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA9 IDA7Ci0gfQotIAotIAotQEAgLTE5Niw2ICsxOTksOSBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfZGVz dHJveSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlKQotICAgICBnX2NsZWFyX29iamVjdCAoJnBy aXYtPmxvb2t1cF90YWJsZSk7Ci0gICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPmNvbXBvc2Vf YnVmZmVyLCBnX2ZyZWUpOwotICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVf ZW1vamksIGdfZnJlZSk7Ci0rICAgIGdfc3RyaW5nX2ZyZWUgKHByaXYtPnRlbnRhdGl2ZV9tYXRj aCwgVFJVRSk7Ci0rICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IE5VTEw7Ci0rICAgIHByaXYt PnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOwotIAotICAgICBJQlVTX09CSkVDVF9DTEFTUyhpYnVz X2VuZ2luZV9zaW1wbGVfcGFyZW50X2NsYXNzKS0+ZGVzdHJveSAoCi0gICAgICAgICBJQlVTX09C SkVDVCAoc2ltcGxlKSk7Ci1AQCAtMjIyLDE1ICsyMjgsMTUgQEAgaWJ1c19lbmdpbmVfc2ltcGxl X3Jlc2V0IChJQnVzRW5naW5lICplbmdpbmUpCi0gCi0gICAgIHByaXYtPmNvbXBvc2VfYnVmZmVy WzBdID0gMDsKLSAKLS0gICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCB8fCBwcml2LT5pbl9o ZXhfc2VxdWVuY2UpIHsKLSsgICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaC0+bGVuID4gMCB8 fCBwcml2LT5pbl9oZXhfc2VxdWVuY2UpIHsKLSAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5j ZSA9IEZBTFNFOwotLSAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gMDsKLSsgICAgICAg IGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAg cHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA9IDA7Ci0gICAgIH0gZWxzZSBpZiAocHJpdi0+dGVu dGF0aXZlX2Vtb2ppIHx8IHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlKSB7Ci0gICAgICAgICBwcml2 LT5pbl9lbW9qaV9zZXF1ZW5jZSA9IEZBTFNFOwotICAgICAgICAgZ19jbGVhcl9wb2ludGVyICgm cHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2ZyZWUpOwotICAgICB9IGVsc2UgaWYgKCFwcml2LT5p bl9oZXhfc2VxdWVuY2UgJiYgIXByaXYtPmluX2Vtb2ppX3NlcXVlbmNlKSB7Ci0tICAgICAgICBw cml2LT50ZW50YXRpdmVfbWF0Y2ggPSAwOwotKyAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKHBy aXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7Ci0gICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2hf bGVuID0gMDsKLSAgICAgfQotICAgICBpYnVzX2VuZ2luZV9oaWRlX3ByZWVkaXRfdGV4dCAoKElC dXNFbmdpbmUgKilzaW1wbGUpOwotQEAgLTI0NCwxMCArMjUwLDE3IEBAIGlidXNfZW5naW5lX3Np bXBsZV9jb21taXRfY2hhciAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotIAotICAgICBJQnVz RW5naW5lU2ltcGxlUHJpdmF0ZSAqcHJpdiA9IHNpbXBsZS0+cHJpdjsKLSAKLS0gICAgaWYgKHBy aXYtPnRlbnRhdGl2ZV9tYXRjaCB8fCBwcml2LT5pbl9oZXhfc2VxdWVuY2UpIHsKLS0gICAgICAg IHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOwotLSAgICAgICAgcHJpdi0+dGVudGF0aXZl X21hdGNoID0gMDsKLSsgICAgaWYgKHByaXYtPmluX2hleF9zZXF1ZW5jZSB8fAotKyAgICAgICAg cHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA+IDAgfHwKLSsgICAgICAgIHByaXYtPmNvbXBvc2Vf YnVmZmVyWzBdICE9IDApIHsKLSsgICAgICAgIGdfc3RyaW5nX3NldF9zaXplIChwcml2LT50ZW50 YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA9IDA7 Ci0rICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKLSsgICAgICAgIHByaXYt PmluX2NvbXBvc2Vfc2VxdWVuY2UgPSBGQUxTRTsKLSsgICAgICAgIHByaXYtPmNvbXBvc2VfYnVm ZmVyWzBdID0gMDsKLSsgICAgICAgIC8qIERvbid0IGNhbGwgaWJ1c19lbmdpbmVfc2ltcGxlX3Vw ZGF0ZV9wcmVlZGl0X3RleHQoKSBpbnNpZGUKLSsgICAgICAgICAqIG5vdCB0byBjYWxsIGl0IGFz IGR1cGxpbGNhdGVkLgotKyAgICAgICAgICovCi0gICAgIH0KLSAgICAgaWYgKHByaXYtPnRlbnRh dGl2ZV9lbW9qaSB8fCBwcml2LT5pbl9lbW9qaV9zZXF1ZW5jZSkgewotICAgICAgICAgcHJpdi0+ aW5fZW1vamlfc2VxdWVuY2UgPSBGQUxTRTsKLUBAIC0yNjksMTAgKzI4MiwxNyBAQCBpYnVzX2Vu Z2luZV9zaW1wbGVfY29tbWl0X3N0ciAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotIAotICAg ICBiYWNrdXBfc3RyID0gZ19zdHJkdXAgKHN0cik7Ci0gCi0tICAgIGlmIChwcml2LT50ZW50YXRp dmVfbWF0Y2ggfHwgcHJpdi0+aW5faGV4X3NlcXVlbmNlKSB7Ci0tICAgICAgICBwcml2LT5pbl9o ZXhfc2VxdWVuY2UgPSBGQUxTRTsKLS0gICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IDA7 Ci0rICAgIGlmIChwcml2LT5pbl9oZXhfc2VxdWVuY2UgfHwKLSsgICAgICAgIHByaXYtPnRlbnRh dGl2ZV9tYXRjaF9sZW4gPiAwIHx8Ci0rICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSAh PSAwKSB7Ci0rICAgICAgICBnX3N0cmluZ19zZXRfc2l6ZSAocHJpdi0+dGVudGF0aXZlX21hdGNo LCAwKTsKLSAgICAgICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOwotKyAgICAgICAg cHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFMU0U7Ci0rICAgICAgICBwcml2LT5pbl9jb21wb3Nl X3NlcXVlbmNlID0gRkFMU0U7Ci0rICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7 Ci0rICAgICAgICAvKiBEb24ndCBjYWxsIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRp dF90ZXh0KCkgaW5zaWRlCi0rICAgICAgICAgKiBub3QgdG8gY2FsbCBpdCBhcyBkdXBsaWxjYXRl ZC4KLSsgICAgICAgICAqLwotICAgICB9Ci0gICAgIGlmIChwcml2LT50ZW50YXRpdmVfZW1vamkg fHwgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UpIHsKLSAgICAgICAgIHByaXYtPmluX2Vtb2ppX3Nl cXVlbmNlID0gRkFMU0U7Ci1AQCAtMjg4LDggKzMwOCw4IEBAIHN0YXRpYyB2b2lkCi0gaWJ1c19l bmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBs ZSkKLSB7Ci0gICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2ltcGxlLT5wcml2 OwotLQotICAgICBHU3RyaW5nICpzID0gZ19zdHJpbmdfbmV3ICgiIik7Ci0rICAgIGludCBpLCBq OwotIAotICAgICBpZiAocHJpdi0+aW5faGV4X3NlcXVlbmNlIHx8IHByaXYtPmluX2Vtb2ppX3Nl cXVlbmNlKSB7Ci0gICAgICAgICBpbnQgaGV4Y2hhcnMgPSAwOwotQEAgLTMwNSwzMiArMzI1LDU5 IEBAIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChJQnVzRW5naW5lU2lt cGxlICpzaW1wbGUpCi0gICAgICAgICAgICAgICAgICAgICBpYnVzX2tleXZhbF90b191bmljb2Rl IChwcml2LT5jb21wb3NlX2J1ZmZlcltoZXhjaGFycysrXSkKLSAgICAgICAgICAgICApOwotICAg ICAgICAgfQotLSAgICB9IGVsc2UgaWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCkgewotLSAgICAg ICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIocywgcHJpdi0+dGVudGF0aXZlX21hdGNoKTsKLSAg ICAgfSBlbHNlIGlmIChwcml2LT50ZW50YXRpdmVfZW1vamkgJiYgKnByaXYtPnRlbnRhdGl2ZV9l bW9qaSkgewotICAgICAgICAgSUJ1c1RleHQgKnRleHQgPSBpYnVzX3RleHRfbmV3X2Zyb21fc3Ry aW5nIChwcml2LT50ZW50YXRpdmVfZW1vamkpOwotICAgICAgICAgaW50IGxlbiA9IHN0cmxlbiAo cHJpdi0+dGVudGF0aXZlX2Vtb2ppKTsKLSAgICAgICAgIGlidXNfdGV4dF9hcHBlbmRfYXR0cmli dXRlICh0ZXh0LAotICAgICAgICAgICAgICAgICBJQlVTX0FUVFJfVFlQRV9VTkRFUkxJTkUsIElC VVNfQVRUUl9VTkRFUkxJTkVfU0lOR0xFLCAwLCBsZW4pOwotICAgICAgICAgaWJ1c19lbmdpbmVf dXBkYXRlX3ByZWVkaXRfdGV4dCAoKElCdXNFbmdpbmUgKilzaW1wbGUsIHRleHQsIGxlbiwgVFJV RSk7Ci0rICAgICAgICBnX3N0cmluZ19mcmVlIChzLCBUUlVFKTsKLSAgICAgICAgIHJldHVybjsK LS0gICAgfSBlbHNlIHsKLS0gICAgICAgIGludCBoZXhjaGFycyA9IDA7Ci0tICAgICAgICB3aGls ZSAocHJpdi0+Y29tcG9zZV9idWZmZXJbaGV4Y2hhcnNdICE9IDApIHsKLS0gICAgICAgICAgICBn dWludDE2IGtleXN5bSA9IHByaXYtPmNvbXBvc2VfYnVmZmVyW2hleGNoYXJzXTsKLS0gICAgICAg ICAgICBndW5pY2hhciB1bmljaGFyID0gaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoa2V5c3ltLCBG QUxTRSk7Ci0tICAgICAgICAgICAgaWYgKHVuaWNoYXIgPiAwKSB7Ci0tICAgICAgICAgICAgICAg IGdfc3RyaW5nX2FwcGVuZF91bmljaGFyKHMsIHVuaWNoYXIpOwotLSAgICAgICAgICAgIH0gZWxz ZSB7Ci0tICAgICAgICAgICAgICAgIHVuaWNoYXIgPSBpYnVzX2tleXZhbF90b191bmljb2RlIChr ZXlzeW0pOwotLSAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhcihzLCB1bmlj aGFyKTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgaWYgKCF1bmljaGFyKSB7Ci0tICAg ICAgICAgICAgICAgIGdfd2FybmluZyAoCi0rICAgIH0gZWxzZSBpZiAocHJpdi0+aW5fY29tcG9z ZV9zZXF1ZW5jZSkgewotKyAgICAgICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaC0+bGVuID4g MCAmJiBwcml2LT5jb21wb3NlX2J1ZmZlclswXSAhPSAwKSB7Ci0rICAgICAgICAgICAgZ19zdHJp bmdfYXBwZW5kIChzLCBwcml2LT50ZW50YXRpdmVfbWF0Y2gtPnN0cik7Ci0rICAgICAgICB9IGVs c2UgewotKyAgICAgICAgICAgIGZvciAoaSA9IDA7IHByaXYtPmNvbXBvc2VfYnVmZmVyW2ldOyAr K2kpIHsKLSsgICAgICAgICAgICAgICAgZ3VpbnQxNiBrZXlzeW0gPSBwcml2LT5jb21wb3NlX2J1 ZmZlcltpXTsKLSsgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gc2hvd19rZXlzeW0gPSBUUlVFOwot KyAgICAgICAgICAgICAgICBnYm9vbGVhbiBuZWVkX3NwYWNlID0gRkFMU0U7Ci0rICAgICAgICAg ICAgICAgIGd1bmljaGFyIGNoOwotKwotKyAgICAgICAgICAgICAgICBpZiAoa2V5c3ltID09IElC VVNfS0VZX011bHRpX2tleSkgewotKyAgICAgICAgICAgICAgICAgICAgLyogV2Ugb25seSBzaG93 IHRoZSBDb21wb3NlIGtleSB2aXNpYmx5IHdoZW4gaXQgaXMgdGhlCi0rICAgICAgICAgICAgICAg ICAgICAgKiBvbmx5IGdseXBoIGluIHRoZSBwcmVlZGl0LCBvciB3aGVuIGl0IG9jY3VycyBpbiB0 aGUKLSsgICAgICAgICAgICAgICAgICAgICAqIG1pZGRsZSBvZiB0aGUgc2VxdWVuY2UuIFNhZGx5 LCB0aGUgb2ZmaWNpYWwgY2hhcmFjdGVyLAotKyAgICAgICAgICAgICAgICAgICAgICogVSsyMzg0 LCBDT01QT1NJVElPTiBTWU1CT0wsIGlzIGJpdCB0b28gZGlzdHJhY3RpbmcsIHNvCi0rICAgICAg ICAgICAgICAgICAgICAgKiB3ZSB1c2UgVSswMEI3LCBNSURETEUgRE9ULgotKyAgICAgICAgICAg ICAgICAgICAgICovCi0rICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSBpICsgMTsgcHJpdi0+ Y29tcG9zZV9idWZmZXJbal07IGorKykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChw cml2LT5jb21wb3NlX2J1ZmZlcltqXSAhPSBJQlVTX0tFWV9NdWx0aV9rZXkpIHsKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2hvd19rZXlzeW0gPSBGQUxTRTsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgfQotKyAgICAg ICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG93X2tleXN5bSkK LSsgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAg IGNoID0gaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAoa2V5c3ltLCBGQUxTRSwgTlVMTCk7Ci0rICAg ICAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAocywgY2gpOwotKyAgICAg ICAgICAgICAgICB9IGVsc2UgaWYgKElTX0RFQURfS0VZIChrZXlzeW0pKSB7Ci0rICAgICAgICAg ICAgICAgICAgICBjaCA9IGlidXNfa2V5c3ltX3RvX3VuaWNvZGUgKGtleXN5bSwgRkFMU0UsICZu ZWVkX3NwYWNlKTsKLSsgICAgICAgICAgICAgICAgICAgIGlmIChjaCkgewotKyAgICAgICAgICAg ICAgICAgICAgICAgIGlmIChuZWVkX3NwYWNlKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnX3N0cmluZ19hcHBlbmRfYyAocywgJyAnKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBn X3N0cmluZ19hcHBlbmRfdW5pY2hhciAocywgY2gpOwotKyAgICAgICAgICAgICAgICAgICAgfQot KyAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgY2ggPSBpYnVz X2tleXZhbF90b191bmljb2RlIChrZXlzeW0pOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKGNo KQotKyAgICAgICAgICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyKHMsIGNo KTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICBpZiAoIWNoKSB7Ci0rICAg ICAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKAotICAgICAgICAgICAgICAgICAgICAgICAgICJO b3QgZm91bmQgYWx0ZXJuYXRpdmUgY2hhcmFjdGVyIG9mIGNvbXBvc2Uga2V5IDB4JVgiLAotLSAg ICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyW2hleGNoYXJzXSk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbaV0pOwotKyAgICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAgICsraGV4Y2hhcnM7Ci0g ICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC0zODAsNyArNDI3LDcgQEAgY2hlY2tfaGV4IChJQnVz RW5naW5lU2ltcGxlICpzaW1wbGUsCi0gCi0gICAgIENIRUNLX0NPTVBPU0VfQlVGRkVSX0xFTkdU SCAobl9jb21wb3NlKTsKLSAKLS0gICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gMDsKLSsgICAg Z19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7Ci0gICAgIHByaXYt PnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOwotIAotICAgICBzdHIgPSBnX3N0cmluZ19uZXcgKE5V TEwpOwotQEAgLTQyMSw3ICs0NjgsOCBAQCBjaGVja19oZXggKElCdXNFbmdpbmVTaW1wbGUgKnNp bXBsZSwKLSAgICAgfQotIAotICAgICBpZiAoZ191bmljaGFyX3ZhbGlkYXRlIChuKSkgewotLSAg ICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gbjsKLSsgICAgICAgIGdfc3RyaW5nX3NldF9z aXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotKyAgICAgICAgZ19zdHJpbmdfYXBwZW5k X3VuaWNoYXIgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgbik7Ci0gICAgICAgICBwcml2LT50ZW50 YXRpdmVfbWF0Y2hfbGVuID0gbl9jb21wb3NlOwotICAgICB9Ci0gCi1AQCAtNTQ2LDIxICs1OTQs MzEgQEAgbm9fc2VxdWVuY2VfbWF0Y2hlcyAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotIAot ICAgICBDSEVDS19DT01QT1NFX0JVRkZFUl9MRU5HVEggKG5fY29tcG9zZSk7Ci0gCi0rICAgIHBy aXYtPmluX2NvbXBvc2Vfc2VxdWVuY2UgPSBGQUxTRTsKLSsKLSAgICAgLyogTm8gY29tcG9zZSBz ZXF1ZW5jZXMgZm91bmQsIGNoZWNrIGZpcnN0IGlmIHdlIGhhdmUgYSBwYXJ0aWFsCi0gICAgICAq IG1hdGNoIHBlbmRpbmcuCi0gICAgICAqLwotLSAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNo KSB7Ci0rICAgIGlmIChwcml2LT50ZW50YXRpdmVfbWF0Y2hfbGVuID4gMCkgewotKyAgICAgICAg Z3VpbnQxNiAqY29tcG9zZV9idWZmZXI7Ci0gICAgICAgICBpbnQgbGVuID0gcHJpdi0+dGVudGF0 aXZlX21hdGNoX2xlbjsKLSAgICAgICAgIGludCBpOwotKyAgICAgICAgY2hhciAqc3RyOwotIAot LSAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsIHByaXYtPnRl bnRhdGl2ZV9tYXRjaCk7Ci0tICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7Ci0r ICAgICAgICBjb21wb3NlX2J1ZmZlciA9IGFsbG9jYSAoc2l6ZW9mIChndWludDE2KSAqIENPTVBP U0VfQlVGRkVSX1NJWkUpOwotKyAgICAgICAgbWVtY3B5IChjb21wb3NlX2J1ZmZlciwKLSsgICAg ICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXIsCi0rICAgICAgICAgICAgICAgIHNpemVv ZiAoZ3VpbnQxNikgKiBDT01QT1NFX0JVRkZFUl9TSVpFKTsKLSsKLSsgICAgICAgIHN0ciA9IGdf c3RyZHVwIChwcml2LT50ZW50YXRpdmVfbWF0Y2gtPnN0cik7Ci0rICAgICAgICBpYnVzX2VuZ2lu ZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOwotKyAgICAgICAgZ19mcmVlIChzdHIp OwotICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBs ZSk7Ci0gCi0gICAgICAgICBmb3IgKGk9MDsgaSA8IG5fY29tcG9zZSAtIGxlbiAtIDE7IGkrKykg ewotICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoCi0g ICAgICAgICAgICAgICAgICAgICAoSUJ1c0VuZ2luZSAqKXNpbXBsZSwKLS0gICAgICAgICAgICAg ICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyW2xlbiArIGldLAotKyAgICAgICAgICAgICAgICAg ICAgY29tcG9zZV9idWZmZXJbbGVuICsgaV0sCi0gICAgICAgICAgICAgICAgICAgICAwLCAwKTsK LSAgICAgICAgIH0KLSAKLUBAIC01NzEsNiArNjI5LDI2IEBAIG5vX3NlcXVlbmNlX21hdGNoZXMg KElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVy WzBdID0gMDsKLSAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0 IChzaW1wbGUpOwotICAgICB9IGVsc2UgewotKyAgICAgICAgaWYgKG5fY29tcG9zZSA9PSAyICYm IElTX0RFQURfS0VZIChwcml2LT5jb21wb3NlX2J1ZmZlclswXSkpIHsKLSsgICAgICAgICAgICBn Ym9vbGVhbiBuZWVkX3NwYWNlID0gRkFMU0U7Ci0rICAgICAgICAgICAgR1N0cmluZyAqcyA9IGdf c3RyaW5nX25ldyAoIiIpOwotKyAgICAgICAgICAgIC8qIGRlYWQga2V5cyBhcmUgbmV2ZXIgKnJl YWxseSogZGVhZCAqLwotKyAgICAgICAgICAgIGNoID0gaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAo cHJpdi0+Y29tcG9zZV9idWZmZXJbMF0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBGQUxTRSwgJm5lZWRfc3BhY2UpOwotKyAgICAgICAgICAgIGlmIChjaCkgewot KyAgICAgICAgICAgICAgICBpZiAobmVlZF9zcGFjZSkKLSsgICAgICAgICAgICAgICAgICAgIGdf c3RyaW5nX2FwcGVuZF9jIChzLCAnICcpOwotKyAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBl bmRfdW5pY2hhciAocywgY2gpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBjaCA9IGli dXNfa2V5dmFsX3RvX3VuaWNvZGUgKHByaXYtPmNvbXBvc2VfYnVmZmVyWzFdKTsKLSsgICAgICAg ICAgICBpZiAoY2ggIT0gMCAmJiAhZ191bmljaGFyX2lzY250cmwgKGNoKSkKLSsgICAgICAgICAg ICAgICAgZ19zdHJpbmdfYXBwZW5kX3VuaWNoYXIgKHMsIGNoKTsKLSsgICAgICAgICAgICBpYnVz X2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzLT5zdHIpOwotKyAgICAgICAgICAg IGdfc3RyaW5nX2ZyZWUgKHMsIFRSVUUpOwotKyAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBs ZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwotKyAgICAgICAgICAgIHJldHVybiBUUlVF OwotKyAgICAgICAgfQotKwotICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOwot ICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDEpIHsKLSAgICAgICAgICAgICAvKiBJbnZhbGlkIHNl cXVlbmNlICovCi1AQCAtNjk1LDE5ICs3NzMsNDYgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3NldF9u dW1iZXJfb25fbG9va3VwX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgIGli dXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwotIH0KLSAKLSsK LSBzdGF0aWMgZ2Jvb2xlYW4KLSBpYnVzX2VuZ2luZV9zaW1wbGVfY2hlY2tfYWxsX2NvbXBvc2Vf dGFibGUgKElCdXNFbmdpbmVTaW1wbGUgKnNpbXBsZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgIG5fY29tcG9zZSkKLSB7Ci0g ICAgIElCdXNFbmdpbmVTaW1wbGVQcml2YXRlICpwcml2ID0gc2ltcGxlLT5wcml2OwotKyAgICBH U0xpc3QgKnRtcF9saXN0OwotICAgICBnYm9vbGVhbiBjb21wb3NlX2ZpbmlzaCA9IEZBTFNFOwot ICAgICBnYm9vbGVhbiBjb21wb3NlX21hdGNoID0gRkFMU0U7Ci0gICAgIEdTdHJpbmcgKm91dHB1 dCA9IGdfc3RyaW5nX25ldyAoIiIpOwotLSAgICBnYm9vbGVhbiBkb2VzX2hpdCA9IEZBTFNFOwot KyAgICBnYm9vbGVhbiBzdWNjZXNzID0gRkFMU0U7Ci0gICAgIGdib29sZWFuIGlzXzMyYml0ID0g RkFMU0U7Ci0tICAgIEdTTGlzdCAqdG1wX2xpc3Q7Ci0gICAgIGd1bmljaGFyICpvdXRwdXRfY2hh cnMgPSBOVUxMOwotLSAgICBndW5pY2hhciBvdXRwdXRfY2hhcjsKLSsgICAgZ3VuaWNoYXIgb3V0 cHV0X2NoYXIgPSAnXDAnOwotKwotKyAgICBpZiAobl9jb21wb3NlID09IDIpIHsKLSsgICAgICAg IC8qIFNwZWNpYWwtY2FzZSBkZWFka2V5LWRlYWRrZXkgc2VxdWVuY2VzLgotKyAgICAgICAgICog V2UgYXJlIG5vdCBkb2luZyBjaGFpbmVkIGRlYWRrZXlzLCBzbyB3ZQotKyAgICAgICAgICogd2Fu dCB0byBjb21taXQgdGhlIGZpcnN0IGtleSwgYW5kIGNvbnRpbmUKLSsgICAgICAgICAqIHByZWVk aXRpbmcgd2l0aCBzZWNvbmQuCi0rICAgICAgICAgKi8KLSsgICAgICAgIGlmIChJU19ERUFEX0tF WSAocHJpdi0+Y29tcG9zZV9idWZmZXJbMF0pICYmCi0rICAgICAgICAgICAgSVNfREVBRF9LRVkg KHByaXYtPmNvbXBvc2VfYnVmZmVyWzFdKSkgewotKyAgICAgICAgICAgIGdib29sZWFuIG5lZWRf c3BhY2UgPSBGQUxTRTsKLSsgICAgICAgICAgICBndW5pY2hhciBjaCA9IGlidXNfa2V5c3ltX3Rv X3VuaWNvZGUgKHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsICZuZWVkX3NwYWNlKTsKLSsgICAg ICAgICAgICBndWludDE2IG5leHQgPSBwcml2LT5jb21wb3NlX2J1ZmZlclsxXTsKLSsgICAgICAg ICAgICBpZiAoY2gpIHsKLSsgICAgICAgICAgICAgICAgaWYgKG5lZWRfc3BhY2UpCi0rICAgICAg ICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfYyAob3V0cHV0LCAnICcpOwotKyAgICAgICAg ICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAob3V0cHV0LCBjaCk7Ci0rICAgICAgICAg ICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfc3RyIChzaW1wbGUsIG91dHB1dC0+c3Ry KTsKLSsgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKG91dHB1dCwgMCk7Ci0rCi0r ICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gbmV4dDsKLSsgICAgICAg ICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMV0gPSAwOwotKyAgICAgICAgICAgICAgICBu X2NvbXBvc2UgPSAxOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgfQotIAotICAg ICBHX0xPQ0sgKGdsb2JhbF90YWJsZXMpOwotICAgICB0bXBfbGlzdCA9IGdsb2JhbF90YWJsZXM7 Ci1AQCAtNzIxLDcgKzgyNiw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxfY29tcG9z ZV90YWJsZSAoSUJ1c0VuZ2luZVNpbXBsZSAqc2ltcGxlLAotICAgICAgICAgICAgICZjb21wb3Nl X21hdGNoLAotICAgICAgICAgICAgIG91dHB1dCwKLSAgICAgICAgICAgICBpc18zMmJpdCkpIHsK LS0gICAgICAgICAgICBkb2VzX2hpdCA9IFRSVUU7Ci0rICAgICAgICAgICAgc3VjY2VzcyA9IFRS VUU7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICB9Ci0gICAgICAgICBpc18zMmJpdCA9 IFRSVUU7Ci1AQCAtNzMzLDE0ICs4MzgsMTUgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX2NoZWNrX2Fs bF9jb21wb3NlX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpzaW1wbGUsCi0gICAgICAgICAgICAg JmNvbXBvc2VfbWF0Y2gsCi0gICAgICAgICAgICAgb3V0cHV0LAotICAgICAgICAgICAgIGlzXzMy Yml0KSkgewotLSAgICAgICAgICAgIGRvZXNfaGl0ID0gVFJVRTsKLSsgICAgICAgICAgICBzdWNj ZXNzID0gVFJVRTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIHRt cF9saXN0ID0gdG1wX2xpc3QtPm5leHQ7Ci0gICAgIH0KLSAgICAgR19VTkxPQ0sgKGdsb2JhbF90 YWJsZXMpOwotIAotLSAgICBpZiAoZG9lc19oaXQpIHsKLSsgICAgaWYgKHN1Y2Nlc3MpIHsKLSsg ICAgICAgIHByaXYtPmluX2NvbXBvc2Vfc2VxdWVuY2UgPSBUUlVFOwotICAgICAgICAgaWYgKGNv bXBvc2VfZmluaXNoKSB7Ci0gICAgICAgICAgICAgaWYgKGNvbXBvc2VfbWF0Y2gpIHsKLSAgICAg ICAgICAgICAgICAgaWYgKGlzXzMyYml0KSB7Ci1AQCAtNzUwLDU5ICs4NTYsODkgQEAgaWJ1c19l bmdpbmVfc2ltcGxlX2NoZWNrX2FsbF9jb21wb3NlX3RhYmxlIChJQnVzRW5naW5lU2ltcGxlICpz aW1wbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdfdXRmOF9nZXRfY2hhciAob3V0cHV0LT5zdHIpKTsKLSAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3By ZWVkaXRfdGV4dCAoc2ltcGxlKTsKLSsgICAgICAgICAgICBnX3N0cmluZ19mcmVlIChvdXRwdXQs IFRSVUUpOwotKyAgICAgICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICAgfSBlbHNlIGlmIChj b21wb3NlX21hdGNoKSB7Ci0tICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gZ191 dGY4X2dldF9jaGFyIChvdXRwdXQtPnN0cik7Ci0rICAgICAgICAgICAgZ19zdHJpbmdfYXNzaWdu IChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIG91dHB1dC0+c3RyKTsKLSAgICAgICAgICAgICBwcml2 LT50ZW50YXRpdmVfbWF0Y2hfbGVuID0gbl9jb21wb3NlOwotKyAgICAgICAgICAgIGlidXNfZW5n aW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwotKyAgICAgICAgICAgIGdf c3RyaW5nX2ZyZWUgKG91dHB1dCwgVFJVRSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0g ICAgICAgICB9Ci0tICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4 dCAoc2ltcGxlKTsKLS0gICAgICAgIGdfc3RyaW5nX2ZyZWUgKG91dHB1dCwgVFJVRSk7Ci0tICAg ICAgICByZXR1cm4gVFJVRTsKLSAgICAgfQotICAgICBnX3N0cmluZ19mcmVlIChvdXRwdXQsIFRS VUUpOwotKyAgICBvdXRwdXQgPSBOVUxMOwotIAotICAgICBpZiAoaWJ1c19jb21wb3NlX3RhYmxl X2NvbXBhY3RfY2hlY2sgKCZpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlciwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuX2NvbXBvc2UsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvc2VfZmluaXNoLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdXRfY2hhcnMp KSB7Ci0rICAgICAgICBwcml2LT5pbl9jb21wb3NlX3NlcXVlbmNlID0gVFJVRTsKLSAgICAgICAg IGlmIChjb21wb3NlX2ZpbmlzaCkgewotLSAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9j b21taXRfY2hhciAoc2ltcGxlLCAqb3V0cHV0X2NoYXJzKTsKLSsgICAgICAgICAgICBpZiAoc3Vj Y2VzcykgewotKyAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfdW5pY2hhciAocHJpdi0+ dGVudGF0aXZlX21hdGNoLCAqb3V0cHV0X2NoYXJzKTsKLSsgICAgICAgICAgICAgICAgcHJpdi0+ dGVudGF0aXZlX21hdGNoX2xlbiA9IG5fY29tcG9zZTsKLSsgICAgICAgICAgICB9IGVsc2Ugewot KyAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X2NoYXIgKHNpbXBsZSwg Km91dHB1dF9jaGFycyk7Ci0rICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBd ID0gMDsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZ19mcmVlIChvdXRwdXRfY2hhcnMp OwotLSAgICAgICAgICAgIHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKLSsgICAgICAgICAg ICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKLSsgICAg ICAgICAgICByZXR1cm4gVFJVRTsKLSAgICAgICAgIH0KLS0gICAgICAgIGlidXNfZW5naW5lX3Np bXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwotLSAgICAgICAgcmV0dXJuIFRSVUU7 Ci0rICAgICAgICBzdWNjZXNzID0gVFJVRTsKLSAgICAgfQotKyAgICBnX2ZyZWUgKG91dHB1dF9j aGFycyk7Ci0rICAgIG91dHB1dF9jaGFycyA9IE5VTEw7Ci0gICAgIGlmIChpYnVzX2NvbXBvc2Vf dGFibGVfY29tcGFjdF9jaGVjayAoJmlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0XzMyYml0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaXYtPmNvbXBvc2Vf YnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5fY29t cG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tcG9z ZV9maW5pc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91 dHB1dF9jaGFycykpIHsKLSsgICAgICAgIHByaXYtPmluX2NvbXBvc2Vfc2VxdWVuY2UgPSBUUlVF OwotICAgICAgICAgaWYgKGNvbXBvc2VfZmluaXNoKSB7Ci0gICAgICAgICAgICAgR0Vycm9yICpl cnJvciA9IE5VTEw7Ci0gICAgICAgICAgICAgY2hhciAqc3RyID0gZ191Y3M0X3RvX3V0ZjggKG91 dHB1dF9jaGFycywgLTEsIE5VTEwsIE5VTEwsICZlcnJvcik7Ci0tICAgICAgICAgICAgaWYgKHN0 cikgewotLSAgICAgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2lt cGxlLCBzdHIpOwotLSAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cik7Ci0tICAgICAgICAgICAg fSBlbHNlIHsKLSsgICAgICAgICAgICBpZiAoIXN0cikgewotICAgICAgICAgICAgICAgICBnX3dh cm5pbmcgKCJGYWlsZWQgdG8gb3V0cHV0IG11bHRpcGxlIGNoYXJhY3RlcnM6ICVzIiwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAg IGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc3VjY2Vzcykg ewotKyAgICAgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHByaXYtPnRlbnRhdGl2ZV9tYXRj aCwgc3RyKTsKLSsgICAgICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoX2xlbiA9IG5f Y29tcG9zZTsKLSsgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICBpYnVzX2Vu Z2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOwotKyAgICAgICAgICAgICAgICBw cml2LT5jb21wb3NlX2J1ZmZlclswXSA9IDA7Ci0gICAgICAgICAgICAgfQotLSAgICAgICAgICAg IHByaXYtPmNvbXBvc2VfYnVmZmVyWzBdID0gMDsKLSsgICAgICAgICAgICBnX2ZyZWUgKHN0cik7 Ci0rICAgICAgICAgICAgZ19mcmVlIChvdXRwdXRfY2hhcnMpOwotKyAgICAgICAgICAgIGlidXNf ZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0IChzaW1wbGUpOwotKyAgICAgICAgICAg IHJldHVybiBUUlVFOwotICAgICAgICAgfQotLSAgICAgICAgZ19mcmVlIChvdXRwdXRfY2hhcnMp OwotLSAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBs ZSk7Ci0tICAgICAgICByZXR1cm4gVFJVRTsKLSsgICAgICAgIHN1Y2Nlc3MgPSBUUlVFOwotICAg ICB9Ci0tICAgIGdfYXNzZXJ0ICghb3V0cHV0X2NoYXJzKTsKLSsgICAgZ19mcmVlIChvdXRwdXRf Y2hhcnMpOwotKyAgICBvdXRwdXRfY2hhcnMgPSBOVUxMOwotICAgICBpZiAoaWJ1c19jaGVja19h bGdvcml0aG1pY2FsbHkgKHByaXYtPmNvbXBvc2VfYnVmZmVyLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG5fY29tcG9zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmb3V0cHV0X2NoYXIpKSB7Ci0rICAgICAgICBwcml2LT5pbl9jb21wb3NlX3Nl cXVlbmNlID0gVFJVRTsKLSAgICAgICAgIGlmIChvdXRwdXRfY2hhcikgewotLSAgICAgICAgICAg IGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxlLCBvdXRwdXRfY2hhcik7Ci0t ICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOwotKyAgICAgICAgICAgIGlm IChzdWNjZXNzKSB7Ci0rICAgICAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF91bmljaGFyIChw cml2LT50ZW50YXRpdmVfbWF0Y2gsIG91dHB1dF9jaGFyKTsKLSsgICAgICAgICAgICAgICAgcHJp di0+dGVudGF0aXZlX21hdGNoX2xlbiA9IG5fY29tcG9zZTsKLSsgICAgICAgICAgICB9IGVsc2Ug IHsKLSsgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1w bGUsIG91dHB1dF9jaGFyKTsKLSsgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJb MF0gPSAwOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVf dXBkYXRlX3ByZWVkaXRfdGV4dCAoc2ltcGxlKTsKLSsgICAgICAgICAgICByZXR1cm4gVFJVRTsK LSAgICAgICAgIH0KLSsgICAgICAgIHN1Y2Nlc3MgPSBUUlVFOwotKyAgICB9Ci0rICAgIGlmIChz dWNjZXNzKSB7Ci0gICAgICAgICBpYnVzX2VuZ2luZV9zaW1wbGVfdXBkYXRlX3ByZWVkaXRfdGV4 dCAoc2ltcGxlKTsKLSAgICAgICAgIHJldHVybiBUUlVFOwotICAgICB9Ci1AQCAtODEwLDYgKzk0 Niw3IEBAIGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxfY29tcG9zZV90YWJsZSAoSUJ1c0Vu Z2luZVNpbXBsZSAqc2ltcGxlLAotICAgICByZXR1cm4gRkFMU0U7Ci0gfQotIAotKwotIHN0YXRp YyBnYm9vbGVhbgotIGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0Vu Z2luZSAqZW5naW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAga2V5dmFsLAotQEAgLTg0MSwxNiArOTc4LDE3IEBAIGlidXNfZW5naW5lX3NpbXBs ZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAgICAgaWYgKHBy aXYtPmluX2hleF9zZXF1ZW5jZSAmJgotICAgICAgICAgICAgIChrZXl2YWwgPT0gSUJVU19LRVlf Q29udHJvbF9MIHx8IGtleXZhbCA9PSBJQlVTX0tFWV9Db250cm9sX1IgfHwKLSAgICAgICAgICAg ICAga2V5dmFsID09IElCVVNfS0VZX1NoaWZ0X0wgfHwga2V5dmFsID09IElCVVNfS0VZX1NoaWZ0 X1IpKSB7Ci0tICAgICAgICAgICAgaWYgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCAmJgotLSAgICAg ICAgICAgICAgICBnX3VuaWNoYXJfdmFsaWRhdGUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCkpIHsK LS0gICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUs IHByaXYtPnRlbnRhdGl2ZV9tYXRjaCk7Ci0rICAgICAgICAgICAgaWYgKHByaXYtPnRlbnRhdGl2 ZV9tYXRjaC0+bGVuID4gMCkgewotKyAgICAgICAgICAgICAgICBjaGFyICpzdHIgPSBnX3N0cmR1 cCAocHJpdi0+dGVudGF0aXZlX21hdGNoLT5zdHIpOwotKyAgICAgICAgICAgICAgICBpYnVzX2Vu Z2luZV9zaW1wbGVfY29tbWl0X3N0ciAoc2ltcGxlLCBzdHIpOwotKyAgICAgICAgICAgICAgICBn X2ZyZWUgKHN0cik7Ci0gICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVf cHJlZWRpdF90ZXh0IChzaW1wbGUpOwotICAgICAgICAgICAgIH0gZWxzZSBpZiAobl9jb21wb3Nl ID09IDApIHsKLSAgICAgICAgICAgICAgICAgcHJpdi0+bW9kaWZpZXJzX2Ryb3BwZWQgPSBUUlVF OwotICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgIC8qIGludmFsaWQgaGV4 IHNlcXVlbmNlICovCi0gICAgICAgICAgICAgICAgIC8qIEZJWE1FIGJlZXBfd2luZG93IChldmVu dC0+d2luZG93KTsgKi8KLS0gICAgICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0g MDsKLSsgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9t YXRjaCwgMCk7Ci0gICAgICAgICAgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPnRlbnRh dGl2ZV9lbW9qaSwgZ19mcmVlKTsKLSAgICAgICAgICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVl bmNlID0gRkFMU0U7Ci0gICAgICAgICAgICAgICAgIHByaXYtPmluX2Vtb2ppX3NlcXVlbmNlID0g RkFMU0U7Ci1AQCAtODczLDcgKzEwMTEsNyBAQCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19r ZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2luZSwKLSAgICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICAgICAvKiBpbnZhbGlkIGhleCBzZXF1ZW5jZSAqLwotICAgICAgICAgICAgICAg ICAvKiBGSVhNRSBiZWVwX3dpbmRvdyAoZXZlbnQtPndpbmRvdyk7ICovCi0tICAgICAgICAgICAg ICAgIHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IDA7Ci0rICAgICAgICAgICAgICAgIGdfc3RyaW5n X3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAgICAgICAgICBn X2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamksIGdfZnJlZSk7Ci0gICAgICAg ICAgICAgICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOwotICAgICAgICAgICAgICAg ICBwcml2LT5pbl9lbW9qaV9zZXF1ZW5jZSA9IEZBTFNFOwotQEAgLTkyMSw3ICsxMDU5LDcgQEAg aWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUs Ci0gICAgICAgICBlbHNlIGlmIChpc19oZXhfZW5kKSB7Ci0gICAgICAgICAgICAgLyogaW52YWxp ZCBoZXggc2VxdWVuY2UgKi8KLSAgICAgICAgICAgICAvLyBiZWVwX3dpbmRvdyAoZXZlbnQtPndp bmRvdyk7Ci0tICAgICAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gMDsKLSsgICAgICAg ICAgICBnX3N0cmluZ19zZXRfc2l6ZSAocHJpdi0+dGVudGF0aXZlX21hdGNoLCAwKTsKLSAgICAg ICAgICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamksIGdfZnJlZSk7 Ci0gICAgICAgICAgICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gRkFMU0U7Ci0gICAgICAgICAg ICAgcHJpdi0+aW5fZW1vamlfc2VxdWVuY2UgPSBGQUxTRTsKLUBAIC05OTksNyArMTEzNyw4IEBA IGlidXNfZW5naW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5l LAotICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDApIHsKLSAgICAgICAgICAgICBuX2NvbXBvc2Ut LTsKLSAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZlcltuX2NvbXBvc2VdID0gMDsKLS0g ICAgICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2ggPSAwOwotKyAgICAgICAgICAgIGdfc3Ry aW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotKyAgICAgICAgICAgIHBy aXYtPnRlbnRhdGl2ZV9tYXRjaF9sZW4gPSAwOwotICAgICAgICAgICAgIGlidXNfZW5naW5lX3Np bXBsZV9jaGVja19hbGxfY29tcG9zZV90YWJsZSAoc2ltcGxlLCBuX2NvbXBvc2UpOwotICAgICAg ICAgICAgIHJldHVybiBUUlVFOwotICAgICAgICAgfQotQEAgLTEwMDcsMTYgKzExNDYsMTcgQEAg aWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUs Ci0gCi0gICAgIC8qIENoZWNrIGZvciBoZXggc2VxdWVuY2UgcmVzdGFydCAqLwotICAgICBpZiAo cHJpdi0+aW5faGV4X3NlcXVlbmNlICYmIGhhdmVfaGV4X21vZHMgJiYgaXNfaGV4X3N0YXJ0KSB7 Ci0tICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNoICYmCi0tICAgICAgICAgICAgZ191 bmljaGFyX3ZhbGlkYXRlIChwcml2LT50ZW50YXRpdmVfbWF0Y2gpKSB7Ci0tICAgICAgICAgICAg aWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9jaGFyIChzaW1wbGUsIHByaXYtPnRlbnRhdGl2ZV9t YXRjaCk7Ci0rICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNoLT5sZW4gPiAwICkgewot KyAgICAgICAgICAgIGNoYXIgKnN0ciA9IGdfc3RyZHVwIChwcml2LT50ZW50YXRpdmVfbWF0Y2gt PnN0cik7Ci0rICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9zdHIgKHNpbXBs ZSwgc3RyKTsKLSsgICAgICAgICAgICBnX2ZyZWUgKHN0cik7Ci0gICAgICAgICAgICAgaWJ1c19l bmdpbmVfc2ltcGxlX3VwZGF0ZV9wcmVlZGl0X3RleHQgKHNpbXBsZSk7Ci0gICAgICAgICB9Ci0g ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAvKiBpbnZhbGlkIGhleCBzZXF1ZW5jZSAqLwot ICAgICAgICAgICAgIGlmIChuX2NvbXBvc2UgPiAwKSB7Ci0gICAgICAgICAgICAgICAgIC8vIEZJ WE1FIGJlZXBfd2luZG93IChldmVudC0+d2luZG93KTsKLS0gICAgICAgICAgICAgICAgcHJpdi0+ dGVudGF0aXZlX21hdGNoID0gMDsKLSsgICAgICAgICAgICAgICAgZ19zdHJpbmdfc2V0X3NpemUg KHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7Ci0gICAgICAgICAgICAgICAgIHByaXYtPmluX2hl eF9zZXF1ZW5jZSA9IEZBTFNFOwotICAgICAgICAgICAgICAgICBwcml2LT5jb21wb3NlX2J1ZmZl clswXSA9IDA7Ci0gICAgICAgICAgICAgfQotQEAgLTEwNDQsNyArMTE4NCw3IEBAIGlidXNfZW5n aW5lX3NpbXBsZV9wcm9jZXNzX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAotICAgICAg ICAgcHJpdi0+aW5faGV4X3NlcXVlbmNlID0gVFJVRTsKLSAgICAgICAgIHByaXYtPmluX2Vtb2pp X3NlcXVlbmNlID0gRkFMU0U7Ci0gICAgICAgICBwcml2LT5tb2RpZmllcnNfZHJvcHBlZCA9IEZB TFNFOwotLSAgICAgICAgcHJpdi0+dGVudGF0aXZlX21hdGNoID0gMDsKLSsgICAgICAgIGdfc3Ry aW5nX3NldF9zaXplIChwcml2LT50ZW50YXRpdmVfbWF0Y2gsIDApOwotICAgICAgICAgZ19jbGVh cl9wb2ludGVyICgmcHJpdi0+dGVudGF0aXZlX2Vtb2ppLCBnX2ZyZWUpOwotIAotICAgICAgICAg Ly8gZ19kZWJ1ZyAoIlN0YXJ0IEhFWCBNT0RFIik7Ci1AQCAtMTA1OCw3ICsxMTk4LDcgQEAgaWJ1 c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5naW5lICplbmdpbmUsCi0g ICAgICAgICBwcml2LT5pbl9oZXhfc2VxdWVuY2UgPSBGQUxTRTsKLSAgICAgICAgIHByaXYtPmlu X2Vtb2ppX3NlcXVlbmNlID0gVFJVRTsKLSAgICAgICAgIHByaXYtPm1vZGlmaWVyc19kcm9wcGVk ID0gRkFMU0U7Ci0tICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2ggPSAwOwotKyAgICAgICAg Z19zdHJpbmdfc2V0X3NpemUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCwgMCk7Ci0gICAgICAgICBn X2NsZWFyX3BvaW50ZXIgKCZwcml2LT50ZW50YXRpdmVfZW1vamksIGdfZnJlZSk7Ci0gCi0gICAg ICAgICAvLyBnX2RlYnVnICgiU3RhcnQgSEVYIE1PREUiKTsKLUBAIC0xMDY4LDcgKzEyMDgsNiBA QCBpYnVzX2VuZ2luZV9zaW1wbGVfcHJvY2Vzc19rZXlfZXZlbnQgKElCdXNFbmdpbmUgKmVuZ2lu ZSwKLSAgICAgICAgIHJldHVybiBUUlVFOwotICAgICB9Ci0gCi0tICAgIC8qIFRoZW4sIGNoZWNr IGZvciBjb21wb3NlIHNlcXVlbmNlcyAqLwotICAgICBpZiAocHJpdi0+aW5faGV4X3NlcXVlbmNl KSB7Ci0gICAgICAgICBpZiAoaGV4X2tleXZhbCkgewotICAgICAgICAgICAgIFNFVF9DT01QT1NF X0JVRkZFUl9FTEVNRU5UX05FWFQgKHByaXYtPmNvbXBvc2VfYnVmZmVyLAotQEAgLTExMzMsMTcg KzEyNzIsMTcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVzRW5n aW5lICplbmdpbmUsCi0gICAgICAgICBpZiAoaGF2ZV9oZXhfbW9kcykgewotICAgICAgICAgICAg IC8qIHNwYWNlIG9yIHJldHVybiBlbmRzIHRoZSBzZXF1ZW5jZSwgYW5kIHdlIGVhdCB0aGUga2V5 ICovCi0gICAgICAgICAgICAgaWYgKG5fY29tcG9zZSA+IDAgJiYgaXNfaGV4X2VuZCkgewotLSAg ICAgICAgICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNoICYmCi0tICAgICAgICAgICAg ICAgICAgICBnX3VuaWNoYXJfdmFsaWRhdGUgKHByaXYtPnRlbnRhdGl2ZV9tYXRjaCkpIHsKLS0g ICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV9jb21taXRfY2hhciAoc2ltcGxl LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcml2LT50ZW50YXRpdmVfbWF0Y2gpOwot LSAgICAgICAgICAgICAgICAgICAgcHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOwotKyAgICAg ICAgICAgICAgICBpZiAocHJpdi0+dGVudGF0aXZlX21hdGNoLT5sZW4gPiAwKSB7Ci0rICAgICAg ICAgICAgICAgICAgICBjaGFyICpzdHIgPSBnX3N0cmR1cCAocHJpdi0+dGVudGF0aXZlX21hdGNo LT5zdHIpOwotKyAgICAgICAgICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2ltcGxlX2NvbW1pdF9z dHIgKHNpbXBsZSwgc3RyKTsKLSsgICAgICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKTsKLSAg ICAgICAgICAgICAgICAgICAgIGlidXNfZW5naW5lX3NpbXBsZV91cGRhdGVfcHJlZWRpdF90ZXh0 IChzaW1wbGUpOwotKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRQotICAgICAgICAg ICAgICAgICAgICAgLyogaW52YWxpZCBoZXggc2VxdWVuY2UgKi8KLSAgICAgICAgICAgICAgICAg ICAgIC8vIGJlZXBfd2luZG93IChldmVudC0+d2luZG93KTsKLS0gICAgICAgICAgICAgICAgICAg IHByaXYtPnRlbnRhdGl2ZV9tYXRjaCA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICBnX3N0cmlu Z19zZXRfc2l6ZSAocHJpdi0+dGVudGF0aXZlX21hdGNoLCAwKTsKLSAgICAgICAgICAgICAgICAg ICAgIHByaXYtPmluX2hleF9zZXF1ZW5jZSA9IEZBTFNFOwotICAgICAgICAgICAgICAgICAgICAg cHJpdi0+Y29tcG9zZV9idWZmZXJbMF0gPSAwOwotICAgICAgICAgICAgICAgICB9Ci1AQCAtMTIz NCw3ICsxMzczLDcgQEAgaWJ1c19lbmdpbmVfc2ltcGxlX3Byb2Nlc3Nfa2V5X2V2ZW50IChJQnVz RW5naW5lICplbmdpbmUsCi0gCi0gICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgICB9 Ci0tICAgIH0gZWxzZSB7Ci0rICAgIH0gZWxzZSB7IC8qIFRoZW4sIGNoZWNrIGZvciBjb21wb3Nl IHNlcXVlbmNlcyAqLwotICAgICAgICAgaWYgKGlidXNfZW5naW5lX3NpbXBsZV9jaGVja19hbGxf Y29tcG9zZV90YWJsZSAoc2ltcGxlLCBuX2NvbXBvc2UpKQotICAgICAgICAgICAgIHJldHVybiBU UlVFOwotICAgICB9Ci1kaWZmIC0tZ2l0IGEvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2YXRlLmgg Yi9zcmMvaWJ1c2VuZ2luZXNpbXBsZXByaXZhdGUuaAotaW5kZXggNTQ3OWU1NTMuLmFkOTNkMmQy IDEwMDY0NAotLS0tIGEvc3JjL2lidXNlbmdpbmVzaW1wbGVwcml2YXRlLmgKLSsrKyBiL3NyYy9p YnVzZW5naW5lc2ltcGxlcHJpdmF0ZS5oCi1AQCAtMjYsNiArMjYsMTIgQEAKLSAKLSBHX0JFR0lO X0RFQ0xTCi0gCi0rLyogQ2hlY2tzIGlmIGEga2V5c3ltIGlzIGEgZGVhZCBrZXkuIERlYWQga2V5 IGtleXN5bSB2YWx1ZXMgYXJlIGRlZmluZWQgaW4KLSsgKiBpYnVza2V5c3ltcy5oIGFuZCB0aGUg Zmlyc3QgaXMgR0RLX0tFWV9kZWFkX2dyYXZlLgotKyAqLwotKyNkZWZpbmUgSVNfREVBRF9LRVko aykgXAotKyAgICAgICgoaykgPj0gSUJVU19LRVlfZGVhZF9ncmF2ZSAmJiAoaykgPD0gSUJVU19L RVlfZGVhZF9ncmVlaykKLSsKLSBleHRlcm4gY29uc3QgSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RF eCBpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdDsKLSBleHRlcm4gY29uc3QgSUJ1c0NvbXBvc2VU YWJsZUNvbXBhY3RFeCBpYnVzX2NvbXBvc2VfdGFibGVfY29tcGFjdF8zMmJpdDsKLSAKLUBAIC02 MCw3ICs2Niw4IEBAIGdib29sZWFuIGlidXNfY29tcG9zZV90YWJsZV9jb21wYWN0X2NoZWNrCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAg ICAgICAgICpjb21wb3NlX2ZpbmlzaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ3VuaWNoYXIgICAgICAgICAgICAgICAgICAqKm91dHB1dF9jaGFycyk7Ci0gZ3VuaWNo YXIgaWJ1c19rZXlzeW1fdG9fdW5pY29kZSAgICAgKGd1aW50MTYgICAgICAgICAgICAgICAgICAg ICBrZXlzeW0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu ICAgICAgICAgICAgICAgICAgICBjb21iaW5pbmcpOwotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgY29tYmluaW5nLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgICAg ICAgICAqbmVlZF9zcGFjZSk7Ci0gCi0gR19FTkRfREVDTFMKLSAKLS0tIAotMi4yOC4wCi0KLUZy b20gMTdhZTI2NmNhZGU0MWU3OTU1MzQ1MzJhY2VmYzg1NzE2YmIzMDllZiBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K LURhdGU6IE1vbiwgMjYgSnVsIDIwMjEgMjI6NTM6MzQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSCA2 LzZdIENvZGUgcmV2aWV3cwotCi0tIFVzZSBmc3RhdCgpIGFuZCBmY2htb2QoKSBidXQgbm90IHN0 YXQoKSBhbmQgY2htb2QoKSB0bwotICBmaXggcmFjZSBjb25kaXRpb25zCi0tIEF2b2lkIHRvIHVz ZSBhZnRlciBmcmVlCi0tIEZpeCBkZXJlZmVyZW5jZSBvZiBJQnVzQ29tcG9zZVRhYmxlLT5wcml2 Ci0tIEZpeCB0byBkaXZpZGUgYnkgemVybwotLS0tCi0gc3JjL2lidXNidXMuYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKy0tLS0tCi0gc3JjL2lidXNj b21wb3NldGFibGUuYyAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKy0tCi0gc3JjL3Rlc3Rz L2lidXMtZGVza3RvcC10ZXN0aW5nLXJ1bm5lci5pbiB8ICA2ICsrKy0tLQotIDMgZmlsZXMgY2hh bmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9z cmMvaWJ1c2J1cy5jIGIvc3JjL2lidXNidXMuYwotaW5kZXggZTliMGJjYmIuLjQ3NDAwY2I4IDEw MDY0NAotLS0tIGEvc3JjL2lidXNidXMuYwotKysrIGIvc3JjL2lidXNidXMuYwotQEAgLTIxLDEz ICsyMSwxNCBAQAotICAqIFVTQQotICAqLwotIAotLSNpbmNsdWRlICJpYnVzYnVzLmgiCi0gI2lu Y2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBl cy5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5j bHVkZSA8Z2xpYi9nc3RkaW8uaD4KLSAjaW5jbHVkZSA8Z2lvL2dpby5oPgotKyNpbmNsdWRlICJp YnVzYnVzLmgiCi0gI2luY2x1ZGUgImlidXNtYXJzaGFsZXJzLmgiCi0gI2luY2x1ZGUgImlidXNp bnRlcm5hbC5oIgotICNpbmNsdWRlICJpYnVzc2hhcmUuaCIKLUBAIC01MzcsNyArNTM4LDggQEAg c3RhdGljIHZvaWQKLSBpYnVzX2J1c19pbml0IChJQnVzQnVzICpidXMpCi0gewotICAgICBzdHJ1 Y3Qgc3RhdCBidWY7Ci0tICAgIGdjaGFyICpwYXRoOwotKyAgICBjaGFyICpwYXRoOwotKyAgICBp bnQgZmQ7Ci0gCi0gICAgIGJ1cy0+cHJpdiA9IElCVVNfQlVTX0dFVF9QUklWQVRFIChidXMpOwot IAotQEAgLTU2MiwyMCArNTY0LDMxIEBAIGlidXNfYnVzX2luaXQgKElCdXNCdXMgKmJ1cykKLSAg ICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgICBpZiAoc3RhdCAocGF0aCwgJmJ1ZikgPT0g MCkgewotKyAgICBlcnJubyA9IDA7Ci0rICAgIGlmICgoZmQgPSBvcGVuIChwYXRoLCBPX1JET05M WSB8IE9fRElSRUNUT1JZLCBTX0lSV1hVKSkgPT0gLTEpIHsKLSsgICAgICAgIGdfd2FybmluZyAo Im9wZW4gJXMgZmFpbGVkOiAlcyIsIHBhdGgsIGdfc3RyZXJyb3IgKGVycm5vKSk7Ci0rICAgICAg ICBnX2ZyZWUgKHBhdGgpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0rICAgIC8qIFRPQ1RP VTogVXNlIGZzdGF0KCkgYW5kIGZjaG1vZCgpIGJ1dCBub3Qgc3RhdCgpIGFuZCBjaG1vZCgpLgot KyAgICAgKiBiZWNhdXNlIGl0IGNhbiBjYXVzZSBhIHRpbWUtb2YtY2hlY2ssIHRpbWUtb2YtdXNl IHJhY2UgY29uZGl0aW9uLgotKyAgICAgKi8KLSsgICAgaWYgKGZzdGF0IChmZCwgJmJ1ZikgPT0g MCkgewotICAgICAgICAgaWYgKGJ1Zi5zdF91aWQgIT0gZ2V0dWlkICgpKSB7Ci0gICAgICAgICAg ICAgZ193YXJuaW5nICgiVGhlIG93bmVyIG9mICVzIGlzIG5vdCAlcyEiLAotICAgICAgICAgICAg ICAgICAgICAgICAgcGF0aCwgaWJ1c19nZXRfdXNlcl9uYW1lICgpKTsKLSsgICAgICAgICAgICBj bG9zZSAoZmQpOwotICAgICAgICAgICAgIGdfZnJlZSAocGF0aCk7Ci0gICAgICAgICAgICAgcmV0 dXJuOwotICAgICAgICAgfQotICAgICAgICAgaWYgKGJ1Zi5zdF9tb2RlICE9IChTX0lGRElSIHwg U19JUldYVSkpIHsKLSAgICAgICAgICAgICBlcnJubyA9IDA7Ci0tICAgICAgICAgICAgaWYgKGdf Y2htb2QgKHBhdGgsIDA3MDApKQotLSAgICAgICAgICAgICAgICBnX3dhcm5pbmcgKCJjaG1vZCBm YWlsZWQ6ICVzIiwgZXJybm8gPyBnX3N0cmVycm9yIChlcnJubykgOiAiIik7Ci0rICAgICAgICAg ICAgaWYgKGZjaG1vZCAoZmQsIFNfSVJXWFUpKQotKyAgICAgICAgICAgICAgICBnX3dhcm5pbmcg KCJjaG1vZCBmYWlsZWQ6ICVzIiwgZ19zdHJlcnJvciAoZXJybm8pKTsKLSAgICAgICAgIH0KLSAg ICAgfQotIAotKyAgICBjbG9zZSAoZmQpOwotICAgICBnX2ZyZWUgKHBhdGgpOwotIH0KLSAKLWRp ZmYgLS1naXQgYS9zcmMvaWJ1c2NvbXBvc2V0YWJsZS5jIGIvc3JjL2lidXNjb21wb3NldGFibGUu YwotaW5kZXggMmFkMjE1NTEuLmEwYjBiZWZjIDEwMDY0NAotLS0tIGEvc3JjL2lidXNjb21wb3Nl dGFibGUuYwotKysrIGIvc3JjL2lidXNjb21wb3NldGFibGUuYwotQEAgLTQwNiw3ICs0MDYsNyBA QCBnZXRfZW5fY29tcG9zZV9maWxlICh2b2lkKQotICAgICAgICAgcGF0aCA9IGdfYnVpbGRfZmls ZW5hbWUgKFgxMV9EQVRBRElSLCAqc3lzX2xhbmcsICJDb21wb3NlIiwgTlVMTCk7Ci0gICAgICAg ICBpZiAoZ19maWxlX3Rlc3QgKHBhdGgsIEdfRklMRV9URVNUX0VYSVNUUykpCi0gICAgICAgICAg ICAgYnJlYWs7Ci0tICAgICAgICBnX2ZyZWUgKHBhdGgpOwotKyAgICAgICAgZ19jbGVhcl9wb2lu dGVyICgmcGF0aCwgZ19mcmVlKTsKLSAgICAgfQotICAgICByZXR1cm4gcGF0aDsKLSB9Ci1AQCAt OTc1LDcgKzk3NSwxMCBAQCBpYnVzX2NvbXBvc2VfdGFibGVfZGVzZXJpYWxpemUgKGNvbnN0IGNo YXIgKmNvbnRlbnRzLAotICAgICAgICAgZ290byBvdXRfbG9hZF9jYWNoZTsKLSAgICAgfQotICAg ICBpZiAoZGF0YV9sZW5ndGgpIHsKLS0gICAgICAgIHJldHZhbC0+cHJpdiA9IGdfbmV3MCAoSUJ1 c0NvbXBvc2VUYWJsZVByaXZhdGUsIDEpOwotKyAgICAgICAgaWYgKCEocmV0dmFsLT5wcml2ID0g Z19uZXcwIChJQnVzQ29tcG9zZVRhYmxlUHJpdmF0ZSwgMSkpKSB7Ci0rICAgICAgICAgICAgZ193 YXJuaW5nICgiRmFpbGVkIGdfbmV3Iik7Ci0rICAgICAgICAgICAgZ290byBvdXRfbG9hZF9jYWNo ZTsKLSsgICAgICAgIH0KLSAgICAgICAgIHJldHZhbC0+cHJpdi0+ZGF0YV9maXJzdCA9IGdfbmV3 IChndWludDE2LCBkYXRhX2xlbmd0aCk7Ci0gICAgICAgICBtZW1jcHkgKHJldHZhbC0+cHJpdi0+ ZGF0YV9maXJzdCwKLSAgICAgICAgICAgICAgICAgZGF0YV8zMmJpdF9maXJzdCwgZGF0YV9sZW5n dGggKiBzaXplb2YgKGd1aW50MTYpKTsKLUBAIC0xNTY1LDYgKzE1NjgsNyBAQCBpYnVzX2NvbXBv c2VfdGFibGVfY29tcGFjdF9jaGVjayAoY29uc3QgSUJ1c0NvbXBvc2VUYWJsZUNvbXBhY3RFeAot ICAgICAgICAgICAgIHJvd19zdHJpZGUgPSBpICsgMjsKLSAKLSAgICAgICAgICAgICBpZiAoc2Vx X2luZGV4W2kgKyAxXSAtIHNlcV9pbmRleFtpXSA+IDApIHsKLSsgICAgICAgICAgICAgICAgZ19h c3NlcnQgKHJvd19zdHJpZGUpOwotICAgICAgICAgICAgICAgICBzZXEgPSBic2VhcmNoIChjb21w b3NlX2J1ZmZlciArIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLT5k YXRhICsgc2VxX2luZGV4W2ldLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vx X2luZGV4W2kgKyAxXSAtIHNlcV9pbmRleFtpXSkgLyByb3dfc3RyaWRlLAotZGlmZiAtLWdpdCBh L3NyYy90ZXN0cy9pYnVzLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIuaW4gYi9zcmMvdGVzdHMvaWJ1 cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluCi1pbmRleCAwZWY3MmMwMy4uYzEwMTY3MDMgMTAw NzU1Ci0tLS0gYS9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluCi0rKysg Yi9zcmMvdGVzdHMvaWJ1cy1kZXNrdG9wLXRlc3RpbmctcnVubmVyLmluCi1AQCAtMjIwLDcgKzIy MCw3IEBAIGluaXRfZ25vbWUoKQotICAgICAjIEdfTUVTU0FHRVNfREVCVUc9YWxsIG9yIEdfTUVT U0FHRVNfREVCVUc9R0xpYi1HSU8tREVCVUcgd291bGQgYXBwZW5kCi0gICAgICMgZGVidWcgbWVz c2FnZXMgdG8gZ3NldHRpbmdzIG91dHB1dCBhbmQgY291bGQgbm90IGdldCB0aGUgcmVzdWx0IGNv cnJlY3RseS4KLSAgICAgYmFja3VwX0dfTUVTU0FHRVNfREVCVUc9IiRHX01FU1NBR0VTX0RFQlVH IgotLSAgICBleHBvcnQgLW4gR19NRVNTQUdFU19ERUJVRz0nJwotKyAgICB1bnNldCBHX01FU1NB R0VTX0RFQlVHCi0gICAgICMgRGlzYWJsZSBUb3VyIGRpYWxvZyB0byBnZXQgZm9jdXMKLSAgICAg Vj1gZ3NldHRpbmdzIGdldCBvcmcuZ25vbWUuc2hlbGwgd2VsY29tZS1kaWFsb2ctbGFzdC1zaG93 bi12ZXJzaW9uYAotICAgICBpZiBbIHgiJFYiID0geCInJyIgXSA7IHRoZW4KLUBAIC0yMzEsOCAr MjMxLDggQEAgaW5pdF9nbm9tZSgpCi0gICAgIE5PX1NZU19ESVI9L3Vzci9zaGFyZS9nbm9tZS1z aGVsbC9leHRlbnNpb25zL25vLW92ZXJ2aWV3QGZ0aHgKLSAgICAgTk9fVVNFUl9ESVI9JEhPTUUv LmxvY2FsL3NoYXJlL2dub21lLXNoZWxsL2V4dGVuc2lvbnMvbm8tb3ZlcnZpZXdAZnRoeAotICAg ICBpZiBbICEgLWQgJE5PX1NZU19ESVIgXSAmJiBbICEgLWQgJE5PX1VTRVJfRElSIF0gOyB0aGVu Ci0tICAgICAgICBta2RpciAtcCBgZGlybmFtZSAkTk9fVVNFUl9ESVJgCi0tICAgICAgICBjcCAt UiBuby1vdmVydmlld0BmdGh4IGBkaXJuYW1lICROT19VU0VSX0RJUmAKLSsgICAgICAgIG1rZGly IC1wICJgZGlybmFtZSAkTk9fVVNFUl9ESVJgIgotKyAgICAgICAgY3AgLVIgIm5vLW92ZXJ2aWV3 QGZ0aHgiICJgZGlybmFtZSAkTk9fVVNFUl9ESVJgIgotICAgICBmaQotICAgICBWPWBnc2V0dGlu Z3MgZ2V0IG9yZy5nbm9tZS5zaGVsbCBkaXNhYmxlLXVzZXItZXh0ZW5zaW9uc2AKLSAgICAgaWYg WyB4IiRWIiA9IHgidHJ1ZSIgXSA7IHRoZW4KLS0tIAotMi4yOC4wCi0KLUZyb20gYTgyMzE2MTc2 OGM4ZjY5MTZkYmRlYmU3Mzg0MmE5ZmMwNDUyMTM2OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwg OSBBdWcgMjAyMSAxMjozNjo0MCArMDkwMAotU3ViamVjdDogW1BBVENIXSBjbGllbnQvZ3RrMi9p YnVzaW1jb250ZXh0OiBFbmFibGUgc3luYyBwcm9jZXNzIGluIEdUSzQKLQotZ3RrX2ltX2NvbnRl eHRfZmlsdGVyX2tleSgpIGRvZXMgbm90IGZvcndhcmQgY29udHJvbCBrZXlzIGxpa2VzCi1CYWNr U3BhY2UsIFJldHVybiBhbmQgY2hhbmdlIHRoZSBwcm9jZXNzIG1vZGUgdG8gdGhlIHN5bmNocm9u aXphdGlvbi4KLQotQlVHPWh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9ndGsvLS9pc3N1 ZXMvMzQ2NQotLS0tCi0gY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jIHwgNjUgKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0MSBpbnNlcnRp b25zKCspLCAyNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC9ndGsyL2lidXNp bWNvbnRleHQuYyBiL2NsaWVudC9ndGsyL2lidXNpbWNvbnRleHQuYwotaW5kZXggZTdjZTUzNjMu LmRhOWE0MDJmIDEwMDY0NAotLS0tIGEvY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jCi0rKysg Yi9jbGllbnQvZ3RrMi9pYnVzaW1jb250ZXh0LmMKLUBAIC0xMTAsMTMgKzExMCwxNSBAQCBzdGF0 aWMgZ3VpbnQgICAgX3NpZ25hbF9wcmVlZGl0X2VuZF9pZCA9IDA7Ci0gc3RhdGljIGd1aW50ICAg IF9zaWduYWxfZGVsZXRlX3N1cnJvdW5kaW5nX2lkID0gMDsKLSBzdGF0aWMgZ3VpbnQgICAgX3Np Z25hbF9yZXRyaWV2ZV9zdXJyb3VuZGluZ19pZCA9IDA7Ci0gCi0tI2lmICFHVEtfQ0hFQ0tfVkVS U0lPTiAoMywgOTgsIDQpCi0rI2lmIEdUS19DSEVDS19WRVJTSU9OICgzLCA5OCwgNCkKLStzdGF0 aWMgZ2Jvb2xlYW4gX3VzZV9zeW5jX21vZGUgPSBUUlVFOwotKyNlbHNlCi0gc3RhdGljIGNvbnN0 IGdjaGFyICpfbm9fc25vb3Blcl9hcHBzID0gTk9fU05PT1BFUl9BUFBTOwotIHN0YXRpYyBnYm9v bGVhbiBfdXNlX2tleV9zbm9vcGVyID0gRU5BQkxFX1NOT09QRVI7Ci0gc3RhdGljIGd1aW50ICAg IF9rZXlfc25vb3Blcl9pZCA9IDA7Ci0tI2VuZGlmCi0gCi0gc3RhdGljIGdib29sZWFuIF91c2Vf c3luY19tb2RlID0gRkFMU0U7Ci0rI2VuZGlmCi0gCi0gc3RhdGljIGNvbnN0IGdjaGFyICpfZGlz Y2FyZF9wYXNzd29yZF9hcHBzICA9ICIiOwotIHN0YXRpYyBnYm9vbGVhbiBfdXNlX2Rpc2NhcmRf cGFzc3dvcmQgPSBGQUxTRTsKLUBAIC03NjcsMTEgKzc2OSwxMyBAQCBpYnVzX2ltX2NvbnRleHRf Y2xhc3NfaW5pdCAoSUJ1c0lNQ29udGV4dENsYXNzICpjbGFzcykKLSAgICAgICAgIGdfc2lnbmFs X2xvb2t1cCAoInJldHJpZXZlLXN1cnJvdW5kaW5nIiwgR19UWVBFX0ZST01fQ0xBU1MgKGNsYXNz KSk7Ci0gICAgIGdfYXNzZXJ0IChfc2lnbmFsX3JldHJpZXZlX3N1cnJvdW5kaW5nX2lkICE9IDAp OwotIAotLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04gKDMsIDk4LCA0KQotKyNpZiBHVEtfQ0hFQ0tf VkVSU0lPTiAoMywgOTgsIDQpCi0rICAgIF91c2Vfc3luY19tb2RlID0gX2dldF9ib29sZWFuX2Vu diAoIklCVVNfRU5BQkxFX1NZTkNfTU9ERSIsIFRSVUUpOwotKyNlbHNlCi0gICAgIF91c2Vfa2V5 X3Nub29wZXIgPSAhX2dldF9ib29sZWFuX2VudiAoIklCVVNfRElTQUJMRV9TTk9PUEVSIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhKEVOQUJMRV9TTk9PUEVS KSk7Ci0tI2VuZGlmCi0gICAgIF91c2Vfc3luY19tb2RlID0gX2dldF9ib29sZWFuX2VudiAoIklC VVNfRU5BQkxFX1NZTkNfTU9ERSIsIEZBTFNFKTsKLSsjZW5kaWYKLSAgICAgX3VzZV9kaXNjYXJk X3Bhc3N3b3JkID0gX2dldF9ib29sZWFuX2VudiAoIklCVVNfRElTQ0FSRF9QQVNTV09SRCIsIEZB TFNFKTsKLSAKLSAjZGVmaW5lIENIRUNLX0FQUF9JTl9DU1ZfRU5WX1ZBUklBQkxFUyhyZXR2YWws ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTQzNCw2ICsxNDM4LDkgQEAgc3RhdGlj IGdib29sZWFuCi0gX3NldF9jdXJzb3JfbG9jYXRpb25faW50ZXJuYWwgKElCdXNJTUNvbnRleHQg KmlidXNpbWNvbnRleHQpCi0gewotICAgICBHZGtSZWN0YW5nbGUgYXJlYTsKLSsjaWYgR1RLX0NI RUNLX1ZFUlNJT04gKDMsIDk4LCA0KQotKyAgICBHdGtXaWRnZXQgKnJvb3Q7Ci0rI2VuZGlmCi0g Ci0gICAgIGlmKGlidXNpbWNvbnRleHQtPmNsaWVudF93aW5kb3cgPT0gTlVMTCB8fAotICAgICAg ICBpYnVzaW1jb250ZXh0LT5pYnVzY29udGV4dCA9PSBOVUxMKSB7Ci1AQCAtMTQ0Miw4ICsxNDQ5 LDI3IEBAIF9zZXRfY3Vyc29yX2xvY2F0aW9uX2ludGVybmFsIChJQnVzSU1Db250ZXh0ICppYnVz aW1jb250ZXh0KQotIAotICAgICBhcmVhID0gaWJ1c2ltY29udGV4dC0+Y3Vyc29yX2FyZWE7Ci0g Ci0tI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgOTgsIDQpCi0gI2lmZGVmIEdES19XSU5ET1dJ TkdfV0FZTEFORAotKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgOTgsIDQpCi0rICAgIHJvb3Qg PSBHVEtfV0lER0VUIChndGtfd2lkZ2V0X2dldF9yb290IChpYnVzaW1jb250ZXh0LT5jbGllbnRf d2luZG93KSk7Ci0rICAgICAvKiBGSVhNRTogR1RLX1NUWUxFX0NMQVNTX1RJVExFQkFSIGlzIGF2 YWlsYWJsZSBpbiBHVEszIGJ1dCBub3QgR1RLNC4KLSsgICAgICAqIGd0a19jc3NfYm94ZXNfZ2V0 X2NvbnRlbnRfcmVjdCgpIGlzIGF2YWlsYWJsZSBpbiBHVEs0IGJ1dCBpdCdzIGFuCi0rICAgICAg KiBpbnRlcm5hbCBBUEkgYW5kIGNhbGN1bGF0ZSB0aGUgd2luZG93IGVkZ2UgMzIgaW4gR1RLMy4K LSsgICAgICAqLwotKyAgICBhcmVhLnkgKz0gMzI7Ci0rICAgIGFyZWEud2lkdGggPSA1MDsgLyog RklYTUU6IFdoeSA1MCBtZWV0cyB0aGUgY3Vyc29yIHBvc2l0aW9uPyAqLwotKyAgICBhcmVhLmhl aWdodCA9IGd0a193aWRnZXRfZ2V0X2hlaWdodCAocm9vdCk7Ci0rICAgIGFyZWEuaGVpZ2h0ICs9 IDMyOwotKyAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWSAoZ2RrX2Rpc3BsYXlfZ2V0X2Rl ZmF1bHQgKCkpKSB7Ci0rICAgICAgICBpYnVzX2lucHV0X2NvbnRleHRfc2V0X2N1cnNvcl9sb2Nh dGlvbl9yZWxhdGl2ZSAoCi0rICAgICAgICAgICAgaWJ1c2ltY29udGV4dC0+aWJ1c2NvbnRleHQs Ci0rICAgICAgICAgICAgYXJlYS54LAotKyAgICAgICAgICAgIGFyZWEueSwKLSsgICAgICAgICAg ICBhcmVhLndpZHRoLAotKyAgICAgICAgICAgIGFyZWEuaGVpZ2h0KTsKLSsgICAgICAgIHJldHVy biBGQUxTRTsKLSsgICAgfQotKyNlbHNlCi0gICAgIGlmIChHREtfSVNfV0FZTEFORF9ESVNQTEFZ IChnZGtfZGlzcGxheV9nZXRfZGVmYXVsdCAoKSkpIHsKLSAgICAgICAgIGdkb3VibGUgcHgsIHB5 OwotICAgICAgICAgR2RrV2luZG93ICpwYXJlbnQ7Ci1AQCAtMTQ2OSwyMyArMTQ5NSwyMCBAQCBf c2V0X2N1cnNvcl9sb2NhdGlvbl9pbnRlcm5hbCAoSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29udGV4 dCkKLSAjZW5kaWYKLSAjZW5kaWYKLSAKLS0gICAgaWYgKGFyZWEueCA9PSAtMSAmJiBhcmVhLnkg PT0gLTEgJiYgYXJlYS53aWR0aCA9PSAwICYmIGFyZWEuaGVpZ2h0ID09IDApIHsKLSAjaWYgR1RL X0NIRUNLX1ZFUlNJT04gKDMsIDk4LCA0KQotLSAgICAgICAgYXJlYS54ID0gMDsKLS0gICAgICAg IGFyZWEueSArPSBndGtfd2lkZ2V0X2dldF9oZWlnaHQgKGlidXNpbWNvbnRleHQtPmNsaWVudF93 aW5kb3cpOwotICNlbGlmIEdUS19DSEVDS19WRVJTSU9OICgyLCA5MSwgMCkKLS0gICAgICAgIGFy ZWEueCA9IDA7Ci0tICAgICAgICBhcmVhLnkgKz0gZ2RrX3dpbmRvd19nZXRfaGVpZ2h0IChpYnVz aW1jb250ZXh0LT5jbGllbnRfd2luZG93KTsKLSsgICAgYXJlYS55ICs9IGdka193aW5kb3dfZ2V0 X2hlaWdodCAoaWJ1c2ltY29udGV4dC0+Y2xpZW50X3dpbmRvdyk7Ci0gI2Vsc2UKLSsgICAgaWYg KGFyZWEueCA9PSAtMSAmJiBhcmVhLnkgPT0gLTEgJiYgYXJlYS53aWR0aCA9PSAwICYmIGFyZWEu aGVpZ2h0ID09IDApIHsKLSAgICAgICAgIGdpbnQgdywgaDsKLSAgICAgICAgIGdka19kcmF3YWJs ZV9nZXRfc2l6ZSAoaWJ1c2ltY29udGV4dC0+Y2xpZW50X3dpbmRvdywgJncsICZoKTsKLSAgICAg ICAgIGFyZWEueSArPSBoOwotICAgICAgICAgYXJlYS54ID0gMDsKLS0jZW5kaWYKLSAgICAgfQot KyNlbmRpZgotIAotICNpZiBHVEtfQ0hFQ0tfVkVSU0lPTiAoMywgOTgsIDQpCi0tI2lmZGVmIEdE S19XSU5ET1dJTkdfWDExCi0rI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpCi0gICAgIEdk a0Rpc3BsYXkgKmRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5IChpYnVzaW1jb250ZXh0 LT5jbGllbnRfd2luZG93KTsKLSAgICAgaWYgKEdES19JU19YMTFfRElTUExBWSAoZGlzcGxheSkp IHsKLSAgICAgICAgIERpc3BsYXkgKnhkaXNwbGF5ID0gZ2RrX3gxMV9kaXNwbGF5X2dldF94ZGlz cGxheSAoZGlzcGxheSk7Ci1AQCAtMTUwNSwyMSArMTUyOCwxMCBAQCBfc2V0X2N1cnNvcl9sb2Nh dGlvbl9pbnRlcm5hbCAoSUJ1c0lNQ29udGV4dCAqaWJ1c2ltY29udGV4dCkKLSAgICAgICAgIFhH ZXRXaW5kb3dBdHRyaWJ1dGVzICh4ZGlzcGxheSwgd2luZG93LCAmeHdhKTsKLSAgICAgICAgIGFy ZWEueCA9IHggLSB4d2EueCArIGFyZWEueDsKLSAgICAgICAgIGFyZWEueSA9IHkgLSB4d2EueSAr IGFyZWEueTsKLS0gICAgICAgIGFyZWEud2lkdGggPSB4d2Eud2lkdGg7Ci0rICAgICAgICBhcmVh LndpZHRoID0gNTA7IC8qIEZJWE1FOiBXaHkgNTAgbWVldHMgdGhlIGN1cnNvciBwb3NpdGlvbj8g Ki8KLSAgICAgICAgIGFyZWEuaGVpZ2h0ID0geHdhLmhlaWdodDsKLSAgICAgfQotICNlbmRpZgot LSNlbGlmIEdUS19DSEVDS19WRVJTSU9OICgzLCA5MywgMCkKLS0gICAgewotLSAgICAgICAgR3Rr TmF0aXZlICpuYXRpdmUgPSBndGtfd2lkZ2V0X2dldF9uYXRpdmUgKAotLSAgICAgICAgICAgICAg ICBpYnVzaW1jb250ZXh0LT5jbGllbnRfd2luZG93KTsKLS0gICAgICAgIEdka1N1cmZhY2UgKnN1 cmZhY2UgPSBndGtfbmF0aXZlX2dldF9zdXJmYWNlIChuYXRpdmUpOwotLSAgICAgICAgaW50IHJv b3RfeCA9IDA7Ci0tICAgICAgICBpbnQgcm9vdF95ID0gMDsKLS0gICAgICAgIGdka19zdXJmYWNl X2dldF9wb3NpdGlvbiAoc3VyZmFjZSwgJnJvb3RfeCwgJnJvb3RfeSk7Ci0tICAgICAgICBhcmVh LnggKz0gcm9vdF94OwotLSAgICAgICAgYXJlYS55ICs9IHJvb3RfeTsKLS0gICAgfQotICNlbHNl Ci0gICAgIGdka193aW5kb3dfZ2V0X3Jvb3RfY29vcmRzIChpYnVzaW1jb250ZXh0LT5jbGllbnRf d2luZG93LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlYS54LCBhcmVhLnks Ci1AQCAtMTU0MSwxMiArMTU1MywxNyBAQCBpYnVzX2ltX2NvbnRleHRfc2V0X2N1cnNvcl9sb2Nh dGlvbiAoR3RrSU1Db250ZXh0ICpjb250ZXh0LCBHZGtSZWN0YW5nbGUgKmFyZWEpCi0gCi0gICAg IElCdXNJTUNvbnRleHQgKmlidXNpbWNvbnRleHQgPSBJQlVTX0lNX0NPTlRFWFQgKGNvbnRleHQp OwotIAotKyNpZiAhR1RLX0NIRUNLX1ZFUlNJT04gKDMsIDkzLCAwKQotKyAgICAvKiBUaGUgYXJl YSBpcyB0aGUgcmVsYXRpdmUgY29vcmRpbmF0ZXMgYW5kIHRoaXMgaGFzIHRvIGdldCB0aGUgYWJz b2x1dGUKLSsgICAgICogb25lcyBpbiBfc2V0X2N1cnNvcl9sb2NhdGlvbl9pbnRlcm5hbCgpIHNp bmNlIEdUSyA0LjAuCi0rICAgICAqLwotICAgICBpZiAoaWJ1c2ltY29udGV4dC0+Y3Vyc29yX2Fy ZWEueCA9PSBhcmVhLT54ICYmCi0gICAgICAgICBpYnVzaW1jb250ZXh0LT5jdXJzb3JfYXJlYS55 ID09IGFyZWEtPnkgJiYKLSAgICAgICAgIGlidXNpbWNvbnRleHQtPmN1cnNvcl9hcmVhLndpZHRo ID09IGFyZWEtPndpZHRoICYmCi0gICAgICAgICBpYnVzaW1jb250ZXh0LT5jdXJzb3JfYXJlYS5o ZWlnaHQgPT0gYXJlYS0+aGVpZ2h0KSB7Ci0gICAgICAgICByZXR1cm47Ci0gICAgIH0KLSsjZW5k aWYKLSAgICAgaWJ1c2ltY29udGV4dC0+Y3Vyc29yX2FyZWEgPSAqYXJlYTsKLSAgICAgX3NldF9j dXJzb3JfbG9jYXRpb25faW50ZXJuYWwgKGlidXNpbWNvbnRleHQpOwotICAgICBndGtfaW1fY29u dGV4dF9zZXRfY3Vyc29yX2xvY2F0aW9uIChpYnVzaW1jb250ZXh0LT5zbGF2ZSwgYXJlYSk7Ci0t LSAKLTIuMjguMAotCiBGcm9tIDk0M2QzNzQ0NGQ5Y2MwODgxY2I1ZmZmODdiZGQ0YjllZmQ1YWJk YjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3 YXJhMUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDkgQXVnIDIwMjEgMTI6NDk6MTUgKzA5MDAK