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: Andrew Burgess To: git-commits@fedoraproject.org Subject: [rpms/gdb] f44: Fix issue caused by malloc being a GNU IFUNC Date: Thu, 03 Sep 2026 17:56:56 GMT Message-ID: <178845821663.1.6827059274277898772.rpms-gdb-902ff4e18d57@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: f44 X-Git-Rev: 902ff4e18d575c105aad0f848a882241a92c656f ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGY0NAogICAgICAgICAgICBDb21t aXQgOiA5MDJmZjRlMThkNTc1YzEwNWFhZDBmODQ4YTg4MjI0MWE5MmM2NTZmCiAgICAgICAgICAg IEF1dGhvciA6IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRoYXQuY29tPgogICAgICAgICAg ICBEYXRlICAgOiAyMDI2LTA5LTAzVDE0OjAwOjUyKzAxOjAwCiAgICAgICAgICAgIFN0YXRzICA6 ICszNjAvLTEgaW4gNCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZl ZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvOTAyZmY0ZTE4ZDU3NWMxMDVhYWQwZjg0OGE4ODIy NDFhOTJjNjU2Zj9icmFuY2g9ZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIEZpeCBp c3N1ZSBjYXVzZWQgYnkgbWFsbG9jIGJlaW5nIGEgR05VIElGVU5DCgpCYWNrcG9ydCB0d28gcGF0 Y2hlcywgZGU5MzAwMzJkODgzMjE5NSBhbmQgY2EwOTA4ZDYyMzYwNTI1MCwgdG8gZml4CnVwc3Ry ZWFtIGJ1ZyBQUiBnZGIvMzQzMzAuICBUaGlzIGJ1ZyBpcyB0cmlnZ2VyZWQgd2hlbiBtYWxsb2Mg aXMKaW1wbGVtZW50ZWQgYXMgYSBHTlUgSUZVTkMuCgpCb3RoIG9mIHRoZSBwYXRjaGVzIGhhdmUg YmVlbiBiYWNrcG9ydGVkIHRvIHRoZSBvZmZpY2lhbCB1cHN0cmVhbQpnZGItMTgtYnJhbmNoLCBz byBvbmNlIHdlIHJlYmFzZSBGZWRvcmEgdG8gR0RCIDE4IHRoaXMgY29tbWl0IGNhbiBiZQpkcm9w cGVkLgoKLS0tCmRpZmYgLS1naXQgYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZSBiL19nZGIuc3Bl Yy5QYXRjaC5pbmNsdWRlCmluZGV4IDBjZmVhMGMuLmZiNzdkODggMTAwNjQ0Ci0tLSBhL19nZGIu c3BlYy5QYXRjaC5pbmNsdWRlCisrKyBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCkBAIC05OSwz ICs5OSw5IEBAIFBhdGNoMDE3OiBnZGItYmFja3BvcnQtY29yZWZpbGUtdXNlLWFmdGVyLWZyZWUt Zml4LnBhdGNoCiAjIHRvIGZpeCBhIHJlYmFzZSByZWdyZXNzaW9uLgogUGF0Y2gwMTg6IGdkYi1i YWNrcG9ydC1zMzkweC1yZXR1cm4tY3Jhc2gucGF0Y2gKIAorIyBCYWNrcG9ydCB1cHN0cmVhbSBj b21taXRzIGRlOTMwMDMyZDg4MzIxOTUgYW5kIGNhMDkwOGQ2MjM2MDUyNTAgdG8KKyMgZml4IGFu IGlzc3VlIHdoZXJlIHRoZSBmdW5jdGlvbiBiZWluZyBsb29rZWQgdXAgaXMgYSBHTlUgSUZVTkMu CisjIEJvdGggb2YgdGhlc2UgcGF0Y2hlcyBoYXZlIGJlZW4gYWRkZWQgdG8gdGhlIGdkYi0xOC1i cmFuY2gsIHNvIHRoaXMKKyMgYmFja3BvcnQgd2lsbCBkcm9wIG91dCBvbmNlIEdEQiBpcyByZWJh c2VkIHRvIEdEQiAxOC4KK1BhdGNoMDE5OiBnZGItYmFja3BvcnQtaWZ1bmMtbG9va3VwLWZpeC5w YXRjaAorCgpkaWZmIC0tZ2l0IGEvX3BhdGNoX29yZGVyIGIvX3BhdGNoX29yZGVyCmluZGV4IDVj MGYzN2YuLmE0MjJkODkgMTAwNjQ0Ci0tLSBhL19wYXRjaF9vcmRlcgorKysgYi9fcGF0Y2hfb3Jk ZXIKQEAgLTE2LDMgKzE2LDQgQEAgZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUtc3VwcG9ydC5w YXRjaAogZ2RiLWJhY2twb3J0LWxpYmliZXJ0eS1zeW5jLnBhdGNoCiBnZGItYmFja3BvcnQtY29y ZWZpbGUtdXNlLWFmdGVyLWZyZWUtZml4LnBhdGNoCiBnZGItYmFja3BvcnQtczM5MHgtcmV0dXJu LWNyYXNoLnBhdGNoCitnZGItYmFja3BvcnQtaWZ1bmMtbG9va3VwLWZpeC5wYXRjaAoKZGlmZiAt LWdpdCBhL2dkYi1iYWNrcG9ydC1pZnVuYy1sb29rdXAtZml4LnBhdGNoIGIvZ2RiLWJhY2twb3J0 LWlmdW5jLWxvb2t1cC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNTI1NWM2NgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1iYWNrcG9ydC1pZnVuYy1sb29rdXAt Zml4LnBhdGNoCkBAIC0wLDAgKzEsMzQ4IEBACitGcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTXVoYW1tYWQgS2FtcmFuIDxtdWhhbW1hZC5rYW1yYW5A YXJtLmNvbT4KK0RhdGU6IFR1ZSwgMTEgQXVnIDIwMjYgMTM6MTI6MTggKzAwMDAKK1N1YmplY3Q6 IGdkYi1iYWNrcG9ydC1pZnVuYy1sb29rdXAtZml4LnBhdGNoCisKKzs7IEJhY2twb3J0IHVwc3Ry ZWFtIGNvbW1pdHMgZGU5MzAwMzJkODgzMjE5NSBhbmQgY2EwOTA4ZDYyMzYwNTI1MCB0bworOzsg Zml4IGFuIGlzc3VlIHdoZXJlIHRoZSBmdW5jdGlvbiBiZWluZyBsb29rZWQgdXAgaXMgYSBHTlUg SUZVTkMuCis7OyBCb3RoIG9mIHRoZXNlIHBhdGNoZXMgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBn ZGItMTgtYnJhbmNoLCBzbyB0aGlzCis7OyBiYWNrcG9ydCB3aWxsIGRyb3Agb3V0IG9uY2UgR0RC IGlzIHJlYmFzZWQgdG8gR0RCIDE4LgorCitCYWNrcG9ydCBvZiB1cHN0cmVhbSBjb21taXQ6IGRl OTMwMDMyZDg4MzIxOTU1OWQxZGJhNTc1ZjJjMGY1MzU5ZTgwZmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitn ZGI6IFByZXNlcnZlIElGVU5DIG1hcmtlciB3aGVuIGZpbmRpbmcgaW5mZXJpb3IgZnVuY3Rpb25z CisKK0dEQiBjYWxscyBmaW5kX2Z1bmN0aW9uX2luX2luZmVyaW9yICgibWFsbG9jIikgd2hlbiBl eHByZXNzaW9uCitldmFsdWF0aW9uIG5lZWRzIHRvIGFsbG9jYXRlIG1lbW9yeSBpbiB0aGUgaW5m ZXJpb3IsIGUuZy4gZm9yIHN0cmluZworbGl0ZXJhbCBhcmd1bWVudHMuCisKK1RoZSBtaW5pbWFs LXN5bWJvbCBmYWxsYmFjayBjcmVhdGVkIGEgc3ludGhldGljIG9yZGluYXJ5IGZ1bmN0aW9uCitw b2ludGVyIGZyb20gbXN5bWJvbC52YWx1ZV9hZGRyZXNzICgpLiAgSWYgdGhlIHN5bWJvbCB3YXMg YSBHTlUgSUZVTkMsCit0aGlzIGRpc2NhcmRlZCB0aGUgSUZVTkMgbWFya2VyLCBzbyBjYWxsX2Z1 bmN0aW9uX2J5X2hhbmQgZGlkIG5vdAorcmVzb2x2ZSB0aGUgc3ltYm9sIGJlZm9yZSBjYWxsaW5n IGl0LgorCitDaGVjayB0aGUgbWluaW1hbCBzeW1ib2wga2luZCBkaXJlY3RseSBhbmQgcHJvcGFn YXRlIHRoZSBHTlUgSUZVTkMKK21hcmtlciB0byB0aGUgc3ludGhldGljIGZ1bmN0aW9uIHR5cGUg Zm9yIG1zdF90ZXh0X2dudV9pZnVuYyBhbmQKK21zdF9kYXRhX2dudV9pZnVuYyBzeW1ib2xzLiAg VGhpcyBrZWVwcyB0aGUgZXhpc3RpbmcgZmFsbGJhY2sgYWRkcmVzcworYW5kIHJldHVybiB0eXBl IHdoaWxlIGFsbG93aW5nIGluZmVyaW9yIGNhbGxzIHRocm91Z2ggSUZVTkMgc3ltYm9scyB0bwor YmUgcmVzb2x2ZWQgY29ycmVjdGx5LgorCitFeHRlbmQgZ2RiLmJhc2UvZ251LWlmdW5jLmV4cCB3 aXRoIGFuIGludGVybmFsIGluZmVyaW9yLWNhbGwgdGVzdCB0aGF0Cit1c2VzIGFuIElGVU5DIG1h bGxvYy4gIFRoZSB0ZXN0IHJ1bnMgdGhyb3VnaCB0aGUgZXhpc3RpbmcgSUZVTkMgbWF0cml4Citm b3IgcmVzb2x2ZXIgYXR0ciwgcmVzb2x2ZXIgZGVidWcgaW5mbywgYW5kIHJlc29sdmVkLXRhcmdl dCBkZWJ1ZworaW5mby4KKworQnVnOiBodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3No b3dfYnVnLmNnaT9pZD0zNDMzMAorUmV2aWV3ZWQtQnk6IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJA cmVkaGF0LmNvbT4KK0FwcHJvdmVkLUJ5OiBBbmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0 LmNvbT4KKworQmFja3BvcnQgb2YgdXBzdHJlYW0gY29tbWl0OiBjYTA5MDhkNjIzNjA1MjUwZTZk ODRhZmI5MGQ3NDJjMzI4ZTZiYjkwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworZ2RiOiBLZWVwIG9yaWdpbmFs IElGVU5DIHJldHVybiB0eXBlIHdoZW4gdGFyZ2V0IHR5cGUgaXMgdW5rbm93bgorCitXaGVuIGZp bmRfZnVuY3Rpb25fYWRkciByZXNvbHZlcyBhIEdOVSBJRlVOQywgaXQgdHJpZXMgdG8gcmVwbGFj ZSB0aGUKK29yaWdpbmFsIGZ1bmN0aW9uIHR5cGUgd2l0aCB0aGUgcmVzb2x2ZWQgdGFyZ2V0IHR5 cGUsIG9yIHdpdGggdGhlIHR5cGUKK3JldHVybmVkIGJ5IHRoZSByZXNvbHZlci4gIElmIG5laXRo ZXIgc291cmNlIHByb3ZpZGVzIGEgdXNlZnVsIHJldHVybgordHlwZSwga2VlcCB0aGUgcmV0dXJu IHR5cGUgZnJvbSB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gdmFsdWUuCisKK1RoaXMgbWF0dGVycyBm b3IgaW50ZXJuYWwgaW5mZXJpb3IgY2FsbHMgc3VjaCBhcworZmluZF9mdW5jdGlvbl9pbl9pbmZl cmlvciAoIm1hbGxvYyIpLCB3aGVyZSBHREIgY3JlYXRlcyBhIHN5bnRoZXRpYworZnVuY3Rpb24g dHlwZSB3aXRoIGEga25vd24gZmFsbGJhY2sgcmV0dXJuIHR5cGUuCisKK1JlbW92ZSB0aGUgZ3Vh cmQgZnJvbSB0aGUgSUZVTkMgaW5mZXJpb3ItY2FsbCB0ZXN0IHNvIHRoZSBuby1kZWJ1ZworcmVz b2x2ZXIvbm8tZGVidWcgdGFyZ2V0IHZhcmlhbnRzIGFyZSB0ZXN0ZWQgdG9vLgorCitCdWc6IGh0 dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTM0MzMwCitSZXZp ZXdlZC1CeTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgorQXBwcm92ZWQtQnk6 IEFuZHJldyBCdXJnZXNzIDxhYnVyZ2Vzc0ByZWRoYXQuY29tPgorCitkaWZmIC0tZ2l0IGEvZ2Ri L2luZmNhbGwuYyBiL2dkYi9pbmZjYWxsLmMKKy0tLSBhL2dkYi9pbmZjYWxsLmMKKysrKyBiL2dk Yi9pbmZjYWxsLmMKK0BAIC0zODMsNiArMzgzLDkgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1 Y3QgdmFsdWUgKmZ1bmN0aW9uLAorIAkgICAgIEZVTkNUSU9OX1RZUEUgaGF2ZSBiZWVuIGFza2Vk IGZvci4gICovCisgCSAgaWYgKHJldHZhbF90eXBlICE9IE5VTEwgfHwgZnVuY3Rpb25fdHlwZSAh PSBOVUxMKQorIAkgICAgeworKwkgICAgICAvKiBEZWZhdWx0IHRvIG9yaWdpbmFsIGZ1bmN0aW9u IHR5cGUncyByZXR1cm4gdHlwZS4gIFRhcmdldCB0eXBlCisrCQkgcmVwbGFjZXMgdGhpcyBvbmx5 IGlmIGl0IHByb3ZpZGVzIGEgdXNhYmxlIHJldHVybiB0eXBlLiAgKi8KKysJICAgICAgdmFsdWVf dHlwZSA9IGZ0eXBlLT50YXJnZXRfdHlwZSAoKTsKKyAJICAgICAgdHlwZSAqdGFyZ2V0X2Z0eXBl ID0gZmluZF9mdW5jdGlvbl90eXBlIChmdW5hZGRyKTsKKyAJICAgICAgLyogSWYgd2UgZG9uJ3Qg aGF2ZSBkZWJ1ZyBpbmZvIGZvciB0aGUgdGFyZ2V0IGZ1bmN0aW9uLAorIAkJIHNlZSBpZiB3ZSBj YW4gaW5zdGVhZCBleHRyYWN0IHRoZSB0YXJnZXQgZnVuY3Rpb24ncworQEAgLTM5MSw4ICszOTQs MTMgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLAorIAkJdGFy Z2V0X2Z0eXBlID0gZmluZF9nbnVfaWZ1bmNfdGFyZ2V0X3R5cGUgKHJlc29sdmVyX2FkZHIpOwor IAkgICAgICBpZiAodGFyZ2V0X2Z0eXBlICE9IE5VTEwpCisgCQl7CistCQkgIHZhbHVlX3R5cGUg PSBjaGVja190eXBlZGVmICh0YXJnZXRfZnR5cGUpLT50YXJnZXRfdHlwZSAoKTsKKy0JCSAgZnR5 cGUgPSB0YXJnZXRfZnR5cGU7CisrCQkgIHR5cGUgKnRhcmdldF92YWx1ZV90eXBlCisrCQkgICAg PSBjaGVja190eXBlZGVmICh0YXJnZXRfZnR5cGUpLT50YXJnZXRfdHlwZSAoKTsKKysJCSAgaWYg KHRhcmdldF92YWx1ZV90eXBlICE9IG51bGxwdHIpCisrCQkgICAgeworKwkJICAgICAgdmFsdWVf dHlwZSA9IHRhcmdldF92YWx1ZV90eXBlOworKwkJICAgICAgZnR5cGUgPSB0YXJnZXRfZnR5cGU7 CisrCQkgICAgfQorIAkJfQorIAkgICAgfQorIAl9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtaW5mZXJpb3ItY2FsbC1maW5hbC5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtaW5mZXJpb3ItY2FsbC1maW5hbC5jCituZXcgZmlsZSBtb2Rl IDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUt aWZ1bmMtaW5mZXJpb3ItY2FsbC1maW5hbC5jCitAQCAtMCwwICsxLDI3IEBACisrLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmln aHQgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgPHN0ZGRlZi5oPgorKwor K2V4dGVybiBjaGFyIGFyZW5hWzMyXTsKKysKKyt2b2lkICoKKytkdW1teV9tYWxsb2MgKHNpemVf dCBzaXplKQorK3sKKysgICh2b2lkKSBzaXplOworKyAgcmV0dXJuIGFyZW5hOworK30KK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1pbmZlcmlvci1jYWxsLXJl c29sdmVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1pbmZlcmlvci1jYWxs LXJlc29sdmVyLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1pbmZlcmlvci1jYWxsLXJlc29sdmVyLmMK K0BAIC0wLDAgKzEsNDMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K KysKKysjaW5jbHVkZSA8c3RkZGVmLmg+CisrCisrZXh0ZXJuIHZvaWQgKmR1bW15X21hbGxvYyAo c2l6ZV90IHNpemUpOworKworK3R5cGVkZWYgdm9pZCAqKCptYWxsb2NfdCkgKHNpemVfdCBzaXpl KTsKKysKKysjaWZuZGVmIElGVU5DX1JFU09MVkVSX0FUVFIKKythc20gKCIudHlwZSBtYWxsb2Ms ICVnbnVfaW5kaXJlY3RfZnVuY3Rpb24iKTsKKyttYWxsb2NfdAorK21hbGxvYyAodW5zaWduZWQg bG9uZyBod2NhcCkKKysjZWxzZQorK3N0YXRpYyBtYWxsb2NfdAorK3Jlc29sdmVfbWFsbG9jICh2 b2lkKQorKyNlbmRpZgorK3sKKysjaWZuZGVmIElGVU5DX1JFU09MVkVSX0FUVFIKKysgICh2b2lk KSBod2NhcDsKKysjZW5kaWYKKysgIHJldHVybiBkdW1teV9tYWxsb2M7CisrfQorKworKyNpZmRl ZiBJRlVOQ19SRVNPTFZFUl9BVFRSCisrZXh0ZXJuIHZvaWQgKm1hbGxvYyAoc2l6ZV90IHNpemUp OworKworK19fdHlwZW9mIChtYWxsb2MpIG1hbGxvYyBfX2F0dHJpYnV0ZV9fICgoaWZ1bmMgKCJy ZXNvbHZlX21hbGxvYyIpKSk7CisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nbnUtaWZ1bmMtaW5mZXJpb3ItY2FsbC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nbnUtaWZ1bmMtaW5mZXJpb3ItY2FsbC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtaW5mZXJpb3It Y2FsbC5jCitAQCAtMCwwICsxLDM3IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQgMjAyNiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisr ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKwor KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCisrCisrY2hhciBhcmVuYVszMl07CisrY29uc3QgY2hhciAqc3RyOworKworK2ludAor K3N0cl9pbl9hcmVuYSAodm9pZCkKKyt7CisrICByZXR1cm4gc3RyID09IGFyZW5hOworK30KKysK Kyt2b2lkCisrZ2V0X3N0cmluZyAoY29uc3QgY2hhciAqcykKKyt7CisrICBzdHIgPSBzOworK30K KysKKytpbnQKKyttYWluICh2b2lkKQorK3sKKysgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dudS1pZnVuYy5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlm dW5jLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCitAQCAt MjUsNiArMjUsMTMgQEAgc2V0IGxpYnNyYyAke2xpYmZpbGV9LmMKKyBzZXQgZmluYWxfZmlsZSAi JHt0ZXN0ZmlsZX0tZmluYWwiCisgc2V0IGZpbmFsX3NyYyAke2ZpbmFsX2ZpbGV9LmMKKyAKKytz ZXQgaW5mY2FsbF9maWxlICIke3Rlc3RmaWxlfS1pbmZlcmlvci1jYWxsIgorK3NldCBpbmZjYWxs X3NyYyAke2luZmNhbGxfZmlsZX0uYworK3NldCBpbmZjYWxsX3Jlc29sdmVyX2ZpbGUgIiR7dGVz dGZpbGV9LWluZmVyaW9yLWNhbGwtcmVzb2x2ZXIiCisrc2V0IGluZmNhbGxfcmVzb2x2ZXJfc3Jj ICR7aW5mY2FsbF9yZXNvbHZlcl9maWxlfS5jCisrc2V0IGluZmNhbGxfZmluYWxfZmlsZSAiJHt0 ZXN0ZmlsZX0taW5mZXJpb3ItY2FsbC1maW5hbCIKKytzZXQgaW5mY2FsbF9maW5hbF9zcmMgJHtp bmZjYWxsX2ZpbmFsX2ZpbGV9LmMKKysKKyAjIFJldHVybiB0aGUgYmluYXJ5IHN1ZmZpeCBhcHBl bmRlZCB0byBwcm9ncmFtIGFuZCBsaWJyYXJ5IG5hbWVzIHRvCisgIyBtYWtlIGVhY2ggdGVzdGNh c2UgdmFyaWFudCB1bmlxdWUuCisgcHJvYyBtYWtlX2JpbnN1ZmZpeCB7cmVzb2x2ZXJfYXR0ciBy ZXNvbHZlcl9kZWJ1ZyBmaW5hbF9kZWJ1Z30geworQEAgLTM1OCw2ICszNjUsOTYgQEAgcHJvYyBt aXNjX3Rlc3RzIHtyZXNvbHZlcl9hdHRyIHJlc29sdmVyX2RlYnVnIGZpbmFsX2RlYnVnfSB7Cisg ICAgIH0KKyB9CisgCisrIyBUZXN0IHRoYXQgR0RCIHJlc29sdmVzIGEgR05VIElGVU5DIG1pbmlt YWwgc3ltYm9sIHdoZW4gaXQgdXNlcworKyMgZmluZF9mdW5jdGlvbl9pbl9pbmZlcmlvciB0byBt YWtlIGFuIGludGVybmFsIGluZmVyaW9yIGNhbGwuICBTdHJpbmcKKysjIGxpdGVyYWxzIGFyZSBj b3BpZWQgaW50byB0aGUgaW5mZXJpb3Igd2l0aCBhIGNhbGwgdG8gbWFsbG9jLCBzbyBhbgorKyMg SUZVTkMgbWFsbG9jIGV4ZXJjaXNlcyB0aGlzIHBhdGguCisrCisrcHJvY193aXRoX3ByZWZpeCB0 ZXN0X2luZmVyaW9yX2NhbGwge3Jlc29sdmVyX2F0dHIgcmVzb2x2ZXJfZGVidWcgZmluYWxfZGVi dWd9IHsKKysgICAgZ2xvYmFsIHNyY2RpciBzdWJkaXIKKysgICAgZ2xvYmFsIGluZmNhbGxfZmls ZSBpbmZjYWxsX3NyYworKyAgICBnbG9iYWwgaW5mY2FsbF9yZXNvbHZlcl9maWxlIGluZmNhbGxf cmVzb2x2ZXJfc3JjCisrICAgIGdsb2JhbCBpbmZjYWxsX2ZpbmFsX2ZpbGUgaW5mY2FsbF9maW5h bF9zcmMKKysKKysgICAgc2V0IHN1ZmZpeCBbbWFrZV9iaW5zdWZmaXggJHJlc29sdmVyX2F0dHIg JHJlc29sdmVyX2RlYnVnICRmaW5hbF9kZWJ1Z10KKysgICAgc2V0IGV4ZWN1dGFibGUgJHtpbmZj YWxsX2ZpbGV9LSRzdWZmaXgKKysgICAgc2V0IGJpbmZpbGUgW3N0YW5kYXJkX291dHB1dF9maWxl ICRleGVjdXRhYmxlXQorKyAgICBzZXQgaW5mY2FsbF9saWJfc28gW3N0YW5kYXJkX291dHB1dF9m aWxlICR7aW5mY2FsbF9maWxlfS0kc3VmZml4LnNvXQorKyAgICBzZXQgcmVzb2x2ZXJfb2JqIFtz dGFuZGFyZF9vdXRwdXRfZmlsZSAke2luZmNhbGxfcmVzb2x2ZXJfZmlsZX0tJHN1ZmZpeC5vXQor KyAgICBzZXQgZmluYWxfb2JqIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2luZmNhbGxfZmluYWxf ZmlsZX0tJHN1ZmZpeC5vXQorKworKyAgICBzZXQgcmVzb2x2ZXJfb3B0cyB7YWRkaXRpb25hbF9m bGFncz0tZm5vLWJ1aWx0aW4tbWFsbG9jIGFkZGl0aW9uYWxfZmxhZ3M9LWZwaWN9CisrICAgIHNl dCBmaW5hbF9vcHRzIHthZGRpdGlvbmFsX2ZsYWdzPS1mcGljfQorKyAgICBzZXQgc2hsaWJfb3B0 cyB7bGRmbGFncz0tV2wsLXosbGF6eX0KKysgICAgc2V0IGV4ZWNfb3B0cyBbbGlzdCBkZWJ1ZyBz aGxpYj0kaW5mY2FsbF9saWJfc29dCisrICAgIGxhcHBlbmQgZXhlY19vcHRzICJsZGZsYWdzPS1X bCwteixsYXp5IgorKworKyAgICBpZiB7JHJlc29sdmVyX2F0dHJ9IHsKKysJbGFwcGVuZCByZXNv bHZlcl9vcHRzICJhZGRpdGlvbmFsX2ZsYWdzPS1ESUZVTkNfUkVTT0xWRVJfQVRUUiIKKysgICAg fQorKworKyAgICBpZiB7JHJlc29sdmVyX2RlYnVnfSB7CisrCWxhcHBlbmQgcmVzb2x2ZXJfb3B0 cyAiZGVidWciCisrICAgIH0KKysKKysgICAgaWYgeyRmaW5hbF9kZWJ1Z30geworKwlsYXBwZW5k IGZpbmFsX29wdHMgImRlYnVnIgorKyAgICB9CisrCisrICAgIGlmIHsgW2dkYl9jb21waWxlICR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtpbmZjYWxsX3Jlc29sdmVyX3NyY30gXAorKwkgICAgICAkcmVz b2x2ZXJfb2JqIG9iamVjdCAkcmVzb2x2ZXJfb3B0c10gIT0gIiIKKysJIHx8IFtnZGJfY29tcGls ZSAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7aW5mY2FsbF9maW5hbF9zcmN9IFwKKysJCSAkZmluYWxf b2JqIG9iamVjdCAkZmluYWxfb3B0c10gIT0gIiIKKysJIHx8IFtnZGJfY29tcGlsZV9zaGxpYiBb bGlzdCAkcmVzb2x2ZXJfb2JqICRmaW5hbF9vYmpdIFwKKysJCSAkaW5mY2FsbF9saWJfc28gJHNo bGliX29wdHNdICE9ICIiCisrCSB8fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e2luZmNhbGxfc3JjfSBcCisrCQkgJGJpbmZpbGUgZXhlY3V0YWJsZSAkZXhlY19vcHRzXSAhPSAi IiB9IHsKKysJdW50ZXN0ZWQgImZhaWxlZCB0byBjb21waWxlIGluZmVyaW9yIGNhbGwgdGVzdGNh c2UiCisrCXJldHVybgorKyAgICB9CisrCisrICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUK KysgICAgZ2RiX2xvYWRfc2hsaWIgJGluZmNhbGxfbGliX3NvCisrICAgIGlmIHshW3J1bnRvX21h aW5dfSB7CisrCXJldHVybgorKyAgICB9CisrCisrICAgIHNldCBtYWxsb2NfYWRkciB7fQorKyAg ICBnZGJfdGVzdF9tdWx0aXBsZSAicGlwZSBtYWludCBwcmludCBtc3ltYm9scyB8IGdyZXAgXCIg bWFsbG9jIFwiIiBcCisrCSJsb29rIGZvciBtYWxsb2MgbXN5bXMiIHsKKysJLXJlICIoJDo6aGV4 KSBtYWxsb2Mgc2VjdGlvbiBcW15cclxuXF0rXHJcbiIgeworKwkgICAgbGFwcGVuZCBtYWxsb2Nf YWRkciAkZXhwZWN0X291dCgxLHN0cmluZykKKysJICAgIGV4cF9jb250aW51ZQorKwl9CisrCisr CS1yZSAiJDo6Z2RiX3Byb21wdCAkIiB7CisrCSAgICBnZGJfYXNzZXJ0IHtbbGxlbmd0aCAkbWFs bG9jX2FkZHJdID4gMH0gXAorKwkgICAgICAgImZvdW5kIGF0IGxlYXN0IG9uZSBtYWxsb2Mgc3lt Ym9sIgorKwl9CisrICAgIH0KKysKKysgICAgc2V0IGZvdW5kX2NvcnJlY3RfbWFsbG9jIGZhbHNl CisrICAgIHNldCBmaXJzdF9hZGRyIFtsaW5kZXggJG1hbGxvY19hZGRyIDBdCisrICAgIHNldCBp bmZjYWxsX2xpYl90YWlsIFtmaWxlIHRhaWwgJGluZmNhbGxfbGliX3NvXQorKyAgICBnZGJfdGVz dF9tdWx0aXBsZSAiaW5mbyBzeW1ib2wgJGZpcnN0X2FkZHIiICJjaGVjayBmaXJzdCBtYWxsb2Mg c3ltYm9sIiB7CisrCS1yZSAtd3JhcCAiIGluIHNlY3Rpb24gXFteXHJcblxdKyBvZiBcW15cclxu XF0rLyRpbmZjYWxsX2xpYl90YWlsIiB7CisrCSAgICBzZXQgZm91bmRfY29ycmVjdF9tYWxsb2Mg dHJ1ZQorKwl9CisrCisrCS1yZSAtd3JhcCAiIGluIHNlY3Rpb24gXFteXHJcblxdKyIgeworKwkg ICAgIyBOb3RoaW5nIHRvIGRvLgorKwl9CisrICAgIH0KKysgICAgaWYgeyAhJGZvdW5kX2NvcnJl Y3RfbWFsbG9jIH0geworKyAgICAgICB1bnN1cHBvcnRlZCAiZm91bmQgc29tZSBvdGhlciBtYWxs b2Mgc3ltYm9sIgorKyAgICAgICByZXR1cm4KKysgICAgfQorKworKyAgICBnZGJfdGVzdCAicHJp bnQgKGdldF9zdHJpbmcgKFwiaGVsbG8taWZ1bmNcIiksIHN0cl9pbl9hcmVuYSAoKSkiIFwKKysJ IiA9IDEiIFwKKysJImludGVybmFsIGNhbGwgcmVzb2x2ZXMgSUZVTkMgbWFsbG9jIgorK30KKysK KyAjIFRlc3QgYWxsIHRoZSBjb21iaW5hdGlvbnMgb2Y6CisgIworICMgLSBBbiBpZnVuYyByZXNv bHZlciB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIGlmdW5jIHN5bWJvbCB2cyBhbgorQEAgLTM3 Niw2ICs0NzMsNyBAQCBmb3JlYWNoX3dpdGhfcHJlZml4IHJlc29sdmVyX2F0dHIgezAgMX0gewor IAkgICAgaWYgeyBbYnVpbGQgJHJlc29sdmVyX2F0dHIgJHJlc29sdmVyX2RlYnVnICRmaW5hbF9k ZWJ1Z10gIT0gMCB9IHsKKyAJCW1pc2NfdGVzdHMgJHJlc29sdmVyX2F0dHIgJHJlc29sdmVyX2Rl YnVnICRmaW5hbF9kZWJ1ZworIAkJc2V0LWJyZWFrICRyZXNvbHZlcl9hdHRyICRyZXNvbHZlcl9k ZWJ1ZyAkZmluYWxfZGVidWcKKysJCXRlc3RfaW5mZXJpb3JfY2FsbCAkcmVzb2x2ZXJfYXR0ciAk cmVzb2x2ZXJfZGVidWcgJGZpbmFsX2RlYnVnCisgCSAgICB9CisgCX0KKyAgICAgfQorZGlmZiAt LWdpdCBhL2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYworLS0tIGEvZ2RiL3ZhbG9wcy5jCisr KysgYi9nZGIvdmFsb3BzLmMKK0BAIC0xMzksNiArMTM5LDExIEBAIGZpbmRfZnVuY3Rpb25faW5f aW5mZXJpb3IgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmpmaWxlICoqb2JqZl9wKQorIAkg IHR5cGUgPSBsb29rdXBfZnVuY3Rpb25fdHlwZSAodHlwZSk7CisgCSAgdHlwZSA9IGxvb2t1cF9w b2ludGVyX3R5cGUgKHR5cGUpOworIAkgIG1hZGRyID0gbXN5bWJvbC52YWx1ZV9hZGRyZXNzICgp OworKwkgIG1pbmltYWxfc3ltYm9sX3R5cGUgbWluc3ltX3R5cGUgPSBtc3ltYm9sLm1pbnN5bS0+ dHlwZSAoKTsKKysKKysJICBpZiAobWluc3ltX3R5cGUgPT0gbXN0X3RleHRfZ251X2lmdW5jCisr CSAgICAgIHx8IG1pbnN5bV90eXBlID09IG1zdF9kYXRhX2dudV9pZnVuYykKKysJICAgIHR5cGUt PnRhcmdldF90eXBlICgpLT5zZXRfaXNfZ251X2lmdW5jICh0cnVlKTsKKyAKKyAJICBpZiAob2Jq Zl9wKQorIAkgICAgKm9iamZfcCA9IG9iamZpbGU7CgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9n ZGIuc3BlYwppbmRleCAwZDg0Y2I5Li5hMWVlMWY1IDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysg Yi9nZGIuc3BlYwpAQCAtNDUsNyArNDUsNyBAQCBWZXJzaW9uOiAxNy4yCiAKICMgVGhlIHJlbGVh c2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0 IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBy cG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMyV7 P2Rpc3R9CitSZWxlYXNlOiA0JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMLTMuMC1vci1sYXRlciBB TkQgQlNELTMtQ2xhdXNlIEFORCBGU0ZBUCBBTkQgTEdQTC0yLjEtb3ItbGF0ZXIgQU5EIEdQTC0y LjAtb3ItbGF0ZXIgQU5EIExHUEwtMi4wLW9yLWxhdGVyIEFORCBMaWNlbnNlUmVmLUZlZG9yYS1Q dWJsaWMtRG9tYWluIEFORCBHRkRMLTEuMy1vci1sYXRlciBBTkQgTEdQTC0yLjAtb3ItbGF0ZXIg V0lUSCBHQ0MtZXhjZXB0aW9uLTIuMCBBTkQgR1BMLTMuMC1vci1sYXRlciBXSVRIIEdDQy1leGNl cHRpb24tMy4xIEFORCBHUEwtMi4wLW9yLWxhdGVyIFdJVEggR05VLWNvbXBpbGVyLWV4Y2VwdGlv biBBTkQgTUlUCiAjIERvIG5vdCBwcm92aWRlIFVSTCBmb3Igc25hcHNob3RzIGFzIHRoZSBmaWxl IGxhc3RzIHRoZXJlIG9ubHkgZm9yIDIgZGF5cy4KQEAgLTkyNSw2ICs5MjUsMTAgQEAgZmkKICMg ZW5kaWYgc2NsCiAKICVjaGFuZ2Vsb2cKKyogVGh1IFNlcCAwMyAyMDI2IEFuZHJldyBCdXJnZXNz IDxhYnVyZ2Vzc0ByZWRoYXQuY29tPgorLSBCYWNrcG9ydCB1cHN0cmVhbSBjb21taXRzIGRlOTMw MDMyZDg4MzIxOTUgYW5kIGNhMDkwOGQ2MjM2MDUyNTAsIHRvCisgIGZpeCB1cHN0cmVhbSBidWcg UFIgZ2RiLzM0MzMwLgorCiAqIFdlZCBKdWwgMjIgMjAyNiBHdWluZXZlcmUgTGFyc2VuIDxndWlu ZXZlcmVAcmVkaGF0LmNvbT4gLSAxNy4yLTMKIC0gQmFja3BvcnQgdXBzdHJlYW0gY29tbWl0IGYz Y2UwY2UzMWZiM2YwNTYgdG8gZml4IGEgcmVncmVzc2lvbiBvbgogICBzMzkweC4K