X-Recipient: archive-cygwin AT delorie DOT com X-SWARE-Spam-Status: No, hits=1.9 required=5.0 tests=AWL,BAYES_50,DKIM_ADSP_CUSTOM_MED,FREEMAIL_FROM,NML_ADSP_CUSTOM_MED,RCVD_NUMERIC_HELO,SPF_HELO_PASS,TW_CP,TW_EG,TW_MK,TW_RV,TW_TV,TW_VP,TW_YG,T_RP_MATCHES_RCVD,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: sourceware.org To: cygwin AT cygwin DOT com From: jojelino Subject: Re: [patch]another sigsegv in environ.cc Date: Wed, 09 Feb 2011 23:17:56 +0900 Lines: 741 Message-ID: References: <20110204150118 DOT GA20523 AT ednor DOT casa DOT cgf DOT cx> <20110205193541 DOT GA14935 AT ednor DOT casa DOT cgf DOT cx> <20110205200317 DOT GB14935 AT ednor DOT casa DOT cgf DOT cx> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070903060805030109020902" User-Agent: Mozilla/5.0 (Windows NT 5.2; rv:2.0b12pre) Gecko/20110208 Thunderbird/3.3a3pre In-Reply-To: <20110205200317.GB14935@ednor.casa.cgf.cx> X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com --------------070903060805030109020902 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit changes introduced. all file: add __attribute__ ((regparm (x))) explicitly in function definition. environ.cc fix findenv_func that were not prefixed __stdcall exception.h add body to prevent compilation error with -DDEBUG_EXCEPTION fhandler_floppy.cc hookapi.cc syscalls.cc in6.h passwd.cc merged with [PATCHes] Misc aliasing fixes for building DLL with gcc-4.5.0 --------------070903060805030109020902 Content-Type: text/plain; name="winsup-gcc-4.6.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="winsup-gcc-4.6.diff" SW5kZXg6IHdpbnN1cC9jeWd3aW4vZW52aXJvbi5jYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dp bi9lbnZpcm9uLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4MwpkaWZm IC11IC1yMS4xODMgZW52aXJvbi5jYwotLS0gd2luc3VwL2N5Z3dpbi9lbnZp cm9uLmNjCTE4IE1heSAyMDEwIDE0OjMwOjUwIC0wMDAwCTEuMTgzCisrKyB3 aW5zdXAvY3lnd2luL2Vudmlyb24uY2MJOSBGZWIgMjAxMSAxMzo0Nzo1NyAt MDAwMApAQCAtMTU2LDcgKzE1Niw3IEBACiAgIHRvIHRoZSBiZWdpbm5pbmcg b2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUuICAqaW5fcG9zaXgg aXMgYW55CiAgIGtub3duIHBvc2l4IHZhbHVlIGZvciB0aGUgZW52aXJvbm1l bnQgdmFyaWFibGUuIFJldHVybnMgYSBwb2ludGVyIHRvCiAgIHRoZSBhcHBy b3ByaWF0ZSBjb252ZXJzaW9uIHN0cnVjdHVyZS4gICovCi13aW5fZW52ICog X19zdGRjYWxsCit3aW5fZW52ICogX19zdGRjYWxsIF9fYXR0cmlidXRlX18g KChyZWdwYXJtICgzKSkpCiBnZXR3aW5lbnYgKGNvbnN0IGNoYXIgKmVudiwg Y29uc3QgY2hhciAqaW5fcG9zaXgsIHdpbl9lbnYgKnRlbXApCiB7CiAgIGlm ICghY29udl9zdGFydF9jaGFyc1sodW5zaWduZWQgY2hhcikqZW52XSkKQEAg LTIxOSw3ICsyMTksNyBAQAogICBmcmVlIChzcmMpOwogICBNQUxMT0NfQ0hF Q0s7CiB9Ci0KK3R5cGVkZWYgY2hhciogKF9fc3RkY2FsbCAqcGZuZW52KShj b25zdCBjaGFyKixpbnQqKTsKIC8qIFJldHVybnMgcG9pbnRlciB0byB2YWx1 ZSBhc3NvY2lhdGVkIHdpdGggbmFtZSwgaWYgYW55LCBlbHNlIE5VTEwuCiAg IFNldHMgb2Zmc2V0IHRvIGJlIHRoZSBvZmZzZXQgb2YgdGhlIG5hbWUvdmFs dWUgY29tYmluYXRpb24gaW4gdGhlCiAgIGVudmlyb25tZW50IGFycmF5LCBm b3IgdXNlIGJ5IHNldGVudigzKSBhbmQgdW5zZXRlbnYoMykuCkBAIC0yNTMs NyArMjUzLDcgQEAKIAogLyogUHJpbWl0aXZlIGdldGVudiBiZWZvcmUgdGhl IGVudmlyb25tZW50IGlzIGJ1aWx0LiAgKi8KIAotc3RhdGljIGNoYXIgX19z dGRjYWxsICoKK3N0YXRpYyBjaGFyKiBfX3N0ZGNhbGwKIGdldGVhcmx5IChj b25zdCBjaGFyICogbmFtZSwgaW50ICopCiB7CiAgIGNoYXIgKnJldDsKQEAg LTI3NSw3ICsyNzUsNyBAQAogICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGlj IGNoYXIgKiAoKmZpbmRlbnZfZnVuYykoY29uc3QgY2hhciAqLCBpbnQgKikg PSAoY2hhciAqICgqKShjb25zdCBjaGFyICosIGludCAqKSkgZ2V0ZWFybHk7 CitzdGF0aWMgcGZuZW52IGZpbmRlbnZfZnVuYyA9ICZnZXRlYXJseTsKIAog LyogUmV0dXJucyBwdHIgdG8gdmFsdWUgYXNzb2NpYXRlZCB3aXRoIG5hbWUs IGlmIGFueSwgZWxzZSBOVUxMLiAgKi8KIApAQCAtODMwLDcgKzgzMCw3IEBA CiAgIEZyZWVFbnZpcm9ubWVudFN0cmluZ3NXIChyYXdlbnYpOwogCiBvdXQ6 Ci0gIGZpbmRlbnZfZnVuYyA9IChjaGFyICogKCopKGNvbnN0IGNoYXIqLCBp bnQqKSkgbXlfZmluZGVudjsKKyAgZmluZGVudl9mdW5jID0gbXlfZmluZGVu djsKICAgX19jeWd3aW5fZW52aXJvbiA9IGVudnA7CiAgIHVwZGF0ZV9lbnZw dHJzICgpOwogICBpZiAoZW52cF9wYXNzZWRfaW4pCkBAIC04NTYsNyArODU2 LDcgQEAKICAgcmV0dXJuIHN0cmNtcCAoKnAsICpxKTsKIH0KIAotY2hhciAq IF9fc3RkY2FsbAorY2hhciAqIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgo cmVncGFybSAoMykpKQogZ2V0d2luZW52ZXEgKGNvbnN0IGNoYXIgKm5hbWUs IHNpemVfdCBuYW1lbGVuLCBpbnQgeCkKIHsKICAgV0NIQVIgbmFtZTBbbmFt ZWxlbiAtIDFdOwpAQCAtOTU2LDcgKzk1Niw3IEBACiAgICBmaWxsZWQgd2l0 aCBudWxsIHRlcm1pbmF0ZWQgc3RyaW5ncywgdGVybWluYXRlZCBieSBkb3Vi bGUgbnVsbCBjaGFyYWN0ZXJzLgogICAgQ29udmVydHMgZW52aXJvbm1lbnQg dmFyaWFibGVzIG5vdGVkIGluIGNvbnZfZW52dmFycyBpbnRvIHdpbjMyIGZv cm0KICAgIHByaW9yIHRvIHBsYWNpbmcgdGhlbSBpbiB0aGUgc3RyaW5nLiAg Ki8KLWNoYXIgKiogX19zdGRjYWxsCitjaGFyICoqIF9fc3RkY2FsbCBfX2F0 dHJpYnV0ZV9fICgocmVncGFybSAoMykpKQogYnVpbGRfZW52IChjb25zdCBj aGFyICogY29uc3QgKmVudnAsIFBXQ0hBUiAmZW52YmxvY2ssIGludCAmZW52 YywKIAkgICBib29sIG5vX2VudmJsb2NrKQogewpJbmRleDogd2luc3VwL2N5 Z3dpbi9leGNlcHRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9leGNlcHRpb24uaCx2 CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zCmRpZmYgLXUgLXIxLjMgZXhjZXB0 aW9uLmgKLS0tIHdpbnN1cC9jeWd3aW4vZXhjZXB0aW9uLmgJMSBNYXIgMjAx MCAwNjozOTo0NyAtMDAwMAkxLjMKKysrIHdpbnN1cC9jeWd3aW4vZXhjZXB0 aW9uLmgJOSBGZWIgMjAxMSAxMzo0Nzo1NyAtMDAwMApAQCAtMjAsOCArMjAs OCBAQAogICBzdGF0aWMgaW50IGhhbmRsZSAoRVhDRVBUSU9OX1JFQ09SRCAq LCBleGNlcHRpb25fbGlzdCAqLCBDT05URVhUICosIHZvaWQgKik7CiBwdWJs aWM6CiAjaWZkZWYgREVCVUdfRVhDRVBUSU9OCi0gIGV4Y2VwdGlvbiAoKTsK LSAgfmV4Y2VwdGlvbiAoKTsKKyAgZXhjZXB0aW9uICgpe307CisgIH5leGNl cHRpb24gKCl7fTsKICNlbHNlCiAgIGV4Y2VwdGlvbiAoKSBfX2F0dHJpYnV0 ZV9fICgoYWx3YXlzX2lubGluZSkpCiAgIHsKSW5kZXg6IHdpbnN1cC9jeWd3 aW4vZmhhbmRsZXJfZmxvcHB5LmNjCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K UkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL2ZoYW5kbGVy X2Zsb3BweS5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS41NwpkaWZmIC11 IC1yMS41NyBmaGFuZGxlcl9mbG9wcHkuY2MKLS0tIHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfZmxvcHB5LmNjCTEyIEphbiAyMDExIDA5OjE2OjUxIC0wMDAw CTEuNTcKKysrIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZmxvcHB5LmNjCTkg RmViIDIwMTEgMTM6NDc6NTggLTAwMDAKQEAgLTU3LDcgKzU3LDggQEAKIAlf X3NldGVycm5vICgpOwogICAgICAgZWxzZQogCXsKLQkgIGRpID0gJigoRElT S19HRU9NRVRSWV9FWCAqKSBkYnVmKS0+R2VvbWV0cnk7CisJICBESVNLX0dF T01FVFJZX0VYICpkZ3ggPSAoRElTS19HRU9NRVRSWV9FWCAqKSBkYnVmOwor CSAgZGkgPSAmZGd4LT5HZW9tZXRyeTsKIAkgIGlmICghRGV2aWNlSW9Db250 cm9sIChnZXRfaGFuZGxlICgpLAogCQkJCUlPQ1RMX0RJU0tfR0VUX1BBUlRJ VElPTl9JTkZPX0VYLCBOVUxMLCAwLAogCQkJCXBidWYsIDI1NiwgJmJ5dGVz X3JlYWQsIE5VTEwpKQpJbmRleDogd2luc3VwL2N5Z3dpbi9ob29rYXBpLmNj Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3Ny Yy93aW5zdXAvY3lnd2luL2hvb2thcGkuY2MsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuMTkKZGlmZiAtdSAtcjEuMTkgaG9va2FwaS5jYwotLS0gd2luc3Vw L2N5Z3dpbi9ob29rYXBpLmNjCTExIFNlcCAyMDA4IDA0OjM0OjIzIC0wMDAw CTEuMTkKKysrIHdpbnN1cC9jeWd3aW4vaG9va2FwaS5jYwk5IEZlYiAyMDEx IDEzOjQ3OjU5IC0wMDAwCkBAIC0yNTIsNyArMjUyLDcgQEAKICAgZmgub3Jp Z2ZuID0gTlVMTDsKICAgZmguaG9va2ZuID0gZm47CiAgIGNoYXIgKmJ1ZiA9 IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChuYW1lKSArIHNpemVvZiAoIl82 NCIpKTsKLSAgaW50IGk7CisgIGludCBpID0gLTE7CiAgIC8vIEl0ZXJhdGUg dGhyb3VnaCBlYWNoIGltcG9ydCBkZXNjcmlwdG9yLCBhbmQgcmVkaXJlY3Qg aWYgYXBwcm9wcmlhdGUKICAgZm9yIChQSU1BR0VfSU1QT1JUX0RFU0NSSVBU T1IgcGQgPSBwZGZpcnN0OyBwZC0+Rmlyc3RUaHVuazsgcGQrKykKICAgICB7 CkluZGV4OiB3aW5zdXAvY3lnd2luL3N5c2NhbGxzLmNjCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3ln d2luL3N5c2NhbGxzLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjU3Mwpk aWZmIC11IC1yMS41NzMgc3lzY2FsbHMuY2MKLS0tIHdpbnN1cC9jeWd3aW4v c3lzY2FsbHMuY2MJMzEgSmFuIDIwMTEgMTM6NTg6NTkgLTAwMDAJMS41NzMK KysrIHdpbnN1cC9jeWd3aW4vc3lzY2FsbHMuY2MJOSBGZWIgMjAxMSAxMzo0 ODowMSAtMDAwMApAQCAtMTU2OSw3ICsxNTY5LDcgQEAKIH0KIAogLyogQ3ln d2luIGludGVybmFsICovCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxs IF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBzdGF0X3dvcmtlciAo cGF0aF9jb252ICZwYywgc3RydWN0IF9fc3RhdDY0ICpidWYpCiB7CiAgIGlu dCByZXMgPSAtMTsKQEAgLTM3NjUsOCArMzc2NSwxMiBAQAogICAgIHN0YXR1 cyA9IFV1aWRDcmVhdGUgKCZVdWlkKTsKICAgaWYgKHN0YXR1cyA9PSBSUENf U19PSykKICAgICB7Ci0gICAgICBkYXRhWzRdID0gKih1bnNpZ25lZCAqKSZV dWlkLkRhdGE0WzJdOwotICAgICAgZGF0YVs1XSA9ICoodW5zaWduZWQgc2hv cnQgKikmVXVpZC5EYXRhNFs2XTsKKyAgICAgIHVuc2lnbmVkIGQ0OworICAg ICAgdW5zaWduZWQgc2hvcnQgZDU7CisgICAgICBtZW1jcHkgKCZkNCwgJlV1 aWQuRGF0YTRbMl0sIHNpemVvZiAodW5zaWduZWQpKTsKKyAgICAgIG1lbWNw eSAoJmQ1LCAmVXVpZC5EYXRhNFs2XSwgc2l6ZW9mICh1bnNpZ25lZCBzaG9y dCkpOworICAgICAgZGF0YVs0XSA9IGQ0OworICAgICAgZGF0YVs1XSA9IGQ1 OwogICAgICAgLy8gVW5mb3J0dW5hdGVseSBXaW5kb3dzIHdpbGwgc29tZXRp bWVzIHBpY2sgYSB2aXJ0dWFsIEV0aGVybmV0IGNhcmQKICAgICAgIC8vIGUu Zy4gVk1XYXJlIFZpcnR1YWwgRXRoZXJuZXQgQWRhcHRvcgogICAgICAgZGVi dWdfcHJpbnRmICgiTUFDIGFkZHJlc3Mgb2YgZmlyc3QgRXRoZXJuZXQgY2Fy ZDogJTAyeDolMDJ4OiUwMng6JTAyeDolMDJ4OiUwMngiLApJbmRleDogd2lu c3VwL2N5Z3dpbi9pbmNsdWRlL2N5Z3dpbi9pbjYuaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dp bi9pbmNsdWRlL2N5Z3dpbi9pbjYuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24g MS42CmRpZmYgLXUgLXIxLjYgaW42LmgKLS0tIHdpbnN1cC9jeWd3aW4vaW5j bHVkZS9jeWd3aW4vaW42LmgJMTggSmFuIDIwMDcgMTA6MjU6NDAgLTAwMDAJ MS42CisrKyB3aW5zdXAvY3lnd2luL2luY2x1ZGUvY3lnd2luL2luNi5oCTkg RmViIDIwMTEgMTM6NDg6MDEgLTAwMDAKQEAgLTE2LDEwICsxNiw3IEBACiAj ZGVmaW5lIElORVQ2X0FERFJTVFJMRU4gNDYKIAogI2RlZmluZSBJTjZfQVJF X0FERFJfRVFVQUwoYSwgYikgXAotCSgoKGNvbnN0IHVpbnQzMl90ICopKGEp KVswXSA9PSAoKGNvbnN0IHVpbnQzMl90ICopKGIpKVswXSBcCi0JICYmICgo Y29uc3QgdWludDMyX3QgKikoYSkpWzFdID09ICgoY29uc3QgdWludDMyX3Qg KikoYikpWzFdIFwKLQkgJiYgKChjb25zdCB1aW50MzJfdCAqKShhKSlbMl0g PT0gKChjb25zdCB1aW50MzJfdCAqKShiKSlbMl0gXAotCSAmJiAoKGNvbnN0 IHVpbnQzMl90ICopKGEpKVszXSA9PSAoKGNvbnN0IHVpbnQzMl90ICopKGIp KVszXSkKKwkoIW1lbWNtcCAoKGEpLCAoYiksIDQgKiBzaXplb2YgKHVpbnQz Ml90KSkpCiAKICNkZWZpbmUgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYWRk cikgXAogCSgoKGNvbnN0IHVpbnQzMl90ICopKGFkZHIpKVswXSA9PSAwIFwK SW5kZXg6IHdpbnN1cC9jeWd3aW4vcGFzc3dkLmNjCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2lu L3Bhc3N3ZC5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS44NgpkaWZmIC11 IC1yMS44NiBwYXNzd2QuY2MKLS0tIHdpbnN1cC9jeWd3aW4vcGFzc3dkLmNj CTI4IFNlcCAyMDEwIDE0OjQ5OjMxIC0wMDAwCTEuODYKKysrIHdpbnN1cC9j eWd3aW4vcGFzc3dkLmNjCTkgRmViIDIwMTEgMTM6NDg6MDAgLTAwMDAKQEAg LTk4LDExICs5OCwxNCBAQAogICAgIHsKICAgICAgIGVuZHB0ciA9IHN0cmNo ciAoc2lkX3N0cmluZyArIDIsIDApIC0gMTsKICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgcHIuY3Vycl9saW5lczsgaSsrKQotCWlmICgocHcgPSBwYXNz d2RfYnVmICsgaSktPnB3X2RpciA+IHB3LT5wd19nZWNvcyArIDgpCi0JICBm b3IgKHB0cjEgPSBlbmRwdHIsIHB0cjIgPSBwdy0+cHdfZGlyIC0gMjsKLQkg ICAgICAgKnB0cjEgPT0gKnB0cjI7IHB0cjItLSkKKwl7CisJICBwdyA9IHBh c3N3ZF9idWYgKyBpOworCSAgaWYgKHB3LT5wd19kaXIgPiBwdy0+cHdfZ2Vj b3MgKyA4KQorCSAgICBmb3IgKHB0cjEgPSBlbmRwdHIsIHB0cjIgPSBwdy0+ cHdfZGlyIC0gMjsKKwkgICAgICAqcHRyMSA9PSAqcHRyMjsgcHRyMi0tKQog CSAgICBpZiAoISotLXB0cjEpCiAJICAgICAgcmV0dXJuIHB3OworCX0KICAg ICB9CiAgIHJldHVybiBOVUxMOwogfQkKSW5kZXg6IHdpbnN1cC9jeWd3aW4v Y3lnaGVhcC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9jeWdoZWFwLmNjLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjE1NQpkaWZmIC11IC1yMS4xNTUgY3lnaGVhcC5j YwotLS0gd2luc3VwL2N5Z3dpbi9jeWdoZWFwLmNjCTMxIE1heSAyMDEwIDE4 OjUyOjAyIC0wMDAwCTEuMTU1CisrKyB3aW5zdXAvY3lnd2luL2N5Z2hlYXAu Y2MJOSBGZWIgMjAxMSAxMzo0Nzo1NyAtMDAwMApAQCAtMTc4LDEwICsxNzgs MTAgQEAKIAogLyogQ29weXJpZ2h0IChDKSAxOTk3LCAyMDAwIERKIERlbG9y aWUgKi8KIAotc3RhdGljIHZvaWQgKl9jbWFsbG9jICh1bnNpZ25lZCBzaXpl KSBfX2F0dHJpYnV0ZSAoKHJlZ3Bhcm0oMSkpKTsKLXN0YXRpYyB2b2lkICpf X3N0ZGNhbGwgX2NyZWFsbG9jICh2b2lkICpwdHIsIHVuc2lnbmVkIHNpemUp IF9fYXR0cmlidXRlICgocmVncGFybSgyKSkpOworc3RhdGljIHZvaWQgKl9f c3RkY2FsbCBfY21hbGxvYyAodW5zaWduZWQgc2l6ZSkgX19hdHRyaWJ1dGVf XyAoKHJlZ3Bhcm0oMSkpKTsKK3N0YXRpYyB2b2lkICpfX3N0ZGNhbGwgX2Ny ZWFsbG9jICh2b2lkICpwdHIsIHVuc2lnbmVkIHNpemUpIF9fYXR0cmlidXRl X18gKChyZWdwYXJtKDIpKSk7CiAKLXN0YXRpYyB2b2lkICpfX3N0ZGNhbGwK K3N0YXRpYyB2b2lkICpfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bh cm0oMSkpKQogX2NtYWxsb2MgKHVuc2lnbmVkIHNpemUpCiB7CiAgIF9jbWFs bG9jX2VudHJ5ICpydmM7CkBAIC0yMTUsNyArMjE1LDcgQEAKICAgcmV0dXJu IHJ2Yy0+ZGF0YTsKIH0KIAotc3RhdGljIHZvaWQgX19zdGRjYWxsCitzdGF0 aWMgdm9pZCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXygocmVncGFybSgxKSkp CiBfY2ZyZWUgKHZvaWQgKnB0cikKIHsKICAgY3lnaGVhcF9wcm90ZWN0LmFj cXVpcmUgKCk7CkBAIC0yMjYsNyArMjI2LDcgQEAKICAgY3lnaGVhcF9wcm90 ZWN0LnJlbGVhc2UgKCk7CiB9CiAKLXN0YXRpYyB2b2lkICpfX3N0ZGNhbGwK K3N0YXRpYyB2b2lkICpfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bh cm0oMikpKQogX2NyZWFsbG9jICh2b2lkICpwdHIsIHVuc2lnbmVkIHNpemUp CiB7CiAgIHZvaWQgKm5ld3B0cjsKQEAgLTI5NSw3ICsyOTUsNyBAQAogICBy ZXR1cm4gY21hbGxvYyAoeCwgbiwgImNtYWxsb2MiKTsKIH0KIAotaW5saW5l IHN0YXRpYyB2b2lkICoKK2lubGluZSBzdGF0aWMgdm9pZCAqIF9fc3RkY2Fs bCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgyKSkpCiBjcmVhbGxvYyAodm9p ZCAqcywgRFdPUkQgbiwgY29uc3QgY2hhciAqZm4pCiB7CiAgIE1BTExPQ19D SEVDSzsKQEAgLTMwOSwxOSArMzA5LDE5IEBACiAgIHJldHVybiBjcmV0dXJu ICh0LCBjLCBuLCBmbik7CiB9CiAKLWV4dGVybiAiQyIgdm9pZCAqX19zdGRj YWxsCitleHRlcm4gIkMiIHZvaWQgKl9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9f ICgocmVncGFybSgyKSkpCiBjcmVhbGxvYyAodm9pZCAqcywgRFdPUkQgbikK IHsKICAgcmV0dXJuIGNyZWFsbG9jIChzLCBuLCBOVUxMKTsKIH0KIAotZXh0 ZXJuICJDIiB2b2lkICpfX3N0ZGNhbGwKK2V4dGVybiAiQyIgdm9pZCAqX19z dGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDIpKSkKIGNyZWFsbG9j X2Fib3J0ICh2b2lkICpzLCBEV09SRCBuKQogewogICByZXR1cm4gY3JlYWxs b2MgKHMsIG4sICJjcmVhbGxvYyIpOwogfQogCi1leHRlcm4gIkMiIHZvaWQg X19zdGRjYWxsCitleHRlcm4gIkMiIHZvaWQgX19zdGRjYWxsIF9fYXR0cmli dXRlX18gKChyZWdwYXJtKDEpKSkKIGNmcmVlICh2b2lkICpzKQogewogICBh c3NlcnQgKCFpbmhlYXAgKHMpKTsKQEAgLTMyOSw3ICszMjksNyBAQAogICBN QUxMT0NfQ0hFQ0s7CiB9CiAKLWV4dGVybiAiQyIgdm9pZCBfX3N0ZGNhbGwK K2V4dGVybiAiQyIgdm9pZCBfX3N0ZGNhbGwgIF9fYXR0cmlidXRlX18gKChy ZWdwYXJtKDIpKSkKIGNmcmVlX2FuZF9zZXQgKGNoYXIgKiZzLCBjaGFyICp3 aGF0KQogewogICBpZiAocyAmJiBzICE9IGFsbW9zdF9udWxsKQpAQCAtMzQ5 LDE5ICszNDksMTkgQEAKICAgcmV0dXJuIGNyZXR1cm4gKHgsIGMsIG4sIGZu KTsKIH0KIAotZXh0ZXJuICJDIiB2b2lkICpfX3N0ZGNhbGwKK2V4dGVybiAi QyIgdm9pZCAqX19zdGRjYWxsICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgz KSkpCiBjY2FsbG9jIChjeWdoZWFwX3R5cGVzIHgsIERXT1JEIG4sIERXT1JE IHNpemUpCiB7CiAgIHJldHVybiBjY2FsbG9jICh4LCBuLCBzaXplLCBOVUxM KTsKIH0KIAotZXh0ZXJuICJDIiB2b2lkICpfX3N0ZGNhbGwKK2V4dGVybiAi QyIgdm9pZCAqX19zdGRjYWxsICBfX2F0dHJpYnV0ZV9fICgocmVncGFybSgz KSkpCiBjY2FsbG9jX2Fib3J0IChjeWdoZWFwX3R5cGVzIHgsIERXT1JEIG4s IERXT1JEIHNpemUpCiB7CiAgIHJldHVybiBjY2FsbG9jICh4LCBuLCBzaXpl LCAiY2NhbGxvYyIpOwogfQogCi1leHRlcm4gIkMiIFBXQ0hBUiBfX3N0ZGNh bGwKK2V4dGVybiAiQyIgUFdDSEFSIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9f ICgocmVncGFybSgxKSkpCiBjd2NzZHVwIChjb25zdCBQV0NIQVIgcykKIHsK ICAgTUFMTE9DX0NIRUNLOwpAQCAtMzczLDcgKzM3Myw3IEBACiAgIHJldHVy biBwOwogfQogCi1leHRlcm4gIkMiIFBXQ0hBUiBfX3N0ZGNhbGwKK2V4dGVy biAiQyIgUFdDSEFSIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFy bSgxKSkpCiBjd2NzZHVwMSAoY29uc3QgUFdDSEFSIHMpCiB7CiAgIE1BTExP Q19DSEVDSzsKQEAgLTM4NSw3ICszODUsNyBAQAogICByZXR1cm4gcDsKIH0K IAotZXh0ZXJuICJDIiBjaGFyICpfX3N0ZGNhbGwKK2V4dGVybiAiQyIgY2hh ciAqX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSkKIGNz dHJkdXAgKGNvbnN0IGNoYXIgKnMpCiB7CiAgIE1BTExPQ19DSEVDSzsKQEAg LTM5Nyw3ICszOTcsNyBAQAogICByZXR1cm4gcDsKIH0KIAotZXh0ZXJuICJD IiBjaGFyICpfX3N0ZGNhbGwKK2V4dGVybiAiQyIgY2hhciAqX19zdGRjYWxs IF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDEpKSkKIGNzdHJkdXAxIChjb25z dCBjaGFyICpzKQogewogICBNQUxMT0NfQ0hFQ0s7CkluZGV4OiB3aW5zdXAv Y3lnd2luL2RjcnQwLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL2RjcnQwLmNjLHYKcmV0 cmlldmluZyByZXZpc2lvbiAxLjM5MApkaWZmIC11IC1yMS4zOTAgZGNydDAu Y2MKLS0tIHdpbnN1cC9jeWd3aW4vZGNydDAuY2MJMjYgRGVjIDIwMTAgMjE6 MTE6MzcgLTAwMDAJMS4zOTAKKysrIHdpbnN1cC9jeWd3aW4vZGNydDAuY2MJ OSBGZWIgMjAxMSAxMzo0Nzo1NyAtMDAwMApAQCAtMTAzNCw3ICsxMDM0LDcg QEAKICAgc2lnX2Rpc3BhdGNoX3BlbmRpbmcgKHRydWUpOwogfQogCi12b2lk IF9fc3RkY2FsbAordm9pZCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJl Z3Bhcm0gKDEpLCBub3JldHVybikpCiBkb19leGl0IChpbnQgc3RhdHVzKQog ewogICBzeXNjYWxsX3ByaW50ZiAoImRvX2V4aXQgKCVkKSwgZXhpdF9zdGF0 ZSAlZCIsIHN0YXR1cywgZXhpdF9zdGF0ZSk7CkBAIC0xMTk4LDcgKzExOTgs NyBAQAogfQogCiAjaWZkZWYgREVCVUdHSU5HCi12b2lkIF9fc3RkY2FsbAor dm9pZCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXygocmVncGFybSAoMSkpKQog Y3lnYmVuY2ggKGNvbnN0IGNoYXIgKnMpCiB7CiAgIGlmIChHZXRFbnZpcm9u bWVudFZhcmlhYmxlQSAoIkNZR1dJTl9CRU5DSCIsIE5VTEwsIDApKQpJbmRl eDogd2luc3VwL2N5Z3dpbi9kZWJ1Zy5jYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9kZWJ1 Zy5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS42MwpkaWZmIC11IC1yMS42 MyBkZWJ1Zy5jYwotLS0gd2luc3VwL2N5Z3dpbi9kZWJ1Zy5jYwk1IEF1ZyAy MDA5IDA0OjQ0OjI3IC0wMDAwCTEuNjMKKysrIHdpbnN1cC9jeWd3aW4vZGVi dWcuY2MJOSBGZWIgMjAxMSAxMzo0Nzo1NyAtMDAwMApAQCAtMTAzLDcgKzEw Myw3IEBACiAgIHJldHVybiBOVUxMOwogfQogCi12b2lkIF9fc3RkY2FsbAor dm9pZCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkK IG1vZGlmeV9oYW5kbGUgKGNvbnN0IGNoYXIgKmZ1bmMsIGludCBsbiwgSEFO RExFIGgsIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgaW5oKQogewogICBsb2Nr X2RlYnVnIGhlcmU7CkBAIC0xMTksNyArMTE5LDcgQEAKIH0KIAogLyogQWRk IGEgaGFuZGxlIHRvIHRoZSBsaW5rZWQgbGlzdCBvZiBrbm93biBoYW5kbGVz LiAqLwotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQgX19zdGRjYWxsIF9fYXR0cmli dXRlX18gKChyZWdwYXJtICgzKSkpCiBhZGRfaGFuZGxlIChjb25zdCBjaGFy ICpmdW5jLCBpbnQgbG4sIEhBTkRMRSBoLCBjb25zdCBjaGFyICpuYW1lLCBi b29sIGluaCkKIHsKICAgaGFuZGxlX2xpc3QgKmhsOwpAQCAtMjEzLDcgKzIx Myw3IEBACiAKIC8qIENsb3NlIGEga25vd24gaGFuZGxlLiAgQ29tcGxhaW4g aWYgIWZvcmNlIGFuZCBjbG9zaW5nIGEga25vd24gaGFuZGxlIG9yCiAgICBp ZiB0aGUgbmFtZSBvZiB0aGUgaGFuZGxlIGJlaW5nIGNsb3NlZCBkb2VzIG5v dCBtYXRjaCB0aGUgcmVnaXN0ZXJlZCBuYW1lLiAqLwotYm9vbCBfX3N0ZGNh bGwKK2Jvb2wgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgz KSkpCiBjbG9zZV9oYW5kbGUgKGNvbnN0IGNoYXIgKmZ1bmMsIGludCBsbiwg SEFORExFIGgsIGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgZm9yY2UpCiB7CiAg IGJvb2wgcmV0OwpJbmRleDogd2luc3VwL2N5Z3dpbi9lcnJuby5jYwo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2lu c3VwL2N5Z3dpbi9lcnJuby5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS43 NQpkaWZmIC11IC1yMS43NSBlcnJuby5jYwotLS0gd2luc3VwL2N5Z3dpbi9l cnJuby5jYwkxOSBKYW4gMjAxMSAwOToxNToxNyAtMDAwMAkxLjc1CisrKyB3 aW5zdXAvY3lnd2luL2Vycm5vLmNjCTkgRmViIDIwMTEgMTM6NDc6NTcgLTAw MDAKQEAgLTMwMSw3ICszMDEsNyBAQAogaW50IE5PX0NPUFlfSU5JVCBfc3lz X25lcnIgPSBzaXplb2YgKF9zeXNfZXJybGlzdCkgLyBzaXplb2YgKF9zeXNf ZXJybGlzdFswXSk7CiB9OwogCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRj YWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDIpKSkKIGdldGVycm5vX2Zy b21fd2luX2Vycm9yIChEV09SRCBjb2RlLCBpbnQgZGVmZXJybm8pCiB7CiAg IGZvciAoaW50IGkgPSAwOyBlcnJtYXBbaV0udyAhPSAwOyArK2kpCkBAIC0z MTgsNyArMzE4LDcgQEAKIAogLyogc2V0ZXJybm9fZnJvbV93aW5fZXJyb3I6 IEdpdmVuIGEgV2luZG93cyBlcnJvciBjb2RlLCBzZXQgZXJybm8KICAgIGFz IGFwcHJvcHJpYXRlLiAqLwotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQgX19zdGRj YWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtKDMpKSkKIHNldGVycm5vX2Zy b21fd2luX2Vycm9yIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgRFdP UkQgY29kZSkKIHsKICAgc3lzY2FsbF9wcmludGYgKCIlczolZCB3aW5kb3dz IGVycm9yICVkIiwgZmlsZSwgbGluZSwgY29kZSk7CkBAIC0zMjcsNyArMzI3 LDcgQEAKIAogLyogc2V0ZXJybm9fZnJvbV9udF9zdGF0dXM6IEdpdmVuIGEg TlQgc3RhdHVzIGNvZGUsIHNldCBlcnJubwogICAgYXMgYXBwcm9wcmlhdGUu ICovCi12b2lkIF9fc3RkY2FsbAordm9pZCBfX3N0ZGNhbGwgX19hdHRyaWJ1 dGVfXyAoKHJlZ3Bhcm0oMykpKQogc2V0ZXJybm9fZnJvbV9udF9zdGF0dXMg KGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBOVFNUQVRVUyBzdGF0dXMp CiB7CiAgIERXT1JEIGNvZGUgPSBSdGxOdFN0YXR1c1RvRG9zRXJyb3IgKHN0 YXR1cyk7CkBAIC0zMzgsNyArMzM4LDcgQEAKIH0KIAogLyogc2V0ZXJybm86 IFNldCBgZXJybm8nIGJhc2VkIG9uIEdldExhc3RFcnJvciAoKS4gKi8KLXZv aWQgX19zdGRjYWxsCit2b2lkIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgo cmVncGFybSgyKSkpCiBzZXRlcnJubyAoY29uc3QgY2hhciAqZmlsZSwgaW50 IGxpbmUpCiB7CiAgIHNldGVycm5vX2Zyb21fd2luX2Vycm9yIChmaWxlLCBs aW5lLCBHZXRMYXN0RXJyb3IgKCkpOwpJbmRleDogd2luc3VwL2N5Z3dpbi9l eGNlcHRpb25zLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL2V4Y2VwdGlvbnMuY2Msdgpy ZXRyaWV2aW5nIHJldmlzaW9uIDEuMzUxCmRpZmYgLXUgLXIxLjM1MSBleGNl cHRpb25zLmNjCi0tLSB3aW5zdXAvY3lnd2luL2V4Y2VwdGlvbnMuY2MJMjQg T2N0IDIwMTAgMTU6MjY6MDUgLTAwMDAJMS4zNTEKKysrIHdpbnN1cC9jeWd3 aW4vZXhjZXB0aW9ucy5jYwk5IEZlYiAyMDExIDEzOjQ3OjU3IC0wMDAwCkBA IC00NTAsNyArNDUzLDcgQEAKIAogZXh0ZXJuICJDIiBEV09SRCBfX3N0ZGNh bGwgUnRsVW53aW5kICh2b2lkICosIHZvaWQgKiwgdm9pZCAqLCBEV09SRCk7 CiBzdGF0aWMgdm9pZCBfX3N0ZGNhbGwgcnRsX3Vud2luZCAoZXhjZXB0aW9u X2xpc3QgKiwgUEVYQ0VQVElPTl9SRUNPUkQpIF9fYXR0cmlidXRlX18gKChu b2lubGluZSwgcmVncGFybSAoMykpKTsKLXZvaWQgX19zdGRjYWxsCit2b2lk IF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUsIHJlZ3Bhcm0g KDMpKSkKIHJ0bF91bndpbmQgKGV4Y2VwdGlvbl9saXN0ICpmcmFtZSwgUEVY Q0VQVElPTl9SRUNPUkQgZSkKIHsKICAgX19hc21fXyAoIlxuXApAQCAtNzk3 LDcgKzgwMCw3IEBACiAgIHJldHVybiBpbnRlcnJ1cHRlZDsKIH0KIAotdm9p ZCBfX3N0ZGNhbGwKK3ZvaWQgX19zdGRjYWxsIF9fYXR0cmlidXRlX18oKHJl Z3Bhcm0oMykpKQogX2N5Z3Rsczo6aW50ZXJydXB0X3NldHVwIChpbnQgc2ln LCB2b2lkICpoYW5kbGVyLCBzdHJ1Y3Qgc2lnYWN0aW9uJiBzaWdhKQogewog ICBwdXNoICgoX19zdGFja190KSBzaWdkZWxheWVkKTsKQEAgLTExNTQsNyAr MTE1Nyw3IEBACiAgIG1hc2tfc3luYy5yZWxlYXNlICgpOwogfQogCi1pbnQg X19zdGRjYWxsCitpbnQgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdw YXJtICgxKSkpCiBzaWdwYWNrZXQ6OnByb2Nlc3MgKCkKIHsKICAgRFdPUkQg Y29udGludWVfbm93OwpJbmRleDogd2luc3VwL2N5Z3dpbi9maGFuZGxlci5j Ywo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9z cmMvd2luc3VwL2N5Z3dpbi9maGFuZGxlci5jYyx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4zNzMKZGlmZiAtdSAtcjEuMzczIGZoYW5kbGVyLmNjCi0tLSB3 aW5zdXAvY3lnd2luL2ZoYW5kbGVyLmNjCTEgRmViIDIwMTEgMDg6NDY6NDgg LTAwMDAJMS4zNzMKKysrIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXIuY2MJOSBG ZWIgMjAxMSAxMzo0Nzo1NyAtMDAwMApAQCAtNjQ0LDcgKzY0NCw3IEBACiAg ICBhbiBcbi4gIElmIGxhc3QgY2hhciBpcyBhbiBcciwgbG9vayBhaGVhZCBv bmUgbW9yZSBjaGFyLCBpZiBcbiB0aGVuCiAgICBtb2RpZnkgXHIsIGlmIG5v dCwgcmVtZW1iZXIgY2hhci4KICovCi12b2lkIF9fc3RkY2FsbAordm9pZCBf X3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZoYW5k bGVyX2Jhc2U6OnJlYWQgKHZvaWQgKmluX3B0ciwgc2l6ZV90JiBsZW4pCiB7 CiAgIGNoYXIgKnB0ciA9IChjaGFyICopIGluX3B0cjsKQEAgLTEwMDYsMTQg KzEwMDYsMTQgQEAKICAgcmV0dXJuIHJlczsKIH0KIAotc3NpemVfdCBfX3N0 ZGNhbGwKK3NzaXplX3QgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdw YXJtICgzKSkpCiBmaGFuZGxlcl9iYXNlOjpwcmVhZCAodm9pZCAqLCBzaXpl X3QsIF9vZmY2NF90KQogewogICBzZXRfZXJybm8gKEVTUElQRSk7CiAgIHJl dHVybiAtMTsKIH0KIAotc3NpemVfdCBfX3N0ZGNhbGwKK3NzaXplX3QgX19z dGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgzKSkpCiBmaGFuZGxl cl9iYXNlOjpwd3JpdGUgKHZvaWQgKiwgc2l6ZV90LCBfb2ZmNjRfdCkKIHsK ICAgc2V0X2Vycm5vIChFU1BJUEUpOwpAQCAtMTA3OCw3ICsxMDc4LDcgQEAK ICAgcmV0dXJuIC0xOwogfQogCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRj YWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBmaGFuZGxlcl9i YXNlOjpmc3RhdCAoc3RydWN0IF9fc3RhdDY0ICpidWYpCiB7CiAgIGRlYnVn X3ByaW50ZiAoImhlcmUiKTsKQEAgLTExMjEsNyArMTEyMSw3IEBACiAgIHJl dHVybiAwOwogfQogCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxsIF9f YXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBmaGFuZGxlcl9iYXNlOjpm c3RhdHZmcyAoc3RydWN0IHN0YXR2ZnMgKnNmcykKIHsKICAgLyogSWYgd2Ug aGl0IHRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiwgaXQncyBzb21lIGRldmlj ZSBpbiAvZGV2LgpAQCAtMTc5NCw3ICsxNzk0LDcgQEAKICAgcmV0dXJuIHJl czsKIH0KIAotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQgX19zdGRjYWxsIF9fYXR0 cmlidXRlX18gKChyZWdwYXJtICgzKSkpCiBmaGFuZGxlcl9iYXNlX292ZXJs YXBwZWQ6OnJlYWRfb3ZlcmxhcHBlZCAodm9pZCAqcHRyLCBzaXplX3QmIGxl bikKIHsKICAgRFdPUkQgbmJ5dGVzOwpJbmRleDogd2luc3VwL2N5Z3dpbi9m aGFuZGxlcl9jbGlwYm9hcmQuY2MKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpS Q1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJf Y2xpcGJvYXJkLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQ0CmRpZmYg LXUgLXIxLjQ0IGZoYW5kbGVyX2NsaXBib2FyZC5jYwotLS0gd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9jbGlwYm9hcmQuY2MJMjQgSnVsIDIwMDkgMjA6NTQ6 MzMgLTAwMDAJMS40NAorKysgd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9jbGlw Ym9hcmQuY2MJOSBGZWIgMjAxMSAxMzo0Nzo1NyAtMDAwMApAQCAtMTgwLDcg KzE4MCw3IEBACiAgICAgfQogfQogCi12b2lkIF9fc3RkY2FsbAordm9pZCBf X3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZoYW5k bGVyX2Rldl9jbGlwYm9hcmQ6OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBs ZW4pCiB7CiAgIEhHTE9CQUwgaGdsYjsKSW5kZXg6IHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfY29uc29sZS5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9j b25zb2xlLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIyMgpkaWZmIC11 IC1yMS4yMjIgZmhhbmRsZXJfY29uc29sZS5jYwotLS0gd2luc3VwL2N5Z3dp bi9maGFuZGxlcl9jb25zb2xlLmNjCTcgRmViIDIwMTEgMTE6MTg6MTkgLTAw MDAJMS4yMjIKKysrIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfY29uc29sZS5j Ywk5IEZlYiAyMDExIDEzOjQ3OjU4IC0wMDAwCkBAIC0yNDksNyArMjQ5LDcg QEAKIAkgICAgICAgICB8fCBkZXZfc3RhdGUtPnVzZV9tb3VzZSA+PSAzKSk7 CiB9CiAKLXZvaWQgX19zdGRjYWxsCit2b2lkIF9fc3RkY2FsbCBfX2F0dHJp YnV0ZV9fICgocmVncGFybSAoMykpKQogZmhhbmRsZXJfY29uc29sZTo6cmVh ZCAodm9pZCAqcHYsIHNpemVfdCYgYnVmbGVuKQogewogICBIQU5ETEUgaCA9 IGdldF9pb19oYW5kbGUgKCk7CkluZGV4OiB3aW5zdXAvY3lnd2luL2ZoYW5k bGVyX2Rpc2tfZmlsZS5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBm aWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9kaXNr X2ZpbGUuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzQ4CmRpZmYgLXUg LXIxLjM0OCBmaGFuZGxlcl9kaXNrX2ZpbGUuY2MKLS0tIHdpbnN1cC9jeWd3 aW4vZmhhbmRsZXJfZGlza19maWxlLmNjCTI2IEphbiAyMDExIDEwOjU1OjEz IC0wMDAwCTEuMzQ4CisrKyB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2Rpc2tf ZmlsZS5jYwk5IEZlYiAyMDExIDEzOjQ3OjU4IC0wMDAwCkBAIC0yOTAsNyAr MjkwLDcgQEAKICAgIFRoaXMgcmV0dXJucyB0aGUgY29udGVudCBvZiBhIHN0 cnVjdCBmYXR0cjMgYXMgZGVmaW5lZCBpbiBSRkMgMTgxMy4KICAgIFRoZSBj b250ZW50IGlzIHRoZSBORlMgZXF1aXZhbGVudCBvZiBzdHJ1Y3Qgc3RhdC4g c28gdGhlcmUncyBub3QgbXVjaAogICAgdG8gZG8gaGVyZSBleGNlcHQgZm9y IGNvcHlpbmcuICovCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxsIF9f YXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBmaGFuZGxlcl9iYXNlOjpm c3RhdF9ieV9uZnNfZWEgKHN0cnVjdCBfX3N0YXQ2NCAqYnVmKQogewogICBm YXR0cjMgKm5mc19hdHRyID0gcGMubmZzYXR0ciAoKTsKQEAgLTMzMCw3ICsz MzAsNyBAQAogICByZXR1cm4gMDsKIH0KIAotaW50IF9fc3RkY2FsbAoraW50 IF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMikpKQogZmhh bmRsZXJfYmFzZTo6ZnN0YXRfYnlfaGFuZGxlIChzdHJ1Y3QgX19zdGF0NjQg KmJ1ZikKIHsKICAgLyogRG9uJ3QgdXNlIEZpbGVBbGxJbmZvcm1hdGlvbiBp bmZvIGNsYXNzLiAgSXQgcmV0dXJucyBhIHBhdGhuYW1lIHJhdGhlcgpAQCAt Mzg5LDcgKzM4OSw3IEBACiAgIHJldHVybiBmc3RhdF9oZWxwZXIgKGJ1Ziwg ZnNpLk51bWJlck9mTGlua3MpOwogfQogCi1pbnQgX19zdGRjYWxsCitpbnQg X19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBmaGFu ZGxlcl9iYXNlOjpmc3RhdF9ieV9uYW1lIChzdHJ1Y3QgX19zdGF0NjQgKmJ1 ZikKIHsKICAgTlRTVEFUVVMgc3RhdHVzOwpAQCAtNDM0LDcgKzQzNCw3IEBA CiAgIHJldHVybiBmc3RhdF9oZWxwZXIgKGJ1ZiwgMSk7CiB9CiAKLWludCBf X3N0ZGNhbGwKK2ludCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bh cm0gKDIpKSkKIGZoYW5kbGVyX2Jhc2U6OmZzdGF0X2ZzIChzdHJ1Y3QgX19z dGF0NjQgKmJ1ZikKIHsKICAgaW50IHJlcyA9IC0xOwpAQCAtNDc4LDcgKzQ3 OCw3IEBACiAgIHJldHVybiByZXM7CiB9CiAKLWludCBfX3N0ZGNhbGwKK2lu dCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZo YW5kbGVyX2Jhc2U6OmZzdGF0X2hlbHBlciAoc3RydWN0IF9fc3RhdDY0ICpi dWYsCiAJCQkgICAgIERXT1JEIG5OdW1iZXJPZkxpbmtzKQogewpAQCAtNjY3 LDEzICs2NjcsMTMgQEAKICAgcmV0dXJuIDA7CiB9CiAKLWludCBfX3N0ZGNh bGwKK2ludCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDIp KSkKIGZoYW5kbGVyX2Rpc2tfZmlsZTo6ZnN0YXQgKHN0cnVjdCBfX3N0YXQ2 NCAqYnVmKQogewogICByZXR1cm4gZnN0YXRfZnMgKGJ1Zik7CiB9CiAKLWlu dCBfX3N0ZGNhbGwKK2ludCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJl Z3Bhcm0gKDIpKSkKIGZoYW5kbGVyX2Rpc2tfZmlsZTo6ZnN0YXR2ZnMgKHN0 cnVjdCBzdGF0dmZzICpzZnMpCiB7CiAgIGludCByZXQgPSAtMSwgb3BlbmVk ID0gMDsKQEAgLTc2NSw3ICs3NjUsNyBAQAogICByZXR1cm4gcmV0OwogfQog Ci1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxsIF9fYXR0cmlidXRlX18g KChyZWdwYXJtICgxKSkpCiBmaGFuZGxlcl9kaXNrX2ZpbGU6OmZjaG1vZCAo bW9kZV90IG1vZGUpCiB7CiAgIGV4dGVybiBpbnQgY2htb2RfZGV2aWNlIChw YXRoX2NvbnYmIHBjLCBtb2RlX3QgbW9kZSk7CkBAIC04NzMsNyArODczLDcg QEAKICAgcmV0dXJuIHJlczsKIH0KIAotaW50IF9fc3RkY2FsbAoraW50IF9f c3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMikpKQogZmhhbmRs ZXJfZGlza19maWxlOjpmY2hvd24gKF9fdWlkMzJfdCB1aWQsIF9fZ2lkMzJf dCBnaWQpCiB7CiAgIGludCBvcmV0ID0gMDsKQEAgLTk0MCw3ICs5NDAsNyBA QAogICByZXR1cm4gcmVzOwogfQogCi1pbnQgX3N0ZGNhbGwKK2ludCBfc3Rk Y2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMykpKQogZmhhbmRsZXJf ZGlza19maWxlOjpmYWNsIChpbnQgY21kLCBpbnQgbmVudHJpZXMsIF9fYWNs ZW50MzJfdCAqYWNsYnVmcCkKIHsKICAgaW50IHJlcyA9IC0xOwpAQCAtMTQx Miw3ICsxNDEyLDcgQEAKICAgcmV0dXJuIHJlczsKIH0KIAotc3NpemVfdCBf X3N0ZGNhbGwKK3NzaXplX3QgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChy ZWdwYXJtICgzKSkpCiBmaGFuZGxlcl9kaXNrX2ZpbGU6OnByZWFkICh2b2lk ICpidWYsIHNpemVfdCBjb3VudCwgX29mZjY0X3Qgb2Zmc2V0KQogewogICBz c2l6ZV90IHJlczsKQEAgLTE0MzIsNyArMTQzMiw3IEBACiAgIHJldHVybiBy ZXM7CiB9CiAKLXNzaXplX3QgX19zdGRjYWxsCitzc2l6ZV90IF9fc3RkY2Fs bCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMykpKQogZmhhbmRsZXJfZGlz a19maWxlOjpwd3JpdGUgKHZvaWQgKmJ1Ziwgc2l6ZV90IGNvdW50LCBfb2Zm NjRfdCBvZmZzZXQpCiB7CiAgIGludCByZXM7CkBAIC0xNzEwLDcgKzE3MTAs NyBAQAogICByZXR1cm4gcmVzOwogfQogCi1fX2lubzY0X3QgX19zdGRjYWxs CitfX2lubzY0X3QgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJt ICgyKSkpCiByZWFkZGlyX2dldF9pbm8gKGNvbnN0IGNoYXIgKnBhdGgsIGJv b2wgZG90X2RvdCkKIHsKICAgY2hhciAqZm5hbWU7CkluZGV4OiB3aW5zdXAv Y3lnd2luL2ZoYW5kbGVyX2RzcC5jYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9maGFuZGxl cl9kc3AuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNTIKZGlmZiAtdSAt cjEuNTIgZmhhbmRsZXJfZHNwLmNjCi0tLSB3aW5zdXAvY3lnd2luL2ZoYW5k bGVyX2RzcC5jYwkyNCBKdWwgMjAwOSAyMDo1NDozMyAtMDAwMAkxLjUyCisr KyB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX2RzcC5jYwk5IEZlYiAyMDExIDEz OjQ3OjU4IC0wMDAwCkBAIC0xMDQwLDcgKzEwNDAsNyBAQAogICByZXR1cm4g bGVuOwogfQogCi12b2lkIF9fc3RkY2FsbAordm9pZCBfX3N0ZGNhbGwgX19h dHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZoYW5kbGVyX2Rldl9kc3A6 OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiB7CiAgIGRlYnVnX3By aW50ZiAoInB0cj0lMDh4IGxlbj0lZCIsIHB0ciwgbGVuKTsKSW5kZXg6IHdp bnN1cC9jeWd3aW4vZmhhbmRsZXJfZmlmby5jYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9m aGFuZGxlcl9maWZvLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQzCmRp ZmYgLXUgLXIxLjQzIGZoYW5kbGVyX2ZpZm8uY2MKLS0tIHdpbnN1cC9jeWd3 aW4vZmhhbmRsZXJfZmlmby5jYwk2IEFwciAyMDEwIDE1OjA5OjQ0IC0wMDAw CTEuNDMKKysrIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfZmlmby5jYwk5IEZl YiAyMDExIDEzOjQ3OjU4IC0wMDAwCkBAIC0yODEsNyArMjgxLDcgQEAKICAg cmV0dXJuIHdhaXQgKHRydWUpID8gd3JpdGVfb3ZlcmxhcHBlZCAocHRyLCBs ZW4pIDogLTE7CiB9CiAKLWludCBfX3N0ZGNhbGwKK2ludCBfX3N0ZGNhbGwg X19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDIpKSkKIGZoYW5kbGVyX2ZpZm86 OmZzdGF0dmZzIChzdHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogewogICBmaGFuZGxl cl9kaXNrX2ZpbGUgZmggKHBjKTsKSW5kZXg6IHdpbnN1cC9jeWd3aW4vZmhh bmRsZXJfbWFpbHNsb3QuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbWFp bHNsb3QuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTIKZGlmZiAtdSAt cjEuMTIgZmhhbmRsZXJfbWFpbHNsb3QuY2MKLS0tIHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfbWFpbHNsb3QuY2MJMTQgSmFuIDIwMTAgMTg6NDY6MDEgLTAw MDAJMS4xMgorKysgd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9tYWlsc2xvdC5j Ywk5IEZlYiAyMDExIDEzOjQ3OjU4IC0wMDAwCkBAIC0yNSw3ICsyNSw3IEBA CiB7CiB9CiAKLWludCBfX3N0ZGNhbGwKK2ludCBfX3N0ZGNhbGwgX19hdHRy aWJ1dGVfXyAoKHJlZ3Bhcm0gKDIpKSkKIGZoYW5kbGVyX21haWxzbG90Ojpm c3RhdCAoc3RydWN0IF9fc3RhdDY0ICpidWYpCiB7CiAgIGRlYnVnX3ByaW50 ZiAoImhlcmUiKTsKSW5kZXg6IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbWVt LmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3Jj L3NyYy93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX21lbS5jYyx2CnJldHJpZXZp bmcgcmV2aXNpb24gMS41NgpkaWZmIC11IC1yMS41NiBmaGFuZGxlcl9tZW0u Y2MKLS0tIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfbWVtLmNjCTE0IEphbiAy MDEwIDE4OjQ2OjAxIC0wMDAwCTEuNTYKKysrIHdpbnN1cC9jeWd3aW4vZmhh bmRsZXJfbWVtLmNjCTkgRmViIDIwMTEgMTM6NDc6NTggLTAwMDAKQEAgLTE2 Miw3ICsxNjIsNyBAQAogICByZXR1cm4gdWxlbjsKIH0KIAotdm9pZCBfX3N0 ZGNhbGwKK3ZvaWQgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJt ICgzKSkpCiBmaGFuZGxlcl9kZXZfbWVtOjpyZWFkICh2b2lkICpwdHIsIHNp emVfdCYgdWxlbikKIHsKICAgaWYgKCF1bGVuIHx8IHBvcyA+PSBtZW1fc2l6 ZSkKSW5kZXg6IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcHJvY3N5cy5jYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMv d2luc3VwL2N5Z3dpbi9maGFuZGxlcl9wcm9jc3lzLmNjLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjQKZGlmZiAtdSAtcjEuNCBmaGFuZGxlcl9wcm9jc3lz LmNjCi0tLSB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Byb2NzeXMuY2MJMiBP Y3QgMjAxMCAwODo0NDowOCAtMDAwMAkxLjQKKysrIHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcHJvY3N5cy5jYwk5IEZlYiAyMDExIDEzOjQ3OjU4IC0wMDAw CkBAIC0zMTUsNyArMzE1LDcgQEAKICAgcmV0dXJuIGZoYW5kbGVyX3ZpcnR1 YWw6OmNsb3NlZGlyIChkaXIpOwogfQogCi12b2lkIF9fc3RkY2FsbAordm9p ZCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZo YW5kbGVyX3Byb2NzeXM6OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4p CiB7CiAgIE5UU1RBVFVTIHN0YXR1czsKSW5kZXg6IHdpbnN1cC9jeWd3aW4v ZmhhbmRsZXJfcmFuZG9tLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNT IGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3Jh bmRvbS5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS40MApkaWZmIC11IC1y MS40MCBmaGFuZGxlcl9yYW5kb20uY2MKLS0tIHdpbnN1cC9jeWd3aW4vZmhh bmRsZXJfcmFuZG9tLmNjCTMwIE9jdCAyMDA5IDEwOjUzOjU0IC0wMDAwCTEu NDAKKysrIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmFuZG9tLmNjCTkgRmVi IDIwMTEgMTM6NDc6NTggLTAwMDAKQEAgLTExMSw3ICsxMTEsNyBAQAogICBy ZXR1cm4gbGVuOwogfQogCi12b2lkIF9fc3RkY2FsbAordm9pZCBfX3N0ZGNh bGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZoYW5kbGVyX2Rl dl9yYW5kb206OnJlYWQgKHZvaWQgKnB0ciwgc2l6ZV90JiBsZW4pCiB7CiAg IGlmICghbGVuKQpJbmRleDogd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9yYXcu Y2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfcmF3LmNjLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjcwCmRpZmYgLXUgLXIxLjcwIGZoYW5kbGVyX3Jhdy5j YwotLS0gd2luc3VwL2N5Z3dpbi9maGFuZGxlcl9yYXcuY2MJMyBKYW4gMjAw OSAwNToxMjoyMCAtMDAwMAkxLjcwCisrKyB3aW5zdXAvY3lnd2luL2ZoYW5k bGVyX3Jhdy5jYwk5IEZlYiAyMDExIDEzOjQ3OjU4IC0wMDAwCkBAIC0zMiw3 ICszMiw3IEBACiAgICAgZGVsZXRlIFtdIGRldmJ1ZjsKIH0KIAotaW50IF9f c3RkY2FsbAoraW50IF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFy bSAoMikpKQogZmhhbmRsZXJfZGV2X3Jhdzo6ZnN0YXQgKHN0cnVjdCBfX3N0 YXQ2NCAqYnVmKQogewogICBkZWJ1Z19wcmludGYgKCJoZXJlIik7CkluZGV4 OiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3NvY2tldC5jYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5 Z3dpbi9maGFuZGxlcl9zb2NrZXQuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMjY2CmRpZmYgLXUgLXIxLjI2NiBmaGFuZGxlcl9zb2NrZXQuY2MKLS0t IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfc29ja2V0LmNjCTMxIEphbiAyMDEx IDA4OjUzOjU3IC0wMDAwCTEuMjY2CisrKyB3aW5zdXAvY3lnd2luL2ZoYW5k bGVyX3NvY2tldC5jYwk5IEZlYiAyMDExIDEzOjQ3OjU5IC0wMDAwCkBAIC03 ODMsNyArNzgzLDcgQEAKICAgcmV0dXJuIC0xOwogfQogCi1pbnQgX19zdGRj YWxsCitpbnQgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgy KSkpCiBmaGFuZGxlcl9zb2NrZXQ6OmZzdGF0IChzdHJ1Y3QgX19zdGF0NjQg KmJ1ZikKIHsKICAgaW50IHJlczsKQEAgLTgxMCw3ICs4MTAsNyBAQAogICBy ZXR1cm4gcmVzOwogfQogCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxs IF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBmaGFuZGxlcl9zb2Nr ZXQ6OmZzdGF0dmZzIChzdHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogewogICBpZiAo Z2V0X2RldmljZSAoKSA9PSBGSF9VTklYKQpJbmRleDogd2luc3VwL2N5Z3dp bi9maGFuZGxlcl90dHkuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdHR5 LmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIxNgpkaWZmIC11IC1yMS4y MTYgZmhhbmRsZXJfdHR5LmNjCi0tLSB3aW5zdXAvY3lnd2luL2ZoYW5kbGVy X3R0eS5jYwkyOSBOb3YgMjAxMCAyMDo1MTozOCAtMDAwMAkxLjIxNgorKysg d2luc3VwL2N5Z3dpbi9maGFuZGxlcl90dHkuY2MJOSBGZWIgMjAxMSAxMzo0 Nzo1OSAtMDAwMApAQCAtNzkwLDcgKzc5MCw3IEBACiAgIHJldHVybiB0b3dy aXRlOwogfQogCi12b2lkIF9fc3RkY2FsbAordm9pZCBfX3N0ZGNhbGwgX19h dHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZoYW5kbGVyX3R0eV9zbGF2 ZTo6cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsKICAgaW50IHRv dGFscmVhZCA9IDA7CkBAIC0xMTgzLDcgKzExODMsNyBAQAogICByZXR1cm4g cmV0dmFsOwogfQogCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxsIF9f YXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBmaGFuZGxlcl90dHlfc2xh dmU6OmZzdGF0IChzdHJ1Y3QgX19zdGF0NjQgKnN0KQogewogICBmaGFuZGxl cl9iYXNlOjpmc3RhdCAoc3QpOwpAQCAtMTI4OSw3ICsxMjg5LDcgQEAKICAg Y2xvc2VfbWF5YmUgKGludXNlKTsKIH0KIAotaW50IF9fc3RkY2FsbAoraW50 IF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMSkpKQogZmhh bmRsZXJfdHR5X3NsYXZlOjpmY2htb2QgKG1vZGVfdCBtb2RlKQogewogICBp bnQgcmV0ID0gLTE7CkBAIC0xMzE1LDcgKzEzMTUsNyBAQAogICByZXR1cm4g cmV0OwogfQogCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxsIF9fYXR0 cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBmaGFuZGxlcl90dHlfc2xhdmU6 OmZjaG93biAoX191aWQzMl90IHVpZCwgX19naWQzMl90IGdpZCkKIHsKICAg aW50IHJldCA9IC0xOwpAQCAtMTQ5Niw3ICsxNDk2LDcgQEAKICAgcmV0dXJu IGk7CiB9CiAKLXZvaWQgX19zdGRjYWxsCit2b2lkIF9fc3RkY2FsbCBfX2F0 dHJpYnV0ZV9fICgocmVncGFybSAoMykpKQogZmhhbmRsZXJfcHR5X21hc3Rl cjo6cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsKICAgbGVuID0g KHNpemVfdCkgcHJvY2Vzc19zbGF2ZV9vdXRwdXQgKChjaGFyICopIHB0ciwg bGVuLCBwa3Rtb2RlKTsKSW5kZXg6IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJf dmlydHVhbC5jYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAv Y3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9maGFuZGxlcl92aXJ0dWFsLmNj LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjUzCmRpZmYgLXUgLXIxLjUzIGZo YW5kbGVyX3ZpcnR1YWwuY2MKLS0tIHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJf dmlydHVhbC5jYwk2IFNlcCAyMDEwIDA5OjQ3OjAxIC0wMDAwCTEuNTMKKysr IHdpbnN1cC9jeWd3aW4vZmhhbmRsZXJfdmlydHVhbC5jYwk5IEZlYiAyMDEx IDEzOjQ3OjU5IC0wMDAwCkBAIC0xODEsNyArMTgxLDcgQEAKICAgcmV0dXJu IDA7CiB9CiAKLXZvaWQgX19zdGRjYWxsCit2b2lkIF9fc3RkY2FsbCBfX2F0 dHJpYnV0ZV9fICgocmVncGFybSAoMykpKQogZmhhbmRsZXJfdmlydHVhbDo6 cmVhZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsKICAgaWYgKGxlbiA9 PSAwKQpAQCAtMjY2LDcgKzI2Niw3IEBACiAgIHJldHVybiByZXM7CiB9CiAK LWludCBfX3N0ZGNhbGwKK2ludCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAo KHJlZ3Bhcm0gKDIpKSkKIGZoYW5kbGVyX3ZpcnR1YWw6OmZzdGF0dmZzIChz dHJ1Y3Qgc3RhdHZmcyAqc2ZzKQogewogICAvKiBWaXJ0dWFsIGZpbGUgc3lz dGVtLiAgSnVzdCByZXR1cm4gYW4gZW1wdHkgYnVmZmVyIHdpdGggYSBmZXcg dmFsdWVzCkluZGV4OiB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3dpbmRvd3Mu Y2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMv c3JjL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfd2luZG93cy5jYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS4zMApkaWZmIC11IC1yMS4zMCBmaGFuZGxlcl93 aW5kb3dzLmNjCi0tLSB3aW5zdXAvY3lnd2luL2ZoYW5kbGVyX3dpbmRvd3Mu Y2MJMjQgSnVsIDIwMDkgMjA6NTQ6MzMgLTAwMDAJMS4zMAorKysgd2luc3Vw L2N5Z3dpbi9maGFuZGxlcl93aW5kb3dzLmNjCTkgRmViIDIwMTEgMTM6NDc6 NTkgLTAwMDAKQEAgLTc5LDcgKzc5LDcgQEAKICAgICByZXR1cm4gU2VuZE1l c3NhZ2UgKHB0ci0+aHduZCwgcHRyLT5tZXNzYWdlLCBwdHItPndQYXJhbSwg cHRyLT5sUGFyYW0pOwogfQogCi12b2lkIF9fc3RkY2FsbAordm9pZCBfX3N0 ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIGZoYW5kbGVy X3dpbmRvd3M6OnJlYWQgKHZvaWQgKmJ1Ziwgc2l6ZV90JiBsZW4pCiB7CiAg IE1TRyAqcHRyID0gKE1TRyAqKSBidWY7CkluZGV4OiB3aW5zdXAvY3lnd2lu L2ZoYW5kbGVyX3plcm8uY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vZmhhbmRsZXJfemVy by5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMQpkaWZmIC11IC1yMS4z MSBmaGFuZGxlcl96ZXJvLmNjCi0tLSB3aW5zdXAvY3lnd2luL2ZoYW5kbGVy X3plcm8uY2MJMjQgSnVsIDIwMDkgMjA6NTQ6MzMgLTAwMDAJMS4zMQorKysg d2luc3VwL2N5Z3dpbi9maGFuZGxlcl96ZXJvLmNjCTkgRmViIDIwMTEgMTM6 NDc6NTkgLTAwMDAKQEAgLTQxLDcgKzQxLDcgQEAKICAgcmV0dXJuIGxlbjsK IH0KIAotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQgX19zdGRjYWxsIF9fYXR0cmli dXRlX18gKChyZWdwYXJtICgzKSkpCiBmaGFuZGxlcl9kZXZfemVybzo6cmVh ZCAodm9pZCAqcHRyLCBzaXplX3QmIGxlbikKIHsKICAgbWVtc2V0IChwdHIs IDAsIGxlbik7CkluZGV4OiB3aW5zdXAvY3lnd2luL21pc2NmdW5jcy5jYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMv d2luc3VwL2N5Z3dpbi9taXNjZnVuY3MuY2MsdgpyZXRyaWV2aW5nIHJldmlz aW9uIDEuNTgKZGlmZiAtdSAtcjEuNTggbWlzY2Z1bmNzLmNjCi0tLSB3aW5z dXAvY3lnd2luL21pc2NmdW5jcy5jYwkxMiBNYXIgMjAxMCAyMzoxMzo0NyAt MDAwMAkxLjU4CisrKyB3aW5zdXAvY3lnd2luL21pc2NmdW5jcy5jYwk5IEZl YiAyMDExIDEzOjQ3OjU5IC0wMDAwCkBAIC0xNjksNyArMTY5LDcgQEAKICAg cmV0dXJuIHN0cmluZzsKIH0KIAotaW50IF9fc3RkY2FsbAoraW50IF9fc3Rk Y2FsbCBfX2F0dHJpYnV0ZV9fICgocmVncGFybSAoMikpKQogY2hlY2tfaW52 YWxpZF92aXJ0dWFsX2FkZHIgKGNvbnN0IHZvaWQgKnMsIHVuc2lnbmVkIHN6 KQogewogICBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04gbWJ1ZjsKSW5kZXg6 IHdpbnN1cC9jeWd3aW4vbnRlYS5jYwo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9udGVhLmNj LHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjIzCmRpZmYgLXUgLXIxLjIzIG50 ZWEuY2MKLS0tIHdpbnN1cC9jeWd3aW4vbnRlYS5jYwkxMiBKYW4gMjAxMCAx MDoxNDo1OSAtMDAwMAkxLjIzCisrKyB3aW5zdXAvY3lnd2luL250ZWEuY2MJ OSBGZWIgMjAxMSAxMzo0Nzo1OSAtMDAwMApAQCAtMjksNyArMjksNyBAQAog I2RlZmluZSBORVhUX0ZFQShwKSAoKFBGSUxFX0ZVTExfRUFfSU5GT1JNQVRJ T04pIChwLT5OZXh0RW50cnlPZmZzZXQgXAogCQkgICAgID8gKGNoYXIgKikg cCArIHAtPk5leHRFbnRyeU9mZnNldCA6IE5VTEwpKQogCi1zc2l6ZV90IF9f c3RkY2FsbAorc3NpemVfdCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJl Z3Bhcm0gKDMpKSkKIHJlYWRfZWEgKEhBTkRMRSBoZGwsIHBhdGhfY29udiAm cGMsIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKnZhbHVlLCBzaXplX3Qgc2l6 ZSkKIHsKICAgT0JKRUNUX0FUVFJJQlVURVMgYXR0cjsKQEAgLTE5Nyw3ICsx OTcsNyBAQAogICByZXR1cm4gcmV0OwogfQogCi1pbnQgX19zdGRjYWxsCitp bnQgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgzKSkpCiB3 cml0ZV9lYSAoSEFORExFIGhkbCwgcGF0aF9jb252ICZwYywgY29uc3QgY2hh ciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUsCiAJICBzaXplX3Qgc2l6ZSwg aW50IGZsYWdzKQogewpJbmRleDogd2luc3VwL2N5Z3dpbi9wYXRoLmNjCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93 aW5zdXAvY3lnd2luL3BhdGguY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu NjIyCmRpZmYgLXUgLXIxLjYyMiBwYXRoLmNjCi0tLSB3aW5zdXAvY3lnd2lu L3BhdGguY2MJMiBGZWIgMjAxMSAwOTo1OToxMCAtMDAwMAkxLjYyMgorKysg d2luc3VwL2N5Z3dpbi9wYXRoLmNjCTkgRmViIDIwMTEgMTM6NDg6MDAgLTAw MDAKQEAgLTM1MSw3ICszNTEsNyBAQAogc3RhdGljIHZvaWQgX19zdGRjYWxs IG1rcmVscGF0aCAoY2hhciAqZHN0LCBib29sIGNhc2VpbnNlbnNpdGl2ZSkK ICAgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDIpKSk7CiAKLXN0YXRpYyB2 b2lkIF9fc3RkY2FsbAorc3RhdGljIHZvaWQgX19zdGRjYWxsIF9fYXR0cmli dXRlX18gKChyZWdwYXJtICgyKSkpCiBta3JlbHBhdGggKGNoYXIgKnBhdGgs IGJvb2wgY2FzZWluc2Vuc2l0aXZlKQogewogICB0bXBfcGF0aGJ1ZiB0cDsK QEAgLTEzMDYsNyArMTMwNiw3IEBACiAvKiBub2ZpbmFsc2xhc2g6IFJlbW92 ZSB0cmFpbGluZyAvIGFuZCBcIGZyb20gU1JDIChleGNlcHQgZm9yIHRoZQog ICAgZmlyc3Qgb25lKS4gIEl0IGlzIG9rIGZvciBzcmMgPT0gZHN0LiAgKi8K IAotdm9pZCBfX3N0ZGNhbGwKK3ZvaWQgX19zdGRjYWxsIF9fYXR0cmlidXRl X18gKChyZWdwYXJtICgyKSkpCiBub2ZpbmFsc2xhc2ggKGNvbnN0IGNoYXIg KnNyYywgY2hhciAqZHN0KQogewogICBpbnQgbGVuID0gc3RybGVuIChzcmMp OwpAQCAtMjc3NCw3ICsyNzc0LDcgQEAKICAgIGRvbmUgZHVyaW5nIHRoZSBv cGVuZGlyIGNhbGwgYW5kIHRoZSBoYXNoIG9yIHRoZSBmaWxlbmFtZSB3aXRo aW4KICAgIHRoZSBkaXJlY3RvcnkuICBGSVhNRTogTm90IGJ1bGxldC1wcm9v Zi4gKi8KIC8qIEN5Z3dpbiBpbnRlcm5hbCAqLwotX19pbm82NF90IF9fc3Rk Y2FsbAorX19pbm82NF90IF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVn cGFybSAoMikpKQogaGFzaF9wYXRoX25hbWUgKF9faW5vNjRfdCBoYXNoLCBQ VU5JQ09ERV9TVFJJTkcgbmFtZSkKIHsKICAgaWYgKG5hbWUtPkxlbmd0aCA9 PSAwKQpAQCAtMjc4OCw3ICsyNzg4LDcgQEAKICAgcmV0dXJuIGhhc2g7CiB9 CiAKLV9faW5vNjRfdCBfX3N0ZGNhbGwKK19faW5vNjRfdCBfX3N0ZGNhbGwg X19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDIpKSkKIGhhc2hfcGF0aF9uYW1l IChfX2lubzY0X3QgaGFzaCwgUENXU1RSIG5hbWUpCiB7CiAgIFVOSUNPREVf U1RSSU5HIHVuYW1lOwpAQCAtMjc5Niw3ICsyNzk2LDcgQEAKICAgcmV0dXJu IGhhc2hfcGF0aF9uYW1lIChoYXNoLCAmdW5hbWUpOwogfQogCi1fX2lubzY0 X3QgX19zdGRjYWxsCitfX2lubzY0X3QgX19zdGRjYWxsIF9fYXR0cmlidXRl X18gKChyZWdwYXJtICgyKSkpCiBoYXNoX3BhdGhfbmFtZSAoX19pbm82NF90 IGhhc2gsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgIFVOSUNPREVfU1RSSU5H IHVuYW1lOwpJbmRleDogd2luc3VwL2N5Z3dpbi9waW5mby5jYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3Vw L2N5Z3dpbi9waW5mby5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yNjYK ZGlmZiAtdSAtcjEuMjY2IHBpbmZvLmNjCi0tLSB3aW5zdXAvY3lnd2luL3Bp bmZvLmNjCTEyIERlYyAyMDEwIDA1OjQ4OjI5IC0wMDAwCTEuMjY2CisrKyB3 aW5zdXAvY3lnd2luL3BpbmZvLmNjCTkgRmViIDIwMTEgMTM6NDg6MDAgLTAw MDAKQEAgLTQyNCw3ICs0MjQsNyBAQAogCiAvKiBUZXN0IHRvIGRldGVybWlu ZSBpZiBhIHByb2Nlc3MgcmVhbGx5IGV4aXN0cyBhbmQgaXMgcHJvY2Vzc2lu ZyBzaWduYWxzLgogICovCi1ib29sIF9fc3RkY2FsbAorYm9vbCBfX3N0ZGNh bGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDEpKSkKIF9waW5mbzo6ZXhp c3RzICgpCiB7CiAgIHJldHVybiB0aGlzICYmICEocHJvY2Vzc19zdGF0ZSAm IFBJRF9FWElURUQpOwpJbmRleDogd2luc3VwL2N5Z3dpbi9waXBlLmNjCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93 aW5zdXAvY3lnd2luL3BpcGUuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEu MTI1CmRpZmYgLXUgLXIxLjEyNSBwaXBlLmNjCi0tLSB3aW5zdXAvY3lnd2lu L3BpcGUuY2MJMTQgQXVnIDIwMTAgMTE6MTY6MDkgLTAwMDAJMS4xMjUKKysr IHdpbnN1cC9jeWd3aW4vcGlwZS5jYwk5IEZlYiAyMDExIDEzOjQ4OjAwIC0w MDAwCkBAIC0zNjYsNyArMzY2LDcgQEAKICAgcmV0dXJuIDA7CiB9CiAKLWlu dCBfX3N0ZGNhbGwKK2ludCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJl Z3Bhcm0gKDIpKSkKIGZoYW5kbGVyX3BpcGU6OmZzdGF0dmZzIChzdHJ1Y3Qg c3RhdHZmcyAqc2ZzKQogewogICBzZXRfZXJybm8gKEVCQURGKTsKSW5kZXg6 IHdpbnN1cC9jeWd3aW4vc2VjX2hlbHBlci5jYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvd2luc3VwL2N5Z3dpbi9z ZWNfaGVscGVyLmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjg4CmRpZmYg LXUgLXIxLjg4IHNlY19oZWxwZXIuY2MKLS0tIHdpbnN1cC9jeWd3aW4vc2Vj X2hlbHBlci5jYwkxNyBBcHIgMjAxMCAxNTo1MTowOSAtMDAwMAkxLjg4Cisr KyB3aW5zdXAvY3lnd2luL3NlY19oZWxwZXIuY2MJOSBGZWIgMjAxMSAxMzo0 ODowMCAtMDAwMApAQCAtNTE5LDcgKzUxOSw3IEBACiAgIHJldHVybiB0cnVl OwogfQogCi1QU0VDVVJJVFlfQVRUUklCVVRFUyBfX3N0ZGNhbGwKK1BTRUNV UklUWV9BVFRSSUJVVEVTIF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVn cGFybSAoMykpKQogX19zZWNfdXNlciAoUFZPSUQgc2FfYnVmLCBQU0lEIHNp ZDEsIFBTSUQgc2lkMiwgRFdPUkQgYWNjZXNzMiwgQk9PTCBpbmhlcml0KQog ewogICBQU0VDVVJJVFlfQVRUUklCVVRFUyBwc2EgPSAoUFNFQ1VSSVRZX0FU VFJJQlVURVMpIHNhX2J1ZjsKSW5kZXg6IHdpbnN1cC9jeWd3aW4vc2lnbmFs LmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3Jj L3NyYy93aW5zdXAvY3lnd2luL3NpZ25hbC5jYyx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS45MQpkaWZmIC11IC1yMS45MSBzaWduYWwuY2MKLS0tIHdpbnN1 cC9jeWd3aW4vc2lnbmFsLmNjCTIwIFNlcCAyMDEwIDIyOjI4OjU3IC0wMDAw CTEuOTEKKysrIHdpbnN1cC9jeWd3aW4vc2lnbmFsLmNjCTkgRmViIDIwMTEg MTM6NDg6MDAgLTAwMDAKQEAgLTE3Nyw3ICsxNzcsNyBAQAogICByZXR1cm4g aGFuZGxlX3NpZ3Byb2NtYXNrIChob3csIHNldCwgb2xkc2V0LCBfbXlfdGxz LnNpZ21hc2spOwogfQogCi1pbnQgX19zdGRjYWxsCitpbnQgX19zdGRjYWxs IF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgzKSkpCiBoYW5kbGVfc2lncHJv Y21hc2sgKGludCBob3csIGNvbnN0IHNpZ3NldF90ICpzZXQsIHNpZ3NldF90 ICpvbGRzZXQsIHNpZ3NldF90JiBvcG1hc2spCiB7CiAgIC8qIGNoZWNrIHRo YXQgaG93IGlzIGluIHJpZ2h0IHJhbmdlICovCkBAIC0yMTgsNyArMjE4LDcg QEAKICAgcmV0dXJuIDA7CiB9CiAKLWludCBfX3N0ZGNhbGwKK2ludCBfX3N0 ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDIpKSkKIF9waW5mbzo6 a2lsbCAoc2lnaW5mb190JiBzaSkKIHsKICAgc2lnX2Rpc3BhdGNoX3BlbmRp bmcgKCk7CkluZGV4OiB3aW5zdXAvY3lnd2luL3NpZ3Byb2MuY2MKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1 cC9jeWd3aW4vc2lncHJvYy5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4z MzEKZGlmZiAtdSAtcjEuMzMxIHNpZ3Byb2MuY2MKLS0tIHdpbnN1cC9jeWd3 aW4vc2lncHJvYy5jYwkxMiBTZXAgMjAxMCAxOToxMzowOSAtMDAwMAkxLjMz MQorKysgd2luc3VwL2N5Z3dpbi9zaWdwcm9jLmNjCTkgRmViIDIwMTEgMTM6 NDg6MDEgLTAwMDAKQEAgLTE2OCw3ICsxNjgsNyBAQAogICByZXR1cm4gZmFs c2U7CiB9CiAKLWJvb2wgX19zdGRjYWxsCitib29sIF9fc3RkY2FsbCBfX2F0 dHJpYnV0ZV9fICgocmVncGFybSAoMSkpKQogcGlkX2V4aXN0cyAocGlkX3Qg cGlkKQogewogICByZXR1cm4gcGluZm8gKHBpZCktPmV4aXN0cyAoKTsKQEAg LTE4Niw3ICsxODYsNyBAQAogCiAvKiBIYW5kbGUgYWxsIHN1YnByb2Nlc3Mg cmVxdWVzdHMKICAqLwotaW50IF9fc3RkY2FsbAoraW50IF9fc3RkY2FsbCBf X2F0dHJpYnV0ZV9fICgocmVncGFybSAoMikpKQogcHJvY19zdWJwcm9jIChE V09SRCB3aGF0LCBEV09SRCB2YWwpCiB7CiAgIGludCByYyA9IDE7CkBAIC0z OTAsNyArMzkwLDcgQEAKIH0KIAogLyogQ2xlYXIgcGVuZGluZyBzaWduYWwg Ki8KLXZvaWQgX19zdGRjYWxsCit2b2lkIF9fc3RkY2FsbCBfX2F0dHJpYnV0 ZV9fICgocmVncGFybSAoMSkpKQogc2lnX2NsZWFyIChpbnQgdGFyZ2V0X3Np ZykKIHsKICAgaWYgKCZfbXlfdGxzICE9IF9zaWdfdGxzKQpAQCAtNDg2LDcg KzQ4Niw3IEBACiAgICAgfQogfQogCi1pbnQgX19zdGRjYWxsCitpbnQgX19z dGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgyKSkpCiBzaWdfc2Vu ZCAoX3BpbmZvICpwLCBpbnQgc2lnKQogewogICBpZiAoc2lnID09IF9fU0lH SE9MRCkKQEAgLTUxOCw3ICs1MTgsNyBAQAogICAgSWYgcGluZm8gKnAgPT0g TlVMTCwgc2VuZCB0byB0aGUgY3VycmVudCBwcm9jZXNzLgogICAgSWYgc2Vu ZGluZyB0byB0aGlzIHByb2Nlc3MsIHdhaXQgZm9yIG5vdGlmaWNhdGlvbiB0 aGF0IGEgc2lnbmFsIGhhcwogICAgY29tcGxldGVkIGJlZm9yZSByZXR1cm5p bmcuICAqLwotaW50IF9fc3RkY2FsbAoraW50IF9fc3RkY2FsbCBfX2F0dHJp YnV0ZV9fICgocmVncGFybSAoMykpKQogc2lnX3NlbmQgKF9waW5mbyAqcCwg c2lnaW5mb190JiBzaSwgX2N5Z3RscyAqdGxzKQogewogICBpbnQgcmMgPSAx OwpAQCAtOTQwLDcgKzk0MCw3IEBACiAvKiBDaGVjayB0aGUgc3RhdGUgb2Yg YWxsIG9mIG91ciBjaGlsZHJlbiB0byBzZWUgaWYgYW55IGFyZSBzdG9wcGVk IG9yCiAgKiB0ZXJtaW5hdGVkLgogICovCi1zdGF0aWMgaW50IF9fc3RkY2Fs bAorc3RhdGljIGludCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bh cm0gKDEpKSkKIGNoZWNrc3RhdGUgKHdhaXRxICpwYXJlbnRfdykKIHsKICAg aW50IHBvdGVudGlhbF9tYXRjaCA9IDA7CkluZGV4OiB3aW5zdXAvY3lnd2lu L3NwYXduLmNjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9j dnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL3NwYXduLmNjLHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjI5OQpkaWZmIC11IC1yMS4yOTkgc3Bhd24uY2MKLS0t IHdpbnN1cC9jeWd3aW4vc3Bhd24uY2MJMjAgSmFuIDIwMTEgMTE6MDk6MjEg LTAwMDAJMS4yOTkKKysrIHdpbnN1cC9jeWd3aW4vc3Bhd24uY2MJOSBGZWIg MjAxMSAxMzo0ODowMSAtMDAwMApAQCAtMTAxLDcgKzEwMSw3IEBACiAgICBv ZiBuYW1lIGlzIHBsYWNlZCBpbiBidWYgYW5kIHJldHVybmVkLiAgT3RoZXJ3 aXNlIHRoZSBjb250ZW50cyBvZiBidWYKICAgIGlzIHVuZGVmaW5lZCBhbmQg TlVMTCBpcyByZXR1cm5lZC4gICovCiAKLWNvbnN0IGNoYXIgKiBfX3N0ZGNh bGwKK2NvbnN0IGNoYXIgKiBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJl Z3Bhcm0gKDMpKSkKIGZpbmRfZXhlYyAoY29uc3QgY2hhciAqbmFtZSwgcGF0 aF9jb252JiBidWYsIGNvbnN0IGNoYXIgKm15d2luZW52LAogCSAgIHVuc2ln bmVkIG9wdCwgY29uc3QgY2hhciAqKmtub3duX3N1ZmZpeCkKIHsKSW5kZXg6 IHdpbnN1cC9jeWd3aW4vc3RyZnVuY3MuY2MKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vc3Ry ZnVuY3MuY2MsdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuNDUKZGlmZiAtdSAt cjEuNDUgc3RyZnVuY3MuY2MKLS0tIHdpbnN1cC9jeWd3aW4vc3RyZnVuY3Mu Y2MJMTkgSmFuIDIwMTEgMDk6NDE6NTQgLTAwMDAJMS40NQorKysgd2luc3Vw L2N5Z3dpbi9zdHJmdW5jcy5jYwk5IEZlYiAyMDExIDEzOjQ4OjAxIC0wMDAw CkBAIC0zOTUsNyArMzk1LDcgQEAKICAgIC0gVGhlIGZ1bmN0aW9ucyBhbHdh eXMgY3JlYXRlIDAtdGVybWluYXRlZCByZXN1bHRzLCBubyBtYXR0ZXIgd2hh dC4KICAgICAgSWYgdGhlIHJlc3VsdCBpcyB0cnVuY2F0ZWQgZHVlIHRvIGJ1 ZmZlciBzaXplLCBpdCdzIGEgYnVnIGluIEN5Z3dpbgogICAgICBhbmQgdGhl IGJ1ZmZlciBpbiB0aGUgY2FsbGluZyBmdW5jdGlvbiBzaG91bGQgYmUgcmFp c2VkLiAqLwotc2l6ZV90IF9fc3RkY2FsbAorc2l6ZV90IF9fc3RkY2FsbCBf X2F0dHJpYnV0ZV9fICgocmVncGFybSAoMykpKQogc3lzX2NwX3djc3RvbWJz ICh3Y3RvbWJfcCBmX3djdG9tYiwgY29uc3QgY2hhciAqY2hhcnNldCwgY2hh ciAqZHN0LCBzaXplX3QgbGVuLAogCQkgY29uc3Qgd2NoYXJfdCAqc3JjLCBz aXplX3QgbndjKQogewpAQCAtNDgxLDcgKzQ4MSw3IEBACiAgIHJldHVybiBu OwogfQogCi1zaXplX3QgX19zdGRjYWxsCitzaXplX3QgX19zdGRjYWxsIF9f YXR0cmlidXRlX18gKChyZWdwYXJtICgzKSkpCiBzeXNfd2NzdG9tYnMgKGNo YXIgKmRzdCwgc2l6ZV90IGxlbiwgY29uc3Qgd2NoYXJfdCAqIHNyYywgc2l6 ZV90IG53YykKIHsKICAgcmV0dXJuIHN5c19jcF93Y3N0b21icyAoY3lnaGVh cC0+bG9jYWxlLndjdG9tYiwgY3lnaGVhcC0+bG9jYWxlLmNoYXJzZXQsCkBA IC00OTgsNyArNDk4LDcgQEAKICAgIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMg c2hhcmVkIGJ5IGN5Z3NlcnZlciAod2hpY2ggcmVxdWlyZXMgaXQgdmlhCiAg ICBfX3NtYWxsX3ZzcHJpbnRmKSBhbmQgc28gd2hlbiBidWlsdCB0aGVyZSBw bGFpbiBjYWxsb2MgaXMgdGhlCiAgICBvbmx5IGNob2ljZS4gICovCi1zaXpl X3QgX19zdGRjYWxsCitzaXplX3QgX19zdGRjYWxsIF9fYXR0cmlidXRlX18g KChyZWdwYXJtICgzKSkpCiBzeXNfd2NzdG9tYnNfYWxsb2MgKGNoYXIgKipk c3RfcCwgaW50IHR5cGUsIGNvbnN0IHdjaGFyX3QgKnNyYywgc2l6ZV90IG53 YykKIHsKICAgc2l6ZV90IHJldDsKQEAgLTUyNCw3ICs1MjQsNyBAQAogICAg Y29udmVyc2lvbi4gIFRoaXMgaXMgc28gdGhhdCBmaGFuZGxlcl9jb25zb2xl IGNhbiBzd2l0Y2ggdG8gYW4gYWx0ZXJuYXRlCiAgICBjaGFyc2V0LCB3aGlj aCBpcyB0aGUgY2hhcnNldCByZXR1cm5lZCBieSBHZXRDb25zb2xlQ1AgKCku ICBNb3N0IG9mIHRoZQogICAgdGltZSB0aGlzIGlzIHVzZWQgZm9yIGJveCBh bmQgbGluZSBkcmF3aW5nIGNoYXJhY3RlcnMuICovCi1zaXplX3QgX19zdGRj YWxsCitzaXplX3QgX19zdGRjYWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJt ICgzKSkpCiBzeXNfY3BfbWJzdG93Y3MgKG1idG93Y19wIGZfbWJ0b3djLCBj b25zdCBjaGFyICpjaGFyc2V0LCB3Y2hhcl90ICpkc3QsCiAJCSBzaXplX3Qg ZGxlbiwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgbm1zKQogewpAQCAtNjMz LDcgKzYzMyw3IEBACiAgIHJldHVybiBjb3VudDsKIH0KIAotc2l6ZV90IF9f c3RkY2FsbAorc2l6ZV90IF9fc3RkY2FsbCBfX2F0dHJpYnV0ZV9fICgocmVn cGFybSAoMykpKQogc3lzX21ic3Rvd2NzICh3Y2hhcl90ICogZHN0LCBzaXpl X3QgZGxlbiwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgbm1zKQogewogICBy ZXR1cm4gc3lzX2NwX21ic3Rvd2NzIChjeWdoZWFwLT5sb2NhbGUubWJ0b3dj LCBjeWdoZWFwLT5sb2NhbGUuY2hhcnNldCwKQEAgLTY0MSw3ICs2NDEsNyBA QAogfQogCiAvKiBTYW1lIGFzIHN5c193Y3N0b21ic19hbGxvYywganVzdCBi YWNrd2FyZHMuICovCi1zaXplX3QgX19zdGRjYWxsCitzaXplX3QgX19zdGRj YWxsIF9fYXR0cmlidXRlX18gKChyZWdwYXJtICgzKSkpCiBzeXNfbWJzdG93 Y3NfYWxsb2MgKHdjaGFyX3QgKipkc3RfcCwgaW50IHR5cGUsIGNvbnN0IGNo YXIgKnNyYywgc2l6ZV90IG5tcykKIHsKICAgc2l6ZV90IHJldDsKSW5kZXg6 IHdpbnN1cC9jeWd3aW4vd2luZG93LmNjCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy93aW5zdXAvY3lnd2luL3dpbmRv dy5jYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zOQpkaWZmIC11IC1yMS4z OSB3aW5kb3cuY2MKLS0tIHdpbnN1cC9jeWd3aW4vd2luZG93LmNjCTEgU2Vw IDIwMTAgMTg6MjQ6MTEgLTAwMDAJMS4zOQorKysgd2luc3VwL2N5Z3dpbi93 aW5kb3cuY2MJOSBGZWIgMjAxMSAxMzo0ODowMSAtMDAwMApAQCAtMjUsNyAr MjUsNyBAQAogCiBtdXRvIE5PX0NPUFkgd2luaW5mbzo6X2xvY2s7CiAKLWlu dCBfX3N0ZGNhbGwKK2ludCBfX3N0ZGNhbGwgX19hdHRyaWJ1dGVfXyAoKHJl Z3Bhcm0gKDMpKSkKIHdpbmluZm86OnByb2Nlc3MgKEhXTkQgaHduZCwgVUlO VCB1TXNnLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFtKQogewogI2lm bmRlZiBOT1NUUkFDRQpAQCAtNDksMTQgKzQ5LDE0IEBACiAgICAgfQogfQog Ci1zdGF0aWMgTFJFU1VMVCBDQUxMQkFDSworc3RhdGljIExSRVNVTFQgQ0FM TEJBQ0sgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDMpKSkKIHByb2Nlc3Nf d2luZG93X2V2ZW50cyAoSFdORCBod25kLCBVSU5UIHVNc2csIFdQQVJBTSB3 UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7CiAgIHJldHVybiB3aW5tc2cucHJv Y2VzcyAoaHduZCwgdU1zZywgd1BhcmFtLCBsUGFyYW0pOwogfQogCiAvKiBI YW5kbGUgd2luZG93cyBldmVudHMuICBJbmhlcml0cyBvd25lcnNoaXAgb2Yg dGhlIHdpbmluZm8gbG9jayAqLwotRFdPUkQgV0lOQVBJCitEV09SRCBXSU5B UEkgX19hdHRyaWJ1dGVfXyAoKHJlZ3Bhcm0gKDEpKSkKIHdpbmluZm86Ondp bnRocmVhZCAoKQogewogICBNU0cgbXNnOwo= --------------070903060805030109020902 Content-Type: text/plain; charset=us-ascii -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple --------------070903060805030109020902--