wget css parsing
"Ted Mielczarek" <[email protected]> Tue, 5 Dec 2006 12:00:15 -0500
| Newsgroups | gmane.comp.web.wget.patches |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_7043_32740652.1165338015424 Content-Type: multipart/alternative; boundary="----=_Part_7044_13014880.1165338015424" ------=_Part_7044_13014880.1165338015424 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello, I have updated my CSS parser patch to trunk. Attached is the patch file and the textual changelog. This is a pretty sizable patch, so don't hesitate to ask me for more information. I have received interest in this patch from various people, but no response from the wget maintainers. Is this something you would be interested in taking into wget? You can also browse and download a tarball of my source tree at: http://ted.mielczarek.org/code/wget-modified/trunk/ Regards, -Ted ------=_Part_7044_13014880.1165338015424 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hello,<br><br>I have updated my CSS parser patch to trunk. Attached is the patch file and the textual changelog. This is a pretty sizable patch, so don't hesitate to ask me for more information. I have received interest in this patch from various people, but no response from the wget maintainers. Is this something you would be interested in taking into wget? <br><br>You can also browse and download a tarball of my source tree at:<br><a href="http://ted.mielczarek.org/code/wget-modified/trunk/">http://ted.mielczarek.org/code/wget-modified/trunk/</a><br><br>Regards,<br>-Ted<br> <br> ------=_Part_7044_13014880.1165338015424-- ------=_Part_7043_32740652.1165338015424 Content-Type: application/octet-stream; name=wget_simple_css_parser.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_evck4ktg Content-Disposition: attachment; filename="wget_simple_css_parser.patch" SW5kZXg6IGNvbmZpZ3VyZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb25maWd1cmUuaW4JKHJldmlzaW9u IDIxOTcpCisrKyBjb25maWd1cmUuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExNSw2ICsxMTUsOSBA QAogQUNfUFJPR19DQwogQUNfQUlYCiAKK1lZVEVYVF9QT0lOVEVSPTEKK0FDX1BST0dfTEVYCisK IGRubCBUdXJuIG9uIG9wdGltaXphdGlvbiBieSBkZWZhdWx0LiAgU3BlY2lmaWNhbGx5OgogZG5s CiBkbmwgaWYgdGhlIHVzZXIgaGFzbid0IHNwZWNpZmllZCBDRkxBR1MsIHRoZW4KSW5kZXg6IHNy Yy9NYWtlZmlsZS5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMvTWFrZWZpbGUuaW4JKHJldmlzaW9uIDIx OTcpCisrKyBzcmMvTWFrZWZpbGUuaW4JKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAK IExERkxBR1MgID0gQExERkxBR1NAIAogTElCUyAgICAgPSBATElCU0AgQExJQlNTTEAgQExJQkdO VVRMU0AKIGV4ZWV4dCAgID0gQGV4ZWV4dEAKK0xFWCAgICAgID0gQExFWEAKIAogSU5DTFVERVMg PSAtSS4gLUkkKHNyY2RpcikKIApAQCAtNzIsMTIgKzczLDEyIEBACiBTU0xfT0JKICAgID0gQFNT TF9PQkpACiBHRVRPUFRfT0JKID0gQEdFVE9QVF9PQkpACiAKLU9CSiA9ICQoQUxMT0NBKSBjbXB0 Lm8gY29ubmVjdC5vIGNvbnZlcnQubyBjb29raWVzLm8gICAgICAgICAgICAgIFwKLSAgICAgIGZ0 cC5vIGZ0cC1iYXNpYy5vIGZ0cC1scy5vICQoT1BJRV9PQkopICQoR0VUT1BUX09CSikgaGFzaC5v IFwKLSAgICAgIGhvc3QubyBodG1sLXBhcnNlLm8gaHRtbC11cmwubyBodHRwLm8gJChOVExNX09C SikgaW5pdC5vICAgIFwKLSAgICAgIGxvZy5vIG1haW4ubyAkKE1ENV9PQkopIG5ldHJjLm8gcHJv Z3Jlc3MubyBwdGltZXIubyByZWN1ci5vIFwKLSAgICAgIHJlcy5vIHJldHIubyBzYWZlLWN0eXBl Lm8gc25wcmludGYubyBzcGlkZXIubyAkKFNTTF9PQkopICAgIFwKLSAgICAgIHVybC5vIHV0aWxz Lm8gdmVyc2lvbi5vIHhtYWxsb2MubworT0JKID0gJChBTExPQ0EpIGNtcHQubyBjb25uZWN0Lm8g Y29udmVydC5vIGNvb2tpZXMubyBjc3MtdXJsLm8gICAgIFwKKyAgICAgIGZ0cC5vIGZ0cC1iYXNp Yy5vIGZ0cC1scy5vICQoT1BJRV9PQkopICQoR0VUT1BUX09CSikgaGFzaC5vICBcCisgICAgICBo b3N0Lm8gaHRtbC1wYXJzZS5vIGh0bWwtdXJsLm8gaHR0cC5vICQoTlRMTV9PQkopIGluaXQubyAg ICAgXAorICAgICAgbGV4Lnl5Lm8gbG9nLm8gbWFpbi5vICQoTUQ1X09CSikgbmV0cmMubyBwcm9n cmVzcy5vIHB0aW1lci5vIFwKKyAgICAgIHJlY3VyLm8gcmVzLm8gcmV0ci5vIHNhZmUtY3R5cGUu byBzbnByaW50Zi5vIHNwaWRlci5vICAgICAgICBcCisgICAgICAkKFNTTF9PQkopIHVybC5vIHV0 aWxzLm8gdmVyc2lvbi5vIHhtYWxsb2MubwogCiAuU1VGRklYRVM6CiAuU1VGRklYRVM6IC5jIC5v CkBAIC05MCwxNiArOTEsMTkgQEAKIHdnZXQkKGV4ZWV4dCk6ICQoT0JKKQogCSQoTElOSykgJChP QkopICQoTElCUykKIAorbGV4Lnl5LmM6IGNzcy5sZXgKKwkkKExFWCkgJDwKKwogIyBXZSBtYWtl IG9iamVjdCBmaWxlcyBkZXBlbmQgb24gZXZlcnkgaGVhZGVyLiAgUmF0aGVyIHRoYW4gYXR0ZW1w dCB0bwogIyB0cmFjayBkZXBlbmRlbmNpZXMsIGV2ZXJ5dGhpbmcgZ2V0cyByZWNvbXBpbGVkIHdo ZW4gYSBoZWFkZXIKICMgY2hhbmdlcy4gIFdpdGggYSBwcm9ncmFtIG9mIFdnZXQncyBzaXplIHRo aXMgZG9lc24ndCB3YXN0ZSBtdWNoCiAjIHRpbWUsIGFuZCBpdCdzIGEgbG90IHNhZmVyIHRoYW4g YXR0ZW1wdGluZyB0byBnZXQgYWxsIHRoZQogIyBkZXBlbmRlbmNpZXMgcmlnaHQuCiAKLSQoT0JK KTogY29uZmlnLXBvc3QuaCBjb25maWcuaCBjb25uZWN0LmggY29udmVydC5oIGNvb2tpZXMuaCBm dHAuaCBcCi0gICAgICAgIGdlbi1tZDUuaCBnZXRvcHQuaCBnbnUtbWQ1LmggaGFzaC5oIGhvc3Qu aCBodG1sLXBhcnNlLmggICAgXAotICAgICAgICBodHRwLW50bG0uaCBpbml0LmggbG9nLmggbXN3 aW5kb3dzLmggbmV0cmMuaCBvcHRpb25zLmggICAgIFwKLSAgICAgICAgcHJvZ3Jlc3MuaCBwdGlt ZXIuaCByZWN1ci5oIHJlcy5oIHJldHIuaCBzYWZlLWN0eXBlLmggICAgICBcCiskKE9CSik6IGNv bmZpZy1wb3N0LmggY29uZmlnLmggY29ubmVjdC5oIGNvbnZlcnQuaCBjb29raWVzLmggY3NzLXVy bC5oIFwKKyAgICAgICAgZnRwLmggZ2VuLW1kNS5oIGdldG9wdC5oIGdudS1tZDUuaCBoYXNoLmgg aG9zdC5oIGh0bWwtcGFyc2UuaCAgXAorICAgICAgICBodHRwLW50bG0uaCBpbml0LmggbG9nLmgg bXN3aW5kb3dzLmggbmV0cmMuaCBvcHRpb25zLmggICAgICAgICBcCisgICAgICAgIHByb2dyZXNz LmggcHRpbWVyLmggcmVjdXIuaCByZXMuaCByZXRyLmggc2FmZS1jdHlwZS5oICAgICAgICAgIFwK ICAgICAgICAgc3BpZGVyLmggc3NsLmggc3lzZGVwLmggdXJsLmggdXRpbHMuaCB3Z2V0LmggeG1h bGxvYy5oCiAKICMKQEAgLTEyMiw3ICsxMjYsNyBAQAogIwogCiBjbGVhbjoKLQkkKFJNKSAqLm8g d2dldCQoZXhlZXh0KSAqfiAqLmJhayBjb3JlIGNvcmUuWzAtOV0qCisJJChSTSkgKi5vIHdnZXQk KGV4ZWV4dCkgKn4gKi5iYWsgY29yZSBjb3JlLlswLTldKiBsZXgueXkuYwogCiBkaXN0Y2xlYW46 IGNsZWFuCiAJJChSTSkgTWFrZWZpbGUgY29uZmlnLmgKSW5kZXg6IHNyYy9odHRwLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gc3JjL2h0dHAuYwkocmV2aXNpb24gMjE5NykKKysrIHNyYy9odHRwLmMJKHdvcmtp bmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKIAogI2RlZmluZSBURVhUSFRNTF9TICJ0ZXh0L2h0 bWwiCiAjZGVmaW5lIFRFWFRYSFRNTF9TICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiCisjZGVmaW5l IFRFWFRDU1NfUyAidGV4dC9jc3MiCiAKIC8qIFNvbWUgc3RhdHVzIGNvZGUgdmFsaWRhdGlvbiBt YWNyb3M6ICovCiAjZGVmaW5lIEhfMjBYKHgpICAgICAgICAoKCh4KSA+PSAyMDApICYmICgoeCkg PCAzMDApKQpAQCAtMTIzNSw2ICsxMjM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGJvb2wgKik7CiBzdGF0aWMgY2hhciAqYmFzaWNf YXV0aGVudGljYXRpb25fZW5jb2RlIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBzdGF0 aWMgYm9vbCBrbm93bl9hdXRoZW50aWNhdGlvbl9zY2hlbWVfcCAoY29uc3QgY2hhciAqLCBjb25z dCBjaGFyICopOworc3RhdGljIHZvaWQgZW5zdXJlX2V4dGVuc2lvbiAoc3RydWN0IGh0dHBfc3Rh dCAqLCBjb25zdCBjaGFyICosIGludCAqKTsKIHN0YXRpYyB2b2lkIGxvYWRfY29va2llcyAodm9p ZCk7CiAKICNkZWZpbmUgQkVHSU5TX1dJVEgobGluZSwgc3RyaW5nX2NvbnN0YW50KSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0yMDE3LDM1ICsyMDE5LDI2IEBACiAgIGVsc2UK ICAgICAqZHQgJj0gflRFWFRIVE1MOwogCi0gIGlmIChvcHQuaHRtbF9leHRlbnNpb24gJiYgKCpk dCAmIFRFWFRIVE1MKSkKLSAgICAvKiAtRSAvIC0taHRtbC1leHRlbnNpb24gLyBodG1sX2V4dGVu c2lvbiA9IG9uIHdhcyBzcGVjaWZpZWQsIGFuZCB0aGlzIGlzIGEKLSAgICAgICB0ZXh0L2h0bWwg ZmlsZS4gIElmIHNvbWUgY2FzZS1pbnNlbnNpdGl2ZSB2YXJpYXRpb24gb24gIi5odG1bbF0iIGlz bid0Ci0gICAgICAgYWxyZWFkeSB0aGUgZmlsZSdzIHN1ZmZpeCwgdGFjayBvbiAiLmh0bWwiLiAq LworICBpZiAodHlwZSAmJgorICAgICAgMCA9PSBzdHJuY2FzZWNtcCAodHlwZSwgVEVYVENTU19T LCBzdHJsZW4gKFRFWFRDU1NfUykpKQorICAgICpkdCB8PSBURVhUQ1NTOworICBlbHNlCisgICAg KmR0ICY9IH5URVhUQ1NTOworCisgIGlmIChvcHQuaHRtbF9leHRlbnNpb24pCiAgICAgewotICAg ICAgY2hhciAqbGFzdF9wZXJpb2RfaW5fbG9jYWxfZmlsZW5hbWUgPSBzdHJyY2hyIChocy0+bG9j YWxfZmlsZSwgJy4nKTsKLQotICAgICAgaWYgKGxhc3RfcGVyaW9kX2luX2xvY2FsX2ZpbGVuYW1l ID09IE5VTEwKLSAgICAgICAgICB8fCAhKDAgPT0gc3RyY2FzZWNtcCAobGFzdF9wZXJpb2RfaW5f bG9jYWxfZmlsZW5hbWUsICIuaHRtIikKLSAgICAgICAgICAgICAgIHx8IDAgPT0gc3RyY2FzZWNt cCAobGFzdF9wZXJpb2RfaW5fbG9jYWxfZmlsZW5hbWUsICIuaHRtbCIpKSkKKyAgICAgIGlmICgq ZHQgJiBURVhUSFRNTCkKKyAgICAgICAgLyogLUUgLyAtLWh0bWwtZXh0ZW5zaW9uIC8gaHRtbF9l eHRlbnNpb24gPSBvbiB3YXMgc3BlY2lmaWVkLAorICAgICAgICAgICBhbmQgdGhpcyBpcyBhIHRl eHQvaHRtbCBmaWxlLiAgSWYgc29tZSBjYXNlLWluc2Vuc2l0aXZlCisgICAgICAgICAgIHZhcmlh dGlvbiBvbiAiLmh0bVtsXSIgaXNuJ3QgYWxyZWFkeSB0aGUgZmlsZSdzIHN1ZmZpeCwKKyAgICAg ICAgICAgdGFjayBvbiAiLmh0bWwiLiAqLwogICAgICAgICB7Ci0gICAgICAgICAgaW50IGxvY2Fs X2ZpbGVuYW1lX2xlbiA9IHN0cmxlbiAoaHMtPmxvY2FsX2ZpbGUpOwotICAgICAgICAgIC8qIFJl c2l6ZSB0aGUgbG9jYWwgZmlsZSwgYWxsb3dpbmcgZm9yICIuaHRtbCIgcHJlY2VkZWQgYnkKLSAg ICAgICAgICAgICBvcHRpb25hbCAiLk5VTUJFUiIuICAqLwotICAgICAgICAgIGhzLT5sb2NhbF9m aWxlID0geHJlYWxsb2MgKGhzLT5sb2NhbF9maWxlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxvY2FsX2ZpbGVuYW1lX2xlbiArIDI0ICsgc2l6ZW9mICgiLmh0bWwiKSk7 Ci0gICAgICAgICAgc3RyY3B5KGhzLT5sb2NhbF9maWxlICsgbG9jYWxfZmlsZW5hbWVfbGVuLCAi Lmh0bWwiKTsKLSAgICAgICAgICAvKiBJZiBjbG9iYmVyaW5nIGlzIG5vdCBhbGxvd2VkIGFuZCB0 aGUgZmlsZSwgYXMgbmFtZWQsCi0gICAgICAgICAgICAgZXhpc3RzLCB0YWNrIG9uICIuTlVNQkVS Lmh0bWwiIGluc3RlYWQuICovCi0gICAgICAgICAgaWYgKCFBTExPV19DTE9CQkVSICYmIGZpbGVf ZXhpc3RzX3AgKGhzLT5sb2NhbF9maWxlKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg aW50IGV4dF9udW0gPSAxOwotICAgICAgICAgICAgICBkbwotICAgICAgICAgICAgICAgIHNwcmlu dGYgKGhzLT5sb2NhbF9maWxlICsgbG9jYWxfZmlsZW5hbWVfbGVuLAotICAgICAgICAgICAgICAg ICAgICAgICAgICIuJWQuaHRtbCIsIGV4dF9udW0rKyk7Ci0gICAgICAgICAgICAgIHdoaWxlIChm aWxlX2V4aXN0c19wIChocy0+bG9jYWxfZmlsZSkpOwotICAgICAgICAgICAgfQotICAgICAgICAg ICpkdCB8PSBBRERFRF9IVE1MX0VYVEVOU0lPTjsKKyAgICAgICAgICBlbnN1cmVfZXh0ZW5zaW9u IChocywgIi5odG1sIiwgZHQpOwogICAgICAgICB9CisgICAgICBlbHNlIGlmICgqZHQgJiBURVhU Q1NTKQorICAgICAgICB7CisgICAgICAgICAgZW5zdXJlX2V4dGVuc2lvbiAoaHMsICIuY3NzIiwg ZHQpOworICAgICAgICB9CiAgICAgfQogCiAgIGlmIChzdGF0Y29kZSA9PSBIVFRQX1NUQVRVU19S QU5HRV9OT1RfU0FUSVNGSUFCTEUpCkBAIC0zMDE4LDcgKzMwMTEsNDMgQEAKICAgICBjb29raWVf amFyX2RlbGV0ZSAod2dldF9jb29raWVfamFyKTsKIH0KIAordm9pZAorZW5zdXJlX2V4dGVuc2lv biAoc3RydWN0IGh0dHBfc3RhdCAqaHMsIGNvbnN0IGNoYXIgKmV4dCwgaW50ICpkdCkKK3sKKyAg Y2hhciAqbGFzdF9wZXJpb2RfaW5fbG9jYWxfZmlsZW5hbWUgPSBzdHJyY2hyIChocy0+bG9jYWxf ZmlsZSwgJy4nKTsKKyAgY2hhciBzaG9ydGV4dFs4XTsKKyAgaW50IGxlbiA9IHN0cmxlbiAoZXh0 KTsKKyAgaWYgKGxlbiA9PSA1KQorICAgIHsKKyAgICAgIHN0cm5jcHkgKHNob3J0ZXh0LCBleHQs IGxlbiAtIDEpOworICAgICAgc2hvcnRleHRbbGVuIC0gMl0gPSAnXDAnOworICAgIH0KIAorICBp ZiAobGFzdF9wZXJpb2RfaW5fbG9jYWxfZmlsZW5hbWUgPT0gTlVMTAorICAgICAgfHwgISgwID09 IHN0cmNhc2VjbXAgKGxhc3RfcGVyaW9kX2luX2xvY2FsX2ZpbGVuYW1lLCBzaG9ydGV4dCkKKyAg ICAgICAgICAgfHwgMCA9PSBzdHJjYXNlY21wIChsYXN0X3BlcmlvZF9pbl9sb2NhbF9maWxlbmFt ZSwgZXh0KSkpCisgICAgeworICAgICAgaW50IGxvY2FsX2ZpbGVuYW1lX2xlbiA9IHN0cmxlbiAo aHMtPmxvY2FsX2ZpbGUpOworICAgICAgLyogUmVzaXplIHRoZSBsb2NhbCBmaWxlLCBhbGxvd2lu ZyBmb3IgIi5odG1sIiBwcmVjZWRlZCBieQorICAgICAgICAgb3B0aW9uYWwgIi5OVU1CRVIiLiAg Ki8KKyAgICAgIGhzLT5sb2NhbF9maWxlID0geHJlYWxsb2MgKGhzLT5sb2NhbF9maWxlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfZmlsZW5hbWVfbGVuICsgMjQgKyBs ZW4pOworICAgICAgc3RyY3B5IChocy0+bG9jYWxfZmlsZSArIGxvY2FsX2ZpbGVuYW1lX2xlbiwg ZXh0KTsKKyAgICAgIC8qIElmIGNsb2JiZXJpbmcgaXMgbm90IGFsbG93ZWQgYW5kIHRoZSBmaWxl LCBhcyBuYW1lZCwKKyAgICAgICAgIGV4aXN0cywgdGFjayBvbiAiLk5VTUJFUi5odG1sIiBpbnN0 ZWFkLiAqLworICAgICAgaWYgKCFBTExPV19DTE9CQkVSICYmIGZpbGVfZXhpc3RzX3AgKGhzLT5s b2NhbF9maWxlKSkKKyAgICAgICAgeworICAgICAgICAgIGludCBleHRfbnVtID0gMTsKKyAgICAg ICAgICBkbworICAgICAgICAgICAgc3ByaW50ZiAoaHMtPmxvY2FsX2ZpbGUgKyBsb2NhbF9maWxl bmFtZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAiLiVkJXMiLCBleHRfbnVtKyssIGV4dCk7 CisgICAgICAgICAgd2hpbGUgKGZpbGVfZXhpc3RzX3AgKGhzLT5sb2NhbF9maWxlKSk7CisgICAg ICAgIH0KKyAgICAgICpkdCB8PSBBRERFRF9IVE1MX0VYVEVOU0lPTjsKKyAgICB9Cit9CisKKwog I2lmZGVmIFRFU1RJTkcKIAogY29uc3QgY2hhciAqCkluZGV4OiBzcmMvY3NzLmxleAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBzcmMvY3NzLmxleAkocmV2aXNpb24gMCkKKysrIHNyYy9jc3MubGV4CShyZXZpc2lv biAwKQpAQCAtMCwwICsxLDEzNyBAQAorJW9wdGlvbiBjYXNlLWluc2Vuc2l0aXZlCislb3B0aW9u IG5veXl3cmFwCislb3B0aW9uIG5ldmVyLWludGVyYWN0aXZlCisKKyV7CisvKiBMZXggc291cmNl IGZvciBDU1MgdG9rZW5pemluZy4KKyAgIFRha2VuIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIv Q1NTMjEvZ3JhbW1hci5odG1sI3EyCisgICBDb3B5cmlnaHQgKEMpIDIwMDYgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBXZ2V0LgorCitH TlUgV2dldCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisKK0dOVSBXZ2V0IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fsb25nIHdpdGggV2dldDsgaWYgbm90LCB3 cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZl LCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK0luIGFkZGl0aW9uLCBhcyBhIHNwZWNpYWwg ZXhjZXB0aW9uLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitnaXZlcyBwZXJtaXNzaW9u IHRvIGxpbmsgdGhlIGNvZGUgb2YgaXRzIHJlbGVhc2Ugb2YgV2dldCB3aXRoIHRoZQorT3BlblNT TCBwcm9qZWN0J3MgIk9wZW5TU0wiIGxpYnJhcnkgKG9yIHdpdGggbW9kaWZpZWQgdmVyc2lvbnMg b2YgaXQKK3RoYXQgdXNlIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlICJPcGVuU1NMIiBsaWJyYXJ5 KSwgYW5kIGRpc3RyaWJ1dGUKK3RoZSBsaW5rZWQgZXhlY3V0YWJsZXMuICBZb3UgbXVzdCBvYmV5 IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQoraW4gYWxsIHJlc3BlY3RzIGZvciBhbGwg b2YgdGhlIGNvZGUgdXNlZCBvdGhlciB0aGFuICJPcGVuU1NMIi4gIElmIHlvdQorbW9kaWZ5IHRo aXMgZmlsZSwgeW91IG1heSBleHRlbmQgdGhpcyBleGNlcHRpb24gdG8geW91ciB2ZXJzaW9uIG9m IHRoZQorZmlsZSwgYnV0IHlvdSBhcmUgbm90IG9ibGlnYXRlZCB0byBkbyBzby4gIElmIHlvdSBk byBub3Qgd2lzaCB0byBkbworc28sIGRlbGV0ZSB0aGlzIGV4Y2VwdGlvbiBzdGF0ZW1lbnQgZnJv bSB5b3VyIHZlcnNpb24uICAqLworCisjaW5jbHVkZSAiY3NzLXRva2Vucy5oIgorCisvKiB7c30r XC9cKlteKl0qXCorKFteLypdW14qXSpcKispKlwvICAgICAge3VucHV0KCcgJyk7IH0gKi8KKy8q cmVwbGFjZSBieSBzcGFjZSovCislfQorCitoICAgICAgICAgICAgICAgWzAtOWEtZl0KK25vbmFz Y2lpICAgICAgICBbXDIwMC1cMzc3XQordW5pY29kZSAgICAgICAgIFxce2h9ezEsNn0oXHJcbnxb IFx0XHJcblxmXSk/Citlc2NhcGUgICAgICAgICAge3VuaWNvZGV9fFxcW15cclxuXGYwLTlhLWZd CitubXN0YXJ0ICAgICAgICAgW19hLXpdfHtub25hc2NpaX18e2VzY2FwZX0KK25tY2hhciAgICAg ICAgICBbX2EtejAtOS1dfHtub25hc2NpaX18e2VzY2FwZX0KK3N0cmluZzEgICAgICAgICBcIihb XlxuXHJcZlxcIl18XFx7bmx9fHtlc2NhcGV9KSpcIgorc3RyaW5nMiAgICAgICAgIFwnKFteXG5c clxmXFwnXXxcXHtubH18e2VzY2FwZX0pKlwnCitpbnZhbGlkMSAgICAgICAgXCIoW15cblxyXGZc XCJdfFxce25sfXx7ZXNjYXBlfSkqCitpbnZhbGlkMiAgICAgICAgXCcoW15cblxyXGZcXCddfFxc e25sfXx7ZXNjYXBlfSkqCisKK2NvbW1lbnQgICAgICAgICBcL1wqW14qXSpcKisoW14vKl1bXipd KlwqKykqXC8KK2lkZW50ICAgICAgICAgICAtP3tubXN0YXJ0fXtubWNoYXJ9KgorbmFtZSAgICAg ICAgICAgIHtubWNoYXJ9KworbnVtICAgICAgICAgICAgIFswLTldK3xbMC05XSoiLiJbMC05XSsK K3N0cmluZyAgICAgICAgICB7c3RyaW5nMX18e3N0cmluZzJ9CitpbnZhbGlkICAgICAgICAge2lu dmFsaWQxfXx7aW52YWxpZDJ9Cit1cmwgICAgICAgICAgICAgKFshIyQlJiotfl18e25vbmFzY2lp fXx7ZXNjYXBlfSkqCitzICAgICAgICAgICAgICAgWyBcdFxyXG5cZl0KK3cgICAgICAgICAgICAg ICAoe3N9fHtjb21tZW50fSkqCitubCAgICAgICAgICAgICAgXG58XHJcbnxccnxcZgorCitBICAg ICAgICAgICAgICAgYXxcXDB7MCw0fSg0MXw2MSkoXHJcbnxbIFx0XHJcblxmXSk/CitDICAgICAg ICAgICAgICAgY3xcXDB7MCw0fSg0M3w2MykoXHJcbnxbIFx0XHJcblxmXSk/CitEICAgICAgICAg ICAgICAgZHxcXDB7MCw0fSg0NHw2NCkoXHJcbnxbIFx0XHJcblxmXSk/CitFICAgICAgICAgICAg ICAgZXxcXDB7MCw0fSg0NXw2NSkoXHJcbnxbIFx0XHJcblxmXSk/CitHICAgICAgICAgICAgICAg Z3xcXDB7MCw0fSg0N3w2NykoXHJcbnxbIFx0XHJcblxmXSk/fFxcZworSCAgICAgICAgICAgICAg IGh8XFwwezAsNH0oNDh8NjgpKFxyXG58WyBcdFxyXG5cZl0pP3xcXGgKK0kgICAgICAgICAgICAg ICBpfFxcMHswLDR9KDQ5fDY5KShcclxufFsgXHRcclxuXGZdKT98XFxpCitLICAgICAgICAgICAg ICAga3xcXDB7MCw0fSg0Ynw2YikoXHJcbnxbIFx0XHJcblxmXSk/fFxcaworTSAgICAgICAgICAg ICAgIG18XFwwezAsNH0oNGR8NmQpKFxyXG58WyBcdFxyXG5cZl0pP3xcXG0KK04gICAgICAgICAg ICAgICBufFxcMHswLDR9KDRlfDZlKShcclxufFsgXHRcclxuXGZdKT98XFxuCitQICAgICAgICAg ICAgICAgcHxcXDB7MCw0fSg1MHw3MCkoXHJcbnxbIFx0XHJcblxmXSk/fFxccAorUiAgICAgICAg ICAgICAgIHJ8XFwwezAsNH0oNTJ8NzIpKFxyXG58WyBcdFxyXG5cZl0pP3xcXHIKK1MgICAgICAg ICAgICAgICBzfFxcMHswLDR9KDUzfDczKShcclxufFsgXHRcclxuXGZdKT98XFxzCitUICAgICAg ICAgICAgICAgdHxcXDB7MCw0fSg1NHw3NCkoXHJcbnxbIFx0XHJcblxmXSk/fFxcdAorWCAgICAg ICAgICAgICAgIHh8XFwwezAsNH0oNTh8NzgpKFxyXG58WyBcdFxyXG5cZl0pP3xcXHgKK1ogICAg ICAgICAgICAgICB6fFxcMHswLDR9KDVhfDdhKShcclxufFsgXHRcclxuXGZdKT98XFx6CisKKyUl CisKK3tzfSAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gUzt9CisKK1wvXCpbXipdKlwqKyhb Xi8qXVteKl0qXCorKSpcLyAgICAgICAgICB7cmV0dXJuIFM7fSAvKiBpZ25vcmUgY29tbWVudHMg Ki8KKworIjwhLS0iICAgICAgICAgIHtyZXR1cm4gQ0RPO30KKyItLT4iICAgICAgICAgICAgICAg ICAgIHtyZXR1cm4gQ0RDO30KKyJ+PSIgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gSU5DTFVE RVM7fQorInw9IiAgICAgICAgICAgICAgICAgICAge3JldHVybiBEQVNITUFUQ0g7fQorCit7d30i eyIgICAgICAgICAgICAgICAgICB7cmV0dXJuIExCUkFDRTt9Cit7d30iKyIgICAgICAgICAgICAg ICAgICB7cmV0dXJuIFBMVVM7fQore3d9Ij4iICAgICAgICAgICAgICAgICAge3JldHVybiBHUkVB VEVSO30KK3t3fSIsIiAgICAgICAgICAgICAgICAgIHtyZXR1cm4gQ09NTUE7fQorCit7c3RyaW5n fSAgICAgICAgICAgICAgICB7cmV0dXJuIFNUUklORzt9Cit7aW52YWxpZH0gICAgICAgICAgICAg ICB7cmV0dXJuIElOVkFMSUQ7IC8qIHVuY2xvc2VkIHN0cmluZyAqL30KKwore2lkZW50fSAgICAg ICAgICAgICAgICAge3JldHVybiBJREVOVDt9CisKKyIjIntuYW1lfSAgICAgICAgICAgICAgIHty ZXR1cm4gSEFTSDt9CisKKyJAaW1wb3J0IiAgICAgICAgICAgICAgIHtyZXR1cm4gSU1QT1JUX1NZ TTt9CisiQHBhZ2UiICAgICAgICAgICAgICAgICB7cmV0dXJuIFBBR0VfU1lNO30KKyJAbWVkaWEi ICAgICAgICAgICAgICAgIHtyZXR1cm4gTUVESUFfU1lNO30KKyJAY2hhcnNldCAiICAgICAgICAg ICAgIHtyZXR1cm4gQ0hBUlNFVF9TWU07fQorCisiISJ7d30iaW1wb3J0YW50IiAgICAgICB7cmV0 dXJuIElNUE9SVEFOVF9TWU07fQorCit7bnVtfXtFfXtNfSAgICAgICAgICAgICB7cmV0dXJuIEVN Uzt9Cit7bnVtfXtFfXtYfSAgICAgICAgICAgICB7cmV0dXJuIEVYUzt9Cit7bnVtfXtQfXtYfSAg ICAgICAgICAgICB7cmV0dXJuIExFTkdUSDt9Cit7bnVtfXtDfXtNfSAgICAgICAgICAgICB7cmV0 dXJuIExFTkdUSDt9Cit7bnVtfXtNfXtNfSAgICAgICAgICAgICB7cmV0dXJuIExFTkdUSDt9Cit7 bnVtfXtJfXtOfSAgICAgICAgICAgICB7cmV0dXJuIExFTkdUSDt9Cit7bnVtfXtQfXtUfSAgICAg ICAgICAgICB7cmV0dXJuIExFTkdUSDt9Cit7bnVtfXtQfXtDfSAgICAgICAgICAgICB7cmV0dXJu IExFTkdUSDt9Cit7bnVtfXtEfXtFfXtHfSAgICAgICAgICB7cmV0dXJuIEFOR0xFO30KK3tudW19 e1J9e0F9e0R9ICAgICAgICAgIHtyZXR1cm4gQU5HTEU7fQore251bX17R317Un17QX17RH0gICAg ICAge3JldHVybiBBTkdMRTt9Cit7bnVtfXtNfXtTfSAgICAgICAgICAgICB7cmV0dXJuIFRJTUU7 fQore251bX17U30gICAgICAgICAgICAgICAge3JldHVybiBUSU1FO30KK3tudW19e0h9e1p9ICAg ICAgICAgICAgIHtyZXR1cm4gRlJFUTt9Cit7bnVtfXtLfXtIfXtafSAgICAgICAgICB7cmV0dXJu IEZSRVE7fQore251bX17aWRlbnR9ICAgICAgICAgICAge3JldHVybiBESU1FTlNJT047fQorCit7 bnVtfSUgICAgICAgICAgICAgICAgICB7cmV0dXJuIFBFUkNFTlRBR0U7fQore251bX0gICAgICAg ICAgICAgICAgICAge3JldHVybiBOVU1CRVI7fQorCisidXJsKCJ7d317c3RyaW5nfXt3fSIpIiB7 cmV0dXJuIFVSSTt9CisidXJsKCJ7d317dXJsfXt3fSIpIiAgICB7cmV0dXJuIFVSSTt9Cit7aWRl bnR9IigiICAgICAgICAgICAgICB7cmV0dXJuIEZVTkNUSU9OO30KKworLiAgICAgICAgICAgICAg ICAgICAgICAge3JldHVybiAqeXl0ZXh0O30KKworJSUKSW5kZXg6IHNyYy9jc3MtdG9rZW5zLmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gc3JjL2Nzcy10b2tlbnMuaAkocmV2aXNpb24gMCkKKysrIHNyYy9jc3Mt dG9rZW5zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qIERlY2xhcmF0aW9ucyBm b3IgY3NzLmxleAorICAgQ29weXJpZ2h0IChDKSAyMDA2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgV2dldC4KKworR05VIFdnZXQgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQoraXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg b2YgdGhlIExpY2Vuc2UsIG9yCisoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CitHTlUgV2dldCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKK01FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKK0dOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisKK1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCithbG9uZyB3aXRoIFdnZXQ7IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKK0ZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdl LCBNQSAwMjEzOSwgVVNBLgorCitJbiBhZGRpdGlvbiwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZ2l2ZXMgcGVybWlzc2lvbiB0byBsaW5rIHRo ZSBjb2RlIG9mIGl0cyByZWxlYXNlIG9mIFdnZXQgd2l0aCB0aGUKK09wZW5TU0wgcHJvamVjdCdz ICJPcGVuU1NMIiBsaWJyYXJ5IChvciB3aXRoIG1vZGlmaWVkIHZlcnNpb25zIG9mIGl0Cit0aGF0 IHVzZSB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSAiT3BlblNTTCIgbGlicmFyeSksIGFuZCBkaXN0 cmlidXRlCit0aGUgbGlua2VkIGV4ZWN1dGFibGVzLiAgWW91IG11c3Qgb2JleSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKK2luIGFsbCByZXNwZWN0cyBmb3IgYWxsIG9mIHRoZSBjb2Rl IHVzZWQgb3RoZXIgdGhhbiAiT3BlblNTTCIuICBJZiB5b3UKK21vZGlmeSB0aGlzIGZpbGUsIHlv dSBtYXkgZXh0ZW5kIHRoaXMgZXhjZXB0aW9uIHRvIHlvdXIgdmVyc2lvbiBvZiB0aGUKK2ZpbGUs IGJ1dCB5b3UgYXJlIG5vdCBvYmxpZ2F0ZWQgdG8gZG8gc28uICBJZiB5b3UgZG8gbm90IHdpc2gg dG8gZG8KK3NvLCBkZWxldGUgdGhpcyBleGNlcHRpb24gc3RhdGVtZW50IGZyb20geW91ciB2ZXJz aW9uLiAgKi8KKworI2lmbmRlZiBDU1NfVE9LRU5TX0gKKyNkZWZpbmUgQ1NTX1RPS0VOU19ICisK K2VudW0geworICBDU1NFT0YsCisgIFMsCisgIENETywKKyAgQ0RDLAorICBJTkNMVURFUywKKyAg REFTSE1BVENILAorICBMQlJBQ0UsCisgIFBMVVMsCisgIEdSRUFURVIsCisgIENPTU1BLAorICBT VFJJTkcsCisgIElOVkFMSUQsCisgIElERU5ULAorICBIQVNILAorICBJTVBPUlRfU1lNLAorICBQ QUdFX1NZTSwKKyAgTUVESUFfU1lNLAorICBDSEFSU0VUX1NZTSwKKyAgSU1QT1JUQU5UX1NZTSwK KyAgRU1TLAorICBFWFMsCisgIExFTkdUSCwKKyAgQU5HTEUsCisgIFRJTUUsCisgIEZSRVEsCisg IERJTUVOU0lPTiwKKyAgUEVSQ0VOVEFHRSwKKyAgTlVNQkVSLAorICBVUkksCisgIEZVTkNUSU9O Cit9IGNzc190b2tlbnM7CisKKyNlbmRpZiAvKiBDU1NfVE9LRU5TX0ggKi8KSW5kZXg6IHNyYy9o dG1sLXVybC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9odG1sLXVybC5jCShyZXZpc2lvbiAyMTk3KQor Kysgc3JjL2h0bWwtdXJsLmMJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEwICs0MSwxMCBAQAogI2lu Y2x1ZGUgInV0aWxzLmgiCiAjaW5jbHVkZSAiaGFzaC5oIgogI2luY2x1ZGUgImNvbnZlcnQuaCIK LSNpbmNsdWRlICJyZWN1ci5oIgkJLyogZGVjbGFyYXRpb24gb2YgZ2V0X3VybHNfaHRtbCAqLwor I2luY2x1ZGUgInJlY3VyLmgiCisjaW5jbHVkZSAiaHRtbC11cmwuaCIKKyNpbmNsdWRlICJjc3Mt dXJsLmgiCiAKLXN0cnVjdCBtYXBfY29udGV4dDsKLQogdHlwZWRlZiB2b2lkICgqdGFnX2hhbmRs ZXJfdCkgKGludCwgc3RydWN0IHRhZ2luZm8gKiwgc3RydWN0IG1hcF9jb250ZXh0ICopOwogCiAj ZGVmaW5lIERFQ0xBUkVfVEFHX0hBTkRMRVIoZnVuKQkJCQlcCkBAIC0xNjMsMTEgKzE2MywxMiBA QAogICAgZnJvbSB0aGUgaW5mb3JtYXRpb24gYWJvdmUuICBIb3dldmVyLCBzb21lIHBsYWNlcyBp biB0aGUgY29kZSByZWZlcgogICAgdG8gdGhlIGF0dHJpYnV0ZXMgbm90IG1lbnRpb25lZCBoZXJl LiAgV2UgYWRkIHRoZW0gbWFudWFsbHkuICAqLwogc3RhdGljIGNvbnN0IGNoYXIgKmFkZGl0aW9u YWxfYXR0cmlidXRlc1tdID0gewotICAicmVsIiwJCQkvKiB1c2VkIGJ5IHRhZ19oYW5kbGVfbGlu ayAqLwotICAiaHR0cC1lcXVpdiIsCQkJLyogdXNlZCBieSB0YWdfaGFuZGxlX21ldGEgKi8KLSAg Im5hbWUiLAkJCS8qIHVzZWQgYnkgdGFnX2hhbmRsZV9tZXRhICovCi0gICJjb250ZW50IiwJCQkv KiB1c2VkIGJ5IHRhZ19oYW5kbGVfbWV0YSAqLwotICAiYWN0aW9uIgkJCS8qIHVzZWQgYnkgdGFn X2hhbmRsZV9mb3JtICovCisgICJyZWwiLAkJCS8qIHVzZWQgYnkgdGFnX2hhbmRsZV9saW5rICAq LworICAiaHR0cC1lcXVpdiIsCQkJLyogdXNlZCBieSB0YWdfaGFuZGxlX21ldGEgICovCisgICJu YW1lIiwJCQkvKiB1c2VkIGJ5IHRhZ19oYW5kbGVfbWV0YSAgKi8KKyAgImNvbnRlbnQiLAkJCS8q IHVzZWQgYnkgdGFnX2hhbmRsZV9tZXRhICAqLworICAiYWN0aW9uIiwJCQkvKiB1c2VkIGJ5IHRh Z19oYW5kbGVfZm9ybSAgKi8KKyAgInN0eWxlIgkJCS8qIHVzZWQgYnkgY2hlY2tfc3R5bGVfYXR0 ciAqLwogfTsKIAogc3RhdGljIHN0cnVjdCBoYXNoX3RhYmxlICppbnRlcmVzdGluZ190YWdzOwpA QCAtMjQ2LDI4ICsyNDcsMjAgQEAKICAgcmV0dXJuIE5VTEw7CiB9CiAKLXN0cnVjdCBtYXBfY29u dGV4dCB7Ci0gIGNoYXIgKnRleHQ7CQkJLyogSFRNTCB0ZXh0LiAqLwotICBjaGFyICpiYXNlOwkJ CS8qIEJhc2UgVVJJIG9mIHRoZSBkb2N1bWVudCwgcG9zc2libHkKLQkJCQkgICBjaGFuZ2VkIHRo cm91Z2ggPGJhc2UgaHJlZj0uLi4+LiAqLwotICBjb25zdCBjaGFyICpwYXJlbnRfYmFzZTsJLyog QmFzZSBvZiB0aGUgY3VycmVudCBkb2N1bWVudC4gKi8KLSAgY29uc3QgY2hhciAqZG9jdW1lbnRf ZmlsZTsJLyogRmlsZSBuYW1lIG9mIHRoaXMgZG9jdW1lbnQuICovCi0gIGJvb2wgbm9mb2xsb3c7 CQkvKiB3aGV0aGVyIE5PRk9MTE9XIHdhcyBzcGVjaWZpZWQgaW4gYQotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPXJvYm90cz4gdGFnLiAqLworLyogdXNlZCBm b3IgY2FsbHMgdG8gYXBwZW5kX3VybCAqLworI2RlZmluZSBBVFRSX1BPUyh0YWcsIGF0dHJpbmQs IGN0eCkgXAorICh0YWctPmF0dHJzW2F0dHJpbmRdLnZhbHVlX3Jhd19iZWdpbm5pbmcgLSBjdHgt PnRleHQpCisjZGVmaW5lIEFUVFJfU0laRSh0YWcsIGF0dHJpbmQpIFwKKyAodGFnLT5hdHRyc1th dHRyaW5kXS52YWx1ZV9yYXdfc2l6ZSkKIAotICBzdHJ1Y3QgdXJscG9zICpoZWFkLCAqdGFpbDsJ LyogTGlzdCBvZiBVUkxzIHRoYXQgaXMgYmVpbmcKLQkJCQkgICBidWlsdC4gKi8KLX07Ci0KIC8q IEFwcGVuZCBMSU5LX1VSSSB0byB0aGUgdXJscG9zIHN0cnVjdHVyZSB0aGF0IGlzIGJlaW5nIGJ1 aWx0LgogCi0gICBMSU5LX1VSSSB3aWxsIGJlIG1lcmdlZCB3aXRoIHRoZSBjdXJyZW50IGRvY3Vt ZW50IGJhc2UuICBUQUcgYW5kCi0gICBBVFRSSU5EIGFyZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQg dG8gc3RvcmUgdGhlIHBvc2l0aW9uIGFuZAotICAgc2l6ZS4gICovCisgICBMSU5LX1VSSSB3aWxs IGJlIG1lcmdlZCB3aXRoIHRoZSBjdXJyZW50IGRvY3VtZW50IGJhc2UuCisqLwogCi1zdGF0aWMg c3RydWN0IHVybHBvcyAqCi1hcHBlbmRfdXJsIChjb25zdCBjaGFyICpsaW5rX3VyaSwKLQkgICAg c3RydWN0IHRhZ2luZm8gKnRhZywgaW50IGF0dHJpbmQsIHN0cnVjdCBtYXBfY29udGV4dCAqY3R4 KQorc3RydWN0IHVybHBvcyAqCithcHBlbmRfdXJsIChjb25zdCBjaGFyICpsaW5rX3VyaSwgaW50 IHBvc2l0aW9uLCBpbnQgc2l6ZSwKKyAgICAgICAgICAgIHN0cnVjdCBtYXBfY29udGV4dCAqY3R4 KQogewogICBpbnQgbGlua19oYXNfc2NoZW1lID0gdXJsX2hhc19zY2hlbWUgKGxpbmtfdXJpKTsK ICAgc3RydWN0IHVybHBvcyAqbmV3ZWw7CkBAIC0zMjUsOCArMzE4LDggQEAKIAogICBuZXdlbCA9 IHhuZXcwIChzdHJ1Y3QgdXJscG9zKTsKICAgbmV3ZWwtPnVybCA9IHVybDsKLSAgbmV3ZWwtPnBv cyA9IHRhZy0+YXR0cnNbYXR0cmluZF0udmFsdWVfcmF3X2JlZ2lubmluZyAtIGN0eC0+dGV4dDsK LSAgbmV3ZWwtPnNpemUgPSB0YWctPmF0dHJzW2F0dHJpbmRdLnZhbHVlX3Jhd19zaXplOworICBu ZXdlbC0+cG9zID0gcG9zaXRpb247CisgIG5ld2VsLT5zaXplID0gc2l6ZTsKIAogICAvKiBBIFVS TCBpcyByZWxhdGl2ZSBpZiB0aGUgaG9zdCBpcyBub3QgbmFtZWQsIGFuZCB0aGUgbmFtZSBkb2Vz IG5vdAogICAgICBzdGFydCB3aXRoIGAvJy4gICovCkBAIC0zNDYsNiArMzM5LDE4IEBACiAgIHJl dHVybiBuZXdlbDsKIH0KIAwKK3N0YXRpYyB2b2lkCitjaGVja19zdHlsZV9hdHRyIChzdHJ1Y3Qg dGFnaW5mbyAqdGFnLCBzdHJ1Y3QgbWFwX2NvbnRleHQgKmN0eCkKK3sKKyAgaW50IGF0dHJpbmQ7 CisgIGNoYXIgKnN0eWxlID0gZmluZF9hdHRyICh0YWcsICJzdHlsZSIsICZhdHRyaW5kKTsKKyAg aWYgKCFzdHlsZSkKKyAgICByZXR1cm47CisKKyAgLyogcmF3IHBvcyBhbmQgcmF3IHNpemUgaW5j bHVkZSB0aGUgcXVvdGVzLCBoZW5jZSB0aGUgKzEgLTIgKi8KKyAgZ2V0X3VybHNfY3NzIChjdHgs IEFUVFJfUE9TKHRhZyxhdHRyaW5kLGN0eCkrMSwgQVRUUl9TSVpFKHRhZyxhdHRyaW5kKS0yKTsK K30KKwogLyogQWxsIHRoZSB0YWdfKiBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIGNvbGxlY3Rf dGFnc19tYXBwZXIsIGFzCiAgICBzcGVjaWZpZWQgYnkgS05PV05fVEFHUy4gICovCiAKQEAgLTM5 Myw3ICszOTgsOCBAQAogCSAgaWYgKDAgPT0gc3RyY2FzZWNtcCAodGFnLT5hdHRyc1thdHRyaW5k XS5uYW1lLAogCQkJICAgICAgIHRhZ191cmxfYXR0cmlidXRlc1tpXS5hdHRyX25hbWUpKQogCSAg ICB7Ci0JICAgICAgc3RydWN0IHVybHBvcyAqdXAgPSBhcHBlbmRfdXJsIChsaW5rLCB0YWcsIGF0 dHJpbmQsIGN0eCk7CisJICAgICAgc3RydWN0IHVybHBvcyAqdXAgPSBhcHBlbmRfdXJsIChsaW5r LCBBVFRSX1BPUyh0YWcsYXR0cmluZCxjdHgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFUVFJfU0laRSh0YWcsYXR0cmluZCksIGN0eCk7CiAJICAgICAg aWYgKHVwKQogCQl7CiAJCSAgaW50IGZsYWdzID0gdGFnX3VybF9hdHRyaWJ1dGVzW2ldLmZsYWdz OwpAQCAtNDE4LDcgKzQyNCw4IEBACiAgIGlmICghbmV3YmFzZSkKICAgICByZXR1cm47CiAKLSAg YmFzZV91cmxwb3MgPSBhcHBlbmRfdXJsIChuZXdiYXNlLCB0YWcsIGF0dHJpbmQsIGN0eCk7Cisg IGJhc2VfdXJscG9zID0gYXBwZW5kX3VybCAobmV3YmFzZSwgQVRUUl9QT1ModGFnLGF0dHJpbmQs Y3R4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVFRSX1NJWkUodGFnLGF0dHJpbmQp LCBjdHgpOwogICBpZiAoIWJhc2VfdXJscG9zKQogICAgIHJldHVybjsKICAgYmFzZV91cmxwb3Mt Pmlnbm9yZV93aGVuX2Rvd25sb2FkaW5nID0gMTsKQEAgLTQzOSw5ICs0NDYsMTEgQEAKIHsKICAg aW50IGF0dHJpbmQ7CiAgIGNoYXIgKmFjdGlvbiA9IGZpbmRfYXR0ciAodGFnLCAiYWN0aW9uIiwg JmF0dHJpbmQpOworCiAgIGlmIChhY3Rpb24pCiAgICAgewotICAgICAgc3RydWN0IHVybHBvcyAq dXAgPSBhcHBlbmRfdXJsIChhY3Rpb24sIHRhZywgYXR0cmluZCwgY3R4KTsKKyAgICAgIHN0cnVj dCB1cmxwb3MgKnVwID0gYXBwZW5kX3VybCAoYWN0aW9uLCBBVFRSX1BPUyh0YWcsYXR0cmluZCxj dHgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVFRSX1NJWkUodGFn LGF0dHJpbmQpLCBjdHgpOwogICAgICAgaWYgKHVwKQogCXVwLT5pZ25vcmVfd2hlbl9kb3dubG9h ZGluZyA9IDE7CiAgICAgfQpAQCAtNDY0LDE0ICs0NzMsMjMgQEAKICAgKi8KICAgaWYgKGhyZWYp CiAgICAgewotICAgICAgc3RydWN0IHVybHBvcyAqdXAgPSBhcHBlbmRfdXJsIChocmVmLCB0YWcs IGF0dHJpbmQsIGN0eCk7CisgICAgICBzdHJ1Y3QgdXJscG9zICp1cCA9IGFwcGVuZF91cmwgKGhy ZWYsIEFUVFJfUE9TKHRhZyxhdHRyaW5kLGN0eCksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEFUVFJfU0laRSh0YWcsYXR0cmluZCksIGN0eCk7CiAgICAgICBpZiAodXAp CiAJewogCSAgY2hhciAqcmVsID0gZmluZF9hdHRyICh0YWcsICJyZWwiLCBOVUxMKTsKLQkgIGlm IChyZWwKLQkgICAgICAmJiAoMCA9PSBzdHJjYXNlY21wIChyZWwsICJzdHlsZXNoZWV0IikKLQkJ ICB8fCAwID09IHN0cmNhc2VjbXAgKHJlbCwgInNob3J0Y3V0IGljb24iKSkpCi0JICAgIHVwLT5s aW5rX2lubGluZV9wID0gMTsKKwkgIGlmIChyZWwpCisgICAgICAgICAgICB7CisJICAgICAgaWYg KDAgPT0gc3RyY2FzZWNtcCAocmVsLCAic3R5bGVzaGVldCIpKQorICAgICAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgICAgIHVwLT5saW5rX2lubGluZV9wID0gMTsKKyAgICAgICAgICAgICAg ICAgIHVwLT5saW5rX2V4cGVjdF9jc3MgPSAxOworICAgICAgICAgICAgICAgIH0KKwkgICAgICBl bHNlIGlmICgwID09IHN0cmNhc2VjbXAgKHJlbCwgInNob3J0Y3V0IGljb24iKSkKKyAgICAgICAg ICAgICAgICB7CisgICAgICAgICAgICAgICAgICB1cC0+bGlua19pbmxpbmVfcCA9IDE7CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCSAgZWxzZQogCSAgICAvKiBUaGUgZXh0ZXJu YWwgb25lcyB1c3VhbGx5IHBvaW50IHRvIEhUTUwgcGFnZXMsIHN1Y2ggYXMKIAkgICAgICAgPGxp bmsgcmVsPSJuZXh0IiBocmVmPSIuLi4iPiAqLwpAQCAtNTI1LDcgKzU0Myw4IEBACiAgICAgICB3 aGlsZSAoSVNTUEFDRSAoKnApKQogCSsrcDsKIAotICAgICAgZW50cnkgPSBhcHBlbmRfdXJsIChw LCB0YWcsIGF0dHJpbmQsIGN0eCk7CisgICAgICBlbnRyeSA9IGFwcGVuZF91cmwgKHAsIEFUVFJf UE9TKHRhZyxhdHRyaW5kLGN0eCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFUVFJfU0la RSh0YWcsYXR0cmluZCksIGN0eCk7CiAgICAgICBpZiAoZW50cnkpCiAJewogCSAgZW50cnktPmxp bmtfcmVmcmVzaF9wID0gMTsKQEAgLTU3MCwxMSArNTg5LDI2IEBACiAgIHN0cnVjdCBtYXBfY29u dGV4dCAqY3R4ID0gKHN0cnVjdCBtYXBfY29udGV4dCAqKWFyZzsKIAogICAvKiBGaW5kIHRoZSB0 YWcgaW4gb3VyIHRhYmxlIG9mIHRhZ3MuICBUaGlzIG11c3Qgbm90IGZhaWwgYmVjYXVzZQotICAg ICBtYXBfaHRtbF90YWdzIG9ubHkgcmV0dXJucyB0YWdzIGZvdW5kIGluIGludGVyZXN0aW5nX3Rh Z3MuICAqLworICAgICBtYXBfaHRtbF90YWdzIG9ubHkgcmV0dXJucyB0YWdzIGZvdW5kIGluIGlu dGVyZXN0aW5nX3RhZ3MuCisgICAgIAorICAgICBJJ3ZlIGNoYW5nZWQgdGhpcyBmb3Igbm93LCBJ J20gcGFzc2luZyBOVUxMIGFzIGludGVyZXN0aW5nX3RhZ3MKKyAgICAgdG8gbWFwX2h0bWxfdGFn cy4gIFRoaXMgd2F5IHdlIGNhbiBjaGVjayBhbGwgdGFncyBmb3IgYSBzdHlsZQorICAgICBhdHRy aWJ1dGUuCisgICovCiAgIHN0cnVjdCBrbm93bl90YWcgKnQgPSBoYXNoX3RhYmxlX2dldCAoaW50 ZXJlc3RpbmdfdGFncywgdGFnLT5uYW1lKTsKLSAgYXNzZXJ0ICh0ICE9IE5VTEwpOwogCi0gIHQt PmhhbmRsZXIgKHQtPnRhZ2lkLCB0YWcsIGN0eCk7CisgIGlmICh0ICE9IE5VTEwpCisgICAgdC0+ aGFuZGxlciAodC0+dGFnaWQsIHRhZywgY3R4KTsKKworICBjaGVja19zdHlsZV9hdHRyICh0YWcs IGN0eCk7CisKKyAgaWYgKHRhZy0+ZW5kX3RhZ19wICYmICgwID09IHN0cmNhc2VjbXAgKHRhZy0+ bmFtZSwgInN0eWxlIikpICYmCisgICAgICB0YWctPmNvbnRlbnRzX2JlZ2luICYmIHRhZy0+Y29u dGVudHNfZW5kKQorICB7CisgICAgLyogcGFyc2UgY29udGVudHMgKi8KKyAgICBnZXRfdXJsc19j c3MgKGN0eCwgdGFnLT5jb250ZW50c19iZWdpbiAtIGN0eC0+dGV4dCwKKyAgICAgICAgICAgICAg ICAgIHRhZy0+Y29udGVudHNfZW5kIC0gdGFnLT5jb250ZW50c19iZWdpbik7CisgIH0KIH0KIAwK IC8qIEFuYWx5emUgSFRNTCB0YWdzIEZJTEUgYW5kIGNvbnN0cnVjdCBhIGxpc3Qgb2YgVVJMcyBy ZWZlcmVuY2VkIGZyb20KQEAgLTYxOCw4ICs2NTIsOSBAQAogICBpZiAob3B0LnN0cmljdF9jb21t ZW50cykKICAgICBmbGFncyB8PSBNSFRfU1RSSUNUX0NPTU1FTlRTOwogCisgIC8qIHRoZSBOVUxM IGhlcmUgdXNlZCB0byBiZSBpbnRlcmVzdGluZ190YWdzICovCiAgIG1hcF9odG1sX3RhZ3MgKGZt LT5jb250ZW50LCBmbS0+bGVuZ3RoLCBjb2xsZWN0X3RhZ3NfbWFwcGVyLCAmY3R4LCBmbGFncywK LQkJIGludGVyZXN0aW5nX3RhZ3MsIGludGVyZXN0aW5nX2F0dHJpYnV0ZXMpOworCQkgTlVMTCwg aW50ZXJlc3RpbmdfYXR0cmlidXRlcyk7CiAKICAgREVCVUdQICgoIm5vLWZvbGxvdyBpbiAlczog JWRcbiIsIGZpbGUsIGN0eC5ub2ZvbGxvdykpOwogICBpZiAobWV0YV9kaXNhbGxvd19mb2xsb3cp CkluZGV4OiBzcmMvaHRtbC11cmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMvaHRtbC11cmwuaAkocmV2 aXNpb24gMCkKKysrIHNyYy9odG1sLXVybC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBA CisvKiBEZWNsYXJhdGlvbnMgZm9yIGh0bWwtdXJsLmMuCisgICBDb3B5cmlnaHQgKEMpIDE5OTUs IDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBXZ2V0LgorCitHTlUgV2dldCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK0dOVSBXZ2V0IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fs b25nIHdpdGggV2dldDsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRh dGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK0lu IGFkZGl0aW9uLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uCitnaXZlcyBwZXJtaXNzaW9uIHRvIGxpbmsgdGhlIGNvZGUgb2YgaXRzIHJlbGVhc2Ug b2YgV2dldCB3aXRoIHRoZQorT3BlblNTTCBwcm9qZWN0J3MgIk9wZW5TU0wiIGxpYnJhcnkgKG9y IHdpdGggbW9kaWZpZWQgdmVyc2lvbnMgb2YgaXQKK3RoYXQgdXNlIHRoZSBzYW1lIGxpY2Vuc2Ug YXMgdGhlICJPcGVuU1NMIiBsaWJyYXJ5KSwgYW5kIGRpc3RyaWJ1dGUKK3RoZSBsaW5rZWQgZXhl Y3V0YWJsZXMuICBZb3UgbXVzdCBvYmV5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor aW4gYWxsIHJlc3BlY3RzIGZvciBhbGwgb2YgdGhlIGNvZGUgdXNlZCBvdGhlciB0aGFuICJPcGVu U1NMIi4gIElmIHlvdQorbW9kaWZ5IHRoaXMgZmlsZSwgeW91IG1heSBleHRlbmQgdGhpcyBleGNl cHRpb24gdG8geW91ciB2ZXJzaW9uIG9mIHRoZQorZmlsZSwgYnV0IHlvdSBhcmUgbm90IG9ibGln YXRlZCB0byBkbyBzby4gIElmIHlvdSBkbyBub3Qgd2lzaCB0byBkbworc28sIGRlbGV0ZSB0aGlz IGV4Y2VwdGlvbiBzdGF0ZW1lbnQgZnJvbSB5b3VyIHZlcnNpb24uICAqLworCisjaWZuZGVmIEhU TUxfVVJMX0gKKyNkZWZpbmUgSFRNTF9VUkxfSAorCitzdHJ1Y3QgbWFwX2NvbnRleHQgeworICBj aGFyICp0ZXh0OwkJCS8qIEhUTUwgdGV4dC4gKi8KKyAgY2hhciAqYmFzZTsJCQkvKiBCYXNlIFVS SSBvZiB0aGUgZG9jdW1lbnQsIHBvc3NpYmx5CisJCQkJICAgY2hhbmdlZCB0aHJvdWdoIDxiYXNl IGhyZWY9Li4uPi4gKi8KKyAgY29uc3QgY2hhciAqcGFyZW50X2Jhc2U7CS8qIEJhc2Ugb2YgdGhl IGN1cnJlbnQgZG9jdW1lbnQuICovCisgIGNvbnN0IGNoYXIgKmRvY3VtZW50X2ZpbGU7CS8qIEZp bGUgbmFtZSBvZiB0aGlzIGRvY3VtZW50LiAqLworICBib29sIG5vZm9sbG93OwkJLyogd2hldGhl ciBOT0ZPTExPVyB3YXMgc3BlY2lmaWVkIGluIGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPG1ldGEgbmFtZT1yb2JvdHM+IHRhZy4gKi8KKworICBzdHJ1Y3QgdXJscG9zICpo ZWFkLCAqdGFpbDsJLyogTGlzdCBvZiBVUkxzIHRoYXQgaXMgYmVpbmcKKwkJCQkgICBidWlsdC4g Ki8KK307CisKK3N0cnVjdCB1cmxwb3MgKmdldF91cmxzX2ZpbGUgKGNvbnN0IGNoYXIgKik7Citz dHJ1Y3QgdXJscG9zICpnZXRfdXJsc19odG1sIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwg Ym9vbCAqKTsKK3N0cnVjdCB1cmxwb3MgKmFwcGVuZF91cmwgKGNvbnN0IGNoYXIgKiwgaW50LCBp bnQsIHN0cnVjdCBtYXBfY29udGV4dCAqKTsKK3ZvaWQgZnJlZV91cmxwb3MgKHN0cnVjdCB1cmxw b3MgKik7CisKKyNlbmRpZiAvKiBIVE1MX1VSTF9IICovCkluZGV4OiBzcmMvd2dldC5oCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIHNyYy93Z2V0LmgJKHJldmlzaW9uIDIxOTcpCisrKyBzcmMvd2dldC5oCSh3b3Jr aW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDggQEAKICAgSEVBRF9PTkxZICAgICAgICAgICAgPSAw eDAwMDQsCS8qIG9ubHkgc2VuZCB0aGUgSEVBRCByZXF1ZXN0ICovCiAgIFNFTkRfTk9DQUNIRSAg ICAgICAgID0gMHgwMDA4LAkvKiBzZW5kIFByYWdtYTogbm8tY2FjaGUgZGlyZWN0aXZlICovCiAg IEFDQ0VQVFJBTkdFUyAgICAgICAgID0gMHgwMDEwLAkvKiBBY2NlcHQtcmFuZ2VzIGhlYWRlciB3 YXMgZm91bmQgKi8KLSAgQURERURfSFRNTF9FWFRFTlNJT04gPSAweDAwMjAgICAgICAgICAvKiBh ZGRlZCAiLmh0bWwiIGV4dGVuc2lvbiBkdWUgdG8gLUUgKi8KKyAgQURERURfSFRNTF9FWFRFTlNJ T04gPSAweDAwMjAsICAgICAgICAvKiBhZGRlZCAiLmh0bWwiIGV4dGVuc2lvbiBkdWUgdG8gLUUg Ki8KKyAgVEVYVENTUyAgICAgICAgICAgICAgPSAweDAwNDAJICAgICAgICAvKiBkb2N1bWVudCBp cyBvZiB0eXBlIHRleHQvY3NzICovCiB9OwogCiAvKiBVbml2ZXJzYWwgZXJyb3IgdHlwZSAtLSB1 c2VkIGFsbW9zdCBldmVyeXdoZXJlLiAgRXJyb3IgcmVwb3J0aW5nIG9mCkluZGV4OiBzcmMvcmV0 ci5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHNyYy9yZXRyLmMJKHJldmlzaW9uIDIxOTcpCisrKyBzcmMvcmV0 ci5jCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2ICs1MSw3IEBACiAjaW5jbHVkZSAiaGFzaC5oIgog I2luY2x1ZGUgImNvbnZlcnQuaCIKICNpbmNsdWRlICJwdGltZXIuaCIKKyNpbmNsdWRlICJodG1s LXVybC5oIgogCiAvKiBUb3RhbCBzaXplIG9mIGRvd25sb2FkZWQgZmlsZXMuICBVc2VkIHRvIGVu Zm9yY2UgcXVvdGEuICAqLwogU1VNX1NJWkVfSU5UIHRvdGFsX2Rvd25sb2FkZWRfYnl0ZXM7CkBA IC03ODQsNiArNzg1LDggQEAKIAkgICAgcmVnaXN0ZXJfcmVkaXJlY3Rpb24gKG9yaWd1cmwsIHUt PnVybCk7CiAJICBpZiAoKmR0ICYgVEVYVEhUTUwpCiAJICAgIHJlZ2lzdGVyX2h0bWwgKHUtPnVy bCwgbG9jYWxfZmlsZSk7CisJICBpZiAoKmR0ICYgVEVYVENTUykKKwkgICAgcmVnaXN0ZXJfY3Nz ICh1LT51cmwsIGxvY2FsX2ZpbGUpOwogCX0KICAgICB9CiAKSW5kZXg6IHNyYy9odG1sLXBhcnNl LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gc3JjL2h0bWwtcGFyc2UuYwkocmV2aXNpb24gMjE5NykKKysrIHNy Yy9odG1sLXBhcnNlLmMJKHdvcmtpbmcgY29weSkKQEAgLTI3MSw2ICsyNzEsOTQgQEAKICAgIHRv ICI8Zm9vIiwgYnV0ICImbHQsZm9vIiB0byAiPCxmb28iLiAgKi8KICNkZWZpbmUgU0tJUF9TRU1J KHAsIGluYykgKHAgKz0gaW5jLCBwIDwgZW5kICYmICpwID09ICc7JyA/ICsrcCA6IHApCiAKK3N0 cnVjdCB0YWdzdGFja19pdGVtIHsKKyAgY29uc3QgY2hhciAqdGFnbmFtZV9iZWdpbjsKKyAgY29u c3QgY2hhciAqdGFnbmFtZV9lbmQ7CisgIGNvbnN0IGNoYXIgKmNvbnRlbnRzX2JlZ2luOworICBz dHJ1Y3QgdGFnc3RhY2tfaXRlbSAqcHJldjsKKyAgc3RydWN0IHRhZ3N0YWNrX2l0ZW0gKm5leHQ7 Cit9OworCitzdHJ1Y3QgdGFnc3RhY2tfaXRlbSAqCit0YWdzdGFja19wdXNoIChzdHJ1Y3QgdGFn c3RhY2tfaXRlbSAqKmhlYWQsIHN0cnVjdCB0YWdzdGFja19pdGVtICoqdGFpbCkKK3sKKyAgc3Ry dWN0IHRhZ3N0YWNrX2l0ZW0gKnRzID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IHRhZ3N0YWNrX2l0 ZW0pKTsKKyAgaWYgKCpoZWFkID09IE5VTEwpCisgICAgeworICAgICAgKmhlYWQgPSAqdGFpbCA9 IHRzOworICAgICAgdHMtPnByZXYgPSB0cy0+bmV4dCA9IE5VTEw7CisgICAgfQorICBlbHNlCisg ICAgeworICAgICAgKCp0YWlsKS0+bmV4dCA9IHRzOworICAgICAgdHMtPnByZXYgPSAqdGFpbDsK KyAgICAgICp0YWlsID0gdHM7CisgICAgICB0cy0+bmV4dCA9IE5VTEw7CisgICAgfQorCisgIHJl dHVybiB0czsKK30KKworLyogcmVtb3ZlIHRzIGFuZCBldmVyeXRoaW5nIGFmdGVyIGl0IGZyb20g dGhlIHN0YWNrICovCit2b2lkCit0YWdzdGFja19wb3AgKHN0cnVjdCB0YWdzdGFja19pdGVtICoq aGVhZCwgc3RydWN0IHRhZ3N0YWNrX2l0ZW0gKip0YWlsLAorICAgICAgICAgICAgICBzdHJ1Y3Qg dGFnc3RhY2tfaXRlbSAqdHMpCit7CisgIGlmICgqaGVhZCA9PSBOVUxMKQorICAgIHJldHVybjsK KworICBpZiAodHMgPT0gKnRhaWwpCisgICAgeworICAgICAgaWYgKHRzID09ICpoZWFkKQorICAg ICAgICB7CisgICAgICAgICAgeGZyZWUgKHRzKTsKKyAgICAgICAgICAqaGVhZCA9ICp0YWlsID0g TlVMTDsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgdHMtPnBy ZXYtPm5leHQgPSBOVUxMOworICAgICAgICAgICp0YWlsID0gdHMtPnByZXY7CisgICAgICAgICAg eGZyZWUgKHRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIGlmICh0 cyA9PSAqaGVhZCkKKyAgICAgICAgeworICAgICAgICAgICpoZWFkID0gTlVMTDsKKyAgICAgICAg fQorICAgICAgKnRhaWwgPSB0cy0+cHJldjsKKworICAgICAgaWYgKHRzLT5wcmV2KQorICAgICAg ICB7CisgICAgICAgICAgdHMtPnByZXYtPm5leHQgPSBOVUxMOworICAgICAgICB9CisgICAgICB3 aGlsZSAodHMpCisgICAgICAgIHsKKyAgICAgICAgICBzdHJ1Y3QgdGFnc3RhY2tfaXRlbSAqcCA9 IHRzLT5uZXh0OworICAgICAgICAgIHhmcmVlICh0cyk7CisgICAgICAgICAgdHMgPSBwOworICAg ICAgICB9CisgICAgfQorfQorCitzdHJ1Y3QgdGFnc3RhY2tfaXRlbSAqCit0YWdzdGFja19maW5k IChzdHJ1Y3QgdGFnc3RhY2tfaXRlbSAqdGFpbCwgY29uc3QgY2hhciAqdGFnbmFtZV9iZWdpbiwK KyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRhZ25hbWVfZW5kKQoreworICBpbnQgbGVuID0g dGFnbmFtZV9lbmQgLSB0YWduYW1lX2JlZ2luOworICB3aGlsZSAodGFpbCkKKyAgICB7CisgICAg ICBpZiAobGVuID09ICh0YWlsLT50YWduYW1lX2VuZCAtIHRhaWwtPnRhZ25hbWVfYmVnaW4pKQor ICAgICAgICB7CisgICAgICAgICAgaWYgKDAgPT0gc3RybmNhc2VjbXAgKHRhaWwtPnRhZ25hbWVf YmVnaW4sIHRhZ25hbWVfYmVnaW4sIGxlbikpCisgICAgICAgICAgICByZXR1cm4gdGFpbDsKKyAg ICAgICAgfQorICAgICAgdGFpbCA9IHRhaWwtPnByZXY7CisgICAgfQorICByZXR1cm4gTlVMTDsK K30KKwogLyogRGVjb2RlIHRoZSBIVE1MIGNoYXJhY3RlciBlbnRpdHkgYXQgKlBUUiwgY29uc2lk ZXJpbmcgRU5EIHRvIGJlIGVuZAogICAgb2YgYnVmZmVyLiAgSXQgaXMgYXNzdW1lZCB0aGF0IHRo ZSAiJiIgY2hhcmFjdGVyIHRoYXQgbWFya3MgdGhlCiAgICBiZWdpbm5pbmcgb2YgdGhlIGVudGl0 eSBoYXMgYmVlbiBzZWVuIGF0ICpQVFItMS4gIElmIGEgcmVjb2duaXplZApAQCAtNzU2LDYgKzg0 NCw5IEBACiAgIGJvb2wgYXR0cl9wYWlyX3Jlc2l6ZWQgPSBmYWxzZTsKICAgc3RydWN0IGF0dHJf cGFpciAqcGFpcnMgPSBhdHRyX3BhaXJfaW5pdGlhbF9zdG9yYWdlOwogCisgIHN0cnVjdCB0YWdz dGFja19pdGVtICpoZWFkID0gTlVMTDsKKyAgc3RydWN0IHRhZ3N0YWNrX2l0ZW0gKnRhaWwgPSBO VUxMOworCiAgIGlmICghc2l6ZSkKICAgICByZXR1cm47CiAKQEAgLTgyMiw2ICs5MTMsMTggQEAK ICAgICAgIGdvdG8gbG9va19mb3JfdGFnOwogICAgIHRhZ19uYW1lX2VuZCA9IHA7CiAgICAgU0tJ UF9XUyAocCk7CisKKyAgICBpZiAoIWVuZF90YWcpCisgICAgICB7CisgICAgICAgIHN0cnVjdCB0 YWdzdGFja19pdGVtICp0cyA9IHRhZ3N0YWNrX3B1c2ggKCZoZWFkLCAmdGFpbCk7CisgICAgICAg IGlmICh0cykKKyAgICAgICAgICB7CisgICAgICAgICAgICB0cy0+dGFnbmFtZV9iZWdpbiAgPSB0 YWdfbmFtZV9iZWdpbjsKKyAgICAgICAgICAgIHRzLT50YWduYW1lX2VuZCAgICA9IHRhZ19uYW1l X2VuZDsKKyAgICAgICAgICAgIHRzLT5jb250ZW50c19iZWdpbiA9IE5VTEw7CisgICAgICAgICAg fQorICAgICAgfQorCiAgICAgaWYgKGVuZF90YWcgJiYgKnAgIT0gJz4nKQogICAgICAgZ290byBi YWNrb3V0X3RhZzsKIApAQCAtOTgzLDYgKzEwODYsMTEgQEAKIAkrK25hdHRyczsKICAgICAgIH0K IAorICAgIGlmICghZW5kX3RhZyAmJiB0YWlsICYmICh0YWlsLT50YWduYW1lX2JlZ2luID09IHRh Z19uYW1lX2JlZ2luKSkKKyAgICAgIHsKKyAgICAgICAgdGFpbC0+Y29udGVudHNfYmVnaW4gPSBw KzE7CisgICAgICB9CisKICAgICBpZiAodW5pbnRlcmVzdGluZ190YWcpCiAgICAgICB7CiAJQURW QU5DRSAocCk7CkBAIC05OTQsNiArMTEwMiw3IEBACiAgICAgewogICAgICAgaW50IGk7CiAgICAg ICBzdHJ1Y3QgdGFnaW5mbyB0YWdpbmZvOworICAgICAgc3RydWN0IHRhZ3N0YWNrX2l0ZW0gKnRz ID0gTlVMTDsKIAogICAgICAgdGFnaW5mby5uYW1lICAgICAgPSBwb29sLmNvbnRlbnRzOwogICAg ICAgdGFnaW5mby5lbmRfdGFnX3AgPSBlbmRfdGFnOwpAQCAtMTAxMCw2ICsxMTE5LDIzIEBACiAg ICAgICB0YWdpbmZvLmF0dHJzID0gcGFpcnM7CiAgICAgICB0YWdpbmZvLnN0YXJ0X3Bvc2l0aW9u ID0gdGFnX3N0YXJ0X3Bvc2l0aW9uOwogICAgICAgdGFnaW5mby5lbmRfcG9zaXRpb24gICA9IHAg KyAxOworICAgICAgdGFnaW5mby5jb250ZW50c19iZWdpbiA9IE5VTEw7CisgICAgICB0YWdpbmZv LmNvbnRlbnRzX2VuZCA9IE5VTEw7CisKKyAgICAgIGlmIChlbmRfdGFnKQorICAgICAgICB7Cisg ICAgICAgICAgdHMgPSB0YWdzdGFja19maW5kICh0YWlsLCB0YWdfbmFtZV9iZWdpbiwgdGFnX25h bWVfZW5kKTsKKyAgICAgICAgICBpZiAodHMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg IGlmICh0cy0+Y29udGVudHNfYmVnaW4pCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg ICAgICAgdGFnaW5mby5jb250ZW50c19iZWdpbiA9IHRzLT5jb250ZW50c19iZWdpbjsKKyAgICAg ICAgICAgICAgICAgIHRhZ2luZm8uY29udGVudHNfZW5kICAgPSB0YWdfc3RhcnRfcG9zaXRpb247 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB0YWdzdGFja19wb3AgKCZoZWFkLCAm dGFpbCwgdHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgIG1hcGZ1biAoJnRh Z2luZm8sIG1hcGFyZyk7CiAgICAgICBBRFZBTkNFIChwKTsKICAgICB9CkBAIC0xMDI5LDYgKzEx NTUsOCBAQAogICBQT09MX0ZSRUUgKCZwb29sKTsKICAgaWYgKGF0dHJfcGFpcl9yZXNpemVkKQog ICAgIHhmcmVlIChwYWlycyk7CisgIC8qIHBvcCBhbnkgdGFnIHN0YWNrIHRoYXQncyBsZWZ0ICov CisgIHRhZ3N0YWNrX3BvcCAoJmhlYWQsICZ0YWlsLCBoZWFkKTsKIH0KIAogI3VuZGVmIEFEVkFO Q0UKSW5kZXg6IHNyYy9odG1sLXBhcnNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL2h0bWwtcGFyc2Uu aAkocmV2aXNpb24gMjE5NykKKysrIHNyYy9odG1sLXBhcnNlLmgJKHdvcmtpbmcgY29weSkKQEAg LTUxLDYgKzUxLDkgQEAKIAogICBjb25zdCBjaGFyICpzdGFydF9wb3NpdGlvbjsJLyogc3RhcnQg cG9zaXRpb24gb2YgdGFnICovCiAgIGNvbnN0IGNoYXIgKmVuZF9wb3NpdGlvbjsJLyogZW5kIHBv c2l0aW9uIG9mIHRhZyAqLworCisgIGNvbnN0IGNoYXIgKmNvbnRlbnRzX2JlZ2luOyAgIC8qIGRl bGltaXRlcnMgb2YgdGFnIGNvbnRlbnRzICovCisgIGNvbnN0IGNoYXIgKmNvbnRlbnRzX2VuZDsg ICAgIC8qIG9ubHkgdmFsaWQgaWYgZW5kX3RhZ19wICovCiB9OwogCiBzdHJ1Y3QgaGFzaF90YWJs ZTsJCS8qIGZvcndhcmQgZGVjbGFyYXRpb24gKi8KSW5kZXg6IHNyYy9jc3MtdXJsLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0gc3JjL2Nzcy11cmwuYwkocmV2aXNpb24gMCkKKysrIHNyYy9jc3MtdXJsLmMJKHJl dmlzaW9uIDApCkBAIC0wLDAgKzEsMjczIEBACisvKiBDb2xsZWN0IFVSTHMgZnJvbSBDU1Mgc291 cmNlLgorICAgQ29weXJpZ2h0IChDKSAxOTk4LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCitUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgV2dl dC4KKworR05VIFdnZXQgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQoraXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKK3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKworR05VIFdnZXQgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKK2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCitNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCitHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCitZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorYWxvbmcgd2l0aCBXZ2V0OyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCitGb3VuZGF0aW9uLCBJbmMuLCA2NzUg TWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKworSW4gYWRkaXRpb24sIGFzIGEg c3BlY2lhbCBleGNlcHRpb24sIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2dpdmVzIHBl cm1pc3Npb24gdG8gbGluayB0aGUgY29kZSBvZiBpdHMgcmVsZWFzZSBvZiBXZ2V0IHdpdGggdGhl CitPcGVuU1NMIHByb2plY3QncyAiT3BlblNTTCIgbGlicmFyeSAob3Igd2l0aCBtb2RpZmllZCB2 ZXJzaW9ucyBvZiBpdAordGhhdCB1c2UgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgIk9wZW5TU0wi IGxpYnJhcnkpLCBhbmQgZGlzdHJpYnV0ZQordGhlIGxpbmtlZCBleGVjdXRhYmxlcy4gIFlvdSBt dXN0IG9iZXkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCitpbiBhbGwgcmVzcGVjdHMg Zm9yIGFsbCBvZiB0aGUgY29kZSB1c2VkIG90aGVyIHRoYW4gIk9wZW5TU0wiLiAgSWYgeW91Citt b2RpZnkgdGhpcyBmaWxlLCB5b3UgbWF5IGV4dGVuZCB0aGlzIGV4Y2VwdGlvbiB0byB5b3VyIHZl cnNpb24gb2YgdGhlCitmaWxlLCBidXQgeW91IGFyZSBub3Qgb2JsaWdhdGVkIHRvIGRvIHNvLiAg SWYgeW91IGRvIG5vdCB3aXNoIHRvIGRvCitzbywgZGVsZXRlIHRoaXMgZXhjZXB0aW9uIHN0YXRl bWVudCBmcm9tIHlvdXIgdmVyc2lvbi4gICovCisKKy8qCisgIE5vdGUgdGhhdCB0aGlzIGlzIG5v dCBhbiBhY3R1YWwgQ1NTIHBhcnNlciwgYnV0IGp1c3QgYSBsZXhpY2FsCisgIHNjYW5uZXIgd2l0 aCBhIHRpbnkgYml0IG1vcmUgc21hcnRzIGJvbHRlZCBvbiB0b3AuICBBIGZ1bGwgcGFyc2VyCisg IGlzIHNvbWV3aGF0IG92ZXJraWxsIGZvciB0aGlzIGpvYi4gIFRoZSBvbmx5IHRoaW5ncyB3ZSdy ZSBpbnRlcmVzdGVkCisgIGluIGFyZSBAaW1wb3J0IHJ1bGVzIGFuZCB1cmwoKSB0b2tlbnMsIHNv IGl0J3MgZWFzeSBlbm91Z2ggdG8KKyAgZ3JhYiB0aG9zZSB3aXRob3V0IHRydWx5IHVuZGVyc3Rh bmRpbmcgdGhlIGlucHV0LiAgVGhlIG9ubHkgZG93bnNpZGUKKyAgdG8gdGhpcyBpcyB0aGF0IHdl IG1pZ2h0IGJlIGNvZXJjZWQgaW50byBkb3dubG9hZGluZyBmaWxlcyB0aGF0CisgIGEgYnJvd3Nl ciB3b3VsZCBpZ25vcmUuICBUaGF0IG1pZ2h0IG1lcml0IHNvbWUgbW9yZSBpbnZlc3RpZ2F0aW9u LgorICovCisKKyNpbmNsdWRlIDxjb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZk ZWYgSEFWRV9TVFJJTkdfSAorIyBpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjIGluY2x1ZGUg PHN0cmluZ3MuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGN0eXBl Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2luY2x1ZGUg IndnZXQuaCIKKyNpbmNsdWRlICJ1dGlscy5oIgorI2luY2x1ZGUgImNvbnZlcnQuaCIKKyNpbmNs dWRlICJodG1sLXVybC5oIgorI2luY2x1ZGUgImNzcy10b2tlbnMuaCIKKworLyogZnJvbSBsZXgu eXkuYyAqLworZXh0ZXJuIGNoYXIgKnl5dGV4dDsKK2V4dGVybiBpbnQgeXlsZW5nOwordHlwZWRl ZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9CVUZGRVJfU1RBVEU7CitleHRlcm4gWVlfQlVG RkVSX1NUQVRFIHl5X3NjYW5fYnl0ZXMgKGNvbnN0IGNoYXIgKmJ5dGVzLGludCBsZW4gICk7Citl eHRlcm4gaW50IHl5bGV4ICh2b2lkKTsKKworI2lmIDEKK2NvbnN0IGNoYXIgKnRva2VuX25hbWVz W10gPSB7CisgICJDU1NFT0YiLAorICAiUyIsCisgICJDRE8iLAorICAiQ0RDIiwKKyAgIklOQ0xV REVTIiwKKyAgIkRBU0hNQVRDSCIsCisgICJMQlJBQ0UiLAorICAiUExVUyIsCisgICJHUkVBVEVS IiwKKyAgIkNPTU1BIiwKKyAgIlNUUklORyIsCisgICJJTlZBTElEIiwKKyAgIklERU5UIiwKKyAg IkhBU0giLAorICAiSU1QT1JUX1NZTSIsCisgICJQQUdFX1NZTSIsCisgICJNRURJQV9TWU0iLAor ICAiQ0hBUlNFVF9TWU0iLAorICAiSU1QT1JUQU5UX1NZTSIsCisgICJFTVMiLAorICAiRVhTIiwK KyAgIkxFTkdUSCIsCisgICJBTkdMRSIsCisgICJUSU1FIiwKKyAgIkZSRVEiLAorICAiRElNRU5T SU9OIiwKKyAgIlBFUkNFTlRBR0UiLAorICAiTlVNQkVSIiwKKyAgIlVSSSIsCisgICJGVU5DVElP TiIKK307CisjZW5kaWYKKworLyoKKyAgR2l2ZW4gYSBkZXRlY3RlZCBVUkkgdG9rZW4sIGdldCBv bmx5IHRoZSBVUkkgc3BlY2lmaWVkIHdpdGhpbi4KKyAgQWxzbyBhZGp1c3QgdGhlIHN0YXJ0aW5n IHBvc2l0aW9uIGFuZCBsZW5ndGggb2YgdGhlIHN0cmluZy4KKworICBBIFVSSSBjYW4gYmUgc3Bl Y2lmaWVkIHdpdGggb3Igd2l0aG91dCBxdW90ZXMsIGFuZCB0aGUgcXVvdGVzCisgIGNhbiBiZSBz aW5nbGUgb3IgZG91YmxlIHF1b3Rlcy4gIEluIGFkZGl0aW9uIHRoZXJlIGNhbiBiZQorICB3aGl0 ZXNwYWNlIGFmdGVyIHRoZSBvcGVuaW5nIHBhcmVudGhlc2lzIGFuZCBiZWZvcmUgdGhlIGNsb3Np bmcKKyAgcGFyZW50aGVzaXMuCisqLworY2hhciAqCitnZXRfdXJpX3N0cmluZyAoY29uc3QgY2hh ciAqYXQsIGludCAqcG9zLCBpbnQgKmxlbmd0aCkKK3sKKyAgY2hhciAqdXJpOworICAvKmNoYXIg YnVmWzEwMjRdOworICBzdHJuY3B5KGJ1ZixhdCArICpwb3MsICpsZW5ndGgpOworICBidWZbKmxl bmd0aF0gPSAnXDAnOworICBERUJVR1AgKCgiZ2V0X3VyaV9zdHJpbmc6IFwiJXNcIlxuIiwgYnVm KSk7Ki8KKworICBpZiAoMCAhPSBzdHJuY2FzZWNtcCAoYXQgKyAqcG9zLCAidXJsKCIsIDQpKQor ICAgIHJldHVybiBOVUxMOworCisgICpwb3MgKz0gNDsKKyAgKmxlbmd0aCAtPSA1OyAvKiB1cmwo KSAqLworICAvKiBza2lwIGxlYWRpbmcgc3BhY2UgKi8KKyAgd2hpbGUgKGlzc3BhY2UgKGF0Wypw b3NdKSkKKyAgICB7CisgICAgKCpwb3MpKys7CisgICAgKCpsZW5ndGgpLS07CisgICAgfQorICAv KiBza2lwIHRyYWlsaW5nIHNwYWNlICovCisgIHdoaWxlIChpc3NwYWNlIChhdFsqcG9zICsgKmxl bmd0aCAtIDFdKSkKKyAgICB7CisgICAgICAoKmxlbmd0aCktLTsKKyAgICB9CisgIC8qIHRyaW0g b2ZmIHF1b3RlcyAqLworICBpZiAoYXRbKnBvc10gPT0gJ1wnJyB8fCBhdFsqcG9zXSA9PSAnIicp CisgICAgeworICAgICAgKCpwb3MpKys7CisgICAgICAqbGVuZ3RoIC09IDI7CisgICAgfQorCisg IHVyaSA9IHhtYWxsb2MgKCpsZW5ndGggKyAxKTsKKyAgaWYgKHVyaSkKKyAgICB7CisgICAgICBz dHJuY3B5ICh1cmksIGF0ICsgKnBvcywgKmxlbmd0aCk7CisgICAgICB1cmlbKmxlbmd0aF0gPSAn XDAnOyAgICAgIAorICAgIH0KKworICByZXR1cm4gdXJpOworfQorCit2b2lkCitnZXRfdXJsc19j c3MgKHN0cnVjdCBtYXBfY29udGV4dCAqY3R4LCBpbnQgb2Zmc2V0LCBpbnQgYnVmX2xlbmd0aCkK K3sKKyAgaW50IHRva2VuOworICAvKmNoYXIgdG1wWzIwNDhdOyovCisgIGludCBidWZmZXJfcG9z ID0gMDsKKyAgaW50IHBvcywgbGVuZ3RoOworICBjaGFyICp1cmk7CisKKyAgLyoKKyAgc3RybmNw eSh0bXAsY3R4LT50ZXh0ICsgb2Zmc2V0LCBidWZfbGVuZ3RoKTsKKyAgdG1wW2J1Zl9sZW5ndGhd ID0gJ1wwJzsKKyAgREVCVUdQICgoImdldF91cmxzX2NzczogXCIlc1wiXG4iLCB0bXApKTsKKyAg Ki8KKworICAvKiB0ZWxsIGZsZXggdG8gc2NhbiBmcm9tIHRoaXMgYnVmZmVyICovCisgIHl5X3Nj YW5fYnl0ZXMgKGN0eC0+dGV4dCArIG9mZnNldCwgYnVmX2xlbmd0aCk7CisKKyAgd2hpbGUoKHRv a2VuID0geXlsZXgoKSkgIT0gQ1NTRU9GKQorICAgIHsKKyAgICAgIC8qREVCVUdQICgoIiVzICIs IHRva2VuX25hbWVzW3Rva2VuXSkpOyovCisgICAgICAvKiBAaW1wb3J0ICJmb28uY3NzIgorICAg ICAgICAgb3IgQGltcG9ydCB1cmwoZm9vLmNzcykKKyAgICAgICovCisgICAgICBpZih0b2tlbiA9 PSBJTVBPUlRfU1lNKQorICAgICAgICB7CisgICAgICAgICAgZG8geworICAgICAgICAgICAgYnVm ZmVyX3BvcyArPSB5eWxlbmc7CisgICAgICAgICAgfSB3aGlsZSgodG9rZW4gPSB5eWxleCgpKSA9 PSBTKTsKKworICAgICAgICAgIC8qREVCVUdQICgoIiVzICIsIHRva2VuX25hbWVzW3Rva2VuXSkp OyovCisKKyAgICAgICAgICBpZiAodG9rZW4gPT0gU1RSSU5HIHx8IHRva2VuID09IFVSSSkKKyAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgLypERUJVR1AgKCgiR290IFVSSSAiKSk7Ki8KKyAg ICAgICAgICAgICAgcG9zID0gYnVmZmVyX3BvcyArIG9mZnNldDsKKyAgICAgICAgICAgICAgbGVu Z3RoID0geXlsZW5nOworCisgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBVUkkpCisgICAgICAg ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgdXJpID0gZ2V0X3VyaV9zdHJpbmcgKGN0eC0+ dGV4dCwgJnBvcywgJmxlbmd0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBl bHNlCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgLyogY3V0IG91dCBxdW90 ZSBjaGFyYWN0ZXJzICovCisgICAgICAgICAgICAgICAgICBwb3MrKzsKKyAgICAgICAgICAgICAg ICAgIGxlbmd0aCAtPSAyOworICAgICAgICAgICAgICAgICAgdXJpID0geG1hbGxvYyAobGVuZ3Ro ICsgMSk7CisgICAgICAgICAgICAgICAgICBzdHJuY3B5ICh1cmksIHl5dGV4dCArIDEsIGxlbmd0 aCk7CisgICAgICAgICAgICAgICAgICB1cmlbbGVuZ3RoXSA9ICdcMCc7CisgICAgICAgICAgICAg ICAgfQorCisgICAgICAgICAgICAgIGlmICh1cmkpCisgICAgICAgICAgICAgICAgeworICAgICAg ICAgICAgICAgICAgc3RydWN0IHVybHBvcyAqdXAgPSBhcHBlbmRfdXJsICh1cmksIHBvcywgbGVu Z3RoLCBjdHgpOworICAgICAgICAgICAgICAgICAgREVCVUdQICgoIkZvdW5kIEBpbXBvcnQ6IFsl c10gYXQgJWQgWyVzXVxuIiwgeXl0ZXh0LCBidWZmZXJfcG9zLCB1cmkpKTsKKworICAgICAgICAg ICAgICAgICAgaWYgKHVwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg ICAgICAgdXAtPmxpbmtfaW5saW5lX3AgPSAxOworICAgICAgICAgICAgICAgICAgICAgIHVwLT5s aW5rX2Nzc19wID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICB1cC0+bGlua19leHBlY3RfY3Nz ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICB4ZnJlZSh1 cmkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg LyogYmFja2dyb3VuZC1pbWFnZTogdXJsKGZvby5wbmcpCisgICAgICAgICBub3RlIHRoYXQgd2Ug ZG9uJ3QgY2FyZSB3aGF0CisgICAgICAgICBwcm9wZXJ0eSB0aGlzIGlzIGFjdHVhbGx5IG9uLgor ICAgICAgKi8KKyAgICAgIGVsc2UgaWYodG9rZW4gPT0gVVJJKQorICAgICAgICB7CisgICAgICAg ICAgcG9zID0gYnVmZmVyX3BvcyArIG9mZnNldDsKKyAgICAgICAgICBsZW5ndGggPSB5eWxlbmc7 CisgICAgICAgICAgdXJpID0gZ2V0X3VyaV9zdHJpbmcgKGN0eC0+dGV4dCwgJnBvcywgJmxlbmd0 aCk7CisKKyAgICAgICAgICBpZiAodXJpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBz dHJ1Y3QgdXJscG9zICp1cCA9IGFwcGVuZF91cmwgKHVyaSwgcG9zLCBsZW5ndGgsIGN0eCk7Cisg ICAgICAgICAgICAgIERFQlVHUCAoKCJGb3VuZCBVUkk6IFslc10gYXQgJWQgWyVzXVxuIiwgeXl0 ZXh0LCBidWZmZXJfcG9zLCB1cmkpKTsKKyAgICAgICAgICAgICAgaWYgKHVwKQorICAgICAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIHVwLT5saW5rX2lubGluZV9wID0gMTsKKyAgICAg ICAgICAgICAgICAgIHVwLT5saW5rX2Nzc19wID0gMTsKKyAgICAgICAgICAgICAgICB9CisKKyAg ICAgICAgICAgICAgeGZyZWUgKHVyaSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg IGJ1ZmZlcl9wb3MgKz0geXlsZW5nOworICAgIH0KKyAgREVCVUdQICgoIlxuIikpOworfQorCitz dHJ1Y3QgdXJscG9zICoKK2dldF91cmxzX2Nzc19maWxlIChjb25zdCBjaGFyICpmaWxlLCBjb25z dCBjaGFyICp1cmwpCit7CisgIHN0cnVjdCBmaWxlX21lbW9yeSAqZm07CisgIHN0cnVjdCBtYXBf Y29udGV4dCBjdHg7CisKKyAgLyogTG9hZCB0aGUgZmlsZS4gKi8KKyAgZm0gPSByZWFkX2ZpbGUg KGZpbGUpOworICBpZiAoIWZtKQorICAgIHsKKyAgICAgIGxvZ3ByaW50ZiAoTE9HX05PVFFVSUVU LCAiJXM6ICVzXG4iLCBmaWxlLCBzdHJlcnJvciAoZXJybm8pKTsKKyAgICAgIHJldHVybiBOVUxM OworICAgIH0KKyAgREVCVUdQICgoIkxvYWRlZCAlcyAoc2l6ZSAlcykuXG4iLCBmaWxlLCBudW1i ZXJfdG9fc3RhdGljX3N0cmluZyAoZm0tPmxlbmd0aCkpKTsKKworICBjdHgudGV4dCA9IGZtLT5j b250ZW50OworICBjdHguaGVhZCA9IGN0eC50YWlsID0gTlVMTDsKKyAgY3R4LmJhc2UgPSBOVUxM OworICBjdHgucGFyZW50X2Jhc2UgPSB1cmwgPyB1cmwgOiBvcHQuYmFzZV9ocmVmOworICBjdHgu ZG9jdW1lbnRfZmlsZSA9IGZpbGU7CisgIGN0eC5ub2ZvbGxvdyA9IDA7CisKKyAgZ2V0X3VybHNf Y3NzICgmY3R4LCAwLCBmbS0+bGVuZ3RoKTsKKyAgcmVhZF9maWxlX2ZyZWUgKGZtKTsKKyAgcmV0 dXJuIGN0eC5oZWFkOworfQpJbmRleDogc3JjL2Nzcy11cmwuaAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzcmMv Y3NzLXVybC5oCShyZXZpc2lvbiAwKQorKysgc3JjL2Nzcy11cmwuaAkocmV2aXNpb24gMCkKQEAg LTAsMCArMSwzNiBAQAorLyogRGVjbGFyYXRpb25zIGZvciBjc3MtdXJsLmMuCisgICBDb3B5cmln aHQgKEMpIDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKK1RoaXMgZmlsZSBp cyBwYXJ0IG9mIEdOVSBXZ2V0LgorCitHTlUgV2dldCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CitpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQordGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyhh dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKK0dOVSBXZ2V0IGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCitidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKK2Fs b25nIHdpdGggV2dldDsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorRm91bmRh dGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisKK0lu IGFkZGl0aW9uLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uCitnaXZlcyBwZXJtaXNzaW9uIHRvIGxpbmsgdGhlIGNvZGUgb2YgaXRzIHJlbGVhc2Ug b2YgV2dldCB3aXRoIHRoZQorT3BlblNTTCBwcm9qZWN0J3MgIk9wZW5TU0wiIGxpYnJhcnkgKG9y IHdpdGggbW9kaWZpZWQgdmVyc2lvbnMgb2YgaXQKK3RoYXQgdXNlIHRoZSBzYW1lIGxpY2Vuc2Ug YXMgdGhlICJPcGVuU1NMIiBsaWJyYXJ5KSwgYW5kIGRpc3RyaWJ1dGUKK3RoZSBsaW5rZWQgZXhl Y3V0YWJsZXMuICBZb3UgbXVzdCBvYmV5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor aW4gYWxsIHJlc3BlY3RzIGZvciBhbGwgb2YgdGhlIGNvZGUgdXNlZCBvdGhlciB0aGFuICJPcGVu U1NMIi4gIElmIHlvdQorbW9kaWZ5IHRoaXMgZmlsZSwgeW91IG1heSBleHRlbmQgdGhpcyBleGNl cHRpb24gdG8geW91ciB2ZXJzaW9uIG9mIHRoZQorZmlsZSwgYnV0IHlvdSBhcmUgbm90IG9ibGln YXRlZCB0byBkbyBzby4gIElmIHlvdSBkbyBub3Qgd2lzaCB0byBkbworc28sIGRlbGV0ZSB0aGlz IGV4Y2VwdGlvbiBzdGF0ZW1lbnQgZnJvbSB5b3VyIHZlcnNpb24uICAqLworCisjaWZuZGVmIENT U19VUkxfSAorI2RlZmluZSBDU1NfVVJMX0gKKwordm9pZCBnZXRfdXJsc19jc3MgKHN0cnVjdCBt YXBfY29udGV4dCAqLCBpbnQsIGludCk7CitzdHJ1Y3QgdXJscG9zICpnZXRfdXJsc19jc3NfZmls ZSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworCisjZW5kaWYgLyogQ1NTX1VSTF9IICov CkluZGV4OiBzcmMvY29udmVydC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHNyYy9jb252ZXJ0LmMJKHJldmlz aW9uIDIxOTcpCisrKyBzcmMvY29udmVydC5jCSh3b3JraW5nIGNvcHkpCkBAIC00Niw1MCArNDYs MzcgQEAKICNpbmNsdWRlICJoYXNoLmgiCiAjaW5jbHVkZSAicHRpbWVyLmgiCiAjaW5jbHVkZSAi cmVzLmgiCisjaW5jbHVkZSAiaHRtbC11cmwuaCIKKyNpbmNsdWRlICJjc3MtdXJsLmgiCiAKIHN0 YXRpYyBzdHJ1Y3QgaGFzaF90YWJsZSAqZGxfZmlsZV91cmxfbWFwOwogc3RydWN0IGhhc2hfdGFi bGUgKmRsX3VybF9maWxlX21hcDsKIAotLyogU2V0IG9mIEhUTUwgZmlsZXMgZG93bmxvYWRlZCBp biB0aGlzIFdnZXQgcnVuLCB1c2VkIGZvciBsaW5rCisvKiBTZXQgb2YgSFRNTC9DU1MgZmlsZXMg ZG93bmxvYWRlZCBpbiB0aGlzIFdnZXQgcnVuLCB1c2VkIGZvciBsaW5rCiAgICBjb252ZXJzaW9u IGFmdGVyIFdnZXQgaXMgZG9uZS4gICovCiBzdHJ1Y3QgaGFzaF90YWJsZSAqZG93bmxvYWRlZF9o dG1sX3NldDsKK3N0cnVjdCBoYXNoX3RhYmxlICpkb3dubG9hZGVkX2Nzc19zZXQ7CiAKIHN0YXRp YyB2b2lkIGNvbnZlcnRfbGlua3MgKGNvbnN0IGNoYXIgKiwgc3RydWN0IHVybHBvcyAqKTsKIAot LyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgcmV0cmlldmFsIGlzIGRvbmUgdG8g Y29udmVydCB0aGUKLSAgIGxpbmtzIHRoYXQgaGF2ZSBiZWVuIGRvd25sb2FkZWQuICBJdCBoYXMg dG8gYmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YKLSAgIHRoZSByZXRyaWV2YWwsIGJlY2F1c2Ugb25s eSB0aGVuIGRvZXMgV2dldCBrbm93IGNvbmNsdXNpdmVseSB3aGljaAotICAgVVJMcyBoYXZlIGJl ZW4gZG93bmxvYWRlZCwgYW5kIHdoaWNoIG5vdCwgc28gaXQgY2FuIHRlbGwgd2hpY2gKLSAgIGRp cmVjdGlvbiB0byBjb252ZXJ0IHRvLgogCi0gICBUaGUgImRpcmVjdGlvbiIgbWVhbnMgdGhhdCB0 aGUgVVJMcyB0byB0aGUgZmlsZXMgdGhhdCBoYXZlIGJlZW4KLSAgIGRvd25sb2FkZWQgZ2V0IGNv bnZlcnRlZCB0byB0aGUgcmVsYXRpdmUgVVJMIHdoaWNoIHdpbGwgcG9pbnQgdG8KLSAgIHRoYXQg ZmlsZS4gIEFuZCB0aGUgb3RoZXIgVVJMcyBnZXQgY29udmVydGVkIHRvIHRoZSByZW1vdGUgVVJM IG9uCi0gICB0aGUgc2VydmVyLgotCi0gICBBbGwgdGhlIGRvd25sb2FkZWQgSFRNTHMgYXJlIGtl cHQgaW4gZG93bmxvYWRlZF9odG1sX2ZpbGVzLCBhbmQKLSAgIGRvd25sb2FkZWQgVVJMcyBpbiB1 cmxzX2Rvd25sb2FkZWQuICBBbGwgdGhlIGluZm9ybWF0aW9uIGlzCi0gICBleHRyYWN0ZWQgZnJv bSB0aGVzZSB0d28gbGlzdHMuICAqLwotCiB2b2lkCi1jb252ZXJ0X2FsbF9saW5rcyAodm9pZCkK K2NvbnZlcnRfbGlua3NfaW5faGFzaHRhYmxlIChzdHJ1Y3QgaGFzaF90YWJsZSAqZG93bmxvYWRl ZF9zZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlzX2NzcywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgKmZpbGVfY291bnQpCiB7CiAgIGludCBpOwotICBkb3Vi bGUgc2VjczsKLSAgaW50IGZpbGVfY291bnQgPSAwOwogCi0gIHN0cnVjdCBwdGltZXIgKnRpbWVy ID0gcHRpbWVyX25ldyAoKTsKLQogICBpbnQgY250OwogICBjaGFyICoqZmlsZV9hcnJheTsKIAog ICBjbnQgPSAwOwotICBpZiAoZG93bmxvYWRlZF9odG1sX3NldCkKLSAgICBjbnQgPSBoYXNoX3Rh YmxlX2NvdW50IChkb3dubG9hZGVkX2h0bWxfc2V0KTsKKyAgaWYgKGRvd25sb2FkZWRfc2V0KQor ICAgIGNudCA9IGhhc2hfdGFibGVfY291bnQgKGRvd25sb2FkZWRfc2V0KTsKICAgaWYgKGNudCA9 PSAwKQogICAgIHJldHVybjsKICAgZmlsZV9hcnJheSA9IGFsbG9jYV9hcnJheSAoY2hhciAqLCBj bnQpOwotICBzdHJpbmdfc2V0X3RvX2FycmF5IChkb3dubG9hZGVkX2h0bWxfc2V0LCBmaWxlX2Fy cmF5KTsKKyAgc3RyaW5nX3NldF90b19hcnJheSAoZG93bmxvYWRlZF9zZXQsIGZpbGVfYXJyYXkp OwogCiAgIGZvciAoaSA9IDA7IGkgPCBjbnQ7IGkrKykKICAgICB7CkBAIC05Nyw3ICs4NCw3IEBA CiAgICAgICBjaGFyICp1cmw7CiAgICAgICBjaGFyICpmaWxlID0gZmlsZV9hcnJheVtpXTsKIAot ICAgICAgLyogRGV0ZXJtaW5lIHRoZSBVUkwgb2YgdGhlIEhUTUwgZmlsZS4gIGdldF91cmxzX2h0 bWwgd2lsbCBuZWVkCisgICAgICAvKiBEZXRlcm1pbmUgdGhlIFVSTCBvZiB0aGUgZmlsZS4gIGdl dF91cmxzX3todG1sLGNzc30gd2lsbCBuZWVkCiAgICAgICAgICBpdC4gICovCiAgICAgICB1cmwg PSBoYXNoX3RhYmxlX2dldCAoZGxfZmlsZV91cmxfbWFwLCBmaWxlKTsKICAgICAgIGlmICghdXJs KQpAQCAtMTA4LDggKzk1LDkgQEAKIAogICAgICAgREVCVUdQICgoIlNjYW5uaW5nICVzIChmcm9t ICVzKVxuIiwgZmlsZSwgdXJsKSk7CiAKLSAgICAgIC8qIFBhcnNlIHRoZSBIVE1MIGZpbGUuLi4g ICovCi0gICAgICB1cmxzID0gZ2V0X3VybHNfaHRtbCAoZmlsZSwgdXJsLCBOVUxMKTsKKyAgICAg IC8qIFBhcnNlIHRoZSBmaWxlLi4uICAqLworICAgICAgdXJscyA9IGlzX2NzcyA/IGdldF91cmxz X2Nzc19maWxlIChmaWxlLCB1cmwpIDoKKyAgICAgICAgICAgICAgICAgICAgICBnZXRfdXJsc19o dG1sIChmaWxlLCB1cmwsIE5VTEwpOwogCiAgICAgICAvKiBXZSBkb24ndCByZXNwZWN0IG1ldGFf ZGlzYWxsb3dfZm9sbG93IGhlcmUgYmVjYXVzZSwgZXZlbiBpZgogICAgICAgICAgdGhlIGZpbGUg aXMgbm90IGZvbGxvd2VkLCB3ZSBtaWdodCBzdGlsbCB3YW50IHRvIGNvbnZlcnQgdGhlCkBAIC0x NjEsMTIgKzE0OSwzOSBAQAogCiAgICAgICAvKiBDb252ZXJ0IHRoZSBsaW5rcyBpbiB0aGUgZmls ZS4gICovCiAgICAgICBjb252ZXJ0X2xpbmtzIChmaWxlLCB1cmxzKTsKLSAgICAgICsrZmlsZV9j b3VudDsKKyAgICAgICsrKmZpbGVfY291bnQ7CiAKICAgICAgIC8qIEZyZWUgdGhlIGRhdGEuICAq LwogICAgICAgZnJlZV91cmxwb3MgKHVybHMpOwogICAgIH0KK30KIAorLyogVGhpcyBmdW5jdGlv biBpcyBjYWxsZWQgd2hlbiB0aGUgcmV0cmlldmFsIGlzIGRvbmUgdG8gY29udmVydCB0aGUKKyAg IGxpbmtzIHRoYXQgaGF2ZSBiZWVuIGRvd25sb2FkZWQuICBJdCBoYXMgdG8gYmUgY2FsbGVkIGF0 IHRoZSBlbmQgb2YKKyAgIHRoZSByZXRyaWV2YWwsIGJlY2F1c2Ugb25seSB0aGVuIGRvZXMgV2dl dCBrbm93IGNvbmNsdXNpdmVseSB3aGljaAorICAgVVJMcyBoYXZlIGJlZW4gZG93bmxvYWRlZCwg YW5kIHdoaWNoIG5vdCwgc28gaXQgY2FuIHRlbGwgd2hpY2gKKyAgIGRpcmVjdGlvbiB0byBjb252 ZXJ0IHRvLgorCisgICBUaGUgImRpcmVjdGlvbiIgbWVhbnMgdGhhdCB0aGUgVVJMcyB0byB0aGUg ZmlsZXMgdGhhdCBoYXZlIGJlZW4KKyAgIGRvd25sb2FkZWQgZ2V0IGNvbnZlcnRlZCB0byB0aGUg cmVsYXRpdmUgVVJMIHdoaWNoIHdpbGwgcG9pbnQgdG8KKyAgIHRoYXQgZmlsZS4gIEFuZCB0aGUg b3RoZXIgVVJMcyBnZXQgY29udmVydGVkIHRvIHRoZSByZW1vdGUgVVJMIG9uCisgICB0aGUgc2Vy dmVyLgorCisgICBBbGwgdGhlIGRvd25sb2FkZWQgSFRNTHMgYXJlIGtlcHQgaW4gZG93bmxvYWRl ZF9odG1sX2ZpbGVzLCBhbmQKKyAgIGRvd25sb2FkZWQgVVJMcyBpbiB1cmxzX2Rvd25sb2FkZWQu ICBBbGwgdGhlIGluZm9ybWF0aW9uIGlzCisgICBleHRyYWN0ZWQgZnJvbSB0aGVzZSB0d28gbGlz dHMuICAqLworCit2b2lkCitjb252ZXJ0X2FsbF9saW5rcyAodm9pZCkKK3sKKyAgZG91YmxlIHNl Y3M7CisgIGludCBmaWxlX2NvdW50ID0gMDsKKworICBzdHJ1Y3QgcHRpbWVyICp0aW1lciA9IHB0 aW1lcl9uZXcgKCk7CisKKyAgY29udmVydF9saW5rc19pbl9oYXNodGFibGUgKGRvd25sb2FkZWRf aHRtbF9zZXQsIDAsICZmaWxlX2NvdW50KTsKKyAgY29udmVydF9saW5rc19pbl9oYXNodGFibGUg KGRvd25sb2FkZWRfY3NzX3NldCwgMSwgJmZpbGVfY291bnQpOworCiAgIHNlY3MgPSBwdGltZXJf bWVhc3VyZSAodGltZXIpOwogICBwdGltZXJfZGVzdHJveSAodGltZXIpOwogICBsb2dwcmludGYg KExPR19WRVJCT1NFLCBfKCJDb252ZXJ0ZWQgJWQgZmlsZXMgaW4gJXMgc2Vjb25kcy5cbiIpLApA QCAtMTc0LDEzICsxODksMTQgQEAKIH0KIAogc3RhdGljIHZvaWQgd3JpdGVfYmFja3VwX2ZpbGUg KGNvbnN0IGNoYXIgKiwgZG93bmxvYWRlZF9maWxlX3QpOworc3RhdGljIGNvbnN0IGNoYXIgKnJl cGxhY2VfcGxhaW4gKGNvbnN0IGNoYXIqLCBpbnQsIEZJTEUqLCBjb25zdCBjaGFyICopOwogc3Rh dGljIGNvbnN0IGNoYXIgKnJlcGxhY2VfYXR0ciAoY29uc3QgY2hhciAqLCBpbnQsIEZJTEUgKiwg Y29uc3QgY2hhciAqKTsKIHN0YXRpYyBjb25zdCBjaGFyICpyZXBsYWNlX2F0dHJfcmVmcmVzaF9o YWNrIChjb25zdCBjaGFyICosIGludCwgRklMRSAqLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwgaW50KTsKIHN0YXRpYyBjaGFyICps b2NhbF9xdW90ZV9zdHJpbmcgKGNvbnN0IGNoYXIgKik7CiBzdGF0aWMgY2hhciAqY29uc3RydWN0 X3JlbGF0aXZlIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiAKLS8qIENoYW5nZSB0aGUg bGlua3MgaW4gb25lIEhUTUwgZmlsZS4gIExJTktTIGlzIGEgbGlzdCBvZiBsaW5rcyBpbiB0aGUK Ky8qIENoYW5nZSB0aGUgbGlua3MgaW4gb25lIGZpbGUuICBMSU5LUyBpcyBhIGxpc3Qgb2YgbGlu a3MgaW4gdGhlCiAgICBkb2N1bWVudCwgYWxvbmcgd2l0aCB0aGVpciBwb3NpdGlvbnMgYW5kIHRo ZSBkZXNpcmVkIGRpcmVjdGlvbiBvZgogICAgdGhlIGNvbnZlcnNpb24uICAqLwogc3RhdGljIHZv aWQKQEAgLTI3Nyw3ICsyOTMsOSBAQAogICAgICAgICAgICAgY2hhciAqbmV3bmFtZSA9IGNvbnN0 cnVjdF9yZWxhdGl2ZSAoZmlsZSwgbGluay0+bG9jYWxfbmFtZSk7CiAgICAgICAgICAgICBjaGFy ICpxdW90ZWRfbmV3bmFtZSA9IGxvY2FsX3F1b3RlX3N0cmluZyAobmV3bmFtZSk7CiAKLSAgICAg ICAgICAgIGlmICghbGluay0+bGlua19yZWZyZXNoX3ApCisgICAgICAgICAgICBpZiAobGluay0+ bGlua19jc3NfcCkKKyAgICAgICAgICAgICAgcCA9IHJlcGxhY2VfcGxhaW4gKHAsIGxpbmstPnNp emUsIGZwLCBxdW90ZWRfbmV3bmFtZSk7CisgICAgICAgICAgICBlbHNlIGlmICghbGluay0+bGlu a19yZWZyZXNoX3ApCiAgICAgICAgICAgICAgIHAgPSByZXBsYWNlX2F0dHIgKHAsIGxpbmstPnNp emUsIGZwLCBxdW90ZWRfbmV3bmFtZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg IHAgPSByZXBsYWNlX2F0dHJfcmVmcmVzaF9oYWNrIChwLCBsaW5rLT5zaXplLCBmcCwgcXVvdGVk X25ld25hbWUsCkBAIC0yOTYsNyArMzE0LDkgQEAKICAgICAgICAgICAgIGNoYXIgKm5ld2xpbmsg PSBsaW5rLT51cmwtPnVybDsKICAgICAgICAgICAgIGNoYXIgKnF1b3RlZF9uZXdsaW5rID0gaHRt bF9xdW90ZV9zdHJpbmcgKG5ld2xpbmspOwogCi0gICAgICAgICAgICBpZiAoIWxpbmstPmxpbmtf cmVmcmVzaF9wKQorICAgICAgICAgICAgaWYgKGxpbmstPmxpbmtfY3NzX3ApCisgICAgICAgICAg ICAgIHAgPSByZXBsYWNlX3BsYWluIChwLCBsaW5rLT5zaXplLCBmcCwgcXVvdGVkX25ld2xpbmsp OworICAgICAgICAgICAgZWxzZSBpZiAoIWxpbmstPmxpbmtfcmVmcmVzaF9wKQogICAgICAgICAg ICAgICBwID0gcmVwbGFjZV9hdHRyIChwLCBsaW5rLT5zaXplLCBmcCwgcXVvdGVkX25ld2xpbmsp OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICBwID0gcmVwbGFjZV9hdHRyX3JlZnJl c2hfaGFjayAocCwgbGluay0+c2l6ZSwgZnAsIHF1b3RlZF9uZXdsaW5rLApAQCAtNDA2LDYgKzQy Niw3IEBACiAgIHNpemVfdCAgICAgICAgIGZpbGVuYW1lX2xlbiA9IHN0cmxlbiAoZmlsZSk7CiAg IGNoYXIqICAgICAgICAgIGZpbGVuYW1lX3BsdXNfb3JpZ19zdWZmaXg7CiAKKyAgLyogVE9ETzog aGFjayB0aGlzIHRvIHdvcmsgd2l0aCBjc3MgZmlsZXMgKi8KICAgaWYgKGRvd25sb2FkZWRfZmls ZV9yZXR1cm4gPT0gRklMRV9ET1dOTE9BREVEX0FORF9IVE1MX0VYVEVOU0lPTl9BRERFRCkKICAg ICB7CiAgICAgICAvKiBKdXN0IHdyaXRlICJvcmlnIiBvdmVyICJodG1sIi4gIFdlIG5lZWQgdG8g ZG8gaXQgdGhpcyB3YXkKQEAgLTQ2NSw2ICs0ODYsMTUgQEAKIAogc3RhdGljIGJvb2wgZmluZF9m cmFnbWVudCAoY29uc3QgY2hhciAqLCBpbnQsIGNvbnN0IGNoYXIgKiosIGNvbnN0IGNoYXIgKiop OwogCisvKiBSZXBsYWNlIGEgc3RyaW5nIHdpdGggTkVXX1RFWFQuICBJZ25vcmUgcXVvdGluZy4g Ki8KK3N0YXRpYyBjb25zdCBjaGFyICoKK3JlcGxhY2VfcGxhaW4gKGNvbnN0IGNoYXIgKnAsIGlu dCBzaXplLCBGSUxFICpmcCwgY29uc3QgY2hhciAqbmV3X3RleHQpCit7CisgIGZwdXRzIChuZXdf dGV4dCwgZnApOworICBwICs9IHNpemU7CisgIHJldHVybiBwOworfQorCiAvKiBSZXBsYWNlIGFu IGF0dHJpYnV0ZSdzIG9yaWdpbmFsIHRleHQgd2l0aCBORVdfVEVYVC4gKi8KIAogc3RhdGljIGNv bnN0IGNoYXIgKgpAQCAtODMyLDYgKzg2MiwxNiBAQAogICBzdHJpbmdfc2V0X2FkZCAoZG93bmxv YWRlZF9odG1sX3NldCwgZmlsZSk7CiB9CiAKKy8qIFJlZ2lzdGVyIHRoYXQgRklMRSBpcyBhIENT UyBmaWxlIHRoYXQgaGFzIGJlZW4gZG93bmxvYWRlZC4gKi8KKwordm9pZAorcmVnaXN0ZXJfY3Nz IChjb25zdCBjaGFyICp1cmwsIGNvbnN0IGNoYXIgKmZpbGUpCit7CisgIGlmICghZG93bmxvYWRl ZF9jc3Nfc2V0KQorICAgIGRvd25sb2FkZWRfY3NzX3NldCA9IG1ha2Vfc3RyaW5nX2hhc2hfdGFi bGUgKDApOworICBzdHJpbmdfc2V0X2FkZCAoZG93bmxvYWRlZF9jc3Nfc2V0LCBmaWxlKTsKK30K Kwogc3RhdGljIHZvaWQgZG93bmxvYWRlZF9maWxlc19mcmVlICh2b2lkKTsKIAogLyogQ2xlYW51 cCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbGUuICAqLwpJbmRl eDogc3JjL3JlY3VyLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3JjL3JlY3VyLmMJKHJldmlzaW9uIDIxOTcp CisrKyBzcmMvcmVjdXIuYwkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgsMTAgQEAKICNpbmNs dWRlICJoYXNoLmgiCiAjaW5jbHVkZSAicmVzLmgiCiAjaW5jbHVkZSAiY29udmVydC5oIgorI2lu Y2x1ZGUgImh0bWwtdXJsLmgiCisjaW5jbHVkZSAiY3NzLXVybC5oIgogI2luY2x1ZGUgInNwaWRl ci5oIgotDAorCiAvKiBGdW5jdGlvbnMgZm9yIG1haW50YWluaW5nIHRoZSBVUkwgcXVldWUuICAq LwogCiBzdHJ1Y3QgcXVldWVfZWxlbWVudCB7CkBAIC01OCw3ICs2MCw4IEBACiAgIGludCBkZXB0 aDsJCQkvKiB0aGUgZGVwdGggKi8KICAgYm9vbCBodG1sX2FsbG93ZWQ7CSAgICAgICAgLyogd2hl dGhlciB0aGUgZG9jdW1lbnQgaXMgYWxsb3dlZCB0bwogCQkJCSAgIGJlIHRyZWF0ZWQgYXMgSFRN TC4gKi8KLQorICBib29sIGNzc19hbGxvd2VkOyAJICAgICAgICAvKiB3aGV0aGVyIHRoZSBkb2N1 bWVudCBpcyBhbGxvd2VkIHRvCisJCQkJICAgYmUgdHJlYXRlZCBhcyBDU1MuICovCiAgIHN0cnVj dCBxdWV1ZV9lbGVtZW50ICpuZXh0OwkvKiBuZXh0IGVsZW1lbnQgaW4gcXVldWUgKi8KIH07CiAK QEAgLTkxLDEzICs5NCwxNSBAQAogCiBzdGF0aWMgdm9pZAogdXJsX2VucXVldWUgKHN0cnVjdCB1 cmxfcXVldWUgKnF1ZXVlLAotCSAgICAgY29uc3QgY2hhciAqdXJsLCBjb25zdCBjaGFyICpyZWZl cmVyLCBpbnQgZGVwdGgsIGJvb2wgaHRtbF9hbGxvd2VkKQorCSAgICAgY29uc3QgY2hhciAqdXJs LCBjb25zdCBjaGFyICpyZWZlcmVyLCBpbnQgZGVwdGgsCisgICAgICAgICAgICAgYm9vbCBodG1s X2FsbG93ZWQsIGJvb2wgY3NzX2FsbG93ZWQpCiB7CiAgIHN0cnVjdCBxdWV1ZV9lbGVtZW50ICpx ZWwgPSB4bmV3IChzdHJ1Y3QgcXVldWVfZWxlbWVudCk7CiAgIHFlbC0+dXJsID0gdXJsOwogICBx ZWwtPnJlZmVyZXIgPSByZWZlcmVyOwogICBxZWwtPmRlcHRoID0gZGVwdGg7CiAgIHFlbC0+aHRt bF9hbGxvd2VkID0gaHRtbF9hbGxvd2VkOworICBxZWwtPmNzc19hbGxvd2VkID0gY3NzX2FsbG93 ZWQ7CiAgIHFlbC0+bmV4dCA9IE5VTEw7CiAKICAgKytxdWV1ZS0+Y291bnQ7CkBAIC0xMjEsNyAr MTI2LDcgQEAKIHN0YXRpYyBib29sCiB1cmxfZGVxdWV1ZSAoc3RydWN0IHVybF9xdWV1ZSAqcXVl dWUsCiAJICAgICBjb25zdCBjaGFyICoqdXJsLCBjb25zdCBjaGFyICoqcmVmZXJlciwgaW50ICpk ZXB0aCwKLQkgICAgIGJvb2wgKmh0bWxfYWxsb3dlZCkKKwkgICAgIGJvb2wgKmh0bWxfYWxsb3dl ZCwgYm9vbCAqY3NzX2FsbG93ZWQpCiB7CiAgIHN0cnVjdCBxdWV1ZV9lbGVtZW50ICpxZWwgPSBx dWV1ZS0+aGVhZDsKIApAQCAtMTM2LDYgKzE0MSw3IEBACiAgICpyZWZlcmVyID0gcWVsLT5yZWZl cmVyOwogICAqZGVwdGggPSBxZWwtPmRlcHRoOwogICAqaHRtbF9hbGxvd2VkID0gcWVsLT5odG1s X2FsbG93ZWQ7CisgICpjc3NfYWxsb3dlZCA9IHFlbC0+Y3NzX2FsbG93ZWQ7CiAKICAgLS1xdWV1 ZS0+Y291bnQ7CiAKQEAgLTIwMCw3ICsyMDYsNyBAQAogCiAgIC8qIEVucXVldWUgdGhlIHN0YXJ0 aW5nIFVSTC4gIFVzZSBzdGFydF91cmxfcGFyc2VkLT51cmwgcmF0aGVyIHRoYW4KICAgICAganVz dCBVUkwgc28gd2UgZW5xdWV1ZSB0aGUgY2Fub25pY2FsIGZvcm0gb2YgdGhlIFVSTC4gICovCi0g IHVybF9lbnF1ZXVlIChxdWV1ZSwgeHN0cmR1cCAoc3RhcnRfdXJsX3BhcnNlZC0+dXJsKSwgTlVM TCwgMCwgdHJ1ZSk7CisgIHVybF9lbnF1ZXVlIChxdWV1ZSwgeHN0cmR1cCAoc3RhcnRfdXJsX3Bh cnNlZC0+dXJsKSwgTlVMTCwgMCwgdHJ1ZSwgZmFsc2UpOwogICBzdHJpbmdfc2V0X2FkZCAoYmxh Y2tsaXN0LCBzdGFydF91cmxfcGFyc2VkLT51cmwpOwogCiAgIHdoaWxlICgxKQpAQCAtMjA4LDcg KzIxNCw4IEBACiAgICAgICBib29sIGRlc2NlbmQgPSBmYWxzZTsKICAgICAgIGNoYXIgKnVybCwg KnJlZmVyZXIsICpmaWxlID0gTlVMTDsKICAgICAgIGludCBkZXB0aDsKLSAgICAgIGJvb2wgaHRt bF9hbGxvd2VkOworICAgICAgYm9vbCBodG1sX2FsbG93ZWQsIGNzc19hbGxvd2VkOworICAgICAg Ym9vbCBpc19jc3MgPSBmYWxzZTsKICAgICAgIGJvb2wgZGFzaF9wX2xlYWZfSFRNTCA9IGZhbHNl OwogCiAgICAgICBpZiAob3B0LnF1b3RhICYmIHRvdGFsX2Rvd25sb2FkZWRfYnl0ZXMgPiBvcHQu cXVvdGEpCkBAIC0yMjAsNyArMjI3LDcgQEAKIAogICAgICAgaWYgKCF1cmxfZGVxdWV1ZSAocXVl dWUsCiAJCQkoY29uc3QgY2hhciAqKikmdXJsLCAoY29uc3QgY2hhciAqKikmcmVmZXJlciwKLQkJ CSZkZXB0aCwgJmh0bWxfYWxsb3dlZCkpCisJCQkmZGVwdGgsICZodG1sX2FsbG93ZWQsICZjc3Nf YWxsb3dlZCkpCiAJYnJlYWs7CiAKICAgICAgIC8qIC4uLmFuZCBkb3dubG9hZCBpdC4gIE5vdGUg dGhhdCB0aGlzIGRvd25sb2FkIGlzIGluIG1vc3QgY2FzZXMKQEAgLTIzOCwxMCArMjQ1LDIxIEBA CiAJICBERUJVR1AgKCgiQWxyZWFkeSBkb3dubG9hZGVkIFwiJXNcIiwgcmV1c2luZyBpdCBmcm9t IFwiJXNcIi5cbiIsCiAJCSAgIHVybCwgZmlsZSkpOwogCisgICAgICAgICAgLyogdGhpcyBzdWNr cywgbmVlZHMgdG8gYmUgY29tYmluZWQhICovCiAJICBpZiAoaHRtbF9hbGxvd2VkCiAJICAgICAg JiYgZG93bmxvYWRlZF9odG1sX3NldAogCSAgICAgICYmIHN0cmluZ19zZXRfY29udGFpbnMgKGRv d25sb2FkZWRfaHRtbF9zZXQsIGZpbGUpKQotCSAgICBkZXNjZW5kID0gdHJ1ZTsKKyAgICAgICAg ICAgIHsKKyAgICAgICAgICAgICAgZGVzY2VuZCA9IHRydWU7CisgICAgICAgICAgICAgIGlzX2Nz cyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgIGlmIChjc3NfYWxsb3dlZAorICAg ICAgICAgICAgICAmJiBkb3dubG9hZGVkX2Nzc19zZXQKKyAgICAgICAgICAgICAgJiYgc3RyaW5n X3NldF9jb250YWlucyAoZG93bmxvYWRlZF9jc3Nfc2V0LCBmaWxlKSkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgZGVzY2VuZCA9IDE7CisgICAgICAgICAgICAgIGlzX2NzcyA9IHRydWU7 CisgICAgICAgICAgICB9CiAJfQogICAgICAgZWxzZQogCXsKQEAgLTI1Miw4ICsyNzAsMjIgQEAK IAogCSAgaWYgKGh0bWxfYWxsb3dlZCAmJiBmaWxlICYmIHN0YXR1cyA9PSBSRVRST0sKIAkgICAg ICAmJiAoZHQgJiBSRVRST0tGKSAmJiAoZHQgJiBURVhUSFRNTCkpCi0JICAgIGRlc2NlbmQgPSB0 cnVlOworICAgICAgICAgICAgeworICAgICAgICAgICAgICBkZXNjZW5kID0gdHJ1ZTsKKyAgICAg ICAgICAgICAgaXNfY3NzID0gZmFsc2U7CisgICAgICAgICAgICB9CiAKKyAgICAgICAgICAvKiBh IGxpdHRsZSBkaWZmZXJlbnQsIGNzc19hbGxvd2VkIGNhbiBvdmVycmlkZSBjb250ZW50IHR5cGUK KyAgICAgICAgICAgICBsb3RzIG9mIHdlYiBzZXJ2ZXJzIHNlcnZlIGNzcyB3aXRoIGFuIGluY29y cmVjdCBjb250ZW50IHR5cGUKKyAgICAgICAgICAqLworICAgICAgICAgIGlmIChmaWxlICYmIHN0 YXR1cyA9PSBSRVRST0sKKyAgICAgICAgICAgICAgJiYgKGR0ICYgUkVUUk9LRikgJiYKKyAgICAg ICAgICAgICAgKChkdCAmIFRFWFRDU1MpIHx8IGNzc19hbGxvd2VkKSkKKyAgICAgICAgICAgIHsK KyAgICAgICAgICAgICAgZGVzY2VuZCA9IHRydWU7CisgICAgICAgICAgICAgIGlzX2NzcyA9IGZh bHNlOworICAgICAgICAgICAgfQorCiAJICBpZiAocmVkaXJlY3RlZCkKIAkgICAgewogCSAgICAg IC8qIFdlIGhhdmUgYmVlbiByZWRpcmVjdGVkLCBwb3NzaWJseSB0byBhbm90aGVyIGhvc3QsIG9y CkBAIC0zMDYsMTQgKzMzOCwxNSBAQAogCSAgICB9CiAJfQogCi0gICAgICAvKiBJZiB0aGUgZG93 bmxvYWRlZCBkb2N1bWVudCB3YXMgSFRNTCwgcGFyc2UgaXQgYW5kIGVucXVldWUgdGhlCisgICAg ICAvKiBJZiB0aGUgZG93bmxvYWRlZCBkb2N1bWVudCB3YXMgSFRNTCBvciBDU1MsIHBhcnNlIGl0 IGFuZCBlbnF1ZXVlIHRoZQogCSBsaW5rcyBpdCBjb250YWlucy4gKi8KIAogICAgICAgaWYgKGRl c2NlbmQpCiAJewogCSAgYm9vbCBtZXRhX2Rpc2FsbG93X2ZvbGxvdyA9IGZhbHNlOwogCSAgc3Ry dWN0IHVybHBvcyAqY2hpbGRyZW4KLQkgICAgPSBnZXRfdXJsc19odG1sIChmaWxlLCB1cmwsICZt ZXRhX2Rpc2FsbG93X2ZvbGxvdyk7CisJICAgID0gaXNfY3NzID8gZ2V0X3VybHNfY3NzX2ZpbGUg KGZpbGUsIHVybCkgOgorICAgICAgICAgICAgICAgICAgICAgICBnZXRfdXJsc19odG1sIChmaWxl LCB1cmwsICZtZXRhX2Rpc2FsbG93X2ZvbGxvdyk7CiAKIAkgIGlmIChvcHQudXNlX3JvYm90cyAm JiBtZXRhX2Rpc2FsbG93X2ZvbGxvdykKIAkgICAgewpAQCAtMzM4LDcgKzM3MSw4IEBACiAJCSAg ICB7CiAJCSAgICAgIHVybF9lbnF1ZXVlIChxdWV1ZSwgeHN0cmR1cCAoY2hpbGQtPnVybC0+dXJs KSwKIAkJCQkgICB4c3RyZHVwICh1cmwpLCBkZXB0aCArIDEsCi0JCQkJICAgY2hpbGQtPmxpbmtf ZXhwZWN0X2h0bWwpOworCQkJCSAgIGNoaWxkLT5saW5rX2V4cGVjdF9odG1sLAorCQkJCSAgIGNo aWxkLT5saW5rX2V4cGVjdF9jc3MpOwogCQkgICAgICAvKiBXZSBibGFja2xpc3QgdGhlIFVSTCB3 ZSBoYXZlIGVucXVldWVkLCBiZWNhdXNlIHdlCiAJCQkgZG9uJ3Qgd2FudCB0byBlbnF1ZXVlIChh bmQgaGVuY2UgZG93bmxvYWQpIHRoZQogCQkJIHNhbWUgVVJMIHR3aWNlLiAgKi8KQEAgLTM4NSw5 ICs0MTksOSBAQAogICB7CiAgICAgY2hhciAqZDEsICpkMjsKICAgICBpbnQgZDM7Ci0gICAgYm9v bCBkNDsKKyAgICBib29sIGQ0LCBkNTsKICAgICB3aGlsZSAodXJsX2RlcXVldWUgKHF1ZXVlLAot CQkJKGNvbnN0IGNoYXIgKiopJmQxLCAoY29uc3QgY2hhciAqKikmZDIsICZkMywgJmQ0KSkKKwkJ CShjb25zdCBjaGFyICoqKSZkMSwgKGNvbnN0IGNoYXIgKiopJmQyLCAmZDMsICZkNCwgJmQ1KSkK ICAgICAgIHsKIAl4ZnJlZSAoZDEpOwogCXhmcmVlX251bGwgKGQyKTsKSW5kZXg6IHNyYy9yZWN1 ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHNyYy9yZWN1ci5oCShyZXZpc2lvbiAyMTk3KQorKysgc3JjL3Jl Y3VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDkgKzQzLDQgQEAKIHZvaWQgcmVjdXJzaXZlX2Ns ZWFudXAgKHZvaWQpOwogdWVycl90IHJldHJpZXZlX3RyZWUgKGNvbnN0IGNoYXIgKik7CiAKLS8q IFRoZXNlIGFyZSByZWFsbHkgaW4gaHRtbC11cmwuYy4gKi8KLXN0cnVjdCB1cmxwb3MgKmdldF91 cmxzX2ZpbGUgKGNvbnN0IGNoYXIgKik7Ci1zdHJ1Y3QgdXJscG9zICpnZXRfdXJsc19odG1sIChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgYm9vbCAqKTsKLXZvaWQgZnJlZV91cmxwb3MgKHN0 cnVjdCB1cmxwb3MgKik7Ci0KICNlbmRpZiAvKiBSRUNVUl9IICovCkluZGV4OiBzcmMvY29udmVy dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIHNyYy9jb252ZXJ0LmgJKHJldmlzaW9uIDIxOTcpCisrKyBzcmMv Y29udmVydC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiBzdHJ1Y3QgaGFzaF90 YWJsZTsJCS8qIGZvcndhcmQgZGVjbCAqLwogZXh0ZXJuIHN0cnVjdCBoYXNoX3RhYmxlICpkbF91 cmxfZmlsZV9tYXA7CiBleHRlcm4gc3RydWN0IGhhc2hfdGFibGUgKmRvd25sb2FkZWRfaHRtbF9z ZXQ7CitleHRlcm4gc3RydWN0IGhhc2hfdGFibGUgKmRvd25sb2FkZWRfY3NzX3NldDsKIAogZW51 bSBjb252ZXJ0X29wdGlvbnMgewogICBDT19OT0NPTlZFUlQgPSAwLAkJLyogZG9uJ3QgY29udmVy dCB0aGlzIFVSTCAqLwpAQCAtNjQsNyArNjUsOSBAQAogICB1bnNpZ25lZCBpbnQgbGlua19jb21w bGV0ZV9wCToxOyAvKiB0aGUgbGluayB3YXMgY29tcGxldGUgKGhhZCBob3N0IG5hbWUpICovCiAg IHVuc2lnbmVkIGludCBsaW5rX2Jhc2VfcAk6MTsgLyogdGhlIHVybCBjYW1lIGZyb20gPGJhc2Ug aHJlZj0uLi4+ICovCiAgIHVuc2lnbmVkIGludCBsaW5rX2lubGluZV9wCToxOyAvKiBuZWVkZWQg dG8gcmVuZGVyIHRoZSBwYWdlICovCisgIHVuc2lnbmVkIGludCBsaW5rX2Nzc19wCToxOyAvKiB0 aGUgdXJsIGNhbWUgZnJvbSBDU1MgKi8KICAgdW5zaWduZWQgaW50IGxpbmtfZXhwZWN0X2h0bWwJ OjE7IC8qIGV4cGVjdGVkIHRvIGNvbnRhaW4gSFRNTCAqLworICB1bnNpZ25lZCBpbnQgbGlua19l eHBlY3RfY3NzCToxOyAvKiBleHBlY3RlZCB0byBjb250YWluIENTUyAqLwogCiAgIHVuc2lnbmVk IGludCBsaW5rX3JlZnJlc2hfcAk6MTsgLyogbGluayB3YXMgcmVjZWl2ZWQgZnJvbQogCQkJCSAg ICAgICA8bWV0YSBodHRwLWVxdWl2PXJlZnJlc2ggY29udGVudD0uLi4+ICovCkBAIC05OCw2ICsx MDEsNyBAQAogdm9pZCByZWdpc3Rlcl9kb3dubG9hZCAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICopOwogdm9pZCByZWdpc3Rlcl9yZWRpcmVjdGlvbiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICopOwogdm9pZCByZWdpc3Rlcl9odG1sIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Cit2 b2lkIHJlZ2lzdGVyX2NzcyAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogdm9pZCByZWdp c3Rlcl9kZWxldGVfZmlsZSAoY29uc3QgY2hhciAqKTsKIHZvaWQgY29udmVydF9hbGxfbGlua3Mg KHZvaWQpOwogdm9pZCBjb252ZXJ0X2NsZWFudXAgKHZvaWQpOwo= ------=_Part_7043_32740652.1165338015424 Content-Type: text/plain; name=changes.txt; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: base64 X-Attachment-Id: f_evck4q2m Content-Disposition: attachment; filename="changes.txt" d2dldC5oOgogIGFkZGVkIFRFWFRDU1MgdG8gZHQgZmxhZ3MgZW51bQoKY29udmVydC5oOgogIGFk ZGVkIGxpbmtfY3NzX3AgdG8gc3RydWN0IHVybHBvcwogIGFkZGVkIGxpbmtfZXhwZWN0X2NzcyB0 byBzdHJ1Y3QgdXJscG9zCiAgYWRkZWQgZG93bmxvYWRlZF9jc3Nfc2V0IGhhc2ggdGFibGUKICBh ZGRlZCByZWdpc3Rlcl9jc3MgZnVuY3Rpb24gcHJvdG90eXBlCgpjb252ZXJ0LmM6CiAgYWRkZWQg I2luY2x1ZGUgImh0bWwtdXJsLmgiCiAgYWRkZWQgZG93bmxvYWRlZF9jc3Nfc2V0IGhhc2ggdGFi bGUKICBhZGRlZCByZWdpc3Rlcl9jc3MgZnVuY3Rpb24KICBtb3ZlZCBtb3N0IG9mIGNvbnZlcnRf YWxsX2xpbmtzIHRvIGZ1bmN0aW9uIGNvbnZlcnRfbGlua3NfaW5faGFzaHRhYmxlCiAgY2FsbCBj b252ZXJ0X2xpbmtzX2luX2hhc2h0YWJsZSBmb3IgZWFjaCBvZiBkb3dubG9hZGVkX3todG1sLGNz c31fc2V0CiAgbWFkZSBjb252ZXJ0X2xpbmtzX2luX2hhc2h0YWJsZSBoYW5kbGUgY3NzIGZpbGVz CiAgYWRkZWQgcmVwbGFjZV9wbGFpbiBmdW5jdGlvbgoKcmV0ci5jOgogIGFkZGVkICNpbmNsdWRl ICJodG1sLXVybC5oIgogIGFkZGVkIFRFWFRDU1MgLT4gcmVnaXN0ZXJfY3NzIGluIHJldHJpZXZl X3VybAoKaHR0cC5jOgogIGFkZGVkICNkZWZpbmUgVEVYVENTU19TCiAgYWRkZWQgY2hlY2sgZm9y IENTUyBjb250ZW50IHR5cGUgLT4gVEVYVENTUyBmbGFnCiAgYWRkZWQgZnVuY3Rpb24gZW5zdXJl X2V4dGVuc2lvbgogIGNoYW5nZWQgY29kZSB0byB1c2UgZW5zdXJlX2V4dGVuc2lvbiBmb3IgSFRN TCBhbmQgQ1NTIGZpbGVzCgpyZWN1ci5oOgogIHJlbW92ZWQgcHJvdG90eXBlcyBmb3IgZnVuY3Rp b25zIGZyb20gaHRtbC11cmwuYwoKcmVjdXIuYzoKICBhZGRlZCAjaW5jbHVkZSAiaHRtbC11cmwu aCIKICBhZGRlZCAjaW5jbHVkZSAiY3NzLXVybC5oIgogIGFkZGVkICdjc3NfYWxsb3dlZCcgdG8g ZW5xdWV1ZS9kZXF1ZXVlX3VybCBmdW5jdGlvbnMsIHN0cnVjdCBxdWV1ZV9lbGVtZW50CiAgbW9k aWZpZWQgcmV0cmlldmVfdHJlZSB0byBoYW5kbGUgY3NzX2FsbG93ZWQsIHNldCBkZXNjZW5kIHBy b3Blcmx5LAogICAgY2FsbCBnZXRfdXJsc19jc3NfZmlsZQoKaHRtbC11cmwuaDoKICBhZGRlZCBw cm90b3R5cGVzIGZyb20gcmVjdXIuaAogIGFkZGVkIHByb3RvdHlwZSBmb3IgYXBwZW5kX3VybAog IGFkZGVkIGRlZmluaXRpb24gb2Ygc3RydWN0IG1hcF9jb250ZXh0CgpodG1sLXVybC5jOgogIGFk ZGVkICNpbmNsdWRlICJodG1sLXVybC5oIgogIHJlbW92ZWQgZGVmaW5pdGlvbiBvZiBzdHJ1Y3Rf bWFwX2NvbnRleHQKICBhZGRlZCBBVFRSX1BPUyBhbmQgQVRUUl9TSVpFIHRvIHNob3J0ZW4gY2Fs bHMgdG8gYXBwZW5kX3VybAogIGNoYW5nZWQgYXBwZW5kX3VybCB0byBiZSBub24tc3RhdGljIGFu ZCB0YWtlIHBvc2l0aW9uIGFuZCBzaXplCiAgICBhcyBwYXJhbWV0ZXJzIGluc3RlYWQgb2YgdGFn L2F0dHJpbmQKICBtb2RpZmllZCB0YWdfaGFuZGxlX2xpbmsgdG8gc2V0IGxpbmtfZXhwZWN0X2Nz cyBmb3IgbGluayByZWw9InN0eWxlc2hlZXQiCiAgYWRkZWQgInN0eWxlIiB0byBhZGRpdGlvbmFs X2F0dHJpYnV0ZXMgYXJyYXkKICBhZGRlZCBjaGVja19zdHlsZV9hdHRyIGZ1bmN0aW9uCiAgbW9k aWZpZWQgY29sbGVjdF90YWdzX21hcHBlciB0byBjYWxsIGNoZWNrX3N0eWxlX2F0dHIsIGFuZCBo YW5kbGUKICAgIHVuaW50ZXJlc3RpbmcgdGFncwogIGFkZGVkIGNoZWNrIGluIGNvbGxlY3RfdGFn c19tYXBwZXIgCiAgbW9kaWZpZWQgZ2V0X3VybHNfaHRtbCB0byBjYWxsIG1hcF9odG1sX3RhZ3Mg d2l0aCBOVUxMIGFzIHRoZQogICAgaW50ZXJlc3RpbmdfdGFncyBwYXJhbWV0ZXIsIHNvIHdlIHJl Y2VpdmUgYWxsIHRhZ3MKCmh0bWwtcGFyc2UuYzoKICBhZGRlZCBzdHJ1Y3QgdGFnc3RhY2tfaXRl bSAoZm9yIHRhZyBzdGFjaywgYSBkb3VibHkgbGlua2VkIGxpc3QpCiAgYWRkZWQgZnVuY3Rpb25z IHRhZ3N0YWNrX3B1c2gsIHRhZ3N0YWNrX3BvcCwgdGFnc3RhY2tfZmluZAogIGFkZGVkIGhlYWQg YW5kIHRhaWwgdGFnIHN0YWNrIHBvaW50ZXJzIGluIG1hcF9odG1sX3RhZ3MKICBpbiBtYXBfaHRt bF90YWdzLCBpZiBub3QgYSBzdGFydCB0YWcsIHB1c2ggdGFnIGRldGFpbHMgdG8gdGhlIHN0YWNr CiAgd2hlbiBlbmQgb2YgdGFnIGlzIGZvdW5kLCBzZXQgY29udGVudHNfYmVnaW4gb24gc3RhY2sK ICBiZWZvcmUgY2FsbGluZyBtYXAgZnVuY3Rpb24sIGlmIGFuIGVuZCB0YWcsIGZpbmQgbWF0Y2hp bmcgc3RhcnQgdGFnCiAgICBvbiB0aGUgc3RhY2ssIHBvcCBpdCwgYW5kIHNhdmUgY29udGVudHMg aW5mbyBpbiB0YWdpbmZvIHN0cnVjdAogIGNsZWFudXAgdGFnIHN0YWNrIHdoZW4gZmluaXNoZWQK ------=_Part_7043_32740652.1165338015424--