From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: - Real upstream fixup of qsort_cmp (BZ 515434). Date: Thu, 23 Jul 2026 18:29:13 GMT Message-ID: <178483135300.1.5154746208170062362.rpms-gdb-8bf73e0a0177@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 8bf73e0a0177506e22b7c5b8bb04ab81178df3ec ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogOGJmNzNlMGEwMTc3NTA2ZTIyYjdjNWI4YmIwNGFiODExNzhkZjNlYwog ICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3JhcHJvamVj dC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMDktMDgtMjhUMTg6MjQ6MDYrMDA6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzQ3Ni8tMzcgaW4gMyBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvOGJmNzNlMGEwMTc3 NTA2ZTIyYjdjNWI4YmIwNGFiODExNzhkZjNlYz9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAgICAg ICAgICAgTG9nOgogICAgICAgICAgICAtIFJlYWwgdXBzdHJlYW0gZml4dXAgb2YgcXNvcnRfY21w IChCWiA1MTU0MzQpLgotIFJldmVydCBiaXRmaWVsZHMgcmVncmVzc2lvbiAoQlogNTIwMTI5KS4K Ci0tLQpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTE1NDM0LXFzb3J0X2NtcC5wYXRjaCBiL2dkYi1iejUx NTQzNC1xc29ydF9jbXAucGF0Y2gKaW5kZXggYTIxNTNmMC4uMjA5NzRmMCAxMDA2NDQKLS0tIGEv Z2RiLWJ6NTE1NDM0LXFzb3J0X2NtcC5wYXRjaAorKysgYi9nZGItYno1MTU0MzQtcXNvcnRfY21w LnBhdGNoCkBAIC0xLDQ2ICsxLDIzMiBAQAotLS0tIGdkYi02LjguNTAuMjAwOTA4MTgvZ2RiL29i amZpbGVzLmMtb3JpZwkyMDA5LTA4LTI1IDE0OjE5OjA0LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi02LjguNTAuMjAwOTA4MTgvZ2RiL29iamZpbGVzLmMJMjAwOS0wOC0yNSAxNDoyODowNy4wMDAw MDAwMDAgKzAyMDAKLUBAIC04MjAsMTIgKzgyMCwxNiBAQCBxc29ydF9jbXAgKGNvbnN0IHZvaWQg KmEsIGNvbnN0IHZvaWQgKmIpCitJbmRleDogb2JqZmlsZXMuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorUkNTIGZp bGU6IC9jdnMvc3JjL3NyYy9nZGIvb2JqZmlsZXMuYyx2CityZXRyaWV2aW5nIHJldmlzaW9uIDEu OTMKK2RpZmYgLXAgLXUgLXIxLjkzIG9iamZpbGVzLmMKKy0tLSAuL2dkYi9vYmpmaWxlcy5jCTIx IEF1ZyAyMDA5IDE3OjU3OjE3IC0wMDAwCTEuOTMKKysrKyAuL2dkYi9vYmpmaWxlcy5jCTI2IEF1 ZyAyMDA5IDA3OjA3OjA0IC0wMDAwCitAQCAtNzkwLDE1ICs3OTAsOSBAQCBxc29ydF9jbXAgKGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisgICBjb25zdCBDT1JFX0FERFIgc2VjdDJfYWRk ciA9IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QyKTsKICAKICAgIGlmIChzZWN0MV9hZGRyIDwgc2Vj dDJfYWRkcikKLSAgICAgewotKyNpZiAwCS8qIHFzb3J0X2NtcCBJQ0UgKi8KLSAgICAgICBnZGJf YXNzZXJ0IChvYmpfc2VjdGlvbl9lbmRhZGRyIChzZWN0MSkgPD0gc2VjdDJfYWRkcik7Ci0rI2Vu ZGlmCS8qIHFzb3J0X2NtcCBJQ0UgKi8KLSAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KKy0gICAg eworLSAgICAgIGdkYl9hc3NlcnQgKG9ial9zZWN0aW9uX2VuZGFkZHIgKHNlY3QxKSA8PSBzZWN0 Ml9hZGRyKTsKKy0gICAgICByZXR1cm4gLTE7CistICAgIH0KKysgICAgcmV0dXJuIC0xOwogICAg ZWxzZSBpZiAoc2VjdDFfYWRkciA+IHNlY3QyX2FkZHIpCi0gICAgIHsKLSsjaWYgMAkvKiBxc29y dF9jbXAgSUNFICovCi0gICAgICAgZ2RiX2Fzc2VydCAoc2VjdDFfYWRkciA+PSBvYmpfc2VjdGlv bl9lbmRhZGRyIChzZWN0MikpOwotKyNlbmRpZgkvKiBxc29ydF9jbXAgSUNFICovCi0gICAgICAg cmV0dXJuIDE7Ci0gICAgIH0KKy0gICAgeworLSAgICAgIGdkYl9hc3NlcnQgKHNlY3QxX2FkZHIg Pj0gb2JqX3NlY3Rpb25fZW5kYWRkciAoc2VjdDIpKTsKKy0gICAgICByZXR1cm4gMTsKKy0gICAg fQorKyAgICByZXR1cm4gMTsKICAKLUBAIC04NDEsMTEgKzg0NSwxMyBAQCBxc29ydF9jbXAgKGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCi0gc3RhdGljIHN0cnVjdCBvYmpfc2VjdGlvbiAq Ci0gcHJlZmVycmVkX29ial9zZWN0aW9uIChzdHJ1Y3Qgb2JqX3NlY3Rpb24gKmEsIHN0cnVjdCBv Ympfc2VjdGlvbiAqYikKKyAgIHJldHVybiAwOworIH0KK0BAIC04MjMsMTIgKzgxNywxMzMgQEAg cHJlZmVycmVkX29ial9zZWN0aW9uIChzdHJ1Y3Qgb2JqX3NlY3RpbworICAgcmV0dXJuIGI7Cisg fQorIAorKy8qIFJldHVybiAxIGlmIFNFQ1RJT04gc2hvdWxkIGJlIGluc2VydGVkIGludG8gdGhl IHNlY3Rpb24gbWFwLgorKyAgIFdlIHdhbnQgdG8gaW5zZXJ0IG9ubHkgbm9uLW92ZXJsYXkgYW5k IG5vbi1UTFMgc2VjdGlvbi4gICovCisrCisrc3RhdGljIGludAorK2luc2VydF9zZWN0aW9uX3Ag KGNvbnN0IHN0cnVjdCBiZmQgKmFiZmQsCisrCQkgIGNvbnN0IHN0cnVjdCBiZmRfc2VjdGlvbiAq c2VjdGlvbikKKyt7CisrICBjb25zdCBiZmRfdm1hIGxtYSA9IGJmZF9zZWN0aW9uX2xtYSAoYWJm ZCwgc2VjdGlvbik7CisrCisrICBpZiAobG1hICE9IDAgJiYgbG1hICE9IGJmZF9zZWN0aW9uX3Zt YSAoYWJmZCwgc2VjdGlvbikKKysgICAgICAmJiAoYmZkX2dldF9maWxlX2ZsYWdzIChhYmZkKSAm IEJGRF9JTl9NRU1PUlkpID09IDApCisrICAgIC8qIFRoaXMgaXMgYW4gb3ZlcmxheSBzZWN0aW9u LiAgSU5fTUVNT1JZIGNoZWNrIGlzIG5lZWRlZCB0byBhdm9pZAorKyAgICAgICBkaXNjYXJkaW5n IHNlY3Rpb25zIGZyb20gdGhlICJzeXN0ZW0gc3VwcGxpZWQgRFNPIiAoYWthIHZkc28pCisrICAg ICAgIG9uIExpbnV4LiAgKi8KKysgICAgcmV0dXJuIDA7CisrICBpZiAoKGJmZF9nZXRfc2VjdGlv bl9mbGFncyAoYWJmZCwgc2VjdGlvbikgJiBTRUNfVEhSRUFEX0xPQ0FMKSAhPSAwKQorKyAgICAv KiBUaGlzIGlzIGEgVExTIHNlY3Rpb24uICAqLworKyAgICByZXR1cm4gMDsKKysKKysgIHJldHVy biAxOworK30KKysKKysvKiBGaWx0ZXIgb3V0IG92ZXJsYXBwaW5nIHNlY3Rpb25zIHdoZXJlIG9u ZSBzZWN0aW9uIGNhbWUgZnJvbSB0aGUgcmVhbAorKyAgIG9iamZpbGUsIGFuZCB0aGUgb3RoZXIg ZnJvbSBhIHNlcGFyYXRlIGRlYnVnaW5mbyBmaWxlLgorKyAgIFJldHVybiB0aGUgc2l6ZSBvZiB0 YWJsZSBhZnRlciByZWR1bmRhbnQgc2VjdGlvbnMgaGF2ZSBiZWVuIGVsaW1pbmF0ZWQuICAqLwor KworK3N0YXRpYyBpbnQKKytmaWx0ZXJfZGVidWdpbmZvX3NlY3Rpb25zIChzdHJ1Y3Qgb2JqX3Nl Y3Rpb24gKiptYXAsIGludCBtYXBfc2l6ZSkKKyt7CisrICBpbnQgaSwgajsKKysKKysgIGZvciAo aSA9IDAsIGogPSAwOyBpIDwgbWFwX3NpemUgLSAxOyBpKyspCisrICAgIHsKKysgICAgICBzdHJ1 Y3Qgb2JqX3NlY3Rpb24gKmNvbnN0IHNlY3QxID0gbWFwW2ldOworKyAgICAgIHN0cnVjdCBvYmpf c2VjdGlvbiAqY29uc3Qgc2VjdDIgPSBtYXBbaSArIDFdOworKyAgICAgIGNvbnN0IHN0cnVjdCBv YmpmaWxlICpjb25zdCBvYmpmaWxlMSA9IHNlY3QxLT5vYmpmaWxlOworKyAgICAgIGNvbnN0IHN0 cnVjdCBvYmpmaWxlICpjb25zdCBvYmpmaWxlMiA9IHNlY3QyLT5vYmpmaWxlOworKyAgICAgIGNv bnN0IENPUkVfQUREUiBzZWN0MV9hZGRyID0gb2JqX3NlY3Rpb25fYWRkciAoc2VjdDEpOworKyAg ICAgIGNvbnN0IENPUkVfQUREUiBzZWN0Ml9hZGRyID0gb2JqX3NlY3Rpb25fYWRkciAoc2VjdDIp OworKworKyAgICAgIGlmIChzZWN0MV9hZGRyID09IHNlY3QyX2FkZHIKKysJICAmJiAob2JqZmls ZTEtPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgPT0gb2JqZmlsZTIKKysJICAgICAgfHwgb2JqZmls ZTItPnNlcGFyYXRlX2RlYnVnX29iamZpbGUgPT0gb2JqZmlsZTEpKQorKwl7CisrCSAgbWFwW2or K10gPSBwcmVmZXJyZWRfb2JqX3NlY3Rpb24gKHNlY3QxLCBzZWN0Mik7CisrCSAgKytpOworKwl9 CisrICAgICAgZWxzZQorKwltYXBbaisrXSA9IHNlY3QxOworKyAgICB9CisrCisrICBpZiAoaSA8 IG1hcF9zaXplKQorKyAgICBtYXBbaisrXSA9IG1hcFtpXTsKKysKKysgIC8qIFRoZSBtYXAgc2hv dWxkIG5vdCBoYXZlIHNocnVuayB0byBsZXNzIHRoYW4gaGFsZiB0aGUgb3JpZ2luYWwgc2l6ZS4g ICovCisrICBnZGJfYXNzZXJ0IChtYXBfc2l6ZSAvIDIgPD0gaik7CisrCisrICByZXR1cm4gajsK Kyt9CisrCisrLyogRmlsdGVyIG91dCBvdmVybGFwcGluZyBzZWN0aW9ucywgaXNzdWluZyBhIHdh cm5pbmcgaWYgYW55IGFyZSBmb3VuZC4KKysgICBPdmVybGFwcGluZyBzZWN0aW9ucyBjb3VsZCBy ZWFsbHkgYmUgb3ZlcmxheSBzZWN0aW9ucyB3aGljaCB3ZSBkaWRuJ3QKKysgICBjbGFzc2lmeSBh cyBzdWNoIGluIGluc2VydF9zZWN0aW9uX3AsIG9yIHdlIGNvdWxkIGJlIGRlYWxpbmcgd2l0aCBh CisrICAgY29ycnVwdCBiaW5hcnkuICAqLworKworK3N0YXRpYyBpbnQKKytmaWx0ZXJfb3Zlcmxh cHBpbmdfc2VjdGlvbnMgKHN0cnVjdCBvYmpfc2VjdGlvbiAqKm1hcCwgaW50IG1hcF9zaXplKQor K3sKKysgIGludCBpLCBqOworKworKyAgZm9yIChpID0gMCwgaiA9IDA7IGkgPCBtYXBfc2l6ZSAt IDE7ICkKKysgICAgeworKyAgICAgIGludCBrOworKworKyAgICAgIG1hcFtqKytdID0gbWFwW2ld OworKyAgICAgIGZvciAoayA9IGkgKyAxOyBrIDwgbWFwX3NpemU7IGsrKykKKysJeworKwkgIHN0 cnVjdCBvYmpfc2VjdGlvbiAqY29uc3Qgc2VjdDEgPSBtYXBbaV07CisrCSAgc3RydWN0IG9ial9z ZWN0aW9uICpjb25zdCBzZWN0MiA9IG1hcFtrXTsKKysJICBjb25zdCBDT1JFX0FERFIgc2VjdDFf YWRkciA9IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QxKTsKKysJICBjb25zdCBDT1JFX0FERFIgc2Vj dDJfYWRkciA9IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QyKTsKKysJICBjb25zdCBDT1JFX0FERFIg c2VjdDFfZW5kYWRkciA9IG9ial9zZWN0aW9uX2VuZGFkZHIgKHNlY3QxKTsKKysKKysJICBnZGJf YXNzZXJ0IChzZWN0MV9hZGRyIDw9IHNlY3QyX2FkZHIpOworKworKwkgIGlmIChzZWN0MV9lbmRh ZGRyIDw9IHNlY3QyX2FkZHIpCisrCSAgICBicmVhazsKKysJICBlbHNlCisrCSAgICB7CisrCSAg ICAgIC8qIFdlIGhhdmUgYW4gb3ZlcmxhcC4gIFJlcG9ydCBpdC4gICovCisrCisrCSAgICAgIHN0 cnVjdCBvYmpmaWxlICpjb25zdCBvYmpmMSA9IHNlY3QxLT5vYmpmaWxlOworKwkgICAgICBzdHJ1 Y3Qgb2JqZmlsZSAqY29uc3Qgb2JqZjIgPSBzZWN0Mi0+b2JqZmlsZTsKKysKKysJICAgICAgY29u c3Qgc3RydWN0IGJmZCAqY29uc3QgYWJmZDEgPSBvYmpmMS0+b2JmZDsKKysJICAgICAgY29uc3Qg c3RydWN0IGJmZCAqY29uc3QgYWJmZDIgPSBvYmpmMi0+b2JmZDsKKysKKysJICAgICAgY29uc3Qg c3RydWN0IGJmZF9zZWN0aW9uICpjb25zdCBiZmRzMSA9IHNlY3QxLT50aGVfYmZkX3NlY3Rpb247 CisrCSAgICAgIGNvbnN0IHN0cnVjdCBiZmRfc2VjdGlvbiAqY29uc3QgYmZkczIgPSBzZWN0Mi0+ dGhlX2JmZF9zZWN0aW9uOworKworKwkgICAgICBjb25zdCBDT1JFX0FERFIgc2VjdDJfZW5kYWRk ciA9IG9ial9zZWN0aW9uX2VuZGFkZHIgKHNlY3QyKTsKKysKKysJICAgICAgc3RydWN0IGdkYmFy Y2ggKmNvbnN0IGdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmMSk7CisrCisrCSAgICAg IHdhcm5pbmcgKF8oIlVuZXhwZWN0ZWQgb3ZlcmxhcCBiZXR3ZWVuICIKKysJCQkgInNlY3Rpb24g YCVzJyBmcm9tIGAlcycgWyVzLCAlcykgYW5kICIKKysJCQkgInNlY3Rpb24gYCVzJyBmcm9tIGAl cycgWyVzLCAlcykiKSwKKysJCSAgICAgICBiZmRfc2VjdGlvbl9uYW1lIChhYmZkMSwgYmZkczEp LCBvYmpmMS0+bmFtZSwKKysJCSAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgc2VjdDFfYWRkciks CisrCQkgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIHNlY3QxX2VuZGFkZHIpLAorKwkJICAgICAg IGJmZF9zZWN0aW9uX25hbWUgKGFiZmQyLCBiZmRzMiksIG9iamYyLT5uYW1lLAorKwkJICAgICAg IHBhZGRyZXNzIChnZGJhcmNoLCBzZWN0Ml9hZGRyKSwKKysJCSAgICAgICBwYWRkcmVzcyAoZ2Ri YXJjaCwgc2VjdDJfZW5kYWRkcikpOworKwkgICAgfQorKwl9CisrICAgICAgaSA9IGs7CisrICAg IH0KKysgIHJldHVybiBtYXBfc2l6ZTsKKyt9CisrCisrCisgLyogVXBkYXRlIFBNQVAsIFBNQVBf U0laRSB3aXRoIG5vbi1UTFMgc2VjdGlvbnMgZnJvbSBhbGwgb2JqZmlsZXMuICAqLworIAorIHN0 YXRpYyB2b2lkCisgdXBkYXRlX3NlY3Rpb25fbWFwIChzdHJ1Y3Qgb2JqX3NlY3Rpb24gKioqcG1h cCwgaW50ICpwbWFwX3NpemUpCiAgewotKyNpZiAwCS8qIHFzb3J0X2NtcCBJQ0UgKi8KLSAgIGdk Yl9hc3NlcnQgKG9ial9zZWN0aW9uX2FkZHIgKGEpID09IG9ial9zZWN0aW9uX2FkZHIgKGIpKTsK LSAgIGdkYl9hc3NlcnQgKChhLT5vYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlID09IGIt Pm9iamZpbGUpCi0gCSAgICAgIHx8IChiLT5vYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxl ID09IGEtPm9iamZpbGUpKTsKLSAgIGdkYl9hc3NlcnQgKChhLT5vYmpmaWxlLT5zZXBhcmF0ZV9k ZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IGItPm9iamZpbGUpCi0gCSAgICAgIHx8IChiLT5vYmpm aWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IGEtPm9iamZpbGUpKTsKLSsj ZW5kaWYJLyogcXNvcnRfY21wIElDRSAqLworLSAgaW50IG1hcF9zaXplLCBpLCBqOworKyAgaW50 IGFsbG9jX3NpemUsIG1hcF9zaXplLCBpOworICAgc3RydWN0IG9ial9zZWN0aW9uICpzLCAqKm1h cDsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworIAorQEAgLTgzNyw1NSArOTUyLDI3IEBA IHVwZGF0ZV9zZWN0aW9uX21hcCAoc3RydWN0IG9ial9zZWN0aW9uICoKKyAgIG1hcCA9ICpwbWFw OworICAgeGZyZWUgKG1hcCk7CisgCistI2RlZmluZSBpbnNlcnRfcChvYmpmLCBzZWMpIFwKKy0g ICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzICgob2JqZiktPm9iZmQsIChzZWMpLT50aGVfYmZkX3Nl Y3Rpb24pIFwKKy0gICAgJiBTRUNfVEhSRUFEX0xPQ0FMKSA9PSAwKQorLQorLSAgbWFwX3NpemUg PSAwOworKyAgYWxsb2Nfc2l6ZSA9IDA7CisgICBBTExfT0JKU0VDVElPTlMgKG9iamZpbGUsIHMp CistICAgIGlmIChpbnNlcnRfcCAob2JqZmlsZSwgcykpCistICAgICAgbWFwX3NpemUgKz0gMTsK KysgICAgaWYgKGluc2VydF9zZWN0aW9uX3AgKG9iamZpbGUtPm9iZmQsIHMtPnRoZV9iZmRfc2Vj dGlvbikpCisrICAgICAgYWxsb2Nfc2l6ZSArPSAxOworIAorLSAgbWFwID0geG1hbGxvYyAobWFw X3NpemUgKiBzaXplb2YgKCptYXApKTsKKysgIG1hcCA9IHhtYWxsb2MgKGFsbG9jX3NpemUgKiBz aXplb2YgKCptYXApKTsKKyAKKyAgIGkgPSAwOworICAgQUxMX09CSlNFQ1RJT05TIChvYmpmaWxl LCBzKQorLSAgICBpZiAoaW5zZXJ0X3AgKG9iamZpbGUsIHMpKQorKyAgICBpZiAoaW5zZXJ0X3Nl Y3Rpb25fcCAob2JqZmlsZS0+b2JmZCwgcy0+dGhlX2JmZF9zZWN0aW9uKSkKKyAgICAgICBtYXBb aSsrXSA9IHM7CiAgCi0gICBpZiAoYS0+b2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSAh PSBOVUxMKQotICAgICByZXR1cm4gYTsKLUBAIC05MDgsNyArOTE0LDkgQEAgdXBkYXRlX3NlY3Rp b25fbWFwIChzdHJ1Y3Qgb2JqX3NlY3Rpb24gKgotICAgICB7Ci0gICAgICAgLyogU29tZSBkdXBs aWNhdGVzIHdlcmUgZWxpbWluYXRlZC4KLSAJIFRoZSBuZXcgc2l6ZSBzaG91bGRuJ3QgYmUgbGVz cyB0aGFuIGhhbGYgb2YgdGhlIG9yaWdpbmFsLiAqLwotKyNpZiAwCS8qIHFzb3J0X2NtcCBJQ0Ug Ki8KLSAgICAgICBnZGJfYXNzZXJ0IChtYXBfc2l6ZSAvIDIgPD0gaik7Ci0rI2VuZGlmCS8qIHFz b3J0X2NtcCBJQ0UgKi8KLSAgICAgICBtYXBfc2l6ZSA9IGo7CistI3VuZGVmIGluc2VydF9wCist CistICBxc29ydCAobWFwLCBtYXBfc2l6ZSwgc2l6ZW9mICgqbWFwKSwgcXNvcnRfY21wKTsKKy0K Ky0gIC8qIFdpdGggc2VwYXJhdGUgZGVidWdpbmZvIGZpbGVzLCB3ZSBtYXkgaGF2ZSB1cCB0byB0 d28gKGFsbW9zdCkKKy0gICAgIGlkZW50aWNhbCBjb3BpZXMgb2Ygc29tZSBvYmpfc2VjdGlvbnMg aW4gdGhlIG1hcC4KKy0gICAgIEZpbHRlciBvdXQgZHVwbGljYXRlcy4gICovCistICBmb3IgKGkg PSAwLCBqID0gMDsgaSA8IG1hcF9zaXplOyArK2kpCistICAgIHsKKy0gICAgICBzdHJ1Y3Qgb2Jq X3NlY3Rpb24gKnNlY3QxID0gbWFwW2ldOworLSAgICAgIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2Vj dDIgPSAoaSArIDEgPCBtYXBfc2l6ZSkgPyBtYXBbaSArIDFdIDogTlVMTDsKKy0KKy0gICAgICBp ZiAoc2VjdDIgPT0gTlVMTAorLQkgIHx8IG9ial9zZWN0aW9uX2FkZHIgKHNlY3QxKSAhPSBvYmpf c2VjdGlvbl9hZGRyIChzZWN0MikpCistCW1hcFtqKytdID0gc2VjdDE7CistICAgICAgZWxzZQor LQl7CistCSAgbWFwW2orK10gPSBwcmVmZXJyZWRfb2JqX3NlY3Rpb24gKHNlY3QxLCBzZWN0Mik7 CistCSAgKytpOworLQl9CistICAgIH0KKy0KKy0gIGlmIChqIDwgbWFwX3NpemUpCistICAgIHsK Ky0gICAgICAvKiBTb21lIGR1cGxpY2F0ZXMgd2VyZSBlbGltaW5hdGVkLgorLQkgVGhlIG5ldyBz aXplIHNob3VsZG4ndCBiZSBsZXNzIHRoYW4gaGFsZiBvZiB0aGUgb3JpZ2luYWwuICovCistICAg ICAgZ2RiX2Fzc2VydCAobWFwX3NpemUgLyAyIDw9IGopOworLSAgICAgIG1hcF9zaXplID0gajsK Ky0KKy0gICAgICBtYXAgPSB4cmVhbGxvYyAobWFwLCBtYXBfc2l6ZSAqIHNpemVvZiAoKm1hcCkp OyAgLyogVHJpbSBleGNlc3Mgc3BhY2UuICAqLworLSAgICB9CisrICBxc29ydCAobWFwLCBhbGxv Y19zaXplLCBzaXplb2YgKCptYXApLCBxc29ydF9jbXApOworKyAgbWFwX3NpemUgPSBmaWx0ZXJf ZGVidWdpbmZvX3NlY3Rpb25zKG1hcCwgYWxsb2Nfc2l6ZSk7CisrICBtYXBfc2l6ZSA9IGZpbHRl cl9vdmVybGFwcGluZ19zZWN0aW9ucyhtYXAsIG1hcF9zaXplKTsKKysKKysgIGlmIChtYXBfc2l6 ZSA8IGFsbG9jX3NpemUpCisrICAgIC8qIFNvbWUgc2VjdGlvbnMgd2VyZSBlbGltaW5hdGVkLiAg VHJpbSBleGNlc3Mgc3BhY2UuICAqLworKyAgICBtYXAgPSB4cmVhbGxvYyAobWFwLCBtYXBfc2l6 ZSAqIHNpemVvZiAoKm1hcCkpOworICAgZWxzZQorLSAgICBnZGJfYXNzZXJ0IChqID09IG1hcF9z aXplKTsKKysgICAgZ2RiX2Fzc2VydCAoYWxsb2Nfc2l6ZSA9PSBtYXBfc2l6ZSk7CiAgCi0gICAg ICAgbWFwID0geHJlYWxsb2MgKG1hcCwgbWFwX3NpemUgKiBzaXplb2YgKCptYXApKTsgIC8qIFRy aW0gZXhjZXNzIHNwYWNlLiAgKi8KKyAgICpwbWFwID0gbWFwOworICAgKnBtYXBfc2l6ZSA9IG1h cF9zaXplOwogCiAyMDA5LTA4LTI1ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+CiAKCmRpZmYgLS1naXQgYS9nZGItYno1MjAxMjktZHJvdy1iaXRmaWVsZHMucGF0 Y2ggYi9nZGItYno1MjAxMjktZHJvdy1iaXRmaWVsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uODFlY2YxYgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iejUyMDEy OS1kcm93LWJpdGZpZWxkcy5wYXRjaApAQCAtMCwwICsxLDI0NSBAQAoraHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1jdnMvMjAwOS0wNy9tc2cwMDE0My5odG1sCisKKzIwMDktMDctMjEgIERh bmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CisJICAgIFZsYWRpbWlyIFBy dXMgPHZsYWRpbWlyQGNvZGVzb3VyY2VyeS5jb20+CisKKwkqIHZhbG9wcy5jICh2YWx1ZV9mZXRj aF9sYXp5KTogSGFuZGxlIGJpdGZpZWxkcyBleHBsaWNpdGx5LgorCSh2YWx1ZV9hc3NpZ24pOiBS ZW1vdmUgdW5uZWNlc3NhcnkgRklYTUUuICBIb25vciB0aGUgY29udGFpbmVyCisJdHlwZSBvZiBi aXRmaWVsZHMgaWYgcG9zc2libGUuCisJKiB2YWx1ZS5jIChzdHJ1Y3QgdmFsdWUpOiBBZGQgcGFy ZW50IGZpZWxkLgorCSh2YWx1ZV9wYXJlbnQpOiBOZXcgZnVuY3Rpb24uCisJKHZhbHVlX2ZyZWUp OiBGcmVlIHRoZSBwYXJlbnQgYWxzby4KKwkodmFsdWVfY29weSk6IENvcHkgdGhlIHBhcmVudCBh bHNvLgorCSh2YWx1ZV9wcmltaXRpdmVfZmllbGQpOiBEbyBub3QgcmVhZCB0aGUgY29udGVudHMg b2YgYSBsYXp5CisJdmFsdWUgdG8gY3JlYXRlIGEgY2hpbGQgYml0ZmllbGQgdmFsdWUuICBTZXQg Yml0cG9zIGFuZCBvZmZzZXQKKwlhY2NvcmRpbmcgdG8gdGhlIGNvbnRhaW5lciB0eXBlIGlmIHBv c3NpYmxlLgorCSh1bnBhY2tfYml0c19hc19sb25nKTogUmVuYW1lIGZyb20gdW5wYWNrX2ZpZWxk X2FzX2xvbmcuICBUYWtlCisJZmllbGRfdHlwZSwgYml0cG9zLCBhbmQgYml0c2l6ZSBpbnN0ZWFk IG9mIHR5cGUgYW5kIGZpZWxkbm8uCisJKHVucGFja19maWVsZF9hc19sb25nKTogVXNlIHVucGFj a19iaXRzX2FzX2xvbmcuCisJKiB2YWx1ZS5oICh2YWx1ZV9wYXJlbnQsIHVucGFja19iaXRzX2Fz X2xvbmcpOiBOZXcgcHJvdG90eXBlcy4KKworWyBSZXZlcnRlZCwgYmFja3BvcnRlZCBmb3IgRmVk b3JhLiAgXQorCistLS0gLi9nZGIvdmFsb3BzLmMJMjAwOS0wOC0yOCAxOToyNzozMC4wMDAwMDAw MDAgKzAyMDAKKysrKyAuL2dkYi92YWxvcHMuYwkyMDA5LTA4LTI4IDE5OjI3OjU5LjAwMDAwMDAw MCArMDIwMAorQEAgLTY4OSwyNSArNjg5LDcgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZh bHVlICp2YWwpCisgeworICAgZ2RiX2Fzc2VydCAodmFsdWVfbGF6eSAodmFsKSk7CisgICBhbGxv Y2F0ZV92YWx1ZV9jb250ZW50cyAodmFsKTsKKy0gIGlmICh2YWx1ZV9iaXRzaXplICh2YWwpKQor LSAgICB7CistICAgICAgLyogVG8gcmVhZCBhIGxhenkgYml0ZmllbGQsIHJlYWQgdGhlIGVudGly ZSBlbmNsb3NpbmcgdmFsdWUuICBUaGlzCistCSBwcmV2ZW50cyByZWFkaW5nIHRoZSBzYW1lIGJs b2NrIG9mIChwb3NzaWJseSB2b2xhdGlsZSkgbWVtb3J5IG9uY2UKKy0gICAgICAgICBwZXIgYml0 ZmllbGQuICBJdCB3b3VsZCBiZSBldmVuIGJldHRlciB0byByZWFkIG9ubHkgdGhlIGNvbnRhaW5p bmcKKy0gICAgICAgICB3b3JkLCBidXQgd2UgaGF2ZSBubyB3YXkgdG8gcmVjb3JkIHRoYXQganVz dCBzcGVjaWZpYyBiaXRzIG9mIGEKKy0gICAgICAgICB2YWx1ZSBoYXZlIGJlZW4gZmV0Y2hlZC4g ICovCistICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBl ICh2YWwpKTsKKy0gICAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0 ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOworLSAgICAgIHN0cnVjdCB2YWx1ZSAqcGFy ZW50ID0gdmFsdWVfcGFyZW50ICh2YWwpOworLSAgICAgIExPTkdFU1Qgb2Zmc2V0ID0gdmFsdWVf b2Zmc2V0ICh2YWwpOworLSAgICAgIExPTkdFU1QgbnVtID0gdW5wYWNrX2JpdHNfYXNfbG9uZyAo dmFsdWVfdHlwZSAodmFsKSwKKy0JCQkJCSB2YWx1ZV9jb250ZW50cyAocGFyZW50KSArIG9mZnNl dCwKKy0JCQkJCSB2YWx1ZV9iaXRwb3MgKHZhbCksCistCQkJCQkgdmFsdWVfYml0c2l6ZSAodmFs KSk7CistICAgICAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKy0gICAgICBzdG9y ZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNfcmF3ICh2YWwpLCBsZW5ndGgsIGJ5dGVf b3JkZXIsIG51bSk7CistICAgIH0KKy0gIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZh bF9tZW1vcnkpCisrICBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKKyAgICAg eworICAgICAgIENPUkVfQUREUiBhZGRyID0gdmFsdWVfcmF3X2FkZHJlc3MgKHZhbCk7CisgCitA QCAtODgzLDIwICs4NjUsMTMgQEAgdmFsdWVfYXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRvdmFsLCBz dHJ1YworIAorIAlpZiAodmFsdWVfYml0c2l6ZSAodG92YWwpKQorIAkgIHsKKysJICAgIC8qIFdl IGFzc3VtZSB0aGF0IHRoZSBhcmd1bWVudCB0byByZWFkX21lbW9yeSBpcyBpbiB1bml0cworKwkg ICAgICAgb2YgaG9zdCBjaGFycy4gIEZJWE1FOiBJcyB0aGF0IGNvcnJlY3Q/ICAqLworIAkgICAg Y2hhbmdlZF9sZW4gPSAodmFsdWVfYml0cG9zICh0b3ZhbCkKKyAJCQkgICArIHZhbHVlX2JpdHNp emUgKHRvdmFsKQorIAkJCSAgICsgSE9TVF9DSEFSX0JJVCAtIDEpCisgCSAgICAgIC8gSE9TVF9D SEFSX0JJVDsKKyAKKy0JICAgIC8qIElmIHdlIGNhbiByZWFkLW1vZGlmeS13cml0ZSBleGFjdGx5 IHRoZSBzaXplIG9mIHRoZQorLQkgICAgICAgY29udGFpbmluZyB0eXBlIChlLmcuIHNob3J0IG9y IGludCkgdGhlbiBkbyBzby4gIFRoaXMKKy0JICAgICAgIGlzIHNhZmVyIGZvciB2b2xhdGlsZSBi aXRmaWVsZHMgbWFwcGVkIHRvIGhhcmR3YXJlCistCSAgICAgICByZWdpc3RlcnMuICAqLworLQkg ICAgaWYgKGNoYW5nZWRfbGVuIDwgVFlQRV9MRU5HVEggKHR5cGUpCistCQkmJiBUWVBFX0xFTkdU SCAodHlwZSkgPD0gKGludCkgc2l6ZW9mIChMT05HRVNUKQorLQkJJiYgKChMT05HRVNUKSB2YWx1 ZV9hZGRyZXNzICh0b3ZhbCkgJSBUWVBFX0xFTkdUSCAodHlwZSkpID09IDApCistCSAgICAgIGNo YW5nZWRfbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOworLQorIAkgICAgaWYgKGNoYW5nZWRfbGVu ID4gKGludCkgc2l6ZW9mIChMT05HRVNUKSkKKyAJICAgICAgZXJyb3IgKF8oIkNhbid0IGhhbmRs ZSBiaXRmaWVsZHMgd2hpY2ggZG9uJ3QgZml0IGluIGEgJWQgYml0IHdvcmQuIiksCisgCQkgICAg IChpbnQpIHNpemVvZiAoTE9OR0VTVCkgKiBIT1NUX0NIQVJfQklUKTsKKy0tLSAuL2dkYi92YWx1 ZS5jCTIwMDktMDgtMjggMTk6Mjc6MjkuMDAwMDAwMDAwICswMjAwCisrKysgLi9nZGIvdmFsdWUu YwkyMDA5LTA4LTI4IDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAorQEAgLTExMCwxMSArMTEwLDYg QEAgc3RydWN0IHZhbHVlCisgICAgICBnZGJhcmNoX2JpdHNfYmlnX2VuZGlhbj0xIHRhcmdldHMs IGl0IGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgTVNCLiAqLworICAgaW50IGJpdHBvczsKKyAKKy0g IC8qIE9ubHkgdXNlZCBmb3IgYml0ZmllbGRzOyB0aGUgY29udGFpbmluZyB2YWx1ZS4gIFRoaXMg YWxsb3dzIGEKKy0gICAgIHNpbmdsZSByZWFkIGZyb20gdGhlIHRhcmdldCB3aGVuIGRpc3BsYXlp bmcgbXVsdGlwbGUKKy0gICAgIGJpdGZpZWxkcy4gICovCistICBzdHJ1Y3QgdmFsdWUgKnBhcmVu dDsKKy0KKyAgIC8qIEZyYW1lIHJlZ2lzdGVyIHZhbHVlIGlzIHJlbGF0aXZlIHRvLiAgVGhpcyB3 aWxsIGJlIGRlc2NyaWJlZCBpbgorICAgICAgdGhlIGx2YWwgZW51bSBhYm92ZSBhcyAibHZhbF9y ZWdpc3RlciIuICAqLworICAgc3RydWN0IGZyYW1lX2lkIGZyYW1lX2lkOworQEAgLTM5MiwxMiAr Mzg3LDYgQEAgc2V0X3ZhbHVlX2JpdHNpemUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIAorICAgdmFs dWUtPmJpdHNpemUgPSBiaXQ7CisgfQorIAorLXN0cnVjdCB2YWx1ZSAqCistdmFsdWVfcGFyZW50 IChzdHJ1Y3QgdmFsdWUgKnZhbHVlKQorLXsKKy0gIHJldHVybiB2YWx1ZS0+cGFyZW50OworLX0K Ky0KKyBnZGJfYnl0ZSAqCisgdmFsdWVfY29udGVudHNfcmF3IChzdHJ1Y3QgdmFsdWUgKnZhbHVl KQorIHsKK0BAIC02MTcsMTEgKzYwNiw2IEBAIHZhbHVlX2ZyZWUgKHN0cnVjdCB2YWx1ZSAqdmFs KQorICAgICAgIGlmICh2YWwtPnJlZmVyZW5jZV9jb3VudCA+IDApCisgCXJldHVybjsKKyAKKy0g ICAgICAvKiBJZiB0aGVyZSdzIGFuIGFzc29jaWF0ZWQgcGFyZW50IHZhbHVlLCBkcm9wIG91ciBy ZWZlcmVuY2UgdG8KKy0JIGl0LiAgKi8KKy0gICAgICBpZiAodmFsLT5wYXJlbnQgIT0gTlVMTCkK Ky0JdmFsdWVfZnJlZSAodmFsLT5wYXJlbnQpOworLQorICAgICAgIHR5cGVfZGVjcmVmICh2YWwt PnR5cGUpOworICAgICAgIHR5cGVfZGVjcmVmICh2YWwtPmVuY2xvc2luZ190eXBlKTsKKyAKK0BA IC03NTAsOSArNzM0LDYgQEAgdmFsdWVfY29weSAoc3RydWN0IHZhbHVlICphcmcpCisgCSAgICAg IFRZUEVfTEVOR1RIICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAoYXJnKSkpOworIAorICAgICB9Cist ICB2YWwtPnBhcmVudCA9IGFyZy0+cGFyZW50OworLSAgaWYgKHZhbC0+cGFyZW50KQorLSAgICB2 YWx1ZV9pbmNyZWYgKHZhbC0+cGFyZW50KTsKKyAgIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2 YWxfY29tcHV0ZWQpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB2 YWwtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOworQEAgLTE5NDYsMjggKzE5MjcsMTUgQEAgdmFs dWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZworIAorICAgaWYgKFRZUEVfRklF TERfQklUU0laRSAoYXJnX3R5cGUsIGZpZWxkbm8pKQorICAgICB7CistICAgICAgLyogQ3JlYXRl IGEgbmV3IHZhbHVlIGZvciB0aGUgYml0ZmllbGQsIHdpdGggYml0cG9zIGFuZCBiaXRzaXplCist CSBzZXQuICBJZiBwb3NzaWJsZSwgYXJyYW5nZSBvZmZzZXQgYW5kIGJpdHBvcyBzbyB0aGF0IHdl IGNhbgorLQkgZG8gYSBzaW5nbGUgYWxpZ25lZCByZWFkIG9mIHRoZSBzaXplIG9mIHRoZSBjb250 YWluaW5nIHR5cGUuCistCSBPdGhlcndpc2UsIGFkanVzdCBvZmZzZXQgdG8gdGhlIGJ5dGUgY29u dGFpbmluZyB0aGUgZmlyc3QKKy0JIGJpdC4gIEFzc3VtZSB0aGF0IHRoZSBhZGRyZXNzLCBvZmZz ZXQsIGFuZCBlbWJlZGRlZCBvZmZzZXQKKy0JIGFyZSBzdWZmaWNpZW50bHkgYWxpZ25lZC4gICov CistICAgICAgaW50IGJpdHBvcyA9IFRZUEVfRklFTERfQklUUE9TIChhcmdfdHlwZSwgZmllbGRu byk7CistICAgICAgaW50IGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5HVEggKHR5cGUpICog ODsKKy0KKy0gICAgICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CisrICAgICAgdiA9 IHZhbHVlX2Zyb21fbG9uZ2VzdCAodHlwZSwKKysJCQkgICAgICB1bnBhY2tfZmllbGRfYXNfbG9u ZyAoYXJnX3R5cGUsCisrCQkJCQkJICAgIHZhbHVlX2NvbnRlbnRzIChhcmcxKQorKwkJCQkJCSAg ICArIG9mZnNldCwKKysJCQkJCQkgICAgZmllbGRubykpOworKyAgICAgIHYtPmJpdHBvcyA9IFRZ UEVfRklFTERfQklUUE9TIChhcmdfdHlwZSwgZmllbGRubykgJSA4OworICAgICAgIHYtPmJpdHNp emUgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKGFyZ190eXBlLCBmaWVsZG5vKTsKKy0gICAgICBpZiAo KGJpdHBvcyAlIGNvbnRhaW5lcl9iaXRzaXplKSArIHYtPmJpdHNpemUgPD0gY29udGFpbmVyX2Jp dHNpemUKKy0JICAmJiBUWVBFX0xFTkdUSCAodHlwZSkgPD0gKGludCkgc2l6ZW9mIChMT05HRVNU KSkKKy0Jdi0+Yml0cG9zID0gYml0cG9zICUgY29udGFpbmVyX2JpdHNpemU7CistICAgICAgZWxz ZQorLQl2LT5iaXRwb3MgPSBiaXRwb3MgJSA4OworLSAgICAgIHYtPm9mZnNldCA9IHZhbHVlX29m ZnNldCAoYXJnMSkgKyB2YWx1ZV9lbWJlZGRlZF9vZmZzZXQgKGFyZzEpCistCSsgKGJpdHBvcyAt IHYtPmJpdHBvcykgLyA4OworLSAgICAgIHYtPnBhcmVudCA9IGFyZzE7CistICAgICAgdmFsdWVf aW5jcmVmICh2LT5wYXJlbnQpOworLSAgICAgIGlmICghdmFsdWVfbGF6eSAoYXJnMSkpCistCXZh bHVlX2ZldGNoX2xhenkgKHYpOworKyAgICAgIHYtPm9mZnNldCA9IHZhbHVlX29mZnNldCAoYXJn MSkgKyBvZmZzZXQKKysJKyBUWVBFX0ZJRUxEX0JJVFBPUyAoYXJnX3R5cGUsIGZpZWxkbm8pIC8g ODsKKyAgICAgfQorICAgZWxzZSBpZiAoZmllbGRubyA8IFRZUEVfTl9CQVNFQ0xBU1NFUyAoYXJn X3R5cGUpKQorICAgICB7CitAQCAtMjA5NCw5ICsyMDYyLDggQEAgdmFsdWVfZm5fZmllbGQgKHN0 cnVjdCB2YWx1ZSAqKmFyZzFwLCBzdAorIH0KKyAKKyAMCistLyogVW5wYWNrIGEgYml0ZmllbGQg b2YgdGhlIHNwZWNpZmllZCBGSUVMRF9UWVBFLCBmcm9tIHRoZSBhbm9ueW1vdXMKKy0gICBvYmpl Y3QgYXQgVkFMQUREUi4gIFRoZSBiaXRmaWVsZCBzdGFydHMgYXQgQklUUE9TIGJpdHMgYW5kIGNv bnRhaW5zCistICAgQklUU0laRSBiaXRzLgorKy8qIFVucGFjayBhIGZpZWxkIEZJRUxETk8gb2Yg dGhlIHNwZWNpZmllZCBUWVBFLCBmcm9tIHRoZSBhbm9ueW1vdXMgb2JqZWN0IGF0CisrICAgVkFM QUREUi4KKyAKKyAgICBFeHRyYWN0aW5nIGJpdHMgZGVwZW5kcyBvbiBlbmRpYW5uZXNzIG9mIHRo ZSBtYWNoaW5lLiAgQ29tcHV0ZSB0aGUKKyAgICBudW1iZXIgb2YgbGVhc3Qgc2lnbmlmaWNhbnQg Yml0cyB0byBkaXNjYXJkLiAgRm9yIGJpZyBlbmRpYW4gbWFjaGluZXMsCitAQCAtMjExMCwyMSAr MjA3NywyNCBAQCB2YWx1ZV9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqYXJnMXAsIHN0CisgICAg SWYgdGhlIGZpZWxkIGlzIHNpZ25lZCwgd2UgYWxzbyBkbyBzaWduIGV4dGVuc2lvbi4gKi8KKyAK KyBMT05HRVNUCistdW5wYWNrX2JpdHNfYXNfbG9uZyAoc3RydWN0IHR5cGUgKmZpZWxkX3R5cGUs IGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorLQkJICAgICBpbnQgYml0cG9zLCBpbnQgYml0c2l6 ZSkKKyt1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9i eXRlICp2YWxhZGRyLCBpbnQgZmllbGRubykKKyB7CistICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9v cmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAoZmllbGRfdHlwZSkpOwor KyAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90 eXBlX2FyY2ggKHR5cGUpKTsKKyAgIFVMT05HRVNUIHZhbDsKKyAgIFVMT05HRVNUIHZhbG1hc2s7 CisrICBpbnQgYml0cG9zID0gVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGZpZWxkbm8pOworKyAg aW50IGJpdHNpemUgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGZpZWxkbm8pOworICAgaW50 IGxzYmNvdW50OworKyAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGU7CisgCisgICB2YWwgPSBleHRy YWN0X3Vuc2lnbmVkX2ludGVnZXIgKHZhbGFkZHIgKyBiaXRwb3MgLyA4LAorIAkJCQkgIHNpemVv ZiAodmFsKSwgYnl0ZV9vcmRlcik7CisrICBmaWVsZF90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCBmaWVsZG5vKTsKKyAgIENIRUNLX1RZUEVERUYgKGZpZWxkX3R5cGUpOworIAorICAgLyog RXh0cmFjdCBiaXRzLiAgU2VlIGNvbW1lbnQgYWJvdmUuICovCisgCistICBpZiAoZ2RiYXJjaF9i aXRzX2JpZ19lbmRpYW4gKGdldF90eXBlX2FyY2ggKGZpZWxkX3R5cGUpKSkKKysgIGlmIChnZGJh cmNoX2JpdHNfYmlnX2VuZGlhbiAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpKQorICAgICBsc2Jjb3Vu dCA9IChzaXplb2YgdmFsICogOCAtIGJpdHBvcyAlIDggLSBiaXRzaXplKTsKKyAgIGVsc2UKKyAg ICAgbHNiY291bnQgPSAoYml0cG9zICUgOCk7CitAQCAtMjE0OCwxOSArMjExOCw2IEBAIHVucGFj a19iaXRzX2FzX2xvbmcgKHN0cnVjdCB0eXBlICpmaWVsZF8KKyAgIHJldHVybiAodmFsKTsKKyB9 CisgCistLyogVW5wYWNrIGEgZmllbGQgRklFTEROTyBvZiB0aGUgc3BlY2lmaWVkIFRZUEUsIGZy b20gdGhlIGFub255bW91cyBvYmplY3QgYXQKKy0gICBWQUxBRERSLiAgU2VlIHVucGFja19iaXRz X2FzX2xvbmcgZm9yIG1vcmUgZGV0YWlscy4gICovCistCistTE9OR0VTVAorLXVucGFja19maWVs ZF9hc19sb25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGlu dCBmaWVsZG5vKQorLXsKKy0gIGludCBiaXRwb3MgPSBUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwg ZmllbGRubyk7CistICBpbnQgYml0c2l6ZSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgZmll bGRubyk7CistICBzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZSA9IFRZUEVfRklFTERfVFlQRSAodHlw ZSwgZmllbGRubyk7CistCistICByZXR1cm4gdW5wYWNrX2JpdHNfYXNfbG9uZyAoZmllbGRfdHlw ZSwgdmFsYWRkciwgYml0cG9zLCBiaXRzaXplKTsKKy19CistCisgLyogTW9kaWZ5IHRoZSB2YWx1 ZSBvZiBhIGJpdGZpZWxkLiAgQUREUiBwb2ludHMgdG8gYSBibG9jayBvZiBtZW1vcnkgaW4KKyAg ICB0YXJnZXQgYnl0ZSBvcmRlcjsgdGhlIGJpdGZpZWxkIHN0YXJ0cyBpbiB0aGUgYnl0ZSBwb2lu dGVkIHRvLiAgRklFTERWQUwKKyAgICBpcyB0aGUgZGVzaXJlZCB2YWx1ZSBvZiB0aGUgZmllbGQs IGluIGhvc3QgYnl0ZSBvcmRlci4gIEJJVFBPUyBhbmQgQklUU0laRQorLS0tIC4vZ2RiL3ZhbHVl LmgJMjAwOS0wOC0yOCAxOToyNzoyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyAuL2dkYi92YWx1ZS5o CTIwMDktMDgtMjggMTk6Mjc6NTkuMDAwMDAwMDAwICswMjAwCitAQCAtNzEsMTIgKzcxLDYgQEAg ZXh0ZXJuIHZvaWQgc2V0X3ZhbHVlX2JpdHNpemUgKHN0cnVjdCB2YQorIGV4dGVybiBpbnQgdmFs dWVfYml0cG9zIChzdHJ1Y3QgdmFsdWUgKik7CisgZXh0ZXJuIHZvaWQgc2V0X3ZhbHVlX2JpdHBv cyAoc3RydWN0IHZhbHVlICosIGludCBiaXQpOworIAorLS8qIE9ubHkgdXNlZCBmb3IgYml0Zmll bGRzOyB0aGUgY29udGFpbmluZyB2YWx1ZS4gIFRoaXMgYWxsb3dzIGEKKy0gICBzaW5nbGUgcmVh ZCBmcm9tIHRoZSB0YXJnZXQgd2hlbiBkaXNwbGF5aW5nIG11bHRpcGxlCistICAgYml0ZmllbGRz LiAgKi8KKy0KKy1zdHJ1Y3QgdmFsdWUgKnZhbHVlX3BhcmVudCAoc3RydWN0IHZhbHVlICopOwor LQorIC8qIERlc2NyaWJlcyBvZmZzZXQgb2YgYSB2YWx1ZSB3aXRoaW4gbHZhbCBvZiBhIHN0cnVj dHVyZSBpbiBieXRlcy4KKyAgICBJZiBsdmFsID09IGx2YWxfbWVtb3J5LCB0aGlzIGlzIGFuIG9m ZnNldCB0byB0aGUgYWRkcmVzcy4gIElmIGx2YWwKKyAgICA9PSBsdmFsX3JlZ2lzdGVyLCB0aGlz IGlzIGEgZnVydGhlciBvZmZzZXQgZnJvbSBsb2NhdGlvbi5hZGRyZXNzCitAQCAtMzMwLDggKzMy NCw2IEBAIGV4dGVybiBMT05HRVNUIHVucGFja19sb25nIChzdHJ1Y3QgdHlwZSAKKyBleHRlcm4g RE9VQkxFU1QgdW5wYWNrX2RvdWJsZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAorIAkJCSAgICAgICBpbnQgKmludnApOworIGV4dGVybiBDT1JFX0FERFIgdW5w YWNrX3BvaW50ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkcik7 CistTE9OR0VTVCB1bnBhY2tfYml0c19hc19sb25nIChzdHJ1Y3QgdHlwZSAqZmllbGRfdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCistCQkJICAgICBpbnQgYml0cG9zLCBpbnQgYml0c2l6 ZSk7CisgZXh0ZXJuIExPTkdFU1QgdW5wYWNrX2ZpZWxkX2FzX2xvbmcgKHN0cnVjdCB0eXBlICp0 eXBlLAorIAkJCQkgICAgIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorIAkJCQkgICAgIGludCBm aWVsZG5vKTsKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IGU3YjA1Zjcu LjNjMjAyNmMgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0xNCw3ICsx NCw3IEBAIFZlcnNpb246IDYuOC41MC4yMDA5MDgxOAogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBj b250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBz dHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVu Y2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDUlez9fd2l0aF91cHN0 cmVhbToudXBzdHJlYW19JXs/ZGlzdH0KK1JlbGVhc2U6IDYlez9fd2l0aF91cHN0cmVhbToudXBz dHJlYW19JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVi dWdnZXJzCkBAIC0zNjMsNiArMzYzLDkgQEAgUGF0Y2gzNzU6IGdkYi1yZWFkbGluZS02LjAucGF0 Y2gKICMgVGVtcG9yYXJpbHkgZGlzYWJsZSBhc3NlcnRpb24gY2hlY2tzIGNyYXNoaW5nIGluIHFz b3J0X2NtcCAoQlogNTE1NDM0KS4KIFBhdGNoMzc4OiBnZGItYno1MTU0MzQtcXNvcnRfY21wLnBh dGNoCiAKKyMgUmV2ZXJ0IGJpdGZpZWxkcyByZWdyZXNzaW9uIChCWiA1MjAxMjkpLgorUGF0Y2gz ODA6IGdkYi1iejUyMDEyOS1kcm93LWJpdGZpZWxkcy5wYXRjaAorCiBCdWlsZFJlcXVpcmVzOiBu Y3Vyc2VzLWRldmVsIHRleGluZm8gZ2V0dGV4dCBmbGV4IGJpc29uIGV4cGF0LWRldmVsCiBSZXF1 aXJlczogcmVhZGxpbmUKIEJ1aWxkUmVxdWlyZXM6IHJlYWRsaW5lLWRldmVsCkBAIC01NTIsNiAr NTU1LDcgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBn ZGIvcC1leHAuYwogJXBhdGNoMzYwIC1wMQogJXBhdGNoMzc1IC1wMQogJXBhdGNoMzc4IC1wMQor JXBhdGNoMzgwIC1wMQogJXBhdGNoMTI0IC1wMQogCiBmaW5kIC1uYW1lICIqLm9yaWciIHwgeGFy Z3Mgcm0gLWYKQEAgLTgyNSw2ICs4MjksMTAgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisq IEZyaSBBdWcgMjggMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4gLSA2LjguNTAuMjAwOTA4MTgtNgorLSBSZWFsIHVwc3RyZWFtIGZpeHVwIG9mIHFzb3J0X2Nt cCAoQlogNTE1NDM0KS4KKy0gUmV2ZXJ0IGJpdGZpZWxkcyByZWdyZXNzaW9uIChCWiA1MjAxMjkp LgorCiAqIFR1ZSBBdWcgMjUgMjAwOSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4gLSA2LjguNTAuMjAwOTA4MTgtNQogLSBUZW1wb3JhcmlseSBkaXNhYmxlIGFzc2Vy dGlvbiBjaGVja3MgY3Jhc2hpbmcgaW4gcXNvcnRfY21wIChCWiA1MTU0MzQpLgogCg==