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: Benjamin A. Beasley To: git-commits@fedoraproject.org Subject: [rpms/usd] f45: Backport upstream patch for Python 3.15 Date: Sat, 19 Sep 2026 22:03:15 GMT Message-ID: <178985539527.1.2839827758751584150.rpms-usd-3dd9abd675ec@fedoraproject.org> List-ID: X-Git-Repo: rpms/usd X-Git-Branch: f45 X-Git-Rev: 3dd9abd675ec3cc0f8e15fb6f66f93868aa26568 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvdXNkCkJyYW5jaCA6 IGY0NQpDb21taXQgOiAzZGQ5YWJkNjc1ZWMzY2MwZjhlMTVmYjZmNjZmOTM4NjhhYTI2NTY4CkF1 dGhvciA6IEJlbmphbWluIEEuIEJlYXNsZXkgPGNvZGVAbXVzaWNpbm15YnJhaW4ubmV0PgpEYXRl ICAgOiAyMDI2LTA5LTE5VDA4OjAxOjIzKzAxOjAwClN0YXRzICA6ICs0MDIvLTExNyBpbiAzIGZp bGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy91c2QvYy8z ZGQ5YWJkNjc1ZWMzY2MwZjhlMTVmYjZmNjZmOTM4NjhhYTI2NTY4P2JyYW5jaD1mNDUKCkxvZzoK QmFja3BvcnQgdXBzdHJlYW0gcGF0Y2ggZm9yIFB5dGhvbiAzLjE1CgotLS0KZGlmZiAtLWdpdCBh LzAwMDEtUmVwbGFjZS1QeVdlYWtyZWZfR2V0T2JqZWN0LXdpdGgtUHlXZWFrcmVmX0dldFJlZi5w YXRjaCBiLzAwMDEtUmVwbGFjZS1QeVdlYWtyZWZfR2V0T2JqZWN0LXdpdGgtUHlXZWFrcmVmX0dl dFJlZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdkYmFiMy4uMDAwMDAw MAotLS0gYS8wMDAxLVJlcGxhY2UtUHlXZWFrcmVmX0dldE9iamVjdC13aXRoLVB5V2Vha3JlZl9H ZXRSZWYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotRnJvbSBmM2U5NjAw ZGI2MDg2ZTgzNGMwNTAzY2RhZjMwYjViYTdlZDUzY2ViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogQW5vbnltb3VzIENvd2FyZCA8bm9ib2R5QHJlZGhhdC5jb20+Ci1EYXRlOiBTdW4s IDI2IEp1bCAyMDI2IDE2OjEzOjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgUHlX ZWFrcmVmX0dldE9iamVjdCB3aXRoIFB5V2Vha3JlZl9HZXRSZWYKLQotUHlXZWFrcmVmX0dldE9i amVjdCB3YXMgcmVtb3ZlZCBpbiBQeXRob24gMy4xNS4gUmVwbGFjZSBhbGwgZm91ciBjYWxsCi1z aXRlcyB3aXRoIFB5V2Vha3JlZl9HZXRSZWYsIHdoaWNoIHJldHVybnMgYSBzdHJvbmcgcmVmZXJl bmNlIGluc3RlYWQKLW9mIGEgYm9ycm93ZWQgb25lLCBhbmQgYWRqdXN0IHJlZmVyZW5jZSBjb3Vu dGluZyBhY2NvcmRpbmdseS4KLQotSW4gVGZfUHlJZEhhbmRsZTo6UHRyKCksIHJldHVybiBQeV9O b25lIHdoZW4gdGhlIHJlZmVyZW50IGlzIGRlYWQgdG8KLW1hdGNoIHRoZSBvcmlnaW5hbCBiZWhh dmlvdXIgKHByZXZpb3VzbHkgcmV0dXJuZWQgTlVMTCBlcnJvbmVvdXNseSkuCi0KLUluIFRmX1B5 V2Vha09iamVjdDo6R2V0T2JqZWN0KCksIGV4cGxpY2l0bHkgcmV0dXJuIGEgUHl0aG9uIE5vbmUg b2JqZWN0Ci1vbiBmYWlsdXJlLCBtYXRjaGluZyB0aGUgb3JpZ2luYWwgc2VtYW50aWNzIGV4YWN0 bHkuCi0KLUZpeGVzOiBodHRwczovL2dpdGh1Yi5jb20vUGl4YXJBbmltYXRpb25TdHVkaW9zL09w ZW5VU0QvaXNzdWVzLzM5NjYKLQotQXNzaXN0ZWQtYnk6IENsYXVkZSBPcHVzIDQuNgotUmV2aWV3 ZWQtYnk6IE9wZW5VU0QgTWFpbnRhaW5lcnMgPHVzZC1tYWludGFpbmVyc0BmZWRvcmFwcm9qZWN0 Lm9yZz4KLS0tLQotIHB4ci9iYXNlL3RmL3B5RnVuY3Rpb24uaCAgICAgfCAxMyArKysrKysrKyst LS0tCi0gcHhyL2Jhc2UvdGYvcHlJZGVudGl0eS5jcHAgICB8IDEwICsrKysrKysrKy0KLSBweHIv YmFzZS90Zi9weVdlYWtPYmplY3QuY3BwIHwgMTIgKysrKysrKysrLS0tCi0gMyBmaWxlcyBjaGFu Z2VkLCAyNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHhy L2Jhc2UvdGYvcHlGdW5jdGlvbi5oIGIvcHhyL2Jhc2UvdGYvcHlGdW5jdGlvbi5oCi1pbmRleCA4 NWFmOTQzYjIuLmY3N2I1YjcxYiAxMDA2NDQKLS0tLSBhL3B4ci9iYXNlL3RmL3B5RnVuY3Rpb24u aAotKysrIGIvcHhyL2Jhc2UvdGYvcHlGdW5jdGlvbi5oCi1AQCAtNDksMTEgKzQ5LDEzIEBAIHN0 cnVjdCBUZlB5RnVuY3Rpb25Gcm9tUHl0aG9uPFJldCAoQXJncy4uLik+Ci0gICAgICAgICAgICAg dXNpbmcgbmFtZXNwYWNlIHB4cl9ib29zdDo6cHl0aG9uOwotICAgICAgICAgICAgIC8vIEF0dGVt cHQgdG8gZ2V0IHRoZSByZWZlcmVuY2VkIGNhbGxhYmxlIG9iamVjdC4KLSAgICAgICAgICAgICBU ZlB5TG9jayBsb2NrOwotLSAgICAgICAgICAgIG9iamVjdCBjYWxsYWJsZShoYW5kbGU8Pihib3Jy b3dlZChQeVdlYWtyZWZfR2V0T2JqZWN0KHdlYWsucHRyKCkpKSkpOwotLSAgICAgICAgICAgIGlm IChUZlB5SXNOb25lKGNhbGxhYmxlKSkgewotKyAgICAgICAgICAgIFB5T2JqZWN0ICpyYXdDYWxs YWJsZSA9IE5VTEw7Ci0rICAgICAgICAgICAgaWYgKFB5V2Vha3JlZl9HZXRSZWYod2Vhay5wdHIo KSwgJnJhd0NhbGxhYmxlKSA8PSAwKSB7Ci0gICAgICAgICAgICAgICAgIFRGX1dBUk4oIlRyaWVk IHRvIGNhbGwgYW4gZXhwaXJlZCBweXRob24gY2FsbGJhY2siKTsKLSAgICAgICAgICAgICAgICAg cmV0dXJuIFJldCgpOwotICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAvLyBQeVdlYWtyZWZf R2V0UmVmIHJldHVybnMgYSBzdHJvbmcgcmVmZXJlbmNlOyBoYW5kbGU8PiBzdGVhbHMgaXQuCi0r ICAgICAgICAgICAgb2JqZWN0IGNhbGxhYmxle2hhbmRsZTw+KHJhd0NhbGxhYmxlKX07Ci0gICAg ICAgICAgICAgcmV0dXJuIFRmUHlDYWxsPFJldD4oY2FsbGFibGUpKGFyZ3MuLi4pOwotICAgICAg ICAgfQotICAgICB9OwotQEAgLTY4LDEyICs3MCwxNSBAQCBzdHJ1Y3QgVGZQeUZ1bmN0aW9uRnJv bVB5dGhvbjxSZXQgKEFyZ3MuLi4pPgotICAgICAgICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IHRo ZSByZWZlcmVuY2VkIHNlbGYgcGFyYW1ldGVyLCB0aGVuIGJ1aWxkIGEgbmV3Ci0gICAgICAgICAg ICAgLy8gaW5zdGFuY2UgbWV0aG9kIGFuZCBjYWxsIGl0LgotICAgICAgICAgICAgIFRmUHlMb2Nr IGxvY2s7Ci0tICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeVdlYWtyZWZfR2V0T2JqZWN0 KHdlYWtTZWxmLnB0cigpKTsKLS0gICAgICAgICAgICBpZiAoc2VsZiA9PSBQeV9Ob25lKSB7Ci0r ICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBOVUxMOwotKyAgICAgICAgICAgIGlmIChQeVdl YWtyZWZfR2V0UmVmKHdlYWtTZWxmLnB0cigpLCAmc2VsZikgPD0gMCkgewotICAgICAgICAgICAg ICAgICBURl9XQVJOKCJUcmllZCB0byBjYWxsIGEgbWV0aG9kIG9uIGFuIGV4cGlyZWQgcHl0aG9u IGluc3RhbmNlIik7Ci0gICAgICAgICAgICAgICAgIHJldHVybiBSZXQoKTsKLSAgICAgICAgICAg ICB9Ci0rICAgICAgICAgICAgLy8gUHlXZWFrcmVmX0dldFJlZiByZXR1cm5zIGEgc3Ryb25nIHJl ZmVyZW5jZSB0byBzZWxmOyBQeU1ldGhvZF9OZXcKLSsgICAgICAgICAgICAvLyB0YWtlcyBpdHMg b3duIHJlZmVyZW5jZSwgc28gcmVsZWFzZSBvdXJzIGFmdGVyd2FyZC4KLSAgICAgICAgICAgICBv YmplY3QgbWV0aG9kKGhhbmRsZTw+KFB5TWV0aG9kX05ldyhmdW5jLnB0cigpLCBzZWxmKSkpOwot KyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgICAgICByZXR1cm4gVGZQeUNh bGw8UmV0PihtZXRob2QpKGFyZ3MuLi4pOwotICAgICAgICAgfQotICAgICB9OwotZGlmZiAtLWdp dCBhL3B4ci9iYXNlL3RmL3B5SWRlbnRpdHkuY3BwIGIvcHhyL2Jhc2UvdGYvcHlJZGVudGl0eS5j cHAKLWluZGV4IDUzODlkOGYyNS4uMDZiN2Y5YjBjIDEwMDY0NAotLS0tIGEvcHhyL2Jhc2UvdGYv cHlJZGVudGl0eS5jcHAKLSsrKyBiL3B4ci9iYXNlL3RmL3B5SWRlbnRpdHkuY3BwCi1AQCAtMTM2 LDcgKzEzNiwxNSBAQCBQeU9iamVjdCAqCi0gVGZfUHlJZEhhbmRsZTo6UHRyKCkgY29uc3Qgewot ICAgICBpZiAoX3dlYWtSZWYpIHsKLSAgICAgICAgIFRmUHlMb2NrIGxvY2s7Ci0tICAgICAgICBy ZXR1cm4gUHlXZWFrcmVmX0dldE9iamVjdChfd2Vha1JlZik7Ci0rICAgICAgICBQeU9iamVjdCAq b2JqID0gTlVMTDsKLSsgICAgICAgIGlmIChQeVdlYWtyZWZfR2V0UmVmKF93ZWFrUmVmLCAmb2Jq KSA+IDApIHsKLSsgICAgICAgICAgICAvLyBSZXR1cm4gYSBib3Jyb3dlZC1zdHlsZSByZWZlcmVu Y2U6IGRlY3JlbWVudCBzbyB0aGUgY2FsbGVyCi0rICAgICAgICAgICAgLy8gZG9lcyBub3QgbmVl ZCB0byByZWxlYXNlLiBTYWZlIGJlY2F1c2UgdGhlIEdJTCBpcyBoZWxkIGJ5Ci0rICAgICAgICAg ICAgLy8gYWxsIGNhbGxlcnMuCi0rICAgICAgICAgICAgUHlfREVDUkVGKG9iaik7Ci0rICAgICAg ICAgICAgcmV0dXJuIG9iajsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldHVybiBQeV9Ob25lOyAg IC8vIGRlYWQgcmVmZXJlbnQg4oaSIG1hdGNoIG9yaWdpbmFsIGJlaGF2aW91cgotICAgICB9Ci0g ICAgIHJldHVybiAwOwotIH0KLWRpZmYgLS1naXQgYS9weHIvYmFzZS90Zi9weVdlYWtPYmplY3Qu Y3BwIGIvcHhyL2Jhc2UvdGYvcHlXZWFrT2JqZWN0LmNwcAotaW5kZXggOGNmZGRjNzI5Li5lY2Rk N2Y3MDUgMTAwNjQ0Ci0tLS0gYS9weHIvYmFzZS90Zi9weVdlYWtPYmplY3QuY3BwCi0rKysgYi9w eHIvYmFzZS90Zi9weVdlYWtPYmplY3QuY3BwCi1AQCAtMTE1LDkgKzExNSwxNSBAQCBUZl9QeVdl YWtPYmplY3Q6OkdldE9yQ3JlYXRlKHB4cl9ib29zdDo6cHl0aG9uOjpvYmplY3QgY29uc3QgJm9i aikKLSBweHJfYm9vc3Q6OnB5dGhvbjo6b2JqZWN0Ci0gVGZfUHlXZWFrT2JqZWN0OjpHZXRPYmpl Y3QoKSBjb25zdAotIHsKLS0gICAgcmV0dXJuIHB4cl9ib29zdDo6cHl0aG9uOjpvYmplY3QKLS0g ICAgICAgIChweHJfYm9vc3Q6OnB5dGhvbjo6aGFuZGxlPD4KLS0gICAgICAgICAocHhyX2Jvb3N0 OjpweXRob246OmJvcnJvd2VkKFB5V2Vha3JlZl9HZXRPYmplY3QoX3dlYWtSZWYuZ2V0KCkpKSkp OwotKyAgICBQeU9iamVjdCAqb2JqID0gTlVMTDsKLSsgICAgaWYgKFB5V2Vha3JlZl9HZXRSZWYo X3dlYWtSZWYuZ2V0KCksICZvYmopID4gMCkgewotKyAgICAgICAgLy8gUHlXZWFrcmVmX0dldFJl ZiByZXR1cm5zIGEgc3Ryb25nIHJlZmVyZW5jZTsgaGFuZGxlPD4gc3RlYWxzIGl0LgotKyAgICAg ICAgcmV0dXJuIHB4cl9ib29zdDo6cHl0aG9uOjpvYmplY3QoCi0rICAgICAgICAgICAgcHhyX2Jv b3N0OjpweXRob246OmhhbmRsZTw+KG9iaikpOwotKyAgICB9Ci0rICAgIC8vIERlYWQgcmVmZXJl bnQ6IHJldHVybiBQeV9Ob25lIGV4cGxpY2l0bHksIGFzIHRoZSBvcmlnaW5hbCBkaWQuCi0rICAg IHJldHVybiBweHJfYm9vc3Q6OnB5dGhvbjo6b2JqZWN0KAotKyAgICAgICAgcHhyX2Jvb3N0Ojpw eXRob246OmhhbmRsZTw+KHB4cl9ib29zdDo6cHl0aG9uOjpib3Jyb3dlZChQeV9Ob25lKSkpOwot IH0KLSAKLSB2b2lkCi0tLSAKLTIuNTUuMAotCgpkaWZmIC0tZ2l0IGEvY2QzYjljOWYwMzFmZGZh Y2UzNDIzZmY3YTg5OTk1ZGFkZjRiNzNhYS5wYXRjaCBiL2NkM2I5YzlmMDMxZmRmYWNlMzQyM2Zm N2E4OTk5NWRhZGY0YjczYWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uYWFkZTcyOAotLS0gL2Rldi9udWxsCisrKyBiL2NkM2I5YzlmMDMxZmRmYWNlMzQyM2ZmN2E4 OTk5NWRhZGY0YjczYWEucGF0Y2gKQEAgLTAsMCArMSwzODcgQEAKK0Zyb20gY2QzYjljOWYwMzFm ZGZhY2UzNDIzZmY3YTg5OTk1ZGFkZjRiNzNhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zy b206IGdpdGFtb2hyIDxnaXRhbW9ockB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBU aHUsIDE3IFNlcCAyMDI2IDE1OjA0OjM3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRmOiBQeXRo b24gMy4xMyBzaW11bHRhbmVvdXNseSBkZXByZWNhdGVzIFB5V2Vha3JlZl9HZXRPYmplY3QKKyBh bmQgaW50cm9kdWNlcyBpdHMgcmVwbGFjZW1lbnQgUHlXZWFrcmVmX0dldFJlZi4gIFB5V2Vha3Jl Zl9HZXRPYmplY3Qgd2lsbCBiZQorIHJlbW92ZWQgaW4gUHl0aG9uIDMuMTUuICBBZGQgYSBUZl9Q eVdlYWtyZWZHZXRSZWYgc2hpbSB0byBweVV0aWxzLmggdGhhdAorIGNhbGxzIFB5V2Vha1JlZl9H ZXRSZWYgZGlyZWN0bHkgb24gPj0zLjEzLCBhbmQgbWltaWNzIGl0cyBiZWhhdmlvciBvbiA8My4x My4gCisgUG9ydCBweHIncyBQeVdlYWtyZWZfR2V0T2JqZWN0IGNhbGxlcnMgdG8gdXNlIFRmX1B5 V2Vha3JlZkdldFJlZi4KKworRml4ZXMgIzM5NjYKKworKEludGVybmFsIGNoYW5nZTogMjQyODM1 NikKKy0tLQorIHB4ci9iYXNlL3RmL3B5RnVuY3Rpb24uaCAgICAgfCAgMTIgKystLQorIHB4ci9i YXNlL3RmL3B5SWRlbnRpdHkuY3BwICAgfCAxMDMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0KKyBweHIvYmFzZS90Zi9weVV0aWxzLmggICAgICAgIHwgIDQyICsrKysrKysrKysr KysrCisgcHhyL2Jhc2UvdGYvcHlXZWFrT2JqZWN0LmNwcCB8ICAyNCArKysrKy0tLQorIHB4ci9i YXNlL3RmL3B5V2Vha09iamVjdC5oICAgfCAgIDggKystCisgNSBmaWxlcyBjaGFuZ2VkLCAxMzUg aW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weHIvYmFzZS90 Zi9weUZ1bmN0aW9uLmggYi9weHIvYmFzZS90Zi9weUZ1bmN0aW9uLmgKK2luZGV4IDg1YWY5NDNi MmMzLi42NmZjN2NiODc2OCAxMDA2NDQKKy0tLSBhL3B4ci9iYXNlL3RmL3B5RnVuY3Rpb24uaAor KysrIGIvcHhyL2Jhc2UvdGYvcHlGdW5jdGlvbi5oCitAQCAtNDksMTEgKzQ5LDEyIEBAIHN0cnVj dCBUZlB5RnVuY3Rpb25Gcm9tUHl0aG9uPFJldCAoQXJncy4uLik+CisgICAgICAgICAgICAgdXNp bmcgbmFtZXNwYWNlIHB4cl9ib29zdDo6cHl0aG9uOworICAgICAgICAgICAgIC8vIEF0dGVtcHQg dG8gZ2V0IHRoZSByZWZlcmVuY2VkIGNhbGxhYmxlIG9iamVjdC4KKyAgICAgICAgICAgICBUZlB5 TG9jayBsb2NrOworLSAgICAgICAgICAgIG9iamVjdCBjYWxsYWJsZShoYW5kbGU8Pihib3Jyb3dl ZChQeVdlYWtyZWZfR2V0T2JqZWN0KHdlYWsucHRyKCkpKSkpOworLSAgICAgICAgICAgIGlmIChU ZlB5SXNOb25lKGNhbGxhYmxlKSkgeworKyAgICAgICAgICAgIFB5T2JqZWN0ICpjYWxsYWJsZVB0 cjsKKysgICAgICAgICAgICBpZiAoVGZfUHlXZWFrcmVmR2V0UmVmKHdlYWsucHRyKCksICZjYWxs YWJsZVB0cikgIT0gMSkgeworICAgICAgICAgICAgICAgICBURl9XQVJOKCJUcmllZCB0byBjYWxs IGFuIGV4cGlyZWQgcHl0aG9uIGNhbGxiYWNrIik7CisgICAgICAgICAgICAgICAgIHJldHVybiBS ZXQoKTsKKyAgICAgICAgICAgICB9CisrICAgICAgICAgICAgb2JqZWN0IGNhbGxhYmxlIHsgaGFu ZGxlPD4geyBjYWxsYWJsZVB0ciB9IH07CisgICAgICAgICAgICAgcmV0dXJuIFRmUHlDYWxsPFJl dD4oY2FsbGFibGUpKGFyZ3MuLi4pOworICAgICAgICAgfQorICAgICB9OworQEAgLTY4LDEyICs2 OSwxMyBAQCBzdHJ1Y3QgVGZQeUZ1bmN0aW9uRnJvbVB5dGhvbjxSZXQgKEFyZ3MuLi4pPgorICAg ICAgICAgICAgIC8vIEF0dGVtcHQgdG8gZ2V0IHRoZSByZWZlcmVuY2VkIHNlbGYgcGFyYW1ldGVy LCB0aGVuIGJ1aWxkIGEgbmV3CisgICAgICAgICAgICAgLy8gaW5zdGFuY2UgbWV0aG9kIGFuZCBj YWxsIGl0LgorICAgICAgICAgICAgIFRmUHlMb2NrIGxvY2s7CistICAgICAgICAgICAgUHlPYmpl Y3QgKnNlbGYgPSBQeVdlYWtyZWZfR2V0T2JqZWN0KHdlYWtTZWxmLnB0cigpKTsKKy0gICAgICAg ICAgICBpZiAoc2VsZiA9PSBQeV9Ob25lKSB7CisrICAgICAgICAgICAgUHlPYmplY3QgKnNlbGZQ dHI7CisrICAgICAgICAgICAgaWYgKFRmX1B5V2Vha3JlZkdldFJlZih3ZWFrU2VsZi5wdHIoKSwg JnNlbGZQdHIpICE9IDEpIHsKKyAgICAgICAgICAgICAgICAgVEZfV0FSTigiVHJpZWQgdG8gY2Fs bCBhIG1ldGhvZCBvbiBhbiBleHBpcmVkIHB5dGhvbiBpbnN0YW5jZSIpOworICAgICAgICAgICAg ICAgICByZXR1cm4gUmV0KCk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIG9iamVjdCBt ZXRob2QoaGFuZGxlPD4oUHlNZXRob2RfTmV3KGZ1bmMucHRyKCksIHNlbGYpKSk7CisrICAgICAg ICAgICAgb2JqZWN0IHNlbGYgeyBoYW5kbGU8PiB7IHNlbGZQdHIgfSB9OworKyAgICAgICAgICAg IG9iamVjdCBtZXRob2QgeyBoYW5kbGU8PiB7IFB5TWV0aG9kX05ldyhmdW5jLnB0cigpLCBzZWxm LnB0cigpKSB9IH07CisgICAgICAgICAgICAgcmV0dXJuIFRmUHlDYWxsPFJldD4obWV0aG9kKShh cmdzLi4uKTsKKyAgICAgICAgIH0KKyAgICAgfTsKK2RpZmYgLS1naXQgYS9weHIvYmFzZS90Zi9w eUlkZW50aXR5LmNwcCBiL3B4ci9iYXNlL3RmL3B5SWRlbnRpdHkuY3BwCitpbmRleCA1Mzg5ZDhm MjVlMi4uNzNkYjdlODJmMzYgMTAwNjQ0CistLS0gYS9weHIvYmFzZS90Zi9weUlkZW50aXR5LmNw cAorKysrIGIvcHhyL2Jhc2UvdGYvcHlJZGVudGl0eS5jcHAKK0BAIC0xMCw2ICsxMCw3IEBACisg I2luY2x1ZGUgInB4ci9iYXNlL3RmL2hhc2guaCIKKyAjaW5jbHVkZSAicHhyL2Jhc2UvdGYvbWFs bG9jVGFnLmgiCisgI2luY2x1ZGUgInB4ci9iYXNlL3RmL3B5SWRlbnRpdHkuaCIKKysjaW5jbHVk ZSAicHhyL2Jhc2UvdGYvcHlVdGlscy5oIgorICNpbmNsdWRlICJweHIvYmFzZS90Zi9zdGF0aWNE YXRhLmgiCisgI2luY2x1ZGUgInB4ci9iYXNlL3RmL3N0YWNrVHJhY2UuaCIKKyAKK0BAIC0zMCw3 ICszMSw3IEBAIFRmX1B5T3duZXJzaGlwUHRyTWFwOjpfQ2FjaGVUeXBlIFRmX1B5T3duZXJzaGlw UHRyTWFwOjpfY2FjaGU7Cisgc3RydWN0IFRmX1B5SWRIYW5kbGUgeworIAorICAgICBURl9NQUxM T0NfVEFHX05FVygiVGYiLCAiVGZfUHlJZEhhbmRsZSIpOworLSAgICAKKysKKyAgICAgVGZfUHlJ ZEhhbmRsZSgpOworICAgICBleHBsaWNpdCBUZl9QeUlkSGFuZGxlKFB5T2JqZWN0ICpvYmopOwor ICAgICBUZl9QeUlkSGFuZGxlKFRmX1B5SWRIYW5kbGUgY29uc3QgJm90aGVyKTsKK0BAIC0zOSwy MCArNDAsMjkgQEAgc3RydWN0IFRmX1B5SWRIYW5kbGUgeworICAgICB2b2lkIENsZWFuVXAoKTsK KyAgICAgdm9pZCBSZWxlYXNlKCkgY29uc3Q7CisgICAgIHZvaWQgQWNxdWlyZSgpIGNvbnN0Owor LSAgICBQeU9iamVjdCAqUHRyKCkgY29uc3Q7CistICAgIG11dGFibGUgYm9vbCBfaXNBY3F1aXJl ZDsKKysKKysgICAgLy8gUmV0dXJuIGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgcmVmZXJlbnQsIG9y IG51bGwgaWYgaXQgaGFzIGV4cGlyZWQuCisrICAgIFB5T2JqZWN0ICpHZXRSZWYoKSBjb25zdDsK KysKKysgICAgLy8gUmV0dXJuIHRoZSByZWZlcmVudCB3aXRob3V0IG93bmluZyBhIHJlZmVyZW5j ZSB0byBpdCwgb3IgbnVsbCBpZiBpdCBoYXMKKysgICAgLy8gZXhwaXJlZC4gIE9ubHkgdmFsaWQg Zm9yIGNvbXBhcmlzb24gYW5kIGRpYWdub3N0aWNzOyB0aGUgcmVzdWx0IG1heQorKyAgICAvLyBl eHBpcmUgYXMgc29vbiBhcyB0aGUgY2FsbGVyIGRyb3BzIHRoZSBHSUwuCisrICAgIFB5T2JqZWN0 ICpQZWVrUHRyKCkgY29uc3Q7CisrCisrICAgIC8vIFRoZSByZWZlcmVuY2UgYWNxdWlyZWQgYnkg QWNxdWlyZSgpLCBvciBudWxsIHdoZW4gbm90IGFjcXVpcmVkLgorKyAgICBtdXRhYmxlIFB5T2Jq ZWN0ICpfYWNxdWlyZWQ7CisgICAgIFB5T2JqZWN0ICpfd2Vha1JlZjsKKyB9OworIAorIAorIAor IFRmX1B5SWRIYW5kbGU6OlRmX1B5SWRIYW5kbGUoKSA6CistICAgIF9pc0FjcXVpcmVkKGZhbHNl KSwgX3dlYWtSZWYoMCkKKysgICAgX2FjcXVpcmVkKG51bGxwdHIpLCBfd2Vha1JlZihudWxscHRy KQorIHsKKyB9CisgCisgVGZfUHlJZEhhbmRsZTo6VGZfUHlJZEhhbmRsZShQeU9iamVjdCAqb2Jq KSA6CistICAgIF9pc0FjcXVpcmVkKGZhbHNlKSwgX3dlYWtSZWYoMCkKKysgICAgX2FjcXVpcmVk KG51bGxwdHIpLCBfd2Vha1JlZihudWxscHRyKQorIHsKKyAgICAgVGZQeUxvY2sgbG9jazsKKyAg ICAgX3dlYWtSZWYgPSBQeVdlYWtyZWZfTmV3UmVmKG9iaiwgMCk7CitAQCAtNjAsNyArNzAsNyBA QCBUZl9QeUlkSGFuZGxlOjpUZl9QeUlkSGFuZGxlKFB5T2JqZWN0ICpvYmopIDoKKyB9CisgCisg VGZfUHlJZEhhbmRsZTo6VGZfUHlJZEhhbmRsZShUZl9QeUlkSGFuZGxlIGNvbnN0ICZvdGhlcikg OgorLSAgICBfaXNBY3F1aXJlZChmYWxzZSksIF93ZWFrUmVmKDApCisrICAgIF9hY3F1aXJlZChu dWxscHRyKSwgX3dlYWtSZWYobnVsbHB0cikKKyB7CisgICAgICp0aGlzID0gb3RoZXI7CisgfQor QEAgLTczLDggKzgzLDkgQEAgVGZfUHlJZEhhbmRsZTo6b3BlcmF0b3I9KFRmX1B5SWRIYW5kbGUg Y29uc3QgJm90aGVyKQorICAgICAgICAgX3dlYWtSZWYgPSBvdGhlci5fd2Vha1JlZjsKKyAgICAg ICAgIFRmUHlMb2NrIGxvY2s7CisgICAgICAgICBQeV9JTkNSRUYoX3dlYWtSZWYpOworLSAgICAg ICAgaWYgKG90aGVyLl9pc0FjcXVpcmVkKQorKyAgICAgICAgaWYgKG90aGVyLl9hY3F1aXJlZCkg eworICAgICAgICAgICAgIEFjcXVpcmUoKTsKKysgICAgICAgIH0KKyAgICAgfQorICAgICByZXR1 cm4gKnRoaXM7CisgfQorQEAgLTg0LDQ1ICs5NSwzNiBAQCBUZl9QeUlkSGFuZGxlOjp+VGZfUHlJ ZEhhbmRsZSgpIHsKKyB9CisgCisgdm9pZCBUZl9QeUlkSGFuZGxlOjpDbGVhblVwKCkgeworLSAg ICBpZiAoX2lzQWNxdWlyZWQpCisrICAgIGlmIChfYWNxdWlyZWQpIHsKKyAgICAgICAgIFJlbGVh c2UoKTsKKysgICAgfQorICAgICBUZlB5TG9jayBsb2NrOworLSAgICBQeV9YREVDUkVGKF93ZWFr UmVmKTsKKysgICAgUHlfQ0xFQVIoX3dlYWtSZWYpOworIH0KKyAKKyB2b2lkIFRmX1B5SWRIYW5k bGU6OlJlbGVhc2UoKSBjb25zdCB7CistICAgIGlmIChfd2Vha1JlZiAmJiAhX2lzQWNxdWlyZWQp IHsKKysgICAgaWYgKF93ZWFrUmVmICYmICFfYWNxdWlyZWQpIHsKKyAgICAgICAgIC8vIENPREVf Q09WRVJBR0VfT0ZGIENhbiBvbmx5IGdldCBoZXJlIGlmIHRoZXJlJ3MgYSBidWcuCisgICAgICAg ICBURl9DT0RJTkdfRVJST1IoIlJlbGVhc2luZyB3aGlsZSBub3QgYWNxdWlyZWQhIik7CisgICAg ICAgICByZXR1cm47CisgICAgICAgICAvLyBDT0RFX0NPVkVSQUdFX09OCistICAgIH0gICAgICAg ICAgICAKKy0gICAgaWYgKFB5T2JqZWN0ICpwdHIgPSBQdHIoKSkgeworLSAgICAgICAgX2lzQWNx dWlyZWQgPSBmYWxzZTsKKy0gICAgICAgIFRmUHlMb2NrIGxvY2s7CistICAgICAgICBQeV9ERUNS RUYocHRyKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIC8vIENPREVfQ09WRVJBR0VfT0ZGIENh biBvbmx5IGdldCBoZXJlIGlmIHRoZXJlJ3MgYSBidWcuCistICAgICAgICBURl9DT0RJTkdfRVJS T1IoIkFjcXVpcmluZyBQeXRob24gaWRlbnRpdHkgd2l0aCAiCistICAgICAgICAgICAgICAgICAg ICAgICAgImV4cGlyZWQgUHl0aG9uIG9iamVjdCEiKTsKKy0gICAgICAgIFRmTG9nU3RhY2tUcmFj ZSgiQWNxdWlyaW5nIFB5dGhvbiBpZGVudGl0eSB3aXRoICIKKy0gICAgICAgICAgICAgICAgICAg ICAgICAiZXhwaXJlZCBQeXRob24gb2JqZWN0ISIpOworLSAgICAgICAgLy8gQ09ERV9DT1ZFUkFH RV9PTgorICAgICB9CisrICAgIC8vIEhvbGRpbmcgdGhlIGFjcXVpcmVkIHJlZmVyZW5jZSBrZWVw cyB0aGUgcmVmZXJlbnQgYWxpdmUsIHNvIHRoZXJlIGlzIG5vCisrICAgIC8vIG5lZWQgdG8gY29u c3VsdCB0aGUgd2VhayByZWZlcmVuY2UgdG8gZmluZCBpdC4KKysgICAgVGZQeUxvY2sgbG9jazsK KysgICAgUHlfQ0xFQVIoX2FjcXVpcmVkKTsKKyB9CisgCisgdm9pZCBUZl9QeUlkSGFuZGxlOjpB Y3F1aXJlKCkgY29uc3QgeworLSAgICBpZiAoX2lzQWNxdWlyZWQpIHsKKysgICAgaWYgKF9hY3F1 aXJlZCkgeworICAgICAgICAgLy8gQ09ERV9DT1ZFUkFHRV9PRkYgQ2FuIG9ubHkgZ2V0IGhlcmUg aWYgdGhlcmUncyBhIGJ1Zy4KKyAgICAgICAgIFRGX0NPRElOR19FUlJPUigiQWNxdWlyaW5nIHdo aWxlIGFscmVhZHkgYWNxdWlyZWQhIik7CisgICAgICAgICByZXR1cm47CisgICAgICAgICAvLyBD T0RFX0NPVkVSQUdFX09OCisgICAgIH0KKy0gICAgaWYgKFB5T2JqZWN0ICpwdHIgPSBQdHIoKSkg eworLSAgICAgICAgX2lzQWNxdWlyZWQgPSB0cnVlOworLSAgICAgICAgVGZQeUxvY2sgbG9jazsK Ky0gICAgICAgIFB5X0lOQ1JFRihwdHIpOworLSAgICB9IGVsc2UgeworKyAgICBUZlB5TG9jayBs b2NrOworKyAgICAvLyBUaGUgcmVmZXJlbmNlIHJldHVybmVkIGhlcmUgYmVjb21lcyB0aGUgYWNx dWlyZWQgcmVmZXJlbmNlLgorKyAgICBpZiAoIShfYWNxdWlyZWQgPSBHZXRSZWYoKSkpIHsKKyAg ICAgICAgIC8vIENPREVfQ09WRVJBR0VfT0ZGIENhbiBvbmx5IGdldCBoZXJlIGlmIHRoZXJlJ3Mg YSBidWcuCisgICAgICAgICBURl9DT0RJTkdfRVJST1IoIkFjcXVpcmluZyBQeXRob24gaWRlbnRp dHkgd2l0aCBleHBpcmVkIFB5dGhvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVj dCEiKTsKK0BAIC0xMzMsMTIgKzEzNSwzMCBAQCB2b2lkIFRmX1B5SWRIYW5kbGU6OkFjcXVpcmUo KSBjb25zdCB7CisgfQorIAorIFB5T2JqZWN0ICoKKy1UZl9QeUlkSGFuZGxlOjpQdHIoKSBjb25z dCB7CistICAgIGlmIChfd2Vha1JlZikgeworLSAgICAgICAgVGZQeUxvY2sgbG9jazsKKy0gICAg ICAgIHJldHVybiBQeVdlYWtyZWZfR2V0T2JqZWN0KF93ZWFrUmVmKTsKKytUZl9QeUlkSGFuZGxl OjpHZXRSZWYoKSBjb25zdCB7CisrICAgIGlmICghX3dlYWtSZWYpIHsKKysgICAgICAgIHJldHVy biBudWxscHRyOworICAgICB9CistICAgIHJldHVybiAwOworKyAgICBUZlB5TG9jayBsb2NrOwor KyAgICBQeU9iamVjdCAqb2JqOworKyAgICBpZiAoVGZfUHlXZWFrcmVmR2V0UmVmKF93ZWFrUmVm LCAmb2JqKSA8IDApIHsKKysgICAgICAgIC8vIENPREVfQ09WRVJBR0VfT0ZGIF93ZWFrUmVmIGFs d2F5cyBjb21lcyBmcm9tIFB5V2Vha3JlZl9OZXdSZWYsIHNvCisrICAgICAgICAvLyB0aGlzIGNh biBvbmx5IGhhcHBlbiBpZiB0aGVyZSdzIGEgYnVnLiAgTm90ZSB0aGF0IG9iaiBpcyB1bnNwZWNp ZmllZAorKyAgICAgICAgLy8gb24gdGhpcyBwYXRoIGFuZCBtdXN0IG5vdCBiZSByZWFkLgorKyAg ICAgICAgVEZfQ09ESU5HX0VSUk9SKCJFeHBlY3RlZCBhIFB5dGhvbiB3ZWFrIHJlZmVyZW5jZSIp OworKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKysgICAgICAgIHJldHVybiBudWxscHRyOworKyAg ICAgICAgLy8gQ09ERV9DT1ZFUkFHRV9PTgorKyAgICB9CisrICAgIHJldHVybiBvYmo7CisrfQor KworK1B5T2JqZWN0ICoKKytUZl9QeUlkSGFuZGxlOjpQZWVrUHRyKCkgY29uc3QgeworKyAgICBU ZlB5TG9jayBsb2NrOworKyAgICBQeU9iamVjdCAqb2JqID0gR2V0UmVmKCk7CisrICAgIFB5X1hE RUNSRUYob2JqKTsKKysgICAgcmV0dXJuIG9iajsKKyB9CisgCisgCitAQCAtMjQzLDE2ICsyNjMs MjEgQEAgdm9pZCBUZl9QeUlkZW50aXR5SGVscGVyOjpTZXQodm9pZCBjb25zdCAqa2V5LCBQeU9i amVjdCAqb2JqKSB7CisgICAgIF9JZGVudGl0eU1hcCYgX2lkZW50aXR5TWFwID0gX0dldElkZW50 aXR5TWFwKCk7CisgICAgIF9JZGVudGl0eU1hcDo6aXRlcmF0b3IgaSA9IF9pZGVudGl0eU1hcC5m aW5kKGtleSk7CisgCistICAgIGlmIChpID09IF9pZGVudGl0eU1hcC5lbmQoKSkgeyAKKysgICAg aWYgKGkgPT0gX2lkZW50aXR5TWFwLmVuZCgpKSB7CisgICAgICAgICBfaWRlbnRpdHlNYXBba2V5 XSA9IFRmX1B5SWRIYW5kbGUob2JqKTsKKyAgICAgICAgIF9SZWNvcmRFc3RhYmxpc2hlZElkZW50 aXR5U3RhY2soa2V5KTsKKy0gICAgfSBlbHNlIGlmIChpLT5zZWNvbmQuUHRyKCkgIT0gb2JqKSB7 CisrICAgIH0gZWxzZSBpZiAoaS0+c2Vjb25kLlBlZWtQdHIoKSAhPSBvYmopIHsKKyAgICAgICAg IC8vIENPREVfQ09WRVJBR0VfT0ZGIENhbiBvbmx5IGdldCBoZXJlIGlmIHRoZXJlJ3MgYSBidWcu CisrICAgICAgICAvLyBIb2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBleGlzdGluZyBvYmplY3Qgd2hp bGUgd2UgcmVwb3J0IG9uIGl0LCBzaW5jZQorKyAgICAgICAgLy8gX0dldFR5cGVOYW1lIGNhbGxz IGJhY2sgaW50byBQeXRob24uCisrICAgICAgICBweHJfYm9vc3Q6OnB5dGhvbjo6aGFuZGxlPD4g ZXhpc3RpbmcgeworKyAgICAgICAgICAgIHB4cl9ib29zdDo6cHl0aG9uOjphbGxvd19udWxsKGkt PnNlY29uZC5HZXRSZWYoKSkgfTsKKyAgICAgICAgIFRGX0NPRElOR19FUlJPUigiTXVsdGlwbGUg UHl0aG9uIG9iamVjdHMgZm9yIEMrKyBvYmplY3QgJXA6ICIKKyAgICAgICAgICAgICAgICAgICAg ICAgICAiKEV4aXN0aW5nIHB5dGhvbiBvYmplY3QgaWQgJXAgd2l0aCB0eXBlICVzLCAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgIm5ldyBweXRob24gb2JqZWN0IGlkICVwIHdpdGggdHlwZSAl cykiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGtleSwgaS0+c2Vjb25kLlB0cigpLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIF9HZXRUeXBlTmFtZShpLT5zZWNvbmQuUHRyKCkpLmNfc3Ry KCksCisrICAgICAgICAgICAgICAgICAgICAgICAga2V5LCBleGlzdGluZy5nZXQoKSwKKysgICAg ICAgICAgICAgICAgICAgICAgICBleGlzdGluZyA/IF9HZXRUeXBlTmFtZShleGlzdGluZy5nZXQo KSkuY19zdHIoKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogImV4cGlyZWQi LAorICAgICAgICAgICAgICAgICAgICAgICAgIG9iaiwgX0dldFR5cGVOYW1lKG9iaikuY19zdHIo KSk7CisgICAgICAgICBfSXNzdWVNdWx0aXBsZUlkZW50aXR5RXJyb3JTdGFja3Moa2V5KTsKKyAg ICAgICAgIGktPnNlY29uZCA9IFRmX1B5SWRIYW5kbGUob2JqKTsKK0BAIC0yNzQsOCArMjk5LDgg QEAgUHlPYmplY3QgKlRmX1B5SWRlbnRpdHlIZWxwZXI6OkdldCh2b2lkIGNvbnN0ICprZXkpIHsK KyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgCistICAgIC8vIHVzZSBweHJfYm9vc3Q6OnB5 dGhvbjo6eGluY3JlZiBoZXJlLCBiZWNhdXNlIGl0IHJldHVybnMgdGhlIGluY3JlZmVkIHB0ci4K Ky0gICAgcmV0dXJuIHB4cl9ib29zdDo6cHl0aG9uOjp4aW5jcmVmKGktPnNlY29uZC5QdHIoKSk7 CisrICAgIC8vIFJldHVybnMgYSBuZXcgcmVmZXJlbmNlLCBvciBudWxsIGlmIHRoZSBQeXRob24g b2JqZWN0IGhhcyBleHBpcmVkLgorKyAgICByZXR1cm4gaS0+c2Vjb25kLkdldFJlZigpOworIH0K KyAKKyAKK2RpZmYgLS1naXQgYS9weHIvYmFzZS90Zi9weVV0aWxzLmggYi9weHIvYmFzZS90Zi9w eVV0aWxzLmgKK2luZGV4IDUxYzE4ZTNjYjdjLi5jNzUxZWI1OTk2NCAxMDA2NDQKKy0tLSBhL3B4 ci9iYXNlL3RmL3B5VXRpbHMuaAorKysrIGIvcHhyL2Jhc2UvdGYvcHlVdGlscy5oCitAQCAtMTE3 LDYgKzExNyw0OCBAQCBURl9BUEkgYm9vbCBUZlB5SXNOb25lKHB4cl9ib29zdDo6cHl0aG9uOjpv YmplY3QgY29uc3QgJm9iaik7CisgLy8vIFJldHVybiB0cnVlIGlmZiBcYSBvYmogaXMgTm9uZS4K KyBURl9BUEkgYm9vbCBUZlB5SXNOb25lKHB4cl9ib29zdDo6cHl0aG9uOjpoYW5kbGU8PiBjb25z dCAmb2JqKTsKKyAKKysvLy8gR2V0IGEgc3Ryb25nIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHJl ZmVycmVkIHRvIGJ5IHRoZSB3ZWFrIHJlZmVyZW5jZQorKy8vLyBcYSByZWYuCisrLy8vCisrLy8v IFRoaXMgYmVoYXZlcyBleGFjdGx5IGxpa2UgUHlXZWFrcmVmX0dldFJlZiwgd2hpY2ggd2FzIGFk ZGVkIGluIFB5dGhvbiAzLjEzOgorKy8vLyBvbiBzdWNjZXNzLCBzdG9yZSBhIG5ldyBzdHJvbmcg cmVmZXJlbmNlIHRvIHRoZSByZWZlcmVudCBpbiBccCAqcG9iaiBhbmQKKysvLy8gcmV0dXJuIDE7 IGlmIHRoZSByZWZlcmVuY2UgaXMgZGVhZCwgc3RvcmUgbnVsbCBpbiBccCAqcG9iaiBhbmQgcmV0 dXJuIDA7IG9uCisrLy8vIGVycm9yLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMS4g IENhbGxlcnMgbXVzdCBob2xkIHRoZSBHSUwuCisrLy8vCisrLy8vIEFzIHdpdGggUHlXZWFrcmVm X0dldFJlZiwgXHAgKnBvYmogaXMgdW5zcGVjaWZpZWQgd2hlbiB0aGlzIHJldHVybnMgLTEuCisr Ly8vIENhbGxlcnMgbXVzdCBjb25zdWx0IHRoZSByZXR1cm4gdmFsdWUgYW5kIG11c3Qgbm90IGlu c3BlY3QgXHAgKnBvYmogdW5sZXNzCisrLy8vIGl0IHJldHVybmVkIDEgb3IgMC4KKysvLy8KKysv Ly8gUHlXZWFrcmVmX0dldFJlZiBzdXBlcnNlZGVzIFB5V2Vha3JlZl9HZXRPYmplY3QsIHdoaWNo IGlzIGRlcHJlY2F0ZWQgaW4gMy4xMworKy8vLyBhbmQgc2xhdGVkIGZvciByZW1vdmFsIGluIDMu MTUuICBUaGlzIGZ1bmN0aW9uIGV4aXN0cyBvbmx5IHRvIHByb3ZpZGUKKysvLy8gUHlXZWFrcmVm X0dldFJlZiBvbiBQeXRob24gdmVyc2lvbnMgYmVmb3JlIDMuMTMuICBPbmNlIHRoZSBtaW5pbXVt IHN1cHBvcnRlZAorKy8vLyBQeXRob24gaXMgMy4xMywgZXZlcnkgY2FsbCBjYW4gYmUgcmVwbGFj ZWQgd2l0aCBhIGRpcmVjdCBjYWxsIHRvCisrLy8vIFB5V2Vha3JlZl9HZXRSZWYgYW5kIHRoaXMg ZnVuY3Rpb24gZGVsZXRlZC4KKytpbmxpbmUgaW50CisrVGZfUHlXZWFrcmVmR2V0UmVmKFB5T2Jq ZWN0ICpyZWYsIFB5T2JqZWN0ICoqcG9iaikKKyt7CisrI2lmIFBZX1ZFUlNJT05fSEVYID49IDB4 MDMwRDAwMDAKKysgICAgcmV0dXJuIFB5V2Vha3JlZl9HZXRSZWYocmVmLCBwb2JqKTsKKysjZWxz ZQorKyAgICBQeU9iamVjdCAqb2JqID0gUHlXZWFrcmVmX0dldE9iamVjdChyZWYpOworKyAgICBp ZiAoIW9iaikgeworKyAgICAgICAgLy8gTm90IGEgd2VhayByZWZlcmVuY2U7IFB5V2Vha3JlZl9H ZXRPYmplY3QgaGFzIHNldCBhbiBleGNlcHRpb24uCisrICAgICAgICAvLyBMZWF2ZSAqcG9iaiBh bG9uZTogUHlXZWFrcmVmX0dldFJlZiBkb2VzIG5vdCBzcGVjaWZ5IGl0cyB2YWx1ZSBvbgorKyAg ICAgICAgLy8gZXJyb3IsIHNvIG5laXRoZXIgZG8gd2UuCisrICAgICAgICByZXR1cm4gLTE7Cisr ICAgIH0KKysgICAgaWYgKG9iaiA9PSBQeV9Ob25lKSB7CisrICAgICAgICAvLyBUaGUgcmVmZXJl bnQgaGFzIGV4cGlyZWQuICBOb25lIGl0c2VsZiBpcyBub3Qgd2Vhay1yZWZlcmVuY2VhYmxlLCBz bworKyAgICAgICAgLy8gdGhpcyBjYW5ub3QgYmUgYSBsaXZlIHJlZmVyZW50LgorKyAgICAgICAg KnBvYmogPSBudWxscHRyOworKyAgICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgICAgUHlfSU5D UkVGKG9iaik7CisrICAgICpwb2JqID0gb2JqOworKyAgICByZXR1cm4gMTsKKysjZW5kaWYKKyt9 CisrCisgLy8gSGVscGVyIGZvciBcYyBUZlB5T2JqZWN0KCkuCisgVEZfQVBJIHZvaWQgVGZfUHlP YmplY3RFcnJvcihib29sIHByaW50RXJyb3IpOworIAorZGlmZiAtLWdpdCBhL3B4ci9iYXNlL3Rm L3B5V2Vha09iamVjdC5jcHAgYi9weHIvYmFzZS90Zi9weVdlYWtPYmplY3QuY3BwCitpbmRleCA4 Y2ZkZGM3Mjk1Ni4uODRhMjVhNTJkMTYgMTAwNjQ0CistLS0gYS9weHIvYmFzZS90Zi9weVdlYWtP YmplY3QuY3BwCisrKysgYi9weHIvYmFzZS90Zi9weVdlYWtPYmplY3QuY3BwCitAQCAtMTE1LDMy ICsxMTUsMzggQEAgVGZfUHlXZWFrT2JqZWN0OjpHZXRPckNyZWF0ZShweHJfYm9vc3Q6OnB5dGhv bjo6b2JqZWN0IGNvbnN0ICZvYmopCisgcHhyX2Jvb3N0OjpweXRob246Om9iamVjdAorIFRmX1B5 V2Vha09iamVjdDo6R2V0T2JqZWN0KCkgY29uc3QKKyB7CistICAgIHJldHVybiBweHJfYm9vc3Q6 OnB5dGhvbjo6b2JqZWN0CistICAgICAgICAocHhyX2Jvb3N0OjpweXRob246OmhhbmRsZTw+Cist ICAgICAgICAgKHB4cl9ib29zdDo6cHl0aG9uOjpib3Jyb3dlZChQeVdlYWtyZWZfR2V0T2JqZWN0 KF93ZWFrUmVmLmdldCgpKSkpKTsKKysgICAgUHlPYmplY3QgKm9iajsKKysgICAgaWYgKFRmX1B5 V2Vha3JlZkdldFJlZihfd2Vha1JlZi5nZXQoKSwgJm9iaikgIT0gMSkgeworKyAgICAgICAgLy8g VGhlIHJlZmVyZW50IGhhcyBleHBpcmVkOyByZXBvcnQgaXQgYXMgTm9uZS4KKysgICAgICAgIHJl dHVybiBweHJfYm9vc3Q6OnB5dGhvbjo6b2JqZWN0KCk7CisrICAgIH0KKysgICAgcmV0dXJuIHB4 cl9ib29zdDo6cHl0aG9uOjpvYmplY3QocHhyX2Jvb3N0OjpweXRob246OmhhbmRsZTw+KG9iaikp OworIH0KKyAKKyB2b2lkCisgVGZfUHlXZWFrT2JqZWN0OjpEZWxldGUoKQorIHsKKy0gICAgVGZf UHlXZWFrT2JqZWN0UmVnaXN0cnk6OkdldEluc3RhbmNlKCkuUmVtb3ZlKEdldE9iamVjdCgpLnB0 cigpKTsKKysgICAgLy8gVXNlIHRoZSBjYWNoZWQga2V5IHJhdGhlciB0aGFuIEdldE9iamVjdCgp OiBvdXIgd2VhayByZWZlcmVuY2UgaGFzCisrICAgIC8vIGFscmVhZHkgYmVlbiBjbGVhcmVkIGJ5 IHRoZSB0aW1lIHRoaXMgY2FsbGJhY2sgcnVucy4KKysgICAgVGZfUHlXZWFrT2JqZWN0UmVnaXN0 cnk6OkdldEluc3RhbmNlKCkuUmVtb3ZlKF9yZWZPYmpLZXkpOworICAgICBkZWxldGUgdGhpczsK KyB9CistICAgIAorKworIFRmX1B5V2Vha09iamVjdDo6VGZfUHlXZWFrT2JqZWN0KHB4cl9ib29z dDo6cHl0aG9uOjpvYmplY3QgY29uc3QgJm9iaikKKyAgICAgOiBfd2Vha1JlZigKKyAgICAgICAg IFB5V2Vha3JlZl9OZXdSZWYoCisgICAgICAgICAgICAgb2JqLnB0cigpLCBweHJfYm9vc3Q6OnB5 dGhvbjo6CisgICAgICAgICAgICAgb2JqZWN0KFRmX1B5V2Vha09iamVjdERlbGV0ZXIoVGZDcmVh dGVXZWFrUHRyKHRoaXMpKSkucHRyKCkpKQorKyAgICAsIF9yZWZPYmpLZXkob2JqLnB0cigpKQor IHsKKyAgICAgVGZfUHlXZWFrT2JqZWN0UHRyIHNlbGYodGhpcyk7CistICAgIAorKworICAgICAv LyBTZXQgb3VyIHB5dGhvbiBpZGVudGl0eSwgYnV0IHJlbGVhc2UgaXQgaW1tZWRpYXRlbHksIHNp bmNlIHdlIGFyZSBhIHdlYWsKKyAgICAgLy8gcmVmZXJlbmNlIGFuZCB3aWxsIGV4cGlyZSBhcyBz b29uIGFzIHRoZSBweXRob24gb2JqZWN0IGRvZXMuCistICAgIFRmX1B5UmVsZWFzZVB5dGhvbklk ZW50aXR5KHNlbGYsIEdldE9iamVjdCgpLnB0cigpKTsKKy0gICAgCisrICAgIFRmX1B5UmVsZWFz ZVB5dGhvbklkZW50aXR5KHNlbGYsIF9yZWZPYmpLZXkpOworKworICAgICAvLyBJbnN0YWxsIHVz IGluIHRoZSByZWdpc3RyeS4KKy0gICAgVGZfUHlXZWFrT2JqZWN0UmVnaXN0cnk6OkdldEluc3Rh bmNlKCkuSW5zZXJ0KEdldE9iamVjdCgpLnB0cigpLCBzZWxmKTsKKysgICAgVGZfUHlXZWFrT2Jq ZWN0UmVnaXN0cnk6OkdldEluc3RhbmNlKCkuSW5zZXJ0KF9yZWZPYmpLZXksIHNlbGYpOworIH0K KyAKKyBQWFJfTkFNRVNQQUNFX0NMT1NFX1NDT1BFCitkaWZmIC0tZ2l0IGEvcHhyL2Jhc2UvdGYv cHlXZWFrT2JqZWN0LmggYi9weHIvYmFzZS90Zi9weVdlYWtPYmplY3QuaAoraW5kZXggMjgzODg3 NzIxYzIuLjRmZTJmMjY3NWZiIDEwMDY0NAorLS0tIGEvcHhyL2Jhc2UvdGYvcHlXZWFrT2JqZWN0 LmgKKysrKyBiL3B4ci9iYXNlL3RmL3B5V2Vha09iamVjdC5oCitAQCAtMzgsOCArMzgsMTQgQEAg c3RydWN0IFRmX1B5V2Vha09iamVjdCA6IHB1YmxpYyBUZldlYWtCYXNlCisgICAgIAorIHByaXZh dGU6CisgICAgIGV4cGxpY2l0IFRmX1B5V2Vha09iamVjdChweHJfYm9vc3Q6OnB5dGhvbjo6b2Jq ZWN0IGNvbnN0ICZvYmopOworLSAgICAKKysKKyAgICAgcHhyX2Jvb3N0OjpweXRob246OmhhbmRs ZTw+IF93ZWFrUmVmOworKworKyAgICAvLyBUaGUgYWRkcmVzcyBvZiB0aGUgcmVmZXJlbnQsIGNh Y2hlZCBhdCBjb25zdHJ1Y3Rpb24gZm9yIHVzZSBhcyB0aGUKKysgICAgLy8gcmVnaXN0cnkga2V5 LiAgQSB3ZWFrIHJlZmVyZW5jZSBpcyBjbGVhcmVkIGJlZm9yZSBpdHMgY2FsbGJhY2sgcnVucywg c28KKysgICAgLy8gdGhlIHJlZmVyZW50IGNhbm5vdCBiZSByZWNvdmVyZWQgZnJvbSBfd2Vha1Jl ZiBieSB0aGUgdGltZSBEZWxldGUoKSBydW5zLgorKyAgICAvLyBVc2VkIG9ubHkgYXMgYSBrZXk7 IG5ldmVyIGRlcmVmZXJlbmNlZC4KKysgICAgUHlPYmplY3QgKl9yZWZPYmpLZXk7CisgfTsKKyAK KyBQWFJfTkFNRVNQQUNFX0NMT1NFX1NDT1BFCgpkaWZmIC0tZ2l0IGEvdXNkLnNwZWMgYi91c2Qu c3BlYwppbmRleCBmNTA1ZWEzLi45NGJlNWVjIDEwMDY0NAotLS0gYS91c2Quc3BlYworKysgYi91 c2Quc3BlYwpAQCAtMTQ4LDEzICsxNDgsMjEgQEAgUGF0Y2g6ICAgICAgICAgIDAwMDYtRG93bnN0 cmVhbS1vbmx5LXVzZS10aGUtc3lzdGVtLWxpYmF2aWYucGF0Y2gKICMgaHR0cHM6Ly9naXRodWIu Y29tL1BpeGFyQW5pbWF0aW9uU3R1ZGlvcy9PcGVuVVNEL3B1bGwvMzkwMwogUGF0Y2g6ICAgICAg ICAgICV7Zm9yZ2V1cmx9L3B1bGwvMzkwMy5wYXRjaAogCi0jIFJlcGxhY2UgUHlXZWFrcmVmX0dl dE9iamVjdCB3aXRoIFB5V2Vha3JlZl9HZXRSZWYKLSMgRml4ZXMgUkhCWiMyNDMzODgxLiBUaGlz IHBhdGNoIGlzIExMTS1nZW5lcmF0ZWQgYW5kIG5lZWRzIGV4cGVydCBodW1hbgotIyByZXZpZXcs IGJ1dCBpdCBhdCBsZWFzdCBidWlsZHMuIFNlZSBkaXNjdXNzaW9uIGluCi0jIGh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MjQzMzg4MS4KLSMgTWVudGlvbmVkIHVw c3RyZWFtIGluCi0jIGh0dHBzOi8vZ2l0aHViLmNvbS9QaXhhckFuaW1hdGlvblN0dWRpb3MvT3Bl blVTRC9pc3N1ZXMvMzk2NiNpc3N1ZWNvbW1lbnQtNTEyODU0MjkxMy4KLVBhdGNoOiAgICAgICAg ICAwMDAxLVJlcGxhY2UtUHlXZWFrcmVmX0dldE9iamVjdC13aXRoLVB5V2Vha3JlZl9HZXRSZWYu cGF0Y2gKKyMgdGY6IFB5dGhvbiAzLjEzIHNpbXVsdGFuZW91c2x5IGRlcHJlY2F0ZXMgUHlXZWFr cmVmX0dldE9iamVjdCBhbmQgaW50cm9kdWNlcworIyBpdHMgcmVwbGFjZW1lbnQgUHlXZWFrcmVm X0dldFJlZi4gIFB5V2Vha3JlZl9HZXRPYmplY3Qgd2lsbCBiZSByZW1vdmVkIGluCisjIFB5dGhv biAzLjE1LiAgQWRkIGEgVGZfUHlXZWFrcmVmR2V0UmVmIHNoaW0gdG8gcHlVdGlscy5oIHRoYXQg Y2FsbHMKKyMgUHlXZWFrUmVmX0dldFJlZiBkaXJlY3RseSBvbiA+PTMuMTMsIGFuZCBtaW1pY3Mg aXRzIGJlaGF2aW9yIG9uIDwzLjEzLiAgUG9ydAorIyBweHIncyBQeVdlYWtyZWZfR2V0T2JqZWN0 IGNhbGxlcnMgdG8gdXNlIFRmX1B5V2Vha3JlZkdldFJlZi4KKyMKKyMgaHR0cHM6Ly9naXRodWIu Y29tL1BpeGFyQW5pbWF0aW9uU3R1ZGlvcy9PcGVuVVNEL2NvbW1pdC9jZDNiOWM5ZjAzMWZkZmFj ZTM0MjNmZjdhODk5OTVkYWRmNGI3M2FhCisjCisjIEZpeGVzOgorIworIyBQeVdlYWtyZWZfR2V0 T2JqZWN0IHJlbW92ZWQgaW4gUHl0aG9uIDMuMTUKKyMgaHR0cHM6Ly9naXRodWIuY29tL1BpeGFy QW5pbWF0aW9uU3R1ZGlvcy9PcGVuVVNEL2lzc3Vlcy8zOTY2CisjCisjIEZpeGVzIFJIQlojMjQz Mzg4MS4KK1BhdGNoOiAgICAgICAgICAle2ZvcmdldXJsfS9jb21taXQvY2QzYjljOWYwMzFmZGZh Y2UzNDIzZmY3YTg5OTk1ZGFkZjRiNzNhYS5wYXRjaAogCiAjIEJhc2UKIEJ1aWxkUmVxdWlyZXM6 ICBnY2MtYysrCg==