Re: [SPAM] valias remove alias
Drew Wells <[email protected]> Fri, 18 Sep 2015 15:21:25 +0100
| Newsgroups | gmane.mail.vpopmail |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --------------020200030005040500050403 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 09/18/2015 02:47 PM, Matt Brookings wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > Drew, I know you've put a lot of effort into these patches, but they do not succeed against the > 5.5.0 trunk. Patches should be made against the most recent revision, which can be checked out via > Subversion from Sourceforge. > > On 09/18/2015 08:11 AM, Drew Wells wrote: >> On 09/17/2015 04:55 PM, Matt Brookings wrote: >>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 >>> >>> On 09/17/2015 10:52 AM, Drew Wells wrote: >>>>>> I basically did a diff from 5.4.29 to 5.4.33 and implemented that diff to 5.5.0, some of >>>>>> it had already been done to 5.5.0 and alot of it centered around the snprintf tidy up's >>>>>> and the string_list implementation. The attached patch does not include any of the >>>>>> changes I recently sent to the mailing list, just the changes from 5.4.[29->33]. >>>> This patch was generated from the 5.5.0 .tar.bz2, I had a look at SVN trunk and from what I >>>> could see, it was 5.4.34. >>> The trunk on Sourceforge is the current 5.5.0. The 5.4 series only appears in the tags and >>> branches area now. I'll look over this patch and get it applied. Thanks for putting it >>> together! >>> >> And lastly for now, someone has done a lot of work in tidying up/making safe all the calls to >> snprintf(), the attached patch completes this work (I think). This patch comes after the >> 5.4.[29->33] patch I did. >> >> > Ok, have have downloaded a snapshot .zip file from Sourceforge (vpopmail-code-1034.zip) and applied the changes to that and attached the patch. This is the 5.4.[29-33] changes patch, I'll do the snprintf() one later. Let me know if you need me to do anything else with it. !DSPAM:55fc1de841551347274186! --------------020200030005040500050403 Content-Type: text/plain; charset=UTF-8; name="vpopmail-code-1034-trunk-5.4.x.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="vpopmail-code-1034-trunk-5.4.x.patch" ZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL2JhY2tlbmRzL215c3Fs L3ZteXNxbC5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay9iYWNrZW5kcy9teXNxbC92bXlz cWwuYwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvYmFja2VuZHMvbXlzcWwv dm15c3FsLmMJMjAxMC0xMC0yNiAxODoxNTozNi4wMDAwMDAwMDAgKzAxMDAKKysrIHZwb3Bt YWlsLWNvZGUtMTAzNC10cnVuay9iYWNrZW5kcy9teXNxbC92bXlzcWwuYwkyMDE1LTA5LTE4 IDE1OjAwOjA5LjgxMDA5NjY4MCArMDEwMApAQCAtMTc4NSwxMCArMTc4NSwxMCBAQAogICAg ICAgICBsaW1pdHMtPm1heGZvcndhcmRzID0gYXRvaShyb3dbMl0pOwogICAgICAgICBsaW1p dHMtPm1heGF1dG9yZXNwb25kZXJzID0gYXRvaShyb3dbM10pOwogICAgICAgICBsaW1pdHMt Pm1heG1haWxpbmdsaXN0cyA9IGF0b2kocm93WzRdKTsKLSAgICAgICAgbGltaXRzLT5kaXNr cXVvdGEgPSBhdG9pKHJvd1s1XSk7Ci0gICAgICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBh dG9pKHJvd1s2XSk7Ci0gICAgICAgIGxpbWl0cy0+ZGVmYXVsdHF1b3RhID0gYXRvaShyb3db N10pOwotICAgICAgICBsaW1pdHMtPmRlZmF1bHRtYXhtc2djb3VudCA9IGF0b2kocm93Wzhd KTsKKyAgICAgICAgbGltaXRzLT5kaXNrcXVvdGEgPSBzdHJ0b2xsKHJvd1s1XSwgTlVMTCwg MTApOworICAgICAgICBsaW1pdHMtPm1heG1zZ2NvdW50ID0gc3RydG9sbChyb3dbNl0sIE5V TEwsIDEwKTsKKyAgICAgICAgbGltaXRzLT5kZWZhdWx0cXVvdGEgPSBzdHJ0b2xsKHJvd1s3 XSwgTlVMTCwgMTApOworICAgICAgICBsaW1pdHMtPmRlZmF1bHRtYXhtc2djb3VudCA9IHN0 cnRvbGwocm93WzhdLCBOVUxMLCAxMCk7CiAgICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9wb3Ag PSBhdG9pKHJvd1s5XSk7CiAgICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9pbWFwID0gYXRvaShy b3dbMTBdKTsKICAgICAgICAgbGltaXRzLT5kaXNhYmxlX2RpYWx1cCA9IGF0b2kocm93WzEx XSk7CkBAIC0xODA4LDggKzE4MDgsOCBAQAogICAgICAgICBsaW1pdHMtPnBlcm1fbWFpbGxp c3RfdXNlcnMgPSBwZXJtICYgVkxJTUlUX0RJU0FCTEVfQUxMOwogICAgICAgICBwZXJtID4+ PSBWTElNSVRfRElTQUJMRV9CSVRTOwogICAgICAgICBsaW1pdHMtPnBlcm1fbWFpbGxpc3Rf bW9kZXJhdG9ycyA9IHBlcm0gJiBWTElNSVRfRElTQUJMRV9BTEw7Ci0gICAgICAgIGxpbWl0 cy0+cGVybV9xdW90YSA9IGF0b2kocm93WzIzXSk7Ci0gICAgICAgIGxpbWl0cy0+cGVybV9k ZWZhdWx0cXVvdGEgPSBhdG9pKHJvd1syNF0pOworICAgICAgICBsaW1pdHMtPnBlcm1fcXVv dGEgPSBzdHJ0b2xsKHJvd1syM10sIE5VTEwsIDEwKTsKKyAgICAgICAgbGltaXRzLT5wZXJt X2RlZmF1bHRxdW90YSA9IHN0cnRvbGwocm93WzI0XSwgTlVMTCwgMTApOwogICAgIH0KICAg ICBteXNxbF9mcmVlX3Jlc3VsdChyZXNfcmVhZCk7CiAKQEAgLTE4MzAsNyArMTgzMCw3IEBA CiAgICAgICAgICJkaXNrcXVvdGEgPSAlZCwgbWF4bXNnY291bnQgPSAlZCwgZGVmYXVsdHF1 b3RhID0gJWQsIGRlZmF1bHRtYXhtc2djb3VudCA9ICVkLCAiCiAgICAgICAgICJkaXNhYmxl X3BvcCA9ICVkLCBkaXNhYmxlX2ltYXAgPSAlZCwgZGlzYWJsZV9kaWFsdXAgPSAlZCwgIgog ICAgICAgICAiZGlzYWJsZV9wYXNzd29yZGNoYW5naW5nID0gJWQsIGRpc2FibGVfd2VibWFp bCA9ICVkLCBkaXNhYmxlX3JlbGF5ID0gJWQsICIKLSAgICAgICAgImRpc2FibGVfc210cCA9 ICVkLCBkaXNhYmxlX3NwYW1hc3Nhc3NpbiA9ICVkLCBkZWxldGVfc3BhbSA9ICVkLCBwZXJt X2FjY291bnQgPSAlZCwgIgorICAgICAgICAiZGlzYWJsZV9zbXRwID0gJWQsIGRpc2FibGVf c3BhbWFzc2Fzc2luID0gJWQsIGRlbGV0ZV9zcGFtID0gJWQsIGRpc2FibGVfbWFpbGRyb3Ag PSAlZCwgcGVybV9hY2NvdW50ID0gJWQsICIKICAgICAgICAgInBlcm1fYWxpYXMgPSAlZCwg cGVybV9mb3J3YXJkID0gJWQsIHBlcm1fYXV0b3Jlc3BvbmRlciA9ICVkLCBwZXJtX21haWxs aXN0ID0gJWQsICIKICAgICAgICAgInBlcm1fcXVvdGEgPSAlZCwgcGVybV9kZWZhdWx0cXVv dGEgPSAlZCAiCiAgICAgICAgICJPTiBEVVBMSUNBVEUgS0VZIFVQREFURSAiCkBAIC0xODQ3 LDcgKzE4NDcsNyBAQAogICAgICAgICBsaW1pdHMtPmRpc2txdW90YSwgbGltaXRzLT5tYXht c2djb3VudCwgbGltaXRzLT5kZWZhdWx0cXVvdGEsIGxpbWl0cy0+ZGVmYXVsdG1heG1zZ2Nv dW50LAogICAgICAgICBsaW1pdHMtPmRpc2FibGVfcG9wLCBsaW1pdHMtPmRpc2FibGVfaW1h cCwgbGltaXRzLT5kaXNhYmxlX2RpYWx1cCwKICAgICAgICAgbGltaXRzLT5kaXNhYmxlX3Bh c3N3b3JkY2hhbmdpbmcsIGxpbWl0cy0+ZGlzYWJsZV93ZWJtYWlsLCBsaW1pdHMtPmRpc2Fi bGVfcmVsYXksCi0gICAgICAgIGxpbWl0cy0+ZGlzYWJsZV9zbXRwLCBsaW1pdHMtPmRpc2Fi bGVfc3BhbWFzc2Fzc2luLCBsaW1pdHMtPmRlbGV0ZV9zcGFtLCBsaW1pdHMtPnBlcm1fYWNj b3VudCwKKyAgICAgICAgbGltaXRzLT5kaXNhYmxlX3NtdHAsIGxpbWl0cy0+ZGlzYWJsZV9z cGFtYXNzYXNzaW4sIGxpbWl0cy0+ZGVsZXRlX3NwYW0sIGxpbWl0cy0+ZGlzYWJsZV9tYWls ZHJvcCwgbGltaXRzLT5wZXJtX2FjY291bnQsCiAgICAgICAgIGxpbWl0cy0+cGVybV9hbGlh cywgbGltaXRzLT5wZXJtX2ZvcndhcmQsIGxpbWl0cy0+cGVybV9hdXRvcmVzcG9uZGVyLAog ICAgICAgICAobGltaXRzLT5wZXJtX21haWxsaXN0IHwKICAgICAgICAgICAgIChsaW1pdHMt PnBlcm1fbWFpbGxpc3RfdXNlcnMgPDwgVkxJTUlUX0RJU0FCTEVfQklUUykgfApkaWZmIC11 UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvYmFja2VuZHMvbXlzcWwvdm15c3Fs LmguaW4gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL2JhY2tlbmRzL215c3FsL3ZteXNxbC5o LmluCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9iYWNrZW5kcy9teXNxbC92 bXlzcWwuaC5pbgkyMDEwLTEwLTI2IDE4OjE1OjM2LjAwMDAwMDAwMCArMDEwMAorKysgdnBv cG1haWwtY29kZS0xMDM0LXRydW5rL2JhY2tlbmRzL215c3FsL3ZteXNxbC5oLmluCTIwMTUt MDktMTggMTU6MDA6MDkuODEwMDk2NjgwICswMTAwCkBAIC0yNjgsMTAgKzI2OCwxMCBAQAog ICAgICAgbWF4Zm9yd2FyZHMgICAgICAgICAgICAgIElOVCgxMCkgTk9UIE5VTEwgREVGQVVM VCAtMSwgXAogICAgICAgbWF4YXV0b3Jlc3BvbmRlcnMgICAgICAgIElOVCgxMCkgTk9UIE5V TEwgREVGQVVMVCAtMSwgXAogICAgICAgbWF4bWFpbGluZ2xpc3RzICAgICAgICAgIElOVCgx MCkgTk9UIE5VTEwgREVGQVVMVCAtMSwgXAotICAgICAgZGlza3F1b3RhICAgICAgICAgICAg ICAgIElOVCgxMikgTk9UIE5VTEwgREVGQVVMVCAwLCBcCi0gICAgICBtYXhtc2djb3VudCAg ICAgICAgICAgICAgSU5UKDEyKSBOT1QgTlVMTCBERUZBVUxUIDAsIFwKLSAgICAgIGRlZmF1 bHRxdW90YSAgICAgICAgICAgICBJTlQoMTIpIE5PVCBOVUxMIERFRkFVTFQgMCwgXAotICAg ICAgZGVmYXVsdG1heG1zZ2NvdW50ICAgICAgIElOVCgxMikgTk9UIE5VTEwgREVGQVVMVCAw LCBcCisgICAgICBkaXNrcXVvdGEgICAgICAgICAgICAgICAgQklHSU5UIFVOU0lHTkVEIE5P VCBOVUxMIERFRkFVTFQgMCwgXAorICAgICAgbWF4bXNnY291bnQgICAgICAgICAgICAgIEJJ R0lOVCBVTlNJR05FRCBOT1QgTlVMTCBERUZBVUxUIDAsIFwKKyAgICAgIGRlZmF1bHRxdW90 YSAgICAgICAgICAgICBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwLCBcCisg ICAgICBkZWZhdWx0bWF4bXNnY291bnQgICAgICAgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxM IERFRkFVTFQgMCwgXAogICAgICAgZGlzYWJsZV9wb3AgICAgICAgICAgICAgIFRJTllJTlQo MSkgTk9UIE5VTEwgREVGQVVMVCAwLCBcCiAgICAgICBkaXNhYmxlX2ltYXAgICAgICAgICAg ICAgVElOWUlOVCgxKSBOT1QgTlVMTCBERUZBVUxUIDAsIFwKICAgICAgIGRpc2FibGVfZGlh bHVwICAgICAgICAgICBUSU5ZSU5UKDEpIE5PVCBOVUxMIERFRkFVTFQgMCwgXApkaWZmIC11 UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvYmFja2ZpbGwuYyB2cG9wbWFpbC1j b2RlLTEwMzQtdHJ1bmsvYmFja2ZpbGwuYwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5r Lm9yaWcvYmFja2ZpbGwuYwkyMDA5LTEyLTEwIDE2OjA0OjQ1LjAwMDAwMDAwMCArMDAwMAor KysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL2JhY2tmaWxsLmMJMjAxNS0wOS0xOCAxNTow MDowOS44MTEwOTY2MjUgKzAxMDAKQEAgLTEzLDcgKzEzLDkgQEAKICNpbmNsdWRlIDx1bmlz dGQuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgor I2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSAidnBvcG1haWwuaCIKKyNpbmNsdWRlICJm aWxlX2xvY2suaCIKICNpbmNsdWRlICJ2YXV0aC5oIgogI2luY2x1ZGUgInZhdXRobW9kdWxl LmgiCiAKQEAgLTM3LDYgKzM5LDcgQEAKIAlpbnQgICAgICAgICAgICAgZmQ7CiAjaWZkZWYg RklMRV9MT0NLSU5HCiAJaW50ICAgICAgICAgICAgIGxvY2tmZDsKKwljaGFyCQlsb2NrZmls ZVtNQVhfQlVGRl07CiAjZW5kaWYKIAogCWlmIChzdGF0KGZpbGVuYW1lLCAmc3RhdGJ1Zikp CmRpZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9jbGllbnQuYyB2cG9w bWFpbC1jb2RlLTEwMzQtdHJ1bmsvY2xpZW50LmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10 cnVuay5vcmlnL2NsaWVudC5jCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAwMDAwMDAwICswMDAw CisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvY2xpZW50LmMJMjAxNS0wOS0xOCAxNTow MDowOS44MTEwOTY2MjUgKzAxMDAKQEAgLTc4LDY2ICs3OCw2NCBAQAogCiAgICBjb25maWcg PSBjb25maWdfYmVnaW4oInZ1c2FnZWMuY29uZiIpOwogICAgaWYgKGNvbmZpZyA9PSBOVUxM KQotCSAgZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogd2FybmluZzogY29uZmln X2JlZ2luIGZhaWxlZFxuIik7CisJICByZXR1cm4gTlVMTDsKIAogICAgLyoKIAkgIERpc2Fi bGVkIGNoZWNrCiAgICAqLwogCi0gICBlbHNlIHsKLQkgIHN0ciA9IGNvbmZpZ19mZXRjaF9i eV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJEaXNhYmxlIik7Ci0JICBpZiAoKHN0cikgJiYg KCpzdHIpKSB7Ci0JCSBpZiAoIShzdHJjYXNlY21wKHN0ciwgIlRydWUiKSkpIHsKLQkJCWNv bmZpZ19raWxsKGNvbmZpZyk7Ci0JCQlyZXR1cm4gTlVMTDsKLQkJIH0KLQkgIH0KKyAgIHN0 ciA9IGNvbmZpZ19mZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJEaXNhYmxlIik7 CisgICBpZiAoKHN0cikgJiYgKCpzdHIpKSB7CisJaWYgKCEoc3RyY2FzZWNtcChzdHIsICJU cnVlIikpKSB7CisJICAgIGNvbmZpZ19raWxsKGNvbmZpZyk7CisJICAgIHJldHVybiBOVUxM OworCSB9CisgICB9CiAKLQkgIC8qCi0JCSBHZXQgdGltZW91dAotCSAgKi8KLQotCSAgc3Ry ID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlRpbWVvdXQiKTsK LQkgIGlmIChzdHIpIHsKLQkJIGZsID0gYXRvaShzdHIpOwotCQkgaWYgKChmbCA9PSAtMSkg fHwgKGZsID09IDApKQotCQkJZnByaW50ZihzdGRlcnIsICJjbGllbnRfY29ubmVjdDogY29u ZmlndXJhdGlvbiBlcnJvcjogU2VydmVyOjpUaW1lb3V0OiAlc1xuIiwgc3RyKTsKLQkJIGVs c2UKLQkJCXRpbWVvdXQgPSBmbDsKLQkgIH0KKyAgIC8qCisJICBHZXQgdGltZW91dAorICAg Ki8KIAotCSAgLyoKLQkJIERldGVybWluZSBjb25uZWN0aW9uIHR5cGUKLQkgICovCi0KLQkg IHN0ciA9IGNvbmZpZ19mZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJSZW1vdGUi KTsKLQkgIGlmIChzdHIpIHsKLQkJIHJldCA9IGlwcHBfcGFyc2Uoc3RyLCAmYWRkcik7Ci0J CSBpZiAoIXJldCkgewotCQkJY29uZmlnX2tpbGwoY29uZmlnKTsKLQkJCWZwcmludGYoc3Rk ZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZpZ3VyYXRpb24gZXJyb3I6IFNlcnZlcjo6UmVt b3RlOiAlc1xuIiwgc3RyKTsKLQkJCXJldHVybiBOVUxMOwotCQkgfQotCSAgfQorICAgc3Ry ID0gY29uZmlnX2ZldGNoX2J5X25hbWUoY29uZmlnLCAiU2VydmVyIiwgIlRpbWVvdXQiKTsK KyAgIGlmIChzdHIpIHsKKwlmbCA9IGF0b2koc3RyKTsKKwlpZiAoKGZsID09IC0xKSB8fCAo ZmwgPT0gMCkpCisJICAgIGZwcmludGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZp Z3VyYXRpb24gZXJyb3I6IFNlcnZlcjo6VGltZW91dDogJXNcbiIsIHN0cik7CisJZWxzZQor CSAgICB0aW1lb3V0ID0gZmw7CisJfQogCi0JICBlbHNlIHsKLQkJIHN0ciA9IGNvbmZpZ19m ZXRjaF9ieV9uYW1lKGNvbmZpZywgIlNlcnZlciIsICJGaWxlbmFtZSIpOwotCQkgaWYgKHN0 cikgewotCQkJaWYgKCEoKnN0cikpIHsKLQkJCSAgIGNvbmZpZ19raWxsKGNvbmZpZyk7Ci0J CQkgICBmcHJpbnRmKHN0ZGVyciwgImNsaWVudF9jb25uZWN0OiBjb25maWd1cmF0aW9uIGVy cm9yOiBTZXJ2ZXI6OkZpbGVuYW1lXG4iKTsKLQkJCSAgIHJldHVybiBOVUxMOwotCQkJfQot Ci0JCQlmbCA9IHN0cmxlbihzdHIpOwotCQkJaWYgKGZsID49IHNpemVvZihzb2NrZXRfZmls ZSkpCi0JCQkgICBmbCA9IChzaXplb2Yoc29ja2V0X2ZpbGUpIC0gMSk7CisgICAvKgorCSAg RGV0ZXJtaW5lIGNvbm5lY3Rpb24gdHlwZQorICAgKi8KIAotCQkJbWVtY3B5KHNvY2tldF9m aWxlLCBzdHIsIGZsKTsKLQkJIH0KLQkgIH0KKyAgIHN0ciA9IGNvbmZpZ19mZXRjaF9ieV9u YW1lKGNvbmZpZywgIlNlcnZlciIsICJSZW1vdGUiKTsKKyAgIGlmIChzdHIpIHsKKwlyZXQg PSBpcHBwX3BhcnNlKHN0ciwgJmFkZHIpOworCWlmICghcmV0KSB7CisJICAgIGNvbmZpZ19r aWxsKGNvbmZpZyk7CisJICAgIGZwcmludGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNv bmZpZ3VyYXRpb24gZXJyb3I6IFNlcnZlcjo6UmVtb3RlOiAlc1xuIiwgc3RyKTsKKwkgICAg cmV0dXJuIE5VTEw7CisJfQorICAgfQorCisgICBlbHNlIHsKKwlzdHIgPSBjb25maWdfZmV0 Y2hfYnlfbmFtZShjb25maWcsICJTZXJ2ZXIiLCAiRmlsZW5hbWUiKTsKKwlpZiAoc3RyKSB7 CisJICAgIGlmICghKCpzdHIpKSB7CisJCWNvbmZpZ19raWxsKGNvbmZpZyk7CisJCWZwcmlu dGYoc3RkZXJyLCAiY2xpZW50X2Nvbm5lY3Q6IGNvbmZpZ3VyYXRpb24gZXJyb3I6IFNlcnZl cjo6RmlsZW5hbWVcbiIpOworCQlyZXR1cm4gTlVMTDsKKwkgICAgfQorCisJICAgIGZsID0g c3RybGVuKHN0cik7CisJICAgIGlmIChmbCA+PSBzaXplb2Yoc29ja2V0X2ZpbGUpKQorCQlm bCA9IChzaXplb2Yoc29ja2V0X2ZpbGUpIC0gMSk7CisKKwkgICAgbWVtY3B5KHNvY2tldF9m aWxlLCBzdHIsIGZsKTsKKwl9CiAKLQkgIGNvbmZpZ19raWxsKGNvbmZpZyk7CisJY29uZmln X2tpbGwoY29uZmlnKTsKICAgIH0KIAogICAgLyoKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUt MTAzNC10cnVuay5vcmlnL2NvbmYuYyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvY29uZi5j Ci0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9jb25mLmMJMjAwOS0wOS0wOCAx NjowODo0My4wMDAwMDAwMDAgKzAxMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay9j b25mLmMJMjAxNS0wOS0xOCAxNTowMDowOS44MTIwOTY1NzIgKzAxMDAKQEAgLTc4NywxMyAr Nzg3LDEyIEBACiBjaGFyICpjb25maWdfZmV0Y2hfYnlfbnVtKGNvbmZpZ190ICpjLCBjaGFy ICpsYWJlbCwgaW50IG51bSkKIHsgIAogICBpbnQgY3VyID0gMDsKKyAgY29uZmlnX2xhYmVs X3QgKmwgPSBOVUxMOworICBjb25maWdfYXRvbV90ICphID0gTlVMTDsKIAogICBpZiAoYyA9 PSBOVUxMKQogCSByZXR1cm4gTlVMTDsKIAotICBjb25maWdfbGFiZWxfdCAqbCA9IE5VTEw7 Ci0gIGNvbmZpZ19hdG9tX3QgKmEgPSBOVUxMOwotCiAgIGlmIChjLT5sYWJlbHMgPT0gTlVM TCkKICAgICAgcmV0dXJuIE5VTEw7CiAKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10 cnVuay5vcmlnL2RvYy9VUEdSQURFIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay9kb2MvVVBH UkFERQotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvZG9jL1VQR1JBREUJMjAw OS0xMi0xMCAxNjowNDo0NS4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAz NC10cnVuay9kb2MvVVBHUkFERQkyMDE1LTA5LTE4IDE1OjAwOjA5LjgxMzA5NjUyMSArMDEw MApAQCAtNCw2ICs0LDE1IEBACiBpbnRvIHRoZSB2cG9wbWFpbCBsaWJyYXJpZXMuICBUaGVz ZSBpbmNsdWRlIFFtYWlsQWRtaW4sIHFtYWlsLXNtdHBkIChpZiAKIHlvdSBoYXZlIHRoZSBj aGt1c2VyIHBhdGNoIGFwcGxpZWQpLCBDb3VyaWVyLUlNQVAgZXRjLgogCisrVXBncmFkaW5n IHRvIHZwb3BtYWlsLTUuNC4zMworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKytJ ZiB5b3UgYXJlIHN0b3JpbmcgbGltaXRzIGluIE15U1FMLCB0aGUgZm9sbG93aW5nIHNjaGVt YSBjaGFuZ2VzIG11c3QgYmUgbWFkZToKKysKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBBREQg YGRpc2FibGVfbWFpbGRyb3BgIFRJTllJTlQoMSkgREVGQVVMVCAnMCcgTk9UIE5VTEwgQUZU RVIgYGRpc2FibGVfc3BhbWFzc2Fzc2luYDsKKytBTFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJ RlkgYGRpc2txdW90YWAgQklHSU5UIFVOU0lHTkVEIE5PVCBOVUxMIERFRkFVTFQgMDsKKytB TFRFUiBUQUJMRSBgbGltaXRzYCBNT0RJRlkgYG1heG1zZ2NvdW50YCBCSUdJTlQgVU5TSUdO RUQgTk9UIE5VTEwgREVGQVVMVCAwOworK0FMVEVSIFRBQkxFIGBsaW1pdHNgIE1PRElGWSBg ZGVmYXVsdHF1b3RhYCBCSUdJTlQgVU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOworK0FM VEVSIFRBQkxFIGBsaW1pdHNgIE1PRElGWSBgZGVmYXVsdG1heG1zZ2NvdW50YCBCSUdJTlQg VU5TSUdORUQgTk9UIE5VTEwgREVGQVVMVCAwOwogCiBVcGdyYWRpbmcgdG8gdnBvcG1haWwt NS40LjE4CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLXVQciB2cG9wbWFp bC1jb2RlLTEwMzQtdHJ1bmsub3JpZy9tYWlsZGlycXVvdGEuYyB2cG9wbWFpbC1jb2RlLTEw MzQtdHJ1bmsvbWFpbGRpcnF1b3RhLmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5v cmlnL21haWxkaXJxdW90YS5jCTIwMTEtMDItMjggMTc6MjE6MDMuMDAwMDAwMDAwICswMDAw CisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvbWFpbGRpcnF1b3RhLmMJMjAxNS0wOS0x OCAxNTowMDowOS44MTQwOTY0NzEgKzAxMDAKQEAgLTQyLDE2ICs0MiwxNiBAQAogCiAvKiBw cml2YXRlIGZ1bmN0aW9ucyAtIG5vIG5hbWUgY2xhc2hlcyB3aXRoIGNvdXJpZXIgKi8KIHN0 YXRpYyBjaGFyICptYWtlbmV3bWFpbGRpcnNpemVuYW1lKGNvbnN0IGNoYXIgKiwgaW50ICop Owotc3RhdGljIGludCBjb3VudGN1cm5ldyhjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAqbWF4 dGltZSwgb2ZmX3QgKnNpemVwLCBpbnQgKmNudHApOwotc3RhdGljIGludCBjb3VudHN1YmRp cihjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKnN1YmRpciwgdGltZV90ICptYXh0aW1l LCBvZmZfdCAqc2l6ZXAsIGludCAqY250cCk7CitzdGF0aWMgaW50IGNvdW50Y3VybmV3KGNv bnN0IGNoYXIgKmRpciwgdGltZV90ICptYXh0aW1lLCBzdG9yYWdlX3QgKnNpemVwLCBzdG9y YWdlX3QgKmNudHApOworc3RhdGljIGludCBjb3VudHN1YmRpcihjb25zdCBjaGFyICpkaXIs IGNvbnN0IGNoYXIgKnN1YmRpciwgdGltZV90ICptYXh0aW1lLCBzdG9yYWdlX3QgKnNpemVw LCBzdG9yYWdlX3QgKmNudHApOwogc3RhdGljIGludCBzdGF0Y3VybmV3KGNvbnN0IGNoYXIg KmRpciwgdGltZV90ICptYXh0aW1lc3RhbXApOwogc3RhdGljIGludCBzdGF0c3ViZGlyKGNv bnN0IGNoYXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUpOwog c3RhdGljIGludCBkb2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRpciwgaW50IG1haWxkaXJzaXpl X2ZkLCBjb25zdCBjaGFyICpxdW90YV90eXBlLCAKLSAgICAgICAgICAgICAgICAgICAgICBs b25nIG1haWxkaXJzaXplX3NpemUsIGludCBtYWlsZGlyc2l6ZV9jbnQsIGludCBpc25ldyk7 CisgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZV90IG1haWxkaXJzaXplX3NpemUsIHN0 b3JhZ2VfdCBtYWlsZGlyc2l6ZV9jbnQsIGludCBpc25ldyk7CiBzdGF0aWMgaW50IGRvY2hl Y2txdW90YShjb25zdCBjaGFyICpkaXIsIGludCAqbWFpbGRpcnNpemVfZmRwdHIsIGNvbnN0 IGNoYXIgKnF1b3RhX3R5cGUsIAotICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB4dHJh X3NpemUsIGludCB4dHJhX2NudCwgaW50ICpwZXJjZW50YWdlKTsKLXN0YXRpYyBpbnQgZG9j b3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVfdCAqZGlyc3RhbXAsIG9mZl90ICpzaXplcCwg aW50ICpjbnRwKTsKLXN0YXRpYyBpbnQgbWFpbGRpcl9jaGVja3F1b3RhKGNvbnN0IGNoYXIg KmRpciwgaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwgY29uc3QgY2hhciAqcXVvdGFfdHlwZSwg bG9uZyB4dHJhX3NpemUsIGludCB4dHJhX2NudCk7CisgICAgICAgICAgICAgICAgICAgICAg ICBzdG9yYWdlX3QgeHRyYV9zaXplLCBzdG9yYWdlX3QgeHRyYV9jbnQsIGludCAqcGVyY2Vu dGFnZSk7CitzdGF0aWMgaW50IGRvY291bnQoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKmRp cnN0YW1wLCBzdG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApOworc3RhdGljIGlu dCBtYWlsZGlyX2NoZWNrcXVvdGEoY29uc3QgY2hhciAqZGlyLCBpbnQgKm1haWxkaXJzaXpl X2ZkcHRyLCBjb25zdCBjaGFyICpxdW90YV90eXBlLCBzdG9yYWdlX3QgeHRyYV9zaXplLCBz dG9yYWdlX3QgeHRyYV9jbnQpOwogLyogIG1vdmVkIGludG8gbWFpbGRpcnF1b3RhLmggYXMg bm9uLXN0YXRpYwogc3RhdGljIGludCBtYWlsZGlyX2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRp ciwgaW50IG1haWxkaXJzaXplX2ZkLAogCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcg bWFpbGRpcnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCk7CkBAIC01OSw3ICs1OSw3 IEBACiBzdGF0aWMgaW50IG1haWxkaXJfc2FmZW9wZW4oY29uc3QgY2hhciAqcGF0aCwgaW50 IG1vZGUsIGludCBwZXJtKTsKIHN0YXRpYyBjaGFyICpzdHJfcGlkX3QocGlkX3QgdCwgY2hh ciAqYXJnKTsKIHN0YXRpYyBjaGFyICpzdHJfdGltZV90KHRpbWVfdCB0LCBjaGFyICphcmcp Owotc3RhdGljIGludCBtYWlsZGlyX3BhcnNlcXVvdGEoY29uc3QgY2hhciAqbiwgdW5zaWdu ZWQgbG9uZyAqcyk7CitzdGF0aWMgaW50IG1haWxkaXJfcGFyc2VxdW90YShjb25zdCBjaGFy ICpuLCBzdG9yYWdlX3QgKnMpOwogCiAjZGVmaW5lICBOVU1CVUZTSVpFICAgICAgNjAKICNk ZWZpbmUJTURRVU9UQV9TSVpFCSdTJwkvKiBUb3RhbCBzaXplIG9mIGFsbCBtZXNzYWdlcyBp biBtYWlsZGlyICovCkBAIC03NSwxMCArNzUsMTEgQEAKIGNoYXIJZG9tZGlyW01BWF9QV19E SVJdOwogY2hhcgkqcDsKIGNoYXIJZG9tYWluWzI1Nl0sIHFiWzI1Nl0gPSB7IDAgfTsKLWxv bmcgICAgc2l6ZSA9IDA7Ci11bnNpZ25lZCBsb25nIG1heHNpemUgPSAwOwotaW50CWNudCA9 IDAsIHJldCA9IDA7Ci1pbnQJbWF4Y250ID0gMDsKK3N0b3JhZ2VfdCBzaXplID0gMDsKK3N0 b3JhZ2VfdCBtYXhzaXplID0gMDsKK3N0b3JhZ2VfdCBjbnQgPSAwOworaW50IHJldCA9IDA7 CitzdG9yYWdlX3QgbWF4Y250ID0gMDsKIHN0cnVjdCB2bGltaXRzIGxpbWl0czsKICAgIHN0 b3JhZ2VfdCBzdXNhZ2UgPSAwLCBjdXNhZ2UgPSAwOwogCkBAIC0xNDQsNyArMTQ1LDcgQEAK ICAgICAgICAgcmV0dXJuIDA7CiB9CiAKLWludCByZWFkZG9tYWlucXVvdGEoY29uc3QgY2hh ciAqZGlyLCBsb25nICpzaXplcCwgaW50ICpjbnRwKQoraW50IHJlYWRkb21haW5xdW90YShj b25zdCBjaGFyICpkaXIsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsK IGludCB0cmllczsKIGNoYXIJY2hlY2tkaXJbMjU2XTsKQEAgLTIwNSw3ICsyMDYsNyBAQAog CXJldHVybiAwOwogfQogCi1pbnQgd3JhcHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGly LCBvZmZfdCAqc2l6ZXAsIGludCAqY250cCkKK2ludCB3cmFwcmVhZHVzZXJxdW90YShjb25z dCBjaGFyKiBkaXIsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIHRp bWVfdAl0bTsKIHRpbWVfdAltYXh0aW1lOwpAQCAtMjg0LDEwICsyODUsMTAgQEAKIAogCXJl dHVybiAwOwogfQotaW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBsb25nICpz aXplcCwgaW50ICpjbnRwKQoraW50IHJlYWR1c2VycXVvdGEoY29uc3QgY2hhciogZGlyLCBz dG9yYWdlX3QgKnNpemVwLCBzdG9yYWdlX3QgKmNudHApCiB7CiAJaW50IHJldHZhbDsKLQlv ZmZfdCBzOworCXN0b3JhZ2VfdCBzOwogCQogCXMgPSAob2ZmX3QpICpzaXplcDsKIAlyZXR2 YWwgPSB3cmFwcmVhZHVzZXJxdW90YShkaXIsICZzLCBjbnRwKTsKQEAgLTM0OCw4ICszNDks OCBAQAogCiBzdGF0aWMgaW50IG1haWxkaXJzaXplX3JlYWQoY29uc3QgY2hhciAqZmlsZW5h bWUsCS8qIFRoZSBmaWxlbmFtZSAqLwogCWludCAqZmRwdHIsCS8qIEtlZXAgdGhlIGZpbGUg ZGVzY3JpcHRvciBvcGVuICovCi0Jb2ZmX3QgKnNpemVwdHIsCS8qIEdyYW5kIHRvdGFsIG9m IG1haWxkaXIgc2l6ZSAqLwotCWludCAqY250cHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBtZXNz YWdlIGNvdW50ICovCisJc3RvcmFnZV90ICpzaXplcHRyLCAvKiBHcmFuZCB0b3RhbCBvZiBt YWlsZGlyIHNpemUgKi8KKwlzdG9yYWdlX3QgKmNudHB0ciwgLyogR3JhbmQgdG90YWwgb2Yg bWVzc2FnZSBjb3VudCAqLwogCXVuc2lnbmVkICpubGluZXMsIC8qICMgb2YgbGluZXMgaW4g bWFpbGRpcnNpemUgKi8KIAlzdHJ1Y3Qgc3RhdCAqc3RhdHB0cikJLyogVGhlIHN0YXRzIG9u IG1haWxkaXJzaXplICovCiB7CkBAIC0zNTcsOCArMzU4LDkgQEAKICBpbnQgZjsKICBjaGFy ICpwOwogIHVuc2lnbmVkIGw7Ci0gaW50IG47Cisgc3RvcmFnZV90IG47CiAgaW50IGZpcnN0 OworIGludCByZXQgPSAwOwogCiAgICAvKgogCSAgT2xkLXN0eWxlCkBAIC0zNzEsNiArMzcz LDE4IEBACiAJcD1idWY7CiAJbD1zaXplb2YoYnVmKTsKIAorCS8qCisJCU1haWxkaXIrKyBz cGVjaWZpY2F0aW9uIHNheXMgdG8gcmVidWlsZCB0aGUgbWFpbGRpcnNpemUgZmlsZSBpZiB0 aGUKKwkJZmlsZSBpcyA1MTIwIG9yIG1vcmUgYnl0ZXMsIG9yIGlzIG1vcmUgdGhhbiAxNSBt aW51dGVzIG9sZAorCSovCisKKwlyZXQgPSBmc3RhdChmLCBzdGF0cHRyKTsKKwlpZiAoKHJl dCAhPSAtMSkgJiYgKChzdGF0cHRyLT5zdF9zaXplID49IDUxMjApIHx8ICh0aW1lKE5VTEwp ID4gc3RhdHB0ci0+c3RfbXRpbWUgKyAoMTUqNjApKSkpIHsKKwkgICB1bmxpbmsoZmlsZW5h bWUpOworCSAgIGNsb3NlKGYpOworCSAgIHJldHVybiAtMTsKKwl9CisKIAl3aGlsZSAobCkK IAl7CiAJCW49cmVhZChmLCBwLCBsKTsKQEAgLTM4Myw3ICszOTcsNyBAQAogCQlwICs9IG47 CiAJCWwgLT0gbjsKIAl9Ci0JaWYgKGwgPT0gMCB8fCBmc3RhdChmLCBzdGF0cHRyKSkJLyog bWFpbGRpciB0b28gYmlnICovCisJaWYgKGwgPT0gMCB8fCByZXQpCS8qIG1haWxkaXIgdG9v IGJpZyAqLwogCXsKIAkJY2xvc2UoZik7CiAJCXJldHVybiAoLTEpOwpAQCAtMzk3LDggKzQx MSw4IEBACiAJZmlyc3Q9MTsKIAl3aGlsZSAoKnApCiAJewotCWxvbmcgbj0wOwotCWludCBj PTA7CisJc3RvcmFnZV90IG49MDsKKwlzdG9yYWdlX3QgYz0wOwogCWNoYXIJKnE9cDsKIAog CQl3aGlsZSAoKnApCkBAIC00MTMsNyArNDI3LDcgQEAKIAkJCWZpcnN0PTA7CiAJCQljb250 aW51ZTsKIAkJfQotCQlzc2NhbmYocSwgIiVsZCAlZCIsICZuLCAmYyk7CisJCXNzY2FuZihx LCAiJWxsdSAlbGx1IiwgJm4sICZjKTsKIAkJKnNpemVwdHIgKz0gbjsKIAkJKmNudHB0ciAr PSBjOwogCQkrKyAqbmxpbmVzOwpAQCAtNDIyLDkgKzQzNiw5IEBACiAJcmV0dXJuICgwKTsK IH0KIAotc3RhdGljIGludCBxY2FsYyhvZmZfdCBzLCB1bnNpZ25lZCBuLCBjb25zdCBjaGFy ICpxdW90YSwgaW50ICpwZXJjZW50YWdlKQorc3RhdGljIGludCBxY2FsYyhzdG9yYWdlX3Qg cywgc3RvcmFnZV90IG4sIGNvbnN0IGNoYXIgKnF1b3RhLCBpbnQgKnBlcmNlbnRhZ2UpCiB7 Ci1vZmZfdCBpOworc3RvcmFnZV90IGk7CiBpbnQJc3BlcmNlbnRhZ2U9MDsKIGludAlucGVy Y2VudGFnZT0wOwogCkBAIC00NDksNiArNDYzLDcgQEAKIAkJCQlyZXR1cm4gKC0xKTsKIAkJ CX0KIAorI2lmIDAKIAkJCS8qCiAJCQkqKiBGb3IgaHVnZSBxdW90YXMsIG92ZXIgMjBtYiwK IAkJCSoqIGRpdmlkZSBudW1lcmF0b3IgJiBkZW5vbWluYXRvciBieSAxMDI0IHRvIHByZXZl bnQKQEAgLTQ1Nyw2ICs0NzIsNyBAQAogCiAJCQl4PTE7CiAJCQlpZiAoaSA+IDIwMDAwMDAw KSB4PTEwMjQ7CisjZW5kaWYKIAogCQkJc3BlcmNlbnRhZ2UgPSBpID8gKHMveCkgKiAxMDAg LyAoaS94KToxMDA7CiAJCQlicmVhazsKQEAgLTQ2OCwxMCArNDg0LDEyIEBACiAJCQkJcmV0 dXJuICgtMSk7CiAJCQl9CiAKKyNpZiAwCiAJCQkvKiBEaXR0byAqLwogCiAJCQl4PTE7CiAJ CQlpZiAoaSA+IDIwMDAwMDAwKSB4PTEwMjQ7CisjZW5kaWYKIAogCQkJbnBlcmNlbnRhZ2Ug PSBpID8gKChvZmZfdCluL3gpICogMTAwIC8gKGkveCk6MTAwOwogCQkJYnJlYWs7CkBAIC00 ODQsOCArNTAyLDggQEAKIHN0YXRpYyBpbnQgbWFpbGRpcl9jaGVja3F1b3RhKGNvbnN0IGNo YXIgKmRpciwKIAlpbnQgKm1haWxkaXJzaXplX2ZkcHRyLAogCWNvbnN0IGNoYXIgKnF1b3Rh X3R5cGUsCi0JbG9uZyB4dHJhX3NpemUsCi0JaW50IHh0cmFfY250KQorCXN0b3JhZ2VfdCB4 dHJhX3NpemUsCisJc3RvcmFnZV90IHh0cmFfY250KQogewogaW50CWR1bW15LCByZXQgPSAw OwogCkBAIC00OTUsMTMgKzUxMywyMSBAQAogCiAgICBmcHJpbnRmKHN0ZGVyciwgIndhcm5p bmc6IHByb2dyYW0gdXNpbmcgZGVwcmVjYXRlZCBxdW90YSBmdW5jdGlvbiBhdCAlczolZFxu IiwgX19GSUxFX18sIF9fTElORV9fKTsKIAorICAgaWYgKCh4dHJhX3NpemUgPT0gMCkgfHwg KHh0cmFfY250ID09IDApKQorCXJldHVybiAwOworCiAgICAvKgogCSAgUGluZyB0aGUgZGFl bW9uCiAgICAqLwogCiAgICByZXQgPSBjbGllbnRfcXVlcnlfcXVpY2soIiAiLCBOVUxMLCBO VUxMKTsKLSAgIGlmIChyZXQpCi0gICAgICByZXR1cm4gdm1haWxkaXJfcmVhZHF1b3RhKGRp ciwgcXVvdGFfdHlwZSk7CisgICBpZiAocmV0KSB7CisgICAgICByZXQgPSB2bWFpbGRpcl9y ZWFkcXVvdGEoZGlyLCBxdW90YV90eXBlKTsKKyAgICAgIGlmIChyZXQgPj0gMTAwKQorICAg ICAgICAgIHJldHVybiAtMTsKKworICAgICAgcmV0dXJuIDA7CisgICB9CiAKICAgIC8qCiAJ ICBGYWxsIGJhY2sKQEAgLTU2OSwxNiArNTk1LDE2IEBACiBzdGF0aWMgaW50IGRvY2hlY2tx dW90YShjb25zdCBjaGFyICpkaXIsCiAJaW50ICptYWlsZGlyc2l6ZV9mZHB0ciwKIAljb25z dCBjaGFyICpxdW90YV90eXBlLAotCWxvbmcgeHRyYV9zaXplLAotCWludCB4dHJhX2NudCwK KwlzdG9yYWdlX3QgeHRyYV9zaXplLAorCXN0b3JhZ2VfdCB4dHJhX2NudCwKIAlpbnQgKnBl cmNlbnRhZ2UpCiB7CiBjaGFyCSpjaGVja2ZvbGRlcj0oY2hhciAqKW1hbGxvYyhzdHJsZW4o ZGlyKStzaXplb2YoIi9tYWlsZGlyZm9sZGVyIikpOwogY2hhcgkqbmV3bWFpbGRpcnNpemVu YW1lOwogc3RydWN0IHN0YXQgc3RhdF9idWY7CiBpbnQJbWFpbGRpcnNpemVfZmQgPSAtMTsK LW9mZl90CW1haWxkaXJzaXplX3NpemU7Ci1pbnQgICAgIG1haWxkaXJzaXplX2NudDsKK3N0 b3JhZ2VfdCBtYWlsZGlyc2l6ZV9zaXplOworc3RvcmFnZV90IG1haWxkaXJzaXplX2NudDsK IHVuc2lnbmVkIG1haWxkaXJzaXplX25saW5lczsKIGludAluOwogdGltZV90CXRtOwpAQCAt NzQ2LDcgKzc3Miw3IEBACiB9CiAKIGludAltYWlsZGlyX2FkZHF1b3RhKGNvbnN0IGNoYXIg KmRpciwgaW50IG1haWxkaXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxv bmcgbWFpbGRpcnNpemVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCkKKwljb25zdCBjaGFy ICpxdW90YV90eXBlLCBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1h aWxkaXJzaXplX2NudCkKIHsKICAgIGludCByZXQgPSAwOwogCkBAIC03NzUsNyArODAxLDcg QEAKIH0KIAogc3RhdGljIGludCBkb2FkZHF1b3RhKGNvbnN0IGNoYXIgKmRpciwgaW50IG1h aWxkaXJzaXplX2ZkLAotCWNvbnN0IGNoYXIgKnF1b3RhX3R5cGUsIGxvbmcgbWFpbGRpcnNp emVfc2l6ZSwgaW50IG1haWxkaXJzaXplX2NudCwKKwljb25zdCBjaGFyICpxdW90YV90eXBl LCBzdG9yYWdlX3QgbWFpbGRpcnNpemVfc2l6ZSwgc3RvcmFnZV90IG1haWxkaXJzaXplX2Nu dCwKIAlpbnQgaXNuZXcpCiB7CiB1bmlvbgl7CkBAIC04NDQsOCArODcwLDcgQEAKIAkJbmlv dj0yOwogCX0KIAotCi0Jc3ByaW50Zih1LmJ1ZiwgIiVsZCAlZFxuIiwgbWFpbGRpcnNpemVf c2l6ZSwgbWFpbGRpcnNpemVfY250KTsKKwlzcHJpbnRmKHUuYnVmLCAiJWxsdSAlbHVcbiIs IG1haWxkaXJzaXplX3NpemUsIG1haWxkaXJzaXplX2NudCk7CiAJaW92W25pb3ZdLmlvdl9i YXNlPXUuYnVmOwogCWlvdltuaW92XS5pb3ZfbGVuPXN0cmxlbih1LmJ1Zik7CiAKQEAgLTk3 Myw3ICs5OTgsNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRjdXJu ZXcoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKm1heHRpbWUsIG9mZl90ICpzaXplcCwgaW50 ICpjbnRwKQorc3RhdGljIGludCBjb3VudGN1cm5ldyhjb25zdCBjaGFyICpkaXIsIHRpbWVf dCAqbWF4dGltZSwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKQogewogY2hh cgkqcD0oY2hhciAqKW1hbGxvYyhzdHJsZW4oZGlyKSs1KTsKIGludAluOwpAQCAtOTkwLDcg KzEwMTUsNyBAQAogCXJldHVybiAobik7CiB9CiAKLXN0YXRpYyBpbnQgY291bnRzdWJkaXIo Y29uc3QgY2hhciAqZGlyLCBjb25zdCBjaGFyICpzdWJkaXIsIHRpbWVfdCAqbWF4dGltZSwg b2ZmX3QgKnNpemVwLCBpbnQgKmNudHApCitzdGF0aWMgaW50IGNvdW50c3ViZGlyKGNvbnN0 IGNoYXIgKmRpciwgY29uc3QgY2hhciAqc3ViZGlyLCB0aW1lX3QgKm1heHRpbWUsIHN0b3Jh Z2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIGNoYXIJKnA7CiBpbnQJbjsKQEAg LTEwMDcsMTMgKzEwMzIsMTMgQEAKIAlyZXR1cm4gKG4pOwogfQogCi1zdGF0aWMgaW50IGRv Y291bnQoY29uc3QgY2hhciAqZGlyLCB0aW1lX3QgKmRpcnN0YW1wLCBvZmZfdCAqc2l6ZXAs IGludCAqY250cCkKK3N0YXRpYyBpbnQgZG9jb3VudChjb25zdCBjaGFyICpkaXIsIHRpbWVf dCAqZGlyc3RhbXAsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCkKIHsKIHN0 cnVjdAlzdGF0CXN0YXRfYnVmOwogY2hhcgkqcDsKIERJUgkqZGlycDsKIHN0cnVjdCBkaXJl bnQgKmRlOwotdW5zaWduZWQgbG9uZwlzOworc3RvcmFnZV90IHM7CiAKIAlpZiAoc3RhdChk aXIsICZzdGF0X2J1ZikpCXJldHVybiAoMCk7CS8qIElnbm9yZSAqLwogCWlmIChzdGF0X2J1 Zi5zdF9tdGltZSA+ICpkaXJzdGFtcCkJKmRpcnN0YW1wPXN0YXRfYnVmLnN0X210aW1lOwpA QCAtMTA0Myw3ICsxMDY4LDcgQEAKIAogCiAJCWlmIChtYWlsZGlyX3BhcnNlcXVvdGEobiwg JnMpID09IDApCi0JCQlzdGF0X2J1Zi5zdF9zaXplPXM7CisJCQkqc2l6ZXAgKz0gczsKIAkJ ZWxzZQogCQl7CiAJCQlwPShjaGFyICopbWFsbG9jKHN0cmxlbihkaXIpK3N0cmxlbihuKSsy KTsKQEAgLTEwNTksOCArMTA4NCw4IEBACiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlmcmVl KHApOworCQkJKnNpemVwICs9IHN0YXRfYnVmLnN0X3NpemU7CiAJCX0KLQkJKnNpemVwICs9 IHN0YXRfYnVmLnN0X3NpemU7CiAJCSsrKmNudHA7CiAJfQogCkBAIC0xMTMxLDcgKzExNTYs NyBAQAogICAgICAgICByZXR1cm4gKHN0cmNweShhcmcsIHApKTsKIH0KIAotc3RhdGljIGlu dCBtYWlsZGlyX3BhcnNlcXVvdGEoY29uc3QgY2hhciAqbiwgdW5zaWduZWQgbG9uZyAqcykK K3N0YXRpYyBpbnQgbWFpbGRpcl9wYXJzZXF1b3RhKGNvbnN0IGNoYXIgKm4sIHN0b3JhZ2Vf dCAqcykKIHsKIGNvbnN0IGNoYXIgKm87CiBpbnQgICAgIHllczsKQEAgLTExNjMsNiArMTE4 OCw3IEBACiAgICAgICAgICAgICAgICAgKnM9MDsKICAgICAgICAgICAgICAgICB3aGlsZSAo Km8gPj0gJzAnICYmICpvIDw9ICc5JykKICAgICAgICAgICAgICAgICAgICAgICAgICpzPSAq cyoxMCArICgqbysrIC0gJzAnKTsKKwogICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CiAg ICAgICAgIH0KICAgICAgICAgcmV0dXJuICgtMSk7CmRpZmYgLXVQciB2cG9wbWFpbC1jb2Rl LTEwMzQtdHJ1bmsub3JpZy9tYWlsZGlycXVvdGEuaCB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1 bmsvbWFpbGRpcnF1b3RhLmgKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL21h aWxkaXJxdW90YS5oCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAwMDAwMDAwICswMDAwCisrKyB2 cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvbWFpbGRpcnF1b3RhLmgJMjAxNS0wOS0xOCAxNTow MDowOS44MTQwOTY0NzEgKzAxMDAKQEAgLTgsNiArOCw4IEBACiAgICAtQmlsbCBTaHVwcAog ICovCiAKKyNpbmNsdWRlICJzdG9yYWdlLmgiCisKICNkZWZpbmUgUVVPVEFfV0FSTl9QRVJD RU5UIDkwCiAKIC8qIEkndmUgcmVtb3ZlZCBwcmV0dHkgbXVjaCB0aGUgd2hvbGUgZmlsZSBl eGVjZXB0IGZvcgpAQCAtMTUsOCArMTcsOCBAQAogICAgSSJ2ZSBtYWRlIHRoZSBjb3VyaWVy IGZ1bmN0aW9ucyBzdGF0aWMuCiAgICAtIEJyaWFuIEtvbGFjaQogKi8KLWludCByZWFkZG9t YWlucXVvdGEoY29uc3QgY2hhciAqZGlyLCBsb25nICpzaXplcCwgaW50ICpjbnRwKTsKLWlu dCByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIqIGRpciwgbG9uZyAqc2l6ZXAsIGludCAqY250 cCk7CitpbnQgcmVhZGRvbWFpbnF1b3RhKGNvbnN0IGNoYXIgKmRpciwgc3RvcmFnZV90ICpz aXplcCwgc3RvcmFnZV90ICpjbnRwKTsKK2ludCByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIq IGRpciwgc3RvcmFnZV90ICpzaXplcCwgc3RvcmFnZV90ICpjbnRwKTsKIGludCBkb21haW5f b3Zlcl9tYWlsZGlycXVvdGEoY29uc3QgY2hhciAqdXNlcmRpcik7CiBpbnQgdXNlcl9vdmVy X21haWxkaXJxdW90YShjb25zdCBjaGFyICpkaXIsIGNvbnN0IGNoYXIgKnF1b3RhKTsKIGlu dCB2bWFpbGRpcl9yZWFkcXVvdGEoY29uc3QgY2hhciAqZGlyLAljb25zdCBjaGFyICpxdW90 YSk7CkBAIC0yNCw1ICsyNiw1IEBACiBpbnQgbWFpbGRpcl9hZGRxdW90YShjb25zdCBjaGFy ICosCS8qIFBvaW50ZXIgdG8gdGhlIG1haWxkaXIgKi8KIAlpbnQsCS8qIE11c3QgYmUgdGhl IGludCBwb2ludGVkIHRvIGJ5IDJuZCBhcmcgdG8gY2hlY2txdW90YSAqLwogCWNvbnN0IGNo YXIgKiwJLyogVGhlIHF1b3RhICovCi0JbG9uZywJLyogKy8tIGJ5dGVzICovCi0JaW50KTsJ LyogKy8tIGZpbGVzICovCisJc3RvcmFnZV90LAkvKiArLy0gYnl0ZXMgKi8KKwlzdG9yYWdl X3QpOwkvKiArLy0gZmlsZXMgKi8KZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu ay5vcmlnL3ZhZGR1c2VyLmMgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3ZhZGR1c2VyLmMK LS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3ZhZGR1c2VyLmMJMjAxMC0xMS0w MiAxNzoxNToxMC4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu ay92YWRkdXNlci5jCTIwMTUtMDktMTggMTU6MDA6MDkuODE1MDk2NDIzICswMTAwCkBAIC0z MCw2ICszMCw3IEBACiAjaW5jbHVkZSAidnBvcG1haWwuaCIKICNpbmNsdWRlICJ2YXV0aC5o IgogI2luY2x1ZGUgInZhdXRobW9kdWxlLmgiCisjaW5jbHVkZSAicHdzdHIuaCIKIAogY2hh ciBFbWFpbFtNQVhfQlVGRl07CiBjaGFyIFBhc3N3ZFtNQVhfQlVGRl07CmRpZmYgLXVQciB2 cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92Y2hrcHcuYyB2cG9wbWFpbC1jb2RlLTEw MzQtdHJ1bmsvdmNoa3B3LmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Zj aGtwdy5jCTIwMTAtMTAtMDcgMjM6MTc6MzYuMDAwMDAwMDAwICswMTAwCisrKyB2cG9wbWFp bC1jb2RlLTEwMzQtdHJ1bmsvdmNoa3B3LmMJMjAxNS0wOS0xOCAxNTowMDowOS44MTUwOTY0 MjMgKzAxMDAKQEAgLTczMywyNiArNzMzLDI2IEBACiAKICAgaWYgKCAodmVycm9yID09IFZM T0dfRVJST1JfUEFTU1dEKSAmJiAoIEVOQUJMRV9MT0dHSU5HPT0xIHx8IEVOQUJMRV9MT0dH SU5HPT0yIHx8IEVOQUJMRV9MT0dHSU5HPT0zIHx8IEVOQUJMRV9MT0dHSU5HPT00ICkgKSB7 CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBh c3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICAgIHN5 c2xvZyhMT0dfTk9USUNFLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CisgICAg ICAgICAgc3lzbG9nKExPR19OT1RJQ0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwg bG9ncyIpOwogICAgICAgfQogICAgICAgaWYgKCAobG9nc3FsKHZlcnJvciwgVGhlVXNlciwg VGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1lLCBJcEFkZHIsIExvZ0xpbmUpICkgIT0gMCAp IHsKLSAgICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4ndCB3cml0ZSBT UUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIsInZjaGtwdzog Y2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlmICggdmVycm9y ID09IFZMT0dfRVJST1JfSU5URVJOQUwgKSB7CiAgICAgICBpZiAoIChsb2dzcWwodmVycm9y LCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwgTG9nTGlu ZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3OiBjYW4n dCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCIlcyIs InZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBlbHNlIGlm ICggdmVycm9yID09IFZMT0dfRVJST1JfTE9HT04gKSB7CiAgICAgICBpZiAoIChsb2dzcWwo dmVycm9yLCBUaGVVc2VyLCBUaGVEb21haW4sIFRoZVBhc3MsIFRoZU5hbWUsIElwQWRkciwg TG9nTGluZSkgKSAhPSAwICkgewotICAgICAgICBzeXNsb2coTE9HX05PVElDRSwidmNoa3B3 OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOworICAgICAgICAgIHN5c2xvZyhMT0dfTk9USUNF LCIlcyIsInZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKICAgICAgIH0KICAgfSBl bHNlIGlmICggdmVycm9yID09IFZMT0dfRVJST1JfQUNDRVNTICkgewogICAgICAgaWYgKCAo bG9nc3FsKHZlcnJvciwgVGhlVXNlciwgVGhlRG9tYWluLCBUaGVQYXNzLCBUaGVOYW1lLCBJ cEFkZHIsIExvZ0xpbmUpICkgIT0gMCApIHsKLSAgICAgICAgc3lzbG9nKExPR19OT1RJQ0Us InZjaGtwdzogY2FuJ3Qgd3JpdGUgU1FMIGxvZ3MiKTsKKyAgICAgICAgICBzeXNsb2coTE9H X05PVElDRSwiJXMiLCJ2Y2hrcHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CiAgICAgICB9 CiAgIH0gZWxzZSBpZiAoIHZlcnJvciA9PSBWTE9HX0FVVEggJiYgKCBFTkFCTEVfTE9HR0lO RyA9PSAxIHx8IEVOQUJMRV9MT0dHSU5HID09IDQgKSApIHsKICAgICAgIGlmICggKGxvZ3Nx bCh2ZXJyb3IsIFRoZVVzZXIsIFRoZURvbWFpbiwgVGhlUGFzcywgVGhlTmFtZSwgSXBBZGRy LCBMb2dMaW5lKSApICE9IDAgKSB7Ci0gICAgICAgIHN5c2xvZyhMT0dfTk9USUNFLCJ2Y2hr cHc6IGNhbid0IHdyaXRlIFNRTCBsb2dzIik7CisgICAgICAgICAgc3lzbG9nKExPR19OT1RJ Q0UsIiVzIiwidmNoa3B3OiBjYW4ndCB3cml0ZSBTUUwgbG9ncyIpOwogICAgICAgfQogICB9 CiAjZW5kaWYKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3ZsaW1p dHMuYyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdmxpbWl0cy5jCi0tLSB2cG9wbWFpbC1j b2RlLTEwMzQtdHJ1bmsub3JpZy92bGltaXRzLmMJMjAwOS0xMi0xMCAxNjowNDo0NS4wMDAw MDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92bGltaXRzLmMJMjAx NS0wOS0xOCAxNTowMDoyNy43MjYwOTU2NTkgKzAxMDAKQEAgLTE4NywyMiArMTg3LDIyIEBA CiAKIAkJCWVsc2UgaWYgKCFzdHJjbXAoczEsICJxdW90YSIpKSB7CiAgICAgICAgICAgICAg ICAgaWYgKHMyKQotICAgICAgICAgICAgICAgIGxpbWl0cy0+ZGlza3F1b3RhID0gYXRvaShz Mik7CisgICAgICAgICAgICAgICAgbGltaXRzLT5kaXNrcXVvdGEgPSBzdHJ0b2xsKHMyLCBO VUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAKIAkJCWVsc2UgaWYgKCFzdHJjbXAoczEsICJt YXhtc2djb3VudCIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHMyKQotICAgICAgICAgICAg ICAgIGxpbWl0cy0+bWF4bXNnY291bnQgPSBhdG9pKHMyKTsKKyAgICAgICAgICAgICAgICBs aW1pdHMtPm1heG1zZ2NvdW50ID0gc3RydG9sbChzMiwgTlVMTCwgMTApOwogICAgICAgICAg ICAgfQogCiAgICAgICAgICAgICBpZiAoIXN0cmNtcChzMSwgImRlZmF1bHRfcXVvdGEiKSkg ewogICAgICAgICAgICAgICAgIGlmIChzMikKLSAgICAgICAgICAgICAgICBsaW1pdHMtPmRl ZmF1bHRxdW90YSA9IGF0b2koczIpOworICAgICAgICAgICAgICAgIGxpbWl0cy0+ZGVmYXVs dHF1b3RhID0gc3RydG9sbChzMiwgTlVMTCwgMTApOwogICAgICAgICAgICAgfQogCiAJCQll bHNlIGlmICghc3RyY21wKHMxLCAiZGVmYXVsdF9tYXhtc2djb3VudCIpKSB7CiAgICAgICAg ICAgICAgICAgaWYgKHMyKQotICAgICAgICAgICAgICAgIGxpbWl0cy0+ZGVmYXVsdG1heG1z Z2NvdW50ID0gYXRvaShzMik7CisgICAgICAgICAgICAgICAgbGltaXRzLT5kZWZhdWx0bWF4 bXNnY291bnQgPSBzdHJ0b2xsKHMyLCBOVUxMLCAxMCk7CiAgICAgICAgICAgICB9CiAKIAkJ CWVsc2UgaWYgKCFzdHJjbXAoczEsICJkaXNhYmxlX3BvcCIpKSB7CkBAIC00ODAsMTAgKzQ4 MCwxMCBAQAogICAgICAgICBmcHJpbnRmKGZzLCAibWF4Zm9yd2FyZHM6ICVkXG4iLCBsaW1p dHMtPm1heGZvcndhcmRzKTsKICAgICAgICAgZnByaW50ZihmcywgIm1heGF1dG9yZXNwb25k ZXJzOiAlZFxuIiwgbGltaXRzLT5tYXhhdXRvcmVzcG9uZGVycyk7CiAgICAgICAgIGZwcmlu dGYoZnMsICJtYXhtYWlsaW5nbGlzdHM6ICVkXG4iLCBsaW1pdHMtPm1heG1haWxpbmdsaXN0 cyk7Ci0gICAgICAgIGZwcmludGYoZnMsICJxdW90YTogJWRcbiIsIGxpbWl0cy0+ZGlza3F1 b3RhKTsKLSAgICAgICAgZnByaW50ZihmcywgIm1heG1zZ2NvdW50OiAlZFxuIiwgbGltaXRz LT5tYXhtc2djb3VudCk7Ci0gICAgICAgIGZwcmludGYoZnMsICJkZWZhdWx0X3F1b3RhOiAl ZFxuIiwgbGltaXRzLT5kZWZhdWx0cXVvdGEpOwotICAgICAgICBmcHJpbnRmKGZzLCAiZGVm YXVsdF9tYXhtc2djb3VudDogJWRcbiIsIGxpbWl0cy0+ZGVmYXVsdG1heG1zZ2NvdW50KTsK KyAgICAgICAgZnByaW50ZihmcywgInF1b3RhOiAlbGx1XG4iLCBsaW1pdHMtPmRpc2txdW90 YSk7CisgICAgICAgIGZwcmludGYoZnMsICJtYXhtc2djb3VudDogJWxsdVxuIiwgbGltaXRz LT5tYXhtc2djb3VudCk7CisgICAgICAgIGZwcmludGYoZnMsICJkZWZhdWx0X3F1b3RhOiAl bGx1XG4iLCBsaW1pdHMtPmRlZmF1bHRxdW90YSk7CisgICAgICAgIGZwcmludGYoZnMsICJk ZWZhdWx0X21heG1zZ2NvdW50OiAlbGx1XG4iLCBsaW1pdHMtPmRlZmF1bHRtYXhtc2djb3Vu dCk7CiAgICAgICAgIGlmIChsaW1pdHMtPmRpc2FibGVfcG9wKSBmcHJpbnRmKGZzLCAiZGlz YWJsZV9wb3BcbiIpOwogICAgICAgICBpZiAobGltaXRzLT5kaXNhYmxlX2ltYXApIGZwcmlu dGYoZnMsICJkaXNhYmxlX2ltYXBcbiIpOwogICAgICAgICBpZiAobGltaXRzLT5kaXNhYmxl X2RpYWx1cCkgZnByaW50ZihmcywgImRpc2FibGVfZGlhbHVwXG4iKTsKZGlmZiAtdVByIHZw b3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3ZsaW1pdHMuaCB2cG9wbWFpbC1jb2RlLTEw MzQtdHJ1bmsvdmxpbWl0cy5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92 bGltaXRzLmgJMjAwOS0xMi0xMCAxNjowNDo0NS4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3Bt YWlsLWNvZGUtMTAzNC10cnVuay92bGltaXRzLmgJMjAxNS0wOS0xOCAxNTowMDoyNy43Mjcw OTU2MTcgKzAxMDAKQEAgLTIwLDYgKzIwLDggQEAKICNkZWZpbmUgVkxJTUlUX0RJU0FCTEVf QUxMIChWTElNSVRfRElTQUJMRV9DUkVBVEV8VkxJTUlUX0RJU0FCTEVfTU9ESUZZfFZMSU1J VF9ESVNBQkxFX0RFTEVURSkKICNkZWZpbmUgVkxJTUlUX0RJU0FCTEVfQklUUyAzCiAKKyNp bmNsdWRlICJzdG9yYWdlLmgiCisKIHN0cnVjdCB2bGltaXRzIHsKICAgICAgIC8qIG1heCBz ZXJ2aWNlIGxpbWl0cyAqLwogICAgICAgaW50ICAgICAgIG1heHBvcGFjY291bnRzOwpAQCAt MjksMTAgKzMxLDEwIEBACiAgICAgICBpbnQgICAgICAgbWF4bWFpbGluZ2xpc3RzOwogCiAg ICAgICAvKiBxdW90YSAmIG1lc3NhZ2UgY291bnQgbGltaXRzICovCi0gICAgICBpbnQgICAg ICAgZGlza3F1b3RhOwotICAgICAgaW50ICAgICAgIG1heG1zZ2NvdW50OwotICAgICAgaW50 ICAgICAgIGRlZmF1bHRxdW90YTsKLSAgICAgIGludCAgICAgICBkZWZhdWx0bWF4bXNnY291 bnQ7CisgICAgICBzdG9yYWdlX3QgZGlza3F1b3RhOworICAgICAgc3RvcmFnZV90IG1heG1z Z2NvdW50OworICAgICAgc3RvcmFnZV90IGRlZmF1bHRxdW90YTsKKyAgICAgIHN0b3JhZ2Vf dCBkZWZhdWx0bWF4bXNnY291bnQ7CiAKICAgICAgIC8qIHRoZSBmb2xsb3dpbmcgYXJlIDAg KGZhbHNlKSBvciAxICh0cnVlKSAqLwogICAgICAgc2hvcnQgICAgIGRpc2FibGVfcG9wOwpk aWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdmxpc3RsaWIuYyB2cG9w bWFpbC1jb2RlLTEwMzQtdHJ1bmsvdmxpc3RsaWIuYwotLS0gdnBvcG1haWwtY29kZS0xMDM0 LXRydW5rLm9yaWcvdmxpc3RsaWIuYwkyMDEwLTEwLTEzIDE4OjE5OjU3LjAwMDAwMDAwMCAr MDEwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3ZsaXN0bGliLmMJMjAxNS0wOS0x OCAxNTowMDoyNy43MjcwOTU2MTcgKzAxMDAKQEAgLTE5Myw4ICsxOTMsOCBAQAogCiAgICAg aWYoIERvbWFpbk9ubHkgKSB7ICAgIC8vICAgSGF2ZSBkb21haW4KICAgICAgICAgaWYgKCBz dHJzdHIoIEFkZHJlc3MsICJAIikgIT0gTlVMTCApIHJldHVybig0KTsKLSAgICAgICAgc25w cmludGYoIExJLT5OYW1lLCAgIE1BWF9GSUxFX05BTUUsICIlcyIsICIiICk7Ci0gICAgICAg IHNucHJpbnRmKCBMSS0+RG9tYWluLCBNQVhfRklMRV9OQU1FLCAiJXMiLCBBZGRyZXNzICk7 CisgICAgICAgIHNucHJpbnRmKCBMSS0+TmFtZSwgICBzaXplb2YoTEktPk5hbWUpLCAiJXMi LCAiIiApOworICAgICAgICBzbnByaW50ZiggTEktPkRvbWFpbiwgc2l6ZW9mKExJLT5Eb21h aW4pLCAiJXMiLCBBZGRyZXNzICk7CiAgICAgfQogCiAgICAgZWxzZSB7ICAgICAgICAgICAg ICAgIC8vICAgSGF2ZSBtYWlsIGxpc3QKQEAgLTIwNiwxMyArMjA2LDEzIEBACiAKICAgICBp ZigoIExJLT5lbnRyeSA9IGdldF9kb21haW5fZW50cmllcyggTEktPkRvbWFpbiApKSA9PSBO VUxMICkgcmV0dXJuKDMpOwogCi0gICAgc25wcmludGYoIExJLT5Pd25lckVtYWlsLCAgIE1B WF9GSUxFX05BTUUsICJwb3N0bWFzdGVyQCVzIiwgTEktPkRvbWFpbiApOyAKLSAgICBzbnBy aW50ZiggTEktPlJlcGx5VG9fQWRkciwgTUFYX0ZJTEVfTkFNRSwgIiVzIiwgIiIgKTsKLSAg ICBzbnByaW50ZiggTEktPlNRTEJhc2UsICAgICAgTUFYX0ZJTEVfTkFNRSwgImV6bWxtIiAp OwotICAgIHNucHJpbnRmKCBMSS0+U1FMSG9zdCwgICAgICBNQVhfRklMRV9OQU1FLCAibG9j YWxob3N0IiApOwotICAgIHNucHJpbnRmKCBMSS0+U1FMUGFzcywgICAgICBNQVhfRklMRV9O QU1FLCAiZGJwYXNzIiApOwotICAgIHNucHJpbnRmKCBMSS0+U1FMVGFibGUsICAgICBNQVhf RklMRV9OQU1FLCAiZXptbG0iICk7Ci0gICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAg IE1BWF9GSUxFX05BTUUsICJkYlVzZXIiICk7CisgICAgc25wcmludGYoIExJLT5Pd25lckVt YWlsLCAgIHNpemVvZihMSS0+T3duZXJFbWFpbCksICJwb3N0bWFzdGVyQCVzIiwgTEktPkRv bWFpbiApOyAKKyAgICBzbnByaW50ZiggTEktPlJlcGx5VG9fQWRkciwgc2l6ZW9mKExJLT5S ZXBseVRvX0FkZHIpLCAiJXMiLCAiIiApOworICAgIHNucHJpbnRmKCBMSS0+U1FMQmFzZSwg ICAgICBzaXplb2YoTEktPlNRTEJhc2UpLCAiZXptbG0iICk7CisgICAgc25wcmludGYoIExJ LT5TUUxIb3N0LCAgICAgIHNpemVvZihMSS0+U1FMSG9zdCksICJsb2NhbGhvc3QiICk7Cisg ICAgc25wcmludGYoIExJLT5TUUxQYXNzLCAgICAgIHNpemVvZihMSS0+U1FMUGFzcyksICJk YnBhc3MiICk7CisgICAgc25wcmludGYoIExJLT5TUUxUYWJsZSwgICAgIHNpemVvZihMSS0+ U1FMVGFibGUpLCAiZXptbG0iICk7CisgICAgc25wcmludGYoIExJLT5TUUxVc2VyLCAgICAg IHNpemVvZihMSS0+U1FMVXNlciksICJkYlVzZXIiICk7CiAKIC8vICAgIHByaW50ZiggImJl Zm9yZSBtYWtlIG5hbWVcbiIgKTsKIApkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRy dW5rLm9yaWcvdm1vZGRvbWxpbWl0cy5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92bW9k ZG9tbGltaXRzLmMKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Ztb2Rkb21s aW1pdHMuYwkyMDA5LTEyLTEwIDE2OjA0OjQ1LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1h aWwtY29kZS0xMDM0LXRydW5rL3Ztb2Rkb21saW1pdHMuYwkyMDE1LTA5LTE4IDE1OjAwOjI3 LjcyODA5NTU3NyArMDEwMApAQCAtMjEyLDEwICsyMTIsMTAgQEAKICAgICAgICAgICAgIHBy aW50ZiAoKGxpbWl0cy5wZXJtX2RlZmF1bHRxdW90YSAmIFZMSU1JVF9ESVNBQkxFX0RFTEVU RSA/ICJERU5ZX0RFTEVURSAgIiA6IkFMTE9XX0RFTEVURSAiKSApOwogICAgICAgICAgICAg CiAgICAgICAgICAgICBwcmludGYoIlxuIik7Ci0gICAgICAgICAgICBwcmludGYoIkRvbWFp biBRdW90YTogJWQgTUJcbiIsIGxpbWl0cy5kaXNrcXVvdGEpOwotICAgICAgICAgICAgcHJp bnRmKCJEZWZhdWx0IFVzZXIgUXVvdGE6ICVkIGJ5dGVzXG4iLCBsaW1pdHMuZGVmYXVsdHF1 b3RhKTsKLSAgICAgICAgICAgIHByaW50ZigiTWF4IERvbWFpbiBNZXNzYWdlczogJWRcbiIs IGxpbWl0cy5tYXhtc2djb3VudCk7Ci0gICAgICAgICAgICBwcmludGYoIkRlZmF1bHQgTWF4 IE1lc3NhZ2VzIHBlciBVc2VyOiAlZFxuIiwgbGltaXRzLmRlZmF1bHRtYXhtc2djb3VudCk7 CisgICAgICAgICAgICBwcmludGYoIkRvbWFpbiBRdW90YTogJWxsdSBNQlxuIiwgbGltaXRz LmRpc2txdW90YSk7CisgICAgICAgICAgICBwcmludGYoIkRlZmF1bHQgVXNlciBRdW90YTog JWxsdSBieXRlc1xuIiwgbGltaXRzLmRlZmF1bHRxdW90YSk7CisgICAgICAgICAgICBwcmlu dGYoIk1heCBEb21haW4gTWVzc2FnZXM6ICVsbHVcbiIsIGxpbWl0cy5tYXhtc2djb3VudCk7 CisgICAgICAgICAgICBwcmludGYoIkRlZmF1bHQgTWF4IE1lc3NhZ2VzIHBlciBVc2VyOiAl bGx1XG4iLCBsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsKICAgICAgICAgICAgIHJldHVy bih2ZXhpdCgwKSk7CiAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTIzNywxNiAr MjM3LDE2IEBACiAgICAgICAgIAogICAgICAgICAvKiBxdW90YSAmIG1lc3NhZ2UgY291bnQg bGltaXRzICovCiAgICAgICAgIGlmIChEb21haW5RdW90YVswXSAhPSAwKSB7Ci0gICAgICAg ICAgICBsaW1pdHMuZGlza3F1b3RhID0gYXRvaShEb21haW5RdW90YSk7CisgICAgICAgICAg ICBsaW1pdHMuZGlza3F1b3RhID0gc3RydG9sbChEb21haW5RdW90YSwgTlVMTCwgMTApOwog ICAgICAgICB9CiAgICAgICAgIGlmIChEb21haW5NYXhNc2dDb3VudFswXSAhPSAwKSB7Ci0g ICAgICAgICAgICBsaW1pdHMubWF4bXNnY291bnQgPSBhdG9pKERvbWFpbk1heE1zZ0NvdW50 KTsKKyAgICAgICAgICAgIGxpbWl0cy5tYXhtc2djb3VudCA9IHN0cnRvbGwoRG9tYWluTWF4 TXNnQ291bnQsIE5VTEwsIDEwKTsKICAgICAgICAgfQogICAgICAgICBpZiAoRGVmYXVsdFVz ZXJRdW90YVswXSAhPSAwKSB7Ci0gICAgICAgICAgICBsaW1pdHMuZGVmYXVsdHF1b3RhID0g YXRvaShmb3JtYXRfbWFpbGRpcnF1b3RhKERlZmF1bHRVc2VyUXVvdGEpKTsKKyAgICAgICAg ICAgIGxpbWl0cy5kZWZhdWx0cXVvdGEgPSBzdHJ0b2xsKGZvcm1hdF9tYWlsZGlycXVvdGEo RGVmYXVsdFVzZXJRdW90YSksIE5VTEwsIDEwKTsKICAgICAgICAgfQogICAgICAgICBpZiAo RGVmYXVsdFVzZXJNYXhNc2dDb3VudFswXSAhPSAwKSB7Ci0gICAgICAgICAgICBsaW1pdHMu ZGVmYXVsdG1heG1zZ2NvdW50ID0gYXRvaShEZWZhdWx0VXNlck1heE1zZ0NvdW50KTsKKyAg ICAgICAgICAgIGxpbWl0cy5kZWZhdWx0bWF4bXNnY291bnQgPSBzdHJ0b2xsKERlZmF1bHRV c2VyTWF4TXNnQ291bnQsIE5VTEwsIDEwKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAg ICAgaWYgKEdpZEZsYWcgPT0gMSkgewpkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRy dW5rLm9yaWcvdnBvcG1haWwuYyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnBvcG1haWwu YwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnBvcG1haWwuYwkyMDExLTAy LTAzIDIxOjMyOjI3LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRy dW5rL3Zwb3BtYWlsLmMJMjAxNS0wOS0xOCAxNToxNDoyMi42OTUwOTQ5MzEgKzAxMDAKQEAg LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJ2YXV0aC5oIgogI2luY2x1ZGUgInZsaW1pdHMu aCIKICNpbmNsdWRlICJtYWlsZGlycXVvdGEuaCIKKyNpbmNsdWRlICJzdG9yYWdlLmgiCiAj aW5jbHVkZSAidmF1dGhtb2R1bGUuaCIKICNpbmNsdWRlICJwd3N0ci5oIgogCkBAIC0yNTE2 LDYgKzI1MTcsOSBAQAogICAgIHJldHVybihOVUxMKTsKICAgfQogCisgIC8qIHJlY29yZCB0 aGUgZGlyIHdoZXJlIHRoZSBjb21tYW5kIHdhcyBydW4gZnJvbSAqLworICBjYWxsX2RpciA9 IG9wZW4oIi4iLCBPX1JET05MWSk7CisKICAgLyogZ28gdG8gdGhlIGRpciBmb3Igb3VyIGNo b3NlbiBkb21haW4gKi8KICAgY2hkaXIoZG9tYWluX2Rpcik7IAogCkBAIC0zMzMwLDYgKzMz MzQsMTIgQEAKICAgICByZXR1cm4oIFZBX0RPTUFJTl9ET0VTX05PVF9FWElTVCApOwogICB9 CiAKKyAgLyogcmVjb3JkIHdoaWNoIGRpciB0aGUgY29tbWFuZCB3YXMgbGF1bmNoZWQgZnJv bSAqLworICBjYWxsX2RpciA9IG9wZW4oIi4iLCBPX1JET05MWSk7CisKKyAgLyogc2V0IHRo ZSBtYXNrIGZvciBmaWxlIGNyZWF0aW9uICovCisgIHVtYXNrKFZQT1BNQUlMX1VNQVNLKTsK KyAKICAgLyogc28sIHdlIHNob3VsZCBoYXZlIHNvbWUgdmFyaWFibGVzIGxpa2UgdGhpcyBu b3cgOgogICAgKiAgIGRpcjogICAgL2hvbWUvdnBvcG1haWwvZG9tYWlucy9beF0vc29tZWRv bWFpbi5jb20vW3hdL3NvbWV1c2VyCiAgICAqICAgdG1wYnVmOiAvaG9tZS92cG9wbWFpbC9k b21haW5zL1t4XS9zb21lZG9tYWluLmNvbQpAQCAtMzk2MSw4ICszOTcxLDggQEAKIAogY2hh ciAqZm9ybWF0X21haWxkaXJxdW90YShjb25zdCBjaGFyICpxKSB7CiBpbnQgICAgIGk7Ci1k b3VibGUJcXVvdGFfc2l6ZTsKLWxvbmcJcXVvdGFfY291bnQ7CitzdG9yYWdlX3QgcXVvdGFf c2l6ZTsKK3N0b3JhZ2VfdCBxdW90YV9jb3VudDsKIGNoYXIJKnA7CiBzdGF0aWMgY2hhciAg ICB0ZW1wcXVvdGFbMTI4XTsKIApAQCAtMzk3MiwzNCArMzk4MiwzNCBAQAogICAgIH0KIAog ICAgIC8qIHRyYW5zbGF0ZSB0aGUgcXVvdGEgdG8gYSBudW1iZXIsIG9yIGxlYXZlIGl0ICov Ci0gICAgcXVvdGFfc2l6ZSA9IC0xLjA7Ci0gICAgcXVvdGFfY291bnQgPSAtMTsKKyAgICBx dW90YV9zaXplID0gMDsKKyAgICBxdW90YV9jb3VudCA9IDA7CiAgICAgc25wcmludGYgKHRl bXBxdW90YSwgc2l6ZW9mKHRlbXBxdW90YSksICIlcyIsIHEpOwogICAgIHAgPSBzdHJ0b2sg KHRlbXBxdW90YSwgIiwiKTsKICAgICB3aGlsZSAocCAhPSBOVUxMKSB7CiAgICAgICBpID0g c3RybGVuKHApIC0gMTsKICAgICAgIGlmIChwW2ldID09ICdDJykgeyAvKiBzcGVjaWZ5IGEg bGltaXQgb24gdGhlIG51bWJlciBvZiBtZXNzYWdlcyAoQ09VTlQpICovCi0gICAgICAgIHF1 b3RhX2NvdW50ID0gYXRvbChwKTsKKyAgICAgICAgcXVvdGFfY291bnQgPSBzdHJ0b2xsKHAs IE5VTEwsIDEwKTsKICAgICAgIH0gZWxzZSB7IC8qIHNwZWNpZnkgYSBsaW1pdCBvbiB0aGUg c2l6ZSAqLwogICAgICAgICAvKiBzdHJpcCBvcHRpb25hbCB0cmFpbGluZyBTICovCiAgICAg ICAgIGlmICgocFtpXSA9PSAnUycpIHx8IChwW2ldID09ICdzJykpIHBbaS0tXSA9ICdcMCc7 CiAgICAgICAgIC8qIHN0cmlwIG9wdGlvbmFsIHRyYWlsaW5nIEIgKGZvciBLQiwgTUIpICov CiAgICAgICAgIGlmICgocFtpXSA9PSAnQicpIHx8IChwW2ldID09ICdiJykpIHBbaS0tXSA9 ICdcMCc7CiAKLSAgICAgICAgcXVvdGFfc2l6ZSA9IGF0b2YocCk7CisgICAgICAgIHF1b3Rh X3NpemUgPSBzdHJ0b2xsKHAsIE5VTEwsIDEwKTsKICAgICAgICAgaWYgKChwW2ldID09ICdN JykgfHwgKHBbaV0gPT0gJ20nKSkgcXVvdGFfc2l6ZSAqPSAxMDI0ICogMTAyNDsKICAgICAg ICAgaWYgKChwW2ldID09ICdLJykgfHwgKHBbaV0gPT0gJ2snKSkgcXVvdGFfc2l6ZSAqPSAx MDI0OwogICAgICAgfQogICAgICAgcCA9IHN0cnRvayAoTlVMTCwgIiwiKTsKICAgICB9CiAK LSAgICBpZiAocXVvdGFfY291bnQgPT0gLTEpCi0gICAgICBpZiAocXVvdGFfc2l6ZSA9PSAt MS4wKSBzdHJjcHkgKHRlbXBxdW90YSwgIiIpOyAvKiBpbnZhbGlkIHF1b3RhICovCi0gICAg ICBlbHNlIHNwcmludGYgKHRlbXBxdW90YSwgIiUuMGZTIiwgcXVvdGFfc2l6ZSk7Ci0gICAg ZWxzZSBpZiAocXVvdGFfc2l6ZSA9PSAtMS4wKQotICAgICAgc3ByaW50ZiAodGVtcHF1b3Rh LCAiJWx1QyIsIHF1b3RhX2NvdW50KTsKKyAgICBpZiAocXVvdGFfY291bnQgPT0gMCkKKyAg ICAgIGlmIChxdW90YV9zaXplID09IDApIHN0cmNweSAodGVtcHF1b3RhLCAiIik7IC8qIGlu dmFsaWQgcXVvdGEgKi8KKyAgICAgIGVsc2Ugc3ByaW50ZiAodGVtcHF1b3RhLCAiJWxsdVMi LCBxdW90YV9zaXplKTsKKyAgICBlbHNlIGlmIChxdW90YV9zaXplID09IDApCisgICAgICBz cHJpbnRmICh0ZW1wcXVvdGEsICIlbGx1QyIsIHF1b3RhX2NvdW50KTsKICAgICBlbHNlCi0g ICAgICBzcHJpbnRmICh0ZW1wcXVvdGEsICIlLjBmUywlbHVDIiwgcXVvdGFfc2l6ZSwgcXVv dGFfY291bnQpOworICAgICAgc3ByaW50ZiAodGVtcHF1b3RhLCAiJWxsdVMsJWxsdUMiLCBx dW90YV9zaXplLCBxdW90YV9jb3VudCk7CiAKICAgICByZXR1cm4gdGVtcHF1b3RhOwogfQpA QCAtNDI0Miw3ICs0MjUyLDcgQEAKIAlpbnQgcHJpbnRlZDsgICAvKiBudW1iZXIgb2YgY2hh cmFjdGVycyBwcmludGVkICovCiAJY29uc3QgY2hhciAqZjsgLyogY3VycmVudCBwb3NpdGlv biBpbiBmb3JtYXQgc3RyaW5nICovCiAJY2hhciAqYjsgICAgICAgLyogY3VycmVudCBwb3Np dGlvbiBpbiBvdXRwdXQgYnVmZmVyICovCi0JY2hhciBuWzIwXTsgICAgLyogYnVmZmVyIHRv IGhvbGQgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIG51bWJlciAqLworCWNoYXIgbls2MF07 ICAgIC8qIGJ1ZmZlciB0byBob2xkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBudW1iZXIg Ki8KIAkKICAgICAgICAgaW50IGFyZ24gPSAwOyAgLyogdXNlZCBmb3IgbnVtYmVyZWQgYXJn dW1lbnRzICovCiAgICAgICAgIGNoYXIgYXJnc3RyWzEwXTsKQEAgLTQyNzQsOSArNDI4NCwx NCBAQAogCQkJCWNhc2UgJ3UnOgogCQkJCQlzbnByaW50ZiAobiwgc2l6ZW9mKG4pLCAiJXUi LCB2YV9hcmcgKGFwLCB1bnNpZ25lZCBpbnQpKTsKIAkJCQkJYnJlYWs7CisKKwkJCQljYXNl ICdTJzoKKwkJCQkJc25wcmludGYgKG4sIHNpemVvZihuKSwgIiVsbHUiLCB2YV9hcmcgKGFw LCBzdG9yYWdlX3QpKTsKKwkJCQkJYnJlYWs7CiAJCQkJCQogCQkJCWNhc2UgJ2wnOgogCQkJ CQlmKys7CisKIAkJCQkJc3dpdGNoICgqZikgewogCQkJCQkJY2FzZSAnZCc6CiAJCQkJCQlj YXNlICdpJzoKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Zwb3Bt YWlsZC5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92cG9wbWFpbGQuYwotLS0gdnBvcG1h aWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnBvcG1haWxkLmMJMjAxMS0wMi0wMyAyMTozMjoy Ny4wMDAwMDAwMDAgKzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92cG9wbWFp bGQuYwkyMDE1LTA5LTE4IDE1OjAwOjI3Ljc0NzA5NTA5NSArMDEwMApAQCAtMjQ1LDggKzI0 NSw4IEBACiAKICAgbWVtc2V0KFJlYWRCdWYsMCxzaXplb2YoUmVhZEJ1ZikpOwogICBpZiAo c2VsZWN0KDIsJnJmZHMsKGZkX3NldCAqKSAwLChmZF9zZXQgKikwLCZ0dik+PTEpIHsKLSAg ICBmZ2V0cyhSZWFkQnVmLHNpemVvZihSZWFkQnVmKSxzdGRpbik7Ci0gICAgcmV0dXJuKDEp OworICAgIGlmIChmZ2V0cyhSZWFkQnVmLHNpemVvZihSZWFkQnVmKSxzdGRpbikgIT0gTlVM TCkKKyAgICAgIHJldHVybigxKTsKICAgfQogICByZXR1cm4oLTEpOwogfQpAQCAtMzAxLDcg KzMwMSw3IEBACiAgICAgZXhpdCggLTEgKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVm LHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv ZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PSyk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICAvKiBh dXRoZW50aWNhdGUgZmlyc3Qgb3IgZHJvcCBjb25uZWN0aW9uICovCkBAIC0xNDIxLDcgKzE0 MjEsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Zixz aXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE0NDUs NyArMTQ0NSw3IEBACiAgICAgICBzdHJlcnJvcihlcnJubykpOwogICAgIHJldHVybigtMSk7 CiAgIH0KLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsK KyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsK ICAgcmV0dXJuKDApOwogfQogCkBAIC0xNDc3LDcgKzE0NzcsNyBAQAogICAgIHJldHVybigt MSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRf T0tfTU9SRSk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs IFJFVF9PS19NT1JFKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIHdoaWxlKChteWRpcmVudD1y ZWFkZGlyKG15ZGlyKSkhPU5VTEwpewpAQCAtMTUxNSw3ICsxNTE1LDcgQEAKICAgICAvKiBv aCB3ZWxsLCBhdCBsZWFzdCB3ZSBtaWdodCBkaWUgc29vbiAqLwogICB9CiAKLSAgc25wcmlu dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJp bnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwog ICByZXR1cm4oMCk7CiB9CiAKQEAgLTE1NDYsOSArMTU0Niw4IEBACiAgICAgcmV0dXJuKC0x KTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9P Syk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9P Syk7CiAgIHJldHVybigwKTsKLQogfQogCiAKQEAgLTE1NzMsNyArMTU3Miw3IEBACiAgICAg cmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1 ZiksIFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl cyIsIFJFVF9PSyk7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTYwNiw3ICsxNjA1LDcgQEAK ICAgfQogICBmY2xvc2UoZnMpOwogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0 ZUJ1ZiksIFJFVF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks ICIlcyIsIFJFVF9PSyk7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTYzMSw3ICsxNjMwLDcg QEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICB3 aGlsZShmZ2V0cyh0bXBidWYsc2l6ZW9mKHRtcGJ1ZiksZnMpIT1OVUxMKXsKQEAgLTE2NDYs NyArMTY0NSw3IEBACiAgIGZjbG9zZShmcyk7CiAKICAgaWYgKCB0bXBidWZbMF0gIT0gMCAm JiB0bXBidWZbc3RybGVuKHRtcGJ1ZiktMV0gIT0gJ1xuJyApIHsKLSAgICBzbnByaW50ZihX cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfQ1JMRiAiLiIgUkVUX0NSTEYpOworICAg IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9DUkxGICIu IiBSRVRfQ1JMRik7CiAgIH0gZWxzZSB7CiAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKICAgfQpAQCAtMTY3MywxMSArMTY3MiwxMSBA QAogICAgICAgc3RyZXJyb3IoZXJybm8pKTsKICAgICByZXR1cm4oLTEpOwogICB9Ci0gIHNu cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwog ICB3YWl0X3dyaXRlKCk7CiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks ICJ1aWQ6ICVkXG4iLCBteXN0YXQuc3RfdWlkKTsgCiAgIHdhaXRfd3JpdGUoKTsKLSAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsK ICAgcmV0dXJuKDApOwogfQogCkBAIC0xNzQyLDcgKzE3NDEsNyBAQAogICAgIGVudHJ5PWdl dF9kb21haW5fZW50cmllcyhOVUxMKTsKICAgICAKICAgfQotICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7 CiB9CiAKQEAgLTE3NzksNyArMTc3OCw3IEBACiAgICAgcmV0dXJuKC0xKTsKICAgfQogCi0g IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAg c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUp OwogICB3YWl0X3dyaXRlKCk7CiAKICAgY291bnQgPSAwOwpAQCAtMTc5Nyw3ICsxNzk2LDcg QEAKICAgfQogCiAgIGlmKCBtaXNzICkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv ZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6 ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgICByZXR1cm4oMCk7CiAg IH0gZWxzZSBpZiggcGVyX3BhZ2UgPiAwICkgewogICAgIHBhZ2UgPSAoIGNvdW50IC8gcGVy X3BhZ2UgKSArIDE7CkBAIC0xODA4LDcgKzE4MDcsNyBAQAogICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCAicGFnZSAlaSIgUkVUX0NSTEYsIHBhZ2UgKTsKICAgd2Fp dF93cml0ZSgpOwogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIu IiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl cyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMTgyOSw3ICsxODI4 LDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6 ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAog ICBjb3VudCA9IDA7CkBAIC0xODQxLDcgKzE4NDAsNyBAQAogICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWkiIFJFVF9DUkxGLCBjb3VudCk7CiAgIHdh aXRfd3JpdGUoKTsKIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi LiIgUkVUX0NSTEYpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi JXMiLCAiLiIgUkVUX0NSTEYpOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTE4NzQsNyArMTg3 Myw3IEBACiAgICAgIHJldHVybigtMSk7CiAgICB9CiAgCi0gICBzbnByaW50ZihXcml0ZUJ1 Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICAgc25wcmludGYoV3JpdGVC dWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgIHdhaXRfd3Jp dGUoKTsKICAKICAgIGZpcnN0PTE7CkBAIC0xODg2LDcgKzE4ODUsNyBAQAogCiAgICBzbnBy aW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWkiIFJFVF9DUkxGLCBj b3VudCk7CiAgICB3YWl0X3dyaXRlKCk7Ci0gICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9m KFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgIHJldHVybigwKTsKICB9CiAg IAkgCkBAIC0xOTQwLDcgKzE5MzksNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBz bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBz bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUp OwogICB3YWl0X3dyaXRlKCk7CiAKICAgZmlyc3Q9MTsKQEAgLTE5NTcsMTMgKzE5NTYsMTMg QEAKICAgICAgIHNlbmRfdXNlcl9pbmZvKHRtcHZwdyk7CiAgICAgfQogCi0gICAgc25wcmlu dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9DUkxGICk7CisgICAgc25wcmlu dGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9DUkxGICk7CiAgICAg d2FpdF93cml0ZSgpOwogCiAgICAgKytjb3VudDsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRl QnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRl QnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigw KTsKIH0KIApAQCAtMjAxOCw3ICsyMDE3LDcgQEAKICAgLyogIHByaW50IGFsbCBhbGlhc2Vz ICAqLwogICBpZiAoc3Ryc3RyKEVtYWlsLCAiQCIpID09IE5VTEwpIHsKICAgICB0bXBhbGlh cyA9IHZhbGlhc19zZWxlY3RfYWxsKEFsaWFzLCBFbWFpbCk7Ci0gICAgc25wcmludGYoV3Jp dGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgICBzbnByaW50ZihX cml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICAgIHdh aXRfd3JpdGUoKTsKICAgICAgIAogICAgIHdoaWxlICh0bXBhbGlhcyAhPSBOVUxMKSB7CkBA IC0yMDMxLDkgKzIwMzAsOSBAQAogICB9IGVsc2UgewogICAgIHRtcGFsaWFzID0gdmFsaWFz X3NlbGVjdChBbGlhcywgRG9tYWluKTsKICAgICBpZiAodG1wYWxpYXMgPT0gTlVMTCkgewot ICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PSyk7Cisg ICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09L KTsKICAgICB9IGVsc2UgewotICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0 ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgICAgICB3YWl0X3dyaXRlKCk7CiAg ICAgICAKICAgICAgIHdoaWxlICh0bXBhbGlhcyAhPSBOVUxMKSB7CkBAIC0yMDQ0LDcgKzIw NDMsNyBAQAogICAgIH0KICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0 ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0 ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsKIH0KIApAQCAtMjEw Nyw3ICsyMTA2LDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3Jp dGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsKKyAgc25wcmludGYoV3Jp dGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9PS19NT1JFKTsKICAgd2FpdF93 cml0ZSgpOwogCiAgIGogPSBia3NjYW5kaXIoIi4iLCAmbmFtZWxpc3QsIDAsIHFhX3NvcnQp OwpAQCAtMjEzNiw3ICsyMTM1LDcgQEAKICAgICB9CiAgICAgKytjb3VudDsKICAgfQotICBz bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworICBz bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NSTEYp OwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTIxNTgsMTYgKzIxNTcsMTYgQEAKIAogICBpZiAo dmF1dGhfbW9kdWxlX2ZlYXR1cmUoIklQX0FMSUFTX0RPTUFJTlMiKSkgewogICBpZiAoIHZn ZXRfaXBfbWFwKGlwLHRtcGRvbWFpbixzaXplb2YodG1wZG9tYWluKSkgPCAwICkgewotICAg IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9FUlIgIjAuMzAwMyBl cnJvciIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1 ZiksICIlcyIsIFJFVF9FUlIgIjAuMzAwMyBlcnJvciIgUkVUX0NSTEYpOwogICAgIHJldHVy bigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLFJF VF9PS19NT1JFKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVz IiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAgCiAgIHNucHJpbnRmKFdyaXRl QnVmLHNpemVvZihXcml0ZUJ1ZiksIiVzICVzIiBSRVRfQ1JMRiwgaXAsIHRtcGRvbWFpbik7 CiAgIHdhaXRfd3JpdGUoKTsKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm KSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm KSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgfQogCiAgIGVsc2UKQEAgLTIyMDMsMTEgKzIy MDIsMTEgQEAKICAgfQogCiAgIGlmICggdmFkZF9pcF9tYXAoaXAsZG9tYWluKSA8IDAgKSB7 Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX0VSUiAiMC4z MTA1IGVycm9yIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdy aXRlQnVmKSwgIiVzIiwgUkVUX0VSUiAiMC4zMTA1IGVycm9yIiBSRVRfQ1JMRik7CiAgICAg cmV0dXJuKC0xKTsKICAgfQogCi0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1 ZiksUkVUX09LKTsKKyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVz IiwgUkVUX09LKTsKICAgIH0KIAogICAgZWxzZQpAQCAtMjI0Miw3ICsyMjQxLDcgQEAKICAg ICByZXR1cm4oLTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl QnVmKSxSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAi JXMiLCBSRVRfT0spOwogICB9CiAKICAgZWxzZQpAQCAtMjI2Myw3ICsyMjYyLDcgQEAKICAg fQogCiAgIGlmICh2YXV0aF9tb2R1bGVfZmVhdHVyZSgiSVBfQUxJQVNfRE9NQUlOUyIpKSB7 Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJFVF9PS19NT1JFKTsK KyAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01P UkUpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgZmlyc3QgPSAxOwpAQCAtMjI3Myw3ICsyMjcy LDcgQEAKICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzICVz IiBSRVRfQ1JMRiwgcl9pcCwgcl9kb21haW4pOwogICAgIHdhaXRfd3JpdGUoKTsKICAgfQot ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOwor ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIgUkVUX0NS TEYpOwogICB9CiAKICAgZWxzZQpAQCAtMjMwMyw3ICsyMzAyLDcgQEAKICAgICByZXR1cm4o LTEpOwogICB9CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVU X09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMi LCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCAibWF4X3BvcGFjY291bnRzICVkIiBSRVRfQ1JMRiwgCkBA IC0yMzE2LDc0ICsyMzE1LDc0IEBACiAgICAgbXlsaW1pdHMubWF4YXV0b3Jlc3BvbmRlcnMp OyB3YWl0X3dyaXRlKCk7CiAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks ICJtYXhfbWFpbGluZ2xpc3RzICVkIiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1pdHMubWF4bWFp bGluZ2xpc3RzKTsgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiZGlza19xdW90YSAlZCIgUkVUX0NSTEYsIAorICBzbnByaW50ZihXcml0 ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGlza19xdW90YSAlbGx1IiBSRVRfQ1JMRiwgCiAg ICAgbXlsaW1pdHMuZGlza3F1b3RhKTsgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0 ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAibWF4X21zZ2NvdW50ICVkIiBSRVRfQ1JMRiwgCisg IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJtYXhfbXNnY291bnQgJWxs dSIgUkVUX0NSTEYsIAogICAgIG15bGltaXRzLm1heG1zZ2NvdW50KTsgd2FpdF93cml0ZSgp OwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVmYXVsdF9xdW90 YSAlZCIgUkVUX0NSTEYsIAorICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp LCAiZGVmYXVsdF9xdW90YSAlbGx1IiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1pdHMuZGVmYXVs dHF1b3RhKTsgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3Jp dGVCdWYpLCAiZGVmYXVsdF9tYXhtc2djb3VudCAlZCIgUkVUX0NSTEYsIAorICBzbnByaW50 ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVmYXVsdF9tYXhtc2djb3VudCAlbGx1 IiBSRVRfQ1JMRiwgCiAgICAgbXlsaW1pdHMuZGVmYXVsdG1heG1zZ2NvdW50KTsgd2FpdF93 cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3BvcCkgCi0gICAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfcG9wIDEiIFJFVF9DUkxGKTsg CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2Fi bGVfcG9wIDEiIFJFVF9DUkxGKTsgCiAgIGVsc2UgCi0gICAgc25wcmludGYoV3JpdGVCdWYs c2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfcG9wIDAiIFJFVF9DUkxGKTsgCisgICAgc25w cmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfcG9wIDAi IFJFVF9DUkxGKTsgCiAKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNh YmxlX2ltYXApIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJk aXNhYmxlX2ltYXAgMSIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVv ZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX2ltYXAgMSIgUkVUX0NSTEYpOwogICBlbHNl Ci0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfaW1h cCAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVm KSwgIiVzIiwgImRpc2FibGVfaW1hcCAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsK IAogICBpZiAobXlsaW1pdHMuZGlzYWJsZV9kaWFsdXApIAotICAgIHNucHJpbnRmKFdyaXRl QnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX2RpYWx1cCAxIiBSRVRfQ1JMRik7Cisg ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVf ZGlhbHVwIDEiIFJFVF9DUkxGKTsKICAgZWxzZSAKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz aXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9kaWFsdXAgMCIgUkVUX0NSTEYpOworICAgIHNu cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX2RpYWx1 cCAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBpZiAobXlsaW1pdHMuZGlz YWJsZV9wYXNzd29yZGNoYW5naW5nKSAKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiZGlzYWJsZV9wYXNzd29yZF9jaGFuZ2luZyAxIiBSRVRfQ1JMRik7Cisg ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVf cGFzc3dvcmRfY2hhbmdpbmcgMSIgUkVUX0NSTEYpOwogICBlbHNlIAotICAgIHNucHJpbnRm KFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3Bhc3N3b3JkX2NoYW5naW5n IDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYp LCAiJXMiLCAiZGlzYWJsZV9wYXNzd29yZF9jaGFuZ2luZyAwIiBSRVRfQ1JMRik7CiAgIHdh aXRfd3JpdGUoKTsKIAogICBpZiAobXlsaW1pdHMuZGlzYWJsZV93ZWJtYWlsKQotICAgIHNu cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICJkaXNhYmxlX3dlYm1haWwgMSIg UkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl cyIsICJkaXNhYmxlX3dlYm1haWwgMSIgUkVUX0NSTEYpOwogICBlbHNlCi0gICAgc25wcmlu dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfd2VibWFpbCAwIiBSRVRf Q1JMRik7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwg ImRpc2FibGVfd2VibWFpbCAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBp ZiAobXlsaW1pdHMuZGlzYWJsZV9yZWxheSkKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9leHRlcm5hbF9yZWxheSAxIiBSRVRfQ1JMRik7Cisg ICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVf ZXh0ZXJuYWxfcmVsYXkgMSIgUkVUX0NSTEYpOwogICBlbHNlCi0gICAgc25wcmludGYoV3Jp dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfZXh0ZXJuYWxfcmVsYXkgMCIgUkVU X0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIs ICJkaXNhYmxlX2V4dGVybmFsX3JlbGF5IDAiIFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgp OwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3NtdHApCi0gICAgc25wcmludGYoV3JpdGVC dWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfc210cCAxIiBSRVRfQ1JMRik7CisgICAg c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfc210 cCAxIiBSRVRfQ1JMRik7CiAgIGVsc2UKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLCAiZGlzYWJsZV9zbXRwIDAiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihX cml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9zbXRwIDAiIFJFVF9D UkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kaXNhYmxlX3NwYW1h c3Nhc3NpbikgCi0gICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgImRp c2FibGVfc3BhbWFzc2Fzc2luIDEiIFJFVF9DUkxGKTsKKyAgICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiZGlzYWJsZV9zcGFtYXNzYXNzaW4gMSIgUkVU X0NSTEYpOwogICBlbHNlIAotICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1 ZiksICJkaXNhYmxlX3NwYW1hc3Nhc3NpbiAwIiBSRVRfQ1JMRik7CisgICAgc25wcmludGYo V3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfc3BhbWFzc2Fzc2lu IDAiIFJFVF9DUkxGKTsKICAgd2FpdF93cml0ZSgpOwogCiAgIGlmIChteWxpbWl0cy5kZWxl dGVfc3BhbSkKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVs ZXRlX3NwYW0gMSIgUkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihX cml0ZUJ1ZiksICIlcyIsICJkZWxldGVfc3BhbSAxIiBSRVRfQ1JMRik7CiAgIGVsc2UKLSAg ICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiZGVsZXRlX3NwYW0gMCIg UkVUX0NSTEYpOworICAgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIl cyIsICJkZWxldGVfc3BhbSAwIiBSRVRfQ1JMRik7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBp ZiAobXlsaW1pdHMuZGlzYWJsZV9tYWlsZHJvcCkgCi0gICAgc25wcmludGYoV3JpdGVCdWYs c2l6ZW9mKFdyaXRlQnVmKSwgImRpc2FibGVfbWFpbGRyb3AgMSIgUkVUX0NSTEYpOworICAg IHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICJkaXNhYmxlX21h aWxkcm9wIDEiIFJFVF9DUkxGKTsKICAgZWxzZSAKLSAgICBzbnByaW50ZihXcml0ZUJ1Zixz aXplb2YoV3JpdGVCdWYpLCAiZGlzYWJsZV9tYWlsZHJvcCAwIiBSRVRfQ1JMRik7CisgICAg c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgImRpc2FibGVfbWFp bGRyb3AgMCIgUkVUX0NSTEYpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgc25wcmludGYoV3Jp dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgInBlcm1fYWNjb3VudCAlZCIgUkVUX0NSTEYsIApA QCAtMjQwNiw3ICsyNDA1LDcgQEAKICAgICBteWxpbWl0cy5wZXJtX2RlZmF1bHRxdW90YSk7 IHdhaXRfd3JpdGUoKTsKICAgd2FpdF93cml0ZSgpOwogCi0gIHNucHJpbnRmKFdyaXRlQnVm LHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdyaXRlQnVm LHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIHJldHVybigwKTsK IH0KIApAQCAtMjQzNSw3ICsyNDM0LDcgQEAKICAgICByZXR1cm4oLTEpOwogICB9CiAKLSAg c25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LKTsKKyAgc25wcmlu dGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LKTsKICAgd2FpdF93 cml0ZSgpOwogCiAgIHdoaWxlKGZnZXRzKFJlYWRCdWYsc2l6ZW9mKFJlYWRCdWYpLHN0ZGlu KSE9TlVMTCApIHsKQEAgLTI0NDMsNyArMjQ0Miw3IEBACiAKICAgICBpZiAoIChwYXJhbSA9 IHN0cnRvayhSZWFkQnVmLFBBUkFNX1RPS0VOUykpID09IE5VTEwgKSBjb250aW51ZTsKICAg ICBpZiAoICh2YWx1ZSA9IHN0cnRvayhOVUxMLFBBUkFNX1RPS0VOUykpID09IE5VTEwgKSAg ewotICAgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgCisgICAgICBz bnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgICAiICBX YXJuaW5nOiBtaXNzaW5nIHZhbHVlIiBSRVRfQ1JMRik7CiAgICAgICB3YWl0X3dyaXRlKCk7 CiAgICAgICBjb250aW51ZTsKQEAgLTI1MDYsNyArMjUwNSw3IEBACiAgICAgfSBlbHNlIGlm ICggc3RyY21wKHBhcmFtLCJwZXJtX2RlZmF1bHRxdW90YSIpID09IDAgKSB7CiAgICAgICBt eWxpbWl0cy5wZXJtX2RlZmF1bHRxdW90YSA9IGF0b2kodmFsdWUpOwogICAgIH0gZWxzZSB7 Ci0gICAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAKKyAgICAgIHNu cHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICAgICIgIFdh cm5pbmc6IGludmFsaWQgb3B0aW9uIiBSRVRfQ1JMRik7CiAgICAgICB3YWl0X3dyaXRlKCk7 CiAgICAgfQpAQCAtMjUxNiw3ICsyNTE1LDcgQEAKICAgaWYgKCB2c2V0X2xpbWl0cyhkb21h aW4sJm15bGltaXRzKSA8IDAgKSB7CiAgICAgc2hvd19lcnJvciggRVJSX05PX1NFVF9MSU1J VFMsIDM1MDQgKTsKICAgfSBlbHNlIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2Yo V3JpdGVCdWYpLFJFVF9PSyk7CisgICAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl QnVmKSwgIiVzIiwgUkVUX09LKTsKICAgfQogICByZXR1cm4oMCk7CiB9CkBAIC0yNTQyLDcg KzI1NDEsNyBAQAogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1 ZixzaXplb2YoV3JpdGVCdWYpLCBSRVRfT0spOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0spOwogICByZXR1cm4oMCk7CiB9CiAKQEAgLTI1 NzcsMTAgKzI1NzYsMTAgQEAKICAgfSAKIAogICBpZiAoISh2YXV0aF9tb2R1bGVfZmVhdHVy ZSgiQVVUSF9MT0dHSU5HIikpKQotCSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl QnVmKSwgUkVUX09LKTsKKwkgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1Ziks ICIlcyIsIFJFVF9PSyk7CiAKICAgZWxzZSB7Ci0JICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCBSRVRfT0tfTU9SRSk7CisJICBzbnByaW50ZihXcml0ZUJ1ZixzaXpl b2YoV3JpdGVCdWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAJICB3YWl0X3dyaXRlKCk7CiAK IAkgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAidGltZSAlbGQiIFJF VF9DUkxGLApAQCAtMjU5MSw3ICsyNTkwLDcgQEAKIAkJIHZnZXRfbGFzdGF1dGhpcCh0bXB2 cHcsIFRtcERvbWFpbikpOwogCSAgd2FpdF93cml0ZSgpOwogCi0JICBzbnByaW50ZihXcml0 ZUJ1ZixzaXplb2YoV3JpdGVCdWYpLCAiLiIgUkVUX0NSTEYpOworCSAgc25wcmludGYoV3Jp dGVCdWYsc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgIi4iIFJFVF9DUkxGKTsKICAgfQogCiAg IHJldHVybigwKTsKQEAgLTI2MTgsMzUgKzI2MTcsMzYgQEAKIGludCBnZXRfdXNlcl9zaXpl KCkKIHsKICAgY2hhciAqZW1haWxfYWRkcmVzczsKLSAgaW50IHJldCwgY250OwotICBsb25n IGJ5dGVzOworICBpbnQgcmV0OworICBzdG9yYWdlX3QgY250OworICBzdG9yYWdlX3QgYnl0 ZXM7CiAKICAgaWYgKCEoQXV0aFZwdy5wd19naWQgJiBRQV9BRE1JTikgJiYgIShBdXRoVnB3 LnB3X2dpZCAmIFNBX0FETUlOKSkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo V3JpdGVCdWYpLCBSRVRfRVJSICIzODAxIG5vdCBhdXRob3JpemVkIiBSRVRfQ1JMRik7Cisg ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJFVF9FUlIg IjM4MDEgbm90IGF1dGhvcml6ZWQiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9 CiAKICAgaWYgKChlbWFpbF9hZGRyZXNzID0gc3RydG9rKE5VTEwsIFRPS0VOUykpID09IE5V TEwpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisgICAg c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBSRVRf RVJSICIzODAyIGVtYWlsX2FkZHJlc3MgcmVxdWlyZWQiIFJFVF9DUkxGKTsKICAgICByZXR1 cm4oLTEpOwogICB9CiAKICAgaWYgKHBhcnNlX2VtYWlsKGVtYWlsX2FkZHJlc3MsIFRtcFVz ZXIsIFRtcERvbWFpbiwgQVVUSF9TSVpFKSAhPSAwKSB7Ci0gICAgc25wcmludGYoV3JpdGVC dWYsIHNpemVvZihXcml0ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2Yo V3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzgwMyBpbnZhbGlkIGVtYWlsIGFk ZHJlc3MiIFJFVF9DUkxGKTsKICAgICByZXR1cm4oLTEpOwogICB9CiAKICAgaWYgKCEoQXV0 aFZwdy5wd19naWQgJiBTQV9BRE1JTikgJiYgKEF1dGhWcHcucHdfZ2lkICYgUUFfQURNSU4p IAogICAgICYmIChzdHJjbXAoVGhlRG9tYWluLCBUbXBEb21haW4pICE9IDApKSB7Ci0gICAg c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksIAorICAgIHNucHJpbnRmKFdy aXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLAogICAgICAgUkVUX0VSUiAiMzgwNCBu b3QgYXV0aG9yaXplZCBmb3IgZG9tYWluIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0xKTsK ICAgfQogCiAgIGlmICgodG1wdnB3ID0gdmF1dGhfZ2V0cHcoVG1wVXNlciwgVG1wRG9tYWlu KSkgPT0gTlVMTCkgewotICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYp LCAKKyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAg ICAgIFJFVF9FUlIgIjM4MDUgdXNlciBkb2VzIG5vdCBleGlzdCIgUkVUX0NSTEYpOwogICAg IHJldHVybigtMSk7CiAgIH0KQEAgLTI2NTQsMTggKzI2NTQsMTggQEAKICAgYnl0ZXMgPSAw OwogICBjbnQgPSAwOwogICBpZiAoKHJldCA9IHJlYWR1c2VycXVvdGEodG1wdnB3LT5wd19k aXIsICZieXRlcywgJmNudCkpICE9IDApIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6 ZW9mKFdyaXRlQnVmKSwgCisgICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1 ZiksICIlcyIsCiAgICAgICBSRVRfRVJSICIzODA2IHVuYWJsZSB0byBmZXRjaCBzaXplIG9m IHVzZXIgYWNjb3VudCIgUkVUX0NSTEYpOwogICAgIHJldHVybigtMSk7CiAgIH0KIAotICBz bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgUkVUX09LX01PUkUpOworICBz bnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUp OwogICB3YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVC dWYpLCAic2l6ZSAlbGQiIFJFVF9DUkxGLCBieXRlcyk7CisgIHNucHJpbnRmKFdyaXRlQnVm LCBzaXplb2YoV3JpdGVCdWYpLCAic2l6ZSAlbGx1IiBSRVRfQ1JMRiwgYnl0ZXMpOwogICB3 YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAi Y291bnQgJWQiIFJFVF9DUkxGLCBjbnQpOworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m KFdyaXRlQnVmKSwgImNvdW50ICVsdSIgUkVUX0NSTEYsIGNudCk7CiAgIHdhaXRfd3JpdGUo KTsKLSAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JM Rik7CisgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiJXMiLCAiLiIg UkVUX0NSTEYpOwogCiAgIHJldHVybigwKTsKIH0KQEAgLTI2NzMsMzEgKzI2NzMsMzIgQEAK IGludCBnZXRfZG9tYWluX3NpemUoKQogewogICBjaGFyICpkb21haW4sIHRtcGRpclsyNTZd OwotICBpbnQgcmV0LCBjbnQsIGZpcnN0OwotICBsb25nIGJ5dGVzOwotICB1bnNpZ25lZCBp bnQgdG90YWxjbnQ7Ci0gIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbGJ5dGVzOworICBpbnQg cmV0LCBmaXJzdDsKKyAgc3RvcmFnZV90IGNudDsKKyAgc3RvcmFnZV90IGJ5dGVzOworICBz dG9yYWdlX3QgdG90YWxjbnQ7CisgIHN0b3JhZ2VfdCB0b3RhbGJ5dGVzOwogCiAgIGlmICgh KEF1dGhWcHcucHdfZ2lkICYgUUFfQURNSU4pICYmICEoQXV0aFZwdy5wd19naWQgJiBTQV9B RE1JTikpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisg ICAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBS RVRfRVJSICIzOTAxIG5vdCBhdXRob3JpemVkIiBSRVRfQ1JMRik7CiAgICAgcmV0dXJuKC0x KTsKICAgfQogCiAgIGlmICgoZG9tYWluID0gc3RydG9rKE5VTEwsIFRPS0VOUykpID09IE5V TEwpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgCisgICAg c25wcmludGYoV3JpdGVCdWYsIHNpemVvZihXcml0ZUJ1ZiksICIlcyIsCiAgICAgICBSRVRf RVJSICIzOTAyIGRvbWFpbiByZXF1aXJlZCIgUkVUX0NSTEYpOwogICAgIHJldHVybigtMSk7 CiAgIH0KIAogICBpZiAoIShBdXRoVnB3LnB3X2dpZCAmIFNBX0FETUlOKSAmJiAoQXV0aFZw dy5wd19naWQgJiBRQV9BRE1JTikgCiAgICAgJiYgKHN0cmNtcChUaGVEb21haW4sIGRvbWFp bikgIT0gMCkpIHsKLSAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwK KyAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgIiVzIiwKICAgICAg IFJFVF9FUlIgIjM5MDMgbm90IGF1dGhvcml6ZWQgZm9yIGRvbWFpbiIgUkVUX0NSTEYpOwog ICAgIHJldHVybigtMSk7CiAgIH0KIAotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy aXRlQnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy aXRlQnVmKSwgIiVzIiwgUkVUX09LX01PUkUpOwogICB3YWl0X3dyaXRlKCk7CiAKICAgdG90 YWxieXRlcyA9IDA7CkBAIC0yNzE1LDEyICsyNzE2LDEyIEBACiAgICAgfSBlbHNlIHsKICAg ICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAidXNlciAlc0AlcyIg UkVUX0NSTEYsIHRtcHZwdy0+cHdfbmFtZSwgZG9tYWluKTsKICAgICAgIHdhaXRfd3JpdGUo KTsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAic2l6ZSAl bGQiIFJFVF9DUkxGLCBieXRlcyk7CisgICAgICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9m KFdyaXRlQnVmKSwgInNpemUgJWxsdSIgUkVUX0NSTEYsIGJ5dGVzKTsKICAgICAgIHdhaXRf d3JpdGUoKTsKLSAgICAgIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAi Y291bnQgJWQiIFJFVF9DUkxGLCBjbnQpOworICAgICAgc25wcmludGYoV3JpdGVCdWYsIHNp emVvZihXcml0ZUJ1ZiksICJjb3VudCAlbGx1IiBSRVRfQ1JMRiwgY250KTsKICAgICAgIHdh aXRfd3JpdGUoKTsKLSAgICAgIHRvdGFsYnl0ZXMgKz0gKHVuc2lnbmVkIGxvbmcpYnl0ZXM7 Ci0gICAgICB0b3RhbGNudCArPSAodW5zaWduZWQgaW50KWNudDsKKyAgICAgIHRvdGFsYnl0 ZXMgKz0gYnl0ZXM7CisgICAgICB0b3RhbGNudCArPSBjbnQ7CiAgICAgfQogICB9CiAKQEAg LTI3MjgsMTYgKzI3MjksMTYgQEAKICAgd2FpdF93cml0ZSgpOwogICBzbnByaW50ZihXcml0 ZUJ1Ziwgc2l6ZW9mKFdyaXRlQnVmKSwgInNpemUgJWxsdSIgUkVUX0NSTEYsIHRvdGFsYnl0 ZXMpOwogICB3YWl0X3dyaXRlKCk7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLCBzaXplb2YoV3Jp dGVCdWYpLCAiY291bnQgJXUiIFJFVF9DUkxGLCB0b3RhbGNudCk7CisgIHNucHJpbnRmKFdy aXRlQnVmLCBzaXplb2YoV3JpdGVCdWYpLCAiY291bnQgJWxsdSIgUkVUX0NSTEYsIHRvdGFs Y250KTsKICAgd2FpdF93cml0ZSgpOwotICBzbnByaW50ZihXcml0ZUJ1Ziwgc2l6ZW9mKFdy aXRlQnVmKSwgIi4iIFJFVF9DUkxGKTsKKyAgc25wcmludGYoV3JpdGVCdWYsIHNpemVvZihX cml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAKICAgcmV0dXJuKDApOwogfQogCiBp bnQgcXVpdCgpCiB7Ci0gIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksIFJF VF9PSyk7CisgIHNucHJpbnRmKFdyaXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsIFJF VF9PSyk7CiAgIHdhaXRfd3JpdGUoKTsKICAgdmNsb3NlKCk7CiAKQEAgLTI3NDgsNyArMjc0 OSw3IEBACiB7CiAgaW50IGk7CiAKLSAgc25wcmludGYoV3JpdGVCdWYsc2l6ZW9mKFdyaXRl QnVmKSwgUkVUX09LX01PUkUpOworICBzbnByaW50ZihXcml0ZUJ1ZixzaXplb2YoV3JpdGVC dWYpLCAiJXMiLCBSRVRfT0tfTU9SRSk7CiAgIHdhaXRfd3JpdGUoKTsKIAogICBmb3IoaT0w O0xvZ2luRnVuY3Rpb25zW2ldLmNvbW1hbmQhPU5VTEw7KytpICkgewpAQCAtMjc2Myw3ICsy NzY0LDcgQEAKICAgICB9CiAgICAgd2FpdF93cml0ZSgpOwogICB9Ci0gIHNucHJpbnRmKFdy aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIuIiBSRVRfQ1JMRik7CisgIHNucHJpbnRmKFdy aXRlQnVmLHNpemVvZihXcml0ZUJ1ZiksICIlcyIsICIuIiBSRVRfQ1JMRik7CiAgIAogICBy ZXR1cm4oMSk7IAogfQpkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcv dnBvcG1haWwuaCB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnBvcG1haWwuaAotLS0gdnBv cG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnBvcG1haWwuaAkyMDExLTAyLTAzIDIxOjMy OjI3LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Zwb3Bt YWlsLmgJMjAxNS0wOS0xOCAxNToxMzowNC4yNDMwOTQyNjkgKzAxMDAKQEAgLTIxLDYgKzIx LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CQkv LyBmb3IgdWlkX3QKKyNpbmNsdWRlICJzdG9yYWdlLmgiCiAjaW5jbHVkZSAidmF1dGguaCIK IAogLyogIEVuYWJsZSBleHBhbmRlZCBkZWJ1ZyBpbmZvcm1hdGlvbi4gIENvbnNpZGVyIHRo ZXNlIGZvciAuL2NvbmZpZ3VyZSBvcHRpb25zICAqLwpAQCAtMTg1LDcgKzE4Niw2IEBACiAg ICAgICAgIGNoYXIgICAgKnBhdGg7CiB9IGRvbWFpbl9lbnRyeTsKIAotCiAvKiAgIFN0cnVj dHVyZSBmb3IgbWFpbGluZyBsaXN0IGRhdGEgICovCiB0eXBlZGVmIHN0cnVjdCBsaXN0SW5m b1R5cGUgewogICAgZG9tYWluX2VudHJ5ICplbnRyeTsKQEAgLTM0Myw3ICszNDMsNyBAQAog Y2hhciAqZm9ybWF0X21haWxkaXJxdW90YShjb25zdCBjaGFyICpxKTsKIGNoYXIgKmRhdGVf aGVhZGVyKCk7CiBpbnQgcW5wcmludGYgKGNoYXIgKmJ1ZmZlciwgc2l6ZV90IHNpemUsIGNv bnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLWludCByZWFkdXNlcnF1b3RhKGNvbnN0IGNoYXIq IGRpciwgbG9uZyAqc2l6ZXAsIGludCAqY250cCk7CitpbnQgcmVhZHVzZXJxdW90YShjb25z dCBjaGFyKiBkaXIsIHN0b3JhZ2VfdCAqc2l6ZXAsIHN0b3JhZ2VfdCAqY250cCk7CiAjaWZu ZGVmIEhBVkVfV0FSTgogI2RlZmluZSB3YXJuKC4uLikgZnByaW50ZihzdGRlcnIsIF9fVkFf QVJHU19fKQogI2VuZGlmCmRpZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3Jp Zy92dXNhZ2VkL2RpcmVjdG9yeS5jIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2Vk L2RpcmVjdG9yeS5jCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2Vk L2RpcmVjdG9yeS5jCTIwMTAtMTEtMzAgMjA6MzM6MTEuMDAwMDAwMDAwICswMDAwCisrKyB2 cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC9kaXJlY3RvcnkuYwkyMDE1LTA5LTE4 IDE1OjAwOjI3Ljc0ODA5NTA4MCArMDEwMApAQCAtMzIsNyArMzIsNyBAQAogICAgI2luY2x1 ZGUgPGFzc2VydC5oPgogI2VuZGlmCiAjaW5jbHVkZSA8Y29uZi5oPgotI2luY2x1ZGUgPHN0 b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSAicGF0aC5oIgog I2luY2x1ZGUgImRpcmVjdG9yeS5oIgogCmRpZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQt dHJ1bmsub3JpZy92dXNhZ2VkL2RpcmVjdG9yeS5oIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu ay92dXNhZ2VkL2RpcmVjdG9yeS5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3Jp Zy92dXNhZ2VkL2RpcmVjdG9yeS5oCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAwMDAwMDAwICsw MDAwCisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC9kaXJlY3RvcnkuaAky MDE1LTA5LTE4IDE1OjAwOjI3Ljc0OTA5NTA3MiArMDEwMApAQCAtMjQsNyArMjQsNyBAQAog I2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogI2luY2x1ZGUgImNv bmYuaCIKLSNpbmNsdWRlICJzdG9yYWdlLmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgog CiAvKgogICAgQSBzaW5nbGUgZGlyZWN0b3J5IHN0cnVjdHVyZQpkaWZmIC11UHIgdnBvcG1h aWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC9kb21haW4uYyB2cG9wbWFpbC1jb2Rl LTEwMzQtdHJ1bmsvdnVzYWdlZC9kb21haW4uYwotLS0gdnBvcG1haWwtY29kZS0xMDM0LXRy dW5rLm9yaWcvdnVzYWdlZC9kb21haW4uYwkyMDA5LTEyLTEwIDE2OjA0OjQ1LjAwMDAwMDAw MCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQvZG9tYWluLmMJ MjAxNS0wOS0xOCAxNTowMDoyNy43NDkwOTUwNzIgKzAxMDAKQEAgLTI1LDcgKzI1LDcgQEAK ICAgICNpbmNsdWRlIDxhc3NlcnQuaD4KICNlbmRpZgogI2luY2x1ZGUgPHB0aHJlYWQuaD4K LSNpbmNsdWRlIDxzdG9yYWdlLmg+CisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogI2luY2x1 ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiZG9tYWluLmgiCiAKZGlmZiAtdVByIHZwb3BtYWls LWNvZGUtMTAzNC10cnVuay5vcmlnL3Z1c2FnZWQvZG9tYWluLmggdnBvcG1haWwtY29kZS0x MDM0LXRydW5rL3Z1c2FnZWQvZG9tYWluLmgKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVu ay5vcmlnL3Z1c2FnZWQvZG9tYWluLmgJMjAwOS0xMi0xMCAxNjowNDo0NS4wMDAwMDAwMDAg KzAwMDAKKysrIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL2RvbWFpbi5oCTIw MTUtMDktMTggMTU6MDA6MjcuNzUwMDk1MDU2ICswMTAwCkBAIC0yMiw3ICsyMiw3IEBACiAg ICAjZGVmaW5lIF9fRE9NQUlOX0hfCiAKICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0jaW5jbHVk ZSAic3RvcmFnZS5oIgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKIAogLyoKICAgIE1heGlt dW0gbGVuZ3RoIG9mIGEgZG9tYWluIG5hbWUKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAz NC10cnVuay5vcmlnL3Z1c2FnZWQvcXVvdGEuaCB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsv dnVzYWdlZC9xdW90YS5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNh Z2VkL3F1b3RhLmgJMjAwOS0wMy0xMCAxNzo0Mzo1MC4wMDAwMDAwMDAgKzAwMDAKKysrIHZw b3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3F1b3RhLmgJMjAxNS0wOS0xOCAxNTow MDoyNy43NTAwOTUwNTYgKzAxMDAKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19RVU9U QV9IXwogICAgI2RlZmluZSBfX1FVT1RBX0hfCiAKLSNpbmNsdWRlICJzdG9yYWdlLmgiCisj aW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogCiAvKgogICAgUXVvdGEgc2l6ZSBpbiBieXRlcwpk aWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC91c2VyLmMg dnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQvdXNlci5jCi0tLSB2cG9wbWFpbC1j b2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3VzZXIuYwkyMDEwLTA5LTAxIDIwOjI0OjQz LjAwMDAwMDAwMCArMDEwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQv dXNlci5jCTIwMTUtMDktMTggMTU6MDA6MjcuNzUxMDk1MDM5ICswMTAwCkBAIC0zMiw3ICsz Miw3IEBACiAjaW5jbHVkZSA8dmF1dGguaD4KICNpbmNsdWRlIDx2YXV0aG1vZHVsZS5oPgog I2luY2x1ZGUgPGNvbmYuaD4KLSNpbmNsdWRlIDxzdG9yYWdlLmg+CisjaW5jbHVkZSAiLi4v c3RvcmFnZS5oIgogI2luY2x1ZGUgInBhdGguaCIKICNpbmNsdWRlICJjYWNoZS5oIgogI2lu Y2x1ZGUgInVzZXJzdG9yZS5oIgpkaWZmIC11UHIgdnBvcG1haWwtY29kZS0xMDM0LXRydW5r Lm9yaWcvdnVzYWdlZC91c2VyLmggdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2FnZWQv dXNlci5oCi0tLSB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3VzZXIu aAkyMDEwLTA5LTAxIDIwOjI0OjQzLjAwMDAwMDAwMCArMDEwMAorKysgdnBvcG1haWwtY29k ZS0xMDM0LXRydW5rL3Z1c2FnZWQvdXNlci5oCTIwMTUtMDktMTggMTU6MDA6MjcuNzUxMDk1 MDM5ICswMTAwCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSA8dGltZS5oPgogI2luY2x1 ZGUgPHB0aHJlYWQuaD4KICNpbmNsdWRlICIuLi9jb25mLmgiCi0jaW5jbHVkZSAic3RvcmFn ZS5oIgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKICNpbmNsdWRlICJkb21haW4uaCIKICNp bmNsdWRlICJ1c2Vyc3RvcmUuaCIKICNpbmNsdWRlICIuLi92YXV0aC5oIgpkaWZmIC11UHIg dnBvcG1haWwtY29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuYyB2cG9w bWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC91c2Vyc3RvcmUuYwotLS0gdnBvcG1haWwt Y29kZS0xMDM0LXRydW5rLm9yaWcvdnVzYWdlZC91c2Vyc3RvcmUuYwkyMDA5LTEyLTEwIDE2 OjA0OjQ1LjAwMDAwMDAwMCArMDAwMAorKysgdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1 c2FnZWQvdXNlcnN0b3JlLmMJMjAxNS0wOS0xOCAxNTowMDoyNy43NTIwOTUwMjcgKzAxMDAK QEAgLTI5LDcgKzI5LDcgQEAKICNpZmRlZiBBU1NFUlRfREVCVUcKICAgICNpbmNsdWRlIDxh c3NlcnQuaD4KICNlbmRpZgotI2luY2x1ZGUgPHN0b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9z dG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgogI2luY2x1ZGUgInBhdGguaCIKICNpbmNs dWRlICJkaXJlY3RvcnkuaCIKZGlmZiAtdVByIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5v cmlnL3Z1c2FnZWQvdXNlcnN0b3JlLmggdnBvcG1haWwtY29kZS0xMDM0LXRydW5rL3Z1c2Fn ZWQvdXNlcnN0b3JlLmgKLS0tIHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay5vcmlnL3Z1c2Fn ZWQvdXNlcnN0b3JlLmgJMjAwOS0wOC0yNCAxNjo0MDoxNS4wMDAwMDAwMDAgKzAxMDAKKysr IHZwb3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3VzZXJzdG9yZS5oCTIwMTUtMDkt MTggMTU6MDA6MjcuNzUyMDk1MDI3ICswMTAwCkBAIC0yMSw3ICsyMSw3IEBACiAjaWZuZGVm IF9fVVNFUlNUT1JFX0hfCiAgICAjZGVmaW5lIF9fVVNFUlNUT1JFX0hfCiAKLSNpbmNsdWRl ICJzdG9yYWdlLmgiCisjaW5jbHVkZSAiLi4vc3RvcmFnZS5oIgogI2luY2x1ZGUgImRpcmVj dG9yeS5oIgogI2luY2x1ZGUgImNvbmYuaCIKICNpbmNsdWRlIDxwdGhyZWFkLmg+CmRpZmYg LXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5jIHZwb3Bt YWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3ZkYi5jCi0tLSB2cG9wbWFpbC1jb2RlLTEw MzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5jCTIwMTAtMDktMDEgMjA6NTQ6NDAuMDAwMDAw MDAwICswMTAwCisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC92ZGIuYwky MDE1LTA5LTE4IDE1OjAwOjI3Ljc1MzA5NTAxOSArMDEwMApAQCAtMTMsNyArMTMsNyBAQAog I2lmZGVmIEFTU0VSVF9ERUJVRwogICAgI2luY2x1ZGUgPGFzc2VydC5oPgogI2VuZGlmCi0j aW5jbHVkZSA8c3RvcmFnZS5oPgorI2luY2x1ZGUgIi4uL3N0b3JhZ2UuaCIKICNpbmNsdWRl IDxjb25mLmg+CiAjaW5jbHVkZSA8dnBvcG1haWwuaD4KICNpbmNsdWRlICJwYXRoLmgiCmRp ZmYgLXVQciB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5oIHZw b3BtYWlsLWNvZGUtMTAzNC10cnVuay92dXNhZ2VkL3ZkYi5oCi0tLSB2cG9wbWFpbC1jb2Rl LTEwMzQtdHJ1bmsub3JpZy92dXNhZ2VkL3ZkYi5oCTIwMDktMTItMTAgMTY6MDQ6NDUuMDAw MDAwMDAwICswMDAwCisrKyB2cG9wbWFpbC1jb2RlLTEwMzQtdHJ1bmsvdnVzYWdlZC92ZGIu aAkyMDE1LTA5LTE4IDE1OjAwOjI3Ljc1MzA5NTAxOSArMDEwMApAQCAtNSw3ICs1LDcgQEAK ICNpZm5kZWYgX19WREJfSF8KICAgICNkZWZpbmUgX19WREJfSF8KIAotI2luY2x1ZGUgPHN0 b3JhZ2UuaD4KKyNpbmNsdWRlICIuLi9zdG9yYWdlLmgiCiAjaW5jbHVkZSA8Y29uZi5oPgog CiAvKgo= --------------020200030005040500050403--