------=_Part_4345_19682498.1226682781905 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline the patch is mostly windows only code, but I want to make sure that it won't affect other platforms there are still some problems, like you have to specify the username in the url, and downloading doesn't work ------=_Part_4345_19682498.1226682781905 Content-Type: application/octet-stream; name=sftp.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fnj2vzml0 Content-Disposition: attachment; filename=sftp.diff SW5kZXg6IGF0b21pY2lvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBhdG9taWNpby5jcHAJKHJldmlzaW9u IDg4Mzg4MykKKysrIGF0b21pY2lvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNyBA QAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg V0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCi0KKyNpZm5kZWYgUV9XU19X SU4KIC8vI2luY2x1ZGUgImluY2x1ZGVzLmgiCiAvL1JDU0lEKCIkT3BlbkJTRDogYXRvbWljaW8u Yyx2IDEuOSAyMDAxLzAzLzAyIDE4OjU0OjMwIGRlcmFhZHQgRXhwICQiKTsKIApAQCAtNjUsMyAr NjUsNCBAQAogCX0KIAlyZXR1cm4gKHBvcyk7CiB9CisjZW5kaWYgLy9RX1dTX1dJTgpJbmRleDog a3NzaHByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzc2hwcm9jZXNzLmNwcAkocmV2aXNpb24g ODgzODgzKQorKysga3NzaHByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw2NyArODUs NzggQEAKIFFSZWdFeHAgS1NzaFByb2Nlc3M6OnZlcnNpb25TdHJzW10gPSB7CiAgICAgUVJlZ0V4 cCgiT3BlblNTSF8zXFwuWzYtOV18T3BlblNTSF9bMS05XSpbNC05XVxcLlswLTldIiksCiAgICAg UVJlZ0V4cCgiT3BlblNTSCIpLAotICAgIFFSZWdFeHAoIlNTSCBTZWN1cmUgU2hlbGwiKQorICAg IFFSZWdFeHAoIlNTSCBTZWN1cmUgU2hlbGwiKSwKKyAgICBRUmVnRXhwKCJwbGluazogUmVsZWFz ZSIpCiB9OwogCiBjb25zdCBjaGFyICogY29uc3QgS1NzaFByb2Nlc3M6OnBhc3N3b3JkUHJvbXB0 W10gPSB7CiAgICAgInBhc3N3b3JkOiIsIC8vIE9wZW5TU0gKICAgICAicGFzc3dvcmQ6IiwgLy8g T3BlblNTSAotICAgICJwYXNzd29yZDoiICAvLyBTU0gKKyAgICAicGFzc3dvcmQ6IiwgIC8vIFNT SAorICAgICJwYXNzd29yZDoiLCAgLy8gcHV0dHkKIH07CiAKIGNvbnN0IGNoYXIgKiBjb25zdCBL U3NoUHJvY2Vzczo6cGFzc3BocmFzZVByb21wdFtdID0gewogICAgICJFbnRlciBwYXNzcGhyYXNl IGZvciBrZXkiLAogICAgICJFbnRlciBwYXNzcGhyYXNlIGZvciBrZXkiLAotICAgICJQYXNzcGhy YXNlIGZvciBrZXkiCisgICAgIlBhc3NwaHJhc2UgZm9yIGtleSIsCisgICAgIj8/PyIKIH07CiAK IGNvbnN0IGNoYXIgKiBjb25zdCBLU3NoUHJvY2Vzczo6YXV0aFN1Y2Nlc3NNc2dbXSA9IHsKICAg ICAiQXV0aGVudGljYXRpb24gc3VjY2VlZGVkIiwKICAgICAic3NoLXVzZXJhdXRoMiBzdWNjZXNz ZnVsIiwKLSAgICAiUmVjZWl2ZWQgU1NIX0NST1NTX0FVVEhFTlRJQ0FURUQgcGFja2V0IgorICAg ICJSZWNlaXZlZCBTU0hfQ1JPU1NfQVVUSEVOVElDQVRFRCBwYWNrZXQiLAorICAgICJTdGFydGVk IGEgc2hlbGwvY29tbWFuZCIKIH07CiAKIGNvbnN0IGNoYXIqIGNvbnN0IEtTc2hQcm9jZXNzOjph dXRoRmFpbGVkTXNnW10gPSB7CiAgICAgIlBlcm1pc3Npb24gZGVuaWVkICgiLAogICAgICJQZXJt aXNzaW9uIGRlbmllZCAoIiwKLSAgICAiQXV0aGVudGljYXRpb24gZmFpbGVkLiIKKyAgICAiQXV0 aGVudGljYXRpb24gZmFpbGVkLiIsCisgICAgIkFjY2VzcyBkZW5pZWQiCiB9OwogCiBjb25zdCBj aGFyKiBjb25zdCBLU3NoUHJvY2Vzczo6dHJ5QWdhaW5Nc2dbXSA9IHsKICAgICAicGxlYXNlIHRy eSBhZ2FpbiIsCiAgICAgInBsZWFzZSB0cnkgYWdhaW4iLAotICAgICJhZGpmaGpzZGhmZHNqZnNq ZGZodWVmZXVmZXVlZmUiCisgICAgImFkamZoanNkaGZkc2pmc2pkZmh1ZWZldWZldWVmZSIsCisg ICAgIj8/PyIKIH07CiAKIFFSZWdFeHAgS1NzaFByb2Nlc3M6Omhvc3RLZXlNaXNzaW5nTXNnW10g PSB7CiAgICAgUVJlZ0V4cCgiVGhlIGF1dGhlbnRpY2l0eSBvZiBob3N0fE5vIChEU0F8UlNBKSBo b3N0IGtleSBpcyBrbm93biBmb3IiKSwKICAgICBRUmVnRXhwKCJUaGUgYXV0aGVudGljaXR5IG9m IGhvc3R8Tm8gKERTQXxSU0EpIGhvc3Qga2V5IGlzIGtub3duIGZvciIpLAotICAgIFFSZWdFeHAo Ikhvc3Qga2V5IG5vdCBmb3VuZCBmcm9tIGRhdGFiYXNlIikKKyAgICBRUmVnRXhwKCJIb3N0IGtl eSBub3QgZm91bmQgZnJvbSBkYXRhYmFzZSIpLAorICAgIFFSZWdFeHAoIj8/PyIpCiB9OwogCiBj b25zdCBjaGFyKiBjb25zdCBLU3NoUHJvY2Vzczo6Y29udGludWVQcm9tcHRbXSA9IHsKICAgICAi QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHllcy9ubyk/IiwK ICAgICAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3RpbmcgKHllcy9u byk/IiwKLSAgICAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlIGNvbm5lY3Rpbmcg KHllcy9ubyk/IgorICAgICJBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY29udGludWUgY29ubmVj dGluZyAoeWVzL25vKT8iLAorICAgICI/Pz8iCiB9OwogCiBjb25zdCBjaGFyKiBjb25zdCBLU3No UHJvY2Vzczo6aG9zdEtleUNoYW5nZWRNc2dbXSA9IHsKICAgICAiV0FSTklORzogUkVNT1RFIEhP U1QgSURFTlRJRklDQVRJT04gSEFTIENIQU5HRUQhIiwKICAgICAiV0FSTklORzogUkVNT1RFIEhP U1QgSURFTlRJRklDQVRJT04gSEFTIENIQU5HRUQhIiwKLSAgICAiV0FSTklORzogSE9TVCBJREVO VElGSUNBVElPTiBIQVMgQ0hBTkdFRCEiCisgICAgIldBUk5JTkc6IEhPU1QgSURFTlRJRklDQVRJ T04gSEFTIENIQU5HRUQhIiwKKyAgICAiPz8/IgogfTsKIAogUVJlZ0V4cCBLU3NoUHJvY2Vzczo6 a2V5RmluZ2VycHJpbnRNc2dbXSA9IHsKICAgICBRUmVnRXhwKCIuLig6Li4pezE1fSIpLAogICAg IFFSZWdFeHAoIi4uKDouLil7MTV9IiksCi0gICAgUVJlZ0V4cCgiLi4uLi4oLS4uLi4uKXsxMH0i KQorICAgIFFSZWdFeHAoIi4uLi4uKC0uLi4uLil7MTB9IiksCisgICAgUVJlZ0V4cCgiPz8/IikK IH07CiAKIFFSZWdFeHAgS1NzaFByb2Nlc3M6Omtub3duSG9zdHNGaWxlTXNnW10gPSB7CiAgICAg UVJlZ0V4cCgiQWRkIGNvcnJlY3QgaG9zdCBrZXkgaW4gKC4qKSB0byBnZXQgcmlkIG9mIHRoaXMg bWVzc2FnZS4iKSwKICAgICBRUmVnRXhwKCJBZGQgY29ycmVjdCBob3N0IGtleSBpbiAoLiopIHRv IGdldCByaWQgb2YgdGhpcyBtZXNzYWdlLiIpLAotICAgIFFSZWdFeHAoIkFkZCBjb3JyZWN0IGhv c3Qga2V5IHRvIFwiKC4qKVwiIikKKyAgICBRUmVnRXhwKCJBZGQgY29ycmVjdCBob3N0IGtleSB0 byBcIiguKilcIiIpLAorICAgIFFSZWdFeHAoIj8/PyIpCiB9OwogCiAKQEAgLTE1Myw3ICsxNjQs OCBAQAogY29uc3QgY2hhciogY29uc3QgS1NzaFByb2Nlc3M6OmNoYW5nZUhvc3RLZXlPbkRpc2tQ cm9tcHRbXSA9IHsKICAgICAiYXM7amY7c2Fqa2Zkc2xrZmphcztkZmpkc2E7Zmo7ZHNhamZkc2Fq ZiIsCiAgICAgImFzO2pmO3NhamtmZHNsa2ZqYXM7ZGZqZHNhO2ZqO2RzYWpmZHNhamYiLAotICAg ICJEbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGhvc3Qga2V5IG9uIGRpc2sgKHllcy9ubyk/Igor ICAgICJEbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGhvc3Qga2V5IG9uIGRpc2sgKHllcy9ubyk/ IiwKKyAgICAiPz8/IgogfTsKIAogLy8gV2UgbmVlZCB0aGlzIGluIGFkZGl0aW9uIHRoZSBhdXRo RmFpbGVkTXNnIGJlY2F1c2Ugd2hlbgpAQCAtMTY3LDEzICsxNzksMTUgQEAKIFFSZWdFeHAgS1Nz aFByb2Nlc3M6Omhvc3RLZXlWZXJpZnlGYWlsZWRNc2dbXSA9IHsKICAgICBRUmVnRXhwKCJIb3N0 IGtleSB2ZXJpZmljYXRpb24gZmFpbGVkXFwuIiksCiAgICAgUVJlZ0V4cCgiSG9zdCBrZXkgdmVy aWZpY2F0aW9uIGZhaWxlZFxcLiIpLAotICAgIFFSZWdFeHAoIkRpc2Nvbm5lY3RlZDsga2V5IGV4 Y2hhbmdlIG9yIGFsZ29yaXRobT8gbmVnb3RpYXRpb24gZmFpbGVkIFxcKEtleSBleGNoYW5nZSBm YWlsZWRcXC5cXClcXC4iKQorICAgIFFSZWdFeHAoIkRpc2Nvbm5lY3RlZDsga2V5IGV4Y2hhbmdl IG9yIGFsZ29yaXRobT8gbmVnb3RpYXRpb24gZmFpbGVkIFxcKEtleSBleGNoYW5nZSBmYWlsZWRc XC5cXClcXC4iKSwKKyAgICBRUmVnRXhwKCI/Pz8iKQogfTsKIAogY29uc3QgY2hhciAqIGNvbnN0 IEtTc2hQcm9jZXNzOjpjb25uZWN0aW9uQ2xvc2VkTXNnW10gPSB7CiAgICAgIkNvbm5lY3Rpb24g Y2xvc2VkIGJ5IHJlbW90ZSBob3N0IiwKICAgICAiQ29ubmVjdGlvbiBjbG9zZWQgYnkgcmVtb3Rl IGhvc3QiLAotICAgICJDb25uZWN0aW9uIGNsb3NlZCBieSByZW1vdGUgaG9zdCIKKyAgICAiQ29u bmVjdGlvbiBjbG9zZWQgYnkgcmVtb3RlIGhvc3QiLAorICAgICI/Pz8iCiB9OwogCiAKQEAgLTE4 NSw2ICsxOTksNyBAQAogfQogCiB2b2lkIEtTc2hQcm9jZXNzOjppbnN0YWxsU2lnbmFsSGFuZGxl cnMoKSB7CisjaWZuZGVmIFFfV1NfV0lOCiAgICAgc3RydWN0IHNpZ2FjdGlvbiBhY3Q7CiAgICAg bWVtc2V0KCZhY3QsMCxzaXplb2YoYWN0KSk7CiAgICAgYWN0LnNhX2hhbmRsZXIgPSBTSUdDSExE X2hhbmRsZXI7CkBAIC0xOTcsMTkgKzIxMiwyNiBAQAogI2VuZGlmCiAJICAgIDsKICAgICBzaWdh Y3Rpb24oU0lHQ0hMRCwmYWN0LE5VTEwpOworI2VuZGlmCiB9CiAJCQkJCQogdm9pZCBLU3NoUHJv Y2Vzczo6cmVtb3ZlU2lnbmFsSGFuZGxlcnMoKSB7CisjaWZuZGVmIFFfV1NfV0lOCiAJc3RydWN0 IHNpZ2FjdGlvbiBhY3Q7CiAJbWVtc2V0KCZhY3QsMCxzaXplb2YoYWN0KSk7CiAJYWN0LnNhX2hh bmRsZXIgPSBTSUdfREZMOwogCXNpZ2FjdGlvbihTSUdDSExELCZhY3QsTlVMTCk7CisjZW5kaWYK IH0KIAogS1NzaFByb2Nlc3M6OktTc2hQcm9jZXNzKCkgCiAgICAgICAgICAgICA6IG1WZXJzaW9u KFVOS05PV05fVkVSKSwgbUNvbm5lY3RlZChmYWxzZSksIAogICAgICAgICBtUnVubmluZyhmYWxz ZSksIG1Db25uZWN0U3RhdGUoMCkgeworI2lmbmRlZiBRX1dTX1dJTgogICAgIG1Tc2hQYXRoID0g S1N0YW5kYXJkRGlyczo6ZmluZEV4ZShRU3RyaW5nOjpmcm9tTGF0aW4xKCJzc2giKSk7CisjZWxz ZQorICAgIG1Tc2hQYXRoID0gS1N0YW5kYXJkRGlyczo6ZmluZEV4ZShRU3RyaW5nOjpmcm9tTGF0 aW4xKCJwbGluayIpKTsKKyNlbmRpZgogICAgIGtEZWJ1ZyhLU1NIUFJPQykgPDwgIktTc2hQcm9j ZXNzOjpLU3NoUHJvY2VzcygpOiBzc2ggcGF0aCBbIiA8PCAKIAkJbVNzaFBhdGggPDwgIl0iIDw8 IGVuZGw7CiAgICAgICAgIApAQCAtMzAzLDYgKzMyNSwxNSBAQAogCiBib29sIEtTc2hQcm9jZXNz OjpzZXRPcHRpb25zKGNvbnN0IFNzaE9wdExpc3QmIG9wdHMpIHsKICAgICBrRGVidWcoS1NTSFBS T0MpIDw8ICJLU3NoUHJvY2Vzczo6c2V0T3B0aW9ucygpIjsKKworCWlmKCBtVmVyc2lvbiA9PSBV TktOT1dOX1ZFUiApIHsKKyAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyB0aGUgc3NoIHZlcnNpb24g eWV0LCBzbyBmaW5kIG91dAorICAgICAgICB2ZXJzaW9uKCk7CisgICAgICAgIGlmKCBtVmVyc2lv biA9PSBVTktOT1dOX1ZFUiApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg fQorICAgIH0KKwogICAgIG1BcmdzLmNsZWFyKCk7CiAgICAgU3NoT3B0TGlzdENvbnN0SXRlcmF0 b3IgaXQ7CiAgICAgUVN0cmluZyBjbWQsIHN1YnN5c3RlbTsKQEAgLTMyMiw3ICszNTMsMTEgQEAK ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgU1NIX1BPUlQ6Ci0gICAgICAgICAg ICBtQXJncy5hcHBlbmQoIi1wIik7CisgICAgICAgICAgICBpZiggbVZlcnNpb24gPT0gUExJTksg KSB7CisgICAgICAgICAgICAgICAgbUFyZ3MuYXBwZW5kKCItUCIpOworICAgICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICAgICBtQXJncy5hcHBlbmQoIi1wIik7CisgICAgICAgICAgICB9 CiAgICAgICAgICAgICB0bXAuc2V0TnVtKCgqaXQpLm51bSk7CiAgICAgICAgICAgICBtQXJncy5h cHBlbmQodG1wKTsKICAgICAgICAgICAgIG1Qb3J0ID0gKCppdCkubnVtOwpAQCAtMzQ5LDcgKzM4 NCw3IEBACiAgICAgICAgICAgICAgICAgbUFyZ3MuYXBwZW5kKCItbyIpOwogICAgICAgICAgICAg ICAgIG1BcmdzLmFwcGVuZCh0bXApOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBp ZiggbVZlcnNpb24gPD0gU1NIICkgeworICAgICAgICAgICAgZWxzZSBpZiggbVZlcnNpb24gPD0g U1NIIHx8IG1WZXJzaW9uID09IFBMSU5LICkgewogICAgICAgICAgICAgICAgIGlmKCAoKml0KS5u dW0gPT0gMSApIHsKICAgICAgICAgICAgICAgICAgICAgbUFyZ3MuYXBwZW5kKCItMSIpOwogICAg ICAgICAgICAgICAgIH0KQEAgLTM1OCw0MiArMzkzLDU0IEBACiAgICAgICAgICAgICBicmVhazsK IAogICAgICAgICBjYXNlIFNTSF9GT1JXQVJEWDExOgotICAgICAgICAgICAgdG1wID0gIkZvcndh cmRYMTE9IjsKLSAgICAgICAgICAgIHRtcCArPSAoKml0KS5ib29sZWFuID8gInllcyIgOiAibm8i OwotICAgICAgICAgICAgbUFyZ3MuYXBwZW5kKCItbyIpOwotICAgICAgICAgICAgbUFyZ3MuYXBw ZW5kKHRtcCk7CisgICAgICAgICAgICBpZiggbVZlcnNpb24gPT0gUExJTkspIHsKKyAgICAgICAg ICAgICAgICBtQXJncy5hcHBlbmQoKCppdCkuYm9vbGVhbiA/ICItWCIgOiAiLXgiKTsKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdG1wID0gIkZvcndhcmRYMTE9IjsKKyAg ICAgICAgICAgICAgICB0bXAgKz0gKCppdCkuYm9vbGVhbiA/ICJ5ZXMiIDogIm5vIjsKKyAgICAg ICAgICAgICAgICBtQXJncy5hcHBlbmQoIi1vIik7CisgICAgICAgICAgICAgICAgbUFyZ3MuYXBw ZW5kKHRtcCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBj YXNlIFNTSF9GT1JXQVJEQUdFTlQ6Ci0gICAgICAgICAgICB0bXAgPSAiRm9yd2FyZEFnZW50PSI7 Ci0gICAgICAgICAgICB0bXAgKz0gKCppdCkuYm9vbGVhbiA/ICJ5ZXMiIDogIm5vIjsKLSAgICAg ICAgICAgIG1BcmdzLmFwcGVuZCgiLW8iKTsKLSAgICAgICAgICAgIG1BcmdzLmFwcGVuZCh0bXAp OworICAgICAgICAgICAgaWYoIG1WZXJzaW9uID09IFBMSU5LKSB7CisgICAgICAgICAgICAgICAg bUFyZ3MuYXBwZW5kKCgqaXQpLmJvb2xlYW4gPyAiLUEiIDogIi1hIik7CisgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIHRtcCA9ICJGb3J3YXJkQWdlbnQ9IjsKKyAgICAgICAg ICAgICAgICB0bXAgKz0gKCppdCkuYm9vbGVhbiA/ICJ5ZXMiIDogIm5vIjsKKyAgICAgICAgICAg ICAgICBtQXJncy5hcHBlbmQoIi1vIik7CisgICAgICAgICAgICAgICAgbUFyZ3MuYXBwZW5kKHRt cCk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNT SF9FU0NBUEVfQ0hBUjoKLSAgICAgICAgICAgIGlmKCAoKml0KS5udW0gPT0gLTEgKQotICAgICAg ICAgICAgICAgIHRtcCA9ICJub25lIjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg ICB0bXAgPSBRQnl0ZUFycmF5KCAoY2hhcikoKCppdCkubnVtKSwgJ1wwJyApOwotICAgICAgICAg ICAgbUFyZ3MuYXBwZW5kKCItZSIpOwotICAgICAgICAgICAgbUFyZ3MuYXBwZW5kKHRtcCk7Cisg ICAgICAgICAgICBpZiggbVZlcnNpb24gIT0gUExJTksgKSB7CisgICAgICAgICAgICAgICAgaWYo ICgqaXQpLm51bSA9PSAtMSApCisgICAgICAgICAgICAgICAgICAgIHRtcCA9ICJub25lIjsKKyAg ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRtcCA9IFFCeXRlQXJyYXko IChjaGFyKSgoKml0KS5udW0pLCAnXDAnICk7CisgICAgICAgICAgICAgICAgbUFyZ3MuYXBwZW5k KCItZSIpOworICAgICAgICAgICAgICAgIG1BcmdzLmFwcGVuZCh0bXApOworICAgICAgICAgICAg fQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBTU0hfT1BUSU9OOgogICAgICAg ICAgICAgLy8gZG9uJ3QgYWxsb3cgTnVtYmVyT2ZQYXNzd29yZFByb21wdHMgb3IgU3RyaWN0SG9z dEtleUNoZWNraW5nCiAgICAgICAgICAgICAvLyBzaW5jZSBLU3NoUHJvY2VzcyBkZXBlbmRzIG9u IHNwZWNpZmljIHNldHRpbmcgb2YgdGhlc2UgZm9yIAogICAgICAgICAgICAgLy8gcHJlZm9ybWlu ZyBhdXRoZW50aWNhdGlvbiBjb3JyZWN0bHkuCi0gICAgICAgICAgICB0bXAgPSAoKml0KS5zdHIu dG9MYXRpbjEoKTsKLSAgICAgICAgICAgIGlmKCB0bXAuY29udGFpbnMoIk51bWJlck9mUGFzc3dv cmRQcm9tcHRzIikgfHwKLSAgICAgICAgICAgICAgICB0bXAuY29udGFpbnMoIlN0cmljdEhvc3RL ZXlDaGVja2luZyIpICkgewotICAgICAgICAgICAgICAgIG1FcnJvciA9IEVSUl9JTlZBTElEX09Q VDsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiggbVZlcnNp b24gIT0gUExJTksgKSB7CisgICAgICAgICAgICAgICAgdG1wID0gKCppdCkuc3RyLnRvTGF0aW4x KCk7CisgICAgICAgICAgICAgICAgaWYoIHRtcC5jb250YWlucygiTnVtYmVyT2ZQYXNzd29yZFBy b21wdHMiKSB8fAorICAgICAgICAgICAgICAgICAgICB0bXAuY29udGFpbnMoIlN0cmljdEhvc3RL ZXlDaGVja2luZyIpICkgeworICAgICAgICAgICAgICAgICAgICBtRXJyb3IgPSBFUlJfSU5WQUxJ RF9PUFQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1BcmdzLmFw cGVuZCgiLW8iKTsKKyAgICAgICAgICAgICAgICAgICAgbUFyZ3MuYXBwZW5kKHRtcCk7CisgICAg ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg ICAgICAgICAgbUFyZ3MuYXBwZW5kKCItbyIpOwotICAgICAgICAgICAgICAgIG1BcmdzLmFwcGVu ZCh0bXApOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAK ICAgICAgICAgY2FzZSBTU0hfQ09NTUFORDoKQEAgLTU1Miw2ICs1OTksOSBAQAogfQogCiBRU3Ry aW5nIEtTc2hQcm9jZXNzOjpnZXRMaW5lKCkgeworI2lmZGVmIFFfV1NfV0lOCisgICAgcmV0dXJu IHNzaC5yZWFkTGluZUZyb21QdHkoZmFsc2UpOworI2Vsc2UKICAgICBzdGF0aWMgUVN0cmluZ0xp c3QgYnVmZmVyOwogICAgIFFTdHJpbmcgbGluZSA9IFFTdHJpbmcoKTsKICAgICBRQnl0ZUFycmF5 IHB0eUxpbmUsIGVyckxpbmU7CkBAIC02NjksNiArNzE5LDcgQEAKICAgICAKIAogICAgIHJldHVy biBsaW5lOworI2VuZGlmCiB9CiAKIC8vIEFsbCB0aGUgZGlmZmVyZW50IHN0YXRlcyB3ZSBjb3Vs ZCBnbyB0aHJvdWdoIHdoaWxlIHRyeWluZyB0byBjb25uZWN0LgpJbmRleDogYXRvbWljaW8uaAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBhdG9taWNpby5oCShyZXZpc2lvbiA4ODM4ODMpCisrKyBhdG9taWNpby5o CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsOCBAQAogI2lmbmRlZiBhdG9taWNpb19oCiAjZGVm aW5lIGF0b21pY2lvX2gKIAorI2lmbmRlZiBRX1dTX1dJTgorCiAvKgkkT3BlbkJTRDogYXRvbWlj aW8uaCx2IDEuMyAyMDAxLzAzLzAyIDE4OjU0OjMwIGRlcmFhZHQgRXhwICQJKi8KIAogLyoKQEAg LTM2LDQgKzM4LDYgQEAKICAqLwogc3NpemVfdAlhdG9taWNpbyhpbnQgZmQsIGNoYXIgKl9zLCBz aXplX3QgbiwgYm9vbCByZWFkID0gdHJ1ZSk7CiAKKyNlbmRpZiAvL1FfV1NfV0lOCisKICNlbmRp ZgpJbmRleDoga3NzaHByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3NocHJvY2Vzcy5oCShyZXZp c2lvbiA4ODM4ODMpCisrKyBrc3NocHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiAr MTM3LDcgQEAKIAlPUEVOU1NIXzNfNiwKICAgICAgICAgT1BFTlNTSCwKICAgICAgICAgU1NILAor ICAgICAgICBQTElOSywKICAgICAgICAgU1NIX1ZFUl9NQVgsCiAgICAgICAgIFVOS05PV05fVkVS CiAgICAgfTsJCkBAIC01MDMsNyArNTA0LDExIEBACiAgICAgICoKICAgICAgKiBAcmV0dXJuIFRo ZSBmaWxlIGRlc2NyaXB0b3Igb2YgcHR5IHRvIHdoaWNoIHNzaCBpcyBhdHRhY2hlZC4KICAgICAg Ki8KKyNpZm5kZWYgUV9XU19XSU4KICAgICBpbnQgcHR5KCkgeyByZXR1cm4gc3NoLmZkKCk7IH0K KyNlbHNlCisgICAgS1Byb2Nlc3MgKnB0eSgpIHsgcmV0dXJuIHNzaC5mZCgpOyB9CisjZW5kaWYK IHByaXZhdGU6CiAgICAgLyoqCiAgICAgICogUGF0aCB0byB0aGUgc3NoIGJpbmFyeS4KSW5kZXg6 IGtpb19zZnRwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraW9fc2Z0cC5jcHAJKHJldmlzaW9uIDg4Mzg4 MykKKysrIGtpb19zZnRwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDEyICsxMzIsMTYgQEAK IHNmdHBQcm90b2NvbDo6c2Z0cFByb3RvY29sKGNvbnN0IFFCeXRlQXJyYXkgJnBvb2xfc29ja2V0 LCBjb25zdCBRQnl0ZUFycmF5ICZhcHBfc29ja2V0KQogICAgICAgICAgICAgIDogU2xhdmVCYXNl KCJraW9fc2Z0cCIsIHBvb2xfc29ja2V0LCBhcHBfc29ja2V0KSwKICAgICAgICAgICAgICAgICAg IG1Db25uZWN0ZWQoZmFsc2UpLCBtUG9ydCgtMSksIG1Nc2dJZCgwKSB7CisjaWZuZGVmIFFfV1Nf V0lOCiAgIGtEZWJ1ZyhLSU9fU0ZUUF9EQikgPDwgInNmdHBQcm90b2NvbCgpOiBwaWQgPSAiIDw8 IGdldHBpZCgpOworI2VuZGlmCiB9CiAKIAogc2Z0cFByb3RvY29sOjp+c2Z0cFByb3RvY29sKCkg eworI2lmbmRlZiBRX1dTX1dJTgogICAgIGtEZWJ1ZyhLSU9fU0ZUUF9EQikgPDwgIn5zZnRwUHJv dG9jb2woKTogcGlkID0gIiA8PCBnZXRwaWQoKTsKKyNlbmRpZgogICAgIGNsb3NlQ29ubmVjdGlv bigpOwogfQogCkBAIC0xNTc0LDkgKzE1NzgsMTUgQEAKIGJvb2wgc2Z0cFByb3RvY29sOjpnZXRQ YWNrZXQoUUJ5dGVBcnJheSYgbXNnKSB7CiAgICAgUUJ5dGVBcnJheSBidWYoNDA5NiwgJ1wwJyk7 CiAKKyNpZmRlZiBRX1dTX1dJTgorICAgIHNzaXplX3QgbGVuOworICAgIGlmKHNzaC5wdHkoKS0+ d2FpdEZvclJlYWR5UmVhZCgyMDAwKSkgeworICAgICAgICBsZW4gPSBzc2gucHR5KCktPnJlYWQo YnVmLmRhdGEoKSwgNCk7CisgICAgfQorI2Vsc2UKICAgICAvLyBHZXQgdGhlIG1lc3NhZ2UgbGVu Z3RoLi4uCiAgICAgc3NpemVfdCBsZW4gPSBhdG9taWNpbyhzc2guc3RkaW9GZCgpLCBidWYuZGF0 YSgpLCA0LCB0cnVlIC8qcmVhZCovKTsKLQorI2VuZGlmCiAgICAgaWYoIGxlbiA9PSAwIHx8IGxl biA9PSAtMSApIHsKICAgICAgICAga0RlYnVnKEtJT19TRlRQX0RCKSA8PCAiZ2V0UGFja2V0KCk6 IHJlYWQgb2YgcGFja2V0IGxlbmd0aCBmYWlsZWQsIHJldCA9ICIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPDwgbGVuIDw8ICIsIGVycm9yID0iIDw8IHN0cmVycm9yKGVycm5vKSA8PCBl bmRsOwpAQCAtMTU5OCw3ICsxNjA4LDExIEBACiAgICAgYi5vcGVuKCBRSU9EZXZpY2U6OldyaXRl T25seSApOwogCiAgICAgd2hpbGUoIG1zZ0xlbiApIHsKKyNpZmRlZiBRX1dTX1dJTgorICAgICAg ICBsZW4gPSBzc2gucHR5KCktPnJlYWQoYnVmLmRhdGEoKSwgcU1pbihidWYuc2l6ZSgpLCBtc2dM ZW4pKTsKKyNlbHNlCiAgICAgICAgIGxlbiA9IGF0b21pY2lvKHNzaC5zdGRpb0ZkKCksIGJ1Zi5k YXRhKCksIHFNaW4oYnVmLnNpemUoKSwgbXNnTGVuKSwgdHJ1ZSAvKnJlYWQqLyk7CisjZW5kaWYK IAogICAgICAgICBpZiggbGVuID09IDAgfHwgbGVuID09IC0xKSB7CiAgICAgICAgICAgICBRU3Ry aW5nIGVycm1zZzsKQEAgLTE2MzEsNyArMTY0NSwxMSBAQAogYm9vbCBzZnRwUHJvdG9jb2w6OnB1 dFBhY2tldChRQnl0ZUFycmF5JiBwKXsKIC8vICAgIGtEZWJ1ZyhLSU9fU0ZUUF9EQikgPDwgInB1 dFBhY2tldCgpOiBzaXplID09ICIgPDwgcC5zaXplKCk7CiAgICAgaW50IHJldDsKKyNpZmRlZiBR X1dTX1dJTgorICAgIHJldCA9IHNzaC5wdHkoKS0+d3JpdGUocC5kYXRhKCksIHAuc2l6ZSgpKTsK KyNlbHNlCiAgICAgcmV0ID0gYXRvbWljaW8oc3NoLnN0ZGlvRmQoKSwgcC5kYXRhKCksIHAuc2l6 ZSgpLCBmYWxzZSAvKndyaXRlKi8pOworI2VuZGlmCiAgICAgaWYoIHJldCA8PSAwICkgewogICAg ICAgICBrRGVidWcoS0lPX1NGVFBfREIpIDw8ICJwdXRQYWNrZXQoKTogd3JpdGUgZmFpbGVkLCBy ZXQgPSIgPDwgcmV0IDw8CiAgICAgICAgICAgICAiLCBlcnJvciA9ICIgPDwgc3RyZXJyb3IoZXJy bm8pIDw8IGVuZGw7CkluZGV4OiBwcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwcm9jZXNzLmNw cAkocmV2aXNpb24gODgzODgzKQorKysgcHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2 LDcgKzI2LDEwIEBACiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNp bmNsdWRlIDxzdHJpbmcuaD4KKworI2lmbmRlZiBRX1dTX1dJTgogI2luY2x1ZGUgPHRlcm1pb3Mu aD4KKyNlbmRpZgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3dhaXQu aD4KQEAgLTYyLDEyICs2NSwxOCBAQAogaW50IE15UHR5UHJvY2Vzczo6aW5pdCgpCiB7CiAgICAg ZGVsZXRlIG1fcFBUWTsKKyNpZm5kZWYgUV9XU19XSU4KICAgICBtX3BQVFkgPSBuZXcgS1B0eSgp OwogICAgIGlmICghbV9wUFRZLT5vcGVuKCkpCiAgICAgewogICAgICAgICBrRXJyb3IoUFRZUFJP QykgPDwga19saW5laW5mbyA8PCAiTWFzdGVyIHNldHVwIGZhaWxlZC5cbiIgPDwgZW5kbDsKICAg ICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyNlbHNlCisgICAgbV9wUFRZID0gbmV3IEtQcm9jZXNz KCk7CisgICAgbV9wUFRZLT5zZXRPdXRwdXRDaGFubmVsTW9kZShLUHJvY2Vzczo6TWVyZ2VkQ2hh bm5lbHMpOworI2VuZGlmCisKICAgICBtX3N0ZG91dEJ1Zi5yZXNpemUoMCk7CiAgICAgbV9zdGRl cnJCdWYucmVzaXplKDApOwogICAgIG1fcHR5QnVmLnJlc2l6ZSgwKTsKQEAgLTEwMywxMiArMTEy LDM5IEBACiAgICAgICAgIH0gZWxzZQogICAgICAgICB7CiAgICAgICAgICAgICByZXQgPSBpbmJ1 Zi5sZWZ0KHBvcyk7CisjaWZkZWYgUV9XU19XSU4KKyAgICAgICAgICAgIGlmKCByZXQuZW5kc1dp dGgoJ1xyJykgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJldC5jaG9wKDEpOwor ICAgICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgICAgICBpbmJ1ZiA9IGluYnVmLm1pZChwb3Mr MSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJldDsKIAogICAgIH0KIAorI2lmZGVmIFFf V1NfV0lOCisgICAgaWYoIG1fcFBUWS0+d2FpdEZvclJlYWR5UmVhZCg2MDAwMCkgKQorICAgIHsK KyAgICAgICAgaW5idWYgPSBtX3BQVFktPnJlYWRBbGwoKTsKKyAgICAgICAgcG9zID0gaW5idWYu aW5kZXhPZignXG4nKTsKKyAgICAgICAgaWYgKHBvcyA9PSAtMSkKKyAgICAgICAgeworICAgICAg ICAgICAgcmV0ID0gaW5idWY7CisgICAgICAgICAgICBpbmJ1Zi5yZXNpemUoMCk7CisgICAgICAg IH0gZWxzZQorICAgICAgICB7CisgICAgICAgICAgICByZXQgPSBpbmJ1Zi5sZWZ0KHBvcyk7Cisg ICAgICAgICAgICBpZiggcmV0LmVuZHNXaXRoKCdccicpICkKKyAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgICByZXQuY2hvcCgxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluYnVm ID0gaW5idWYubWlkKHBvcysxKTsKKyAgICAgICAgfSAKKyAgICB9CisgICAgcmV0dXJuIHJldDsK KyNlbHNlCiAgICAgaW50IGZsYWdzID0gZmNudGwoZmQsIEZfR0VURkwpOwogICAgIGlmIChmbGFn cyA8IDApIAogICAgIHsKQEAgLTE1NywxNCArMTkzLDIzIEBACiAgICAgfQogCiAgICAgcmV0dXJu IHJldDsKKyNlbmRpZgogfQogCiB2b2lkIE15UHR5UHJvY2Vzczo6d3JpdGVMaW5lKFFCeXRlQXJy YXkgbGluZSwgYm9vbCBhZGRubCkKIHsKICAgICBpZiAoIWxpbmUuaXNFbXB0eSgpKQorI2lmbmRl ZiBRX1dTX1dJTiAgICAKICAgICAgICAgd3JpdGUoZmQoKSwgbGluZSwgbGluZS5sZW5ndGgoKSk7 CisjZWxzZQorICAgICAgICBtX3BQVFktPndyaXRlKGxpbmUpOworI2VuZGlmICAgICAgICAKICAg ICBpZiAoYWRkbmwpCisjaWZuZGVmIFFfV1NfV0lOCiAgICAgICAgIHdyaXRlKGZkKCksICJcbiIs IDEpOworI2Vsc2UKKyAgICAgICAgbV9wUFRZLT53cml0ZSgiXHJcbiIpOworI2VuZGlmCiB9CiAK IHZvaWQgTXlQdHlQcm9jZXNzOjp1bnJlYWRMaW5lRnJvbShRQnl0ZUFycmF5IGluYnVmLCBRQnl0 ZUFycmF5IGxpbmUsIGJvb2wgYWRkbmwpCkBAIC0xODMsMTAgKzIyOCwxOCBAQAogaW50IE15UHR5 UHJvY2Vzczo6ZXhlYyhRQnl0ZUFycmF5IGNvbW1hbmQsIFFDU3RyaW5nTGlzdCBhcmdzKQogewog ICBrRGVidWcoUFRZUFJPQykgPDwgIk15UHR5UHJvY2Vzczo6ZXhlYygpOiAiIDw8IGNvbW1hbmQ7 Ly8gPDwgIiwgYXJncyA9ICIgPDwgYXJncyA7Ci0KICAgICBpZiAoaW5pdCgpIDwgMCkKICAgICAg ICAgcmV0dXJuIC0xOwotCisjaWZkZWYgUV9XU19XSU4KKyAgICBRU3RyaW5nTGlzdCBhcjsKKyAg ICBmb3IoaW50IGkgPSAwOyBpIDwgYXJncy5zaXplKCk7ICsraSkKKyAgICB7CisgICAgICAgIGFy IDw8IGFyZ3NbaV07CisgICAgfQorICAgIG1fcFBUWS0+c2V0UHJvZ3JhbShjb21tYW5kLCBhcik7 CisgICAgbV9wUFRZLT5zdGFydCgpOworICAgIHJldHVybiAwOworI2Vsc2UKICAgICAvLyBPcGVu IHRoZSBwdHkgc2xhdmUgYmVmb3JlIGZvcmtpbmcuIFNlZSBTZXR1cFRUWSgpCiAgICAgaW50IHNs YXZlID0gb3BlbihtX3BQVFktPnR0eU5hbWUoKSwgT19SRFdSKTsKICAgICBpZiAoc2xhdmUgPCAw KSAKQEAgLTI3NCw2ICszMjcsNyBAQAogICAgIGtFcnJvcihQVFlQUk9DKSA8PCBrX2xpbmVpbmZv IDw8ICJleGVjdihcIiIgPDwgcGF0aCA8PCAiXCIpOiAiIDw8IHBlcnJvciA8PCAiXG4iOwogICAg IF9leGl0KDEpOwogICAgIHJldHVybiAtMTsgLy8gU2h1dCB1cCBjb21waWxlci4gTmV2ZXIgcmVh Y2hlZC4KKyNlbmRpZgogfQogCiAvKgpAQCAtMjg4LDYgKzM0Miw3IEBACiAKIGludCBNeVB0eVBy b2Nlc3M6OldhaXRTbGF2ZSgpCiB7CisjaWZuZGVmIFFfV1NfV0lOCiAgICAgaW50IHNsYXZlID0g b3BlbihtX3BQVFktPnR0eU5hbWUoKSwgT19SRFdSKTsKICAgICBpZiAoc2xhdmUgPCAwKSAKICAg ICB7CkBAIC0zMTYsMTMgKzM3MSwxNiBAQAogCWJyZWFrOwogICAgIH0KICAgICBjbG9zZShzbGF2 ZSk7CisjZW5kaWYKICAgICByZXR1cm4gMDsKIH0KIAogCiBpbnQgTXlQdHlQcm9jZXNzOjplbmFi bGVMb2NhbEVjaG8oYm9vbCBlbmFibGUpCiB7CisjaWZuZGVmIFFfV1NfV0lOCiAgICAgcmV0dXJu IG1fcFBUWS0+c2V0RWNobyhlbmFibGUpID8gMCA6IC0xOworI2VuZGlmCiB9CiAKIApAQCAtMzM2 LDYgKzM5NCw3IEBACiAKIGludCBNeVB0eVByb2Nlc3M6OndhaXRGb3JDaGlsZCgpCiB7CisjaWZu ZGVmIFFfV1NfV0lOCiAgICAgaW50IHJldCwgc3RhdGUsIHJldHZhbCA9IDE7CiAgICAgc3RydWN0 IHRpbWV2YWwgdHY7CiAKQEAgLTM5NCw2ICs0NTMsNyBAQAogICAgIH0KIAogICAgIHJldHVybiAt cmV0dmFsOworI2VuZGlmCiB9CiAgICAKIC8qCkBAIC00MDQsNyArNDY0LDggQEAKICAqLwogCiBp bnQgTXlQdHlQcm9jZXNzOjpzZXR1cFRUWSgpCi17ICAgIAoreworI2lmbmRlZiBRX1dTX1dJTgog ICAgIC8vIFJlc2V0IHNpZ25hbCBoYW5kbGVycwogICAgIGZvciAoaW50IHNpZyA9IDE7IHNpZyA8 IE5TSUc7IHNpZysrKQogICAgICAgIHNpZ25hbChzaWcsIFNJR19ERkwpOwpAQCAtNDMyLDYgKzQ5 Myw2IEBACiAgICAgICAgIGtFcnJvcihQVFlQUk9DKSA8PCBrX2xpbmVpbmZvIDw8ICJ0Y3NldGF0 dHIoKTogIiA8PCBwZXJyb3IgPDwgIlxuIjsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQor I2VuZGlmCiAgICAgcmV0dXJuIDA7CiB9CkluZGV4OiBwcm9jZXNzLmgKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cHJvY2Vzcy5oCShyZXZpc2lvbiA4ODM4ODMpCisrKyBwcm9jZXNzLmgJKHdvcmtpbmcgY29weSkK QEAgLTEyLDExICsxMiwxNSBAQAogI2lmbmRlZiBfX1Byb2Nlc3NfaF9JbmNsdWRlZF9fCiAjZGVm aW5lIF9fUHJvY2Vzc19oX0luY2x1ZGVkX18KIAotI2luY2x1ZGUgPGtwdHkuaD4KLQogI2luY2x1 ZGUgPFF0Q29yZS9RQnl0ZUFycmF5PgogI2luY2x1ZGUgPFF0Q29yZS9RTGlzdD4KIAorI2lmbmRl ZiBRX1dTX1dJTgorI2luY2x1ZGUgPGtwdHkuaD4KKyNlbHNlCisjaW5jbHVkZSA8a3Byb2Nlc3Mu aD4KKyNlbmRpZgorCiAjZGVmaW5lIFBUWVBST0MgNzEyMAogCiB0eXBlZGVmIFFMaXN0PFFCeXRl QXJyYXk+IFFDU3RyaW5nTGlzdDsKQEAgLTUxLDEwICs1NSwxOCBAQAogICAgICAqIEByZXR1cm4g VGhlIG91dHB1dCBzdHJpbmcuCiAgICAgICovCiAgICAgUUJ5dGVBcnJheSByZWFkTGluZShib29s IGJsb2NrID0gdHJ1ZSkKKyNpZm5kZWYgUV9XU19XSU4KICAgICAgICAgeyByZXR1cm4gcmVhZExp bmVGcm9tKGZkKCksIG1fcHR5QnVmLCBibG9jayk7IH0KKyNlbHNlCisgICAgICAgIHsgcmV0dXJu IHJlYWRMaW5lRnJvbSgwLCBtX3B0eUJ1ZiwgYmxvY2spOyB9CisjZW5kaWYKIAogICAgIFFCeXRl QXJyYXkgcmVhZExpbmVGcm9tUHR5KGJvb2wgYmxvY2sgPSB0cnVlKQorI2lmbmRlZiBRX1dTX1dJ TgogICAgICAgICB7IHJldHVybiByZWFkTGluZUZyb20oZmQoKSwgbV9wdHlCdWYsIGJsb2NrKTsg fQorI2Vsc2UKKyAgICAgICAgeyByZXR1cm4gcmVhZExpbmVGcm9tKDAsIG1fcHR5QnVmLCBibG9j ayk7IH0KKyNlbmRpZgogCiAgICAgUUJ5dGVBcnJheSByZWFkTGluZUZyb21TdGRvdXQoYm9vbCBi bG9jayA9IHRydWUpCiAgICAgICAgIHsgcmV0dXJuIHJlYWRMaW5lRnJvbShtX3N0ZGlub3V0LCBt X3N0ZG91dEJ1ZiwgYmxvY2spOyB9CkBAIC0xMTYsOCArMTI4LDExIEBACiAgICAgdm9pZCBzZXRF cmFzZShib29sIGVyYXNlKSB7IG1fYkVyYXNlID0gZXJhc2U7IH0KIAogICAgIC8qKiBSZXR1cm4g dGhlIGZpbGVkZXNjcmlwdG9yIG9mIHRoZSBwcm9jZXNzLiAqLworI2lmbmRlZiBRX1dTX1dJTgog ICAgIGludCBmZCgpIHtyZXR1cm4gbV9wUFRZID8gbV9wUFRZLT5tYXN0ZXJGZCgpIDogLTE7fQot CisjZWxzZQorICAgIEtQcm9jZXNzICpmZCgpIHtyZXR1cm4gbV9wUFRZO30KKyNlbmRpZgogICAg IC8qKiBSZXR1cm4gdGhlIHBpZCBvZiB0aGUgcHJvY2Vzcy4gKi8KICAgICBpbnQgcGlkKCkge3Jl dHVybiBtX1BpZDt9CiAKQEAgLTEzNCw3ICsxNDksMTEgQEAKICAgICBpbnQgaW5pdCgpOwogICAg IGludCBzZXR1cFRUWSgpOwogCisjaWZuZGVmIFFfV1NfV0lOCiAgICAgS1B0eSAqbV9wUFRZOwor I2Vsc2UKKyAgICBLUHJvY2VzcyAqbV9wUFRZOworI2VuZGlmCiAgICAgUUJ5dGVBcnJheSBtX3B0 eUJ1ZiwgbV9zdGRlcnJCdWYsIG1fc3Rkb3V0QnVmOwogCiAgICAgUUJ5dGVBcnJheSByZWFkTGlu ZUZyb20oaW50IGZkLCBRQnl0ZUFycmF5JiBpbmJ1ZiwgYm9vbCBibG9jayk7Cg== ------=_Part_4345_19682498.1226682781905--