From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] fix-dup-patch: Rebase to FSF GDB 7.5.50.20130118 (pre-7.6 snapshot). Date: Thu, 23 Jul 2026 18:30:45 GMT Message-ID: <178483144589.1.5780390853204124031.rpms-gdb-556378e1011b@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 556378e1011b5095688856d9d2e124561b7fe6be QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogNTU2Mzc4ZTEwMTFiNTA5NTY4ODg1NmQ5ZDJlMTI0NTYx YjdmZTZiZQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMy0wMS0xOVQyMzo0MTo1NSswMTowMApTdGF0cyAgOiArMjE3MS8tMTUx MjQgaW4gNTYgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9y cG1zL2dkYi9jLzU1NjM3OGUxMDExYjUwOTU2ODg4NTZkOWQyZTEyNDU2MWI3ZmU2YmU/YnJhbmNo PWZpeC1kdXAtcGF0Y2gKCkxvZzoKUmViYXNlIHRvIEZTRiBHREIgNy41LjUwLjIwMTMwMTE4IChw cmUtNy42IHNuYXBzaG90KS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25v cmUKaW5kZXggMGUxNzdhZC4uNWQ0ZjRiMiAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8u Z2l0aWdub3JlCkBAIC0xLDIgKzEsMiBAQAogL2dkYi1saWJzdGRjKystdjMtcHl0aG9uLXIxNTU5 NzgudGFyLmJ6MgotL2dkYi03LjUuMS50YXIuYnoyCisvZ2RiLTcuNS41MC4yMDEzMDExOC50YXIu YnoyCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1iejIzMTgzMi1vYnN0YWNrLTJnYi5wYXRjaCBiL2dk Yi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2gKaW5kZXggMGIwOGNlZS4uNDQ5NzFhZSAx MDA2NDQKLS0tIGEvZ2RiLTYuMy1iejIzMTgzMi1vYnN0YWNrLTJnYi5wYXRjaAorKysgYi9nZGIt Ni4zLWJ6MjMxODMyLW9ic3RhY2stMmdiLnBhdGNoCkBAIC0xLDI1ICsxLDI5IEBACiBodHRwczov L2J1Z3ppbGxhLnJlZGhhdC5jb20vYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIzMTgzMgogCiAK LUluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9zeW1taXNjLmMKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9zeW1taXNjLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTExMjE4Lm9yaWcvZ2RiL3N5bW1pc2MuYwkyMDExLTA0LTA0IDE3OjE5OjU5LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3N5bW1pc2MuYwkyMDExLTEyLTE5IDAw OjI4OjE4LjE4OTIzMjAxNCArMDEwMAotQEAgLTE0Nyw4ICsxNDcsOCBAQCBwcmludF9vYmpmaWxl X3N0YXRpc3RpY3MgKHZvaWQpCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zeW1t aXNjLmMJMjAxMy0wMS0xOCAyMzo1NDo1Ny40Nzg5NzQyODkgKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9zeW1taXNjLmMJMjAxMy0wMS0xOCAyMzo1NTo0MS42NTA5MzAyNTQgKzAx MDAKK0BAIC0xNDgsMTAgKzE0OCwxMCBAQCBwcmludF9vYmpmaWxlX3N0YXRpc3RpY3MgKHZvaWQp CiAgICAgIGlmIChPQkpTVEFUIChvYmpmaWxlLCBzel9zdHJ0YWIpID4gMCkKICAgICAgICBwcmlu dGZfZmlsdGVyZWQgKF8oIiAgU3BhY2UgdXNlZCBieSBhLm91dCBzdHJpbmcgdGFibGVzOiAlZFxu IiksCiAgCQkgICAgICAgT0JKU1RBVCAob2JqZmlsZSwgc3pfc3RydGFiKSk7CiAtICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiICBUb3RhbCBtZW1vcnkgdXNlZCBmb3Igb2JqZmlsZSBvYnN0YWNrOiAl ZFxuIiksCiAtCQkgICAgIG9ic3RhY2tfbWVtb3J5X3VzZWQgKCZvYmpmaWxlLT5vYmpmaWxlX29i c3RhY2spKTsKKy0gICAgcHJpbnRmX2ZpbHRlcmVkIChfKCIgIFRvdGFsIG1lbW9yeSB1c2VkIGZv ciBCRkQgb2JzdGFjazogJWRcbiIpLAorLQkJICAgICBvYnN0YWNrX21lbW9yeV91c2VkICgmb2Jq ZmlsZS0+cGVyX2JmZC0+c3RvcmFnZV9vYnN0YWNrKSk7CiArICAgIHByaW50Zl9maWx0ZXJlZCAo XygiICBUb3RhbCBtZW1vcnkgdXNlZCBmb3Igb2JqZmlsZSBvYnN0YWNrOiAlbGRcbiIpLAogKwkJ ICAgICAobG9uZykgb2JzdGFja19tZW1vcnlfdXNlZCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aykpOworKyAgICBwcmludGZfZmlsdGVyZWQgKF8oIiAgVG90YWwgbWVtb3J5IHVzZWQgZm9yIEJG RCBvYnN0YWNrOiAlbGRcbiIpLAorKwkJICAgICAobG9uZykgb2JzdGFja19tZW1vcnlfdXNlZCAo Jm9iamZpbGUtPnBlcl9iZmQtPnN0b3JhZ2Vfb2JzdGFjaykpOwogICAgICBwcmludGZfZmlsdGVy ZWQgKF8oIiAgVG90YWwgbWVtb3J5IHVzZWQgZm9yIHBzeW1ib2wgY2FjaGU6ICVkXG4iKSwKICAJ CSAgICAgYmNhY2hlX21lbW9yeV91c2VkIChwc3ltYm9sX2JjYWNoZV9nZXRfYmNhY2hlCiAgCQkg ICAgICAgICAgICAgICAgICAgICAgICAgIChvYmpmaWxlLT5wc3ltYm9sX2NhY2hlKSkpOwotSW5k ZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvaW5jbHVkZS9vYnN0YWNrLmgKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2luY2x1ZGUvb2JzdGFjay5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41 MC4yMDExMTIxOC5vcmlnL2luY2x1ZGUvb2JzdGFjay5oCTIwMTEtMTAtMjIgMDM6MzU6MjkuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9pbmNsdWRlL29ic3RhY2suaAky MDExLTEyLTE5IDAwOjI4OjE4LjE4OTIzMjAxNCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9pbmNsdWRlL29ic3RhY2suaAkyMDEzLTAxLTE4IDIzOjU0OjU3LjQ3ODk3NDI4OSAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvaW5jbHVkZS9vYnN0YWNrLmgJMjAxMy0wMS0x OCAyMzo1NToxMC4yNTY5OTkxODggKzAxMDAKIEBAIC0xODgsMzEgKzE4OCwzMSBAQCBzdHJ1Y3Qg b2JzdGFjawkJLyogY29udHJvbCBjdXJyZW50IG9iamVjCiAgCiAgLyogRGVjbGFyZSB0aGUgZXh0 ZXJuYWwgZnVuY3Rpb25zIHdlIHVzZTsgdGhleSBhcmUgaW4gb2JzdGFjay5jLiAgKi8KQEAgLTEy NSwxMCArMTI5LDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2luY2x1ZGUvb2JzdGFj ay5oCiAgICAgaWYgKF9fby0+Y2h1bmtfbGltaXQgLSBfX28tPm5leHRfZnJlZSA8IF9fbGVuKQkJ CVwKICAgICAgIF9vYnN0YWNrX25ld2NodW5rIChfX28sIF9fbGVuKTsJCQkJCVwKICAgICBvYnN0 YWNrX2JsYW5rX2Zhc3QgKF9fbywgX19sZW4pOwkJCQkJXAotSW5kZXg6IGdkYi03LjQuNTAuMjAx MTEyMTgvbGliaWJlcnR5L29ic3RhY2suYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvbGli aWJlcnR5L29ic3RhY2suYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3Jp Zy9saWJpYmVydHkvb2JzdGFjay5jCTIwMDUtMDUtMTAgMTc6MzM6MzMuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDExMTIxOC9saWJpYmVydHkvb2JzdGFjay5jCTIwMTEtMTItMTkg MDA6Mjg6MTguMTkxMjMyMDA2ICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2xp YmliZXJ0eS9vYnN0YWNrLmMJMjAxMy0wMS0xOCAyMzo1NDo1Ny40Nzg5NzQyODkgKzAxMDAKKysr KyBnZGItNy41LjUwLjIwMTMwMTE4L2xpYmliZXJ0eS9vYnN0YWNrLmMJMjAxMy0wMS0xOCAyMzo1 NToxMC4yNTY5OTkxODggKzAxMDAKIEBAIC00NCw5ICs0NCwxMSBAQAogICNpZiAhZGVmaW5lZCAo X0xJQkMpICYmIGRlZmluZWQgKF9fR05VX0xJQlJBUllfXykgJiYgX19HTlVfTElCUkFSWV9fID4g MQogICNpbmNsdWRlIDxnbnUtdmVyc2lvbnMuaD4KCmRpZmYgLS1naXQgYS9nZGItNi4zLWlhNjQt Z2NvcmUtcGFnZTAtMjAwNTA0MjEucGF0Y2ggYi9nZGItNi4zLWlhNjQtZ2NvcmUtcGFnZTAtMjAw NTA0MjEucGF0Y2gKaW5kZXggZWNkZmJhZS4uYzJjMDAyNiAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1p YTY0LWdjb3JlLXBhZ2UwLTIwMDUwNDIxLnBhdGNoCisrKyBiL2dkYi02LjMtaWE2NC1nY29yZS1w YWdlMC0yMDA1MDQyMS5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4yLjUwLjIw MTEwMTA3L2dkYi9nY29yZS5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2NvcmUu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMDcub3JpZy9nZGIvZ2NvcmUuYwky MDExLTAxLTA1IDIzOjIyOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAx MDcvZ2RiL2djb3JlLmMJMjAxMS0wMS0wNyAwOTowNDoyOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC01 MzQsOCArNTM0LDE0IEBAIGdjb3JlX2NvcHlfY2FsbGJhY2sgKGJmZCAqb2JmZCwgYXNlY3Rpb24K Ky0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2djb3JlLmMJMjAxMy0wMS0xOCAyMzo1 MDo1Ni42OTg1NzMxODYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9nY29yZS5j CTIwMTMtMDEtMTggMjM6NTI6MjkuNjM2NzA1MDQwICswMTAwCitAQCAtNTQ5LDggKzU0OSwxNCBA QCBnY29yZV9jb3B5X2NhbGxiYWNrIChiZmQgKm9iZmQsIGFzZWN0aW9uCiAgICAgICAgaWYgKHNp emUgPiB0b3RhbF9zaXplKQogIAlzaXplID0gdG90YWxfc2l6ZTsKICAKQEAgLTEyLDcgKzEyLDcg QEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMDcvZ2RiL2djb3JlLmMKICAgICAgICBpZiAodGFy Z2V0X3JlYWRfbWVtb3J5IChiZmRfc2VjdGlvbl92bWEgKG9iZmQsIG9zZWMpICsgb2Zmc2V0LAog LQkJCSAgICAgIG1lbWh1bmssIHNpemUpICE9IDApCiArCQkJICAgICAgbWVtaHVuaywgc2l6ZSkg IT0gMAotKwkgICYmIChzdHJjbXAgKGdkYmFyY2hfYmZkX2FyY2hfaW5mbyAodGFyZ2V0X2dkYmFy Y2gpLT5hcmNoX25hbWUsCisrCSAgJiYgKHN0cmNtcCAoZ2RiYXJjaF9iZmRfYXJjaF9pbmZvICh0 YXJnZXRfZ2RiYXJjaCAoKSktPmFyY2hfbmFtZSwKICsJCSAgICAgICJpYTY0IikKICsJICAgICAg fHwgYmZkX3NlY3Rpb25fdm1hIChvYmZkLCBvc2VjKSAhPSAwKSkKICAJewoKZGlmZiAtLWdpdCBh L2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAw NTA5MDcucGF0Y2gKaW5kZXggNzcyODA3MC4uMzE0YmU0NCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1y ZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcu cGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAogCiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUg T3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEy MDcwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv ZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmln L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNy0wMyAxNzozMDowNy4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wNy0wMyAx NzozMTo0MC42OTU2NDI0NDkgKzAyMDAKLUBAIC0xMDIzLDYgKzEwMjMsMTIgQEAgUmVhZCBlYWNo IHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgu b3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDEtMTggMjI6NTQ6MjIuNTIxMTU1NTI3ICsw MTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTMtMDEt MTggMjI6NTg6MTUuMDY0NTk2NTgwICswMTAwCitAQCAtMTAyNiw2ICsxMDI2LDEyIEBAIFJlYWQg ZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wgdGEKICB0aGUgZGVmYXVsdCwgd2hpY2gg aXMgdG8gcmVhZCBpdCBpbmNyZW1lbnRhbGx5IGFzIGl0IGlzIG5lZWRlZC4KICBUaGlzIG1ha2Vz IHN0YXJ0dXAgc2xvd2VyLCBidXQgbWFrZXMgZnV0dXJlIG9wZXJhdGlvbnMgZmFzdGVyLgogIApA QCAtMjgsMTEgKzI4LDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9kb2MvZ2Ri LnRleGluZm8KICBAZW5kIHRhYmxlCiAgCiAgQG5vZGUgTW9kZSBPcHRpb25zCi1JbmRleDogZ2Ri LTcuNC41MC4yMDEyMDcwMy9nZGIvbWFpbi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvbWFpbi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9t YWluLmMJMjAxMi0wNy0wMyAxNzozMDowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUw LjIwMTIwNzAzL2dkYi9tYWluLmMJMjAxMi0wNy0wMyAxNzozMTo0MC42OTY2NDI0NDggKzAyMDAK LUBAIC00MTQsNiArNDE0LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL21haW4uYwkyMDEzLTAxLTE4IDIyOjU0OjIyLjUyMzE1 NTUzMSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21haW4uYwkyMDEzLTAxLTE4 IDIyOjU4OjE1LjA2NTU5NjU5OCArMDEwMAorQEAgLTQ0NSw2ICs0NDUsNyBAQCBjYXB0dXJlZF9t YWluICh2b2lkICpkYXRhKQogICAgICAgIHsieGRiIiwgbm9fYXJndW1lbnQsICZ4ZGJfY29tbWFu ZHMsIDF9LAogICAgICAgIHsiZGJ4Iiwgbm9fYXJndW1lbnQsICZkYnhfY29tbWFuZHMsIDF9LAog ICAgICAgIHsicmVhZG5vdyIsIG5vX2FyZ3VtZW50LCAmcmVhZG5vd19zeW1ib2xfZmlsZXMsIDF9 LApAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvbWFpbi5j CiAgICAgICAgeyJyIiwgbm9fYXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCiAg ICAgICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAogICAgICAgIHsicSIsIG5v X2FyZ3VtZW50LCAmcXVpZXQsIDF9LAotQEAgLTExMzEsNiArMTEzMiw3IEBAIE9wdGlvbnM6XG5c blwKK0BAIC0xMTY0LDYgKzExNjUsNyBAQCBPcHRpb25zOlxuXG5cCiAgICBmcHV0c191bmZpbHRl cmVkIChfKCJcCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNpb24gbnVt YmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1i b2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXApAQCAtNDgsMzEgKzQ4LDMxIEBAIEluZGV4OiBn ZGItNy40LjUwLjIwMTIwNzAzL2dkYi9tYWluLmMKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3Vu ZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wg ZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMv Z2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3N5bWZpbGUuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvc3ltZmlsZS5jCTIw MTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcw My9nZGIvc3ltZmlsZS5jCTIwMTItMDctMDMgMTc6MzE6NDAuNjk3NjQyNDQ3ICswMjAwCistLS0g Z2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMy0wMS0xOCAyMjo1ODox NS4wNjU1OTY1OTggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zeW1maWxlLmMJ MjAxMy0wMS0xOCAyMjo1ODozMS4yNDk2MTk1OTcgKzAxMDAKIEBAIC04MSw2ICs4MSw3IEBAIHN0 YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFy aWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZS4gICovCiAgaW50IHJlYWRub3dfc3ltYm9sX2ZpbGVz OwkvKiBSZWFkIGZ1bGwgc3ltYm9scyBpbW1lZGlhdGVseS4gICovCiAraW50IHJlYWRuZXZlcl9z eW1ib2xfZmlsZXM7CS8qIE5ldmVyIHJlYWQgZnVsbCBzeW1ib2xzLiAgKi8KICAKLSAvKiBFeHRl cm5hbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAgKi8KKyAvKiBGdW5jdGlv bnMgdGhpcyBmaWxlIGRlZmluZXMuICAqLwogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMv Z2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2R3YXJmMnJl YWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvZHdhcmYy cmVhZC5jCTIwMTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDcwMy9nZGIvZHdhcmYycmVhZC5jCTIwMTItMDctMDMgMTc6MzE6NTMuNDIxNjI3MTUz ICswMjAwCi1AQCAtNjUsNiArNjUsNyBAQAotICNpbmNsdWRlICJnZGIvZ2RiLWluZGV4LmgiCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMy0wMS0xOCAy Mjo1NDoyMi41MjgxNTU1NDUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2Fy ZjJyZWFkLmMJMjAxMy0wMS0xOCAyMjo1OTowOC45NDA2NzQwMzUgKzAxMDAKK0BAIC02Nyw2ICs2 Nyw3IEBACiAgI2luY2x1ZGUgPGN0eXBlLmg+CiAgI2luY2x1ZGUgImdkYl9iZmQuaCIKKyAjaW5j bHVkZSAiZi1sYW5nLmgiCiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRlIDxmY250bC5o PgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTU4Nyw4ICsxNTg4LDkgQEAgZHdhcmYy X2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTE3ODIsOCArMTc4Myw5IEBA IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICh2b2lkICopIG5hbWVzKTsKICAgICAgICBkd2FyZjJfcGVyX29iamZp bGUtPm9iamZpbGUgPSBvYmpmaWxlOwogICAgICB9CkBAIC04NCwxMSArODQsMTEgQEAgSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2R3YXJmMnJlYWQuYwogIH0KICAKICAvKiBXaGVuIGxv YWRpbmcgc2VjdGlvbnMsIHdlIGxvb2sgZWl0aGVyIGZvciB1bmNvbXByZXNzZWQgc2VjdGlvbiBv ciBmb3IKLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90b3AuaAorSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL3RvcC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEy MDcwMy5vcmlnL2dkYi90b3AuaAkyMDEyLTAxLTIzIDE4OjEyOjMwLjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3RvcC5oCTIwMTItMDctMDMgMTc6MzE6NDAuNzAw NjQyNDQ0ICswMjAwCi1AQCAtNjAsNiArNjAsNyBAQCBleHRlcm4gdm9pZCBzZXRfcHJvbXB0IChj b25zdCBjaGFyICpzKTsKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3RvcC5oCTIw MTMtMDEtMTggMjI6NTQ6MjIuNTI4MTU1NTQ1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdG9wLmgJMjAxMy0wMS0xOCAyMjo1ODoxNS4wNjk1OTY2NTcgKzAxMDAKK0BAIC01OCw2 ICs1OCw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIgKnMpOwogIAogIC8q IEZyb20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGludCByZWFkbm93X3N5bWJvbF9maWxl czsKCmRpZmYgLS1naXQgYS9nZGItNi41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3Vw LWxvY2stZml4LnBhdGNoIGIvZ2RiLTYuNS1iejIxODM3OS1zb2xpYi10cmFtcG9saW5lLWxvb2t1 cC1sb2NrLWZpeC5wYXRjaAppbmRleCAwODJiOWEwLi42ODM5Njc4IDEwMDY0NAotLS0gYS9nZGIt Ni41LWJ6MjE4Mzc5LXNvbGliLXRyYW1wb2xpbmUtbG9va3VwLWxvY2stZml4LnBhdGNoCisrKyBi L2dkYi02LjUtYnoyMTgzNzktc29saWItdHJhbXBvbGluZS1sb29rdXAtbG9jay1maXgucGF0Y2gK QEAgLTEsMTEgKzEsMTEgQEAKIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9idWd6aWxsYS9z aG93X2J1Zy5jZ2k/aWQ9MjE4Mzc5CiAKIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2Ri L3N5bXRhYi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3ltdGFiLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTEtMDEt MTcgMTU6NDc6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIv c3ltdGFiLmMJMjAxMS0wMS0xNyAxNTo1MTo0OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0yMDE1LDYg KzIwMTUsMTMgQEAgZmluZF9wY19zZWN0X2xpbmUgKENPUkVfQUREUiBwYywgc3RydWN0IAorLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvc3ltdGFiLmMJMjAxMy0wMS0xOCAyMzo1Mzoy Mi4wMDk3OTc3ODggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zeW10YWIuYwky MDEzLTAxLTE4IDIzOjUzOjUxLjA0NDg0Njc3NyArMDEwMAorQEAgLTIzNTYsNiArMjM1NiwxMyBA QCBmaW5kX3BjX3NlY3RfbGluZSAoQ09SRV9BRERSIHBjLCBzdHJ1Y3QKICAJICAgICBTWU1CT0xf TElOS0FHRV9OQU1FIChtc3ltYm9sKSk7ICovCiAgCSAgOwogIAkvKiBmYWxsIHRocm91Z2ggKi8K QEAgLTE0LDcgKzE0LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3N5bXRhYi5j CiArCSAgIEF2b2lkIGBmaW5kX3BjX3NlY3RfbGluZSc8LT5gZmluZF9wY19saW5lJyBpbmZpbml0 ZSBsb29wLgogKwkgICBSZWQgSGF0IEJ1ZyAyMTgzNzkuICAqLwogKwllbHNlIGlmIChTWU1CT0xf VkFMVUUgKG1mdW5zeW0pID09IHBjKQotKwkgIHdhcm5pbmcgKCJJbiBzdHViIGZvciAlcyAoMHgl cyk7IGludGVybG9ja2VkLCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8gaHR0cDovL2J1Z3pp bGxhLnJlZGhhdC5jb20iLCBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwgcGFkZHJlc3Mg KHRhcmdldF9nZGJhcmNoLCBwYykpOworKwkgIHdhcm5pbmcgKCJJbiBzdHViIGZvciAlcyAoMHgl cyk7IGludGVybG9ja2VkLCBwbGVhc2Ugc3VibWl0IHRoZSBiaW5hcnkgdG8gaHR0cDovL2J1Z3pp bGxhLnJlZGhhdC5jb20iLCBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwgcGFkZHJlc3Mg KHRhcmdldF9nZGJhcmNoICgpLCBwYykpOwogKwkvKiBmYWxsIHRocm91Z2ggKi8KICAJZWxzZQog IAkgIHJldHVybiBmaW5kX3BjX2xpbmUgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtZnVuc3ltKSwg MCk7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLWlzLWRlZmF1 bHQucGF0Y2ggYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRj aAppbmRleCBiZmM4ZTk2Li4xMTMyNDQ5IDEwMDY0NAotLS0gYS9nZGItNi42LXNjaGVkdWxlcl9s b2NraW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9sb2Nr aW5nLXN0ZXAtaXMtZGVmYXVsdC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy40 LjUwLjIwMTIwNzAzL2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L2luZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi9p bmZydW4uYwkyMDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2NSArMDIwMAotKysrIGdkYi03LjQu NTAuMjAxMjA3MDMvZ2RiL2luZnJ1bi5jCTIwMTItMDctMDMgMjA6MjY6MzIuODA4OTI5ODYwICsw MjAwCi1AQCAtMTU5MSw3ICsxNTkxLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHNjaGVk dWxlcl9lbnVtcworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvaW5mcnVuLmMJMjAx My0wMS0xOSAyMDo1NjozNC4xNDI5MTc0MTYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9pbmZydW4uYwkyMDEzLTAxLTE5IDIwOjU2OjM0LjY2MjkxODQ3NCArMDEwMAorQEAgLTE2 MjgsNyArMTYyOCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzY2hlZHVsZXJfZW51bXMK ICAgIHNjaGVkbG9ja19zdGVwLAogICAgTlVMTAogIH07CkBAIC0xMSwzOSArMTEsMTEgQEAgSW5k ZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2luZnJ1bi5jCiAgc3RhdGljIHZvaWQKICBzaG93 X3NjaGVkdWxlcl9tb2RlIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAogIAkJ ICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi1JbmRl eDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4 cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xp LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAkyMDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2NSAr MDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY29u c29sZS5leHAJMjAxMi0wNy0wMyAyMDoyNjozMi44MDk5Mjk4NTggKzAyMDAKLUBAIC00Niw2ICs0 Niw5IEBAIGlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8KLSAKLSBtaV9y dW5fdG9fbWFpbgotIAotKyMgdGhyZWFkLWlkPVwiYWxsXCIgdnMuIHRocmVhZC1pZD1cIjFcIiBi ZWxvdzoKLSttaV9nZGJfdGVzdCAiMjEwLWdkYi1zZXQgc2NoZWR1bGVyLWxvY2tpbmcgb2ZmIiAi MjEwXFxeZG9uZSIgInNldCBzY2hlZHVsZXItbG9ja2luZyBvZmYiCi0rCi0gIyBOZXh0IG92ZXIg dGhlIGhlbGxvKCkgY2FsbCB3aGljaCB3aWxsIHByb2R1Y2UgbG90cyBvZiBvdXRwdXQKLSBtaV9n ZGJfdGVzdCAiMjIwLWV4ZWMtbmV4dCIgXAotIAkgICAgIjIyMFxcXnJ1bm5pbmcoXHJcblxcKnJ1 bm5pbmcsdGhyZWFkLWlkPVwiYWxsXCIpPyIgXAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi1jb25zb2xlLmV4 cAkyMDEyLTA3LTAzIDIwOjI2OjI1LjA2MDk0MDc2NSArMDIwMAotKysrIGdkYi03LjQuNTAuMjAx MjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLWNvbnNvbGUuZXhwCTIwMTItMDctMDMgMjA6 MjY6MzIuODA5OTI5ODU4ICswMjAwCi1AQCAtNDYsNiArNDYsOSBAQCBpZiAgeyBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vCi0gCi0gbWlfcnVuX3RvX21haW4KLSAKLSsjIHRocmVh ZC1pZD1cImFsbFwiIHZzLiB0aHJlYWQtaWQ9XCIxXCIgYmVsb3c6Ci0rbWlfZ2RiX3Rlc3QgIjIx MC1nZGItc2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIgIjIxMFxcXmRvbmUiICJzZXQgc2NoZWR1 bGVyLWxvY2tpbmcgb2ZmIgotKwotICMgTmV4dCBvdmVyIHRoZSBoZWxsbygpIGNhbGwgd2hpY2gg d2lsbCBwcm9kdWNlIGxvdHMgb2Ygb3V0cHV0Ci0gbWlfZ2RiX3Rlc3QgIjIyMC1leGVjLW5leHQi ICIyMjBcXF5ydW5uaW5nKFxyXG4pPyhcXCpydW5uaW5nLHRocmVhZC1pZD1cImFsbFwiKT8iIFwK LSAJIlN0YXJ0ZWQgc3RlcCBvdmVyIGhlbGxvIgotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMv Z2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTItMDct MDMgMjA6MjY6MjUuMDYwOTQwNzY1ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5taS9taS1jbGkuZXhwCTIwMTItMDctMDMgMjA6MjY6MzIuODEwOTI5ODU2 ICswMjAwCi1AQCAtMTc1LDcgKzE3NSw3IEBAIG1pX2V4ZWN1dGVfdG8gImV4ZWMtY29udGludWUi ICJicmVha3BvaW4KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIubWkvbWktY2xpLmV4cAkyMDEzLTAxLTAxIDA3OjQxOjI0LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAkyMDEz LTAxLTE5IDIwOjU2OjM0LjY2MjkxODQ3NCArMDEwMAorQEAgLTE2Myw3ICsxNjMsNyBAQCBtaV9l eGVjdXRlX3RvICJleGVjLWNvbnRpbnVlIiAiYnJlYWtwb2luCiAgIyBUZXN0IHRoYXQgdGhlIHRv a2VuIGlzIG91dHB1dCBldmVuIGZvciBDTEkgY29tbWFuZHMKICAjIEFsc28gdGVzdCB0aGF0ICpz dG9wcGVkIGluY2x1ZGVzIGZyYW1lIGluZm9ybWF0aW9uLgogIG1pX2dkYl90ZXN0ICIzNCBuZXh0 IiBcCkBAIC01MiwxMSArMjQsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWktY2xpLmV4cAogICAgICAiMzQgbmV4dDogcnVuIgogIAogIGlmIHsh JGFzeW5jfSB7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taS1sb2dnaW5nLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIubWkvbWktbG9nZ2luZy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw NzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5leHAJMjAxMi0wNi0yOSAw MDoxMToyMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLm1pL21pLWxvZ2dpbmcuZXhwCTIwMTItMDctMDMgMjA6Mjk6MDMuNTczNzE3NjUx ICswMjAwCi1AQCAtNTYsNyArNTYsNyBAQCBjbG9zZSAkY2hhbgorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1sb2dnaW5nLmV4cAkyMDEzLTAxLTAx IDA3OjQxOjI0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWktbG9nZ2luZy5leHAJMjAxMy0wMS0xOSAyMDo1NjozNC42NjI5MTg0 NzQgKzAxMDAKK0BAIC01Myw3ICs1Myw3IEBAIGNsb3NlICRjaGFuCiAgCiAgc2V0IG1pX2xvZ19w cm9tcHQgIlxbKFxdZ2RiXFspXF0gXFtcclxuXF0rIgogIApAQCAtNjUsNyArMzcsNyBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1sb2dnaW5nLmV4 cAogICAgICBwYXNzICJMb2cgZmlsZSBjb250ZW50cyIKICB9IGVsc2UgewogICAgICBmYWlsICJM b2cgZmlsZSBjb250ZW50cyIKLUBAIC03OSw3ICs3OSw3IEBAIHNldCBjaGFuIFtvcGVuICRtaWxv Z2ZpbGVdCitAQCAtNzYsNyArNzYsNyBAQCBzZXQgY2hhbiBbb3BlbiAkbWlsb2dmaWxlXQogIHNl dCBsb2djb250ZW50IFtyZWFkICRjaGFuXQogIGNsb3NlICRjaGFuCiAgCkBAIC03NCwzICs0Niwx NyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1s b2dnaW5nLmV4cAogICAgICBwYXNzICJSZWRpcmVjdCBsb2cgZmlsZSBjb250ZW50cyIKICB9IGVs c2UgewogICAgICBmYWlsICJSZWRpcmVjdCBsb2cgZmlsZSBjb250ZW50cyIKK0luZGV4OiBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLWNvbnNvbGUuZXhwCis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLWNvbnNvbGUuZXhwCTIwMTMtMDEtMDEgMDc6NDE6MjQuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS1jb25zb2xlLmV4cAky MDEzLTAxLTE5IDIwOjU2OjU1Ljc4Mzk2MTE0NSArMDEwMAorQEAgLTQ1LDYgKzQ1LDkgQEAgaWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LworIAorIG1pX3J1bl90b19tYWlu CisgCisrIyB0aHJlYWQtaWQ9XCJhbGxcIiB2cy4gdGhyZWFkLWlkPVwiMVwiIGJlbG93OgorK21p X2dkYl90ZXN0ICIyMTAtZ2RiLXNldCBzY2hlZHVsZXItbG9ja2luZyBvZmYiICIyMTBcXF5kb25l IiAic2V0IHNjaGVkdWxlci1sb2NraW5nIG9mZiIKKysKKyAjIE5leHQgb3ZlciB0aGUgaGVsbG8o KSBjYWxsIHdoaWNoIHdpbGwgcHJvZHVjZSBsb3RzIG9mIG91dHB1dAorIG1pX2dkYl90ZXN0ICIy MjAtZXhlYy1uZXh0IiBcCisgCSAgICAiMjIwXFxecnVubmluZyhcclxuXFwqcnVubmluZyx0aHJl YWQtaWQ9XCJhbGxcIik/IiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1w cnBzaW5mby5wYXRjaCBiL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0Y2gKaW5k ZXggNTEwNzFmNC4uMDM3NTU2ZiAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1w cnBzaW5mby5wYXRjaAorKysgYi9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNo CkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvYmZkL2VsZi1iZmQu aAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvYmZkL2VsZi1iZmQuaAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9iZmQvZWxmLWJmZC5oCTIwMTItMDYtMDIgMjE6 MjY6MDkuOTI4NzE3MDY5ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9iZmQvZWxmLWJm ZC5oCTIwMTItMDYtMDIgMjE6Mjc6MjEuNzI3Njg5NjI1ICswMjAwCi1AQCAtMjIyMSw4ICsyMjIx LDEwIEBAIGV4dGVybiBFbGZfSW50ZXJuYWxfUGhkciAqIF9iZmRfZWxmX2ZpbmQKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvYmZkL2VsZi1iZmQuaAkyMDEzLTAxLTE4IDIzOjAyOjU0Ljgw OTAwNDQ3MyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvYmZkL2VsZi1iZmQuaAkyMDEz LTAxLTE4IDIzOjAyOjU5LjMxNjAxMDc1NSArMDEwMAorQEAgLTIyNDIsOCArMjI0MiwxMCBAQCBl eHRlcm4gRWxmX0ludGVybmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCiAgLyogRXhwb3J0ZWQgaW50 ZXJmYWNlIGZvciB3cml0aW5nIGVsZiBjb3JlZmlsZSBub3Rlcy4gKi8KICBleHRlcm4gY2hhciAq ZWxmY29yZV93cml0ZV9ub3RlCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICosIGNvbnN0IGNoYXIg KiwgaW50LCBjb25zdCB2b2lkICosIGludCk7CkBAIC0xNCwxMSArMTQsMTEgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvYmZkL2VsZi1iZmQuaAogIGV4dGVybiBjaGFyICplbGZjb3JlX3dy aXRlX3Byc3RhdHVzCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcsIGludCwgY29uc3Qg dm9pZCAqKTsKICBleHRlcm4gY2hhciAqIGVsZmNvcmVfd3JpdGVfcHN0YXR1cwotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvYmZkL2VsZi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9i ZmQvZWxmLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvYmZkL2Vs Zi5jCTIwMTItMDYtMDIgMjE6MjY6MDkuOTI4NzE3MDY5ICswMjAwCi0rKysgZ2RiLTcuNC41MC4y MDEyMDYwMi9iZmQvZWxmLmMJMjAxMi0wNi0wMiAyMToyNzoyMS43MzI2ODk2MjMgKzAyMDAKLUBA IC04OTE3LDU2ICs4OTE3LDYxIEBAIGNoYXIgKgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9iZmQvZWxmLmMJMjAxMy0wMS0xOCAyMzowMjo1NC44MTIwMDQ0NzkgKzAxMDAKKysrKyBnZGIt Ny41LjUwLjIwMTMwMTE4L2JmZC9lbGYuYwkyMDEzLTAxLTE4IDIzOjAyOjU5LjMxOTAxMDgzNiAr MDEwMAorQEAgLTkxMDMsNTYgKzkxMDMsNjEgQEAgY2hhciAqCiAgZWxmY29yZV93cml0ZV9wcnBz aW5mbyAoYmZkICAqYWJmZCwKICAJCQljaGFyICpidWYsCiAgCQkJaW50ICAqYnVmc2l6LApAQCAt MTAzLDExICsxMDMsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvYmZkL2VsZi5jCiAg CiAgICBmcmVlIChidWYpOwogICAgcmV0dXJuIE5VTEw7Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvcHJvY2ZzLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wcm9jZnMu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvcHJvY2ZzLmMJ MjAxMi0wNi0wMiAyMToyNjowOS45Mjg3MTcwNjkgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9wcm9jZnMuYwkyMDEyLTA2LTAyIDIxOjI3OjIxLjc0NTY4OTYxOCArMDIwMAotQEAg LTU1NDEsNiArNTU0MSw3IEBAIHByb2Nmc19tYWtlX25vdGVfc2VjdGlvbiAoYmZkICpvYmZkLCBp bnQKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Byb2Nmcy5jCTIwMTMtMDEtMTgg MjM6MDI6NTQuODE1MDA0NDg3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcHJv Y2ZzLmMJMjAxMy0wMS0xOCAyMzowMjo1OS4zMjAwMTA4NjEgKzAxMDAKK0BAIC01NTAyLDYgKzU1 MDIsNyBAQCBwcm9jZnNfbWFrZV9ub3RlX3NlY3Rpb24gKGJmZCAqb2JmZCwgaW50CiAgICBub3Rl X2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChvYmZkLAogIAkJCQkJICAg ICAgIG5vdGVfZGF0YSwKICAJCQkJCSAgICAgICBub3RlX3NpemUsCkBAIC0xMTUsMTkgKzExNSwx OSBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvcHJvY2ZzLmMKICAJCQkJCSAgICAg ICBmbmFtZSwKICAJCQkJCSAgICAgICBwc2FyZ3MpOwogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAx MjA2MDIvZ2RiL2xpbnV4LXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2xp bnV4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIv bGludXgtdGRlcC5jCTIwMTItMDYtMDIgMjE6MjY6MDkuOTI4NzE3MDY5ICswMjAwCi0rKysgZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtdGRlcC5jCTIwMTItMDYtMDIgMjE6MzE6MTIuMDUx NjAxNTEwICswMjAwCi1AQCAtMzAsNiArMzAsNyBAQAotICNpbmNsdWRlICJlbGYtYmZkLmgiICAg ICAgICAgICAgLyogZm9yIGVsZmNvcmVfd3JpdGVfKiAqLwotICNpbmNsdWRlICJpbmZlcmlvci5o IgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbGludXgtdGRlcC5jCTIwMTMtMDEt MTggMjM6MDI6NTQuODE2MDA0NDg5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv bGludXgtdGRlcC5jCTIwMTMtMDEtMTggMjM6MDM6MTAuNzI3MDI3MzE3ICswMTAwCitAQCAtMzIs NiArMzIsNyBAQAogICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisgI2luY2x1ZGUgImFyY2gt dXRpbHMuaCIKKyAjaW5jbHVkZSAiZ2RiX29ic3RhY2suaCIKICsjaW5jbHVkZSA8c3lzL3Byb2Nm cy5oPgogIAogICNpbmNsdWRlIDxjdHlwZS5oPgogIAotQEAgLTc2OSw2ICs3NzAsMTMxIEBAIGxp bnV4X2NvcmVmaWxlX3RocmVhZF9jYWxsYmFjayAoc3RydWN0IHQKK0BAIC0xMTUzLDYgKzExNTQs MTMxIEBAIGxpbnV4X2NvcmVmaWxlX3RocmVhZF9jYWxsYmFjayAoc3RydWN0IHQKICAgIHJldHVy biAhYXJncy0+bm90ZV9kYXRhOwogIH0KICAKQEAgLTI1OSw3ICsyNTksNyBAQCBJbmRleDogZ2Ri LTcuNC41MC4yMDEyMDYwMi9nZGIvbGludXgtdGRlcC5jCiAgLyogRmlsbHMgdGhlICJ0b19tYWtl X2NvcmVmaWxlX25vdGUiIHRhcmdldCB2ZWN0b3IuICBCdWlsZHMgdGhlIG5vdGUKICAgICBzZWN0 aW9uIGZvciBhIGNvcmVmaWxlLCBhbmQgcmV0dXJucyBpdCBpbiBhIG1hbGxvYyBidWZmZXIuICAq LwogIAotQEAgLTc4NCwxNiArOTEwLDkgQEAgbGludXhfbWFrZV9jb3JlZmlsZV9ub3RlcyAoc3Ry dWN0IGdkYmFyYworQEAgLTExNjgsMTYgKzEyOTQsOSBAQCBsaW51eF9tYWtlX2NvcmVmaWxlX25v dGVzIChzdHJ1Y3QgZ2RiYXJjCiAgICAvKiBQcm9jZXNzIGluZm9ybWF0aW9uLiAgKi8KICAgIGlm IChnZXRfZXhlY19maWxlICgwKSkKICAgICAgewoKZGlmZiAtLWdpdCBhL2dkYi02LjgtcXVpdC1u ZXZlci1hYm9ydHMucGF0Y2ggYi9nZGItNi44LXF1aXQtbmV2ZXItYWJvcnRzLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzE1NTdmLi4wMDAwMDAwCi0tLSBhL2dkYi02Ljgt cXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi1X ZSBtYXkgYWJvcnQgdGhlIHByb2Nlc3Mgb2YgZGV0YWNoaW5nIHRocmVhZHMgd2l0aCBtdWx0aXBs ZSBTSUdJTlRzIC0gd2hpY2ggYXJlCi1iZWluZyBzZW50IGR1cmluZyBhIHRlc3RjYXNlIHRlcm1p bmF0aW5nIGl0cyBjaGlsZCBHREIuCi0KLVNvbWUgb2YgdGhlIHRocmVhZHMgbWF5IG5vdCBiZSBw cm9wZXJseSBQVFJBQ0VfREVUQUNIZWQgd2hpY2ggaHVydHMgaWYgdGhleQotc2hvdWxkIGhhdmUg YmVlbiBkZXRhY2hlZCB3aXRoIFNJR1NUT1AgKGFzIHRoZXkgYXJlIGFjY2lkZW50YWxseSBsZWZ0 IHJ1bm5pbmcKLW9uIHRoZSBkZWJ1Z2dlciB0ZXJtaW5hdGlvbikuCi0KLUluZGV4OiBnZGItNy4y LjUwLjIwMTEwMTE3L2dkYi9kZWZzLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEw MTE3Lm9yaWcvZ2RiL2RlZnMuaAkyMDExLTAxLTE3IDE1OjQ3OjM3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2RlZnMuaAkyMDExLTAxLTE3IDE1OjUzOjA1LjAw MDAwMDAwMCArMDEwMAotQEAgLTE2NSw2ICsxNjUsNyBAQCBleHRlcm4gY2hhciAqcHl0aG9uX2xp YmRpcjsKLSBleHRlcm4gY2hhciAqZGVidWdfZmlsZV9kaXJlY3Rvcnk7Ci0gCi0gZXh0ZXJuIGlu dCBxdWl0X2ZsYWc7Ci0rZXh0ZXJuIGludCBxdWl0X2ZsYWdfY2xlYW51cDsKLSBleHRlcm4gaW50 IGltbWVkaWF0ZV9xdWl0OwotIGV4dGVybiBpbnQgc2V2ZW5iaXRfc3RyaW5nczsKLSAKLUBAIC0x NzgsNyArMTc5LDcgQEAgZXh0ZXJuIHZvaWQgcXVpdCAodm9pZCk7Ci0gICAgbmVlZGVkLiAgKi8K LSAKLSAjZGVmaW5lIFFVSVQgeyBcCi0tICBpZiAocXVpdF9mbGFnKSBxdWl0ICgpOyBcCi0rICBp ZiAocXVpdF9mbGFnICYmICFxdWl0X2ZsYWdfY2xlYW51cCkgcXVpdCAoKTsgXAotICAgaWYgKGRl cHJlY2F0ZWRfaW50ZXJhY3RpdmVfaG9vaykgZGVwcmVjYXRlZF9pbnRlcmFjdGl2ZV9ob29rICgp OyBcCi0gfQotIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2V2ZW50LXRvcC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9ldmVudC10b3AuYwky MDExLTAxLTE3IDE1OjUyOjM5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAx MTcvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDEtMTcgMTU6NTI6NDkuMDAwMDAwMDAwICswMTAwCi1A QCAtOTA0LDcgKzkwNCw3IEBAIGFzeW5jX3JlcXVlc3RfcXVpdCAoZ2RiX2NsaWVudF9kYXRhIGFy ZykKLSAgICAgIGlzIG5vIHJlYXNvbiB0byBjYWxsIHF1aXQgYWdhaW4gaGVyZSwgdW5sZXNzIGlt bWVkaWF0ZV9xdWl0IGlzCi0gICAgICBzZXQuICAqLwotIAotLSAgaWYgKHF1aXRfZmxhZyB8fCBp bW1lZGlhdGVfcXVpdCkKLSsgIGlmICgocXVpdF9mbGFnIHx8IGltbWVkaWF0ZV9xdWl0KSAmJiAh cXVpdF9mbGFnX2NsZWFudXApCi0gICAgIHF1aXQgKCk7Ci0gfQotIAotSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAxMTcvZ2RiL3RvcC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDEx Ny5vcmlnL2dkYi90b3AuYwkyMDExLTAxLTE3IDE1OjQ3OjM3LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3RvcC5jCTIwMTEtMDEtMTcgMTU6NTI6NDkuMDAwMDAw MDAwICswMTAwCi1AQCAtMTI1Nyw3ICsxMjU3LDkgQEAgcXVpdF9mb3JjZSAoY2hhciAqYXJncywg aW50IGZyb21fdHR5KQotICAgcXQuYXJncyA9IGFyZ3M7Ci0gICBxdC5mcm9tX3R0eSA9IGZyb21f dHR5OwotIAotLSAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1aXQgZXJyb3JzIGFuZCBleGl0 IHJlZ2FyZGxlc3MuICAqLwotKyAgLyogV2Ugd2FudCB0byBoYW5kbGUgYW55IHF1aXQgZXJyb3Jz IGFuZCBleGl0IHJlZ2FyZGxlc3MgYnV0IHdlIHNob3VsZCBuZXZlcgotKyAgICAgZ2V0IHVzZXIt aW50ZXJydXB0ZWQgdG8gcHJvcGVybHkgZGV0YWNoIHRoZSBpbmZlcmlvci4gICovCi0rICBxdWl0 X2ZsYWdfY2xlYW51cCA9IDE7Ci0gICBjYXRjaF9lcnJvcnMgKHF1aXRfdGFyZ2V0LCAmcXQsCi0g CSAgICAgICAgIlF1aXR0aW5nOiAiLCBSRVRVUk5fTUFTS19BTEwpOwotIAotSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAxMTcvZ2RiL3V0aWxzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIw MTEwMTE3Lm9yaWcvZ2RiL3V0aWxzLmMJMjAxMS0wMS0xNyAxNTo0NzozNy4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi91dGlscy5jCTIwMTEtMDEtMTcgMTU6NTI6 NDkuMDAwMDAwMDAwICswMTAwCi1AQCAtMTIxLDYgKzEyMSwxMSBAQCBpbnQgam9iX2NvbnRyb2w7 Ci0gCi0gaW50IHF1aXRfZmxhZzsKLSAKLSsvKiBOb256ZXJvIG1lYW5zIHdlIGFyZSBhbHJlYWR5 IHByb2Nlc3NpbmcgdGhlIHF1aXR0aW5nIGNsZWFudXBzIGFuZCB3ZSBzaG91bGQKLSsgICBubyBs b25nZXIgZ2V0IGFib3J0ZWQuICAqLwotKwotK2ludCBxdWl0X2ZsYWdfY2xlYW51cDsKLSsKLSAv KiBOb256ZXJvIG1lYW5zIHF1aXQgaW1tZWRpYXRlbHkgaWYgQ29udHJvbC1DIGlzIHR5cGVkIG5v dywgcmF0aGVyCi0gICAgdGhhbiB3YWl0aW5nIHVudGlsIFFVSVQgaXMgZXhlY3V0ZWQuICBCZSBj YXJlZnVsIGluIHNldHRpbmcgdGhpczsKLSAgICBjb2RlIHdoaWNoIGV4ZWN1dGVzIHdpdGggaW1t ZWRpYXRlX3F1aXQgc2V0IGhhcyB0byBiZSB2ZXJ5IGNhcmVmdWwKCmRpZmYgLS1naXQgYS9nZGIt Ny4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRvLWJyb2tlbi1kZWJ1Zy1maWxlcy5wYXRjaCBi L2dkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBh dGNoCmluZGV4IGJlY2Y4MGUuLmQ1M2VmMDMgMTAwNjQ0Ci0tLSBhL2dkYi03LjIuNTAtc3BhcmMt YWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCisrKyBiL2dkYi03LjIu NTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2VuLWRlYnVnLWZpbGVzLnBhdGNoCkBAIC0x LDggKzEsOCBAQAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL2dkYl9iZmQuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYl9iZmQuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvZ2RiX2JmZC5jCTIwMTItMDctMDMgMTc6MzA6MDcu MzU2NzU0NjU1ICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZ2RiX2JmZC5jCTIw MTItMDctMDMgMTc6NDM6NTIuNTY1NzYyNDU0ICswMjAwCi1AQCAtMjYsMTIgKzI2LDE0IEBACist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9nZGJfYmZkLmMJMjAxMy0wMS0xOCAyMzox MToxOC4xNTg3MTg3MDkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9nZGJfYmZk LmMJMjAxMy0wMS0xOCAyMzoxMjowNi44NDE3ODc4OTMgKzAxMDAKK0BAIC0yNywxMiArMjcsMTQg QEAKICAjaWZkZWYgSEFWRV9aTElCX0gKICAjaW5jbHVkZSA8emxpYi5oPgogICNlbmRpZgpAQCAt MTcsNyArMTcsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZ2RiX2JmZC5jCiAg CiAgLyogQW4gb2JqZWN0IG9mIHRoaXMgdHlwZSBpcyBzdG9yZWQgaW4gdGhlIHNlY3Rpb24ncyB1 c2VyIGRhdGEgd2hlbgogICAgIG1hcHBpbmcgYSBzZWN0aW9uLiAgKi8KLUBAIC0xODEsNiArMTgz LDcgQEAgZnJlZV9vbmVfYmZkX3NlY3Rpb24gKGJmZCAqYWJmZCwgYXNlY3RpbworQEAgLTIwNSw2 ICsyMDcsNyBAQCBmcmVlX29uZV9iZmRfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvCiAgCiAg ICBpZiAoc2VjdCAhPSBOVUxMICYmIHNlY3QtPmRhdGEgIT0gTlVMTCkKICAgICAgewpAQCAtMjUs NyArMjUsNyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvZ2RiX2JmZC5jCiAgI2lm ZGVmIEhBVkVfTU1BUAogICAgICAgIGlmIChzZWN0LT5tYXBfYWRkciAhPSBOVUxMKQogIAl7Ci1A QCAtMTkxLDYgKzE5NCw3IEBAIGZyZWVfb25lX2JmZF9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0 aW8KK0BAIC0yMTUsNiArMjE4LDcgQEAgZnJlZV9vbmVfYmZkX3NlY3Rpb24gKGJmZCAqYWJmZCwg YXNlY3RpbwogIAl9CiAgICAgICAgZWxzZQogICNlbmRpZgpAQCAtMzMsMTkgKzMzLDE5IEBAIElu ZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9nZGJfYmZkLmMKICAJeGZyZWUgKHNlY3QtPmRh dGEpOwogICAgICB9CiAgfQotQEAgLTQyNSw2ICs0MjksNyBAQCBnZGJfYmZkX21hcF9zZWN0aW9u IChhc2VjdGlvbiAqc2VjdHAsIGJmCi0gICAgICAgICB9Ci0gICAgIH0KK0BAIC0zNjAsNiArMzY0 LDcgQEAgZ2RiX2JmZF9tYXBfc2VjdGlvbiAoYXNlY3Rpb24gKnNlY3RwLCBiZgorICAgaWYgKGRl c2NyaXB0b3ItPmRhdGEgIT0gTlVMTCkKKyAgICAgZ290byBkb25lOwogIAogKyNpZm5kZWYgX19z cGFyY19fCiAgI2lmZGVmIEhBVkVfTU1BUAotICAgewotICAgICAvKiBUaGUgcGFnZSBzaXplLCB1 c2VkIHdoZW4gbW1hcHBpbmcuICAqLwotQEAgLTQ1OCw2ICs0NjMsNyBAQCBnZGJfYmZkX21hcF9z ZWN0aW9uIChhc2VjdGlvbiAqc2VjdHAsIGJmCi0gICAgICAgfQotICAgfQorICAgaWYgKCFiZmRf aXNfc2VjdGlvbl9jb21wcmVzc2VkIChhYmZkLCBzZWN0cCkpCisgICAgIHsKK0BAIC0zOTQsNiAr Mzk5LDcgQEAgZ2RiX2JmZF9tYXBfc2VjdGlvbiAoYXNlY3Rpb24gKnNlY3RwLCBiZgorIAl9Cisg ICAgIH0KICAjZW5kaWYgLyogSEFWRV9NTUFQICovCiArI2VuZGlmCiAgCi0gICAvKiBJZiB3ZSBn ZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBub3QtY29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KLSAK KyAgIC8qIEhhbmRsZSBjb21wcmVzc2VkIHNlY3Rpb25zLCBvciBvcmRpbmFyeSB1bmNvbXByZXNz ZWQgc2VjdGlvbnMgaW4KKyAgICAgIHRoZSBuby1tbWFwIGNhc2UuICAqLwoKZGlmZiAtLWdpdCBh L2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoIGIvZ2RiLWFyY2hlci1w aWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKaW5kZXggNDFiOWI0Ni4uZTZhZDM1NiAxMDA2 NDQKLS0tIGEvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKKysrIGIv Z2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKQEAgLTEsOSArMSw5IEBA Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDEyMDYwMi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0wNi0wMiAxOToxMTo1NC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9icmVha3BvaW50LmMJ MjAxMi0wNi0wMiAxOTo1Mjo1OC4xNjEyMjY1MDYgKzAyMDAKLUBAIC0xNTQ5NSw2ICsxNTQ5NSw1 MCBAQCBpbml0aWFsaXplX2JyZWFrcG9pbnRfb3BzICh2b2lkKQotIH0KKy0tLSBnZGItNy41LjUw LjIwMTMwMTE4Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAxLTE4IDIzOjA5OjUzLjcyNzU5 NzU4NCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9pbnQuYwkyMDEz LTAxLTE4IDIzOjEwOjIwLjE1ODYzNTA2NSArMDEwMAorQEAgLTE1OTkzLDYgKzE1OTkzLDUwIEBA IGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCisgc3RhdGljIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICplbmFibGVicmVha2xpc3QgPSBOVUxMOwogIAogIHZvaWQKICticmVha3BvaW50 c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNl dHMgKmRlbHRhKQpAQCAtNTMsMTEgKzUzLDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi9icmVha3BvaW50LmMKICBfaW5pdGlhbGl6ZV9icmVha3BvaW50ICh2b2lkKQogIHsKICAg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjOwotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIv Z2RiL2JyZWFrcG9pbnQuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9p bnQuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvYnJlYWtw b2ludC5oCTIwMTItMDUtMTYgMTY6MzU6MDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDYtMDIgMTk6NTM6MDkuMjY4MjIzMjYz ICswMjAwCi1AQCAtMTUwMyw0ICsxNTAzLDcgQEAgZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpnZXRf c2FsX2FyY2ggKHN0cgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYnJlYWtwb2lu dC5oCTIwMTMtMDEtMTggMjM6MDk6NTEuNjcxNTk0NTg1ICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvYnJlYWtwb2ludC5oCTIwMTMtMDEtMTggMjM6MDk6NTMuNzI4NTk3NTg2ICsw MTAwCitAQCAtMTU1MCw0ICsxNTUwLDcgQEAgZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpnZXRfc2Fs X2FyY2ggKHN0cgogIAogIGV4dGVybiB2b2lkIGhhbmRsZV9zb2xpYl9ldmVudCAodm9pZCk7CiAg CkBAIC02NSwxMSArNjUsMTEgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2JyZWFr cG9pbnQuaAogKwkJCQkgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRhKTsKICsKICAjZW5k aWYgLyogIWRlZmluZWQgKEJSRUFLUE9JTlRfSCkgKi8KLUluZGV4OiBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi9vYmpmaWxlcy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvb2JqZmls ZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA2MDIub3JpZy9nZGIvb2JqZmls ZXMuYwkyMDEyLTA1LTEwIDIxOjUwOjA4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAu MjAxMjA2MDIvZ2RiL29iamZpbGVzLmMJMjAxMi0wNi0wMiAxOTo1Mjo1OC4yMDIyMjY1MDIgKzAy MDAKLUBAIC04MDIsNiArODAyLDExIEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmkKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL29iamZpbGVzLmMJMjAx My0wMS0xOCAyMzowOTo1MS42NzE1OTQ1ODUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9vYmpmaWxlcy5jCTIwMTMtMDEtMTggMjM6MDk6NTMuNzI5NTk3NTg4ICswMTAwCitAQCAt ODI2LDYgKzgyNiwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZp CiAgICAgIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fcmVsb2NhdGVfcHJvYmUgKG9i amZpbGUsCiAgCQkJCQkJICAgIG5ld19vZmZzZXRzLCBkZWx0YSk7CiAgCgpkaWZmIC0tZ2l0IGEv Z2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNo CmluZGV4IGY4MTE5NjQuLmQwOTliNWIgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXItcGllLWFkZG9u cy5wYXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKQEAgLTEsNjEgKzEsOCBA QAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYnR5cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40 LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA2LTAyIDE5OjE0OjM4LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2R3YXJmMnJlYWQuYwky MDEyLTA2LTAyIDE5OjUxOjI5Ljk3NzI1MjMzOCArMDIwMAotQEAgLTk3NDYsNyArOTc0NiwxMiBA QCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCi0gewotICAgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cjsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLS0gIENPUkVfQUREUiBi YXNlID0gKENPUkVfQUREUikgMDsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9i amZpbGU7Ci0rICBDT1JFX0FERFIgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlv bl9vZmZzZXRzLAotKwkJCQkgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwotKyAgLyogVGhpcyBp cyB1c2VkIG9ubHkgZm9yIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uIGVudHJpZXMuICAqLwot KyAgQ09SRV9BRERSIGJhc2UgPSAwOwotKyAgaW50IGJhc2VfcCA9IDA7Ci0gCi0gICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKLSAgIGlmIChhdHRyKQotQEAg LTk3NTUsNiArOTc2MCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwKLSAgICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSAgICAgICAgIHsKLSAg ICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAoYXR0ciksIGN1KTsKLSsJ ICBiYXNlX3AgPSAxOwotICAgICAgICAgfQotICAgICAgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19z ZWN0aW9uX29mZnNldCAoYXR0cikpCi0gICAgICAgICB7Ci1AQCAtOTgwNywxMiArOTgxMywxNSBA QCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCi0gCSAgaWYgKHN5bSAh PSBOVUxMCi0gCSAgICAgICYmIGhhbmRsZV9kYXRhX21lbWJlcl9sb2NhdGlvbiAoY2hpbGRfZGll LCBjdSwgJm9mZnNldCkpCi0gCSAgICB7Ci0tCSAgICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChz eW0pID0gYmFzZSArIG9mZnNldDsKLSsJICAgICAgaWYgKCFiYXNlX3ApCi0rCQlkd2FyZjJfaW52 YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50Ci0rCQkgICgiRFdfQVRfZGF0YV9tZW1iZXJfbG9j YXRpb24iLCAiY29tbW9uIGJsb2NrIG1lbWJlciIpOwotKwkgICAgICBTWU1CT0xfVkFMVUVfQURE UkVTUyAoc3ltKSA9IGJhc2UgKyBvZmZzZXQgKyBiYXNlYWRkcjsKLSAJICAgICAgYWRkX3N5bWJv bF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7Ci0gCSAgICB9Ci0gCi0gCSAgaWYgKFNZ TUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElDKQotLQkgICAgU0VUX0ZJRUxEX1BIWVNBRERS ICgqZmllbGQsIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pKTsKLSsJICAgIFNFVF9GSUVMRF9Q SFlTQUREUiAoKmZpZWxkLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSAtIGJhc2VhZGRyKTsK LSAJICBlbHNlCi0gCSAgICBTRVRfRklFTERfUEhZU05BTUUgKCpmaWVsZCwgU1lNQk9MX0xJTktB R0VfTkFNRSAoc3ltKSk7Ci0gCSAgRklFTERfVFlQRSAoKmZpZWxkKSA9IFNZTUJPTF9UWVBFIChz eW0pOwotQEAgLTk4MjYsNyArOTgzNSw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwKLSAKLSAgICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsK LSAgICAgICAvKiBTWU1CT0xfVkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVzZWQgYXMgYWxsIGl0 cyBmaWVsZHMgYXJlIHN0YXRpYy4gICovCi0tICAgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5 bSkgPSBiYXNlOwotKyAgICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID0gYmFzZSArIGJh c2VhZGRyOwotIAotICAgICAgIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7Ci0gICAgIH0K LUluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9nZGJ0eXBlcy5oCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTItMDYtMDIgMTk6 MTE6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2RidHlw ZXMuaAkyMDEyLTA2LTAyIDE5OjUyOjQ0Ljk5MDIzMDIwMCArMDIwMAotQEAgLTQwMSw2ICs0MDEs NyBAQCBlbnVtIGZpZWxkX2xvY19raW5kCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9nZGJ0eXBlcy5oCTIwMTMtMDEtMTggMjM6MDc6MDMuNDg4MzU4MzE1ICswMTAwCisrKysgZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvZ2RidHlwZXMuaAkyMDEzLTAxLTE4IDIzOjA4OjEwLjI4NjQ1 MTU3MCArMDEwMAorQEAgLTQyMCw2ICs0MjAsNyBAQCBlbnVtIGZpZWxkX2xvY19raW5kCiAgICB7 CiAgICAgIEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJLyogYml0cG9zICovCiAgICAgIEZJRUxEX0xP Q19LSU5EX0VOVU1WQUwsCS8qIGVudW12YWwgKi8KQEAgLTYzLDcgKzEwLDcgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA2MDIvZ2RiL2dkYnR5cGVzLmgKICAgICAgRklFTERfTE9DX0tJTkRfUEhZ U0FERFIsCS8qIHBoeXNhZGRyICovCiAgICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkvKiBw aHlzbmFtZSAqLwogICAgICBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSwkvKiBkd2FyZl9ibG9j ayAqLwotQEAgLTU5NSw2ICs1OTYsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCitAQCAtNjE0LDYgKzYx NSw3IEBAIHN0cnVjdCBtYWluX3R5cGUKICAJICAgaXMgdGhlIGxvY2F0aW9uIChpbiB0aGUgdGFy Z2V0KSBvZiB0aGUgc3RhdGljIGZpZWxkLgogIAkgICBPdGhlcndpc2UsIHBoeXNuYW1lIGlzIHRo ZSBtYW5nbGVkIGxhYmVsIG9mIHRoZSBzdGF0aWMgZmllbGQuICAqLwogIApAQCAtNzEsNyArMTgs NyBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2RidHlwZXMuaAogIAlDT1JFX0FE RFIgcGh5c2FkZHI7CiAgCWNvbnN0IGNoYXIgKnBoeXNuYW1lOwogIAotQEAgLTEyMDAsNiArMTIw Miw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC0xMjM3 LDYgKzEyMzksNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAg I2RlZmluZSBGSUVMRF9FTlVNVkFMX0xWQUwodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuZW51bXZh bCkKICAjZGVmaW5lIEZJRUxEX0VOVU1WQUwodGhpc2ZsZCkgKEZJRUxEX0VOVU1WQUxfTFZBTCAo dGhpc2ZsZCkgKyAwKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgo dGhpc2ZsZCkubG9jLnBoeXNuYW1lKQpAQCAtNzksNyArMjYsNyBAQCBJbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNBRERS KHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNhZGRyKQogICNkZWZpbmUgRklFTERfRFdBUkZf QkxPQ0sodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuZHdhcmZfYmxvY2spCiAgI2RlZmluZSBTRVRf RklFTERfQklUUE9TKHRoaXNmbGQsIGJpdHBvcykJCQlcCi1AQCAtMTIxMSw2ICsxMjE0LDcgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEyNDgsNiArMTI1 MSw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5l IFNFVF9GSUVMRF9QSFlTTkFNRSh0aGlzZmxkLCBuYW1lKQkJCVwKICAgIChGSUVMRF9MT0NfS0lO RCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJCVwKICAgICBGSUVMRF9TVEFU SUNfUEhZU05BTUUgKHRoaXNmbGQpID0gKG5hbWUpKQpAQCAtODcsNyArMzQsNyBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgU0VUX0ZJRUxEX1BI WVNBRERSKHRoaXNmbGQsIGFkZHIpCQkJXAogICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9 IEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkJXAogICAgIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAo dGhpc2ZsZCkgPSAoYWRkcikpCi1AQCAtMTIyNyw2ICsxMjMxLDcgQEAgZXh0ZXJuIHZvaWQgYWxs b2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEyNjQsNiArMTI2OCw3IEBAIGV4dGVybiB2 b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIFRZUEVfRklFTERfQklU UE9TKHRoaXN0eXBlLCBuKSBGSUVMRF9CSVRQT1MgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkK ICAjZGVmaW5lIFRZUEVfRklFTERfRU5VTVZBTCh0aGlzdHlwZSwgbikgRklFTERfRU5VTVZBTCAo VFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNfUEhZ U05BTUUodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAoVFlQRV9GSUVMRCAodGhp c3R5cGUsIG4pKQpAQCAtOTUsMTEgKzQyLDExIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNjAy L2dkYi9nZGJ0eXBlcy5oCiAgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlz dHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNBRERSIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikp CiAgI2RlZmluZSBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLKHRoaXN0eXBlLCBuKSBGSUVMRF9EV0FS Rl9CTE9DSyAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9B UlRJRklDSUFMKHRoaXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5 cGUsbikpCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvanYtbGFuZy5jCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC41MC4yMDEyMDYwMi5vcmlnL2dkYi9qdi1sYW5nLmMJMjAxMi0wNS0xMCAyMTo1OToxMi4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9qdi1sYW5nLmMJMjAxMi0w Ni0wMiAxOTo1MTo1My4yODYyNDUyODAgKzAyMDAKLUBAIC00MzEsNyArNDMxLDggQEAgamF2YV9s aW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvanYtbGFuZy5jCTIwMTMtMDEtMTggMjM6MDc6MDMuNDg4MzU4MzE1ICswMTAw CisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvanYtbGFuZy5jCTIwMTMtMDEtMTggMjM6MDg6 MTAuMjg2NDUxNTcwICswMTAwCitAQCAtNDMwLDcgKzQzMCw4IEBAIGphdmFfbGlua19jbGFzc190 eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAKICAgIGZpZWxkcyA9IE5VTEw7CiAgICBuZmllbGRz LS07CQkJLyogRmlyc3Qgc2V0IHVwIGR1bW15ICJjbGFzcyIgZmllbGQuICAqLwpAQCAtMTA5LDcg KzU2LDcgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA2MDIvZ2RiL2p2LWxhbmcuYwogICAgVFlQ RV9GSUVMRF9OQU1FICh0eXBlLCBuZmllbGRzKSA9ICJjbGFzcyI7CiAgICBUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIG5maWVsZHMpID0gdmFsdWVfdHlwZSAoY2xhcyk7CiAgICBTRVRfVFlQRV9GSUVM RF9QUklWQVRFICh0eXBlLCBuZmllbGRzKTsKLUBAIC00NzksNyArNDgwLDggQEAgamF2YV9saW5r X2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAorQEAgLTQ3OCw3ICs0NzksOCBAQCBqYXZh X2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCSAgU0VUX1RZUEVfRklFTERf UFJPVEVDVEVEICh0eXBlLCBpKTsKICAJfQogICAgICAgIGlmIChhY2NmbGFncyAmIDB4MDAwOCkJ LyogQUNDX1NUQVRJQyAqLwpAQCAtMTE5LDExICs2NiwxMSBAQCBJbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvanYtbGFuZy5jCiAgICAgICAgZWxzZQogIAlTRVRfRklFTERfQklUUE9TIChU WVBFX0ZJRUxEICh0eXBlLCBpKSwgOCAqIGJvZmZzZXQpOwogICAgICAgIGlmIChhY2NmbGFncyAm IDB4ODAwMCkJLyogRklFTERfVU5SRVNPTFZFRF9GTEFHICovCi1JbmRleDogZ2RiLTcuNC41MC4y MDEyMDYwMi9nZGIvdmFsdWUuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHVl LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9yaWcvZ2RiL3ZhbHVlLmMJ MjAxMi0wNi0wMiAxOToxMTo1NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIw NjAyL2dkYi92YWx1ZS5jCTIwMTItMDYtMDIgMTk6NTE6MzAuMDMxMjUyMzE3ICswMjAwCi1AQCAt MjU5Miw3ICsyNTkyLDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwg aQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmFsdWUuYwkyMDEzLTAxLTE4IDIz OjA3OjAzLjQ5MDM1ODMxOSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHVl LmMJMjAxMy0wMS0xOCAyMzowODoxMC4yODc0NTE1NDMgKzAxMDAKK0BAIC0yNjI0LDcgKzI2MjQs OCBAQCB2YWx1ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCiAgICAgIHsKICAg ICAgY2FzZSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUjoKICAgICAgICByZXR2YWwgPSB2YWx1ZV9h dF9sYXp5IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLAoKZGlmZiAtLWdpdCBhL2dk Yi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IDgwZTNjZjIuLmQwNGFjMmUg MTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAt Miw0NiArMiwxOCBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hl cgogaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQK IAogR0lUIHNuYXBzaG90OgotY29tbWl0IDg5NzY4NmMwYWVkYjdhNmRhNTliODIzZjIyYjFkMjRl YzVhMWQyYmEKK2NvbW1pdCBmMWY3NjIzNjFlNWU4YTRmYWJkYWIxNjQ2M2VjYjFmZDliYTFlNWU5 CiAKIGJyYW5jaCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5r cmF0b2NodmlsLXZsYQogYXJjaGVyLXRyb21leS1weXRob24KLWFyY2hlci10cm9tZXktZHd6LW11 bHRpZmlsZS1yZWJhc2UgKGJ1dCBmcm9tIHBvc3QtNy41IEZTRiBHREIgY29tbWl0cykKIAogCiBk aWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCi1pbmRleCBhNDFj ZmY5Li5kNzc4NmE2IDEwMDY0NAoraW5kZXggNzMwNWU2ZC4uZmZmOGNiMiAxMDA2NDQKIC0tLSBh L2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtNzA0LDcgKzcwNCw3 IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFs cHJpbnQuYyBhZGEtdGFza3MuYyBcCi0gCWV4Y2VwdGlvbnMuYyBleHBwcmludC5jIFwKLSAJZi1l eHAueSBmLWxhbmcuYyBmLXR5cGVwcmludC5jIGYtdmFscHJpbnQuYyBmaWxlc3lzdGVtLmMgXAot IAlmaW5kY21kLmMgZmluZHZhci5jIGZyYW1lLmMgZnJhbWUtYmFzZS5jIGZyYW1lLXVud2luZC5j IFwKLS0JZ2RiYXJjaC5jIGFyY2gtdXRpbHMuYyBnZGJ0eXBlcy5jIGdudS12Mi1hYmkuYyBnbnUt djMtYWJpLmMgXAotKwlnZGJhcmNoLmMgYXJjaC11dGlscy5jIGdkYl9iZmQuYyBnZGJ0eXBlcy5j IGdudS12Mi1hYmkuYyBnbnUtdjMtYWJpLmMgXAotIAlnby1leHAueSBnby1sYW5nLmMgZ28tdHlw ZXByaW50LmMgZ28tdmFscHJpbnQuYyBcCi0gCWluZi1sb29wLmMgXAotIAlpbmZjYWxsLmMgXAot QEAgLTgyOSw3ICs4MjksNyBAQCBnbnVsaWIvaW1wb3J0L2V4dHJhL3NuaXBwZXQvd2Fybi1vbi11 c2UuaCBcCi0gZ251bGliL2ltcG9ydC9zdGRkZWYuaW4uaCBnbnVsaWIvaW1wb3J0L2ludHR5cGVz LmluLmggaW5saW5lLWZyYW1lLmggc2tpcC5oIFwKLSBjb21tb24vY29tbW9uLXV0aWxzLmggY29t bW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24vcHRpZC5oIFwKLSBjb21tb24v Zm9ybWF0LmggXAotLWNvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24uaCBhdXRvLWxvYWQu aCBwcm9iZS5oIHN0YXAtcHJvYmUuaAotK2NvbW1vbi9saW51eC1vc2RhdGEuaCBnZGItZGxmY24u aCBhdXRvLWxvYWQuaCBwcm9iZS5oIHN0YXAtcHJvYmUuaCBnZGJfYmZkLmgKLSAKLSAjIEhlYWRl ciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGlu IG9iamRpci4KLSAKLUBAIC04NzksNyArODc5LDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMp ICQoQ09ORklHX09CUykgJChZWU9CSikgXAotIAltYWNyb3RhYi5vIG1hY3JvY21kLm8gbWFjcm9l eHAubyBtYWNyb3Njb3BlLm8gXAotIAltaS1jb21tb24ubyBcCi0gCWV2ZW50LWxvb3AubyBldmVu dC10b3AubyBpbmYtbG9vcC5vIGNvbXBsZXRlci5vIFwKLS0JZ2RiYXJjaC5vIGFyY2gtdXRpbHMu byBnZGJ0eXBlcy5vIG9zYWJpLm8gY29weWluZy5vIFwKLSsJZ2RiYXJjaC5vIGFyY2gtdXRpbHMu byBnZGJ0eXBlcy5vIGdkYl9iZmQubyBvc2FiaS5vIGNvcHlpbmcubyBcCi0gCW1lbWF0dHIubyBt ZW0tYnJlYWsubyB0YXJnZXQubyBwYXJzZS5vIGxhbmd1YWdlLm8gYnVpbGRzeW0ubyBcCi0gCWZp bmRjbWQubyBcCi0gCXN0ZC1yZWdzLm8gXAotQEAgLTEzMDcsNiArMTMwNywxMiBAQCBzdGFtcC1o OiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC0xMzA4LDYgKzEzMDgsMTIg QEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCiAgCSAgQ09ORklH X0xJTktTPSBcCiAgCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwogIApAQCAtNTQsMjkgKzI2LDEx IEBAIGluZGV4IGE0MWNmZjkuLmQ3Nzg2YTYgMTAwNjQ0CiAgY29uZmlnLnN0YXR1czogJChzcmNk aXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3VyZS5ob3N0CiAgCSQoU0hFTEwpIGNv bmZpZy5zdGF0dXMgLS1yZWNoZWNrCiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVX UwotaW5kZXggYjI4MTgyNC4uNGRhODg2YyAxMDA2NDQKLS0tLSBhL2dkYi9ORVdTCi0rKysgYi9n ZGIvTkVXUwotQEAgLTEsNiArMSwxMyBAQAotIAkJV2hhdCBoYXMgY2hhbmdlZCBpbiBHREI/Ci0g CSAgICAgKE9yZ2FuaXplZCByZWxlYXNlIGJ5IHJlbGVhc2UpCi0gCi0rKioqIENoYW5nZXMgc2lu Y2UgR0RCIDcuNQotKwotKyogTmV3IGNvbW1hbmRzIChmb3Igc2V0L3Nob3csIHNlZSAiTmV3IG9w dGlvbnMiIGJlbG93KQotKwotK21haW50IGluZm8gYmZkcwotKyAgTGlzdCB0aGUgQkZEcyBrbm93 biB0byBHREIuCi0rCi0gKioqIENoYW5nZXMgaW4gR0RCIDcuNQotIAotICogR0RCIG5vdyBzdXBw b3J0cyB4MzIgQUJJLiAgVmlzaXQgPGh0dHA6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUveDMyYWJp Lz4KIGRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dkYi9hZGEtbGFuZy5jCi1pbmRleCBh YTA5MGFmLi5lNjcyNzMxIDEwMDY0NAoraW5kZXggYjQ4NDlhOS4uYTZlNmNhMiAxMDA2NDQKIC0t LSBhL2dkYi9hZGEtbGFuZy5jCiArKysgYi9nZGIvYWRhLWxhbmcuYwotQEAgLTEyMDM3LDYgKzEy MDM3LDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKK0BAIC0xMjI2Myw2ICsxMjI2Myw3IEBAIGFkYV9vcGVy YXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpv cGxlbnAsCiAgCiAgc3RhdGljIGludAogIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTg0LDcgKzM4LDcgQEAgaW5kZXggYWEwOTBhZi4uZTY3 MjczMSAxMDA2NDQKICAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgdm9pZCAqZGF0YSksCiAgCQkgICAgdm9pZCAqZGF0YSkKICB7Ci1AQCAtMTIwNTEs MTIgKzEyMDUyLDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBvcywKK0BAIC0xMjI3NywxMiArMTIyNzgsMTUgQEAgYWRhX29wZXJhdG9yX2NoZWNr IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAlicmVhazsKICAKICAgICAgICBk ZWZhdWx0OgpAQCAtMTAyLDU0ICs1Niw4IEBAIGluZGV4IGFhMDkwYWYuLmU2NzI3MzEgMTAwNjQ0 CiAgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJTEUgKHR5cGUpLCBkYXRhKSkK ICAgICAgcmV0dXJuIDE7CiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL2JmZC10YXJnZXQuYyBiL2dkYi9i ZmQtdGFyZ2V0LmMKLWluZGV4IDY3Mjg4MDAuLjQ1NWQzZTYgMTAwNjQ0Ci0tLS0gYS9nZGIvYmZk LXRhcmdldC5jCi0rKysgYi9nZGIvYmZkLXRhcmdldC5jCi1AQCAtMjEsNiArMjEsNyBAQAotICNp bmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiYmZkLXRhcmdldC5oIgotICNpbmNsdWRlICJl eGVjLmgiCi0rI2luY2x1ZGUgImdkYl9iZmQuaCIKLSAKLSAvKiBUaGUgb2JqZWN0IHRoYXQgaXMg c3RvcmVkIGluIHRoZSB0YXJnZXRfb3BzLT50b19kYXRhIGZpZWxkIGhhcyB0aGlzCi0gICAgdHlw ZS4gICovCi1AQCAtNzAsNyArNzEsNyBAQCB0YXJnZXRfYmZkX3hjbG9zZSAoc3RydWN0IHRhcmdl dF9vcHMgKnQsIGludCBxdWl0dGluZykKLSB7Ci0gICBzdHJ1Y3QgdGFyZ2V0X2JmZF9kYXRhICpk YXRhID0gdC0+dG9fZGF0YTsKLSAKLS0gIGJmZF9jbG9zZSAoZGF0YS0+YmZkKTsKLSsgIGdkYl9i ZmRfdW5yZWYgKGRhdGEtPmJmZCk7Ci0gICB4ZnJlZSAoZGF0YS0+dGFibGUuc2VjdGlvbnMpOwot ICAgeGZyZWUgKGRhdGEpOwotICAgeGZyZWUgKHQpOwotQEAgLTg0LDYgKzg1LDcgQEAgdGFyZ2V0 X2JmZF9yZW9wZW4gKHN0cnVjdCBiZmQgKmFiZmQpCi0gCi0gICBkYXRhID0gWFpBTExPQyAoc3Ry dWN0IHRhcmdldF9iZmRfZGF0YSk7Ci0gICBkYXRhLT5iZmQgPSBhYmZkOwotKyAgZ2RiX2JmZF9y ZWYgKGFiZmQpOwotICAgYnVpbGRfc2VjdGlvbl90YWJsZSAoYWJmZCwgJmRhdGEtPnRhYmxlLnNl Y3Rpb25zLCAmZGF0YS0+dGFibGUuc2VjdGlvbnNfZW5kKTsKLSAKLSAgIHQgPSBYWkFMTE9DIChz dHJ1Y3QgdGFyZ2V0X29wcyk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2JmZC10YXJnZXQuaCBiL2dkYi9i ZmQtdGFyZ2V0LmgKLWluZGV4IDcxMDAxYzUuLjdmNGU2MjggMTAwNjQ0Ci0tLS0gYS9nZGIvYmZk LXRhcmdldC5oCi0rKysgYi9nZGIvYmZkLXRhcmdldC5oCi1AQCAtMjMsOSArMjMsOSBAQAotIHN0 cnVjdCBiZmQ7Ci0gc3RydWN0IHRhcmdldF9vcHM7Ci0gCi0tLyogR2l2ZW4gYW4gZXhpc3Rpbmcg QkZELCByZS1vcGVuIGl0IGFzIGEgInN0cnVjdCB0YXJnZXRfb3BzIi4gIE9uCi0tICAgY2xvc2Us IGl0IHdpbGwgYWxzbyBjbG9zZSB0aGUgY29ycmVzcG9uZGluZyBCRkQgKHdoaWNoIGlzIGxpa2UK LS0gICBmcmVvcGVuIGFuZCBmZG9wZW4pLiAgKi8KLSsvKiBHaXZlbiBhbiBleGlzdGluZyBCRkQs IHJlLW9wZW4gaXQgYXMgYSAic3RydWN0IHRhcmdldF9vcHMiLiAgVGhpcwotKyAgIGFjcXVpcmVz IGEgbmV3IHJlZmVyZW5jZSB0byB0aGUgQkZELiAgVGhpcyByZWZlcmVuY2Ugd2lsbCBiZQotKyAg IHJlbGVhc2VkIHdoZW4gdGhlIHRhcmdldCBpcyBjbG9zZWQuICAqLwotIHN0cnVjdCB0YXJnZXRf b3BzICp0YXJnZXRfYmZkX3Jlb3BlbiAoc3RydWN0IGJmZCAqYmZkKTsKLSAKLSAjZW5kaWYKIGRp ZmYgLS1naXQgYS9nZGIvYmxvY2suYyBiL2dkYi9ibG9jay5jCi1pbmRleCBhMGY4MmVjLi4wOTdk YmY2IDEwMDY0NAoraW5kZXggMjYzOGRlOC4uYjI5NmFlMCAxMDA2NDQKIC0tLSBhL2dkYi9ibG9j ay5jCiArKysgYi9nZGIvYmxvY2suYwogQEAgLTY5MiwzICs2OTIsMjEgQEAgYmxvY2tfaXRlcl9t YXRjaF9uZXh0IChjb25zdCBjaGFyICpuYW1lLApAQCAtMTc1LDcgKzgzLDcgQEAgaW5kZXggYTBm ODJlYy4uMDk3ZGJmNiAxMDA2NDQKICsgIHJldHVybiBTWU1CT0xfU1lNVEFCIChmdW5jKS0+b2Jq ZmlsZTsKICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmggYi9nZGIvYmxvY2suaAotaW5kZXgg OTljNDc4OC4uNmNlYjcwNCAxMDA2NDQKK2luZGV4IDAyZTdlOGIuLjI5MzE0MDEgMTAwNjQ0CiAt LS0gYS9nZGIvYmxvY2suaAogKysrIGIvZ2RiL2Jsb2NrLmgKIEBAIC0yNzksNCArMjc5LDYgQEAg ZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJsb2NrX2l0ZXJfbWF0Y2hfbmV4dCAoY29uc3QgY2hhciAq bmFtZSwKQEAgLTE4NiwxMCArOTQsMTAgQEAgaW5kZXggOTljNDc4OC4uNmNlYjcwNCAxMDA2NDQK ICsKICAjZW5kaWYgLyogQkxPQ0tfSCAqLwogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMg Yi9nZGIvYnJlYWtwb2ludC5jCi1pbmRleCA3OGZmZmQzLi4yMjRiYTQ5IDEwMDY0NAoraW5kZXgg M2FkOTg4NS4uZTI4YjQ0ZSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dk Yi9icmVha3BvaW50LmMKLUBAIC0xNTUxOSw2ICsxNTUxOSwyNCBAQCBhbGxfdHJhY2Vwb2ludHMg KHZvaWQpCitAQCAtMTU2NDEsNiArMTU2NDEsMjQgQEAgYWxsX3RyYWNlcG9pbnRzICh2b2lkKQog ICAgcmV0dXJuIHRwX3ZlYzsKICB9CiAgCkBAIC0yMTQsNyArMTIyLDcgQEAgaW5kZXggNzhmZmZk My4uMjI0YmE0OSAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0 aGUgYnJlYWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrCiAgICAgY29tbWFuZHMuICBJdCBp cyBkZWZpbmVkIGFzIGEgbWFjcm8gdG8gcHJldmVudCBkdXBsaWNhdGlvbi4KLUBAIC0xNjQ4NCw0 ICsxNjUwMiw3IEBAIGFnZW50LXByaW50ZiBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEs IGFyZzIsIGFyZzMsIC4uLiwgYXJnblxuXAorQEAgLTE2NjEyLDQgKzE2NjMwLDcgQEAgYWdlbnQt cHJpbnRmIFwicHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4uLCBh cmduXG5cCiAgICBhdXRvbWF0aWNfaGFyZHdhcmVfYnJlYWtwb2ludHMgPSAxOwogIAogICAgb2Jz ZXJ2ZXJfYXR0YWNoX2Fib3V0X3RvX3Byb2NlZWQgKGJyZWFrcG9pbnRfYWJvdXRfdG9fcHJvY2Vl ZCk7CkBAIC0yMjIsODAgKzEzMCwxNSBAQCBpbmRleCA3OGZmZmQzLi4yMjRiYTQ5IDEwMDY0NAog KyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQp OwogKyNlbmRpZgogIH0KLWRpZmYgLS1naXQgYS9nZGIvYnVpbGRzeW0uYyBiL2dkYi9idWlsZHN5 bS5jCi1pbmRleCBkNTQ3MDEyLi5lNDg4MmZiIDEwMDY0NAotLS0tIGEvZ2RiL2J1aWxkc3ltLmMK LSsrKyBiL2dkYi9idWlsZHN5bS5jCi1AQCAtOTY2LDExICs5NjYsMTQgQEAgcmVzZXRfc3ltdGFi X2dsb2JhbHMgKHZvaWQpCi0gICAgZmlsZSdzIHRleHQuCi0gCi0gICAgSWYgRVhQQU5EQUJMRSBp cyBub24temVybyB0aGUgU1RBVElDX0JMT0NLIGRpY3Rpb25hcnkgaXMgbWFkZQotLSAgIGV4cGFu ZGFibGUuICAqLwotKyAgIGV4cGFuZGFibGUuCi0rCi0rICAgSWYgUkVRVUlSRUQgaXMgbm9uLXpl cm8sIHRoZW4gYSBzeW10YWIgaXMgY3JlYXRlZCBldmVuIGlmIGl0IGRvZXMKLSsgICBub3QgY29u dGFpbiBhbnkgc3ltYm9scy4gICovCi0gCi0gc3RydWN0IGJsb2NrICoKLSBlbmRfc3ltdGFiX2dl dF9zdGF0aWNfYmxvY2sgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCi0tCQkJICAgICBpbnQgZXhwYW5kYWJsZSkKLSsJCQkgICAgIGludCBleHBhbmRhYmxlLCBp bnQgcmVxdWlyZWQpCi0gewotICAgLyogRmluaXNoIHRoZSBsZXhpY2FsIGNvbnRleHQgb2YgdGhl IGxhc3QgZnVuY3Rpb24gaW4gdGhlIGZpbGU7IHBvcAotICAgICAgdGhlIGNvbnRleHQgc3RhY2su ICAqLwotQEAgLTEwMzgsNyArMTA0MSw4IEBAIGVuZF9zeW10YWJfZ2V0X3N0YXRpY19ibG9jayAo Q09SRV9BRERSIGVuZF9hZGRyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIGNsZWFudXBf dW5kZWZpbmVkX3N0YWJzX3R5cGVzIChvYmpmaWxlKTsKLSAgIGZpbmlzaF9nbG9iYWxfc3RhYnMg KG9iamZpbGUpOwotIAotLSAgaWYgKHBlbmRpbmdfYmxvY2tzID09IE5VTEwKLSsgIGlmICghcmVx dWlyZWQKLSsgICAgICAmJiBwZW5kaW5nX2Jsb2NrcyA9PSBOVUxMCi0gICAgICAgJiYgZmlsZV9z eW1ib2xzID09IE5VTEwKLSAgICAgICAmJiBnbG9iYWxfc3ltYm9scyA9PSBOVUxMCi0gICAgICAg JiYgaGF2ZV9saW5lX251bWJlcnMgPT0gMAotQEAgLTEyOTYsNyArMTMwMCw3IEBAIGVuZF9zeW10 YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzZWN0 aW9uKQotIHsKLSAgIHN0cnVjdCBibG9jayAqc3RhdGljX2Jsb2NrOwotIAotLSAgc3RhdGljX2Js b2NrID0gZW5kX3N5bXRhYl9nZXRfc3RhdGljX2Jsb2NrIChlbmRfYWRkciwgb2JqZmlsZSwgMCk7 Ci0rICBzdGF0aWNfYmxvY2sgPSBlbmRfc3ltdGFiX2dldF9zdGF0aWNfYmxvY2sgKGVuZF9hZGRy LCBvYmpmaWxlLCAwLCAwKTsKLSAgIHJldHVybiBlbmRfc3ltdGFiX2Zyb21fc3RhdGljX2Jsb2Nr IChzdGF0aWNfYmxvY2ssIG9iamZpbGUsIHNlY3Rpb24sIDApOwotIH0KLSAKLUBAIC0xMzA4LDcg KzEzMTIsNyBAQCBlbmRfZXhwYW5kYWJsZV9zeW10YWIgKENPUkVfQUREUiBlbmRfYWRkciwgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCi0gewotICAgc3RydWN0IGJsb2NrICpzdGF0aWNfYmxvY2s7 Ci0gCi0tICBzdGF0aWNfYmxvY2sgPSBlbmRfc3ltdGFiX2dldF9zdGF0aWNfYmxvY2sgKGVuZF9h ZGRyLCBvYmpmaWxlLCAxKTsKLSsgIHN0YXRpY19ibG9jayA9IGVuZF9zeW10YWJfZ2V0X3N0YXRp Y19ibG9jayAoZW5kX2FkZHIsIG9iamZpbGUsIDEsIDApOwotICAgcmV0dXJuIGVuZF9zeW10YWJf ZnJvbV9zdGF0aWNfYmxvY2sgKHN0YXRpY19ibG9jaywgb2JqZmlsZSwgc2VjdGlvbiwgMSk7Ci0g fQotIAotZGlmZiAtLWdpdCBhL2dkYi9idWlsZHN5bS5oIGIvZ2RiL2J1aWxkc3ltLmgKLWluZGV4 IDE2MmVlOGMuLjMzYjM0YzggMTAwNjQ0Ci0tLS0gYS9nZGIvYnVpbGRzeW0uaAotKysrIGIvZ2Ri L2J1aWxkc3ltLmgKLUBAIC0yNjAsNyArMjYwLDggQEAgZXh0ZXJuIGNoYXIgKnBvcF9zdWJmaWxl ICh2b2lkKTsKLSAKLSBleHRlcm4gc3RydWN0IGJsb2NrICplbmRfc3ltdGFiX2dldF9zdGF0aWNf YmxvY2sgKENPUkVfQUREUiBlbmRfYWRkciwKLSAJCQkJCQkgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAotLQkJCQkJCSAgaW50IGV4cGFuZGFibGUpOwotKwkJCQkJCSAgaW50IGV4cGFuZGFibGUs Ci0rCQkJCQkJICBpbnQgcmVxdWlyZWQpOwotIAotIGV4dGVybiBzdHJ1Y3Qgc3ltdGFiICplbmRf c3ltdGFiX2Zyb21fc3RhdGljX2Jsb2NrIChzdHJ1Y3QgYmxvY2sgKnN0YXRpY19ibG9jaywKLSAJ CQkJCQkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiBkaWZmIC0tZ2l0IGEvZ2RiL2MtdHlw ZXByaW50LmMgYi9nZGIvYy10eXBlcHJpbnQuYwotaW5kZXggYTU4OTJiNS4uMjk0NGMyZCAxMDA2 NDQKK2luZGV4IGE2ZGIxNjIuLmRkZmM2YTkgMTAwNjQ0CiAtLS0gYS9nZGIvYy10eXBlcHJpbnQu YwogKysrIGIvZ2RiL2MtdHlwZXByaW50LmMKLUBAIC02MjQsOSArNjI0LDE0IEBAIGNfdHlwZV9w cmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsCi0gCSAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiKSIpOworQEAgLTY5Miw3ICs2OTIsMTMgQEAgY190eXBlX3ByaW50X3Zh cnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKLSAJZnByaW50Zl9maWx0ZXJlZCAo c3RyZWFtLCAiWyIpOworIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sIChpc192ZWN0b3IgPwor IAkJCQkgICAiIF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSgiIDogIlsiKSk7CiAtCWlmIChn ZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi0tCSAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLCAKLS0JCQkgICAgKGludCkgKGhpZ2hfYm91bmQg LSBsb3dfYm91bmQgKyAxKSk7CiArCWlmIChUWVBFX1JBTkdFX0RBVEEgKFRZUEVfSU5ERVhfVFlQ RSAodHlwZSkpLT5oaWdoLmtpbmQKICsJICAgICE9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQp CiArCSAgewpAQCAtMzAzLDUxNiArMTQ2LDE0IEBAIGluZGV4IGE1ODkyYjUuLjI5NDRjMmQgMTAw NjQ0CiArCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2YXJpYWJsZSIpOwogKwkgIH0K ICsJZWxzZSBpZiAoZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91 bmQpKQotKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwgKGludCkgKGhpZ2hfYm91 bmQgLSBsb3dfYm91bmQgKyAxKSk7Ci0gCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIl0iKTsK LSAKLSAJY190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwgc3RyZWFtLAotZGlmZiAtLWdpdCBhL2dkYi9jYy13aXRoLWR3ei5zaCBiL2dkYi9jYy13aXRo LWR3ei5zaAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Ci1pbmRleCBmNjZkZWIxLi4wMDAwMDAw Ci0tLS0gYS9nZGIvY2Mtd2l0aC1kd3ouc2gKLSsrKyAvZGV2L251bGwKLUBAIC0xLDgwICswLDAg QEAKLS0jISAvYmluL3NoCi0tIyBXcmFwcGVyIGFyb3VuZCBnY2MgdG8gcnVuICdkd3onIHdoZW4g cnVubmluZyB0aGUgdGVzdHN1aXRlLgotLQotLSMgQ29weXJpZ2h0IChDKSAyMDEwLTIwMTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot LSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotLQotLSMgVGhpcyBwcm9ncmFtIHJlcXVpcmVzIGR3eiBpbiBhZGRpdGlvbiB0byBnY2MuCi0t IwotLSMgRXhhbXBsZSB1c2FnZToKLS0jCi0tIyBiYXNoJCBjZCAkb2JqZGlyL2dkYi90ZXN0c3Vp dGUKLS0jIGJhc2gkIHJ1bnRlc3QgXAotLSMgICBDQ19GT1JfVEFSR0VUPSIvYmluL3NoICRzcmNk aXIvY2Mtd2l0aC1kd3ouc2ggZ2NjIiBcCi0tIyAgIENYWF9GT1JfVEFSR0VUPSIvYmluL3NoICRz cmNkaXIvY2Mtd2l0aC1kd3ouc2ggZysrIgotLSMKLS0KLS1teW5hbWU9Y2Mtd2l0aC1kd3ouc2gK LS0KLS1EV1o9JHtEV1o6LWR3en0KLS0KLS1oYXZlX2xpbms9dW5rbm93bgotLW5leHRfaXNfb3V0 cHV0X2ZpbGU9bm8KLS1vdXRwdXRfZmlsZT1hLm91dAotLQotLWZvciBhcmcgaW4gIiRAIgotLWRv Ci0tICAgIGlmIFsgIiRuZXh0X2lzX291dHB1dF9maWxlIiA9ICJ5ZXMiIF0KLS0gICAgdGhlbgot LQlvdXRwdXRfZmlsZT0iJGFyZyIKLS0JbmV4dF9pc19vdXRwdXRfZmlsZT1ubwotLQljb250aW51 ZQotLSAgICBmaQotLQotLSAgICAjIFBvb3IgbWFuJ3MgZ2NjIGFyZ3VtZW50IHBhcnNlci4KLS0g ICAgIyBXZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBhbGwgYXJndW1lbnRzLCB3ZSBqdXN0IG5lZWQg dG8ga25vdyBpZiB3ZSdyZQotLSAgICAjIGRvaW5nIGEgbGluayBhbmQgd2hhdCB0aGUgb3V0cHV0 IGZpbGUgaXMuCi0tICAgICMgSXQncyBub3QgcGVyZmVjdCwgYnV0IGl0IHNlZW1zIHRvIHdvcmsg d2VsbCBlbm91Z2ggZm9yIHRoZSB0YXNrIGF0IGhhbmQuCi0tICAgIGNhc2UgIiRhcmciIGluCi0t ICAgICItYyIpIGhhdmVfbGluaz1ubyA7OwotLSAgICAiLUUiKSBoYXZlX2xpbms9bm8gOzsKLS0g ICAgIi1TIikgaGF2ZV9saW5rPW5vIDs7Ci0tICAgICItbyIpIG5leHRfaXNfb3V0cHV0X2ZpbGU9 eWVzIDs7Ci0tICAgIGVzYWMKLS1kb25lCi0tCi0taWYgWyAiJG5leHRfaXNfb3V0cHV0X2ZpbGUi ID0gInllcyIgXQotLXRoZW4KLS0gICAgZWNobyAiJG15bmFtZTogVW5hYmxlIHRvIGZpbmQgb3V0 cHV0IGZpbGUiID4mMgotLSAgICBleGl0IDEKLS1maQotLQotLWlmIFsgIiRoYXZlX2xpbmsiID0g Im5vIiBdCi0tdGhlbgotLSAgICAiJEAiCi0tICAgIGV4aXQgJD8KLS1maQotLQotLSIkQCIKLS1y Yz0kPwotLVsgJHJjICE9IDAgXSAmJiBleGl0ICRyYwotLWlmIFsgISAtZiAiJG91dHB1dF9maWxl IiBdCi0tdGhlbgotLSAgICBlY2hvICIkbXluYW1lOiBJbnRlcm5hbCBlcnJvcjogJG91dHB1dF9m aWxlIG1pc3NpbmcuIiA+JjIKLS0gICAgZXhpdCAxCi0tZmkKLS0KLS0kRFdaICIkb3V0cHV0X2Zp bGUiID4gL2Rldi9udWxsIDI+JjEKLS0KLS1leGl0IDAKLWRpZmYgLS1naXQgYS9nZGIvY2Mtd2l0 aC1pbmRleC5zaCBiL2dkYi9jYy13aXRoLWluZGV4LnNoCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDY0NGJhMzQuLjAwMDAwMDAKLS0tLSBhL2dkYi9jYy13aXRoLWluZGV4LnNoCi0r KysgL2Rldi9udWxsCi1AQCAtMSwxMjYgKzAsMCBAQAotLSMhIC9iaW4vc2gKLS0jIFdyYXBwZXIg YXJvdW5kIGdjYyB0byBhZGQgdGhlIC5nZGJfaW5kZXggc2VjdGlvbiB3aGVuIHJ1bm5pbmcgdGhl IHRlc3RzdWl0ZS4KLS0KLS0jIENvcHlyaWdodCAoQykgMjAxMC0yMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0KLS0jIFRo aXMgcHJvZ3JhbSByZXF1aXJlcyBnZGIgYW5kIG9iamNvcHkgaW4gYWRkaXRpb24gdG8gZ2NjLgot LSMgVGhlIGRlZmF1bHQgdmFsdWVzIGFyZSBnZGIgZnJvbSB0aGUgYnVpbGQgdHJlZSBhbmQgb2Jq Y29weSBmcm9tICRQQVRILgotLSMgVGhleSBtYXkgYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIGVu dmlyb25tZW50IHZhcmlhYmxlcyBHREIgYW5kIE9CSkNPUFkKLS0jIHJlc3BlY3RpdmVseS4KLS0j IFdlIGFzc3VtZSB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgZWl0aGVyICRvYmovZ2RiIG9yICRv YmovZ2RiL3Rlc3RzdWl0ZS4KLS0jCi0tIyBFeGFtcGxlIHVzYWdlOgotLSMKLS0jIGJhc2gkIGNk ICRvYmpkaXIvZ2RiL3Rlc3RzdWl0ZQotLSMgYmFzaCQgcnVudGVzdCBcCi0tIyAgIENDX0ZPUl9U QVJHRVQ9Ii9iaW4vc2ggJHNyY2Rpci9jYy13aXRoLWluZGV4LnNoIGdjYyIgXAotLSMgICBDWFhf Rk9SX1RBUkdFVD0iL2Jpbi9zaCAkc3JjZGlyL2NjLXdpdGgtaW5kZXguc2ggZysrIgotLSMKLS0j IEZvciBkb2N1bWVudGF0aW9uIG9uIGluZGV4IGZpbGVzOiBpbmZvIC1mIGdkYi5pbmZvIC1uICJJ bmRleCBGaWxlcyIKLS0KLS1teW5hbWU9Y2Mtd2l0aC1pbmRleC5zaAotLQotLWlmIFsgLXogIiRH REIiIF0KLS10aGVuCi0tICAgIGlmIFsgLWYgLi9nZGIgXQotLSAgICB0aGVuCi0tCUdEQj0iLi9n ZGIiCi0tICAgIGVsaWYgWyAtZiAuLi9nZGIgXQotLSAgICB0aGVuCi0tCUdEQj0iLi4vZ2RiIgot LSAgICBlbGlmIFsgLWYgLi4vLi4vZ2RiIF0KLS0gICAgdGhlbgotLQlHREI9Ii4uLy4uL2dkYiIK LS0gICAgZWxzZQotLQllY2hvICIkbXluYW1lOiB1bmFibGUgdG8gZmluZCB1c2FibGUgZ2RiIiA+ JjIKLS0JZXhpdCAxCi0tICAgIGZpCi0tZmkKLS0KLS1PQkpDT1BZPSR7T0JKQ09QWTotb2JqY29w eX0KLS0KLS1oYXZlX2xpbms9dW5rbm93bgotLW5leHRfaXNfb3V0cHV0X2ZpbGU9bm8KLS1vdXRw dXRfZmlsZT1hLm91dAotLQotLWZvciBhcmcgaW4gIiRAIgotLWRvCi0tICAgIGlmIFsgIiRuZXh0 X2lzX291dHB1dF9maWxlIiA9ICJ5ZXMiIF0KLS0gICAgdGhlbgotLQlvdXRwdXRfZmlsZT0iJGFy ZyIKLS0JbmV4dF9pc19vdXRwdXRfZmlsZT1ubwotLQljb250aW51ZQotLSAgICBmaQotLQotLSAg ICAjIFBvb3IgbWFuJ3MgZ2NjIGFyZ3VtZW50IHBhcnNlci4KLS0gICAgIyBXZSBkb24ndCBuZWVk IHRvIGhhbmRsZSBhbGwgYXJndW1lbnRzLCB3ZSBqdXN0IG5lZWQgdG8ga25vdyBpZiB3ZSdyZQot LSAgICAjIGRvaW5nIGEgbGluayBhbmQgd2hhdCB0aGUgb3V0cHV0IGZpbGUgaXMuCi0tICAgICMg SXQncyBub3QgcGVyZmVjdCwgYnV0IGl0IHNlZW1zIHRvIHdvcmsgd2VsbCBlbm91Z2ggZm9yIHRo ZSB0YXNrIGF0IGhhbmQuCi0tICAgIGNhc2UgIiRhcmciIGluCi0tICAgICItYyIpIGhhdmVfbGlu az1ubyA7OwotLSAgICAiLUUiKSBoYXZlX2xpbms9bm8gOzsKLS0gICAgIi1TIikgaGF2ZV9saW5r PW5vIDs7Ci0tICAgICItbyIpIG5leHRfaXNfb3V0cHV0X2ZpbGU9eWVzIDs7Ci0tICAgIGVzYWMK LS1kb25lCi0tCi0taWYgWyAiJG5leHRfaXNfb3V0cHV0X2ZpbGUiID0gInllcyIgXQotLXRoZW4K LS0gICAgZWNobyAiJG15bmFtZTogVW5hYmxlIHRvIGZpbmQgb3V0cHV0IGZpbGUiID4mMgotLSAg ICBleGl0IDEKLS1maQotLQotLWlmIFsgIiRoYXZlX2xpbmsiID0gIm5vIiBdCi0tdGhlbgotLSAg ICAiJEAiCi0tICAgIGV4aXQgJD8KLS1maQotLQotLWluZGV4X2ZpbGU9IiR7b3V0cHV0X2ZpbGV9 LmdkYi1pbmRleCIKLS1pZiBbIC1mICIkaW5kZXhfZmlsZSIgXQotLXRoZW4KLS0gICAgZWNobyAi JG15bmFtZTogSW5kZXggZmlsZSAkaW5kZXhfZmlsZSBleGlzdHMsIHdvbid0IGNsb2JiZXIuIiA+ JjIKLS0gICAgZXhpdCAxCi0tZmkKLS0KLS1vdXRwdXRfZGlyPSIke291dHB1dF9maWxlJS8qfSIK LS1bICIkb3V0cHV0X2RpciIgPSAiJG91dHB1dF9maWxlIiBdICYmIG91dHB1dF9kaXI9Ii4iCi0t Ci0tIiRAIgotLXJjPSQ/Ci0tWyAkcmMgIT0gMCBdICYmIGV4aXQgJHJjCi0taWYgWyAhIC1mICIk b3V0cHV0X2ZpbGUiIF0KLS10aGVuCi0tICAgIGVjaG8gIiRteW5hbWU6IEludGVybmFsIGVycm9y OiAkb3V0cHV0X2ZpbGUgbWlzc2luZy4iID4mMgotLSAgICBleGl0IDEKLS1maQotLQotLSRHREIg LS1iYXRjaC1zaWxlbnQgLW54IC1leCAic2V0IGF1dG8tbG9hZCBubyIgLWV4ICJmaWxlICRvdXRw dXRfZmlsZSIgLWV4ICJzYXZlIGdkYi1pbmRleCAkb3V0cHV0X2RpciIKLS1yYz0kPwotLVsgJHJj ICE9IDAgXSAmJiBleGl0ICRyYwotLQotLSMgR0RCIG1pZ2h0IG5vdCBhbHdheXMgY3JlYXRlIGFu IGluZGV4LiAgQ29wZS4KLS1pZiBbIC1mICIkaW5kZXhfZmlsZSIgXQotLXRoZW4KLS0gICAgJE9C SkNPUFkgLS1hZGQtc2VjdGlvbiAuZ2RiX2luZGV4PSIkaW5kZXhfZmlsZSIgXAotLQktLXNldC1z ZWN0aW9uLWZsYWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgXAotLQkiJG91dHB1dF9maWxlIiAiJG91 dHB1dF9maWxlIgotLSAgICByYz0kPwotLWVsc2UKLS0gICAgcmM9MAotLWZpCi0tCi0tcm0gLWYg IiRpbmRleF9maWxlIgotLWV4aXQgJHJjCi1kaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGktZHVtcC5j IGIvZ2RiL2NsaS9jbGktZHVtcC5jCi1pbmRleCA0YThiNWQxLi43MzQxZjAwIDEwMDY0NAotLS0t IGEvZ2RiL2NsaS9jbGktZHVtcC5jCi0rKysgYi9nZGIvY2xpL2NsaS1kdW1wLmMKLUBAIC0zMiw2 ICszMiw3IEBACi0gI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi0gI2luY2x1ZGUgImdk YmNvcmUuaCIKLSAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgotKyNpbmNsdWRlICJnZGJfYmZk LmgiCi0gCi0gI2RlZmluZSBYTUFMTE9DKFRZUEUpICgoVFlQRSopIHhtYWxsb2MgKHNpemVvZiAo VFlQRSkpKQotIAotQEAgLTExMSwxMiArMTEyLDEyIEBAIGJmZF9vcGVucl93aXRoX2NsZWFudXAg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICp0YXJnZXQpCi0gewotICAgYmZkICpp YmZkOwotIAotLSAgaWJmZCA9IGJmZF9vcGVuciAoZmlsZW5hbWUsIHRhcmdldCk7Ci0rICBpYmZk ID0gZ2RiX2JmZF9vcGVuciAoZmlsZW5hbWUsIHRhcmdldCk7Ci0gICBpZiAoaWJmZCA9PSBOVUxM KQotICAgICBlcnJvciAoXygiRmFpbGVkIHRvIG9wZW4gJXM6ICVzLiIpLCBmaWxlbmFtZSwgCi0g CSAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSAKLS0gIG1ha2VfY2xlYW51cF9i ZmRfY2xvc2UgKGliZmQpOwotKyAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoaWJmZCk7Ci0gICBp ZiAoIWJmZF9jaGVja19mb3JtYXQgKGliZmQsIGJmZF9vYmplY3QpKQotICAgICBlcnJvciAoXygi JyVzJyBpcyBub3QgYSByZWNvZ25pemVkIGZpbGUgZm9ybWF0LiIpLCBmaWxlbmFtZSk7Ci0gCi1A QCAtMTMxLDExICsxMzIsMTEgQEAgYmZkX29wZW53X3dpdGhfY2xlYW51cCAoY29uc3QgY2hhciAq ZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwKLSAKLSAgIGlmICgqbW9kZSA9PSAndycpCS8q IFdyaXRlOiBjcmVhdGUgbmV3IGZpbGUgKi8KLSAgICAgewotLSAgICAgIG9iZmQgPSBiZmRfb3Bl bncgKGZpbGVuYW1lLCB0YXJnZXQpOwotKyAgICAgIG9iZmQgPSBnZGJfYmZkX29wZW53IChmaWxl bmFtZSwgdGFyZ2V0KTsKLSAgICAgICBpZiAob2JmZCA9PSBOVUxMKQotIAllcnJvciAoXygiRmFp bGVkIHRvIG9wZW4gJXM6ICVzLiIpLCBmaWxlbmFtZSwgCi0gCSAgICAgICBiZmRfZXJybXNnIChi ZmRfZ2V0X2Vycm9yICgpKSk7Ci0tICAgICAgbWFrZV9jbGVhbnVwX2JmZF9jbG9zZSAob2JmZCk7 Ci0rICAgICAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAob2JmZCk7Ci0gICAgICAgaWYgKCFiZmRf c2V0X2Zvcm1hdCAob2JmZCwgYmZkX29iamVjdCkpCi0gCWVycm9yIChfKCJiZmRfb3Blbndfd2l0 aF9jbGVhbnVwOiAlcy4iKSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotICAgICB9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL2NvZmZyZWFkLmMgYi9nZGIvY29mZnJlYWQuYwotaW5kZXggYjBh OGI4Mi4uMGM3ZTZkOSAxMDA2NDQKLS0tLSBhL2dkYi9jb2ZmcmVhZC5jCi0rKysgYi9nZGIvY29m ZnJlYWQuYwotQEAgLTY1MywxMyArNjUzLDE0IEBAIGNvZmZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gICAgICAgY2hhciAqZGVidWdm aWxlOwotIAotICAgICAgIGRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9k ZWJ1Z2xpbmsgKG9iamZpbGUpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGRlYnVnZmls ZSk7Ci0gCi0gICAgICAgaWYgKGRlYnVnZmlsZSkKLSAJewotIAkgIGJmZCAqYWJmZCA9IHN5bWZp bGVfYmZkX29wZW4gKGRlYnVnZmlsZSk7Ci0gCi0rCSAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAo YWJmZCk7Ci0gCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChhYmZkLCBzeW1maWxlX2ZsYWdz LCBvYmpmaWxlKTsKLS0JICB4ZnJlZSAoZGVidWdmaWxlKTsKLSAJfQotICAgICB9Ci0gCi1kaWZm IC0tZ2l0IGEvZ2RiL2NvbnRyaWIvY2Mtd2l0aC10d2Vha3Muc2ggYi9nZGIvY29udHJpYi9jYy13 aXRoLXR3ZWFrcy5zaAotbmV3IGZpbGUgbW9kZSAxMDA3NTUKLWluZGV4IDAwMDAwMDAuLjdkNzkz MmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9jb250cmliL2NjLXdpdGgtdHdlYWtzLnNoCi1A QCAtMCwwICsxLDE2MiBAQAotKyMhIC9iaW4vc2gKLSsjIFdyYXBwZXIgYXJvdW5kIGdjYyB0byB0 d2VhayB0aGUgb3V0cHV0IGluIHZhcmlvdXMgd2F5cyB3aGVuIHJ1bm5pbmcKLSsjIHRoZSB0ZXN0 c3VpdGUuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGlzIHBy b2dyYW0gcmVxdWlyZXMgZ2RiIGFuZCBvYmpjb3B5IGluIGFkZGl0aW9uIHRvIGdjYy4KLSsjIFRo ZSBkZWZhdWx0IHZhbHVlcyBhcmUgZ2RiIGZyb20gdGhlIGJ1aWxkIHRyZWUgYW5kIG9iamNvcHkg ZnJvbSAkUEFUSC4KLSsjIFRoZXkgbWF5IGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZyBlbnZpcm9u bWVudCB2YXJpYWJsZXMgR0RCIGFuZCBPQkpDT1BZCi0rIyByZXNwZWN0aXZlbHkuCi0rIyBXZSBh c3N1bWUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGlzIGVpdGhlciAkb2JqL2dkYiBvciAkb2JqL2dk Yi90ZXN0c3VpdGUuCi0rIwotKyMgRXhhbXBsZSB1c2FnZToKLSsjCi0rIyBiYXNoJCBjZCAkb2Jq ZGlyL2dkYi90ZXN0c3VpdGUKLSsjIGJhc2gkIHJ1bnRlc3QgXAotKyMgICBDQ19GT1JfVEFSR0VU PSIvYmluL3NoICRzcmNkaXIvZ2RiL2NvbnRyaWIvY2Mtd2l0aC10d2Vha3Muc2ggQVJHUyBnY2Mi IFwKLSsjICAgQ1hYX0ZPUl9UQVJHRVQ9Ii9iaW4vc2ggJHNyY2Rpci9nZGIvY29udHJpYi9jYy13 aXRoLXR3ZWFrcy5zaCBBUkdTIGcrKyIKLSsjCi0rIyBGb3IgZG9jdW1lbnRhdGlvbiBvbiBpbmRl eCBmaWxlczogaW5mbyAtZiBnZGIuaW5mbyAtbiAiSW5kZXggRmlsZXMiCi0rIyBGb3IgaW5mb3Jt YXRpb24gYWJvdXQgJ2R3eicsIHNlZSB0aGUgYW5ub3VuY2VtZW50OgotKyMgICAgIGh0dHA6Ly9n Y2MuZ251Lm9yZy9tbC9nY2MvMjAxMi0wNC9tc2cwMDY4Ni5odG1sCi0rIyAoTW9yZSBkb2N1bWVu dGF0aW9uIGlzIHRvIGNvbWUuKQotKwotKyMgQVJHUyBkZXRlcm1pbmUgd2hhdCBpcyBkb25lLiAg VGhleSBjYW4gYmU6Ci0rIyAteiBjb21wcmVzcyB1c2luZyBkd3oKLSsjIC1tIGNvbXByZXNzIHVz aW5nIGR3eiAtbQotKyMgLWkgbWFrZSBhbiBpbmRleAotKyMgSWYgbm90aGluZyBpcyBnaXZlbiwg bm8gY2hhbmdlcyBhcmUgbWFkZQotKwotK215bmFtZT1jYy13aXRoLXR3ZWFrcy5zaAotKwotK2lm IFsgLXogIiRHREIiIF0KLSt0aGVuCi0rICAgIGlmIFsgLWYgLi9nZGIgXQotKyAgICB0aGVuCi0r CUdEQj0iLi9nZGIiCi0rICAgIGVsaWYgWyAtZiAuLi9nZGIgXQotKyAgICB0aGVuCi0rCUdEQj0i Li4vZ2RiIgotKyAgICBlbGlmIFsgLWYgLi4vLi4vZ2RiIF0KLSsgICAgdGhlbgotKwlHREI9Ii4u Ly4uL2dkYiIKLSsgICAgZWxzZQotKwllY2hvICIkbXluYW1lOiB1bmFibGUgdG8gZmluZCB1c2Fi bGUgZ2RiIiA+JjIKLSsJZXhpdCAxCi0rICAgIGZpCi0rZmkKLSsKLStPQkpDT1BZPSR7T0JKQ09Q WTotb2JqY29weX0KLSsKLStEV1o9JHtEV1o6LWR3en0KLSsKLStoYXZlX2xpbms9dW5rbm93bgot K25leHRfaXNfb3V0cHV0X2ZpbGU9bm8KLStvdXRwdXRfZmlsZT1hLm91dAotKwotK3dhbnRfaW5k ZXg9ZmFsc2UKLSt3YW50X2R3ej1mYWxzZQotK3dhbnRfbXVsdGk9ZmFsc2UKLSsKLSt3aGlsZSBb ICQjIC1ndCAwIF07IGRvCi0rICAgIGNhc2UgIiQxIiBpbgotKwkteikgd2FudF9kd3o9dHJ1ZSA7 OwotKwktaSkgd2FudF9pbmRleD10cnVlIDs7Ci0rCS1tKSB3YW50X211bHRpPXRydWUgOzsKLSsJ KikgYnJlYWsgOzsKLSsgICAgZXNhYwotKyAgICBzaGlmdAotK2RvbmUKLSsKLStmb3IgYXJnIGlu ICIkQCIKLStkbwotKyAgICBpZiBbICIkbmV4dF9pc19vdXRwdXRfZmlsZSIgPSAieWVzIiBdCi0r ICAgIHRoZW4KLSsJb3V0cHV0X2ZpbGU9IiRhcmciCi0rCW5leHRfaXNfb3V0cHV0X2ZpbGU9bm8K LSsJY29udGludWUKLSsgICAgZmkKLSsKLSsgICAgIyBQb29yIG1hbidzIGdjYyBhcmd1bWVudCBw YXJzZXIuCi0rICAgICMgV2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgYWxsIGFyZ3VtZW50cywgd2Ug anVzdCBuZWVkIHRvIGtub3cgaWYgd2UncmUKLSsgICAgIyBkb2luZyBhIGxpbmsgYW5kIHdoYXQg dGhlIG91dHB1dCBmaWxlIGlzLgotKyAgICAjIEl0J3Mgbm90IHBlcmZlY3QsIGJ1dCBpdCBzZWVt cyB0byB3b3JrIHdlbGwgZW5vdWdoIGZvciB0aGUgdGFzayBhdCBoYW5kLgotKyAgICBjYXNlICIk YXJnIiBpbgotKyAgICAiLWMiKSBoYXZlX2xpbms9bm8gOzsKLSsgICAgIi1FIikgaGF2ZV9saW5r PW5vIDs7Ci0rICAgICItUyIpIGhhdmVfbGluaz1ubyA7OwotKyAgICAiLW8iKSBuZXh0X2lzX291 dHB1dF9maWxlPXllcyA7OwotKyAgICBlc2FjCi0rZG9uZQotKwotK2lmIFsgIiRuZXh0X2lzX291 dHB1dF9maWxlIiA9ICJ5ZXMiIF0KLSt0aGVuCi0rICAgIGVjaG8gIiRteW5hbWU6IFVuYWJsZSB0 byBmaW5kIG91dHB1dCBmaWxlIiA+JjIKLSsgICAgZXhpdCAxCi0rZmkKLSsKLStpZiBbICIkaGF2 ZV9saW5rIiA9ICJubyIgXQotK3RoZW4KLSsgICAgIiRAIgotKyAgICBleGl0ICQ/Ci0rZmkKLSsK LStpbmRleF9maWxlPSIke291dHB1dF9maWxlfS5nZGItaW5kZXgiCi0raWYgWyAiJHdhbnRfaW5k ZXgiID0gdHJ1ZSBdICYmIFsgLWYgIiRpbmRleF9maWxlIiBdCi0rdGhlbgotKyAgICBlY2hvICIk bXluYW1lOiBJbmRleCBmaWxlICRpbmRleF9maWxlIGV4aXN0cywgd29uJ3QgY2xvYmJlci4iID4m MgotKyAgICBleGl0IDEKLStmaQotKwotK291dHB1dF9kaXI9IiR7b3V0cHV0X2ZpbGUlLyp9Igot K1sgIiRvdXRwdXRfZGlyIiA9ICIkb3V0cHV0X2ZpbGUiIF0gJiYgb3V0cHV0X2Rpcj0iLiIKLSsK LSsiJEAiCi0rcmM9JD8KLStbICRyYyAhPSAwIF0gJiYgZXhpdCAkcmMKLStpZiBbICEgLWYgIiRv dXRwdXRfZmlsZSIgXQotK3RoZW4KLSsgICAgZWNobyAiJG15bmFtZTogSW50ZXJuYWwgZXJyb3I6 ICRvdXRwdXRfZmlsZSBtaXNzaW5nLiIgPiYyCi0rICAgIGV4aXQgMQotK2ZpCi0rCi0raWYgWyAi JHdhbnRfaW5kZXgiID0gdHJ1ZSBdOyB0aGVuCi0rICAgICRHREIgLS1iYXRjaC1zaWxlbnQgLW54 IC1leCAic2V0IGF1dG8tbG9hZCBubyIgLWV4ICJmaWxlICRvdXRwdXRfZmlsZSIgLWV4ICJzYXZl IGdkYi1pbmRleCAkb3V0cHV0X2RpciIKLSsgICAgcmM9JD8KLSsgICAgWyAkcmMgIT0gMCBdICYm IGV4aXQgJHJjCi0rCi0rICAgICMgR0RCIG1pZ2h0IG5vdCBhbHdheXMgY3JlYXRlIGFuIGluZGV4 LiAgQ29wZS4KLSsgICAgaWYgWyAtZiAiJGluZGV4X2ZpbGUiIF0KLSsgICAgdGhlbgotKwkkT0JK Q09QWSAtLWFkZC1zZWN0aW9uIC5nZGJfaW5kZXg9IiRpbmRleF9maWxlIiBcCi0rCSAgICAtLXNl dC1zZWN0aW9uLWZsYWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgXAotKwkgICAgIiRvdXRwdXRfZmls ZSIgIiRvdXRwdXRfZmlsZSIKLSsJcmM9JD8KLSsgICAgZWxzZQotKwlyYz0wCi0rICAgIGZpCi0r ICAgIFsgJHJjICE9IDAgXSAmJiBleGl0ICRyYwotK2ZpCi0rCi0raWYgWyAiJHdhbnRfZHd6IiA9 IHRydWUgXTsgdGhlbgotKyAgICAkRFdaICIkb3V0cHV0X2ZpbGUiID4gL2Rldi9udWxsIDI+JjEK LStlbGlmIFsgIiR3YW50X211bHRpIiA9IHRydWUgXTsgdGhlbgotKyAgICBjcCAkb3V0cHV0X2Zp bGUgJHtvdXRwdXRfZmlsZX0uYWx0Ci0rICAgICREV1ogLW0gJHtvdXRwdXRfZmlsZX0uZHd6ICIk b3V0cHV0X2ZpbGUiICR7b3V0cHV0X2ZpbGV9LmFsdCA+IC9kZXYvbnVsbCAyPiYxCi0rZmkKLSsK LStybSAtZiAiJGluZGV4X2ZpbGUiCi0rZXhpdCAkcmMKLWRpZmYgLS1naXQgYS9nZGIvY29yZWxv dy5jIGIvZ2RiL2NvcmVsb3cuYwotaW5kZXggZGQ2MjU2MC4uMzQwYjE0OSAxMDA2NDQKLS0tLSBh L2dkYi9jb3JlbG93LmMKLSsrKyBiL2dkYi9jb3JlbG93LmMKLUBAIC00Niw2ICs0Niw3IEBACi0g I2luY2x1ZGUgImZpbGVuYW1lcy5oIgotICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKLSAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotICNpZm5kZWYgT19MQVJH RUZJTEUKLSAjZGVmaW5lIE9fTEFSR0VGSUxFIDAKLUBAIC0yMTUsOSArMjE2LDcgQEAgY29yZV9j bG9zZSAoaW50IHF1aXR0aW5nKQotIAkgIGNvcmVfZGF0YSA9IE5VTEw7Ci0gCX0KLSAKLS0gICAg ICBuYW1lID0gYmZkX2dldF9maWxlbmFtZSAoY29yZV9iZmQpOwotLSAgICAgIGdkYl9iZmRfY2xv c2Vfb3Jfd2FybiAoY29yZV9iZmQpOwotLSAgICAgIHhmcmVlIChuYW1lKTsKLSsgICAgICBnZGJf YmZkX3VucmVmIChjb3JlX2JmZCk7Ci0gICAgICAgY29yZV9iZmQgPSBOVUxMOwotICAgICB9Ci0g ICBjb3JlX3ZlYyA9IE5VTEw7Ci1AQCAtMzE5LDkgKzMxOCw5IEBAIGNvcmVfb3BlbiAoY2hhciAq ZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKLSAgIGlmIChzY3JhdGNoX2NoYW4gPCAwKQotICAgICBw ZXJyb3Jfd2l0aF9uYW1lIChmaWxlbmFtZSk7Ci0gCi0tICB0ZW1wX2JmZCA9IGJmZF9mb3BlbiAo ZmlsZW5hbWUsIGdudXRhcmdldCwgCi0tCQkJd3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIgOiBGT1BF Tl9SQiwKLS0JCQlzY3JhdGNoX2NoYW4pOwotKyAgdGVtcF9iZmQgPSBnZGJfYmZkX2ZvcGVuIChm aWxlbmFtZSwgZ251dGFyZ2V0LCAKLSsJCQkgICAgd3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIgOiBG T1BFTl9SQiwKLSsJCQkgICAgc2NyYXRjaF9jaGFuKTsKLSAgIGlmICh0ZW1wX2JmZCA9PSBOVUxM KQotICAgICBwZXJyb3Jfd2l0aF9uYW1lIChmaWxlbmFtZSk7Ci0gCi1AQCAtMzMyLDcgKzMzMSw3 IEBAIGNvcmVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKLSAgICAgICAvKiBG SVhNRTogc2hvdWxkIGJlIGNoZWNraW5nIGZvciBlcnJvcnMgZnJvbSBiZmRfY2xvc2UgKGZvciBv bmUKLSAgICAgICAgICB0aGluZywgb24gZXJyb3IgaXQgZG9lcyBub3QgZnJlZSBhbGwgdGhlIHN0 b3JhZ2UgYXNzb2NpYXRlZAotICAgICAgICAgIHdpdGggdGhlIGJmZCkuICAqLwotLSAgICAgIG1h a2VfY2xlYW51cF9iZmRfY2xvc2UgKHRlbXBfYmZkKTsKLSsgICAgICBtYWtlX2NsZWFudXBfYmZk X3VucmVmICh0ZW1wX2JmZCk7Ci0gICAgICAgZXJyb3IgKF8oIlwiJXNcIiBpcyBub3QgYSBjb3Jl IGR1bXA6ICVzIiksCi0gCSAgICAgZmlsZW5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3Ig KCkpKTsKLSAgICAgfQotQEAgLTM0MCw3ICszMzksNyBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVu YW1lLCBpbnQgZnJvbV90dHkpCi0gICAvKiBMb29rcyBzZW1pLXJlYXNvbmFibGUuICBUb3NzIHRo ZSBvbGQgY29yZSBmaWxlIGFuZCB3b3JrIG9uIHRoZQotICAgICAgbmV3LiAgKi8KLSAKLS0gIGRp c2NhcmRfY2xlYW51cHMgKG9sZF9jaGFpbik7CS8qIERvbid0IGZyZWUgZmlsZW5hbWUgYW55IG1v cmUgKi8KLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotICAgdW5wdXNoX3RhcmdldCAoJmNv cmVfb3BzKTsKLSAgIGNvcmVfYmZkID0gdGVtcF9iZmQ7Ci0gICBvbGRfY2hhaW4gPSBtYWtlX2Ns ZWFudXAgKGNvcmVfY2xvc2VfY2xlYW51cCwgMCAvKmlnbm9yZSovKTsKKyAJICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIlcyIsIAorIAkJCSAgICBwbG9uZ2VzdCAoaGlnaF9ib3VuZCAtIGxv d19ib3VuZCArIDEpKTsKKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAoaXNfdmVjdG9yID8g IikpKSIgOiAiXSIpKTsKIGRpZmYgLS1naXQgYS9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUu aW4gYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KLWluZGV4IDg3YzZkZDQuLjFjMjY2 NTIgMTAwNjQ0CitpbmRleCBkOThhYzc3Li5lMjQ4Mzk5IDEwMDY0NAogLS0tIGEvZ2RiL2RhdGEt ZGlyZWN0b3J5L01ha2VmaWxlLmluCiArKysgYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUu aW4KLUBAIC01MiwxNCArNTIsMjUgQEAgU1lTQ0FMTFNfRklMRVMgPSBcCitAQCAtNTIsMTcgKzUy LDI4IEBAIFNZU0NBTExTX0ZJTEVTID0gXAogIFBZVEhPTl9ESVIgPSBweXRob24KICBQWVRIT05f SU5TVEFMTF9ESVIgPSAkKERFU1RESVIpJChHREJfREFUQURJUikvJChQWVRIT05fRElSKQogIFBZ VEhPTl9GSUxFUyA9IFwKQEAgLTgyNywxMCArMTY4LDEzIEBAIGluZGV4IDg3YzZkZDQuLjFjMjY2 NTIgMTAwNjQ0CiArCWdkYi9jb21tYW5kL2JhY2t0cmFjZS5weSBcCiArCWdkYi9jb21tYW5kL2ln bm9yZV9lcnJvcnMucHkgXAogKwlnZGIvY29tbWFuZC9wYWhvbGUucHkgXAorIAlnZGIvY29tbWFu ZC90eXBlX3ByaW50ZXJzLnB5IFwKICAJZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwK ICAJZ2RiL2NvbW1hbmQvcHJvbXB0LnB5IFwKLS0JZ2RiL2NvbW1hbmQvZXhwbG9yZS5weQotKwln ZGIvY29tbWFuZC9leHBsb3JlLnB5IFwKKyAJZ2RiL2NvbW1hbmQvZXhwbG9yZS5weSBcCisgCWdk Yi9mdW5jdGlvbi9fX2luaXRfXy5weSBcCistCWdkYi9mdW5jdGlvbi9zdHJmbnMucHkKKysJZ2Ri L2Z1bmN0aW9uL3N0cmZucy5weSBcCiArCWdkYi9jb21tYW5kL3JlcXVpcmUucHkgXAogKwlnZGIv Y29tbWFuZC91cHRvLnB5IFwKICsJZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IFwKQEAgLTg0Miwz MyArMTg2LDExIEBAIGluZGV4IDg3YzZkZDQuLjFjMjY2NTIgMTAwNjQ0CiAgCiAgRkxBR1NfVE9f UEFTUyA9IFwKICAJInByZWZpeD0kKHByZWZpeCkiIFwKLWRpZmYgLS1naXQgYS9nZGIvZGVmcy5o IGIvZ2RiL2RlZnMuaAotaW5kZXggMWM2ZmE3OS4uZWMwODM0OCAxMDA2NDQKLS0tLSBhL2dkYi9k ZWZzLmgKLSsrKyBiL2dkYi9kZWZzLmgKLUBAIC0zMTUsNyArMzE1LDcgQEAgZXh0ZXJuIHN0cnVj dCBjbGVhbnVwICptYWtlX2NsZWFudXBfY2xvc2UgKGludCBmZCk7Ci0gCi0gZXh0ZXJuIHN0cnVj dCBjbGVhbnVwICptYWtlX2NsZWFudXBfZmNsb3NlIChGSUxFICpmaWxlKTsKLSAKLS1leHRlcm4g c3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKGJmZCAqYWJmZCk7Ci0rZXh0 ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfYmZkX3VucmVmIChiZmQgKmFiZmQpOwot IAotIHN0cnVjdCBvYnN0YWNrOwotIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVw X29ic3RhY2tfZnJlZSAoc3RydWN0IG9ic3RhY2sgKm9ic3RhY2spOwotQEAgLTM1Myw2ICszNTMs OCBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5m byAodm9pZCk7Ci0gZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICoKLSAgIHNldF9iYXRjaF9mbGFnX2Fu ZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpOwotIAotK2V4dGVybiBzdHJ1 Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKHZvaWQpOwot KwotIGV4dGVybiBjaGFyICpnZGJfcmVhbHBhdGggKGNvbnN0IGNoYXIgKik7Ci0gZXh0ZXJuIGNo YXIgKnhmdWxscGF0aCAoY29uc3QgY2hhciAqKTsKLSAKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dk Yi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggNjhlYTgxNy4uNTk0NWJhYyAx MDA2NDQKK2luZGV4IDcyOGU0NGIuLjM2NTkxMzkgMTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50 ZXhpbmZvCiArKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtMTIwMCw2ICsxMjAwLDE2IEBA IGZvciByZW1vdGUgZGVidWdnaW5nLgorQEAgLTEyMTcsNiArMTIxNywxNiBAQCBmb3IgcmVtb3Rl IGRlYnVnZ2luZy4KICBSdW4gdXNpbmcgQHZhcntkZXZpY2V9IGZvciB5b3VyIHByb2dyYW0ncyBz dGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgogIEBjIEZJWE1FOiBraW5nZG9uIHRoaW5rcyB0aGVy ZSBpcyBtb3JlIHRvIC10dHkuICBJbnZlc3RpZ2F0ZS4KICAKQEAgLTg4NSw3ICsyMDcsNyBAQCBp bmRleCA2OGVhODE3Li41OTQ1YmFjIDEwMDY0NAogIEBjIHJlc29sdmUgdGhlIHNpdHVhdGlvbiBv ZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5kZXggQGNvZGV7LS10dWl9Ci1A QCAtMjI1NjMsOCArMjI1NzMsNiBAQCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBs ZToKK0BAIC0yMjczOCw4ICsyMjc0OCw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBl eGFtcGxlOgogIAogIEBzbWFsbGV4YW1wbGUKICAoQHZhbHVle0dEQlB9KSBweXRob24KQEAgLTg5 NCw3ICsyMTYsNyBAQCBpbmRleCA2OGVhODE3Li41OTQ1YmFjIDEwMDY0NAogID5wcmludCAyMwog ID5lbmQKICAyMwotQEAgLTIyNTc4LDYgKzIyNTg2LDE0IEBAIGNvbnRyb2xsZWQgdXNpbmcgQGNv ZGV7c2V0IHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle2Z1bGx9LCB0aGVuCitAQCAtMjI3 NTMsNiArMjI3NjEsMTQgQEAgY29udHJvbGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHByaW50 LXN0YWNrfTogaWYgQGNvZGV7ZnVsbH0sIHRoZW4KICBmdWxsIFB5dGhvbiBzdGFjayBwcmludGlu ZyBpcyBlbmFibGVkOyBpZiBAY29kZXtub25lfSwgdGhlbiBQeXRob24gc3RhY2sKICBhbmQgbWVz c2FnZSBwcmludGluZyBpcyBkaXNhYmxlZDsgaWYgQGNvZGV7bWVzc2FnZX0sIHRoZSBkZWZhdWx0 LCBvbmx5CiAgdGhlIG1lc3NhZ2UgY29tcG9uZW50IG9mIHRoZSBlcnJvciBpcyBwcmludGVkLgpA QCAtOTA5LDcgKzIzMSw3IEBAIGluZGV4IDY4ZWE4MTcuLjU5NDViYWMgMTAwNjQ0CiAgQGVuZCB0 YWJsZQogIAogIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhlY3V0ZSBhIFB5dGhvbiBzY3JpcHQg ZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1AQCAtMjI1OTksNiArMjI2MTUsMTQgQEAgYW5kIHRodXMg aXMgYWx3YXlzIGF2YWlsYWJsZS4KK0BAIC0yMjc3NCw2ICsyMjc5MCwxNCBAQCBhbmQgdGh1cyBp cyBhbHdheXMgYXZhaWxhYmxlLgogIEBjaW5kZXggcHl0aG9uIGFwaQogIEBjaW5kZXggcHJvZ3Jh bW1pbmcgaW4gcHl0aG9uCiAgCkBAIC05MjQsMjMgKzI0NiwxMSBAQCBpbmRleCA2OGVhODE3Li41 OTQ1YmFjIDEwMDY0NAogIEBjaW5kZXggcHl0aG9uIHN0ZG91dAogIEBjaW5kZXggcHl0aG9uIHBh Z2luYXRpb24KICBBdCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBj b2Rle3N5cy5zdGRvdXR9IGFuZAotQEAgLTM0NTM2LDYgKzM0NTYwLDExIEBAIFNoYXJlZCBsaWJy YXJ5IGV2ZW50cy4KLSAKLSBAZW5kIHRhYmxlCi0gCi0rQGtpbmRleCBtYWludCBpbmZvIGJmZHMK LStAaXRlbSBtYWludCBpbmZvIGJmZHMKLStUaGlzIHByaW50cyBpbmZvcm1hdGlvbiBhYm91dCBl YWNoIEBjb2Rle2JmZH0gb2JqZWN0IHRoYXQgaXMga25vd24gdG8KLStAdmFsdWV7R0RCTn0uICBA eHJlZntUb3AsICwgQkZELCBiZmQsIFRoZSBCaW5hcnkgRmlsZSBEZXNjcmlwdG9yIExpYnJhcnl9 LgotKwotIEBraW5kZXggc2V0IGRpc3BsYWNlZC1zdGVwcGluZwotIEBraW5kZXggc2hvdyBkaXNw bGFjZWQtc3RlcHBpbmcKLSBAY2luZGV4IGRpc3BsYWNlZCBzdGVwcGluZyBzdXBwb3J0CiBkaWZm IC0tZ2l0IGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbyBiL2dkYi9kb2MvZ2RiaW50LnRleGluZm8K LWluZGV4IDVlMDBmMWYuLmM1YzQzMmIgMTAwNjQ0CitpbmRleCA0YTc1YzI2Li45MTQ0NmZlIDEw MDY0NAogLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGJpbnQu dGV4aW5mbwotQEAgLTIxMDIsNiArMjEwMiwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0 byBoYW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAorQEAgLTIxMDEs NiArMjEwMSwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9scyBp bmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAogIHdlIGNyZWF0ZSBAZGZue3BhcnRpYWwgc3lt Ym9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCiAgc3ltYm9scywgYW5kIG9u bHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4gbmVjZXNzYXJ5LgogIApA QCAtOTU5LDcgKzI2OSw3IEBAIGluZGV4IDVlMDBmMWYuLmM1YzQzMmIgMTAwNjQ0CiAgQHNlY3Rp b24gU3ltYm9sIFJlYWRpbmcKICAKICBAY2luZGV4IHN5bWJvbCByZWFkaW5nCi1AQCAtMjE5NCw2 ICsyMjA2LDcgQEAgc3ltdGFiLiAgVXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91 bGQgaGF2ZSBiZWVuIHNldCB0byAxLCBhbmQKK0BAIC0yMTkzLDYgKzIyMDUsNyBAQCBzeW10YWIu ICBVcG9uIHJldHVybiwgQGNvZGV7cHN0LT5yZWFkaW59IHNob3VsZCBoYXZlIGJlZW4gc2V0IHRv IDEsIGFuZAogIHplcm8gaWYgdGhlcmUgd2VyZSBubyBzeW1ib2xzIGluIHRoYXQgcGFydCBvZiB0 aGUgc3ltYm9sIGZpbGUuCiAgQGVuZCB0YWJsZQogIApAQCAtOTY3LDcgKzI3Nyw3IEBAIGluZGV4 IDVlMDBmMWYuLmM1YzQzMmIgMTAwNjQ0CiAgQHNlY3Rpb24gUGFydGlhbCBTeW1ib2wgVGFibGVz CiAgCiAgQHZhbHVle0dEQk59IGhhcyB0aHJlZSB0eXBlcyBvZiBzeW1ib2wgdGFibGVzOgotQEAg LTIyOTUsNiArMjMwOCw3IEBAIGFuZCBwYXJ0aWFsIHN5bWJvbCB0YWJsZXMgYmVoaW5kIGEgc2V0 IG9mIGZ1bmN0aW9uIHBvaW50ZXJzIGtub3duIGFzCitAQCAtMjI5NCw2ICsyMzA3LDcgQEAgYW5k IHBhcnRpYWwgc3ltYm9sIHRhYmxlcyBiZWhpbmQgYSBzZXQgb2YgZnVuY3Rpb24gcG9pbnRlcnMg a25vd24gYXMKICB0aGUgQGRmbntxdWljayBzeW1ib2wgZnVuY3Rpb25zfS4gIFRoZXNlIGFyZSBk b2N1bWVudGVkIGluCiAgQGZpbGV7c3ltZmlsZS5ofS4KICAKQEAgLTk3NSw3ICsyODUsNyBAQCBp bmRleCA1ZTAwZjFmLi5jNWM0MzJiIDEwMDY0NAogIEBzZWN0aW9uIFR5cGVzCiAgCiAgQHVubnVt YmVyZWRzdWJzZWMgRnVuZGFtZW50YWwgVHlwZXMgKGUuZy4sIEBjb2Rle0ZUX1ZPSUR9LCBAY29k ZXtGVF9CT09MRUFOfSkuCi1AQCAtMjMxNyw2ICsyMzMxLDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBA Y29kZXtUWVBFX0NPREVfKn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CitAQCAtMjMx Niw2ICsyMzMwLDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBAY29kZXtUWVBFX0NPREVfKn0gdHlwZSwg YW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CiAgb3RoZXIgbWVtYmVycyBvZiB0aGUgdHlwZSBzdHJ1 Y3QsIHN1Y2ggYXMgd2hldGhlciB0aGUgdHlwZSBpcyBzaWduZWQKICBvciB1bnNpZ25lZCwgYW5k IGhvdyBtYW55IGJpdHMgaXQgdXNlcy4KICAKQEAgLTk4Myw3ICsyOTMsNyBAQCBpbmRleCA1ZTAw ZjFmLi5jNWM0MzJiIDEwMDY0NAogIEB1bm51bWJlcmVkc3Vic2VjIEJ1aWx0aW4gVHlwZXMgKGUu Zy4sIEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwgQGNvZGV7YnVpbHRpbl90eXBlX2NoYXJ9KS4K ICAKICBUaGVzZSBhcmUgaW5zdGFuY2VzIG9mIHR5cGUgc3RydWN0cyB0aGF0IHJvdWdobHkgY29y cmVzcG9uZCB0bwotQEAgLTIzMzEsNiArMjM0Niw3IEBAIG9ubHkgb25lIGluc3RhbmNlIGV4aXN0 cywgd2hpbGUgQGZpbGV7Yy1sYW5nLmN9IGJ1aWxkcyBhcyBtYW55CitAQCAtMjMzMCw2ICsyMzQ1 LDcgQEAgb25seSBvbmUgaW5zdGFuY2UgZXhpc3RzLCB3aGlsZSBAZmlsZXtjLWxhbmcuY30gYnVp bGRzIGFzIG1hbnkKICBAY29kZXtUWVBFX0NPREVfSU5UfSB0eXBlcyBhcyBuZWVkZWQsIHdpdGgg ZWFjaCBvbmUgYXNzb2NpYXRlZCB3aXRoCiAgc29tZSBwYXJ0aWN1bGFyIG9iamZpbGUuCiAgCkBA IC05OTEsNyArMzAxLDcgQEAgaW5kZXggNWUwMGYxZi4uYzVjNDMyYiAxMDA2NDQKICBAc2VjdGlv biBPYmplY3QgRmlsZSBGb3JtYXRzCiAgQGNpbmRleCBvYmplY3QgZmlsZSBmb3JtYXRzCiAgCi1A QCAtMjQxNiw2ICsyNDMyLDcgQEAgU09NLCB3aGljaCBpcyBhIGNyb3NzLWxhbmd1YWdlIEFCSSku CitAQCAtMjQxNSw2ICsyNDMxLDcgQEAgU09NLCB3aGljaCBpcyBhIGNyb3NzLWxhbmd1YWdlIEFC SSkuCiAgCiAgVGhlIFNPTSByZWFkZXIgaXMgaW4gQGZpbGV7c29tcmVhZC5jfS4KICAKQEAgLTk5 OSw3ICszMDksNyBAQCBpbmRleCA1ZTAwZjFmLi5jNWM0MzJiIDEwMDY0NAogIEBzZWN0aW9uIERl YnVnZ2luZyBGaWxlIEZvcm1hdHMKICAKICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGNoYXJhY3Rl cmlzdGljcyBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAotQEAgLTI0ODcsNiArMjUwNCw3 IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgorQEAgLTI0ODYs NiArMjUwMyw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgog IEBjaW5kZXggU09NIGRlYnVnZ2luZyBpbmZvCiAgTGlrZSBDT0ZGLCB0aGUgU09NIGRlZmluaXRp b24gaW5jbHVkZXMgZGVidWdnaW5nIGluZm9ybWF0aW9uLgogIApAQCAtMTAwNyw3ICszMTcsNyBA QCBpbmRleCA1ZTAwZjFmLi5jNWM0MzJiIDEwMDY0NAogIEBzZWN0aW9uIEFkZGluZyBhIE5ldyBT eW1ib2wgUmVhZGVyIHRvIEB2YWx1ZXtHREJOfQogIAogIEBjaW5kZXggYWRkaW5nIGRlYnVnZ2lu ZyBpbmZvIHJlYWRlcgotQEAgLTI1MDksNiArMjUyNyw3IEBAIHdpbGwgb25seSBldmVyIGJlIGlt cGxlbWVudGVkIGJ5IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAorQEAgLTI1 MDgsNiArMjUyNiw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxlbWVudGVkIGJ5IG9uZSBvYmpl Y3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAogIGRpcmVjdGx5LiAgVGhpcyBpbnRlcmZhY2Ug c2hvdWxkIGJlIGRlc2NyaWJlZCBpbiBhIGZpbGUKICBAZmlsZXtiZmQvbGliQHZhcnt4eXp9Lmh9 LCB3aGljaCBpcyBpbmNsdWRlZCBieSBAdmFsdWV7R0RCTn0uCiAgCkBAIC0xMDE1LDcgKzMyNSw3 IEBAIGluZGV4IDVlMDBmMWYuLmM1YzQzMmIgMTAwNjQ0CiAgQHNlY3Rpb24gTWVtb3J5IE1hbmFn ZW1lbnQgZm9yIFN5bWJvbCBGaWxlcwogIAogIE1vc3QgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBh IGxvYWRlZCBzeW1ib2wgZmlsZSBpcyBzdG9yZWQgb24KLUBAIC0yNTIwLDEwICsyNTM5LDQ1IEBA IHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQgb3IgcmVsb2FkZWQuICBUaGVy ZWZvcmUgb25lCitAQCAtMjUxOSwxMCArMjUzOCw0NSBAQCByZWxlYXNlZCB3aGVuIHRoZSBvYmpm aWxlIGlzIHVubG9hZGVkIG9yIHJlbG9hZGVkLiAgVGhlcmVmb3JlIG9uZQogIG9iamZpbGUgbXVz dCBub3QgcmVmZXJlbmNlIHN5bWJvbCBvciB0eXBlIGRhdGEgZnJvbSBhbm90aGVyIG9iamZpbGU7 CiAgdGhleSBjb3VsZCBiZSB1bmxvYWRlZCBhdCBkaWZmZXJlbnQgdGltZXMuCiAgCkBAIC0xMDY2 LDExICszNzYsMTEgQEAgaW5kZXggNWUwMGYxZi4uYzVjNDMyYiAxMDA2NDQKICAKICBAbm9kZSBM YW5ndWFnZSBTdXBwb3J0CiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpIGIvZ2Ri L2RvYy9vYnNlcnZlci50ZXhpCi1pbmRleCA2ODI3ZWQ4Li5jNjNiOTAxIDEwMDY0NAoraW5kZXgg ODdjMDhlMS4uY2M4ZjQ5OCAxMDA2NDQKIC0tLSBhL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQogKysr IGIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi1AQCAtMjMwLDYgKzIzMCwxMSBAQCB0aGUgY3VycmVu dCB0b3AtbGV2ZWwgcHJvbXB0LgotIFZhcmlhYmxlIGdkYl9kYXRhZGlyIGhhcyBiZWVuIHNldC4g IFRoZSB2YWx1ZSBtYXkgbm90IG5lY2Vzc2FyaWx5IGNoYW5nZS4KK0BAIC0yNDYsNiArMjQ2LDEx IEBAIFRoZSB0cmFjZSBzdGF0ZSB2YXJpYWJsZSBAdmFye25hbWV9IGlzIGRlbGV0ZWQuICBJZiBA dmFye25hbWV9IGlzCisgQGNvZGV7TlVMTH0sIGFsbCB0cmFjZSBzdGF0ZSB2YXJpYWJsZXMgYXJl IGRlbGV0ZWQuCiAgQGVuZCBkZWZ0eXBlZnVuCiAgCiArQGMgQGRlZnR5cGVmdW4gdm9pZCBtYXJr X3VzZWQgKHZvaWQpCkBAIC0xMDgxLDU1ICszOTEsMTEgQEAgaW5kZXggNjgyN2VkOC4uYzYzYjkw MSAxMDA2NDQKICBAZGVmdHlwZWZ1biB2b2lkIHRlc3Rfbm90aWZpY2F0aW9uIChpbnQgQHZhcntz b21lYXJnfSkKICBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGludGVybmFsIHRlc3RpbmcuICBE byBub3QgdXNlLiAgCiAgU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cC4KLWRpZmYg LS1naXQgYS9nZGIvZHNyZWMuYyBiL2dkYi9kc3JlYy5jCi1pbmRleCBkMmM5OWIyLi5mMzlkMGVk IDEwMDY0NAotLS0tIGEvZ2RiL2RzcmVjLmMKLSsrKyBiL2dkYi9kc3JlYy5jCi1AQCAtMjMsNiAr MjMsNyBAQAotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAj aW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gZXh0ZXJu IHZvaWQgcmVwb3J0X3RyYW5zZmVyX3BlcmZvcm1hbmNlICh1bnNpZ25lZCBsb25nLCB0aW1lX3Qs IHRpbWVfdCk7Ci0gCi1AQCAtNTYsMTkgKzU3LDIyIEBAIGxvYWRfc3JlYyAoc3RydWN0IHNlcmlh bCAqZGVzYywgY29uc3QgY2hhciAqZmlsZSwgYmZkX3ZtYSBsb2FkX29mZnNldCwKLSAgIGludCBy ZWNsZW47Ci0gICB0aW1lX3Qgc3RhcnRfdGltZSwgZW5kX3RpbWU7Ci0gICB1bnNpZ25lZCBsb25n IGRhdGFfY291bnQgPSAwOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0gCi0gICBzcmVj ID0gKGNoYXIgKikgYWxsb2NhIChtYXhyZWNzaXplICsgMSk7Ci0gCi0tICBhYmZkID0gYmZkX29w ZW5yIChmaWxlLCAwKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29wZW5yIChmaWxlLCAwKTsKLSAgIGlm ICghYWJmZCkKLSAgICAgewotICAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiVW5hYmxlIHRvIG9w ZW4gZmlsZSAlc1xuIiksIGZpbGUpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotKyAgY2xl YW51cCA9IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFiZmQpOwotICAgaWYgKGJmZF9jaGVja19m b3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpID09IDApCi0gICAgIHsKLSAgICAgICBwcmludGZfZmls dGVyZWQgKF8oIkZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlXG4iKSk7Ci0rICAgICAgZG9fY2xl YW51cHMgKGNsZWFudXApOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAgLTE3MCw2ICsx NzQsNyBAQCBsb2FkX3NyZWMgKHN0cnVjdCBzZXJpYWwgKmRlc2MsIGNvbnN0IGNoYXIgKmZpbGUs IGJmZF92bWEgbG9hZF9vZmZzZXQsCi0gICBzZXJpYWxfZmx1c2hfaW5wdXQgKGRlc2MpOwotIAot ICAgcmVwb3J0X3RyYW5zZmVyX3BlcmZvcm1hbmNlIChkYXRhX2NvdW50LCBzdGFydF90aW1lLCBl bmRfdGltZSk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gfQotIAotIC8qCiBkaWZmIC0t Z2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBiL2dkYi9kd2FyZjJleHByLmMKLWluZGV4IDIxNGIzNzEu LmQ5YjM3NTEgMTAwNjQ0CitpbmRleCA3NTJkNzgyLi5hYjBhM2ViIDEwMDY0NAogLS0tIGEvZ2Ri L2R3YXJmMmV4cHIuYwogKysrIGIvZ2RiL2R3YXJmMmV4cHIuYwotQEAgLTE0ODAsNiArMTQ4MCwx NCBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCitA QCAtMTQ3OSw2ICsxNDc5LDE0IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHQgKmN0eCwKICAJICB9CiAgCSAgYnJlYWs7CiAgCkBAIC0xMTQ1LDEwICs0MTEsMTAg QEAgaW5kZXggMjE0YjM3MS4uZDliMzc1MSAxMDA2NDQKICAJICBlcnJvciAoXygiVW5oYW5kbGVk IGR3YXJmIGV4cHJlc3Npb24gb3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9CiBkaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMmV4cHIuaCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IDE5ZWZiZmQuLjBlMGU0 OTggMTAwNjQ0CitpbmRleCBlODU0ODZhLi5lN2FjNzk5IDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJm MmV4cHIuaAogKysrIGIvZ2RiL2R3YXJmMmV4cHIuaAotQEAgLTc4LDEyICs3OCw4IEBAIHN0cnVj dCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKK0BAIC03NywxMiArNzcsOCBAQCBzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0X2Z1bmNzCiAgICAgICBUaGlzIGNhbiB0aHJvdyBhbiBleGNlcHRpb24g aWYgdGhlIGluZGV4IGlzIG91dCBvZiByYW5nZS4gICovCiAgICBDT1JFX0FERFIgKCpnZXRfYWRk cl9pbmRleCkgKHZvaWQgKmJhdG9uLCB1bnNpZ25lZCBpbnQgaW5kZXgpOwogIApAQCAtMTE2Miw3 ICs0MjgsNyBAQCBpbmRleCAxOWVmYmZkLi4wZTBlNDk4IDEwMDY0NAogIAogIC8qIFRoZSBsb2Nh dGlvbiBvZiBhIHZhbHVlLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYybG9jLmMgYi9nZGIv ZHdhcmYybG9jLmMKLWluZGV4IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAwNjQ0CitpbmRleCAyMjgyZmVi Li4xM2U3YmJjIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmxvYy5jCiArKysgYi9nZGIvZHdhcmYy bG9jLmMKIEBAIC0yOTMsNiArMjkzLDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KQEAgLTEx NzUsNyArNDQxLDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQKICB9OwogIAogIC8q IEhlbHBlciBmdW5jdGlvbnMgZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gICovCi1AQCAt MzUyLDE2ICszNTUsMTQgQEAgc3RhdGljIHZvaWQKK0BAIC0zNTYsMTYgKzM1OSwxNCBAQCBzdGF0 aWMgdm9pZAogIGR3YXJmX2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1 bmMsIENPUkVfQUREUiBwYywKICAJCQkgY29uc3QgZ2RiX2J5dGUgKipzdGFydCwgc2l6ZV90ICps ZW5ndGgpCiAgewpAQCAtMTE5NCw3ICs0NjAsNyBAQCBpbmRleCAzOGU0ODE0Li40NmEwMzNkIDEw MDY0NAogICAgICB7CiAgICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpzeW1iYXRv bjsKICAKLUBAIC0zNzQsMTAgKzM3NSwyMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3Ry dWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCitAQCAtMzc4LDEwICszNzksMjMg QEAgZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVjdCBzeW1ib2wgKmZyYW1lZnVuYywgQ09S RV9BRERSIHBjLAogICAgICAgIGVsc2UKICAJKmxlbmd0aCA9IDA7CiAgICAgIH0KQEAgLTEyMTks NyArNDg1LDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQKICB9CiAgCiAgLyogSGVs cGVyIGZ1bmN0aW9uIGZvciBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MuICBDb21wdXRlcyB0aGUg Q0ZBIGZvcgotQEAgLTQ0NSw2ICs0NTksODUgQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1 Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIGN1X29mZnNldCBkaWVfb2Zmc2V0KQorQEAgLTQ0 OCw2ICs0NjIsODUgQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9j b250ZXh0ICpjdHgsIGN1X29mZnNldCBkaWVfb2Zmc2V0KQogIAkJICAgICBjdHgtPmZ1bmNzLT5n ZXRfZnJhbWVfcGMsIGN0eC0+YmF0b24pOwogIH0KICAKQEAgLTEzMDUsNyArNTcxLDcgQEAgaW5k ZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQKICAvKiBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHR5cGUgKgotQEAg LTExMzksMTAgKzEyMzIsMTIgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1 ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAorQEAgLTExNTAsMTAgKzEyNDMsMTIg QEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4LAogIAogICAgc2F2ZWRfY3R4LmdkYmFyY2ggPSBjdHgtPmdkYmFyY2g7 CiAgICBzYXZlZF9jdHguYWRkcl9zaXplID0gY3R4LT5hZGRyX3NpemU7CkBAIC0xMzE4LDcgKzU4 NCw3IEBAIGluZGV4IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAwNjQ0CiAgICBjdHgtPm9mZnNldCA9IGR3 YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKGJhdG9uX2xvY2FsLnBlcl9jdSk7CiAgICBjdHgtPmJh dG9uID0gJmJhdG9uX2xvY2FsOwogIAotQEAgLTExNTAsMTAgKzEyNDUsOTUgQEAgZHdhcmZfZXhw cl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAq Y3R4LAorQEAgLTExNjEsMTAgKzEyNTYsOTUgQEAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19l bnRyeV92YWx1ZSAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAogIAogICAgY3R4LT5n ZGJhcmNoID0gc2F2ZWRfY3R4LmdkYmFyY2g7CiAgICBjdHgtPmFkZHJfc2l6ZSA9IHNhdmVkX2N0 eC5hZGRyX3NpemU7CkBAIC0xNDE0LDcgKzY4MCw3IEBAIGluZGV4IDM4ZTQ4MTQuLjQ2YTAzM2Qg MTAwNjQ0CiAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVz Yy4KICAgICBGZXRjaCB0aGUgYWRkcmVzcyBpbmRleGVkIGJ5IERXX09QX0dOVV9hZGRyX2luZGV4 LiAgKi8KICAKLUBAIC0yMDg4LDIyICsyMjY4LDYgQEAgaW52YWxpZF9zeW50aGV0aWNfcG9pbnRl ciAodm9pZCkKK0BAIC0yMTAwLDIyICsyMjgwLDYgQEAgaW52YWxpZF9zeW50aGV0aWNfcG9pbnRl ciAodm9pZCkKICAJICAgInJlZmVyZW5jZWQgdmlhIHN5bnRoZXRpYyBwb2ludGVyIikpOwogIH0K ICAKQEAgLTE0MzcsNyArNzAzLDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQKICAv KiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2NyaXB0aW9uLCBzdGFydGluZyBhdCBEQVRBIGFuZCB3 aXRoIGxlbmd0aAogICAgIFNJWkUsIHRvIGZpbmQgdGhlIGN1cnJlbnQgbG9jYXRpb24gb2YgdmFy aWFibGUgb2YgVFlQRSBpbiB0aGUKICAgICBjb250ZXh0IG9mIEZSQU1FLiAgQllURV9PRkZTRVQg aXMgYXBwbGllZCBhZnRlciB0aGUgY29udGVudHMgYXJlCi1AQCAtMjExNiw3ICsyMjgwLDYgQEAg ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsCitAQCAtMjEyOCw3ICsyMjkyLDYgQEAgZHdhcmYyX2V2YWx1YXRl X2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUsCiAgCQkJICAgICAgIExPTkdFU1QgYnl0ZV9vZmZzZXQpCiAgewogICAgc3RydWN0IHZhbHVl ICpyZXR2YWw7CkBAIC0xNDQ1LDcgKzcxMSw3IEBAIGluZGV4IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAw NjQ0CiAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7CiAgICBzdHJ1Y3QgY2xlYW51 cCAqb2xkX2NoYWluLCAqdmFsdWVfY2hhaW47CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9 IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVyX2N1KTsKLUBAIC0yMTI4LDI5ICsyMjkxLDE4IEBA IGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTIxNDAsMjkgKzIzMDMsMTggQEAgZHdhcmYyX2V2YWx1 YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUsCiAgICBpZiAoc2l6ZSA9PSAwKQogICAgICByZXR1cm4gYWxsb2NhdGVfb3B0aW1pemVk X291dF92YWx1ZSAodHlwZSk7CiAgCkBAIC0xNDc2LDcgKzc0Miw3IEBAIGluZGV4IDM4ZTQ4MTQu LjQ2YTAzM2QgMTAwNjQ0CiAgCSAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwogIAkg IG1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHJldHZhbCwgMCwgVFlQRV9MRU5HVEggKHR5 cGUpKTsKICAJICByZXR1cm4gcmV0dmFsOwotQEAgLTIyMTQsNiArMjM2NiwxNiBAQCBkd2FyZjJf ZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwKK0BAIC0yMjI2LDYgKzIzNzgsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAg CSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5ID0gZHdhcmZfZXhwcl9mZXRjaF9pbl9zdGFja19tZW1v cnkgKGN0eCwgMCk7CiAgCiAgCSAgICBkb19jbGVhbnVwcyAodmFsdWVfY2hhaW4pOwpAQCAtMTQ5 Myw3ICs3NTksNyBAQCBpbmRleCAzOGU0ODE0Li40NmEwMzNkIDEwMDY0NAogIAkgICAgcmV0dmFs ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgCSAgICBWQUxVRV9MVkFMIChyZXR2YWwp ID0gbHZhbF9tZW1vcnk7CiAgCSAgICBpZiAoaW5fc3RhY2tfbWVtb3J5KQotQEAgLTQxMzAsOCAr NDI5Miw3IEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1i b2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTQxNDMsOCArNDMwNSw3IEBAIGxvY2xp c3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAogIAkJCSAgICAgICBkbGJhdG9uLT5wZXJfY3UpOwogIH0KICAKQEAgLTE1 MDMsNyArNzY5LDcgQEAgaW5kZXggMzhlNDgxNC4uNDZhMDMzZCAxMDA2NDQKICBjb25zdCBzdHJ1 Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKICAgIGxvY2xp c3RfcmVhZF92YXJpYWJsZSwKICAgIGxvY2xpc3RfcmVhZF92YXJpYWJsZV9hdF9lbnRyeSwKLUBA IC00MTQwLDYgKzQzMDEsNDggQEAgY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdh cmYyX2xvY2xpc3RfZnVuY3MgPSB7CitAQCAtNDE1Myw2ICs0MzE0LDQ4IEBAIGNvbnN0IHN0cnVj dCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NsaXN0X2Z1bmNzID0gewogICAgbG9jbGlz dF90cmFjZXBvaW50X3Zhcl9yZWYKICB9OwogIApAQCAtMTU1MywxMCArODE5LDEwIEBAIGluZGV4 IDM4ZTQ4MTQuLjQ2YTAzM2QgMTAwNjQ0CiAgZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBf aW5pdGlhbGl6ZV9kd2FyZjJsb2M7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5oIGIv Z2RiL2R3YXJmMmxvYy5oCi1pbmRleCBlOWQwNmEzLi5iZmE2Nzc2IDEwMDY0NAoraW5kZXggMzY2 NDFiMy4uMTM5NDU3OCAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJsb2MuaAogKysrIGIvZ2RiL2R3 YXJmMmxvYy5oCi1AQCAtMTI3LDYgKzEyNywxNSBAQCBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0 b24KK0BAIC0xMzIsNiArMTMyLDE1IEBAIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbgogIAog IGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jZXhwcl9m dW5jczsKICBleHRlcm4gY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xv Y2xpc3RfZnVuY3M7CkBAIC0xNTczLDE0NSArODM5LDEwIEBAIGluZGV4IGU5ZDA2YTMuLmJmYTY3 NzYgMTAwNjQ0CiAgLyogQ29tcGlsZSBhIERXQVJGIGxvY2F0aW9uIGV4cHJlc3Npb24gdG8gYW4g YWdlbnQgZXhwcmVzc2lvbi4KICAgICAKIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIv Z2RiL2R3YXJmMnJlYWQuYwotaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKK2luZGV4IDdh NThjNDUuLjk4YWViYWQgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIv ZHdhcmYycmVhZC5jCi1AQCAtNjQsMjAgKzY0LDEyIEBACi0gI2luY2x1ZGUgImdkYmNvcmUuaCIg LyogZm9yIGdudXRhcmdldCAqLwotICNpbmNsdWRlICJnZGIvZ2RiLWluZGV4LmgiCi0gI2luY2x1 ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgImdkYl9iZmQuaCIKLSAKLSAjaW5jbHVkZSA8ZmNudGwu aD4KLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0g I2luY2x1ZGUgPHN5cy90eXBlcy5oPgotLSNpZmRlZiBIQVZFX1pMSUJfSAotLSNpbmNsdWRlIDx6 bGliLmg+Ci0tI2VuZGlmCi0tI2lmZGVmIEhBVkVfTU1BUAotLSNpbmNsdWRlIDxzeXMvbW1hbi5o PgotLSNpZm5kZWYgTUFQX0ZBSUxFRAotLSNkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQgKikgLTEp Ci0tI2VuZGlmCi0tI2VuZGlmCi0gCi0gdHlwZWRlZiBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2xwOwot IERFRl9WRUNfUCAoc3ltYm9scCk7Ci1AQCAtOTUsOCArODcsNiBAQCBzdGF0aWMgaW50IGNoZWNr X3BoeXNuYW1lID0gMDsKLSAvKiBXaGVuIG5vbi16ZXJvLCBkbyBub3QgcmVqZWN0IGRlcHJlY2F0 ZWQgLmdkYl9pbmRleCBzZWN0aW9ucy4gICovCi0gc3RhdGljIGludCB1c2VfZGVwcmVjYXRlZF9p bmRleF9zZWN0aW9ucyA9IDA7Ci0gCi0tc3RhdGljIGludCBwYWdlc2l6ZTsKLS0KLSAvKiBXaGVu IHNldCwgdGhlIGZpbGUgdGhhdCB3ZSdyZSBwcm9jZXNzaW5nIGlzIGtub3duIHRvIGhhdmUgZGVi dWdnaW5nCi0gICAgaW5mbyBmb3IgQysrIG5hbWVzcGFjZXMuICBHQ0MgMy4zLnggZGlkIG5vdCBw cm9kdWNlIHRoaXMgaW5mb3JtYXRpb24sCi0gICAgYnV0IGxhdGVyIHZlcnNpb25zIGRvLiAgKi8K LUBAIC0xMTAsMTAgKzEwMCw2IEBAIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvCi0gICBhc2Vj dGlvbiAqYXNlY3Rpb247Ci0gICBnZGJfYnl0ZSAqYnVmZmVyOwotICAgYmZkX3NpemVfdHlwZSBz aXplOwotLSAgLyogTm90IE5VTEwgaWYgdGhlIHNlY3Rpb24gd2FzIGFjdHVhbGx5IG1tYXBwZWQu ICAqLwotLSAgdm9pZCAqbWFwX2FkZHI7Ci0tICAvKiBQYWdlIGFsaWduZWQgc2l6ZSBvZiBtbWFw cGVkIGFyZWEuICAqLwotLSAgYmZkX3NpemVfdHlwZSBtYXBfbGVuOwotICAgLyogVHJ1ZSBpZiB3 ZSBoYXZlIHRyaWVkIHRvIHJlYWQgdGhpcyBzZWN0aW9uLiAgKi8KLSAgIGludCByZWFkaW47Ci0g fTsKLUBAIC0yNDcsNiArMjMzLDEwIEBAIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKLSAgICAg IFRoaXMgaXMgTlVMTCBpZiB0aGUgdGFibGUgaGFzbid0IGJlZW4gYWxsb2NhdGVkIHlldC4gICov Ci0gICBodGFiX3QgZHdvX2ZpbGVzOwotIAotKyAgLyogVGhlIHNoYXJlZCAnLmR3eicgZmlsZSwg aWYgb25lIGV4aXN0cy4gIFRoaXMgaXMgdXNlZCB3aGVuIHRoZQotKyAgICAgb3JpZ2luYWwgZGF0 YSB3YXMgY29tcHJlc3NlZCB1c2luZyAnZHd6IC1tJy4gICovCi0rICBzdHJ1Y3QgZHd6X2ZpbGUg KmR3el9maWxlOwotKwotICAgLyogQSBmbGFnIGluZGljYXRpbmcgd2V0aGVyIHRoaXMgb2JqZmls ZSBoYXMgYSBzZWN0aW9uIGxvYWRlZCBhdCBhCi0gICAgICBWTUEgb2YgMC4gICovCi0gICBpbnQg aGFzX3NlY3Rpb25fYXRfemVybzsKLUBAIC01MDUsMTUgKzQ5NSwxMyBAQCBzdHJ1Y3QgZHdhcmYy X2N1Ci0gCi0gc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQotIHsKLS0gIC8qIFRoZSBzdGFydCBv ZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGlzIGNvbXBpbGF0aW9uIHVuaXQuICAyKioyOS0xCi0tICAg ICBieXRlcyBzaG91bGQgc3VmZmljZSB0byBzdG9yZSB0aGUgbGVuZ3RoIG9mIGFueSBjb21waWxh dGlvbiB1bml0Ci0tICAgICAtIGlmIGl0IGRvZXNuJ3QsIEdEQiB3aWxsIGZhbGwgb3ZlciBhbnl3 YXkuCi0rICAvKiBUaGUgc3RhcnQgb2Zmc2V0IGFuZCBsZW5ndGggb2YgdGhpcyBjb21waWxhdGlv biB1bml0LgotICAgICAgTk9URTogVW5saWtlIGNvbXBfdW5pdF9oZWFkLmxlbmd0aCwgdGhpcyBs ZW5ndGggaW5jbHVkZXMKLSAgICAgIGluaXRpYWxfbGVuZ3RoX3NpemUuCi0gICAgICBJZiB0aGUg RElFIHJlZmVycyB0byBhIERXTyBmaWxlLCB0aGlzIGlzIGFsd2F5cyBvZiB0aGUgb3JpZ2luYWwg ZGllLAotICAgICAgbm90IHRoZSBEV08gZmlsZS4gICovCi0gICBzZWN0X29mZnNldCBvZmZzZXQ7 Ci0tICB1bnNpZ25lZCBpbnQgbGVuZ3RoIDogMjk7Ci0rICB1bnNpZ25lZCBpbnQgbGVuZ3RoOwot IAotICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoaXMgY29tcGlsYXRpb24gdW5pdCB3aWxsIGJlIHJl YWQgaW4gYmVmb3JlCi0gICAgICBhbnkgb2YgdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdHMg YXJlIHByb2Nlc3NlZC4gICovCi1AQCAtNTI4LDYgKzUxNiw5IEBAIHN0cnVjdCBkd2FyZjJfcGVy X2N1X2RhdGEKLSAgIC8qIE5vbi16ZXJvIGlmIHRoaXMgQ1UgaXMgZnJvbSAuZGVidWdfdHlwZXMu ICAqLwotICAgdW5zaWduZWQgaW50IGlzX2RlYnVnX3R5cGVzIDogMTsKLSAKLSsgIC8qIE5vbi16 ZXJvIGlmIHRoaXMgQ1UgaXMgZnJvbSB0aGUgLmR3eiBmaWxlLiAgKi8KLSsgIHVuc2lnbmVkIGlu dCBpc19kd3ogOiAxOwotKwotICAgLyogVGhlIHNlY3Rpb24gdGhpcyBDVS9UVSBsaXZlcyBpbi4K LSAgICAgIElmIHRoZSBESUUgcmVmZXJzIHRvIGEgRFdPIGZpbGUsIHRoaXMgaXMgYWx3YXlzIHRo ZSBvcmlnaW5hbCBkaWUsCi0gICAgICBub3QgdGhlIERXTyBmaWxlLiAgKi8KLUBAIC03MTUsNiAr NzA2LDIyIEBAIHN0cnVjdCBkd29fZmlsZQotICAgaHRhYl90IHR1czsKLSB9OwotIAotKy8qIFRo aXMgcmVwcmVzZW50cyBhICcuZHd6JyBmaWxlLiAgKi8KLSsKLStzdHJ1Y3QgZHd6X2ZpbGUKLSt7 Ci0rICAvKiBBIGR3eiBmaWxlIGNhbiBvbmx5IGNvbnRhaW4gYSBmZXcgc2VjdGlvbnMuICAqLwot KyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gYWJicmV2OwotKyAgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gaW5mbzsKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIHN0cjsKLSsg IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGxpbmU7Ci0rICBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyBtYWNybzsKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGdkYl9pbmRleDsK LSsKLSsgIC8qIFRoZSBkd3oncyBCRkQuICAqLwotKyAgYmZkICpkd3pfYmZkOwotK307Ci0rCi0g LyogU3RydWN0IHVzZWQgdG8gcGFzcyBtaXNjLiBwYXJhbWV0ZXJzIHRvIHJlYWRfZGllX2FuZF9j aGlsZHJlbiwgZXQKLSAgICBhbC4gIHdoaWNoIGFyZSB1c2VkIGZvciBib3RoIC5kZWJ1Z19pbmZv IGFuZCAuZGVidWdfdHlwZXMgZGllcy4KLSAgICBBbGwgcGFyYW1ldGVycyBoZXJlIGFyZSB1bmNo YW5naW5nIGZvciB0aGUgbGlmZSBvZiB0aGUgY2FsbC4gIFRoaXMKLUBAIC04MjgsNiArODM1LDEy IEBAIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvCi0gICAgIC8qIEZsYWcgc2V0IGlmIGZpeHVwX3Bh cnRpYWxfZGllIGhhcyBiZWVuIGNhbGxlZCBvbiB0aGlzIGRpZS4gICovCi0gICAgIHVuc2lnbmVk IGludCBmaXh1cF9jYWxsZWQgOiAxOwotIAotKyAgICAvKiBGbGFnIHNldCBpZiBEV19UQUdfaW1w b3J0ZWRfdW5pdCB1c2VzIERXX0ZPUk1fR05VX3JlZl9hbHQuICAqLwotKyAgICB1bnNpZ25lZCBp bnQgaXNfZHd6IDogMTsKLSsKLSsgICAgLyogRmxhZyBzZXQgaWYgc3BlY19vZmZzZXQgdXNlcyBE V19GT1JNX0dOVV9yZWZfYWx0LiAgKi8KLSsgICAgdW5zaWduZWQgaW50IHNwZWNfaXNfZHd6IDog MTsKLSsKLSAgICAgLyogVGhlIG5hbWUgb2YgdGhpcyBESUUuICBOb3JtYWxseSB0aGUgdmFsdWUg b2YgRFdfQVRfbmFtZSwgYnV0Ci0gICAgICAgIHNvbWV0aW1lcyBhIGRlZmF1bHQgbmFtZSBmb3Ig dW5uYW1lZCBESUVzLiAgKi8KLSAgICAgY2hhciAqbmFtZTsKLUBAIC0xMjEzLDcgKzEyMjYsNyBA QCBzdGF0aWMgZ2RiX2J5dGUgKnJlYWRfcGFydGlhbF9kaWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVh ZGVyX3NwZWNzICosCi0gCQkJCSAgIHVuc2lnbmVkIGludCwKLSAJCQkJICAgZ2RiX2J5dGUgKik7 Ci0gCi0tc3RhdGljIHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpmaW5kX3BhcnRpYWxfZGllIChz ZWN0X29mZnNldCwKLStzdGF0aWMgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKmZpbmRfcGFydGlh bF9kaWUgKHNlY3Rfb2Zmc2V0LCBpbnQsCi0gCQkJCQkJICBzdHJ1Y3QgZHdhcmYyX2N1ICopOwot IAotIHN0YXRpYyB2b2lkIGZpeHVwX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5m byAqLAotQEAgLTEyNTgsNiArMTI3MSw4IEBAIHN0YXRpYyBjaGFyICpyZWFkX2luZGlyZWN0X3N0 cmluZyAoYmZkICosIGdkYl9ieXRlICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgY29tcF91bml0X2hlYWQgKiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqKTsKLSAKLStzdGF0aWMgY2hhciAqcmVhZF9p bmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKHN0cnVjdCBkd3pfZmlsZSAqLCBMT05HRVNUKTsKLSsK LSBzdGF0aWMgVUxPTkdFU1QgcmVhZF91bnNpZ25lZF9sZWIxMjggKGJmZCAqLCBnZGJfYnl0ZSAq LCB1bnNpZ25lZCBpbnQgKik7Ci0gCi0gc3RhdGljIExPTkdFU1QgcmVhZF9zaWduZWRfbGViMTI4 IChiZmQgKiwgZ2RiX2J5dGUgKiwgdW5zaWduZWQgaW50ICopOwotQEAgLTE1MDksNiArMTUyNCw5 IEBAIHN0YXRpYyB2b2lkIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAq Y3UsCitAQCAtMTYxMyw2ICsxNjEzLDkgQEAgc3RhdGljIHZvaWQgZmlsbF9pbl9sb2NsaXN0X2Jh dG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAJCQkJICAgc3RydWN0IGR3YXJmMl9sb2NsaXN0 X2JhdG9uICpiYXRvbiwKICAJCQkJICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cik7CiAgCkBAIC0x NzIxLDE2ICs4NTIsNyBAQCBpbmRleCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogIHN0YXRpYyB2 b2lkIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwK ICAJCQkJCSBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgCQkJCQkgc3RydWN0IGR3YXJmMl9jdSAqY3Up OwotQEAgLTE1MjQsNyArMTU0Miw3IEBAIHN0YXRpYyBoYXNodmFsX3QgcGFydGlhbF9kaWVfaGFz aCAoY29uc3Qgdm9pZCAqaXRlbSk7Ci0gc3RhdGljIGludCBwYXJ0aWFsX2RpZV9lcSAoY29uc3Qg dm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKTsKLSAKLSBzdGF0aWMgc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQKLS0g IChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSsgIChzZWN0 X29mZnNldCBvZmZzZXQsIHVuc2lnbmVkIGludCBvZmZzZXRfaW5fZHd6LCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSk7Ci0gCi0gc3RhdGljIHZvaWQgaW5pdF9vbmVfY29tcF91bml0IChzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSwKLSAJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KTsK LUBAIC0xNTQxLDYgKzE1NTksOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMg KHZvaWQpOworQEAgLTE2NDUsNiArMTY0OCw5IEBAIHN0YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29t cF91bml0cyAodm9pZCk7CiAgCiAgc3RhdGljIHZvaWQgZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5p dCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKTsKICAKQEAgLTE3NDAsNyArODYyLDcgQEAg aW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKICBzdGF0aWMgc3RydWN0IHR5cGUgKnNldF9k aWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCB0eXBlICosCiAgCQkJCSAgc3RydWN0 IGR3YXJmMl9jdSAqKTsKICAKLUBAIC0xNTY5LDYgKzE1OTAsOSBAQCBzdGF0aWMgc3RydWN0IHR5 cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZzZXQgKHNlY3Rfb2Zmc2V0LAorQEAgLTE2NzMsNiArMTY3 OSw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnNldCAoc2VjdF9v ZmZzZXQsCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCkBAIC0xNzUwLDkwNSArODcyLDUx IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIgMTAwNjQ0CiAgc3RhdGljIHZvaWQgZHdhcmYyX3Jl bGVhc2VfcXVldWUgKHZvaWQgKmR1bW15KTsKICAKICBzdGF0aWMgdm9pZCBxdWV1ZV9jb21wX3Vu aXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLUBAIC0xNTg3LDYgKzE2MTEs MTIgQEAgc3RhdGljIHZvaWQgZmluZF9maWxlX2FuZF9kaXJlY3RvcnkgKHN0cnVjdCBkaWVfaW5m byAqZGllLAotIHN0YXRpYyBjaGFyICpmaWxlX2Z1bGxfbmFtZSAoaW50IGZpbGUsIHN0cnVjdCBs aW5lX2hlYWRlciAqbGgsCi0gCQkJICAgICBjb25zdCBjaGFyICpjb21wX2Rpcik7Ci0gCi0rc3Rh dGljIGdkYl9ieXRlICpyZWFkX2FuZF9jaGVja19jb21wX3VuaXRfaGVhZAotKyAgKHN0cnVjdCBj b21wX3VuaXRfaGVhZCAqaGVhZGVyLAotKyAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpz ZWN0aW9uLAotKyAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICphYmJyZXZfc2VjdGlvbiwg Z2RiX2J5dGUgKmluZm9fcHRyLAotKyAgIGludCBpc19kZWJ1Z190eXBlc19zZWN0aW9uKTsKLSsK LSBzdGF0aWMgdm9pZCBpbml0X2N1dHVfYW5kX3JlYWRfZGllcwotICAgKHN0cnVjdCBkd2FyZjJf cGVyX2N1X2RhdGEgKnRoaXNfY3UsIHN0cnVjdCBhYmJyZXZfdGFibGUgKmFiYnJldl90YWJsZSwK LSAgICBpbnQgdXNlX2V4aXN0aW5nX2N1LCBpbnQga2VlcCwKLUBAIC0xNjA4LDggKzE2MzgsNiBA QCBzdGF0aWMgc3RydWN0IGR3b191bml0ICpsb29rdXBfZHdvX3R5cGVfdW5pdAotIAotIHN0YXRp YyB2b2lkIGZyZWVfZHdvX2ZpbGVfY2xlYW51cCAodm9pZCAqKTsKLSAKLS1zdGF0aWMgdm9pZCBt dW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICopOwotLQot IHN0YXRpYyB2b2lkIHByb2Nlc3NfY3VfaW5jbHVkZXMgKHZvaWQpOwotIAotICNpZiBXT1JEU19C SUdFTkRJQU4KLUBAIC0xNzc5LDg1ICsxODA3LDYgQEAgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAo YmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKnZuYW1lcykKLSAgICAgZHdhcmYyX3Bl cl9vYmpmaWxlLT5oYXNfc2VjdGlvbl9hdF96ZXJvID0gMTsKLSB9Ci0gCi0tLyogRGVjb21wcmVz cyBhIHNlY3Rpb24gdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyB6bGliLiAgU3RvcmUgdGhlCi0t ICAgZGVjb21wcmVzc2VkIGJ1ZmZlciwgYW5kIGl0cyBzaXplLCBpbiBPVVRCVUYgYW5kIE9VVFNJ WkUuICAqLwotLQotLXN0YXRpYyB2b2lkCi0temxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBhc2VjdGlvbiAqc2VjdHAsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgIGdkYl9ieXRlICoqb3V0YnVmLCBiZmRfc2l6ZV90eXBlICpvdXRzaXplKQotLXsKLS0g IGJmZCAqYWJmZCA9IHNlY3RwLT5vd25lcjsKLS0jaWZuZGVmIEhBVkVfWkxJQl9ICi0tICBlcnJv ciAoXygiU3VwcG9ydCBmb3IgemxpYi1jb21wcmVzc2VkIERXQVJGIGRhdGEgKGZyb20gJyVzJykg IgotLSAgICAgICAgICAgImlzIGRpc2FibGVkIGluIHRoaXMgY29weSBvZiBHREIiKSwKLS0gICAg ICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0tI2Vsc2UKLS0gIGJmZF9zaXplX3R5cGUg Y29tcHJlc3NlZF9zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLS0gIGdkYl9i eXRlICpjb21wcmVzc2VkX2J1ZmZlciA9IHhtYWxsb2MgKGNvbXByZXNzZWRfc2l6ZSk7Ci0tICBz dHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGNvbXByZXNzZWRf YnVmZmVyKTsKLS0gIGJmZF9zaXplX3R5cGUgdW5jb21wcmVzc2VkX3NpemU7Ci0tICBnZGJfYnl0 ZSAqdW5jb21wcmVzc2VkX2J1ZmZlcjsKLS0gIHpfc3RyZWFtIHN0cm07Ci0tICBpbnQgcmM7Ci0t ICBpbnQgaGVhZGVyX3NpemUgPSAxMjsKLS0KLS0gIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAt PmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCi0tICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2Vk X2J1ZmZlciwKLS0JCSAgICBjb21wcmVzc2VkX3NpemUsIGFiZmQpICE9IGNvbXByZXNzZWRfc2l6 ZSkKLS0gICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJv bSAnJXMnIiksCi0tICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0tCi0tICAv KiBSZWFkIHRoZSB6bGliIGhlYWRlci4gIEluIHRoaXMgY2FzZSwgaXQgc2hvdWxkIGJlICJaTElC IiBmb2xsb3dlZAotLSAgICAgYnkgdGhlIHVuY29tcHJlc3NlZCBzZWN0aW9uIHNpemUsIDggYnl0 ZXMgaW4gYmlnLWVuZGlhbiBvcmRlci4gICovCi0tICBpZiAoY29tcHJlc3NlZF9zaXplIDwgaGVh ZGVyX3NpemUKLS0gICAgICB8fCBzdHJuY21wIChjb21wcmVzc2VkX2J1ZmZlciwgIlpMSUIiLCA0 KSAhPSAwKQotLSAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENvcnJ1cHQgRFdBUkYgWkxJQiBo ZWFkZXIgZnJvbSAnJXMnIiksCi0tICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7 Ci0tICB1bmNvbXByZXNzZWRfc2l6ZSA9IGNvbXByZXNzZWRfYnVmZmVyWzRdOyB1bmNvbXByZXNz ZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVy WzVdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNv bXByZXNzZWRfYnVmZmVyWzZdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJl c3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzddOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0g ODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzhdOyB1bmNvbXBy ZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVm ZmVyWzldOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLS0gIHVuY29tcHJlc3NlZF9zaXplICs9 IGNvbXByZXNzZWRfYnVmZmVyWzEwXTsgdW5jb21wcmVzc2VkX3NpemUgPDw9IDg7Ci0tICB1bmNv bXByZXNzZWRfc2l6ZSArPSBjb21wcmVzc2VkX2J1ZmZlclsxMV07Ci0tCi0tICAvKiBJdCBpcyBw b3NzaWJsZSB0aGUgc2VjdGlvbiBjb25zaXN0cyBvZiBzZXZlcmFsIGNvbXByZXNzZWQKLS0gICAg IGJ1ZmZlcnMgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyLCBzbyB3ZSB1bmNvbXByZXNzIGluIGEgbG9v cC4gICovCi0tICBzdHJtLnphbGxvYyA9IE5VTEw7Ci0tICBzdHJtLnpmcmVlID0gTlVMTDsKLS0g IHN0cm0ub3BhcXVlID0gTlVMTDsKLS0gIHN0cm0uYXZhaWxfaW4gPSBjb21wcmVzc2VkX3NpemUg LSBoZWFkZXJfc2l6ZTsKLS0gIHN0cm0ubmV4dF9pbiA9IChCeXRlZiopIGNvbXByZXNzZWRfYnVm ZmVyICsgaGVhZGVyX3NpemU7Ci0tICBzdHJtLmF2YWlsX291dCA9IHVuY29tcHJlc3NlZF9zaXpl OwotLSAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5j b21wcmVzc2VkX3NpemUpOwotLSAgcmMgPSBpbmZsYXRlSW5pdCAoJnN0cm0pOwotLSAgd2hpbGUg KHN0cm0uYXZhaWxfaW4gPiAwKQotLSAgICB7Ci0tICAgICAgaWYgKHJjICE9IFpfT0spCi0tICAg ICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IHNldHRpbmcgdXAgRFdBUkYgdW5jb21wcmVzc2lv biBpbiAnJXMnOiAlZCIpLAotLSAgICAgICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQp LCByYyk7Ci0tICAgICAgc3RybS5uZXh0X291dCA9ICgoQnl0ZWYqKSB1bmNvbXByZXNzZWRfYnVm ZmVyCi0tICAgICAgICAgICAgICAgICAgICAgICArICh1bmNvbXByZXNzZWRfc2l6ZSAtIHN0cm0u YXZhaWxfb3V0KSk7Ci0tICAgICAgcmMgPSBpbmZsYXRlICgmc3RybSwgWl9GSU5JU0gpOwotLSAg ICAgIGlmIChyYyAhPSBaX1NUUkVBTV9FTkQpCi0tICAgICAgICBlcnJvciAoXygiRHdhcmYgRXJy b3I6IHpsaWIgZXJyb3IgdW5jb21wcmVzc2luZyBmcm9tICclcyc6ICVkIiksCi0tICAgICAgICAg ICAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksIHJjKTsKLS0gICAgICByYyA9IGluZmxhdGVS ZXNldCAoJnN0cm0pOwotLSAgICB9Ci0tICByYyA9IGluZmxhdGVFbmQgKCZzdHJtKTsKLS0gIGlm IChyYyAhPSBaX09LCi0tICAgICAgfHwgc3RybS5hdmFpbF9vdXQgIT0gMCkKLS0gICAgZXJyb3Ig KF8oIkR3YXJmIEVycm9yOiBjb25jbHVkaW5nIERXQVJGIHVuY29tcHJlc3Npb24gaW4gJyVzJzog JWQiKSwKLS0gICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCByYyk7Ci0tCi0tICBk b19jbGVhbnVwcyAoY2xlYW51cCk7Ci0tICAqb3V0YnVmID0gdW5jb21wcmVzc2VkX2J1ZmZlcjsK LS0gICpvdXRzaXplID0gdW5jb21wcmVzc2VkX3NpemU7Ci0tI2VuZGlmCi0tfQotLQotIC8qIEEg aGVscGVyIGZ1bmN0aW9uIHRoYXQgZGVjaWRlcyB3aGV0aGVyIGEgc2VjdGlvbiBpcyBlbXB0eSwK LSAgICBvciBub3QgcHJlc2VudC4gICovCi0gCi1AQCAtMTg4NCw1NiArMTgzMywyNyBAQCBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gKmluZm8pCi0gICBpZiAoaW5mby0+cmVhZGluKQotICAgICByZXR1cm47Ci0g ICBpbmZvLT5idWZmZXIgPSBOVUxMOwotLSAgaW5mby0+bWFwX2FkZHIgPSBOVUxMOwotICAgaW5m by0+cmVhZGluID0gMTsKLSAKLSAgIGlmIChkd2FyZjJfc2VjdGlvbl9lbXB0eV9wIChpbmZvKSkK LSAgICAgcmV0dXJuOwotIAotLSAgLyogTm90ZSB0aGF0IEFCRkQgbWF5IG5vdCBiZSBmcm9tIE9C SkZJTEUsIGUuZy4gYSBEV08gc2VjdGlvbi4gICovCi0gICBhYmZkID0gc2VjdHAtPm93bmVyOwot IAotLSAgLyogQ2hlY2sgaWYgdGhlIGZpbGUgaGFzIGEgNC1ieXRlIGhlYWRlciBpbmRpY2F0aW5n IGNvbXByZXNzaW9uLiAgKi8KLS0gIGlmIChpbmZvLT5zaXplID4gc2l6ZW9mIChoZWFkZXIpCi0t ICAgICAgJiYgYmZkX3NlZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgPT0gMAot LSAgICAgICYmIGJmZF9icmVhZCAoaGVhZGVyLCBzaXplb2YgKGhlYWRlciksIGFiZmQpID09IHNp emVvZiAoaGVhZGVyKSkKLS0gICAgewotLSAgICAgIC8qIFVwb24gZGVjb21wcmVzc2lvbiwgdXBk YXRlIHRoZSBidWZmZXIgYW5kIGl0cyBzaXplLiAgKi8KLS0gICAgICBpZiAoc3RybmNtcCAoaGVh ZGVyLCAiWkxJQiIsIHNpemVvZiAoaGVhZGVyKSkgPT0gMCkKLS0gICAgICAgIHsKLS0gICAgICAg ICAgemxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKG9iamZpbGUsIHNlY3RwLCAmaW5mby0+YnVmZmVy LAotLQkJCQkgICAmaW5mby0+c2l6ZSk7Ci0tICAgICAgICAgIHJldHVybjsKLS0gICAgICAgIH0K LS0gICAgfQotLQotLSNpZmRlZiBIQVZFX01NQVAKLS0gIGlmIChwYWdlc2l6ZSA9PSAwKQotLSAg ICBwYWdlc2l6ZSA9IGdldHBhZ2VzaXplICgpOwotLQotLSAgLyogT25seSB0cnkgdG8gbW1hcCBz ZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCi0tICAgICB3 YXN0ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9y IHNlY3Rpb25zCi0tICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KLS0KLS0gIGlmIChpbmZv LT5zaXplID4gNCAqIHBhZ2VzaXplICYmIChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDAp Ci0rICAvKiBJZiB0aGUgc2VjdGlvbiBoYXMgcmVsb2NhdGlvbnMsIHdlIG11c3QgcmVhZCBpdCBv dXJzZWx2ZXMuCi0rICAgICBPdGhlcndpc2Ugd2UgYXR0YWNoIGl0IHRvIHRoZSBCRkQuICAqLwot KyAgaWYgKChzZWN0cC0+ZmxhZ3MgJiBTRUNfUkVMT0MpID09IDApCi0gICAgIHsKLS0gICAgICBp bmZvLT5idWZmZXIgPSBiZmRfbW1hcCAoYWJmZCwgMCwgaW5mby0+c2l6ZSwgUFJPVF9SRUFELAot LSAgICAgICAgICAgICAgICAgICAgICAgICBNQVBfUFJJVkFURSwgc2VjdHAtPmZpbGVwb3MsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLT5tYXBfYWRkciwgJmluZm8tPm1hcF9sZW4p OwotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpieXRlcyA9IGdkYl9iZmRfbWFwX3NlY3Rpb24gKHNl Y3RwLCAmaW5mby0+c2l6ZSk7Ci0gCi0tICAgICAgaWYgKChjYWRkcl90KWluZm8tPmJ1ZmZlciAh PSBNQVBfRkFJTEVEKQotLQl7Ci0tI2lmIEhBVkVfUE9TSVhfTUFEVklTRQotLQkgIHBvc2l4X21h ZHZpc2UgKGluZm8tPm1hcF9hZGRyLCBpbmZvLT5tYXBfbGVuLCBQT1NJWF9NQURWX1dJTExORUVE KTsKLS0jZW5kaWYKLS0JICByZXR1cm47Ci0tCX0KLSsgICAgICAvKiBXZSBoYXZlIHRvIGNhc3Qg YXdheSBjb25zdCBoZXJlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMuCi0rCSBGaXhpbmcgZHdhcmYy cmVhZCB0byBiZSBjb25zdC1jb3JyZWN0IHdvdWxkIGJlIHF1aXRlIG5pY2UuICAqLwotKyAgICAg IGluZm8tPmJ1ZmZlciA9IChnZGJfYnl0ZSAqKSBieXRlczsKLSsgICAgICByZXR1cm47Ci0gICAg IH0KLS0jZW5kaWYKLSAKLS0gIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgYSBub3JtYWwsIG5v dC1jb21wcmVzc2VkIHNlY3Rpb24uICAqLwotLSAgaW5mby0+YnVmZmVyID0gYnVmCi0tICAgID0g b2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgaW5mby0+c2l6ZSk7Ci0r ICBidWYgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5z aXplKTsKLSsgIGluZm8tPmJ1ZmZlciA9IGJ1ZjsKLSAKLSAgIC8qIFdoZW4gZGVidWdnaW5nIC5v IGZpbGVzLCB3ZSBtYXkgbmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2VlCi0gICAgICBodHRw Oi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwMi0wNC9tc2cwMDEzNi5odG1sIC4K LUBAIC0yMDA5LDYgKzE5MjksMTExIEBAIGR3YXJmMl9nZXRfc2VjdGlvbl9pbmZvIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKLSAgICpzaXplcCA9IGluZm8tPnNpemU7CitAQCAtMTE2NzcsNiAr MTE2ODYsMjkgQEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgbmV3X3N5bWJvbCAoZGllLCB0aGlzX3R5cGUs IGN1KTsKICB9CiAgCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdG8gZmluZCB0aGUgc2VjdGlvbnMg Zm9yIGEgLmR3eiBmaWxlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2xvY2F0ZV9kd3pfc2VjdGlv bnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICphcmcpCi0rewotKyAgc3RydWN0 IGR3el9maWxlICpkd3pfZmlsZSA9IGFyZzsKLSsKLSsgIC8qIE5vdGUgdGhhdCB3ZSBvbmx5IHN1 cHBvcnQgdGhlIHN0YW5kYXJkIEVMRiBuYW1lcywgYmVjYXVzZSAuZHd6Ci0rICAgICBpcyBFTEYt b25seSAoYXQgdGhlIHRpbWUgb2Ygd3JpdGluZykuICAqLwotKyAgaWYgKHNlY3Rpb25faXNfcCAo c2VjdHAtPm5hbWUsICZkd2FyZjJfZWxmX25hbWVzLmFiYnJldikpCi0rICAgIHsKLSsgICAgICBk d3pfZmlsZS0+YWJicmV2LmFzZWN0aW9uID0gc2VjdHA7Ci0rICAgICAgZHd6X2ZpbGUtPmFiYnJl di5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSsgICAgfQotKyAgZWxzZSBp ZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJmR3YXJmMl9lbGZfbmFtZXMuaW5mbykpCi0r ICAgIHsKLSsgICAgICBkd3pfZmlsZS0+aW5mby5hc2VjdGlvbiA9IHNlY3RwOwotKyAgICAgIGR3 el9maWxlLT5pbmZvLnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOwotKyAgICB9 Ci0rICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3RwLT5uYW1lLCAmZHdhcmYyX2VsZl9uYW1l cy5zdHIpKQotKyAgICB7Ci0rICAgICAgZHd6X2ZpbGUtPnN0ci5hc2VjdGlvbiA9IHNlY3RwOwot KyAgICAgIGR3el9maWxlLT5zdHIuc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7 Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHNlY3Rpb25faXNfcCAoc2VjdHAtPm5hbWUsICZkd2FyZjJf ZWxmX25hbWVzLmxpbmUpKQotKyAgICB7Ci0rICAgICAgZHd6X2ZpbGUtPmxpbmUuYXNlY3Rpb24g PSBzZWN0cDsKLSsgICAgICBkd3pfZmlsZS0+bGluZS5zaXplID0gYmZkX2dldF9zZWN0aW9uX3Np emUgKHNlY3RwKTsKLSsgICAgfQotKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFt ZSwgJmR3YXJmMl9lbGZfbmFtZXMubWFjcm8pKQotKyAgICB7Ci0rICAgICAgZHd6X2ZpbGUtPm1h Y3JvLmFzZWN0aW9uID0gc2VjdHA7Ci0rICAgICAgZHd6X2ZpbGUtPm1hY3JvLnNpemUgPSBiZmRf Z2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOwotKyAgICB9Ci0rICBlbHNlIGlmIChzZWN0aW9uX2lz X3AgKHNlY3RwLT5uYW1lLCAmZHdhcmYyX2VsZl9uYW1lcy5nZGJfaW5kZXgpKQotKyAgICB7Ci0r ICAgICAgZHd6X2ZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbiA9IHNlY3RwOwotKyAgICAgIGR3el9m aWxlLT5nZGJfaW5kZXguc2l6ZSA9IGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7Ci0rICAg IH0KLSt9CisrLyogQ3JlYXRlIGEgbmV3IGFycmF5IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMg dGFyZ2V0IHR5cGUgVFlQRS4KICsKLSsvKiBPcGVuIHRoZSBzZXBhcmF0ZSAnLmR3eicgZGVidWcg ZmlsZSwgaWYgbmVlZGVkLiAgRXJyb3IgaWYgdGhlIGZpbGUKLSsgICBjYW5ub3QgYmUgZm91bmQu ICAqLworKyAgIE11bHRpZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBpbnRlcm5hbGx5IHJlcHJlc2Vu dGVkIGFzIGEgc3RhY2sgb2YKKysgICBzaW5nbGVkaW1lbnNpb25hbCBhcnJheXMgYmVpbmcgcmVm ZXJlbmNlZCBieSB0aGVpciBUWVBFX1RBUkdFVF9UWVBFLiAgKi8KICsKLStzdGF0aWMgc3RydWN0 IGR3el9maWxlICoKLStkd2FyZjJfZ2V0X2R3el9maWxlICh2b2lkKQorK3N0YXRpYyBzdHJ1Y3Qg dHlwZSAqCisrY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKKysJCQkgICAgICAgc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKLSsgIGJmZCAqYWJmZCwgKmR3el9iZmQ7Ci0r ICBhc2VjdGlvbiAqc2VjdGlvbjsKLSsgIGdkYl9ieXRlICpkYXRhOwotKyAgc3RydWN0IGNsZWFu dXAgKmNsZWFudXA7Ci0rICBjb25zdCBjaGFyICpmaWxlbmFtZTsKLSsgIHN0cnVjdCBkd3pfZmls ZSAqcmVzdWx0OwotKwotKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6X2ZpbGUgIT0gTlVM TCkKLSsgICAgcmV0dXJuIGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6X2ZpbGU7Ci0rCi0rICBhYmZk ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLT5vYmZkOwotKyAgc2VjdGlvbiA9IGJmZF9n ZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLmdudV9kZWJ1Z2FsdGxpbmsiKTsKLSsgIGlmIChz ZWN0aW9uID09IE5VTEwpCi0rICAgIGVycm9yIChfKCJjb3VsZCBub3QgZmluZCAnLmdudV9kZWJ1 Z2FsdGxpbmsnIHNlY3Rpb24iKSk7Ci0rICBpZiAoIWJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9u IChhYmZkLCBzZWN0aW9uLCAmZGF0YSkpCi0rICAgIGVycm9yIChfKCJjb3VsZCBub3QgcmVhZCAn LmdudV9kZWJ1Z2FsdGxpbmsnIHNlY3Rpb246ICVzIiksCi0rCSAgIGJmZF9lcnJtc2cgKGJmZF9n ZXRfZXJyb3IgKCkpKTsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBkYXRhKTsK LSsKLSsgIGZpbGVuYW1lID0gZGF0YTsKLSsgIGlmICghSVNfQUJTT0xVVEVfUEFUSCAoZmlsZW5h bWUpKQotKyAgICB7Ci0rICAgICAgY2hhciAqYWJzID0gZ2RiX3JlYWxwYXRoIChkd2FyZjJfcGVy X29iamZpbGUtPm9iamZpbGUtPm5hbWUpOwotKyAgICAgIGNoYXIgKnJlbDsKLSsKLSsgICAgICBt YWtlX2NsZWFudXAgKHhmcmVlLCBhYnMpOwotKyAgICAgIGFicyA9IGxkaXJuYW1lIChhYnMpOwot KyAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGFicyk7Ci0rCi0rICAgICAgcmVsID0gY29uY2F0 IChhYnMsIFNMQVNIX1NUUklORywgZmlsZW5hbWUsIChjaGFyICopIE5VTEwpOwotKyAgICAgIG1h a2VfY2xlYW51cCAoeGZyZWUsIHJlbCk7Ci0rICAgICAgZmlsZW5hbWUgPSByZWw7Ci0rICAgIH0K LSsKLSsgIC8qIFRoZSBmb3JtYXQgaXMganVzdCBhIE5VTC10ZXJtaW5hdGVkIGZpbGUgbmFtZSwg Zm9sbG93ZWQgYnkgdGhlCi0rICAgICBidWlsZC1pZC4gIEZvciBub3csIHRob3VnaCwgd2UgaWdu b3JlIHRoZSBidWlsZC1pZC4gICovCi0rICBkd3pfYmZkID0gZ2RiX2JmZF9vcGVuIChmaWxlbmFt ZSwgZ251dGFyZ2V0LCAtMSk7Ci0rICBpZiAoZHd6X2JmZCA9PSBOVUxMKQotKyAgICBlcnJvciAo XygiY291bGQgbm90IHJlYWQgJyVzJzogJXMiKSwgZmlsZW5hbWUsCi0rCSAgIGJmZF9lcnJtc2cg KGJmZF9nZXRfZXJyb3IgKCkpKTsKLSsKLSsgIGlmICghYmZkX2NoZWNrX2Zvcm1hdCAoZHd6X2Jm ZCwgYmZkX29iamVjdCkpCi0rICAgIHsKLSsgICAgICBnZGJfYmZkX3VucmVmIChkd3pfYmZkKTsK LSsgICAgICBlcnJvciAoXygiZmlsZSAnJXMnIHdhcyBub3QgdXNhYmxlOiAlcyIpLCBmaWxlbmFt ZSwKLSsJICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rICAgIH0KLSsKLSsg IHJlc3VsdCA9IE9CU1RBQ0tfWkFMTE9DICgmZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLT5v YmpmaWxlX29ic3RhY2ssCi0rCQkJICAgc3RydWN0IGR3el9maWxlKTsKLSsgIHJlc3VsdC0+ZHd6 X2JmZCA9IGR3el9iZmQ7CisrICB0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUs IHJhbmdlX3R5cGUpOwogKwotKyAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChkd3pfYmZkLCBsb2Nh dGVfZHd6X3NlY3Rpb25zLCByZXN1bHQpOworKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJp YnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVkIGJ5CisrICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgorKyAgICAgdmFsdWVfc3Vic2NyaXB0 ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCisrICBmZXRj aF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CiArCi0rICBkb19jbGVhbnVwcyAoY2xl YW51cCk7CisrICAvKiBUaGVzZSBnZW5lcmljIHR5cGUgYXR0cmlidXRlcyBhcmUgY2hlY2tlZCBm b3IgYWxsb2NhdGVkL2Fzc29jaWF0ZWQKKysgICAgIHZhbGlkaXR5IHdoaWxlIGFjY2Vzc2luZyBG SUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSy4gICovCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAo ZGllLCByYW5nZV90eXBlLCBjdSk7CiArCi0rICByZXR1cm4gcmVzdWx0OworKyAgcmV0dXJuIHR5 cGU7CiArfQotIAwKLSAvKiBEV0FSRiBxdWlja19zeW1ib2xzX2Z1bmN0aW9ucyBzdXBwb3J0LiAg Ki8KLSAKLUBAIC0yMjc5LDIzICsyMzA0LDE5IEBAIGV4dHJhY3RfY3VfdmFsdWUgKGNvbnN0IGNo YXIgKmJ5dGVzLCBVTE9OR0VTVCAqcmVzdWx0KQotICAgcmV0dXJuIDE7Ci0gfQotIAotLS8qIFJl YWQgdGhlIENVIGxpc3QgZnJvbSB0aGUgbWFwcGVkIGluZGV4LCBhbmQgdXNlIGl0IHRvIGNyZWF0 ZSBhbGwKLS0gICB0aGUgQ1Ugb2JqZWN0cyBmb3IgdGhpcyBvYmpmaWxlLiAgUmV0dXJuIDAgaWYg c29tZXRoaW5nIHdlbnQgd3JvbmcsCi0tICAgMSBpZiBldmVyeXRoaW5nIHdlbnQgb2suICAqLwot Ky8qIEEgaGVscGVyIGZvciBjcmVhdGVfY3VzX2Zyb21faW5kZXggdGhhdCBoYW5kbGVzIGEgZ2l2 ZW4gbGlzdCBvZgotKyAgIENVcy4gICovCisrCisgLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24g ZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCisgICAgdGhlIERJRSdz IHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwK KyAgICBhcnJheXMuICAqLworQEAgLTExNjkwLDcgKzExNzIyLDcgQEAgcmVhZF9hcnJheV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBzdHJ1Y3Qg dHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGU7CisgICBzdHJ1Y3Qg dHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKKyAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Cist ICBpbnQgbmRpbSA9IDA7CisrICBpbnQgbmRpbSA9IDAsIGk7CisgICBzdHJ1Y3QgY2xlYW51cCAq YmFja190bzsKKyAgIGNoYXIgKm5hbWU7CiAgCi0gc3RhdGljIGludAotLWNyZWF0ZV9jdXNfZnJv bV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0 LAotLQkJICAgICAgIG9mZnNldF90eXBlIGN1X2xpc3RfZWxlbWVudHMpCi0rY3JlYXRlX2N1c19m cm9tX2luZGV4X2xpc3QgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCSAgICBjb25zdCBn ZGJfYnl0ZSAqY3VfbGlzdCwgb2Zmc2V0X3R5cGUgbl9lbGVtZW50cywKLSsJCQkgICAgc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24sCi0rCQkJICAgIGludCBpc19kd3osCi0rCQkJ ICAgIGludCBiYXNlX29mZnNldCkKLSB7Ci0gICBvZmZzZXRfdHlwZSBpOworQEAgLTExNzQzLDE3 ICsxMTc3NSwxOSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCi0tICBkd2FyZjJf cGVyX29iamZpbGUtPm5fY29tcF91bml0cyA9IGN1X2xpc3RfZWxlbWVudHMgLyAyOwotLSAgZHdh cmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0cwotLSAgICA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0tCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9j b21wX3VuaXRzCi0tCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICop KTsKLS0KLS0gIGZvciAoaSA9IDA7IGkgPCBjdV9saXN0X2VsZW1lbnRzOyBpICs9IDIpCi0rICBm b3IgKGkgPSAwOyBpIDwgbl9lbGVtZW50czsgaSArPSAyKQotICAgICB7Ci0gICAgICAgc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqdGhlX2N1OwotICAgICAgIFVMT05HRVNUIG9mZnNldCwgbGVu Z3RoOwotQEAgLTIzMTAsMTUgKzIzMzEsNDUgQEAgY3JlYXRlX2N1c19mcm9tX2luZGV4IChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgZ2RiX2J5dGUgKmN1X2xpc3QsCi0gICAgICAgdGhl X2N1LT5vZmZzZXQuc2VjdF9vZmYgPSBvZmZzZXQ7Ci0gICAgICAgdGhlX2N1LT5sZW5ndGggPSBs ZW5ndGg7Ci0gICAgICAgdGhlX2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKLS0gICAgICB0aGVfY3Ut PmluZm9fb3JfdHlwZXNfc2VjdGlvbiA9ICZkd2FyZjJfcGVyX29iamZpbGUtPmluZm87Ci0rICAg ICAgdGhlX2N1LT5pbmZvX29yX3R5cGVzX3NlY3Rpb24gPSBzZWN0aW9uOwotICAgICAgIHRoZV9j dS0+di5xdWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAot IAkJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7Ci0tICAgICAgZHdhcmYyX3Bl cl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpIC8gMl0gPSB0aGVfY3U7Ci0rICAgICAgdGhlX2N1 LT5pc19kd3ogPSBpc19kd3o7Ci0rICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91 bml0c1tiYXNlX29mZnNldCArIGkgLyAyXSA9IHRoZV9jdTsKLSAgICAgfQotIAotICAgcmV0dXJu IDE7Ci0gfQotIAotKy8qIFJlYWQgdGhlIENVIGxpc3QgZnJvbSB0aGUgbWFwcGVkIGluZGV4LCBh bmQgdXNlIGl0IHRvIGNyZWF0ZSBhbGwKLSsgICB0aGUgQ1Ugb2JqZWN0cyBmb3IgdGhpcyBvYmpm aWxlLiAgUmV0dXJuIDAgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcsCi0rICAgMSBpZiBldmVyeXRo aW5nIHdlbnQgb2suICAqLwotKwotK3N0YXRpYyBpbnQKLStjcmVhdGVfY3VzX2Zyb21faW5kZXgg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJICAgICAgIGNvbnN0IGdkYl9ieXRlICpjdV9s aXN0LCBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1lbnRzLAotKwkJICAgICAgIGNvbnN0IGdkYl9i eXRlICpkd3pfbGlzdCwgb2Zmc2V0X3R5cGUgZHd6X2VsZW1lbnRzKQotK3sKLSsgIHN0cnVjdCBk d3pfZmlsZSAqZHd6OwotKwotKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMgPSAo Y3VfbGlzdF9lbGVtZW50cyArIGR3el9lbGVtZW50cykgLyAyOwotKyAgZHdhcmYyX3Blcl9vYmpm aWxlLT5hbGxfY29tcF91bml0cwotKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCi0rCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCi0r CQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICopKTsKLSsKLSsgIGlm ICghY3JlYXRlX2N1c19mcm9tX2luZGV4X2xpc3QgKG9iamZpbGUsIGN1X2xpc3QsIGN1X2xpc3Rf ZWxlbWVudHMsCi0rCQkJCSAgICZkd2FyZjJfcGVyX29iamZpbGUtPmluZm8sIDAsIDApKQotKyAg ICByZXR1cm4gMDsKLSsKLSsgIGlmIChkd3pfZWxlbWVudHMgPT0gMCkKLSsgICAgcmV0dXJuIDE7 Ci0rCi0rICBkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOwotKyAgcmV0dXJuIGNyZWF0ZV9j dXNfZnJvbV9pbmRleF9saXN0IChvYmpmaWxlLCBkd3pfbGlzdCwgZHd6X2VsZW1lbnRzLAotKwkJ CQkgICAgICZkd3otPmluZm8sIDEsIGN1X2xpc3RfZWxlbWVudHMgLyAyKTsKLSt9Ci0rCi0gLyog Q3JlYXRlIHRoZSBzaWduYXR1cmVkIHR5cGUgaGFzaCB0YWJsZSBmcm9tIHRoZSBpbmRleC4gICov Ci0gCi0gc3RhdGljIGludAotQEAgLTI1MDgsMzMgKzI1NTksNDQgQEAgZmluZF9zbG90X2luX21h cHBlZF9oYXNoIChzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleCwgY29uc3QgY2hhciAqbmFtZSwK LSAgICAgfQotIH0KLSAKLS0vKiBSZWFkIHRoZSBpbmRleCBmaWxlLiAgSWYgZXZlcnl0aGluZyB3 ZW50IG9rLCBpbml0aWFsaXplIHRoZSAicXVpY2siCi0tICAgZWxlbWVudHMgb2YgYWxsIHRoZSBD VXMgYW5kIHJldHVybiAxLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCi0rLyogQSBoZWxwZXIg ZnVuY3Rpb24gdGhhdCByZWFkcyB0aGUgLmdkYl9pbmRleCBmcm9tIFNFQ1RJT04gYW5kIGZpbGxz Ci0rICAgaW4gTUFQLiAgRklMRU5BTUUgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgY29udGFpbmlu ZyB0aGUgc2VjdGlvbjsKLSsgICBpdCBpcyB1c2VkIGZvciBlcnJvciByZXBvcnRpbmcuICBERVBS RUNBVEVEX09LIGlzIG5vbnplcm8gaWYgaXQgaXMKLSsgICBvayB0byB1c2UgZGVwcmVjYXRlZCBz ZWN0aW9ucy4KLSsKLSsgICBDVV9MSVNULCBDVV9MSVNUX0VMRU1FTlRTLCBUWVBFU19MSVNULCBh bmQgVFlQRVNfTElTVF9FTEVNRU5UUyBhcmUKLSsgICBvdXQgcGFyYW1ldGVycyB0aGF0IGFyZSBm aWxsZWQgaW4gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1UgYW5kCi0rICAgVFUgbGlzdHMg aW4gdGhlIHNlY3Rpb24uCi0rCi0rICAgUmV0dXJucyAxIGlmIGFsbCB3ZW50IHdlbGwsIDAgb3Ro ZXJ3aXNlLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKQotK3JlYWRfaW5kZXhfZnJvbV9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKLSsJCQkgY29uc3QgY2hhciAqZmlsZW5hbWUsCi0rCQkJIGludCBkZXByZWNh dGVkX29rLAotKwkJCSBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwKLSsJCQkg c3RydWN0IG1hcHBlZF9pbmRleCAqbWFwLAotKwkJCSBjb25zdCBnZGJfYnl0ZSAqKmN1X2xpc3Qs Ci0rCQkJIG9mZnNldF90eXBlICpjdV9saXN0X2VsZW1lbnRzLAotKwkJCSBjb25zdCBnZGJfYnl0 ZSAqKnR5cGVzX2xpc3QsCi0rCQkJIG9mZnNldF90eXBlICp0eXBlc19saXN0X2VsZW1lbnRzKQot IHsKLSAgIGNoYXIgKmFkZHI7Ci0tICBzdHJ1Y3QgbWFwcGVkX2luZGV4ICptYXA7Ci0rICBvZmZz ZXRfdHlwZSB2ZXJzaW9uOwotICAgb2Zmc2V0X3R5cGUgKm1ldGFkYXRhOwotLSAgY29uc3QgZ2Ri X2J5dGUgKmN1X2xpc3Q7Ci0tICBjb25zdCBnZGJfYnl0ZSAqdHlwZXNfbGlzdCA9IE5VTEw7Ci0t ICBvZmZzZXRfdHlwZSB2ZXJzaW9uLCBjdV9saXN0X2VsZW1lbnRzOwotLSAgb2Zmc2V0X3R5cGUg dHlwZXNfbGlzdF9lbGVtZW50cyA9IDA7Ci0gICBpbnQgaTsKLSAKLS0gIGlmIChkd2FyZjJfc2Vj dGlvbl9lbXB0eV9wICgmZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXgpKQotKyAgaWYgKGR3 YXJmMl9zZWN0aW9uX2VtcHR5X3AgKHNlY3Rpb24pKQotICAgICByZXR1cm4gMDsKLSAKLSAgIC8q IE9sZGVyIGVsZnV0aWxzIHN0cmlwIHZlcnNpb25zIGNvdWxkIGtlZXAgdGhlIHNlY3Rpb24gaW4g dGhlIG1haW4KLSAgICAgIGV4ZWN1dGFibGUgd2hpbGUgc3BsaXR0aW5nIGl0IGZvciB0aGUgc2Vw YXJhdGUgZGVidWcgaW5mbyBmaWxlLiAgKi8KLS0gIGlmICgoYmZkX2dldF9maWxlX2ZsYWdzIChk d2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5hc2VjdGlvbikKLS0gICAgICAgJiBTRUNfSEFT X0NPTlRFTlRTKSA9PSAwKQotKyAgaWYgKChiZmRfZ2V0X2ZpbGVfZmxhZ3MgKHNlY3Rpb24tPmFz ZWN0aW9uKSAmIFNFQ19IQVNfQ09OVEVOVFMpID09IDApCi0gICAgIHJldHVybiAwOwotIAotLSAg ZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2lu ZGV4KTsKLSsgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIHNlY3Rpb24pOwotIAotLSAg YWRkciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4LmJ1ZmZlcjsKLSsgIGFkZHIgPSBz ZWN0aW9uLT5idWZmZXI7Ci0gICAvKiBWZXJzaW9uIGNoZWNrLiAgKi8KLSAgIHZlcnNpb24gPSBN QVlCRV9TV0FQICgqKG9mZnNldF90eXBlICopIGFkZHIpOwotICAgLyogVmVyc2lvbnMgZWFybGll ciB0aGFuIDMgZW1pdHRlZCBldmVyeSBjb3B5IG9mIGEgcHN5bWJvbC4gIFRoaXMKLUBAIC0yNTQ3 LDcgKzI2MDksNyBAQCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp Ci0gICAgICAgaWYgKCF3YXJuaW5nX3ByaW50ZWQpCi0gCXsKLSAJICB3YXJuaW5nIChfKCJTa2lw cGluZyBvYnNvbGV0ZSAuZ2RiX2luZGV4IHNlY3Rpb24gaW4gJXMuIiksCi0tCQkgICBvYmpmaWxl LT5uYW1lKTsKLSsJCSAgIGZpbGVuYW1lKTsKLSAJICB3YXJuaW5nX3ByaW50ZWQgPSAxOwotIAl9 Ci0gICAgICAgcmV0dXJuIDA7Ci1AQCAtMjU2MCw3ICsyNjIyLDcgQEAgZHdhcmYyX3JlYWRfaW5k ZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgICAgc2V0IGJyZWFrcG9pbnRzIG9uIGlu bGluZWQgZnVuY3Rpb25zIGJ5IG5hbWUsIHNvIHdlIGlnbm9yZSB0aGVzZQotICAgICAgaW5kaWNl cyB1bmxlc3MgdGhlIHVzZXIgaGFzIGRvbmUKLSAgICAgICJzZXQgdXNlLWRlcHJlY2F0ZWQtaW5k ZXgtc2VjdGlvbnMgb24iLiAgKi8KLS0gIGlmICh2ZXJzaW9uIDwgNiAmJiAhdXNlX2RlcHJlY2F0 ZWRfaW5kZXhfc2VjdGlvbnMpCi0rICBpZiAodmVyc2lvbiA8IDYgJiYgIWRlcHJlY2F0ZWRfb2sp Ci0gICAgIHsKLSAgICAgICBzdGF0aWMgaW50IHdhcm5pbmdfcHJpbnRlZCA9IDA7Ci0gICAgICAg aWYgKCF3YXJuaW5nX3ByaW50ZWQpCi1AQCAtMjU2OSw3ICsyNjMxLDcgQEAgZHdhcmYyX3JlYWRf aW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIFNraXBwaW5nIGRlcHJlY2F0ZWQgLmdk Yl9pbmRleCBzZWN0aW9uIGluICVzLlxuXAotIERvIFwic2V0IHVzZS1kZXByZWNhdGVkLWluZGV4 LXNlY3Rpb25zIG9uXCIgYmVmb3JlIHRoZSBmaWxlIGlzIHJlYWRcblwKLSB0byB1c2UgdGhlIHNl Y3Rpb24gYW55d2F5LiIpLAotLQkJICAgb2JqZmlsZS0+bmFtZSk7Ci0rCQkgICBmaWxlbmFtZSk7 Ci0gCSAgd2FybmluZ19wcmludGVkID0gMTsKLSAJfQotICAgICAgIHJldHVybiAwOwotQEAgLTI1 NzksMjIgKzI2NDEsMjEgQEAgdG8gdXNlIHRoZSBzZWN0aW9uIGFueXdheS4iKSwKLSAgIGlmICh2 ZXJzaW9uID4gNykKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBtYXAgPSBPQlNUQUNLX1pBTExPQyAo Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IG1hcHBlZF9pbmRleCk7Ci0gICBtYXAt PnZlcnNpb24gPSB2ZXJzaW9uOwotLSAgbWFwLT50b3RhbF9zaXplID0gZHdhcmYyX3Blcl9vYmpm aWxlLT5nZGJfaW5kZXguc2l6ZTsKLSsgIG1hcC0+dG90YWxfc2l6ZSA9IHNlY3Rpb24tPnNpemU7 Ci0gCi0gICBtZXRhZGF0YSA9IChvZmZzZXRfdHlwZSAqKSAoYWRkciArIHNpemVvZiAob2Zmc2V0 X3R5cGUpKTsKLSAKLSAgIGkgPSAwOwotLSAgY3VfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQICht ZXRhZGF0YVtpXSk7Ci0tICBjdV9saXN0X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0 YVtpICsgMV0pIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pKQotLQkJICAgICAgLyA4KTsKLSsg ICpjdV9saXN0ID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKLSsgICpjdV9saXN0 X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVtpICsgMV0pIC0gTUFZQkVfU1dBUCAo bWV0YWRhdGFbaV0pKQotKwkJICAgICAgIC8gOCk7Ci0gICArK2k7Ci0gCi0tICB0eXBlc19saXN0 ID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKLS0gIHR5cGVzX2xpc3RfZWxlbWVu dHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhW2kgKyAxXSkKLS0JCQkgIC0gTUFZQkVfU1dBUCAo bWV0YWRhdGFbaV0pKQotLQkJCSAvIDgpOwotKyAgKnR5cGVzX2xpc3QgPSBhZGRyICsgTUFZQkVf U1dBUCAobWV0YWRhdGFbaV0pOwotKyAgKnR5cGVzX2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NX QVAgKG1ldGFkYXRhW2kgKyAxXSkKLSsJCQkgICAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKSkK LSsJCQkgIC8gOCk7Ci0gICArK2k7Ci0gCi0gICBtYXAtPmFkZHJlc3NfdGFibGUgPSBhZGRyICsg TUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwotQEAgLTI2MTAsMTEgKzI2NzEsNTUgQEAgdG8gdXNl IHRoZSBzZWN0aW9uIGFueXdheS4iKSwKLSAKLSAgIG1hcC0+Y29uc3RhbnRfcG9vbCA9IGFkZHIg KyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Ci0gCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rCi0r LyogUmVhZCB0aGUgaW5kZXggZmlsZS4gIElmIGV2ZXJ5dGhpbmcgd2VudCBvaywgaW5pdGlhbGl6 ZSB0aGUgInF1aWNrIgotKyAgIGVsZW1lbnRzIG9mIGFsbCB0aGUgQ1VzIGFuZCByZXR1cm4gMS4g IE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLwotKwotK3N0YXRpYyBpbnQKLStkd2FyZjJfcmVhZF9p bmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgc3RydWN0IG1hcHBlZF9pbmRl eCBsb2NhbF9tYXAsICptYXA7Ci0rICBjb25zdCBnZGJfYnl0ZSAqY3VfbGlzdCwgKnR5cGVzX2xp c3QsICpkd3pfbGlzdCA9IE5VTEw7Ci0rICBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1lbnRzLCB0 eXBlc19saXN0X2VsZW1lbnRzLCBkd3pfbGlzdF9lbGVtZW50cyA9IDA7Ci0rCi0rICBpZiAoIXJl YWRfaW5kZXhfZnJvbV9zZWN0aW9uIChvYmpmaWxlLCBvYmpmaWxlLT5uYW1lLAotKwkJCQl1c2Vf ZGVwcmVjYXRlZF9pbmRleF9zZWN0aW9ucywKLSsJCQkJJmR3YXJmMl9wZXJfb2JqZmlsZS0+Z2Ri X2luZGV4LCAmbG9jYWxfbWFwLAotKwkJCQkmY3VfbGlzdCwgJmN1X2xpc3RfZWxlbWVudHMsCi0r CQkJCSZ0eXBlc19saXN0LCAmdHlwZXNfbGlzdF9lbGVtZW50cykpCi0rICAgIHJldHVybiAwOwot KwotICAgLyogRG9uJ3QgdXNlIHRoZSBpbmRleCBpZiBpdCdzIGVtcHR5LiAgKi8KLS0gIGlmICht YXAtPnN5bWJvbF90YWJsZV9zbG90cyA9PSAwKQotKyAgaWYgKGxvY2FsX21hcC5zeW1ib2xfdGFi bGVfc2xvdHMgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpZiAoIWNyZWF0ZV9jdXNfZnJv bV9pbmRleCAob2JqZmlsZSwgY3VfbGlzdCwgY3VfbGlzdF9lbGVtZW50cykpCi0rICAvKiBJZiB0 aGVyZSBpcyBhIC5kd3ogZmlsZSwgcmVhZCBpdCBzbyB3ZSBjYW4gZ2V0IGl0cyBDVSBsaXN0IGFz Ci0rICAgICB3ZWxsLiAgKi8KLSsgIGlmIChiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2JqZmls ZS0+b2JmZCwgIi5nbnVfZGVidWdhbHRsaW5rIikgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIHN0 cnVjdCBkd3pfZmlsZSAqZHd6ID0gZHdhcmYyX2dldF9kd3pfZmlsZSAoKTsKLSsgICAgICBzdHJ1 Y3QgbWFwcGVkX2luZGV4IGR3el9tYXA7Ci0rICAgICAgY29uc3QgZ2RiX2J5dGUgKmR3el90eXBl c19pZ25vcmU7Ci0rICAgICAgb2Zmc2V0X3R5cGUgZHd6X3R5cGVzX2VsZW1lbnRzX2lnbm9yZTsK LSsKLSsgICAgICBpZiAoIXJlYWRfaW5kZXhfZnJvbV9zZWN0aW9uIChvYmpmaWxlLCBiZmRfZ2V0 X2ZpbGVuYW1lIChkd3otPmR3el9iZmQpLAotKwkJCQkgICAgMSwKLSsJCQkJICAgICZkd3otPmdk Yl9pbmRleCwgJmR3el9tYXAsCi0rCQkJCSAgICAmZHd6X2xpc3QsICZkd3pfbGlzdF9lbGVtZW50 cywKLSsJCQkJICAgICZkd3pfdHlwZXNfaWdub3JlLAotKwkJCQkgICAgJmR3el90eXBlc19lbGVt ZW50c19pZ25vcmUpKQotKwl7Ci0rCSAgd2FybmluZyAoXygiY291bGQgbm90IHJlYWQgJy5nZGJf aW5kZXgnIHNlY3Rpb24gZnJvbSAlczsgc2tpcHBpbmciKSwKLSsJCSAgIGJmZF9nZXRfZmlsZW5h bWUgKGR3ei0+ZHd6X2JmZCkpOwotKwkgIHJldHVybiAwOwotKwl9Ci0rICAgIH0KLSsKLSsgIGlm ICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBjdV9saXN0LCBjdV9saXN0X2VsZW1l bnRzLAotKwkJCSAgICAgIGR3el9saXN0LCBkd3pfbGlzdF9lbGVtZW50cykpCi0gICAgIHJldHVy biAwOwotIAotICAgaWYgKHR5cGVzX2xpc3RfZWxlbWVudHMpCi1AQCAtMjYzNSw3ICsyNzQwLDEw IEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBhbnl3YXkuIiksCi0gCXJldHVybiAwOwotICAgICB9Ci0g Ci0tICBjcmVhdGVfYWRkcm1hcF9mcm9tX2luZGV4IChvYmpmaWxlLCBtYXApOwotKyAgY3JlYXRl X2FkZHJtYXBfZnJvbV9pbmRleCAob2JqZmlsZSwgJmxvY2FsX21hcCk7Ci0rCi0rICBtYXAgPSBv YnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHN0cnVjdCBt YXBwZWRfaW5kZXgpKTsKLSsgICptYXAgPSBsb2NhbF9tYXA7Ci0gCi0gICBkd2FyZjJfcGVyX29i amZpbGUtPmluZGV4X3RhYmxlID0gbWFwOwotICAgZHdhcmYyX3Blcl9vYmpmaWxlLT51c2luZ19p bmRleCA9IDE7Ci1AQCAtMzY4Niw2ICszNzk0LDIyIEBAIHJlYWRfY29tcF91bml0X2hlYWQgKHN0 cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyLAotICAgcmV0dXJuIGluZm9fcHRyOwotIH0K LSAKLSsvKiBIZWxwZXIgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBwcm9wZXIgYWJicmV2IHNl Y3Rpb24gZm9yCi0rICAgVEhJU19DVS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCBkd2FyZjJfc2Vj dGlvbl9pbmZvICoKLStnZXRfYWJicmV2X3NlY3Rpb25fZm9yX2N1IChzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICp0aGlzX2N1KQotK3sKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICph YmJyZXY7Ci0rCi0rICBpZiAodGhpc19jdS0+aXNfZHd6KQotKyAgICBhYmJyZXYgPSAmZHdhcmYy X2dldF9kd3pfZmlsZSAoKS0+YWJicmV2OwotKyAgZWxzZQotKyAgICBhYmJyZXYgPSAmZHdhcmYy X3Blcl9vYmpmaWxlLT5hYmJyZXY7Ci0rCi0rICByZXR1cm4gYWJicmV2OwotK30KLSsKLSAvKiBT dWJyb3V0aW5lIG9mIHJlYWRfYW5kX2NoZWNrX2NvbXBfdW5pdF9oZWFkIGFuZAotICAgIHJlYWRf YW5kX2NoZWNrX3R5cGVfdW5pdF9oZWFkIHRvIHNpbXBsaWZ5IHRoZW0uCi0gICAgUGVyZm9ybSB2 YXJpb3VzIGVycm9yIGNoZWNraW5nIG9uIHRoZSBoZWFkZXIuICAqLwotQEAgLTM3MDQsOCArMzgy OCw3IEBAIGVycm9yX2NoZWNrX2NvbXBfdW5pdF9oZWFkIChzdHJ1Y3QgY29tcF91bml0X2hlYWQg KmhlYWRlciwKLSAJICAgZmlsZW5hbWUpOwotIAotICAgaWYgKGhlYWRlci0+YWJicmV2X29mZnNl dC5zZWN0X29mZgotLSAgICAgID49IGR3YXJmMl9zZWN0aW9uX3NpemUgKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+b2JqZmlsZSwKLS0JCQkgICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYpKQot KyAgICAgID49IGR3YXJmMl9zZWN0aW9uX3NpemUgKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmls ZSwgYWJicmV2X3NlY3Rpb24pKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IGJhZCBvZmZz ZXQgKDB4JWx4KSBpbiBjb21waWxhdGlvbiB1bml0IGhlYWRlciAiCi0gCSAgICIob2Zmc2V0IDB4 JWx4ICsgNikgW2luIG1vZHVsZSAlc10iKSwKLSAJICAgKGxvbmcpIGhlYWRlci0+YWJicmV2X29m ZnNldC5zZWN0X29mZiwgKGxvbmcpIGhlYWRlci0+b2Zmc2V0LnNlY3Rfb2ZmLAotQEAgLTM5NDIs NiArNDA2NSw3IEBAIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChzdHJ1Y3QgZHdvX2Zp bGUgKmR3b19maWxlLAotICAgICB7Ci0gICAgICAgYmZkICphYmZkOwotICAgICAgIGdkYl9ieXRl ICppbmZvX3B0ciwgKmVuZF9wdHI7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8g KmFiYnJldl9zZWN0aW9uOwotIAotICAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUs IHNlY3Rpb24pOwotICAgICAgIGluZm9fcHRyID0gc2VjdGlvbi0+YnVmZmVyOwotQEAgLTM5NTMs NiArNDA3NywxMSBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IGR3b19m aWxlICpkd29fZmlsZSwKLSAJIG5vdCBwcmVzZW50LCBpbiB3aGljaCBjYXNlIHNlY3Rpb24tPmFz ZWN0aW9uIHdpbGwgYmUgTlVMTC4gICovCi0gICAgICAgYWJmZCA9IHNlY3Rpb24tPmFzZWN0aW9u LT5vd25lcjsKLSAKLSsgICAgICBpZiAoZHdvX2ZpbGUpCi0rCWFiYnJldl9zZWN0aW9uID0gJmR3 b19maWxlLT5zZWN0aW9ucy5hYmJyZXY7Ci0rICAgICAgZWxzZQotKwlhYmJyZXZfc2VjdGlvbiA9 ICZkd2FyZjJfcGVyX29iamZpbGUtPmFiYnJldjsKLSsKLSAgICAgICBpZiAodHlwZXNfaHRhYiA9 PSBOVUxMKQotIAl7Ci0gCSAgaWYgKGR3b19maWxlKQotQEAgLTQxOTIsNyArNDMyMSw4IEBAIGlu aXRfY3V0dV9hbmRfcmVhZF9kaWVzIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1 LAotICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgc2VjdGlvbik7Ci0gCi0gICBiZWdp bl9pbmZvX3B0ciA9IGluZm9fcHRyID0gc2VjdGlvbi0+YnVmZmVyICsgdGhpc19jdS0+b2Zmc2V0 LnNlY3Rfb2ZmOwotLSAgYWJicmV2X3NlY3Rpb24gPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJy ZXY7Ci0rCi0rICBhYmJyZXZfc2VjdGlvbiA9IGdldF9hYmJyZXZfc2VjdGlvbl9mb3JfY3UgKHRo aXNfY3UpOwotIAotICAgaWYgKHVzZV9leGlzdGluZ19jdSAmJiB0aGlzX2N1LT5jdSAhPSBOVUxM KQotICAgICB7Ci1AQCAtNDU3NCw3ICs0NzA0LDcgQEAgaW5pdF9jdXR1X2FuZF9yZWFkX2RpZXNf c2ltcGxlIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0aGlzX2N1LAotIAkJCQl2b2lkICpk YXRhKQotIHsKLSAgIGluaXRfY3V0dV9hbmRfcmVhZF9kaWVzX25vX2ZvbGxvdyAodGhpc19jdSwK LS0JCQkJICAgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5hYmJyZXYsCi0rCQkJCSAgICAgZ2V0X2Fi YnJldl9zZWN0aW9uX2Zvcl9jdSAodGhpc19jdSksCi0gCQkJCSAgICAgTlVMTCwKLSAJCQkJICAg ICBkaWVfcmVhZGVyX2Z1bmMsIGRhdGEpOwotIH0KLUBAIC01MjAyLDYgKzUzMzIsOSBAQCBzZXRf cGFydGlhbF91c2VyIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgICBzdHJ1Y3QgcGFy dGlhbF9zeW10YWIgKnBzdCA9IHBlcl9jdS0+di5wc3ltdGFiOwotICAgICAgIGludCBqOwotIAot KyAgICAgIGlmIChwc3QgPT0gTlVMTCkKLSsJY29udGludWU7Ci0rCi0gICAgICAgZm9yIChqID0g MDsgaiA8IHBzdC0+bnVtYmVyX29mX2RlcGVuZGVuY2llczsgKytqKQotIAl7Ci0gCSAgLyogU2V0 IHRoZSAndXNlcicgZmllbGQgb25seSBpZiBpdCBpcyBub3QgYWxyZWFkeSBzZXQuICAqLwotQEAg LTUyOTYsMzggKzU0MjksMzIgQEAgbG9hZF9wYXJ0aWFsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqdGhpc19jdSkKLSAJCQkgICBsb2FkX3BhcnRpYWxfY29tcF91bml0X3Jl YWRlciwgTlVMTCk7Ci0gfQotIAotLS8qIENyZWF0ZSBhIGxpc3Qgb2YgYWxsIGNvbXBpbGF0aW9u IHVuaXRzIGluIE9CSkZJTEUuCi0tICAgVGhpcyBpcyBvbmx5IGRvbmUgZm9yIC1yZWFkbm93IGFu ZCBidWlsZGluZyBwYXJ0aWFsIHN5bXRhYnMuICAqLwotLQotIHN0YXRpYyB2b2lkCi0tY3JlYXRl X2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLStyZWFkX2NvbXBfdW5p dHNfZnJvbV9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgICAgICBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiwKLSsJCQkgICAgICB1bnNpZ25lZCBpbnQg aXNfZHd6LAotKwkJCSAgICAgIGludCAqbl9hbGxvY2F0ZWQsCi0rCQkJICAgICAgaW50ICpuX2Nv bXBfdW5pdHMsCi0rCQkJICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKiphbGxfY29t cF91bml0cykKLSB7Ci0tICBpbnQgbl9hbGxvY2F0ZWQ7Ci0tICBpbnQgbl9jb21wX3VuaXRzOwot LSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKmFsbF9jb21wX3VuaXRzOwotICAgZ2RiX2J5 dGUgKmluZm9fcHRyOwotKyAgYmZkICphYmZkID0gc2VjdGlvbi0+YXNlY3Rpb24tPm93bmVyOwot IAotLSAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+ aW5mbyk7Ci0tICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXI7Ci0r ICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCBzZWN0aW9uKTsKLSAKLS0gIG5fY29tcF91 bml0cyA9IDA7Ci0tICBuX2FsbG9jYXRlZCA9IDEwOwotLSAgYWxsX2NvbXBfdW5pdHMgPSB4bWFs bG9jIChuX2FsbG9jYXRlZAotLQkJCSAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqKSk7Ci0rICBpbmZvX3B0ciA9IHNlY3Rpb24tPmJ1ZmZlcjsKLSAKLS0gIHdoaWxlIChp bmZvX3B0ciA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIKLS0JICsgZHdhcmYyX3Bl cl9vYmpmaWxlLT5pbmZvLnNpemUpCi0rICB3aGlsZSAoaW5mb19wdHIgPCBzZWN0aW9uLT5idWZm ZXIgKyBzZWN0aW9uLT5zaXplKQotICAgICB7Ci0gICAgICAgdW5zaWduZWQgaW50IGxlbmd0aCwg aW5pdGlhbF9sZW5ndGhfc2l6ZTsKLSAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICp0 aGlzX2N1OwotICAgICAgIHNlY3Rfb2Zmc2V0IG9mZnNldDsKLSAKLS0gICAgICBvZmZzZXQuc2Vj dF9vZmYgPSBpbmZvX3B0ciAtIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXI7Ci0rICAg ICAgb2Zmc2V0LnNlY3Rfb2ZmID0gaW5mb19wdHIgLSBzZWN0aW9uLT5idWZmZXI7Ci0gCi0gICAg ICAgLyogUmVhZCBqdXN0IGVub3VnaCBpbmZvcm1hdGlvbiB0byBmaW5kIG91dCB3aGVyZSB0aGUg bmV4dAotIAkgY29tcGlsYXRpb24gdW5pdCBpcy4gICovCi0tICAgICAgbGVuZ3RoID0gcmVhZF9p bml0aWFsX2xlbmd0aCAob2JqZmlsZS0+b2JmZCwgaW5mb19wdHIsCi0tCQkJCSAgICAmaW5pdGlh bF9sZW5ndGhfc2l6ZSk7Ci0rICAgICAgbGVuZ3RoID0gcmVhZF9pbml0aWFsX2xlbmd0aCAoYWJm ZCwgaW5mb19wdHIsICZpbml0aWFsX2xlbmd0aF9zaXplKTsKLSAKLSAgICAgICAvKiBTYXZlIHRo ZSBjb21waWxhdGlvbiB1bml0IGZvciBsYXRlciBsb29rdXAuICAqLwotICAgICAgIHRoaXNfY3Ug PSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotQEAgLTUzMzUsMjAg KzU0NjIsNTAgQEAgY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSkKLSAgICAgICBtZW1zZXQgKHRoaXNfY3UsIDAsIHNpemVvZiAoKnRoaXNfY3UpKTsKLSAgICAg ICB0aGlzX2N1LT5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgdGhpc19jdS0+bGVuZ3RoID0gbGVu Z3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKLSsgICAgICB0aGlzX2N1LT5pc19kd3ogPSBpc19k d3o7Ci0gICAgICAgdGhpc19jdS0+b2JqZmlsZSA9IG9iamZpbGU7Ci0tICAgICAgdGhpc19jdS0+ aW5mb19vcl90eXBlc19zZWN0aW9uID0gJmR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mbzsKLSsgICAg ICB0aGlzX2N1LT5pbmZvX29yX3R5cGVzX3NlY3Rpb24gPSBzZWN0aW9uOwotIAotLSAgICAgIGlm IChuX2NvbXBfdW5pdHMgPT0gbl9hbGxvY2F0ZWQpCi0rICAgICAgaWYgKCpuX2NvbXBfdW5pdHMg PT0gKm5fYWxsb2NhdGVkKQotIAl7Ci0tCSAgbl9hbGxvY2F0ZWQgKj0gMjsKLS0JICBhbGxfY29t cF91bml0cyA9IHhyZWFsbG9jIChhbGxfY29tcF91bml0cywKLS0JCQkJICAgICBuX2FsbG9jYXRl ZAotLQkJCQkgICAgICogc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICopKTsKLSsJ ICAqbl9hbGxvY2F0ZWQgKj0gMjsKLSsJICAqYWxsX2NvbXBfdW5pdHMgPSB4cmVhbGxvYyAoKmFs bF9jb21wX3VuaXRzLAotKwkJCQkgICAgICAqbl9hbGxvY2F0ZWQKLSsJCQkJICAgICAgKiBzaXpl b2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOwotIAl9Ci0tICAgICAgYWxsX2NvbXBf dW5pdHNbbl9jb21wX3VuaXRzKytdID0gdGhpc19jdTsKLSsgICAgICAoKmFsbF9jb21wX3VuaXRz KVsqbl9jb21wX3VuaXRzXSA9IHRoaXNfY3U7Ci0rICAgICAgKysqbl9jb21wX3VuaXRzOwotIAot ICAgICAgIGluZm9fcHRyID0gaW5mb19wdHIgKyB0aGlzX2N1LT5sZW5ndGg7Ci0gICAgIH0KLSt9 Ci0rCi0rLyogQ3JlYXRlIGEgbGlzdCBvZiBhbGwgY29tcGlsYXRpb24gdW5pdHMgaW4gT0JKRklM RS4KLSsgICBUaGlzIGlzIG9ubHkgZG9uZSBmb3IgLXJlYWRub3cgYW5kIGJ1aWxkaW5nIHBhcnRp YWwgc3ltdGFicy4gICovCi0rCi0rc3RhdGljIHZvaWQKLStjcmVhdGVfYWxsX2NvbXBfdW5pdHMg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGludCBuX2FsbG9jYXRlZDsKLSsgIGlu dCBuX2NvbXBfdW5pdHM7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICoqYWxsX2NvbXBf dW5pdHM7Ci0rCi0rICBuX2NvbXBfdW5pdHMgPSAwOwotKyAgbl9hbGxvY2F0ZWQgPSAxMDsKLSsg IGFsbF9jb21wX3VuaXRzID0geG1hbGxvYyAobl9hbGxvY2F0ZWQKLSsJCQkgICAgKiBzaXplb2Yg KHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOwotKwotKyAgcmVhZF9jb21wX3VuaXRzX2Zy b21fc2VjdGlvbiAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mbywgMCwKLSsJCQkJ Jm5fYWxsb2NhdGVkLCAmbl9jb21wX3VuaXRzLCAmYWxsX2NvbXBfdW5pdHMpOwotKwotKyAgaWYg KGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxlLT5vYmZkLCAiLmdudV9kZWJ1Z2FsdGxp bmsiKSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3el9maWxlICpkd3ogPSBkd2Fy ZjJfZ2V0X2R3el9maWxlICgpOwotKwotKyAgICAgIHJlYWRfY29tcF91bml0c19mcm9tX3NlY3Rp b24gKG9iamZpbGUsICZkd3otPmluZm8sIDEsCi0rCQkJCSAgICAmbl9hbGxvY2F0ZWQsICZuX2Nv bXBfdW5pdHMsCi0rCQkJCSAgICAmYWxsX2NvbXBfdW5pdHMpOwotKyAgICB9Ci0gCi0gICBkd2Fy ZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzCi0gICAgID0gb2JzdGFja19hbGxvYyAoJm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywKLUBAIC01NDQxLDYgKzU1OTgsNyBAQCBzY2FuX3BhcnRp YWxfc3ltYm9scyAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKmZpcnN0X2RpZSwgQ09SRV9BRERS ICpsb3dwYywKLSAJCSAgfQotIAotIAkJcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19j b21wX3VuaXQgKHBkaS0+ZC5vZmZzZXQsCi0rCQkJCQkJCSAgIHBkaS0+aXNfZHd6LAotIAkJCQkJ CQkgICBjdS0+b2JqZmlsZSk7Ci0gCi0gCQkvKiBHbyByZWFkIHRoZSBwYXJ0aWFsIHVuaXQsIGlm IG5lZWRlZC4gICovCi1AQCAtNTQ5OCw3ICs1NjU2LDggQEAgcGFydGlhbF9kaWVfcGFyZW50X3Nj b3BlIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLAotIAotICAgcmVhbF9wZGkgPSBwZGk7 Ci0gICB3aGlsZSAocmVhbF9wZGktPmhhc19zcGVjaWZpY2F0aW9uKQotLSAgICByZWFsX3BkaSA9 IGZpbmRfcGFydGlhbF9kaWUgKHJlYWxfcGRpLT5zcGVjX29mZnNldCwgY3UpOwotKyAgICByZWFs X3BkaSA9IGZpbmRfcGFydGlhbF9kaWUgKHJlYWxfcGRpLT5zcGVjX29mZnNldCwKLSsJCQkJIHJl YWxfcGRpLT5zcGVjX2lzX2R3eiwgY3UpOwotIAotICAgcGFyZW50ID0gcmVhbF9wZGktPmRpZV9w YXJlbnQ7Ci0gICBpZiAocGFyZW50ID09IE5VTEwpCi1AQCAtNTk5OCw2ICs2MTU3LDkgQEAgc2tp cF9vbmVfZGllIChjb25zdCBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLCBnZGJfYnl0 ZSAqaW5mb19wdHIsCi0gCSAgZWxzZQotIAkgICAgaW5mb19wdHIgKz0gY3UtPmhlYWRlci5vZmZz ZXRfc2l6ZTsKLSAJICBicmVhazsKLSsJY2FzZSBEV19GT1JNX0dOVV9yZWZfYWx0OgotKwkgIGlu Zm9fcHRyICs9IGN1LT5oZWFkZXIub2Zmc2V0X3NpemU7Ci0rCSAgYnJlYWs7Ci0gCWNhc2UgRFdf Rk9STV9hZGRyOgotIAkgIGluZm9fcHRyICs9IGN1LT5oZWFkZXIuYWRkcl9zaXplOwotIAkgIGJy ZWFrOwotQEAgLTYwMjcsNiArNjE4OSw3IEBAIHNraXBfb25lX2RpZSAoY29uc3Qgc3RydWN0IGRp ZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAotIAkgIGJyZWFrOwot IAljYXNlIERXX0ZPUk1fc2VjX29mZnNldDoKLSAJY2FzZSBEV19GT1JNX3N0cnA6Ci0rCWNhc2Ug RFdfRk9STV9HTlVfc3RycF9hbHQ6Ci0gCSAgaW5mb19wdHIgKz0gY3UtPmhlYWRlci5vZmZzZXRf c2l6ZTsKLSAJICBicmVhazsKLSAJY2FzZSBEV19GT1JNX2V4cHJsb2M6Ci1AQCAtNjY5NCw3ICs2 ODU3LDkgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1LAotICAgICAgaXQsIGJ5IHNjYW5uaW5nIHRoZSBESUUncyBiZWxvdyB0aGUgY29t cGlsYXRpb24gdW5pdC4gICovCi0gICBnZXRfc2NvcGVfcGNfYm91bmRzIChjdS0+ZGllcywgJmxv d3BjLCAmaGlnaHBjLCBjdSk7Ci0gCi0tICBzdGF0aWNfYmxvY2sgPSBlbmRfc3ltdGFiX2dldF9z dGF0aWNfYmxvY2sgKGhpZ2hwYyArIGJhc2VhZGRyLCBvYmpmaWxlLCAwKTsKLSsgIHN0YXRpY19i bG9jawotKyAgICA9IGVuZF9zeW10YWJfZ2V0X3N0YXRpY19ibG9jayAoaGlnaHBjICsgYmFzZWFk ZHIsIG9iamZpbGUsIDAsCi0rCQkJCSAgIHBlcl9jdS0+cy5pbXBvcnRlZF9zeW10YWJzICE9IE5V TEwpOwotIAotICAgLyogSWYgdGhlIGNvbXAgdW5pdCBoYXMgRFdfQVRfcmFuZ2VzLCBpdCBtYXkg aGF2ZSBkaXNjb250aWd1b3VzIHJhbmdlcy4KLSAgICAgIEFsc28sIERXX0FUX3JhbmdlcyBtYXkg cmVjb3JkIHJhbmdlcyBub3QgYmVsb25naW5nIHRvIGFueSBjaGlsZCBESUVzCi1AQCAtNjg0NSw5 ICs3MDEwLDExIEBAIHByb2Nlc3NfaW1wb3J0ZWRfdW5pdF9kaWUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpwZXJfY3U7Ci0gICAgICAgc3RydWN0IHN5bXRhYiAqaW1wb3J0ZWRfc3ltdGFiOwotICAg ICAgIHNlY3Rfb2Zmc2V0IG9mZnNldDsKLSsgICAgICBpbnQgaXNfZHd6OwotIAotICAgICAgIG9m ZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKGF0dHIpOwotLSAgICAgIHBlcl9jdSA9 IGR3YXJmMl9maW5kX2NvbnRhaW5pbmdfY29tcF91bml0IChvZmZzZXQsIGN1LT5vYmpmaWxlKTsK LSsgICAgICBpc19kd3ogPSAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX0dOVV9yZWZfYWx0IHx8IGN1 LT5wZXJfY3UtPmlzX2R3eik7Ci0rICAgICAgcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmlu Z19jb21wX3VuaXQgKG9mZnNldCwgaXNfZHd6LCBjdS0+b2JqZmlsZSk7Ci0gCi0gICAgICAgLyog UXVldWUgdGhlIHVuaXQsIGlmIG5lZWRlZC4gICovCi0gICAgICAgaWYgKG1heWJlX3F1ZXVlX2Nv bXBfdW5pdCAoY3UsIHBlcl9jdSwgY3UtPmxhbmd1YWdlKSkKLUBAIC04MTE2LDI0ICs4MjgzLDIx IEBAIHRyeV9vcGVuX2R3b19maWxlIChjb25zdCBjaGFyICpmaWxlX25hbWUpCi0gICBpZiAoZGVz YyA8IDApCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgc3ltX2JmZCA9IGJmZF9mb3BlbiAoYWJz b2x1dGVfbmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7Ci0rICBzeW1fYmZkID0gZ2Ri X2JmZF9vcGVuIChhYnNvbHV0ZV9uYW1lLCBnbnV0YXJnZXQsIGRlc2MpOwotICAgaWYgKCFzeW1f YmZkKQotICAgICB7Ci0gICAgICAgeGZyZWUgKGFic29sdXRlX25hbWUpOwotICAgICAgIHJldHVy biBOVUxMOwotICAgICB9Ci0rICB4ZnJlZSAoYWJzb2x1dGVfbmFtZSk7Ci0gICBiZmRfc2V0X2Nh Y2hlYWJsZSAoc3ltX2JmZCwgMSk7Ci0gCi0gICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKHN5bV9i ZmQsIGJmZF9vYmplY3QpKQotICAgICB7Ci0tICAgICAgYmZkX2Nsb3NlIChzeW1fYmZkKTsgLyog VGhpcyBhbHNvIGNsb3NlcyBkZXNjLiAgKi8KLS0gICAgICB4ZnJlZSAoYWJzb2x1dGVfbmFtZSk7 Ci0rICAgICAgZ2RiX2JmZF91bnJlZiAoc3ltX2JmZCk7IC8qIFRoaXMgYWxzbyBjbG9zZXMgZGVz Yy4gICovCi0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gIC8qIGJmZF91c3JkYXRh IGV4aXN0cyBmb3IgYXBwbGljYXRpb25zIGFuZCBsaWJiZmQgbXVzdCBub3QgdG91Y2ggaXQuICAq LwotLSAgZ2RiX2Fzc2VydCAoYmZkX3VzcmRhdGEgKHN5bV9iZmQpID09IE5VTEwpOwotLQotICAg cmV0dXJuIHN5bV9iZmQ7Ci0gfQotIAotQEAgLTgzMjUsMjAgKzg0ODksNyBAQCBmcmVlX2R3b19m aWxlIChzdHJ1Y3QgZHdvX2ZpbGUgKmR3b19maWxlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK LSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uOwotIAotICAgZ2RiX2Fzc2Vy dCAoZHdvX2ZpbGUtPmR3b19iZmQgIT0gb2JqZmlsZS0+b2JmZCk7Ci0tICBiZmRfY2xvc2UgKGR3 b19maWxlLT5kd29fYmZkKTsKLS0KLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmR3b19maWxl LT5zZWN0aW9ucy5hYmJyZXYpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZHdvX2ZpbGUt PnNlY3Rpb25zLmluZm8pOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZHdvX2ZpbGUtPnNl Y3Rpb25zLmxpbmUpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZHdvX2ZpbGUtPnNlY3Rp b25zLmxvYyk7Ci0tICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkd29fZmlsZS0+c2VjdGlvbnMu c3RyKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmR3b19maWxlLT5zZWN0aW9ucy5zdHJf b2Zmc2V0cyk7Ci0tCi0tICBmb3IgKGl4ID0gMDsKLS0gICAgICAgVkVDX2l0ZXJhdGUgKGR3YXJm Ml9zZWN0aW9uX2luZm9fZGVmLCBkd29fZmlsZS0+c2VjdGlvbnMudHlwZXMsCi0tCQkgICAgaXgs IHNlY3Rpb24pOwotLSAgICAgICArK2l4KQotLSAgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHNl Y3Rpb24pOwotKyAgZ2RiX2JmZF91bnJlZiAoZHdvX2ZpbGUtPmR3b19iZmQpOwotIAotICAgVkVD X2ZyZWUgKGR3YXJmMl9zZWN0aW9uX2luZm9fZGVmLCBkd29fZmlsZS0+c2VjdGlvbnMudHlwZXMp OwotIH0KLUBAIC0xMDcyMSw2ICsxMDg3MiwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3Bl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBuZXdfc3lt Ym9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOwotIH0KLSAKLSsvKiBDcmVhdGUgYSBuZXcgYXJyYXkg ZGltZW5zaW9uIHJlZmVyZW5jaW5nIGl0cyB0YXJnZXQgdHlwZSBUWVBFLgotKwotKyAgIE11bHRp ZGltZW5zaW9uYWwgYXJyYXlzIGFyZSBpbnRlcm5hbGx5IHJlcHJlc2VudGVkIGFzIGEgc3RhY2sg b2YKLSsgICBzaW5nbGVkaW1lbnNpb25hbCBhcnJheXMgYmVpbmcgcmVmZXJlbmNlZCBieSB0aGVp ciBUWVBFX1RBUkdFVF9UWVBFLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHR5cGUgKgotK2NyZWF0 ZV9zaW5nbGVfYXJyYXlfZGltZW5zaW9uIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUg KnJhbmdlX3R5cGUsCi0rCQkJICAgICAgIHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKLSt7Ci0rICB0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUs IHJhbmdlX3R5cGUpOwotKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgbmVl ZCB0byBiZSBmZXRjaGVkIGJ5Ci0rICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgPG11bHRp X2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgotKyAgICAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVl IG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCi0rICBmZXRjaF9kaWVfdHlw ZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7Ci0rCi0rICAvKiBUaGVzZSBnZW5lcmljIHR5cGUgYXR0 cmlidXRlcyBhcmUgY2hlY2tlZCBmb3IgYWxsb2NhdGVkL2Fzc29jaWF0ZWQKLSsgICAgIHZhbGlk aXR5IHdoaWxlIGFjY2Vzc2luZyBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSy4gICovCi0rICBm ZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCByYW5nZV90eXBlLCBjdSk7Ci0rCi0rICByZXR1cm4g dHlwZTsKLSt9Ci0rCi0gLyogRXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19h cnJheV90eXBlIERJRSBhbmQgcHV0IGl0IGluCi0gICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBG b3Igbm93LCB0aGlzIG9ubHkgaGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKLSAgICBhcnJheXMuICAq LwotQEAgLTEwNzM0LDcgKzEwOTA4LDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90 eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5 cGVzID0gTlVMTDsKLSAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0tICBpbnQgbmRpbSA9IDA7 Ci0rICBpbnQgbmRpbSA9IDAsIGk7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSAgIGNo YXIgKm5hbWU7Ci0gCi1AQCAtMTA3ODcsMTcgKzEwOTYxLDE5IEBAIHJlYWRfYXJyYXlfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgdHlwZSA9IGVs ZW1lbnRfdHlwZTsKLSAKLSAgIGlmIChyZWFkX2FycmF5X29yZGVyIChkaWUsIGN1KSA9PSBEV19P UkRfY29sX21ham9yKQotLSAgICB7Ci0tICAgICAgaW50IGkgPSAwOworICAgaWYgKHJlYWRfYXJy YXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCistICAgIHsKKy0gICAgICBp bnQgaSA9IDA7CiAtCiAtICAgICAgd2hpbGUgKGkgPCBuZGltKQogLQl0eXBlID0gY3JlYXRlX2Fy cmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOwpAQCAtMjY3NCw3ICs5NDIs NyBAQCBpbmRleCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogIAogICAgLyogVW5kZXJzdGFuZCBE d2FyZjIgc3VwcG9ydCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KICAgICAg IHRoZSBQb3dlclBDIHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0 ZSB0byB0aGUKLUBAIC0xMTI4MSwyOSArMTE0NTcsMTE0IEBAIHJlYWRfdGFnX3N0cmluZ190eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTIzNzks MjkgKzEyNDEzLDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBn ZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVjdCB0eXBlICp0eXBlLCAqcmFuZ2Vf dHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy OwpAQCAtMjgwMiw3ICsxMDcwLDcgQEAgaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKICAg IGNoYXJfdHlwZSA9IGxhbmd1YWdlX3N0cmluZ19jaGFyX3R5cGUgKGN1LT5sYW5ndWFnZV9kZWZu LCBnZGJhcmNoKTsKICAgIHR5cGUgPSBjcmVhdGVfc3RyaW5nX3R5cGUgKE5VTEwsIGNoYXJfdHlw ZSwgcmFuZ2VfdHlwZSk7CiAgCi1AQCAtMTE2MDcsNyArMTE4NjgsNyBAQCByZWFkX3N1YnJhbmdl X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0x MjcwNSw3ICsxMjgyNCw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKICAg IHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAg LTI4MTEsNyArMTA3OSw3IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIgMTAwNjQ0CiAgICBpbnQg bG93X2RlZmF1bHRfaXNfdmFsaWQ7CiAgICBjaGFyICpuYW1lOwogICAgTE9OR0VTVCBuZWdhdGl2 ZV9tYXNrOwotQEAgLTExNjYzLDQyICsxMTkyNCw2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTEyNzYxLDQyICsx Mjg4MCw2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogIAkJCQkgICAgICAiLSBESUUgYXQgMHgleCBbaW4gbW9kdWxlICVz XSIpLAogIAkgICAgICAgZGllLT5vZmZzZXQuc2VjdF9vZmYsIGN1LT5vYmpmaWxlLT5uYW1lKTsK ICAKQEAgLTI4NTQsNyArMTEyMiw3IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIgMTAwNjQ0CiAg ICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dzIHRvIGNyZWF0ZSBz dWJyYW5nZSB0eXBlcwogICAgICAgd2l0aG91dCBzcGVjaWZ5aW5nIGEgYmFzZSB0eXBlLgogICAg ICAgSW4gdGhhdCBjYXNlLCB0aGUgYmFzZSB0eXBlIG11c3QgYmUgc2V0IHRvIHRoZSB0eXBlIG9m Ci1AQCAtMTE3MzcsMjQgKzExOTYyLDE2MyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0xMjgzNSwyNCArMTI5MTgs MTYzIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogIAl9CiAgICAgIH0KICAKQEAgLTI4OTYsMTAgKzExNjQsNyBAQCBpbmRl eCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0 X2RpZTsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKICsgICAgICBz dHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0gCi0tICAvKiBBZGEgZXhwZWN0cyBh biBlbXB0eSBhcnJheSBvbiBubyBib3VuZGFyeSBhdHRyaWJ1dGVzLiAgKi8KLS0gIGlmIChhdHRy ID09IE5VTEwgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLS0gICAgVFlQRV9ISUdI X0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOworKwogKyAgICAgIHRhcmdldF9kaWUg PSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7CiArICAgICAg Z2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKICsgICAgICB0 YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRpb24s IHRhcmdldF9jdSk7CkBAIC0yOTM3LDcgKzEyMDIsMTAgQEAgaW5kZXggZGVlZTVhMi4uYjJmMDUy YiAxMDA2NDQKICsgICAgICBpZiAobG93ID49IDApCiArCVRZUEVfVU5TSUdORUQgKHJhbmdlX3R5 cGUpID0gMTsKICsgICAgfQotKworIAorLSAgLyogQWRhIGV4cGVjdHMgYW4gZW1wdHkgYXJyYXkg b24gbm8gYm91bmRhcnkgYXR0cmlidXRlcy4gICovCistICBpZiAoYXR0ciA9PSBOVUxMICYmIGN1 LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCistICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKHJhbmdlX3R5cGUpID0gMTsKICsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF91 cHBlcl9ib3VuZCwgY3UpOwogKyAgaWYgKCFhdHRyIHx8ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChh dHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKQogKwkJJiYgIWlzX3JlZl9hdHRy IChhdHRyKSkpCkBAIC0zMDMyLDIxNCArMTMwMCw3IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIg MTAwNjQ0CiAgCiAgICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogICAgaWYgKG5hbWUp Ci1AQCAtMTI1NDQsNiArMTI5MDgsOCBAQCByZWFkX3BhcnRpYWxfZGllIChjb25zdCBzdHJ1Y3Qg ZGllX3JlYWRlcl9zcGVjcyAqcmVhZGVyLAotIAljYXNlIERXX0FUX2V4dGVuc2lvbjoKLSAJICBw YXJ0X2RpZS0+aGFzX3NwZWNpZmljYXRpb24gPSAxOwotIAkgIHBhcnRfZGllLT5zcGVjX29mZnNl dCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKCZhdHRyKTsKLSsJICBwYXJ0X2RpZS0+c3Bl Y19pc19kd3ogPSAoYXR0ci5mb3JtID09IERXX0ZPUk1fR05VX3JlZl9hbHQKLSsJCQkJICAgfHwg Y3UtPnBlcl9jdS0+aXNfZHd6KTsKLSAJICBicmVhazsKLSAJY2FzZSBEV19BVF9zaWJsaW5nOgot IAkgIC8qIElnbm9yZSBhYnNvbHV0ZSBzaWJsaW5ncywgdGhleSBtaWdodCBwb2ludCBvdXRzaWRl IG9mCi1AQCAtMTI1OTAsNyArMTI5NTYsMTEgQEAgcmVhZF9wYXJ0aWFsX2RpZSAoY29uc3Qgc3Ry dWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKLSAKLSAJY2FzZSBEV19BVF9pbXBvcnQ6Ci0g CSAgaWYgKHBhcnRfZGllLT50YWcgPT0gRFdfVEFHX2ltcG9ydGVkX3VuaXQpCi0tCSAgICBwYXJ0 X2RpZS0+ZC5vZmZzZXQgPSBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0ICgmYXR0cik7Ci0rCSAg ICB7Ci0rCSAgICAgIHBhcnRfZGllLT5kLm9mZnNldCA9IGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZz ZXQgKCZhdHRyKTsKLSsJICAgICAgcGFydF9kaWUtPmlzX2R3eiA9IChhdHRyLmZvcm0gPT0gRFdf Rk9STV9HTlVfcmVmX2FsdAotKwkJCQkgIHx8IGN1LT5wZXJfY3UtPmlzX2R3eik7Ci0rCSAgICB9 Ci0gCSAgYnJlYWs7Ci0gCi0gCWRlZmF1bHQ6Ci1AQCAtMTI2NjEsMTMgKzEzMDMxLDE0IEBAIGZp bmRfcGFydGlhbF9kaWVfaW5fY29tcF91bml0IChzZWN0X29mZnNldCBvZmZzZXQsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotICAgIERXX0ZPUk1fcmVmX3NpZzgpLiAgKi8KLSAKLSBzdGF0aWMgc3Ry dWN0IHBhcnRpYWxfZGllX2luZm8gKgotLWZpbmRfcGFydGlhbF9kaWUgKHNlY3Rfb2Zmc2V0IG9m ZnNldCwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rZmluZF9wYXJ0aWFsX2RpZSAoc2VjdF9vZmZz ZXQgb2Zmc2V0LCBpbnQgb2Zmc2V0X2luX2R3eiwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gewot ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLSAgIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSA9IE5VTEw7Ci0gICBzdHJ1Y3QgcGFydGlhbF9kaWVfaW5m byAqcGQgPSBOVUxMOwotIAotLSAgaWYgKG9mZnNldF9pbl9jdV9wICgmY3UtPmhlYWRlciwgb2Zm c2V0KSkKLSsgIGlmIChvZmZzZXRfaW5fZHd6ID09IGN1LT5wZXJfY3UtPmlzX2R3egotKyAgICAg ICYmIG9mZnNldF9pbl9jdV9wICgmY3UtPmhlYWRlciwgb2Zmc2V0KSkKLSAgICAgewotICAgICAg IHBkID0gZmluZF9wYXJ0aWFsX2RpZV9pbl9jb21wX3VuaXQgKG9mZnNldCwgY3UpOwotICAgICAg IGlmIChwZCAhPSBOVUxMKQotQEAgLTEyNjg2LDcgKzEzMDU3LDggQEAgZmluZF9wYXJ0aWFsX2Rp ZSAoc2VjdF9vZmZzZXQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAJCSAobG9uZykg Y3UtPmhlYWRlci5vZmZzZXQuc2VjdF9vZmYsIChsb25nKSBvZmZzZXQuc2VjdF9vZmYsCi0gCQkg YmZkX2dldF9maWxlbmFtZSAob2JqZmlsZS0+b2JmZCkpOwotIAl9Ci0tICAgICAgcGVyX2N1ID0g ZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQgKG9mZnNldCwgb2JqZmlsZSk7Ci0rICAg ICAgcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQgKG9mZnNldCwgb2Zm c2V0X2luX2R3eiwKLSsJCQkJCQkgb2JqZmlsZSk7Ci0gCi0gICAgICAgaWYgKHBlcl9jdS0+Y3Ug PT0gTlVMTCB8fCBwZXJfY3UtPmN1LT5wYXJ0aWFsX2RpZXMgPT0gTlVMTCkKLSAJbG9hZF9wYXJ0 aWFsX2NvbXBfdW5pdCAocGVyX2N1KTsKLUBAIC0xMjc0NCw3ICsxMzExNiw4IEBAIGd1ZXNzX3Bh cnRpYWxfZGllX3N0cnVjdHVyZV9uYW1lIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqc3RydWN0 X3BkaSwKLSAKLSAgIHJlYWxfcGRpID0gc3RydWN0X3BkaTsKLSAgIHdoaWxlIChyZWFsX3BkaS0+ aGFzX3NwZWNpZmljYXRpb24pCi0tICAgIHJlYWxfcGRpID0gZmluZF9wYXJ0aWFsX2RpZSAocmVh bF9wZGktPnNwZWNfb2Zmc2V0LCBjdSk7Ci0rICAgIHJlYWxfcGRpID0gZmluZF9wYXJ0aWFsX2Rp ZSAocmVhbF9wZGktPnNwZWNfb2Zmc2V0LAotKwkJCQkgcmVhbF9wZGktPnNwZWNfaXNfZHd6LCBj dSk7Ci0gCi0gICBpZiAocmVhbF9wZGktPmRpZV9wYXJlbnQgIT0gTlVMTCkKLSAgICAgcmV0dXJu OwotQEAgLTEyNzkyLDcgKzEzMTY1LDggQEAgZml4dXBfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0 aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwKLSAgICAgewotICAgICAgIHN0cnVjdCBwYXJ0aWFsX2Rp ZV9pbmZvICpzcGVjX2RpZTsKLSAKLS0gICAgICBzcGVjX2RpZSA9IGZpbmRfcGFydGlhbF9kaWUg KHBhcnRfZGllLT5zcGVjX29mZnNldCwgY3UpOwotKyAgICAgIHNwZWNfZGllID0gZmluZF9wYXJ0 aWFsX2RpZSAocGFydF9kaWUtPnNwZWNfb2Zmc2V0LAotKwkJCQkgICBwYXJ0X2RpZS0+c3BlY19p c19kd3osIGN1KTsKLSAKLSAgICAgICBmaXh1cF9wYXJ0aWFsX2RpZSAoc3BlY19kaWUsIGN1KTsK LSAKLUBAIC0xMjg4MCw2ICsxMzI1NCwxMCBAQCByZWFkX2F0dHJpYnV0ZV92YWx1ZSAoY29uc3Qg c3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJlYWRlciwKLSAJCQkJICAgICAgICZjdS0+aGVhZGVy LCAmYnl0ZXNfcmVhZCk7Ci0gICAgICAgaW5mb19wdHIgKz0gYnl0ZXNfcmVhZDsKLSAgICAgICBi cmVhazsKLSsgICAgY2FzZSBEV19GT1JNX0dOVV9yZWZfYWx0OgotKyAgICAgIERXX1VOU05EIChh dHRyKSA9IHJlYWRfb2Zmc2V0IChhYmZkLCBpbmZvX3B0ciwgJmN1LT5oZWFkZXIsICZieXRlc19y ZWFkKTsKLSsgICAgICBpbmZvX3B0ciArPSBieXRlc19yZWFkOwotKyAgICAgIGJyZWFrOwotICAg ICBjYXNlIERXX0ZPUk1fYWRkcjoKLSAgICAgICBEV19BRERSIChhdHRyKSA9IHJlYWRfYWRkcmVz cyAoYWJmZCwgaW5mb19wdHIsIGN1LCAmYnl0ZXNfcmVhZCk7Ci0gICAgICAgaW5mb19wdHIgKz0g Ynl0ZXNfcmVhZDsKLUBAIC0xMjkyMiwxMCArMTMzMDAsMjUgQEAgcmVhZF9hdHRyaWJ1dGVfdmFs dWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCi0gICAgICAgaW5mb19w dHIgKz0gYnl0ZXNfcmVhZDsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBEV19GT1JNX3N0cnA6 Ci0tICAgICAgRFdfU1RSSU5HIChhdHRyKSA9IHJlYWRfaW5kaXJlY3Rfc3RyaW5nIChhYmZkLCBp bmZvX3B0ciwgY3VfaGVhZGVyLAotLQkJCQkJICAgICAgICZieXRlc19yZWFkKTsKLS0gICAgICBE V19TVFJJTkdfSVNfQ0FOT05JQ0FMIChhdHRyKSA9IDA7Ci0tICAgICAgaW5mb19wdHIgKz0gYnl0 ZXNfcmVhZDsKLSsgICAgICBpZiAoIWN1LT5wZXJfY3UtPmlzX2R3eikKLSsJewotKwkgIERXX1NU UklORyAoYXR0cikgPSByZWFkX2luZGlyZWN0X3N0cmluZyAoYWJmZCwgaW5mb19wdHIsIGN1X2hl YWRlciwKLSsJCQkJCQkgICAmYnl0ZXNfcmVhZCk7Ci0rCSAgRFdfU1RSSU5HX0lTX0NBTk9OSUNB TCAoYXR0cikgPSAwOwotKwkgIGluZm9fcHRyICs9IGJ5dGVzX3JlYWQ7Ci0rCSAgYnJlYWs7Ci0r CX0KLSsgICAgICAvKiBGQUxMVEhST1VHSCAqLwotKyAgICBjYXNlIERXX0ZPUk1fR05VX3N0cnBf YWx0OgotKyAgICAgIHsKLSsJc3RydWN0IGR3el9maWxlICpkd3ogPSBkd2FyZjJfZ2V0X2R3el9m aWxlICgpOwotKwlMT05HRVNUIHN0cl9vZmZzZXQgPSByZWFkX29mZnNldCAoYWJmZCwgaW5mb19w dHIsIGN1X2hlYWRlciwKLSsJCQkJCSAgJmJ5dGVzX3JlYWQpOwotKwotKwlEV19TVFJJTkcgKGF0 dHIpID0gcmVhZF9pbmRpcmVjdF9zdHJpbmdfZnJvbV9kd3ogKGR3eiwgc3RyX29mZnNldCk7Ci0r CURXX1NUUklOR19JU19DQU5PTklDQUwgKGF0dHIpID0gMDsKLSsJaW5mb19wdHIgKz0gYnl0ZXNf cmVhZDsKLSsgICAgICB9Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRFdfRk9STV9leHBybG9j OgotICAgICBjYXNlIERXX0ZPUk1fYmxvY2s6Ci1AQCAtMTMwMzcsNiArMTM0MzAsMTAgQEAgcmVh ZF9hdHRyaWJ1dGVfdmFsdWUgKGNvbnN0IHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIs Ci0gCSAgICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotICAgICB9Ci0gCi0rICAvKiBTdXBl ciBoYWNrLiAgKi8KLSsgIGlmIChjdS0+cGVyX2N1LT5pc19kd3ogJiYgaXNfcmVmX2F0dHIgKGF0 dHIpKQotKyAgICBhdHRyLT5mb3JtID0gRFdfRk9STV9HTlVfcmVmX2FsdDsKLSsKLSAgIC8qIFdl IGhhdmUgc2VlbiBpbnN0YW5jZXMgd2hlcmUgdGhlIGNvbXBpbGVyIHRyaWVkIHRvIGVtaXQgYSBi eXRlCi0gICAgICBzaXplIGF0dHJpYnV0ZSBvZiAtMSB3aGljaCBlbmRlZCB1cCBiZWluZyBlbmNv ZGVkIGFzIGFuIHVuc2lnbmVkCi0gICAgICAweGZmZmZmZmZmLiAgQWx0aG91Z2ggMHhmZmZmZmZm ZiBpcyB0ZWNobmljYWxseSBhIHZhbGlkIHNpemUgdmFsdWUsCi1AQCAtMTMzMzMsNiArMTM3MzAs MzAgQEAgcmVhZF9pbmRpcmVjdF9zdHJpbmdfYXRfb2Zmc2V0IChiZmQgKmFiZmQsIExPTkdFU1Qg c3RyX29mZnNldCkKLSAgIHJldHVybiAoY2hhciAqKSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5zdHIu YnVmZmVyICsgc3RyX29mZnNldCk7Ci0gfQotIAotKy8qIFJlYWQgYSBzdHJpbmcgYXQgb2Zmc2V0 IFNUUl9PRkZTRVQgaW4gdGhlIC5kZWJ1Z19zdHIgc2VjdGlvbiBmcm9tCi0rICAgdGhlIC5kd3og ZmlsZSBEV1ouICBUaHJvdyBhbiBlcnJvciBpZiB0aGUgb2Zmc2V0IGlzIHRvbyBsYXJnZS4gIElm Ci0rICAgdGhlIHN0cmluZyBjb25zaXN0cyBvZiBhIHNpbmdsZSBOVUwgYnl0ZSwgcmV0dXJuIE5V TEw7IG90aGVyd2lzZQotKyAgIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHN0cmluZy4gICovCi0r Ci0rc3RhdGljIGNoYXIgKgotK3JlYWRfaW5kaXJlY3Rfc3RyaW5nX2Zyb21fZHd6IChzdHJ1Y3Qg ZHd6X2ZpbGUgKmR3eiwgTE9OR0VTVCBzdHJfb2Zmc2V0KQotK3sKLSsgIGR3YXJmMl9yZWFkX3Nl Y3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwgJmR3ei0+c3RyKTsKLSsKLSsgIGlm IChkd3otPnN0ci5idWZmZXIgPT0gTlVMTCkKLSsgICAgZXJyb3IgKF8oIkRXX0ZPUk1fR05VX3N0 cnBfYWx0IHVzZWQgd2l0aG91dCAuZGVidWdfc3RyICIKLSsJICAgICAic2VjdGlvbiBbaW4gbW9k dWxlICVzXSIpLAotKwkgICBiZmRfZ2V0X2ZpbGVuYW1lIChkd3otPmR3el9iZmQpKTsKLSsgIGlm IChzdHJfb2Zmc2V0ID49IGR3ei0+c3RyLnNpemUpCi0rICAgIGVycm9yIChfKCJEV19GT1JNX0dO VV9zdHJwX2FsdCBwb2ludGluZyBvdXRzaWRlIG9mICIKLSsJICAgICAiLmRlYnVnX3N0ciBzZWN0 aW9uIFtpbiBtb2R1bGUgJXNdIiksCi0rCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGR3ei0+ZHd6X2Jm ZCkpOwotKyAgZ2RiX2Fzc2VydCAoSE9TVF9DSEFSX0JJVCA9PSA4KTsKLSsgIGlmIChkd3otPnN0 ci5idWZmZXJbc3RyX29mZnNldF0gPT0gJ1wwJykKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICByZXR1 cm4gKGNoYXIgKikgKGR3ei0+c3RyLmJ1ZmZlciArIHN0cl9vZmZzZXQpOwotK30KLSsKLSBzdGF0 aWMgY2hhciAqCi0gcmVhZF9pbmRpcmVjdF9zdHJpbmcgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1 ZiwKLSAJCSAgICAgIGNvbnN0IHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyLAotQEAg LTEzODA0LDYgKzE0MjI1LDMwIEBAIGFkZF9maWxlX25hbWUgKHN0cnVjdCBsaW5lX2hlYWRlciAq bGgsCi0gICBmZS0+c3ltdGFiID0gTlVMTDsKLSB9Ci0gCi0rLyogQSBjb252ZW5pZW5jZSBmdW5j dGlvbiB0byBmaW5kIHRoZSBwcm9wZXIgLmRlYnVnX2xpbmUgc2VjdGlvbiBmb3IgYQotKyAgIENV LiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKgotK2dldF9kZWJ1 Z19saW5lX3NlY3Rpb24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uOwotKwotKyAgLyogRm9yIFRVcyBpbiBEV08gZmlsZXMs IHRoZSBEV19BVF9zdG10X2xpc3QgYXR0cmlidXRlIGxpdmVzIGluIHRoZQotKyAgICAgRFdPIGZp bGUuICAqLwotKyAgaWYgKGN1LT5kd29fdW5pdCAmJiBjdS0+cGVyX2N1LT5pc19kZWJ1Z190eXBl cykKLSsgICAgc2VjdGlvbiA9ICZjdS0+ZHdvX3VuaXQtPmR3b19maWxlLT5zZWN0aW9ucy5saW5l OwotKyAgZWxzZSBpZiAoY3UtPnBlcl9jdS0+aXNfZHd6KQotKyAgICB7Ci0rICAgICAgc3RydWN0 IGR3el9maWxlICpkd3ogPSBkd2FyZjJfZ2V0X2R3el9maWxlICgpOwotKwotKyAgICAgIHNlY3Rp b24gPSAmZHd6LT5saW5lOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHNlY3Rpb24gPSAmZHdhcmYy X3Blcl9vYmpmaWxlLT5saW5lOwotKwotKyAgcmV0dXJuIHNlY3Rpb247Ci0rfQotKwotIC8qIFJl YWQgdGhlIHN0YXRlbWVudCBwcm9ncmFtIGhlYWRlciBzdGFydGluZyBhdCBPRkZTRVQgaW4KLSAg ICAuZGVidWdfbGluZSwgb3IgLmRlYnVnX2xpbmUuZHdvLiAgUmV0dXJuIGEgcG9pbnRlcgotICAg IHRvIGEgc3RydWN0IGxpbmVfaGVhZGVyLCBhbGxvY2F0ZWQgdXNpbmcgeG1hbGxvYy4KLUBAIC0x MzgyNCwxMyArMTQyNjksNyBAQCBkd2FyZl9kZWNvZGVfbGluZV9oZWFkZXIgKHVuc2lnbmVkIGlu dCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0IGR3YXJmMl9zZWN0aW9u X2luZm8gKnNlY3Rpb247Ci0gICBiZmQgKmFiZmQ7Ci0gCi0tICAvKiBGb3IgVFVzIGluIERXTyBm aWxlcywgdGhlIERXX0FUX3N0bXRfbGlzdCBhdHRyaWJ1dGUgbGl2ZXMgaW4gdGhlCi0tICAgICBE V08gZmlsZS4gICovCi0tICBpZiAoY3UtPmR3b191bml0ICYmIGN1LT5wZXJfY3UtPmlzX2RlYnVn X3R5cGVzKQotLSAgICBzZWN0aW9uID0gJmN1LT5kd29fdW5pdC0+ZHdvX2ZpbGUtPnNlY3Rpb25z LmxpbmU7Ci0tICBlbHNlCi0tICAgIHNlY3Rpb24gPSAmZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5l OwotLQotKyAgc2VjdGlvbiA9IGdldF9kZWJ1Z19saW5lX3NlY3Rpb24gKGN1KTsKLSAgIGR3YXJm Ml9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwgc2VjdGlvbik7Ci0g ICBpZiAoc2VjdGlvbi0+YnVmZmVyID09IE5VTEwpCi0gICAgIHsKLUBAIC0xNDE1NSw3ICsxNDU5 NCw3IEBAIGR3YXJmX2RlY29kZV9saW5lc18xIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjb25z dCBjaGFyICpjb21wX2RpciwKLSAJCQkgR0NkIGJ5IHRoZSBsaW5rZXIuICBJZ25vcmUgaXQuICBQ UiBnZGIvMTI1MjggKi8KLSAKLSAJCSAgICAgIGxvbmcgbGluZV9vZmZzZXQKLS0JCQk9IGxpbmVf cHRyIC0gZHdhcmYyX3Blcl9vYmpmaWxlLT5saW5lLmJ1ZmZlcjsKLSsJCQk9IGxpbmVfcHRyIC0g Z2V0X2RlYnVnX2xpbmVfc2VjdGlvbiAoY3UpLT5idWZmZXI7Ci0gCi0gCQkgICAgICBjb21wbGFp bnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCQkJCSBfKCIuZGVidWdfbGluZSBhZGRyZXNzIGF0 IG9mZnNldCAweCVseCBpcyAwICIKLUBAIC0xNDUzNCwxMCArMTQ5NzMsMTIgQEAgdmFyX2RlY29k ZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAor QEAgLTE1NzEyLDEwICsxNTkzNCwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRoZSB2 YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJlbmNl ZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQK ICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5s ZXNzIHBlcmZvcm1hbmNlCkBAIC0zMjU0LDcgKzEzMTUsNyBAQCBpbmRleCBkZWVlNWEyLi5iMmYw NTJiIDEwMDY0NAogIAogICAgaWYgKFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPT0gJmR3YXJm Ml9sb2NsaXN0X2Z1bmNzKQogICAgICBjdS0+aGFzX2xvY2xpc3QgPSAxOwotQEAgLTE0NTc4LDYg KzE1MDE5LDggQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTE1NzU2LDYgKzE1OTgwLDgg QEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAogICAgICAgIGVsc2UKICAJc3ltID0gT0JTVEFDS19a QUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHN0cnVjdCBzeW1ib2wpOwogICAgICAg IE9CSlNUQVQgKG9iamZpbGUsIG5fc3ltcysrKTsKQEAgLTMyNjMsMzIgKzEzMjQsNyBAQCBpbmRl eCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAogIAogICAgICAgIC8qIENhY2hlIHRoaXMgc3ltYm9s J3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4gICovCiAgICAg ICAgU1lNQk9MX1NFVF9MQU5HVUFHRSAoc3ltLCBjdS0+bGFuZ3VhZ2UpOwotQEAgLTE1MDAxLDYg KzE1NDQ0LDcgQEAgZHdhcmYyX2NvbnN0X3ZhbHVlX2F0dHIgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHIsIHN0cnVjdCB0eXBlICp0eXBlLAotICAgICBjYXNlIERXX0ZPUk1fc3RyaW5nOgotICAgICBj YXNlIERXX0ZPUk1fc3RycDoKLSAgICAgY2FzZSBEV19GT1JNX0dOVV9zdHJfaW5kZXg6Ci0rICAg IGNhc2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6Ci0gICAgICAgLyogRFdfU1RSSU5HIGlzIGFscmVh ZHkgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlIG9ic3RhY2ssIHBvaW50Ci0gCSBkaXJlY3RseSB0 byBpdC4gICovCi0gICAgICAgKmJ5dGVzID0gKGdkYl9ieXRlICopIERXX1NUUklORyAoYXR0cik7 Ci1AQCAtMTUxODcsNyArMTU2MzEsMTUgQEAgbG9va3VwX2RpZV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKLSAKLSAgIC8qIEZpcnN0IHNlZSBpZiB3 ZSBoYXZlIGl0IGNhY2hlZC4gICovCi0gCi0tICBpZiAoaXNfcmVmX2F0dHIgKGF0dHIpKQotKyAg aWYgKGF0dHItPmZvcm0gPT0gRFdfRk9STV9HTlVfcmVmX2FsdCkKLSsgICAgewotKyAgICAgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKLSsgICAgICBzZWN0X29mZnNldCBvZmZz ZXQgPSBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0IChhdHRyKTsKLSsKLSsgICAgICBwZXJfY3Ug PSBkd2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCAxLCBjdS0+b2JqZmls ZSk7Ci0rICAgICAgdGhpc190eXBlID0gZ2V0X2RpZV90eXBlX2F0X29mZnNldCAob2Zmc2V0LCBw ZXJfY3UpOwotKyAgICB9Ci0rICBlbHNlIGlmIChpc19yZWZfYXR0ciAoYXR0cikpCi0gICAgIHsK LSAgICAgICBzZWN0X29mZnNldCBvZmZzZXQgPSBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0IChh dHRyKTsKLSAKLUBAIC0xNTM1Miw2ICsxNTgwNCw5IEBAIHJlYWRfdHlwZV9kaWVfMSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTE2NTY1LDYgKzE2Nzkx LDkgQEAgcmVhZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTMyOTgsMjEzICsxMzM0LDcg QEAgaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKICAgIHJldHVybiB0aGlzX3R5cGU7CiAg fQogIAotQEAgLTE1OTYwLDYgKzE2NDE1LDEwIEBAIGR1bXBfZGllX3NoYWxsb3cgKHN0cnVjdCB1 aV9maWxlICpmLCBpbnQgaW5kZW50LCBzdHJ1Y3QgZGllX2luZm8gKmRpZSkKLSAJICBmcHJpbnRm X3VuZmlsdGVyZWQgKGYsICJyZWYgYWRkcmVzczogIik7Ci0gCSAgZnB1dHNfZmlsdGVyZWQgKGhl eF9zdHJpbmcgKERXX1VOU05EICgmZGllLT5hdHRyc1tpXSkpLCBmKTsKLSAJICBicmVhazsKLSsJ Y2FzZSBEV19GT1JNX0dOVV9yZWZfYWx0OgotKwkgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgImFs dCByZWYgYWRkcmVzczogIik7Ci0rCSAgZnB1dHNfZmlsdGVyZWQgKGhleF9zdHJpbmcgKERXX1VO U05EICgmZGllLT5hdHRyc1tpXSkpLCBmKTsKLSsJICBicmVhazsKLSAJY2FzZSBEV19GT1JNX3Jl ZjE6Ci0gCWNhc2UgRFdfRk9STV9yZWYyOgotIAljYXNlIERXX0ZPUk1fcmVmNDoKLUBAIC0xNTk5 MSw2ICsxNjQ1MCw3IEBAIGR1bXBfZGllX3NoYWxsb3cgKHN0cnVjdCB1aV9maWxlICpmLCBpbnQg aW5kZW50LCBzdHJ1Y3QgZGllX2luZm8gKmRpZSkKLSAJY2FzZSBEV19GT1JNX3N0cmluZzoKLSAJ Y2FzZSBEV19GT1JNX3N0cnA6Ci0gCWNhc2UgRFdfRk9STV9HTlVfc3RyX2luZGV4OgotKwljYXNl IERXX0ZPUk1fR05VX3N0cnBfYWx0OgotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgInN0cmlu ZzogXCIlc1wiICglcyBjYW5vbmljYWxpemVkKSIsCi0gCQkgICBEV19TVFJJTkcgKCZkaWUtPmF0 dHJzW2ldKQotIAkJICAgPyBEV19TVFJJTkcgKCZkaWUtPmF0dHJzW2ldKSA6ICIiLAotQEAgLTE2 MDk0LDYgKzE2NTU0LDcgQEAgaXNfcmVmX2F0dHIgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCi0g ICAgIGNhc2UgRFdfRk9STV9yZWY0OgotICAgICBjYXNlIERXX0ZPUk1fcmVmODoKLSAgICAgY2Fz ZSBEV19GT1JNX3JlZl91ZGF0YToKLSsgICAgY2FzZSBEV19GT1JNX0dOVV9yZWZfYWx0OgotICAg ICAgIHJldHVybiAxOwotICAgICBkZWZhdWx0OgotICAgICAgIHJldHVybiAwOwotQEAgLTE2MTcx LDcgKzE2NjMyLDggQEAgZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChzdHJ1Y3QgZGllX2luZm8gKnNy Y19kaWUsIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCi0gICAgUmV0dXJucyBOVUxMIGlmIE9GRlNF VCBpcyBpbnZhbGlkLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IGRpZV9pbmZvICoKLS1mb2xsb3df ZGllX29mZnNldCAoc2VjdF9vZmZzZXQgb2Zmc2V0LCBzdHJ1Y3QgZHdhcmYyX2N1ICoqcmVmX2N1 KQotK2ZvbGxvd19kaWVfb2Zmc2V0IChzZWN0X29mZnNldCBvZmZzZXQsIGludCBvZmZzZXRfaW5f ZHd6LAotKwkJICAgc3RydWN0IGR3YXJmMl9jdSAqKnJlZl9jdSkKLSB7Ci0gICBzdHJ1Y3QgZGll X2luZm8gdGVtcF9kaWU7Ci0gICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UsICpjdSA9ICpy ZWZfY3U7Ci1AQCAtMTYxODgsMTEgKzE2NjUwLDEzIEBAIGZvbGxvd19kaWVfb2Zmc2V0IChzZWN0 X29mZnNldCBvZmZzZXQsIHN0cnVjdCBkd2FyZjJfY3UgKipyZWZfY3UpCi0gICAgICAgaWYgKCEg b2Zmc2V0X2luX2N1X3AgKCZjdS0+aGVhZGVyLCBvZmZzZXQpKQotIAlyZXR1cm4gTlVMTDsKLSAg ICAgfQotLSAgZWxzZSBpZiAoISBvZmZzZXRfaW5fY3VfcCAoJmN1LT5oZWFkZXIsIG9mZnNldCkp Ci0rICBlbHNlIGlmIChvZmZzZXRfaW5fZHd6ICE9IGN1LT5wZXJfY3UtPmlzX2R3egotKwkgICB8 fCAhIG9mZnNldF9pbl9jdV9wICgmY3UtPmhlYWRlciwgb2Zmc2V0KSkKLSAgICAgewotICAgICAg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdTsKLSAKLS0gICAgICBwZXJfY3UgPSBk d2FyZjJfZmluZF9jb250YWluaW5nX2NvbXBfdW5pdCAob2Zmc2V0LCBjdS0+b2JqZmlsZSk7Ci0r ICAgICAgcGVyX2N1ID0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQgKG9mZnNldCwg b2Zmc2V0X2luX2R3eiwKLSsJCQkJCQkgY3UtPm9iamZpbGUpOwotIAotICAgICAgIC8qIElmIG5l Y2Vzc2FyeSwgYWRkIGl0IHRvIHRoZSBxdWV1ZSBhbmQgbG9hZCBpdHMgRElFcy4gICovCi0gICAg ICAgaWYgKG1heWJlX3F1ZXVlX2NvbXBfdW5pdCAoY3UsIHBlcl9jdSwgY3UtPmxhbmd1YWdlKSkK LUBAIC0xNjIyNCw3ICsxNjY4OCwxMCBAQCBmb2xsb3dfZGllX3JlZiAoc3RydWN0IGRpZV9pbmZv ICpzcmNfZGllLCBzdHJ1Y3QgYXR0cmlidXRlICphdHRyLAotICAgc3RydWN0IGR3YXJmMl9jdSAq Y3UgPSAqcmVmX2N1OwotICAgc3RydWN0IGRpZV9pbmZvICpkaWU7Ci0gCi0tICBkaWUgPSBmb2xs b3dfZGllX29mZnNldCAob2Zmc2V0LCByZWZfY3UpOwotKyAgZGllID0gZm9sbG93X2RpZV9vZmZz ZXQgKG9mZnNldCwKLSsJCQkgICAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX0dOVV9yZWZfYWx0Ci0r CQkJICAgIHx8IGN1LT5wZXJfY3UtPmlzX2R3eiksCi0rCQkJICAgcmVmX2N1KTsKLSAgIGlmICgh ZGllKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENhbm5vdCBmaW5kIERJRSBhdCAweCV4 IHJlZmVyZW5jZWQgZnJvbSBESUUgIgotIAkgICAiYXQgMHgleCBbaW4gbW9kdWxlICVzXSIpLAot QEAgLTE2MjU1LDcgKzE2NzIyLDcgQEAgZHdhcmYyX2ZldGNoX2RpZV9sb2NhdGlvbl9ibG9jayAo Y3Vfb2Zmc2V0IG9mZnNldF9pbl9jdSwKLSAgICAgbG9hZF9jdSAocGVyX2N1KTsKLSAgIGN1ID0g cGVyX2N1LT5jdTsKLSAKLS0gIGRpZSA9IGZvbGxvd19kaWVfb2Zmc2V0IChvZmZzZXQsICZjdSk7 Ci0rICBkaWUgPSBmb2xsb3dfZGllX29mZnNldCAob2Zmc2V0LCBwZXJfY3UtPmlzX2R3eiwgJmN1 KTsKLSAgIGlmICghZGllKQotICAgICBlcnJvciAoXygiRHdhcmYgRXJyb3I6IENhbm5vdCBmaW5k IERJRSBhdCAweCV4IHJlZmVyZW5jZWQgaW4gbW9kdWxlICVzIiksCi0gCSAgIG9mZnNldC5zZWN0 X29mZiwgcGVyX2N1LT5vYmpmaWxlLT5uYW1lKTsKLUBAIC0xNzA0OSw2ICsxNzUxNiw3IEBAIHNr aXBfZm9ybV9ieXRlcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqYnl0ZXMsIGdkYl9ieXRlICpidWZm ZXJfZW5kLAotIAotICAgICBjYXNlIERXX0ZPUk1fc2VjX29mZnNldDoKLSAgICAgY2FzZSBEV19G T1JNX3N0cnA6Ci0rICAgIGNhc2UgRFdfRk9STV9HTlVfc3RycF9hbHQ6Ci0gICAgICAgYnl0ZXMg Kz0gb2Zmc2V0X3NpemU7Ci0gICAgICAgYnJlYWs7Ci0gCi1AQCAtMTcyMDQsNyArMTc2NzIsNyBA QCBkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKm1hY19wdHIs IGdkYl9ieXRlICptYWNfZW5kLAotIAkJCSAgc3RydWN0IG1hY3JvX3NvdXJjZV9maWxlICpjdXJy ZW50X2ZpbGUsCi0gCQkJICBzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjaGFyICpjb21wX2RpciwK LSAJCQkgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAotLQkJCSAgaW50IHNl Y3Rpb25faXNfZ251LAotKwkJCSAgaW50IHNlY3Rpb25faXNfZ251LCBpbnQgc2VjdGlvbl9pc19k d3osCi0gCQkJICB1bnNpZ25lZCBpbnQgb2Zmc2V0X3NpemUsCi0gCQkJICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKLSAJCQkgIGh0YWJfdCBpbmNsdWRlX2hhc2gpCi1AQCAtMTcyNTUsNiArMTc3 MjMsOCBAQCBkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKm1h Y19wdHIsIGdkYl9ieXRlICptYWNfZW5kLAotICAgICAgICAgY2FzZSBEV19NQUNST19HTlVfdW5k ZWY6Ci0gCWNhc2UgRFdfTUFDUk9fR05VX2RlZmluZV9pbmRpcmVjdDoKLSAJY2FzZSBEV19NQUNS T19HTlVfdW5kZWZfaW5kaXJlY3Q6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX2RlZmluZV9pbmRpcmVj dF9hbHQ6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0X2FsdDoKLSAgICAgICAg ICAgewotICAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotICAgICAgICAgICAg IGludCBsaW5lOwotQEAgLTE3Mjc3LDExICsxNzc0NywyMSBAQCBkd2FyZl9kZWNvZGVfbWFjcm9f Ynl0ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKm1hY19wdHIsIGdkYl9ieXRlICptYWNfZW5kLAot IAkJc3RyX29mZnNldCA9IHJlYWRfb2Zmc2V0XzEgKGFiZmQsIG1hY19wdHIsIG9mZnNldF9zaXpl KTsKLSAJCW1hY19wdHIgKz0gb2Zmc2V0X3NpemU7Ci0gCi0tCQlib2R5ID0gcmVhZF9pbmRpcmVj dF9zdHJpbmdfYXRfb2Zmc2V0IChhYmZkLCBzdHJfb2Zmc2V0KTsKLSsJCWlmIChtYWNpbmZvX3R5 cGUgPT0gRFdfTUFDUk9fR05VX2RlZmluZV9pbmRpcmVjdF9hbHQKLSsJCSAgICB8fCBtYWNpbmZv X3R5cGUgPT0gRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0X2FsdAotKwkJICAgIHx8IHNlY3Rp b25faXNfZHd6KQotKwkJICB7Ci0rCQkgICAgc3RydWN0IGR3el9maWxlICpkd3ogPSBkd2FyZjJf Z2V0X2R3el9maWxlICgpOwotKwotKwkJICAgIGJvZHkgPSByZWFkX2luZGlyZWN0X3N0cmluZ19m cm9tX2R3eiAoZHd6LCBzdHJfb2Zmc2V0KTsKLSsJCSAgfQotKwkJZWxzZQotKwkJICBib2R5ID0g cmVhZF9pbmRpcmVjdF9zdHJpbmdfYXRfb2Zmc2V0IChhYmZkLCBzdHJfb2Zmc2V0KTsKLSAJICAg ICAgfQotIAotIAkgICAgaXNfZGVmaW5lID0gKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVf ZGVmaW5lCi0tCQkJIHx8IG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfZGVmaW5lX2luZGly ZWN0KTsKLSsJCQkgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJl Y3QKLSsJCQkgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV9kZWZpbmVfaW5kaXJlY3Rf YWx0KTsKLSAgICAgICAgICAgICBpZiAoISBjdXJyZW50X2ZpbGUpCi0gCSAgICAgIHsKLSAJCS8q IERXQVJGIHZpb2xhdGlvbiBhcyBubyBtYWluIHNvdXJjZSBpcyBwcmVzZW50LiAgKi8KLUBAIC0x NzMwNSw3ICsxNzc4NSw4IEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBn ZGJfYnl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCi0gCSAgICBlbHNlCi0gCSAgICAg IHsKLSAJCWdkYl9hc3NlcnQgKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWYKLS0J CQkgICAgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdCk7Ci0r CQkJICAgIHx8IG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3QKLSsJ CQkgICAgfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdF9hbHQp OwotIAkJbWFjcm9fdW5kZWYgKGN1cnJlbnRfZmlsZSwgbGluZSwgYm9keSk7Ci0gCSAgICAgIH0K LSAgICAgICAgICAgfQotQEAgLTE3MzgwLDYgKzE3ODYxLDcgQEAgZHdhcmZfZGVjb2RlX21hY3Jv X2J5dGVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICptYWNfcHRyLCBnZGJfYnl0ZSAqbWFjX2VuZCwK LSAgICAgICAgICAgYnJlYWs7Ci0gCi0gCWNhc2UgRFdfTUFDUk9fR05VX3RyYW5zcGFyZW50X2lu Y2x1ZGU6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3RyYW5zcGFyZW50X2luY2x1ZGVfYWx0OgotIAkg IHsKLSAJICAgIExPTkdFU1Qgb2Zmc2V0OwotIAkgICAgdm9pZCAqKnNsb3Q7Ci1AQCAtMTczOTgs MTMgKzE3ODgwLDMyIEBAIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYmZkICphYmZkLCBnZGJf Ynl0ZSAqbWFjX3B0ciwgZ2RiX2J5dGUgKm1hY19lbmQsCi0gCSAgICAgIH0KLSAJICAgIGVsc2UK LSAJICAgICAgewotKwkJYmZkICppbmNsdWRlX2JmZCA9IGFiZmQ7Ci0rCQlzdHJ1Y3QgZHdhcmYy X3NlY3Rpb25faW5mbyAqaW5jbHVkZV9zZWN0aW9uID0gc2VjdGlvbjsKLSsJCXN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvIGFsdF9zZWN0aW9uOwotKwkJZ2RiX2J5dGUgKmluY2x1ZGVfbWFjX2Vu ZCA9IG1hY19lbmQ7Ci0rCQlpbnQgaXNfZHd6ID0gc2VjdGlvbl9pc19kd3o7Ci0rCi0gCQkqc2xv dCA9IG1hY19wdHI7Ci0gCi0tCQlkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGFiZmQsCi0tCQkJ CQkgIHNlY3Rpb24tPmJ1ZmZlciArIG9mZnNldCwKLS0JCQkJCSAgbWFjX2VuZCwgY3VycmVudF9m aWxlLAotKwkJaWYgKG1hY2luZm9fdHlwZSA9PSBEV19NQUNST19HTlVfdHJhbnNwYXJlbnRfaW5j bHVkZV9hbHQpCi0rCQkgIHsKLSsJCSAgICBzdHJ1Y3QgZHd6X2ZpbGUgKmR3eiA9IGR3YXJmMl9n ZXRfZHd6X2ZpbGUgKCk7Ci0rCi0rCQkgICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5vYmpmaWxlLAotKwkJCQkJICZkd3otPm1hY3JvKTsKLSsKLSsJCSAgICBpbmNs dWRlX2JmZCA9IGR3ei0+bWFjcm8uYXNlY3Rpb24tPm93bmVyOwotKwkJICAgIGluY2x1ZGVfc2Vj dGlvbiA9ICZkd3otPm1hY3JvOwotKwkJICAgIGluY2x1ZGVfbWFjX2VuZCA9IGR3ei0+bWFjcm8u YnVmZmVyICsgZHd6LT5tYWNyby5zaXplOwotKwkJICAgIGlzX2R3eiA9IDE7Ci0rCQkgIH0KLSsK LSsJCWR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoaW5jbHVkZV9iZmQsCi0rCQkJCQkgIGluY2x1 ZGVfc2VjdGlvbi0+YnVmZmVyICsgb2Zmc2V0LAotKwkJCQkJICBpbmNsdWRlX21hY19lbmQsIGN1 cnJlbnRfZmlsZSwKLSAJCQkJCSAgbGgsIGNvbXBfZGlyLAotLQkJCQkJICBzZWN0aW9uLCBzZWN0 aW9uX2lzX2dudSwKLSsJCQkJCSAgc2VjdGlvbiwgc2VjdGlvbl9pc19nbnUsIGlzX2R3eiwKLSAJ CQkJCSAgb2Zmc2V0X3NpemUsIG9iamZpbGUsIGluY2x1ZGVfaGFzaCk7Ci0gCi0gCQlodGFiX3Jl bW92ZV9lbHQgKGluY2x1ZGVfaGFzaCwgbWFjX3B0cik7Ci1AQCAtMTc1NzEsNiArMTgwNzIsOCBA QCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgdW5zaWduZWQgaW50 IG9mZnNldCwKLSAKLSAJY2FzZSBEV19NQUNST19HTlVfZGVmaW5lX2luZGlyZWN0OgotIAljYXNl IERXX01BQ1JPX0dOVV91bmRlZl9pbmRpcmVjdDoKLSsJY2FzZSBEV19NQUNST19HTlVfZGVmaW5l X2luZGlyZWN0X2FsdDoKLSsJY2FzZSBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3RfYWx0Ogot IAkgIHsKLSAJICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotIAotQEAgLTE3NTgxLDYgKzE4 MDg0LDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGR3YXJmMl9jdSAqY3UsIHVuc2ln bmVkIGludCBvZmZzZXQsCi0gCSAgYnJlYWs7Ci0gCi0gCWNhc2UgRFdfTUFDUk9fR05VX3RyYW5z cGFyZW50X2luY2x1ZGU6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3RyYW5zcGFyZW50X2luY2x1ZGVf YWx0OgotIAkgIC8qIE5vdGUgdGhhdCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBhIHRyYW5zcGFy ZW50IGluY2x1ZGUKLSAJICAgICBjaGFpbiBjYW5ub3QgY2FsbCBEV19NQUNST19HTlVfc3RhcnRf ZmlsZS4gIFNvLCB3ZSBjYW4ganVzdAotIAkgICAgIHNraXAgdGhpcyBvcGNvZGUuICAqLwotQEAg LTE3NjIzLDcgKzE4MTI3LDggQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGR3YXJmMl9j dSAqY3UsIHVuc2lnbmVkIGludCBvZmZzZXQsCi0gICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGlu Y2x1ZGVfaGFzaCwgbWFjX3B0ciwgSU5TRVJUKTsKLSAgICpzbG90ID0gbWFjX3B0cjsKLSAgIGR3 YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYWJmZCwgbWFjX3B0ciwgbWFjX2VuZCwKLS0JCQkgICAg Y3VycmVudF9maWxlLCBsaCwgY29tcF9kaXIsIHNlY3Rpb24sIHNlY3Rpb25faXNfZ251LAotKwkJ CSAgICBjdXJyZW50X2ZpbGUsIGxoLCBjb21wX2Rpciwgc2VjdGlvbiwKLSsJCQkgICAgc2VjdGlv bl9pc19nbnUsIDAsCi0gCQkJICAgIG9mZnNldF9zaXplLCBvYmpmaWxlLCBpbmNsdWRlX2hhc2gp OwotICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLUBAIC0xNzcyMSw2MiArMTgyMjYsMTAw IEBAIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTg5 OTksNjIgKzE5MjI4LDEwMCBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJf Y3UgKmN1LAogICAgYmF0b24tPmZyb21fZHdvID0gY3UtPmR3b191bml0ICE9IE5VTEw7CiAgfQog IApAQCAtMzU0NCwxNSArMTM3NCwxNSBAQCBpbmRleCBkZWVlNWEyLi5iMmYwNTJiIDEwMDY0NAog ICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGU7 CiAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbiA9IGN1X2RlYnVnX2xvY19z ZWN0aW9uIChjdSk7CiArICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwotKwor IAorLSAgaWYgKGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKICsgIC8qIERXX0FU X2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2VkIERJRSBtYXkgYmUgbWlzc2luZyBpZiB0aGUgcmVm ZXJlbmNlZAogKyAgICAgdmFyaWFibGUgaGFzIGJlZW4gb3B0aW1pemVkIG91dC4gICovCiArICBp ZiAoIWF0dHIpCiArICAgIHJldHVybiBOVUxMOwogKwogKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAo ZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0aW9uKTsKLSAKLS0gIGlmIChhdHRyX2Zv cm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCisrCiArICBpZiAoIShhdHRyX2Zvcm1faXNfc2Vj dGlvbl9vZmZzZXQgKGF0dHIpCiAgICAgICAgLyogLmRlYnVnX2xvY3ssLmR3b30gbWF5IG5vdCBl eGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUKICAJIHRoZSBzZWN0aW9u LiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGluIHRoZQpAQCAtMzY0Myw1 MCArMTQ3Myw5IEBAIGluZGV4IGRlZWU1YTIuLmIyZjA1MmIgMTAwNjQ0CiAgICAgIH0KICB9CiAg Ci1AQCAtMTc4NzgsMjggKzE4NDIxLDM1IEBAIGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSAKLSBzdGF0aWMgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqCi0gZHdhcmYyX2ZpbmRfY29udGFpbmluZ19jb21wX3VuaXQgKHNlY3Rf b2Zmc2V0IG9mZnNldCwKLSsJCQkJICB1bnNpZ25lZCBpbnQgb2Zmc2V0X2luX2R3eiwKLSAJCQkJ ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICp0aGlzX2N1OwotICAgaW50IGxvdywgaGlnaDsKLSsgIGNvbnN0IHNlY3Rfb2Zmc2V0ICpj dV9vZmY7Ci0gCi0gICBsb3cgPSAwOwotICAgaGlnaCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9j b21wX3VuaXRzIC0gMTsKLSAgIHdoaWxlIChoaWdoID4gbG93KQotICAgICB7Ci0rICAgICAgc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqbWlkX2N1OwotICAgICAgIGludCBtaWQgPSBsb3cgKyAo aGlnaCAtIGxvdykgLyAyOwotIAotLSAgICAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9j b21wX3VuaXRzW21pZF0tPm9mZnNldC5zZWN0X29mZgotLQkgID49IG9mZnNldC5zZWN0X29mZikK LSsgICAgICBtaWRfY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW21pZF07 Ci0rICAgICAgY3Vfb2ZmID0gJm1pZF9jdS0+b2Zmc2V0OwotKyAgICAgIGlmIChtaWRfY3UtPmlz X2R3eiA+IG9mZnNldF9pbl9kd3oKLSsJICB8fCAobWlkX2N1LT5pc19kd3ogPT0gb2Zmc2V0X2lu X2R3egotKwkgICAgICAmJiBjdV9vZmYtPnNlY3Rfb2ZmID49IG9mZnNldC5zZWN0X29mZikpCi0g CWhpZ2ggPSBtaWQ7Ci0gICAgICAgZWxzZQotIAlsb3cgPSBtaWQgKyAxOwotICAgICB9Ci0gICBn ZGJfYXNzZXJ0IChsb3cgPT0gaGlnaCk7Ci0tICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxf Y29tcF91bml0c1tsb3ddLT5vZmZzZXQuc2VjdF9vZmYKLS0gICAgICA+IG9mZnNldC5zZWN0X29m ZikKLSsgIHRoaXNfY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2xvd107 Ci0rICBjdV9vZmYgPSAmdGhpc19jdS0+b2Zmc2V0OwotKyAgaWYgKHRoaXNfY3UtPmlzX2R3eiAh PSBvZmZzZXRfaW5fZHd6IHx8IGN1X29mZi0+c2VjdF9vZmYgPiBvZmZzZXQuc2VjdF9vZmYpCi0g ICAgIHsKLS0gICAgICBpZiAobG93ID09IDApCi0rICAgICAgaWYgKGxvdyA9PSAwIHx8IHRoaXNf Y3UtPmlzX2R3eiAhPSBvZmZzZXRfaW5fZHd6KQotIAllcnJvciAoXygiRHdhcmYgRXJyb3I6IGNv dWxkIG5vdCBmaW5kIHBhcnRpYWwgRElFIGNvbnRhaW5pbmcgIgotIAkgICAgICAgIm9mZnNldCAw eCVseCBbaW4gbW9kdWxlICVzXSIpLAotIAkgICAgICAgKGxvbmcpIG9mZnNldC5zZWN0X29mZiwg YmZkX2dldF9maWxlbmFtZSAob2JqZmlsZS0+b2JmZCkpOwotQEAgLTE4MTQwLDYgKzE4NjkwLDI1 IEBAIHBlcl9jdV9vZmZzZXRfYW5kX3R5cGVfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25z dCB2b2lkICppdGVtX3JocykKLSAJICAmJiBvZnNfbGhzLT5vZmZzZXQuc2VjdF9vZmYgPT0gb2Zz X3Jocy0+b2Zmc2V0LnNlY3Rfb2ZmKTsKLSB9CitAQCAtMTk0MjUsNiArMTk2OTIsMjUgQEAgcGVy X2N1X29mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQg Kml0ZW1fcmhzKQorIAkgICYmIG9mc19saHMtPm9mZnNldC5zZWN0X29mZiA9PSBvZnNfcmhzLT5v ZmZzZXQuc2VjdF9vZmYpOworIH0KICAKICsvKiBGaWxsIGluIGdlbmVyaWMgYXR0cmlidXRlcyBh cHBsaWNhYmxlIGZvciB0eXBlIERJRXMuICAqLwogKwpAQCAtMzcxMCw3ICsxNDk5LDcgQEAgaW5k ZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQKICAvKiBTZXQgdGhlIHR5cGUgYXNzb2NpYXRlZCB3 aXRoIERJRSB0byBUWVBFLiAgU2F2ZSBpdCBpbiBDVSdzIGhhc2gKICAgICB0YWJsZSBpZiBuZWNl c3NhcnkuICBGb3IgY29udmVuaWVuY2UsIHJldHVybiBUWVBFLgogIAotQEAgLTE4MTY0LDYgKzE4 NzMzLDggQEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTE5NDQ5LDYgKzE5NzM1LDggQEAgc2V0 X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vfb2Zmc2V0X2FuZF90eXBl ICoqc2xvdCwgb2ZzOwogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsK ICAKQEAgLTM3MTksMTE3ICsxNTA4LDggQEAgaW5kZXggZGVlZTVhMi4uYjJmMDUyYiAxMDA2NDQK ICAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNpZmljIGRh dGEgaXMgYWx3YXlzCiAgICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0KS4gIFRo ZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQogICAgICAgd2Ugc2hvdWxkIG5vdCBiZSBkb2luZyBz bywgYmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVhIGlzCi1AQCAtMTgzNDEsNTMgKzE4OTEy LDEzIEBAIHNob3dfZHdhcmYyX2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotICAgY21k X3Nob3dfbGlzdCAoc2hvd19kd2FyZjJfY21kbGlzdCwgZnJvbV90dHksICIiKTsKLSB9Ci0gCi0t LyogSWYgc2VjdGlvbiBkZXNjcmliZWQgYnkgSU5GTyB3YXMgbW1hcHBlZCwgbXVubWFwIGl0IG5v dy4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1tdW5tYXBfc2VjdGlvbl9idWZmZXIgKHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQotLXsKLS0gIGlmIChpbmZvLT5tYXBfYWRkciAhPSBO VUxMKQotLSAgICB7Ci0tI2lmZGVmIEhBVkVfTU1BUAotLSAgICAgIGludCByZXM7Ci0tCi0tICAg ICAgcmVzID0gbXVubWFwIChpbmZvLT5tYXBfYWRkciwgaW5mby0+bWFwX2xlbik7Ci0tICAgICAg Z2RiX2Fzc2VydCAocmVzID09IDApOwotLSNlbHNlCi0tICAgICAgLyogV2l0aG91dCBIQVZFX01N QVAsIHdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHRvIGJlZ2luIHdpdGguICAqLwotLSAgICAgIGdk Yl9hc3NlcnRfbm90X3JlYWNoZWQgKCJubyBtbWFwIHN1cHBvcnQiKTsKLS0jZW5kaWYKLS0gICAg fQotLX0KLS0KLS0vKiBtdW5tYXAgZGVidWcgc2VjdGlvbnMgZm9yIE9CSkZJTEUsIGlmIG5lY2Vz c2FyeS4gICovCi0rLyogRnJlZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxFLCBpZiBuZWNl c3NhcnkuICAqLwotIAotIHN0YXRpYyB2b2lkCi0gZHdhcmYyX3Blcl9vYmpmaWxlX2ZyZWUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkKQotIHsKLSAgIHN0cnVjdCBkd2FyZjJfcGVy X29iamZpbGUgKmRhdGEgPSBkOwotICAgaW50IGl4OwotLSAgc3RydWN0IGR3YXJmMl9zZWN0aW9u X2luZm8gKnNlY3Rpb247Ci0tCi0tICAvKiBUaGlzIGlzIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhl IG9yZGVyIHRoZXkncmUgZGVmaW5lZCBpbiB0byBtYWtlIGl0IGVhc2llcgotLSAgICAgdG8ga2Vl cCBpbiBzeW5jLiAgKi8KLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmluZm8pOwot LSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+YWJicmV2KTsKLS0gIG11bm1hcF9zZWN0 aW9uX2J1ZmZlciAoJmRhdGEtPmxpbmUpOwotLSAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0 YS0+bG9jKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPm1hY2luZm8pOwotLSAg bXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bWFjcm8pOwotLSAgbXVubWFwX3NlY3Rpb25f YnVmZmVyICgmZGF0YS0+c3RyKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPnJh bmdlcyk7Ci0tICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5hZGRyKTsKLS0gIG11bm1h cF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZl ciAoJmRhdGEtPmVoX2ZyYW1lKTsKLS0gIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmdk Yl9pbmRleCk7Ci0tCi0tICBmb3IgKGl4ID0gMDsKLS0gICAgICAgVkVDX2l0ZXJhdGUgKGR3YXJm Ml9zZWN0aW9uX2luZm9fZGVmLCBkYXRhLT50eXBlcywgaXgsIHNlY3Rpb24pOwotLSAgICAgICAr K2l4KQotLSAgICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKHNlY3Rpb24pOwotIAotICAgZm9yIChp eCA9IDA7IGl4IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraXgpCi0gICAg IFZFQ19mcmVlIChkd2FyZjJfcGVyX2N1X3B0ciwKLUBAIC0xODM5Nyw2ICsxODkyOCw5IEBAIGR3 YXJmMl9wZXJfb2JqZmlsZV9mcmVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZCkK LSAKLSAgIGlmIChkYXRhLT5kd29fZmlsZXMpCi0gICAgIGZyZWVfZHdvX2ZpbGVzIChkYXRhLT5k d29fZmlsZXMsIG9iamZpbGUpOwotKwotKyAgaWYgKGRhdGEtPmR3el9maWxlICYmIGRhdGEtPmR3 el9maWxlLT5kd3pfYmZkKQotKyAgICBnZGJfYmZkX3VucmVmIChkYXRhLT5kd3pfZmlsZS0+ZHd6 X2JmZCk7Ci0gfQotIAotIAwKLWRpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJl YWQuYwotaW5kZXggMWVkZmIyNy4uMGI1NGI4YSAxMDA2NDQKLS0tLSBhL2dkYi9lbGZyZWFkLmMK LSsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC00NCw2ICs0NCw3IEBACi0gI2luY2x1ZGUgImdkYnRo cmVhZC5oIgotICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNpbmNsdWRlICJiY2FjaGUuaCIKLSsj aW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQg KHZvaWQpOwotIAotQEAgLTExMDgsNyArMTEwOSw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3Qg Y2hhciAqZmlsZW5hbWUsIHN0cnVjdCBidWlsZF9pZCAqY2hlY2spCi0gICBpbnQgcmV0dmFsID0g MDsKLSAKLSAgIC8qIFdlIGV4cGVjdCB0byBiZSBzaWxlbnQgb24gdGhlIG5vbi1leGlzdGluZyBm aWxlcy4gICovCi0tICBhYmZkID0gYmZkX29wZW5fbWF5YmVfcmVtb3RlIChmaWxlbmFtZSk7Ci0r ICBhYmZkID0gZ2RiX2JmZF9vcGVuX21heWJlX3JlbW90ZSAoZmlsZW5hbWUpOwotICAgaWYgKGFi ZmQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci0gCi1AQCAtMTEyMyw3ICsxMTI0LDcgQEAgYnVp bGRfaWRfdmVyaWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IGJ1aWxkX2lkICpjaGVj aykKLSAgIGVsc2UKLSAgICAgcmV0dmFsID0gMTsKLSAKLS0gIGdkYl9iZmRfY2xvc2Vfb3Jfd2Fy biAoYWJmZCk7Ci0rICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAKLSAgIHhmcmVlIChmb3VuZCk7 Ci0gCi1AQCAtMTQ0NCwxMCArMTQ0NSwxMiBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCi0gICAgICAgaWYgKGRlYnVnZmls ZSkKLSAJewotKwkgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJl ZSwgZGVidWdmaWxlKTsKLSAJICBiZmQgKmFiZmQgPSBzeW1maWxlX2JmZF9vcGVuIChkZWJ1Z2Zp bGUpOwotIAotKwkgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFiZmQpOwotIAkgIHN5bWJvbF9m aWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwgc3ltZmlsZV9mbGFncywgb2JqZmlsZSk7Ci0tCSAgeGZy ZWUgKGRlYnVnZmlsZSk7Ci0rCSAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIAl9Ci0gICAgIH0K LSAKIGRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYwotaW5kZXggN2QzYThiOS4u ZjY5ZGZmMCAxMDA2NDQKK2luZGV4IGM5NjMwZGYuLmI3OTcxODkgMTAwNjQ0CiAtLS0gYS9nZGIv ZXZhbC5jCiArKysgYi9nZGIvZXZhbC5jCiBAQCAtNDEsNiArNDEsNyBAQApAQCAtMzg0MCw3ICsx NTIwLDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAKICAjaW5jbHVkZSAiZ2Ri X2Fzc2VydC5oIgogIAotQEAgLTUwMCwyNyArNTAxLDIxNyBAQCBpbml0X2FycmF5X2VsZW1lbnQg KHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKK0BAIC0zOTMsMjcg KzM5NCwyMTcgQEAgaW5pdF9hcnJheV9lbGVtZW50IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1 Y3QgdmFsdWUgKmVsZW1lbnQsCiAgfQogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNDA3 NCw3ICsxNzU0LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICB9CiAgCiAgCi1A QCAtODE4LDYgKzEwMDksNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKK0BAIC03MTAsNiArOTAxLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICBpbnQgc2F2ZV9wb3MxOwogICAgc3Ry dWN0IHN5bWJvbCAqZnVuY3Rpb24gPSBOVUxMOwogICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IE5V TEw7CkBAIC00MDgyLDcgKzE3NjIsNyBAQCBpbmRleCA3ZDNhOGI5Li5mNjlkZmYwIDEwMDY0NAog IAogICAgcGMgPSAoKnBvcykrKzsKICAgIG9wID0gZXhwLT5lbHRzW3BjXS5vcGNvZGU7Ci1AQCAt MTg5Miw2ICsyMDg0LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCitAQCAtMTc3OSw2ICsxOTcxLDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCiAgICAgICAgLyogRmlyc3QgZGV0ZXJt aW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcgd2l0aC4gICovCiAgICAgICAgYXJnMSA9 IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKTsKQEAgLTQwOTEs NyArMTc3MSw3IEBAIGluZGV4IDdkM2E4YjkuLmY2OWRmZjAgMTAwNjQ0CiAgICAgICAgdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKICAgICAgICBjb2RlID0gVFlQRV9D T0RFICh0eXBlKTsKICAKLUBAIC0xOTEyLDIzICsyMTA2LDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTE3OTksMjMgKzE5OTMsMTMg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAg CSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogIAkgICAgfQogIAl9IApAQCAtNDExNyw3 ICsxNzk3LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAKICAJY2FzZSBUWVBF X0NPREVfUFRSOgogIAljYXNlIFRZUEVfQ09ERV9GVU5DOgotQEAgLTIzNjEsNDkgKzI1NDUsNiBA QCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKK0BA IC0yMjQyLDQ5ICsyNDI2LDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlw ZSAqZXhwZWN0X3R5cGUsCiAgCX0KICAgICAgICByZXR1cm4gKGFyZzEpOwogIApAQCAtNDE1Nyw4 ICsxODM3LDggQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKIC0JICAgIHN0cnVjdCB0 eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKIC0J ICAgIExPTkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwogLQotLQkgICAgbG93 ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpOwotLQkgICAgYXJyYXkgPSB2YWx1 ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwgbG93ZXIpOworLQkgICAgYXJyYXkg PSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKKy0JCQkJCSAgICAgIGY3 N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOwogLQkgIH0KIC0KIC0JcmV0dXJuIGFycmF5 OwpAQCAtNDE2Nyw3ICsxODQ3LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAg ICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKICAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhw IChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwogICAgICAgIGlmIChub3NpZGUgPT0gRVZB TF9TS0lQKQotQEAgLTI2MzUsMTUgKzI3NzYsMjMgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk IChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjUxNiwxNSArMjY1NywyMyBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgICAgICBp ZiAoZXhwZWN0X3R5cGUgJiYgVFlQRV9DT0RFIChleHBlY3RfdHlwZSkgPT0gVFlQRV9DT0RFX1BU UikKICAJZXhwZWN0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChjaGVja190eXBlZGVmIChleHBl Y3RfdHlwZSkpOwogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKGV4cGVjdF90eXBlLCBl eHAsIHBvcywgbm9zaWRlKTsKQEAgLTQxOTMsNyArMTg3Myw3IEBAIGluZGV4IDdkM2E4YjkuLmY2 OWRmZjAgMTAwNjQ0CiAgICAgICAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxfQVZPSURfU0lERV9F RkZFQ1RTKQogIAl7CiAgCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEp KTsKLUBAIC0yNjUyLDEyICsyODAxLDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTI1MzMsMTIgKzI2ODIsMTggQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgLyogSW4gQyB5 b3UgY2FuIGRlcmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUgMXN0IGVsdC4gICovCiAgCSAg ICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCiAgCSAgICApCkBAIC00 MjE3LDcgKzE4OTcsNyBAQCBpbmRleCA3ZDNhOGI5Li5mNjlkZmYwIDEwMDY0NAogIAkgIGVsc2UK ICAJICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRl ciB2YWx1ZS4iKSk7CiAgCX0KLUBAIC0yNjY3LDkgKzI4MjIsMTQgQEAgZXZhbHVhdGVfc3ViZXhw X3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjU0OCw5ICsyNzAzLDE0 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAog IAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJsZXMgYXJlIHJhcmUgZW5vdWdoIHRoYXQKICAJIEJV SUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNlZW0gdG8gYmUgYSBtaXN0YWtlLiAgKi8KICAgICAg ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQpAQCAtNDIzNSw3ICsxOTE1 LDcgQEAgaW5kZXggN2QzYThiOS4uZjY5ZGZmMCAxMDA2NDQKICAKICAgICAgY2FzZSBVTk9QX0FE RFI6CiAgICAgICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1lbWJl cnMuICAqLwotQEAgLTMwMTEsNyArMzE3MSw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJj aW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTI5NjMsNyArMzEyMyw3IEBAIGV2YWx1 YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIHsKICAg IGVudW0gZXhwX29wY29kZSBvcDsKICAgIGludCBwYzsKQEAgLTQyNDQsNyArMTkyNCw3IEBAIGlu ZGV4IDdkM2E4YjkuLmY2OWRmZjAgMTAwNjQ0CiAgICBzdHJ1Y3Qgc3ltYm9sICp2YXI7CiAgICBz dHJ1Y3QgdHlwZSAqdHlwZTsKICAKLUBAIC0zMDIyLDEzICszMTgyLDE4IEBAIGV2YWx1YXRlX3N1 YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTI5NzQsMTMg KzMxMzQsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNz aW9uICpleHAsCiAgICAgIHsKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgdmFyID0g ZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sOwpAQCAtNDI2NCw3ICsxOTQ0LDcgQEAgaW5kZXggN2Qz YThiOS4uZjY5ZGZmMCAxMDA2NDQKICAJICByZXR1cm4gdmFsdWVfY2FzdCAobG9va3VwX3BvaW50 ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAogIAkJCSAgICAgdmFsKTsKICAJfQot QEAgLTMwODAsOSArMzI0NSwxMyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX3NpemVvZiAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MpCitAQCAtMzAzOCw5ICszMjAzLDEzIEBAIGV2YWx1 YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcykK ICAKICAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CiAgICAgICAgKCpwb3MpICs9IDQ7CkBAIC00Mjgx LDcgKzE5NjEsNyBAQCBpbmRleCA3ZDNhOGI5Li5mNjlkZmYwIDEwMDY0NAogIAogICAgICBkZWZh dWx0OgogICAgICAgIHZhbCA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywg RVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpOwotQEAgLTMxMTMsMTggKzMyODIsMjUgQEAgcGFyc2Vf YW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aCkKK0BAIC0zMDcxLDE4ICszMjQwLDI1 IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIgKnAsIGludCBsZW5ndGgpCiAgaW50CiAgY2Fs Y19mNzdfYXJyYXlfZGltcyAoc3RydWN0IHR5cGUgKmFycmF5X3R5cGUpCiAgewpAQCAtNDMxNyw5 NSArMTk5NywxMSBAQCBpbmRleCA3ZDNhOGI5Li5mNjlkZmYwIDEwMDY0NAogLSAgcmV0dXJuIG5k aW1lbjsKICsKICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL2V4ZWMuYyBiL2dkYi9leGVjLmMKLWluZGV4 IDZiYTE5ODYuLmUwNzY2MDkgMTAwNjQ0Ci0tLS0gYS9nZGIvZXhlYy5jCi0rKysgYi9nZGIvZXhl Yy5jCi1AQCAtMzMsNiArMzMsNyBAQAotICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCi0gI2luY2x1 ZGUgImdkYnRocmVhZC5oIgotICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKLSsjaW5jbHVkZSAiZ2Ri X2JmZC5oIgotIAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlICJyZWFkbGluZS9yZWFk bGluZS5oIgotQEAgLTk4LDEwICs5OSw4IEBAIGV4ZWNfY2xvc2UgKHZvaWQpCi0gICBpZiAoZXhl Y19iZmQpCi0gICAgIHsKLSAgICAgICBiZmQgKmFiZmQgPSBleGVjX2JmZDsKLS0gICAgICBjaGFy ICpuYW1lID0gYmZkX2dldF9maWxlbmFtZSAoYWJmZCk7Ci0gCi0tICAgICAgZ2RiX2JmZF9jbG9z ZV9vcl93YXJuIChhYmZkKTsKLS0gICAgICB4ZnJlZSAobmFtZSk7Ci0rICAgICAgZ2RiX2JmZF91 bnJlZiAoYWJmZCk7Ci0gCi0gICAgICAgLyogUmVtb3ZpbmcgdGFyZ2V0IHNlY3Rpb25zIG1heSBj bG9zZSB0aGUgZXhlY19vcHMgdGFyZ2V0LgotIAkgQ2xlYXIgZXhlY19iZmQgYmVmb3JlIGRvaW5n IHNvIHRvIHByZXZlbnQgcmVjdXJzaW9uLiAgKi8KLUBAIC0xMjgsMTcgKzEyNywxMyBAQCBleGVj X2Nsb3NlXzEgKGludCBxdWl0dGluZykKLSAgICAgICB2cCA9IG54dDsKLSAgICAgICBueHQgPSB2 cC0+bnh0OwotIAotLSAgICAgIC8qIGlmIHRoZXJlIGlzIGFuIG9iamZpbGUgYXNzb2NpYXRlZCB3 aXRoIHRoaXMgYmZkLAotLSAgICAgICAgIGZyZWVfb2JqZmlsZSgpIHdpbGwgZG8gcHJvcGVyIGNs ZWFudXAgb2Ygb2JqZmlsZSAqYW5kKiBiZmQuICAqLwotLQotICAgICAgIGlmICh2cC0+b2JqZmls ZSkKLSAJewotIAkgIGZyZWVfb2JqZmlsZSAodnAtPm9iamZpbGUpOwotIAkgIG5lZWRfc3ltdGFi X2NsZWFudXAgPSAxOwotIAl9Ci0tICAgICAgZWxzZSBpZiAodnAtPmJmZCAhPSBleGVjX2JmZCkK LS0JLyogRklYTUUtbGVhazogV2Ugc2hvdWxkIGJlIGZyZWVpbmcgdnAtPm5hbWUgdG9vLCBJIHRo aW5rLiAgKi8KLS0JZ2RiX2JmZF9jbG9zZV9vcl93YXJuICh2cC0+YmZkKTsKLSsKLSsgICAgICBn ZGJfYmZkX3VucmVmICh2cC0+YmZkKTsKLSAKLSAgICAgICB4ZnJlZSAodnApOwotICAgICB9Ci1A QCAtMjMwLDExICsyMjUsMTQgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGlu dCBmcm9tX3R0eSkKLSAJICAgICAmc2NyYXRjaF9wYXRobmFtZSk7Ci0gCX0KLSAjZW5kaWYKLSsK LSsgICAgICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHNjcmF0Y2hfcGF0aG5hbWUp OwotKwotICAgICAgIGlmIChzY3JhdGNoX2NoYW4gPCAwKQotIAlwZXJyb3Jfd2l0aF9uYW1lIChm aWxlbmFtZSk7Ci0tICAgICAgZXhlY19iZmQgPSBiZmRfZm9wZW4gKHNjcmF0Y2hfcGF0aG5hbWUs IGdudXRhcmdldCwKLS0JCQkgICAgd3JpdGVfZmlsZXMgPyBGT1BFTl9SVUIgOiBGT1BFTl9SQiwK LS0JCQkgICAgc2NyYXRjaF9jaGFuKTsKLSsgICAgICBleGVjX2JmZCA9IGdkYl9iZmRfZm9wZW4g KHNjcmF0Y2hfcGF0aG5hbWUsIGdudXRhcmdldCwKLSsJCQkJd3JpdGVfZmlsZXMgPyBGT1BFTl9S VUIgOiBGT1BFTl9SQiwKLSsJCQkJc2NyYXRjaF9jaGFuKTsKLSAKLSAgICAgICBpZiAoIWV4ZWNf YmZkKQotIAl7Ci1AQCAtMjQyLDEzICsyNDAsNiBAQCBleGVjX2ZpbGVfYXR0YWNoIChjaGFyICpm aWxlbmFtZSwgaW50IGZyb21fdHR5KQotIAkJIHNjcmF0Y2hfcGF0aG5hbWUsIGJmZF9lcnJtc2cg KGJmZF9nZXRfZXJyb3IgKCkpKTsKLSAJfQotIAotLSAgICAgIC8qIEF0IHRoaXMgcG9pbnQsIHNj cmF0Y2hfcGF0aG5hbWUgYW5kIGV4ZWNfYmZkLT5uYW1lIGJvdGggcG9pbnQgdG8gdGhlCi0tICAg ICAgICAgc2FtZSBtYWxsb2MnZCBzdHJpbmcuICBIb3dldmVyIGV4ZWNfY2xvc2UoKSB3aWxsIGF0 dGVtcHQgdG8gZnJlZSBpdAotLSAgICAgICAgIHZpYSB0aGUgZXhlY19iZmQtPm5hbWUgcG9pbnRl ciwgc28gd2UgbmVlZCB0byBtYWtlIGFub3RoZXIgY29weSBhbmQKLS0gICAgICAgICBsZWF2ZSBl eGVjX2JmZCBhcyB0aGUgbmV3IG93bmVyIG9mIHRoZSBvcmlnaW5hbCBjb3B5LiAgKi8KLS0gICAg ICBzY3JhdGNoX3BhdGhuYW1lID0geHN0cmR1cCAoc2NyYXRjaF9wYXRobmFtZSk7Ci0tICAgICAg Y2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBzY3JhdGNoX3BhdGhuYW1lKTsKLS0KLSAg ICAgICBpZiAoIWJmZF9jaGVja19mb3JtYXRfbWF0Y2hlcyAoZXhlY19iZmQsIGJmZF9vYmplY3Qs ICZtYXRjaGluZykpCi0gCXsKLSAJICAvKiBNYWtlIHN1cmUgdG8gY2xvc2UgZXhlY19iZmQsIG9y IGVsc2UgInJ1biIgbWlnaHQgdHJ5IHRvIHVzZQotQEAgLTU1NCw2ICs1NDUsNyBAQCBtYXBfdm1h cCAoYmZkICphYmZkLCBiZmQgKmFyY2gpCi0gICBtZW1zZXQgKChjaGFyICopIHZwLCAnXDAnLCBz aXplb2YgKCp2cCkpOwotICAgdnAtPm54dCA9IDA7Ci0gICB2cC0+YmZkID0gYWJmZDsKLSsgIGdk Yl9iZmRfcmVmIChhYmZkKTsKLSAgIHZwLT5uYW1lID0gYmZkX2dldF9maWxlbmFtZSAoYXJjaCA/ IGFyY2ggOiBhYmZkKTsKLSAgIHZwLT5tZW1iZXIgPSBhcmNoID8gYmZkX2dldF9maWxlbmFtZSAo YWJmZCkgOiAiIjsKLSAKIGRpZmYgLS1naXQgYS9nZGIvZi1leHAueSBiL2dkYi9mLWV4cC55Ci1p bmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0NAoraW5kZXggODQ2Y2MwMi4uOTI4MzE4MyAxMDA2 NDQKIC0tLSBhL2dkYi9mLWV4cC55CiArKysgYi9nZGIvZi1leHAueQotQEAgLTI5OCw3ICsyOTgs OSBAQCBhcmdsaXN0IDoJc3VicmFuZ2UKK0BAIC0yOTcsNyArMjk3LDkgQEAgYXJnbGlzdCA6CXN1 YnJhbmdlCiAgCQkJeyBhcmdsaXN0X2xlbiA9IDE7IH0KICAJOwogICAgIApAQCAtNDQxNywxMiAr MjAxMywxMiBAQCBpbmRleCAzM2M3NDE4Li40ZGIxYmZhIDEwMDY0NAogIAk7CiAgCiBkaWZmIC0t Z2l0IGEvZ2RiL2YtbGFuZy5oIGIvZ2RiL2YtbGFuZy5oCi1pbmRleCA0YWFlM2M1Li41MWE0ZTFl IDEwMDY0NAoraW5kZXggNGVmMWFjZi4uOGRhMDE2YiAxMDA2NDQKIC0tLSBhL2dkYi9mLWxhbmcu aAogKysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtMjgsNiArMjgsMTAgQEAgZXh0ZXJuIHZvaWQgZl9l cnJvciAoY2hhciAqKTsJLyogRGVmaW5lZCBpbiBmLWV4cC55ICovCitAQCAtMjksNiArMjksMTAg QEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5lZCBpbiBmLWV4cC55ICov CiAgZXh0ZXJuIHZvaWQgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBjaGFyICos IHN0cnVjdCB1aV9maWxlICosIGludCwKLSAJCQkgIGludCk7CisgCQkJICBpbnQsIGNvbnN0IHN0 cnVjdCB0eXBlX3ByaW50X29wdGlvbnMgKik7CiAgCiArZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2Jq ZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0KICsgIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7CkBAIC00NDMyLDEwICsyMDI4LDEwIEBAIGlu ZGV4IDRhYWUzYzUuLjUxYTRlMWUgMTAwNjQ0CiAgCQkJIHN0cnVjdCB1aV9maWxlICosIGludCwK ICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICosCiBkaWZmIC0tZ2l0IGEvZ2RiL2YtdHlwZXByaW50 LmMgYi9nZGIvZi10eXBlcHJpbnQuYwotaW5kZXggYTk1ZWY4NC4uODMwOTE3ZCAxMDA2NDQKK2lu ZGV4IGFhMzMyMzEuLmRmOTk4YzQgMTAwNjQ0CiAtLS0gYS9nZGIvZi10eXBlcHJpbnQuYwogKysr IGIvZ2RiL2YtdHlwZXByaW50LmMKLUBAIC0zMSw3ICszMSw3IEBACitAQCAtMzAsNyArMzAsNyBA QAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgInRhcmdldC5oIgogICNpbmNsdWRl ICJmLWxhbmcuaCIKQEAgLTQ0NDQsNyArMjA0MCw3IEBAIGluZGV4IGE5NWVmODQuLjgzMDkxN2Qg MTAwNjQ0CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAK LUBAIC00OCw2ICs0OCwzNCBAQCB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3Ry dWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKK0BAIC00Nyw2ICs0NywzNCBAQCB2b2lkIGZf dHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUg KiwKICB2b2lkIGZfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQsIGludCk7CiAgDAogIApAQCAtNDQ3OSw3ICsyMDc1LDcgQEAgaW5kZXggYTk1ZWY4 NC4uODMwOTE3ZCAxMDA2NDQKICAvKiBMRVZFTCBpcyB0aGUgZGVwdGggdG8gaW5kZW50IGxpbmVz IGJ5LiAgKi8KICAKICB2b2lkCi1AQCAtNTcsNiArODUsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sCitAQCAtNTYsNiArODQsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgICBlbnVtIHR5 cGVfY29kZSBjb2RlOwogICAgaW50IGRlbWFuZ2xlZF9hcmdzOwogIApAQCAtNDQ4OSw3ICsyMDg1 LDcgQEAgaW5kZXggYTk1ZWY4NC4uODMwOTE3ZCAxMDA2NDQKICAgIGZfdHlwZV9wcmludF9iYXNl ICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsKICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUp OwogICAgaWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAt MTY0LDYgKzE5NSw5IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitAQCAtMTYyLDYgKzE5Myw5IEBAIGZfdHlw ZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sCiAgCiAgICBRVUlUOwogIApAQCAtNDUwMCwxMCArMjA5NiwxMCBAQCBpbmRleCBh OTVlZjg0Li44MzA5MTdkIDEwMDY0NAogICAgICB7CiAgICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZ OgogZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCi1pbmRl eCA0MzU5ZjZmLi44ZmY4MzRiIDEwMDY0NAoraW5kZXggMjJjY2E4My4uYjJhMmNjMyAxMDA2NDQK IC0tLSBhL2dkYi9mLXZhbHByaW50LmMKICsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBAIC01NCwx NSArNTQsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMgKyAx XVsyXTsKK0BAIC01MSwxNSArNTEsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9G T1JUUkFOX0RJTVMgKyAxXVsyXTsKICAvKiBUaGUgZm9sbG93aW5nIG1hY3JvIGdpdmVzIHVzIHRo ZSBzaXplIG9mIHRoZSBudGggZGltZW5zaW9uLCBXaGVyZSAKICAgICBuIGlzIDEgYmFzZWQuICAq LwogIApAQCAtNDUyNCw3ICsyMTIwLDcgQEAgaW5kZXggNDM1OWY2Zi4uOGZmODM0YiAxMDA2NDQK ICAgIGlmIChUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCiAgICAg IGVycm9yIChfKCJMb3dlciBib3VuZCBtYXkgbm90IGJlICcqJyBpbiBGNzciKSk7CiAgCi1AQCAt NzIsMTQgKzc0LDE3IEBAIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCitA QCAtNjksMTQgKzcxLDE3IEBAIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUp CiAgaW50CiAgZjc3X2dldF91cHBlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CkBAIC00 NTQ3LDcgKzIxNDMsNyBAQCBpbmRleCA0MzU5ZjZmLi44ZmY4MzRiIDEwMDY0NAogICAgICB9CiAg CiAgICByZXR1cm4gVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxVRSAodHlwZSk7Ci1AQCAtMTM1 LDI0ICsxNDAsMjkgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorQEAgLTEzMiwyNCArMTM3LDI5IEBA IGY3N19jcmVhdGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSkKICAgICAgICB1cHBlciA9IGY3N19nZXRfdXBwZXJib3VuZCAo dG1wX3R5cGUpOwogICAgICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7 CiAgCkBAIC00NTgzLDcgKzIxNzksNyBAQCBpbmRleCA0MzU5ZjZmLi44ZmY4MzRiIDEwMDY0NAog ICAgICB9CiAgfQogIAotQEAgLTE3NCwzNyArMTg0LDM1IEBAIGY3N19wcmludF9hcnJheV8xIChp bnQgbnNzLCBpbnQgbmRpbWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTE3MSwzNyAr MTgxLDM1IEBAIGY3N19wcmludF9hcnJheV8xIChpbnQgbnNzLCBpbnQgbmRpbWVuc2lvbnMsIHN0 cnVjdCB0eXBlICp0eXBlLAogIAogICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKICAgICAgewpA QCAtNDYyOCw3ICsyMjI0LDcgQEAgaW5kZXggNDM1OWY2Zi4uOGZmODM0YiAxMDA2NDQKICAJICAg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwogIAl9CiAgICAgIH0KLUBAIC0yNzAs NiArMjc4LDkgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKK0BAIC0yNjcsNiArMjc1LDkgQEAgZl92 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50 IGVtYmVkZGVkX29mZnNldCwKICAgIENPUkVfQUREUiBhZGRyOwogICAgaW50IGluZGV4OwogIApA QCAtNDYzOSwxMCArMjIzNSwxMCBAQCBpbmRleCA0MzU5ZjZmLi44ZmY4MzRiIDEwMDY0NAogICAg c3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2 YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IDY2YmNlYmUuLmU1OWU1ZjIgMTAwNjQ0CitpbmRl eCBmYjY2ZTBmLi40NTY4NGYwIDEwMDY0NAogLS0tIGEvZ2RiL2ZpbmR2YXIuYwogKysrIGIvZ2Ri L2ZpbmR2YXIuYwotQEAgLTM1LDYgKzM1LDcgQEAKK0BAIC0zNCw2ICszNCw3IEBACiAgI2luY2x1 ZGUgImJsb2NrLmgiCiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1ZGUgImxhbmd1YWdl LmgiCkBAIC00NjUwLDcgKzIyNDYsNyBAQCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAog IAogIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4dHJhY3QnIGZ1bmN0 aW9ucyByZXR1cm4gYQogICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBhIHRhcmdldC1mb3Jt YXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCi1AQCAtNDM4LDcgKzQzOSwxMCBAQCBtaW5zeW1f bG9va3VwX2l0ZXJhdG9yX2NiIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqY2JfZGF0 YSkKK0BAIC00MzcsNyArNDM4LDEwIEBAIG1pbnN5bV9sb29rdXBfaXRlcmF0b3JfY2IgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpjYl9kYXRhKQogIH0KICAKICAvKiBBIGRlZmF1bHQg aW1wbGVtZW50YXRpb24gZm9yIHRoZSAibGFfcmVhZF92YXJfdmFsdWUiIGhvb2sgaW4KQEAgLTQ2 NjIsMTIgKzIyNTgsMTAgQEAgaW5kZXggNjZiY2ViZS4uZTU5ZTVmMiAxMDA2NDQKICAKICBzdHJ1 Y3QgdmFsdWUgKgogIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotQEAgLTQ0NiwxNiArNDUwLDYgQEAgZGVmYXVsdF9y ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCi0gICBzdHJ1Y3QgdmFsdWUgKnY7CitAQCAtNDQ2LDEzICs0NTAsNiBAQCBkZWZhdWx0X3Jl YWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSkKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CiAgICBDT1JFX0FE RFIgYWRkcjsKLS0gIGludCBsZW47Ci0tCisgCiAtICAvKiBDYWxsIGNoZWNrX3R5cGVkZWYgb24g b3VyIHR5cGUgdG8gbWFrZSBzdXJlIHRoYXQsIGlmIFRZUEUgaXMKIC0gICAgIGEgVFlQRV9DT0RF X1RZUEVERUYsIGl0cyBsZW5ndGggaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCB0 eXBlCiAtICAgICBpbnN0ZWFkIG9mIHplcm8uICBIb3dldmVyLCB3ZSBkbyBub3QgcmVwbGFjZSB0 aGUgdHlwZWRlZiB0eXBlIGJ5IHRoZQpAQCAtNDY3NSwyNyArMjI2OSwxMCBAQCBpbmRleCA2NmJj ZWJlLi5lNTllNWYyIDEwMDY0NAogLSAgICAgc2V0IHRoZSByZXR1cm5lZCB2YWx1ZSB0eXBlIGRl c2NyaXB0aW9uIGNvcnJlY3RseS4gICovCiAtICBjaGVja190eXBlZGVmICh0eXBlKTsKIC0KLS0g IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKICAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19m cmFtZSAodmFyKSkKICAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAgLTQ2NSw3ICs0NTksNyBA QCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFt ZV9pbmZvICpmcmFtZSkKLSAgICAgY2FzZSBMT0NfQ09OU1Q6Ci0gICAgICAgLyogUHV0IHRoZSBj b25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLwotICAgICAgIHYgPSBhbGxvY2F0ZV92 YWx1ZSAodHlwZSk7Ci0tICAgICAgc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRz X3JhdyAodiksIGxlbiwKLSsgICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29udGVu dHNfcmF3ICh2KSwgVFlQRV9MRU5HVEggKHR5cGUpLAotIAkJCSAgICBnZGJhcmNoX2J5dGVfb3Jk ZXIgKGdldF90eXBlX2FyY2ggKHR5cGUpKSwKLSAJCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxV RSAodmFyKSk7Ci0gICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLUBAIC00OTAsMTIg KzQ4NCwxMiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAKLSAgICAgY2FzZSBMT0NfQ09OU1RfQllURVM6Ci0g ICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLS0gICAgICBtZW1jcHkgKHZhbHVlX2Nv bnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwgbGVuKTsKLSsgICAgICBt ZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwK LSsJICAgICAgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAgICAgICBWQUxVRV9MVkFMICh2KSA9IG5v dF9sdmFsOworIAorQEAgLTQ5Miw3ICs0ODksNiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICByZXR1 cm4gdjsKICAKICAgICAgY2FzZSBMT0NfU1RBVElDOgpAQCAtNDcwMyw3ICsyMjgwLDcgQEAgaW5k ZXggNjZiY2ViZS4uZTU5ZTVmMiAxMDA2NDQKICAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcp CiAgCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNT ICh2YXIpLAogIAkJCQkJIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci1AQCAtNTA5LDcgKzUw Myw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTUwNiw3ICs1MDIsNiBAQCBkZWZhdWx0X3JlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJ ZXJyb3IgKF8oIlVua25vd24gYXJndW1lbnQgbGlzdCBhZGRyZXNzIGZvciBgJXMnLiIpLAogIAkg ICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZhcikpOwogICAgICAgIGFkZHIgKz0gU1lNQk9MX1ZB TFVFICh2YXIpOwpAQCAtNDcxMSw3ICsyMjg4LDcgQEAgaW5kZXggNjZiY2ViZS4uZTU5ZTVmMiAx MDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfUkVGX0FSRzoKLUBAIC01MjQs MTQgKzUxNywxMiBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIs IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MjEsMTQgKzUxNiwxMiBAQCBkZWZhdWx0 X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKICAJYXJncmVmICs9IFNZTUJPTF9WQUxVRSAodmFyKTsKICAJcmVmID0gdmFsdWVfYXQg KGxvb2t1cF9wb2ludGVyX3R5cGUgKHR5cGUpLCBhcmdyZWYpOwogIAlhZGRyID0gdmFsdWVfYXNf YWRkcmVzcyAocmVmKTsKQEAgLTQ3MjYsNyArMjMwMyw3IEBAIGluZGV4IDY2YmNlYmUuLmU1OWU1 ZjIgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgTE9DX1RZUEVERUY6Ci1AQCAt NTQwLDcgKzUzMSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTUzNyw3ICs1MzAsNiBAQCBkZWZhdWx0 X3JlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfQkxPQ0s6CkBAIC00NzM0LDcg KzIzMTEsNyBAQCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAogICAgICAgIGlmIChvdmVy bGF5X2RlYnVnZ2luZykKICAJYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcwogIAkgIChC TE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSwgU1lNQk9MX09CSl9TRUNUSU9O ICh2YXIpKTsKLUBAIC01NjYsNyArNTU2LDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3Ry dWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNTYzLDcgKzU1 NSw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQogIAkgICAgICAgICAgICAgU1lNQk9MX1BSSU5UX05BTUUgKHZh cikpOwogIAogIAkgICAgYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKHJlZ3ZhbCk7CkBAIC00NzQy LDcgKzIzMTksNyBAQCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAogIAkgIH0KICAJZWxz ZQogIAkgIHsKLUBAIC02MTUsNyArNjA0LDYgQEAgZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3Ry dWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNjEyLDcgKzYw Myw2IEBAIGRlZmF1bHRfcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQogIAlpZiAob2JqX3NlY3Rpb24KICAJICAgICYmIChvYmpfc2Vj dGlvbi0+dGhlX2JmZF9zZWN0aW9uLT5mbGFncyAmIFNFQ19USFJFQURfTE9DQUwpICE9IDApCiAg CSAgYWRkciA9IHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MgKG9ial9zZWN0aW9uLT5vYmpm aWxlLCBhZGRyKTsKQEAgLTQ3NTAsNyArMjMyNyw3IEBAIGluZGV4IDY2YmNlYmUuLmU1OWU1ZjIg MTAwNjQ0CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogIAotQEAgLTYyOCw2ICs2MTYsMTAgQEAg ZGVmYXVsdF9yZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUpCitAQCAtNjI1LDYgKzYxNSwxMCBAQCBkZWZhdWx0X3JlYWRfdmFyX3ZhbHVl IChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBi cmVhazsKICAgICAgfQogIApAQCAtNDc2MSw3ICsyMzM4LDcgQEAgaW5kZXggNjZiY2ViZS4uZTU5 ZTVmMiAxMDA2NDQKICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CiAgICBzZXRfdmFs dWVfYWRkcmVzcyAodiwgYWRkcik7CiAgICByZXR1cm4gdjsKLUBAIC03MjMsMTAgKzcxNSwxMSBA QCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTcyOSwxMCArNzIzLDExIEBAIHN0cnVjdCB2YWx1ZSAqCiAg dmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdl dF9mcmFtZV9hcmNoIChmcmFtZSk7CkBAIC00Nzc1LDcgKzIzNTIsNyBAQCBpbmRleCA2NmJjZWJl Li5lNTllNWYyIDEwMDY0NAogICAgICB7CiAgICAgICAgaW50IG9wdGltLCB1bmF2YWlsLCBvazsK ICAKLUBAIC03NDEsNyArNzM0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUg KnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC03NDcsNyAr NzQyLDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdu dW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBWQUxVRV9MVkFMICh2KSA9IGx2 YWxfcmVnaXN0ZXI7CiAgICAgICAgVkFMVUVfRlJBTUVfSUQgKHYpID0gZ2V0X2ZyYW1lX2lkIChm cmFtZSk7CiAgICAgICAgVkFMVUVfUkVHTlVNICh2KSA9IHJlZ251bTsKQEAgLTQ3ODQsNDUgKzIz NjEsNiBAQCBpbmRleCA2NmJjZWJlLi5lNTllNWYyIDEwMDY0NAogIAkJCQkgICAgICB2YWx1ZV9j b250ZW50c19yYXcgKHYpLCAmb3B0aW0sCiAgCQkJCSAgICAgICZ1bmF2YWlsKTsKICAKLWRpZmYg LS1naXQgYS9nZGIvZ2NvcmUuYyBiL2dkYi9nY29yZS5jCi1pbmRleCBhZWRkYTQxLi5hNDVlNzg3 IDEwMDY0NAotLS0tIGEvZ2RiL2djb3JlLmMKLSsrKyBiL2dkYi9nY29yZS5jCi1AQCAtMzMsNiAr MzMsNyBAQAotICNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNp bmNsdWRlICJyZWdzZXQuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotIC8qIFRoZSBsYXJn ZXN0IGFtb3VudCBvZiBtZW1vcnkgdG8gcmVhZCBmcm9tIHRoZSB0YXJnZXQgYXQgb25jZS4gIFdl Ci0gICAgbXVzdCB0aHJvdHRsZSBpdCB0byBsaW1pdCB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2Vk IGJ5IEdEQiBkdXJpbmcKLUBAIC01MCw3ICs1MSw3IEBAIHN0YXRpYyBpbnQgZ2NvcmVfbWVtb3J5 X3NlY3Rpb25zIChiZmQgKik7Ci0gYmZkICoKLSBjcmVhdGVfZ2NvcmVfYmZkIChjaGFyICpmaWxl bmFtZSkKLSB7Ci0tICBiZmQgKm9iZmQgPSBiZmRfb3BlbncgKGZpbGVuYW1lLCBkZWZhdWx0X2dj b3JlX3RhcmdldCAoKSk7Ci0rICBiZmQgKm9iZmQgPSBnZGJfYmZkX29wZW53IChmaWxlbmFtZSwg ZGVmYXVsdF9nY29yZV90YXJnZXQgKCkpOwotIAotICAgaWYgKCFvYmZkKQotICAgICBlcnJvciAo XygiRmFpbGVkIHRvIG9wZW4gJyVzJyBmb3Igb3V0cHV0LiIpLCBmaWxlbmFtZSk7Ci1AQCAtMTEw LDcgKzExMSw3IEBAIGRvX2JmZF9kZWxldGVfY2xlYW51cCAodm9pZCAqYXJnKQotICAgYmZkICpv YmZkID0gYXJnOwotICAgY29uc3QgY2hhciAqZmlsZW5hbWUgPSBvYmZkLT5maWxlbmFtZTsKLSAK LS0gIGJmZF9jbG9zZSAoYXJnKTsKLSsgIGdkYl9iZmRfdW5yZWYgKGFyZyk7Ci0gICB1bmxpbmsg KGZpbGVuYW1lKTsKLSB9Ci0gCi1AQCAtMTU0LDcgKzE1NSw3IEBAIGdjb3JlX2NvbW1hbmQgKGNo YXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRvdXQs ICJTYXZlZCBjb3JlZmlsZSAlc1xuIiwgY29yZWZpbGVuYW1lKTsKLSAKLSAgIGRpc2NhcmRfY2xl YW51cHMgKG9sZF9jaGFpbik7Ci0tICBiZmRfY2xvc2UgKG9iZmQpOwotKyAgZ2RiX2JmZF91bnJl ZiAob2JmZCk7Ci0gfQotIAotIHN0YXRpYyB1bnNpZ25lZCBsb25nCiBkaWZmIC0tZ2l0IGEvZ2Ri L2dkYi1nZGIuZ2RiLmluIGIvZ2RiL2dkYi1nZGIuZ2RiLmluCiBpbmRleCBmZmI3ZjUzLi5hMmU3 ZTk0IDEwMDY0NAogLS0tIGEvZ2RiL2dkYi1nZGIuZ2RiLmluCkBAIC00ODQzLDExNTggKzIzODEs MzY0IEBAIGluZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAwNjQ0CiAgc2V0IGNvbXBsYWludHMgMQog IAogIGIgaW50ZXJuYWxfZXJyb3IKLWRpZmYgLS1naXQgYS9nZGIvZ2RiX2JmZC5jIGIvZ2RiL2dk Yl9iZmQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmZhYzg3NzYKLS0t LSAvZGV2L251bGwKLSsrKyBiL2dkYi9nZGJfYmZkLmMKLUBAIC0wLDAgKzEsNjcwIEBACi0rLyog RGVmaW5pdGlvbnMgZm9yIEJGRCB3cmFwcGVycyB1c2VkIGJ5IEdEQi4KLSsKLSsgICBDb3B5cmln aHQgKEMpIDIwMTEsIDIwMTIKLSsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r ICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUu b3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImdk Yl9iZmQuaCIKLSsjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotKyNpbmNsdWRlICJnZGJfc3RyaW5n LmgiCi0rI2luY2x1ZGUgInVpLW91dC5oIgotKyNpbmNsdWRlICJnZGJjbWQuaCIKLSsjaW5jbHVk ZSAiaGFzaHRhYi5oIgotKyNpZmRlZiBIQVZFX1pMSUJfSAotKyNpbmNsdWRlIDx6bGliLmg+Ci0r I2VuZGlmCi0rI2lmZGVmIEhBVkVfTU1BUAotKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgotKyNpZm5k ZWYgTUFQX0ZBSUxFRAotKyNkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQgKikgLTEpCi0rI2VuZGlm Ci0rI2VuZGlmCi0rCi0rLyogQW4gb2JqZWN0IG9mIHRoaXMgdHlwZSBpcyBzdG9yZWQgaW4gdGhl IHNlY3Rpb24ncyB1c2VyIGRhdGEgd2hlbgotKyAgIG1hcHBpbmcgYSBzZWN0aW9uLiAgKi8KK2Rp ZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCitpbmRleCA1ODg1MjQx Li5hM2RiNjZhIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnR5cGVzLmMKKysrKyBiL2dkYi9nZGJ0eXBl cy5jCitAQCAtMzcsNiArMzcsOSBAQAorICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisgI2luY2x1 ZGUgImhhc2h0YWIuaCIKKyAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgorKyNpbmNsdWRlICJvYnNl cnZlci5oIgorKyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5o IgorIAorIC8qIEluaXRpYWxpemUgQkFETkVTUyBjb25zdGFudHMuICAqLworIAorQEAgLTE4NSw2 ICsxODgsNDMgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICByZXR1 cm4gdHlwZTsKKyB9CisgCisrI2lmIDAKKysvKiBEZWNsYXJlIFRZUEUgYXMgZGlzY2FyZGFibGUg b24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMuCisrICAgWW91IG11 c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90eXBlcyB0byBwcm90 ZWN0IFRZUEUgZnJvbQorKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KICsKLStzdHJ1Y3QgZ2Ri X2JmZF9zZWN0aW9uX2RhdGEKKytzdGF0aWMgdm9pZAorK3NldF90eXBlX2FzX2Rpc2NhcmRhYmxl IChzdHJ1Y3QgdHlwZSAqdHlwZSkKICt7Ci0rICAvKiBTaXplIG9mIHRoZSBkYXRhLiAgKi8KLSsg IGJmZF9zaXplX3R5cGUgc2l6ZTsKLSsgIC8qIElmIHRoZSBkYXRhIHdhcyBtbWFwcGVkLCB0aGlz IGlzIHRoZSBsZW5ndGggb2YgdGhlIG1hcC4gICovCi0rICBiZmRfc2l6ZV90eXBlIG1hcF9sZW47 Ci0rICAvKiBUaGUgZGF0YS4gIElmIE5VTEwsIHRoZSBzZWN0aW9uIGRhdGEgaGFzIG5vdCBiZWVu IHJlYWQuICAqLwotKyAgdm9pZCAqZGF0YTsKLSsgIC8qIElmIHRoZSBkYXRhIHdhcyBtbWFwcGVk LCB0aGlzIGlzIHRoZSBtYXAgYWRkcmVzcy4gICovCi0rICB2b2lkICptYXBfYWRkcjsKLSt9Owot KwotKy8qIEEgaGFzaCB0YWJsZSBob2xkaW5nIGV2ZXJ5IEJGRCB0aGF0IGdkYiBrbm93cyBhYm91 dC4gIFRoaXMgaXMgbm90Ci0rICAgdG8gYmUgY29uZnVzZWQgd2l0aCAnZ2RiX2JmZF9jYWNoZScs IHdoaWNoIGlzIHVzZWQgZm9yIHNoYXJpbmcKLSsgICBCRkRzOyBpbiBjb250cmFzdCwgdGhpcyBo YXNoIGlzIHVzZWQganVzdCB0byBpbXBsZW1lbnQKLSsgICAibWFpbnQgaW5mbyBiZmQiLiAgKi8K LSsKLStzdGF0aWMgaHRhYl90IGFsbF9iZmRzOwotKwotKy8qIFNlZSBnZGJfYmZkLmguICAqLwor KyAgdm9pZCAqKnNsb3Q7CiArCi0rdm9pZAotK2dkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHN0cnVj dCBiZmQgKmFiZmQpCi0rewotKyAgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQp OwotKyAgY2hhciAqZGF0YTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBl KSk7CiArCi0rICBkYXRhID0gYmZkX2FsbG9jIChhYmZkLCBzdHJsZW4gKG5hbWUpICsgMSk7Ci0r ICBzdHJjcHkgKGRhdGEsIG5hbWUpOworKyAgVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkgPSAxOwor KyAgVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5cGUpID0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3Vy cmVudDsKICsKLSsgIC8qIFVud2FycmFudGVkIGNodW1taW5lc3Mgd2l0aCBCRkQuICAqLwotKyAg YWJmZC0+ZmlsZW5hbWUgPSBkYXRhOworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlX2Rp c2NhcmRhYmxlX3RhYmxlLCB0eXBlLCBJTlNFUlQpOworKyAgZ2RiX2Fzc2VydCAoISpzbG90KTsK KysgICpzbG90ID0gdHlwZTsKICt9CisrI2VuZGlmCiArCi0rLyogQW4gb2JqZWN0IG9mIHRoaXMg dHlwZSBpcyBzdG9yZWQgaW4gZWFjaCBCRkQncyB1c2VyIGRhdGEuICAqLwotKwotK3N0cnVjdCBn ZGJfYmZkX2RhdGEKLSt7Ci0rICAvKiBUaGUgcmVmZXJlbmNlIGNvdW50LiAgKi8KLSsgIGludCBy ZWZjOwotKwotKyAgLyogVGhlIG10aW1lIG9mIHRoZSBCRkQgYXQgdGhlIHBvaW50IHRoZSBjYWNo ZSBlbnRyeSB3YXMgbWFkZS4gICovCi0rICB0aW1lX3QgbXRpbWU7Ci0rfTsKLSsKLSsvKiBBIGhh c2ggdGFibGUgc3RvcmluZyBhbGwgdGhlIEJGRHMgbWFpbnRhaW5lZCBpbiB0aGUgY2FjaGUuICAq LwotKwotK3N0YXRpYyBodGFiX3QgZ2RiX2JmZF9jYWNoZTsKLSsKLSsvKiBUaGUgdHlwZSBvZiBh biBvYmplY3QgYmVpbmcgbG9va2VkIHVwIGluIGdkYl9iZmRfY2FjaGUuICBXZSB1c2UKLSsgICBo dGFiJ3MgY2FwYWJpbGl0eSBvZiBzdG9yaW5nIG9uZSBraW5kIG9mIG9iamVjdCAoQkZEIGluIHRo aXMgY2FzZSkKLSsgICBhbmQgdXNpbmcgYSBkaWZmZXJlbnQgc29ydCBvZiBvYmplY3QgZm9yIHNl YXJjaGluZy4gICovCi0rCi0rc3RydWN0IGdkYl9iZmRfY2FjaGVfc2VhcmNoCi0rewotKyAgLyog VGhlIGZpbGVuYW1lLiAgKi8KLSsgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwotKyAgLyogVGhlIG10 aW1lLiAgKi8KLSsgIHRpbWVfdCBtdGltZTsKLSt9OwotKwotKy8qIEEgaGFzaCBmdW5jdGlvbiBm b3IgQkZEcy4gICovCisrLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUgYnV0 IHByZXNlcnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKKysgICBzdGF0ZSBvZiBQQVJFTlRf VFlQRS4gICovCiArCi0rc3RhdGljIGhhc2h2YWxfdAotK2hhc2hfYmZkIChjb25zdCB2b2lkICpi KQorK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCisrYWxsb2NfdHlwZV9hc19wYXJlbnQgKHN0cnVjdCB0 eXBlICpwYXJlbnRfdHlwZSkKICt7Ci0rICBjb25zdCBiZmQgKmFiZmQgPSBiOwotKwotKyAgLyog SXQgaXMgc2ltcGxlc3QgdG8ganVzdCBoYXNoIHRoZSBmaWxlbmFtZS4gICovCi0rICByZXR1cm4g aHRhYl9oYXNoX3N0cmluZyAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwotK30KLSsKLSsvKiBB biBlcXVhbGl0eSBmdW5jdGlvbiBmb3IgQkZEcy4gIE5vdGUgdGhhdCB0aGlzIGV4cGVjdHMgdGhl IGNhbGxlcgotKyAgIHRvIHNlYXJjaCB1c2luZyBzdHJ1Y3QgZ2RiX2JmZF9jYWNoZV9zZWFyY2gg b25seSwgbm90IEJGRHMuICAqLworKyAgc3RydWN0IHR5cGUgKm5ld190eXBlID0gYWxsb2NfdHlw ZV9jb3B5IChwYXJlbnRfdHlwZSk7CiArCi0rc3RhdGljIGludAotK2VxX2JmZCAoY29uc3Qgdm9p ZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBiZmQgKmFiZmQgPSBhOwotKyAgY29u c3Qgc3RydWN0IGdkYl9iZmRfY2FjaGVfc2VhcmNoICpzID0gYjsKLSsgIHN0cnVjdCBnZGJfYmZk X2RhdGEgKmdkYXRhID0gYmZkX3VzcmRhdGEgKGFiZmQpOworKyNpZiAwCisrICBpZiAoVFlQRV9E SVNDQVJEQUJMRSAocGFyZW50X3R5cGUpKQorKyAgICBzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAo bmV3X3R5cGUpOworKyNlbmRpZgogKwotKyAgcmV0dXJuIChnZGF0YS0+bXRpbWUgPT0gcy0+bXRp bWUKLSsJICAmJiBzdHJjbXAgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCBzLT5maWxlbmFtZSkg PT0gMCk7CisrICByZXR1cm4gbmV3X3R5cGU7CiArfQogKwotKy8qIFNlZSBnZGJfYmZkLmguICAq LwotKwotK3N0cnVjdCBiZmQgKgotK2dkYl9iZmRfb3BlbiAoY29uc3QgY2hhciAqbmFtZSwgY29u c3QgY2hhciAqdGFyZ2V0LCBpbnQgZmQpCi0rewotKyAgaGFzaHZhbF90IGhhc2g7Ci0rICB2b2lk ICoqc2xvdDsKLSsgIGJmZCAqYWJmZDsKLSsgIHN0cnVjdCBnZGJfYmZkX2NhY2hlX3NlYXJjaCBz ZWFyY2g7Ci0rICBzdHJ1Y3Qgc3RhdCBzdDsKLSsKLSsgIGlmIChnZGJfYmZkX2NhY2hlID09IE5V TEwpCi0rICAgIGdkYl9iZmRfY2FjaGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMSwgaGFzaF9iZmQs IGVxX2JmZCwgTlVMTCwKLSsJCQkJICAgICAgIHhjYWxsb2MsIHhmcmVlKTsKKyAvKiBBbGxvY2F0 ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKKyAg ICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFs bG9jYXRlZAorICAgIG9uIHRoZSBoZWFwLiAgKi8KK0BAIC0zMTAsNyArMzUwLDcgQEAgbWFrZV9w b2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCisg CisgICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xsIG5lZWQgdG8g YWxsb2NhdGUgb25lLiAgKi8KKyAgICAgeworLSAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9jb3B5 ICh0eXBlKTsKKysgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFyZW50ICh0eXBlKTsKKyAg ICAgICBpZiAodHlwZXB0cikKKyAJKnR5cGVwdHIgPSBudHlwZTsKKyAgICAgfQorQEAgLTM4Myw3 ICs0MjMsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0 IHR5cGUgKip0eXBlcHRyKQorIAorICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAw KQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCisgICAgIHsKKy0gICAgICBudHlw ZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7CisrICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2Fz X3BhcmVudCAodHlwZSk7CisgICAgICAgaWYgKHR5cGVwdHIpCisgCSp0eXBlcHRyID0gbnR5cGU7 CisgICAgIH0KK0BAIC04MDYsNiArODQ2LDcgQEAgY3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0 eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCisgICAgIFRZUEVfWkFM TE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRzKSk7CisgICBUWVBF X0xPV19CT1VORCAocmVzdWx0X3R5cGUpID0gbG93X2JvdW5kOworICAgVFlQRV9ISUdIX0JPVU5E IChyZXN1bHRfdHlwZSkgPSBoaWdoX2JvdW5kOworKyAgVFlQRV9CWVRFX1NUUklERSAocmVzdWx0 X3R5cGUpID0gMDsKKyAKKyAgIGlmIChsb3dfYm91bmQgPj0gMCkKKyAgICAgVFlQRV9VTlNJR05F RCAocmVzdWx0X3R5cGUpID0gMTsKK0BAIC05MjYsNiArOTY3LDEwIEBAIGdldF9hcnJheV9ib3Vu ZHMgKHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUICpsb3dfYm91bmQsIExPTkdFU1QgKmhpZ2hf Ym91bmQpCisgICByZXR1cm4gMTsKKyB9CisgCisrc3RhdGljIExPTkdFU1QgdHlwZV9sZW5ndGhf Z2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlLAorKwkJCQlp bnQgZnVsbF9zcGFuKTsKICsKLSsgIGlmIChmZCA9PSAtMSkKLSsgICAgewotKyAgICAgIGZkID0g b3BlbiAobmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSk7Ci0rICAgICAgaWYgKGZkID09IC0xKQot Kwl7Ci0rCSAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX3N5c3RlbV9jYWxsKTsKLSsJICByZXR1 cm4gTlVMTDsKLSsJfQotKyAgICB9CiArCi0rICBzZWFyY2guZmlsZW5hbWUgPSBuYW1lOwotKyAg aWYgKGZzdGF0IChmZCwgJnN0KSA8IDApCisgLyogQ3JlYXRlIGFuIGFycmF5IHR5cGUgdXNpbmcg ZWl0aGVyIGEgYmxhbmsgdHlwZSBzdXBwbGllZCBpbgorICAgIFJFU1VMVF9UWVBFLCBvciBjcmVh dGluZyBhIG5ldyB0eXBlLCBpbmhlcml0aW5nIHRoZSBvYmpmaWxlIGZyb20KKyAgICBSQU5HRV9U WVBFLgorQEAgLTk0OSwyNiArOTk0LDMxIEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlw ZSAqcmVzdWx0X3R5cGUsCisgCisgICBUWVBFX0NPREUgKHJlc3VsdF90eXBlKSA9IFRZUEVfQ09E RV9BUlJBWTsKKyAgIFRZUEVfVEFSR0VUX1RZUEUgKHJlc3VsdF90eXBlKSA9IGVsZW1lbnRfdHlw ZTsKKy0gIGlmIChnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93X2JvdW5kLCAm aGlnaF9ib3VuZCkgPCAwKQorLSAgICBsb3dfYm91bmQgPSBoaWdoX2JvdW5kID0gMDsKKy0gIENI RUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7CistICAvKiBCZSBjYXJlZnVsIHdoZW4gc2V0dGlu ZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKKy0gICAgIGVtcHR5IGFycmF5 cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93X2JvdW5kLgor LSAgICAgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUgemVyby4gICov CistICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCkKKy0gICAgVFlQRV9MRU5HVEggKHJlc3Vs dF90eXBlKSA9IDA7CistICBlbHNlCistICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPQor LSAgICAgIFRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBsb3dfYm91 bmQgKyAxKTsKKyAgIFRZUEVfTkZJRUxEUyAocmVzdWx0X3R5cGUpID0gMTsKKyAgIFRZUEVfRklF TERTIChyZXN1bHRfdHlwZSkgPQorICAgICAoc3RydWN0IGZpZWxkICopIFRZUEVfWkFMTE9DIChy ZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgZmllbGQpKTsKKyAgIFRZUEVfSU5ERVhfVFlQRSAo cmVzdWx0X3R5cGUpID0gcmFuZ2VfdHlwZTsKKyAgIFRZUEVfVlBUUl9GSUVMRE5PIChyZXN1bHRf dHlwZSkgPSAtMTsKKyAKKy0gIC8qIFRZUEVfRkxBR19UQVJHRVRfU1RVQiB3aWxsIHRha2UgY2Fy ZSBvZiB6ZXJvIGxlbmd0aCBhcnJheXMuICAqLworKyAgLyogRFdBUkYgYmxvY2tzIG1heSBkZXBl bmQgb24gcnVudGltZSBpbmZvcm1hdGlvbiBsaWtlCisrICAgICBEV19PUF9QVVNIX09CSkVDVF9B RERSRVNTIG5vdCBiZWluZyBhdmFpbGFibGUgZHVyaW5nIHRoZQorKyAgICAgQ1JFQVRFX0FSUkFZ X1RZUEUgdGltZS4gICovCisrICBpZiAoVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93 LmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAorKyAgICAgIHx8IFRZUEVfUkFOR0Vf REFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZCAhPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5U CisrICAgICAgfHwgVFlQRV9EWU5BTUlDIChlbGVtZW50X3R5cGUpKQorKyAgICBUWVBFX0xFTkdU SCAocmVzdWx0X3R5cGUpID0gMDsKKysgIGVsc2UKICsgICAgewotKyAgICAgIC8qIFdlaXJkIHNp dHVhdGlvbiBoZXJlLiAgKi8KLSsgICAgICBzZWFyY2gubXRpbWUgPSAwOworKyAgICAgIENIRUNL X1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7CisrICAgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBl KSA9IHR5cGVfbGVuZ3RoX2dldCAocmVzdWx0X3R5cGUsIGVsZW1lbnRfdHlwZSwKKysJCQkJCQkg ICAwKTsKICsgICAgfQotKyAgZWxzZQotKyAgICBzZWFyY2gubXRpbWUgPSBzdC5zdF9tdGltZTsK LSsKLSsgIC8qIE5vdGUgdGhhdCB0aGlzIG11c3QgY29tcHV0ZSB0aGUgc2FtZSByZXN1bHQgYXMg aGFzaF9iZmQuICAqLwotKyAgaGFzaCA9IGh0YWJfaGFzaF9zdHJpbmcgKG5hbWUpOwotKyAgLyog Tm90ZSB0aGF0IHdlIGNhbm5vdCB1c2UgaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoIGhlcmUsIGJl Y2F1c2UKLSsgICAgIG9wZW5pbmcgdGhlIEJGRCBtYXkgZmFpbDsgYW5kIHRoaXMgd291bGQgdmlv bGF0ZSBoYXNodGFiCi0rICAgICBpbnZhcmlhbnRzLiAgKi8KLSsgIGFiZmQgPSBodGFiX2ZpbmRf d2l0aF9oYXNoIChnZGJfYmZkX2NhY2hlLCAmc2VhcmNoLCBoYXNoKTsKLSsgIGlmIChhYmZkICE9 IE5VTEwpCisgICBpZiAoVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9PSAwKQorLSAgICBUWVBF X1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOwogKyAgICB7Ci0rICAgICAgY2xvc2UgKGZk KTsKLSsgICAgICBnZGJfYmZkX3JlZiAoYWJmZCk7Ci0rICAgICAgcmV0dXJuIGFiZmQ7CisrICAg ICAgLyogVGhlIHJlYWwgc2l6ZSB3aWxsIGJlIGNvbXB1dGVkIGZvciBzcGVjaWZpYyBpbnN0YW5j ZXMgYnkKKysJIENIRUNLX1RZUEVERUYuICAqLworKyAgICAgIFRZUEVfVEFSR0VUX1NUVUIgKHJl c3VsdF90eXBlKSA9IDE7CiArICAgIH0KKyAKKyAgIHJldHVybiByZXN1bHRfdHlwZTsKKyB9CitA QCAtMTQ4OSw2ICsxNTM5LDEwNSBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQgKHZvaWQpCisgICBj b21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oInN0dWIgdHlwZSBoYXMgTlVMTCBuYW1l IikpOworIH0KKyAKKysvKiBDYWxjdWxhdGUgdGhlIG1lbW9yeSBsZW5ndGggb2YgYXJyYXkgVFlQ RS4KICsKLSsgIGFiZmQgPSBiZmRfZm9wZW4gKG5hbWUsIHRhcmdldCwgRk9QRU5fUkIsIGZkKTsK LSsgIGlmIChhYmZkID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgc2xvdCA9IGh0 YWJfZmluZF9zbG90X3dpdGhfaGFzaCAoZ2RiX2JmZF9jYWNoZSwgJnNlYXJjaCwgaGFzaCwgSU5T RVJUKTsKLSsgIGdkYl9hc3NlcnQgKCEqc2xvdCk7Ci0rICAqc2xvdCA9IGFiZmQ7Ci0rCi0rICBn ZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChhYmZkKTsKLSsgIGdkYl9iZmRfcmVmIChhYmZkKTsKLSsg IHJldHVybiBhYmZkOwotK30KKysgICBUQVJHRVRfVFlQRSBzaG91bGQgYmUgc2V0IHRvIGBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSknIGFzCisrICAgYSBwZXJmb3JtYW5j ZSBoaW50LiAgRmVlbCBmcmVlIHRvIHBhc3MgTlVMTC4gIFNldCBGVUxMX1NQQU4gdG8gcmV0dXJu IHRoZQorKyAgIHNpemUgaW5jbC4gdGhlIHBvc3NpYmxlIHBhZGRpbmcgb2YgdGhlIGxhc3QgZWxl bWVudCAtIGl0IG1heSBkaWZmZXIgZnJvbSB0aGUKKysgICBjbGVhcmVkIEZVTExfU1BBTiByZXR1 cm4gdmFsdWUgKHRoZSBleHBlY3RlZCBTSVpFT0YpIGZvciBub24temVybworKyAgIFRZUEVfQllU RV9TVFJJREUgdmFsdWVzLiAgKi8KICsKLSsvKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IHJlbGVh c2VzIGFueSBzZWN0aW9uIGRhdGEgYXR0YWNoZWQgdG8gdGhlCi0rICAgQkZELiAgKi8KLSsKLStz dGF0aWMgdm9pZAotK2ZyZWVfb25lX2JmZF9zZWN0aW9uIChiZmQgKmFiZmQsIGFzZWN0aW9uICpz ZWN0cCwgdm9pZCAqaWdub3JlKQorK3N0YXRpYyBMT05HRVNUCisrdHlwZV9sZW5ndGhfZ2V0IChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlLCBpbnQgZnVsbF9zcGFu KQogK3sKLSsgIHN0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0YSAqc2VjdCA9IGJmZF9nZXRfc2Vj dGlvbl91c2VyZGF0YSAoYWJmZCwgc2VjdHApOworKyAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7 CisrICBMT05HRVNUIGJ5dGVfc3RyaWRlID0gMDsJLyogYD0gMCcgZm9yIGEgZmFsc2UgR0NDIHdh cm5pbmcuICAqLworKyAgTE9OR0VTVCBjb3VudCwgZWxlbWVudF9zaXplLCByZXR2YWw7CiArCi0r ICBpZiAoc2VjdCAhPSBOVUxMICYmIHNlY3QtPmRhdGEgIT0gTlVMTCkKLSsgICAgewotKyNpZmRl ZiBIQVZFX01NQVAKLSsgICAgICBpZiAoc2VjdC0+bWFwX2FkZHIgIT0gTlVMTCkKLSsJewotKwkg IGludCByZXM7CisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkKKysg ICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcpCisrICAgIHJldHVy biBUWVBFX0xFTkdUSCAodHlwZSk7CisrCisrICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdI X0JPVU5EIGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCisrICAgICBGb3J0 cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhl eSBjYW4gYmUKKysgICAgIHplcm8tbGVuZ3RoLiAgKi8KKysgIGlmIChvYmplY3RfYWRkcmVzc19k YXRhX25vdF92YWxpZCAodHlwZSkpCisrICAgIHJldHVybiAwOwogKwotKwkgIHJlcyA9IG11bm1h cCAoc2VjdC0+bWFwX2FkZHIsIHNlY3QtPm1hcF9sZW4pOwotKwkgIGdkYl9hc3NlcnQgKHJlcyA9 PSAwKTsKKysgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOworKyAgaWYgKFRZ UEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkKKysgICAgICB8fCBUWVBFX0hJR0hf Qk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKKysgICAgcmV0dXJuIDA7CisrICBjb3VudCA9 IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlw ZSkgKyAxOworKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Igd3JvbmcgRFdBUkYgYW5ub3RhdGlvbnMg cmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCisrICBpZiAoY291bnQgPCAwKQorKyAgICB3YXJu aW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52YWxpZCBib3VuZHMgJXMuLiVzIiksCisr CSAgICAgVFlQRV9FUlJPUl9OQU1FICh0eXBlKSwgcGxvbmdlc3QgKFRZUEVfTE9XX0JPVU5EIChy YW5nZV90eXBlKSksCisrCSAgICAgcGxvbmdlc3QgKFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlw ZSkpKTsKKysgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBjb3VudCA9PSAwIHJp Z2h0LiAgKi8KKysgIGlmIChjb3VudCA8PSAwKQorKyAgICByZXR1cm4gMDsKKysgIGlmIChmdWxs X3NwYW4gfHwgY291bnQgPiAxKQorKyAgICB7CisrICAgICAgLyogV2UgZG8gbm90IHVzZSBUWVBF X0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBoZXJlIGFzIHdlIHdhbnQgdG8KKysgICAg ICAgICBmb3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCisrICAgICAgYnl0ZV9zdHJpZGUgPSBUWVBF X0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKKysgICAgICBpZiAoYnl0ZV9zdHJpZGUgPT0gMCkK KysgICAgICAgIHsKKysJICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKKysJICAgIHRhcmdldF90 eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOworKwkgIGJ5dGVf c3RyaWRlID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRfdHlwZSwgTlVMTCwgMSk7CiArCX0KLSsg ICAgICBlbHNlCi0rI2VuZGlmCi0rCXhmcmVlIChzZWN0LT5kYXRhKTsKICsgICAgfQotK30KLSsK LSsvKiBDbG9zZSBBQkZELCBhbmQgd2FybiBpZiB0aGF0IGZhaWxzLiAgKi8KLSsKLStzdGF0aWMg aW50Ci0rZ2RiX2JmZF9jbG9zZV9vcl93YXJuIChzdHJ1Y3QgYmZkICphYmZkKQotK3sKLSsgIGlu dCByZXQ7Ci0rICBjaGFyICpuYW1lID0gYmZkX2dldF9maWxlbmFtZSAoYWJmZCk7CiArCi0rICBi ZmRfbWFwX292ZXJfc2VjdGlvbnMgKGFiZmQsIGZyZWVfb25lX2JmZF9zZWN0aW9uLCBOVUxMKTsK LSsKLSsgIHJldCA9IGJmZF9jbG9zZSAoYWJmZCk7Ci0rCi0rICBpZiAoIXJldCkKLSsgICAgd2Fy bmluZyAoXygiY2Fubm90IGNsb3NlIFwiJXNcIjogJXMiKSwKLSsJICAgICBuYW1lLCBiZmRfZXJy bXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsKLSsvKiBT ZWUgZ2RiX2JmZC5oLiAgKi8KLSsKLSt2b2lkCi0rZ2RiX2JmZF9yZWYgKHN0cnVjdCBiZmQgKmFi ZmQpCi0rewotKyAgc3RydWN0IGdkYl9iZmRfZGF0YSAqZ2RhdGE7Ci0rICB2b2lkICoqc2xvdDsK LSsKLSsgIGlmIChhYmZkID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIGdkYXRhID0gYmZk X3VzcmRhdGEgKGFiZmQpOworKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0 aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAorKyAgICAgZXhjZWVkcyBVSU5U X01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAsCisrICAgICAoVUxP TkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0ZWNobmljYWxseSBu b3QgZ3VhcmFudGVlZAorKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZSAoYmVjYXVzZSBp dCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAorKyAgICAgd2l0aCBpdHMgaGlnaC1v cmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3VuZC1sb3dfYm91bmQg aXMKKysgICAgIGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhp Z2hfYm91bmQtbG93X2JvdW5kKzEKKysgICAgIG92ZXJmbG93cywgaXQgb3ZlcmZsb3dzIHRvIDAu ICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8KKysgICAgIGluY3Jl YXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVuc2lnbmVkIGludCB0 byBVTE9OR0VTVC4KKysgICAgICovCiArCi0rICBpZiAoZ2RhdGEgIT0gTlVMTCkKKysgIGlmIChm dWxsX3NwYW4pCiArICAgIHsKLSsgICAgICBnZGF0YS0+cmVmYyArPSAxOwotKyAgICAgIHJldHVy bjsKKysgICAgICByZXR2YWwgPSBjb3VudCAqIGJ5dGVfc3RyaWRlOworKyAgICAgIGlmIChjb3Vu dCA9PSAwIHx8IHJldHZhbCAvIGNvdW50ICE9IGJ5dGVfc3RyaWRlIHx8IHJldHZhbCA+IFVJTlRf TUFYKQorKwlyZXR2YWwgPSAwOworKyAgICAgIHJldHVybiByZXR2YWw7CiArICAgIH0KLSsKLSsg IGdkYXRhID0gYmZkX3phbGxvYyAoYWJmZCwgc2l6ZW9mIChzdHJ1Y3QgZ2RiX2JmZF9kYXRhKSk7 Ci0rICBnZGF0YS0+cmVmYyA9IDE7Ci0rICBnZGF0YS0+bXRpbWUgPSBiZmRfZ2V0X210aW1lIChh YmZkKTsKLSsgIGJmZF91c3JkYXRhIChhYmZkKSA9IGdkYXRhOwotKwotKyAgLyogVGhpcyBpcyB0 aGUgZmlyc3Qgd2UndmUgc2VlbiBpdCwgc28gYWRkIGl0IHRvIHRoZSBoYXNoIHRhYmxlLiAgKi8K LSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAoYWxsX2JmZHMsIGFiZmQsIElOU0VSVCk7Ci0rICBn ZGJfYXNzZXJ0IChzbG90ICYmICEqc2xvdCk7Ci0rICAqc2xvdCA9IGFiZmQ7CisrICBpZiAodGFy Z2V0X3R5cGUgPT0gTlVMTCkKKysgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICBlbGVtZW50X3NpemUgPSB0eXBlX2xlbmd0aF9nZXQg KHRhcmdldF90eXBlLCBOVUxMLCAxKTsKKysgIHJldHZhbCA9IChjb3VudCAtIDEpICogYnl0ZV9z dHJpZGUgKyBlbGVtZW50X3NpemU7CisrICBpZiAocmV0dmFsIDwgZWxlbWVudF9zaXplCisrICAg ICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKKysgICAgICAgICAgJiYgKHJldHZhbCAtIGVsZW1lbnRf c2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3VudCAtIDEpCisrICAgICAgfHwgcmV0dmFsID4gVUlO VF9NQVgpCisrICAgIHJldHZhbCA9IDA7CisrICByZXR1cm4gcmV0dmFsOwogK30KICsKLSsvKiBT ZWUgZ2RiX2JmZC5oLiAgKi8KKysvKiBQcmVwYXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBi eSB0aGUgYmFja2VuZC4gIEN1cnJlbnRseSB0aGlzIGZ1bmN0aW9uCisrICAgb25seSBwcm9wYWdh dGVzIHRoZSBUWVBFX0RZTkFNSUMgZmxhZy4gICovCiArCiArdm9pZAotK2dkYl9iZmRfdW5yZWYg KHN0cnVjdCBiZmQgKmFiZmQpCisrZmluYWxpemVfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpCiAr ewotKyAgc3RydWN0IGdkYl9iZmRfZGF0YSAqZ2RhdGE7Ci0rICBzdHJ1Y3QgZ2RiX2JmZF9jYWNo ZV9zZWFyY2ggc2VhcmNoOwotKyAgdm9pZCAqKnNsb3Q7Ci0rCi0rICBpZiAoYWJmZCA9PSBOVUxM KQotKyAgICByZXR1cm47Ci0rCi0rICBnZGF0YSA9IGJmZF91c3JkYXRhIChhYmZkKTsKLSsgIGdk Yl9hc3NlcnQgKGdkYXRhLT5yZWZjID49IDEpOwotKwotKyAgZ2RhdGEtPnJlZmMgLT0gMTsKLSsg IGlmIChnZGF0YS0+cmVmYyA+IDApCi0rICAgIHJldHVybjsKLSsKLSsgIHNlYXJjaC5maWxlbmFt ZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOwotKwotKyAgaWYgKGdkYl9iZmRfY2FjaGUgJiYg c2VhcmNoLmZpbGVuYW1lKQotKyAgICB7Ci0rICAgICAgaGFzaHZhbF90IGhhc2ggPSBodGFiX2hh c2hfc3RyaW5nIChzZWFyY2guZmlsZW5hbWUpOwotKyAgICAgIHZvaWQgKipzbG90OwotKwotKyAg ICAgIHNlYXJjaC5tdGltZSA9IGdkYXRhLT5tdGltZTsKLSsgICAgICBzbG90ID0gaHRhYl9maW5k X3Nsb3Rfd2l0aF9oYXNoIChnZGJfYmZkX2NhY2hlLCAmc2VhcmNoLCBoYXNoLAotKwkJCQkgICAg ICAgTk9fSU5TRVJUKTsKLSsKLSsgICAgICBpZiAoc2xvdCAmJiAqc2xvdCkKLSsJaHRhYl9jbGVh cl9zbG90IChnZGJfYmZkX2NhY2hlLCBzbG90KTsKLSsgICAgfQotKwotKyAgYmZkX3VzcmRhdGEg KGFiZmQpID0gTlVMTDsgIC8qIFBhcmFub2lhLiAgKi8KKysgIGludCBpOwogKwotKyAgaHRhYl9y ZW1vdmVfZWx0IChhbGxfYmZkcywgYWJmZCk7CisrICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklF TERTICh0eXBlKTsgKytpKQorKyAgICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSAmJiBU WVBFX0RZTkFNSUMgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpKQorKyAgICAgIGJyZWFrOwog KwotKyAgZ2RiX2JmZF9jbG9zZV9vcl93YXJuIChhYmZkKTsKKysgIC8qIEZJWE1FOiBjcGx1c19z dHVmZiBpcyBpZ25vcmVkIGhlcmUuICAqLworKyAgaWYgKGkgPCBUWVBFX05GSUVMRFMgKHR5cGUp CisrICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChU WVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKKysgICAgICB8fCAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpKQorKyAgICBU WVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKICt9CiArCi0rLyogQSBoZWxwZXIgZnVuY3Rpb24gdGhh dCByZXR1cm5zIHRoZSBzZWN0aW9uIGRhdGEgZGVzY3JpcHRvcgotKyAgIGFzc29jaWF0ZWQgd2l0 aCBTRUNUSU9OLiAgSWYgbm8gc3VjaCBkZXNjcmlwdG9yIGV4aXN0cywgYSBuZXcgb25lCi0rICAg aXMgYWxsb2NhdGVkIGFuZCBjbGVhcmVkLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGdkYl9iZmRf c2VjdGlvbl9kYXRhICoKLStnZXRfc2VjdGlvbl9kZXNjcmlwdG9yIChhc2VjdGlvbiAqc2VjdGlv bikKLSt7Ci0rICBzdHJ1Y3QgZ2RiX2JmZF9zZWN0aW9uX2RhdGEgKnJlc3VsdDsKLSsKLSsgIHJl c3VsdCA9IGJmZF9nZXRfc2VjdGlvbl91c2VyZGF0YSAoc2VjdGlvbi0+b3duZXIsIHNlY3Rpb24p OwotKwotKyAgaWYgKHJlc3VsdCA9PSBOVUxMKQorIC8qIEZpbmQgdGhlIHJlYWwgdHlwZSBvZiBU WVBFLiAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZWFsIHR5cGUsCisgICAgYWZ0ZXIgcmVt b3ZpbmcgYWxsIGxheWVycyBvZiB0eXBlZGVmcywgYW5kIGNvbXBsZXRpbmcgb3BhcXVlIG9yIHN0 dWIKKyAgICB0eXBlcy4gIENvbXBsZXRpb24gY2hhbmdlcyB0aGUgVFlQRSBhcmd1bWVudCwgYnV0 IHN0cmlwcGluZyBvZgorQEAgLTE2NTUsNTIgKzE4MDQsMzcgQEAgY2hlY2tfdHlwZWRlZiAoc3Ry dWN0IHR5cGUgKnR5cGUpCisgICAgICAgICB9CisgICAgIH0KKyAKKy0gIGlmIChUWVBFX1RBUkdF VF9TVFVCICh0eXBlKSkKKysgIC8qIGNvcHlfdHlwZV9yZWN1cnNpdmUgYXV0b21hdGljYWxseSBt YWtlcyB0aGUgcmVzdWx0aW5nIHR5cGUgY29udGFpbmluZyBvbmx5CisrICAgICBjb25zdGFudCB2 YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4gICovCisrICBp ZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKICsgICAgewotKyAgICAgIHJlc3VsdCA9IGJmZF96YWxs b2MgKHNlY3Rpb24tPm93bmVyLCBzaXplb2YgKCpyZXN1bHQpKTsKLSsgICAgICBiZmRfc2V0X3Nl Y3Rpb25fdXNlcmRhdGEgKHNlY3Rpb24tPm93bmVyLCBzZWN0aW9uLCByZXN1bHQpOwotKyAgICB9 Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KKysgICAgICBodGFiX3QgY29waWVkX3R5cGVzOwog KwotKy8qIERlY29tcHJlc3MgYSBzZWN0aW9uIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgemxp Yi4gIFN0b3JlIHRoZQotKyAgIGRlY29tcHJlc3NlZCBidWZmZXIsIGFuZCBpdHMgc2l6ZSwgaW4g REVTQ1JJUFRPUi4gICovCisrICAgICAgY29waWVkX3R5cGVzID0gY3JlYXRlX2NvcGllZF90eXBl c19oYXNoIChOVUxMKTsKKysgICAgICB0eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAodHlwZSwg Y29waWVkX3R5cGVzKTsKKysgICAgICBodGFiX2RlbGV0ZSAoY29waWVkX3R5cGVzKTsKICsKLStz dGF0aWMgdm9pZAotK3psaWJfZGVjb21wcmVzc19zZWN0aW9uIChhc2VjdGlvbiAqc2VjdHAsCi0r CQkJIHN0cnVjdCBnZGJfYmZkX3NlY3Rpb25fZGF0YSAqZGVzY3JpcHRvcikKLSt7Ci0rICBiZmQg KmFiZmQgPSBzZWN0cC0+b3duZXI7Ci0rI2lmbmRlZiBIQVZFX1pMSUJfSAotKyAgZXJyb3IgKF8o IlN1cHBvcnQgZm9yIHpsaWItY29tcHJlc3NlZCBkYXRhIChmcm9tICclcycsIHNlY3Rpb24gJyVz JykgIgotKyAgICAgICAgICAgImlzIGRpc2FibGVkIGluIHRoaXMgY29weSBvZiBHREIiKSwKLSsg ICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKLSsJIGJmZF9nZXRfc2VjdGlvbl9uYW1l IChzZWN0cCkpOwotKyNlbHNlCi0rICBiZmRfc2l6ZV90eXBlIGNvbXByZXNzZWRfc2l6ZSA9IGJm ZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCk7Ci0rICBnZGJfYnl0ZSAqY29tcHJlc3NlZF9idWZm ZXIgPSB4bWFsbG9jIChjb21wcmVzc2VkX3NpemUpOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFu dXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBjb21wcmVzc2VkX2J1ZmZlcik7Ci0rICBzdHJ1Y3Qg Y2xlYW51cCAqaW5uZXJfY2xlYW51cDsKLSsgIGJmZF9zaXplX3R5cGUgdW5jb21wcmVzc2VkX3Np emU7Ci0rICBnZGJfYnl0ZSAqdW5jb21wcmVzc2VkX2J1ZmZlcjsKLSsgIHpfc3RyZWFtIHN0cm07 Ci0rICBpbnQgcmM7Ci0rICBpbnQgaGVhZGVyX3NpemUgPSAxMjsKLSsgIHN0cnVjdCBkd2FyZjJf cGVyX2JmZF9zZWN0aW9uICpzZWN0aW9uX2RhdGE7Ci0rCi0rICBpZiAoYmZkX3NlZWsgKGFiZmQs IHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgIT0gMAotKyAgICAgIHx8IGJmZF9icmVhZCAoY29t cHJlc3NlZF9idWZmZXIsCi0rCQkgICAgY29tcHJlc3NlZF9zaXplLCBhYmZkKSAhPSBjb21wcmVz c2VkX3NpemUpCi0rICAgIGVycm9yIChfKCJjYW4ndCByZWFkIGRhdGEgZnJvbSAnJXMnLCBzZWN0 aW9uICclcyciKSwKLSsgICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLAotKwkgICBi ZmRfZ2V0X3NlY3Rpb25fbmFtZSAoYWJmZCwgc2VjdHApKTsKLSsKLSsgIC8qIFJlYWQgdGhlIHps aWIgaGVhZGVyLiAgSW4gdGhpcyBjYXNlLCBpdCBzaG91bGQgYmUgIlpMSUIiIGZvbGxvd2VkCi0r ICAgICBieSB0aGUgdW5jb21wcmVzc2VkIHNlY3Rpb24gc2l6ZSwgOCBieXRlcyBpbiBiaWctZW5k aWFuIG9yZGVyLiAgKi8KLSsgIGlmIChjb21wcmVzc2VkX3NpemUgPCBoZWFkZXJfc2l6ZQotKyAg ICAgIHx8IHN0cm5jbXAgKGNvbXByZXNzZWRfYnVmZmVyLCAiWkxJQiIsIDQpICE9IDApCi0rICAg IGVycm9yIChfKCJjb3JydXB0IFpMSUIgaGVhZGVyIGZyb20gJyVzJywgc2VjdGlvbiAnJXMnIiks Ci0rICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKLSsJICAgYmZkX2dldF9zZWN0 aW9uX25hbWUgKGFiZmQsIHNlY3RwKSk7Ci0rICB1bmNvbXByZXNzZWRfc2l6ZSA9IGNvbXByZXNz ZWRfYnVmZmVyWzRdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsgIHVuY29tcHJlc3NlZF9z aXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzVdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsg IHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzZdOyB1bmNvbXByZXNzZWRf c2l6ZSA8PD0gODsKLSsgIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzdd OyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsgIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXBy ZXNzZWRfYnVmZmVyWzhdOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsKLSsgIHVuY29tcHJlc3Nl ZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzldOyB1bmNvbXByZXNzZWRfc2l6ZSA8PD0gODsK LSsgIHVuY29tcHJlc3NlZF9zaXplICs9IGNvbXByZXNzZWRfYnVmZmVyWzEwXTsgdW5jb21wcmVz c2VkX3NpemUgPDw9IDg7Ci0rICB1bmNvbXByZXNzZWRfc2l6ZSArPSBjb21wcmVzc2VkX2J1ZmZl clsxMV07Ci0rCi0rICAvKiBJdCBpcyBwb3NzaWJsZSB0aGUgc2VjdGlvbiBjb25zaXN0cyBvZiBz ZXZlcmFsIGNvbXByZXNzZWQKLSsgICAgIGJ1ZmZlcnMgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyLCBz byB3ZSB1bmNvbXByZXNzIGluIGEgbG9vcC4gICovCi0rICBzdHJtLnphbGxvYyA9IE5VTEw7Ci0r ICBzdHJtLnpmcmVlID0gTlVMTDsKLSsgIHN0cm0ub3BhcXVlID0gTlVMTDsKLSsgIHN0cm0uYXZh aWxfaW4gPSBjb21wcmVzc2VkX3NpemUgLSBoZWFkZXJfc2l6ZTsKLSsgIHN0cm0ubmV4dF9pbiA9 IChCeXRlZiopIGNvbXByZXNzZWRfYnVmZmVyICsgaGVhZGVyX3NpemU7Ci0rICBzdHJtLmF2YWls X291dCA9IHVuY29tcHJlc3NlZF9zaXplOwotKyAgdW5jb21wcmVzc2VkX2J1ZmZlciA9IHhtYWxs b2MgKHVuY29tcHJlc3NlZF9zaXplKTsKLSsgIGlubmVyX2NsZWFudXAgPSBtYWtlX2NsZWFudXAg KHhmcmVlLCB1bmNvbXByZXNzZWRfYnVmZmVyKTsKLSsgIHJjID0gaW5mbGF0ZUluaXQgKCZzdHJt KTsKLSsgIHdoaWxlIChzdHJtLmF2YWlsX2luID4gMCkKLSsgICAgewotKyAgICAgIGlmIChyYyAh PSBaX09LKQotKyAgICAgICAgZXJyb3IgKF8oInNldHRpbmcgdXAgdW5jb21wcmVzc2lvbiBpbiAn JXMnLCBzZWN0aW9uICclcyc6ICVkIiksCi0rICAgICAgICAgICAgICAgYmZkX2dldF9maWxlbmFt ZSAoYWJmZCksCi0rCSAgICAgICBiZmRfZ2V0X3NlY3Rpb25fbmFtZSAoYWJmZCwgc2VjdHApLAot KwkgICAgICAgcmMpOwotKyAgICAgIHN0cm0ubmV4dF9vdXQgPSAoKEJ5dGVmKikgdW5jb21wcmVz c2VkX2J1ZmZlcgotKyAgICAgICAgICAgICAgICAgICAgICAgKyAodW5jb21wcmVzc2VkX3NpemUg LSBzdHJtLmF2YWlsX291dCkpOwotKyAgICAgIHJjID0gaW5mbGF0ZSAoJnN0cm0sIFpfRklOSVNI KTsKLSsgICAgICBpZiAocmMgIT0gWl9TVFJFQU1fRU5EKQotKyAgICAgICAgZXJyb3IgKF8oInps aWIgZXJyb3IgdW5jb21wcmVzc2luZyBmcm9tICclcycsIHNlY3Rpb24gJyVzJzogJWQiKSwKLSsg ICAgICAgICAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwKLSsJICAgICAgIGJmZF9nZXRf c2VjdGlvbl9uYW1lIChhYmZkLCBzZWN0cCksCi0rCSAgICAgICByYyk7Ci0rICAgICAgcmMgPSBp bmZsYXRlUmVzZXQgKCZzdHJtKTsKKysgICAgICBnZGJfYXNzZXJ0IChUWVBFX0RZTkFNSUMgKHR5 cGUpID09IDApOworKyAgICAgIC8qIEZvcmNlIFRZUEVfTEVOR1RIICh0eXBlKSByZWNhbGN1bGF0 aW9uLiAgKi8KKysgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKICsgICAgfQotKyAgcmMg PSBpbmZsYXRlRW5kICgmc3RybSk7Ci0rICBpZiAocmMgIT0gWl9PSwotKyAgICAgIHx8IHN0cm0u YXZhaWxfb3V0ICE9IDApCi0rICAgIGVycm9yIChfKCJjb25jbHVkaW5nIHVuY29tcHJlc3Npb24g aW4gJyVzJywgc2VjdGlvbiAnJXMnOiAlZCIpLAotKyAgICAgICAgICAgYmZkX2dldF9maWxlbmFt ZSAoYWJmZCksCi0rCSAgIGJmZF9nZXRfc2VjdGlvbl9uYW1lIChhYmZkLCBzZWN0cCksCi0rCSAg IHJjKTsKLSsKLSsgIGRpc2NhcmRfY2xlYW51cHMgKGlubmVyX2NsZWFudXApOwotKyAgZG9fY2xl YW51cHMgKGNsZWFudXApOwotKwotKyAgLyogQXR0YWNoIHRoZSBkYXRhIHRvIHRoZSBCRkQgc2Vj dGlvbi4gICovCi0rICBkZXNjcmlwdG9yLT5kYXRhID0gdW5jb21wcmVzc2VkX2J1ZmZlcjsKLSsg IGRlc2NyaXB0b3ItPnNpemUgPSB1bmNvbXByZXNzZWRfc2l6ZTsKLSsjZW5kaWYKLSt9Ci0rCi0r LyogU2VlIGdkYl9iZmQuaC4gICovCi0rCi0rY29uc3QgZ2RiX2J5dGUgKgotK2dkYl9iZmRfbWFw X3NlY3Rpb24gKGFzZWN0aW9uICpzZWN0cCwgYmZkX3NpemVfdHlwZSAqc2l6ZSkKLSt7Ci0rICBi ZmQgKmFiZmQ7Ci0rICBnZGJfYnl0ZSAqYnVmLCAqcmV0YnVmOwotKyAgdW5zaWduZWQgY2hhciBo ZWFkZXJbNF07Ci0rICBzdHJ1Y3QgZ2RiX2JmZF9zZWN0aW9uX2RhdGEgKmRlc2NyaXB0b3I7Ci0r Ci0rICBnZGJfYXNzZXJ0ICgoc2VjdHAtPmZsYWdzICYgU0VDX1JFTE9DKSA9PSAwKTsKLSsgIGdk Yl9hc3NlcnQgKHNpemUgIT0gTlVMTCk7Ci0rCi0rICBhYmZkID0gc2VjdHAtPm93bmVyOwotKwot KyAgZGVzY3JpcHRvciA9IGdldF9zZWN0aW9uX2Rlc2NyaXB0b3IgKHNlY3RwKTsKICsKLSsgIC8q IElmIHRoZSBkYXRhIHdhcyBhbHJlYWR5IHJlYWQgZm9yIHRoaXMgQkZELCBqdXN0IHJldXNlIGl0 LiAgKi8KLSsgIGlmIChkZXNjcmlwdG9yLT5kYXRhICE9IE5VTEwpCi0rICAgIGdvdG8gZG9uZTsK LSsKLSsgIC8qIENoZWNrIGlmIHRoZSBmaWxlIGhhcyBhIDQtYnl0ZSBoZWFkZXIgaW5kaWNhdGlu ZyBjb21wcmVzc2lvbi4gICovCi0rICBpZiAoYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKSA+ IHNpemVvZiAoaGVhZGVyKQotKyAgICAgICYmIGJmZF9zZWVrIChhYmZkLCBzZWN0cC0+ZmlsZXBv cywgU0VFS19TRVQpID09IDAKLSsgICAgICAmJiBiZmRfYnJlYWQgKGhlYWRlciwgc2l6ZW9mICho ZWFkZXIpLCBhYmZkKSA9PSBzaXplb2YgKGhlYWRlcikpCisrICBpZiAoVFlQRV9UQVJHRVRfU1RV QiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKKyAgICAgeworLSAgICAgIHN0cnVjdCB0 eXBlICpyYW5nZV90eXBlOworICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKyAKKysgICAgICBpZiAoVFlQRV9E WU5BTUlDICh0eXBlKSkKKysJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0YXJnZXRfdHlwZTsK KyAgICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9UQVJHRVRfU1RVQiAo dGFyZ2V0X3R5cGUpKQorIAl7CisgCSAgLyogTm90aGluZyB3ZSBjYW4gZG8uICAqLworIAl9Cisg ICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKKy0JICAg ICAgICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQorLQkgICAgICAgJiYgKFRZUEVfQ09ERSAo cmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCistCQkgICA9PSBUWVBFX0NPREVf UkFOR0UpKQorKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5H KQorIAl7CisgCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBl LCBiYXNlZCBvbiBpdHMKKy0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQg dHlwZSdzIGxlbmd0aC4KKy0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMg d2hlcmUgdGhlIGhpZ2ggYm91bmQKKy0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3Vu ZC4gICovCistCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAocmFu Z2VfdHlwZSk7CistCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQRV9ISUdIX0JPVU5E IChyYW5nZV90eXBlKTsKKy0JICBVTE9OR0VTVCBsZW47CistCistCSAgaWYgKGhpZ2hfYm91bmQg PCBsb3dfYm91bmQpCistCSAgICBsZW4gPSAwOworLQkgIGVsc2UKKy0JICAgIHsKKy0JICAgICAg LyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJl IDAKKy0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29kZSBiZWxvdyBh c3N1bWVzCistCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNU X01BWCArIDEsCistCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQgYnkgQywg YnV0IGlzIHVzdWFsbHkgdHJ1ZQorLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3 ZXJlIHVuc2lnbmVkIHdpdGggaXRzCistCQkgaGlnaC1vcmRlciBiaXQgb24pLiAgSXQgdXNlcyB0 aGUgZmFjdCB0aGF0CistCQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJlcHJlc2Vu dGFibGUgaW4KKy0JCSBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsx IG92ZXJmbG93cywKKy0JCSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNl IHRlc3RzIGlmIHdlIAorLQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24g b2YgVFlQRV9MRU5HVEgKKy0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gICovCist CSAgICAgIFVMT05HRVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3VuZDsKKy0J ICAgICAgVUxPTkdFU1QgdGxlbiA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7CistCistCSAg ICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7CistCSAgICAgIGlmICh0bGVuID09 IDAgfHwgKGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCistCQkgIHx8IGxlbiA+IFVJ TlRfTUFYKQorLQkJbGVuID0gMDsKKy0JICAgIH0KKy0JICBUWVBFX0xFTkdUSCAodHlwZSkgPSBs ZW47CisrCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0IHR5cGUncyBsZW5n dGguICAqLworKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVfbGVuZ3RoX2dldCAodHlwZSwg dGFyZ2V0X3R5cGUsIDApOworIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKKyAJfQor ICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQorQEAg LTE3MDgsNiArMTg0Miw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQorIAkg IFRZUEVfTEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7CisgCSAgVFlQ RV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOworIAl9CisrICAgICAgVFlQRV9EWU5BTUlDICh0eXBl KSA9IDA7CisgICAgIH0KKyAKKyAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBlICh0eXBlLCBp bnN0YW5jZV9mbGFncywgTlVMTCk7CitAQCAtMzM4NywzMyArMzUyMiw0MiBAQCB0eXBlX3BhaXJf ZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKKyB9CisgCisg LyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRv IHdhbGsKKy0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklMRSdzIG9i c3RhY2ssIGJlY2F1c2UKKy0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICAqLwor KyAgIHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLworIAorIGh0YWJfdAorIGNyZWF0ZV9j b3BpZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgeworLSAgcmV0dXJu IGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAor LQkJCSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorLQkJCSAgICAgICBo YXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCistCQkJICAgICAgIGR1bW15X29ic3RhY2tfZGVhbGxv Y2F0ZSk7CisrICBpZiAob2JqZmlsZSA9PSBOVUxMKQogKyAgICB7Ci0rICAgICAgLyogVXBvbiBk ZWNvbXByZXNzaW9uLCB1cGRhdGUgdGhlIGJ1ZmZlciBhbmQgaXRzIHNpemUuICAqLwotKyAgICAg IGlmIChzdHJuY21wIChoZWFkZXIsICJaTElCIiwgc2l6ZW9mIChoZWFkZXIpKSA9PSAwKQotKyAg ICAgICAgewotKyAgICAgICAgICB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc2VjdHAsIGRlc2Ny aXB0b3IpOwotKwkgIGdvdG8gZG9uZTsKLSsgICAgICAgIH0KKysgICAgICAvKiBOVUxMIE9CSkZJ TEUgaXMgZm9yIFRZUEVfRFlOQU1JQyB0eXBlcyBhbHJlYWR5IGNvbnRhaW5lZCBpbgorKwkgT0JK RklMRV9NQUxMT0MgbWVtb3J5LCBzdWNoIGFzIHRob3NlIGZyb20gVkFMVUVfSElTVE9SWV9DSEFJ Ti4gIFRhYmxlCisrCSBlbGVtZW50IGVudHJpZXMgZ2V0IGFsbG9jYXRlZCBieSB4bWFsbG9jIC0g c28gdXNlIHhmcmVlLiAgKi8KKysgICAgICByZXR1cm4gaHRhYl9jcmVhdGUgKDEsIHR5cGVfcGFp cl9oYXNoLCB0eXBlX3BhaXJfZXEsIHhmcmVlKTsKICsgICAgfQotKwotKyNpZmRlZiBIQVZFX01N QVAKLSsgIHsKLSsgICAgLyogVGhlIHBhZ2Ugc2l6ZSwgdXNlZCB3aGVuIG1tYXBwaW5nLiAgKi8K LSsgICAgc3RhdGljIGludCBwYWdlc2l6ZTsKLSsKLSsgICAgaWYgKHBhZ2VzaXplID09IDApCi0r ICAgICAgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSAoKTsKLSsKLSsgICAgLyogT25seSB0cnkgdG8g bW1hcCBzZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50Ci0rICAg ICAgIHRvIHdhc3RlIHNwYWNlIGR1ZSB0byBmcmFnbWVudGF0aW9uLiAgKi8KLSsKLSsgICAgaWYg KGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCkgPiA0ICogcGFnZXNpemUpCi0rICAgICAgewot KwlkZXNjcmlwdG9yLT5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSsJZGVz Y3JpcHRvci0+ZGF0YSA9IGJmZF9tbWFwIChhYmZkLCAwLCBkZXNjcmlwdG9yLT5zaXplLCBQUk9U X1JFQUQsCi0rCQkJCSAgICAgTUFQX1BSSVZBVEUsIHNlY3RwLT5maWxlcG9zLAotKwkJCQkgICAg ICZkZXNjcmlwdG9yLT5tYXBfYWRkciwKLSsJCQkJICAgICAmZGVzY3JpcHRvci0+bWFwX2xlbik7 Ci0rCi0rCWlmICgoY2FkZHJfdClkZXNjcmlwdG9yLT5kYXRhICE9IE1BUF9GQUlMRUQpCi0rCSAg ewotKyNpZiBIQVZFX1BPU0lYX01BRFZJU0UKLSsJICAgIHBvc2l4X21hZHZpc2UgKGRlc2NyaXB0 b3ItPm1hcF9hZGRyLCBkZXNjcmlwdG9yLT5tYXBfbGVuLAotKwkJCSAgIFBPU0lYX01BRFZfV0lM TE5FRUQpOwotKyNlbmRpZgotKwkgICAgZ290byBkb25lOwotKwkgIH0KLSsKLSsJLyogT24gZmFp bHVyZSwgY2xlYXIgb3V0IHRoZSBzZWN0aW9uIGRhdGEgYW5kIHRyeSBhZ2Fpbi4gICovCi0rCW1l bXNldCAoZGVzY3JpcHRvciwgMCwgc2l6ZW9mICgqZGVzY3JpcHRvcikpOwotKyAgICAgIH0KLSsg IH0KLSsjZW5kaWYgLyogSEFWRV9NTUFQICovCi0rCi0rICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2Ug YXJlIGEgbm9ybWFsLCBub3QtY29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KLSsKLSsgIGRlc2NyaXB0 b3ItPnNpemUgPSBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAoc2VjdHApOwotKyAgZGVzY3JpcHRvci0+ ZGF0YSA9IHhtYWxsb2MgKGRlc2NyaXB0b3ItPnNpemUpOwotKwotKyAgaWYgKGJmZF9zZWVrIChh YmZkLCBzZWN0cC0+ZmlsZXBvcywgU0VFS19TRVQpICE9IDAKLSsgICAgICB8fCBiZmRfYnJlYWQg KGRlc2NyaXB0b3ItPmRhdGEsIGJmZF9nZXRfc2VjdGlvbl9zaXplIChzZWN0cCksCi0rCQkgICAg YWJmZCkgIT0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKSkKKysgIGVsc2UKICsgICAgewot KyAgICAgIHhmcmVlIChkZXNjcmlwdG9yLT5kYXRhKTsKLSsgICAgICBkZXNjcmlwdG9yLT5kYXRh ID0gTlVMTDsKLSsgICAgICBlcnJvciAoXygiQ2FuJ3QgcmVhZCBkYXRhIGZvciBzZWN0aW9uICcl cyciKSwKLSsJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rICAgIH0KLSsKLSsgZG9u ZToKLSsgIGdkYl9hc3NlcnQgKGRlc2NyaXB0b3ItPmRhdGEgIT0gTlVMTCk7Ci0rICAqc2l6ZSA9 IGRlc2NyaXB0b3ItPnNpemU7Ci0rICByZXR1cm4gZGVzY3JpcHRvci0+ZGF0YTsKLSt9Ci0rCi0r DAotKwotKy8qIFNlZSBnZGJfYmZkLmguICAqLwotKwotK2JmZCAqCi0rZ2RiX2JmZF9mb3BlbiAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwgY29uc3QgY2hhciAqbW9k ZSwKLSsJICAgICAgIGludCBmZCkKLSt7Ci0rICBiZmQgKnJlc3VsdCA9IGJmZF9mb3BlbiAoZmls ZW5hbWUsIHRhcmdldCwgbW9kZSwgZmQpOwotKwotKyAgaWYgKHJlc3VsdCkKLSsgICAgewotKyAg ICAgIGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUgKHJlc3VsdCk7Ci0rICAgICAgZ2RiX2JmZF9yZWYg KHJlc3VsdCk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKy8qIFNlZSBn ZGJfYmZkLmguICAqLwotKwotK2JmZCAqCi0rZ2RiX2JmZF9vcGVuciAoY29uc3QgY2hhciAqZmls ZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCkKLSt7Ci0rICBiZmQgKnJlc3VsdCA9IGJmZF9vcGVu ciAoZmlsZW5hbWUsIHRhcmdldCk7Ci0rCi0rICBpZiAocmVzdWx0KQotKyAgICB7Ci0rICAgICAg Z2RiX2JmZF9zdGFzaF9maWxlbmFtZSAocmVzdWx0KTsKLSsgICAgICBnZGJfYmZkX3JlZiAocmVz dWx0KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLyogU2VlIGdkYl9i ZmQuaC4gICovCi0rCi0rYmZkICoKLStnZGJfYmZkX29wZW53IChjb25zdCBjaGFyICpmaWxlbmFt ZSwgY29uc3QgY2hhciAqdGFyZ2V0KQotK3sKLSsgIGJmZCAqcmVzdWx0ID0gYmZkX29wZW53IChm aWxlbmFtZSwgdGFyZ2V0KTsKLSsKLSsgIGlmIChyZXN1bHQpCi0rICAgIHsKLSsgICAgICBnZGJf YmZkX3N0YXNoX2ZpbGVuYW1lIChyZXN1bHQpOwotKyAgICAgIGdkYl9iZmRfcmVmIChyZXN1bHQp OwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsvKiBTZWUgZ2RiX2JmZC5o LiAgKi8KLSsKLStiZmQgKgotK2dkYl9iZmRfb3BlbnJfaW92ZWMgKGNvbnN0IGNoYXIgKmZpbGVu YW1lLCBjb25zdCBjaGFyICp0YXJnZXQsCi0rCQkgICAgIHZvaWQgKigqb3Blbl9mdW5jKSAoc3Ry dWN0IGJmZCAqbmJmZCwKLSsJCQkJCSB2b2lkICpvcGVuX2Nsb3N1cmUpLAotKwkJICAgICB2b2lk ICpvcGVuX2Nsb3N1cmUsCi0rCQkgICAgIGZpbGVfcHRyICgqcHJlYWRfZnVuYykgKHN0cnVjdCBi ZmQgKm5iZmQsCi0rCQkJCQkgICAgIHZvaWQgKnN0cmVhbSwKLSsJCQkJCSAgICAgdm9pZCAqYnVm LAotKwkJCQkJICAgICBmaWxlX3B0ciBuYnl0ZXMsCi0rCQkJCQkgICAgIGZpbGVfcHRyIG9mZnNl dCksCi0rCQkgICAgIGludCAoKmNsb3NlX2Z1bmMpIChzdHJ1Y3QgYmZkICpuYmZkLAotKwkJCQkJ dm9pZCAqc3RyZWFtKSwKLSsJCSAgICAgaW50ICgqc3RhdF9mdW5jKSAoc3RydWN0IGJmZCAqYWJm ZCwKLSsJCQkJICAgICAgIHZvaWQgKnN0cmVhbSwKLSsJCQkJICAgICAgIHN0cnVjdCBzdGF0ICpz YikpCi0rewotKyAgYmZkICpyZXN1bHQgPSBiZmRfb3BlbnJfaW92ZWMgKGZpbGVuYW1lLCB0YXJn ZXQsCi0rCQkJCSBvcGVuX2Z1bmMsIG9wZW5fY2xvc3VyZSwKLSsJCQkJIHByZWFkX2Z1bmMsIGNs b3NlX2Z1bmMsIHN0YXRfZnVuYyk7Ci0rCi0rICBpZiAocmVzdWx0KQotKyAgICB7Ci0rICAgICAg Z2RiX2JmZF9yZWYgKHJlc3VsdCk7Ci0rICAgICAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAocmVz dWx0KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9Ci0rCi0rLyogU2VlIGdkYl9i ZmQuaC4gICovCi0rCi0rYmZkICoKLStnZGJfYmZkX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSAo YmZkICphcmNoaXZlLCBiZmQgKnByZXZpb3VzKQotK3sKLSsgIGJmZCAqcmVzdWx0ID0gYmZkX29w ZW5yX25leHRfYXJjaGl2ZWRfZmlsZSAoYXJjaGl2ZSwgcHJldmlvdXMpOwotKwotKyAgaWYgKHJl c3VsdCkKLSsgICAgewotKyAgICAgIGdkYl9iZmRfcmVmIChyZXN1bHQpOwotKyAgICAgIC8qIE5v IG5lZWQgdG8gc3Rhc2ggdGhlIGZpbGVuYW1lIGhlcmUuICAqLwotKyAgICB9Ci0rCi0rICByZXR1 cm4gcmVzdWx0OwotK30KLSsKLSsvKiBTZWUgZ2RiX2JmZC5oLiAgKi8KLSsKLStiZmQgKgotK2dk Yl9iZmRfZmRvcGVuciAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwg aW50IGZkKQotK3sKLSsgIGJmZCAqcmVzdWx0ID0gYmZkX2Zkb3BlbnIgKGZpbGVuYW1lLCB0YXJn ZXQsIGZkKTsKLSsKLSsgIGlmIChyZXN1bHQpCi0rICAgIHsKLSsgICAgICBnZGJfYmZkX3JlZiAo cmVzdWx0KTsKLSsgICAgICBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lIChyZXN1bHQpOwotKyAgICB9 Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsKLSsMCi0rCi0rLyogQSBjYWxsYmFjayBmb3Ig aHRhYl90cmF2ZXJzZSB0aGF0IHByaW50cyBhIHNpbmdsZSBCRkQuICAqLwotKwotK3N0YXRpYyBp bnQKLStwcmludF9vbmVfYmZkICh2b2lkICoqc2xvdCwgdm9pZCAqZGF0YSkKLSt7Ci0rICBiZmQg KmFiZmQgPSAqc2xvdDsKLSsgIHN0cnVjdCBnZGJfYmZkX2RhdGEgKmdkYXRhID0gYmZkX3VzcmRh dGEgKGFiZmQpOwotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBkYXRhOwotKyAgc3RydWN0IGNs ZWFudXAgKmlubmVyOwotKwotKyAgaW5uZXIgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2Jl Z2luX2VuZCAodWlvdXQsIE5VTEwpOwotKyAgdWlfb3V0X2ZpZWxkX2ludCAodWlvdXQsICJyZWZj b3VudCIsIGdkYXRhLT5yZWZjKTsKLSsgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAiYWRk ciIsIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGFiZmQpKTsKLSsgIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCAiZmlsZW5hbWUiLCBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rICB1aV9v dXRfdGV4dCAodWlvdXQsICJcbiIpOwotKyAgZG9fY2xlYW51cHMgKGlubmVyKTsKLSsKLSsgIHJl dHVybiAxOwotK30KLSsKLSsvKiBJbXBsZW1lbnQgdGhlICdtYWludCBpbmZvIGJmZCcgY29tbWFu ZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSttYWludGVuYW5jZV9pbmZvX2JmZHMgKGNoYXIgKmFy ZywgaW50IGZyb21fdHR5KQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgc3Ry dWN0IHVpX291dCAqdWlvdXQgPSBjdXJyZW50X3Vpb3V0OwotKwotKyAgY2xlYW51cCA9IG1ha2Vf Y2xlYW51cF91aV9vdXRfdGFibGVfYmVnaW5fZW5kICh1aW91dCwgMywgLTEsICJiZmRzIik7Ci0r ICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgMTAsIHVpX2xlZnQsICJyZWZjb3VudCIsICJS ZWZjb3VudCIpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDE4LCB1aV9sZWZ0LCAi YWRkciIsICJBZGRyZXNzIik7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgNDAsIHVp X2xlZnQsICJmaWxlbmFtZSIsICJGaWxlbmFtZSIpOwotKwotKyAgdWlfb3V0X3RhYmxlX2JvZHkg KHVpb3V0KTsKLSsgIGh0YWJfdHJhdmVyc2UgKGFsbF9iZmRzLCBwcmludF9vbmVfYmZkLCB1aW91 dCk7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotKy8qIC1XbWlzc2luZy1w cm90b3R5cGVzICovCi0rZXh0ZXJuIGluaXRpYWxpemVfZmlsZV9mdHlwZSBfaW5pdGlhbGl6ZV9n ZGJfYmZkOwotKwotK3ZvaWQKLStfaW5pdGlhbGl6ZV9nZGJfYmZkICh2b2lkKQotK3sKLSsgIGFs bF9iZmRzID0gaHRhYl9jcmVhdGVfYWxsb2MgKDEwLCBodGFiX2hhc2hfcG9pbnRlciwgaHRhYl9l cV9wb2ludGVyLAotKwkJCQlOVUxMLCB4Y2FsbG9jLCB4ZnJlZSk7Ci0rCi0rICBhZGRfY21kICgi YmZkcyIsIGNsYXNzX21haW50ZW5hbmNlLCBtYWludGVuYW5jZV9pbmZvX2JmZHMsIF8oIlwKLStM aXN0IHRoZSBCRkRzIHRoYXQgYXJlIGN1cnJlbnRseSBvcGVuLiIpLAotKwkgICAmbWFpbnRlbmFu Y2VpbmZvbGlzdCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi9nZGJfYmZkLmggYi9nZGIvZ2RiX2Jm ZC5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjEzMWJhNwotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL2dkYl9iZmQuaAotQEAgLTAsMCArMSwxMDYgQEAKLSsvKiBEZWZp bml0aW9ucyBmb3IgQkZEIHdyYXBwZXJzIHVzZWQgYnkgR0RCLgotKwotKyAgIENvcHlyaWdodCAo QykgMjAxMSwgMjAxMgotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCi0rCi0rI2lmbmRlZiBHREJfQkZEX0gKLSsjZGVmaW5lIEdEQl9CRkRf SAotKwotKy8qIE1ha2UgYSBjb3B5IEFCRkQncyBmaWxlbmFtZSB1c2luZyBiZmRfYWxsb2MsIGFu ZCByZWFzc2lnbiBpdCB0byB0aGUKLSsgICBCRkQuICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgQkZE J3MgZmlsZW5hbWUgaGFzIHRoZSBzYW1lIGxpZmV0aW1lIGFzCi0rICAgdGhlIEJGRCBpdHNlbGYu ICAqLwotKwotK3ZvaWQgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAoc3RydWN0IGJmZCAqYWJmZCk7 Ci0rCi0rLyogT3BlbiBhIHJlYWQtb25seSAoRk9QRU5fUkIpIEJGRCBnaXZlbiBhcmd1bWVudHMg bGlrZSBiZmRfZm9wZW4uCi0rICAgUmV0dXJucyBOVUxMIG9uIGVycm9yLiAgT24gc3VjY2Vzcywg cmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gdGhlCi0rICAgQkZELCB3aGljaCBtdXN0IGJlIGZy ZWVkIHdpdGggZ2RiX2JmZF91bnJlZi4gIEJGRHMgcmV0dXJuZWQgYnkgdGhpcwotKyAgIGNhbGwg YXJlIHNoYXJlZCBhbW9uZyBhbGwgY2FsbGVycyBvcGVuaW5nIHRoZSBzYW1lIGZpbGUuICBJZiBG RCBpcwotKyAgIG5vdCAtMSwgdGhlbiBhZnRlciB0aGlzIGNhbGwgaXQgaXMgb3duZWQgYnkgQkZE LiAgKi8KLSsKLStzdHJ1Y3QgYmZkICpnZGJfYmZkX29wZW4gKGNvbnN0IGNoYXIgKm5hbWUsIGNv bnN0IGNoYXIgKnRhcmdldCwgaW50IGZkKTsKLSsKLSsvKiBJbmNyZW1lbnQgdGhlIHJlZmVyZW5j ZSBjb3VudCBvZiBBQkZELiAgSXQgaXMgZmluZSBmb3IgQUJGRCB0byBiZQotKyAgIE5VTEw7IGlu IHRoaXMgY2FzZSB0aGUgZnVuY3Rpb24gZG9lcyBub3RoaW5nLiAgKi8KLSsKLSt2b2lkIGdkYl9i ZmRfcmVmIChzdHJ1Y3QgYmZkICphYmZkKTsKLSsKLSsvKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5j ZSBjb3VudCBvZiBBQkZELiAgSWYgdGhpcyBpcyB0aGUgbGFzdAotKyAgIHJlZmVyZW5jZSwgQUJG RCB3aWxsIGJlIGZyZWVkLiAgSWYgQUJGRCBpcyBOVUxMLCB0aGlzIGZ1bmN0aW9uIGRvZXMKLSsg ICBub3RoaW5nLiAgKi8KLSsKLSt2b2lkIGdkYl9iZmRfdW5yZWYgKHN0cnVjdCBiZmQgKmFiZmQp OwotKwotKy8qIFRyeSB0byByZWFkIG9yIG1hcCB0aGUgY29udGVudHMgb2YgdGhlIHNlY3Rpb24g U0VDVC4gIElmCi0rICAgc3VjY2Vzc2Z1bCwgdGhlIHNlY3Rpb24gZGF0YSBpcyByZXR1cm5lZCBh bmQgKlNJWkUgaXMgc2V0IHRvIHRoZQotKyAgIHNpemUgb2YgdGhlIHNlY3Rpb24gZGF0YTsgdGhp cyBtYXkgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSBzaXplCi0rICAgYWNjb3JkaW5nIHRvIGJmZF9n ZXRfc2VjdGlvbl9zaXplIGlmIHRoZSBzZWN0aW9uIHdhcyBjb21wcmVzc2VkLgotKyAgIFRoZSBy ZXR1cm5lZCBzZWN0aW9uIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBCRkQgYW5kIHdpbGwg YmUKLSsgICBkZXN0cm95ZWQgd2hlbiB0aGUgQkZEIGlzIGRlc3Ryb3llZC4gIFRoZXJlIGlzIG5v IG90aGVyIHdheSB0byBmcmVlCi0rICAgaXQ7IGZvciB0ZW1wb3JhcnkgdXNlcyBvZiBzZWN0aW9u IGRhdGEsIHNlZQotKyAgIGJmZF9tYWxsb2NfYW5kX2dldF9zZWN0aW9uLiAgU0VDVCBtYXkgbm90 IGhhdmUgcmVsb2NhdGlvbnMuICBUaGlzCi0rICAgZnVuY3Rpb24gd2lsbCB0aHJvdyBvbiBlcnJv ci4gICovCi0rCi0rY29uc3QgZ2RiX2J5dGUgKmdkYl9iZmRfbWFwX3NlY3Rpb24gKGFzZWN0aW9u ICpzZWN0aW9uLCBiZmRfc2l6ZV90eXBlICpzaXplKTsKLSsKLSsMCi0rCi0rLyogQSB3cmFwcGVy IGZvciBiZmRfZm9wZW4gdGhhdCBpbml0aWFsaXplcyB0aGUgZ2RiLXNwZWNpZmljIHJlZmVyZW5j ZQotKyAgIGNvdW50IGFuZCBjYWxscyBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lLiAgKi8KLSsKLSti ZmQgKmdkYl9iZmRfZm9wZW4gKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFy ICosIGludCk7Ci0rCi0rLyogQSB3cmFwcGVyIGZvciBiZmRfb3BlbnIgdGhhdCBpbml0aWFsaXpl cyB0aGUgZ2RiLXNwZWNpZmljIHJlZmVyZW5jZQotKyAgIGNvdW50IGFuZCBjYWxscyBnZGJfYmZk X3N0YXNoX2ZpbGVuYW1lLiAgKi8KLSsKLStiZmQgKmdkYl9iZmRfb3BlbnIgKGNvbnN0IGNoYXIg KiwgY29uc3QgY2hhciAqKTsKLSsKLSsvKiBBIHdyYXBwZXIgZm9yIGJmZF9vcGVudyB0aGF0IGlu aXRpYWxpemVzIHRoZSBnZGItc3BlY2lmaWMgcmVmZXJlbmNlCi0rICAgY291bnQgYW5kIGNhbGxz IGdkYl9iZmRfc3Rhc2hfZmlsZW5hbWUuICAqLwotKwotK2JmZCAqZ2RiX2JmZF9vcGVudyAoY29u c3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotKwotKy8qIEEgd3JhcHBlciBmb3IgYmZkX29wZW5y X2lvdmVjIHRoYXQgaW5pdGlhbGl6ZXMgdGhlIGdkYi1zcGVjaWZpYwotKyAgIHJlZmVyZW5jZSBj b3VudCBhbmQgY2FsbHMgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZS4gICovCi0rCi0rYmZkICpnZGJf YmZkX29wZW5yX2lvdmVjIChjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqdGFyZ2V0 LAotKwkJCSAgdm9pZCAqKCpvcGVuX2Z1bmMpIChzdHJ1Y3QgYmZkICpuYmZkLAotKwkJCQkJICAg ICAgdm9pZCAqb3Blbl9jbG9zdXJlKSwKLSsJCQkgIHZvaWQgKm9wZW5fY2xvc3VyZSwKLSsJCQkg IGZpbGVfcHRyICgqcHJlYWRfZnVuYykgKHN0cnVjdCBiZmQgKm5iZmQsCi0rCQkJCQkJICB2b2lk ICpzdHJlYW0sCi0rCQkJCQkJICB2b2lkICpidWYsCi0rCQkJCQkJICBmaWxlX3B0ciBuYnl0ZXMs Ci0rCQkJCQkJICBmaWxlX3B0ciBvZmZzZXQpLAotKwkJCSAgaW50ICgqY2xvc2VfZnVuYykgKHN0 cnVjdCBiZmQgKm5iZmQsCi0rCQkJCQkgICAgIHZvaWQgKnN0cmVhbSksCi0rCQkJICBpbnQgKCpz dGF0X2Z1bmMpIChzdHJ1Y3QgYmZkICphYmZkLAotKwkJCQkJICAgIHZvaWQgKnN0cmVhbSwKLSsJ CQkJCSAgICBzdHJ1Y3Qgc3RhdCAqc2IpKTsKLSsKLSsvKiBBIHdyYXBwZXIgZm9yIGJmZF9vcGVu cl9uZXh0X2FyY2hpdmVkX2ZpbGUgdGhhdCBpbml0aWFsaXplcyB0aGUKLSsgICBnZGItc3BlY2lm aWMgcmVmZXJlbmNlIGNvdW50IGFuZCBjYWxscyBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lLiAgKi8K LSsKLStiZmQgKmdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChiZmQgKmFyY2hpdmUs IGJmZCAqcHJldmlvdXMpOwotKwotKy8qIEEgd3JhcHBlciBmb3IgYmZkX2Zkb3BlbnIgdGhhdCBp bml0aWFsaXplcyB0aGUgZ2RiLXNwZWNpZmljCi0rICAgcmVmZXJlbmNlIGNvdW50IGFuZCBjYWxs cyBnZGJfYmZkX3N0YXNoX2ZpbGVuYW1lLiAgKi8KLSsKLStiZmQgKmdkYl9iZmRfZmRvcGVuciAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnRhcmdldCwgaW50IGZkKTsKLSsKLSsj ZW5kaWYgLyogR0RCX0JGRF9IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIv Z2RidHlwZXMuYwotaW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0 eXBlcy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTM3LDYgKzM3LDkgQEAKLSAjaW5jbHVk ZSAiZ2RiX2Fzc2VydC5oIgotICNpbmNsdWRlICJoYXNodGFiLmgiCi0gI2luY2x1ZGUgImV4Y2Vw dGlvbnMuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSsjaW5jbHVkZSAiZHdhcmYyZXhwci5o IgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKLSAvKiBJbml0aWFsaXplIEJBRE5FU1MgY29u c3RhbnRzLiAgKi8KLSAKLUBAIC0xNDEsNyArMTQ0LDE2IEBAIHN0YXRpYyB2b2lkIHByaW50X2Jp dF92ZWN0b3IgKEJfVFlQRSAqLCBpbnQpOwotIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAo c3RydWN0IGZpZWxkICosIGludCwgaW50KTsKLSBzdGF0aWMgdm9pZCBkdW1wX2ZuX2ZpZWxkbGlz dHMgKHN0cnVjdCB0eXBlICosIGludCk7Ci0gc3RhdGljIHZvaWQgcHJpbnRfY3BsdXNfc3R1ZmYg KHN0cnVjdCB0eXBlICosIGludCk7Ci0rc3RhdGljIExPTkdFU1QgdHlwZV9sZW5ndGhfZ2V0IChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlLAotKwkJCQlpbnQgZnVs bF9zcGFuKTsKLSAKLSsjaWYgMAotKy8qIFRoZSBoYXNoIHRhYmxlIGhvbGRpbmcgYWxsIGRpc2Nh cmRhYmxlIGBzdHJ1Y3QgdHlwZSAqJyByZWZlcmVuY2VzLiAgKi8KLStzdGF0aWMgaHRhYl90IHR5 cGVfZGlzY2FyZGFibGVfdGFibGU7Ci0rCi0rLyogQ3VycmVudCB0eXBlX2Rpc2NhcmRhYmxlX2No ZWNrIHBhc3MgdXNlZCBmb3IgVFlQRV9ESVNDQVJEQUJMRV9BR0UuICAqLwotK3N0YXRpYyBpbnQg dHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudDsKLSsjZW5kaWYKLSAKLSAvKiBBbGxvY2F0ZSBh IG5ldyBPQkpGSUxFLWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKLSAgICB3 aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9j YXRlZAotQEAgLTE3Miw2ICsxODQsNDMgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gICByZXR1cm4gdHlwZTsKLSB9Ci0gCi0rI2lmIDAKLSsvKiBEZWNsYXJlIFRZUEUg YXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlw ZXMuCi0rICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2Fs bF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK3NldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChzdHJ1Y3QgdHlwZSAq dHlwZSkKLSt7Ci0rICB2b2lkICoqc2xvdDsKLSsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX0RJU0NB UkRBQkxFICh0eXBlKSk7Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7Ci0rICBU WVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50 OwotKwotKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCB0 eXBlLCBJTlNFUlQpOwotKyAgZ2RiX2Fzc2VydCAoISpzbG90KTsKLSsgICpzbG90ID0gdHlwZTsK LSt9Ci0rI2VuZGlmCi0rCi0rLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUg YnV0IHByZXNlcnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKLSsgICBzdGF0ZSBvZiBQQVJF TlRfVFlQRS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoKLSthbGxvY190eXBlX2FzX3Bh cmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQotK3sKLSsgIHN0cnVjdCB0eXBlICpuZXdf dHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50X3R5cGUpOwotKwotKyNpZiAwCi0rICBpZiAo VFlQRV9ESVNDQVJEQUJMRSAocGFyZW50X3R5cGUpKQotKyAgICBzZXRfdHlwZV9hc19kaXNjYXJk YWJsZSAobmV3X3R5cGUpOwotKyNlbmRpZgotKwotKyAgcmV0dXJuIG5ld190eXBlOwotK30KLSsK LSAvKiBBbGxvY2F0ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5k IGZpbGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3Ry dWN0dXJlIGlzIGFsbG9jYXRlZAotICAgIG9uIHRoZSBoZWFwLiAgKi8KLUBAIC0yOTcsNyArMzQ2 LDcgQEAgbWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAq KnR5cGVwdHIpCi0gCi0gICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdl J2xsIG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KLSAgICAgewotLSAgICAgIG50eXBlID0gYWxs b2NfdHlwZV9jb3B5ICh0eXBlKTsKLSsgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFyZW50 ICh0eXBlKTsKLSAgICAgICBpZiAodHlwZXB0cikKLSAJKnR5cGVwdHIgPSBudHlwZTsKLSAgICAg fQotQEAgLTM3NCw3ICs0MjMsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBlIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAq dHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCi0gICAgIHsK LS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAgICAgbnR5cGUgPSBh bGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVwdHIpCi0gCSp0eXBl cHRyID0gbnR5cGU7Ci0gICAgIH0KLUBAIC03ODQsNiArODMzLDcgQEAgY3JlYXRlX3JhbmdlX3R5 cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUsCi0g ICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRz KSk7Ci0gICBUWVBFX0xPV19CT1VORCAocmVzdWx0X3R5cGUpID0gbG93X2JvdW5kOwotICAgVFlQ RV9ISUdIX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBoaWdoX2JvdW5kOwotKyAgVFlQRV9CWVRFX1NU UklERSAocmVzdWx0X3R5cGUpID0gMDsKLSAKLSAgIGlmIChsb3dfYm91bmQgPj0gMCkKLSAgICAg VFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKLUBAIC05MjcsMjYgKzk3NywzMSBAQCBj cmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLAotIAotICAgVFlQRV9D T0RFIChyZXN1bHRfdHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7Ci0gICBUWVBFX1RBUkdFVF9UWVBF IChyZXN1bHRfdHlwZSkgPSBlbGVtZW50X3R5cGU7Ci0tICBpZiAoZ2V0X2Rpc2NyZXRlX2JvdW5k cyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwgMCkKLS0gICAgbG93X2Jv dW5kID0gaGlnaF9ib3VuZCA9IDA7Ci0tICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5cGUpOwot LSAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxlbmd0aC4gIEFkYSBhcnJh eXMgY2FuIGJlCi0tICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGlnaF9ib3VuZCBiZWluZyBz bWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KLS0gICAgIEluIHN1Y2ggY2FzZXMsIHRoZSBhcnJh eSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICAqLwotLSAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91 bmQpCi0tICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwotLSAgZWxzZQotLSAgICBU WVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KLS0gICAgICBUWVBFX0xFTkdUSCAoZWxlbWVudF90 eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0gICBUWVBFX05GSUVMRFMgKHJl c3VsdF90eXBlKSA9IDE7Ci0gICBUWVBFX0ZJRUxEUyAocmVzdWx0X3R5cGUpID0KLSAgICAgKHN0 cnVjdCBmaWVsZCAqKSBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IGZp ZWxkKSk7Ci0gICBUWVBFX0lOREVYX1RZUEUgKHJlc3VsdF90eXBlKSA9IHJhbmdlX3R5cGU7Ci0g ICBUWVBFX1ZQVFJfRklFTEROTyAocmVzdWx0X3R5cGUpID0gLTE7Ci0gCi0tICAvKiBUWVBFX0ZM QUdfVEFSR0VUX1NUVUIgd2lsbCB0YWtlIGNhcmUgb2YgemVybyBsZW5ndGggYXJyYXlzLiAgKi8K LSsgIC8qIERXQVJGIGJsb2NrcyBtYXkgZGVwZW5kIG9uIHJ1bnRpbWUgaW5mb3JtYXRpb24gbGlr ZQotKyAgICAgRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBub3QgYmVpbmcgYXZhaWxhYmxlIGR1 cmluZyB0aGUKLSsgICAgIENSRUFURV9BUlJBWV9UWVBFIHRpbWUuICAqLwotKyAgaWYgKFRZUEVf UkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5raW5kICE9IFJBTkdFX0JPVU5EX0tJTkRfQ09O U1RBTlQKLSsgICAgICB8fCBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQg IT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZUEVfRFlOQU1JQyAoZWxl bWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9IDA7Ci0rICBlbHNl Ci0rICAgIHsKLSsgICAgICBDSEVDS19UWVBFREVGIChlbGVtZW50X3R5cGUpOwotKyAgICAgIFRZ UEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQgKHJlc3VsdF90eXBlLCBl bGVtZW50X3R5cGUsCi0rCQkJCQkJICAgMCk7Ci0rICAgIH0KLSAgIGlmIChUWVBFX0xFTkdUSCAo cmVzdWx0X3R5cGUpID09IDApCi0tICAgIFRZUEVfVEFSR0VUX1NUVUIgKHJlc3VsdF90eXBlKSA9 IDE7Ci0rICAgIHsKLSsgICAgICAvKiBUaGUgcmVhbCBzaXplIHdpbGwgYmUgY29tcHV0ZWQgZm9y IHNwZWNpZmljIGluc3RhbmNlcyBieQotKwkgQ0hFQ0tfVFlQRURFRi4gICovCi0rICAgICAgVFlQ RV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKLSsgICAgfQotIAotICAgcmV0dXJuIHJl c3VsdF90eXBlOwotIH0KLUBAIC0xNDY4LDYgKzE1MjMsMTA1IEBAIHN0dWJfbm9uYW1lX2NvbXBs YWludCAodm9pZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1YiB0 eXBlIGhhcyBOVUxMIG5hbWUiKSk7Ci0gfQotIAotKy8qIENhbGN1bGF0ZSB0aGUgbWVtb3J5IGxl bmd0aCBvZiBhcnJheSBUWVBFLgotKwotKyAgIFRBUkdFVF9UWVBFIHNob3VsZCBiZSBzZXQgdG8g YGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKScgYXMKLSsgICBhIHBlcmZv cm1hbmNlIGhpbnQuICBGZWVsIGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0IEZVTExfU1BBTiB0byBy ZXR1cm4gdGhlCi0rICAgc2l6ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFkZGluZyBvZiB0aGUgbGFz dCBlbGVtZW50IC0gaXQgbWF5IGRpZmZlciBmcm9tIHRoZQotKyAgIGNsZWFyZWQgRlVMTF9TUEFO IHJldHVybiB2YWx1ZSAodGhlIGV4cGVjdGVkIFNJWkVPRikgZm9yIG5vbi16ZXJvCi0rICAgVFlQ RV9CWVRFX1NUUklERSB2YWx1ZXMuICAqLwotKwotK3N0YXRpYyBMT05HRVNUCi0rdHlwZV9sZW5n dGhfZ2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlLCBpbnQg ZnVsbF9zcGFuKQotK3sKLSsgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotKyAgTE9OR0VTVCBi eXRlX3N0cmlkZSA9IDA7CS8qIGA9IDAnIGZvciBhIGZhbHNlIEdDQyB3YXJuaW5nLiAgKi8KLSsg IExPTkdFU1QgY291bnQsIGVsZW1lbnRfc2l6ZSwgcmV0dmFsOwotKwotKyAgaWYgKFRZUEVfQ09E RSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCi0rICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAh PSBUWVBFX0NPREVfU1RSSU5HKQotKyAgICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpOwotKwot KyAgLyogQXZvaWQgZXhlY3V0aW5nIFRZUEVfSElHSF9CT1VORCBmb3IgaW52YWxpZCAodW5hbGxv Y2F0ZWQvdW5hc3NvY2lhdGVkKQotKyAgICAgRm9ydHJhbiBhcnJheXMuICBUaGUgYWxsb2NhdGVk IGRhdGEgd2lsbCBuZXZlciBiZSB1c2VkIHNvIHRoZXkgY2FuIGJlCi0rICAgICB6ZXJvLWxlbmd0 aC4gICovCi0rICBpZiAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUpKQotKyAg ICByZXR1cm4gMDsKLSsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwot KyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkKLSsgICAgICB8fCBU WVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKLSsgICAgcmV0dXJuIDA7Ci0r ICBjb3VudCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgLSBUWVBFX0xPV19CT1VORCAo cmFuZ2VfdHlwZSkgKyAxOwotKyAgLyogSXQgbWF5IGhhcHBlbiBmb3Igd3JvbmcgRFdBUkYgYW5u b3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0YS4gICovCi0rICBpZiAoY291bnQgPCAwKQot KyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlwZSAlcyBoYXMgaW52YWxpZCBib3VuZHMgJXMu LiVzIiksCi0rCSAgICAgVFlQRV9FUlJPUl9OQU1FICh0eXBlKSwgcGxvbmdlc3QgKFRZUEVfTE9X X0JPVU5EIChyYW5nZV90eXBlKSksCi0rCSAgICAgcGxvbmdlc3QgKFRZUEVfSElHSF9CT1VORCAo cmFuZ2VfdHlwZSkpKTsKLSsgIC8qIFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBjb3Vu dCA9PSAwIHJpZ2h0LiAgKi8KLSsgIGlmIChjb3VudCA8PSAwKQotKyAgICByZXR1cm4gMDsKLSsg IGlmIChmdWxsX3NwYW4gfHwgY291bnQgPiAxKQotKyAgICB7Ci0rICAgICAgLyogV2UgZG8gbm90 IHVzZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKSBoZXJlIGFzIHdlIHdhbnQg dG8KLSsgICAgICAgICBmb3JjZSBGVUxMX1NQQU4gdG8gMS4gICovCi0rICAgICAgYnl0ZV9zdHJp ZGUgPSBUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKTsKLSsgICAgICBpZiAoYnl0ZV9zdHJp ZGUgPT0gMCkKLSsgICAgICAgIHsKLSsJICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKLSsJICAg IHRhcmdldF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwot KwkgIGJ5dGVfc3RyaWRlID0gdHlwZV9sZW5ndGhfZ2V0ICh0YXJnZXRfdHlwZSwgTlVMTCwgMSk7 Ci0rCX0KLSsgICAgfQotKwotKyAgLyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0 aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAgaWYgaXRzIGxlbmd0aAotKyAgICAgZXhjZWVkcyBVSU5U X01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMgdGhhdCBmb3IgeCA8IDAsCi0rICAgICAoVUxP TkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLCB3aGljaCBpcyB0ZWNobmljYWxseSBu b3QgZ3VhcmFudGVlZAotKyAgICAgYnkgQywgYnV0IGlzIHVzdWFsbHkgdHJ1ZSAoYmVjYXVzZSBp dCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZAotKyAgICAgd2l0aCBpdHMgaGlnaC1v cmRlciBiaXQgb24pLiBJdCB1c2VzIHRoZSBmYWN0IHRoYXQgaGlnaF9ib3VuZC1sb3dfYm91bmQg aXMKLSsgICAgIGFsd2F5cyByZXByZXNlbnRhYmxlIGluIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhp Z2hfYm91bmQtbG93X2JvdW5kKzEKLSsgICAgIG92ZXJmbG93cywgaXQgb3ZlcmZsb3dzIHRvIDAu ICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3ZSBkZWNpZGUgdG8KLSsgICAgIGluY3Jl YXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSCBmcm9tIHVuc2lnbmVkIGludCB0 byBVTE9OR0VTVC4KLSsgICAgICovCi0rCi0rICBpZiAoZnVsbF9zcGFuKQotKyAgICB7Ci0rICAg ICAgcmV0dmFsID0gY291bnQgKiBieXRlX3N0cmlkZTsKLSsgICAgICBpZiAoY291bnQgPT0gMCB8 fCByZXR2YWwgLyBjb3VudCAhPSBieXRlX3N0cmlkZSB8fCByZXR2YWwgPiBVSU5UX01BWCkKLSsJ cmV0dmFsID0gMDsKLSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9Ci0rICBpZiAodGFyZ2V0 X3R5cGUgPT0gTlVMTCkKLSsgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RB UkdFVF9UWVBFICh0eXBlKSk7Ci0rICBlbGVtZW50X3NpemUgPSB0eXBlX2xlbmd0aF9nZXQgKHRh cmdldF90eXBlLCBOVUxMLCAxKTsKLSsgIHJldHZhbCA9IChjb3VudCAtIDEpICogYnl0ZV9zdHJp ZGUgKyBlbGVtZW50X3NpemU7Ci0rICBpZiAocmV0dmFsIDwgZWxlbWVudF9zaXplCi0rICAgICAg fHwgKGJ5dGVfc3RyaWRlICE9IDAKLSsgICAgICAgICAgJiYgKHJldHZhbCAtIGVsZW1lbnRfc2l6 ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3VudCAtIDEpCi0rICAgICAgfHwgcmV0dmFsID4gVUlOVF9N QVgpCi0rICAgIHJldHZhbCA9IDA7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsvKiBQcmVw YXJlIFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4gIEN1cnJlbnRseSB0 aGlzIGZ1bmN0aW9uCi0rICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZTkFNSUMgZmxhZy4g ICovCi0rCi0rdm9pZAotK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsg IGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlwZSk7ICsraSkK LSsgICAgaWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkgJiYgVFlQRV9EWU5BTUlDIChUWVBF X0ZJRUxEX1RZUEUgKHR5cGUsIGkpKSkKLSsgICAgICBicmVhazsKLSsKLSsgIC8qIEZJWE1FOiBj cGx1c19zdHVmZiBpcyBpZ25vcmVkIGhlcmUuICAqLwotKyAgaWYgKGkgPCBUWVBFX05GSUVMRFMg KHR5cGUpCi0rICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5B TUlDIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKLSsgICAgICB8fCAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpKQot KyAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMTsKLSt9Ci0rCi0gLyogRmluZCB0aGUgcmVhbCB0 eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlYWwgdHlwZSwKLSAgICBh ZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5cGVkZWZzLCBhbmQgY29tcGxldGluZyBvcGFx dWUgb3Igc3R1YgotICAgIHR5cGVzLiAgQ29tcGxldGlvbiBjaGFuZ2VzIHRoZSBUWVBFIGFyZ3Vt ZW50LCBidXQgc3RyaXBwaW5nIG9mCi1AQCAtMTYzNCw1MiArMTc4OCwzNyBAQCBjaGVja190eXBl ZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgICAgIH0KLSAgICAgfQotIAotLSAgaWYgKFRZ UEVfVEFSR0VUX1NUVUIgKHR5cGUpKQotKyAgLyogY29weV90eXBlX3JlY3Vyc2l2ZSBhdXRvbWF0 aWNhbGx5IG1ha2VzIHRoZSByZXN1bHRpbmcgdHlwZSBjb250YWluaW5nIG9ubHkKLSsgICAgIGNv bnN0YW50IHZhbHVlcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiAg Ki8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQotKyAgICB7Ci0rICAgICAgaHRhYl90IGNv cGllZF90eXBlczsKLSsKLSsgICAgICBjb3BpZWRfdHlwZXMgPSBjcmVhdGVfY29waWVkX3R5cGVz X2hhc2ggKE5VTEwpOwotKyAgICAgIHR5cGUgPSBjb3B5X3R5cGVfcmVjdXJzaXZlICh0eXBlLCBj b3BpZWRfdHlwZXMpOwotKyAgICAgIGh0YWJfZGVsZXRlIChjb3BpZWRfdHlwZXMpOwotKwotKyAg ICAgIGdkYl9hc3NlcnQgKFRZUEVfRFlOQU1JQyAodHlwZSkgPT0gMCk7Ci0rICAgICAgLyogRm9y Y2UgVFlQRV9MRU5HVEggKHR5cGUpIHJlY2FsY3VsYXRpb24uICAqLwotKyAgICAgIFRZUEVfRFlO QU1JQyAodHlwZSkgPSAxOwotKyAgICB9Ci0rCi0rICBpZiAoVFlQRV9UQVJHRVRfU1RVQiAodHlw ZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkKLSAgICAgewotLSAgICAgIHN0cnVjdCB0eXBlICpy YW5nZV90eXBlOwotICAgICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVk ZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSAKLSsgICAgICBpZiAoVFlQRV9EWU5BTUlD ICh0eXBlKSkKLSsJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0YXJnZXRfdHlwZTsKLSAgICAg ICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9UQVJHRVRfU1RVQiAodGFyZ2V0 X3R5cGUpKQotIAl7Ci0gCSAgLyogTm90aGluZyB3ZSBjYW4gZG8uICAqLwotIAl9Ci0gICAgICAg ZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLS0JICAgICAgICYm IFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQotLQkgICAgICAgJiYgKFRZUEVfQ09ERSAocmFuZ2Vf dHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCi0tCQkgICA9PSBUWVBFX0NPREVfUkFOR0Up KQotKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKQotIAl7 Ci0gCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBlLCBiYXNl ZCBvbiBpdHMKLS0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdz IGxlbmd0aC4KLS0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMgd2hlcmUg dGhlIGhpZ2ggYm91bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3VuZC4gICov Ci0tCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlw ZSk7Ci0tCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQRV9ISUdIX0JPVU5EIChyYW5n ZV90eXBlKTsKLS0JICBVTE9OR0VTVCBsZW47Ci0tCi0tCSAgaWYgKGhpZ2hfYm91bmQgPCBsb3df Ym91bmQpCi0tCSAgICBsZW4gPSAwOwotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAgLyogRm9y IG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAKLS0J CSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29kZSBiZWxvdyBhc3N1bWVz Ci0tCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01BWCAr IDEsCi0tCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQgYnkgQywgYnV0IGlz IHVzdWFsbHkgdHJ1ZQotLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJlIHVu c2lnbmVkIHdpdGggaXRzCi0tCQkgaGlnaC1vcmRlciBiaXQgb24pLiAgSXQgdXNlcyB0aGUgZmFj dCB0aGF0Ci0tCQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJlcHJlc2VudGFibGUg aW4KLS0JCSBVTE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92ZXJm bG93cywKLS0JCSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3Rz IGlmIHdlIAotLQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgVFlQ RV9MRU5HVEgKLS0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gICovCi0tCSAgICAg IFVMT05HRVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3VuZDsKLS0JICAgICAg VUxPTkdFU1QgdGxlbiA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0tCi0tCSAgICAgIGxl biA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7Ci0tCSAgICAgIGlmICh0bGVuID09IDAgfHwg KGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2ggCi0tCQkgIHx8IGxlbiA+IFVJTlRfTUFY KQotLQkJbGVuID0gMDsKLS0JICAgIH0KLS0JICBUWVBFX0xFTkdUSCAodHlwZSkgPSBsZW47Ci0r CSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0IHR5cGUncyBsZW5ndGguICAq LwotKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVfbGVuZ3RoX2dldCAodHlwZSwgdGFyZ2V0 X3R5cGUsIDApOwotIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKLSAJfQotICAgICAg IGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQotQEAgLTE2ODcs NiArMTgyNiw3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotIAkgIFRZUEVf TEVOR1RIICh0eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0gCSAgVFlQRV9UQVJH RVRfU1RVQiAodHlwZSkgPSAwOwotIAl9Ci0rICAgICAgVFlQRV9EWU5BTUlDICh0eXBlKSA9IDA7 Ci0gICAgIH0KLSAKLSAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBlICh0eXBlLCBpbnN0YW5j ZV9mbGFncywgTlVMTCk7Ci1AQCAtMzM0NSwzMyArMzQ4NSw0MiBAQCB0eXBlX3BhaXJfZXEgKGNv bnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSB9Ci0gCi0gLyogQWxs b2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsK LS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklMRSdzIG9ic3RhY2ss IGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICAqLwotKyAgIHR5 cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJfdAotIGNyZWF0ZV9jb3BpZWRf dHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotLSAgcmV0dXJuIGh0YWJf Y3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotLQkJCSAg ICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgICBoYXNodGFi X29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7 Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgLyogTlVMTCBPQkpGSUxF IGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWluZWQgaW4KLSsJIE9CSkZJ TEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVFX0hJU1RPUllfQ0hBSU4u ICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNv IHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlICgxLCB0eXBlX3BhaXJf aGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAg ICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0IHRv IGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkg eG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlX2Fs bG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotKwkJCQkgICB4ZnJlZSwg Jm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9j YXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAgICAgIC8qIFVzZSBP QkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQu ICBUYWJsZQorKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNv IHVzZSB4ZnJlZS4gICovCisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0 eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAorKwkJCQkgICB4ZnJlZSwgJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywKKysJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRlLAorKwkJCQkg ICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwogKyAgICB9CiAgfQogIApAQCAtNjAyMyw3ICsy NzY3LDcgQEAgaW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKICAgICAgcmV0dXJuIHR5cGU7 CiAgCiAgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJlIHBvaW50aW5nIHRvIGFueSB0eXBlcyBp biBvdGhlciBvYmpmaWxlczsKLUBAIC0zMzg2LDkgKzM1MzUsMTAgQEAgY29weV90eXBlX3JlY3Vy c2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzQyOCw5ICszNTcyLDEwIEBAIGNv cHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgbmV3X3R5cGUg PSBhbGxvY190eXBlX2FyY2ggKGdldF90eXBlX2FyY2ggKHR5cGUpKTsKICAKICAgIC8qIFdlIG11 c3QgYWRkIHRoZSBuZXcgdHlwZSB0byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2Fz ZQpAQCAtNjAzNyw3ICsyNzgxLDcgQEAgaW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKICAg IHN0b3JlZC0+b2xkID0gdHlwZTsKICAgIHN0b3JlZC0+bmV3ID0gbmV3X3R5cGU7CiAgICAqc2xv dCA9IHN0b3JlZDsKLUBAIC0zMzk5LDYgKzM1NDksMjEgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzQ0MSw2ICszNTg2LDIxIEBAIGNvcHlfdHlw ZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9PQkpGSUxFX09X TkVEIChuZXdfdHlwZSkgPSAwOwogICAgVFlQRV9PV05FUiAobmV3X3R5cGUpLmdkYmFyY2ggPSBn ZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKQEAgLTYwNTksNyArMjgwMyw3IEBAIGluZGV4IDgxNDJh YjkuLmEyOTUzY2MgMTAwNjQ0CiAgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkKICAgICAgVFlQRV9O QU1FIChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsKICAgIGlmIChUWVBF X1RBR19OQU1FICh0eXBlKSkKLUBAIC0zNDA3LDEyICszNTcyLDQ4IEBAIGNvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTM0NDksMTIgKzM2MDksNDggQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICBUWVBFX0lO U1RBTkNFX0ZMQUdTIChuZXdfdHlwZSkgPSBUWVBFX0lOU1RBTkNFX0ZMQUdTICh0eXBlKTsKICAg IFRZUEVfTEVOR1RIIChuZXdfdHlwZSkgPSBUWVBFX0xFTkdUSCAodHlwZSk7CiAgCkBAIC02MTA4 LDcgKzI4NTIsNyBAQCBpbmRleCA4MTQyYWI5Li5hMjk1M2NjIDEwMDY0NAogICAgICAgIFRZUEVf RklFTERTIChuZXdfdHlwZSkgPSBYQ0FMTE9DIChuZmllbGRzLCBzdHJ1Y3QgZmllbGQpOwogICAg ICAgIGZvciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKyspCiAgCXsKLUBAIC0zNDIxLDggKzM2MjIs OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0z NDYzLDggKzM2NTksOCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKICAJICBUWVBFX0ZJRUxEX0JJVFNJWkUgKG5ld190eXBlLCBpKSA9IFRZUEVfRklFTERf QklUU0laRSAodHlwZSwgaSk7CiAgCSAgaWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpCiAg CSAgICBUWVBFX0ZJRUxEX1RZUEUgKG5ld190eXBlLCBpKQpAQCAtNjExOSw3ICsyODYzLDcgQEAg aW5kZXggODE0MmFiOS4uYTI5NTNjYyAxMDA2NDQKICAJICBpZiAoVFlQRV9GSUVMRF9OQU1FICh0 eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUsIGkpID0gCiAgCSAgICAg IHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOwotQEAgLTM0NTMsMjQgKzM2NTQs MTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAg LTM0OTUsMjQgKzM2OTEsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTYzMTEsNyArMzA1NSw3IEBAIGluZGV4IDgx NDJhYjkuLmEyOTUzY2MgMTAwNjQ0CiAgICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmlj IGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhl IEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zNDg3LDYgKzM4NDgsMTcgQEAgY29weV90eXBl X3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzUyOSw2ICszODg1LDE3 IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgcmV0 dXJuIG5ld190eXBlOwogIH0KICAKQEAgLTYzMjksMjA5ICszMDczLDcgQEAgaW5kZXggODE0MmFi OS4uYTI5NTNjYyAxMDA2NDQKICAvKiBNYWtlIGEgY29weSBvZiB0aGUgZ2l2ZW4gVFlQRSwgZXhj ZXB0IHRoYXQgdGhlIHBvaW50ZXIgJiByZWZlcmVuY2UKICAgICB0eXBlcyBhcmUgbm90IHByZXNl cnZlZC4KICAgICAKLUBAIC0zNTA5LDYgKzM4ODEsMjAxIEBAIGNvcHlfdHlwZSAoY29uc3Qgc3Ry dWN0IHR5cGUgKnR5cGUpCi0gICByZXR1cm4gbmV3X3R5cGU7Ci0gfQotIAotKyNpZiAwCi0rLyog Q2FsbGJhY2sgdHlwZSBmb3IgbWFpbl90eXBlX2NyYXdsLiAgKi8KLSt0eXBlZGVmIGludCAoKm1h aW5fdHlwZV9jcmF3bF9pdGVyKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpOwotKwot Ky8qIEl0ZXJhdGUgYWxsIG1haW5fdHlwZSBzdHJ1Y3R1cmVzIHJlYWNoYWJsZSB0aHJvdWdoIGFu eSBgc3RydWN0IHR5cGUgKicgZnJvbQotKyAgIFRZUEUuICBJVEVSIHdpbGwgYmUgY2FsbGVkIG9u bHkgZm9yIG9uZSB0eXBlIG9mIGVhY2ggbWFpbl90eXBlLCB1c2UKLSsgICBUWVBFX0NIQUlOIHRy YXZlcnNhbCB0byBmaW5kIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMuICBJVEVSIGlzIGJlaW5nIGNh bGxlZAotKyAgIGZvciBlYWNoIG1haW5fdHlwZSBmb3VuZC4gIElURVIgcmV0dXJucyBub24temVy byBpZiBtYWluX3R5cGVfY3Jhd2wgc2hvdWxkCi0rICAgZGVwdGgtZmlyc3QgZW50ZXIgdGhlIHNw ZWNpZmljIHR5cGUuICBJVEVSIG11c3QgcHJvdmlkZSBzb21lIGRldGVjdGlvbiBmb3IKLSsgICBy ZWVudGVyaW5nIHRoZSBzYW1lIG1haW5fdHlwZSBhcyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG90aGVy d2lzZSBlbmRsZXNzbHkKLSsgICBsb29wLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK21haW5fdHlw ZV9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3bF9pdGVyIGl0ZXIsIHZv aWQgKmRhdGEpCi0rewotKyAgc3RydWN0IHR5cGUgKnR5cGVfaXRlcjsKLSsgIGludCBpOwotKwot KyAgaWYgKCF0eXBlKQotKyAgICByZXR1cm47Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJ TEUgKHR5cGUpID09IE5VTEwpOwotKwotKyAgLyogYHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZScg aGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQgYnkgdGhpcyBmdW5jdGlvbi4gICovCi0rICBnZGJfYXNz ZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCi0rCSAgICAgICAmJiBU WVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9VTklPTikKLSsJICAgICAgfHwgIUhBVkVfQ1BM VVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICBpZiAoISgqaXRlcikgKHR5cGUsIGRhdGEpKQotKyAg ICByZXR1cm47Ci0rCi0rICAvKiBJdGVyYXRlIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMgb2YgdGhp cyBtYWluX3R5cGUuICAqLwotKyAgdHlwZV9pdGVyID0gdHlwZTsKLSsgIGRvCi0rICAgIHsKLSsg ICAgICBnZGJfYXNzZXJ0IChUWVBFX01BSU5fVFlQRSAodHlwZV9pdGVyKSA9PSBUWVBFX01BSU5f VFlQRSAodHlwZSkpOwotKwotKyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9QT0lOVEVSX1RZ UEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsgICAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfUkVG RVJFTkNFX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsKLSsgICAgICB0eXBlX2l0ZXIgPSBU WVBFX0NIQUlOICh0eXBlX2l0ZXIpOwotKyAgICB9Ci0rICB3aGlsZSAodHlwZV9pdGVyICE9IHR5 cGUpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlwZSk7IGkrKykKLSsg ICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCBpdGVyLCBkYXRh KTsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIGl0ZXIs IGRhdGEpOwotKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLCBp dGVyLCBkYXRhKTsKLSt9Ci0rCi0rLyogQSBoZWxwZXIgZm9yIGRlbGV0ZV90eXBlIHdoaWNoIGRl bGV0ZXMgYSBtYWluX3R5cGUgYW5kIHRoZSB0aGluZ3MgdG8gd2hpY2gKLSsgICBpdCByZWZlcnMu ICBUWVBFIGlzIGEgdHlwZSB3aG9zZSBtYWluX3R5cGUgd2Ugd2lzaCB0byBkZXN0cm95LiAgKi8K LSsKLStzdGF0aWMgdm9pZAotK2RlbGV0ZV9tYWluX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQot K3sKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkp OwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMKTsKLSsKLSsgIHhm cmVlIChUWVBFX05BTUUgKHR5cGUpKTsKLSsgIHhmcmVlIChUWVBFX1RBR19OQU1FICh0eXBlKSk7 Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgKytpKQotKyAgICB7 Ci0rICAgICAgeGZyZWUgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOwotKwotKyAgICAgIGlm IChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBpKSA9PSBGSUVMRF9MT0NfS0lORF9QSFlTTkFN RSkKLSsJeGZyZWUgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FICh0eXBlLCBpKSk7Ci0rICAg IH0KLSsgIHhmcmVlIChUWVBFX0ZJRUxEUyAodHlwZSkpOwotKwotKyAgZ2RiX2Fzc2VydCAoIUhB VkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICB4ZnJlZSAoVFlQRV9NQUlOX1RZUEUgKHR5 cGUpKTsKLSt9Ci0rCi0rLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2VzIG9uIFRZUEVfQ0hBSU4g b2YgVFlQRSwgaW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKLSsgICBtYWluX3R5cGUuICBUWVBF IG11c3QgYmUgYSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJtYW5lbnQgbm9yIG9iamZp bGUKLSsgICBhc3NvY2lhdGVkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2RlbGV0ZV90eXBlX2No YWluIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVyLCAq dHlwZV9pdGVyX3RvX2ZyZWU7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0 eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwotKwot KyAgZGVsZXRlX21haW5fdHlwZSAodHlwZSk7Ci0rCi0rICB0eXBlX2l0ZXIgPSB0eXBlOwotKyAg ZG8KLSsgICAgewotKyAgICAgIHR5cGVfaXRlcl90b19mcmVlID0gdHlwZV9pdGVyOwotKyAgICAg IHR5cGVfaXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVfaXRlcik7Ci0rICAgICAgeGZyZWUgKHR5cGVf aXRlcl90b19mcmVlKTsKLSsgICAgfQotKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBlKTsKLSt9 Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZS4gICovCi0r Ci0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlzY2FyZGFibGVfaGFzaCAoY29uc3Qgdm9pZCAq cCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHA7Ci0rCi0rICByZXR1cm4gaHRh Yl9oYXNoX3BvaW50ZXIgKFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7Ci0rfQotKwotKy8qIEVxdWFs aXR5IGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8KLSsKLStzdGF0aWMg aW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAq YikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7Ci0rICBjb25zdCBzdHJ1Y3Qg dHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBFIChsZWZ0KSA9PSBU WVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsKLSsvKiBBIGhlbHBlciBmb3IgdHlwZV9tYXJr X3VzZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBlX21hcmtfdXNlZF9jcmF3bCAoc3RydWN0 IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICBpZiAoIVRZUEVfRElTQ0FSREFCTEUg KHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChUWVBFX0RJU0NBUkRBQkxFX0FHRSAo dHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKLSsgICAgcmV0dXJuIDA7Ci0r Ci0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9j dXJyZW50OwotKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCi0rICByZXR1cm4g MTsKLSt9Ci0rCi0rLyogTWFyayBUWVBFIGFuZCBpdHMgY29ubmVjdGVkIHR5cGVzIGFzIHVzZWQg aW4gdGhpcyBmcmVlX2FsbF90eXBlcyBwYXNzLiAgKi8KLSsKLSt2b2lkCi0rdHlwZV9tYXJrX3Vz ZWQgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGlmICh0eXBlID09IE5VTEwpCi0rICAgIHJl dHVybjsKLSsKLSsgIGlmICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpCi0rICAgIHJldHVybjsK LSsKLSsgIG1haW5fdHlwZV9jcmF3bCAodHlwZSwgdHlwZV9tYXJrX3VzZWRfY3Jhd2wsIE5VTEwp OwotK30KLSsKLSsvKiBBIHRyYXZlcnNlIGNhbGxiYWNrIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3Rh YmxlIHdoaWNoIHJlbW92ZXMgYW55Ci0rICAgdHlwZV9kaXNjYXJkYWJsZSB3aG9zZSByZWZlcmVu Y2UgY291bnQgaXMgbm93IHplcm8gKHVudXNlZCBsaW5rKS4gICovCi0rCi0rc3RhdGljIGludAot K3R5cGVfZGlzY2FyZGFibGVfcmVtb3ZlICh2b2lkICoqc2xvdCwgdm9pZCAqdW51c2VkKQotK3sK LSsgIHN0cnVjdCB0eXBlICp0eXBlID0gKnNsb3Q7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX0RJ U0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0rICBpZiAoVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5cGUp ICE9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQpCi0rICAgIHsKLSsgICAgICBkZWxldGVf dHlwZV9jaGFpbiAodHlwZSk7Ci0rCi0rICAgICAgaHRhYl9jbGVhcl9zbG90ICh0eXBlX2Rpc2Nh cmRhYmxlX3RhYmxlLCBzbG90KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotKy8q IEZyZWUgYWxsIHRoZSByZWNsYWltYWJsZSB0eXBlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0ZWQg YW5kIHRoYXQgaGF2ZQotKyAgIGN1cnJlbnRseSB6ZXJvIHJlZmVyZW5jZSBjb3VudGVyLgotKwot KyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIGVhY2ggY29tbWFuZCwgc3VjY2Vzc2Z1 bCBvciBub3QuICBVc2UgdGhpcwotKyAgIGNsZWFudXAgb25seSBpbiB0aGUgR0RCIGlkbGUgc3Rh dGUgYXMgR0RCIG9ubHkgbWFya3MgdGhvc2UgdHlwZXMgdXNlZCBieQotKyAgIGdsb2JhbGx5IHRy YWNrZWQgb2JqZWN0cyAod2l0aCBubyBhdXRvdmFyaWFibGUgcmVmZXJlbmNlcyB0cmFja2luZyku ICAqLwotKwotK3ZvaWQKLStmcmVlX2FsbF90eXBlcyAodm9pZCkKLSt7Ci0rICAvKiBNYXJrIGEg bmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJlIHZpc2l0ZWQgYWZ0 ZXIgZWFjaAotKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxlIGVudHJpZXMgYWxy ZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCi0rICAgICB2YWx1ZS4gICovCi0rICB0eXBlX2Rp c2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7Ci0rCi0rICBvYnNlcnZlcl9ub3RpZnlfbWFya191 c2VkICgpOwotKwotKyAgaHRhYl90cmF2ZXJzZSAodHlwZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlw ZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30KLSsjZW5kaWYKLSAKLSAvKiBIZWxwZXIg ZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHR5cGVzLiAgKi8K LSAKLUBAIC00MDQyLDYgKzQ2MDksMTMgQEAgdm9pZAorQEAgLTQwOTMsNiArNDQ2MCwxMyBAQCB2 b2lkCiAgX2luaXRpYWxpemVfZ2RidHlwZXMgKHZvaWQpCiAgewogICAgZ2RidHlwZXNfZGF0YSA9 IGdkYmFyY2hfZGF0YV9yZWdpc3Rlcl9wb3N0X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7CkBA IC02NTQ0LDEyICszMDg2LDEyIEBAIGluZGV4IDgxNDJhYjkuLmEyOTUzY2MgMTAwNjQ0CiArCiAg ICBvYmpmaWxlX3R5cGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKICAKLSAgIGFk ZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9k ZWJ1ZywKKyAgIGFkZF9zZXRzaG93X3p1aW50ZWdlcl9jbWQgKCJvdmVybG9hZCIsIG5vX2NsYXNz LCAmb3ZlcmxvYWRfZGVidWcsCiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmggYi9nZGIvZ2Ri dHlwZXMuaAotaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKK2luZGV4IDhiMzQwYTMuLmFl YTFjOTYgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysrIGIvZ2RiL2dkYnR5cGVzLmgK LUBAIC0yMjgsNiArMjI4LDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCitAQCAt MjI2LDYgKzIyNiwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAogICNkZWZp bmUgVFlQRV9UQVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3RhcmdldF9z dHViKQogIApAQCAtNjU2MSw3ICszMTAzLDcgQEAgaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2 NDQKICAvKiBTdGF0aWMgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0 eXBlIGhhZCAKICAgICBhIHN0YXRpYyBtb2RpZmllci4KICAgICBOb3RlOiBUaGlzIG1heSBiZSB1 bm5lY2Vzc2FyeSwgc2luY2Ugc3RhdGljIGRhdGEgbWVtYmVycwotQEAgLTMxMSw2ICszMTYsNTAg QEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKK0BAIC0zMDksNiArMzE0LDUwIEBAIGVu dW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX0ZMQUdfRU5VTSh0 KSAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2ZsYWdfZW51bSkKICAKQEAgLTY2MTIsNyArMzE1 NCw3IEBAIGluZGV4IDE3YmZiYzUuLjcyZTljYzUgMTAwNjQ0CiAgLyogQ29uc3RhbnQgdHlwZS4g IElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGhhcyBhCiAgICAgY29uc3Qg bW9kaWZpZXIuICAqLwogIAotQEAgLTQyMSw2ICs0NzAsMTUgQEAgc3RydWN0IG1haW5fdHlwZQor QEAgLTQyNSw2ICs0NzQsMTUgQEAgc3RydWN0IG1haW5fdHlwZQogICAgLyogVHJ1ZSBpZiB0aGlz IHR5cGUgd2FzIGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgogICAgICAgInN0cnVj dCIuICAqLwogICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOwpAQCAtNjYy OCw3ICszMTcwLDcgQEAgaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKICAKICAgIC8qIFRy dWUgaWYgdGhpcyBpcyBhbiBlbnVtIHR5cGUgd2l0aCBkaXNqb2ludCB2YWx1ZXMuICBUaGlzIGFm ZmVjdHMKICAgICAgIGhvdyB0aGUgZW51bSBpcyBwcmludGVkLiAgKi8KLUBAIC01MDEsNiArNTU5 LDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01MDUsNiArNTYzLDIwIEBAIHN0cnVjdCBtYWlu X3R5cGUKICAKICAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZTsKICAKQEAgLTY2NDksNyArMzE5 MSw3IEBAIGluZGV4IDE3YmZiYzUuLjcyZTljYzUgMTAwNjQ0CiAgICAvKiBGb3Igc3RydWN0dXJl IGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIGZpZWxkLgogICAgICAgRm9y IHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBpcyBvbmUgImZpZWxkIiwKICAgICAg IHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRoZSBzZXQgb3IgYXJyYXkuCi1AQCAt NTgzLDEzICs2NTUsMzQgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTU4NywxMyArNjU5LDM0IEBA IHN0cnVjdCBtYWluX3R5cGUKICAKICAgICAgc3RydWN0IHJhbmdlX2JvdW5kcwogICAgICB7CkBA IC02Njg5LDcgKzMyMzEsNyBAQCBpbmRleCAxN2JmYmM1Li43MmU5Y2M1IDEwMDY0NAogIAogICAg ICAgIC8qIEZsYWdzIGluZGljYXRpbmcgd2hldGhlciB0aGUgdmFsdWVzIG9mIGxvdyBhbmQgaGln aCBhcmUKICAgICAgICAgICB2YWxpZC4gIFdoZW4gdHJ1ZSwgdGhlIHJlc3BlY3RpdmUgcmFuZ2Ug dmFsdWUgaXMKLUBAIC0xMDU0LDkgKzExNDcsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0 X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC0xMDUzLDkgKzExNDYsOSBAQCBleHRlcm4g dm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZ UEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKICAjZGVm aW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90 eXBlCiAgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgpAQCAt NjcwMiw3ICszMjQ0LDcgQEAgaW5kZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKICAgICBjYWxs cyBjaGVja190eXBlZGVmLCBUWVBFX0xFTkdUSCAoVkFMVUVfVFlQRSAoWCkpIGlzIHNhZmUuICAq LwogICNkZWZpbmUgVFlQRV9MRU5HVEgodGhpc3R5cGUpICh0aGlzdHlwZSktPmxlbmd0aAogIC8q IE5vdGUgdGhhdCBUWVBFX0NPREUgY2FuIGJlIFRZUEVfQ09ERV9UWVBFREVGLCBzbyBpZiB5b3Ug d2FudCB0aGUgcmVhbAotQEAgLTEwNjQsMTEgKzExNTcsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2Nh dGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CitAQCAtMTA2MywxMSArMTE1NiwxNiBA QCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAj ZGVmaW5lIFRZUEVfQ09ERSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5jb2Rl CiAgI2RlZmluZSBUWVBFX05GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBl KS0+bmZpZWxkcwogICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBF KHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwpAQCAtNjcyMSw3ICszMjYzLDcgQEAgaW5kZXgg MTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKICAjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5F RChyYW5nZV90eXBlKSBcCiAgICAgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3dfdW5k ZWZpbmVkCiAgI2RlZmluZSBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwK LUBAIC0xMDg1LDcgKzExODMsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydWN0IHR5cGUgKik7CitAQCAtMTA4NCw3ICsxMTgyLDE0IEBAIGV4dGVybiB2b2lkIGFs bG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICAgIChUWVBFX0hJR0hfQk9V TkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCiAgCiAgI2RlZmluZSBUWVBFX0FSUkFZ X0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXApAQCAtNjczNyw5ICszMjc5LDkgQEAgaW5k ZXggMTdiZmJjNS4uNzJlOWNjNSAxMDA2NDQKICAKICAvKiBDKysgKi8KICAKLUBAIC0xNTMxLDYg KzE2MzYsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0 IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKK0BAIC0xNTI5LDYgKzE2MzQsMTggQEAgZXh0ZXJuIHN0 cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUg KiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9v a3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKKyBleHRlcm4g c3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBMT05H RVNULCBMT05HRVNUKTsKICAKICtleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2VfYW55X2ZpZWxk X2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKICsJCQkJCQlpbnQgZmllbGRubyk7 CkBAIC02NzU1LDggKzMyOTcsOCBAQCBpbmRleCAxN2JmYmM1Li43MmU5Y2M1IDEwMDY0NAogKwog IGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdHlwZSAqLAogIAkJCQkJc3RydWN0IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBl ICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKLUBA IC0xNTc2LDYgKzE2OTMsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVj dCB0eXBlICosIHN0cnVjdCB0eXBlICopOworIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX3N0 cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBMT05HRVNULCBMT05HRVNUKTsKK0BAIC0x NTc0LDYgKzE2OTEsMTAgQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0 eXBlICosIHN0cnVjdCB0eXBlICopOwogIAogIGV4dGVybiBpbnQgaXNfdW5pcXVlX2FuY2VzdG9y IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKik7CiAgCkBAIC02NzY3LDcgKzMzMDksNyBA QCBpbmRleCAxN2JmYmM1Li43MmU5Y2M1IDEwMDY0NAogIC8qIE92ZXJsb2FkIHJlc29sdXRpb24g Ki8KICAKICAjZGVmaW5lIExFTkdUSF9NQVRDSChidikgKChidiktPnJhbmtbMF0pCi1AQCAtMTY1 MSwxMCArMTc3MiwxMyBAQCBleHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmludF90eXBlIChjaGFy ICosIGludCk7CitAQCAtMTY1Miw4ICsxNzczLDcgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2Vf cHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGll ZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC02Nzc3LDMzMiAr MzMxOSw4IEBAIGluZGV4IDE3YmZiYzUuLjcyZTljYzUgMTAwNjQ0CiAgCQkJCQkgaHRhYl90IGNv cGllZF90eXBlcyk7CiAgCiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGUgKGNvbnN0IHN0 cnVjdCB0eXBlICp0eXBlKTsKLSAKLSsjaWYgMAotK2V4dGVybiB2b2lkIGZyZWVfYWxsX3R5cGVz ICh2b2lkKTsKLSsjZW5kaWYKLSsKLSAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLwotZGlmZiAtLWdp dCBhL2dkYi9qaXQuYyBiL2dkYi9qaXQuYwotaW5kZXggNTY4ZDE3Yi4uY2RkOWY0OSAxMDA2NDQK LS0tLSBhL2dkYi9qaXQuYwotKysrIGIvZ2RiL2ppdC5jCi1AQCAtMzgsNiArMzgsNyBAQAotICNp bmNsdWRlICJnZGItZGxmY24uaCIKLSAjaW5jbHVkZSAiZ2RiX3N0YXQuaCIKLSAjaW5jbHVkZSAi ZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gc3RhdGljIGNvbnN0IGNo YXIgKmppdF9yZWFkZXJfZGlyID0gTlVMTDsKLSAKLUBAIC0xMzIsMTcgKzEzMywxNiBAQCBtZW1f YmZkX2lvdmVjX3N0YXQgKHN0cnVjdCBiZmQgKmFiZmQsIHZvaWQgKnN0cmVhbSwgc3RydWN0IHN0 YXQgKnNiKQotIHN0YXRpYyBzdHJ1Y3QgYmZkICoKLSBiZmRfb3Blbl9mcm9tX3RhcmdldF9tZW1v cnkgKENPUkVfQUREUiBhZGRyLCBVTE9OR0VTVCBzaXplLCBjaGFyICp0YXJnZXQpCi0gewotLSAg Y29uc3QgY2hhciAqZmlsZW5hbWUgPSB4c3RyZHVwICgiPGluLW1lbW9yeT4iKTsKLSAgIHN0cnVj dCB0YXJnZXRfYnVmZmVyICpidWZmZXIgPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCB0YXJnZXRf YnVmZmVyKSk7Ci0gCi0gICBidWZmZXItPmJhc2UgPSBhZGRyOwotICAgYnVmZmVyLT5zaXplID0g c2l6ZTsKLS0gIHJldHVybiBiZmRfb3BlbnJfaW92ZWMgKGZpbGVuYW1lLCB0YXJnZXQsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICBtZW1fYmZkX2lvdmVjX29wZW4sCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICBidWZmZXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1fYmZk X2lvdmVjX3ByZWFkLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtX2JmZF9pb3ZlY19j bG9zZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIG1lbV9iZmRfaW92ZWNfc3RhdCk7Ci0r ICByZXR1cm4gZ2RiX2JmZF9vcGVucl9pb3ZlYyAoIjxpbi1tZW1vcnk+IiwgdGFyZ2V0LAotKwkJ CSAgICAgIG1lbV9iZmRfaW92ZWNfb3BlbiwKLSsJCQkgICAgICBidWZmZXIsCi0rCQkJICAgICAg bWVtX2JmZF9pb3ZlY19wcmVhZCwKLSsJCQkgICAgICBtZW1fYmZkX2lvdmVjX2Nsb3NlLAotKwkJ CSAgICAgIG1lbV9iZmRfaW92ZWNfc3RhdCk7Ci0gfQotIAotIC8qIE9uZSByZWFkZXIgdGhhdCBo YXMgYmVlbiBsb2FkZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgY2FuIHBvdGVudGlhbGx5IGJlIHVzZWQg dG8KLUBAIC04NjgsNyArODY4LDcgQEAgaml0X2JmZF90cnlfcmVhZF9zeW10YWIgKHN0cnVjdCBq aXRfY29kZV9lbnRyeSAqY29kZV9lbnRyeSwKLSAgICAgewotICAgICAgIHByaW50Zl91bmZpbHRl cmVkIChfKCJcCi0gSklUZWQgc3ltYm9sIGZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlLCBpZ25v cmluZyBpdC5cbiIpKTsKLS0gICAgICBiZmRfY2xvc2UgKG5iZmQpOwotKyAgICAgIGdkYl9iZmRf dW5yZWYgKG5iZmQpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAgLTg5Niw3ICs4OTYs OCBAQCBKSVRlZCBzeW1ib2wgZmlsZSBpcyBub3QgYW4gb2JqZWN0IGZpbGUsIGlnbm9yaW5nIGl0 LlxuIikpOwotICAgICAgICAgKytpOwotICAgICAgIH0KLSAKLS0gIC8qIFRoaXMgY2FsbCB0YWtl cyBvd25lcnNoaXAgb2YgTkJGRC4gIEl0IGRvZXMgbm90IHRha2Ugb3duZXJzaGlwIG9mIFNBSS4g ICovCi0rICAvKiBUaGlzIGNhbGwgZG9lcyBub3QgdGFrZSBvd25lcnNoaXAgb2YgU0FJLiAgKi8K LSsgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKG5iZmQpOwotICAgb2JqZmlsZSA9IHN5bWJvbF9m aWxlX2FkZF9mcm9tX2JmZCAobmJmZCwgMCwgc2FpLCBPQkpGX1NIQVJFRCwgTlVMTCk7Ci0gCi0g ICBkb19jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKLWRpZmYgLS1naXQgYS9nZGIvbTMyci1yb20u YyBiL2dkYi9tMzJyLXJvbS5jCi1pbmRleCA3NmU0YmYxLi45YTJmNWFhIDEwMDY0NAotLS0tIGEv Z2RiL20zMnItcm9tLmMKLSsrKyBiL2dkYi9tMzJyLXJvbS5jCi1AQCAtNDAsNiArNDAsNyBAQAot ICNpbmNsdWRlICJpbmZlcmlvci5oIgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlICJy ZWdjYWNoZS5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gLyoKLSAgKiBBbGwgdGhpcyBz dHVmZiBqdXN0IHRvIGdldCBteSBob3N0IGNvbXB1dGVyJ3MgSVAgYWRkcmVzcyEKLUBAIC0xMjQs MTMgKzEyNSwxNSBAQCBtMzJyX2xvYWQgKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCi0g ICBiZmQgKmFiZmQ7Ci0gICB1bnNpZ25lZCBpbnQgZGF0YV9jb3VudCA9IDA7Ci0gICBzdHJ1Y3Qg dGltZXZhbCBzdGFydF90aW1lLCBlbmRfdGltZTsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVw OwotIAotICAgaWYgKGZpbGVuYW1lID09IE5VTEwgfHwgZmlsZW5hbWVbMF0gPT0gMCkKLSAgICAg ZmlsZW5hbWUgPSBnZXRfZXhlY19maWxlICgxKTsKLSAKLS0gIGFiZmQgPSBiZmRfb3BlbnIgKGZp bGVuYW1lLCAwKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29wZW5yIChmaWxlbmFtZSwgMCk7Ci0gICBp ZiAoIWFiZmQpCi0gICAgIGVycm9yIChfKCJVbmFibGUgdG8gb3BlbiBmaWxlICVzLiIpLCBmaWxl bmFtZSk7Ci0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYWJmZCk7Ci0gICBp ZiAoYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVjdCkgPT0gMCkKLSAgICAgZXJyb3Ig KF8oIkZpbGUgaXMgbm90IGFuIG9iamVjdCBmaWxlLiIpKTsKLSAgIGdldHRpbWVvZmRheSAoJnN0 YXJ0X3RpbWUsIE5VTEwpOwotQEAgLTE4OCw2ICsxOTEsNyBAQCBtMzJyX2xvYWQgKGNoYXIgKmZp bGVuYW1lLCBpbnQgZnJvbV90dHkpCi0gICAgICBjb25mdXNlZC4uLiAgKi8KLSAKLSAgIGNsZWFy X3N5bXRhYl91c2VycyAoMCk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gfQotIAotIHN0 YXRpYyB2b2lkCi1AQCAtNDM0LDYgKzQzOCw3IEBAIG0zMnJfdXBsb2FkX2NvbW1hbmQgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIGNoYXIgYnVmWzEwMjRdOwotICAgc3RydWN0IGhvc3Rl bnQgKmhvc3RlbnQ7Ci0gICBzdHJ1Y3QgaW5fYWRkciBpbmV0X2FkZHI7Ci0rICBzdHJ1Y3QgY2xl YW51cCAqY2xlYW51cDsKLSAKLSAgIC8qIEZpcnN0IGNoZWNrIHRvIHNlZSBpZiB0aGVyZSdzIGFu IGV0aGVybmV0IHBvcnQhICAqLwotICAgbW9uaXRvcl9wcmludGYgKCJ1c3RcciIpOwotQEAgLTUy NCw3ICs1MjksOCBAQCBtMzJyX3VwbG9hZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCi0gICAgIHByaW50Zl9maWx0ZXJlZCAoIiAtLSBFdGhlcm5ldCBsb2FkIGNvbXBsZXRlLlxu Iik7Ci0gCi0gICBnZXR0aW1lb2ZkYXkgKCZlbmRfdGltZSwgTlVMTCk7Ci0tICBhYmZkID0gYmZk X29wZW5yIChhcmdzLCAwKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29wZW5yIChhcmdzLCAwKTsKLSsg IGNsZWFudXAgPSBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChhYmZkKTsKLSAgIGlmIChhYmZkICE9 IE5VTEwpCi0gICAgIHsJCS8qIERvd25sb2FkIGlzIGRvbmUgLS0gcHJpbnQgc2VjdGlvbiBzdGF0 aXN0aWNzLiAgKi8KLSAgICAgICBpZiAoYmZkX2NoZWNrX2Zvcm1hdCAoYWJmZCwgYmZkX29iamVj dCkgPT0gMCkKLUBAIC01NjUsNiArNTcxLDcgQEAgbTMycl91cGxvYWRfY29tbWFuZCAoY2hhciAq YXJncywgaW50IGZyb21fdHR5KQotICAgICAgY29uZnVzZWQuLi4gICovCi0gCi0gICBjbGVhcl9z eW10YWJfdXNlcnMgKDApOwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLSAKLSAvKiBQ cm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwot ZGlmZiAtLWdpdCBhL2dkYi9tYWNob3JlYWQuYyBiL2dkYi9tYWNob3JlYWQuYwotaW5kZXggMjI1 MzBhYi4uMGQ3NTc4YSAxMDA2NDQKLS0tLSBhL2dkYi9tYWNob3JlYWQuYwotKysrIGIvZ2RiL21h Y2hvcmVhZC5jCi1AQCAtNDU0LDYgKzQ1NCw3IEBAIG1hY2hvX2FkZF9vc29fc3ltZmlsZSAob3Nv X2VsICpvc28sIGJmZCAqYWJmZCwKLSAgIGFzeW1ib2wgKipzeW1wOwotICAgc3RydWN0IGJmZF9o YXNoX3RhYmxlIHRhYmxlOwotICAgaW50IG5icl9zZWN0aW9uczsKLSsgIHN0cnVjdCBjbGVhbnVw ICpjbGVhbnVwOwotIAotICAgLyogUGVyIHNlY3Rpb24gZmxhZyB0byBtYXJrIHdoaWNoIHNlY3Rp b24gaGF2ZSBiZWVuIHJlYmFzZWQuICAqLwotICAgdW5zaWduZWQgY2hhciAqc2VjdGlvbnNfcmVi YXNlZDsKLUBAIC00NjYsMTQgKzQ2NywxNCBAQCBtYWNob19hZGRfb3NvX3N5bWZpbGUgKG9zb19l bCAqb3NvLCBiZmQgKmFiZmQsCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChfKCJgJXMnOiBjYW4n dCByZWFkIHN5bWJvbHM6ICVzLiIpLCBvc28tPm5hbWUsCi0gICAgICAgICAgICAgICAgYmZkX2Vy cm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotLSAgICAgIGJmZF9jbG9zZSAoYWJmZCk7Ci0rICAg ICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0gICBp ZiAoYWJmZC0+bXlfYXJjaGl2ZSA9PSBOVUxMICYmIG9zby0+bXRpbWUgIT0gYmZkX2dldF9tdGlt ZSAoYWJmZCkpCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChfKCJgJXMnOiBmaWxlIHRpbWUgc3Rh bXAgbWlzbWF0Y2guIiksIG9zby0+bmFtZSk7Ci0tICAgICAgYmZkX2Nsb3NlIChhYmZkKTsKLSsg ICAgICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KLSAKLUBA IC00ODIsNyArNDgzLDcgQEAgbWFjaG9fYWRkX29zb19zeW1maWxlIChvc29fZWwgKm9zbywgYmZk ICphYmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zby0+bmJyX3N5bXMpKQot ICAgICB7Ci0gICAgICAgd2FybmluZyAoXygiYCVzJzogY2FuJ3QgY3JlYXRlIGhhc2ggdGFibGUi KSwgb3NvLT5uYW1lKTsKLS0gICAgICBiZmRfY2xvc2UgKGFiZmQpOwotKyAgICAgIGdkYl9iZmRf dW5yZWYgKGFiZmQpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotQEAgLTYyOSwxOCArNjMw LDE1IEBAIG1hY2hvX2FkZF9vc29fc3ltZmlsZSAob3NvX2VsICpvc28sIGJmZCAqYWJmZCwKLSAK LSAgIGJmZF9oYXNoX3RhYmxlX2ZyZWUgKCZ0YWJsZSk7Ci0gCi0tICAvKiBNYWtlIHN1cmUgdGhh dCB0aGUgZmlsZW5hbWUgd2FzIG1hbGxvYydlZC4gIFRoZSBjdXJyZW50IGZpbGVuYW1lIGNvbWVz Ci0tICAgICBlaXRoZXIgZnJvbSBhbiBPU08gc3ltYm9sIG5hbWUgb3IgZnJvbSBhbiBhcmNoaXZl IG5hbWUuICBNZW1vcnkgZm9yIGJvdGgKLS0gICAgIGlzIG5vdCBtYW5hZ2VkIGJ5IGdkYi4gICov Ci0tICBhYmZkLT5maWxlbmFtZSA9IHhzdHJkdXAgKGFiZmQtPmZpbGVuYW1lKTsKLS0KLSAgIC8q IFdlIG5lZWQgdG8gY2xlYXIgU1lNRklMRV9NQUlOTElORSB0byBhdm9pZCBpbnRlcnJhY3RpdmUg cXVlc3Rpb24KLSAgICAgIGZyb20gc3ltZmlsZS5jOnN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJz X29yX29mZnNldHMuICAqLwotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFi ZmQpOwotICAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkCi0gICAgIChhYmZkLCBzeW1maWxlX2Zs YWdzICYgfihTWU1GSUxFX01BSU5MSU5FIHwgU1lNRklMRV9WRVJCT1NFKSwgTlVMTCwKLSAgICAg IG1haW5fb2JqZmlsZS0+ZmxhZ3MgJiAoT0JKRl9SRU9SREVSRUQgfCBPQkpGX1NIQVJFRAotIAkJ CSAgICB8IE9CSkZfUkVBRE5PVyB8IE9CSkZfVVNFUkxPQURFRCksCi0gICAgICBtYWluX29iamZp bGUpOwotKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotIH0KLSAKLSAvKiBSZWFkIHN5bWJvbHMg ZnJvbSB0aGUgdmVjdG9yIG9mIG9zbyBmaWxlcy4gICovCi1AQCAtNjUxLDYgKzY0OSw3IEBAIG1h Y2hvX3N5bWZpbGVfcmVhZF9hbGxfb3NvIChzdHJ1Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLCBp bnQgc3ltZmlsZV9mbGFncykKLSAgIGludCBpeDsKLSAgIFZFQyAob3NvX2VsKSAqdmVjOwotICAg b3NvX2VsICpvc287Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cCA9IG1ha2VfY2xlYW51cCAo bnVsbF9jbGVhbnVwLCBOVUxMKTsKLSAKLSAgIHZlYyA9IG9zb192ZWN0b3I7Ci0gICBvc29fdmVj dG9yID0gTlVMTDsKLUBAIC02NzcsNiArNjc2LDggQEAgbWFjaG9fc3ltZmlsZV9yZWFkX2FsbF9v c28gKHN0cnVjdCBvYmpmaWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQotIAkg IG1lbWNweSAoYXJjaGl2ZV9uYW1lLCBvc28tPm5hbWUsIHBmeF9sZW4pOwotIAkgIGFyY2hpdmVf bmFtZVtwZnhfbGVuXSA9ICdcMCc7Ci0gCi0rCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgYXJjaGl2 ZV9uYW1lKTsKLSsKLSAgICAgICAgICAgLyogQ29tcHV0ZSBudW1iZXIgb2Ygb3NvIGZvciB0aGlz IGFyY2hpdmUuICAqLwotICAgICAgICAgICBmb3IgKGxhc3RfaXggPSBpeDsKLSAgICAgICAgICAg ICAgICBWRUNfaXRlcmF0ZSAob3NvX2VsLCB2ZWMsIGxhc3RfaXgsIG9zbzIpOyBsYXN0X2l4Kysp Ci1AQCAtNjg2LDcgKzY4Nyw3IEBAIG1hY2hvX3N5bWZpbGVfcmVhZF9hbGxfb3NvIChzdHJ1Y3Qg b2JqZmlsZSAqbWFpbl9vYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAgICAgICAgICAgICB9 Ci0gCi0gCSAgLyogT3BlbiB0aGUgYXJjaGl2ZSBhbmQgY2hlY2sgdGhlIGZvcm1hdC4gICovCi0t CSAgYXJjaGl2ZV9iZmQgPSBiZmRfb3BlbnIgKGFyY2hpdmVfbmFtZSwgZ251dGFyZ2V0KTsKLSsJ ICBhcmNoaXZlX2JmZCA9IGdkYl9iZmRfb3BlbnIgKGFyY2hpdmVfbmFtZSwgZ251dGFyZ2V0KTsK LSAJICBpZiAoYXJjaGl2ZV9iZmQgPT0gTlVMTCkKLSAJICAgIHsKLSAJICAgICAgd2FybmluZyAo XygiQ291bGQgbm90IG9wZW4gT1NPIGFyY2hpdmUgZmlsZSBcIiVzXCIiKSwKLUBAIC02OTgsMTcg KzY5OSwxOCBAQCBtYWNob19zeW1maWxlX3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1h aW5fb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCSAgICB7Ci0gCSAgICAgIHdhcm5pbmcg KF8oIk9TTyBhcmNoaXZlIGZpbGUgXCIlc1wiIG5vdCBhbiBhcmNoaXZlLiIpLAotIAkJICAgICAg IGFyY2hpdmVfbmFtZSk7Ci0tCSAgICAgIGJmZF9jbG9zZSAoYXJjaGl2ZV9iZmQpOwotKwkgICAg ICBnZGJfYmZkX3VucmVmIChhcmNoaXZlX2JmZCk7Ci0gICAgICAgICAgICAgICBpeCA9IGxhc3Rf aXg7Ci0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgfQotLQkgIG1lbWJlcl9iZmQgPSBiZmRfb3Bl bnJfbmV4dF9hcmNoaXZlZF9maWxlIChhcmNoaXZlX2JmZCwgTlVMTCk7Ci0rCi0rCSAgbWVtYmVy X2JmZCA9IGdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhcmNoaXZlX2JmZCwgTlVM TCk7Ci0gCi0gCSAgaWYgKG1lbWJlcl9iZmQgPT0gTlVMTCkKLSAJICAgIHsKLSAJICAgICAgd2Fy bmluZyAoXygiQ291bGQgbm90IHJlYWQgYXJjaGl2ZSBtZW1iZXJzIG91dCBvZiAiCi0gCQkJICJP U08gYXJjaGl2ZSBcIiVzXCIiKSwgYXJjaGl2ZV9uYW1lKTsKLS0JICAgICAgYmZkX2Nsb3NlIChh cmNoaXZlX2JmZCk7Ci0rCSAgICAgIGdkYl9iZmRfdW5yZWYgKGFyY2hpdmVfYmZkKTsKLSAgICAg ICAgICAgICAgIGl4ID0gbGFzdF9peDsKLSAJICAgICAgY29udGludWU7Ci0gCSAgICB9Ci1AQCAt NzM4LDEyICs3NDAsMTIgQEAgbWFjaG9fc3ltZmlsZV9yZWFkX2FsbF9vc28gKHN0cnVjdCBvYmpm aWxlICptYWluX29iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQotICAgICAgICAgICAgICAgICB9 Ci0gCi0gICAgICAgICAgICAgICBwcmV2ID0gbWVtYmVyX2JmZDsKLS0JICAgICAgbWVtYmVyX2Jm ZCA9IGJmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUKLS0JCShhcmNoaXZlX2JmZCwgbWVtYmVy X2JmZCk7Ci0rCSAgICAgIG1lbWJlcl9iZmQgPSBnZGJfYmZkX29wZW5yX25leHRfYXJjaGl2ZWRf ZmlsZSAoYXJjaGl2ZV9iZmQsCi0rCQkJCQkJCSAgICAgbWVtYmVyX2JmZCk7Ci0gCi0gICAgICAg ICAgICAgICAvKiBGcmVlIHByZXZpb3VzIG1lbWJlciBpZiBub3QgcmVmZXJlbmNlZCBieSBhbiBv c28uICAqLwotICAgICAgICAgICAgICAgaWYgKGl4MiA+PSBsYXN0X2l4KQotLSAgICAgICAgICAg ICAgICBiZmRfY2xvc2UgKHByZXYpOwotKyAgICAgICAgICAgICAgICBnZGJfYmZkX3VucmVmIChw cmV2KTsKLSAJICAgIH0KLSAgICAgICAgICAgZm9yIChpeDIgPSBpeDsgaXgyIDwgbGFzdF9peDsg aXgyKyspCi0gICAgICAgICAgICAgewotQEAgLTc1OSw3ICs3NjEsNyBAQCBtYWNob19zeW1maWxl X3JlYWRfYWxsX29zbyAoc3RydWN0IG9iamZpbGUgKm1haW5fb2JqZmlsZSwgaW50IHN5bWZpbGVf ZmxhZ3MpCi0gCXsKLSAgICAgICAgICAgYmZkICphYmZkOwotIAotLQkgIGFiZmQgPSBiZmRfb3Bl bnIgKG9zby0+bmFtZSwgZ251dGFyZ2V0KTsKLSsJICBhYmZkID0gZ2RiX2JmZF9vcGVuciAob3Nv LT5uYW1lLCBnbnV0YXJnZXQpOwotIAkgIGlmICghYWJmZCkKLSAgICAgICAgICAgICB3YXJuaW5n IChfKCJgJXMnOiBjYW4ndCBvcGVuIHRvIHJlYWQgc3ltYm9sczogJXMuIiksIG9zby0+bmFtZSwK LSAgICAgICAgICAgICAgICAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci1A QCAtNzcxLDYgKzc3Myw3IEBAIG1hY2hvX3N5bWZpbGVfcmVhZF9hbGxfb3NvIChzdHJ1Y3Qgb2Jq ZmlsZSAqbWFpbl9vYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAgICAgfQotIAotICAgVkVD X2ZyZWUgKG9zb19lbCwgdmVjKTsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSB9Ci0gCi0g LyogRFNZTSAoZGVidWcgc3ltYm9scykgZmlsZXMgY29udGFpbiB0aGUgZGVidWcgaW5mbyBvZiBh biBleGVjdXRhYmxlLgotQEAgLTgwOCwyMCArODExLDE3IEBAIG1hY2hvX2NoZWNrX2RzeW0gKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgICAgIHdhcm5pbmcgKF8oImNhbid0IGZpbmQgVVVJ RCBpbiAlcyIpLCBvYmpmaWxlLT5uYW1lKTsKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQot LSAgZHN5bV9maWxlbmFtZSA9IHhzdHJkdXAgKGRzeW1fZmlsZW5hbWUpOwotLSAgZHN5bV9iZmQg PSBiZmRfb3BlbnIgKGRzeW1fZmlsZW5hbWUsIGdudXRhcmdldCk7Ci0rICBkc3ltX2JmZCA9IGdk Yl9iZmRfb3BlbnIgKGRzeW1fZmlsZW5hbWUsIGdudXRhcmdldCk7Ci0gICBpZiAoZHN5bV9iZmQg PT0gTlVMTCkKLSAgICAgewotICAgICAgIHdhcm5pbmcgKF8oImNhbid0IG9wZW4gZHN5bSBmaWxl ICVzIiksIGRzeW1fZmlsZW5hbWUpOwotLSAgICAgIHhmcmVlIChkc3ltX2ZpbGVuYW1lKTsKLSAg ICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChk c3ltX2JmZCwgYmZkX29iamVjdCkpCi0gICAgIHsKLS0gICAgICBiZmRfY2xvc2UgKGRzeW1fYmZk KTsKLSsgICAgICBnZGJfYmZkX3VucmVmIChkc3ltX2JmZCk7Ci0gICAgICAgd2FybmluZyAoXygi YmFkIGRzeW0gZmlsZSBmb3JtYXQ6ICVzIiksIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkp KTsKLS0gICAgICB4ZnJlZSAoZHN5bV9maWxlbmFtZSk7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0g ICAgIH0KLSAKLUBAIC04MjksMTYgKzgyOSwxNCBAQCBtYWNob19jaGVja19kc3ltIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCRkRf TUFDSF9PX0xDX1VVSUQsICZkc3ltX3V1aWQpID09IDApCi0gICAgIHsKLSAgICAgICB3YXJuaW5n IChfKCJjYW4ndCBmaW5kIFVVSUQgaW4gJXMiKSwgZHN5bV9maWxlbmFtZSk7Ci0tICAgICAgYmZk X2Nsb3NlIChkc3ltX2JmZCk7Ci0tICAgICAgeGZyZWUgKGRzeW1fZmlsZW5hbWUpOwotKyAgICAg IGdkYl9iZmRfdW5yZWYgKGRzeW1fYmZkKTsKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQot ICAgaWYgKG1lbWNtcCAoZHN5bV91dWlkLT5jb21tYW5kLnV1aWQudXVpZCwgbWFpbl91dWlkLT5j b21tYW5kLnV1aWQudXVpZCwKLSAgICAgICAgICAgICAgIHNpemVvZiAobWFpbl91dWlkLT5jb21t YW5kLnV1aWQudXVpZCkpKQotICAgICB7Ci0gICAgICAgd2FybmluZyAoXygiZHN5bSBmaWxlIFVV SUQgZG9lc24ndCBtYXRjaCB0aGUgb25lIGluICVzIiksIG9iamZpbGUtPm5hbWUpOwotLSAgICAg IGJmZF9jbG9zZSAoZHN5bV9iZmQpOwotLSAgICAgIHhmcmVlIChkc3ltX2ZpbGVuYW1lKTsKLSsg ICAgICBnZGJfYmZkX3VucmVmIChkc3ltX2JmZCk7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAg IH0KLSAgIHJldHVybiBkc3ltX2JmZDsKLUBAIC05MDIsNiArOTAwLDcgQEAgbWFjaG9fc3ltZmls ZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCSAg aW50IGl4OwotIAkgIG9zb19lbCAqb3NvOwotICAgICAgICAgICBzdHJ1Y3QgYmZkX3NlY3Rpb24g KmFzZWN0LCAqZHNlY3Q7Ci0rCSAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0gCi0gCSAgaWYg KG1hY2hfb19kZWJ1Z19sZXZlbCA+IDApCi0gCSAgICBwcmludGZfdW5maWx0ZXJlZCAoXygiZHN5 bSBmaWxlIGZvdW5kXG4iKSk7Ci1AQCAtOTIyLDcgKzkyMSw5IEBAIG1hY2hvX3N5bWZpbGVfcmVh ZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQotICAgICAgICAg ICAgIH0KLSAKLSAJICAvKiBBZGQgdGhlIGRzeW0gZmlsZSBhcyBhIHNlcGFyYXRlIGZpbGUuICAq LwotKwkgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChkc3ltX2JmZCk7Ci0gICAg ICAgICAgIHN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoZHN5bV9iZmQsIHN5bWZpbGVfZmxhZ3Ms IG9iamZpbGUpOwotKwkgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSAKLSAJICAvKiBEb24ndCB0 cnkgdG8gcmVhZCBkd2FyZjIgZnJvbSBtYWluIGZpbGUgb3Igc2hhcmVkIGxpYnJhcmllcy4gICov Ci0gICAgICAgICAgIHJldHVybjsKIGRpZmYgLS1naXQgYS9nZGIvbWFpbi5jIGIvZ2RiL21haW4u YwotaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKK2luZGV4IGM5NDM5YmIuLjZjNGFjYzQg MTAwNjQ0CiAtLS0gYS9nZGIvbWFpbi5jCiArKysgYi9nZGIvbWFpbi5jCiBAQCAtMzcsNiArMzcs NyBAQApAQCAtNzExMyw3ICszMzMxLDcgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQK ICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgogICNpbmNs dWRlICJweXRob24vcHl0aG9uLmgiCi1AQCAtMjgzLDYgKzI4NCw4IEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCitAQCAtMzE0LDYgKzMxNSw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCiAgICBjaGFyICpjZGFyZyA9IE5VTEw7CiAgICBjaGFyICp0dHlhcmcgPSBOVUxMOwogIApA QCAtNzEyMiw3ICszMzQwLDcgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKICAgIC8q IFRoZXNlIGFyZSBzdGF0aWMgc28gdGhhdCB3ZSBjYW4gdGFrZSB0aGVpciBhZGRyZXNzIGluIGFu CiAgICAgICBpbml0aWFsaXplci4gICovCiAgICBzdGF0aWMgaW50IHByaW50X2hlbHA7Ci1AQCAt NDcxLDEwICs0NzQsMTQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC01MDIsMTAg KzUwNSwxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsiYXJncyIsIG5v X2FyZ3VtZW50LCAmc2V0X2FyZ3MsIDF9LAogICAgICAgIHsibCIsIHJlcXVpcmVkX2FyZ3VtZW50 LCAwLCAnbCd9LAogICAgICAgIHsicmV0dXJuLWNoaWxkLXJlc3VsdCIsIG5vX2FyZ3VtZW50LCAm cmV0dXJuX2NoaWxkX3Jlc3VsdCwgMX0sCkBAIC03MTM4LDcgKzMzNTYsNyBAQCBpbmRleCBkMDc1 Njk0Li5lNGRhM2YxIDEwMDY0NAogICAgICAgIHsKICAJaW50IG9wdGlvbl9pbmRleDsKICAKLUBA IC00OTIsNiArNDk5LDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC01MjMsNiAr NTMwLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAJICBjYXNlIDA6CiAgCSAgICAv KiBMb25nIG9wdGlvbiB0aGF0IGp1c3Qgc2V0cyBhIGZsYWcuICAqLwogIAkgICAgYnJlYWs7CkBA IC03MTQ4LDcgKzMzNjYsNyBAQCBpbmRleCBkMDc1Njk0Li5lNGRhM2YxIDEwMDY0NAogIAkgIGNh c2UgT1BUX1NFOgogIAkgICAgc3ltYXJnID0gb3B0YXJnOwogIAkgICAgZXhlY2FyZyA9IG9wdGFy ZzsKLUBAIC02OTksNyArNzA5LDMxIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAt NzMxLDcgKzc0MSwzMSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogTm93 IHRoYXQgZ2RiX2luaXQgaGFzIGNyZWF0ZWQgdGhlIGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGlu CiAgICAgICBwb3NpdGlvbiB0byBzZXQgYXJncyBmb3IgdGhhdCBpbmZlcmlvci4gICovCkBAIC03 MTgxLDcgKzMzOTksNyBAQCBpbmRleCBkMDc1Njk0Li5lNGRhM2YxIDEwMDY0NAogICAgICB7CiAg ICAgICAgLyogVGhlIHJlbWFpbmluZyBvcHRpb25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlv bnMgZm9yIHRoZQogIAkgaW5mZXJpb3IuICBUaGUgZmlyc3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBm aWxlLCBhbmQgdGhlIHJlc3QKLUBAIC05NzksNyArMTAxMyw4IEBAIGNhcHR1cmVkX21haW4gKHZv aWQgKmRhdGEpCitAQCAtMTAxMSw3ICsxMDQ1LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKICAKICAgIC8qIFJlYWQgaW4gdGhlIG9sZCBoaXN0b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFu ZCBmaWxlcyBoYXZlIGJlZW4KICAgICAgIHJlYWQuICAqLwpAQCAtNzE5MSw3ICszNDA5LDcgQEAg aW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKICAKICAgIGlmIChiYXRjaF9mbGFnKQogICAg ICB7Ci1AQCAtOTkwLDEzICsxMDI1LDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitA QCAtMTAyMiwxMyArMTA1NywyNSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgLyog U2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1c2FnZS4gICovCiAgICBkb19jbGVhbnVwcyAocHJlX3N0 YXRfY2hhaW4pOwogIApAQCAtNzIyMyw3ICszNDQxLDcgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNm MSAxMDA2NDQKICAgICAgfQogICAgLyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9j b21tYW5kLiAgKi8KICB9Ci1AQCAtMTAyOCw3ICsxMDc1LDEyIEBAIHByaW50X2dkYl9oZWxwIChz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQorQEAgLTEwNjAsNyArMTEwNywxMiBAQCBwcmludF9nZGJf aGVscCAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKICAgIGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwK ICBUaGlzIGlzIHRoZSBHTlUgZGVidWdnZXIuICBVc2FnZTpcblxuXAogICAgICBnZGIgW29wdGlv bnNdIFtleGVjdXRhYmxlLWZpbGUgW2NvcmUtZmlsZSBvciBwcm9jZXNzLWlkXV1cblwKQEAgLTcy MzcsMTIgKzM0NTUsMTIgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKICBPcHRpb25z OlxuXG5cCiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi1AQCAtMTA2 OCw3ICsxMTIwLDEzIEBAIE9wdGlvbnM6XG5cblwKLSAgIC0tbncJCSAgICAgRG8gbm90IHVzZSBh IHdpbmRvdyBpbnRlcmZhY2UuXG5cCi0gICAtLW54ICAgICAgICAgICAgICAgRG8gbm90IHJlYWQg IiksIHN0cmVhbSk7CitAQCAtMTEwMyw3ICsxMTU1LDEzIEBAIE9wdGlvbnM6XG5cblwKKyAgIGZw dXRzX3VuZmlsdGVyZWQgKF8oIiBmaWxlcy5cblwKKyAgIC0tbmggICAgICAgICAgICAgICBEbyBu b3QgcmVhZCAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3VuZmlsdGVyZWQgKGdkYmluaXQsIHN0cmVh bSk7Ci0tICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5cblwKLSsgIGZwdXRzX3VuZmlsdGVy ZWQgKF8oIiBmaWxlLlxuIiksIHN0cmVhbSk7CistICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmls ZSBmcm9tIGhvbWUgZGlyZWN0b3J5LlxuXAorKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUg ZnJvbSBob21lIGRpcmVjdG9yeS5cbiIpLCBzdHJlYW0pOwogKyNpZiBIQVZFX1BZVEhPTgogKyAg ZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogKyAgLS1weXRob24sIC1QICAgICAgIEZvbGxvd2luZyBh cmd1bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmluZ1xuXApAQCAtNzI1MiwxMjQg KzM0NzAsMTEgQEAgaW5kZXggZDA3NTY5NC4uZTRkYTNmMSAxMDA2NDQKICAgIC0tcXVpZXQgICAg ICAgICAgICBEbyBub3QgcHJpbnQgdmVyc2lvbiBudW1iZXIgb24gc3RhcnR1cC5cblwKICAgIC0t cmVhZG5vdyAgICAgICAgICBGdWxseSByZWFkIHN5bWJvbCBmaWxlcyBvbiBmaXJzdCBhY2Nlc3Mu XG5cCiAgIiksIHN0cmVhbSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmMgYi9nZGIvb2Jq ZmlsZXMuYwotaW5kZXggZjVlNWM3NS4uNDExNjE4ZiAxMDA2NDQKLS0tLSBhL2dkYi9vYmpmaWxl cy5jCi0rKysgYi9nZGIvb2JqZmlsZXMuYwotQEAgLTUzLDYgKzUzLDcgQEAKLSAjaW5jbHVkZSAi Y29tcGxhaW50cy5oIgotICNpbmNsdWRlICJwc3ltdGFiLmgiCi0gI2luY2x1ZGUgInNvbGlzdC5o IgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVu Y3Rpb25zICovCi0gCi1AQCAtMTk1LDcgKzE5Niw4IEBAIGFsbG9jYXRlX29iamZpbGUgKGJmZCAq YWJmZCwgaW50IGZsYWdzKQotICAgICAgdGhhdCBhbnkgZGF0YSB0aGF0IGlzIHJlZmVyZW5jZSBp cyBzYXZlZCBpbiB0aGUgcGVyLW9iamZpbGUgZGF0YQotICAgICAgcmVnaW9uLiAgKi8KLSAKLS0g IG9iamZpbGUtPm9iZmQgPSBnZGJfYmZkX3JlZiAoYWJmZCk7Ci0rICBvYmpmaWxlLT5vYmZkID0g YWJmZDsKLSsgIGdkYl9iZmRfcmVmIChhYmZkKTsKLSAgIGlmIChhYmZkICE9IE5VTEwpCi0gICAg IHsKLSAgICAgICAvKiBMb29rIHVwIHRoZSBnZGJhcmNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgQkZE LiAgKi8KLUBAIC0xNDU2LDc1ICsxNDU4LDYgQEAgb2JqZmlsZXNfY2hhbmdlZCAodm9pZCkKLSAg IGdldF9vYmpmaWxlX3BzcGFjZV9kYXRhIChjdXJyZW50X3Byb2dyYW1fc3BhY2UpLT5vYmpmaWxl c19jaGFuZ2VkX3AgPSAxOwotIH0KLSAKLS0vKiBDbG9zZSBBQkZELCBhbmQgd2FybiBpZiB0aGF0 IGZhaWxzLiAgKi8KLS0KLS1pbnQKLS1nZGJfYmZkX2Nsb3NlX29yX3dhcm4gKHN0cnVjdCBiZmQg KmFiZmQpCi0tewotLSAgaW50IHJldDsKLS0gIGNoYXIgKm5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1l IChhYmZkKTsKLS0KLS0gIHJldCA9IGJmZF9jbG9zZSAoYWJmZCk7Ci0tCi0tICBpZiAoIXJldCkK LS0gICAgd2FybmluZyAoXygiY2Fubm90IGNsb3NlIFwiJXNcIjogJXMiKSwKLS0JICAgICBuYW1l LCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0tCi0tICByZXR1cm4gcmV0OwotLX0K LS0KLS0vKiBBZGQgcmVmZXJlbmNlIHRvIEFCRkQuICBSZXR1cm5zIEFCRkQuICAqLwotLXN0cnVj dCBiZmQgKgotLWdkYl9iZmRfcmVmIChzdHJ1Y3QgYmZkICphYmZkKQotLXsKLS0gIGludCAqcF9y ZWZjb3VudDsKLS0KLS0gIGlmIChhYmZkID09IE5VTEwpCi0tICAgIHJldHVybiBOVUxMOwotLQot LSAgcF9yZWZjb3VudCA9IGJmZF91c3JkYXRhIChhYmZkKTsKLS0KLS0gIGlmIChwX3JlZmNvdW50 ICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICAqcF9yZWZjb3VudCArPSAxOwotLSAgICAgIHJldHVy biBhYmZkOwotLSAgICB9Ci0tCi0tICBwX3JlZmNvdW50ID0geG1hbGxvYyAoc2l6ZW9mICgqcF9y ZWZjb3VudCkpOwotLSAgKnBfcmVmY291bnQgPSAxOwotLSAgYmZkX3VzcmRhdGEgKGFiZmQpID0g cF9yZWZjb3VudDsKLS0KLS0gIHJldHVybiBhYmZkOwotLX0KLS0KLS0vKiBVbnJlZmVyZW5jZSBh bmQgcG9zc2libHkgY2xvc2UgQUJGRC4gICovCi0tdm9pZAotLWdkYl9iZmRfdW5yZWYgKHN0cnVj dCBiZmQgKmFiZmQpCi0tewotLSAgaW50ICpwX3JlZmNvdW50OwotLSAgY2hhciAqbmFtZTsKLS0K LS0gIGlmIChhYmZkID09IE5VTEwpCi0tICAgIHJldHVybjsKLS0KLS0gIHBfcmVmY291bnQgPSBi ZmRfdXNyZGF0YSAoYWJmZCk7Ci0tCi0tICAvKiBWYWxpZCByYW5nZSBmb3IgcF9yZWZjb3VudDog YSBwb2ludGVyIHRvIGludCBjb3VudGVyLCB3aGljaCBoYXMgYQotLSAgICAgdmFsdWUgb2YgMSAo c2luZ2xlIG93bmVyKSBvciAyIChzaGFyZWQpLiAgKi8KLS0gIGdkYl9hc3NlcnQgKCpwX3JlZmNv dW50ID09IDEgfHwgKnBfcmVmY291bnQgPT0gMik7Ci0tCi0tICAqcF9yZWZjb3VudCAtPSAxOwot LSAgaWYgKCpwX3JlZmNvdW50ID4gMCkKLS0gICAgcmV0dXJuOwotLQotLSAgeGZyZWUgKHBfcmVm Y291bnQpOwotLSAgYmZkX3VzcmRhdGEgKGFiZmQpID0gTlVMTDsgIC8qIFBhcmFub2lhLiAgKi8K LS0KLS0gIG5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKLS0gIGdkYl9iZmRfY2xvc2Vf b3Jfd2FybiAoYWJmZCk7Ci0tICB4ZnJlZSAobmFtZSk7Ci0tfQotLQotIC8qIFRoZSBkZWZhdWx0 IGltcGxlbWVudGF0aW9uIGZvciB0aGUgIml0ZXJhdGVfb3Zlcl9vYmpmaWxlc19pbl9zZWFyY2hf b3JkZXIiCi0gICAgZ2RiYXJjaCBtZXRob2QuICBJdCBpcyBlcXVpdmFsZW50IHRvIHVzZSB0aGUg QUxMX09CSkZJTEVTIG1hY3JvLAotICAgIHNlYXJjaGluZyB0aGUgb2JqZmlsZXMgaW4gdGhlIG9y ZGVyIHRoZXkgYXJlIHN0b3JlZCBpbnRlcm5hbGx5LAotZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxl cy5oIGIvZ2RiL29iamZpbGVzLmgKLWluZGV4IDAxYzNhZWEuLjBkZjU3OTggMTAwNjQ0Ci0tLS0g YS9nZGIvb2JqZmlsZXMuaAotKysrIGIvZ2RiL29iamZpbGVzLmgKLUBAIC01MjIsMTAgKzUyMiw2 IEBAIGV4dGVybiB2b2lkIHNldF9vYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAotIGV4dGVybiB2b2lkICpvYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot IAkJCSAgIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmRhdGEpOwotIAotLWV4dGVybiBzdHJ1 Y3QgYmZkICpnZGJfYmZkX3JlZiAoc3RydWN0IGJmZCAqYWJmZCk7Ci0tZXh0ZXJuIHZvaWQgZ2Ri X2JmZF91bnJlZiAoc3RydWN0IGJmZCAqYWJmZCk7Ci0tZXh0ZXJuIGludCBnZGJfYmZkX2Nsb3Nl X29yX3dhcm4gKHN0cnVjdCBiZmQgKmFiZmQpOwotLQotIGV4dGVybiB2b2lkIGRlZmF1bHRfaXRl cmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJjaF9vcmRlcgotICAgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLAotICAgIGl0ZXJhdGVfb3Zlcl9vYmpmaWxlc19pbl9zZWFyY2hfb3JkZXJfY2JfZnR5 cGUgKmNiLAogZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMgYi9nZGIvcC12YWxwcmludC5j Ci1pbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0NAoraW5kZXggYmNjMDU1ZS4uOGE5ZDY0NSAx MDA2NDQKIC0tLSBhL2dkYi9wLXZhbHByaW50LmMKICsrKyBiL2dkYi9wLXZhbHByaW50LmMKLUBA IC0zOSw2ICszOSw3IEBACitAQCAtMzgsNiArMzgsNyBAQAogICNpbmNsdWRlICJjcC1hYmkuaCIK ICAjaW5jbHVkZSAiY3Atc3VwcG9ydC5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCkBAIC03 Mzc3LDcgKzM0ODIsNyBAQCBpbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0NAogIAwKICAKICAv KiBEZWNvcmF0aW9ucyBmb3IgUGFzY2FsLiAgKi8KLUBAIC03NCw4ICs3NSwzMSBAQCBwYXNjYWxf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCitA QCAtNzMsOCArNzQsMzEgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAogICAgc3RydWN0IHR5cGUgKmNoYXJfdHlwZTsKICAgIENP UkVfQUREUiBhZGRyOwogICAgaW50IHdhbnRfc3BhY2UgPSAwOwpAQCAtNzQxMCw3ICszNTE1LDcg QEAgaW5kZXggYjg0MzRlZC4uOThhMDc2ZCAxMDA2NDQKICAgIHN3aXRjaCAoVFlQRV9DT0RFICh0 eXBlKSkKICAgICAgewogICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLUBAIC0xMzEsOCArMTU1 LDggQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAorQEAgLTEzMCw4ICsxNTQsOCBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCQl7CiAgCQkgIGkgPSAwOwog IAkJfQpAQCAtNzQyMSw3ICszNTI2LDcgQEAgaW5kZXggYjg0MzRlZC4uOThhMDc2ZCAxMDA2NDQK ICAJCQkJCW9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKICAJICAgICAgZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAifSIpOwogIAkgICAgfQotQEAgLTE3MCw2ICsxOTQsNyBAQCBwYXNjYWxf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCitA QCAtMTY5LDYgKzE5Myw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAJewogIAkgIC8qIFRyeSB0byBwcmludCB3aGF0IGZ1 bmN0aW9uIGl0IHBvaW50cyB0by4gICovCiAgCSAgcHJpbnRfYWRkcmVzc19kZW1hbmdsZSAob3B0 aW9ucywgZ2RiYXJjaCwgYWRkciwgc3RyZWFtLCBkZW1hbmdsZSk7CkBAIC03NDI5LDcgKzM1MzQs NyBAQCBpbmRleCBiODQzNGVkLi45OGEwNzZkIDEwMDY0NAogIAkgIHJldHVybjsKICAJfQogIAot QEAgLTI3MSw2ICsyOTYsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCitAQCAtMjcwLDYgKzI5NSw3IEBAIHBhc2NhbF92YWxf cHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAJICAg IH0KICAJfQogIApAQCAtNzQzNyw3ICszNTQyLDcgQEAgaW5kZXggYjg0MzRlZC4uOThhMDc2ZCAx MDA2NDQKICAgICAgICByZXR1cm47CiAgCiAgICAgIGNhc2UgVFlQRV9DT0RFX1JFRjoKLUBAIC00 MjEsNiArNDQ3LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLAorQEAgLTQxMCw2ICs0MzYsNyBAQCBwYXNjYWxfdmFsX3ByaW50 IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCSAgICAgVFlQ RV9DT0RFICh0eXBlKSk7CiAgICAgIH0KICAgIGdkYl9mbHVzaCAoc3RyZWFtKTsKQEAgLTc0NDYs MTAgKzM1NTEsMTAgQEAgaW5kZXggYjg0MzRlZC4uOThhMDc2ZCAxMDA2NDQKICAMCiAgdm9pZAog ZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKLWluZGV4IDUyOWM1MTcuLjYz MjZhMDEgMTAwNjQ0CitpbmRleCAwOWMzNzhiLi45M2M0MzRmIDEwMDY0NAogLS0tIGEvZ2RiL3Bh cnNlLmMKICsrKyBiL2dkYi9wYXJzZS5jCi1AQCAtMTcwOCw2ICsxNzA4LDcgQEAgcGFyc2VyX2Zw cmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKK0BAIC0xNzU3LDYgKzE3NTcsNyBA QCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQogIAogIGludAog IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9z LApAQCAtNzQ1Nyw3ICszNTYyLDcgQEAgaW5kZXggNTI5YzUxNy4uNjMyNmEwMSAxMDA2NDQKICAJ CQkgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkg ICAgICB2b2lkICpkYXRhKSwKICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNzQ5LDcgKzE3NTAsNyBA QCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBv cywKK0BAIC0xNzk2LDcgKzE3OTcsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZWx0 c1twb3MgKyAyICsgYXJnXS50eXBlOwogIAkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBU WVBFX09CSkZJTEUgKHR5cGUpOwogIApAQCAtNzQ2Niw3ICszNTcxLDcgQEAgaW5kZXggNTI5YzUx Ny4uNjMyNmEwMSAxMDA2NDQKICAJICAgICAgcmV0dXJuIDE7CiAgCSAgfQogICAgICAgIH0KLUBA IC0xNzY3LDcgKzE3NjgsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xODE0LDcgKzE4MTUsOCBAQCBvcGVyYXRvcl9jaGVj a19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAKICAJLyogQ2hl Y2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KICAJICAgU1lN Qk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KQEAgLTc0NzYsNyArMzU4 MSw3IEBAIGluZGV4IDUyOWM1MTcuLjYzMjZhMDEgMTAwNjQ0CiAgCSAgcmV0dXJuIDE7CiAgCiAg CS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2 YXJpYWJsZS4gICovCi1AQCAtMTc4MCwyNCArMTc4MiwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xODI3LDI0ICsxODI5 LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgcG9zLAogIAogICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JKRklMRSBp ZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAgLTc1MTIsNyArMzYxNyw3IEBA IGluZGV4IDUyOWM1MTcuLjYzMjZhMDEgMTAwNjQ0CiAgCSAgICAgaW50ICgqb2JqZmlsZV9mdW5j KSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAogIAkgICAgIHZvaWQgKmRh dGEpCiAgewotQEAgLTE4MTIsNyArMTgxNyw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLAorQEAgLTE4NTksNyArMTg2NCw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwogICAgICAgIGlm IChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBw b3MsCkBAIC03NTIzLDcgKzM2MjgsNyBAQCBpbmRleCA1MjljNTE3Li42MzI2YTAxIDEwMDY0NAog IAlyZXR1cm4gMTsKICAKICAgICAgICBlbmRwb3MgPSBwb3M7Ci1AQCAtMTg0Myw4ICsxODUwLDI5 IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQorQEAgLTE4OTAsOCArMTg5NywyOSBAQCBleHBfdXNlc19vYmpmaWxlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB7CiAgICBn ZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5V TEwpOwogIApAQCAtNzU1NSwxMCArMzY2MCwxMCBAQCBpbmRleCA1MjljNTE3Li42MzI2YTAxIDEw MDY0NAogIHZvaWQKICBfaW5pdGlhbGl6ZV9wYXJzZSAodm9pZCkKIGRpZmYgLS1naXQgYS9nZGIv cGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVmcy5oCi1pbmRleCA4NmYzYmRmLi5mOTA4YTYx IDEwMDY0NAoraW5kZXggOGQyNTMxMS4uMjMzZWQ0NiAxMDA2NDQKIC0tLSBhL2dkYi9wYXJzZXIt ZGVmcy5oCiArKysgYi9nZGIvcGFyc2VyLWRlZnMuaAotQEAgLTI0NSw2ICsyNDUsOCBAQCBleHRl cm4gdm9pZCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9u ICosIGludCwgaW50ICosCitAQCAtMjQ0LDYgKzI0NCw4IEBAIGV4dGVybiB2b2lkIG9wZXJhdG9y X2xlbmd0aF9zdGFuZGFyZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwK ICAJCQkJICAgICAgaW50ICopOwogIAogIGV4dGVybiBpbnQgb3BlcmF0b3JfY2hlY2tfc3RhbmRh cmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC03NTY3LDcgKzM2NzIsNyBA QCBpbmRleCA4NmYzYmRmLi5mOTA4YTYxIDEwMDY0NAogIAkJCQkgICAgaW50ICgqb2JqZmlsZV9m dW5jKQogIAkJCQkgICAgICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAog IAkJCQkgICAgdm9pZCAqZGF0YSk7Ci1AQCAtMzMxLDYgKzMzMyw3IEBAIHN0cnVjdCBleHBfZGVz Y3JpcHRvcgorQEAgLTMzMCw2ICszMzIsNyBAQCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKICAgICAg ICAgdmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBP dGhlcndpc2UgemVybwogICAgICAgICBzaG91bGQgYmUgcmV0dXJuZWQuICAqLwogICAgICBpbnQg KCpvcGVyYXRvcl9jaGVjaykgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCkBAIC03 NTc1LDE5ICszNjgwLDggQEAgaW5kZXggODZmM2JkZi4uZjkwOGE2MSAxMDA2NDQKICAJCQkgICBp bnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCQkJCQl2b2lk ICpkYXRhKSwKICAJCQkgICB2b2lkICpkYXRhKTsKLUBAIC0zNjksNCArMzcyLDEwIEBAIGV4dGVy biB2b2lkIHBhcnNlcl9mcHJpbnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJV VEVfUFJJTlRGICgyLCAzKTsKLSAKLSBleHRlcm4gaW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSAKLStleHRlcm4g aW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKTsKLSsKLSsjaWYgMAotK2V4dGVybiB2b2lkIGV4cF90eXBlc19tYXJrX3Vz ZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApOwotKyNlbmRpZgotKwotICNlbmRpZiAvKiBQQVJT RVJfREVGU19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQu YwotaW5kZXggZDViNWI2My4uNGJjMmI1YiAxMDA2NDQKK2luZGV4IGE1NzZkODguLjI3M2E1ZTEg MTAwNjQ0CiAtLS0gYS9nZGIvcHJpbnRjbWQuYwogKysrIGIvZ2RiL3ByaW50Y21kLmMKIEBAIC01 MCw2ICs1MCw3IEBACkBAIC03NTk4LDcgKzM2OTIsNyBAQCBpbmRleCBkNWI1YjYzLi40YmMyYjVi IDEwMDY0NAogIAogICNpZmRlZiBUVUkKICAjaW5jbHVkZSAidHVpL3R1aS5oIgkJLyogRm9yIHR1 aV9hY3RpdmUgZXQgYWwuICAgKi8KLUBAIC05NjgsNiArOTY5LDExIEBAIHByaW50X2NvbW1hbmRf MSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50IHZvaWRwcmludCkKK0BAIC05NjYsNiArOTY3 LDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgdm9pZHByaW50KQogICAgZWxz ZQogICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7CiAgCkBAIC03NjEwLDcgKzM3 MDQsNyBAQCBpbmRleCBkNWI1YjYzLi40YmMyYjViIDEwMDY0NAogICAgaWYgKHZvaWRwcmludCB8 fCAodmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKICAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5 cGUgKHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKICAgICAgewotQEAgLTEwNTYsNiArMTA2Miw5 IEBAIG91dHB1dF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKK0BAIC0xMDM4LDYg KzEwNDQsOSBAQCBvdXRwdXRfY29tbWFuZCAoY2hhciAqZXhwLCBpbnQgZnJvbV90dHkpCiAgCiAg ICB2YWwgPSBldmFsdWF0ZV9leHByZXNzaW9uIChleHByKTsKICAKQEAgLTc2MjAsNyArMzcxNCw3 IEBAIGluZGV4IGQ1YjViNjMuLjRiYzJiNWIgMTAwNjQ0CiAgICBhbm5vdGF0ZV92YWx1ZV9iZWdp biAodmFsdWVfdHlwZSAodmFsKSk7CiAgCiAgICBnZXRfZm9ybWF0dGVkX3ByaW50X29wdGlvbnMg KCZvcHRzLCBmb3JtYXQpOwotQEAgLTE0ODUsNiArMTQ5NCwyNCBAQCB4X2NvbW1hbmQgKGNoYXIg KmV4cCwgaW50IGZyb21fdHR5KQorQEAgLTE0NjYsNiArMTQ3NSwyNCBAQCB4X2NvbW1hbmQgKGNo YXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAlzZXRfaW50ZXJuYWx2YXIgKGxvb2t1cF9pbnRlcm5h bHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CiAgICAgIH0KICB9CkBAIC03NjQ1LDcg KzM3MzksNyBAQCBpbmRleCBkNWI1YjYzLi40YmMyYjViIDEwMDY0NAogIAwKICAKICAvKiBBZGQg YW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgotQEAgLTE5ODIsNiArMjAw OSwxMCBAQCBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVj dCBzeW1ib2wgKnZhciwKK0BAIC0xOTYzLDYgKzE5OTAsMTAgQEAgcHJpbnRfdmFyaWFibGVfYW5k X3ZhbHVlIChjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc3ltYm9sICp2YXIsCiAgICAgICAgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKICAKICAgICAgICB2YWwgPSByZWFkX3Zhcl92 YWx1ZSAodmFyLCBmcmFtZSk7CkBAIC03NjU2LDU1ICszNzUwLDE1IEBAIGluZGV4IGQ1YjViNjMu LjRiYzJiNWIgMTAwNjQ0CiAgICAgICAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOwog ICAgICAgIG9wdHMuZGVyZWZfcmVmID0gMTsKICAgICAgICBjb21tb25fdmFsX3ByaW50ICh2YWws IHN0cmVhbSwgaW5kZW50LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7Ci1AQCAtMjYyNiw0ICsy NjU3LDggQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVy IHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCitAQCAtMjYwMiw0ICsyNjMzLDggQEAgU2hvdyBwcmlu dGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiks IE5VTEwsCiAgICBhZGRfY29tICgiZXZhbCIsIG5vX2NsYXNzLCBldmFsX2NvbW1hbmQsIF8oIlwK ICBDb252ZXJ0IFwicHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJnMywgLi4u LCBhcmduIHRvXG5cCiAgYSBjb21tYW5kIGxpbmUsIGFuZCBjYWxsIGl0LiIpKTsKICsKLSsjaWYg MAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHJpbnRfdHlwZXNfbWFya191c2VkKTsK LSsjZW5kaWYKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Byb2Nmcy5jIGIvZ2RiL3Byb2Nmcy5jCi1p bmRleCA3NzRkZjJlLi40NDA5ZTViIDEwMDY0NAotLS0tIGEvZ2RiL3Byb2Nmcy5jCi0rKysgYi9n ZGIvcHJvY2ZzLmMKLUBAIC0zNDg2LDcgKzM0ODYsNyBAQCBpbnNlcnRfZGJ4X2xpbmtfYnB0X2lu X2ZpbGUgKGludCBmZCwgQ09SRV9BRERSIGlnbm9yZWQpCi0gICBsb25nIHN0b3JhZ2VfbmVlZGVk OwotICAgQ09SRV9BRERSIHN5bV9hZGRyOwotIAotLSAgYWJmZCA9IGJmZF9mZG9wZW5yICgidW5h bWVkIiwgMCwgZmQpOwotKyAgYWJmZCA9IGdkYl9iZmRfZmRvcGVuciAoInVuYW1lZCIsIDAsIGZk KTsKLSAgIGlmIChhYmZkID09IE5VTEwpCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChfKCJGYWls ZWQgdG8gY3JlYXRlIGEgYmZkOiAlcy4iKSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkp OwotQEAgLTM0OTcsNyArMzQ5Nyw3IEBAIGluc2VydF9kYnhfbGlua19icHRfaW5fZmlsZSAoaW50 IGZkLCBDT1JFX0FERFIgaWdub3JlZCkKLSAgICAgewotICAgICAgIC8qIE5vdCB0aGUgY29ycmVj dCBmb3JtYXQsIHNvIHdlIGNhbiBub3QgcG9zc2libHkgZmluZCB0aGUgZGJ4X2xpbmsKLSAJIHN5 bWJvbCBpbiBpdC4JKi8KLS0gICAgICBiZmRfY2xvc2UgKGFiZmQpOwotKyAgICAgIGdkYl9iZmRf dW5yZWYgKGFiZmQpOwotICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gCi1AQCAtMzUxMSwxNCAr MzUxMSwxNCBAQCBpbnNlcnRfZGJ4X2xpbmtfYnB0X2luX2ZpbGUgKGludCBmZCwgQ09SRV9BRERS IGlnbm9yZWQpCi0gICAgICAgaWYgKGRieF9saW5rX2JwdCA9PSBOVUxMKQotIAl7Ci0gCSAgd2Fy bmluZyAoXygiRmFpbGVkIHRvIGluc2VydCBkYnhfbGluayBicmVha3BvaW50LiIpKTsKLS0JICBi ZmRfY2xvc2UgKGFiZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwotIAkgIHJldHVybiAw OwotIAl9Ci0tICAgICAgYmZkX2Nsb3NlIChhYmZkKTsKLSsgICAgICBnZGJfYmZkX3VucmVmIChh YmZkKTsKLSAgICAgICByZXR1cm4gMTsKLSAgICAgfQotIAotLSAgYmZkX2Nsb3NlIChhYmZkKTsK LSsgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwotICAgcmV0dXJuIDA7CisrI2lmIDAKKysgIG9ic2Vy dmVyX2F0dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7CisrI2VuZGlmCiAg fQotIAogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5IGIv Z2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0 CiBpbmRleCAwMDAwMDAwLi41NjU0NTQ2CkBAIC04MDY3LDEzICs0MTIxLDEzIEBAIGluZGV4IDAw MDAwMDAuLjZmYTQ4ZmYKICtJZ25vcmVFcnJvcnNDb21tYW5kICgpCiBkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvcGFob2xlLnB5CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjFh MGJmMAoraW5kZXggMDAwMDAwMC4uNjM2Zjk5ZAogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5Ci1AQCAtMCwwICsxLDc1IEBACitAQCAtMCww ICsxLDgxIEBACiArIyBwYWhvbGUgY29tbWFuZCBmb3IgZ2RiCiArCi0rIyBDb3B5cmlnaHQgKEMp IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBDb3B5cmlnaHQg KEMpIDIwMDgsIDIwMDksIDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiAr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTgwOTksNiArNDE1MywxMSBAQCBpbmRl eCAwMDAwMDAwLi4yMWEwYmYwCiArICAgICAgICBzdXBlciAoUGFob2xlLCBzZWxmKS5fX2luaXRf XyAoInBhaG9sZSIsIGdkYi5DT01NQU5EX05PTkUsCiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2RiLkNPTVBMRVRFX1NZTUJPTCkKICsKKysgICAgZGVmIG1heWJlX3By aW50X2hvbGUoc2VsZiwgYml0cG9zLCBmaWVsZF9iaXRwb3MpOgorKyAgICAgICAgaWYgYml0cG9z ICE9IGZpZWxkX2JpdHBvczoKKysgICAgICAgICAgICBob2xlID0gZmllbGRfYml0cG9zIC0gYml0 cG9zCisrICAgICAgICAgICAgcHJpbnQgJyAgLyogWFhYICVkIGJpdCBob2xlLCB0cnkgdG8gcGFj ayAqLycgJSBob2xlCisrCiArICAgIGRlZiBwYWhvbGUgKHNlbGYsIHR5cGUsIGxldmVsLCBuYW1l KToKICsgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKICsgICAgICAgICAgICBuYW1lID0gJycKQEAg LTgxMTQsMTAgKzQxNzMsOCBAQCBpbmRleCAwMDAwMDAwLi4yMWEwYmYwCiArCiArICAgICAgICAg ICAgZnR5cGUgPSBmaWVsZC50eXBlLnN0cmlwX3R5cGVkZWZzKCkKICsKLSsgICAgICAgICAgICBp ZiBiaXRwb3MgIT0gZmllbGQuYml0cG9zOgotKyAgICAgICAgICAgICAgICBob2xlID0gZmllbGQu Yml0cG9zIC0gYml0cG9zCi0rICAgICAgICAgICAgICAgIHByaW50ICcgIC8qIFhYWCAlZCBiaXQg aG9sZSwgdHJ5IHRvIHBhY2sgKi8nICUgaG9sZQotKyAgICAgICAgICAgICAgICBiaXRwb3MgPSBm aWVsZC5iaXRwb3MKKysgICAgICAgICAgICBzZWxmLm1heWJlX3ByaW50X2hvbGUoYml0cG9zLCBm aWVsZC5iaXRwb3MpCisrICAgICAgICAgICAgYml0cG9zID0gZmllbGQuYml0cG9zCiArICAgICAg ICAgICAgaWYgZmllbGQuYml0c2l6ZSA+IDA6CiArICAgICAgICAgICAgICAgIGZpZWxkc2l6ZSA9 IGZpZWxkLmJpdHNpemUKICsgICAgICAgICAgICBlbHNlOgpAQCAtODEzNCw2ICs0MTkxLDkgQEAg aW5kZXggMDAwMDAwMC4uMjFhMGJmMAogKyAgICAgICAgICAgICAgICBwcmludCAnICcgKiAoMiAr IDIgKiBsZXZlbCksCiArICAgICAgICAgICAgICAgIHByaW50ICclcyAlcycgJSAoc3RyIChmdHlw ZSksIGZpZWxkLm5hbWUpCiArCisrICAgICAgICBpZiBsZXZlbCA9PSAwOgorKyAgICAgICAgICAg IHNlbGYubWF5YmVfcHJpbnRfaG9sZShiaXRwb3MsIDggKiB0eXBlLnNpemVvZikKKysKICsgICAg ICAgIHByaW50ICcgJyAqICgxNCArIDIgKiBsZXZlbCksCiArICAgICAgICBwcmludCAnfSAlcycg JSBuYW1lCiArCkBAIC04MzQ0LDEzICs0NDA0LDYgQEAgaW5kZXggMDAwMDAwMC4uZmFmNTRlZAog K1VwdG9Tb3VyY2VDb21tYW5kICgpCiArVXB0b09iamVjdENvbW1hbmQgKCkKICtVcHRvV2hlcmVD b21tYW5kICgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5p dF9fLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5Ci1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOGIxMzc4OQotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5Ci1AQCAtMCwwICsxIEBA Ci0rCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5w eSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKIG5ldyBmaWxlIG1v ZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi4yYjljNWM3CkBAIC04NDY5LDE5ICs0NTIyLDE5IEBA IGluZGV4IDAwMDAwMDAuLmRlYmIzYmIKICsKICtJblNjb3BlICgpCiBkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9weS10eXBlLmMgYi9nZGIvcHl0aG9uL3B5LXR5cGUuYwotaW5kZXggOTgwMzBhNi4u OTg3MGVlYyAxMDA2NDQKK2luZGV4IDMxYjc3NzYuLjU2MDg1ZDEgMTAwNjQ0CiAtLS0gYS9nZGIv cHl0aG9uL3B5LXR5cGUuYwogKysrIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLUBAIC0zMCw2ICsz MCw4IEBACi0gI2luY2x1ZGUgInZlYy5oIgorQEAgLTMxLDYgKzMxLDggQEAKICAjaW5jbHVkZSAi YmNhY2hlLmgiCiAgI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorICNpbmNsdWRlICJ0eXBlcHJpbnQu aCIKICsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAog IHR5cGVkZWYgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QKICB7Ci1AQCAtMzgsMTEgKzQwLDE5IEBA IHR5cGVkZWYgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QKK0BAIC0zOSwxMSArNDEsMTkgQEAgdHlw ZWRlZiBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdAogIAogICAgLyogSWYgYSBUeXBlIG9iamVjdCBp cyBhc3NvY2lhdGVkIHdpdGggYW4gb2JqZmlsZSwgaXQgaXMga2VwdCBvbiBhCiAgICAgICBkb3Vi bHktbGlua2VkIGxpc3QsIHJvb3RlZCBpbiB0aGUgb2JqZmlsZS4gIFRoaXMgbGV0cyB1cyBjb3B5 IHRoZQpAQCAtODQ5MywxMDA3ICs0NTQ2LDMxNSBAQCBpbmRleCA5ODAzMGE2Li45ODcwZWVjIDEw MDY0NAogICAgc3RydWN0IHB5dHlfdHlwZV9vYmplY3QgKnByZXY7CiAgICBzdHJ1Y3QgcHl0eV90 eXBlX29iamVjdCAqbmV4dDsKICB9IHR5cGVfb2JqZWN0OwotIAotKyNpZiAwCi0rLyogRmlyc3Qg ZWxlbWVudCBvZiBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBUWVBFX0RJU0NBUkRBQkxFIFR5cGVz LiAgKi8KLStzdGF0aWMgdHlwZV9vYmplY3QgKnB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZTsKLSsj ZW5kaWYKLSsKLSBzdGF0aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqZWN0X3R5cGU7Ci0gCi0gLyog QSBGaWVsZCBvYmplY3QuICAqLwotQEAgLTExNjYsOCArMTE3Niw2MyBAQCB0eXB5X3JpY2hjb21w YXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm90aGVyLCBpbnQgb3ApCi0gCi0gDAotIAot Ky8qIEtleSBhc3NvY2lhdGVkIHdpdGggZWFjaCBvYmpmaWxlIHBvaW50aW5nIHRvIHRoZSBmaXJz dCBlbGVtZW50IG9mCi0rICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb2YgVHlwZXMgYXNzb2NpYXRl ZCB3aXRoIHRoaXMgb2JqZmlsZS4gICovCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2Rh dGEgKnR5cHlfb2JqZmlsZV9kYXRhX2tleTsKLSAKLSsvKiBMaW5rIFRZUEVfT0JKIHRvIGl0cyBh cHByb3ByaWF0ZSBsaXN0LiAgRWl0aGVyIHRvIGl0cyBvYmpmaWxlIGFzc29jaWF0ZWQgb25lCi0r ICAgb3IgYXQgbGVhc3QgdG8gdGhlIGdsb2JhbCBsaXN0IGZvciBUWVBFX0RJU0NBUkRBQkxFIFR5 cGVzLiAgUGVybWFuZW50IHR5cGVzCi0rICAgZG8gbm90IGdldCBsaW5rZWQgYW55d2hlcmUuICAq LwotK3N0YXRpYyB2b2lkCi0rdHlweV9saW5rICh0eXBlX29iamVjdCAqdHlwZV9vYmopCi0rewot KyAgdHlwZV9vYmotPnByZXYgPSBOVUxMOwotKwotKyAgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZ UEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IG9iamZp bGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGVfb2JqLT50eXBlKTsKLSsKLSsgICAgICB0 eXBlX29iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFf a2V5KTsKLSsgICAgICBpZiAodHlwZV9vYmotPm5leHQpCi0rCXR5cGVfb2JqLT5uZXh0LT5wcmV2 ID0gdHlwZV9vYmo7Ci0rICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpm aWxlX2RhdGFfa2V5LCB0eXBlX29iaik7Ci0rICAgIH0KLSsjaWYgMAotKyAgZWxzZSBpZiAodHlw ZV9vYmotPnR5cGUgJiYgVFlQRV9ESVNDQVJEQUJMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7 Ci0rICAgICAgdHlwZV9vYmotPm5leHQgPSBweXR5X29iamVjdHNfZGlzY2FyZGFibGU7Ci0rICAg ICAgaWYgKHR5cGVfb2JqLT5uZXh0KQotKwl0eXBlX29iai0+bmV4dC0+cHJldiA9IHR5cGVfb2Jq OwotKyAgICAgIHB5dHlfb2JqZWN0c19kaXNjYXJkYWJsZSA9IHR5cGVfb2JqOwotKyAgICB9Ci0r I2VuZGlmCi0rICBlbHNlCi0rICAgIHR5cGVfb2JqLT5uZXh0ID0gTlVMTDsKLSt9Ci0rCi0rLyog VW5saW5rIFRZUEVfT0JKIGZyb20gaXRzIGN1cnJlbnQgbGlzdC4gIFBlcm1hbmVudCB0eXBlcyBh cmUgbm90IGxpbmtlZAotKyAgIGFueXdoZXJlIGFuZCB0aGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZl Y3Qgb24gdGhlbS4gICovCi0rc3RhdGljIHZvaWQKLSt0eXB5X3VubGluayAodHlwZV9vYmplY3Qg KnR5cGVfb2JqKQotK3sKLSsgIGlmICh0eXBlX29iai0+cHJldikKLSsgICAgdHlwZV9vYmotPnBy ZXYtPm5leHQgPSB0eXBlX29iai0+bmV4dDsKLSsgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYm IFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQotKyAgICB7Ci0rICAgICAgLyogTXVzdCBy ZXNldCBoZWFkIG9mIGxpc3QuICAqLwotKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0g VFlQRV9PQkpGSUxFICh0eXBlX29iai0+dHlwZSk7Ci0rCi0rICAgICAgc2V0X29iamZpbGVfZGF0 YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7Ci0rICAg IH0KLSsjaWYgMAotKyAgZWxzZSBpZiAocHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID09IHR5cGVf b2JqKQotKyAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBlX29iai0+bmV4dDsKLSsj ZW5kaWYKLSsKLSsgIGlmICh0eXBlX29iai0+bmV4dCkKLSsgICAgdHlwZV9vYmotPm5leHQtPnBy ZXYgPSB0eXBlX29iai0+cHJldjsKLSt9Ci0rCi0gc3RhdGljIHZvaWQKLSBzYXZlX29iamZpbGVf dHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKLSB7Ci1AQCAtMTE4 NSwxMiArMTI1MCwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCB2b2lkICpkYXR1bSkKLSAgICAgewotICAgICAgIHR5cGVfb2JqZWN0ICpuZXh0ID0gb2Jq LT5uZXh0OwotIAotLSAgICAgIGh0YWJfZW1wdHkgKGNvcGllZF90eXBlcyk7Ci0rICAgICAgZ2Ri X2Fzc2VydCAoVFlQRV9PQkpGSUxFIChvYmotPnR5cGUpID09IG9iamZpbGUpOwotKyAgICAgIHR5 cHlfdW5saW5rIChvYmopOwotIAotLSAgICAgIG9iai0+dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNp dmUgKG9iamZpbGUsIG9iai0+dHlwZSwgY29waWVkX3R5cGVzKTsKLSsgICAgICBvYmotPnR5cGUg PSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmotPnR5cGUsIGNvcGllZF90eXBlcyk7Ci0gCi0tICAg ICAgb2JqLT5uZXh0ID0gTlVMTDsKLS0gICAgICBvYmotPnByZXYgPSBOVUxMOwotKyAgICAgIGdk Yl9hc3NlcnQgKFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9PSBOVUxMKTsKLSsgICAgICB0eXB5 X2xpbmsgKG9iaik7Ci0gCi0gICAgICAgb2JqID0gbmV4dDsKLSAgICAgfQotQEAgLTEyMDEsNDMg KzEyNjcsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg dm9pZCAqZGF0dW0pCi0gfQotIAotIHN0YXRpYyB2b2lkCi0tc2V0X3R5cGUgKHR5cGVfb2JqZWN0 ICpvYmosIHN0cnVjdCB0eXBlICp0eXBlKQotK3R5cHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikK LSB7Ci0tICBvYmotPnR5cGUgPSB0eXBlOwotLSAgb2JqLT5wcmV2ID0gTlVMTDsKLS0gIGlmICh0 eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZSkpCi0tICAgIHsKLS0gICAgICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7Ci0rICB0eXBlX29iamVjdCAqdHlwZV9v YmogPSAodHlwZV9vYmplY3QgKikgb2JqOwotIAotLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVf ZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKLS0gICAgICBpZiAob2JqLT5u ZXh0KQotLQlvYmotPm5leHQtPnByZXYgPSBvYmo7Ci0tICAgICAgc2V0X29iamZpbGVfZGF0YSAo b2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCBvYmopOwotLSAgICB9Ci0tICBlbHNlCi0t ICAgIG9iai0+bmV4dCA9IE5VTEw7Ci0rICB0eXB5X3VubGluayAodHlwZV9vYmopOwotKwotKyAg dHlwZV9vYmotPm9iX3R5cGUtPnRwX2ZyZWUgKG9iaik7Ci0gfQotIAotKyNpZiAwCi0rLyogQ2Fs bCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBz b3VyY2UgZmlsZS4gICovCi0gc3RhdGljIHZvaWQKLS10eXB5X2RlYWxsb2MgKFB5T2JqZWN0ICpv YmopCi0rdHlweV90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0gewotLSAgdHlwZV9vYmplY3QgKnR5 cGUgPSAodHlwZV9vYmplY3QgKikgb2JqOwotLQotLSAgaWYgKHR5cGUtPnByZXYpCi0tICAgIHR5 cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0OwotLSAgZWxzZSBpZiAodHlwZS0+dHlwZSAmJiBU WVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQotLSAgICB7Ci0tICAgICAgLyogTXVzdCByZXNldCBo ZWFkIG9mIGxpc3QuICAqLwotLSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9P QkpGSUxFICh0eXBlLT50eXBlKTsKLS0KLS0gICAgICBpZiAob2JqZmlsZSkKLS0Jc2V0X29iamZp bGVfZGF0YSAob2JqZmlsZSwgdHlweV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlLT5uZXh0KTsKLS0g ICAgfQotLSAgaWYgKHR5cGUtPm5leHQpCi0tICAgIHR5cGUtPm5leHQtPnByZXYgPSB0eXBlLT5w cmV2OwotKyAgdHlwZV9vYmplY3QgKnR5cGVfb2JqOwotIAotLSAgdHlwZS0+b2JfdHlwZS0+dHBf ZnJlZSAodHlwZSk7Ci0rICBmb3IgKHR5cGVfb2JqID0gcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxl OwotKyAgICAgICB0eXBlX29iaiAhPSBOVUxMOwotKyAgICAgICB0eXBlX29iaiA9IHR5cGVfb2Jq LT5uZXh0KQotKyAgICB0eXBlX21hcmtfdXNlZCAodHlwZV9vYmotPnR5cGUpOwotIH0KLSsjZW5k aWYKLSAKLSAvKiBSZXR1cm4gbnVtYmVyIG9mIGZpZWxkcyAoImxlbmd0aCIgb2YgdGhlIGZpZWxk IGRpY3Rpb25hcnkpLiAgKi8KLSAKLUBAIC0xNDU3LDcgKzE1MDgsMTAgQEAgdHlwZV90b190eXBl X29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gCi0gICB0eXBlX29iaiA9IFB5T2JqZWN0X05l dyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVjdF90eXBlKTsKLSAgIGlmICh0eXBlX29iaikKLS0g ICAgc2V0X3R5cGUgKHR5cGVfb2JqLCB0eXBlKTsKLSsgICAgewotKyAgICAgIHR5cGVfb2JqLT50 eXBlID0gdHlwZTsKLSsgICAgICB0eXB5X2xpbmsgKHR5cGVfb2JqKTsKLSsgICAgfQotIAotICAg cmV0dXJuIChQeU9iamVjdCAqKSB0eXBlX29iajsKLSB9Ci1AQCAtMTUzNyw2ICsxNTkxLDEwIEBA IGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCi0gCi0gICBQeV9JTkNSRUYgKCZmaWVsZF9v YmplY3RfdHlwZSk7Ci0gICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJGaWVsZCIs IChQeU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOwotKwotKyNpZiAwCi0rICBvYnNlcnZl cl9hdHRhY2hfbWFya191c2VkICh0eXB5X3R5cGVzX21hcmtfdXNlZCk7Ci0rI2VuZGlmCi0gfQot IAotIAwKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIvcHl0aG9uL3B5 LXZhbHVlLmMKLWluZGV4IDZmNjdiZGIuLjVkZGQ2YmMgMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9u L3B5LXZhbHVlLmMKLSsrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwotQEAgLTI5LDYgKzI5LDcg QEAKLSAjaW5jbHVkZSAiZXhwcmVzc2lvbi5oIgotICNpbmNsdWRlICJjcC1hYmkuaCIKLSAjaW5j bHVkZSAicHl0aG9uLmgiCi0rI2luY2x1ZGUgIm9ic2VydmVyLmgiCi0gCi0gI2lmZGVmIEhBVkVf UFlUSE9OCi0gCi1AQCAtMTM3OCw2ICsxMzc5LDE5IEBAIGdkYnB5X2lzX3ZhbHVlX29iamVjdCAo UHlPYmplY3QgKm9iaikKLSAgIHJldHVybiBQeU9iamVjdF9UeXBlQ2hlY2sgKG9iaiwgJnZhbHVl X29iamVjdF90eXBlKTsKLSB9Ci0gCi0rI2lmIDAKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZv ciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0rewotKyAgdmFs dWVfb2JqZWN0ICppdGVyOwotKwotKyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5dGhvbjsgaXRl cjsgaXRlciA9IGl0ZXItPm5leHQpCi0rICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChp dGVyLT52YWx1ZSkpOwotK30KLSsjZW5kaWYKLSsKLSB2b2lkCi0gZ2RicHlfaW5pdGlhbGl6ZV92 YWx1ZXMgKHZvaWQpCi0gewotQEAgLTEzODgsNiArMTQwMiwxMCBAQCBnZGJweV9pbml0aWFsaXpl X3ZhbHVlcyAodm9pZCkKLSAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlZhbHVl IiwgKFB5T2JqZWN0ICopICZ2YWx1ZV9vYmplY3RfdHlwZSk7Ci0gCi0gICB2YWx1ZXNfaW5fcHl0 aG9uID0gTlVMTDsKLSsKLSsjaWYgMAotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHl0 aG9uX3R5cGVzX21hcmtfdXNlZCk7Ci0rI2VuZGlmCi0gfQotIAotIAwKLWRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwotaW5kZXggYzY2ZWZlNC4u MDIxMWZjYiAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHl0aG9uLmMKLSsrKyBiL2dkYi9weXRo b24vcHl0aG9uLmMKLUBAIC02NiwxMCArNjYsMTMgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdkYnB5 X3Nob3VsZF9wcmludF9zdGFjayA9IHB5dGhvbl9leGNwX21lc3NhZ2U7Ci0gI2luY2x1ZGUgImxp bmVzcGVjLmgiCi0gI2luY2x1ZGUgInNvdXJjZS5oIgotICNpbmNsdWRlICJ2ZXJzaW9uLmgiCi0r I2luY2x1ZGUgImluZmVyaW9yLmgiCi0rI2luY2x1ZGUgImdkYnRocmVhZC5oIgotICNpbmNsdWRl ICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0gI2luY2x1ZGUgIm9ic2VydmVy LmgiCi0gI2luY2x1ZGUgImludGVycHMuaCIKLSsjaW5jbHVkZSAiZXZlbnQtdG9wLmgiCi0gCi0g c3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsKLSAKLUBAIC05NzksNiArOTgyLDUzIEBA IGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQotIAotIC8qIFJldHVybiB0aGUgY3VycmVudCBQcm9n c3BhY2UuCi0gICAgVGhlcmUgYWx3YXlzIGlzIG9uZS4gICovCi0rLyogVHJ1ZSBpZiAnZ2RiIC1Q JyB3YXMgdXNlZCwgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50IHJ1bm5pbmdfcHl0 aG9uX3NjcmlwdDsKLSsKLSsvKiBUcnVlIGlmIHdlIGFyZSBjdXJyZW50bHkgaW4gYSBjYWxsIHRv ICdnZGIuY2xpJywgZmFsc2Ugb3RoZXJ3aXNlLiAgKi8KLStzdGF0aWMgaW50IGluX2NsaTsKLSsK LSsvKiBFbnRlciB0aGUgY29tbWFuZCBsb29wLiAgKi8KLSsKLStzdGF0aWMgUHlPYmplY3QgKgot K2dkYnB5X2NsaSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotK3sKLSsg IGlmICghIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCB8fCBpbl9jbGkpCi0rICAgIHJldHVybiBQeUVy cl9Gb3JtYXQgKFB5RXhjX1J1bnRpbWVFcnJvciwgImNhbm5vdCBpbnZva2UgQ0xJIHJlY3Vyc2l2 ZWx5Iik7Ci0rCi0rICBpbl9jbGkgPSAxOwotKyAgY2xpX2NvbW1hbmRfbG9vcCAoKTsKLSsgIGlu X2NsaSA9IDA7Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rLyogU2V0IHVwIHRoZSBQ eXRob24gYXJndW1lbnQgdmVjdG9yIGFuZCBldmFsdWF0ZSBhIHNjcmlwdC4gIFRoaXMgaXMKLSsg ICB1c2VkIHRvIGltcGxlbWVudCAnZ2RiIC1QJy4gICovCisgCisrI2lmIDAKKysvKiBGaXJzdCBl bGVtZW50IG9mIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9mIFRZUEVfRElTQ0FSREFCTEUgVHlwZXMu ICAqLworK3N0YXRpYyB0eXBlX29iamVjdCAqcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOworKyNl bmRpZgogKwotK3ZvaWQKLStydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQorIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlwZV9vYmplY3RfdHlwZTsKKyAKKyAvKiBBIEZpZWxk IG9iamVjdC4gICovCitAQCAtMTE5Miw4ICsxMjAyLDYzIEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5 T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKKyAKKyAMCisgCisrLyogS2V5 IGFzc29jaWF0ZWQgd2l0aCBlYWNoIG9iamZpbGUgcG9pbnRpbmcgdG8gdGhlIGZpcnN0IGVsZW1l bnQgb2YKKysgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvZiBUeXBlcyBhc3NvY2lhdGVkIHdpdGgg dGhpcyBvYmpmaWxlLiAgKi8KKyBzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0YSAqdHlw eV9vYmpmaWxlX2RhdGFfa2V5OworIAorKy8qIExpbmsgVFlQRV9PQkogdG8gaXRzIGFwcHJvcHJp YXRlIGxpc3QuICBFaXRoZXIgdG8gaXRzIG9iamZpbGUgYXNzb2NpYXRlZCBvbmUKKysgICBvciBh dCBsZWFzdCB0byB0aGUgZ2xvYmFsIGxpc3QgZm9yIFRZUEVfRElTQ0FSREFCTEUgVHlwZXMuICBQ ZXJtYW5lbnQgdHlwZXMKKysgICBkbyBub3QgZ2V0IGxpbmtlZCBhbnl3aGVyZS4gICovCisrc3Rh dGljIHZvaWQKKyt0eXB5X2xpbmsgKHR5cGVfb2JqZWN0ICp0eXBlX29iaikKICt7Ci0rICBGSUxF ICppbnB1dDsKKysgIHR5cGVfb2JqLT5wcmV2ID0gTlVMTDsKICsKLSsgIC8qIFdlIG5ldmVyIGZy ZWUgdGhpcywgc2luY2Ugd2UgcGxhbiB0byBleGl0IGF0IHRoZSBlbmQuICAqLwotKyAgZW5zdXJl X3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworKyAg aWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9vYmotPnR5cGUpKQorKyAg ICB7CisrICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBUWVBFX09CSkZJTEUgKHR5cGVf b2JqLT50eXBlKTsKICsKLSsgIHJ1bm5pbmdfcHl0aG9uX3NjcmlwdCA9IDE7Ci0rICBQeVN5c19T ZXRBcmd2IChhcmdjIC0gMSwgYXJndiArIDEpOwotKyAgaW5wdXQgPSBmb3BlbiAoYXJndlswXSwg InIiKTsKLSsgIGlmICghIGlucHV0KQorKyAgICAgIHR5cGVfb2JqLT5uZXh0ID0gb2JqZmlsZV9k YXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXkpOworKyAgICAgIGlmICh0eXBlX29i ai0+bmV4dCkKKysJdHlwZV9vYmotPm5leHQtPnByZXYgPSB0eXBlX29iajsKKysgICAgICBzZXRf b2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXksIHR5cGVfb2JqKTsK KysgICAgfQorKyNpZiAwCisrICBlbHNlIGlmICh0eXBlX29iai0+dHlwZSAmJiBUWVBFX0RJU0NB UkRBQkxFICh0eXBlX29iai0+dHlwZSkpCiArICAgIHsKLSsgICAgICBmcHJpbnRmIChzdGRlcnIs ICJjb3VsZCBub3Qgb3BlbiAlczogJXNcbiIsIGFyZ3ZbMF0sIHN0cmVycm9yIChlcnJubykpOwot KyAgICAgIGV4aXQgKDEpOworKyAgICAgIHR5cGVfb2JqLT5uZXh0ID0gcHl0eV9vYmplY3RzX2Rp c2NhcmRhYmxlOworKyAgICAgIGlmICh0eXBlX29iai0+bmV4dCkKKysJdHlwZV9vYmotPm5leHQt PnByZXYgPSB0eXBlX29iajsKKysgICAgICBweXR5X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBl X29iajsKICsgICAgfQotKyAgUHlSdW5fU2ltcGxlRmlsZSAoaW5wdXQsIGFyZ3ZbMF0pOwotKyAg ZmNsb3NlIChpbnB1dCk7Ci0rICBleGl0ICgwKTsKKysjZW5kaWYKKysgIGVsc2UKKysgICAgdHlw ZV9vYmotPm5leHQgPSBOVUxMOwogK30KICsKLSsMCisrLyogVW5saW5rIFRZUEVfT0JKIGZyb20g aXRzIGN1cnJlbnQgbGlzdC4gIFBlcm1hbmVudCB0eXBlcyBhcmUgbm90IGxpbmtlZAorKyAgIGFu eXdoZXJlIGFuZCB0aGlzIGZ1bmN0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlbS4gICovCisrc3Rh dGljIHZvaWQKKyt0eXB5X3VubGluayAodHlwZV9vYmplY3QgKnR5cGVfb2JqKQorK3sKKysgIGlm ICh0eXBlX29iai0+cHJldikKKysgICAgdHlwZV9vYmotPnByZXYtPm5leHQgPSB0eXBlX29iai0+ bmV4dDsKKysgIGVsc2UgaWYgKHR5cGVfb2JqLT50eXBlICYmIFRZUEVfT0JKRklMRSAodHlwZV9v YmotPnR5cGUpKQorKyAgICB7CisrICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAq LworKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlX29i ai0+dHlwZSk7CiArCi0gCi0gc3RhdGljIFB5T2JqZWN0ICoKLSBnZGJweV9nZXRfY3VycmVudF9w cm9nc3BhY2UgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2VkMikKLUBAIC0xNDIw LDYgKzE0NzAsOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9kc1tdID0KLSAgICAgIkdl dCBhIHZhbHVlIGZyb20gaGlzdG9yeSIgfSwKLSAgIHsgImV4ZWN1dGUiLCAoUHlDRnVuY3Rpb24p IGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAg ICJFeGVjdXRlIGEgZ2RiIGNvbW1hbmQiIH0sCi0rICB7ICJjbGkiLCBnZGJweV9jbGksIE1FVEhf Tk9BUkdTLAotKyAgICAiRW50ZXIgdGhlIGdkYiBDTEkiIH0sCi0gICB7ICJwYXJhbWV0ZXIiLCBn ZGJweV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywKLSAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0 ZXIncyB2YWx1ZSIgfSwKLSAKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2Ri L3B5dGhvbi9weXRob24uaAotaW5kZXggZGQ3MDY2Zi4uZjBmNmU5MCAxMDA2NDQKLS0tLSBhL2dk Yi9weXRob24vcHl0aG9uLmgKLSsrKyBiL2dkYi9weXRob24vcHl0aG9uLmgKLUBAIC0zMCw2ICsz MCw4IEBAIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1hbmQgKHN0cnVjdCBjb21t YW5kX2xpbmUgKik7Ci0gCi0gdm9pZCBzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwg Y29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAotK3ZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBh cmdjLCBjaGFyICoqYXJndik7CisrICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgdHlw eV9vYmpmaWxlX2RhdGFfa2V5LCB0eXBlX29iai0+bmV4dCk7CisrICAgIH0KKysjaWYgMAorKyAg ZWxzZSBpZiAocHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlID09IHR5cGVfb2JqKQorKyAgICBweXR5 X29iamVjdHNfZGlzY2FyZGFibGUgPSB0eXBlX29iai0+bmV4dDsKKysjZW5kaWYKICsKLSBpbnQg YXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCi0gCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFk ZHJlc3MsCi0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi1k aWZmIC0tZ2l0IGEvZ2RiL3JlY29yZC5jIGIvZ2RiL3JlY29yZC5jCi1pbmRleCBiYjBmZTUyLi5l YzQyYWFjIDEwMDY0NAotLS0tIGEvZ2RiL3JlY29yZC5jCi0rKysgYi9nZGIvcmVjb3JkLmMKLUBA IC0zMiw2ICszMiw3IEBACi0gI2luY2x1ZGUgImdjb3JlLmgiCi0gI2luY2x1ZGUgImV2ZW50LWxv b3AuaCIKLSAjaW5jbHVkZSAiaW5mLWxvb3AuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAot ICNpbmNsdWRlIDxzaWduYWwuaD4KLSAKLUBAIC0yNjM4LDcgKzI2MzksNyBAQCByZWNvcmRfc2F2 ZV9jbGVhbnVwcyAodm9pZCAqZGF0YSkKLSAgIGJmZCAqb2JmZCA9IGRhdGE7Ci0gICBjaGFyICpw YXRobmFtZSA9IHhzdHJkdXAgKGJmZF9nZXRfZmlsZW5hbWUgKG9iZmQpKTsKLSAKLS0gIGJmZF9j bG9zZSAob2JmZCk7Ci0rICBnZGJfYmZkX3VucmVmIChvYmZkKTsKLSAgIHVubGluayAocGF0aG5h bWUpOwotICAgeGZyZWUgKHBhdGhuYW1lKTsKLSB9Ci1AQCAtMjg1NCw3ICsyODU1LDcgQEAgY21k X3JlY29yZF9zYXZlIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCi0gICAgIH0KLSAKLSAgIGRv X2NsZWFudXBzIChzZXRfY2xlYW51cHMpOwotLSAgYmZkX2Nsb3NlIChvYmZkKTsKLSsgIGdkYl9i ZmRfdW5yZWYgKG9iZmQpOwotICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKLSAK LSAgIC8qIFN1Y2NlZWRlZC4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS1tMzJyLXNkaS5j IGIvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCi1pbmRleCA0N2Y0NDA1Li44NTI2OGI2IDEwMDY0NAot LS0tIGEvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jCi0rKysgYi9nZGIvcmVtb3RlLW0zMnItc2RpLmMK LUBAIC0zOSw2ICszOSw3IEBACi0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0gI2luY2x1ZGUgPHNp Z25hbC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0rI2luY2x1ZGUgImdkYl9iZmQuaCIKLSAKLSAK LSAjaW5jbHVkZSAic2VyaWFsLmgiCi1AQCAtMTI1NywxMyArMTI1OCwxMyBAQCBtMzJyX2xvYWQg KGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIGlmICghZmlsZW5hbWUpCi0gICAgIGZpbGVu YW1lID0gZ2V0X2V4ZWNfZmlsZSAoMSk7Ci0gCi0tICBwYmZkID0gYmZkX29wZW5yIChmaWxlbmFt ZSwgZ251dGFyZ2V0KTsKLSsgIHBiZmQgPSBnZGJfYmZkX29wZW5yIChmaWxlbmFtZSwgZ251dGFy Z2V0KTsKLSAgIGlmIChwYmZkID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBwZXJyb3Jfd2l0aF9u YW1lIChmaWxlbmFtZSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0tICBvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXBfYmZkX2Nsb3NlIChwYmZkKTsKLSsgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51 cF9iZmRfdW5yZWYgKHBiZmQpOwotIAotICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChwYmZkLCBi ZmRfb2JqZWN0KSkKLSAgICAgZXJyb3IgKF8oIlwiJXNcIiBpcyBub3QgYW4gb2JqZWN0IGZpbGU6 ICVzIiksIGZpbGVuYW1lLAotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUtbWlwcy5jIGIvZ2RiL3Jl bW90ZS1taXBzLmMKLWluZGV4IGJhYmJmMTkuLmRiNDM4MWIgMTAwNjQ0Ci0tLS0gYS9nZGIvcmVt b3RlLW1pcHMuYwotKysrIGIvZ2RiL3JlbW90ZS1taXBzLmMKLUBAIC0zNiw2ICszNiw3IEBACi0g I2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgIm1pcHMtdGRlcC5oIgotICNpbmNsdWRlICJn ZGJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAwKLSAKLSAvKiBCcmVha3BvaW50 IHR5cGVzLiAgVmFsdWVzIDAsIDEsIGFuZCAyIG11c3QgYWdyZWUgd2l0aCB0aGUgd2F0Y2gKLUBA IC0yNzgzLDIwICsyNzg0LDIzIEBAIG1pcHNfbG9hZF9zcmVjIChjaGFyICphcmdzKQotICAgdW5z aWduZWQgaW50IGk7Ci0gICB1bnNpZ25lZCBpbnQgc3JlY19mcmFtZSA9IDIwMDsKLSAgIGludCBy ZWNsZW47Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKLSAgIHN0YXRpYyBpbnQgaGFzaG1h cmsgPSAxOwotIAotICAgYnVmZmVyID0gYWxsb2NhIChzcmVjX2ZyYW1lICogMiArIDI1Nik7Ci0g Ci0tICBhYmZkID0gYmZkX29wZW5yIChhcmdzLCAwKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29wZW5y IChhcmdzLCAwKTsKLSAgIGlmICghYWJmZCkKLSAgICAgewotICAgICAgIHByaW50Zl9maWx0ZXJl ZCAoIlVuYWJsZSB0byBvcGVuIGZpbGUgJXNcbiIsIGFyZ3MpOwotICAgICAgIHJldHVybjsKLSAg ICAgfQotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFiZmQpOwotICAg aWYgKGJmZF9jaGVja19mb3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpID09IDApCisrICBpZiAodHlw ZV9vYmotPm5leHQpCisrICAgIHR5cGVfb2JqLT5uZXh0LT5wcmV2ID0gdHlwZV9vYmotPnByZXY7 CisrfQorKworIHN0YXRpYyB2b2lkCisgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCisgeworQEAgLTEyMTEsMTIgKzEyNzYsMTMgQEAgc2F2 ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAg ICAgIHsKLSAgICAgICBwcmludGZfZmlsdGVyZWQgKCJGaWxlIGlzIG5vdCBhbiBvYmplY3QgZmls ZVxuIik7Ci0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgICAgIHJldHVybjsKLSAg ICAgfQotIAotQEAgLTI4NTAsNiArMjg1NCw3IEBAIG1pcHNfbG9hZF9zcmVjIChjaGFyICphcmdz KQotICAgc2VuZF9zcmVjIChzcmVjLCByZWNsZW4sIGFiZmQtPnN0YXJ0X2FkZHJlc3MpOwotIAot ICAgc2VyaWFsX2ZsdXNoX2lucHV0IChtaXBzX2Rlc2MpOwotKyAgZG9fY2xlYW51cHMgKGNsZWFu dXApOwotIH0KLSAKLSAvKgotQEAgLTMzNjYsMjAgKzMzNzEsMjMgQEAgcG1vbl9sb2FkX2Zhc3Qg KGNoYXIgKmZpbGUpCi0gICBpbnQgYmludG90YWwgPSAwOwotICAgaW50IGZpbmFsID0gMDsKLSAg IGludCBmaW5pc2hlZCA9IDA7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKKyAgICAgICB0 eXBlX29iamVjdCAqbmV4dCA9IG9iai0+bmV4dDsKICAKLSAgIGJ1ZmZlciA9IChjaGFyICopIHht YWxsb2MgKE1BWFJFQ1NJWkUgKyAxKTsKLSAgIGJpbmJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHht YWxsb2MgKEJJTkNIVU5LKTsKKy0gICAgICBodGFiX2VtcHR5IChjb3BpZWRfdHlwZXMpOworKyAg ICAgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAob2JqLT50eXBlKSA9PSBvYmpmaWxlKTsKKysg ICAgICB0eXB5X3VubGluayAob2JqKTsKICAKLS0gIGFiZmQgPSBiZmRfb3BlbnIgKGZpbGUsIDAp OwotKyAgYWJmZCA9IGdkYl9iZmRfb3BlbnIgKGZpbGUsIDApOwotICAgaWYgKCFhYmZkKQotICAg ICB7Ci0gICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiVW5hYmxlIHRvIG9wZW4gZmlsZSAlc1xuIiwg ZmlsZSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVw X2JmZF91bnJlZiAoYWJmZCk7CistICAgICAgb2JqLT50eXBlID0gY29weV90eXBlX3JlY3Vyc2l2 ZSAob2JqZmlsZSwgb2JqLT50eXBlLCBjb3BpZWRfdHlwZXMpOworKyAgICAgIG9iai0+dHlwZSA9 IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iai0+dHlwZSwgY29waWVkX3R5cGVzKTsKICAKLSAgIGlm IChiZmRfY2hlY2tfZm9ybWF0IChhYmZkLCBiZmRfb2JqZWN0KSA9PSAwKQotICAgICB7Ci0gICAg ICAgcHJpbnRmX2ZpbHRlcmVkICgiRmlsZSBpcyBub3QgYW4gb2JqZWN0IGZpbGVcbiIpOwotKyAg ICAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSAgICAgICByZXR1cm47Ci0gICAgIH0KKy0gICAg ICBvYmotPm5leHQgPSBOVUxMOworLSAgICAgIG9iai0+cHJldiA9IE5VTEw7CisrICAgICAgZ2Ri X2Fzc2VydCAoVFlQRV9PQkpGSUxFIChvYmotPnR5cGUpID09IE5VTEwpOworKyAgICAgIHR5cHlf bGluayAob2JqKTsKICAKLUBAIC0zNTAzLDYgKzM1MTEsNyBAQCBwbW9uX2xvYWRfZmFzdCAoY2hh ciAqZmlsZSkKLSAgICAgICBwbW9uX2VuZF9kb3dubG9hZCAoZmluYWwsIGJpbnRvdGFsKTsKKyAg ICAgICBvYmogPSBuZXh0OwogICAgICB9Ci0gCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0g ICByZXR1cm47Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUu YwotaW5kZXggMWM5MzY3ZC4uZjJiNWU3YiAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUuYwotKysr IGIvZ2RiL3JlbW90ZS5jCi1AQCAtNDIsNiArNDIsNyBAQAotICNpbmNsdWRlICJjbGkvY2xpLWRl Y29kZS5oIgotICNpbmNsdWRlICJjbGkvY2xpLXNldHNob3cuaCIKLSAjaW5jbHVkZSAidGFyZ2V0 LWRlc2NyaXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gI2luY2x1ZGUgPGN0 eXBlLmg+Ci0gI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci1AQCAtOTgyMywxMSArOTgyNCwxMyBAQCBy ZW1vdGVfZmlsZW5hbWVfcCAoY29uc3QgY2hhciAqZmlsZW5hbWUpCi0gYmZkICoKLSByZW1vdGVf YmZkX29wZW4gKGNvbnN0IGNoYXIgKnJlbW90ZV9maWxlLCBjb25zdCBjaGFyICp0YXJnZXQpCi0g ewotLSAgcmV0dXJuIGJmZF9vcGVucl9pb3ZlYyAocmVtb3RlX2ZpbGUsIHRhcmdldCwKLS0JCQkg IHJlbW90ZV9iZmRfaW92ZWNfb3BlbiwgTlVMTCwKLS0JCQkgIHJlbW90ZV9iZmRfaW92ZWNfcHJl YWQsCi0tCQkJICByZW1vdGVfYmZkX2lvdmVjX2Nsb3NlLAotLQkJCSAgcmVtb3RlX2JmZF9pb3Zl Y19zdGF0KTsKLSsgIGJmZCAqYWJmZCA9IGdkYl9iZmRfb3BlbnJfaW92ZWMgKHJlbW90ZV9maWxl LCB0YXJnZXQsCi0rCQkJCSAgIHJlbW90ZV9iZmRfaW92ZWNfb3BlbiwgTlVMTCwKLSsJCQkJICAg cmVtb3RlX2JmZF9pb3ZlY19wcmVhZCwKLSsJCQkJICAgcmVtb3RlX2JmZF9pb3ZlY19jbG9zZSwK LSsJCQkJICAgcmVtb3RlX2JmZF9pb3ZlY19zdGF0KTsKLSsKLSsgIHJldHVybiBhYmZkOworQEAg LTEyMjcsNDMgKzEyOTMsMjggQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgfQogIAotIHZvaWQKLWRpZmYgLS1naXQgYS9nZGIvcnM2 MDAwLW5hdC5jIGIvZ2RiL3JzNjAwMC1uYXQuYwotaW5kZXggMGEyMDAwYS4uOWI4ZWZkMyAxMDA2 NDQKLS0tLSBhL2dkYi9yczYwMDAtbmF0LmMKLSsrKyBiL2dkYi9yczYwMDAtbmF0LmMKLUBAIC03 MzAsNyArNzMwLDcgQEAgc3RhdGljIHN0cnVjdCB2bWFwICoKLSBhZGRfdm1hcCAoTGRJbmZvICps ZGkpCisgc3RhdGljIHZvaWQKKy1zZXRfdHlwZSAodHlwZV9vYmplY3QgKm9iaiwgc3RydWN0IHR5 cGUgKnR5cGUpCisrdHlweV9kZWFsbG9jIChQeU9iamVjdCAqb2JqKQogIHsKLSAgIGJmZCAqYWJm ZCwgKmxhc3Q7Ci0tICBjaGFyICptZW0sICpvYmpuYW1lLCAqZmlsZW5hbWU7Ci0rICBjaGFyICpt ZW0sICpmaWxlbmFtZTsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmo7Ci0gICBzdHJ1Y3Qgdm1hcCAq dnA7Ci0gICBpbnQgZmQ7Ci1AQCAtNzQzLDE5ICs3NDMsMTggQEAgYWRkX3ZtYXAgKExkSW5mbyAq bGRpKQotICAgZmlsZW5hbWUgPSBMRElfRklMRU5BTUUgKGxkaSwgYXJjaDY0KTsKLSAgIG1lbSA9 IGZpbGVuYW1lICsgc3RybGVuIChmaWxlbmFtZSkgKyAxOwotICAgbWVtID0geHN0cmR1cCAobWVt KTsKLS0gIG9iam5hbWUgPSB4c3RyZHVwIChmaWxlbmFtZSk7Ci0gCi0gICBmZCA9IExESV9GRCAo bGRpLCBhcmNoNjQpOwotICAgaWYgKGZkIDwgMCkKLSAgICAgLyogTm90ZSB0aGF0IHRoaXMgb3Bl bnMgaXQgb25jZSBmb3IgZXZlcnkgbWVtYmVyOyBhIHBvc3NpYmxlCi0gICAgICAgIGVuaGFuY2Vt ZW50IHdvdWxkIGJlIHRvIG9ubHkgb3BlbiBpdCBvbmNlIGZvciBldmVyeSBvYmplY3QuICAqLwot LSAgICBhYmZkID0gYmZkX29wZW5yIChvYmpuYW1lLCBnbnV0YXJnZXQpOwotKyAgICBhYmZkID0g Z2RiX2JmZF9vcGVuciAoZmlsZW5hbWUsIGdudXRhcmdldCk7Ci0gICBlbHNlCi0tICAgIGFiZmQg PSBiZmRfZmRvcGVuciAob2JqbmFtZSwgZ251dGFyZ2V0LCBmZCk7Ci0rICAgIGFiZmQgPSBnZGJf YmZkX2Zkb3BlbnIgKGZpbGVuYW1lLCBnbnV0YXJnZXQsIGZkKTsKLSAgIGlmICghYWJmZCkKLSAg ICAgewotICAgICAgIHdhcm5pbmcgKF8oIkNvdWxkIG5vdCBvcGVuIGAlcycgYXMgYW4gZXhlY3V0 YWJsZSBmaWxlOiAlcyIpLAotLQkgICAgICAgb2JqbmFtZSwgYmZkX2Vycm1zZyAoYmZkX2dldF9l cnJvciAoKSkpOwotKwkgICAgICAgZmlsZW5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3Ig KCkpKTsKLSAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotQEAgLTc2NiwzNSArNzY1LDQ0 IEBAIGFkZF92bWFwIChMZEluZm8gKmxkaSkKLSAKLSAgIGVsc2UgaWYgKGJmZF9jaGVja19mb3Jt YXQgKGFiZmQsIGJmZF9hcmNoaXZlKSkKLSAgICAgewotLSAgICAgIGxhc3QgPSAwOwotLSAgICAg IC8qIEZJWE1FPz8/IGFtIEkgdG9zc2luZyBCRkRzPyAgYmZkPyAgKi8KLS0gICAgICB3aGlsZSAo KGxhc3QgPSBiZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhYmZkLCBsYXN0KSkpCi0tCWlm IChzdHJjbXAgKG1lbSwgbGFzdC0+ZmlsZW5hbWUpID09IDApCi0tCSAgYnJlYWs7Ci0rICAgICAg bGFzdCA9IGdkYl9iZmRfb3BlbnJfbmV4dF9hcmNoaXZlZF9maWxlIChhYmZkLCBOVUxMKTsKLSsg ICAgICB3aGlsZSAobGFzdCAhPSBOVUxMKQotKwl7Ci0rCSAgYmZkICpuZXh0OwotKwotKwkgIGlm IChzdHJjbXAgKG1lbSwgbGFzdC0+ZmlsZW5hbWUpID09IDApCi0rCSAgICBicmVhazsKLSsKLSsJ ICBuZXh0ID0gZ2RiX2JmZF9vcGVucl9uZXh0X2FyY2hpdmVkX2ZpbGUgKGFiZmQsIGxhc3QpOwot KwkgIGdkYl9iZmRfdW5yZWYgKGxhc3QpOwotKwl9Ci0gCi0gICAgICAgaWYgKCFsYXN0KQotIAl7 Ci0tCSAgd2FybmluZyAoXygiXCIlc1wiOiBtZW1iZXIgXCIlc1wiIG1pc3NpbmcuIiksIG9iam5h bWUsIG1lbSk7Ci0tCSAgYmZkX2Nsb3NlIChhYmZkKTsKLSsJICB3YXJuaW5nIChfKCJcIiVzXCI6 IG1lbWJlciBcIiVzXCIgbWlzc2luZy4iKSwgZmlsZW5hbWUsIG1lbSk7Ci0rCSAgZ2RiX2JmZF91 bnJlZiAoYWJmZCk7Ci0gCSAgcmV0dXJuIE5VTEw7Ci0gCX0KLSAKLSAgICAgICBpZiAoIWJmZF9j aGVja19mb3JtYXQgKGxhc3QsIGJmZF9vYmplY3QpKQotIAl7Ci0gCSAgd2FybmluZyAoXygiXCIl c1wiOiBtZW1iZXIgXCIlc1wiIG5vdCBpbiBleGVjdXRhYmxlIGZvcm1hdDogJXMuIiksCi0tCQkg ICBvYmpuYW1lLCBtZW0sIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLS0JICBiZmRf Y2xvc2UgKGxhc3QpOwotLQkgIGJmZF9jbG9zZSAoYWJmZCk7Ci0rCQkgICBmaWxlbmFtZSwgbWVt LCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rCSAgZ2RiX2JmZF91bnJlZiAobGFz dCk7Ci0rCSAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gCSAgcmV0dXJuIE5VTEw7Ci0gCX0KKy0g IG9iai0+dHlwZSA9IHR5cGU7CistICBvYmotPnByZXYgPSBOVUxMOworLSAgaWYgKHR5cGUgJiYg VFlQRV9PQkpGSUxFICh0eXBlKSkKKy0gICAgeworLSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKKysgIHR5cGVfb2JqZWN0ICp0eXBlX29iaiA9ICh0 eXBlX29iamVjdCAqKSBvYmo7CiAgCi0gICAgICAgdnAgPSBtYXBfdm1hcCAobGFzdCwgYWJmZCk7 Ci0rICAgICAgLyogbWFwX3ZtYXAgYWNxdWlyZWQgYSByZWZlcmVuY2UgdG8gTEFTVCwgc28gd2Ug Y2FuIHJlbGVhc2UKLSsJIG91cnMuICAqLwotKyAgICAgIGdkYl9iZmRfdW5yZWYgKGxhc3QpOwot ICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLSAgICAgICB3YXJuaW5nIChfKCJcIiVzXCI6IG5vdCBp biBleGVjdXRhYmxlIGZvcm1hdDogJXMuIiksCi0tCSAgICAgICBvYmpuYW1lLCBiZmRfZXJybXNn IChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0tICAgICAgYmZkX2Nsb3NlIChhYmZkKTsKLSsJICAgICAg IGZpbGVuYW1lLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0rICAgICAgZ2RiX2Jm ZF91bnJlZiAoYWJmZCk7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAgIG9iaiA9IGFs bG9jYXRlX29iamZpbGUgKHZwLT5iZmQsIDApOwotQEAgLTgwMyw2ICs4MTEsMTEgQEAgYWRkX3Zt YXAgKExkSW5mbyAqbGRpKQotICAgLyogQWx3YXlzIGFkZCBzeW1ib2xzIGZvciB0aGUgbWFpbiBv YmpmaWxlLiAgKi8KLSAgIGlmICh2cCA9PSB2bWFwIHx8IGF1dG9fc29saWJfYWRkKQotICAgICB2 bWFwX2FkZF9zeW1ib2xzICh2cCk7Ci0rCi0rICAvKiBBbnl0aGluZyBuZWVkaW5nIGEgcmVmZXJl bmNlIHRvIEFCRkQgaGFzIGFscmVhZHkgYWNxdWlyZWQgaXQsIHNvCi0rICAgICByZWxlYXNlIG91 ciBsb2NhbCByZWZlcmVuY2UuICAqLwotKyAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7CistICAgICAg b2JqLT5uZXh0ID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXkp OworLSAgICAgIGlmIChvYmotPm5leHQpCistCW9iai0+bmV4dC0+cHJldiA9IG9iajsKKy0gICAg ICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZpbGVfZGF0YV9rZXksIG9iaik7 CistICAgIH0KKy0gIGVsc2UKKy0gICAgb2JqLT5uZXh0ID0gTlVMTDsKKysgIHR5cHlfdW5saW5r ICh0eXBlX29iaik7CiArCi0gICByZXR1cm4gdnA7CisrICB0eXBlX29iai0+b2JfdHlwZS0+dHBf ZnJlZSAob2JqKTsKICB9Ci0gDAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1kYXJ3aW4uYyBiL2dk Yi9zb2xpYi1kYXJ3aW4uYwotaW5kZXggZDUyZmI0Ni4uZGI4ZjE4NyAxMDA2NDQKLS0tLSBhL2dk Yi9zb2xpYi1kYXJ3aW4uYwotKysrIGIvZ2RiL3NvbGliLWRhcndpbi5jCi1AQCAtMjgsNiArMjgs NyBAQAotICNpbmNsdWRlICJpbmZlcmlvci5oIgotICNpbmNsdWRlICJyZWdjYWNoZS5oIgotICNp bmNsdWRlICJnZGJ0aHJlYWQuaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgotIAotICNpbmNsdWRl ICJnZGJfYXNzZXJ0LmgiCi0gCi1AQCAtMzU2LDYgKzM1Nyw3IEBAIGRhcndpbl9zb2xpYl9nZXRf YWxsX2ltYWdlX2luZm9fYWRkcl9hdF9pbml0IChzdHJ1Y3QgZGFyd2luX2luZm8gKmluZm8pCi0g ICBnZGJfYnl0ZSAqaW50ZXJwX25hbWU7Ci0gICBDT1JFX0FERFIgbG9hZF9hZGRyID0gMDsKLSAg IGJmZCAqZHlsZF9iZmQgPSBOVUxMOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0gCi0g ICAvKiBUaGlzIG1ldGhvZCBkb2Vzbid0IHdvcmsgd2l0aCBhbiBhdHRhY2hlZCBwcm9jZXNzLiAg Ki8KLSAgIGlmIChjdXJyZW50X2luZmVyaW9yICgpLT5hdHRhY2hfZmxhZykKLUBAIC0zNjYsMjQg KzM2OCwzMSBAQCBkYXJ3aW5fc29saWJfZ2V0X2FsbF9pbWFnZV9pbmZvX2FkZHJfYXRfaW5pdCAo c3RydWN0IGRhcndpbl9pbmZvICppbmZvKQotICAgaWYgKCFpbnRlcnBfbmFtZSkKLSAgICAgcmV0 dXJuOwotIAotKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsK LSsKLSAgIC8qIENyZWF0ZSBhIGJmZCBmb3IgdGhlIGludGVycHJldGVyLiAgKi8KLS0gIGR5bGRf YmZkID0gYmZkX29wZW5yIChpbnRlcnBfbmFtZSwgZ251dGFyZ2V0KTsKLSsgIGR5bGRfYmZkID0g Z2RiX2JmZF9vcGVuciAoaW50ZXJwX25hbWUsIGdudXRhcmdldCk7Ci0gICBpZiAoZHlsZF9iZmQp Ci0gICAgIHsKLSAgICAgICBiZmQgKnN1YjsKLSAKLSsgICAgICBtYWtlX2NsZWFudXBfYmZkX3Vu cmVmIChkeWxkX2JmZCk7Ci0gICAgICAgc3ViID0gYmZkX21hY2hfb19mYXRfZXh0cmFjdCAoZHls ZF9iZmQsIGJmZF9vYmplY3QsCi0gCQkJCSAgICBnZGJhcmNoX2JmZF9hcmNoX2luZm8gKHRhcmdl dF9nZGJhcmNoKSk7Ci0gICAgICAgaWYgKHN1YikKLS0JZHlsZF9iZmQgPSBzdWI7Ci0tICAgICAg ZWxzZQotIAl7Ci0tCSAgYmZkX2Nsb3NlIChkeWxkX2JmZCk7Ci0tCSAgZHlsZF9iZmQgPSBOVUxM OwotKwkgIGR5bGRfYmZkID0gc3ViOwotKwkgIGdkYl9iZmRfcmVmIChzdWIpOwotKwkgIG1ha2Vf Y2xlYW51cF9iZmRfdW5yZWYgKHN1Yik7Ci0gCX0KLSsgICAgICBlbHNlCi0rCWR5bGRfYmZkID0g TlVMTDsKLSAgICAgfQotICAgaWYgKCFkeWxkX2JmZCkKLS0gICAgcmV0dXJuOwotKyAgICB7Ci0r ICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotIAot ICAgLyogV2UgZmluZCB0aGUgZHluYW1pYyBsaW5rZXIncyBiYXNlIGFkZHJlc3MgYnkgZXhhbWlu aW5nCi0gICAgICB0aGUgY3VycmVudCBwYyAod2hpY2ggc2hvdWxkIHBvaW50IGF0IHRoZSBlbnRy eSBwb2ludCBmb3IgdGhlCi1AQCAtMzk1LDcgKzQwNCw3IEBAIGRhcndpbl9zb2xpYl9nZXRfYWxs X2ltYWdlX2luZm9fYWRkcl9hdF9pbml0IChzdHJ1Y3QgZGFyd2luX2luZm8gKmluZm8pCi0gICBp bmZvLT5hbGxfaW1hZ2VfYWRkciA9Ci0gICAgIGxvb2t1cF9zeW1ib2xfZnJvbV9iZmQgKGR5bGRf YmZkLCAiX2R5bGRfYWxsX2ltYWdlX2luZm9zIik7CiAgCi0tICBiZmRfY2xvc2UgKGR5bGRfYmZk KTsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSAKLSAgIGlmIChpbmZvLT5hbGxfaW1hZ2Vf YWRkciA9PSAwKQotICAgICByZXR1cm47Ci1AQCAtNTA5LDE3ICs1MTgsMTAgQEAgZGFyd2luX2Jm ZF9vcGVuIChjaGFyICpwYXRobmFtZSkKLSAJCQkJZ2RiYXJjaF9iZmRfYXJjaF9pbmZvICh0YXJn ZXRfZ2RiYXJjaCkpOwotICAgaWYgKCFyZXMpCi0gICAgIHsKLS0gICAgICBiZmRfY2xvc2UgKGFi ZmQpOwotLSAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIGZvdW5kX3BhdGhuYW1lKTsKLSsgICAg ICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChhYmZkKTsKLSAgICAgICBlcnJvciAoXygiYCVzJzog bm90IGEgc2hhcmVkLWxpYnJhcnk6ICVzIiksCi0tCSAgICAgZm91bmRfcGF0aG5hbWUsIGJmZF9l cnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSsJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZk KSwgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotICAgICB9CisrI2lmIDAKKysvKiBD YWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RC IHNvdXJjZSBmaWxlLiAgKi8KKyBzdGF0aWMgdm9pZAorLXR5cHlfZGVhbGxvYyAoUHlPYmplY3Qg Km9iaikKKyt0eXB5X3R5cGVzX21hcmtfdXNlZCAodm9pZCkKKyB7CistICB0eXBlX29iamVjdCAq dHlwZSA9ICh0eXBlX29iamVjdCAqKSBvYmo7CiAtCi0tICAvKiBNYWtlIHN1cmUgdGhhdCB0aGUg ZmlsZW5hbWUgaXMgbWFsbG9jJ2VkLiAgVGhlIGN1cnJlbnQgZmlsZW5hbWUKLS0gICAgIGZvciBm YXQtYmluYXJpZXMgQkZEcyBpcyBhIG5hbWUgdGhhdCB3YXMgZ2VuZXJhdGVkIGJ5IEJGRCwgdXN1 YWxseQotLSAgICAgYSBzdGF0aWMgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIG5hbWUgb2YgdGhlIGFy Y2hpdGVjdHVyZS4gICovCi0tICByZXMtPmZpbGVuYW1lID0geHN0cmR1cCAocGF0aG5hbWUpOwor LSAgaWYgKHR5cGUtPnByZXYpCistICAgIHR5cGUtPnByZXYtPm5leHQgPSB0eXBlLT5uZXh0Owor LSAgZWxzZSBpZiAodHlwZS0+dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUtPnR5cGUpKQorLSAg ICB7CistICAgICAgLyogTXVzdCByZXNldCBoZWFkIG9mIGxpc3QuICAqLworLSAgICAgIHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlLT50eXBlKTsKIC0KLSAgIHJl dHVybiByZXM7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1kc2J0LmMgYi9nZGIvc29s aWItZHNidC5jCi1pbmRleCAyNTAwYzFmLi5mY2MwMWE4IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGli LWRzYnQuYwotKysrIGIvZ2RiL3NvbGliLWRzYnQuYwotQEAgLTMwLDYgKzMwLDcgQEAKLSAjaW5j bHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImVsZi1iZmQuaCIKLSAjaW5jbHVkZSAiZXhjZXB0 aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gI2RlZmluZSBHT1RfTU9EVUxFX09G RlNFVCA0Ci0gCi1AQCAtODk5LDcgKzkwMCw3IEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCi0gCXsK LSAJICB3YXJuaW5nIChfKCJDb3VsZCBub3QgZmluZCBzeW1ib2wgX2RsX2RlYnVnX2FkZHIgaW4g ZHluYW1pYyBsaW5rZXIiKSk7Ci0gCSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsK LS0JICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwot IAkgIHJldHVybiAwOwotIAl9Ci0gCi1AQCAtOTQ4LDEzICs5NDksMTMgQEAgZW5hYmxlX2JyZWFr MiAodm9pZCkKLSAJCSAgICAgIihhdCBhZGRyZXNzICVzKSBmcm9tIGR5bmFtaWMgbGlua2VyIiks Ci0gCSAgICAgICAgICAgaGV4X3N0cmluZ19jdXN0b20gKGFkZHIgKyA4LCA4KSk7Ci0gCSAgZW5h YmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsKLS0JICBiZmRfY2xvc2UgKHRtcF9iZmQpOwot KwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAkgIHJldHVybiAwOwotIAl9Ci0gICAgICAg YWRkciA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoYWRkcl9idWYsIHNpemVvZiBhZGRyX2J1 ZiwgYnl0ZV9vcmRlcik7Ci0gCi0gICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB0ZW1wb3Jh cnkgYmZkLiAgKi8KLS0gICAgICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKyAgICAgIGdkYl9iZmRf dW5yZWYgKHRtcF9iZmQpOwotIAotICAgICAgIC8qIFdlJ3JlIGFsc28gZG9uZSB3aXRoIHRoZSBs b2FkbWFwLiAgKi8KLSAgICAgICB4ZnJlZSAobGRtKTsKLWRpZmYgLS1naXQgYS9nZGIvc29saWIt ZnJ2LmMgYi9nZGIvc29saWItZnJ2LmMKLWluZGV4IDJmMmM4YjAuLjBmNTk1MzUgMTAwNjQ0Ci0t LS0gYS9nZGIvc29saWItZnJ2LmMKLSsrKyBiL2dkYi9zb2xpYi1mcnYuYwotQEAgLTMxLDYgKzMx LDcgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1ZGUgImVsZi9mcnYuaCIKLSAjaW5j bHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gLyogRmxhZyB3 aGljaCBpbmRpY2F0ZXMgd2hldGhlciBpbnRlcm5hbCBkZWJ1ZyBtZXNzYWdlcyBzaG91bGQgYmUg cHJpbnRlZC4gICovCi0gc3RhdGljIGludCBzb2xpYl9mcnZfZGVidWc7Ci1AQCAtNTc0LDcgKzU3 NSw3IEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCi0gCXsKLSAJICB3YXJuaW5nIChfKCJVbmFibGUg dG8gZGV0ZXJtaW5lIGR5bmFtaWMgbGlua2VyIGxvYWRtYXAgYWRkcmVzcy4iKSk7Ci0gCSAgZW5h YmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsKLS0JICBiZmRfY2xvc2UgKHRtcF9iZmQpOwot KwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAkgIHJldHVybiAwOwotIAl9Ci0gCi1AQCAt NTg5LDcgKzU5MCw3IEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCi0gCSAgd2FybmluZyAoXygiVW5h YmxlIHRvIGxvYWQgZHluYW1pYyBsaW5rZXIgbG9hZG1hcCBhdCBhZGRyZXNzICVzLiIpLAotIAkg ICAgICAgICAgIGhleF9zdHJpbmdfY3VzdG9tIChpbnRlcnBfbG9hZG1hcF9hZGRyLCA4KSk7Ci0g CSAgZW5hYmxlX2JyZWFrX2ZhaWx1cmVfd2FybmluZyAoKTsKLS0JICBiZmRfY2xvc2UgKHRtcF9i ZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAkgIHJldHVybiAwOwotIAl9Ci0g Ci1AQCAtNjIzLDcgKzYyNCw3IEBAIGVuYWJsZV9icmVhazIgKHZvaWQpCi0gCSAgd2FybmluZyAo XygiQ291bGQgbm90IGZpbmQgc3ltYm9sIF9kbF9kZWJ1Z19hZGRyICIKLSAJCSAgICAgImluIGR5 bmFtaWMgbGlua2VyIikpOwotIAkgIGVuYWJsZV9icmVha19mYWlsdXJlX3dhcm5pbmcgKCk7Ci0t CSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKLSsJICBnZGJfYmZkX3VucmVmICh0bXBfYmZkKTsKLSAJ ICByZXR1cm4gMDsKLSAJfQotIAotQEAgLTY3NCw3ICs2NzUsNyBAQCBlbmFibGVfYnJlYWsyICh2 b2lkKQotIAkJICAgICAiKGF0IGFkZHJlc3MgJXMpIGZyb20gZHluYW1pYyBsaW5rZXIiKSwKLSAJ ICAgICAgICAgICBoZXhfc3RyaW5nX2N1c3RvbSAoYWRkciArIDgsIDgpKTsKLSAJICBlbmFibGVf YnJlYWtfZmFpbHVyZV93YXJuaW5nICgpOwotLQkgIGJmZF9jbG9zZSAodG1wX2JmZCk7Ci0rCSAg Z2RiX2JmZF91bnJlZiAodG1wX2JmZCk7Ci0gCSAgcmV0dXJuIDA7Ci0gCX0KLSAgICAgICBhZGRy ID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChhZGRyX2J1Ziwgc2l6ZW9mIGFkZHJfYnVmLCBi eXRlX29yZGVyKTsKLUBAIC02ODYsMTMgKzY4NywxMyBAQCBlbmFibGVfYnJlYWsyICh2b2lkKQot IAkJICAgICAiKGF0IGFkZHJlc3MgJXMpIGZyb20gZHluYW1pYyBsaW5rZXIiKSwKLSAJICAgICAg ICAgICBoZXhfc3RyaW5nX2N1c3RvbSAoYWRkciwgOCkpOwotIAkgIGVuYWJsZV9icmVha19mYWls dXJlX3dhcm5pbmcgKCk7Ci0tCSAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKLSsJICBnZGJfYmZkX3Vu cmVmICh0bXBfYmZkKTsKLSAJICByZXR1cm4gMDsKLSAJfQotICAgICAgIGFkZHIgPSBleHRyYWN0 X3Vuc2lnbmVkX2ludGVnZXIgKGFkZHJfYnVmLCBzaXplb2YgYWRkcl9idWYsIGJ5dGVfb3JkZXIp OwotIAotICAgICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCB0aGUgdGVtcG9yYXJ5IGJmZC4gICovCi0t ICAgICAgYmZkX2Nsb3NlICh0bXBfYmZkKTsKLSsgICAgICBnZGJfYmZkX3VucmVmICh0bXBfYmZk KTsKLSAKLSAgICAgICAvKiBXZSdyZSBhbHNvIGRvbmUgd2l0aCB0aGUgbG9hZG1hcC4gICovCi0g ICAgICAgeGZyZWUgKGxkbSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXBhNjQuYyBiL2dkYi9z b2xpYi1wYTY0LmMKLWluZGV4IDJiOGQwNjEuLjAwZWQ4YTUgMTAwNjQ0Ci0tLS0gYS9nZGIvc29s aWItcGE2NC5jCi0rKysgYi9nZGIvc29saWItcGE2NC5jCi1AQCAtMzYyLDcgKzM2Miw3IEBAIG1h bnBhZ2UgZm9yIG1ldGhvZHMgdG8gcHJpdmF0ZWx5IG1hcCBzaGFyZWQgbGlicmFyeSB0ZXh0LiIp KTsKLSAJIHRvIGZpbmQgYW55IG1hZ2ljIGZvcm11bGEgdG8gZmluZCBpdCBmb3IgU29sYXJpcyAo YXBwZWFycyB0bwotIAkgYmUgdHJpdmlhbCBvbiBHTlUvTGludXgpLiAgVGhlcmVmb3JlLCB3ZSBo YXZlIHRvIHRyeSBhbiBhbHRlcm5hdGUKLSAJIG1lY2hhbmlzbSB0byBmaW5kIHRoZSBkeW5hbWlj IGxpbmtlcidzIGJhc2UgYWRkcmVzcy4gICovCi0tICAgICAgdG1wX2JmZCA9IGJmZF9vcGVuciAo YnVmLCBnbnV0YXJnZXQpOwotKyAgICAgIHRtcF9iZmQgPSBnZGJfYmZkX29wZW5yIChidWYsIGdu dXRhcmdldCk7Ci0gICAgICAgaWYgKHRtcF9iZmQgPT0gTlVMTCkKLSAJcmV0dXJuOwotIAotQEAg LTM3MSw3ICszNzEsNyBAQCBtYW5wYWdlIGZvciBtZXRob2RzIHRvIHByaXZhdGVseSBtYXAgc2hh cmVkIGxpYnJhcnkgdGV4dC4iKSk7Ci0gCXsKLSAJICB3YXJuaW5nIChfKCJVbmFibGUgdG8gZ3Jv ayBkeW5hbWljIGxpbmtlciAlcyBhcyBhbiBvYmplY3QgZmlsZSIpLAotIAkJICAgYnVmKTsKLS0J ICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKHRtcF9iZmQpOwotIAkg IHJldHVybjsKLSAJfQotIAotQEAgLTQwMSw3ICs0MDEsNyBAQCBtYW5wYWdlIGZvciBtZXRob2Rz IHRvIHByaXZhdGVseSBtYXAgc2hhcmVkIGxpYnJhcnkgdGV4dC4iKSk7Ci0gICAgICAgfQorLSAg ICAgIGlmIChvYmpmaWxlKQorLQlzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCB0eXB5X29iamZp bGVfZGF0YV9rZXksIHR5cGUtPm5leHQpOworLSAgICB9CistICBpZiAodHlwZS0+bmV4dCkKKy0g ICAgdHlwZS0+bmV4dC0+cHJldiA9IHR5cGUtPnByZXY7CisrICB0eXBlX29iamVjdCAqdHlwZV9v Ymo7CiAgCi0gICAgICAgLyogV2UncmUgZG9uZSB3aXRoIHRoZSB0ZW1wb3JhcnkgYmZkLiAgKi8K LS0gICAgICBiZmRfY2xvc2UgKHRtcF9iZmQpOwotKyAgICAgIGdkYl9iZmRfdW5yZWYgKHRtcF9i ZmQpOwotICAgICB9CistICBQeV9UWVBFICh0eXBlKS0+dHBfZnJlZSAodHlwZSk7CisrICBmb3Ig KHR5cGVfb2JqID0gcHl0eV9vYmplY3RzX2Rpc2NhcmRhYmxlOworKyAgICAgICB0eXBlX29iaiAh PSBOVUxMOworKyAgICAgICB0eXBlX29iaiA9IHR5cGVfb2JqLT5uZXh0KQorKyAgICB0eXBlX21h cmtfdXNlZCAodHlwZV9vYmotPnR5cGUpOwogIH0KKysjZW5kaWYKICAKLWRpZmYgLS1naXQgYS9n ZGIvc29saWItc3B1LmMgYi9nZGIvc29saWItc3B1LmMKLWluZGV4IGI1NDU0ZTcuLmY2MmQ5NmMg MTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3B1LmMKLSsrKyBiL2dkYi9zb2xpYi1zcHUuYwotQEAg LTM2LDYgKzM2LDcgQEAKLSAjaW5jbHVkZSAiYnJlYWtwb2ludC5oIgotICNpbmNsdWRlICJnZGJ0 aHJlYWQuaCIKLSAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgi Ci0gCi0gI2luY2x1ZGUgInNwdS10ZGVwLmgiCi0gCi1AQCAtMzI1LDE2ICszMjYsMTYgQEAgc3B1 X2JmZF9mb3BlbiAoY2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHIpCi0gICBDT1JFX0FERFIgKm9w ZW5fY2xvc3VyZSA9IHhtYWxsb2MgKHNpemVvZiAoQ09SRV9BRERSKSk7Ci0gICAqb3Blbl9jbG9z dXJlID0gYWRkcjsKLSAKLS0gIG5iZmQgPSBiZmRfb3BlbnJfaW92ZWMgKHhzdHJkdXAgKG5hbWUp LCAiZWxmMzItc3B1IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHNwdV9iZmRfaW92ZWNf b3Blbiwgb3Blbl9jbG9zdXJlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3B1X2JmZF9p b3ZlY19wcmVhZCwgc3B1X2JmZF9pb3ZlY19jbG9zZSwKLS0JCQkgIHNwdV9iZmRfaW92ZWNfc3Rh dCk7Ci0rICBuYmZkID0gZ2RiX2JmZF9vcGVucl9pb3ZlYyAobmFtZSwgImVsZjMyLXNwdSIsCi0r CQkJICAgICAgc3B1X2JmZF9pb3ZlY19vcGVuLCBvcGVuX2Nsb3N1cmUsCi0rCQkJICAgICAgc3B1 X2JmZF9pb3ZlY19wcmVhZCwgc3B1X2JmZF9pb3ZlY19jbG9zZSwKLSsJCQkgICAgICBzcHVfYmZk X2lvdmVjX3N0YXQpOwotICAgaWYgKCFuYmZkKQotICAgICByZXR1cm4gTlVMTDsKLSAKLSAgIGlm ICghYmZkX2NoZWNrX2Zvcm1hdCAobmJmZCwgYmZkX29iamVjdCkpCi0gICAgIHsKLS0gICAgICBi ZmRfY2xvc2UgKG5iZmQpOwotKyAgICAgIGdkYl9iZmRfdW5yZWYgKG5iZmQpOwotICAgICAgIHJl dHVybiBOVUxMOwotICAgICB9CisgLyogUmV0dXJuIG51bWJlciBvZiBmaWVsZHMgKCJsZW5ndGgi IG9mIHRoZSBmaWVsZCBkaWN0aW9uYXJ5KS4gICovCiAgCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGli LXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKLWluZGV4IDMwN2U0ODMuLjc2YmQ4NzIgMTAwNjQ0 Ci0tLS0gYS9nZGIvc29saWItc3ZyNC5jCi0rKysgYi9nZGIvc29saWItc3ZyNC5jCi1AQCAtNDYs NiArNDYsNyBAQAotICNpbmNsdWRlICJleGVjLmgiCi0gI2luY2x1ZGUgImF1eHYuaCIKLSAjaW5j bHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gCi0gc3RhdGljIHN0 cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0X2ZldGNoX2xpbmtfbWFwX29mZnNldHMgKHZvaWQp OwotIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xpbmtfbWFwX29mZnNldHMgKHZvaWQpOwotQEAgLTE1 NTgsOSArMTU1OSwxMSBAQCBlbmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGlu dCBmcm9tX3R0eSkKLSAJZ290byBia3B0X2F0X3N5bWJvbDsKLSAKLSAgICAgICAvKiBOb3cgY29u dmVydCB0aGUgVE1QX0JGRCBpbnRvIGEgdGFyZ2V0LiAgVGhhdCB3YXkgdGFyZ2V0LCBhcwotLSAg ICAgICAgIHdlbGwgYXMgQkZEIG9wZXJhdGlvbnMgY2FuIGJlIHVzZWQuICBOb3RlIHRoYXQgY2xv c2luZyB0aGUKLS0gICAgICAgICB0YXJnZXQgd2lsbCBhbHNvIGNsb3NlIHRoZSB1bmRlcmx5aW5n IGJmZC4gICovCi0rICAgICAgICAgd2VsbCBhcyBCRkQgb3BlcmF0aW9ucyBjYW4gYmUgdXNlZC4g ICovCi0gICAgICAgdG1wX2JmZF90YXJnZXQgPSB0YXJnZXRfYmZkX3Jlb3BlbiAodG1wX2JmZCk7 Ci0rICAgICAgLyogdGFyZ2V0X2JmZF9yZW9wZW4gYWNxdWlyZWQgaXRzIG93biByZWZlcmVuY2Us IHNvIHdlIGNhbgotKyAgICAgICAgIHJlbGVhc2Ugb3VycyBub3cuICAqLwotKyAgICAgIGdkYl9i ZmRfdW5yZWYgKHRtcF9iZmQpOwotIAotICAgICAgIC8qIE9uIGEgcnVubmluZyB0YXJnZXQsIHdl IGNhbiBnZXQgdGhlIGR5bmFtaWMgbGlua2VyJ3MgYmFzZQotICAgICAgICAgIGFkZHJlc3MgZnJv bSB0aGUgc2hhcmVkIGxpYnJhcnkgdGFibGUuICAqLwotQEAgLTE2NzAsOCArMTY3Myw5IEBAIGVu YWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW50IGZyb21fdHR5KQotIAkJCQkJ CSAgICAgICBzeW1fYWRkciwKLSAJCQkJCQkgICAgICAgdG1wX2JmZF90YXJnZXQpOwotIAotLSAg ICAgIC8qIFdlJ3JlIGRvbmUgd2l0aCBib3RoIHRoZSB0ZW1wb3JhcnkgYmZkIGFuZCB0YXJnZXQu ICBSZW1lbWJlciwKLS0gICAgICAgICBjbG9zaW5nIHRoZSB0YXJnZXQgY2xvc2VzIHRoZSB1bmRl cmx5aW5nIGJmZC4gICovCi0rICAgICAgLyogV2UncmUgZG9uZSB3aXRoIGJvdGggdGhlIHRlbXBv cmFyeSBiZmQgYW5kIHRhcmdldC4gIENsb3NpbmcKLSsgICAgICAgICB0aGUgdGFyZ2V0IGNsb3Nl cyB0aGUgdW5kZXJseWluZyBiZmQsIGJlY2F1c2UgaXQgaG9sZHMgdGhlCi0rICAgICAgICAgb25s eSByZW1haW5pbmcgcmVmZXJlbmNlLiAgKi8KLSAgICAgICB0YXJnZXRfY2xvc2UgKHRtcF9iZmRf dGFyZ2V0LCAwKTsKLSAKLSAgICAgICBpZiAoc3ltX2FkZHIgIT0gMCkKLWRpZmYgLS1naXQgYS9n ZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCi1pbmRleCA5MDQzOWJhLi43Mzc3M2YxIDEwMDY0NAot LS0tIGEvZ2RiL3NvbGliLmMKLSsrKyBiL2dkYi9zb2xpYi5jCi1AQCAtNDYsNiArNDYsNyBAQAot ICNpbmNsdWRlICJzb2xpYi5oIgotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0gI2luY2x1ZGUgImZp bGVzeXN0ZW0uaCIKLSsjaW5jbHVkZSAiZ2RiX2JmZC5oIgorQEAgLTE0ODMsNyArMTUzNCwxMCBA QCB0eXBlX3RvX3R5cGVfb2JqZWN0IChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAKLSAvKiBBcmNoaXRl Y3R1cmUtc3BlY2lmaWMgb3BlcmF0aW9ucy4gICovCisgICB0eXBlX29iaiA9IFB5T2JqZWN0X05l dyAodHlwZV9vYmplY3QsICZ0eXBlX29iamVjdF90eXBlKTsKKyAgIGlmICh0eXBlX29iaikKKy0g ICAgc2V0X3R5cGUgKHR5cGVfb2JqLCB0eXBlKTsKKysgICAgeworKyAgICAgIHR5cGVfb2JqLT50 eXBlID0gdHlwZTsKKysgICAgICB0eXB5X2xpbmsgKHR5cGVfb2JqKTsKKysgICAgfQogIAotQEAg LTM2MCw5ICszNjEsOSBAQCBzb2xpYl9maW5kIChjaGFyICppbl9wYXRobmFtZSwgaW50ICpmZCkK LSAgICBpdCBpcyB1c2VkIGFzIGZpbGUgaGFuZGxlIHRvIG9wZW4gdGhlIGZpbGUuICBUaHJvd3Mg YW4gZXJyb3IgaWYgdGhlIGZpbGUKLSAgICBjb3VsZCBub3QgYmUgb3BlbmVkLiAgSGFuZGxlcyBi b3RoIGxvY2FsIGFuZCByZW1vdGUgZmlsZSBhY2Nlc3MuCisgICByZXR1cm4gKFB5T2JqZWN0ICop IHR5cGVfb2JqOworIH0KK0BAIC0xNTYzLDYgKzE2MTcsMTAgQEAgZ2RicHlfaW5pdGlhbGl6ZV90 eXBlcyAodm9pZCkKICAKLS0gICBQQVRITkFNRSBtdXN0IGJlIG1hbGxvYydlZCBieSB0aGUgY2Fs bGVyLiAgSWYgc3VjY2Vzc2Z1bCwgdGhlIG5ldyBCRkQncwotLSAgIG5hbWUgd2lsbCBwb2ludCB0 byBpdC4gIElmIHVuc3VjY2Vzc2Z1bCwgUEFUSE5BTUUgd2lsbCBiZSBmcmVlZCBhbmQgdGhlCi0t ICAgRkQgd2lsbCBiZSBjbG9zZWQgKHVubGVzcyBGRCB3YXMgLTEpLiAgKi8KLSsgICBQQVRITkFN RSBtdXN0IGJlIG1hbGxvYydlZCBieSB0aGUgY2FsbGVyLiAgSXQgd2lsbCBiZSBmcmVlZCBieSB0 aGlzCi0rICAgZnVuY3Rpb24uICBJZiB1bnN1Y2Nlc3NmdWwsIHRoZSBGRCB3aWxsIGJlIGNsb3Nl ZCAodW5sZXNzIEZEIHdhcwotKyAgIC0xKS4gICovCisgICBQeV9JTkNSRUYgKCZmaWVsZF9vYmpl Y3RfdHlwZSk7CisgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJGaWVsZCIsIChQ eU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOworKworKyNpZiAwCisrICBvYnNlcnZlcl9h dHRhY2hfbWFya191c2VkICh0eXB5X3R5cGVzX21hcmtfdXNlZCk7CisrI2VuZGlmCisgfQogIAot IGJmZCAqCi0gc29saWJfYmZkX2ZvcGVuIChjaGFyICpwYXRobmFtZSwgaW50IGZkKQotQEAgLTM3 Niw3ICszNzcsNyBAQCBzb2xpYl9iZmRfZm9wZW4gKGNoYXIgKnBhdGhuYW1lLCBpbnQgZmQpCi0g ICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIGFiZmQgPSBiZmRfZm9wZW4gKHBhdGhuYW1l LCBnbnV0YXJnZXQsIEZPUEVOX1JCLCBmZCk7Ci0rICAgICAgYWJmZCA9IGdkYl9iZmRfZm9wZW4g KHBhdGhuYW1lLCBnbnV0YXJnZXQsIEZPUEVOX1JCLCBmZCk7CisgDAorZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRob24vcHktdmFsdWUuYworaW5kZXggMTFjYzAz OC4uZWYyMzhmNiAxMDA2NDQKKy0tLSBhL2dkYi9weXRob24vcHktdmFsdWUuYworKysrIGIvZ2Ri L3B5dGhvbi9weS12YWx1ZS5jCitAQCAtMjksNiArMjksNyBAQAorICNpbmNsdWRlICJleHByZXNz aW9uLmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJweXRob24uaCIKKysjaW5j bHVkZSAib2JzZXJ2ZXIuaCIKICAKLSAgICAgICBpZiAoYWJmZCkKLSAJYmZkX3NldF9jYWNoZWFi bGUgKGFiZmQsIDEpOwotQEAgLTM4OSw2ICszOTAsOCBAQCBzb2xpYl9iZmRfZm9wZW4gKGNoYXIg KnBhdGhuYW1lLCBpbnQgZmQpCi0gCSAgICAgcGF0aG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRf ZXJyb3IgKCkpKTsKLSAgICAgfQorICNpZmRlZiBIQVZFX1BZVEhPTgogIAotKyAgeGZyZWUgKHBh dGhuYW1lKTsKLSsKLSAgIHJldHVybiBhYmZkOworQEAgLTEzODUsNiArMTM4NiwxOSBAQCBnZGJw eV9pc192YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmopCisgICByZXR1cm4gUHlPYmplY3RfVHlw ZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7CiAgfQogIAotQEAgLTQyMCwxNyArNDIz LDE2IEBAIHNvbGliX2JmZF9vcGVuIChjaGFyICpwYXRobmFtZSkKLSAgIC8qIENoZWNrIGJmZCBm b3JtYXQuICAqLwotICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChhYmZkLCBiZmRfb2JqZWN0KSkK LSAgICAgewotLSAgICAgIGJmZF9jbG9zZSAoYWJmZCk7Ci0tICAgICAgbWFrZV9jbGVhbnVwICh4 ZnJlZSwgZm91bmRfcGF0aG5hbWUpOwotKyAgICAgIG1ha2VfY2xlYW51cF9iZmRfdW5yZWYgKGFi ZmQpOwotICAgICAgIGVycm9yIChfKCJgJXMnOiBub3QgaW4gZXhlY3V0YWJsZSBmb3JtYXQ6ICVz IiksCi0tCSAgICAgZm91bmRfcGF0aG5hbWUsIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkp KTsKLSsJICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSwgYmZkX2Vycm1zZyAoYmZkX2dldF9l cnJvciAoKSkpOwotICAgICB9CisrI2lmIDAKKysvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBh bnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KKysKKytz dGF0aWMgdm9pZAorK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisreworKyAgdmFsdWVf b2JqZWN0ICppdGVyOworKworKyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5dGhvbjsgaXRlcjsg aXRlciA9IGl0ZXItPm5leHQpCisrICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChpdGVy LT52YWx1ZSkpOworK30KKysjZW5kaWYKKysKKyB2b2lkCisgZ2RicHlfaW5pdGlhbGl6ZV92YWx1 ZXMgKHZvaWQpCisgeworQEAgLTEzOTUsNiArMTQwOSwxMCBAQCBnZGJweV9pbml0aWFsaXplX3Zh bHVlcyAodm9pZCkKKyAgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIlZhbHVlIiwg KFB5T2JqZWN0ICopICZ2YWx1ZV9vYmplY3RfdHlwZSk7CiAgCi0gICAvKiBDaGVjayBiZmQgYXJj aC4gICovCi0gICBiID0gZ2RiYXJjaF9iZmRfYXJjaF9pbmZvICh0YXJnZXRfZ2RiYXJjaCk7Ci0g ICBpZiAoIWItPmNvbXBhdGlibGUgKGIsIGJmZF9nZXRfYXJjaF9pbmZvIChhYmZkKSkpCi0gICAg IHdhcm5pbmcgKF8oImAlcyc6IFNoYXJlZCBsaWJyYXJ5IGFyY2hpdGVjdHVyZSAlcyBpcyBub3Qg Y29tcGF0aWJsZSAiCi0tICAgICAgICAgICAgICAgIndpdGggdGFyZ2V0IGFyY2hpdGVjdHVyZSAl cy4iKSwgZm91bmRfcGF0aG5hbWUsCi0rICAgICAgICAgICAgICAgIndpdGggdGFyZ2V0IGFyY2hp dGVjdHVyZSAlcy4iKSwgYmZkX2dldF9maWxlbmFtZSAoYWJmZCksCi0gICAgICAgICAgICAgIGJm ZF9nZXRfYXJjaF9pbmZvIChhYmZkKS0+cHJpbnRhYmxlX25hbWUsIGItPnByaW50YWJsZV9uYW1l KTsKLSAKLSAgIHJldHVybiBhYmZkOwotQEAgLTQ2Niw3ICs0NjgsNyBAQCBzb2xpYl9tYXBfc2Vj dGlvbnMgKHN0cnVjdCBzb19saXN0ICpzbykKLSAgICAgcmV0dXJuIDA7Ci0gCi0gICAvKiBMZWF2 ZSBiZmQgb3BlbiwgY29yZV94ZmVyX21lbW9yeSBhbmQgImluZm8gZmlsZXMiIG5lZWQgaXQuICAq LwotLSAgc28tPmFiZmQgPSBnZGJfYmZkX3JlZiAoYWJmZCk7Ci0rICBzby0+YWJmZCA9IGFiZmQ7 Ci0gCi0gICAvKiBjb3B5IGZ1bGwgcGF0aCBuYW1lIGludG8gc29fbmFtZSwgc28gdGhhdCBsYXRl ciBzeW1ib2xfZmlsZV9hZGQKLSAgICAgIGNhbiBmaW5kIGl0LiAgKi8KLUBAIC0xMjMzLDcgKzEy MzUsNyBAQCByZWxvYWRfc2hhcmVkX2xpYnJhcmllc18xIChpbnQgZnJvbV90dHkpCi0gCXsKLSAJ ICBmb3VuZF9wYXRobmFtZSA9IHhzdHJkdXAgKGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKLSAJ ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmb3VuZF9wYXRobmFtZSk7Ci0tCSAgZ2RiX2JmZF9jbG9z ZV9vcl93YXJuIChhYmZkKTsKLSsJICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAJfQorICAgdmFs dWVzX2luX3B5dGhvbiA9IE5VTEw7CisrCisrI2lmIDAKKysgIG9ic2VydmVyX2F0dGFjaF9tYXJr X3VzZWQgKHB5dGhvbl90eXBlc19tYXJrX3VzZWQpOworKyNlbmRpZgorIH0KICAKLSAgICAgICAv KiBJZiB0aGlzIHNoYXJlZCBsaWJyYXJ5IGlzIG5vIGxvbmdlciBhc3NvY2lhdGVkIHdpdGggaXRz IHByZXZpb3VzCi1kaWZmIC0tZ2l0IGEvZ2RiL3NwdS1saW51eC1uYXQuYyBiL2dkYi9zcHUtbGlu dXgtbmF0LmMKLWluZGV4IDJkZmVjOGMuLjk5OWYxYWIgMTAwNjQ0Ci0tLS0gYS9nZGIvc3B1LWxp bnV4LW5hdC5jCi0rKysgYi9nZGIvc3B1LWxpbnV4LW5hdC5jCi1AQCAtMzE1LDE2ICszMTUsMTYg QEAgc3B1X2JmZF9vcGVuIChVTE9OR0VTVCBhZGRyKQotICAgVUxPTkdFU1QgKm9wZW5fY2xvc3Vy ZSA9IHhtYWxsb2MgKHNpemVvZiAoVUxPTkdFU1QpKTsKLSAgICpvcGVuX2Nsb3N1cmUgPSBhZGRy OwotIAotLSAgbmJmZCA9IGJmZF9vcGVucl9pb3ZlYyAoeHN0cmR1cCAoIjxpbi1tZW1vcnk+Iiks ICJlbGYzMi1zcHUiLAotLQkJCSAgc3B1X2JmZF9pb3ZlY19vcGVuLCBvcGVuX2Nsb3N1cmUsCi0t CQkJICBzcHVfYmZkX2lvdmVjX3ByZWFkLCBzcHVfYmZkX2lvdmVjX2Nsb3NlLAotLQkJCSAgc3B1 X2JmZF9pb3ZlY19zdGF0KTsKLSsgIG5iZmQgPSBnZGJfYmZkX29wZW5yX2lvdmVjICgiPGluLW1l bW9yeT4iLCAiZWxmMzItc3B1IiwKLSsJCQkgICAgICBzcHVfYmZkX2lvdmVjX29wZW4sIG9wZW5f Y2xvc3VyZSwKLSsJCQkgICAgICBzcHVfYmZkX2lvdmVjX3ByZWFkLCBzcHVfYmZkX2lvdmVjX2Ns b3NlLAotKwkJCSAgICAgIHNwdV9iZmRfaW92ZWNfc3RhdCk7Ci0gICBpZiAoIW5iZmQpCi0gICAg IHJldHVybiBOVUxMOwotIAotICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChuYmZkLCBiZmRfb2Jq ZWN0KSkKLSAgICAgewotLSAgICAgIGJmZF9jbG9zZSAobmJmZCk7Ci0rICAgICAgZ2RiX2JmZF91 bnJlZiAobmJmZCk7Ci0gICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KKyAMCitkaWZmIC0tZ2l0 IGEvZ2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKK2luZGV4IGIwZjcx YTIuLmQyMjQ4YzEgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisrKysgYi9nZGIv cHl0aG9uL3B5dGhvbi5jCitAQCAtNjYsNiArNjYsOCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2Ri cHlfc2hvdWxkX3ByaW50X3N0YWNrID0gcHl0aG9uX2V4Y3BfbWVzc2FnZTsKKyAjaW5jbHVkZSAi bGluZXNwZWMuaCIKKyAjaW5jbHVkZSAic291cmNlLmgiCisgI2luY2x1ZGUgInZlcnNpb24uaCIK KysjaW5jbHVkZSAiaW5mZXJpb3IuaCIKKysjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCisgI2luY2x1 ZGUgInRhcmdldC5oIgorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKK0BAIC0xMDgyLDYgKzEwODQsNTMgQEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCiAg Ci1AQCAtMzc0LDggKzM3NCwxMyBAQCBzcHVfc3ltYm9sX2ZpbGVfYWRkX2Zyb21fbWVtb3J5IChp bnQgaW5mZXJpb3JfZmQpCi0gICAvKiBPcGVuIEJGRCByZXByZXNlbnRpbmcgU1BFIGV4ZWN1dGFi bGUgYW5kIHJlYWQgaXRzIHN5bWJvbHMuICAqLwotICAgbmJmZCA9IHNwdV9iZmRfb3BlbiAoYWRk cik7Ci0gICBpZiAobmJmZCkKLS0gICAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkIChuYmZkLCBT WU1GSUxFX1ZFUkJPU0UgfCBTWU1GSUxFX01BSU5MSU5FLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE5VTEwsIDAsIE5VTEwpOwotKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAg KmNsZWFudXAgPSBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChuYmZkKTsKKyAvKiBSZXR1cm4gdGhl IGN1cnJlbnQgUHJvZ3NwYWNlLgorICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLworKy8qIFRy dWUgaWYgJ2dkYiAtUCcgd2FzIHVzZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGlu dCBydW5uaW5nX3B5dGhvbl9zY3JpcHQ7CisrCisrLyogVHJ1ZSBpZiB3ZSBhcmUgY3VycmVudGx5 IGluIGEgY2FsbCB0byAnZ2RiLmNsaScsIGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGlu dCBpbl9jbGk7CisrCisrLyogRW50ZXIgdGhlIGNvbW1hbmQgbG9vcC4gICovCisrCisrc3RhdGlj IFB5T2JqZWN0ICoKKytnZGJweV9jbGkgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51 c2VkMikKKyt7CisrICBpZiAoISBydW5uaW5nX3B5dGhvbl9zY3JpcHQgfHwgaW5fY2xpKQorKyAg ICByZXR1cm4gUHlFcnJfRm9ybWF0IChQeUV4Y19SdW50aW1lRXJyb3IsICJjYW5ub3QgaW52b2tl IENMSSByZWN1cnNpdmVseSIpOworKworKyAgaW5fY2xpID0gMTsKKysgIGNsaV9jb21tYW5kX2xv b3AgKCk7CisrICBpbl9jbGkgPSAwOworKworKyAgUHlfUkVUVVJOX05PTkU7CisrfQorKworKy8q IFNldCB1cCB0aGUgUHl0aG9uIGFyZ3VtZW50IHZlY3RvciBhbmQgZXZhbHVhdGUgYSBzY3JpcHQu ICBUaGlzIGlzCisrICAgdXNlZCB0byBpbXBsZW1lbnQgJ2dkYiAtUCcuICAqLworKworK3ZvaWQK KytydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgIEZJTEUg KmlucHV0OwogKwotKyAgICAgIHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAobmJmZCwgU1lNRklM RV9WRVJCT1NFIHwgU1lNRklMRV9NQUlOTElORSwKLSsJCQkJTlVMTCwgMCwgTlVMTCk7Ci0rICAg ICAgZG9fY2xlYW51cHMgKGNsZWFudXApOworKyAgLyogV2UgbmV2ZXIgZnJlZSB0aGlzLCBzaW5j ZSB3ZSBwbGFuIHRvIGV4aXQgYXQgdGhlIGVuZC4gICovCisrICBlbnN1cmVfcHl0aG9uX2VudiAo Z2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CisrCisrICBydW5uaW5nX3B5 dGhvbl9zY3JpcHQgPSAxOworKyAgUHlTeXNfU2V0QXJndiAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsK KysgIGlucHV0ID0gZm9wZW4gKGFyZ3ZbMF0sICJyIik7CisrICBpZiAoISBpbnB1dCkKKysgICAg eworKyAgICAgIGZwcmludGYgKHN0ZGVyciwgImNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIiwgYXJn dlswXSwgc3RyZXJyb3IgKGVycm5vKSk7CisrICAgICAgZXhpdCAoMSk7CiArICAgIH0KLSB9Cisr ICBQeVJ1bl9TaW1wbGVGaWxlIChpbnB1dCwgYXJndlswXSk7CisrICBmY2xvc2UgKGlucHV0KTsK KysgIGV4aXQgKDApOworK30KKysKKysMCisrCisgCisgc3RhdGljIFB5T2JqZWN0ICoKKyBnZGJw eV9nZXRfY3VycmVudF9wcm9nc3BhY2UgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51 c2VkMikKK0BAIC0xNzM0LDYgKzE3ODMsOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9k c1tdID0KKyAgICAgIkdldCBhIHZhbHVlIGZyb20gaGlzdG9yeSIgfSwKKyAgIHsgImV4ZWN1dGUi LCAoUHlDRnVuY3Rpb24pIGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhf S0VZV09SRFMsCisgICAgICJFeGVjdXRlIGEgZ2RiIGNvbW1hbmQiIH0sCisrICB7ICJjbGkiLCBn ZGJweV9jbGksIE1FVEhfTk9BUkdTLAorKyAgICAiRW50ZXIgdGhlIGdkYiBDTEkiIH0sCisgICB7 ICJwYXJhbWV0ZXIiLCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgIlJldHVy biBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKKyAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9u L3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9weXRob24uaAoraW5kZXggMjRlMzA3Ny4uMDQ0MzA4NyAx MDA2NDQKKy0tLSBhL2dkYi9weXRob24vcHl0aG9uLmgKKysrKyBiL2dkYi9weXRob24vcHl0aG9u LmgKK0BAIC0zNCw2ICszNCw4IEBAIHZvaWQgZXZhbF9weXRob25fZnJvbV9jb250cm9sX2NvbW1h bmQgKHN0cnVjdCBjb21tYW5kX2xpbmUgKik7CiAgCisgdm9pZCBzb3VyY2VfcHl0aG9uX3Njcmlw dCAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqZmlsZW5hbWUpOwogIAorK3ZvaWQgcnVuX3B5dGhv bl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CisrCisgaW50IGFwcGx5X3ZhbF9wcmV0 dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAor IAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAorIAkJCSAg ICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogZGlmZiAtLWdpdCBhL2dk Yi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKLWluZGV4IDM1ZDM3OWQuLjA0YWFiNWUgMTAwNjQ0Citp bmRleCBhOWRhYmI1Li42Yzc4NDM2IDEwMDY0NAogLS0tIGEvZ2RiL3N0YWNrLmMKICsrKyBiL2dk Yi9zdGFjay5jCi1AQCAtNTA5LDYgKzUwOSwxMCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qg c3ltYm9sICpmdW5jLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCitAQCAtNTEwLDYgKzUxMCwx MCBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUsCiAgICBzdGIgPSBtZW1fZmlsZW9wZW4gKCk7CiAgICBvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXBfdWlfZmlsZV9kZWxldGUgKHN0Yik7CiAgCkBAIC05NTA0LDI5MCArNDg2NSwx MSBAQCBpbmRleCAzNWQzNzlkLi4wNGFhYjVlIDEwMDY0NAogICAgaWYgKGZ1bmMpCiAgICAgIHsK ICAgICAgICBzdHJ1Y3QgYmxvY2sgKmIgPSBTWU1CT0xfQkxPQ0tfVkFMVUUgKGZ1bmMpOwotZGlm ZiAtLWdpdCBhL2dkYi9zeW1maWxlLW1lbS5jIGIvZ2RiL3N5bWZpbGUtbWVtLmMKLWluZGV4IGU4 MGZkMjUuLjJlNTNiZTAgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltZmlsZS1tZW0uYwotKysrIGIvZ2Ri L3N5bWZpbGUtbWVtLmMKLUBAIC01NCw2ICs1NCw3IEBACi0gI2luY2x1ZGUgIm9ic2VydmVyLmgi Ci0gI2luY2x1ZGUgImF1eHYuaCIKLSAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgotKyNpbmNsdWRl ICJnZGJfYmZkLmgiCi0gCi0gLyogVmVyaWZ5IHBhcmFtZXRlcnMgb2YgdGFyZ2V0X3JlYWRfbWVt b3J5X2JmZCBhbmQgdGFyZ2V0X3JlYWRfbWVtb3J5IGFyZQotICAgIGNvbXBhdGlibGUuICAqLwot QEAgLTEwMCwyMyArMTAxLDI0IEBAIHN5bWJvbF9maWxlX2FkZF9mcm9tX21lbW9yeSAoc3RydWN0 IGJmZCAqdGVtcGwsIENPUkVfQUREUiBhZGRyLCBjaGFyICpuYW1lLAotICAgaWYgKG5iZmQgPT0g TlVMTCkKLSAgICAgZXJyb3IgKF8oIkZhaWxlZCB0byByZWFkIGEgdmFsaWQgb2JqZWN0IGZpbGUg aW1hZ2UgZnJvbSBtZW1vcnkuIikpOwotIAotKyAgZ2RiX2JmZF9yZWYgKG5iZmQpOwotICAgaWYg KG5hbWUgPT0gTlVMTCkKLS0gICAgbmJmZC0+ZmlsZW5hbWUgPSB4c3RyZHVwICgic2hhcmVkIG9i amVjdCByZWFkIGZyb20gdGFyZ2V0IG1lbW9yeSIpOwotKyAgICBuYmZkLT5maWxlbmFtZSA9ICJz aGFyZWQgb2JqZWN0IHJlYWQgZnJvbSB0YXJnZXQgbWVtb3J5IjsKLSAgIGVsc2UKLS0gICAgbmJm ZC0+ZmlsZW5hbWUgPSBuYW1lOwotLQotLSAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChuYmZkLCBi ZmRfb2JqZWN0KSkKLSAgICAgewotLSAgICAgIC8qIEZJWE1FOiBzaG91bGQgYmUgY2hlY2tpbmcg Zm9yIGVycm9ycyBmcm9tIGJmZF9jbG9zZSAoZm9yIG9uZSB0aGluZywKLS0gICAgICAgICBvbiBl cnJvciBpdCBkb2VzIG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkIHdpdGggdGhl Ci0tICAgICAgICAgYmZkKS4gICovCi0tICAgICAgYmZkX2Nsb3NlIChuYmZkKTsKLS0gICAgICBl cnJvciAoXygiR290IG9iamVjdCBmaWxlIGZyb20gbWVtb3J5IGJ1dCBjYW4ndCByZWFkIHN5bWJv bHM6ICVzLiIpLAotLQkgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSsgICAg ICBuYmZkLT5maWxlbmFtZSA9IG5hbWU7Ci0rICAgICAgZ2RiX2JmZF9zdGFzaF9maWxlbmFtZSAo bmJmZCk7Ci0rICAgICAgeGZyZWUgKG5hbWUpOwotICAgICB9Ci0gCi0rICBjbGVhbnVwID0gbWFr ZV9jbGVhbnVwX2JmZF91bnJlZiAobmJmZCk7Ci0rCi0rICBpZiAoIWJmZF9jaGVja19mb3JtYXQg KG5iZmQsIGJmZF9vYmplY3QpKQotKyAgICBlcnJvciAoXygiR290IG9iamVjdCBmaWxlIGZyb20g bWVtb3J5IGJ1dCBjYW4ndCByZWFkIHN5bWJvbHM6ICVzLiIpLAotKwkgICBiZmRfZXJybXNnIChi ZmRfZ2V0X2Vycm9yICgpKSk7Ci0rCi0gICBzYWkgPSBhbGxvY19zZWN0aW9uX2FkZHJfaW5mbyAo YmZkX2NvdW50X3NlY3Rpb25zIChuYmZkKSk7Ci0tICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4 ZnJlZSwgc2FpKTsKLSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHNhaSk7Ci0gICBpID0gMDsKLSAg IGZvciAoc2VjID0gbmJmZC0+c2VjdGlvbnM7IHNlYyAhPSBOVUxMOyBzZWMgPSBzZWMtPm5leHQp Ci0gICAgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChuYmZkLCBzZWMpICYgKFNFQ19BTExP Q3xTRUNfTE9BRCkpICE9IDApCi1kaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1m aWxlLmMKLWluZGV4IDAxMjUyZTIuLjk1ZWQ0ODAgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltZmlsZS5j Ci0rKysgYi9nZGIvc3ltZmlsZS5jCi1AQCAtNTUsNiArNTUsNyBAQAotICNpbmNsdWRlICJzb2xp Yi5oIgotICNpbmNsdWRlICJyZW1vdGUuaCIKLSAjaW5jbHVkZSAic3RhY2suaCIKLSsjaW5jbHVk ZSAiZ2RiX2JmZC5oIgotIAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZmNu dGwuaD4KLUBAIC0xMDM2LDcgKzEwMzcsNyBAQCBuZXdfc3ltZmlsZV9vYmpmaWxlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgaW50IGFkZF9mbGFncykKLSAgICBsb2FkZWQgZmlsZS4KLSAKLSAg ICBBQkZEIGlzIGEgQkZEIGFscmVhZHkgb3BlbiBvbiB0aGUgZmlsZSwgYXMgZnJvbSBzeW1maWxl X2JmZF9vcGVuLgotLSAgIFRoaXMgQkZEIHdpbGwgYmUgY2xvc2VkIG9uIGVycm9yLCBhbmQgaXMg YWx3YXlzIGNvbnN1bWVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0rICAgQSBuZXcgcmVmZXJlbmNlIGlz IGFjcXVpcmVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0gCi0gICAgQUREX0ZMQUdTIGVuY29kZXMgdmVy Ym9zaXR5LCB3aGV0aGVyIHRoaXMgaXMgbWFpbiBzeW1ib2wgZmlsZSBvcgotICAgIGV4dHJhLCBz dWNoIGFzIGR5bmFtaWNhbGx5IGxvYWRlZCBjb2RlLCBhbmQgd2hhdCB0byBkbyB3aXRoIGJyZWFr cG9pbnMuCi1AQCAtMTA2MCw3ICsxMDYxLDYgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNf b3Jfb2Zmc2V0cyAoYmZkICphYmZkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBmbGFncywgc3RydWN0IG9iamZpbGUgKnBhcmVudCkKLSB7Ci0gICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZTsKLS0gIHN0cnVjdCBjbGVhbnVwICpteV9jbGVhbnVwczsKLSAgIGNv bnN0IGNoYXIgKm5hbWUgPSBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKTsKLSAgIGNvbnN0IGludCBm cm9tX3R0eSA9IGFkZF9mbGFncyAmIFNZTUZJTEVfVkVSQk9TRTsKLSAgIGNvbnN0IGludCBtYWlu bGluZSA9IGFkZF9mbGFncyAmIFNZTUZJTEVfTUFJTkxJTkU7Ci1AQCAtMTA3NCw4ICsxMDc0LDYg QEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAotICAg ICAgIGFkZF9mbGFncyAmPSB+U1lNRklMRV9OT19SRUFEOwotICAgICB9Ci0gCi0tICBteV9jbGVh bnVwcyA9IG1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKGFiZmQpOwotLQotICAgLyogR2l2ZSB1c2Vy IGEgY2hhbmNlIHRvIGJ1cnAgaWYgd2UnZCBiZQotICAgICAgaW50ZXJhY3RpdmVseSB3aXBpbmcg b3V0IGFueSBleGlzdGluZyBzeW1ib2xzLiAgKi8KLSAKLUBAIC0xMDg2LDcgKzEwODQsNiBAQCBz eW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRzIChiZmQgKmFiZmQsCi0gICAgIGVy cm9yIChfKCJOb3QgY29uZmlybWVkLiIpKTsKLSAKLSAgIG9iamZpbGUgPSBhbGxvY2F0ZV9vYmpm aWxlIChhYmZkLCBmbGFncyB8IChtYWlubGluZSA/IE9CSkZfTUFJTkxJTkUgOiAwKSk7Ci0tICBk aXNjYXJkX2NsZWFudXBzIChteV9jbGVhbnVwcyk7Ci0gCi0gICBpZiAocGFyZW50KQotICAgICBh ZGRfc2VwYXJhdGVfZGVidWdfb2JqZmlsZSAob2JqZmlsZSwgcGFyZW50KTsKLUBAIC0xMjA3LDgg KzEyMDQsMTMgQEAgc3RydWN0IG9iamZpbGUgKgotIHN5bWJvbF9maWxlX2FkZCAoY2hhciAqbmFt ZSwgaW50IGFkZF9mbGFncywgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycywKLSAJCSBp bnQgZmxhZ3MpCi0gewotLSAgcmV0dXJuIHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAoc3ltZmls ZV9iZmRfb3BlbiAobmFtZSksIGFkZF9mbGFncywgYWRkcnMsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBmbGFncywgTlVMTCk7Ci0rICBiZmQgKmJmZCA9IHN5bWZpbGVfYmZk X29wZW4gKG5hbWUpOwotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXBf YmZkX3VucmVmIChiZmQpOwotKyAgc3RydWN0IG9iamZpbGUgKm9iamY7Ci0rCi0rICBvYmpmID0g c3ltYm9sX2ZpbGVfYWRkX2Zyb21fYmZkIChiZmQsIGFkZF9mbGFncywgYWRkcnMsIGZsYWdzLCBO VUxMKTsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSsgIHJldHVybiBvYmpmOwotIH0KLSAK LSAKLUBAIC0xMzUwLDcgKzEzNTIsNyBAQCBzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29u c3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbG9uZyBjcmMsCi0gICBpZiAoZmlsZW5hbWVfY21wIChu YW1lLCBwYXJlbnRfb2JqZmlsZS0+bmFtZSkgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBh YmZkID0gYmZkX29wZW5fbWF5YmVfcmVtb3RlIChuYW1lKTsKLSsgIGFiZmQgPSBnZGJfYmZkX29w ZW5fbWF5YmVfcmVtb3RlIChuYW1lKTsKLSAKLSAgIGlmICghYWJmZCkKLSAgICAgcmV0dXJuIDA7 Ci1AQCAtMTM3Miw3ICsxMzc0LDcgQEAgc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGNvbnN0 IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgY3JjLAotICAgICAgIGlmIChhYmZkX3N0YXQuc3Rf ZGV2ID09IHBhcmVudF9zdGF0LnN0X2RldgotIAkgICYmIGFiZmRfc3RhdC5zdF9pbm8gPT0gcGFy ZW50X3N0YXQuc3RfaW5vKQotIAl7Ci0tCSAgYmZkX2Nsb3NlIChhYmZkKTsKLSsJICBnZGJfYmZk X3VucmVmIChhYmZkKTsKLSAJICByZXR1cm4gMDsKLSAJfQotICAgICAgIHZlcmlmaWVkX2FzX2Rp ZmZlcmVudCA9IDE7Ci1AQCAtMTM4Miw3ICsxMzg0LDcgQEAgc2VwYXJhdGVfZGVidWdfZmlsZV9l eGlzdHMgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgY3JjLAotIAotICAgZmlsZV9j cmNfcCA9IGdldF9maWxlX2NyYyAoYWJmZCwgJmZpbGVfY3JjKTsKLSAKLS0gIGJmZF9jbG9zZSAo YWJmZCk7Ci0rICBnZGJfYmZkX3VucmVmIChhYmZkKTsKLSAKLSAgIGlmICghZmlsZV9jcmNfcCkK LSAgICAgcmV0dXJuIDA7Ci1AQCAtMTY5MCwxNSArMTY5MiwyMCBAQCBzZXRfaW5pdGlhbF9sYW5n dWFnZSAodm9pZCkKLSB9Ci0gCi0gLyogSWYgTkFNRSBpcyBhIHJlbW90ZSBuYW1lIG9wZW4gdGhl IGZpbGUgdXNpbmcgcmVtb3RlIHByb3RvY29sLCBvdGhlcndpc2UKLS0gICBvcGVuIGl0IG5vcm1h bGx5LiAgKi8KLSsgICBvcGVuIGl0IG5vcm1hbGx5LiAgUmV0dXJucyBhIG5ldyByZWZlcmVuY2Ug dG8gdGhlIEJGRC4gIE9uIGVycm9yLAotKyAgIHJldHVybnMgTlVMTCB3aXRoIHRoZSBCRkQgZXJy b3Igc2V0LiAgKi8KLSAKLSBiZmQgKgotLWJmZF9vcGVuX21heWJlX3JlbW90ZSAoY29uc3QgY2hh ciAqbmFtZSkKLStnZGJfYmZkX29wZW5fbWF5YmVfcmVtb3RlIChjb25zdCBjaGFyICpuYW1lKQot IHsKLSsgIGJmZCAqcmVzdWx0OwotKwotICAgaWYgKHJlbW90ZV9maWxlbmFtZV9wIChuYW1lKSkK LS0gICAgcmV0dXJuIHJlbW90ZV9iZmRfb3BlbiAobmFtZSwgZ251dGFyZ2V0KTsKLSsgICAgcmVz dWx0ID0gcmVtb3RlX2JmZF9vcGVuIChuYW1lLCBnbnV0YXJnZXQpOwotICAgZWxzZQotLSAgICBy ZXR1cm4gYmZkX29wZW5yIChuYW1lLCBnbnV0YXJnZXQpOwotKyAgICByZXN1bHQgPSBnZGJfYmZk X29wZW5yIChuYW1lLCBnbnV0YXJnZXQpOwotKwotKyAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0g Ci1AQCAtMTcxNiwxOSArMTcyMywxNCBAQCBzeW1maWxlX2JmZF9vcGVuIChjaGFyICpuYW1lKQot IAotICAgaWYgKHJlbW90ZV9maWxlbmFtZV9wIChuYW1lKSkKLSAgICAgewotLSAgICAgIG5hbWUg PSB4c3RyZHVwIChuYW1lKTsKLSAgICAgICBzeW1fYmZkID0gcmVtb3RlX2JmZF9vcGVuIChuYW1l LCBnbnV0YXJnZXQpOwotICAgICAgIGlmICghc3ltX2JmZCkKLS0JewotLQkgIG1ha2VfY2xlYW51 cCAoeGZyZWUsIG5hbWUpOwotLQkgIGVycm9yIChfKCJgJXMnOiBjYW4ndCBvcGVuIHRvIHJlYWQg c3ltYm9sczogJXMuIiksIG5hbWUsCi0tCQkgYmZkX2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkp OwotLQl9Ci0rCWVycm9yIChfKCJgJXMnOiBjYW4ndCBvcGVuIHRvIHJlYWQgc3ltYm9sczogJXMu IiksIG5hbWUsCi0rCSAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0gCi0g ICAgICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChzeW1fYmZkLCBiZmRfb2JqZWN0KSkKLSAJewot LQkgIGJmZF9jbG9zZSAoc3ltX2JmZCk7Ci0tCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgbmFtZSk7 Ci0rCSAgbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoc3ltX2JmZCk7Ci0gCSAgZXJyb3IgKF8oImAl cyc6IGNhbid0IHJlYWQgc3ltYm9sczogJXMuIiksIG5hbWUsCi0gCQkgYmZkX2Vycm1zZyAoYmZk X2dldF9lcnJvciAoKSkpOwotIAl9Ci1AQCAtMTc1NywxMiArMTc1OSwxMSBAQCBzeW1maWxlX2Jm ZF9vcGVuIChjaGFyICpuYW1lKQotICAgICAgIHBlcnJvcl93aXRoX25hbWUgKG5hbWUpOwotICAg ICB9Ci0gCi0tICAvKiBGcmVlIDFzdCBuZXcgbWFsbG9jJ2QgY29weSwgYnV0IGtlZXAgdGhlIDJu ZCBtYWxsb2MnZCBjb3B5IGluCi0tICAgICBiZmQuICBJdCdsbCBiZSBmcmVlZCBpbiBmcmVlX29i amZpbGUoKS4gICovCi0gICB4ZnJlZSAobmFtZSk7Ci0gICBuYW1lID0gYWJzb2x1dGVfbmFtZTsK LSsgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOwotIAotLSAgc3ltX2JmZCA9IGJmZF9mb3Bl biAobmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7Ci0rICBzeW1fYmZkID0gZ2RiX2Jm ZF9mb3BlbiAobmFtZSwgZ251dGFyZ2V0LCBGT1BFTl9SQiwgZGVzYyk7Ci0gICBpZiAoIXN5bV9i ZmQpCi0gICAgIHsKLSAgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBuYW1lKTsKLUBAIC0xNzcz LDE4ICsxNzc0LDExIEBAIHN5bWZpbGVfYmZkX29wZW4gKGNoYXIgKm5hbWUpCi0gCi0gICBpZiAo IWJmZF9jaGVja19mb3JtYXQgKHN5bV9iZmQsIGJmZF9vYmplY3QpKQotICAgICB7Ci0tICAgICAg LyogRklYTUU6IHNob3VsZCBiZSBjaGVja2luZyBmb3IgZXJyb3JzIGZyb20gYmZkX2Nsb3NlIChm b3Igb25lCi0tICAgICAgICAgdGhpbmcsIG9uIGVycm9yIGl0IGRvZXMgbm90IGZyZWUgYWxsIHRo ZSBzdG9yYWdlIGFzc29jaWF0ZWQKLS0gICAgICAgICB3aXRoIHRoZSBiZmQpLiAgKi8KLS0gICAg ICBiZmRfY2xvc2UgKHN5bV9iZmQpOwkvKiBUaGlzIGFsc28gY2xvc2VzIGRlc2MuICAqLwotLSAg ICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIG5hbWUpOwotKyAgICAgIG1ha2VfY2xlYW51cF9iZmRf dW5yZWYgKHN5bV9iZmQpOwotICAgICAgIGVycm9yIChfKCJgJXMnOiBjYW4ndCByZWFkIHN5bWJv bHM6ICVzLiIpLCBuYW1lLAotIAkgICAgIGJmZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsK LSAgICAgfQotIAotLSAgLyogYmZkX3VzcmRhdGEgZXhpc3RzIGZvciBhcHBsaWNhdGlvbnMgYW5k IGxpYmJmZCBtdXN0IG5vdCB0b3VjaCBpdC4gICovCi0tICBnZGJfYXNzZXJ0IChiZmRfdXNyZGF0 YSAoc3ltX2JmZCkgPT0gTlVMTCk7Ci0tCi0gICByZXR1cm4gc3ltX2JmZDsKLSB9Ci0gCi1AQCAt MjEwOSwxNyArMjEwMywxNCBAQCBnZW5lcmljX2xvYWQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 eSkKLSAgICAgfQotIAotICAgLyogT3BlbiB0aGUgZmlsZSBmb3IgbG9hZGluZy4gICovCi0tICBs b2FkZmlsZV9iZmQgPSBiZmRfb3BlbnIgKGZpbGVuYW1lLCBnbnV0YXJnZXQpOwotKyAgbG9hZGZp bGVfYmZkID0gZ2RiX2JmZF9vcGVuciAoZmlsZW5hbWUsIGdudXRhcmdldCk7Ci0gICBpZiAobG9h ZGZpbGVfYmZkID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBwZXJyb3Jfd2l0aF9uYW1lIChmaWxl bmFtZSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAvKiBGSVhNRTogc2hvdWxkIGJl IGNoZWNraW5nIGZvciBlcnJvcnMgZnJvbSBiZmRfY2xvc2UgKGZvciBvbmUgdGhpbmcsCi0tICAg ICBvbiBlcnJvciBpdCBkb2VzIG5vdCBmcmVlIGFsbCB0aGUgc3RvcmFnZSBhc3NvY2lhdGVkIHdp dGggdGhlCi0tICAgICBiZmQpLiAgKi8KLS0gIG1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKGxvYWRm aWxlX2JmZCk7Ci0rICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChsb2FkZmlsZV9iZmQpOwotIAot ICAgaWYgKCFiZmRfY2hlY2tfZm9ybWF0IChsb2FkZmlsZV9iZmQsIGJmZF9vYmplY3QpKQotICAg ICB7Ci1AQCAtMjUxOCwxNSArMjUwOSwxOCBAQCByZXJlYWRfc3ltYm9scyAodm9pZCkKLSAJICAv KiBDbGVhbiB1cCBhbnkgc3RhdGUgQkZEIGhhcyBzaXR0aW5nIGFyb3VuZC4gIFdlIGRvbid0IG5l ZWQKLSAJICAgICB0byBjbG9zZSB0aGUgZGVzY3JpcHRvciBidXQgQkZEIGxhY2tzIGEgd2F5IG9m IGNsb3NpbmcgdGhlCi0gCSAgICAgQkZEIHdpdGhvdXQgY2xvc2luZyB0aGUgZGVzY3JpcHRvci4g ICovCi0tCSAgb2JmZF9maWxlbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKG9iamZpbGUtPm9iZmQp OwotLQkgIGlmICghYmZkX2Nsb3NlIChvYmpmaWxlLT5vYmZkKSkKLS0JICAgIGVycm9yIChfKCJD YW4ndCBjbG9zZSBCRkQgZm9yICVzOiAlcyIpLCBvYmpmaWxlLT5uYW1lLAotLQkJICAgYmZkX2Vy cm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwotLQkgIG9iamZpbGUtPm9iZmQgPSBiZmRfb3Blbl9t YXliZV9yZW1vdGUgKG9iZmRfZmlsZW5hbWUpOwotKwkgIHsKLSsJICAgIHN0cnVjdCBiZmQgKm9i ZmQgPSBvYmpmaWxlLT5vYmZkOwotKwotKwkgICAgb2JmZF9maWxlbmFtZSA9IGJmZF9nZXRfZmls ZW5hbWUgKG9iamZpbGUtPm9iZmQpOwotKwkgICAgLyogT3BlbiB0aGUgbmV3IEJGRCBiZWZvcmUg ZnJlZWluZyB0aGUgb2xkIG9uZSwgc28gdGhhdAotKwkgICAgICAgdGhlIGZpbGVuYW1lIHJlbWFp bnMgbGl2ZS4gICovCi0rCSAgICBvYmpmaWxlLT5vYmZkID0gZ2RiX2JmZF9vcGVuX21heWJlX3Jl bW90ZSAob2JmZF9maWxlbmFtZSk7Ci0rCSAgICBnZGJfYmZkX3VucmVmIChvYmZkKTsKLSsJICB9 Ci0rCi0gCSAgaWYgKG9iamZpbGUtPm9iZmQgPT0gTlVMTCkKLSAJICAgIGVycm9yIChfKCJDYW4n dCBvcGVuICVzIHRvIHJlYWQgc3ltYm9scy4iKSwgb2JqZmlsZS0+bmFtZSk7Ci0tCSAgZWxzZQot LQkgICAgb2JqZmlsZS0+b2JmZCA9IGdkYl9iZmRfcmVmIChvYmpmaWxlLT5vYmZkKTsKLSAJICAv KiBiZmRfb3BlbnIgc2V0cyBjYWNoZWFibGUgdG8gdHJ1ZSwgd2hpY2ggaXMgd2hhdCB3ZSB3YW50 LiAgKi8KLSAJICBpZiAoIWJmZF9jaGVja19mb3JtYXQgKG9iamZpbGUtPm9iZmQsIGJmZF9vYmpl Y3QpKQotIAkgICAgZXJyb3IgKF8oIkNhbid0IHJlYWQgc3ltYm9scyBmcm9tICVzOiAlcy4iKSwg b2JqZmlsZS0+bmFtZSwKLWRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5oIGIvZ2RiL3N5bWZpbGUu aAotaW5kZXggYWNhNzM1OS4uMTg0YTgzZSAxMDA2NDQKLS0tLSBhL2dkYi9zeW1maWxlLmgKLSsr KyBiL2dkYi9zeW1maWxlLmgKLUBAIC01NTMsNyArNTUzLDcgQEAgZXh0ZXJuIHZvaWQgZmluZF9s b3dlc3Rfc2VjdGlvbiAoYmZkICosIGFzZWN0aW9uICosIHZvaWQgKik7Ci0gCi0gZXh0ZXJuIGJm ZCAqc3ltZmlsZV9iZmRfb3BlbiAoY2hhciAqKTsKLSAKLS1leHRlcm4gYmZkICpiZmRfb3Blbl9t YXliZV9yZW1vdGUgKGNvbnN0IGNoYXIgKik7Ci0rZXh0ZXJuIGJmZCAqZ2RiX2JmZF9vcGVuX21h eWJlX3JlbW90ZSAoY29uc3QgY2hhciAqKTsKLSAKLSBleHRlcm4gaW50IGdldF9zZWN0aW9uX2lu ZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqLCBjaGFyICopOwotIAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3Bh Y2tlZF9hcnJheS5leHAKLWluZGV4IDY3ODYzOWMuLjQ3YTIyMDIgMTAwNjQ0CitpbmRleCBlMjJj YjNhLi41ZTE2MTg2IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9h cnJheS5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRfYXJyYXkuZXhwCi1A QCAtNjAsNSArNjAsMTEgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiR0ZXN0IiAiJHRlc3QiIHsKK0BA IC01Niw1ICs1NiwxMSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICIkdGVzdCIgewogICAg ICAgICAgIyBhcmUuICBPYnNlcnZlZCB3aXRoIChGU0YgR05VIEFkYSA0LjUuMyAyMDExMDEyNCku CiAgICAgICAgICB4ZmFpbCAkdGVzdAogICAgICB9CkBAIC0xMDk2NCw3ICs2MDQ2LDcgQEAgaW5k ZXggMDAwMDAwMC4uYjA1NDExZQogKwogK2dkYl90ZXN0ICJwdHlwZSBhcnJheSIgInR5cGUgPSBj aGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIGFycmF5IgogZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJy YXlpZHguYwotaW5kZXggYTk5MTM3ZS4uYzNkYzJkOSAxMDA2NDQKK2luZGV4IDJjYzkzNWIuLjMw YzdmODUgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKICsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwogQEAgLTE3LDYgKzE3LDEzIEBA CkBAIC0xMDk4Miw3ICs2MDY0LDcgQEAgaW5kZXggYTk5MTM3ZS4uYzNkYzJkOSAxMDA2NDQKICBt YWluICh2b2lkKQogIHsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5 aWR4LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCi1pbmRleCBjYmEw MDI0Li4wZGMwZTQ2IDEwMDY0NAoraW5kZXggMzg3YjM0Zi4uZDU5NTZjZSAxMDA2NDQKIC0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCiArKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2FycmF5aWR4LmV4cAogQEAgLTUzLDQgKzUzLDEyIEBAIGdkYl90ZXN0ICJwcmlu dCBhcnJheSIgXApAQCAtMTI4NDcsMTAgKzc5MjksMTAgQEAgaW5kZXggMDAwMDAwMC4uNDc0N2Vh OQogKyAgd3JpdGUgKCosKikgYSAgICAgICAgICAgICAgICAgISBicmVhay1zdGF0aWMKICtlbmQK IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotaW5kZXggNzY0NWNhZi4uZjRmOWMxZiAxMDA2 NDQKK2luZGV4IDM1MWZhODcuLjBiNWRiNmUgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5nZGIvc2VsZnRlc3QuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwCi1AQCAtOTIsNiArOTIsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30geworQEAg LTkxLDYgKzkxLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKICAJCXNldCBkZXNj cmlwdGlvbiAic3RlcCBvdmVyIGNtZGFyZ192ZWMgaW5pdGlhbGl6YXRpb24iCiAgCQlzZXQgY29t bWFuZCAic3RlcCIKICAJICAgIH0KQEAgLTEzMjU2LDI5ICs4MzM4LDIwIEBAIGluZGV4IDAwMDAw MDAuLjI5NTYwMmQKICsgIHdyaXRlbG4ocyk7IHsgc2V0IGJyZWFrcG9pbnQgMiBoZXJlIH0KICtl bmQuCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLWluZGV4IDk5M2U3NzQuLjUy ZGJkMTcgMTAwNjQ0CitpbmRleCBhYTRkOTM3Li42MGQyY2M4IDEwMDY0NAogLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LWZyYW1lLmV4cAotQEAgLTc0LDggKzc0LDYgQEAgZ2RiX3Rlc3QgInB5dGhvbiBw cmludCBiZnJhbWUgPT0gZ2RiLm5ld2VzdF9mcmFtZSgpIiBUcnVlIFwKLSAKLSBnZGJfdGVzdCAi cHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwID09IGYxIiAiID0gRmFsc2UiICJ0ZXN0IGVxdWFs aXR5IGNvbXBhcmlzb24gKGZhbHNlKSIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQg PScsIGYwID09IGYwIiAiID0gVHJ1ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSki Ci0tZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCAhPSBmMSIgIiA9IFRydWUi ICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSkiCi0tZ2RiX3Rlc3QgInB5dGhvbiBw cmludCAncmVzdWx0ID0nLCBmMCAhPSBmMCIgIiA9IEZhbHNlIiAidGVzdCBpbmVxdWFsaXR5IGNv bXBhcmlzb24gKGZhbHNlKSIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYw LmlzX3ZhbGlkICgpIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUuaXNfdmFsaWQiCi0gZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5uYW1lICgpIiAiID0gZjIiICJ0ZXN0IEZyYW1l Lm5hbWUiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC50eXBlICgpID09 IGdkYi5OT1JNQUxfRlJBTUUiICIgPSBUcnVlIiAidGVzdCBGcmFtZS50eXBlIgotQEAgLTkwLDMg Kzg4LDUgQEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5yZWFkX3ZhciAo J3ZhcmlhYmxlX3doaWNoX3N1cmVseV9kb2VzbnRfZXgKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50 ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgnYScpIiAiID0gMSIgInRlc3QgRnJhbWUucmVhZF92 YXIgLSBzdWNjZXNzIgorQEAgLTkwLDMgKzkwLDUgQEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAo J3Jlc3VsdCA9ICVzJyAlIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hfc3VyZWx5X2RvZXMK KyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICgncmVzdWx0ID0gJXMnICUgZjAucmVhZF92YXIgKCdh JykpIiAiID0gMSIgInRlc3QgRnJhbWUucmVhZF92YXIgLSBzdWNjZXNzIgogIAotIGdkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYxIiAi ID0gVHJ1ZSIgInRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1lIgorIGdkYl90ZXN0ICJweXRob24gcHJp bnQgKCdyZXN1bHQgPSAlcycgJSAoZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYxKSkiICIgPSBU cnVlIiAidGVzdCBnZGIuc2VsZWN0ZWRfZnJhbWUiCiArCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCAncmVzdWx0ID0nLCBmMC5ibG9jayAoKSIgIjxnZGIuQmxvY2sgb2JqZWN0IGF0IDB4XFtcWzp4 ZGlnaXQ6XF1cXSs+IiAidGVzdCBGcmFtZS5ibG9jayIKKytnZGJfdGVzdCAicHl0aG9uIHByaW50 ICgncmVzdWx0ID0gJXMnICUgKGYwLmJsb2NrICgpKSkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAw eFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCiBkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS12YWx1ZS5leHAKLWluZGV4IGFjZmQ4OWIuLmM3N2Q5YzIgMTAwNjQ0CitpbmRleCA5 MTQyYzcyLi4yODU1MjIwIDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXZhbHVlLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAot QEAgLTM1OCw2ICszNTgsMTUgQEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKK0BA IC0zNjYsNiArMzY2LDE1IEBAIHByb2MgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aCB7fSB7CiAgICAg ICJwcmludCB2YWx1ZSdzIHR5cGUiCiAgfQogIApAQCAtMTMyOTQsNyArODM2Nyw3IEBAIGluZGV4 IGFjZmQ4OWIuLmM3N2Q5YzIgMTAwNjQ0CiAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGludmFsaWQg c3Vic2NyaXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0CiAgIyB0aGUgdHlwZSBvZiB0 aGUgdmFsdWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2luZyBhCiAgIyBzdWJz Y3JpcHQgb3BlcmF0aW9uIHRvIHByb2NlZWQuCi1AQCAtNDk0LDYgKzUwMyw3IEBAIHRlc3RfdmFs dWVfaW5faW5mZXJpb3IKK0BAIC00OTIsNiArNTAxLDcgQEAgdGVzdF92YWx1ZV9pbl9pbmZlcmlv cgogIHRlc3RfaW5mZXJpb3JfZnVuY3Rpb25fY2FsbAogIHRlc3RfbGF6eV9zdHJpbmdzCiAgdGVz dF92YWx1ZV9hZnRlcl9kZWF0aApAQCAtMTMzMDMsMTAgKzgzNzYsMTAgQEAgaW5kZXggYWNmZDg5 Yi4uYzc3ZDljMiAxMDA2NDQKICAjIFRlc3QgZWl0aGVyIEMgb3IgQysrIHZhbHVlcy4gCiAgdGVz dF9zdWJzY3JpcHRfcmVncmVzc2lvbiAiJHtiaW5maWxlfSIgImMiCiBkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLWluZGV4 IDRmMmI3YzkuLjBkYWVmMjUgMTAwNjQ0CitpbmRleCA4YjE2YjM4Li5mNmU1OWIwIDEwMDY0NAog LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAotQEAgLTE0Miw2ICsxNDIsMTEgQEAgcHJvYyBnZGJfdW5sb2FkIHt9IHsKK0BAIC0x NDMsNiArMTQzLDExIEBAIHByb2MgZ2RiX3VubG9hZCB7fSB7CiAgCSAgICBzZW5kX2dkYiAieVxu IgogIAkgICAgZXhwX2NvbnRpbnVlCiAgCX0KQEAgLTEzMzE5LDcgKzgzOTIsNyBAQCBpbmRleCA0 ZjJiN2M5Li4wZGFlZjI1IDEwMDY0NAogIAkgICAgc2VuZF9nZGIgInlcbiIKICAJICAgIGV4cF9j b250aW51ZQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAgYi9nZGIv dGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCi1pbmRleCBkZDE4ZDM3Li5mOTczNDg1IDEwMDY0NAor aW5kZXggNTY5ZmIwMi4uY2FjZWNmNCAxMDA2NDQKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bh c2NhbC5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKIEBAIC0zNyw2ICsz Nyw5IEBAIHByb2MgcGFzY2FsX2luaXQge30gewpAQCAtMTMzNTQsMTAgKzg0MjcsMTAgQEAgaW5k ZXggZGQxOGQzNy4uZjk3MzQ4NSAxMDA2NDQKICAgICAgc2V0IHBhc2NhbF9pbml0X2RvbmUgMQog IH0gICAKIGRpZmYgLS1naXQgYS9nZGIvdG9wLmMgYi9nZGIvdG9wLmMKLWluZGV4IDA2MWFkNDgu LmQ2MTVjZmMgMTAwNjQ0CitpbmRleCBlOWQ2YzFjLi43ZmU2YWQxIDEwMDY0NAogLS0tIGEvZ2Ri L3RvcC5jCiArKysgYi9nZGIvdG9wLmMKLUBAIC0zNTIsNiArMzUyLDkgQEAgcHJlcGFyZV9leGVj dXRlX2NvbW1hbmQgKHZvaWQpCitAQCAtMzUwLDYgKzM1MCw5IEBAIHByZXBhcmVfZXhlY3V0ZV9j b21tYW5kICh2b2lkKQogIAogICAgbWFyayA9IHZhbHVlX21hcmsgKCk7CiAgICBjbGVhbnVwID0g bWFrZV9jbGVhbnVwX3ZhbHVlX2ZyZWVfdG9fbWFyayAobWFyayk7CkBAIC0xMzM2OCw0NSArODQ0 MSwzNiBAQCBpbmRleCAwNjFhZDQ4Li5kNjE1Y2ZjIDEwMDY0NAogICAgLyogV2l0aCBtdWx0aXBs ZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcgaXMKICAgICAg IHN0b3BwZWQsIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJlaW5nIGFibGUg dG8gZGV0ZWN0CiBkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2RiL3R5cGVwcmludC5j Ci1pbmRleCBjMjVlNzA1Li40OTg5NThhIDEwMDY0NAoraW5kZXggMmQ1YTZhZi4uNTI1MWUzZiAx MDA2NDQKIC0tLSBhL2dkYi90eXBlcHJpbnQuYwogKysrIGIvZ2RiL3R5cGVwcmludC5jCi1AQCAt MzUsNiArMzUsNyBAQAorQEAgLTM0LDYgKzM0LDcgQEAKICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5o IgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAgI2luY2x1ZGUgInZhbHByaW50LmgiCiArI2lu Y2x1ZGUgImR3YXJmMmxvYy5oIgogICNpbmNsdWRlIDxlcnJuby5oPgotIAotIGV4dGVybiB2b2lk IF9pbml0aWFsaXplX3R5cGVwcmludCAodm9pZCk7Ci1AQCAtNzYsNiArNzcsOSBAQCB2b2lkCisg I2luY2x1ZGUgPGN0eXBlLmg+CisgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKK0BAIC0zNjMs NiArMzY0LDkgQEAgdm9pZAogIHR5cGVfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBj aGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCSAgICBpbnQgc2hvdykK ICB7CiArICBpZiAoc2hvdyA+PSAwICYmIGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlICE9 IGxhbmd1YWdlX2FkYSkKICsgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwogKwotICAg TEFfUFJJTlRfVFlQRSAodHlwZSwgdmFyc3RyaW5nLCBzdHJlYW0sIHNob3csIDApOworICAgTEFf UFJJTlRfVFlQRSAodHlwZSwgdmFyc3RyaW5nLCBzdHJlYW0sIHNob3csIDAsICZkZWZhdWx0X3B0 eXBlX2ZsYWdzKTsKICB9CiAgCi1AQCAtMTE0LDcgKzExOCw4IEBAIHdoYXRpc19leHAgKGNoYXIg KmV4cCwgaW50IHNob3cpCi0gewotICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cHI7Ci0gICBzdHJ1 Y3QgdmFsdWUgKnZhbDsKLS0gIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOworQEAg LTQxMCw2ICs0MTQsNyBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBzaG93KQorICAgc3Ry dWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKKyAgIHN0cnVjdCB0eXBlX3ByaW50X29wdGlv bnMgZmxhZ3MgPSBkZWZhdWx0X3B0eXBlX2ZsYWdzOworIAogKyAgLyogUmVxdWlyZWQgYXQgbGVh c3QgZm9yIHRoZSBvYmplY3RfYWRkcmVzc19zZXQgY2FsbC4gICovCi0rICBzdHJ1Y3QgY2xlYW51 cCAqb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwotICAgc3Ry dWN0IHR5cGUgKnJlYWxfdHlwZSA9IE5VTEw7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAgIGlu dCBmdWxsID0gMDsKLUBAIC0xMjUsMTIgKzEzMCwxMyBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAs IGludCBzaG93KQorICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5V TEwpOworIAogICAgaWYgKGV4cCkKLSAgICAgewotICAgICAgIGV4cHIgPSBwYXJzZV9leHByZXNz aW9uIChleHApOwotLSAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50 X2NvbnRlbnRzLCAmZXhwcik7Ci0rICAgICAgbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29u dGVudHMsICZleHByKTsKLSAgICAgICB2YWwgPSBldmFsdWF0ZV90eXBlIChleHByKTsKLSAgICAg fQorQEAgLTQ1Nyw2ICs0NjIsNyBAQCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBzaG93KQog ICAgZWxzZQogICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7CiAgCkBAIC0xMzQx NCw0MyArODQ3OCwxMSBAQCBpbmRleCBjMjVlNzA1Li40OTg5NThhIDEwMDY0NAogICAgdHlwZSA9 IHZhbHVlX3R5cGUgKHZhbCk7CiAgCiAgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7 Ci1AQCAtMTU4LDggKzE2NCw3IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCi0g ICB0eXBlX3ByaW50ICh0eXBlLCAiIiwgZ2RiX3N0ZG91dCwgc2hvdyk7Ci0gICBwcmludGZfZmls dGVyZWQgKCJcbiIpOwotIAotLSAgaWYgKGV4cCkKLS0gICAgZG9fY2xlYW51cHMgKG9sZF9jaGFp bik7Ci0rICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKIGRp ZmYgLS1naXQgYS9nZGIvdXRpbHMuYyBiL2dkYi91dGlscy5jCi1pbmRleCA1NTY2MTQ5Li42ZTFh YTM0IDEwMDY0NAoraW5kZXggOGJhZTRlYi4uNmViNTg3NyAxMDA2NDQKIC0tLSBhL2dkYi91dGls cy5jCiArKysgYi9nZGIvdXRpbHMuYwotQEAgLTI3LDYgKzI3LDcgQEAKLSAjaW5jbHVkZSAiZXhj ZXB0aW9ucy5oIgotICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKLSAjaW5jbHVkZSAiZm5tYXRjaC5o IgotKyNpbmNsdWRlICJnZGJfYmZkLmgiCi0gI2lmZGVmIEhBVkVfU1lTX1JFU09VUkNFX0gKLSAj aW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+Ci0gI2VuZGlmIC8qIEhBVkVfU1lTX1JFU09VUkNFX0gg Ki8KLUBAIC0xOTgsMTEgKzE5OSwxMSBAQCBtYWtlX2NsZWFudXBfZHluX3N0cmluZ19kZWxldGUg KGR5bl9zdHJpbmdfdCBhcmcpCi0gc3RhdGljIHZvaWQKLSBkb19iZmRfY2xvc2VfY2xlYW51cCAo dm9pZCAqYXJnKQotIHsKLS0gIGJmZF9jbG9zZSAoYXJnKTsKLSsgIGdkYl9iZmRfdW5yZWYgKGFy Zyk7Ci0gfQotIAotIHN0cnVjdCBjbGVhbnVwICoKLS1tYWtlX2NsZWFudXBfYmZkX2Nsb3NlIChi ZmQgKmFiZmQpCi0rbWFrZV9jbGVhbnVwX2JmZF91bnJlZiAoYmZkICphYmZkKQotIHsKLSAgIHJl dHVybiBtYWtlX2NsZWFudXAgKGRvX2JmZF9jbG9zZV9jbGVhbnVwLCBhYmZkKTsKLSB9Ci1AQCAt MTczOCw2ICsxNzM5LDM2IEBAIHNldF9iYXRjaF9mbGFnX2FuZF9tYWtlX2NsZWFudXBfcmVzdG9y ZV9wYWdlX2luZm8gKHZvaWQpCitAQCAtMTgyMSw2ICsxODIxLDM2IEBAIHNldF9iYXRjaF9mbGFn X2FuZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpCiAgICByZXR1cm4gYmFj a190bzsKICB9CiAgCkBAIC0xMzQ4NywxMSArODUxOSwyMiBAQCBpbmRleCA1NTY2MTQ5Li42ZTFh YTM0IDEwMDY0NAogIC8qIFNldCB0aGUgc2NyZWVuIHNpemUgYmFzZWQgb24gTElORVNfUEVSX1BB R0UgYW5kIENIQVJTX1BFUl9MSU5FLiAgKi8KICAKICBzdGF0aWMgdm9pZAorZGlmZiAtLWdpdCBh L2dkYi91dGlscy5oIGIvZ2RiL3V0aWxzLmgKK2luZGV4IDY5ODNhNTMuLjBlZmE1NTMgMTAwNjQ0 CistLS0gYS9nZGIvdXRpbHMuaAorKysrIGIvZ2RiL3V0aWxzLmgKK0BAIC0zODAsNCArMzgwLDYg QEAgZXh0ZXJuIGludCBteXJlYWQgKGludCwgY2hhciAqLCBpbnQpOworIGV4dGVybiBVTE9OR0VT VCBhbGlnbl91cCAoVUxPTkdFU1QgdiwgaW50IG4pOworIGV4dGVybiBVTE9OR0VTVCBhbGlnbl9k b3duIChVTE9OR0VTVCB2LCBpbnQgbik7CisgCisrZXh0ZXJuIHN0cnVjdCBjbGVhbnVwICptYWtl X2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAodm9pZCk7CisrCisgI2VuZGlmIC8qIFVU SUxTX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGguYyBiL2dkYi92YWxhcml0aC5jCi1p bmRleCA5NmQ1NDExLi4zN2JkNDY0IDEwMDY0NAoraW5kZXggMDc0Y2YzNi4uNWM0NGVkYyAxMDA2 NDQKIC0tLSBhL2dkYi92YWxhcml0aC5jCiArKysgYi9nZGIvdmFsYXJpdGguYwotQEAgLTE5Nyw3 ICsxOTcsMTAgQEAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5 LCBMT05HRVNUIGluZGV4LCBpbnQgbG93ZXJib3VuZCkKK0BAIC0xOTUsNyArMTk1LDEwIEBAIHZh bHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBpbmRl eCwgaW50IGxvd2VyYm91bmQpCiAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7CiAgICBzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUgPSBj aGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKSk7CiAgICB1bnNpZ25l ZCBpbnQgZWx0X3NpemUgPSBUWVBFX0xFTkdUSCAoZWx0X3R5cGUpOwpAQCAtMTM1MDMsNyArODU0 Niw3IEBAIGluZGV4IDk2ZDU0MTEuLjM3YmQ0NjQgMTAwNjQ0CiAgICBzdHJ1Y3QgdmFsdWUgKnY7 CiAgCiAgICBpZiAoaW5kZXggPCBsb3dlcmJvdW5kIHx8ICghVFlQRV9BUlJBWV9VUFBFUl9CT1VO RF9JU19VTkRFRklORUQgKGFycmF5X3R5cGUpCi1AQCAtMjk3LDYgKzMwMCwxMCBAQCBpbnQKK0BA IC0yNTUsNiArMjU4LDEwIEBAIGludAogIGJpbm9wX3VzZXJfZGVmaW5lZF9wIChlbnVtIGV4cF9v cGNvZGUgb3AsCiAgCQkgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdCB2YWx1ZSAqYXJn MikKICB7CkBAIC0xMzUxNSw3ICs4NTU4LDcgQEAgaW5kZXggOTZkNTQxMS4uMzdiZDQ2NCAxMDA2 NDQKICB9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCi1pbmRl eCA5N2Q4ODliLi42YWU3N2I4IDEwMDY0NAoraW5kZXggZTNkMzZhMS4uYTZiZGE0ZCAxMDA2NDQK IC0tLSBhL2dkYi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtNDUsNiArNDUsNyBA QApAQCAtMTM1MjQsNyArODU2Nyw3IEBAIGluZGV4IDk3ZDg4OWIuLjZhZTc3YjggMTAwNjQ0CiAg I2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCiAgCi0gZXh0 ZXJuIGludCBvdmVybG9hZF9kZWJ1ZzsKKyBleHRlcm4gdW5zaWduZWQgaW50IG92ZXJsb2FkX2Rl YnVnOwogIC8qIExvY2FsIGZ1bmN0aW9ucy4gICovCiBAQCAtOTE5LDYgKzkyMCw2NSBAQCB2YWx1 ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgcmV0dXJuIHZhbDsKQEAgLTEzNjAyLDE3ICs4 NjQ1LDE4IEBAIGluZGV4IDk3ZDg4OWIuLjZhZTc3YjggMTAwNjQ0CiAgICBpZiAodmFsdWVfYml0 c2l6ZSAodmFsKSkKICAgICAgewogICAgICAgIC8qIFRvIHJlYWQgYSBsYXp5IGJpdGZpZWxkLCBy ZWFkIHRoZSBlbnRpcmUgZW5jbG9zaW5nIHZhbHVlLiAgVGhpcwotQEAgLTEwMTUsMTIgKzEwNzYs MjQgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCitAQCAtMTAxNCwxMyAr MTA3NSwyNCBAQCB2YWx1ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKICAgICAgfQog ICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKICAgICAgewogLSAg ICAgIENPUkVfQUREUiBhZGRyID0gdmFsdWVfYWRkcmVzcyAodmFsKTsKLS0gICAgICBpbnQgbGVu Z3RoID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHZhbHVlX2VuY2xvc2luZ190eXBlICh2 YWwpKSk7CistICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV9l bmNsb3NpbmdfdHlwZSAodmFsKSk7CiArICAgICAgQ09SRV9BRERSIGFkZHIgPSB2YWx1ZV9yYXdf YWRkcmVzcyAodmFsKTsKICAKLS0gICAgICBpZiAobGVuZ3RoKQorLSAgICAgIGlmIChUWVBFX0xF TkdUSCAodHlwZSkpCiAtCXJlYWRfdmFsdWVfbWVtb3J5ICh2YWwsIDAsIHZhbHVlX3N0YWNrICh2 YWwpLAotLQkJCSAgIGFkZHIsIHZhbHVlX2NvbnRlbnRzX2FsbF9yYXcgKHZhbCksIGxlbmd0aCk7 CistCQkJICAgYWRkciwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAodmFsKSwKKy0JCQkgICBUWVBF X0xFTkdUSCAodHlwZSkpOwogKyAgICAgIGlmIChvYmplY3RfYWRkcmVzc19nZXRfZGF0YSAodmFs dWVfdHlwZSAodmFsKSwgJmFkZHIpKQogKwl7CiArCSAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1 ZV9lbmNsb3NpbmdfdHlwZSAodmFsKTsKQEAgLTEzNjMyLDcgKzg2NzYsNyBAQCBpbmRleCA5N2Q4 ODliLi42YWU3N2I4IDEwMDY0NAogICAgICB9CiAgICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwp ID09IGx2YWxfcmVnaXN0ZXIpCiAgICAgIHsKLUBAIC0xNTMwLDcgKzE2MDMsMTggQEAgYWRkcmVz c19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgYmxvY2sgKmIpCitAQCAt MTUyOSw3ICsxNjAxLDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgY29uc3Qgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChWQUxVRV9MVkFMICh2YWwpID09IGx2 YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAgICAgfHwgVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTM2NTIsNyArODY5Niw3IEBAIGluZGV4 IDk3ZDg4OWIuLjZhZTc3YjggMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJuIHZhbHVlX2Zyb21fcG9p bnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9Ci1AQCAtMTYz Nyw2ICsxNzIxLDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNjM2LDYgKzE3MTksNyBAQCBzdHJ1 Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICphcmcxKQogIHsK ICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkp OwpAQCAtMTM2NjAsNyArODcwNCw3IEBAIGluZGV4IDk3ZDg4OWIuLjZhZTc3YjggMTAwNjQ0CiAg CiAgICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21ldGhpbmcgcmVxdWlyaW5nIGEgcG9p bnRlciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gcHVzaGVkIHRv IHRoZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE2NDYsOCArMTczMSwxMiBAQCB2YWx1 ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKK0BAIC0xNjQ1LDggKzE3MjksMTIg QEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgICBpZiAoVkFMVUVf TFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIHRh a2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuIikpOwogIApAQCAtMTM2 NzQsMTcgKzg3MTgsMTcgQEAgaW5kZXggOTdkODg5Yi4uNmFlNzdiOCAxMDA2NDQKICB9CiAgCiAg LyogR2l2ZW4gYSB2YWx1ZSB3aGljaCBpcyBhIGZ1bmN0aW9uLCByZXR1cm4gYSB2YWx1ZSB3aGlj aCBpcyBhIHBvaW50ZXIKLUBAIC0zNzY5LDYgKzM4NTgsOCBAQCB2YWx1ZV9zbGljZSAoc3RydWN0 IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQorQEAgLTM3MjQsNiArMzgx Miw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGlu dCBsZW5ndGgpCiAgCQkJCQlUWVBFX1RBUkdFVF9UWVBFIChyYW5nZV90eXBlKSwKICAJCQkJCWxv d2JvdW5kLCAKICAJCQkJCWxvd2JvdW5kICsgbGVuZ3RoIC0gMSk7CiArICBUWVBFX0JZVEVfU1RS SURFIChzbGljZV9yYW5nZV90eXBlKSA9IFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpOwog KwotICAgaWYgKFRZUEVfQ09ERSAoYXJyYXlfdHlwZSkgPT0gVFlQRV9DT0RFX0JJVFNUUklORykK KyAKICAgICAgewotICAgICAgIGludCBpOworICAgICAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5 cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChhcnJheV90eXBlKTsKIGRpZmYgLS1naXQgYS9nZGIvdmFs cHJpbnQuYyBiL2dkYi92YWxwcmludC5jCi1pbmRleCBmYzU5NDJkLi44MzMzZWI0IDEwMDY0NAor aW5kZXggNDJkYWNjNS4uNjk3N2Y2MiAxMDA2NDQKIC0tLSBhL2dkYi92YWxwcmludC5jCiArKysg Yi9nZGIvdmFscHJpbnQuYwogQEAgLTM3LDYgKzM3LDcgQEAKQEAgLTEzNjk1LDE1ICs4NzM5LDE1 IEBAIGluZGV4IGZjNTk0MmQuLjgzMzNlYjQgMTAwNjQ0CiAgCiAgI2luY2x1ZGUgPGVycm5vLmg+ CiAgCi1AQCAtMjUxLDcgKzI1Miw2IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBl KQorQEAgLTI4Nyw3ICsyODgsNiBAQCBzY2FsYXJfdHlwZV9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkK ICAgICAgY2FzZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoK ICAgICAgY2FzZSBUWVBFX0NPREVfU0VUOgogLSAgICBjYXNlIFRZUEVfQ09ERV9TVFJJTkc6Ci0g ICAgIGNhc2UgVFlQRV9DT0RFX0JJVFNUUklORzoKICAgICAgICByZXR1cm4gMDsKICAgICAgZGVm YXVsdDoKLUBAIC0xNTcwLDYgKzE1NzAsNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0 cnVjdCB0eXBlICp0eXBlLAorICAgICAgIHJldHVybiAxOworQEAgLTE2MDUsNiArMTYwNSw3IEBA IHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgewogICAgdW5z aWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsKICAgIHVuc2lnbmVkIGxlbjsKQEAgLTEzNzEx LDcgKzg3NTUsNyBAQCBpbmRleCBmYzU5NDJkLi44MzMzZWI0IDEwMDY0NAogICAgc3RydWN0IHR5 cGUgKmVsdHR5cGUsICppbmRleF90eXBlOwogICAgdW5zaWduZWQgZWx0bGVuOwogICAgLyogUG9z aXRpb24gb2YgdGhlIGFycmF5IGVsZW1lbnQgd2UgYXJlIGV4YW1pbmluZyB0byBzZWUKLUBAIC0x NTc4LDkgKzE1NzksMzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwKK0BAIC0xNjEzLDkgKzE2MTQsMzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChz dHJ1Y3QgdHlwZSAqdHlwZSwKICAgIC8qIE51bWJlciBvZiByZXBldGl0aW9ucyB3ZSBoYXZlIGRl dGVjdGVkIHNvIGZhci4gICovCiAgICB1bnNpZ25lZCBpbnQgcmVwczsKICAgIExPTkdFU1QgbG93 X2JvdW5kLCBoaWdoX2JvdW5kOwpAQCAtMTM3NDcsNyArODc5MSw3IEBAIGluZGV4IGZjNTk0MmQu LjgzMzNlYjQgMTAwNjQ0CiAgICBpbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsK ICAKICAgIGlmIChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3Vu ZCkpCi1AQCAtMTY2Nyw2ICsxNjkyLDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1 Y3QgdHlwZSAqdHlwZSwKK0BAIC0xNzAyLDYgKzE3MjcsOCBAQCB2YWxfcHJpbnRfYXJyYXlfZWxl bWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLAogICAgICB7CiAgICAgICAgZnByaW50Zl9maWx0ZXJl ZCAoc3RyZWFtLCAiLi4uIik7CiAgICAgIH0KQEAgLTEzNzU3LDcgKzg4MDEsNyBAQCBpbmRleCBm YzU5NDJkLi44MzMzZWI0IDEwMDY0NAogIAogIC8qIFJlYWQgTEVOIGJ5dGVzIG9mIHRhcmdldCBt ZW1vcnkgYXQgYWRkcmVzcyBNRU1BRERSLCBwbGFjaW5nIHRoZQogZGlmZiAtLWdpdCBhL2dkYi92 YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKLWluZGV4IGE2YmI3MTguLjdiMDhkMWYgMTAwNjQ0CitpbmRl eCBlYzRiMDkwLi45NmEzMDhmIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92 YWx1ZS5jCiBAQCAtNDIsNiArNDIsNyBAQApAQCAtMTM3NjgsNyArODgxMiw3IEBAIGluZGV4IGE2 YmI3MTguLjdiMDhkMWYgMTAwNjQ0CiAgCiAgLyogUHJvdG90eXBlcyBmb3IgZXhwb3J0ZWQgZnVu Y3Rpb25zLiAgKi8KICAKLUBAIC0xNDM3LDEyICsxNDM4LDE1IEBAIHZvaWQKK0BAIC0xNDQwLDEy ICsxNDQxLDE1IEBAIHZvaWQKICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3Qg dmFsdWUgKmNvbXBvbmVudCwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKndob2xlKQog IHsKQEAgLTEzNzg0LDcgKzg4MjgsNyBAQCBpbmRleCBhNmJiNzE4Li43YjA4ZDFmIDEwMDY0NAog ICAgaWYgKHdob2xlLT5sdmFsID09IGx2YWxfY29tcHV0ZWQpCiAgICAgIHsKICAgICAgICBjb25z dCBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB3aG9sZS0+bG9jYXRpb24uY29tcHV0ZWQuZnVu Y3M7Ci1AQCAtMTQ1MCw2ICsxNDU0LDEyIEBAIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24g KHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAorQEAgLTE0NTMsNiArMTQ1NywxMiBAQCBzZXRfdmFs dWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwKICAgICAgICBp ZiAoZnVuY3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+bG9jYXRpb24uY29t cHV0ZWQuY2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsKICAgICAgfQpAQCAt MTM3OTcsNyArODg0MSw3IEBAIGluZGV4IGE2YmI3MTguLjdiMDhkMWYgMTAwNjQ0CiAgfQogIAog IAwKLUBAIC0xNTgzLDYgKzE1OTMsMzEgQEAgc2hvd192YWx1ZXMgKGNoYXIgKm51bV9leHAsIGlu dCBmcm9tX3R0eSkKK0BAIC0xNTg2LDYgKzE1OTYsMzEgQEAgc2hvd192YWx1ZXMgKGNoYXIgKm51 bV9leHAsIGludCBmcm9tX3R0eSkKICAgICAgICBudW1fZXhwWzFdID0gJ1wwJzsKICAgICAgfQog IH0KQEAgLTEzODI5LDcgKzg4NzMsNyBAQCBpbmRleCBhNmJiNzE4Li43YjA4ZDFmIDEwMDY0NAog IAwKICAvKiBJbnRlcm5hbCB2YXJpYWJsZXMuICBUaGVzZSBhcmUgdmFyaWFibGVzIHdpdGhpbiB0 aGUgZGVidWdnZXIKICAgICB0aGF0IGhvbGQgdmFsdWVzIGFzc2lnbmVkIGJ5IGRlYnVnZ2VyIGNv bW1hbmRzLgotQEAgLTIxMTgsNiArMjE1MywzOCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0yMTIxLDYgKzIxNTYsMzggQEAgY2FsbF9pbnRl cm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICByZXR1cm4gKCppZm4t PmhhbmRsZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZuLT5jb29raWUsIGFyZ2MsIGFyZ3YpOwog IH0KICAKQEAgLTEzODY4LDcgKzg5MTIsNyBAQCBpbmRleCBhNmJiNzE4Li43YjA4ZDFmIDEwMDY0 NAogIC8qIFRoZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBUaGlzIGRvZXMgbm90aGluZyAtLSBpdCBp cyBqdXN0IGEKICAgICBwbGFjZWhvbGRlciB0byBsZXQgImhlbHAgZnVuY3Rpb24gTkFNRSIgd29y ay4gIFRoaXMgaXMgYWxzbyB1c2VkIGFzCiAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBz dWItY29tbWFuZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgotQEAgLTIxNjUsMTEgKzIyMzIsMTAgQEAg cHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKK0BAIC0yMTY4LDExICsyMjM1LDEwIEBAIHByZXNlcnZlX29uZV92YWx1ZSAoc3Ry dWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkgICAgaHRhYl90 IGNvcGllZF90eXBlcykKICB7CiAgICBpZiAoVFlQRV9PQkpGSUxFICh2YWx1ZS0+dHlwZSkgPT0g b2JqZmlsZSkKQEAgLTEzODgyLDcgKzg5MjYsNyBAQCBpbmRleCBhNmJiNzE4Li43YjA4ZDFmIDEw MDY0NAogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAKLUBAIC0yMTg0LDcgKzIyNTAsNyBA QCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yMTg3LDcgKzIyNTMsNyBAQCBwcmVzZXJ2ZV9vbmVf aW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKICAgICAgY2FzZSBJTlRFUk5BTFZBUl9JTlRFR0VSOgogICAgICAgIGlmICh2YXItPnUu aW50ZWdlci50eXBlICYmIFRZUEVfT0JKRklMRSAodmFyLT51LmludGVnZXIudHlwZSkgPT0gb2Jq ZmlsZSkKICAJdmFyLT51LmludGVnZXIudHlwZQpAQCAtMTM4OTEsNyArODkzNSw3IEBAIGluZGV4 IGE2YmI3MTguLjdiMDhkMWYgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgSU5U RVJOQUxWQVJfVkFMVUU6Ci1AQCAtMzI3NiwxMCArMzM0MiwyNyBAQCByZWFkanVzdF9pbmRpcmVj dF92YWx1ZV90eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqZW5jX3R5cGUs CitAQCAtMzI4NSwxMCArMzM1MSwyNyBAQCByZWFkanVzdF9pbmRpcmVjdF92YWx1ZV90eXBlIChz dHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3QgdHlwZSAqZW5jX3R5cGUsCiAgc3RydWN0IHZhbHVl ICoKICBjb2VyY2VfcmVmIChzdHJ1Y3QgdmFsdWUgKmFyZykKICB7CkBAIC0xMzkyMCw3ICs4OTY0 LDcgQEAgaW5kZXggYTZiYjcxOC4uN2IwOGQxZiAxMDA2NDQKICAgIHJldHZhbCA9IGNvZXJjZV9y ZWZfaWZfY29tcHV0ZWQgKGFyZyk7CiAgICBpZiAocmV0dmFsKQogICAgICByZXR1cm4gcmV0dmFs OwotQEAgLTMzODYsNCArMzQ2OSwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVk LiIpKTsKK0BAIC0zNDAwLDQgKzM0ODMsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFs aXplZC4iKSk7CiAgICBhZGRfcHJlZml4X2NtZCAoImZ1bmN0aW9uIiwgbm9fY2xhc3MsIGZ1bmN0 aW9uX2NvbW1hbmQsIF8oIlwKICBQbGFjZWhvbGRlciBjb21tYW5kIGZvciBzaG93aW5nIGhlbHAg b24gY29udmVuaWVuY2UgZnVuY3Rpb25zLiIpLAogIAkJICAmZnVuY3Rpb25saXN0LCAiZnVuY3Rp b24gIiwgMCwgJmNtZGxpc3QpOwpAQCAtMTM5MzIsNyArODk3Niw3IEBAIGluZGV4IGE2YmI3MTgu LjdiMDhkMWYgMTAwNjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5oIGIv Z2RiL3ZhbHVlLmgKLWluZGV4IGQ4YjE1N2YuLmY0OWU4MjcgMTAwNjQ0CitpbmRleCA2N2YxZDA0 Li4yZDJiODMwIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbHVlLmgKICsrKyBiL2dkYi92YWx1ZS5oCiBA QCAtNTMzLDYgKzUzMywxMCBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zs b2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTEzOTQ2LDM0ICs4OTkwLDMgQEAgaW5kZXggZDhi MTU3Zi4uZjQ5ZTgyNyAxMDA2NDQKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9hdCAoc3Ry dWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICBleHRlcm4gc3RydWN0IHZhbHVlICp2 YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIAotZGlm ZiAtLWdpdCBhL2dkYi93aW5kb3dzLW5hdC5jIGIvZ2RiL3dpbmRvd3MtbmF0LmMKLWluZGV4IGYx NjU4OGEuLmFmZWY2MTUgMTAwNjQ0Ci0tLS0gYS9nZGIvd2luZG93cy1uYXQuYwotKysrIGIvZ2Ri L3dpbmRvd3MtbmF0LmMKLUBAIC03NTIsNyArNzUyLDcgQEAgd2luZG93c19tYWtlX3NvIChjb25z dCBjaGFyICpuYW1lLCBMUFZPSUQgbG9hZF9hZGRyKQotICAgICAgIGFzZWN0aW9uICp0ZXh0ID0g TlVMTDsKLSAgICAgICBDT1JFX0FERFIgdGV4dF92bWE7Ci0gCi0tICAgICAgYWJmZCA9IGJmZF9v cGVuciAoc28tPnNvX25hbWUsICJwZWktaTM4NiIpOwotKyAgICAgIGFiZmQgPSBnZGJfYmZkX29w ZW5yIChzby0+c29fbmFtZSwgInBlaS1pMzg2Iik7Ci0gCi0gICAgICAgaWYgKCFhYmZkKQotIAly ZXR1cm4gc287Ci1AQCAtNzYyLDcgKzc2Miw3IEBAIHdpbmRvd3NfbWFrZV9zbyAoY29uc3QgY2hh ciAqbmFtZSwgTFBWT0lEIGxvYWRfYWRkcikKLSAKLSAgICAgICBpZiAoIXRleHQpCi0gCXsKLS0J ICBiZmRfY2xvc2UgKGFiZmQpOwotKwkgIGdkYl9iZmRfdW5yZWYgKGFiZmQpOwotIAkgIHJldHVy biBzbzsKLSAJfQotIAotQEAgLTc3Myw3ICs3NzMsNyBAQCB3aW5kb3dzX21ha2Vfc28gKGNvbnN0 IGNoYXIgKm5hbWUsIExQVk9JRCBsb2FkX2FkZHIpCi0gCQkJCQkJICAgbG9hZF9hZGRyICsgMHgx MDAwKTsKLSAgICAgICBjeWd3aW5fbG9hZF9lbmQgPSBjeWd3aW5fbG9hZF9zdGFydCArIGJmZF9z ZWN0aW9uX3NpemUgKGFiZmQsIHRleHQpOwotIAotLSAgICAgIGJmZF9jbG9zZSAoYWJmZCk7Ci0r ICAgICAgZ2RiX2JmZF91bnJlZiAoYWJmZCk7Ci0gICAgIH0KLSAjZW5kaWYKLSAKCmRpZmYgLS1n aXQgYS9nZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoIGIvZ2RiLWF0dGFjaC1mYWls LXJlYXNvbnMtNW9mNS5wYXRjaAppbmRleCA3MTcxMWYwLi43NzM0NTdlIDEwMDY0NAotLS0gYS9n ZGItYXR0YWNoLWZhaWwtcmVhc29ucy01b2Y1LnBhdGNoCisrKyBiL2dkYi1hdHRhY2gtZmFpbC1y ZWFzb25zLTVvZjUucGF0Y2gKQEAgLTM3LDEzICszNywxMyBAQCBnZGIvZ2Ric2VydmVyLwogCShs aW51eF9jcmVhdGVfaW5mZXJpb3IsIGxpbnV4X3RyYWNlZm9ya19jaGlsZCk6IENhbGwgaXQgaW5z dGVhZCBvZgogCWRpcmVjdCBwdHJhY2UuCiAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2NvbW1vbi9saW51eC1wdHJhY2UuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2Nv bW1vbi9saW51eC1wdHJhY2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5v cmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMJMjAxMi0wOS0xNyAyMDoyODoxNC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2Uu YwkyMDEyLTA5LTI2IDE5OjEzOjUzLjUwODc4MDIzOSArMDIwMAotQEAgLTI4LDYgKzI4LDEwIEBA Ci0gI2luY2x1ZGUgImJ1ZmZlci5oIgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv Y29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMtMDEtMTggMjM6MTg6NDcuMzEzMzYwMDY1ICswMTAw CisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5jCTIwMTMt MDEtMTggMjM6MTk6MjcuMjY5NDE3MDUxICswMTAwCitAQCAtMjksNiArMjksMTAgQEAKICAjaW5j bHVkZSAiZ2RiX2Fzc2VydC5oIgorICNpbmNsdWRlICJnZGJfd2FpdC5oIgogIAogKyNpZmRlZiBI QVZFX1NFTElOVVhfU0VMSU5VWF9ICiArIyBpbmNsdWRlIDxzZWxpbnV4L3NlbGludXguaD4KQEAg LTUyLDcgKzUyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY29tbW9uL2xpbnV4 LXB0cmFjZS5jCiAgLyogRmluZCBhbGwgcG9zc2libGUgcmVhc29ucyB3ZSBjb3VsZCBmYWlsIHRv IGF0dGFjaCBQSUQgYW5kIGFwcGVuZCB0aGVzZQogICAgIG5ld2xpbmUgdGVybWluYXRlZCByZWFz b24gc3RyaW5ncyB0byBpbml0aWFsaXplZCBCVUZGRVIuICAnXDAnIHRlcm1pbmF0aW9uCiAgICAg b2YgQlVGRkVSIG11c3QgYmUgZG9uZSBieSB0aGUgY2FsbGVyLiAgKi8KLUBAIC00Nyw2ICs1MSw4 IEBAIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBpZF90IHBpZCwKK0BAIC00OCw2ICs1 Miw4IEBAIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBpZF90IHBpZCwKICAgICAgYnVm ZmVyX3htbF9wcmludGYgKGJ1ZmZlciwgXygid2FybmluZzogcHJvY2VzcyAlZCBpcyBhIHpvbWJp ZSAiCiAgCQkJCSAiLSB0aGUgcHJvY2VzcyBoYXMgYWxyZWFkeSB0ZXJtaW5hdGVkXG4iKSwKICAJ CSAgICAgICAoaW50KSBwaWQpOwpAQCAtNjEsNyArNjEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKICB9CiAgCiAgI2lmIGRlZmluZWQgX19p Mzg2X18gfHwgZGVmaW5lZCBfX3g4Nl82NF9fCi1AQCAtMjQyLDMgKzI0OCwxOSBAQCBsaW51eF9w dHJhY2VfaW5pdF93YXJuaW5ncyAodm9pZCkKK0BAIC0yNDMsMyArMjQ5LDE5IEBAIGxpbnV4X3B0 cmFjZV9pbml0X3dhcm5pbmdzICh2b2lkKQogIAogICAgbGludXhfcHRyYWNlX3Rlc3RfcmV0X3Rv X254ICgpOwogIH0KQEAgLTgxLDEwICs4MSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmMKICsJCQkgIihnZGIpIHNoZWxsIHN1ZG8gc2V0c2Vi b29sIGRlbnlfcHRyYWNlPTAiKSk7CiArI2VuZGlmIC8qIEhBVkVfTElCU0VMSU5VWCAqLwogK30K LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAorSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9jb21tb24vbGludXgtcHRyYWNl LmgJMjAxMi0wNy0wNyAxNDoxMzo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2NvbW1vbi9saW51eC1wdHJhY2UuaAkyMDEyLTA5LTI2IDE5OjEzOjI4LjM1ODc2 NTQwNiArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvY29tbW9uL2xpbnV4 LXB0cmFjZS5oCTIwMTMtMDEtMTggMjM6MTg6NDcuMzEzMzYwMDY1ICswMTAwCisrKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvY29tbW9uL2xpbnV4LXB0cmFjZS5oCTIwMTMtMDEtMTggMjM6MTk6 MDQuOTkwMzg1MzYwICswMTAwCiBAQCAtNjksNSArNjksNiBAQCBzdHJ1Y3QgYnVmZmVyOwogIAog IGV4dGVybiB2b2lkIGxpbnV4X3B0cmFjZV9hdHRhY2hfd2FybmluZ3MgKHBpZF90IHBpZCwgc3Ry dWN0IGJ1ZmZlciAqYnVmZmVyKTsKQEAgLTkyLDExICs5MiwxMSBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9jb21tb24vbGludXgtcHRyYWNlLmgKICtleHRlcm4gdm9pZCBsaW51eF9w dHJhY2VfY3JlYXRlX3dhcm5pbmdzIChzdHJ1Y3QgYnVmZmVyICpidWZmZXIpOwogIAogICNlbmRp ZiAvKiBDT01NT05fTElOVVhfUFRSQUNFX0ggKi8KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2NvbmZpZ3VyZS5hYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NvbmZpZ3Vy ZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9jb25maWd1 cmUuYWMJMjAxMi0wOS0yNiAxOToxMzoyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEyLTA5LTI2IDE5OjEzOjI4LjQxMDc2NTQ1MSAr MDIwMAotQEAgLTIwMDgsNiArMjAwOCwxMCBAQCB0aGVuCistLS0gZ2RiLTcuNS41MC4yMDEzMDEx OC5vcmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMy0wMS0xOCAyMzoxODo0Ny4zMTUzNjAwNjkgKzAx MDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jb25maWd1cmUuYWMJMjAxMy0wMS0xOCAy MzoxOTowNC45OTEzODUzNjIgKzAxMDAKK0BAIC0yMDY4LDYgKzIwNjgsMTAgQEAgdGhlbgogIAkg ICAgICBbRGVmaW5lIGlmIHlvdSBzdXBwb3J0IHRoZSBwZXJzb25hbGl0eSBzeXNjYWxsLl0pCiAg ZmkKICAKQEAgLTEwNywxMSArMTA3LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2NvbmZpZ3VyZS5hYwogIGRubCBIYW5kbGUgb3B0aW9uYWwgZmVhdHVyZXMgdGhhdCBjYW4gYmUg ZW5hYmxlZC4KICAKICAjIFN1cHBvcnQgZm9yIC0td2l0aC1zeXNyb290IGlzIGEgY29weSBvZiBH REJfQUNfV0lUSF9ESVIsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJzZXJ2ZXIv Y29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2Ric2VydmVyL2Nv bmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9n ZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTItMDQtMTkgMjE6MzQ6NTEuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJzZXJ2ZXIvY29uZmlndXJlLmFjCTIwMTIt MDktMjYgMTk6MTM6MjguNDQ2NzY1NDI4ICswMjAwCi1AQCAtNDM4LDYgKzQzOCwxMCBAQCBpZiAk d2FudF9pcGEgOyB0aGVuCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9nZGJzZXJ2 ZXIvY29uZmlndXJlLmFjCTIwMTMtMDEtMTggMjM6MTg6NDcuMzE1MzYwMDY5ICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2Ric2VydmVyL2NvbmZpZ3VyZS5hYwkyMDEzLTAxLTE4 IDIzOjE5OjA0Ljk5MTM4NTM2MiArMDEwMAorQEAgLTQ1MSw2ICs0NTEsMTAgQEAgaWYgJHdhbnRf aXBhIDsgdGhlbgogICAgIGZpCiAgZmkKICAKQEAgLTEyMiwxMCArMTIyLDEwIEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnNlcnZlci9jb25maWd1cmUuYWMKICBBQ19TVUJTVChH REJTRVJWRVJfREVQRklMRVMpCiAgQUNfU1VCU1QoR0RCU0VSVkVSX0xJQlMpCiAgQUNfU1VCU1Qo VVNFX1RIUkVBRF9EQikKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnNlcnZlci9s aW51eC1sb3cuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYnNlcnZlci9saW51 eC1sb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9nZGJz ZXJ2ZXIvbGludXgtbG93LmMJMjAxMi0wNy0wNyAxNDoxMzo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwkyMDEyLTA5LTI2 IDE5OjEzOjI4LjQ1Mzc2NTQ3MSArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIwMTMtMDEtMTggMjM6MTg6NDcuMzE3MzYwMDczICsw MTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jCTIw MTMtMDEtMTggMjM6MTk6MDQuOTkzMzg1MzY2ICswMTAwCiBAQCAtNjAxLDYgKzYwMSwyOCBAQCBh ZGRfbHdwIChwdGlkX3QgcHRpZCkKICAgIHJldHVybiBsd3A7CiAgfQpAQCAtMTY0LDcgKzE2NCw3 IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwog IAogICNpZm5kZWYgX19BTkRST0lEX18gLyogQmlvbmljIGRvZXNuJ3QgdXNlIFNJR1JUTUlOIHRo ZSB3YXkgZ2xpYmMgZG9lcy4gICovCiAgICAgICAgc2lnbmFsIChfX1NJR1JUTUlOICsgMSwgU0lH X0RGTCk7Ci1AQCAtNDU3Miw3ICs0NTk0LDcgQEAgbGludXhfdHJhY2Vmb3JrX2dyYW5kY2hpbGQg KHZvaWQgKmFyZykKK0BAIC00NTc0LDcgKzQ1OTYsNyBAQCBsaW51eF90cmFjZWZvcmtfZ3JhbmRj aGlsZCAodm9pZCAqYXJnKQogIHN0YXRpYyBpbnQKICBsaW51eF90cmFjZWZvcmtfY2hpbGQgKHZv aWQgKmFyZykKICB7CkBAIC0xNzMsMTEgKzE3MywxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKICAgIGtpbGwgKGdldHBpZCAoKSwgU0lHU1RP UCk7CiAgCiAgI2lmICEoZGVmaW5lZChfX1VDTElCQ19fKSAmJiBkZWZpbmVkKEhBU19OT01NVSkp Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pbmYtcHRyYWNlLmMKK0luZGV4OiBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi9pbmYtcHRyYWNlLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjAuMjAxMjA5MjYub3JpZy9nZGIvaW5mLXB0cmFjZS5jCTIwMTItMDUtMjQgMTg6NTE6MzQuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pbmYtcHRyYWNlLmMJMjAx Mi0wOS0yNiAxOToxMzoyOC40NTg3NjU0NjEgKzAyMDAKLUBAIC0xMDUsNyArMTA1LDE1IEBAIHN0 YXRpYyB2b2lkCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pbmYtcHRyYWNlLmMJ MjAxMy0wMS0xOCAyMzoxODo0Ny4zMTgzNjAwNzYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9pbmYtcHRyYWNlLmMJMjAxMy0wMS0xOCAyMzoxOTowNC45OTMzODUzNjYgKzAxMDAK K0BAIC0xMDQsNyArMTA0LDE1IEBAIHN0YXRpYyB2b2lkCiAgaW5mX3B0cmFjZV9tZSAodm9pZCkK ICB7CiAgICAvKiAiVHJhY2UgbWUsIERyLiBNZW1vcnkhIiAgKi8KQEAgLTE5MywxMSArMTkzLDEx IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2luZi1wdHJhY2UuYwogIH0KICAKICAv KiBTdGFydCBhIG5ldyBpbmZlcmlvciBVbml4IGNoaWxkIHByb2Nlc3MuICBFWEVDX0ZJTEUgaXMg dGhlIGZpbGUgdG8KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xpbnV4LW5hdC5jCitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMi0wOS0yNiAxOTox MzoyMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xpbnV4LW5h dC5jCTIwMTItMDktMjYgMTk6MTM6MjguNDY4NzY1NDY5ICswMjAwCi1AQCAtMTU3NCw2ICsxNTc0 LDcgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldAorLS0tIGdkYi03 LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoxODo0Ny4z MjAzNjAwODMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9saW51eC1uYXQuYwky MDEzLTAxLTE4IDIzOjE5OjA0Ljk5NDM4NTM2OSArMDEwMAorQEAgLTE1NzgsNiArMTU3OCw3IEBA IGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0YXJnZXQKICAjaWZkZWYgSEFWRV9Q RVJTT05BTElUWQogICAgaW50IHBlcnNvbmFsaXR5X29yaWcgPSAwLCBwZXJzb25hbGl0eV9zZXQg PSAwOwogICNlbmRpZiAvKiBIQVZFX1BFUlNPTkFMSVRZICovCkBAIC0yMDUsNyArMjA1LDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbGludXgtbmF0LmMKICAKICAgIC8qIFRoZSBm b3JrX2NoaWxkIG1lY2hhbmlzbSBpcyBzeW5jaHJvbm91cyBhbmQgY2FsbHMgdGFyZ2V0X3dhaXQs IHNvCiAgICAgICB3ZSBoYXZlIHRvIG1hc2sgdGhlIGFzeW5jIG1vZGUuICAqLwotQEAgLTE1OTgs NyArMTU5OSwxMCBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1Y3QgdGFyZ2V0CitA QCAtMTYwMiw3ICsxNjAzLDEwIEBAIGxpbnV4X25hdF9jcmVhdGVfaW5mZXJpb3IgKHN0cnVjdCB0 YXJnZXQKICAgIC8qIE1ha2Ugc3VyZSB3ZSByZXBvcnQgYWxsIHNpZ25hbHMgZHVyaW5nIHN0YXJ0 dXAuICAqLwogICAgbGludXhfbmF0X3Bhc3Nfc2lnbmFscyAoMCwgTlVMTCk7CiAgCkBAIC0yMTcs NyArMjE3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbGludXgtbmF0LmMKICAK ICAjaWZkZWYgSEFWRV9QRVJTT05BTElUWQogICAgaWYgKHBlcnNvbmFsaXR5X3NldCkKLUBAIC0x NjEwLDYgKzE2MTQsMjQgQEAgbGludXhfbmF0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdl dAorQEAgLTE2MTQsNiArMTYxOCwyNCBAQCBsaW51eF9uYXRfY3JlYXRlX2luZmVyaW9yIChzdHJ1 Y3QgdGFyZ2V0CiAgCQkgc2FmZV9zdHJlcnJvciAoZXJybm8pKTsKICAgICAgfQogICNlbmRpZiAv KiBIQVZFX1BFUlNPTkFMSVRZICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTMzMTc2LWZvcnRyYW4t b21wLXN0ZXAucGF0Y2ggYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRjaAppbmRl eCAyY2RkYWMzLi4wNzI1YWQyIDEwMDY0NAotLS0gYS9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAt c3RlcC5wYXRjaAorKysgYi9nZGItYno1MzMxNzYtZm9ydHJhbi1vbXAtc3RlcC5wYXRjaApAQCAt MjEsMjQgKzIxLDI4IEBAIGRlYnVnZ2luZyBwcm9ibGVtIG9mIEdPTVAgb3V0c2lkZSBvZiB0aGUg c2NvcGUgb2YgdGhpcyBCdWcuCiAKIAogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIv aW5mcnVuLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pbmZydW4uYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDEyMzEub3JpZy9nZGIvaW5mcnVuLmMJMjAxMS0wMS0w MSAwMTowMjo0NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi9p bmZydW4uYwkyMDExLTAxLTAxIDAxOjEwOjIyLjAwMDAwMDAwMCArMDEwMAotQEAgLTQ1ODUsNiAr NDU4NSwxMiBAQCBpbmZydW46IG5vdCBzd2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCistLS0g Z2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTAxLTE5IDIzOjM4OjIy LjMyOTM3MTQxMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2luZnJ1bi5jCTIw MTMtMDEtMTkgMjM6Mzk6MDMuMzIyNDI5MDQxICswMTAwCitAQCAtNDkxOCw2ICs0OTE4LDE2IEBA IHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogIAogICAgICAgIGlmIChlY3MtPmV2ZW50X3RocmVh ZC0+Y29udHJvbC5zdGVwX292ZXJfY2FsbHMgPT0gU1RFUF9PVkVSX0FMTCkKICAJewogKwkgIHN0 cnVjdCBzeW1ib2wgKnN0b3BfZm4gPSBmaW5kX3BjX2Z1bmN0aW9uIChzdG9wX3BjKTsKKysJICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnN0b3BmID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3Bj IChzdG9wX3BjKTsKICsKLSsJICBpZiAoc3RvcF9mbiA9PSBOVUxMCi0rCSAgICAgIHx8IHN0cnN0 ciAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3RvcF9mbiksICIub21wX2ZuLiIpID09IE5VTEwpCisr CSAgaWYgKChzdG9wX2ZuID09IE5VTEwKKysJICAgICAgIHx8IHN0cnN0ciAoU1lNQk9MX0xJTktB R0VfTkFNRSAoc3RvcF9mbiksICIub21wX2ZuLiIpID09IE5VTEwpCisrCSAgICAgIC8qIGdjYy00 LjcuMi05LmZjMTkueDg2XzY0IHVzZXMgYSBuZXcgZm9ybWF0LiAgKi8KKysJICAgICAgJiYgKHN0 b3BmID09IE5VTEwKKysJCSAgfHwgc3Ryc3RyIChTWU1CT0xfTElOS0FHRV9OQU1FIChzdG9wZiks ICIuX29tcF9mbi4iKSA9PSBOVUxMKSkKICt7CS8qICIub21wX2ZuLiIgKi8KICsKICAJICAvKiBX ZSdyZSBkb2luZyBhICJuZXh0Ii4KICAKICAJICAgICBOb3JtYWwgKGZvcndhcmQpIGV4ZWN1dGlv bjogc2V0IGEgYnJlYWtwb2ludCBhdCB0aGUKLUBAIC00NjEyLDYgKzQ2MTgsNyBAQCBpbmZydW46 IG5vdCBzd2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCitAQCAtNDk1Myw2ICs0OTYzLDcgQEAg cHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAgCiAgCSAga2VlcF9nb2luZyAoZWNzKTsKICAJICBy ZXR1cm47CkBAIC00NiwxMCArNTAsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEyMzEvZ2Ri L2luZnJ1bi5jCiAgCX0KICAKICAgICAgICAvKiBJZiB3ZSBhcmUgaW4gYSBmdW5jdGlvbiBjYWxs IHRyYW1wb2xpbmUgKGEgc3R1YiBiZXR3ZWVuIHRoZQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEy MzEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1z dGVwLmV4cAkyMDExLTAxLTAxIDAxOjA5OjU4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMy0w MS0xOSAyMzozODoyMy4yMTMzNzI2MjIgKzAxMDAKIEBAIC0wLDAgKzEsMzEgQEAKICsjIENvcHly aWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtODIsMTAgKzg2 LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMjMxL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vb21wLXN0ZXAuZXhwCiArCiArZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InN1Y2Nlc3MiXQogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJzdWNjZXNzIiAiLipzdWNj ZXNzLioiCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTIzMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL29tcC1zdGVwLmY5MAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5mOTAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3 MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMjMx L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZjkwCTIwMTEtMDEtMDEgMDE6MDk6 NTguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL29tcC1zdGVwLmY5MAkyMDEzLTAxLTE5IDIzOjM4OjIzLjIxMzM3MjYyMiAr MDEwMAogQEAgLTAsMCArMSwzMiBAQAogKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjIzNzQ5LWdjb3JlLXJlbHJv LnBhdGNoIGIvZ2RiLWJ6NjIzNzQ5LWdjb3JlLXJlbHJvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA0MDE1YTdhLi4wMDAwMDAwCi0tLSBhL2dkYi1iejYyMzc0OS1nY29yZS1y ZWxyby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi1nZGI6Ci1odHRwczov L2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYyMzc0OQota2VybmVsOgotaHR0 cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzY5MzcKLQotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAzOTUuaHRtbAotU3Vi amVjdDogUmU6IFtwYXRjaF0gRml4IGdjb3JlIHdyaXRlciBmb3IgLVdsLC16LHJlbHJvIChQUiBj b3JlZmlsZXMvMTE4MDQpCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTA5LTIyICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlGaXggZ2NvcmUgd3JpdGVyIGZv ciAtV2wsLXoscmVscm8uCi0JKiBnZGIuYmFzZS9nY29yZS1yZWxyby5leHA6IE5ldyBmaWxlLgot CSogZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbWFpbi5jOiBOZXcgZmlsZS4KLQkqIGdkYi5iYXNlL2dj b3JlLXJlbHJvLWxpYi5jOiBOZXcgZmlsZS4KLQotLS0tIC4vZ2RiL2djb3JlLmMJMjAxMC0wOS0y MyAyMDoxNDo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9nY29yZS5jCTIwMTAtMDktMjMg MjA6Mzc6NTYuMDAwMDAwMDAwICswMjAwCi1AQCAtNDAxLDYgKzQwMSw3IEBAIGdjb3JlX2NyZWF0 ZV9jYWxsYmFjayAoQ09SRV9BRERSIHZhZGRyLCAKLSAKLSAgIGlmICh3cml0ZSA9PSAwICYmICFz b2xpYl9rZWVwX2RhdGFfaW5fY29yZSAodmFkZHIsIHNpemUpKQotICAgICB7Ci0rI2lmIDAgLyog aHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzY5MzcgICovCi0g ICAgICAgLyogU2VlIGlmIHRoaXMgcmVnaW9uIG9mIG1lbW9yeSBsaWVzIGluc2lkZSBhIGtub3du IGZpbGUgb24gZGlzay4KLSAJIElmIHNvLCB3ZSBjYW4gYXZvaWQgY29weWluZyBpdHMgY29udGVu dHMgYnkgY2xlYXJpbmcgU0VDX0xPQUQuICAqLwotICAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlOwotQEAgLTQzMyw2ICs0MzQsNyBAQCBnY29yZV9jcmVhdGVfY2FsbGJhY2sgKENPUkVfQURE UiB2YWRkciwgCi0gCX0KLSAKLSAgICAga2VlcDoKLSsjZW5kaWYKLSAgICAgICBmbGFncyB8PSBT RUNfUkVBRE9OTFk7Ci0gICAgIH0KLSAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbGliLmMKLUBAIC0wLDAgKzEsMjEgQEAKLSsvKiBDb3B5 cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIGZp bGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot KyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uICAqLwotKwotK3ZvaWQKLStsaWIgKHZvaWQpCi0rewotK30KLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2NvcmUtcmVscm8tbWFpbi5jCi1AQCAtMCwwICsx LDI1IEBACi0rLyogQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r ICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLStleHRlcm4gdm9pZCBsaWIgKHZvaWQpOwotKwot K2ludAotK21haW4gKHZvaWQpCi0rewotKyAgbGliICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZS1yZWxyby5leHAK LUBAIC0wLDAgKzEsODAgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiB7W3Nr aXBfc2hsaWJfdGVzdHNdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAi Z2NvcmUtcmVscm8iCi0rc2V0IHNyY21haW5maWxlICR7dGVzdGZpbGV9LW1haW4uYwotK3NldCBz cmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5jCi0rc2V0IGxpYmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfS1saWIuc28KLStzZXQgb2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9LW1haW4ubwotK3NldCBleGVjdXRhYmxlICR7dGVzdGZpbGV9LW1haW4KLStz ZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0KLStzZXQgZ2NvcmVm aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfS5nY29yZQotKwotK2lmIHsgW2dk Yl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSAke2xpYmZp bGV9IHtkZWJ1Z31dICE9ICIiCi0rICAgICB8fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY21haW5maWxlfSAke29iamZpbGV9IG9iamVjdCB7ZGVidWd9XSAhPSAiIiB9IHsK LSsgICAgIHVudGVzdGVkICR7dGVzdGZpbGV9LmV4cAotKyAgICAgcmV0dXJuIC0xCi0rfQotK3Nl dCBvcHRzIFtsaXN0IGRlYnVnIHNobGliPSR7bGliZmlsZX0gYWRkaXRpb25hbF9mbGFncz0tV2ws LXoscmVscm9dCi0raWYgeyBbZ2RiX2NvbXBpbGUgJHtvYmpmaWxlfSAke2JpbmZpbGV9IGV4ZWN1 dGFibGUgJG9wdHNdICE9ICIiIH0gewotKyAgICAgdW5zdXBwb3J0ZWQgIi1XbCwteixyZWxybyBj b21waWxhdGlvbiBmYWlsZWQiCi0rICAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFy dCAkZXhlY3V0YWJsZQotK2dkYl9sb2FkX3NobGlicyAkbGliZmlsZQotKwotKyMgRG9lcyB0aGlz IGdkYiBzdXBwb3J0IGdjb3JlPwotK3NldCB0ZXN0ICJoZWxwIGdjb3JlIgotK2dkYl90ZXN0X211 bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJVbmRlZmluZWQgY29tbWFuZDogLmdjb3Jl LipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkjIGdjb3JlIGNvbW1hbmQgbm90IHN1cHBvcnRlZCAt LSBub3RoaW5nIHRvIHRlc3QgaGVyZS4KLSsJdW5zdXBwb3J0ZWQgImdkYiBkb2VzIG5vdCBzdXBw b3J0IGdjb3JlIG9uIHRoaXMgdGFyZ2V0IgotKwlyZXR1cm4gLTE7Ci0rICAgIH0KLSsgICAgLXJl ICJTYXZlIGEgY29yZSBmaWxlIC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAot KyAgICB9Ci0rfQotKwotK2lmIHsgIVtydW50byBsaWJdIH0gdGhlbiB7Ci0rICAgIHJldHVybiAt MQotK30KLSsKLStzZXQgZXNjYXBlZGZpbGVuYW1lIFtzdHJpbmdfdG9fcmVnZXhwICR7Z2NvcmVm aWxlfV0KLSsKLStzZXQgdGVzdCAic2F2ZSBhIGNvcmVmaWxlIgotK2dkYl90ZXN0X211bHRpcGxl ICJnY29yZSAke2djb3JlZmlsZX0iICR0ZXN0IHsKLSsgICAgLXJlICJTYXZlZCBjb3JlZmlsZSAk e2VzY2FwZWRmaWxlbmFtZX1cclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rICAg IH0KLSsgICAgLXJlICJDYW4ndCBjcmVhdGUgYSBjb3JlZmlsZVxyXG4kZ2RiX3Byb21wdCAkIiB7 Ci0rCXVuc3VwcG9ydGVkICR0ZXN0Ci0rCXJldHVybiAtMQotKyAgICB9Ci0rfQotKwotKyMgTm93 IHJlc3RhcnQgZ2RiIGFuZCBsb2FkIHRoZSBjb3JlZmlsZS4KLSsKLStjbGVhbl9yZXN0YXJ0ICRl eGVjdXRhYmxlCi0rZ2RiX2xvYWRfc2hsaWJzICRsaWJmaWxlCi0rCi0rZ2RiX3Rlc3QgImNvcmUg JHtnY29yZWZpbGV9IiAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qIiAicmUtbG9hZCBnZW5lcmF0 ZWQgY29yZWZpbGUiCi0rCi0rZ2RiX3Rlc3QgImZyYW1lIiAiIzAgXFteXHJcblxdKiBsaWIgLioi ICJsaWJyYXJ5IGdvdCBsb2FkZWQiCgpkaWZmIC0tZ2l0IGEvZ2RiLWNoZWNrLXR5cGUucGF0Y2gg Yi9nZGItY2hlY2stdHlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI0 NDA2NS4uMDAwMDAwMAotLS0gYS9nZGItY2hlY2stdHlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDEwMDIgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w OC9tc2cwMDEzMy5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA4LzE3IDAzOjA2 OjEwCTEuMTQ1OTkKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA4LzE3IDE3OjM2OjU2CTEu MTQ2MDAKLSMjIC0xLDMgKzEsNDggQEAKLSsyMDEyLTA4LTE3ICBLZWl0aCBTZWl0eiAgPGtlaXRo c0ByZWRoYXQuY29tPgotKwotKwlQUiBjKysvMTMzNTYKLSsJKiBnZGJ0eXBlcy5jIChzdHJpY3Rf dHlwZV9jaGVja2luZyk6IE5ldyB2YXJpYWJsZS4KLSsJKHNob3dfc3RyaWN0X3R5cGVfY2hlY2tp bmcpOiBOZXcgZnVuY3Rpb24uCi0rCShyYW5rX29uZV90eXBlKTogUmV0dXJuIE5TX1BPSU5URVJf SU5URUdFUl9DT05WRVJTSU9OX0JBRE5FU1MKLSsJaWYgc3RyaWN0IHR5cGUgY2hlY2tpbmcgaXMg ZGlzYWJsZWQuCi0rCShfaW5pdGlhbGl6ZV9nZGJ0eXBlcyk6IEFkZCAiY2hlY2sgdHlwZSIgc3Vi Y29tbWFuZC4KLSsJKiBnZGJ0eXBlcy5oIChOU19JTlRFR0VSX1BPSU5URVJfQ09OVkVSU0lPTl9C QURORVNTKTogTmV3IHN0cnVjdC4KLSsKLSsyMDEyLTA4LTE3ICBLZWl0aCBTZWl0eiAgPGtlaXRo c0ByZWRoYXQuY29tPgotKwotKwkqIGxhbmd1YWdlLmggKHR5cGVfbW9kZSk6IFJlbW92ZS4KLSsJ KHR5cGVfY2hlY2spOiBSZW1vdmUuCi0rCShzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbik6IFJlbW92ZSBs YV90eXBlX2NoZWNrLgotKwkoU1RSSUNUX1RZUEUpOiBSZW1vdmUgdW51c2VkIG1hY3JvLgotKwko dHlwZV9lcnJvcik6IFJlbW92ZS4KLSsJKiBsYW5ndWFnZS5jIChzZXRfdHlwZV9yYW5nZV9jYXNl KTogUmVuYW1lZCB0byAuLi4KLSsJKHNldF9yYW5nZV9jYXNlKTogLi4uIHRoaXMuICBVcGRhdGUg YWxsIGNhbGxlcnMuCi0rCVJlbW92ZSB0eXBlX21vZGUvdHlwZV9jaGVjay4KLSsJKHR5cGVfbW9k ZSk6IFJlbW92ZS4KLSsJKHR5cGVfY2hlY2spOiBSZW1vdmUuCi0rCShzaG93X3R5cGVfY29tbWFu ZCk6IFJlbW92ZS4KLSsJKHNldF90eXBlX2NvbW1hbmQpOiBSZW1vdmUuCi0rCShsYW5ndWFnZV9p bmZvKTogUmVtb3ZlIHR5cGUgY2hlY2tpbmcgb3V0cHV0LgotKwkodHlwZV9lcnJvcik6IFJlbW92 ZSB1bnVzZWQgZnVuY3Rpb24uCi0rCShyYW5nZV9lcnJvcik6IFVwZGF0ZSBjb21tZW50LgotKwko dW5rbm93bl9sYW5ndWFnZV9kZWZuKTogUmVtb3ZlIGxhX3R5cGVfY2hlY2suCi0rCShhdXRvX2xh bmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKGxvY2FsX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lz ZS4KLSsJKF9pbml0aWFsaXplX2xhbmd1YWdlKTogUmVtb3ZlICJjaGVjayB0eXBlIiBzdWJjb21t YW5kLgotKwkqIGFkYS1sYW5nLmMgKGFkYV9sYW5ndWFnZV9kZWZuKTogUmVtb3ZlIGxhX3R5cGVf Y2hlY2suCi0rCSogYy1sYW5nLmMgKGNfbGFuZ3VhZ2VfZGVmbik6IExpa2V3aXNlLgotKwkoY3Bs dXNfbGFuZ3VhZ2VfZGVmbik6IExpa2V3aXNlLgotKwkoYXNtX2xhbmd1YWdlX2RlZm4pOiBMaWtl d2lzZS4KLSsJKG1pbmltYWxfbGFuZ3VhZ2VfZGVmbik6IExpa2V3aXNlLgotKwkqIGQtbGFuZy5j IChkX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKiBmLWxhbmcuYyAoZl9sYW5ndWFnZV9k ZWZuKTogTGlrZXdpc2UuCi0rCSogZ28tbGFuZy5jIChnb19sYW5ndWFnZV9kZWZuKTogTGlrZXdp c2UuCi0rCSoganYtbGFuZy5jIChqYXZhX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKiBt Mi1sYW5nLmMgKG0yX2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKiBvYmpjLWxhbmcuYyAo b2JqY19sYW5ndWFnZV9kZWZuKTogTGlrZXdpc2UuCi0rCSogb3BlbmNsLWxhbmcuYyAob3BlbmNs X2xhbmd1YWdlX2RlZm4pOiBMaWtld2lzZS4KLSsJKiBwLWxhbmcuYyAocGFzY2FsX2xhbmd1YWdl X2RlZm4pOiBMaWtld2lzZS4KLSsKLSAyMDEyLTA4LTE2ICBNaWtlIEZyeXNpbmdlciAgPHZhcGll ckBnZW50b28ub3JnPgotIAotIAkqIGluZmNtZC5jIChfaW5pdGlhbGl6ZV9pbmZjbWQpOiBSZW1v dmUgdHJhaWxpbmcgKSBpbiBuZXh0IGhlbHAgdGV4dC4KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2dkYnR5cGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3Jp Zy9nZGIvZ2RidHlwZXMuYwkyMDEyLTA5LTI3IDIyOjE0OjIxLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuYwkyMDEyLTA5LTI3IDIyOjE1OjA1Ljgw NzcwNjEwNSArMDIwMAotQEAgLTYyLDYgKzYyLDcgQEAgY29uc3Qgc3RydWN0IHJhbmsgQkFTRV9D T05WRVJTSU9OX0JBRE5FUwotIGNvbnN0IHN0cnVjdCByYW5rIFJFRkVSRU5DRV9DT05WRVJTSU9O X0JBRE5FU1MgPSB7MiwwfTsKLSBjb25zdCBzdHJ1Y3QgcmFuayBOVUxMX1BPSU5URVJfQ09OVkVS U0lPTl9CQURORVNTID0gezIsMH07Ci0gY29uc3Qgc3RydWN0IHJhbmsgTlNfUE9JTlRFUl9DT05W RVJTSU9OX0JBRE5FU1MgPSB7MTAsMH07Ci0rY29uc3Qgc3RydWN0IHJhbmsgTlNfSU5URUdFUl9Q T0lOVEVSX0NPTlZFUlNJT05fQkFETkVTUyA9IHszLDB9OwotIAotIC8qIEZsb2F0Zm9ybWF0IHBh aXJzLiAgKi8KLSBjb25zdCBzdHJ1Y3QgZmxvYXRmb3JtYXQgKmZsb2F0Zm9ybWF0c19pZWVlX2hh bGZbQkZEX0VORElBTl9VTktOT1dOXSA9IHsKLUBAIC0xMzQsNiArMTM1LDE5IEBAIHNob3dfb3Zl cmxvYWRfZGVidWcgKHN0cnVjdCB1aV9maWxlICpmaWwKLSAJCSAgICB2YWx1ZSk7Ci0gfQotIAot Ky8qIEEgZmxhZyB0byBlbmFibGUgc3RyaWN0IHR5cGUgY2hlY2tpbmcuICAqLwotKwotK3N0YXRp YyBpbnQgc3RyaWN0X3R5cGVfY2hlY2tpbmcgPSAxOwotKwotKy8qIEEgZnVuY3Rpb24gdG8gc2hv dyB0aGUgc3RhdHVzIG9mIHN0cmljdCB0eXBlIGNoZWNraW5nLiAgKi8KLSsKLStzdGF0aWMgdm9p ZAotK3Nob3dfc3RyaWN0X3R5cGVfY2hlY2tpbmcgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQg ZnJvbV90dHksCi0rCQkJICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIg KnZhbHVlKQotK3sKLSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIlN0cmljdCB0eXBlIGNo ZWNraW5nIGlzICVzLlxuIiksIHZhbHVlKTsKLSt9Ci0rCi0gc3RydWN0IGV4dHJhCi0gICB7Ci0g ICAgIGNoYXIgc3RyWzEyOF07Ci1AQCAtMjY0OSwxMiArMjY2MywyMCBAQCByYW5rX29uZV90eXBl IChzdHJ1Y3QgdHlwZSAqcGFybSwgc3RydWN0Ci0gCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci0gCSAg cmV0dXJuIHJhbmtfb25lX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHBhcm0pLCBhcmcsIE5VTEwp OwotIAljYXNlIFRZUEVfQ09ERV9JTlQ6Ci0tCSAgaWYgKHZhbHVlICE9IE5VTEwgJiYgVFlQRV9D T0RFICh2YWx1ZV90eXBlICh2YWx1ZSkpID09IFRZUEVfQ09ERV9JTlQKLS0JICAgICAgJiYgdmFs dWVfYXNfbG9uZyAodmFsdWUpID09IDApCi0rCSAgaWYgKHZhbHVlICE9IE5VTEwgJiYgVFlQRV9D T0RFICh2YWx1ZV90eXBlICh2YWx1ZSkpID09IFRZUEVfQ09ERV9JTlQpCi0gCSAgICB7Ci0tCSAg ICAgIC8qIE51bGwgcG9pbnRlciBjb252ZXJzaW9uOiBhbGxvdyBpdCB0byBiZSBjYXN0IHRvIGEg cG9pbnRlci4KLS0JCSBbNC4xMC4xIG9mIEMrKyBzdGFuZGFyZCBkcmFmdCBuMzI5MF0gICovCi0t CSAgICAgIHJldHVybiBOVUxMX1BPSU5URVJfQ09OVkVSU0lPTl9CQURORVNTOwotKwkgICAgICBp ZiAodmFsdWVfYXNfbG9uZyAodmFsdWUpID09IDApCi0rCQl7Ci0rCQkgIC8qIE51bGwgcG9pbnRl ciBjb252ZXJzaW9uOiBhbGxvdyBpdCB0byBiZSBjYXN0IHRvIGEgcG9pbnRlci4KLSsJCSAgICAg WzQuMTAuMSBvZiBDKysgc3RhbmRhcmQgZHJhZnQgbjMyOTBdICAqLwotKwkJICByZXR1cm4gTlVM TF9QT0lOVEVSX0NPTlZFUlNJT05fQkFETkVTUzsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewot KwkJICAvKiBJZiB0eXBlIGNoZWNraW5nIGlzIGRpc2FibGVkLCBhbGxvdyB0aGUgY29udmVyc2lv bi4gICovCi0rCQkgIGlmICghc3RyaWN0X3R5cGVfY2hlY2tpbmcpCi0rCQkgICAgcmV0dXJuIE5T X0lOVEVHRVJfUE9JTlRFUl9DT05WRVJTSU9OX0JBRE5FU1M7Ci0rCQl9Ci0gCSAgICB9Ci0gCSAg LyogZmFsbCB0aHJvdWdoICAqLwotIAljYXNlIFRZUEVfQ09ERV9FTlVNOgotQEAgLTQ2MzcsNCAr NDY1OSwxMyBAQCBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKLSAJCQkgICBOVUxMLCBOVUxM LAotIAkJCSAgIHNob3dfb3BhcXVlX3R5cGVfcmVzb2x1dGlvbiwKLSAJCQkgICAmc2V0bGlzdCwg JnNob3dsaXN0KTsKLSsKLSsgIC8qIEFkZCBhbiBvcHRpb24gdG8gcGVybWl0IG5vbi1zdHJpY3Qg dHlwZSBjaGVja2luZy4gICovCi0rICBhZGRfc2V0c2hvd19ib29sZWFuX2NtZCAoInR5cGUiLCBj bGFzc19zdXBwb3J0LAotKwkJCSAgICZzdHJpY3RfdHlwZV9jaGVja2luZywKLSsJCQkgICBfKCJT ZXQgc3RyaWN0IHR5cGUgY2hlY2tpbmcuIiksCi0rCQkJICAgXygiU2hvdyBzdHJpY3QgdHlwZSBj aGVja2luZy4iKSwKLSsJCQkgICBOVUxMLCBOVUxMLAotKwkJCSAgIHNob3dfc3RyaWN0X3R5cGVf Y2hlY2tpbmcsCi0rCQkJICAgJnNldGNoZWNrbGlzdCwgJnNob3djaGVja2xpc3QpOwotIH0KLUlu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dkYnR5cGVzLmgKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEyLTA5LTI3IDIyOjE0OjIz LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuaAky MDEyLTA5LTI3IDIyOjE0OjQwLjY5MDY5NTA1OSArMDIwMAotQEAgLTE3NDUsNiArMTc0NSw5IEBA IGV4dGVybiBjb25zdCBzdHJ1Y3QgcmFuayBOVUxMX1BPSU5URVJfQ08KLSAvKiBDb252ZXJ0aW5n IGEgcG9pbnRlciB0byBhbiBpbnQgaXMgdXN1YWxseSBPSy4gICovCi0gZXh0ZXJuIGNvbnN0IHN0 cnVjdCByYW5rIE5TX1BPSU5URVJfQ09OVkVSU0lPTl9CQURORVNTOwotIAotKy8qIEJhZG5lc3Mg b2YgY29udmVydGluZyBhIChub24temVybykgaW50ZWdlciBjb25zdGFudAotKyAgIHRvIGEgcG9p bnRlci4gICovCi0rZXh0ZXJuIGNvbnN0IHN0cnVjdCByYW5rIE5TX0lOVEVHRVJfUE9JTlRFUl9D T05WRVJTSU9OX0JBRE5FU1M7Ci0gCi0gZXh0ZXJuIHN0cnVjdCByYW5rIHN1bV9yYW5rcyAoc3Ry dWN0IHJhbmsgYSwgc3RydWN0IHJhbmsgYik7Ci0gZXh0ZXJuIGludCBjb21wYXJlX3JhbmtzIChz dHJ1Y3QgcmFuayBhLCBzdHJ1Y3QgcmFuayBiKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2xhbmd1YWdlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9n ZGIvbGFuZ3VhZ2UuaAkyMDEyLTA2LTEzIDE3OjQ3OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvbGFuZ3VhZ2UuaAkyMDEyLTA5LTI3IDIyOjE0OjQwLjgzNDY5 NTEyMSArMDIwMAotQEAgLTU1LDI3ICs1NSw2IEBAIGV4dGVybiBlbnVtIHJhbmdlX2NoZWNrCi0g ICB9Ci0gcmFuZ2VfY2hlY2s7Ci0gCi0tLyogdHlwZV9tb2RlID09Ci0tICAgdHlwZV9tb2RlX2F1 dG86ICAgdHlwZV9jaGVjayBzZXQgYXV0b21hdGljYWxseSB0byBkZWZhdWx0IG9mIGxhbmd1YWdl LgotLSAgIHR5cGVfbW9kZV9tYW51YWw6IHR5cGVfY2hlY2sgc2V0IG1hbnVhbGx5IGJ5IHVzZXIu ICAqLwotLQotLWV4dGVybiBlbnVtIHR5cGVfbW9kZQotLSAgewotLSAgICB0eXBlX21vZGVfYXV0 bywgdHlwZV9tb2RlX21hbnVhbAotLSAgfQotLXR5cGVfbW9kZTsKLS0KLS0vKiB0eXBlX2NoZWNr ID09Ci0tICAgdHlwZV9jaGVja19vbjogICAgVHlwZXMgYXJlIGNoZWNrZWQgaW4gR0RCIGV4cHJl c3Npb25zLCBwcm9kdWNpbmcgZXJyb3JzLgotLSAgIHR5cGVfY2hlY2tfd2FybjogIFR5cGVzIGFy ZSBjaGVja2VkLCBwcm9kdWNpbmcgd2FybmluZ3MuCi0tICAgdHlwZV9jaGVja19vZmY6ICAgVHlw ZXMgYXJlIG5vdCBjaGVja2VkIGluIEdEQiBleHByZXNzaW9ucy4gICovCi0tCi0tZXh0ZXJuIGVu dW0gdHlwZV9jaGVjawotLSAgewotLSAgICB0eXBlX2NoZWNrX29mZiwgdHlwZV9jaGVja193YXJu LCB0eXBlX2NoZWNrX29uCi0tICB9Ci0tdHlwZV9jaGVjazsKLS0KLSAvKiBjYXNlX21vZGUgPT0K LSAgICBjYXNlX21vZGVfYXV0bzogICBjYXNlX3NlbnNpdGl2aXR5IHNldCB1cG9uIHNlbGVjdGlv biBvZiBzY29wZS4KLSAgICBjYXNlX21vZGVfbWFudWFsOiBjYXNlX3NlbnNpdGl2aXR5IHNldCBv bmx5IGJ5IHVzZXIuICAqLwotQEAgLTE2MiwxMCArMTQxLDYgQEAgc3RydWN0IGxhbmd1YWdlX2Rl Zm4KLSAKLSAgICAgZW51bSByYW5nZV9jaGVjayBsYV9yYW5nZV9jaGVjazsKLSAKLS0gICAgLyog RGVmYXVsdCB0eXBlIGNoZWNraW5nLiAgKi8KLS0KLS0gICAgZW51bSB0eXBlX2NoZWNrIGxhX3R5 cGVfY2hlY2s7Ci0tCi0gICAgIC8qIERlZmF1bHQgY2FzZSBzZW5zaXRpdml0eS4gICovCi0gICAg IGVudW0gY2FzZV9zZW5zaXRpdml0eSBsYV9jYXNlX3NlbnNpdGl2aXR5OwotIAotQEAgLTQyMiw5 ICszOTcsNiBAQCBzdHJ1Y3QgdHlwZSAqbGFuZ3VhZ2VfbG9va3VwX3ByaW1pdGl2ZV90Ci0gLyog VGhlc2UgbWFjcm9zIGRlZmluZSB0aGUgYmVoYXZpb3VyIG9mIHRoZSBleHByZXNzaW9uIAotICAg IGV2YWx1YXRvci4gICovCi0gCi0tLyogU2hvdWxkIHdlIHN0cmljdGx5IHR5cGUgY2hlY2sgZXhw cmVzc2lvbnM/ICAqLwotLSNkZWZpbmUgU1RSSUNUX1RZUEUgKHR5cGVfY2hlY2sgIT0gdHlwZV9j aGVja19vZmYpCi0tCi0gLyogU2hvdWxkIHdlIHJhbmdlIGNoZWNrIHZhbHVlcyBhZ2FpbnN0IHRo ZSBkb21haW4gb2YgdGhlaXIgdHlwZT8gICovCi0gI2RlZmluZSBSQU5HRV9DSEVDSyAocmFuZ2Vf Y2hlY2sgIT0gcmFuZ2VfY2hlY2tfb2ZmKQotIAotQEAgLTQ5Niw4ICs0NjgsNiBAQCBleHRlcm4g dm9pZCBiaW5vcF90eXBlX2NoZWNrIChzdHJ1Y3QgdmFsCi0gCi0gLyogRXJyb3IgbWVzc2FnZXMg Ki8KLSAKLS1leHRlcm4gdm9pZCB0eXBlX2Vycm9yIChjb25zdCBjaGFyICosIC4uLikgQVRUUklC VVRFX1BSSU5URiAoMSwgMik7Ci0tCi0gZXh0ZXJuIHZvaWQgcmFuZ2VfZXJyb3IgKGNvbnN0IGNo YXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgxLCAyKTsKLSAKLSAvKiBEYXRhOiAgRG9lcyB0 aGlzIHZhbHVlIHJlcHJlc2VudCAidHJ1dGgiIHRvIHRoZSBjdXJyZW50IGxhbmd1YWdlPyAgKi8K LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xhbmd1YWdlLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbGFuZ3VhZ2UuYwkyMDEyLTAzLTAyIDIwOjI5 OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbGFuZ3VhZ2Uu YwkyMDEyLTA5LTI3IDIyOjE0OjQwLjkyMjY5NTE2MiArMDIwMAotQEAgLTU1LDcgKzU1LDcgQEAg c3RhdGljIHZvaWQgc2hvd19jaGVjayAoY2hhciAqLCBpbnQpOwotIAotIHN0YXRpYyB2b2lkIHNl dF9jaGVjayAoY2hhciAqLCBpbnQpOwotIAotLXN0YXRpYyB2b2lkIHNldF90eXBlX3JhbmdlX2Nh c2UgKHZvaWQpOwotK3N0YXRpYyB2b2lkIHNldF9yYW5nZV9jYXNlICh2b2lkKTsKLSAKLSBzdGF0 aWMgdm9pZCB1bmtfbGFuZ19lbWl0X2NoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJ CQkJc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHF1b3Rlcik7Ci1AQCAtODEsOCArODEsNiBA QCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gdW5rbm93Ci0gCi0gZW51bSByYW5n ZV9tb2RlIHJhbmdlX21vZGUgPSByYW5nZV9tb2RlX2F1dG87Ci0gZW51bSByYW5nZV9jaGVjayBy YW5nZV9jaGVjayA9IHJhbmdlX2NoZWNrX29mZjsKLS1lbnVtIHR5cGVfbW9kZSB0eXBlX21vZGUg PSB0eXBlX21vZGVfYXV0bzsKLS1lbnVtIHR5cGVfY2hlY2sgdHlwZV9jaGVjayA9IHR5cGVfY2hl Y2tfb2ZmOwotIGVudW0gY2FzZV9tb2RlIGNhc2VfbW9kZSA9IGNhc2VfbW9kZV9hdXRvOwotIGVu dW0gY2FzZV9zZW5zaXRpdml0eSBjYXNlX3NlbnNpdGl2aXR5ID0gY2FzZV9zZW5zaXRpdmVfb247 Ci0gCi1AQCAtMTc0LDcgKzE3Miw3IEBAIHNldF9sYW5ndWFnZV9jb21tYW5kIChjaGFyICppZ25v cmUsIGludAotIAkgICAgICAvKiBFbnRlciBtYW51YWwgbW9kZS4gIFNldCB0aGUgc3BlY2lmaWVk IGxhbmd1YWdlLiAgKi8KLSAJICAgICAgbGFuZ3VhZ2VfbW9kZSA9IGxhbmd1YWdlX21vZGVfbWFu dWFsOwotIAkgICAgICBjdXJyZW50X2xhbmd1YWdlID0gbGFuZ3VhZ2VzW2ldOwotLQkgICAgICBz ZXRfdHlwZV9yYW5nZV9jYXNlICgpOwotKwkgICAgICBzZXRfcmFuZ2VfY2FzZSAoKTsKLSAJICAg ICAgZXhwZWN0ZWRfbGFuZ3VhZ2UgPSBjdXJyZW50X2xhbmd1YWdlOwotIAkgICAgICByZXR1cm47 Ci0gCSAgICB9Ci1AQCAtMTg2LDc5ICsxODQsNiBAQCBzZXRfbGFuZ3VhZ2VfY29tbWFuZCAoY2hh ciAqaWdub3JlLCBpbnQKLSAJCSAgbGFuZ3VhZ2UpOwotIH0KLSAKLS0vKiBTaG93IGNvbW1hbmQu ICBEaXNwbGF5IGEgd2FybmluZyBpZiB0aGUgdHlwZSBzZXR0aW5nIGRvZXMKLS0gICBub3QgbWF0 Y2ggdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuICAqLwotLXN0YXRpYyB2b2lkCi0tc2hvd190eXBlX2Nv bW1hbmQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCi0tCQkgICBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi0tewotLSAgaWYgKHR5cGVf bW9kZSA9PSB0eXBlX21vZGVfYXV0bykKLS0gICAgewotLSAgICAgIGNoYXIgKnRtcCA9IE5VTEw7 Ci0tCi0tICAgICAgc3dpdGNoICh0eXBlX2NoZWNrKQotLQl7Ci0tCWNhc2UgdHlwZV9jaGVja19v bjoKLS0JICB0bXAgPSAib24iOwotLQkgIGJyZWFrOwotLQljYXNlIHR5cGVfY2hlY2tfb2ZmOgot LQkgIHRtcCA9ICJvZmYiOwotLQkgIGJyZWFrOwotLQljYXNlIHR5cGVfY2hlY2tfd2FybjoKLS0J ICB0bXAgPSAid2FybiI7Ci0tCSAgYnJlYWs7Ci0tCWRlZmF1bHQ6Ci0tCSAgaW50ZXJuYWxfZXJy b3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLS0JCQkgICJVbnJlY29nbml6ZWQgdHlwZSBjaGVjayBz ZXR0aW5nLiIpOwotLQl9Ci0tCi0tICAgICAgZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZG91dCwK LS0JCQlfKCJUeXBlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5ICVzXCIuXG4iKSwKLS0J CQl0bXApOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRv dXQsIF8oIlR5cGUgY2hlY2tpbmcgaXMgXCIlc1wiLlxuIiksCi0tCQkgICAgICB2YWx1ZSk7Ci0t Ci0tICAgaWYgKHR5cGVfY2hlY2sgIT0gY3VycmVudF9sYW5ndWFnZS0+bGFfdHlwZV9jaGVjaykK LS0gICAgd2FybmluZyAoXygidGhlIGN1cnJlbnQgdHlwZSBjaGVjayBzZXR0aW5nIgotLQkgICAg ICAgIiBkb2VzIG5vdCBtYXRjaCB0aGUgbGFuZ3VhZ2UuXG4iKSk7Ci0tfQotLQotLS8qIFNldCBj b21tYW5kLiAgQ2hhbmdlIHRoZSBzZXR0aW5nIGZvciB0eXBlIGNoZWNraW5nLiAgKi8KLS1zdGF0 aWMgdm9pZAotLXNldF90eXBlX2NvbW1hbmQgKGNoYXIgKmlnbm9yZSwgaW50IGZyb21fdHR5LCBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYykKLS17Ci0tICBpZiAoc3RyY21wICh0eXBlLCAib24i KSA9PSAwKQotLSAgICB7Ci0tICAgICAgdHlwZV9jaGVjayA9IHR5cGVfY2hlY2tfb247Ci0tICAg ICAgdHlwZV9tb2RlID0gdHlwZV9tb2RlX21hbnVhbDsKLS0gICAgfQotLSAgZWxzZSBpZiAoc3Ry Y21wICh0eXBlLCAid2FybiIpID09IDApCi0tICAgIHsKLS0gICAgICB0eXBlX2NoZWNrID0gdHlw ZV9jaGVja193YXJuOwotLSAgICAgIHR5cGVfbW9kZSA9IHR5cGVfbW9kZV9tYW51YWw7Ci0tICAg IH0KLS0gIGVsc2UgaWYgKHN0cmNtcCAodHlwZSwgIm9mZiIpID09IDApCi0tICAgIHsKLS0gICAg ICB0eXBlX2NoZWNrID0gdHlwZV9jaGVja19vZmY7Ci0tICAgICAgdHlwZV9tb2RlID0gdHlwZV9t b2RlX21hbnVhbDsKLS0gICAgfQotLSAgZWxzZSBpZiAoc3RyY21wICh0eXBlLCAiYXV0byIpID09 IDApCi0tICAgIHsKLS0gICAgICB0eXBlX21vZGUgPSB0eXBlX21vZGVfYXV0bzsKLS0gICAgICBz ZXRfdHlwZV9yYW5nZV9jYXNlICgpOwotLSAgICAgIHJldHVybjsKLS0gICAgfQotLSAgZWxzZQot LSAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAotLQkJICAgIF8oIlVucmVj b2duaXplZCB0eXBlIGNoZWNrIHNldHRpbmc6IFwiJXNcIiIpLCB0eXBlKTsKLS0KLS0gIGlmICh0 eXBlX2NoZWNrICE9IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX3R5cGVfY2hlY2spCi0tICAgIHdhcm5p bmcgKF8oInRoZSBjdXJyZW50IHR5cGUgY2hlY2sgc2V0dGluZyIKLS0JICAgICAgICIgZG9lcyBu b3QgbWF0Y2ggdGhlIGxhbmd1YWdlLlxuIikpOwotLX0KLS0KLSAvKiBTaG93IGNvbW1hbmQuICBE aXNwbGF5IGEgd2FybmluZyBpZiB0aGUgcmFuZ2Ugc2V0dGluZyBkb2VzCi0gICAgbm90IG1hdGNo IHRoZSBjdXJyZW50IGxhbmd1YWdlLiAgKi8KLSBzdGF0aWMgdm9pZAotQEAgLTMyMCw3ICsyNDUs NyBAQCBzZXRfcmFuZ2VfY29tbWFuZCAoY2hhciAqaWdub3JlLCBpbnQgZnJvCi0gICBlbHNlIGlm IChzdHJjbXAgKHJhbmdlLCAiYXV0byIpID09IDApCi0gICAgIHsKLSAgICAgICByYW5nZV9tb2Rl ID0gcmFuZ2VfbW9kZV9hdXRvOwotLSAgICAgIHNldF90eXBlX3JhbmdlX2Nhc2UgKCk7Ci0rICAg ICAgc2V0X3JhbmdlX2Nhc2UgKCk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gICBlbHNlCi1A QCAtMzg5LDcgKzMxNCw3IEBAIHNldF9jYXNlX2NvbW1hbmQgKGNoYXIgKmlnbm9yZSwgaW50IGZy b20KLSAgICBlbHNlIGlmIChzdHJjbXAgKGNhc2Vfc2Vuc2l0aXZlLCAiYXV0byIpID09IDApCi0g ICAgICB7Ci0gICAgICAgIGNhc2VfbW9kZSA9IGNhc2VfbW9kZV9hdXRvOwotLSAgICAgICBzZXRf dHlwZV9yYW5nZV9jYXNlICgpOwotKyAgICAgICBzZXRfcmFuZ2VfY2FzZSAoKTsKLSAgICAgICAg cmV0dXJuOwotICAgICAgfQotICAgIGVsc2UKLUBAIC00MDksMTQgKzMzNCwxMSBAQCBzZXRfY2Fz ZV9jb21tYW5kIChjaGFyICppZ25vcmUsIGludCBmcm9tCi0gICAgSWYgU0hPVyBpcyBub24temVy bywgdGhlbiBwcmludCBvdXQgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UsCi0gICAgdHlwZSBhbmQgcmFu Z2UgY2hlY2tpbmcgc3RhdHVzLiAgKi8KLSBzdGF0aWMgdm9pZAotLXNldF90eXBlX3JhbmdlX2Nh c2UgKHZvaWQpCi0rc2V0X3JhbmdlX2Nhc2UgKHZvaWQpCi0gewotICAgaWYgKHJhbmdlX21vZGUg PT0gcmFuZ2VfbW9kZV9hdXRvKQotICAgICByYW5nZV9jaGVjayA9IGN1cnJlbnRfbGFuZ3VhZ2Ut PmxhX3JhbmdlX2NoZWNrOwotIAotLSAgaWYgKHR5cGVfbW9kZSA9PSB0eXBlX21vZGVfYXV0bykK LS0gICAgdHlwZV9jaGVjayA9IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX3R5cGVfY2hlY2s7Ci0tCi0g ICBpZiAoY2FzZV9tb2RlID09IGNhc2VfbW9kZV9hdXRvKQotICAgICBjYXNlX3NlbnNpdGl2aXR5 ID0gY3VycmVudF9sYW5ndWFnZS0+bGFfY2FzZV9zZW5zaXRpdml0eTsKLSB9Ci1AQCAtNDM3LDcg KzM1OSw3IEBAIHNldF9sYW5ndWFnZSAoZW51bSBsYW5ndWFnZSBsYW5nKQotICAgICAgIGlmIChs YW5ndWFnZXNbaV0tPmxhX2xhbmd1YWdlID09IGxhbmcpCi0gCXsKLSAJICBjdXJyZW50X2xhbmd1 YWdlID0gbGFuZ3VhZ2VzW2ldOwotLQkgIHNldF90eXBlX3JhbmdlX2Nhc2UgKCk7Ci0rCSAgc2V0 X3JhbmdlX2Nhc2UgKCk7Ci0gCSAgYnJlYWs7Ci0gCX0KLSAgICAgfQotQEAgLTQ2MSw4ICszODMs NiBAQCBsYW5ndWFnZV9pbmZvIChpbnQgcXVpZXRseSkKLSAKLSAgIGlmICghcXVpZXRseSkKLSAg ICAgewotLSAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJUeXBlIGNoZWNraW5nOiAgICAgJXNc biIpLCB0eXBlKTsKLS0gICAgICBzaG93X3R5cGVfY29tbWFuZCAoTlVMTCwgMSwgTlVMTCwgTlVM TCk7Ci0gICAgICAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oIlJhbmdlIGNoZWNraW5nOiAgICAlc1xu IiksIHJhbmdlKTsKLSAgICAgICBzaG93X3JhbmdlX2NvbW1hbmQgKE5VTEwsIDEsIE5VTEwsIE5V TEwpOwotICAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJDYXNlIHNlbnNpdGl2aXR5OiAgJXNc biIpLCBjYXNlX3NlbnNpdGl2ZSk7Ci1AQCAtNTAwLDM4ICs0MjAsMTEgQEAgdmFsdWVfdHJ1ZSAo c3RydWN0IHZhbHVlICp2YWwpCi0gICAgZXJyb3IgbWVzc2FnZXMgdGhhdCBvY2N1ciBkdXJpbmcg dHlwZS0gYW5kIHJhbmdlLQotICAgIGNoZWNraW5nLiAgKi8KLSAKLS0vKiBUaGVzZSBhcmUgY2Fs bGVkIHdoZW4gYSBsYW5ndWFnZSBmYWlscyBhIHR5cGUtIG9yIHJhbmdlLWNoZWNrLiAgVGhlCi0r LyogVGhpcyBpcyBjYWxsZWQgd2hlbiBhIGxhbmd1YWdlIGZhaWxzIGEgcmFuZ2UtY2hlY2suICBU aGUKLSAgICBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBwcmludGYoKS1zdHlsZSBmb3JtYXQg c3RyaW5nLCBhbmQgdGhlCi0tICAgcmVzdCBvZiB0aGUgYXJndW1lbnRzIHNob3VsZCBiZSBpdHMg YXJndW1lbnRzLiAgSWYKLS0gICBbdHlwZXxyYW5nZV1fY2hlY2sgaXMgW3R5cGV8cmFuZ2VdX2No ZWNrX29uLCBhbiBlcnJvciBpcyBwcmludGVkOwotLSAgIGlmIFt0eXBlfHJhbmdlXV9jaGVja193 YXJuLCBhIHdhcm5pbmc7IG90aGVyd2lzZSBqdXN0IHRoZQotLSAgIG1lc3NhZ2UuICAqLwotLQot LXZvaWQKLS10eXBlX2Vycm9yIChjb25zdCBjaGFyICpzdHJpbmcsLi4uKQotLXsKLS0gIHZhX2xp c3QgYXJnczsKLS0KLS0gIHZhX3N0YXJ0IChhcmdzLCBzdHJpbmcpOwotLSAgc3dpdGNoICh0eXBl X2NoZWNrKQotLSAgICB7Ci0tICAgIGNhc2UgdHlwZV9jaGVja193YXJuOgotLSAgICAgIHZ3YXJu aW5nIChzdHJpbmcsIGFyZ3MpOwotLSAgICAgIGJyZWFrOwotLSAgICBjYXNlIHR5cGVfY2hlY2tf b246Ci0tICAgICAgdmVycm9yIChzdHJpbmcsIGFyZ3MpOwotLSAgICAgIGJyZWFrOwotLSAgICBj YXNlIHR5cGVfY2hlY2tfb2ZmOgotLSAgICAgIC8qIEZJWE1FOiBjYWduZXkvMjAwMi0wMS0zMDog U2hvdWxkIHRoaXMgZnVuY3Rpb24gcHJpbnQgYW55dGhpbmcKLS0gICAgICAgICB3aGVuIHR5cGUg ZXJyb3IgaXMgb2ZmPyAgKi8KLS0gICAgICB2ZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZGVyciwg c3RyaW5nLCBhcmdzKTsKLS0gICAgICBmcHJpbnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLCAiXG4i KTsKLS0gICAgICBicmVhazsKLS0gICAgZGVmYXVsdDoKLS0gICAgICBpbnRlcm5hbF9lcnJvciAo X19GSUxFX18sIF9fTElORV9fLCBfKCJiYWQgc3dpdGNoIikpOwotLSAgICB9Ci0tICB2YV9lbmQg KGFyZ3MpOwotLX0KLSsgICByZXN0IG9mIHRoZSBhcmd1bWVudHMgc2hvdWxkIGJlIGl0cyBhcmd1 bWVudHMuICBJZiByYW5nZV9jaGVjayBpcwotKyAgIHJhbmdlX2NoZWNrX29uLCBhbiBlcnJvciBp cyBwcmludGVkOyAgaWYgcmFuZ2VfY2hlY2tfd2FybiwgYSB3YXJuaW5nOwotKyAgIG90aGVyd2lz ZSBqdXN0IHRoZSBtZXNzYWdlLiAgKi8KLSAKLSB2b2lkCi0gcmFuZ2VfZXJyb3IgKGNvbnN0IGNo YXIgKnN0cmluZywuLi4pCi1AQCAtOTAyLDcgKzc5NSw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFn ZV9kZWZuIHVua25vd25fbGFuZ3UKLSAgICJ1bmtub3duIiwKLSAgIGxhbmd1YWdlX3Vua25vd24s Ci0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2NoZWNrX29mZiwKLSAgIGNhc2Vfc2Vuc2l0 aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9fZXhwYW5zaW9uX25vLAotQEAg LTk0Niw3ICs4MzgsNiBAQCBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBhdXRvX2xhbmd1YWdl Ci0gICAiYXV0byIsCi0gICBsYW5ndWFnZV9hdXRvLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAg dHlwZV9jaGVja19vZmYsCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpv ciwKLSAgIG1hY3JvX2V4cGFuc2lvbl9ubywKLUBAIC05ODgsNyArODc5LDYgQEAgY29uc3Qgc3Ry dWN0IGxhbmd1YWdlX2RlZm4gbG9jYWxfbGFuZ3VhZwotICAgImxvY2FsIiwKLSAgIGxhbmd1YWdl X2F1dG8sCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2NoZWNrX29mZiwKLSAgIGNhc2Vf c2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9fZXhwYW5zaW9uX25v LAotQEAgLTExMzUsMTMgKzEwMjUsNiBAQCBfaW5pdGlhbGl6ZV9sYW5ndWFnZSAodm9pZCkKLSAg IGFkZF9hbGlhc19jbWQgKCJjIiwgImNoZWNrIiwgbm9fY2xhc3MsIDEsICZzaG93bGlzdCk7Ci0g ICBhZGRfYWxpYXNfY21kICgiY2giLCAiY2hlY2siLCBub19jbGFzcywgMSwgJnNob3dsaXN0KTsK LSAKLS0gIGFkZF9zZXRzaG93X2VudW1fY21kICgidHlwZSIsIGNsYXNzX3N1cHBvcnQsIHR5cGVf b3JfcmFuZ2VfbmFtZXMsICZ0eXBlLAotLQkJCV8oIlNldCB0eXBlIGNoZWNraW5nLiAgKG9uL3dh cm4vb2ZmL2F1dG8pIiksCi0tCQkJXygiU2hvdyB0eXBlIGNoZWNraW5nLiAgKG9uL3dhcm4vb2Zm L2F1dG8pIiksCi0tCQkJTlVMTCwgc2V0X3R5cGVfY29tbWFuZCwKLS0JCQlzaG93X3R5cGVfY29t bWFuZCwKLS0JCQkmc2V0Y2hlY2tsaXN0LCAmc2hvd2NoZWNrbGlzdCk7Ci0tCi0gICBhZGRfc2V0 c2hvd19lbnVtX2NtZCAoInJhbmdlIiwgY2xhc3Nfc3VwcG9ydCwgdHlwZV9vcl9yYW5nZV9uYW1l cywKLSAJCQkmcmFuZ2UsCi0gCQkJXygiU2V0IHJhbmdlIGNoZWNraW5nLiAgKG9uL3dhcm4vb2Zm L2F1dG8pIiksCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxMi0w OS0yNyAyMjoxNDoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2FkYS1sYW5nLmMJMjAxMi0wOS0yNyAyMjoxNDo0MS4xMTI2OTUyNDUgKzAyMDAKLUBAIC0xMjUw Myw3ICsxMjUwMyw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIGFkYV9sYW5ndWFnZV8K LSAgICJhZGEiLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIExhbmd1YWdlIG5hbWUgKi8KLSAg IGxhbmd1YWdlX2FkYSwKLSAgIHJhbmdlX2NoZWNrX29mZiwKLS0gIHR5cGVfY2hlY2tfb2ZmLAot ICAgY2FzZV9zZW5zaXRpdmVfb24sICAgICAgICAgICAgLyogWWVzLCBBZGEgaXMgY2FzZS1pbnNl bnNpdGl2ZSwgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0J3Mg bm90IHF1aXRlIHdoYXQgdGhpcyBtZWFucy4gICovCi0gICBhcnJheV9yb3dfbWFqb3IsCi1JbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9jLWxhbmcuYwkyMDEyLTA3LTA2IDA3OjQ2OjA0LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYy1sYW5nLmMJMjAxMi0wOS0y NyAyMjoxNDo0MS4xNDE2OTUyNTcgKzAyMDAKLUBAIC04MzEsNyArODMxLDYgQEAgY29uc3Qgc3Ry dWN0IGxhbmd1YWdlX2RlZm4gY19sYW5ndWFnZV9kZQotICAgImMiLAkJCQkvKiBMYW5ndWFnZSBu YW1lICovCi0gICBsYW5ndWFnZV9jLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAgdHlwZV9jaGVj a19vZmYsCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAgIG1h Y3JvX2V4cGFuc2lvbl9jLAotQEAgLTk1NSw3ICs5NTQsNiBAQCBjb25zdCBzdHJ1Y3QgbGFuZ3Vh Z2VfZGVmbiBjcGx1c19sYW5ndWFnCi0gICAiYysrIiwJCQkvKiBMYW5ndWFnZSBuYW1lICovCi0g ICBsYW5ndWFnZV9jcGx1cywKLSAgIHJhbmdlX2NoZWNrX29mZiwKLS0gIHR5cGVfY2hlY2tfb2Zm LAotICAgY2FzZV9zZW5zaXRpdmVfb24sCi0gICBhcnJheV9yb3dfbWFqb3IsCi0gICBtYWNyb19l eHBhbnNpb25fYywKLUBAIC05OTcsNyArOTk1LDYgQEAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2Rl Zm4gYXNtX2xhbmd1YWdlXwotICAgImFzbSIsCQkJLyogTGFuZ3VhZ2UgbmFtZSAqLwotICAgbGFu Z3VhZ2VfYXNtLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAgdHlwZV9jaGVja19vZmYsCi0gICBj YXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAgIG1hY3JvX2V4cGFuc2lv bl9jLAotQEAgLTEwNDQsNyArMTA0MSw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIG1p bmltYWxfbGFuZ3UKLSAgICJtaW5pbWFsIiwJCQkvKiBMYW5ndWFnZSBuYW1lICovCi0gICBsYW5n dWFnZV9taW5pbWFsLAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAgdHlwZV9jaGVja19vZmYsCi0g ICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAgIG1hY3JvX2V4cGFu c2lvbl9jLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZC1sYW5nLmMKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZC1sYW5nLmMJMjAxMi0wMy0xNSAx NTowNjoyMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2QtbGFu Zy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTQzNjk1MjU3ICswMjAwCi1AQCAtMjQwLDcgKzI0MCw2 IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiBkX2xhbmcKLSAgICJkIiwKLSAg IGxhbmd1YWdlX2QsCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2NoZWNrX29mZiwKLSAg IGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9fZXhwYW5z aW9uX2MsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9mLWxhbmcuYwkyMDEyLTA5LTI3IDIy OjE0OjIzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi1sYW5n LmMJMjAxMi0wOS0yNyAyMjoxNDo0MS4xNTE2OTUyNjAgKzAyMDAKLUBAIC0yNjAsNyArMjYwLDYg QEAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gZl9sYW5ndWFnZV9kZQotICAgImZvcnRyYW4i LAotICAgbGFuZ3VhZ2VfZm9ydHJhbiwKLSAgIHJhbmdlX2NoZWNrX29uLAotLSAgdHlwZV9jaGVj a19vbiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29mZiwKLSAgIGFycmF5X2NvbHVtbl9tYWpvciwKLSAg IG1hY3JvX2V4cGFuc2lvbl9ubywKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dvLWxh bmcuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9nby1sYW5n LmMJMjAxMi0wNC0yNSAxNjowNzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2dvLWxhbmcuYwkyMDEyLTA5LTI3IDIyOjE0OjQxLjE1MjY5NTI2MSArMDIwMAot QEAgLTU2Miw3ICs1NjIsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gZ29f bGFuCi0gICAiZ28iLAotICAgbGFuZ3VhZ2VfZ28sCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0 eXBlX2NoZWNrX29mZiwKLSAgIGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9y LAotICAgbWFjcm9fZXhwYW5zaW9uX25vLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv anYtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2p2 LWxhbmcuYwkyMDEyLTA5LTI3IDIyOjE0OjIzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTU0Njk1MjYzICsw MjAwCi1AQCAtMTE2OSw3ICsxMTY5LDYgQEAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gamF2 YV9sYW5ndWFnZQotICAgImphdmEiLAkJCS8qIExhbmd1YWdlIG5hbWUgKi8KLSAgIGxhbmd1YWdl X2phdmEsCi0gICByYW5nZV9jaGVja19vZmYsCi0tICB0eXBlX2NoZWNrX29mZiwKLSAgIGNhc2Vf c2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9fZXhwYW5zaW9uX25v LAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTItbGFuZy5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL20yLWxhbmcuYwkyMDEyLTAzLTAyIDIwOjI5 OjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTItbGFuZy5j CTIwMTItMDktMjcgMjI6MTQ6NDEuMTYxNjk1MjY2ICswMjAwCi1AQCAtMzcwLDcgKzM3MCw2IEBA IGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIG0yX2xhbmd1YWdlX2QKLSAgICJtb2R1bGEtMiIs Ci0gICBsYW5ndWFnZV9tMiwKLSAgIHJhbmdlX2NoZWNrX29uLAotLSAgdHlwZV9jaGVja19vbiwK LSAgIGNhc2Vfc2Vuc2l0aXZlX29uLAotICAgYXJyYXlfcm93X21ham9yLAotICAgbWFjcm9fZXhw YW5zaW9uX25vLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvb2JqYy1sYW5nLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvb2JqYy1sYW5nLmMJMjAx Mi0wMy0wMiAyMDoyOTowMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL29iamMtbGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTYzNjk1MjY4ICswMjAwCi1AQCAt NTA5LDcgKzUwOSw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIG9iamNfbGFuZ3VhZ2UK LSAgICJvYmplY3RpdmUtYyIsCQkvKiBMYW5ndWFnZSBuYW1lICovCi0gICBsYW5ndWFnZV9vYmpj LAotICAgcmFuZ2VfY2hlY2tfb2ZmLAotLSAgdHlwZV9jaGVja19vZmYsCi0gICBjYXNlX3NlbnNp dGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAgIG1hY3JvX2V4cGFuc2lvbl9jLAotSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvb3BlbmNsLWxhbmcuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIwMTItMDMtMDIgMjA6 Mjk6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9vcGVuY2wt bGFuZy5jCTIwMTItMDktMjcgMjI6MTQ6NDEuMTY1Njk1MjY4ICswMjAwCi1AQCAtOTkzLDcgKzk5 Myw2IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIG9wZW5jbF9sYW5ndWEKLSAgICJvcGVu Y2wiLAkJCS8qIExhbmd1YWdlIG5hbWUgKi8KLSAgIGxhbmd1YWdlX29wZW5jbCwKLSAgIHJhbmdl X2NoZWNrX29mZiwKLS0gIHR5cGVfY2hlY2tfb2ZmLAotICAgY2FzZV9zZW5zaXRpdmVfb24sCi0g ICBhcnJheV9yb3dfbWFqb3IsCi0gICBtYWNyb19leHBhbnNpb25fYywKLUluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3AtbGFuZy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIw OTI2Lm9yaWcvZ2RiL3AtbGFuZy5jCTIwMTItMDMtMDIgMjA6Mjk6MDEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuYwkyMDEyLTA5LTI3IDIyOjE0OjQx LjE3MDY5NTI3MCArMDIwMAotQEAgLTQyOSw3ICs0MjksNiBAQCBjb25zdCBzdHJ1Y3QgbGFuZ3Vh Z2VfZGVmbiBwYXNjYWxfbGFuZ3VhCi0gICAicGFzY2FsIiwJCQkvKiBMYW5ndWFnZSBuYW1lICov Ci0gICBsYW5ndWFnZV9wYXNjYWwsCi0gICByYW5nZV9jaGVja19vbiwKLS0gIHR5cGVfY2hlY2tf b24sCi0gICBjYXNlX3NlbnNpdGl2ZV9vbiwKLSAgIGFycmF5X3Jvd19tYWpvciwKLSAgIG1hY3Jv X2V4cGFuc2lvbl9ubywKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2RvYy9nZGIudGV4 aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMi0wOS0yNyAyMjoxNDoyMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEyLTA5LTI3IDIyOjE0OjQxLjE4ODY5 NTI3OSArMDIwMAotQEAgLTEyNjQ4LDI5ICsxMjY0OCwxOCBAQCBMaXN0IGFsbCB0aGUgZmlsZW5h bWUgZXh0ZW5zaW9ucyBhbmQgdGhlCi0gQG5vZGUgQ2hlY2tzCi0gQHNlY3Rpb24gVHlwZSBhbmQg UmFuZ2UgQ2hlY2tpbmcKLSAKLS1AcXVvdGF0aW9uCi0tQGVtcGh7V2FybmluZzp9IEluIHRoaXMg cmVsZWFzZSwgdGhlIEB2YWx1ZXtHREJOfSBjb21tYW5kcyBmb3IgdHlwZSBhbmQgcmFuZ2UKLS1j aGVja2luZyBhcmUgaW5jbHVkZWQsIGJ1dCB0aGV5IGRvIG5vdCB5ZXQgaGF2ZSBhbnkgZWZmZWN0 LiAgVGhpcwotLXNlY3Rpb24gZG9jdW1lbnRzIHRoZSBpbnRlbmRlZCBmYWNpbGl0aWVzLgotLUBl bmQgcXVvdGF0aW9uCi0tQGMgRklYTUUgcmVtb3ZlIHdhcm5pbmcgd2hlbiB0eXBlL3JhbmdlIGNv ZGUgYWRkZWQKLS0KLSBTb21lIGxhbmd1YWdlcyBhcmUgZGVzaWduZWQgdG8gZ3VhcmQgeW91IGFn YWluc3QgbWFraW5nIHNlZW1pbmdseSBjb21tb24KLSBlcnJvcnMgdGhyb3VnaCBhIHNlcmllcyBv ZiBjb21waWxlLSBhbmQgcnVuLXRpbWUgY2hlY2tzLiAgVGhlc2UgaW5jbHVkZQotLWNoZWNraW5n IHRoZSB0eXBlIG9mIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgYW5kIG9wZXJhdG9ycywgYW5kIG1h a2luZwotK2NoZWNraW5nIHRoZSB0eXBlIG9mIGFyZ3VtZW50cyB0byBmdW5jdGlvbnMgYW5kIG9w ZXJhdG9ycyBhbmQgbWFraW5nCi0gc3VyZSBtYXRoZW1hdGljYWwgb3ZlcmZsb3dzIGFyZSBjYXVn aHQgYXQgcnVuIHRpbWUuICBDaGVja3Mgc3VjaCBhcwotIHRoZXNlIGhlbHAgdG8gZW5zdXJlIGEg cHJvZ3JhbSdzIGNvcnJlY3RuZXNzIG9uY2UgaXQgaGFzIGJlZW4gY29tcGlsZWQKLS1ieSBlbGlt aW5hdGluZyB0eXBlIG1pc21hdGNoZXMsIGFuZCBwcm92aWRpbmcgYWN0aXZlIGNoZWNrcyBmb3Ig cmFuZ2UKLStieSBlbGltaW5hdGluZyB0eXBlIG1pc21hdGNoZXMgYW5kIHByb3ZpZGluZyBhY3Rp dmUgY2hlY2tzIGZvciByYW5nZQotIGVycm9ycyB3aGVuIHlvdXIgcHJvZ3JhbSBpcyBydW5uaW5n LgotIAotLUB2YWx1ZXtHREJOfSBjYW4gY2hlY2sgZm9yIGNvbmRpdGlvbnMgbGlrZSB0aGUgYWJv dmUgaWYgeW91IHdpc2guCi0tQWx0aG91Z2ggQHZhbHVle0dEQk59IGRvZXMgbm90IGNoZWNrIHRo ZSBzdGF0ZW1lbnRzIGluIHlvdXIgcHJvZ3JhbSwKLS1pdCBjYW4gY2hlY2sgZXhwcmVzc2lvbnMg ZW50ZXJlZCBkaXJlY3RseSBpbnRvIEB2YWx1ZXtHREJOfSBmb3IKLS1ldmFsdWF0aW9uIHZpYSB0 aGUgQGNvZGV7cHJpbnR9IGNvbW1hbmQsIGZvciBleGFtcGxlLiAgQXMgd2l0aCB0aGUKLS13b3Jr aW5nIGxhbmd1YWdlLCBAdmFsdWV7R0RCTn0gY2FuIGFsc28gZGVjaWRlIHdoZXRoZXIgb3Igbm90 IHRvIGNoZWNrCi0tYXV0b21hdGljYWxseSBiYXNlZCBvbiB5b3VyIHByb2dyYW0ncyBzb3VyY2Ug bGFuZ3VhZ2UuCi0tQHhyZWZ7U3VwcG9ydGVkIExhbmd1YWdlcywgLFN1cHBvcnRlZCBMYW5ndWFn ZXN9LCBmb3IgdGhlIGRlZmF1bHQKLS1zZXR0aW5ncyBvZiBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLgot K0J5IGRlZmF1bHQgQHZhbHVle0dEQk59IGNoZWNrcyBmb3IgdGhlc2UgZXJyb3JzIGFjY29yZGlu ZyB0byB0aGUKLStydWxlcyBvZiB0aGUgY3VycmVudCBzb3VyY2UgbGFuZ3VhZ2UuICBBbHRob3Vn aCBAdmFsdWV7R0RCTn0gZG9lcyBub3QgY2hlY2sKLSt0aGUgc3RhdGVtZW50cyBpbiB5b3VyIHBy b2dyYW0sIGl0IGNhbiBjaGVjayBleHByZXNzaW9ucyBlbnRlcmVkIGRpcmVjdGx5Ci0raW50byBA dmFsdWV7R0RCTn0gZm9yIGV2YWx1YXRpb24gdmlhIHRoZSBAY29kZXtwcmludH0gY29tbWFuZCwg Zm9yIGV4YW1wbGUuCi0gCi0gQG1lbnUKLSAqIFR5cGUgQ2hlY2tpbmc6OiAgICAgICAgICAgICAg IEFuIG92ZXJ2aWV3IG9mIHR5cGUgY2hlY2tpbmcKLUBAIC0xMjY4Miw2OSArMTI2NzEsNTEgQEAg c2V0dGluZ3Mgb2Ygc3VwcG9ydGVkIGxhbmd1YWdlcy4KLSBAbm9kZSBUeXBlIENoZWNraW5nCi0g QHN1YnNlY3Rpb24gQW4gT3ZlcnZpZXcgb2YgVHlwZSBDaGVja2luZwotIAotLVNvbWUgbGFuZ3Vh Z2VzLCBzdWNoIGFzIE1vZHVsYS0yLCBhcmUgc3Ryb25nbHkgdHlwZWQsIG1lYW5pbmcgdGhhdCB0 aGUKLStTb21lIGxhbmd1YWdlcywgc3VjaCBhcyBDIGFuZCBDQHR7Kyt9LCBhcmUgc3Ryb25nbHkg dHlwZWQsIG1lYW5pbmcgdGhhdCB0aGUKLSBhcmd1bWVudHMgdG8gb3BlcmF0b3JzIGFuZCBmdW5j dGlvbnMgaGF2ZSB0byBiZSBvZiB0aGUgY29ycmVjdCB0eXBlLAotIG90aGVyd2lzZSBhbiBlcnJv ciBvY2N1cnMuICBUaGVzZSBjaGVja3MgcHJldmVudCB0eXBlIG1pc21hdGNoCi0gZXJyb3JzIGZy b20gZXZlciBjYXVzaW5nIGFueSBydW4tdGltZSBwcm9ibGVtcy4gIEZvciBleGFtcGxlLAotIAot IEBzbWFsbGV4YW1wbGUKLS0xICsgMiBAcmVzdWx0e30gMwotK2ludCBrbGFzczo6bXlfbWV0aG9k KGNoYXIgKmIpIEB7IHJldHVybiAgYiA/IDEgOiAyOyBAfQotKwotKyhAdmFsdWV7R0RCUH0pIHBy aW50IG9iai5teV9tZXRob2QgKDApCi0rJDEgPSAyCi0gQGV4ZGVudCBidXQKLS1AZXJyb3J7fSAx ICsgMi4zCi0rKEB2YWx1ZXtHREJQfSkgcHJpbnQgb2JqLm15X21ldGhvZCAoMHgxMjM0KQotK0Nh bm5vdCByZXNvbHZlIG1ldGhvZCBrbGFzczo6bXlfbWV0aG9kIHRvIGFueSBvdmVybG9hZGVkIGlu c3RhbmNlCi0gQGVuZCBzbWFsbGV4YW1wbGUKLSAKLS1UaGUgc2Vjb25kIGV4YW1wbGUgZmFpbHMg YmVjYXVzZSB0aGUgQGNvZGV7Q0FSRElOQUx9IDEgaXMgbm90Ci0tdHlwZS1jb21wYXRpYmxlIHdp dGggdGhlIEBjb2Rle1JFQUx9IDIuMy4KLStUaGUgc2Vjb25kIGV4YW1wbGUgZmFpbHMgYmVjYXVz ZSBpbiBDQHR7Kyt9IHRoZSBpbnRlZ2VyIGNvbnN0YW50Ci0rQHNhbXB7MHgxMjM0fSBpcyBub3Qg dHlwZS1jb21wYXRpYmxlIHdpdGggdGhlIHBvaW50ZXIgcGFyYW1ldGVyIHR5cGUuCi0gCi0tRm9y IHRoZSBleHByZXNzaW9ucyB5b3UgdXNlIGluIEB2YWx1ZXtHREJOfSBjb21tYW5kcywgeW91IGNh biB0ZWxsIHRoZQotLUB2YWx1ZXtHREJOfSB0eXBlIGNoZWNrZXIgdG8gc2tpcCBjaGVja2luZzsK LStGb3IgdGhlIGV4cHJlc3Npb25zIHlvdSB1c2UgaW4gQHZhbHVle0dEQk59IGNvbW1hbmRzLCB5 b3UgY2FuIHRlbGwKLStAdmFsdWV7R0RCTn0gdG8gbm90IGVuZm9yY2Ugc3RyaWN0IHR5cGUgY2hl Y2tpbmcgb3IKLSB0byB0cmVhdCBhbnkgbWlzbWF0Y2hlcyBhcyBlcnJvcnMgYW5kIGFiYW5kb24g dGhlIGV4cHJlc3Npb247Ci0tb3IgdG8gb25seSBpc3N1ZSB3YXJuaW5ncyB3aGVuIHR5cGUgbWlz bWF0Y2hlcyBvY2N1ciwKLS1idXQgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gYW55d2F5LiAgV2hl biB5b3UgY2hvb3NlIHRoZSBsYXN0IG9mCi0tdGhlc2UsIEB2YWx1ZXtHREJOfSBldmFsdWF0ZXMg ZXhwcmVzc2lvbnMgbGlrZSB0aGUgc2Vjb25kIGV4YW1wbGUgYWJvdmUsIGJ1dAotLWFsc28gaXNz dWVzIGEgd2FybmluZy4KLStXaGVuIHR5cGUgY2hlY2tpbmcgaXMgZGlzYWJsZWQsIEB2YWx1ZXtH REJOfSBzdWNjZXNzZnVsbHkgZXZhbHVhdGVzCi0rZXhwcmVzc2lvbnMgbGlrZSB0aGUgc2Vjb25k IGV4YW1wbGUgYWJvdmUuCi0gCi0tRXZlbiBpZiB5b3UgdHVybiB0eXBlIGNoZWNraW5nIG9mZiwg dGhlcmUgbWF5IGJlIG90aGVyIHJlYXNvbnMKLStFdmVuIGlmIHR5cGUgY2hlY2tpbmcgaXMgb2Zm LCB0aGVyZSBtYXkgYmUgb3RoZXIgcmVhc29ucwotIHJlbGF0ZWQgdG8gdHlwZSB0aGF0IHByZXZl bnQgQHZhbHVle0dEQk59IGZyb20gZXZhbHVhdGluZyBhbiBleHByZXNzaW9uLgotIEZvciBpbnN0 YW5jZSwgQHZhbHVle0dEQk59IGRvZXMgbm90IGtub3cgaG93IHRvIGFkZCBhbiBAY29kZXtpbnR9 IGFuZAotIGEgQGNvZGV7c3RydWN0IGZvb30uICBUaGVzZSBwYXJ0aWN1bGFyIHR5cGUgZXJyb3Jz IGhhdmUgbm90aGluZyB0byBkbwotLXdpdGggdGhlIGxhbmd1YWdlIGluIHVzZSwgYW5kIHVzdWFs bHkgYXJpc2UgZnJvbSBleHByZXNzaW9ucywgc3VjaCBhcwotLXRoZSBvbmUgZGVzY3JpYmVkIGFi b3ZlLCB3aGljaCBtYWtlIGxpdHRsZSBzZW5zZSB0byBldmFsdWF0ZSBhbnl3YXkuCi0tCi0tRWFj aCBsYW5ndWFnZSBkZWZpbmVzIHRvIHdoYXQgZGVncmVlIGl0IGlzIHN0cmljdCBhYm91dCB0eXBl LiAgRm9yCi0taW5zdGFuY2UsIGJvdGggTW9kdWxhLTIgYW5kIEMgcmVxdWlyZSB0aGUgYXJndW1l bnRzIHRvIGFyaXRobWV0aWNhbAotLW9wZXJhdG9ycyB0byBiZSBudW1iZXJzLiAgSW4gQywgZW51 bWVyYXRlZCB0eXBlcyBhbmQgcG9pbnRlcnMgY2FuIGJlCi0tcmVwcmVzZW50ZWQgYXMgbnVtYmVy cywgc28gdGhhdCB0aGV5IGFyZSB2YWxpZCBhcmd1bWVudHMgdG8gbWF0aGVtYXRpY2FsCi0tb3Bl cmF0b3JzLiAgQHhyZWZ7U3VwcG9ydGVkIExhbmd1YWdlcywgLFN1cHBvcnRlZCBMYW5ndWFnZXN9 LCBmb3IgZnVydGhlcgotLWRldGFpbHMgb24gc3BlY2lmaWMgbGFuZ3VhZ2VzLgotK3dpdGggdGhl IGxhbmd1YWdlIGluIHVzZSBhbmQgdXN1YWxseSBhcmlzZSBmcm9tIGV4cHJlc3Npb25zIHdoaWNo IG1ha2UKLStsaXR0bGUgc2Vuc2UgdG8gZXZhbHVhdGUgYW55d2F5LgotIAotLUB2YWx1ZXtHREJO fSBwcm92aWRlcyBzb21lIGFkZGl0aW9uYWwgY29tbWFuZHMgZm9yIGNvbnRyb2xsaW5nIHRoZSB0 eXBlIGNoZWNrZXI6Ci0rQHZhbHVle0dEQk59IHByb3ZpZGVzIHNvbWUgYWRkaXRpb25hbCBjb21t YW5kcyBmb3IgY29udHJvbGxpbmcgdHlwZSBjaGVja2luZzoKLSAKLSBAa2luZGV4IHNldCBjaGVj ayB0eXBlCi0gQGtpbmRleCBzaG93IGNoZWNrIHR5cGUKLSBAdGFibGUgQGNvZGUKLS1AaXRlbSBz ZXQgY2hlY2sgdHlwZSBhdXRvCi0tU2V0IHR5cGUgY2hlY2tpbmcgb24gb3Igb2ZmIGJhc2VkIG9u IHRoZSBjdXJyZW50IHdvcmtpbmcgbGFuZ3VhZ2UuCi0tQHhyZWZ7U3VwcG9ydGVkIExhbmd1YWdl cywgLFN1cHBvcnRlZCBMYW5ndWFnZXN9LCBmb3IgdGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yCi0t ZWFjaCBsYW5ndWFnZS4KLS0KLSBAaXRlbSBzZXQgY2hlY2sgdHlwZSBvbgotIEBpdGVteCBzZXQg Y2hlY2sgdHlwZSBvZmYKLS1TZXQgdHlwZSBjaGVja2luZyBvbiBvciBvZmYsIG92ZXJyaWRpbmcg dGhlIGRlZmF1bHQgc2V0dGluZyBmb3IgdGhlCi0tY3VycmVudCB3b3JraW5nIGxhbmd1YWdlLiAg SXNzdWUgYSB3YXJuaW5nIGlmIHRoZSBzZXR0aW5nIGRvZXMgbm90Ci0tbWF0Y2ggdGhlIGxhbmd1 YWdlIGRlZmF1bHQuICBJZiBhbnkgdHlwZSBtaXNtYXRjaGVzIG9jY3VyIGluCi0rU2V0IHN0cmlj dCB0eXBlIGNoZWNraW5nIG9uIG9yIG9mZi4gIElmIGFueSB0eXBlIG1pc21hdGNoZXMgb2NjdXIg aW4KLSBldmFsdWF0aW5nIGFuIGV4cHJlc3Npb24gd2hpbGUgdHlwZSBjaGVja2luZyBpcyBvbiwg QHZhbHVle0dEQk59IHByaW50cyBhCi0gbWVzc2FnZSBhbmQgYWJvcnRzIGV2YWx1YXRpb24gb2Yg dGhlIGV4cHJlc3Npb24uCi0gCi0tQGl0ZW0gc2V0IGNoZWNrIHR5cGUgd2FybgotLUNhdXNlIHRo ZSB0eXBlIGNoZWNrZXIgdG8gaXNzdWUgd2FybmluZ3MsIGJ1dCB0byBhbHdheXMgYXR0ZW1wdCB0 bwotLWV2YWx1YXRlIHRoZSBleHByZXNzaW9uLiAgRXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbiBt YXkgc3RpbGwKLS1iZSBpbXBvc3NpYmxlIGZvciBvdGhlciByZWFzb25zLiAgRm9yIGV4YW1wbGUs IEB2YWx1ZXtHREJOfSBjYW5ub3QgYWRkCi0tbnVtYmVycyBhbmQgc3RydWN0dXJlcy4KLS0KLS1A aXRlbSBzaG93IHR5cGUKLS1TaG93IHRoZSBjdXJyZW50IHNldHRpbmcgb2YgdGhlIHR5cGUgY2hl Y2tlciwgYW5kIHdoZXRoZXIgb3Igbm90IEB2YWx1ZXtHREJOfQotLWlzIHNldHRpbmcgaXQgYXV0 b21hdGljYWxseS4KLStAaXRlbSBzaG93IGNoZWNrIHR5cGUKLStTaG93IHRoZSBjdXJyZW50IHNl dHRpbmcgb2YgdHlwZSBjaGVja2luZyBhbmQgd2hldGhlciBAdmFsdWV7R0RCTn0KLStpcyBlbmZv cmNpbmcgc3RyaWN0IHR5cGUgY2hlY2tpbmcgcnVsZXMuCi0gQGVuZCB0YWJsZQotIAotIEBjaW5k ZXggcmFuZ2UgY2hlY2tpbmcKLUBAIC0xMzE5NSw4ICsxMzE2Niw4IEBAIHNwZWNpZmljYXRpb24u Ci0gCi0gQGNpbmRleCBDIGFuZCBDQHR7Kyt9IGRlZmF1bHRzCi0gCi0tSWYgeW91IGFsbG93IEB2 YWx1ZXtHREJOfSB0byBzZXQgdHlwZSBhbmQgcmFuZ2UgY2hlY2tpbmcgYXV0b21hdGljYWxseSwg dGhleQotLWJvdGggZGVmYXVsdCB0byBAY29kZXtvZmZ9IHdoZW5ldmVyIHRoZSB3b3JraW5nIGxh bmd1YWdlIGNoYW5nZXMgdG8KLStJZiB5b3UgYWxsb3cgQHZhbHVle0dEQk59IHRvIHNldCByYW5n ZSBjaGVja2luZyBhdXRvbWF0aWNhbGx5LCBpdAotK2RlZmF1bHRzIHRvIEBjb2Rle29mZn0gd2hl bmV2ZXIgdGhlIHdvcmtpbmcgbGFuZ3VhZ2UgY2hhbmdlcyB0bwotIEMgb3IgQ0B0eysrfS4gIFRo aXMgaGFwcGVucyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgeW91IG9yIEB2YWx1ZXtHREJOfQotIHNl bGVjdHMgdGhlIHdvcmtpbmcgbGFuZ3VhZ2UuCi0gCi1AQCAtMTMyMDcsMzcgKzEzMTc4LDE1IEBA IHRoZXNlIGZpbGVzLCBpdCBzZXRzIHRoZSB3b3JraW5nIGxhbmd1YWcKLSBAeHJlZntBdXRvbWF0 aWNhbGx5LCAsSGF2aW5nIEB2YWx1ZXtHREJOfSBJbmZlciB0aGUgU291cmNlIExhbmd1YWdlfSwK LSBmb3IgZnVydGhlciBkZXRhaWxzLgotIAotLUBjIFR5cGUgY2hlY2tpbmcgaXMgKGEpIHByaW1h cmlseSBtb3RpdmF0ZWQgYnkgTW9kdWxhLTIsIGFuZCAoYikKLS1AYyB1bmltcGxlbWVudGVkLiAg SWYgKGIpIGNoYW5nZXMsIGl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gbGV0IHRoaXMgbm9kZQotLUBj IGFwcGVhciBldmVuIGlmIE1vZC0yIGRvZXMgbm90LCBidXQgbWVhbndoaWxlIGlnbm9yZSBpdC4g cm9sYW5kIDE2anVsOTMuCi0tCi0gQG5vZGUgQyBDaGVja3MKLSBAc3Vic3Vic2VjdGlvbiBDIGFu ZCBDQHR7Kyt9IFR5cGUgYW5kIFJhbmdlIENoZWNrcwotIAotIEBjaW5kZXggQyBhbmQgQ0B0eysr fSBjaGVja3MKLSAKLS1CeSBkZWZhdWx0LCB3aGVuIEB2YWx1ZXtHREJOfSBwYXJzZXMgQyBvciBD QHR7Kyt9IGV4cHJlc3Npb25zLCB0eXBlIGNoZWNraW5nCi0taXMgbm90IHVzZWQuICBIb3dldmVy LCBpZiB5b3UgdHVybiB0eXBlIGNoZWNraW5nIG9uLCBAdmFsdWV7R0RCTn0KLS1jb25zaWRlcnMg dHdvIHZhcmlhYmxlcyB0eXBlIGVxdWl2YWxlbnQgaWY6Ci0tCi0tQGl0ZW1pemUgQGJ1bGxldAot LUBpdGVtCi0tVGhlIHR3byB2YXJpYWJsZXMgYXJlIHN0cnVjdHVyZWQgYW5kIGhhdmUgdGhlIHNh bWUgc3RydWN0dXJlLCB1bmlvbiwgb3IKLS1lbnVtZXJhdGVkIHRhZy4KLS0KLS1AaXRlbQotLVRo ZSB0d28gdmFyaWFibGVzIGhhdmUgdGhlIHNhbWUgdHlwZSBuYW1lLCBvciB0eXBlcyB0aGF0IGhh dmUgYmVlbgotLWRlY2xhcmVkIGVxdWl2YWxlbnQgdGhyb3VnaCBAY29kZXt0eXBlZGVmfS4KLS0K LS1AaWdub3JlCi0tQGMgbGVhdmluZyB0aGlzIG91dCBiZWNhdXNlIG5laXRoZXIgSiBHaWxtb3Jl IG5vciBSIFBlc2NoIHVuZGVyc3RhbmQgaXQuCi0tQGMgRklYTUUtLWJlZXJzPwotLUBpdGVtCi0t VGhlIHR3byBAY29kZXtzdHJ1Y3R9LCBAY29kZXt1bmlvbn0sIG9yIEBjb2Rle2VudW19IHZhcmlh YmxlcyBhcmUKLS1kZWNsYXJlZCBpbiB0aGUgc2FtZSBkZWNsYXJhdGlvbi4gIChOb3RlOiB0aGlz IG1heSBub3QgYmUgdHJ1ZSBmb3IgYWxsIEMKLS1jb21waWxlcnMuKQotLUBlbmQgaWdub3JlCi0t QGVuZCBpdGVtaXplCi0rQnkgZGVmYXVsdCwgd2hlbiBAdmFsdWV7R0RCTn0gcGFyc2VzIEMgb3Ig Q0B0eysrfSBleHByZXNzaW9ucywgc3RyaWN0IHR5cGUKLStjaGVja2luZyBpcyB1c2VkLiAgSG93 ZXZlciwgaWYgeW91IHR1cm4gdHlwZSBjaGVja2luZyBvZmYsIEB2YWx1ZXtHREJOfQotK3dpbGwg YWxsb3cgY2VydGFpbiBub24tc3RhbmRhcmQgY29udmVyc2lvbnMsIHN1Y2ggYXMgcHJvbW90aW5n IGludGVnZXIKLStjb25zdGFudHMgdG8gcG9pbnRlcnMuCi0gCi0gUmFuZ2UgY2hlY2tpbmcsIGlm IHR1cm5lZCBvbiwgaXMgZG9uZSBvbiBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucy4gIEFycmF5Ci0g aW5kaWNlcyBhcmUgbm90IGNoZWNrZWQsIHNpbmNlIHRoZXkgYXJlIG9mdGVuIHVzZWQgdG8gaW5k ZXggYSBwb2ludGVyCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZGVmYXVsdC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwCTIwMTItMDQtMjcgMjI6NTI6MDYu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZGVmYXVsdC5leHAJMjAxMi0wOS0yNyAyMjoxNDo0MS4zMTI2OTUzMzMgKzAyMDAKLUBA IC00OTUsMTIgKzQ5NSwxMyBAQCBnZGJfdGVzdCAic2VjdGlvbiIgIk11c3Qgc3BlY2lmeSBzZWN0 aW9uCi0gZ2RiX3Rlc3QgInNldCBhbm5vdGF0ZSIgIkFyZ3VtZW50IHJlcXVpcmVkIC5pbnRlZ2Vy IHRvIHNldCBpdCB0by4qIiAic2V0IGFubm90YXRlIgotICN0ZXN0IHNldCBhcmdzCi0gZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJzZXQgYXJncyIgInNldCBhcmdzIgotLSN0ZXN0IHNldCBjaGVjayAiYyIg YWJicmV2aWF0aW9uCi0tZ2RiX3Rlc3QgInNldCBjIiAiXCJzZXQgY2hlY2tcIiBtdXN0IGJlIGZv bGxvd2VkIGJ5IHRoZSBuYW1lIG9mIGEgY2hlY2sgc3ViY29tbWFuZC4oXFteXHJcblxdKlxbXHJc blxdKStMaXN0IG9mIHNldCBjaGVjayBzdWJjb21tYW5kczooXFteXHJcblxdKlxbXHJcblxdKStz ZXQgY2hlY2sgcmFuZ2UgLS0gU2V0IHJhbmdlIGNoZWNraW5nKFxbXlxyXG5cXSpcW1xyXG5cXSkr c2V0IGNoZWNrIHR5cGUgLS0gU2V0IHR5cGUgY2hlY2tpbmcoXFteXHJcblxdKlxbXHJcblxdKStU eXBlIFwiaGVscCBzZXQgY2hlY2tcIiBmb2xsb3dlZCBieSBzZXQgY2hlY2sgc3ViY29tbWFuZCBu YW1lIGZvciBmdWxsIGRvY3VtZW50YXRpb24uKFxbXlxyXG5cXSpcW1xyXG5cXSkrQ29tbWFuZCBu YW1lIGFiYnJldmlhdGlvbnMgYXJlIGFsbG93ZWQgaWYgdW5hbWJpZ3VvdXMuIiAic2V0IGNoZWNr IFwiY1wiIGFiYnJldmlhdGlvbiIKLS0jdGVzdCBzZXQgY2hlY2sgImNoIiBhYmJyZXZpYXRpb24K LS1nZGJfdGVzdCAic2V0IGNoIiAiXCJzZXQgY2hlY2tcIiBtdXN0IGJlIGZvbGxvd2VkIGJ5IHRo ZSBuYW1lIG9mIGEgY2hlY2sgc3ViY29tbWFuZC4oXFteXHJcblxdKlxbXHJcblxdKStMaXN0IG9m IHNldCBjaGVjayBzdWJjb21tYW5kczooXFteXHJcblxdKlxbXHJcblxdKStzZXQgY2hlY2sgcmFu Z2UgLS0gU2V0IHJhbmdlIGNoZWNraW5nKFxbXlxyXG5cXSpcW1xyXG5cXSkrc2V0IGNoZWNrIHR5 cGUgLS0gU2V0IHR5cGUgY2hlY2tpbmcoXFteXHJcblxdKlxbXHJcblxdKStUeXBlIFwiaGVscCBz ZXQgY2hlY2tcIiBmb2xsb3dlZCBieSBzZXQgY2hlY2sgc3ViY29tbWFuZCBuYW1lIGZvciBmdWxs IGRvY3VtZW50YXRpb24uKFxbXlxyXG5cXSpcW1xyXG5cXSkrQ29tbWFuZCBuYW1lIGFiYnJldmlh dGlvbnMgYXJlIGFsbG93ZWQgaWYgdW5hbWJpZ3VvdXMuIiAic2V0IGNoZWNrIFwiY2hcIiBhYmJy ZXZpYXRpb24iCi0tI3Rlc3Qgc2V0IGNoZWNrCi0tZ2RiX3Rlc3QgInNldCBjaGVjayIgIlwic2V0 IGNoZWNrXCIgbXVzdCBiZSBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiBhIGNoZWNrIHN1YmNvbW1h bmQuKFxbXlxyXG5cXSpcW1xyXG5cXSkrTGlzdCBvZiBzZXQgY2hlY2sgc3ViY29tbWFuZHM6KFxb XlxyXG5cXSpcW1xyXG5cXSkrc2V0IGNoZWNrIHJhbmdlIC0tIFNldCByYW5nZSBjaGVja2luZyhc W15cclxuXF0qXFtcclxuXF0pK3NldCBjaGVjayB0eXBlIC0tIFNldCB0eXBlIGNoZWNraW5nKFxb XlxyXG5cXSpcW1xyXG5cXSkrVHlwZSBcImhlbHAgc2V0IGNoZWNrXCIgZm9sbG93ZWQgYnkgc2V0 IGNoZWNrIHN1YmNvbW1hbmQgbmFtZSBmb3IgZnVsbCBkb2N1bWVudGF0aW9uLihcW15cclxuXF0q XFtcclxuXF0pK0NvbW1hbmQgbmFtZSBhYmJyZXZpYXRpb25zIGFyZSBhbGxvd2VkIGlmIHVuYW1i aWd1b3VzLiIgInNldCBjaGVjayIKLSsKLSsjIFRlc3Qgc2V0IGNoZWNrIGFiYnJldmlhdGlvbnMK LStmb3JlYWNoIHggeyJjIiAiY2giICJjaGVjayJ9IHsKLSsgICAgZ2RiX3Rlc3QgInNldCAkeCIg Ilwic2V0IGNoZWNrXCIgbXVzdCBiZSBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZiBhIGNoZWNrIHN1 YmNvbW1hbmQuKFxbXlxyXG5cXSpcW1xyXG5cXSkrTGlzdCBvZiBzZXQgY2hlY2sgc3ViY29tbWFu ZHM6KFxbXlxyXG5cXSpcW1xyXG5cXSkrc2V0IGNoZWNrIHJhbmdlIC0tIFNldCByYW5nZSBjaGVj a2luZyhcW15cclxuXF0qXFtcclxuXF0pK3NldCBjaGVjayB0eXBlIC0tIFNldCBzdHJpY3QgdHlw ZSBjaGVja2luZyhcW15cclxuXF0qXFtcclxuXF0pK1R5cGUgXCJoZWxwIHNldCBjaGVja1wiIGZv bGxvd2VkIGJ5IHNldCBjaGVjayBzdWJjb21tYW5kIG5hbWUgZm9yIGZ1bGwgZG9jdW1lbnRhdGlv bi4oXFteXHJcblxdKlxbXHJcblxdKStDb21tYW5kIG5hbWUgYWJicmV2aWF0aW9ucyBhcmUgYWxs b3dlZCBpZiB1bmFtYmlndW91cy4iIFwKLSsJInNldCBjaGVjayBcIiR4XCIgYWJicmV2aWF0aW9u IgotK30KLSsKLSAjdGVzdCBzZXQgY2hlY2sgcmFuZ2UKLSBnZGJfdGVzdCAic2V0IGNoZWNrIHJh bmdlIiAiLioiICJzZXQgY2hlY2sgcmFuZ2UiCi0gI3Rlc3Qgc2V0IGNoZWNrIHR5cGUKLUBAIC01 NzcsMTYgKzU3OCwxNyBAQCBnZGJfdGVzdCAic2hlbGwgZWNobyBIaSBkYWQhIiAiSGkgZGFkISIK LSBnZGJfdGVzdCAic2hvdyBhbm5vdGF0ZSIgIkFubm90YXRpb25fbGV2ZWwgaXMgMC4iIAkgInNo b3cgYW5ub3RhdGUiCi0gI3Rlc3Qgc2hvdyBhcmdzCi0gZ2RiX3Rlc3QgInNob3cgYXJncyIgIkFy Z3VtZW50IGxpc3QgdG8gZ2l2ZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIHdoZW4gaXQgaXMgc3Rh cnRlZCBpcyBcIlwiLiIgInNob3cgYXJncyIKLS0jdGVzdCBzaG93IGNoZWNrICJjIiBhYmJyZXZp YXRpb24KLS1nZGJfdGVzdCAic2hvdyBjIiAicmFuZ2U6ICAqUmFuZ2UgY2hlY2tpbmcgaXMgXCJh dXRvOyBjdXJyZW50bHkgb2ZmXCIuKFxbXlxyXG5cXSpcW1xyXG5cXSkrdHlwZTogICpUeXBlIGNo ZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IG9mZlwiLioiICJzaG93IGNoZWNrIFwiY1wiIGFi YnJldmlhdGlvbiIKLS0jdGVzdCBzaG93IGNoZWNrICJjaCIgYWJicmV2aWF0aW9uCi0tZ2RiX3Rl c3QgInNob3cgY2giICJyYW5nZTogKlJhbmdlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5 IG9mZlwiLihcW15cclxuXF0qXFtcclxuXF0pK3R5cGU6ICAqVHlwZSBjaGVja2luZyBpcyBcImF1 dG87IGN1cnJlbnRseSBvZmZcIi4iICJzaG93IGNoZWNrIFwiY2hcIiBhYmJyZXZpYXRpb24iCi0t I3Rlc3Qgc2hvdyBjaGVjawotLWdkYl90ZXN0ICJzaG93IGNoZWNrIiAicmFuZ2U6ICAqUmFuZ2Ug Y2hlY2tpbmcgaXMgXCJhdXRvOyBjdXJyZW50bHkgb2ZmXCIuKFxbXlxyXG5cXSpcW1xyXG5cXSkr dHlwZTogICpUeXBlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IG9mZlwiLiIgInNob3cg Y2hlY2siCi0rCi0rIyB0ZXN0IHNob3cgY2hlY2sgYWJicmV2aWF0aW9ucwotK2ZvcmVhY2ggeCB7 ImMiICJjaCIgImNoZWNrIn0gewotKyAgICBnZGJfdGVzdCAic2hvdyAkeCIgInJhbmdlOiAgKlJh bmdlIGNoZWNraW5nIGlzIFwiYXV0bzsgY3VycmVudGx5IG9mZlwiLihcW15cclxuXF0qXFtcclxu XF0pK3R5cGU6ICAqU3RyaWN0IHR5cGUgY2hlY2tpbmcgaXMgb25cLi4qIiBcCi0rCSJzaG93IGNo ZWNrIFwiJHhcIiBhYmJyZXZpYXRpb24iCi0rfQotKwotICN0ZXN0IHNob3cgY2hlY2sgcmFuZ2UK LSBnZGJfdGVzdCAic2hvdyBjaGVjayByYW5nZSIgIlJhbmdlIGNoZWNraW5nIGlzIFwiYXV0bzsg Y3VycmVudGx5IG9mZlwiLiIgInNob3cgY2hlY2sgcmFuZ2UiCi0gI3Rlc3Qgc2hvdyBjaGVjayB0 eXBlCi0tZ2RiX3Rlc3QgInNob3cgY2hlY2sgdHlwZSIgIlR5cGUgY2hlY2tpbmcgaXMgXCJhdXRv OyBjdXJyZW50bHkgb2ZmXCIuIiAic2hvdyBjaGVjayB0eXBlIgotK2dkYl90ZXN0ICJzaG93IGNo ZWNrIHR5cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvblwuIiAic2hvdyBjaGVjayB0eXBl IgotICN0ZXN0IHNob3cgY29tbWFuZHMKLSBnZGJfdGVzdCAic2hvdyBjb21tYW5kcyIgIi4qIiAi c2hvdyBjb21tYW5kcyIKLSAjdGVzdCBzaG93IGNvbXBsYWludHMKLUluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAJ MjAxMi0wNy0wMiAxOTo1MzoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAkyMDEyLTA5LTI3IDIyOjE0OjQxLjMx NTY5NTMzMyArMDIwMAotQEAgLTM3NiwyMiArMzc2LDI2IEBAIGdkYl90ZXN0ICJoZWxwIHNlY3Rp b24iICJDaGFuZ2UgdGhlIGJhc2UKLSBnZGJfdGVzdCAiaGVscCBzZXQgYW5ub3RhdGUiICJTZXQg YW5ub3RhdGlvbl9sZXZlbFwuXFtcclxuXF0rMCA9PSBub3JtYWw7ICAgICAxID09IGZ1bGxuYW1l IFxcKGZvciB1c2Ugd2hlbiBydW5uaW5nIHVuZGVyIGVtYWNzXFwpXFtcclxuXF0rMiA9PSBvdXRw dXQgYW5ub3RhdGVkIHN1aXRhYmx5IGZvciB1c2UgYnkgcHJvZ3JhbXMgdGhhdCBjb250cm9sIEdE QlwuIiAiaGVscCBzZXQgYW5ub3RhdGUiCi0gIyB0ZXN0IGhlbHAgc2V0IGFyZ3MKLSBnZGJfdGVz dCAiaGVscCBzZXQgYXJncyIgIlNldCBhcmd1bWVudCBsaXN0IHRvIGdpdmUgcHJvZ3JhbSBiZWlu ZyBkZWJ1Z2dlZCB3aGVuIGl0IGlzIHN0YXJ0ZWRcLlxbXHJcblxdK0ZvbGxvdyB0aGlzIGNvbW1h bmQgd2l0aCBhbnkgbnVtYmVyIG9mIGFyZ3MsIHRvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbVwu IgotLSMgdGVzdCBoZWxwIHNldCBjaGVjayAiYyIgYWJicmV2aWF0aW9uCi0tdGVzdF9wcmVmaXhf Y29tbWFuZF9oZWxwIHsic2V0IGMiICJzZXQgY2hlY2sifSB7Ci0tICAgICJTZXQgdGhlIHN0YXR1 cyBvZiB0aGUgdHlwZS9yYW5nZSBjaGVja2VyXC5cW1xyXG5cXSsiCi0tfSAiaGVscCBzZXQgY2hl Y2sgXCJjXCIgYWJicmV2aWF0aW9uIgotLSMgdGVzdCBoZWxwIHNldCBjaGVjayAiY2giIGFiYnJl dmlhdGlvbgotLXRlc3RfcHJlZml4X2NvbW1hbmRfaGVscCB7InNldCBjaCIgInNldCBjaGVjayJ9 IHsKLS0gICAgIlNldCB0aGUgc3RhdHVzIG9mIHRoZSB0eXBlL3JhbmdlIGNoZWNrZXJcLlxbXHJc blxdKyIKLS19ICJoZWxwIHNldCBjaGVjayBcImNoXCIgYWJicmV2aWF0aW9uIgotLSMgdGVzdCBo ZWxwIHNldCBjaGVjawotKwotKyMgVGVzdCBoZWxwIHNldCBjaGVjayBhYmJyZXZpYXRpb25zCi0r Zm9yZWFjaCB4IHsiYyIgImNoIn0gewotKyAgICB0ZXN0X3ByZWZpeF9jb21tYW5kX2hlbHAgW2xp c3QgInNldCAkeCIgInNldCBjaGVjayJdIHsKLSsJIlNldCB0aGUgc3RhdHVzIG9mIHRoZSB0eXBl L3JhbmdlIGNoZWNrZXJcLlxbXHJcblxdKyIKLSsgICAgfSAiaGVscCBzZXQgY2hlY2sgXCIkeFwi IGFiYnJldmlhdGlvbiIKLSt9Ci0rCi0rIyBUZXN0IGhlbHAgc2V0IGNoZWNrCi0gdGVzdF9wcmVm aXhfY29tbWFuZF9oZWxwIHsic2V0IGNoZWNrIn0gewotICAgICAiU2V0IHRoZSBzdGF0dXMgb2Yg dGhlIHR5cGUvcmFuZ2UgY2hlY2tlclwuXFtcclxuXF0rIgotIH0KLSsKLSAjIHRlc3QgaGVscCBz ZXQgY2hlY2sgcmFuZ2UKLSBnZGJfdGVzdCAiaGVscCBzZXQgY2hlY2sgcmFuZ2UiICJTZXQgcmFu Z2UgY2hlY2tpbmdcLiAgXFwob24vd2Fybi9vZmYvYXV0b1xcKSIgImhlbHAgc2V0IGNoZWNrIHJh bmdlIgotLSMgdGVzdCBoZWxwIHNldCBjaGVjayB0eXBlCi0tZ2RiX3Rlc3QgImhlbHAgc2V0IGNo ZWNrIHR5cGUiICJTZXQgdHlwZSBjaGVja2luZ1wuICBcXChvbi93YXJuL29mZi9hdXRvXFwpLiIg ImhlbHAgc2V0IGNoZWNrIHR5cGUiCi0rCi0rIyBUZXN0IGhlbHAgc2V0IGNoZWNrIHR5cGUKLStn ZGJfdGVzdCAiaGVscCBzZXQgY2hlY2sgdHlwZSIgIlNldCBzdHJpY3QgdHlwZSBjaGVja2luZ1wu IiBcCi0rICAgICJoZWxwIHNldCBjaGVjayB0eXBlIgotKwotICMgdGVzdCBoZWxwIHNldCBjb21w bGFpbnRzCi0gZ2RiX3Rlc3QgImhlbHAgc2V0IGNvbXBsYWludHMiICJTZXQgbWF4IG51bWJlciBv ZiBjb21wbGFpbnRzIGFib3V0IGluY29ycmVjdCBzeW1ib2xzXC4iICJoZWxwIHNldCBjb21wbGFp bnRzIgotICMgdGVzdCBoZWxwIHNldCBjb25maXJtCi1AQCAtNDg3LDE4ICs0OTEsMjUgQEAgZ2Ri X3Rlc3QgImhlbHAgc2hlbGwiICJFeGVjdXRlIHRoZSByZXN0Ci0gZ2RiX3Rlc3QgImhlbHAgc2hv dyBhbm5vdGF0ZSIgIlNob3cgYW5ub3RhdGlvbl9sZXZlbFwuXFtcclxuXF0rMCA9PSBub3JtYWw7 ICAgICAxID09IGZ1bGxuYW1lIFxcKGZvciB1c2Ugd2hlbiBydW5uaW5nIHVuZGVyIGVtYWNzXFwp XFtcclxuXF0rMiA9PSBvdXRwdXQgYW5ub3RhdGVkIHN1aXRhYmx5IGZvciB1c2UgYnkgcHJvZ3Jh bXMgdGhhdCBjb250cm9sIEdEQlwuIiAiaGVscCBzaG93IGFubm90YXRlIgotICMgdGVzdCBoZWxw IHNob3cgYXJncwotIGdkYl90ZXN0ICJoZWxwIHNob3cgYXJncyIgIlNob3cgYXJndW1lbnQgbGlz dCB0byBnaXZlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQgd2hlbiBpdCBpcyBzdGFydGVkXC5cW1xy XG5cXStGb2xsb3cgdGhpcyBjb21tYW5kIHdpdGggYW55IG51bWJlciBvZiBhcmdzLCB0byBiZSBw YXNzZWQgdG8gdGhlIHByb2dyYW1cLiIKLS0jIHRlc3QgaGVscCBzaG93IGNoZWNrICJjIiBhYmJy ZXZpYXRpb24KLS10ZXN0X3ByZWZpeF9jb21tYW5kX2hlbHAgeyJzaG93IGMiICJzaG93IGNoZWNr In0gewotLSAgICAiU2hvdyB0aGUgc3RhdHVzIG9mIHRoZSB0eXBlL3JhbmdlIGNoZWNrZXJcLlxb XHJcblxdKyIKLS19ICJoZWxwIHNob3cgY2hlY2sgXCJjXCIgYWJicmV2aWF0aW9uIgotKwotKyMg VGVzdCBoZWxwIHNob3cgY2hlY2sgYWJicmV2aWF0aW9ucwotK2ZvcmVhY2ggeCB7ImMiICJjaGVj ayJ9IHsKLSsgICAgdGVzdF9wcmVmaXhfY29tbWFuZF9oZWxwIFtsaXN0ICJzaG93ICR4IiAic2hv dyBjaGVjayJdIHsKLSsJIlNob3cgdGhlIHN0YXR1cyBvZiB0aGUgdHlwZS9yYW5nZSBjaGVja2Vy XC5cW1xyXG5cXSsiCi0rICAgIH0gImhlbHAgc2hvdyBjaGVjayBcIiR4XCIgYWJicmV2aWF0aW9u IgotK30KLSsKLSAjIHRlc3QgaGVscCBzaG93IGNoZWNrCi0gdGVzdF9wcmVmaXhfY29tbWFuZF9o ZWxwIHsic2hvdyBjaGVjayJ9IHsKLSAgICAgIlNob3cgdGhlIHN0YXR1cyBvZiB0aGUgdHlwZS9y YW5nZSBjaGVja2VyXC5cW1xyXG5cXSsiCi0gfQotICMgdGVzdCBoZWxwIHNob3cgY2hlY2sgcmFu Z2UKLSBnZGJfdGVzdCAiaGVscCBzaG93IGNoZWNrIHJhbmdlIiAiU2hvdyByYW5nZSBjaGVja2lu Z1wuICBcXChvbi93YXJuL29mZi9hdXRvXFwpIiAiaGVscCBzaG93IGNoZWNrIHJhbmdlIgotKwot ICMgdGVzdCBoZWxwIHNob3cgY2hlY2sgdHlwZQotLWdkYl90ZXN0ICJoZWxwIHNob3cgY2hlY2sg dHlwZSIgIlNob3cgdHlwZSBjaGVja2luZ1wuICBcXChvbi93YXJuL29mZi9hdXRvXFwpIiAiaGVs cCBzaG93IGNoZWNrIHR5cGUiCi0rZ2RiX3Rlc3QgImhlbHAgc2hvdyBjaGVjayB0eXBlIiAiU2hv dyBzdHJpY3QgdHlwZSBjaGVja2luZ1wuIiBcCi0rICAgICJoZWxwIHNob3cgY2hlY2sgdHlwZSIK LSsKLSAjIHRlc3QgaGVscCBzaG93IGNvbW1hbmRzCi0gZ2RiX3Rlc3QgImhlbHAgc2hvdyBjb21t YW5kcyIgIlNob3cgdGhlIGhpc3Rvcnkgb2YgY29tbWFuZHMgeW91IHR5cGVkXC5cW1xyXG5cXStZ b3UgY2FuIHN1cHBseSBhIGNvbW1hbmQgbnVtYmVyIHRvIHN0YXJ0IHdpdGgsIG9yIGEgYFxbK1xd JyB0byBzdGFydCBhZnRlclxbXHJcblxdK3RoZSBwcmV2aW91cyBjb21tYW5kIG51bWJlciBzaG93 blwuIiAiaGVscCBzaG93IGNvbW1hbmRzIgotICMgdGVzdCBoZWxwIHNob3cgY29tcGxhaW50cwot SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NldHNob3cu ZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9zZXRzaG93LmV4cAkyMDEyLTAzLTEzIDIyOjAyOjQwLjAwMDAwMDAwMCArMDEw MAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NldHNob3cu ZXhwCTIwMTItMDktMjcgMjI6MTQ6NDEuMzIwNjk1MzM2ICswMjAwCi1AQCAtMTEwLDE5ICsxMTAs MjIgQEAgZ2RiX3Rlc3QgInNob3cgY2hlY2sgcmFuZ2UiICJSYW5nZSBjaGVjawotICN0ZXN0IHNl dCBjaGVjayByYW5nZSBhdXRvCi0gZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2hlY2sgcmFuZ2Ug YXV0byIgInNldCBjaGVjayByYW5nZSBhdXRvIiAKLSAjdGVzdCBzaG93IGNoZWNrIHJhbmdlIGF1 dG8KLS1nZGJfdGVzdCAic2hvdyBjaGVjayByYW5nZSIgIlJhbmdlIGNoZWNraW5nIGlzIFwiYXV0 bzsgY3VycmVudGx5IC4qIiAic2hvdyBjaGVjayByYW5nZSAoYXV0bykiIAotLSN0ZXN0IHNldCBj aGVjayB0eXBlIG9uCi0tZ2RiX3Rlc3QgInNldCBjaGVjayB0eXBlIG9uIiAiLioiICJzZXQgY2hl Y2sgdHlwZSBvbiIgCi0tI3Rlc3Qgc2hvdyBjaGVjayB0eXBlIG9uCi0tZ2RiX3Rlc3QgInNob3cg Y2hlY2sgdHlwZSIgIlR5cGUgY2hlY2tpbmcgaXMgXCJvblwiLi4qIiAic2hvdyBjaGVjayB0eXBl IChvbikiIAotLSN0ZXN0IHNldCBjaGVjayB0eXBlIG9mZiB3aXRoIHRyYWlsaW5nIHNwYWNlCi0t Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2hlY2sgdHlwZSBvZmYgIiAic2V0IGNoZWNrIHR5cGUg b2ZmIiAKLS0jdGVzdCBzaG93IGNoZWNrIHR5cGUgb2ZmCi0tZ2RiX3Rlc3QgInNob3cgY2hlY2sg dHlwZSIgIlR5cGUgY2hlY2tpbmcgaXMgXCJvZmZcIi4uKiIgInNob3cgY2hlY2sgdHlwZSAob2Zm KSIgCi0tI3Rlc3Qgc2V0IGNoZWNrIHR5cGUgYXV0bwotLWdkYl90ZXN0X25vX291dHB1dCAic2V0 IGNoZWNrIHR5cGUgYXV0byIgInNldCBjaGVjayB0eXBlIGF1dG8iIAotLSN0ZXN0IHNob3cgY2hl Y2sgdHlwZQotLWdkYl90ZXN0ICJzaG93IGNoZWNrIHR5cGUiICJUeXBlIGNoZWNraW5nIGlzIFwi YXV0bzsgY3VycmVudGx5IC4qIiAic2hvdyBjaGVjayB0eXBlIChhdXRvKSIgCi0rZ2RiX3Rlc3Qg InNob3cgY2hlY2sgcmFuZ2UiICJSYW5nZSBjaGVja2luZyBpcyBcImF1dG87IGN1cnJlbnRseSAu KiIgInNob3cgY2hlY2sgcmFuZ2UgKGF1dG8pIgotKwotKyMgVGVzdCBzZXQgY2hlY2sgdHlwZSBv bgotK2dkYl90ZXN0ICJzZXQgY2hlY2sgdHlwZSBvbiIgIi4qIiAic2V0IGNoZWNrIHR5cGUgb24i Ci0rCi0rIyBUZXN0IHNob3cgY2hlY2sgdHlwZSBvbgotK2dkYl90ZXN0ICJzaG93IGNoZWNrIHR5 cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvblwuLioiIFwKLSsgICAgInNob3cgY2hlY2sg dHlwZSAob24pIgotKwotKyMgVGVzdCBzZXQgY2hlY2sgdHlwZSBvZmYgd2l0aCB0cmFpbGluZyBz cGFjZQotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGNoZWNrIHR5cGUgb2ZmICIgInNldCBjaGVj ayB0eXBlIG9mZiIKLSsKLSsjIFRlc3Qgc2hvdyBjaGVjayB0eXBlIG9mZgotK2dkYl90ZXN0ICJz aG93IGNoZWNrIHR5cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvZmZcLi4qIiBcCi0rICAg ICJzaG93IGNoZWNrIHR5cGUgKG9mZikiCi0rCi0gI3Rlc3Qgc2V0IGNvbXBsYWludHMgMTAwCi0g Z2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY29tcGxhaW50cyAxMDAiICJzZXQgY29tcGxhaW50cyAx MDAiIAotICN0ZXN0IHNob3cgY29tcGxhaW50cyAxMDAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29udmVydHMuZXhwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29udmVydHMuZXhwCTIw MTItMDctMTAgMTc6MTg6MTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnZlcnRzLmV4cAkyMDEyLTA5LTI3IDIyOjE0OjQxLjMy MTY5NTMzNyArMDIwMAotQEAgLTcwLDkgKzcwLDM3IEBAIGdkYl90ZXN0X211bHRpcGxlICJwIGZv bzNfMSAoMCwgMCkiICR0IHsKLSAgICAgcGFzcyAkdAotICAgfQotIH0KLSsKLSBnZGJfdGVzdCAi cCBmb28zXzEgKDAsIDEpIiBcCi0gICAgICJDYW5ub3QgcmVzb2x2ZSBmdW5jdGlvbiBmb28zXzEg dG8gYW55IG92ZXJsb2FkZWQgaW5zdGFuY2UiCi0gZ2RiX3Rlc3QgInAgZm9vM18xICgwLCAoY29u c3QgY2hhcioqKSAxKSIgIiA9IDMxIgotIGdkYl90ZXN0ICJwIGZvbzNfMiAoMCwgMCkiICI9IDMy IgotIGdkYl90ZXN0ICJwIGZvbzNfMiAoMCwgKGNoYXIgY29uc3QqKikgMCkiICIgPSAzMjAiCi0g Ci0rIyBUZXN0IGZvciBzdHJpY3QgdHlwZSBjaGVja2luZwotK3NldCBlcnJvcl9zdHIgIkNhbm5v dCByZXNvbHZlIGZ1bmN0aW9uICVzIHRvIGFueSBvdmVybG9hZGVkIGluc3RhbmNlIgotK2dkYl90 ZXN0ICJzaG93IGNoZWNrIHR5cGUiICJTdHJpY3QgdHlwZSBjaGVja2luZyBpcyBvblwuIgotK2dk Yl90ZXN0ICJwIGZvbzFfdHlwZV9jaGVjayAoMTIzKSIgW2Zvcm1hdCAkZXJyb3Jfc3RyICJmb28x X3R5cGVfY2hlY2siXQotK2dkYl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAoMCwgMSkiIFtmb3Jt YXQgJGVycm9yX3N0ciAiZm9vMl90eXBlX2NoZWNrIl0KLStnZGJfdGVzdCAicCBmb28yX3R5cGVf Y2hlY2sgKDEsIDApIiBbZm9ybWF0ICRlcnJvcl9zdHIgImZvbzJfdHlwZV9jaGVjayJdCi0rZ2Ri X3Rlc3QgInAgZm9vMl90eXBlX2NoZWNrICgxLCAxKSIgW2Zvcm1hdCAkZXJyb3Jfc3RyICJmb28y X3R5cGVfY2hlY2siXQotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAoMCwgMCwgMSkiIFtm b3JtYXQgJGVycm9yX3N0ciAiZm9vM190eXBlX2NoZWNrIl0KLStnZGJfdGVzdCAicCBmb28zX3R5 cGVfY2hlY2sgKDAsIDEsIDApIiBbZm9ybWF0ICRlcnJvcl9zdHIgImZvbzNfdHlwZV9jaGVjayJd Ci0rZ2RiX3Rlc3QgInAgZm9vM190eXBlX2NoZWNrICgxLCAwLCAwKSIgW2Zvcm1hdCAkZXJyb3Jf c3RyICJmb28zX3R5cGVfY2hlY2siXQotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAoMCwg MSwgMSkiIFtmb3JtYXQgJGVycm9yX3N0ciAiZm9vM190eXBlX2NoZWNrIl0KLStnZGJfdGVzdCAi cCBmb28zX3R5cGVfY2hlY2sgKDEsIDEsIDApIiBbZm9ybWF0ICRlcnJvcl9zdHIgImZvbzNfdHlw ZV9jaGVjayJdCi0rZ2RiX3Rlc3QgInAgZm9vM190eXBlX2NoZWNrICgxLCAxLCAxKSIgW2Zvcm1h dCAkZXJyb3Jfc3RyICJmb28zX3R5cGVfY2hlY2siXQotKwotK2dkYl90ZXN0X25vX291dHB1dCAi c2V0IGNoZWNrIHR5cGUgb2ZmIgotK2dkYl90ZXN0ICJzaG93IGNoZWNrIHR5cGUiICJTdHJpY3Qg dHlwZSBjaGVja2luZyBpcyBvZmZcLiIKLStnZGJfdGVzdCAicCBmb28xX3R5cGVfY2hlY2sgKDEy MykiICIgPSAxMDAwIgotK2dkYl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAoMCwgMSkiICIgPSAx MDAxIgotK2dkYl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAoMSwgMCkiICIgPSAxMDAxIgotK2dk Yl90ZXN0ICJwIGZvbzJfdHlwZV9jaGVjayAoMSwgMSkiICIgPSAxMDAxIgotK2dkYl90ZXN0ICJw IGZvbzNfdHlwZV9jaGVjayAoMCwgMCwgMSkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNf dHlwZV9jaGVjayAoMCwgMSwgMCkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9j aGVjayAoMSwgMCwgMCkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAo MCwgMSwgMSkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAoMSwgMSwg MCkiICIgPSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfdHlwZV9jaGVjayAoMSwgMSwgMSkiICIg PSAxMDAyIgotK2dkYl90ZXN0ICJwIGZvbzNfMiAoMSwxKSIgIiA9IDMyIgotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jb252ZXJ0cy5jYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnZl cnRzLmNjCTIwMTEtMTAtMTQgMjI6MjI6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnZlcnRzLmNjCTIwMTItMDktMjcgMjI6 MTQ6NDEuMzIyNjk1MzM3ICswMjAwCi1AQCAtMjcsNiArMjcsMTAgQEAgaW50IGZvbzNfMSAoaW50 IGEsIGNvbnN0IGNoYXIgKipiKSB7IHJldAotIGludCBmb28zXzIgKGludCBhLCBpbnQgYikgeyBy ZXR1cm4gMzI7IH0KLSBpbnQgZm9vM18yIChpbnQgYSwgY29uc3QgY2hhciAqKmIpIHsgcmV0dXJu IDMyMDsgfQotIAotK2ludCBmb28xX3R5cGVfY2hlY2sgKGNoYXIgKmEpIHsgcmV0dXJuIDEwMDA7 IH0KLStpbnQgZm9vMl90eXBlX2NoZWNrIChjaGFyICphLCBjaGFyICpiKSB7IHJldHVybiAxMDAx OyB9Ci0raW50IGZvbzNfdHlwZV9jaGVjayAoY2hhciAqYSwgY2hhciAqYiwgY2hhciAqYykgeyBy ZXR1cm4gMTAwMjsgfQotKwotIGludCBtYWluKCkKLSB7Ci0gCi1AQCAtNjIsNSArNjYsOSBAQCBp bnQgbWFpbigpCi0gICBmb28zXzIgKDAsIHN0YXRpY19jYXN0PGNoYXIgY29uc3QqKj4gKDApKTsK LSAgIGZvbzNfMiAoMCwgMCk7Ci0gCi0rICBmb28xX3R5cGVfY2hlY2sgKGEpOwotKyAgZm9vMl90 eXBlX2NoZWNrIChhLCBhKTsKLSsgIGZvbzNfdHlwZV9jaGVjayAoYSwgYSwgYSk7Ci0rCi0gICBy ZXR1cm4gMDsgICAgICAgICAgLy8gZW5kIG9mIG1haW4KLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWNv bW1vbmJsb2NrLXBpZS5wYXRjaCBiL2dkYi1jb21tb25ibG9jay1waWUucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlMjM2ZQotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi1jb21tb25ibG9jay1waWUucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorZGlmZiAtLWdpdCBhL2dk Yi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCitpbmRleCA3YTU4YzQ1Li4zNjRlNmFm IDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYworKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwor QEAgLTE2MDcxLDcgKzE2MDcxLDcgQEAgbmV3X3N5bWJvbF9mdWxsIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorIAkgIGxpc3Rf dG9fYWRkID0gJmdsb2JhbF9zeW1ib2xzOworIAkgIGJyZWFrOworIAljYXNlIERXX1RBR19jb21t b25fYmxvY2s6CistCSAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX1NUQVRJQzsKKysJICBTWU1C T0xfQ0xBU1MgKHN5bSkgPSBMT0NfQ09NTU9OX0JMT0NLOworIAkgIFNZTUJPTF9ET01BSU4gKHN5 bSkgPSBDT01NT05fQkxPQ0tfRE9NQUlOOworIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBj dS0+bGlzdF9pbl9zY29wZSk7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJp bnQuYyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4IDIyY2NhODMuLmQwMWQ2ZWMgMTAwNjQ0Cist LS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9nZGIvZi12YWxwcmludC5jCitAQCAtNDI3LDcg KzQyNyw3IEBAIGluZm9fY29tbW9uX2NvbW1hbmRfZm9yX2Jsb2NrIChzdHJ1Y3QgYmxvY2sgKmJs b2NrLCBjb25zdCBjaGFyICpjb21uYW1lLAorIAlzdHJ1Y3QgY29tbW9uX2Jsb2NrICpjb21tb24g PSBTWU1CT0xfVkFMVUVfQ09NTU9OX0JMT0NLIChzeW0pOworIAlzaXplX3QgaW5kZXg7CisgCist CWdkYl9hc3NlcnQgKFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElDKTsKKysJZ2RiX2Fz c2VydCAoU1lNQk9MX0NMQVNTIChzeW0pID09IExPQ19DT01NT05fQkxPQ0spOworIAorIAlpZiAo Y29tbmFtZSAmJiAoIVNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkKKyAJICAgICAgICAgICAgICAg IHx8IHN0cmNtcCAoY29tbmFtZSwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSkgIT0gMCkpCitk aWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCitpbmRleCBjMzM0YTNhLi5i OTkyMjY2IDEwMDY0NAorLS0tIGEvZ2RiL3N5bXRhYi5oCisrKysgYi9nZGIvc3ltdGFiLmgKK0BA IC0xMjAsNyArMTIwLDcgQEAgc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8KKyAKKyAgICAgQ09S RV9BRERSIGFkZHJlc3M7CisgCistICAgIC8qIEEgY29tbW9uIGJsb2NrLiAgVXNlZCB3aXRoIENP TU1PTl9CTE9DS19ET01BSU4uICAqLworKyAgICAvKiBBIGNvbW1vbiBibG9jay4gIFVzZWQgd2l0 aCBMT0NfQ09NTU9OX0JMT0NLLiAgKi8KKyAKKyAgICAgc3RydWN0IGNvbW1vbl9ibG9jayAqY29t bW9uX2Jsb2NrOworIAorQEAgLTQxNCw3ICs0MTQsOCBAQCB0eXBlZGVmIGVudW0gZG9tYWluX2Vu dW1fdGFnCisgCisgICBMQUJFTF9ET01BSU4sCisgCistICAvKiBGb3J0cmFuIGNvbW1vbiBibG9j a3MuICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZSBmcm9tIFZBUl9ET01BSU4uICAqLwor KyAgLyogRm9ydHJhbiBjb21tb24gYmxvY2tzLiAgVGhlaXIgbmFtaW5nIG11c3QgYmUgc2VwYXJh dGUgZnJvbSBWQVJfRE9NQUlOLgorKyAgICAgVGhleSBhbHNvIGFsd2F5cyB1c2UgTE9DX0NPTU1P Tl9CTE9DSy4gICovCisgICBDT01NT05fQkxPQ0tfRE9NQUlOCisgfSBkb21haW5fZW51bTsKKyAK K0BAIC01MzMsNiArNTM0LDEwIEBAIGVudW0gYWRkcmVzc19jbGFzcworICAgLyogVGhlIHZhcmlh YmxlJ3MgYWRkcmVzcyBpcyBjb21wdXRlZCBieSBhIHNldCBvZiBsb2NhdGlvbgorICAgICAgZnVu Y3Rpb25zIChzZWUgInN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIiBiZWxvdykuICAqLworICAg TE9DX0NPTVBVVEVELAorKworKyAgLyogVGhlIHZhcmlhYmxlIHVzZXMgZ2VuZXJhbF9zeW1ib2xf aW5mby0+dmFsdWUtPmNvbW1vbl9ibG9jayBmaWVsZC4KKysgICAgIEl0IGFsc28gYWx3YXlzIHVz ZXMgQ09NTU9OX0JMT0NLX0RPTUFJTi4gICovCisrICBMT0NfQ09NTU9OX0JMT0NLLAorIH07Cisg CisgLyogVGhlIG1ldGhvZHMgbmVlZGVkIHRvIGltcGxlbWVudCBMT0NfQ09NUFVURUQuICBUaGVz ZSBtZXRob2RzIGNhbgoKZGlmZiAtLWdpdCBhL2dkYi1jb3JlLW9wZW4tdmRzby13YXJuaW5nLnBh dGNoIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKaW5kZXggYjgzNTY1Ny4uY2Fm ZDg0NCAxMDA2NDQKLS0tIGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKKysrIGIv Z2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKQEAgLTMsMTAgKzMsMTAgQEAgU3ViamVj dDogW3BhdGNoXSBGaXggR05VL0xpbnV4IGNvcmUgb3BlbjogQ2FuJ3QgcmVhZCBwYXRobmFtZSBm b3IgbG9hZCBtYXA6ICBJbnAKIAogWyBOZXcgcGF0Y2ggdmFyaWFudC4gIF0KIAotSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3 MDMub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDctMDYgMTU6Mzk6NTcuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDctMDYg MTU6NDA6MDEuMTI0ODE2MTQ4ICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzowNToxOS40MTQyMTAwMTUgKzAxMDAKKysrKyBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzowNTozNC44 MTMyMzE2NjQgKzAxMDAKIEBAIC0xMjIxLDggKzEyMjEsMTcgQEAgc3ZyNF9yZWFkX3NvX2xpc3Qg KENPUkVfQUREUiBsbSwgc3RydWN0CiAgCQkJICBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxLCAm ZXJyY29kZSk7CiAgICAgICAgaWYgKGVycmNvZGUgIT0gMCkKQEAgLTI3LDIwICsyNywyMCBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvc29saWItc3ZyNC5jCiAgCSAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CiAgCSAgY29udGludWU7CiAgCX0KLUluZGV4OiBnZGItNy40LjUwLjIw MTIwNzAzL2dkYi9zb2xpYi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWIu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvc29saWIuYwky MDEyLTA3LTA2IDE1OjM4OjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3NvbGliLmMJMjAxMi0wNy0wNiAxNTo0MDowMS4xMjU4MTYxNDcgKzAyMDAKLUBAIC02 NzIsNyArNjcyLDcgQEAgc29saWJfdXNlZCAoY29uc3Qgc3RydWN0IHNvX2xpc3QgKmNvbnN0Cist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zb2xpYi5jCTIwMTMtMDEtMTggMjM6MDU6 MTkuNDE1MjEwMDE3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWIuYwky MDEzLTAxLTE4IDIzOjA1OjU3LjQyMTI2MzE3MyArMDEwMAorQEAgLTY2Niw3ICs2NjYsNyBAQCBz b2xpYl91c2VkIChjb25zdCBzdHJ1Y3Qgc29fbGlzdCAqY29uc3QKICAgICBwcm9jZXNzZXMgd2Un dmUganVzdCBhdHRhY2hlZCB0bywgc28gdGhhdCdzIG9rYXkuICAqLwogIAogIHN0YXRpYyB2b2lk CiAtdXBkYXRlX3NvbGliX2xpc3QgKGludCBmcm9tX3R0eSwgc3RydWN0IHRhcmdldF9vcHMgKnRh cmdldCkKICt1cGRhdGVfc29saWJfbGlzdF8xIChpbnQgZnJvbV90dHksIHN0cnVjdCB0YXJnZXRf b3BzICp0YXJnZXQpCiAgewotICAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGliX29w cyAodGFyZ2V0X2dkYmFyY2gpOworICAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGli X29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwogICAgc3RydWN0IHNvX2xpc3QgKmluZmVyaW9yID0g b3BzLT5jdXJyZW50X3NvcygpOwotQEAgLTg0Myw2ICs4NDMsMjEgQEAgRG8geW91IG5lZWQgXCJz ZXQgc29saWItc2VhcmNoLXBhdGhcIiBvcgorQEAgLTgzNyw2ICs4MzcsMjEgQEAgRG8geW91IG5l ZWQgXCJzZXQgc29saWItc2VhcmNoLXBhdGhcIiBvcgogICAgICB9CiAgfQogIApAQCAtNjIsMTAg KzYyLDEwIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi9zb2xpYi5jCiAgCiAgLyog UmV0dXJuIG5vbi16ZXJvIGlmIE5BTUUgaXMgdGhlIGxpYnB0aHJlYWQgc2hhcmVkIGxpYnJhcnku CiAgCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Nv cmVmaWxlLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9jb3JlZmlsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJMjAxMi0wNy0wNiAxNTozOTo0 MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY29yZWZpbGUuZXhwCTIwMTItMDctMDYgMTU6NDA6MTAuMzIyODA1NTM5ICswMjAw CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29y ZWZpbGUuZXhwCTIwMTMtMDEtMTggMjM6MDU6MTkuNDE2MjEwMDIwICswMTAwCisrKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cAkyMDEzLTAx LTE4IDIzOjA1OjM0LjgxNDIzMTY2NyArMDEwMAogQEAgLTI4NiwzICsyODYsMTkgQEAgaWYgeyRi dWlsZGlkID09ICIifSB7CiAgICAgIGdkYl90ZXN0ICJpbmZvIGZpbGVzIiAiTG9jYWwgZXhlYyBm aWxlOlxyXG5cWyBcdFxdKmBbc3RyaW5nX3RvX3JlZ2V4cCAkZGVidWdkaXIvJGJ1aWxkaWRdJywg ZmlsZSB0eXBlIC4qIgogICAgICBwYXNzICR3aG9sZXRlc3QKQEAgLTg2LDEwICs4NiwxMCBAQCBJ bmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxl LmV4cAogKwlwYXNzICR0ZXN0CiArICAgIH0KICt9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcw My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3ltYm9sLmV4cAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3NvbGliLXN5bWJvbC5leHAJMjAxMi0wNy0wNiAxNTozODozOS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3lt Ym9sLmV4cAkyMDEyLTA3LTA2IDE1OjQwOjAxLjEyNzgxNjE0NSArMDIwMAorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NvbGliLXN5bWJvbC5leHAJ MjAxMy0wMS0xOCAyMzowNToxOS40MTYyMTAwMjAgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc29saWItc3ltYm9sLmV4cAkyMDEzLTAxLTE4IDIz OjA1OjM0LjgxNDIzMTY2NyArMDEwMAogQEAgLTI3LDcgKzI3LDggQEAgc2V0IGxpYl9mbGFncyBb bGlzdCBkZWJ1ZyBsZGZsYWdzPS1XbCwtQgogICMgQmluYXJ5IGZpbGUuCiAgc2V0IHRlc3RmaWxl ICJzb2xpYi1zeW1ib2wtbWFpbiIKCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUt MW9mNy5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAxODkxZmIzLi4wMDAwMDAwCi0tLSBhL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS0xb2Y3LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzk1ICswLDAgQEAKLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDcvbXNnMDAxMjMuaHRtbAotCi0jIyMg c3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAwNDozNjoxNQkxLjE0NDczCi0jIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAxNjoxMjoxNQkxLjE0NDc0Ci0jIyAtMSwzICsxLDM3IEBA Ci0rMjAxMi0wNy0xOCAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lvZGpAcmVkaGF0LmNv bT4KLSsKLSsJKiBlbGZyZWFkLmMgKGVsZl9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQpOiBSZW1v dmUgYG9iamZpbGUnIGFyZ3VtZW50LgotKwkoZWxmX2NvbXBpbGVfdG9fYXgpOiBMaWtld2lzZS4K LSsJKiBpbmZydW4uYyAoaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9wcm9iZSk6IExpa2V3 aXNlLgotKwkoY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSk6IFJlbW92ZSBgb2JqZmlsZScgdmFyaWFi bGUuCi0rCSogcHJvYmUuYyAoZmluZF9wcm9iZV9ieV9wYyk6IFJlbW92ZSBgb2JqZmlsZScgYXJn dW1lbnQuCi0rCShzdHJ1Y3QgcHJvYmVfYW5kX29iamZpbGUsIHByb2JlX2FuZF9vYmpmaWxlX3Mp OiBEZWxldGUuCi0rCShjb2xsZWN0X3Byb2Jlcyk6IEFkanVzdCByZXR1cm4gdmFsdWUgdG8gYFZF QyAocHJvYmVfcCkgKicuCi0rCShjb21wYXJlX2VudHJpZXMpOiBSZW5hbWUgdG8uLi4KLSsJKGNv bXBhcmVfcHJvYmVzKTogLi4udGhpcy4gIEFkanVzdCBmdW5jdGlvbiB0byB3b3JrIHdpdGgKLSsJ YHN0cnVjdCBwcm9iZSAqJy4gIFJlbmFtZSB2YXJpYWJsZXMgYGVhJyBhbmQgYGViJyB0byBgcGEn IGFuZCBgcGInCi0rCXJlc3BlY3RpdmVseS4KLSsJKGdlbl91aV9vdXRfdGFibGVfaGVhZGVyX2lu Zm8pOiBBZGp1c3QgYHByb2JlcycgYXJndW1lbnQgdG8gYmUKLSsJYFZFQyAocHJvYmVfcCkgKicu Ci0rCShwcmludF91aV9vdXRfaW5mbyk6IEFkanVzdCBhcmd1bWVudCB0byBiZSBgc3RydWN0IHBy b2JlIConLgotKwkoaW5mb19wcm9iZXNfZm9yX29wcyk6IEFkanVzdCBpbnRlcm5hbCBjb21wdXRh dGlvbnMgdG8gdXNlCi0rCWBWRUMgKHByb2JlX3ApIConLgotKwkocHJvYmVfc2FmZV9ldmFsdWF0 ZV9hdF9wYyk6IFJlZmFjdG9yIHRvIG5vdCBwYXNzIGBvYmpmaWxlJyBhbnltb3JlLgotKwkqIHBy b2JlLmggKHN0cnVjdCBwcm9iZV9vcHMpIDxnZXRfcHJvYmVfYXJndW1lbnRfY291bnQsIGNvbXBp bGVfdG9fYXgsCi0rCWdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXM+OiBSZW1vdmUgYG9iamZp bGUnIGFyZ3VtZW50LgotKwkoc3RydWN0IHByb2JlKSA8b2JqZmlsZT46IE5ldyBmaWVsZC4KLSsJ KGZpbmRfcHJvYmVfYnlfcGMpOiBSZW1vdmUgYG9iamZpbGUnIGFyZ3VtZW50LgotKwkqIHN0YXAt cHJvYmUuYyAoc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMpOiBMaWtld2lzZS4KLSsJKHN0YXBf Z2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KTogTGlrZXdpc2UuCi0rCShzdGFwX2dldF9hcmcpOiBM aWtld2lzZS4KLSsJKHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpOiBMaWtld2lzZS4KLSsJ KHN0YXBfY29tcGlsZV90b19heCk6IExpa2V3aXNlLgotKwkoY29tcGlsZV9wcm9iZV9hcmcpOiBS ZWZhY3RvciBub3QgdG8gcGFzcyBgb2JqZmlsZScgYW55bW9yZS4KLSsJKGhhbmRsZV9zdGFwX3By b2JlKTogRmlsbCBgb2JqZmlsZScgZmllbGQgZnJvbSBgc3RydWN0IHByb2JlJy4KLSsJKHN0YXBf Z2VuX2luZm9fcHJvYmVzX3RhYmxlX2hlYWRlcik6IFJlbW92ZSBgb2JqZmlsZScgYXJndW1lbnQu Ci0rCSogc3ltZmlsZS5oIChzdHJ1Y3Qgc3ltX3Byb2JlX2ZucykgPHN5bV9ldmFsdWF0ZV9wcm9i ZV9hcmd1bWVudCwKLSsJc3ltX2NvbXBpbGVfdG9fYXg+OiBMaWtld2lzZS4KLSsKLSAyMDEyLTA3 LTE4ICBUZXJyeSBHdW8gIDx0ZXJyeS5ndW9AYXJtLmNvbT4KLSAKLSAJUFIgMTQzMjkKLS0tLSBz cmMvZ2RiL2VsZnJlYWQuYwkyMDEyLzA2LzI2IDIwOjE0OjAxCTEuMTMzCi0rKysgc3JjL2dkYi9l bGZyZWFkLmMJMjAxMi8wNy8xOCAxNjoxMjoxNQkxLjEzNAotQEAgLTE2MzUsMzMgKzE2MzUsMjkg QEAKLSAgICBzeW1maWxlLmguICAqLwotIAotIHN0YXRpYyB1bnNpZ25lZAotLWVsZl9nZXRfcHJv YmVfYXJndW1lbnRfY291bnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCSAgICAgIHN0 cnVjdCBwcm9iZSAqcHJvYmUpCi0rZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0 IHByb2JlICpwcm9iZSkKLSB7Ci0tICByZXR1cm4gcHJvYmUtPnBvcHMtPmdldF9wcm9iZV9hcmd1 bWVudF9jb3VudCAocHJvYmUsIG9iamZpbGUpOwotKyAgcmV0dXJuIHByb2JlLT5wb3BzLT5nZXRf cHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKLSB9Ci0gCi0gLyogSW1wbGVtZW50YXRpb24g b2YgYHN5bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCcsIGFzIGRvY3VtZW50ZWQgaW4KLSAgICBz eW1maWxlLmguICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLWVsZl9ldmFsdWF0ZV9w cm9iZV9hcmd1bWVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJICAgICBzdHJ1Y3Qg cHJvYmUgKnByb2JlLAotLQkJCSAgICAgdW5zaWduZWQgbikKLStlbGZfZXZhbHVhdGVfcHJvYmVf YXJndW1lbnQgKHN0cnVjdCBwcm9iZSAqcHJvYmUsIHVuc2lnbmVkIG4pCi0gewotLSAgcmV0dXJu IHByb2JlLT5wb3BzLT5ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUsIG9iamZpbGUsIG4p OwotKyAgcmV0dXJuIHByb2JlLT5wb3BzLT5ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAocHJvYmUs IG4pOwotIH0KLSAKLSAvKiBJbXBsZW1lbnRhdGlvbiBvZiBgc3ltX2NvbXBpbGVfdG9fYXgnLCBh cyBkb2N1bWVudGVkIGluIHN5bWZpbGUuaC4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1lbGZfY29t cGlsZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkgICBzdHJ1Y3QgcHJvYmUg KnByb2JlLAotK2VsZl9jb21waWxlX3RvX2F4IChzdHJ1Y3QgcHJvYmUgKnByb2JlLAotIAkJICAg c3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0gCQkgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwK LSAJCSAgIHVuc2lnbmVkIG4pCi0gewotLSAgcHJvYmUtPnBvcHMtPmNvbXBpbGVfdG9fYXggKHBy b2JlLCBvYmpmaWxlLCBleHByLCB2YWx1ZSwgbik7Ci0rICBwcm9iZS0+cG9wcy0+Y29tcGlsZV90 b19heCAocHJvYmUsIGV4cHIsIHZhbHVlLCBuKTsKLSB9Ci0gCi0gLyogSW1wbGVtZW50YXRpb24g b2YgYHN5bV9yZWxvY2F0ZV9wcm9iZScsIGFzIGRvY3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8K LS0tLSBzcmMvZ2RiL2luZnJ1bi5jCTIwMTIvMDcvMDEgMTA6Mzc6MDQJMS41NDkKLSsrKyBzcmMv Z2RiL2luZnJ1bi5jCTIwMTIvMDcvMTggMTY6MTI6MTYJMS41NTAKLUBAIC01NTE4LDcgKzU1MTgs NiBAQAotIHN0YXRpYyB2b2lkCi0gaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9wcm9iZSAo c3RydWN0IHRocmVhZF9pbmZvICp0cCwKLSAJCQkJICAgIGNvbnN0IHN0cnVjdCBwcm9iZSAqcHJv YmUsCi0tCQkJCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJICAgIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBzdHJ1Y3QgdmFsdWUgKmFyZ192YWx1ZTsKLUBAIC01 NTM0LDcgKzU1MzMsNyBAQAotICAgaWYgKGRlYnVnX2luZnJ1bikKLSAgICAgZnByaW50Zl91bmZp bHRlcmVkIChnZGJfc3RkbG9nLAotIAkJCSJpbmZydW46IGV4Y2VwdGlvbiByZXN1bWUgYXQgJXNc biIsCi0tCQkJcGFkZHJlc3MgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLAotKwkJCXBhZGRy ZXNzIChnZXRfb2JqZmlsZV9hcmNoIChwcm9iZS0+b2JqZmlsZSksCi0gCQkJCSAgaGFuZGxlcikp OwotIAotICAgYnAgPSBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMgKGdldF9mcmFtZV9h cmNoIChmcmFtZSksCi1AQCAtNTU1Miw3ICs1NTUxLDYgQEAKLSAJCQlzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCi0gewotICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKLS0gIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotICAgY29uc3Qgc3RydWN0IHByb2JlICpwcm9iZTsKLSAg IHN0cnVjdCBzeW1ib2wgKmZ1bmM7Ci0gCi1AQCAtNTU2MCwxMSArNTU1OCwxMCBAQAotICAgICAg U3lzdGVtVGFwIHByb2JlIHBvaW50LiAgSWYgc28sIHRoZSBwcm9iZSBoYXMgdHdvIGFyZ3VtZW50 czogdGhlCi0gICAgICBDRkEgYW5kIHRoZSBIQU5ETEVSLiAgV2UgaWdub3JlIHRoZSBDRkEsIGV4 dHJhY3QgdGhlIGhhbmRsZXIsIGFuZAotICAgICAgc2V0IGEgYnJlYWtwb2ludCB0aGVyZS4gICov Ci0tICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAmb2Jq ZmlsZSk7Ci0rICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUp KTsKLSAgIGlmIChwcm9iZSkKLSAgICAgewotLSAgICAgIGluc2VydF9leGNlcHRpb25fcmVzdW1l X2Zyb21fcHJvYmUgKGVjcy0+ZXZlbnRfdGhyZWFkLCBwcm9iZSwKLS0JCQkJCSAgb2JqZmlsZSwg ZnJhbWUpOwotKyAgICAgIGluc2VydF9leGNlcHRpb25fcmVzdW1lX2Zyb21fcHJvYmUgKGVjcy0+ ZXZlbnRfdGhyZWFkLCBwcm9iZSwgZnJhbWUpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAot LS0tIHNyYy9nZGIvcHJvYmUuYwkyMDEyLzA1LzA4IDAxOjM1OjM0CTEuMwotKysrIHNyYy9nZGIv cHJvYmUuYwkyMDEyLzA3LzE4IDE2OjEyOjE3CTEuNAotQEAgLTIwNCw3ICsyMDQsNyBAQAotIC8q IFNlZSBkZWZpbml0aW9uIGluIHByb2JlLmguICAqLwotIAotIHN0cnVjdCBwcm9iZSAqCi0tZmlu ZF9wcm9iZV9ieV9wYyAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0 KQotK2ZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYykKLSB7Ci0gICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZTsKLSAKLUBAIC0yMjEsMTAgKzIyMSw3IEBACi0gICAgIHByb2JlcyA9IG9iamZp bGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlcyAob2JqZmlsZSk7Ci0gICAgIGZv ciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgcHJvYmVzLCBpeCwgcHJvYmUpOyBpeCsr KQotICAgICAgIGlmIChwcm9iZS0+YWRkcmVzcyA9PSBwYykKLS0JewotLQkgICpvYmpmaWxlX291 dCA9IG9iamZpbGU7Ci0tCSAgcmV0dXJuIHByb2JlOwotLQl9Ci0rCXJldHVybiBwcm9iZTsKLSAg IH0KLSAKLSAgIHJldHVybiBOVUxMOwotQEAgLTIzMiwyMSArMjI5LDYgQEAKLSAKLSAMCi0gCi0t LyogQSB1dGlsaXR5IHN0cnVjdHVyZS4gIEEgVkVDIG9mIHRoZXNlIGlzIGJ1aWx0IHdoZW4gaGFu ZGxpbmcgImluZm8KLS0gICBwcm9iZXMiLiAgKi8KLS0KLS1zdHJ1Y3QgcHJvYmVfYW5kX29iamZp bGUKLS17Ci0tICAvKiBUaGUgcHJvYmUuICAqLwotLSAgc3RydWN0IHByb2JlICpwcm9iZTsKLS0K LS0gIC8qIFRoZSBwcm9iZSdzIG9iamZpbGUuICAqLwotLSAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7Ci0tfTsKLS0KLS10eXBlZGVmIHN0cnVjdCBwcm9iZV9hbmRfb2JqZmlsZSBwcm9iZV9hbmRf b2JqZmlsZV9zOwotLURFRl9WRUNfTyAocHJvYmVfYW5kX29iamZpbGVfcyk7Ci0tCi0gLyogQSBo ZWxwZXIgZnVuY3Rpb24gZm9yIGNvbGxlY3RfcHJvYmVzIHRoYXQgY29tcGlsZXMgYSByZWdleHAg YW5kCi0gICAgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gIFRoaXMgaW5zdGFsbHMgYSBj bGVhbnVwIHRvIGZyZWUgdGhlCi0gICAgcmVzdWx0aW5nIHBhdHRlcm4gb24gc3VjY2Vzcy4gIElm IFJYIGlzIE5VTEwsIHRoaXMgZG9lcyBub3RoaW5nLiAgKi8KLUBAIC0yNzUsMTYgKzI1NywxNiBA QAotICAgIElmIFBPUFMgaXMgbm90IE5VTEwsIG9ubHkgcHJvYmVzIG9mIHRoaXMgY2VydGFpbiBw cm9iZV9vcHMgd2lsbCBtYXRjaC4KLSAgICBFYWNoIGFyZ3VtZW50IGlzIGEgcmVnZXhwLCBvciBO VUxMLCB3aGljaCBtYXRjaGVzIGFueXRoaW5nLiAgKi8KLSAKLS1zdGF0aWMgVkVDIChwcm9iZV9h bmRfb2JqZmlsZV9zKSAqCi0rc3RhdGljIFZFQyAocHJvYmVfcCkgKgotIGNvbGxlY3RfcHJvYmVz IChjaGFyICpvYmpuYW1lLCBjaGFyICpwcm92aWRlciwgY2hhciAqcHJvYmVfbmFtZSwKLSAJCWNv bnN0IHN0cnVjdCBwcm9iZV9vcHMgKnBvcHMpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGU7Ci0tICBWRUMgKHByb2JlX2FuZF9vYmpmaWxlX3MpICpyZXN1bHQgPSBOVUxMOwotKyAgVkVD IChwcm9iZV9wKSAqcmVzdWx0ID0gTlVMTDsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwLCAq Y2xlYW51cF90ZW1wczsKLSAgIHJlZ2V4X3Qgb2JqX3BhdCwgcHJvdl9wYXQsIHByb2JlX3BhdDsK LSAKLS0gIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKFZFQ19jbGVhbnVwIChwcm9iZV9hbmRfb2Jq ZmlsZV9zKSwgJnJlc3VsdCk7Ci0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51 cCAocHJvYmVfcCksICZyZXN1bHQpOwotIAotICAgY2xlYW51cF90ZW1wcyA9IG1ha2VfY2xlYW51 cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLSAgIGNvbXBpbGVfcnhfb3JfZXJyb3IgKCZwcm92X3Bh dCwgcHJvdmlkZXIsIF8oIkludmFsaWQgcHJvdmlkZXIgcmVnZXhwIikpOwotQEAgLTMxMCw4ICsy OTIsNiBAQAotIAotICAgICAgIGZvciAoaXggPSAwOyBWRUNfaXRlcmF0ZSAocHJvYmVfcCwgcHJv YmVzLCBpeCwgcHJvYmUpOyBpeCsrKQotIAl7Ci0tCSAgcHJvYmVfYW5kX29iamZpbGVfcyBlbnRy eTsKLS0KLSAJICBpZiAocG9wcyAhPSBOVUxMICYmIHByb2JlLT5wb3BzICE9IHBvcHMpCi0gCSAg ICBjb250aW51ZTsKLSAKLUBAIC0zMjMsOSArMzAzLDcgQEAKLSAJICAgICAgJiYgcmVnZXhlYyAo JnByb2JlX3BhdCwgcHJvYmUtPm5hbWUsIDAsIE5VTEwsIDApICE9IDApCi0gCSAgICBjb250aW51 ZTsKLSAKLS0JICBlbnRyeS5wcm9iZSA9IHByb2JlOwotLQkgIGVudHJ5Lm9iamZpbGUgPSBvYmpm aWxlOwotLQkgIFZFQ19zYWZlX3B1c2ggKHByb2JlX2FuZF9vYmpmaWxlX3MsIHJlc3VsdCwgJmVu dHJ5KTsKLSsJICBWRUNfc2FmZV9wdXNoIChwcm9iZV9wLCByZXN1bHQsIHByb2JlKTsKLSAJfQot ICAgICB9Ci0gCi1AQCAtMzM0LDM2ICszMTIsMzYgQEAKLSAgIHJldHVybiByZXN1bHQ7Ci0gfQot IAotLS8qIEEgcXNvcnQgY29tcGFyaXNvbiBmdW5jdGlvbiBmb3IgcHJvYmVfYW5kX29iamZpbGVf cyBvYmplY3RzLiAgKi8KLSsvKiBBIHFzb3J0IGNvbXBhcmlzb24gZnVuY3Rpb24gZm9yIHByb2Jl X3Agb2JqZWN0cy4gICovCi0gCi0gc3RhdGljIGludAotLWNvbXBhcmVfZW50cmllcyAoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLStjb21wYXJlX3Byb2JlcyAoY29uc3Qgdm9pZCAqYSwg Y29uc3Qgdm9pZCAqYikKLSB7Ci0tICBjb25zdCBwcm9iZV9hbmRfb2JqZmlsZV9zICplYSA9IGE7 Ci0tICBjb25zdCBwcm9iZV9hbmRfb2JqZmlsZV9zICplYiA9IGI7Ci0rICBjb25zdCBzdHJ1Y3Qg cHJvYmUgKnBhID0gKigoY29uc3Qgc3RydWN0IHByb2JlICoqKSBhKTsKLSsgIGNvbnN0IHN0cnVj dCBwcm9iZSAqcGIgPSAqKChjb25zdCBzdHJ1Y3QgcHJvYmUgKiopIGIpOwotICAgaW50IHY7Ci0g Ci0tICB2ID0gc3RyY21wIChlYS0+cHJvYmUtPnByb3ZpZGVyLCBlYi0+cHJvYmUtPnByb3ZpZGVy KTsKLSsgIHYgPSBzdHJjbXAgKHBhLT5wcm92aWRlciwgcGItPnByb3ZpZGVyKTsKLSAgIGlmICh2 KQotICAgICByZXR1cm4gdjsKLSAKLS0gIHYgPSBzdHJjbXAgKGVhLT5wcm9iZS0+bmFtZSwgZWIt PnByb2JlLT5uYW1lKTsKLSsgIHYgPSBzdHJjbXAgKHBhLT5uYW1lLCBwYi0+bmFtZSk7Ci0gICBp ZiAodikKLSAgICAgcmV0dXJuIHY7Ci0gCi0tICBpZiAoZWEtPnByb2JlLT5hZGRyZXNzIDwgZWIt PnByb2JlLT5hZGRyZXNzKQotKyAgaWYgKHBhLT5hZGRyZXNzIDwgcGItPmFkZHJlc3MpCi0gICAg IHJldHVybiAtMTsKLS0gIGlmIChlYS0+cHJvYmUtPmFkZHJlc3MgPiBlYi0+cHJvYmUtPmFkZHJl c3MpCi0rICBpZiAocGEtPmFkZHJlc3MgPiBwYi0+YWRkcmVzcykKLSAgICAgcmV0dXJuIDE7Ci0g Ci0tICByZXR1cm4gc3RyY21wIChlYS0+b2JqZmlsZS0+bmFtZSwgZWItPm9iamZpbGUtPm5hbWUp OwotKyAgcmV0dXJuIHN0cmNtcCAocGEtPm9iamZpbGUtPm5hbWUsIHBiLT5vYmpmaWxlLT5uYW1l KTsKLSB9Ci0gCi0gLyogSGVscGVyIGZ1bmN0aW9uIHRoYXQgZ2VuZXJhdGUgZW50cmllcyBpbiB0 aGUgdWlfb3V0IHRhYmxlIGJlaW5nCi0gICAgY3JhZnRlZCBieSBgaW5mb19wcm9iZXNfZm9yX29w cycuICAqLwotIAotIHN0YXRpYyB2b2lkCi0tZ2VuX3VpX291dF90YWJsZV9oZWFkZXJfaW5mbyAo VkVDIChwcm9iZV9hbmRfb2JqZmlsZV9zKSAqcHJvYmVzLAotK2dlbl91aV9vdXRfdGFibGVfaGVh ZGVyX2luZm8gKFZFQyAocHJvYmVfcCkgKnByb2JlcywKLSAJCQkgICAgICBjb25zdCBzdHJ1Y3Qg cHJvYmVfb3BzICpwKQotIHsKLSAgIC8qIGBoZWFkaW5ncycgcmVmZXJzIHRvIHRoZSBuYW1lcyBv ZiB0aGUgY29sdW1ucyB3aGVuIHByaW50aW5nIGBpbmZvCi1AQCAtMzkyLDExICszNzAsMTEgQEAK LSAgICAgICAgVkVDX2l0ZXJhdGUgKGluZm9fcHJvYmVfY29sdW1uX3MsIGhlYWRpbmdzLCBpeCwg Y29sdW1uKTsKLSAgICAgICAgKytpeCkKLSAgICAgewotLSAgICAgIHByb2JlX2FuZF9vYmpmaWxl X3MgKmVudHJ5OwotKyAgICAgIHN0cnVjdCBwcm9iZSAqcHJvYmU7Ci0gICAgICAgaW50IGp4Owot ICAgICAgIHNpemVfdCBzaXplX21heCA9IHN0cmxlbiAoY29sdW1uLT5wcmludF9uYW1lKTsKLSAK LS0gICAgICBmb3IgKGp4ID0gMDsgVkVDX2l0ZXJhdGUgKHByb2JlX2FuZF9vYmpmaWxlX3MsIHBy b2JlcywgangsIGVudHJ5KTsgKytqeCkKLSsgICAgICBmb3IgKGp4ID0gMDsgVkVDX2l0ZXJhdGUg KHByb2JlX3AsIHByb2JlcywgangsIHByb2JlKTsgKytqeCkKLSAJewotIAkgIC8qIGBwcm9iZV9m aWVsZHMnIHJlZmVycyB0byB0aGUgdmFsdWVzIG9mIGVhY2ggbmV3IGZpZWxkIHRoYXQgdGhpcwot IAkgICAgIHByb2JlIHdpbGwgZGlzcGxheS4gICovCi1AQCAtNDA1LDEyICszODMsMTEgQEAKLSAJ ICBjb25zdCBjaGFyICp2YWw7Ci0gCSAgaW50IGt4OwotIAotLQkgIGlmIChlbnRyeS0+cHJvYmUt PnBvcHMgIT0gcCkKLSsJICBpZiAocHJvYmUtPnBvcHMgIT0gcCkKLSAJICAgIGNvbnRpbnVlOwot IAotIAkgIGMyID0gbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoY29uc3RfY2hhcl9wdHIpLCAm cHJvYmVfZmllbGRzKTsKLS0JICBwLT5nZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzIChlbnRy eS0+cHJvYmUsIGVudHJ5LT5vYmpmaWxlLAotLQkJCQkJICAgJnByb2JlX2ZpZWxkcyk7Ci0rCSAg cC0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX3ZhbHVlcyAocHJvYmUsICZwcm9iZV9maWVsZHMpOwot IAotIAkgIGdkYl9hc3NlcnQgKFZFQ19sZW5ndGggKGNvbnN0X2NoYXJfcHRyLCBwcm9iZV9maWVs ZHMpCi0gCQkgICAgICA9PSBoZWFkaW5nc19zaXplKTsKLUBAIC00MzcsMTAgKzQxNCwxMCBAQAot IH0KLSAKLSAvKiBIZWxwZXIgZnVuY3Rpb24gdG8gcHJpbnQgZXh0cmEgaW5mb3JtYXRpb24gYWJv dXQgYSBwcm9iZSBhbmQgYW4gb2JqZmlsZQotLSAgIHJlcHJlc2VudGVkIGJ5IEVOVFJZLiAgKi8K LSsgICByZXByZXNlbnRlZCBieSBQUk9CRS4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1wcmludF91 aV9vdXRfaW5mbyAocHJvYmVfYW5kX29iamZpbGVfcyAqZW50cnkpCi0rcHJpbnRfdWlfb3V0X2lu Zm8gKHN0cnVjdCBwcm9iZSAqcHJvYmUpCi0gewotICAgaW50IGl4OwotICAgaW50IGogPSAwOwot QEAgLTQ1MSwyMyArNDI4LDIxIEBACi0gICBpbmZvX3Byb2JlX2NvbHVtbl9zICpjb2x1bW47Ci0g ICBzdHJ1Y3QgY2xlYW51cCAqYzsKLSAKLS0gIGdkYl9hc3NlcnQgKGVudHJ5ICE9IE5VTEwpOwot LSAgZ2RiX2Fzc2VydCAoZW50cnktPnByb2JlICE9IE5VTEwpOwotLSAgZ2RiX2Fzc2VydCAoZW50 cnktPnByb2JlLT5wb3BzICE9IE5VTEwpOwotKyAgZ2RiX2Fzc2VydCAocHJvYmUgIT0gTlVMTCk7 Ci0rICBnZGJfYXNzZXJ0IChwcm9iZS0+cG9wcyAhPSBOVUxMKTsKLSAKLS0gIGlmIChlbnRyeS0+ cHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV9oZWFkZXIgPT0gTlVMTAotLSAgICAg ICYmIGVudHJ5LT5wcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX3ZhbHVlcyA9PSBO VUxMKQotKyAgaWYgKHByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVfaGVhZGVyID09 IE5VTEwKLSsgICAgICAmJiBwcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX3ZhbHVl cyA9PSBOVUxMKQotICAgICByZXR1cm47Ci0gCi0tICBnZGJfYXNzZXJ0IChlbnRyeS0+cHJvYmUt PnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV9oZWFkZXIgIT0gTlVMTAotLQkgICAgICAmJiBl bnRyeS0+cHJvYmUtPnBvcHMtPmdlbl9pbmZvX3Byb2Jlc190YWJsZV92YWx1ZXMgIT0gTlVMTCk7 Ci0rICBnZGJfYXNzZXJ0IChwcm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX2hlYWRl ciAhPSBOVUxMCi0rCSAgICAgICYmIHByb2JlLT5wb3BzLT5nZW5faW5mb19wcm9iZXNfdGFibGVf dmFsdWVzICE9IE5VTEwpOwotIAotICAgYyA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKGlu Zm9fcHJvYmVfY29sdW1uX3MpLCAmaGVhZGluZ3MpOwotICAgbWFrZV9jbGVhbnVwIChWRUNfY2xl YW51cCAoY29uc3RfY2hhcl9wdHIpLCAmdmFsdWVzKTsKLSAKLS0gIGVudHJ5LT5wcm9iZS0+cG9w cy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX2hlYWRlciAoJmhlYWRpbmdzKTsKLS0gIGVudHJ5LT5w cm9iZS0+cG9wcy0+Z2VuX2luZm9fcHJvYmVzX3RhYmxlX3ZhbHVlcyAoZW50cnktPnByb2JlLAot LQkJCQkJCSAgICBlbnRyeS0+b2JqZmlsZSwgJnZhbHVlcyk7Ci0rICBwcm9iZS0+cG9wcy0+Z2Vu X2luZm9fcHJvYmVzX3RhYmxlX2hlYWRlciAoJmhlYWRpbmdzKTsKLSsgIHByb2JlLT5wb3BzLT5n ZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzIChwcm9iZSwgJnZhbHVlcyk7Ci0gCi0gICBnZGJf YXNzZXJ0IChWRUNfbGVuZ3RoIChpbmZvX3Byb2JlX2NvbHVtbl9zLCBoZWFkaW5ncykKLSAJICAg ICAgPT0gVkVDX2xlbmd0aCAoY29uc3RfY2hhcl9wdHIsIHZhbHVlcykpOwotQEAgLTUxNSwxNiAr NDkwLDE2IEBACi0gdm9pZAotIGluZm9fcHJvYmVzX2Zvcl9vcHMgKGNoYXIgKmFyZywgaW50IGZy b21fdHR5LCBjb25zdCBzdHJ1Y3QgcHJvYmVfb3BzICpwb3BzKQotIHsKLS0gIGNoYXIgKnByb3Zp ZGVyLCAqcHJvYmUgPSBOVUxMLCAqb2JqbmFtZSA9IE5VTEw7Ci0rICBjaGFyICpwcm92aWRlciwg KnByb2JlX25hbWUgPSBOVUxMLCAqb2JqbmFtZSA9IE5VTEw7Ci0gICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cCA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKLS0gIFZFQyAocHJv YmVfYW5kX29iamZpbGVfcykgKml0ZW1zOwotKyAgVkVDIChwcm9iZV9wKSAqcHJvYmVzOwotICAg aW50IGksIGFueV9mb3VuZDsKLSAgIGludCB1aV9vdXRfZXh0cmFfZmllbGRzID0gMDsKLSAgIHNp emVfdCBzaXplX2FkZHI7Ci0gICBzaXplX3Qgc2l6ZV9uYW1lID0gc3RybGVuICgiTmFtZSIpOwot ICAgc2l6ZV90IHNpemVfb2JqbmFtZSA9IHN0cmxlbiAoIk9iamVjdCIpOwotICAgc2l6ZV90IHNp emVfcHJvdmlkZXIgPSBzdHJsZW4gKCJQcm92aWRlciIpOwotLSAgcHJvYmVfYW5kX29iamZpbGVf cyAqZW50cnk7Ci0rICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwotICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfY3VycmVudF9hcmNoICgpOwotIAotICAgLyogRG8gd2UgaGF2ZSBhIGBwcm92 aWRlcjpwcm9iZTpvYmpmaWxlJyBzdHlsZSBvZiBsaW5lc3BlYz8gICovCi1AQCAtNTMzLDEwICs1 MDgsMTAgQEAKLSAgICAgewotICAgICAgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHByb3ZpZGVyKTsK LSAKLS0gICAgICBwcm9iZSA9IGV4dHJhY3RfYXJnICgmYXJnKTsKLS0gICAgICBpZiAocHJvYmUp Ci0rICAgICAgcHJvYmVfbmFtZSA9IGV4dHJhY3RfYXJnICgmYXJnKTsKLSsgICAgICBpZiAocHJv YmVfbmFtZSkKLSAJewotLQkgIG1ha2VfY2xlYW51cCAoeGZyZWUsIHByb2JlKTsKLSsJICBtYWtl X2NsZWFudXAgKHhmcmVlLCBwcm9iZV9uYW1lKTsKLSAKLSAJICBvYmpuYW1lID0gZXh0cmFjdF9h cmcgKCZhcmcpOwotIAkgIGlmIChvYmpuYW1lKQotQEAgLTU2NCwyOCArNTM5LDI3IEBACi0gICBl bHNlCi0gICAgIHVpX291dF9leHRyYV9maWVsZHMgPSBnZXRfbnVtYmVyX2V4dHJhX2ZpZWxkcyAo cG9wcyk7Ci0gCi0tICBpdGVtcyA9IGNvbGxlY3RfcHJvYmVzIChvYmpuYW1lLCBwcm92aWRlciwg cHJvYmUsIHBvcHMpOwotLSAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAocHJvYmVfYW5kX29i amZpbGVfcyksICZpdGVtcyk7Ci0rICBwcm9iZXMgPSBjb2xsZWN0X3Byb2JlcyAob2JqbmFtZSwg cHJvdmlkZXIsIHByb2JlX25hbWUsIHBvcHMpOwotKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51 cCAocHJvYmVfcCksICZwcm9iZXMpOwotICAgbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdp bl9lbmQgKGN1cnJlbnRfdWlvdXQsCi0gCQkJCSAgICAgICA0ICsgdWlfb3V0X2V4dHJhX2ZpZWxk cywKLS0JCQkJICAgICAgIFZFQ19sZW5ndGggKHByb2JlX2FuZF9vYmpmaWxlX3MsIGl0ZW1zKSwK LSsJCQkJICAgICAgIFZFQ19sZW5ndGggKHByb2JlX3AsIHByb2JlcyksCi0gCQkJCSAgICAgICAi U3RhdGljUHJvYmVzIik7Ci0gCi0tICBpZiAoIVZFQ19lbXB0eSAocHJvYmVfYW5kX29iamZpbGVf cywgaXRlbXMpKQotLSAgICBxc29ydCAoVkVDX2FkZHJlc3MgKHByb2JlX2FuZF9vYmpmaWxlX3Ms IGl0ZW1zKSwKLS0JICAgVkVDX2xlbmd0aCAocHJvYmVfYW5kX29iamZpbGVfcywgaXRlbXMpLAot LQkgICBzaXplb2YgKHByb2JlX2FuZF9vYmpmaWxlX3MpLCBjb21wYXJlX2VudHJpZXMpOwotKyAg aWYgKCFWRUNfZW1wdHkgKHByb2JlX3AsIHByb2JlcykpCi0rICAgIHFzb3J0IChWRUNfYWRkcmVz cyAocHJvYmVfcCwgcHJvYmVzKSwgVkVDX2xlbmd0aCAocHJvYmVfcCwgcHJvYmVzKSwKLSsJICAg c2l6ZW9mIChwcm9iZV9wKSwgY29tcGFyZV9wcm9iZXMpOwotIAotICAgLyogV2hhdCdzIHRoZSBz aXplIG9mIGFuIGFkZHJlc3MgaW4gb3VyIGFyY2hpdGVjdHVyZT8gICovCi0gICBzaXplX2FkZHIg PSBnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNoKSA9PSA2NCA/IDE4IDogMTA7Ci0gCi0gICAvKiBE ZXRlcm1pbmluZyB0aGUgbWF4aW11bSBzaXplIG9mIGVhY2ggZmllbGQgKGBwcm92aWRlcicsIGBu YW1lJyBhbmQKLSAgICAgIGBvYmpuYW1lJykuICAqLwotLSAgZm9yIChpID0gMDsgVkVDX2l0ZXJh dGUgKHByb2JlX2FuZF9vYmpmaWxlX3MsIGl0ZW1zLCBpLCBlbnRyeSk7ICsraSkKLSsgIGZvciAo aSA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9wLCBwcm9iZXMsIGksIHByb2JlKTsgKytpKQotICAg ICB7Ci0tICAgICAgc2l6ZV9uYW1lID0gbWF4IChzdHJsZW4gKGVudHJ5LT5wcm9iZS0+bmFtZSks IHNpemVfbmFtZSk7Ci0tICAgICAgc2l6ZV9wcm92aWRlciA9IG1heCAoc3RybGVuIChlbnRyeS0+ cHJvYmUtPnByb3ZpZGVyKSwgc2l6ZV9wcm92aWRlcik7Ci0tICAgICAgc2l6ZV9vYmpuYW1lID0g bWF4IChzdHJsZW4gKGVudHJ5LT5vYmpmaWxlLT5uYW1lKSwgc2l6ZV9vYmpuYW1lKTsKLSsgICAg ICBzaXplX25hbWUgPSBtYXggKHN0cmxlbiAocHJvYmUtPm5hbWUpLCBzaXplX25hbWUpOwotKyAg ICAgIHNpemVfcHJvdmlkZXIgPSBtYXggKHN0cmxlbiAocHJvYmUtPnByb3ZpZGVyKSwgc2l6ZV9w cm92aWRlcik7Ci0rICAgICAgc2l6ZV9vYmpuYW1lID0gbWF4IChzdHJsZW4gKHByb2JlLT5vYmpm aWxlLT5uYW1lKSwgc2l6ZV9vYmpuYW1lKTsKLSAgICAgfQotIAotICAgdWlfb3V0X3RhYmxlX2hl YWRlciAoY3VycmVudF91aW91dCwgc2l6ZV9wcm92aWRlciwgdWlfbGVmdCwgInByb3ZpZGVyIiwK LUBAIC02MDEsMjYgKzU3NSwyNiBAQAotICAgICAgIC8qIFdlIGhhdmUgdG8gZ2VuZXJhdGUgdGhl IHRhYmxlIGhlYWRlciBmb3IgZWFjaCBuZXcgcHJvYmUgdHlwZSB0aGF0IHdlCi0gCSB3aWxsIHBy aW50LiAgKi8KLSAgICAgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKHByb2JlX29wc19jcCwg YWxsX3Byb2JlX29wcywgaXgsIHBvKTsgKytpeCkKLS0JZ2VuX3VpX291dF90YWJsZV9oZWFkZXJf aW5mbyAoaXRlbXMsIHBvKTsKLSsJZ2VuX3VpX291dF90YWJsZV9oZWFkZXJfaW5mbyAocHJvYmVz LCBwbyk7Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgZ2VuX3VpX291dF90YWJsZV9oZWFkZXJfaW5m byAoaXRlbXMsIHBvcHMpOwotKyAgICBnZW5fdWlfb3V0X3RhYmxlX2hlYWRlcl9pbmZvIChwcm9i ZXMsIHBvcHMpOwotIAotICAgdWlfb3V0X3RhYmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgc2l6 ZV9vYmpuYW1lLCB1aV9sZWZ0LCAib2JqZWN0IiwKLSAJCSAgICAgICBfKCJPYmplY3QiKSk7Ci0g ICB1aV9vdXRfdGFibGVfYm9keSAoY3VycmVudF91aW91dCk7Ci0gCi0tICBmb3IgKGkgPSAwOyBW RUNfaXRlcmF0ZSAocHJvYmVfYW5kX29iamZpbGVfcywgaXRlbXMsIGksIGVudHJ5KTsgKytpKQot KyAgZm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKHByb2JlX3AsIHByb2JlcywgaSwgcHJvYmUpOyAr K2kpCi0gICAgIHsKLSAgICAgICBzdHJ1Y3QgY2xlYW51cCAqaW5uZXI7Ci0gCi0gICAgICAgaW5u ZXIgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91dCwg InByb2JlIik7Ci0gCi0tICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwg InByb3ZpZGVyIiwgZW50cnktPnByb2JlLT5wcm92aWRlcik7Ci0tICAgICAgdWlfb3V0X2ZpZWxk X3N0cmluZyAoY3VycmVudF91aW91dCwgIm5hbWUiLCBlbnRyeS0+cHJvYmUtPm5hbWUpOwotKyAg ICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJwcm92aWRlciIsIHByb2Jl LT5wcm92aWRlcik7Ci0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwg Im5hbWUiLCBwcm9iZS0+bmFtZSk7Ci0gICAgICAgdWlfb3V0X2ZpZWxkX2NvcmVfYWRkciAoY3Vy cmVudF91aW91dCwgImFkZHIiLAotLQkJCSAgICAgIGdldF9vYmpmaWxlX2FyY2ggKGVudHJ5LT5v YmpmaWxlKSwKLS0JCQkgICAgICBlbnRyeS0+cHJvYmUtPmFkZHJlc3MpOwotKwkJCSAgICAgIGdl dF9vYmpmaWxlX2FyY2ggKHByb2JlLT5vYmpmaWxlKSwKLSsJCQkgICAgICBwcm9iZS0+YWRkcmVz cyk7Ci0gCi0gICAgICAgaWYgKHBvcHMgPT0gTlVMTCkKLSAJewotQEAgLTYyOSwxOSArNjAzLDE5 IEBACi0gCi0gCSAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChwcm9iZV9vcHNfY3AsIGFsbF9w cm9iZV9vcHMsIGl4LCBwbyk7Ci0gCSAgICAgICArK2l4KQotLQkgICAgaWYgKGVudHJ5LT5wcm9i ZS0+cG9wcyA9PSBwbykKLS0JICAgICAgcHJpbnRfdWlfb3V0X2luZm8gKGVudHJ5KTsKLSsJICAg IGlmIChwcm9iZS0+cG9wcyA9PSBwbykKLSsJICAgICAgcHJpbnRfdWlfb3V0X2luZm8gKHByb2Jl KTsKLSAJfQotICAgICAgIGVsc2UKLS0JcHJpbnRfdWlfb3V0X2luZm8gKGVudHJ5KTsKLSsJcHJp bnRfdWlfb3V0X2luZm8gKHByb2JlKTsKLSAKLS0gICAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChj dXJyZW50X3Vpb3V0LCAib2JqZWN0IiwgZW50cnktPm9iamZpbGUtPm5hbWUpOwotKyAgICAgIHVp X291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJvYmplY3QiLCBwcm9iZS0+b2JqZmls ZS0+bmFtZSk7Ci0gICAgICAgdWlfb3V0X3RleHQgKGN1cnJlbnRfdWlvdXQsICJcbiIpOwotIAot ICAgICAgIGRvX2NsZWFudXBzIChpbm5lcik7Ci0gICAgIH0KLSAKLS0gIGFueV9mb3VuZCA9ICFW RUNfZW1wdHkgKHByb2JlX2FuZF9vYmpmaWxlX3MsIGl0ZW1zKTsKLSsgIGFueV9mb3VuZCA9ICFW RUNfZW1wdHkgKHByb2JlX3AsIHByb2Jlcyk7Ci0gICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0g Ci0gICBpZiAoIWFueV9mb3VuZCkKLUBAIC02NjIsMjMgKzYzNiwyNCBAQAotIHByb2JlX3NhZmVf ZXZhbHVhdGVfYXRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgdW5zaWduZWQgbikKLSB7 Ci0gICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwotLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7Ci0r ICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcHJvYmVfZm5zOwotICAgdW5zaWduZWQgbl9w cm9iZXM7Ci0gCi0tICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9wYyAoZnJh bWUpLCAmb2JqZmlsZSk7Ci0rICBwcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9w YyAoZnJhbWUpKTsKLSAgIGlmICghcHJvYmUpCi0gICAgIHJldHVybiBOVUxMOwotLSAgZ2RiX2Fz c2VydCAob2JqZmlsZS0+c2YgJiYgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMpOwotIAotLSAg bl9wcm9iZXMKLS0gICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9i ZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKLS0JCQkJCQkJCXByb2JlKTsKLSsgIGdkYl9hc3Nl cnQgKHByb2JlLT5vYmpmaWxlICE9IE5VTEwpOwotKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZp bGUtPnNmICE9IE5VTEwpOwotKyAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmLT5zeW1f cHJvYmVfZm5zICE9IE5VTEwpOwotKwotKyAgcHJvYmVfZm5zID0gcHJvYmUtPm9iamZpbGUtPnNm LT5zeW1fcHJvYmVfZm5zOwotKyAgbl9wcm9iZXMgPSBwcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVf YXJndW1lbnRfY291bnQgKHByb2JlKTsKLSsKLSAgIGlmIChuID49IG5fcHJvYmVzKQotICAgICBy ZXR1cm4gTlVMTDsKLSAKLS0gIHJldHVybiBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3lt X2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpmaWxlLAotLQkJCQkJCQkJICBwcm9iZSwKLS0J CQkJCQkJCSAgbik7Ci0rICByZXR1cm4gcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJn dW1lbnQgKHByb2JlLCBuKTsKLSB9Ci0gCi0gLyogU2VlIGNvbW1lbnQgaW4gcHJvYmUuaC4gICov Ci0tLS0gc3JjL2dkYi9wcm9iZS5oCTIwMTIvMDQvMjcgMjA6NDc6NTUJMS4xCi0rKysgc3JjL2dk Yi9wcm9iZS5oCTIwMTIvMDcvMTggMTY6MTI6MTcJMS4yCi1AQCAtNjYsMjEgKzY2LDE4IEBACi0g Ci0gICAgIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBvZiBQUk9CRS4gICovCi0g Ci0tICAgIHVuc2lnbmVkICgqZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KSAoc3RydWN0IHByb2Jl ICpwcm9iZSwKLS0JCQkJCSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotKyAgICB1bnNpZ25l ZCAoKmdldF9wcm9iZV9hcmd1bWVudF9jb3VudCkgKHN0cnVjdCBwcm9iZSAqcHJvYmUpOwotIAot ICAgICAvKiBFdmFsdWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGZyb20gdGhlIFBST0JFLCByZXR1cm5p bmcgYSB2YWx1ZQotICAgICAgICBjb3JyZXNwb25kaW5nIHRvIGl0LiAgVGhlIGFyZ3VtZW50IG51 bWJlciBpcyByZXByZXNlbnRlZCBOLiAgKi8KLSAKLSAgICAgc3RydWN0IHZhbHVlICooKmV2YWx1 YXRlX3Byb2JlX2FyZ3VtZW50KSAoc3RydWN0IHByb2JlICpwcm9iZSwKLS0JCQkJCSAgICAgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCQkJICAgICAgdW5zaWduZWQgbik7Ci0gCi0gICAg IC8qIENvbXBpbGUgdGhlIE50aCBhcmd1bWVudCBvZiB0aGUgUFJPQkUgdG8gYW4gYWdlbnQgZXhw cmVzc2lvbi4KLSAgICAgICAgVGhlIGFyZ3VtZW50IG51bWJlciBpcyByZXByZXNlbnRlZCBieSBO LiAgKi8KLSAKLS0gICAgdm9pZCAoKmNvbXBpbGVfdG9fYXgpIChzdHJ1Y3QgcHJvYmUgKnByb2Jl LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4 cHIsCi0rICAgIHZvaWQgKCpjb21waWxlX3RvX2F4KSAoc3RydWN0IHByb2JlICpwcm9iZSwgc3Ry dWN0IGFnZW50X2V4cHIgKmFleHByLAotIAkJCSAgIHN0cnVjdCBheHNfdmFsdWUgKmF4c192YWx1 ZSwgdW5zaWduZWQgbik7Ci0gCi0gICAgIC8qIFNldCB0aGUgc2VtYXBob3JlIGFzc29jaWF0ZWQg d2l0aCB0aGUgUFJPQkUuICBUaGlzIGZ1bmN0aW9uIG9ubHkgbWFrZXMKLUBAIC0xMDgsOCArMTA1 LDggQEAKLSAgICAgdm9pZCAoKmdlbl9pbmZvX3Byb2Jlc190YWJsZV9oZWFkZXIpIChWRUMgKGlu Zm9fcHJvYmVfY29sdW1uX3MpICoqaGVhZHMpOwotIAotICAgICAvKiBGdW5jdGlvbiB0aGF0IHdp bGwgZmlsbCBWQUxVRVMgd2l0aCB0aGUgdmFsdWVzIG9mIHRoZSBleHRyYSBmaWVsZHMKLS0gICAg ICAgdG8gYmUgcHJpbnRlZCBmb3IgUFJPQkUgIGFuZCBPQkpGSUxFLiAgSWYgdGhlIGJhY2tlbmQg aW1wbGVtZW50cwotLSAgICAgICB0aGUgYGdlbl91aV9vdXRfdGFibGVfaGVhZGVyJyBtZXRob2Qs IHRoZW4gaXQgc2hvdWxkIGltcGxlbWVudAotKyAgICAgICB0byBiZSBwcmludGVkIGZvciBQUk9C RS4gIElmIHRoZSBiYWNrZW5kIGltcGxlbWVudHMgdGhlCi0rICAgICAgIGBnZW5fdWlfb3V0X3Rh YmxlX2hlYWRlcicgbWV0aG9kLCB0aGVuIGl0IHNob3VsZCBpbXBsZW1lbnQKLSAgICAgICAgdGhp cyBtZXRob2QgYXMgd2VsbC4gIFRoZSBiYWNrZW5kIHNob3VsZCBhbHNvIGd1YXJhbnRlZSB0aGF0 IHRoZQotICAgICAgICBvcmRlciBhbmQgdGhlIG51bWJlciBvZiB2YWx1ZXMgaW4gdGhlIHZlY3Rv ciBpcyBleGFjdGx5IHRoZSBzYW1lCi0gICAgICAgIGFzIHRoZSBvcmRlciBvZiB0aGUgZXh0cmEg ZmllbGRzIHByb3ZpZGVkIGluIHRoZSBtZXRob2QKLUBAIC0xMTgsNyArMTE1LDYgQEAKLSAgICAg ICAgcG9zaXRpb24gaW4gdGhlIHZlY3Rvci4gICovCi0gCi0gICAgIHZvaWQgKCpnZW5faW5mb19w cm9iZXNfdGFibGVfdmFsdWVzKSAoc3RydWN0IHByb2JlICpwcm9iZSwKLS0JCQkJCSAgc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCQkgIFZFQyAoY29uc3RfY2hhcl9wdHIpICoqdmFsdWVz KTsKLSAgIH07Ci0gCi1AQCAtMTU3LDYgKzE1MywxMSBAQAotICAgICAvKiBUaGUgb3BlcmF0aW9u cyBhc3NvY2lhdGVkIHdpdGggdGhpcyBwcm9iZS4gICovCi0gICAgIGNvbnN0IHN0cnVjdCBwcm9i ZV9vcHMgKnBvcHM7Ci0gCi0rICAgIC8qIFRoZSBvYmpmaWxlIHdoaWNoIGNvbnRhaW5zIHRoaXMg cHJvYmUuICBFdmVuIGlmIHRoZSBwcm9iZSBpcyBhbHNvCi0rICAgICAgIHByZXNlbnQgaW4gYSBz ZXBhcmF0ZSBkZWJ1ZyBvYmpmaWxlLCB0aGlzIHZhcmlhYmxlIGFsd2F5cyBwb2ludHMgdG8KLSsg ICAgICAgdGhlIG5vbi1zZXBhcmF0ZSBkZWJ1ZyBvYmpmaWxlLiAgKi8KLSsgICAgc3RydWN0IG9i amZpbGUgKm9iamZpbGU7Ci0rCi0gICAgIC8qIFRoZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCi0g ICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gCi1AQCAtMTgxLDExICsxODIsOSBAQAotIGV4dGVybiB2 b2lkIHJlZ2lzdGVyX3Byb2JlX29wcyAoc3RydWN0IHByb2JlICpwcm9iZSk7Ci0gCi0gLyogR2l2 ZW4gYSBQQywgZmluZCBhbiBhc3NvY2lhdGVkIHByb2JlIHdpdGggdHlwZSBQVFlQRS4gIElmIGEg cHJvYmUgaXMKLS0gICBmb3VuZCwgc2V0ICpPQkpGSUxFX09VVCB0byB0aGUgcHJvYmUncyBvYmpm aWxlLCBhbmQgcmV0dXJuIHRoZQotLSAgIHByb2JlLiAgSWYgbm8gcHJvYmUgaXMgZm91bmQsIHJl dHVybiBOVUxMLiAgKi8KLSsgICBmb3VuZCwgcmV0dXJuIGl0LiAgSWYgbm8gcHJvYmUgaXMgZm91 bmQsIHJldHVybiBOVUxMLiAgKi8KLSAKLS1leHRlcm4gc3RydWN0IHByb2JlICpmaW5kX3Byb2Jl X2J5X3BjIChDT1JFX0FERFIgcGMsCi0tCQkJCSAgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZp bGVfb3V0KTsKLStleHRlcm4gc3RydWN0IHByb2JlICpmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FE RFIgcGMpOwotIAotIC8qIFNlYXJjaCBPQkpGSUxFIGZvciBhIHByb2JlIHdpdGggdGhlIGdpdmVu IFBST1ZJREVSLCBOQU1FIGFuZCBQVFlQRS4KLSAgICBSZXR1cm4gYSBWRUMgb2YgYWxsIHByb2Jl cyB0aGF0IHdlcmUgZm91bmQuICBJZiBubyBtYXRjaGluZyBwcm9iZQotLS0tIHNyYy9nZGIvc3Rh cC1wcm9iZS5jCTIwMTIvMDUvMDggMDE6MzU6MzUJMS40Ci0rKysgc3JjL2dkYi9zdGFwLXByb2Jl LmMJMjAxMi8wNy8xOCAxNjoxMjoxNwkxLjUKLUBAIC05MDMsMTAgKzkwMywxMCBAQAotICAgIHRo aXMgaW5mb3JtYXRpb24uICAqLwotIAotIHN0YXRpYyB2b2lkCi0tc3RhcF9wYXJzZV9wcm9iZV9h cmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUpCi0rc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZSkKLSB7Ci0gICBjb25zdCBjaGFyICpjdXI7Ci0tICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBnZXRfb2JqZmlsZV9hcmNoIChwcm9iZS0+cC5vYmpmaWxlKTsKLSAKLSAgIGdkYl9hc3NlcnQg KCFwcm9iZS0+YXJnc19wYXJzZWQpOwotICAgY3VyID0gcHJvYmUtPmFyZ3NfdS50ZXh0OwotQEAg LTk5MSwxNSArOTkxLDE0IEBACi0gICAgYXJndW1lbnQgc3RyaW5nLiAgKi8KLSAKLSBzdGF0aWMg dW5zaWduZWQKLS1zdGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IHByb2JlICpw cm9iZV9nZW5lcmljLAotLQkJCSAgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLStzdGFw X2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IHByb2JlICpwcm9iZV9nZW5lcmljKQot IHsKLSAgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSA9IChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBw cm9iZV9nZW5lcmljOwotIAotICAgZ2RiX2Fzc2VydCAocHJvYmVfZ2VuZXJpYy0+cG9wcyA9PSAm c3RhcF9wcm9iZV9vcHMpOwotIAotICAgaWYgKCFwcm9iZS0+YXJnc19wYXJzZWQpCi0tICAgIHN0 YXBfcGFyc2VfcHJvYmVfYXJndW1lbnRzIChwcm9iZSwgb2JqZmlsZSk7Ci0rICAgIHN0YXBfcGFy c2VfcHJvYmVfYXJndW1lbnRzIChwcm9iZSk7Ci0gCi0gICBnZGJfYXNzZXJ0IChwcm9iZS0+YXJn c19wYXJzZWQpOwotICAgcmV0dXJuIFZFQ19sZW5ndGggKHN0YXBfcHJvYmVfYXJnX3MsIHByb2Jl LT5hcmdzX3UudmVjKTsKLUBAIC0xMDQyLDEwICsxMDQxLDEwIEBACi0gfQotIAotIHN0YXRpYyBz dHJ1Y3Qgc3RhcF9wcm9iZV9hcmcgKgotLXN0YXBfZ2V0X2FyZyAoc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWduZWQgbikKLStzdGFwX2dldF9h cmcgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwgdW5zaWduZWQgbikKLSB7Ci0gICBpZiAoIXBy b2JlLT5hcmdzX3BhcnNlZCkKLS0gICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHByb2Jl LCBvYmpmaWxlKTsKLSsgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHByb2JlKTsKLSAK LSAgIHJldHVybiBWRUNfaW5kZXggKHN0YXBfcHJvYmVfYXJnX3MsIHByb2JlLT5hcmdzX3UudmVj LCBuKTsKLSB9Ci1AQCAtMTA1NCw4ICsxMDUzLDcgQEAKLSAgICBjb3JyZXNwb25kaW5nIHRvIGl0 LiAgQXNzZXJ0aW9uIGlzIHRocm93biBpZiBOIGRvZXMgbm90IGV4aXN0LiAgKi8KLSAKLSBzdGF0 aWMgc3RydWN0IHZhbHVlICoKLS1zdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3Qg cHJvYmUgKnByb2JlX2dlbmVyaWMsCi0tCQkJICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHVuc2lnbmVkIG4pCi0rc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IHByb2Jl ICpwcm9iZV9nZW5lcmljLCB1bnNpZ25lZCBuKQotIHsKLSAgIHN0cnVjdCBzdGFwX3Byb2JlICpz dGFwX3Byb2JlID0gKHN0cnVjdCBzdGFwX3Byb2JlICopIHByb2JlX2dlbmVyaWM7Ci0gICBzdHJ1 Y3Qgc3RhcF9wcm9iZV9hcmcgKmFyZzsKLUBAIC0xMDYzLDcgKzEwNjEsNyBAQAotIAotICAgZ2Ri X2Fzc2VydCAocHJvYmVfZ2VuZXJpYy0+cG9wcyA9PSAmc3RhcF9wcm9iZV9vcHMpOwotIAotLSAg YXJnID0gc3RhcF9nZXRfYXJnIChzdGFwX3Byb2JlLCBvYmpmaWxlLCBuKTsKLSsgIGFyZyA9IHN0 YXBfZ2V0X2FyZyAoc3RhcF9wcm9iZSwgbik7Ci0gICByZXR1cm4gZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChhcmctPmF0eXBlLCBhcmctPmFleHByLCAmcG9zLCBFVkFMX05PUk1BTCk7Ci0gfQot IAotQEAgLTEwNzEsOSArMTA2OSw4IEBACi0gICAgQXNzZXJ0aW9uIGlzIHRocm93biBpZiBOIGRv ZXMgbm90IGV4aXN0LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXN0YXBfY29tcGlsZV90b19heCAo c3RydWN0IHByb2JlICpwcm9iZV9nZW5lcmljLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0J CSAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCi0t CQkgICAgdW5zaWduZWQgbikKLStzdGFwX2NvbXBpbGVfdG9fYXggKHN0cnVjdCBwcm9iZSAqcHJv YmVfZ2VuZXJpYywgc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsCi0rCQkgICAgc3RydWN0IGF4c192 YWx1ZSAqdmFsdWUsIHVuc2lnbmVkIG4pCi0gewotICAgc3RydWN0IHN0YXBfcHJvYmUgKnN0YXBf cHJvYmUgPSAoc3RydWN0IHN0YXBfcHJvYmUgKikgcHJvYmVfZ2VuZXJpYzsKLSAgIHN0cnVjdCBz dGFwX3Byb2JlX2FyZyAqYXJnOwotQEAgLTEwODEsNyArMTA3OCw3IEBACi0gCi0gICBnZGJfYXNz ZXJ0IChwcm9iZV9nZW5lcmljLT5wb3BzID09ICZzdGFwX3Byb2JlX29wcyk7Ci0gCi0tICBhcmcg PSBzdGFwX2dldF9hcmcgKHN0YXBfcHJvYmUsIG9iamZpbGUsIG4pOwotKyAgYXJnID0gc3RhcF9n ZXRfYXJnIChzdGFwX3Byb2JlLCBuKTsKLSAKLSAgIHBjID0gYXJnLT5hZXhwci0+ZWx0czsKLSAg IGdlbl9leHByIChhcmctPmFleHByLCAmcGMsIGV4cHIsIHZhbHVlKTsKLUBAIC0xMTI0LDIwICsx MTIxLDI0IEBACi0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJh bWUgKF8oIk5vIGZyYW1lIHNlbGVjdGVkIikpOwotICAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1l X3BjIChmcmFtZSk7Ci0gICBpbnQgc2VsID0gKGludCkgKHVpbnRwdHJfdCkgZGF0YTsKLS0gIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotICAgc3RydWN0IHByb2JlICpwY19wcm9iZTsKLSsgIGNv bnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5zICpwY19wcm9iZV9mbnM7Ci0gICB1bnNpZ25lZCBuX2Fy Z3M7Ci0gCi0gICAvKiBTRUwgPT0gLTEgbWVhbnMgIl9wcm9iZV9hcmdjIi4gICovCi0gICBnZGJf YXNzZXJ0IChzZWwgPj0gLTEpOwotIAotLSAgcGNfcHJvYmUgPSBmaW5kX3Byb2JlX2J5X3BjIChw YywgJm9iamZpbGUpOwotKyAgcGNfcHJvYmUgPSBmaW5kX3Byb2JlX2J5X3BjIChwYyk7Ci0gICBp ZiAocGNfcHJvYmUgPT0gTlVMTCkKLSAgICAgZXJyb3IgKF8oIk5vIFN5c3RlbVRhcCBwcm9iZSBh dCBQQyAlcyIpLCBjb3JlX2FkZHJfdG9fc3RyaW5nIChwYykpOwotIAotLSAgbl9hcmdzCi0tICAg ID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291 bnQgKG9iamZpbGUsCi0tCQkJCQkJCQlwY19wcm9iZSk7Ci0rICBnZGJfYXNzZXJ0IChwY19wcm9i ZS0+b2JqZmlsZSAhPSBOVUxMKTsKLSsgIGdkYl9hc3NlcnQgKHBjX3Byb2JlLT5vYmpmaWxlLT5z ZiAhPSBOVUxMKTsKLSsgIGdkYl9hc3NlcnQgKHBjX3Byb2JlLT5vYmpmaWxlLT5zZi0+c3ltX3By b2JlX2ZucyAhPSBOVUxMKTsKLSsKLSsgIHBjX3Byb2JlX2ZucyA9IHBjX3Byb2JlLT5vYmpmaWxl LT5zZi0+c3ltX3Byb2JlX2ZuczsKLSsKLSsgIG5fYXJncyA9IHBjX3Byb2JlX2Zucy0+c3ltX2dl dF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGNfcHJvYmUpOwotICAgaWYgKHNlbCA9PSAtMSkKLSAg ICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChhcmNoKS0+YnVpbHRp bl9pbnQsIG5fYXJncyk7Ci0gCi1AQCAtMTE0NSw5ICsxMTQ2LDcgQEAKLSAgICAgZXJyb3IgKF8o IkludmFsaWQgcHJvYmUgYXJndW1lbnQgJWQgLS0gcHJvYmUgaGFzICV1IGFyZ3VtZW50cyBhdmFp bGFibGUiKSwKLSAJICAgc2VsLCBuX2FyZ3MpOwotIAotLSAgcmV0dXJuIG9iamZpbGUtPnNmLT5z eW1fcHJvYmVfZm5zLT5zeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKG9iamZpbGUsCi0tCQkJ CQkJCQkgIHBjX3Byb2JlLAotLQkJCQkJCQkJICBzZWwpOwotKyAgcmV0dXJuIHBjX3Byb2JlX2Zu cy0+c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwY19wcm9iZSwgc2VsKTsKLSB9Ci0gCi0g LyogVGhpcyBpcyBjYWxsZWQgdG8gY29tcGlsZSBvbmUgb2YgdGhlICRfcHJvYmVfYXJnKiBjb252 ZW5pZW5jZQotQEAgLTExNTksMjAgKzExNTgsMjUgQEAKLSB7Ci0gICBDT1JFX0FERFIgcGMgPSBl eHByLT5zY29wZTsKLSAgIGludCBzZWwgPSAoaW50KSAodWludHB0cl90KSBkYXRhOwotLSAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGU7Ci0gICBzdHJ1Y3QgcHJvYmUgKnBjX3Byb2JlOwotKyAgY29u c3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnBjX3Byb2JlX2ZuczsKLSAgIGludCBuX3Byb2JlczsK LSAKLSAgIC8qIFNFTCA9PSAtMSBtZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8KLSAgIGdkYl9hc3Nl cnQgKHNlbCA+PSAtMSk7Ci0gCi0tICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjLCAm b2JqZmlsZSk7Ci0rICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlfcGMgKHBjKTsKLSAgIGlmIChw Y19wcm9iZSA9PSBOVUxMKQotICAgICBlcnJvciAoXygiTm8gU3lzdGVtVGFwIHByb2JlIGF0IFBD ICVzIiksIGNvcmVfYWRkcl90b19zdHJpbmcgKHBjKSk7Ci0gCi0tICBuX3Byb2JlcwotLSAgICA9 IG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50 IChvYmpmaWxlLAotLQkJCQkJCQkJcGNfcHJvYmUpOwotKyAgZ2RiX2Fzc2VydCAocGNfcHJvYmUt Pm9iamZpbGUgIT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwY19wcm9iZS0+b2JqZmlsZS0+c2Yg IT0gTlVMTCk7Ci0rICBnZGJfYXNzZXJ0IChwY19wcm9iZS0+b2JqZmlsZS0+c2YtPnN5bV9wcm9i ZV9mbnMgIT0gTlVMTCk7Ci0rCi0rICBwY19wcm9iZV9mbnMgPSBwY19wcm9iZS0+b2JqZmlsZS0+ c2YtPnN5bV9wcm9iZV9mbnM7Ci0rCi0rICBuX3Byb2JlcyA9IHBjX3Byb2JlX2Zucy0+c3ltX2dl dF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGNfcHJvYmUpOwotKwotICAgaWYgKHNlbCA9PSAtMSkK LSAgICAgewotICAgICAgIHZhbHVlLT5raW5kID0gYXhzX3J2YWx1ZTsKLUBAIC0xMTg2LDggKzEx OTAsNyBAQAotICAgICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAlZCAtLSBwcm9i ZSBoYXMgJWQgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAotIAkgICBzZWwsIG5fcHJvYmVzKTsKLSAK LS0gIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zLT5zeW1fY29tcGlsZV90b19heCAob2JqZmls ZSwgcGNfcHJvYmUsCi0tCQkJCQkJIGV4cHIsIHZhbHVlLCBzZWwpOwotKyAgcGNfcHJvYmVfZm5z LT5zeW1fY29tcGlsZV90b19heCAocGNfcHJvYmUsIGV4cHIsIHZhbHVlLCBzZWwpOwotIH0KLSAK LSAMCi1AQCAtMTI5Nyw2ICsxMzAwLDcgQEAKLSAKLSAgIHJldCA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKnJldCkpOwotICAgcmV0LT5wLnBvcHMg PSAmc3RhcF9wcm9iZV9vcHM7Ci0rICByZXQtPnAub2JqZmlsZSA9IG9iamZpbGU7Ci0gCi0gICAv KiBQcm92aWRlciBhbmQgdGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KLSAgIHJldC0+cC5wcm92 aWRlciA9ICZlbC0+ZGF0YVszICogc2l6ZV07Ci1AQCAtMTQ4MSwxNSArMTQ4NSwxNiBAQAotIAot IHN0YXRpYyB2b2lkCi0gc3RhcF9nZW5faW5mb19wcm9iZXNfdGFibGVfdmFsdWVzIChzdHJ1Y3Qg cHJvYmUgKnByb2JlX2dlbmVyaWMsCi0tCQkJCSAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot IAkJCQkgICBWRUMgKGNvbnN0X2NoYXJfcHRyKSAqKnJldCkKLSB7Ci0gICBzdHJ1Y3Qgc3RhcF9w cm9iZSAqcHJvYmUgPSAoc3RydWN0IHN0YXBfcHJvYmUgKikgcHJvYmVfZ2VuZXJpYzsKLS0gIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0rICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKLSAgIGNvbnN0IGNoYXIgKnZhbCA9IE5VTEw7Ci0gCi0g ICBnZGJfYXNzZXJ0IChwcm9iZV9nZW5lcmljLT5wb3BzID09ICZzdGFwX3Byb2JlX29wcyk7Ci0g Ci0rICBnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAocHJvYmUtPnAub2JqZmlsZSk7Ci0rCi0g ICBpZiAocHJvYmUtPnNlbV9hZGRyKQotICAgICB2YWwgPSBwcmludF9jb3JlX2FkZHJlc3MgKGdk YmFyY2gsIHByb2JlLT5zZW1fYWRkcik7Ci0gCi0tLS0gc3JjL2dkYi9zeW1maWxlLmgJMjAxMi8w NS8yNCAyMjoxNDozNQkxLjEwOQotKysrIHNyYy9nZGIvc3ltZmlsZS5oCTIwMTIvMDcvMTggMTY6 MTI6MTcJMS4xMTAKLUBAIC0zMjAsOCArMzIwLDcgQEAKLSAgICAgIGhhdmUgY29tZSBmcm9tIGEg Y2FsbCB0byB0aGlzIG9iamZpbGUncyBzeW1fZ2V0X3Byb2JlcyBtZXRob2QuCi0gICAgICBJZiB5 b3UgcHJvdmlkZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBzeW1fZ2V0X3Byb2JlcywgeW91IG11c3QK LSAgICAgIGltcGxlbWVudCB0aGlzIG1ldGhvZCBhcyB3ZWxsLiAgKi8KLS0gIHVuc2lnbmVkICgq c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCkgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot LQkJCQkJICAgIHN0cnVjdCBwcm9iZSAqcHJvYmUpOwotKyAgdW5zaWduZWQgKCpzeW1fZ2V0X3By b2JlX2FyZ3VtZW50X2NvdW50KSAoc3RydWN0IHByb2JlICpwcm9iZSk7Ci0gCi0gICAvKiBFdmFs dWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGF2YWlsYWJsZSB0byBQUk9CRS4gIFBST0JFIHdpbGwgaGF2 ZQotICAgICAgY29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9iamZpbGUncyBzeW1fZ2V0X3Byb2Jl cyBtZXRob2QuICBOIHdpbGwKLUBAIC0zMzAsOCArMzI5LDcgQEAKLSAgICAgIFBDIHdpbGwgbWF0 Y2ggdGhlIGFkZHJlc3Mgb2YgdGhlIHByb2JlLiAgSWYgeW91IHByb3ZpZGUgYW4KLSAgICAgIGlt cGxlbWVudGF0aW9uIG9mIHN5bV9nZXRfcHJvYmVzLCB5b3UgbXVzdCBpbXBsZW1lbnQgdGhpcyBt ZXRob2QKLSAgICAgIGFzIHdlbGwuICAqLwotLSAgc3RydWN0IHZhbHVlICooKnN5bV9ldmFsdWF0 ZV9wcm9iZV9hcmd1bWVudCkgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCQkJCXN0cnVj dCBwcm9iZSAqcHJvYmUsCi0rICBzdHJ1Y3QgdmFsdWUgKigqc3ltX2V2YWx1YXRlX3Byb2JlX2Fy Z3VtZW50KSAoc3RydWN0IHByb2JlICpwcm9iZSwKLSAJCQkJCQl1bnNpZ25lZCBuKTsKLSAKLSAg IC8qIENvbXBpbGUgdGhlIE50aCBwcm9iZSBhcmd1bWVudCB0byBhbiBhZ2VudCBleHByZXNzaW9u LiAgUFJPQkUKLUBAIC0zMzksOCArMzM3LDcgQEAKLSAgICAgIG1ldGhvZC4gIE4gd2lsbCBiZSBi ZXR3ZWVuIDAgYW5kIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCi0gICAgICBhdmFpbGFibGUgdG8g dGhpcyBwcm9iZS4gIEVYUFIgYW5kIFZBTFVFIGFyZSB0aGUgYWdlbnQgZXhwcmVzc2lvbgotICAg ICAgdGhhdCBpcyBiZWluZyB1cGRhdGVkLiAgKi8KLS0gIHZvaWQgKCpzeW1fY29tcGlsZV90b19h eCkgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotLQkJCSAgICAgc3RydWN0IHByb2JlICpwcm9i ZSwKLSsgIHZvaWQgKCpzeW1fY29tcGlsZV90b19heCkgKHN0cnVjdCBwcm9iZSAqcHJvYmUsCi0g CQkJICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKLSAJCQkgICAgIHN0cnVjdCBheHNfdmFs dWUgKnZhbHVlLAotIAkJCSAgICAgdW5zaWduZWQgbik7CgpkaWZmIC0tZ2l0IGEvZ2RiLWRsb3Bl bi1zdGFwLXByb2JlLTJvZjcucGF0Y2ggYi9nZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mNy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFiMzVlOS4uMDAwMDAwMAotLS0gYS9n ZGItZGxvcGVuLXN0YXAtcHJvYmUtMm9mNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc0ICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTItMDcvbXNnMDAxMjQu aHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAxNjoxMjoxNQkxLjE0NDc0 Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wNy8xOCAxNjoyMDozNgkxLjE0NDc1Ci0jIyAt MSw1ICsxLDEwIEBACi0gMjAxMi0wNy0xOCAgU2VyZ2lvIER1cmlnYW4gSnVuaW9yICA8c2VyZ2lv ZGpAcmVkaGF0LmNvbT4KLSAKLSsJKiBwcm9iZS5jIChwcm9iZV9zYWZlX2V2YWx1YXRlX2F0X3Bj KTogUmVuYW1lIHZhcmlhYmxlIGBuX3Byb2JlcycuCi0rCSogc3RhcC1wcm9iZS5jIChjb21waWxl X3Byb2JlX2FyZyk6IExpa2V3aXNlLgotKwotKzIwMTItMDctMTggIFNlcmdpbyBEdXJpZ2FuIEp1 bmlvciAgPHNlcmdpb2RqQHJlZGhhdC5jb20+Ci0rCi0gCSogZWxmcmVhZC5jIChlbGZfZ2V0X3By b2JlX2FyZ3VtZW50X2NvdW50KTogUmVtb3ZlIGBvYmpmaWxlJyBhcmd1bWVudC4KLSAJKGVsZl9j b21waWxlX3RvX2F4KTogTGlrZXdpc2UuCi0gCSogaW5mcnVuLmMgKGluc2VydF9leGNlcHRpb25f cmVzdW1lX2Zyb21fcHJvYmUpOiBMaWtld2lzZS4KLS0tLSBzcmMvZ2RiL3Byb2JlLmMJMjAxMi8w Ny8xOCAxNjoxMjoxNwkxLjQKLSsrKyBzcmMvZ2RiL3Byb2JlLmMJMjAxMi8wNy8xOCAxNjoyMDo0 MwkxLjUKLUBAIC02MzcsNyArNjM3LDcgQEAKLSB7Ci0gICBzdHJ1Y3QgcHJvYmUgKnByb2JlOwot ICAgY29uc3Qgc3RydWN0IHN5bV9wcm9iZV9mbnMgKnByb2JlX2ZuczsKLS0gIHVuc2lnbmVkIG5f cHJvYmVzOwotKyAgdW5zaWduZWQgbl9hcmdzOwotIAotICAgcHJvYmUgPSBmaW5kX3Byb2JlX2J5 X3BjIChnZXRfZnJhbWVfcGMgKGZyYW1lKSk7Ci0gICBpZiAoIXByb2JlKQotQEAgLTY0OCw5ICs2 NDgsOSBAQAotICAgZ2RiX2Fzc2VydCAocHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5z ICE9IE5VTEwpOwotIAotICAgcHJvYmVfZm5zID0gcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJv YmVfZm5zOwotLSAgbl9wcm9iZXMgPSBwcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRf Y291bnQgKHByb2JlKTsKLSsgIG5fYXJncyA9IHByb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1 bWVudF9jb3VudCAocHJvYmUpOwotIAotLSAgaWYgKG4gPj0gbl9wcm9iZXMpCi0rICBpZiAobiA+ PSBuX2FyZ3MpCi0gICAgIHJldHVybiBOVUxMOwotIAotICAgcmV0dXJuIHByb2JlX2Zucy0+c3lt X2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwcm9iZSwgbik7Ci0tLS0gc3JjL2dkYi9zdGFwLXBy b2JlLmMJMjAxMi8wNy8xOCAxNjoxMjoxNwkxLjUKLSsrKyBzcmMvZ2RiL3N0YXAtcHJvYmUuYwky MDEyLzA3LzE4IDE2OjIwOjQzCTEuNgotQEAgLTExNjAsNyArMTE2MCw3IEBACi0gICBpbnQgc2Vs ID0gKGludCkgKHVpbnRwdHJfdCkgZGF0YTsKLSAgIHN0cnVjdCBwcm9iZSAqcGNfcHJvYmU7Ci0g ICBjb25zdCBzdHJ1Y3Qgc3ltX3Byb2JlX2ZucyAqcGNfcHJvYmVfZm5zOwotLSAgaW50IG5fcHJv YmVzOwotKyAgaW50IG5fYXJnczsKLSAKLSAgIC8qIFNFTCA9PSAtMSBtZWFucyAiX3Byb2JlX2Fy Z2MiLiAgKi8KLSAgIGdkYl9hc3NlcnQgKHNlbCA+PSAtMSk7Ci1AQCAtMTE3NSwyMCArMTE3NSwy MCBAQAotIAotICAgcGNfcHJvYmVfZm5zID0gcGNfcHJvYmUtPm9iamZpbGUtPnNmLT5zeW1fcHJv YmVfZm5zOwotIAotLSAgbl9wcm9iZXMgPSBwY19wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJn dW1lbnRfY291bnQgKHBjX3Byb2JlKTsKLSsgIG5fYXJncyA9IHBjX3Byb2JlX2Zucy0+c3ltX2dl dF9wcm9iZV9hcmd1bWVudF9jb3VudCAocGNfcHJvYmUpOwotIAotICAgaWYgKHNlbCA9PSAtMSkK LSAgICAgewotICAgICAgIHZhbHVlLT5raW5kID0gYXhzX3J2YWx1ZTsKLSAgICAgICB2YWx1ZS0+ dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZXhwci0+Z2RiYXJjaCktPmJ1aWx0aW5faW50OwotLSAgICAg IGF4X2NvbnN0X2wgKGV4cHIsIG5fcHJvYmVzKTsKLSsgICAgICBheF9jb25zdF9sIChleHByLCBu X2FyZ3MpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotICAgZ2RiX2Fzc2VydCAoc2VsID49 IDApOwotLSAgaWYgKHNlbCA+PSBuX3Byb2JlcykKLSsgIGlmIChzZWwgPj0gbl9hcmdzKQotICAg ICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAlZCAtLSBwcm9iZSBoYXMgJWQgYXJn dW1lbnRzIGF2YWlsYWJsZSIpLAotLQkgICBzZWwsIG5fcHJvYmVzKTsKLSsJICAgc2VsLCBuX2Fy Z3MpOwotIAotICAgcGNfcHJvYmVfZm5zLT5zeW1fY29tcGlsZV90b19heCAocGNfcHJvYmUsIGV4 cHIsIHZhbHVlLCBzZWwpOwotIH0KCmRpZmYgLS1naXQgYS9nZGItZGxvcGVuLXN0YXAtcHJvYmUt Nm9mNy5wYXRjaCBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCmluZGV4IDU3NDE1 MGUuLmFmNDQzMDUgMTAwNjQ0Ci0tLSBhL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNo CisrKyBiL2dkYi1kbG9wZW4tc3RhcC1wcm9iZS02b2Y3LnBhdGNoCkBAIC04MSwxMSArODEsMTEg QEAgZ2RiL3Rlc3RzdWl0ZQogCSogZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5jOiBMaWtld2lzZS4K IAkqIGdkYi5iYXNlL2JyZWFrLWRsbW9wZW4tc29saWIuYzogTGlrZXdpc2UuCiAKLUluZGV4OiBn ZGItNy40LjkxLjIwMTIwODE0L2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9icmVha3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIw ODE0Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEyLTA4LTE0IDE3OjMxOjM3LjA1MDk4NDQyNyAr MDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2JyZWFrcG9pbnQuaAkyMDEyLTA4LTE0 IDE3OjM0OjQ0LjIwMzc0NjYwMSArMDIwMAotQEAgLTE1MTUsOCArMTUxNSw2IEBAIGV4dGVybiBp bnQgdXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTAxLTE4IDIzOjU3OjE0Ljc4Mjk3ODQ4NSArMDEw MAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTAxLTE4IDIz OjU3OjUwLjUxMTc5Mjg5MCArMDEwMAorQEAgLTE1NDgsOCArMTU0OCw2IEBAIGV4dGVybiBpbnQg dXNlcl9icmVha3BvaW50X3AgKHN0cnVjdCBicmUKICAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBh cmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRpZmllZCBieSBTQUwuICAqLwogIGV4dGVybiBz dHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7 CiAgCkBAIC05NCwxMSArOTQsMTEgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2Jy ZWFrcG9pbnQuaAogIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKICAJCQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSk7CiAg Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NC45MS4yMDEyMDgxNC5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0wOC0xNCAxNzozMTozNy4x Mjg5ODQ0MDQgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9icmVha3BvaW50LmMJ MjAxMi0wOC0xNCAxNzozNDo0NC4yMTE3NDY1OTcgKzAyMDAKLUBAIC01MjA1LDcgKzUyMDUsNyBA QCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlCistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMy0wMS0xOCAyMzo1NzoxNC43ODI5 Nzg0ODUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9icmVha3BvaW50LmMJMjAx My0wMS0xOCAyMzo1Nzo1MC41MTQ3OTI4NzkgKzAxMDAKK0BAIC01MjU0LDcgKzUyNTQsNyBAQCBi cHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlCiAgICAgIHsKICAgICAgICBp ZiAoYnMtPmJyZWFrcG9pbnRfYXQgJiYgYnMtPmJyZWFrcG9pbnRfYXQtPnR5cGUgPT0gYnBfc2hs aWJfZXZlbnQpCiAgCXsKQEAgLTEwNyw3ICsxMDcsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEy MDgxNC9nZGIvYnJlYWtwb2ludC5jCiAgCSAgYnJlYWs7CiAgCX0KICAgICAgfQotQEAgLTUzMDEs MjUgKzUzMDEsNiBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQorQEAgLTUzNTAsMjUgKzUzNTAs NiBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQogICAgdGFyZ2V0X3Rlcm1pbmFsX2luZmVyaW9y ICgpOwogIH0KICAKQEAgLTEzMywxMSArMTMzLDExIEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIw ODE0L2dkYi9icmVha3BvaW50LmMKICAvKiBQcmVwYXJlIFdIQVQgZmluYWwgZGVjaXNpb24gZm9y IGluZnJ1bi4gICovCiAgCiAgLyogRGVjaWRlIHdoYXQgaW5mcnVuIG5lZWRzIHRvIGRvIHdpdGgg dGhpcyBicHN0YXQuICAqLwotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLmgK K0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9zb2xpYi5oCTIwMTItMDItMDMgMTY6MTk6Mzcu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWIuaAkyMDEy LTA4LTE0IDE3OjM0OjQ0LjI1Nzc0NjU4NyArMDIwMAotQEAgLTIxLDYgKzIxLDkgQEAKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3NvbGliLmgJMjAxMy0wMS0xOCAyMzo1NzoxNC43 ODI5Nzg0ODUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi5oCTIwMTMt MDEtMTggMjM6NTc6NTAuNTE1NzkyODc1ICswMTAwCitAQCAtMjAsNiArMjAsOSBAQAogICNpZm5k ZWYgU09MSUJfSAogICNkZWZpbmUgU09MSUJfSAogIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEluZGV4 OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi5oCiAgLyogRm9yd2FyZCBkZWNsJ3MgZm9y IHByb3RvdHlwZXMgKi8KICBzdHJ1Y3Qgc29fbGlzdDsKICBzdHJ1Y3QgdGFyZ2V0X29wczsKLUBA IC05MSw0ICs5NCwxNSBAQCBleHRlcm4gQ09SRV9BRERSIGdkYl9iZmRfbG9va3VwX3N5bWJvbF9m CitAQCAtOTAsNCArOTMsMTUgQEAgZXh0ZXJuIENPUkVfQUREUiBnZGJfYmZkX2xvb2t1cF9zeW1i b2xfZgogIAkJCQkJCQkJICAgICAgdm9pZCAqKSwKICAJCQkJCQkgICAgdm9pZCAqZGF0YSk7CiAg CkBAIC0xNjMsMTEgKzE2MywxMSBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29s aWIuaAogK2V4dGVybiB2b2lkIHVwZGF0ZV9zb2xpYl9icmVha3BvaW50cyAodm9pZCk7CiArCiAg I2VuZGlmIC8qIFNPTElCX0ggKi8KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xp Yi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWIuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjQuOTEuMjAxMjA4MTQub3JpZy9nZGIvc29saWIuYwkyMDEyLTA4LTE0IDE3OjMx OjM2LjgzMjk4NDQ5MiArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLmMJ MjAxMi0wOC0xNCAxNzozNDo0NC4yNzI3NDY1ODMgKzAyMDAKLUBAIC0xMjI2LDYgKzEyMjYsNDIg QEAgbm9fc2hhcmVkX2xpYnJhcmllcyAoY2hhciAqaWdub3JlZCwgaW50CistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi9zb2xpYi5jCTIwMTMtMDEtMTggMjM6NTc6MTQuNzgyOTc4NDg1 ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc29saWIuYwkyMDEzLTAxLTE4IDIz OjU4OjA5LjE0NDcxNjYwMSArMDEwMAorQEAgLTEyMjEsNiArMTIyMSw0MiBAQCBub19zaGFyZWRf bGlicmFyaWVzIChjaGFyICppZ25vcmVkLCBpbnQKICAgIG9iamZpbGVfcHVyZ2Vfc29saWJzICgp OwogIH0KICAKQEAgLTE3Niw3ICsxNzYsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9n ZGIvc29saWIuYwogK3ZvaWQKICtoYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKICt7Ci0r ICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7 CisrICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3BzID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJj aCAoKSk7CiArCiArICBpZiAob3BzLT5oYW5kbGVfc29saWJfZXZlbnQgIT0gTlVMTCkKICsgICAg b3BzLT5oYW5kbGVfc29saWJfZXZlbnQgKGJzKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBJbmRleDog Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWIuYwogK3ZvaWQKICt1cGRhdGVfc29saWJfYnJl YWtwb2ludHMgKHZvaWQpCiArewotKyAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNvbGli X29wcyAodGFyZ2V0X2dkYmFyY2gpOworKyAgc3RydWN0IHRhcmdldF9zb19vcHMgKm9wcyA9IHNv bGliX29wcyAodGFyZ2V0X2dkYmFyY2ggKCkpOwogKwogKyAgaWYgKG9wcy0+dXBkYXRlX2JyZWFr cG9pbnRzICE9IE5VTEwpCiArICAgIG9wcy0+dXBkYXRlX2JyZWFrcG9pbnRzICgpOwpAQCAtMjEw LDExICsyMTAsMTEgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLmMKICAv KiBSZWxvYWQgc2hhcmVkIGxpYnJhcmllcywgYnV0IGF2b2lkIHJlbG9hZGluZyB0aGUgc2FtZSBz eW1ib2wgZmlsZQogICAgIHdlIGFscmVhZHkgaGF2ZSBsb2FkZWQuICAqLwogIAotSW5kZXg6IGdk Yi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGlzdC5oCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvc29saXN0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcv Z2RiL3NvbGlzdC5oCTIwMTItMDEtMDQgMDk6MTc6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNC45MS4yMDEyMDgxNC9nZGIvc29saXN0LmgJMjAxMi0wOC0xNCAxNzozNDo0NC4yNzM3NDY1 ODQgKzAyMDAKLUBAIC0yMyw2ICsyMyw4IEBACistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmln L2dkYi9zb2xpc3QuaAkyMDEzLTAxLTE4IDIzOjU3OjE0Ljc4Mjk3ODQ4NSArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NvbGlzdC5oCTIwMTMtMDEtMTggMjM6NTc6NTAuNTE1Nzky ODc1ICswMTAwCitAQCAtMjIsNiArMjIsOCBAQAogICNkZWZpbmUgU09fTkFNRV9NQVhfUEFUSF9T SVpFIDUxMgkvKiBGSVhNRTogU2hvdWxkIGJlIGR5bmFtaWMgKi8KICAvKiBGb3IgZG9tYWluX2Vu dW0gZG9tYWluLiAgKi8KICAjaW5jbHVkZSAic3ltdGFiLmgiCkBAIC0yMjMsNyArMjIzLDcgQEAg SW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGlzdC5oCiAgCiAgLyogRm9yd2FyZCBk ZWNsYXJhdGlvbiBmb3IgdGFyZ2V0IHNwZWNpZmljIGxpbmsgbWFwIGluZm9ybWF0aW9uLiAgVGhp cwogICAgIHN0cnVjdCBpcyBvcGFxdWUgdG8gYWxsIGJ1dCB0aGUgdGFyZ2V0IHNwZWNpZmljIGZp bGUuICAqLwotQEAgLTE0OSw2ICsxNTEsMjAgQEAgc3RydWN0IHRhcmdldF9zb19vcHMKK0BAIC0x NDgsNiArMTUwLDIwIEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCiAgICAgICAgIGNvcmUgZmlsZSAo aW4gcGFydGljdWxhciwgZm9yIHJlYWRvbmx5IHNlY3Rpb25zKS4gICovCiAgICAgIGludCAoKmtl ZXBfZGF0YV9pbl9jb3JlKSAoQ09SRV9BRERSIHZhZGRyLAogIAkJCSAgICAgIHVuc2lnbmVkIGxv bmcgc2l6ZSk7CkBAIC0yNDQsMTEgKzI0NCwxMSBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvc29saXN0LmgKICAgIH07CiAgCiAgLyogRnJlZSB0aGUgbWVtb3J5IGFzc29jaWF0ZWQg d2l0aCBhIChzb19saXN0ICopLiAgKi8KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9p bmZydW4uYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2luZnJ1bi5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9pbmZydW4uYwkyMDEyLTA4LTE0 IDE3OjMzOjE2LjI0OTk1NTAwNyArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2lu ZnJ1bi5jCTIwMTItMDgtMTQgMTc6MzQ6NDQuMjc2NzQ2NTgzICswMjAwCi1AQCAtMzYxLDYgKzM2 MSwxNiBAQCBzdGF0aWMgc3RydWN0IHN5bWJvbCAqc3RlcF9zdGFydF9mdW5jdGlvCistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pbmZydW4uYwkyMDEzLTAxLTE4IDIzOjU3OjE0Ljc4 Mjk3ODQ4NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2luZnJ1bi5jCTIwMTMt MDEtMTggMjM6NTc6NTAuNTE3NzkyODY1ICswMTAwCitAQCAtMzY5LDYgKzM2OSwxNiBAQCBzdGF0 aWMgc3RydWN0IHN5bWJvbCAqc3RlcF9zdGFydF9mdW5jdGlvCiAgLyogTm9uemVybyBpZiB3ZSB3 YW50IHRvIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHdlJ3JlIG5vdGlmaWVkCiAgICAg b2Ygc2hhcmVkIGxpYnJhcnkgZXZlbnRzIGJ5IHRoZSBkeW5hbWljIGxpbmtlci4gICovCiAgaW50 IHN0b3Bfb25fc29saWJfZXZlbnRzOwpAQCAtMjY1LDcgKzI2NSw3IEBAIEluZGV4OiBnZGItNy40 LjkxLjIwMTIwODE0L2dkYi9pbmZydW4uYwogIHN0YXRpYyB2b2lkCiAgc2hvd19zdG9wX29uX3Nv bGliX2V2ZW50cyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKICAJCQkgICBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCi1AQCAtMzMyMSw3 ICszMzMxLDcgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uXworQEAg LTMzNDcsNyArMzM1Nyw3IEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlv bl8KICAJICAgIGNvbnRleHRfc3dpdGNoIChlY3MtPnB0aWQpOwogIAkgIHJlZ2NhY2hlID0gZ2V0 X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKTsKICAKQEAgLTI3NCw3ICsyNzQsNyBAQCBJbmRl eDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvaW5mcnVuLmMKICAKICAJICBlY3MtPmV2ZW50X3Ro cmVhZC0+Y29udHJvbC5zdG9wX2Jwc3RhdAogIAkgICAgPSBicHN0YXRfc3RvcF9zdGF0dXMgKGdl dF9yZWdjYWNoZV9hc3BhY2UgKHJlZ2NhY2hlKSwKLUBAIC03MjI2LDcgKzcyMzYsNyBAQCBTaG93 IHN0b3BwaW5nIGZvciBzaGFyZWQgbGlicmFyeSBldmVudHMuCitAQCAtNzMyNyw3ICs3MzM3LDcg QEAgU2hvdyBzdG9wcGluZyBmb3Igc2hhcmVkIGxpYnJhcnkgZXZlbnRzLgogIElmIG5vbnplcm8s IGdkYiB3aWxsIGdpdmUgY29udHJvbCB0byB0aGUgdXNlciB3aGVuIHRoZSBkeW5hbWljIGxpbmtl clxuXAogIG5vdGlmaWVzIGdkYiBvZiBzaGFyZWQgbGlicmFyeSBldmVudHMuICBUaGUgbW9zdCBj b21tb24gZXZlbnQgb2YgaW50ZXJlc3RcblwKICB0byB0aGUgdXNlciB3b3VsZCBiZSBsb2FkaW5n L3VubG9hZGluZyBvZiBhIG5ldyBsaWJyYXJ5LiIpLApAQCAtMjgzLDExICsyODMsMTEgQEAgSW5k ZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL2luZnJ1bi5jCiAgCQkJICAgIHNob3dfc3RvcF9v bl9zb2xpYl9ldmVudHMsCiAgCQkJICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwogIAotSW5kZXg6 IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAx MjA4MTQub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDgtMTQgMTc6MzQ6MzkuMzQ2NzUyODQw ICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCTIwMTItMDgt MTQgMTc6MzU6NDIuNjM1NzMyNTk2ICswMjAwCi1AQCAtNDcsMTAgKzQ3LDEyIEBACistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzo1Nzo0 NS40MzA4MTU5NDMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi1zdnI0 LmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MTk3OTI4NTggKzAxMDAKK0BAIC00NiwxMCArNDYsMTIg QEAKICAjaW5jbHVkZSAiYXV4di5oIgogICNpbmNsdWRlICJleGNlcHRpb25zLmgiCiAgI2luY2x1 ZGUgImdkYl9iZmQuaCIKQEAgLTMwMCw3ICszMDAsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEy MDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCiAgLyogTGluayBtYXAgaW5mbyB0byBpbmNsdWRlIGlu IGFuIGFsbG9jYXRlZCBzb19saXN0IGVudHJ5LiAgKi8KICAKLUBAIC03MSw2ICs3MywxNiBAQCBz dHJ1Y3QgbG1faW5mbworQEAgLTcwLDYgKzcyLDE2IEBAIHN0cnVjdCBsbV9pbmZvCiAgCiAgICAg IC8qIFZhbHVlcyByZWFkIGluIGZyb20gaW5mZXJpb3IncyBmaWVsZHMgb2YgdGhlIHNhbWUgbmFt ZS4gICovCiAgICAgIENPUkVfQUREUiBsX2xkLCBsX25leHQsIGxfcHJldiwgbF9uYW1lOwpAQCAt MzE3LDcgKzMxNyw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0 LmMKICAgIH07CiAgCiAgLyogT24gU1ZSNCBzeXN0ZW1zLCBhIGxpc3Qgb2Ygc3ltYm9scyBpbiB0 aGUgZHluYW1pYyBsaW5rZXIgd2hlcmUKLUBAIC0xMDcsNiArMTE5LDUzIEBAIHN0YXRpYyBjb25z dCAgY2hhciAqIGNvbnN0IG1haW5fbmFtZV9saXMKK0BAIC0xMDYsNiArMTE4LDUzIEBAIHN0YXRp YyBjb25zdCAgY2hhciAqIGNvbnN0IG1haW5fbmFtZV9saXMKICAgIE5VTEwKICB9OwogIApAQCAt MzcxLDcgKzM3MSw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0 LmMKICAvKiBQZXIgcHNwYWNlIFNWUjQgc3BlY2lmaWMgZGF0YS4gICovCiAgCiAgc3RydWN0IHN2 cjRfaW5mbwotQEAgLTEyOSwxNyArMTg4LDU4IEBAIHN0cnVjdCBzdnI0X2luZm8KK0BAIC0xMjgs MTcgKzE4Nyw1OCBAQCBzdHJ1Y3Qgc3ZyNF9pbmZvCiAgICBDT1JFX0FERFIgaW50ZXJwX3RleHRf c2VjdF9oaWdoOwogICAgQ09SRV9BRERSIGludGVycF9wbHRfc2VjdF9sb3c7CiAgICBDT1JFX0FE RFIgaW50ZXJwX3BsdF9zZWN0X2hpZ2g7CkBAIC00MzAsNyArNDMwLDcgQEAgSW5kZXg6IGdkYi03 LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYwogICAgeGZyZWUgKGluZm8pOwogIH0KICAK LUBAIC0xODgsMTAgKzI4OCwyMSBAQCBzdnI0X3NhbWVfMSAoY29uc3QgY2hhciAqZ2RiX3NvX25h bWUsIGNvCitAQCAtMTg3LDEwICsyODcsMjEgQEAgc3ZyNF9zYW1lXzEgKGNvbnN0IGNoYXIgKmdk Yl9zb19uYW1lLCBjbwogICAgcmV0dXJuIDA7CiAgfQogIApAQCAtNDUzLDcgKzQ1Myw3IEBAIElu ZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKICB9CiAgCiAgc3RhdGlj IHN0cnVjdCBsbV9pbmZvICoKLUBAIC0zMjIsMTggKzQzMywyNiBAQCBsbV9hZGRyX2NoZWNrIChz dHJ1Y3Qgc29fbGlzdCAqc28sIGJmZCAqCitAQCAtMzIxLDE4ICs0MzIsMjYgQEAgbG1fYWRkcl9j aGVjayAoc3RydWN0IHNvX2xpc3QgKnNvLCBiZmQgKgogIAkgICAgfQogIAkgIGVsc2UKICAJICAg IHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29s aWItc3ZyNC5jCiAgCSAgICB9CiAgCX0KICAKLUBAIC03NzUsMTYgKzg5NCwxMCBAQCBsb2NhdGVf YmFzZSAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKK0BAIC03NzQsMTYgKzg5MywxMCBAQCBsb2Nh dGVfYmFzZSAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbykKICAgIHJldHVybiBpbmZvLT5kZWJ1Z19i YXNlOwogIH0KICAKQEAgLTUxMCw4ICs1MTAsOCBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvc29saWItc3ZyNC5jCiArcl9tYXBfZnJvbV9kZWJ1Z19iYXNlIChDT1JFX0FERFIgZGVi dWdfYmFzZSkKICB7CiAgICBzdHJ1Y3QgbGlua19tYXBfb2Zmc2V0cyAqbG1vID0gc3ZyNF9mZXRj aF9saW5rX21hcF9vZmZzZXRzICgpOwotICAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRp bl90eXBlICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Ci1AQCAtNzkzLDEzICs5 MDYsMjcgQEAgc29saWJfc3ZyNF9yX21hcCAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbworICAgc3Ry dWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlICh0YXJnZXRfZ2RiYXJjaCAoKSktPmJ1 aWx0aW5fZGF0YV9wdHI7CitAQCAtNzkyLDEzICs5MDUsMjcgQEAgc29saWJfc3ZyNF9yX21hcCAo c3RydWN0IHN2cjRfaW5mbyAqaW5mbwogIAogICAgVFJZX0NBVENIIChleCwgUkVUVVJOX01BU0tf RVJST1IpCiAgICAgIHsKQEAgLTU0MCw3ICs1NDAsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEy MDgxNC9nZGIvc29saWItc3ZyNC5jCiAgLyogRmluZCByX2JyayBmcm9tIHRoZSBpbmZlcmlvcidz IGRlYnVnIGJhc2UuICAqLwogIAogIHN0YXRpYyBDT1JFX0FERFIKLUBAIC0xMTY0LDE1ICsxMjkx LDE3IEBAIHN2cjRfZGVmYXVsdF9zb3MgKHZvaWQpCitAQCAtMTE2MywxNSArMTI5MCwxNyBAQCBz dnI0X2RlZmF1bHRfc29zICh2b2lkKQogICAgcmV0dXJuIG5ldzsKICB9CiAgCkBAIC01NjUsNyAr NTY1LDcgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYwogIAog ICAgZm9yICg7IGxtICE9IDA7IHByZXZfbG0gPSBsbSwgbG0gPSBuZXh0X2xtKQogICAgICB7Ci1A QCAtMTE4OSw3ICsxMzE4LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3Ry dWN0CitAQCAtMTE4OCw3ICsxMzE3LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBs bSwgc3RydWN0CiAgICAgICAgaWYgKG5ldy0+bG1faW5mbyA9PSBOVUxMKQogIAl7CiAgCSAgZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7CkBAIC01NzQsMTYgKzU3NCwxNiBAQCBJbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCX0KICAKICAgICAgICBuZXh0X2xtID0g bmV3LT5sbV9pbmZvLT5sX25leHQ7Ci1AQCAtMTIwMCw3ICsxMzI5LDcgQEAgc3ZyNF9yZWFkX3Nv X2xpc3QgKENPUkVfQUREUiBsbSwgc3RydWN0Ci0gCQkgICBwYWRkcmVzcyAodGFyZ2V0X2dkYmFy Y2gsIHByZXZfbG0pLAotIAkJICAgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBuZXctPmxtX2lu Zm8tPmxfcHJldikpOworQEAgLTExOTksNyArMTMyOCw3IEBAIHN2cjRfcmVhZF9zb19saXN0IChD T1JFX0FERFIgbG0sIHN0cnVjdAorIAkJICAgcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLCBw cmV2X2xtKSwKKyAJCSAgIHBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgbmV3LT5sbV9pbmZv LT5sX3ByZXYpKTsKICAJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKIC0JICBicmVhazsKICsJ ICByZXR1cm4gMDsKICAJfQogIAogICAgICAgIC8qIEZvciBTVlI0IHZlcnNpb25zLCB0aGUgZmly c3QgZW50cnkgaW4gdGhlIGxpbmsgbWFwIGlzIGZvciB0aGUKLUBAIC0xMjk1LDIwICsxNDI0LDYx IEBAIHN2cjRfcmVhZF9zb19saXN0IChDT1JFX0FERFIgbG0sIHN0cnVjdAorQEAgLTEyOTQsMjAg KzE0MjMsNjEgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKENPUkVfQUREUiBsbSwgc3RydWN0CiAgICAg ICAgKipsaW5rX3B0cl9wdHIgPSBuZXc7CiAgICAgICAgKmxpbmtfcHRyX3B0ciA9ICZuZXctPm5l eHQ7CiAgICAgIH0KQEAgLTY0OCw3ICs2NDgsNyBAQCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvc29saWItc3ZyNC5jCiAgCiAgICAvKiBGYWxsIGJhY2sgdG8gbWFudWFsIGV4YW1pbmF0 aW9uIG9mIHRoZSB0YXJnZXQgaWYgdGhlIHBhY2tldCBpcyBub3QKICAgICAgIHN1cHBvcnRlZCBv ciBnZGJzZXJ2ZXIgZmFpbGVkIHRvIGZpbmQgRFRfREVCVUcuICBnZGIuc2VydmVyL3NvbGliLWxp c3QuZXhwCi1AQCAtMTMzMSw2ICsxNTAxLDEwIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCitA QCAtMTMzMCw2ICsxNTAwLDEwIEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCiAgCiAgICBpbmZv ID0gZ2V0X3N2cjRfaW5mbyAoKTsKICAKQEAgLTY1OSw3ICs2NTksNyBAQCBJbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgICAvKiBBbHdheXMgbG9jYXRlIHRoZSBk ZWJ1ZyBzdHJ1Y3QsIGluIGNhc2UgaXQgaGFzIG1vdmVkLiAgKi8KICAgIGluZm8tPmRlYnVnX2Jh c2UgPSAwOwogICAgbG9jYXRlX2Jhc2UgKGluZm8pOwotQEAgLTEzNDAsMzUgKzE1MTQsMTIgQEAg c3ZyNF9jdXJyZW50X3NvcyAodm9pZCkKK0BAIC0xMzM5LDM1ICsxNTEzLDEyIEBAIHN2cjRfY3Vy cmVudF9zb3MgKHZvaWQpCiAgICBpZiAoISBpbmZvLT5kZWJ1Z19iYXNlKQogICAgICByZXR1cm4g c3ZyNF9kZWZhdWx0X3NvcyAoKTsKICAKQEAgLTY5OCw4ICs2OTgsOCBAQCBJbmRleDogZ2RiLTcu NC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgfQogIAogIC8qIEdldCB0aGUgYWRkcmVz cyBvZiB0aGUgbGlua19tYXAgZm9yIGEgZ2l2ZW4gT0JKRklMRS4gICovCi1AQCAtMTQ1MCw2ICsx NjAxLDQ5OCBAQCBleGVjX2VudHJ5X3BvaW50IChzdHJ1Y3QgYmZkICphYmZkLCBzdHJ1Ci0gCQkJ CQkgICAgIHRhcmcpOworQEAgLTE0NTIsNiArMTYwMyw0OTggQEAgZXhlY19lbnRyeV9wb2ludCAo c3RydWN0IGJmZCAqYWJmZCwgc3RydQorICAgcmV0dXJuIGdkYmFyY2hfYWRkcl9iaXRzX3JlbW92 ZSAodGFyZ2V0X2dkYmFyY2ggKCksIGFkZHIpOwogIH0KICAKICsvKiBBIHByb2JlIGFuZCBpdHMg YXNzb2NpYXRlZCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUuICAqLwpAQCAtMTE5Nyw3ICsxMTk3LDcg QEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYwogIC8qIEhlbHBl ciBmdW5jdGlvbiBmb3IgZ2RiX2JmZF9sb29rdXBfc3ltYm9sLiAgKi8KICAKICBzdGF0aWMgaW50 Ci1AQCAtMTUwMiw2ICsyMTQ1LDkgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvLCBpbgorQEAgLTE1MDQsNiArMjE0Nyw5IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRf aW5mbyAqaW5mbywgaW4KICAgIGluZm8tPmludGVycF90ZXh0X3NlY3RfbG93ID0gaW5mby0+aW50 ZXJwX3RleHRfc2VjdF9oaWdoID0gMDsKICAgIGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cgPSBp bmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCA9IDA7CiAgCkBAIC0xMjA3LDcgKzEyMDcsNyBAQCBJ bmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgICAvKiBJZiB3ZSBh bHJlYWR5IGhhdmUgYSBzaGFyZWQgbGlicmFyeSBsaXN0IGluIHRoZSB0YXJnZXQsIGFuZAogICAg ICAgcl9kZWJ1ZyBjb250YWlucyByX2Jyaywgc2V0IHRoZSBicmVha3BvaW50IHRoZXJlIC0gdGhp cyBzaG91bGQKICAgICAgIG1lYW4gcl9icmsgaGFzIGFscmVhZHkgYmVlbiByZWxvY2F0ZWQuICBB c3N1bWUgdGhlIGR5bmFtaWMgbGlua2VyCi1AQCAtMTUzMyw3ICsyMTc5LDcgQEAgZW5hYmxlX2Jy ZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorQEAgLTE1MzUsNyArMjE4MSw3IEBAIGVu YWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KICAJIFRoYXQga25vd2xlZGdl IGlzIGVuY29kZWQgaW4gdGhlIGFkZHJlc3MsIGlmIGl0J3MgVGh1bWIgdGhlIGxvdyBiaXQKICAJ IGlzIDEuICBIb3dldmVyLCB3ZSd2ZSBzdHJpcHBlZCB0aGF0IGluZm8gYWJvdmUgYW5kIGl0J3Mg bm90IGNsZWFyCiAgCSB3aGF0IGFsbCB0aGUgY29uc2VxdWVuY2VzIGFyZSBvZiBwYXNzaW5nIGEg bm9uLWFkZHJfYml0c19yZW1vdmUnZApAQCAtMTIxNiw0NCArMTIxNiw0NCBAQCBJbmRleDogZ2Ri LTcuNC45MS4yMDEyMDgxNC9nZGIvc29saWItc3ZyNC5jCiAgCSBmaW5kX3BjX3NlY3Rpb24gdmVy aWZpZXMgd2Uga25vdyBhYm91dCB0aGUgYWRkcmVzcyBhbmQgaGF2ZSBzb21lCiAgCSBob3BlIG9m IGNvbXB1dGluZyB0aGUgcmlnaHQga2luZCBvZiBicmVha3BvaW50IHRvIHVzZSAodmlhCiAgCSBz eW1ib2wgaW5mbykuICBJdCBkb2VzIG1lYW4gdGhhdCBHREIgbmVlZHMgdG8gYmUgcG9pbnRlZCBh dCBhCi1AQCAtMTU3MSw3ICsyMjE3LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZv ICppbmZvLCBpbgorQEAgLTE1NzMsNyArMjIxOSw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2 cjRfaW5mbyAqaW5mbywgaW4KICAJCSsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJw X3NlY3QpOwogIAkgICAgfQogIAotLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0 YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOwotKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2Jy ZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworLQkgIGNyZWF0ZV9zb2xpYl9l dmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOworKwkgIHN2cjRf Y3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2Fk ZHIpOwogIAkgIHJldHVybiAxOwogIAl9CiAgICAgIH0KLUBAIC0xNzI5LDcgKzIzNzUsOCBAQCBl bmFibGVfYnJlYWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCitAQCAtMTczMSw3ICsyMzc3 LDggQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgogIAogICAgICAg IGlmIChzeW1fYWRkciAhPSAwKQogIAl7Ci0tCSAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9p bnQgKHRhcmdldF9nZGJhcmNoLCBsb2FkX2FkZHIgKyBzeW1fYWRkcik7Ci0rCSAgc3ZyNF9jcmVh dGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHMgKHRhcmdldF9nZGJhcmNoLAorLQkgIGNyZWF0ZV9z b2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgbG9hZF9hZGRyICsgc3lt X2FkZHIpOworKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRf Z2RiYXJjaCAoKSwKICsJCQkJCSAgICAgICBsb2FkX2FkZHIgKyBzeW1fYWRkcik7CiAgCSAgeGZy ZWUgKGludGVycF9uYW1lKTsKICAJICByZXR1cm4gMTsKICAJfQotQEAgLTE3NTUsNyArMjQwMiw3 IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW4KLSAJICBzeW1fYWRk ciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9nZGJhcmNoLAor QEAgLTE3NTcsNyArMjQwNCw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5m bywgaW4KKyAJICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIg KHRhcmdldF9nZGJhcmNoICgpLAogIAkJCQkJCQkgc3ltX2FkZHIsCiAgCQkJCQkJCSAmY3VycmVu dF90YXJnZXQpOwotLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJnZXRfZ2Ri YXJjaCwgc3ltX2FkZHIpOwotKwkgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRz ICh0YXJnZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOworLQkgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVh a3BvaW50ICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOworKwkgIHN2cjRfY3JlYXRlX3Nv bGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAoKSwgc3ltX2FkZHIpOwogIAkg IHJldHVybiAxOwogIAl9CiAgICAgIH0KLUBAIC0xNzcxLDcgKzI0MTgsNyBAQCBlbmFibGVfYnJl YWsgKHN0cnVjdCBzdnI0X2luZm8gKmluZm8sIGluCi0gCSAgICAgIHN5bV9hZGRyID0gZ2RiYXJj aF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAodGFyZ2V0X2dkYmFyY2gsCitAQCAtMTc3Myw3 ICsyNDIwLDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvLCBpbgorIAkg ICAgICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdl dF9nZGJhcmNoICgpLAogIAkJCQkJCQkgICAgIHN5bV9hZGRyLAogIAkJCQkJCQkgICAgICZjdXJy ZW50X3RhcmdldCk7Ci0tCSAgICAgIGNyZWF0ZV9zb2xpYl9ldmVudF9icmVha3BvaW50ICh0YXJn ZXRfZ2RiYXJjaCwgc3ltX2FkZHIpOwotKwkgICAgICBzdnI0X2NyZWF0ZV9zb2xpYl9ldmVudF9i cmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gsIHN5bV9hZGRyKTsKKy0JICAgICAgY3JlYXRlX3Nv bGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoICgpLCBzeW1fYWRkcik7CisrCSAg ICAgIHN2cjRfY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnRzICh0YXJnZXRfZ2RiYXJjaCAo KSwgc3ltX2FkZHIpOwogIAkgICAgICByZXR1cm4gMTsKICAJICAgIH0KICAJfQotQEAgLTIyODEs NiArMjkyOCw5IEBAIHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm8KK0BA IC0yMjY5LDYgKzI5MTYsOSBAQCBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQg ZnJvCiAgCiAgICBpbmZvID0gZ2V0X3N2cjRfaW5mbyAoKTsKICAKQEAgLTEyNjMsMTcgKzEyNjMs MTcgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYwogICAgLyog UmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkuICAqLwogICAgc3ZyNF9y ZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKCk7CiAgCi1AQCAtMjU0Nyw0ICszMTk3LDYgQEAgX2lu aXRpYWxpemVfc3ZyNF9zb2xpYiAodm9pZCkKK0BAIC0yNTEwLDQgKzMxNjAsNiBAQCBfaW5pdGlh bGl6ZV9zdnI0X3NvbGliICh2b2lkKQogICAgc3ZyNF9zb19vcHMubG9va3VwX2xpYl9nbG9iYWxf c3ltYm9sID0gZWxmX2xvb2t1cF9saWJfc3ltYm9sOwogICAgc3ZyNF9zb19vcHMuc2FtZSA9IHN2 cjRfc2FtZTsKICAgIHN2cjRfc29fb3BzLmtlZXBfZGF0YV9pbl9jb3JlID0gc3ZyNF9rZWVwX2Rh dGFfaW5fY29yZTsKICsgIHN2cjRfc29fb3BzLmhhbmRsZV9zb2xpYl9ldmVudCA9IHN2cjRfaGFu ZGxlX3NvbGliX2V2ZW50OwogKyAgc3ZyNF9zb19vcHMudXBkYXRlX2JyZWFrcG9pbnRzID0gc3Zy NF91cGRhdGVfc29saWJfZXZlbnRfYnJlYWtwb2ludHM7CiAgfQotSW5kZXg6IGdkYi03LjQuOTEu MjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLXNvbGliLmMKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxt b3Blbi1zb2xpYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4tc29saWIuYwkyMDEyLTA4LTE0IDE3OjM0OjQ0LjMzMDc0 NjU5MSArMDIwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9icmVhay1kbG1vcGVuLXNvbGliLmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MTk3OTI4NTggKzAx MDAKIEBAIC0wLDAgKzEsMjQgQEAKICsvKiBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKQEAgLTEyOTksMTAgKzEyOTksMTAgQEAgSW5kZXg6IGdkYi03LjQu OTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLXNvbGliLmMK ICsKICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1kbG1vcGVuLmMJMjAx Mi0wOC0xNCAxNzozNDo0NC4zMzk3NDY1NzYgKzAyMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5jCTIwMTMtMDEtMTggMjM6NTc6 NTAuNTE5NzkyODU4ICswMTAwCiBAQCAtMCwwICsxLDU4IEBACiArLyogQ29weXJpZ2h0IDIwMTIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMzYyLDEwICsxMzYyLDEwIEBA IEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst ZGxtb3Blbi5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgx NC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uZXhwCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWRsbW9wZW4uZXhwCTIwMTItMDgtMTQgMTc6MzQ6NDQuMzQzNzQ2NTYzICswMjAwCisrKysgZ2Ri LTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWRsbW9wZW4uZXhw CTIwMTMtMDEtMTggMjM6NTc6NTAuNTE5NzkyODU4ICswMTAwCiBAQCAtMCwwICsxLDEyNSBAQAog KyMgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0x NDkyLDEwICsxNDkyLDEwIEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstZGxtb3Blbi5leHAKICsgICAgZ2RiX3Rlc3QgImMiIHtCcmVha3Bv aW50IFswLTldKywgLiogaW4gc3RvcCBcKFwpfQogKyAgICBjaGVja19pbmZvX3NoYXJlZCAiaW5m byBzaGFyZWRsaWJyYXJ5ICM3IiAwCiArfQotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i cmVhay1pbnRlcnAuZXhwCTIwMTItMDYtMjEgMjI6NDY6MjEuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5l eHAJMjAxMi0wOC0xNCAxNzozNDo0NC4zNDQ3NDY1NjUgKzAyMDAKKy0tLSBnZGItNy41LjUwLjIw MTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCTIwMTMt MDEtMTggMjM6NTc6MTQuNzgyOTc4NDg1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMy0wMS0xOCAyMzo1Nzo1 MC41MjA3OTI4NTQgKzAxMDAKIEBAIC0xMDksMTIgKzEwOSwxOSBAQCBwcm9jIHN0cmlwX2RlYnVn IHtkZXN0fSB7CiAgICAgIH0KICB9CkBAIC0xNTkxLDEwICsxNTkxLDEwIEBAIEluZGV4OiBnZGIt Ny40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAog IAogIAkgICAgIyBVc2UgdHdvIHNlcGFyYXRlIGdkYl90ZXN0X211bHRpcGxlIHN0YXRlbWVudHMg dG8gYXZvaWQgdGltZW91dHMgZHVlCiAgCSAgICAjIHRvIHNsb3cgcHJvY2Vzc2luZyBvZiB3aWxk Y2FyZCBjYXB0dXJpbmcgbG9uZyBvdXRwdXQKLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmMKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLXNvbGliLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJl YWstcHJvYmVzLXNvbGliLmMJMjAxMi0wOC0xNCAxNzozNDo0NC4zNTU3NDY1NjEgKzAyMDAKKysr KyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVz LXNvbGliLmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MjA3OTI4NTQgKzAxMDAKIEBAIC0wLDAgKzEs MjQgQEAKICsvKiBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKQEAgLTE2MjAsMTAgKzE2MjAsMTAgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMtc29saWIuYwogKwogKyAgcmV0dXJuIDA7 CiArfQotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9i cmVhay1wcm9iZXMuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9icmVhay1wcm9iZXMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuYwkyMDEyLTA4LTE0IDE3OjM0OjQ0LjM2 Mjc0NjU2MSArMDIwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9icmVhay1wcm9iZXMuYwkyMDEzLTAxLTE4IDIzOjU3OjUwLjUyMDc5Mjg1NCArMDEwMAog QEAgLTAsMCArMSwyNiBAQAogKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwpAQCAtMTY1MSwxMCArMTY1MSwxMCBAQCBJbmRleDogZ2RiLTcuNC45MS4y MDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5jCiArCiArICByZXR1 cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2JyZWFrLXByb2Jlcy5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYnJlYWstcHJvYmVzLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuOTEuMjAx MjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1wcm9iZXMuZXhwCTIwMTItMDgtMTQg MTc6MzQ6NDQuMzYzNzQ2NTYxICswMjAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5leHAJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MjA3 OTI4NTQgKzAxMDAKIEBAIC0wLDAgKzEsNzYgQEAKICsjIENvcHlyaWdodCAyMDEyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTczMiwxMCArMTczMiwxMCBAQCBJbmRleDog Z2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLXByb2Jlcy5l eHAKICsgICAgIyBDYWxsIHNvbWV0aGluZyB0byBlbnN1cmUgdGhhdCByZWxvY2F0aW9uIG9jY3Vy cmVkCiArICAgIGdkYl90ZXN0ICJjYWxsIGZvbygyMykiICJmb28gMjMuKlxcXCQuKiA9IC4qIgog K30KLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5m by1zaGFyZWQtc29saWIxLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjkxLjIw MTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMJMjAxMi0w OC0xNCAxNzozNDo0NC4zNjU3NDY1NjEgKzAyMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQtc29saWIxLmMJMjAxMy0wMS0xOCAyMzo1 Nzo1MC41MjA3OTI4NTQgKzAxMDAKIEBAIC0wLDAgKzEsMjQgQEAKICsvKiBDb3B5cmlnaHQgMjAx MiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTE3NjEsMTAgKzE3NjEsMTAg QEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZv LXNoYXJlZC1zb2xpYjEuYwogKwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjQuOTEu MjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJl ZC1zb2xpYjIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9pbmZvLXNoYXJlZC1zb2xpYjIuYwkyMDEyLTA4LTE0IDE3OjM0OjQ0LjM2NTc0NjU2 MSArMDIwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9p bmZvLXNoYXJlZC1zb2xpYjIuYwkyMDEzLTAxLTE4IDIzOjU3OjUwLjUyMDc5Mjg1NCArMDEwMAog QEAgLTAsMCArMSwyNCBAQAogKy8qIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwpAQCAtMTc5MCwxMCArMTc5MCwxMCBAQCBJbmRleDogZ2RiLTcuNC45MS4y MDEyMDgxNC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLXNvbGliMi5jCiArCiAr ICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2luZm8tc2hhcmVkLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjQuOTEuMjAx MjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5jCTIwMTItMDgtMTQgMTc6 MzQ6NDQuMzY2NzQ2NTYxICswMjAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmMJMjAxMy0wMS0xOCAyMzo1Nzo1MC41MjA3OTI4NTQg KzAxMDAKIEBAIC0wLDAgKzEsNDggQEAKICsvKiBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTE4NDMsMTAgKzE4NDMsMTAgQEAgSW5kZXg6IGdkYi03 LjQuOTEuMjAxMjA4MTQvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5jCiArCiAr ICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbmZvLXNoYXJlZC5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40Ljkx LjIwMTIwODE0L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW5mby1zaGFyZWQuZXhwCTIwMTItMDgt MTQgMTc6MzQ6NDQuMzY3NzQ2NTYxICswMjAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2luZm8tc2hhcmVkLmV4cAkyMDEzLTAxLTE4IDIzOjU3OjUwLjUy MTc5Mjg1MCArMDEwMAogQEAgLTAsMCArMSwxMzkgQEAKICsjIENvcHlyaWdodCAyMDEyIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwoKZGlmZiAtLWdpdCBhL2dkYi1kbG9wZW4tc3Rh cC1wcm9iZS03b2Y3LnBhdGNoIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjcucGF0Y2gKaW5k ZXggMDc0ZGIyNC4uOGYyYjQxOSAxMDA2NDQKLS0tIGEvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdv ZjcucGF0Y2gKKysrIGIvZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTdvZjcucGF0Y2gKQEAgLTEzLDEz ICsxMywxMyBAQAogCSogc29saWItc3ZyNC5jIChzdnI0X2hhbmRsZV9zb2xpYl9ldmVudCk6IElu aGliaXQgc2VjdGlvbiBtYXAKIAl1cGRhdGVzIGZvciBjYWxscyB0byBldmFsdWF0ZV9wcm9iZV9h cmd1bWVudC4KIAotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL29iamZpbGVzLmgKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9vYmpmaWxlcy5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC45MS4yMDEyMDgxNC5vcmlnL2dkYi9vYmpmaWxlcy5oCTIwMTItMDgtMTQgMTc6MTY6 NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2JqZmlsZXMu aAkyMDEyLTA4LTE0IDE3OjIwOjU1LjkxMzE3NDYwOSArMDIwMAotQEAgLTUyNiw2ICs1MjYsMjIg QEAgZXh0ZXJuIHZvaWQgc2V0X29iamZpbGVfZGF0YSAoc3RydWN0IG9iagotIGV4dGVybiB2b2lk ICpvYmpmaWxlX2RhdGEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJCSAgIGNvbnN0IHN0 cnVjdCBvYmpmaWxlX2RhdGEgKmRhdGEpOworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvb2JqZmlsZXMuaAkyMDEzLTAxLTE4IDIzOjE4OjE2Ljg2MjMxNTY3MyArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL29iamZpbGVzLmgJMjAxMy0wMS0xOCAyMzoxODozNi43MDIz NDM0ODIgKzAxMDAKK0BAIC01MDgsNiArNTA4LDIyIEBAIGV4dGVybiBpbnQgaW5fcGx0X3NlY3Rp b24gKENPUkVfQUREUiwgY2gKKyAgICBtb2R1bGVzLiAgKi8KKyBERUNMQVJFX1JFR0lTVFJZKG9i amZpbGUpOwogIAogKy8qIEluIG5vcm1hbCB1c2UsIHRoZSBzZWN0aW9uIG1hcCB3aWxsIGJlIHJl YnVpbHQgYnkgRklORF9QQ19TRUNUSU9OCiArICAgaWYgb2JqZmlsZXMgaGF2ZSBiZWVuIGFkZGVk LCByZW1vdmVkIG9yIHJlbG9jYXRlZCBzaW5jZSBpdCB3YXMgbGFzdApAQCAtNDAsMTEgKzQwLDEx IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9vYmpmaWxlcy5oCiAgZXh0ZXJuIHZv aWQgZGVmYXVsdF9pdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5fc2VhcmNoX29yZGVyCiAgICAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICAgaXRlcmF0ZV9vdmVyX29iamZpbGVzX2luX3NlYXJj aF9vcmRlcl9jYl9mdHlwZSAqY2IsCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2Jq ZmlsZXMuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL29iamZpbGVzLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMi0w OC0xNCAxNzoxNjo1NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODE0L2dk Yi9vYmpmaWxlcy5jCTIwMTItMDgtMTQgMTc6MjA6NTUuOTE1MTc0NjA5ICswMjAwCi1AQCAtNzAs NiArNzAsOSBAQCBzdHJ1Y3Qgb2JqZmlsZV9wc3BhY2VfaW5mbworLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEzLTAxLTE4IDIzOjE4OjEzLjY0NzMxMTAwNiAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL29iamZpbGVzLmMJMjAxMy0wMS0xOCAy MzoxODoxNi44NjIzMTU2NzMgKzAxMDAKK0BAIC02OSw2ICs2OSw5IEBAIHN0cnVjdCBvYmpmaWxl X3BzcGFjZV9pbmZvCiAgICBpbnQgb2JqZmlsZXNfY2hhbmdlZF9wOwogICAgc3RydWN0IG9ial9z ZWN0aW9uICoqc2VjdGlvbnM7CiAgICBpbnQgbnVtX3NlY3Rpb25zOwpAQCAtNTQsNyArNTQsNyBA QCBJbmRleDogZ2RiLTcuNC45MS4yMDEyMDgxNC9nZGIvb2JqZmlsZXMuYwogIH07CiAgCiAgLyog UGVyLXByb2dyYW0tc3BhY2UgZGF0YSBrZXkuICAqLwotQEAgLTEyOTUsNyArMTI5OCw3IEBAIGZp bmRfcGNfc2VjdGlvbiAoQ09SRV9BRERSIHBjKQorQEAgLTEzNTYsNyArMTM1OSw3IEBAIGZpbmRf cGNfc2VjdGlvbiAoQ09SRV9BRERSIHBjKQogICAgICByZXR1cm4gczsKICAKICAgIHBzcGFjZV9p bmZvID0gZ2V0X29iamZpbGVfcHNwYWNlX2RhdGEgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7CkBA IC02Myw3ICs2Myw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9vYmpmaWxlcy5j CiAgICAgIHsKICAgICAgICB1cGRhdGVfc2VjdGlvbl9tYXAgKGN1cnJlbnRfcHJvZ3JhbV9zcGFj ZSwKICAJCQkgICZwc3BhY2VfaW5mby0+c2VjdGlvbnMsCi1AQCAtMTQ2Myw2ICsxNDY2LDMwIEBA IG9iamZpbGVzX2NoYW5nZWQgKHZvaWQpCitAQCAtMTQxNSw2ICsxNDE4LDMwIEBAIG9iamZpbGVz X2NoYW5nZWQgKHZvaWQpCiAgICBnZXRfb2JqZmlsZV9wc3BhY2VfZGF0YSAoY3VycmVudF9wcm9n cmFtX3NwYWNlKS0+b2JqZmlsZXNfY2hhbmdlZF9wID0gMTsKICB9CiAgCkBAIC05NCwxMSArOTQs MTEgQEAgSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL29iamZpbGVzLmMKICAvKiBUaGUg ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlICJpdGVyYXRlX292ZXJfb2JqZmlsZXNfaW5f c2VhcmNoX29yZGVyIgogICAgIGdkYmFyY2ggbWV0aG9kLiAgSXQgaXMgZXF1aXZhbGVudCB0byB1 c2UgdGhlIEFMTF9PQkpGSUxFUyBtYWNybywKICAgICBzZWFyY2hpbmcgdGhlIG9iamZpbGVzIGlu IHRoZSBvcmRlciB0aGV5IGFyZSBzdG9yZWQgaW50ZXJuYWxseSwKLUluZGV4OiBnZGItNy40Ljkx LjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9zb2xpYi1zdnI0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODE0Lm9yaWcv Z2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4LTE0IDE3OjIwOjQyLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuOTEuMjAxMjA4MTQvZ2RiL3NvbGliLXN2cjQuYwkyMDEyLTA4LTE0IDE3OjIxOjE0 LjA5MDE2OTIxNiArMDIwMAotQEAgLTE4NDcsNiArMTg0Nyw3IEBAIHN2cjRfaGFuZGxlX3NvbGli X2V2ZW50IChicHN0YXQgYnMpCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zb2xp Yi1zdnI0LmMJMjAxMy0wMS0xOCAyMzoxODoxMy42NDkzMTEwMTAgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9zb2xpYi1zdnI0LmMJMjAxMy0wMS0xOCAyMzoxODoxNi44NjMzMTU2 NzUgKzAxMDAKK0BAIC0xODQ5LDYgKzE4NDksNyBAQCBzdnI0X2hhbmRsZV9zb2xpYl9ldmVudCAo YnBzdGF0IGJzKQogICAgc3RydWN0IHN2cjRfaW5mbyAqaW5mbyA9IGdldF9zdnI0X2luZm8gKCk7 CiAgICBzdHJ1Y3QgcHJvYmVfYW5kX2luZm8gYnVmLCAqcGkgPSAmYnVmOwogICAgZW51bSBwcm9i ZV9hY3Rpb24gYWN0aW9uOwpAQCAtMTA2LDcgKzEwNiw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIw MTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKICAgIHN0cnVjdCB2YWx1ZSAqdmFsOwogICAgTE9OR0VT VCBsbWlkOwogICAgQ09SRV9BRERSIGRlYnVnX2Jhc2UsIGxtID0gMDsKLUBAIC0xODcwLDYgKzE4 NzEsMTkgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKK0BAIC0xODcyLDYg KzE4NzMsMTkgQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKICAgIGlmIChh Y3Rpb24gPT0gTkFNRVNQQUNFX05PX0FDVElPTikKICAgICAgcmV0dXJuOwogIApAQCAtMTI2LDcg KzEyNiw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIwMTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKICAg IHZhbCA9IGV2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChwaS0+cHJvYmUsIDApOwogICAgaWYgKHZh bCA9PSBOVUxMKQogICAgICBnb3RvIGVycm9yOwotQEAgLTE5MDEsNiArMTkxNSw5IEBAIHN2cjRf aGFuZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpCitAQCAtMTkwMyw2ICsxOTE3LDkgQEAgc3Zy NF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKICAJYWN0aW9uID0gTkFNRVNQQUNFX1JF TE9BRDsKICAgICAgfQogIApAQCAtMTM2LDcgKzEzNiw3IEBAIEluZGV4OiBnZGItNy40LjkxLjIw MTIwODE0L2dkYi9zb2xpYi1zdnI0LmMKICAgIGlmIChhY3Rpb24gPT0gTkFNRVNQQUNFX1VQREFU RV9PUl9SRUxPQUQpCiAgICAgIHsKICAgICAgICBpZiAobmFtZXNwYWNlX3VwZGF0ZV9pbmNyZW1l bnRhbCAoaW5mbywgbG1pZCwgbG0sIGlzX2luaXRpYWxfbnMpKQotQEAgLTE5MjMsNiArMTk0MCw4 IEBAIHN2cjRfaGFuZGxlX3NvbGliX2V2ZW50IChicHN0YXQgYnMpCitAQCAtMTkyNSw2ICsxOTQy LDggQEAgc3ZyNF9oYW5kbGVfc29saWJfZXZlbnQgKGJwc3RhdCBicykKICAgIHdhcm5pbmcgKF8o IlByb2Jlcy1iYXNlZCBkeW5hbWljIGxpbmtlciBpbnRlcmZhY2UgZmFpbGVkLlxuIgogIAkgICAg ICJSZXZlcnRpbmcgdG8gb3JpZ2luYWwgaW50ZXJmYWNlLlxuIikpOwogIAoKZGlmZiAtLWdpdCBh L2dkYi1lbnRyeXZhbC1pbmxpbmVkLnBhdGNoIGIvZ2RiLWVudHJ5dmFsLWlubGluZWQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjYmU4NGIuLjAwMDAwMDAKLS0tIGEvZ2Ri LWVudHJ5dmFsLWlubGluZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4ODggKzAsMCBAQAot aHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMTAvbXNnMDAwOTUuaHRt bAotU3ViamVjdDogW3BhdGNoXSBlbnRyeSB2YWx1ZXM6IEZpeCByZXNvbHZpbmcgaW4gaW5saW5l ZCBmcmFtZXMKLQotSGksCi0KLUJyZWFrcG9pbnQgMSwgZm4yICh5PTxvcHRpbWl6ZWQgb3V0Piwg eD02KSBhdCBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzozMgotMzIJICAgICAg eSA9IC0yICsgeDsJLyogYnJlYWstaGVyZSAqLwotKGdkYikgaW5mbyBhZGRyIHkKLShnZGIpIGJ0 Ci0jMCAgZm4yICh5PTxvcHRpbWl6ZWQgb3V0PiwgeD02KSBhdCBnZGIuYXJjaC9hbWQ2NC1lbnRy eS12YWx1ZS1pbmxpbmUuYzozMgotIzEgIGZuMyAoeD14QGVudHJ5PTYsIHk9eUBlbnRyeT0yNSkg YXQgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDIKLSMyICAweDAwMDAwMDAw MDA0MDA0YWYgaW4gbWFpbiAoKSBhdCBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUu Yzo0OAotKGdkYikgaW5mbyBmcmFtZQotU3RhY2sgbGV2ZWwgMCwgZnJhbWUgYXQgMHg3ZmZmZmZm ZmRiNjg6Ci0gcmlwID0gMHg0MDA1YmMgaW4gZm4yIChnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1 ZS1pbmxpbmUuYzozMik7IHNhdmVkIHJpcCAweDQwMDRhZgotIGlubGluZWQgaW50byBmcmFtZSAx Ci1bLi4uXQotKGdkYikgc2V0IGRlYnVnIGVudHJ5LXZhbHVlcyAxCi0oZ2RiKSBwIHkKLURXX09Q X0dOVV9lbnRyeV92YWx1ZSByZXNvbHZpbmcgZXhwZWN0cyBjYWxsZWUgZm4xIGF0IDB4NDAwNWEw IGJ1dCB0aGUgY2FsbGVkIGZyYW1lIGlzIGZvciBmbjMgYXQgMHg0MDA1YjAKLQotRkFJTDoKLS0t LS0tCi0kMSA9IDxvcHRpbWl6ZWQgb3V0PgotUEFTUzoKLS0tLS0tCi0kMSA9IDI1Ci0KLShnZGIp IHAveCAkcGMKLSQyID0gMHg0MDA1YmMKLShnZGIpIHVwCi0jMSAgZm4zICh4PXhAZW50cnk9Niwg eT15QGVudHJ5PTI1KSBhdCBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzo0Mgot KGdkYikgcC94ICRwYwotJDMgPSAweDQwMDViYwotCi1UaGUgcHJvYmxlbSBpcyB0aGF0IERXX1RB R19HTlVfY2FsbF9zaXRlIDwtPiBEV19PUF9HTlVfZW50cnlfdmFsdWUgYmluZGluZwotZXhpc3Rz IGJldHdlZW4gRFdfVEFHX3N1YnByb2dyYW0sIG5vciBEV19UQUdfaW5saW5lZF9zdWJyb3V0aW5l IGFzIGRlc2NyaWJlZAotYnkgSmFrdWIgSmVsaW5lay4gIFRoaXMgbWFrZXMgc2Vuc2UsIHdoZW4g d2UgbG9vayBhdCBEV19UQUdfR05VX2NhbGxfc2l0ZSBhbmQKLXdlIGp1c3QgdW53aW5kIHRoZSBj dXJyZW50IGlubGluZWQgZnJhbWUgd2UgZ2V0IHRoZSBzYW1lIFBDIC0gdGhpcyBpcyBubyBuZXcK LWluZm9ybWF0aW9uLgotCi1UQUlMQ0FMTF9GUkFNRSBpcyBhIGRpZmZlcmVudCBjYXNlLCB3aGls ZSBhbHNvIGFuIGFydGlmaWNpYWwgZnJhbWUgdGhlCi1zZXF1ZW5jZSBjYW5ub3QgYmUgZGV0ZXJt aW5lZCBhdCBjb21waWxlIHRpbWUgYW5kIHRoZSBiaW5kaW5nCi1EV19UQUdfR05VX2NhbGxfc2l0 ZSA8LT4gRFdfT1BfR05VX2VudHJ5X3ZhbHVlIGV4aXN0cyBhbHNvIGZvcgotVEFJTENBTExfRlJB TUVzLgotCi1JIHdpbGwgY2hlY2sgaXQgaW4uCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQs eDg2XzY0LW0zMixpNjg2fS1mZWRvcmExOC1saW51eC1nbnUuCi0KLQotVGhhbmtzLAotSmFuCi0K LQotZ2RiLwotMjAxMi0xMC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JRml4IGVudHJ5IHZhbHVlcyByZXNvbHZpbmcgaW4gaW5saW5lZCBmcmFtZXMu Ci0JKiBkd2FyZjJsb2MuYyAoZHdhcmZfZXhwcl9yZWdfdG9fZW50cnlfcGFyYW1ldGVyKTogTW92 ZSBmdW5jX2FkZHIsCi0JZ2RiYXJjaCBhbmQgY2FsbGVyX2ZyYW1lIGluaXRpYWxpemF0aW9uIGxh dGVyLiAgU2tpcCBJTkxJTkVfRlJBTUUKLQllbnRyaWVzIG9mIEZSQU1FLgotCi1nZGIvdGVzdHN1 aXRlLwotMjAxMi0xMC0wNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotCi0JRml4IGVudHJ5IHZhbHVlcyByZXNvbHZpbmcgaW4gaW5saW5lZCBmcmFtZXMuCi0J KiBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuUzogTmV3IGZpbGUuCi0JKiBnZGIu YXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzogTmV3IGZpbGUuCi0JKiBnZGIuYXJjaC9h bWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuZXhwOiBOZXcgZmlsZS4KLQotZGlmZiAtLWdpdCBhL2dk Yi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggZThkMzlmZS4uMGJkYzA0MiAx MDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJsb2MuYwotKysrIGIvZ2RiL2R3YXJmMmxvYy5jCi1AQCAt OTgwLDE2ICs5ODAsMjcgQEAgZHdhcmZfZXhwcl9yZWdfdG9fZW50cnlfcGFyYW1ldGVyIChzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0gCQkJCSAgIHVuaW9uIGNhbGxfc2l0ZV9wYXJhbWV0ZXJf dSBraW5kX3UsCi0gCQkJCSAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKipwZXJfY3VfcmV0 dXJuKQotIHsKLS0gIENPUkVfQUREUiBmdW5jX2FkZHIgPSBnZXRfZnJhbWVfZnVuYyAoZnJhbWUp OwotLSAgQ09SRV9BRERSIGNhbGxlcl9wYzsKLS0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0g Z2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKLS0gIHN0cnVjdCBmcmFtZV9pbmZvICpjYWxsZXJfZnJh bWUgPSBnZXRfcHJldl9mcmFtZSAoZnJhbWUpOwotKyAgQ09SRV9BRERSIGZ1bmNfYWRkciwgY2Fs bGVyX3BjOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0rICBzdHJ1Y3QgZnJhbWVfaW5m byAqY2FsbGVyX2ZyYW1lOwotICAgc3RydWN0IGNhbGxfc2l0ZSAqY2FsbF9zaXRlOwotICAgaW50 IGlwYXJhbXM7Ci0gICAvKiBJbml0aWFsaXplIGl0IGp1c3QgdG8gYXZvaWQgYSBHQ0MgZmFsc2Ug d2FybmluZy4gICovCi0gICBzdHJ1Y3QgY2FsbF9zaXRlX3BhcmFtZXRlciAqcGFyYW1ldGVyID0g TlVMTDsKLSAgIENPUkVfQUREUiB0YXJnZXRfYWRkcjsKLSAKLSsgIC8qIFNraXAgYW55IGlubGlu ZWQgZnJhbWVzLCBlbnRyeSB2YWx1ZSBjYWxsIHNpdGVzIHdvcmsgYmV0d2VlbiByZWFsCi0rICAg ICBmdW5jdGlvbnMuICBUaGV5IGRvIG5vdCBtYWtlIHNlbnNlIGJldHdlZW4gaW5saW5lIGZ1bmN0 aW9ucyBhcyBldmVuIFBDCi0rICAgICBkb2VzIG5vdCBjaGFuZ2UgdGhlcmUuICAqLwotKyAgd2hp bGUgKGdldF9mcmFtZV90eXBlIChmcmFtZSkgPT0gSU5MSU5FX0ZSQU1FKQotKyAgICB7Ci0rICAg ICAgZnJhbWUgPSBnZXRfcHJldl9mcmFtZSAoZnJhbWUpOwotKyAgICAgIGdkYl9hc3NlcnQgKGZy YW1lICE9IE5VTEwpOwotKyAgICB9Ci0rCi0rICBmdW5jX2FkZHIgPSBnZXRfZnJhbWVfZnVuYyAo ZnJhbWUpOwotKyAgZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0rICBjYWxsZXJf ZnJhbWUgPSBnZXRfcHJldl9mcmFtZSAoZnJhbWUpOwotICAgaWYgKGdkYmFyY2ggIT0gZnJhbWVf dW53aW5kX2FyY2ggKGZyYW1lKSkKLSAgICAgewotICAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZnVuY19hZGRyKTsKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5T IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuUwotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjVmMzUzZjUKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLlMK LUBAIC0wLDAgKzEsNjcyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rLyogVGhpcyBmaWxlIGlzIGNvbXBpbGVkIGZyb20gZ2RiLmFyY2gvYW1kNjQtZW50cnkt dmFsdWUtaW5saW5lLmMKLSsgICB1c2luZyAtZyAtZEEgLVMgLU8yLiAgKi8KLSsKLSsJLmZpbGUJ ImFtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jIgotKwkudGV4dAotKy5MdGV4dDA6Ci0rCS5wMmFs aWduIDQsLDE1Ci0rCS50eXBlCWZuMSwgQGZ1bmN0aW9uCi0rZm4xOgotKy5MRkIwOgotKwkuZmls ZSAxICJnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYyIKLSsJIyBnZGIuYXJjaC9h bWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzoyMgotKwkubG9jIDEgMjIgMAotKwkuY2ZpX3N0YXJ0 cHJvYwotKy5MVkwwOgotKyMgQkxPQ0sgMiBmcmVxOjEwMDAwIHNlcTowCi0rIyBQUkVEOiBFTlRS WSBbMTAwLjAlXSAgKEZBTExUSFJVKQotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlu bGluZS5jOjIzCi0rCS5sb2MgMSAyMyAwCi0rCW1vdmwJdiglcmlwKSwgJWVheAotKwlhZGRsCSQx LCAlZWF4Ci0rCW1vdmwJJWVheCwgdiglcmlwKQotKyMgU1VDQzogRVhJVCBbMTAwLjAlXSAKLSsJ cmV0Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkUwOgotKwkuc2l6ZQlmbjEsIC4tZm4xCi0rCS5wMmFs aWduIDQsLDE1Ci0rCS5nbG9ibAlmbjMKLSsJLnR5cGUJZm4zLCBAZnVuY3Rpb24KLStmbjM6Ci0r LkxGQjI6Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDEKLSsJLmxv YyAxIDQxIDAKLSsJLmNmaV9zdGFydHByb2MKLSsuTFZMMToKLSsjIEJMT0NLIDIgZnJlcToxMDAw MCBzZXE6MAotKyMgUFJFRDogRU5UUlkgWzEwMC4wJV0gIChGQUxMVEhSVSkKLSsuTEJCNDoKLSsu TEJCNToKLSsJIyBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzoyOQotKwkubG9j IDEgMjkgMAotKwl0ZXN0bAklZXNpLCAlZXNpCi0rLkxCRTU6Ci0rLkxCRTQ6Ci0rCSMgZ2RiLmFy Y2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDEKLSsJLmxvYyAxIDQxIDAKLSsJcHVzaHEJ JXJieAotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2Ci0rCS5jZmlfb2Zmc2V0IDMsIC0xNgotKwkj IGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jOjQxCi0rCS5sb2MgMSA0MSAwCi0r CW1vdmwJJWVkaSwgJWVieAotKy5MQkI3OgotKy5MQkI2OgotKyMgU1VDQzogMyBbMzkuMCVdICAo RkFMTFRIUlUsQ0FOX0ZBTExUSFJVKSA0IFs2MS4wJV0gIChDQU5fRkFMTFRIUlUpCi0rCSMgZ2Ri LmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6MjkKLSsJLmxvYyAxIDI5IDAKLSsJamUJ LkwzCi0rIyBCTE9DSyAzIGZyZXE6Mzg5OCBzZXE6MQotKyMgUFJFRDogMiBbMzkuMCVdICAoRkFM TFRIUlUsQ0FOX0ZBTExUSFJVKQotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGlu ZS5jOjMxCi0rCS5sb2MgMSAzMSAwCi0rCWNhbGwJZm4xCi0rLkxWTDI6Ci0rCSMgZ2RiLmFyY2gv YW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6MzIKLSsJLmxvYyAxIDMyIDAKLSsJbGVhbAktMigl cmJ4KSwgJWVheAotKy5MVkwzOgotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGlu ZS5jOjMzCi0rCS5sb2MgMSAzMyAwCi0rCW1vdmwJJWVheCwgJWVkaQotKwlpbXVsbAklZWF4LCAl ZWRpCi0rCWFkZGwJJDEsICVlZGkKLSsuTFZMNDoKLSsJaW11bGwJJWVkaSwgJWVheAotKy5MVkw1 OgotKwkjIGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jOjM0Ci0rCS5sb2MgMSAz NCAwCi0rCWxlYWwJKCVyYngsJXJheCksICVlZGkKLSsJY2FsbAlmbjEKLSsuTFZMNjoKLSsjIFNV Q0M6IDQgWzEwMC4wJV0gIChGQUxMVEhSVSxDQU5fRkFMTFRIUlUpCi0rIyBCTE9DSyA0IGZyZXE6 MTAwMDAgc2VxOjIKLSsjIFBSRUQ6IDIgWzYxLjAlXSAgKENBTl9GQUxMVEhSVSkgMyBbMTAwLjAl XSAgKEZBTExUSFJVLENBTl9GQUxMVEhSVSkKLSsuTDM6Ci0rLkxCRTY6Ci0rLkxCRTc6Ci0rCSMg Z2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NDMKLSsJLmxvYyAxIDQzIDAKLSsJ bW92bAklZWJ4LCAlZWF4Ci0rCXBvcHEJJXJieAotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDgKLSsu TFZMNzoKLSsjIFNVQ0M6IEVYSVQgWzEwMC4wJV0gCi0rCXJldAotKwkuY2ZpX2VuZHByb2MKLSsu TEZFMjoKLSsJLnNpemUJZm4zLCAuLWZuMwotKwkuc2VjdGlvbgkudGV4dC5zdGFydHVwLCJheCIs QHByb2diaXRzCi0rCS5wMmFsaWduIDQsLDE1Ci0rCS5nbG9ibAltYWluCi0rCS50eXBlCW1haW4s IEBmdW5jdGlvbgotK21haW46Ci0rLkxGQjM6Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFs dWUtaW5saW5lLmM6NDcKLSsJLmxvYyAxIDQ3IDAKLSsJLmNmaV9zdGFydHByb2MKLSsjIEJMT0NL IDIgZnJlcToxMDAwMCBzZXE6MAotKyMgUFJFRDogRU5UUlkgWzEwMC4wJV0gIChGQUxMVEhSVSkK LSsJIyBnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYzo0OAotKwkubG9jIDEgNDgg MAotKwltb3ZsCSQyNSwgJWVzaQotKwltb3ZsCSQ2LCAlZWRpCi0rCWNhbGwJZm4zCi0rLkxWTDg6 Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmM6NTAKLSsJLmxvYyAxIDUw IDAKLSsJeG9ybAklZWF4LCAlZWF4Ci0rIyBTVUNDOiBFWElUIFsxMDAuMCVdIAotKwlyZXQKLSsJ LmNmaV9lbmRwcm9jCi0rLkxGRTM6Ci0rCS5zaXplCW1haW4sIC4tbWFpbgotKwkubG9jYWwJdgot KwkuY29tbQl2LDQsNAotKwkudGV4dAotKy5MZXRleHQwOgotKwkuc2VjdGlvbgkuZGVidWdfaW5m bywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2luZm8wOgotKwkubG9uZwkweDE2NAkjIExlbmd0aCBv ZiBDb21waWxhdGlvbiBVbml0IEluZm8KLSsJLnZhbHVlCTB4NAkjIERXQVJGIHZlcnNpb24gbnVt YmVyCi0rCS5sb25nCS5MZGVidWdfYWJicmV2MAkjIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlv bgotKwkuYnl0ZQkweDgJIyBQb2ludGVyIFNpemUgKGluIGJ5dGVzKQotKwkudWxlYjEyOCAweDEJ IyAoRElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpCi0rCS5sb25nCS5MQVNGMAkjIERXX0FU X3Byb2R1Y2VyOiAiR05VIEMgNC44LjAgMjAxMjEwMDUgKGV4cGVyaW1lbnRhbCkgLW10dW5lPWdl bmVyaWMgLW1hcmNoPXg4Ni02NCAtZyAtTzIiCi0rCS5ieXRlCTB4MQkjIERXX0FUX2xhbmd1YWdl Ci0rCS5sb25nCS5MQVNGMQkjIERXX0FUX25hbWU6ICJnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1 ZS1pbmxpbmUuYyIKLSsJLmxvbmcJLkxBU0YyCSMgRFdfQVRfY29tcF9kaXI6ICIiCi0rCS5sb25n CS5MZGVidWdfcmFuZ2VzMCsweDMwCSMgRFdfQVRfcmFuZ2VzCi0rCS5xdWFkCTAJIyBEV19BVF9s b3dfcGMKLSsJLmxvbmcJLkxkZWJ1Z19saW5lMAkjIERXX0FUX3N0bXRfbGlzdAotKwkudWxlYjEy OCAweDIJIyAoRElFICgweDI5KSBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmFzY2lpICJmbjFcMCIJ IyBEV19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1k NjQtZW50cnktdmFsdWUtaW5saW5lLmMpCi0rCS5ieXRlCTB4MTUJIyBEV19BVF9kZWNsX2xpbmUK LSsJCQkjIERXX0FUX3Byb3RvdHlwZWQKLSsJLnF1YWQJLkxGQjAJIyBEV19BVF9sb3dfcGMKLSsJ LnF1YWQJLkxGRTAtLkxGQjAJIyBEV19BVF9oaWdoX3BjCi0rCS51bGViMTI4IDB4MQkjIERXX0FU X2ZyYW1lX2Jhc2UKLSsJLmJ5dGUJMHg5YwkjIERXX09QX2NhbGxfZnJhbWVfY2ZhCi0rCQkJIyBE V19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMKLSsJLmxvbmcJMHg1MgkjIERXX0FUX3NpYmxpbmcKLSsJ LnVsZWIxMjggMHgzCSMgKERJRSAoMHg0NikgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5h c2NpaSAieFwwIgkjIERXX0FUX25hbWUKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChn ZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYykKLSsJLmJ5dGUJMHgxNQkjIERXX0FU X2RlY2xfbGluZQotKwkubG9uZwkweDUyCSMgRFdfQVRfdHlwZQotKwkudWxlYjEyOCAweDEJIyBE V19BVF9sb2NhdGlvbgotKwkuYnl0ZQkweDU1CSMgRFdfT1BfcmVnNQotKwkuYnl0ZQkwCSMgZW5k IG9mIGNoaWxkcmVuIG9mIERJRSAweDI5Ci0rCS51bGViMTI4IDB4NAkjIChESUUgKDB4NTIpIERX X1RBR19iYXNlX3R5cGUpCi0rCS5ieXRlCTB4NAkjIERXX0FUX2J5dGVfc2l6ZQotKwkuYnl0ZQkw eDUJIyBEV19BVF9lbmNvZGluZwotKwkuYXNjaWkgImludFwwIgkjIERXX0FUX25hbWUKLSsJLnVs ZWIxMjggMHg1CSMgKERJRSAoMHg1OSkgRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5hc2NpaSAiZm4y XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNo L2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jKQotKwkuYnl0ZQkweDFiCSMgRFdfQVRfZGVjbF9s aW5lCi0rCQkJIyBEV19BVF9wcm90b3R5cGVkCi0rCS5sb25nCTB4NTIJIyBEV19BVF90eXBlCi0r CS5ieXRlCTB4MQkjIERXX0FUX2lubGluZQotKwkubG9uZwkweDdjCSMgRFdfQVRfc2libGluZwot KwkudWxlYjEyOCAweDYJIyAoRElFICgweDY5KSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikKLSsJ LmFzY2lpICJ4XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUg KGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jKQotKwkuYnl0ZQkweDFiCSMgRFdf QVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NTIJIyBEV19BVF90eXBlCi0rCS51bGViMTI4IDB4Ngkj IChESUUgKDB4NzIpIERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgInlcMCIJIyBE V19BVF9uYW1lCi0rCS5ieXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQt ZW50cnktdmFsdWUtaW5saW5lLmMpCi0rCS5ieXRlCTB4MWIJIyBEV19BVF9kZWNsX2xpbmUKLSsJ LmxvbmcJMHg1MgkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBE SUUgMHg1OQotKwkudWxlYjEyOCAweDcJIyAoRElFICgweDdjKSBEV19UQUdfc3VicHJvZ3JhbSkK LSsJCQkjIERXX0FUX2V4dGVybmFsCi0rCS5hc2NpaSAiZm4zXDAiCSMgRFdfQVRfbmFtZQotKwku Ynl0ZQkweDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlu bGluZS5jKQotKwkuYnl0ZQkweDI4CSMgRFdfQVRfZGVjbF9saW5lCi0rCQkJIyBEV19BVF9wcm90 b3R5cGVkCi0rCS5sb25nCTB4NTIJIyBEV19BVF90eXBlCi0rCS5xdWFkCS5MRkIyCSMgRFdfQVRf bG93X3BjCi0rCS5xdWFkCS5MRkUyLS5MRkIyCSMgRFdfQVRfaGlnaF9wYwotKwkudWxlYjEyOCAw eDEJIyBEV19BVF9mcmFtZV9iYXNlCi0rCS5ieXRlCTB4OWMJIyBEV19PUF9jYWxsX2ZyYW1lX2Nm YQotKwkJCSMgRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzCi0rCS5sb25nCTB4MTE1CSMgRFdfQVRf c2libGluZwotKwkudWxlYjEyOCAweDgJIyAoRElFICgweDlkKSBEV19UQUdfZm9ybWFsX3BhcmFt ZXRlcikKLSsJLmFzY2lpICJ4XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9k ZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jKQotKwkuYnl0ZQkw eDI4CSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4NTIJIyBEV19BVF90eXBlCi0rCS5sb25n CS5MTFNUMAkjIERXX0FUX2xvY2F0aW9uCi0rCS51bGViMTI4IDB4OAkjIChESUUgKDB4YWEpIERX X1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYXNjaWkgInlcMCIJIyBEV19BVF9uYW1lCi0rCS5i eXRlCTB4MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5s aW5lLmMpCi0rCS5ieXRlCTB4MjgJIyBEV19BVF9kZWNsX2xpbmUKLSsJLmxvbmcJMHg1MgkjIERX X0FUX3R5cGUKLSsJLmxvbmcJLkxMU1QxCSMgRFdfQVRfbG9jYXRpb24KLSsJLnVsZWIxMjggMHg5 CSMgKERJRSAoMHhiNykgRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSkKLSsJLmxvbmcJMHg1OQkj IERXX0FUX2Fic3RyYWN0X29yaWdpbgotKwkucXVhZAkuTEJCNAkjIERXX0FUX2VudHJ5X3BjCi0r CS5sb25nCS5MZGVidWdfcmFuZ2VzMCswCSMgRFdfQVRfcmFuZ2VzCi0rCS5ieXRlCTB4MQkjIERX X0FUX2NhbGxfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmMpCi0rCS5i eXRlCTB4MmEJIyBEV19BVF9jYWxsX2xpbmUKLSsJLnVsZWIxMjggMHhhCSMgKERJRSAoMHhjYSkg RFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5sb25nCTB4NzIJIyBEV19BVF9hYnN0cmFjdF9v cmlnaW4KLSsJLmxvbmcJLkxMU1QyCSMgRFdfQVRfbG9jYXRpb24KLSsJLnVsZWIxMjggMHhhCSMg KERJRSAoMHhkMykgRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5sb25nCTB4NjkJIyBEV19B VF9hYnN0cmFjdF9vcmlnaW4KLSsJLmxvbmcJLkxMU1QwCSMgRFdfQVRfbG9jYXRpb24KLSsJLnVs ZWIxMjggMHhiCSMgKERJRSAoMHhkYykgRFdfVEFHX0dOVV9jYWxsX3NpdGUpCi0rCS5xdWFkCS5M VkwyCSMgRFdfQVRfbG93X3BjCi0rCS5sb25nCTB4MjkJIyBEV19BVF9hYnN0cmFjdF9vcmlnaW4K LSsJLmxvbmcJMHhmNAkjIERXX0FUX3NpYmxpbmcKLSsJLnVsZWIxMjggMHhjCSMgKERJRSAoMHhl ZCkgRFdfVEFHX0dOVV9jYWxsX3NpdGVfcGFyYW1ldGVyKQotKwkudWxlYjEyOCAweDEJIyBEV19B VF9sb2NhdGlvbgotKwkuYnl0ZQkweDU1CSMgRFdfT1BfcmVnNQotKwkudWxlYjEyOCAweDIJIyBE V19BVF9HTlVfY2FsbF9zaXRlX3ZhbHVlCi0rCS5ieXRlCTB4NzMJIyBEV19PUF9icmVnMwotKwku c2xlYjEyOCAwCi0rCS5ieXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4ZGMKLSsJLnVs ZWIxMjggMHhkCSMgKERJRSAoMHhmNCkgRFdfVEFHX0dOVV9jYWxsX3NpdGUpCi0rCS5xdWFkCS5M Vkw2CSMgRFdfQVRfbG93X3BjCi0rCS5sb25nCTB4MjkJIyBEV19BVF9hYnN0cmFjdF9vcmlnaW4K LSsJLnVsZWIxMjggMHhjCSMgKERJRSAoMHgxMDEpIERXX1RBR19HTlVfY2FsbF9zaXRlX3BhcmFt ZXRlcikKLSsJLnVsZWIxMjggMHgxCSMgRFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg1NQkjIERX X09QX3JlZzUKLSsJLnVsZWIxMjggMHhkCSMgRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZQotKwku Ynl0ZQkweDczCSMgRFdfT1BfYnJlZzMKLSsJLnNsZWIxMjggLTIKLSsJLmJ5dGUJMHg3MwkjIERX X09QX2JyZWczCi0rCS5zbGViMTI4IC0yCi0rCS5ieXRlCTB4NzMJIyBEV19PUF9icmVnMwotKwku c2xlYjEyOCAtMgotKwkuYnl0ZQkweDFlCSMgRFdfT1BfbXVsCi0rCS5ieXRlCTB4MjMJIyBEV19P UF9wbHVzX3Vjb25zdAotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHgxZQkjIERXX09QX211bAot KwkuYnl0ZQkweDczCSMgRFdfT1BfYnJlZzMKLSsJLnNsZWIxMjggMAotKwkuYnl0ZQkweDIyCSMg RFdfT1BfcGx1cwotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweGY0Ci0rCS5i eXRlCTAJIyBlbmQgb2YgY2hpbGRyZW4gb2YgRElFIDB4YjcKLSsJLmJ5dGUJMAkjIGVuZCBvZiBj aGlsZHJlbiBvZiBESUUgMHg3YwotKwkudWxlYjEyOCAweGUJIyAoRElFICgweDExNSkgRFdfVEFH X3N1YnByb2dyYW0pCi0rCQkJIyBEV19BVF9leHRlcm5hbAotKwkubG9uZwkuTEFTRjMJIyBEV19B VF9uYW1lOiAibWFpbiIKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC9h bWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYykKLSsJLmJ5dGUJMHgyZQkjIERXX0FUX2RlY2xfbGlu ZQotKwkubG9uZwkweDUyCSMgRFdfQVRfdHlwZQotKwkucXVhZAkuTEZCMwkjIERXX0FUX2xvd19w YwotKwkucXVhZAkuTEZFMy0uTEZCMwkjIERXX0FUX2hpZ2hfcGMKLSsJLnVsZWIxMjggMHgxCSMg RFdfQVRfZnJhbWVfYmFzZQotKwkuYnl0ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLSsJ CQkjIERXX0FUX0dOVV9hbGxfY2FsbF9zaXRlcwotKwkubG9uZwkweDE0ZgkjIERXX0FUX3NpYmxp bmcKLSsJLnVsZWIxMjggMHhkCSMgKERJRSAoMHgxMzYpIERXX1RBR19HTlVfY2FsbF9zaXRlKQot KwkucXVhZAkuTFZMOAkjIERXX0FUX2xvd19wYwotKwkubG9uZwkweDdjCSMgRFdfQVRfYWJzdHJh Y3Rfb3JpZ2luCi0rCS51bGViMTI4IDB4YwkjIChESUUgKDB4MTQzKSBEV19UQUdfR05VX2NhbGxf c2l0ZV9wYXJhbWV0ZXIpCi0rCS51bGViMTI4IDB4MQkjIERXX0FUX2xvY2F0aW9uCi0rCS5ieXRl CTB4NTUJIyBEV19PUF9yZWc1Ci0rCS51bGViMTI4IDB4MQkjIERXX0FUX0dOVV9jYWxsX3NpdGVf dmFsdWUKLSsJLmJ5dGUJMHgzNgkjIERXX09QX2xpdDYKLSsJLnVsZWIxMjggMHhjCSMgKERJRSAo MHgxNDgpIERXX1RBR19HTlVfY2FsbF9zaXRlX3BhcmFtZXRlcikKLSsJLnVsZWIxMjggMHgxCSMg RFdfQVRfbG9jYXRpb24KLSsJLmJ5dGUJMHg1NAkjIERXX09QX3JlZzQKLSsJLnVsZWIxMjggMHgx CSMgRFdfQVRfR05VX2NhbGxfc2l0ZV92YWx1ZQotKwkuYnl0ZQkweDQ5CSMgRFdfT1BfbGl0MjUK LSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxMzYKLSsJLmJ5dGUJMAkjIGVu ZCBvZiBjaGlsZHJlbiBvZiBESUUgMHgxMTUKLSsJLnVsZWIxMjggMHhmCSMgKERJRSAoMHgxNGYp IERXX1RBR192YXJpYWJsZSkKLSsJLmFzY2lpICJ2XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkw eDEJIyBEV19BVF9kZWNsX2ZpbGUgKGdkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5j KQotKwkuYnl0ZQkweDEyCSMgRFdfQVRfZGVjbF9saW5lCi0rCS5sb25nCTB4MTYyCSMgRFdfQVRf dHlwZQotKwkudWxlYjEyOCAweDkJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkweDMJIyBEV19P UF9hZGRyCi0rCS5xdWFkCXYKLSsJLnVsZWIxMjggMHgxMAkjIChESUUgKDB4MTYyKSBEV19UQUdf dm9sYXRpbGVfdHlwZSkKLSsJLmxvbmcJMHg1MgkjIERXX0FUX3R5cGUKLSsJLmJ5dGUJMAkjIGVu ZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhiCi0rCS5zZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHBy b2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwkudWxlYjEyOCAweDEJIyAoYWJicmV2IGNvZGUp Ci0rCS51bGViMTI4IDB4MTEJIyAoVEFHOiBEV19UQUdfY29tcGlsZV91bml0KQotKwkuYnl0ZQkw eDEJIyBEV19jaGlsZHJlbl95ZXMKLSsJLnVsZWIxMjggMHgyNQkjIChEV19BVF9wcm9kdWNlcikK LSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19B VF9sYW5ndWFnZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4 IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwku dWxlYjEyOCAweDFiCSMgKERXX0FUX2NvbXBfZGlyKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9S TV9zdHJwKQotKwkudWxlYjEyOCAweDU1CSMgKERXX0FUX3JhbmdlcykKLSsJLnVsZWIxMjggMHgx NwkjIChEV19GT1JNX3NlY19vZmZzZXQpCi0rCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3Bj KQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAweDEwCSMgKERX X0FUX3N0bXRfbGlzdCkKLSsJLnVsZWIxMjggMHgxNwkjIChEV19GT1JNX3NlY19vZmZzZXQpCi0r CS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDIJIyAoYWJicmV2IGNvZGUpCi0rCS51 bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdf Y2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAw eDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxl KQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChE V19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxl YjEyOCAweDI3CSMgKERXX0FUX3Byb3RvdHlwZWQpCi0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9S TV9mbGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotKwkudWxl YjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hf cGMpCi0rCS51bGViMTI4IDB4NwkjIChEV19GT1JNX2RhdGE4KQotKwkudWxlYjEyOCAweDQwCSMg KERXX0FUX2ZyYW1lX2Jhc2UpCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQot KwkudWxlYjEyOCAweDIxMTcJIyAoRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzKQotKwkudWxlYjEy OCAweDE5CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQotKwkudWxlYjEyOCAweDEJIyAoRFdfQVRf c2libGluZykKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS5ieXRlCTAKLSsJ LmJ5dGUJMAotKwkudWxlYjEyOCAweDMJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4NQkj IChUQUc6IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5f bm8KLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19G T1JNX3N0cmluZykKLSsJLnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGVi MTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xf bGluZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4NDkJ IyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGVi MTI4IDB4MgkjIChEV19BVF9sb2NhdGlvbikKLSsJLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4 cHJsb2MpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDQJIyAoYWJicmV2IGNv ZGUpCi0rCS51bGViMTI4IDB4MjQJIyAoVEFHOiBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkw CSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLSsJ LnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2UJIyAoRFdfQVRf ZW5jb2RpbmcpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAw eDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwku Ynl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHg1CSMgKGFiYnJldiBjb2RlKQotKwkudWxl YjEyOCAweDJlCSMgKFRBRzogRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5ieXRlCTB4MQkjIERXX2No aWxkcmVuX3llcwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4 CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkK LSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdf QVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIx MjggMHgyNwkjIChEV19BVF9wcm90b3R5cGVkKQotKwkudWxlYjEyOCAweDE5CSMgKERXX0ZPUk1f ZmxhZ19wcmVzZW50KQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4 IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIwCSMgKERXX0FUX2lubGluZSkK LSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MQkjIChEV19B VF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAot KwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NgkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHg1 CSMgKFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJl bl9ubwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHg4CSMgKERX X0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVs ZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVj bF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0 OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5 dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NwkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIx MjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0ZQkweDEJIyBEV19jaGls ZHJlbl95ZXMKLSsJLnVsZWIxMjggMHgzZgkjIChEV19BVF9leHRlcm5hbCkKLSsJLnVsZWIxMjgg MHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25h bWUpCi0rCS51bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKLSsJLnVsZWIxMjggMHgzYQkj IChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwku dWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZP Uk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJvdG90eXBlZCkKLSsJLnVsZWIx MjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19B VF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgx MQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51 bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHg3CSMgKERXX0ZPUk1f ZGF0YTgpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJLnVsZWIxMjgg MHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGViMTI4IDB4MjExNwkjIChEV19BVF9HTlVf YWxsX2NhbGxfc2l0ZXMpCi0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQp Ci0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEyOCAweDEzCSMgKERX X0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OAkjIChhYmJy ZXYgY29kZSkKLSsJLnVsZWIxMjggMHg1CSMgKFRBRzogRFdfVEFHX2Zvcm1hbF9wYXJhbWV0ZXIp Ci0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFt ZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkudWxlYjEyOCAweDNhCSMg KERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51 bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9S TV9kYXRhMSkKLSsJLnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEz CSMgKERXX0ZPUk1fcmVmNCkKLSsJLnVsZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQotKwku dWxlYjEyOCAweDE3CSMgKERXX0ZPUk1fc2VjX29mZnNldCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkw Ci0rCS51bGViMTI4IDB4OQkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgxZAkjIChUQUc6 IERXX1RBR19pbmxpbmVkX3N1YnJvdXRpbmUpCi0rCS5ieXRlCTB4MQkjIERXX2NoaWxkcmVuX3ll cwotKwkudWxlYjEyOCAweDMxCSMgKERXX0FUX2Fic3RyYWN0X29yaWdpbikKLSsJLnVsZWIxMjgg MHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4NTIJIyAoRFdfQVRfZW50cnlfcGMp Ci0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4IDB4NTUJIyAoRFdf QVRfcmFuZ2VzKQotKwkudWxlYjEyOCAweDE3CSMgKERXX0ZPUk1fc2VjX29mZnNldCkKLSsJLnVs ZWIxMjggMHg1OAkjIChEV19BVF9jYWxsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JN X2RhdGExKQotKwkudWxlYjEyOCAweDU5CSMgKERXX0FUX2NhbGxfbGluZSkKLSsJLnVsZWIxMjgg MHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAw eGEJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4NQkjIChUQUc6IERXX1RBR19mb3JtYWxf cGFyYW1ldGVyKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjggMHgzMQkj IChEV19BVF9hYnN0cmFjdF9vcmlnaW4pCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0 KQotKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4MTcJIyAo RFdfRk9STV9zZWNfb2Zmc2V0KQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhi CSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDQxMDkJIyAoVEFHOiBEV19UQUdfR05VX2Nh bGxfc2l0ZSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MTEJ IyAoRFdfQVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQotKwkudWxl YjEyOCAweDMxCSMgKERXX0FUX2Fic3RyYWN0X29yaWdpbikKLSsJLnVsZWIxMjggMHgxMwkjIChE V19GT1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEy OCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4 IDB4YwkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHg0MTBhCSMgKFRBRzogRFdfVEFHX0dO VV9jYWxsX3NpdGVfcGFyYW1ldGVyKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVs ZWIxMjggMHgyCSMgKERXX0FUX2xvY2F0aW9uKQotKwkudWxlYjEyOCAweDE4CSMgKERXX0ZPUk1f ZXhwcmxvYykKLSsJLnVsZWIxMjggMHgyMTExCSMgKERXX0FUX0dOVV9jYWxsX3NpdGVfdmFsdWUp Ci0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotKwkuYnl0ZQkwCi0rCS5ieXRl CTAKLSsJLnVsZWIxMjggMHhkCSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDQxMDkJIyAo VEFHOiBEV19UQUdfR05VX2NhbGxfc2l0ZSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVz Ci0rCS51bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdf Rk9STV9hZGRyKQotKwkudWxlYjEyOCAweDMxCSMgKERXX0FUX2Fic3RyYWN0X29yaWdpbikKLSsJ LnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwku dWxlYjEyOCAweGUJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19U QUdfc3VicHJvZ3JhbSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4 IDB4M2YJIyAoRFdfQVRfZXh0ZXJuYWwpCi0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFn X3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEyOCAweGUJ IyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDNhCSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJ LnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2IJIyAoRFdfQVRf ZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjgg MHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJ LnVsZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JN X2FkZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHg3 CSMgKERXX0ZPUk1fZGF0YTgpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkK LSsJLnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGViMTI4IDB4MjExNwkj IChEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMpCi0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9m bGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4MQkjIChEV19BVF9zaWJsaW5nKQotKwkudWxlYjEy OCAweDEzCSMgKERXX0ZPUk1fcmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4 IDB4ZgkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJp YWJsZSkKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19B VF9uYW1lKQotKwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4 M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkK LSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChE V19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4 IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24p Ci0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotKwkuYnl0ZQkwCi0rCS5ieXRl CTAKLSsJLnVsZWIxMjggMHgxMAkjIChhYmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNQkjIChU QUc6IERXX1RBR192b2xhdGlsZV90eXBlKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJ LnVsZWIxMjggMHg0OQkjIChEV19BVF90eXBlKQotKwkudWxlYjEyOCAweDEzCSMgKERXX0ZPUk1f cmVmNCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnNlY3Rpb24JLmRlYnVn X2xvYywiIixAcHJvZ2JpdHMKLSsuTGRlYnVnX2xvYzA6Ci0rLkxMU1QwOgotKwkucXVhZAkuTFZM MQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMCkKLSsJLnF1YWQJLkxWTDIt MQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDApCi0rCS52YWx1ZQkweDEJIyBM b2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1NQkjIERXX09QX3JlZzUKLSsJLnF1 YWQJLkxWTDItMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMCkKLSsJLnF1 YWQJLkxWTDcJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1QwKQotKwkudmFsdWUJ MHgxCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NTMJIyBEV19PUF9yZWcz Ci0rCS5xdWFkCS5MVkw3CSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QwKQot KwkucXVhZAkuTEZFMgkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDApCi0rCS52 YWx1ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1MAkjIERXX09Q X3JlZzAKLSsJLnF1YWQJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBiZWdpbiAoKi5MTFNU MCkKLSsJLnF1YWQJMAkjIExvY2F0aW9uIGxpc3QgdGVybWluYXRvciBlbmQgKCouTExTVDApCi0r LkxMU1QxOgotKwkucXVhZAkuTFZMMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUMSkKLSsJLnF1YWQJLkxWTDItMQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExT VDEpCi0rCS52YWx1ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1 NAkjIERXX09QX3JlZzQKLSsJLnF1YWQJLkxWTDItMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRk cmVzcyAoKi5MTFNUMSkKLSsJLnF1YWQJLkxGRTIJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNz ICgqLkxMU1QxKQotKwkudmFsdWUJMHg0CSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5i eXRlCTB4ZjMJIyBEV19PUF9HTlVfZW50cnlfdmFsdWUKLSsJLnVsZWIxMjggMHgxCi0rCS5ieXRl CTB4NTQJIyBEV19PUF9yZWc0Ci0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwku cXVhZAkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGJlZ2luICgqLkxMU1QxKQotKwkucXVh ZAkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9yIGVuZCAoKi5MTFNUMSkKLSsuTExTVDI6Ci0r CS5xdWFkCS5MVkwxCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QyKQotKwku cXVhZAkuTFZMMi0xCSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMikKLSsJLnZh bHVlCTB4MQkjIExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDU0CSMgRFdfT1Bf cmVnNAotKwkucXVhZAkuTFZMMi0xCSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxM U1QyKQotKwkucXVhZAkuTFZMMwkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDIp Ci0rCS52YWx1ZQkweDQJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHhmMwkj IERXX09QX0dOVV9lbnRyeV92YWx1ZQotKwkudWxlYjEyOCAweDEKLSsJLmJ5dGUJMHg1NAkjIERX X09QX3JlZzQKLSsJLmJ5dGUJMHg5ZgkjIERXX09QX3N0YWNrX3ZhbHVlCi0rCS5xdWFkCS5MVkwz CSMgTG9jYXRpb24gbGlzdCBiZWdpbiBhZGRyZXNzICgqLkxMU1QyKQotKwkucXVhZAkuTFZMNAkj IExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDIpCi0rCS52YWx1ZQkweDEJIyBMb2Nh dGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1MAkjIERXX09QX3JlZzAKLSsJLnF1YWQJ LkxWTDQJIyBMb2NhdGlvbiBsaXN0IGJlZ2luIGFkZHJlc3MgKCouTExTVDIpCi0rCS5xdWFkCS5M Vkw1CSMgTG9jYXRpb24gbGlzdCBlbmQgYWRkcmVzcyAoKi5MTFNUMikKLSsJLnZhbHVlCTB4Ngkj IExvY2F0aW9uIGV4cHJlc3Npb24gc2l6ZQotKwkuYnl0ZQkweDcwCSMgRFdfT1BfYnJlZzAKLSsJ LnNsZWIxMjggMAotKwkuYnl0ZQkweDc1CSMgRFdfT1BfYnJlZzUKLSsJLnNsZWIxMjggMAotKwku Ynl0ZQkweDFlCSMgRFdfT1BfbXVsCi0rCS5ieXRlCTB4OWYJIyBEV19PUF9zdGFja192YWx1ZQot KwkucXVhZAkuTFZMNQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5MTFNUMikKLSsJ LnF1YWQJLkxWTDYtMQkjIExvY2F0aW9uIGxpc3QgZW5kIGFkZHJlc3MgKCouTExTVDIpCi0rCS52 YWx1ZQkweDEJIyBMb2NhdGlvbiBleHByZXNzaW9uIHNpemUKLSsJLmJ5dGUJMHg1MAkjIERXX09Q X3JlZzAKLSsJLnF1YWQJLkxWTDYtMQkjIExvY2F0aW9uIGxpc3QgYmVnaW4gYWRkcmVzcyAoKi5M TFNUMikKLSsJLnF1YWQJLkxWTDYJIyBMb2NhdGlvbiBsaXN0IGVuZCBhZGRyZXNzICgqLkxMU1Qy KQotKwkudmFsdWUJMHhiCSMgTG9jYXRpb24gZXhwcmVzc2lvbiBzaXplCi0rCS5ieXRlCTB4NzMJ IyBEV19PUF9icmVnMwotKwkuc2xlYjEyOCAtMgotKwkuYnl0ZQkweDczCSMgRFdfT1BfYnJlZzMK LSsJLnNsZWIxMjggLTIKLSsJLmJ5dGUJMHg3MwkjIERXX09QX2JyZWczCi0rCS5zbGViMTI4IC0y Ci0rCS5ieXRlCTB4MWUJIyBEV19PUF9tdWwKLSsJLmJ5dGUJMHgyMwkjIERXX09QX3BsdXNfdWNv bnN0Ci0rCS51bGViMTI4IDB4MQotKwkuYnl0ZQkweDFlCSMgRFdfT1BfbXVsCi0rCS5ieXRlCTB4 OWYJIyBEV19PUF9zdGFja192YWx1ZQotKwkucXVhZAkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5h dG9yIGJlZ2luICgqLkxMU1QyKQotKwkucXVhZAkwCSMgTG9jYXRpb24gbGlzdCB0ZXJtaW5hdG9y IGVuZCAoKi5MTFNUMikKLSsJLnNlY3Rpb24JLmRlYnVnX2FyYW5nZXMsIiIsQHByb2diaXRzCi0r CS5sb25nCTB4M2MJIyBMZW5ndGggb2YgQWRkcmVzcyBSYW5nZXMgSW5mbwotKwkudmFsdWUJMHgy CSMgRFdBUkYgVmVyc2lvbgotKwkubG9uZwkuTGRlYnVnX2luZm8wCSMgT2Zmc2V0IG9mIENvbXBp bGF0aW9uIFVuaXQgSW5mbwotKwkuYnl0ZQkweDgJIyBTaXplIG9mIEFkZHJlc3MKLSsJLmJ5dGUJ MAkjIFNpemUgb2YgU2VnbWVudCBEZXNjcmlwdG9yCi0rCS52YWx1ZQkwCSMgUGFkIHRvIDE2IGJ5 dGUgYm91bmRhcnkKLSsJLnZhbHVlCTAKLSsJLnF1YWQJLkx0ZXh0MAkjIEFkZHJlc3MKLSsJLnF1 YWQJLkxldGV4dDAtLkx0ZXh0MAkjIExlbmd0aAotKwkucXVhZAkuTEZCMwkjIEFkZHJlc3MKLSsJ LnF1YWQJLkxGRTMtLkxGQjMJIyBMZW5ndGgKLSsJLnF1YWQJMAotKwkucXVhZAkwCi0rCS5zZWN0 aW9uCS5kZWJ1Z19yYW5nZXMsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19yYW5nZXMwOgotKwkucXVh ZAkuTEJCNAkjIE9mZnNldCAwCi0rCS5xdWFkCS5MQkU0Ci0rCS5xdWFkCS5MQkI3Ci0rCS5xdWFk CS5MQkU3Ci0rCS5xdWFkCTAKLSsJLnF1YWQJMAotKwkucXVhZAkuTHRleHQwCSMgT2Zmc2V0IDB4 MzAKLSsJLnF1YWQJLkxldGV4dDAKLSsJLnF1YWQJLkxGQjMJIyBPZmZzZXQgMHg0MAotKwkucXVh ZAkuTEZFMwotKwkucXVhZAkwCi0rCS5xdWFkCTAKLSsJLnNlY3Rpb24JLmRlYnVnX2xpbmUsIiIs QHByb2diaXRzCi0rLkxkZWJ1Z19saW5lMDoKLSsJLnNlY3Rpb24JLmRlYnVnX3N0ciwiTVMiLEBw cm9nYml0cywxCi0rLkxBU0YwOgotKwkuc3RyaW5nCSJHTlUgQyA0LjguMCAyMDEyMTAwNStwYXRj aGVzIChleHBlcmltZW50YWwpIC1tdHVuZT1nZW5lcmljIC1tYXJjaD14ODYtNjQgLWcgLU8yIgot Ky5MQVNGMToKLSsJLnN0cmluZwkiZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmMi Ci0rLkxBU0YyOgotKwkuc3RyaW5nCSIiCi0rLkxBU0YzOgotKwkuc3RyaW5nCSJtYWluIgotKwku aWRlbnQJIkdDQzogKEdOVSkgNC44LjAgMjAxMjEwMDUgKGV4cGVyaW1lbnRhbCkiCi0rCS5zZWN0 aW9uCS5ub3RlLkdOVS1zdGFjaywiIixAcHJvZ2JpdHMKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1ZS1pbmxpbmUuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLmY3ZmVmYjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvYW1kNjQtZW50cnktdmFsdWUtaW5saW5lLmMKLUBAIC0wLDAgKzEsNTAgQEAK LSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwot KyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLStzdGF0aWMgdm9sYXRp bGUgaW50IHY7Ci0rCi0rc3RhdGljIF9fYXR0cmlidXRlX18oKG5vaW5saW5lLCBub2Nsb25lKSkg dm9pZAotK2ZuMSAoaW50IHgpCi0rewotKyAgdisrOwotK30KLSsKLStzdGF0aWMgaW50Ci0rZm4y IChpbnQgeCwgaW50IHkpCi0rewotKyAgaWYgKHkpCi0rICAgIHsKLSsgICAgICBmbjEgKHgpOwot KyAgICAgIHkgPSAtMiArIHg7CS8qIGJyZWFrLWhlcmUgKi8KLSsgICAgICB5ID0geSAqIHkgKiB5 ICsgeTsKLSsgICAgICBmbjEgKHggKyB5KTsKLSsgICAgfQotKyAgcmV0dXJuIHg7Ci0rfQotKwot K19fYXR0cmlidXRlX18oKG5vaW5saW5lLCBub2Nsb25lKSkgaW50Ci0rZm4zIChpbnQgeCwgaW50 IHkpCi0rewotKyAgcmV0dXJuIGZuMiAoeCwgeSk7Ci0rfQotKwotK2ludAotK21haW4gKCkKLSt7 Ci0rICBmbjMgKDYsIDI1KTsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5leHAKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42YWE5MmMxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5hcmNoL2FtZDY0LWVudHJ5LXZhbHVlLWlubGluZS5leHAKLUBAIC0wLDAg KzEsNDAgQEAKLSsjIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK3NldCBvcHRzIHt9 Ci0rc3RhbmRhcmRfdGVzdGZpbGUgLlMKLSsKLStpZiBbaW5mbyBleGlzdHMgQ09NUElMRV0gewot KyAgICAjIG1ha2UgY2hlY2sgUlVOVEVTVEZMQUdTPSJnZGIuYXJjaC9hbWQ2NC1lbnRyeS12YWx1 ZS1pbmxpbmUuZXhwIENPTVBJTEU9MSIKLSsgICAgc3RhbmRhcmRfdGVzdGZpbGUKLSsgICAgbGFw cGVuZCBvcHRzIGRlYnVnIG9wdGltaXplPS1PMgotK30gZWxzZWlmIHsgIVtpc3RhcmdldCB4ODZf NjQtKi0qIF0gfHwgIVtpc19scDY0X3RhcmdldF0gfSB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5n ICR7dGVzdGZpbGV9LiIKLSsgICAgcmV0dXJuCi0rfQotKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gJG9wdHNdIH0gewot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB7Ci0rICAgIHJldHVybiAt MQotK30KLSsKLStzZXQgc3JjZmlsZSAkdGVzdGZpbGUuYwotK2dkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtw b2ludCAiYnJlYWstaGVyZSIgIi4qIGJyZWFrLWhlcmUgLioiCi0rZ2RiX3Rlc3QgInAgeSIgIiA9 IDI1IgotCgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRjaCBiL2dk Yi1mb3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDIzOGIzNTUuLjAwMDAwMDAKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLXJlZHVjZS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDUwOCArMCwwIEBACi1JbmRleDogZ2RiLTcuNC41MC4yMDEy MDYwMi9nZGIvZi1sYW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNjAyLm9y aWcvZ2RiL2YtbGFuZy5jCTIwMTItMDMtMDIgMjA6Mjk6MDAuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmMJMjAxMi0wNi0wMiAxOToxMzozMS41MjAw NTA2NTQgKzAyMDAKLUBAIC01OSwyMCArNTksNiBAQCB0eXBlZGVmIHN0cnVjdCBzYXZlZF9iZl9z eW1udW0gU0FWRURfQkYsCi0gLyogTG9jYWwgZnVuY3Rpb25zICovCi0gCi0gZXh0ZXJuIHZvaWQg X2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCk7Ci0tI2lmIDAKLS1zdGF0aWMgdm9pZCBjbGVh cl9mdW5jdGlvbl9saXN0ICh2b2lkKTsKLS1zdGF0aWMgbG9uZyBnZXRfYmZfZm9yX2ZjbiAobG9u Zyk7Ci0tc3RhdGljIHZvaWQgY2xlYXJfYmZfbGlzdCAodm9pZCk7Ci0tc3RhdGljIHZvaWQgcGF0 Y2hfYWxsX2NvbW1vbnNfYnlfbmFtZSAoY2hhciAqLCBDT1JFX0FERFIsIGludCk7Ci0tc3RhdGlj IFNBVkVEX0Y3N19DT01NT05fUFRSIGZpbmRfZmlyc3RfY29tbW9uX25hbWVkIChjaGFyICopOwot LXN0YXRpYyB2b2lkIGFkZF9jb21tb25fZW50cnkgKHN0cnVjdCBzeW1ib2wgKik7Ci0tc3RhdGlj IHZvaWQgYWRkX2NvbW1vbl9ibG9jayAoY2hhciAqLCBDT1JFX0FERFIsIGludCwgY2hhciAqKTsK LS1zdGF0aWMgU0FWRURfRlVOQ1RJT04gKmFsbG9jYXRlX3NhdmVkX2Z1bmN0aW9uX25vZGUgKHZv aWQpOwotLXN0YXRpYyBTQVZFRF9CRl9QVFIgYWxsb2NhdGVfc2F2ZWRfYmZfbm9kZSAodm9pZCk7 Ci0tc3RhdGljIENPTU1PTl9FTlRSWV9QVFIgYWxsb2NhdGVfY29tbW9uX2VudHJ5X25vZGUgKHZv aWQpOwotLXN0YXRpYyBTQVZFRF9GNzdfQ09NTU9OX1BUUiBhbGxvY2F0ZV9zYXZlZF9mNzdfY29t bW9uX25vZGUgKHZvaWQpOwotLXN0YXRpYyB2b2lkIHBhdGNoX2NvbW1vbl9lbnRyaWVzIChTQVZF RF9GNzdfQ09NTU9OX1BUUiwgQ09SRV9BRERSLCBpbnQpOwotLSNlbmRpZgotIAotIHN0YXRpYyB2 b2lkIGZfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxl ICogc3RyZWFtKTsKLSBzdGF0aWMgdm9pZCBmX2VtaXRfY2hhciAoaW50IGMsIHN0cnVjdCB0eXBl ICp0eXBlLAotQEAgLTM4NSwxODUgKzM3MSw3IEBAIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKHZv aWQpCi0gICBhZGRfbGFuZ3VhZ2UgKCZmX2xhbmd1YWdlX2RlZm4pOwotIH0KLSAKLS0jaWYgMAot LXN0YXRpYyBTQVZFRF9CRl9QVFIKLS1hbGxvY2F0ZV9zYXZlZF9iZl9ub2RlICh2b2lkKQotLXsK LS0gIFNBVkVEX0JGX1BUUiBuZXc7Ci0tCi0tICBuZXcgPSAoU0FWRURfQkZfUFRSKSB4bWFsbG9j IChzaXplb2YgKFNBVkVEX0JGKSk7Ci0tICByZXR1cm4gKG5ldyk7Ci0tfQotLQotLXN0YXRpYyBT QVZFRF9GVU5DVElPTiAqCi0tYWxsb2NhdGVfc2F2ZWRfZnVuY3Rpb25fbm9kZSAodm9pZCkKLS17 Ci0tICBTQVZFRF9GVU5DVElPTiAqbmV3OwotLQotLSAgbmV3ID0gKFNBVkVEX0ZVTkNUSU9OICop IHhtYWxsb2MgKHNpemVvZiAoU0FWRURfRlVOQ1RJT04pKTsKLS0gIHJldHVybiAobmV3KTsKLS19 Ci0tCi0tc3RhdGljIFNBVkVEX0Y3N19DT01NT05fUFRSCi0tYWxsb2NhdGVfc2F2ZWRfZjc3X2Nv bW1vbl9ub2RlICh2b2lkKQotLXsKLS0gIFNBVkVEX0Y3N19DT01NT05fUFRSIG5ldzsKLS0KLS0g IG5ldyA9IChTQVZFRF9GNzdfQ09NTU9OX1BUUikgeG1hbGxvYyAoc2l6ZW9mIChTQVZFRF9GNzdf Q09NTU9OKSk7Ci0tICByZXR1cm4gKG5ldyk7Ci0tfQotLQotLXN0YXRpYyBDT01NT05fRU5UUllf UFRSCi0tYWxsb2NhdGVfY29tbW9uX2VudHJ5X25vZGUgKHZvaWQpCi0tewotLSAgQ09NTU9OX0VO VFJZX1BUUiBuZXc7Ci0tCi0tICBuZXcgPSAoQ09NTU9OX0VOVFJZX1BUUikgeG1hbGxvYyAoc2l6 ZW9mIChDT01NT05fRU5UUlkpKTsKLS0gIHJldHVybiAobmV3KTsKLS19Ci0tI2VuZGlmCi0tCi0g U0FWRURfRjc3X0NPTU1PTl9QVFIgaGVhZF9jb21tb25fbGlzdCA9IE5VTEw7CS8qIFB0ciB0byAx c3Qgc2F2ZWQgQ09NTU9OICAqLwotLVNBVkVEX0Y3N19DT01NT05fUFRSIHRhaWxfY29tbW9uX2xp c3QgPSBOVUxMOwkvKiBQdHIgdG8gbGFzdCBzYXZlZCBDT01NT04gICovCi0tU0FWRURfRjc3X0NP TU1PTl9QVFIgY3VycmVudF9jb21tb24gPSBOVUxMOwkvKiBQdHIgdG8gY3VycmVudCBDT01NT04g Ki8KLS0KLS0jaWYgMAotLXN0YXRpYyBTQVZFRF9CRl9QVFIgc2F2ZWRfYmZfbGlzdCA9IE5VTEw7 CS8qIFB0ciB0byAoLmJmLGZ1bmN0aW9uKSAKLS0JCQkJCQkgICBsaXN0ICovCi0tc3RhdGljIFNB VkVEX0JGX1BUUiBzYXZlZF9iZl9saXN0X2VuZCA9IE5VTEw7CS8qIFB0ciB0byBhYm92ZSBsaXN0 J3MgZW5kICovCi0tc3RhdGljIFNBVkVEX0JGX1BUUiBjdXJyZW50X2hlYWRfYmZfbGlzdCA9IE5V TEw7ICAgIC8qIEN1cnJlbnQgaGVhZCBvZgotLQkJCQkJCSAgICAgICBhYm92ZSBsaXN0LiAgKi8K LS0KLS1zdGF0aWMgU0FWRURfQkZfUFRSIHRtcF9iZl9wdHI7CS8qIEdlbmVyaWMgdGVtcG9yYXJ5 IGZvciB1c2UgCi0tCQkJCSAgIGluIG1hY3Jvcy4gICovCi0tCi0tLyogVGhlIGZvbGxvd2luZyBm dW5jdGlvbiBzaW1wbHkgZW50ZXJzIGEgZ2l2ZW4gY29tbW9uIGJsb2NrIG9udG8gCi0tICAgdGhl IGdsb2JhbCBjb21tb24gYmxvY2sgY2hhaW4uICAqLwotLQotLXN0YXRpYyB2b2lkCi0tYWRkX2Nv bW1vbl9ibG9jayAoY2hhciAqbmFtZSwgQ09SRV9BRERSIG9mZnNldCwgaW50IHNlY251bSwgY2hh ciAqZnVuY19zdGFiKQotLXsKLS0gIFNBVkVEX0Y3N19DT01NT05fUFRSIHRtcDsKLS0gIGNoYXIg KmMsICpsb2NhbF9jb3B5X2Z1bmNfc3RhYjsKLS0KLS0gIC8qIElmIHRoZSBDT01NT04gYmxvY2sg d2UgYXJlIHRyeWluZyB0byBhZGQgaGFzIGEgYmxhbmsgCi0tICAgICBuYW1lIChpLmUuICIjQkxO S19DT00iKSB0aGVuIHdlIHNldCBpdCB0byBfX0JMQU5LCi0tICAgICBiZWNhdXNlIHRoZSBkYXJu ICIjIiBjaGFyYWN0ZXIgbWFrZXMgR0RCJ3MgaW5wdXQgCi0tICAgICBwYXJzZXIgaGF2ZSBmaXRz LiAgKi8KLS0KLS0KLS0gIGlmIChzdHJjbXAgKG5hbWUsIEJMQU5LX0NPTU1PTl9OQU1FX09SSUdJ TkFMKSA9PSAwCi0tICAgICAgfHwgc3RyY21wIChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9NRjc3 KSA9PSAwKQotLSAgICB7Ci0tCi0tICAgICAgeGZyZWUgKG5hbWUpOwotLSAgICAgIG5hbWUgPSBh bGxvY2EgKHN0cmxlbiAoQkxBTktfQ09NTU9OX05BTUVfTE9DQUwpICsgMSk7Ci0tICAgICAgc3Ry Y3B5IChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9MT0NBTCk7Ci0tICAgIH0KLS0KLS0gIHRtcCA9 IGFsbG9jYXRlX3NhdmVkX2Y3N19jb21tb25fbm9kZSAoKTsKLS0KLS0gIGxvY2FsX2NvcHlfZnVu Y19zdGFiID0geG1hbGxvYyAoc3RybGVuIChmdW5jX3N0YWIpICsgMSk7Ci0tICBzdHJjcHkgKGxv Y2FsX2NvcHlfZnVuY19zdGFiLCBmdW5jX3N0YWIpOwotLQotLSAgdG1wLT5uYW1lID0geG1hbGxv YyAoc3RybGVuIChuYW1lKSArIDEpOwotLQotLSAgLyogbG9jYWxfY29weV9mdW5jX3N0YWIgaXMg YSBzdGFic3RyaW5nLCBsZXQgdXMgZmlyc3QgZXh0cmFjdCB0aGUgCi0tICAgICBmdW5jdGlvbiBu YW1lIGZyb20gdGhlIHN0YWIgYnkgTlVMTGluZyBvdXQgdGhlICc6JyBjaGFyYWN0ZXIuICAqLwot LQotLQotLSAgYyA9IE5VTEw7Ci0tICBjID0gc3RyY2hyIChsb2NhbF9jb3B5X2Z1bmNfc3RhYiwg JzonKTsKLS0KLS0gIGlmIChjKQotLSAgICAqYyA9ICdcMCc7Ci0tICBlbHNlCi0tICAgIGVycm9y IChfKCJNYWxmb3JtZWQgZnVuY3Rpb24gU1RBQiBmb3VuZCBpbiBhZGRfY29tbW9uX2Jsb2NrKCki KSk7Ci0tCi0tCi0tICB0bXAtPm93bmluZ19mdW5jdGlvbiA9IHhtYWxsb2MgKHN0cmxlbiAobG9j YWxfY29weV9mdW5jX3N0YWIpICsgMSk7Ci0tCi0tICBzdHJjcHkgKHRtcC0+b3duaW5nX2Z1bmN0 aW9uLCBsb2NhbF9jb3B5X2Z1bmNfc3RhYik7Ci0tCi0tICBzdHJjcHkgKHRtcC0+bmFtZSwgbmFt ZSk7Ci0tICB0bXAtPm9mZnNldCA9IG9mZnNldDsKLS0gIHRtcC0+bmV4dCA9IE5VTEw7Ci0tICB0 bXAtPmVudHJpZXMgPSBOVUxMOwotLSAgdG1wLT5zZWNudW0gPSBzZWNudW07Ci0tCi0tICBjdXJy ZW50X2NvbW1vbiA9IHRtcDsKLS0KLS0gIGlmIChoZWFkX2NvbW1vbl9saXN0ID09IE5VTEwpCi0t ICAgIHsKLS0gICAgICBoZWFkX2NvbW1vbl9saXN0ID0gdGFpbF9jb21tb25fbGlzdCA9IHRtcDsK LS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgdGFpbF9jb21tb25fbGlzdC0+bmV4dCA9 IHRtcDsKLS0gICAgICB0YWlsX2NvbW1vbl9saXN0ID0gdG1wOwotLSAgICB9Ci0tfQotLSNlbmRp ZgotLQotLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2ltcGx5IGVudGVycyBhIGdpdmVuIGNv bW1vbiBlbnRyeSBvbnRvIAotLSAgIHRoZSAiY3VycmVudF9jb21tb24iIGJsb2NrIHRoYXQgaGFz IGJlZW4gc2F2ZWQgYXdheS4gICovCi0tCi0tI2lmIDAKLS1zdGF0aWMgdm9pZAotLWFkZF9jb21t b25fZW50cnkgKHN0cnVjdCBzeW1ib2wgKmVudHJ5X3N5bV9wdHIpCi0tewotLSAgQ09NTU9OX0VO VFJZX1BUUiB0bXA7Ci0tCi0tCi0tCi0tICAvKiBUaGUgb3JkZXIgb2YgdGhpcyBsaXN0IGlzIGlt cG9ydGFudCwgc2luY2UgCi0tICAgICB3ZSBleHBlY3QgdGhlIGVudHJpZXMgdG8gYXBwZWFyIGlu IGRlY2wuCi0tICAgICBvcmRlciB3aGVuIHdlIGxhdGVyIGlzc3VlICJpbmZvIGNvbW1vbiIgY2Fs bHMuICAqLwotLQotLSAgdG1wID0gYWxsb2NhdGVfY29tbW9uX2VudHJ5X25vZGUgKCk7Ci0tCi0t ICB0bXAtPm5leHQgPSBOVUxMOwotLSAgdG1wLT5zeW1ib2wgPSBlbnRyeV9zeW1fcHRyOwotLQot LSAgaWYgKGN1cnJlbnRfY29tbW9uID09IE5VTEwpCi0tICAgIGVycm9yIChfKCJBdHRlbXB0IHRv IGFkZCBDT01NT04gZW50cnkgd2l0aCBubyBibG9jayBvcGVuISIpKTsKLS0gIGVsc2UKLS0gICAg ewotLSAgICAgIGlmIChjdXJyZW50X2NvbW1vbi0+ZW50cmllcyA9PSBOVUxMKQotLQl7Ci0tCSAg Y3VycmVudF9jb21tb24tPmVudHJpZXMgPSB0bXA7Ci0tCSAgY3VycmVudF9jb21tb24tPmVuZF9v Zl9lbnRyaWVzID0gdG1wOwotLQl9Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAgY3VycmVudF9jb21t b24tPmVuZF9vZl9lbnRyaWVzLT5uZXh0ID0gdG1wOwotLQkgIGN1cnJlbnRfY29tbW9uLT5lbmRf b2ZfZW50cmllcyA9IHRtcDsKLS0JfQotLSAgICB9Ci0tfQotLSNlbmRpZgotLQotLS8qIFRoaXMg cm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5jb3VudHJlZCBDT01NT04gYmxvY2sgbmFtZWQgIm5h bWUiLiAgKi8KLS0KLS0jaWYgMAotLXN0YXRpYyBTQVZFRF9GNzdfQ09NTU9OX1BUUgotLWZpbmRf Zmlyc3RfY29tbW9uX25hbWVkIChjaGFyICpuYW1lKQotLXsKLS0KLS0gIFNBVkVEX0Y3N19DT01N T05fUFRSIHRtcDsKLS0KLS0gIHRtcCA9IGhlYWRfY29tbW9uX2xpc3Q7Ci0tCi0tICB3aGlsZSAo dG1wICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBpZiAoc3RyY21wICh0bXAtPm5hbWUsIG5hbWUp ID09IDApCi0tCXJldHVybiAodG1wKTsKLS0gICAgICBlbHNlCi0tCXRtcCA9IHRtcC0+bmV4dDsK LS0gICAgfQotLSAgcmV0dXJuIChOVUxMKTsKLS19Ci0tI2VuZGlmCi0gCi0gLyogVGhpcyByb3V0 aW5lIGZpbmRzIHRoZSBmaXJzdCBlbmNvdW50cmVkIENPTU1PTiBibG9jayBuYW1lZCAibmFtZSIg Ci0gICAgdGhhdCBiZWxvbmdzIHRvIGZ1bmN0aW9uIGZ1bmNuYW1lLiAgKi8KLUBAIC01ODYsMTkz ICszOTQsMyBAQCBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNvbnN0IGNoYXIgKm5hCi0gICAg IH0KLSAgIHJldHVybiAoTlVMTCk7Ci0gfQotLQotLQotLSNpZiAwCi0tCi0tLyogVGhlIGZvbGxv d2luZyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gcGF0Y2ggdXAgdGhlIG9mZnNldHMgCi0tICAgZm9y IHRoZSBzdGF0aWNzIGNvbnRhaW5lZCBpbiB0aGUgQ09NTU9OIGJsb2NrIG5hbWVkCi0tICAgIm5h bWUuIiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXBhdGNoX2NvbW1vbl9lbnRyaWVzIChTQVZFRF9G NzdfQ09NTU9OX1BUUiBibGssIENPUkVfQUREUiBvZmZzZXQsIGludCBzZWNudW0pCi0tewotLSAg Q09NTU9OX0VOVFJZX1BUUiBlbnRyeTsKLS0KLS0gIGJsay0+b2Zmc2V0ID0gb2Zmc2V0OwkJLyog S2VlcCB0aGlzIGFyb3VuZCBmb3IgZnV0dXJlIHVzZS4gICovCi0tCi0tICBlbnRyeSA9IGJsay0+ ZW50cmllczsKLS0KLS0gIHdoaWxlIChlbnRyeSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgU1lN Qk9MX1ZBTFVFIChlbnRyeS0+c3ltYm9sKSArPSBvZmZzZXQ7Ci0tICAgICAgU1lNQk9MX1NFQ1RJ T04gKGVudHJ5LT5zeW1ib2wpID0gc2VjbnVtOwotLQotLSAgICAgIGVudHJ5ID0gZW50cnktPm5l eHQ7Ci0tICAgIH0KLS0gIGJsay0+c2VjbnVtID0gc2VjbnVtOwotLX0KLS0KLS0vKiBQYXRjaCBh bGwgY29tbW9ucyBuYW1lZCAibmFtZSIgdGhhdCBuZWVkIHBhdGNoaW5nLlNpbmNlIENPTU1PTgot LSAgIGJsb2NrcyBvY2N1ciB3aXRoIHJlbGF0aXZlIGluZnJlcXVlbmN5LCB3ZSBzaW1wbHkgZG8g YSBsaW5lYXIgc2NhbiBvbgotLSAgIHRoZSBuYW1lLiAgRXZlbnR1YWxseSwgdGhlIGJlc3Qgd2F5 IHRvIGRvIHRoaXMgd2lsbCBiZSBhCi0tICAgaGFzaGVkLWxvb2t1cC4gIFNlY251bSBpcyB0aGUg c2VjdGlvbiBudW1iZXIgZm9yIHRoZSAuYnNzIHNlY3Rpb24KLS0gICAod2hpY2ggaXMgd2hlcmUg Y29tbW9uIGRhdGEgbGl2ZXMpLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXBhdGNoX2FsbF9jb21t b25zX2J5X25hbWUgKGNoYXIgKm5hbWUsIENPUkVfQUREUiBvZmZzZXQsIGludCBzZWNudW0pCi0t ewotLQotLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1wOwotLQotLSAgLyogRm9yIGJsYW5rIGNv bW1vbiBibG9ja3MsIGNoYW5nZSB0aGUgY2Fub25pY2FsIHJlcHJzZW50YXRpb24gCi0tICAgICBv ZiBhIGJsYW5rIG5hbWUgKi8KLS0KLS0gIGlmIChzdHJjbXAgKG5hbWUsIEJMQU5LX0NPTU1PTl9O QU1FX09SSUdJTkFMKSA9PSAwCi0tICAgICAgfHwgc3RyY21wIChuYW1lLCBCTEFOS19DT01NT05f TkFNRV9NRjc3KSA9PSAwKQotLSAgICB7Ci0tICAgICAgeGZyZWUgKG5hbWUpOwotLSAgICAgIG5h bWUgPSBhbGxvY2EgKHN0cmxlbiAoQkxBTktfQ09NTU9OX05BTUVfTE9DQUwpICsgMSk7Ci0tICAg ICAgc3RyY3B5IChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9MT0NBTCk7Ci0tICAgIH0KLS0KLS0g IHRtcCA9IGhlYWRfY29tbW9uX2xpc3Q7Ci0tCi0tICB3aGlsZSAodG1wICE9IE5VTEwpCi0tICAg IHsKLS0gICAgICBpZiAoQ09NTU9OX05FRURTX1BBVENISU5HICh0bXApKQotLQlpZiAoc3RyY21w ICh0bXAtPm5hbWUsIG5hbWUpID09IDApCi0tCSAgcGF0Y2hfY29tbW9uX2VudHJpZXMgKHRtcCwg b2Zmc2V0LCBzZWNudW0pOwotLQotLSAgICAgIHRtcCA9IHRtcC0+bmV4dDsKLS0gICAgfQotLX0K LS0jZW5kaWYKLS0KLS0vKiBUaGlzIG1hY3JvIGFkZHMgdGhlIHN5bWJvbC1udW1iZXIgZm9yIHRo ZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24gCi0tICAgKHRoZSBzeW1ib2wgbnVtYmVyIG9mIHRoZSAu YmYpIHJlZmVyZW5jZWQgYnkgc3ltbnVtX2ZjbiB0byBhIAotLSAgIGxpc3QuICBUaGlzIGxpc3Qs IGluIHJlYWxpdHkgc2hvdWxkIGJlIGEgRklGTyBxdWV1ZSBidXQgc2luY2UgCi0tICAgI2xpbmUg cHJhZ21hcyBzb21ldGltZXMgY2F1c2UgbGluZSByYW5nZXMgdG8gZ2V0IG1lc3NlZCB1cCAKLS0g ICB3ZSBzaW1wbHkgY3JlYXRlIGEgbGluZWFyIGxpc3QuICBUaGlzIGxpc3QgY2FuIHRoZW4gYmUg c2VhcmNoZWQgCi0tICAgZmlyc3QgYnkgYSBxdWV1ZWluZyBhbGdvcml0aG0gYW5kIHVwb24gZmFp bHVyZSBmYWxsIGJhY2sgdG8gCi0tICAgYSBsaW5lYXIgc2Nhbi4gICovCi0tCi0tI2lmIDAKLS0j ZGVmaW5lIEFERF9CRl9TWU1OVU0oYmZfc3ltLGZjbl9zeW0pIFwKLS0gIFwKLS0gIGlmIChzYXZl ZF9iZl9saXN0ID09IE5VTEwpIFwKLS17IFwKLS0gICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3Nh dmVkX2JmX25vZGUoKTsgXAotLSAgICAgIFwKLS0JdG1wX2JmX3B0ci0+c3ltbnVtX2JmID0gKGJm X3N5bSk7IFwKLS0JICB0bXBfYmZfcHRyLT5zeW1udW1fZmNuID0gKGZjbl9zeW0pOyAgXAotLQkg ICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7IFwKLS0JICAgICAgXAotLQkJY3VycmVudF9oZWFk X2JmX2xpc3QgPSBzYXZlZF9iZl9saXN0ID0gdG1wX2JmX3B0cjsgXAotLQkJICBzYXZlZF9iZl9s aXN0X2VuZCA9IHRtcF9iZl9wdHI7IFwKLS0JCSAgfSBcCi0tZWxzZSBcCi0teyAgXAotLSAgICAg dG1wX2JmX3B0ciA9IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsgXAotLSAgICAgICBcCi0tICAg ICAgICAgdG1wX2JmX3B0ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7ICBcCi0tCSAgIHRtcF9iZl9w dHItPnN5bW51bV9mY24gPSAoZmNuX3N5bSk7ICBcCi0tCSAgICAgdG1wX2JmX3B0ci0+bmV4dCA9 IE5VTEw7ICBcCi0tCSAgICAgICBcCi0tCQkgc2F2ZWRfYmZfbGlzdF9lbmQtPm5leHQgPSB0bXBf YmZfcHRyOyAgXAotLQkJICAgc2F2ZWRfYmZfbGlzdF9lbmQgPSB0bXBfYmZfcHRyOyBcCi0tCQkg ICB9Ci0tI2VuZGlmCi0tCi0tLyogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUgZW50aXJlICguYmYs ZnVuY3Rpb24pIGxpc3QuICAqLwotLQotLSNpZiAwCi0tc3RhdGljIHZvaWQKLS1jbGVhcl9iZl9s aXN0ICh2b2lkKQotLXsKLS0KLS0gIFNBVkVEX0JGX1BUUiB0bXAgPSBzYXZlZF9iZl9saXN0Owot LSAgU0FWRURfQkZfUFRSIG5leHQgPSBOVUxMOwotLQotLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQot LSAgICB7Ci0tICAgICAgbmV4dCA9IHRtcC0+bmV4dDsKLS0gICAgICB4ZnJlZSAodG1wKTsKLS0g ICAgICB0bXAgPSBuZXh0OwotLSAgICB9Ci0tICBzYXZlZF9iZl9saXN0ID0gTlVMTDsKLS19Ci0t I2VuZGlmCi0tCi0taW50IGdsb2JhbF9yZW1vdGVfZGVidWc7Ci0tCi0tI2lmIDAKLS0KLS1zdGF0 aWMgbG9uZwotLWdldF9iZl9mb3JfZmNuIChsb25nIHRoZV9mdW5jdGlvbikKLS17Ci0tICBTQVZF RF9CRl9QVFIgdG1wOwotLSAgaW50IG5wcm9iZXMgPSAwOwotLQotLSAgLyogRmlyc3QgdXNlIGEg c2ltcGxlIHF1ZXVpbmcgYWxnb3JpdGhtIChpLmUuIGxvb2sgYW5kIHNlZSBpZiB0aGUgCi0tICAg ICBpdGVtIGF0IHRoZSBoZWFkIG9mIHRoZSBxdWV1ZSBpcyB0aGUgb25lIHlvdSB3YW50KS4gICov Ci0tCi0tICBpZiAoc2F2ZWRfYmZfbGlzdCA9PSBOVUxMKQotLSAgICBpbnRlcm5hbF9lcnJvciAo X19GSUxFX18sIF9fTElORV9fLAotLQkJICAgIF8oImNhbm5vdCBnZXQgLmJmIG5vZGUgb2ZmIGVt cHR5IGxpc3QiKSk7Ci0tCi0tICBpZiAoY3VycmVudF9oZWFkX2JmX2xpc3QgIT0gTlVMTCkKLS0g ICAgaWYgKGN1cnJlbnRfaGVhZF9iZl9saXN0LT5zeW1udW1fZmNuID09IHRoZV9mdW5jdGlvbikK LS0gICAgICB7Ci0tCWlmIChnbG9iYWxfcmVtb3RlX2RlYnVnKQotLQkgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGVyciwgIioiKTsKLS0KLS0JdG1wID0gY3VycmVudF9oZWFkX2JmX2xpc3Q7 Ci0tCWN1cnJlbnRfaGVhZF9iZl9saXN0ID0gY3VycmVudF9oZWFkX2JmX2xpc3QtPm5leHQ7Ci0t CXJldHVybiAodG1wLT5zeW1udW1fYmYpOwotLSAgICAgIH0KLS0KLS0gIC8qIElmIHRoZSBhYm92 ZSBkaWQgbm90IHdvcmsgKHByb2JhYmx5IGJlY2F1c2UgI2xpbmUgZGlyZWN0aXZlcyB3ZXJlIAot LSAgICAgdXNlZCBpbiB0aGUgc291cmNlZmlsZSBhbmQgdGhleSBtZXNzZWQgdXAgb3VyIGludGVy bmFsIHRhYmxlcykgd2Ugbm93IGRvCi0tICAgICB0aGUgdWdseSBsaW5lYXIgc2Nhbi4gICovCi0t Ci0tICBpZiAoZ2xvYmFsX3JlbW90ZV9kZWJ1ZykKLS0gICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkZXJyLCAiXG5kZWZhdWx0aW5nIHRvIGxpbmVhciBzY2FuXG4iKTsKLS0KLS0gIG5wcm9i ZXMgPSAwOwotLSAgdG1wID0gc2F2ZWRfYmZfbGlzdDsKLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkK LS0gICAgewotLSAgICAgIG5wcm9iZXMrKzsKLS0gICAgICBpZiAodG1wLT5zeW1udW1fZmNuID09 IHRoZV9mdW5jdGlvbikKLS0JewotLQkgIGlmIChnbG9iYWxfcmVtb3RlX2RlYnVnKQotLQkgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkZXJyLCAiRm91bmQgaW4gJWQgcHJvYmVzXG4iLCBu cHJvYmVzKTsKLS0JICBjdXJyZW50X2hlYWRfYmZfbGlzdCA9IHRtcC0+bmV4dDsKLS0JICByZXR1 cm4gKHRtcC0+c3ltbnVtX2JmKTsKLS0JfQotLSAgICAgIHRtcCA9IHRtcC0+bmV4dDsKLS0gICAg fQotLQotLSAgcmV0dXJuICgtMSk7Ci0tfQotLQotLXN0YXRpYyBTQVZFRF9GVU5DVElPTl9QVFIg c2F2ZWRfZnVuY3Rpb25fbGlzdCA9IE5VTEw7Ci0tc3RhdGljIFNBVkVEX0ZVTkNUSU9OX1BUUiBz YXZlZF9mdW5jdGlvbl9saXN0X2VuZCA9IE5VTEw7Ci0tCi0tc3RhdGljIHZvaWQKLS1jbGVhcl9m dW5jdGlvbl9saXN0ICh2b2lkKQotLXsKLS0gIFNBVkVEX0ZVTkNUSU9OX1BUUiB0bXAgPSBzYXZl ZF9mdW5jdGlvbl9saXN0OwotLSAgU0FWRURfRlVOQ1RJT05fUFRSIG5leHQgPSBOVUxMOwotLQot LSAgd2hpbGUgKHRtcCAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgbmV4dCA9IHRtcC0+bmV4dDsK LS0gICAgICB4ZnJlZSAodG1wKTsKLS0gICAgICB0bXAgPSBuZXh0OwotLSAgICB9Ci0tCi0tICBz YXZlZF9mdW5jdGlvbl9saXN0ID0gTlVMTDsKLS19Ci0tI2VuZGlmCi1JbmRleDogZ2RiLTcuNC41 MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIw NjAyLm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTItMDYtMDIgMTk6MTE6NTQuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi1sYW5nLmgJMjAxMi0wNi0wMiAxOToxMzo1 NS4zNDUzMTc5NzAgKzAyMDAKLUBAIC03NiwxNSArNzYsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qgc2F2 ZWRfZjc3X2NvbW1vbiBTQVZFRF9GNwotIHR5cGVkZWYgc3RydWN0IGNvbW1vbl9lbnRyeSBDT01N T05fRU5UUlksICpDT01NT05fRU5UUllfUFRSOwotIAotIGV4dGVybiBTQVZFRF9GNzdfQ09NTU9O X1BUUiBoZWFkX2NvbW1vbl9saXN0OwkvKiBQdHIgdG8gMXN0IHNhdmVkIENPTU1PTiAgKi8KLS1l eHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgdGFpbF9jb21tb25fbGlzdDsJLyogUHRyIHRvIGxh c3Qgc2F2ZWQgQ09NTU9OICAqLwotLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9OX1BUUiBjdXJyZW50 X2NvbW1vbjsJLyogUHRyIHRvIGN1cnJlbnQgQ09NTU9OICovCi0gCi0gZXh0ZXJuIFNBVkVEX0Y3 N19DT01NT05fUFRSIGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY29uc3QgY2hhciAqLAotIAkJ CQkJCSAgICAgIGNvbnN0IGNoYXIgKik7Ci0gCi0tI2RlZmluZSBVTklOSVRJQUxJWkVEX1NFQ05V TSAtMQotLSNkZWZpbmUgQ09NTU9OX05FRURTX1BBVENISU5HKGJsaykgKChibGspLT5zZWNudW0g PT0gVU5JTklUSUFMSVpFRF9TRUNOVU0pCi0tCi0gI2RlZmluZSBCTEFOS19DT01NT05fTkFNRV9P UklHSU5BTCAiI0JMTktfQ09NIgkvKiBYTEYgYXNzaWduZWQgICovCi0gI2RlZmluZSBCTEFOS19D T01NT05fTkFNRV9NRjc3ICAgICAiX19CTE5LX18iCS8qIE1GNzcgYXNzaWduZWQgICovCi0gI2Rl ZmluZSBCTEFOS19DT01NT05fTkFNRV9MT0NBTCAgICAiX19CTEFOSyIJLyogTG9jYWwgR0RCICov Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDYwMi9nZGIvZi12YWxwcmludC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDYwMi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMi0wNi0w MiAxOToxMTo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNjAyL2dkYi9m LXZhbHByaW50LmMJMjAxMi0wNi0wMiAxOToxNDoxMS42MjUzMTM0MzIgKzAyMDAKLUBAIC0zNSwx MCArMzUsNiBAQAotICNpbmNsdWRlICJjb21tYW5kLmgiCi0gI2luY2x1ZGUgImJsb2NrLmgiCi0g Ci0tI2lmIDAKLS1zdGF0aWMgaW50IHRoZXJlX2lzX2FfdmlzaWJsZV9jb21tb25fbmFtZWQgKGNo YXIgKik7Ci0tI2VuZGlmCi0tCi0gZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAo dm9pZCk7Ci0gc3RhdGljIHZvaWQgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOwot IHN0YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoY29uc3QgY2hhciAqKTsKLUBA IC01MzUsNjcgKzUzMSw2IEBAIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKmNvbW5hbWUsIGlu dAotIAkJICAgICBjb21uYW1lLCBmdW5uYW1lKTsKLSB9Ci0gCi0tLyogVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZXJlIGlzIGEKLS0gICBGNzcgY29tbW9uIGJs b2NrIHZpc2libGUgYXQgdGhlIGN1cnJlbnQgc2NvcGUgY2FsbGVkICdjb21uYW1lJy4gICovCi0t Ci0tI2lmIDAKLS1zdGF0aWMgaW50Ci0tdGhlcmVfaXNfYV92aXNpYmxlX2NvbW1vbl9uYW1lZCAo Y2hhciAqY29tbmFtZSkKLS17Ci0tICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0aGVfY29tbW9uOwot LSAgc3RydWN0IGZyYW1lX2luZm8gKmZpOwotLSAgY2hhciAqZnVubmFtZSA9IDA7Ci0tICBzdHJ1 Y3Qgc3ltYm9sICpmdW5jOwotLQotLSAgaWYgKGNvbW5hbWUgPT0gTlVMTCkKLS0gICAgZXJyb3Ig KF8oIkNhbm5vdCBkZWFsIHdpdGggTlVMTCBjb21tb24gbmFtZSEiKSk7Ci0tCi0tICBmaSA9IGdl dF9zZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7Ci0tCi0tICAvKiBUaGUg Zm9sbG93aW5nIGlzIGdlbmVyYWxseSByaXBwZWQgb2ZmIGZyb20gc3RhY2suYydzIHJvdXRpbmUg Ci0tICAgICBwcmludF9mcmFtZV9pbmZvKCkuICAqLwotLQotLSAgZnVuYyA9IGZpbmRfcGNfZnVu Y3Rpb24gKGZpLT5wYyk7Ci0tICBpZiAoZnVuYykKLS0gICAgewotLSAgICAgIC8qIEluIGNlcnRh aW4gcGF0aG9sb2dpY2FsIGNhc2VzLCB0aGUgc3ltdGFicyBnaXZlIHRoZSB3cm9uZwotLSAgICAg ICAgIGZ1bmN0aW9uICh3aGVuIHdlIGFyZSBpbiB0aGUgZmlyc3QgZnVuY3Rpb24gaW4gYSBmaWxl IHdoaWNoCi0tICAgICAgICAgaXMgY29tcGlsZWQgd2l0aG91dCBkZWJ1Z2dpbmcgc3ltYm9scywg dGhlIHByZXZpb3VzIGZ1bmN0aW9uCi0tICAgICAgICAgaXMgY29tcGlsZWQgd2l0aCBkZWJ1Z2dp bmcgc3ltYm9scywgYW5kIHRoZSAiZm9vLm8iIHN5bWJvbAotLSAgICAgICAgIHRoYXQgaXMgc3Vw cG9zZWQgdG8gdGVsbCB1cyB3aGVyZSB0aGUgZmlsZSB3aXRoIGRlYnVnZ2luZyBzeW1ib2xzCi0t ICAgICAgICAgZW5kcyBoYXMgYmVlbiB0cnVuY2F0ZWQgYnkgYXIgYmVjYXVzZSBpdCBpcyBsb25n ZXIgdGhhbiAxNQotLSAgICAgICAgIGNoYXJhY3RlcnMpLgotLQotLSAgICAgICAgIFNvIGxvb2sg aW4gdGhlIG1pbmltYWwgc3ltYm9sIHRhYmxlcyBhcyB3ZWxsLCBhbmQgaWYgaXQgY29tZXMKLS0g ICAgICAgICB1cCB3aXRoIGEgbGFyZ2VyIGFkZHJlc3MgZm9yIHRoZSBmdW5jdGlvbiB1c2UgdGhh dCBpbnN0ZWFkLgotLSAgICAgICAgIEkgZG9uJ3QgdGhpbmsgdGhpcyBjYW4gZXZlciBjYXVzZSBh bnkgcHJvYmxlbXM7IHRoZXJlIHNob3VsZG4ndAotLSAgICAgICAgIGJlIGFueSBtaW5pbWFsIHN5 bWJvbHMgaW4gdGhlIG1pZGRsZSBvZiBhIGZ1bmN0aW9uLgotLSAgICAgICAgIEZJWE1FOiAgKE5v dCBuZWNlc3NhcmlseSB0cnVlLiAgV2hhdCBhYm91dCB0ZXh0IGxhYmVscz8pICAqLwotLQotLSAg ICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJv bF9ieV9wYyAoZmktPnBjKTsKLS0KLS0gICAgICBpZiAobXN5bWJvbCAhPSBOVUxMCi0tCSAgJiYg KFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltYm9sKQotLQkgICAgICA+IEJMT0NLX1NUQVJUIChT WU1CT0xfQkxPQ0tfVkFMVUUgKGZ1bmMpKSkpCi0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9O QU1FIChtc3ltYm9sKTsKLS0gICAgICBlbHNlCi0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9O QU1FIChmdW5jKTsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgc3RydWN0IG1pbmlt YWxfc3ltYm9sICptc3ltYm9sID0KLS0JbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChmaS0+ cGMpOwotLQotLSAgICAgIGlmIChtc3ltYm9sICE9IE5VTEwpCi0tCWZ1bm5hbWUgPSBTWU1CT0xf TElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLS0gICAgfQotLQotLSAgdGhlX2NvbW1vbiA9IGZpbmRf Y29tbW9uX2Zvcl9mdW5jdGlvbiAoY29tbmFtZSwgZnVubmFtZSk7Ci0tCi0tICByZXR1cm4gKHRo ZV9jb21tb24gPyAxIDogMCk7Ci0tfQotLSNlbmRpZgotLQotIHZvaWQKLSBfaW5pdGlhbGl6ZV9m X3ZhbHByaW50ICh2b2lkKQotIHsKCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1jb21tb24ucGF0 Y2ggYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGUwNzIxMzMuLjAwMDAwMDAKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNTk4ICswLDAgQEAKLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODAxL2dk Yi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODAxLm9yaWcv Z2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA4LTAxIDE4OjM2OjUxLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLTA4LTAxIDE4OjM4OjU0 LjIwMTU0MDUwMCArMDIwMAotQEAgLTExMDczLDEyICsxMTA3MywxNCBAQCByZWFkX3NldF90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RyCi0gICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUs IHNldF90eXBlLCBjdSk7Ci0gfQotIAotLS8qIEZpcnN0IGN1dDogaW5zdGFsbCBlYWNoIGNvbW1v biBibG9jayBtZW1iZXIgYXMgYSBnbG9iYWwgdmFyaWFibGUuICAqLwotKy8qIENyZWF0ZSBhcHBy b3ByaWF0ZSBsb2NhbGx5LXNjb3BlZCB2YXJpYWJsZXMgZm9yIGFsbCB0aGUgRFdfVEFHX2NvbW1v bl9ibG9jawotKyAgIGVudHJpZXMuICBDcmVhdGUgYWxzbyBUWVBFX0NPREVfU1RSVUNUIGxpc3Rp bmcgYWxsIHN1Y2ggdmFyaWFibGVzIHRvIGJlCi0rICAgYXZhaWxhYmxlIGZvciBgaW5mbyBjb21t b24nLiAgQ09NTU9OX0JMT0NLX0RPTUFJTiBpcyB1c2VkIHRvIHNlcGF0ZSB0aGUKLSsgICBjb21t b24gYmxvY2tzIG5hbWUgbmFtZXNwYWNlIGZyb20gcmVndWxhciB2YXJpYWJsZSBuYW1lcy4gICov Ci0gCi0gc3RhdGljIHZvaWQKLSByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIHsKLS0gIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRf ZGllOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsK LSAgIENPUkVfQUREUiBiYXNlID0gKENPUkVfQUREUikgMDsKLUBAIC0xMTEwMywyMCArMTExMDUs NjcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAotICAgICB9Ci0g ICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQotICAgICB7Ci0rICAgICAgc3RydWN0IG9iamZpbGUg Km9iamZpbGUgPSBjdS0+b2JqZmlsZTsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkX2Rp ZTsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsgICAgICBzdHJ1Y3QgZmllbGQgKmZpZWxk OwotKyAgICAgIGNoYXIgKm5hbWU7Ci0rICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOwotKwotKyAg ICAgIHR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKLSsgICAgICBUWVBFX0NPREUgKHR5cGUp ID0gVFlQRV9DT0RFX1NUUlVDVDsKLSsgICAgICAvKiBBcnRpZmljaWFsIHR5cGUgdG8gYmUgdXNl ZCBvbmx5IGJ5IGBpbmZvIGNvbW1vbicuICAqLwotKyAgICAgIFRZUEVfTkFNRSAodHlwZSkgPSAi PGNvbW1vbj4iOwotKwotKyAgICAgIGNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICAgICAgd2hp bGUgKGNoaWxkX2RpZSAmJiBjaGlsZF9kaWUtPnRhZykKLSsJewotKwkgIFRZUEVfTkZJRUxEUyAo dHlwZSkrKzsKLSsJICBjaGlsZF9kaWUgPSBzaWJsaW5nX2RpZSAoY2hpbGRfZGllKTsKLSsJfQot KwotKyAgICAgIFRZUEVfRklFTERTICh0eXBlKSA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5v YmpmaWxlX29ic3RhY2ssCi0rCQkJCQkgIHNpemVvZiAoKlRZUEVfRklFTERTICh0eXBlKSkKLSsJ CQkJCSAgKiBUWVBFX05GSUVMRFMgKHR5cGUpKTsKLSsgICAgICBtZW1zZXQgKFRZUEVfRklFTERT ICh0eXBlKSwgMCwgc2l6ZW9mICgqVFlQRV9GSUVMRFMgKHR5cGUpKQotKwkJCQkgICAgICogVFlQ RV9ORklFTERTICh0eXBlKSk7Ci0rICAgICAgCi0rICAgICAgZmllbGQgPSBUWVBFX0ZJRUxEUyAo dHlwZSk7Ci0gICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLSAgICAgICB3aGlsZSAoY2hp bGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQotIAl7Ci0gCSAgTE9OR0VTVCBvZmZzZXQ7Ci0gCi0r CSAgLyogQ3JlYXRlIHRoZSBzeW1ib2wgaW4gdGhlIERXX1RBR19jb21tb25fYmxvY2sgYmxvY2sg aW4gdGhlIGN1cnJlbnQKLSsJICAgICBzeW1ib2wgc2NvcGUuICAqLwotIAkgIHN5bSA9IG5ld19z eW1ib2wgKGNoaWxkX2RpZSwgTlVMTCwgY3UpOwotKwotKwkgIC8qIFVuZG9jdW1lbnRlZCBpbiBE V0FSRjMsIHdoZW4gaXQgY2FuIGJlIHByZXNlbnQ/ICAqLwotIAkgIGlmIChzeW0gIT0gTlVMTAot IAkgICAgICAmJiBoYW5kbGVfZGF0YV9tZW1iZXJfbG9jYXRpb24gKGNoaWxkX2RpZSwgY3UsICZv ZmZzZXQpKQotIAkgICAgewotIAkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9IGJh c2UgKyBvZmZzZXQ7Ci0gCSAgICAgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5 bWJvbHMpOwotIAkgICAgfQotKwotKwkgIGlmIChTWU1CT0xfQ0xBU1MgKHN5bSkgPT0gTE9DX1NU QVRJQykKLSsJICAgIFNFVF9GSUVMRF9QSFlTQUREUiAoKmZpZWxkLCBTWU1CT0xfVkFMVUVfQURE UkVTUyAoc3ltKSk7Ci0rCSAgZWxzZQotKwkgICAgU0VUX0ZJRUxEX1BIWVNOQU1FICgqZmllbGQs IFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkpOwotKwkgIEZJRUxEX1RZUEUgKCpmaWVsZCkgPSBT WU1CT0xfVFlQRSAoc3ltKTsKLSsJICBGSUVMRF9OQU1FICgqZmllbGQpID0gU1lNQk9MX05BVFVS QUxfTkFNRSAoc3ltKTsKLSsJICBmaWVsZCsrOwotIAkgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGll IChjaGlsZF9kaWUpOwotIAl9Ci0rCi0rICAgICAgLyogVFlQRV9MRU5HVEggKHR5cGUpIGlzIGxl ZnQgMCAtIGl0IGlzIG9ubHkgYSB2aXJ0dWFsIHN0cnVjdHVyZSBldmVuCi0rCSB3aXRoIG5vIGNv bnNlY3V0aXZlIGFkZHJlc3Mgc3BhY2UuICAqLwotKwotKyAgICAgIHN5bSA9IG5ld19zeW1ib2wg KGRpZSwgdHlwZSwgY3UpOwotKyAgICAgIC8qIFNZTUJPTF9WQUxVRV9BRERSRVNTIG5ldmVyIGdl dHMgdXNlZCBhcyBhbGwgaXRzIGZpZWxkcyBhcmUgc3RhdGljLiAgKi8KLSsgICAgICBTWU1CT0xf VkFMVUVfQUREUkVTUyAoc3ltKSA9IGJhc2U7Ci0rCi0rICAgICAgc2V0X2RpZV90eXBlIChkaWUs IHR5cGUsIGN1KTsKLSAgICAgfQotIH0KLSAKLUBAIC0xNTE1NSw2ICsxNTIwNCwxMyBAQCBuZXdf c3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCi0gCSAgICB7Ci0gCSAgICAgIHZh cl9kZWNvZGVfbG9jYXRpb24gKGF0dHIsIHN5bSwgY3UpOwotIAkgICAgICBhdHRyMiA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2V4dGVybmFsLCBjdSk7Ci0rCi0rCSAgICAgIC8qIEZvcnRyYW4g ZXhwbGljaXRseSBpbXBvcnRzIGFueSBnbG9iYWwgc3ltYm9scyB0byB0aGUgbG9jYWwKLSsJCSBz Y29wZSBieSBEV19UQUdfY29tbW9uX2Jsb2NrLiAgKi8KLSsJICAgICAgaWYgKGN1LT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9mb3J0cmFuICYmIGRpZS0+cGFyZW50Ci0rCQkgICYmIGRpZS0+cGFyZW50 LT50YWcgPT0gRFdfVEFHX2NvbW1vbl9ibG9jaykKLSsJCWF0dHIyID0gTlVMTDsKLSsKLSAJICAg ICAgaWYgKFNZTUJPTF9DTEFTUyAoc3ltKSA9PSBMT0NfU1RBVElDCi0gCQkgICYmIFNZTUJPTF9W QUxVRV9BRERSRVNTIChzeW0pID09IDAKLSAJCSAgJiYgIWR3YXJmMl9wZXJfb2JqZmlsZS0+aGFz X3NlY3Rpb25fYXRfemVybykKLUBAIC0xNTMxOSw2ICsxNTM3NSwxMSBAQCBuZXdfc3ltYm9sX2Z1 bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCi0gCSAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9D X1RZUEVERUY7Ci0gCSAgbGlzdF90b19hZGQgPSAmZ2xvYmFsX3N5bWJvbHM7Ci0gCSAgYnJlYWs7 Ci0rCWNhc2UgRFdfVEFHX2NvbW1vbl9ibG9jazoKLSsJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBM T0NfU1RBVElDOwotKwkgIFNZTUJPTF9ET01BSU4gKHN5bSkgPSBDT01NT05fQkxPQ0tfRE9NQUlO OwotKwkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7Ci0rCSAg YnJlYWs7Ci0gCWRlZmF1bHQ6Ci0gCSAgLyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4gIEhvcGVm dWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwotIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBzaW5jZSB3 ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1JbmRleDogZ2RiLTcuNC45MS4yMDEy MDgwMS9nZGIvZi1sYW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODAxLm9y aWcvZ2RiL2YtbGFuZy5jCTIwMTItMDgtMDEgMTg6Mzg6MjQuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvZi1sYW5nLmMJMjAxMi0wOC0wMSAxODozODo1NC4yMDI1 NDA0OTUgKzAyMDAKLUBAIC0zNzAsMjcgKzM3MCwzIEBAIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2Ug KHZvaWQpCi0gCi0gICBhZGRfbGFuZ3VhZ2UgKCZmX2xhbmd1YWdlX2RlZm4pOwotIH0KLS0KLS1T QVZFRF9GNzdfQ09NTU9OX1BUUiBoZWFkX2NvbW1vbl9saXN0ID0gTlVMTDsJLyogUHRyIHRvIDFz dCBzYXZlZCBDT01NT04gICovCi0tCi0tLyogVGhpcyByb3V0aW5lIGZpbmRzIHRoZSBmaXJzdCBl bmNvdW50cmVkIENPTU1PTiBibG9jayBuYW1lZCAibmFtZSIgCi0tICAgdGhhdCBiZWxvbmdzIHRv IGZ1bmN0aW9uIGZ1bmNuYW1lLiAgKi8KLS0KLS1TQVZFRF9GNzdfQ09NTU9OX1BUUgotLWZpbmRf Y29tbW9uX2Zvcl9mdW5jdGlvbiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqZnVuY25h bWUpCi0tewotLQotLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1wOwotLQotLSAgdG1wID0gaGVh ZF9jb21tb25fbGlzdDsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAg IGlmIChzdHJjbXAgKHRtcC0+bmFtZSwgbmFtZSkgPT0gMAotLQkgICYmIHN0cmNtcCAodG1wLT5v d25pbmdfZnVuY3Rpb24sIGZ1bmNuYW1lKSA9PSAwKQotLQlyZXR1cm4gKHRtcCk7Ci0tICAgICAg ZWxzZQotLQl0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS0gIHJldHVybiAoTlVMTCk7Ci0tfQot SW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL2YtbGFuZy5oCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dkYi9mLWxhbmcuaAkyMDEyLTA4LTAxIDE4OjM4OjI0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL2YtbGFuZy5oCTIw MTItMDgtMDEgMTg6Mzg6NTQuMjAzNTQwNDg5ICswMjAwCi1AQCAtNTIsMzcgKzUyLDggQEAgZW51 bSBmOTBfcmFuZ2VfdHlwZQotICAgICBOT05FX0JPVU5EX0RFRkFVTFQJCS8qICIobG93OmhpZ2gp IiAgKi8KLSAgIH07Ci0gCi0tc3RydWN0IGNvbW1vbl9lbnRyeQotLSAgewotLSAgICBzdHJ1Y3Qg c3ltYm9sICpzeW1ib2w7CS8qIFRoZSBzeW1ib2wgbm9kZSBjb3JyZXNwb25kaW5nCi0tCQkJCSAg IHRvIHRoaXMgY29tcG9uZW50ICovCi0tICAgIHN0cnVjdCBjb21tb25fZW50cnkgKm5leHQ7CS8q IFRoZSBuZXh0IGNvbXBvbmVudCAqLwotLSAgfTsKLS0KLS1zdHJ1Y3Qgc2F2ZWRfZjc3X2NvbW1v bgotLSAgewotLSAgICBjaGFyICpuYW1lOwkJCS8qIE5hbWUgb2YgQ09NTU9OICovCi0tICAgIGNo YXIgKm93bmluZ19mdW5jdGlvbjsJLyogTmFtZSBvZiBwYXJlbnQgZnVuY3Rpb24gKi8KLS0gICAg aW50IHNlY251bTsJCQkvKiBTZWN0aW9uICMgb2YgLmJzcyAqLwotLSAgICBDT1JFX0FERFIgb2Zm c2V0OwkJLyogT2Zmc2V0IGZyb20gLmJzcyBmb3IgCi0tCQkJCSAgIHRoaXMgYmxvY2sgKi8KLS0g ICAgc3RydWN0IGNvbW1vbl9lbnRyeSAqZW50cmllczsJLyogTGlzdCBvZiBibG9jaydzIGNvbXBv bmVudHMgKi8KLS0gICAgc3RydWN0IGNvbW1vbl9lbnRyeSAqZW5kX29mX2VudHJpZXM7CS8qIHB0 ci4gdG8gZW5kIG9mIGNvbXBvbmVudHMgKi8KLS0gICAgc3RydWN0IHNhdmVkX2Y3N19jb21tb24g Km5leHQ7CS8qIE5leHQgc2F2ZWQgQ09NTU9OIGJsb2NrICovCi0tICB9OwotLQotLXR5cGVkZWYg c3RydWN0IHNhdmVkX2Y3N19jb21tb24gU0FWRURfRjc3X0NPTU1PTiwgKlNBVkVEX0Y3N19DT01N T05fUFRSOwotLQotLXR5cGVkZWYgc3RydWN0IGNvbW1vbl9lbnRyeSBDT01NT05fRU5UUlksICpD T01NT05fRU5UUllfUFRSOwotLQotLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9OX1BUUiBoZWFkX2Nv bW1vbl9saXN0OwkvKiBQdHIgdG8gMXN0IHNhdmVkIENPTU1PTiAgKi8KLS0KLS1leHRlcm4gU0FW RURfRjc3X0NPTU1PTl9QVFIgZmluZF9jb21tb25fZm9yX2Z1bmN0aW9uIChjb25zdCBjaGFyICos Ci0tCQkJCQkJICAgICAgY29uc3QgY2hhciAqKTsKLS0KLSAjZGVmaW5lIEJMQU5LX0NPTU1PTl9O QU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3NpZ25lZCAgKi8KLSAjZGVmaW5lIEJM QU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJLyogTUY3NyBhc3NpZ25lZCAgKi8K LS0jZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAgICJfX0JMQU5LIgkvKiBMb2NhbCBH REIgKi8KLSAKLSAvKiBXaGVuIHJlYXNvbmFibGUgYXJyYXkgYm91bmRzIGNhbm5vdCBiZSBmZXRj aGVkLCBzdWNoIGFzIHdoZW4gCi0gICAgeW91IGFzayB0byAnbXQgcHJpbnQgc3ltYm9scycgYW5k IHRoZXJlIGlzIG5vIHN0YWNrIGZyYW1lIGFuZCAKLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODAx L2dkYi9mLXZhbHByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODAxLm9y aWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEyLTA4LTAxIDE4OjM4OjI0LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL2YtdmFscHJpbnQuYwkyMDEyLTA4LTAxIDE4OjQx OjI2LjQxMTY5ODE4NiArMDIwMAotQEAgLTM0LDEwICszNCwxMSBAQAotICNpbmNsdWRlICJnZGJj b3JlLmgiCi0gI2luY2x1ZGUgImNvbW1hbmQuaCIKLSAjaW5jbHVkZSAiYmxvY2suaCIKLSsjaW5j bHVkZSAiZGljdGlvbmFyeS5oIgotKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi0gZXh0ZXJu IHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCk7Ci0gc3RhdGljIHZvaWQgaW5mb19j b21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOwotLXN0YXRpYyB2b2lkIGxpc3RfYWxsX3Zpc2li bGVfY29tbW9ucyAoY29uc3QgY2hhciAqKTsKLSBzdGF0aWMgdm9pZCBmNzdfY3JlYXRlX2FycmF5 cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5cGUgKiwKLSAJCQkJCSAgICAgIHN0cnVjdCB1aV9m aWxlICopOwotIHN0YXRpYyB2b2lkIGY3N19nZXRfZHluYW1pY19sZW5ndGhfb2ZfYWdncmVnYXRl IChzdHJ1Y3QgdHlwZSAqKTsKLUBAIC00MjAsMjIgKzQyMSw1MyBAQCBmX3ZhbF9wcmludCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCi0gICBnZGJfZmx1c2ggKHN0cmVhbSk7Ci0gfQotIAot LXN0YXRpYyB2b2lkCi0tbGlzdF9hbGxfdmlzaWJsZV9jb21tb25zIChjb25zdCBjaGFyICpmdW5u YW1lKQotK3N0YXRpYyBpbnQKLStpbmZvX2NvbW1vbl9jb21tYW5kX2Zvcl9ibG9jayAoc3RydWN0 IGJsb2NrICpibG9jaywgY29uc3QgY2hhciAqY29tbmFtZSkKLSB7Ci0tICBTQVZFRF9GNzdfQ09N TU9OX1BUUiB0bXA7Ci0tCi0tICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0OwotKyAgc3RydWN0IGJs b2NrX2l0ZXJhdG9yIGl0ZXI7Ci0rICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0rICBpbnQgdmFsdWVz X3ByaW50ZWQgPSAwOwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zIG9wdHM7Ci0rCi0rICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci0r Ci0rICBBTExfQkxPQ0tfU1lNQk9MUyAoYmxvY2ssIGl0ZXIsIHN5bSkKLSsgICAgaWYgKFNZTUJP TF9ET01BSU4gKHN5bSkgPT0gQ09NTU9OX0JMT0NLX0RPTUFJTikKLSsgICAgICB7Ci0rICAgICAg CXN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHN5bSk7Ci0rCWludCBpbmRleDsKLSsK LSsJZ2RiX2Fzc2VydCAoU1lNQk9MX0NMQVNTIChzeW0pID09IExPQ19TVEFUSUMpOwotKwlnZGJf YXNzZXJ0IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJVQ1QpOwotKwotKwlpZiAo Y29tbmFtZSAmJiAoIVNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkKLSsJICAgICAgICAgICAgICAg IHx8IHN0cmNtcCAoY29tbmFtZSwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSkgIT0gMCkpCi0r CSAgY29udGludWU7Ci0rCi0rCXZhbHVlc19wcmludGVkID0gMTsKLSsJaWYgKFNZTUJPTF9QUklO VF9OQU1FIChzeW0pKQotKwkgIHByaW50Zl9maWx0ZXJlZCAoXygiQ29udGVudHMgb2YgRjc3IENP TU1PTiBibG9jayAnJXMnOlxuIiksCi0rCQkJICAgU1lNQk9MX1BSSU5UX05BTUUgKHN5bSkpOwot KwllbHNlCi0rCSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJDb250ZW50cyBvZiBibGFuayBDT01NT04g YmxvY2s6XG4iKSk7Ci0rCQotKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMg KHR5cGUpOyBpbmRleCsrKQotKwkgIHsKLSsJICAgIHN0cnVjdCB2YWx1ZSAqdmFsOwotKwotKwkg ICAgZ2RiX2Fzc2VydCAoZmllbGRfaXNfc3RhdGljICgmVFlQRV9GSUVMRCAodHlwZSwgaW5kZXgp KSk7Ci0rCSAgICB2YWwgPSB2YWx1ZV9zdGF0aWNfZmllbGQgKHR5cGUsIGluZGV4KTsKLSsKLSsJ ICAgIHByaW50Zl9maWx0ZXJlZCAoIiVzID0gIiwgVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpbmRl eCkpOwotKwkgICAgdmFsdWVfcHJpbnQgKHZhbCwgZ2RiX3N0ZG91dCwgJm9wdHMpOwotKwkgICAg cHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7Ci0rCSAgfQotIAotLSAgcHJpbnRmX2ZpbHRlcmVkIChf KCJBbGwgQ09NTU9OIGJsb2NrcyB2aXNpYmxlIGF0IHRoaXMgbGV2ZWw6XG5cbiIpKTsKLS0KLS0g IHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIGlmIChzdHJjbXAgKHRtcC0+b3du aW5nX2Z1bmN0aW9uLCBmdW5uYW1lKSA9PSAwKQotLQlwcmludGZfZmlsdGVyZWQgKCIlc1xuIiwg dG1wLT5uYW1lKTsKLSsJcHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7Ci0rICAgICAgfQotIAotLSAg ICAgIHRtcCA9IHRtcC0+bmV4dDsKLS0gICAgfQotKyAgcmV0dXJuIHZhbHVlc19wcmludGVkOwot IH0KLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJpbnQgb3V0IHRoZSB2YWx1ZXMg aW4gYSBnaXZlbiBDT01NT04gCi1AQCAtNDQ1LDExICs0NzcsOSBAQCBsaXN0X2FsbF92aXNpYmxl X2NvbW1vbnMgKGNvbnN0IGNoYXIgKmZ1Ci0gc3RhdGljIHZvaWQKLSBpbmZvX2NvbW1vbl9jb21t YW5kIChjaGFyICpjb21uYW1lLCBpbnQgZnJvbV90dHkpCi0gewotLSAgU0FWRURfRjc3X0NPTU1P Tl9QVFIgdGhlX2NvbW1vbjsKLS0gIENPTU1PTl9FTlRSWV9QVFIgZW50cnk7Ci0gICBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZmk7Ci0tICBjb25zdCBjaGFyICpmdW5uYW1lID0gMDsKLS0gIHN0cnVjdCBz eW1ib2wgKmZ1bmM7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotKyAgaW50IHZhbHVlc19wcmlu dGVkID0gMDsKLSAKLSAgIC8qIFdlIGhhdmUgYmVlbiB0b2xkIHRvIGRpc3BsYXkgdGhlIGNvbnRl bnRzIG9mIEY3NyBDT01NT04gCi0gICAgICBibG9jayBzdXBwb3NlZGx5IHZpc2libGUgaW4gdGhp cyBmdW5jdGlvbi4gIExldCB1cyAKLUBAIC00NjEsODcgKzQ5MSwzMSBAQCBpbmZvX2NvbW1vbl9j b21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQKLSAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgZ2VuZXJh bGx5IHJpcHBlZCBvZmYgZnJvbSBzdGFjay5jJ3Mgcm91dGluZSAKLSAgICAgIHByaW50X2ZyYW1l X2luZm8oKS4gICovCi0gCi0tICBmdW5jID0gZmluZF9wY19mdW5jdGlvbiAoZ2V0X2ZyYW1lX3Bj IChmaSkpOwotLSAgaWYgKGZ1bmMpCi0rICBibG9jayA9IGdldF9mcmFtZV9ibG9jayAoZmksIDAp OwotKyAgaWYgKGJsb2NrID09IE5VTEwpCi0gICAgIHsKLS0gICAgICAvKiBJbiBjZXJ0YWluIHBh dGhvbG9naWNhbCBjYXNlcywgdGhlIHN5bXRhYnMgZ2l2ZSB0aGUgd3JvbmcKLS0gICAgICAgICBm dW5jdGlvbiAod2hlbiB3ZSBhcmUgaW4gdGhlIGZpcnN0IGZ1bmN0aW9uIGluIGEgZmlsZSB3aGlj aAotLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGhvdXQgZGVidWdnaW5nIHN5bWJvbHMsIHRoZSBw cmV2aW91cyBmdW5jdGlvbgotLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGggZGVidWdnaW5nIHN5 bWJvbHMsIGFuZCB0aGUgImZvby5vIiBzeW1ib2wKLS0gICAgICAgICB0aGF0IGlzIHN1cHBvc2Vk IHRvIHRlbGwgdXMgd2hlcmUgdGhlIGZpbGUgd2l0aCBkZWJ1Z2dpbmcgc3ltYm9scwotLSAgICAg ICAgIGVuZHMgaGFzIGJlZW4gdHJ1bmNhdGVkIGJ5IGFyIGJlY2F1c2UgaXQgaXMgbG9uZ2VyIHRo YW4gMTUKLS0gICAgICAgICBjaGFyYWN0ZXJzKS4KLS0KLS0gICAgICAgICBTbyBsb29rIGluIHRo ZSBtaW5pbWFsIHN5bWJvbCB0YWJsZXMgYXMgd2VsbCwgYW5kIGlmIGl0IGNvbWVzCi0tICAgICAg ICAgdXAgd2l0aCBhIGxhcmdlciBhZGRyZXNzIGZvciB0aGUgZnVuY3Rpb24gdXNlIHRoYXQgaW5z dGVhZC4KLS0gICAgICAgICBJIGRvbid0IHRoaW5rIHRoaXMgY2FuIGV2ZXIgY2F1c2UgYW55IHBy b2JsZW1zOyB0aGVyZSBzaG91bGRuJ3QKLS0gICAgICAgICBiZSBhbnkgbWluaW1hbCBzeW1ib2xz IGluIHRoZSBtaWRkbGUgb2YgYSBmdW5jdGlvbi4KLS0gICAgICAgICBGSVhNRTogIChOb3QgbmVj ZXNzYXJpbHkgdHJ1ZS4gIFdoYXQgYWJvdXQgdGV4dCBsYWJlbHM/KSAgKi8KLS0KLS0gICAgICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPSAKLS0JbG9va3VwX21pbmltYWxfc3ltYm9s X2J5X3BjIChnZXRfZnJhbWVfcGMgKGZpKSk7Ci0tCi0tICAgICAgaWYgKG1zeW1ib2wgIT0gTlVM TAotLQkgICYmIChTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCkKLS0JICAgICAgPiBCTE9D S19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKSkpKQotLQlmdW5uYW1lID0gU1lNQk9M X0xJTktBR0VfTkFNRSAobXN5bWJvbCk7Ci0tICAgICAgZWxzZQotLQlmdW5uYW1lID0gU1lNQk9M X0xJTktBR0VfTkFNRSAoZnVuYyk7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgewotLSAgICAgIHN0 cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9Ci0tCWxvb2t1cF9taW5pbWFsX3N5bWJvbF9i eV9wYyAoZ2V0X2ZyYW1lX3BjIChmaSkpOwotLQotLSAgICAgIGlmIChtc3ltYm9sICE9IE5VTEwp Ci0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLS0gICAgICBlbHNl IC8qIEdvdCBubyAnZnVubmFtZScsIGNvZGUgYmVsb3cgd2lsbCBmYWlsLiAgKi8KLS0JZXJyb3Ig KF8oIk5vIGZ1bmN0aW9uIGZvdW5kIGZvciBmcmFtZS4iKSk7Ci0rICAgICAgcHJpbnRmX2ZpbHRl cmVkIChfKCJObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFpbGFibGUuXG4iKSk7Ci0rICAgICAgcmV0 dXJuOwotICAgICB9Ci0gCi0tICAvKiBJZiBjb21uYW1lIGlzIE5VTEwsIHdlIGFzc3VtZSB0aGUg dXNlciB3aXNoZXMgdG8gc2VlIHRoZSAKLS0gICAgIHdoaWNoIENPTU1PTiBibG9ja3MgYXJlIHZp c2libGUgaGVyZSBhbmQgdGhlbiByZXR1cm4uICAqLwotLQotLSAgaWYgKGNvbW5hbWUgPT0gMCkK LSsgIHdoaWxlIChibG9jaykKLSAgICAgewotLSAgICAgIGxpc3RfYWxsX3Zpc2libGVfY29tbW9u cyAoZnVubmFtZSk7Ci0tICAgICAgcmV0dXJuOwotKyAgICAgIGlmIChpbmZvX2NvbW1vbl9jb21t YW5kX2Zvcl9ibG9jayAoYmxvY2ssIGNvbW5hbWUpKQotKwl2YWx1ZXNfcHJpbnRlZCA9IDE7Ci0r ICAgICAgLyogQWZ0ZXIgaGFuZGxpbmcgdGhlIGZ1bmN0aW9uJ3MgdG9wLWxldmVsIGJsb2NrLCBz dG9wLiAgRG9uJ3QKLSsgICAgICAgICBjb250aW51ZSB0byBpdHMgc3VwZXJibG9jaywgdGhlIGJs b2NrIG9mIHBlci1maWxlIHN5bWJvbHMuICAqLwotKyAgICAgIGlmIChCTE9DS19GVU5DVElPTiAo YmxvY2spKQotKwlicmVhazsKLSsgICAgICBibG9jayA9IEJMT0NLX1NVUEVSQkxPQ0sgKGJsb2Nr KTsKLSAgICAgfQotIAotLSAgdGhlX2NvbW1vbiA9IGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAo Y29tbmFtZSwgZnVubmFtZSk7Ci0tCi0tICBpZiAodGhlX2NvbW1vbikKLSsgIGlmICghdmFsdWVz X3ByaW50ZWQpCi0gICAgIHsKLS0gICAgICBzdHJ1Y3QgZnJhbWVfaWQgZnJhbWVfaWQgPSBnZXRf ZnJhbWVfaWQgKGZpKTsKLS0KLS0gICAgICBpZiAoc3RyY21wIChjb21uYW1lLCBCTEFOS19DT01N T05fTkFNRV9MT0NBTCkgPT0gMCkKLS0JcHJpbnRmX2ZpbHRlcmVkIChfKCJDb250ZW50cyBvZiBi bGFuayBDT01NT04gYmxvY2s6XG4iKSk7Ci0rICAgICAgaWYgKGNvbW5hbWUpCi0rCXByaW50Zl9m aWx0ZXJlZCAoXygiTm8gY29tbW9uIGJsb2NrICclcycuXG4iKSwgY29tbmFtZSk7Ci0gICAgICAg ZWxzZQotLQlwcmludGZfZmlsdGVyZWQgKF8oIkNvbnRlbnRzIG9mIEY3NyBDT01NT04gYmxvY2sg JyVzJzpcbiIpLCBjb21uYW1lKTsKLS0KLS0gICAgICBwcmludGZfZmlsdGVyZWQgKCJcbiIpOwot LSAgICAgIGVudHJ5ID0gdGhlX2NvbW1vbi0+ZW50cmllczsKLS0KLS0gICAgICB3aGlsZSAoZW50 cnkgIT0gTlVMTCkKLS0JewotLQkgIGZpID0gZnJhbWVfZmluZF9ieV9pZCAoZnJhbWVfaWQpOwot LQkgIGlmIChmaSA9PSBOVUxMKQotLQkgICAgewotLQkgICAgICB3YXJuaW5nIChfKCJVbmFibGUg dG8gcmVzdG9yZSBwcmV2aW91c2x5IHNlbGVjdGVkIGZyYW1lLiIpKTsKLS0JICAgICAgYnJlYWs7 Ci0tCSAgICB9Ci0tCi0tCSAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVlIChOVUxMLCBlbnRyeS0+ c3ltYm9sLCBmaSwgZ2RiX3N0ZG91dCwgMCk7Ci0tCi0tCSAgLyogcHJpbnRfdmFyaWFibGVfYW5k X3ZhbHVlIGludmFsaWRhdGVzIEZJLiAgKi8KLS0JICBmaSA9IE5VTEw7Ci0tCi0tCSAgZW50cnkg PSBlbnRyeS0+bmV4dDsKLS0JfQotKwlwcmludGZfZmlsdGVyZWQgKF8oIk5vIGNvbW1vbiBibG9j a3MuXG4iKSk7Ci0gICAgIH0KLS0gIGVsc2UKLS0gICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJDYW5u b3QgbG9jYXRlIHRoZSBjb21tb24gYmxvY2sgJXMgaW4gZnVuY3Rpb24gJyVzJ1xuIiksCi0tCQkg ICAgIGNvbW5hbWUsIGZ1bm5hbWUpOwotIH0KLSAKLSB2b2lkCi1JbmRleDogZ2RiLTcuNC45MS4y MDEyMDgwMS9nZGIvc3RhY2suYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuOTEuMjAxMjA4MDEu b3JpZy9nZGIvc3RhY2suYwkyMDEyLTA4LTAxIDE4OjM2OjUxLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3N0YWNrLmMJMjAxMi0wOC0wMSAxODozODo1NC4yMDY1 NDA0NzEgKzAyMDAKLUBAIC0xODUxLDYgKzE4NTEsOCBAQCBpdGVyYXRlX292ZXJfYmxvY2tfbG9j YWxzIChzdHJ1Y3QgYmxvY2sKLSAJY2FzZSBMT0NfQ09NUFVURUQ6Ci0gCSAgaWYgKFNZTUJPTF9J U19BUkdVTUVOVCAoc3ltKSkKLSAJICAgIGJyZWFrOwotKwkgIGlmIChTWU1CT0xfRE9NQUlOIChz eW0pID09IENPTU1PTl9CTE9DS19ET01BSU4pCi0rCSAgICBicmVhazsKLSAJICAoKmNiKSAoU1lN Qk9MX1BSSU5UX05BTUUgKHN5bSksIHN5bSwgY2JfZGF0YSk7Ci0gCSAgYnJlYWs7Ci0gCi1JbmRl eDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc3ltdGFiLmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny40LjkxLjIwMTIwODAxLm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTItMDYtMzAgMDA6NDY6NDYuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvc3ltdGFiLmgJMjAxMi0w OC0wMSAxODozODo1NC4yMDY1NDA0NzEgKzAyMDAKLUBAIC0zOTQsNyArMzk0LDEwIEBAIHR5cGVk ZWYgZW51bSBkb21haW5fZW51bV90YWcKLSAKLSAgIC8qIExBQkVMX0RPTUFJTiBtYXkgYmUgdXNl ZCBmb3IgbmFtZXMgb2YgbGFiZWxzIChmb3IgZ290b3MpLiAgKi8KLSAKLS0gIExBQkVMX0RPTUFJ TgotKyAgTEFCRUxfRE9NQUlOLAotKwotKyAgLyogRm9ydHJhbiBjb21tb24gYmxvY2tzLiAgVGhl aXIgbmFtaW5nIG11c3QgYmUgc2VwYXJhdGUgZnJvbSBWQVJfRE9NQUlOLiAgKi8KLSsgIENPTU1P Tl9CTE9DS19ET01BSU4KLSB9IGRvbWFpbl9lbnVtOwotIAotIC8qIFNlYXJjaGluZyBkb21haW5z LCB1c2VkIGZvciBgc2VhcmNoX3N5bWJvbHMnLiAgRWxlbWVudCBudW1iZXJzIGFyZQotSW5kZXg6 IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxv Y2suZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAw MDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMi0wOC0wMSAxODozODo1NC4yMDc1NDA0NjUgKzAy MDAKLUBAIC0wLDAgKzEsMTAxIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIyAKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIyAKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwg SW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcs IFVTQS4gIAotKwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzZXQgdGVzdGZpbGUgImNvbW1vbi1ibG9j ayIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmlsZSAke29iamRpcn0v JHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmOTAg cXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNm aWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2Ri X3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQot KwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4g dG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdG9wLWhlcmUtb3V0Il0KLStnZGJfY29udGludWVf dG9fYnJlYWtwb2ludCAic3RvcC1oZXJlLW91dCIKLSsKLSsjIENvbW1vbiBibG9jayBuYW1pbmcg d2l0aCBzb3VyY2UgbmFtZSAvZm9vLzoKLSsjICAgICAgICAgICAgICAgIC5zeW10YWIgIERXX1RB R19jb21tb25fYmxvY2sncyBEV19BVF9uYW1lCi0rIyBJbnRlbCBGb3J0cmFuICBmb29fICAgICBm b29fCi0rIyBHTlUgRm9ydHJhbiAgICBmb29fICAgICBmb28KLSsjc2V0IHN1ZmZpeCAiXyIKLStz ZXQgc3VmZml4ICIiCi0rCi0rc2V0IGludDQgeyhpbnRlZ2VyXChraW5kPTRcKXxJTlRFR0VSXCg0 XCkpfQotK3NldCByZWFsNCB7KHJlYWxcKGtpbmQ9NFwpfFJFQUxcKDRcKSl9Ci0rc2V0IHJlYWw4 IHsocmVhbFwoa2luZD04XCl8UkVBTFwoOFwpKX0KLSsKLStnZGJfdGVzdCAid2hhdGlzIGZvbyRz dWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLStn ZGJfdGVzdCAicHR5cGUgZm9vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvbyRzdWZmaXhcIiBpbiBj dXJyZW50IGNvbnRleHQuIgotK2dkYl90ZXN0ICJwIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJm b28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAid2hhdGlzIGZvX28k c3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIgot K2dkYl90ZXN0ICJwdHlwZSBmb19vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvX28kc3VmZml4XCIg aW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAicCBmb19vJHN1ZmZpeCIgIk5vIHN5bWJv bCBcImZvX28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLSsKLStnZGJfdGVzdCAiaW5m byBsb2NhbHMiICJpeF94ID0gMTFcclxuaXlfeSA9IDIyXHJcbml6X3ogPSAzM1xyXG5peCA9IDFc clxuaXkgPSAyXHJcbml6ID0gMyIgImluZm8gbG9jYWxzIG91dCIKLStnZGJfdGVzdCAiaW5mbyBj b21tb24iICJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb19vJzpcclxuaXhfeCA9IDEx XHJcbml5X3kgPSAyMlxyXG5pel96ID0gMzNcclxuXHJcbkNvbnRlbnRzIG9mIEY3NyBDT01NT04g YmxvY2sgJ2Zvbyc6XHJcbml4ID0gMVxyXG5peSA9IDJcclxuaXogPSAzIiAiaW5mbyBjb21tb24g b3V0IgotKwotK2dkYl90ZXN0ICJwdHlwZSBpeCIgInR5cGUgPSAkaW50NCIgInB0eXBlIGl4IG91 dCIKLStnZGJfdGVzdCAicHR5cGUgaXkiICJ0eXBlID0gJHJlYWw0IiAicHR5cGUgaXkgb3V0Igot K2dkYl90ZXN0ICJwdHlwZSBpeiIgInR5cGUgPSAkcmVhbDgiICJwdHlwZSBpeiBvdXQiCi0rZ2Ri X3Rlc3QgInB0eXBlIGl4X3giICJ0eXBlID0gJGludDQiICJwdHlwZSBpeF94IG91dCIKLStnZGJf dGVzdCAicHR5cGUgaXlfeSIgInR5cGUgPSAkcmVhbDQiICJwdHlwZSBpeV95IG91dCIKLStnZGJf dGVzdCAicHR5cGUgaXpfeiIgInR5cGUgPSAkcmVhbDgiICJwdHlwZSBpel96IG91dCIKLSsKLStn ZGJfdGVzdCAicCBpeCIgIiA9IDEgKiIgInAgaXggb3V0IgotK2dkYl90ZXN0ICJwIGl5IiAiID0g MiAqIiAicCBpeSBvdXQiCi0rZ2RiX3Rlc3QgInAgaXoiICIgPSAzICoiICJwIGl6IG91dCIKLStn ZGJfdGVzdCAicCBpeF94IiAiID0gMTEgKiIgInAgaXhfeCBvdXQiCi0rZ2RiX3Rlc3QgInAgaXlf eSIgIiA9IDIyICoiICJwIGl5X3kgb3V0IgotK2dkYl90ZXN0ICJwIGl6X3oiICIgPSAzMyAqIiAi cCBpel96IG91dCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAic3Rv cC1oZXJlLWluIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic3RvcC1oZXJlLWluIgot KwotK2dkYl90ZXN0ICJ3aGF0aXMgZm9vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvbyRzdWZmaXhc IiBpbiBjdXJyZW50IGNvbnRleHQuIiAid2hhdGlzIGZvbyRzdWZmaXggaW4iCi0rZ2RiX3Rlc3Qg InB0eXBlIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBj b250ZXh0LiIgInB0eXBlIGZvbyRzdWZmaXggaW4iCi0rZ2RiX3Rlc3QgInAgZm9vJHN1ZmZpeCIg Ik5vIHN5bWJvbCBcImZvbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAicCBmb28kc3Vm Zml4IGluIgotK2dkYl90ZXN0ICJ3aGF0aXMgZm9fbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb19v JHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iICJ3aGF0aXMgZm9fbyRzdWZmaXggaW4iCi0r Z2RiX3Rlc3QgInB0eXBlIGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhcIiBp biBjdXJyZW50IGNvbnRleHQuIiAicHR5cGUgZm9fbyRzdWZmaXggaW4iCi0rZ2RiX3Rlc3QgInAg Zm9fbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4 dC4iICJwIGZvX28kc3VmZml4IGluIgotKwotK2dkYl90ZXN0ICJpbmZvIGxvY2FscyIgIml4ID0g MTFcclxuaXkyID0gMjJcclxuaXogPSAzM1xyXG5peF94ID0gMVxyXG5peV95ID0gMlxyXG5pel96 MiA9IDNcclxuaXkgPSA1XHJcbml6X3ogPSA1NSIgImluZm8gbG9jYWxzIGluIgotK2dkYl90ZXN0 ICJpbmZvIGNvbW1vbiIgIkNvbnRlbnRzIG9mIEY3NyBDT01NT04gYmxvY2sgJ2ZvX28nOlxyXG5p eCA9IDExXHJcbml5MiA9IDIyXHJcbml6ID0gMzNcclxuXHJcbkNvbnRlbnRzIG9mIEY3NyBDT01N T04gYmxvY2sgJ2Zvbyc6XHJcbml4X3ggPSAxXHJcbml5X3kgPSAyXHJcbml6X3oyID0gMyIgImlu Zm8gY29tbW9uIGluIgotKwotK2dkYl90ZXN0ICJwdHlwZSBpeCIgInR5cGUgPSAkaW50NCIgInB0 eXBlIGl4IGluIgotK2dkYl90ZXN0ICJwdHlwZSBpeTIiICJ0eXBlID0gJHJlYWw0IiAicHR5cGUg aXkyIGluIgotK2dkYl90ZXN0ICJwdHlwZSBpeiIgInR5cGUgPSAkcmVhbDgiICJwdHlwZSBpeiBp biIKLStnZGJfdGVzdCAicHR5cGUgaXhfeCIgInR5cGUgPSAkaW50NCIgInB0eXBlIGl4X3ggaW4i Ci0rZ2RiX3Rlc3QgInB0eXBlIGl5X3kiICJ0eXBlID0gJHJlYWw0IiAicHR5cGUgaXlfeSBpbiIK LStnZGJfdGVzdCAicHR5cGUgaXpfejIiICJ0eXBlID0gJHJlYWw4IiAicHR5cGUgaXpfejIgaW4i Ci0rCi0rZ2RiX3Rlc3QgInAgaXgiICIgPSAxMSAqIiAicCBpeCBpbiIKLStnZGJfdGVzdCAicCBp eTIiICIgPSAyMiAqIiAicCBpeTIgaW4iCi0rZ2RiX3Rlc3QgInAgaXoiICIgPSAzMyAqIiAicCBp eiBpbiIKLStnZGJfdGVzdCAicCBpeF94IiAiID0gMSAqIiAicCBpeF94IGluIgotK2dkYl90ZXN0 ICJwIGl5X3kiICIgPSAyICoiICJwIGl5X3kgaW4iCi0rZ2RiX3Rlc3QgInAgaXpfejIiICIgPSAz ICoiICJwIGl6X3oyIGluIgotSW5kZXg6IGdkYi03LjQuOTEuMjAxMjA4MDEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuNC45MS4yMDEy MDgwMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAJMjAxMi0wOC0w MSAxODozODo1NC4yMDc1NDA0NjUgKzAyMDAKLUBAIC0wLDAgKzEsNjcgQEAKLSshIENvcHlyaWdo dCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0 cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUgd3JpdHRl biBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVkIGZvciB0 aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPi4KLSsKLStzdWJyb3V0aW5lIGluCi0rCi0rICAgSU5URUdFUio0ICAgICAgICAgICAgaXgK LSsgICBSRUFMKjQgICAgICAgICAgICAgICBpeTIKLSsgICBSRUFMKjggICAgICAgICAgICAgICBp egotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFMKjQgICAgICAgICAg ICAgICBpeV95Ci0rICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfejIKLSsKLSsgICBjb21tb24g L2ZvX28vaXgsaXkyLGl6Ci0rICAgY29tbW9uIC9mb28vaXhfeCxpeV95LGl6X3oyCi0rCi0rICAg aXkgPSA1Ci0rICAgaXpfeiA9IDU1Ci0rCi0rICAgaWYgKGl4IC5uZS4gMTEgLm9yLiBpeTIgLm5l LiAyMi4wIC5vci4gaXogLm5lLiAzMy4wKSBjYWxsIGFib3J0Ci0rICAgaWYgKGl4X3ggLm5lLiAx IC5vci4gaXlfeSAubmUuIDIuMCAub3IuIGl6X3oyIC5uZS4gMy4wKSBjYWxsIGFib3J0Ci0rCi0r ICAgaXggPSAwCQkJCQkhIHN0b3AtaGVyZS1pbgotKwotK2VuZCBzdWJyb3V0aW5lIGluCi0rCi0r cHJvZ3JhbSBjb21tb25fdGVzdAotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4Ci0rICAg UkVBTCo0ICAgICAgICAgICAgICAgaXkKLSsgICBSRUFMKjggICAgICAgICAgICAgICBpegotKwot KyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFMKjQgICAgICAgICAgICAgICBp eV95Ci0rICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfegotKwotKyAgIGNvbW1vbiAvZm9vL2l4 LGl5LGl6Ci0rICAgY29tbW9uIC9mb19vL2l4X3gsaXlfeSxpel96Ci0rCi0rICAgaXggPSAxCi0r ICAgaXkgPSAyLjAKLSsgICBpeiA9IDMuMAotKwotKyAgIGl4X3ggPSAxMQotKyAgIGl5X3kgPSAy Mi4wCi0rICAgaXpfeiA9IDMzLjAKLSsKLSsgICBjYWxsIGluCQkJCQkhIHN0b3AtaGVyZS1vdXQK LSsKLStlbmQgcHJvZ3JhbSBjb21tb25fdGVzdAoKZGlmZiAtLWdpdCBhL2dkYi1nbGliYy1zdHJz dHItd29ya2Fyb3VuZC5wYXRjaCBiL2dkYi1nbGliYy1zdHJzdHItd29ya2Fyb3VuZC5wYXRjaApp bmRleCAzMDhiMzU5Li44M2Y2YjA5IDEwMDY0NAotLS0gYS9nZGItZ2xpYmMtc3Ryc3RyLXdvcmth cm91bmQucGF0Y2gKKysrIGIvZ2RiLWdsaWJjLXN0cnN0ci13b3JrYXJvdW5kLnBhdGNoCkBAIC0x LDggKzEsOCBAQAotZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJyZWFkLmMgYi9nZGIvZHdhcmYycmVh ZC5jCi1pbmRleCA1MzEwMGM1Li5lNzU4NmFjIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMnJlYWQu YwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTEzMzA2LDYgKzEzMzA2LDI1IEBAIG5ld19z eW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgZHdhcmYyX2N1ICpjdSwKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kd2FyZjJy ZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2R3YXJm MnJlYWQuYwkyMDEzLTAxLTE5IDIxOjE2OjIyLjQzNzk2MTc4OSArMDEwMAorKysrIGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTAxLTE5IDIxOjI0OjIyLjI0Mjk2OTI2 NiArMDEwMAorQEAgLTE1OTg3LDYgKzE1OTg3LDI1IEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHMKICAgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJvbCdzIG5hbWUgYW5k IHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLwogICAgICAgIFNZTUJPTF9T RVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxhbmd1YWdlKTsKICAgICAgICBsaW5rYWdlbmFtZSA9IGR3 YXJmMl9waHlzbmFtZSAobmFtZSwgZGllLCBjdSk7CkBAIC0yOCwxMiArMjgsMTEgQEAgaW5kZXgg NTMxMDBjNS4uZTc1ODZhYyAxMDA2NDQKICAgICAgICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxp bmthZ2VuYW1lLCBzdHJsZW4gKGxpbmthZ2VuYW1lKSwgMCwgb2JqZmlsZSk7CiAgCiAgICAgICAg LyogRm9ydHJhbiBkb2VzIG5vdCBoYXZlIG1hbmdsaW5nIHN0YW5kYXJkIGFuZCB0aGUgbWFuZ2xp bmcgZG9lcyBkaWZmZXIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1p ZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1p ZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAw MDAwMDAwLi41NzUwNzFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dudS1pZnVuYy1zdHJzdHItd29ya2Fyb3VuZC5leHAKLUBAIC0wLDAgKzEsMTAxIEBACitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVu Yy1zdHJzdHItd29ya2Fyb3VuZC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLXN0cnN0ci13b3JrYXJvdW5kLmV4cAkyMDEz LTAxLTE5IDIxOjIzOjA5LjExOTgyNzk2MyArMDEwMAorQEAgLTAsMCArMSwxMDggQEAKICsjIENv cHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CkBAIC05MCw3ICs4OSwxMSBAQCBpbmRleCAwMDAwMDAwLi41NzUwNzFmCiArICAg IH0KICsgICAgLXJlICIgPSB7PHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBu byBkZWJ1ZyBpbmZvPn0gKDB4XFswLTlhLWZcXSspIDxfX3N0cnN0cj5cclxuJGdkYl9wcm9tcHQg JCIgewogKwlzZXQgYWRkciAkZXhwZWN0X291dCgxLHN0cmluZykKLSsJcGFzcyAiJHRlc3QgKEdE QiB3b3JrYXJvdW5kIG9yIGZ1dHVyZSBmaXhlZCBnbGliYykiCisrCXBhc3MgIiR0ZXN0IChHREIg d29ya2Fyb3VuZCkiCisrICAgIH0KKysgICAgLXJlICIgPSB7PHRleHQgZ251LWluZGlyZWN0LWZ1 bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gKDB4XFswLTlhLWZcXSspIDxfX2xpYmNf c3Ryc3RyPlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXNldCBhZGRyICRleHBlY3Rfb3V0KDEsc3Ry aW5nKQorKwlwYXNzICIkdGVzdCAoZml4ZWQgZ2xpYmMpIgogKyAgICB9CiArICAgIC1yZSAiID0g e2NoYXIgXFwqXFwoY29uc3QgY2hhciBcXCosIGNvbnN0IGNoYXIgXFwqXFwpfSAweFxbMC05YS1m XF0rIDxzdHJzdHI+XHJcbiRnZGJfcHJvbXB0ICQiIHsKICsJdW50ZXN0ZWQgIiR0ZXN0IChnbnUt aWZ1bmMgbm90IGluIHVzZSBieSBnbGliYykiCkBAIC0xMjYsNyArMTI5LDEwIEBAIGluZGV4IDAw MDAwMDAuLjU3NTA3MWYKICsJcGFzcyAkdGVzdAogKyAgICB9CiArICAgIC1yZSAiID0gezx0ZXh0 IGdudS1pbmRpcmVjdC1mdW5jdGlvbiB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz59ICRhZGRyIDxf X3N0cnN0cj5cclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICIkdGVzdCAoR0RCIHdvcmthcm91 bmQgb3IgZnV0dXJlIGZpeGVkIGdsaWJjKSIKKysJcGFzcyAiJHRlc3QgKEdEQiB3b3JrYXJvdW5k KSIKKysgICAgfQorKyAgICAtcmUgIiA9IHs8dGV4dCBnbnUtaW5kaXJlY3QtZnVuY3Rpb24gdmFy aWFibGUsIG5vIGRlYnVnIGluZm8+fSAkYWRkciA8X19saWJjX3N0cnN0cj5cclxuJGdkYl9wcm9t cHQgJCIgeworKwlwYXNzICIkdGVzdCAoZml4ZWQgZ2xpYmMpIgogKyAgICB9CiArICAgIC1yZSAi ID0ge3ZvaWQgXFwqXFwodm9pZFxcKX0gMHhcWzAtOWEtZlxdKyA8c3Ryc3RyPlxyXG4kZ2RiX3By b21wdCAkIiB7CiArCWZhaWwgJHRlc3QKCmRpZmYgLS1naXQgYS9nZGItaW1wbGljaXRwb2ludGVy LW9mZnNldC5wYXRjaCBiL2dkYi1pbXBsaWNpdHBvaW50ZXItb2Zmc2V0LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjdkZjEyLi4wMDAwMDAwCi0tLSBhL2dkYi1pbXBsaWNp dHBvaW50ZXItb2Zmc2V0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUwICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEyLTEyL21zZzAwMDMwLmh0bWwK LVN1YmplY3Q6IFJlOiBSRkM6IGZpeCBidWcgaW4gRFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIK LQotPj4+Pj4gIkphbiIgPT0gSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+IHdyaXRlczoKLQotSmFuPiBBbmQgaG93IGl0IGlzIGltcGxlbWVudGVkIGluIEdDQz8KLQot Q29ycmVjdGx5LgotCi0+PiBJIHVwZGF0ZWQgdGhlIGltcGxwdHItNjRiaXQgdGVzdCBjYXNlIHRv IHRlc3QgdGhlIG5ldyBjb2RlIGFzIHdlbGwuCi0KLUphbj4gVGhpcyBpcyAuUyB0ZXN0IHNvIEdD QyBpcyBub3QgdGVzdGVkIHRoZXJlLgotCi1ZZWFoLCBJIGNvbnNpZGVyZWQgdGhpcywgYnV0IEkg ZGlkIG5vdCB3YW50IHRvIGFkZCBhIG5ldyB0ZXN0IHRoYXQgd291bGQKLWJlIGV4cG9zZWQgdG8g Z2NjIHZlcnNpb24gZGlmZmVyZW5jZXMgLS0gYW5kIHRlc3RpbmcgZ2NjJ3Mgb3V0cHV0IGlzCi1t b3JlIHByb3Blcmx5IGRvbmUgaW4gdGhlIGdjYyB0ZXN0IHN1aXRlIGFueXdheS4KLQotSmFuPiBN YXliZSB0byBjYWxsIHRoZW0gbm93IGZvciBleGFtcGxlOgotSmFuPiAgIGR3YXJmMl9mZXRjaF9k aWVfbG9jX2N1X29mZgotSmFuPiAgIGR3YXJmMl9mZXRjaF9kaWVfbG9jX3NlY3Rfb2ZmCi0KLU9r LgotCi1KYW4+IE1pc3NpbmcgYWRkZWQgVFdPX0NVIGhlcmUuCi0KLUFkZGVkLgotCi1Ub20KLQot MjAxMi0xMS0zMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotCi0JKiBkd2FyZjJy ZWFkLmMgKGR3YXJmMl9mZXRjaF9kaWVfbG9jX3NlY3Rfb2ZmKTogTmV3IGZ1bmN0aW9uLgotCShk d2FyZjJfZmV0Y2hfZGllX2xvY19jdV9vZmYpOiBSZW5hbWUgZnJvbQotCWR3YXJmMl9mZXRjaF9k aWVfbG9jYXRpb25fYmxvY2suICBSZXdyaXRlIHRvIHVzZQotCWR3YXJmMl9mZXRjaF9kaWVfbG9j X3NlY3Rfb2ZmLgotCSogZHdhcmYybG9jLmggKGR3YXJmMl9mZXRjaF9kaWVfbG9jX3NlY3Rfb2Zm KTogRGVjbGFyZS4KLQkoZHdhcmYyX2ZldGNoX2RpZV9sb2NfY3Vfb2ZmKTogUmVuYW1lLgotCSog ZHdhcmYybG9jLmMgKGluZGlyZWN0X3BpZWNlZF92YWx1ZSk6IFVzZQotCWR3YXJmMl9mZXRjaF9k aWVfbG9jX3NlY3Rfb2ZmLgotCSogZHdhcmYyZXhwci5oIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250 ZXh0KSA8bGVuLCBkYXRhPjogVXBkYXRlCi0JY29tbWVudC4KLQkoc3RydWN0IGR3YXJmX2V4cHJf cGllY2UpIDx2LnB0ci5kaWU+OiBOb3cgYSBzZWN0X29mZnNldC4KLQkqIGR3YXJmMmV4cHIuYyAo YWRkX3BpZWNlKTogVXBkYXRlLgotCShleGVjdXRlX3N0YWNrX29wKSA8RFdfT1BfR05VX2ltcGxp Y2l0X3BvaW50ZXI+OiBVcGRhdGUgY29tbWVudC4KLQotMjAxMi0xMS0zMCAgVG9tIFRyb21leSAg PHRyb21leUByZWRoYXQuY29tPgotCi0JKiBnZGIuZHdhcmYyL2ltcGxwdHItNjRiaXQuZXhwOiBS dW4gdGVzdHMgd2l0aCB0d28gQ1VzIGFzIHdlbGwuCi0JKHRlc3QpOiBBZGQgInR3b19jdSIgYXJn dW1lbnQuCi0JKiBnZGIuZHdhcmYyL2ltcGxwdHItNjRiaXQuUzogTW92ZSBzdWJwcm9ncmFtIGxh dGVyOyB1c2UgcmVmX2FkZHIKLQlmb3IgdHlwZXM7IGFsbG93IHR3byBDVXMuCi0KLWRpZmYgLS1n aXQgYS9nZGIvZHdhcmYyZXhwci5jIGIvZ2RiL2R3YXJmMmV4cHIuYwotaW5kZXggMjE0YjM3MS4u ODc3YWRkNCAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJleHByLmMKLSsrKyBiL2dkYi9kd2FyZjJl eHByLmMKLUBAIC0zNDIsNyArMzQyLDcgQEAgYWRkX3BpZWNlIChzdHJ1Y3QgZHdhcmZfZXhwcl9j b250ZXh0ICpjdHgsIFVMT05HRVNUIHNpemUsIFVMT05HRVNUIG9mZnNldCkKLSAgICAgfQotICAg ZWxzZSBpZiAocC0+bG9jYXRpb24gPT0gRFdBUkZfVkFMVUVfSU1QTElDSVRfUE9JTlRFUikKLSAg ICAgewotLSAgICAgIHAtPnYucHRyLmRpZS5jdV9vZmYgPSBjdHgtPmxlbjsKLSsgICAgICBwLT52 LnB0ci5kaWUuc2VjdF9vZmYgPSBjdHgtPmxlbjsKLSAgICAgICBwLT52LnB0ci5vZmZzZXQgPSB2 YWx1ZV9hc19sb25nIChkd2FyZl9leHByX2ZldGNoIChjdHgsIDApKTsKLSAgICAgfQotICAgZWxz ZSBpZiAocC0+bG9jYXRpb24gPT0gRFdBUkZfVkFMVUVfUkVHSVNURVIpCi1AQCAtODcyLDcgKzg3 Miw3IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwK LSAJICAgICAgZXJyb3IgKF8oIkRXQVJGLTIgZXhwcmVzc2lvbiBlcnJvcjogRFdfT1BfR05VX2lt cGxpY2l0X3BvaW50ZXIgIgotIAkJICAgICAgICJpcyBub3QgYWxsb3dlZCBpbiBmcmFtZSBjb250 ZXh0IikpOwotIAotLQkgICAgLyogVGhlIHJlZmVycmVkLXRvIERJRSBvZiBjdV9vZmZzZXQga2lu ZC4gICovCi0rCSAgICAvKiBUaGUgcmVmZXJyZWQtdG8gRElFIG9mIHNlY3Rfb2Zmc2V0IGtpbmQu ICAqLwotIAkgICAgY3R4LT5sZW4gPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKG9wX3B0ciwg Y3R4LT5yZWZfYWRkcl9zaXplLAotIAkJCQkJCSBieXRlX29yZGVyKTsKLSAJICAgIG9wX3B0ciAr PSBjdHgtPnJlZl9hZGRyX3NpemU7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBiL2dk Yi9kd2FyZjJleHByLmgKLWluZGV4IDE5ZWZiZmQuLjFiODkwZGMgMTAwNjQ0Ci0tLS0gYS9nZGIv ZHdhcmYyZXhwci5oCi0rKysgYi9nZGIvZHdhcmYyZXhwci5oCi1AQCAtMTY1LDcgKzE2NSw3IEBA IHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQKLSAKLSAgIC8qIEZvciBEV0FSRl9WQUxVRV9MSVRF UkFMLCB0aGUgY3VycmVudCBsaXRlcmFsIHZhbHVlJ3MgbGVuZ3RoIGFuZAotICAgICAgZGF0YS4g IEZvciBEV0FSRl9WQUxVRV9JTVBMSUNJVF9QT0lOVEVSLCBMRU4gaXMgdGhlIG9mZnNldCBvZiB0 aGUKLS0gICAgIHRhcmdldCBESUUgb2YgY3Vfb2Zmc2V0IGtpbmQuICAqLwotKyAgICAgdGFyZ2V0 IERJRSBvZiBzZWN0X29mZnNldCBraW5kLiAgKi8KLSAgIFVMT05HRVNUIGxlbjsKLSAgIGNvbnN0 IGdkYl9ieXRlICpkYXRhOwotIAotQEAgLTIzNiw3ICsyMzYsNyBAQCBzdHJ1Y3QgZHdhcmZfZXhw cl9waWVjZQotICAgICBzdHJ1Y3QKLSAgICAgewotICAgICAgIC8qIFRoZSByZWZlcmVudCBESUUg ZnJvbSBEV19PUF9HTlVfaW1wbGljaXRfcG9pbnRlci4gICovCi0tICAgICAgY3Vfb2Zmc2V0IGRp ZTsKLSsgICAgICBzZWN0X29mZnNldCBkaWU7Ci0gICAgICAgLyogVGhlIGJ5dGUgb2Zmc2V0IGlu dG8gdGhlIHJlc3VsdGluZyBkYXRhLiAgKi8KLSAgICAgICBMT05HRVNUIG9mZnNldDsKLSAgICAg fSBwdHI7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxvYy5jIGIvZ2RiL2R3YXJmMmxvYy5jCi1p bmRleCBjYWRjYzE3Li45NGEwM2NhIDEwMDY0NAotLS0tIGEvZ2RiL2R3YXJmMmxvYy5jCi0rKysg Yi9nZGIvZHdhcmYybG9jLmMKLUBAIC00MjUsOCArNDI1LDcgQEAgcGVyX2N1X2R3YXJmX2NhbGwg KHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgY3Vfb2Zmc2V0IGRpZV9vZmZzZXQsCi0g ewotICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uIGJsb2NrOwotIAotLSAgYmxvY2sgPSBk d2FyZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Jsb2NrIChkaWVfb2Zmc2V0LCBwZXJfY3UsCi0tCQkJ CQkgICBnZXRfZnJhbWVfcGMsIGJhdG9uKTsKLSsgIGJsb2NrID0gZHdhcmYyX2ZldGNoX2RpZV9s b2NfY3Vfb2ZmIChkaWVfb2Zmc2V0LCBwZXJfY3UsIGdldF9mcmFtZV9wYywgYmF0b24pOwotIAot ICAgLyogRFdfT1BfY2FsbF9yZWYgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQuICAqLwotICAg Z2RiX2Fzc2VydCAoYmxvY2sucGVyX2N1ID09IHBlcl9jdSk7Ci1AQCAtMjAzNCw5ICsyMDMzLDEw IEBAIGluZGlyZWN0X3BpZWNlZF92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSkKLSAgIGJ5dGVf b2Zmc2V0ID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwotIAotICAgZ2RiX2Fzc2VydCAocGll Y2UpOwotLSAgYmF0b24gPSBkd2FyZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Jsb2NrIChwaWVjZS0+ di5wdHIuZGllLCBjLT5wZXJfY3UsCi0tCQkJCQkgICBnZXRfZnJhbWVfYWRkcmVzc19pbl9ibG9j a193cmFwcGVyLAotLQkJCQkJICAgZnJhbWUpOwotKyAgYmF0b24KLSsgICAgPSBkd2FyZjJfZmV0 Y2hfZGllX2xvY19zZWN0X29mZiAocGllY2UtPnYucHRyLmRpZSwgYy0+cGVyX2N1LAotKwkJCQkg ICAgIGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrX3dyYXBwZXIsCi0rCQkJCSAgICAgZnJhbWUp OwotIAotICAgcmV0dXJuIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwgZnJhbWUsCi0gCQkJCQliYXRvbi5kYXRhLCBiYXRvbi5zaXplLCBiYXRv bi5wZXJfY3UsCi1AQCAtMzIwMSw4ICszMjAxLDggQEAgZHdhcmYyX2NvbXBpbGVfZXhwcl90b19h eCAoc3RydWN0IGFnZW50X2V4cHIgKmV4cHIsIHN0cnVjdCBheHNfdmFsdWUgKmxvYywKLSAJICAg IG9wX3B0ciArPSBzaXplOwotIAotIAkgICAgb2Zmc2V0LmN1X29mZiA9IHVvZmZzZXQ7Ci0tCSAg ICBibG9jayA9IGR3YXJmMl9mZXRjaF9kaWVfbG9jYXRpb25fYmxvY2sgKG9mZnNldCwgcGVyX2N1 LAotLQkJCQkJCSAgICAgZ2V0X2F4X3BjLCBleHByKTsKLSsJICAgIGJsb2NrID0gZHdhcmYyX2Zl dGNoX2RpZV9sb2NfY3Vfb2ZmIChvZmZzZXQsIHBlcl9jdSwKLSsJCQkJCQkgZ2V0X2F4X3BjLCBl eHByKTsKLSAKLSAJICAgIC8qIERXX09QX2NhbGxfcmVmIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9y dGVkLiAgKi8KLSAJICAgIGdkYl9hc3NlcnQgKGJsb2NrLnBlcl9jdSA9PSBwZXJfY3UpOwotZGlm ZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuaCBiL2dkYi9kd2FyZjJsb2MuaAotaW5kZXggMGYxMDc2 Ny4uNmE4YjNjOCAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJsb2MuaAotKysrIGIvZ2RiL2R3YXJm MmxvYy5oCi1AQCAtNjIsNyArNjIsMTIgQEAgY29uc3QgZ2RiX2J5dGUgKmR3YXJmMl9maW5kX2xv Y2F0aW9uX2V4cHJlc3Npb24KLSAgICBzaXplX3QgKmxvY2V4cHJfbGVuZ3RoLAotICAgIENPUkVf QUREUiBwYyk7Ci0gCi0tc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uIGR3YXJmMl9mZXRjaF9k aWVfbG9jYXRpb25fYmxvY2sKLStzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gZHdhcmYyX2Zl dGNoX2RpZV9sb2Nfc2VjdF9vZmYKLSsgIChzZWN0X29mZnNldCBvZmZzZXRfaW5fY3UsIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLSsgICBDT1JFX0FERFIgKCpnZXRfZnJhbWVf cGMpICh2b2lkICpiYXRvbiksCi0rICAgdm9pZCAqYmF0b24pOwotKwotK3N0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbiBkd2FyZjJfZmV0Y2hfZGllX2xvY19jdV9vZmYKLSAgIChjdV9vZmZzZXQg b2Zmc2V0X2luX2N1LCBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UsCi0gICAgQ09S RV9BRERSICgqZ2V0X2ZyYW1lX3BjKSAodm9pZCAqYmF0b24pLAotICAgIHZvaWQgKmJhdG9uKTsK LWRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXgg ZjRiZDdhOS4uNTlkZWEwNSAxMDA2NDQKLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dk Yi9kd2FyZjJyZWFkLmMKLUBAIC0xNzM0MywxMiArMTczNDMsMTEgQEAgZm9sbG93X2RpZV9yZWYg KHN0cnVjdCBkaWVfaW5mbyAqc3JjX2RpZSwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwKLSAgICBk d2FyZjJfbG9jZXhwcl9iYXRvbi0+ZGF0YSBoYXMgbGlmZXRpbWUgb2YgUEVSX0NVLT5PQkpGSUxF LiAgKi8KLSAKLSBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24KLS1kd2FyZjJfZmV0Y2hfZGll X2xvY2F0aW9uX2Jsb2NrIChjdV9vZmZzZXQgb2Zmc2V0X2luX2N1LAotLQkJCQkgc3RydWN0IGR3 YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotLQkJCQkgQ09SRV9BRERSICgqZ2V0X2ZyYW1lX3Bj KSAodm9pZCAqYmF0b24pLAotLQkJCQkgdm9pZCAqYmF0b24pCi0rZHdhcmYyX2ZldGNoX2RpZV9s b2Nfc2VjdF9vZmYgKHNlY3Rfb2Zmc2V0IG9mZnNldCwKLSsJCQkgICAgICAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1LAotKwkJCSAgICAgICBDT1JFX0FERFIgKCpnZXRfZnJhbWVf cGMpICh2b2lkICpiYXRvbiksCi0rCQkJICAgICAgIHZvaWQgKmJhdG9uKQotIHsKLS0gIHNlY3Rf b2Zmc2V0IG9mZnNldCA9IHsgcGVyX2N1LT5vZmZzZXQuc2VjdF9vZmYgKyBvZmZzZXRfaW5fY3Uu Y3Vfb2ZmIH07Ci0gICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdTsKLSAgIHN0cnVjdCBkaWVfaW5mbyAq ZGllOwotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLUBAIC0xNzQwMyw2ICsxNzQwMiwyMCBA QCBkd2FyZjJfZmV0Y2hfZGllX2xvY2F0aW9uX2Jsb2NrIChjdV9vZmZzZXQgb2Zmc2V0X2luX2N1 LAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0gCi0rLyogTGlrZSBkd2FyZjJfZmV0Y2hfZGllX2xv Y19zZWN0X29mZiwgYnV0IHRha2UgYSBDVQotKyAgIG9mZnNldC4gICovCi0rCi0rc3RydWN0IGR3 YXJmMl9sb2NleHByX2JhdG9uCi0rZHdhcmYyX2ZldGNoX2RpZV9sb2NfY3Vfb2ZmIChjdV9vZmZz ZXQgb2Zmc2V0X2luX2N1LAotKwkJCSAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVy X2N1LAotKwkJCSAgICAgQ09SRV9BRERSICgqZ2V0X2ZyYW1lX3BjKSAodm9pZCAqYmF0b24pLAot KwkJCSAgICAgdm9pZCAqYmF0b24pCi0rewotKyAgc2VjdF9vZmZzZXQgb2Zmc2V0ID0geyBwZXJf Y3UtPm9mZnNldC5zZWN0X29mZiArIG9mZnNldF9pbl9jdS5jdV9vZmYgfTsKLSsKLSsgIHJldHVy biBkd2FyZjJfZmV0Y2hfZGllX2xvY19zZWN0X29mZiAob2Zmc2V0LCBwZXJfY3UsIGdldF9mcmFt ZV9wYywgYmF0b24pOwotK30KLSsKLSAvKiBSZXR1cm4gdGhlIHR5cGUgb2YgdGhlIERJRSBhdCBE SUVfT0ZGU0VUIGluIHRoZSBDVSBuYW1lZCBieQotICAgIFBFUl9DVS4gICovCi0gCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHItNjRiaXQuUyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9pbXBscHRyLTY0Yml0LlMKLWluZGV4IGJlOGRiNWMuLmQwZDg3MGEg MTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wbHB0ci02NGJpdC5TCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wbHB0ci02NGJpdC5TCi1AQCAtMTgsMTEg KzE4LDEyIEBAIGQ6Ci0gCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0IEluZm8gKi8KLSAj aWYgT0ZGU0VUX1NJWkUgPT0gNAotICMgZGVmaW5lIE9GRlNFVCAuNGJ5dGUKLS0JLjRieXRlCWRl YnVnX2VuZCAtIDFmCi0rIyBkZWZpbmUgSEVBREVSX0xJTkUxCi0rIyBkZWZpbmUgSEVBREVSX0xJ TkUyKEVORCkgLjRieXRlCUVORCAtIDFmCi0gI2VsaWYgT0ZGU0VUX1NJWkUgPT0gOAotICMgZGVm aW5lIE9GRlNFVCAuOGJ5dGUKLS0JLjRieXRlCTB4ZmZmZmZmZmYKLS0JLjhieXRlCWRlYnVnX2Vu ZCAtIDFmCi0rIyBkZWZpbmUgSEVBREVSX0xJTkUxIC40Ynl0ZQkweGZmZmZmZmZmCi0rIyBkZWZp bmUgSEVBREVSX0xJTkUyKEVORCkgLjhieXRlCUVORCAtIDFmCi0gI2Vsc2UKLSAjIGVycm9yCi0g I2VuZGlmCi1AQCAtNDAsNiArNDEsMTYgQEAgZDoKLSAjZWxzZQotICMgZXJyb3IKLSAjZW5kaWYK LSsJCi0rI2lmIFRXT19DVQotKyMgZGVmaW5lIEVORDEgLkxjdV9lbmRfMQotKyNlbHNlCi0rIyBk ZWZpbmUgRU5EMSBkZWJ1Z19lbmQKLSsjZW5kaWYKLSsKLSsJSEVBREVSX0xJTkUxCi0rCUhFQURF Ul9MSU5FMihFTkQxKQotKwotIDE6Ci0gCS4yYnl0ZQlEV0FSRl9WRVJTSU9OCS8qIERXQVJGIHZl cnNpb24gbnVtYmVyICovCi0gCU9GRlNFVAkuTGRlYnVnX2FiYnJldjAJLyogT2Zmc2V0IEludG8g QWJicmV2LiBTZWN0aW9uICovCi1AQCAtNjgsMTMgKzc5LDYgQEAgZDoKLSAKLSAJLmJ5dGUJMHgw CS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSAKLS0JLnVs ZWIxMjgJNgkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnByb2dyYW0gKi8KLS0JLmFzY2lpCQkibWFp blwwIgkJLyogRFdfQVRfbmFtZSAqLwotLQlBRERSCQltYWluCQkJLyogRFdfQVRfbG93X3BjICov Ci0tCUFERFIJCW1haW4gKyAweDEwMAkJLyogRFdfQVRfaGlnaF9wYyAqLwotLQkuNGJ5dGUJCS5M dHlwZV9pbnQgLSBkCQkvKiBEV19BVF90eXBlICovCi0tCS5ieXRlCQkxCQkJLyogRFdfQVRfZXh0 ZXJuYWwgKi8KLS0KLSAuTHR5cGVfc3RydWN0cHRyOgotIAkudWxlYjEyOCAweDUJLyogRFdfVEFH X3BvaW50ZXJfdHlwZSAqLwotIAkuYnl0ZQlBRERSX1NJWkUJLyogRFdfQVRfYnl0ZV9zaXplICov Ci1AQCAtOTAsNyArOTQsMzIgQEAgZDoKLSAzOgotIAkuYnl0ZQkxLCAxLCAxLCAxCi0gMjoKLS0J LjRieXRlCS5MdHlwZV9zdHJ1Y3QgLSBkCS8qIERXX0FUX3R5cGUgKi8KLSsJUkVGX0FERFIJLkx0 eXBlX3N0cnVjdCAtIGQJLyogRFdfQVRfdHlwZSAqLwotKwotKyNpZiBUV09fQ1UKLSsJLmJ5dGUJ MHgwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKy5MY3VfZW5kXzE6Ci0rCi0rCUhFQURF Ul9MSU5FMQotKwlIRUFERVJfTElORTIgKGRlYnVnX2VuZCkKLSsKLSsxOgotKwkuMmJ5dGUJRFdB UkZfVkVSU0lPTgkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLwotKwlPRkZTRVQJLkxkZWJ1Z19h YmJyZXYwCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAqLwotKwkuYnl0ZQlBRERSX1NJ WkUJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KLSsKLSsJLnVsZWIxMjggMHgxCS8qIChE SUUgKDB4YikgRFdfVEFHX2NvbXBpbGVfdW5pdCkgKi8KLSsJLmFzY2lpICJHTlUgQyA0LjQuM1ww IgkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfbGFuZ3VhZ2UgKi8K LSsJLmFzY2lpICIxLmNcMCIJLyogRFdfQVRfbmFtZSAqLwotKyNlbmRpZgotKwotKwkudWxlYjEy OAk2CQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYXNjaWkJCSJtYWluXDAi CQkvKiBEV19BVF9uYW1lICovCi0rCUFERFIJCW1haW4JCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJ QUREUgkJbWFpbiArIDB4MTAwCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCVJFRl9BRERSCS5MdHlw ZV9pbnQgLSBkCQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkxCQkJLyogRFdfQVRfZXh0ZXJu YWwgKi8KLSAKLSAJLnVsZWIxMjggMHg0CS8qIChEV19UQUdfdmFyaWFibGUpICovCi0gCS5hc2Np aSAicFwwIgkvKiBEV19BVF9uYW1lICovCi1AQCAtMTAwLDcgKzEyOSw3IEBAIGQ6Ci0gCVJFRl9B RERSCS5MdmFyX291dCAtIGQJLyogcmVmZXJlbmNlZCBESUUgKi8KLSAJLnNsZWIxMjgJMAkvKiBv ZmZzZXQgKi8KLSAyOgotLQkuNGJ5dGUJLkx0eXBlX3N0cnVjdHB0ciAtIGQJLyogRFdfQVRfdHlw ZSAqLwotKwlSRUZfQUREUgkuTHR5cGVfc3RydWN0cHRyIC0gZAkvKiBEV19BVF90eXBlICovCi0g Ci0gCS5ieXRlCTB4MAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgbWFpbiAqLwotIAotQEAgLTE1Miw3 ICsxODEsNyBAQCBkZWJ1Z19lbmQ6Ci0gCS51bGViMTI4IDB4MDIJLyogKERXX0FUX2xvY2F0aW9u KSAqLwotIAkudWxlYjEyOCAweGEJLyogKERXX0ZPUk1fYmxvY2sxKSAqLwotIAkudWxlYjEyOCAw eDQ5CS8qIChEV19BVF90eXBlKSAqLwotLQkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQp ICovCi0rCS51bGViMTI4IDB4MTAJLyogKERXX0ZPUk1fcmVmX2FkZHIpICovCi0gCS5ieXRlCTB4 MAotIAkuYnl0ZQkweDAKLSAKLUBAIC0xNzYsNyArMjA1LDcgQEAgZGVidWdfZW5kOgotIAkudWxl YjEyOAkweDEyCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotIAkudWxlYjEyOAkweDEJCQkvKiBEV19G T1JNX2FkZHIgKi8KLSAJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8KLS0JLnVsZWIx MjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOAkweDEwCQkJLyogRFdfRk9S TV9yZWZfYWRkciAqLwotIAkudWxlYjEyOAkweDNmCQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSAJ LnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCi0gCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHIt NjRiaXQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHItNjRiaXQuZXhwCi1p bmRleCA3OGYxNTk0Li4wNjZjZjc4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2ltcGxwdHItNjRiaXQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1w bHB0ci02NGJpdC5leHAKLUBAIC0yMiwxNiArMjIsMTYgQEAgaWYgeyFbZHdhcmYyX3N1cHBvcnRd fSB7Ci0gc3RhbmRhcmRfdGVzdGZpbGUgLlMKLSBzZXQgbWFpbmZpbGUgbWFpbi5jCi0gCi0tcHJv YyB0ZXN0IHsgZHdhcmZfdmVyc2lvbiBvZmZzZXRfc2l6ZSBhZGRyX3NpemUgcmVmX2FkZHJfc2l6 ZSB9IHsKLStwcm9jIHRlc3QgeyBkd2FyZl92ZXJzaW9uIG9mZnNldF9zaXplIGFkZHJfc2l6ZSBy ZWZfYWRkcl9zaXplIHR3b19jdSB9IHsKLSAgICAgZ2xvYmFsIHRlc3RmaWxlIHNyY2ZpbGUgbWFp bmZpbGUKLSAKLSAgICAgIyAzMi1iaXQgdGFyZ2V0cyBkbyBub3Qgc3VwcG9ydCBhbnkgb2YgdGhl IHRlc3RjYXNlczsga2VlcCBxdWlldCB0aGVyZS4KLSAgICAgc2V0IG9wdHMge3F1aWV0fQotLSAg ICBmb3JlYWNoIG4geyBkd2FyZl92ZXJzaW9uIG9mZnNldF9zaXplIGFkZHJfc2l6ZSByZWZfYWRk cl9zaXplIH0gewotKyAgICBmb3JlYWNoIG4geyBkd2FyZl92ZXJzaW9uIG9mZnNldF9zaXplIGFk ZHJfc2l6ZSByZWZfYWRkcl9zaXplIHR3b19jdSB9IHsKLSAJbGFwcGVuZCBvcHRzICJhZGRpdGlv bmFsX2ZsYWdzPS1EW3N0cmluZyB0b3VwcGVyICRuXT1bZXhwciAiXCQkbiJdIgotICAgICB9Ci0g Ci0tICAgIHNldCBuYW1lICJkJHtkd2FyZl92ZXJzaW9ufW8ke29mZnNldF9zaXplfWEke2FkZHJf c2l6ZX1yJHtyZWZfYWRkcl9zaXplfSIKLSsgICAgc2V0IG5hbWUgImQke2R3YXJmX3ZlcnNpb259 byR7b2Zmc2V0X3NpemV9YSR7YWRkcl9zaXplfXIke3JlZl9hZGRyX3NpemV9dCR7dHdvX2N1fSIK LSAgICAgc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0tJHtuYW1lfQotICAgICBpZiBbcHJlcGFy ZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFibGUgIiR7c3JjZmlsZX0gJHtt YWluZmlsZX0iICRvcHRzXSB7Ci0gCXJldHVybiAtMQotQEAgLTQ0LDggKzQ0LDEyIEBAIHByb2Mg dGVzdCB7IGR3YXJmX3ZlcnNpb24gb2Zmc2V0X3NpemUgYWRkcl9zaXplIHJlZl9hZGRyX3NpemUg fSB7Ci0gICAgIGdkYl90ZXN0ICJwL3ggcC0+ZiIgIiA9IDB4MTAxMDEwMSIgJG5hbWUKLSB9Ci0g Ci0tIyAgICBEV0FSRl9WRVJTSU9OIE9GRlNFVF9TSVpFIEFERFJfU0laRSBSRUZfQUREUl9TSVpF Ci0tdGVzdCAyIDggNCA0Ci0tdGVzdCAyIDQgOCA4Ci0tdGVzdCAzIDggNCA4Ci0tdGVzdCAzIDQg OCA0Ci0rIyAgICBEV0FSRl9WRVJTSU9OIE9GRlNFVF9TSVpFIEFERFJfU0laRSBSRUZfQUREUl9T SVpFIFRXT19DVQotK3Rlc3QgMiA4IDQgNCAwCi0rdGVzdCAyIDQgOCA4IDAKLSt0ZXN0IDMgOCA0 IDggMAotK3Rlc3QgMyA0IDggNCAwCi0rdGVzdCAyIDggNCA0IDEKLSt0ZXN0IDIgNCA4IDggMQot K3Rlc3QgMyA4IDQgOCAxCi0rdGVzdCAzIDQgOCA0IDEKLQoKZGlmZiAtLWdpdCBhL2dkYi1taW5p ZGVidWdpbmZvLnBhdGNoIGIvZ2RiLW1pbmlkZWJ1Z2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGQ2ZTZmN2UuLjAwMDAwMDAKLS0tIGEvZ2RiLW1pbmlkZWJ1Z2luZm8u cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDU2ICswLDAgQEAKLWh0dHA6Ly9mZWRvcmFwcm9q ZWN0Lm9yZy93aWtpL0ZlYXR1cmVzL01pbmlEZWJ1Z0luZm8KLWh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODM0MDY4Ci0KLVBhdGNoIGJ5IEFsZXhhbmRlciBMYXJz c29uLgotUmV2aWV3L21vZGlmaWNhdGlvbnMgYW5kIHRlc3RmaWxlIGJ5IEphbiBLcmF0b2Nodmls LgotCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvTWFrZWZpbGUuaW4KLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjkxLjIwMTIwODAxLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTItMDgt MDEgMTg6NDQ6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIv TWFrZWZpbGUuaW4JMjAxMi0wOC0wMSAxODo0NzowNS43MDE4MjA1OTQgKzAyMDAKLUBAIC0xNTEs NiArMTUxLDkgQEAgUkVBRExJTkVfQ0ZMQUdTID0gQFJFQURMSU5FX0NGTEFHU0AKLSAjIFdoZXJl IGlzIGV4cGF0PyAgVGhpcyB3aWxsIGJlIGVtcHR5IGlmIGV4cGF0IHdhcyBub3QgYXZhaWxhYmxl LgotIExJQkVYUEFUID0gQExJQkVYUEFUQAotIAotKyMgV2hlcmUgaXMgbHptYT8gIFRoaXMgd2ls bCBiZSBlbXB0eSBpZiBsem1hIHdhcyBub3QgYXZhaWxhYmxlLgotK0xJQkxaTUEgPSBATElCTFpN QUAKLSsKLSBXQVJOX0NGTEFHUyA9IEBXQVJOX0NGTEFHU0AKLSBXRVJST1JfQ0ZMQUdTID0gQFdF UlJPUl9DRkxBR1NACi0gR0RCX1dBUk5fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykKLUBAIC00Njcs NyArNDcwLDcgQEAgSU5URVJOQUxfTERGTEFHUyA9ICQoQ0ZMQUdTKSAkKEdMT0JBTF9DRgotICMg TElCSUJFUlRZIGFwcGVhcnMgdHdpY2Ugb24gcHVycG9zZS4KLSBDTElCUyA9ICQoU0lNKSAkKFJF QURMSU5FKSAkKE9QQ09ERVMpICQoQkZEKSAkKElOVEwpICQoTElCSUJFUlRZKSAkKExJQkRFQ05V TUJFUikgXAotIAkkKFhNX0NMSUJTKSAkKE5BVF9DTElCUykgJChHREJUS0xJQlMpIEBMSUJTQCBA UFlUSE9OX0xJQlNAIFwKLS0JJChMSUJFWFBBVCkgXAotKwkkKExJQkVYUEFUKSAkKExJQkxaTUEp IFwKLSAJJChMSUJJQkVSVFkpICQoV0lOMzJMSUJTKSAkKExJQkdOVSkKLSBDREVQUyA9ICQoWE1f Q0RFUFMpICQoTkFUX0NERVBTKSAkKFNJTSkgJChCRkQpICQoUkVBRExJTkVfREVQUykgXAotIAkk KE9QQ09ERVMpICQoSU5UTF9ERVBTKSAkKExJQklCRVJUWSkgJChDT05GSUdfREVQUykgJChMSUJH TlUpCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvY29uZmlnLmluCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dkYi9jb25maWcuaW4JMjAxMi0wOC0wMSAx ODo0NToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODAxL2dkYi9jb25m aWcuaW4JMjAxMi0wOC0wMSAxODo0NzowNS43MDE4MjA1OTQgKzAyMDAKLUBAIC0xOTgsNiArMTk4 LDkgQEAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxpYmljb252bGlzdCcgZnVu Y3Rpb24uICovCi0gI3VuZGVmIEhBVkVfTElCSUNPTlZMSVNUCi0gCi0rLyogRGVmaW5lIGlmIHlv dSBoYXZlIHRoZSBsem1hIGxpYnJhcnkuICovCi0rI3VuZGVmIEhBVkVfTElCTFpNQQotKwotIC8q IERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbScgbGlicmFyeSAoLWxtKS4gKi8KLSAjdW5k ZWYgSEFWRV9MSUJNCi0gCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvY29uZmlndXJl Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dkYi9jb25maWd1cmUJ MjAxMi0wOC0wMSAxODo0NToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIwMTIw ODAxL2dkYi9jb25maWd1cmUJMjAxMi0wOC0wMSAxODo0NzowNS43MDM4MjA1ODMgKzAyMDAKLUBA IC02NDEsNiArNjQxLDkgQEAgVENMX1ZFUlNJT04KLSBXSU4zMkxEQVBQCi0gR1VJX0NGTEFHU19Y Ci0gTElCR1VJCi0rTFRMSUJMWk1BCi0rTElCTFpNQQotK0hBVkVfTElCTFpNQQotIFdJTjMyTElC UwotIFNFUl9IQVJEV0lSRQotIFdFUlJPUl9DRkxBR1MKLUBAIC04MTMsNiArODE2LDggQEAgd2l0 aF9zeXN0ZW1fZ2RiaW5pdAotIGVuYWJsZV93ZXJyb3IKLSBlbmFibGVfYnVpbGRfd2FybmluZ3MK LSBlbmFibGVfZ2RiX2J1aWxkX3dhcm5pbmdzCi0rd2l0aF9sem1hCi0rd2l0aF9saWJsem1hX3By ZWZpeAotIHdpdGhfdGNsCi0gd2l0aF90awotIHdpdGhfeAotQEAgLTE1MzIsNiArMTUzNyw5IEBA IE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXN5c3Jvb3RbPURJUl0gICAgc2VhcmNoIGZv ciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIKLSAgIC0td2l0aC1zeXN0ZW0tZ2RiaW5pdD1QQVRI Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IGxvYWQgYSBzeXN0ZW0t d2lkZSBnZGJpbml0IGZpbGUKLSsgIC0td2l0aC1sem1hICAgICAgICAgICAgIHN1cHBvcnQgbHpt YSBjb21wcmVzc2lvbiAoYXV0by95ZXMvbm8pCi0rICAtLXdpdGgtbGlibHptYS1wcmVmaXhbPURJ Ul0gIHNlYXJjaCBmb3IgbGlibHptYSBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgotKyAgLS13 aXRob3V0LWxpYmx6bWEtcHJlZml4ICAgICBkb24ndCBzZWFyY2ggZm9yIGxpYmx6bWEgaW4gaW5j bHVkZWRpciBhbmQgbGliZGlyCi0gICAtLXdpdGgtdGNsICAgICAgICAgICAgICBkaXJlY3Rvcnkg Y29udGFpbmluZyB0Y2wgY29uZmlndXJhdGlvbiAodGNsQ29uZmlnLnNoKQotICAgLS13aXRoLXRr ICAgICAgICAgICAgICAgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGsgY29uZmlndXJhdGlvbiAodGtD b25maWcuc2gpCi0gICAtLXdpdGgteCAgICAgICAgICAgICAgICB1c2UgdGhlIFggV2luZG93IFN5 c3RlbQotQEAgLTEzMTUxLDYgKzEzMTU5LDQ5NCBAQCBMSUJTPSRPTERfTElCUwotICMgQWRkIGFu eSBob3N0LXNwZWNpZmljIG9iamVjdHMgdG8gR0RCLgotIENPTkZJR19PQlM9IiR7Q09ORklHX09C U30gJHtnZGJfaG9zdF9vYnN9IgotIAotKyMgSWYgYnVpbGRpbmcgb24gRUxGLCBsb29rIGZvciBs em1hIHN1cHBvcnQgZm9yIGVtYmVkZGVkIGNvbXByZXNzZWQgZGVidWcgaW5mby4KLStpZiB0ZXN0 ICRnZGJfY3ZfdmFyX2VsZiA9IHllczsgdGhlbgotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgt bHptYSB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2x6bWErc2V0fSIgPSBzZXQ7IHRoZW4g OgotKyAgd2l0aHZhbD0kd2l0aF9sem1hOwotK2Vsc2UKLSsgIHdpdGhfbHptYT1hdXRvCi0rZmkK LSsKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg d2hldGhlciB0byB1c2UgbHptYSIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0 byB1c2UgbHptYS4uLiAiID4mNjsgfQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX2x6bWEiID4mNQotKyRhc19lY2hvICIkd2l0aF9sem1h IiA+JjY7IH0KLSsKLSsgIGlmIHRlc3QgIiR7d2l0aF9sem1hfSIgIT0gbm87IHRoZW4KLSsKLSsK LSsKLSsKLSsKLSsKLSsKLSsKLSsgICAgdXNlX2FkZGl0aW9uYWw9eWVzCi0rCi0rICBhY2xfc2F2 ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgotKyAgYWNs X3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKLSsgIGV4ZWNfcHJlZml4PSIkYWNsX2Zp bmFsX2V4ZWNfcHJlZml4IgotKwotKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRp bmNsdWRlZGlyXCIKLSsgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgotKwot KyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9z YXZlX3ByZWZpeCIKLSsKLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYmx6bWEtcHJlZml4 IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlibHptYV9wcmVmaXgrc2V0fSIgPSBzZXQ7 IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJsem1hX3ByZWZpeDsKLSsgICAgaWYgdGVzdCAi WCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCi0rICAgICAgdXNlX2FkZGl0aW9uYWw9bm8KLSsgICAg ZWxzZQotKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KLSsKLSsgIGFjbF9z YXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCi0rICBh Y2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZXhlY19wcmVmaXg9IiRhY2xf ZmluYWxfZXhlY19wcmVmaXgiCi0rCi0rICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRl ZGlyPVwiJGluY2x1ZGVkaXJcIgotKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwi JGxpYmRpclwiCi0rCi0rICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAg cHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgotKwotKyAgICAgIGVsc2UKLSsgICAgICAgIGFkZGl0 aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKLSsgICAgICAgIGFkZGl0aW9uYWxf bGliZGlyPSIkd2l0aHZhbC9saWIiCi0rICAgICAgZmkKLSsgICAgZmkKLSsKLStmaQotKwotKyAg ICAgIExJQkxaTUE9Ci0rICBMVExJQkxaTUE9Ci0rICBJTkNMWk1BPQotKyAgcnBhdGhkaXJzPQot KyAgbHRycGF0aGRpcnM9Ci0rICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9Ci0rICBuYW1lc19uZXh0 X3JvdW5kPSdsem1hICcKLSsgIHdoaWxlIHRlc3QgLW4gIiRuYW1lc19uZXh0X3JvdW5kIjsgZG8K LSsgICAgbmFtZXNfdGhpc19yb3VuZD0iJG5hbWVzX25leHRfcm91bmQiCi0rICAgIG5hbWVzX25l eHRfcm91bmQ9Ci0rICAgIGZvciBuYW1lIGluICRuYW1lc190aGlzX3JvdW5kOyBkbwotKyAgICAg IGFscmVhZHlfaGFuZGxlZD0KLSsgICAgICBmb3IgbiBpbiAkbmFtZXNfYWxyZWFkeV9oYW5kbGVk OyBkbwotKyAgICAgICAgaWYgdGVzdCAiJG4iID0gIiRuYW1lIjsgdGhlbgotKyAgICAgICAgICBh bHJlYWR5X2hhbmRsZWQ9eWVzCi0rICAgICAgICAgIGJyZWFrCi0rICAgICAgICBmaQotKyAgICAg IGRvbmUKLSsgICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVkIjsgdGhlbgotKyAgICAg ICAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPSIkbmFtZXNfYWxyZWFkeV9oYW5kbGVkICRuYW1lIgot KyAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVybmFtZT1gZWNobyAiJG5hbWUiIHwgc2VkIC1l ICd5fGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tfEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZX WFlaX19ffCdgCi0rICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1cHBlcm5hbWVcIgot KyAgICAgICAgaWYgdGVzdCAtbiAiJHZhbHVlIjsgdGhlbgotKyAgICAgICAgICBpZiB0ZXN0ICIk dmFsdWUiID0geWVzOyB0aGVuCi0rICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTElCJHVwcGVy bmFtZVwiCi0rICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMSUJMWk1BPSIke0xJQkxa TUF9JHtMSUJMWk1BOisgfSR2YWx1ZSIKLSsgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMVExJ QiR1cHBlcm5hbWVcIgotKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTFRMSUJMWk1B PSIke0xUTElCTFpNQX0ke0xUTElCTFpNQTorIH0kdmFsdWUiCi0rICAgICAgICAgIGVsc2UKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Ci0rICAgICAgICAgIGZpCi0rICAg ICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPQotKyAg ICAgICAgICBmb3VuZF9sYT0KLSsgICAgICAgICAgZm91bmRfc289Ci0rICAgICAgICAgIGZvdW5k X2E9Ci0rICAgICAgICAgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCi0rICAg ICAgICAgICAgaWYgdGVzdCAtbiAiJHNobGliZXh0IiAmJiB0ZXN0IC1mICIkYWRkaXRpb25hbF9s aWJkaXIvbGliJG5hbWUuJHNobGliZXh0IjsgdGhlbgotKyAgICAgICAgICAgICAgZm91bmRfZGly PSIkYWRkaXRpb25hbF9saWJkaXIiCi0rICAgICAgICAgICAgICBmb3VuZF9zbz0iJGFkZGl0aW9u YWxfbGliZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCIKLSsgICAgICAgICAgICAgIGlmIHRlc3QgLWYg IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSI7IHRoZW4KLSsgICAgICAgICAgICAgICAg Zm91bmRfbGE9IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSIKLSsgICAgICAgICAgICAg IGZpCi0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGFkZGl0 aW9uYWxfbGliZGlyL2xpYiRuYW1lLiRsaWJleHQiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGZv dW5kX2Rpcj0iJGFkZGl0aW9uYWxfbGliZGlyIgotKyAgICAgICAgICAgICAgICBmb3VuZF9hPSIk YWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUuJGxpYmV4dCIKLSsgICAgICAgICAgICAgICAgaWYg dGVzdCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLmxhIjsgdGhlbgotKyAgICAgICAg ICAgICAgICAgIGZvdW5kX2xhPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUubGEiCi0rICAg ICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGZpCi0rICAg ICAgICAgIGZpCi0rICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgot KyAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQkxaTUE7IGRvCi0rCi0rICBhY2xf c2F2ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgotKyAg YWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKLSsgIGV4ZWNfcHJlZml4PSIkYWNs X2ZpbmFsX2V4ZWNfcHJlZml4IgotKyAgZXZhbCB4PVwiJHhcIgotKyAgZXhlY19wcmVmaXg9IiRh Y2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLSsKLSsg ICAgICAgICAgICAgIGNhc2UgIiR4IiBpbgotKyAgICAgICAgICAgICAgICAtTCopCi0rICAgICAg ICAgICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwvLydgCi0rICAgICAg ICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHNobGliZXh0IiAmJiB0ZXN0IC1mICIkZGlyL2xpYiRu YW1lLiRzaGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRp ciIKLSsgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyL2xpYiRuYW1lLiRzaGxpYmV4 dCIKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUubGEiOyB0 aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyL2xpYiRuYW1lLmxhIgot KyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAg ICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLiRsaWJleHQiOyB0aGVuCi0r ICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKLSsgICAgICAgICAgICAgICAg ICAgICAgZm91bmRfYT0iJGRpci9saWIkbmFtZS4kbGliZXh0IgotKyAgICAgICAgICAgICAgICAg ICAgICBpZiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLmxhIjsgdGhlbgotKyAgICAgICAgICAgICAg ICAgICAgICAgIGZvdW5kX2xhPSIkZGlyL2xpYiRuYW1lLmxhIgotKyAgICAgICAgICAgICAgICAg ICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBmaQot KyAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAg ICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGJy ZWFrCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgZmkK LSsgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgotKyAgICAgICAg ICAgICAgICAgICAgICAgIExUTElCTFpNQT0iJHtMVExJQkxaTUF9JHtMVExJQkxaTUE6KyB9LUwk Zm91bmRfZGlyIC1sJG5hbWUiCi0rICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9zbyIgIT0g IlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiA9IG5vIHx8IHRlc3QgIlgkZm91bmRf ZGlyIiA9ICJYL3Vzci9saWIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfSRmb3VuZF9zbyIKLSsgICAgICAgICAg ICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAg ICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3Qg IlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9 eWVzCi0rICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgIGZpCi0r ICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVp dCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRm b3VuZF9kaXIiCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllczsgdGhlbgotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQkxaTUE9IiR7 TElCTFpNQX0ke0xJQkxaTUE6KyB9JGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgICBlbHNlCi0r ICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMi ICYmIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiA9IG5vOyB0aGVuCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCTFpNQT0iJHtM SUJMWk1BfSR7TElCTFpNQTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAg ICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAg aWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAg ICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAg ICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAg ICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAg ICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZm91bmRfZGlyIgotKyAgICAgICAgICAgICAgICAg ICAgZmkKLSsgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo YXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCTFpNQTsg ZG8KLSsKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5h bF9wcmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZXhl Y19wcmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICBldmFsIHg9XCIkeFwiCi0rICBl eGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAgcHJlZml4PSIkYWNsX3NhdmVf cHJlZml4IgotKwotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRm b3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAg ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0r ICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16 ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBMSUJMWk1BPSIke0xJQkxa TUF9JHtMSUJMWk1BOisgfS1MJGZvdW5kX2RpciIKLSsgICAgICAgICAgICAgICAgICAgIGZpCi0r ICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRo ZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCTFpNQT0iJHtMSUJMWk1BfSR7 TElCTFpNQTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBM SUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfS1sJG5hbWUiCi0rICAgICAgICAgICAgICAg ICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGZpCi0rICAg ICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgIGlmIHRlc3Qg IlgkZm91bmRfYSIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfSRmb3VuZF9hIgotKyAgICAgICAgICAg ICAgZWxzZQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IExJQkxaTUE9IiR7TElCTFpNQX0ke0xJQkxaTUE6KyB9LUwkZm91bmRfZGlyIC1sJG5hbWUiCi0r ICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAg ICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPQotKyAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9kaXIi IGluCi0rICAgICAgICAgICAgICAqL2xpYiB8ICovbGliLykKLSsgICAgICAgICAgICAgICAgYmFz ZWRpcj1gZWNobyAiWCRmb3VuZF9kaXIiIHwgc2VkIC1lICdzLF5YLCwnIC1lICdzLC9saWIvKiQs LCdgCi0rICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5j bHVkZSIKLSsgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICBlc2FjCi0rICAgICAgICAg ICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiICE9ICJYIjsgdGhlbgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0 ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCi0rICAg ICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlv bmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVuCi0rICAgICAgICAg ICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGNh c2UgJGhvc3Rfb3MgaW4KLSsgICAgICAgICAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVz OzsKLSsgICAgICAgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgICAgICBmaQotKyAg ICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0Ijsg dGhlbgotKyAgICAgICAgICAgICAgICAgIGZvciB4IGluICRDUFBGTEFHUyAkSU5DTFpNQTsgZG8K LSsKLSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9w cmVmaXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZXhlY19w cmVmaXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICBldmFsIHg9XCIkeFwiCi0rICBleGVj X3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJl Zml4IgotKwotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUkkYWRkaXRp b25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVz Ci0rICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICBmaQot KyAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIk aGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9u YWxfaW5jbHVkZWRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElOQ0xaTUE9IiR7SU5DTFpNQX0ke0lOQ0xaTUE6KyB9LUkkYWRkaXRpb25hbF9p bmNsdWRlZGlyIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBm aQotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBm aQotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmb3VuZF9sYSI7IHRoZW4K LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2xhIiBp bgotKyAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEiIDs7Ci0rICAgICAg ICAgICAgICAgICopIC4gIi4vJGZvdW5kX2xhIiA7OwotKyAgICAgICAgICAgICAgZXNhYwotKyAg ICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGZvciBkZXAgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSsgICAgICAgICAgICAgICAg Y2FzZSAiJGRlcCIgaW4KLSsgICAgICAgICAgICAgICAgICAtTCopCi0rICAgICAgICAgICAgICAg ICAgICBhZGRpdGlvbmFsX2xpYmRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLUwvLydg Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3Qg IlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci9saWIiOyB0aGVuCi0rICAgICAgICAgICAg ICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRp dGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvbGliIjsgdGhlbgotKyAgICAgICAgICAgICAg ICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICBjYXNlICRob3N0X29zIGluCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbnV4 KikgaGF2ZWl0PXllczs7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICBlc2FjCi0rICAgICAg ICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAg ICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAg ICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExE RkxBR1MgJExJQkxaTUE7IGRvCi0rCi0rICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBw cmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgotKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVj X3ByZWZpeCIKLSsgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgotKyAgZXZh bCB4PVwiJHhcIgotKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHBy ZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGlm IHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAg ICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0 IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9u YWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTElCTFpNQT0iJHtMSUJMWk1BfSR7TElCTFpNQTorIH0tTCRhZGRp dGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAg ICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCTFpNQTsgZG8KLSsK LSsgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKLSsgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVm aXgiCi0rICBhY2xfc2F2ZV9leGVjX3ByZWZpeD0iJGV4ZWNfcHJlZml4IgotKyAgZXhlY19wcmVm aXg9IiRhY2xfZmluYWxfZXhlY19wcmVmaXgiCi0rICBldmFsIHg9XCIkeFwiCi0rICBleGVjX3By ZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgotKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4 IgotKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRk aXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVp dD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAg ICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMVExJ QkxaTUE9IiR7TFRMSUJMWk1BfSR7TFRMSUJMWk1BOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgot KyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBm aQotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsg ICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgLVIqKQotKyAgICAgICAg ICAgICAgICAgICAgZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtUi8vJ2AKLSsgICAg ICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRlbmFibGVfcnBhdGgiICE9IG5vOyB0aGVuCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJz OyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRkaXIiOyB0 aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAg ICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAi JGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0 aGRpcnMgJGRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9 Ci0rICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KLSsgICAg ICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAg ICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0 aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAk ZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZmkK LSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgLWwqKQotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lc19uZXh0X3JvdW5kPSIkbmFt ZXNfbmV4dF9yb3VuZCAiYGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1sLy8nYAotKyAgICAg ICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAqLmxhKQotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJY JGRlcCIgfCBzZWQgLWUgJ3MsXlguKi8sLCcgLWUgJ3MsXmxpYiwsJyAtZSAncyxcLmxhJCwsJ2AK LSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgKikKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTElCTFpNQT0iJHtMSUJMWk1BfSR7TElC TFpNQTorIH0kZGVwIgotKyAgICAgICAgICAgICAgICAgICAgTFRMSUJMWk1BPSIke0xUTElCTFpN QX0ke0xUTElCTFpNQTorIH0kZGVwIgotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAg ICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgIGZpCi0rICAg ICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfS1sJG5hbWUi Ci0rICAgICAgICAgICAgTFRMSUJMWk1BPSIke0xUTElCTFpNQX0ke0xUTElCTFpNQTorIH0tbCRu YW1lIgotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICBkb25lCi0r ICBkb25lCi0rICBpZiB0ZXN0ICJYJHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCi0rICAgIGlmIHRl c3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotKyAgICAgICAgICAgICAg ICAgICAgICAgIGFsbGRpcnM9Ci0rICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBk bwotKyAgICAgICAgYWxsZGlycz0iJHthbGxkaXJzfSR7YWxsZGlyczorJGhhcmRjb2RlX2xpYmRp cl9zZXBhcmF0b3J9JGZvdW5kX2RpciIKLSsgICAgICBkb25lCi0rICAgICAgICAgICAgYWNsX3Nh dmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCi0rICAgICAgZXZh bCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAgIGxpYmRpcj0iJGFj bF9zYXZlX2xpYmRpciIKLSsgICAgICBMSUJMWk1BPSIke0xJQkxaTUF9JHtMSUJMWk1BOisgfSRm bGFnIgotKyAgICBlbHNlCi0rICAgICAgICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJz OyBkbwotKyAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgICAgbGliZGly PSIkZm91bmRfZGlyIgotKyAgICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFn X3NwZWNcIgotKyAgICAgICAgbGliZGlyPSIkYWNsX3NhdmVfbGliZGlyIgotKyAgICAgICAgTElC TFpNQT0iJHtMSUJMWk1BfSR7TElCTFpNQTorIH0kZmxhZyIKLSsgICAgICBkb25lCi0rICAgIGZp Ci0rICBmaQotKyAgaWYgdGVzdCAiWCRsdHJwYXRoZGlycyIgIT0gIlgiOyB0aGVuCi0rICAgICAg ICAgICAgZm9yIGZvdW5kX2RpciBpbiAkbHRycGF0aGRpcnM7IGRvCi0rICAgICAgTFRMSUJMWk1B PSIke0xUTElCTFpNQX0ke0xUTElCTFpNQTorIH0tUiRmb3VuZF9kaXIiCi0rICAgIGRvbmUKLSsg IGZpCi0rCi0rCi0rICAgICAgICBhY19zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0rCi0rICBm b3IgZWxlbWVudCBpbiAkSU5DTFpNQTsgZG8KLSsgICAgaGF2ZWl0PQotKyAgICBmb3IgeCBpbiAk Q1BQRkxBR1M7IGRvCi0rCi0rICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBwcmVmaXg9 IiRhY2xfZmluYWxfcHJlZml4IgotKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZp eCIKLSsgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgotKyAgZXZhbCB4PVwi JHhcIgotKyAgZXhlY19wcmVmaXg9IiRhY2xfc2F2ZV9leGVjX3ByZWZpeCIKLSsgIHByZWZpeD0i JGFjbF9zYXZlX3ByZWZpeCIKLSsKLSsgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZWxlbWVudCI7 IHRoZW4KLSsgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgIGJyZWFrCi0rICAgICAgZmkKLSsg ICAgZG9uZQotKyAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgIENQUEZMQUdT PSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6KyB9JGVsZW1lbnQiCi0rICAgIGZpCi0rICBkb25lCi0r Ci0rCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5n IGZvciBsaWJsem1hIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgbGlibHptYS4uLiAi ID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfbGlibHptYStzZXR9IiA9IHNldDsgdGhlbiA6Ci0r ICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsKLSsgICAgYWNfc2F2ZV9MSUJT PSIkTElCUyIKLSsgICAgTElCUz0iJExJQlMgJExJQkxaTUEiCi0rICAgIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0r I2luY2x1ZGUgImx6bWEuaCIKLStpbnQKLSttYWluICgpCi0rewotK2x6bWFfaW5kZXhfaXRlciBp dGVyOwotKwkJCSAgIGx6bWFfaW5kZXhfaXRlcl9pbml0ICgmaXRlciwgMCk7Ci0rCQkJICAgbHpt YV9tZl9pc19zdXBwb3J0ZWQgKExaTUFfTUZfSEMzKTsKLSsgIDsKLSsgIHJldHVybiAwOwotK30K LStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0rICBhY19j dl9saWJsem1hPXllcwotK2Vsc2UKLSsgIGFjX2N2X2xpYmx6bWE9bm8KLStmaQotK3JtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotKyAgICBjb25mdGVzdCRhY19l eGVleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgotKwotK2Zp Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19j dl9saWJsem1hIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X2xpYmx6bWEiID4mNjsgfQotKyAgaWYg dGVzdCAiJGFjX2N2X2xpYmx6bWEiID0geWVzOyB0aGVuCi0rICAgIEhBVkVfTElCTFpNQT15ZXMK LSsKLSskYXNfZWNobyAiI2RlZmluZSBIQVZFX0xJQkxaTUEgMSIgPj5jb25mZGVmcy5oCi0rCi0r ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93 IHRvIGxpbmsgd2l0aCBsaWJsem1hIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8g bGluayB3aXRoIGxpYmx6bWEuLi4gIiA+JjY7IH0KLSsgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMSUJMWk1BIiA+JjUKLSskYXNfZWNobyAiJExJ QkxaTUEiID4mNjsgfQotKyAgZWxzZQotKyAgICBIQVZFX0xJQkxaTUE9bm8KLSsgICAgICAgICAg ICBDUFBGTEFHUz0iJGFjX3NhdmVfQ1BQRkxBR1MiCi0rICAgIExJQkxaTUE9Ci0rICAgIExUTElC TFpNQT0KLSsgIGZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rICAgIGlmIHRlc3QgIiRIQVZFX0xJQkxa TUEiICE9IHllczsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiR3aXRoX2x6bWEiID0geWVzOyB0aGVu Ci0rICAgICAgICBhc19mbl9lcnJvciAibWlzc2luZyBsaWJsem1hIGZvciAtLXdpdGgtbHptYSIg IiRMSU5FTk8iIDUKLSsgICAgICBmaQotKyAgICBmaQotKyAgZmkKLStmaQotKwotIExJQkdVST0i Li4vbGliZ3VpL3NyYy9saWJndWkuYSIKLSBHVUlfQ0ZMQUdTX1g9Ii1JJHtzcmNkaXJ9Ly4uL2xp Ymd1aS9zcmMiCi0gCi1JbmRleDogZ2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvY29uZmlndXJlLmFj Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgwMS5vcmlnL2dkYi9jb25maWd1cmUu YWMJMjAxMi0wOC0wMSAxODo0NToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjkxLjIw MTIwODAxL2dkYi9jb25maWd1cmUuYWMJMjAxMi0wOC0wMSAxODo0NzowNS43MDQ4MjA1NzcgKzAy MDAKLUBAIC0yMTk2LDYgKzIxOTYsMjcgQEAgTElCUz0kT0xEX0xJQlMKLSAjIEFkZCBhbnkgaG9z dC1zcGVjaWZpYyBvYmplY3RzIHRvIEdEQi4KLSBDT05GSUdfT0JTPSIke0NPTkZJR19PQlN9ICR7 Z2RiX2hvc3Rfb2JzfSIKLSAKLSsjIElmIGJ1aWxkaW5nIG9uIEVMRiwgbG9vayBmb3IgbHptYSBz dXBwb3J0IGZvciBlbWJlZGRlZCBjb21wcmVzc2VkIGRlYnVnIGluZm8uCi0raWYgdGVzdCAkZ2Ri X2N2X3Zhcl9lbGYgPSB5ZXM7IHRoZW4KLSsgIEFDX0FSR19XSVRIKGx6bWEsCi0rICAgIEFTX0hF TFBfU1RSSU5HKFstLXdpdGgtbHptYV0sIFtzdXBwb3J0IGx6bWEgY29tcHJlc3Npb24gKGF1dG8v eWVzL25vKV0pLAotKyAgICBbXSwgW3dpdGhfbHptYT1hdXRvXSkKLSsgIEFDX01TR19DSEVDS0lO Ryhbd2hldGhlciB0byB1c2UgbHptYV0pCi0rICBBQ19NU0dfUkVTVUxUKFskd2l0aF9sem1hXSkK LSsKLSsgIGlmIHRlc3QgIiR7d2l0aF9sem1hfSIgIT0gbm87IHRoZW4KLSsgICAgQUNfTElCX0hB VkVfTElOS0ZMQUdTKFtsem1hXSwgW10sIFsjaW5jbHVkZSAibHptYS5oIl0sCi0rCQkJICBbbHpt YV9pbmRleF9pdGVyIGl0ZXI7Ci0rCQkJICAgbHptYV9pbmRleF9pdGVyX2luaXQgKCZpdGVyLCAw KTsKLSsJCQkgICBsem1hX21mX2lzX3N1cHBvcnRlZCAoTFpNQV9NRl9IQzMpO10pCi0rICAgIGlm IHRlc3QgIiRIQVZFX0xJQkxaTUEiICE9IHllczsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiR3aXRo X2x6bWEiID0geWVzOyB0aGVuCi0rICAgICAgICBBQ19NU0dfRVJST1IoW21pc3NpbmcgbGlibHpt YSBmb3IgLS13aXRoLWx6bWFdKQotKyAgICAgIGZpCi0rICAgIGZpCi0rICBmaQotK2ZpCi0rCi0g TElCR1VJPSIuLi9saWJndWkvc3JjL2xpYmd1aS5hIgotIEdVSV9DRkxBR1NfWD0iLUkke3NyY2Rp cn0vLi4vbGliZ3VpL3NyYyIKLSBBQ19TVUJTVChMSUJHVUkpCi1JbmRleDogZ2RiLTcuNC45MS4y MDEyMDgwMS9nZGIvZWxmcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC45MS4yMDEyMDgw MS5vcmlnL2dkYi9lbGZyZWFkLmMJMjAxMi0wOC0wMSAxODo0NDo1MS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy40LjkxLjIwMTIwODAxL2dkYi9lbGZyZWFkLmMJMjAxMi0wOC0wMSAxODo1Nzo1 OS41MjgyMDIzOTggKzAyMDAKLUBAIC01MSw2ICs1MSwxMCBAQAotICNpbmNsdWRlICJvYnNlcnZl ci5oIgotICNpbmNsdWRlICJlbGYvZXh0ZXJuYWwuaCIKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4K LSsjaW5jbHVkZSAiZ2RiY29yZS5oIgotKyNpZmRlZiBIQVZFX0xJQkxaTUEKLSsjIGluY2x1ZGUg PGx6bWEuaD4KLSsjZW5kaWYKLSAKLSBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2 b2lkKTsKLSAKLUBAIC0yMjEwLDYgKzIyMTQsMjYyIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmls ZV9ieV9idWlsZGlkIChzdHIKLSAgIHJldHVybiBOVUxMOwotIH0KLSAKLSsjaWZkZWYgSEFWRV9M SUJMWk1BCi0rCi0rLyogQ3VzdG9tIGx6bWFfYWxsb2NhdG9yLmFsbG9jIHNvIHRoZXkgdXNlIHRo ZSBnZGIgb25lcy4gICovCi0rCi0rc3RhdGljIHZvaWQgKgotK2FsbG9jX2x6bWEgKHZvaWQgKm9w YXF1ZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICByZXR1cm4geG1hbGxvYyAo bm1lbWIgKiBzaXplKTsKLSt9Ci0rCi0rLyogQ3VzdG9tIGx6bWFfYWxsb2NhdG9yLmZyZWUgc28g dGhleSB1c2UgdGhlIGdkYiBvbmVzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2ZyZWVfbHptYSAo dm9pZCAqb3BhcXVlLCB2b2lkICpwdHIpCi0rewotKyAgeGZyZWUgKHB0cik7Ci0rfQotKwotKy8q IEl0IGNhbm5vdCBiZSBjb25zdCBkdWUgdG8gdGhlIGx6bWEgbGlicmFyeSBmdW5jdGlvbiBwcm90 b3R5cGVzLiAgKi8KLSsKLStzdGF0aWMgbHptYV9hbGxvY2F0b3IgZ2RiX2x6bWFfYWxsb2NhdG9y ID0geyBhbGxvY19sem1hLCBmcmVlX2x6bWEsIE5VTEx9OwotKwotKy8qIEN1c3RvbSBiZmRfb3Bl bnJfaW92ZWMgaW1wbGVtZW50YXRpb24gdG8gcmVhZCBjb21wcmVzc2VkIGRhdGEgZnJvbSBhCi0r ICAgc2VjdGlvbi4gVGhpcyBrZWVwcyBvbmx5IHRoZSBsYXN0IGRlY29tcHJlc3NlZCBibG9jayBp biBtZW1vcnkgdG8KLSsgICBhbGxvdyBsYXJnZXIgZGF0YSB3aXRob3V0IHVzaW5nIHRvIG11Y2gg bWVtb3J5LiAgKi8KLSsKLStzdHJ1Y3QgbHptYV9zdHJlYW0KLSt7Ci0rICAvKiBTZWN0aW9uIG9m IGlucHV0IEJGRCB3ZSBhcmUgZGVjb2RpbmcgZGF0YSBmcm9tLiAgKi8KLSsgIGFzZWN0aW9uICpz ZWN0aW9uOwotKwotKyAgLyogbHptYSBsaWJyYXJ5IGRlY29tcHJlc3Npb24gc3RhdGUuICAqLwot KyAgbHptYV9pbmRleCAqaW5kZXg7Ci0rCi0rICAvKiBDdXJyZW50bHkgZGVjb2RlZCBibG9jay4g ICovCi0rICBiZmRfc2l6ZV90eXBlIGRhdGFfc3RhcnQ7Ci0rICBiZmRfc2l6ZV90eXBlIGRhdGFf ZW5kOwotKyAgZ2RiX2J5dGUgKmRhdGE7Ci0rfTsKLSsKLSsvKiBiZmRfb3BlbnJfaW92ZWMgT1BF Tl9QIGltcGxlbWVudGF0aW9uIGZvcgotKyAgIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9pbl9z ZWN0aW9uLiAgT1BFTl9DTE9TVVJFIGlzICdhc2VjdGlvbiAqJyBvZiB0aGUKLSsgICBzZWN0aW9u IHRvIGRlY29tcHJlc3MuCi0rCi0rICAgUmV0dXJuICdzdHJ1Y3QgbHptYV9zdHJlYW0gKicgbXVz dCBiZSBmcmVlZCBieSBjYWxsZXIgYnkgeGZyZWUsIHRvZ2V0aGVyCi0rICAgd2l0aCBpdHMgSU5E RVggbHptYSBkYXRhLiAgKi8KLSsKLStzdGF0aWMgdm9pZCAqCi0rbHptYV9vcGVuIChzdHJ1Y3Qg YmZkICpuYmZkLCB2b2lkICpvcGVuX2Nsb3N1cmUpCi0rewotKyAgYXNlY3Rpb24gKnNlY3Rpb24g PSBvcGVuX2Nsb3N1cmU7Ci0rICBiZmRfc2l6ZV90eXBlIHNpemUsIG9mZnNldDsKLSsgIGx6bWFf c3RyZWFtX2ZsYWdzIG9wdGlvbnM7Ci0rICBnZGJfYnl0ZSBmb290ZXJbTFpNQV9TVFJFQU1fSEVB REVSX1NJWkVdOwotKyAgZ2RiX2J5dGUgKmluZGV4ZGF0YTsKLSsgIGx6bWFfaW5kZXggKmluZGV4 OwotKyAgaW50IHJldDsKLSsgIHVpbnQ2NF90IG1lbWxpbWl0ID0gVUlOVDY0X01BWDsKLSsgIHN0 cnVjdCBsem1hX3N0cmVhbSAqbHN0cmVhbTsKLSsgIHNpemVfdCBwb3M7Ci0rCi0rICBzaXplID0g YmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3Rpb24pOwotKyAgb2Zmc2V0ID0gc2VjdGlvbi0+Zmls ZXBvcyArIHNpemUgLSBMWk1BX1NUUkVBTV9IRUFERVJfU0laRTsKLSsgIGlmIChzaXplIDwgTFpN QV9TVFJFQU1fSEVBREVSX1NJWkUKLSsgICAgICB8fCBiZmRfc2VlayAoc2VjdGlvbi0+b3duZXIs IG9mZnNldCwgU0VFS19TRVQpICE9IDAKLSsgICAgICB8fCBiZmRfYnJlYWQgKGZvb3RlciwgTFpN QV9TVFJFQU1fSEVBREVSX1NJWkUsIHNlY3Rpb24tPm93bmVyKQotKyAgICAgICAgICE9IExaTUFf U1RSRUFNX0hFQURFUl9TSVpFCi0rICAgICAgfHwgbHptYV9zdHJlYW1fZm9vdGVyX2RlY29kZSAo Jm9wdGlvbnMsIGZvb3RlcikgIT0gTFpNQV9PSwotKyAgICAgIHx8IG9mZnNldCA8IG9wdGlvbnMu YmFja3dhcmRfc2l6ZSkKLSsgICAgewotKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl93 cm9uZ19mb3JtYXQpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICBvZmZzZXQg LT0gb3B0aW9ucy5iYWNrd2FyZF9zaXplOwotKyAgaW5kZXhkYXRhID0geG1hbGxvYyAob3B0aW9u cy5iYWNrd2FyZF9zaXplKTsKLSsgIGluZGV4ID0gTlVMTDsKLSsgIHBvcyA9IDA7Ci0rICBpZiAo YmZkX3NlZWsgKHNlY3Rpb24tPm93bmVyLCBvZmZzZXQsIFNFRUtfU0VUKSAhPSAwCi0rICAgICAg fHwgYmZkX2JyZWFkIChpbmRleGRhdGEsIG9wdGlvbnMuYmFja3dhcmRfc2l6ZSwgc2VjdGlvbi0+ b3duZXIpCi0rICAgICAgICAgIT0gb3B0aW9ucy5iYWNrd2FyZF9zaXplCi0rICAgICAgfHwgbHpt YV9pbmRleF9idWZmZXJfZGVjb2RlICgmaW5kZXgsICZtZW1saW1pdCwgJmdkYl9sem1hX2FsbG9j YXRvciwKLSsJCQkJICAgaW5kZXhkYXRhLCAmcG9zLCBvcHRpb25zLmJhY2t3YXJkX3NpemUpCi0r ICAgICAgICAgIT0gTFpNQV9PSwotKyAgICAgIHx8IGx6bWFfaW5kZXhfc2l6ZSAoaW5kZXgpICE9 IG9wdGlvbnMuYmFja3dhcmRfc2l6ZSkKLSsgICAgewotKyAgICAgIHhmcmVlIChpbmRleGRhdGEp OwotKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl93cm9uZ19mb3JtYXQpOwotKyAgICAg IHJldHVybiBOVUxMOwotKyAgICB9Ci0rICB4ZnJlZSAoaW5kZXhkYXRhKTsKLSsKLSsgIGxzdHJl YW0gPSB4emFsbG9jIChzaXplb2YgKHN0cnVjdCBsem1hX3N0cmVhbSkpOwotKyAgbHN0cmVhbS0+ c2VjdGlvbiA9IHNlY3Rpb247Ci0rICBsc3RyZWFtLT5pbmRleCA9IGluZGV4OwotKwotKyAgcmV0 dXJuIGxzdHJlYW07Ci0rfQotKwotKy8qIGJmZF9vcGVucl9pb3ZlYyBQUkVBRF9QIGltcGxlbWVu dGF0aW9uIGZvcgotKyAgIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9pbl9zZWN0aW9uLiAgUGFz c2VkIFNUUkVBTQotKyAgIGlzICdzdHJ1Y3QgbHptYV9zdHJlYW0gKicuICAqLwotKwotK3N0YXRp YyBmaWxlX3B0cgotK2x6bWFfcHJlYWQgKHN0cnVjdCBiZmQgKm5iZmQsIHZvaWQgKnN0cmVhbSwg dm9pZCAqYnVmLCBmaWxlX3B0ciBuYnl0ZXMsCi0rCSAgICBmaWxlX3B0ciBvZmZzZXQpCi0rewot KyAgc3RydWN0IGx6bWFfc3RyZWFtICpsc3RyZWFtID0gc3RyZWFtOwotKyAgYmZkX3NpemVfdHlw ZSBjaHVua19zaXplOwotKyAgbHptYV9pbmRleF9pdGVyIGl0ZXI7Ci0rICBnZGJfYnl0ZSAqY29t cHJlc3NlZCwgKnVuY29tcHJlc3NlZDsKLSsgIGZpbGVfcHRyIGJsb2NrX29mZnNldDsKLSsgIGx6 bWFfZmlsdGVyIGZpbHRlcnNbTFpNQV9GSUxURVJTX01BWCArIDFdOwotKyAgbHptYV9ibG9jayBi bG9jazsKLSsgIHNpemVfdCBjb21wcmVzc2VkX3BvcywgdW5jb21wcmVzc2VkX3BvczsKLSsgIGZp bGVfcHRyIHJlczsKLSsKLSsgIHJlcyA9IDA7Ci0rICB3aGlsZSAobmJ5dGVzID4gMCkKLSsgICAg ewotKyAgICAgIGlmIChsc3RyZWFtLT5kYXRhID09IE5VTEwKLSsJICB8fCBsc3RyZWFtLT5kYXRh X3N0YXJ0ID4gb2Zmc2V0IHx8IG9mZnNldCA+PSBsc3RyZWFtLT5kYXRhX2VuZCkKLSsJewotKwkg IGFzZWN0aW9uICpzZWN0aW9uID0gbHN0cmVhbS0+c2VjdGlvbjsKLSsKLSsJICBsem1hX2luZGV4 X2l0ZXJfaW5pdCAoJml0ZXIsIGxzdHJlYW0tPmluZGV4KTsKLSsJICBpZiAobHptYV9pbmRleF9p dGVyX2xvY2F0ZSAoJml0ZXIsIG9mZnNldCkpCi0rCSAgICBicmVhazsKLSsKLSsJICBjb21wcmVz c2VkID0geG1hbGxvYyAoaXRlci5ibG9jay50b3RhbF9zaXplKTsKLSsJICBibG9ja19vZmZzZXQg PSBzZWN0aW9uLT5maWxlcG9zICsgaXRlci5ibG9jay5jb21wcmVzc2VkX2ZpbGVfb2Zmc2V0Owot KwkgIGlmIChiZmRfc2VlayAoc2VjdGlvbi0+b3duZXIsIGJsb2NrX29mZnNldCwgU0VFS19TRVQp ICE9IDAKLSsJICAgICAgfHwgYmZkX2JyZWFkIChjb21wcmVzc2VkLCBpdGVyLmJsb2NrLnRvdGFs X3NpemUsIHNlY3Rpb24tPm93bmVyKQotKwkJICE9IGl0ZXIuYmxvY2sudG90YWxfc2l6ZSkKLSsJ ICAgIHsKLSsJICAgICAgeGZyZWUgKGNvbXByZXNzZWQpOwotKwkgICAgICBicmVhazsKLSsJICAg IH0KLSsKLSsJICB1bmNvbXByZXNzZWQgPSB4bWFsbG9jIChpdGVyLmJsb2NrLnVuY29tcHJlc3Nl ZF9zaXplKTsKLSsKLSsJICBtZW1zZXQgKCZibG9jaywgMCwgc2l6ZW9mIChibG9jaykpOwotKwkg IGJsb2NrLmZpbHRlcnMgPSBmaWx0ZXJzOwotKwkgIGJsb2NrLmhlYWRlcl9zaXplID0gbHptYV9i bG9ja19oZWFkZXJfc2l6ZV9kZWNvZGUgKGNvbXByZXNzZWRbMF0pOwotKwkgIGlmIChsem1hX2Js b2NrX2hlYWRlcl9kZWNvZGUgKCZibG9jaywgJmdkYl9sem1hX2FsbG9jYXRvciwgY29tcHJlc3Nl ZCkKLSsJICAgICAgIT0gTFpNQV9PSykKLSsJICAgIHsKLSsJICAgICAgeGZyZWUgKGNvbXByZXNz ZWQpOwotKwkgICAgICB4ZnJlZSAodW5jb21wcmVzc2VkKTsKLSsJICAgICAgYnJlYWs7Ci0rCSAg ICB9Ci0rCi0rCSAgY29tcHJlc3NlZF9wb3MgPSBibG9jay5oZWFkZXJfc2l6ZTsKLSsJICB1bmNv bXByZXNzZWRfcG9zID0gMDsKLSsJICBpZiAobHptYV9ibG9ja19idWZmZXJfZGVjb2RlICgmYmxv Y2ssICZnZGJfbHptYV9hbGxvY2F0b3IsCi0rCQkJCQljb21wcmVzc2VkLCAmY29tcHJlc3NlZF9w b3MsCi0rCQkJCQlpdGVyLmJsb2NrLnRvdGFsX3NpemUsCi0rCQkJCQl1bmNvbXByZXNzZWQsICZ1 bmNvbXByZXNzZWRfcG9zLAotKwkJCQkJaXRlci5ibG9jay51bmNvbXByZXNzZWRfc2l6ZSkKLSsJ ICAgICAgIT0gTFpNQV9PSykKLSsJICAgIHsKLSsJICAgICAgeGZyZWUgKGNvbXByZXNzZWQpOwot KwkgICAgICB4ZnJlZSAodW5jb21wcmVzc2VkKTsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0r Ci0rCSAgeGZyZWUgKGNvbXByZXNzZWQpOwotKwotKwkgIHhmcmVlIChsc3RyZWFtLT5kYXRhKTsK LSsJICBsc3RyZWFtLT5kYXRhID0gdW5jb21wcmVzc2VkOwotKwkgIGxzdHJlYW0tPmRhdGFfc3Rh cnQgPSBpdGVyLmJsb2NrLnVuY29tcHJlc3NlZF9maWxlX29mZnNldDsKLSsJICBsc3RyZWFtLT5k YXRhX2VuZCA9IChpdGVyLmJsb2NrLnVuY29tcHJlc3NlZF9maWxlX29mZnNldAotKwkJCSAgICAg ICArIGl0ZXIuYmxvY2sudW5jb21wcmVzc2VkX3NpemUpOwotKwl9Ci0rCi0rICAgICAgY2h1bmtf c2l6ZSA9IG1pbiAobmJ5dGVzLCBsc3RyZWFtLT5kYXRhX2VuZCAtIG9mZnNldCk7Ci0rICAgICAg bWVtY3B5IChidWYsIGxzdHJlYW0tPmRhdGEgKyBvZmZzZXQgLSBsc3RyZWFtLT5kYXRhX3N0YXJ0 LCBjaHVua19zaXplKTsKLSsgICAgICBidWYgPSAoZ2RiX2J5dGUgKikgYnVmICsgY2h1bmtfc2l6 ZTsKLSsgICAgICBvZmZzZXQgKz0gY2h1bmtfc2l6ZTsKLSsgICAgICBuYnl0ZXMgLT0gY2h1bmtf c2l6ZTsKLSsgICAgICByZXMgKz0gY2h1bmtfc2l6ZTsKLSsgICAgfQotKwotKyAgcmV0dXJuIHJl czsKLSt9Ci0rCi0rLyogYmZkX29wZW5yX2lvdmVjIENMT1NFX1AgaW1wbGVtZW50YXRpb24gZm9y Ci0rICAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2luX3NlY3Rpb24uICBQYXNzZWQgU1RSRUFN Ci0rICAgaXMgJ3N0cnVjdCBsem1hX3N0cmVhbSAqJy4gICovCi0rCi0rc3RhdGljIGludAotK2x6 bWFfY2xvc2UgKHN0cnVjdCBiZmQgKm5iZmQsCi0rCSAgICB2b2lkICpzdHJlYW0pCi0rewotKyAg c3RydWN0IGx6bWFfc3RyZWFtICpsc3RyZWFtID0gc3RyZWFtOwotKwotKyAgbHptYV9pbmRleF9l bmQgKGxzdHJlYW0tPmluZGV4LCAmZ2RiX2x6bWFfYWxsb2NhdG9yKTsKLSsgIHhmcmVlIChsc3Ry ZWFtLT5kYXRhKTsKLSsgIHhmcmVlIChsc3RyZWFtKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSsv KiBiZmRfb3BlbnJfaW92ZWMgU1RBVF9QIGltcGxlbWVudGF0aW9uIGZvcgotKyAgIGZpbmRfc2Vw YXJhdGVfZGVidWdfZmlsZV9pbl9zZWN0aW9uLiAgUGFzc2VkIFNUUkVBTQotKyAgIGlzICdzdHJ1 Y3QgbHptYV9zdHJlYW0gKicuICAqLwotKwotK3N0YXRpYyBpbnQKLStsem1hX3N0YXQgKHN0cnVj dCBiZmQgKmFiZmQsCi0rCSAgIHZvaWQgKnN0cmVhbSwKLSsJICAgc3RydWN0IHN0YXQgKnNiKQot K3sKLSsgIHN0cnVjdCBsem1hX3N0cmVhbSAqbHN0cmVhbSA9IHN0cmVhbTsKLSsKLSsgIHNiLT5z dF9zaXplID0gbHptYV9pbmRleF91bmNvbXByZXNzZWRfc2l6ZSAobHN0cmVhbS0+aW5kZXgpOwot KyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFRoaXMgbG9va3MgZm9yIGEgeHogY29tcHJlc3NlZCBz ZXBhcmF0ZSBkZWJ1ZyBpbmZvIG9iamVjdCBmaWxlIGVtYmVkZGVkCi0rICAgaW4gYSBzZWN0aW9u IGNhbGxlZCAuZ251X2RlYnVnZGF0YS4gSWYgd2UgZmluZCBvbmUgd2UgY3JlYXRlIGEgaW92ZWMK LSsgICBiYXNlZCBiZmQgdGhhdCBkZWNvbXByZXNzZXMgdGhlIG9iamVjdCBkYXRhIG9uIGRlbWFu ZC4gICovCi0rCi0rc3RhdGljIGJmZCAqCi0rZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2luX3Nl Y3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGFzZWN0aW9uICpzZWN0aW9u OwotKyAgYmZkICphYmZkOwotKwotKyAgc2VjdGlvbiA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1l IChvYmpmaWxlLT5vYmZkLCAiLmdudV9kZWJ1Z2RhdGEiKTsKLSsgIGlmIChzZWN0aW9uID09IE5V TEwpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgLyogb2JqZmlsZS0+TkFNRSBsaWZldGltZSBp cyBsb25nZXIgdGhhbiB0aGUgQUJGRCdzIGxpZmV0aW1lLiAgKi8KLSsgIGFiZmQgPSBnZGJfYmZk X29wZW5yX2lvdmVjIChvYmpmaWxlLT5uYW1lLCBnbnV0YXJnZXQsIGx6bWFfb3Blbiwgc2VjdGlv biwKLSsJCQkgICAgICBsem1hX3ByZWFkLCBsem1hX2Nsb3NlLCBsem1hX3N0YXQpOwotKyAgaWYg KGFiZmQgPT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBpZiAoIWJmZF9jaGVja19m b3JtYXQgKGFiZmQsIGJmZF9vYmplY3QpKQotKyAgICB7Ci0rICAgICAgZ2RiX2JmZF91bnJlZiAo YWJmZCk7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBhYmZkOwot K30KLSsKLSsjZWxzZSAvKiAhSEFWRV9MSUJMWk1BICovCi0rCi0rc3RhdGljIGJmZCAqCi0rZmlu ZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2luX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQotK3sKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsjZW5kaWYgLyogIUhBVkVfTElCTFpNQSAq LwotKwotIC8qIFNjYW4gYW5kIGJ1aWxkIHBhcnRpYWwgc3ltYm9scyBmb3IgYSBzeW1ib2wgZmls ZS4KLSAgICBXZSBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgYnkgYSBjYWxsIHRvIGVsZl9zeW1maWxl X2luaXQsIHdoaWNoCi0gICAgY3VycmVudGx5IGRvZXMgbm90aGluZy4KLUBAIC0yNDMzLDYgKzI2 OTMsOCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCi0gICBlbHNl IGlmICghb2JqZmlsZV9oYXNfcGFydGlhbF9zeW1ib2xzIChvYmpmaWxlKSkKLSAgICAgewotICAg ICAgIGNoYXIgKmRlYnVnZmlsZSwgKmJ1aWxkX2lkX2ZpbGVuYW1lOwotKyAgICAgIGJmZCAqYWJm ZCA9IE5VTEw7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7Ci0gCi0gICAgICAgZGVi dWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsCi0g CQkJCQkJICAgICAgICZidWlsZF9pZF9maWxlbmFtZSk7Ci1AQCAtMjQ0MCwxNCArMjcwMiwxMSBA QCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCi0gICAgICAgaWYgKGRl YnVnZmlsZSA9PSBOVUxMKQotIAlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVf YnlfZGVidWdsaW5rIChvYmpmaWxlKTsKLSAKLSsgICAgICBjbGVhbnVwID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgZGVidWdmaWxlKTsKLSAgICAgICBpZiAoZGVidWdmaWxlKQotIAl7Ci0tCSAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZWJ1Z2ZpbGUpOwot LQkgIGJmZCAqYWJmZCA9IHN5bWZpbGVfYmZkX29wZW4gKGRlYnVnZmlsZSk7Ci0tCi0rCSAgYWJm ZCA9IHN5bWZpbGVfYmZkX29wZW4gKGRlYnVnZmlsZSk7Ci0gCSAgbWFrZV9jbGVhbnVwX2JmZF91 bnJlZiAoYWJmZCk7Ci0tCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChhYmZkLCBzeW1maWxl X2ZsYWdzLCBvYmpmaWxlKTsKLS0JICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0gCX0KLSAgICAg ICAvKiBDaGVjayBpZiBhbnkgc2VwYXJhdGUgZGVidWcgaW5mbyBoYXMgYmVlbiBleHRyYWN0ZWQg b3V0LiAgKi8KLSAgICAgICBlbHNlIGlmIChiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2JqZmls ZS0+b2JmZCwgIi5nbnVfZGVidWdsaW5rIikKLUBAIC0yNDU1LDYgKzI3MTQsMTcgQEAgZWxmX3N5 bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAotIAlkZWJ1Z19wcmludF9taXNzaW5n IChvYmpmaWxlLT5uYW1lLCBidWlsZF9pZF9maWxlbmFtZSk7Ci0gCi0gICAgICAgeGZyZWUgKGJ1 aWxkX2lkX2ZpbGVuYW1lKTsKLSsKLSsgICAgICBpZiAoYWJmZCA9PSBOVUxMKQotKwl7Ci0rCSAg YWJmZCA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9pbl9zZWN0aW9uIChvYmpmaWxlKTsKLSsJ ICBtYWtlX2NsZWFudXBfYmZkX3VucmVmIChhYmZkKTsKLSsJfQotKwotKyAgICAgIGlmIChhYmZk ICE9IE5VTEwpCi0rCXN5bWJvbF9maWxlX2FkZF9zZXBhcmF0ZSAoYWJmZCwgc3ltZmlsZV9mbGFn cywgb2JqZmlsZSk7Ci0rCi0rICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotICAgICB9Ci0g Ci0gICBpZiAoc3ltdGFiX2NyZWF0ZV9kZWJ1ZykKLUluZGV4OiBnZGItNy40LjkxLjIwMTIwODAx L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZ251LWRlYnVnZGF0YS5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuNC45MS4yMDEyMDgwMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWdudS1kZWJ1 Z2RhdGEuYwkyMDEyLTA4LTAxIDE4OjQ3OjA1LjcwNTgyMDU3MiArMDIwMAotQEAgLTAsMCArMSwz MCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu Ci0rCi0rICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T RS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNpbmNsdWRl IDxzaWduYWwuaD4KLSsKLStzdGF0aWMgaW50Ci0rZGVidWdkYXRhX2Z1bmN0aW9uICh2b2lkKQot K3sKLSsgIHJldHVybiByYWlzZSAoU0lHU0VHVikgKyAxOwotK30KLSsKLStpbnQKLSttYWluICh2 b2lkKQotK3sKLSsgIHJldHVybiBkZWJ1Z2RhdGFfZnVuY3Rpb24gKCkgKyAxOwotK30KLUluZGV4 OiBnZGItNy40LjkxLjIwMTIwODAxL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZ251LWRl YnVnZGF0YS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy40LjkxLjIwMTIwODAxL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItZ251LWRlYnVnZGF0YS5leHAJMjAxMi0wOC0wMSAxODo0NzowNS43MDU4 MjA1NzIgKzAyMDAKLUBAIC0wLDAgKzEsOTEgQEAKLSsjIENvcHlyaWdodCAyMDEyIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r IwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rCi0rc3RhbmRhcmRfdGVzdGZpbGUKLSsKLStsb2FkX2xpYiBkd2FyZi5leHAKLStpZiAhW2R3 YXJmMl9zdXBwb3J0XSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK2lmIFtidWlsZF9leGVjdXRh YmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGVdIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K3Byb2MgcnVuIHsgdGVzdCBjbWRsaW5lIH0gewotKyAgICB2ZXJib3NlICJjbWRsaW5lIGlzICRj bWRsaW5lIgotKyAgICBzZXQgcmVzdWx0IFtjYXRjaCAiZXhlYyAkY21kbGluZSIgb3V0cHV0XQot KyAgICB2ZXJib3NlICJyZXN1bHQgaXMgJHJlc3VsdCIKLSsgICAgdmVyYm9zZSAib3V0cHV0IGlz ICRvdXRwdXQiCi0rICAgIGlmIHskcmVzdWx0ID09IDB9IHsKLSsJcGFzcyAkdGVzdAotKwlyZXR1 cm4gMAotKyAgICB9IGVsc2UgewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAtMQotKyAgICB9Ci0r fQotKwotK3NldCBzdHJpcF9wcm9ncmFtIFt0cmFuc2Zvcm0gc3RyaXBdCi0rc2V0IG5tX3Byb2dy YW0gW3RyYW5zZm9ybSBubV0KLSsKLSsjIEV4dHJhY3QgdGhlIGR5bmFtaWMgc3ltYm9scyBmcm9t IHRoZSBtYWluIGJpbmFyeSwgdGhlcmUgaXMgbm8gbmVlZCB0byBhbHNvIGhhdmUgdGhlc2UKLSsj IGluIHRoZSBub3JtYWwgc3ltYm9sIHRhYmxlCi0rZmlsZSBkZWxldGUgLS0gJHtiaW5maWxlfS5k eW5zeW1zCi0raWYgW3J1biAibm0gLUQiICJbdHJhbnNmb3JtIG5tXSAtRCAke2JpbmZpbGV9IC0t Zm9ybWF0PXBvc2l4IC0tZGVmaW5lZC1vbmx5IHwgYXdrIFxce3ByaW50XFwgXFxcJDFcXH0gfCBz b3J0ID4gJHtiaW5maWxlfS5keW5zeW1zIl0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBF eHRyYWN0IGFsbCB0aGUgdGV4dCAoaS5lLiBmdW5jdGlvbikgc3ltYm9scyBmcm9tIHRoZSBkZWJ1 Z2luZm8KLStmaWxlIGRlbGV0ZSAtLSAke2JpbmZpbGV9LmZ1bmNzeW1zCi0raWYgW3J1biAibm0i ICJbdHJhbnNmb3JtIG5tXSAke2JpbmZpbGV9IC0tZm9ybWF0PXBvc2l4IC0tZGVmaW5lZC1vbmx5 IHwgYXdrIFxce2lmKFxcXCQyPT1cIlRcInx8XFxcJDI9PVwidFwiKXByaW50XFwgXFxcJDFcXH0g fCBzb3J0ID4gJHtiaW5maWxlfS5mdW5jc3ltcyJdIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot KyMgS2VlcCBhbGwgdGhlIGZ1bmN0aW9uIHN5bWJvbHMgbm90IGFscmVhZHkgaW4gdGhlIGR5bmFt aWMgc3ltYm9sIHRhYmxlCi0rZmlsZSBkZWxldGUgLS0gJHtiaW5maWxlfS5rZWVwX3N5bWJvbHMK LStpZiBbcnVuICJjb21tIiAiY29tbSAtMTMgJHtiaW5maWxlfS5keW5zeW1zICR7YmluZmlsZX0u ZnVuY3N5bXMgPiAke2JpbmZpbGV9LmtlZXBfc3ltYm9scyJdIHsKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotKyMgQ29weSB0aGUgZnVsbCBkZWJ1Z2luZm8sIGtlZXBpbmcgb25seSBhIG1pbnVtYWwg c2V0IG9mIHN5bWJvbHMgYW5kIHJlbW92aW5nIHNvbWUgdW5uZWNlc3Nhcnkgc2VjdGlvbnMKLStm aWxlIGRlbGV0ZSAtLSAke2JpbmZpbGV9Lm1pbmlfZGVidWdpbmZvCi0raWYgW3J1biAib2JqY29w eSAxIiAiW3RyYW5zZm9ybSBvYmpjb3B5XSAtUyAtLXJlbW92ZS1zZWN0aW9uIC5nZGJfaW5kZXgg LS1yZW1vdmUtc2VjdGlvbiAuY29tbWVudCAtLWtlZXAtc3ltYm9scz0ke2JpbmZpbGV9LmtlZXBf c3ltYm9scyAke2JpbmZpbGV9ICR7YmluZmlsZX0ubWluaV9kZWJ1Z2luZm8iXSB7Ci0rICAgIHJl dHVybiAtMQotK30KLSsKLSsjIEdEQiBzcGVjaWZpYyAtIHdlIGRvIG5vdCBoYXZlIHNwbGl0IGV4 ZWN1dGFibGUgaW4gYWR2YW5jZS4KLStmaWxlIGRlbGV0ZSAtLSAke2JpbmZpbGV9LnN0cmlwCi0r aWYgW3J1biAic3RyaXAiICJbdHJhbnNmb3JtIHN0cmlwXSAtLXN0cmlwLWFsbCAtbyAke2JpbmZp bGV9LnN0cmlwICR7YmluZmlsZX0iXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIEluamVj dCB0aGUgY29tcHJlc3NlZCBkYXRhIGludG8gdGhlIC5nbnVfZGVidWdkYXRhIHNlY3Rpb24gb2Yg dGhlIG9yaWdpbmFsIGJpbmFyeQotK2ZpbGUgZGVsZXRlIC0tICR7YmluZmlsZX0ubWluaV9kZWJ1 Z2luZm8ueHoKLStpZiBbcnVuICJ4eiIgInh6ICR7YmluZmlsZX0ubWluaV9kZWJ1Z2luZm8iXSB7 Ci0rICAgIHJldHVybiAtMQotK30KLStmaWxlIGRlbGV0ZSAtLSAke2JpbmZpbGV9LnRlc3QKLStp ZiBbcnVuICJvYmpjb3B5IDIiICJbdHJhbnNmb3JtIG9iamNvcHldIC0tYWRkLXNlY3Rpb24gLmdu dV9kZWJ1Z2RhdGE9JHtiaW5maWxlfS5taW5pX2RlYnVnaW5mby54eiAke2JpbmZpbGV9LnN0cmlw ICR7YmluZmlsZX0udGVzdCJdIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3Rh cnQgIiR0ZXN0ZmlsZS5zdHJpcCIKLSsKLStnZGJfdGVzdCAicCBkZWJ1Z2RhdGFfZnVuY3Rpb24i IHtObyBzeW1ib2wgdGFibGUgaXMgbG9hZGVkXC4gIFVzZSB0aGUgImZpbGUiIGNvbW1hbmRcLn0g Im5vIHN5bXRhYiIKLSsKLStjbGVhbl9yZXN0YXJ0ICIkdGVzdGZpbGUudGVzdCIKLSsKLStnZGJf dGVzdCAicCBkZWJ1Z2RhdGFfZnVuY3Rpb24iIHsgPSB7PHRleHQgdmFyaWFibGUsIG5vIGRlYnVn IGluZm8+fSAweFswLTlhLWZdKyA8ZGVidWdkYXRhX2Z1bmN0aW9uPn0gImhhdmUgc3ltdGFiIgoK ZGlmZiAtLWdpdCBhL2dkYi1wcmludC1jbGFzcy5wYXRjaCBiL2dkYi1wcmludC1jbGFzcy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYxODM4MS4uMDAwMDAwMAotLS0gYS9n ZGItcHJpbnQtY2xhc3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDE2OS5odG1sCi0KLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzI3IDEyOjUzOjU3CTEuMTQ3MTgKLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEyLzA5LzI3IDE2OjA0OjE4CTEuMTQ3MTkKLSMjIC0xLDMgKzEsOCBA QAotKzIwMTItMDktMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJRml4 IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9ODQ5MzU3Ci0rCSog Y3AtdmFscHJpbnQuYyAoY3BfcHJpbnRfdmFsdWVfZmllbGRzKTogVXNlIGdldF92cHRyX2ZpZWxk bm8uCi0rCi0gMjAxMi0wOS0yNyAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5j b20+Ci0gCi0gCSogc29sLXRocmVhZC5jIChzb2xfdGhyZWFkX2ZldGNoX3JlZ2lzdGVycykKLS0t LSBzcmMvZ2RiL2NwLXZhbHByaW50LmMJMjAxMi8wNy8wNiAwNTozNjowNwkxLjg1Ci0rKysgc3Jj L2dkYi9jcC12YWxwcmludC5jCTIwMTIvMDkvMjcgMTY6MDQ6MjIJMS44NgotQEAgLTIxMCw3ICsy MTAsOSBAQAotICAgICB7Ci0gICAgICAgaW50IHN0YXRtZW1fb2JzdGFja19pbml0aWFsX3NpemUg PSAwOwotICAgICAgIGludCBzdGF0X2FycmF5X29ic3RhY2tfaW5pdGlhbF9zaXplID0gMDsKLS0g ICAgICAKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdnB0cl9iYXNldHlwZSA9IE5VTEw7Ci0rICAgICAg aW50IHZwdHJfZmllbGRubzsKLSsKLSAgICAgICBpZiAoZG9udF9wcmludF9zdGF0bWVtID09IDAp Ci0gCXsKLSAJICBzdGF0bWVtX29ic3RhY2tfaW5pdGlhbF9zaXplID0KLUBAIC0yMjUsNiArMjI3 LDcgQEAKLSAJICAgIH0KLSAJfQotIAotKyAgICAgIHZwdHJfZmllbGRubyA9IGdldF92cHRyX2Zp ZWxkbm8gKHR5cGUsICZ2cHRyX2Jhc2V0eXBlKTsKLSAgICAgICBmb3IgKGkgPSBuX2Jhc2VjbGFz c2VzOyBpIDwgbGVuOyBpKyspCi0gCXsKLSAJICAvKiBJZiByZXF1ZXN0ZWQsIHNraXAgcHJpbnRp bmcgb2Ygc3RhdGljIGZpZWxkcy4gICovCi1AQCAtMzU4LDcgKzM2MSw3IEBACi0gCQkJCQkgICB2 LCBzdHJlYW0sIHJlY3Vyc2UgKyAxLAotIAkJCQkJICAgb3B0aW9ucyk7Ci0gCQl9Ci0tCSAgICAg IGVsc2UgaWYgKGkgPT0gVFlQRV9WUFRSX0ZJRUxETk8gKHR5cGUpKQotKwkgICAgICBlbHNlIGlm IChpID09IHZwdHJfZmllbGRubyAmJiB0eXBlID09IHZwdHJfYmFzZXR5cGUpCi0gCQl7Ci0gCQkg IGludCBpX29mZnNldCA9IG9mZnNldCArIFRZUEVfRklFTERfQklUUE9TICh0eXBlLCBpKSAvIDg7 Ci0gCQkgIHN0cnVjdCB0eXBlICppX3R5cGUgPSBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpOwot IyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA5LzI2IDE5OjUwOjEyCTEuMzM5 NgotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDEyLzA5LzI3IDE2OjA0OjIyCTEu MzM5NwotIyMgLTEsMyArMSwxMCBAQAotKzIwMTItMDktMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlA cmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIuY3AvZGVyaXZhdGlvbi5leHA6IEFkZCByZWdyZXNzaW9u IHRlc3QuCi0rCSogZ2RiLmNwL2Rlcml2YXRpb24uY2MgKGNsYXNzIFZfYmFzZSwgY2xhc3MgVl9p bnRlciwgY2xhc3MKLSsJVl9kZXJpdmVkKTogTmV3LgotKwkodmRlcml2ZWQpOiBOZXcgZ2xvYmFs LgotKwotIDIwMTItMDktMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJ KiBnZGIuZHdhcmYyL2R3Mi1jb21tb24tYmxvY2suUzogTmV3IGZpbGUuCi0tLS0gc3JjL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2Rlcml2YXRpb24uY2MJMjAxMS8xMi8xMyAxNzoyMjowOAkxLjIKLSsr KyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZGVyaXZhdGlvbi5jYwkyMDEyLzA5LzI3IDE2OjA0 OjIzCTEuMwotQEAgLTExOCw4ICsxMTgsMzcgQEAKLSAgICAgCi0gfTsKLSAKLStjbGFzcyBWX2Jh c2UKLSt7Ci0rcHVibGljOgotKyAgdmlydHVhbCB2b2lkIG0oKTsKLSsgIGludCBiYXNlOwotK307 Ci0gCi0rdm9pZAotK1ZfYmFzZTo6bSgpCi0rewotK30KLSsKLStjbGFzcyBWX2ludGVyIDogcHVi bGljIHZpcnR1YWwgVl9iYXNlCi0rewotK3B1YmxpYzoKLSsgIHZpcnR1YWwgdm9pZCBmKCk7Ci0r ICBpbnQgaW50ZXI7Ci0rfTsKLSsKLSt2b2lkCi0rVl9pbnRlcjo6ZigpCi0rewotK30KLSsKLStj bGFzcyBWX2Rlcml2ZWQgOiBwdWJsaWMgVl9pbnRlcgotK3sKLStwdWJsaWM6Ci0rICBkb3VibGUg eDsKLSt9OwotIAotK1ZfZGVyaXZlZCB2ZGVyaXZlZDsKLSAKLSBpbnQgQTo6YWZvbygpIHsKLSAg ICAgcmV0dXJuIDE7Ci0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2Rlcml2YXRpb24uZXhw CTIwMTIvMDcvMTAgMTU6MTg6MTgJMS4xOQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9k ZXJpdmF0aW9uLmV4cAkyMDEyLzA5LzI3IDE2OjA0OjIzCTEuMjAKLUBAIC0xNzYsMyArMTc2LDEx IEBACi0gCi0gZ2RiX3Rlc3QgInByaW50IGdfaW5zdGFuY2UuYmZvbygpIiAiXFwkXFswLTlcXSsg PSAyIiAicHJpbnQgdmFsdWUgb2YgZ19pbnN0YW5jZS5iZm9vKCkiCi0gZ2RiX3Rlc3QgInByaW50 IGdfaW5zdGFuY2UuY2ZvbygpIiAiXFwkXFswLTlcXSsgPSAzIiAicHJpbnQgdmFsdWUgb2YgZ19p bnN0YW5jZS5jZm9vKCkiCi0rCi0rIyBUaGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciBhIGJ1 ZyB0aGF0IGNhdXNlZCBhIGNyYXNoIHdoZW4gdHJ5aW5nCi0rIyB0byBwcmludCB0aGUgdnRibCBw b2ludGVyLiAgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgb3V0cHV0IHNvIG11Y2gKLSsjIGhlcmUg KGl0IGlzIHRlc3RlZCBlbHNld2hlcmUpLCBqdXN0IHRoYXQgZ2RiIGRvZXNuJ3QgY3Jhc2guICBX ZSB0ZXN0Ci0rIyAicHR5cGUiIGZpcnN0IGJlY2F1c2UsIGJlZm9yZSB0aGUgZ2RiIGZpeCwgdGhh dCB3YXMgdGhlIG9ubHkgY29kZQotKyMgcGF0aCBjYWxsaW5nIGdldF92cHRyX2ZpZWxkbm8uCi0r Z2RiX3Rlc3QgInB0eXBlIHZkZXJpdmVkIiAidHlwZSA9IC4qIgotK2dkYl90ZXN0ICJwcmludCB2 ZGVyaXZlZCIgIiA9IHsuKiBpbnRlciA9IDAuKnggPSAwfSIKCmRpZmYgLS1naXQgYS9nZGItcmhi ejc5NTQyNC1iaXRwb3MtMDZvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTA2b2Yy NS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc1YmE5ZC4uMDAwMDAwMAot LS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMDZvZjI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMjMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNy9t c2cwMDE3My5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzIwIDE3OjU0OjA1 CTEuMTQ1MDcKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzIyIDE2OjUyOjM5CTEuMTQ1 MDgKLSMjIC0xLDMgKzEsNyBAQAotKzIwMTItMDctMjIgIFNpZGRoZXNoIFBveWFyZWthciAgPHNp ZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogc2gtdGRlcC5jIChzaF90cmVhdF9hc19mbHRfcCk6 IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgTEVOLgotKwotIDIwMTItMDctMjAgIEplZmYgS2VudG9u ICA8amtlbnRvbkB0aWxlcmEuY29tPgotIAotIAkqIHRpbGVneC1saW51eC10ZGVwLmMgKHRpbGVn eF9saW51eF9zaWdmcmFtZV9pbml0KTogRml4Ci0tLS0gc3JjL2dkYi9zaC10ZGVwLmMJMjAxMi8w Ni8wOCAxNDoyNDo1NwkxLjI0NQotKysrIHNyYy9nZGIvc2gtdGRlcC5jCTIwMTIvMDcvMjIgMTY6 NTI6NDEJMS4yNDYKLUBAIC0xMDMyLDggKzEwMzIsNiBAQAotIHN0YXRpYyBpbnQKLSBzaF90cmVh dF9hc19mbHRfcCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotLSAgaW50IGxlbiA9IFRZUEVfTEVO R1RIICh0eXBlKTsKLS0KLSAgIC8qIE9yZGluYXJ5IGZsb2F0IHR5cGVzIGFyZSBvYnZpb3VzbHkg dHJlYXRlZCBhcyBmbG9hdC4gICovCi0gICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfRkxUKQotICAgICByZXR1cm4gMTsKCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRw b3MtMDdvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTA3b2YyNS5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ5YjZmZC4uMDAwMDAwMAotLS0gYS9nZGItcmhi ejc5NTQyNC1iaXRwb3MtMDdvZjI1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBA QAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wNy9tc2cwMDE4Mi5odG1s Ci0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzIzIDE1OjI1OjExCTEuMTQ1MTQKLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA3LzIzIDE4OjA4OjI3CTEuMTQ1MTUKLSMjIC0xLDMg KzEsOSBAQAotKzIwMTItMDctMjMgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhh dC5jb20+Ci0rCi0rCSogcC12YWxwcmludC5jIChwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlKTog UmVwbGFjZSBwb3RlbnRpYWxseQotKwl1bnNhZmUgYWxsb2NhIHdpdGggeG1hbGxvYy94ZnJlZS4K LSsJKiB2YWxvcHMuYyAoc2VhcmNoX3N0cnVjdF9tZXRob2QpOiBMaWtld2lzZS4KLSsKLSAyMDEy LTA3LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSogc29saWItc3Zy NC5jIChlbmFibGVfYnJlYWspOiBVcGRhdGUuCi0tLS0gc3JjL2dkYi9wLXZhbHByaW50LmMJMjAx Mi8wNS8xOCAyMTowMjo0OQkxLjEwMAotKysrIHNyYy9nZGIvcC12YWxwcmludC5jCTIwMTIvMDcv MjMgMTg6MDg6MjkJMS4xMDEKLUBAIC03OTcsOCArNzk3LDExIEBACi0gCi0gCSAgaWYgKGJvZmZz ZXQgPCAwIHx8IGJvZmZzZXQgPj0gVFlQRV9MRU5HVEggKHR5cGUpKQotIAkgICAgewotLQkgICAg ICAvKiBGSVhNRSAoYWxsb2MpOiBub3Qgc2FmZSBpcyBiYXNlY2xhc3MgaXMgcmVhbGx5IHJlYWxs eSBiaWcuICovCi0tCSAgICAgIGdkYl9ieXRlICpidWYgPSBhbGxvY2EgKFRZUEVfTEVOR1RIIChi YXNlY2xhc3MpKTsKLSsJICAgICAgZ2RiX2J5dGUgKmJ1ZjsKLSsJICAgICAgc3RydWN0IGNsZWFu dXAgKmJhY2tfdG87Ci0rCi0rCSAgICAgIGJ1ZiA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNl Y2xhc3MpKTsKLSsJICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1Zik7Ci0g Ci0gCSAgICAgIGJhc2VfdmFsYWRkciA9IGJ1ZjsKLSAJICAgICAgaWYgKHRhcmdldF9yZWFkX21l bW9yeSAoYWRkcmVzcyArIGJvZmZzZXQsIGJ1ZiwKLUBAIC04MDcsNiArODEwLDcgQEAKLSAJICAg ICAgYWRkcmVzcyA9IGFkZHJlc3MgKyBib2Zmc2V0OwotIAkgICAgICB0aGlzb2Zmc2V0ID0gMDsK LSAJICAgICAgYm9mZnNldCA9IDA7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAJ ICAgIH0KLSAJICBlbHNlCi0gCSAgICBiYXNlX3ZhbGFkZHIgPSB2YWxhZGRyOwotLS0tIHNyYy9n ZGIvdmFsb3BzLmMJMjAxMi8wNi8yNCAwNzoyODoxMAkxLjI5NwotKysrIHNyYy9nZGIvdmFsb3Bz LmMJMjAxMi8wNy8yMyAxODowODoyOQkxLjI5OAotQEAgLTIyODEsOCArMjI4MSwxMyBAQAotIAot IAkgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+PSBUWVBFX0xFTkdUSCAodHlwZSkpCi0gCSAg ICB7Ci0tCSAgICAgIGdkYl9ieXRlICp0bXAgPSBhbGxvY2EgKFRZUEVfTEVOR1RIIChiYXNlY2xh c3MpKTsKLS0JICAgICAgQ09SRV9BRERSIGFkZHJlc3MgPSB2YWx1ZV9hZGRyZXNzICgqYXJnMXAp OwotKwkgICAgICBnZGJfYnl0ZSAqdG1wOwotKwkgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKLSsJICAgICAgQ09SRV9BRERSIGFkZHJlc3M7Ci0rCi0rCSAgICAgIHRtcCA9IHhtYWxsb2Mg KFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKLSsJICAgICAgYmFja190byA9IG1ha2VfY2xlYW51 cCAoeGZyZWUsIHRtcCk7Ci0rCSAgICAgIGFkZHJlc3MgPSB2YWx1ZV9hZGRyZXNzICgqYXJnMXAp OwotIAotIAkgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChhZGRyZXNzICsgb2Zmc2V0LAot IAkJCQkgICAgICB0bXAsIFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKSAhPSAwKQotQEAgLTIyOTMs NiArMjI5OCw3IEBACi0gCQkJCQkJCSAgYWRkcmVzcyArIG9mZnNldCk7Ci0gCSAgICAgIGJhc2Vf dmFsYWRkciA9IHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAoYmFzZV92YWwpOwotIAkgICAg ICB0aGlzX29mZnNldCA9IDA7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAJICAg IH0KLSAJICBlbHNlCi0gCSAgICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9z LTA4b2YyNS5wYXRjaCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0wOG9mMjUucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmMmY2OTEuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYno3 OTU0MjQtYml0cG9zLTA4b2YyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzOSArMCwwIEBA Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA3L21zZzAwMjEzLmh0bWwK LQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDcvMjUgMjA6MTQ6MTcJMS4xNDUzMQotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDcvMjYgMDI6MDM6MTQJMS4xNDUzMgotIyMgLTEsMyAr MSwxNyBAQAotKzIwMTItMDctMjYgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhh dC5jb20+Ci0rCi0rCSogZHdhcmYybG9jLmMgKGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxs KTogRXhwYW5kIHBhcmFtZXRlcgotKwlTSVpFIHRvIHNpemVfdC4KLSsJKGR3YXJmMl9ldmFsdWF0 ZV9sb2NfZGVzYyk6IExpa2V3aXNlLgotKwkoZHdhcmYyX2xvY19kZXNjX25lZWRzX2ZyYW1lKTog TGlrZXdpc2UuCi0rCShsb2NleHByX2Rlc2NyaWJlX2xvY2F0aW9uXzEpOiBMaWtld2lzZS4KLSsJ KiBkd2FyZjJsb2MuaCAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKTogTWFrZSBTSVpFIGFz Ci0rCXNpemVfdC4KLSsJKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbik6IExpa2V3aXNlLgot KwkqIGR3YXJmMnJlYWQuYyAoc3RydWN0IGR3YXJmX2Jsb2NrKTogTGlrZXdpc2UuCi0rCShkdW1w X2RpZV9zaGFsbG93KTogVXNlIHB1bG9uZ2VzdCB0byBwcmludCBkd2FyZl9ibG9jay5zaXplLgot KwkoZGVjb2RlX2xvY2Rlc2MpOiBFeHBhbmQgU0laRSBhbmQgSSB0byBzaXplX3QuCi0rCi0gMjAx Mi0wNy0yNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAot IAkqIGNvbnRyaWIvY2Mtd2l0aC10d2Vha3Muc2g6IFB1dCBpbnRvIGNvbW1lbnQgcGF0aCBnZGIv Y29udHJpYi8uCi0tLS0gc3JjL2dkYi9kd2FyZjJsb2MuYwkyMDEyLzA3LzEzIDIwOjE1OjUwCTEu MTUyCi0rKysgc3JjL2dkYi9kd2FyZjJsb2MuYwkyMDEyLzA3LzI2IDAyOjAzOjE2CTEuMTUzCi1A QCAtNTQsOCArNTQsOCBAQAotIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJCQkJCQkgICAgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lLAotIAkJCQkJCSAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwKLS0JCQkJCQkg ICAgdW5zaWduZWQgc2hvcnQgc2l6ZSwKLS0JCQkJCSAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSwKLSsJCQkJCQkgICAgc2l6ZV90IHNpemUsCi0rCQkJCQkJICAgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSwKLSAJCQkJCQkgICAgTE9OR0VTVCBieXRlX29m ZnNldCk7Ci0gCi0gLyogVW50aWwgdGhlc2UgaGF2ZSBmb3JtYWwgbmFtZXMsIHdlIGRlZmluZSB0 aGVzZSBoZXJlLgotQEAgLTIxMTEsNyArMjExMSw3IEBACi0gCi0gc3RhdGljIHN0cnVjdCB2YWx1 ZSAqCi0gZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0tCQkJICAgICAgIGNvbnN0IGdkYl9ieXRlICpkYXRh LCB1bnNpZ25lZCBzaG9ydCBzaXplLAotKwkJCSAgICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwg c2l6ZV90IHNpemUsCi0gCQkJICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9j dSwKLSAJCQkgICAgICAgTE9OR0VTVCBieXRlX29mZnNldCkKLSB7Ci1AQCAtMjMxMiw3ICsyMzEy LDcgQEAKLSAKLSBzdHJ1Y3QgdmFsdWUgKgotIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLS0JCQkgIGNvbnN0IGdk Yl9ieXRlICpkYXRhLCB1bnNpZ25lZCBzaG9ydCBzaXplLAotKwkJCSAgY29uc3QgZ2RiX2J5dGUg KmRhdGEsIHNpemVfdCBzaXplLAotIAkJCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVy X2N1KQotIHsKLSAgIHJldHVybiBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAodHlwZSwg ZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSwgMCk7Ci1AQCAtMjQzMyw3ICsyNDMzLDcgQEAKLSAg ICByZXF1aXJlcyBhIGZyYW1lIHRvIGV2YWx1YXRlLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0tZHdh cmYyX2xvY19kZXNjX25lZWRzX2ZyYW1lIChjb25zdCBnZGJfYnl0ZSAqZGF0YSwgdW5zaWduZWQg c2hvcnQgc2l6ZSwKLStkd2FyZjJfbG9jX2Rlc2NfbmVlZHNfZnJhbWUgKGNvbnN0IGdkYl9ieXRl ICpkYXRhLCBzaXplX3Qgc2l6ZSwKLSAJCQkgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEg KnBlcl9jdSkKLSB7Ci0gICBzdHJ1Y3QgbmVlZHNfZnJhbWVfYmF0b24gYmF0b247Ci1AQCAtMzgy Nyw3ICszODI3LDcgQEAKLSBzdGF0aWMgdm9pZAotIGxvY2V4cHJfZGVzY3JpYmVfbG9jYXRpb25f MSAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBDT1JFX0FERFIgYWRkciwKLSAJCQkgICAgIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sCi0tCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwgaW50IHNp emUsCi0rCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqZGF0YSwgc2l6ZV90IHNpemUsCi0gCQkJICAg ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWduZWQgaW50IGFkZHJfc2l6ZSwKLSAJCQkg ICAgIGludCBvZmZzZXRfc2l6ZSwgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQot IHsKLS0tLSBzcmMvZ2RiL2R3YXJmMmxvYy5oCTIwMTIvMDUvMjIgMTg6NDU6MjIJMS4zMwotKysr IHNyYy9nZGIvZHdhcmYybG9jLmgJMjAxMi8wNy8yNiAwMjowMzoxNgkxLjM0Ci1AQCAtNzcsNyAr NzcsNyBAQAotIHN0cnVjdCB2YWx1ZSAqZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKLSAJCQkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKLSAJCQkJCWNvbnN0 IGdkYl9ieXRlICpkYXRhLAotLQkJCQkJdW5zaWduZWQgc2hvcnQgc2l6ZSwKLSsJCQkJCXNpemVf dCBzaXplLAotIAkJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KTsKLSAKLSBD T1JFX0FERFIgZHdhcmYyX3JlYWRfYWRkcl9pbmRleCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1LAotQEAgLTk3LDcgKzk3LDcgQEAKLSAKLSAgIC8qIExlbmd0aCBvZiB0aGUgbG9j YXRpb24gZXhwcmVzc2lvbi4gIEZvciBvcHRpbWl6ZWQgb3V0IGV4cHJlc3Npb25zIGl0IGlzCi0g ICAgICB6ZXJvLiAgKi8KLS0gIHVuc2lnbmVkIGxvbmcgc2l6ZTsKLSsgIHNpemVfdCBzaXplOwot IAotICAgLyogVGhlIGNvbXBpbGF0aW9uIHVuaXQgY29udGFpbmluZyB0aGUgc3ltYm9sIHdob3Nl IGxvY2F0aW9uCi0gICAgICB3ZSdyZSBjb21wdXRpbmcuICAqLwotQEAgLTExNCw3ICsxMTQsNyBA QAotICAgY29uc3QgZ2RiX2J5dGUgKmRhdGE7Ci0gCi0gICAvKiBMZW5ndGggb2YgdGhlIGxvY2F0 aW9uIGxpc3QuICAqLwotLSAgdW5zaWduZWQgbG9uZyBzaXplOwotKyAgc2l6ZV90IHNpemU7Ci0g Ci0gICAvKiBUaGUgY29tcGlsYXRpb24gdW5pdCBjb250YWluaW5nIHRoZSBzeW1ib2wgd2hvc2Ug bG9jYXRpb24KLSAgICAgIHdlJ3JlIGNvbXB1dGluZy4gICovCi0tLS0gc3JjL2dkYi9kd2FyZjJy ZWFkLmMJMjAxMi8wNy8yMCAxNzozODowNAkxLjY5NwotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5j CTIwMTIvMDcvMjYgMDI6MDM6MTYJMS42OTgKLUBAIC05OTAsNyArOTkwLDcgQEAKLSAvKiBCbG9j a3MgYXJlIGEgYnVuY2ggb2YgdW50eXBlZCBieXRlcy4gICovCi0gc3RydWN0IGR3YXJmX2Jsb2Nr Ci0gICB7Ci0tICAgIHVuc2lnbmVkIGludCBzaXplOwotKyAgICBzaXplX3Qgc2l6ZTsKLSAKLSAg ICAgLyogVmFsaWQgb25seSBpZiBTSVpFIGlzIG5vdCB6ZXJvLiAgKi8KLSAgICAgZ2RiX2J5dGUg KmRhdGE7Ci1AQCAtMTYxOTcsMTIgKzE2MTk3LDEyIEBACi0gCWNhc2UgRFdfRk9STV9ibG9jazQ6 Ci0gCWNhc2UgRFdfRk9STV9ibG9jazoKLSAJY2FzZSBEV19GT1JNX2Jsb2NrMToKLS0JICBmcHJp bnRmX3VuZmlsdGVyZWQgKGYsICJibG9jazogc2l6ZSAlZCIsCi0tCQkJICAgICAgRFdfQkxPQ0sg KCZkaWUtPmF0dHJzW2ldKS0+c2l6ZSk7Ci0rCSAgZnByaW50Zl91bmZpbHRlcmVkIChmLCAiYmxv Y2s6IHNpemUgJXMiLAotKwkJCSAgICAgIHB1bG9uZ2VzdCAoRFdfQkxPQ0sgKCZkaWUtPmF0dHJz W2ldKS0+c2l6ZSkpOwotIAkgIGJyZWFrOwotIAljYXNlIERXX0ZPUk1fZXhwcmxvYzoKLS0JICBm cHJpbnRmX3VuZmlsdGVyZWQgKGYsICJleHByZXNzaW9uOiBzaXplICV1IiwKLS0JCQkgICAgICBE V19CTE9DSyAoJmRpZS0+YXR0cnNbaV0pLT5zaXplKTsKLSsJICBmcHJpbnRmX3VuZmlsdGVyZWQg KGYsICJleHByZXNzaW9uOiBzaXplICVzIiwKLSsJCQkgICAgICBwdWxvbmdlc3QgKERXX0JMT0NL ICgmZGllLT5hdHRyc1tpXSktPnNpemUpKTsKLSAJICBicmVhazsKLSAJY2FzZSBEV19GT1JNX3Jl Zl9hZGRyOgotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZiwgInJlZiBhZGRyZXNzOiAiKTsKLUBA IC0xNjc0Niw4ICsxNjc0Niw4IEBACi0gZGVjb2RlX2xvY2Rlc2MgKHN0cnVjdCBkd2FyZl9ibG9j ayAqYmxrLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSA9IGN1LT5vYmpmaWxlOwotLSAgaW50IGk7Ci0tICBpbnQgc2l6ZSA9IGJsay0+c2l6ZTsK LSsgIHNpemVfdCBpOwotKyAgc2l6ZV90IHNpemUgPSBibGstPnNpemU7Ci0gICBnZGJfYnl0ZSAq ZGF0YSA9IGJsay0+ZGF0YTsKLSAgIENPUkVfQUREUiBzdGFja1s2NF07Ci0gICBpbnQgc3RhY2tp OwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0wOW9mMjUucGF0Y2ggYi9nZGIt cmhiejc5NTQyNC1iaXRwb3MtMDlvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCA0YjE4NjZkLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0wOW9mMjUu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLWN2cy8yMDEyLTA4L21zZzAwMDg1Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdl TG9nCTIwMTIvMDgvMTAgMDU6MDM6MDcJMS4xNDU3NAotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTIvMDgvMTAgMTg6NTU6MTYJMS4xNDU3NQotIyMgLTEsMyArMSw5IEBACi0rMjAxMi0wOC0xMCAg U2lkZGhlc2ggUG95YXJla2FyICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSsKLSsJKiBweXRob24v cHktdHlwZS5jIChjb252ZXJ0X2ZpZWxkKTogVXNlIGdkYl9weV9sb25nX2Zyb21fbG9uZ2VzdAot Kwlmb3IgVFlQRV9GSUVMRF9CSVRQT1MuCi0rCSh0eXB5X2dldF9zaXplb2YpOiBMaWtld2lzZSBm b3IgVFlQRV9MRU5HVEguCi0rCi0gMjAxMi0wOC0xMCAgTWlrZSBGcnlzaW5nZXIgIDx2YXBpZXJA Z2VudG9vLm9yZz4KLSAKLSAJUFIgY2xpLzEwNDM2OgotLS0tIHNyYy9nZGIvcHl0aG9uL3B5LXR5 cGUuYwkyMDEyLzA1LzE4IDIxOjAyOjUyCTEuMzkKLSsrKyBzcmMvZ2RiL3B5dGhvbi9weS10eXBl LmMJMjAxMi8wOC8xMCAxODo1NToxOAkxLjQwCi1AQCAtMTc2LDcgKzE3Niw3IEBACi0gCX0KLSAg ICAgICBlbHNlCi0gCXsKLS0JICBhcmcgPSBQeUxvbmdfRnJvbUxvbmcgKFRZUEVfRklFTERfQklU UE9TICh0eXBlLCBmaWVsZCkpOwotKwkgIGFyZyA9IGdkYl9weV9sb25nX2Zyb21fbG9uZ2VzdCAo VFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUsIGZpZWxkKSk7Ci0gCSAgYXR0cnN0cmluZyA9ICJiaXRw b3MiOwotIAl9Ci0gCi1AQCAtNjgzLDcgKzY4Myw3IEBACi0gICAgIH0KLSAgIC8qIElnbm9yZSBl eGNlcHRpb25zLiAgKi8KLSAKLS0gIHJldHVybiBQeUxvbmdfRnJvbUxvbmcgKFRZUEVfTEVOR1RI ICh0eXBlKSk7Ci0rICByZXR1cm4gZ2RiX3B5X2xvbmdfZnJvbV9sb25nZXN0IChUWVBFX0xFTkdU SCAodHlwZSkpOwotIH0KLSAKLSBzdGF0aWMgc3RydWN0IHR5cGUgKgoKZGlmZiAtLWdpdCBhL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMG9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3Mt MTBvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzAxNDVhLi4wMDAw MDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMG9mMjUucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMTkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAx Mi0wOC9tc2cwMDE4Ny5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA4LzI0IDAz OjE3OjEyCTEuMTQ2MjgKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA4LzI0IDAzOjU3OjIy CTEuMTQ2MjkKLSMjIC0xLDMgKzEsMTEgQEAKLSsyMDEyLTA4LTI0ICBTaWRkaGVzaCBQb3lhcmVr YXIgIDxzaWRkaGVzaEByZWRoYXQuY29tPgotKwotKwkqIGg4MzAwLXRkZXAuYyAoaDgzMDBfcHVz aF9kdW1teV9jYWxsKTogUmVwbGFjZSB1bnNhZmUgYWxsb2NhCi0rCXdpdGggeG1hbGxvYy9jbGVh bnVwLgotKwkqIG10LXRkZXAuYyAobXRfcHVzaF9kdW1teV9jYWxsKTogTGlrZXdpc2UuCi0rCSog dGlsZWd4LXRkZXAuYyAodGlsZWd4X3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLgotKwkqIHhz dG9ybXkxNi10ZGVwLmMgKHhzdG9ybXkxNl9wdXNoX2R1bW15X2NhbGwpOiBMaWtld2lzZS4KLSsK LSAyMDEyLTA4LTI0ICBZYW8gUWkgIDx5YW9AY29kZXNvdXJjZXJ5LmNvbT4KLSAKLSAJKiBqdi1l eHAueSAocHVzaF9leHByZXNzaW9uX25hbWUpOiBBZGQgIi4iIGF0IHRoZSBlbmQgb2YgZXJyb3IK LS0tLSBzcmMvZ2RiL2g4MzAwLXRkZXAuYwkyMDEyLzA1LzE4IDIxOjAyOjQ3CTEuMTMzCi0rKysg c3JjL2dkYi9oODMwMC10ZGVwLmMJMjAxMi8wOC8yNCAwMzo1NzoyMgkxLjEzNAotQEAgLTY2Niwx MyArNjY2LDE1IEBACi0gCi0gICBmb3IgKGFyZ3VtZW50ID0gMDsgYXJndW1lbnQgPCBuYXJnczsg YXJndW1lbnQrKykKLSAgICAgewotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotICAg ICAgIHN0cnVjdCB0eXBlICp0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1thcmd1bWVudF0pOwotICAg ICAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICAgICAgY2hhciAqY29udGVudHMg PSAoY2hhciAqKSB2YWx1ZV9jb250ZW50cyAoYXJnc1thcmd1bWVudF0pOwotIAotICAgICAgIC8q IFBhZCB0aGUgYXJndW1lbnQgYXBwcm9wcmlhdGVseS4gICovCi0gICAgICAgaW50IHBhZGRlZF9s ZW4gPSBhbGlnbl91cCAobGVuLCB3b3Jkc2l6ZSk7Ci0tICAgICAgZ2RiX2J5dGUgKnBhZGRlZCA9 IGFsbG9jYSAocGFkZGVkX2xlbik7Ci0rICAgICAgZ2RiX2J5dGUgKnBhZGRlZCA9IHhtYWxsb2Mg KHBhZGRlZF9sZW4pOwotKyAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBwYWRk ZWQpOwotIAotICAgICAgIG1lbXNldCAocGFkZGVkLCAwLCBwYWRkZWRfbGVuKTsKLSAgICAgICBt ZW1jcHkgKGxlbiA8IHdvcmRzaXplID8gcGFkZGVkICsgcGFkZGVkX2xlbiAtIGxlbiA6IHBhZGRl ZCwKLUBAIC03MjAsNiArNzIyLDggQEAKLSAJICAgICBzdWJzZXF1ZW50IGFyZ3VtZW50cyBnbyBv biB0aGUgc3RhY2suICAqLwotIAkgIHJlZyA9IEVfQVJHTEFTVF9SRUdOVU0gKyAxOwotIAl9Ci0r Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci0gCi0gICAvKiBTdG9yZSBy ZXR1cm4gYWRkcmVzcy4gICovCi0tLS0gc3JjL2dkYi9tdC10ZGVwLmMJMjAxMi8wNS8xNiAxNDoz NTowNgkxLjQwCi0rKysgc3JjL2dkYi9tdC10ZGVwLmMJMjAxMi8wOC8yNCAwMzo1NzoyMgkxLjQx Ci1AQCAtODQ1LDE2ICs4NDUsMjAgQEAKLSAgIGZvciAoaiA9IG5hcmdzIC0gMTsgaiA+PSBpOyBq LS0pCi0gICAgIHsKLSAgICAgICBnZGJfYnl0ZSAqdmFsOwotKyAgICAgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOwotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50cyA9IHZhbHVlX2NvbnRl bnRzIChhcmdzW2pdKTsKLSAgICAgICAKLSAgICAgICAvKiBSaWdodC1qdXN0aWZ5IHRoZSB2YWx1 ZSBpbiBhbiBhbGlnbmVkLWxlbmd0aCBidWZmZXIuICAqLwotICAgICAgIHR5cGVsZW4gPSBUWVBF X0xFTkdUSCAodmFsdWVfdHlwZSAoYXJnc1tqXSkpOwotICAgICAgIHNsYWNrbGVuID0gKHdvcmRz aXplIC0gKHR5cGVsZW4gJSB3b3Jkc2l6ZSkpICUgd29yZHNpemU7Ci0tICAgICAgdmFsID0gYWxs b2NhICh0eXBlbGVuICsgc2xhY2tsZW4pOwotLSAgICAgIG1lbWNweSAodmFsLCB2YWx1ZV9jb250 ZW50cyAoYXJnc1tqXSksIHR5cGVsZW4pOwotKyAgICAgIHZhbCA9IHhtYWxsb2MgKHR5cGVsZW4g KyBzbGFja2xlbik7Ci0rICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHZhbCk7 Ci0rICAgICAgbWVtY3B5ICh2YWwsIGNvbnRlbnRzLCB0eXBlbGVuKTsKLSAgICAgICBtZW1zZXQg KHZhbCArIHR5cGVsZW4sIDAsIHNsYWNrbGVuKTsKLSAgICAgICAvKiBOb3cgd3JpdGUgdGhpcyBk YXRhIHRvIHRoZSBzdGFjay4gICovCi0gICAgICAgc3RhY2tfZGVzdCAtPSB0eXBlbGVuICsgc2xh Y2tsZW47Ci0gICAgICAgd3JpdGVfbWVtb3J5IChzdGFja19kZXN0LCB2YWwsIHR5cGVsZW4gKyBz bGFja2xlbik7Ci0rICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci0gCi0gICAv KiBGaW5hbGx5LCBpZiBhIHBhcmFtIG5lZWRzIHRvIGJlIHNwbGl0IGJldHdlZW4gcmVnaXN0ZXJz IGFuZCBzdGFjaywgCi0tLS0gc3JjL2dkYi90aWxlZ3gtdGRlcC5jCTIwMTIvMDUvMzAgMTk6MzE6 NDQJMS4xCi0rKysgc3JjL2dkYi90aWxlZ3gtdGRlcC5jCTIwMTIvMDgvMjQgMDM6NTc6MjIJMS4y Ci1AQCAtMzQzLDE2ICszNDMsMjAgQEAKLSAgIGZvciAoaiA9IG5hcmdzIC0gMTsgaiA+PSBpOyBq LS0pCi0gICAgIHsKLSAgICAgICBnZGJfYnl0ZSAqdmFsOwotKyAgICAgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOwotKyAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50cyA9IHZhbHVlX2NvbnRl bnRzIChhcmdzW2pdKTsKLSAKLSAgICAgICB0eXBlbGVuID0gVFlQRV9MRU5HVEggKHZhbHVlX2Vu Y2xvc2luZ190eXBlIChhcmdzW2pdKSk7Ci0gICAgICAgc2xhY2tsZW4gPSAoKHR5cGVsZW4gKyAz KSAmICh+MykpIC0gdHlwZWxlbjsKLS0gICAgICB2YWwgPSBhbGxvY2EgKHR5cGVsZW4gKyBzbGFj a2xlbik7Ci0tICAgICAgbWVtY3B5ICh2YWwsIHZhbHVlX2NvbnRlbnRzIChhcmdzW2pdKSwgdHlw ZWxlbik7Ci0rICAgICAgdmFsID0geG1hbGxvYyAodHlwZWxlbiArIHNsYWNrbGVuKTsKLSsgICAg ICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgdmFsKTsKLSsgICAgICBtZW1jcHkgKHZh bCwgY29udGVudHMsIHR5cGVsZW4pOwotICAgICAgIG1lbXNldCAodmFsICsgdHlwZWxlbiwgMCwg c2xhY2tsZW4pOwotIAotICAgICAgIC8qIE5vdyB3cml0ZSBkYXRhIHRvIHRoZSBzdGFjay4gIFRo ZSBzdGFjayBncm93cyBkb3dud2FyZHMuICAqLwotICAgICAgIHN0YWNrX2Rlc3QgLT0gdHlwZWxl biArIHNsYWNrbGVuOwotICAgICAgIHdyaXRlX21lbW9yeSAoc3RhY2tfZGVzdCwgdmFsLCB0eXBl bGVuICsgc2xhY2tsZW4pOwotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgICAgfQot IAotICAgLyogQWRkIDIgd29yZHMgZm9yIGxpbmthZ2Ugc3BhY2UgdG8gdGhlIHN0YWNrLiAgKi8K LS0tLSBzcmMvZ2RiL3hzdG9ybXkxNi10ZGVwLmMJMjAxMi8wNS8xNiAxNDozNTowOAkxLjExOAot KysrIHNyYy9nZGIveHN0b3JteTE2LXRkZXAuYwkyMDEyLzA4LzI0IDAzOjU3OjIyCTEuMTE5Ci1A QCAtMjc5LDE2ICsyNzksMjAgQEAKLSAgIGZvciAoaiA9IG5hcmdzIC0gMTsgaiA+PSBpOyBqLS0p Ci0gICAgIHsKLSAgICAgICBjaGFyICp2YWw7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tf dG87Ci0rICAgICAgY29uc3QgZ2RiX2J5dGUgKmJ5dGVzID0gdmFsdWVfY29udGVudHMgKGFyZ3Nb al0pOwotIAotICAgICAgIHR5cGVsZW4gPSBUWVBFX0xFTkdUSCAodmFsdWVfZW5jbG9zaW5nX3R5 cGUgKGFyZ3Nbal0pKTsKLSAgICAgICBzbGFja2xlbiA9IHR5cGVsZW4gJiAxOwotLSAgICAgIHZh bCA9IGFsbG9jYSAodHlwZWxlbiArIHNsYWNrbGVuKTsKLS0gICAgICBtZW1jcHkgKHZhbCwgdmFs dWVfY29udGVudHMgKGFyZ3Nbal0pLCB0eXBlbGVuKTsKLSsgICAgICB2YWwgPSB4bWFsbG9jICh0 eXBlbGVuICsgc2xhY2tsZW4pOwotKyAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVl LCB2YWwpOwotKyAgICAgIG1lbWNweSAodmFsLCBieXRlcywgdHlwZWxlbik7Ci0gICAgICAgbWVt c2V0ICh2YWwgKyB0eXBlbGVuLCAwLCBzbGFja2xlbik7Ci0gCi0gICAgICAgLyogTm93IHdyaXRl IHRoaXMgZGF0YSB0byB0aGUgc3RhY2suICBUaGUgc3RhY2sgZ3Jvd3MgdXB3YXJkcy4gICovCi0g ICAgICAgd3JpdGVfbWVtb3J5IChzdGFja19kZXN0LCB2YWwsIHR5cGVsZW4gKyBzbGFja2xlbik7 Ci0gICAgICAgc3RhY2tfZGVzdCArPSB0eXBlbGVuICsgc2xhY2tsZW47Ci0rICAgICAgZG9fY2xl YW51cHMgKGJhY2tfdG8pOwotICAgICB9Ci0gCi0gICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChi dWYsIHhzdG9ybXkxNl9wY19zaXplLCBieXRlX29yZGVyLCBicF9hZGRyKTsKCmRpZmYgLS1naXQg YS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTFvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0 cG9zLTExb2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU4YTVhOC4u MDAwMDAwMAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTFvZjI1LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMzQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMi0wOS9tc2cwMDA2NS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzE0 IDAwOjU0OjU3CTEuMTQ2NTYKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzE0IDA3OjAw OjM3CTEuMTQ2NTcKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTItMDktMTQgIFNpZGRoZXNoIFBveWFy ZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogcHJpbnRjbWQuYyAodWlfcHJpbnRm KTogRWxpbWluYXRlIHNpbmdsZS11c2UgdmFyaWFibGUKLSsJUEFSQU1fTEVOLgotKwotIDIwMTIt MDktMTQgIFlhbyBRaSAgPHlhb0Bjb2Rlc291cmNlcnkuY29tPgotIAkgICAgUGVkcm8gQWx2ZXMg IDxwYWx2ZXNAcmVkaGF0LmNvbT4KLSAKLS0tLSBzcmMvZ2RiL3ByaW50Y21kLmMJMjAxMi8wOS8x MSAyMToyNjoxNgkxLjIxMQotKysrIHNyYy9nZGIvcHJpbnRjbWQuYwkyMDEyLzA5LzE0IDA3OjAw OjQyCTEuMjEyCi1AQCAtMjI2Nyw3ICsyMjY3LDYgQEAKLSAKLSAJICAgICAgLyogUGFyYW1ldGVy IGRhdGEuICAqLwotIAkgICAgICBzdHJ1Y3QgdHlwZSAqcGFyYW1fdHlwZSA9IHZhbHVlX3R5cGUg KHZhbF9hcmdzW2ldKTsKLS0JICAgICAgdW5zaWduZWQgaW50IHBhcmFtX2xlbiA9IFRZUEVfTEVO R1RIIChwYXJhbV90eXBlKTsKLSAJICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRf dHlwZV9hcmNoIChwYXJhbV90eXBlKTsKLSAJICAgICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3Jk ZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwotIAotQEAgLTIzMjksOCArMjMyOCw4 IEBACi0gCi0gCSAgICAgIC8qIENvbnZlcnNpb24gYmV0d2VlbiBkaWZmZXJlbnQgREZQIHR5cGVz LiAgKi8KLSAJICAgICAgaWYgKFRZUEVfQ09ERSAocGFyYW1fdHlwZSkgPT0gVFlQRV9DT0RFX0RF Q0ZMT0FUKQotLQkJZGVjaW1hbF9jb252ZXJ0IChwYXJhbV9wdHIsIHBhcmFtX2xlbiwgYnl0ZV9v cmRlciwKLS0JCQkJIGRlYywgZGZwX2xlbiwgYnl0ZV9vcmRlcik7Ci0rCQlkZWNpbWFsX2NvbnZl cnQgKHBhcmFtX3B0ciwgVFlQRV9MRU5HVEggKHBhcmFtX3R5cGUpLAotKwkJCQkgYnl0ZV9vcmRl ciwgZGVjLCBkZnBfbGVuLCBieXRlX29yZGVyKTsKLSAJICAgICAgZWxzZQotIAkJLyogSWYgdGhp cyBpcyBhIG5vbi10cml2aWFsIGNvbnZlcnNpb24sIGp1c3Qgb3V0cHV0IDAuCi0gCQkgICBBIGNv cnJlY3QgY29udmVydGVkIHZhbHVlIGNhbiBiZSBkaXNwbGF5ZWQgYnkgZXhwbGljaXRseQoKZGlm ZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMm9mMjUucGF0Y2ggYi9nZGItcmhiejc5 NTQyNC1iaXRwb3MtMTJvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1 MGIxOWExLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMm9mMjUucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLWN2cy8yMDEyLTA5L21zZzAwMDY4Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTIvMDkvMTQgMTI6MTA6MjEJMS4xNDY1OQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkv MTQgMTI6NDY6NTUJMS4xNDY2MAotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0wOS0xNCAgU2lkZGhl c2ggUG95YXJla2FyICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSsKLSsJKiB2YWxhcml0aC5jICh2 YWx1ZV9jb25jYXQpOiBSZXBsYWNlIHVuc2FmZSBBTExPQ0Egd2l0aAotKwlYTUFMTE9DL1hGUkVF LgotKwotIDIwMTItMDktMTQgIFBlZHJvIEFsdmVzICA8cGFsdmVzQHJlZGhhdC5jb20+Ci0gCi0g CSogZ2RiLjEgKFNFRSBBTFNPKTogRXhwYW5kIHBvaW50ZXIgdG8gR0RCJ3MgVGV4aW5mbyBtYW51 YWwuCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxhcml0aC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3ZhbGFyaXRoLmMJMjAxMi0xMS0wNyAy MjowMDo0MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbGFy aXRoLmMJMjAxMi0xMS0wNyAyMjowMjoxOC42NjE3NjcyODEgKzAxMDAKLUBAIC03MTYsOSArNzE2 LDEyIEBAIHZhbHVlX2NvbmNhdCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QKLSAgICAgICBp ZiAoVFlQRV9DT0RFICh0eXBlMikgPT0gVFlQRV9DT0RFX1NUUklORwotIAkgIHx8IFRZUEVfQ09E RSAodHlwZTIpID09IFRZUEVfQ09ERV9DSEFSKQotIAl7Ci0rCSAgc3RydWN0IGNsZWFudXAgKmJh Y2tfdG87Ci0rCi0gCSAgY291bnQgPSBsb25nZXN0X3RvX2ludCAodmFsdWVfYXNfbG9uZyAoaW52 YWwxKSk7Ci0gCSAgaW52YWwybGVuID0gVFlQRV9MRU5HVEggKHR5cGUyKTsKLS0JICBwdHIgPSAo Y2hhciAqKSBhbGxvY2EgKGNvdW50ICogaW52YWwybGVuKTsKLSsJICBwdHIgPSAoY2hhciAqKSB4 bWFsbG9jIChjb3VudCAqIGludmFsMmxlbik7Ci0rCSAgYmFja190byA9IG1ha2VfY2xlYW51cCAo eGZyZWUsIHB0cik7Ci0gCSAgaWYgKFRZUEVfQ09ERSAodHlwZTIpID09IFRZUEVfQ09ERV9DSEFS KQotIAkgICAgewotIAkgICAgICBjaGFyX3R5cGUgPSB0eXBlMjsKLUBAIC03NDEsNiArNzQ0LDcg QEAgdmFsdWVfY29uY2F0IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdAotIAkJfQotIAkgICAg fQotIAkgIG91dHZhbCA9IHZhbHVlX3N0cmluZyAocHRyLCBjb3VudCAqIGludmFsMmxlbiwgY2hh cl90eXBlKTsKLSsJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gCX0KLSAgICAgICBlbHNlIGlm IChUWVBFX0NPREUgKHR5cGUyKSA9PSBUWVBFX0NPREVfQklUU1RSSU5HCi0gCSAgICAgICB8fCBU WVBFX0NPREUgKHR5cGUyKSA9PSBUWVBFX0NPREVfQk9PTCkKLUBAIC03NTUsNiArNzU5LDggQEAg dmFsdWVfY29uY2F0IChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdAotICAgZWxzZSBpZiAoVFlQ RV9DT0RFICh0eXBlMSkgPT0gVFlQRV9DT0RFX1NUUklORwotIAkgICB8fCBUWVBFX0NPREUgKHR5 cGUxKSA9PSBUWVBFX0NPREVfQ0hBUikKLSAgICAgewotKyAgICAgIHN0cnVjdCBjbGVhbnVwICpi YWNrX3RvOwotKwotICAgICAgIC8qIFdlIGhhdmUgdHdvIGNoYXJhY3RlciBzdHJpbmdzIHRvIGNv bmNhdGVuYXRlLiAgKi8KLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlMikgIT0gVFlQRV9DT0RF X1NUUklORwotIAkgICYmIFRZUEVfQ09ERSAodHlwZTIpICE9IFRZUEVfQ09ERV9DSEFSKQotQEAg LTc2Myw3ICs3NjksOCBAQCB2YWx1ZV9jb25jYXQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgc3RydWN0 Ci0gCX0KLSAgICAgICBpbnZhbDFsZW4gPSBUWVBFX0xFTkdUSCAodHlwZTEpOwotICAgICAgIGlu dmFsMmxlbiA9IFRZUEVfTEVOR1RIICh0eXBlMik7Ci0tICAgICAgcHRyID0gKGNoYXIgKikgYWxs b2NhIChpbnZhbDFsZW4gKyBpbnZhbDJsZW4pOwotKyAgICAgIHB0ciA9IChjaGFyICopIHhtYWxs b2MgKGludmFsMWxlbiArIGludmFsMmxlbik7Ci0rICAgICAgYmFja190byA9IG1ha2VfY2xlYW51 cCAoeGZyZWUsIHB0cik7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZTEpID09IFRZUEVfQ09E RV9DSEFSKQotIAl7Ci0gCSAgY2hhcl90eXBlID0gdHlwZTE7Ci1AQCAtNzg2LDYgKzc5Myw3IEBA IHZhbHVlX2NvbmNhdCAoc3RydWN0IHZhbHVlICphcmcxLCBzdHJ1Y3QKLSAJICBtZW1jcHkgKHB0 ciArIGludmFsMWxlbiwgdmFsdWVfY29udGVudHMgKGludmFsMiksIGludmFsMmxlbik7Ci0gCX0K LSAgICAgICBvdXR2YWwgPSB2YWx1ZV9zdHJpbmcgKHB0ciwgaW52YWwxbGVuICsgaW52YWwybGVu LCBjaGFyX3R5cGUpOwotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgICAgfQotICAg ZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlMSkgPT0gVFlQRV9DT0RFX0JJVFNUUklORwotIAkgICB8 fCBUWVBFX0NPREUgKHR5cGUxKSA9PSBUWVBFX0NPREVfQk9PTCkKCmRpZmYgLS1naXQgYS9nZGIt cmhiejc5NTQyNC1iaXRwb3MtMTNvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTEz b2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFlMjA5OC4uMDAwMDAw MAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTNvZjI1LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjggKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0w OS9tc2cwMDA4Mi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzE3IDA3OjE1 OjQ3CTEuMTQ2NjQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5LzE3IDA3OjI2OjU0CTEu MTQ2NjUKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTItMDktMTcgIFNpZGRoZXNoIFBveWFyZWthciAg PHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogaW5mcnVuLmMgKHJlc3RvcmVfaW5mY2FsbF9z dXNwZW5kX3N0YXRlKTogRWxpbWluYXRlIHNpbmdsZS11c2UKLSsJdmFyaWFibGUgTEVOLgotKwot IDIwMTItMDktMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LSAKLSAJUFIgMTQxMTkKLS0tLSBzcmMvZ2RiL2luZnJ1bi5jCTIwMTIvMDkvMTcgMDc6MDk6MzQJ MS41NTgKLSsrKyBzcmMvZ2RiL2luZnJ1bi5jCTIwMTIvMDkvMTcgMDc6MjY6NTUJMS41NTkKLUBA IC02Nzc3LDExICs2Nzc3LDEwIEBACi0gICBpZiAoaW5mX3N0YXRlLT5zaWdpbmZvX2dkYmFyY2gg PT0gZ2RiYXJjaCkKLSAgICAgewotICAgICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZ2RiYXJjaF9n ZXRfc2lnaW5mb190eXBlIChnZGJhcmNoKTsKLS0gICAgICBzaXplX3QgbGVuID0gVFlQRV9MRU5H VEggKHR5cGUpOwotIAotICAgICAgIC8qIEVycm9ycyBpZ25vcmVkLiAgKi8KLSAgICAgICB0YXJn ZXRfd3JpdGUgKCZjdXJyZW50X3RhcmdldCwgVEFSR0VUX09CSkVDVF9TSUdOQUxfSU5GTywgTlVM TCwKLS0JCSAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZGF0YSwgMCwgbGVuKTsKLSsJCSAgICBpbmZf c3RhdGUtPnNpZ2luZm9fZGF0YSwgMCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAgICAgfQotIAot ICAgLyogVGhlIGluZmVyaW9yIGNhbiBiZSBnb25lIGlmIHRoZSB1c2VyIHR5cGVzICJwcmludCBl eGl0KDApIgoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xNG9mMjUucGF0Y2gg Yi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTRvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBhMDlhZDVlLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0x NG9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDA4NC5odG1sCi0KLSMjIyBzcmMvZ2Ri L0NoYW5nZUxvZwkyMDEyLzA5LzE3IDA4OjQyOjA3CTEuMTQ2NjYKLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEyLzA5LzE3IDA4OjUyOjE3CTEuMTQ2NjcKLSMjIC0xLDMgKzEsMjMgQEAKLSsyMDEy LTA5LTE3ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRoYXQuY29tPgotKwotKwkq IG0yLXZhbHByaW50LmMgKG0yX3ByaW50X2FycmF5X2NvbnRlbnRzKTogRWxpbWluYXRlIHZhcmlh YmxlCi0rCUVMVExFTiBhbmQgdXNlIFRZUEVfTEVOR1RIIGRpcmVjdGx5LgotKwkobTJfdmFsX3By aW50KTogTGlrZXdpc2UuCi0rCSogbTY4ay10ZGVwLmMgKG02OGtfc3ZyNF9leHRyYWN0X3JldHVy bl92YWx1ZSk6IEVsaW1pbmF0ZQotKwl2YXJpYWJsZSBMRU4gYW5kIHVzZSBUWVBFX0xFTkdUSCBk aXJlY3RseS4KLSsJKG02OGtfc3ZyNF9zdG9yZV9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsJ KiBtaXBzLXRkZXAuYyAobWlwc19vMzJfcHVzaF9kdW1teV9jYWxsKTogRWxpbWluYXRlIHZhcmlh YmxlCi0rCUFSR0xFTiBhbmQgdXNlIFRZUEVfTEVOR1RIIGRpcmVjdGx5LgotKwkobWlwc19vNjRf cHVzaF9kdW1teV9jYWxsKTogTGlrZXdpc2UuCi0rCSogczM5MC10ZGVwIChzMzkwX2Z1bmN0aW9u X2FyZ19wYXNzX2J5X3JlZmVyZW5jZSk6IEVsaW1pbmF0ZQotKwl2YXJpYWJsZSBMRU5HVEggYW5k IHVzZSBUWVBFX0xFTkdUSCBkaXJlY3RseS4KLSsJKHMzOTBfZnVuY3Rpb25fYXJnX2Zsb2F0KTog TGlrZXdpc2UuCi0rCShzMzkwX2Z1bmN0aW9uX2FyZ19pbnRlZ2VyKTogTGlrZXdpc2UuCi0rCShz MzkwX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLgotKwkoczM5MF9yZXR1cm5fdmFsdWVfY29u dmVudGlvbik6IExpa2V3aXNlLgotKwkqIHNwdS10ZGVwLmMgKHNwdV9wdXNoX2R1bW15X2NhbGwp OiBFbGltaW5hdGUgTEVOIGFuZCB1c2UKLSsJVFlQRV9MRU5HVEggZGlyZWN0bHkuCi0rCi0gMjAx Mi0wOS0xNyAgWWFvIFFpICA8eWFvQGNvZGVzb3VyY2VyeS5jb20+Ci0gCi0gCSogY2xpL2NsaS1k ZWNvZGUuYyAoYWRkX3NldHNob3dfenVpbnRlZ2VyX3VubGltaXRlZF9jbWQpOiBOZXcuCi0tLS0g c3JjL2dkYi9tMi12YWxwcmludC5jCTIwMTIvMDgvMTYgMDc6MzY6MjAJMS40NQotKysrIHNyYy9n ZGIvbTItdmFscHJpbnQuYwkyMDEyLzA5LzE3IDA4OjUyOjE4CTEuNDYKLUBAIC0yNjksMTYgKzI2 OSwxNCBAQAotIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywK LSAJCQkgaW50IGxlbikKLSB7Ci0tICBpbnQgZWx0bGVuOwotICAgQ0hFQ0tfVFlQRURFRiAodHlw ZSk7Ci0gCi0gICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID4gMCkKLSAgICAgewotLSAgICAgIGVs dGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgICAgICBpZiAob3B0aW9ucy0+cHJldHR5cHJp bnRfYXJyYXlzKQotIAlwcmludF9zcGFjZXNfZmlsdGVyZWQgKDIgKyAyICogcmVjdXJzZSwgc3Ry ZWFtKTsKLSAgICAgICAvKiBGb3IgYW4gYXJyYXkgb2YgY2hhcnMsIHByaW50IHdpdGggc3RyaW5n IHN5bnRheC4gICovCi0tICAgICAgaWYgKGVsdGxlbiA9PSAxICYmCi0rICAgICAgaWYgKFRZUEVf TEVOR1RIICh0eXBlKSA9PSAxICYmCi0gCSAgKChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9JTlQpCi0gCSAgIHx8ICgoY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3Vh Z2VfbTIpCi0gCSAgICAgICAmJiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQ0hBUikp KQotQEAgLTMyMCw3ICszMTgsNiBAQAotICAgdW5zaWduZWQgaW50IGkgPSAwOwkvKiBOdW1iZXIg b2YgY2hhcmFjdGVycyBwcmludGVkLiAgKi8KLSAgIHVuc2lnbmVkIGxlbjsKLSAgIHN0cnVjdCB0 eXBlICplbHR0eXBlOwotLSAgdW5zaWduZWQgZWx0bGVuOwotICAgQ09SRV9BRERSIGFkZHI7Ci0g Ci0gICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zMzAsMTIgKzMyNywxMSBAQAotICAgICAg IGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPiAwICYmIFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSkgPiAwKQotIAl7Ci0gCSAgZWx0dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVf VEFSR0VUX1RZUEUgKHR5cGUpKTsKLS0JICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAoZWx0dHlwZSk7 Ci0tCSAgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpIC8gZWx0bGVuOwotKwkgIGxlbiA9IFRZUEVf TEVOR1RIICh0eXBlKSAvIFRZUEVfTEVOR1RIIChlbHR0eXBlKTsKLSAJICBpZiAob3B0aW9ucy0+ cHJldHR5cHJpbnRfYXJyYXlzKQotIAkgICAgcHJpbnRfc3BhY2VzX2ZpbHRlcmVkICgyICsgMiAq IHJlY3Vyc2UsIHN0cmVhbSk7Ci0gCSAgLyogRm9yIGFuIGFycmF5IG9mIGNoYXJzLCBwcmludCB3 aXRoIHN0cmluZyBzeW50YXguICAqLwotLQkgIGlmIChlbHRsZW4gPT0gMSAmJgotKwkgIGlmIChU WVBFX0xFTkdUSCAoZWx0dHlwZSkgPT0gMSAmJgotIAkgICAgICAoKFRZUEVfQ09ERSAoZWx0dHlw ZSkgPT0gVFlQRV9DT0RFX0lOVCkKLSAJICAgICAgIHx8ICgoY3VycmVudF9sYW5ndWFnZS0+bGFf bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfbTIpCi0gCQkgICAmJiAoVFlQRV9DT0RFIChlbHR0eXBlKSA9 PSBUWVBFX0NPREVfQ0hBUikpKQotLS0tIHNyYy9nZGIvbTY4ay10ZGVwLmMJMjAxMi8wNy8yNCAx NjozNzoyNAkxLjE1OQotKysrIHNyYy9nZGIvbTY4ay10ZGVwLmMJMjAxMi8wOS8xNyAwODo1Mjox OAkxLjE2MAotQEAgLTMxNSw3ICszMTUsNiBAQAotIG02OGtfc3ZyNF9leHRyYWN0X3JldHVybl92 YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0gCQkJ CWdkYl9ieXRlICp2YWxidWYpCi0gewotLSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsK LSAgIGdkYl9ieXRlIGJ1ZltNNjhLX01BWF9SRUdJU1RFUl9TSVpFXTsKLSAgIHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKLSAgIHN0cnVjdCBn ZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotQEAgLTMyNiw3ICsz MjUsNyBAQAotICAgICAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgTTY4S19GUDBfUkVH TlVNLCBidWYpOwotICAgICAgIGNvbnZlcnRfdHlwZWRfZmxvYXRpbmcgKGJ1ZiwgZnByZWdfdHlw ZSwgdmFsYnVmLCB0eXBlKTsKLSAgICAgfQotLSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfUFRSICYmIGxlbiA9PSA0KQotKyAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfUFRSICYmIFRZUEVfTEVOR1RIICh0eXBlKSA9PSA0KQotICAgICByZWdj YWNoZV9yYXdfcmVhZCAocmVnY2FjaGUsIE02OEtfQTBfUkVHTlVNLCB2YWxidWYpOwotICAgZWxz ZQotICAgICBtNjhrX2V4dHJhY3RfcmV0dXJuX3ZhbHVlICh0eXBlLCByZWdjYWNoZSwgdmFsYnVm KTsKLUBAIC0zNTcsNyArMzU2LDYgQEAKLSBtNjhrX3N2cjRfc3RvcmVfcmV0dXJuX3ZhbHVlIChz dHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSAJCQkgICAgICBj b25zdCBnZGJfYnl0ZSAqdmFsYnVmKQotIHsKLS0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlw ZSk7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChyZWdj YWNoZSk7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJh cmNoKTsKLSAKLUBAIC0zNjgsNyArMzY2LDcgQEAKLSAgICAgICBjb252ZXJ0X3R5cGVkX2Zsb2F0 aW5nICh2YWxidWYsIHR5cGUsIGJ1ZiwgZnByZWdfdHlwZSk7Ci0gICAgICAgcmVnY2FjaGVfcmF3 X3dyaXRlIChyZWdjYWNoZSwgTTY4S19GUDBfUkVHTlVNLCBidWYpOwotICAgICB9Ci0tICBlbHNl IGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIgJiYgbGVuID09IDQpCi0rICBl bHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9QVFIgJiYgVFlQRV9MRU5HVEgg KHR5cGUpID09IDQpCi0gICAgIHsKLSAgICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJlZ2NhY2hl LCBNNjhLX0EwX1JFR05VTSwgdmFsYnVmKTsKLSAgICAgICByZWdjYWNoZV9yYXdfd3JpdGUgKHJl Z2NhY2hlLCBNNjhLX0QwX1JFR05VTSwgdmFsYnVmKTsKLS0tLSBzcmMvZ2RiL21pcHMtdGRlcC5j CTIwMTIvMDgvMTkgMjI6MjI6NDkJMS41NjEKLSsrKyBzcmMvZ2RiL21pcHMtdGRlcC5jCTIwMTIv MDkvMTcgMDg6NTI6MTgJMS41NjIKLUBAIC01MTc0LDEzICs1MTc0LDEyIEBACi0gICBmb3IgKGFy Z251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKLSAgICAgewotICAgICAgIHN0cnVj dCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVt XSkpOwotLSAgICAgIGludCBhcmdsZW4gPSBUWVBFX0xFTkdUSCAoYXJnX3R5cGUpOwotIAotICAg ICAgIC8qIEFsaWduIHRvIGRvdWJsZS13b3JkIGlmIG5lY2Vzc2FyeS4gICovCi0gICAgICAgaWYg KG1pcHNfdHlwZV9uZWVkc19kb3VibGVfYWxpZ24gKGFyZ190eXBlKSkKLSAJbGVuID0gYWxpZ25f dXAgKGxlbiwgTUlQUzMyX1JFR1NJWkUgKiAyKTsKLSAgICAgICAvKiBBbGxvY2F0ZSBzcGFjZSBv biB0aGUgc3RhY2suICAqLwotLSAgICAgIGxlbiArPSBhbGlnbl91cCAoYXJnbGVuLCBNSVBTMzJf UkVHU0laRSk7Ci0rICAgICAgbGVuICs9IGFsaWduX3VwIChUWVBFX0xFTkdUSCAoYXJnX3R5cGUp LCBNSVBTMzJfUkVHU0laRSk7Ci0gICAgIH0KLSAgIHNwIC09IGFsaWduX3VwIChsZW4sIDE2KTsK LSAKLUBAIC01NzAzLDEwICs1NzAyLDkgQEAKLSAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwg bmFyZ3M7IGFyZ251bSsrKQotICAgICB7Ci0gICAgICAgc3RydWN0IHR5cGUgKmFyZ190eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnc1thcmdudW1dKSk7Ci0tICAgICAgaW50IGFy Z2xlbiA9IFRZUEVfTEVOR1RIIChhcmdfdHlwZSk7Ci0gCi0gICAgICAgLyogQWxsb2NhdGUgc3Bh Y2Ugb24gdGhlIHN0YWNrLiAgKi8KLS0gICAgICBsZW4gKz0gYWxpZ25fdXAgKGFyZ2xlbiwgTUlQ UzY0X1JFR1NJWkUpOwotKyAgICAgIGxlbiArPSBhbGlnbl91cCAoVFlQRV9MRU5HVEggKGFyZ190 eXBlKSwgTUlQUzY0X1JFR1NJWkUpOwotICAgICB9Ci0gICBzcCAtPSBhbGlnbl91cCAobGVuLCAx Nik7Ci0gCi0tLS0gc3JjL2dkYi9zMzkwLXRkZXAuYwkyMDEyLzA1LzE4IDIxOjAyOjUwCTEuMjA2 Ci0rKysgc3JjL2dkYi9zMzkwLXRkZXAuYwkyMDEyLzA5LzE3IDA4OjUyOjE4CTEuMjA3Ci1AQCAt MjQ4OSw4ICsyNDg5LDcgQEAKLSBzdGF0aWMgaW50Ci0gczM5MF9mdW5jdGlvbl9hcmdfcGFzc19i eV9yZWZlcmVuY2UgKHN0cnVjdCB0eXBlICp0eXBlKQotIHsKLS0gIHVuc2lnbmVkIGxlbmd0aCA9 IFRZUEVfTEVOR1RIICh0eXBlKTsKLS0gIGlmIChsZW5ndGggPiA4KQotKyAgaWYgKFRZUEVfTEVO R1RIICh0eXBlKSA+IDgpCi0gICAgIHJldHVybiAxOwotIAotICAgcmV0dXJuIChpc19zdHJ1Y3Rf bGlrZSAodHlwZSkgJiYgIWlzX3Bvd2VyX29mX3R3byAoVFlQRV9MRU5HVEggKHR5cGUpKSkKLUBA IC0yNTAzLDggKzI1MDIsNyBAQAotIHN0YXRpYyBpbnQKLSBzMzkwX2Z1bmN0aW9uX2FyZ19mbG9h dCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotLSAgdW5zaWduZWQgbGVuZ3RoID0gVFlQRV9MRU5H VEggKHR5cGUpOwotLSAgaWYgKGxlbmd0aCA+IDgpCi0rICBpZiAoVFlQRV9MRU5HVEggKHR5cGUp ID4gOCkKLSAgICAgcmV0dXJuIDA7Ci0gCi0gICByZXR1cm4gaXNfZmxvYXRfbGlrZSAodHlwZSk7 Ci1AQCAtMjUxNSwxMyArMjUxMywxMiBAQAotIHN0YXRpYyBpbnQKLSBzMzkwX2Z1bmN0aW9uX2Fy Z19pbnRlZ2VyIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSB7Ci0tICB1bnNpZ25lZCBsZW5ndGggPSBU WVBFX0xFTkdUSCAodHlwZSk7Ci0tICBpZiAobGVuZ3RoID4gOCkKLSsgIGlmIChUWVBFX0xFTkdU SCAodHlwZSkgPiA4KQotICAgICByZXR1cm4gMDsKLSAKLSAgICByZXR1cm4gaXNfaW50ZWdlcl9s aWtlICh0eXBlKQotIAkgIHx8IGlzX3BvaW50ZXJfbGlrZSAodHlwZSkKLS0JICB8fCAoaXNfc3Ry dWN0X2xpa2UgKHR5cGUpICYmIGlzX3Bvd2VyX29mX3R3byAobGVuZ3RoKSk7Ci0rCSAgfHwgKGlz X3N0cnVjdF9saWtlICh0eXBlKSAmJiBpc19wb3dlcl9vZl90d28gKFRZUEVfTEVOR1RIICh0eXBl KSkpOwotIH0KLSAKLSAvKiBSZXR1cm4gQVJHLCBhIGBTSU1QTEVfQVJHJywgc2lnbi1leHRlbmRl ZCBvciB6ZXJvLWV4dGVuZGVkIHRvIGEgZnVsbAotQEAgLTI2MTYsMTEgKzI2MTMsMTAgQEAKLSAg ICAgewotICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsKLSAgICAgICBzdHJ1Y3Qg dHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwotLSAgICAgIHVu c2lnbmVkIGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAgICAgICBpZiAoczM5MF9m dW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UgKHR5cGUpKQotICAgICAgICAgewotLSAgICAg ICAgICBzcCAtPSBsZW5ndGg7Ci0rICAgICAgICAgIHNwIC09IFRZUEVfTEVOR1RIICh0eXBlKTsK LSAgICAgICAgICAgc3AgPSBhbGlnbl9kb3duIChzcCwgYWxpZ25tZW50X29mICh0eXBlKSk7Ci0g ICAgICAgICAgIGNvcHlfYWRkcltpXSA9IHNwOwotICAgICAgICAgfQotQEAgLTI3OTksOCArMjc5 NSw3IEBACi0gc3RhdGljIGVudW0gcmV0dXJuX3ZhbHVlX2NvbnZlbnRpb24KLSBzMzkwX3JldHVy bl92YWx1ZV9jb252ZW50aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHR5cGUg KnR5cGUpCi0gewotLSAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLS0gIGlmIChs ZW5ndGggPiA4KQotKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA+IDgpCi0gICAgIHJldHVybiBS RVRVUk5fVkFMVUVfU1RSVUNUX0NPTlZFTlRJT047Ci0gCi0gICBzd2l0Y2ggKFRZUEVfQ09ERSAo dHlwZSkpCi0tLS0gc3JjL2dkYi9zcHUtdGRlcC5jCTIwMTIvMDUvMTggMjE6MDI6NTAJMS44MQot KysrIHNyYy9nZGIvc3B1LXRkZXAuYwkyMDEyLzA5LzE3IDA4OjUyOjE4CTEuODIKLUBAIC0xMzcz LDggKzEzNzMsNyBAQAotICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsKLSAgICAg ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwot ICAgICAgIGNvbnN0IGdkYl9ieXRlICpjb250ZW50cyA9IHZhbHVlX2NvbnRlbnRzIChhcmcpOwot LSAgICAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0tICAgICAgaW50IG5fcmVncyA9 IGFsaWduX3VwIChsZW4sIDE2KSAvIDE2OwotKyAgICAgIGludCBuX3JlZ3MgPSBhbGlnbl91cCAo VFlQRV9MRU5HVEggKHR5cGUpLCAxNikgLyAxNjsKLSAKLSAgICAgICAvKiBJZiB0aGUgYXJndW1l bnQgZG9lc24ndCB3aG9sbHkgZml0IGludG8gcmVnaXN0ZXJzLCBpdCBhbmQKLSAJIGFsbCBzdWJz ZXF1ZW50IGFyZ3VtZW50cyBnbyB0byB0aGUgc3RhY2suICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1y aGJ6Nzk1NDI0LWJpdHBvcy0xNW9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTVv ZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNiYTY5Li4wMDAwMDAw Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xNW9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzNiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA5 L21zZzAwMTMyLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjIgMTM6MDQ6 NTQJMS4xNDY5MQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjQgMTA6MjU6MDcJMS4x NDY5MgotIyMgLTEsMyArMSw4IEBACi0rMjAxMi0wOS0yNCAgU2lkZGhlc2ggUG95YXJla2FyICA8 c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSsKLSsJKiBtMi10eXBlcHJpbnQuYyAobTJfZW51bSk6IEV4 cGFuZCBMQVNUVkFMIHRvIExPTkdFU1QuCi0rCSogcC12YWxwcmludC5jIChwYXNjYWxfdHlwZV9w cmludF9iYXNlKTogTGlrZXdpc2UuCi0rCi0gMjAxMi0wOS0yMiAgWWFvIFFpICA8eWFvQGNvZGVz b3VyY2VyeS5jb20+Ci0gCi0gCSogcmVtb3RlLmMgKHJlbW90ZV9nZXRfdHJhY2Vfc3RhdHVzKTog UmVtb3ZlIHNldHRpbmcgZGVmYXVsdAotLS0tIHNyYy9nZGIvbTItdHlwZXByaW50LmMJMjAxMi8w NC8xOCAwNjo0Njo0NgkxLjMwCi0rKysgc3JjL2dkYi9tMi10eXBlcHJpbnQuYwkyMDEyLzA5LzI0 IDEwOjI1OjA5CTEuMzEKLUBAIC01ODcsNyArNTg3LDggQEAKLSB2b2lkCi0gbTJfZW51bSAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCBzaG93LCBpbnQgbGV2 ZWwpCi0gewotLSAgaW50IGxhc3R2YWwsIGksIGxlbjsKLSsgIExPTkdFU1QgbGFzdHZhbDsKLSsg IGludCBpLCBsZW47Ci0gCi0gICBpZiAoc2hvdyA8IDApCi0gICAgIHsKLS0tLSBzcmMvZ2RiL3At dHlwZXByaW50LmMJMjAxMi8wOC8xNiAwNzozNjoyMAkxLjQ3Ci0rKysgc3JjL2dkYi9wLXR5cGVw cmludC5jCTIwMTIvMDkvMjQgMTA6MjU6MDkJMS40OAotQEAgLTQ0MCw3ICs0NDAsNyBAQAotIHsK LSAgIGludCBpOwotICAgaW50IGxlbjsKLS0gIGludCBsYXN0dmFsOwotKyAgTE9OR0VTVCBsYXN0 dmFsOwotICAgZW51bQotICAgICB7Ci0gICAgICAgc19ub25lLCBzX3B1YmxpYywgc19wcml2YXRl LCBzX3Byb3RlY3RlZAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xNm9mMjUu cGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTZvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBhOTFkODE1Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJp dHBvcy0xNm9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA5L21zZzAwMTM4Lmh0bWwKLQotIyMjIHNy Yy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjQgMTA6MjU6MDcJMS4xNDY5MgotIyMjIHNyYy9nZGIv Q2hhbmdlTG9nCTIwMTIvMDkvMjUgMTI6MjA6MzUJMS4xNDY5MwotIyMgLTEsMyArMSw4IEBACi0r MjAxMi0wOS0yNSAgU2lkZGhlc2ggUG95YXJla2FyICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSsK LSsJKiBjLXR5cGVwcmludC5jIChjX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXgpOiBSZW1vdmUg Y2FzdCBhbmQKLSsJdXNlIHBsb25nZXN0IHRvIHByaW50IHRoZSBhcnJheSBzaXplLgotKwotIDIw MTItMDktMjQgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0gCi0g CSogbTItdHlwZXByaW50LmMgKG0yX2VudW0pOiBFeHBhbmQgTEFTVFZBTCB0byBMT05HRVNULgot SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYy10eXBlcHJpbnQuYwotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9jLXR5cGVwcmludC5jCTIwMTItMTEtMDcg MjI6MDA6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLXR5 cGVwcmludC5jCTIwMTItMTEtMDcgMjI6MDM6MzkuMjY5NjUwMTU3ICswMTAwCi1AQCAtNjMxLDcg KzYzMSw4IEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUKLSAJICAg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZhcmlhYmxlIik7Ci0gCSAgfQotIAllbHNlIGlm IChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi0tCSAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLCAoaW50KSAoaGlnaF9ib3VuZCAtIGxvd19i b3VuZCArIDEpKTsKLSsJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlcyIsIAotKwkJCSAg ICBwbG9uZ2VzdCAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpKTsKLSAJZnByaW50Zl9maWx0 ZXJlZCAoc3RyZWFtLCAiXSIpOwotIAotIAljX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0 MjQtYml0cG9zLTE3b2YyNS5wYXRjaCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xN29mMjUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYWRhNGUuLjAwMDAwMDAKLS0tIGEv Z2RiLXJoYno3OTU0MjQtYml0cG9zLTE3b2YyNS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcy OSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEyLTA5L21zZzAw MTQyLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjUgMTI6Mzg6NTUJMS4x NDY5NgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTIvMDkvMjUgMTI6NDg6NTIJMS4xNDY5Nwot IyMgLTEsMyArMSwzNiBAQAotKzIwMTItMDktMjUgIFNpZGRoZXNoIFBveWFyZWthciAgPHNpZGRo ZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogYWRhLXZhbHByaW50LmMgKGFkYV92YWxfcHJpbnRfMSk6 IEVsaW1pbmF0ZSBzaW5nbGUtdXNlCi0rCXZhcmlhYmxlIExFTi4KLSsJKiBhbHBoYS10ZGVwLmMg KGFscGhhX2V4dHJhY3RfcmV0dXJuX3ZhbHVlKTogVXNlIFRZUEVfTEVOR1RICi0rCWRpcmVjdGx5 LgotKwkoYWxwaGFfc3RvcmVfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCi0rCSogYW1kNjQtdGRl cC5jIChhbWQ2NF9jbGFzc2lmeV9hZ2dyZWdhdGUpOiBMaWtld2lzZS4KLSsJKGFtZDY0X3B1c2hf YXJndW1lbnRzKTogTGlrZXdpc2UuCi0rCSogYXgtZ2RiLmMgKGdlbl90cmFjZV9zdGF0aWNfZmll bGRzKTogTGlrZXdpc2UuCi0rCShnZW5fdHJhY2VkX3BvcCk6IExpa2V3aXNlLgotKwkqIGJmaW4t dGRlcC5jIChiZmluX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLgotKwkqIGJyZWFrcG9pbnQu YyAodXBkYXRlX3dhdGNocG9pbnQpOiBMaWtld2lzZS4KLSsJKiBmaW5kY21kLmMgKHBhcnNlX2Zp bmRfYXJncyk6IFVzZSBsb2NhbCB2YXJpYWJsZSBmb3IgdHlwZQotKwlpbnN0ZWFkIG9mIGxlbmd0 aC4KLSsJKiBmaW5kdmFyLmMgKGRlZmF1bHRfcmVhZF92YXJfdmFsdWUpOiBVc2UgVFlQRV9MRU5H VEggZGlyZWN0bHkuCi0rCSogaDgzMDAtdGRlcC5jIChoODMwMGhfZXh0cmFjdF9yZXR1cm5fdmFs dWUpOiBMaWtld2lzZS4KLSsJKGg4MzAwX3N0b3JlX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgot KwkqIGkzODYtZGFyd2luLXRkZXAuYyAoaTM4Nl9kYXJ3aW5fcHVzaF9kdW1teV9jYWxsKTogTGlr ZXdpc2UuCi0rCVVzZSBpMzg2X2Rhcndpbl9hcmdfdHlwZV9hbGlnbm1lbnQgZGlyZWN0bHkuCi0r CSogaW5mY2FsbC5jIChjYWxsX2Z1bmN0aW9uX2J5X2hhbmQpOiBVc2UgVFlQRV9MRU5HVEggZGly ZWN0bHkuCi0rCSogbG0zMi10ZGVwLmMgKGxtMzJfcHVzaF9kdW1teV9jYWxsKTogTGlrZXdpc2Uu Ci0rCSogbTY4aGMxMS10ZGVwLmMgKG02OGhjMTFfcHVzaF9kdW1teV9jYWxsKTogTGlrZXdpc2Uu Ci0rCShtNjhoYzExX2V4dHJhY3RfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCi0rCSogbWVwLXRk ZXAuYyAobWVwX3B1c2hfZHVtbXlfY2FsbCk6IExpa2V3aXNlLgotKwkqIHByaW50Y21kLmMgKGZs b2F0X3R5cGVfZnJvbV9sZW5ndGgpOiBMaWtld2lzZS4KLSsJKiBzMzkwLXRkZXAuYyAoczM5MF92 YWx1ZV9mcm9tX3JlZ2lzdGVyKTogTGlrZXdpc2UuCi0rCSogc3RhY2suYyAocmVhZF9mcmFtZV9h cmcpOiBMaWtld2lzZS4KLSsJKiB0cmFjZXBvaW50LmMgKGVuY29kZV9hY3Rpb25zXzEpOiBMaWtl d2lzZS4KLSsJKiB2YWxvcHMuYyAodmFsdWVfZmV0Y2hfbGF6eSk6IFVzZSBsb2NhbCB2YXJpYWJs ZSBmb3IgdHlwZQotKwlpbnN0ZWFkIG9mIGxlbmd0aC4gIFVzZSBUWVBFX0xFTkdUSCBkaXJlY3Rs eS4KLSsJKiB2YWx1ZS5jICh2YWx1ZV9jb250ZW50c19lcXVhbCk6IFVzZSBUWVBFX0xFTkdUSCBk aXJlY3RseS4KLSsKLSAyMDEyLTA5LTI1ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBhZGFj b3JlLmNvbT4KLSAKLSAJKiBzeW10YWIuYyAoc2tpcF9wcm9sb2d1ZV9zYWwpOiBGaXggdHlwbyBp biBjb21tZW50LgotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50LmMK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYWRhLXZhbHByaW50 LmMJMjAxMi0wNC0xOCAwODo0Njo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2FkYS12YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNjAwNjIzNTIyICsw MTAwCi1AQCAtNzMwLDkgKzczMCw4IEBAIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5 cGUsIGNvbnMKLSAgICAgICBpZiAoYWRhX2lzX2ZpeGVkX3BvaW50X3R5cGUgKHR5cGUpKQotIAl7 Ci0gCSAgTE9OR0VTVCB2ID0gdW5wYWNrX2xvbmcgKHR5cGUsIHZhbGFkZHIgKyBvZmZzZXRfYWxp Z25lZCk7Ci0tCSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLS0JICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sIGxlbiA8IDQgPyAiJS4xMWciIDogIiUuMTdnIiwKLSsJICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sIFRZUEVfTEVOR1RIICh0eXBlKSA8IDQgPyAiJS4xMWciIDog IiUuMTdnIiwKLSAJCQkgICAgKGRvdWJsZSkgYWRhX2ZpeGVkX3RvX2Zsb2F0ICh0eXBlLCB2KSk7 Ci0gCSAgcmV0dXJuOwotIAl9Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbHBoYS10 ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYWxwaGEt dGRlcC5jCTIwMTItMDUtMTYgMTY6MzU6MDIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9hbHBoYS10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny42MDI2MjM1MjAg KzAxMDAKLUBAIC00NzUsMTQgKzQ3NSwxMyBAQCBhbHBoYV9leHRyYWN0X3JldHVybl92YWx1ZSAo c3RydWN0IHR5cGUKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNo ZV9hcmNoIChyZWdjYWNoZSk7Ci0gICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFy Y2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7Ci0tICBpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHZh bHR5cGUpOwotICAgZ2RiX2J5dGUgcmF3X2J1ZmZlcltBTFBIQV9SRUdJU1RFUl9TSVpFXTsKLSAg IFVMT05HRVNUIGw7Ci0gCi0gICBzd2l0Y2ggKFRZUEVfQ09ERSAodmFsdHlwZSkpCi0gICAgIHsK LSAgICAgY2FzZSBUWVBFX0NPREVfRkxUOgotLSAgICAgIHN3aXRjaCAobGVuZ3RoKQotKyAgICAg IHN3aXRjaCAoVFlQRV9MRU5HVEggKHZhbHR5cGUpKQotIAl7Ci0gCWNhc2UgNDoKLSAJICByZWdj YWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIEFMUEhBX0ZQMF9SRUdOVU0sIHJhd19idWZmZXIp OwotQEAgLTUwNSw3ICs1MDQsNyBAQCBhbHBoYV9leHRyYWN0X3JldHVybl92YWx1ZSAoc3RydWN0 IHR5cGUKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBUWVBFX0NPREVfQ09NUExFWDoKLS0g ICAgICBzd2l0Y2ggKGxlbmd0aCkKLSsgICAgICBzd2l0Y2ggKFRZUEVfTEVOR1RIICh2YWx0eXBl KSkKLSAJewotIAljYXNlIDg6Ci0gCSAgLyogPz8/IFRoaXMgaXNuJ3QgY29ycmVjdCB3cnQgdGhl IEFCSSwgYnV0IGl0J3Mgd2hhdCBHQ0MgZG9lcy4gICovCi1AQCAtNTMxLDcgKzUzMCw3IEBAIGFs cGhhX2V4dHJhY3RfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZQotICAgICBkZWZhdWx0OgotICAg ICAgIC8qIEFzc3VtZSBldmVyeXRoaW5nIGVsc2UgZGVnZW5lcmF0ZXMgdG8gYW4gaW50ZWdlci4g ICovCi0gICAgICAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCBBTFBI QV9WMF9SRUdOVU0sICZsKTsKLS0gICAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWxidWYs IGxlbmd0aCwgYnl0ZV9vcmRlciwgbCk7Ci0rICAgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAo dmFsYnVmLCBUWVBFX0xFTkdUSCAodmFsdHlwZSksIGJ5dGVfb3JkZXIsIGwpOwotICAgICAgIGJy ZWFrOwotICAgICB9Ci0gfQotQEAgLTU0NCwxNCArNTQzLDEzIEBAIGFscGhhX3N0b3JlX3JldHVy bl92YWx1ZSAoc3RydWN0IHR5cGUgKnYKLSAJCQkgIGNvbnN0IGdkYl9ieXRlICp2YWxidWYpCi0g ewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2Fj aGUpOwotLSAgaW50IGxlbmd0aCA9IFRZUEVfTEVOR1RIICh2YWx0eXBlKTsKLSAgIGdkYl9ieXRl IHJhd19idWZmZXJbQUxQSEFfUkVHSVNURVJfU0laRV07Ci0gICBVTE9OR0VTVCBsOwotIAotICAg c3dpdGNoIChUWVBFX0NPREUgKHZhbHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgVFlQRV9DT0RF X0ZMVDoKLS0gICAgICBzd2l0Y2ggKGxlbmd0aCkKLSsgICAgICBzd2l0Y2ggKFRZUEVfTEVOR1RI ICh2YWx0eXBlKSkKLSAJewotIAljYXNlIDQ6Ci0gCSAgYWxwaGFfbGRzIChnZGJhcmNoLCByYXdf YnVmZmVyLCB2YWxidWYpOwotQEAgLTU3NSw3ICs1NzMsNyBAQCBhbHBoYV9zdG9yZV9yZXR1cm5f dmFsdWUgKHN0cnVjdCB0eXBlICp2Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgVFlQRV9D T0RFX0NPTVBMRVg6Ci0tICAgICAgc3dpdGNoIChsZW5ndGgpCi0rICAgICAgc3dpdGNoIChUWVBF X0xFTkdUSCAodmFsdHlwZSkpCi0gCXsKLSAJY2FzZSA4OgotIAkgIC8qID8/PyBUaGlzIGlzbid0 IGNvcnJlY3Qgd3J0IHRoZSBBQkksIGJ1dCBpdCdzIHdoYXQgR0NDIGRvZXMuICAqLwotQEAgLTYw Myw3ICs2MDEsNyBAQCBhbHBoYV9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICp2Ci0g ICAgICAgLyogQXNzdW1lIGV2ZXJ5dGhpbmcgZWxzZSBkZWdlbmVyYXRlcyB0byBhbiBpbnRlZ2Vy LiAgKi8KLSAgICAgICAvKiAzMi1iaXQgdmFsdWVzIG11c3QgYmUgc2lnbi1leHRlbmRlZCB0byA2 NCBiaXRzCi0gCSBldmVuIGlmIHRoZSBiYXNlIGRhdGEgdHlwZSBpcyB1bnNpZ25lZC4gICovCi0t ICAgICAgaWYgKGxlbmd0aCA9PSA0KQotKyAgICAgIGlmIChUWVBFX0xFTkdUSCAodmFsdHlwZSkg PT0gNCkKLSAJdmFsdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50MzI7 Ci0gICAgICAgbCA9IHVucGFja19sb25nICh2YWx0eXBlLCB2YWxidWYpOwotICAgICAgIHJlZ2Nh Y2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEFMUEhBX1YwX1JFR05VTSwgbCk7 Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbWQ2NC10ZGVwLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYW1kNjQtdGRlcC5jCTIwMTItMTEtMDcg MjI6MDA6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbWQ2 NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny42MjM2MjM0ODkgKzAxMDAKLUBAIC00NDYsMTIg KzQ0NiwxMCBAQCBhbWQ2NF9ub25fcG9kX3AgKHN0cnVjdCB0eXBlICp0eXBlKQotIHN0YXRpYyB2 b2lkCi0gYW1kNjRfY2xhc3NpZnlfYWdncmVnYXRlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51bSBh bWQ2NF9yZWdfY2xhc3MgY2xhc3NbMl0pCi0gewotLSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0 eXBlKTsKLS0KLSAgIC8qIDEuIElmIHRoZSBzaXplIG9mIGFuIG9iamVjdCBpcyBsYXJnZXIgdGhh biB0d28gZWlnaHRieXRlcywgb3IgaW4KLSAgICAgICAgIEMrKywgaXMgYSBub24tUE9EIHN0cnVj dHVyZSBvciB1bmlvbiB0eXBlLCBvciBjb250YWlucwotICAgICAgICAgdW5hbGlnbmVkIGZpZWxk cywgaXQgaGFzIGNsYXNzIG1lbW9yeS4gICovCi0tICBpZiAobGVuID4gMTYgfHwgYW1kNjRfbm9u X3BvZF9wICh0eXBlKSkKLSsgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPiAxNiB8fCBhbWQ2NF9u b25fcG9kX3AgKHR5cGUpKQotICAgICB7Ci0gICAgICAgY2xhc3NbMF0gPSBjbGFzc1sxXSA9IEFN RDY0X01FTU9SWTsKLSAgICAgICByZXR1cm47Ci1AQCAtNDcxLDcgKzQ2OSw3IEBAIGFtZDY0X2Ns YXNzaWZ5X2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnQKLSAKLSAgICAgICAvKiBBbGwgZmllbGRz IGluIGFuIGFycmF5IGhhdmUgdGhlIHNhbWUgdHlwZS4gICovCi0gICAgICAgYW1kNjRfY2xhc3Np ZnkgKHN1YnR5cGUsIGNsYXNzKTsKLS0gICAgICBpZiAobGVuID4gOCAmJiBjbGFzc1sxXSA9PSBB TUQ2NF9OT19DTEFTUykKLSsgICAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID4gOCAmJiBjbGFz c1sxXSA9PSBBTUQ2NF9OT19DTEFTUykKLSAJY2xhc3NbMV0gPSBjbGFzc1swXTsKLSAgICAgfQot ICAgZWxzZQotQEAgLTgzOSwxMCArODM3LDkgQEAgYW1kNjRfcHVzaF9hcmd1bWVudHMgKHN0cnVj dCByZWdjYWNoZSAqcgotICAgICB7Ci0gICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90 eXBlIChzdGFja19hcmdzW2ldKTsKLSAgICAgICBjb25zdCBnZGJfYnl0ZSAqdmFsYnVmID0gdmFs dWVfY29udGVudHMgKHN0YWNrX2FyZ3NbaV0pOwotLSAgICAgIGludCBsZW4gPSBUWVBFX0xFTkdU SCAodHlwZSk7Ci0gICAgICAgQ09SRV9BRERSIGFyZ19hZGRyID0gc3AgKyBlbGVtZW50ICogODsK LSAKLS0gICAgICB3cml0ZV9tZW1vcnkgKGFyZ19hZGRyLCB2YWxidWYsIGxlbik7Ci0rICAgICAg d3JpdGVfbWVtb3J5IChhcmdfYWRkciwgdmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSkpOwotICAg ICAgIGlmIChhcmdfYWRkcl9yZWdub1tpXSA+PSAwKQotICAgICAgICAgewotICAgICAgICAgICAv KiBXZSBhbHNvIG5lZWQgdG8gc3RvcmUgdGhlIGFkZHJlc3Mgb2YgdGhhdCBhcmd1bWVudCBpbgot QEAgLTg1Myw3ICs4NTAsNyBAQCBhbWQ2NF9wdXNoX2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hl ICpyCi0gICAgICAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGJ1ZiwgOCwgYnl0ZV9vcmRl ciwgYXJnX2FkZHIpOwotICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hl LCBhcmdfYWRkcl9yZWdub1tpXSwgYnVmKTsKLSAgICAgICAgIH0KLS0gICAgICBlbGVtZW50ICs9 ICgobGVuICsgNykgLyA4KTsKLSsgICAgICBlbGVtZW50ICs9ICgoVFlQRV9MRU5HVEggKHR5cGUp ICsgNykgLyA4KTsKLSAgICAgfQotIAotICAgLyogVGhlIHBzQUJJIHNheXMgdGhhdCAiRm9yIGNh bGxzIHRoYXQgbWF5IGNhbGwgZnVuY3Rpb25zIHRoYXQgdXNlCi1JbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9heC1nZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5v cmlnL2dkYi9heC1nZGIuYwkyMDEyLTA3LTA1IDAzOjAzOjAxLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXgtZ2RiLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny42MjY2 MjM0ODQgKzAxMDAKLUBAIC0zNjcsOSArMzY3LDkgQEAgZ2VuX3RyYWNlX3N0YXRpY19maWVsZHMg KHN0cnVjdCBnZGJhcmNoCi0gCSAgICB7Ci0gCSAgICBjYXNlIGF4c19sdmFsdWVfbWVtb3J5Ogot IAkgICAgICB7Ci0tCQlpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHZh bHVlLnR5cGUpKTsKLS0KLS0JCWF4X2NvbnN0X2wgKGF4LCBsZW5ndGgpOwotKwkgICAgICAgIC8q IEluaXRpYWxpemUgdGhlIFRZUEVfTEVOR1RIIGlmIGl0IGlzIGEgdHlwZWRlZi4gICovCi0rCSAg ICAgICAgY2hlY2tfdHlwZWRlZiAodmFsdWUudHlwZSk7Ci0rCQlheF9jb25zdF9sIChheCwgVFlQ RV9MRU5HVEggKHZhbHVlLnR5cGUpKTsKLSAJCWF4X3NpbXBsZSAoYXgsIGFvcF90cmFjZSk7Ci0g CSAgICAgIH0KLSAJICAgICAgYnJlYWs7Ci1AQCAtNDI1LDE3ICs0MjUsMTggQEAgZ2VuX3RyYWNl ZF9wb3AgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAotICAgICAgIGNhc2UgYXhzX2x2YWx1 ZV9tZW1vcnk6Ci0gCXsKLS0JICBpbnQgbGVuZ3RoID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVk ZWYgKHZhbHVlLT50eXBlKSk7Ci0tCi0gCSAgaWYgKHN0cmluZ190cmFjZSkKLSAJICAgIGF4X3Np bXBsZSAoYXgsIGFvcF9kdXApOwotIAotKwkgIC8qIEluaXRpYWxpemUgdGhlIFRZUEVfTEVOR1RI IGlmIGl0IGlzIGEgdHlwZWRlZi4gICovCi0rCSAgY2hlY2tfdHlwZWRlZiAodmFsdWUtPnR5cGUp OwotKwotIAkgIC8qIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gdHJ5aW5nIHRvIHVzZSBhIHRyYWNlX3F1 aWNrIGJ5dGVjb2RlCi0gCSAgICAgaGVyZSwgc2luY2UgInRyYWNlX3F1aWNrIFNJWkUgcG9wIiBp cyB0aHJlZSBieXRlcywgd2hlcmVhcwotIAkgICAgICJjb25zdDggU0laRSB0cmFjZSIgaXMgYWxz byB0aHJlZSBieXRlcywgZG9lcyB0aGUgc2FtZQotIAkgICAgIHRoaW5nLCBhbmQgdGhlIHNpbXBs ZXN0IGNvZGUgd2hpY2ggZ2VuZXJhdGVzIHRoYXQgd2lsbCBhbHNvCi0gCSAgICAgd29yayBjb3Jy ZWN0bHkgZm9yIG9iamVjdHMgd2l0aCBsYXJnZSBzaXplcy4gICovCi0tCSAgYXhfY29uc3RfbCAo YXgsIGxlbmd0aCk7Ci0rCSAgYXhfY29uc3RfbCAoYXgsIFRZUEVfTEVOR1RIICh2YWx1ZS0+dHlw ZSkpOwotIAkgIGF4X3NpbXBsZSAoYXgsIGFvcF90cmFjZSk7Ci0gCi0gCSAgaWYgKHN0cmluZ190 cmFjZSkKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2JmaW4tdGRlcC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2JmaW4tdGRlcC5jCTIwMTItMDUt MTYgMTY6MzU6MDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9i ZmluLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjY0MzYyMzQ2MCArMDEwMAotQEAgLTUxMyw5 ICs1MTMsOCBAQCBiZmluX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCi0gICBm b3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotICAgICB7Ci0gICAgICAgc3RydWN0IHR5 cGUgKnZhbHVlX3R5cGUgPSB2YWx1ZV9lbmNsb3NpbmdfdHlwZSAoYXJnc1tpXSk7Ci0tICAgICAg aW50IGxlbiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlKTsKLSAKLS0gICAgICB0b3RhbF9sZW4g Kz0gKGxlbiArIDMpICYgfjM7Ci0rICAgICAgdG90YWxfbGVuICs9IChUWVBFX0xFTkdUSCAodmFs dWVfdHlwZSkgKyAzKSAmIH4zOwotICAgICB9Ci0gCi0gICAvKiBBdCBsZWFzdCB0d2VsdmUgYnl0 ZXMgb2Ygc3RhY2sgc3BhY2UgbXVzdCBiZSBhbGxvY2F0ZWQgZm9yIHRoZSBmdW5jdGlvbidzCi1A QCAtNTMxLDggKzUzMCw3IEBAIGJmaW5fcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAq Z2QKLSAgICAgewotICAgICAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0gdmFsdWVfZW5jbG9z aW5nX3R5cGUgKGFyZ3NbaV0pOwotICAgICAgIHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUpOwotLSAgICAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodmFs dWVfdHlwZSk7Ci0tICAgICAgaW50IGNvbnRhaW5lcl9sZW4gPSAobGVuICsgMykgJiB+MzsKLSsg ICAgICBpbnQgY29udGFpbmVyX2xlbiA9IChUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSkgKyAzKSAm IH4zOwotIAotICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47Ci0gICAgICAgd3JpdGVfbWVtb3J5 IChzcCwgdmFsdWVfY29udGVudHNfd3JpdGVhYmxlIChhcmdzW2ldKSwgY29udGFpbmVyX2xlbik7 Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9icmVha3BvaW50LmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTItMTEtMDcg MjI6MDA6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9icmVh a3BvaW50LmMJMjAxMi0xMS0wNyAyMjowMzo1Ny42NjA2MjM0MzQgKzAxMDAKLUBAIC0xODQ0LDEx ICsxODQ0LDEwIEBAIHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3Qgd2F0Y2hwb2ludCAqYiwKLSAJ CSAgICAgICYmIFRZUEVfQ09ERSAodnR5cGUpICE9IFRZUEVfQ09ERV9BUlJBWSkpCi0gCQl7Ci0g CQkgIENPUkVfQUREUiBhZGRyOwotLQkJICBpbnQgbGVuLCB0eXBlOwotKwkJICBpbnQgdHlwZTsK LSAJCSAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2MsICoqdG1wOwotIAotIAkJICBhZGRyID0gdmFs dWVfYWRkcmVzcyAodik7Ci0tCQkgIGxlbiA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlICh2KSk7 Ci0gCQkgIHR5cGUgPSBod193cml0ZTsKLSAJCSAgaWYgKGItPmJhc2UudHlwZSA9PSBicF9yZWFk X3dhdGNocG9pbnQpCi0gCQkgICAgdHlwZSA9IGh3X3JlYWQ7Ci1AQCAtMTg2Myw3ICsxODYyLDcg QEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCB3YXRjaHBvaW50ICpiLAotIAotIAkJICBsb2Mt PnBzcGFjZSA9IGZyYW1lX3BzcGFjZTsKLSAJCSAgbG9jLT5hZGRyZXNzID0gYWRkcjsKLS0JCSAg bG9jLT5sZW5ndGggPSBsZW47Ci0rCQkgIGxvYy0+bGVuZ3RoID0gVFlQRV9MRU5HVEggKHZhbHVl X3R5cGUgKHYpKTsKLSAJCSAgbG9jLT53YXRjaHBvaW50X3R5cGUgPSB0eXBlOwotIAkJfQotIAkg ICAgfQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZmluZGNtZC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2ZpbmRjbWQuYwkyMDEyLTA3LTA2IDE3 OjUxOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZmluZGNt ZC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNjc2NjIzNDExICswMTAwCi1AQCAtMTY5LDE5ICsxNjks MTkgQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBVTE9OR0VTVCAqbQotICAgd2hpbGUg KCpzICE9ICdcMCcpCi0gICAgIHsKLSAgICAgICBMT05HRVNUIHg7Ci0tICAgICAgaW50IHZhbF9i eXRlczsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdDsKLSAgICAgICBVTE9OR0VTVCBwYXR0ZXJuX2J1 Zl9zaXplX25lZWQ7Ci0gCi0gICAgICAgd2hpbGUgKGlzc3BhY2UgKCpzKSkKLSAJKytzOwotIAot ICAgICAgIHYgPSBwYXJzZV90b19jb21tYV9hbmRfZXZhbCAoJnMpOwotLSAgICAgIHZhbF9ieXRl cyA9IFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlICh2KSk7Ci0rICAgICAgdCA9IHZhbHVlX3R5cGUg KHYpOwotIAotICAgICAgIC8qIEtlZXAgaXQgc2ltcGxlIGFuZCBhc3N1bWUgc2l6ZSA9PSAnZycg d2hlbiB3YXRjaGluZyBmb3Igd2hlbiB3ZQotIAkgbmVlZCB0byBncm93IHRoZSBwYXR0ZXJuIGJ1 Zi4gICovCi0gICAgICAgcGF0dGVybl9idWZfc2l6ZV9uZWVkID0gKHBhdHRlcm5fYnVmX2VuZCAt IHBhdHRlcm5fYnVmCi0tCQkJICAgICAgICsgbWF4ICh2YWxfYnl0ZXMsIHNpemVvZiAoaW50NjRf dCkpKTsKLSsJCQkgICAgICAgKyBtYXggKFRZUEVfTEVOR1RIICh0KSwgc2l6ZW9mIChpbnQ2NF90 KSkpOwotICAgICAgIGlmIChwYXR0ZXJuX2J1Zl9zaXplX25lZWQgPiBwYXR0ZXJuX2J1Zl9zaXpl KQotIAl7Ci0gCSAgc2l6ZV90IGN1cnJlbnRfb2Zmc2V0ID0gcGF0dGVybl9idWZfZW5kIC0gcGF0 dGVybl9idWY7Ci1AQCAtMjE1LDggKzIxNSw4IEBAIHBhcnNlX2ZpbmRfYXJncyAoY2hhciAqYXJn cywgVUxPTkdFU1QgKm0KLSAJfQotICAgICAgIGVsc2UKLSAJewotLQkgIG1lbWNweSAocGF0dGVy bl9idWZfZW5kLCB2YWx1ZV9jb250ZW50cyAodiksIHZhbF9ieXRlcyk7Ci0tCSAgcGF0dGVybl9i dWZfZW5kICs9IHZhbF9ieXRlczsKLSsJICBtZW1jcHkgKHBhdHRlcm5fYnVmX2VuZCwgdmFsdWVf Y29udGVudHMgKHYpLCBUWVBFX0xFTkdUSCAodCkpOwotKwkgIHBhdHRlcm5fYnVmX2VuZCArPSBU WVBFX0xFTkdUSCAodCk7Ci0gCX0KLSAKLSAgICAgICBpZiAoKnMgPT0gJywnKQotSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvaDgzMDAtdGRlcC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2g4MzAwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAwOjQ0LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaDgzMDAtdGRlcC5jCTIw MTItMTEtMDcgMjI6MDM6NTcuNjc5NjIzNDA5ICswMTAwCi1AQCAtNzg1LDE2ICs3ODUsMTUgQEAg aDgzMDBoX2V4dHJhY3RfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgdHlwZQotIHsKLSAgIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKLSAgIGVudW0g YmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKLS0g IGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICBVTE9OR0VTVCBjOwotIAotLSAgc3dp dGNoIChsZW4pCi0rICBzd2l0Y2ggKFRZUEVfTEVOR1RIICh0eXBlKSkKLSAgICAgewotICAgICBj YXNlIDE6Ci0gICAgIGNhc2UgMjoKLSAgICAgY2FzZSA0OgotICAgICAgIHJlZ2NhY2hlX2Nvb2tl ZF9yZWFkX3Vuc2lnbmVkIChyZWdjYWNoZSwgRV9SRVQwX1JFR05VTSwgJmMpOwotLSAgICAgIHN0 b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbGJ1ZiwgbGVuLCBieXRlX29yZGVyLCBjKTsKLSsgICAg ICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWxidWYsIFRZUEVfTEVOR1RIICh0eXBlKSwgYnl0 ZV9vcmRlciwgYyk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgODoJCQkvKiBsb25nIGxvbmcg aXMgbm93IDggYnl0ZXMuICAqLwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9JTlQpCi1AQCAtODUyLDE4ICs4NTEsMTcgQEAgaDgzMDBfc3RvcmVfcmV0dXJuX3ZhbHVl IChzdHJ1Y3QgdHlwZSAqdAotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3Jl Z2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKLSAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0g Z2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKLS0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAo dHlwZSk7Ci0gICBVTE9OR0VTVCB2YWw7Ci0gCi0tICBzd2l0Y2ggKGxlbikKLSsgIHN3aXRjaCAo VFlQRV9MRU5HVEggKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgMToKLSAgICAgY2FzZSAyOgkJ CS8qIHNob3J0Li4uICAqLwotLSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAo dmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRf aW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIpOwotICAgICAg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVUMF9SRUdOVU0s IHZhbCk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgNDoJCQkvKiBsb25nLCBmbG9hdCAqLwot LSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVf b3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBU WVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93 cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVUMF9SRUdOVU0sCi0gCQkJCSAgICAgICh2YWwg Pj4gMTYpICYgMHhmZmZmKTsKLSAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQg KHJlZ2NhY2hlLCBFX1JFVDFfUkVHTlVNLCB2YWwgJiAweGZmZmYpOwotQEAgLTg4MiwxOSArODgw LDE4IEBAIGg4MzAwaF9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlICoKLSB7Ci0gICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7Ci0g ICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJj aCk7Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotICAgVUxPTkdFU1QgdmFsOwot IAotLSAgc3dpdGNoIChsZW4pCi0rICBzd2l0Y2ggKFRZUEVfTEVOR1RIICh0eXBlKSkKLSAgICAg ewotICAgICBjYXNlIDE6Ci0gICAgIGNhc2UgMjoKLSAgICAgY2FzZSA0OgkJCS8qIGxvbmcsIGZs b2F0ICovCi0tICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyICh2YWxidWYsIGxl biwgYnl0ZV9vcmRlcik7Ci0rICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyICh2 YWxidWYsIFRZUEVfTEVOR1RIICh0eXBlKSwgYnl0ZV9vcmRlcik7Ci0gICAgICAgcmVnY2FjaGVf Y29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgRV9SRVQwX1JFR05VTSwgdmFsKTsKLSAg ICAgICBicmVhazsKLSAgICAgY2FzZSA4OgotLSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRf aW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJhY3Rf dW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIp OwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVU MF9SRUdOVU0sCi0gCQkJCSAgICAgICh2YWwgPj4gMzIpICYgMHhmZmZmZmZmZik7Ci0gICAgICAg cmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgRV9SRVQxX1JFR05VTSwK LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9pMzg2LWRhcndpbi10ZGVwLmMJ MjAxMi0wNC0wMiAxNToxNTo0OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjY4MDYyMzQwNyAr MDEwMAotQEAgLTE5NiwxMyArMTk2LDEyIEBAIGkzODZfZGFyd2luX3B1c2hfZHVtbXlfY2FsbCAo c3RydWN0IGdkYmEKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg ICB7Ci0tICAgICAgICAgICAgICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKGFyZ190eXBlKTsKLS0g ICAgICAgICAgICAgIGludCBhbGlnbiA9IGkzODZfZGFyd2luX2FyZ190eXBlX2FsaWdubWVudCAo YXJnX3R5cGUpOwotLQotLSAgICAgICAgICAgICAgYXJnc19zcGFjZSA9IGFsaWduX3VwIChhcmdz X3NwYWNlLCBhbGlnbik7Ci0rICAgICAgICAgICAgICBhcmdzX3NwYWNlID0gYWxpZ25fdXAgKGFy Z3Nfc3BhY2UsCi0rCQkJCSAgICAgaTM4Nl9kYXJ3aW5fYXJnX3R5cGVfYWxpZ25tZW50IChhcmdf dHlwZSkpOwotICAgICAgICAgICAgICAgaWYgKHdyaXRlX3Bhc3MpCi0gICAgICAgICAgICAgICAg IHdyaXRlX21lbW9yeSAoc3AgKyBhcmdzX3NwYWNlLAotLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHVlX2NvbnRlbnRzX2FsbCAoYXJnc1tpXSksIGxlbik7Ci0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmFsdWVfY29udGVudHNfYWxsIChhcmdzW2ldKSwKLSsJCQkgICAg ICBUWVBFX0xFTkdUSCAoYXJnX3R5cGUpKTsKLSAKLSAgICAgICAgICAgICAgIC8qIFRoZSBTeXN0 ZW0gViBBQkkgc2F5cyB0aGF0OgotICAgICAgICAgICAgICAgICAgCi1AQCAtMjExLDcgKzIxMCw3 IEBAIGkzODZfZGFyd2luX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmEKLSAgICAgICAgICAg ICAgICAgIGRlcGVuZGluZyBvbiB0aGUgc2l6ZSBvZiB0aGUgYXJndW1lbnQuIgotICAgICAgICAg ICAgICAgICAgCi0gICAgICAgICAgICAgICAgICBUaGlzIG1ha2VzIHN1cmUgdGhlIHN0YWNrIHN0 YXlzIHdvcmQtYWxpZ25lZC4gICovCi0tICAgICAgICAgICAgICBhcmdzX3NwYWNlICs9IGFsaWdu X3VwIChsZW4sIDQpOwotKyAgICAgICAgICAgICAgYXJnc19zcGFjZSArPSBhbGlnbl91cCAoVFlQ RV9MRU5HVEggKGFyZ190eXBlKSwgNCk7Ci0gICAgICAgICAgICAgfQotICAgICAgICAgfQotIAot SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaW5mY2FsbC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2luZmNhbGwuYwkyMDEyLTA3LTMxIDA5OjM0OjM5 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaW5mY2FsbC5jCTIw MTItMTEtMDcgMjI6MDM6NTcuNjk0NjIzMzg1ICswMTAwCi1AQCAtNzA5LDEzICs3MDksMTEgQEAg Y2FsbF9mdW5jdGlvbl9ieV9oYW5kIChzdHJ1Y3QgdmFsdWUgKmZ1bgotIAotICAgaWYgKHN0cnVj dF9yZXR1cm4gfHwgaGlkZGVuX2ZpcnN0X3BhcmFtX3ApCi0gICAgIHsKLS0gICAgICBpbnQgbGVu ID0gVFlQRV9MRU5HVEggKHZhbHVlc190eXBlKTsKLS0KLSAgICAgICBpZiAoZ2RiYXJjaF9pbm5l cl90aGFuIChnZGJhcmNoLCAxLCAyKSkKLSAJewotIAkgIC8qIFN0YWNrIGdyb3dzIGRvd253YXJk LiAgQWxpZ24gU1RSVUNUX0FERFIgYW5kIFNQIGFmdGVyCi0gICAgICAgICAgICAgIG1ha2luZyBz cGFjZSBmb3IgdGhlIHJldHVybiB2YWx1ZS4gICovCi0tCSAgc3AgLT0gbGVuOwotKwkgIHNwIC09 IFRZUEVfTEVOR1RIICh2YWx1ZXNfdHlwZSk7Ci0gCSAgaWYgKGdkYmFyY2hfZnJhbWVfYWxpZ25f cCAoZ2RiYXJjaCkpCi0gCSAgICBzcCA9IGdkYmFyY2hfZnJhbWVfYWxpZ24gKGdkYmFyY2gsIHNw KTsKLSAJICBzdHJ1Y3RfYWRkciA9IHNwOwotQEAgLTcyNyw3ICs3MjUsNyBAQCBjYWxsX2Z1bmN0 aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1ZSAqZnVuCi0gCSAgaWYgKGdkYmFyY2hfZnJhbWVfYWxp Z25fcCAoZ2RiYXJjaCkpCi0gCSAgICBzcCA9IGdkYmFyY2hfZnJhbWVfYWxpZ24gKGdkYmFyY2gs IHNwKTsKLSAJICBzdHJ1Y3RfYWRkciA9IHNwOwotLQkgIHNwICs9IGxlbjsKLSsJICBzcCArPSBU WVBFX0xFTkdUSCAodmFsdWVzX3R5cGUpOwotIAkgIGlmIChnZGJhcmNoX2ZyYW1lX2FsaWduX3Ag KGdkYmFyY2gpKQotIAkgICAgc3AgPSBnZGJhcmNoX2ZyYW1lX2FsaWduIChnZGJhcmNoLCBzcCk7 Ci0gCX0KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xtMzItdGRlcC5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2xtMzItdGRlcC5jCTIwMTItMDUt MTggMjM6MDI6NDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9s bTMyLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjY5NTYyMzM4NCArMDEwMAotQEAgLTI2MSw3 ICsyNjEsNiBAQCBsbTMyX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCi0gICAg ICAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2ldOwotICAgICAgIHN0cnVjdCB0eXBlICphcmdf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwotICAgICAgIGdkYl9ieXRl ICpjb250ZW50czsKLS0gICAgICBpbnQgbGVuOwotICAgICAgIFVMT05HRVNUIHZhbDsKLSAKLSAg ICAgICAvKiBQcm9tb3RlIHNtYWxsIGludGVnZXIgdHlwZXMgdG8gaW50LiAgKi8KLUBAIC0yODMs OCArMjgyLDggQEAgbG0zMl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAotICAg ICAgIC8qIEZJWE1FOiBIYW5kbGUgc3RydWN0dXJlcy4gICovCi0gCi0gICAgICAgY29udGVudHMg PSAoZ2RiX2J5dGUgKikgdmFsdWVfY29udGVudHMgKGFyZyk7Ci0tICAgICAgbGVuID0gVFlQRV9M RU5HVEggKGFyZ190eXBlKTsKLS0gICAgICB2YWwgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIg KGNvbnRlbnRzLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWdu ZWRfaW50ZWdlciAoY29udGVudHMsIFRZUEVfTEVOR1RIIChhcmdfdHlwZSksCi0rCQkJCSAgICAg IGJ5dGVfb3JkZXIpOwotIAotICAgICAgIC8qIEZpcnN0IG51bV9hcmdfcmVncyBwYXJhbWV0ZXJz IGFyZSBwYXNzZWQgYnkgcmVnaXN0ZXJzLCAKLSAgICAgICAgICBhbmQgdGhlIHJlc3QgYXJlIHBh c3NlZCBvbiB0aGUgc3RhY2suICAqLwotQEAgLTI5Miw3ICsyOTEsNyBAQCBsbTMyX3B1c2hfZHVt bXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCi0gCXJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNp Z25lZCAocmVnY2FjaGUsIGZpcnN0X2FyZ19yZWcgKyBpLCB2YWwpOwotICAgICAgIGVsc2UKLSAJ ewotLQkgIHdyaXRlX21lbW9yeSAoc3AsICh2b2lkICopICZ2YWwsIGxlbik7Ci0rCSAgd3JpdGVf bWVtb3J5IChzcCwgKHZvaWQgKikgJnZhbCwgVFlQRV9MRU5HVEggKGFyZ190eXBlKSk7Ci0gCSAg c3AgLT0gNDsKLSAJfQotICAgICB9Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tNjho YzExLXRkZXAuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9t NjhoYzExLXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvbTY4aGMxMS10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny43 MjQ2MjMzNDcgKzAxMDAKLUBAIC0xMTc0LDcgKzExNzQsNiBAQCBtNjhoYzExX3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2gKLSAgIGludCBmaXJzdF9zdGFja19hcmdudW07Ci0gICBzdHJ1 Y3QgdHlwZSAqdHlwZTsKLSAgIGNoYXIgKnZhbDsKLS0gIGludCBsZW47Ci0gICBjaGFyIGJ1Zlsy XTsKLSAgIAotICAgZmlyc3Rfc3RhY2tfYXJnbnVtID0gMDsKLUBAIC0xMTg1LDE5ICsxMTg0LDE4 IEBAIG02OGhjMTFfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAotICAgZWxzZSBpZiAo bmFyZ3MgPiAwKQotICAgICB7Ci0gICAgICAgdHlwZSA9IHZhbHVlX3R5cGUgKGFyZ3NbMF0pOwot LSAgICAgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAgICAgICAvKiBGaXJzdCBhcmd1 bWVudCBpcyBwYXNzZWQgaW4gRCBhbmQgWCByZWdpc3RlcnMuICAqLwotLSAgICAgIGlmIChsZW4g PD0gNCkKLSsgICAgICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpIDw9IDQpCi0gICAgICAgICB7Ci0g ICAgICAgICAgIFVMT05HRVNUIHY7Ci0gCi0gICAgICAgICAgIHYgPSBleHRyYWN0X3Vuc2lnbmVk X2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzIChhcmdzWzBdKSwKLS0JCQkJCWxlbiwgYnl0ZV9vcmRl cik7Ci0rCQkJCQlUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIpOwotICAgICAgICAgICBm aXJzdF9zdGFja19hcmdudW0gPSAxOwotIAotICAgICAgICAgICByZWdjYWNoZV9jb29rZWRfd3Jp dGVfdW5zaWduZWQgKHJlZ2NhY2hlLCBIQVJEX0RfUkVHTlVNLCB2KTsKLS0gICAgICAgICAgaWYg KGxlbiA+IDIpCi0rICAgICAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPiAyKQotICAgICAg ICAgICAgIHsKLSAgICAgICAgICAgICAgIHYgPj49IDE2OwotICAgICAgICAgICAgICAgcmVnY2Fj aGVfY29va2VkX3dyaXRlX3Vuc2lnbmVkIChyZWdjYWNoZSwgSEFSRF9YX1JFR05VTSwgdik7Ci1A QCAtMTIwOCw5ICsxMjA2LDggQEAgbTY4aGMxMV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoCi0gICBmb3IgKGFyZ251bSA9IG5hcmdzIC0gMTsgYXJnbnVtID49IGZpcnN0X3N0YWNrX2Fy Z251bTsgYXJnbnVtLS0pCi0gICAgIHsKLSAgICAgICB0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1th cmdudW1dKTsKLS0gICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0tICAgICAgaWYg KGxlbiAmIDEpCi0rICAgICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSAmIDEpCi0gICAgICAgICB7 Ci0gICAgICAgICAgIHN0YXRpYyBjaGFyIHplcm8gPSAwOwotIAotQEAgLTEyMTgsOCArMTIxNSw4 IEBAIG02OGhjMTFfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAotICAgICAgICAgICB3 cml0ZV9tZW1vcnkgKHNwLCAmemVybywgMSk7Ci0gICAgICAgICB9Ci0gICAgICAgdmFsID0gKGNo YXIqKSB2YWx1ZV9jb250ZW50cyAoYXJnc1thcmdudW1dKTsKLS0gICAgICBzcCAtPSBsZW47Ci0t ICAgICAgd3JpdGVfbWVtb3J5IChzcCwgdmFsLCBsZW4pOwotKyAgICAgIHNwIC09IFRZUEVfTEVO R1RIICh0eXBlKTsKLSsgICAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWwsIFRZUEVfTEVOR1RIICh0 eXBlKSk7Ci0gICAgIH0KLSAKLSAgIC8qIFN0b3JlIHJldHVybiBhZGRyZXNzLiAgKi8KLUBAIC0x MjkxLDExICsxMjg4LDEwIEBAIHN0YXRpYyB2b2lkCi0gbTY4aGMxMV9leHRyYWN0X3JldHVybl92 YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdmFsYnVmKQotIHsKLS0gIGludCBsZW4g PSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICBjaGFyIGJ1ZltNNjhIQzExX1JFR19TSVpFXTsKLSAK LSAgIHJlZ2NhY2hlX3Jhd19yZWFkIChyZWdjYWNoZSwgSEFSRF9EX1JFR05VTSwgYnVmKTsKLS0g IHN3aXRjaCAobGVuKQotKyAgc3dpdGNoIChUWVBFX0xFTkdUSCAodHlwZSkpCi0gICAgIHsKLSAg ICAgY2FzZSAxOgotICAgICAgIG1lbWNweSAodmFsYnVmLCBidWYgKyAxLCAxKTsKLUluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL21lcC10ZGVwLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjAuMjAxMjA5MjYub3JpZy9nZGIvbWVwLXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA2LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWVwLXRkZXAuYwkyMDEyLTEx LTA3IDIyOjAzOjU3LjcyNzYyMzMzNCArMDEwMAotQEAgLTIzMzcsMTEgKzIzMzcsMTAgQEAgbWVw X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgotIAotICAgZm9yIChpID0gMDsg aSA8IGFyZ2M7IGkrKykKLSAgICAgewotLSAgICAgIHVuc2lnbmVkIGFyZ19zaXplID0gVFlQRV9M RU5HVEggKHZhbHVlX3R5cGUgKGFyZ3ZbaV0pKTsKLSAgICAgICBVTE9OR0VTVCB2YWx1ZTsKLSAK LSAgICAgICAvKiBBcmd1bWVudHMgdGhhdCBmaXQgaW4gYSBHUFIgZ2V0IGV4cGFuZGVkIHRvIGZp bGwgdGhlIEdQUi4gICovCi0tICAgICAgaWYgKGFyZ19zaXplIDw9IE1FUF9HUFJfU0laRSkKLSsg ICAgICBpZiAoVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKGFyZ3ZbaV0pKSA8PSBNRVBfR1BSX1NJ WkUpCi0gICAgICAgICB2YWx1ZSA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsdWVfY29u dGVudHMgKGFyZ3ZbaV0pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRZUEVfTEVOR1RIICh2YWx1ZV90eXBlIChhcmd2W2ldKSksCi0gCQkJCQkgIGJ5dGVfb3Jk ZXIpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcHJpbnRjbWQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9wcmludGNtZC5jCTIwMTItMTEtMDcg MjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcmlu dGNtZC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNzMwNjIzMzM0ICswMTAwCi1AQCAtMzQ3LDEzICsz NDcsMTIgQEAgZmxvYXRfdHlwZV9mcm9tX2xlbmd0aCAoc3RydWN0IHR5cGUgKnR5cAotIHsKLSAg IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7Ci0gICBjb25z dCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidWlsdGluID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKTsK LS0gIHVuc2lnbmVkIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0tICBpZiAobGVu ID09IFRZUEVfTEVOR1RIIChidWlsdGluLT5idWlsdGluX2Zsb2F0KSkKLSsgIGlmIChUWVBFX0xF TkdUSCAodHlwZSkgPT0gVFlQRV9MRU5HVEggKGJ1aWx0aW4tPmJ1aWx0aW5fZmxvYXQpKQotICAg ICB0eXBlID0gYnVpbHRpbi0+YnVpbHRpbl9mbG9hdDsKLS0gIGVsc2UgaWYgKGxlbiA9PSBUWVBF X0xFTkdUSCAoYnVpbHRpbi0+YnVpbHRpbl9kb3VibGUpKQotKyAgZWxzZSBpZiAoVFlQRV9MRU5H VEggKHR5cGUpID09IFRZUEVfTEVOR1RIIChidWlsdGluLT5idWlsdGluX2RvdWJsZSkpCi0gICAg IHR5cGUgPSBidWlsdGluLT5idWlsdGluX2RvdWJsZTsKLS0gIGVsc2UgaWYgKGxlbiA9PSBUWVBF X0xFTkdUSCAoYnVpbHRpbi0+YnVpbHRpbl9sb25nX2RvdWJsZSkpCi0rICBlbHNlIGlmIChUWVBF X0xFTkdUSCAodHlwZSkgPT0gVFlQRV9MRU5HVEggKGJ1aWx0aW4tPmJ1aWx0aW5fbG9uZ19kb3Vi bGUpKQotICAgICB0eXBlID0gYnVpbHRpbi0+YnVpbHRpbl9sb25nX2RvdWJsZTsKLSAKLSAgIHJl dHVybiB0eXBlOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvczM5MC10ZGVwLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvczM5MC10ZGVwLmMJMjAx Mi0xMS0wNyAyMjowMjozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL3MzOTAtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNzMzNjIzMzI5ICswMTAwCi1AQCAt Mzc2LDkgKzM3NiwxMSBAQCBzMzkwX3ZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0 Ci0gCQkJICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotICAgc3RydWN0IHZhbHVlICp2 YWx1ZSA9IGRlZmF1bHRfdmFsdWVfZnJvbV9yZWdpc3RlciAodHlwZSwgcmVnbnVtLCBmcmFtZSk7 Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHR5cGUpKTsKLSAKLS0g IGlmIChyZWdudW0gPj0gUzM5MF9GMF9SRUdOVU0gJiYgcmVnbnVtIDw9IFMzOTBfRjE1X1JFR05V TSAmJiBsZW4gPCA4KQotKyAgY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0rCi0rICBpZiAocmVnbnVt ID49IFMzOTBfRjBfUkVHTlVNICYmIHJlZ251bSA8PSBTMzkwX0YxNV9SRUdOVU0KLSsgICAgICAm JiBUWVBFX0xFTkdUSCAodHlwZSkgPCA4KQotICAgICBzZXRfdmFsdWVfb2Zmc2V0ICh2YWx1ZSwg MCk7Ci0gCi0gICByZXR1cm4gdmFsdWU7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9z dGFjay5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3N0YWNr LmMJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3N0YWNrLmMJMjAxMi0xMS0wNyAyMjowMzo1Ny43Mzc2MjMzMjIgKzAxMDAKLUBA IC0zNTQsMTQgKzM1NCwxNSBAQCByZWFkX2ZyYW1lX2FyZyAoc3RydWN0IHN5bWJvbCAqc3ltLCBz dHJ1Ci0gCi0gCSAgaWYgKHZhbCAmJiBlbnRyeXZhbCAmJiAhdWlfb3V0X2lzX21pX2xpa2VfcCAo Y3VycmVudF91aW91dCkpCi0gCSAgICB7Ci0tCSAgICAgIHVuc2lnbmVkIGxlbiA9IFRZUEVfTEVO R1RIICh2YWx1ZV90eXBlICh2YWwpKTsKLSsJICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1 ZV90eXBlICh2YWwpOwotIAotIAkgICAgICBpZiAoIXZhbHVlX29wdGltaXplZF9vdXQgKHZhbCkg JiYgdmFsdWVfbGF6eSAodmFsKSkKLSAJCXZhbHVlX2ZldGNoX2xhenkgKHZhbCk7Ci0gCSAgICAg IGlmICghdmFsdWVfb3B0aW1pemVkX291dCAodmFsKSAmJiB2YWx1ZV9sYXp5IChlbnRyeXZhbCkp Ci0gCQl2YWx1ZV9mZXRjaF9sYXp5IChlbnRyeXZhbCk7Ci0gCSAgICAgIGlmICghdmFsdWVfb3B0 aW1pemVkX291dCAodmFsKQotLQkJICAmJiB2YWx1ZV9hdmFpbGFibGVfY29udGVudHNfZXEgKHZh bCwgMCwgZW50cnl2YWwsIDAsIGxlbikpCi0rCQkgICYmIHZhbHVlX2F2YWlsYWJsZV9jb250ZW50 c19lcSAodmFsLCAwLCBlbnRyeXZhbCwgMCwKLSsJCQkJCQkgIFRZUEVfTEVOR1RIICh0eXBlKSkp Ci0gCQl7Ci0gCQkgIC8qIEluaXRpYWxpemUgaXQganVzdCB0byBhdm9pZCBhIEdDQyBmYWxzZSB3 YXJuaW5nLiAgKi8KLSAJCSAgc3RydWN0IHZhbHVlICp2YWxfZGVyZWYgPSBOVUxMLCAqZW50cnl2 YWxfZGVyZWY7Ci1AQCAtMzczLDEyICszNzQsMTIgQEAgcmVhZF9mcmFtZV9hcmcgKHN0cnVjdCBz eW1ib2wgKnN5bSwgc3RydQotIAotIAkJICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tf RVJST1IpCi0gCQkgICAgewotLQkJICAgICAgdW5zaWduZWQgbGVuX2RlcmVmOwotKwkJICAgICAg c3RydWN0IHR5cGUgKnR5cGVfZGVyZWY7Ci0gCi0gCQkgICAgICB2YWxfZGVyZWYgPSBjb2VyY2Vf cmVmICh2YWwpOwotIAkJICAgICAgaWYgKHZhbHVlX2xhenkgKHZhbF9kZXJlZikpCi0gCQkJdmFs dWVfZmV0Y2hfbGF6eSAodmFsX2RlcmVmKTsKLS0JCSAgICAgIGxlbl9kZXJlZiA9IFRZUEVfTEVO R1RIICh2YWx1ZV90eXBlICh2YWxfZGVyZWYpKTsKLSsJCSAgICAgIHR5cGVfZGVyZWYgPSB2YWx1 ZV90eXBlICh2YWxfZGVyZWYpOwotIAotIAkJICAgICAgZW50cnl2YWxfZGVyZWYgPSBjb2VyY2Vf cmVmIChlbnRyeXZhbCk7Ci0gCQkgICAgICBpZiAodmFsdWVfbGF6eSAoZW50cnl2YWxfZGVyZWYp KQotQEAgLTM4OSw3ICszOTAsNyBAQCByZWFkX2ZyYW1lX2FyZyAoc3RydWN0IHN5bWJvbCAqc3lt LCBzdHJ1Ci0gCQkgICAgICBpZiAodmFsICE9IHZhbF9kZXJlZgotIAkJCSAgJiYgdmFsdWVfYXZh aWxhYmxlX2NvbnRlbnRzX2VxICh2YWxfZGVyZWYsIDAsCi0gCQkJCQkJCSAgZW50cnl2YWxfZGVy ZWYsIDAsCi0tCQkJCQkJCSAgbGVuX2RlcmVmKSkKLSsJCQkJCQkgICAgICBUWVBFX0xFTkdUSCAo dHlwZV9kZXJlZikpKQotIAkJCXZhbF9lcXVhbCA9IDE7Ci0gCQkgICAgfQotIAotSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvdHJhY2Vwb2ludC5jCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3RyYWNlcG9pbnQuYwkyMDEyLTA2LTMwIDAwOjQ2OjQ2LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdHJhY2Vwb2ludC5jCTIw MTItMTEtMDcgMjI6MDM6NTcuNzQxNjIzMzE4ICswMTAwCi1AQCAtMTQ1MCw3ICsxNDUwLDcgQEAg ZW5jb2RlX2FjdGlvbnNfMSAoc3RydWN0IGNvbW1hbmRfbGluZSAqYQotIAkJfQotIAkgICAgICBl bHNlCi0gCQl7Ci0tCQkgIHVuc2lnbmVkIGxvbmcgYWRkciwgbGVuOwotKwkJICB1bnNpZ25lZCBs b25nIGFkZHI7Ci0gCQkgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW4gPSBOVUxMOwotIAkJICBz dHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluMSA9IE5VTEw7Ci0gCi1AQCAtMTQ4MCw4ICsxNDgwLDEw IEBAIGVuY29kZV9hY3Rpb25zXzEgKHN0cnVjdCBjb21tYW5kX2xpbmUgKmEKLSAJCSAgICAgIC8q IFNhZmUgYmVjYXVzZSB3ZSBrbm93IGl0J3MgYSBzaW1wbGUgZXhwcmVzc2lvbi4gICovCi0gCQkg ICAgICB0ZW1wdmFsID0gZXZhbHVhdGVfZXhwcmVzc2lvbiAoZXhwKTsKLSAJCSAgICAgIGFkZHIg PSB2YWx1ZV9hZGRyZXNzICh0ZW1wdmFsKTsKLS0JCSAgICAgIGxlbiA9IFRZUEVfTEVOR1RIIChj aGVja190eXBlZGVmIChleHAtPmVsdHNbMV0udHlwZSkpOwotLQkJICAgICAgYWRkX21lbXJhbmdl IChjb2xsZWN0LCBtZW1yYW5nZV9hYnNvbHV0ZSwgYWRkciwgbGVuKTsKLSsJCSAgICAgIC8qIElu aXRpYWxpemUgdGhlIFRZUEVfTEVOR1RIIGlmIGl0IGlzIGEgdHlwZWRlZi4gICovCi0rCQkgICAg ICBjaGVja190eXBlZGVmIChleHAtPmVsdHNbMV0udHlwZSk7Ci0rCQkgICAgICBhZGRfbWVtcmFu Z2UgKGNvbGxlY3QsIG1lbXJhbmdlX2Fic29sdXRlLCBhZGRyLAotKwkJCQkgICAgVFlQRV9MRU5H VEggKGV4cC0+ZWx0c1sxXS50eXBlKSk7Ci0gCQkgICAgICBicmVhazsKLSAKLSAJCSAgICBjYXNl IE9QX1ZBUl9WQUxVRToKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTIt MTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi92YWxvcHMuYwkyMDEyLTExLTA3IDIyOjA2OjM1Ljg5OTM5MzUzOSArMDEwMAotQEAgLTEwNTUs NyArMTA1NSw2IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQotICAgICAg IHN0cnVjdCB2YWx1ZSAqcGFyZW50ID0gdmFsdWVfcGFyZW50ICh2YWwpOwotICAgICAgIExPTkdF U1Qgb2Zmc2V0ID0gdmFsdWVfb2Zmc2V0ICh2YWwpOwotICAgICAgIExPTkdFU1QgbnVtOwotLSAg ICAgIGludCBsZW5ndGggPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0gICAgICAgaWYgKCF2YWx1 ZV9iaXRzX3ZhbGlkICh2YWwsCi0gCQkJICAgICBUQVJHRVRfQ0hBUl9CSVQgKiBvZmZzZXQgKyB2 YWx1ZV9iaXRwb3MgKHZhbCksCi1AQCAtMTA2OSw5ICsxMDY4LDkgQEAgdmFsdWVfZmV0Y2hfbGF6 eSAoc3RydWN0IHZhbHVlICp2YWwpCi0gCQkJCSAgICAgIHZhbHVlX2JpdHNpemUgKHZhbCksIHBh cmVudCwgJm51bSkpCi0gCW1hcmtfdmFsdWVfYnl0ZXNfdW5hdmFpbGFibGUgKHZhbCwKLSAJCQkJ ICAgICAgdmFsdWVfZW1iZWRkZWRfb2Zmc2V0ICh2YWwpLAotLQkJCQkgICAgICBsZW5ndGgpOwot KwkJCQkgICAgICBUWVBFX0xFTkdUSCAodHlwZSkpOwotICAgICAgIGVsc2UKLS0Jc3RvcmVfc2ln bmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodmFsKSwgbGVuZ3RoLAotKwlzdG9yZV9z aWduZWRfaW50ZWdlciAodmFsdWVfY29udGVudHNfcmF3ICh2YWwpLCBUWVBFX0xFTkdUSCAodHlw ZSksCi0gCQkJICAgICAgYnl0ZV9vcmRlciwgbnVtKTsKLSAgICAgfQotICAgZWxzZSBpZiAoVkFM VUVfTFZBTCAodmFsKSA9PSBsdmFsX21lbW9yeSkKLUBAIC0xMDgwLDE2ICsxMDc5LDE2IEBAIHZh bHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQotIAotICAgICAgIGlmIChvYmplY3Rf YWRkcmVzc19nZXRfZGF0YSAodmFsdWVfdHlwZSAodmFsKSwgJmFkZHIpKQotIAl7Ci0tCSAgc3Ry dWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKTsKLS0JICBpbnQgbGVu Z3RoID0gVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKHR5cGUpKTsKLSsJICBzdHJ1Y3QgdHlw ZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX2VuY2xvc2luZ190eXBlICh2YWwpKTsKLSAK LS0JICBpZiAobGVuZ3RoKQotKwkgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkpCi0gCSAgICB7Ci0g CSAgICAgIC8qIERlbGF5IGl0IGFmdGVyIG9iamVjdF9hZGRyZXNzX2dldF9kYXRhIGFib3ZlLiAg Ki8KLSAJICAgICAgYWxsb2NhdGVfdmFsdWVfY29udGVudHMgKHZhbCk7Ci0gCSAgICAgIGFkZHIg Kz0gdmFsdWVfb2Zmc2V0ICh2YWwpOwotIAkgICAgICByZWFkX3ZhbHVlX21lbW9yeSAodmFsLCAw LCB2YWx1ZV9zdGFjayAodmFsKSwKLS0JCQkJIGFkZHIsIHZhbHVlX2NvbnRlbnRzX2FsbF9yYXcg KHZhbCksIGxlbmd0aCk7Ci0rCQkJCSBhZGRyLCB2YWx1ZV9jb250ZW50c19hbGxfcmF3ICh2YWwp LAotKwkJCQkgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAJICAgIH0KLSAJfQotICAgICAgIC8qIEp1 c3QgdG8gYmUgc3VyZSBpdCBoYXMgYmVlbiBjYWxsZWQuICAqLwotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvdmFsdWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5v cmlnL2dkYi92YWx1ZS5jCTIwMTItMTEtMDcgMjI6MDA6NDMuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCTIwMTItMTEtMDcgMjI6MDM6NTcuNzUxNjIz MzAzICswMTAwCi1AQCAtMTAzNCwxNSArMTAzNCwxNCBAQCB2YWx1ZV9jb250ZW50c19lcXVhbCAo c3RydWN0IHZhbHVlICp2YWwxCi0gewotICAgc3RydWN0IHR5cGUgKnR5cGUxOwotICAgc3RydWN0 IHR5cGUgKnR5cGUyOwotLSAgaW50IGxlbjsKLSAKLSAgIHR5cGUxID0gY2hlY2tfdHlwZWRlZiAo dmFsdWVfdHlwZSAodmFsMSkpOwotICAgdHlwZTIgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBl ICh2YWwyKSk7Ci0tICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZTEpOwotLSAgaWYgKGxlbiAhPSBU WVBFX0xFTkdUSCAodHlwZTIpKQotKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBlMSkgIT0gVFlQRV9M RU5HVEggKHR5cGUyKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICByZXR1cm4gKG1lbWNtcCAodmFs dWVfY29udGVudHMgKHZhbDEpLCB2YWx1ZV9jb250ZW50cyAodmFsMiksIGxlbikgPT0gMCk7Ci0r ICByZXR1cm4gKG1lbWNtcCAodmFsdWVfY29udGVudHMgKHZhbDEpLCB2YWx1ZV9jb250ZW50cyAo dmFsMiksCi0rCQkgIFRZUEVfTEVOR1RIICh0eXBlMSkpID09IDApOwotIH0KLSAKLSBpbnQKCmRp ZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMThvZjI1LnBhdGNoIGIvZ2RiLXJoYno3 OTU0MjQtYml0cG9zLTE4b2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MTYyYjU1Ni4uMDAwMDAwMAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMThvZjI1LnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21s L2dkYi1jdnMvMjAxMi0wOS9tc2cwMDE0NS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEyLzA5LzI1IDEyOjQ4OjUyCTEuMTQ2OTcKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzA5 LzI2IDAyOjA2OjUxCTEuMTQ2OTgKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTItMDktMjYgIFNpZGRo ZXNoIFBveWFyZWthciAgPHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0rCi0rCSogYnJlYWtwb2ludC5j IChpbnZhbGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9jaGFuZ2UpOiBFeHBhbmQKLSsJcGFyYW1l dGVyIExFTiB0byBzc2l6ZV90LgotKwotIDIwMTItMDktMjUgIFNpZGRoZXNoIFBveWFyZWthciAg PHNpZGRoZXNoQHJlZGhhdC5jb20+Ci0gCi0gCSogYWRhLXZhbHByaW50LmMgKGFkYV92YWxfcHJp bnRfMSk6IEVsaW1pbmF0ZSBzaW5nbGUtdXNlCi0tLS0gc3JjL2dkYi9icmVha3BvaW50LmMJMjAx Mi8wOS8yNSAxMjo0ODo1MgkxLjcwNQotKysrIHNyYy9nZGIvYnJlYWtwb2ludC5jCTIwMTIvMDkv MjYgMDI6MDY6NTQJMS43MDYKLUBAIC0xNDcxOCw3ICsxNDcxOCw3IEBACi0gICAgR0RCIGl0c2Vs Zi4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1pbnZhbGlkYXRlX2JwX3ZhbHVlX29uX21lbW9yeV9j aGFuZ2UgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLAotK2ludmFsaWRhdGVfYnBfdmFsdWVfb25f bWVtb3J5X2NoYW5nZSAoQ09SRV9BRERSIGFkZHIsIHNzaXplX3QgbGVuLAotIAkJCQkgICAgICBj b25zdCBiZmRfYnl0ZSAqZGF0YSkKLSB7Ci0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnA7Ci0jIyMg c3JjL2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDkvMjEgMDE6NDY6NDIJMS4xMzcwCi0jIyMgc3Jj L2dkYi9kb2MvQ2hhbmdlTG9nCTIwMTIvMDkvMjYgMDI6MDY6NTUJMS4xMzcxCi0jIyAtMSwzICsx LDcgQEAKLSsyMDEyLTA5LTI2ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRoYXQu Y29tPgotKwotKwkqIG9ic2VydmVyLnRleGkgKG1lbW9yeV9jaGFuZ2VkKTogRXhwYW5kIHBhcmFt ZXRlciBMRU4gdG8gc3NpemVfdC4KLSsKLSAyMDEyLTA5LTIxICBZYW8gUWkgIDx5YW9AY29kZXNv dXJjZXJ5LmNvbT4KLSAgICAgICAgICAgICBQZWRybyBBbHZlcyAgPHBhbHZlc0ByZWRoYXQuY29t PgotIAotLS0tIHNyYy9nZGIvZG9jL29ic2VydmVyLnRleGkJMjAxMi8wOS8yMSAwMTo0Njo0Mwkx LjQwCi0rKysgc3JjL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQkyMDEyLzA5LzI2IDAyOjA2OjU1CTEu NDEKLUBAIC0yMzAsNyArMjMwLDcgQEAKLSBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgaW1tZWRpYXRl bHkgYmVmb3JlIGZyZWVpbmcgQHZhcntpbmZ9LgotIEBlbmQgZGVmdHlwZWZ1bgotIAotLUBkZWZ0 eXBlZnVuIHZvaWQgbWVtb3J5X2NoYW5nZWQgKENPUkVfQUREUiBAdmFye2FkZHJ9LCBpbnQgQHZh cntsZW59LCBjb25zdCBiZmRfYnl0ZSAqQHZhcntkYXRhfSkKLStAZGVmdHlwZWZ1biB2b2lkIG1l bW9yeV9jaGFuZ2VkIChDT1JFX0FERFIgQHZhcnthZGRyfSwgc3NpemVfdCBAdmFye2xlbn0sIGNv bnN0IGJmZF9ieXRlICpAdmFye2RhdGF9KQotIEJ5dGVzIGZyb20gQHZhcntkYXRhfSB0byBAdmFy e2RhdGF9ICsgQHZhcntsZW59IGhhdmUgYmVlbiB3cml0dGVuCi0gdG8gdGhlIGN1cnJlbnQgaW5m ZXJpb3IgYXQgQHZhcnthZGRyfS4KLSBAZW5kIGRlZnR5cGVmdW4KCmRpZmYgLS1naXQgYS9nZGIt cmhiejc5NTQyNC1iaXRwb3MtMTlvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTE5 b2YyNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWE1MGVjNy4uMDAwMDAw MAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMTlvZjI1LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMjYwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTIt MDkvbXNnMDAxNDcuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wOS8yNiAwMjow Njo1MQkxLjE0Njk4Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMi8wOS8yNiAwNzo1Mjo0NAkx LjE0Njk5Ci0jIyAtMSw1ICsxLDE5IEBACi0gMjAxMi0wOS0yNiAgU2lkZGhlc2ggUG95YXJla2Fy ICA8c2lkZGhlc2hAcmVkaGF0LmNvbT4KLSAKLSsJKiBhbWQ2NC10ZGVwLmMgKGFtZDY0X3JldHVy bl92YWx1ZSk6IFVzZSBUWVBFX0xFTkdUSCBkaXJlY3RseS4KLSsJKiBiZmluLXRkZXAuYyAoYmZp bl9leHRyYWN0X3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgotKwkoYmZpbl9zdG9yZV9yZXR1cm5f dmFsdWUpOiBMaWtld2lzZS4KLSsJKiBjcmlzLXRkZXAuYyAoY3Jpc19zdG9yZV9yZXR1cm5fdmFs dWUpOiBMaWtld2lzZS4KLSsJKGNyaXNfZXh0cmFjdF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4K LSsJKiBoODMwMC10ZGVwLmMgKGg4MzAwX2V4dHJhY3RfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2Uu Ci0rCSogaHBwYS10ZGVwLmMgKGhwcGE2NF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsJKiBs bTMyLXRkZXAuYyAobG0zMl9zdG9yZV9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsJKiBtaWNy b2JsYXplLXRkZXAuYyAobWljcm9ibGF6ZV9zdG9yZV9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4K LSsJKiBzcHUtdGRlcC5jIChzcHVfdmFsdWVfZnJvbV9yZWdpc3Rlcik6IExpa2V3aXNlLgotKwkq IHZheC10ZGVwLmMgKHZheF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KLSsKLSsyMDEyLTA5LTI2 ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRoYXQuY29tPgotKwotIAkqIGJyZWFr cG9pbnQuYyAoaW52YWxpZGF0ZV9icF92YWx1ZV9vbl9tZW1vcnlfY2hhbmdlKTogRXhwYW5kCi0g CXBhcmFtZXRlciBMRU4gdG8gc3NpemVfdC4KLSAKLS0tLSBzcmMvZ2RiL2FtZDY0LXRkZXAuYwky MDEyLzA5LzI1IDEyOjQ4OjUyCTEuMTEwCi0rKysgc3JjL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi8w OS8yNiAwNzo1Mjo0NwkxLjExMQotQEAgLTYzNyw3ICs2MzcsNyBAQAotICAgICB9Ci0gCi0gICBn ZGJfYXNzZXJ0IChjbGFzc1sxXSAhPSBBTUQ2NF9NRU1PUlkpOwotLSAgZ2RiX2Fzc2VydCAobGVu IDw9IDE2KTsKLSsgIGdkYl9hc3NlcnQgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSAxNik7Ci0gCi0g ICBmb3IgKGkgPSAwOyBsZW4gPiAwOyBpKyssIGxlbiAtPSA4KQotICAgICB7Ci0tLS0gc3JjL2dk Yi9iZmluLXRkZXAuYwkyMDEyLzA5LzI1IDEyOjQ4OjUyCTEuMTEKLSsrKyBzcmMvZ2RiL2JmaW4t dGRlcC5jCTIwMTIvMDkvMjYgMDc6NTI6NDcJMS4xMgotQEAgLTYxNSw3ICs2MTUsNyBAQAotICAg VUxPTkdFU1QgdG1wOwotICAgaW50IHJlZ25vID0gQkZJTl9SMF9SRUdOVU07Ci0gCi0tICBnZGJf YXNzZXJ0IChsZW4gPD0gOCk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX0xFTkdUSCAodHlwZSkgPD0g OCk7Ci0gCi0gICB3aGlsZSAobGVuID4gMCkKLSAgICAgewotQEAgLTY0Myw3ICs2NDMsNyBAQAot ICAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgIGludCByZWdubyA9IEJGSU5fUjBf UkVHTlVNOwotIAotLSAgZ2RiX2Fzc2VydCAobGVuIDw9IDgpOwotKyAgZ2RiX2Fzc2VydCAoVFlQ RV9MRU5HVEggKHR5cGUpIDw9IDgpOwotIAotICAgd2hpbGUgKGxlbiA+IDApCi0gICAgIHsKLS0t LSBzcmMvZ2RiL2NyaXMtdGRlcC5jCTIwMTIvMDUvMTggMjE6MDI6NDcJMS4xODUKLSsrKyBzcmMv Z2RiL2NyaXMtdGRlcC5jCTIwMTIvMDkvMjYgMDc6NTI6NDcJMS4xODYKLUBAIC0xNjYyLDIwICsx NjYyLDIwIEBACi0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNo IChyZWdjYWNoZSk7Ci0gICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0 ZV9vcmRlciAoZ2RiYXJjaCk7Ci0gICBVTE9OR0VTVCB2YWw7Ci0tICBpbnQgbGVuID0gVFlQRV9M RU5HVEggKHR5cGUpOwotICAgCi0tICBpZiAobGVuIDw9IDQpCi0rICBpZiAoVFlQRV9MRU5HVEgg KHR5cGUpIDw9IDQpCi0gICAgIHsKLSAgICAgICAvKiBQdXQgdGhlIHJldHVybiB2YWx1ZSBpbiBS MTAuICAqLwotLSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBs ZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAo dmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIpOwotICAgICAgIHJlZ2NhY2hl X2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEFSRzFfUkVHTlVNLCB2YWwpOwotICAg ICB9Ci0tICBlbHNlIGlmIChsZW4gPD0gOCkKLSsgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBl KSA8PSA4KQotICAgICB7Ci0gICAgICAgLyogUHV0IHRoZSByZXR1cm4gdmFsdWUgaW4gUjEwIGFu ZCBSMTEuICAqLwotICAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVm LCA0LCBieXRlX29yZGVyKTsKLSAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQg KHJlZ2NhY2hlLCBBUkcxX1JFR05VTSwgdmFsKTsKLS0gICAgICB2YWwgPSBleHRyYWN0X3Vuc2ln bmVkX2ludGVnZXIgKChjaGFyICopdmFsYnVmICsgNCwgbGVuIC0gNCwgYnl0ZV9vcmRlcik7Ci0r ICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyICgoY2hhciAqKXZhbGJ1ZiArIDQs Ci0rCQkJCSAgICAgIFRZUEVfTEVOR1RIICh0eXBlKSAtIDQsIGJ5dGVfb3JkZXIpOwotICAgICAg IHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIEFSRzJfUkVHTlVNLCB2 YWwpOwotICAgICB9Ci0gICBlbHNlCi1AQCAtMTgzMywyMSArMTgzMywyMSBAQAotICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVfYXJjaCAocmVnY2FjaGUpOwotICAgZW51 bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwot ICAgVUxPTkdFU1QgdmFsOwotLSAgaW50IGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgIAot LSAgaWYgKGxlbiA8PSA0KQotKyAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSA0KQotICAgICB7 Ci0gICAgICAgLyogR2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBSMTAuICAqLwotICAgICAgIHJl Z2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2lnbmVkIChyZWdjYWNoZSwgQVJHMV9SRUdOVU0sICZ2YWwp OwotLSAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbGJ1ZiwgbGVuLCBieXRlX29yZGVy LCB2YWwpOwotKyAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbGJ1ZiwgVFlQRV9MRU5H VEggKHR5cGUpLCBieXRlX29yZGVyLCB2YWwpOwotICAgICB9Ci0tICBlbHNlIGlmIChsZW4gPD0g OCkKLSsgIGVsc2UgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSA4KQotICAgICB7Ci0gICAgICAg LyogR2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBSMTAgYW5kIFIxMS4gICovCi0gICAgICAgcmVn Y2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCBBUkcxX1JFR05VTSwgJnZhbCk7 Ci0gICAgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCA0LCBieXRlX29yZGVyLCB2 YWwpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3Vuc2lnbmVkIChyZWdjYWNoZSwgQVJH Ml9SRUdOVU0sICZ2YWwpOwotLSAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKChjaGFyICop dmFsYnVmICsgNCwgbGVuIC0gNCwgYnl0ZV9vcmRlciwgdmFsKTsKLSsgICAgICBzdG9yZV91bnNp Z25lZF9pbnRlZ2VyICgoY2hhciAqKXZhbGJ1ZiArIDQsIFRZUEVfTEVOR1RIICh0eXBlKSAtIDQs Ci0rCQkJICAgICAgYnl0ZV9vcmRlciwgdmFsKTsKLSAgICAgfQotICAgZWxzZQotICAgICBlcnJv ciAoXygiY3Jpc19leHRyYWN0X3JldHVybl92YWx1ZTogdHlwZSBsZW5ndGggdG9vIGxhcmdlIikp OwotLS0tIHNyYy9nZGIvaDgzMDAtdGRlcC5jCTIwMTIvMDkvMjUgMTI6NDg6NTMJMS4xMzYKLSsr KyBzcmMvZ2RiL2g4MzAwLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEuMTM3Ci1AQCAtNzUx LDEyICs3NTEsMTIgQEAKLSAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICBVTE9O R0VTVCBjLCBhZGRyOwotIAotLSAgc3dpdGNoIChsZW4pCi0rICBzd2l0Y2ggKFRZUEVfTEVOR1RI ICh0eXBlKSkKLSAgICAgewotICAgICBjYXNlIDE6Ci0gICAgIGNhc2UgMjoKLSAgICAgICByZWdj YWNoZV9jb29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVUMF9SRUdOVU0sICZjKTsK LS0gICAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWxidWYsIGxlbiwgYnl0ZV9vcmRlciwg Yyk7Ci0rICAgICAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAo dHlwZSksIGJ5dGVfb3JkZXIsIGMpOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIDQ6CQkJLyog TmVlZHMgdHdvIHJlZ2lzdGVycyBvbiBwbGFpbiBIOC8zMDAgKi8KLSAgICAgICByZWdjYWNoZV9j b29rZWRfcmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIEVfUkVUMF9SRUdOVU0sICZjKTsKLUBAIC03 NjgsOCArNzY4LDkgQEAKLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVf SU5UKQotIAl7Ci0gCSAgcmVnY2FjaGVfY29va2VkX3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCBF X1JFVDBfUkVHTlVNLCAmYWRkcik7Ci0tCSAgYyA9IHJlYWRfbWVtb3J5X3Vuc2lnbmVkX2ludGVn ZXIgKChDT1JFX0FERFIpIGFkZHIsIGxlbiwgYnl0ZV9vcmRlcik7Ci0tCSAgc3RvcmVfdW5zaWdu ZWRfaW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIsIGMpOwotKwkgIGMgPSByZWFkX21l bW9yeV91bnNpZ25lZF9pbnRlZ2VyICgoQ09SRV9BRERSKSBhZGRyLAotKwkJCQkJICAgIFRZUEVf TEVOR1RIICh0eXBlKSwgYnl0ZV9vcmRlcik7Ci0rCSAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAo dmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3JkZXIsIGMpOwotIAl9Ci0gICAgICAg ZWxzZQotIAl7Ci0tLS0gc3JjL2dkYi9ocHBhLXRkZXAuYwkyMDEyLzA1LzE4IDIxOjAyOjQ4CTEu MjgxCi0rKysgc3JjL2dkYi9ocHBhLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEuMjgyCi1A QCAtMTE2MCw3ICsxMTYwLDcgQEAKLSAgIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0g ICBpbnQgcmVnbnVtLCBvZmZzZXQ7Ci0gCi0tICBpZiAobGVuID4gMTYpCi0rICBpZiAoVFlQRV9M RU5HVEggKHR5cGUpID4gMTYpCi0gICAgIHsKLSAgICAgICAvKiBBbGwgcmV0dXJuIHZhbHVlcyBs YXJnZXQgdGhhbiAxMjggYml0cyBtdXN0IGJlIGFnZ3JlZ2F0ZQotICAgICAgICAgIHJldHVybiB2 YWx1ZXMuICAqLwotLS0tIHNyYy9nZGIvbG0zMi10ZGVwLmMJMjAxMi8wOS8yNSAxMjo0ODo1Mwkx LjEzCi0rKysgc3JjL2dkYi9sbTMyLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEuMTQKLUBA IC0zNDksMTggKzM0OSwxOCBAQAotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVn Y2FjaGVfYXJjaCAocmVnY2FjaGUpOwotICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBn ZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwotICAgVUxPTkdFU1QgdmFsOwotLSAgaW50IGxl biA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLS0gIGlmIChsZW4gPD0gNCkKLSsgIGlmIChUWVBF X0xFTkdUSCAodHlwZSkgPD0gNCkKLSAgICAgewotLSAgICAgIHZhbCA9IGV4dHJhY3RfdW5zaWdu ZWRfaW50ZWdlciAodmFsYnVmLCBsZW4sIGJ5dGVfb3JkZXIpOwotKyAgICAgIHZhbCA9IGV4dHJh Y3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCBUWVBFX0xFTkdUSCAodHlwZSksIGJ5dGVfb3Jk ZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAocmVnY2FjaGUsIFNJ TV9MTTMyX1IxX1JFR05VTSwgdmFsKTsKLSAgICAgfQotLSAgZWxzZSBpZiAobGVuIDw9IDgpCi0r ICBlbHNlIGlmIChUWVBFX0xFTkdUSCAodHlwZSkgPD0gOCkKLSAgICAgewotICAgICAgIHZhbCA9 IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAodmFsYnVmLCA0LCBieXRlX29yZGVyKTsKLSAgICAg ICByZWdjYWNoZV9jb29rZWRfd3JpdGVfdW5zaWduZWQgKHJlZ2NhY2hlLCBTSU1fTE0zMl9SMV9S RUdOVU0sIHZhbCk7Ci0tICAgICAgdmFsID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyICh2YWxi dWYgKyA0LCBsZW4gLSA0LCBieXRlX29yZGVyKTsKLSsgICAgICB2YWwgPSBleHRyYWN0X3Vuc2ln bmVkX2ludGVnZXIgKHZhbGJ1ZiArIDQsIFRZUEVfTEVOR1RIICh0eXBlKSAtIDQsCi0rCQkJCSAg ICAgIGJ5dGVfb3JkZXIpOwotICAgICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZV91bnNpZ25lZCAo cmVnY2FjaGUsIFNJTV9MTTMyX1IyX1JFR05VTSwgdmFsKTsKLSAgICAgfQotICAgZWxzZQotLS0t IHNyYy9nZGIvbWljcm9ibGF6ZS10ZGVwLmMJMjAxMi8wOC8wMiAwOTozNjozOQkxLjEzCi0rKysg c3JjL2dkYi9taWNyb2JsYXplLXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEuMTQKLUBAIC01 OTAsMjIgKzU5MCwyMSBAQAotIG1pY3JvYmxhemVfc3RvcmVfcmV0dXJuX3ZhbHVlIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSAJCQkgICAgICAgY29uc3Qg Z2RiX2J5dGUgKnZhbGJ1ZikKLSB7Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwot ICAgZ2RiX2J5dGUgYnVmWzhdOwotIAotICAgbWVtc2V0IChidWYsIDAsIHNpemVvZihidWYpKTsK LSAKLSAgIC8qIEludGVncmFsIGFuZCBwb2ludGVyIHJldHVybiB2YWx1ZXMuICAqLwotIAotLSAg aWYgKGxlbiA+IDQpCi0rICBpZiAoVFlQRV9MRU5HVEggKHR5cGUpID4gNCkKLSAgICAgewotLSAg ICAgICBnZGJfYXNzZXJ0IChsZW4gPT0gOCk7Ci0rICAgICAgIGdkYl9hc3NlcnQgKFRZUEVfTEVO R1RIICh0eXBlKSA9PSA4KTsKLSAgICAgICAgbWVtY3B5IChidWYsIHZhbGJ1ZiwgOCk7Ci0gICAg ICAgIHJlZ2NhY2hlX2Nvb2tlZF93cml0ZSAocmVnY2FjaGUsIE1JQ1JPQkxBWkVfUkVUVkFMX1JF R05VTSsxLCBidWYgKyA0KTsKLSAgICAgfQotICAgZWxzZQotICAgICAvKiA/Pz8gRG8gd2UgbmVl ZCB0byBkbyBhbnkgc2lnbi1leHRlbnNpb24gaGVyZT8gICovCi0tICAgIG1lbWNweSAoYnVmICsg NCAtIGxlbiwgdmFsYnVmLCBsZW4pOwotKyAgICBtZW1jcHkgKGJ1ZiArIDQgLSBUWVBFX0xFTkdU SCAodHlwZSksIHZhbGJ1ZiwgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAKLSAgIHJlZ2NhY2hlX2Nv b2tlZF93cml0ZSAocmVnY2FjaGUsIE1JQ1JPQkxBWkVfUkVUVkFMX1JFR05VTSwgYnVmKTsKLSB9 Ci0tLS0gc3JjL2dkYi9zcHUtdGRlcC5jCTIwMTIvMDkvMTcgMDg6NTI6MTgJMS44MgotKysrIHNy Yy9nZGIvc3B1LXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEuODMKLUBAIC0zMTYsMTEgKzMx NiwxMCBAQAotIAkJCSBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gewotICAgc3RydWN0IHZh bHVlICp2YWx1ZSA9IGRlZmF1bHRfdmFsdWVfZnJvbV9yZWdpc3RlciAodHlwZSwgcmVnbnVtLCBm cmFtZSk7Ci0tICBpbnQgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAotLSAgaWYgKHJlZ251 bSA8IFNQVV9OVU1fR1BSUyAmJiBsZW4gPCAxNikKLSsgIGlmIChyZWdudW0gPCBTUFVfTlVNX0dQ UlMgJiYgVFlQRV9MRU5HVEggKHR5cGUpIDwgMTYpCi0gICAgIHsKLS0gICAgICBpbnQgcHJlZmVy cmVkX3Nsb3QgPSBsZW4gPCA0ID8gNCAtIGxlbiA6IDA7Ci0rICAgICAgaW50IHByZWZlcnJlZF9z bG90ID0gVFlQRV9MRU5HVEggKHR5cGUpIDwgNCA/IDQgLSBUWVBFX0xFTkdUSCAodHlwZSkgOiAw OwotICAgICAgIHNldF92YWx1ZV9vZmZzZXQgKHZhbHVlLCBwcmVmZXJyZWRfc2xvdCk7Ci0gICAg IH0KLSAKLS0tLSBzcmMvZ2RiL3ZheC10ZGVwLmMJMjAxMi8wNS8xNiAxNDozNTowOAkxLjExMgot KysrIHNyYy9nZGIvdmF4LXRkZXAuYwkyMDEyLzA5LzI2IDA3OjUyOjQ4CTEuMTEzCi1AQCAtMjA4 LDcgKzIwOCw2IEBACi0gCQkgIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLAotIAkJICBnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUgKndyaXRlYnVm KQotIHsKLS0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gICBnZGJfYnl0ZSBidWZb OF07Ci0gCi0gICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSVUNUCi1AQCAt MjI0LDcgKzIyMyw3IEBACi0gCSAgVUxPTkdFU1QgYWRkcjsKLSAKLSAJICByZWdjYWNoZV9yYXdf cmVhZF91bnNpZ25lZCAocmVnY2FjaGUsIFZBWF9SMF9SRUdOVU0sICZhZGRyKTsKLS0JICByZWFk X21lbW9yeSAoYWRkciwgcmVhZGJ1ZiwgbGVuKTsKLSsJICByZWFkX21lbW9yeSAoYWRkciwgcmVh ZGJ1ZiwgVFlQRV9MRU5HVEggKHR5cGUpKTsKLSAJfQotIAotICAgICAgIHJldHVybiBSRVRVUk5f VkFMVUVfQUJJX1JFVFVSTlNfQUREUkVTUzsKLUBAIC0yMzQsMTYgKzIzMywxNiBAQAotICAgICB7 Ci0gICAgICAgLyogUmVhZCB0aGUgY29udGVudHMgb2YgUjAgYW5kIChpZiBuZWNlc3NhcnkpIFIx LiAgKi8KLSAgICAgICByZWdjYWNoZV9jb29rZWRfcmVhZCAocmVnY2FjaGUsIFZBWF9SMF9SRUdO VU0sIGJ1Zik7Ci0tICAgICAgaWYgKGxlbiA+IDQpCi0rICAgICAgaWYgKFRZUEVfTEVOR1RIICh0 eXBlKSA+IDQpCi0gCXJlZ2NhY2hlX2Nvb2tlZF9yZWFkIChyZWdjYWNoZSwgVkFYX1IxX1JFR05V TSwgYnVmICsgNCk7Ci0tICAgICAgbWVtY3B5IChyZWFkYnVmLCBidWYsIGxlbik7Ci0rICAgICAg bWVtY3B5IChyZWFkYnVmLCBidWYsIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0gICAgIH0KLSAgIGlm ICh3cml0ZWJ1ZikKLSAgICAgewotICAgICAgIC8qIFJlYWQgdGhlIGNvbnRlbnRzIHRvIFIwIGFu ZCAoaWYgbmVjZXNzYXJ5KSBSMS4gICovCi0tICAgICAgbWVtY3B5IChidWYsIHdyaXRlYnVmLCBs ZW4pOwotKyAgICAgIG1lbWNweSAoYnVmLCB3cml0ZWJ1ZiwgVFlQRV9MRU5HVEggKHR5cGUpKTsK LSAgICAgICByZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBWQVhfUjBfUkVHTlVNLCBi dWYpOwotLSAgICAgIGlmIChsZW4gPiA0KQotKyAgICAgIGlmIChUWVBFX0xFTkdUSCAodHlwZSkg PiA0KQotIAlyZWdjYWNoZV9jb29rZWRfd3JpdGUgKHJlZ2NhY2hlLCBWQVhfUjFfUkVHTlVNLCBi dWYgKyA0KTsKLSAgICAgfQotIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0y MG9mMjUucGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjBvZjI1LnBhdGNoCmluZGV4IDEy MTAxMjcuLmIzMjA0ZTEgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMG9mMjUu cGF0Y2gKKysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIwb2YyNS5wYXRjaApAQCAtNDYzLDEw ICs0NjMsMTAgQEAgQ29udGVudC1UeXBlOiB0ZXh0L3gtcGF0Y2gKIENvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IDdiaXQKIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1l PWJpdHBvcy1tYWluLnBhdGNoCiAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1s YW5nLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEtbGFuZy5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxMi0xMS0w NyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fk YS1sYW5nLmMJMjAxMi0xMS0wNyAyMjowOToyOS42NjgxNDEwMzYgKzAxMDAKKy0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2FkYS1sYW5nLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNjA2 MDEyOTkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEtbGFuZy5jCTIwMTMt MDEtMTggMjM6Mjc6MjguODQ1NjA3Mjk1ICswMTAwCiBAQCAtODAsNyArODAsNyBAQCBzdGF0aWMg c3RydWN0IHR5cGUgKmRlc2NfYm91bmRzX3R5cGUgKHN0CiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1 ZSAqZGVzY19ib3VuZHMgKHN0cnVjdCB2YWx1ZSAqKTsKQEAgLTUzOSw3ICs1MzksNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgCQkJCQkgICAgIHN0cnVjdCB0 eXBlICopOwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKmFzc2lnbl9hZ2dyZWdhdGUgKHN0cnVj dCB2YWx1ZSAqLCBzdHJ1Y3QgdmFsdWUgKiwgCi1AQCAtNTg2LDcgKzU4Nyw3IEBAIGNvZXJjZV91 bnNwZWNfdmFsX3RvX3R5cGUgKHN0cnVjdCB2YWx1ZQorQEAgLTU4Nyw3ICs1ODgsNyBAQCBjb2Vy Y2VfdW5zcGVjX3ZhbF90b190eXBlIChzdHJ1Y3QgdmFsdWUKICB9CiAgCiAgc3RhdGljIGNvbnN0 IGdkYl9ieXRlICoKQEAgLTU0OCw3ICs1NDgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9hZGEtbGFuZy5jCiAgewogICAgaWYgKHZhbGFkZHIgPT0gTlVMTCkKICAgICAgcmV0dXJu IE5VTEw7Ci1AQCAtNTk1LDcgKzU5Niw3IEBAIGNvbmRfb2Zmc2V0X2hvc3QgKGNvbnN0IGdkYl9i eXRlICp2YWxhZGQKK0BAIC01OTYsNyArNTk3LDcgQEAgY29uZF9vZmZzZXRfaG9zdCAoY29uc3Qg Z2RiX2J5dGUgKnZhbGFkZAogIH0KICAKICBzdGF0aWMgQ09SRV9BRERSCkBAIC01NTcsNyArNTU3 LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwogIHsKICAgIGlm IChhZGRyZXNzID09IDApCiAgICAgIHJldHVybiAwOwotQEAgLTE2MDEsNyArMTYwMiw3IEBAIGRl c2NfYm91bmRzIChzdHJ1Y3QgdmFsdWUgKmFycikKK0BAIC0xNjAyLDcgKzE2MDMsNyBAQCBkZXNj X2JvdW5kcyAoc3RydWN0IHZhbHVlICphcnIpCiAgLyogSWYgVFlQRSBpcyB0aGUgdHlwZSBvZiBh biBhcnJheS1kZXNjcmlwdG9yIChmYXQgcG9pbnRlciksICB0aGUgYml0CiAgICAgcG9zaXRpb24g b2YgdGhlIGZpZWxkIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIGJvdW5kcyBkYXRhLiAg Ki8KICAKQEAgLTU2Niw3ICs1NjYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9h ZGEtbGFuZy5jCiAgZmF0X3BudHJfYm91bmRzX2JpdHBvcyAoc3RydWN0IHR5cGUgKnR5cGUpCiAg ewogICAgcmV0dXJuIFRZUEVfRklFTERfQklUUE9TIChkZXNjX2Jhc2VfdHlwZSAodHlwZSksIDEp OwotQEAgLTE2NjcsNyArMTY2OCw3IEBAIGRlc2NfZGF0YSAoc3RydWN0IHZhbHVlICphcnIpCitA QCAtMTY2OCw3ICsxNjY5LDcgQEAgZGVzY19kYXRhIChzdHJ1Y3QgdmFsdWUgKmFycikKICAvKiBJ ZiBUWVBFIGlzIHRoZSB0eXBlIG9mIGFuIGFycmF5LWRlc2NyaXB0b3IgKGZhdCBwb2ludGVyKSwg dGhlIGJpdAogICAgIHBvc2l0aW9uIG9mIHRoZSBmaWVsZCBjb250YWluaW5nIHRoZSBhZGRyZXNz IG9mIHRoZSBkYXRhLiAgKi8KICAKQEAgLTU3NSw3ICs1NzUsNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgZmF0X3BudHJfZGF0YV9iaXRwb3MgKHN0cnVjdCB0 eXBlICp0eXBlKQogIHsKICAgIHJldHVybiBUWVBFX0ZJRUxEX0JJVFBPUyAoZGVzY19iYXNlX3R5 cGUgKHR5cGUpLCAwKTsKLUBAIC0xNzAyLDcgKzE3MDMsNyBAQCBkZXNjX29uZV9ib3VuZCAoc3Ry dWN0IHZhbHVlICpib3VuZHMsIGluCitAQCAtMTcwMyw3ICsxNzA0LDcgQEAgZGVzY19vbmVfYm91 bmQgKHN0cnVjdCB2YWx1ZSAqYm91bmRzLCBpbgogICAgIG9mIHRoZSBJdGggbG93ZXIgYm91bmQg c3RvcmVkIGluIGl0LCBpZiBXSElDSCBpcyAwLCBhbmQgdGhlIEl0aCB1cHBlcgogICAgIGJvdW5k LCBpZiBXSElDSCBpcyAxLiAgVGhlIGZpcnN0IGJvdW5kIGlzIEk9MS4gICovCiAgCkBAIC01ODQs NyArNTg0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwogIGRl c2NfYm91bmRfYml0cG9zIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGksIGludCB3aGljaCkKICB7 CiAgICByZXR1cm4gVFlQRV9GSUVMRF9CSVRQT1MgKGRlc2NfYmFzZV90eXBlICh0eXBlKSwgMiAq IGkgKyB3aGljaCAtIDIpOwotQEAgLTE4OTIsNyArMTg5Myw3IEBAIGFkYV90eXBlX29mX2FycmF5 IChzdHJ1Y3QgdmFsdWUgKmFyciwgaW4KK0BAIC0xODkzLDcgKzE4OTQsNyBAQCBhZGFfdHlwZV9v Zl9hcnJheSAoc3RydWN0IHZhbHVlICphcnIsIGluCiAgCSAgICAgICAgIHplcm8sIGFuZCBkb2Vz IG5vdCBuZWVkIHRvIGJlIHJlY29tcHV0ZWQuICAqLwogIAkgICAgICBpZiAobG8gPCBoaSkKICAJ CXsKQEAgLTU5Myw3ICs1OTMsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEt bGFuZy5jCiAgCQkgICAgICAgIChoaSAtIGxvICsgMSkgKiBUWVBFX0ZJRUxEX0JJVFNJWkUgKGVs dF90eXBlLCAwKTsKICAKICAJCSAgVFlQRV9MRU5HVEggKGFycmF5X3R5cGUpID0gKGFycmF5X2Jp dHNpemUgKyA3KSAvIDg7Ci1AQCAtMjA0NCw3ICsyMDQ1LDcgQEAgZGVjb2RlX3BhY2tlZF9hcnJh eV9iaXRzaXplIChzdHJ1Y3QgdHlwZQorQEAgLTIwNDUsNyArMjA0Niw3IEBAIGRlY29kZV9wYWNr ZWRfYXJyYXlfYml0c2l6ZSAoc3RydWN0IHR5cGUKICAgICBpbiBiaXRzLiAgKi8KICAKICBzdGF0 aWMgc3RydWN0IHR5cGUgKgpAQCAtNjAyLDcgKzYwMiw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2FkYS1sYW5nLmMKICB7CiAgICBzdHJ1Y3QgdHlwZSAqbmV3X2VsdF90eXBlOwog ICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwotQEAgLTIwOTYsNyArMjA5Nyw3IEBAIGRlY29kZV9j b25zdHJhaW5lZF9wYWNrZWRfYXJyYXlfdHlwZSAoc3QKK0BAIC0yMDk3LDcgKzIwOTgsNyBAQCBk ZWNvZGVfY29uc3RyYWluZWRfcGFja2VkX2FycmF5X3R5cGUgKHN0CiAgICBjaGFyICpuYW1lOwog ICAgY29uc3QgY2hhciAqdGFpbDsKICAgIHN0cnVjdCB0eXBlICpzaGFkb3dfdHlwZTsKQEAgLTYx MSw3ICs2MTEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAg CiAgICBpZiAoIXJhd19uYW1lKQogICAgICByYXdfbmFtZSA9IGFkYV90eXBlX25hbWUgKGRlc2Nf YmFzZV90eXBlICh0eXBlKSk7Ci1AQCAtMjE2Nyw3ICsyMTY4LDggQEAgZGVjb2RlX2NvbnN0cmFp bmVkX3BhY2tlZF9hcnJheSAoc3RydWN0CitAQCAtMjE2OCw3ICsyMTY5LDggQEAgZGVjb2RlX2Nv bnN0cmFpbmVkX3BhY2tlZF9hcnJheSAoc3RydWN0CiAgIAkgYXJyYXkgd2l0aCBubyB3cmFwcGVy LiAgSW4gb3JkZXIgdG8gaW50ZXJwcmV0IHRoZSB2YWx1ZSB0aHJvdWdoCiAgIAkgdGhlIChsZWZ0 LWp1c3RpZmllZCkgcGFja2VkIGFycmF5IHR5cGUgd2UganVzdCBidWlsdCwgd2UgbXVzdAogICAJ IGZpcnN0IGxlZnQtanVzdGlmeSBpdC4gICovCkBAIC02MjEsNyArNjIxLDcgQEAgSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwogICAgICAgIFVMT05HRVNUIG1vZDsKICAK ICAgICAgICBtb2QgPSBhZGFfbW9kdWx1cyAodmFsdWVfdHlwZSAoYXJyKSkgLSAxOwotQEAgLTIy NjgsMTUgKzIyNzAsMTYgQEAgaGFzX25lZ2F0aXZlcyAoc3RydWN0IHR5cGUgKnR5cGUpCitAQCAt MjI2OSwxNSArMjI3MSwxNiBAQCBoYXNfbmVnYXRpdmVzIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICAK ICBzdHJ1Y3QgdmFsdWUgKgogIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0 IHZhbHVlICpvYmosIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtNjQ0LDcgKzY0NCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgb2Ygc291cmNlIHRoYXQgYXJlIHVudXNlZCAqLwog ICAgICBhY2N1bVNpemU7ICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIG1lYW5pbmdmdWwg Yml0cyBpbiBhY2N1bSAqLwogICAgdW5zaWduZWQgY2hhciAqYnl0ZXM7ICAgICAgICAgLyogRmly c3QgYnl0ZSBjb250YWluaW5nIGRhdGEgdG8gdW5wYWNrICovCi1AQCAtMjMwOSw3ICsyMzEyLDcg QEAgYWRhX3ZhbHVlX3ByaW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3QgdgorQEAgLTIzMTAsNyAr MjMxMyw3IEBAIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHYKICAKICAg IGlmIChvYmogIT0gTlVMTCkKICAgICAgewpAQCAtNjUzLDcgKzY1Myw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAKICAgICAgICBzZXRfdmFsdWVfY29tcG9u ZW50X2xvY2F0aW9uICh2LCBvYmopOwogICAgICAgIHNldF92YWx1ZV9iaXRwb3MgKHYsIGJpdF9v ZmZzZXQgKyB2YWx1ZV9iaXRwb3MgKG9iaikpOwotQEAgLTI0MjYsNyArMjQyOSw3IEBAIGFkYV92 YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoc3RydWN0IHYKK0BAIC0yNDI3LDcgKzI0MzAsNyBA QCBhZGFfdmFsdWVfcHJpbWl0aXZlX3BhY2tlZF92YWwgKHN0cnVjdCB2CiAgICAgbm90IG92ZXJs YXAuICAqLwogIHN0YXRpYyB2b2lkCiAgbW92ZV9iaXRzIChnZGJfYnl0ZSAqdGFyZ2V0LCBpbnQg dGFyZ19vZmZzZXQsIGNvbnN0IGdkYl9ieXRlICpzb3VyY2UsCkBAIC02NjIsNyArNjYyLDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwogIHsKICAgIHVuc2lnbmVk IGludCBhY2N1bSwgbWFzazsKICAgIGludCBhY2N1bV9iaXRzLCBjaHVua19zaXplOwotQEAgLTI1 MTYsNyArMjUxOSw3IEBAIGFkYV92YWx1ZV9hc3NpZ24gKHN0cnVjdCB2YWx1ZSAqdG92YWwsIHMK K0BAIC0yNTE3LDcgKzI1MjAsNyBAQCBhZGFfdmFsdWVfYXNzaWduIChzdHJ1Y3QgdmFsdWUgKnRv dmFsLCBzCiAgICAgIHsKICAgICAgICBpbnQgbGVuID0gKHZhbHVlX2JpdHBvcyAodG92YWwpCiAg CQkgKyBiaXRzICsgSE9TVF9DSEFSX0JJVCAtIDEpIC8gSE9TVF9DSEFSX0JJVDsKQEAgLTY3MSw3 ICs2NzEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgICAg ICAgY2hhciAqYnVmZmVyID0gKGNoYXIgKikgYWxsb2NhIChsZW4pOwogICAgICAgIHN0cnVjdCB2 YWx1ZSAqdmFsOwogICAgICAgIENPUkVfQUREUiB0b19hZGRyID0gdmFsdWVfYWRkcmVzcyAodG92 YWwpOwotQEAgLTI1NjEsNyArMjU2NCw3IEBAIHZhbHVlX2Fzc2lnbl90b19jb21wb25lbnQgKHN0 cnVjdCB2YWx1ZQorQEAgLTI1NjIsNyArMjU2NSw3IEBAIHZhbHVlX2Fzc2lnbl90b19jb21wb25l bnQgKHN0cnVjdCB2YWx1ZQogICAgICAoTE9OR0VTVCkgICh2YWx1ZV9hZGRyZXNzIChjb21wb25l bnQpIC0gdmFsdWVfYWRkcmVzcyAoY29udGFpbmVyKSk7CiAgICBpbnQgYml0X29mZnNldF9pbl9j b250YWluZXIgPSAKICAgICAgdmFsdWVfYml0cG9zIChjb21wb25lbnQpIC0gdmFsdWVfYml0cG9z IChjb250YWluZXIpOwpAQCAtNjgwLDcgKzY4MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2FkYS1sYW5nLmMKICAgIAogICAgdmFsID0gdmFsdWVfY2FzdCAodmFsdWVfdHlwZSAo Y29tcG9uZW50KSwgdmFsKTsKICAKLUBAIC00MDgxLDcgKzQwODQsNyBAQCBlbnN1cmVfbHZhbCAo c3RydWN0IHZhbHVlICp2YWwpCitAQCAtNDA4Miw3ICs0MDg1LDcgQEAgZW5zdXJlX2x2YWwgKHN0 cnVjdCB2YWx1ZSAqdmFsKQogICAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbm90X2x2YWwKICAg ICAgICB8fCBWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfaW50ZXJuYWx2YXIpCiAgICAgIHsKQEAg LTY4OSw3ICs2ODksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5j CiAgICAgICAgY29uc3QgQ09SRV9BRERSIGFkZHIgPQogICAgICAgICAgdmFsdWVfYXNfbG9uZyAo dmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGxlbikpOwogIAotQEAgLTQxNTUsNyAr NDE1OCw3IEBAIHN0YXRpYyBDT1JFX0FERFIKK0BAIC00MTU2LDcgKzQxNTksNyBAQCBzdGF0aWMg Q09SRV9BRERSCiAgdmFsdWVfcG9pbnRlciAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IHR5 cGUgKnR5cGUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNo ICh0eXBlKTsKQEAgLTY5OCw3ICs2OTgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9hZGEtbGFuZy5jCiAgICBnZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChsZW4pOwogICAgQ09SRV9B RERSIGFkZHI7CiAgCi1AQCAtNjAyNCw3ICs2MDI3LDcgQEAgdmFsdWVfdGFnX2Zyb21fY29udGVu dHNfYW5kX2FkZHJlc3MgKHN0cgorQEAgLTYwNTEsNyArNjA1NCw3IEBAIHZhbHVlX3RhZ19mcm9t X2NvbnRlbnRzX2FuZF9hZGRyZXNzIChzdHIKICAJCQkJICAgICBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSIGFk ZHJlc3MpCiAgewpAQCAtNzA3LDcgKzcwNyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2FkYS1sYW5nLmMKICAgIHN0cnVjdCB0eXBlICp0YWdfdHlwZTsKICAKICAgIGlmIChmaW5k X3N0cnVjdF9maWVsZCAoIl90YWciLCB0eXBlLCAwLCAmdGFnX3R5cGUsICZ0YWdfYnl0ZV9vZmZz ZXQsCi1AQCAtNjQwNyw3ICs2NDEwLDcgQEAgYWRhX2luX3ZhcmlhbnQgKExPTkdFU1QgdmFsLCBz dHJ1Y3QgdHlwZQorQEAgLTY1MTYsNyArNjUxOSw3IEBAIGFkYV9pbl92YXJpYW50IChMT05HRVNU IHZhbCwgc3RydWN0IHR5cGUKICAgICBvbmx5IGluIHRoYXQgaXQgY2FuIGhhbmRsZSBwYWNrZWQg dmFsdWVzIG9mIGFyYml0cmFyeSB0eXBlLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoK QEAgLTcxNiw3ICs3MTYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFu Zy5jCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKmFyZ190eXBlKQog IHsKICAgIHN0cnVjdCB0eXBlICp0eXBlOwotQEAgLTY0MTksNyArNjQyMiw3IEBAIGFkYV92YWx1 ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQorQEAgLTY1MjgsNyArNjUzMSw3IEBAIGFk YV92YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQogIAogICAgaWYgKFRZUEVfRklF TERfQklUU0laRSAoYXJnX3R5cGUsIGZpZWxkbm8pICE9IDApCiAgICAgIHsKQEAgLTcyNSw3ICs3 MjUsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgICAgICAg aW50IGJpdF9zaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwgZmllbGRubyk7CiAg CiAgICAgICAgcmV0dXJuIGFkYV92YWx1ZV9wcmltaXRpdmVfcGFja2VkX3ZhbCAoYXJnMSwgdmFs dWVfY29udGVudHMgKGFyZzEpLAotQEAgLTY0NDYsOSArNjQ0OSw5IEBAIGFkYV92YWx1ZV9wcmlt aXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQorQEAgLTY1NTUsOSArNjU1OCw5IEBAIGFkYV92YWx1 ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZQogICAgIFJldHVybnMgMSBpZiBmb3VuZCwg MCBvdGhlcndpc2UuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTczNyw3ICs3MzcsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgCQkgICBpbnQgKmluZGV4X3Ap CiAgewogICAgaW50IGk7Ci1AQCAtNjQ2Niw4ICs2NDY5LDggQEAgZmluZF9zdHJ1Y3RfZmllbGQg KGNvbnN0IGNoYXIgKm5hbWUsIHN0cgorQEAgLTY1NzUsOCArNjU3OCw4IEBAIGZpbmRfc3RydWN0 X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lLCBzdHIKICAKICAgIGZvciAoaSA9IDA7IGkgPCBUWVBF X05GSUVMRFMgKHR5cGUpOyBpICs9IDEpCiAgICAgIHsKQEAgLTc0OCw3ICs3NDgsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgICAgICAgY29uc3QgY2hhciAq dF9maWVsZF9uYW1lID0gVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKTsKICAKICAgICAgICBpZiAo dF9maWVsZF9uYW1lID09IE5VTEwpCi1AQCAtNjUzNyw3ICs2NTQwLDcgQEAgbnVtX3Zpc2libGVf ZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC02NjQ2LDcgKzY2NDksNyBAQCBudW1fdmlz aWJsZV9maWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgIFNlYXJjaGVzIHJlY3Vyc2l2ZWx5 IHRocm91Z2ggd3JhcHBlciBmaWVsZHMgKGUuZy4sICdfcGFyZW50JykuICAqLwogIAogIHN0YXRp YyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNzU3LDcgKzc1Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHR5 cGUgKnR5cGUpCiAgewogICAgaW50IGk7Ci1AQCAtNjU3MCw3ICs2NTczLDcgQEAgYWRhX3NlYXJj aF9zdHJ1Y3RfZmllbGQgKGNoYXIgKm5hbWUsIHN0cgorQEAgLTY2NzksNyArNjY4Miw3IEBAIGFk YV9zZWFyY2hfc3RydWN0X2ZpZWxkIChjaGFyICpuYW1lLCBzdHIKICAgICAgICAgICAgaW50IGo7 CiAgICAgICAgICAgIHN0cnVjdCB0eXBlICpmaWVsZF90eXBlID0gYWRhX2NoZWNrX3R5cGVkZWYg KFRZUEVfRklFTERfVFlQRSAodHlwZSwKICAJCQkJCQkJCQlpKSk7CkBAIC03NjYsNyArNzY2LDcg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLWxhbmcuYwogIAogICAgICAgICAg ICBmb3IgKGogPSAwOyBqIDwgVFlQRV9ORklFTERTIChmaWVsZF90eXBlKTsgaiArPSAxKQogICAg ICAgICAgICAgIHsKLUBAIC02NTg4LDggKzY1OTEsOCBAQCBhZGFfc2VhcmNoX3N0cnVjdF9maWVs ZCAoY2hhciAqbmFtZSwgc3RyCitAQCAtNjY5Nyw4ICs2NzAwLDggQEAgYWRhX3NlYXJjaF9zdHJ1 Y3RfZmllbGQgKGNoYXIgKm5hbWUsIHN0cgogICAgcmV0dXJuIE5VTEw7CiAgfQogIApAQCAtNzc3 LDcgKzc3Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAK ICAKICAvKiBSZXR1cm4gZmllbGQgI0lOREVYIGluIEFSRywgd2hlcmUgdGhlIGluZGV4IGlzIHRo YXQgcmV0dXJuZWQgYnkKLUBAIC02NTk4LDcgKzY2MDEsNyBAQCBzdGF0aWMgc3RydWN0IHZhbHVl ICphZGFfaW5kZXhfc3RydWN0X2ZpCitAQCAtNjcwNyw3ICs2NzEwLDcgQEAgc3RhdGljIHN0cnVj dCB2YWx1ZSAqYWRhX2luZGV4X3N0cnVjdF9maQogICAqIElmIGZvdW5kLCByZXR1cm4gdmFsdWUs IGVsc2UgcmV0dXJuIE5VTEwuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNzg2 LDcgKzc4Niw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAJ CQlzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICByZXR1cm4gYWRhX2luZGV4X3N0cnVjdF9maWVs ZF8xICgmaW5kZXgsIGFyZywgb2Zmc2V0LCB0eXBlKTsKLUBAIC02NjEwLDcgKzY2MTMsNyBAQCBh ZGFfaW5kZXhfc3RydWN0X2ZpZWxkIChpbnQgaW5kZXgsIHN0cnVjCitAQCAtNjcxOSw3ICs2NzIy LDcgQEAgYWRhX2luZGV4X3N0cnVjdF9maWVsZCAoaW50IGluZGV4LCBzdHJ1YwogICAqICpJTkRF WF9QLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTc5NSw3ICs3OTUsNyBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgCQkJICBzdHJ1Y3QgdHlw ZSAqdHlwZSkKICB7CiAgICBpbnQgaTsKLUBAIC02NzAwLDcgKzY3MDMsOCBAQCBhZGFfdmFsdWVf c3RydWN0X2VsdCAoc3RydWN0IHZhbHVlICphcmcsCitAQCAtNjgwOSw3ICs2ODEyLDggQEAgYWRh X3ZhbHVlX3N0cnVjdF9lbHQgKHN0cnVjdCB2YWx1ZSAqYXJnLAogICAgICB2ID0gYWRhX3NlYXJj aF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZywgMCwgdCk7CiAgICBlbHNlCiAgICAgIHsKQEAgLTgw NSw3ICs4MDUsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAg ICAgICAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGU7CiAgICAgICAgQ09SRV9BRERSIGFkZHJlc3M7 CiAgCi1AQCAtNzAwNiw4ICs3MDEwLDggQEAgYWRhX2NvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAq dmFsMCkKK0BAIC03MTIyLDggKzcxMjYsOCBAQCBhZGFfY29lcmNlX3JlZiAoc3RydWN0IHZhbHVl ICp2YWwwKQogIC8qIFJldHVybiBPRkYgcm91bmRlZCB1cHdhcmQgaWYgbmVjZXNzYXJ5IHRvIGEg bXVsdGlwbGUgb2YKICAgICBBTElHTk1FTlQgKGEgcG93ZXIgb2YgMikuICAqLwogIApAQCAtODE2 LDcgKzgxNiw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICB7 CiAgICByZXR1cm4gKG9mZiArIGFsaWdubWVudCAtIDEpICYgfihhbGlnbm1lbnQgLSAxKTsKICB9 Ci1AQCAtNzM4NiwxMCArNzM5MCw5IEBAIGFkYV90ZW1wbGF0ZV90b19maXhlZF9yZWNvcmRfdHlw ZV8xIChzdHIKK0BAIC03NTAyLDEwICs3NTA2LDkgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3Jl Y29yZF90eXBlXzEgKHN0cgogICAgc3RydWN0IHZhbHVlICptYXJrID0gdmFsdWVfbWFyayAoKTsK ICAgIHN0cnVjdCB2YWx1ZSAqZHZhbDsKICAgIHN0cnVjdCB0eXBlICpydHlwZTsKQEAgLTgyOSw3 ICs4MjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtbGFuZy5jCiAgICBp bnQgZjsKICAKICAgIC8qIENvbXB1dGUgdGhlIG51bWJlciBvZiBmaWVsZHMgaW4gdGhpcyByZWNv cmQgdHlwZSB0aGF0IGFyZSBnb2luZwotQEAgLTc0NjAsNyArNzQ2Myw3IEBAIGFkYV90ZW1wbGF0 ZV90b19maXhlZF9yZWNvcmRfdHlwZV8xIChzdHIKK0BAIC03NTc2LDcgKzc1NzksNyBAQCBhZGFf dGVtcGxhdGVfdG9fZml4ZWRfcmVjb3JkX3R5cGVfMSAoc3RyCiAgCSAgICAgdGhhdCBmb2xsb3cg dGhpcyBvbmUuICAqLwogIAkgIGlmIChhZGFfaXNfYWxpZ25lcl90eXBlIChmaWVsZF90eXBlKSkK ICAJICAgIHsKQEAgLTgzOCw3ICs4MzgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9hZGEtbGFuZy5jCiAgCiAgCSAgICAgIGZpZWxkX3ZhbGFkZHIgPSBjb25kX29mZnNldF9ob3N0 IChmaWVsZF92YWxhZGRyLCBmaWVsZF9vZmZzZXQpOwogIAkgICAgICBmaWVsZF9hZGRyZXNzID0g Y29uZF9vZmZzZXRfdGFyZ2V0IChmaWVsZF9hZGRyZXNzLCBmaWVsZF9vZmZzZXQpOwotQEAgLTc1 NzksMTEgKzc1ODIsMTEgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90eXBlXzEgKHN0 cgorQEAgLTc3MDUsMTEgKzc3MDgsMTEgQEAgYWRhX3RlbXBsYXRlX3RvX2ZpeGVkX3JlY29yZF90 eXBlXzEgKHN0cgogICAgaWYgKFRZUEVfTEVOR1RIICh0eXBlKSA8PSAwKQogICAgICB7CiAgICAg ICAgaWYgKFRZUEVfTkFNRSAocnR5cGUpKQpAQCAtODU0LDcgKzg1NCw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgICAgfQogICAgZWxzZQogICAgICB7Ci1A QCAtNzkyMCw3ICs3OTIzLDggQEAgdG9fZml4ZWRfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnR5 cGUwLAorQEAgLTgwNDYsNyArODA0OSw4IEBAIHRvX2ZpeGVkX2FycmF5X3R5cGUgKHN0cnVjdCB0 eXBlICp0eXBlMCwKICAJIHR5cGUgd2FzIGEgcmVndWxhciAobm9uLXBhY2tlZCkgYXJyYXkgdHlw ZS4gIEFzIGEgcmVzdWx0LCB0aGUKICAJIGJpdHNpemUgb2YgdGhlIGFycmF5IGVsZW1lbnRzIG5l ZWRzIHRvIGJlIHNldCBhZ2FpbiwgYW5kIHRoZSBhcnJheQogIAkgbGVuZ3RoIG5lZWRzIHRvIGJl IHJlY29tcHV0ZWQgYmFzZWQgb24gdGhhdCBiaXRzaXplLiAgKi8KQEAgLTg2NCwxMSArODY0LDEx IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmMKICAgICAgICBpbnQg ZWx0X2JpdHNpemUgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUwLCAwKTsKICAKICAgICAgICBU WVBFX0ZJRUxEX0JJVFNJWkUgKHJlc3VsdCwgMCkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUw LCAwKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmgKK0luZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2FkYS1sYW5nLmgJMjAxMi0wMy0yOSAyMDoyMzowMC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmgJMjAxMi0x MS0wNyAyMjowOToyOS42NjkxNDEwMzUgKzAxMDAKLUBAIC0xNjgsNyArMTY4LDcgQEAgZXh0ZXJu IHZvaWQgYWRhX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlCistLS0gZ2RiLTcuNS41MC4yMDEzMDEx OC5vcmlnL2dkYi9hZGEtbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDYxNjAxMzAxICswMTAw CisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYWRhLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjI3 OjI4Ljg0NTYwNzI5NSArMDEwMAorQEAgLTE2OSw3ICsxNjksNyBAQCBleHRlcm4gdm9pZCBhZGFf cHJpbnRfdHlwZSAoc3RydWN0IHR5cGUKICBleHRlcm4gdm9pZCBhZGFfcHJpbnRfdHlwZWRlZiAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBzeW1ib2wgKm5ld19zeW1ib2wsCiAgCQkJICAgICAg IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwogIApAQCAtODc3LDcgKzg3Nyw3IEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS1sYW5nLmgKICAJCQkgICBzdHJ1Y3QgdWlfZmlsZSAq LCBpbnQsCiAgCQkJICAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICAgY29uc3Qgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgKik7Ci1AQCAtMTgzLDcgKzE4Myw3IEBAIGV4dGVybiB2b2lk IGFkYV9lbWl0X2NoYXIgKGludCwgc3RydWN0IHQKK0BAIC0xODQsNyArMTg0LDcgQEAgZXh0ZXJu IHZvaWQgYWRhX2VtaXRfY2hhciAoaW50LCBzdHJ1Y3QgdAogIGV4dGVybiB2b2lkIGFkYV9wcmlu dGNoYXIgKGludCwgc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKik7CiAgCiAgZXh0ZXJu IHZvaWQgYWRhX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqLCBzdHJ1Y3QgdHlwZSAqLCBjb25z dCBnZGJfYnl0ZSAqLApAQCAtODg2LDcgKzg4Niw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2FkYS1sYW5nLmgKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICopOwogIAogIHN0cnVjdCB2YWx1ZSAqYWRhX2NvbnZlcnRfYWN0dWFsIChzdHJ1Y3QgdmFsdWUg KmFjdHVhbCwKLUBAIC0yNTcsNyArMjU3LDcgQEAgZXh0ZXJuIGludCBhZGFfaXNfY29uc3RyYWlu ZWRfcGFja2VkX2FycgorQEAgLTI1OCw3ICsyNTgsNyBAQCBleHRlcm4gaW50IGFkYV9pc19jb25z dHJhaW5lZF9wYWNrZWRfYXJyCiAgCiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqYWRhX3ZhbHVlX3By aW1pdGl2ZV9wYWNrZWRfdmFsIChzdHJ1Y3QgdmFsdWUgKiwKICAJCQkJCQkgICAgIGNvbnN0IGdk Yl9ieXRlICosCkBAIC04OTUsMTEgKzg5NSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9hZGEtbGFuZy5oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gc3RydWN0IHR5cGUgKmFk YV9jb2VyY2VfdG9fc2ltcGxlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICopOwotSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXR5cGVwcmludC5jCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvYWRhLXR5cGVwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDEyLTA0LTE4IDA4OjQ2OjQ2LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXR5cGVwcmludC5jCTIw MTItMTEtMDcgMjI6MDk6MjkuNzA1MTQwOTgyICswMTAwCi1AQCAtODE1LDggKzgxNSw4IEBAIGFk YV9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZTAsIGNvbnMKKy0tLSBnZGItNy41LjUwLjIw MTMwMTE4Lm9yaWcvZ2RiL2FkYS10eXBlcHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA2MTYw MTMwMSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FkYS10eXBlcHJpbnQuYwky MDEzLTAxLTE4IDIzOjI3OjI4Ljg0NTYwNzI5NSArMDEwMAorQEAgLTgyOSw4ICs4MjksOCBAQCBh ZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAgICBjb25zdCBjaGFy ICpuYW1lID0gYWRhX3R5cGVfbmFtZSAodHlwZSk7CiAgCiAgCSAgICBpZiAoIWFkYV9pc19yYW5n ZV90eXBlX25hbWUgKG5hbWUpKQpAQCAtOTEwLDcgKzkxMCw3IEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2FkYS10eXBlcHJpbnQuYwogIAkgICAgZWxzZQogIAkgICAgICB7CiAgCQlm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJyYW5nZSAiKTsKLUBAIC04MzcsNyArODM3LDggQEAg YWRhX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlMCwgY29ucworQEAgLTg1MSw3ICs4NTEs OCBAQCBhZGFfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUwLCBjb25zCiAgCSAgfQogIAli cmVhazsKICAgICAgICBjYXNlIFRZUEVfQ09ERV9GTFQ6CkBAIC05MjAsMTEgKzkyMCwxMSBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdHlwZXByaW50LmMKICAJYnJlYWs7CiAg ICAgICAgY2FzZSBUWVBFX0NPREVfRU5VTToKICAJaWYgKHNob3cgPCAwKQotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9hZGEtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi9hZGEtdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50LmMJMjAxMi0xMS0w NyAyMjowOToyOS43MzExNDA5NDMgKzAxMDAKLUBAIC00MiwxNiArNDIsMTYgQEAgc3RhdGljIHZv aWQgcHJpbnRfcmVjb3JkIChzdHJ1Y3QgdHlwZSAqLAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgu b3JpZy9nZGIvYWRhLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNjI2MDEzMDMgKzAx MDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hZGEtdmFscHJpbnQuYwkyMDEzLTAxLTE4 IDIzOjI3OjI4Ljg0NjYwNzI5NyArMDEwMAorQEAgLTQxLDE2ICs0MSwxNiBAQCBzdGF0aWMgdm9p ZCBwcmludF9yZWNvcmQgKHN0cnVjdCB0eXBlICosCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqKTsKICAKICBzdGF0aWMgaW50IHByaW50X2ZpZWxkX3ZhbHVlcyAoc3Ry dWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwKQEAgLTk0NSw3ICs5NDUsNyBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdmFscHJpbnQuYwogIAkJCSAgICAgY29uc3Qgc3Ry dWN0IHZhbHVlICosCiAgCQkJICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq KTsKICAMCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIHZhbF9wcmludF9wYWNrZWRfYXJyYXlfZWxlbWVu dHMgKHN0cnVjdAorQEAgLTE0Myw3ICsxNDMsNyBAQCB2YWxfcHJpbnRfcGFja2VkX2FycmF5X2Vs ZW1lbnRzIChzdHJ1Y3QKICAgIHVuc2lnbmVkIGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CiAgICB1 bnNpZ25lZCBsZW47CiAgICBzdHJ1Y3QgdHlwZSAqZWx0dHlwZSwgKmluZGV4X3R5cGU7CkBAIC05 NTQsNyArOTU0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50 LmMKICAgIHVuc2lnbmVkIGxvbmcgYml0c2l6ZSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwg MCk7CiAgICBzdHJ1Y3QgdmFsdWUgKm1hcmsgPSB2YWx1ZV9tYXJrICgpOwogICAgTE9OR0VTVCBs b3cgPSAwOwotQEAgLTI5Myw3ICsyOTMsNyBAQCBhZGFfZW1pdF9jaGFyIChpbnQgYywgc3RydWN0 IHR5cGUgKnR5cGUsCitAQCAtMjkyLDcgKzI5Miw3IEBAIGFkYV9lbWl0X2NoYXIgKGludCBjLCBz dHJ1Y3QgdHlwZSAqdHlwZSwKICAgICBvZiBhIGNoYXJhY3Rlci4gICovCiAgCiAgc3RhdGljIGlu dApAQCAtOTYzLDcgKzk2Myw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS12 YWxwcmludC5jCiAgCSBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlcikKICB7CiAgICBpZiAodHlw ZV9sZW4gPT0gMSkKLUBAIC00NjUsMTEgKzQ2NSwxMSBAQCBhZGFfcHJpbnRfc2NhbGFyIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgTE9OCitAQCAtNDY0LDExICs0NjQsMTEgQEAgYWRhX3ByaW50X3NjYWxh ciAoc3RydWN0IHR5cGUgKnR5cGUsIExPTgogIAogIHN0YXRpYyB2b2lkCiAgcHJpbnRzdHIgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICplbHR0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqc3RyaW5nLApAQCAtOTc3LDcgKzk3Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2FkYS12YWxwcmludC5jCiAgICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwog ICAgaW50IGluX3F1b3RlcyA9IDA7CiAgICBpbnQgbmVlZF9jb21tYSA9IDA7Ci1AQCAtNDg0LDkg KzQ4NCw5IEBAIHByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QKK0BAIC00 ODMsOSArNDgzLDkgQEAgcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdAog ICAgICB7CiAgICAgICAgLyogUG9zaXRpb24gb2YgdGhlIGNoYXJhY3RlciB3ZSBhcmUgZXhhbWlu aW5nCiAgICAgICAgICAgdG8gc2VlIHdoZXRoZXIgaXQgaXMgcmVwZWF0ZWQuICAqLwpAQCAtOTg5 LDcgKzk4OSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS12YWxwcmludC5j CiAgCiAgICAgICAgUVVJVDsKICAKLUBAIC01MjAsNyArNTIwLDggQEAgcHJpbnRzdHIgKHN0cnVj dCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdAorQEAgLTUxNiw3ICs1MTYsOCBAQCBwcmludHN0ciAo c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0CiAgCSAgYWRhX2VtaXRfY2hhciAoY2hhcl9h dCAoc3RyaW5nLCBpLCB0eXBlX2xlbiwgYnl0ZV9vcmRlciksCiAgCQkJIGVsdHR5cGUsIHN0cmVh bSwgJ1wnJywgdHlwZV9sZW4pOwogIAkgIGZwdXRzX2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7CkBA IC05OTksNyArOTk5LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHBy aW50LmMKICAJICBpID0gcmVwMSAtIDE7CiAgCSAgdGhpbmdzX3ByaW50ZWQgKz0gb3B0aW9ucy0+ cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKICAJICBuZWVkX2NvbW1hID0gMTsKLUBAIC01NTYsNyAr NTU3LDcgQEAgcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdAorQEAgLTU0 NCw3ICs1NDUsNyBAQCBwcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0CiAg CiAgdm9pZAogIGFkYV9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5 cGUgKnR5cGUsCkBAIC0xMDA4LDcgKzEwMDgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9hZGEtdmFscHJpbnQuYwogIAkgICAgICBjb25zdCBjaGFyICplbmNvZGluZywgaW50IGZv cmNlX2VsbGlwc2VzLAogIAkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq b3B0aW9ucykKICB7Ci1AQCAtNTcwLDcgKzU3MSw3IEBAIGFkYV9wcmludHN0ciAoc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwgc3QKK0BAIC01NTgsNyArNTU5LDcgQEAgYWRhX3ByaW50c3RyIChzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdAogIAogIHZvaWQKICBhZGFfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0xMDE3LDcgKzEwMTcsNyBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdmFscHJpbnQuYwogIAkgICAgICAg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCSAgICAgICBjb25zdCBzdHJ1 Y3QgdmFsdWUgKnZhbCwKICAJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRpb25zKQotQEAgLTYwMiw4ICs2MDMsOCBAQCBhZGFfdmFsX3ByaW50X2FycmF5IChzdHJ1 Y3QgdHlwZSAqdHlwZSwKK0BAIC01OTAsOCArNTkxLDggQEAgYWRhX3ZhbF9wcmludF9hcnJheSAo c3RydWN0IHR5cGUgKnR5cGUsCiAgICAgIHsKICAgICAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9v cmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOwogICAgICAg IHN0cnVjdCB0eXBlICplbHR0eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAodHlwZSk7CkBAIC0xMDI4 LDcgKzEwMjgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hZGEtdmFscHJpbnQu YwogIAogICAgICAgIC8qIFdlIGtub3cgdGhhdCBFTFRUWVBFIGNhbm5vdCBwb3NzaWJseSBiZSBu dWxsLCBiZWNhdXNlIHdlIGZvdW5kCiAgCSB0aGF0IFRZUEUgaXMgYSBzdHJpbmctbGlrZSB0eXBl LiAgU2ltaWxhcmx5LCB0aGUgc2l6ZSBvZiBFTFRUWVBFCi1AQCAtNjIxLDcgKzYyMiw3IEBAIGFk YV92YWxfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTYwOSw3ICs2MTAsNyBA QCBhZGFfdmFsX3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAgICAgICAgICBlbGVt ZW50cyB1cCB0byBpdC4gICovCiAgICAgICAgaWYgKG9wdGlvbnMtPnN0b3BfcHJpbnRfYXRfbnVs bCkKICAgICAgICAgIHsKQEAgLTEwMzcsNyArMTAzNyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2FkYS12YWxwcmludC5jCiAgCiAgICAgICAgICAgIC8qIExvb2sgZm9yIGEgTlVM TCBjaGFyLiAgKi8KICAgICAgICAgICAgZm9yICh0ZW1wX2xlbiA9IDA7Ci1AQCAtNjU0LDcgKzY1 NSw3IEBAIGFkYV92YWxfcHJpbnRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTY0Miw3 ICs2NDMsNyBAQCBhZGFfdmFsX3ByaW50X2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKICBz dGF0aWMgdm9pZAogIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLApAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYWRhLXZhbHByaW50LmMKICAJCSBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgcmVjdXJzZSwKICAJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJ IGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotQEAgLTkyMywxMiAr OTI0LDEyIEBAIGFkYV92YWxfcHJpbnRfMSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnMKK0BAIC05 MTcsMTIgKzkxOCwxMiBAQCBhZGFfdmFsX3ByaW50XzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z CiAgCiAgc3RhdGljIGludAogIHByaW50X3ZhcmlhbnRfcGFydCAoc3RydWN0IHR5cGUgKnR5cGUs IGludCBmaWVsZF9udW0sCkBAIC0xMDYxLDcgKzEwNjEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9hZGEtdmFscHJpbnQuYwogIHsKICAgIHN0cnVjdCB0eXBlICp2YXJfdHlwZSA9 IFRZUEVfRklFTERfVFlQRSAodHlwZSwgZmllbGRfbnVtKTsKICAgIGludCB3aGljaCA9IGFkYV93 aGljaF92YXJpYW50X2FwcGxpZXMgKHZhcl90eXBlLCBvdXRlcl90eXBlLAotQEAgLTEwMzUsMTEg KzEwMzYsMTEgQEAgcHJpbnRfcmVjb3JkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZworQEAg LTEwMjksMTEgKzEwMzAsMTEgQEAgcHJpbnRfcmVjb3JkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZwogIAogIHN0YXRpYyBpbnQKICBwcmludF9maWVsZF92YWx1ZXMgKHN0cnVjdCB0eXBlICp0 eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTEwNzUsNyArMTA3NSw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FkYS12YWxwcmludC5jCiAgewogICAgaW50IGksIGxl bjsKICAKLUBAIC0xMTIwLDcgKzExMjEsNyBAQCBwcmludF9maWVsZF92YWx1ZXMgKHN0cnVjdCB0 eXBlICp0eXBlLCBjCitAQCAtMTA5OSw3ICsxMTAwLDcgQEAgcHJpbnRfZmllbGRfdmFsdWVzIChz dHJ1Y3QgdHlwZSAqdHlwZSwgYwogIAkgICAgfQogIAkgIGVsc2UKICAJICAgIHsKQEAgLTEwODQs MTEgKzEwODQsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYWRhLXZhbHByaW50 LmMKICAJICAgICAgaW50IGJpdF9zaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsK ICAJICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0czsKICAKLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2Fubm90YXRlLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9hbm5vdGF0ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL2Fubm90YXRlLmMJMjAxMi0wMS0wNCAwOToxNjo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Fubm90YXRlLmMJMjAxMi0xMS0wNyAyMjowOToyOS43MzIx NDA5NDIgKzAxMDAKLUBAIC01MjIsMjEgKzUyMiwyMSBAQCBhbm5vdGF0ZV9mcmFtZV9lbmQgKHZv aWQpCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9hbm5vdGF0ZS5jCTIwMTMtMDEt MTggMjM6Mjc6MjIuMDYyNjAxMzAzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv YW5ub3RhdGUuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg0NjYwNzI5NyArMDEwMAorQEAgLTUyMSwy MSArNTIxLDIxIEBAIGFubm90YXRlX2ZyYW1lX2VuZCAodm9pZCkKICB9CiAgDAogIHZvaWQKQEAg LTExMTQsMTEgKzExMTQsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYW5ub3Rh dGUuYwogIH0KICAKICB2b2lkCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbm5vdGF0 ZS5oCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYW5ub3RhdGUuaAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hbm5vdGF0ZS5oCTIwMTItMDEtMDQg MDk6MTY6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbm5v dGF0ZS5oCTIwMTItMTEtMDcgMjI6MDk6MjkuNzMzMTQwOTQxICswMTAwCi1AQCAtOTQsOCArOTQs OCBAQCBleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9zb3VyY2VfZW5kICh2CistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9hbm5vdGF0ZS5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDYy NjAxMzAzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYW5ub3RhdGUuaAkyMDEz LTAxLTE4IDIzOjI3OjI4Ljg0NjYwNzI5NyArMDEwMAorQEAgLTkzLDggKzkzLDggQEAgZXh0ZXJu IHZvaWQgYW5ub3RhdGVfZnJhbWVfc291cmNlX2VuZCAodgogIGV4dGVybiB2b2lkIGFubm90YXRl X2ZyYW1lX3doZXJlICh2b2lkKTsKICBleHRlcm4gdm9pZCBhbm5vdGF0ZV9mcmFtZV9lbmQgKHZv aWQpOwogIApAQCAtMTEyOSwxMCArMTEyOSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9hbm5vdGF0ZS5oCiAgZXh0ZXJuIHZvaWQgYW5ub3RhdGVfZWx0X3JlcF9lbmQgKHZvaWQp OwogIGV4dGVybiB2b2lkIGFubm90YXRlX2VsdCAodm9pZCk7CiAgZXh0ZXJuIHZvaWQgYW5ub3Rh dGVfYXJyYXlfc2VjdGlvbl9lbmQgKHZvaWQpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvYXJtLWxpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYXJtLWxp bnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2Fy bS1saW51eC1uYXQuYwkyMDEyLTA4LTAxIDE0OjU3OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLWxpbnV4LW5hdC5jCTIwMTItMTEtMDcgMjI6MDk6Mjku NzM0MTQwOTQwICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9hcm0tbGlu dXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNjM2MDEzMDUgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9hcm0tbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NDc2 MDcyOTggKzAxMDAKIEBAIC0xMDczLDcgKzEwNzMsNyBAQCBhcm1fbGludXhfcmVtb3ZlX2h3X2Jy ZWFrcG9pbnQgKHN0cnVjdCBnCiAgLyogQXJlIHdlIGFibGUgdG8gdXNlIGEgaGFyZHdhcmUgd2F0 Y2hwb2ludCBmb3IgdGhlIExFTiBieXRlcyBzdGFydGluZyBhdCAKICAgICBBRERSPyAgKi8KQEAg LTExNDIsMTEgKzExNDIsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLWxp bnV4LW5hdC5jCiAgewogICAgY29uc3Qgc3RydWN0IGFybV9saW51eF9od2JwX2NhcCAqY2FwID0g YXJtX2xpbnV4X2dldF9od2JwX2NhcCAoKTsKICAgIENPUkVfQUREUiBtYXhfd3BfbGVuZ3RoLCBh bGlnbmVkX2FkZHI7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC1nZGIuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F4LWdkYi5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2F4LWdkYi5jCTIwMTItMTEtMDcgMjI6MDM6NTcuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC1nZGIuYwkyMDEyLTEx LTA3IDIyOjA5OjI5LjczNjE0MDkzOCArMDEwMAotQEAgLTg0LDEyICs4NCwxMiBAQCBzdGF0aWMg dm9pZCBnZW5fdHJhY2VkX3BvcCAoc3RydWN0IGdkYmFyCistLS0gZ2RiLTcuNS41MC4yMDEzMDEx OC5vcmlnL2dkYi9heC1nZGIuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA2NDYwMTMwNyArMDEwMAor KysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F4LWdkYi5jCTIwMTMtMDEtMTggMjM6Mjc6Mjgu ODQ4NjA3Mjk5ICswMTAwCitAQCAtODMsMTIgKzgzLDEyIEBAIHN0YXRpYyB2b2lkIGdlbl90cmFj ZWRfcG9wIChzdHJ1Y3QgZ2RiYXIKICBzdGF0aWMgdm9pZCBnZW5fc2lnbl9leHRlbmQgKHN0cnVj dCBhZ2VudF9leHByICosIHN0cnVjdCB0eXBlICopOwogIHN0YXRpYyB2b2lkIGdlbl9leHRlbmQg KHN0cnVjdCBhZ2VudF9leHByICosIHN0cnVjdCB0eXBlICopOwogIHN0YXRpYyB2b2lkIGdlbl9m ZXRjaCAoc3RydWN0IGFnZW50X2V4cHIgKiwgc3RydWN0IHR5cGUgKik7CkBAIC0xMTYxLDcgKzEx NjEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC1nZGIuYwogIHN0YXRpYyB2 b2lkIGdlbl9zeW1fb2Zmc2V0IChzdHJ1Y3QgYWdlbnRfZXhwciAqLCBzdHJ1Y3Qgc3ltYm9sICop OwogIHN0YXRpYyB2b2lkIGdlbl92YXJfcmVmIChzdHJ1Y3QgZ2RiYXJjaCAqLCBzdHJ1Y3QgYWdl bnRfZXhwciAqYXgsCiAgCQkJIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgc3ltYm9s ICp2YXIpOwotQEAgLTEzNywxNSArMTM3LDE2IEBAIHN0YXRpYyB2b2lkIGdlbl9kZXJlZiAoc3Ry dWN0IGFnZW50X2V4cHIKK0BAIC0xMzYsMTUgKzEzNiwxNiBAQCBzdGF0aWMgdm9pZCBnZW5fZGVy ZWYgKHN0cnVjdCBhZ2VudF9leHByCiAgc3RhdGljIHZvaWQgZ2VuX2FkZHJlc3Nfb2YgKHN0cnVj dCBhZ2VudF9leHByICosIHN0cnVjdCBheHNfdmFsdWUgKik7CiAgc3RhdGljIHZvaWQgZ2VuX2Jp dGZpZWxkX3JlZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IGFnZW50X2V4cHIgKmF4 LAogIAkJCSAgICAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLApAQCAtMTE4MSw3ICsxMTgxLDcg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXgtZ2RiLmMKICAJCQkJICAgICBzdHJ1 Y3QgdHlwZSAqdHlwZSk7CiAgc3RhdGljIHZvaWQgZ2VuX3N0cnVjdF9yZWYgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCQkgICAgc3RydWN0IGF4c192 YWx1ZSAqdmFsdWUsCi1AQCAtNTcwLDcgKzU3MSw3IEBAIGdlbl9mZXRjaCAoc3RydWN0IGFnZW50 X2V4cHIgKmF4LCBzdHJ1Y3QKK0BAIC01NjksNyArNTcwLDcgQEAgZ2VuX2ZldGNoIChzdHJ1Y3Qg YWdlbnRfZXhwciAqYXgsIHN0cnVjdAogICAgIHJpZ2h0IHNoaWZ0IGl0IGJ5IC1ESVNUQU5DRSBi aXRzIGlmIERJU1RBTkNFIDwgMC4gIFRoaXMgZ2VuZXJhdGVzCiAgICAgdW5zaWduZWQgKGxvZ2lj YWwpIHJpZ2h0IHNoaWZ0cy4gICovCiAgc3RhdGljIHZvaWQKQEAgLTExOTAsNyArMTE5MCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdkYi5jCiAgewogICAgaWYgKGRpc3Rh bmNlID4gMCkKICAgICAgewotQEAgLTYyNCw3ICs2MjUsNyBAQCBnZW5fZnJhbWVfbG9jYWxzX2Fk ZHJlc3MgKHN0cnVjdCBnZGJhcmNoCitAQCAtNjIzLDcgKzYyNCw3IEBAIGdlbl9mcmFtZV9sb2Nh bHNfYWRkcmVzcyAoc3RydWN0IGdkYmFyY2gKICAgICBwcm9ncmFtbWluZyBpbiBNTCwgaXQgd291 bGQgYmUgY2xlYXJlciB3aHkgdGhlc2UgYXJlIHRoZSBzYW1lCiAgICAgdGhpbmcuICAqLwogIHN0 YXRpYyB2b2lkCkBAIC0xMTk5LDcgKzExOTksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9heC1nZGIuYwogIHsKICAgIC8qIEl0IHdvdWxkIHN1ZmZpY2UgdG8gc2ltcGx5IHB1c2gg dGhlIG9mZnNldCBhbmQgYWRkIGl0LCBidXQgdGhpcwogICAgICAgbWFrZXMgaXQgZWFzaWVyIHRv IHJlYWQgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIG9mZnNldHMgaW4gdGhlCi1AQCAtMTI4MCw3ICsx MjgxLDcgQEAgZ2VuX2FkZHJlc3Nfb2YgKHN0cnVjdCBhZ2VudF9leHByICpheCwgcworQEAgLTEy NzksNyArMTI4MCw3IEBAIGdlbl9hZGRyZXNzX29mIChzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHMK ICBzdGF0aWMgdm9pZAogIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IHN0cnVjdCBhZ2VudF9leHByICpheCwKICAJCSAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsIHN0 cnVjdCB0eXBlICp0eXBlLApAQCAtMTIwOCw3ICsxMjA4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYXgtZ2RiLmMKICB7CiAgICAvKiBOb3RlIHRoYXQgb3BzW2ldIGZldGNoZXMg OCA8PCBpIGJpdHMuICAqLwogICAgc3RhdGljIGVudW0gYWdlbnRfb3Agb3BzW10KLUBAIC0xMzE1 LDEzICsxMzE2LDEzIEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAK K0BAIC0xMzE0LDEzICsxMzE1LDEzIEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNz aW9uICpleHAKICAKICAgIC8qIFRoZSBmaXJzdCBhbmQgb25lLWFmdGVyLWxhc3QgYml0cyBpbiB0 aGUgZmllbGQsIGJ1dCByb3VuZGVkIGRvd24KICAgICAgIGFuZCB1cCB0byBieXRlIGJvdW5kYXJp ZXMuICAqLwpAQCAtMTIyNyw3ICsxMjI3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvYXgtZ2RiLmMKICAKICAgIC8qIFRoZSBpbmRleCBpbiBvcHMgb2YgdGhlIG9wY29kZSB3ZSdy ZSBjb25zaWRlcmluZy4gICovCiAgICBpbnQgb3A7Ci1AQCAtMTQ0MCw3ICsxNDQxLDcgQEAgZ2Vu X2JpdGZpZWxkX3JlZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cAorQEAgLTE0MzksNyArMTQ0MCw3 IEBAIGdlbl9iaXRmaWVsZF9yZWYgKHN0cnVjdCBleHByZXNzaW9uICpleHAKICBzdGF0aWMgdm9p ZAogIGdlbl9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgCQkgICAg IHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCkBAIC0xMjM2 LDcgKzEyMzYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC1nZGIuYwogIHsK ICAgIC8qIElzIHRoaXMgYSBiaXRmaWVsZD8gICovCiAgICBpZiAoVFlQRV9GSUVMRF9QQUNLRUQg KHR5cGUsIGZpZWxkbm8pKQotQEAgLTE0NjUsNyArMTQ2Niw3IEBAIGdlbl9wcmltaXRpdmVfZmll bGQgKHN0cnVjdCBleHByZXNzaW9uICoKK0BAIC0xNDY0LDcgKzE0NjUsNyBAQCBnZW5fcHJpbWl0 aXZlX2ZpZWxkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqCiAgc3RhdGljIGludAogIGdlbl9zdHJ1Y3Rf cmVmX3JlY3Vyc2l2ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IGFnZW50X2V4cHIg KmF4LAogIAkJCSAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCkBAIC0xMjQ1LDEwICsxMjQ1LDEw IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdkYi5jCiAgewogICAgaW50IGks IHJzbHQ7CiAgICBpbnQgbmJhc2VzID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKTsKLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdlbmVyYWwuYworSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL2F4LWdlbmVyYWwuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEy MDkyNi5vcmlnL2dkYi9heC1nZW5lcmFsLmMJMjAxMi0wNy0wMiAxNzoyOTozMy4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdlbmVyYWwuYwkyMDEyLTExLTA3 IDIyOjA5OjI5Ljc0MzE0MDkyNyArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvYXgtZ2VuZXJhbC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDY0NjAxMzA3ICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYXgtZ2VuZXJhbC5jCTIwMTMtMDEtMTggMjM6Mjc6Mjgu ODQ4NjA3Mjk5ICswMTAwCiBAQCAtMTkyLDcgKzE5Miw3IEBAIGF4X3plcm9fZXh0IChzdHJ1Y3Qg YWdlbnRfZXhwciAqeCwgaW50IG4KICAKICAvKiBBcHBlbmQgYSB0cmFjZV9xdWljayBpbnN0cnVj dGlvbiB0byBFWFBSLCB0byByZWNvcmQgTiBieXRlcy4gICovCkBAIC0xMjU4LDEwICsxMjU4LDEw IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2F4LWdlbmVyYWwuYwogIHsKICAgIC8q IE4gbXVzdCBmaXQgaW4gYSBieXRlLiAgKi8KICAgIGlmIChuIDwgMCB8fCBuID4gMjU1KQotSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXguaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2F4LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv YXguaAkyMDEyLTA3LTAyIDE3OjI5OjMzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYXguaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljc0NDE0MDkyNSArMDEwMAorLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYXguaAkyMDEzLTAxLTE4IDIzOjI3OjIyLjA2 NDYwMTMwNyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F4LmgJMjAxMy0wMS0x OCAyMzoyNzoyOC44NDg2MDcyOTkgKzAxMDAKIEBAIC0xOTAsNyArMTkwLDcgQEAgZXh0ZXJuIHZv aWQgYXhfZXh0IChzdHJ1Y3QgYWdlbnRfZXhwciAqRQogIGV4dGVybiB2b2lkIGF4X3plcm9fZXh0 IChzdHJ1Y3QgYWdlbnRfZXhwciAqRVhQUiwgaW50IE4pOwogIApAQCAtMTI3MSwxMSArMTI3MSwx MSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9heC5oCiAgCiAgLyogQXBwZW5kIGEg Z290byBvcCB0byBFWFBSLiAgT1AgaXMgdGhlIGFjdHVhbCBvcCAobXVzdCBiZSBhb3BfZ290byBv cgogICAgIGFvcF9pZl9nb3RvKS4gIFdlIGFzc3VtZSB3ZSBkb24ndCBrbm93IHRoZSB0YXJnZXQg b2Zmc2V0IHlldCwKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2JyZWFrcG9pbnQuYwor SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMi0xMS0wNyAy MjowOToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2JyZWFr cG9pbnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljc0ODE0MDkyMCArMDEwMAotQEAgLTY1NjUsNyAr NjU2NSw3IEBAIGJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaCAoc3RydWN0IGFkZHJlc3MKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEzLTAxLTE4IDIzOjI3 OjIyLjA2NzYwMTMxMiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2JyZWFrcG9p bnQuYwkyMDEzLTAxLTE4IDIzOjI5OjMzLjY1MjcyNjYwMyArMDEwMAorQEAgLTY2MjcsNyArNjYy Nyw3IEBAIGJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaCAoc3RydWN0IGFkZHJlc3MKICAKICBzdGF0 aWMgaW50CiAgYnJlYWtwb2ludF9hZGRyZXNzX21hdGNoX3JhbmdlIChzdHJ1Y3QgYWRkcmVzc19z cGFjZSAqYXNwYWNlMSwgQ09SRV9BRERSIGFkZHIxLApAQCAtMTI4Myw4ICsxMjgzLDggQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYnJlYWtwb2ludC5jCiArCQkJCUxPTkdFU1QgbGVu MSwgc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZTIsCiAgCQkJCUNPUkVfQUREUiBhZGRyMikK ICB7Ci0gICByZXR1cm4gKChnZGJhcmNoX2hhc19nbG9iYWxfYnJlYWtwb2ludHMgKHRhcmdldF9n ZGJhcmNoKQotQEAgLTExMDQzLDcgKzExMDQzLDcgQEAgY2FuX3VzZV9oYXJkd2FyZV93YXRjaHBv aW50IChzdHJ1Y3QgdmFsdQorICAgcmV0dXJuICgoZ2RiYXJjaF9oYXNfZ2xvYmFsX2JyZWFrcG9p bnRzICh0YXJnZXRfZ2RiYXJjaCAoKSkKK0BAIC0xMTE1NSw3ICsxMTE1NSw3IEBAIGNhbl91c2Vf aGFyZHdhcmVfd2F0Y2hwb2ludCAoc3RydWN0IHZhbHUKICAJCSAgICAgICYmIFRZUEVfQ09ERSAo dnR5cGUpICE9IFRZUEVfQ09ERV9BUlJBWSkpCiAgCQl7CiAgCQkgIENPUkVfQUREUiB2YWRkciA9 IHZhbHVlX2FkZHJlc3MgKHYpOwpAQCAtMTI5MywxMCArMTI5MywxMCBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9icmVha3BvaW50LmMKICAJCSAgaW50IG51bV9yZWdzOwogIAogIAkJ ICBsZW4gPSAodGFyZ2V0X2V4YWN0X3dhdGNocG9pbnRzCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9icmVha3BvaW50LmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9icmVh a3BvaW50LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYnJl YWtwb2ludC5oCTIwMTItMTEtMDcgMjI6MDA6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9icmVha3BvaW50LmgJMjAxMi0xMS0wNyAyMjowOToyOS43NzgxNDA4 NzUgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAky MDEzLTAxLTE4IDIzOjI3OjIyLjA2ODYwMTMxMyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2JyZWFrcG9pbnQuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NDYwNzMxMSArMDEwMAog QEAgLTI1MCw3ICsyNTAsNyBAQCBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8KICAKICAgIC8qIElmIHRo aXMgaXMgYSByYW5nZWQgYnJlYWtwb2ludCwgdGhlbiB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZQpA QCAtMTMxNSwxMSArMTMxNSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9icmVh a3BvaW50LmgKICAKICAgIC8qIFR5cGUgb2YgaGFyZHdhcmUgd2F0Y2hwb2ludC4gICovCiAgICBl bnVtIHRhcmdldF9od19icF90eXBlIHdhdGNocG9pbnRfdHlwZTsKLUluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2MtbGFuZy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYy1s YW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYy1sYW5n LmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2MtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuNzg2MTQwODY0ICswMTAwCi1A QCAtMTg5LDcgKzE4OSw3IEBAIGNfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUs IHMKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2MtbGFuZy5jCTIwMTMtMDEtMTgg MjM6Mjc6MjIuMDY5NjAxMzE1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYy1s YW5nLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NTQ2MDczMTEgKzAxMDAKK0BAIC0xODgsNyArMTg4 LDcgQEAgY19wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgcwogIAogIHZvaWQK ICBjX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg CkBAIC0xMzI4LDcgKzEzMjgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxh bmcuYwogIAkgICAgY29uc3QgY2hhciAqdXNlcl9lbmNvZGluZywgaW50IGZvcmNlX2VsbGlwc2Vz LAogIAkgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiAgewot QEAgLTY3OCw3ICs2NzgsNyBAQCBldmFsdWF0ZV9zdWJleHBfYyAoc3RydWN0IHR5cGUgKmV4cGVj dF90CitAQCAtNjc3LDcgKzY3Nyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9jIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3QKICAJICB9CiAgCWVsc2UKICAJICB7CkBAIC0xMzM3LDcgKzEzMzcsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuYwogIAogIAkgICAgLyogV3JpdGUgdGhl IHRlcm1pbmF0aW5nIGNoYXJhY3Rlci4gICovCiAgCSAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9M RU5HVEggKHR5cGUpOyArK2kpCi1AQCAtNjg3LDcgKzY4Nyw3IEBAIGV2YWx1YXRlX3N1YmV4cF9j IChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3QKK0BAIC02ODYsNyArNjg2LDcgQEAgZXZhbHVhdGVfc3Vi ZXhwX2MgKHN0cnVjdCB0eXBlICpleHBlY3RfdAogIAkgICAgaWYgKHNhdGlzZnlfZXhwZWN0ZWQp CiAgCSAgICAgIHsKICAJCUxPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwpAQCAtMTM0Niwx MSArMTM0NiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuYwogIAog IAkJaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKFRZUEVfSU5ERVhfVFlQRSAoZXhwZWN0X3R5cGUp LAogIAkJCQkJICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi1JbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9jLWxhbmcuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2Mt bGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2MtbGFu Zy5oCTIwMTItMDMtMDEgMjA6MjY6MTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9jLWxhbmcuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljc4NzE0MDg2MyArMDEwMAot QEAgLTcyLDcgKzcyLDcgQEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlw ZQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYy1sYW5nLmgJMjAxMy0wMS0xOCAy MzoyNzoyMi4wNjk2MDEzMTUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jLWxh bmcuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NDYwNzMxMSArMDEwMAorQEAgLTczLDcgKzczLDcg QEAgZXh0ZXJuIHZvaWQgY19wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZQogIAkJCSAgICAgc3Ry dWN0IHVpX2ZpbGUgKik7CiAgCiAgZXh0ZXJuIHZvaWQgY192YWxfcHJpbnQgKHN0cnVjdCB0eXBl ICosIGNvbnN0IGdkYl9ieXRlICosCkBAIC0xMzU5LDcgKzEzNTksNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9jLWxhbmcuaAogIAkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAg CQkJIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqKTsKLUBAIC05Miw3ICs5Miw3IEBAIGV4dGVybiB2b2lkIGNfcHJpbnRjaGFyIChp bnQsIHN0cnVjdCB0eXAKK0BAIC05Myw3ICs5Myw3IEBAIGV4dGVybiB2b2lkIGNfcHJpbnRjaGFy IChpbnQsIHN0cnVjdCB0eXAKICBleHRlcm4gdm9pZCBjX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmls ZSAqIHN0cmVhbSwKICAJCQlzdHJ1Y3QgdHlwZSAqZWx0dHlwZSwKICAJCQljb25zdCBnZGJfYnl0 ZSAqc3RyaW5nLApAQCAtMTM2OCw3ICsxMzY4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvYy1sYW5nLmgKICAJCQljb25zdCBjaGFyICp1c2VyX2VuY29kaW5nLAogIAkJCWludCBm b3JjZV9lbGxpcHNlcywKICAJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0 aW9ucyk7Ci1AQCAtMTE4LDE0ICsxMTgsMTQgQEAgZXh0ZXJuIHZvaWQgY3BfcHJpbnRfY2xhc3Nf bWVtYmVyIChjb25zdAorQEAgLTExOSwxNCArMTE5LDE0IEBAIGV4dGVybiB2b2lkIGNwX3ByaW50 X2NsYXNzX21lbWJlciAoY29uc3QKICAJCQkJICAgc3RydWN0IHVpX2ZpbGUgKiwgY2hhciAqKTsK ICAKICBleHRlcm4gdm9pZCBjcF9wcmludF92YWx1ZV9maWVsZHMgKHN0cnVjdCB0eXBlICosIHN0 cnVjdCB0eXBlICosCkBAIC0xMzg1LDExICsxMzg1LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2MtbGFuZy5oCiAgCQkJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJCQlj b25zdCBzdHJ1Y3QgdmFsdWUgKiwKICAJCQkJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICosCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLXZhbHByaW50LmMKK0luZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYy12YWxwcmludC5jCTIwMTItMDUtMTggMjM6MDI6 NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jLXZhbHByaW50 LmMJMjAxMi0xMS0wNyAyMjowOToyOS43ODkxNDA4NjEgKzAxMDAKLUBAIC0xMzMsNyArMTMzLDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvYy12YWxwcmludC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDY5 NjAxMzE1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYy12YWxwcmludC5jCTIw MTMtMDEtMTggMjM6Mjc6MjguODU1NjA3MzEzICswMTAwCitAQCAtMTMyLDcgKzEzMiw3IEBAIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKICAKICB2b2lkCiAgY192YWxf cHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTEz OTgsNyArMTM5OCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2MtdmFscHJpbnQu YwogIAkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkgICAgIGNv bnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxfdmFsdWUsCiAgCSAgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi1AQCAtMTQ0LDcgKzE0NCw3IEBAIGNfdmFsX3By aW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2QKK0BAIC0xNDMsNyArMTQzLDcgQEAgY192 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZAogICAgdW5zaWduZWQgbGVuOwog ICAgc3RydWN0IHR5cGUgKmVsdHR5cGUsICp1bnJlc29sdmVkX2VsdHR5cGU7CiAgICBzdHJ1Y3Qg dHlwZSAqdW5yZXNvbHZlZF90eXBlID0gdHlwZTsKQEAgLTE0MDcsNyArMTQwNyw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2MtdmFscHJpbnQuYwogICAgQ09SRV9BRERSIGFkZHI7 CiAgCiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUBAIC0zNjQsOSArMzY0LDkgQEAgY192YWxf cHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZAorQEAgLTM3OSw5ICszNzksOSBAQCBj X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCiAgCSAgLyogUHJpbnQgdnRh YmxlIGVudHJ5IC0gd2Ugb25seSBnZXQgaGVyZSBpZiBOT1QgdXNpbmcKICAJICAgICAtZnZ0YWJs ZV90aHVua3MuICAoT3RoZXJ3aXNlLCBsb29rIHVuZGVyCiAgCSAgICAgVFlQRV9DT0RFX1BUUi4p ICAqLwpAQCAtMTQyMCw3ICsxNDIwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv Yy12YWxwcmludC5jCiAgCSAgc3RydWN0IHR5cGUgKmZpZWxkX3R5cGUgPSBUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsCiAgCQkJCQkJICAgICBWVEJMX0ZOQUREUl9PRkZTRVQpOwogIAkgIENPUkVfQURE UiBhZGRyCi1AQCAtNDQ1LDcgKzQ0NSw4IEBAIGNfdmFsdWVfcHJpbnQgKHN0cnVjdCB2YWx1ZSAq dmFsLCBzdHJ1Y3QKK0BAIC00NjAsNyArNDYwLDggQEAgY192YWx1ZV9wcmludCAoc3RydWN0IHZh bHVlICp2YWwsIHN0cnVjdAogIAkgICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGUsICpyZWFsX3R5cGUsICp2YWxf dHlwZTsKQEAgLTE0MzAsMTAgKzE0MzAsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvYy12YWxwcmludC5jCiAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzID0gKm9w dGlvbnM7CiAgCiAgICBvcHRzLmRlcmVmX3JlZiA9IDE7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9jcC1hYmkuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NwLWFiaS5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2NwLWFiaS5jCTIw MTItMDMtMTUgMTY6NDM6MTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9jcC1hYmkuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljc5MDE0MDg1OSArMDEwMAorLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvY3AtYWJpLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4w NzA2MDEzMTcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jcC1hYmkuYwkyMDEz LTAxLTE4IDIzOjI3OjI4Ljg1NTYwNzMxMyArMDEwMAogQEAgLTY4LDEzICs2OCwxMyBAQCBpc19v cGVyYXRvcl9uYW1lIChjb25zdCBjaGFyICpuYW1lKQogICAgcmV0dXJuICgqY3VycmVudF9jcF9h YmkuaXNfb3BlcmF0b3JfbmFtZSkgKG5hbWUpOwogIH0KQEAgLTE0NjksMTAgKzE0NjksMTAgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3AtYWJpLmMKICB7CiAgICBzdHJ1Y3QgdHlw ZSAqcmV0ID0gTlVMTDsKICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci1JbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC1hYmkuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2NwLWFiaS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9y aWcvZ2RiL2NwLWFiaS5oCTIwMTItMDMtMTUgMTY6NDM6MTEuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC1hYmkuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljc5MjE0 MDg1NSArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvY3AtYWJpLmgJMjAx My0wMS0xOCAyMzoyNzoyMi4wNzA2MDEzMTcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9jcC1hYmkuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NTYwNzMxMyArMDEwMAogQEAgLTEw OCw3ICsxMDgsNyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV92aXJ0dWFsX2ZuX2ZpCiAg CQkJCQkgICAgIHN0cnVjdCBmbl9maWVsZCAqZiwKICAJCQkJCSAgICAgaW50IGosCkBAIC0xNTI3 LDEwICsxNTI3LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NwLWFiaS5oCiAg ICB2b2lkICgqcHJpbnRfbWV0aG9kX3B0cikgKGNvbnN0IGdkYl9ieXRlICpjb250ZW50cywKICAJ CQkgICAgc3RydWN0IHR5cGUgKnR5cGUsCiAgCQkJICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0p OwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3AtdmFscHJpbnQuYworSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NwLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjAuMjAxMjA5MjYub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjAwOjQ0 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3AtdmFscHJpbnQu YwkyMDEyLTExLTA3IDIyOjEyOjE0LjM5MjkwMTY5OSArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA3MDYwMTMx NyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NwLXZhbHByaW50LmMJMjAxMy0w MS0xOCAyMzoyNzoyOC44NTY2MDczMTUgKzAxMDAKIEBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyB2 b2lkIGNwX3ByaW50X3N0YXRpY19maWVsZCAoc3RydWMKICAJCQkJICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKik7CiAgCkBAIC0xNTQ5LDcgKzE1NDksNyBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9jcC12YWxwcmludC5jCiAgCQkgICAgICAgQ09SRV9BRERSIGFk ZHJlc3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkgICAgICAgaW50IHJlY3Vyc2UsIGNv bnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zICpvcHRpb25zLAotQEAgLTM2Myw3ICszNjMsNyBAQCBjcF9wcmludF92YWx1ZV9m aWVsZHMgKHN0cnVjdCB0eXBlICp0eXBlCitAQCAtMzQyLDcgKzM0Miw3IEBAIGNwX3ByaW50X3Zh bHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKnR5cGUKICAJCX0KICAJICAgICAgZWxzZSBpZiAoaSA9 PSB2cHRyX2ZpZWxkbm8gJiYgdHlwZSA9PSB2cHRyX2Jhc2V0eXBlKQogIAkJewpAQCAtMTU1OCw3 ICsxNTU4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3AtdmFscHJpbnQuYwog IAkJICBzdHJ1Y3QgdHlwZSAqaV90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKTsKICAK ICAJCSAgaWYgKHZhbHByaW50X2NoZWNrX3ZhbGlkaXR5IChzdHJlYW0sIGlfdHlwZSwgaV9vZmZz ZXQsIHZhbCkpCi1AQCAtNDQ2LDcgKzQ0Niw3IEBAIGNwX3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3Ry dWN0IHR5cGUgKnR5cGUKK0BAIC00MjUsNyArNDI1LDcgQEAgY3BfcHJpbnRfdmFsdWVfZmllbGRz IChzdHJ1Y3QgdHlwZSAqdHlwZQogIAogIHZvaWQKICBjcF9wcmludF92YWx1ZV9maWVsZHNfcnR0 aSAoc3RydWN0IHR5cGUgKnR5cGUsCkBAIC0xNTY3LDcgKzE1NjcsNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9jcC12YWxwcmludC5jCiAgCQkJICAgIENPUkVfQUREUiBhZGRyZXNz LAogIAkJCSAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgICAg Y29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi1AQCAtNDYyLDcgKzQ2Miw4IEBAIGNwX3ByaW50X3Zh bHVlX2ZpZWxkc19ydHRpIChzdHJ1Y3QgdHlwZQorQEAgLTQ0MSw3ICs0NDEsOCBAQCBjcF9wcmlu dF92YWx1ZV9maWVsZHNfcnR0aSAoc3RydWN0IHR5cGUKICAJCQlUQVJHRVRfQ0hBUl9CSVQgKiBU WVBFX0xFTkdUSCAodHlwZSkpKQogICAgICB7CiAgICAgICAgc3RydWN0IHZhbHVlICp2YWx1ZTsK QEAgLTE1NzcsNyArMTU3Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NwLXZh bHByaW50LmMKICAKICAgICAgICAvKiBVZ2gsIHdlIGhhdmUgdG8gY29udmVydCBiYWNrIHRvIGEg dmFsdWUgaGVyZS4gICovCiAgICAgICAgdmFsdWUgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9h ZGRyZXNzICh0eXBlLCB2YWxhZGRyICsgb2Zmc2V0LAotQEAgLTQ4Niw3ICs0ODcsNyBAQCBjcF9w cmludF92YWx1ZV9maWVsZHNfcnR0aSAoc3RydWN0IHR5cGUKK0BAIC00NjUsNyArNDY2LDcgQEAg Y3BfcHJpbnRfdmFsdWVfZmllbGRzX3J0dGkgKHN0cnVjdCB0eXBlCiAgCiAgc3RhdGljIHZvaWQK ICBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyZWFsX3R5 cGUsCkBAIC0xNTg2LDcgKzE1ODYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9j cC12YWxwcmludC5jCiAgCQlDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSwKICAJCWludCByZWN1cnNlLCBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCWNvbnN0IHN0 cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAgLTQ5Niw3ICs0OTcsNyBAQCBj cF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjCitAQCAtNDc1LDcgKzQ3Niw3 IEBAIGNwX3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWMKICAgICAgPSAoc3Ry dWN0IHR5cGUgKiopIG9ic3RhY2tfbmV4dF9mcmVlICgmZG9udF9wcmludF92Yl9vYnN0YWNrKTsK ICAgIHN0cnVjdCBvYnN0YWNrIHRtcF9vYnN0YWNrID0gZG9udF9wcmludF92Yl9vYnN0YWNrOwog ICAgaW50IGksIG5fYmFzZWNsYXNzZXMgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpOwpAQCAt MTU5NSw3ICsxNTk1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvY3AtdmFscHJp bnQuYwogICAgc3RydWN0IHR5cGUgKnRoaXN0eXBlOwogIAogICAgaWYgKGRvbnRfcHJpbnRfdmIg PT0gMCkKLUBAIC01MTAsNyArNTExLDcgQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1YworQEAgLTQ4OSw3ICs0OTAsNyBAQCBjcF9wcmludF92YWx1ZSAoc3RydWN0IHR5 cGUgKnR5cGUsIHN0cnVjCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgbl9iYXNlY2xhc3NlczsgaSsr KQogICAgICB7CkBAIC0xNjA0LDEwICsxNjA0LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2NwLXZhbHByaW50LmMKICAgICAgICBpbnQgc2tpcDsKICAgICAgICBzdHJ1Y3QgdHlw ZSAqYmFzZWNsYXNzID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9CQVNFQ0xBU1MgKHR5cGUsIGkpKTsK ICAgICAgICBjb25zdCBjaGFyICpiYXNlbmFtZSA9IFRZUEVfTkFNRSAoYmFzZWNsYXNzKTsKLUlu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2QtbGFuZy5oCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvZC1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYu b3JpZy9nZGIvZC1sYW5nLmgJMjAxMi0wMy0wMSAyMDoyNjoxMi4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2QtbGFuZy5oCTIwMTItMTEtMDcgMjI6MDk6MjkuNzk1 MTQwODUyICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9kLWxhbmcuaAky MDEzLTAxLTE4IDIzOjI3OjIyLjA3MDYwMTMxNyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2QtbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODU2NjA3MzE1ICswMTAwCiBAQCAt MjUsNyArMjUsNyBAQAogIGV4dGVybiBjaGFyICpkX2RlbWFuZ2xlIChjb25zdCBjaGFyICptYW5n bGVkLCBpbnQgb3B0aW9ucyk7CiAgCkBAIC0xNjE3LDEwICsxNjE3LDEwIEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2QtbGFuZy5oCiAgCQkJIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IGludCByZWN1cnNlLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgY29uc3Qg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvZC12YWxwcmludC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv ZC12YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2Ri L2QtdmFscHJpbnQuYwkyMDEyLTAzLTAxIDIwOjI2OjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvZC12YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MDk6MjkuNzk1 MTQwODUyICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9kLXZhbHByaW50 LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNzE2MDEzMTkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9kLXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NTY2MDczMTUgKzAx MDAKIEBAIC0yOSw3ICsyOSw3IEBACiAgCiAgc3RhdGljIGludApAQCAtMTY0MywxMSArMTY0Mywx MSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kLXZhbHByaW50LmMKICAgICAgICAg ICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiAgewogICAg aW50IHJldDsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2RvdWJsZXN0LmMKK0luZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9kb3VibGVzdC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2RvdWJsZXN0LmMJMjAxMi0wMS0wNCAwOToxNzowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2RvdWJsZXN0LmMJMjAx Mi0xMS0wNyAyMjowOToyOS43OTcxNDA4NDggKzAxMDAKLUBAIC03NzAsNyArNzcwLDcgQEAgZmxv YXRmb3JtYXRfZnJvbV9kb3VibGVzdCAoY29uc3Qgc3RydWN0CistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi9kb3VibGVzdC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDcxNjAxMzE5ICsw MTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZG91Ymxlc3QuYwkyMDEzLTAxLTE4IDIz OjI3OjI4Ljg1NjYwNzMxNSArMDEwMAorQEAgLTc5MSw3ICs3OTEsNyBAQCBmbG9hdGZvcm1hdF9m cm9tX2RvdWJsZXN0IChjb25zdCBzdHJ1Y3QKICAgICBidXQgbm90IHBhc3NlZCBvbiBieSBHREIu ICBUaGlzIHNob3VsZCBiZSBmaXhlZC4gICovCiAgCiAgc3RhdGljIGNvbnN0IHN0cnVjdCBmbG9h dGZvcm1hdCAqCkBAIC0xNjU2LDcgKzE2NTYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9kb3VibGVzdC5jCiAgewogICAgY29uc3Qgc3RydWN0IGZsb2F0Zm9ybWF0ICpmb3JtYXQ7 CiAgCi1AQCAtNzk4LDggKzc5OCw4IEBAIGZsb2F0Zm9ybWF0X2Zyb21fbGVuZ3RoIChzdHJ1Y3Qg Z2RiYXJjaAorQEAgLTgxOSw4ICs4MTksOCBAQCBmbG9hdGZvcm1hdF9mcm9tX2xlbmd0aCAoc3Ry dWN0IGdkYmFyY2gKICAgIGVsc2UKICAgICAgZm9ybWF0ID0gTlVMTDsKICAgIGlmIChmb3JtYXQg PT0gTlVMTCkKQEAgLTE2NjcsMTAgKzE2NjcsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvZG91Ymxlc3QuYwogICAgcmV0dXJuIGZvcm1hdDsKICB9CiAgCi1JbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJsb2MuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2R3YXJmMmxvYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL2R3YXJmMmxvYy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJsb2MuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljgw MDE0MDg0NCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZHdhcmYybG9j LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wNzM2MDEzMjMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9kd2FyZjJsb2MuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg1NzYwNzMxNiArMDEw MAogQEAgLTE2NzIsMTkgKzE2NzIsMTkgQEAgaW5zZXJ0X2JpdHMgKHVuc2lnbmVkIGludCBkYXR1 bSwKICAgICBCSVRTX0JJR19FTkRJQU4gaXMgdGFrZW4gZGlyZWN0bHkgZnJvbSBnZGJhcmNoLiAg Ki8KICAKQEAgLTE4MTUsNyArMTgxNSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2R3YXJmMmxvYy5jCiAgCiAgICAgICAgaWYgKGJpdF9vZmZzZXQgPiAwKQogIAl7Ci1AQCAtMjQw MCw3ICsyNDAxLDcgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHN0cnVjdCB0eQor QEAgLTI0MDEsNyArMjQwMiw3IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1 Y3QgdHkKICAJICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWUgPSBkd2FyZl9leHByX2ZldGNoIChjdHgs IDApOwogIAkgICAgZ2RiX2J5dGUgKmNvbnRlbnRzOwogIAkgICAgY29uc3QgZ2RiX2J5dGUgKnZh bF9ieXRlczsKQEAgLTE4MjQsMTEgKzE4MjQsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvZHdhcmYybG9jLmMKICAKICAJICAgIGlmIChieXRlX29mZnNldCArIFRZUEVfTEVOR1RI ICh0eXBlKSA+IG4pCiAgCSAgICAgIGludmFsaWRfc3ludGhldGljX3BvaW50ZXIgKCk7Ci1JbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAx MjA5MjYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJyZWFkLmMJMjAxMi0xMS0w NyAyMjowOToyOS44MDkxNDA4MzIgKzAxMDAKLUBAIC0xMTI4LDEyICsxMTI4LDEyIEBAIGR3YXJm Ml9jb21wbGV4X2xvY2F0aW9uX2V4cHJfY29tcGxhaW50ICgKKy0tLSBnZGItNy41LjUwLjIwMTMw MTE4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA3NjYwMTMyOCAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2R3YXJmMnJlYWQuYwkyMDEzLTAxLTE4 IDIzOjI3OjI4Ljg2MDYwNzMyMSArMDEwMAorQEAgLTEyMTYsMTIgKzEyMTYsMTIgQEAgZHdhcmYy X2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKAogIH0KICAKICBzdGF0aWMgdm9pZApA QCAtMTg0NSw3ICsxODQ1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZHdhcmYy cmVhZC5jCiAgfQogIAogIHN0YXRpYyB2b2lkCi1AQCAtOTgzMSw4ICs5ODMxLDggQEAgZHdhcmYy X2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcAorQEAgLTEwNjE1LDggKzEwNjE1LDgg QEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcAogIAkgICAgICAgICBv YmplY3QsIGFuZCB0aGVuIHN1YnRyYWN0IG9mZiB0aGUgbnVtYmVyIG9mIGJpdHMgb2YKICAJICAg ICAgICAgdGhlIGZpZWxkIGl0c2VsZi4gIFRoZSByZXN1bHQgaXMgdGhlIGJpdCBvZmZzZXQgb2YK ICAJICAgICAgICAgdGhlIExTQiBvZiB0aGUgZmllbGQuICAqLwpAQCAtMTg1NiwyMSArMTg1Niwy MSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kd2FyZjJyZWFkLmMKICAKICAJICAg ICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwogIAkgICAg ICBpZiAoYXR0cikKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2YWwuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2V2YWwuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi9ldmFsLmMJMjAxMi0xMS0wNyAyMjowMDo0MS4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2YWwuYwkyMDEyLTExLTA3IDIyOjEz OjUyLjA5NjgzNzMxNCArMDEwMAotQEAgLTMyMCw3ICszMjAsOCBAQCBldmFsdWF0ZV9zdHJ1Y3Rf dHVwbGUgKHN0cnVjdCB2YWx1ZSAqc3RyCi0gICAgICAgaW50IHBjID0gKnBvczsKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2V2YWwuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA3ODYw MTMzMSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2V2YWwuYwkyMDEzLTAxLTE4 IDIzOjMwOjI3LjQzMjc4NTcxMiArMDEwMAorQEAgLTI5NCw3ICsyOTQsOCBAQCBldmFsdWF0ZV9z dHJ1Y3RfdHVwbGUgKHN0cnVjdCB2YWx1ZSAqc3RyCisgICB3aGlsZSAoLS1uYXJncyA+PSAwKQor ICAgICB7CiAgICAgICAgc3RydWN0IHZhbHVlICp2YWwgPSBOVUxMOwotICAgICAgIGludCBubGFi ZWxzID0gMDsKIC0gICAgICBpbnQgYml0cG9zLCBiaXRzaXplOwotKyAgICAgIGludCBiaXRzaXpl OwogKyAgICAgIExPTkdFU1QgYml0cG9zOworKyAgICAgIGludCBiaXRzaXplOwogICAgICAgIGJm ZF9ieXRlICphZGRyOwogIAotICAgICAgIC8qIFNraXAgcGFzdCB0aGUgbGFiZWxzLCBhbmQgY291 bnQgdGhlbS4gICovCi1AQCAtNDYzLDcgKzQ2NCw3IEBAIGluaXRfYXJyYXlfZWxlbWVudCAoc3Ry dWN0IHZhbHVlICphcnJheSwKKyAgICAgICBmaWVsZG5vKys7CitAQCAtMzU2LDcgKzM1Nyw3IEBA IGluaXRfYXJyYXlfZWxlbWVudCAoc3RydWN0IHZhbHVlICphcnJheSwKICAJCSAgICBlbnVtIG5v c2lkZSBub3NpZGUsIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQpCiAgewog ICAgTE9OR0VTVCBpbmRleDsKQEAgLTE4NzksNyArMTg3OSw3IEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2V2YWwuYwogIAogICAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0g QklOT1BfQ09NTUEpCiAgICAgIHsKLUBAIC04MTYsMTEgKzgxNywxMSBAQCBiaW5vcF9wcm9tb3Rl IChjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmCitAQCAtNzA5LDExICs3MTAsMTEgQEAgYmlub3Bf cHJvbW90ZSAoY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZgogICAgICAvKiBGSVhNRTogQWxzbyBt aXhlZCBpbnRlZ3JhbC9ib29sZWFucywgd2l0aCByZXN1bHQgYW4gaW50ZWdlci4gICovCiAgICAg IHsKICAgICAgICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpidWlsdGluID0gYnVpbHRpbl90 eXBlIChnZGJhcmNoKTsKQEAgLTE4OTQsOCArMTg5NCw4IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2V2YWwuYwogICAgICAgIGludCB1bnNpZ25lZF9vcGVyYXRpb247CiAgCiAgICAg ICAgLyogRGV0ZXJtaW5lIHR5cGUgbGVuZ3RoIGFuZCBzaWduZWRuZXNzIGFmdGVyIHByb21vdGlv biBmb3IKLUBAIC0xMDA0LDcgKzEwMDUsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICplCi0gICBpbnQgbG93ZXI7CitAQCAtODk2LDcgKzg5Nyw3IEBAIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKKyAgIHN0cnVjdCB2YWx1ZSAqKmFyZ3Zl YzsKICAgIGludCBjb2RlOwogICAgaW50IGl4OwogLSAgbG9uZyBtZW1fb2Zmc2V0OwpAQCAtMTkw Myw3ICsxOTAzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZXZhbC5jCiAgICBz dHJ1Y3QgdHlwZSAqKmFyZ190eXBlczsKICAgIGludCBzYXZlX3BvczE7CiAgICBzdHJ1Y3Qgc3lt Ym9sICpmdW5jdGlvbiA9IE5VTEw7Ci1AQCAtMTE5NCw3ICsxMTk1LDcgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTEwNzYsNyArMTA3Nyw3IEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKICAJICBzdHJ1Y3QgdHlwZSAqcmFu Z2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7CiAgCSAgc3RydWN0IHR5cGUgKmVsZW1l bnRfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpOwogIAkgIHN0cnVjdCB2YWx1ZSAqYXJy YXkgPSBhbGxvY2F0ZV92YWx1ZSAoZXhwZWN0X3R5cGUpOwpAQCAtMTkxMiw3ICsxOTEyLDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZXZhbC5jCiAgCSAgTE9OR0VTVCBsb3dfYm91 bmQsIGhpZ2hfYm91bmQsIGluZGV4OwogIAogIAkgIGlmIChnZXRfZGlzY3JldGVfYm91bmRzIChy YW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQotQEAgLTIxOTQsNyArMjE5 NSw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmUKK0BAIC0yMDgx LDcgKzIwODIsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICplCiAg ICAgICAgewogICAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlIChhcmcxKTsK ICAgICAgICAgIHN0cnVjdCB0eXBlICpyZWFsX3R5cGU7CkBAIC0xOTIyLDExICsxOTIyLDExIEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2V2YWwuYwogIAlzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyBvcHRzOwogIAogIAlnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci1J bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuYworSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL2YtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL2YtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljg0 NzE0MDc3NiArMDEwMAotQEAgLTEyNCw3ICsxMjQsNyBAQCBmX3ByaW50Y2hhciAoaW50IGMsIHN0 cnVjdCB0eXBlICp0eXBlLCBzCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9mLWxh bmcuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA3ODYwMTMzMSArMDEwMAorKysrIGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL2YtbGFuZy5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODYxNjA3MzIzICswMTAw CitAQCAtMTAzLDcgKzEwMyw3IEBAIGZfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5 cGUsIHMKICAKICBzdGF0aWMgdm9pZAogIGZfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0sIHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqc3RyaW5nLApAQCAtMTkzNSwx MSArMTkzNSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuYwogIAkg ICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCiAgewogICAgY29u c3QgY2hhciAqdHlwZV9lbmNvZGluZyA9IGZfZ2V0X2VuY29kaW5nICh0eXBlKTsKLUluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtbGFuZy5oCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvZi1sYW5nLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9n ZGIvZi1sYW5nLmgJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2YtbGFuZy5oCTIwMTItMTEtMDcgMjI6MTI6MzkuNTA0ODY1MjA4 ICswMTAwCi1AQCAtMzIsNyArMzIsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqZl9vYmplY3RfYWRk cmVzc19kYXRhCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9mLWxhbmcuaAkyMDEz LTAxLTE4IDIzOjI3OjIyLjA3ODYwMTMzMSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2YtbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODYxNjA3MzIzICswMTAwCitAQCAtMzMs NyArMzMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqZl9vYmplY3RfYWRkcmVzc19kYXRhCiAgICAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwogIGV4dGVybiB2b2lk IGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3RydWN0IHR5cGUgKnR5cGUp OwogIApAQCAtMTk0OCwxMCArMTk0OCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9mLWxhbmcuaAogIAkJCSBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJIGNvbnN0IHN0cnVj dCB2YWx1ZSAqLAogIAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUlu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtdmFscHJpbnQuYworSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL2YtdmFscHJpbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4y MDEyMDkyNi5vcmlnL2dkYi9mLXZhbHByaW50LmMJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtdmFscHJpbnQuYwkyMDEyLTEx LTA3IDIyOjA5OjI5Ljg0OTE0MDc3MiArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvZi12YWxwcmludC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDc5NjAxMzMzICswMTAwCisr KysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi12YWxwcmludC5jCTIwMTMtMDEtMTggMjM6Mjc6 MjguODYxNjA3MzIzICswMTAwCiBAQCAtNDMsNyArNDMsNyBAQCBzdGF0aWMgdm9pZCBmNzdfY3Jl YXRlX2FycmF5cHJpbnRfb2Zmc2V0CiAgCQkJCQkgICAgICBzdHJ1Y3QgdWlfZmlsZSAqKTsKICBz dGF0aWMgdm9pZCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5 cGUgKik7CkBAIC0yMDE2LDExICsyMDE2LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2YtdmFscHJpbnQuYwogIAogICAgICAgICAgICB2YWxfcHJpbnQgKFRZUEVfRklFTERfVFlQ RSAodHlwZSwgaW5kZXgpLCB2YWxhZGRyLAogIAkJICAgICBlbWJlZGRlZF9vZmZzZXQgKyBvZmZz ZXQsCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9maW5kdmFyLmMKK0luZGV4OiBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi9maW5kdmFyLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAu MjAxMjA5MjYub3JpZy9nZGIvZmluZHZhci5jCTIwMTItMTEtMDcgMjI6MDA6NDEuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9maW5kdmFyLmMJMjAxMi0xMS0wNyAy MjoxMDoyMS44NTUwNjUyMTAgKzAxMDAKLUBAIC02NDUsNyArNjQ1LDcgQEAgZGVmYXVsdF92YWx1 ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvZmluZHZhci5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDc5NjAxMzMzICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZmluZHZhci5jCTIwMTMtMDEtMTggMjM6MzA6NTMuNTEx ODE1NzE2ICswMTAwCitAQCAtNjQ0LDcgKzY0NCw3IEBAIGRlZmF1bHRfdmFsdWVfZnJvbV9yZWdp c3RlciAoc3RydWN0IHR5cGUKICAJCQkgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICB7 CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7CkBA IC0yMDI5LDcgKzIwMjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9maW5kdmFy LmMKICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWUgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CiAgCiAg ICBWQUxVRV9MVkFMICh2YWx1ZSkgPSBsdmFsX3JlZ2lzdGVyOwotQEAgLTY3NSwxMCArNjc1LDEw IEBAIHZvaWQKK0BAIC02NzcsMTAgKzY3NywxMCBAQCB2b2lkCiAgcmVhZF9mcmFtZV9yZWdpc3Rl cl92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQog IHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsK QEAgLTIwNDMsMjAgKzIwNDMsMjAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZmlu ZHZhci5jCiAgCiAgICBnZGJfYXNzZXJ0IChWQUxVRV9MVkFMICh2YWx1ZSkgPT0gbHZhbF9yZWdp c3Rlcik7CiAgCi1AQCAtNjkzLDcgKzY5Myw3IEBAIHJlYWRfZnJhbWVfcmVnaXN0ZXJfdmFsdWUg KHN0cnVjdCB2YWx1ZQorQEAgLTY5NSw3ICs2OTUsNyBAQCByZWFkX2ZyYW1lX3JlZ2lzdGVyX3Zh bHVlIChzdHJ1Y3QgdmFsdWUKICAgIHdoaWxlIChsZW4gPiAwKQogICAgICB7CiAgICAgICAgc3Ry dWN0IHZhbHVlICpyZWd2YWwgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdmFsdWUgKGZyYW1lLCByZWdu dW0pOwogLSAgICAgIGludCByZWdfbGVuID0gVFlQRV9MRU5HVEggKHZhbHVlX3R5cGUgKHJlZ3Zh bCkpIC0gcmVnX29mZnNldDsKICsgICAgICBMT05HRVNUIHJlZ19sZW4gPSBUWVBFX0xFTkdUSCAo dmFsdWVfdHlwZSAocmVndmFsKSkgLSByZWdfb2Zmc2V0OwogIAotICAgICAgIC8qIElmIHRoZSBy ZWdpc3RlciBsZW5ndGggaXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBieXRlcwotICAgICAg ICAgIHJlbWFpbmluZyB0byBjb3B5LCB0aGVuIG9ubHkgY29weSB0aGUgYXBwcm9wcmlhdGUgYnl0 ZXMuICAqLwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZnJhbWUuYworICAgICAgIGlm ICh2YWx1ZV9vcHRpbWl6ZWRfb3V0IChyZWd2YWwpKQorIAl7CitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvZnJhbWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5v cmlnL2dkYi9mcmFtZS5jCTIwMTItMDktMTcgMDk6MTc6MjcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mcmFtZS5jCTIwMTItMTEtMDcgMjI6MDk6MjkuODUzMTQw NzY4ICswMTAwCi1AQCAtMTExNyw3ICsxMTE3LDcgQEAgZnJhbWVfcmVnaXN0ZXJfcmVhZCAoc3Ry dWN0IGZyYW1lX2luZm8gKgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZnJhbWUu YwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4MDYwMTMzNSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2ZyYW1lLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjI2MDczMjUgKzAxMDAKK0BA IC0xMTEzLDcgKzExMTMsNyBAQCBkZXByZWNhdGVkX2ZyYW1lX3JlZ2lzdGVyX3JlYWQgKHN0cnVj dCBmCiAgCiAgaW50CiAgZ2V0X2ZyYW1lX3JlZ2lzdGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUsIGludCByZWdudW0sCkBAIC0yMDY1LDcgKzIwNjUsNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9mcmFtZS5jCiAgCQkJICBpbnQgKm9wdGltaXplZHAsIGludCAqdW5h dmFpbGFibGVwKQogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2Fy Y2ggKGZyYW1lKTsKLUBAIC0xMTQ2LDcgKzExNDYsNyBAQCBnZXRfZnJhbWVfcmVnaXN0ZXJfYnl0 ZXMgKHN0cnVjdCBmcmFtZV9pCitAQCAtMTE0Miw3ICsxMTQyLDcgQEAgZ2V0X2ZyYW1lX3JlZ2lz dGVyX2J5dGVzIChzdHJ1Y3QgZnJhbWVfaQogICAgICB9CiAgICBpZiAobGVuID4gbWF4c2l6ZSkK ICAgICAgZXJyb3IgKF8oIkJhZCBkZWJ1ZyBpbmZvcm1hdGlvbiBkZXRlY3RlZDogIgpAQCAtMjA3 NCwxMSArMjA3NCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mcmFtZS5jCiAg CiAgICAvKiBDb3B5IHRoZSBkYXRhLiAgKi8KICAgIHdoaWxlIChsZW4gPiAwKQotSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvZnJhbWUuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL2ZyYW1lLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv ZnJhbWUuaAkyMDEyLTAzLTAxIDIzOjQ3OjQ2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvZnJhbWUuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljg1NDE0MDc2NiArMDEw MAotQEAgLTUzMCw3ICs1MzAsNyBAQCBleHRlcm4gdm9pZCBwdXRfZnJhbWVfcmVnaXN0ZXIgKHN0 cnVjdCBmCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9mcmFtZS5oCTIwMTMtMDEt MTggMjM6Mjc6MjIuMDgwNjAxMzM1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv ZnJhbWUuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2MjYwNzMyNSArMDEwMAorQEAgLTUzMiw3ICs1 MzIsNyBAQCBleHRlcm4gdm9pZCBwdXRfZnJhbWVfcmVnaXN0ZXIgKHN0cnVjdCBmCiAgICAgY29u dGVudHMgYXJlIG9wdGltaXplZCBvdXQgb3IgdW5hdmFpbGFibGUsIHNldCAqT1BUSU1JWkVEUCwK ICAgICAqVU5BVkFJTEFCTEVQIGFjY29yZGluZ2x5LiAgKi8KICBleHRlcm4gaW50IGdldF9mcmFt ZV9yZWdpc3Rlcl9ieXRlcyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcmVnbnVtLApA QCAtMjA4NywxMSArMjA4NywxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mcmFt ZS5oCiAgCQkJCSAgICAgZ2RiX2J5dGUgKm15YWRkciwKICAJCQkJICAgICBpbnQgKm9wdGltaXpl ZHAsIGludCAqdW5hdmFpbGFibGVwKTsKICAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2dkYnR5cGVzLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9nZGJ0eXBlcy5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2dkYnR5cGVzLmMJMjAx Mi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2dkYnR5cGVzLmMJMjAxMi0xMS0wNyAyMjowOTo1Ny45MjQwOTk5ODIgKzAxMDAKLUBAIC0y MDg5LDcgKzIwODksNyBAQCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlw CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTMtMDEtMTgg MjM6Mjc6MjIuMDgxNjAxMzM3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2Ri dHlwZXMuYwkyMDEzLTAxLTE4IDIzOjI4OjUzLjc2OTY4NTI0MiArMDEwMAorQEAgLTIwOTEsNyAr MjA5MSw3IEBAIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICp0eXAKICAgICB3 aGVyZSBpbml0X3R5cGUgaXMgY2FsbGVkIHdpdGggYSBOVUxMIHZhbHVlIGZvciBOQU1FKS4gICov CiAgCiAgc3RydWN0IHR5cGUgKgpAQCAtMjEwMCw3ICsyMTAwLDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuYwogIAkgICBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLUBAIC0yMzIxLDggKzIzMjEs OCBAQCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICpiYXNlLCBzCitAQCAtMjMyNCw4 ICsyMzI0LDggQEAgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqYmFzZSwgcwogIAog IHN0YXRpYyBpbnQKICBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2VyIChzdHJ1Y3QgdHlwZSAqYmFz ZSwgc3RydWN0IHR5cGUgKmRjbGFzcywKQEAgLTIxMTEsNyArMjExMSw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2dkYnR5cGVzLmMKICAJCQkgICBDT1JFX0FERFIgYWRkcmVzcywg c3RydWN0IHZhbHVlICp2YWwpCiAgewogICAgaW50IGksIGNvdW50ID0gMDsKLUBAIC0yMzMzLDcg KzIzMzMsNyBAQCBpc191bmlxdWVfYW5jZXN0b3Jfd29ya2VyIChzdHJ1Y3QgdHlwZSAqCitAQCAt MjMzNiw3ICsyMzM2LDcgQEAgaXNfdW5pcXVlX2FuY2VzdG9yX3dvcmtlciAoc3RydWN0IHR5cGUg KgogICAgZm9yIChpID0gMDsgaSA8IFRZUEVfTl9CQVNFQ0xBU1NFUyAoZGNsYXNzKSAmJiBjb3Vu dCA8IDI7ICsraSkKICAgICAgewogICAgICAgIHN0cnVjdCB0eXBlICppdGVyOwpAQCAtMjEyMCw3 ICsyMTIwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuYwogIAog ICAgICAgIGl0ZXIgPSBjaGVja190eXBlZGVmIChUWVBFX0JBU0VDTEFTUyAoZGNsYXNzLCBpKSk7 CiAgCi1AQCAtMjM3NCw3ICsyMzc0LDcgQEAgaXNfdW5pcXVlX2FuY2VzdG9yX3dvcmtlciAoc3Ry dWN0IHR5cGUgKgorQEAgLTIzNzcsNyArMjM3Nyw3IEBAIGlzX3VuaXF1ZV9hbmNlc3Rvcl93b3Jr ZXIgKHN0cnVjdCB0eXBlICoKICBpbnQKICBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBl ICpiYXNlLCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CkBAIC0yMTI5LDcgKzIxMjksNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5jCiAgCiAgICByZXR1cm4gaXNfdW5p cXVlX2FuY2VzdG9yX3dvcmtlciAoYmFzZSwgdmFsdWVfdHlwZSAodmFsKSwgJm9mZnNldCwKICAJ CQkJICAgIHZhbHVlX2NvbnRlbnRzX2Zvcl9wcmludGluZyAodmFsKSwKLUBAIC0zMjc1LDcgKzMy NzUsNyBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0zMjg2 LDcgKzMyODYsNyBAQCByZWN1cnNpdmVfZHVtcF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAg ICAgICBicmVhazsKICAgICAgfQogICAgcHV0c19maWx0ZXJlZCAoIlxuIik7CkBAIC0yMTM4LDcg KzIxMzgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5jCiAgICBp ZiAoVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSkKICAgICAgewogICAgICAgIHByaW50ZmlfZmls dGVyZWQgKHNwYWNlcywgIm9iamZpbGUgIik7Ci1AQCAtMzM5NSw4ICszMzk1LDggQEAgcmVjdXJz aXZlX2R1bXBfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCitAQCAtMzQxMCw4ICszNDEwLDggQEAg cmVjdXJzaXZlX2R1bXBfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCQkJICBpZHgsIHBsb25n ZXN0IChUWVBFX0ZJRUxEX0VOVU1WQUwgKHR5cGUsIGlkeCkpKTsKICAgICAgICBlbHNlCiAgCXBy aW50ZmlfZmlsdGVyZWQgKHNwYWNlcyArIDIsCkBAIC0yMTQ5LDggKzIxNDksOCBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5jCiAgCQkJICBUWVBFX0ZJRUxEX0JJVFNJ WkUgKHR5cGUsIGlkeCkpOwogICAgICAgIGdkYl9wcmludF9ob3N0X2FkZHJlc3MgKFRZUEVfRklF TERfVFlQRSAodHlwZSwgaWR4KSwgZ2RiX3N0ZG91dCk7CiAgICAgICAgcHJpbnRmX2ZpbHRlcmVk ICgiIG5hbWUgJyVzJyAoIiwKLUBAIC00MTA1LDcgKzQxMDUsNyBAQCBmcmVlX2FsbF90eXBlcyAo dm9pZCkKLSAgICBDT0RFLCBMRU5HVEgsIGFuZCBOQU1FIGZpZWxkcy4gICovCitAQCAtMzkyNSw3 ICszOTI1LDcgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAKICBzdHJ1 Y3QgdHlwZSAqCiAgYXJjaF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKIC0JICAgZW51 bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmd0aCwgY2hhciAqbmFtZSkKQEAgLTIxNTgsMTEgKzIx NTgsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuYwogIHsKICAg IHN0cnVjdCB0eXBlICp0eXBlOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2Ri dHlwZXMuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dkYnR5cGVzLmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEyLTEx LTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv Z2RidHlwZXMuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljg2MTE0MDc1NSArMDEwMAotQEAgLTYwMiw3 ICs2MDIsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmln L2dkYi9nZGJ0eXBlcy5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDgyNjAxMzM5ICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZ2RidHlwZXMuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2 MzYwNzMyNyArMDEwMAorQEAgLTYwNiw3ICs2MDYsNyBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCSAg IGdkYmFyY2hfYml0c19iaWdfZW5kaWFuPTAgdGFyZ2V0cywgaXQgaXMgdGhlIGJpdCBvZmZzZXQg dG8KICAJICAgdGhlIExTQi4gICovCiAgCkBAIC0yMTcxLDcgKzIxNzEsNyBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5oCiAgCiAgCS8qIEVudW0gdmFsdWUuICAqLwog IAlMT05HRVNUIGVudW12YWw7Ci1AQCAtNzk0LDcgKzc5NCw3IEBAIHN0cnVjdCB0eXBlCitAQCAt Nzk4LDcgKzc5OCw3IEBAIHN0cnVjdCB0eXBlCiAgICAgICBIT1NUX0NIQVJfQklULiAgSG93ZXZl ciwgdGhpcyB3b3VsZCBzdGlsbCBmYWlsIHRvIGFkZHJlc3MKICAgICAgIG1hY2hpbmVzIGJhc2Vk IG9uIGEgdGVybmFyeSBvciBkZWNpbWFsIHJlcHJlc2VudGF0aW9uLiAgKi8KICAgIApAQCAtMjE4 MCw3ICsyMTgwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuaAog IAogICAgLyogQ29yZSB0eXBlLCBzaGFyZWQgYnkgYSBncm91cCBvZiBxdWFsaWZpZWQgdHlwZXMu ICAqLwogICAgc3RydWN0IG1haW5fdHlwZSAqbWFpbl90eXBlOwotQEAgLTE1NDYsMTEgKzE1NDYs MTIgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICphbGxvY190eXBlX2NvcHkgKGNvbgorQEAgLTE1NDIs MTEgKzE1NDIsMTIgQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICphbGxvY190eXBlX2NvcHkgKGNvbgog IGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3R5cGVfYXJjaCAoY29uc3Qgc3RydWN0IHR5cGUg Kik7CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9uIHRvIGNvbnN0cnVjdCBvYmpmaWxlLW93bmVkIHR5 cGVzLiAgKi8KQEAgLTIxOTUsMTEgKzIxOTUsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvZ2RidHlwZXMuaAogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqYXJjaF9pbnRlZ2VyX3R5cGUg KHN0cnVjdCBnZGJhcmNoICosIGludCwgaW50LCBjaGFyICopOwogIGV4dGVybiBzdHJ1Y3QgdHlw ZSAqYXJjaF9jaGFyYWN0ZXJfdHlwZSAoc3RydWN0IGdkYmFyY2ggKiwgaW50LCBpbnQsIGNoYXIg Kik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICphcmNoX2Jvb2xlYW5fdHlwZSAoc3RydWN0IGdkYmFy Y2ggKiwgaW50LCBpbnQsIGNoYXIgKik7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9n bnUtdjItYWJpLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9nbnUtdjItYWJpLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZ251LXYyLWFiaS5j CTIwMTItMDItMDcgMDU6NDg6MjEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9nbnUtdjItYWJpLmMJMjAxMi0xMS0wNyAyMjowOToyOS44NzAxNDA3NDIgKzAxMDAK LUBAIC04Niw3ICs4Niw3IEBAIGdudXYyX2lzX29wZXJhdG9yX25hbWUgKGNvbnN0IGNoYXIgKm5h bWUKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2dudS12Mi1hYmkuYwkyMDEzLTAx LTE4IDIzOjI3OjIyLjA4MjYwMTMzOSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L2dudS12Mi1hYmkuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2MzYwNzMyNyArMDEwMAorQEAgLTg1 LDcgKzg1LDcgQEAgZ251djJfaXNfb3BlcmF0b3JfbmFtZSAoY29uc3QgY2hhciAqbmFtZQogICAg IFRZUEUgaXMgdGhlIHR5cGUgaW4gd2hpY2ggRiBpcyBsb2NhdGVkLiAgKi8KICBzdGF0aWMgc3Ry dWN0IHZhbHVlICoKICBnbnV2Ml92aXJ0dWFsX2ZuX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKiphcmcx cCwgc3RydWN0IGZuX2ZpZWxkICogZiwgaW50IGosCkBAIC0yMjA4LDcgKzIyMDgsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nbnUtdjItYWJpLmMKICB7CiAgICBzdHJ1Y3QgdmFs dWUgKmFyZzEgPSAqYXJnMXA7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAtMTg3LDcgKzE4Nyw4IEBAIGdudXYyX3ZpcnR1YWxf Zm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKmEKK0BAIC0xODYsNyArMTg2LDggQEAgZ251djJfdmly dHVhbF9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqYQogIAogIAogIHN0YXRpYyBzdHJ1Y3QgdHlw ZSAqCkBAIC0yMjE4LDcgKzIyMTgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9n bnUtdjItYWJpLmMKICB7CiAgICBzdHJ1Y3QgdHlwZSAqa25vd25fdHlwZTsKICAgIHN0cnVjdCB0 eXBlICpydHRpX3R5cGU7Ci1AQCAtMzQyLDkgKzM0Myw5IEBAIHZiX21hdGNoIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgaW50IGluZGV4LAorQEAgLTM0MSw5ICszNDIsOSBAQCB2Yl9tYXRjaCAoc3RydWN0 IHR5cGUgKnR5cGUsIGludCBpbmRleCwKICAgICB0YXJnZXQpLiAgVGhlIHJlc3VsdCBpcyB0aGUg b2Zmc2V0IG9mIHRoZSBiYXNlY2xhc3MgdmFsdWUgcmVsYXRpdmUKICAgICB0byAodGhlIGFkZHJl c3Mgb2YpKEFSRykgKyBPRkZTRVQuICAqLwogIApAQCAtMjIzMCw3ICsyMjMwLDcgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ251LXYyLWFiaS5jCiAgCQkJQ09SRV9BRERSIGFkZHJl c3MsIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsKQogIHsKICAgIHN0cnVjdCB0eXBlICpiYXNldHlw ZSA9IFRZUEVfQkFTRUNMQVNTICh0eXBlLCBpbmRleCk7Ci1AQCAtMzYyLDggKzM2Myw4IEBAIGdu dXYyX2Jhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0eXBlICp0eXAKK0BAIC0zNjEsOCArMzYyLDgg QEAgZ251djJfYmFzZWNsYXNzX29mZnNldCAoc3RydWN0IHR5cGUgKnR5cAogIAkgIGlmICh2Yl9t YXRjaCAodHlwZSwgaSwgYmFzZXR5cGUpKQogIAkgICAgewogIAkgICAgICBzdHJ1Y3QgdHlwZSAq ZmllbGRfdHlwZTsKQEAgLTIyNDEsNyArMjI0MSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL2dudS12Mi1hYmkuYwogIAkgICAgICBDT1JFX0FERFIgYWRkcjsKICAKICAJICAgICAg ZmllbGRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpOwot QEAgLTM4Nyw3ICszODgsNyBAQCBnbnV2Ml9iYXNlY2xhc3Nfb2Zmc2V0IChzdHJ1Y3QgdHlwZSAq dHlwCitAQCAtMzg2LDcgKzM4Nyw3IEBAIGdudXYyX2Jhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0 eXBlICp0eXAKICAJICAvKiBEb24ndCBnbyB0aHJvdWdoIGJhc2VjbGFzc19vZmZzZXQsIGFzIHRo YXQgd3JhcHMKICAJICAgICBleGNlcHRpb25zLCB0aHVzLCBpbm5lciBleGNlcHRpb25zIHdvdWxk IGJlIHdyYXBwZWQgbW9yZQogIAkgICAgIHRoYW4gb25jZS4gICovCkBAIC0yMjUwLDExICsyMjUw LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dudS12Mi1hYmkuYwogIAkgICAg Z251djJfYmFzZWNsYXNzX29mZnNldCAodHlwZSwgaSwgdmFsYWRkciwKICAJCQkJICAgIGVtYmVk ZGVkX29mZnNldCwgYWRkcmVzcywgdmFsKTsKICAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2dudS12My1hYmkuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dudS12My1h YmkuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9nbnUtdjMt YWJpLmMJMjAxMi0wNS0yMSAyMTo0Nzo1My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2dudS12My1hYmkuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljg3MjE0MDc0MCAr MDEwMAotQEAgLTEwNSw3ICsxMDUsNyBAQCBidWlsZF9nZGJfdnRhYmxlX3R5cGUgKHN0cnVjdCBn ZGJhcmNoICphCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9nbnUtdjMtYWJpLmMJ MjAxMy0wMS0xOCAyMzoyNzoyMi4wODM2MDEzNDEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9nbnUtdjMtYWJpLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjQ2MDczMjkgKzAxMDAK K0BAIC0xMDYsNyArMTA2LDcgQEAgYnVpbGRfZ2RiX3Z0YWJsZV90eXBlIChzdHJ1Y3QgZ2RiYXJj aCAqYQogIHsKICAgIHN0cnVjdCB0eXBlICp0OwogICAgc3RydWN0IGZpZWxkICpmaWVsZF9saXN0 LCAqZmllbGQ7CkBAIC0yMjYzLDcgKzIyNjMsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9nbnUtdjMtYWJpLmMKICAKICAgIHN0cnVjdCB0eXBlICp2b2lkX3B0cl90eXBlCiAgICAg ID0gYnVpbHRpbl90eXBlIChhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLUBAIC0xODEsNyArMTgx LDcgQEAgdnRhYmxlX3B0cmRpZmZfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYgorQEAgLTE4Miw3 ICsxODIsNyBAQCB2dGFibGVfcHRyZGlmZl90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgLyog UmV0dXJuIHRoZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGltYWdpbmFyeSBgc3RydWN0 CiAgICAgZ2RiX2dudV92M19hYmlfdnRhYmxlJyBvYmplY3QgdG8gdGhlIHZ0YWJsZSdzICJhZGRy ZXNzIHBvaW50IgogICAgIChpLmUuLCB3aGVyZSBvYmplY3RzJyB2aXJ0dWFsIHRhYmxlIHBvaW50 ZXJzIHBvaW50KS4gICovCkBAIC0yMjcyLDcgKzIyNzIsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9nbnUtdjMtYWJpLmMKICB2dGFibGVfYWRkcmVzc19wb2ludF9vZmZzZXQgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKQogIHsKICAgIHN0cnVjdCB0eXBlICp2dGFibGVfdHlwZSA9 IGdkYmFyY2hfZGF0YSAoZ2RiYXJjaCwgdnRhYmxlX3R5cGVfZ2RiYXJjaF9kYXRhKTsKLUBAIC0y NzIsNyArMjcyLDcgQEAgZ251djNfZ2V0X3Z0YWJsZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyYwor QEAgLTI3Myw3ICsyNzMsNyBAQCBnbnV2M19nZXRfdnRhYmxlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoKICBnbnV2M19ydHRpX3R5cGUgKHN0cnVjdCB2 YWx1ZSAqdmFsdWUsCkBAIC0yMjgxLDcgKzIyODEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9nbnUtdjMtYWJpLmMKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKICAg IHN0cnVjdCB0eXBlICp2YWx1ZXNfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKHZh bHVlKSk7Ci1AQCAtMzg0LDcgKzM4NCw3IEBAIGdudXYzX2dldF92aXJ0dWFsX2ZuIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2QKK0BAIC0zODUsNyArMzg1LDcgQEAgZ251djNfZ2V0X3ZpcnR1YWxfZm4gKHN0 cnVjdCBnZGJhcmNoICpnZAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgogIGdudXYzX3ZpcnR1YWxf Zm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKnZhbHVlX3AsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IGZuX2ZpZWxkICpmLCBpbnQgaiwKQEAgLTIyOTAsNyArMjI5MCw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2dudS12My1hYmkuYwogIHsKICAgIHN0cnVjdCB0eXBl ICp2YWx1ZXNfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKCp2YWx1ZV9wKSk7CiAg ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKLUBAIC00MTQsMTYgKzQxNCwxNiBAQCBnbnV2M192 aXJ0dWFsX2ZuX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKip2CitAQCAtNDE1LDE2ICs0MTUsMTYgQEAg Z251djNfdmlydHVhbF9mbl9maWVsZCAoc3RydWN0IHZhbHVlICoqdgogIAogICAgIC0xIGlzIHJl dHVybmVkIG9uIGVycm9yLiAgKi8KICAKQEAgLTIzMTAsNyArMjMxMCw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2dudS12My1hYmkuYwogIAogICAgLyogRGV0ZXJtaW5lIGFyY2hp dGVjdHVyZS4gICovCiAgICBnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7Ci1AQCAtNDQ3 LDcgKzQ0Nyw3IEBAIGdudXYzX2Jhc2VjbGFzc19vZmZzZXQgKHN0cnVjdCB0eXBlICp0eXAKK0BA IC00NDgsNyArNDQ4LDcgQEAgZ251djNfYmFzZWNsYXNzX29mZnNldCAoc3RydWN0IHR5cGUgKnR5 cAogICAgY3VyX2Jhc2Vfb2Zmc2V0ID0gY3VyX2Jhc2Vfb2Zmc2V0ICsgdnRhYmxlX2FkZHJlc3Nf cG9pbnRfb2Zmc2V0IChnZGJhcmNoKTsKICAgIGlmICgoLSBjdXJfYmFzZV9vZmZzZXQpICUgVFlQ RV9MRU5HVEggKHB0cl90eXBlKSAhPSAwKQogICAgICBlcnJvciAoXygiTWlzYWxpZ25lZCB2YmFz ZSBvZmZzZXQuIikpOwpAQCAtMjMxOSw3ICsyMzE5LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvZ251LXYzLWFiaS5jCiAgCiAgICB2dGFibGUgPSBnbnV2M19nZXRfdnRhYmxlIChn ZGJhcmNoLCB0eXBlLCBhZGRyZXNzICsgZW1iZWRkZWRfb2Zmc2V0KTsKICAgIGdkYl9hc3NlcnQg KHZ0YWJsZSAhPSBOVUxMKTsKLUBAIC00OTEsNyArNDkxLDcgQEAgZ251djNfZmluZF9tZXRob2Rf aW4gKHN0cnVjdCB0eXBlICpkb21haQorQEAgLTQ5Miw3ICs0OTIsNyBAQCBnbnV2M19maW5kX21l dGhvZF9pbiAoc3RydWN0IHR5cGUgKmRvbWFpCiAgICAgICB3ZSdyZSBvdXQgb2YgbHVjay4gICov CiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9OX0JBU0VDTEFTU0VTIChkb21haW4pOyBpKyspCiAg ICAgIHsKQEAgLTIzMjgsMTEgKzIzMjgsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvZ251LXYzLWFiaS5jCiAgICAgICAgc3RydWN0IHR5cGUgKmJhc2V0eXBlOwogIAogICAgICAg IGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAoZG9tYWluLCBpKSkKLUluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2dvLWxhbmcuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dv LWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9nby1s YW5nLmgJMjAxMi0wNC0yNSAxNjowNzoyMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL2dvLWxhbmcuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljg3NDE0MDczNyArMDEw MAotQEAgLTgwLDcgKzgwLDcgQEAgZXh0ZXJuIHZvaWQgZ29fcHJpbnRfdHlwZSAoc3RydWN0IHR5 cGUgKgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZ28tbGFuZy5oCTIwMTMtMDEt MTggMjM6Mjc6MjIuMDgzNjAxMzQxICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv Z28tbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODY0NjA3MzI5ICswMTAwCitAQCAtODMsNyAr ODMsNyBAQCBleHRlcm4gdm9pZCBnb19wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqCiAgLyogRGVm aW5lZCBpbiBnby12YWxwcmludC5jLiAgKi8KICAKICBleHRlcm4gdm9pZCBnb192YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTIzNDEsMTAg KzIzNDEsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ28tbGFuZy5oCiAgCQkJ ICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgIGNvbnN0IHN0cnVj dCB2YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9w dGlvbnMpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ28tdmFscHJpbnQuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dvLXZhbHByaW50LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZ28tdmFscHJpbnQuYwkyMDEyLTA1LTE4IDE3 OjI5OjEyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ28tdmFs cHJpbnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5Ljg3NDE0MDczNyArMDEwMAorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvZ28tdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4 MzYwMTM0MSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2dvLXZhbHByaW50LmMJ MjAxMy0wMS0xOCAyMzoyNzoyOC44NjQ2MDczMjkgKzAxMDAKIEBAIC0zNyw3ICszNyw3IEBACiAg CiAgc3RhdGljIHZvaWQKQEAgLTIzNjcsMTEgKzIzNjcsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvZ28tdmFscHJpbnQuYwogIAkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJp bnRfb3B0aW9ucyAqb3B0aW9ucykKICB7CiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtbmF0LmMKK0luZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9pMzg2LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL2kzODYtbmF0LmMJMjAxMi0wMS0yNCAxNDo0OTo1Ni4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtbmF0LmMJMjAxMi0xMS0wNyAyMjowOToy OS44NzYxNDA3MzMgKzAxMDAKLUBAIC0yOTMsNyArMjkzLDcgQEAgc3RhdGljIGludCBpMzg2X3Jl bW92ZV9hbGlnbmVkX3dhdGNocG9pbgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv aTM4Ni1uYXQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4NDYwMTM0MyArMDEwMAorKysrIGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2kzODYtbmF0LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjQ2MDcz MjkgKzAxMDAKK0BAIC0yOTIsNyArMjkyLDcgQEAgc3RhdGljIGludCBpMzg2X3JlbW92ZV9hbGln bmVkX3dhdGNocG9pbgogICAgIHZhbGlkIHZhbHVlLCBib21icyB0aHJvdWdoIGludGVybmFsX2Vy cm9yLiAgKi8KICBzdGF0aWMgaW50IGkzODZfaGFuZGxlX25vbmFsaWduZWRfd2F0Y2hwb2ludCAo c3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSwKICAJCQkJCSAgICAgIGkzODZfd3Bf b3BfdCB3aGF0LApAQCAtMjM4MCw3ICsyMzgwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvaTM4Ni1uYXQuYwogIAkJCQkJICAgICAgZW51bSB0YXJnZXRfaHdfYnBfdHlwZSB0eXBl KTsKICAKICAvKiBJbXBsZW1lbnRhdGlvbi4gICovCi1AQCAtNTA1LDggKzUwNSw4IEBAIGkzODZf cmVtb3ZlX2FsaWduZWRfd2F0Y2hwb2ludCAoc3RydWN0IGkKK0BAIC01MDQsOCArNTA0LDggQEAg aTM4Nl9yZW1vdmVfYWxpZ25lZF93YXRjaHBvaW50IChzdHJ1Y3QgaQogIAogIHN0YXRpYyBpbnQK ICBpMzg2X2hhbmRsZV9ub25hbGlnbmVkX3dhdGNocG9pbnQgKHN0cnVjdCBpMzg2X2RlYnVnX3Jl Z19zdGF0ZSAqc3RhdGUsCkBAIC0yMzkxLDcgKzIzOTEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9pMzg2LW5hdC5jCiAgewogICAgaW50IHJldHZhbCA9IDA7CiAgICBpbnQgbWF4 X3dwX2xlbiA9IFRBUkdFVF9IQVNfRFJfTEVOXzggPyA4IDogNDsKLUBAIC02NjMsNyArNjYzLDcg QEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsCitAQCAtNjYyLDcgKzY2 Miw3IEBAIGkzODZfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAogICAgIGFkZHJl c3MgQUREUiBhbmQgd2hvc2UgbGVuZ3RoIGlzIExFTiBieXRlcy4gICovCiAgCiAgc3RhdGljIGlu dApAQCAtMjQwMCwxMCArMjQwMCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9p Mzg2LW5hdC5jCiAgewogICAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkz ODZfZGVidWdfcmVnX3N0YXRlICgpOwogICAgaW50IG5yZWdzOwotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvaW5mLXR0cmFjZS5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv aW5mLXR0cmFjZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2Ri L2luZi10dHJhY2UuYwkyMDEyLTA2LTE0IDIwOjIxOjMxLjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvaW5mLXR0cmFjZS5jCTIwMTItMTEtMDcgMjI6MDk6MjkuODc3 MTQwNzMyICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9pbmYtdHRyYWNl LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wODQ2MDEzNDMgKzAxMDAKKysrKyBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9pbmYtdHRyYWNlLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjQ2MDczMjkgKzAx MDAKIEBAIC0zNjQsNyArMzY0LDcgQEAgaW5mX3R0cmFjZV9jYW5fdXNlX2h3X2JyZWFrcG9pbnQg KGludCB0eQogIH0KICAKQEAgLTI0MTMsMTEgKzI0MTMsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvaW5mLXR0cmFjZS5jCiAgewogICAgcmV0dXJuIDE7CiAgfQotSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvanYtbGFuZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL2p2LWxhbmcuYwkyMDEyLTExLTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuODk0MTQw NzA4ICswMTAwCi1AQCAtNDQwLDcgKzQ0MCw3IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2QKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2p2LWxhbmcu YwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4NDYwMTM0MyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2p2LWxhbmcuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NTYwNzMzMSArMDEwMAor QEAgLTQzOSw3ICs0MzksNyBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2gg KmdkCiAgICBmb3IgKGkgPSBUWVBFX05fQkFTRUNMQVNTRVMgKHR5cGUpOyBpIDwgbmZpZWxkczsg aSsrKQogICAgICB7CiAgICAgICAgaW50IGFjY2ZsYWdzOwpAQCAtMjQyNiw3ICsyNDI2LDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvanYtbGFuZy5jCiAgCiAgICAgICAgaWYgKGZp ZWxkcyA9PSBOVUxMKQogIAl7Ci1AQCAtODkwLDcgKzg5MCw3IEBAIGphdmFfcHJpbnRjaGFyIChp bnQgYywgc3RydWN0IHR5cGUgKnR5cGUKK0BAIC04ODksNyArODg5LDcgQEAgamF2YV9wcmludGNo YXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZQogIHN0YXRpYyB2b2lkCiAgamF2YV9wcmludHN0 ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5cGUgKnR5cGUsCiAgCSAgICAgICBj b25zdCBnZGJfYnl0ZSAqc3RyaW5nLApAQCAtMjQzNSwxMCArMjQzNSwxMCBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9qdi1sYW5nLmMKICAJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQogIHsKICAgIGNvbnN0IGNoYXIgKnR5cGVfZW5jb2Rp bmcgPSBqYXZhX2dldF9lbmNvZGluZyAodHlwZSk7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9qdi1sYW5nLmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9qdi1sYW5nLmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvanYtbGFuZy5oCTIw MTItMDMtMDEgMjA6MjY6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9qdi1sYW5nLmgJMjAxMi0xMS0wNyAyMjowOToyOS45MDIxNDA2OTYgKzAxMDAKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2p2LWxhbmcuaAkyMDEzLTAxLTE4IDIzOjI3OjIy LjA4NTYwMTM0NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LWxhbmcuaAky MDEzLTAxLTE4IDIzOjI3OjI4Ljg2NTYwNzMzMSArMDEwMAogQEAgLTQyLDggKzQyLDggQEAgc3Ry dWN0IGJ1aWx0aW5famF2YV90eXBlCiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBidWlsdGluX2ph dmFfdHlwZSAqYnVpbHRpbl9qYXZhX3R5cGUgKHN0cnVjdCBnZGJhcmNoICopOwpAQCAtMjQ1MCwx MCArMjQ1MCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9qdi1sYW5nLmgKICAJ CQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICosCiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9w cmludF9vcHRpb25zICopOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvanYtdmFs cHJpbnQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2LXZhbHByaW50LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvanYtdmFscHJpbnQuYwky MDEyLTA1LTE4IDE3OjI5OjEyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvanYtdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjA5OjI5LjkwMzE0MDY5NCArMDEwMAor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvanYtdmFscHJpbnQuYwkyMDEzLTAxLTE4 IDIzOjI3OjIyLjA4NTYwMTM0NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2p2 LXZhbHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NjU2MDczMzEgKzAxMDAKIEBAIC0yNjYs NyArMjY2LDcgQEAgamF2YV92YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICp2YWwsIHN0cgogIAog IHN0YXRpYyB2b2lkCkBAIC0yNDYzLDcgKzI0NjMsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9qdi12YWxwcmludC5jCiAgCQkJIENPUkVfQUREUiBhZGRyZXNzLCBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLAogIAkJCSBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVl ICp2YWwsCi1AQCAtNDg0LDcgKzQ4NCw3IEBAIGphdmFfcHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1 Y3QgdHlwZSAqdHkKK0BAIC00NjUsNyArNDY1LDcgQEAgamF2YV9wcmludF92YWx1ZV9maWVsZHMg KHN0cnVjdCB0eXBlICp0eQogIAogIHZvaWQKICBqYXZhX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjQ3MiwxMSArMjQ3MiwxMSBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9qdi12YWxwcmludC5jCiAgCQlzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCWNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAog IAkJY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi1JbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9sYW5ndWFnZS5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvbGFuZ3VhZ2UuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9sYW5ndWFnZS5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9sYW5ndWFnZS5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTA1 MTQwNjkxICswMTAwCi1AQCAtNzI0LDcgKzcyNCw3IEBAIHVua19sYW5nX3ByaW50Y2hhciAoaW50 IGMsIHN0cnVjdCB0eXBlICoKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2xhbmd1 YWdlLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wODU2MDEzNDUgKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9sYW5ndWFnZS5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODY1NjA3MzMxICsw MTAwCitAQCAtNzIwLDcgKzcyMCw3IEBAIHVua19sYW5nX3ByaW50Y2hhciAoaW50IGMsIHN0cnVj dCB0eXBlICoKICAKICBzdGF0aWMgdm9pZAogIHVua19sYW5nX3ByaW50c3RyIChzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTI0ODUsNyArMjQ4NSw3IEBAIElu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2xhbmd1YWdlLmMKICAJCSAgIGNvbnN0IGNoYXIg KmVuY29kaW5nLCBpbnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVf cHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKICB7Ci1AQCAtNzQyLDcgKzc0Miw3IEBAIHVua19sYW5n X3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorQEAgLTczOSw3ICs3MzksNyBAQCB1bmtf bGFuZ19wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKICBzdGF0aWMgdm9pZAogIHVu a19sYW5nX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLApAQCAtMjQ5NCwxMCArMjQ5NCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9sYW5ndWFnZS5jCiAgCQkgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2Us CiAgCQkgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9sYW5ndWFnZS5oCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbGFuZ3VhZ2UuaAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9sYW5ndWFnZS5oCTIw MTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9sYW5ndWFnZS5oCTIwMTItMTEtMDcgMjI6MDk6MjkuOTA2MTQwNjkwICswMTAwCistLS0g Z2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9sYW5ndWFnZS5oCTIwMTMtMDEtMTggMjM6Mjc6 MjIuMDg2NjAxMzQ2ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbGFuZ3VhZ2Uu aAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NTYwNzMzMSArMDEwMAogQEAgLTE3NSw3ICsxNzUsNyBA QCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbgogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiBzdHJlYW0pOwog IApAQCAtMjUxNiwxMSArMjUxNiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9s YW5ndWFnZS5oCiAgCQkJICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJ CQkgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3By aW50X29wdGlvbnMgKm9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTIt bGFuZy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbTItbGFuZy5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL20yLWxhbmcuYwkyMDEyLTExLTA3 IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTIt bGFuZy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTA4MTQwNjg4ICswMTAwCi1AQCAtMTA0LDEwICsx MDQsMTAgQEAgbTJfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5cGUsCistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9tMi1sYW5nLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4w ODY2MDEzNDYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9tMi1sYW5nLmMJMjAx My0wMS0xOCAyMzoyNzoyOC44NjY2MDczMzMgKzAxMDAKK0BAIC0xMDMsMTAgKzEwMywxMCBAQCBt Ml9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKICBzdGF0aWMgdm9pZAog IG0yX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnN0cmluZywKQEAgLTI1MzMsNyArMjUzMyw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL20yLWxhbmcuYwogICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmlu dGVkID0gMDsKICAgIGludCBpbl9xdW90ZXMgPSAwOwogICAgaW50IG5lZWRfY29tbWEgPSAwOwot QEAgLTEyMiw5ICsxMjIsOSBAQCBtMl9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwg c3RyCitAQCAtMTIxLDkgKzEyMSw5IEBAIG0yX3ByaW50c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLCBzdHIKICAgICAgewogICAgICAgIC8qIFBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgd2Ug YXJlIGV4YW1pbmluZwogICAgICAgICAgIHRvIHNlZSB3aGV0aGVyIGl0IGlzIHJlcGVhdGVkLiAg Ki8KQEAgLTI1NDUsNyArMjU0NSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20y LWxhbmcuYwogIAogICAgICAgIFFVSVQ7CiAgCi1AQCAtMTUzLDcgKzE1Myw3IEBAIG0yX3ByaW50 c3RyIChzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHIKK0BAIC0xNDksNyArMTQ5LDcgQEAgbTJf cHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cgogIAkgICAgICBpbl9xdW90ZXMg PSAwOwogIAkgICAgfQogIAkgIG0yX3ByaW50Y2hhciAoc3RyaW5nW2ldLCB0eXBlLCBzdHJlYW0p OwpAQCAtMjU1NCwxMSArMjU1NCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9t Mi1sYW5nLmMKICAJICBpID0gcmVwMSAtIDE7CiAgCSAgdGhpbmdzX3ByaW50ZWQgKz0gb3B0aW9u cy0+cmVwZWF0X2NvdW50X3RocmVzaG9sZDsKICAJICBuZWVkX2NvbW1hID0gMTsKLUluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLWxhbmcuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL20yLWxhbmcuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9tMi1sYW5nLmgJMjAxMi0wMy0wMSAyMDoyNjoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLWxhbmcuaAkyMDEyLTExLTA3IDIyOjA5OjI5LjkwOTE0 MDY4NiArMDEwMAotQEAgLTMyLDcgKzMyLDcgQEAgZXh0ZXJuIHZvaWQgbTJfcHJpbnRfdHlwZWRl ZiAoc3RydWN0IHR5cAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbTItbGFuZy5o CTIwMTMtMDEtMTggMjM6Mjc6MjIuMDg2NjAxMzQ2ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEz MDExOC9nZGIvbTItbGFuZy5oCTIwMTMtMDEtMTggMjM6Mjc6MjguODY2NjA3MzMzICswMTAwCitA QCAtMzMsNyArMzMsNyBAQCBleHRlcm4gdm9pZCBtMl9wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlw CiAgZXh0ZXJuIGludCBtMl9pc19sb25nX3NldCAoc3RydWN0IHR5cGUgKnR5cGUpOwogIGV4dGVy biBpbnQgbTJfaXNfdW5ib3VuZGVkX2FycmF5IChzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAgCkBAIC0y NTY3LDExICsyNTY3LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLWxhbmcu aAogIAkJCSAgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVl ICosCiAgCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKLUluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLXR5cGVwcmludC5jCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvbTItdHlwZXByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAx MjA5MjYub3JpZy9nZGIvbTItdHlwZXByaW50LmMJMjAxMi0xMS0wNyAyMjowMjozMC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL20yLXR5cGVwcmludC5jCTIwMTIt MTEtMDcgMjI6MDk6MjkuOTEwMTQwNjg0ICswMTAwCi1AQCAtMjI4LDkgKzIyOCwxMiBAQCBzdGF0 aWMgdm9pZCBtMl9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi9tMi10eXBlcHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NjYwNzMz MyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL20yLXR5cGVwcmludC5jCTIwMTMt MDEtMTggMjM6MzE6NDUuODMyODc3ODA1ICswMTAwCitAQCAtMjM2LDkgKzIzNiwxMiBAQCBzdGF0 aWMgdm9pZCBtMl9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCSAgbTJfcHJpbnRfYm91bmRz IChUWVBFX0lOREVYX1RZUEUgKHR5cGUpLCBzdHJlYW0sIHNob3csIC0xLCAxKTsKICAJfQogICAg ICAgIGVsc2UKQEAgLTI1ODYsMTIgKzI1ODYsMTIgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvbTItdHlwZXByaW50LmMKICsJfQogICAgICB9CiAgICBmcHJpbnRmX2ZpbHRlcmVkIChz dHJlYW0sICJdIE9GICIpOwotICAgbTJfcHJpbnRfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSksICIiLCBzdHJlYW0sIHNob3csIGxldmVsKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL20yLXZhbHByaW50LmMKKyAgIG0yX3ByaW50X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpLCAiIiwgc3RyZWFtLCBzaG93LCBsZXZlbCwgZmxhZ3MpOworSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL20yLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAx MjA5MjYub3JpZy9nZGIvbTItdmFscHJpbnQuYwkyMDEyLTExLTA3IDIyOjAyOjMwLjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTItdmFscHJpbnQuYwkyMDEyLTEx LTA3IDIyOjA5OjI5LjkxMTE0MDY4MiArMDEwMAotQEAgLTM2LDcgKzM2LDcgQEAgc3RhdGljIGlu dCBwcmludF91bnBhY2tlZF9wb2ludGVyIChzdHJ1YworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgu b3JpZy9nZGIvbTItdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA4NzYwMTM0NyArMDEw MAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL20yLXZhbHByaW50LmMJMjAxMy0wMS0xOCAy MzoyNzoyOC44NjY2MDczMzMgKzAxMDAKK0BAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBpbnQgcHJp bnRfdW5wYWNrZWRfcG9pbnRlciAoc3RydWMKICAJCQkJICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSk7CiAgc3RhdGljIHZvaWQKICBtMl9wcmludF9hcnJheV9jb250ZW50cyAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLApAQCAtMjYwMCw3ICsyNjAwLDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTItdmFscHJpbnQuYwogIAkJCSBzdHJ1Y3QgdWlf ZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlICp2YWws CiAgCQkJIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAgLTY4 LDcgKzY4LDcgQEAgZ2V0X2xvbmdfc2V0X2JvdW5kcyAoc3RydWN0IHR5cGUgKnR5cGUsCitAQCAt NjcsNyArNjcsNyBAQCBnZXRfbG9uZ19zZXRfYm91bmRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwKICAK ICBzdGF0aWMgdm9pZAogIG0yX3ByaW50X2xvbmdfc2V0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0yNjA5LDcgKzI2MDksNyBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9tMi12YWxwcmludC5jCiAgCQkgICBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtKQogIHsKICAgIGludCBlbXB0eV9zZXQgICAgICAgID0gMTsKLUBAIC0xNTksNyArMTU5LDcg QEAgbTJfcHJpbnRfbG9uZ19zZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBjbworQEAgLTE1OCw3ICsx NTgsNyBAQCBtMl9wcmludF9sb25nX3NldCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvCiAgCiAgc3Rh dGljIHZvaWQKICBtMl9wcmludF91bmJvdW5kZWRfYXJyYXkgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTI2MTgsNyArMjYxOCw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL20yLXZhbHByaW50LmMKICAJCQkgIHN0cnVjdCB1aV9maWxlICpz dHJlYW0sIGludCByZWN1cnNlLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlv bnMgKm9wdGlvbnMpCiAgewotQEAgLTI2Myw3ICsyNjMsNyBAQCBwcmludF92YXJpYWJsZV9hdF9h ZGRyZXNzIChzdHJ1Y3QgdHlwZSAqCitAQCAtMjYyLDcgKzI2Miw3IEBAIHByaW50X3ZhcmlhYmxl X2F0X2FkZHJlc3MgKHN0cnVjdCB0eXBlICoKICAKICBzdGF0aWMgdm9pZAogIG0yX3ByaW50X2Fy cmF5X2NvbnRlbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CkBAIC0yNjI3LDcgKzI2MjcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tMi12 YWxwcmludC5jCiAgCQkJIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkJ CSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKICAJCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50 X29wdGlvbnMgKm9wdGlvbnMsCi1AQCAtMzA5LDE0ICszMDksMTUgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBnZW5lcmljX3ZhbF9wcmludF9kZQorQEAgLTMwOCwxNCArMzA4LDE1IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKICAgICBmdW5jdGlvbjsgdGhleSBhcmUg aWRlbnRpY2FsLiAgKi8KICAKICB2b2lkCkBAIC0yNjQ3LDcgKzI2NDcsNyBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9tMi12YWxwcmludC5jCiAgICBzdHJ1Y3QgdHlwZSAqZWx0dHlw ZTsKICAgIENPUkVfQUREUiBhZGRyOwogIAotQEAgLTM0MSw3ICszNDIsNyBAQCBtMl92YWxfcHJp bnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnCitAQCAtMzQwLDcgKzM0MSw3IEBAIG0yX3Zh bF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGcKICAJICAgICAgICAgZWxlbWVudHMg dXAgdG8gaXQuICAqLwogIAkgICAgICBpZiAob3B0aW9ucy0+c3RvcF9wcmludF9hdF9udWxsKQog IAkJewpAQCAtMjY1NiwxMCArMjY1NiwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9tMi12YWxwcmludC5jCiAgCiAgCQkgIC8qIExvb2sgZm9yIGEgTlVMTCBjaGFyLiAgKi8KICAJ CSAgZm9yICh0ZW1wX2xlbiA9IDA7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tZW1y YW5nZS5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWVtcmFuZ2UuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9tZW1yYW5nZS5jCTIwMTItMDEt MDQgMDk6MTc6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9t ZW1yYW5nZS5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTE2MTQwNjc2ICswMTAwCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9tZW1yYW5nZS5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDg3 NjAxMzQ3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWVtcmFuZ2UuYwkyMDEz LTAxLTE4IDIzOjI3OjI4Ljg2NjYwNzMzMyArMDEwMAogQEAgLTIxLDggKzIxLDggQEAKICAjaW5j bHVkZSAibWVtcmFuZ2UuaCIKICAKQEAgLTI2NzEsMTAgKzI2NzEsMTAgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvbWVtcmFuZ2UuYwogIHsKICAgIFVMT05HRVNUIGgsIGw7CiAgCi1J bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tZW1yYW5nZS5oCitJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvbWVtcmFuZ2UuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEy MDkyNi5vcmlnL2dkYi9tZW1yYW5nZS5oCTIwMTItMDEtMDQgMDk6MTc6MDYuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tZW1yYW5nZS5oCTIwMTItMTEtMDcgMjI6 MDk6MjkuOTE3MTQwNjc0ICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9t ZW1yYW5nZS5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDg3NjAxMzQ3ICswMTAwCisrKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvbWVtcmFuZ2UuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2NjYwNzMz MyArMDEwMAogQEAgLTMwLDcgKzMwLDcgQEAgc3RydWN0IG1lbV9yYW5nZQogICAgQ09SRV9BRERS IHN0YXJ0OwogIApAQCAtMjY5NSwxMCArMjY5NSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9tZW1yYW5nZS5oCiAgCiAgLyogU29ydCByYW5nZXMgYnkgc3RhcnQgYWRkcmVzcywg dGhlbiBjb2FsZXNjZSBjb250aWd1b3VzIG9yCiAgICAgb3ZlcmxhcHBpbmcgcmFuZ2VzLiAgKi8K LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtbGludXgtbmF0LmMKK0luZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9taXBzLWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAxMi0wNS0yMiAy MDoxMjoxMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMt bGludXgtbmF0LmMJMjAxMi0xMS0wNyAyMjowOToyOS45MTgxNDA2NzIgKzAxMDAKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL21pcHMtbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoy NzoyMi4wODc2MDEzNDcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9taXBzLWxp bnV4LW5hdC5jCTIwMTMtMDEtMTggMjM6Mjc6MjguODY3NjA3MzM0ICswMTAwCiBAQCAtOTM4LDcg KzkzOCw3IEBAIHRyeV9vbmVfd2F0Y2ggKHN0cnVjdCBwdF93YXRjaF9yZWdzICpyZWcKICAgICB0 aGUgc3BlY2lmaWVkIHJlZ2lvbiBjYW4gYmUgY292ZXJlZCBieSB0aGUgd2F0Y2ggcmVnaXN0ZXJz LiAgKi8KICAKQEAgLTI3MDgsNDkgKzI3MDgsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvbWlwcy1saW51eC1uYXQuYwogIHsKICAgIHN0cnVjdCBwdF93YXRjaF9yZWdzIGR1bW15 X3JlZ3M7CiAgICBpbnQgaTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL29iamMtbGFu Zy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL29iamMtbGFu Zy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9vYmpjLWxhbmcuYwkyMDEyLTExLTA3IDIyOjA5OjI5LjkyMDE0MDY3MCArMDEw MAotQEAgLTM0NywxMSArMzQ3LDExIEBAIG9iamNfcHJpbnRjaGFyIChpbnQgYywgc3RydWN0IHR5 cGUgKnR5cGUKLSAKLSBzdGF0aWMgdm9pZAotIG9iamNfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLAotLQkgICAgICAgY29uc3QgZ2RiX2J5dGUgKnN0 cmluZywgdW5zaWduZWQgaW50IGxlbmd0aCwKLSsJICAgICAgIGNvbnN0IGdkYl9ieXRlICpzdHJp bmcsIFVMT05HRVNUIGxlbmd0aCwKLSAJICAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBpbnQg Zm9yY2VfZWxsaXBzZXMsCi0gCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9u cyAqb3B0aW9ucykKLSB7Ci0tICB1bnNpZ25lZCBpbnQgaTsKLSsgIFVMT05HRVNUIGk7Ci0gICB1 bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOwotICAgaW50IGluX3F1b3RlcyA9IDA7Ci0g ICBpbnQgbmVlZF9jb21tYSA9IDA7Ci1AQCAtMzcyLDkgKzM3Miw5IEBAIG9iamNfcHJpbnRzdHIg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHMKLSAgICAgewotICAgICAgIC8qIFBvc2l0aW9uIG9m IHRoZSBjaGFyYWN0ZXIgd2UgYXJlIGV4YW1pbmluZyB0byBzZWUgd2hldGhlciBpdAotIAkgaXMg cmVwZWF0ZWQuICAqLwotLSAgICAgIHVuc2lnbmVkIGludCByZXAxOwotKyAgICAgIFVMT05HRVNU IHJlcDE7Ci0gICAgICAgLyogTnVtYmVyIG9mIHJlcGV0aXRpb25zIHdlIGhhdmUgZGV0ZWN0ZWQg c28gZmFyLiAgKi8KLS0gICAgICB1bnNpZ25lZCBpbnQgcmVwczsKLSsgICAgICBVTE9OR0VTVCBy ZXBzOwotIAotICAgICAgIFFVSVQ7Ci0gCi1AQCAtNDAzLDcgKzQwMyw3IEBAIG9iamNfcHJpbnRz dHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHMKLSAJICAgICAgaW5fcXVvdGVzID0gMDsKLSAJ ICAgIH0KLSAJICBvYmpjX3ByaW50Y2hhciAoc3RyaW5nW2ldLCB0eXBlLCBzdHJlYW0pOwotLQkg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiA8cmVwZWF0cyAldSB0aW1lcz4iLCByZXBzKTsK LSsJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgPHJlcGVhdHMgJXMgdGltZXM+IiwgcHVs b25nZXN0IChyZXBzKSk7Ci0gCSAgaSA9IHJlcDEgLSAxOwotIAkgIHRoaW5nc19wcmludGVkICs9 IG9wdGlvbnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQ7Ci0gCSAgbmVlZF9jb21tYSA9IDE7Ci1J bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9vcGVuY2wtbGFuZy5jCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvb3BlbmNsLWxhbmcuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9vcGVuY2wtbGFuZy5jCTIw MTItMTEtMDcgMjI6MDk6MjkuOTIxMTQwNjY5ICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDEx OC5vcmlnL2dkYi9vcGVuY2wtbGFuZy5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDg4NjAxMzQ5ICsw MTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvb3BlbmNsLWxhbmcuYwkyMDEzLTAxLTE4 IDIzOjI3OjI4Ljg2ODYwNzMzNSArMDEwMAogQEAgLTgwLDExICs4MCwxMSBAQCBidWlsdGluX29w ZW5jbF90eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoK QEAgLTI4NzcsMTEgKzI4MzgsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvb3Bl bmNsLWxhbmcuYwogIAogICAgICAgIGlmICghdmFsdWVfYml0c19zeW50aGV0aWNfcG9pbnRlciAo Yy0+dmFsLAogIAkJCQkJIGMtPmluZGljZXNbaV0gKiBlbHNpemUgKyBjb21wX29mZnNldCwKLUlu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3AtbGFuZy5jCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvcC1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYu b3JpZy9nZGIvcC1sYW5nLmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3AtbGFuZy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTIy MTQwNjY3ICswMTAwCi1AQCAtOTYsOCArOTYsOCBAQCBwYXNjYWxfbWFpbl9uYW1lICh2b2lkKQor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcC1sYW5nLmMJMjAxMy0wMS0xOCAyMzoy NzoyMi4wODk2MDEzNTEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wLWxhbmcu YwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg2ODYwNzMzNSArMDEwMAorQEAgLTk1LDggKzk1LDggQEAg cGFzY2FsX21haW5fbmFtZSAodm9pZCkKICAgICBhcmUgbm90IG11bHRpcGxlIG9mIFRBUkdFVF9D SEFSX0JJVCB0aGVuIHRoZSByZXN1bHRzIGFyZSB3cm9uZwogICAgIGJ1dCB0aGlzIGRvZXMgbm90 IGhhcHBlbiBmb3IgRnJlZSBQYXNjYWwgbm9yIGZvciBHUEMuICAqLwogIGludApAQCAtMjg5Miw3 ICsyODUzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC1sYW5nLmMKICAJCSAg ICAgICBzdHJ1Y3QgdHlwZSAqKmNoYXJfdHlwZSwKICAJCSAgICAgICBjb25zdCBjaGFyICoqYXJy YXluYW1lKQogIHsKLUBAIC0yMTcsMTIgKzIxNywxMiBAQCBwYXNjYWxfcHJpbnRjaGFyIChpbnQg Yywgc3RydWN0IHR5cGUgKnR5CitAQCAtMjE2LDEyICsyMTYsMTIgQEAgcGFzY2FsX3ByaW50Y2hh ciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eQogIAogIHZvaWQKICBwYXNjYWxfcHJpbnRzdHIgKHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMjkwNyw3ICsyODY4 LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC1sYW5nLmMKICAgIHVuc2lnbmVk IGludCB0aGluZ3NfcHJpbnRlZCA9IDA7CiAgICBpbnQgaW5fcXVvdGVzID0gMDsKICAgIGludCBu ZWVkX2NvbW1hID0gMDsKLUBAIC0yNTAsOSArMjUwLDkgQEAgcGFzY2FsX3ByaW50c3RyIChzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLAorQEAgLTI0OSw5ICsyNDksOSBAQCBwYXNjYWxfcHJpbnRzdHIg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgICAgIHsKICAgICAgICAvKiBQb3NpdGlvbiBvZiB0 aGUgY2hhcmFjdGVyIHdlIGFyZSBleGFtaW5pbmcKICAgICAgICAgICB0byBzZWUgd2hldGhlciBp dCBpcyByZXBlYXRlZC4gICovCkBAIC0yOTE5LDcgKzI4ODAsNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9wLWxhbmcuYwogICAgICAgIHVuc2lnbmVkIGxvbmcgaW50IGN1cnJlbnRf Y2hhcjsKICAKICAgICAgICBRVUlUOwotQEAgLTI4Nyw3ICsyODcsNyBAQCBwYXNjYWxfcHJpbnRz dHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitAQCAtMjgzLDcgKzI4Myw3IEBAIHBhc2NhbF9w cmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJICAgICAgaW5fcXVvdGVzID0gMDsK ICAJICAgIH0KICAJICBwYXNjYWxfcHJpbnRjaGFyIChjdXJyZW50X2NoYXIsIHR5cGUsIHN0cmVh bSk7CkBAIC0yOTI4LDEwICsyODg5LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3AtbGFuZy5jCiAgCSAgaSA9IHJlcDEgLSAxOwogIAkgIHRoaW5nc19wcmludGVkICs9IG9wdGlv bnMtPnJlcGVhdF9jb3VudF90aHJlc2hvbGQ7CiAgCSAgbmVlZF9jb21tYSA9IDE7Ci1JbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL3AtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL3AtbGFuZy5oCTIwMTItMDMtMDEgMjA6MjY6MTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuaAkyMDEyLTExLTA3IDIyOjA5OjI5LjkyMzE0MDY2 NSArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcC1sYW5nLmgJMjAxMy0w MS0xOCAyMzoyNzoyMi4wODk2MDEzNTEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9wLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjMyOjE3LjM1ODkxNjQyNiArMDEwMAogQEAgLTM1LDcg KzM1LDcgQEAgZXh0ZXJuIHZvaWQgcGFzY2FsX3ByaW50X3R5cGUgKHN0cnVjdCB0eQogIGV4dGVy biB2b2lkIHBhc2NhbF9wcmludF90eXBlZGVmIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3Qgc3ltYm9s ICosCiAgCQkJCSAgc3RydWN0IHVpX2ZpbGUgKik7CkBAIC0yOTU3LDggKzI5MTgsOCBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLWxhbmcuaAogIAkJCSAgICAgY29uc3Qgc3RydWN0 IHZhbHVlX3ByaW50X29wdGlvbnMgKik7CiAgCiAgZXh0ZXJuIHN0cnVjdCB0eXBlICoqY29uc3Qg KHBhc2NhbF9idWlsdGluX3R5cGVzW10pOwotQEAgLTY5LDcgKzY5LDcgQEAgZXh0ZXJuIHZvaWQK LSAgIHBhc2NhbF90eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1 Y3QgdWlfZmlsZSAqLCBpbnQsIGludCk7CitAQCAtNzEsNyArNzEsNyBAQCBleHRlcm4gdm9pZAor IAkJCQkgICAgY29uc3Qgc3RydWN0IHR5cGVfcHJpbnRfb3B0aW9ucyAqKTsKICAKICBleHRlcm4g dm9pZCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlX2ZpZWxkcyAoc3RydWN0IHR5cGUgKiwgY29u c3QgZ2RiX2J5dGUgKiwKIC0JCQkJCSAgICAgIGludCwKQEAgLTI5NjYsMTEgKzI5MjcsMTEgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC1sYW5nLmgKICAJCQkJCSAgICAgIENPUkVf QUREUiwgc3RydWN0IHVpX2ZpbGUgKiwKICAJCQkJCSAgICAgIGludCwKICAJCQkJCSAgICAgIGNv bnN0IHN0cnVjdCB2YWx1ZSAqLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC12YWxw cmludC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcC12YWxwcmludC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3AtdmFscHJpbnQuYwkyMDEy LTExLTA3IDIyOjAwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvcC12YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTMwMTQwNjU1ICswMTAwCi1AQCAt NTksNyArNTksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMy0wMS0xOCAy MzoyNzoyMi4wODk2MDEzNTEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wLXZh bHByaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44Njg2MDczMzUgKzAxMDAKK0BAIC01OCw3ICs1 OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGUKICAKICB2b2lk CiAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLApAQCAtMjk3OSw3ICsyOTQwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvcC12YWxwcmludC5jCiAgCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNl LAogIAkJICBjb25zdCBzdHJ1Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJICBjb25zdCBz dHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucykKLUBAIC03MCw4ICs3MCw4IEBAIHBh c2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb24KK0BAIC02OSw4ICs2OSw4IEBA IHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb24KICAgIHVuc2lnbmVkIGxl bjsKICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwogICAgc3RydWN0IHR5cGUgKmVs dHR5cGU7CkBAIC0yOTkwLDcgKzI5NTEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9wLXZhbHByaW50LmMKICAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7CiAgICBDT1JFX0FERFIg YWRkcjsKICAgIGludCB3YW50X3NwYWNlID0gMDsKLUBAIC01MDQsNyArNTA0LDcgQEAgc3RhdGlj IHZvaWQgcGFzY2FsX29iamVjdF9wcmludF9zdGF0aWNfZgorQEAgLTQ5Myw3ICs0OTMsNyBAQCBz dGF0aWMgdm9pZCBwYXNjYWxfb2JqZWN0X3ByaW50X3N0YXRpY19mCiAgCQkJCQkgICAgICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqKTsKICAKICBzdGF0aWMgdm9pZCBwYXNjYWxf b2JqZWN0X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLApAQCAt Mjk5OSw3ICsyOTYwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcC12YWxwcmlu dC5jCiAgCQkJCSAgICAgICBDT1JFX0FERFIsIHN0cnVjdCB1aV9maWxlICosIGludCwKICAJCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqLAogIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IHZh bHVlX3ByaW50X29wdGlvbnMgKiwKLUBAIC01NjMsNyArNTYzLDcgQEAgcGFzY2FsX29iamVjdF9p c192dGJsX21lbWJlciAoc3RydWN0IHR5cAorQEAgLTU1Miw3ICs1NTIsNyBAQCBwYXNjYWxfb2Jq ZWN0X2lzX3Z0YmxfbWVtYmVyIChzdHJ1Y3QgdHlwCiAgCiAgdm9pZAogIHBhc2NhbF9vYmplY3Rf cHJpbnRfdmFsdWVfZmllbGRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCkBAIC0zMDA4LDcgKzI5NjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9wLXZhbHByaW50LmMKICAJCQkJICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUg KnN0cmVhbSwKICAJCQkJICBpbnQgcmVjdXJzZSwKICAJCQkJICBjb25zdCBzdHJ1Y3QgdmFsdWUg KnZhbCwKLUBAIC03NTgsNyArNzU4LDcgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZV9maWVs ZHMgKHN0cnVjdAorQEAgLTcyOCw3ICs3MjgsNyBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVl X2ZpZWxkcyAoc3RydWN0CiAgCiAgc3RhdGljIHZvaWQKICBwYXNjYWxfb2JqZWN0X3ByaW50X3Zh bHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zMDE3 LDcgKzI5NzgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLXZhbHByaW50LmMK ICAJCQkgICBDT1JFX0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAJCQkg ICBpbnQgcmVjdXJzZSwKICAJCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCwKLUBAIC03ODEs MTEgKzc4MSwxMSBAQCBwYXNjYWxfb2JqZWN0X3ByaW50X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqCitA QCAtNzUxLDExICs3NTEsMTEgQEAgcGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5 cGUgKgogIAogICAgZm9yIChpID0gMDsgaSA8IG5fYmFzZWNsYXNzZXM7IGkrKykKICAgICAgewpA QCAtMzAzMSwxMSArMjk5MiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLXZh bHByaW50LmMKICAgICAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKICAgICAg ICBpbnQgc2tpcCA9IDA7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcGMtbGlu dXgtbmF0LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wcGMtbGludXgtbmF0LmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcHBjLWxpbnV4LW5h dC5jCTIwMTItMDctMDYgMTg6NDk6NDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMi0xMS0wNyAyMjowOToyOS45MzMxNDA2NTEg KzAxMDAKLUBAIC0xNDkzLDcgKzE0OTMsNyBAQCBwcGNfbGludXhfY2FuX3VzZV9od19icmVha3Bv aW50IChpbnQgdHlwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9wcGMtbGludXgt bmF0LmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wOTA2MDEzNTMgKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9wcGMtbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44Njk2MDcz MzcgKzAxMDAKK0BAIC0xNDkyLDcgKzE0OTIsNyBAQCBwcGNfbGludXhfY2FuX3VzZV9od19icmVh a3BvaW50IChpbnQgdHlwCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMwNDQsMTEgKzMwMDUsMTEg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcHBjLWxpbnV4LW5hdC5jCiAgewogICAg LyogSGFuZGxlIHN1Yi04LWJ5dGUgcXVhbnRpdGllcy4gICovCiAgICBpZiAobGVuIDw9IDApCi1J bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcmludGNtZC5jCitJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvcHJpbnRjbWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEy MDkyNi5vcmlnL2dkYi9wcmludGNtZC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcmludGNtZC5jCTIwMTItMTEtMDcgMjI6 MDk6MjkuOTQwMTQwNjQxICswMTAwCi1AQCAtMjkxLDcgKzI5MSw3IEBAIHByaW50X2Zvcm1hdHRl ZCAoc3RydWN0IHZhbHVlICp2YWwsIGludAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvcHJpbnRjbWQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA5MTYwMTM1NSArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ByaW50Y21kLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44Njk2 MDczMzcgKzAxMDAKK0BAIC0yODksNyArMjg5LDcgQEAgcHJpbnRfZm9ybWF0dGVkIChzdHJ1Y3Qg dmFsdWUgKnZhbCwgaW50CiAgCQkgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKICB7CiAgICBzdHJ1 Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKHZhbCkpOwpAQCAtMzA1 Nyw3ICszMDE4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcHJpbnRjbWQuYwog IAogICAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIG5leHRfYWRk cmVzcyA9IHZhbHVlX2FkZHJlc3MgKHZhbCkgKyBsZW47Ci1AQCAtMzY5LDcgKzM2OSw3IEBAIHBy aW50X3NjYWxhcl9mb3JtYXR0ZWQgKGNvbnN0IHZvaWQgKnZhbGEKK0BAIC0zNjcsNyArMzY3LDcg QEAgcHJpbnRfc2NhbGFyX2Zvcm1hdHRlZCAoY29uc3Qgdm9pZCAqdmFsYQogIHsKICAgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7CiAgICBMT05HRVNUIHZh bF9sb25nID0gMDsKQEAgLTMwNjYsMTEgKzMwMjcsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvcHJpbnRjbWQuYwogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJh cmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogIAogICAgLyogU3RyaW5nIHByaW50aW5nIHNob3Vs ZCBnbyB0aHJvdWdoIHZhbF9wcmludF9zY2FsYXJfZm9ybWF0dGVkLiAgKi8KLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3Byb2Nmcy5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9n ZGIvcHJvY2ZzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIv cHJvY2ZzLmMJMjAxMi0xMS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3Byb2Nmcy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuOTQ1MTQwNjMzICsw MTAwCi1AQCAtNDk2Niw3ICs0OTY2LDcgQEAgcHJvY2ZzX3JlbW92ZV93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkcgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvcHJvY2ZzLmMJMjAx My0wMS0xOCAyMzoyNzoyMi4wOTI2MDEzNTcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9wcm9jZnMuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MDYwNzM0MCArMDEwMAorQEAgLTQ5 MjYsNyArNDkyNiw3IEBAIHByb2Nmc19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIK ICB9CiAgCiAgc3RhdGljIGludApAQCAtMzA3OSwxMSArMzA0MCwxMSBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9wcm9jZnMuYwogIHsKICAgIC8qIFRoZSBtYW4gcGFnZSBmb3IgcHJv Yyg0KSBvbiBTb2xhcmlzIDIuNiBhbmQgdXAgc2F5cyB0aGF0IHRoZQogICAgICAgc3lzdGVtIGNh biBzdXBwb3J0ICJ0aG91c2FuZHMiIG9mIGhhcmR3YXJlIHdhdGNocG9pbnRzLCBidXQgZ2l2ZXMK LUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcHl0aG9uL3B5LXByZXR0 eXByaW50LmMJMjAxMi0wMS0wNCAwOToxNzoyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTItMTEtMDcgMjI6MDk6 MjkuOTY5MTQwNTk4ICswMTAwCi1AQCAtNjc2LDcgKzY3Niw3IEBAIHByaW50X2NoaWxkcmVuIChQ eU9iamVjdCAqcHJpbnRlciwgY29uc3QKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2Ri L3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDkyNjAxMzU3ICsw MTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJ MjAxMy0wMS0xOCAyMzoyNzoyOC44NzA2MDczNDAgKzAxMDAKK0BAIC02ODksNyArNjg5LDcgQEAg cHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAogIAogIGludAogIGFwcGx5 X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2 YWxhZGRyLApAQCAtMzA5Miw3ICszMDUzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKICAJCQkgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0s IGludCByZWN1cnNlLAogIAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCiAgCQkJICBjb25z dCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9ucywKLUBAIC04MjQsNyArODI0LDcg QEAgZ2RicHlfZGVmYXVsdF92aXN1YWxpemVyIChQeU9iamVjdCAqc2VsZgorQEAgLTgzNyw3ICs4 MzcsNyBAQCBnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpzZWxmCiAgCiAgaW50 CiAgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCkBAIC0zMTAxLDEwICszMDYyLDEwIEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCiAgCQkJICBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAog IAkJCSAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi1JbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9weXRob24vcHl0aG9uLmgKK0luZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9weXRob24vcHl0aG9uLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAu MjAxMjA5MjYub3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5oCTIwMTItMTEtMDcgMjI6MDA6NDEuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9weXRob24vcHl0aG9uLmgJ MjAxMi0xMS0wNyAyMjoxMDo0Ni4wMTAwMzAxMTUgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMw MTE4Lm9yaWcvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEzLTAxLTE4IDIzOjI3OjIyLjA5MjYwMTM1 NyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3B5dGhvbi9weXRob24uaAkyMDEz LTAxLTE4IDIzOjI3OjI4Ljg3MDYwNzM0MCArMDEwMAogQEAgLTM3LDcgKzM3LDcgQEAgdm9pZCBz b3VyY2VfcHl0aG9uX3NjcmlwdCAoRklMRSAqZmlsZSwgYwogIHZvaWQgcnVuX3B5dGhvbl9zY3Jp cHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7CiAgCkBAIC0zMTE0LDExICszMDc1LDExIEBAIElu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3B5dGhvbi9weXRob24uaAogIAkJCSAgICAgIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1cnNlLAogIAkJCSAgICAgIGNvbnN0IHN0cnVj dCB2YWx1ZSAqdmFsLAogIAkJCSAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25z ICpvcHRpb25zLAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JlZ2NhY2hlLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcmVnY2FjaGUuYwkyMDEyLTAxLTA0IDA5OjE3OjA5 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuYwky MDEyLTExLTA3IDIyOjA5OjI5Ljk4ODE0MDU3MSArMDEwMAotQEAgLTkwMiw3ICs5MDIsNyBAQCB0 eXBlZGVmIHZvaWQgKHJlZ2NhY2hlX3dyaXRlX2Z0eXBlKSAoc3RyCistLS0gZ2RiLTcuNS41MC4y MDEzMDExOC5vcmlnL2dkYi9yZWdjYWNoZS5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDkzNjAxMzU5 ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcmVnY2FjaGUuYwkyMDEzLTAxLTE4 IDIzOjI3OjI4Ljg3MTYwNzM0MiArMDEwMAorQEAgLTkwMSw3ICs5MDEsNyBAQCB0eXBlZGVmIHZv aWQgKHJlZ2NhY2hlX3dyaXRlX2Z0eXBlKSAoc3RyCiAgCiAgc3RhdGljIGVudW0gcmVnaXN0ZXJf c3RhdHVzCiAgcmVnY2FjaGVfeGZlcl9wYXJ0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBp bnQgcmVnbnVtLApAQCAtMzEyNyw3ICszMDg4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvcmVnY2FjaGUuYwogIAkJICAgIGVudW0gcmVnaXN0ZXJfc3RhdHVzICgqcmVhZCkgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCiAgCQkJCQkJICBpbnQgcmVnbnVtLAogIAkJCQkJCSAg Z2RiX2J5dGUgKmJ1ZiksCi1AQCAtOTQ2LDcgKzk0Niw3IEBAIHJlZ2NhY2hlX3hmZXJfcGFydCAo c3RydWN0IHJlZ2NhY2hlICpyZWcKK0BAIC05NDUsNyArOTQ1LDcgQEAgcmVnY2FjaGVfeGZlcl9w YXJ0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZwogIAogIGVudW0gcmVnaXN0ZXJfc3RhdHVzCiAgcmVn Y2FjaGVfcmF3X3JlYWRfcGFydCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251 bSwKQEAgLTMxMzYsNyArMzA5Nyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Jl Z2NhY2hlLmMKICB7CiAgICBzdHJ1Y3QgcmVnY2FjaGVfZGVzY3IgKmRlc2NyID0gcmVnY2FjaGUt PmRlc2NyOwogIAotQEAgLTk1Nyw3ICs5NTcsNyBAQCByZWdjYWNoZV9yYXdfcmVhZF9wYXJ0IChz dHJ1Y3QgcmVnY2FjaGUKK0BAIC05NTYsNyArOTU2LDcgQEAgcmVnY2FjaGVfcmF3X3JlYWRfcGFy dCAoc3RydWN0IHJlZ2NhY2hlCiAgCiAgdm9pZAogIHJlZ2NhY2hlX3Jhd193cml0ZV9wYXJ0IChz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLApAQCAtMzE0NSw3ICszMTA2LDcg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuYwogIHsKICAgIHN0cnVj dCByZWdjYWNoZV9kZXNjciAqZGVzY3IgPSByZWdjYWNoZS0+ZGVzY3I7CiAgCi1AQCAtOTY4LDcg Kzk2OCw3IEBAIHJlZ2NhY2hlX3Jhd193cml0ZV9wYXJ0IChzdHJ1Y3QgcmVnY2FjaGUKK0BAIC05 NjcsNyArOTY3LDcgQEAgcmVnY2FjaGVfcmF3X3dyaXRlX3BhcnQgKHN0cnVjdCByZWdjYWNoZQog IAogIGVudW0gcmVnaXN0ZXJfc3RhdHVzCiAgcmVnY2FjaGVfY29va2VkX3JlYWRfcGFydCAoc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSwKQEAgLTMxNTQsNyArMzExNSw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3JlZ2NhY2hlLmMKICB7CiAgICBzdHJ1Y3Qg cmVnY2FjaGVfZGVzY3IgKmRlc2NyID0gcmVnY2FjaGUtPmRlc2NyOwogIAotQEAgLTk3OSw3ICs5 NzksNyBAQCByZWdjYWNoZV9jb29rZWRfcmVhZF9wYXJ0IChzdHJ1Y3QgcmVnY2FjCitAQCAtOTc4 LDcgKzk3OCw3IEBAIHJlZ2NhY2hlX2Nvb2tlZF9yZWFkX3BhcnQgKHN0cnVjdCByZWdjYWMKICAK ICB2b2lkCiAgcmVnY2FjaGVfY29va2VkX3dyaXRlX3BhcnQgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdudW0sCkBAIC0zMTYzLDExICszMTI0LDExIEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3JlZ2NhY2hlLmMKICB7CiAgICBzdHJ1Y3QgcmVnY2FjaGVfZGVzY3Ig KmRlc2NyID0gcmVnY2FjaGUtPmRlc2NyOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvcmVnY2FjaGUuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JlZ2NhY2hlLmgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvcmVnY2FjaGUuaAky MDEyLTAxLTA0IDA5OjE3OjEwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvcmVnY2FjaGUuaAkyMDEyLTExLTA3IDIyOjA5OjI5Ljk5MDE0MDU2OCArMDEwMAotQEAg LTkwLDkgKzkwLDkgQEAgZXh0ZXJuIHZvaWQgcmVnY2FjaGVfcmF3X3dyaXRlX3Vuc2lnbmVkCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9yZWdjYWNoZS5oCTIwMTMtMDEtMTggMjM6 Mjc6MjIuMDkzNjAxMzU5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcmVnY2Fj aGUuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MTYwNzM0MiArMDEwMAorQEAgLTg5LDkgKzg5LDkg QEAgZXh0ZXJuIHZvaWQgcmVnY2FjaGVfcmF3X3dyaXRlX3Vuc2lnbmVkCiAgCiAgZXh0ZXJuIGVu dW0gcmVnaXN0ZXJfc3RhdHVzCiAgICByZWdjYWNoZV9yYXdfcmVhZF9wYXJ0IChzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbnVtLApAQCAtMzE3OSw3ICszMTQwLDcgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmVnY2FjaGUuaAogIAogIHZvaWQgcmVnY2FjaGVfaW52 YWxpZGF0ZSAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSk7CiAgCi1AQCAt MTI5LDEwICsxMjksMTEgQEAgZXh0ZXJuIHZvaWQgcmVnY2FjaGVfY29va2VkX3dyaXRlX3Vuc2ln bgorQEAgLTEyOCwxMCArMTI4LDExIEBAIGV4dGVybiB2b2lkIHJlZ2NhY2hlX2Nvb2tlZF93cml0 ZV91bnNpZ24KICAgICB3cml0ZSBzdHlsZSBvcGVyYXRpb25zLiAgKi8KICAKICBlbnVtIHJlZ2lz dGVyX3N0YXR1cyByZWdjYWNoZV9jb29rZWRfcmVhZF9wYXJ0IChzdHJ1Y3QgcmVnY2FjaGUgKnJl Z2NhY2hlLApAQCAtMzE5NCwxMSArMzE1NSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9yZWdjYWNoZS5oCiAgCiAgLyogU3BlY2lhbCByb3V0aW5lcyB0byByZWFkL3dyaXRlIHRo ZSBQQy4gICovCiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9yZW1vdGUuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JlbW90ZS5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3JlbW90ZS5jCTIwMTItMTEtMDcgMjI6MDA6NDIuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9yZW1vdGUuYwkyMDEyLTEx LTA3IDIyOjA5OjI5Ljk5NDE0MDU2MiArMDEwMAotQEAgLTgxMTksNyArODExOSw3IEBAIGludCBy ZW1vdGVfaHdfd2F0Y2hwb2ludF9sZW5ndGhfbGltaXQgPQorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvcmVtb3RlLmMJMjAxMy0wMS0xOCAyMzoyNzoyMi4wOTU2MDEzNjIgKzAxMDAK KysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9yZW1vdGUuYwkyMDEzLTAxLTE4IDIzOjI3OjI4 Ljg3MjYwNzM0MyArMDEwMAorQEAgLTgxNzQsNyArODE3NCw3IEBAIGludCByZW1vdGVfaHdfd2F0 Y2hwb2ludF9sZW5ndGhfbGltaXQgPQogIGludCByZW1vdGVfaHdfYnJlYWtwb2ludF9saW1pdCA9 IC0xOwogIAogIHN0YXRpYyBpbnQKQEAgLTMyMDcsMTEgKzMxNjgsMTEgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvcmVtb3RlLmMKICB7CiAgICBpZiAocmVtb3RlX2h3X3dhdGNocG9p bnRfbGVuZ3RoX2xpbWl0ID09IDApCiAgICAgIHJldHVybiAwOwotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvczM5MC1uYXQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Mz OTAtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvczM5 MC1uYXQuYwkyMDEyLTAzLTA1IDIwOjA1OjA5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvczM5MC1uYXQuYwkyMDEyLTExLTA3IDIyOjA5OjMwLjAxNjE0MDUzMSAr MDEwMAotQEAgLTU3Miw3ICs1NzIsNyBAQCBzMzkwX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50 IHR5cGUsIGluCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9zMzkwLW5hdC5jCTIw MTMtMDEtMTggMjM6Mjc6MjIuMDk2NjAxMzYzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvczM5MC1uYXQuYwkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3MjYwNzM0MyArMDEwMAorQEAg LTU3MSw3ICs1NzEsNyBAQCBzMzkwX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUsIGlu CiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTMyMjAsMTAgKzMxODEsMTAgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvczM5MC1uYXQuYwogIHsKICAgIHJldHVybiAxOwogIH0KLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3NwdS1tdWx0aWFyY2guYworSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL3NwdS1tdWx0aWFyY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUu MC4yMDEyMDkyNi5vcmlnL2dkYi9zcHUtbXVsdGlhcmNoLmMJMjAxMi0wNS0xOCAyMzowMjo1MC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3NwdS1tdWx0aWFyY2gu YwkyMDEyLTExLTA3IDIyOjA5OjMwLjAyMTE0MDUyMyArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvc3B1LW11bHRpYXJjaC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDk2NjAx MzYzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3B1LW11bHRpYXJjaC5jCTIw MTMtMDEtMTggMjM6Mjc6MjguODczNjA3MzQ0ICswMTAwCiBAQCAtMTE4LDcgKzExOCw3IEBAIHNw dV90aHJlYWRfYXJjaGl0ZWN0dXJlIChzdHJ1Y3QgdGFyZ2V0X28KICAKICAvKiBPdmVycmlkZSB0 aGUgdG9fcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IHJvdXRpbmUuICAqLwpAQCAtMzIzMywx MCArMzE5NCwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zcHUtbXVsdGlhcmNo LmMKICB7CiAgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzX2JlbmVhdGggPSBmaW5kX3RhcmdldF9i ZW5lYXRoICgmc3B1X29wcyk7CiAgICB3aGlsZSAob3BzX2JlbmVhdGggJiYgIW9wc19iZW5lYXRo LT50b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQpCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIw OTI2L2dkYi9zdGFjay5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3RhY2suYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9zdGFjay5jCTIwMTIt MTEtMDcgMjI6MDM6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9zdGFjay5jCTIwMTItMTEtMDcgMjI6MDk6MzAuMDI0MTQwNTE4ICswMTAwCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9zdGFjay5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDk2NjAx MzYzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3RhY2suYwkyMDEzLTAxLTE4 IDIzOjI3OjI4Ljg3MzYwNzM0NCArMDEwMAogQEAgLTE3Myw3ICsxNzMsNyBAQCBwcmludF9zdGFj a19mcmFtZSAoc3RydWN0IGZyYW1lX2luZm8gKmZyCiAgICAgYXJndW1lbnQgKG5vdCBqdXN0IHRo ZSBmaXJzdCBuYW1lbGVzcyBhcmd1bWVudCkuICAqLwogIApAQCAtMzI3NSwxMSArMzIzNiwxMSBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zdGFjay5jCiAgCiAgICAgICAgaWYgKGhp Z2hlc3Rfb2Zmc2V0ID09IC0xKQogIAlzdGFydCA9IGdkYmFyY2hfZnJhbWVfYXJnc19za2lwIChn ZXRfZnJhbWVfYXJjaCAoZnJhbWUpKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3N5 bW1pc2MuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3N5bW1pc2MuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9zeW1taXNjLmMJMjAxMi0xMS0w NyAyMjowMDo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3N5 bW1pc2MuYwkyMDEyLTExLTA3IDIyOjA5OjMwLjAyNjE0MDUxNiArMDEwMAotQEAgLTUxNywxMSAr NTE3LDExIEBAIHByaW50X3N5bWJvbCAodm9pZCAqYXJncykKKy0tLSBnZGItNy41LjUwLjIwMTMw MTE4Lm9yaWcvZ2RiL3N5bW1pc2MuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjA5NzYwMTM2NSArMDEw MAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3N5bW1pc2MuYwkyMDEzLTAxLTE4IDIzOjI3 OjI4Ljg3MzYwNzM0NCArMDEwMAorQEAgLTUyNCwxMSArNTI0LDExIEBAIHByaW50X3N5bWJvbCAo dm9pZCAqYXJncykKICAKICAJY2FzZSBMT0NfQ09OU1RfQllURVM6CiAgCSAgewpAQCAtMzI5NCwx MCArMzI1NSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zeW1taXNjLmMKICAJ ICAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX0xFTkdUSCAodHlwZSk7IGkrKykKICAJICAgICAgZnBy aW50Zl9maWx0ZXJlZCAob3V0ZmlsZSwgIiAlMDJ4IiwKICAJCQkJKHVuc2lnbmVkKSBTWU1CT0xf VkFMVUVfQllURVMgKHN5bWJvbClbaV0pOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv dGFyZ2V0LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi90YXJnZXQuYwkyMDEyLTA3LTAy IDE3OjI5OjM1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGFy Z2V0LmMJMjAxMi0xMS0wNyAyMjowOTozMC4wMjkxNDA1MTEgKzAxMDAKKy0tLSBnZGItNy41LjUw LjIwMTMwMTE4Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMDk4NjAxMzY3 ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGFyZ2V0LmMJMjAxMy0wMS0xOCAy MzozMjozOS4xNTk5NDM2NzQgKzAxMDAKIEBAIC01MSw3ICs1MSw3IEBAIHN0YXRpYyB2b2lkIGRl ZmF1bHRfdGVybWluYWxfaW5mbyAoY2hhcgogIHN0YXRpYyBpbnQgZGVmYXVsdF93YXRjaHBvaW50 X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLAogIAkJCQkJCSBDT1JFX0FE RFIsIENPUkVfQUREUiwgaW50KTsKQEAgLTMzMTYsMTYgKzMyNzcsMTYgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvdGFyZ2V0LmMKICAKICBzdGF0aWMgaW50IGRlYnVnX3RvX2Nhbl9h Y2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbiAoQ09SRV9BRERSLCBpbnQsIGludCwKICAJCQkJCQkg ICAgc3RydWN0IGV4cHJlc3Npb24gKik7Ci1AQCAtMzU0Niw3ICszNTQ2LDcgQEAgdGFyZ2V0X2Zp bGVpb19yZWFkX3N0cmFsbG9jIChjb25zdCBjaGFyCitAQCAtMzU1Miw3ICszNTUyLDcgQEAgdGFy Z2V0X2ZpbGVpb19yZWFkX3N0cmFsbG9jIChjb25zdCBjaGFyCiAgCiAgCiAgc3RhdGljIGludAog LWRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50 IGxlbikKICtkZWZhdWx0X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFk ZHIsIExPTkdFU1QgbGVuKQogIHsKLSAgIHJldHVybiAobGVuIDw9IGdkYmFyY2hfcHRyX2JpdCAo dGFyZ2V0X2dkYmFyY2gpIC8gVEFSR0VUX0NIQVJfQklUKTsKKyAgIHJldHVybiAobGVuIDw9IGdk YmFyY2hfcHRyX2JpdCAodGFyZ2V0X2dkYmFyY2ggKCkpIC8gVEFSR0VUX0NIQVJfQklUKTsKICB9 Ci1AQCAtNDE5Nyw3ICs0MTk3LDcgQEAgZGVidWdfdG9fY2FuX3VzZV9od19icmVha3BvaW50IChp bnQgdHlwZQorQEAgLTQyNTMsNyArNDI1Myw3IEBAIGRlYnVnX3RvX2Nhbl91c2VfaHdfYnJlYWtw b2ludCAoaW50IHR5cGUKICB9CiAgCiAgc3RhdGljIGludApAQCAtMzMzNCwxMSArMzI5NSwxMSBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90YXJnZXQuYwogIHsKICAgIENPUkVfQURE UiByZXR2YWw7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90YXJnZXQuaAorSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTItMTEtMDcgMjI6MDA6NDMuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90YXJnZXQuaAkyMDEyLTEx LTA3IDIyOjA5OjMwLjA1NTE0MDQ3NCArMDEwMAotQEAgLTQ3OCw3ICs0NzgsNyBAQCBzdHJ1Y3Qg dGFyZ2V0X29wcworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGFyZ2V0LmgJMjAx My0wMS0xOCAyMzoyNzoyMi4wOTk2MDEzNjkgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi90YXJnZXQuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3NDYwNzM0NiArMDEwMAorQEAgLTQ4 Miw3ICs0ODIsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogIAogICAgICAvKiBEb2N1bWVudGF0aW9u IG9mIHRoaXMgcm91dGluZSBpcyBwcm92aWRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nCiAgICAg ICAgIHRhcmdldF8qIG1hY3JvLiAgKi8KQEAgLTMzNDcsMTAgKzMzMDgsMTAgQEAgSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvdGFyZ2V0LmgKICAKICAgICAgaW50ICgqdG9fY2FuX2FjY2Vs X3dhdGNocG9pbnRfY29uZGl0aW9uKSAoQ09SRV9BRERSLCBpbnQsIGludCwKICAJCQkJCSAgICAg IHN0cnVjdCBleHByZXNzaW9uICopOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdHJh Y2Vwb2ludC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdHJhY2Vwb2ludC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3RyYWNlcG9pbnQuYwky MDEyLTExLTA3IDIyOjAzOjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvdHJhY2Vwb2ludC5jCTIwMTItMTEtMDcgMjI6MDk6MzAuMDY1MTQwNDU5ICswMTAwCist LS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi90cmFjZXBvaW50LmMJMjAxMy0wMS0xOCAy MzoyNzoyMi4xMDA2MDEzNzEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90cmFj ZXBvaW50LmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NzU2MDczNDkgKzAxMDAKIEBAIC05MzQsMTMg KzkzNCwxMyBAQCBhZGRfcmVnaXN0ZXIgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3QgKmNvCiAgc3Rh dGljIHZvaWQKICBhZGRfbWVtcmFuZ2UgKHN0cnVjdCBjb2xsZWN0aW9uX2xpc3QgKm1lbXJhbmdl cywgCkBAIC0zNDIwLDcgKzMzODEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90 cmFjZXBvaW50LmMKICAJICBwcmludGZfdm1hIChvZmZzZXQpOwogIAkgIHByaW50Zl9maWx0ZXJl ZCAoIiBmcm9tIGZyYW1lIHB0ciByZWcgJWRcbiIsIHJlZyk7CiAgCX0KLUBAIC0yNjE3LDcgKzI2 MTcsOCBAQCBzY29wZV9pbmZvIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpCitAQCAtMjYyMCw3 ICsyNjIwLDggQEAgc2NvcGVfaW5mbyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogICAgY29u c3QgY2hhciAqc3ltbmFtZTsKICAgIGNoYXIgKnNhdmVfYXJncyA9IGFyZ3M7CiAgICBzdHJ1Y3Qg YmxvY2tfaXRlcmF0b3IgaXRlcjsKQEAgLTM0MzAsNyArMzM5MSw3IEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3RyYWNlcG9pbnQuYwogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7 CiAgICBpbnQgcmVnbm87CiAgCi1AQCAtMjc0Nyw4ICsyNzQ4LDExIEBAIHNjb3BlX2luZm8gKGNo YXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0yNzUwLDggKzI3NTEsMTEgQEAgc2NvcGVfaW5m byAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogIAkgICAgICBicmVhazsKICAJICAgIH0KICAJ ICBpZiAoU1lNQk9MX1RZUEUgKHN5bSkpCkBAIC0zNDQ0LDExICszNDA1LDExIEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL3RyYWNlcG9pbnQuYwogIAl9CiAgICAgICAgaWYgKEJMT0NL X0ZVTkNUSU9OIChibG9jaykpCiAgCWJyZWFrOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvdHlwZXByaW50LmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90eXBlcHJpbnQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi90eXBlcHJpbnQu YwkyMDEyLTExLTA3IDIyOjAwOjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdHlwZXByaW50LmMJMjAxMi0xMS0wNyAyMjowOTozMC4wNjYxNDA0NTcgKzAxMDAK LUBAIC0xMjMsNyArMTIzLDcgQEAgd2hhdGlzX2V4cCAoY2hhciAqZXhwLCBpbnQgc2hvdykKKy0t LSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3R5cGVwcmludC5jCTIwMTMtMDEtMTggMjM6 Mjc6MjguODc2NjA3MzUxICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdHlwZXBy aW50LmMJMjAxMy0wMS0xOCAyMzozMzowMi43MDI5NzM2MTAgKzAxMDAKK0BAIC00MDksNyArNDA5 LDcgQEAgd2hhdGlzX2V4cCAoY2hhciAqZXhwLCBpbnQgc2hvdykKICAgIHN0cnVjdCB0eXBlICpy ZWFsX3R5cGUgPSBOVUxMOwogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgICBpbnQgZnVsbCA9IDA7 CkBAIC0zNDU2LDEyICszNDE3LDEyIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3R5 cGVwcmludC5jCiArICBMT05HRVNUIHRvcCA9IC0xOwogICAgaW50IHVzaW5nX2VuYyA9IDA7CiAg ICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwotIAotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvdmFsYXJpdGguYworICAgc3RydWN0IHR5cGVfcHJpbnRfb3B0aW9ucyBmbGFn cyA9IGRlZmF1bHRfcHR5cGVfZmxhZ3M7CitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv dmFsYXJpdGguYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92 YWxhcml0aC5jCTIwMTItMTEtMDcgMjI6MDI6MTguMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi92YWxhcml0aC5jCTIwMTItMTEtMDcgMjI6MTM6MzEuMTQ1ODY3NTE5 ICswMTAwCi1AQCAtMTkyLDE1ICsxOTIsMTUgQEAgdmFsdWVfc3Vic2NyaXB0IChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBMTworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmFsYXJpdGgu YwkyMDEzLTAxLTE4IDIzOjI3OjIyLjEwMTYwMTM3MyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3ZhbGFyaXRoLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44NzY2MDczNTEgKzAxMDAK K0BAIC0xOTAsMTUgKzE5MCwxNSBAQCB2YWx1ZV9zdWJzY3JpcHQgKHN0cnVjdCB2YWx1ZSAqYXJy YXksIExPCiAgICAgdG8gZG91YmxlcywgYnV0IG5vIGxvbmdlciBkb2VzLiAgKi8KICAKICBzdHJ1 Y3QgdmFsdWUgKgpAQCAtMzQ4MSw3ICszNDQyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvdmFsYXJpdGguYwogICAgc3RydWN0IHZhbHVlICp2OwogIAogICAgaWYgKGluZGV4IDwg bG93ZXJib3VuZCB8fCAoIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChhcnJh eV90eXBlKQotQEAgLTY3OCw3ICs2NzgsNyBAQCB2YWx1ZV9jb25jYXQgKHN0cnVjdCB2YWx1ZSAq YXJnMSwgc3RydWN0CitAQCAtNjM2LDcgKzYzNiw3IEBAIHZhbHVlX2NvbmNhdCAoc3RydWN0IHZh bHVlICphcmcxLCBzdHJ1Y3QKICAgIHN0cnVjdCB2YWx1ZSAqaW52YWwxOwogICAgc3RydWN0IHZh bHVlICppbnZhbDI7CiAgICBzdHJ1Y3QgdmFsdWUgKm91dHZhbCA9IE5VTEw7CkBAIC0zNDkwLDcg KzM0NTEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxhcml0aC5jCiAgICBp bnQgY291bnQsIGlkeDsKICAgIGNoYXIgKnB0cjsKICAgIGNoYXIgaW5jaGFyOwotQEAgLTE0ODks NyArMTQ4OSw3IEBAIHZhbHVlX2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVjdAorQEAg LTE0NDQsNyArMTQ0NCw3IEBAIHZhbHVlX2Jpbm9wIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIHN0cnVj dAogIGludAogIHZhbHVlX2xvZ2ljYWxfbm90IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgewpAQCAt MzQ5OSw3ICszNDYwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsYXJpdGgu YwogICAgY29uc3QgZ2RiX2J5dGUgKnA7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTE7CiAgCi1AQCAt MTUyMCwxMSArMTUyMCwxMSBAQCB2YWx1ZV9sb2dpY2FsX25vdCAoc3RydWN0IHZhbHVlICphcmcx KQorQEAgLTE0NzUsMTEgKzE0NzUsMTEgQEAgdmFsdWVfbG9naWNhbF9ub3QgKHN0cnVjdCB2YWx1 ZSAqYXJnMSkKICBzdGF0aWMgaW50CiAgdmFsdWVfc3RyY21wIChzdHJ1Y3QgdmFsdWUgKmFyZzEs IHN0cnVjdCB2YWx1ZSAqYXJnMikKICB7CkBAIC0zNTE0LDEwICszNDc1LDEwIEBAIEluZGV4OiBn ZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbGFyaXRoLmMKICAKICAgIGZvciAoaSA9IDA7IGkgPCBs ZW47IGkrKykKICAgICAgewotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMK K0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi92YWxvcHMuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWxvcHMuYwkyMDEyLTExLTA3IDIyOjA2OjM1 LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMJMjAx Mi0xMS0wNyAyMjowOTozMC4wNzQxNDA0NDUgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTMtMDEtMTggMjM6Mjc6MjIuMTA0NjAxMzc5ICswMTAwCisr KysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFsb3BzLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44 Nzc2MDczNTIgKzAxMDAKIEBAIC01NCwxMSArNTQsMTEgQEAgc3RhdGljIGludCB0eXBlY21wIChp bnQgc3RhdGljcCwgaW50IHZhcgogIAkJICAgIHN0cnVjdCBmaWVsZCB0MVtdLCBzdHJ1Y3QgdmFs dWUgKnQyW10pOwogIApAQCAtMzY2MSw3ICszNjIyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdmFsb3BzLmMKICAJCWludCBjaGFuZ2VkX2xlbjsKICAJCWdkYl9ieXRlIGJ1ZmZl cltzaXplb2YgKExPTkdFU1QpXTsKICAJCWludCBvcHRpbSwgdW5hdmFpbDsKLUBAIC0xODkyLDcg KzE4OTQsNyBAQCB2YWx1ZV9hcnJheSAoaW50IGxvd2JvdW5kLCBpbnQgaGlnaGJvdW5kCitAQCAt MTg5MSw3ICsxODkzLDcgQEAgdmFsdWVfYXJyYXkgKGludCBsb3dib3VuZCwgaW50IGhpZ2hib3Vu ZAogIHsKICAgIGludCBuZWxlbTsKICAgIGludCBpZHg7CkBAIC0zNjcwLDcgKzM2MzEsNyBAQCBJ bmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwogICAgc3RydWN0IHZhbHVlICp2 YWw7CiAgICBzdHJ1Y3QgdHlwZSAqYXJyYXl0eXBlOwogIAotQEAgLTIwODAsNyArMjA4Miw3IEBA IHR5cGVjbXAgKGludCBzdGF0aWNwLCBpbnQgdmFyYXJncywgaW50IG4KK0BAIC0yMDY2LDcgKzIw NjgsNyBAQCB0eXBlY21wIChpbnQgc3RhdGljcCwgaW50IHZhcmFyZ3MsIGludCBuCiAgCiAgc3Rh dGljIHZvaWQKICB1cGRhdGVfc2VhcmNoX3Jlc3VsdCAoc3RydWN0IHZhbHVlICoqcmVzdWx0X3B0 ciwgc3RydWN0IHZhbHVlICp2LApAQCAtMzY3OSw3ICszNjQwLDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAJCSAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVj dCB0eXBlICp0eXBlKQogIHsKICAgIGlmICh2ICE9IE5VTEwpCi1AQCAtMjEwNCwxMCArMjEwNiwx MCBAQCB1cGRhdGVfc2VhcmNoX3Jlc3VsdCAoc3RydWN0IHZhbHVlICoqcmVzCitAQCAtMjA5MCwx MCArMjA5MiwxMCBAQCB1cGRhdGVfc2VhcmNoX3Jlc3VsdCAoc3RydWN0IHZhbHVlICoqcmVzCiAg ICAgbG9va3VwIGlzIGFtYmlndW91cy4gICovCiAgCiAgc3RhdGljIHZvaWQKQEAgLTM2OTIsNyAr MzY1Myw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCiAgCQkJc3Ry dWN0IHR5cGUgKm91dGVybW9zdF90eXBlKQogIHsKICAgIGludCBpOwotQEAgLTIxNjIsNyArMjE2 NCw3IEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUKK0BAIC0yMTQ4 LDcgKzIxNTAsNyBAQCBkb19zZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lCiAg CQkgICA8dmFyaWFudCBmaWVsZD4uICAqLwogIAogIAkJc3RydWN0IHZhbHVlICp2ID0gTlVMTDsK QEAgLTM3MDEsNyArMzY2Miw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9w cy5jCiAgCiAgCQkvKiBUaGlzIGlzIHByZXR0eSBncm9zcy4gIEluIEcrKywgdGhlIG9mZnNldCBp biBhbgogIAkJICAgYW5vbnltb3VzIHVuaW9uIGlzIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcg b2YgdGhlCi1AQCAtMjIwMSw3ICsyMjAzLDcgQEAgZG9fc2VhcmNoX3N0cnVjdF9maWVsZCAoY29u c3QgY2hhciAqbmFtZQorQEAgLTIxODcsNyArMjE4OSw3IEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmll bGQgKGNvbnN0IGNoYXIgKm5hbWUKICAJCQkgICAgICYmIChzdHJjbXBfaXcgKG5hbWUsIAogIAkJ CQkJICAgIFRZUEVfQkFTRUNMQVNTX05BTUUgKHR5cGUsIAogIAkJCQkJCQkJIGkpKSA9PSAwKSk7 CkBAIC0zNzEwLDcgKzM2NzEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxv cHMuYwogIAogICAgICAgIGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAodHlwZSwgaSkpCiAgCXsK LUBAIC0yMjc2LDExICsyMjc4LDExIEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNo YXIgKm5hbWUKK0BAIC0yMjYyLDExICsyMjY0LDExIEBAIGRvX3NlYXJjaF9zdHJ1Y3RfZmllbGQg KGNvbnN0IGNoYXIgKm5hbWUKICAgICBmaWVsZHMsIGxvb2sgZm9yIGEgYmFzZWNsYXNzIG5hbWVk IE5BTUUuICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMzcyNCw3ICszNjg1LDcg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAKICAgIGRvX3NlYXJj aF9zdHJ1Y3RfZmllbGQgKG5hbWUsIGFyZzEsIG9mZnNldCwgdHlwZSwgbG9va2luZ19mb3JfYmFz ZWNsYXNzLAogIAkJCSAgJnJlc3VsdCwgJmJvZmZzZXQsIHR5cGUpOwotQEAgLTIyOTcsNyArMjI5 OSw3IEBAIHNlYXJjaF9zdHJ1Y3RfZmllbGQgKGNvbnN0IGNoYXIgKm5hbWUsIHMKK0BAIC0yMjgz LDcgKzIyODUsNyBAQCBzZWFyY2hfc3RydWN0X2ZpZWxkIChjb25zdCBjaGFyICpuYW1lLCBzCiAg CiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCiAgc2VhcmNoX3N0cnVjdF9tZXRob2QgKGNvbnN0IGNo YXIgKm5hbWUsIHN0cnVjdCB2YWx1ZSAqKmFyZzFwLApAQCAtMzczMyw3ICszNjk0LDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAJCSAgICAgIGludCAqc3RhdGlj X21lbWZ1bmNwLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CiAgICBpbnQgaTsKLUBAIC0yMzYxLDkg KzIzNjMsOSBAQCBzZWFyY2hfc3RydWN0X21ldGhvZCAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC0y MzQ3LDkgKzIzNDksOSBAQCBzZWFyY2hfc3RydWN0X21ldGhvZCAoY29uc3QgY2hhciAqbmFtZSwK ICAKICAgIGZvciAoaSA9IFRZUEVfTl9CQVNFQ0xBU1NFUyAodHlwZSkgLSAxOyBpID49IDA7IGkt LSkKICAgICAgewpAQCAtMzc0NSw3ICszNzA2LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvdmFsb3BzLmMKICAKICAgICAgICBpZiAoQkFTRVRZUEVfVklBX1ZJUlRVQUwgKHR5cGUs IGkpKQogIAl7Ci1AQCAtMjU0NSw4ICsyNTQ3LDggQEAgdmFsdWVfc3RydWN0X2VsdCAoc3RydWN0 IHZhbHVlICoqYXJncCwgcworQEAgLTI1MzEsOCArMjUzMyw4IEBAIHZhbHVlX3N0cnVjdF9lbHQg KHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIHMKICAKICBzdGF0aWMgc3RydWN0IGZuX2ZpZWxkICoKICBm aW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBjb25zdCBjaGFyICptZXRob2Qs CkBAIC0zNzU2LDcgKzM3MTcsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxv cHMuYwogIHsKICAgIGludCBpOwogICAgc3RydWN0IGZuX2ZpZWxkICpmOwotQEAgLTI1NzksNyAr MjU4MSw3IEBAIGZpbmRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGMKK0BAIC0y NTY1LDcgKzI1NjcsNyBAQCBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLCBj CiAgICAvKiBOb3QgZm91bmQgaW4gb2JqZWN0LCBjaGVjayBpbiBiYXNlIHN1Ym9iamVjdHMuICAq LwogICAgZm9yIChpID0gVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKSAtIDE7IGkgPj0gMDsgaS0t KQogICAgICB7CkBAIC0zNzY1LDcgKzM3MjYsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi92YWxvcHMuYwogIAogICAgICAgIGlmIChCQVNFVFlQRV9WSUFfVklSVFVBTCAodHlwZSwg aSkpCiAgCXsKLUBAIC0yNjE1LDcgKzI2MTcsNyBAQCBmaW5kX21ldGhvZF9saXN0IChzdHJ1Y3Qg dmFsdWUgKiphcmdwLCBjCitAQCAtMjYwMSw3ICsyNjAzLDcgQEAgZmluZF9tZXRob2RfbGlzdCAo c3RydWN0IHZhbHVlICoqYXJncCwgYwogIHN0YXRpYyBzdHJ1Y3QgZm5fZmllbGQgKgogIHZhbHVl X2ZpbmRfb2xvYWRfbWV0aG9kX2xpc3QgKHN0cnVjdCB2YWx1ZSAqKmFyZ3AsIGNvbnN0IGNoYXIg Km1ldGhvZCwKICAJCQkgICAgICBpbnQgb2Zmc2V0LCBpbnQgKm51bV9mbnMsIApAQCAtMzc3NCw3 ICszNzM1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICB7CiAg ICBzdHJ1Y3QgdHlwZSAqdDsKICAKLUBAIC0yNzA3LDcgKzI3MDksNyBAQCBmaW5kX292ZXJsb2Fk X21hdGNoIChzdHJ1Y3QgdmFsdWUgKiphcmdzCitAQCAtMjY5Myw3ICsyNjk1LDcgQEAgZmluZF9v dmVybG9hZF9tYXRjaCAoc3RydWN0IHZhbHVlICoqYXJncwogICAgLyogTnVtYmVyIG9mIG92ZXJs b2FkZWQgaW5zdGFuY2VzIGJlaW5nIGNvbnNpZGVyZWQuICAqLwogICAgaW50IG51bV9mbnMgPSAw OwogICAgc3RydWN0IHR5cGUgKmJhc2V0eXBlID0gTlVMTDsKQEAgLTM3ODMsNyArMzc0NCw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCiAgCiAgICBzdHJ1Y3QgY2xl YW51cCAqYWxsX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIE5VTEwpOwog IAotQEAgLTM0MTMsNyArMzQxNSw3IEBAIGNvbXBhcmVfcGFyYW1ldGVycyAoc3RydWN0IHR5cGUg KnQxLCBzdHIKK0BAIC0zMzYzLDcgKzMzNjUsNyBAQCBjb21wYXJlX3BhcmFtZXRlcnMgKHN0cnVj dCB0eXBlICp0MSwgc3RyCiAgICAgdGhlIGZvcm0gIkRPTUFJTjo6TkFNRSIuICAqLwogIAogIHN0 YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtMzc5Miw3ICszNzUzLDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvdmFsb3BzLmMKICAJCQkJc3RydWN0IHR5cGUgKmN1cnR5cGUsIGNoYXIg Km5hbWUsCiAgCQkJCXN0cnVjdCB0eXBlICppbnR5cGUsIAogIAkJCQlpbnQgd2FudF9hZGRyZXNz LAotQEAgLTM0NTAsNyArMzQ1Miw3IEBAIHZhbHVlX3N0cnVjdF9lbHRfZm9yX3JlZmVyZW5jZSAo c3RydWN0IHQKK0BAIC0zNDAwLDcgKzM0MDIsNyBAQCB2YWx1ZV9zdHJ1Y3RfZWx0X2Zvcl9yZWZl cmVuY2UgKHN0cnVjdCB0CiAgCSAgaWYgKHdhbnRfYWRkcmVzcykKICAJICAgIHJldHVybiB2YWx1 ZV9mcm9tX2xvbmdlc3QKICAJICAgICAgKGxvb2t1cF9tZW1iZXJwdHJfdHlwZSAoVFlQRV9GSUVM RF9UWVBFICh0LCBpKSwgZG9tYWluKSwKQEAgLTM4MDEsNyArMzc2Miw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9wcy5jCiAgCSAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxf QVZPSURfU0lERV9FRkZFQ1RTKQogIAkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVlIChUWVBFX0ZJ RUxEX1RZUEUgKHQsIGkpKTsKICAJICBlbHNlCi1AQCAtMzU5Myw3ICszNTk1LDcgQEAgdmFsdWVf c3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlIChzdHJ1Y3QgdAorQEAgLTM1NDMsNyArMzU0NSw3IEBA IHZhbHVlX3N0cnVjdF9lbHRfZm9yX3JlZmVyZW5jZSAoc3RydWN0IHQKICAgIGZvciAoaSA9IFRZ UEVfTl9CQVNFQ0xBU1NFUyAodCkgLSAxOyBpID49IDA7IGktLSkKICAgICAgewogICAgICAgIHN0 cnVjdCB2YWx1ZSAqdjsKQEAgLTM4MTAsNyArMzc3MSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3ZhbG9wcy5jCiAgCiAgICAgICAgaWYgKEJBU0VUWVBFX1ZJQV9WSVJUVUFMICh0 LCBpKSkKICAJYmFzZV9vZmZzZXQgPSAwOwotQEAgLTM2ODMsNyArMzY4NSw3IEBAIHZhbHVlX21h eWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdAorQEAgLTM2MzMsNyArMzYzNSw3IEBAIHZh bHVlX21heWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdAogIAogIHN0cnVjdCB0eXBlICoK ICB2YWx1ZV9ydHRpX2luZGlyZWN0X3R5cGUgKHN0cnVjdCB2YWx1ZSAqdiwgaW50ICpmdWxsLCAK QEAgLTM4MTksNyArMzc4MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbG9w cy5jCiAgewogICAgc3RydWN0IHZhbHVlICp0YXJnZXQ7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwg KnJlYWxfdHlwZSwgKnRhcmdldF90eXBlOwotQEAgLTM3MzMsMTIgKzM3MzUsMTIgQEAgdmFsdWVf cnR0aV9pbmRpcmVjdF90eXBlIChzdHJ1Y3QgdmFsdWUgKgorQEAgLTM2ODMsMTIgKzM2ODUsMTIg QEAgdmFsdWVfcnR0aV9pbmRpcmVjdF90eXBlIChzdHJ1Y3QgdmFsdWUgKgogIHN0cnVjdCB2YWx1 ZSAqCiAgdmFsdWVfZnVsbF9vYmplY3QgKHN0cnVjdCB2YWx1ZSAqYXJncCwgCiAgCQkgICBzdHJ1 Y3QgdHlwZSAqcnR5cGUsIApAQCAtMzgzNCwxMSArMzc5NSwxMSBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi92YWxvcHMuYwogICAgaW50IHVzaW5nX2VuYyA9IDA7CiAgICBzdHJ1Y3Qg dmFsdWUgKm5ld192YWw7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxwcmlu dC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFscHJpbnQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWxwcmludC5jCTIwMTItMTEtMDcg MjI6MDA6NDEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxw cmludC5jCTIwMTItMTEtMDcgMjI6MTE6NDkuMzEzOTM4MTMzICswMTAwCi1AQCAtMjY0LDcgKzI2 NCw3IEBAIHNjYWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQorLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9nZGIvdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjEwNTYwMTM4 MCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHByaW50LmMJMjAxMy0wMS0x OCAyMzoyNzoyOC44Nzc2MDczNTIgKzAxMDAKK0BAIC0yOTksNyArMjk5LDcgQEAgc2NhbGFyX3R5 cGVfcCAoc3RydWN0IHR5cGUgKnR5cGUpCiAgaW50CiAgdmFscHJpbnRfY2hlY2tfdmFsaWRpdHkg KHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCQkJIHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMzg0 Nyw3ICszODA4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuYwog IAkJCSBjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbCkKICB7CiAgICBDSEVDS19UWVBFREVGICh0eXBl KTsKLUBAIC0zMjgsNyArMzI4LDcgQEAgdmFsX3ByaW50X2ludmFsaWRfYWRkcmVzcyAoc3RydWN0 IHVpX2ZpbAorQEAgLTM2Myw3ICszNjMsNyBAQCB2YWxfcHJpbnRfaW52YWxpZF9hZGRyZXNzIChz dHJ1Y3QgdWlfZmlsCiAgCiAgdm9pZAogIGdlbmVyaWNfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC0zODU2LDcgKzM4MTcsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxwcmludC5jCiAgCQkgICBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2lu YWxfdmFsdWUsCiAgCQkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqb3B0aW9u cywKLUBAIC02OTEsNyArNjkxLDcgQEAgZ2VuZXJpY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0 eXBlLCBjbworQEAgLTcyNiw3ICs3MjYsNyBAQCBnZW5lcmljX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvCiAgICAgUkVDVVJTRS4gICovCiAgCiAgdm9pZApAQCAtMzg2NSw3ICszODI2 LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuYwogIAkgICBDT1JF X0FERFIgYWRkcmVzcywgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiAgCSAg IGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsLAogIAkgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyAqb3B0aW9ucywKLUBAIC05MDMsNyArOTAzLDcgQEAgdmFsX3ByaW50X3R5cGVfY29k ZV9mbGFncyAoc3RydWN0IHR5cGUgKgorQEAgLTkzOCw3ICs5MzgsNyBAQCB2YWxfcHJpbnRfdHlw ZV9jb2RlX2ZsYWdzIChzdHJ1Y3QgdHlwZSAqCiAgCiAgdm9pZAogIHZhbF9wcmludF9zY2FsYXJf Zm9ybWF0dGVkIChzdHJ1Y3QgdHlwZSAqdHlwZSwKQEAgLTM4NzQsNyArMzgzNSw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHByaW50LmMKICAJCQkgICAgY29uc3Qgc3RydWN0 IHZhbHVlICp2YWwsCiAgCQkJICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpv cHRpb25zLAogIAkJCSAgICBpbnQgc2l6ZSwKLUBAIC0xNDQ0LDcgKzE0NDQsNyBAQCBwcmludF9k ZWNpbWFsX2NoYXJzIChzdHJ1Y3QgdWlfZmlsZSAqc3RyCitAQCAtMTQ3OSw3ICsxNDc5LDcgQEAg cHJpbnRfZGVjaW1hbF9jaGFycyAoc3RydWN0IHVpX2ZpbGUgKnN0cgogIAogIHZvaWQKICBwcmlu dF9oZXhfY2hhcnMgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGNvbnN0IGdkYl9ieXRlICp2YWxh ZGRyLApAQCAtMzg4Myw3ICszODQ0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv dmFscHJpbnQuYwogIHsKICAgIGNvbnN0IGdkYl9ieXRlICpwOwogIAotQEAgLTE1NjEsMjMgKzE1 NjEsMjMgQEAgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cnVjdCB0eXBlICppbgorQEAgLTE1 OTYsMjMgKzE1OTYsMjMgQEAgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cnVjdCB0eXBlICpp bgogIAogIHZvaWQKICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBl LApAQCAtMzkxMyw3ICszODc0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFs cHJpbnQuYwogICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7CiAgICBzdHJ1Y3QgY2xl YW51cCAqYmFja190bzsKICAgIENPUkVfQUREUiBzYXZlZF9hZGRyZXNzID0gYWRkcmVzczsKLUBA IC0xNjcyLDcgKzE2NzIsNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBl ICp0CitAQCAtMTcwNyw3ICsxNzA3LDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1 Y3QgdHlwZSAqdAogIAkJICAgICBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UgKyAxLCB2YWwsIG9w dGlvbnMsCiAgCQkgICAgIGN1cnJlbnRfbGFuZ3VhZ2UpOwogIAkgIGFubm90YXRlX2VsdF9yZXAg KHJlcHMpOwpAQCAtMzkyMiw3ICszODgzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvdmFscHJpbnQuYwogIAkgIGFubm90YXRlX2VsdF9yZXBfZW5kICgpOwogIAogIAkgIGkgPSBy ZXAxIC0gMTsKLUBAIC0yMDg1LDcgKzIwODUsNyBAQCBnZW5lcmljX2VtaXRfY2hhciAoaW50IGMs IHN0cnVjdCB0eXBlICp0CitAQCAtMjM1OCw3ICsyMzU4LDcgQEAgcHJpbnRfY29udmVydGVkX2No YXJzX3RvX29ic3RhY2sgKHN0cnVjdAogIAogIHZvaWQKICBnZW5lcmljX3ByaW50c3RyIChzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgCkBAIC0zOTMxLDExICszODky LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHByaW50LmMKICAJCSAgY29u c3QgY2hhciAqZW5jb2RpbmcsIGludCBmb3JjZV9lbGxpcHNlcywKICAJCSAgaW50IHF1b3RlX2No YXIsIGludCBjX3N0eWxlX3Rlcm1pbmF0b3IsCiAgCQkgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zICpvcHRpb25zKQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJp bnQuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHByaW50LmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvdmFscHJpbnQuaAkyMDEyLTA1LTE4 IDE3OjMxOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFs cHJpbnQuaAkyMDEyLTExLTA3IDIyOjA5OjMwLjA5MzE0MDQxOCArMDEwMAotQEAgLTExNywxMSAr MTE3LDExIEBAIGV4dGVybiB2b2lkIG1heWJlX3ByaW50X2FycmF5X2luZGV4IChzdHIKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3ZhbHByaW50LmgJMjAxMy0wMS0xOCAyMzoyNzoy Mi4xMDY2MDEzODEgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi92YWxwcmludC5o CTIwMTMtMDEtMTggMjM6Mjc6MjguODc4NjA3MzUzICswMTAwCitAQCAtMTEzLDExICsxMTMsMTEg QEAgZXh0ZXJuIHZvaWQgbWF5YmVfcHJpbnRfYXJyYXlfaW5kZXggKHN0cgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAogIAkJCQkg ICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwogIApAQCAtMzk0OSw3ICsz OTEwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuaAogIAogIGV4 dGVybiB2b2lkIHZhbF9wcmludF90eXBlX2NvZGVfaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBn ZGJfYnl0ZSAqLAogIAkJCQkgICAgIHN0cnVjdCB1aV9maWxlICopOwotQEAgLTEzMSw3ICsxMzEs NyBAQCBleHRlcm4gdm9pZCB2YWxfcHJpbnRfdHlwZV9jb2RlX2ZsYWdzIChzCitAQCAtMTI3LDcg KzEyNyw3IEBAIGV4dGVybiB2b2lkIHZhbF9wcmludF90eXBlX2NvZGVfZmxhZ3MgKHMKICAJCQkJ ICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOwogIAogIGV4dGVybiB2b2lkIHZhbF9wcmlu dF9zY2FsYXJfZm9ybWF0dGVkIChzdHJ1Y3QgdHlwZSAqLApAQCAtMzk1OCw3ICszOTE5LDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFscHJpbnQuaAogIAkJCQkJY29uc3Qgc3Ry dWN0IHZhbHVlICosCiAgCQkJCQljb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqLAog IAkJCQkJaW50LAotQEAgLTE0Nyw3ICsxNDcsNyBAQCBleHRlcm4gdm9pZCBwcmludF9kZWNpbWFs X2NoYXJzIChzdHJ1Y3QKK0BAIC0xNDMsNyArMTQzLDcgQEAgZXh0ZXJuIHZvaWQgcHJpbnRfZGVj aW1hbF9jaGFycyAoc3RydWN0CiAgCQkJCSB1bnNpZ25lZCBpbnQsIGVudW0gYmZkX2VuZGlhbik7 CiAgCiAgZXh0ZXJuIHZvaWQgcHJpbnRfaGV4X2NoYXJzIChzdHJ1Y3QgdWlfZmlsZSAqLCBjb25z dCBnZGJfYnl0ZSAqLApAQCAtMzk2Nyw3ICszOTI4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvdmFscHJpbnQuaAogIAogIGV4dGVybiB2b2lkIHByaW50X2NoYXJfY2hhcnMgKHN0 cnVjdCB1aV9maWxlICosIHN0cnVjdCB0eXBlICosCiAgCQkJICAgICAgY29uc3QgZ2RiX2J5dGUg KiwgdW5zaWduZWQgaW50LCBlbnVtIGJmZF9lbmRpYW4pOwotQEAgLTE5MSw3ICsxOTEsNyBAQCBz dHJ1Y3QgZ2VuZXJpY192YWxfcHJpbnRfZGVjb3JhdGlvbnMKK0BAIC0xODgsNyArMTg4LDcgQEAg c3RydWN0IGdlbmVyaWNfdmFsX3ByaW50X2RlY29yYXRpb25zCiAgCiAgCiAgZXh0ZXJuIHZvaWQg Z2VuZXJpY192YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFs YWRkciwKQEAgLTM5NzYsNyArMzkzNyw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3ZhbHByaW50LmgKICAJCQkgICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vy c2UsCiAgCQkJICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqb3JpZ2luYWxfdmFsdWUsCiAgCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zLAotQEAgLTIw MSw3ICsyMDEsNyBAQCBleHRlcm4gdm9pZCBnZW5lcmljX2VtaXRfY2hhciAoaW50IGMsIHN0CitA QCAtMTk4LDcgKzE5OCw3IEBAIGV4dGVybiB2b2lkIGdlbmVyaWNfZW1pdF9jaGFyIChpbnQgYywg c3QKICAJCQkgICAgICAgaW50IHF1b3RlciwgY29uc3QgY2hhciAqZW5jb2RpbmcpOwogIAogIGV4 dGVybiB2b2lkIGdlbmVyaWNfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVj dCB0eXBlICp0eXBlLCAKQEAgLTM5ODUsMTAgKzM5NDYsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvdmFscHJpbnQuaAogIAkJCSAgICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLCBp bnQgZm9yY2VfZWxsaXBzZXMsCiAgCQkJICAgICAgaW50IHF1b3RlX2NoYXIsIGludCBjX3N0eWxl X3Rlcm1pbmF0b3IsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbHVlLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41 LjAuMjAxMjA5MjYub3JpZy9nZGIvdmFsdWUuYwkyMDEyLTExLTA3IDIyOjAzOjU3LjAwMDAwMDAw MCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwkyMDEyLTExLTA3IDIy OjA5OjMwLjA5NjE0MDQxNCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv dmFsdWUuYwkyMDEzLTAxLTE4IDIzOjI3OjIyLjEwODYwMTM4NSArMDEwMAorKysrIGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL3ZhbHVlLmMJMjAxMy0wMS0xOCAyMzoyNzoyOC44Nzg2MDczNTMgKzAx MDAKIEBAIC02OCwxMCArNjgsMTAgQEAgc3RydWN0IGludGVybmFsX2Z1bmN0aW9uCiAgc3RydWN0 IHJhbmdlCiAgewpAQCAtNDEwMCw3ICs0MDYxLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvdmFsdWUuYwogIHsKICAgIHZhbHVlLT5vZmZzZXQgPSBvZmZzZXQ7CiAgfQotQEAgLTky NCw4ICs5MjYsOSBAQCB2YWx1ZV9jb250ZW50c19hbGwgKHN0cnVjdCB2YWx1ZSAqdmFsdWUpCitA QCAtOTI4LDggKzkzMCw5IEBAIHZhbHVlX2NvbnRlbnRzX2FsbCAoc3RydWN0IHZhbHVlICp2YWx1 ZSkKICAgICBEU1RfT0ZGU0VUK0xFTkdUSCkgcmFuZ2UgYXJlIHdob2xseSBhdmFpbGFibGUuICAq LwogIAogIHZvaWQKQEAgLTQxMTIsNyArNDA3Myw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3ZhbHVlLmMKICB7CiAgICByYW5nZV9zICpyOwogICAgaW50IGk7Ci1AQCAtOTczLDgg Kzk3Niw4IEBAIHZhbHVlX2NvbnRlbnRzX2NvcHlfcmF3IChzdHJ1Y3QgdmFsdWUgKmQKK0BAIC05 NzcsOCArOTgwLDggQEAgdmFsdWVfY29udGVudHNfY29weV9yYXcgKHN0cnVjdCB2YWx1ZSAqZAog ICAgIERTVF9PRkZTRVQrTEVOR1RIKSByYW5nZSBhcmUgd2hvbGx5IGF2YWlsYWJsZS4gICovCiAg CiAgdm9pZApAQCAtNDEyMyw3ICs0MDg0LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvdmFsdWUuYwogIHsKICAgIHJlcXVpcmVfbm90X29wdGltaXplZF9vdXQgKHNyYyk7CiAgCi1A QCAtMTA2OCw3ICsxMDcxLDcgQEAgdmFsdWVfZW50aXJlbHlfb3B0aW1pemVkX291dCAoY29uc3Qg c3RydQorQEAgLTEwNzIsNyArMTA3NSw3IEBAIHZhbHVlX2VudGlyZWx5X29wdGltaXplZF9vdXQg KGNvbnN0IHN0cnUKICB9CiAgCiAgaW50CkBAIC00MTMyLDcgKzQwOTMsNyBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgewogICAgaWYgKCF2YWx1ZS0+b3B0aW1pemVk X291dCkKICAgICAgcmV0dXJuIDE7Ci1AQCAtMTA4MSw3ICsxMDg0LDcgQEAgdmFsdWVfYml0c192 YWxpZCAoY29uc3Qgc3RydWN0IHZhbHVlICp2YQorQEAgLTEwODUsNyArMTA4OCw3IEBAIHZhbHVl X2JpdHNfdmFsaWQgKGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmEKICAKICBpbnQKICB2YWx1ZV9iaXRz X3N5bnRoZXRpY19wb2ludGVyIChjb25zdCBzdHJ1Y3QgdmFsdWUgKnZhbHVlLApAQCAtNDE0MSw3 ICs0MTAyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIHsKICAg IGlmICh2YWx1ZS0+bHZhbCAhPSBsdmFsX2NvbXB1dGVkCiAgICAgICAgfHwgIXZhbHVlLT5sb2Nh dGlvbi5jb21wdXRlZC5mdW5jcy0+Y2hlY2tfc3ludGhldGljX3BvaW50ZXIpCi1AQCAtMTA5MSwy NiArMTA5NCwyNiBAQCB2YWx1ZV9iaXRzX3N5bnRoZXRpY19wb2ludGVyIChjb25zdCBzdHJ1CitA QCAtMTA5NSwyNiArMTA5OCwyNiBAQCB2YWx1ZV9iaXRzX3N5bnRoZXRpY19wb2ludGVyIChjb25z dCBzdHJ1CiAgCQkJCQkJCQkgIGxlbmd0aCk7CiAgfQogIApAQCAtNDE3Miw3ICs0MTMzLDcgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIHsKICAgIHZhbHVlLT5wb2lu dGVkX3RvX29mZnNldCA9IHZhbDsKICB9Ci1AQCAtMTk3MCw3ICsxOTczLDcgQEAgZ2V0X2ludGVy bmFsdmFyX2Z1bmN0aW9uIChzdHJ1Y3QgaW50ZXJuYQorQEAgLTE5NzQsNyArMTk3Nyw3IEBAIGdl dF9pbnRlcm5hbHZhcl9mdW5jdGlvbiAoc3RydWN0IGludGVybmEKICB9CiAgCiAgdm9pZApAQCAt NDE4MSw3ICs0MTQyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwog IAkJCSAgIGludCBiaXRzaXplLCBzdHJ1Y3QgdmFsdWUgKm5ld3ZhbCkKICB7CiAgICBnZGJfYnl0 ZSAqYWRkcjsKLUBAIC0yNjcxLDcgKzI2NzQsNyBAQCBzZXRfdmFsdWVfZW5jbG9zaW5nX3R5cGUg KHN0cnVjdCB2YWx1ZSAqCitAQCAtMjY4MSw3ICsyNjg0LDcgQEAgc2V0X3ZhbHVlX2VuY2xvc2lu Z190eXBlIChzdHJ1Y3QgdmFsdWUgKgogICAgIEZJRUxETk8gc2F5cyB3aGljaCBmaWVsZC4gICov CiAgCiAgc3RydWN0IHZhbHVlICoKQEAgLTQxOTAsNyArNDE1MSw3IEBAIEluZGV4OiBnZGItNy41 LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAJCSAgICAgICBpbnQgZmllbGRubywgc3RydWN0IHR5 cGUgKmFyZ190eXBlKQogIHsKICAgIHN0cnVjdCB2YWx1ZSAqdjsKLUBAIC0yNzAxLDcgKzI3MDQs NyBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnCitAQCAtMjcxMSw3 ICsyNzE0LDcgQEAgdmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZwogIAkg Yml0LiAgQXNzdW1lIHRoYXQgdGhlIGFkZHJlc3MsIG9mZnNldCwgYW5kIGVtYmVkZGVkIG9mZnNl dAogIAkgYXJlIHN1ZmZpY2llbnRseSBhbGlnbmVkLiAgKi8KICAKQEAgLTQxOTksNyArNDE2MCw3 IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAgICAgICBpbnQgY29u dGFpbmVyX2JpdHNpemUgPSBUWVBFX0xFTkdUSCAodHlwZSkgKiA4OwogIAogICAgICAgIHYgPSBh bGxvY2F0ZV92YWx1ZV9sYXp5ICh0eXBlKTsKLUBAIC0yNzI0LDcgKzI3MjcsNyBAQCB2YWx1ZV9w cmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnCitAQCAtMjczNCw3ICsyNzM3LDcgQEAg dmFsdWVfcHJpbWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZwogICAgICAgIC8qIFRoaXMg ZmllbGQgaXMgYWN0dWFsbHkgYSBiYXNlIHN1Ym9iamVjdCwgc28gcHJlc2VydmUgdGhlCiAgCSBl bnRpcmUgb2JqZWN0J3MgY29udGVudHMgZm9yIGxhdGVyIHJlZmVyZW5jZXMgdG8gdmlydHVhbAog IAkgYmFzZXMsIGV0Yy4gICovCkBAIC00MjA4LDcgKzQxNjksNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgCiAgICAgICAgLyogTGF6eSByZWdpc3RlciB2YWx1ZXMg d2l0aCBvZmZzZXRzIGFyZSBub3Qgc3VwcG9ydGVkLiAgKi8KICAgICAgICBpZiAoVkFMVUVfTFZB TCAoYXJnMSkgPT0gbHZhbF9yZWdpc3RlciAmJiB2YWx1ZV9sYXp5IChhcmcxKSkKLUBAIC0yODAx LDcgKzI4MDQsNyBAQCB2YWx1ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgZmllCitA QCAtMjgxMSw3ICsyODE0LDcgQEAgdmFsdWVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50 IGZpZQogIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKmFy ZzFwLCBzdHJ1Y3QgZm5fZmllbGQgKmYsCiAgCQlpbnQgaiwgc3RydWN0IHR5cGUgKnR5cGUsCkBA IC00MjE3LDcgKzQxNzgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5j CiAgewogICAgc3RydWN0IHZhbHVlICp2OwogICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gVFlQRV9G Tl9GSUVMRF9UWVBFIChmLCBqKTsKLUBAIC0yODYxLDggKzI4NjQsOCBAQCB2YWx1ZV9mbl9maWVs ZCAoc3RydWN0IHZhbHVlICoqYXJnMXAsIHN0CitAQCAtMjg3MSw4ICsyODc0LDggQEAgdmFsdWVf Zm5fZmllbGQgKHN0cnVjdCB2YWx1ZSAqKmFyZzFwLCBzdAogIAogIHN0YXRpYyBpbnQKICB1bnBh Y2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlICpmaWVsZF90eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQyMjgsNyArNDE4OSw3IEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAJCQkgICAgIExPTkdFU1QgKnJlc3VsdCkKICB7CiAgICBl bnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVf YXJjaCAoZmllbGRfdHlwZSkpOwotQEAgLTI4NzAsNyArMjg3Myw3IEBAIHVucGFja192YWx1ZV9i aXRzX2FzX2xvbmdfMSAoc3RydWN0IHR5cGUKK0BAIC0yODgwLDcgKzI4ODMsNyBAQCB1bnBhY2tf dmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlCiAgICBVTE9OR0VTVCB2YWxtYXNrOwog ICAgaW50IGxzYmNvdW50OwogICAgaW50IGJ5dGVzX3JlYWQ7CkBAIC00MjM3LDcgKzQxOTgsNyBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgCiAgICAvKiBSZWFkIHRo ZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcyByZXF1aXJlZDsgdGhlcmUgbWF5IG5vdCBiZQogICAg ICAgZW5vdWdoIGJ5dGVzIHRvIHJlYWQgYW4gZW50aXJlIFVMT05HRVNULiAgKi8KLUBAIC0yOTQw LDcgKzI5NDMsNyBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nXzEgKHN0cnVjdCB0eXBlCitA QCAtMjk1MCw3ICsyOTUzLDcgQEAgdW5wYWNrX3ZhbHVlX2JpdHNfYXNfbG9uZ18xIChzdHJ1Y3Qg dHlwZQogIAogIGludAogIHVucGFja192YWx1ZV9iaXRzX2FzX2xvbmcgKHN0cnVjdCB0eXBlICpm aWVsZF90eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQyNDYsNyArNDIwNyw3IEBA IEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAJCQkgICBjb25zdCBzdHJ1 Y3QgdmFsdWUgKm9yaWdpbmFsX3ZhbHVlLAogIAkJCSAgIExPTkdFU1QgKnJlc3VsdCkKICB7Ci1A QCAtMjk1OCwxMCArMjk2MSwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25nIChzdHJ1Y3Qg dHlwZSAqCitAQCAtMjk2OCwxMCArMjk3MSwxMCBAQCB1bnBhY2tfdmFsdWVfYml0c19hc19sb25n IChzdHJ1Y3QgdHlwZSAqCiAgCiAgc3RhdGljIGludAogIHVucGFja192YWx1ZV9maWVsZF9hc19s b25nXzEgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQy NTksNyArNDIyMCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAg IGludCBiaXRzaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBmaWVsZG5vKTsKICAgIHN0 cnVjdCB0eXBlICpmaWVsZF90eXBlID0gVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVsZG5vKTsK ICAKLUBAIC0yOTc3LDcgKzI5ODAsNyBAQCB1bnBhY2tfdmFsdWVfZmllbGRfYXNfbG9uZ18xIChz dHJ1Y3QgdHlwCitAQCAtMjk4Nyw3ICsyOTkwLDcgQEAgdW5wYWNrX3ZhbHVlX2ZpZWxkX2FzX2xv bmdfMSAoc3RydWN0IHR5cAogIAogIGludAogIHVucGFja192YWx1ZV9maWVsZF9hc19sb25nIChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00MjY4LDcgKzQy MjksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgCQkJICAgIGNv bnN0IHN0cnVjdCB2YWx1ZSAqdmFsLCBMT05HRVNUICpyZXN1bHQpCiAgewogICAgZ2RiX2Fzc2Vy dCAodmFsICE9IE5VTEwpOwotQEAgLTMwMDksNyArMzAxMiw3IEBAIHVucGFja19maWVsZF9hc19s b25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0zMDE5LDcgKzMwMjIsNyBAQCB1bnBhY2tfZmll bGRfYXNfbG9uZyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgc3RydWN0IHZhbHVlICoKICB2YWx1ZV9m aWVsZF9iaXRmaWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVsZG5vLAogIAkJICAgICAg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCkBAIC00Mjc3LDcgKzQyMzgsNyBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5jCiAgewogICAgTE9OR0VTVCBsOwogIAotQEAgLTMw MzYsMTIgKzMwMzksMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0eXBlICp0eXBl LAorQEAgLTMwNDYsMTIgKzMwNDksMTIgQEAgdmFsdWVfZmllbGRfYml0ZmllbGQgKHN0cnVjdCB0 eXBlICp0eXBlLAogIAogIHZvaWQKICBtb2RpZnlfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBn ZGJfYnl0ZSAqYWRkciwKQEAgLTQyOTIsMTAgKzQyNTMsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvdmFsdWUuYwogIAogICAgLyogTm9ybWFsaXplIEJJVFBPUy4gICovCiAgICBh ZGRyICs9IGJpdHBvcyAvIDg7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5o CitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFsdWUuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWx1ZS5oCTIwMTItMTEtMDcgMjI6MDA6NDEu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5oCTIwMTIt MTEtMDcgMjI6MDk6MzAuMTA0MTQwNDAzICswMTAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5v cmlnL2dkYi92YWx1ZS5oCTIwMTMtMDEtMTggMjM6Mjc6MjIuMTA5NjAxMzg3ICswMTAwCisrKysg Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmFsdWUuaAkyMDEzLTAxLTE4IDIzOjI3OjI4Ljg3OTYw NzM1NSArMDEwMAogQEAgLTgyLDggKzgyLDggQEAgZXh0ZXJuIHZvaWQgc2V0X3ZhbHVlX3BhcmVu dCAoc3RydWN0IHZhbAogICAgIHdpdGhpbiB0aGUgcmVnaXN0ZXJzIHN0cnVjdHVyZS4gIE5vdGUg YWxzbyB0aGUgbWVtYmVyCiAgICAgZW1iZWRkZWRfb2Zmc2V0IGJlbG93LiAgKi8KQEAgLTQ0NDAs NyArNDQwMSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmgKICAJCQkJ CSAgIGNvbnN0IHN0cnVjdCB2YWx1ZSAqdmFsKTsKICAKICBleHRlcm4gdm9pZCBwYWNrX2xvbmcg KGdkYl9ieXRlICpidWYsIHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIG51bSk7Ci1AQCAtNTc4 LDEyICs1ODAsMTIgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqZGVmYXVsdF9yZWFkX3Zhcl92YQor QEAgLTU3OSwxMiArNTgxLDEyIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmRlZmF1bHRfcmVhZF92 YXJfdmEKICBleHRlcm4gc3RydWN0IHZhbHVlICphbGxvY2F0ZV92YWx1ZSAoc3RydWN0IHR5cGUg KnR5cGUpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmFsbG9jYXRlX3ZhbHVlX2xhenkgKHN0cnVj dCB0eXBlICp0eXBlKTsKICBleHRlcm4gdm9pZCBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cyAoc3Ry dWN0IHZhbHVlICp2YWx1ZSk7CkBAIC00NDU5LDcgKzQ0MjAsNyBAQCBJbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi92YWx1ZS5oCiAgCiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqYWxsb2NhdGVf cmVwZWF0X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IGNvdW50KTsKICAKLUBAIC02NTcs MTYgKzY1OSwxNiBAQCBleHRlcm4gaW50IGZpbmRfb3ZlcmxvYWRfbWF0Y2ggKHN0cnVjdCB2CitA QCAtNjU2LDE2ICs2NTgsMTYgQEAgZXh0ZXJuIGludCBmaW5kX292ZXJsb2FkX21hdGNoIChzdHJ1 Y3QgdgogIAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUg KmFyZzEsIGludCBmaWVsZG5vKTsKICAKQEAgLTQ0NzksNyArNDQ0MCw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmgKICAKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9jYXN0X3BvaW50ZXJzIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdmFsdWUgKiwgaW50KTsKICAK LUBAIC03NTYsNyArNzU4LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2ludGVybmFsdmFyX3N0cmluZyAo c3RydQorQEAgLTc1NSw3ICs3NTcsNyBAQCBleHRlcm4gdm9pZCBzZXRfaW50ZXJuYWx2YXJfc3Ry aW5nIChzdHJ1CiAgZXh0ZXJuIHZvaWQgY2xlYXJfaW50ZXJuYWx2YXIgKHN0cnVjdCBpbnRlcm5h bHZhciAqdmFyKTsKICAKICBleHRlcm4gdm9pZCBzZXRfaW50ZXJuYWx2YXJfY29tcG9uZW50IChz dHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwKQEAgLTQ0ODgsNyArNDQ0OSw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmgKICAJCQkJICAgICAgIGludCBiaXRwb3MsIGludCBi aXRzaXplLAogIAkJCQkgICAgICAgc3RydWN0IHZhbHVlICpuZXd2YWx1ZSk7CiAgCi1AQCAtODM4 LDcgKzg0MCw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3hfdW5vcCAoc3RydWMKK0BA IC04MzcsNyArODM5LDcgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfeF91bm9wIChzdHJ1 YwogIAkJCQkgICBlbnVtIG5vc2lkZSBub3NpZGUpOwogIAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUg KnZhbHVlX2ZuX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKiphcmcxcCwgc3RydWN0IGZuX2ZpZWxkICpm LApAQCAtNDQ5Nyw3ICs0NDU4LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFs dWUuaAogIAogIGV4dGVybiBpbnQgYmlub3BfdHlwZXNfdXNlcl9kZWZpbmVkX3AgKGVudW0gZXhw X29wY29kZSBvcCwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICp0eXBlMSwKLUBAIC04NjYsNyAr ODY4LDggQEAgZXh0ZXJuIHZvaWQgcmVsZWFzZV92YWx1ZV9vcl9pbmNyZWYgKHN0cgorQEAgLTg2 NSw3ICs4NjcsOCBAQCBleHRlcm4gdm9pZCByZWxlYXNlX3ZhbHVlX29yX2luY3JlZiAoc3RyCiAg ZXh0ZXJuIGludCByZWNvcmRfbGF0ZXN0X3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbCk7CiAgCiAg ZXh0ZXJuIHZvaWQgbW9kaWZ5X2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZ2RiX2J5dGUgKmFk ZHIsCkBAIC00NTA3LDcgKzQ0NjgsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92 YWx1ZS5oCiAgCiAgZXh0ZXJuIHZvaWQgdHlwZV9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGNoYXIgKnZhcnN0cmluZywKICAJCQlzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgc2hv dyk7Ci1AQCAtODk2LDcgKzg5OSw3IEBAIGV4dGVybiB2b2lkIHZhbHVlX3ByaW50X2FycmF5X2Vs ZW1lbnRzICgKK0BAIC04OTUsNyArODk4LDcgQEAgZXh0ZXJuIHZvaWQgdmFsdWVfcHJpbnRfYXJy YXlfZWxlbWVudHMgKAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3JlbGVhc2VfdG9fbWFy ayAoc3RydWN0IHZhbHVlICptYXJrKTsKICAKICBleHRlcm4gdm9pZCB2YWxfcHJpbnQgKHN0cnVj dCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKQEAgLTQ1MTYsNyArNDQ3Nyw3 IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmgKICAJCSAgICAgICBzdHJ1 Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKICAJCSAgICAgICBjb25zdCBzdHJ1Y3Qg dmFsdWUgKnZhbCwKICAJCSAgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAq b3B0aW9ucywKLUBAIC05NDcsMTAgKzk1MCwxMSBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9saXRlcmFsX2NvbXBsCitAQCAtOTQ0LDEwICs5NDcsMTEgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1 ZSAqdmFsdWVfbGl0ZXJhbF9jb21wbAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmZpbmRfZnVuY3Rp b25faW5faW5mZXJpb3IgKGNvbnN0IGNoYXIgKiwKICAJCQkJCQlzdHJ1Y3Qgb2JqZmlsZSAqKik7 CiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIxb2YyNS5wYXRjaCBiL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMW9mMjUucGF0Y2gKaW5kZXggMGFlYTVlZi4uODExMjRmYiAx MDA2NDQKLS0tIGEvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIxb2YyNS5wYXRjaAorKysgYi9nZGIt cmhiejc5NTQyNC1iaXRwb3MtMjFvZjI1LnBhdGNoCkBAIC01MiwxMCArNTIsMTAgQEAgQ29udGVu dC1UeXBlOiB0ZXh0L3gtcGF0Y2gKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKIENv bnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWJpdHBvcy1lbnN1cmUtc2l6 ZV90LnBhdGNoCiAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FscGhhLXRkZXAuYwor SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FscGhhLXRkZXAuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hbHBoYS10ZGVwLmMJMjAxMi0xMS0wNyAy MjowMzo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FscGhh LXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ2OjAwLjA0MjkwMjM4MiArMDEwMAorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvYWxwaGEtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzM6NTkuMjc3 MDQ3MzI0ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYWxwaGEtdGRlcC5jCTIw MTMtMDEtMTggMjM6MzQ6MDIuNjc4MDUxODQ2ICswMTAwCiBAQCAtNDE0LDYgKzQxNCwxMyBAQCBh bHBoYV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCiAgICAgIGFjY3VtdWxhdGVf c2l6ZSA9IDA7CiAgICBlbHNlCkBAIC03MCwxMSArNzAsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYWxwaGEtdGRlcC5jCiAgICBzcCAtPSBhY2N1bXVsYXRlX3NpemU7CiAgCiAg ICAvKiBLZWVwIHNwIGFsaWduZWQgdG8gYSBtdWx0aXBsZSBvZiAxNiBhcyB0aGUgQUJJIHJlcXVp cmVzLiAgKi8KLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NwLXZhbHByaW50LmMKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9jcC12YWxwcmludC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2NwLXZhbHByaW50LmMJMjAxMi0xMS0wNyAy MjoxMjoxNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NwLXZh bHByaW50LmMJMjAxMi0xMS0wNyAyMjo0NjowMC4wNDM5MDIzODEgKzAxMDAKLUBAIC01NjEsNiAr NTYxLDggQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1YworLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvY3AtdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjMz OjU5LjI3ODA0NzMyNiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NwLXZhbHBy aW50LmMJMjAxMy0wMS0xOCAyMzozNDowMi42NzkwNTE4NDggKzAxMDAKK0BAIC01NDAsNiArNTQw LDggQEAgY3BfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1YwogIAkJICBnZGJf Ynl0ZSAqYnVmOwogIAkJICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKICAKQEAgLTgzLDEwICs4 MywxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9jcC12YWxwcmludC5jCiAgCQkg IGJ1ZiA9IHhtYWxsb2MgKFRZUEVfTEVOR1RIIChiYXNlY2xhc3MpKTsKICAJCSAgYmFja190byA9 IG1ha2VfY2xlYW51cCAoeGZyZWUsIGJ1Zik7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9kd2FyZjJsb2MuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2R3YXJmMmxv Yy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2R3YXJmMmxv Yy5jCTIwMTItMTEtMDcgMjI6MDk6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9kd2FyZjJsb2MuYwkyMDEyLTExLTA3IDIyOjQ2OjAwLjA3MDkwMjM0MiArMDEw MAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZHdhcmYybG9jLmMJMjAxMy0wMS0x OCAyMzozMzo1OS4yODAwNDczMzIgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9k d2FyZjJsb2MuYwkyMDEzLTAxLTE4IDIzOjM0OjAyLjY4MDA1MTg1MSArMDEwMAogQEAgLTE3ODQs NiArMTc4NCw4IEBAIHJlYWRfcGllY2VkX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnYpCiAgCiAgICAg ICAgdGhpc19zaXplID0gKHRoaXNfc2l6ZV9iaXRzICsgc291cmNlX29mZnNldF9iaXRzICUgOCAr IDcpIC8gODsKQEAgLTEwNCwxMCArMTA0LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2R3YXJmMmxvYy5jCiAgCSAgaWYgKGJ1ZmZlcl9zaXplIDwgdGhpc19zaXplKQogIAkgICAg ewogIAkgICAgICBidWZmZXJfc2l6ZSA9IHRoaXNfc2l6ZTsKLUluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2ZpbmRjbWQuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2ZpbmRj bWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9maW5kY21k LmMJMjAxMi0xMS0wNyAyMjowMzo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2ZpbmRjbWQuYwkyMDEyLTExLTA3IDIyOjQ2OjAwLjE1MzkwMjI0OSArMDEwMAor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZmluZGNtZC5jCTIwMTMtMDEtMTggMjM6 MzM6NTkuMjgwMDQ3MzMyICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZmluZGNt ZC5jCTIwMTMtMDEtMTggMjM6MzQ6MDIuNjgwMDUxODUxICswMTAwCiBAQCAtMTg3LDYgKzE4Nyw3 IEBAIHBhcnNlX2ZpbmRfYXJncyAoY2hhciAqYXJncywgVUxPTkdFU1QgKm0KICAJICBzaXplX3Qg Y3VycmVudF9vZmZzZXQgPSBwYXR0ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1ZjsKICAKQEAgLTEx NiwxMSArMTE2LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2ZpbmRjbWQuYwog IAkgIHBhdHRlcm5fYnVmID0geHJlYWxsb2MgKHBhdHRlcm5fYnVmLCBwYXR0ZXJuX2J1Zl9zaXpl KTsKICAJICBwYXR0ZXJuX2J1Zl9lbmQgPSBwYXR0ZXJuX2J1ZiArIGN1cnJlbnRfb2Zmc2V0Owog IAl9Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLXZhbHByaW50LmMKK0luZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjAuMjAxMjA5MjYub3JpZy9nZGIvcC12YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MDk6Mjku MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLXZhbHByaW50LmMJ MjAxMi0xMS0wNyAyMjo0NjowMC4xNjM5MDIyMDggKzAxMDAKLUBAIC04MjcsNiArODI3LDcgQEAg cGFzY2FsX29iamVjdF9wcmludF92YWx1ZSAoc3RydWN0IHR5cGUgKgorLS0tIGdkYi03LjUuNTAu MjAxMzAxMTgub3JpZy9nZGIvcC12YWxwcmludC5jCTIwMTMtMDEtMTggMjM6MzM6NTkuMjgxMDQ3 MzM0ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcC12YWxwcmludC5jCTIwMTMt MDEtMTggMjM6MzQ6MDIuNjgwMDUxODUxICswMTAwCitAQCAtNzk3LDYgKzc5Nyw3IEBAIHBhc2Nh bF9vYmplY3RfcHJpbnRfdmFsdWUgKHN0cnVjdCB0eXBlICoKICAJICAgICAgZ2RiX2J5dGUgKmJ1 ZjsKICAJICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgCkBAIC0xMjgsMTEgKzEyOCwx MSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wLXZhbHByaW50LmMKICAJICAgICAg YnVmID0geG1hbGxvYyAoVFlQRV9MRU5HVEggKGJhc2VjbGFzcykpOwogIAkgICAgICBiYWNrX3Rv ID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgYnVmKTsKICAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3V0aWxzLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi91dGlscy5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3V0aWxzLmMJMjAxMi0x MS0wNyAyMjowMDo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3V0aWxzLmMJMjAxMi0xMS0wNyAyMjo0NjowMC4xNjY5MDIyMDIgKzAxMDAKLUBAIC0zMTM1LDYg KzMxMzUsMTggQEAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uc3Qgdm9pZCAqYWRkcgorLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdXRpbHMuYwkyMDEzLTAxLTE4IDIzOjMzOjU5 LjI4MjA0NzMzNiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3V0aWxzLmMJMjAx My0wMS0xOCAyMzozNDowMi42ODEwNTE4NTQgKzAxMDAKK0BAIC0zMjE5LDYgKzMyMTksMTggQEAg aG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uc3Qgdm9pZCAqYWRkcgogICAgcmV0dXJuIHN0cjsK ICB9CiAgCkBAIC0xNTEsMTEgKzE1MSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi91dGlscy5jCiAgY2hhciAqCiAgZ2RiX3JlYWxwYXRoIChjb25zdCBjaGFyICpmaWxlbmFtZSkK ICB7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYworSW5kZXg6IGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL3ZhbG9wcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIw MTIwOTI2Lm9yaWcvZ2RiL3ZhbG9wcy5jCTIwMTItMTEtMDcgMjI6MDk6MzAuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwkyMDEyLTExLTA3IDIyOjQ2 OjAwLjE4MTkwMjE4MSArMDEwMAotQEAgLTIzODMsNiArMjM4Myw3IEBAIHNlYXJjaF9zdHJ1Y3Rf bWV0aG9kIChjb25zdCBjaGFyICpuYW1lLAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9n ZGIvdmFsb3BzLmMJMjAxMy0wMS0xOCAyMzozMzo1OS4yODMwNDczMzggKzAxMDAKKysrKyBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi92YWxvcHMuYwkyMDEzLTAxLTE4IDIzOjM0OjAyLjY4MjA1MTg1 NiArMDEwMAorQEAgLTIzNjksNiArMjM2OSw3IEBAIHNlYXJjaF9zdHJ1Y3RfbWV0aG9kIChjb25z dCBjaGFyICpuYW1lLAogIAkgICAgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKICAJICAgICAg Q09SRV9BRERSIGFkZHJlc3M7CiAgCkBAIC0xNjMsMTAgKzE2MywxMCBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwogIAkgICAgICB0bXAgPSB4bWFsbG9jIChUWVBFX0xF TkdUSCAoYmFzZWNsYXNzKSk7CiAgCSAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVl LCB0bXApOwogIAkgICAgICBhZGRyZXNzID0gdmFsdWVfYWRkcmVzcyAoKmFyZzFwKTsKLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL3ZhbHVlLmMJMjAxMi0xMS0wNyAyMjowOTozMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMJMjAxMi0xMS0wNyAyMjo0NjowMC4xODQ5MDIxNzYg KzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3ZhbHVlLmMJMjAxMy0wMS0x OCAyMzozMzo1OS4yODUwNDczNDIgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi92 YWx1ZS5jCTIwMTMtMDEtMTggMjM6MzQ6MDIuNjgzMDUxODU4ICswMTAwCiBAQCAtNjYzLDYgKzY2 Myw3IEBAIGFsbG9jYXRlX3ZhbHVlX2xhenkgKHN0cnVjdCB0eXBlICp0eXBlKQogICAgICAgZGVz Y3JpcHRpb24gY29ycmVjdGx5LiAgKi8KICAgIGNoZWNrX3R5cGVkZWYgKHR5cGUpOwpAQCAtMTg0 LDcgKzE4NCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3ZhbHVlLmMKICAgIGlm ICghdmFsLT5jb250ZW50cykKICAgICAgdmFsLT5jb250ZW50cyA9IChnZGJfYnl0ZSAqKSB4emFs bG9jIChUWVBFX0xFTkdUSCAodmFsLT5lbmNsb3NpbmdfdHlwZSkpOwogIH0KLUBAIC0yNjYyLDgg KzI2NjUsMTIgQEAgdm9pZAorQEAgLTI2NzIsOCArMjY3NSwxMiBAQCB2b2lkCiAgc2V0X3ZhbHVl X2VuY2xvc2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHR5cGUgKm5ld19lbmNs X3R5cGUpCiAgewogICAgaWYgKFRZUEVfTEVOR1RIIChuZXdfZW5jbF90eXBlKSA+IFRZUEVfTEVO R1RIICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAodmFsKSkpIApAQCAtMTk5LDI1ICsxOTksMjUgQEAg SW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuYwogIAogICAgdmFsLT5lbmNsb3Np bmdfdHlwZSA9IG5ld19lbmNsX3R5cGU7CiAgfQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvdmF4LXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZheC10ZGVwLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvdmF4LXRkZXAuYwky MDEyLTExLTA3IDIyOjA5OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvdmF4LXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ2OjU2LjgxMDgxOTg3OCArMDEwMAorLS0t IGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdmF4LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM0 OjAyLjY4MzA1MTg1OCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3ZheC10ZGVw LmMJMjAxMy0wMS0xOCAyMzozNDozNC45NTAwOTQxOTggKzAxMDAKIEBAIC0yMjMsNiArMjIzLDcg QEAgdmF4X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyYwogIAkgIFVMT05HRVNU IGFkZHI7CiAgCiAgCSAgcmVnY2FjaGVfcmF3X3JlYWRfdW5zaWduZWQgKHJlZ2NhY2hlLCBWQVhf UjBfUkVHTlVNLCAmYWRkcik7CiArCSAgdWxvbmdlc3RfZml0c19ob3N0X29yX2Vycm9yIChUWVBF X0xFTkdUSCAodHlwZSkpOwotIAkgIHJlYWRfbWVtb3J5IChhZGRyLCByZWFkYnVmLCBUWVBFX0xF TkdUSCAodHlwZSkpOworIAkgIHJlYWRfbWVtb3J5IChhZGRyLCByZWFkYnVmLCBsZW4pOwogIAl9 CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kZWZzLmgKK0luZGV4OiBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9kZWZzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5 MjYub3JpZy9nZGIvZGVmcy5oCTIwMTItMTEtMDcgMjI6MDA6NDMuMTExOTA2MTA5ICswMTAwCi0r KysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9kZWZzLmgJMjAxMi0xMS0wNyAyMjo0Nzo0Ni4wMDEw MDEyMzkgKzAxMDAKLUBAIC0xMTcwLDQgKzExNzAsNiBAQCBlbnVtIGJsb2NrX2VudW0KLSAgIEZJ UlNUX0xPQ0FMX0JMT0NLID0gMgotIH07CistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9kZWZzLmgJMjAxMy0wMS0xOCAyMzozNDowMi42ODQwNTE4NjAgKzAxMDAKKysrKyBnZGItNy41 LjUwLjIwMTMwMTE4L2dkYi9kZWZzLmgJMjAxMy0wMS0xOCAyMzozNDoxNC4yMzgwNjcxOTMgKzAx MDAKK0BAIC04MDEsNCArODAxLDYgQEAgZW51bSBibG9ja19lbnVtCisgCisgI2luY2x1ZGUgInV0 aWxzLmgiCiAgCiArZXh0ZXJuIHZvaWQgdWxvbmdlc3RfZml0c19ob3N0X29yX2Vycm9yIChVTE9O R0VTVCBudW0pOwogKwoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUu cGF0Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjJvZjI1LnBhdGNoCmluZGV4IGRkNzdmMDMu LjhlMzRlNzQgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMm9mMjUucGF0Y2gK KysrIGIvZ2RiLXJoYno3OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaApAQCAtOTYsMTEgKzk2LDEx IEBAIENvbnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiA3Yml0CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3Mt d3AucGF0Y2gKIAotZGlmZiAtLWdpdCBhL2dkYi9hcm0tbGludXgtbmF0LmMgYi9nZGIvYXJtLWxp bnV4LW5hdC5jCi1pbmRleCAyMzFiMDA4Li42ZGViMjNkIDEwMDY0NAotLS0tIGEvZ2RiL2FybS1s aW51eC1uYXQuYwotKysrIGIvZ2RiL2FybS1saW51eC1uYXQuYwotQEAgLTExMDUsNyArMTEwNSw3 IEBAIGFybV9saW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCBMT05HRVNUIGxlbikKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hcm0tbGludXgt bmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2FybS1s aW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjM0OjQzLjkzMDEwNjgzOSArMDEwMAorKysrIGdkYi03 LjUuNTAuMjAxMzAxMTgvZ2RiL2FybS1saW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjM0OjUxLjIw NjExNjUxMyArMDEwMAorQEAgLTExMDUsNyArMTEwNSw3IEBAIGFybV9saW51eF9yZWdpb25fb2tf Zm9yX2h3X3dhdGNocG9pbnQgKEMKICAKICAvKiBJbnNlcnQgYSBIYXJkd2FyZSBicmVha3BvaW50 LiAgKi8KICBzdGF0aWMgaW50CkBAIC0xMDksNyArMTA5LDcgQEAgaW5kZXggMjMxYjAwOC4uNmRl YjIzZCAxMDA2NDQKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0 cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtMTEyMyw3ICsxMTIzLDcgQEAgYXJtX2xpbnV4X2luc2Vy dF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorQEAgLTExMjMs NyArMTEyMyw3IEBAIGFybV9saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGEKICAK ICAvKiBSZW1vdmUgYSBoYXJkd2FyZSBicmVha3BvaW50LiAgKi8KICBzdGF0aWMgaW50CkBAIC0x MjcsMTEgKzEyNywxMSBAQCBpbmRleCAyMzFiMDA4Li42ZGViMjNkIDEwMDY0NAogIHsKICAgIHJl dHVybiBzdGFydCA8PSBhZGRyICYmIHN0YXJ0ICsgbGVuZ3RoIC0gMSA+PSBhZGRyOwogIH0KLWRp ZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCi1pbmRleCA3NmM1MWE4 Li45ZTI5M2ZlIDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbmF0LmMKLSsrKyBiL2dkYi9pMzg2LW5h dC5jCi1AQCAtNTkyLDcgKzU5Miw3IEBAIGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3JlZ3Mg KHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqbmV3X3N0YXRlKQorSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL2kzODYtbmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIw MTMwMTE4Lm9yaWcvZ2RiL2kzODYtbmF0LmMJMjAxMy0wMS0xOCAyMzozNDo0My45MzExMDY4NDEg KzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pMzg2LW5hdC5jCTIwMTMtMDEtMTgg MjM6MzQ6NTEuMjA2MTE2NTEzICswMTAwCitAQCAtNTkxLDcgKzU5MSw3IEBAIGkzODZfdXBkYXRl X2luZmVyaW9yX2RlYnVnX3JlZ3MgKHN0cnVjdAogICAgIG9mIHRoZSB0eXBlIFRZUEUuICBSZXR1 cm4gMCBvbiBzdWNjZXNzLCAtMSBvbiBmYWlsdXJlLiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC0x NDAsNyArMTQwLDcgQEAgaW5kZXggNzZjNTFhOC4uOWUyOTNmZSAxMDA2NDQKICAJCQlzdHJ1Y3Qg ZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0 YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7Ci1AQCAtNjI5LDcgKzYyOSw3IEBAIGkzODZf aW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKK0BA IC02MjgsNyArNjI4LDcgQEAgaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIs CiAgICAgYWRkcmVzcyBBRERSLCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLCBhbmQgZm9yIGFj Y2Vzc2VzIG9mIHRoZQogICAgIHR5cGUgVFlQRS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MsIC0xIG9u IGZhaWx1cmUuICAqLwogIHN0YXRpYyBpbnQKQEAgLTE0OSwxMCArMTQ5LDEwIEBAIGluZGV4IDc2 YzUxYTguLjllMjkzZmUgMTAwNjQ0CiAgCQkJc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewog ICAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpzdGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0 YXRlICgpOwotZGlmZiAtLWdpdCBhL2dkYi9pYTY0LWxpbnV4LW5hdC5jIGIvZ2RiL2lhNjQtbGlu dXgtbmF0LmMKLWluZGV4IDliNWZiZjMuLjYwNjFlYWUgMTAwNjQ0Ci0tLS0gYS9nZGIvaWE2NC1s aW51eC1uYXQuYwotKysrIGIvZ2RiL2lhNjQtbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9pYTY0LWxpbnV4LW5hdC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi9pYTY0LWxpbnV4LW5hdC5jCTIwMTMtMDEtMTggMjM6MzQ6NDMu OTMxMTA2ODQxICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvaWE2NC1saW51eC1u YXQuYwkyMDEzLTAxLTE4IDIzOjM0OjUxLjIwNjExNjUxMyArMDEwMAogQEAgLTU0Miw3ICs1NDIs NyBAQCBpc19wb3dlcl9vZl8yIChpbnQgdmFsKQogIH0KICAKQEAgLTE2Miw3ICsxNjIsNyBAQCBp bmRleCA5YjVmYmYzLi42MDYxZWFlIDEwMDY0NAogIAkJCSAgICAgIHN0cnVjdCBleHByZXNzaW9u ICpjb25kKQogIHsKICAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAtNTk2LDcgKzU5Niw3IEBA IGlhNjRfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBp bnQgcncsCitAQCAtNTk2LDcgKzU5Niw3IEBAIGlhNjRfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQg KENPUkVfQUREUgogIH0KICAKICBzdGF0aWMgaW50CkBAIC0xNzEsMTEgKzE3MSwxMSBAQCBpbmRl eCA5YjVmYmYzLi42MDYxZWFlIDEwMDY0NAogIAkJCSAgICAgIHN0cnVjdCBleHByZXNzaW9uICpj b25kKQogIHsKICAgIGludCBpZHg7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2luZi10dHJhY2UuYyBiL2dk Yi9pbmYtdHRyYWNlLmMKLWluZGV4IGQ2MGVkZGIuLmMzM2RiNDUgMTAwNjQ0Ci0tLS0gYS9nZGIv aW5mLXR0cmFjZS5jCi0rKysgYi9nZGIvaW5mLXR0cmFjZS5jCi1AQCAtMzEzLDE0ICszMTMsMTQg QEAgaW5mX3R0cmFjZV9kaXNhYmxlX3BhZ2VfcHJvdGVjdGlvbnMgKHBpZF90IHBpZCkKK0luZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pbmYtdHRyYWNlLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2luZi10dHJhY2UuYwkyMDEzLTAxLTE4IDIzOjM0 OjQzLjkzMjEwNjg0NCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2luZi10dHJh Y2UuYwkyMDEzLTAxLTE4IDIzOjM0OjUxLjIwNjExNjUxMyArMDEwMAorQEAgLTMxMywxNCArMzEz LDE0IEBAIGluZl90dHJhY2VfZGlzYWJsZV9wYWdlX3Byb3RlY3Rpb25zIChwaWQKICAgICB0eXBl IFRZUEUuICAqLwogIAogIHN0YXRpYyBpbnQKQEAgLTE5Myw3ICsxOTMsNyBAQCBpbmRleCBkNjBl ZGRiLi5jMzNkYjQ1IDEwMDY0NAogIAogICAgZ2RiX2Fzc2VydCAodHlwZSA9PSBod193cml0ZSk7 CiAgCi1AQCAtMzM3LDE0ICszMzcsMTQgQEAgaW5mX3R0cmFjZV9pbnNlcnRfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTMzNywxNCArMzM3LDE0IEBA IGluZl90dHJhY2VfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUgogICAgIHR5cGUgVFlQRS4g ICovCiAgCiAgc3RhdGljIGludApAQCAtMjExLDExICsyMTEsMTEgQEAgaW5kZXggZDYwZWRkYi4u YzMzZGI0NSAxMDA2NDQKICAKICAgIGdkYl9hc3NlcnQgKHR5cGUgPT0gaHdfd3JpdGUpOwogIAot ZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMK LWluZGV4IDU1NjZkMGMuLjc0NjdkMTEgMTAwNjQ0Ci0tLS0gYS9nZGIvbWlwcy1saW51eC1uYXQu YwotKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLUBAIC0xMDE3LDcgKzEwMTcsNyBAQCBwb3B1 bGF0ZV9yZWdzX2Zyb21fd2F0Y2hlcyAoc3RydWN0IHB0X3dhdGNoX3JlZ3MgKnJlZ3MpCitJbmRl eDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbWlwcy1saW51eC1uYXQuYworPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbWlwcy1saW51eC1uYXQuYwkyMDEzLTAx LTE4IDIzOjM0OjQzLjkzMjEwNjg0NCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L21pcHMtbGludXgtbmF0LmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMDgxMTY1MTggKzAxMDAKK0BA IC0xMDE3LDcgKzEwMTcsNyBAQCBwb3B1bGF0ZV9yZWdzX2Zyb21fd2F0Y2hlcyAoc3RydWN0IHB0 X3dhCiAgICAgd2F0Y2guICBSZXR1cm4gemVybyBvbiBzdWNjZXNzLiAgKi8KICAKICBzdGF0aWMg aW50CkBAIC0yMjQsNyArMjI0LDcgQEAgaW5kZXggNTU2NmQwYy4uNzQ2N2QxMSAxMDA2NDQKICAJ CQkgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgcHRfd2F0Y2hf cmVncyByZWdzOwotQEAgLTEwNjcsNyArMTA2Nyw3IEBAIG1pcHNfbGludXhfaW5zZXJ0X3dhdGNo cG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKK0BAIC0xMDY3LDcgKzEw NjcsNyBAQCBtaXBzX2xpbnV4X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIKICAgICBSZXR1 cm4gemVybyBvbiBzdWNjZXNzLiAgKi8KICAKICBzdGF0aWMgaW50CkBAIC0yMzMsMTAgKzIzMywx MCBAQCBpbmRleCA1NTY2ZDBjLi43NDY3ZDExIDEwMDY0NAogIAkJCSAgICAgIHN0cnVjdCBleHBy ZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1kaWZmIC0tZ2l0IGEvZ2RiL250by1w cm9jZnMuYyBiL2dkYi9udG8tcHJvY2ZzLmMKLWluZGV4IGI1OGYzMTguLjI1ZmVjZjMgMTAwNjQ0 Ci0tLS0gYS9nZGIvbnRvLXByb2Nmcy5jCi0rKysgYi9nZGIvbnRvLXByb2Nmcy5jCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbnRvLXByb2Nmcy5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9udG8tcHJvY2ZzLmMJMjAxMy0wMS0xOCAyMzozNDo0 My45MzMxMDY4NDcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9udG8tcHJvY2Zz LmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMDgxMTY1MTggKzAxMDAKIEBAIC02OSwxMCArNjksMTAg QEAgc3RhdGljIHB0aWRfdCBkb19hdHRhY2ggKHB0aWRfdCBwdGlkKTsKICAKICBzdGF0aWMgaW50 IHByb2Nmc19jYW5fdXNlX2h3X2JyZWFrcG9pbnQgKGludCwgaW50LCBpbnQpOwpAQCAtMjUwLDcg KzI1MCw3IEBAIGluZGV4IGI1OGYzMTguLjI1ZmVjZjMgMTAwNjQ0CiAgCQkJCQlzdHJ1Y3QgZXhw cmVzc2lvbiAqY29uZCk7CiAgCiAgc3RhdGljIGludCBwcm9jZnNfc3RvcHBlZF9ieV93YXRjaHBv aW50ICh2b2lkKTsKLUBAIC0xNDkzLDE0ICsxNDkzLDE0IEBAIHByb2Nmc19jYW5fdXNlX2h3X2Jy ZWFrcG9pbnQgKGludCB0eXBlLCBpbnQgY250LCBpbnQgb3RoZXJ0eXBlKQorQEAgLTE0OTMsMTQg KzE0OTMsMTQgQEAgcHJvY2ZzX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUsCiAgfQog IAogIHN0YXRpYyBpbnQKQEAgLTI2NywxMSArMjY3LDExIEBAIGluZGV4IGI1OGYzMTguLjI1ZmVj ZjMgMTAwNjQ0CiAgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICByZXR1 cm4gcHJvY2ZzX2h3X3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlwZSk7Ci1kaWZmIC0tZ2l0IGEv Z2RiL3BwYy1saW51eC1uYXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLWluZGV4IDY3ZTFjYWMu LmFiZmIyZmMgMTAwNjQ0Ci0tLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvcHBj LWxpbnV4LW5hdC5jCi1AQCAtMTgzOSwxMSArMTgzOSwxMSBAQCBjYW5fdXNlX3dhdGNocG9pbnRf Y29uZF9hY2NlbCAodm9pZCkKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9wcGMtbGlu dXgtbmF0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Bw Yy1saW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjM0OjQzLjkzNDEwNjg0OSArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDEzLTAxLTE4IDIzOjM0OjUx LjIwODExNjUxOCArMDEwMAorQEAgLTE4MzgsMTEgKzE4MzgsMTEgQEAgY2FuX3VzZV93YXRjaHBv aW50X2NvbmRfYWNjZWwgKHZvaWQpCiAgICAgQ09ORElUSU9OX1ZBTFVFIHdpbGwgaG9sZCB0aGUg dmFsdWUgd2hpY2ggc2hvdWxkIGJlIHB1dCBpbiB0aGUKICAgICBEVkMgcmVnaXN0ZXIuICAqLwog IHN0YXRpYyB2b2lkCkBAIC0yODYsNyArMjg2LDcgQEAgaW5kZXggNjdlMWNhYy4uYWJmYjJmYyAx MDA2NDQKICAgIENPUkVfQUREUiBhZGRyX2VuZF9kYXRhLCBhZGRyX2VuZF9kdmM7CiAgCiAgICAv KiBUaGUgRFZDIHJlZ2lzdGVyIGNvbXBhcmVzIGJ5dGVzIHdpdGhpbiBmaXhlZC1sZW5ndGggd2lu ZG93cyB3aGljaAotQEAgLTE5MzAsNyArMTkzMCw3IEBAIG51bV9tZW1vcnlfYWNjZXNzZXMgKHN0 cnVjdCB2YWx1ZSAqdikKK0BAIC0xOTI5LDcgKzE5MjksNyBAQCBudW1fbWVtb3J5X2FjY2Vzc2Vz IChzdHJ1Y3QgdmFsdWUgKnYpCiAgICAgb2YgdGhlIGNvbnN0YW50LiAgKi8KICBzdGF0aWMgaW50 CiAgY2hlY2tfY29uZGl0aW9uIChDT1JFX0FERFIgd2F0Y2hfYWRkciwgc3RydWN0IGV4cHJlc3Np b24gKmNvbmQsCkBAIC0yOTUsNyArMjk1LDcgQEAgaW5kZXggNjdlMWNhYy4uYWJmYjJmYyAxMDA2 NDQKICB7CiAgICBpbnQgcGMgPSAxLCBudW1fYWNjZXNzZXNfbGVmdCwgbnVtX2FjY2Vzc2VzX3Jp Z2h0OwogICAgc3RydWN0IHZhbHVlICpsZWZ0X3ZhbCwgKnJpZ2h0X3ZhbCwgKmxlZnRfY2hhaW4s ICpyaWdodF9jaGFpbjsKLUBAIC0xOTk3LDcgKzE5OTcsNyBAQCBjaGVja19jb25kaXRpb24gKENP UkVfQUREUiB3YXRjaF9hZGRyLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCwKK0BAIC0xOTk2LDcg KzE5OTYsNyBAQCBjaGVja19jb25kaXRpb24gKENPUkVfQUREUiB3YXRjaF9hZGRyLCBzCiAgICAg dGhlIGNvbmRpdGlvbiBleHByZXNzaW9uLCB0aHVzIG9ubHkgdHJpZ2dlcmluZyB0aGUgd2F0Y2hw b2ludCB3aGVuIGl0IGlzCiAgICAgdHJ1ZS4gICovCiAgc3RhdGljIGludApAQCAtMzA0LDcgKzMw NCw3IEBAIGluZGV4IDY3ZTFjYWMuLmFiZmIyZmMgMTAwNjQ0CiAgCQkJCQkgIHN0cnVjdCBleHBy ZXNzaW9uICpjb25kKQogIHsKICAgIENPUkVfQUREUiBkYXRhX3ZhbHVlOwotQEAgLTIwMTQsNyAr MjAxNCw3IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gKENPUkVf QUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMjAxMyw3ICsyMDEzLDcgQEAgcHBjX2xp bnV4X2Nhbl9hY2NlbF93YXRjaHBvaW50X2NvbmRpdGlvbgogIAogIHN0YXRpYyB2b2lkCiAgY3Jl YXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0IHBwY19od19icmVha3BvaW50ICpwLCBDT1JF X0FERFIgYWRkciwKQEAgLTMxMyw3ICszMTMsNyBAQCBpbmRleCA2N2UxY2FjLi5hYmZiMmZjIDEw MDY0NAogIAkJCSAgIGludCBpbnNlcnQpCiAgewogICAgaWYgKGxlbiA9PSAxCi1AQCAtMjA1OSw3 ICsyMDU5LDcgQEAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVzdCAoc3RydWN0IHBwY19od19icmVh a3BvaW50ICpwLCBDT1JFX0FERFIgYWRkciwKK0BAIC0yMDU4LDcgKzIwNTgsNyBAQCBjcmVhdGVf d2F0Y2hwb2ludF9yZXF1ZXN0IChzdHJ1Y3QgcHBjX2h3CiAgfQogIAogIHN0YXRpYyBpbnQKQEAg LTMyMiw3ICszMjIsNyBAQCBpbmRleCA2N2UxY2FjLi5hYmZiMmZjIDEwMDY0NAogIAkJCSAgICAg c3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewogICAgc3RydWN0IGx3cF9pbmZvICpscDsKLUBA IC0yMTI3LDcgKzIxMjcsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQURE UiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCitAQCAtMjEyNiw3ICsyMTI2LDcgQEAgcHBjX2xpbnV4 X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYQogIH0KICAKICBzdGF0aWMgaW50CkBAIC0z MzEsNyArMzMxLDcgQEAgaW5kZXggNjdlMWNhYy4uYWJmYjJmYyAxMDA2NDQKICAJCQkgICAgIHN0 cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1AQCAt MjI2Nyw3ICsyMjY3LDcgQEAgcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkK K0BAIC0yMjY2LDcgKzIyNjYsNyBAQCBwcGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50ICh2 b2lkKQogIHN0YXRpYyBpbnQKICBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5n ZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJCUNPUkVfQUREUiBhZGRyLApAQCAt MzQwLDExICszNDAsMTEgQEAgaW5kZXggNjdlMWNhYy4uYWJmYjJmYyAxMDA2NDQKICB7CiAgICBp bnQgbWFzazsKICAKLWRpZmYgLS1naXQgYS9nZGIvcHJvY2ZzLmMgYi9nZGIvcHJvY2ZzLmMKLWlu ZGV4IDRhOTMzNmYuLjI2YWNjZDggMTAwNjQ0Ci0tLS0gYS9nZGIvcHJvY2ZzLmMKLSsrKyBiL2dk Yi9wcm9jZnMuYwotQEAgLTI0NzAsNyArMjQ3MCw3IEBAIHByb2Nmc19hZGRyZXNzX3RvX2hvc3Rf cG9pbnRlciAoQ09SRV9BRERSIGFkZHIpCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv cHJvY2ZzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3By b2Nmcy5jCTIwMTMtMDEtMTggMjM6MzQ6NDMuOTM3MTA2ODU1ICswMTAwCisrKysgZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvcHJvY2ZzLmMJMjAxMy0wMS0xOCAyMzozNToxMi41OTgxNDUwNzMgKzAx MDAKK0BAIC0yNDMzLDcgKzI0MzMsNyBAQCBwcm9jZnNfYWRkcmVzc190b19ob3N0X3BvaW50ZXIg KENPUkVfQURECiAgI2VuZGlmCiAgCiAgc3RhdGljIGludApAQCAtMzUzLDcgKzM1Myw3IEBAIGlu ZGV4IDRhOTMzNmYuLjI2YWNjZDggMTAwNjQ0CiAgewogICNpZiAhZGVmaW5lZCAoUENXQVRDSCkg JiYgIWRlZmluZWQgKFBJT0NTV0FUQ0gpCiAgICAvKiBJZiBuZWl0aGVyIG9yIHRoZXNlIGlzIGRl ZmluZWQsIHdlIGNhbid0IHN1cHBvcnQgd2F0Y2hwb2ludHMuCi1AQCAtNDgxNiw3ICs0ODE2LDcg QEAgcHJvY2ZzX3BpZF90b19zdHIgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIHB0aWRfdCBwdGlk KQorQEAgLTQ3NzcsNyArNDc3Nyw3IEBAIHByb2Nmc19waWRfdG9fc3RyIChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3AKICAvKiBJbnNlcnQgYSB3YXRjaHBvaW50LiAgKi8KICAKICBzdGF0aWMgaW50CkBA IC0zNjEsOCArMzYxLDggQEAgaW5kZXggNGE5MzM2Zi4uMjZhY2NkOCAxMDA2NDQKICtwcm9jZnNf c2V0X3dhdGNocG9pbnQgKHB0aWRfdCBwdGlkLCBDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4s IGludCByd2ZsYWcsCiAgCQkgICAgICAgaW50IGFmdGVyKQogIHsKLSAjaWZuZGVmIFVOSVhXQVJF Ci1AQCAtNDkzOCw3ICs0OTM4LDcgQEAgcHJvY2ZzX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqdGFyZywgQ09SRV9BRERSICphZGRyKQorICNpZm5kZWYgQUlYNQorQEAg LTQ4OTcsNyArNDg5Nyw3IEBAIHByb2Nmc19zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0IHRh cmcKICB9CiAgCiAgc3RhdGljIGludApAQCAtMzcxLDcgKzM3MSw3IEBAIGluZGV4IDRhOTMzNmYu LjI2YWNjZDggMTAwNjQ0CiAgCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBp ZiAoIXRhcmdldF9oYXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50Ci1AQCAtNDk2MCw3ICs0OTYwLDcg QEAgcHJvY2ZzX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHR5cGUsCitAQCAtNDkxOSw3ICs0OTE5LDcgQEAgcHJvY2ZzX2luc2VydF93YXRjaHBvaW50IChD T1JFX0FERFIgYWRkcgogIH0KICAKICBzdGF0aWMgaW50CkBAIC0zODAsMTEgKzM4MCwxMSBAQCBp bmRleCA0YTkzMzZmLi4yNmFjY2Q4IDEwMDY0NAogIAkJCSAgc3RydWN0IGV4cHJlc3Npb24gKmNv bmQpCiAgewogICAgcmV0dXJuIHByb2Nmc19zZXRfd2F0Y2hwb2ludCAoaW5mZXJpb3JfcHRpZCwg YWRkciwgMCwgMCwgMCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3JlbW90ZS1tMzJyLXNkaS5jIGIvZ2Ri L3JlbW90ZS1tMzJyLXNkaS5jCi1pbmRleCA3NDhhZWJhLi5iMzg1YzNmIDEwMDY0NAotLS0tIGEv Z2RiL3JlbW90ZS1tMzJyLXNkaS5jCi0rKysgYi9nZGIvcmVtb3RlLW0zMnItc2RpLmMKLUBAIC0x NDE3LDE0ICsxNDE3LDE0IEBAIG0zMnJfY2FuX3VzZV9od193YXRjaHBvaW50IChpbnQgdHlwZSwg aW50IGNudCwgaW50IG90aGVydHlwZSkKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9y ZW1vdGUtbTMyci1zZGkuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvcmVtb3RlLW0zMnItc2RpLmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMTExMTY1MjMgKzAx MDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9yZW1vdGUtbTMyci1zZGkuYwkyMDEzLTAx LTE4IDIzOjM2OjUwLjAwNDI3NjI5NiArMDEwMAorQEAgLTE0MTcsMTQgKzE0MTcsMTUgQEAgbTMy cl9jYW5fdXNlX2h3X3dhdGNocG9pbnQgKGludCB0eXBlLCBpbgogICAgIHdhdGNocG9pbnQuICAq LwogIAogIHN0YXRpYyBpbnQKQEAgLTM5NiwxMyArMzk2LDE0IEBAIGluZGV4IDc0OGFlYmEuLmIz ODVjM2YgMTAwNjQ0CiAgCiAgICBpZiAocmVtb3RlX2RlYnVnKQogLSAgICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csICJtMzJyX2luc2VydF93YXRjaHBvaW50KCVzLCVkLCVkKVxuIiwK LS0JCQlwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2gsIGFkZHIpLCBsZW4sIHR5cGUpOworLQkJCXBh ZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgYWRkciksIGxlbiwgdHlwZSk7CiArICAgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIm0zMnJfaW5zZXJ0X3dhdGNocG9pbnQoJXMsJXMs JWQpXG4iLAotKwkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgYWRkciksIHBsb25nZXN0IChs ZW4pLCB0eXBlKTsKKysJCQlwYWRkcmVzcyAodGFyZ2V0X2dkYmFyY2ggKCksIGFkZHIpLCBwbG9u Z2VzdCAobGVuKSwKKysJCQl0eXBlKTsKICAKICAgIGZvciAoaSA9IDA7IGkgPCBNQVhfQUNDRVNT X0JSRUFLUzsgaSsrKQogICAgICB7Ci1AQCAtMTQ0MiwxNCArMTQ0MiwxNCBAQCBtMzJyX2luc2Vy dF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCitAQCAtMTQ0 MiwxNCArMTQ0MywxNSBAQCBtMzJyX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwK ICB9CiAgCiAgc3RhdGljIGludApAQCAtNDE0LDE2ICs0MTUsMTcgQEAgaW5kZXggNzQ4YWViYS4u YjM4NWMzZiAxMDA2NDQKICAKICAgIGlmIChyZW1vdGVfZGVidWcpCiAtICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIm0zMnJfcmVtb3ZlX3dhdGNocG9pbnQoJXMsJWQsJWQpXG4i LAotLQkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCwgYWRkciksIGxlbiwgdHlwZSk7CistCQkJ cGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoICgpLCBhZGRyKSwgbGVuLCB0eXBlKTsKICsgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAibTMycl9yZW1vdmVfd2F0Y2hwb2ludCglcywl cywlZClcbiIsCi0rCQkJcGFkZHJlc3MgKHRhcmdldF9nZGJhcmNoLCBhZGRyKSwgcGxvbmdlc3Qg KGxlbiksIHR5cGUpOworKwkJCXBhZGRyZXNzICh0YXJnZXRfZ2RiYXJjaCAoKSwgYWRkciksIHBs b25nZXN0IChsZW4pLAorKwkJCXR5cGUpOwogIAogICAgZm9yIChpID0gMDsgaSA8IE1BWF9BQ0NF U1NfQlJFQUtTOyBpKyspCiAgICAgIHsKLWRpZmYgLS1naXQgYS9nZGIvcmVtb3RlLW1pcHMuYyBi L2dkYi9yZW1vdGUtbWlwcy5jCi1pbmRleCBlZWUyNDYwLi45YTkyNjVhIDEwMDY0NAotLS0tIGEv Z2RiL3JlbW90ZS1taXBzLmMKLSsrKyBiL2dkYi9yZW1vdGUtbWlwcy5jCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvcmVtb3RlLW1pcHMuYworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvcmVtb3RlLW1pcHMuYwkyMDEzLTAxLTE4IDIzOjM0OjQzLjkz OTEwNjg2MCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JlbW90ZS1taXBzLmMJ MjAxMy0wMS0xOCAyMzozNDo1MS4yMTIxMTY1MjUgKzAxMDAKIEBAIC0yNDE5LDcgKzI0MTksNyBA QCBjYWxjdWxhdGVfbWFzayAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4pCiAgICAgd2F0Y2hwb2lu dC4gICovCiAgCkBAIC00MzMsNyArNDM1LDcgQEAgaW5kZXggZWVlMjQ2MC4uOWE5MjY1YSAxMDA2 NDQKICAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBpZiAobWlwc19zZXRfYnJl YWtwb2ludCAoYWRkciwgbGVuLCB0eXBlKSkKLUBAIC0yNDMxLDcgKzI0MzEsNyBAQCBtaXBzX2lu c2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCitAQCAt MjQzMSw3ICsyNDMxLDcgQEAgbWlwc19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIs CiAgLyogUmVtb3ZlIGEgd2F0Y2hwb2ludC4gICovCiAgCiAgc3RhdGljIGludApAQCAtNDQyLDEx ICs0NDQsMTEgQEAgaW5kZXggZWVlMjQ2MC4uOWE5MjY1YSAxMDA2NDQKICAJCQlzdHJ1Y3QgZXhw cmVzc2lvbiAqY29uZCkKICB7CiAgICBpZiAobWlwc19jbGVhcl9icmVha3BvaW50IChhZGRyLCBs ZW4sIHR5cGUpKQotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYwotaW5k ZXggOGMyNzM5MC4uYmNlYzMzMSAxMDA2NDQKLS0tLSBhL2dkYi9yZW1vdGUuYwotKysrIGIvZ2Ri L3JlbW90ZS5jCi1AQCAtODAzNSw3ICs4MDM1LDcgQEAgd2F0Y2hwb2ludF90b19aX3BhY2tldCAo aW50IHR5cGUpCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvcmVtb3RlLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3JlbW90ZS5jCTIwMTMtMDEt MTggMjM6MzQ6NDMuOTQzMTA2ODY5ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv cmVtb3RlLmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMTQxMTY1MjkgKzAxMDAKK0BAIC04MDkzLDcg KzgwOTMsNyBAQCB3YXRjaHBvaW50X3RvX1pfcGFja2V0IChpbnQgdHlwZSkKICB9CiAgCiAgc3Rh dGljIGludApAQCAtNDU1LDcgKzQ1Nyw3IEBAIGluZGV4IDhjMjczOTAuLmJjZWMzMzEgMTAwNjQ0 CiAgCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgcmVtb3RlX3N0 YXRlICpycyA9IGdldF9yZW1vdGVfc3RhdGUgKCk7Ci1AQCAtODA1MCw3ICs4MDUwLDcgQEAgcmVt b3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUs CitAQCAtODEwOCw3ICs4MTA4LDcgQEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FE RFIgYWRkcgogICAgcCA9IHN0cmNociAocnMtPmJ1ZiwgJ1wwJyk7CiAgICBhZGRyID0gcmVtb3Rl X2FkZHJlc3NfbWFza2VkIChhZGRyKTsKICAgIHAgKz0gaGV4bnVtc3RyIChwLCAoVUxPTkdFU1Qp IGFkZHIpOwpAQCAtNDY0LDcgKzQ2Niw3IEBAIGluZGV4IDhjMjczOTAuLmJjZWMzMzEgMTAwNjQ0 CiAgCiAgICBwdXRwa3QgKHJzLT5idWYpOwogICAgZ2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZf c2l6ZSwgMCk7Ci1AQCAtODA3MCw3ICs4MDcwLDcgQEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50 IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCitAQCAtODEyOCw3ICs4MTI4LDcg QEAgcmVtb3RlX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkcgogIAogIHN0YXRpYyBp bnQKICByZW1vdGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9v cHMgKnRhcmdldCwgQ09SRV9BRERSIGFkZHIsCkBAIC00NzMsNyArNDc1LDcgQEAgaW5kZXggOGMy NzM5MC4uYmNlYzMzMSAxMDA2NDQKICB7CiAgICBDT1JFX0FERFIgZGlmZiA9IHJlbW90ZV9hZGRy ZXNzX21hc2tlZCAoYWRkciAtIHN0YXJ0KTsKICAKLUBAIC04MDc5LDcgKzgwNzksNyBAQCByZW1v dGVfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdl dCwgQ09SRV9BRERSIGFkZHIsCitAQCAtODEzNyw3ICs4MTM3LDcgQEAgcmVtb3RlX3dhdGNocG9p bnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cgogIAogIAogIHN0YXRpYyBpbnQKQEAgLTQ4Miw3ICs0 ODQsNyBAQCBpbmRleCA4YzI3MzkwLi5iY2VjMzMxIDEwMDY0NAogIAkJCSAgc3RydWN0IGV4cHJl c3Npb24gKmNvbmQpCiAgewogICAgc3RydWN0IHJlbW90ZV9zdGF0ZSAqcnMgPSBnZXRfcmVtb3Rl X3N0YXRlICgpOwotQEAgLTgwOTQsNyArODA5NCw3IEBAIHJlbW90ZV9yZW1vdmVfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTgxNTIsNyArODE1Miw3 IEBAIHJlbW90ZV9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIKICAgIHAgPSBzdHJj aHIgKHJzLT5idWYsICdcMCcpOwogICAgYWRkciA9IHJlbW90ZV9hZGRyZXNzX21hc2tlZCAoYWRk cik7CiAgICBwICs9IGhleG51bXN0ciAocCwgKFVMT05HRVNUKSBhZGRyKTsKQEAgLTQ5MSwxMSAr NDkzLDExIEBAIGluZGV4IDhjMjczOTAuLmJjZWMzMzEgMTAwNjQ0CiAgICBwdXRwa3QgKHJzLT5i dWYpOwogICAgZ2V0cGt0ICgmcnMtPmJ1ZiwgJnJzLT5idWZfc2l6ZSwgMCk7CiAgCi1kaWZmIC0t Z2l0IGEvZ2RiL3MzOTAtbmF0LmMgYi9nZGIvczM5MC1uYXQuYwotaW5kZXggNDk3NGJhZC4uM2Y0 MTUxOSAxMDA2NDQKLS0tLSBhL2dkYi9zMzkwLW5hdC5jCi0rKysgYi9nZGIvczM5MC1uYXQuYwot QEAgLTUxNyw3ICs1MTcsNyBAQCBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKHN0cnVjdCBsd3BfaW5m byAqbHApCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvczM5MC1uYXQuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvczM5MC1uYXQuYwkyMDEzLTAx LTE4IDIzOjM0OjQzLjk0NDEwNjg3MSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2Ri L3MzOTAtbmF0LmMJMjAxMy0wMS0xOCAyMzozNDo1MS4yMTUxMTY1MzEgKzAxMDAKK0BAIC01MTYs NyArNTE2LDcgQEAgczM5MF9maXhfd2F0Y2hfcG9pbnRzIChzdHJ1Y3QgbHdwX2luZm8gKgogIH0K ICAKICBzdGF0aWMgaW50CkBAIC01MDQsNyArNTA2LDcgQEAgaW5kZXggNDk3NGJhZC4uM2Y0MTUx OSAxMDA2NDQKICAJCQlzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkKICB7CiAgICBzdHJ1Y3QgbHdw X2luZm8gKmxwOwotQEAgLTUzOCw3ICs1MzgsNyBAQCBzMzkwX2luc2VydF93YXRjaHBvaW50IChD T1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCitAQCAtNTM3LDcgKzUzNyw3IEBAIHMz OTBfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLAogIH0KICAKICBzdGF0aWMgaW50 CkBAIC01MTMsMTAgKzUxNSwxMCBAQCBpbmRleCA0OTc0YmFkLi4zZjQxNTE5IDEwMDY0NAogIAkJ CXN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci1k aWZmIC0tZ2l0IGEvZ2RiL3RhcmdldC5jIGIvZ2RiL3RhcmdldC5jCi1pbmRleCBmNzIwN2MwLi5h NjlmYjA2IDEwMDY0NAotLS0tIGEvZ2RiL3RhcmdldC5jCi0rKysgYi9nZGIvdGFyZ2V0LmMKK0lu ZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGFyZ2V0LmMJMjAxMy0wMS0xOCAyMzozNDo0My45 NDcxMDY4NzggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuYwkyMDEz LTAxLTE4IDIzOjM0OjUxLjIxNjExNjUzMyArMDEwMAogQEAgLTQ5LDcgKzQ5LDggQEAgc3RhdGlj IHZvaWQgdGFyZ2V0X2luZm8gKGNoYXIgKiwgaW50KTsKICBzdGF0aWMgdm9pZCBkZWZhdWx0X3Rl cm1pbmFsX2luZm8gKGNoYXIgKiwgaW50KTsKICAKQEAgLTUyNyw3ICs1MjksNyBAQCBpbmRleCBm NzIwN2MwLi5hNjlmYjA2IDEwMDY0NAogIAogIHN0YXRpYyBpbnQgZGVmYXVsdF9yZWdpb25fb2tf Zm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiwgTE9OR0VTVCk7CiAgCi1AQCAtMTE0LDEwICsx MTUsMTAgQEAgc3RhdGljIGludCBkZWJ1Z190b19pbnNlcnRfaHdfYnJlYWtwb2ludCAoc3RydWN0 IGdkYmFyY2ggKiwKK0BAIC0xMTQsMTAgKzExNSwxMCBAQCBzdGF0aWMgaW50IGRlYnVnX3RvX2lu c2VydF9od19icmVha3BvaW50CiAgc3RhdGljIGludCBkZWJ1Z190b19yZW1vdmVfaHdfYnJlYWtw b2ludCAoc3RydWN0IGdkYmFyY2ggKiwKICAJCQkJCSAgc3RydWN0IGJwX3RhcmdldF9pbmZvICop OwogIApAQCAtNTQwLDcgKzU0Miw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAg CQkJCSAgICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKICAKICBzdGF0aWMgaW50IGRlYnVnX3Rv X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCk7Ci1AQCAtMTI1LDExICsxMjYsMTIgQEAgc3Rh dGljIGludCBkZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaWQpOworQEAgLTEyNSwx MSArMTI2LDEyIEBAIHN0YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9ieV93YXRjaHBvaW4KICBz dGF0aWMgaW50IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29w cyAqLCBDT1JFX0FERFIgKik7CiAgCiAgc3RhdGljIGludCBkZWJ1Z190b193YXRjaHBvaW50X2Fk ZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqLApAQCAtNTc3LDcgKzU3OSw3IEBA IGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgICAgICAgICAgICAgcmV0dXJuX3plcm8p OwogICAgZGVfZmF1bHQgKHRvX3Rlcm1pbmFsX2luaXQsCiAgCSAgICAodm9pZCAoKikgKHZvaWQp KQotQEAgLTM1NTgsNyArMzU2MCw3IEBAIGRlZmF1bHRfcmVnaW9uX29rX2Zvcl9od193YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgTE9OR0VTVCBsZW4pCitAQCAtMzU2MCw3ICszNTYyLDcgQEAg ZGVmYXVsdF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUgogIHN0YXRpYyBpbnQKICBk ZWZhdWx0X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHN0cnVjdCB0YXJnZXRfb3BzICp0 YXJnZXQsCiAgCQkJCSAgICAgIENPUkVfQUREUiBhZGRyLApAQCAtNTg2LDcgKzU4OCw3IEBAIGlu ZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgewogICAgcmV0dXJuIGFkZHIgPj0gc3RhcnQg JiYgYWRkciA8IHN0YXJ0ICsgbGVuZ3RoOwogIH0KLUBAIC00MjYzLDcgKzQyNjUsNyBAQCBkZWJ1 Z190b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBMT05HRVNU IGxlbikKK0BAIC00MjY3LDcgKzQyNjksNyBAQCBkZWJ1Z190b19yZWdpb25fb2tfZm9yX2h3X3dh dGNocG9pbnQgKENPCiAgfQogIAogIHN0YXRpYyBpbnQKQEAgLTU5NSw3ICs1OTcsNyBAQCBpbmRl eCBmNzIwN2MwLi5hNjlmYjA2IDEwMDY0NAogIAkJCQkJIHN0cnVjdCBleHByZXNzaW9uICpjb25k KQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDI3Myw4ICs0Mjc1LDggQEAgZGVidWdfdG9fY2Fu X2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHJ3LAorQEAgLTQyNzcsOCArNDI3OSw4IEBAIGRlYnVnX3RvX2Nhbl9hY2NlbF93YXRjaHBvaW50 X2NvbmRpdGlvbgogIAogICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAogIAkJICAg ICAgInRhcmdldF9jYW5fYWNjZWxfd2F0Y2hwb2ludF9jb25kaXRpb24gIgpAQCAtNjA2LDcgKzYw OCw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgCQkgICAgICBob3N0X2FkZHJl c3NfdG9fc3RyaW5nIChjb25kKSwgKHVuc2lnbmVkIGxvbmcpIHJldHZhbCk7CiAgICByZXR1cm4g cmV0dmFsOwogIH0KLUBAIC00MzA5LDcgKzQzMTEsNyBAQCBkZWJ1Z190b19zdG9wcGVkX2RhdGFf YWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgQ09SRV9BRERSICphZGRyKQorQEAg LTQzMTMsNyArNDMxNSw3IEBAIGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3Qg dGEKICBzdGF0aWMgaW50CiAgZGVidWdfdG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSAo c3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwKICAJCQkJICAgICAgIENPUkVfQUREUiBhZGRyLApA QCAtNjE1LDcgKzYxNyw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgewogICAg aW50IHJldHZhbDsKICAKLUBAIC00MzE3LDkgKzQzMTksOSBAQCBkZWJ1Z190b193YXRjaHBvaW50 X2FkZHJfd2l0aGluX3JhbmdlIChzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LAorQEAgLTQzMjEs OSArNDMyMyw5IEBAIGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgKHMKICAJ CQkJCQkJIHN0YXJ0LCBsZW5ndGgpOwogIAogICAgZnByaW50Zl9maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywKQEAgLTYyNyw3ICs2MjksNyBAQCBpbmRleCBmNzIwN2MwLi5hNjlmYjA2IDEwMDY0NAogICAg cmV0dXJuIHJldHZhbDsKICB9CiAgCi1AQCAtNDM1NCw3ICs0MzU2LDcgQEAgZGVidWdfdG9fcmVt b3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTQzNTgsNyAr NDM2MCw3IEBAIGRlYnVnX3RvX3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZ2QKICB9CiAg CiAgc3RhdGljIGludApAQCAtNjM2LDcgKzYzOCw3IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYg MTAwNjQ0CiAgCQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKICAgIGludCByZXR2 YWw7Ci1AQCAtNDM2MiwxNCArNDM2NCwxNCBAQCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTQzNjYsMTQgKzQzNjgsMTQg QEAgZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZAogICAgcmV0dmFsID0g ZGVidWdfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50IChhZGRyLCBsZW4sIHR5cGUsIGNvbmQp OwogIAogICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtNjU0LDcgKzY1Niw3 IEBAIGluZGV4IGY3MjA3YzAuLmE2OWZiMDYgMTAwNjQ0CiAgCQkJICAgIHN0cnVjdCBleHByZXNz aW9uICpjb25kKQogIHsKICAgIGludCByZXR2YWw7Ci1AQCAtNDM3Nyw4ICs0Mzc5LDggQEAgZGVi dWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlw ZSwKK0BAIC00MzgxLDggKzQzODMsOCBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkCiAgICByZXR2YWwgPSBkZWJ1Z190YXJnZXQudG9fcmVtb3ZlX3dhdGNocG9pbnQg KGFkZHIsIGxlbiwgdHlwZSwgY29uZCk7CiAgCiAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRsb2csCkBAIC02NjUsMTAgKzY2NywxMCBAQCBpbmRleCBmNzIwN2MwLi5hNjlmYjA2IDEwMDY0 NAogIAkJICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0cmluZyAoY29uZCksICh1bnNpZ25lZCBsb25n KSByZXR2YWwpOwogICAgcmV0dXJuIHJldHZhbDsKICB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rhcmdl dC5oIGIvZ2RiL3RhcmdldC5oCi1pbmRleCA2OTIyOGUxLi40YjUyZDUzIDEwMDY0NAotLS0tIGEv Z2RiL3RhcmdldC5oCi0rKysgYi9nZGIvdGFyZ2V0LmgKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi90YXJnZXQuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3Jp Zy9nZGIvdGFyZ2V0LmgJMjAxMy0wMS0xOCAyMzozNDo0My45NDcxMDY4NzggKzAxMDAKKysrKyBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi90YXJnZXQuaAkyMDEzLTAxLTE4IDIzOjM0OjUxLjIxNzEx NjUzNiArMDEwMAogQEAgLTQ2Niw4ICs0NjYsOCBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogIAogICAg ICAvKiBEb2N1bWVudGF0aW9uIG9mIHdoYXQgdGhlIHR3byByb3V0aW5lcyBiZWxvdyBhcmUgZXhw ZWN0ZWQgdG8gZG8gaXMKQEAgLTY5Niw2ICs2OTgsMyBAQCBpbmRleCA2OTIyOGUxLi40YjUyZDUz IDEwMDY0NAogIAkJCQkJICAgICAgc3RydWN0IGV4cHJlc3Npb24gKik7CiAgICAgIGludCAoKnRv X21hc2tlZF93YXRjaF9udW1fcmVnaXN0ZXJzKSAoc3RydWN0IHRhcmdldF9vcHMgKiwKICAJCQkJ CSAgQ09SRV9BRERSLCBDT1JFX0FERFIpOwotCi0tLU1QXy82SFJsSDZ2cHlxdFN5NENZeU1yWDZi Mi0tCi0KCmRpZmYgLS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjNvZjI1LnBhdGNoIGIv Z2RiLXJoYno3OTU0MjQtYml0cG9zLTIzb2YyNS5wYXRjaAppbmRleCA5MWY2YWQ1Li45ZTZiNzEy IDEwMDY0NAotLS0gYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjNvZjI1LnBhdGNoCisrKyBiL2dk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0yM29mMjUucGF0Y2gKQEAgLTEzNywxMCArMTM3LDEwIEBAIENv bnRlbnQtVHlwZTogdGV4dC94LXBhdGNoCiBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA3Yml0 CiBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1iaXRwb3MtdGRlcC5w YXRjaAogCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbHBoYS10ZGVwLmMKK0luZGV4 OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hbHBoYS10ZGVwLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYWxwaGEtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDY6 MDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbHBoYS10ZGVw LmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny4zNzE5ODQ5MjkgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIw MTMwMTE4Lm9yaWcvZ2RiL2FscGhhLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk1NDI5MDM2 MiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FscGhhLXRkZXAuYwkyMDEzLTAx LTE4IDIzOjM3OjEyLjQ2NTMwNzU2NiArMDEwMAogQEAgLTI5OSwxOCArMjk5LDE4IEBAIGFscGhh X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICB7CiAgICBlbnVtIGJmZF9lbmRp YW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CkBAIC0xODQsMTEg KzE4NCwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hbHBoYS10ZGVwLmMKICAJ ICAgICAgbWVtY3B5IChhcmdfcmVnX2J1ZmZlciArIG9mZnNldCwgY29udGVudHMsIHRsZW4pOwog IAkgICAgICBvZmZzZXQgKz0gdGxlbjsKICAJICAgICAgY29udGVudHMgKz0gdGxlbjsKLUluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL2FtZDY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEy MDkyNi5vcmlnL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowOToyNC4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXRkZXAuYwkyMDEyLTExLTA3 IDIyOjQ3OjU3LjM3NDk4NDkyMyArMDEwMAotQEAgLTU5OSw3ICs1OTksNyBAQCBhbWQ2NF9yZXR1 cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5v cmlnL2dkYi9hbWQ2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NTUyOTAzNjUgKzAxMDAK KysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9hbWQ2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzoz NzoxMi40NjYzMDc1NjkgKzAxMDAKK0BAIC02MTYsNyArNjE2LDcgQEAgYW1kNjRfcmV0dXJuX3Zh bHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYQogIHsKICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRk ZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwogICAgZW51bSBhbWQ2NF9yZWdfY2xhc3MgY2xh c3NbMl07CkBAIC0xOTcsNyArMTk3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv YW1kNjQtdGRlcC5jCiAgICBzdGF0aWMgaW50IGludGVnZXJfcmVnbnVtW10gPSB7IEFNRDY0X1JB WF9SRUdOVU0sIEFNRDY0X1JEWF9SRUdOVU0gfTsKICAgIHN0YXRpYyBpbnQgc3NlX3JlZ251bVtd ID0geyBBTUQ2NF9YTU0wX1JFR05VTSwgQU1ENjRfWE1NMV9SRUdOVU0gfTsKICAgIGludCBpbnRl Z2VyX3JlZyA9IDA7Ci1AQCAtNzI4LDggKzcyOCw4IEBAIGFtZDY0X3B1c2hfYXJndW1lbnRzIChz dHJ1Y3QgcmVnY2FjaGUgKnIKK0BAIC03NjksOCArNzY5LDggQEAgYW1kNjRfcHVzaF9hcmd1bWVu dHMgKHN0cnVjdCByZWdjYWNoZSAqcgogICAgICAgdGhhdCByZWdpc3RlciBudW1iZXIgKG9yIGEg bmVnYXRpdmUgdmFsdWUgb3RoZXJ3aXNlKS4gICovCiAgICBpbnQgKmFyZ19hZGRyX3JlZ25vID0g YWxsb2NhIChuYXJncyAqIHNpemVvZiAoaW50KSk7CiAgICBpbnQgbnVtX3N0YWNrX2FyZ3MgPSAw OwpAQCAtMjA4LDcgKzIwOCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0 LXRkZXAuYwogICAgaW50IGludGVnZXJfcmVnID0gMDsKICAgIGludCBzc2VfcmVnID0gMDsKICAg IGludCBpOwotQEAgLTc0Myw3ICs3NDMsNyBAQCBhbWQ2NF9wdXNoX2FyZ3VtZW50cyAoc3RydWN0 IHJlZ2NhY2hlICpyCitAQCAtNzg0LDcgKzc4NCw3IEBAIGFtZDY0X3B1c2hfYXJndW1lbnRzIChz dHJ1Y3QgcmVnY2FjaGUgKnIKICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQogICAgICB7 CiAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlIChhcmdzW2ldKTsKQEAgLTIx NywxMSArMjE3LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXRkZXAu YwogICAgICAgIGVudW0gYW1kNjRfcmVnX2NsYXNzIGNsYXNzWzJdOwogICAgICAgIGludCBuZWVk ZWRfaW50ZWdlcl9yZWdzID0gMDsKICAgICAgICBpbnQgbmVlZGVkX3NzZV9yZWdzID0gMDsKLUlu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYW1kNjQtd2luZG93cy10ZGVwLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYW1kNjQtd2luZG93cy10ZGVwLmMJMjAx Mi0wNi0wNSAxNTo1MDo1Ny4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNDEzOTg0ODY3ICsw MTAwCi1AQCAtNzgsNyArNzgsNyBAQCBhbWQ2NF93aW5kb3dzX3JldHVybl92YWx1ZSAoc3RydWN0 IGdkYmFyCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9hbWQ2NC13aW5kb3dzLXRk ZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk1NjI5MDM2OSArMDEwMAorKysrIGdkYi03LjUuNTAu MjAxMzAxMTgvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDY2 MzA3NTY5ICswMTAwCitAQCAtNzksNyArNzksNyBAQCBhbWQ2NF93aW5kb3dzX3JldHVybl92YWx1 ZSAoc3RydWN0IGdkYmFyCiAgCQkJICAgIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLAogIAkJCSAgICBnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUg KndyaXRlYnVmKQogIHsKQEAgLTIzMCwxMSArMjMwLDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2FtZDY0LXdpbmRvd3MtdGRlcC5jCiAgICBpbnQgcmVnbnVtID0gLTE7CiAgCiAg ICAvKiBTZWUgaWYgb3VyIHZhbHVlIGlzIHJldHVybmVkIHRocm91Z2ggYSByZWdpc3Rlci4gIElm IGl0IGlzLCB0aGVuCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hcm0tdGRlcC5jCitJ bmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYXJtLXRkZXAuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9hcm0tdGRlcC5jCTIwMTItMDYtMjUgMTQ6MzI6 NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hcm0tdGRlcC5j CTIwMTItMTEtMDcgMjI6NDc6NTcuNDIyOTg0ODU1ICswMTAwCi1AQCAtMzM3Nyw3ICszMzc3LDcg QEAgYXJtX3ZmcF9jcHJjX3JlZ19jaGFyIChlbnVtIGFybV92ZnBfY3ByYworLS0tIGdkYi03LjUu NTAuMjAxMzAxMTgub3JpZy9nZGIvYXJtLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk2MTI5 MDM3OCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2FybS10ZGVwLmMJMjAxMy0w MS0xOCAyMzozNzoxMi40NjkzMDc1NzMgKzAxMDAKK0BAIC0zNDk2LDcgKzM0OTYsNyBAQCBhcm1f dmZwX2NwcmNfcmVnX2NoYXIgKGVudW0gYXJtX3ZmcF9jcHJjCiAgICAgYXJyYXkpLiAgVmVjdG9y cyBhbmQgY29tcGxleCB0eXBlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQsCiAgICAgbWF0 Y2hpbmcgdGhlIGdlbmVyaWMgQUFQQ1Mgc3VwcG9ydC4gICovCiAgCkBAIC0yNDMsNyArMjQzLDcg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLXRkZXAuYwogIGFybV92ZnBfY3By Y19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZSAqdCwKICAJCQkgICAgZW51bSBhcm1fdmZwX2Nw cmNfYmFzZV90eXBlICpiYXNlX3R5cGUpCiAgewotQEAgLTM0MDgsNyArMzQwOCw3IEBAIGFybV92 ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQorQEAgLTM1MjcsNyArMzUyNyw3IEBA IGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChzdHJ1Y3QgdHlwZQogIAogICAgICBjYXNlIFRZ UEVfQ09ERV9BUlJBWToKICAgICAgICB7CkBAIC0yNTIsNyArMjUyLDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvYXJtLXRkZXAuYwogIAl1bnNpZ25lZCB1bml0bGVuOwogIAljb3Vu dCA9IGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChUWVBFX1RBUkdFVF9UWVBFICh0KSwgYmFz ZV90eXBlKTsKICAJaWYgKGNvdW50ID09IC0xKQotQEAgLTM0MjgsMTMgKzM0MjgsMTUgQEAgYXJt X3ZmcF9jcHJjX3N1Yl9jYW5kaWRhdGUgKHN0cnVjdCB0eXBlCitAQCAtMzU0NywxMyArMzU0Nywx NSBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUKICAKICAgICAgY2Fz ZSBUWVBFX0NPREVfU1RSVUNUOgogICAgICAgIHsKQEAgLTI3MSw3ICsyNzEsNyBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9hcm0tdGRlcC5jCiAgCSAgICBpZiAoc3ViX2NvdW50ID09 IC0xKQogIAkgICAgICByZXR1cm4gLTE7CiAgCSAgICBjb3VudCArPSBzdWJfY291bnQ7Ci1AQCAt MzQ1NCwxMyArMzQ1NiwxNSBAQCBhcm1fdmZwX2NwcmNfc3ViX2NhbmRpZGF0ZSAoc3RydWN0IHR5 cGUKK0BAIC0zNTczLDEzICszNTc1LDE1IEBAIGFybV92ZnBfY3ByY19zdWJfY2FuZGlkYXRlIChz dHJ1Y3QgdHlwZQogIAogICAgICBjYXNlIFRZUEVfQ09ERV9VTklPTjoKICAgICAgICB7CkBAIC0y OTAsNyArMjkwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYXJtLXRkZXAuYwog IAkgICAgaWYgKHN1Yl9jb3VudCA9PSAtMSkKICAJICAgICAgcmV0dXJuIC0xOwogIAkgICAgY291 bnQgPSAoY291bnQgPiBzdWJfY291bnQgPyBjb3VudCA6IHN1Yl9jb3VudCk7Ci1AQCAtMzQ5Niw3 ICszNTAwLDcgQEAgYXJtX3ZmcF9jYWxsX2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUgKnQsCitAQCAt MzYxNSw3ICszNjE5LDcgQEAgYXJtX3ZmcF9jYWxsX2NhbmRpZGF0ZSAoc3RydWN0IHR5cGUgKnQs CiAgCQkJaW50ICpjb3VudCkKICB7CiAgICBlbnVtIGFybV92ZnBfY3ByY19iYXNlX3R5cGUgYiA9 IFZGUF9DUFJDX1VOS05PV047CkBAIC0yOTksNyArMjk5LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYXJtLXRkZXAuYwogICAgaWYgKGMgPD0gMCB8fCBjID4gNCkKICAgICAgcmV0 dXJuIDA7CiAgICAqYmFzZV90eXBlID0gYjsKLUBAIC0zNTc3LDcgKzM1ODEsNyBAQCBhcm1fcHVz aF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiCitAQCAtMzY5Niw3ICszNzAwLDcgQEAg YXJtX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkYgogIAogICAgZm9yIChhcmdu dW0gPSAwOyBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspCiAgICAgIHsKQEAgLTMwOCwxMCArMzA4 LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2FybS10ZGVwLmMKICAgICAgICBz dHJ1Y3QgdHlwZSAqYXJnX3R5cGU7CiAgICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlOwog ICAgICAgIGVudW0gdHlwZV9jb2RlIHR5cGVjb2RlOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvYXZyLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F2ci10ZGVw LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvYXZyLXRkZXAu YwkyMDEyLTA1LTE4IDIzOjAyOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEy MDkyNi9nZGIvYXZyLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjQ0NDk4NDgyMyArMDEwMAor LS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvYXZyLXRkZXAuYwkyMDEzLTAxLTE4IDIz OjM2OjU5Ljk2MzI5MDM4NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2F2ci10 ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzAzMDc1NzQgKzAxMDAKIEBAIC0xMTcwLDEzICsx MTcwLDE0IEBAIGF2cl9kdW1teV9pZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHMKICAKICBz dHJ1Y3Qgc3RhY2tfaXRlbQpAQCAtMzQ1LDEwICszNDUsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvYXZyLXRkZXAuYwogIAogICAgICAgIC8qIENhbGN1bGF0ZSB0aGUgcG90ZW50 aWFsIGxhc3QgcmVnaXN0ZXIgbmVlZGVkLiAgKi8KICAgICAgICBsYXN0X3JlZ251bSA9IHJlZ251 bSAtIChsZW4gKyAobGVuICYgMSkpOwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvYmZp bi10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9iZmluLXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9iZmluLXRkZXAuYwkyMDEy LTExLTA3IDIyOjA5OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9n ZGIvYmZpbi10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny40NTA5ODQ4MTQgKzAxMDAKKy0tLSBn ZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2JmaW4tdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6 NTkuOTYzMjkwMzg1ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvYmZpbi10ZGVw LmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzAzMDc1NzQgKzAxMDAKIEBAIC01MDYsNyArNTA2LDcg QEAgYmZpbl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgY2hhciBidWZb NF07CiAgICBpbnQgaTsKQEAgLTM2NywxMCArMzY3LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2JmaW4tdGRlcC5jCiAgCiAgICAgICAgc3AgLT0gY29udGFpbmVyX2xlbjsKICAg ICAgICB3cml0ZV9tZW1vcnkgKHNwLCB2YWx1ZV9jb250ZW50c193cml0ZWFibGUgKGFyZ3NbaV0p LCBjb250YWluZXJfbGVuKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2NyaXMtdGRl cC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvY3Jpcy10ZGVwLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvY3Jpcy10ZGVwLmMJMjAxMi0xMS0w NyAyMjowOToyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2Ny aXMtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNDUzOTg0ODEwICswMTAwCistLS0gZ2RiLTcu NS41MC4yMDEzMDExOC5vcmlnL2dkYi9jcmlzLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk2 NTI5MDM5MCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2NyaXMtdGRlcC5jCTIw MTMtMDEtMTggMjM6Mzc6MTIuNDcxMzA3NTc4ICswMTAwCiBAQCAtNjcwLDEzICs2NzAsMTMgQEAg c3RhdGljIENPUkVfQUREUiBjcmlzX3Vud2luZF9zcCAoc3RydWN0CiAgCiAgc3RydWN0IHN0YWNr X2l0ZW0KQEAgLTQwNSwxMSArNDA1LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L2NyaXMtdGRlcC5jCiAgICAgICAgCiAgICAgICAgLyogSG93IG1heSByZWdpc3RlcnMgd29ydGgg b2Ygc3RvcmFnZSBkbyB3ZSBuZWVkIGZvciB0aGlzIGFyZ3VtZW50PyAgKi8KICAgICAgICByZWdf ZGVtYW5kID0gKGxlbiAvIDQpICsgKGxlbiAlIDQgIT0gMCA/IDEgOiAwKTsKLUluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2g4MzAwLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2g4MzAwLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5v cmlnL2dkYi9oODMwMC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowOToyNC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2g4MzAwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3 OjU3LjQ1Njk4NDgwNiArMDEwMAotQEAgLTY0MSw3ICs2NDEsNyBAQCBoODMwMF9wdXNoX2R1bW15 X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi9oODMwMC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NjYyOTAzOTIgKzAxMDAKKysrKyBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9oODMwMC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40 NzIzMDc1ODMgKzAxMDAKK0BAIC02NDAsNyArNjQwLDcgQEAgaDgzMDBfcHVzaF9kdW1teV9jYWxs IChzdHJ1Y3QgZ2RiYXJjaCAqZwogIAkJICAgICAgIGludCBzdHJ1Y3RfcmV0dXJuLCBDT1JFX0FE RFIgc3RydWN0X2FkZHIpCiAgewogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJh cmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwpAQCAtNDE4LDcgKzQxOCw3IEBAIEluZGV4OiBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL2g4MzAwLXRkZXAuYwogICAgaW50IHdvcmRzaXplID0gQklOV09S RCAoZ2RiYXJjaCk7CiAgICBpbnQgcmVnID0gRV9BUkcwX1JFR05VTTsKICAgIGludCBhcmd1bWVu dDsKLUBAIC02NjgsMTEgKzY2OCwxMSBAQCBoODMwMF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBn ZGJhcmNoICpnCitAQCAtNjY3LDExICs2NjcsMTEgQEAgaDgzMDBfcHVzaF9kdW1teV9jYWxsIChz dHJ1Y3QgZ2RiYXJjaCAqZwogICAgICB7CiAgICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87 CiAgICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSB2YWx1ZV90eXBlIChhcmdzW2FyZ3VtZW50XSk7 CkBAIC00MzIsNyArNDMyLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaDgzMDAt dGRlcC5jCiAgICAgICAgZ2RiX2J5dGUgKnBhZGRlZCA9IHhtYWxsb2MgKHBhZGRlZF9sZW4pOwog ICAgICAgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBwYWRkZWQpOwogIAotQEAgLTcw MSw3ICs3MDEsNyBAQCBoODMwMF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCitA QCAtNzAwLDcgKzcwMCw3IEBAIGg4MzAwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2gg KmcKICAJICAgICAgLyogSGVhdmVucyB0byBCZXRzeSAtLS0gaXQncyByZWFsbHkgZ29pbmcgaW4g cmVnaXN0ZXJzIQogIAkgICAgICAgICBOb3RlIHRoYXQgb24gdGhlIGg4LzMwMHMsIHRoZXJlIGFy ZSBnYXBzIGJldHdlZW4gdGhlCiAgCSAgICAgICAgIHJlZ2lzdGVycyBpbiB0aGUgcmVnaXN0ZXIg ZmlsZS4gICovCkBAIC00NDEsMTEgKzQ0MSwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9oODMwMC10ZGVwLmMKICAKICAJICAgICAgZm9yIChvZmZzZXQgPSAwOyBvZmZzZXQgPCBw YWRkZWRfbGVuOyBvZmZzZXQgKz0gd29yZHNpemUpCiAgCQl7Ci1JbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9ocHBhLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2hw cGEtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL2hw cGEtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDk6MjQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9ocHBhLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ4OjMxLjM3ODkzNjA4 MyArMDEwMAotQEAgLTk2Miw3ICs5NjIsNyBAQCBocHBhNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1 Y3QgZ2RiYXJjaCAqCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9ocHBhLXRkZXAu YwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk2NjI5MDM5MiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL2hwcGEtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6NDQuMjI4MzUxMzcwICswMTAw CitAQCAtOTYxLDcgKzk2MSw3IEBAIGhwcGE2NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoICoKICAgICAgewogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsKICAgICAg ICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHZhbHVlX3R5cGUgKGFyZyk7CkBAIC00NTQsNyArNDU0LDcg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaHBwYS10ZGVwLmMKICAgICAgICBjb25z dCBiZmRfYnl0ZSAqdmFsYnVmOwogICAgICAgIGJmZF9ieXRlIGZwdHJidWZbOF07CiAgICAgICAg aW50IHJlZ251bTsKLUBAIC0xMTU3LDcgKzExNTcsNyBAQCBocHBhNjRfcmV0dXJuX3ZhbHVlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiCitAQCAtMTE1Niw3ICsxMTU2LDcgQEAgaHBwYTY0X3JldHVybl92 YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYgogIAkJICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKICAJCSAgICAgZ2RiX2J5dGUgKnJlYWRidWYsIGNvbnN0 IGdkYl9ieXRlICp3cml0ZWJ1ZikKICB7CkBAIC00NjIsMTEgKzQ2MiwxMSBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9ocHBhLXRkZXAuYwogKyAgTE9OR0VTVCBsZW4gPSBUWVBFX0xF TkdUSCAodHlwZSk7CiAgICBpbnQgcmVnbnVtLCBvZmZzZXQ7CiAgCi0gICBpZiAoVFlQRV9MRU5H VEggKHR5cGUpID4gMTYpCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pMzg2LWRhcndp bi10ZGVwLmMKKyAgIGlmIChsZW4gPiAxNikKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9pMzg2LWRhcndpbi10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYu b3JpZy9nZGIvaTM4Ni1kYXJ3aW4tdGRlcC5jCTIwMTItMTEtMDcgMjI6MDM6NTcuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pMzg2LWRhcndpbi10ZGVwLmMJMjAx Mi0xMS0wNyAyMjo0Nzo1Ny40NzA5ODQ3ODYgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk2NzI5MDM5 NCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2kzODYtZGFyd2luLXRkZXAuYwky MDEzLTAxLTE4IDIzOjM3OjEyLjQ3MzMwNzU4NiArMDEwMAogQEAgLTE2Niw3ICsxNjYsNyBAQCBp Mzg2X2Rhcndpbl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhCiAgCiAgICBmb3IgKHdyaXRl X3Bhc3MgPSAwOyB3cml0ZV9wYXNzIDwgMjsgd3JpdGVfcGFzcysrKQpAQCAtNDc2LDExICs0NzYs MTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaTM4Ni1kYXJ3aW4tdGRlcC5jCiAg ICAgICAgaW50IG51bV9tMTI4ID0gMDsKICAKICAgICAgICBpZiAoc3RydWN0X3JldHVybikKLUlu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvaTM4Ni10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAx MjA5MjYub3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMDo0Mi4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRlcC5jCTIwMTItMTEtMDcg MjI6NDc6NTcuNDc0OTg0NzgwICswMTAwCi1AQCAtMjM1OCw3ICsyMzU4LDcgQEAgaTM4Nl9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgu b3JpZy9nZGIvaTM4Ni10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NjkyOTAzOTggKzAxMDAK KysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pMzg2LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3 OjEyLjQ3NTMwNzU4OSArMDEwMAorQEAgLTI0MDcsNyArMjQwNyw3IEBAIGkzODZfcHVzaF9kdW1t eV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAgIGdkYl9ieXRlIGJ1Zls0XTsKICAgIGludCBp OwogICAgaW50IHdyaXRlX3Bhc3M7CkBAIC00ODksNyArNDg5LDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvaTM4Ni10ZGVwLmMKICAKICAgIC8qIERldGVybWluZSB0aGUgdG90YWwg c3BhY2UgcmVxdWlyZWQgZm9yIGFyZ3VtZW50cyBhbmQgc3RydWN0CiAgICAgICByZXR1cm4gYWRk cmVzcyBpbiBhIGZpcnN0IHBhc3MgKGFsbG93aW5nIGZvciAxNi1ieXRlLWFsaWduZWQKLUBAIC0y MzY2LDcgKzIzNjYsNyBAQCBpMzg2X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdk CitAQCAtMjQxNSw3ICsyNDE1LDcgQEAgaTM4Nl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJh cmNoICpnZAogIAogICAgZm9yICh3cml0ZV9wYXNzID0gMDsgd3JpdGVfcGFzcyA8IDI7IHdyaXRl X3Bhc3MrKykKICAgICAgewpAQCAtNDk4LDcgKzQ5OCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL2kzODYtdGRlcC5jCiAgCiAgICAgICAgaWYgKHN0cnVjdF9yZXR1cm4pCiAgCXsK LUBAIC0yMzgzLDcgKzIzODMsNyBAQCBpMzg2X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFy Y2ggKmdkCitAQCAtMjQzMiw3ICsyNDMyLDcgQEAgaTM4Nl9wdXNoX2R1bW15X2NhbGwgKHN0cnVj dCBnZGJhcmNoICpnZAogIAogICAgICAgIGZvciAoaSA9IDA7IGkgPCBuYXJnczsgaSsrKQogIAl7 CkBAIC01MDcsNyArNTA3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaTM4Ni10 ZGVwLmMKICAKICAJICBpZiAod3JpdGVfcGFzcykKICAJICAgIHsKLUBAIC0yNTkwLDcgKzI1OTAs NyBAQCBpMzg2X3JlZ19zdHJ1Y3RfcmV0dXJuX3AgKHN0cnVjdCBnZGJhcmNoCitAQCAtMjYzOSw3 ICsyNjM5LDcgQEAgaTM4Nl9yZWdfc3RydWN0X3JldHVybl9wIChzdHJ1Y3QgZ2RiYXJjaAogIHsK ICAgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwog ICAgZW51bSB0eXBlX2NvZGUgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CkBAIC01MTYsNyArNTE2 LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaTM4Ni10ZGVwLmMKICAKICAgIGdk Yl9hc3NlcnQgKGNvZGUgPT0gVFlQRV9DT0RFX1NUUlVDVAogICAgICAgICAgICAgICAgfHwgY29k ZSA9PSBUWVBFX0NPREVfVU5JT04KLUBAIC0zMDQyLDcgKzMwNDIsNyBAQCBzdGF0aWMgaW50CitA QCAtMzA5NCw3ICszMDk0LDcgQEAgc3RhdGljIGludAogIGkzODZfY29udmVydF9yZWdpc3Rlcl9w IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkgaW50IHJlZ251bSwgc3RydWN0IHR5cGUg KnR5cGUpCiAgewpAQCAtNTI1LDcgKzUyNSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL2kzODYtdGRlcC5jCiAgCiAgICAvKiBWYWx1ZXMgbWF5IGJlIHNwcmVhZCBhY3Jvc3MgbXVs dGlwbGUgcmVnaXN0ZXJzLiAgTW9zdCBkZWJ1Z2dpbmcKICAgICAgIGZvcm1hdHMgYXJlbid0IGV4 cHJlc3NpdmUgZW5vdWdoIHRvIHNwZWNpZnkgdGhlIGxvY2F0aW9ucywgc28KLUBAIC0zMDc1LDcg KzMwNzUsNyBAQCBpMzg2X3JlZ2lzdGVyX3RvX3ZhbHVlIChzdHJ1Y3QgZnJhbWVfaW5mCitAQCAt MzEyNyw3ICszMTI3LDcgQEAgaTM4Nl9yZWdpc3Rlcl90b192YWx1ZSAoc3RydWN0IGZyYW1lX2lu ZgogIAkJCWludCAqb3B0aW1pemVkcCwgaW50ICp1bmF2YWlsYWJsZXApCiAgewogICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOwpAQCAtNTM0LDcgKzUz NCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYtdGRlcC5jCiAgCiAgICBp ZiAoaTM4Nl9mcF9yZWdudW1fcCAoZ2RiYXJjaCwgcmVnbnVtKSkKICAgICAgcmV0dXJuIGkzODdf cmVnaXN0ZXJfdG9fdmFsdWUgKGZyYW1lLCByZWdudW0sIHR5cGUsIHRvLAotQEAgLTMxMTEsNyAr MzExMSw3IEBAIHN0YXRpYyB2b2lkCitAQCAtMzE2Myw3ICszMTYzLDcgQEAgc3RhdGljIHZvaWQK ICBpMzg2X3ZhbHVlX3RvX3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIGludCBy ZWdudW0sCiAgCQkJc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICpmcm9tKQogIHsK QEAgLTU0MywxMCArNTQzLDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2kzODYt dGRlcC5jCiAgCiAgICBpZiAoaTM4Nl9mcF9yZWdudW1fcCAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1l KSwgcmVnbnVtKSkKICAgICAgewotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaWE2NC10 ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9pYTY0LXRkZXAuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9pYTY0LXRkZXAuYwkyMDEyLTEx LTA3IDIyOjAwOjQyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv aWE2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny40OTE5ODQ3NTYgKzAxMDAKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL2lhNjQtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTku OTcwMjkwNDAwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvaWE2NC10ZGVwLmMJ MjAxMy0wMS0xOCAyMzozNzoxMi40NzYzMDc1ODkgKzAxMDAKIEBAIC0zOTc0LDggKzM5NzQsMTAg QEAgaWE2NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgaW50IGFyZ25v OwogICAgc3RydWN0IHZhbHVlICphcmc7CkBAIC01NjAsMTEgKzU2MCwxMSBAQCBJbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9pYTY0LXRkZXAuYwogICAgaW50IGZsb2F0cmVnOwogICAgVUxP TkdFU1QgYnNwOwogICAgQ09SRV9BRERSIGZ1bmNkZXNjYWRkciwgcGMsIGdsb2JhbF9wb2ludGVy OwotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaXEyMDAwLXRkZXAuYworSW5kZXg6IGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL2lxMjAwMC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjAuMjAxMjA5MjYub3JpZy9nZGIvaXEyMDAwLXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA2 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvaXEyMDAwLXRkZXAu YwkyMDEyLTExLTA3IDIyOjQ3OjU3LjUwOTk4NDcyOSArMDEwMAotQEAgLTY1NSw4ICs2NTUsOSBA QCBpcTIwMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi9pcTIwMDAtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTcw MjkwNDAwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvaXEyMDAwLXRkZXAuYwky MDEzLTAxLTE4IDIzOjM3OjEyLjQ3NjMwNzU4OSArMDEwMAorQEAgLTY1NCw4ICs2NTQsOSBAQCBp cTIwMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBjb25zdCBiZmRfYnl0 ZSAqdmFsOwogICAgYmZkX2J5dGUgYnVmWzRdOwogICAgc3RydWN0IHR5cGUgKnR5cGU7CkBAIC01 NzYsMTEgKzU3NiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9pcTIwMDAtdGRl cC5jCiAgICAvKiBVc2VkIHRvIGNvcHkgc3RydWN0IGFyZ3VtZW50cyBpbnRvIHRoZSBzdGFjay4g ICovCiAgICBDT1JFX0FERFIgc3RydWN0X3B0cjsKICAKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL20zMnItdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvbTMyci10 ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbTMyci10 ZGVwLmMJMjAxMi0wNS0xOCAyMzowMjo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL20zMnItdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNTE2OTg0NzE5ICsw MTAwCi1AQCAtNjk2LDcgKzY5Niw3IEBAIG0zMnJfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2QKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL20zMnItdGRlcC5jCTIw MTMtMDEtMTggMjM6MzY6NTkuOTcxMjkwNDAyICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDEx OC9nZGIvbTMyci10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzYzMDc1ODkgKzAxMDAKK0BA IC02OTUsNyArNjk1LDcgQEAgbTMycl9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpn ZAogICAgQ09SRV9BRERSIHJlZ3ZhbDsKICAgIGdkYl9ieXRlICp2YWw7CiAgICBnZGJfYnl0ZSB2 YWxidWZbTUFYX1JFR0lTVEVSX1NJWkVdOwpAQCAtNTg5LDEwICs1ODksMTAgQEAgSW5kZXg6IGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvbTMyci10ZGVwLmMKICAKICAgIC8qIEZpcnN0IGZvcmNlIHNw IHRvIGEgNC1ieXRlIGFsaWdubWVudC4gICovCiAgICBzcCA9IHNwICYgfjM7Ci1JbmRleDogZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9tNjhrLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL202OGstdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9y aWcvZ2RiL202OGstdGRlcC5jCTIwMTItMTEtMDcgMjI6MDI6MzAuMDAwMDAwMDAwICswMTAwCi0r KysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tNjhrLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ5OjQ1 Ljg4MTgyOTAzMiArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbTY4ay10 ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NzEyOTA0MDIgKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi9tNjhrLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM5OjA2LjQ3NDQ1OTA0MSAr MDEwMAogQEAgLTM4NCw3ICszODQsNyBAQCBtNjhrX3JlZ19zdHJ1Y3RfcmV0dXJuX3AgKHN0cnVj dCBnZGJhcmNoCiAgewogICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRl cCAoZ2RiYXJjaCk7CkBAIC02MDAsOSArNjAwLDkgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvbTY4ay10ZGVwLmMKIC0gIGludCBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CiArICBM T05HRVNUIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKICAKLSAgIGdkYl9hc3NlcnQgKGNvZGUg PT0gVFlQRV9DT0RFX1NUUlVDVCB8fCBjb2RlID09IFRZUEVfQ09ERV9VTklPTik7Ci0gCi1AQCAt NTEzLDkgKzUxMyw5IEBAIG02OGtfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QK KyAgIGdkYl9hc3NlcnQgKGNvZGUgPT0gVFlQRV9DT0RFX1NUUlVDVCB8fCBjb2RlID09IFRZUEVf Q09ERV9VTklPTgorIAkgICAgICB8fCBjb2RlID09IFRZUEVfQ09ERV9DT01QTEVYKTsKK0BAIC01 MTYsOSArNTE2LDkgQEAgbTY4a19wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAog ICAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKICAgICAgewogICAgICAgIHN0cnVj dCB0eXBlICp2YWx1ZV90eXBlID0gdmFsdWVfZW5jbG9zaW5nX3R5cGUgKGFyZ3NbaV0pOwpAQCAt NjE1LDEwICs2MTUsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTY4ay10ZGVw LmMKICAKICAgICAgICAvKiBOb24tc2NhbGFycyBiaWdnZXIgdGhhbiA0IGJ5dGVzIGFyZSBsZWZ0 IGFsaWduZWQsIG90aGVycyBhcmUKICAJIHJpZ2h0IGFsaWduZWQuICAqLwotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvbTg4ay10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4 L2dkYi9tODhrLXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmln L2dkYi9tODhrLXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA2LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbTg4ay10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny41 MjA5ODQ3MTQgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL204OGstdGRl cC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTcxMjkwNDAyICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvbTg4ay10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40NzczMDc1OTAgKzAx MDAKIEBAIC0yNjAsMTMgKzI2MCwxMyBAQCBtODhrX3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJl Z2NhY2hlICpyCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfcmVnY2FjaGVf YXJjaCAocmVnY2FjaGUpOwpAQCAtNjQ2LDEwICs2NDYsMTAgQEAgSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvbTg4ay10ZGVwLmMKICAKICAgICAgICBpZiAobTg4a19pbl9yZWdpc3Rlcl9w ICh0eXBlKSkKICAJewotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWVwLXRkZXAuYwor SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21lcC10ZGVwLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbWVwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAz OjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWVwLXRkZXAu YwkyMDEyLTExLTA3IDIyOjQ3OjU3LjUyMjk4NDcxMiArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvbWVwLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk3MjI5MDQwNCAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21lcC10ZGVwLmMJMjAxMy0wMS0xOCAy MzozNzoxMi40NzczMDc1OTAgKzAxMDAKIEBAIC0yMjc5LDcgKzIyNzksNyBAQCBwdXNoX2xhcmdl X2FyZ3VtZW50cyAoQ09SRV9BRERSIHNwLCBpbnQKICAKICAgIGZvciAoaSA9IDA7IGkgPCBhcmdj OyBpKyspCkBAIC02NTksMTAgKzY1OSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi9tZXAtdGRlcC5jCiAgCiAgICAgICAgaWYgKGFyZ19sZW4gPiBNRVBfR1BSX1NJWkUpCiAgICAg ICAgICB7Ci1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9taXBzLXRkZXAuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21pcHMtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL21pcHMtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDI6MzAu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9taXBzLXRkZXAuYwky MDEyLTExLTA3IDIyOjQ3OjU3LjUzNDk4NDY5NCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvbWlwcy10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1OS45NzUyOTA0MTQgKzAx MDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9taXBzLXRkZXAuYwkyMDEzLTAxLTE4IDIz OjM3OjEyLjQ3OTMwNzU5OSArMDEwMAogQEAgLTM5Niw3ICszOTYsNyBAQCBzdGF0aWMgdm9pZAog IG1pcHNfeGZlcl9yZWdpc3RlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCByZWdj YWNoZSAqcmVnY2FjaGUsCiAgCQkgICAgaW50IHJlZ19udW0sIGludCBsZW5ndGgsCkBAIC02ODMs NyArNjgzLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWlwcy10ZGVwLmMKICAg IGlmIChtaXBzX2RlYnVnICYmIG91dCAhPSBOVUxMKQogICAgICB7CiAgICAgICAgaW50IGk7Ci1A QCAtNDI5NSwxMyArNDI5NSwxMyBAQCBtaXBzX2VhYmlfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjCitAQCAtNDM0NSwxMyArNDM0NSwxMyBAQCBtaXBzX2VhYmlfcHVzaF9kdW1teV9jYWxs IChzdHJ1Y3QgZ2RiYXJjCiAgICAgICAgZ2RiX2J5dGUgdmFsYnVmW01BWF9SRUdJU1RFUl9TSVpF XTsKICAgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZyA9IGFyZ3NbYXJnbnVtXTsKICAgICAgICBzdHJ1 Y3QgdHlwZSAqYXJnX3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcpKTsKQEAg LTcwMCw3ICs3MDAsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9taXBzLXRkZXAu YwogIAogICAgICAgIC8qIEZ1bmN0aW9uIHBvaW50ZXIgYXJndW1lbnRzIHRvIG1pcHMxNiBjb2Rl IG5lZWQgdG8gYmUgbWFkZSBpbnRvCiAgICAgICAgICAgbWlwczE2IHBvaW50ZXJzLiAgKi8KLUBA IC00NTg2LDcgKzQ1ODYsNyBAQCBtaXBzX2VhYmlfcmV0dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJj aCAqCitAQCAtNDYzNiw3ICs0NjM2LDcgQEAgbWlwc19lYWJpX3JldHVybl92YWx1ZSAoc3RydWN0 IGdkYmFyY2ggKgogIAogIHN0YXRpYyBpbnQKICBtaXBzX24zMm42NF9mcF9hcmdfY2h1bmtfcCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB0eXBlICphcmdfdHlwZSwKQEAgLTcwOSw3 ICs3MDksNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9taXBzLXRkZXAuYwogIHsK ICAgIGludCBpOwogIAotQEAgLTQ2MDEsNyArNDYwMSw3IEBAIG1pcHNfbjMybjY0X2ZwX2FyZ19j aHVua19wIChzdHJ1Y3QgZ2RiYXIKK0BAIC00NjUxLDcgKzQ2NTEsNyBAQCBtaXBzX24zMm42NF9m cF9hcmdfY2h1bmtfcCAoc3RydWN0IGdkYmFyCiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9O RklFTERTIChhcmdfdHlwZSk7IGkrKykKICAgICAgewpAQCAtNzE4LDcgKzcxOCw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtdGRlcC5jCiAgICAgICAgc3RydWN0IHR5cGUg KmZpZWxkX3R5cGU7CiAgCiAgICAgICAgLyogV2UncmUgb25seSBsb29raW5nIGF0IG5vcm1hbCBm aWVsZHMuICAqLwotQEAgLTQ2NDMsNyArNDY0Myw3IEBAIG1pcHNfbjMybjY0X3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmEKK0BAIC00NjkzLDcgKzQ2OTMsNyBAQCBtaXBzX24zMm42NF9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhCiAgICBpbnQgYXJncmVnOwogICAgaW50IGZsb2F0X2Fy Z3JlZzsKICAgIGludCBhcmdudW07CkBAIC03MjcsNyArNzI3LDcgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvbWlwcy10ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQgPSAwOwogICAg ZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gp OwogICAgQ09SRV9BRERSIGZ1bmNfYWRkciA9IGZpbmRfZnVuY3Rpb25fYWRkciAoZnVuY3Rpb24s IE5VTEwpOwotQEAgLTQ5OTQsMTEgKzQ5OTQsMTEgQEAgbWlwc19uMzJuNjRfcmV0dXJuX3ZhbHVl IChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTUwNDQsMTEgKzUwNDQsMTEgQEAgbWlwc19uMzJuNjRfcmV0 dXJuX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaAogIAkJCQk6IE1JUFNfVjBfUkVHTlVNKTsKICAJICAg ZmllbGQgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBmaWVsZCsrLCByZWdudW0gKz0gMikKICAJewpA QCAtNzQzLDcgKzc0Myw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtdGRl cC5jCiAgCSAgaWYgKFRZUEVfTEVOR1RIIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkKSkg PT0gMTYpCiAgCSAgICB7CiAgCSAgICAgIC8qIEEgMTYtYnl0ZSBsb25nIGRvdWJsZSBmaWVsZCBn b2VzIGluIHR3byBjb25zZWN1dGl2ZQotQEAgLTUwNDAsOCArNTA0MCw4IEBAIG1pcHNfbjMybjY0 X3JldHVybl92YWx1ZSAoc3RydWN0IGdkYmFyY2gKK0BAIC01MDkwLDggKzUwOTAsOCBAQCBtaXBz X24zMm42NF9yZXR1cm5fdmFsdWUgKHN0cnVjdCBnZGJhcmNoCiAgCSAgaWYgKG9mZnNldCArIHhm ZXIgPiBUWVBFX0xFTkdUSCAodHlwZSkpCiAgCSAgICB4ZmVyID0gVFlQRV9MRU5HVEggKHR5cGUp IC0gb2Zmc2V0OwogIAkgIGlmIChtaXBzX2RlYnVnKQpAQCAtNzU0LDcgKzc1NCw3IEBAIEluZGV4 OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtdGRlcC5jCiAgCSAgbWlwc194ZmVyX3JlZ2lz dGVyIChnZGJhcmNoLCByZWdjYWNoZSwKICAJCQkgICAgICBnZGJhcmNoX251bV9yZWdzIChnZGJh cmNoKSArIHJlZ251bSwKICAJCQkgICAgICB4ZmVyLCBCRkRfRU5ESUFOX1VOS05PV04sIHJlYWRi dWYsIHdyaXRlYnVmLAotQEAgLTUwOTksNyArNTA5OSw3IEBAIG1pcHNfbzMyX3B1c2hfZHVtbXlf Y2FsbCAoc3RydWN0IGdkYmFyY2gKK0BAIC01MTQ5LDcgKzUxNDksNyBAQCBtaXBzX28zMl9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoCiAgICBpbnQgYXJncmVnOwogICAgaW50IGZsb2F0 X2FyZ3JlZzsKICAgIGludCBhcmdudW07CkBAIC03NjMsNyArNzYzLDcgQEAgSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIvbWlwcy10ZGVwLmMKICAgIGludCBzdGFja19vZmZzZXQgPSAwOwog ICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFy Y2gpOwogICAgQ09SRV9BRERSIGZ1bmNfYWRkciA9IGZpbmRfZnVuY3Rpb25fYWRkciAoZnVuY3Rp b24sIE5VTEwpOwotQEAgLTUxNjMsMTMgKzUxNjMsMTMgQEAgbWlwc19vMzJfcHVzaF9kdW1teV9j YWxsIChzdHJ1Y3QgZ2RiYXJjaAorQEAgLTUyMTMsMTMgKzUyMTMsMTMgQEAgbWlwc19vMzJfcHVz aF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAogICAgICAgIGNvbnN0IGdkYl9ieXRlICp2YWw7 CiAgICAgICAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2FyZ251bV07CiAgICAgICAgc3RydWN0 IHR5cGUgKmFyZ190eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CkBAIC03 ODAsNyArNzgwLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvbWlwcy10ZGVwLmMK ICAKICAgICAgICB2YWwgPSB2YWx1ZV9jb250ZW50cyAoYXJnKTsKICAKLUBAIC01NjI3LDggKzU2 MjcsOCBAQCBtaXBzX282NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoCitAQCAtNTY3 Nyw4ICs1Njc3LDggQEAgbWlwc19vNjRfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAog ICAgaW50IGFyZ3JlZzsKICAgIGludCBmbG9hdF9hcmdyZWc7CiAgICBpbnQgYXJnbnVtOwpAQCAt NzkxLDcgKzc5MSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21pcHMtdGRlcC5j CiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2Ri YXJjaCk7CiAgICBDT1JFX0FERFIgZnVuY19hZGRyID0gZmluZF9mdW5jdGlvbl9hZGRyIChmdW5j dGlvbiwgTlVMTCk7CiAgCi1AQCAtNTY4OSwxMyArNTY4OSwxMyBAQCBtaXBzX282NF9wdXNoX2R1 bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoCitAQCAtNTczOSwxMyArNTczOSwxMyBAQCBtaXBzX282 NF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoCiAgICAgICAgZ2RiX2J5dGUgdmFsYnVm W01BWF9SRUdJU1RFUl9TSVpFXTsKICAgICAgICBzdHJ1Y3QgdmFsdWUgKmFyZyA9IGFyZ3NbYXJn bnVtXTsKICAgICAgICBzdHJ1Y3QgdHlwZSAqYXJnX3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1 ZV90eXBlIChhcmcpKTsKQEAgLTgwOCwxMCArODA4LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL21pcHMtdGRlcC5jCiAgCiAgICAgICAgdmFsID0gdmFsdWVfY29udGVudHMgKGFy Zyk7CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tbjEwMzAwLXRkZXAuYworSW5k ZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL21uMTAzMDAtdGRlcC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL21uMTAzMDAtdGRlcC5jCTIwMTItMDUtMTgg MjM6MDI6NDkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9tbjEw MzAwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjU0Mjk4NDY4MiArMDEwMAorLS0tIGdkYi03 LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvbW4xMDMwMC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNjo1 OS45NzYyOTA0MTYgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9tbjEwMzAwLXRk ZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ3OTMwNzU5OSArMDEwMAogQEAgLTEyMjgsNyArMTIy OCw3IEBAIG1uMTAzMDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaAogICAgZW51bSBi ZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAg Y29uc3QgaW50IHB1c2hfc2l6ZSA9IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIEVfUENfUkVHTlVN KTsKQEAgLTgyMSwxMCArODIxLDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL21u MTAzMDAtdGRlcC5jCiAgICBpbnQgc3RhY2tfb2Zmc2V0ID0gMDsKICAgIGludCBhcmdudW07CiAg ICBjaGFyICp2YWwsIHZhbGJ1ZltNQVhfUkVHSVNURVJfU0laRV07Ci1JbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9tdC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9t dC10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvbXQt dGRlcC5jCTIwMTItMTEtMDcgMjI6MDA6NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9tdC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny41NDQ5ODQ2ODAgKzAx MDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL210LXRkZXAuYwkyMDEzLTAxLTE4 IDIzOjM2OjU5Ljk3NjI5MDQxNiArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL210 LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ3OTMwNzU5OSArMDEwMAogQEAgLTc4Myw5ICs3 ODMsOSBAQCBtdF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZGJhCiAgICBnZGJf Ynl0ZSBidWZbTVRfTUFYX1NUUlVDVF9TSVpFXTsKICAgIGludCBhcmdyZWcgPSBNVF8xU1RfQVJH UkVHOwpAQCAtODM3LDExICs4MzcsMTEgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIv bXQtdGRlcC5jCiAgICBpbnQgaSwgajsKICAKICAgIC8qIEZpcnN0IGhhbmRsZSBob3dldmVyIG1h bnkgYXJncyB3ZSBjYW4gZml0IGludG8gTVRfMVNUX0FSR1JFRyB0aHJ1Ci1JbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9wcGMtc3lzdi10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMw MTE4L2dkYi9wcGMtc3lzdi10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5 MjYub3JpZy9nZGIvcHBjLXN5c3YtdGRlcC5jCTIwMTItMDUtMTggMjM6MDI6NDkuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcGMtc3lzdi10ZGVwLmMJMjAxMi0x MS0wNyAyMjo0Nzo1Ny41NTE5ODQ2NjkgKzAxMDAKLUBAIC02OSw3ICs2OSw3IEBAIHBwY19zeXN2 X2FiaV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGIKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL3BwYy1zeXN2LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk3NzI5MDQxNyAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3BwYy1zeXN2LXRkZXAuYwkyMDEzLTAx LTE4IDIzOjM3OjEyLjQ4MDMwNzYwMiArMDEwMAorQEAgLTY4LDcgKzY4LDcgQEAgcHBjX3N5c3Zf YWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgogICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVf b3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgaW50IG9wZW5jbF9hYmkg PSBwcGNfc3lzdl91c2Vfb3BlbmNsX2FiaSAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKICAgIFVM T05HRVNUIHNhdmVkX3NwOwpAQCAtODUwLDcgKzg1MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3BwYy1zeXN2LXRkZXAuYwogICAgaW50IHdyaXRlX3Bhc3M7CiAgCiAgICBnZGJf YXNzZXJ0ICh0ZGVwLT53b3Jkc2l6ZSA9PSA0KTsKLUBAIC0xMDAsOSArMTAwLDkgQEAgcHBjX3N5 c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgorQEAgLTk5LDkgKzk5LDkgQEAgcHBj X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYgogICAgICAgIC8qIE5leHQgYXZh aWxhYmxlIHZlY3RvciByZWdpc3RlciBmb3IgdmVjdG9yIGFyZ3VtZW50cy4gICovCiAgICAgICAg aW50IHZyZWcgPSAyOwogICAgICAgIC8qIEFyZ3VtZW50cyBzdGFydCBhYm92ZSB0aGUgIkxSIHNh dmUgd29yZCIgYW5kICJCYWNrIGNoYWluIi4gICovCkBAIC04NjIsNyArODYyLDcgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcHBjLXN5c3YtdGRlcC5jCiAgCiAgICAgICAgLyogSWYg dGhlIGZ1bmN0aW9uIGlzIHJldHVybmluZyBhIGBzdHJ1Y3QnLCB0aGVuIHRoZSBmaXJzdCB3b3Jk CiAgICAgICAgICAgKHdoaWNoIHdpbGwgYmUgcGFzc2VkIGluIHIzKSBpcyB1c2VkIGZvciBzdHJ1 Y3QgcmV0dXJuCi1AQCAtMTIxLDcgKzEyMSw3IEBAIHBwY19zeXN2X2FiaV9wdXNoX2R1bW15X2Nh bGwgKHN0cnVjdCBnZGIKK0BAIC0xMjAsNyArMTIwLDcgQEAgcHBjX3N5c3ZfYWJpX3B1c2hfZHVt bXlfY2FsbCAoc3RydWN0IGdkYgogIAl7CiAgCSAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2Fy Z25vXTsKICAJICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFyZykpOwpAQCAtODcxLDcgKzg3MSw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3BwYy1zeXN2LXRkZXAuYwogIAkgIGNvbnN0IGJmZF9ieXRlICp2YWwgPSB2YWx1ZV9jb250ZW50 cyAoYXJnKTsKICAKICAJICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRkxUICYm IGxlbiA8PSA4Ci1AQCAtMTU1NywxNCArMTU1NywxNCBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1 bW15X2NhbGwgKHN0cnVjdCBnCitAQCAtMTU1NiwxNCArMTU1NiwxNCBAQCBwcGM2NF9zeXN2X2Fi aV9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnCiAgCSAgICB9CiAgCSAgZWxzZQogIAkgICAgewpA QCAtODg4LDcgKzg4OCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3BwYy1zeXN2 LXRkZXAuYwogIAkJICAgICAgaWYgKGxlbiA+IHRkZXAtPndvcmRzaXplKQogIAkJCWxlbiA9IHRk ZXAtPndvcmRzaXplOwogIAkJICAgICAgbWVtc2V0IChyZWd2YWwsIDAsIHNpemVvZiByZWd2YWwp OwotQEAgLTE1OTIsNyArMTU5Miw3IEBAIHBwYzY0X3N5c3ZfYWJpX3B1c2hfZHVtbXlfY2FsbCAo c3RydWN0IGcKK0BAIC0xNTkxLDcgKzE1OTEsNyBAQCBwcGM2NF9zeXN2X2FiaV9wdXNoX2R1bW15 X2NhbGwgKHN0cnVjdCBnCiAgCQkgICAgIHJlZ2lzdGVyLiAgV29yayBhcm91bmQgdGhpcyBieSBh bHdheXMgd3JpdGluZyB0aGUKICAJCSAgICAgdmFsdWUgdG8gbWVtb3J5LiAgRm9ydHVuYXRlbHks IGRvaW5nIHRoaXMKICAJCSAgICAgc2ltcGxpZmllcyB0aGUgY29kZS4gICovCkBAIC04OTcsMTAg Kzg5NywxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9wcGMtc3lzdi10ZGVwLmMK ICAJCSAgaWYgKGxlbiA8IHRkZXAtPndvcmRzaXplKQogIAkJICAgIHdyaXRlX21lbW9yeSAoZ3Bh cmFtICsgdGRlcC0+d29yZHNpemUgLSBsZW4sIHZhbCwgbGVuKTsKICAJCSAgZWxzZQotSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmw3OC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi9ybDc4LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi9ybDc4LXRkZXAuYwkyMDEyLTA1LTE4IDIzOjAyOjUwLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcmw3OC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0 Nzo1Ny41NTc5ODQ2NjAgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Js NzgtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTc3MjkwNDE3ICswMTAwCisrKysgZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIvcmw3OC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40ODAzMDc2 MDIgKzAxMDAKIEBAIC0xMDE5LDggKzEwMTksOCBAQCBybDc4X3B1c2hfZHVtbXlfY2FsbCAoc3Ry dWN0IGdkYmFyY2ggKmdkCiAgICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQogICAg ICB7CkBAIC05MTIsMTEgKzkxMiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9y bDc4LXRkZXAuYwogIAogICAgICAgIHNwIC09IGNvbnRhaW5lcl9sZW47CiAgICAgICAgd3JpdGVf bWVtb3J5IChybDc4X21ha2VfZGF0YV9hZGRyZXNzIChzcCksCi1JbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi9yczYwMDAtYWl4LXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgv Z2RiL3JzNjAwMC1haXgtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2 Lm9yaWcvZ2RiL3JzNjAwMC1haXgtdGRlcC5jCTIwMTItMDUtMTggMjM6MDI6NTAuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9yczYwMDAtYWl4LXRkZXAuYwkyMDEy LTExLTA3IDIyOjQ3OjU3LjU2MDk4NDY1NyArMDEwMAotQEAgLTE5Nyw5ICsxOTcsOSBAQCByczYw MDBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi9yczYwMDAtYWl4LXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk3ODI5 MDQxOCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3JzNjAwMC1haXgtdGRlcC5j CTIwMTMtMDEtMTggMjM6Mzc6MTIuNDgwMzA3NjAyICswMTAwCitAQCAtMTk4LDkgKzE5OCw5IEBA IHJzNjAwMF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICoKICAgIHN0cnVjdCBnZGJh cmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwogICAgZW51bSBiZmRfZW5k aWFuIGJ5dGVfb3JkZXIgPSBnZGJhcmNoX2J5dGVfb3JkZXIgKGdkYmFyY2gpOwogICAgaW50IGlp OwpAQCAtOTI4LDcgKzkyOCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3JzNjAw MC1haXgtdGRlcC5jCiAgICBnZGJfYnl0ZSB0bXBfYnVmZmVyWzUwXTsKICAgIGludCBmX2FyZ25v ID0gMDsJCS8qIGN1cnJlbnQgZmxvYXRpbmcgcG9pbnQgYXJnbm8gKi8KICAgIGludCB3b3Jkc2l6 ZSA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCktPndvcmRzaXplOwotQEAgLTMyNyw3ICszMjcsNyBA QCByYW5fb3V0X29mX3JlZ2lzdGVyc19mb3JfYXJndW1lbnRzOgorQEAgLTMyOCw3ICszMjgsNyBA QCByYW5fb3V0X29mX3JlZ2lzdGVyc19mb3JfYXJndW1lbnRzOgogIAogICAgaWYgKChhcmdubyA8 IG5hcmdzKSB8fCBhcmdieXRlcykKICAgICAgewpAQCAtOTM3LDExICs5MzcsMTEgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvcnM2MDAwLWFpeC10ZGVwLmMKICAKICAgICAgICBpZiAo YXJnYnl0ZXMpCiAgCXsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3MzOTAtdGRlcC5j CitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvczM5MC10ZGVwLmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvczM5MC10ZGVwLmMJMjAxMi0xMS0wNyAy MjowMzo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3MzOTAt dGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNTY5OTg0NjQ0ICswMTAwCi1AQCAtMjQ4MSw3ICsy NDgxLDcgQEAgaXNfZmxvYXRfbGlrZSAoc3RydWN0IHR5cGUgKnR5cGUpCistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi9zMzkwLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk3OTI5 MDQyMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3MzOTAtdGRlcC5jCTIwMTMt MDEtMTggMjM6Mzc6MTIuNDgwMzA3NjAyICswMTAwCitAQCAtMjQ4Miw3ICsyNDgyLDcgQEAgaXNf ZmxvYXRfbGlrZSAoc3RydWN0IHR5cGUgKnR5cGUpCiAgCiAgCiAgc3RhdGljIGludApAQCAtOTUw LDcgKzk1MCw3IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3MzOTAtdGRlcC5jCiAg ewogICAgcmV0dXJuICgobiAmIChuIC0gMSkpID09IDApOwogIH0KLUBAIC0yNjY3LDcgKzI2Njcs NyBAQCBzMzkwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMjY2OCw3 ICsyNjY4LDcgQEAgczM5MF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogICAg ICAgIHsKICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1tpXTsKICAgICAgICAgIHN0 cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CkBAIC05 NTksMTAgKzk1OSwxMCBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zMzkwLXRkZXAu YwogIAogIAlpZiAoczM5MF9mdW5jdGlvbl9hcmdfcGFzc19ieV9yZWZlcmVuY2UgKHR5cGUpKQog IAkgIHsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Njb3JlLXRkZXAuYworSW5kZXg6 IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Njb3JlLXRkZXAuYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9zY29yZS10ZGVwLmMJMjAxMi0wNS0xOCAyMzowMjo1 MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3Njb3JlLXRkZXAu YwkyMDEyLTExLTA3IDIyOjQ3OjU3LjU3MTk4NDY0MCArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAx MzAxMTgub3JpZy9nZGIvc2NvcmUtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTc5MjkwNDIw ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc2NvcmUtdGRlcC5jCTIwMTMtMDEt MTggMjM6Mzc6MTIuNDgxMzA3NjA0ICswMTAwCiBAQCAtNTE1LDcgKzUxNSw3IEBAIHNjb3JlX3B1 c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICAgIGVudW0gYmZkX2VuZGlhbiBieXRl X29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAgIGludCBhcmdudW07CkBA IC05NzIsMTEgKzk3MiwxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zY29yZS10 ZGVwLmMKICAgIENPUkVfQUREUiBzdGFja19vZmZzZXQgPSAwOwogICAgQ09SRV9BRERSIGFkZHIg PSAwOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRlcC5jCitJbmRleDog Z2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc2gtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu NS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3NoLXRkZXAuYwkyMDEyLTExLTA3IDIyOjAwOjQ0LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRlcC5jCTIwMTItMTEt MDcgMjI6NDc6NTcuNTc5OTg0NjI4ICswMTAwCi1AQCAtODA1LDcgKzgwNSw3IEBAIHNoX3NraXBf cHJvbG9ndWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmMKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4 Lm9yaWcvZ2RiL3NoLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4MDI5MDQyMyArMDEwMAor KysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3NoLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEy LjQ4MTMwNzYwNCArMDEwMAorQEAgLTgwNyw3ICs4MDcsNyBAQCBzaF9za2lwX3Byb2xvZ3VlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjCiAgc3RhdGljIGludAogIHNoX3VzZV9zdHJ1Y3RfY29udmVu dGlvbiAoaW50IHJlbmVzYXNfYWJpLCBzdHJ1Y3QgdHlwZSAqdHlwZSkKICB7CkBAIC05ODUsNyAr OTg1LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRlcC5jCiAgICBpbnQg bmVsZW0gPSBUWVBFX05GSUVMRFMgKHR5cGUpOwogIAogICAgLyogVGhlIFJlbmVzYXMgQUJJIHJl dHVybnMgYWdncmVnYXRlIHR5cGVzIGFsd2F5cyBvbiBzdGFjay4gICovCi1AQCAtOTA3LDcgKzkw Nyw3IEBAIHNoX2ZyYW1lX2FsaWduIChzdHJ1Y3QgZ2RiYXJjaCAqaWdub3JlLAorQEAgLTkwOSw3 ICs5MDksNyBAQCBzaF9mcmFtZV9hbGlnbiAoc3RydWN0IGdkYmFyY2ggKmlnbm9yZSwKICAKICAv KiBIZWxwZXIgZnVuY3Rpb24gdG8ganVzdGlmeSB2YWx1ZSBpbiByZWdpc3RlciBhY2NvcmRpbmcg dG8gZW5kaWFuZXNzLiAgKi8KICBzdGF0aWMgY2hhciAqCkBAIC05OTQsNyArOTk0LDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvc2gtdGRlcC5jCiAgewogICAgc3RhdGljIGNoYXIg dmFsYnVmWzRdOwogIAotQEAgLTEwNjcsNyArMTA2Nyw4IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9m cHUgKHN0cnVjdCBnZGJhcmNoICoKK0BAIC0xMDY5LDcgKzEwNjksOCBAQCBzaF9wdXNoX2R1bW15 X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqCiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKICAgIENP UkVfQUREUiByZWd2YWw7CiAgICBjaGFyICp2YWw7CkBAIC0xMDA0LDcgKzEwMDQsNyBAQCBJbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zaC10ZGVwLmMKICAgIGludCBwYXNzX29uX3N0YWNr ID0gMDsKICAgIGludCB0cmVhdF9hc19mbHQ7CiAgICBpbnQgbGFzdF9yZWdfYXJnID0gSU5UX01B WDsKLUBAIC0xMjA4LDcgKzEyMDksOCBAQCBzaF9wdXNoX2R1bW15X2NhbGxfbm9mcHUgKHN0cnVj dCBnZGJhcmNoCitAQCAtMTIxMCw3ICsxMjExLDggQEAgc2hfcHVzaF9kdW1teV9jYWxsX25vZnB1 IChzdHJ1Y3QgZ2RiYXJjaAogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgICBDT1JFX0FERFIgcmVn dmFsOwogICAgY2hhciAqdmFsOwpAQCAtMTAxNCwxMCArMTAxNCwxMCBAQCBJbmRleDogZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9zaC10ZGVwLmMKICAgIGludCBwYXNzX29uX3N0YWNrID0gMDsKICAg IGludCBsYXN0X3JlZ19hcmcgPSBJTlRfTUFYOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvc2g2NC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zaDY0LXRk ZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9zaDY0LXRk ZXAuYwkyMDEyLTA2LTA2IDIwOjAzOjUzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvc2g2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny41ODI5ODQ2MjUgKzAx MDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3NoNjQtdGRlcC5jCTIwMTMtMDEt MTggMjM6MzY6NTkuOTgwMjkwNDIzICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv c2g2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40ODIzMDc2MDYgKzAxMDAKIEBAIC0xMDU4 LDcgKzEwNTgsNyBAQCBzaDY0X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmdkCiAg CQkgICAgICBDT1JFX0FERFIgc3RydWN0X2FkZHIpCiAgewpAQCAtMTAzNiwxMSArMTAzNiwxMSBA QCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zaDY0LXRkZXAuYwogICAgaW50IGFyZ3Jl Z19zaXplOwogICAgaW50IGZwX2FyZ3NbMTJdOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvc3BhcmMtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvc3BhcmMt dGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3NwYXJj LXRkZXAuYwkyMDEyLTExLTA3IDIyOjAwOjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvc3BhcmMtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNTkzOTg0NjA5 ICswMTAwCi1AQCAtNDcwLDcgKzQ3MCw3IEBAIHNwYXJjMzJfc3RvcmVfYXJndW1lbnRzIChzdHJ1 Y3QgcmVnY2FjaGUKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3NwYXJjLXRkZXAu YwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4MTI5MDQyNyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3NwYXJjLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ4MjMwNzYwNiArMDEw MAorQEAgLTQ3MSw3ICs0NzEsNyBAQCBzcGFyYzMyX3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJl Z2NhY2hlCiAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKICAgICAgewogICAgICAgIHN0 cnVjdCB0eXBlICp0eXBlID0gdmFsdWVfdHlwZSAoYXJnc1tpXSk7CkBAIC0xMDQ5LDEwICsxMDQ5 LDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3NwYXJjLXRkZXAuYwogIAogICAg ICAgIGlmIChzcGFyY19zdHJ1Y3R1cmVfb3JfdW5pb25fcCAodHlwZSkKICAJICB8fCAoc3BhcmNf ZmxvYXRpbmdfcCAodHlwZSkgJiYgbGVuID09IDE2KQotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDky Ni9nZGIvc3BhcmM2NC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi9zcGFy YzY0LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9z cGFyYzY0LXRkZXAuYwkyMDEyLTA1LTE2IDE2OjM1OjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjUuMC4yMDEyMDkyNi9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny41 OTU5ODQ2MDUgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3NwYXJjNjQt dGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTkuOTgyMjkwNDMwICswMTAwCisrKysgZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvc3BhcmM2NC10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40ODIzMDc2 MDYgKzAxMDAKIEBAIC02MzksNyArNjM5LDggQEAgc3BhcmM2NF8xNl9ieXRlX2FsaWduX3AgKHN0 cnVjdCB0eXBlICp0eQogIAogIHN0YXRpYyB2b2lkCkBAIC0xMTA4LDExICsxMTA4LDExIEBAIElu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3NwYXJjNjQtdGRlcC5jCiAgICAgICAgaW50IHJl Z251bSA9IC0xOwogICAgICAgIGdkYl9ieXRlIGJ1ZlsxNl07CiAgCi1JbmRleDogZ2RiLTcuNS4w LjIwMTIwOTI2L2dkYi9zcHUtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv c3B1LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9z cHUtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDk6MjQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi9zcHUtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNTk4OTg0NjAy ICswMTAwCi1AQCAtMTM3Miw3ICsxMzcyLDcgQEAgc3B1X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0 IGdkYmFyY2ggKmdkYgorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvc3B1LXRkZXAu YwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4MjI5MDQzMCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3NwdS10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40ODMzMDc2MDcgKzAxMDAK K0BAIC0xMzczLDcgKzEzNzMsNyBAQCBzcHVfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiCiAgICAgICAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2ldOwogICAgICAgIHN0cnVj dCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CiAgICAgICAg Y29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzID0gdmFsdWVfY29udGVudHMgKGFyZyk7CkBAIC0xMTIx LDcgKzExMjEsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9zcHUtdGRlcC5jCiAg CiAgICAgICAgLyogSWYgdGhlIGFyZ3VtZW50IGRvZXNuJ3Qgd2hvbGx5IGZpdCBpbnRvIHJlZ2lz dGVycywgaXQgYW5kCiAgCSBhbGwgc3Vic2VxdWVudCBhcmd1bWVudHMgZ28gdG8gdGhlIHN0YWNr LiAgKi8KLUBAIC0xNDA0LDcgKzE0MDQsNyBAQCBzcHVfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiCitAQCAtMTQwNSw3ICsxNDA1LDcgQEAgc3B1X3B1c2hfZHVtbXlfY2FsbCAo c3RydWN0IGdkYmFyY2ggKmdkYgogIAl7CiAgCSAgc3RydWN0IHZhbHVlICphcmcgPSBhcmdzW2ld OwogIAkgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJn KSk7CkBAIC0xMTMwLDIwICsxMTMwLDIwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2Ri L3NwdS10ZGVwLmMKICAJICBpbnQgcHJlZmVycmVkX3Nsb3Q7CiAgCSAgCiAgCSAgaWYgKHNwdV9z Y2FsYXJfdmFsdWVfcCAodHlwZSkpCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi90aWM2 eC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90aWM2eC10ZGVwLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvdGljNngtdGRlcC5jCTIw MTItMDYtMDggMTY6MjQ6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi90aWM2eC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo1MDozMS43OTI3NjMxNzggKzAxMDAKLUBA IC05MTgsNyArOTE4LDcgQEAgdGljNnhfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAq ZworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGljNngtdGRlcC5jCTIwMTMtMDEt MTggMjM6MzY6NTkuOTgzMjkwNDMyICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv dGljNngtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzk6MjcuNzcwNDg0NTE2ICswMTAwCitAQCAtODk2 LDcgKzg5Niw3IEBAIHRpYzZ4X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKKyAg IGludCBhcmdyZWcgPSAwOwogICAgaW50IGFyZ251bTsKLSAgIGludCBsZW4gPSAwOwogICAgaW50 IHN0YWNrX29mZnNldCA9IDQ7CiAtICBpbnQgcmVmZXJlbmNlc19vZmZzZXQgPSA0OwogKyAgTE9O R0VTVCByZWZlcmVuY2VzX29mZnNldCA9IDQ7CiAgICBDT1JFX0FERFIgZnVuY19hZGRyID0gZmlu ZF9mdW5jdGlvbl9hZGRyIChmdW5jdGlvbiwgTlVMTCk7CiAgICBlbnVtIGJmZF9lbmRpYW4gYnl0 ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBzdHJ1Y3QgdHlwZSAq ZnVuY190eXBlID0gdmFsdWVfdHlwZSAoZnVuY3Rpb24pOwotQEAgLTk1Miw3ICs5NTIsNyBAQCB0 aWM2eF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCitAQCAtOTMwLDcgKzkzMCw3 IEBAIHRpYzZ4X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICAgIC8qIE5vdyBt YWtlIHNwYWNlIG9uIHRoZSBzdGFjayBmb3IgdGhlIGFyZ3MuICAqLwogICAgZm9yIChhcmdudW0g PSAwOyBhcmdudW0gPCBuYXJnczsgYXJnbnVtKyspCiAgICAgIHsKQEAgLTExNTIsNyArMTE1Miw3 IEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL3RpYzZ4LXRkZXAuYwogICAgICAgIGlm IChhcmdudW0gPj0gMTAgLSBhcmdyZWcpCiAgCXJlZmVyZW5jZXNfb2Zmc2V0ICs9IGxlbjsKICAg ICAgICBzdGFja19vZmZzZXQgKz0gbGVuOwotQEAgLTk3MSw3ICs5NzEsNyBAQCB0aWM2eF9wdXNo X2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCitAQCAtOTQ5LDcgKzk0OSw3IEBAIHRpYzZ4 X3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0IGdkYmFyY2ggKmcKICAgICAgICBjb25zdCBnZGJfYnl0 ZSAqdmFsOwogICAgICAgIHN0cnVjdCB2YWx1ZSAqYXJnID0gYXJnc1thcmdudW1dOwogICAgICAg IHN0cnVjdCB0eXBlICphcmdfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykp OwpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdGlj NngtdGRlcC5jCiAgICAgICAgZW51bSB0eXBlX2NvZGUgdHlwZWNvZGUgPSBUWVBFX0NPREUgKGFy Z190eXBlKTsKICAKICAgICAgICB2YWwgPSB2YWx1ZV9jb250ZW50cyAoYXJnKTsKLUBAIC0xMTMx LDcgKzExMzEsOCBAQCB0aWM2eF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnCitA QCAtMTEwOSw3ICsxMTA5LDggQEAgdGljNnhfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aCAqZwogIAkgICAgfQogIAkgIGVsc2UKICAJICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sCkBAIC0xMTcxLDEwICsxMTcxLDEwIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3RpYzZ4LXRkZXAuYwogIAogIAkgIGFkZHIgPSBzcCArIHN0YWNrX29mZnNldDsKICAJ ICB3cml0ZV9tZW1vcnkgKGFkZHIsIHZhbCwgbGVuKTsKLUluZGV4OiBnZGItNy41LjAuMjAxMjA5 MjYvZ2RiL3RpbGVneC10ZGVwLmMKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90aWxl Z3gtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3Rp bGVneC10ZGVwLmMJMjAxMi0xMS0wNyAyMjowMDo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny41LjAuMjAxMjA5MjYvZ2RiL3RpbGVneC10ZGVwLmMJMjAxMi0xMS0wNyAyMjo0Nzo1Ny42MTA5 ODQ1ODQgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3RpbGVneC10ZGVw LmMJMjAxMy0wMS0xOCAyMzozNjo1OS45ODMyOTA0MzIgKzAxMDAKKysrKyBnZGItNy41LjUwLjIw MTMwMTE4L2dkYi90aWxlZ3gtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDgzMzA3NjA3ICsw MTAwCiBAQCAtMjkxLDcgKzI5MSw3IEBAIHRpbGVneF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBn ZGJhcmNoICoKICAgIENPUkVfQUREUiBzdGFja19kZXN0ID0gc3A7CiAgICBpbnQgYXJncmVnID0g VElMRUdYX1IwX1JFR05VTTsKQEAgLTExODQsMTEgKzExODQsMTEgQEAgSW5kZXg6IGdkYi03LjUu MC4yMDEyMDkyNi9nZGIvdGlsZWd4LXRkZXAuYwogICAgc3RhdGljIGNvbnN0IGdkYl9ieXRlIHR3 b196ZXJvX3dvcmRzWzhdID0geyAwIH07CiAgCiAgICAvKiBJZiBzdHJ1Y3RfcmV0dXJuIGlzIDEs IHRoZW4gdGhlIHN0cnVjdCByZXR1cm4gYWRkcmVzcyB3aWxsCi1JbmRleDogZ2RiLTcuNS4wLjIw MTIwOTI2L2dkYi92ODUwLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Y4 NTAtdGRlcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcvZ2RiL3Y4 NTAtdGRlcC5jCTIwMTItMDUtMTggMjM6MDI6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu NS4wLjIwMTIwOTI2L2dkYi92ODUwLXRkZXAuYwkyMDEyLTExLTA3IDIyOjQ3OjU3LjYxNzk4NDU3 NSArMDEwMAotQEAgLTgwOSw3ICs4MDksNyBAQCB2ODUwX3B1c2hfZHVtbXlfY2FsbCAoc3RydWN0 IGdkYmFyY2ggKmdkCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi92ODUwLXRkZXAu YwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4NDI5MDQzNCArMDEwMAorKysrIGdkYi03LjUuNTAuMjAx MzAxMTgvZ2RiL3Y4NTAtdGRlcC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDg0MzA3NjA4ICswMTAw CitAQCAtODA4LDcgKzgwOCw3IEBAIHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJj aCAqZ2QKICAgIGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVy IChnZGJhcmNoKTsKICAgIGludCBhcmdyZWc7CiAgICBpbnQgYXJnbnVtOwpAQCAtMTE5Nyw3ICsx MTk3LDcgQEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdjg1MC10ZGVwLmMKICAgIGlu dCBzdGFja19vZmZzZXQ7CiAgCiAgICAvKiBUaGUgb2Zmc2V0IG9udG8gdGhlIHN0YWNrIGF0IHdo aWNoIHdlIHdpbGwgc3RhcnQgY29weWluZyBwYXJhbWV0ZXJzCi1AQCAtODM0LDcgKzgzNCw3IEBA IHY4NTBfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKK0BAIC04MzMsNyArODMz LDcgQEAgdjg1MF9wdXNoX2R1bW15X2NhbGwgKHN0cnVjdCBnZGJhcmNoICpnZAogICAgICAgaW4g Zm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJvbSBmaXJzdCB0byBs YXN0LiAgKi8KICAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQog ICAgICB7CkBAIC0xMjA2LDExICsxMjA2LDExIEBAIEluZGV4OiBnZGItNy41LjAuMjAxMjA5MjYv Z2RiL3Y4NTAtdGRlcC5jCiAgICAgICAgZ2RiX2J5dGUgKnZhbDsKICAgICAgICBnZGJfYnl0ZSB2 YWxidWZbdjg1MF9yZWdfc2l6ZV07CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92 YXgtdGRlcC5jCitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdmF4LXRkZXAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YXgtdGRlcC5jCTIwMTIt MTEtMDcgMjI6NDY6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dk Yi92YXgtdGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNjE4OTg0NTczICswMTAwCi1AQCAtMTE2 LDcgKzExNiw3IEBAIHZheF9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCByZWdjYWNoZSAqcmUKKy0t LSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3ZheC10ZGVwLmMJMjAxMy0wMS0xOCAyMzoz Njo1OS45ODQyOTA0MzQgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi92YXgtdGRl cC5jCTIwMTMtMDEtMTggMjM6Mzc6MTIuNDg0MzA3NjA4ICswMTAwCitAQCAtMTE1LDcgKzExNSw3 IEBAIHZheF9zdG9yZV9hcmd1bWVudHMgKHN0cnVjdCByZWdjYWNoZSAqcmUKICAgIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKICAgIGVudW0g YmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChnZGJhcmNoKTsKICAg IGdkYl9ieXRlIGJ1Zls0XTsKQEAgLTEyMTksNyArMTIxOSw3IEBAIEluZGV4OiBnZGItNy41LjAu MjAxMjA5MjYvZ2RiL3ZheC10ZGVwLmMKICAgIGludCBpOwogIAogICAgLyogV2UgY3JlYXRlIGFu IGFyZ3VtZW50IGxpc3Qgb24gdGhlIHN0YWNrLCBhbmQgbWFrZSB0aGUgYXJndW1lbnQKLUBAIC0x MjUsNyArMTI1LDcgQEAgdmF4X3N0b3JlX2FyZ3VtZW50cyAoc3RydWN0IHJlZ2NhY2hlICpyZQor QEAgLTEyNCw3ICsxMjQsNyBAQCB2YXhfc3RvcmVfYXJndW1lbnRzIChzdHJ1Y3QgcmVnY2FjaGUg KnJlCiAgICAvKiBQdXNoIGFyZ3VtZW50cyBpbiByZXZlcnNlIG9yZGVyLiAgKi8KICAgIGZvciAo aSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgIHsKQEAgLTEyMjgsMTAgKzEyMjgsMTAg QEAgSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmF4LXRkZXAuYwogIAogICAgICAgIHNw IC09IChsZW4gKyAzKSAmIH4zOwogICAgICAgIGNvdW50ICs9IChsZW4gKyAzKSAvIDQ7Ci1JbmRl eDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi94c3Rvcm15MTYtdGRlcC5jCitJbmRleDogZ2RiLTcu NS41MC4yMDEzMDExOC9nZGIveHN0b3JteTE2LXRkZXAuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi94c3Rvcm15MTYtdGRlcC5jCTIwMTItMTEtMDcgMjI6MDA6 NDQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi94c3Rvcm15MTYt dGRlcC5jCTIwMTItMTEtMDcgMjI6NDc6NTcuNjI2OTg0NTYyICswMTAwCistLS0gZ2RiLTcuNS41 MC4yMDEzMDExOC5vcmlnL2dkYi94c3Rvcm15MTYtdGRlcC5jCTIwMTMtMDEtMTggMjM6MzY6NTku OTg0MjkwNDM0ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIveHN0b3JteTE2LXRk ZXAuYwkyMDEzLTAxLTE4IDIzOjM3OjEyLjQ4NDMwNzYwOCArMDEwMAogQEAgLTIzNSw4ICsyMzUs OSBAQCB4c3Rvcm15MTZfcHVzaF9kdW1teV9jYWxsIChzdHJ1Y3QgZ2RiYXJjCiAgICBlbnVtIGJm ZF9lbmRpYW4gYnl0ZV9vcmRlciA9IGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2RiYXJjaCk7CiAgICBD T1JFX0FERFIgc3RhY2tfZGVzdCA9IHNwOwpAQCAtMTI0NCwxMCArMTI0NCwxMCBAQCBJbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi94c3Rvcm15MTYtdGRlcC5jCiAgICBjb25zdCBnZGJfYnl0 ZSAqdmFsOwogICAgY2hhciBidWZbeHN0b3JteTE2X3BjX3NpemVdOwogIAotSW5kZXg6IGdkYi03 LjUuMC4yMDEyMDkyNi9nZGIveHRlbnNhLXRkZXAuYworSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL3h0ZW5zYS10ZGVwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy41LjAuMjAxMjA5MjYu b3JpZy9nZGIveHRlbnNhLXRkZXAuYwkyMDEyLTA1LTE4IDIzOjAyOjUxLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIveHRlbnNhLXRkZXAuYwkyMDEyLTExLTA3IDIy OjQ3OjU3LjYyOTk4NDU1NyArMDEwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIv eHRlbnNhLXRkZXAuYwkyMDEzLTAxLTE4IDIzOjM2OjU5Ljk4NTI5MDQzNiArMDEwMAorKysrIGdk Yi03LjUuNTAuMjAxMzAxMTgvZ2RiL3h0ZW5zYS10ZGVwLmMJMjAxMy0wMS0xOCAyMzozNzoxMi40 ODQzMDc2MDggKzAxMDAKIEBAIC0xNjUzLDggKzE2NTMsNyBAQCB4dGVuc2Ffc3RvcmVfcmV0dXJu X3ZhbHVlIChzdHJ1Y3QgdHlwZSAqCiAgCiAgICAgICAgaWYgKGxlbiA+IChjYWxsc2l6ZSA+IDgg PyA4IDogMTYpKQoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yNG9mMjUucGF0 Y2ggYi9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjRvZjI1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA1OWQ4NDM5Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6Nzk1NDI0LWJpdHBv cy0yNG9mMjUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotaHR0cDovL3Nv dXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0wOS9tc2cwMDE2MC5odG1sCi0KLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEyLzA5LzI2IDIzOjUzOjUzCTEuMTQ3MDkKLSMjIyBzcmMvZ2RiL0No YW5nZUxvZwkyMDEyLzA5LzI3IDA4OjU3OjE0CTEuMTQ3MTAKLSMjIC0xLDMgKzEsMTYgQEAKLSsy MDEyLTA5LTI3ICBTaWRkaGVzaCBQb3lhcmVrYXIgIDxzaWRkaGVzaEByZWRoYXQuY29tPgotKwot KwkqIGdkYnR5cGVzLmMgKGxvb2t1cF9hcnJheV9yYW5nZV90eXBlKTogRXhwYW5kIHBhcmFtZXRl cnMKLSsJTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIHRvIExPTkdFU1QuCi0rCShsb29rdXBfc3Ry aW5nX3JhbmdlX3R5cGUpOiBMaWtld2lzZS4KLSsJKiBnZGJ0eXBlcy5oIChsb29rdXBfYXJyYXlf cmFuZ2VfdHlwZSk6IExpa2V3aXNlLgotKwkobG9va3VwX3N0cmluZ19yYW5nZV90eXBlKTogTGlr ZXdpc2UuCi0rCSogdmFsb3BzLmMgKHZhbHVlX2NzdHJpbmcpOiBFeHBhbmQgcGFyYW1ldGVyIExF TiB0byBzc2l6ZV90LgotKwlFeHBhbmQgSElHSEJPVU5EIHRvIHNzaXplX3QuCi0rCSh2YWx1ZV9z dHJpbmcpOiBMaWtld2lzZS4KLSsJKiB2YWx1ZS5oICh2YWx1ZV9jc3RyaW5nKTogRXhwYW5kIHBh cmFtZXRlciBMRU4gdG8gc3NpemVfdC4KLSsJKHZhbHVlX3N0cmluZyk6IExpa2V3aXNlLgotKwot IDIwMTItMDktMjcgIFlhbyBRaSAgPHlhb0Bjb2Rlc291cmNlcnkuY29tPgotIAotIAlQUiBicmVh a3BvaW50cy8xMzg5OAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZ2RidHlwZXMuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIw MTItMTEtMDcgMjI6MDk6NTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2 L2dkYi9nZGJ0eXBlcy5jCTIwMTItMTEtMDcgMjI6NTA6NDcuMDQ4NzQxMTY0ICswMTAwCi1AQCAt MTAyMiw3ICsxMDIyLDcgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRf dAotIAotIHN0cnVjdCB0eXBlICoKLSBsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0IHR5 cGUgKmVsZW1lbnRfdHlwZSwKLS0JCQkgaW50IGxvd19ib3VuZCwgaW50IGhpZ2hfYm91bmQpCi0r CQkJIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQpCi0gewotICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoIChlbGVtZW50X3R5cGUpOwotICAgc3Ry dWN0IHR5cGUgKmluZGV4X3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2lu dDsKLUBAIC0xMDU4LDcgKzEwNTgsNyBAQCBjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBl ICpyZXN1bHRfCi0gCi0gc3RydWN0IHR5cGUgKgotIGxvb2t1cF9zdHJpbmdfcmFuZ2VfdHlwZSAo c3RydWN0IHR5cGUgKnN0cmluZ19jaGFyX3R5cGUsCi0tCQkJICBpbnQgbG93X2JvdW5kLCBpbnQg aGlnaF9ib3VuZCkKLSsJCQkgIExPTkdFU1QgbG93X2JvdW5kLCBMT05HRVNUIGhpZ2hfYm91bmQp Ci0gewotICAgc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlOwotIAotSW5kZXg6IGdkYi03LjUuMC4y MDEyMDkyNi9nZGIvZ2RidHlwZXMuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjUuMC4yMDEyMDky Ni5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTItMTEtMDcgMjI6MDk6MjkuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9nZGJ0eXBlcy5oCTIwMTItMTEtMDcgMjI6NTE6 NDYuNDQwNjU1ODE3ICswMTAwCi1AQCAtMTY0MCw3ICsxNjQwLDcgQEAgZXh0ZXJuIHN0cnVjdCB0 eXBlICpjcmVhdGVfcmFuZ2VfdHlwZSAocwotIAotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRl X2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICosCi0gCQkJCSAgICAgICBz dHJ1Y3QgdHlwZSAqKTsKLS1leHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90 eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci0rZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29r dXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgTE9OR0VTVCwgTE9OR0VTVCk7Ci0g Ci0gZXh0ZXJuIENPUkVfQUREUiB0eXBlX3JhbmdlX2FueV9maWVsZF9pbnRlcm5hbCAoc3RydWN0 IHR5cGUgKnJhbmdlX3R5cGUsCi0gCQkJCQkJaW50IGZpZWxkbm8pOwotQEAgLTE2NTYsNyArMTY1 Niw3IEBAIGV4dGVybiB2b2lkIGZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICoKLSAKLSBleHRl cm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHR5cGUgKiwKLSAJCQkJCXN0cnVjdCB0eXBlICopOwotLWV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9v a3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci0rZXh0ZXJu IHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIExP TkdFU1QsIExPTkdFU1QpOwotIAotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3NldF90eXBl IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKLSAKLUluZGV4OiBnZGItNy41LjAuMjAx MjA5MjYvZ2RiL3ZhbG9wcy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9y aWcvZ2RiL3ZhbG9wcy5jCTIwMTItMTEtMDcgMjI6NDY6MDAuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWxvcHMuYwkyMDEyLTExLTA3IDIyOjUwOjQ3LjA5MTc0 MTEwNCArMDEwMAotQEAgLTE5MzcsMTEgKzE5MzcsMTEgQEAgdmFsdWVfYXJyYXkgKGludCBsb3di b3VuZCwgaW50IGhpZ2hib3VuZAotIH0KLSAKLSBzdHJ1Y3QgdmFsdWUgKgotLXZhbHVlX2NzdHJp bmcgKGNoYXIgKnB0ciwgaW50IGxlbiwgc3RydWN0IHR5cGUgKmNoYXJfdHlwZSkKLSt2YWx1ZV9j c3RyaW5nIChjaGFyICpwdHIsIHNzaXplX3QgbGVuLCBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlKQot IHsKLSAgIHN0cnVjdCB2YWx1ZSAqdmFsOwotICAgaW50IGxvd2JvdW5kID0gY3VycmVudF9sYW5n dWFnZS0+c3RyaW5nX2xvd2VyX2JvdW5kOwotLSAgaW50IGhpZ2hib3VuZCA9IGxlbiAvIFRZUEVf TEVOR1RIIChjaGFyX3R5cGUpOwotKyAgc3NpemVfdCBoaWdoYm91bmQgPSBsZW4gLyBUWVBFX0xF TkdUSCAoY2hhcl90eXBlKTsKLSAgIHN0cnVjdCB0eXBlICpzdHJpbmd0eXBlCi0gICAgID0gbG9v a3VwX2FycmF5X3JhbmdlX3R5cGUgKGNoYXJfdHlwZSwgbG93Ym91bmQsIGhpZ2hib3VuZCArIGxv d2JvdW5kIC0gMSk7Ci0gCi1AQCAtMTk2MCwxMSArMTk2MCwxMSBAQCB2YWx1ZV9jc3RyaW5nIChj aGFyICpwdHIsIGludCBsZW4sIHN0cnVjCi0gICAgc3RyaW5nIG1heSBjb250YWluIGVtYmVkZGVk IG51bGwgYnl0ZXMuICAqLwotIAotIHN0cnVjdCB2YWx1ZSAqCi0tdmFsdWVfc3RyaW5nIChjaGFy ICpwdHIsIGludCBsZW4sIHN0cnVjdCB0eXBlICpjaGFyX3R5cGUpCi0rdmFsdWVfc3RyaW5nIChj aGFyICpwdHIsIHNzaXplX3QgbGVuLCBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlKQotIHsKLSAgIHN0 cnVjdCB2YWx1ZSAqdmFsOwotICAgaW50IGxvd2JvdW5kID0gY3VycmVudF9sYW5ndWFnZS0+c3Ry aW5nX2xvd2VyX2JvdW5kOwotLSAgaW50IGhpZ2hib3VuZCA9IGxlbiAvIFRZUEVfTEVOR1RIIChj aGFyX3R5cGUpOwotKyAgc3NpemVfdCBoaWdoYm91bmQgPSBsZW4gLyBUWVBFX0xFTkdUSCAoY2hh cl90eXBlKTsKLSAgIHN0cnVjdCB0eXBlICpzdHJpbmd0eXBlCi0gICAgID0gbG9va3VwX3N0cmlu Z19yYW5nZV90eXBlIChjaGFyX3R5cGUsIGxvd2JvdW5kLCBoaWdoYm91bmQgKyBsb3dib3VuZCAt IDEpOwotIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvdmFsdWUuaAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjUuMC4yMDEyMDkyNi5vcmlnL2dkYi92YWx1ZS5oCTIwMTItMTEtMDcgMjI6 MDk6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi92YWx1ZS5o CTIwMTItMTEtMDcgMjI6NTE6MTEuNzQ0NzA1NjE0ICswMTAwCi1AQCAtNTkzLDkgKzU5Myw5IEBA IGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX21hcmsgKHZvaWQpOwotIAotIGV4dGVybiB2b2lk IHZhbHVlX2ZyZWVfdG9fbWFyayAoc3RydWN0IHZhbHVlICptYXJrKTsKLSAKLS1leHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9jc3RyaW5nIChjaGFyICpwdHIsIGludCBsZW4sCi0rZXh0ZXJuIHN0 cnVjdCB2YWx1ZSAqdmFsdWVfY3N0cmluZyAoY2hhciAqcHRyLCBzc2l6ZV90IGxlbiwKLSAJCQkJ ICAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGUpOwotLWV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X3N0cmluZyAoY2hhciAqcHRyLCBpbnQgbGVuLAotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X3N0cmluZyAoY2hhciAqcHRyLCBzc2l6ZV90IGxlbiwKLSAJCQkJICAgc3RydWN0IHR5cGUgKmNo YXJfdHlwZSk7Ci0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYml0c3RyaW5nIChjaGFyICpw dHIsIGludCBsZW4sCi0gCQkJCSAgICAgIHN0cnVjdCB0eXBlICppbmRleF90eXBlKTsKCmRpZmYg LS1naXQgYS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoIGIvZ2RiLXJoYno3OTU0 MjQtYml0cG9zLTI1b2YyNS5wYXRjaAppbmRleCBmYTNhNmJlLi4xYzM5YjllIDEwMDY0NAotLS0g YS9nZGItcmhiejc5NTQyNC1iaXRwb3MtMjVvZjI1LnBhdGNoCisrKyBiL2dkYi1yaGJ6Nzk1NDI0 LWJpdHBvcy0yNW9mMjUucGF0Y2gKQEAgLTQ3LDEzICs0NywxMyBAQCBDb250ZW50LVR5cGU6IHRl eHQveC1wYXRjaAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdAogQ29udGVudC1EaXNw b3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Zjc3LWJvdW5kcy5wYXRjaAogCi1JbmRleDog Z2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuaAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAx MTgvZ2RiL2YtbGFuZy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNS4wLjIwMTIwOTI2Lm9yaWcv Z2RiL2YtbGFuZy5oCTIwMTItMTEtMDcgMjI6MTI6MzkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcuaAkyMDEyLTExLTA3IDIyOjUyOjAyLjY4ODYzMjQ5 OCArMDEwMAotQEAgLTY2LDkgKzY2LDkgQEAgZW51bSBmOTBfcmFuZ2VfdHlwZQotIGV4dGVybiBj aGFyICpyZWFsX21haW5fbmFtZTsJLyogTmFtZSBvZiBtYWluIGZ1bmN0aW9uLiAgKi8KLSBleHRl cm4gaW50IHJlYWxfbWFpbl9jX3ZhbHVlOwkvKiBDX3ZhbHVlIGZpZWxkIG9mIG1haW4gZnVuY3Rp b24uICAqLworLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvZi1sYW5nLmgJMjAxMy0w MS0xOCAyMzozOTo0MC4yMDk1MDA5NjggKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi9mLWxhbmcuaAkyMDEzLTAxLTE4IDIzOjQwOjA0LjAxMDUzMTE3NyArMDEwMAorQEAgLTY1LDkg KzY1LDkgQEAgc3RydWN0IGNvbW1vbl9ibG9jaworICAgc3RydWN0IHN5bWJvbCAqY29udGVudHNb MV07CisgfTsKICAKIC1leHRlcm4gaW50IGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUg Kik7CiArZXh0ZXJuIExPTkdFU1QgZjc3X2dldF91cHBlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqKTsK QEAgLTYzLDExICs2MywxMSBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLWxhbmcu aAogIAogIGV4dGVybiB2b2lkIGY3N19nZXRfZHluYW1pY19hcnJheV9sZW5ndGggKHN0cnVjdCB0 eXBlICopOwogIAotSW5kZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10eXBlcHJpbnQuYwor SW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtdHlwZXByaW50LmMKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy41LjAuMjAxMjA5MjYub3JpZy9nZGIvZi10eXBlcHJpbnQuYwkyMDEyLTExLTA3 IDIyOjAwOjQxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10 eXBlcHJpbnQuYwkyMDEyLTExLTA3IDIyOjUyOjAyLjY4OTYzMjQ5NyArMDEwMAotQEAgLTE4Miw3 ICsxODIsNyBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlCistLS0g Z2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dkYi9mLXR5cGVwcmludC5jCTIwMTMtMDEtMTggMjM6 Mzk6MzcuNTY0NDk3NjIwICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvZi10eXBl cHJpbnQuYwkyMDEzLTAxLTE4IDIzOjM5OjQwLjIxMDUwMDk3MCArMDEwMAorQEAgLTE4MCw3ICsx ODAsNyBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlCiAgCQkJICAg ICBpbnQgc2hvdywgaW50IHBhc3NlZF9hX3B0ciwgaW50IGRlbWFuZ2xlZF9hcmdzLAogIAkJCSAg ICAgaW50IGFycmF5cHJpbnRfcmVjdXJzZV9sZXZlbCkKICB7CkBAIC03Niw3ICs3Niw3IEBAIElu ZGV4OiBnZGItNy41LjAuMjAxMjA5MjYvZ2RiL2YtdHlwZXByaW50LmMKICAKICAgIC8qIE5vIHN0 YXRpYyB2YXJpYWJsZXMgYXJlIHBlcm1pdHRlZCBhcyBhbiBlcnJvciBjYWxsIG1heSBvY2N1ciBk dXJpbmcKICAgICAgIGV4ZWN1dGlvbiBvZiB0aGlzIGZ1bmN0aW9uLiAgKi8KLUBAIC0yMTIsNyAr MjEyLDcgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQorQEAgLTIx MCw3ICsyMTAsNyBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlCiAg CiAgICAgICAgbG93ZXJfYm91bmQgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOwogICAgICAg IGlmIChsb3dlcl9ib3VuZCAhPSAxKQkvKiBOb3QgdGhlIGRlZmF1bHQuICAqLwpAQCAtODUsNyAr ODUsNyBAQCBJbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLXR5cGVwcmludC5jCiAgCiAg ICAgICAgLyogTWFrZSBzdXJlIHRoYXQsIGlmIHdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5 LCB3ZQogICAgICAgICAgIHByaW50IG91dCBhIHdhcm5pbmcgYW5kIHByaW50IHRoZSB1cHBlcmJv dW5kIGFzICcqJy4gICovCi1AQCAtMjIyLDcgKzIyMiw3IEBAIGZfdHlwZV9wcmludF92YXJzcGVj X3N1ZmZpeCAoc3RydWN0IHR5cGUKK0BAIC0yMjAsNyArMjIwLDcgQEAgZl90eXBlX3ByaW50X3Zh cnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZQogICAgICAgIGVsc2UKICAJewogIAkgIHVwcGVyX2Jv dW5kID0gZjc3X2dldF91cHBlcmJvdW5kICh0eXBlKTsKQEAgLTk0LDcgKzk0LDcgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10eXBlcHJpbnQuYwogIAl9CiAgCiAgICAgICAgaWYg KFRZUEVfQ09ERSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpICE9IFRZUEVfQ09ERV9BUlJBWSkK LUBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZAorQEAgLTI4OCw3ICsyODgsNyBAQCB2b2lkCiAgZl90 eXBlX3ByaW50X2Jhc2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFt LCBpbnQgc2hvdywKICAJCSAgIGludCBsZXZlbCkKICB7CkBAIC0xMDMsNyArMTAzLDcgQEAgSW5k ZXg6IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10eXBlcHJpbnQuYwogICAgaW50IGluZGV4Owog IAogICAgUVVJVDsKLUBAIC0zNzMsNyArMzczLDcgQEAgZl90eXBlX3ByaW50X2Jhc2UgKHN0cnVj dCB0eXBlICp0eXBlLCBzdAorQEAgLTM3MCw3ICszNzAsNyBAQCBmX3R5cGVfcHJpbnRfYmFzZSAo c3RydWN0IHR5cGUgKnR5cGUsIHN0CiAgICAgICAgZWxzZQogIAl7CiAgCSAgdXBwZXJfYm91bmQg PSBmNzdfZ2V0X3VwcGVyYm91bmQgKHR5cGUpOwpAQCAtMTEyLDEwICsxMTIsMTAgQEAgSW5kZXg6 IGdkYi03LjUuMC4yMDEyMDkyNi9nZGIvZi10eXBlcHJpbnQuYwogIAl9CiAgICAgICAgYnJlYWs7 CiAgCi1JbmRleDogZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLXZhbHByaW50LmMKK0luZGV4OiBn ZGItNy41LjUwLjIwMTMwMTE4L2dkYi9mLXZhbHByaW50LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny41LjAuMjAxMjA5MjYub3JpZy9nZGIvZi12YWxwcmludC5jCTIwMTItMTEtMDcgMjI6MDk6Mjku MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuNS4wLjIwMTIwOTI2L2dkYi9mLXZhbHByaW50LmMJ MjAxMi0xMS0wNyAyMjo1MjoyMS44ODg2MDQ5MDcgKzAxMDAKKy0tLSBnZGItNy41LjUwLjIwMTMw MTE4Lm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEzLTAxLTE4IDIzOjM5OjM3LjU2NDQ5NzYyMCAr MDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL2YtdmFscHJpbnQuYwkyMDEzLTAxLTE4 IDIzOjM5OjQwLjIxMDUwMDk3MCArMDEwMAogQEAgLTU3LDcgKzU3LDcgQEAgTE9OR0VTVCBmNzdf YXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9SVFJBTgogIAogICNkZWZpbmUgRjc3X0RJTV9CWVRFX1NU UklERShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCgpkaWZmIC0tZ2l0IGEvZ2RiLXJo Yno3OTU0MjQtYml0cG9zLWxhenl2YWx1ZS5wYXRjaCBiL2dkYi1yaGJ6Nzk1NDI0LWJpdHBvcy1s YXp5dmFsdWUucGF0Y2gKaW5kZXggMjBlOGU1MS4uNjRlMTU2NSAxMDA2NDQKLS0tIGEvZ2RiLXJo Yno3OTU0MjQtYml0cG9zLWxhenl2YWx1ZS5wYXRjaAorKysgYi9nZGItcmhiejc5NTQyNC1iaXRw b3MtbGF6eXZhbHVlLnBhdGNoCkBAIC05LDcgKzksNyBAQAogICAgdmFsLT5jb250ZW50cyA9IE5V TEw7CiAgICB2YWwtPm5leHQgPSBhbGxfdmFsdWVzOwogLS0tIC9kZXYvbnVsbAkyMDEyLTEwLTE4 IDExOjA4OjEzLjIwMjMyODIzOSArMDIwMAotKysrIGdkYi03LjUuMC4yMDEyMDkyNi1tNjQtdGVz dC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xvbmdlc3QtdHlwZXMuZXhwCTIwMTItMTEtMDkgMTg6 MTM6NTYuMjg2NTg3OTk0ICswMTAwCisrKysgZ2RiLTcuNS4wLjIwMTIwOTI2LW02NC10ZXN0L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvbG9uZ2VzdC10eXBlcy02NGJpdC5leHAJMjAxMi0xMS0wOSAx ODoxMzo1Ni4yODY1ODc5OTQgKzAxMDAKIEBAIC0wLDAgKzEsNTkgQEAKICsjIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC03MSw3ICs3MSw3IEBA CiArCiArdGVzdCAibmF0aXZlIgogLS0tIC9kZXYvbnVsbAkyMDEyLTEwLTE4IDExOjA4OjEzLjIw MjMyODIzOSArMDIwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9sb25nZXN0LXR5cGVz LmMJMjAxMi0xMS0wOSAxNzowODo1MS4zNzQ0MDYzNDQgKzAxMDAKKysrKyAuL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvbG9uZ2VzdC10eXBlcy02NGJpdC5jCTIwMTItMTEtMDkgMTc6MDg6NTEuMzc0 NDA2MzQ0ICswMTAwCiBAQCAtMCwwICsxLDI4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKCmRpZmYgLS1naXQgYS9nZGItcmhiejg5MDkw MC1wcGMtZGlzLTFvZjIucGF0Y2ggYi9nZGItcmhiejg5MDkwMC1wcGMtZGlzLTFvZjIucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxMWM2YzQuLjAwMDAwMDAKLS0tIGEvZ2Ri LXJoYno4OTA5MDAtcHBjLWRpcy0xb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjI4ICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDEyLTExL21zZzAwMzUy Lmh0bWwKLVN1YmplY3Q6IFJlOiBbUEFUQ0hdIEZpeCBnZGIgZGlzYXNzZW1ibGUgZm9yIHBvd2Vy Ni9wb3dlcjcgaW5zdHJ1Y3Rpb25zCi0KLU9uIFdlZCwgTm92IDE0LCAyMDEyIGF0IDEwOjE2OjM4 QU0gKzEwMzAsIEFsYW4gTW9kcmEgd3JvdGU6Ci0+IFdoYXQgSSB0aGluayBzaG91bGQgaGFwcGVu IGlzIHRoYXQgdGhlIGRlZmF1bHQgaGFuZGxpbmcsIGllLiB0aGUgYmxvY2sKLT4gdGhhdCBzdGFy dHMgd2l0aAotPiAgIGlmICgoZGlhbGVjdCAmIH4ocHBjX2NwdV90KSBQUENfT1BDT0RFXzY0KSA9 PSAwKQotPiBzaG91bGQgYmUgZGVsZXRlZCBhbmQgYSBzd2l0Y2ggb24gaW5mby0+bWFjaCBzZXR0 aW5nIHVwIGRpYWxlY3QgYWRkZWQKLT4gYmVmb3JlIHdlIHBhcnNlIGRpc2Fzc2VtYmxlcl9vcHRp b25zLiAgVGhhdCB3YXkgLW0zMiBhbmQgLW02NCBjYW4KLT4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQg YXMgdGhleSBhcmUgc3VwcG9zZWQgdG8uICBTZWUgYmZkL2FyY2h1cmVzLmMgZm9yCi0+IHZhbHVl cyBvZiBiZmRfbWFjaF9wcGNfKi4KLQotV2VsbCB0aGF0IGlkZWEgZGlkbid0IHR1cm4gb3V0IHRv IGJlIHNpbXBsZS4gIElmIHdlIHdhbnQgdG8gYnJpbmcgdGhlCi1kZWZhdWx0IHVwIHRvIHNvbWV0 aGluZyBtb3JlIHVwLXRvLWRhdGUgdGhhbiB0aGUgY3VycmVudCBwcGM2MDEsIHRoZW4KLXlvdSBy dW4gaW50byBkaWZmaWN1bHR5IHdpdGggInJldGFpbl9tYXNrIiBpbiBwcGNfcGFyc2VfY3B1LiAg Q2hvb3NpbmcKLWFueSBvZiB0aGUgYml0cyBpbiB0aGF0IG1hc2sgYXMgYSBkZWZhdWx0LCBlZy4g UFBDX09QQ09ERV9WU1gsIHJlc3VsdHMKLWluIG5vdCBiZWluZyBhYmxlIHRvIGdldCByaWQgb2Yg dGhvc2UgYml0cy4KLQotTm93IHRoZSBpZGVhIG9mICJyZXRhaW5fbWFzayIgd2FzIHRvIGNvdmVy IGNhc2VzIHdoZXJlIHBlb3BsZSBwYXNzCi1zb21ldGhpbmcgbGlrZSAtbXBwYyAtbWFsdGl2ZWMg KG9yIGV2ZW4gLW1hbHRpdmVjIC1tcHBjKSB0byB0aGUKLWFzc2VtYmxlci4gIEhpc3RvcmljYWxs eSB0aGF0IGhhcyByZXN1bHRlZCBpbiBib3RoIFBQQ19PUENPREVfUFBDIGFuZAotUFBDX09QQ09E RV9BTFRJVkVDIGJlaW5nIHNldDsgIFNvbWUgb3B0aW9ucyBhY2N1bXVsYXRlLiAgU28gSSd2ZQot cmVkb25lIGNvZGUgaGFuZGxpbmcgdGhlc2Ugc3RpY2t5IG9wdGlvbnMgdG8ganVzdCBrZWVwIHRy YWNrIG9mIHRoZQotYml0cyBzZWxlY3RlZCBieSBwcGNfb3B0cy5zdGlja3kuICBBbnkgZGVmYXVs dCBzZWxlY3Rpb24gd29uJ3QgbWFrZQotdGhlc2UgYml0cyBzdGlja3ksIHlvdSdsbCBvbmx5IGdl dCB0aGF0IGVmZmVjdCBmcm9tIC1tYWx0aXZlYywgLW1hbnksCi0tbXNwZSwgLW12bGUgYW5kIC1t dnN4IG9uIHRoZSBjb21tYW5kIGxpbmUgb3IgaW4gLm1hY2hpbmUgZGlyZWN0aXZlcwotKGFuZCBz aW1pbGFybHkgZm9yIHRoZSBjb3JyZXNwb25kaW5nIC1NIGRpc2Fzc2VtYmxlciBvcHRpb25zKS4g IEknbQotbm90IHN1cmUgd2h5IFBQQ19PUENPREVfUE1SIHdhcyBldmVyIGluICJyZXRhaW5fbWFz ayIuICBQZW9wbGUKLWludGVyZXN0ZWQgaW4gVkxFIG1pZ2h0IG5lZWQgdG8gaW52ZXN0aWdhdGUg dGhhdC4KLQotT25lIG9mIHRoZSBlZmZlY3RzIG9mIHVwZGF0aW5nIHRvIGEgcG93ZXI3IGRlZmF1 bHQgaXMgdGhhdCBjb25kaXRpb25hbAotYnJhbmNoIGhpbnRzIGFyZSBkaXNwbGF5ZWQgZm9yICJh dCIgc3R5bGUgaGludHMgcmF0aGVyIHRoYW4gdGhlIG9sZGVyCi0ieSIgaGludHMuICBXaGVuIHVz aW5nICJ5IiBoaW50cyB0aGUgZGlzYXNzZW1ibGVyIGFsd2F5cyBzaG93ZWQgdGhlCi1oaW50LCBl Zy4gImJuZS0iIG9yICJibmUrIi4gIE5vdyB5b3UnbGwgc2VlICJibmUiIG1vc3QgdGltZXMuICBU aGlzCi1tZWFudCB1cGRhdGluZyB0aGUgdGVzdHN1aXRlLiAgSSBtYWRlIG9uZSBnYXMgdGVzdCBk aXNhc3NlbWJsZSBmb3IKLXBsYWluIHBwYyBqdXN0IHRvIGVuc3VyZSB0aGUgb2xkZXIgInkiIGhp bnRzIGNvbnRpbnVlIHRvIGJlIGF2YWlsYWJsZS4KLQotQ29tbWl0dGVkLgotCi1pbmNsdWRlL29w Y29kZS8KLQkqIHBwYy5oIChwcGNfcGFyc2VfY3B1KTogVXBkYXRlIHByb3RvdHlwZS4KLW9wY29k ZXMvCi0JKiBwcGMtZGlzLmMgKHBwY19wYXJzZV9jcHUpOiBBZGQgInN0aWNreSIgcGFyYW0uICBU cmFjayBiaXRzCi0Jc2V0IGZyb20gcHBjX29wdHMuc3RpY2t5IGluIGl0LiAgRGVsZXRlICJyZXRh aW5fbWFzayIuCi0JKHBvd2VycGNfaW5pdF9kaWFsZWN0KTogQ2hvb3NlIGRlZmF1bHQgZGlhbGVj dCBmcm9tIGluZm8tPm1hY2gKLQliZWZvcmUgcGFyc2luZyAtTSBvcHRpb25zLiAgSGFuZGxlIG1v cmUgYmZkX21hY2hfcHBjIHZhcmlhbnRzLgotCVVwZGF0ZSBjb21tb24gZGVmYXVsdCB0byBwb3dl cjcuCi1nYXMvCi0JKiBjb25maWcvdGMtcHBjLmMgKHN0aWNreSk6IE5ldyB2YXIuCi0JKG1kX3Bh cnNlX29wdGlvbiwgcHBjX21hY2hpbmUpOiBVcGRhdGUgcHBjX3BhcnNlX2NwdSBjYWxscy4KLWdh cy90ZXN0c3VpdGUvCi0JKiBnYXMvcHBjL2FzdGVzdDIuZDogUGFzcyAtTXBwYyB0byBvYmpkdW1w LgotbGQvdGVzdHN1aXRlLwotCSogbGQtcG93ZXJwYy9wbHQxLmQ6IFVwZGF0ZSBmb3IgZGVmYXVs dCAiYXQiIGJyYW5jaCBoaW50cy4KLQkqIGxkLXBvd2VycGMvdGxzZXhlLmQ6IExpa2V3aXNlLgot CSogbGQtcG93ZXJwYy90bHNleGV0b2MuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29w dDEuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29wdDFfMzIuZDogTGlrZXdpc2UuCi0J KiBsZC1wb3dlcnBjL3Rsc29wdDIuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29wdDJf MzIuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc29wdDQuZDogTGlrZXdpc2UuCi0JKiBs ZC1wb3dlcnBjL3Rsc29wdDRfMzIuZDogTGlrZXdpc2UuCi0JKiBsZC1wb3dlcnBjL3Rsc3NvLmQ6 IExpa2V3aXNlLgotCSogbGQtcG93ZXJwYy90bHN0b2Nzby5kOiBMaWtld2lzZS4KLQotSW5kZXg6 IGluY2x1ZGUvb3Bjb2RlL3BwYy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1SQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2luY2x1ZGUvb3Bjb2RlL3BwYy5oLHYKLXJldHJpZXZpbmcgcmV2aXNpb24gMS40NAotZGlmZiAt dSAtcCAtcjEuNDQgcHBjLmgKLS0tLSAuL2luY2x1ZGUvb3Bjb2RlL3BwYy5oCTE0IE1heSAyMDEy IDE5OjQ1OjI3IC0wMDAwCTEuNDQKLSsrKyAuL2luY2x1ZGUvb3Bjb2RlL3BwYy5oCTIyIE5vdiAy MDEyIDIyOjQ1OjE4IC0wMDAwCi1AQCAtNDAwLDYgKzQwMCw2IEBAIHN0cnVjdCBwb3dlcnBjX21h Y3JvCi0gZXh0ZXJuIGNvbnN0IHN0cnVjdCBwb3dlcnBjX21hY3JvIHBvd2VycGNfbWFjcm9zW107 Ci0gZXh0ZXJuIGNvbnN0IGludCBwb3dlcnBjX251bV9tYWNyb3M7Ci0gCi0tZXh0ZXJuIHBwY19j cHVfdCBwcGNfcGFyc2VfY3B1IChwcGNfY3B1X3QsIGNvbnN0IGNoYXIgKik7Ci0rZXh0ZXJuIHBw Y19jcHVfdCBwcGNfcGFyc2VfY3B1IChwcGNfY3B1X3QsIHBwY19jcHVfdCAqLCBjb25zdCBjaGFy ICopOwotIAotICNlbmRpZiAvKiBQUENfSCAqLwotSW5kZXg6IG9wY29kZXMvcHBjLWRpcy5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci1SQ1MgZmlsZTogL2N2cy9zcmMvc3JjL29wY29kZXMvcHBjLWRpcy5jLHYKLXJl dHJpZXZpbmcgcmV2aXNpb24gMS42MAotZGlmZiAtdSAtcCAtcjEuNjAgcHBjLWRpcy5jCi0tLS0g Li9vcGNvZGVzL3BwYy1kaXMuYwk1IE9jdCAyMDEyIDE0OjA2OjIwIC0wMDAwCTEuNjAKLSsrKyAu L29wY29kZXMvcHBjLWRpcy5jCTIyIE5vdiAyMDEyIDIyOjQ1OjE5IC0wMDAwCi1AQCAtMjExLDEz ICsyMTEsOCBAQCBnZXRfcG93ZXJwY19kaWFsZWN0IChzdHJ1Y3QgZGlzYXNzZW1ibGVfCi0gLyog SGFuZGxlIC1tIGFuZCAtTSBvcHRpb25zIHRoYXQgc2V0IGNwdSB0eXBlLCBhbmQgLm1hY2hpbmUg YXJnLiAgKi8KLSAKLSBwcGNfY3B1X3QKLS1wcGNfcGFyc2VfY3B1IChwcGNfY3B1X3QgcHBjX2Nw dSwgY29uc3QgY2hhciAqYXJnKQotK3BwY19wYXJzZV9jcHUgKHBwY19jcHVfdCBwcGNfY3B1LCBw cGNfY3B1X3QgKnN0aWNreSwgY29uc3QgY2hhciAqYXJnKQotIHsKLS0gIGNvbnN0IHBwY19jcHVf dCByZXRhaW5fbWFzayA9IChQUENfT1BDT0RFX0FMVElWRUMgfCBQUENfT1BDT0RFX1ZTWAotLQkJ CQkgfCBQUENfT1BDT0RFX1NQRSB8IFBQQ19PUENPREVfQU5ZCi0tCQkJCSB8IFBQQ19PUENPREVf VkxFIHwgUFBDX09QQ09ERV9QTVIpOwotLSAgLyogU3RpY2t5IGJpdHMuICAqLwotLSAgcHBjX2Nw dV90IHJldGFpbl9mbGFncyA9IHBwY19jcHUgJiByZXRhaW5fbWFzazsKLSAgIHVuc2lnbmVkIGlu dCBpOwotIAotICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAocHBjX29wdHMpIC8gc2l6ZW9mIChw cGNfb3B0c1swXSk7IGkrKykKLUBAIC0yMjUsOCArMjIwLDggQEAgcHBjX3BhcnNlX2NwdSAocHBj X2NwdV90IHBwY19jcHUsIGNvbnN0IAotICAgICAgIHsKLSAJaWYgKHBwY19vcHRzW2ldLnN0aWNr eSkKLSAJICB7Ci0tCSAgICByZXRhaW5fZmxhZ3MgfD0gcHBjX29wdHNbaV0uc3RpY2t5OwotLQkg ICAgaWYgKChwcGNfY3B1ICYgfnJldGFpbl9tYXNrKSAhPSAwKQotKwkgICAgKnN0aWNreSB8PSBw cGNfb3B0c1tpXS5zdGlja3k7Ci0rCSAgICBpZiAoKHBwY19jcHUgJiB+KnN0aWNreSkgIT0gMCkK LSAJICAgICAgYnJlYWs7Ci0gCSAgfQotIAlwcGNfY3B1ID0gcHBjX29wdHNbaV0uY3B1OwotQEAg LTIzNSw3ICsyMzAsNyBAQCBwcGNfcGFyc2VfY3B1IChwcGNfY3B1X3QgcHBjX2NwdSwgY29uc3Qg Ci0gICBpZiAoaSA+PSBzaXplb2YgKHBwY19vcHRzKSAvIHNpemVvZiAocHBjX29wdHNbMF0pKQot ICAgICByZXR1cm4gMDsKLSAKLS0gIHBwY19jcHUgfD0gcmV0YWluX2ZsYWdzOwotKyAgcHBjX2Nw dSB8PSAqc3RpY2t5OwotICAgcmV0dXJuIHBwY19jcHU7Ci0gfQotIAotQEAgLTI0NSwxMiArMjQw LDc1IEBAIHN0YXRpYyB2b2lkCi0gcG93ZXJwY19pbml0X2RpYWxlY3QgKHN0cnVjdCBkaXNhc3Nl bWJsZV9pbmZvICppbmZvKQotIHsKLSAgIHBwY19jcHVfdCBkaWFsZWN0ID0gMDsKLSsgIHBwY19j cHVfdCBzdGlja3kgPSAwOwotICAgY2hhciAqYXJnOwotICAgc3RydWN0IGRpc19wcml2YXRlICpw cml2ID0gY2FsbG9jIChzaXplb2YgKCpwcml2KSwgMSk7Ci0gCi0gICBpZiAocHJpdiA9PSBOVUxM KQotICAgICBwcml2ID0gJnByaXZhdGU7Ci0gCi0rICBzd2l0Y2ggKGluZm8tPm1hY2gpCi0rICAg IHsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfNDAzOgotKyAgICBjYXNlIGJmZF9tYWNoX3BwY180 MDNnYzoKLSsgICAgICBkaWFsZWN0ID0gKFBQQ19PUENPREVfUFBDIHwgUFBDX09QQ09ERV80MDMp OwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGJmZF9tYWNoX3BwY180MDU6Ci0rICAgICAgZGlh bGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfNDAzIHwgUFBDX09QQ09ERV80MDUp OwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGJmZF9tYWNoX3BwY182MDE6Ci0rICAgICAgZGlh bGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfNjAxKTsKLSsgICAgICBicmVhazsK LSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfYTM1OgotKyAgICBjYXNlIGJmZF9tYWNoX3BwY19yczY0 aWk6Ci0rICAgIGNhc2UgYmZkX21hY2hfcHBjX3JzNjRpaWk6Ci0rICAgICAgZGlhbGVjdCA9IChQ UENfT1BDT0RFX1BPV0VSIHwgUFBDX09QQ09ERV9QT1dFUjIgfCBQUENfT1BDT0RFXzY0KTsKLSsg ICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfZTUwMDoKLSsgICAgICBkaWFsZWN0 ID0gKFBQQ19PUENPREVfUFBDIHwgUFBDX09QQ09ERV9CT09LRSB8IFBQQ19PUENPREVfU1BFCi0r CQkgfCBQUENfT1BDT0RFX0lTRUwgfCBQUENfT1BDT0RFX0VGUyB8IFBQQ19PUENPREVfQlJMT0NL Ci0rCQkgfCBQUENfT1BDT0RFX1BNUiB8IFBQQ19PUENPREVfQ0FDSEVMQ0sgfCBQUENfT1BDT0RF X1JGTUNJCi0rCQkgfCBQUENfT1BDT0RFX0U1MDApOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNl IGJmZF9tYWNoX3BwY19lNTAwbWM6Ci0rICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8 IFBQQ19PUENPREVfQk9PS0UgfCBQUENfT1BDT0RFX0lTRUwKLSsJCSB8IFBQQ19PUENPREVfUE1S IHwgUFBDX09QQ09ERV9DQUNIRUxDSyB8IFBQQ19PUENPREVfUkZNQ0kKLSsJCSB8IFBQQ19PUENP REVfRTUwME1DKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfZTUwMG1j NjQ6Ci0rICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfQk9PS0Ug fCBQUENfT1BDT0RFX0lTRUwKLSsJCSB8IFBQQ19PUENPREVfUE1SIHwgUFBDX09QQ09ERV9DQUNI RUxDSyB8IFBQQ19PUENPREVfUkZNQ0kKLSsJCSB8IFBQQ19PUENPREVfRTUwME1DIHwgUFBDX09Q Q09ERV82NCB8IFBQQ19PUENPREVfUE9XRVI1Ci0rCQkgfCBQUENfT1BDT0RFX1BPV0VSNiB8IFBQ Q19PUENPREVfUE9XRVI3KTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNf ZTU1MDA6Ci0rICAgICAgZGlhbGVjdCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfQk9P S0UgfCBQUENfT1BDT0RFX0lTRUwKLSsJCSB8IFBQQ19PUENPREVfUE1SIHwgUFBDX09QQ09ERV9D QUNIRUxDSyB8IFBQQ19PUENPREVfUkZNQ0kKLSsJCSB8IFBQQ19PUENPREVfRTUwME1DIHwgUFBD X09QQ09ERV82NCB8IFBQQ19PUENPREVfUE9XRVI0Ci0rCQkgfCBQUENfT1BDT0RFX1BPV0VSNSB8 IFBQQ19PUENPREVfUE9XRVI2Ci0rCQkgfCBQUENfT1BDT0RFX1BPV0VSNyk7Ci0rICAgICAgYnJl YWs7Ci0rICAgIGNhc2UgYmZkX21hY2hfcHBjX2U2NTAwOgotKyAgICAgIGRpYWxlY3QgPSAoUFBD X09QQ09ERV9QUEMgfCBQUENfT1BDT0RFX0JPT0tFIHwgUFBDX09QQ09ERV9JU0VMCi0rCQkgfCBQ UENfT1BDT0RFX1BNUiB8IFBQQ19PUENPREVfQ0FDSEVMQ0sgfCBQUENfT1BDT0RFX1JGTUNJCi0r CQkgfCBQUENfT1BDT0RFX0U1MDBNQyB8IFBQQ19PUENPREVfNjQgfCBQUENfT1BDT0RFX0FMVElW RUMKLSsJCSB8IFBQQ19PUENPREVfQUxUSVZFQzIgfCBQUENfT1BDT0RFX0U2NTAwIHwgUFBDX09Q Q09ERV9QT1dFUjQKLSsJCSB8IFBQQ19PUENPREVfUE9XRVI1IHwgUFBDX09QQ09ERV9QT1dFUjYg fCBQUENfT1BDT0RFX1BPV0VSNyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgYmZkX21hY2hf cHBjX3RpdGFuOgotKyAgICAgIGRpYWxlY3QgPSAoUFBDX09QQ09ERV9QUEMgfCBQUENfT1BDT0RF X0JPT0tFIHwgUFBDX09QQ09ERV9QTVIKLSsJCSB8IFBQQ19PUENPREVfUkZNQ0kgfCBQUENfT1BD T0RFX1RJVEFOKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBiZmRfbWFjaF9wcGNfdmxlOgot KyAgICAgIGRpYWxlY3QgPSAoUFBDX09QQ09ERV9QUEMgfCBQUENfT1BDT0RFX0lTRUwgfCBQUENf T1BDT0RFX1ZMRSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGRlZmF1bHQ6Ci0rICAgICAgZGlhbGVj dCA9IChQUENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfSVNFTCB8IFBQQ19PUENPREVfNjQKLSsJ CSB8IFBQQ19PUENPREVfUE9XRVI0IHwgUFBDX09QQ09ERV9QT1dFUjUgfCBQUENfT1BDT0RFX1BP V0VSNgotKwkJIHwgUFBDX09QQ09ERV9QT1dFUjcgfCBQUENfT1BDT0RFX0FMVElWRUMgfCBQUENf T1BDT0RFX1ZTWAotKwkJIHwgUFBDX09QQ09ERV9BTlkpOwotKyAgICB9Ci0rCi0gICBhcmcgPSBp bmZvLT5kaXNhc3NlbWJsZXJfb3B0aW9uczsKLSAgIHdoaWxlIChhcmcgIT0gTlVMTCkKLSAgICAg ewotQEAgLTI2MCw3ICszMTgsNyBAQCBwb3dlcnBjX2luaXRfZGlhbGVjdCAoc3RydWN0IGRpc2Fz c2VtYmxlCi0gICAgICAgaWYgKGVuZCAhPSBOVUxMKQotIAkqZW5kID0gMDsKLSAKLS0gICAgICBp ZiAoKG5ld19jcHUgPSBwcGNfcGFyc2VfY3B1IChkaWFsZWN0LCBhcmcpKSAhPSAwKQotKyAgICAg IGlmICgobmV3X2NwdSA9IHBwY19wYXJzZV9jcHUgKGRpYWxlY3QsICZzdGlja3ksIGFyZykpICE9 IDApCi0gCWRpYWxlY3QgPSBuZXdfY3B1OwotICAgICAgIGVsc2UgaWYgKHN0cmNtcCAoYXJnLCAi MzIiKSA9PSAwKQotIAlkaWFsZWN0ICY9IH4ocHBjX2NwdV90KSBQUENfT1BDT0RFXzY0OwotQEAg LTI3NCwyMCArMzMyLDYgQEAgcG93ZXJwY19pbml0X2RpYWxlY3QgKHN0cnVjdCBkaXNhc3NlbWJs ZQotICAgICAgIGFyZyA9IGVuZDsKLSAgICAgfQotIAotLSAgaWYgKChkaWFsZWN0ICYgfihwcGNf Y3B1X3QpIFBQQ19PUENPREVfNjQpID09IDApCi0tICAgIHsKLS0gICAgICBpZiAoaW5mby0+bWFj aCA9PSBiZmRfbWFjaF9wcGM2NCkKLS0JZGlhbGVjdCB8PSBQUENfT1BDT0RFXzY0OwotLSAgICAg IGVsc2UKLS0JZGlhbGVjdCAmPSB+KHBwY19jcHVfdCkgUFBDX09QQ09ERV82NDsKLS0gICAgICBp ZiAoaW5mby0+bWFjaCA9PSBiZmRfbWFjaF9wcGNfdmxlKQotLSAgICAgICAgZGlhbGVjdCB8PSBQ UENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfVkxFOwotLSAgICAgIGVsc2UKLS0gICAgICAgIC8q IENob29zZSBhIHJlYXNvbmFibGUgZGVmYXVsdC4gICovCi0tICAgICAgICBkaWFsZWN0IHw9IChQ UENfT1BDT0RFX1BQQyB8IFBQQ19PUENPREVfQ09NTU9OIHwgUFBDX09QQ09ERV82MDEKLS0JCSAg ICB8IFBQQ19PUENPREVfQUxUSVZFQyk7Ci0tICAgIH0KLS0KLSAgIGluZm8tPnByaXZhdGVfZGF0 YSA9IHByaXY7Ci0gICBQT1dFUlBDX0RJQUxFQ1QoaW5mbykgPSBkaWFsZWN0OwotIH0KCmRpZmYg LS1naXQgYS9nZGItcmhiejg5MDkwMC1wcGMtZGlzLTJvZjIucGF0Y2ggYi9nZGItcmhiejg5MDkw MC1wcGMtZGlzLTJvZjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMzc0 ZWMuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYno4OTA5MDAtcHBjLWRpcy0yb2YyLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMTItMTEvbXNnMDA2MjQuaHRtbAotU3ViamVjdDogUmU6IFtQQVRDSF0gRml4IGdk YiBkaXNhc3NlbWJsZSBmb3IgcG93ZXI2L3Bvd2VyNyBpbnN0cnVjdGlvbnMKLQotT24gMTEvMjMv MjAxMiAwMToyOCBBTSwgQWxhbiBNb2RyYSB3cm90ZToKLT4gT25lIG9mIHRoZSBlZmZlY3RzIG9m IHVwZGF0aW5nIHRvIGEgcG93ZXI3IGRlZmF1bHQgaXMgdGhhdCBjb25kaXRpb25hbAotPiBicmFu Y2ggaGludHMgYXJlIGRpc3BsYXllZCBmb3IgImF0IiBzdHlsZSBoaW50cyByYXRoZXIgdGhhbiB0 aGUgb2xkZXIKLT4gInkiIGhpbnRzLiAgV2hlbiB1c2luZyAieSIgaGludHMgdGhlIGRpc2Fzc2Vt YmxlciBhbHdheXMgc2hvd2VkIHRoZQotPiBoaW50LCBlZy4gImJuZS0iIG9yICJibmUrIi4gIE5v dyB5b3UnbGwgc2VlICJibmUiIG1vc3QgdGltZXMuICBUaGlzCi0+IG1lYW50IHVwZGF0aW5nIHRo ZSB0ZXN0c3VpdGUuICBJIG1hZGUgb25lIGdhcyB0ZXN0IGRpc2Fzc2VtYmxlIGZvcgotPiBwbGFp biBwcGMganVzdCB0byBlbnN1cmUgdGhlIG9sZGVyICJ5IiBoaW50cyBjb250aW51ZSB0byBiZSBh dmFpbGFibGUuCi0+IAotPiBDb21taXR0ZWQuCi0KLVRoYW5rcyBhIGxvdCBmb3IgdGhlIHBhdGNo LCBBbGFuLiBUaGlzIGFsc28gZml4ZXMgdGhlIGlzc3VlcyB3aXRoIGdkYgotZGlzYXNzZW1ibGUg Zm9yIHBvd2VyNiBhbmQgcG93ZXI3IGluc3RydWN0aW9ucy4KLQotV2l0aCB0aGVzZSBjaGFuZ2Vz IG9uIHBvd2VycGNfaW5pdF9kaWFsZWN0KCksIEknZCBzdWdnZXN0IHRvIHJlbW92ZSB0aGUgaW5m by0+bWFjaAotY2hlY2tpbmcgZnJvbSBnZGIuIE9rPwotCi0tLQotRWRqdW5pb3IKLQotMjAxMi0x MS0yMyAgRWRqdW5pb3IgTWFjaGFkbyAgPGVtYWNoYWRvQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQot CSogcnM2MDAwLXRkZXAuYyAoZ2RiX3ByaW50X2luc25fcG93ZXJwYyk6IFJlbW92ZSBpbmZvLT5t YWNoIGNoZWNraW5nLAotCXNpbmNlIG5vdyBpdCBpcyBiZWluZyBkb25lIGluIGJpbnV0aWxzJyBw b3dlcnBjX2luaXRfZGlhbGVjdCgpLgotCi0tLS0KLSBnZGIvcnM2MDAwLXRkZXAuYyB8ICAgMTUg LS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlcyBjaGFuZ2VkLCAwIGluc2VydGlvbnMoKyksIDE1IGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL3JzNjAwMC10ZGVwLmMgYi9nZGIvcnM2MDAw LXRkZXAuYwotaW5kZXggMTc5N2NjNS4uMDdiODFiYyAxMDA2NDQKLS0tLSBhL2dkYi9yczYwMDAt dGRlcC5jCi0rKysgYi9nZGIvcnM2MDAwLXRkZXAuYwotQEAgLTMwODQsMjEgKzMwODQsNiBAQCBm aW5kX3ZhcmlhbnRfYnlfYXJjaCAoZW51bSBiZmRfYXJjaGl0ZWN0dXJlIGFyY2gsIHVuc2lnbmVk IGxvbmcgbWFjaCkKLSBzdGF0aWMgaW50Ci0gZ2RiX3ByaW50X2luc25fcG93ZXJwYyAoYmZkX3Zt YSBtZW1hZGRyLCBkaXNhc3NlbWJsZV9pbmZvICppbmZvKQotIHsKLS0gIGlmICghaW5mby0+ZGlz YXNzZW1ibGVyX29wdGlvbnMpCi0tICAgIHsKLS0gICAgICAvKiBXaGVuIGRlYnVnZ2luZyBFNTAw IGJpbmFyaWVzIGFuZCBkaXNhc3NlbWJsaW5nIGNvZGUgY29udGFpbmluZwotLQkgRTUwMC1zcGVj aWZpYyAoU1BFKSBpbnN0cnVjdGlvbnMsIG9uZSBzb21ldGltZXMgc2VlcyBBbHRpVmVjCi0tCSBp bnN0cnVjdGlvbnMgaW5zdGVhZC4gIFRoZSBvcGNvZGUgc3BhY2VzIGZvciBTUEUgaW5zdHJ1Y3Rp b25zCi0tCSBhbmQgQWx0aVZlYyBpbnN0cnVjdGlvbnMgb3ZlcmxhcCwgYW5kIHNwZWNpZml5aW5n IHRoZSAiYW55IiBjcHUKLS0JIGxvb2tzIGZvciBBbHRpVmVjIGluc3RydWN0aW9ucyBmaXJzdC4g IElmIHdlIGtub3cgd2UncmUKLS0JIGRlYnVnZ2luZyBhbiBFNTAwIGJpbmFyeSwgaG93ZXZlciwg d2UgY2FuIHNwZWNpZnkgdGhlICJlNTAweDIiCi0tCSBjcHUgYW5kIGdldCBtdWNoIG1vcmUgc2Fu ZSBkaXNhc3NlbWJseSBvdXRwdXQuICAqLwotLSAgICAgIGlmIChpbmZvLT5tYWNoID09IGJmZF9t YWNoX3BwY19lNTAwKQotLQlpbmZvLT5kaXNhc3NlbWJsZXJfb3B0aW9ucyA9ICJlNTAweDIiOwot LSAgICAgIGVsc2UKLS0JaW5mby0+ZGlzYXNzZW1ibGVyX29wdGlvbnMgPSAiYW55IjsKLS0gICAg fQotLQotICAgaWYgKGluZm8tPmVuZGlhbiA9PSBCRkRfRU5ESUFOX0JJRykKLSAgICAgcmV0dXJu IHByaW50X2luc25fYmlnX3Bvd2VycGMgKG1lbWFkZHIsIGluZm8pOwotICAgZWxzZQotLS0gCi0x LjcuMQotCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdj YzQ0LnBhdGNoCmluZGV4IDI0MTc5NWEuLjE3MmQwNjcgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1n Y2M0NC5wYXRjaAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAK IFNvbWUgZnVuY3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBn Y2M0NCBhbmQgZ2ZvcnRyYW40NCBhcwogdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5h cmllcyBhcmUgZnJvbSBnY2MtNC4xLgogCi1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAu MjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMi0wNy0wMyAx NzozMDowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEyLTA3LTAzIDE3OjUwOjU3Ljk5OTIwNzU0MCArMDIw MAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3Zs YS5leHAJMjAxMy0wMS0xOCAyMzo0MzowNC40NTU3NTYzNjIgKzAxMDAKKysrKyBnZGItNy41LjUw LjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEzLTAxLTE4IDIzOjQz OjA4LjA4Mjc2MTE2NCArMDEwMAogQEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlIHZs YQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKQEAgLTMyLDEwICszMiwxMCBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKICAgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogICAgICByZXR1cm4gLTEK ICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Jy ZWFrLWludGVycC5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAx MjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMi0w Ny0wMyAxNzo0NDo0NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAzL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEyLTA3LTAzIDE3OjUwOjU4 LjAwMDIwNzUzOSArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMy0wMS0xOCAyMzo0MzowNC40NTY3NTYz NjUgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAkyMDEzLTAxLTE4IDIzOjQzOjA4LjA4Mjc2MTE2NCArMDEwMAogQEAg LTM0LDkgKzM0LDI5IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mb10gewogICAgICByZXR1cm4gLTEK ICB9CkBAIC02NywxNSArNjcsMTYgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAK LUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29t bW9uLWJsb2NrLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAky MDEyLTA3LTAzIDE3OjM2OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTItMDctMDMg MTc6NTA6NTguMDAxMjA3NTM3ICswMjAwCi1AQCAtMjAsNyArMjAsMjUgQEAgc2V0IHRlc3RmaWxl ICJjb21tb24tYmxvY2siCi0gc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCi0gc2V0IGJpbmZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorLS0tIGdkYi03LjUuNTAuMjAxMzAx MTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMy0w MS0xOCAyMzo0MzowOC4wODI3NjExNjQgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEzLTAxLTE4IDIzOjQ0 OjIzLjA0Nzg1NjE4MiArMDEwMAorQEAgLTIyLDggKzIyLDI1IEBAIGlmIHtbc2tpcF9mb3J0cmFu X3Rlc3RzXX0gewogIAotLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjkwIHF1aWV0fV0gIT0g IiIgfSB7Cisgc3RhbmRhcmRfdGVzdGZpbGUgLmY5MAorIAorLWlmIHtbcHJlcGFyZV9mb3JfdGVz dGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gXAorLQkgJHNyY2ZpbGUge2RlYnVnIGY5 MCBxdWlldH1dfSB7CiArIyBUZW1wb3JhcmlseSBwcm92aWRlIGY5MGNvbXBpbGVyPWdmb3J0cmFu NDQgc2F2aW5nIHRoZSBvcmlnaW5hbCB2YWx1ZSBhcm91bmQuCiArCiArc2V0IGJvYXJkIFt0YXJn ZXRfaW5mbyBuYW1lXQpAQCAtODcsMjEgKzg4LDIxIEBAIEluZGV4OiBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogK30KICtzZXRf Ym9hcmRfaW5mbyBmOTBjb21waWxlciBnZm9ydHJhbjQ0CiArCi0rc2V0IGVyciBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUge2RlYnVnIGY5MCBxdWlldH1dCisrc2V0IGVyciBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rl c3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHNyY2ZpbGUge2RlYnVnIGY5MCBxdWlldH1dCiArCiAr dW5zZXRfYm9hcmRfaW5mbyBmOTBjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjkwY29t cGlsZXJdIHsKICsgICAgc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIgJG9sZF9mOTBjb21waWxl cgogK30KICsKLStpZiAgeyAkZXJyICE9ICIiIH0gewotICAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSAke3NyY2ZpbGV9IgorK2lmIHskZXJyfSB7CiAgICAgIHJldHVybiAtMQogIH0KLUlu ZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYt c3RyaWRlLmV4cAorIAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAky MDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCTIwMTItMDctMDMg MTc6NTA6NTguMDAyMjA3NTM1ICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEzLTAxLTE4IDIzOjQz OjA0LjQ1Njc1NjM2NSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDguMDgzNzYx MTQ4ICswMTAwCiBAQCAtMjcsNyArMjcsMjUgQEAKICBzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRl CiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCkBAIC0xMjksMTAgKzEzMCwxMCBAQCBJbmRl eDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0 cmlkZS5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAorSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R5bmFtaWMuZXhwCTIwMTItMDctMDMgMTc6MzA6MDcuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhw CTIwMTItMDctMDMgMTc6NTA6NTguMDAyMjA3NTM1ICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEz MDExOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAJMjAxMy0wMS0x OCAyMzo0MzowNC40NTc3NTYzNjcgKzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAJMjAxMy0wMS0xOCAyMzo0MzowOC4wODM3 NjExNDggKzAxMDAKIEBAIC0yNSw3ICsyNSwyNSBAQCBzZXQgdGVzdGZpbGUgImR5bmFtaWMiCiAg c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMTYwLDEwICsxNjEsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAu MjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAogICAgICB1bnRl c3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1J bmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJh cnktbW9kdWxlLmV4cAorSW5kZXg6IGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUw LjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5l eHAJMjAxMi0wNi0yNSAyMjo1MTozNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIw MTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCTIwMTIt MDctMDMgMTc6NTI6NTcuNjY2MDYyOTgxICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDExOC5v cmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCTIwMTMtMDEt MTggMjM6NDM6MDQuNDU3NzU2MzY3ICswMTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEzLTAxLTE4IDIzOjQz OjA4LjA4Mzc2MTE0OCArMDEwMAogQEAgLTIzLDE2ICsyMywzNCBAQCBpZiBbZ2V0X2NvbXBpbGVy X2luZm9dIHsKICAgICByZXR1cm4gLTEKICB9CkBAIC0yMDMsMTAgKzIwNCwxMCBAQCBJbmRleDog Z2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9k dWxlLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAg ICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL21vZHVsZS5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQu NTAuMjAxMjA3MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAx Mi0wNi0yNSAyMjo1MTozNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy40LjUwLjIwMTIwNzAz L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDEyLTA3LTAzIDE3OjUzOjU2 LjQ2NDk5MjA4NiArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMy0wMS0xOCAyMzo0MzowNC40NTc3NTYzNjcg KzAxMDAKKysrKyBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bW9kdWxlLmV4cAkyMDEzLTAxLTE4IDIzOjQzOjA4LjA4Mzc2MTE0OCArMDEwMAogQEAgLTE1LDcg KzE1LDI1IEBACiAgCiAgc3RhbmRhcmRfdGVzdGZpbGUgLmY5MApAQCAtMjM0LDEwICsyMzUsMTAg QEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9t b2R1bGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy40LjUwLjIwMTIw NzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAorSW5kZXg6IGdkYi03LjUu NTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuNC41MC4yMDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RyaW5nLmV4cAkyMDEyLTA3LTAzIDE3OjMwOjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIw MTItMDctMDMgMTc6NTA6NTguMDA1MjA3NTMyICswMjAwCistLS0gZ2RiLTcuNS41MC4yMDEzMDEx OC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEzLTAxLTE4IDIz OjQzOjA0LjQ1Nzc1NjM2NyArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDguMDgzNzYxMTQ4 ICswMTAwCiBAQCAtMjMsNyArMjMsMjUgQEAgc2V0IHRlc3RmaWxlICJzdHJpbmciCiAgc2V0IHNy Y2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfQpAQCAtMjY1LDEwICsyNjYsMTAgQEAgSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3 MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiAgICAgIHVudGVzdGVkICJD b3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBn ZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhw CitJbmRleDogZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29t cC1zdGVwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjQuNTAuMjAxMjA3MDMub3JpZy9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEyLTA3LTAzIDE3OjM2OjIxLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDYyMDc1MzEgKzAyMDAK Ky0tLSBnZGItNy41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9v bXAtc3RlcC5leHAJMjAxMy0wMS0xOCAyMzo0MzowNC40NTg3NTYzNjkgKzAxMDAKKysrKyBnZGIt Ny41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCTIw MTMtMDEtMTggMjM6NDM6MDguMDgzNzYxMTQ4ICswMTAwCiBAQCAtMTUsNyArMTUsMjYgQEAKICAK ICBzZXQgdGVzdGZpbGUgIm9tcC1zdGVwIgpAQCAtMjk3LDEwICsyOTgsMTAgQEAgSW5kZXg6IGdk Yi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAK ICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCitJbmRleDogZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTItMDYtMjUgMjI6NTE6MzUuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2 ZWQtdHlwZS5leHAJMjAxMi0wNy0wMyAxNzo1NTo0Ni41ODM4NTg4NDkgKzAyMDAKKy0tLSBnZGIt Ny41LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5 cGUuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDQuNDU4NzU2MzY5ICswMTAwCisrKysgZ2RiLTcuNS41 MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAx My0wMS0xOCAyMzo0MzowOC4wODQ3NjExMzUgKzAxMDAKIEBAIC0yMiw3ICsyMiwyNSBAQCBpZiB7 IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEKICAKICBzdGFuZGFyZF90ZXN0Zmls ZSAuZjkwCkBAIC0zMjgsMTAgKzMyOSwxMCBAQCBJbmRleDogZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKICAgICAgcmV0dXJuIC0x CiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdWJhcnJheS5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuNC41MC4y MDEyMDcwMy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTIt MDYtMjUgMjI6NTE6MzUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuNC41MC4yMDEyMDcwMy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEyLTA3LTAzIDE3OjU2OjIw LjQ1NDgxODE5OCArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEzLTAxLTE4IDIzOjQzOjA0LjQ1ODc1NjM2 OSArMDEwMAorKysrIGdkYi03LjUuNTAuMjAxMzAxMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdWJhcnJheS5leHAJMjAxMy0wMS0xOCAyMzo0MzowOC4wODQ3NjExMzUgKzAxMDAKIEBAIC0y Miw3ICsyMiwyNSBAQCBpZiB7IFtza2lwX2ZvcnRyYW5fdGVzdHNdIH0geyByZXR1cm4gLTEKICAK ICBzdGFuZGFyZF90ZXN0ZmlsZSAuZgpAQCAtMzU5LDEwICszNjAsMTAgQEAgSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAKICAg ICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjQuNTAuMjAxMjA3MDMvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCitJbmRleDogZ2RiLTcuNS41MC4yMDEz MDExOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy40LjUwLjIwMTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy90bHMtc2VwZGVidWcuZXhwCTIwMTItMDctMDMgMTc6MzI6MDUuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuNC41MC4yMDEyMDcwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBk ZWJ1Zy5leHAJMjAxMi0wNy0wMyAxNzo1MDo1OC4wMDcyMDc1MzAgKzAyMDAKKy0tLSBnZGItNy41 LjUwLjIwMTMwMTE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcu ZXhwCTIwMTMtMDEtMTggMjM6NDM6MDQuNDU5NzU2MzcxICswMTAwCisrKysgZ2RiLTcuNS41MC4y MDEzMDExOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMy0w MS0xOCAyMzo0MzowOC4wODQ3NjExMzUgKzAxMDAKIEBAIC0zMiw3ICszMiwyNSBAQCBzZXQgYmlu c2hhcmVkZGVidWdmaWxlICR7b2JqZGlyfS8ke3N1YmRpCiAgCiAgIyBGSVhNRTogZ2NjIGRlcGVu ZGVuY3kgKC1XbCwtc29uYW1lKS4KQEAgLTM5MCwxMCArMzkxLDEwIEBAIEluZGV4OiBnZGItNy40 LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAog ICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IGxpYnJhcnkiCiAgICAgIHJldHVy biAtMQogIH0KLUluZGV4OiBnZGItNy40LjUwLjIwMTIwNzAzL2dkYi90ZXN0c3VpdGUvbGliL3By ZWxpbmstc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy41LjUwLjIwMTMwMTE4L2dkYi90ZXN0c3Vp dGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy40LjUwLjIw MTIwNzAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTA3 LTAzIDE3OjQ0OjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjQuNTAuMjAxMjA3MDMvZ2Ri L3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAkyMDEyLTA3LTAzIDE3OjUwOjU4LjAw ODIwNzUyOSArMDIwMAorLS0tIGdkYi03LjUuNTAuMjAxMzAxMTgub3JpZy9nZGIvdGVzdHN1aXRl L2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDQuNDU5NzU2MzcxICsw MTAwCisrKysgZ2RiLTcuNS41MC4yMDEzMDExOC9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1 cHBvcnQuZXhwCTIwMTMtMDEtMTggMjM6NDM6MDguMDg0NzYxMTM1ICswMTAwCiBAQCAtMTE5LDkg KzExOSwzMSBAQCBwcm9jIGZpbGVfY29weSB7c3JjIGRlc3R9IHsKICBwcm9jIGJ1aWxkX2V4ZWN1 dGFibGVfb3duX2xpYnMge3Rlc3RuYW1lIGV4ZWN1dGFibGUgc291cmNlcyBvcHRpb25zIHtpbnRl cnAgIiJ9IHtkaXIgIiJ9fSB7CiAgICAgIGdsb2JhbCBvYmpkaXIgc3ViZGlyCgpkaWZmIC0tZ2l0 IGEvZ2RiLXVwc3RyZWFtLnBhdGNoIGIvZ2RiLXVwc3RyZWFtLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAzNTUxMjQ3Li4wMDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZZSTogc2V0IGR3el9maWxlIGluIGR3 YXJmMnJlYWQuYwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTItMTIv bXNnMDAzNTQuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMi0xMi9t c2cwMDA1OC5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzEyLzExIDE4OjQ1OjIz CTEuMTQ5MDQKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEyLzEyLzExIDE5OjUwOjUyCTEuMTQ5 MDUKLSMjIC0xLDUgKzEsOSBAQAotIDIwMTItMTItMTEgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVk aGF0LmNvbT4KLSAKLSsJKiBkd2FyZjJyZWFkLmMgKGR3YXJmMl9nZXRfZHd6X2ZpbGUpOiBTZXQg J2R3el9maWxlJy4KLSsKLSsyMDEyLTEyLTExICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5j b20+Ci0rCi0gCSogZHNyZWMuYyAocmVwb3J0X3RyYW5zZmVyX3BlcmZvcm1hbmNlKTogRG9uJ3Qg ZGVjbGFyZS4KLSAJKGxvYWRfc3JlYyk6IFVzZSBnZXR0aW1lb2ZkYXksIHByaW50X3RyYW5zZmVy X3BlcmZvcm1hbmNlLgotIAkqIHN5bWZpbGUuYyAocmVwb3J0X3RyYW5zZmVyX3BlcmZvcm1hbmNl KTogUmVtb3ZlLgotLS0tIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTIvMTIvMTAgMjI6MDI6MzQJ MS43MjAKLSsrKyBzcmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEyLzEyLzExIDE5OjUwOjUzCTEuNzIx Ci1AQCAtMjExMiw2ICsyMTEyLDcgQEAKLSAKLSAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKLSAK LSsgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ZHd6X2ZpbGUgPSByZXN1bHQ7Ci0gICByZXR1cm4gcmVz dWx0OwotIH0KLSAMCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCAwNTVj ZDdmLi5mNDE0YWEzIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMzAs MTEgKzMwLDExIEBAIE5hbWU6ICV7P3NjbF9wcmVmaXh9Z2RiCiAlZ2xvYmFsIHNuYXAgICAgICAg MjAxMjA4MTcKICMgU2VlIHRpbWVzdGFtcCBvZiBzb3VyY2UgZ251bGliIGluc3RhbGxlZCBpbnRv IGdkYi9nbnVsaWIvIC4KICVnbG9iYWwgc25hcGdudWxpYiAyMDEyMDYyMwotVmVyc2lvbjogNy41 LjEKK1ZlcnNpb246IDcuNS41MC4yMDEzMDExOAogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250 YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJl YW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2ll cyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDM1JXs/ZGlzdH0KK1JlbGVh c2U6IDElez9kaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRoIGV4Y2VwdGlv bnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BMKyBhbmQgTEdQ THYyKyBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDogRGV2ZWxvcG1lbnQvRGVidWdn ZXJzCkBAIC0yNjEsNyArMjYxLDcgQEAgUGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2ODktZXhlYy1m cm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCiAjIEJhY2twb3J0ZWQgZml4dXBzIHBvc3QgdGhlIHNv dXJjZSB0YXJiYWxsLgogI1hkcm9wOiBKdXN0IGJhY2twb3J0cy4KLVBhdGNoMjMyOiBnZGItdXBz dHJlYW0ucGF0Y2gKKyNQYXRjaDIzMjogZ2RiLXVwc3RyZWFtLnBhdGNoCiAKICMgVGVzdGNhc2Ug Zm9yIFBQQyBQb3dlcjYvREZQIGluc3RydWN0aW9ucyBkaXNhc3NlbWJseSAoQlogMjMwMDAwKS4K ICM9ZmVkb3JhdGVzdCtwcGMKQEAgLTM3NCwxMCArMzc0LDYgQEAgUGF0Y2gzMjk6IGdkYi02Ljgt YnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0Y2gKICM9cHVzaCt3b3JrOiBUaGlzIGZpeCBpcyBp bmNvcnJlY3QuCiBQYXRjaDMzMDogZ2RiLTYuOC1iejQzNjAzNy1yZWctbm8tbG9uZ2VyLWFjdGl2 ZS5wYXRjaAogCi0jIE1ha2UgdGhlIEdEQiBxdWl0IHByb2Nlc3Npbmcgbm9uLWFib3J0YWJsZSB0 byBjbGVhbnVwIGV2ZXJ5dGhpbmcgcHJvcGVybHkuCi0jPXB1c2g6IEl0IHdhcyB1c2VmdWwgb25s eSBhZnRlciBnZGItNi44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2ggLgot UGF0Y2gzMzE6IGdkYi02LjgtcXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKLQogIyBbUkhFTDVdIFdv cmthcm91bmQga2VybmVsIGZvciBkZXRhY2hpbmcgU0lHU1RPUHBlZCBwcm9jZXNzZXMgKEJaIDgw OTM4MikuCiAjPWZlZG9yYQogUGF0Y2gzMzU6IGdkYi1yaGVsNS1jb21wYXQucGF0Y2gKQEAgLTQz MywxMiArNDI5LDYgQEAgUGF0Y2gzOTc6IGdkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBh dGNoCiAjPWZlZG9yYXRlc3Q6IGNjYWNoZSBpcyByYXJlbHkgdXNlZCBhbmQgaXQgaXMgZXZlbiBm aXhlZCBub3cuCiBQYXRjaDQwMzogZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoCiAKLSMgSW1w bGVtZW50IGBpbmZvIGNvbW1vbicgZm9yIEZvcnRyYW4uCi0jPXB1c2gKLVBhdGNoNDA0OiBnZGIt Zm9ydHJhbi1jb21tb24tcmVkdWNlLnBhdGNoCi0jPXB1c2gKLVBhdGNoNDA1OiBnZGItZm9ydHJh bi1jb21tb24ucGF0Y2gKLQogIyBUZXN0Y2FzZSBmb3IgIkRvIG5vdCBtYWtlIHVwIGxpbmUgaW5m b3JtYXRpb24iIGZpeCBieSBEYW5pZWwgSmFjb2Jvd2l0ei4KICM9ZmVkb3JhdGVzdAogUGF0Y2g0 MDc6IGdkYi1saW5lbm8tbWFrZXVwLXRlc3QucGF0Y2gKQEAgLTQ3NiwxMCArNDY2LDYgQEAgUGF0 Y2g0OTE6IGdkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaAogIz1kcm9wK3dvcms6IEluZmVy aW9yIG9iamVjdHMgc2hvdWxkIGJlIHJlYWQgaW4gcGFydHMsIHRoZW4gdGhpcyBwYXRjaCBnZXRz IG9ic29sZXRlZC4KIFBhdGNoNDk2OiBnZGItYno1NjgyNDgtb29tLWlzLWVycm9yLnBhdGNoCiAK LSMgRml4IGdjb3JlIHdyaXRlciBmb3IgLVdsLC16LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQp LgotIz1wdXNoOiBUaGVyZSBpcyBkaWZmZXJlbnQgcGF0Y2ggb24gZ2RiLXBhdGNoZXMsIHdhaXRp bmcgbm93IGZvciByZXNvbHV0aW9uIGluIGtlcm5lbC4KLVBhdGNoNTA0OiBnZGItYno2MjM3NDkt Z2NvcmUtcmVscm8ucGF0Y2gKLQogIyBWZXJpZnkgR0RCIFB5dGhvbiBidWlsdC1pbiBmdW5jdGlv biBnZGIuc29saWJfYWRkcmVzcyBleGlzdHMgKEJaICMgNjM0MTA4KS4KICM9ZmVkb3JhdGVzdAog UGF0Y2g1MjY6IGdkYi1iejYzNDEwOC1zb2xpYl9hZGRyZXNzLnBhdGNoCkBAIC01MTIsOCArNDk4 LDYgQEAgUGF0Y2g1Nzk6IGdkYi03LjIuNTAtc3BhcmMtYWRkLXdvcmthcm91bmQtdG8tYnJva2Vu LWRlYnVnLWZpbGVzLnBhdGNoCiAKICMgRml4IGRsb3BlbiBvZiBsaWJwdGhyZWFkLnNvLCBwYXRj aGVkIGdsaWJjIHJlcXVpcmVkIChHYXJ5IEJlbnNvbiwgQlogNjY5NDMyKS4KICM9cHVzaAotUGF0 Y2g2MTg6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS0xb2Y3LnBhdGNoCi1QYXRjaDcxNzogZ2RiLWRs b3Blbi1zdGFwLXByb2JlLTJvZjcucGF0Y2gKIFBhdGNoNzE4OiBnZGItZGxvcGVuLXN0YXAtcHJv YmUtM29mNy5wYXRjaAogUGF0Y2g3MTk6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS00b2Y3LnBhdGNo CiBQYXRjaDcyMDogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLTVvZjcucGF0Y2gKQEAgLTU1MCw3ICs1 MzQsNyBAQCBQYXRjaDY1NzogZ2RiLWF0dGFjaC1mYWlsLXJlYXNvbnMtNW9mNWNvbmZpZ3VyZS5w YXRjaAogUGF0Y2g2NjE6IGdkYi1zdGFsZS1mcmFtZV9pbmZvLnBhdGNoCiAKICMgV29ya2Fyb3Vu ZCBQUiBsaWJjLzE0MTY2IGZvciBpbmZlcmlvciBjYWxscyBvZiBzdHJzdHIuCi0jPXB1c2grd29y azogQnV0IHB1c2ggaXQgdG8gZ2xpYmMuCisjPWZlZG9yYTogQ29tcGF0aWJpbGl0eSB3aXRoIFJI RUxzICh1bmNoZWNrZWQgd2hpY2ggb25lcykuCiBQYXRjaDY5MDogZ2RiLWdsaWJjLXN0cnN0ci13 b3JrYXJvdW5kLnBhdGNoCiAKICMgSW5jbHVkZSB0ZXN0Y2FzZSBmb3IgYFVuYWJsZSB0byBzZWUg YSB2YXJpYWJsZSBpbnNpZGUgYSBtb2R1bGUgKFhMRiknIChCWiA4MjM3ODkpLgpAQCAtNTYyLDUw ICs1NDYsMTggQEAgUGF0Y2g2OTg6IGdkYi1yaGVsNS45LXRlc3RjYXNlLXhsZi12YXItaW5zaWRl LW1vZC5wYXRjaAogIz1mZWRvcmF0ZXN0CiBQYXRjaDcwMzogZ2RiLXJoYnotODE4MzQzLXNldC1z b2xpYi1hYnNvbHV0ZS1wcmVmaXgtdGVzdGNhc2UucGF0Y2gKIAotIyBJbXBsZW1lbnQgTWluaURl YnVnSW5mbyBGLTE4IEZlYXR1cmUgY29uc3VtZXIgKEFsZXhhbmRlciBMYXJzc29uLCBCWiA4MzQw NjgpLgotIz1mZWRvcmEKLVBhdGNoNzE2OiBnZGItbWluaWRlYnVnaW5mby5wYXRjaAotCi0jIEZp eCBjcmFzaCBwcmludGluZyBjbGFzc2VzIChCWiA4NDkzNTcsIFRvbSBUcm9tZXkpLgotUGF0Y2g3 MjY6IGdkYi1wcmludC1jbGFzcy5wYXRjaAotCi0jIFBlcm1pdCBwYXNzaW5nIHBvaW50ZXJzIGFz IGFkZHJlc3MgbnVtYmVyIGV2ZW4gZm9yIEMrKyBtZXRob2RzIChLZWl0aCBTZWl0eikuCi1QYXRj aDcyODogZ2RiLWNoZWNrLXR5cGUucGF0Y2gKLQotIyBlbnRyeSB2YWx1ZXM6IEZpeCByZXNvbHZp bmcgaW4gaW5saW5lZCBmcmFtZXMuCi1QYXRjaDcyOTogZ2RiLWVudHJ5dmFsLWlubGluZWQucGF0 Y2gKLQogIyBGaXggYEdEQiBjYW5ub3QgYWNjZXNzIHN0cnVjdCBtZW1iZXIgd2hvc2Ugb2Zmc2V0 IGlzIGxhcmdlciB0aGFuIDI1Nk1CJwogIyAoUkggQlogNzk1NDI0KS4KLVBhdGNoNzk3OiBnZGIt cmhiejc5NTQyNC1iaXRwb3MtMDZvZjI1LnBhdGNoCi1QYXRjaDc5ODogZ2RiLXJoYno3OTU0MjQt Yml0cG9zLTA3b2YyNS5wYXRjaAotUGF0Y2g3OTk6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0wOG9m MjUucGF0Y2gKLVBhdGNoODAwOiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMDlvZjI1LnBhdGNoCi1Q YXRjaDgwMTogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTEwb2YyNS5wYXRjaAotUGF0Y2g4MDI6IGdk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy0xMW9mMjUucGF0Y2gKLVBhdGNoODAzOiBnZGItcmhiejc5NTQy NC1iaXRwb3MtMTJvZjI1LnBhdGNoCi1QYXRjaDgwNDogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTEz b2YyNS5wYXRjaAotUGF0Y2g4MDU6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0xNG9mMjUucGF0Y2gK LVBhdGNoODA2OiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMTVvZjI1LnBhdGNoCi1QYXRjaDgwNzog Z2RiLXJoYno3OTU0MjQtYml0cG9zLTE2b2YyNS5wYXRjaAotUGF0Y2g4MDg6IGdkYi1yaGJ6Nzk1 NDI0LWJpdHBvcy0xN29mMjUucGF0Y2gKLVBhdGNoODA5OiBnZGItcmhiejc5NTQyNC1iaXRwb3Mt MThvZjI1LnBhdGNoCi1QYXRjaDgxMDogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTE5b2YyNS5wYXRj aAogUGF0Y2g4MTE6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yMG9mMjUucGF0Y2gKIFBhdGNoODEy OiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMjFvZjI1LnBhdGNoCiBQYXRjaDgxMzogZ2RiLXJoYno3 OTU0MjQtYml0cG9zLTIyb2YyNS5wYXRjaAogUGF0Y2g4MTQ6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBv cy0yM29mMjUucGF0Y2gKLVBhdGNoODE1OiBnZGItcmhiejc5NTQyNC1iaXRwb3MtMjRvZjI1LnBh dGNoCiBQYXRjaDgxNjogZ2RiLXJoYno3OTU0MjQtYml0cG9zLTI1b2YyNS5wYXRjaAogUGF0Y2g4 MTc6IGdkYi1yaGJ6Nzk1NDI0LWJpdHBvcy0yNW9mMjUtdGVzdC5wYXRjaAogUGF0Y2g4MTg6IGdk Yi1yaGJ6Nzk1NDI0LWJpdHBvcy1sYXp5dmFsdWUucGF0Y2gKIAotIyBGaXggRFdfT1BfR05VX2lt cGxpY2l0X3BvaW50ZXIgb2Zmc2V0IGJ1ZyAoVG9tIFRyb21leSkuCi1QYXRjaDgxOTogZ2RiLWlt cGxpY2l0cG9pbnRlci1vZmZzZXQucGF0Y2gKLQotIyBbcHBjKl0gRml4IFBvd2VyUEMgZGlzYXNz ZW1ibHkgcmVncmVzc2lvbiAoQWxhbiBNb2RyYSwgRWRqdW5pb3IgTWFjaGFkbykuCi1QYXRjaDgy MDogZ2RiLXJoYno4OTA5MDAtcHBjLWRpcy0xb2YyLnBhdGNoCi1QYXRjaDgyMTogZ2RiLXJoYno4 OTA5MDAtcHBjLWRpcy0yb2YyLnBhdGNoCisjIEZpeCBnZGIuZm9ydHJhbi9jb21tb24tYmxvY2su ZXhwIGluIFBJRSBtb2RlLgorUGF0Y2g4MjM6IGdkYi1jb21tb25ibG9jay1waWUucGF0Y2gKIAog JWlmIDAleyE/cmhlbDoxfSB8fCAwJXs/cmhlbH0gPiA2CiAjIFJMX1NUQVRFX0ZFRE9SQV9HREIg d291bGQgbm90IGJlIGZvdW5kIGZvcjoKQEAgLTgwNiw3ICs3NTgsNyBAQCBmaW5kIC1uYW1lICIq LmluZm8qInx4YXJncyBybSAtZgogJXBhdGNoMiAtcDEKIAogJXBhdGNoMzQ5IC1wMQotJXBhdGNo MjMyIC1wMQorI3BhdGNoMjMyIC1wMQogJXBhdGNoMSAtcDEKICVwYXRjaDMgLXAxCiAKQEAgLTg2 OSw3ICs4MjEsNiBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBhdGNoMzIw IC1wMQogJXBhdGNoMzI5IC1wMQogJXBhdGNoMzMwIC1wMQotJXBhdGNoMzMxIC1wMQogJXBhdGNo MzQzIC1wMQogJXBhdGNoMzQ4IC1wMQogJXBhdGNoMzYwIC1wMQpAQCAtODc5LDggKzgzMCw2IEBA IGZpbmQgLW5hbWUgIiouaW5mbyoifHhhcmdzIHJtIC1mCiAlcGF0Y2gzOTIgLXAxCiAlcGF0Y2gz OTcgLXAxCiAlcGF0Y2g0MDMgLXAxCi0lcGF0Y2g0MDQgLXAxCi0lcGF0Y2g0MDUgLXAxCiAlcGF0 Y2gzODkgLXAxCiAlcGF0Y2gzOTQgLXAxCiAlcGF0Y2g0MDcgLXAxCkBAIC04OTQsMTQgKzg0Mywx MSBAQCBmaW5kIC1uYW1lICIqLmluZm8qInx4YXJncyBybSAtZgogJXBhdGNoNDkwIC1wMQogJXBh dGNoNDkxIC1wMQogJXBhdGNoNDk2IC1wMQotJXBhdGNoNTA0IC1wMQogJXBhdGNoNTI2IC1wMQog JXBhdGNoNTQyIC1wMQogJXBhdGNoNTQ3IC1wMQogJXBhdGNoNTQ4IC1wMQogJXBhdGNoNTc5IC1w MQotJXBhdGNoNjE4IC1wMQotJXBhdGNoNzE3IC1wMQogJXBhdGNoNzE4IC1wMQogJXBhdGNoNzE5 IC1wMQogJXBhdGNoNzIwIC1wMQpAQCAtOTE5LDM1ICs4NjUsMTQgQEAgZmluZCAtbmFtZSAiKi5p bmZvKiJ8eGFyZ3Mgcm0gLWYKICVwYXRjaDY5MCAtcDEKICVwYXRjaDY5OCAtcDEKICVwYXRjaDcw MyAtcDEKLSVwYXRjaDcxNiAtcDEKLSVwYXRjaDcyNiAtcDEKLSVwYXRjaDcyOCAtcDEKLSVwYXRj aDcyOSAtcDEKLSVwYXRjaDc5NyAtcDEKLSVwYXRjaDc5OCAtcDEKLSVwYXRjaDc5OSAtcDEKLSVw YXRjaDgwMCAtcDEKLSVwYXRjaDgwMSAtcDEKLSVwYXRjaDgwMiAtcDEKLSVwYXRjaDgwMyAtcDEK LSVwYXRjaDgwNCAtcDEKLSVwYXRjaDgwNSAtcDEKLSVwYXRjaDgwNiAtcDEKLSVwYXRjaDgwNyAt cDEKLSVwYXRjaDgwOCAtcDEKLSVwYXRjaDgwOSAtcDEKLSVwYXRjaDgxMCAtcDEKICVwYXRjaDgx MSAtcDEKICVwYXRjaDgxMiAtcDEKICVwYXRjaDgxMyAtcDEKICVwYXRjaDgxNCAtcDEKLSVwYXRj aDgxNSAtcDEKICVwYXRjaDgxNiAtcDEKICVwYXRjaDgxNyAtcDEKICVwYXRjaDgxOCAtcDEKLSVw YXRjaDgxOSAtcDEKLSVwYXRjaDgyMCAtcDEKLSVwYXRjaDgyMSAtcDEKKyVwYXRjaDgyMyAtcDEK IAogJXBhdGNoMzkzIC1wMQogJWlmIDAleyE/ZWw1OjF9IHx8IDAlez9zY2w6MX0KQEAgLTE0NDYs NiArMTM3MSw5IEBAIGZpCiAlZW5kaWYgIyAwJXshP2VsNToxfSB8fCAiJXtfdGFyZ2V0X2NwdX0i ID09ICJub2FyY2giCiAKICVjaGFuZ2Vsb2cKKyogU2F0IEphbiAxOSAyMDEzIEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuNS41MC4yMDEzMDExOC0xLmZjMTkK Ky0gUmViYXNlIHRvIEZTRiBHREIgNy41LjUwLjIwMTMwMTE4IChwcmUtNy42IHNuYXBzaG90KS4K KwogKiBTdW4gSmFuIDEzIDIwMTMgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy41LjEtMzUuZmMxOAogLSBbdGVzdHN1aXRlXSBGaXggZ2RiLW9ycGhhbnJpcHBl ci5jIGxvY2t1cCBvbiBGLTE3ICgvZGV2L3B0cy8qIGdsaWJjIGNob3duKS4KIApAQCAtMzAxNCw3 ICsyOTQyLDcgQEAgZmkKICogU3VuIE9jdCAxNCAyMDA3IEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNi0zNgogLSBGaXggaGFyZHdhcmUgd2F0Y2hwb2ludHMg YWZ0ZXIgaW5mZXJpb3IgZm9ya3Mtb2ZmIHNvbWUgcHJvY2Vzcy4KIAotKiBGcmkgT2N0IDEzIDIw MDcgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNi42LTM1Cisq IFNhdCBPY3QgMTMgMjAwNyBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4gLSA2LjYtMzUKIC0gRml4IG5vbi10aHJlYWRlZCB3YXRjaHBvaW50cyBDVFJMLUMgcmVncmVz c2lvbiBvbiBgc2V0IGZvbGxvdyBjaGlsZCcuCiAKICogRnJpIE9jdCAxMiAyMDA3IEphbiBLcmF0 b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNi0zNApAQCAtMzE2MSw3ICsz MDg5LDcgQEAgZmkKICogTW9uIEphbiAxNSAyMDA3IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9j aHZpbEByZWRoYXQuY29tPiAtIDYuNS0yNwogLSBGaXggdGhlIHRlc3RzdWl0ZSByZXN1bHRzIGJy b2tlbiBpbiA2LjUtMjYsIHN0b3AgaW52YWxpZCB0ZXN0c3VpdGUgcnVucy4KIAotKiBGcmkgSmFu IDEzIDIwMDcgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNi41 LTI2CisqIFNhdCBKYW4gMTMgMjAwNyBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4gLSA2LjUtMjYKIC0gRml4IHVud2luZGluZyBvZiBub24tZGVidWcgKC5laF9mcmFt ZSkgUFBDIGNvZGUsIEFuZHJlYXMgU2Nod2FiIChCWiAxNDA1MzIpLgogLSBGaXggdW53aW5kaW5n IG9mIGRlYnVnICguZGVidWdfZnJhbWUpIFBQQyBjb2RlLCB3b3JrYXJvdW5kIEdDQyAoQlogMTQw NTMyKS4KIC0gRml4IG1pc3NpbmcgdGVzdHN1aXRlIC5sb2cgb3V0cHV0IG9mIHRlc3RjYXNlcyB1 c2luZyBnZXRfY29tcGlsZXJfaW5mbygpLgpAQCAtMzE5NSwxNiArMzEyMywxNiBAQCBmaQogKiBT YXQgTm92IDI1IDIwMDYgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ IC0gNi41LTE4CiAtIEZpeCByZWFkbGluZSBoaXN0b3J5IGZvciBpbnB1dCBtb2RlIGNvbW1hbmRz IGxpa2UgYGNvbW1hbmQnIChCWiAyMTU4MTYpLgogCi0qIFdlZCBOb3YgMTYgMjAwNiBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjUtMTcKKyogVGh1IE5vdiAx NiAyMDA2IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNS0x NwogLSBCdWdmaXggdGVzdGNhc2UgdHlwbyBvZiBnZGItNi41LTE2LgogCi0qIFdlZCBOb3YgMTYg MjAwNiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjUtMTYK KyogVGh1IE5vdiAxNiAyMDA2IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPiAtIDYuNS0xNgogLSBQcm92aWRlIHRlc3RjYXNlIGZvciBhY2Nlc3NpbmcgdGhlIGxhc3Qg YWRkcmVzcyBzcGFjZSBieXRlLgogCi0qIFdlZCBOb3YgIDkgMjAwNiBKYW4gS3JhdG9jaHZpbCA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjUtMTUKKyogVGh1IE5vdiAgOSAyMDA2IEph biBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNS0xNQogLSBGaXgg cmVhZGxpbmUgc2VnZmF1bHQgb24gZXhjZXNzaXZlbHkgbG9uZyBoYW5kLXR5cGVkIGxpbmVzLgog Ci0qIFNhdCBOb3YgIDIgMjAwNiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0 LmNvbT4gLSA2LjUtMTQKKyogVGh1IE5vdiAgMiAyMDA2IEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNS0xNAogLSBGaXggIj8/IiByZXNvbHZpbmcgb2Ygc3lt Ym9scyBmcm9tIChub24tcHJlbGlua2VkKSBkZWJ1Z2luZm8gcGFja2FnZXMuCiAtIEZpeCAiPz8i IHJlc29sdmluZyBvZiBzeW1ib2xzIGZyb20gb3ZlcmxhcHBpbmcgZnVuY3Rpb25zIChuYW5vc2xl ZXAoMykpLgogLSBBbHNvIGRpc2FibGUgdGVzdGNhc2UgImNoZWNrcG9pbnQuZXhwIiBmb3IgYSBw b3NzaWJsZSBrZXJuZWwgQnVnIDIwNzAwMi4KQEAgLTMyMjcsNyArMzE1NSw3IEBAIGZpCiAtIFN1 cHBvcnQgSVB2NiBmb3IgZ2Ric2VydmVyIChCWiAxOTgzNjUpLgogLSBUZW1wb3JhcmlseSBkaXNh YmxlIHRlc3RjYXNlICJjaG5nLXN5bXMuZXhwIiBmb3IgYSBwb3NzaWJsZSBrZXJuZWwgQnVnIDIw NzAwMi4KIAotKiBXZWQgU2VwIDIxIDIwMDYgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+IC0gNi41LTkKKyogVGh1IFNlcCAyMSAyMDA2IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDYuNS05CiAtIEZpeCBjcmFzaCBvbiBDKysgc3lt Ym9sIGZhaWxpbmcgdG8gYmUgZGVtYW5nbGVkIChCWiAyMDY4MTMpLgogLSBGaXggYXR0YWNoIHRv IHN0b3BwZWQgcHJvY2Vzcywgc3VwZXJzZWRlIGBnZGItNi4zLWF0dGFjaC1zdG9wLTIwMDUxMDEx LnBhdGNoJy4KIC0gRml4IFRMUyBzeW1ib2xzIHJlc29sdmluZyBmb3Igb2JqZWN0cyB3aXRoIHNl cGFyYXRlIC5kZWJ1ZyBmaWxlICgtZGVidWdpbmZvKS4KQEAgLTM3NjIsMTEgKzM2OTAsMTEgQEAg QnVnemlsbGEgMTM1NjMzCiAtIEZvciA2NC1iaXQgUFBDLCBjb252ZXJ0IF9kbF9kZWJ1Z19zdGF0 ZSBkZXNjcmlwdG9yIGludG8gYSBjb2RlIGFkZHJlc3MuCiAtIEZpeCAtLWlnbm9yZSBvcHRpb24u CiAKLSogTW9uIE9jdCAxMCAyMDA0IEFuZHJldyBDYWduZXkgPGNhZ25leUByZWRoYXQuY29tPiAt IDEuMjAwNDAwNjA3LjQwCisqIFN1biBPY3QgMTAgMjAwNCBBbmRyZXcgQ2FnbmV5IDxjYWduZXlA cmVkaGF0LmNvbT4gLSAxLjIwMDQwMDYwNy40MAogLSBEaXNhYmxlIGF0dGFjaC1waWUuZXhwIHRl c3QsIGhhbmdzIG9uIGFtZDY0IHdpdGhvdXQgYXV4di4KIC0gTW92ZSBwaWUgdGVzdHMgdG8gcGll LgogCi0qIE1vbiBPY3QgMTAgMjAwNCBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNvbT4g LSAxLjIwMDQwMDYwNy4zOQorKiBTdW4gT2N0IDEwIDIwMDQgQW5kcmV3IENhZ25leSA8Y2FnbmV5 QHJlZGhhdC5jb20+IC0gMS4yMDA0MDA2MDcuMzkKIC0gRml4IGNvbW1lbnQgYnVnIGluIHNpZ3N0 ZXAuZXhwLgogCiAqIFRodSBPY3QgMDcgMjAwNCBKZWZmIEpvaG5zdG9uIDxqam9obnN0bkByZWRo YXQuY29tPiAtIDEuMjAwNDAwNjA3LjM4CkBAIC0zOTM5LDE3ICszODY3LDE3IEBAIEJ1Z3ppbGxh IDEzNTYzMwogKiBUdWUgTWFyIDMwIDIwMDQgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0 LmNvbT4gLSAwLjIwMDQwMjIzLjEzCiAtIEZpeCB0ZXN0c3VpdGUgZ2xpdGNoZXMuCiAKLSogVGh1 IE1hciAyNCAyMDA0IEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDA0 MDIyMy4xMgorKiBXZWQgTWFyIDI0IDIwMDQgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0 LmNvbT4gLSAwLjIwMDQwMjIzLjEyCiAtIEZpeCB0eXBvLgogCi0qIFRodSBNYXIgMjQgMjAwNCBF bGVuYSBaYW5ub25pIDxlemFubm9uaUByZWRoYXQuY29tPiAtIDAuMjAwNDAyMjMuMTEKKyogV2Vk IE1hciAyNCAyMDA0IEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDA0 MDIyMy4xMQogLSBNYWtlIGdkYiBjb21waWxlIHcvbyB3YXJuaW5ncyB3aXRoIGdjYy0zLjQuCiAt IFJlZW5hYmxlIFBJRSBzdXBwb3J0IGNvZGUuCiAKLSogV2VkIE1hciAyMyAyMDA0IEVsZW5hIFph bm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDA0MDIyMy4xMAorKiBUdWUgTWFyIDIz IDIwMDQgRWxlbmEgWmFubm9uaSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAwLjIwMDQwMjIzLjEw CiAtIEJ1bXAgdmVyc2lvbiBudW1iZXIKIAotKiBXZWQgTWFyIDIzIDIwMDQgRWxlbmEgWmFubm9u aSA8ZXphbm5vbmlAcmVkaGF0LmNvbT4gLSAwLjIwMDQwMjIzLjkKKyogVHVlIE1hciAyMyAyMDA0 IEVsZW5hIFphbm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDA0MDIyMy45CiAtIHRl bXBvcmFyaWx5IGRpc2FibGUgUElFIHN1cHBvcnQuCiAtIEFkZCBzZWN0aW9uIHRvIG9ic29sZXRl IGdkYjY0IHBhY2thZ2UuCiAKQEAgLTQxMzgsNyArNDA2Niw3IEBAIHRvIHBvaW50ZXJzIHdoZW4g dGhlIGFkZHJlc3MgaXMgaW4gdGhlICIub3BkIiBzZWN0aW9uLgogKiBXZWQgQXVnIDA2IDIwMDMg QW5kcmV3IENhZ25leSA8Y2FnbmV5QHJlZGhhdC5jb20+IC0gMC4yMDAzMDcxMC4xMAogLSBTeW5j IHRvIGdkYi01LjMuOTAtc3luYy0yMDAzMDgwNi5wYXRjaC4KIAotKiBXZWQgSnVsIDI5IDIwMDMg QW5kcmV3IENhZ25leSA8Y2FnbmV5QHJlZGhhdC5jb20+IC0gMC4yMDAzMDcxMC45CisqIFR1ZSBK dWwgMjkgMjAwMyBBbmRyZXcgQ2FnbmV5IDxjYWduZXlAcmVkaGF0LmNvbT4gLSAwLjIwMDMwNzEw LjkKIC0gYWRkIHg4Ni02NCBpMzg2IGZpeGVzCiAKICogVHVlIEp1bCAyOSAyMDAzIEVsZW5hIFph bm5vbmkgPGV6YW5ub25pQHJlZGhhdC5jb20+IC0gMC4yMDAzMDcxMC44CkBAIC00NTI1LDcgKzQ0 NTMsNyBAQCBHZW5lcmFsIHJldmFtcC4KICogRnJpIE1hciAxNiAyMDAxIFRyb25kIEVpdmluZCBH bG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIGJ1aWxkIHdpdGggb2xkIGhlYWRlcnMsIG5ldyBj b21waWxlcgogCi0qIFdlZCBNYXIgMTYgMjAwMSBUcm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0By ZWRoYXQuY29tPgorKiBGcmkgTWFyIDE2IDIwMDEgVHJvbmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdA cmVkaGF0LmNvbT4KIC0gbmV3IHNuYXBzaG90CiAKICogTW9uIEZlYiAyNiAyMDAxIFRyb25kIEVp dmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CkBAIC00NTQ4LDcgKzQ0NzYsNyBAQCBHZW5l cmFsIHJldmFtcC4KICogRnJpIEphbiAxOSAyMDAxIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVn QHJlZGhhdC5jb20+CiAtIG5ldyBzbmFwc2hvdAogCi0qIFRodSBEZWMgMjAgMjAwMCBUcm9uZCBF aXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPgorKiBXZWQgRGVjIDIwIDIwMDAgVHJvbmQg RWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KIC0gbmV3IHNuYXBzaG90CiAKICogTW9u IERlYyAwNCAyMDAwIFRyb25kIEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CkBAIC00 NTY4LDcgKzQ0OTYsNyBAQCBHZW5lcmFsIHJldmFtcC4KICogV2VkIEF1ZyAwOSAyMDAwIFRyb25k IEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIGFkZGVkIHBhdGNoIGZyb20gR0RC IHRlYW0gZm9yIEMrKyBzeW1ib2wgaGFuZGxpbmcKIAotKiBNb24gSnVsIDI1IDIwMDAgVHJvbmQg RWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KKyogVHVlIEp1bCAyNSAyMDAwIFRyb25k IEVpdmluZCBHbG9tc3JvZCA8dGVnQHJlZGhhdC5jb20+CiAtIHVwZ3JhZGUgdG8gQ1ZTIHNuYXBz aG90CiAtIGV4Y2x1ZGVhcmNoIFNQQVJDLCBidWlsZCBvbiBJQTYxCiAKQEAgLTQ1ODEsNyArNDUw OSw3IEBAIEdlbmVyYWwgcmV2YW1wLgogKiBTdW4gSnVsIDAyIDIwMDAgVHJvbmQgRWl2aW5kIEds b21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KIC0gcmVidWlsZAogCi0qIEZyaSBKdW4gMDggMjAwMCBU cm9uZCBFaXZpbmQgR2xvbXNyb2QgPHRlZ0ByZWRoYXQuY29tPgorKiBUaHUgSnVuIDA4IDIwMDAg VHJvbmQgRWl2aW5kIEdsb21zcm9kIDx0ZWdAcmVkaGF0LmNvbT4KIC0gdXNlICUlY29uZmlndXJl LCAlJW1ha2VpbnN0YWxsLCAlJXtfaW5mb2Rpcn0sICUle19tYW5kaXJ9LAogICBhbmQgJSV7X3Rt cHBhdGh9CiAtIHRoZSBpbnN0YWxsIHNjcmlwdHMgIGZvciBpbmZvIGFyZSBicm9rZW4odGhleSBk b24ndCBjYXJlIGFib3V0CkBAIC00NjIwLDcgKzQ1NDgsNyBAQCBzaWd0cmFtcCwgc3BhcmMsIHhy ZWYsIGFuZCB0aHJlYWRzIHBhdGNoZXMuICBVcGRhdGUgc3BhcmNtaW4gcGF0Y2guCiAqIE1vbiBB dWcgMjMgMTk5OSBKaW0gS2luZ2RvbgogLSBPbWl0IHJlYWRsaW5lIG1hbnBhZ2UuCiAKLSogVHVl IEF1ZyA3IDE5OTkgSmltIEtpbmdkb24KKyogU2F0IEF1ZyAgNyAxOTk5IEppbSBLaW5nZG9uCiAt IFJlbW92ZSBILkouIEx1J3MgcGF0Y2hlcyAodGhleSBoYWQgYmVlbiBjb21tZW50ZWQgb3V0KS4K IC0gQWRkIHNpZ3RyYW1wIHBhdGNoIChmcm9tIGdkYi5jeWdudXMuY29tKSBhbmQgdGhyZWFkcyBw YXRjaCAoYWRhcHRlZAogZnJvbSBjb2RlIGZ1c2lvbiBDRC1ST00pLgoKZGlmZiAtLWdpdCBhL3Nv dXJjZXMgYi9zb3VyY2VzCmluZGV4IDZmMjQyOWYuLjEwYTU1OTcgMTAwNjQ0Ci0tLSBhL3NvdXJj ZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAKIDQ5ODEzMDdhYTk2MTliYmVjNWI3MzI2 MWU0ZTQxYzhkICBnZGItbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLTNmNDhm NDY4YjI0NDQ3Y2YyNDgyMDA1NGZmNmU4NWIxICBnZGItNy41LjEudGFyLmJ6MgorODg5ZjYyYWQ5 OWEwNDFkYWY1MTQzYzYxYTU1OWNmMmYgIGdkYi03LjUuNTAuMjAxMzAxMTgudGFyLmJ6Mgo=