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: Sergio Durigan Junior To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Re-add "[aarch64] Fix missed unaligned hardware watchpoints (RH BZ 1347993)." Date: Thu, 23 Jul 2026 18:33:16 GMT Message-ID: <178483159642.1.12105503742817786533.rpms-gdb-f62b68277777@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: f62b68277777d1b021523a23272fe156ea4fb5e7 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGZpeC1kdXAtcGF0Y2gKICAgICAg ICAgICAgQ29tbWl0IDogZjYyYjY4Mjc3Nzc3ZDFiMDIxNTIzYTIzMjcyZmUxNTZlYTRmYjVlNwog ICAgICAgICAgICBBdXRob3IgOiBTZXJnaW8gRHVyaWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhh dC5jb20+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTgtMDUtMTdUMTY6MDI6MjYtMDQ6MDAKICAg ICAgICAgICAgU3RhdHMgIDogKzEyNTQvLTAgaW4gNCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvZjYyYjY4Mjc3Nzc3 ZDFiMDIxNTIzYTIzMjcyZmUxNTZlYTRmYjVlNz9icmFuY2g9Zml4LWR1cC1wYXRjaAoKICAgICAg ICAgICAgTG9nOgogICAgICAgICAgICBSZS1hZGQgIlthYXJjaDY0XSBGaXggbWlzc2VkIHVuYWxp Z25lZCBoYXJkd2FyZSB3YXRjaHBvaW50cyAoUkggQlogMTM0Nzk5MykuIgoKVGhpcyBjb21taXQg cmUtYWRkcyB0aGUgcGF0Y2gsIHVzaW5nIHRoZSBjdXJyZW50IHBhdGNoIGZyYW1ld29yay4KCi0t LQpkaWZmIC0tZ2l0IGEvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUgYi9fZ2RiLnNwZWMuUGF0Y2gu aW5jbHVkZQppbmRleCAzNTMzNTZlLi43OGQ1ZWM1IDEwMDY0NAotLS0gYS9fZ2RiLnNwZWMuUGF0 Y2guaW5jbHVkZQorKysgYi9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZQpAQCAtNTI3LDMgKzUyNyw2 IEBAIFBhdGNoMTI2OiBnZGItcHBjNjQtc3R3dXgtdGF1dG9sb2dpY2FsLWNvbXBhcmUucGF0Y2gK ICMgPWZlZG9yYXRlc3QKIFBhdGNoMTI3OiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJjaDEyLXRl c3QucGF0Y2gKIAorIyBbYWFyY2g2NF0gRml4IG1pc3NlZCB1bmFsaWduZWQgaGFyZHdhcmUgd2F0 Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLgorUGF0Y2gxMjg6IGdkYi1yaGJ6MTM0Nzk5My1hYXJj aDY0LWh3LXdhdGNocG9pbnQucGF0Y2gKKwoKZGlmZiAtLWdpdCBhL19nZGIuc3BlYy5wYXRjaC5p bmNsdWRlIGIvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUKaW5kZXggMjhjNmQxZi4uYWE0ZmIxOSAx MDA2NDQKLS0tIGEvX2dkYi5zcGVjLnBhdGNoLmluY2x1ZGUKKysrIGIvX2dkYi5zcGVjLnBhdGNo LmluY2x1ZGUKQEAgLTEyNSwzICsxMjUsNCBAQAogJXBhdGNoMTI1IC1wMQogJXBhdGNoMTI2IC1w MQogJXBhdGNoMTI3IC1wMQorJXBhdGNoMTI4IC1wMQoKZGlmZiAtLWdpdCBhL19wYXRjaF9vcmRl ciBiL19wYXRjaF9vcmRlcgppbmRleCA5MWM2OGRhLi44NjZiY2M0IDEwMDY0NAotLS0gYS9fcGF0 Y2hfb3JkZXIKKysrIGIvX3BhdGNoX29yZGVyCkBAIC0xMjUsMyArMTI1LDQgQEAgZ2RiLXZsYS1p bnRlbC1maXgtcHJpbnQtY2hhci1hcnJheS5wYXRjaAogZ2RiLXJoYnoxNTQwNTU5LWdkYmFkZGlu ZGV4LWdsaWJjZGVidWctcmVncmVzc2lvbi5wYXRjaAogZ2RiLXBwYzY0LXN0d3V4LXRhdXRvbG9n aWNhbC1jb21wYXJlLnBhdGNoCiBnZGItcmhiejE1NTMxMDQtczM5MHgtYXJjaDEyLXRlc3QucGF0 Y2gKK2dkYi1yaGJ6MTM0Nzk5My1hYXJjaDY0LWh3LXdhdGNocG9pbnQucGF0Y2gKCmRpZmYgLS1n aXQgYS9nZGItcmhiejEzNDc5OTMtYWFyY2g2NC1ody13YXRjaHBvaW50LnBhdGNoIGIvZ2RiLXJo YnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5kMjc5ZTc0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJoYnoxMzQ3 OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaApAQCAtMCwwICsxLDEyNDkgQEAKK0Zyb20g RkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTZXJnaW8gRHVy aWdhbiBKdW5pb3IgPHNlcmdpb2RqQHJlZGhhdC5jb20+CitEYXRlOiBUaHUsIDE3IE1heSAyMDE4 IDE1OjA5OjAyIC0wNDAwCitTdWJqZWN0OiBbYWFyY2g2NF0gRml4IG1pc3NlZCB1bmFsaWduZWQg aGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLgorCitGaWxlTmFtZTogZ2RiLXJo YnoxMzQ3OTkzLWFhcmNoNjQtaHctd2F0Y2hwb2ludC5wYXRjaAorCis7OyBbYWFyY2g2NF0gRml4 IG1pc3NlZCB1bmFsaWduZWQgaGFyZHdhcmUgd2F0Y2hwb2ludHMgKFJIIEJaIDEzNDc5OTMpLgor Citjb21taXQgYTNiNjBlNDU4ODYwNjM1NGI5MzUwOGEwMDA4YTVjYTA0YjY4ZmFkOAorQXV0aG9y OiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KK0RhdGU6ICAgRnJp IE1heSA0IDIyOjIyOjA0IDIwMTggKzAyMDAKKworYWFyY2g2NDogUFIgMTk4MDY6IHdhdGNocG9p bnRzOiBmYWxzZSBuZWdhdGl2ZXMgKyBQUiAyMDIwNyBjb250aWd1b3VzIG9uZXMKKworU29tZSB1 bmFsaWduZWQgd2F0Y2hwb2ludHMgd2VyZSBjdXJyZW50bHkgbWlzc2VkLgorCitPbiBvbGQga2Vy bmVscyBhcyBzcGVjaWZpZWQgaW4KKwlrZXJuZWwgUkZFOiBhYXJjaDY0OiBwdHJhY2U6IEJBUzog U3VwcG9ydCBhbnkgY29udGlndW91cyByYW5nZSAoZWRpdCkKKwlodHRwczovL3NvdXJjZXdhcmUu b3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMDIwNworYWZ0ZXIgdGhpcyBwYXRjaCBzb21l IG90aGVyIHVuYWxpZ25lZCB3YXRjaHBvaW50cyB3aWxsIGdldCByZXBvcnRlZCBhcyBmYWxzZQor cG9zaXRpdmVzLgorCitXaXRoIG5ldyBrZXJuZWxzIGFsbCB0aGUgd2F0Y2hwb2ludHMgc2hvdWxk IHdvcmsgZXhhY3RseS4KKworVGhlcmUgbWF5IGJlIGEgcmVncmVzaW9uIHRoYXQgaXQgbm93IGxl c3MgbWVyZ2VzIHdhdGNocG9pbnRzIHNvIHRoYXQgd2l0aAorbXVsdGlwbGUgb3ZlcmxhcHBpbmcg d2F0Y2hwb2ludHMgaXQgbWF5IHJ1biBvdXQgb2YgdGhlIDQgaGFyZHdhcmUgd2F0Y2hwb2ludAor cmVnaXN0ZXJzLiAgQnV0IGFzIGRpc2N1c3NlZCBpbiB0aGUgb3JpZ2luYWwgdGhyZWFkIEdEQiBu ZWVkcyBzb21lIGdlbmVyaWMKK3dhdGNocG9pbnRzIG1lcmdpbmcgZnJhbWV3b3JrIHRvIGJlIHVz ZWQgYnkgYWxsIHRoZSB0YXJnZXQgc3BlY2lmaWMgY29kZS4KK0V2ZW4gY3VycmVudCBGU0YgR0RC IGNvZGUgZG9lcyBub3QgbWVyZ2UgaXQgcGVyZmVjdGx5LiAgQWxzbyB3aXRoIHRoZSBtb3JlCitw cmVjaXNlIHdhdGNocG9pbnRzIG9uZSBjYW4gdGVjaG5pY2FsbHkgbWVyZ2UgdGhlbSBsZXNzLiAg QW5kIEkgZG8gbm90IHRoaW5rCitpdCBtYXR0ZXJzIHRvbyBtdWNoIHRvIGltcHJvdmUgbWVyZ2Vh YmlsaXR5IG9ubHkgZm9yIG9sZCBrZXJuZWxzLgorU3RpbGwgZXZlbiBvbiBuZXcga2VybmVscyBz b21lIGJldHRlciBtZXJnaW5nIGxvZ2ljIHdvdWxkIG1ha2Ugc2Vuc2UuCisKK1RoZXJlIHJlbWFp bnMgb25lIGlzc3VlOgorCWtlcm5lbC00LjE1LjE0LTMwMC5mYzI3LmFybXY3aGwKKwlGQUlMOiBn ZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5leHA6IGNvbnRpbnVlCisJRkFJTDogZ2RiLmJh c2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhwOiBjb250aW51ZQorCShnZGIpIGNvbnRpbnVlCisJ Q29udGludWluZy4KKwlVbmV4cGVjdGVkIGVycm9yIHNldHRpbmcgd2F0Y2hwb2ludDogSW52YWxp ZCBhcmd1bWVudC4KKwkoZ2RiKSBGQUlMOiBnZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25lZC5l eHA6IGNvbnRpbnVlCitCdXQgdGhhdCBsb29rcyBhcyBhIGtlcm5lbCBidWcgdG8gbWUuCisoMSkg SXQgaXMgbm90IGEgcmVncmVzc2lvbiBieSB0aGlzIHBhdGNoLgorKDIpIEl0IGlzIHVucmVsYXRl ZCB0byB0aGlzIHBhdGNoLgorCitnZGIvQ2hhbmdlTG9nCisyMDE4LTA1LTA0ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+CisJICAgIFBlZHJvIEFsdmVzIDxwYWx2 ZXNAcmVkaGF0LmNvbT4KKworCVBSIGJyZWFrcG9pbnRzLzE5ODA2IGFuZCBzdXBwb3J0IGZvciBQ UiBleHRlcm5hbC8yMDIwNy4KKwkqIE5FV1M6IE1lbnRpb24gQWFyY2g2NCB3YXRjaHBvaW50IGlt cHJvdmVtZW50cy4KKwkqIGFhcmNoNjQtbGludXgtbmF0LmMgKGFhcmNoNjRfbGludXhfc3RvcHBl ZF9kYXRhX2FkZHJlc3MpOiBGaXggbWlzc2VkCisJd2F0Y2hwb2ludHMgYW5kIFBSIGV4dGVybmFs LzIwMjA3IHdhdGNocG9pbnRzLgorCSogbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQuYworCShr ZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UpOiBOZXcuCisJKGFhcmNoNjRfd2F0 Y2hwb2ludF9vZmZzZXQpOiBOZXcuCisJKGFhcmNoNjRfd2F0Y2hwb2ludF9sZW5ndGgpOiBTdXBw b3J0IFBSIGV4dGVybmFsLzIwMjA3IHdhdGNocG9pbnRzLgorCShhYXJjaDY0X3BvaW50X2VuY29k ZV9jdHJsX3JlZyk6IE5ldyBwYXJhbWV0ZXIgb2Zmc2V0LCBuZXcgYXNzZXJ0cy4KKwkoYWFyY2g2 NF9wb2ludF9pc19hbGlnbmVkKTogU3VwcG9ydCBQUiBleHRlcm5hbC8yMDIwNyB3YXRjaHBvaW50 cy4KKwkoYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50KTogTmV3IHBhcmFtZXRlcnMgYWxpZ25lZF9v ZmZzZXRfcCBhbmQKKwluZXh0X2FkZHJfb3JpZ19wLiAgU3VwcG9ydCBQUiBleHRlcm5hbC8yMDIw NyB3YXRjaHBvaW50cy4KKwkoYWFyY2g2NF9kb3duZ3JhZGVfcmVncyk6IE5ldy4KKwkoYWFyY2g2 NF9kcl9zdGF0ZV9pbnNlcnRfb25lX3BvaW50KTogTmV3IHBhcmFtZXRlcnMgb2Zmc2V0IGFuZAor CWFkZHJfb3JpZy4KKwkoYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3BvaW50KTogTGlrZXdp c2UuCisJKGFhcmNoNjRfaGFuZGxlX2JyZWFrcG9pbnQpOiBVcGRhdGUgY2FsbGVyLgorCShhYXJj aDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNocG9pbnQpOiBMaWtld2lzZS4KKwkoYWFyY2g2NF9oYW5k bGVfdW5hbGlnbmVkX3dhdGNocG9pbnQpOiBTdXBwb3J0IGFkZHJfb3JpZyBhbmQKKwlhbGlnbmVk X29mZnNldC4KKwkoYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyk6IFJlbW92ZSBjb25zdCBm cm9tIHN0YXRlLiAgQ2FsbAorCWFhcmNoNjRfZG93bmdyYWRlX3JlZ3MuCisJKGFhcmNoNjRfc2hv d19kZWJ1Z19yZWdfc3RhdGUpOiBQcmludCBhbHNvIGRyX2FkZHJfb3JpZ193cC4KKwkqIG5hdC9h YXJjaDY0LWxpbnV4LWh3LXBvaW50LmggKERSX0NPTlRST0xfTEVOR1RIKTogUmVuYW1lIHRvIC4u LgorCShEUl9DT05UUk9MX01BU0spOiAuLi4gdGhpcy4KKwkoc3RydWN0IGFhcmNoNjRfZGVidWdf cmVnX3N0YXRlKTogTmV3IGZpZWxkIGRyX2FkZHJfb3JpZ193cC4KKwkodW5zaWduZWQgaW50IGFh cmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQpOiBOZXcgcHJvdG90eXBlLgorCShhYXJjaDY0X2xpbnV4 X3NldF9kZWJ1Z19yZWdzKTogUmVtb3ZlIGNvbnN0IGZyb20gc3RhdGUuCisJKiB1dGlscy5jIChh bGlnbl91cCwgYWxpZ25fZG93bik6IE1vdmUgdG8gLi4uCisJKiBjb21tb24vY29tbW9uLXV0aWxz LmMgKGFsaWduX3VwLCBhbGlnbl9kb3duKTogLi4uIGhlcmUuCisJKiB1dGlscy5oIChhbGlnbl91 cCwgYWxpZ25fZG93bik6IE1vdmUgdG8gLi4uCisJKiBjb21tb24vY29tbW9uLXV0aWxzLmggKGFs aWduX3VwLCBhbGlnbl9kb3duKTogLi4uIGhlcmUuCisKK2dkYi9nZGJzZXJ2ZXIvQ2hhbmdlTG9n CisyMDE4LTA1LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ CisJICAgIFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNvbT4KKworCSogbGludXgtYWFyY2g2 NC1sb3cuYyAoYWFyY2g2NF9zdG9wcGVkX2RhdGFfYWRkcmVzcyk6CisJTGlrZXdpc2UuCisKK2dk Yi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisyMDE4LTA1LTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisJICAgIFBlZHJvIEFsdmVzIDxwYWx2ZXNAcmVkaGF0LmNv bT4KKworCVBSIGJyZWFrcG9pbnRzLzE5ODA2IGFuZCBzdXBwb3J0IGZvciBQUiBleHRlcm5hbC8y MDIwNy4KKwkqIGdkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmM6IE5ldyBmaWxlLgorCSog Z2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhwOiBOZXcgZmlsZS4KKy0tLQorIGdkYi9O RVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsKKyBnZGIv YWFyY2g2NC1saW51eC1uYXQuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMCArKy0KKyBn ZGIvY29tbW9uL2NvbW1vbi11dGlscy5jICAgICAgICAgICAgICAgICAgICAgICB8ICAyMCArKwor IGdkYi9jb21tb24vY29tbW9uLXV0aWxzLmggICAgICAgICAgICAgICAgICAgICAgIHwgIDMyICsr KworIGdkYi9nZGJzZXJ2ZXIvbGludXgtYWFyY2g2NC1sb3cuYyAgICAgICAgICAgICAgIHwgIDMx ICsrLQorIGdkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jICAgICAgICAgICAgICAgIHwg MjgyICsrKysrKysrKysrKysrKysrLS0tLS0tLQorIGdkYi9uYXQvYWFyY2g2NC1saW51eC1ody1w b2ludC5oICAgICAgICAgICAgICAgIHwgIDEwICstCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LXVuYWxpZ25lZC5jICAgfCAgOTYgKysrKysrKysKKyBnZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVkLmV4cCB8IDE4NCArKysrKysrKysrKysrKysrCisg Z2RiL3V0aWxzLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgLS0K KyBnZGIvdXRpbHMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMiAt LS0KKyAxMSBmaWxlcyBjaGFuZ2VkLCA2MTMgaW5zZXJ0aW9ucygrKSwgMTMyIGRlbGV0aW9ucygt KQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQt dW5hbGlnbmVkLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LXVuYWxpZ25lZC5leHAKKworZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05F V1MKK2luZGV4IGY0MGViNmMzOTAuLmI3YTNiYzI2MzUgMTAwNjQ0CistLS0gYS9nZGIvTkVXUwor KysrIGIvZ2RiL05FV1MKK0BAIC0xLDYgKzEsMTggQEAKKyAJCVdoYXQgaGFzIGNoYW5nZWQgaW4g R0RCPworIAkgICAgIChPcmdhbml6ZWQgcmVsZWFzZSBieSByZWxlYXNlKQorIAorKyoqKiBDaGFu Z2VzIHNpbmNlIEdEQiA4LjEKKysKKysqIEFhcmNoNjQvTGludXggaGFyZHdhcmUgd2F0Y2hwb2lu dHMgaW1wcm92ZW1lbnRzCisrCisrICBIYXJkd2FyZSB3YXRjaHBvaW50cyBvbiB1bmFsaWduZWQg YWRkcmVzc2VzIGFyZSBub3cgcHJvcGVybHkKKysgIHN1cHBvcnRlZCB3aGVuIHJ1bm5pbmcgTGlu dXgga2VybmVsIDQuMTAgb3IgaGlnaGVyOiByZWFkIGFuZCBhY2Nlc3MKKysgIHdhdGNocG9pbnRz IGFyZSBubyBsb25nZXIgc3B1cmlvdXNseSBtaXNzZWQsIGFuZCBhbGwgd2F0Y2hwb2ludHMKKysg IGxlbmd0aHMgYmV0d2VlbiAxIGFuZCA4IGJ5dGVzIGFyZSBzdXBwb3J0ZWQuICBPbiBvbGRlciBr ZXJuZWxzLAorKyAgd2F0Y2hwb2ludHMgc2V0IG9uIHVuYWxpZ25lZCBhZGRyZXNzZXMgYXJlIG5v IGxvbmdlciBtaXNzZWQsIHdpdGgKKysgIHRoZSB0cmFkZW9mZiB0aGF0IHRoZXJlIGlzIGEgcG9z c2liaWxpdHkgb2YgZmFsc2UgaGl0cyBiZWluZworKyAgcmVwb3J0ZWQuCisrCisgKioqIENoYW5n ZXMgaW4gR0RCIDguMQorIAorICogRm9ydHJhbjogU3VwcG9ydCBwb2ludGVycyB0byBkeW5hbWlj IHR5cGVzLgorZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0LWxpbnV4LW5hdC5jIGIvZ2RiL2FhcmNo NjQtbGludXgtbmF0LmMKK2luZGV4IGYwOGJmMDM5ZTQuLmFhM2I5YTc4MDAgMTAwNjQ0CistLS0g YS9nZGIvYWFyY2g2NC1saW51eC1uYXQuYworKysrIGIvZ2RiL2FhcmNoNjQtbGludXgtbmF0LmMK K0BAIC03MzUsMTcgKzczNSwzOSBAQCBhYXJjaDY0X2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNz IChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LAorICAgc3RhdGUgPSBhYXJjaDY0X2dldF9kZWJ1 Z19yZWdfc3RhdGUgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOworICAgZm9yIChpID0g YWFyY2g2NF9udW1fd3BfcmVncyAtIDE7IGkgPj0gMDsgLS1pKQorICAgICB7CisrICAgICAgY29u c3QgdW5zaWduZWQgaW50IG9mZnNldAorKwk9IGFhcmNoNjRfd2F0Y2hwb2ludF9vZmZzZXQgKHN0 YXRlLT5kcl9jdHJsX3dwW2ldKTsKKyAgICAgICBjb25zdCB1bnNpZ25lZCBpbnQgbGVuID0gYWFy Y2g2NF93YXRjaHBvaW50X2xlbmd0aCAoc3RhdGUtPmRyX2N0cmxfd3BbaV0pOworICAgICAgIGNv bnN0IENPUkVfQUREUiBhZGRyX3RyYXAgPSAoQ09SRV9BRERSKSBzaWdpbmZvLnNpX2FkZHI7Cist ICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBzdGF0ZS0+ZHJfYWRkcl93cFtpXTsK KysgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl93YXRjaCA9IHN0YXRlLT5kcl9hZGRyX3dwW2ld ICsgb2Zmc2V0OworKyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNoX2FsaWduZWQgPSBh bGlnbl9kb3duIChzdGF0ZS0+ZHJfYWRkcl93cFtpXSwgOCk7CisrICAgICAgY29uc3QgQ09SRV9B RERSIGFkZHJfb3JpZyA9IHN0YXRlLT5kcl9hZGRyX29yaWdfd3BbaV07CisgCisgICAgICAgaWYg KHN0YXRlLT5kcl9yZWZfY291bnRfd3BbaV0KKyAJICAmJiBEUl9DT05UUk9MX0VOQUJMRUQgKHN0 YXRlLT5kcl9jdHJsX3dwW2ldKQorLQkgICYmIGFkZHJfdHJhcCA+PSBhZGRyX3dhdGNoCisrCSAg JiYgYWRkcl90cmFwID49IGFkZHJfd2F0Y2hfYWxpZ25lZAorIAkgICYmIGFkZHJfdHJhcCA8IGFk ZHJfd2F0Y2ggKyBsZW4pCisgCXsKKy0JICAqYWRkcl9wID0gYWRkcl90cmFwOworLQkgIHJldHVy biAxOworKwkgIC8qIEFERFJfVFJBUCByZXBvcnRzIHRoZSBmaXJzdCBhZGRyZXNzIG9mIHRoZSBt ZW1vcnkgcmFuZ2UKKysJICAgICBhY2Nlc3NlZCBieSB0aGUgQ1BVLCByZWdhcmRsZXNzIG9mIHdo YXQgd2FzIHRoZSBtZW1vcnkKKysJICAgICByYW5nZSB3YXRjaGVkLiAgVGh1cywgYSBsYXJnZSBD UFUgYWNjZXNzIHRoYXQgc3RyYWRkbGVzCisrCSAgICAgdGhlIEFERFJfV0FUQ0guLkFERFJfV0FU Q0grTEVOIHJhbmdlIG1heSByZXN1bHQgaW4gYW4KKysJICAgICBBRERSX1RSQVAgdGhhdCBpcyBs b3dlciB0aGFuIHRoZQorKwkgICAgIEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOIHJhbmdlLiAg RS5nLjoKKysKKysJICAgICBhZGRyOiB8ICAgNCAgIHwgICA1ICAgfCAgIDYgICB8ICAgNyAgIHwg ICA4ICAgfAorKwkJCQkgICB8LS0tLSByYW5nZSB3YXRjaGVkIC0tLS18CisrCQkgICB8LS0tLS0t LS0tLS0gcmFuZ2UgYWNjZXNzZWQgLS0tLS0tLS0tLS0tfAorKworKwkgICAgIEluIHRoaXMgY2Fz ZSwgQUREUl9UUkFQIHdpbGwgYmUgNC4KKysKKysJICAgICBUbyBtYXRjaCBhIHdhdGNocG9pbnQg a25vd24gdG8gR0RCIGNvcmUsIHdlIG11c3QgbmV2ZXIKKysJICAgICByZXBvcnQgKkFERFJfUCBv dXRzaWRlIG9mIGFueSBBRERSX1dBVENILi5BRERSX1dBVENIK0xFTgorKwkgICAgIHJhbmdlLiAg QUREUl9XQVRDSCA8PSBBRERSX1RSQVAgPCBBRERSX09SSUcgaXMgYSBmYWxzZQorKwkgICAgIHBv c2l0aXZlIG9uIGtlcm5lbHMgb2xkZXIgdGhhbiA0LjEwLiAgU2VlIFBSCisrCSAgICAgZXh0ZXJu YWwvMjAyMDcuICAqLworKwkgICphZGRyX3AgPSBhZGRyX29yaWc7CisrCSAgcmV0dXJuIHRydWU7 CisgCX0KKyAgICAgfQorIAorZGlmZiAtLWdpdCBhL2dkYi9jb21tb24vY29tbW9uLXV0aWxzLmMg Yi9nZGIvY29tbW9uL2NvbW1vbi11dGlscy5jCitpbmRleCBhZTJkZDlkYjJiLi4yNGIzOTM2ZjNk IDEwMDY0NAorLS0tIGEvZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuYworKysrIGIvZ2RiL2NvbW1v bi9jb21tb24tdXRpbHMuYworQEAgLTQwOCwzICs0MDgsMjMgQEAgc3RyaW5naWZ5X2FyZ3YgKGNv bnN0IHN0ZDo6dmVjdG9yPGNoYXIgKj4gJmFyZ3MpCisgCisgICByZXR1cm4gcmV0OworIH0KKysK KysvKiBTZWUgY29tbW9uL2NvbW1vbi11dGlscy5oLiAgKi8KKysKKytVTE9OR0VTVAorK2FsaWdu X3VwIChVTE9OR0VTVCB2LCBpbnQgbikKKyt7CisrICAvKiBDaGVjayB0aGF0IE4gaXMgcmVhbGx5 IGEgcG93ZXIgb2YgdHdvLiAgKi8KKysgIGdkYl9hc3NlcnQgKG4gJiYgKG4gJiAobi0xKSkgPT0g MCk7CisrICByZXR1cm4gKHYgKyBuIC0gMSkgJiAtbjsKKyt9CisrCisrLyogU2VlIGNvbW1vbi9j b21tb24tdXRpbHMuaC4gICovCisrCisrVUxPTkdFU1QKKythbGlnbl9kb3duIChVTE9OR0VTVCB2 LCBpbnQgbikKKyt7CisrICAvKiBDaGVjayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdv LiAgKi8KKysgIGdkYl9hc3NlcnQgKG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7CisrICByZXR1cm4g KHYgJiAtbik7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9jb21tb24vY29tbW9uLXV0aWxzLmggYi9n ZGIvY29tbW9uL2NvbW1vbi11dGlscy5oCitpbmRleCAyMzIwMzE4ZGU3Li5hOTYxNTE0ZmQ2IDEw MDY0NAorLS0tIGEvZ2RiL2NvbW1vbi9jb21tb24tdXRpbHMuaAorKysrIGIvZ2RiL2NvbW1vbi9j b21tb24tdXRpbHMuaAorQEAgLTE0Niw0ICsxNDYsMzYgQEAgaW5faW5jbHVzaXZlX3JhbmdlIChU IHZhbHVlLCBUIGxvdywgVCBoaWdoKQorICAgcmV0dXJuIHZhbHVlID49IGxvdyAmJiB2YWx1ZSA8 PSBoaWdoOworIH0KKyAKKysvKiBFbnN1cmUgdGhhdCBWIGlzIGFsaWduZWQgdG8gYW4gTiBieXRl IGJvdW5kYXJ5IChCJ3MgYXNzdW1lZCB0byBiZSBhCisrICAgcG93ZXIgb2YgMikuICBSb3VuZCB1 cC9kb3duIHdoZW4gbmVjZXNzYXJ5LiAgRXhhbXBsZXMgb2YgY29ycmVjdAorKyAgIHVzZSBpbmNs dWRlOgorKworKyAgICBhZGRyID0gYWxpZ25fdXAgKGFkZHIsIDgpOyAtLSBWQUxVRSBuZWVkcyA4 IGJ5dGUgYWxpZ25tZW50CisrICAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFsdWUsIGxlbik7Cisr ICAgIGFkZHIgKz0gbGVuOworKworKyAgIGFuZDoKKysKKysgICAgc3AgPSBhbGlnbl9kb3duIChz cCAtIGxlbiwgMTYpOyAtLSBLZWVwIFNQIDE2IGJ5dGUgYWxpZ25lZAorKyAgICB3cml0ZV9tZW1v cnkgKHNwLCB2YWx1ZSwgbGVuKTsKKysKKysgICBOb3RlIHRoYXQgdXNlcyBzdWNoIGFzOgorKwor KyAgICB3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbHVlLCBsZW4pOworKyAgICBhZGRyICs9IGFsaWdu X3VwIChsZW4sIDgpOworKworKyAgIGFuZDoKKysKKysgICAgc3AgLT0gYWxpZ25fdXAgKGxlbiwg OCk7CisrICAgIHdyaXRlX21lbW9yeSAoc3AsIHZhbHVlLCBsZW4pOworKworKyAgIGFyZSB0eXBp Y2FsbHkgbm90IGNvcnJlY3QgYXMgdGhleSBkb24ndCBlbnN1cmUgdGhhdCB0aGUgYWRkcmVzcyAo U1AKKysgICBvciBBRERSKSBpcyBjb3JyZWN0bHkgYWxpZ25lZCAocmVseWluZyBvbiBwcmV2aW91 cyBhbGlnbm1lbnQgdG8KKysgICBrZWVwIHRoaW5ncyByaWdodCkuICBUaGlzIGlzIGFsc28gd2h5 IHRoZSBtZXRob2RzIGFyZSBjYWxsZWQKKysgICAiYWxpZ25fLi4uIiBpbnN0ZWFkIG9mICJyb3Vu ZF8uLi4iIGFzIHRoZSBsYXR0ZXIgcmVhZHMgYmV0dGVyIHdpdGgKKysgICB0aGlzIGluY29ycmVj dCBjb2Rpbmcgc3R5bGUuICAqLworKworK2V4dGVybiBVTE9OR0VTVCBhbGlnbl91cCAoVUxPTkdF U1QgdiwgaW50IG4pOworK2V4dGVybiBVTE9OR0VTVCBhbGlnbl9kb3duIChVTE9OR0VTVCB2LCBp bnQgbik7CisrCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1hYXJj aDY0LWxvdy5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1hYXJjaDY0LWxvdy5jCitpbmRleCBlY2Nh YzRkYTEzLi43ZWEyNGMyMzYzIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1hYXJj aDY0LWxvdy5jCisrKysgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LWFhcmNoNjQtbG93LmMKK0BAIC0z NjAsMTQgKzM2MCwzOSBAQCBhYXJjaDY0X3N0b3BwZWRfZGF0YV9hZGRyZXNzICh2b2lkKQorICAg c3RhdGUgPSBhYXJjaDY0X2dldF9kZWJ1Z19yZWdfc3RhdGUgKHBpZF9vZiAoY3VycmVudF90aHJl YWQpKTsKKyAgIGZvciAoaSA9IGFhcmNoNjRfbnVtX3dwX3JlZ3MgLSAxOyBpID49IDA7IC0taSkK KyAgICAgeworKyAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBvZmZzZXQKKysJPSBhYXJjaDY0X3dh dGNocG9pbnRfb2Zmc2V0IChzdGF0ZS0+ZHJfY3RybF93cFtpXSk7CisgICAgICAgY29uc3QgdW5z aWduZWQgaW50IGxlbiA9IGFhcmNoNjRfd2F0Y2hwb2ludF9sZW5ndGggKHN0YXRlLT5kcl9jdHJs X3dwW2ldKTsKKyAgICAgICBjb25zdCBDT1JFX0FERFIgYWRkcl90cmFwID0gKENPUkVfQUREUikg c2lnaW5mby5zaV9hZGRyOworLSAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX3dhdGNoID0gc3Rh dGUtPmRyX2FkZHJfd3BbaV07CisrICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHJfd2F0Y2ggPSBz dGF0ZS0+ZHJfYWRkcl93cFtpXSArIG9mZnNldDsKKysgICAgICBjb25zdCBDT1JFX0FERFIgYWRk cl93YXRjaF9hbGlnbmVkID0gYWxpZ25fZG93biAoc3RhdGUtPmRyX2FkZHJfd3BbaV0sIDgpOwor KyAgICAgIGNvbnN0IENPUkVfQUREUiBhZGRyX29yaWcgPSBzdGF0ZS0+ZHJfYWRkcl9vcmlnX3dw W2ldOworKworICAgICAgIGlmIChzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldCisgCSAgJiYgRFJf Q09OVFJPTF9FTkFCTEVEIChzdGF0ZS0+ZHJfY3RybF93cFtpXSkKKy0JICAmJiBhZGRyX3RyYXAg Pj0gYWRkcl93YXRjaAorKwkgICYmIGFkZHJfdHJhcCA+PSBhZGRyX3dhdGNoX2FsaWduZWQKKyAJ ICAmJiBhZGRyX3RyYXAgPCBhZGRyX3dhdGNoICsgbGVuKQorLQlyZXR1cm4gYWRkcl90cmFwOwor Kwl7CisrCSAgLyogQUREUl9UUkFQIHJlcG9ydHMgdGhlIGZpcnN0IGFkZHJlc3Mgb2YgdGhlIG1l bW9yeSByYW5nZQorKwkgICAgIGFjY2Vzc2VkIGJ5IHRoZSBDUFUsIHJlZ2FyZGxlc3Mgb2Ygd2hh dCB3YXMgdGhlIG1lbW9yeQorKwkgICAgIHJhbmdlIHdhdGNoZWQuICBUaHVzLCBhIGxhcmdlIENQ VSBhY2Nlc3MgdGhhdCBzdHJhZGRsZXMKKysJICAgICB0aGUgQUREUl9XQVRDSC4uQUREUl9XQVRD SCtMRU4gcmFuZ2UgbWF5IHJlc3VsdCBpbiBhbgorKwkgICAgIEFERFJfVFJBUCB0aGF0IGlzIGxv d2VyIHRoYW4gdGhlCisrCSAgICAgQUREUl9XQVRDSC4uQUREUl9XQVRDSCtMRU4gcmFuZ2UuICBF LmcuOgorKworKwkgICAgIGFkZHI6IHwgICA0ICAgfCAgIDUgICB8ICAgNiAgIHwgICA3ICAgfCAg IDggICB8CisrCQkJCSAgIHwtLS0tIHJhbmdlIHdhdGNoZWQgLS0tLXwKKysJCSAgIHwtLS0tLS0t LS0tLSByYW5nZSBhY2Nlc3NlZCAtLS0tLS0tLS0tLS18CisrCisrCSAgICAgSW4gdGhpcyBjYXNl LCBBRERSX1RSQVAgd2lsbCBiZSA0LgorKworKwkgICAgIFRvIG1hdGNoIGEgd2F0Y2hwb2ludCBr bm93biB0byBHREIgY29yZSwgd2UgbXVzdCBuZXZlcgorKwkgICAgIHJlcG9ydCAqQUREUl9QIG91 dHNpZGUgb2YgYW55IEFERFJfV0FUQ0guLkFERFJfV0FUQ0grTEVOCisrCSAgICAgcmFuZ2UuICBB RERSX1dBVENIIDw9IEFERFJfVFJBUCA8IEFERFJfT1JJRyBpcyBhIGZhbHNlCisrCSAgICAgcG9z aXRpdmUgb24ga2VybmVscyBvbGRlciB0aGFuIDQuMTAuICBTZWUgUFIKKysJICAgICBleHRlcm5h bC8yMDIwNy4gICovCisrCSAgcmV0dXJuIGFkZHJfb3JpZzsKKysJfQorICAgICB9CisgCisgICBy ZXR1cm4gKENPUkVfQUREUikgMDsKK2RpZmYgLS1naXQgYS9nZGIvbmF0L2FhcmNoNjQtbGludXgt aHctcG9pbnQuYyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCitpbmRleCBlOWVi YzVmYmE4Li4xMGNiZjNlNGRmIDEwMDY0NAorLS0tIGEvZ2RiL25hdC9hYXJjaDY0LWxpbnV4LWh3 LXBvaW50LmMKKysrKyBiL2dkYi9uYXQvYWFyY2g2NC1saW51eC1ody1wb2ludC5jCitAQCAtMzQs MjkgKzM0LDUyIEBACisgaW50IGFhcmNoNjRfbnVtX2JwX3JlZ3M7CisgaW50IGFhcmNoNjRfbnVt X3dwX3JlZ3M7CisgCisrLyogVHJ1ZSBpZiB0aGlzIGtlcm5lbCBkb2VzIG5vdCBoYXZlIHRoZSBi dWcgZGVzY3JpYmVkIGJ5IFBSCisrICAgZXh0ZXJuYWwvMjAyMDcgKExpbnV4ID49IDQuMTApLiAg QSBmaXhlZCBrZXJuZWwgc3VwcG9ydHMgYW55CisrICAgY29udGlndW91cyByYW5nZSBvZiBiaXRz IGluIDgtYml0IGJ5dGUgRFJfQ09OVFJPTF9NQVNLLiAgQSBidWdneQorKyAgIGtlcm5lbCBzdXBw b3J0cyBvbmx5IDB4MDEsIDB4MDMsIDB4MGYgYW5kIDB4ZmYuICBXZSBzdGFydCBieQorKyAgIGFz c3VtaW5nIHRoZSBidWcgaXMgZml4ZWQsIGFuZCB0aGVuIGRldGVjdCB0aGUgYnVnIGF0CisrICAg UFRSQUNFX1NFVFJFR1NFVCB0aW1lLiAgKi8KKytzdGF0aWMgYm9vbCBrZXJuZWxfc3VwcG9ydHNf YW55X2NvbnRpZ3VvdXNfcmFuZ2UgPSB0cnVlOworKworKy8qIFJldHVybiBzdGFydGluZyBieXRl IDAuLjcgaW5jbC4gb2YgYSB3YXRjaHBvaW50IGVuY29kZWQgYnkgQ1RSTC4gICovCisrCisrdW5z aWduZWQgaW50CisrYWFyY2g2NF93YXRjaHBvaW50X29mZnNldCAodW5zaWduZWQgaW50IGN0cmwp CisreworKyAgdWludDhfdCBtYXNrID0gRFJfQ09OVFJPTF9NQVNLIChjdHJsKTsKKysgIHVuc2ln bmVkIHJldHZhbDsKKysKKysgIC8qIFNoaWZ0IG91dCBib3R0b20gemVyb3MuICAqLworKyAgZm9y IChyZXR2YWwgPSAwOyBtYXNrICYmIChtYXNrICYgMSkgPT0gMDsgKytyZXR2YWwpCisrICAgIG1h c2sgPj49IDE7CisrCisrICByZXR1cm4gcmV0dmFsOworK30KKysKKyAvKiBVdGlsaXR5IGZ1bmN0 aW9uIHRoYXQgcmV0dXJucyB0aGUgbGVuZ3RoIGluIGJ5dGVzIG9mIGEgd2F0Y2hwb2ludAorICAg IGFjY29yZGluZyB0byB0aGUgY29udGVudCBvZiBhIGhhcmR3YXJlIGRlYnVnIGNvbnRyb2wgcmVn aXN0ZXIgQ1RSTC4KKy0gICBOb3RlIHRoYXQgdGhlIGtlcm5lbCBjdXJyZW50bHkgb25seSBzdXBw b3J0cyB0aGUgZm9sbG93aW5nIEJ5dGUKKy0gICBBZGRyZXNzIFNlbGVjdCAoQkFTKSB2YWx1ZXM6 IDB4MSwgMHgzLCAweGYgYW5kIDB4ZmYsIHdoaWNoIG1lYW5zCistICAgdGhhdCBmb3IgYSBoYXJk d2FyZSB3YXRjaHBvaW50LCBpdHMgdmFsaWQgbGVuZ3RoIGNhbiBvbmx5IGJlIDEKKy0gICBieXRl LCAyIGJ5dGVzLCA0IGJ5dGVzIG9yIDggYnl0ZXMuICAqLworKyAgIEFueSBjb250aWd1b3VzIHJh bmdlIG9mIGJ5dGVzIGluIENUUkwgaXMgc3VwcG9ydGVkLiAgVGhlIHJldHVybmVkCisrICAgdmFs dWUgY2FuIGJlIGJldHdlZW4gMC4uOCAoaW5jbHVzaXZlKS4gICovCisgCisgdW5zaWduZWQgaW50 CisgYWFyY2g2NF93YXRjaHBvaW50X2xlbmd0aCAodW5zaWduZWQgaW50IGN0cmwpCisgeworLSAg c3dpdGNoIChEUl9DT05UUk9MX0xFTkdUSCAoY3RybCkpCistICAgIHsKKy0gICAgY2FzZSAweDAx OgorLSAgICAgIHJldHVybiAxOworLSAgICBjYXNlIDB4MDM6CistICAgICAgcmV0dXJuIDI7Cist ICAgIGNhc2UgMHgwZjoKKy0gICAgICByZXR1cm4gNDsKKy0gICAgY2FzZSAweGZmOgorLSAgICAg IHJldHVybiA4OworLSAgICBkZWZhdWx0OgorLSAgICAgIHJldHVybiAwOworLSAgICB9CisrICB1 aW50OF90IG1hc2sgPSBEUl9DT05UUk9MX01BU0sgKGN0cmwpOworKyAgdW5zaWduZWQgcmV0dmFs OworKworKyAgLyogU2hpZnQgb3V0IGJvdHRvbSB6ZXJvcy4gICovCisrICBtYXNrID4+PSBhYXJj aDY0X3dhdGNocG9pbnRfb2Zmc2V0IChjdHJsKTsKKysKKysgIC8qIENvdW50IGJvdHRvbSBvbmVz LiAgKi8KKysgIGZvciAocmV0dmFsID0gMDsgKG1hc2sgJiAxKSAhPSAwOyArK3JldHZhbCkKKysg ICAgbWFzayA+Pj0gMTsKKysKKysgIGlmIChtYXNrICE9IDApCisrICAgIGVycm9yIChfKCJVbmV4 cGVjdGVkIGhhcmR3YXJlIHdhdGNocG9pbnQgbGVuZ3RoIHJlZ2lzdGVyIHZhbHVlIDB4JXgiKSwK KysJICAgRFJfQ09OVFJPTF9NQVNLIChjdHJsKSk7CisrCisrICByZXR1cm4gcmV0dmFsOworIH0K KyAKKyAvKiBHaXZlbiB0aGUgaGFyZHdhcmUgYnJlYWtwb2ludCBvciB3YXRjaHBvaW50IHR5cGUg VFlQRSBhbmQgaXRzCitAQCAtNjQsMTAgKzg3LDEzIEBAIGFhcmNoNjRfd2F0Y2hwb2ludF9sZW5n dGggKHVuc2lnbmVkIGludCBjdHJsKQorICAgIGJyZWFrcG9pbnQvd2F0Y2hwb2ludCBjb250cm9s IHJlZ2lzdGVyLiAgKi8KKyAKKyBzdGF0aWMgdW5zaWduZWQgaW50CistYWFyY2g2NF9wb2ludF9l bmNvZGVfY3RybF9yZWcgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgaW50IGxlbikKKyth YXJjaDY0X3BvaW50X2VuY29kZV9jdHJsX3JlZyAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBl LCBpbnQgb2Zmc2V0LCBpbnQgbGVuKQorIHsKKyAgIHVuc2lnbmVkIGludCBjdHJsLCB0dHlwZTsK KyAKKysgIGdkYl9hc3NlcnQgKG9mZnNldCA9PSAwIHx8IGtlcm5lbF9zdXBwb3J0c19hbnlfY29u dGlndW91c19yYW5nZSk7CisrICBnZGJfYXNzZXJ0IChvZmZzZXQgKyBsZW4gPD0gQUFSQ0g2NF9I V1BfTUFYX0xFTl9QRVJfUkVHKTsKKysKKyAgIC8qIHR5cGUgKi8KKyAgIHN3aXRjaCAodHlwZSkK KyAgICAgeworQEAgLTg5LDggKzExNSw4IEBAIGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVn IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIGludCBsZW4pCisgCisgICBjdHJsID0gdHR5 cGUgPDwgMzsKKyAKKy0gIC8qIGxlbmd0aCBiaXRtYXNrICovCistICBjdHJsIHw9ICgoMSA8PCBs ZW4pIC0gMSkgPDwgNTsKKysgIC8qIG9mZnNldCBhbmQgbGVuZ3RoIGJpdG1hc2sgKi8KKysgIGN0 cmwgfD0gKCgxIDw8IGxlbikgLSAxKSA8PCAoNSArIG9mZnNldCk7CisgICAvKiBlbmFibGVkIGF0 IGVsMCAqLworICAgY3RybCB8PSAoMiA8PCAxKSB8IDE7CisgCitAQCAtMTM0LDU5ICsxNjAsNjUg QEAgYWFyY2g2NF9wb2ludF9pc19hbGlnbmVkIChpbnQgaXNfd2F0Y2hwb2ludCwgQ09SRV9BRERS IGFkZHIsIExPTkdFU1QgbGVuKQorICAgaWYgKGFkZHIgJiAoYWxpZ25tZW50IC0gMSkpCisgICAg IHJldHVybiAwOworIAorLSAgaWYgKGxlbiAhPSA4ICYmIGxlbiAhPSA0ICYmIGxlbiAhPSAyICYm IGxlbiAhPSAxKQorKyAgaWYgKCgha2VybmVsX3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3Jhbmdl CisrICAgICAgICYmIGxlbiAhPSA4ICYmIGxlbiAhPSA0ICYmIGxlbiAhPSAyICYmIGxlbiAhPSAx KQorKyAgICAgIHx8IChrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNfcmFuZ2UKKysJICAm JiAobGVuIDwgMSB8fCBsZW4gPiA4KSkpCisgICAgIHJldHVybiAwOworIAorICAgcmV0dXJuIDE7 CisgfQorIAorIC8qIEdpdmVuIHRoZSAocG90ZW50aWFsbHkgdW5hbGlnbmVkKSB3YXRjaHBvaW50 IGFkZHJlc3MgaW4gQUREUiBhbmQKKy0gICBsZW5ndGggaW4gTEVOLCByZXR1cm4gdGhlIGFsaWdu ZWQgYWRkcmVzcyBhbmQgYWxpZ25lZCBsZW5ndGggaW4KKy0gICAqQUxJR05FRF9BRERSX1AgYW5k ICpBTElHTkVEX0xFTl9QLCByZXNwZWN0aXZlbHkuICBUaGUgcmV0dXJuZWQKKy0gICBhbGlnbmVk IGFkZHJlc3MgYW5kIGxlbmd0aCB3aWxsIGJlIHZhbGlkIHZhbHVlcyB0byB3cml0ZSB0byB0aGUK Ky0gICBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIGFuZCBjb250cm9sIHJlZ2lzdGVycy4KKysg ICBsZW5ndGggaW4gTEVOLCByZXR1cm4gdGhlIGFsaWduZWQgYWRkcmVzcywgb2Zmc2V0IGZyb20g dGhhdCBiYXNlCisrICAgYWRkcmVzcywgYW5kIGFsaWduZWQgbGVuZ3RoIGluICpBTElHTkVEX0FE RFJfUCwgKkFMSUdORURfT0ZGU0VUX1AKKysgICBhbmQgKkFMSUdORURfTEVOX1AsIHJlc3BlY3Rp dmVseS4gIFRoZSByZXR1cm5lZCB2YWx1ZXMgd2lsbCBiZQorKyAgIHZhbGlkIHZhbHVlcyB0byB3 cml0ZSB0byB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCB2YWx1ZSBhbmQgY29udHJvbAorKyAgIHJl Z2lzdGVycy4KKyAKKyAgICBUaGUgZ2l2ZW4gd2F0Y2hwb2ludCBtYXkgZ2V0IHRydW5jYXRlZCBp ZiBtb3JlIHRoYW4gb25lIGhhcmR3YXJlCisgICAgcmVnaXN0ZXIgaXMgbmVlZGVkIHRvIGNvdmVy IHRoZSB3YXRjaGVkIHJlZ2lvbi4gICpORVhUX0FERFJfUAorICAgIGFuZCAqTkVYVF9MRU5fUCwg aWYgbm9uLU5VTEwsIHdpbGwgcmV0dXJuIHRoZSBhZGRyZXNzIGFuZCBsZW5ndGgKKyAgICBvZiB0 aGUgcmVtYWluaW5nIHBhcnQgb2YgdGhlIHdhdGNocG9pbnQgKHdoaWNoIGNhbiBiZSBwcm9jZXNz ZWQKKy0gICBieSBjYWxsaW5nIHRoaXMgcm91dGluZSBhZ2FpbiB0byBnZW5lcmF0ZSBhbm90aGVy IGFsaWduZWQgYWRkcmVzcworLSAgIGFuZCBsZW5ndGggcGFpci4KKysgICBieSBjYWxsaW5nIHRo aXMgcm91dGluZSBhZ2FpbiB0byBnZW5lcmF0ZSBhbm90aGVyIGFsaWduZWQgYWRkcmVzcywKKysg ICBvZmZzZXQgYW5kIGxlbmd0aCB0dXBsZS4KKyAKKyAgICBFc3NlbnRpYWxseSwgdW5hbGlnbmVk IHdhdGNocG9pbnQgaXMgYWNoaWV2ZWQgYnkgbWluaW1hbGx5CisgICAgZW5sYXJnaW5nIHRoZSB3 YXRjaGVkIGFyZWEgdG8gbWVldCB0aGUgYWxpZ25tZW50IHJlcXVpcmVtZW50LCBhbmQKKyAgICBp ZiBuZWNlc3NhcnksIHNwbGl0dGluZyB0aGUgd2F0Y2hwb2ludCBvdmVyIHNldmVyYWwgaGFyZHdh cmUKKy0gICB3YXRjaHBvaW50IHJlZ2lzdGVycy4gIFRoZSB0cmFkZS1vZmYgaXMgdGhhdCB0aGVy ZSB3aWxsIGJlCistICAgZmFsc2UtcG9zaXRpdmUgaGl0cyBmb3IgdGhlIHJlYWQtdHlwZSBvciB0 aGUgYWNjZXNzLXR5cGUgaGFyZHdhcmUKKy0gICB3YXRjaHBvaW50czsgZm9yIHRoZSB3cml0ZSB0 eXBlLCB3aGljaCBpcyBtb3JlIGNvbW1vbmx5IHVzZWQsIHRoZXJlCistICAgd2lsbCBiZSBubyBz dWNoIGlzc3VlcywgYXMgdGhlIGhpZ2hlci1sZXZlbCBicmVha3BvaW50IG1hbmFnZW1lbnQKKy0g ICBpbiBnZGIgYWx3YXlzIGV4YW1pbmVzIHRoZSBleGFjdCB3YXRjaGVkIHJlZ2lvbiBmb3IgYW55 IGNvbnRlbnQKKy0gICBjaGFuZ2UsIGFuZCB0cmFuc3BhcmVudGx5IHJlc3VtZXMgYSB0aHJlYWQg ZnJvbSBhIHdhdGNocG9pbnQgdHJhcAorLSAgIGlmIHRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUg d2F0Y2hlZCByZWdpb24uCisrICAgd2F0Y2hwb2ludCByZWdpc3RlcnMuCisrCisrICAgT24ga2Vy bmVscyB0aGF0IHByZWRhdGUgdGhlIHN1cHBvcnQgZm9yIEJ5dGUgQWRkcmVzcyBTZWxlY3QgKEJB UykKKysgICBpbiB0aGUgaGFyZHdhcmUgd2F0Y2hwb2ludCBjb250cm9sIHJlZ2lzdGVyLCB0aGUg b2Zmc2V0IGZyb20gdGhlCisrICAgYmFzZSBhZGRyZXNzIGlzIGFsd2F5cyB6ZXJvLCBhbmQgc28g aW4gdGhhdCBjYXNlIHRoZSB0cmFkZS1vZmYgaXMKKysgICB0aGF0IHRoZXJlIHdpbGwgYmUgZmFs c2UtcG9zaXRpdmUgaGl0cyBmb3IgdGhlIHJlYWQtdHlwZSBvciB0aGUKKysgICBhY2Nlc3MtdHlw ZSBoYXJkd2FyZSB3YXRjaHBvaW50czsgZm9yIHRoZSB3cml0ZSB0eXBlLCB3aGljaCBpcyBtb3Jl CisrICAgY29tbW9ubHkgdXNlZCwgdGhlcmUgd2lsbCBiZSBubyBzdWNoIGlzc3VlcywgYXMgdGhl IGhpZ2hlci1sZXZlbAorKyAgIGJyZWFrcG9pbnQgbWFuYWdlbWVudCBpbiBnZGIgYWx3YXlzIGV4 YW1pbmVzIHRoZSBleGFjdCB3YXRjaGVkCisrICAgcmVnaW9uIGZvciBhbnkgY29udGVudCBjaGFu Z2UsIGFuZCB0cmFuc3BhcmVudGx5IHJlc3VtZXMgYSB0aHJlYWQKKysgICBmcm9tIGEgd2F0Y2hw b2ludCB0cmFwIGlmIHRoZXJlIGlzIG5vIGNoYW5nZSB0byB0aGUgd2F0Y2hlZCByZWdpb24uCisg CisgICAgQW5vdGhlciBsaW1pdGF0aW9uIGlzIHRoYXQgYmVjYXVzZSB0aGUgd2F0Y2hlZCByZWdp b24gaXMgZW5sYXJnZWQsCistICAgdGhlIHdhdGNocG9pbnQgZmF1bHQgYWRkcmVzcyByZXR1cm5l ZCBieQorKyAgIHRoZSB3YXRjaHBvaW50IGZhdWx0IGFkZHJlc3MgZGlzY292ZXJlZCBieQorICAg IGFhcmNoNjRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgbWF5IGJlIG91dHNpZGUgb2YgdGhlIG9yaWdp bmFsIHdhdGNoZWQKKyAgICByZWdpb24sIGVzcGVjaWFsbHkgd2hlbiB0aGUgdHJpZ2dlcmluZyBp bnN0cnVjdGlvbiBpcyBhY2Nlc3NpbmcgYQorICAgIGxhcmdlciByZWdpb24uICBXaGVuIHRoZSBm YXVsdCBhZGRyZXNzIGlzIG5vdCB3aXRoaW4gYW55IGtub3duCisgICAgcmFuZ2UsIHdhdGNocG9p bnRzX3RyaWdnZXJlZCBpbiBnZGIgd2lsbCBnZXQgY29uZnVzZWQsIGFzIHRoZQorICAgIGhpZ2hl ci1sZXZlbCB3YXRjaHBvaW50IG1hbmFnZW1lbnQgaXMgb25seSBhd2FyZSBvZiBvcmlnaW5hbAor ICAgIHdhdGNoZWQgcmVnaW9ucywgYW5kIHdpbGwgdGhpbmsgdGhhdCBzb21lIHVua25vd24gd2F0 Y2hwb2ludCBoYXMKKy0gICBiZWVuIHRyaWdnZXJlZC4gIEluIHN1Y2ggYSBjYXNlLCBnZGIgbWF5 IHN0b3Agd2l0aG91dCBkaXNwbGF5aW5nCistICAgYW55IGRldGFpbGVkIGluZm9ybWF0aW9uLgor LQorLSAgIE9uY2UgdGhlIGtlcm5lbCBwcm92aWRlcyB0aGUgZnVsbCBzdXBwb3J0IGZvciBCeXRl IEFkZHJlc3MgU2VsZWN0CistICAgKEJBUykgaW4gdGhlIGhhcmR3YXJlIHdhdGNocG9pbnQgY29u dHJvbCByZWdpc3RlciwgdGhlc2UKKy0gICBsaW1pdGF0aW9ucyBjYW4gYmUgbGFyZ2VseSByZWxh eGVkIHdpdGggc29tZSBmdXJ0aGVyIHdvcmsuICAqLworKyAgIGJlZW4gdHJpZ2dlcmVkLiAgVG8g cHJldmVudCBzdWNoIGEgY2FzZSwKKysgICBhYXJjaDY0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIGlt cGxlbWVudGF0aW9ucyBpbiBnZGIgYW5kIGdkYnNlcnZlcgorKyAgIHRyeSB0byBtYXRjaCB0aGUg dHJhcHBlZCBhZGRyZXNzIHdpdGggYSB3YXRjaGVkIHJlZ2lvbiwgYW5kIHJldHVybgorKyAgIGFu IGFkZHJlc3Mgd2l0aGluIHRoZSBsYXR0ZXIuICovCisgCisgc3RhdGljIHZvaWQKKy1hYXJjaDY0 X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwKKy0JCQkgIENP UkVfQUREUiAqYWxpZ25lZF9hZGRyX3AsCistCQkJICBpbnQgKmFsaWduZWRfbGVuX3AsIENPUkVf QUREUiAqbmV4dF9hZGRyX3AsCistCQkJICBMT05HRVNUICpuZXh0X2xlbl9wKQorK2FhcmNoNjRf YWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIENPUkVfQUREUiAqYWxp Z25lZF9hZGRyX3AsCisrCQkJICBpbnQgKmFsaWduZWRfb2Zmc2V0X3AsIGludCAqYWxpZ25lZF9s ZW5fcCwKKysJCQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX3AsIGludCAqbmV4dF9sZW5fcCwKKysJ CQkgIENPUkVfQUREUiAqbmV4dF9hZGRyX29yaWdfcCkKKyB7CisgICBpbnQgYWxpZ25lZF9sZW47 CistICB1bnNpZ25lZCBpbnQgb2Zmc2V0OworKyAgdW5zaWduZWQgaW50IG9mZnNldCwgYWxpZ25l ZF9vZmZzZXQ7CisgICBDT1JFX0FERFIgYWxpZ25lZF9hZGRyOworICAgY29uc3QgdW5zaWduZWQg aW50IGFsaWdubWVudCA9IEFBUkNINjRfSFdQX0FMSUdOTUVOVDsKKyAgIGNvbnN0IHVuc2lnbmVk IGludCBtYXhfd3BfbGVuID0gQUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJfUkVHOworQEAgLTE5Nywx MCArMjI5LDEyIEBAIGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIExP TkdFU1QgbGVuLAorICAgaWYgKGxlbiA8PSAwKQorICAgICByZXR1cm47CisgCistICAvKiBBZGRy ZXNzIHRvIGJlIHB1dCBpbnRvIHRoZSBoYXJkd2FyZSB3YXRjaHBvaW50IHZhbHVlIHJlZ2lzdGVy CistICAgICBtdXN0IGJlIGFsaWduZWQuICAqLworKyAgLyogVGhlIGFkZHJlc3MgcHV0IGludG8g dGhlIGhhcmR3YXJlIHdhdGNocG9pbnQgdmFsdWUgcmVnaXN0ZXIgbXVzdAorKyAgICAgYmUgYWxp Z25lZC4gICovCisgICBvZmZzZXQgPSBhZGRyICYgKGFsaWdubWVudCAtIDEpOworICAgYWxpZ25l ZF9hZGRyID0gYWRkciAtIG9mZnNldDsKKysgIGFsaWduZWRfb2Zmc2V0CisrICAgID0ga2VybmVs X3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3JhbmdlID8gYWRkciAmIChhbGlnbm1lbnQgLSAxKSA6 IDA7CisgCisgICBnZGJfYXNzZXJ0IChvZmZzZXQgPj0gMCAmJiBvZmZzZXQgPCBhbGlnbm1lbnQp OworICAgZ2RiX2Fzc2VydCAoYWxpZ25lZF9hZGRyID49IDAgJiYgYWxpZ25lZF9hZGRyIDw9IGFk ZHIpOworQEAgLTIwOCw5ICsyNDIsMTAgQEAgYWFyY2g2NF9hbGlnbl93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgTE9OR0VTVCBsZW4sCisgCisgICBpZiAob2Zmc2V0ICsgbGVuID49IG1heF93 cF9sZW4pCisgICAgIHsKKy0gICAgICAvKiBOZWVkIG1vcmUgdGhhbiBvbmUgd2F0Y2hwb2ludCBy ZWdpc3RlcnM7IHRydW5jYXRlIGl0IGF0IHRoZQorKyAgICAgIC8qIE5lZWQgbW9yZSB0aGFuIG9u ZSB3YXRjaHBvaW50IHJlZ2lzdGVyOyB0cnVuY2F0ZSBhdCB0aGUKKyAJIGFsaWdubWVudCBib3Vu ZGFyeS4gICovCistICAgICAgYWxpZ25lZF9sZW4gPSBtYXhfd3BfbGVuOworKyAgICAgIGFsaWdu ZWRfbGVuCisrCT0gbWF4X3dwX2xlbiAtIChrZXJuZWxfc3VwcG9ydHNfYW55X2NvbnRpZ3VvdXNf cmFuZ2UgPyBvZmZzZXQgOiAwKTsKKyAgICAgICBsZW4gLT0gKG1heF93cF9sZW4gLSBvZmZzZXQp OworICAgICAgIGFkZHIgKz0gKG1heF93cF9sZW4gLSBvZmZzZXQpOworICAgICAgIGdkYl9hc3Nl cnQgKChhZGRyICYgKGFsaWdubWVudCAtIDEpKSA9PSAwKTsKK0BAIC0yMjMsMTkgKzI1OCwyNCBA QCBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNUIGxlbiwK KyAJYWxpZ25lZF9sZW5fYXJyYXlbQUFSQ0g2NF9IV1BfTUFYX0xFTl9QRVJfUkVHXSA9CisgCXsg MSwgMiwgNCwgNCwgOCwgOCwgOCwgOCB9OworIAorLSAgICAgIGFsaWduZWRfbGVuID0gYWxpZ25l ZF9sZW5fYXJyYXlbb2Zmc2V0ICsgbGVuIC0gMV07CisrICAgICAgYWxpZ25lZF9sZW4gPSAoa2Vy bmVsX3N1cHBvcnRzX2FueV9jb250aWd1b3VzX3JhbmdlCisrCQkgICAgID8gbGVuIDogYWxpZ25l ZF9sZW5fYXJyYXlbb2Zmc2V0ICsgbGVuIC0gMV0pOworICAgICAgIGFkZHIgKz0gbGVuOworICAg ICAgIGxlbiA9IDA7CisgICAgIH0KKyAKKyAgIGlmIChhbGlnbmVkX2FkZHJfcCkKKyAgICAgKmFs aWduZWRfYWRkcl9wID0gYWxpZ25lZF9hZGRyOworKyAgaWYgKGFsaWduZWRfb2Zmc2V0X3ApCisr ICAgICphbGlnbmVkX29mZnNldF9wID0gYWxpZ25lZF9vZmZzZXQ7CisgICBpZiAoYWxpZ25lZF9s ZW5fcCkKKyAgICAgKmFsaWduZWRfbGVuX3AgPSBhbGlnbmVkX2xlbjsKKyAgIGlmIChuZXh0X2Fk ZHJfcCkKKyAgICAgKm5leHRfYWRkcl9wID0gYWRkcjsKKyAgIGlmIChuZXh0X2xlbl9wKQorICAg ICAqbmV4dF9sZW5fcCA9IGxlbjsKKysgIGlmIChuZXh0X2FkZHJfb3JpZ19wKQorKyAgICAqbmV4 dF9hZGRyX29yaWdfcCA9IGFsaWduX2Rvd24gKCpuZXh0X2FkZHJfb3JpZ19wICsgYWxpZ25tZW50 LCBhbGlnbm1lbnQpOworIH0KKyAKKyBzdHJ1Y3QgYWFyY2g2NF9kcl91cGRhdGVfY2FsbGJhY2tf cGFyYW0KK0BAIC0zMjUsMTcgKzM2NSw3MyBAQCBhYXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hh bmdlIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAorICAgaXRl cmF0ZV9vdmVyX2x3cHMgKHBpZF9wdGlkLCBkZWJ1Z19yZWdfY2hhbmdlX2NhbGxiYWNrLCAodm9p ZCAqKSAmcGFyYW0pOworIH0KKyAKKysvKiBSZWNvbmZpZ3VyZSBTVEFURSB0byBiZSBjb21wYXRp YmxlIHdpdGggTGludXgga2VybmVscyB3aXRoIHRoZSBQUgorKyAgIGV4dGVybmFsLzIwMjA3IGJ1 Zy4gIFRoaXMgaXMgY2FsbGVkIHdoZW4KKysgICBLRVJORUxfU1VQUE9SVFNfQU5ZX0NPTlRJR1VP VVNfUkFOR0UgdHJhbnNpdGlvbnMgdG8gZmFsc2UuICBOb3RlIHdlCisrICAgZG9uJ3QgdHJ5IHRv IHN1cHBvcnQgY29tYmluaW5nIHdhdGNocG9pbnRzIHdpdGggbWF0Y2hpbmcgKGFuZCB0aHVzCisr ICAgc2hhcmVkKSBtYXNrcywgYXMgaXQncyB0b28gbGF0ZSB3aGVuIHdlIGdldCBoZXJlLiAgT24g YnVnZ3kKKysgICBrZXJuZWxzLCBHREIgd2lsbCB0cnkgdG8gZmlyc3Qgc2V0dXAgdGhlIHBlcmZl Y3QgbWF0Y2hpbmcgcmFuZ2VzLAorKyAgIHdoaWNoIHdpbGwgcnVuIG91dCBvZiByZWdpc3RlcnMg YmVmb3JlIHRoaXMgZnVuY3Rpb24gY2FuIG1lcmdlCisrICAgdGhlbS4gIEl0IGRvZXNuJ3QgbG9v ayBsaWtlIHdvcnRoIHRoZSBlZmZvcnQgdG8gaW1wcm92ZSB0aGF0LCBnaXZlbgorKyAgIGV2ZW50 dWFsbHkgYnVnZ3kga2VybmVscyB3aWxsIGJlIHBoYXNlZCBvdXQuICAqLworKworK3N0YXRpYyB2 b2lkCisrYWFyY2g2NF9kb3duZ3JhZGVfcmVncyAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0 YXRlICpzdGF0ZSkKKyt7CisrICBmb3IgKGludCBpID0gMDsgaSA8IGFhcmNoNjRfbnVtX3dwX3Jl Z3M7ICsraSkKKysgICAgaWYgKChzdGF0ZS0+ZHJfY3RybF93cFtpXSAmIDEpICE9IDApCisrICAg ICAgeworKwlnZGJfYXNzZXJ0IChzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldICE9IDApOworKwl1 aW50OF90IG1hc2tfb3JpZyA9IChzdGF0ZS0+ZHJfY3RybF93cFtpXSA+PiA1KSAmIDB4ZmY7Cisr CWdkYl9hc3NlcnQgKG1hc2tfb3JpZyAhPSAwKTsKKysJc3RhdGljIGNvbnN0IHVpbnQ4X3Qgb2xk X3ZhbGlkW10gPSB7IDB4MDEsIDB4MDMsIDB4MGYsIDB4ZmYgfTsKKysJdWludDhfdCBtYXNrID0g MDsKKysJZm9yIChjb25zdCB1aW50OF90IG9sZF9tYXNrIDogb2xkX3ZhbGlkKQorKwkgIGlmICht YXNrX29yaWcgPD0gb2xkX21hc2spCisrCSAgICB7CisrCSAgICAgIG1hc2sgPSBvbGRfbWFzazsK KysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCWdkYl9hc3NlcnQgKG1hc2sgIT0gMCk7CisrCisr CS8qIE5vIHVwZGF0ZSBuZWVkZWQgZm9yIHRoaXMgd2F0Y2hwb2ludD8gICovCisrCWlmIChtYXNr ID09IG1hc2tfb3JpZykKKysJICBjb250aW51ZTsKKysJc3RhdGUtPmRyX2N0cmxfd3BbaV0gfD0g bWFzayA8PCA1OworKwlzdGF0ZS0+ZHJfYWRkcl93cFtpXQorKwkgID0gYWxpZ25fZG93biAoc3Rh dGUtPmRyX2FkZHJfd3BbaV0sIEFBUkNINjRfSFdQX0FMSUdOTUVOVCk7CisrCisrCS8qIFRyeSB0 byBtYXRjaCBkdXBsaWNhdGUgZW50cmllcy4gICovCisrCWZvciAoaW50IGogPSAwOyBqIDwgaTsg KytqKQorKwkgIGlmICgoc3RhdGUtPmRyX2N0cmxfd3Bbal0gJiAxKSAhPSAwCisrCSAgICAgICYm IHN0YXRlLT5kcl9hZGRyX3dwW2pdID09IHN0YXRlLT5kcl9hZGRyX3dwW2ldCisrCSAgICAgICYm IHN0YXRlLT5kcl9hZGRyX29yaWdfd3Bbal0gPT0gc3RhdGUtPmRyX2FkZHJfb3JpZ193cFtpXQor KwkgICAgICAmJiBzdGF0ZS0+ZHJfY3RybF93cFtqXSA9PSBzdGF0ZS0+ZHJfY3RybF93cFtpXSkK KysJICAgIHsKKysJICAgICAgc3RhdGUtPmRyX3JlZl9jb3VudF93cFtqXSArPSBzdGF0ZS0+ZHJf cmVmX2NvdW50X3dwW2ldOworKwkgICAgICBzdGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldID0gMDsK KysJICAgICAgc3RhdGUtPmRyX2FkZHJfd3BbaV0gPSAwOworKwkgICAgICBzdGF0ZS0+ZHJfYWRk cl9vcmlnX3dwW2ldID0gMDsKKysJICAgICAgc3RhdGUtPmRyX2N0cmxfd3BbaV0gJj0gfjE7Cisr CSAgICAgIGJyZWFrOworKwkgICAgfQorKworKwlhYXJjaDY0X25vdGlmeV9kZWJ1Z19yZWdfY2hh bmdlIChzdGF0ZSwgMSAvKiBpc193YXRjaHBvaW50ICovLCBpKTsKKysgICAgICB9CisrfQorKwor IC8qIFJlY29yZCB0aGUgaW5zZXJ0aW9uIG9mIG9uZSBicmVha3BvaW50L3dhdGNocG9pbnQsIGFz IHJlcHJlc2VudGVkCisgICAgYnkgQUREUiBhbmQgQ1RSTCwgaW4gdGhlIHByb2Nlc3MnIGFyY2gt c3BlY2lmaWMgZGF0YSBhcmVhICpTVEFURS4gICovCisgCisgc3RhdGljIGludAorIGFhcmNoNjRf ZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRl ICpzdGF0ZSwKKyAJCQkJICAgZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAorLQkJCQkgICBD T1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgQ09SRV9BRERSIGFkZHIsIGludCBvZmZz ZXQsIGludCBsZW4sCisrCQkJCSAgIENPUkVfQUREUiBhZGRyX29yaWcpCisgeworICAgaW50IGks IGlkeCwgbnVtX3JlZ3MsIGlzX3dhdGNocG9pbnQ7CisgICB1bnNpZ25lZCBpbnQgY3RybCwgKmRy X2N0cmxfcCwgKmRyX3JlZl9jb3VudDsKKy0gIENPUkVfQUREUiAqZHJfYWRkcl9wOworKyAgQ09S RV9BRERSICpkcl9hZGRyX3AsICpkcl9hZGRyX29yaWdfcDsKKyAKKyAgIC8qIFNldCB1cCBzdGF0 ZSBwb2ludGVycy4gICovCisgICBpc193YXRjaHBvaW50ID0gKHR5cGUgIT0gaHdfZXhlY3V0ZSk7 CitAQCAtMzQ0LDYgKzQ0MCw3IEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAo c3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAgICAgeworICAgICAgIG51 bV9yZWdzID0gYWFyY2g2NF9udW1fd3BfcmVnczsKKyAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ ZHJfYWRkcl93cDsKKysgICAgICBkcl9hZGRyX29yaWdfcCA9IHN0YXRlLT5kcl9hZGRyX29yaWdf d3A7CisgICAgICAgZHJfY3RybF9wID0gc3RhdGUtPmRyX2N0cmxfd3A7CisgICAgICAgZHJfcmVm X2NvdW50ID0gc3RhdGUtPmRyX3JlZl9jb3VudF93cDsKKyAgICAgfQorQEAgLTM1MSwxMSArNDQ4 LDEyIEBAIGFhcmNoNjRfZHJfc3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRf ZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAgICAgeworICAgICAgIG51bV9yZWdzID0gYWFyY2g2 NF9udW1fYnBfcmVnczsKKyAgICAgICBkcl9hZGRyX3AgPSBzdGF0ZS0+ZHJfYWRkcl9icDsKKysg ICAgICBkcl9hZGRyX29yaWdfcCA9IG51bGxwdHI7CisgICAgICAgZHJfY3RybF9wID0gc3RhdGUt PmRyX2N0cmxfYnA7CisgICAgICAgZHJfcmVmX2NvdW50ID0gc3RhdGUtPmRyX3JlZl9jb3VudF9i cDsKKyAgICAgfQorIAorLSAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnICh0 eXBlLCBsZW4pOworKyAgY3RybCA9IGFhcmNoNjRfcG9pbnRfZW5jb2RlX2N0cmxfcmVnICh0eXBl LCBvZmZzZXQsIGxlbik7CisgCisgICAvKiBGaW5kIGFuIGV4aXN0aW5nIG9yIGZyZWUgcmVnaXN0 ZXIgaW4gb3VyIGNhY2hlLiAgKi8KKyAgIGlkeCA9IC0xOworQEAgLTM2Nyw3ICs0NjUsOSBAQCBh YXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3Jl Z19zdGF0ZSAqc3RhdGUsCisgCSAgaWR4ID0gaTsKKyAJICAvKiBubyBicmVhazsgY29udGludWUg aHVudGluZyBmb3IgYW4gZXhpc2luZyBvbmUuICAqLworIAl9CistICAgICAgZWxzZSBpZiAoZHJf YWRkcl9wW2ldID09IGFkZHIgJiYgZHJfY3RybF9wW2ldID09IGN0cmwpCisrICAgICAgZWxzZSBp ZiAoZHJfYWRkcl9wW2ldID09IGFkZHIKKysJICAgICAgICYmIChkcl9hZGRyX29yaWdfcCA9PSBu dWxscHRyIHx8IGRyX2FkZHJfb3JpZ19wW2ldID09IGFkZHJfb3JpZykKKysJICAgICAgICYmIGRy X2N0cmxfcFtpXSA9PSBjdHJsKQorIAl7CisgCSAgZ2RiX2Fzc2VydCAoZHJfcmVmX2NvdW50W2ld ICE9IDApOworIAkgIGlkeCA9IGk7CitAQCAtMzg0LDYgKzQ4NCw4IEBAIGFhcmNoNjRfZHJfc3Rh dGVfaW5zZXJ0X29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0 ZSwKKyAgICAgeworICAgICAgIC8qIG5ldyBlbnRyeSAqLworICAgICAgIGRyX2FkZHJfcFtpZHhd ID0gYWRkcjsKKysgICAgICBpZiAoZHJfYWRkcl9vcmlnX3AgIT0gbnVsbHB0cikKKysJZHJfYWRk cl9vcmlnX3BbaWR4XSA9IGFkZHJfb3JpZzsKKyAgICAgICBkcl9jdHJsX3BbaWR4XSA9IGN0cmw7 CisgICAgICAgZHJfcmVmX2NvdW50W2lkeF0gPSAxOworICAgICAgIC8qIE5vdGlmeSB0aGUgY2hh bmdlLiAgKi8KK0BAIC00MDQsMTEgKzUwNiwxMiBAQCBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9v bmVfcG9pbnQgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgc3RhdGlj IGludAorIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RydWN0IGFhcmNoNjRf ZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKKyAJCQkJICAgZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0 eXBlLAorLQkJCQkgICBDT1JFX0FERFIgYWRkciwgaW50IGxlbikKKysJCQkJICAgQ09SRV9BRERS IGFkZHIsIGludCBvZmZzZXQsIGludCBsZW4sCisrCQkJCSAgIENPUkVfQUREUiBhZGRyX29yaWcp CisgeworICAgaW50IGksIG51bV9yZWdzLCBpc193YXRjaHBvaW50OworICAgdW5zaWduZWQgaW50 IGN0cmwsICpkcl9jdHJsX3AsICpkcl9yZWZfY291bnQ7CistICBDT1JFX0FERFIgKmRyX2FkZHJf cDsKKysgIENPUkVfQUREUiAqZHJfYWRkcl9wLCAqZHJfYWRkcl9vcmlnX3A7CisgCisgICAvKiBT ZXQgdXAgc3RhdGUgcG9pbnRlcnMuICAqLworICAgaXNfd2F0Y2hwb2ludCA9ICh0eXBlICE9IGh3 X2V4ZWN1dGUpOworQEAgLTQxNiw2ICs1MTksNyBAQCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9v bmVfcG9pbnQgKHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgICAgIHsK KyAgICAgICBudW1fcmVncyA9IGFhcmNoNjRfbnVtX3dwX3JlZ3M7CisgICAgICAgZHJfYWRkcl9w ID0gc3RhdGUtPmRyX2FkZHJfd3A7CisrICAgICAgZHJfYWRkcl9vcmlnX3AgPSBzdGF0ZS0+ZHJf YWRkcl9vcmlnX3dwOworICAgICAgIGRyX2N0cmxfcCA9IHN0YXRlLT5kcl9jdHJsX3dwOworICAg ICAgIGRyX3JlZl9jb3VudCA9IHN0YXRlLT5kcl9yZWZfY291bnRfd3A7CisgICAgIH0KK0BAIC00 MjMsMTUgKzUyNywxOCBAQCBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQgKHN0cnVj dCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgICAgIHsKKyAgICAgICBudW1fcmVn cyA9IGFhcmNoNjRfbnVtX2JwX3JlZ3M7CisgICAgICAgZHJfYWRkcl9wID0gc3RhdGUtPmRyX2Fk ZHJfYnA7CisrICAgICAgZHJfYWRkcl9vcmlnX3AgPSBudWxscHRyOworICAgICAgIGRyX2N0cmxf cCA9IHN0YXRlLT5kcl9jdHJsX2JwOworICAgICAgIGRyX3JlZl9jb3VudCA9IHN0YXRlLT5kcl9y ZWZfY291bnRfYnA7CisgICAgIH0KKyAKKy0gIGN0cmwgPSBhYXJjaDY0X3BvaW50X2VuY29kZV9j dHJsX3JlZyAodHlwZSwgbGVuKTsKKysgIGN0cmwgPSBhYXJjaDY0X3BvaW50X2VuY29kZV9jdHJs X3JlZyAodHlwZSwgb2Zmc2V0LCBsZW4pOworIAorICAgLyogRmluZCB0aGUgZW50cnkgdGhhdCBt YXRjaGVzIHRoZSBBRERSIGFuZCBDVFJMLiAgKi8KKyAgIGZvciAoaSA9IDA7IGkgPCBudW1fcmVn czsgKytpKQorLSAgICBpZiAoZHJfYWRkcl9wW2ldID09IGFkZHIgJiYgZHJfY3RybF9wW2ldID09 IGN0cmwpCisrICAgIGlmIChkcl9hZGRyX3BbaV0gPT0gYWRkcgorKwkmJiAoZHJfYWRkcl9vcmln X3AgPT0gbnVsbHB0ciB8fCBkcl9hZGRyX29yaWdfcFtpXSA9PSBhZGRyX29yaWcpCisrCSYmIGRy X2N0cmxfcFtpXSA9PSBjdHJsKQorICAgICAgIHsKKyAJZ2RiX2Fzc2VydCAoZHJfcmVmX2NvdW50 W2ldICE9IDApOworIAlicmVhazsKK0BAIC00NDcsNiArNTU0LDggQEAgYWFyY2g2NF9kcl9zdGF0 ZV9yZW1vdmVfb25lX3BvaW50IChzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRl LAorICAgICAgIC8qIENsZWFyIHRoZSBlbmFibGUgYml0LiAgKi8KKyAgICAgICBjdHJsICY9IH4x OworICAgICAgIGRyX2FkZHJfcFtpXSA9IDA7CisrICAgICAgaWYgKGRyX2FkZHJfb3JpZ19wICE9 IG51bGxwdHIpCisrCWRyX2FkZHJfb3JpZ19wW2ldID0gMDsKKyAgICAgICBkcl9jdHJsX3BbaV0g PSBjdHJsOworICAgICAgIC8qIE5vdGlmeSB0aGUgY2hhbmdlLiAgKi8KKyAgICAgICBhYXJjaDY0 X25vdGlmeV9kZWJ1Z19yZWdfY2hhbmdlIChzdGF0ZSwgaXNfd2F0Y2hwb2ludCwgaSk7CitAQCAt NDczLDEwICs1ODIsMTAgQEAgYWFyY2g2NF9oYW5kbGVfYnJlYWtwb2ludCAoZW51bSB0YXJnZXRf aHdfYnBfdHlwZSB0eXBlLCBDT1JFX0FERFIgYWRkciwKKyAgICAgICBpZiAoIWFhcmNoNjRfcG9p bnRfaXNfYWxpZ25lZCAoMCAvKiBpc193YXRjaHBvaW50ICovICwgYWRkciwgbGVuKSkKKyAJcmV0 dXJuIC0xOworIAorLSAgICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9p bnQgKHN0YXRlLCB0eXBlLCBhZGRyLCBsZW4pOworKyAgICAgIHJldHVybiBhYXJjaDY0X2RyX3N0 YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhZGRyLCAwLCBsZW4sIC0xKTsKKyAg ICAgfQorICAgZWxzZQorLSAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9yZW1vdmVfb25lX3Bv aW50IChzdGF0ZSwgdHlwZSwgYWRkciwgbGVuKTsKKysgICAgcmV0dXJuIGFhcmNoNjRfZHJfc3Rh dGVfcmVtb3ZlX29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFkZHIsIDAsIGxlbiwgLTEpOworIH0K KyAKKyAvKiBUaGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGFhcmNoNjRfaGFuZGxlX2Jy ZWFrcG9pbnQsIGFwYXJ0CitAQCAtNDg4LDkgKzU5Nyw5IEBAIGFhcmNoNjRfaGFuZGxlX2FsaWdu ZWRfd2F0Y2hwb2ludCAoZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBlLAorIAkJCQkgICBzdHJ1 Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlKQorIHsKKyAgIGlmIChpc19pbnNlcnQp CistICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX2luc2VydF9vbmVfcG9pbnQgKHN0YXRlLCB0 eXBlLCBhZGRyLCBsZW4pOworKyAgICByZXR1cm4gYWFyY2g2NF9kcl9zdGF0ZV9pbnNlcnRfb25l X3BvaW50IChzdGF0ZSwgdHlwZSwgYWRkciwgMCwgbGVuLCBhZGRyKTsKKyAgIGVsc2UKKy0gICAg cmV0dXJuIGFhcmNoNjRfZHJfc3RhdGVfcmVtb3ZlX29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFk ZHIsIGxlbik7CisrICAgIHJldHVybiBhYXJjaDY0X2RyX3N0YXRlX3JlbW92ZV9vbmVfcG9pbnQg KHN0YXRlLCB0eXBlLCBhZGRyLCAwLCBsZW4sIGFkZHIpOworIH0KKyAKKyAvKiBJbnNlcnQvcmVt b3ZlIHVuYWxpZ25lZCB3YXRjaHBvaW50IGJ5IGNhbGxpbmcKK0BAIC01MDIsMzIgKzYxMSw0NSBA QCBhYXJjaDY0X2hhbmRsZV9hbGlnbmVkX3dhdGNocG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5 cGUgdHlwZSwKKyAKKyBzdGF0aWMgaW50CisgYWFyY2g2NF9oYW5kbGVfdW5hbGlnbmVkX3dhdGNo cG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwKKy0JCQkJICAgICBDT1JFX0FERFIg YWRkciwgTE9OR0VTVCBsZW4sIGludCBpc19pbnNlcnQsCisrCQkJCSAgICAgQ09SRV9BRERSIGFk ZHIsIGludCBsZW4sIGludCBpc19pbnNlcnQsCisgCQkJCSAgICAgc3RydWN0IGFhcmNoNjRfZGVi dWdfcmVnX3N0YXRlICpzdGF0ZSkKKyB7CisrICBDT1JFX0FERFIgYWRkcl9vcmlnID0gYWRkcjsK KysKKyAgIHdoaWxlIChsZW4gPiAwKQorICAgICB7CisgICAgICAgQ09SRV9BRERSIGFsaWduZWRf YWRkcjsKKy0gICAgICBpbnQgYWxpZ25lZF9sZW4sIHJldDsKKysgICAgICBpbnQgYWxpZ25lZF9v ZmZzZXQsIGFsaWduZWRfbGVuLCByZXQ7CisrICAgICAgQ09SRV9BRERSIGFkZHJfb3JpZ19uZXh0 ID0gYWRkcl9vcmlnOworIAorLSAgICAgIGFhcmNoNjRfYWxpZ25fd2F0Y2hwb2ludCAoYWRkciwg bGVuLCAmYWxpZ25lZF9hZGRyLCAmYWxpZ25lZF9sZW4sCistCQkJCSZhZGRyLCAmbGVuKTsKKysg ICAgICBhYXJjaDY0X2FsaWduX3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgJmFsaWduZWRfYWRkciwg JmFsaWduZWRfb2Zmc2V0LAorKwkJCQkmYWxpZ25lZF9sZW4sICZhZGRyLCAmbGVuLCAmYWRkcl9v cmlnX25leHQpOworIAorICAgICAgIGlmIChpc19pbnNlcnQpCisgCXJldCA9IGFhcmNoNjRfZHJf c3RhdGVfaW5zZXJ0X29uZV9wb2ludCAoc3RhdGUsIHR5cGUsIGFsaWduZWRfYWRkciwKKy0JCQkJ CQkgYWxpZ25lZF9sZW4pOworKwkJCQkJCSBhbGlnbmVkX29mZnNldCwKKysJCQkJCQkgYWxpZ25l ZF9sZW4sIGFkZHJfb3JpZyk7CisgICAgICAgZWxzZQorIAlyZXQgPSBhYXJjaDY0X2RyX3N0YXRl X3JlbW92ZV9vbmVfcG9pbnQgKHN0YXRlLCB0eXBlLCBhbGlnbmVkX2FkZHIsCistCQkJCQkJIGFs aWduZWRfbGVuKTsKKysJCQkJCQkgYWxpZ25lZF9vZmZzZXQsCisrCQkJCQkJIGFsaWduZWRfbGVu LCBhZGRyX29yaWcpOworIAorICAgICAgIGlmIChzaG93X2RlYnVnX3JlZ3MpCisgCWRlYnVnX3By aW50ZiAoImhhbmRsZV91bmFsaWduZWRfd2F0Y2hwb2ludDogaXNfaW5zZXJ0OiAlZFxuIgorIAkJ ICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorIAkJICAgICAgImFsaWduZWRf YWRkcjogJXMsIGFsaWduZWRfbGVuOiAlZFxuIgorIAkJICAgICAgIiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIgorLQkJICAgICAgIm5leHRfYWRkcjogJXMsICAgIG5leHRfbGVuOiAl c1xuIiwKKysJCSAgICAgICJhZGRyX29yaWc6ICVzXG4iCisrCQkgICAgICAiICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiCisrCQkgICAgICAibmV4dF9hZGRyOiAlcywgICAgbmV4dF9s ZW46ICVkXG4iCisrCQkgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorKwkJICAg ICAgImFkZHJfb3JpZ19uZXh0OiAlc1xuIiwKKyAJCSAgICAgIGlzX2luc2VydCwgY29yZV9hZGRy X3RvX3N0cmluZ19ueiAoYWxpZ25lZF9hZGRyKSwKKy0JCSAgICAgIGFsaWduZWRfbGVuLCBjb3Jl X2FkZHJfdG9fc3RyaW5nX256IChhZGRyKSwgcGxvbmdlc3QgKGxlbikpOworKwkJICAgICAgYWxp Z25lZF9sZW4sIGNvcmVfYWRkcl90b19zdHJpbmdfbnogKGFkZHJfb3JpZyksCisrCQkgICAgICBj b3JlX2FkZHJfdG9fc3RyaW5nX256IChhZGRyKSwgbGVuLAorKwkJICAgICAgY29yZV9hZGRyX3Rv X3N0cmluZ19ueiAoYWRkcl9vcmlnX25leHQpKTsKKysKKysgICAgICBhZGRyX29yaWcgPSBhZGRy X29yaWdfbmV4dDsKKyAKKyAgICAgICBpZiAocmV0ICE9IDApCisgCXJldHVybiByZXQ7CitAQCAt NTUzLDcgKzY3NSw3IEBAIGFhcmNoNjRfaGFuZGxlX3dhdGNocG9pbnQgKGVudW0gdGFyZ2V0X2h3 X2JwX3R5cGUgdHlwZSwgQ09SRV9BRERSIGFkZHIsCisgICAgcmVnaXN0ZXJzIHdpdGggZGF0YSBm cm9tICpTVEFURS4gICovCisgCisgdm9pZAorLWFhcmNoNjRfbGludXhfc2V0X2RlYnVnX3JlZ3Mg KGNvbnN0IHN0cnVjdCBhYXJjaDY0X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisrYWFyY2g2NF9s aW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVnX3N0YXRlICpzdGF0 ZSwKKyAJCQkgICAgICBpbnQgdGlkLCBpbnQgd2F0Y2hwb2ludCkKKyB7CisgICBpbnQgaSwgY291 bnQ7CitAQCAtNTgxLDcgKzcwMywxOCBAQCBhYXJjaDY0X2xpbnV4X3NldF9kZWJ1Z19yZWdzIChj b25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAorICAgaWYgKHB0cmFj ZSAoUFRSQUNFX1NFVFJFR1NFVCwgdGlkLAorIAkgICAgICB3YXRjaHBvaW50ID8gTlRfQVJNX0hX X1dBVENIIDogTlRfQVJNX0hXX0JSRUFLLAorIAkgICAgICAodm9pZCAqKSAmaW92KSkKKy0gICAg ZXJyb3IgKF8oIlVuZXhwZWN0ZWQgZXJyb3Igc2V0dGluZyBoYXJkd2FyZSBkZWJ1ZyByZWdpc3Rl cnMiKSk7CisrICAgIHsKKysgICAgICAvKiBIYW5kbGUgTGludXgga2VybmVscyB3aXRoIHRoZSBQ UiBleHRlcm5hbC8yMDIwNyBidWcuICAqLworKyAgICAgIGlmICh3YXRjaHBvaW50ICYmIGVycm5v ID09IEVJTlZBTAorKwkgICYmIGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZSkK KysJeworKwkgIGtlcm5lbF9zdXBwb3J0c19hbnlfY29udGlndW91c19yYW5nZSA9IGZhbHNlOwor KwkgIGFhcmNoNjRfZG93bmdyYWRlX3JlZ3MgKHN0YXRlKTsKKysJICBhYXJjaDY0X2xpbnV4X3Nl dF9kZWJ1Z19yZWdzIChzdGF0ZSwgdGlkLCB3YXRjaHBvaW50KTsKKysJICByZXR1cm47CisrCX0K KysgICAgICBlcnJvciAoXygiVW5leHBlY3RlZCBlcnJvciBzZXR0aW5nIGhhcmR3YXJlIGRlYnVn IHJlZ2lzdGVycyIpKTsKKysgICAgfQorIH0KKyAKKyAvKiBQcmludCB0aGUgdmFsdWVzIG9mIHRo ZSBjYWNoZWQgYnJlYWtwb2ludC93YXRjaHBvaW50IHJlZ2lzdGVycy4gICovCitAQCAtNjEyLDgg Kzc0NSw5IEBAIGFhcmNoNjRfc2hvd19kZWJ1Z19yZWdfc3RhdGUgKHN0cnVjdCBhYXJjaDY0X2Rl YnVnX3JlZ19zdGF0ZSAqc3RhdGUsCisgCisgICBkZWJ1Z19wcmludGYgKCJcdFdBVENIUE9JTlRz OlxuIik7CisgICBmb3IgKGkgPSAwOyBpIDwgYWFyY2g2NF9udW1fd3BfcmVnczsgaSsrKQorLSAg ICBkZWJ1Z19wcmludGYgKCJcdFdQJWQ6IGFkZHI9JXMsIGN0cmw9MHglMDh4LCByZWYuY291bnQ9 JWRcbiIsCisrICAgIGRlYnVnX3ByaW50ZiAoIlx0V1AlZDogYWRkcj0lcyAob3JpZz0lcyksIGN0 cmw9MHglMDh4LCByZWYuY291bnQ9JWRcbiIsCisgCQkgIGksIGNvcmVfYWRkcl90b19zdHJpbmdf bnogKHN0YXRlLT5kcl9hZGRyX3dwW2ldKSwKKysJCSAgY29yZV9hZGRyX3RvX3N0cmluZ19ueiAo c3RhdGUtPmRyX2FkZHJfb3JpZ193cFtpXSksCisgCQkgIHN0YXRlLT5kcl9jdHJsX3dwW2ldLCBz dGF0ZS0+ZHJfcmVmX2NvdW50X3dwW2ldKTsKKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2RiL25hdC9h YXJjaDY0LWxpbnV4LWh3LXBvaW50LmggYi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9pbnQu aAoraW5kZXggZTFkNGZjOGRiYy4uYjViYTY0MTVjMCAxMDA2NDQKKy0tLSBhL2dkYi9uYXQvYWFy Y2g2NC1saW51eC1ody1wb2ludC5oCisrKysgYi9nZGIvbmF0L2FhcmNoNjQtbGludXgtaHctcG9p bnQuaAorQEAgLTc3LDEzICs3NywxMyBAQAorIAorICAgIDMxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAxMyAgICAgICAgICA1ICAgICAgMyAgICAgIDEgICAgIDAKKyAgICArLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0rCist ICAgfCAgICAgICAgIFJFU0VSVkVEIChTQlopICAgICAgICAgfCAgTEVOR1RIICB8IFRZUEUgfCBQ UklWIHwgRU4gfAorKyAgIHwgICAgICAgICBSRVNFUlZFRCAoU0JaKSAgICAgICAgIHwgICBNQVNL ICAgfCBUWVBFIHwgUFJJViB8IEVOIHwKKyAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0rCisgCisgICAgVGhlIFRZUEUgZmll bGQgaXMgaWdub3JlZCBmb3IgYnJlYWtwb2ludHMuICAqLworIAorICNkZWZpbmUgRFJfQ09OVFJP TF9FTkFCTEVEKGN0cmwpCSgoKGN0cmwpICYgMHgxKSA9PSAxKQorLSNkZWZpbmUgRFJfQ09OVFJP TF9MRU5HVEgoY3RybCkJCSgoKGN0cmwpID4+IDUpICYgMHhmZikKKysjZGVmaW5lIERSX0NPTlRS T0xfTUFTSyhjdHJsKQkJKCgoY3RybCkgPj4gNSkgJiAweGZmKQorIAorIC8qIEVhY2ggYml0IG9m IGEgdmFyaWFibGUgb2YgdGhpcyB0eXBlIGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hldGhlciBhCisg ICAgaGFyZHdhcmUgYnJlYWtwb2ludCBvciB3YXRjaHBvaW50IHNldHRpbmcgaGFzIGJlZW4gY2hh bmdlZCBzaW5jZQorQEAgLTE0Nyw3ICsxNDcsMTAgQEAgc3RydWN0IGFhcmNoNjRfZGVidWdfcmVn X3N0YXRlCisgICB1bnNpZ25lZCBpbnQgZHJfcmVmX2NvdW50X2JwW0FBUkNINjRfSEJQX01BWF9O VU1dOworIAorICAgLyogaGFyZHdhcmUgd2F0Y2hwb2ludCAqLworKyAgLyogQWRkcmVzcyBhbGln bmVkIGRvd24gdG8gQUFSQ0g2NF9IV1BfQUxJR05NRU5ULiAgKi8KKyAgIENPUkVfQUREUiBkcl9h ZGRyX3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOworKyAgLyogQWRkcmVzcyBhcyBlbnRlcmVkIGJ5 IHVzZXIgd2l0aG91dCBhbnkgZm9yY2VkIGFsaWdubWVudC4gICovCisrICBDT1JFX0FERFIgZHJf YWRkcl9vcmlnX3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOworICAgdW5zaWduZWQgaW50IGRyX2N0 cmxfd3BbQUFSQ0g2NF9IV1BfTUFYX05VTV07CisgICB1bnNpZ25lZCBpbnQgZHJfcmVmX2NvdW50 X3dwW0FBUkNINjRfSFdQX01BWF9OVU1dOworIH07CitAQCAtMTY2LDYgKzE2OSw3IEBAIHN0cnVj dCBhcmNoX2x3cF9pbmZvCisgZXh0ZXJuIGludCBhYXJjaDY0X251bV9icF9yZWdzOworIGV4dGVy biBpbnQgYWFyY2g2NF9udW1fd3BfcmVnczsKKyAKKyt1bnNpZ25lZCBpbnQgYWFyY2g2NF93YXRj aHBvaW50X29mZnNldCAodW5zaWduZWQgaW50IGN0cmwpOworIHVuc2lnbmVkIGludCBhYXJjaDY0 X3dhdGNocG9pbnRfbGVuZ3RoICh1bnNpZ25lZCBpbnQgY3RybCk7CisgCisgaW50IGFhcmNoNjRf aGFuZGxlX2JyZWFrcG9pbnQgKGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSwgQ09SRV9BRERS IGFkZHIsCitAQCAtMTc1LDcgKzE3OSw3IEBAIGludCBhYXJjaDY0X2hhbmRsZV93YXRjaHBvaW50 IChlbnVtIHRhcmdldF9od19icF90eXBlIHR5cGUsIENPUkVfQUREUiBhZGRyLAorIAkJCSAgICAg ICBMT05HRVNUIGxlbiwgaW50IGlzX2luc2VydCwKKyAJCQkgICAgICAgc3RydWN0IGFhcmNoNjRf ZGVidWdfcmVnX3N0YXRlICpzdGF0ZSk7CisgCistdm9pZCBhYXJjaDY0X2xpbnV4X3NldF9kZWJ1 Z19yZWdzIChjb25zdCBzdHJ1Y3QgYWFyY2g2NF9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlLAorK3Zv aWQgYWFyY2g2NF9saW51eF9zZXRfZGVidWdfcmVncyAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVn X3N0YXRlICpzdGF0ZSwKKyAJCQkJICAgaW50IHRpZCwgaW50IHdhdGNocG9pbnQpOworIAorIHZv aWQgYWFyY2g2NF9zaG93X2RlYnVnX3JlZ19zdGF0ZSAoc3RydWN0IGFhcmNoNjRfZGVidWdfcmVn X3N0YXRlICpzdGF0ZSwKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNo cG9pbnQtdW5hbGlnbmVkLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtdW5h bGlnbmVkLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi44OTM0ZGUy MTRlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9p bnQtdW5hbGlnbmVkLmMKK0BAIC0wLDAgKzEsOTYgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDE3LTIwMTgg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisr ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysjaW5jbHVkZSA8 YXNzZXJ0Lmg+CisrCisrc3RhdGljIGludCBhZ2FpbjsKKysKKytzdGF0aWMgdm9sYXRpbGUgc3Ry dWN0CisreworKyAgdWludDY0X3QgYWxpZ25tZW50OworKyAgdW5pb24KKysgICAgeworKyAgICAg IHVpbnQ2NF90IHNpemU4WzFdOworKyAgICAgIHVpbnQzMl90IHNpemU0WzJdOworKyAgICAgIHVp bnQxNl90IHNpemUyWzRdOworKyAgICAgIHVpbnQ4X3Qgc2l6ZTFbOF07CisrICAgICAgdWludDY0 X3Qgc2l6ZTh0d2ljZVsyXTsKKysgICAgfQorKyAgdTsKKyt9IGRhdGE7CisrCisrc3RhdGljIGlu dCBzaXplID0gMDsKKytzdGF0aWMgaW50IG9mZnNldDsKKysKKytzdGF0aWMgdm9pZAorK3dyaXRl X3NpemU4dHdpY2UgKHZvaWQpCisreworKyAgc3RhdGljIGNvbnN0IHVpbnQ2NF90IGZpcnN0ID0g MTsKKysgIHN0YXRpYyBjb25zdCB1aW50NjRfdCBzZWNvbmQgPSAyOworKworKyNpZmRlZiBfX2Fh cmNoNjRfXworKyAgYXNtIHZvbGF0aWxlICgic3RwICUxLCAlMiwgWyUwXSIKKysJCTogLyogb3V0 cHV0ICovCisrCQk6ICJyIiAoZGF0YS51LnNpemU4dHdpY2UpLCAiciIgKGZpcnN0KSwgInIiIChz ZWNvbmQpIC8qIGlucHV0ICovCisrCQk6ICJtZW1vcnkiIC8qIGNsb2JiZXIgKi8pOworKyNlbHNl CisrICBkYXRhLnUuc2l6ZTh0d2ljZVswXSA9IGZpcnN0OworKyAgZGF0YS51LnNpemU4dHdpY2Vb MV0gPSBzZWNvbmQ7CisrI2VuZGlmCisrfQorKworK2ludAorK21haW4gKHZvaWQpCisreworKyAg dm9sYXRpbGUgdWludDY0X3QgbG9jYWw7CisrCisrICBhc3NlcnQgKHNpemVvZiAoZGF0YSkgPT0g OCArIDIgKiA4KTsKKysKKysgIHdyaXRlX3NpemU4dHdpY2UgKCk7CisrCisrICB3aGlsZSAoc2l6 ZSkKKysgICAgeworKyAgICAgIHN3aXRjaCAoc2l6ZSkKKysJeworKy8qIF9fczM5MHhfXyBhbHNv IGRlZmluZXMgX19zMzkwX18gKi8KKysjaWZkZWYgX19zMzkwX18KKysjIGRlZmluZSBBQ0NFU1Mo dmFyKSB2YXIgPSB+dmFyCisrI2Vsc2UKKysjIGRlZmluZSBBQ0NFU1ModmFyKSBsb2NhbCA9IHZh cgorKyNlbmRpZgorKwljYXNlIDg6CisrCSAgQUNDRVNTIChkYXRhLnUuc2l6ZThbb2Zmc2V0XSk7 CisrCSAgYnJlYWs7CisrCWNhc2UgNDoKKysJICBBQ0NFU1MgKGRhdGEudS5zaXplNFtvZmZzZXRd KTsKKysJICBicmVhazsKKysJY2FzZSAyOgorKwkgIEFDQ0VTUyAoZGF0YS51LnNpemUyW29mZnNl dF0pOworKwkgIGJyZWFrOworKwljYXNlIDE6CisrCSAgQUNDRVNTIChkYXRhLnUuc2l6ZTFbb2Zm c2V0XSk7CisrCSAgYnJlYWs7CisrI3VuZGVmIEFDQ0VTUworKwlkZWZhdWx0OgorKwkgIGFzc2Vy dCAoMCk7CisrCX0KKysgICAgICBzaXplID0gMDsKKysgICAgICBzaXplID0gc2l6ZTsgLyogc3Rh cnRfYWdhaW4gKi8KKysgICAgfQorKyAgcmV0dXJuIDA7IC8qIGZpbmFsX3JldHVybiAqLworK30K K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtdW5hbGlnbmVk LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC11bmFsaWduZWQuZXhwCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNmJkZDRiNmQwNQorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LXVuYWxpZ25l ZC5leHAKK0BAIC0wLDAgKzEsMTg0IEBACisrIyBDb3B5cmlnaHQgMjAxNy0yMDE4IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisr IworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisrIworKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuCisrCisrIyBU ZXN0IGluc2VydGluZyByZWFkIHdhdGNocG9pbnRzIG9uIHVuYWxpZ25lZCBhZGRyZXNzZXMuCisr Cisrc3RhbmRhcmRfdGVzdGZpbGUKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZp bGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQor KworK2lmICFbcnVudG9fbWFpbl0geworKyAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBt YWluIgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGlu ZV9udW1iZXIgInN0YXJ0X2FnYWluIl0gIkJyZWFrcG9pbnQgJGRlY2ltYWwgYXQgJGhleCIgInN0 YXJ0X2FnYWluIgorKworK3NldCBzaXplcyB7MSAyIDQgOH0KKythcnJheSBzZXQgYWxpZ25lZGVu ZCB7MSAxICAyIDIgIDMgNCAgNCA0ICA1IDggIDYgOCAgNyA4ICA4IDh9CisrCisrc2V0IHJ3YXRj aCAicndhdGNoIgorK3NldCByd2F0Y2hfZXhwICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQiCisr aWYge1tpc3RhcmdldCAiczM5MCotKi0qIl19IHsKKysgICAgIyBUYXJnZXQgZG9lcyBub3Qgc3Vw cG9ydCB0aGlzIHR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludC4iCisrICAgIHNldCByd2F0Y2gg IndhdGNoIgorKyAgICBzZXQgcndhdGNoX2V4cCAiSGFyZHdhcmUgd2F0Y2hwb2ludCIKKyt9Cisr CisrZm9yZWFjaCB3cHNpemUgJHNpemVzIHsKKysgICAgZm9yIHtzZXQgd3BvZmZzZXQgMH0geyR3 cG9mZnNldCA8IDggLyAkd3BzaXplfSB7aW5jciB3cG9mZnNldH0geworKwlzZXQgd3BzdGFydCBb ZXhwciAkd3BvZmZzZXQgKiAkd3BzaXplXQorKwlzZXQgd3BlbmQgW2V4cHIgKCR3cG9mZnNldCAr IDEpICogJHdwc2l6ZV0KKysJc2V0IHdwZW5kYWxpZ25lZCAkYWxpZ25lZGVuZCgkd3BlbmQpCisr CWZvcmVhY2ggcmRzaXplICRzaXplcyB7CisrCSAgICBmb3Ige3NldCByZG9mZnNldCAwfSB7JHJk b2Zmc2V0IDwgOCAvICRyZHNpemV9IHtpbmNyIHJkb2Zmc2V0fSB7CisrCQlzZXQgcmRzdGFydCBb ZXhwciAkcmRvZmZzZXQgKiAkcmRzaXplXQorKwkJc2V0IHJkZW5kIFtleHByICgkcmRvZmZzZXQg KyAxKSAqICRyZHNpemVdCisrCQlzZXQgZXhwZWN0X2hpdCBbZXhwciBtYXggKCR3cHN0YXJ0LCAk cmRzdGFydCkgPCBtaW4gKCR3cGVuZCwgJHJkZW5kKV0KKysJCXNldCB0ZXN0ICIkcndhdGNoIGRh dGEudS5zaXplJHdwc2l6ZVxbJHdwb2Zmc2V0XF0iCisrCQlzZXQgd3BudW0gIiIKKysJCWdkYl90 ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysJCSAgICAtcmUgIiRyd2F0Y2hfZXhwIChcWzAt OVxdKyk6IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJCQlzZXQgd3BudW0gJGV4cGVjdF9vdXQo MSxzdHJpbmcpCisrCQkgICAgfQorKwkJICAgIC1yZSAiRXhwcmVzc2lvbiBjYW5ub3QgYmUgaW1w bGVtZW50ZWQgd2l0aCByZWFkL2FjY2VzcyB3YXRjaHBvaW50LlxyXG4kZ2RiX3Byb21wdCAkIiB7 CisrCQkJaWYgeyR3cHNpemUgPT0gOCAmJiBbaXN0YXJnZXQgImFybSotKi0qIl19IHsKKysJCQkg ICAgdW50ZXN0ZWQgJHRlc3QKKysJCQkgICAgY29udGludWUKKysJCQl9CisrCQkJZmFpbCAkdGVz dAorKwkJICAgIH0KKysJCX0KKysJCWdkYl90ZXN0X25vX291dHB1dCAic2V0IHZhcmlhYmxlIHNp emUgPSAkcmRzaXplIiAiIgorKwkJZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgdmFyaWFibGUgb2Zm c2V0ID0gJHJkb2Zmc2V0IiAiIgorKwkJc2V0IHRlc3QgImNvbnRpbnVlIgorKwkJc2V0IGdvdF9o aXQgMAorKwkJZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgeworKwkJICAgIC1yZSAiJHJ3 YXRjaF9leHAgJHdwbnVtOi4qYWx1ZSA9IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJCQlzZXQg Z290X2hpdCAxCisrCQkJc2VuZF9nZGIgImNvbnRpbnVlXG4iCisrCQkJZXhwX2NvbnRpbnVlCisr CQkgICAgfQorKwkJICAgIC1yZSAiIHN0YXJ0X2FnYWluIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsK KysJCSAgICB9CisrCQl9CisrCQlnZGJfdGVzdF9ub19vdXRwdXQgImRlbGV0ZSAkd3BudW0iICIi CisrCQlzZXQgdGVzdCAid3Aoc2l6ZT0kd3BzaXplIG9mZnNldD0kd3BvZmZzZXQpIHJkKHNpemU9 JHJkc2l6ZSBvZmZzZXQ9JHJkb2Zmc2V0KSBleHBlY3Q9JGV4cGVjdF9oaXQiCisrCQlpZiB7JGV4 cGVjdF9oaXQgPT0gJGdvdF9oaXR9IHsKKysJCSAgICBwYXNzICR0ZXN0CisrCQl9IGVsc2Ugewor KwkJICAgICMgV2UgZG8gbm90IGtub3cgaWYgd2UgcnVuIG9uIGEgZml4ZWQgTGludXgga2VybmVs CisrCQkgICAgIyBvciBub3QuICBSZXBvcnQgWEZBSUwgb25seSBpbiB0aGUgRkFJTCBjYXNlLgor KwkJICAgIGlmIHskZXhwZWN0X2hpdCA9PSAwICYmICRyZHN0YXJ0IDwgJHdwZW5kYWxpZ25lZH0g eworKwkJCXNldHVwX3hmYWlsIGV4dGVybmFsLzIwMjA3ICJhYXJjaDY0Ki0qLWxpbnV4KiIKKysJ CSAgICB9CisrCQkgICAgaWYgeyEkZXhwZWN0X2hpdCAmJiBbZXhwciBtYXggKCR3cHN0YXJ0IC8g OCwgJHJkc3RhcnQgLyA4KSA8IG1pbiAoKCR3cGVuZCArIDcpIC8gOCwgKCRyZGVuZCArIDcpIC8g OCldfSB7CisrCQkJc2V0dXBfeGZhaWwgYnJlYWtwb2ludHMvMjMxMzEgInBvd2VycGMqLSotKiIK KysJCSAgICB9CisrCQkgICAgZmFpbCAkdGVzdAorKwkJfQorKwkgICAgfQorKwl9CisrICAgIH0K Kyt9CisrCisrZm9yZWFjaCB3cGNvdW50IHs0IDd9IHsKKysgICAgYXJyYXkgc2V0IHdwb2Zmc2V0 X3RvX3dwbnVtIHt9CisrICAgIGZvciB7c2V0IHdwb2Zmc2V0IDF9IHskd3BvZmZzZXQgPD0gJHdw Y291bnR9IHtpbmNyIHdwb2Zmc2V0fSB7CisrCXNldCB0ZXN0ICIkcndhdGNoIGRhdGEudS5zaXpl MVxbJHdwb2Zmc2V0XF0iCisrCXNldCB3cG51bSAiIgorKwlnZGJfdGVzdF9tdWx0aXBsZSAkdGVz dCAkdGVzdCB7CisrCSAgICAtcmUgIiRyd2F0Y2hfZXhwIChcWzAtOVxdKyk6IC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKKysJCXNldCB3cG9mZnNldF90b193cG51bSgkd3BvZmZzZXQpICRleHBlY3Rf b3V0KDEsc3RyaW5nKQorKwkgICAgfQorKwkgICAgLXJlICJUaGVyZSBhcmUgbm90IGVub3VnaCBh dmFpbGFibGUgaGFyZHdhcmUgcmVzb3VyY2VzIGZvciB0aGlzIHdhdGNocG9pbnQuXHJcbiRnZGJf cHJvbXB0ICQiIHsKKysJCWlmIHskd3BvZmZzZXQgPiAxfSB7CisrCQkgICAgc2V0dXBfeGZhaWwg YnJlYWtwb2ludHMvMjMxMzEgInBvd2VycGMqLSotKiIKKysJCSAgICBzZXR1cF94ZmFpbCBicmVh a3BvaW50cy8yMzEzMSAiYXJtKi0qLSoiCisrCQl9CisrCQlmYWlsICR0ZXN0CisrCQlzZXQgd3Bv ZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0KSAwCisrCSAgICB9CisrCX0KKysgICAgfQorKyAgICBn ZGJfdGVzdF9ub19vdXRwdXQgInNldCB2YXJpYWJsZSBzaXplID0gMSIgIiIKKysgICAgZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJzZXQgdmFyaWFibGUgb2Zmc2V0ID0gMSIgIiIKKysgICAgc2V0IHRlc3Qg ImNvbnRpbnVlIgorKyAgICBzZXQgZ290X2hpdCAwCisrICAgIGdkYl90ZXN0X211bHRpcGxlICR0 ZXN0ICR0ZXN0IHsKKysJLXJlICJcclxuQ291bGQgbm90IGluc2VydCBoYXJkd2FyZSB3YXRjaHBv aW50IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJfQorKwktcmUgIiRyd2F0Y2hfZXhwICR3cG9m ZnNldF90b193cG51bSgxKTouKmFsdWUgPSAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCSAgICBz ZXQgZ290X2hpdCAxCisrCSAgICBzZW5kX2dkYiAiY29udGludWVcbiIKKysJICAgIGV4cF9jb250 aW51ZQorKwl9CisrCS1yZSAiIHN0YXJ0X2FnYWluIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJ fQorKyAgICB9CisrICAgIGZvciB7c2V0IHdwb2Zmc2V0IDF9IHskd3BvZmZzZXQgPD0gJHdwY291 bnR9IHtpbmNyIHdwb2Zmc2V0fSB7CisrCWlmIHskd3BvZmZzZXRfdG9fd3BudW0oJHdwb2Zmc2V0 KX0geworKwkgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJkZWxldGUgJHdwb2Zmc2V0X3RvX3dwbnVt KCR3cG9mZnNldCkiICIiCisrCX0KKysgICAgfQorKyAgICBzZXQgdGVzdCAid3Bjb3VudCgkd3Bj b3VudCkiCisrICAgIGlmIHshJHdwb2Zmc2V0X3RvX3dwbnVtKFtleHByICR3cGNvdW50IC0gMV0p fSB7CisrCXVudGVzdGVkICR0ZXN0CisrCWNvbnRpbnVlCisrICAgIH0KKysgICAgaWYgeyR3cGNv dW50ID4gNH0geworKwlpZiB7IVtpc3RhcmdldCAiczM5MCotKi0qIl19IHsKKysJICAgIHNldHVw X2tmYWlsIHRkZXAvMjIzODkgKi0qLSoKKysJfQorKyAgICB9CisrICAgIGdkYl9hc3NlcnQgJGdv dF9oaXQgJHRlc3QKKyt9CisrCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHJldHVybiAtMQor K30KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiZmluYWxfcmV0dXJuIl0g IkJyZWFrcG9pbnQgJGRlY2ltYWwgYXQgJGhleCIgImZpbmFsX3JldHVybiIKKytzZXQgdGVzdCB7 d2F0Y2ggZGF0YS51LnNpemU4dHdpY2VbMV19Cisrc2V0IHdwbnVtICIiCisrZ2RiX3Rlc3RfbXVs dGlwbGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIkhhcmR3YXJlIHdhdGNocG9pbnQgKFxbMC05 XF0rKTogLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQgd3BudW0gJGV4cGVjdF9vdXQoMSxz dHJpbmcpCisrICAgIH0KKysgICAgLXJlICJXYXRjaHBvaW50IChcWzAtOVxdKyk6IC4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKKysJaWYge1tpc3RhcmdldCAiYXJtKi0qLSoiXX0geworKwkgICAgdW50 ZXN0ZWQgJHRlc3QKKysJICAgIHNldCB3cG51bSAwCisrCX0KKysgICAgfQorK30KKytpZiB7JHdw bnVtfSB7CisrICAgIHNldCB0ZXN0ICJjb250aW51ZSIKKysgICAgc2V0IGdvdF9oaXQgMAorKyAg ICBnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrCS1yZSAiXHJcbkNvdWxkIG5vdCBp bnNlcnQgaGFyZHdhcmUgd2F0Y2hwb2ludCAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCX0KKysJ LXJlICJIYXJkd2FyZSB3YXRjaHBvaW50ICR3cG51bTouKk5ldyB2YWx1ZSA9IC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKKysJICAgIHNldCBnb3RfaGl0IDEKKysJICAgIHNlbmRfZ2RiICJjb250aW51 ZVxuIgorKwkgICAgZXhwX2NvbnRpbnVlCisrCX0KKysJLXJlICIgZmluYWxfcmV0dXJuIC4qXHJc biRnZGJfcHJvbXB0ICQiIHsKKysJfQorKyAgICB9CisrICAgIGdkYl9hc3NlcnQgJGdvdF9oaXQg InNpemU4dHdpY2Ugd3JpdGUiCisrfQorZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIvZ2RiL3V0 aWxzLmMKK2luZGV4IDU4YzAzODBkMTcuLjI2ZWM5ZjFlZTggMTAwNjQ0CistLS0gYS9nZGIvdXRp bHMuYworKysrIGIvZ2RiL3V0aWxzLmMKK0BAIC0zMDEwLDIyICszMDEwLDYgQEAgZ2RiX2Fic3Bh dGggKGNvbnN0IGNoYXIgKnBhdGgpCisgCSAgICAgcGF0aCwgKGNoYXIgKikgTlVMTCkpOworIH0K KyAKKy1VTE9OR0VTVAorLWFsaWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbikKKy17CistICAvKiBD aGVjayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KKy0gIGdkYl9hc3NlcnQg KG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7CistICByZXR1cm4gKHYgKyBuIC0gMSkgJiAtbjsKKy19 CistCistVUxPTkdFU1QKKy1hbGlnbl9kb3duIChVTE9OR0VTVCB2LCBpbnQgbikKKy17CistICAv KiBDaGVjayB0aGF0IE4gaXMgcmVhbGx5IGEgcG93ZXIgb2YgdHdvLiAgKi8KKy0gIGdkYl9hc3Nl cnQgKG4gJiYgKG4gJiAobi0xKSkgPT0gMCk7CistICByZXR1cm4gKHYgJiAtbik7CistfQorLQor IC8qIEFsbG9jYXRpb24gZnVuY3Rpb24gZm9yIHRoZSBsaWJpYmVydHkgaGFzaCB0YWJsZSB3aGlj aCB1c2VzIGFuCisgICAgb2JzdGFjay4gIFRoZSBvYnN0YWNrIGlzIHBhc3NlZCBhcyBEQVRBLiAg Ki8KKyAKK2RpZmYgLS1naXQgYS9nZGIvdXRpbHMuaCBiL2dkYi91dGlscy5oCitpbmRleCBiMjM0 NzYyOTI5Li5kMDFkMjgzYmFhIDEwMDY0NAorLS0tIGEvZ2RiL3V0aWxzLmgKKysrKyBiL2dkYi91 dGlscy5oCitAQCAtNDk4LDM4ICs0OTgsNiBAQCBleHRlcm4gcGlkX3Qgd2FpdF90b19kaWVfd2l0 aF90aW1lb3V0IChwaWRfdCBwaWQsIGludCAqc3RhdHVzLCBpbnQgdGltZW91dCk7CisgCisgZXh0 ZXJuIGludCBteXJlYWQgKGludCwgY2hhciAqLCBpbnQpOworIAorLS8qIEVuc3VyZSB0aGF0IFYg aXMgYWxpZ25lZCB0byBhbiBOIGJ5dGUgYm91bmRhcnkgKEIncyBhc3N1bWVkIHRvIGJlIGEKKy0g ICBwb3dlciBvZiAyKS4gIFJvdW5kIHVwL2Rvd24gd2hlbiBuZWNlc3NhcnkuICBFeGFtcGxlcyBv ZiBjb3JyZWN0CistICAgdXNlIGluY2x1ZGU6CistCistICAgYWRkciA9IGFsaWduX3VwIChhZGRy LCA4KTsgLS0gVkFMVUUgbmVlZHMgOCBieXRlIGFsaWdubWVudAorLSAgIHdyaXRlX21lbW9yeSAo YWRkciwgdmFsdWUsIGxlbik7CistICAgYWRkciArPSBsZW47CistCistICAgYW5kOgorLQorLSAg IHNwID0gYWxpZ25fZG93biAoc3AgLSBsZW4sIDE2KTsgLS0gS2VlcCBTUCAxNiBieXRlIGFsaWdu ZWQKKy0gICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZSwgbGVuKTsKKy0KKy0gICBOb3RlIHRoYXQg dXNlcyBzdWNoIGFzOgorLQorLSAgIHdyaXRlX21lbW9yeSAoYWRkciwgdmFsdWUsIGxlbik7Cist ICAgYWRkciArPSBhbGlnbl91cCAobGVuLCA4KTsKKy0KKy0gICBhbmQ6CistCistICAgc3AgLT0g YWxpZ25fdXAgKGxlbiwgOCk7CistICAgd3JpdGVfbWVtb3J5IChzcCwgdmFsdWUsIGxlbik7Cist CistICAgYXJlIHR5cGljYWxseSBub3QgY29ycmVjdCBhcyB0aGV5IGRvbid0IGVuc3VyZSB0aGF0 IHRoZSBhZGRyZXNzIChTUAorLSAgIG9yIEFERFIpIGlzIGNvcnJlY3RseSBhbGlnbmVkIChyZWx5 aW5nIG9uIHByZXZpb3VzIGFsaWdubWVudCB0bworLSAgIGtlZXAgdGhpbmdzIHJpZ2h0KS4gIFRo aXMgaXMgYWxzbyB3aHkgdGhlIG1ldGhvZHMgYXJlIGNhbGxlZAorLSAgICJhbGlnbl8uLi4iIGlu c3RlYWQgb2YgInJvdW5kXy4uLiIgYXMgdGhlIGxhdHRlciByZWFkcyBiZXR0ZXIgd2l0aAorLSAg IHRoaXMgaW5jb3JyZWN0IGNvZGluZyBzdHlsZS4gICovCistCistZXh0ZXJuIFVMT05HRVNUIGFs aWduX3VwIChVTE9OR0VTVCB2LCBpbnQgbik7CistZXh0ZXJuIFVMT05HRVNUIGFsaWduX2Rvd24g KFVMT05HRVNUIHYsIGludCBuKTsKKy0KKyAvKiBSZXNvdXJjZSBsaW1pdHMgdXNlZCBieSBnZXRy bGltaXQgYW5kIHNldHJsaW1pdC4gICovCisgCisgZW51bSByZXNvdXJjZV9saW1pdF9raW5kCist LSAKKzIuMTQuMworCg==