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] gdb-17.2-rebase-f44: - Upgrade to the FSF GDB snapshot: 7.0.50.20100116 Date: Sat, 27 Jun 2026 23:54:29 GMT Message-ID: <178260446995.1.8121183274788273226.rpms-gdb-8c4c91efd97a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 8c4c91efd97a1be5b8b19a449c10c776485ade2e ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogOGM0YzkxZWZkOTdhMWJlNWI4YjE5YTQ0OWMxMGM3NzY0ODVh ZGUyZQogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3Jh cHJvamVjdC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDEtMTZUMjI6MzI6MTArMDA6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzY0ODEvLTE4MzgzIGluIDQ1IGZpbGUocykKICAgICAg ICAgICAgVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9nZGIvYy84 YzRjOTFlZmQ5N2ExYmU1YjhiMTlhNDQ5YzEwYzc3NjQ4NWFkZTJlP2JyYW5jaD1nZGItMTcuMi1y ZWJhc2UtZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIC0gVXBncmFkZSB0byB0aGUg RlNGIEdEQiBzbmFwc2hvdDogNy4wLjUwLjIwMTAwMTE2Ci0gYXJjaGVyLWphbmtyYXRvY2h2aWwt ZmVkb3JhMTMgY29tbWl0OgogICAgODE4MTBhMjBiMmQyYzNiZjE4ZTE1MWRlM2NkZGZjOTY0NDVi M2M0NgotIFtleHByLWN1bXVsYXRpdmVdIEFyY2hlciBicmFuY2ggaXMgbWlzc2luZyBpbiB0aGlz IHJlbGVhc2UuCi0gVXBkYXRlIHJwbS5vcmcjNzYgd29ya2Fyb3VuZCBmb3IgcnBtLTQuOCB1c2lu ZyBsaWJycG0uc28uMS4KLSBEaXNzZWN0IGFyY2hlci1qYW5rcmF0b2NodmlsLW1pc2MgaW50byBQ YXRjaDQwMy4uLlBhdGNoNDA4LgotIFNvbWUgcmVncmVzc2lvbnMgZXhpc3QgaW4gdGhpcyByZWxl YXNlLgoKLS0tCmRpZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2c2lnbm9yZQppbmRleCBjNWM4 MDQ2Li42NWUyNTM2IDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisrKyBiLy5jdnNpZ25vcmUKQEAg LTEsMiArMSwyIEBACi1nZGItNy4wLjEudGFyLmJ6MgorZ2RiLTcuMC41MC4yMDEwMDExNi50YXIu YnoyCiBsaWJzdGRjKystdjMtcHl0aG9uLXIxNTE3OTgudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dk Yi02LjMtbGFyZ2UtY29yZS0yMDA1MTIwNi5wYXRjaCBiL2dkYi02LjMtbGFyZ2UtY29yZS0yMDA1 MTIwNi5wYXRjaAppbmRleCAyODc2Yjc1Li42Zjk0NDAyIDEwMDY0NAotLS0gYS9nZGItNi4zLWxh cmdlLWNvcmUtMjAwNTEyMDYucGF0Y2gKKysrIGIvZ2RiLTYuMy1sYXJnZS1jb3JlLTIwMDUxMjA2 LnBhdGNoCkBAIC0yNSwxMSArMjUsMTEgQEAKIAogCVBvcnQgdG8gR0RCLTYuNy4KIAotSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3N5bWZpbGUtbWVtLmMKK0luZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi9zeW1maWxlLW1lbS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4y MDA5MDkwOS5vcmlnL2dkYi9zeW1maWxlLW1lbS5jCTIwMDktMDctMDIgMTk6MjE6MDYuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS1tZW0uYwkyMDA5 LTA5LTA5IDE5OjA2OjU3LjAwMDAwMDAwMCArMDIwMAotQEAgLTU2LDYgKzU2LDE0IEBACistLS0g Z2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zeW1maWxlLW1lbS5jCTIwMTAtMDEtMDEgMDg6 MzE6NDIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmls ZS1tZW0uYwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAorQEAgLTU3LDYgKzU3 LDE0IEBACiAgI2luY2x1ZGUgImVsZi9jb21tb24uaCIKICAKICAKQEAgLTQ0LDcgKzQ0LDcgQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3N5bWZpbGUtbWVtLmMKICAvKiBSZWFkIGlu ZmVyaW9yIG1lbW9yeSBhdCBBRERSIHRvIGZpbmQgdGhlIGhlYWRlciBvZiBhIGxvYWRlZCBvYmpl Y3QgZmlsZQogICAgIGFuZCByZWFkIGl0cyBpbi1jb3JlIHN5bWJvbHMgb3V0IG9mIGluZmVyaW9y IG1lbW9yeS4gIFRFTVBMIGlzIGEgYmZkCiAgICAgcmVwcmVzZW50aW5nIHRoZSB0YXJnZXQncyBm b3JtYXQuICBOQU1FIGlzIHRoZSBuYW1lIHRvIHVzZSBmb3IgdGhpcwotQEAgLTc2LDcgKzg0LDcg QEAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21fbWVtb3J5IChzdHJ1Y3QgYmZkIAorQEAgLTc3LDcgKzg1 LDcgQEAgc3ltYm9sX2ZpbGVfYWRkX2Zyb21fbWVtb3J5IChzdHJ1Y3QgYmZkIAogICAgICBlcnJv ciAoXygiYWRkLXN5bWJvbC1maWxlLWZyb20tbWVtb3J5IG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMg dGFyZ2V0IikpOwogIAogICAgbmJmZCA9IGJmZF9lbGZfYmZkX2Zyb21fcmVtb3RlX21lbW9yeSAo dGVtcGwsIGFkZHIsICZsb2FkYmFzZSwKQEAgLTUzLDEwICs1MywxMCBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS1tZW0uYwogICAgaWYgKG5iZmQgPT0gTlVMTCkKICAg ICAgZXJyb3IgKF8oIkZhaWxlZCB0byByZWFkIGEgdmFsaWQgb2JqZWN0IGZpbGUgaW1hZ2UgZnJv bSBtZW1vcnkuIikpOwogIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3RhcmdldC5j CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMDktMDktMDkgMTk6MDU6 NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFyZ2V0LmMJ MjAwOS0wOS0wOSAxOTowODoxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTAtMDEtMTUgMDM6MjI6MTMuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0xNSAwMzoyMjoy My4wMDAwMDAwMDAgKzAxMDAKIEBAIC01OSw3ICs1OSw3IEBAIHN0YXRpYyBpbnQgbm9zeW1ib2wg KGNoYXIgKiwgQ09SRV9BRERSICoKICAKICBzdGF0aWMgdm9pZCB0Y29tcGxhaW4gKHZvaWQpIEFU VFJfTk9SRVRVUk47CkBAIC02Niw3ICs2Niw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5 L2dkYi90YXJnZXQuYwogIAogIHN0YXRpYyBpbnQgcmV0dXJuX3plcm8gKHZvaWQpOwogIAotQEAg LTQ5Miw3ICs0OTIsNyBAQCB0YXJnZXRfdGVybWluYWxfaW5mZXJpb3IgKHZvaWQpCitAQCAtNDk0 LDcgKzQ5NCw3IEBAIHRhcmdldF90ZXJtaW5hbF9pbmZlcmlvciAodm9pZCkKICAgICgqY3VycmVu dF90YXJnZXQudG9fdGVybWluYWxfaW5mZXJpb3IpICgpOwogIH0KICAKQEAgLTc1LDcgKzc1LDcg QEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3RhcmdldC5jCiAgbm9tZW1vcnkgKENP UkVfQUREUiBtZW1hZGRyLCBjaGFyICpteWFkZHIsIGludCBsZW4sIGludCB3cml0ZSwKICAJICBz dHJ1Y3QgdGFyZ2V0X29wcyAqdCkKICB7Ci1AQCAtNzExLDcgKzcxMSw3IEBAIHVwZGF0ZV9jdXJy ZW50X3RhcmdldCAodm9pZCkKK0BAIC03MjYsNyArNzI2LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFy Z2V0ICh2b2lkKQogIAkgICAgKHZvaWQgKCopIChzdHJ1Y3QgcmVnY2FjaGUgKikpCiAgCSAgICBu b3Byb2Nlc3MpOwogICAgZGVfZmF1bHQgKGRlcHJlY2F0ZWRfeGZlcl9tZW1vcnksCkBAIC04NCw3 ICs4NCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90YXJnZXQuYwogIAkgICAg bm9tZW1vcnkpOwogICAgZGVfZmF1bHQgKHRvX2ZpbGVzX2luZm8sCiAgCSAgICAodm9pZCAoKikg KHN0cnVjdCB0YXJnZXRfb3BzICopKQotQEAgLTE0NDMsNyArMTQ0Myw3IEBAIHRhcmdldF94ZmVy X3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICoKK0BAIC0xNDk3LDcgKzE0OTcsNyBAQCB0YXJn ZXRfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqCiAgICAgaXQgbWFrZXMgbm8gcHJv Z3Jlc3MsIGFuZCB0aGVuIHJldHVybiBob3cgbXVjaCB3YXMgdHJhbnNmZXJyZWQpLiAqLwogIAog IGludApAQCAtOTMsNyArOTMsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFy Z2V0LmMKICB7CiAgICAvKiBEaXNwYXRjaCB0byB0aGUgdG9wbW9zdCB0YXJnZXQsIG5vdCB0aGUg ZmxhdHRlbmVkIGN1cnJlbnRfdGFyZ2V0LgogICAgICAgTWVtb3J5IGFjY2Vzc2VzIGNoZWNrIHRh cmdldC0+dG9faGFzXyhhbGxfKW1lbW9yeSwgYW5kIHRoZQotQEAgLTE0NTksNyArMTQ1OSw3IEBA IHRhcmdldF9yZWFkX21lbW9yeSAoQ09SRV9BRERSIG1lbWFkZHIsIGcKK0BAIC0xNTEzLDcgKzE1 MTMsNyBAQCB0YXJnZXRfcmVhZF9tZW1vcnkgKENPUkVfQUREUiBtZW1hZGRyLCBnCiAgICAgdGhl IHRhcmdldCdzIHN0YWNrLiAgVGhpcyBtYXkgdHJpZ2dlciBkaWZmZXJlbnQgY2FjaGUgYmVoYXZp b3IuICAqLwogIAogIGludApAQCAtMTAyLDggKzEwMiw4IEBAIEluZGV4OiBnZGItNi44LjUwLjIw MDkwOTA5L2dkYi90YXJnZXQuYwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRh cmdldCwgbm90IHRoZSBmbGF0dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAgICBNZW1vcnkgYWNj ZXNzZXMgY2hlY2sgdGFyZ2V0LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQgdGhlCi1AQCAtMTQ3 Myw3ICsxNDczLDcgQEAgdGFyZ2V0X3JlYWRfc3RhY2sgKENPUkVfQUREUiBtZW1hZGRyLCBnZAot IH0KK0BAIC0xNTMyLDcgKzE1MzIsNyBAQCB0YXJnZXRfcmVhZF9zdGFjayAoQ09SRV9BRERSIG1l bWFkZHIsIGdkCisgICAgQ2FsbGVycyB0aGF0IGNhbiBkZWFsIHdpdGggcGFydGlhbCB3cml0ZXMg c2hvdWxkIGNhbGwgdGFyZ2V0X3dyaXRlLiAgKi8KICAKICBpbnQKIC10YXJnZXRfd3JpdGVfbWVt b3J5IChDT1JFX0FERFIgbWVtYWRkciwgY29uc3QgZ2RiX2J5dGUgKm15YWRkciwgaW50IGxlbikK QEAgLTExMSw3ICsxMTEsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGFyZ2V0 LmMKICB7CiAgICAvKiBEaXNwYXRjaCB0byB0aGUgdG9wbW9zdCB0YXJnZXQsIG5vdCB0aGUgZmxh dHRlbmVkIGN1cnJlbnRfdGFyZ2V0LgogICAgICAgTWVtb3J5IGFjY2Vzc2VzIGNoZWNrIHRhcmdl dC0+dG9faGFzXyhhbGxfKW1lbW9yeSwgYW5kIHRoZQotQEAgLTI5NjQsOCArMjk2NCw4IEBAIGRl YnVnX3RvX3ByZXBhcmVfdG9fc3RvcmUgKHN0cnVjdCByZWdjYWMKK0BAIC0zMDk4LDggKzMwOTgs OCBAQCBkZWJ1Z190b19wcmVwYXJlX3RvX3N0b3JlIChzdHJ1Y3QgcmVnY2FjCiAgICBmcHJpbnRm X3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJ0YXJnZXRfcHJlcGFyZV90b19zdG9yZSAoKVxuIik7 CiAgfQogIApAQCAtMTIyLDcgKzEyMiw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dk Yi90YXJnZXQuYwogIAkJCSAgICAgIGludCB3cml0ZSwgc3RydWN0IG1lbV9hdHRyaWIgKmF0dHJp YiwKICAJCQkgICAgICBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0KQogIHsKLUBAIC0yOTc1LDgg KzI5NzUsOCBAQCBkZXByZWNhdGVkX2RlYnVnX3hmZXJfbWVtb3J5IChDT1JFX0FERFIgCitAQCAt MzEwOSw4ICszMTA5LDggQEAgZGVwcmVjYXRlZF9kZWJ1Z194ZmVyX21lbW9yeSAoQ09SRV9BRERS IAogIAkJCQkJCWF0dHJpYiwgdGFyZ2V0KTsKICAKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKQEAgLTEzMywxMSArMTMzLDExIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5 L2dkYi90YXJnZXQuYwogIAkJICAgICAgd3JpdGUgPyAid3JpdGUiIDogInJlYWQiLCByZXR2YWwp OwogIAogICAgaWYgKHJldHZhbCA+IDApCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIv dGFyZ2V0LmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90YXJnZXQuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MDkub3JpZy9nZGIvdGFyZ2V0LmgJMjAwOS0wOS0w OSAxOTowNTo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi90 YXJnZXQuaAkyMDA5LTA5LTA5IDE5OjA3OjM2LjAwMDAwMDAwMCArMDIwMAotQEAgLTM2NiwxMCAr MzY2LDEwIEBAIHN0cnVjdCB0YXJnZXRfb3BzCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi90YXJnZXQuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3RhcmdldC5oCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAw MDAwICswMTAwCitAQCAtNDA2LDEwICs0MDYsMTAgQEAgc3RydWN0IHRhcmdldF9vcHMKICAgICAg ICAgTk9URTogY2FnbmV5LzIwMDQtMTAtMDE6IFRoaXMgaGFzIGJlZW4gZW50aXJlbHkgc3VwZXJz ZWVkZWQgYnkKICAgICAgICAgdG9feGZlcl9wYXJ0aWFsIGFuZCBpbmZlcmlvciBpbmhlcml0YW5j ZS4gICovCiAgCkBAIC0xNTIsNyArMTUyLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkv Z2RiL3RhcmdldC5oCiAgCiAgICAgIHZvaWQgKCp0b19maWxlc19pbmZvKSAoc3RydWN0IHRhcmdl dF9vcHMgKik7CiAgICAgIGludCAoKnRvX2luc2VydF9icmVha3BvaW50KSAoc3RydWN0IGdkYmFy Y2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICopOwotQEAgLTY4MCwxMiArNjgwLDEyIEBAIGV4 dGVybiB2b2lkIHRhcmdldF9kY2FjaGVfaW52YWxpZGF0ZSAodm8KK0BAIC03ODYsMTIgKzc4Niwx MiBAQCBleHRlcm4gdm9pZCB0YXJnZXRfZGNhY2hlX2ludmFsaWRhdGUgKHZvCiAgCiAgZXh0ZXJu IGludCB0YXJnZXRfcmVhZF9zdHJpbmcgKENPUkVfQUREUiwgY2hhciAqKiwgaW50LCBpbnQgKik7 CiAgCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIv dGFyZ2V0LmgKICAKICAvKiBGZXRjaGVzIHRoZSB0YXJnZXQncyBtZW1vcnkgbWFwLiAgSWYgb25l IGlzIGZvdW5kIGl0IGlzIHNvcnRlZAogICAgIGFuZCByZXR1cm5lZCwgYWZ0ZXIgc29tZSBjb25z aXN0ZW5jeSBjaGVja2luZy4gIE90aGVyd2lzZSwgTlVMTAotSW5kZXg6IGdkYi02LjguNTAuMjAw OTA5MDkvZ2RiL2RjYWNoZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hl LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2RjYWNoZS5j CTIwMDktMDgtMzEgMjI6MTg6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5 MDkwOS9nZGIvZGNhY2hlLmMJMjAwOS0wOS0wOSAxOTowOToyMS4wMDAwMDAwMDAgKzAyMDAKLUBA IC0zOTAsMTAgKzM5MCwxMCBAQCBkY2FjaGVfZnJlZSAoRENBQ0hFICpkY2FjaGUpCi0gCi0gICAg VGhlIG1lYW5pbmcgb2YgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3IgdGFyZ2V0X3dyaXRl LiAgKi8KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2RjYWNoZS5jCTIwMTAtMDEt MDEgMDg6MzE6MzAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv ZGNhY2hlLmMJMjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC00NjgsMTAg KzQ2OCwxMCBAQCBkY2FjaGVfZnJlZSAoRENBQ0hFICpkY2FjaGUpCisgICAgTk9URTogVGhpcyBp cyBkaWZmZXJlbnQgdGhhbiB0aGUgdG9feGZlcl9wYXJ0aWFsIGludGVyZmFjZSwgaW4gd2hpY2gK KyAgICBwb3NpdGl2ZSB2YWx1ZXMgbGVzcyB0aGFuIExFTiBtZWFuIGZ1cnRoZXIgdHJhbnNmZXJz IG1heSBiZSBwb3NzaWJsZS4gICovCiAgCiAtaW50CiArTE9OR0VTVApAQCAtMTg1LDEwICsxODUs MTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2RjYWNoZS5jCiAgewogICAgaW50 IGk7CiAgICBpbnQgcmVzOwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2RjYWNoZS5o CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2RjYWNoZS5oCTIwMDktMDgtMzEgMjI6MTg6 NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvZGNhY2hlLmgJ MjAwOS0wOS0wOSAxOTowODo1NC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL2RjYWNoZS5oCTIwMTAtMDEtMDEgMDg6MzE6MzAuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZGNhY2hlLmgJMjAxMC0wMS0xNSAwMzoyMjoy My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zNSw4ICszNSw4IEBAIHZvaWQgZGNhY2hlX2ZyZWUgKERD QUNIRSAqKTsKICAKICAvKiBTaW1wbGUgdG8gY2FsbCBmcm9tIDxyZW1vdGU+X3hmZXJfbWVtb3J5 ICovCkBAIC0yMDAsMTEgKzIwMCwxMSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIv ZGNhY2hlLmgKICAKICB2b2lkIGRjYWNoZV91cGRhdGUgKERDQUNIRSAqZGNhY2hlLCBDT1JFX0FE RFIgbWVtYWRkciwgZ2RiX2J5dGUgKm15YWRkciwKICAJCSAgICBpbnQgbGVuKTsKLUluZGV4OiBn ZGItNi44LjUwLjIwMDkwOTA5L2dkYi9leGVjLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9leGVjLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2Ri L2V4ZWMuYwkyMDA5LTA3LTAyIDE5OjIxOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02Ljgu NTAuMjAwOTA5MDkvZ2RiL2V4ZWMuYwkyMDA5LTA5LTA5IDE5OjA2OjU3LjAwMDAwMDAwMCArMDIw MAotQEAgLTU2MCw3ICs1NjAsNyBAQCBtYXBfdm1hcCAoYmZkICphYmZkLCBiZmQgKmFyY2gpCist LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9leGVjLmMJMjAxMC0wMS0xNCAyMjowMToy NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9leGVjLmMJMjAx MC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC01NzgsNyArNTc4LDcgQEAgbWFw X3ZtYXAgKGJmZCAqYWJmZCwgYmZkICphcmNoKQogIH0KICAMCiAgCkBAIC0yMTMsMTEgKzIxMywx MSBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvZXhlYy5jCiAgc2VjdGlvbl90YWJs ZV94ZmVyX21lbW9yeV9wYXJ0aWFsIChnZGJfYnl0ZSAqcmVhZGJ1ZiwgY29uc3QgZ2RiX2J5dGUg KndyaXRlYnVmLAogIAkJCQkgICBVTE9OR0VTVCBvZmZzZXQsIExPTkdFU1QgbGVuLAogIAkJCQkg ICBzdHJ1Y3QgdGFyZ2V0X3NlY3Rpb24gKnNlY3Rpb25zLAotSW5kZXg6IGdkYi02LjguNTAuMjAw OTA5MDkvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGlu dXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2xp bnV4LW5hdC5jCTIwMDktMDktMDkgMTk6MDY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYu OC41MC4yMDA5MDkwOS9nZGIvbGludXgtbmF0LmMJMjAwOS0wOS0wOSAxOTowNjo1Ny4wMDAwMDAw MDAgKzAyMDAKLUBAIC00NjIyLDcgKzQ2MjIsNyBAQCBsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVj dCB0YXJnZXRfb3BzICpvCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9saW51eC1u YXQuYwkyMDEwLTAxLTE1IDAzOjIyOjE0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICsw MTAwCitAQCAtNTExNyw3ICs1MTE3LDcgQEAgbGludXhfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFy Z2V0X29wcyAqbwogICNlbmRpZgogICAgICAgIGlmIChpdGVyYXRlX292ZXJfbHdwcyAoaWE2NF9s aW51eF9jaGVja19zdGFja19yZWdpb24sICZyYW5nZSkgIT0gTlVMTCkKICAJeyAvKiBUaGlzIHJl Z2lvbiBjb250YWlucyBpYTY0IHJzZSByZWdpc3RlcnMsIHdlIGhhdmUgdG8gcmUtcmVhZC4gICov CkBAIC0yMjYsMTAgKzIyNiwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvbGlu dXgtbmF0LmMKICAKICAJICAvKiBSZS1yZWFkIHJlZ2lzdGVyIHN0YWNrIGFyZWEuICAqLwogIAkg IHh4ZmVyID0gc3VwZXJfeGZlcl9wYXJ0aWFsIChvcHMsIG9iamVjdCwgYW5uZXgsCi1JbmRleDog Z2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvcmVtb3RlLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9yZW1vdGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MDkub3Jp Zy9nZGIvcmVtb3RlLmMJMjAwOS0wOC0xOCAxODoxNzoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNi44LjUwLjIwMDkwOTA5L2dkYi9yZW1vdGUuYwkyMDA5LTA5LTA5IDE5OjA2OjU3LjAwMDAw MDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvcmVtb3RlLmMJMjAx MC0wMS0xMiAyMjo0MDoyNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9yZW1vdGUuYwkyMDEwLTAxLTE1IDAzOjIyOjIzLjAwMDAwMDAwMCArMDEwMAogQEAgLTI1 LDYgKzI1LDcgQEAKICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgogICNpbmNsdWRlIDxjdHlwZS5o PgpAQCAtMjM4LDcgKzIzOCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9yZW1v dGUuYwogICNpbmNsdWRlICJpbmZlcmlvci5oIgogICNpbmNsdWRlICJiZmQuaCIKICAjaW5jbHVk ZSAic3ltZmlsZS5oIgotQEAgLTU3NjQsMTIgKzU3NjUsMTkgQEAgaGFuZGxlX25vdGlmaWNhdGlv biAoY2hhciAqYnVmLCBzaXplX3QgbAorQEAgLTYxNzUsMTIgKzYxNzYsMTkgQEAgaGFuZGxlX25v dGlmaWNhdGlvbiAoY2hhciAqYnVmLCBzaXplX3QgbAogICAgIGlmIFNIT1VMRF9XUklURSBpcyBu b256ZXJvLiAgUmV0dXJucyBsZW5ndGggb2YgZGF0YSB3cml0dGVuIG9yCiAgICAgcmVhZDsgMCBm b3IgZXJyb3IuICBUQVJHRVQgaXMgdW51c2VkLiAgKi8KICAKQEAgLTI2MCw3ICsyNjAsNyBAQCBJ bmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvcmVtb3RlLmMKICAKICAgIHNldF9nZW5lcmFs X3RocmVhZCAoaW5mZXJpb3JfcHRpZCk7CiAgCi1AQCAtNTc3OCw3ICs1Nzg2LDcgQEAgcmVtb3Rl X3hmZXJfbWVtb3J5IChDT1JFX0FERFIgbWVtX2FkZHIsIAorQEAgLTYxODksNyArNjE5Nyw3IEBA IHJlbW90ZV94ZmVyX21lbW9yeSAoQ09SRV9BRERSIG1lbV9hZGRyLCAKICAgIGVsc2UKICAgICAg cmVzID0gcmVtb3RlX3JlYWRfYnl0ZXMgKG1lbV9hZGRyLCBidWZmZXIsIG1lbV9sZW4pOwogIApA QCAtMjY5LDEwICsyNjksMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3JlbW90 ZS5jCiAgfQogIAogIC8qIFNlbmRzIGEgcGFja2V0IHdpdGggY29udGVudCBkZXRlcm1pbmVkIGJ5 IHRoZSBwcmludGYgZm9ybWF0IHN0cmluZwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2Ri L3JlbW90ZS1zaW0uYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3JlbW90ZS1zaW0u YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MDkub3JpZy9nZGIvcmVtb3RlLXNp bS5jCTIwMDktMDctMDIgMTk6MjE6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4y MDA5MDkwOS9nZGIvcmVtb3RlLXNpbS5jCTIwMDktMDktMDkgMTk6MDY6NTcuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0w MS0wMSAwODozMTo0MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9yZW1vdGUtc2ltLmMJMjAxMC0wMS0xNSAwMzoyMjoyMy4wMDAwMDAwMDAgKzAxMDAKIEBAIC03 NTIsMTEgKzc1MiwxNCBAQCBnZGJzaW1fcHJlcGFyZV90b19zdG9yZSAoc3RydWN0IHJlZ2NhY2hl CiAgCiAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVycmVkLiAqLwpAQCAt MjkwLDExICsyOTAsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3JlbW90ZS1z aW0uYwogICAgLyogSWYgbm8gcHJvZ3JhbSBpcyBydW5uaW5nIHlldCwgdGhlbiBpZ25vcmUgdGhl IHNpbXVsYXRvciBmb3IKICAgICAgIG1lbW9yeS4gIFBhc3MgdGhlIHJlcXVlc3QgZG93biB0byB0 aGUgbmV4dCB0YXJnZXQsIGhvcGVmdWxseQogICAgICAgYW4gZXhlYyBmaWxlLiAgKi8KLUluZGV4 OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9leGVjLmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9leGVjLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcv Z2RiL2V4ZWMuaAkyMDA5LTA2LTEyIDIwOjM4OjM2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02 LjguNTAuMjAwOTA5MDkvZ2RiL2V4ZWMuaAkyMDA5LTA5LTA5IDE5OjA2OjU3LjAwMDAwMDAwMCAr MDIwMAotQEAgLTU2LDcgKzU2LDcgQEAgZXh0ZXJuIGludCByZXNpemVfc2VjdGlvbl90YWJsZSAo c3RydWN0IAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZXhlYy5oCTIwMTAtMDEt MDEgMDg6MzE6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv ZXhlYy5oCTIwMTAtMDEtMTUgMDM6MjI6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtNjAsNyArNjAs NyBAQCBleHRlcm4gaW50IHJlc2l6ZV9zZWN0aW9uX3RhYmxlIChzdHJ1Y3QgCiAgCiAgICAgT25l LCBhbmQgb25seSBvbmUsIG9mIHJlYWRidWYgb3Igd3JpdGVidWYgbXVzdCBiZSBub24tTlVMTC4g ICovCiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2ggYi9n ZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCA4MjNjMzhmLi40MzM5NDRkIDEw MDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGItNi4z LXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTEgKzExLDExIEBACiAKICAgICAgICAg KiBnZGIudGV4aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAKLUlu ZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ni44LjUwLjIwMDkwODExLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5LTA4LTEzIDEwOjE0 OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2RvYy9nZGIu dGV4aW5mbwkyMDA5LTA4LTEzIDEwOjE0OjE4LjAwMDAwMDAwMCArMDIwMAotQEAgLTk5MSw2ICs5 OTEsMTIgQEAgUmVhZCBlYWNoIHN5bWJvbCBmaWxlJ3MgZW50aXJlIHN5bWJvbCB0YQorLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDEtMTUgMDM6 MTY6NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTAtMDEtMTUgMDM6MjA6MDQuMDAwMDAwMDAwICswMTAwCitAQCAtOTk1LDYg Kzk5NSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRhCiAgdGhl IGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBhcyBpdCBpcyBuZWVk ZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1dHVyZSBvcGVyYXRp b25zIGZhc3Rlci4KICAKQEAgLTI4LDEwICsyOCwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5 MDgxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2RlIE1vZGUgT3B0 aW9ucwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL21haW4uYworSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAw OTA4MTEub3JpZy9nZGIvbWFpbi5jCTIwMDktMDgtMTMgMTA6MTQ6MTUuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvbWFpbi5jCTIwMDktMDgtMTMgMTA6MTQ6MTgu MDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9tYWluLmMJ MjAxMC0wMS0xNSAwMzoxODoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9tYWluLmMJMjAxMC0wMS0xNSAwMzoyMDowNC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0z ODIsNiArMzgyLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7InhkYiIs IG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2FyZ3Vt ZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKQEAgLTQ4LDEwICs0OCwxMCBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDgxMS9nZGIvbWFpbi5jCiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRl cmVkIChfKCJcCiAgICAtLXNlPUZJTEUgICAgICAgICAgVXNlIEZJTEUgYXMgc3ltYm9sIGZpbGUg YW5kIGV4ZWN1dGFibGUgZmlsZS5cblwKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9z eW1maWxlLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW1maWxlLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDA5LTA4 LTEzIDEwOjE0OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2Ri L3N5bWZpbGUuYwkyMDA5LTA4LTEzIDEwOjE0OjE4LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc3ltZmlsZS5jCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5jCTIwMTAt MDEtMTUgMDM6MjA6MDQuMDAwMDAwMDAwICswMTAwCiBAQCAtNzksNiArNzksNyBAQCBzdGF0aWMg dm9pZCBjbGVhcl9zeW10YWJfdXNlcnNfY2xlYW51cCAoCiAgCiAgLyogR2xvYmFsIHZhcmlhYmxl cyBvd25lZCBieSB0aGlzIGZpbGUgKi8KQEAgLTYwLDE5ICs2MCwxOSBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDgxMS9nZGIvc3ltZmlsZS5jCiAgCiAgLyogRXh0ZXJuYWwgdmFyaWFibGVzIGFu ZCBmdW5jdGlvbnMgcmVmZXJlbmNlZC4gKi8KICAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODEx L2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJy ZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL2R3YXJm MnJlYWQuYwkyMDA5LTA4LTEzIDEwOjE0OjE1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02Ljgu NTAuMjAwOTA4MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDA5LTA4LTEzIDEwOjE0OjI5LjAwMDAwMDAw MCArMDIwMAotQEAgLTUzLDYgKzUzLDcgQEAKLSAjaW5jbHVkZSAianYtbGFuZy5oIgotICNpbmNs dWRlICJ2ZWMuaCIKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQu YwkyMDEwLTAxLTE1IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDAzOjIwOjE4LjAwMDAwMDAwMCArMDEw MAorQEAgLTUwLDYgKzUwLDcgQEAKKyAjaW5jbHVkZSAiYWRkcm1hcC5oIgogICNpbmNsdWRlICJi bG9jay5oIgorICNpbmNsdWRlICJmLWxhbmcuaCIKICsjaW5jbHVkZSAidG9wLmgiCiAgCiAgI2lu Y2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0xMjQ1LDcgKzEy NDYsOCBAQCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCitAQCAtMTIy Niw3ICsxMjI3LDggQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQog IAogICAgICAgIGJmZF9tYXBfb3Zlcl9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCwgZHdhcmYyX2xv Y2F0ZV9zZWN0aW9ucywgTlVMTCk7CiAgICAgIH0KQEAgLTgyLDExICs4MiwxMSBAQCBJbmRleDog Z2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgJiYgZHdhcmYyX3Blcl9v YmpmaWxlLT5hYmJyZXYuYXNlY3Rpb24gIT0gTlVMTCk7CiAgfQogIAotSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MTEvZ2RiL3RvcC5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdG9w LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL3RvcC5oCTIw MDktMDEtMDMgMDY6NTc6NTMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgx MS9nZGIvdG9wLmgJMjAwOS0wOC0xMyAxMDoxNDoxOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01OSw2 ICs1OSw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNoYXIgKik7CistLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi90b3AuaAkyMDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3RvcC5oCTIwMTAtMDEtMTUgMDM6MjA6 MDQuMDAwMDAwMDAwICswMTAwCitAQCAtNjMsNiArNjMsNyBAQCBleHRlcm4gdm9pZCBzZXRfcHJv bXB0IChjaGFyICopOwogIAogIC8qIEZyb20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGlu dCByZWFkbm93X3N5bWJvbF9maWxlczsKCmRpZmYgLS1naXQgYS9nZGItNi4zLXNlY3VyaXR5LWVy cmF0YS0yMDA1MDYxMC5wYXRjaCBiL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBh dGNoCmluZGV4IDEwOTJjMzEuLjU2ZDc1YjkgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtc2VjdXJpdHkt ZXJyYXRhLTIwMDUwNjEwLnBhdGNoCisrKyBiL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUw NjEwLnBhdGNoCkBAIC0xOSwxOSArMTksMTkgQEAgUHJvcG9zZWQgdXBzdHJlYW0gYnV0IG5ldmVy IGNvbW1pdHRlZCB1cHN0cmVhbS4KICAgICAgICAgKHNvdXJjZV9jb21tYW5kKTogVXBkYXRlIGRv Y3VtZW50YXRpb24uICBDaGVjayBwZXJtaXNzaW9ucyBpZgogICAgICAgICBGUk9NX1RUWSBpcyAt MS4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL2NsaS9jbGktY21kcy5jCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY2xpL2NsaS1jbWRzLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNi44LjUwLjIwMDkwMjI2Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5jCTIwMDktMDItMjcg MDA6MDQ6MzIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvY2xp L2NsaS1jbWRzLmMJMjAwOS0wMi0yOCAwNzoxNzo0OS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNiw2 ICszNiw3IEBACistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jbGkvY2xpLWNtZHMu YwkyMDEwLTAxLTE1IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTAtMDEtMTUgMDM6MTk6MTMuMDAwMDAwMDAwICsw MTAwCitAQCAtMzcsNiArMzcsNyBAQAogICNpbmNsdWRlICJvYmpmaWxlcy5oIgogICNpbmNsdWRl ICJzb3VyY2UuaCIKICAjaW5jbHVkZSAiZGlzYXNtLmgiCiArI2luY2x1ZGUgImdkYl9zdGF0Lmgi CisgZXh0ZXJuIHZvaWQgZGlzY29ubmVjdF9vcl9zdG9wX3RyYWNpbmcgKGludCBmcm9tX3R0eSk7 CiAgCiAgI2luY2x1ZGUgInVpLW91dC5oIgotIAotQEAgLTQ2Niw3ICs0NjcsNyBAQCBzb3VyY2Vf c2NyaXB0IChjaGFyICpmaWxlLCBpbnQgZnJvbV90dHkpCitAQCAtNDc1LDcgKzQ3Niw3IEBAIHNv dXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKICAKICAgIGlmIChmZCA9PSAt MSkKICAgICAgewpAQCAtNDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDIyNi9n ZGIvY2xpL2NsaS1jbWRzLmMKICAJcGVycm9yX3dpdGhfbmFtZSAoZmlsZSk7CiAgICAgICAgZWxz ZQogIAl7Ci1AQCAtNDc1LDYgKzQ3NiwyOSBAQCBzb3VyY2Vfc2NyaXB0IChjaGFyICpmaWxlLCBp bnQgZnJvbV90dHkpCitAQCAtNDg0LDYgKzQ4NSwyOSBAQCBzb3VyY2Vfc2NyaXB0IChjaGFyICpm aWxlLCBpbnQgZnJvbV90dHkpCiAgCX0KICAgICAgfQogIApAQCAtNzAsNyArNzAsNyBAQCBJbmRl eDogZ2RiLTYuOC41MC4yMDA5MDIyNi9nZGIvY2xpL2NsaS1jbWRzLmMKICAgIGlzX3B5dGhvbiA9 IHNvdXJjZV9weXRob247CiAgICBpZiAoc3RybGVuIChmaWxlKSA+IDMgJiYgIXN0cmNtcCAoJmZp bGVbc3RybGVuIChmaWxlKSAtIDNdLCAiLnB5IikpCiAgICAgIGlzX3B5dGhvbiA9IDE7Ci1AQCAt NDg2LDYgKzUxMCw3IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkK K0BAIC00OTUsNiArNTE5LDcgQEAgc291cmNlX3NjcmlwdCAoY2hhciAqZmlsZSwgaW50IGZyb21f dHR5KQogICAgZWxzZQogICAgICBzY3JpcHRfZnJvbV9maWxlIChzdHJlYW0sIGZpbGUpOwogIApA QCAtNzgsMTAgKzc4LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi9jbGkvY2xp LWNtZHMuYwogICAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7CiAgfQogIAotSW5kZXg6IGdk Yi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAorSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4 cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n ZGJpbml0LmV4cAkyMDA5LTAyLTI4IDA3OjE1OjU3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LmV4cAkyMDEwLTAx LTE1IDAzOjE4OjIzLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw5OCBAQAogKyMgICBDb3B5 cmlnaHQgMjAwNQogKyMgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTE4MSwx NyArMTgxLDE3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwMjI2L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvZ2RiaW5pdC5leHAKICt9CiArCiArcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC5nZGJpbml0 IgotSW5kZXg6IGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJp bml0LnNhbXBsZQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nZGJpbml0LnNhbXBsZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LnNhbXBsZQkyMDA5LTAyLTI4IDA3OjE1OjU3LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nZGJpbml0LnNhbXBsZQkyMDEwLTAxLTE1IDAzOjE4OjIzLjAwMDAwMDAwMCArMDEwMAogQEAg LTAsMCArMSBAQAogK2VjaG8gIlxuaW4gZ2RiaW5pdCIKLUluZGV4OiBnZGItNi44LjUwLjIwMDkw MjI2L2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWluLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwMjI2Lm9yaWcvZ2RiL21haW4uYwkyMDA5LTAy LTI3IDAwOjA0OjMyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjguNTAuMjAwOTAyMjYvZ2Ri L21haW4uYwkyMDA5LTAyLTI4IDA3OjE1OjU3LjAwMDAwMDAwMCArMDEwMAotQEAgLTg1NSw3ICs4 NTUsNyBAQCBFeGNlc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBpZ25vcmVkLiAoCistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9tYWluLmMJMjAxMC0wMS0xNSAwMzoxNjo0My4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9tYWluLmMJMjAxMC0wMS0x NSAwMzoxODoyMy4wMDAwMDAwMDAgKzAxMDAKK0BAIC04MTUsNyArODE1LDcgQEAgRXhjZXNzIGNv bW1hbmQgbGluZSBhcmd1bWVudHMgaWdub3JlZC4gKAogICAgICAgZGVidWdnaW5nIG9yIHdoYXQg ZGlyZWN0b3J5IHlvdSBhcmUgaW4uICAqLwogIAogICAgaWYgKGhvbWVfZ2RiaW5pdCAmJiAhaW5o aWJpdF9nZGJpbml0KQpAQCAtMjAwLDcgKzIwMCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw MjI2L2dkYi9tYWluLmMKICAKICAgIC8qIE5vdyBwZXJmb3JtIGFsbCB0aGUgYWN0aW9ucyBpbmRp Y2F0ZWQgYnkgdGhlIGFyZ3VtZW50cy4gICovCiAgICBpZiAoY2RhcmcgIT0gTlVMTCkKLUBAIC05 MjQsNyArOTI0LDcgQEAgQ2FuJ3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjbwor QEAgLTg4NCw3ICs4ODQsNyBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2VzcyBhbmQgc3BlY2lmeSBh IGNvCiAgICAvKiBSZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9y eSwgKmlmKiBpdCBpc24ndAogICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZp bGUgKGl0IHNob3VsZCBleGlzdCwgYWxzbykuICAqLwogICAgaWYgKGxvY2FsX2dkYmluaXQgJiYg IWluaGliaXRfZ2RiaW5pdCkKCmRpZmYgLS1naXQgYS9nZGItNi41LWdjb3JlLWkzODYtb24tYW1k NjQucGF0Y2ggYi9nZGItNi41LWdjb3JlLWkzODYtb24tYW1kNjQucGF0Y2gKaW5kZXggN2RhZTMz MC4uMzRhYzEzZSAxMDA2NDQKLS0tIGEvZ2RiLTYuNS1nY29yZS1pMzg2LW9uLWFtZDY0LnBhdGNo CisrKyBiL2dkYi02LjUtZ2NvcmUtaTM4Ni1vbi1hbWQ2NC5wYXRjaApAQCAtMjMsMTAgKzIzLDEw IEBACiAKIAlQb3J0IHRvIEdEQi02LjhwcmUuCiAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAy L2dkYi9hbWQ2NC1saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Ft ZDY0LWxpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5vcmln L2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDA5LTA2LTE3IDIwOjQ0OjIzLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMDktMDgt MDMgMTU6NDk6MzMuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLTAxLTE1IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAtMDEt MTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCiBAQCAtNTEsNiArNTEsOSBAQAogICNpbmNsdWRl ICJpMzg2LWxpbnV4LXRkZXAuaCIKICAjaW5jbHVkZSAiYW1kNjQtbmF0LmgiCkBAIC0xNzAsNyAr MTcwLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5j CiAgLyogVHJhbnNmZXJpbmcgdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgYmV0d2VlbiBH REIsIGluZmVyaW9ycwogICAgIGFuZCBjb3JlIGZpbGVzLiAgKi8KICAKLUBAIC02ODIsNiArODA0 LDExIEBAIF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25hdCAodm9pZCkKK0BAIC03MjcsNiArODQ5 LDExIEBAIF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25hdCAodm9pZCkKICAgIHQtPnRvX2ZldGNo X3JlZ2lzdGVycyA9IGFtZDY0X2xpbnV4X2ZldGNoX2luZmVyaW9yX3JlZ2lzdGVyczsKICAgIHQt PnRvX3N0b3JlX3JlZ2lzdGVycyA9IGFtZDY0X2xpbnV4X3N0b3JlX2luZmVyaW9yX3JlZ2lzdGVy czsKICAKQEAgLTE4MiwxMSArMTgyLDExIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dk Yi9hbWQ2NC1saW51eC1uYXQuYwogICAgLyogUmVnaXN0ZXIgdGhlIHRhcmdldC4gICovCiAgICBs aW51eF9uYXRfYWRkX3RhcmdldCAodCk7CiAgICBsaW51eF9uYXRfc2V0X25ld190aHJlYWQgKHQs IGFtZDY0X2xpbnV4X25ld190aHJlYWQpOwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2Ri L2NvbmZpZy5pbgorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvY29uZmlnLmluCTIwMDkt MDgtMDMgMDk6NTA6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9n ZGIvY29uZmlnLmluCTIwMDktMDgtMDMgMTU6NDg6MzEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQ2 LDYgKzE0Niw5IEBACistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb25maWcuaW4J MjAxMC0wMS0xNSAwMzoxNjo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9jb25maWcuaW4JMjAxMC0wMS0xNSAwMzoyMDo1OC4wMDAwMDAwMDAgKzAxMDAKK0BA IC0xNDksNiArMTQ5LDkgQEAKICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVsZl9o cC5oPiBoZWFkZXIgZmlsZS4gKi8KICAjdW5kZWYgSEFWRV9FTEZfSFBfSAogIApAQCAtMTk2LDcg KzE5Niw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9jb25maWcuaW4KICAvKiBE ZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBoYXMgdGhlIGV0ZXh0IHZhcmlhYmxlLiAqLwogICN1 bmRlZiBIQVZFX0VURVhUCiAgCi1AQCAtNDg3LDYgKzQ5MCw5IEBACitAQCAtNDkwLDYgKzQ5Myw5 IEBACiAgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcG9sbC5oPiBoZWFkZXIg ZmlsZS4gKi8KICAjdW5kZWYgSEFWRV9TWVNfUE9MTF9ICiAgCkBAIC0yMDYsNyArMjA2LDcgQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSB0byAx IGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Byb2Nmcy5oPiBoZWFkZXIgZmlsZS4gKi8KICAjdW5kZWYg SEFWRV9TWVNfUFJPQ0ZTX0gKICAKLUBAIC01MTQsNiArNTIwLDkgQEAKK0BAIC01MTcsNiArNTIz LDkgQEAKICAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90eXBlcy5oPiBoZWFk ZXIgZmlsZS4gKi8KICAjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSAogIApAQCAtMjE2LDExICsyMTYs MTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmlu ZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VzZXIuaD4gaGVhZGVyIGZpbGUuICovCiAgI3Vu ZGVmIEhBVkVfU1lTX1VTRVJfSAogIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2Nv bmZpZ3VyZQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZQogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvY29uZmlndXJlCTIwMDktMDgt MDMgMDk6NTA6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIv Y29uZmlndXJlCTIwMDktMDgtMDMgMTU6NDg6MzEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTI1NDUs NiArMTI1NDUsMjY4IEBAIF9BQ0VPRgorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIv Y29uZmlndXJlCTIwMTAtMDEtMTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlCTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAw ICswMTAwCitAQCAtMTAwNDMsNiArMTAwNDMsMjY4IEBAICRhc19lY2hvICIjZGVmaW5lIFNURENf SEVBREVSUyAxIiA+PmNvbmYKICAKICBmaQogIApAQCAtNDg5LDExICs0ODksMTEgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZ3VyZQogICMgZWxmX2hwLmggaXMgZm9yIEhQ L1VYIDY0LWJpdCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LgogICMgRklYTUU6IGtldHRlbmlzLzIw MDMwMTAyOiBJbiBtb3N0IGNhc2VzIHdlIGluY2x1ZGUgdGhlc2UgKGN0eXBlLmgsIHRpbWUuaCkK ICAjIHVuY29uZGl0aW9uYWxseSwgc28gd2hhdCdzIHRoZSBwb2ludCBpbiBjaGVja2luZyB0aGVz ZT8KLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9jb25maWd1cmUuYWMKK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ni44LjUwLjIwMDkwODAyLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDA5LTA4LTAzIDA5OjUwOjU3 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2NvbmZpZ3VyZS5h YwkyMDA5LTA4LTAzIDE1OjQ4OjMxLjAwMDAwMDAwMCArMDIwMAotQEAgLTc0NCw2ICs3NDQsMTEg QEAgQUNfU1VCU1QoUFlUSE9OX0NGTEFHUykKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcv Z2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTE1IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZ3VyZS5hYwkyMDEwLTAxLTE1IDAzOjIwOjU4 LjAwMDAwMDAwMCArMDEwMAorQEAgLTc1OCw2ICs3NTgsMTEgQEAgQUNfU1VCU1QoUFlUSE9OX0NG TEFHUykKICBBQ19IRUFERVJfRElSRU5UCiAgQUNfSEVBREVSX1NUQVQKICBBQ19IRUFERVJfU1RE QwpAQCAtNTA1LDExICs1MDUsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2Nv bmZpZ3VyZS5hYwogICMgZWxmX2hwLmggaXMgZm9yIEhQL1VYIDY0LWJpdCBzaGFyZWQgbGlicmFy eSBzdXBwb3J0LgogICMgRklYTUU6IGtldHRlbmlzLzIwMDMwMTAyOiBJbiBtb3N0IGNhc2VzIHdl IGluY2x1ZGUgdGhlc2UgKGN0eXBlLmgsIHRpbWUuaCkKICAjIHVuY29uZGl0aW9uYWxseSwgc28g d2hhdCdzIHRoZSBwb2ludCBpbiBjaGVja2luZyB0aGVzZT8KLUluZGV4OiBnZGItNi44LjUwLjIw MDkwODAyL2dkYi9nY29yZS5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2NvcmUu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvZ2NvcmUuYwky MDA5LTA4LTAzIDEyOjI4OjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4 MDIvZ2RiL2djb3JlLmMJMjAwOS0wOC0wMyAxNTo0ODozMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0z MjQsNiArMzI0LDExIEBAIGdjb3JlX2NyZWF0ZV9jYWxsYmFjayAoQ09SRV9BRERSIHZhZGRyLCAK Ky0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2djb3JlLmMJMjAxMC0wMS0xNSAwMzox Nzo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nY29yZS5j CTIwMTAtMDEtMTUgMDM6MjA6NTguMDAwMDAwMDAwICswMTAwCitAQCAtMzc2LDYgKzM3NiwxMSBA QCBnY29yZV9jcmVhdGVfY2FsbGJhY2sgKENPUkVfQUREUiB2YWRkciwgCiAgICBhc2VjdGlvbiAq b3NlYzsKICAgIGZsYWd3b3JkIGZsYWdzID0gU0VDX0FMTE9DIHwgU0VDX0hBU19DT05URU5UUyB8 IFNFQ19MT0FEOwogIApAQCAtNTIxLDEwICs1MjEsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTA4MDIvZ2RiL2djb3JlLmMKICAgIC8qIElmIHRoZSBtZW1vcnkgc2VnbWVudCBoYXMgbm8gcGVy bWlzc2lvbnMgc2V0LCBpZ25vcmUgaXQsIG90aGVyd2lzZQogICAgICAgd2hlbiB3ZSBsYXRlciB0 cnkgdG8gYWNjZXNzIGl0IGZvciByZWFkL3dyaXRlLCB3ZSdsbCBnZXQgYW4gZXJyb3IKICAgICAg IG9yIGphbSB0aGUga2VybmVsLiAgKi8KLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9n ZGJfcHJvY2ZzMzIuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYl9wcm9jZnMz Mi5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvZ2RiX3Byb2NmczMyLmgJMjAw OS0wOC0wMyAxNTo0ODozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9nZGJfcHJvY2ZzMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAwMCArMDEwMAog QEAgLTAsMCArMSwxMjggQEAKICsjaWZkZWYgSEFWRV9TWVNfUFJPQ0ZTMzJfSAogKyNpbmNsdWRl IDxzeXMvcHJvY2ZzMzIuaD4KQEAgLTY1NCwxMCArNjU0LDEwIEBAIEluZGV4OiBnZGItNi44LjUw LjIwMDkwODAyL2dkYi9nZGJfcHJvY2ZzMzIuaAogKyNlbmRpZgkvKiBfU1lTX1BST0NGUzMyX0gg Ki8KICsKICsjZW5kaWYgLyogSEFWRV9TWVNfUFJPQ0ZTMzJfSCAqLwotSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDIvZ2RiL2dkYl91c2VyMzIuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2dkYl91c2VyMzIuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2dkYl91 c2VyMzIuaAkyMDA5LTA4LTAzIDE1OjQ4OjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2dkYl91c2VyMzIuaAkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAw MCArMDEwMAogQEAgLTAsMCArMSwxMDggQEAKICsjaWZkZWYgSEFWRV9TWVNfVVNFUjMyX0gKICsj aW5jbHVkZSA8c3lzL3VzZXIzMi5oPgpAQCAtNzY3LDExICs3NjcsMTEgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA4MDIvZ2RiL2dkYl91c2VyMzIuaAogKyNlbmRpZgkvKiBfU1lTX1VTRVIzMl9I ICovCiArCiArI2VuZGlmIC8qIEhBVkVfU1lTX1VTRVIzMl9IICovCi1JbmRleDogZ2RiLTYuOC41 MC4yMDA5MDgwMi9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9n ZGIvbGludXgtbmF0LmMJMjAwOS0wOC0wMyAxMjozMToyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNi44LjUwLjIwMDkwODAyL2dkYi9saW51eC1uYXQuYwkyMDA5LTA4LTAzIDE1OjQ4OjMxLjAw MDAwMDAwMCArMDIwMAotQEAgLTIxOSw2ICsyMTksMjEgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBl cl94ZmVyX3BhcnRpYWwpIChzdAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGlu dXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoyMDo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwkyMDEwLTAxLTE1IDAzOjIwOjU4LjAwMDAwMDAw MCArMDEwMAorQEAgLTIyNSw2ICsyMjUsMjEgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBlcl94ZmVy X3BhcnRpYWwpIChzdAogIAkJCQkgICAgICBjb25zdCBnZGJfYnl0ZSAqLAogIAkJCQkgICAgICBV TE9OR0VTVCwgTE9OR0VTVCk7CiAgCkBAIC03OTMsNyArNzkzLDcgQEAgSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDIvZ2RiL2xpbnV4LW5hdC5jCiAgc3RhdGljIGludCBkZWJ1Z19saW51eF9uYXQ7 CiAgc3RhdGljIHZvaWQKICBzaG93X2RlYnVnX2xpbnV4X25hdCAoc3RydWN0IHVpX2ZpbGUgKmZp bGUsIGludCBmcm9tX3R0eSwKLUBAIC0zNTg2LDcgKzM2MDEsNyBAQCBsaW51eF9uYXRfZG9fdGhy ZWFkX3JlZ2lzdGVycyAoYmZkICpvYmZkCitAQCAtNDE4Nyw3ICs0MjAyLDcgQEAgbGludXhfbmF0 X2RvX3RocmVhZF9yZWdpc3RlcnMgKGJmZCAqb2JmZAogICAgZWxzZQogICAgICBmaWxsX2dyZWdz ZXQgKHJlZ2NhY2hlLCAmZ3JlZ3MsIC0xKTsKICAKQEAgLTgwMiw3ICs4MDIsNyBAQCBJbmRleDog Z2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvbGludXgtbmF0LmMKICAJCQkJCSAgICAgICBub3RlX2Rh dGEsCiAgCQkJCQkgICAgICAgbm90ZV9zaXplLAogIAkJCQkJICAgICAgIGx3cCwKLUBAIC0zNjM2 LDEwICszNjUxLDEwIEBAIGxpbnV4X25hdF9kb190aHJlYWRfcmVnaXN0ZXJzIChiZmQgKm9iZmQK K0BAIC00MjM3LDEwICs0MjUyLDEwIEBAIGxpbnV4X25hdF9kb190aHJlYWRfcmVnaXN0ZXJzIChi ZmQgKm9iZmQKICAgICAgICBlbHNlCiAgCWZpbGxfZnByZWdzZXQgKHJlZ2NhY2hlLCAmZnByZWdz LCAtMSk7CiAgCkBAIC04MTUsNyArODE1LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIv Z2RiL2xpbnV4LW5hdC5jCiAgICAgIH0KICAKICAgIHJldHVybiBub3RlX2RhdGE7Ci1AQCAtMzgy Miw5ICszODM3LDkgQEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAor QEAgLTQ0MjMsOSArNDQzOCw5IEBAIGxpbnV4X25hdF9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQg Km9iZmQKICAJCSAgICAgICBwc2FyZ3NfZW5kIC0gc3RyaW5nX2VuZCk7CiAgCSAgICB9CiAgCX0K QEAgLTgyOCwxNCArODI4LDE0IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9saW51 eC1uYXQuYwogICAgICB9CiAgCiAgICAvKiBEdW1wIGluZm9ybWF0aW9uIGZvciB0aHJlYWRzLiAg Ki8KLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9saW51eC1uYXQuaAorSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYu OC41MC4yMDA5MDgwMi5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDA5LTA4LTAzIDEwOjUyOjAwLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL2xpbnV4LW5hdC5oCTIw MDktMDgtMDMgMTU6NDg6MzEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQ0LDMgKzE0NCwxMiBAQCB2 b2lkIGxpbnV4X25hdF9zd2l0Y2hfZm9yayAocHRpZF90IG5ld19wCistLS0gZ2RiLTcuMC41MC4y MDEwMDExNS5vcmlnL2dkYi9saW51eC1uYXQuaAkyMDEwLTAxLTE1IDAzOjE3OjA3LjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDEt MTUgMDM6MjE6MjYuMDAwMDAwMDAwICswMTAwCitAQCAtMTY5LDMgKzE2OSwxMiBAQCBzdHJ1Y3Qg c2lnaW5mbyAqbGludXhfbmF0X2dldF9zaWdpbmZvIChwCiAgCi0gLyogUmV0dXJuIHRoZSBzYXZl ZCBzaWdpbmZvIGFzc29jaWF0ZWQgd2l0aCBQVElELiAgKi8KLSBzdHJ1Y3Qgc2lnaW5mbyAqbGlu dXhfbmF0X2dldF9zaWdpbmZvIChwdGlkX3QgcHRpZCk7CisgLyogQ29tcHV0ZSBhbmQgcmV0dXJu IHRoZSBwcm9jZXNzb3IgY29yZSBvZiBhIGdpdmVuIHRocmVhZC4gICovCisgaW50IGxpbnV4X25h dF9jb3JlX29mX3RocmVhZF8xIChwdGlkX3QgcHRpZCk7CiArCiArLyogVGhlc2UgZnVuY3Rpb25z IG1ha2UgZWxmY29yZSBub3RlIHNlY3Rpb25zLgogKyAgIFRoZXkgbWF5IGdldCBvdmVycmlkZW4g YnkgY29kZSBhZGp1c3RpbmcgZGF0YSBmb3IgbXVsdGktdGFyZ2V0IGJ1aWxkcy4gICovCgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLXJwbS5wYXRjaAppbmRleCBmMDdmN2VjLi4xYWFlMzM5IDEwMDY0NAotLS0gYS9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLXJwbS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5 L2dkYi9ldmVudC10b3AuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2V2ZW50LXRv cC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9ldmVudC10 b3AuYwkyMDA5LTA5LTA5IDIwOjA1OjQ4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAu MjAwOTA5MDkvZ2RiL2V2ZW50LXRvcC5jCTIwMDktMDktMDkgMjA6MDg6MDQuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTAx LTAxIDA4OjMxOjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2V2ZW50LXRvcC5jCTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMzMs NiArMzMsNyBAQAogICNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIiAgICAgLyogZm9yIHJlc2V0 X2NvbW1hbmRfbmVzdF9kZXB0aCAqLwogICNpbmNsdWRlICJtYWluLmgiCkBAIC0yOCwyNyArMjgs MTkgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2V2ZW50LXRvcC5jCiAgICAvKiBF YWNoIGludGVycHJldGVyIGhhcyBpdHMgb3duIHJ1bGVzIG9uIGRpc3BsYXlpbmcgdGhlIGNvbW1h bmQKICAgICAgIHByb21wdC4gICovCiAgICBpZiAoIWN1cnJlbnRfaW50ZXJwX2Rpc3BsYXlfcHJv bXB0X3AgKCkpCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS5jCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZWxmcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9zeW1maWxlLmMJMjAwOS0wOS0wOSAyMDowODowNC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9zeW1maWxlLmMJMjAw OS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01Nyw2ICs1Nyw3IEBACi0gI2lu Y2x1ZGUgInNvbGliLmgiCi0gI2luY2x1ZGUgInJlbW90ZS5oIgotICNpbmNsdWRlICJsaWJiZmQu aCIKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1 IDExOjQzOjMwLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Vs ZnJlYWQuYwkyMDEwLTAxLTE1IDExOjQ1OjM0LjAwMDAwMDAwMCArMDEwMAorQEAgLTQwLDYgKzQw LDcgQEAKKyAjaW5jbHVkZSAiZ2RiY29yZS5oIgorICNpbmNsdWRlICJnZGJjbWQuaCIKKyAjaW5j bHVkZSAib2JzZXJ2ZXIuaCIKICsjaW5jbHVkZSAiZWxmL2V4dGVybmFsLmgiCiAgCi0gI2luY2x1 ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotQEAgLTY1LDYgKzY2LDcgQEAK LSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzeXMv dGltZS5oPgotKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSAKKyBleHRlcm4gdm9pZCBfaW5pdGlh bGl6ZV9lbGZyZWFkICh2b2lkKTsKICAKLSBpbnQgKCpkZXByZWNhdGVkX3VpX2xvYWRfcHJvZ3Jl c3NfaG9vaykgKGNvbnN0IGNoYXIgKnNlY3Rpb24sIHVuc2lnbmVkIGxvbmcgbnVtKTsKLUBAIC0x NjczLDggKzE2NzUsMzUzIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQg KmIKK0BAIC0xMTE5LDggKzExMjAsMzUzIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3Qg YnVpbGRfaWQgKmIKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNDAzLDcgKzM5NSw3IEBA IEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9zeW1maWxlLmMKICAgICBhdm9pZGFuY2Uu ICAqLwogIAogIHN0cnVjdCBtaXNzaW5nX2ZpbGVwYWlyCi1AQCAtMTcyOCwxMSArMjA3NCwxNyBA QCBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAodm9pZCkKK0BAIC0xMTc0LDExICsxNTIwLDE3IEBA IG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQogICAgICAgIC8qIEFsbCB0aGVpciBtZW1v cnkgY2FtZSBqdXN0IGZyb20gbWlzc2luZ19maWxlcGFpcl9PQlNUQUNLLiAgKi8KICAgICAgICBt aXNzaW5nX2ZpbGVwYWlyX2hhc2ggPSBOVUxMOwogICAgICB9CkBAIC00MjEsNyArNDEzLDcgQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3N5bWZpbGUuYwogICAgbWlzc2luZ19maWxl cGFpcl9jaGFuZ2UgKCk7CiAgfQogIAotQEAgLTE3OTksMTQgKzIxNTEsMzQgQEAgZGVidWdfcHJp bnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAorQEAgLTEyNDUsMTQgKzE1OTcsMzQgQEAg ZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAogIAogICAgKnNsb3QgPSBt aXNzaW5nX2ZpbGVwYWlyOwogIApAQCAtNDYzLDExICs0NTUsMTEgQEAgSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA5MDkvZ2RiL3N5bWZpbGUuYwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDog Z2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEw MDExNS9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5v cmlnL2dkYi9zeW1maWxlLmgJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9zeW1maWxlLmgJMjAwOS0wOS0wOSAyMDowODowNC4w MDAwMDAwMDAgKzAyMDAKLUBAIC0zODcsNiArMzg3LDcgQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9p ZCAqYnVpbGRfaWRfYWRkcl9nZQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc3lt ZmlsZS5oCTIwMTAtMDEtMTUgMTE6MTI6MzMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5oCTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICsw MTAwCitAQCAtMzk4LDYgKzM5OCw3IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lk X2FkZHJfZ2UKICBleHRlcm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWls ZF9pZCAqYnVpbGRfaWQsCiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwgaW50IGFkZF9kZWJ1 Z19zdWZmaXgpOwogIGV4dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIg KmJpbmFyeSwgY29uc3QgY2hhciAqZGVidWcpOwpAQCAtNDc1LDEwICs0NjcsMTAgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3N5bWZpbGUuaAogIAogIC8qIEZyb20gZHdhcmYycmVh ZC5jICovCiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2xpYi9n ZGIuZXhwCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNi44LjUwLjIwMDkwOTA5L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAwOS0wOS0wOSAy MDowODowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDEw LTAxLTE1IDExOjQ1OjIwLjAwMDAwMDAwMCArMDEwMAogQEAgLTEyNDgsNyArMTI0OCw3IEBAIHBy b2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0 aGUgd2lkdGggdG8gMC4iCiAgCX0KQEAgLTQ4OCwxMCArNDgwLDEwIEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwOTA5L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgc2VuZF9nZGIgInNl dCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiJGdk Yl9wcm9tcHQgJCIgewotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkw OS5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMDktMDktMDkgMjA6MDg6 MDQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAkyMDA5LTA5LTA5IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0 LmV4cAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wMS0xNSAxMTo0 NToyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yMjEsNyArMjIxLDcgQEAgcHJvYyBkZWZhdWx0X21p X2dkYl9zdGFydCB7IGFyZ3MgfSB7CiAgCSAgICB9CiAgICAgIAl9CkBAIC01MDEsMTAgKzQ5Mywx MCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAogICAgICBzZW5kX2dkYiAiMTkwLWdkYi1zZXQgYnVpbGQtaWQtdmVyYm9zZSAwXG4i CiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIi4qMTkwLWdkYi1zZXQgYnVpbGQtaWQtdmVy Ym9zZSAwXHJcbjE5MFxcXF5kb25lXHJcbiRtaV9nZGJfcHJvbXB0JCIgewotSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA5MDkvZ2RiL3R1aS90dWktaW50ZXJwLmMKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi90dWkvdHVpLWludGVycC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4y MDA5MDkwOS5vcmlnL2dkYi90dWkvdHVpLWludGVycC5jCTIwMDktMDktMDkgMjA6MDU6NDguMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvdHVpL3R1aS1pbnRlcnAu YwkyMDA5LTA5LTA5IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTAxLTAxIDA4OjMyOjA3LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3R1aS90dWktaW50ZXJwLmMJ MjAxMC0wMS0xNSAxMTo0NToyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0zMCw2ICszMCw3IEBACiAg I2luY2x1ZGUgInR1aS90dWkuaCIKICAjaW5jbHVkZSAidHVpL3R1aS1pby5oIgpAQCAtNTIyLDEw ICs1MTQsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL3R1aS90dWktaW50ZXJw LmMKICAgICAgICAvKiBUZWxsIHJlYWRsaW5lIHdoYXQgdGhlIHByb21wdCB0byBkaXNwbGF5IGlz IGFuZCB3aGF0IGZ1bmN0aW9uCiAgICAgICAgICAgaXQgd2lsbCBuZWVkIHRvIGNhbGwgYWZ0ZXIg YSB3aG9sZSBsaW5lIGlzIHJlYWQuIFRoaXMgYWxzbwogICAgICAgICAgIGRpc3BsYXlzIHRoZSBm aXJzdCBwcm9tcHQuICAqLwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2FjbG9jYWwu bTQKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9hY2xvY2FsLm00CiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMDktMDktMDkg MjA6MDU6NDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvYWNs b2NhbC5tNAkyMDA5LTA5LTA5IDIwOjA5OjMyLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDA5LTExLTExIDA1OjQyOjM5LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2FjbG9jYWwubTQJMjAxMC0w MS0xNSAxMTo0NToyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOSw2ICsxOSwxNjIgQEAgWW91IGhh dmUgYW5vdGhlciB2ZXJzaW9uIG9mIGF1dG9jb25mLiAgSQogIElmIHlvdSBoYXZlIHByb2JsZW1z LCB5b3UgbWF5IG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUgYnVpbGQgc3lzdGVtIGVudGlyZWx5Lgog IFRvIGRvIHNvLCB1c2UgdGhlIHByb2NlZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0 eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0pXSkKQEAgLTY4OSwxMCArNjgxLDEwIEBAIEluZGV4OiBn ZGItNi44LjUwLjIwMDkwOTA5L2dkYi9hY2xvY2FsLm00CiAgIyBDb3B5cmlnaHQgKEMpIDIwMDIs IDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogICMKICAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlnLmluCitJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlnLmluCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9jb25maWcuaW4JMjAwOS0wOS0wOSAyMDowODow NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWcuaW4J MjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDEwLTAxLTE1IDAzOjIyOjMxLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2NvbmZpZy5pbgkyMDEwLTAxLTE1IDExOjQ1 OjIwLjAwMDAwMDAwMCArMDEwMAogQEAgLTQyLDYgKzQyLDkgQEAKICAvKiBEZWZpbmUgdG8gQkZE J3MgZGVmYXVsdCB0YXJnZXQgdmVjdG9yLiAqLwogICN1bmRlZiBERUZBVUxUX0JGRF9WRUMKQEAg LTcxMywxMCArNzA1LDEwIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWcu aW4KICAvKiBEZWZpbmUgaWYgbGlidW53aW5kIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8KICAj dW5kZWYgSEFWRV9MSUJVTldJTkQKICAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9j b25maWd1cmUKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDA5LTA5 LTA5IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2Ri L2NvbmZpZ3VyZQkyMDA5LTA5LTA5IDIwOjA5OjM1LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlCTIwMTAt MDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtNjc2LDYgKzY3Niw5IEBAIFJFUE9S VF9CVUdTX1RPCiAgUEtHVkVSU0lPTgogIFRBUkdFVF9PQlMKQEAgLTcyNyw3ICs3MTksNyBAQCBJ bmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCiAgcHl0aG9uZGlyCiAgR0RC X0RBVEFESVJfUEFUSAogIEdEQl9EQVRBRElSCi1AQCAtODg2LDYgKzg4OSw3IEBAIHdpdGhfc2Vw YXJhdGVfZGVidWdfZGlyCitAQCAtODg4LDYgKzg5MSw3IEBAIHdpdGhfc2VwYXJhdGVfZGVidWdf ZGlyCiAgd2l0aF9nZGJfZGF0YWRpcgogIHdpdGhfcmVsb2NhdGVkX3NvdXJjZXMKICB3aXRoX3B5 dGhvbmRpcgpAQCAtNzM1LDcgKzcyNyw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dk Yi9jb25maWd1cmUKICBlbmFibGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxl X2dkYmNsaQotQEAgLTkyNSw2ICs5MjksOSBAQCBMREZMQUdTCitAQCAtOTI4LDYgKzkzMiw5IEBA IExERkxBR1MKICBMSUJTCiAgQ1BQRkxBR1MKICBDUFAKQEAgLTc0NSw3ICs3MzcsNyBAQCBJbmRl eDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhN S01GJwotQEAgLTE1ODgsNiArMTU5NSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE1OTMs NiArMTYwMCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgW0RBVEFESVIvZ2RiXQogICAgLS13aXRoLXB5dGhvbmRpciAgICAgICAgaW5zdGFsbCBQeXRo b24gZGF0YSBmaWxlcyBpbiB0aGlzIHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtE QVRBRElSL2dkYi9weXRob25dCkBAIC03NTQsNyArNzQ2LDcgQEAgSW5kZXg6IGdkYi02LjguNTAu MjAwOTA5MDkvZ2RiL2NvbmZpZ3VyZQogICAgLS13aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxp YnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAogICAgLS13aXRoLWN1cnNlcyAgICAgICAg ICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSB0ZXJtY2FwCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtMTYyMSw2ICsxNjMwLDkgQEAgU29tZSBp bmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CitAQCAtMTYyNyw2ICsxNjM2LDkgQEAg U29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICBDUFBGTEFHUyAgICBD L0MrKy9PYmplY3RpdmUgQyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUuZy4gLUk8aW5jbHVkZSBkaXI+ IGlmCiAgICAgICAgICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGluIGEgbm9uc3RhbmRhcmQgZGly ZWN0b3J5IDxpbmNsdWRlIGRpcj4KICAgIENQUCAgICAgICAgIEMgcHJlcHJvY2Vzc29yCkBAIC03 NjQsNyArNzU2LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3VyZQog ICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDIENvbXBpbGVyJyBpbXBsZW1lbnRhdGlv biB0byB1c2UuIERlZmF1bHRzIHRvCiAgICAgICAgICAgICAgICB0aGUgZmlyc3QgcHJvZ3JhbSBm b3VuZCBvdXQgb2Y6IGBiaXNvbiAteScsIGBieWFjYycsIGB5YWNjJy4KICAgIFlGTEFHUyAgICAg IFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIGJ5IGRlZmF1bHQgdG8g JFlBQ0MuCi1AQCAtNjY3NSw2ICs2Njg3LDQ4NiBAQCBfQUNFT0YKK0BAIC02NzYwLDYgKzY3NzIs NDg2IEBAIGVsc2UKICBmaQogIAogIApAQCAtOTMzLDcgKzkyNSw3IEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwOTA5L2dkYi9jb25maWd1cmUKICsgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAogKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICsKLSsvKiBEdXBs aWNhdGUgaGVyZSB0aGUgZGVjbGFyYXRpb25zIHRvIHZlcmlmeSB0aGV5IG1hdGNoICJzeW1maWxl LmMiLiAgKi8KKysvKiBEdXBsaWNhdGUgaGVyZSB0aGUgZGVjbGFyYXRpb25zIHRvIHZlcmlmeSB0 aGV5IG1hdGNoICJlbGZyZWFkLmMiLiAgKi8KICsjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgogKyNp bmNsdWRlIDxycG0vcnBtdHMuaD4KICsjaW5jbHVkZSA8cnBtL3JwbWRiLmg+CkBAIC0xMTg3LDcg KzExNzksNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCiArICAg IGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKICsvKiBlbmQgY29u ZmRlZnMuaC4gICovCiArCi0rLyogRHVwbGljYXRlIGhlcmUgdGhlIGRlY2xhcmF0aW9ucyB0byB2 ZXJpZnkgdGhleSBtYXRjaCAic3ltZmlsZS5jIi4gICovCisrLyogRHVwbGljYXRlIGhlcmUgdGhl IGRlY2xhcmF0aW9ucyB0byB2ZXJpZnkgdGhleSBtYXRjaCAiZWxmcmVhZC5jIi4gICovCiArI2lu Y2x1ZGUgPHJwbS9ycG1saWIuaD4KICsjaW5jbHVkZSA8cnBtL3JwbXRzLmg+CiArI2luY2x1ZGUg PHJwbS9ycG1kYi5oPgpAQCAtMTI1MSw3ICsxMjQzLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTA5MDkvZ2RiL2NvbmZpZ3VyZQogIAogIAogIAotQEAgLTk3MjEsMjY1ICsxMDIxMywyNSBAQCAk YXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mCitAQCAtMTAwNDMsMjY1ICsx MDUzNSwyNSBAQCAkYXNfZWNobyAiI2RlZmluZSBTVERDX0hFQURFUlMgMSIgPj5jb25mCiAgCiAg ZmkKICAKQEAgLTE1MjcsMTEgKzE1MTksMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkv Z2RiL2NvbmZpZ3VyZQogIAogIGZpCiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIv Y29uZmlndXJlLmFjCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlndXJlLmFj CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9jb25maWd1cmUu YWMJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIw MDkwOTA5L2dkYi9jb25maWd1cmUuYWMJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xNTEsNiArMTUxLDE5OSBAQCBlbHNlCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUuYWMJMjAxMC0wMS0xNSAxMTo0 NToyMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNTIsNiArMTUyLDE5OSBAQCBlbHNlCiAgZmkKICBB Q19TVUJTVChweXRob25kaXIpCiAgCkBAIC0xNjY0LDcgKzE2NTYsNyBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlLmFjCiArICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdT IgogKyAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKICsgICAgQUNfQ09NUElMRV9JRkVMU0Uo QUNfTEFOR19QUk9HUkFNKFtbCi0rLyogRHVwbGljYXRlIGhlcmUgdGhlIGRlY2xhcmF0aW9ucyB0 byB2ZXJpZnkgdGhleSBtYXRjaCAic3ltZmlsZS5jIi4gICovCisrLyogRHVwbGljYXRlIGhlcmUg dGhlIGRlY2xhcmF0aW9ucyB0byB2ZXJpZnkgdGhleSBtYXRjaCAiZWxmcmVhZC5jIi4gICovCiAr I2luY2x1ZGUgPHJwbS9ycG1saWIuaD4KICsjaW5jbHVkZSA8cnBtL3JwbXRzLmg+CiArI2luY2x1 ZGUgPHJwbS9ycG1kYi5oPgpAQCAtMTczMSwxNyArMTcyMywxNyBAQCBJbmRleDogZ2RiLTYuOC41 MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlLmFjCiAgCiAgQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRl c3RzdWl0ZSkKICAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9hY2luY2x1ZGUubTQK K0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9hY2luY2x1ZGUubTQKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNi44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDA5LTA5LTA5 IDIwOjA1OjQ4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2Fj aW5jbHVkZS5tNAkyMDA5LTA5LTA5IDIwOjA4OjA0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDEtMDggMDg6MTY6NDMu MDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYWNpbmNsdWRlLm00 CTIwMTAtMDEtMTUgMTE6NDU6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMSwzICsxLDUgQEAKICsj IHNlcmlhbCAxCiArCiAgZG5sIHdyaXR0ZW4gYnkgUm9iIFNhdm95ZSA8cm9iQGN5Z251cy5jb20+ IGZvciBDeWdudXMgU3VwcG9ydAogIGRubCBtYWpvciByZXdyaXRpbmcgZm9yIFRjbCA3LjUgYnkg RG9uIExpYmVzIDxsaWJlc0BuaXN0Lmdvdj4KICAKLUBAIC03OSw4ICs4MSw2IEBAIEFDX01TR19S RVNVTFQoeWVzKQorQEAgLTgxLDggKzgzLDYgQEAgQUNfTVNHX1JFU1VMVCh5ZXMpCiAgIyBGb3Vu ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAogICMgQm9zdG9u LCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxv Y2F0ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5kZXggNWYyNjc5Yy4u NzdiYmM3ZiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBAIC0xLDExICsxLDExIEBACi1JbmRleDogZ2Ri LTcuMC9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxv dy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC5vcmlnL2dkYi9jb3JlbG93LmMJMjAwOS0wNy0z MSAxNzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4wL2dkYi9jb3JlbG93LmMJMjAw OS0xMC0yMyAwMDoxNzoyOS4wMDAwMDAwMDAgKzAyMDAKLUBAIC00NSw2ICs0NSwxMCBAQAotICNp bmNsdWRlICJleGNlcHRpb25zLmgiCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9j b3JlbG93LmMJMjAxMC0wMS0wNCAxNTo1Nzo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9jb3JlbG93LmMJMjAxMC0wMS0xNSAxMToxNDowNS4wMDAwMDAwMDAg KzAxMDAKK0BAIC00Niw2ICs0NiwxMCBAQAogICNpbmNsdWRlICJzb2xpYi5oIgogICNpbmNsdWRl ICJmaWxlbmFtZXMuaCIKKyAjaW5jbHVkZSAicHJvZ3NwYWNlLmgiCiArI2luY2x1ZGUgImF1eHYu aCIKICsjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgogKyNpbmNsdWRlICJvYmpmaWxlcy5oIgpAQCAt MTMsNyArMTMsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvY29yZWxvdy5jCiAgCiAgCiAgI2lmbmRl ZiBPX0xBUkdFRklMRQotQEAgLTI3Myw2ICsyNzcsNTIgQEAgYWRkX3RvX3RocmVhZF9saXN0IChi ZmQgKmFiZmQsIGFzZWN0aW9uIAorQEAgLTI5MCw2ICsyOTQsNTIgQEAgYWRkX3RvX3RocmVhZF9s aXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uIAogICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZDsJCQkg LyogWWVzLCBtYWtlIGl0IGN1cnJlbnQgKi8KICB9CiAgCkBAIC02Niw3ICs2Niw3IEBAIEluZGV4 OiBnZGItNy4wL2dkYi9jb3JlbG93LmMKICAvKiBUaGlzIHJvdXRpbmUgb3BlbnMgYW5kIHNldHMg dXAgdGhlIGNvcmUgZmlsZSBiZmQuICAqLwogIAogIHN0YXRpYyB2b2lkCi1AQCAtMzcxLDYgKzQy MSwxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCitAQCAtMzg3 LDYgKzQzNywxMiBAQCBjb3JlX29wZW4gKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCiAg ICBwdXNoX3RhcmdldCAoJmNvcmVfb3BzKTsKICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFp bik7CiAgCkBAIC03NiwxMCArNzYsMTAgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2NvcmVsb3cuYwog KyAgaWYgKGJ1aWxkX2lkX2NvcmVfbG9hZHMgIT0gMCkKICsgICAgYnVpbGRfaWRfbG9jYXRlX2V4 ZWMgKGZyb21fdHR5KTsKICsKLSAgIGFkZF9pbmZlcmlvcl9zaWxlbnQgKGNvcmVsb3dfcGlkKTsK LSAKICAgIC8qIERvIHRoaXMgYmVmb3JlIGFja25vd2xlZGdpbmcgdGhlIGluZmVyaW9yLCBzbyBp ZgotQEAgLTg3OCw0ICs5MzQsMTEgQEAgX2luaXRpYWxpemVfY29yZWxvdyAodm9pZCkKKyAgICAg IHBvc3RfY3JlYXRlX2luZmVyaW9yIHRocm93cyAoY2FuIGhhcHBlbiBlYXNpbGx5IGlmIHlvdSdy ZSBsb2FkaW5nCisgICAgICBhIGNvcmUgZmlsZSB3aXRoIHRoZSB3cm9uZyBleGVjKSwgd2UgYXJl bid0IGxlZnQgd2l0aCB0aHJlYWRzCitAQCAtOTI1LDQgKzk4MSwxMSBAQCBfaW5pdGlhbGl6ZV9j b3JlbG93ICh2b2lkKQogICAgaW5pdF9jb3JlX29wcyAoKTsKICAKICAgIGFkZF90YXJnZXQgKCZj b3JlX29wcyk7CkBAIC05MSwxMSArOTEsMTEgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2NvcmVsb3cu YwogKwkJCSAgIE5VTEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7 CiAgfQotSW5kZXg6IGdkYi03LjAvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAu b3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMTAtMjMgMDA6MTI6MzkuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMC9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMTAtMjMgMDA6MTc6Mjku MDAwMDAwMDAwICswMjAwCi1AQCAtMTM4OTYsNiArMTM4OTYsMjcgQEAgaW5mb3JtYXRpb24gZmls ZXMuCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx MC0wMS0xNSAwMzoyMzo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAwMDAgKzAxMDAK K0BAIC0xNDI1OCw2ICsxNDI1OCwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRh YmxlCiAgCkBAIC0xMjMsMTEgKzEyMywxMSBAQCBJbmRleDogZ2RiLTcuMC9nZGIvZG9jL2dkYi50 ZXhpbmZvCiAgQGNpbmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMKICBAY2luZGV4 IGRlYnVnIGxpbmsgc2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNlY3Rpb24g b2YgdGhlIGV4ZWN1dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03LjAvZ2RiL3NvbGliLXN2 cjQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjAub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMDktMTAtMjMgMDA6MTI6 MzguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMC9nZGIvc29saWItc3ZyNC5jCTIwMDktMTAt MjMgMDA6MTc6MjkuMDAwMDAwMDAwICswMjAwCi1AQCAtMTEwMSw5ICsxMTAxLDQ5IEBAIHN2cjRf Y3VycmVudF9zb3MgKHZvaWQpCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zb2xp Yi1zdnI0LmMJMjAxMC0wMS0xNSAwMzoyMjoxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi9zb2xpYi1zdnI0LmMJMjAxMC0wMS0xNSAxMToxMjozMy4wMDAwMDAw MDAgKzAxMDAKK0BAIC0xMTE2LDkgKzExMTYsNDkgQEAgc3ZyNF9jdXJyZW50X3NvcyAodm9pZCkK ICAJCSAgICAgc2FmZV9zdHJlcnJvciAoZXJyY29kZSkpOwogIAkgIGVsc2UKICAJICAgIHsKQEAg LTE4MCwyMiArMTgwLDI1IEBAIEluZGV4OiBnZGItNy4wL2dkYi9zb2xpYi1zdnI0LmMKICAJICAg IH0KICAJICB4ZnJlZSAoYnVmZmVyKTsKICAKLUluZGV4OiBnZGItNy4wL2dkYi9zeW1maWxlLmMK K0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4wLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDA5LTEwLTIzIDAwOjEyOjM4LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjAvZ2RiL3N5bWZpbGUuYwkyMDA5LTEwLTIzIDAwOjQzOjI4LjAw MDAwMDAwMCArMDIwMAotQEAgLTU2LDYgKzU2LDcgQEAKLSAjaW5jbHVkZSAiZWxmLWJmZC5oIgot ICNpbmNsdWRlICJzb2xpYi5oIgotICNpbmNsdWRlICJyZW1vdGUuaCIKKy0tLSBnZGItNy4wLjUw LjIwMTAwMTE1Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1 IDExOjQzOjMwLjAwMDAwMDAwMCArMDEwMAorQEAgLTM2LDYgKzM2LDEwIEBACisgI2luY2x1ZGUg ImdkYi1zdGFicy5oIgorICNpbmNsdWRlICJjb21wbGFpbnRzLmgiCisgI2luY2x1ZGUgImRlbWFu Z2xlLmgiCiArI2luY2x1ZGUgImxpYmJmZC5oIgorKyNpbmNsdWRlICJnZGJjb3JlLmgiCisrI2lu Y2x1ZGUgImdkYmNtZC5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgogIAotICNpbmNsdWRlIDxz eXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLUBAIC0xMTczLDE2ICsxMTc0LDY1IEBA IHN5bWJvbF9maWxlX2NsZWFyIChpbnQgZnJvbV90dHkpCi0gICAgIHByaW50Zl91bmZpbHRlcmVk IChfKCJObyBzeW1ib2wgZmlsZSBub3cuXG4iKSk7Ci0gfQorIGV4dGVybiB2b2lkIF9pbml0aWFs aXplX2VsZnJlYWQgKHZvaWQpOwogIAorQEAgLTU2Nyw2ICs1NzEsMjAgQEAgZWxmX3N5bXRhYl9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorIAl9CisgICAgIH0KKyB9CiArLyogTG9jYXRl IE5UX0dOVV9CVUlMRF9JRCBhbmQgcmV0dXJuIGl0cyBtYXRjaGluZyBkZWJ1ZyBmaWxlbmFtZS4K ICsgICBGSVhNRTogTk9URSBkZWNvZGluZyBzaG91bGQgYmUgdW5pZmllZCB3aXRoIHRoZSBCRkQg Y29yZSBub3RlcyBkZWNvZGluZy4gICovCiArCkBAIC0yMTAsMTAgKzIxMywxMCBAQCBJbmRleDog Z2RiLTcuMC9nZGIvc3ltZmlsZS5jCiArICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJWZXJi b3NpdHkgbGV2ZWwgb2YgdGhlIGJ1aWxkLWlkIGxvY2F0b3IgaXMgJXMuXG4iKSwKICsJCSAgICB2 YWx1ZSk7CiArfQotKworIAogIHN0cnVjdCBidWlsZF9pZAogICAgewotICAgICBzaXplX3Qgc2l6 ZTsKK0BAIC01NzQsMTAgKzU5Miw0NCBAQCBzdHJ1Y3QgYnVpbGRfaWQKICAgICAgZ2RiX2J5dGUg ZGF0YVsxXTsKICAgIH07CiAgCkBAIC0yNjAsNyArMjYzLDcgQEAgSW5kZXg6IGdkYi03LjAvZ2Ri L3N5bWZpbGUuYwogIHsKICAgIHN0cnVjdCBidWlsZF9pZCAqcmV0dmFsOwogIAotQEAgLTExOTgs NiArMTI0OCwzNDggQEAgYnVpbGRfaWRfYmZkX2dldCAoYmZkICphYmZkKQorQEAgLTU5Myw2ICs2 NDUsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKICAgIHJldHVybiByZXR2YWw7 CiAgfQogIApAQCAtNjA5LDcgKzYxMiw3IEBAIEluZGV4OiBnZGItNy4wL2dkYi9zeW1maWxlLmMK ICAvKiBSZXR1cm4gaWYgRklMRU5BTUUgaGFzIE5UX0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUg Q0hFQ0sgdmFsdWUuICAqLwogIAogIHN0YXRpYyBpbnQKLUBAIC0xMjE1LDcgKzE2MDcsNyBAQCBi dWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtNjA3LDcgKzEwMDEs NyBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAgICBpZiAoYWJm ZCA9PSBOVUxMKQogICAgICByZXR1cm4gMDsKICAKQEAgLTYxOCw3ICs2MjEsNyBAQCBJbmRleDog Z2RiLTcuMC9nZGIvc3ltZmlsZS5jCiAgCiAgICBpZiAoZm91bmQgPT0gTlVMTCkKICAgICAgd2Fy bmluZyAoXygiRmlsZSBcIiVzXCIgaGFzIG5vIGJ1aWxkLWlkLCBmaWxlIHNraXBwZWQiKSwgZmls ZW5hbWUpOwotQEAgLTEyMzQsMTQgKzE2MjYsMTYgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBj aGFyICpmaWxlbmFtZSwgcworQEAgLTYyNiwxNCArMTAyMCwxNiBAQCBidWlsZF9pZF92ZXJpZnkg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTYz OSw3ICs2NDIsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiAgCiAgICAvKiBLZWVw IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWlu ZyAiIiB3aWxsCiAgICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAg LTEyNzIsNyArMTY2NiwxMCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1 aWxkCitAQCAtNjY0LDcgKzEwNjAsMTAgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0 cnVjdCBidWlsZAogIAkqcysrID0gJy8nOwogICAgICAgIHdoaWxlIChzaXplLS0gPiAwKQogIAlz ICs9IHNwcmludGYgKHMsICIlMDJ4IiwgKHVuc2lnbmVkKSAqZGF0YSsrKTsKQEAgLTY1MSw3ICs2 NTQsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiAgCiAgICAgICAgLyogbHJlYWxw YXRoKCkgaXMgZXhwZW5zaXZlIGV2ZW4gZm9yIHRoZSB1c3VhbGx5IG5vbi1leGlzdGVudCBmaWxl cy4gICovCiAgICAgICAgaWYgKGFjY2VzcyAobGluaywgRl9PSykgPT0gMCkKLUBAIC0xMjg1LDE1 ICsxNjgyLDE4NSBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitA QCAtNjc3LDE3ICsxMDc2LDE4OCBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0 IGJ1aWxkCiAgCX0KICAKICAgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCkBAIC02OTYsOSArNjk5 LDkgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL3N5bWZpbGUuYwogKyAgeGZyZWUgKGxpbmspOwogKyAg eGZyZWUgKGxpbmtfYWxsKTsKICsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKworICAgcmV0dXJu IHJldHZhbDsKKyB9CisgCiArLyogVGhpcyBNSVNTSU5HX0ZJTEVQQUlSX0hBU0ggdHJhY2tlciBp cyB1c2VkIG9ubHkgZm9yIHRoZSBkdXBsaWNpdGUgbWVzc2FnZXMKICsgICAgIFRyeSB0byBpbnN0 YWxsIHRoZSBoYXNoIGZpbGUgLi4uCiArICAgYXZvaWRhbmNlLiAgKi8KQEAgLTcyMSw5ICs3MjQs OSBAQCBJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiArCiArICByZXR2YWwgPSBvYnN0YWNr X2FsbG9jICgmbWlzc2luZ19maWxlcGFpcl9vYnN0YWNrLCBzaXplKTsKICsgIG1lbXNldCAocmV0 dmFsLCAwLCBzaXplKTsKLSAgIHJldHVybiByZXR2YWw7Ci0gfQotIAorKyAgcmV0dXJuIHJldHZh bDsKKyt9CisrCiArc3RhdGljIGhhc2h2YWxfdAogK21pc3NpbmdfZmlsZXBhaXJfaGFzaF9mdW5j IChjb25zdCBzdHJ1Y3QgbWlzc2luZ19maWxlcGFpciAqZWxlbSkKICt7CkBAIC04MzYsNzAgKzgz OSw4OCBAQCBJbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5jCiArfQogKwogIHN0YXRpYyBjaGFy ICoKLSBnZXRfZGVidWdfbGlua19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdW5zaWdu ZWQgbG9uZyAqY3JjMzJfb3V0KQorLWZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlk IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlf YnVpbGRpZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCSAgICAgY2hhciAqKmJ1aWxk X2lkX2ZpbGVuYW1lX3JldHVybikKICB7Ci1AQCAtMTM4NCwxMyArMTk1MSwxNCBAQCBmaW5kX3Nl cGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlCi0gICB1bnNpZ25lZCBsb25nIGNyYzMy OworICAgYXNlY3Rpb24gKnNlY3Q7CisgICBjaGFyICpiYXNlbmFtZSwgKm5hbWVfY29weSwgKmRl YnVnZGlyOworQEAgLTY5OSwxMiArMTI2OSwxNiBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVf YnlfYnVpbGRpZCAoc3RyCiAgICBpbnQgaTsKICAgIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQ7 Ci0rICBjaGFyICpidWlsZF9pZF9maWxlbmFtZSA9IE5VTEw7CiAgCiAtICBidWlsZF9pZCA9IGJ1 aWxkX2lkX2JmZF9nZXQgKG9iamZpbGUtPm9iZmQpOworKyAgaWYgKGJ1aWxkX2lkX2ZpbGVuYW1l X3JldHVybikKKysgICAgKmJ1aWxkX2lkX2ZpbGVuYW1lX3JldHVybiA9IE5VTEw7CisrCiArICBi dWlsZF9pZCA9IGJ1aWxkX2lkX2JmZF9zaGRyX2dldCAob2JqZmlsZS0+b2JmZCk7CiAgICBpZiAo YnVpbGRfaWQgIT0gTlVMTCkKICAgICAgewogICAgICAgIGNoYXIgKmJ1aWxkX2lkX25hbWU7CiAg CiAtICAgICAgYnVpbGRfaWRfbmFtZSA9IGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChidWls ZF9pZCk7Ci0rICAgICAgYnVpbGRfaWRfbmFtZSA9IGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChidWls ZF9pZCwgJmJ1aWxkX2lkX2ZpbGVuYW1lLCAxKTsKKysgICAgICBidWlsZF9pZF9uYW1lID0gYnVp bGRfaWRfdG9fZmlsZW5hbWUgKGJ1aWxkX2lkLCBidWlsZF9pZF9maWxlbmFtZV9yZXR1cm4sCisr CQkJCQkgICAgMSk7CiAgICAgICAgeGZyZWUgKGJ1aWxkX2lkKTsKICAgICAgICAvKiBQcmV2ZW50 IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGJ1aWxk X2lkX25hbWUgIT0gTlVMTCAmJiBzdHJjbXAgKGJ1aWxkX2lkX25hbWUsIG9iamZpbGUtPm5hbWUp ID09IDApCi1AQCAtMTQwMCw3ICsxOTY4LDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAo c3RydWN0IG9iamZpbGUKK0BAIC03MTQsNyArMTI4OCw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdf ZmlsZV9ieV9idWlsZGlkIChzdHIKICAJICB4ZnJlZSAoYnVpbGRfaWRfbmFtZSk7CiAgCX0KICAg ICAgICBlbHNlIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwpCiAtICAgICAgICByZXR1cm4gYnVp bGRfaWRfbmFtZTsKLSsJewotKwkgIHhmcmVlIChidWlsZF9pZF9maWxlbmFtZSk7Ci0rCSAgcmV0 dXJuIGJ1aWxkX2lkX25hbWU7Ci0rCX0KKysJcmV0dXJuIGJ1aWxkX2lkX25hbWU7CiAgICAgIH0K KyAgIHJldHVybiBOVUxMOworIH0KK0BAIC04ODcsOSArMTQ2MSwxMCBAQCBlbGZfc3ltZmlsZV9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCisgICAgICBgLmdudV9kZWJ1Z2xpbmsnIG1heSBu byBsb25nZXIgYmUgcHJlc2VudCB3aXRoIGAubm90ZS5nbnUuYnVpbGQtaWQnLiAgKi8KKyAgIGVs c2UKKyAgICAgeworLSAgICAgIGNoYXIgKmRlYnVnZmlsZTsKKysgICAgICBjaGFyICpkZWJ1Z2Zp bGUsICpidWlsZF9pZF9maWxlbmFtZTsKKyAKKy0gICAgICBkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFy YXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAob2JqZmlsZSk7CisrICAgICAgZGVidWdmaWxlID0g ZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsCisrCQkJCQkJICAg ICAgICZidWlsZF9pZF9maWxlbmFtZSk7CisgCisgICAgICAgaWYgKGRlYnVnZmlsZSA9PSBOVUxM KQorIAlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfZGVidWdsaW5rIChv YmpmaWxlKTsKK0BAIC05MDAsNiArMTQ3NSwxMiBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsCisgCSAgc3ltYm9sX2ZpbGVfYWRkX3NlcGFyYXRlIChhYmZkLCBzeW1m aWxlX2ZsYWdzLCBvYmpmaWxlKTsKKyAJICB4ZnJlZSAoZGVidWdmaWxlKTsKKyAJfQorKyAgICAg IC8qIENoZWNrIGlmIGFueSBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGhhcyBiZWVuIGV4dHJhY3RlZCBv dXQuICAqLworKyAgICAgIGVsc2UgaWYgKGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmpmaWxl LT5vYmZkLCAiLmdudV9kZWJ1Z2xpbmsiKQorKwkgICAgICAgIT0gTlVMTCkKKysJZGVidWdfcHJp bnRfbWlzc2luZyAob2JqZmlsZS0+bmFtZSwgYnVpbGRfaWRfZmlsZW5hbWUpOworKworKyAgICAg IHhmcmVlIChidWlsZF9pZF9maWxlbmFtZSk7CisgICAgIH0KKyB9CiAgCi0gICBiYXNlbmFtZSA9 IGdldF9kZWJ1Z19saW5rX2luZm8gKG9iamZpbGUsICZjcmMzMik7Ci1AQCAtMTUwMSw4ICsyMDcy LDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUKLSAgIAotICAg eGZyZWUgKGRlYnVnZmlsZSk7Ci0gICBkZWJ1Z2ZpbGUgPSBOVUxMOwotKyAgZGVidWdfcHJpbnRf bWlzc2luZyAob2JqZmlsZS0+bmFtZSwgYnVpbGRfaWRfZmlsZW5hbWUpOwotIAotIGNsZWFudXBf cmV0dXJuX2RlYnVnZmlsZToKLSsgIHhmcmVlIChidWlsZF9pZF9maWxlbmFtZSk7Ci0gICB4ZnJl ZSAoY2Fub25fbmFtZSk7Ci0gICB4ZnJlZSAoYmFzZW5hbWUpOwotICAgeGZyZWUgKGRpcik7Ci1A QCAtNDI1Niw0ICs0ODI5LDE2IEBAIGVhY2ggZ2xvYmFsIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGNv bXBvbmUKLSAJCQkJICAgICBOVUxMLAotIAkJCQkgICAgIHNob3dfZGVidWdfZmlsZV9kaXJlY3Rv cnksCi0gCQkJCSAgICAgJnNldGxpc3QsICZzaG93bGlzdCk7Ci0rCi0rICAgYWRkX3NldHNob3df emludGVnZXJfY21kICgiYnVpbGQtaWQtdmVyYm9zZSIsIG5vX2NsYXNzLCAmYnVpbGRfaWRfdmVy Ym9zZSwKLSsgCQkJICAgIF8oIlwKLSsgU2V0IGRlYnVnZ2luZyBsZXZlbCBvZiB0aGUgYnVpbGQt aWQgbG9jYXRvci4iKSwgXygiXAotKyBTaG93IGRlYnVnZ2luZyBsZXZlbCBvZiB0aGUgYnVpbGQt aWQgbG9jYXRvci4iKSwgXygiXAotKyBMZXZlbCAxIChkZWZhdWx0KSBlbmFibGVzIHByaW50aW5n IHRoZSBtaXNzaW5nIGRlYnVnIGZpbGVuYW1lcyxcblwKLSsgbGV2ZWwgMiBhbHNvIHByaW50cyB0 aGUgcGFyc2luZyBvZiBiaW5hcmllcyB0byBmaW5kIHRoZSBpZGVudGlmaWNhdG9ycy4iKSwKLSsg CQkJICAgIE5VTEwsCi0rIAkJCSAgICBzaG93X2J1aWxkX2lkX3ZlcmJvc2UsCi0rIAkJCSAgICAm c2V0bGlzdCwgJnNob3dsaXN0KTsKLSsKLSsgICBvYnNlcnZlcl9hdHRhY2hfZXhlY3V0YWJsZV9j aGFuZ2VkIChkZWJ1Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQpOworQEAgLTEwNzIsNCArMTY1 MywxNiBAQCB2b2lkCisgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKKyB7CisgICBhZGRfc3lt dGFiX2ZucyAoJmVsZl9zeW1fZm5zKTsKKysKKysgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAo ImJ1aWxkLWlkLXZlcmJvc2UiLCBub19jbGFzcywgJmJ1aWxkX2lkX3ZlcmJvc2UsCisrCQkJICAg IF8oIlwKKytTZXQgZGVidWdnaW5nIGxldmVsIG9mIHRoZSBidWlsZC1pZCBsb2NhdG9yLiIpLCBf KCJcCisrU2hvdyBkZWJ1Z2dpbmcgbGV2ZWwgb2YgdGhlIGJ1aWxkLWlkIGxvY2F0b3IuIiksIF8o IlwKKytMZXZlbCAxIChkZWZhdWx0KSBlbmFibGVzIHByaW50aW5nIHRoZSBtaXNzaW5nIGRlYnVn IGZpbGVuYW1lcyxcblwKKytsZXZlbCAyIGFsc28gcHJpbnRzIHRoZSBwYXJzaW5nIG9mIGJpbmFy aWVzIHRvIGZpbmQgdGhlIGlkZW50aWZpY2F0b3JzLiIpLAorKwkJCSAgICBOVUxMLAorKwkJCSAg ICBzaG93X2J1aWxkX2lkX3ZlcmJvc2UsCisrCQkJICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwor KworKyAgb2JzZXJ2ZXJfYXR0YWNoX2V4ZWN1dGFibGVfY2hhbmdlZCAoZGVidWdfcHJpbnRfZXhl Y3V0YWJsZV9jaGFuZ2VkKTsKICB9Ci1JbmRleDogZ2RiLTcuMC9nZGIvc3ltZmlsZS5oCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMC5vcmlnL2dkYi9zeW1maWxlLmgJMjAwOS0xMC0yMyAwMDoxMjozOC4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4wL2dkYi9zeW1maWxlLmgJMjAwOS0xMC0yMyAwMDoxNzoyOS4wMDAwMDAw MDAgKzAyMDAKLUBAIC0zODEsNiArMzgxLDEzIEBAIGV4dGVybiBpbnQgc3ltZmlsZV9tYXBfb2Zm c2V0c190b19zZWdtZW4KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bWZpbGUu aAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL3N5bWZpbGUuaAkyMDEwLTAxLTE1IDExOjEyOjMzLjAwMDAwMDAwMCArMDEwMAor QEAgLTM5Miw2ICszOTIsMTMgQEAgZXh0ZXJuIGludCBzeW1maWxlX21hcF9vZmZzZXRzX3RvX3Nl Z21lbgogIHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqZ2V0X3N5bWZpbGVfc2VnbWVudF9k YXRhIChiZmQgKmFiZmQpOwogIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0 IHN5bWZpbGVfc2VnbWVudF9kYXRhICpkYXRhKTsKICAKQEAgLTkxMywxMCArOTM0LDEwIEBAIElu ZGV4OiBnZGItNy4wL2dkYi9zeW1maWxlLmgKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAog IGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKLUluZGV4OiBn ZGItNy4wL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTEwLTIzIDAwOjEyOjM4LjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDA5LTEwLTIz IDAwOjE3OjI5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDEtMTUgMDM6MjI6MTMuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIw MTAtMDEtMTUgMTE6MTI6MzMuMDAwMDAwMDAwICswMTAwCiBAQCAtMTI0OCw2ICsxMjQ4LDE2IEBA IHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJICAgIHdhcm5pbmcgIkNvdWxkbid0IHNl dCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KQEAgLTkzNCwxMCArOTU1LDEwIEBAIEluZGV4OiBnZGIt Ny4wL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgcmV0dXJuIDA7CiAgfQogIAotSW5k ZXg6IGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMC5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIw MDktMDktMTUgMjA6NTE6MjYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMC9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDA5LTEwLTIzIDAwOjE3OjI5LjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBw b3J0LmV4cAkyMDEwLTAxLTEyIDIyOjQwOjI1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMC0wMS0xNSAx MToxMjozMy4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yMjEsNiArMjIxLDE2IEBAIHByb2MgZGVmYXVs dF9taV9nZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgfQogICAgICAJfQpAQCAtOTU1LDExICs5 NzYsMTEgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAK ICAKICAgICAgZGV0ZWN0X2FzeW5jCiAgCi1JbmRleDogZ2RiLTcuMC9nZGIvb2JqZmlsZXMuaAor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL29iamZpbGVzLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4wLm9yaWcvZ2RiL29iamZpbGVzLmgJMjAwOS0xMC0yMyAwMDoxMjozOC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4wL2dkYi9vYmpmaWxlcy5oCTIwMDktMTAtMjMgMDA6MTc6Mjku MDAwMDAwMDAwICswMjAwCi1AQCAtNDI4LDYgKzQyOCwxMCBAQCBzdHJ1Y3Qgb2JqZmlsZQorLS0t IGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDEwLTAxLTE1IDAzOjIy OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL29iamZpbGVz LmgJMjAxMC0wMS0xNSAxMToxNDo0Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC00NDAsNiArNDQwLDEw IEBAIHN0cnVjdCBvYmpmaWxlCiAgCiAgI2RlZmluZSBPQkpGX01BSU4gKDEgPDwgNykKICAKQEAg LTk2Nyw2ICs5ODgsNiBAQCBJbmRleDogZ2RiLTcuMC9nZGIvb2JqZmlsZXMuaAogKwogKyNkZWZp bmUgT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURFRCAoMSA8PCAxMikKICsKLSAvKiBUaGUgb2JqZWN0 IGZpbGUgdGhhdCB0aGUgbWFpbiBzeW1ib2wgdGFibGUgd2FzIGxvYWRlZCBmcm9tIChlLmcuIHRo ZQotICAgIGFyZ3VtZW50IHRvIHRoZSAic3ltYm9sLWZpbGUiIG9yICJmaWxlIiBjb21tYW5kKS4g ICovCisgLyogVGhlIG9iamVjdCBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHJ1bnRpbWUgY29tbW9u IG1pbmltYWwgc3ltYm9scworICAgIGZvciBTdW5PUzQuIE5vdGUgdGhhdCB0aGlzIG9iamZpbGUg aGFzIG5vIGFzc29jaWF0ZWQgQkZELiAgKi8KICAKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ6MjM1 MTk3LWZvcmstZGV0YWNoLWluZm8ucGF0Y2ggYi9nZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0YWNo LWluZm8ucGF0Y2gKaW5kZXggOWQxNzc3OC4uMDc1ZTExOCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1i ejIzNTE5Ny1mb3JrLWRldGFjaC1pbmZvLnBhdGNoCisrKyBiL2dkYi02LjYtYnoyMzUxOTctZm9y ay1kZXRhY2gtaW5mby5wYXRjaApAQCAtMywyMyArMywyMyBAQAogCVBvcnQgdG8gR0RCLTYuOHBy ZS4KIAlSZW1vdmUgdGhlIGBbJyBjaGFyYWN0ZXIgZnJvbSB0aGUgR0RCLTYuOCBkZWZhdWx0IG1l c3NhZ2UuCiAKLUluZGV4OiBnZGItNi43LjUwLjIwMDgwMjI3L2dkYi9saW51eC1uYXQuYworSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuNy41MC4yMDA4MDIyNy5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDA4LTAzLTAxIDEwOjMw OjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi02LjcuNTAuMjAwODAyMjcvZ2RiL2xpbnV4LW5h dC5jCTIwMDgtMDMtMDEgMTA6NDg6MjUuMDAwMDAwMDAwICswMTAwCi1AQCAtNDE1LDcgKzQxNSw3 IEBAIGxpbnV4X2NoaWxkX2ZvbGxvd19mb3JrIChzdHJ1Y3QgdGFyZ2V0X28KLSAgICAgICAvKiBE ZXRhY2ggbmV3IGZvcmtlZCBwcm9jZXNzPyAgKi8KLSAgICAgICBpZiAoZGV0YWNoX2ZvcmspCi0g CXsKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDEt MTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv bGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoyMzoyOC4wMDAwMDAwMDAgKzAxMDAKK0BAIC03MjQs NyArNzI0LDcgQEAgaG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZQorIAkg ICAgICByZW1vdmVfYnJlYWtwb2ludHNfcGlkIChHRVRfUElEIChpbmZlcmlvcl9wdGlkKSk7Cisg CSAgICB9CisgCiAtCSAgaWYgKGluZm9fdmVyYm9zZSB8fCBkZWJ1Z19saW51eF9uYXQpCiArCSAg aWYgKDEgLyogRmVkb3JhIEJ1ZyAyMzUxOTcgKi8gfHwgaW5mb192ZXJib3NlIHx8IGRlYnVnX2xp bnV4X25hdCkKICAJICAgIHsKICAJICAgICAgdGFyZ2V0X3Rlcm1pbmFsX291cnMgKCk7CiAgCSAg ICAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRsb2csCi1JbmRleDogZ2RiLTYuNy41MC4yMDA4 MDIyNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmMKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi02LjcuNTAuMjAwODAyMjcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFj aC5jCTIwMDgtMDMtMDEgMTA6MzA6NDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmMJMjAxMC0wMS0xNSAw MzoyMjo1Mi4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsNTcgQEAKICsvKiBUaGlzIHRlc3Rj YXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtNzgsMTAgKzc4LDEw IEBAIEluZGV4OiBnZGItNi43LjUwLjIwMDgwMjI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9y ay1kZXRhY2guYwogKyAgICB9CiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTYuNy41MC4y MDA4MDIyNy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmV4cAorSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNi43LjUwLjIwMDgwMjI3L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9y ay1kZXRhY2guZXhwCTIwMDgtMDMtMDEgMTA6NDk6MzYuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmV4cAky MDEwLTAxLTE1IDAzOjIyOjUyLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw0MyBAQAogKyMg Q29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0t Z2l0IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRj aCBiL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gK aW5kZXggNWI1OTE3ZC4uNDg3MzYwOCAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9j a2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9s b2NraW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoCkBAIC0yMSwxMSArMjEsMTEgQEAKIAog CVBvcnQgdG8gR0RCLTYuOHByZS4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2lu ZmVyaW9yLmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZlcmlvci5oCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMy5vcmlnL2dkYi9pbmZlcmlvci5oCTIwMDkt MDYtMjggMDI6MjA6MjIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9n ZGIvaW5mZXJpb3IuaAkyMDA5LTA4LTAzIDE3OjE5OjU2LjAwMDAwMDAwMCArMDIwMAotQEAgLTE4 MSw3ICsxODEsMTUgQEAgZXh0ZXJuIHZvaWQgcmVvcGVuX2V4ZWNfZmlsZSAodm9pZCk7CistLS0g Z2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9pbmZlcmlvci5oCTIwMTAtMDEtMTUgMDM6MTY6 NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mZXJpb3Iu aAkyMDEwLTAxLTE1IDAzOjE3OjA3LjAwMDAwMDAwMCArMDEwMAorQEAgLTE4OCw3ICsxODgsMTUg QEAgZXh0ZXJuIHZvaWQgcmVvcGVuX2V4ZWNfZmlsZSAodm9pZCk7CiAgLyogVGhlIGByZXN1bWUn IHJvdXRpbmUgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGluIHNwZWNpYWwgY2lyY3Vtc3RhbmNlcy4K ICAgICBOb3JtYWxseSwgdXNlIGBwcm9jZWVkJywgd2hpY2ggaGFuZGxlcyBhIGxvdCBvZiBib29r a2VlcGluZy4gICovCiAgCkBAIC00MiwxMSArNDIsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTA4MDMvZ2RiL2luZmVyaW9yLmgKICAKICAvKiBGcm9tIG1pc2MgZmlsZXMgKi8KICAKLUluZGV4 OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2luZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMy5v cmlnL2dkYi9pbmZydW4uYwkyMDA5LTA3LTMxIDAxOjAxOjI3LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2luZnJ1bi5jCTIwMDktMDgtMDMgMjE6Mzk6MjguMDAw MDAwMDAwICswMjAwCi1AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IGZvbGxvd19mb3JrICh2 b2lkKTsKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAtMDEt MTUgMDM6MTY6NDMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv aW5mcnVuLmMJMjAxMC0wMS0xNSAwMzoxNzozMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC03Nyw3ICs3 Nyw3IEBAIHN0YXRpYyBpbnQgZm9sbG93X2ZvcmsgKHZvaWQpOwogIHN0YXRpYyB2b2lkIHNldF9z Y2hlZGxvY2tfZnVuYyAoY2hhciAqYXJncywgaW50IGZyb21fdHR5LAogIAkJCQlzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqYyk7CiAgCkBAIC01NSw3ICs1NSw3IEBAIEluZGV4OiBnZGItNi44LjUw LjIwMDkwODAzL2dkYi9pbmZydW4uYwogIAogIHN0YXRpYyBpbnQgY3VycmVudGx5X3N0ZXBwaW5n X29yX25leHRpbmdfY2FsbGJhY2sgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAsCiAgCQkJCQkJICAg dm9pZCAqZGF0YSk7Ci1AQCAtMTEzNyw3ICsxMTM3LDcgQEAgbWF5YmVfc29mdHdhcmVfc2luZ2xl c3RlcCAoc3RydWN0IGdkYmFyYworQEAgLTEzNjMsNyArMTM2Myw3IEBAIG1heWJlX3NvZnR3YXJl X3NpbmdsZXN0ZXAgKHN0cnVjdCBnZGJhcmMKICAgICBTVEVQIG5vbnplcm8gaWYgd2Ugc2hvdWxk IHN0ZXAgKHplcm8gdG8gY29udGludWUgaW5zdGVhZCkuCiAgICAgU0lHIGlzIHRoZSBzaWduYWwg dG8gZ2l2ZSB0aGUgaW5mZXJpb3IgKHplcm8gZm9yIG5vbmUpLiAgKi8KICB2b2lkCkBAIC02NCw3 ICs2NCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pbmZydW4uYwogIHsKICAg IGludCBzaG91bGRfcmVzdW1lID0gMTsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMg PSBtYWtlX2NsZWFudXAgKHJlc3VtZV9jbGVhbnVwcywgMCk7Ci1AQCAtMTE0OSwxMCArMTE0OSwx MiBAQCByZXN1bWUgKGludCBzdGVwLCBlbnVtIHRhcmdldF9zaWduYWwgc2lnCitAQCAtMTM3Niwx MCArMTM3NiwxMiBAQCByZXN1bWUgKGludCBzdGVwLCBlbnVtIHRhcmdldF9zaWduYWwgc2lnCiAg ICBRVUlUOwogIAogICAgaWYgKGRlYnVnX2luZnJ1bikKQEAgLTgxLDcgKzgxLDcgQEAgSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBTb21lIHRhcmdldHMg KGUuZy4gU29sYXJpcyB4ODYpIGhhdmUgYSBrZXJuZWwgYnVnIHdoZW4gc3RlcHBpbmcKICAgICAg IG92ZXIgYW4gaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZXMgYSBwYWdlIGZhdWx0IHdpdGhvdXQgdHJp Z2dlcmluZwotQEAgLTEyNzEsOSArMTI3MywxMCBAQCBhIGNvbW1hbmQgbGlrZSBgcmV0dXJuJyBv ciBganVtcCcgdG8gY29uCitAQCAtMTUwMSw5ICsxNTAzLDEwIEBAIGEgY29tbWFuZCBsaWtlIGBy ZXR1cm4nIG9yIGBqdW1wJyB0byBjb24KICAJICAgICBpbmRpdmlkdWFsbHkuICAqLwogIAkgIHJl c3VtZV9wdGlkID0gaW5mZXJpb3JfcHRpZDsKICAJfQpAQCAtOTQsMTYgKzk0LDE2IEBAIEluZGV4 OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pbmZydW4uYwogIAl7CiAgCSAgLyogVXNlci1zZXR0 YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gKi8KICAJ ICByZXN1bWVfcHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtMTQ3NCw3ICsxNDc3LDcgQEAgcHJv Y2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwotICAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2g7CitAQCAtMTcwOSw3ICsxNzEyLDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIs IGVudW0gdGFyZ2V0X3NpZwogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cDsKICAgIENPUkVfQURE UiBwYzsKKyAgIHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2U7CiAtICBpbnQgb25lcHJvYyA9 IDA7CiArICBlbnVtIHJlc3VtZV9zdGVwIHJlc3VtZV9zdGVwID0gUkVTVU1FX1NURVBfQ09OVElO VUU7CiAgCiAgICAvKiBJZiB3ZSdyZSBzdG9wcGVkIGF0IGEgZm9yay92Zm9yaywgZm9sbG93IHRo ZSBicmFuY2ggc2V0IGJ5IHRoZQogICAgICAgInNldCBmb2xsb3ctZm9yay1tb2RlIiBjb21tYW5k OyBvdGhlcndpc2UsIHdlJ2xsIGp1c3QgcHJvY2VlZAotQEAgLTE1MDgsMTMgKzE1MTEsMTMgQEAg cHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE3NDQsMTMgKzE3 NDcsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgICBh Y3R1YWxseSBiZSBleGVjdXRpbmcgdGhlIGJyZWFrcG9pbnQgaW5zbiBhbnl3YXkuCiAgCSAgIFdl J2xsIGJlICh1bi0pZXhlY3V0aW5nIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbi4gICovCiAgCkBA IC0xMTksNyArMTE5LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2luZnJ1bi5j CiAgICAgIH0KICAgIGVsc2UKICAgICAgewotQEAgLTE1NDUsMTMgKzE1NDgsMTMgQEAgcHJvY2Vl ZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE3ODEsMTMgKzE3ODQsMTMg QEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZwogIAkgaXMgcmVxdWly ZWQgaXQgcmV0dXJucyBUUlVFIGFuZCBzZXRzIHRoZSBjdXJyZW50IHRocmVhZCB0bwogIAkgdGhl IG9sZCB0aHJlYWQuICovCiAgICAgICAgaWYgKHByZXBhcmVfdG9fcHJvY2VlZCAoc3RlcCkpCkBA IC0xMzUsNyArMTM1LDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2luZnJ1bi5j CiAgICAgIHsKICAgICAgICB0cC0+dHJhcF9leHBlY3RlZCA9IDE7CiAgICAgICAgLyogSWYgZGlz cGxhY2VkIHN0ZXBwaW5nIGlzIGVuYWJsZWQsIHdlIGNhbiBzdGVwIG92ZXIgdGhlCi1AQCAtMTYz Nyw4ICsxNjQwLDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcK K0BAIC0xODczLDggKzE4NzYsMTMgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFy Z2V0X3NpZwogICAgLyogUmVzZXQgdG8gbm9ybWFsIHN0YXRlLiAgKi8KICAgIGluaXRfaW5md2Fp dF9zdGF0ZSAoKTsKICAKQEAgLTE1MCw3ICsxNTAsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5 MDgwMy9nZGIvaW5mcnVuLmMKICAKICAgIC8qIFdhaXQgZm9yIGl0IHRvIHN0b3AgKGlmIG5vdCBz dGFuZGFsb25lKQogICAgICAgYW5kIGluIGFueSBjYXNlIGRlY29kZSB3aHkgaXQgc3RvcHBlZCwg YW5kIGFjdCBhY2NvcmRpbmdseS4gICovCi1AQCAtNDE3MSwxMyArNDE3OSwxOCBAQCBpbmZydW46 IG5vdCBzd2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCitAQCAtNDY1NSwxMyArNDY2MywxOCBA QCBpbmZydW46IG5vdCBzd2l0Y2hpbmcgYmFjayB0byBzdGVwcGVkIHRoCiAgCiAgLyogSXMgdGhy ZWFkIFRQIGluIHRoZSBtaWRkbGUgb2Ygc2luZ2xlLXN0ZXBwaW5nPyAgKi8KICAKQEAgLTE3NCwx MSArMTc0LDExIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pbmZydW4uYwogIH0K ICAKICAvKiBSZXR1cm5zIHRydWUgaWYgYW55IHRocmVhZCAqYnV0KiB0aGUgb25lIHBhc3NlZCBp biAiZGF0YSIgaXMgaW4gdGhlCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgt bmF0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOS0w Ny0zMSAxNzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dk Yi9saW51eC1uYXQuYwkyMDA5LTA4LTAzIDIxOjM5OjEwLjAwMDAwMDAwMCArMDIwMAotQEAgLTIz NTEsNyArMjM1MSwxMCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAq CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEwLTAxLTE1 IDAzOjE2OjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xp bnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MTc6MDcuMDAwMDAwMDAwICswMTAwCitAQCAtMjg4Myw3 ICsyODgzLDEwIEBAIGNvdW50X2V2ZW50c19jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICoKICBz dGF0aWMgaW50CiAgc2VsZWN0X3NpbmdsZXN0ZXBfbHdwX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2lu Zm8gKmxwLCB2b2lkICpkYXRhKQogIHsKQEAgLTE5MCwxMCArMTkwLDEwIEBAIEluZGV4OiBnZGIt Ni44LjUwLjIwMDkwODAzL2dkYi9saW51eC1uYXQuYwogICAgICByZXR1cm4gMTsKICAgIGVsc2UK ICAgICAgcmV0dXJuIDA7Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgtbmF0 LmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuaAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvbGludXgtbmF0LmgJMjAwOS0wNS0x OCAxOToxMToyNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9s aW51eC1uYXQuaAkyMDA5LTA4LTAzIDIxOjM5OjA5LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMC0wMS0xMiAyMjo0MDoyNC4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuaAky MDEwLTAxLTE1IDAzOjE3OjA3LjAwMDAwMDAwMCArMDEwMAogQEAgLTU1LDggKzU1LDggQEAgc3Ry dWN0IGx3cF9pbmZvCiAgICAvKiBJZiBub24temVybywgYSBwZW5kaW5nIHdhaXQgc3RhdHVzLiAg Ki8KICAgIGludCBzdGF0dXM7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVk LWRldGFjaC1zdG9wcGVkLnBhdGNoIGIvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1z dG9wcGVkLnBhdGNoCmluZGV4IDRjNDYyZTEuLmE1MTgxMjIgMTAwNjQ0Ci0tLSBhL2dkYi02Ljgt YXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAorKysgYi9nZGItNi44LWF0dGFj aC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDog Z2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9saW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4 MDMub3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOS0wOC0wMyAxNzoyNDowMy4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9saW51eC1uYXQuYwkyMDA5LTA4LTAzIDE3 OjI3OjIzLjAwMDAwMDAwMCArMDIwMAotQEAgLTIwMiw2ICsyMDIsOSBAQCBibG9ja2VkLiAgKi8K Ky0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUg MTE6NTM6MzQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGlu dXgtbmF0LmMJMjAxMC0wMS0xNSAxMjoxMzo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMDgsNiAr MjA4LDkgQEAgYmxvY2tlZC4gICovCiAgc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzICpsaW51eF9v cHM7CiAgc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzIGxpbnV4X29wc19zYXZlZDsKICAKQEAgLTEy LDggKzEyLDggQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2xpbnV4LW5hdC5jCiAg LyogVGhlIG1ldGhvZCB0byBjYWxsLCBpZiBhbnksIHdoZW4gYSBuZXcgdGhyZWFkIGlzIGF0dGFj aGVkLiAgKi8KICBzdGF0aWMgdm9pZCAoKmxpbnV4X25hdF9uZXdfdGhyZWFkKSAocHRpZF90KTsK ICAKLUBAIC03OTAsNyArNzkzLDE0IEBAIGxpbnV4X2NoaWxkX2ZvbGxvd19mb3JrIChzdHJ1Y3Qg dGFyZ2V0X28KLSAJICBsaW51eF9wYXJlbnRfcGlkID0gcGFyZW50X3BpZDsKK0BAIC05MzMsNyAr OTM2LDE0IEBAIEF0dGFjaGluZyBhZnRlciBwcm9jZXNzICVkIGZvcmsgdG8gY2hpbGQKKyAJICBw YXJlbnRfaW5mLT53YWl0aW5nX2Zvcl92Zm9ya19kb25lID0gMDsKICAJfQogICAgICAgIGVsc2Ug aWYgKGRldGFjaF9mb3JrKQogLQl0YXJnZXRfZGV0YWNoIChOVUxMLCAwKTsKQEAgLTI2LDkgKzI2 LDkgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2xpbnV4LW5hdC5jCiArCSAgdGFy Z2V0X2RldGFjaCAoTlVMTCwgMCk7CiArCX0KICAKLSAgICAgICBpbmZlcmlvcl9wdGlkID0gcHRp ZF9idWlsZCAoY2hpbGRfcGlkLCBjaGlsZF9waWQsIDApOwotICAgICAgIGFkZF90aHJlYWQgKGlu ZmVyaW9yX3B0aWQpOwotQEAgLTEyMzEsNiArMTI0MSw3IEBAIGxpbnV4X25hdF9wb3N0X2F0dGFj aF93YWl0IChwdGlkX3QgcHRpZCwKKyAgICAgICAvKiBOb3RlIHRoYXQgdGhlIGRldGFjaCBhYm92 ZSBtYWtlcyBQQVJFTlRfSU5GIGRhbmdsaW5nLiAgKi8KKyAKK0BAIC0xNDI3LDYgKzE0MzcsNyBA QCBsaW51eF9uYXRfcG9zdF9hdHRhY2hfd2FpdCAocHRpZF90IHB0aWQsCiAgICAgICAgaWYgKGRl YnVnX2xpbnV4X25hdCkKICAJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAogIAkJCSAg ICAiTE5QQVc6IEF0dGFjaGluZyB0byBhIHN0b3BwZWQgcHJvY2Vzc1xuIik7CkBAIC0zNiw4ICsz Niw4IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9saW51eC1uYXQuYwogIAogICAg ICAgIC8qIFRoZSBwcm9jZXNzIGlzIGRlZmluaXRlbHkgc3RvcHBlZC4gIEl0IGlzIGluIGEgam9i IGNvbnRyb2wKICAJIHN0b3AsIHVubGVzcyB0aGUga2VybmVsIHByZWRhdGVzIHRoZSBUQVNLX1NU T1BQRUQgLwotQEAgLTE1MTIsNiArMTUyMyw5IEBAIEdQVDogbHdwICVzIGhhZCBzaWduYWwgJXMs IGJ1dCBpdCBpcyBpbiAKLSAJKnN0YXR1cyA9IGxwLT5zdGF0dXM7CitAQCAtMTc1Nyw2ICsxNzY4 LDkgQEAgR1BUOiBsd3AgJXMgaGFkIHNpZ25hbCAlcywgYnV0IGl0IGlzIGluIAorIAkJCSAgICB0 YXJnZXRfc2lnbmFsX3RvX3N0cmluZyAoc2lnbm8pKTsKICAgICAgfQogIAogKyAgaWYgKCpzdGF0 dXMgPT0gMCAmJiBHRVRfUElEIChscC0+cHRpZCkgPT0gcGlkX3dhc19zdG9wcGVkKQpAQCAtNDYs NyArNDYsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGludXgtbmF0LmMKICAg IHJldHVybiAwOwogIH0KICAKLUBAIC0xNjIxLDYgKzE2MzUsOCBAQCBsaW51eF9uYXRfZGV0YWNo IChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCitAQCAtMTg2Niw2ICsxODgwLDggQEAgbGludXhfbmF0 X2RldGFjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcwogICAgICB9CiAgICBlbHNlCiAgICAgIGxp bnV4X29wcy0+dG9fZGV0YWNoIChvcHMsIGFyZ3MsIGZyb21fdHR5KTsKQEAgLTU1LDcgKzU1LDcg QEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8q IFJlc3VtZSBMUC4gICovCi1AQCAtMTc3NCw2ICsxNzkwLDE0IEBAIGxpbnV4X25hdF9yZXN1bWUg KHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKK0BAIC0yMDMxLDYgKzIwNDcsMTQgQEAgbGludXhfbmF0 X3Jlc3VtZSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcwogICAgICAgcmVzdW1lX2NhbGxiYWNrLiAg Ki8KICAgIGxwLT5zdG9wcGVkID0gMDsKICAKQEAgLTcwLDcgKzcwLDcgQEAgSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA4MDMvZ2RiL2xpbnV4LW5hdC5jCiAgICBpZiAocmVzdW1lX21hbnkpCiAgICAg IGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkLCByZXN1bWVfY2FsbGJhY2ssIE5VTEwpOwogIAotQEAg LTMzMjIsNiArMzM0Niw4IEBAIGxpbnV4X25hdF9tb3Vybl9pbmZlcmlvciAoc3RydWN0IHRhcmdl dF8KK0BAIC0zOTIzLDYgKzM5NDcsOCBAQCBsaW51eF9uYXRfbW91cm5faW5mZXJpb3IgKHN0cnVj dCB0YXJnZXRfCiAgICAgICAgIHRoZXJlIGFyZSBvdGhlciB2aWFibGUgZm9ya3MgdG8gZGVidWcu ICBEZWxldGUgdGhlIGV4aXRpbmcKICAgICAgICAgb25lIGFuZCBjb250ZXh0LXN3aXRjaCB0byB0 aGUgZmlyc3QgYXZhaWxhYmxlLiAgKi8KICAgICAgbGludXhfZm9ya19tb3Vybl9pbmZlcmlvciAo KTsKQEAgLTc5LDEwICs3OSwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvbGlu dXgtbmF0LmMKICB9CiAgCiAgLyogQ29udmVydCBhIG5hdGl2ZS9ob3N0IHNpZ2luZm8gb2JqZWN0 LCBpbnRvL2Zyb20gdGhlIHNpZ2luZm8gaW4gdGhlCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgw My9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAorSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBl ZC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAzLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAJMjAwOS0wMS0wMyAwNjo1ODowNy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIwMDktMDgtMDMgMTc6MjY6MjIuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDYuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0 dGFjaC1zdG9wcGVkLmV4cAkyMDEwLTAxLTE1IDExOjU0OjU3LjAwMDAwMDAwMCArMDEwMAogQEAg LTYyLDcgKzYyLDY1IEBAIHByb2MgY29yZWZ1bmMgeyB0aHJlYWR0eXBlIH0gewogICAgICBnZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKICAgICAgZ2RiX2xvYWQgJHtiaW5maWxl fQpAQCAtMTUwLDEwICsxNTAsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2gtc3RvcHBlZC5leHAKICAgICAgICAgCiAgICAgIHNl dCB0ZXN0ICIkdGhyZWFkdHlwZTogYXR0YWNoMiB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZp bGUiCiAgICAgIGdkYl90ZXN0X211bHRpcGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewot SW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRh Y2hzdG9wLW10LmV4cAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy9hdHRhY2hzdG9wLW10LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAu MjAwOTA4MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaHN0b3AtbXQuZXhw CTIwMDktMDEtMDMgMDY6NTg6MDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5 MDgwMy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaHN0b3AtbXQuZXhwCTIwMDktMDgt MDMgMTc6MjY6MjIuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoc3RvcC1tdC5leHAJMjAxMC0wMS0wMSAw ODozMjowNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoc3RvcC1tdC5leHAJMjAxMC0wMS0xNSAxMTo1NDo1Ny4w MDAwMDAwMDAgKzAxMDAKIEBAIC0xNzYsMTIgKzE3NiwyMyBAQCBnZGJfdGVzdCAiYnQiICIuKnNs ZWVwLiooZnVuY3xtYWluKS4qIiAiCiAgIyBFeGl0IGFuZCBkZXRhY2ggdGhlIHByb2Nlc3MuCiAg Z2RiX2V4aXQKCmRpZmYgLS1naXQgYS9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBh dGNoIGIvZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaAppbmRleCA4MmU2NGY5 Li40NDY2OTFlIDEwMDY0NAotLS0gYS9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBh dGNoCisrKyBiL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8ucGF0Y2gKQEAgLTEsOCAr MSw4IEBACi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkxMC9iZmQvZWxmLWJmZC5oCitJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9iZmQvZWxmLWJmZC5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYu OC41MC4yMDA5MDkxMC5vcmlnL2JmZC9lbGYtYmZkLmgJMjAwOS0wOS0wOSAyMzozODo1Ny4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTEwL2JmZC9lbGYtYmZkLmgJMjAwOS0w OS0xMCAyMzowMToxNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMTIxLDcgKzIxMjEsNyBAQCBleHRl cm4gRWxmX0ludGVybmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCistLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2JmZC9lbGYtYmZkLmgJMjAwOS0xMS0yMyAxNTo0MToyOS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2JmZC9lbGYtYmZkLmgJMjAxMC0wMS0xNSAxMTo1 MzoyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMTQwLDcgKzIxNDAsNyBAQCBleHRlcm4gRWxmX0lu dGVybmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCiAgZXh0ZXJuIGNoYXIgKmVsZmNvcmVfd3JpdGVf bm90ZQogICAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGludCwgY29uc3Qg dm9pZCAqLCBpbnQpOwogIGV4dGVybiBjaGFyICplbGZjb3JlX3dyaXRlX3BycHNpbmZvCkBAIC0x MSwxMSArMTEsMTEgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvYmZkL2VsZi1iZmQuaAog IGV4dGVybiBjaGFyICplbGZjb3JlX3dyaXRlX3Byc3RhdHVzCiAgICAoYmZkICosIGNoYXIgKiwg aW50ICosIGxvbmcsIGludCwgY29uc3Qgdm9pZCAqKTsKICBleHRlcm4gY2hhciAqIGVsZmNvcmVf d3JpdGVfcHN0YXR1cwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvYmZkL2VsZi5jCitJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9iZmQvZWxmLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44 LjUwLjIwMDkwOTEwLm9yaWcvYmZkL2VsZi5jCTIwMDktMDktMDkgMjM6Mzg6NTcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkxMC9iZmQvZWxmLmMJMjAwOS0wOS0xMCAyMzow NDoxNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC04Mzk4LDYgKzgzOTgsNyBAQCBjaGFyICoKKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvYmZkL2VsZi5jCTIwMTAtMDEtMDUgMDE6NDA6MDcuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9iZmQvZWxmLmMJMjAxMC0wMS0x NSAxMTo1MzoyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC04NDM5LDYgKzg0MzksNyBAQCBjaGFyICoK ICBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChiZmQgICphYmZkLAogIAkJCWNoYXIgKmJ1ZiwKICAJ CQlpbnQgICpidWZzaXosCkBAIC0yMyw3ICsyMyw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw OTEwL2JmZC9lbGYuYwogIAkJCWNvbnN0IGNoYXIgKmZuYW1lLAogIAkJCWNvbnN0IGNoYXIgKnBz YXJncykKICB7Ci1AQCAtODQyNCw5ICs4NDI1LDE1IEBAIGVsZmNvcmVfd3JpdGVfcHJwc2luZm8g KGJmZCAgKmFiZmQsCitAQCAtODQ2NSw5ICs4NDY2LDE1IEBAIGVsZmNvcmVfd3JpdGVfcHJwc2lu Zm8gKGJmZCAgKmFiZmQsCiAgICAgICAgaW50IG5vdGVfdHlwZSA9IE5UX1BSUFNJTkZPOwogICNl bmRpZgogIApAQCAtNDIsNyArNDIsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDkxMC9iZmQv ZWxmLmMKICAgICAgICByZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNp eiwKICAJCQkJIG5vdGVfbmFtZSwgbm90ZV90eXBlLCAmZGF0YSwgc2l6ZW9mIChkYXRhKSk7CiAg ICAgIH0KLUBAIC04NDQxLDkgKzg0NDgsMTUgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZk ICAqYWJmZCwKK0BAIC04NDgyLDkgKzg0ODksMTUgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAo YmZkICAqYWJmZCwKICAgICAgICBpbnQgbm90ZV90eXBlID0gTlRfUFJQU0lORk87CiAgI2VuZGlm CiAgCkBAIC02MSwxMCArNjEsMTAgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvYmZkL2Vs Zi5jCiAgICAgICAgcmV0dXJuIGVsZmNvcmVfd3JpdGVfbm90ZSAoYWJmZCwgYnVmLCBidWZzaXos CiAgCQkJCSBub3RlX25hbWUsIG5vdGVfdHlwZSwgJmRhdGEsIHNpemVvZiAoZGF0YSkpOwogICAg ICB9Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkxMC9nZGIvYW1kNjQtbGludXgtbmF0LmMKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9hbWQ2NC1saW51eC1uYXQuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MTAub3JpZy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAw OS0wOS0xMCAyMzowMTowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTEw L2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDA5LTA5LTEwIDIzOjAxOjE1LjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYW1kNjQtbGludXgtbmF0LmMJMjAx MC0wMS0xNSAxMTo0NjoyOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLTAxLTE1IDExOjUzOjIxLjAwMDAwMDAwMCArMDEw MAogQEAgLTE0MCw2ICsxNDAsNyBAQCBzdGF0aWMgaW50IGFtZDY0X2xpbnV4X2dyZWdzZXQzMl9y ZWdfb2ZmCiAgCiAgc3RhdGljIGNoYXIgKgpAQCAtOTgsMTAgKzk4LDEwIEBAIEluZGV4OiBnZGIt Ni44LjUwLjIwMDkwOTEwL2dkYi9hbWQ2NC1saW51eC1uYXQuYwogIH0KICAKICBzdGF0aWMgdm9p ZAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvZ2RiL2Zic2QtbmF0LmMKK0luZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9mYnNkLW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41 MC4yMDA5MDkxMC5vcmlnL2dkYi9mYnNkLW5hdC5jCTIwMDktMDctMDIgMTk6MjE6MDYuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDkxMC9nZGIvZmJzZC1uYXQuYwkyMDA5LTA5 LTEwIDIzOjAxOjE1LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3Jp Zy9nZGIvZmJzZC1uYXQuYwkyMDEwLTAxLTAxIDA4OjMxOjMxLjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Zic2QtbmF0LmMJMjAxMC0wMS0xNSAxMTo1MzoyMS4w MDAwMDAwMDAgKzAxMDAKIEBAIC0yMTEsNiArMjExLDcgQEAgZmJzZF9tYWtlX2NvcmVmaWxlX25v dGVzIChiZmQgKm9iZmQsIGludAogIAlwc2FyZ3MgPSByZWNvbmNhdCAocHNhcmdzLCBwc2FyZ3Ms ICIgIiwgZ2V0X2luZmVyaW9yX2FyZ3MgKCksIE5VTEwpOwogIApAQCAtMTEwLDE5ICsxMTAsMTkg QEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvZ2RiL2Zic2QtbmF0LmMKICAJCQkJCSAgZm5h bWUsIHBzYXJncyk7CiAgICAgIH0KICAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwOTEwL2dkYi9s aW51eC1uYXQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkxMC5vcmlnL2dkYi9saW51eC1uYXQuYwky MDA5LTA5LTEwIDIzOjAxOjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5 MTAvZ2RiL2xpbnV4LW5hdC5jCTIwMDktMDktMTAgMjM6MDE6MTUuMDAwMDAwMDAwICswMjAwCi1A QCAtNTUsNiArNTUsNyBAQAotICNpbmNsdWRlICJ4bWwtc3VwcG9ydC5oIgorLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoyMzo1MC4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW51eC1uYXQuYwkyMDEw LTAxLTE1IDExOjUzOjM0LjAwMDAwMDAwMCArMDEwMAorQEAgLTU2LDYgKzU2LDcgQEAKICAjaW5j bHVkZSAidGVybWluYWwuaCIKICAjaW5jbHVkZSA8c3lzL3Zmcy5oPgorICNpbmNsdWRlICJzb2xp Yi5oIgogKyNpbmNsdWRlICJnZGJfcHJvY2ZzMzIuaCIJLyogZm9yIHN0cnVjdCBlbGZfcHJwc2lu Zm8zMiAqLwogIAogICNpZm5kZWYgU1BVRlNfTUFHSUMKICAjZGVmaW5lIFNQVUZTX01BR0lDIDB4 MjNjOWI2NGUKLUBAIC0yMjIsNyArMjIzLDcgQEAgc3RhdGljIExPTkdFU1QgKCpzdXBlcl94ZmVy X3BhcnRpYWwpIChzdAorQEAgLTIyOCw3ICsyMjksNyBAQCBzdGF0aWMgTE9OR0VTVCAoKnN1cGVy X3hmZXJfcGFydGlhbCkgKHN0CiAgLyogVGhpcyBmdW5jdGlvbnMgbWFrZSBlbGZjb3JlIG5vdGUg c2VjdGlvbnMuCiAgICAgVGhleSBtYXkgZ2V0IG92ZXJyaWRlbiBieSBjb2RlIGFkanVzdGluZyBk YXRhIGZvciBtdWx0aS10YXJnZXQgYnVpbGRzLiAgKi8KICBjaGFyICooKmxpbnV4X2VsZmNvcmVf d3JpdGVfcHJwc2luZm8pCkBAIC0xMzEsNyArMTMxLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTA5MTAvZ2RiL2xpbnV4LW5hdC5jCiAgY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3Byc3Rh dHVzKQogICAgKGJmZCAqLCBjaGFyICosIGludCAqLCBsb25nLCBpbnQsIGNvbnN0IHZvaWQgKikg PSBlbGZjb3JlX3dyaXRlX3Byc3RhdHVzOwogIHN0YXRpYyBjaGFyICoKLUBAIC0zOTQ2LDYgKzM5 NDcsMTU5IEBAIGxpbnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKK0BAIC00 NDQxLDYgKzQ0NDIsMTU5IEBAIGxpbnV4X3NwdV9tYWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9i ZmQKICAgIHJldHVybiBhcmdzLm5vdGVfZGF0YTsKICB9CiAgCkBAIC0yOTEsNyArMjkxLDcgQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvZ2RiL2xpbnV4LW5hdC5jCiAgLyogRmlsbHMgdGhl ICJ0b19tYWtlX2NvcmVmaWxlX25vdGUiIHRhcmdldCB2ZWN0b3IuICBCdWlsZHMgdGhlIG5vdGUK ICAgICBzZWN0aW9uIGZvciBhIGNvcmVmaWxlLCBhbmQgcmV0dXJucyBpdCBpbiBhIG1hbGxvYyBi dWZmZXIuICAqLwogIAotQEAgLTM5NjYsOCArNDEyMCwxNCBAQCBsaW51eF9uYXRfbWFrZV9jb3Jl ZmlsZV9ub3RlcyAoYmZkICpvYmZkCitAQCAtNDQ2MSw4ICs0NjE1LDE0IEBAIGxpbnV4X25hdF9t YWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKICAKICAgIGlmIChnZXRfZXhlY19maWxlICgw KSkKICAgICAgewpAQCAtMzA2LDcgKzMwNiw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwOTEw L2dkYi9saW51eC1uYXQuYwogICAgICAgIGlmIChnZXRfaW5mZXJpb3JfYXJncyAoKSkKICAJewog IAkgIGNoYXIgKnN0cmluZ19lbmQ7Ci1AQCAtMzk4Myw5ICs0MTQzLDE1IEBAIGxpbnV4X25hdF9t YWtlX2NvcmVmaWxlX25vdGVzIChiZmQgKm9iZmQKK0BAIC00NDc4LDkgKzQ2MzgsMTUgQEAgbGlu dXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAogIAkJICAgICAgIHBzYXJnc19l bmQgLSBzdHJpbmdfZW5kKTsKICAJICAgIH0KICAJfQpAQCAtMzI0LDExICszMjQsMTEgQEAgSW5k ZXg6IGdkYi02LjguNTAuMjAwOTA5MTAvZ2RiL2xpbnV4LW5hdC5jCiAgICAgIH0KICAKICAgIC8q IER1bXAgaW5mb3JtYXRpb24gZm9yIHRocmVhZHMuICAqLwotSW5kZXg6IGdkYi02LjguNTAuMjAw OTA5MTAvZ2RiL2xpbnV4LW5hdC5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGlu dXgtbmF0LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwOTEwLm9yaWcvZ2RiL2xp bnV4LW5hdC5oCTIwMDktMDktMTAgMjM6MDE6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYu OC41MC4yMDA5MDkxMC9nZGIvbGludXgtbmF0LmgJMjAwOS0wOS0xMCAyMzowMToxNS4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xNTQsNyArMTU0LDcgQEAgc3RydWN0IHNpZ2luZm8gKmxpbnV4X25hdF9n ZXRfc2lnaW5mbyAocAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGludXgtbmF0 LmgJMjAxMC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9saW51eC1uYXQuaAkyMDEwLTAxLTE1IDExOjUzOjIxLjAwMDAwMDAwMCArMDEw MAorQEAgLTE3Myw3ICsxNzMsNyBAQCBpbnQgbGludXhfbmF0X2NvcmVfb2ZfdGhyZWFkXzEgKHB0 aWRfdCBwCiAgLyogVGhlc2UgZnVuY3Rpb25zIG1ha2UgZWxmY29yZSBub3RlIHNlY3Rpb25zLgog ICAgIFRoZXkgbWF5IGdldCBvdmVycmlkZW4gYnkgY29kZSBhZGp1c3RpbmcgZGF0YSBmb3IgbXVs dGktdGFyZ2V0IGJ1aWxkcy4gICovCiAgZXh0ZXJuIGNoYXIgKigqbGludXhfZWxmY29yZV93cml0 ZV9wcnBzaW5mbykKQEAgLTMzNywxMSArMzM3LDExIEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw OTEwL2dkYi9saW51eC1uYXQuaAogIGV4dGVybiBjaGFyICooKmxpbnV4X2VsZmNvcmVfd3JpdGVf cHJzdGF0dXMpCiAgICAoYmZkICosIGNoYXIgKiwgaW50ICosIGxvbmcsIGludCwgY29uc3Qgdm9p ZCAqKTsKICBleHRlcm4gY2hhciAqKCpsaW51eF9lbGZjb3JlX3dyaXRlX3ByZnByZWcpCi1JbmRl eDogZ2RiLTYuOC41MC4yMDA5MDkxMC9nZGIvcHJvY2ZzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MTAu b3JpZy9nZGIvcHJvY2ZzLmMJMjAwOS0wOC0wMSAwMjowMjowNC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNi44LjUwLjIwMDkwOTEwL2dkYi9wcm9jZnMuYwkyMDA5LTA5LTEwIDIzOjAxOjE1LjAw MDAwMDAwMCArMDIwMAotQEAgLTYxNDcsNiArNjE0Nyw3IEBAIHByb2Nmc19tYWtlX25vdGVfc2Vj dGlvbiAoYmZkICpvYmZkLCBpbnQKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3By b2Nmcy5jCTIwMTAtMDEtMTQgMjI6MTU6MDAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvcHJvY2ZzLmMJMjAxMC0wMS0xNSAxMTo1MzoyMS4wMDAwMDAwMDAgKzAx MDAKK0BAIC02MTg2LDYgKzYxODYsNyBAQCBwcm9jZnNfbWFrZV9ub3RlX3NlY3Rpb24gKGJmZCAq b2JmZCwgaW50CiAgICBub3RlX2RhdGEgPSAoY2hhciAqKSBlbGZjb3JlX3dyaXRlX3BycHNpbmZv IChvYmZkLAogIAkJCQkJICAgICAgIG5vdGVfZGF0YSwKICAJCQkJCSAgICAgICBub3RlX3NpemUs CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1iejQ1NzE4Ny1sYXJnZWZpbGUucGF0Y2ggYi9nZGItNi44 LWJ6NDU3MTg3LWxhcmdlZmlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MTk5ZDdhMi4uMDAwMDAwMAotLS0gYS9nZGItNi44LWJ6NDU3MTg3LWxhcmdlZmlsZS5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDI2NSArMCwwIEBACi1nZGIvCi0yMDA5LTAzLTAyICBKYW4gS3Jh dG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGNvbmZpZ3VyZS5hYzog Q2FsbCBBQ19TWVNfTEFSR0VGSUxFLgotCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgotCSogY29u ZmlndXJlOiBSZWdlbmVyYXRlLgotCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29u ZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9j b25maWd1cmUuYWMJMjAwOS0wOS0wOSAyMDowODowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ni44LjUwLjIwMDkwOTA5L2dkYi9jb25maWd1cmUuYWMJMjAwOS0wOS0wOSAyMDoxMTowNC4wMDAw MDAwMDAgKzAyMDAKLUBAIC0yOCw2ICsyOCw3IEBAIEFNX01BSU5UQUlORVJfTU9ERQotIEFDX1BS T0dfQ0MKLSBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKLSBnbF9FQVJMWQotK0FDX1NZU19MQVJH RUZJTEUKLSBBTV9QUk9HX0NDX1NUREMKLSAKLSBBQ19DT05GSUdfQVVYX0RJUiguLikKLUluZGV4 OiBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ni44LjUwLjIwMDkwOTA5Lm9yaWcvZ2RiL2NvbmZpZy5pbgkyMDA5LTA5LTA5IDIwOjA4OjA0LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZy5pbgkyMDA5 LTA5LTA5IDIwOjExOjMzLjAwMDAwMDAwMCArMDIwMAotQEAgLTc1MSwxMCArNzUxLDE2IEBACi0g IyBlbmRpZgotICNlbmRpZgotIAotKy8qIE51bWJlciBvZiBiaXRzIGluIGEgZmlsZSBvZmZzZXQs IG9uIGhvc3RzIHdoZXJlIHRoaXMgaXMgc2V0dGFibGUuICovCi0rI3VuZGVmIF9GSUxFX09GRlNF VF9CSVRTCi0rCi0gLyogRGVmaW5lIHRvIDEgc28gPHN5cy9wcm9jLmg+IGdldHMgYSBkZWZpbml0 aW9uIG9mIGFub25faGRsLiBXb3JrcyBhcm91bmQgYQotICAgIDxzeXMvcHJvYy5oPiBwcm9ibGVt IG9uIElSSVggNS4gKi8KLSAjdW5kZWYgX0tNRU1VU0VSCi0gCi0rLyogRGVmaW5lIGZvciBsYXJn ZSBmaWxlcywgb24gQUlYLXN0eWxlIGhvc3RzLiAqLwotKyN1bmRlZiBfTEFSR0VfRklMRVMKLSsK LSAvKiBEZWZpbmUgdG8gMSBpZiBvbiBNSU5JWC4gKi8KLSAjdW5kZWYgX01JTklYCi0gCi1JbmRl eDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9jb25maWd1cmUJMjAwOS0wOS0wOSAyMDoxMDo0NS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWd1cmUJMjAw OS0wOS0wOSAyMDoxMTowNy4wMDAwMDAwMDAgKzAyMDAKLUBAIC04ODQsNiArODg0LDcgQEAgYWNf c3Vic3RfZmlsZXM9J2hvc3RfbWFrZWZpbGVfZnJhZycKLSBhY191c2VyX29wdHM9JwotIGVuYWJs ZV9vcHRpb25fY2hlY2tpbmcKLSBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCi0rZW5hYmxlX2xhcmdl ZmlsZQotIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCi0gd2l0aF9zZXBhcmF0ZV9kZWJ1Z19k aXIKLSB3aXRoX2dkYl9kYXRhZGlyCi1AQCAtMTU2Miw2ICsxNTYzLDcgQEAgT3B0aW9uYWwgRmVh dHVyZXM6Ci0gICAtLWVuYWJsZS1GRUFUVVJFWz1BUkddICBpbmNsdWRlIEZFQVRVUkUgW0FSRz15 ZXNdCi0gICAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUgIGVuYWJsZSBtYWtlIHJ1bGVzIGFuZCBk ZXBlbmRlbmNpZXMgbm90IHVzZWZ1bAotIAkJCSAgKGFuZCBzb21ldGltZXMgY29uZnVzaW5nKSB0 byB0aGUgY2FzdWFsIGluc3RhbGxlcgotKyAgLS1kaXNhYmxlLWxhcmdlZmlsZSAgICAgb21pdCBz dXBwb3J0IGZvciBsYXJnZSBmaWxlcwotICAgLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcg IHNwZWVkcyB1cCBvbmUtdGltZSBidWlsZAotICAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2lu ZyAgIGRvIG5vdCByZWplY3Qgc2xvdyBkZXBlbmRlbmN5IGV4dHJhY3RvcnMKLSAgIC0tZW5hYmxl LXRhcmdldHM9VEFSR0VUUwotQEAgLTQxMDAsNiArNDEwMiwyMDQgQEAgZmkKLSAKLSAKLSAKLSsj IENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbGFyZ2VmaWxlIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIk e2VuYWJsZV9sYXJnZWZpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgZW5hYmxldmFsPSRlbmFi bGVfbGFyZ2VmaWxlOwotK2ZpCi0rCi0raWYgdGVzdCAiJGVuYWJsZV9sYXJnZWZpbGUiICE9IG5v OyB0aGVuCi0rCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNo ZWNraW5nIGZvciBzcGVjaWFsIEMgY29tcGlsZXIgb3B0aW9ucyBuZWVkZWQgZm9yIGxhcmdlIGZp bGVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3BlY2lhbCBDIGNvbXBpbGVyIG9w dGlvbnMgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNf Y3Zfc3lzX2xhcmdlZmlsZV9DQytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIo Y2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGFjX2N2X3N5c19sYXJnZWZpbGVfQ0M9bm8KLSsgICAg IGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgICBhY19zYXZlX0NDPSRDQwotKyAg ICAgICB3aGlsZSA6OyBkbwotKwkgIyBJUklYIDYuMiBhbmQgbGF0ZXIgZG8gbm90IHN1cHBvcnQg bGFyZ2UgZmlsZXMgYnkgZGVmYXVsdCwKLSsJICMgc28gdXNlIHRoZSBDIGNvbXBpbGVyJ3MgLW4z MiBvcHRpb24gaWYgdGhhdCBoZWxwcy4KLSsJIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNv bmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgotKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNv cnJlY3RseS4KLSsgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5 MjIzMzcyMDM2ODU0Nzc1ODA3LAotKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVl cmFkaW5nIGFzIEMgY29tcGlsZXJzCi0rICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2 ODU0Nzc1ODA3LiAgKi8KLSsjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAt IDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKLSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZG X1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4 MzY0NyA9PSAxKQotKwkJICAgICAgPyAxIDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0r ICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0rCSBpZiBhY19mbl9jX3RyeV9jb21waWxl ICIkTElORU5PIjsgdGhlbiA6Ci0rICBicmVhawotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5l cnIgY29uZnRlc3QuJGFjX29iamV4dAotKwkgQ0M9IiRDQyAtbjMyIgotKwkgaWYgYWNfZm5fY190 cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQz0n IC1uMzInOyBicmVhawotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFj X29iamV4dAotKwkgYnJlYWsKLSsgICAgICAgZG9uZQotKyAgICAgICBDQz0kYWNfc2F2ZV9DQwot KyAgICAgICBybSAtZiBjb25mdGVzdC4kYWNfZXh0Ci0rICAgIGZpCi0rZmkKLSt7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3N5c19sYXJnZWZp bGVfQ0MiID4mNQotKyRhc19lY2hvICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgPiY2OyB9Ci0r ICBpZiB0ZXN0ICIkYWNfY3Zfc3lzX2xhcmdlZmlsZV9DQyIgIT0gbm87IHRoZW4KLSsgICAgQ0M9 JENDJGFjX2N2X3N5c19sYXJnZWZpbGVfQ0MKLSsgIGZpCi0rCi0rICB7ICRhc19lY2hvICIkYXNf bWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBfRklMRV9PRkZTRVRfQklUUyB2 YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBm b3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcy4uLiAiID4m NjsgfQotK2lmIHRlc3QgIiR7YWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMrc2V0fSIgPSBzZXQ7 IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICB3aGlsZSA6 OyBkbwotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8q IGVuZCBjb25mZGVmcy5oLiAgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rIC8qIENoZWNr IHRoYXQgb2ZmX3QgY2FuIHJlcHJlc2VudCAyKio2MyAtIDEgY29ycmVjdGx5LgotKyAgICBXZSBj YW4ndCBzaW1wbHkgZGVmaW5lIExBUkdFX09GRl9UIHRvIGJlIDkyMjMzNzIwMzY4NTQ3NzU4MDcs Ci0rICAgIHNpbmNlIHNvbWUgQysrIGNvbXBpbGVycyBtYXNxdWVyYWRpbmcgYXMgQyBjb21waWxl cnMKLSsgICAgaW5jb3JyZWN0bHkgcmVqZWN0IDkyMjMzNzIwMzY4NTQ3NzU4MDcuICAqLwotKyNk ZWZpbmUgTEFSR0VfT0ZGX1QgKCgob2ZmX3QpIDEgPDwgNjIpIC0gMSArICgob2ZmX3QpIDEgPDwg NjIpKQotKyAgaW50IG9mZl90X2lzX2xhcmdlWyhMQVJHRV9PRkZfVCAlIDIxNDc0ODM2MjkgPT0g NzIxCi0rCQkgICAgICAgJiYgTEFSR0VfT0ZGX1QgJSAyMTQ3NDgzNjQ3ID09IDEpCi0rCQkgICAg ICA/IDEgOiAtMV07Ci0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwot K30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0r ICBhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cz1ubzsgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KLSsjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0Ci0rI2luY2x1ZGUgPHN5cy90 eXBlcy5oPgotKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNv cnJlY3RseS4KLSsgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5 MjIzMzcyMDM2ODU0Nzc1ODA3LAotKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVl cmFkaW5nIGFzIEMgY29tcGlsZXJzCi0rICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2 ODU0Nzc1ODA3LiAgKi8KLSsjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAt IDEgKyAoKG9mZl90KSAxIDw8IDYyKSkKLSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZG X1QgJSAyMTQ3NDgzNjI5ID09IDcyMQotKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4 MzY0NyA9PSAxKQotKwkJICAgICAgPyAxIDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0r ICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAi JExJTkVOTyI7IHRoZW4gOgotKyAgYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHM9NjQ7IGJyZWFr Ci0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0LiRhY19leHQKLSsgIGFjX2N2X3N5c19maWxlX29mZnNldF9iaXRzPXVua25vd24KLSsgIGJy ZWFrCi0rZG9uZQotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiByZXN1bHQ6ICRhY19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgPiY1Ci0rJGFzX2VjaG8gIiRh Y19jdl9zeXNfZmlsZV9vZmZzZXRfYml0cyIgPiY2OyB9Ci0rY2FzZSAkYWNfY3Zfc3lzX2ZpbGVf b2Zmc2V0X2JpdHMgaW4gIygKLSsgIG5vIHwgdW5rbm93bikgOzsKLSsgICopCi0rY2F0ID4+Y29u ZmRlZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgJGFjX2N2X3N5c19m aWxlX29mZnNldF9iaXRzCi0rX0FDRU9GCi0rOzsKLStlc2FjCi0rcm0gLXJmIGNvbmZ0ZXN0Kgot KyAgaWYgdGVzdCAkYWNfY3Zfc3lzX2ZpbGVfb2Zmc2V0X2JpdHMgPSB1bmtub3duOyB0aGVuCi0r ICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9y IF9MQVJHRV9GSUxFUyB2YWx1ZSBuZWVkZWQgZm9yIGxhcmdlIGZpbGVzIiA+JjUKLSskYXNfZWNo b19uICJjaGVja2luZyBmb3IgX0xBUkdFX0ZJTEVTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmls ZXMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3N5c19sYXJnZV9maWxlcytzZXR9IiA9 IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHdo aWxlIDo7IGRvCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0 Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSsgLyog Q2hlY2sgdGhhdCBvZmZfdCBjYW4gcmVwcmVzZW50IDIqKjYzIC0gMSBjb3JyZWN0bHkuCi0rICAg IFdlIGNhbid0IHNpbXBseSBkZWZpbmUgTEFSR0VfT0ZGX1QgdG8gYmUgOTIyMzM3MjAzNjg1NDc3 NTgwNywKLSsgICAgc2luY2Ugc29tZSBDKysgY29tcGlsZXJzIG1hc3F1ZXJhZGluZyBhcyBDIGNv bXBpbGVycwotKyAgICBpbmNvcnJlY3RseSByZWplY3QgOTIyMzM3MjAzNjg1NDc3NTgwNy4gICov Ci0rI2RlZmluZSBMQVJHRV9PRkZfVCAoKChvZmZfdCkgMSA8PCA2MikgLSAxICsgKChvZmZfdCkg MSA8PCA2MikpCi0rICBpbnQgb2ZmX3RfaXNfbGFyZ2VbKExBUkdFX09GRl9UICUgMjE0NzQ4MzYy OSA9PSA3MjEKLSsJCSAgICAgICAmJiBMQVJHRV9PRkZfVCAlIDIxNDc0ODM2NDcgPT0gMSkKLSsJ CSAgICAgID8gMSA6IC0xXTsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJu IDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVu IDoKLSsgIGFjX2N2X3N5c19sYXJnZV9maWxlcz1ubzsgYnJlYWsKLStmaQotK3JtIC1mIGNvcmUg Y29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgY2F0 IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVm cy5oLiAgKi8KLSsjZGVmaW5lIF9MQVJHRV9GSUxFUyAxCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5o PgotKyAvKiBDaGVjayB0aGF0IG9mZl90IGNhbiByZXByZXNlbnQgMioqNjMgLSAxIGNvcnJlY3Rs eS4KLSsgICAgV2UgY2FuJ3Qgc2ltcGx5IGRlZmluZSBMQVJHRV9PRkZfVCB0byBiZSA5MjIzMzcy MDM2ODU0Nzc1ODA3LAotKyAgICBzaW5jZSBzb21lIEMrKyBjb21waWxlcnMgbWFzcXVlcmFkaW5n IGFzIEMgY29tcGlsZXJzCi0rICAgIGluY29ycmVjdGx5IHJlamVjdCA5MjIzMzcyMDM2ODU0Nzc1 ODA3LiAgKi8KLSsjZGVmaW5lIExBUkdFX09GRl9UICgoKG9mZl90KSAxIDw8IDYyKSAtIDEgKyAo KG9mZl90KSAxIDw8IDYyKSkKLSsgIGludCBvZmZfdF9pc19sYXJnZVsoTEFSR0VfT0ZGX1QgJSAy MTQ3NDgzNjI5ID09IDcyMQotKwkJICAgICAgICYmIExBUkdFX09GRl9UICUgMjE0NzQ4MzY0NyA9 PSAxKQotKwkJICAgICAgPyAxIDogLTFdOwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0r ICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVO TyI7IHRoZW4gOgotKyAgYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzPTE7IGJyZWFrCi0rZmkKLStybSAt ZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQK LSsgIGFjX2N2X3N5c19sYXJnZV9maWxlcz11bmtub3duCi0rICBicmVhawotK2RvbmUKLStmaQot K3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zf c3lzX2xhcmdlX2ZpbGVzIiA+JjUKLSskYXNfZWNobyAiJGFjX2N2X3N5c19sYXJnZV9maWxlcyIg PiY2OyB9Ci0rY2FzZSAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzIGluICMoCi0rICBubyB8IHVua25v d24pIDs7Ci0rICAqKQotK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIF9MQVJH RV9GSUxFUyAkYWNfY3Zfc3lzX2xhcmdlX2ZpbGVzCi0rX0FDRU9GCi0rOzsKLStlc2FjCi0rcm0g LXJmIGNvbmZ0ZXN0KgotKyAgZmkKLStmaQotKwotIAotIAotIAoKZGlmZiAtLWdpdCBhL2dkYi02 LjgtY29uc3RhbnQtd2F0Y2hwb2ludHMucGF0Y2ggYi9nZGItNi44LWNvbnN0YW50LXdhdGNocG9p bnRzLnBhdGNoCmluZGV4IGRmMjlkOGQuLjE1NGMwYzcgMTAwNjQ0Ci0tLSBhL2dkYi02LjgtY29u c3RhbnQtd2F0Y2hwb2ludHMucGF0Y2gKKysrIGIvZ2RiLTYuOC1jb25zdGFudC13YXRjaHBvaW50 cy5wYXRjaApAQCAtMTgsMTEgKzE4LDExIEBACiAJZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jIChnbG9i YWxfcHRyX3B0cik6IE5ldyB2YXJpYWJsZS4KIAkoZnVuYzQpOiBOZXcgdGVzdGluZyBjb2RlIGZv ciBHTE9CQUxfUFRSX1BUUi4KIAotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2JyZWFr cG9pbnQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIw MDktMDgtMDQgMDY6Mjk6NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgw My9nZGIvYnJlYWtwb2ludC5jCTIwMDktMDgtMDQgMDY6MzI6NTAuMDAwMDAwMDAwICswMjAwCi1A QCAtODIzLDcgKzgyMywxNSBAQCBpc19oYXJkd2FyZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJlYWtw b2luCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0w MS0xNSAxMTo0NjoyOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9icmVha3BvaW50LmMJMjAxMC0wMS0xNSAxMTo0OTo0OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC05 NDcsNyArOTQ3LDE1IEBAIGlzX2hhcmR3YXJlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW4K ICAgICBJZiBWQUxfQ0hBSU4gaXMgbm9uLU5VTEwsICpWQUxfQ0hBSU4gd2lsbCBiZSByZWxlYXNl ZCBmcm9tIHRoZQogICAgIHZhbHVlIGNoYWluLiAgVGhlIGNhbGxlciBtdXN0IGZyZWUgdGhlIHZh bHVlcyBpbmRpdmlkdWFsbHkuICBJZgogICAgIFZBTF9DSEFJTiBpcyBOVUxMLCBhbGwgZ2VuZXJh dGVkIHZhbHVlcyB3aWxsIGJlIGxlZnQgb24gdGhlIHZhbHVlCkBAIC0zOSw4ICszOSw4IEBAIElu ZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9icmVha3BvaW50LmMKICAKICBzdGF0aWMgdm9p ZAogIGZldGNoX3dhdGNocG9pbnRfdmFsdWUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVj dCB2YWx1ZSAqKnZhbHAsCi1AQCAtNjMwMSw3ICs2MzA5LDcgQEAgd2F0Y2hfY29tbWFuZF8xIChj aGFyICphcmcsIGludCBhY2Nlc3NmbAotICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7CitA QCAtNzI2NCw3ICs3MjcyLDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nl c3NmbAorICAgc3RydWN0IGJyZWFrcG9pbnQgKmIsICpzY29wZV9icmVha3BvaW50ID0gTlVMTDsK ICAgIHN0cnVjdCBleHByZXNzaW9uICpleHA7CiAgICBzdHJ1Y3QgYmxvY2sgKmV4cF92YWxpZF9i bG9jazsKIC0gIHN0cnVjdCB2YWx1ZSAqdmFsLCAqbWFyazsKQEAgLTQ4LDcgKzQ4LDcgQEAgSW5k ZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2JyZWFrcG9pbnQuYwogICAgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lOwogICAgY2hhciAqZXhwX3N0YXJ0ID0gTlVMTDsKICAgIGNoYXIgKmV4cF9l bmQgPSBOVUxMOwotQEAgLTYzOTIsNiArNjQwMCwyNyBAQCB3YXRjaF9jb21tYW5kXzEgKGNoYXIg KmFyZywgaW50IGFjY2Vzc2ZsCitAQCAtNzM1Miw2ICs3MzYwLDI3IEBAIHdhdGNoX2NvbW1hbmRf MSAoY2hhciAqYXJnLCBpbnQgYWNjZXNzZmwKICAgIGV4cF92YWxpZF9ibG9jayA9IGlubmVybW9z dF9ibG9jazsKICAgIG1hcmsgPSB2YWx1ZV9tYXJrICgpOwogICAgZmV0Y2hfd2F0Y2hwb2ludF92 YWx1ZSAoZXhwLCAmdmFsLCBOVUxMLCBOVUxMKTsKQEAgLTc2LDExICs3NiwxMSBAQCBJbmRleDog Z2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvYnJlYWtwb2ludC5jCiAgICBpZiAodmFsICE9IE5VTEwp CiAgICAgIHJlbGVhc2VfdmFsdWUgKHZhbCk7CiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgw My9nZGIvZ2RidHlwZXMuaAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnR5cGVz LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAzLm9yaWcvZ2RiL2dkYnR5cGVz LmgJMjAwOS0wOC0wNCAwNjozMTo1OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIw MDkwODAzL2dkYi9nZGJ0eXBlcy5oCTIwMDktMDgtMDQgMDY6MzI6NTAuMDAwMDAwMDAwICswMjAw Ci1AQCAtNzEsNyArNzEsMjIgQEAgZW51bSB0eXBlX2NvZGUKKy0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAwMzoyMjozMS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMTUgMTE6 NDk6MjYuMDAwMDAwMDAwICswMTAwCitAQCAtNzIsNyArNzIsMjIgQEAgZW51bSB0eXBlX2NvZGUK ICAgICAgVFlQRV9DT0RFX1VOSU9OLAkJLyogQyB1bmlvbiBvciBQYXNjYWwgdmFyaWFudCBwYXJ0 ICovCiAgICAgIFRZUEVfQ09ERV9FTlVNLAkJLyogRW51bWVyYXRpb24gdHlwZSAqLwogICAgICBU WVBFX0NPREVfRkxBR1MsCQkvKiBCaXQgZmxhZ3MgdHlwZSAqLwpAQCAtMTA0LDExICsxMDQsMTEg QEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2dkYnR5cGVzLmgKICAgICAgVFlQRV9D T0RFX0lOVCwJCS8qIEludGVnZXIgdHlwZSAqLwogIAogICAgICAvKiBGbG9hdGluZyB0eXBlLiAg VGhpcyBpcyAqTk9UKiBhIGNvbXBsZXggdHlwZS4gIEJld2FyZSwgdGhlcmUgYXJlIHBhcnRzCi1J bmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTYuOC41MC4yMDA5MDgwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAwOS0wOC0wNCAwNjoz MjozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAwOS0wOC0wNCAwNjozMjo1MC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zNTE3LDYg KzM1MTcsMTggQEAgVGhpcyBjb21tYW5kIHByaW50cyBhIGxpc3Qgb2Ygd2F0Y2hwb2ludAorLS0t IGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDEtMTUg MTE6MTI6MzMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTAtMDEtMTUgMTE6NDk6MjYuMDAwMDAwMDAwICswMTAwCitAQCAtMzcy Myw2ICszNzIzLDE4IEBAIFRoaXMgY29tbWFuZCBwcmludHMgYSBsaXN0IG9mIHdhdGNocG9pbnQK ICBpdCBpcyB0aGUgc2FtZSBhcyBAY29kZXtpbmZvIGJyZWFrfSAoQHB4cmVme1NldCBCcmVha3N9 KS4KICBAZW5kIHRhYmxlCiAgCkBAIC0xMjcsMTAgKzEyNywxMCBAQCBJbmRleDogZ2RiLTYuOC41 MC4yMDA5MDgwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQHZhbHVle0dEQk59IHNldHMgYSBAZGZu e2hhcmR3YXJlIHdhdGNocG9pbnR9IGlmIHBvc3NpYmxlLiAgSGFyZHdhcmUKICB3YXRjaHBvaW50 cyBleGVjdXRlIHZlcnkgcXVpY2tseSwgYW5kIHRoZSBkZWJ1Z2dlciByZXBvcnRzIGEgY2hhbmdl IGluCiAgdmFsdWUgYXQgdGhlIGV4YWN0IGluc3RydWN0aW9uIHdoZXJlIHRoZSBjaGFuZ2Ugb2Nj dXJzLiAgSWYgQHZhbHVle0dEQk59Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ni44LjUwLjIwMDkwODAzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LmMJ MjAwOC0wMy0wMyAxNDoyNDoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDkw ODAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jCTIwMDktMDgtMDQgMDY6MzI6 NTAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jCTIwMDktMTItMzAgMTg6MzM6MzUuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dh dGNocG9pbnQuYwkyMDEwLTAxLTE1IDExOjQ5OjI2LjAwMDAwMDAwMCArMDEwMAogQEAgLTQwLDYg KzQwLDcgQEAgc3RydWN0IGZvbyBzdHJ1Y3QxLCBzdHJ1Y3QyLCAqcHRyMSwgKnB0cgogIGludCBk b3JlYWQgPSAwOwogIApAQCAtMTM5LDcgKzEzOSw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw ODAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5jCiAgCiAgdm9pZCBtYXJrZXIx ICgpCiAgewotQEAgLTExOCw2ICsxMTksMTAgQEAgZnVuYzQgKCkKK0BAIC0xMTksNiArMTIwLDEw IEBAIGZ1bmM0ICgpCiAgICBidWZbMF0gPSAzOwogICAgZ2xvYmFsX3B0ciA9IGJ1ZjsKICAgIGJ1 ZlswXSA9IDc7CkBAIC0xNTAsMTAgKzE1MCwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgw My9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuYwogIH0KICAKICBpbnQgbWFpbiAo KQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRj aHBvaW50LmV4cAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS93YXRjaHBvaW50LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuZXhwCTIwMDktMDEtMDMgMDY6 NTg6MDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuZXhwCTIwMDktMDgtMDQgMDY6MzI6NTAuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvd2F0Y2hwb2ludC5leHAJMjAxMC0wMS0wMSAwODozMjowMS4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC5l eHAJMjAxMC0wMS0xNSAxMTo1MDoyMS4wMDAwMDAwMDAgKzAxMDAKIEBAIC02NDEsNyArNjQxLDIx IEBAIHByb2MgdGVzdF93YXRjaHBvaW50X2FuZF9icmVha3BvaW50IHt9IHsKICAJfQogICAgICB9 CkBAIC0yMTYsMTAgKzIxNiwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQuZXhwCiAgICAgIH0KICB9CiAgICAgIAotQEAgLTg0 Miw2ICs4NzksMTcgQEAgaWYgW2luaXRpYWxpemVdIHRoZW4gewotICAgICB9Ci0gCitAQCAtODUx LDYgKzg4OCwxNyBAQCBpZiBbaW5pdGlhbGl6ZV0gdGhlbiB7CiAgICAgIHRlc3Rfd2F0Y2hwb2lu dF9hbmRfYnJlYWtwb2ludAorIAorICAgICB0ZXN0X3dhdGNocG9pbnRfaW5fYmlnX2Jsb2IKICsK ICsgICAgIyBTZWUgYWJvdmUuCiArICAgIGlmIFtpc3RhcmdldCAibWlwcy1pZHQtKiJdIHRoZW4g ewoKZGlmZiAtLWdpdCBhL2dkYi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2ggYi9nZGIt Ni44LWZvcnRyYW4tdGFnLWNvbnN0YW50LnBhdGNoCmluZGV4IGE3Y2MxZGQuLmIzZDczM2IgMTAw NjQ0Ci0tLSBhL2dkYi02LjgtZm9ydHJhbi10YWctY29uc3RhbnQucGF0Y2gKKysrIGIvZ2RiLTYu OC1mb3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGIt Ni44LjUwLjIwMDkwODExL2dkYi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9kd2FyZjJyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODEx Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDA5LTA4LTEzIDEwOjE0OjQ1LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi02LjguNTAuMjAwOTA4MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDA5LTA4LTEzIDEw OjIyOjM2LjAwMDAwMDAwMCArMDIwMAotQEAgLTI0ODAsNiArMjQ4MCw3IEBAIHNjYW5fcGFydGlh bF9zeW1ib2xzIChzdHJ1Y3QgcGFydGlhbF9kaWUKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDExOjUyOjU5LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDExOjUz OjU3LjAwMDAwMDAwMCArMDEwMAorQEAgLTI1MjksNiArMjUyOSw3IEBAIHNjYW5fcGFydGlhbF9z eW1ib2xzIChzdHJ1Y3QgcGFydGlhbF9kaWUKICAJICAgICAgYWRkX3BhcnRpYWxfc3VicHJvZ3Jh bSAocGRpLCBsb3dwYywgaGlnaHBjLCBuZWVkX3BjLCBjdSk7CiAgCSAgICAgIGJyZWFrOwogIAkg ICAgY2FzZSBEV19UQUdfdmFyaWFibGU6CkBAIC0xMCw3ICsxMCw3IEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwODExL2dkYi9kd2FyZjJyZWFkLmMKICAJICAgIGNhc2UgRFdfVEFHX3R5cGVkZWY6 CiAgCSAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgogIAkgICAgICBpZiAoIXBkaS0+aXNfZGVj bGFyYXRpb24pCi1AQCAtMjY3NSw2ICsyNjc2LDcgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1 Y3QgcGFydGlhbF9kaWVfaQorQEAgLTI3MTksNiArMjcyMCw3IEBAIGFkZF9wYXJ0aWFsX3N5bWJv bCAoc3RydWN0IHBhcnRpYWxfZGllX2kKICAJfQogICAgICAgIGJyZWFrOwogICAgICBjYXNlIERX X1RBR192YXJpYWJsZToKQEAgLTE4LDE1ICsxOCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkw ODExL2dkYi9kd2FyZjJyZWFkLmMKICAgICAgICBpZiAocGRpLT5pc19leHRlcm5hbCkKICAJewog IAkgIC8qIEdsb2JhbCBWYXJpYWJsZS4KLUBAIC0yODA1LDYgKzI4MDcsNyBAQCBkaWVfbmVlZHNf bmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpCi0gICAgICAgcmV0dXJuIDE7Ci0gCi0gICAg IGNhc2UgRFdfVEFHX3ZhcmlhYmxlOgotKyAgICBjYXNlIERXX1RBR19jb25zdGFudDoKLSAgICAg ICB7Ci0gCXN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0gCWF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9zcGVjaWZpY2F0aW9uLCBjdSk7Ci1AQCAtNDc0MSw3ICs0NzQ0LDggQEAgZHdhcmYy X2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcAorQEAgLTQ3NzAsNyArNDc3Miw4IEBA IGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAKICAJICBmaXAtPm5vbl9w dWJsaWNfZmllbGRzID0gMTsKICAJfQogICAgICB9CkBAIC0zNiw3ICsyOCw3IEBAIEluZGV4OiBn ZGItNi44LjUwLjIwMDkwODExL2dkYi9kd2FyZjJyZWFkLmMKICAgICAgewogICAgICAgIC8qIEMr KyBzdGF0aWMgbWVtYmVyLiAgKi8KICAKLUBAIC01MjMzLDcgKzUyMzcsOCBAQCByZWFkX3N0cnVj dHVyZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpCitAQCAtNTMzOSw3ICs1MzQyLDggQEAgcmVh ZF9zdHJ1Y3R1cmVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaQogICAgICAgIHdoaWxlIChjaGls ZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCiAgCXsKICAJICBpZiAoY2hpbGRfZGllLT50YWcgPT0g RFdfVEFHX21lbWJlcgpAQCAtNDYsNyArMzgsNyBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgx MS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgICB7CiAgCSAgICAgIC8qIE5PVEU6IGNhcmx0b24vMjAw Mi0xMS0wNTogQSBDKysgc3RhdGljIGRhdGEgbWVtYmVyCiAgCQkgc2hvdWxkIGJlIGEgRFdfVEFH X21lbWJlciB0aGF0IGlzIGEgZGVjbGFyYXRpb24sIGJ1dAotQEAgLTUzNTIsNiArNTM1Nyw3IEBA IHByb2Nlc3Nfc3RydWN0dXJlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8KK0BAIC01NDU5LDYgKzU0 NjMsNyBAQCBwcm9jZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvCiAgICAgIHsK ICAgICAgICBpZiAoY2hpbGRfZGllLT50YWcgPT0gRFdfVEFHX21lbWJlcgogIAkgIHx8IGNoaWxk X2RpZS0+dGFnID09IERXX1RBR192YXJpYWJsZQpAQCAtNTQsNyArNDYsNyBAQCBJbmRleDogZ2Ri LTYuOC41MC4yMDA5MDgxMS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgfHwgY2hpbGRfZGllLT50YWcg PT0gRFdfVEFHX2luaGVyaXRhbmNlKQogIAl7CiAgCSAgLyogRG8gbm90aGluZy4gICovCi1AQCAt Njk4MCw2ICs2OTg2LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUg KgorQEAgLTcxMzQsNiArNzEzOSw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdk Yl9ieXRlICoKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfc3VicHJvZ3JhbQogIAkgICYm IGFiYnJldi0+dGFnICE9IERXX1RBR19sZXhpY2FsX2Jsb2NrCiAgCSAgJiYgYWJicmV2LT50YWcg IT0gRFdfVEFHX3ZhcmlhYmxlCkBAIC02Miw3ICs1NCw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIw MDkwODExL2dkYi9kd2FyZjJyZWFkLmMKICAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbmFt ZXNwYWNlCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX21vZHVsZQogIAkgICYmIGFiYnJl di0+dGFnICE9IERXX1RBR19tZW1iZXIpCi1AQCAtNzA4OCw2ICs3MDk1LDcgQEAgbG9hZF9wYXJ0 aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKgorQEAgLTcyNDIsNiArNzI0OCw3IEBAIGxv YWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKICAgICAgICBpZiAobG9hZF9h bGwKICAJICB8fCBhYmJyZXYtPnRhZyA9PSBEV19UQUdfc3VicHJvZ3JhbQogIAkgIHx8IGFiYnJl di0+dGFnID09IERXX1RBR192YXJpYWJsZQpAQCAtNzAsNyArNjIsNyBAQCBJbmRleDogZ2RiLTYu OC41MC4yMDA5MDgxMS9nZGIvZHdhcmYycmVhZC5jCiAgCSAgfHwgYWJicmV2LT50YWcgPT0gRFdf VEFHX25hbWVzcGFjZQogIAkgIHx8IHBhcnRfZGllLT5pc19kZWNsYXJhdGlvbikKICAJewotQEAg LTg5MDEsNiArODkwOSwxMSBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0CitAQCAtOTAxNiw2ICs5MDIzLDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QKICAJICAvKiBEbyBub3QgYWRkIHRoZSBzeW1ib2wgdG8gYW55IGxpc3RzLiAg SXQgd2lsbCBiZSBmb3VuZCB2aWEKICAJICAgICBCTE9DS19GVU5DVElPTiBmcm9tIHRoZSBibG9j a3ZlY3Rvci4gICovCiAgCSAgYnJlYWs7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1pbmxpbmluZy1h ZGRvbi5wYXRjaCBiL2dkYi02LjgtaW5saW5pbmctYWRkb24ucGF0Y2gKaW5kZXggN2U4OTljYS4u YjQxYjgwNyAxMDA2NDQKLS0tIGEvZ2RiLTYuOC1pbmxpbmluZy1hZGRvbi5wYXRjaAorKysgYi9n ZGItNi44LWlubGluaW5nLWFkZG9uLnBhdGNoCkBAIC01LDEwICs1LDEwIEBAIGNhdXNpbmc6IEZB SUw6IGdkYi5iYXNlL3Vud2luZG9uc2lnbmFsLmV4cDogdW53aW5kb25zaWduYWwsIHN0YWNrIHVu d291bmQKIHJlc3VtZSgpIC0+IHRhcmdldF9yZXN1bWUoKSBtb3ZlIG9mIGNsZWFyX2lubGluZV9m cmFtZV9zdGF0ZSgpIGlzIGZvcjoKIGdkYi5taS9taS1uc21vcmlidW5kLmV4cAogCi1JbmRleDog Z2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5vcHQvaW5saW5lLWJ0LmMJMjAwOS0wNi0yOCAwMjoyMDoyNC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQu YwkyMDA5LTA5LTE3IDEyOjQ5OjAxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAx MDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWJ0LmMJMjAxMC0wMS0wMSAw ODozMjowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwkyMDEwLTAxLTE1IDExOjUwOjU5LjAwMDAwMDAwMCAr MDEwMAogQEAgLTEzLDEwICsxMywxNiBAQAogICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgICAgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u ICAqLwpAQCAtMjgsMTAgKzI4LDEwIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90 ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtYnQuYwogIAogIGlubGluZSBpbnQgZnVuYzEodm9pZCkK ICB7Ci1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5s aW5lLWNtZHMuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2lubGluZS1jbWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTE3Lm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1jbWRzLmMJMjAwOS0wNi0yOCAwMjoyMDoy NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUv Z2RiLm9wdC9pbmxpbmUtY21kcy5jCTIwMDktMDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAw CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxp bmUtY21kcy5jCTIwMTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu MC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuYwkyMDEwLTAx LTE1IDExOjUwOjU5LjAwMDAwMDAwMCArMDEwMAogQEAgLTEzLDEzICsxMywxOSBAQAogICAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCiAgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwpAQCAtNTQsMTAgKzU0LDEwIEBAIEluZGV4OiBn ZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5jCiAg aW5saW5lIGludCBmdW5jMSh2b2lkKQogIHsKICAgIGJhciAoKTsKLUluZGV4OiBnZGItNi44Ljkx LjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5leHAKK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtY21kcy5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTE3Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIub3B0L2lubGluZS1jbWRzLmV4cAkyMDA5LTA2LTI4IDAyOjIwOjI0LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1j bWRzLmV4cAkyMDA5LTA5LTE3IDEyOjQ5OjAxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAu NTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhwCTIw MTAtMDEtMDEgMDg6MzI6MDQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLWNtZHMuZXhwCTIwMTAtMDEtMTUgMTE6NTA6 NTkuMDAwMDAwMDAwICswMTAwCiBAQCAtMjMwLDcgKzIzMCw3IEBAIHNldCBsaW5lMyBbZ2RiX2dl dF9saW5lX251bWJlciAic2V0IGJyZWEKICBnZGJfYnJlYWtwb2ludCAkbGluZTMKICBnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAiY29uc2VjdXRpdmUgZnVuYzEiCkBAIC0xMTAsMTAgKzExMCwx MCBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5s aW5lLWNtZHMuZXhwCiArZ2RiX3Rlc3QgImluZm8gZnJhbWUiICJpbmxpbmVkIGludG8gZnJhbWUu KiIgIm91dGVyX2lubGluZTIgaW5saW5lZCIKICtnZGJfdGVzdCAiZmluaSIgIiIgInVwIGZyb20g b3V0ZXJfaW5saW5lMiIKICtnZGJfdGVzdCAiaW5mbyBmcmFtZSIgIiBpbiBtYWluIFxbXlxuXF0q XG4gc291cmNlIGxhbmd1YWdlLioiICJtYWluIG5vdCBpbmxpbmVkIgotSW5kZXg6IGdkYi02Ljgu OTEuMjAwOTA5MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuYworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5vcHQvaW5saW5lLWxvY2Fscy5jCTIwMDktMDYtMjggMDI6MjA6MjQuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5l LWxvY2Fscy5jCTIwMDktMDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcu MC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMJ MjAxMC0wMS0wMSAwODozMjowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMJMjAxMC0wMS0xNSAxMTo1 MDo1OS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xMywxMSArMTMsMTYgQEAKICAgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQog ICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KQEAgLTEzMywxMCArMTMzLDEwIEBAIEluZGV4OiBnZGItNi44 LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmMKICAKICBp bmxpbmUgaW50IGZ1bmMxKGludCBhcmcxKQogIHsKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3 L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4cAorSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkxNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9pbmxpbmUtbG9jYWxzLmV4cAkyMDA5LTA2LTMwIDE3OjUwOjI3LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2Nh bHMuZXhwCTIwMDktMDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41 MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbG9jYWxzLmV4cAky MDEwLTAxLTAxIDA4OjMyOjA0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCTIwMTAtMDEtMTUgMTE6 NTA6NTkuMDAwMDAwMDAwICswMTAwCiBAQCAtNzcsNiArNzcsOSBAQCBpZiB7ICEgJG5vX2ZyYW1l cyB9IHsKICAKICAjIE1ha2Ugc3VyZSB0aGF0IGxvY2FscyBvbiB0aGUgc3RhY2sgYXJlIGZvdW5k LiAgVGhpcyBpcyBhbiBhcnJheSB0bwpAQCAtMTU1LDExICsxNTUsMTEgQEAgSW5kZXg6IGdkYi02 LjguOTEuMjAwOTA5MTcvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2lubGluZS1sb2NhbHMuZXhwCiAr ICAgIHNldHVwX2tmYWlsICotKi0qICJnY2MvZGVidWcub3B0aW1pemF0aW9uIgogK30KICBnZGJf dGVzdCAicHJpbnQgYXJyYXlcWzBcXSIgIlxcXCQkZGVjaW1hbCA9IDE4NCIgInByaW50IGxvY2Fs ICgzKSIKLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9mcmFtZS5jCitJbmRleDogZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZnJhbWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEu MjAwOTA5MTcub3JpZy9nZGIvZnJhbWUuYwkyMDA5LTA5LTE3IDEyOjQ4OjQ5LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2ZyYW1lLmMJMjAwOS0wOS0xNyAxMjo0 OTowMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMTAsNyArMzEwLDcgQEAgZnByaW50X2ZyYW1lIChz dHJ1Y3QgdWlfZmlsZSAqZmlsZSwgc3RydQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9n ZGIvZnJhbWUuYwkyMDEwLTAxLTE1IDAzOjIyOjE0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2ZyYW1lLmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0zMTYsNyArMzE2LDcgQEAgZnByaW50X2ZyYW1lIChzdHJ1Y3QgdWlfZmlsZSAq ZmlsZSwgc3RydQogIHN0YXRpYyBzdHJ1Y3QgZnJhbWVfaW5mbyAqCiAgc2tpcF9pbmxpbmVkX2Zy YW1lcyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIHsKQEAgLTE2OCw3ICsxNjgsNyBAQCBJ bmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvZnJhbWUuYwogICAgICBmcmFtZSA9IGdldF9w cmV2X2ZyYW1lIChmcmFtZSk7CiAgCiAgICByZXR1cm4gZnJhbWU7Ci1AQCAtMTc3OCw2ICsxNzc4 LDcgQEAgZ2V0X2ZyYW1lX2FkZHJlc3NfaW5fYmxvY2sgKHN0cnVjdCBmcmFtZQorQEAgLTE3OTIs NiArMTc5Miw3IEBAIGdldF9mcmFtZV9hZGRyZXNzX2luX2Jsb2NrIChzdHJ1Y3QgZnJhbWUKICB7 CiAgICAvKiBBIGRyYWZ0IGFkZHJlc3MuICAqLwogICAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1l X3BjICh0aGlzX2ZyYW1lKTsKQEAgLTE3Niw3ICsxNzYsNyBAQCBJbmRleDogZ2RiLTYuOC45MS4y MDA5MDkxNy9nZGIvZnJhbWUuYwogIAogICAgc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUg PSB0aGlzX2ZyYW1lLT5uZXh0OwogIAotQEAgLTE4MjAsNiArMTgyMSw5IEBAIGdldF9mcmFtZV9h ZGRyZXNzX2luX2Jsb2NrIChzdHJ1Y3QgZnJhbWUKK0BAIC0xODM0LDYgKzE4MzUsOSBAQCBnZXRf ZnJhbWVfYWRkcmVzc19pbl9ibG9jayAoc3RydWN0IGZyYW1lCiAgICAgICB3aGlsZSBpbiBhbiBp bmxpbmVkIGZ1bmN0aW9uLCB0aGVuIHRoZSBjb2RlIGFkZHJlc3Mgb2YgdGhlCiAgICAgICAiY2Fs bGluZyIgbm9ybWFsIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgYWRqdXN0ZWQgZWl0aGVyLiAgKi8K ICAKQEAgLTE4Niw3ICsxODYsNyBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvZnJh bWUuYwogICAgd2hpbGUgKGdldF9mcmFtZV90eXBlIChuZXh0X2ZyYW1lKSA9PSBJTkxJTkVfRlJB TUUpCiAgICAgIG5leHRfZnJhbWUgPSBuZXh0X2ZyYW1lLT5uZXh0OwogIAotQEAgLTE4NTEsNyAr MTg1NSw3IEBAIGZpbmRfZnJhbWVfc2FsIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUKK0BAIC0x ODY1LDcgKzE4NjksNyBAQCBmaW5kX2ZyYW1lX3NhbCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l CiAgCXN5bSA9IGlubGluZV9za2lwcGVkX3N5bWJvbCAoaW5mZXJpb3JfcHRpZCk7CiAgCiAgICAg ICAgaW5pdF9zYWwgKHNhbCk7CkBAIC0xOTUsMTAgKzE5NSwxMCBAQCBJbmRleDogZ2RiLTYuOC45 MS4yMDA5MDkxNy9nZGIvZnJhbWUuYwogIAl7CiAgCSAgc2FsLT5zeW10YWIgPSBTWU1CT0xfU1lN VEFCIChzeW0pOwogIAkgIHNhbC0+bGluZSA9IFNZTUJPTF9MSU5FIChzeW0pOwotSW5kZXg6IGdk Yi02LjguOTEuMjAwOTA5MTcvZ2RiL2JyZWFrcG9pbnQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2JyZWFrcG9pbnQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5 MTcub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMDktMDktMTcgMTI6NDg6NTEuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvYnJlYWtwb2ludC5jCTIwMDktMDktMTcg MTI6NDk6MTIuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9icmVha3BvaW50LmMJMjAxMC0wMS0xNSAxMTo0OTo0OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9icmVha3BvaW50LmMJMjAxMC0wMS0xNSAxMTo1MjoyMC4w MDAwMDAwMDAgKzAxMDAKIEBAIC02Miw2ICs2Miw3IEBACiAgI2luY2x1ZGUgImppdC5oIgogICNp bmNsdWRlICJ4bWwtc3lzY2FsbC5oIgpAQCAtMjA3LDcgKzIwNyw3IEBAIEluZGV4OiBnZGItNi44 LjkxLjIwMDkwOTE3L2dkYi9icmVha3BvaW50LmMKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZp bGVzICovCiAgI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtMzIyMCwxMCArMzIy MSwyNCBAQCBicHN0YXRfY2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChicHN0CitAQCAtMzU2 MCwxMCArMzU2MSwyNCBAQCBicHN0YXRfY2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChicHN0 CiAgICBjb25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsID0gYnMtPmJyZWFrcG9pbnRfYXQ7CiAg ICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGJsLT5vd25lcjsKICAKQEAgLTIzNiw3ICsyMzYsNyBA QCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvYnJlYWtwb2ludC5jCiAgICAgIHsKICAg ICAgICBpbnQgdmFsdWVfaXNfemVybyA9IDA7CiAgICAgICAgCi1AQCAtMzM5OSw2ICszMzk5LDEy IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoQ09SRV9BRERSIGJwX2FkZHIsIHAKK0BAIC0zNzMxLDYg KzM3NDYsMTIgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZQogIAkJ ICBicy0+cHJpbnQgPSAwOwogIAkJfQogIAkgICAgICBicy0+Y29tbWFuZHMgPSBjb3B5X2NvbW1h bmRfbGluZXMgKGJzLT5jb21tYW5kcyk7CkBAIC0yNDgsOCArMjQ4LDggQEAgSW5kZXg6IGdkYi02 LjguOTEuMjAwOTA5MTcvZ2RiL2JyZWFrcG9pbnQuYwogKwkJICBzdGVwX2ludG9faW5saW5lX2Zy YW1lIChwdGlkKTsKICAJICAgIH0KICAKLSAJICAvKiBQcmludCBub3RoaW5nIGZvciB0aGlzIGVu dHJ5IGlmIHdlIGRvbnQgc3RvcCBvciBpZiB3ZSBkb250IHByaW50LiAgKi8KLUBAIC01NTcyLDkg KzU1OTMsOSBAQCBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoCisgCSAg LyogUHJpbnQgbm90aGluZyBmb3IgdGhpcyBlbnRyeSBpZiB3ZSBkb250IHN0b3Agb3IgZG9udCBw cmludC4gICovCitAQCAtNjAzOSw5ICs2MDYwLDkgQEAgc2V0X21vbWVudGFyeV9icmVha3BvaW50 IChzdHJ1Y3QgZ2RiYXJjaAogIHsKICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwogIApAQCAtMjYy LDExICsyNjIsMTEgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2JyZWFrcG9pbnQu YwogIAogICAgYiA9IHNldF9yYXdfYnJlYWtwb2ludCAoZ2RiYXJjaCwgc2FsLCB0eXBlKTsKICAg IGItPmVuYWJsZV9zdGF0ZSA9IGJwX2VuYWJsZWQ7Ci1JbmRleDogZ2RiLTYuOC45MS4yMDA5MDkx Ny9nZGIvaW5saW5lLWZyYW1lLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxp bmUtZnJhbWUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9nZGIv aW5saW5lLWZyYW1lLmMJMjAwOS0wOS0xMyAxODoyODoyOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNi44LjkxLjIwMDkwOTE3L2dkYi9pbmxpbmUtZnJhbWUuYwkyMDA5LTA5LTE3IDEyOjQ5OjAx LjAwMDAwMDAwMCArMDIwMAotQEAgLTE5OSw2ICsxOTksMTIgQEAgaW5saW5lX2ZyYW1lX3NuaWZm ZXIgKGNvbnN0IHN0cnVjdCBmcmFtZQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIv aW5saW5lLWZyYW1lLmMJMjAxMC0wMS0wMSAwODozMTozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuYwkyMDEwLTAxLTE1IDExOjUwOjU5 LjAwMDAwMDAwMCArMDEwMAorQEAgLTIxMyw2ICsyMTMsMTIgQEAgaW5saW5lX2ZyYW1lX3NuaWZm ZXIgKGNvbnN0IHN0cnVjdCBmcmFtZQogICAgaWYgKGZyYW1lX2Jsb2NrID09IE5VTEwpCiAgICAg IHJldHVybiAwOwogIApAQCAtMjc5LDcgKzI3OSw3IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkw OTE3L2dkYi9pbmxpbmUtZnJhbWUuYwogICAgLyogQ2FsY3VsYXRlIERFUFRILCB0aGUgbnVtYmVy IG9mIGlubGluZWQgZnVuY3Rpb25zIGF0IHRoaXMKICAgICAgIGxvY2F0aW9uLiAgKi8KICAgIGRl cHRoID0gMDsKLUBAIC0yMDgsNiArMjE0LDEwIEBAIGlubGluZV9mcmFtZV9zbmlmZmVyIChjb25z dCBzdHJ1Y3QgZnJhbWUKK0BAIC0yMjIsNiArMjI4LDEwIEBAIGlubGluZV9mcmFtZV9zbmlmZmVy IChjb25zdCBzdHJ1Y3QgZnJhbWUKICAgICAgICBpZiAoYmxvY2tfaW5saW5lZF9wIChjdXJfYmxv Y2spKQogIAlkZXB0aCsrOwogIApAQCAtMjkwLDcgKzI5MCw3IEBAIEluZGV4OiBnZGItNi44Ljkx LjIwMDkwOTE3L2dkYi9pbmxpbmUtZnJhbWUuYwogICAgICAgIGN1cl9ibG9jayA9IEJMT0NLX1NV UEVSQkxPQ0sgKGN1cl9ibG9jayk7CiAgICAgIH0KICAKLUBAIC0yOTEsNyArMzAxLDYgQEAgc2tp cF9pbmxpbmVfZnJhbWVzIChwdGlkX3QgcHRpZCkKK0BAIC0zMDAsNyArMzEwLDYgQEAgc2tpcF9p bmxpbmVfZnJhbWVzIChwdGlkX3QgcHRpZCkKICB7CiAgICBDT1JFX0FERFIgdGhpc19wYzsKICAg IHN0cnVjdCBibG9jayAqZnJhbWVfYmxvY2ssICpjdXJfYmxvY2s7CkBAIC0yOTgsNyArMjk4LDcg QEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2lubGluZS1mcmFtZS5jCiAgICBpbnQg c2tpcF9jb3VudCA9IDA7CiAgICBzdHJ1Y3QgaW5saW5lX3N0YXRlICpzdGF0ZTsKICAKLUBAIC0z MTIsMTAgKzMyMSw3IEBAIHNraXBfaW5saW5lX2ZyYW1lcyAocHRpZF90IHB0aWQpCitAQCAtMzIx LDEwICszMzAsNyBAQCBza2lwX2lubGluZV9mcmFtZXMgKHB0aWRfdCBwdGlkKQogIAkJIG9mIEJM T0NLX1NUQVJULiAgKi8KICAJICAgICAgaWYgKEJMT0NLX1NUQVJUIChjdXJfYmxvY2spID09IHRo aXNfcGMKICAJCSAgfHwgYmxvY2tfc3RhcnRpbmdfcG9pbnRfYXQgKHRoaXNfcGMsIGN1cl9ibG9j aykpCkBAIC0zMTAsNyArMzEwLDcgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2lu bGluZS1mcmFtZS5jCiAgCSAgICAgIGVsc2UKICAJCWJyZWFrOwogIAkgICAgfQotQEAgLTMyNyw3 ICszMzMsNiBAQCBza2lwX2lubGluZV9mcmFtZXMgKHB0aWRfdCBwdGlkKQorQEAgLTMzNiw3ICsz NDIsNiBAQCBza2lwX2lubGluZV9mcmFtZXMgKHB0aWRfdCBwdGlkKQogICAgc3RhdGUgPSBhbGxv Y2F0ZV9pbmxpbmVfZnJhbWVfc3RhdGUgKHB0aWQpOwogICAgc3RhdGUtPnNraXBwZWRfZnJhbWVz ID0gc2tpcF9jb3VudDsKICAgIHN0YXRlLT5zYXZlZF9wYyA9IHRoaXNfcGM7CkBAIC0zMTgsNyAr MzE4LDcgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2lubGluZS1mcmFtZS5jCiAg CiAgICBpZiAoc2tpcF9jb3VudCAhPSAwKQogICAgICByZWluaXRfZnJhbWVfY2FjaGUgKCk7Ci1A QCAtMzQ1LDYgKzM1MCwyMyBAQCBzdGVwX2ludG9faW5saW5lX2ZyYW1lIChwdGlkX3QgcHRpZCkK K0BAIC0zNTQsNiArMzU5LDIzIEBAIHN0ZXBfaW50b19pbmxpbmVfZnJhbWUgKHB0aWRfdCBwdGlk KQogICAgcmVpbml0X2ZyYW1lX2NhY2hlICgpOwogIH0KICAKQEAgLTM0MiwxMCArMzQyLDEwIEBA IEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9pbmxpbmUtZnJhbWUuYwogIC8qIFJldHVy biB0aGUgbnVtYmVyIG9mIGhpZGRlbiBmdW5jdGlvbnMgaW5saW5lZCBpbnRvIHRoZSBjdXJyZW50 CiAgICAgZnJhbWUuICAqLwogIAotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL3Rlc3Rz dWl0ZS9nZGIub3B0L2lubGluZS1tYXJrZXJzLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbWFya2Vycy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC45MS4yMDA5MDkxNy5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9pbmxpbmUtbWFy a2Vycy5jCTIwMDktMDYtMjggMDI6MjA6MjQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45 MS4yMDA5MDkxNy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLW1hcmtlcnMuYwkyMDA5LTA5 LTE3IDEyOjQ5OjAxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvaW5saW5lLW1hcmtlcnMuYwkyMDEwLTAxLTAxIDA4OjMy OjA0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIub3B0L2lubGluZS1tYXJrZXJzLmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAg KzAxMDAKIEBAIC0xNSwxMSArMTUsNiBAQAogIAogIGV4dGVybiBpbnQgeCwgeTsKQEAgLTM1OCwx NCArMzU4LDE0IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90ZXN0c3VpdGUvZ2Ri Lm9wdC9pbmxpbmUtbWFya2Vycy5jCiAgdm9pZCBtYXJrZXIodm9pZCkKICB7CiAgICB4ICs9IHk7 IC8qIHNldCBicmVha3BvaW50IDIgaGVyZSAqLwotSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5MTcv Z2RiL2dkYnRocmVhZC5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidGhyZWFk LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjkxLjIwMDkwOTE3Lm9yaWcvZ2RiL2dkYnRocmVh ZC5oCTIwMDktMDktMTcgMTI6NDc6MDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC45MS4y MDA5MDkxNy9nZGIvZ2RidGhyZWFkLmgJMjAwOS0wOS0xNyAxMjo0OTowMS4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xOTEsNiArMTkxLDEyIEBAIHN0cnVjdCB0aHJlYWRfaW5mbwotIAotICAgLyogUHJp dmF0ZSBkYXRhIHVzZWQgYnkgdGhlIHRhcmdldCB2ZWN0b3IgaW1wbGVtZW50YXRpb24uICAqLwot ICAgc3RydWN0IHByaXZhdGVfdGhyZWFkX2luZm8gKnByaXZhdGU7CistLS0gZ2RiLTcuMC41MC4y MDEwMDExNS5vcmlnL2dkYi9nZGJ0aHJlYWQuaAkyMDEwLTAxLTE1IDAzOjIyOjEzLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnRocmVhZC5oCTIwMTAtMDEt MTUgMTE6NTE6MTkuMDAwMDAwMDAwICswMTAwCitAQCAtMTk1LDYgKzE5NSwxMiBAQCBzdHJ1Y3Qg dGhyZWFkX2luZm8KKyAgIC8qIEZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHRvIGZyZWUgUFJJVkFU RS4gIElmIHRoaXMgaXMgTlVMTCwgdGhlbgorICAgICAgeGZyZWUgd2lsbCBiZSBjYWxsZWQgb24g UFJJVkFURS4gICovCisgICB2b2lkICgqcHJpdmF0ZV9kdG9yKSAoc3RydWN0IHByaXZhdGVfdGhy ZWFkX2luZm8gKik7CiArCiArICAvKiBOb256ZXJvIGlmIHRoZSBjdXJyZW50IGZyYW1lIFBDIHNo b3VsZCBiZSB1bndvdW5kIGFzIHRoZSBjYWxsZXIuICBJdCBpcwogKyAgICAgdXNlZCB0byBrZWVw IHRoZSBiYWNrdHJhY2UgdXBwZXIgbGV2ZWxzIGV4aXN0aW5nIGFmdGVyIGZpbmlzaF9jb21tYW5k IGludG8KQEAgLTM3NSwxMSArMzc1LDExIEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dk Yi9nZGJ0aHJlYWQuaAogIH07CiAgCiAgLyogQ3JlYXRlIGFuIGVtcHR5IHRocmVhZCBsaXN0LCBv ciBlbXB0eSB0aGUgZXhpc3Rpbmcgb25lLiAgKi8KLUluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3 L2dkYi9pbmZjbWQuYworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNtZC5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTYuOC45MS4yMDA5MDkxNy5vcmlnL2dkYi9pbmZjbWQuYwkyMDA5 LTA5LTE3IDEyOjQ3OjA3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguOTEuMjAwOTA5MTcv Z2RiL2luZmNtZC5jCTIwMDktMDktMTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTQz NCwxMSArMTQzNCwxMSBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykK Ky0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2luZmNtZC5jCTIwMTAtMDEtMTUgMDM6 MjI6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvaW5mY21k LmMJMjAxMC0wMS0xNSAxMTo1MTo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xNDM4LDExICsxNDM4 LDExIEBAIGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQogICAgICAgIHN0 cnVjdCB0eXBlICp2YWx1ZV90eXBlOwogIAogICAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdF VF9UWVBFIChTWU1CT0xfVFlQRSAoYS0+ZnVuY3Rpb24pKTsKQEAgLTM5Myw3ICszOTMsNyBAQCBJ bmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvaW5mY21kLmMKICAJcHJpbnRfcmV0dXJuX3Zh bHVlIChTWU1CT0xfVFlQRSAoYS0+ZnVuY3Rpb24pLCB2YWx1ZV90eXBlKTsKICAgICAgfQogIAot QEAgLTE1NDYsNiArMTU0NiwxNiBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVu Y3Rpb24sCitAQCAtMTU1MCw2ICsxNTUwLDE2IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3lt Ym9sICpmdW5jdGlvbiwKICAgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lkIChm cmFtZSk7CiAgICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51 cCwgJnRocmVhZCk7CiAgCkBAIC00MDgsOSArNDA4LDkgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAw OTA5MTcvZ2RiL2luZmNtZC5jCiArICAgIHRwLT5jdXJyZW50X3BjX2lzX25vdGN1cnJlbnQgPSAx OwogKwogICAgdHAtPnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3Jl Z2lzdGVycywgcGxlYXNlLi4uICAqLwotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEsIFRBUkdF VF9TSUdOQUxfREVGQVVMVCwgMCk7CisgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdz KSk7CiAgCi1AQCAtMTU2Nyw3ICsxNTc3LDkgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1i b2wgKmZ1bmN0aW9uLAorQEAgLTE1NzAsNyArMTU4MCw5IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1 Y3Qgc3ltYm9sICpmdW5jdGlvbiwKICBzdGF0aWMgdm9pZAogIGZpbmlzaF9jb21tYW5kIChjaGFy ICphcmcsIGludCBmcm9tX3R0eSkKICB7CkBAIC00MjEsNyArNDIxLDcgQEAgSW5kZXg6IGdkYi02 LjguOTEuMjAwOTA5MTcvZ2RiL2luZmNtZC5jCiAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbjsK ICAKICAgIGludCBhc3luY19leGVjID0gMDsKLUBAIC0xNTk4LDQ1ICsxNjEwLDYzIEBAIGZpbmlz aF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK0BAIC0xNjAxLDQ1ICsxNjEzLDYz IEBAIGZpbmlzaF9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICAgIGlmICghdGFy Z2V0X2hhc19leGVjdXRpb24pCiAgICAgIGVycm9yIChfKCJUaGUgcHJvZ3JhbSBpcyBub3QgcnVu bmluZy4iKSk7CiAgCkBAIC01MDIsNyArNTAyLDcgQEAgSW5kZXg6IGdkYi02LjguOTEuMjAwOTA5 MTcvZ2RiL2luZmNtZC5jCiAgCiAgICAvKiBQcmludCBpbmZvIG9uIHRoZSBzZWxlY3RlZCBmcmFt ZSwgaW5jbHVkaW5nIGxldmVsIG51bWJlciBidXQgbm90CiAgICAgICBzb3VyY2UuICAqLwotQEAg LTE2NTAsMTAgKzE2ODAsMTQgQEAgZmluaXNoX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21f dHR5KQorQEAgLTE2NTMsMTAgKzE2ODMsMTQgQEAgZmluaXNoX2NvbW1hbmQgKGNoYXIgKmFyZywg aW50IGZyb21fdHR5KQogICAgICAgIHByaW50X3N0YWNrX2ZyYW1lIChnZXRfc2VsZWN0ZWRfZnJh bWUgKE5VTEwpLCAxLCBMT0NBVElPTik7CiAgICAgIH0KICAKQEAgLTUxOCwxMSArNTE4LDExIEBA IEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9pbmZjbWQuYwogIH0KICAMCiAgCi1JbmRl eDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGFyZ2V0LmMKK0luZGV4OiBnZGItNy4wLjUwLjIw MTAwMTE1L2dkYi90YXJnZXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcu b3JpZy9nZGIvdGFyZ2V0LmMJMjAwOS0wOS0xNyAxMjo0ODo0OS4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi90YXJnZXQuYwkyMDA5LTA5LTE3IDEyOjQ5OjAxLjAw MDAwMDAwMCArMDIwMAotQEAgLTIxODcsNiArMjE4Nyw3IEBAIHRhcmdldF9yZXN1bWUgKHB0aWRf dCBwdGlkLCBpbnQgc3RlcCwgZW4KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rh cmdldC5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvdGFyZ2V0LmMJMjAxMC0wMS0xNSAxMTo1MDo1OS4wMDAwMDAwMDAgKzAx MDAKK0BAIC0yMjQxLDYgKzIyNDEsNyBAQCB0YXJnZXRfcmVzdW1lIChwdGlkX3QgcHRpZCwgaW50 IHN0ZXAsIGVuCiAgewogICAgc3RydWN0IHRhcmdldF9vcHMgKnQ7CiAgCkBAIC01MzAsMTAgKzUz MCwxMCBAQCBJbmRleDogZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvdGFyZ2V0LmMKICAgIHRhcmdl dF9kY2FjaGVfaW52YWxpZGF0ZSAoKTsKICAKICAgIGZvciAodCA9IGN1cnJlbnRfdGFyZ2V0LmJl bmVhdGg7IHQgIT0gTlVMTDsgdCA9IHQtPmJlbmVhdGgpCi1JbmRleDogZ2RiLTYuOC45MS4yMDA5 MDkxNy9nZGIvaW5saW5lLWZyYW1lLmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9p bmxpbmUtZnJhbWUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAwOTA5MTcub3JpZy9n ZGIvaW5saW5lLWZyYW1lLmgJMjAwOS0wNi0yOCAwMjoyMDoyMi4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNi44LjkxLjIwMDkwOTE3L2dkYi9pbmxpbmUtZnJhbWUuaAkyMDA5LTA5LTE3IDEyOjQ5 OjAxLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvaW5s aW5lLWZyYW1lLmgJMjAxMC0wMS0wMSAwODozMTozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9pbmxpbmUtZnJhbWUuaAkyMDEwLTAxLTE1IDExOjUwOjU5LjAw MDAwMDAwMCArMDEwMAogQEAgLTQzLDYgKzQzLDEwIEBAIHZvaWQgY2xlYXJfaW5saW5lX2ZyYW1l X3N0YXRlIChwdGlkX3QgcHQKICAKICB2b2lkIHN0ZXBfaW50b19pbmxpbmVfZnJhbWUgKHB0aWRf dCBwdGlkKTsKQEAgLTU0NSwxOSArNTQ1LDE5IEBAIEluZGV4OiBnZGItNi44LjkxLjIwMDkwOTE3 L2dkYi9pbmxpbmUtZnJhbWUuaAogIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGhpZGRlbiBmdW5j dGlvbnMgaW5saW5lZCBpbnRvIHRoZSBjdXJyZW50CiAgICAgZnJhbWUuICAqLwogIAotSW5kZXg6 IGdkYi02LjguOTEuMjAwOTA5MTcvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguOTEuMjAw OTA5MTcub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMDktMDktMTcgMTI6NDg6NTEuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTYuOC45MS4yMDA5MDkxNy9nZGIvZHdhcmYycmVhZC5jCTIwMDktMDkt MTcgMTI6NDk6MDEuMDAwMDAwMDAwICswMjAwCi1AQCAtNDEyOCw2ICs0MTI4LDcgQEAgcmVhZF9m dW5jX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcworLS0tIGdkYi03LjAuNTAuMjAxMDAx MTUub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMTE6NDY6MjkuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUg MTE6NTI6NTkuMDAwMDAwMDAwICswMTAwCitAQCAtNDA3OCw2ICs0MDc4LDcgQEAgcmVhZF9mdW5j X3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcworICAgQ09SRV9BRERSIGJhc2VhZGRyOwog ICAgc3RydWN0IGJsb2NrICpibG9jazsKLSAgIHVuc2lnbmVkIGRpZV9jaGlsZHJlbiA9IDA7CiAg ICBpbnQgaW5saW5lZF9mdW5jID0gKGRpZS0+dGFnID09IERXX1RBR19pbmxpbmVkX3N1YnJvdXRp bmUpOwogKyAgc3RydWN0IHR5cGUgKnR5cGU7CiAgCiAgICBpZiAoaW5saW5lZF9mdW5jKQogICAg ICB7Ci1AQCAtNDE2OSw3ICs0MTcwLDEwIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHMKK0BAIC00MTA5LDcgKzQxMTAsMTAgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgcwogICAgYWRkX3RvX2N1X2Z1bmNfbGlzdCAobmFtZSwgbG93cGMs IGhpZ2hwYywgY3UpOwogIAogICAgbmV3ID0gcHVzaF9jb250ZXh0ICgwLCBsb3dwYyk7CgpkaWZm IC0tZ2l0IGEvZ2RiLTcuMC11cHN0cmVhbS5wYXRjaCBiL2dkYi03LjAtdXBzdHJlYW0ucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiZGQwOGUuLjAwMDAwMDAKLS0tIGEvZ2Ri LTcuMC11cHN0cmVhbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyOSArMCwwIEBACi0KLQot Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMS9tc2cwMDM4OC5o dG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTExL21zZzAwMTU2Lmh0 bWwKLVN1YmplY3Q6IFtwYXRjaF0gRml4IGNyYXNoIG9uIHJlYWRpbmcgc3RhYnMKLQotSGksCi0K LXRoZXJlIGlzIGEgY3Jhc2ggb24gcmVhZGluZyBzdGFicyBmcGMgYmluYXJ5OgotCWh0dHBzOi8v YnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTM3ODM3Ci0KLVByb2dyYW0gcmVj ZWl2ZWQgc2lnbmFsIFNJR1NFR1YsIFNlZ21lbnRhdGlvbiBmYXVsdC4KLTB4MDAwMDAwMDAwMDY5 ZGIzZCBpbiByZWFkX2RieF9zeW10YWIgKG9iamZpbGU9MHgxZGFmNWYwKSBhdCBkYnhyZWFkLmM6 MTM2OQotMTM2OSAgICAgICAgICAgICAgaWYgKChuYW1lc3RyaW5nWzBdID09ICctJyAmJiBuYW1l c3RyaW5nWzFdID09ICdsJykKLQotKGdkYikgcC94IG5saXN0Lm5fc3RyeAotJDcgPSAweGZmZmZm ZmY4Ci0oZ2RiKSBwIHNpemVvZihubGlzdC5uX3N0cngpCi0kMTAgPSA4Ci0KLUJlbG93IHRoZSBw YXRjaCBjb250ZXh0IGlzOgotICAgIG5hbWVzdHJpbmcgPSAobmxpc3QtPm5fc3RyeCArIGZpbGVf c3RyaW5nX3RhYmxlX29mZnNldAotICAgICAgICAgICAgICAgICAgKyBEQlhfU1RSSU5HVEFCIChv YmpmaWxlKSk7Ci0KLXNvIElNTyB0aGUgYCh1bnNpZ25lZCknIGNhc3QgaXMgZXhjZXNzaXZlIGFz IGl0IGRvZXMgbm90IG1hdGNoIHRoZSBleHByZXNzaW9uCi1iZWxvdy4gIFN1Y2ggY2FzdCBpcyB0 aGVyZSBzaW5jZSB0aGUgR0RCICJJbml0aWFsIHJldmlzaW9uIiAoMTk5OSkuCi0KLWBuX3N0cngn IHR5cGU6Ci1zdHJ1Y3QgaW50ZXJuYWxfbmxpc3QKLXsKLSAgdW5zaWduZWQgbG9uZyBuX3N0cng7 ICAgICAgICAgICAgICAgICAvKiBJbmRleCBpbnRvIHN0cmluZyB0YWJsZSBvZiBuYW1lLiAgKi8K LS4uLgotfTsKLQotUmVncmVzc2lvbiB0ZXN0ZWQgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9 LWZlZG9yYTEyLWxpbnV4LWdudSB3aGljaCBkb2VzIG5vdAotbWVhbiBhbnl0aGluZyB3aXRoIHRo ZSBkZWZhdWx0IERXQVJGIGRlYnVnIGluZm8uICBJdCB3YXMgaGFuZ2luZyBmb3Igc3RhYnMgc28K LXRyaWVkIGp1c3QgYSBsYXJnZSBwYXJ0IG9mIGdkYi5iYXNlLyouZXhwIG9uIHg4Nl82NC1tMzIg LSBgdW5peC8tZ3N0YWJzKy8tbTMyJy4KLQotSWYgaXQgaXNuJ3Qgb2J2aW91c2x5IGFwcHJvdmVk IHBsZWFzZSBmZWVsIGZyZWUgdG8gZHJvcCBpdCBhcyBvbmUgc2hvdWxkIG5vdAotdXNlIFNUQUJT IGluIHRoZSBmaXJzdCBwbGFjZS4KLQotCi1SZWdhcmRzLAotSmFuCi0KLQotZ2RiLwotMjAwOS0x MS0xNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBk YnhyZWFkLmMgKHNldF9uYW1lc3RyaW5nKTogUmVtb3ZlIGNhc3QgdG8gdW5zaWduZWQuICBDaGVj ayBOX1NUUlgKLQlvdmVyZmxvdy4KLQotLS0tIGEvZ2RiL2RieHJlYWQuYwotKysrIGIvZ2RiL2Ri eHJlYWQuYwotQEAgLTk2NSw4ICs5NjUsOSBAQCBzZXRfbmFtZXN0cmluZyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGNvbnN0IHN0cnVjdCBpbnRlcm5hbF9ubGlzdCAqbmxpc3QpCi0gewotICAg Y2hhciAqbmFtZXN0cmluZzsKLSAKLS0gIGlmICgoKHVuc2lnbmVkKSBubGlzdC0+bl9zdHJ4ICsg ZmlsZV9zdHJpbmdfdGFibGVfb2Zmc2V0KQotLSAgICAgID49IERCWF9TVFJJTkdUQUJfU0laRSAo b2JqZmlsZSkpCi0rICBpZiAobmxpc3QtPm5fc3RyeCArIGZpbGVfc3RyaW5nX3RhYmxlX29mZnNl dAotKyAgICAgID49IERCWF9TVFJJTkdUQUJfU0laRSAob2JqZmlsZSkKLSsgICAgICB8fCBubGlz dC0+bl9zdHJ4ICsgZmlsZV9zdHJpbmdfdGFibGVfb2Zmc2V0IDwgbmxpc3QtPm5fc3RyeCkKLSAg ICAgewotICAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiYmFkIHN0cmlu ZyB0YWJsZSBvZmZzZXQgaW4gc3ltYm9sICVkIiksCi0gCQkgc3ltbnVtKTsKLQotCi0KLVJlOiBb UkZBXSBGaXggInNob3cgY29udmVuaWVuY2UiIHRlc3QKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGItcGF0Y2hlcy8yMDA5LTA5L21zZzAwNTY1Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItY3ZzLzIwMDktMDkvbXNnMDAwOTkuaHRtbAotCi0jIyMgc3JjL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCTIwMDkvMDkvMTUgMTg6NTE6MjUJMS4xOTYwCi0jIyMgc3JjL2dkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nCTIwMDkvMDkvMTcgMTc6NDk6NDYJMS4xOTYxCi0jIyAtMSwzICsxLDcg QEAKLSsyMDA5LTA5LTE3ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29t PgotKwotKwkqIGdkYi5iYXNlL2RlZmF1bHQuZXhwOiBGaXggInNob3cgY29udmVuaWVuY2UiLgot KwotIDIwMDktMDktMTUgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJKiBs aWIvbWktc3VwcG9ydC5leHAgKG1pX2NyZWF0ZV92YXJvYmopOiBVcGRhdGUuCi0tLS0gc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAJMjAwOS8wOC8xMyAxNDo1ODoyNwkxLjMx Ci0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAJMjAwOS8wOS8xNyAx Nzo0OTo0NgkxLjMyCi1AQCAtNTk4LDcgKzU5OCw3IEBACi0gI3Rlc3Qgc2hvdyBjb25maXJtCi0g Z2RiX3Rlc3QgInNob3cgY29uZmlybSIgIldoZXRoZXIgdG8gY29uZmlybSBwb3RlbnRpYWxseSBk YW5nZXJvdXMgb3BlcmF0aW9ucyBpcyBvXFthLXpcXSouIiAic2hvdyBjb25maXJtIgotICN0ZXN0 IHNob3cgY29udmVuaWVuY2UKLS1nZGJfdGVzdCAic2hvdyBjb252ZW5pZW5jZSIgIk5vIGRlYnVn Z2VyIGNvbnZlbmllbmNlIHZhcmlhYmxlcyBub3cgZGVmaW5lZC4oXFteXHJcblxdKlxbXHJcblxd KStDb252ZW5pZW5jZSB2YXJpYWJsZXMgaGF2ZSBuYW1lcyBzdGFydGluZyB3aXRoIFwiLlwiOyhc W15cclxuXF0qXFtcclxuXF0pK3VzZSBcInNldFwiIGFzIGluIFwic2V0IC5mb28gPSA1XCIgdG8g ZGVmaW5lIHRoZW0uIiAic2hvdyBjb252ZW5pZW5jZSIKLStnZGJfdGVzdCAic2hvdyBjb252ZW5p ZW5jZSIgIlxcXCRfc2lnaW5mbyA9IHZvaWQiICJzaG93IGNvbnZlbmllbmNlIgotICN0ZXN0IHNo b3cgZGlyZWN0b3JpZXMKLSBnZGJfdGVzdCAic2hvdyBkaXJlY3RvcmllcyIgIlNvdXJjZSBkaXJl Y3RvcmllcyBzZWFyY2hlZDogLmNkaXJcWzo7XF0uY3dkIiAic2hvdyBkaXJlY3RvcmllcyIKLSAj dGVzdCBzaG93IGVkaXRpbmcKLSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAwOS8wOS8xNSAx ODo1MToyNAkxLjk1MwotIyMjIHNyYy9nZGIvZG9jL0NoYW5nZUxvZwkyMDA5LzA5LzE3IDE3OjQ5 OjQ2CTEuOTU0Ci0jIyAtMSwzICsxLDggQEAKLSsyMDA5LTA5LTE3ICBQYXVsIFBsdXpobmlrb3Yg IDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotKwotKwkqIGdkYi50ZXhpbmZvIChjb252ZW5pbmNl IHZhcmlhYmxlcyk6IE1lbnRpb24KLSsJJF9zaWdpbmZvIGNvdWxkIGJlIGVtcHR5LgotKwkKLSAy MDA5LTA5LTE1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0gCi0gCSogZ2RiLnRl eGluZm8gKEdEQi9NSSBWYXJpYWJsZSBPYmplY3RzKTogRG9jdW1lbnQKLS0tLSBzcmMvZ2RiL2Rv Yy9nZGIudGV4aW5mbwkyMDA5LzA5LzE1IDE4OjUxOjI1CTEuNjI0Ci0rKysgc3JjL2dkYi9kb2Mv Z2RiLnRleGluZm8JMjAwOS8wOS8xNyAxNzo0OTo0NgkxLjYyNQotQEAgLTc4MTksOCArNzgxOSwx MCBAQAotIAotIEBpdGVtICRfc2lnaW5mbwotIEB2aW5kZXggJF9zaWdpbmZvQHJ7LCBjb252ZW5p ZW5jZSB2YXJpYWJsZX0KLS1UaGUgdmFyaWFibGUgQGNvZGV7JF9zaWdpbmZvfSBpcyBib3VuZCB0 byBleHRyYSBzaWduYWwgaW5mb3JtYXRpb24KLS1pbnNwZWN0aW9uIChAcHhyZWZ7ZXh0cmEgc2ln bmFsIGluZm9ybWF0aW9ufSkuCi0rVGhlIHZhcmlhYmxlIEBjb2RleyRfc2lnaW5mb30gY29udGFp bnMgZXh0cmEgc2lnbmFsIGluZm9ybWF0aW9uCi0rKEBweHJlZntleHRyYSBzaWduYWwgaW5mb3Jt YXRpb259KS4gIE5vdGUgdGhhdCBAY29kZXskX3NpZ2luZm99Ci0rY291bGQgYmUgZW1wdHksIGlm IHRoZSBhcHBsaWNhdGlvbiBoYXMgbm90IHlldCByZWNlaXZlZCBhbnkgc2lnbmFscy4KLStGb3Ig ZXhhbXBsZSwgaXQgd2lsbCBiZSBlbXB0eSBiZWZvcmUgeW91IGV4ZWN1dGUgdGhlIEBjb2Rle3J1 bn0gY29tbWFuZC4KLSBAZW5kIHRhYmxlCi0gCi0gT24gSFAtVVggc3lzdGVtcywgaWYgeW91IHJl ZmVyIHRvIGEgZnVuY3Rpb24gb3IgdmFyaWFibGUgbmFtZSB0aGF0Ci0KLQotCi1odHRwOi8vc291 cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTEyL21zZzAwMTI4Lmh0bWwKLQotIyMjIHNyYy9n ZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDA5LzEyLzIzIDIzOjE4OjA4CTEuMjA1NAotIyMjIHNy Yy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwkyMDA5LzEyLzI0IDIxOjU3OjA2CTEuMjA1NQotIyMg LTEsMyArMSwxMCBAQAotKzIwMDktMTItMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IGNvbXBhdGliaWxpdHkgd2l0aCBHKystNC41LgotKwkq IGdkYi5jcC9leHBhbmQtc2Fscy5jYyAobWFpbik6IFJlbW92ZSB0aGUgImV4aXQtbGluZSIgY29t bWVudC4KLSsJKiBnZGIuY3AvZXhwYW5kLXNhbHMuZXhwOiBSZW1vdmUgYnJlYWtwb2ludCBvbiAi ZXhpdC1saW5lIi4KLSsJKHVuY2F1Z2h0IHJldHVybik6IFJlbW92ZS4KLSsKLSAyMDA5LTEyLTIz ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCSAgICBQaGls IE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotIAotLS0tIHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5jcC9leHBhbmQtc2Fscy5jYwkyMDA5LzA1LzExIDE1OjA1OjU2CTEuMQotKysrIHNyYy9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5jYwkyMDA5LzEyLzI0IDIxOjU3OjA2CTEu MgotQEAgLTQ5LDUgKzQ5LDUgQEAKLSAgIEEgYTsKLSAgIEIgYjsKLSAKLS0gIHJldHVybiAwOwkv KiBleGl0LWxpbmUgKi8KLSsgIHJldHVybiAwOwotIH0KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvZXhwYW5kLXNhbHMuZXhwCTIwMDkvMDUvMTEgMTU6MDU6NTYJMS4xCi0rKysgc3JjL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2V4cGFuZC1zYWxzLmV4cAkyMDA5LzEyLzI0IDIxOjU3OjA2CTEu MgotQEAgLTIzLDggKzIzLDYgQEAKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLWdkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJleGl0LWxpbmUiXQotLQotIGdkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJmdW5jLWxpbmUiXQotIGdkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJmdW5jIiAiLipmdW5jLWxpbmUuKiIKLSAKLUBAIC01Miw3ICs1MCwzIEBACi0gCSAi YnQgZnJvbSBBIgotIAotIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJuZXh0IGNhbGxlciBm dW5jIiAiLipmdW5jLWxpbmUuKiIKLS0KLS0jIFZlcmlmeSBHREIgcmVhbGx5IGNvdWxkIG5vdCBj YXRjaCBhbnkgb3RoZXIgYnJlYWtwb2ludCBsb2NhdGlvbi4KLS0KLS1nZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAidW5jYXVnaHQgcmV0dXJuIiAiLipleGl0LWxpbmUuKiIKLQotCi0KLWh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMTEvbXNnMDAyMTMuaHRtbAotCi1bIGN1 dCBdCi0KLS0tLSBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb25kYnJlYWsuZXhwCTIwMDkv MDEvMDMgMDU6NTg6MDMJMS4xMwotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvbmRi cmVhay5leHAJMjAwOS8xMS8yNSAyMDo0MzoyOQkxLjE0Ci1AQCAtMjA3LDEwICsyMDcsMTAgQEAK LSBzZXR1cF94ZmFpbCBocHBhMi4wdy0qLSogMTE1MTJDTExicwotIHNlbmRfZ2RiICJjb250aW51 ZVxuIgotIGdkYl9leHBlY3QgewotLSAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFrcG9pbnQg XFswLTlcXSssIG1hcmtlcjIgXFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9u OHwkYnBfbG9jYXRpb245KS4qKCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcW1x0IFxdKy4q IiB7Ci0rICAgIC1yZSAiQ29udGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgbWFya2Vy MiBcXChhPTQzXFwpIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb244fCRicF9sb2NhdGlvbjkp LiooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAkIiB7 Ci0gCXBhc3MgInJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjIiCi0gICAgIH0KLS0gICAg LXJlICJDb250aW51aW5nXFwuLipCcmVha3BvaW50IFxbMC05XF0rLCAkaGV4IGluIG1hcmtlcjIg XFwoYT00M1xcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KS4q KCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSlcW1x0IFxdKy4qIiB7Ci0rICAgIC1yZSAiQ29u dGludWluZ1xcLi4qQnJlYWtwb2ludCBcWzAtOVxdKywgJGhleCBpbiBtYXJrZXIyIFxcKGE9NDNc XCkgYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjh8JGJwX2xvY2F0aW9uOSkuKigkYnBfbG9j YXRpb244fCRicF9sb2NhdGlvbjkpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsKLSAJeGZhaWwg InJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjIiCi0gICAgIH0KLSAgICAgLXJlICIkZ2Ri X3Byb21wdCAkIiB7Ci0KLQotCi1GaXggZm9yIGdmb3J0cmFuLTQuMToKLSAgLVBBU1M6IGdkYi5t aS9taS12YXItY2hpbGQtZi5leHA6IG1pIHJ1bnRvIE1BSU5fXwotICArRkFJTDogZ2RiLm1pL21p LXZhci1jaGlsZC1mLmV4cDogbWkgcnVudG8gTUFJTl9fICh1bmtub3duIG91dHB1dCBhZnRlciBy dW5uaW5nKQotCi1SRkM6IE1vdmUgbGFuZ3VhZ2UtY2hhbmdlZCBtZXNzYWdlIHRvIHZlcmJvc2UK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTExL21zZzAwMDMxLmh0 bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMTEvbXNnMDAwMzQuaHRt bAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAwOS8xMS8wNSAxOTo1MzowMwkxLjExMDMwCi0j IyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAwOS8xMS8wNSAyMDo0Mzo1MgkxLjExMDMxCi0jIyAtMSwz ICsxLDggQEAKLSsyMDA5LTExLTA1ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNl cnkuY29tPgotKwotKwkqIHRvcC5jIChleGVjdXRlX2NvbW1hbmQpOiBTZWxlY3QgYSBmcmFtZSBi ZWZvcmUgY2hlY2tpbmcgdGhlIGN1cnJlbnQKLSsJbGFuZ3VhZ2UuICBPbmx5IG91dHB1dCBhIG1l c3NhZ2UgaWYgdmVyYm9zZS4KLSsKLSAyMDA5LTExLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJl ZGhhdC5jb20+Ci0gCi0gCSogc3ltdGFiLmggKFNZTUJPTF9TRVRfTElOS0FHRV9OQU1FKTogVXBk YXRlIGNvbW1lbnQuCi0tLS0gc3JjL2dkYi90b3AuYwkyMDA5LzEwLzE5IDA5OjUxOjQyCTEuMTcy Ci0rKysgc3JjL2dkYi90b3AuYwkyMDA5LzExLzA1IDIwOjQzOjUyCTEuMTczCi1AQCAtNDU3LDEw ICs0NTcsMTMgQEAKLSAKLSAgICAgfQotIAotLSAgLyogVGVsbCB0aGUgdXNlciBpZiB0aGUgbGFu Z3VhZ2UgaGFzIGNoYW5nZWQgKGV4Y2VwdCBmaXJzdCB0aW1lKS4gICovCi0rICAvKiBUZWxsIHRo ZSB1c2VyIGlmIHRoZSBsYW5ndWFnZSBoYXMgY2hhbmdlZCAoZXhjZXB0IGZpcnN0IHRpbWUpLgot KyAgICAgRmlyc3QgbWFrZSBzdXJlIHRoYXQgYSBuZXcgZnJhbWUgaGFzIGJlZW4gc2VsZWN0ZWQs IGluIGNhc2UgdGhpcwotKyAgICAgY29tbWFuZCBvciB0aGUgaG9va3MgY2hhbmdlZCB0aGUgcHJv Z3JhbSBzdGF0ZS4gICovCi0rICBkZXByZWNhdGVkX3NhZmVfZ2V0X3NlbGVjdGVkX2ZyYW1lICgp OwotICAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UgIT0gZXhwZWN0ZWRfbGFuZ3VhZ2UpCi0gICAgIHsK LS0gICAgICBpZiAobGFuZ3VhZ2VfbW9kZSA9PSBsYW5ndWFnZV9tb2RlX2F1dG8pCi0rICAgICAg aWYgKGxhbmd1YWdlX21vZGUgPT0gbGFuZ3VhZ2VfbW9kZV9hdXRvICYmIGluZm9fdmVyYm9zZSkK LSAJewotIAkgIGxhbmd1YWdlX2luZm8gKDEpOwkvKiBQcmludCB3aGF0IGNoYW5nZWQuICAqLwot IAl9CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtMDMxNS1icmVha3BvaW50X2FkZHJlc3Nf bWF0Y2gucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS0wMzE1LWJyZWFrcG9pbnRfYWRkcmVzc19tYXRj aC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDAwNTk3Ci0tLSAv ZGV2L251bGwKKysrIGIvZ2RiLWFyY2hlci1waWUtMDMxNS1icmVha3BvaW50X2FkZHJlc3NfbWF0 Y2gucGF0Y2gKQEAgLTAsMCArMSw3NyBAQAorWyBGb3J3YXJkLXBvcnRlZCBjb250ZXh0LiAgXQor CitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMS9tc2cwMDE3MC5o dG1sCitTdWJqZWN0OiBbcGF0Y2ggMDMvMTVdIFBJRTogYnJlYWtwb2ludF9hZGRyZXNzX21hdGNo IGdkYmFyY2hfYWRkcl9iaXQgIHdvcmthcm91bmQKKworSGksCisKK3RoZXJlIGFyZSBhbHJlYWR5 IG11bHRpcGxlIGNhc2VzIG9mIENPUkVfQUREUiBiZWluZyBtYXNrZWQgYnkgdGhlIHdpZHRoIG9m CitnZGJhcmNoX2FkZHJfYml0LiAgVGhpcyBzcGVjaWZpYyBuZXcgY2FzZSB3YXMgcmVxdWlyZWQg dGhlIFBJRSBzdXBwb3J0LgorCitQbGVhc2UgcmVhZCB0aGUgQyBjb21tZW50IGluIGF0dGFjaGVk IHBhdGNoLgorCitDaGVja2VkIHRoYXQgQ09SRV9BRERSIG1hdGggb3BlcmF0aW9ucyBhcmUgcHJl c2VudCBvbiA2MDAwKyBsaW5lcyBvZiBjb2RlIG9mCitHREIgc291cmNlcyB3aGljaCBtYWtlcyBp dCBpbXBvc3NpYmxlIHRvIGRvIHNvbWUgZ2VuZXJhbCBmaXggYnkgcmVwbGFjaW5nIGFsbAorCWEt PmFkZHIgPCBiLT5hZGRyCitieQorCWFkZHJfbGVzc190aGFuIChhLT5hZGRyLCBiLT5hZGRyKQor ZXRjLgorCitFdmVuIHdpdGggdGhpcyBwYXRjaCBJIHRoaW5rIHRoZXJlIGFyZSBzdGlsbCBtYW55 IGJ1Z3MgbGVmdCBpbiB0aGUgb3BlcmF0aW9uCitvZiB4ODZfNjQgZ2RiIGRlYnVnZ2luZyBpMzg2 IHRhcmdldHMuICBEbyB5b3UgZmluZCB0aGUgQysrIHdheSBhcyBhIHZpYWJsZQorb25lPworCisK K1RoYW5rcywKK0phbgorCisgICAgCitnZGIvCisgICAgCSogYnJlYWtwb2ludC5jIChicmVha3Bv aW50X2FkZHJlc3NfbWF0Y2gpOiBOZXcgdmFyaWFibGVzIGFkZHJfYml0IGFuZAorICAgIAlhZGRy X21hc2ssIGluaXRpYWxpemUgaXQuICBNYXNrIGFkZHJlc3NlcyBieSBBRERSX01BU0suCisgICAg CSogZGVmcy5oIChDT1JFX0FERFIpOiBFeHRlbmQgdGhlIGNvbW1lbnQuCisKKy0tLSBhL2dkYi9i cmVha3BvaW50LmMKKysrKyBiL2dkYi9icmVha3BvaW50LmMKK0BAIC00NTU5LDkgKzQ1NTksMTUg QEAgc3RhdGljIGludAorIGJyZWFrcG9pbnRfYWRkcmVzc19tYXRjaCAoc3RydWN0IGFkZHJlc3Nf c3BhY2UgKmFzcGFjZTEsIENPUkVfQUREUiBhZGRyMSwKKyAJCQkgIHN0cnVjdCBhZGRyZXNzX3Nw YWNlICphc3BhY2UyLCBDT1JFX0FERFIgYWRkcjIpCisgeworKyAgaW50IGFkZHJfYml0ID0gZ2Ri YXJjaF9hZGRyX2JpdCAodGFyZ2V0X2dkYmFyY2gpOworKyAgQ09SRV9BRERSIGFkZHJfbWFzayA9 IENPUkVfQUREUl9NQVg7CisrCisrICBpZiAoYWRkcl9iaXQgPCAoc2l6ZW9mIChDT1JFX0FERFIp ICogSE9TVF9DSEFSX0JJVCkpCisrICAgIGFkZHJfbWFzayA9ICgoQ09SRV9BRERSKSAxIDw8IGFk ZHJfYml0KSAtIDE7CisrCisgICByZXR1cm4gKChnZGJhcmNoX2hhc19nbG9iYWxfYnJlYWtwb2lu dHMgKHRhcmdldF9nZGJhcmNoKQorIAkgICB8fCBhc3BhY2UxID09IGFzcGFjZTIpCistCSAgJiYg YWRkcjEgPT0gYWRkcjIpOworKwkgICYmIChhZGRyMSAmIGFkZHJfbWFzaykgPT0gKGFkZHIyICYg YWRkcl9tYXNrKSk7CisgfQorIAorIC8qIEFzc3VtaW5nIExPQzEgYW5kIExPQzIncyB0eXBlcycg aGF2ZSBtZWFuaW5nZnVsIHRhcmdldCBhZGRyZXNzZXMKKy0tLSBhL2dkYi9kZWZzLmgKKysrKyBi L2dkYi9kZWZzLmgKK0BAIC05OCw3ICs5OCwyMCBAQAorIC8qIEEgYnl0ZSBmcm9tIHRoZSBwcm9n cmFtIGJlaW5nIGRlYnVnZ2VkLiAgKi8KKyB0eXBlZGVmIGJmZF9ieXRlIGdkYl9ieXRlOworIAor LS8qIEFuIGFkZHJlc3MgaW4gdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQuICBIb3N0IGJ5dGUg b3JkZXIuICAqLworKy8qIEFuIGFkZHJlc3MgaW4gdGhlIHByb2dyYW0gYmVpbmcgZGVidWdnZWQu ICBIb3N0IGJ5dGUgb3JkZXIuCisrCisrICAgSXRzIHdpZHRoIGlzIHRoZSBtYXhpbXVtIHdpZHRo IG9mIGFsbCB0aGUgc3VwcG9ydGVkIHRhcmdldHMuICBUaGF0IG1lYW5zCisrICAgMzItYml0IHRh cmdldCB3aWxsIHJ1biBvbiBzdWNoIEdEQiB1c2luZyA2NC1iaXQgQ09SRV9BRERSIGNsdXR0ZXJp bmcgdGhlCisrICAgYml0cyAzMi4uLjYzIHdpdGggcmFuZG9tIGRhdGEgZnJvbSBpbnRlcm5hbCBH REIgY2FsY3VsYXRpb25zLiAgR0RCIGN1cnJlbnRseQorKyAgIGluIGdlbmVyYWwgdHJ1bmNhdGVz IHRoZSBhZGRyZXNzIHdpZHRoIG9ubHkgd2hlbiBpdCBpcyBiZWluZyBwcmVzZW50ZWQvdXNlZAor KyAgIGV4dGVybmFsbHkgKHN1Y2ggYXMgYnkgdGhlIHBhZGRyZXNzIGZ1bmN0aW9uKS4KKysKKysg ICBGSVhNRTogVGhpcyBpcyBzdGlsbCBub3QgcmlnaHQgYXMgYW55IEdEQiBpbnRlcm5hbCBjb21w YXJpc29ucyAoc3VjaCBhcyA+PSkKKysgICBvZiBDT1JFX0FERFIgZG8gbm90IHVzZSB0aGUgcHJv cGVybHkgdHJ1bmNhdGVkIHdpZHRoLiAgQXMgY29udmVydGluZyBhbGwgdGhlCisrICAgQ09SRV9B RERSIG9wZXJhdGlvbnMgdG8gd2lkdGgtYXdhcmUgZnVuY3Rpb25zIGlzIG5vdCBmZWFzaWJsZSB0 aGUgd2F5IG91dAorKyAgIGNvdWxkIGJlIGEgd2lkdGgtYXdhcmUgQysrIGNsYXNzIENPUkVfQURE UiByZWZlcmVuY2luZyBnZGJhcmNoIGFzIGl0cworKyAgIGNvbnN0cnVjdG9yIHBhcmFtZXRlci4g ICovCisrCisgdHlwZWRlZiBiZmRfdm1hIENPUkVfQUREUjsKKyAKKyAvKiBUaGUgbGFyZ2VzdCBD T1JFX0FERFIgdmFsdWUuICAqLworCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUtYWRkb25z LWtlZXAtZGlzYWJsZWQucGF0Y2ggYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxl ZC5wYXRjaAppbmRleCAzMzdhODg4Li41YTllMGM1IDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBp ZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaAorKysgYi9nZGItYXJjaGVyLXBpZS1hZGRvbnMt a2VlcC1kaXNhYmxlZC5wYXRjaApAQCAtMSw2ICsxLDggQEAKLS0tLSAuL2dkYi9icmVha3BvaW50 LmMJMjAwOS0xMi0xOCAwMDoxMzo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9icmVha3Bv aW50LmMJMjAwOS0xMi0xOCAwMDoxMzoxNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC04NTYzLDYgKzg1 NjMsNDkgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYQorSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuYworPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdk Yi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvYnJlYWtwb2ludC5jCTIwMTAtMDEtMTUgMjE6MzU6 MTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvYnJlYWtwb2lu dC5jCTIwMTAtMDEtMTUgMjE6NTE6MjAuMDAwMDAwMDAwICswMTAwCitAQCAtOTE2Nyw2ICs5MTY3 LDQ5IEBAIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoc3RydWN0IGJyZWEKICAgIHVwZGF0 ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCAoMSk7CiAgfQogIApAQCAtNDUsMTQgKzQ3LDE2IEBACiAr CiArICBpZiAoY2hhbmdlZCkKICsgICAgcXNvcnQgKGJwX2xvY2F0aW9uLCBicF9sb2NhdGlvbl9j b3VudCwgc2l6ZW9mICgqYnBfbG9jYXRpb24pLAotKwkgICBicF9sb2NhdGlvbl9jb21wYXJlX2Zv cl9xc29ydCk7CisrCSAgIGJwX2xvY2F0aW9uX2NvbXBhcmUpOwogK30KICAKICAvKiBSZXNldCBh IGJyZWFrcG9pbnQgZ2l2ZW4gaXQncyBzdHJ1Y3QgYnJlYWtwb2ludCAqIEJJTlQuCiAgICAgVGhl IHZhbHVlIHdlIHJldHVybiBlbmRzIHVwIGJlaW5nIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBjYXRj aF9lcnJvcnMuCi0tLS0gLi9nZGIvYnJlYWtwb2ludC5oCTIwMDktMTItMTggMDA6MTM6NDguMDAw MDAwMDAwICswMTAwCi0rKysgLi9nZGIvYnJlYWtwb2ludC5oCTIwMDktMTItMTcgMjI6MTE6MTAu MDAwMDAwMDAwICswMTAwCi1AQCAtOTcwLDQgKzk3MCw3IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtw b2ludCAqZ2V0X3RyYWNlcG9pbnQKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9icmVh a3BvaW50LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2Jy ZWFrcG9pbnQuaAkyMDEwLTAxLTE1IDIxOjM1OjEzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2JyZWFrcG9pbnQuaAkyMDEwLTAxLTE1IDIxOjUwOjEyLjAwMDAw MDAwMCArMDEwMAorQEAgLTEwMTUsNCArMTAxNSw3IEBAIGV4dGVybiBzdHJ1Y3QgYnJlYWtwb2lu dCAqZ2V0X3RyYWNlcG9pbnQKICAgICBpcyBuZXdseSBhbGxvY2F0ZWQ7IHRoZSBjYWxsZXIgc2hv dWxkIGZyZWUgd2hlbiBkb25lIHdpdGggaXQuICAqLwogIGV4dGVybiBWRUMoYnJlYWtwb2ludF9w KSAqYWxsX3RyYWNlcG9pbnRzICh2b2lkKTsKICAKQEAgLTYwLDYzICs2NCwxOSBAQAogKwkJCQkg IHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRhKTsKICsKICAjZW5kaWYgLyogIWRlZmluZWQg KEJSRUFLUE9JTlRfSCkgKi8KLS0tLSAuL2dkYi9vYmpmaWxlcy5jCTIwMDktMTItMTggMDA6MTM6 NDguMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvb2JqZmlsZXMuYwkyMDA5LTEyLTE3IDIzOjE5 OjIyLjAwMDAwMDAwMCArMDEwMAotQEAgLTU0Niw3ICs1NDYsNyBAQCBmcmVlX2FsbF9vYmpmaWxl cyAodm9pZCkKLSAvKiBSZWxvY2F0ZSBPQkpGSUxFIHRvIE5FV19PRkZTRVRTLiAgVGhlcmUgc2hv dWxkIGJlIE9CSkZJTEUtPk5VTV9TRUNUSU9OUwotICAgIGVudHJpZXMgaW4gbmV3X29mZnNldHMu ICBTRVBBUkFURV9ERUJVR19PQkpGSUxFIGlzIG5vdCB0b3VjaGVkIGhlcmUuICAqLwotIAotLXN0 YXRpYyB2b2lkCi0rc3RhdGljIGludAotIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMpCi0gewotICAg c3RydWN0IG9ial9zZWN0aW9uICpzOwotQEAgLTU2NSw3ICs1NjUsNyBAQCBvYmpmaWxlX3JlbG9j YXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCi0gCSAgc29tZXRoaW5nX2NoYW5nZWQgPSAxOwot ICAgICAgIH0KLSAgICAgaWYgKCFzb21ldGhpbmdfY2hhbmdlZCkKLS0gICAgICByZXR1cm47Ci0r ICAgICAgcmV0dXJuIDA7Ci0gICB9Ci0gCi0gICAvKiBPSywgZ2V0IGFsbCB0aGUgc3ltdGFicy4g ICovCi1AQCAtNzA2LDYgKzcwNiwxMyBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZp bGUgKm9iamZpCi0gICAgICAgZXhlY19zZXRfc2VjdGlvbl9hZGRyZXNzIChiZmRfZ2V0X2ZpbGVu YW1lIChvYmpmaWxlLT5vYmZkKSwgaWR4LAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L29iamZpbGVzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L29iamZpbGVzLmMJMjAxMC0wMS0xNSAyMTozNToxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9vYmpmaWxlcy5jCTIwMTAtMDEtMTUgMjE6NTA6NDUuMDAwMDAw MDAwICswMTAwCitAQCAtODU2LDYgKzg1NiwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0 IG9iamZpbGUgKm9iamZpCiAgCQkJCW9ial9zZWN0aW9uX2FkZHIgKHMpKTsKICAgICAgfQotKwor IAogKyAgLyogRmluYWwgY2FsbCBvZiBicmVha3BvaW50X3JlX3NldCBjYW4ga2VlcCBicmVha3Bv aW50IGxvY2F0aW9ucyBkaXNhYmxlZCBpZgogKyAgICAgdGhlaXIgYWRkcmVzc2VzIG1hdGNoLiAg Ki8KICsgIGlmIChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5V TEwpCiArICAgIGJyZWFrcG9pbnRzX3JlbG9jYXRlIChvYmpmaWxlLCBkZWx0YSk7CiArCi0rICBy ZXR1cm4gMTsKLSB9Ci0gCi0gLyogUmVsb2NhdGUgT0JKRklMRSB0byBORVdfT0ZGU0VUUy4gIFRo ZXJlIHNob3VsZCBiZSBPQkpGSUxFLT5OVU1fU0VDVElPTlMKLUBAIC03MjAsNyArNzI3LDkgQEAg b2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotIHZvaWQKLSBvYmpmaWxl X3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0 cyAqbmV3X29mZnNldHMpCi0gewotLSAgb2JqZmlsZV9yZWxvY2F0ZTEgKG9iamZpbGUsIG5ld19v ZmZzZXRzKTsKLSsgIGludCBjaGFuZ2VkID0gMDsKLSsKLSsgIGNoYW5nZWQgfD0gb2JqZmlsZV9y ZWxvY2F0ZTEgKG9iamZpbGUsIG5ld19vZmZzZXRzKTsKLSAKLSAgIGlmIChvYmpmaWxlLT5zZXBh cmF0ZV9kZWJ1Z19vYmpmaWxlICE9IE5VTEwpCi0gICAgIHsKLUBAIC03NDcsMTEgKzc1NiwxMiBA QCBvYmpmaWxlX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCi0gCQkJCQkgICAgIG9i amZpbGVfYWRkcnMpOwotICAgICAgIGRvX2NsZWFudXBzIChteV9jbGVhbnVwcyk7Ci0gCi0tICAg ICAgb2JqZmlsZV9yZWxvY2F0ZTEgKGRlYnVnX29iamZpbGUsIG5ld19kZWJ1Z19vZmZzZXRzKTsK LSsgICAgICBjaGFuZ2VkIHw9IG9iamZpbGVfcmVsb2NhdGUxIChkZWJ1Z19vYmpmaWxlLCBuZXdf ZGVidWdfb2Zmc2V0cyk7Ci0gICAgIH0KLSAKLSAgIC8qIFJlbG9jYXRlIGJyZWFrcG9pbnRzIGFz IG5lY2Vzc2FyeSwgYWZ0ZXIgdGhpbmdzIGFyZSByZWxvY2F0ZWQuICovCi0tICBicmVha3BvaW50 X3JlX3NldCAoKTsKLSsgIGlmIChjaGFuZ2VkKQotKyAgICBicmVha3BvaW50X3JlX3NldCAoKTsK KyAgIC8qIERhdGEgY2hhbmdlZC4gICovCisgICByZXR1cm4gMTsKICB9Ci0gDAotIC8qIFJldHVy biBub24temVybyBpZiBPQkpGSUxFIGhhcyBwYXJ0aWFsIHN5bWJvbHMuICAqLwoKZGlmZiAtLWdp dCBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5w YXRjaAppbmRleCAzMzA2Yzc3Li5hZTE1NGFkIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1h ZGRvbnMucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0xLDYgKzEs OCBAQAotLS0tIGEvZ2RiL2R3YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAg LTU3NTQsNyArNTc1NCwxMiBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2R3YXJmMnJlYWQuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9n ZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMjE6NDE6MzIuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDEtMTUgMjE6NDI6MTku MDAwMDAwMDAwICswMTAwCitAQCAtNTgyMSw3ICs1ODIxLDEyIEBAIHJlYWRfY29tbW9uX2Jsb2Nr IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICB7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwog ICAgc3RydWN0IHN5bWJvbCAqc3ltOwpAQCAtMTQsMTUgKzE2LDE1IEBACiAgCiAgICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKICAgIGlmIChhdHRyKQotQEAg LTU3NjMsNiArNTc2OCw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTgzMCw2ICs1ODM1LDcgQEAgcmVhZF9jb21t b25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogICAgICAgIGlmIChhdHRyX2Zvcm1faXNf YmxvY2sgKGF0dHIpKQotIAl7Ci0gCSAgYmFzZSA9IGRlY29kZV9sb2NkZXNjIChEV19CTE9DSyAo YXR0ciksIGN1KTsKKyAgICAgICAgIHsKKyAgICAgICAgICAgYmFzZSA9IGRlY29kZV9sb2NkZXNj IChEV19CTE9DSyAoYXR0ciksIGN1KTsKICsJICBiYXNlX3AgPSAxOwotIAl9CisgICAgICAgICB9 CiAgICAgICAgZWxzZSBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRyKSkKLSAJ ewotQEAgLTU4MjQsMTIgKzU4MzAsMTUgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgICAgICAgIHsKK0BAIC01ODkxLDEy ICs1ODk3LDE1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJ ICAgICAgZWxzZQogIAkJZHdhcmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKCk7 CiAgCkBAIC00MCw3ICs0Miw3IEBACiAgCSAgZWxzZQogIAkgICAgU0VUX0ZJRUxEX1BIWVNOQU1F ICgqZmllbGQsIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkpOwogIAkgIEZJRUxEX1RZUEUgKCpm aWVsZCkgPSBTWU1CT0xfVFlQRSAoc3ltKTsKLUBAIC01ODQzLDcgKzU4NTIsNyBAQCByZWFkX2Nv bW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor QEAgLTU5MTAsNyArNTkxOSw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwKICAKICAgICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKICAgICAg ICAvKiBTWU1CT0xfVkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVzZWQgYXMgYWxsIGl0cyBmaWVs ZHMgYXJlIHN0YXRpYy4gICovCkBAIC00OSwxNyArNTEsMTkgQEAKICAKICAgICAgICBzZXRfZGll X3R5cGUgKGRpZSwgdHlwZSwgY3UpOwogICAgICB9Ci0tLS0gYS9nZGIvZXhlYy5jCi0rKysgYi9n ZGIvZXhlYy5jCi1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJleGVjLmgiCi0gI2luY2x1 ZGUgIm9ic2VydmVyLmgiCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZXhlYy5jCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9leGVjLmMJMjAxMC0w MS0xNSAyMTozNToxNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9leGVjLmMJMjAxMC0wMS0xNSAyMTo0NzoxOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNCw2ICsz NCw3IEBACiAgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFkLmgi CisgI2luY2x1ZGUgInByb2dzcGFjZS5oIgogKyNpbmNsdWRlICJzb2xpYi5oIgogIAogICNpbmNs dWRlIDxmY250bC5oPgogICNpbmNsdWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotQEAgLTIyMCw2 ICsyMjEsMTAgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0 eSkKK0BAIC0yMjUsNiArMjI2LDEwIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1l LCBpbnQgZnIKICAgICAgICBjaGFyICpzY3JhdGNoX3BhdGhuYW1lOwogICAgICAgIGludCBzY3Jh dGNoX2NoYW47CiAgICAgICAgc3RydWN0IHRhcmdldF9zZWN0aW9uICpzZWN0aW9ucyA9IE5VTEws ICpzZWN0aW9uc19lbmQgPSBOVUxMOwpAQCAtNzAsNyArNzQsNyBAQAogIAogICAgICAgIHNjcmF0 Y2hfY2hhbiA9IG9wZW5wIChnZXRlbnYgKCJQQVRIIiksIE9QRl9UUllfQ1dEX0ZJUlNULCBmaWxl bmFtZSwKICAJCSAgIHdyaXRlX2ZpbGVzID8gT19SRFdSIHwgT19CSU5BUlkgOiBPX1JET05MWSB8 IE9fQklOQVJZLAotQEAgLTI4OCwxMiArMjkzLDIzIEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIg KmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCitAQCAtMjkzLDEyICsyOTgsMjMgQEAgZXhlY19maWxl X2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcgogIAkJIHNjcmF0Y2hfcGF0aG5hbWUsIGJm ZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKICAJfQogIApAQCAtOTQsMTkgKzk4LDM3IEBA CiAtICAgICAgc2V0X2dkYmFyY2hfZnJvbV9maWxlIChleGVjX2JmZCk7CiAtCiAgICAgICAgLyog QWRkIHRoZSBleGVjdXRhYmxlJ3Mgc2VjdGlvbnMgdG8gdGhlIGN1cnJlbnQgYWRkcmVzcyBzcGFj ZXMnCi0gCSBsaXN0IG9mIHNlY3Rpb25zLiAgKi8KLSAgICAgICBhZGRfdGFyZ2V0X3NlY3Rpb25z IChzZWN0aW9ucywgc2VjdGlvbnNfZW5kKTsKLS0tLSBhL2dkYi9nZGJ0eXBlcy5oCi0rKysgYi9n ZGIvZ2RidHlwZXMuaAotQEAgLTk2Niw2ICs5NjYsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9j cGx1c19zdHJ1Y3RfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgCSBsaXN0IG9mIHNlY3Rpb25zLiAg VGhpcyBwb3NzaWJseSBwdXNoZXMgdGhlIGV4ZWNfb3BzCisgCSB0YXJnZXQuICAqLworSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2dkYnR5cGVzLmgKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAyMTozNToxNi4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIw MTAtMDEtMTUgMjE6NDQ6MjQuMDAwMDAwMDAwICswMTAwCitAQCAtNDA2LDYgKzQwNiw3IEBAIGVu dW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCisgZW51bSBmaWVsZF9sb2Nfa2luZAorICAgewor ICAgICBGSUVMRF9MT0NfS0lORF9CSVRQT1MsCS8qIGJpdHBvcyAqLworKyAgICAvKiBUaGlzIGFk ZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4gICovCisgICAg IEZJRUxEX0xPQ19LSU5EX1BIWVNBRERSLAkvKiBwaHlzYWRkciAqLworICAgICBGSUVMRF9MT0Nf S0lORF9QSFlTTkFNRQkvKiBwaHlzbmFtZSAqLworICAgfTsKK0BAIC01ODIsNiArNTgzLDcgQEAg c3RydWN0IG1haW5fdHlwZQorIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRoZSB0YXJnZXQpIG9m IHRoZSBzdGF0aWMgZmllbGQuCisgCSAgIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmds ZWQgbGFiZWwgb2YgdGhlIHN0YXRpYyBmaWVsZC4gKi8KKyAKKysJLyogVGhpcyBhZGRyZXNzIGlz IHVucmVsb2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLworIAlDT1JFX0FERFIg cGh5c2FkZHI7CisgCWNoYXIgKnBoeXNuYW1lOworICAgICAgIH0KK0BAIC0xMTAwLDYgKzExMDIs NyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBG SUVMRF9MT0NfS0lORCh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvY19raW5kKQogICNkZWZpbmUgRklF TERfQklUUE9TKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmJpdHBvcykKICAjZGVmaW5lIEZJRUxE X1NUQVRJQ19QSFlTTkFNRSh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzbmFtZSkKICsvKiBU aGlzIGFkZHJlc3MgaXMgdW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4gICov CiAgI2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2Mu cGh5c2FkZHIpCi0gI2RlZmluZSBGSUVMRF9EV0FSRl9CTE9DSyh0aGlzZmxkKSAoKHRoaXNmbGQp LmxvYy5kd2FyZl9ibG9jaykKICAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQT1ModGhpc2ZsZCwgYml0 cG9zKQkJCVwKLUBAIC05NzQsNiArOTc1LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfY3BsdXNf c3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworICAgKEZJRUxEX0xPQ19LSU5EICh0aGlzZmxk KSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKK0BAIC0xMTA3LDYgKzExMTAsNyBAQCBleHRl cm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBTRVRfRklFTERf UEhZU05BTUUodGhpc2ZsZCwgbmFtZSkJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQp ID0gRklFTERfTE9DX0tJTkRfUEhZU05BTUUsCQlcCiAgICAgRklFTERfU1RBVElDX1BIWVNOQU1F ICh0aGlzZmxkKSA9IChuYW1lKSkKQEAgLTExNCwxNyArMTM2LDE5IEBACiAgI2RlZmluZSBTRVRf RklFTERfUEhZU0FERFIodGhpc2ZsZCwgYWRkcikJCQlcCiAgICAoRklFTERfTE9DX0tJTkQgKHRo aXNmbGQpID0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCiAgICAgRklFTERfU1RBVElDX1BI WVNBRERSICh0aGlzZmxkKSA9IChhZGRyKSkKLUBAIC05ODksNiArOTkxLDcgQEAgZXh0ZXJuIHZv aWQgYWxsb2NhdGVfY3BsdXNfc3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTExMTks NiArMTEyMyw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAj ZGVmaW5lIFRZUEVfRklFTERfTE9DX0tJTkQodGhpc3R5cGUsIG4pIEZJRUxEX0xPQ19LSU5EIChU WVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFBPUyh0aGlz dHlwZSwgbikgRklFTERfQklUUE9TIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmlu ZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BI WVNOQU1FIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiArLyogVGhpcyBhZGRyZXNzIGlzIHVu cmVsb2NhdGVkIGJ5IHRoZSBvYmpmaWxlJ3MgQU5PRkZTRVQuICAqLwogICNkZWZpbmUgVFlQRV9G SUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAo VFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQotICNkZWZpbmUgVFlQRV9GSUVMRF9EV0FSRl9CTE9D Syh0aGlzdHlwZSwgbikgRklFTERfRFdBUkZfQkxPQ0sgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBu KSkKICAjZGVmaW5lIFRZUEVfRklFTERfQVJUSUZJQ0lBTCh0aGlzdHlwZSwgbikgRklFTERfQVJU SUZJQ0lBTChUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQotLS0tIGEvZ2RiL2p2LWxhbmcuYwotKysr IGIvZ2RiL2p2LWxhbmcuYwotQEAgLTQxNiw3ICs0MTYsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlw ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgI2RlZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUo dGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlzdHlwZSxuKSkKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9qdi1sYW5nLmMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGIt Ny4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEwLTAxLTE1IDIxOjM1OjEzLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2p2LWxhbmcuYwkyMDEw LTAxLTE1IDIxOjQxOjU4LjAwMDAwMDAwMCArMDEwMAorQEAgLTQxNiw3ICs0MTYsOCBAQCBqYXZh X2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkCiAgCiAgICBmaWVsZHMgPSBOVUxM OwogICAgbmZpZWxkcy0tOwkJCS8qIEZpcnN0IHNldCB1cCBkdW1teSAiY2xhc3MiIGZpZWxkLiAq LwpAQCAtMTM0LDcgKzE1OCw3IEBACiAgICBUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIG5maWVsZHMp ID0gImNsYXNzIjsKICAgIFRZUEVfRklFTERfVFlQRSAodHlwZSwgbmZpZWxkcykgPSB2YWx1ZV90 eXBlIChjbGFzKTsKICAgIFNFVF9UWVBFX0ZJRUxEX1BSSVZBVEUgKHR5cGUsIG5maWVsZHMpOwot QEAgLTQ2Miw3ICs0NjMsOCBAQCBqYXZhX2xpbmtfY2xhc3NfdHlwZSAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsCitAQCAtNDYyLDcgKzQ2Myw4IEBAIGphdmFfbGlua19jbGFzc190eXBlIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2QKICAJICBTRVRfVFlQRV9GSUVMRF9QUk9URUNURUQgKHR5cGUsIGkpOwog IAl9CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHgwMDA4KQkvKiBBQ0NfU1RBVElDICovCkBAIC0x NDQsMjIgKzE2OCwxMyBAQAogICAgICAgIGVsc2UKICAJVFlQRV9GSUVMRF9CSVRQT1MgKHR5cGUs IGkpID0gOCAqIGJvZmZzZXQ7CiAgICAgICAgaWYgKGFjY2ZsYWdzICYgMHg4MDAwKQkvKiBGSUVM RF9VTlJFU09MVkVEX0ZMQUcgKi8KLS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKLSsrKyBiL2dkYi9z b2xpYi1zdnI0LmMKLUBAIC0xNjcyLDE1ICsxNjcyLDIwIEBAIHN0YXRpYyBDT1JFX0FERFIKLSBz dnI0X2V4ZWNfZGlzcGxhY2VtZW50ICh2b2lkKQotIHsKLSAgIGludCBmb3VuZDsKLSsgIC8qIEVO VFJZX1BPSU5UIGlzIGEgcG9zc2libGUgZnVuY3Rpb24gZGVzY3JpcHRvciAtIGJlZm9yZQotKyAg ICAgYSBjYWxsIHRvIGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIuICAqLwotICAg Q09SRV9BRERSIGVudHJ5X3BvaW50OwotIAotICAgaWYgKGV4ZWNfYmZkID09IE5VTEwpCi0gICAg IHJldHVybiAwOwotIAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLXN2cjQu YworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc29saWItc3Zy NC5jCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvc29saWItc3ZyNC5jCTIwMTAtMDEtMTUgMjE6NDQ6NTUuMDAwMDAwMDAwICsw MTAwCitAQCAtMTY4OSw3ICsxNjg5LDEwIEBAIHN2cjRfZXhlY19kaXNwbGFjZW1lbnQgKHZvaWQp CiAgICBpZiAodGFyZ2V0X2F1eHZfc2VhcmNoICgmY3VycmVudF90YXJnZXQsIEFUX0VOVFJZLCAm ZW50cnlfcG9pbnQpID09IDEpCi0tICAgIHJldHVybiBlbnRyeV9wb2ludCAtIGV4ZWNfZW50cnlf cG9pbnQgKGV4ZWNfYmZkLCAmY3VycmVudF90YXJnZXQpOwotKyAgICByZXR1cm4gZW50cnlfcG9p bnQgLSBiZmRfZ2V0X3N0YXJ0X2FkZHJlc3MgKGV4ZWNfYmZkKTsKKyAgICAgcmV0dXJuIGVudHJ5 X3BvaW50IC0gYmZkX2dldF9zdGFydF9hZGRyZXNzIChleGVjX2JmZCk7CiAgCiAtICByZXR1cm4g c3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1lbnQgKCk7CiArICBpZiAoIXB0aWRfZXF1YWwgKGlu ZmVyaW9yX3B0aWQsIG51bGxfcHRpZCkpCkBAIC0xNjksNyArMTg0LDcgQEAKICB9CiAgCiAgLyog UmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0YWJsZS4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNh bGxlZCB1cG9uCi1AQCAtMTYzMiw3ICsxNjM1LDcgQEAgc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAo dm9pZCkKK0BAIC0xNzAwLDcgKzE3MDMsNyBAQCBzdnI0X2V4ZWNfZGlzcGxhY2VtZW50ICh2b2lk KQogIHN0YXRpYyB2b2lkCiAgc3ZyNF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpCiAg ewpAQCAtMTc4LDcgKzE5Myw3IEBACiAgCiAgICAvKiBFdmVuIGlmIERJU1BMQUNFTUVOVCBpcyAw IHN0aWxsIHRyeSB0byByZWxvY2F0ZSBpdCBhcyB0aGlzIGlzIGEgbmV3CiAgICAgICBkaWZmZXJl bmNlIG9mIGluLW1lbW9yeSB2cy4gaW4tZmlsZSBhZGRyZXNzZXMgYW5kIHdlIGNvdWxkIGFscmVh ZHkKLUBAIC0xOTc1LDYgKzE5NzgsNyBAQCBfaW5pdGlhbGl6ZV9zdnI0X3NvbGliICh2b2lkKQor QEAgLTIwNTQsNiArMjA1Nyw3IEBAIF9pbml0aWFsaXplX3N2cjRfc29saWIgKHZvaWQpCiAgICBz dnI0X3NvX29wcy5mcmVlX3NvID0gc3ZyNF9mcmVlX3NvOwogICAgc3ZyNF9zb19vcHMuY2xlYXJf c29saWIgPSBzdnI0X2NsZWFyX3NvbGliOwogICAgc3ZyNF9zb19vcHMuc29saWJfY3JlYXRlX2lu ZmVyaW9yX2hvb2sgPSBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rOwpAQCAtMTg2LDkg KzIwMSwxMSBAQAogICAgc3ZyNF9zb19vcHMuc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcgPSBzdnI0 X3NwZWNpYWxfc3ltYm9sX2hhbmRsaW5nOwogICAgc3ZyNF9zb19vcHMuY3VycmVudF9zb3MgPSBz dnI0X2N1cnJlbnRfc29zOwogICAgc3ZyNF9zb19vcHMub3Blbl9zeW1ib2xfZmlsZV9vYmplY3Qg PSBvcGVuX3N5bWJvbF9maWxlX29iamVjdDsKLS0tLSBhL2dkYi9zb2xpYi5jCi0rKysgYi9nZGIv c29saWIuYwotQEAgLTEwMTQsNiArMTAxNCwxOSBAQCBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9v ayAoaW50IGZyb21fdHR5KQorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3NvbGliLmMK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3NvbGliLmMJMjAx MC0wMS0xNSAyMTozNToxNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi9zb2xpYi5jCTIwMTAtMDEtMTUgMjE6NDE6NTguMDAwMDAwMDAwICswMTAwCitAQCAtMTAz Nyw2ICsxMDM3LDE5IEBAIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkK ICAgIG9wcy0+c29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGZyb21fdHR5KTsKICB9CiAgCkBA IC0yMDgsOSArMjI1LDExIEBACiAgLyogR0xPQkFMIEZVTkNUSU9OCiAgCiAgICAgaW5fc29saWJf ZHluc3ltX3Jlc29sdmVfY29kZSAtLSBjaGVjayB0byBzZWUgaWYgYW4gYWRkcmVzcyBpcyBpbgot LS0tIGEvZ2RiL3NvbGliLmgKLSsrKyBiL2dkYi9zb2xpYi5oCi1AQCAtNDMsNiArNDMsOCBAQCBl eHRlcm4gaW50IHNvbGliX3JlYWRfc3ltYm9scyAoc3RydWN0IHNvX2xpc3QgKiwgaW50KTsKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zb2xpYi5oCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2Ri LTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zb2xpYi5oCTIwMTAtMDEtMDggMjM6NTI6MDQuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saWIuaAkyMDEwLTAx LTE1IDIxOjQyOjM2LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ0LDYgKzQ0LDggQEAgZXh0ZXJuIGlu dCBzb2xpYl9yZWFkX3N5bWJvbHMgKHN0cnVjdCBzbwogIAogIGV4dGVybiB2b2lkIHNvbGliX2Ny ZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90dHkpOwogIApAQCAtMjE4LDEwICsyMzcsMTIg QEAKICsKICAvKiBJZiBBRERSIGxpZXMgaW4gYSBzaGFyZWQgbGlicmFyeSwgcmV0dXJuIGl0cyBu YW1lLiAgKi8KICAKLSBleHRlcm4gY2hhciAqc29saWJfbmFtZV9mcm9tX2FkZHJlc3MgKENPUkVf QUREUik7Ci0tLS0gYS9nZGIvc29saXN0LmgKLSsrKyBiL2dkYi9zb2xpc3QuaAotQEAgLTg5LDYg Kzg5LDkgQEAgc3RydWN0IHRhcmdldF9zb19vcHMKKyBleHRlcm4gY2hhciAqc29saWJfbmFtZV9m cm9tX2FkZHJlc3MgKHN0cnVjdCBwcm9ncmFtX3NwYWNlICosIENPUkVfQUREUik7CitJbmRleDog Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saXN0LmgKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3NvbGlzdC5oCTIwMTAtMDEtMDggMjM6NTI6MDQuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saXN0LmgJMjAxMC0wMS0x NSAyMTo0MTo1OC4wMDAwMDAwMDAgKzAxMDAKK0BAIC05Miw2ICs5Miw5IEBAIHN0cnVjdCB0YXJn ZXRfc29fb3BzCiAgICAgIC8qIFRhcmdldCBkZXBlbmRlbnQgY29kZSB0byBydW4gYWZ0ZXIgY2hp bGQgcHJvY2VzcyBmb3JrLiAgKi8KICAgICAgdm9pZCAoKnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rKSAoaW50IGZyb21fdHR5KTsKICAKQEAgLTIzMSw5ICsyNTIsMTEgQEAKICAgICAgLyogRG8g YWRkaXRpb25hbCBzeW1ib2wgaGFuZGxpbmcsIGxvb2t1cCwgZXRjLiBhZnRlciBzeW1ib2xzCiAg ICAgICAgIGZvciBhIHNoYXJlZCBvYmplY3QgaGF2ZSBiZWVuIGxvYWRlZC4gICovCiAgICAgIHZv aWQgKCpzcGVjaWFsX3N5bWJvbF9oYW5kbGluZykgKHZvaWQpOwotLS0tIGEvZ2RiL3N5bWZpbGUu YwotKysrIGIvZ2RiL3N5bWZpbGUuYwotQEAgLTg3MywxNSArODczLDM2IEBAIHN5bXNfZnJvbV9v YmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9zeW1maWxlLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9y aWcvZ2RiL3N5bWZpbGUuYwkyMDEwLTAxLTE1IDIxOjM1OjE0LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3N5bWZpbGUuYwkyMDEwLTAxLTE1IDIxOjQxOjU4LjAw MDAwMDAwMCArMDEwMAorQEAgLTgzMiwxNSArODMyLDM2IEBAIHN5bXNfZnJvbV9vYmpmaWxlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKICAgICAgIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgc3lt Ym9sIHJlYWRpbmcuICAqLwogICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfb2JqZmls ZSAob2JqZmlsZSk7CiAgCkBAIC0yNzcsOSArMzAwLDExIEBACiAgICAgIH0KICAKICAgIC8qIE5v dyBlaXRoZXIgYWRkcnMgb3Igb2Zmc2V0cyBpcyBub24temVyby4gICovCi0tLS0gYS9nZGIvdmFs dWUuYwotKysrIGIvZ2RiL3ZhbHVlLmMKLUBAIC0xODkwLDcgKzE4OTAsOCBAQCB2YWx1ZV9zdGF0 aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgZmllbGRubykKK0luZGV4OiBnZGItNy4w LjUwLjIwMTAwMTE1L2dkYi92YWx1ZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi92YWx1ZS5jCTIwMTAtMDEtMTUgMjE6MzU6MTMuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdmFsdWUuYwkyMDEwLTAxLTE1IDIxOjQxOjU4 LjAwMDAwMDAwMCArMDEwMAorQEAgLTE4OTcsNyArMTg5Nyw4IEBAIHZhbHVlX3N0YXRpY19maWVs ZCAoc3RydWN0IHR5cGUgKnR5cGUsIGkKICAgIGlmIChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBl LCBmaWVsZG5vKSA9PSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUikKICAgICAgewogICAgICAgIHJl dHZhbCA9IHZhbHVlX2F0IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLApAQCAtMjg5 LDcgKzMxNCw3IEBACiAgICAgIH0KICAgIGVsc2UKICAgICAgewotQEAgLTE5MjAsNyArMTkyMSw4 IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmaWVsZG5vKQor QEAgLTE5MjcsNyArMTkyOCw4IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5cGUgKnR5 cGUsIGkKICAgCX0KICAgICAgICBpZiAocmV0dmFsICYmIFZBTFVFX0xWQUwgKHJldHZhbCkgPT0g bHZhbF9tZW1vcnkpCiAgCVNFVF9GSUVMRF9QSFlTQUREUiAoVFlQRV9GSUVMRCAodHlwZSwgZmll bGRubyksCkBAIC0yOTksMTQgKzMyNCwzIEBACiAgICAgIH0KICAgIHJldHVybiByZXR2YWw7CiAg fQotLS0tIGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1kYi1hdHRhY2gu ZXhwLW9yaWcJMjAwOS0xMi0yMSAxNjo1MDo0Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4w L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3JpbmQtZGItYXR0YWNoLmV4cAkyMDA5LTEyLTIx IDE2OjUxOjI0LjAwMDAwMDAwMCArMDEwMAotQEAgLTY3LDYgKzY3LDggQEAgZ2RiX3Rlc3RfbXVs dGlwbGUgIiIgJHRlc3QgewotICAgICB9Ci0gfQotIAotK2dkYl90ZXN0ICIiICIiICJlYXQgZmly c3QgcHJvbXB0IgotKwotICMgSW5pdGlhbGl6YXRpb24gZnJvbSBkZWZhdWx0X2dkYl9zdGFydC4K LSBnZGJfdGVzdCAic2V0IGhlaWdodCAwIgotIGdkYl90ZXN0ICJzZXQgd2lkdGggMCIKCmRpZmYg LS1naXQgYS9nZGItYXJjaGVyLXBpZS5wYXRjaCBiL2dkYi1hcmNoZXItcGllLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzhhYWJiLi4wMDAwMDAwCi0tLSBhL2dkYi1hcmNo ZXItcGllLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjY0NyArMCwwIEBACi1odHRwOi8vc291 cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgotaHR0cDovL3NvdXJjZXdhcmUub3Jn L2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKLQotYXJjaGVyLWphbmtyYXRvY2h2aWwt cGllLWZlZG9yYTEyCi1HSVQgc25hcHNob3Q6Ci1jb21taXQgMmFlNjBiNTE1NmQ0M2FhYmZlNTc1 Nzk0MGVhZjdiNDM3MGZiMDVkMgotCi0KLWRpZmYgLS1naXQgYS9nZGIvYXV4di5jIGIvZ2RiL2F1 eHYuYwotaW5kZXggN2I0ZWNiZS4uN2RmOGViNSAxMDA2NDQKLS0tLSBhL2dkYi9hdXh2LmMKLSsr KyBiL2dkYi9hdXh2LmMKLUBAIC0yNSw2ICsyNSw3IEBACi0gI2luY2x1ZGUgImluZmVyaW9yLmgi Ci0gI2luY2x1ZGUgInZhbHByaW50LmgiCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSsjaW5j bHVkZSAiZ2RiY29yZS5oIgotIAotICNpbmNsdWRlICJhdXh2LmgiCi0gI2luY2x1ZGUgImVsZi9j b21tb24uaCIKLUBAIC0zMywxNSArMzQsMTEgQEAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAKLSAK LS0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBsaWtlIGEgdG9feGZlcl9wYXJ0aWFsIGhvb2ss IGJ1dCBtdXN0IGJlCi0tICAgY2FsbGVkIHdpdGggVEFSR0VUX09CSkVDVF9BVVhWLiAgSXQgaGFu ZGxlcyBhY2Nlc3MgdmlhCi0tICAgL3Byb2MvUElEL2F1eHYsIHdoaWNoIGlzIGEgY29tbW9uIG1l dGhvZCBmb3IgbmF0aXZlIHRhcmdldHMuICAqLwotKy8qIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBh Y2Nlc3MgdmlhIC9wcm9jL1BJRC9hdXh2LCB3aGljaCBpcyBhIGNvbW1vbiBtZXRob2QKLSsgICBm b3IgbmF0aXZlIHRhcmdldHMuICAqLwotIAotLUxPTkdFU1QKLS1wcm9jZnNfeGZlcl9hdXh2IChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotLQkJICBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAot LQkJICBjb25zdCBjaGFyICphbm5leCwKLS0JCSAgZ2RiX2J5dGUgKnJlYWRidWYsCi0rc3RhdGlj IExPTkdFU1QKLStwcm9jZnNfeGZlcl9hdXh2IChnZGJfYnl0ZSAqcmVhZGJ1ZiwKLSAJCSAgY29u c3QgZ2RiX2J5dGUgKndyaXRlYnVmLAotIAkJICBVTE9OR0VTVCBvZmZzZXQsCi0gCQkgIExPTkdF U1QgbGVuKQotQEAgLTUwLDkgKzQ3LDYgQEAgcHJvY2ZzX3hmZXJfYXV4diAoc3RydWN0IHRhcmdl dF9vcHMgKm9wcywKLSAgIGludCBmZDsKLSAgIExPTkdFU1QgbjsKLSAKLS0gIGdkYl9hc3NlcnQg KG9iamVjdCA9PSBUQVJHRVRfT0JKRUNUX0FVWFYpOwotLSAgZ2RiX2Fzc2VydCAocmVhZGJ1ZiB8 fCB3cml0ZWJ1Zik7Ci0tCi0gICBwYXRobmFtZSA9IHhzdHJwcmludGYgKCIvcHJvYy8lZC9hdXh2 IiwgUElER0VUIChpbmZlcmlvcl9wdGlkKSk7Ci0gICBmZCA9IG9wZW4gKHBhdGhuYW1lLCB3cml0 ZWJ1ZiAhPSBOVUxMID8gT19XUk9OTFkgOiBPX1JET05MWSk7Ci0gICB4ZnJlZSAocGF0aG5hbWUp OwotQEAgLTcyLDYgKzY2LDE1MiBAQCBwcm9jZnNfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0X29w cyAqb3BzLAotICAgcmV0dXJuIG47Ci0gfQotIAotKy8qIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBh Y2Nlc3MgdmlhIGxkLnNvJ3Mgc3ltYm9sIGBfZGxfYXV4dicuICAqLwotKwotK3N0YXRpYyBMT05H RVNUCi0rbGRfc29feGZlcl9hdXh2IChnZGJfYnl0ZSAqcmVhZGJ1ZiwKLSsJCSBjb25zdCBnZGJf Ynl0ZSAqd3JpdGVidWYsCi0rCQkgVUxPTkdFU1Qgb2Zmc2V0LAotKwkJIExPTkdFU1QgbGVuKQot K3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKLSsgIENPUkVfQUREUiBkYXRhX2Fk ZHJlc3MsIHBvaW50ZXJfYWRkcmVzczsKLSsgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0 aW5fdHlwZSAodGFyZ2V0X2dkYmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotKyAgc2l6ZV90IHB0 cl9zaXplID0gVFlQRV9MRU5HVEggKHB0cl90eXBlKTsKLSsgIHNpemVfdCBhdXh2X3BhaXJfc2l6 ZSA9IDIgKiBwdHJfc2l6ZTsKLSsgIGdkYl9ieXRlICpwdHJfYnVmID0gYWxsb2NhIChwdHJfc2l6 ZSk7Ci0rICBMT05HRVNUIHJldHZhbDsKLSsgIHNpemVfdCBibG9jazsKLSsKLSsgIG1zeW0gPSBs b29rdXBfbWluaW1hbF9zeW1ib2wgKCJfZGxfYXV4diIsIE5VTEwsIE5VTEwpOwotKyAgaWYgKG1z eW0gPT0gTlVMTCkKLSsgICAgcmV0dXJuIC0xOwotKwotKyAgaWYgKE1TWU1CT0xfU0laRSAobXN5 bSkgIT0gcHRyX3NpemUpCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIC8qIFBPSU5URVJfQUREUkVT UyBpcyBhIGxvY2F0aW9uIHdoZXJlIHRoZSBgX2RsX2F1eHYnIHZhcmlhYmxlIHJlc2lkZXMuCi0r ICAgICBEQVRBX0FERFJFU1MgaXMgdGhlIGluZmVyaW9yIHZhbHVlIHByZXNlbnQgaW4gYF9kbF9h dXh2JywgdGhlcmVmb3JlIHRoZQotKyAgICAgcmVhbCBpbmZlcmlvciBBVVhWIGFkZHJlc3MuICAq LwotKwotKyAgcG9pbnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOwot KwotKyAgZGF0YV9hZGRyZXNzID0gcmVhZF9tZW1vcnlfdHlwZWRfYWRkcmVzcyAocG9pbnRlcl9h ZGRyZXNzLCBwdHJfdHlwZSk7Ci0rCi0rICAvKiBQb3NzaWJseSBzdGlsbCBub3QgaW5pdGlhbGl6 ZWQgc3VjaCBhcyBkdXJpbmcgYW4gaW5mZXJpb3Igc3RhcnR1cC4gICovCi0rICBpZiAoZGF0YV9h ZGRyZXNzID09IDApCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIGRhdGFfYWRkcmVzcyArPSBvZmZz ZXQ7Ci0rCi0rICBpZiAod3JpdGVidWYgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlmICh0YXJn ZXRfd3JpdGVfbWVtb3J5IChkYXRhX2FkZHJlc3MsIHdyaXRlYnVmLCBsZW4pID09IDApCi0rCXJl dHVybiBsZW47Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsgIC8qIFN0 b3AgaWYgdHJ5aW5nIHRvIHJlYWQgcGFzdCB0aGUgZXhpc3RpbmcgQVVYViBibG9jay4gIFRoZSBm aW5hbCBBVF9OVUxMCi0rICAgICB3YXMgYWxyZWFkeSByZXR1cm5lZCBiZWZvcmUuICAqLwotKwot KyAgaWYgKG9mZnNldCA+PSBhdXh2X3BhaXJfc2l6ZSkKLSsgICAgewotKyAgICAgIGlmICh0YXJn ZXRfcmVhZF9tZW1vcnkgKGRhdGFfYWRkcmVzcyAtIGF1eHZfcGFpcl9zaXplLCBwdHJfYnVmLAot KwkJCSAgICAgIHB0cl9zaXplKSAhPSAwKQotKwlyZXR1cm4gLTE7Ci0rCi0rICAgICAgaWYgKGV4 dHJhY3RfdHlwZWRfYWRkcmVzcyAocHRyX2J1ZiwgcHRyX3R5cGUpID09IEFUX05VTEwpCi0rCXJl dHVybiAwOwotKyAgICB9Ci0rCi0rICByZXR2YWwgPSAwOwotKyAgYmxvY2sgPSAweDQwMDsKLSsg IGdkYl9hc3NlcnQgKGJsb2NrICUgYXV4dl9wYWlyX3NpemUgPT0gMCk7Ci0rCi0rICB3aGlsZSAo bGVuID4gMCkKLSsgICAgewotKyAgICAgIGlmIChibG9jayA+IGxlbikKLSsJYmxvY2sgPSBsZW47 Ci0rCi0rICAgICAgLyogUmVhZGluZyBzaXplcyBzbWFsbGVyIHRoYW4gQVVYVl9QQUlSX1NJWkUg aXMgbm90IHN1cHBvcnRlZC4gIFRhaWxzCi0rCSB1bmFsaWduZWQgdG8gQVVYVl9QQUlSX1NJWkUg d2lsbCBub3QgYmUgcmVhZCBkdXJpbmcgYSBjYWxsICh0aGV5Ci0rCSBzaG91bGQgYmUgY29tcGxl dGVkIGR1cmluZyBuZXh0IHJlYWQgd2l0aCBuZXcvZXh0ZW5kZWQgYnVmZmVyKS4gICovCi0rCi0r ICAgICAgYmxvY2sgJj0gLWF1eHZfcGFpcl9zaXplOwotKyAgICAgIGlmIChibG9jayA9PSAwKQot KwlyZXR1cm4gcmV0dmFsOwotKwotKyAgICAgIGlmICh0YXJnZXRfcmVhZF9tZW1vcnkgKGRhdGFf YWRkcmVzcywgcmVhZGJ1ZiwgYmxvY2spICE9IDApCi0rCXsKLSsJICBpZiAoYmxvY2sgPD0gYXV4 dl9wYWlyX3NpemUpCi0rCSAgICByZXR1cm4gcmV0dmFsOwotKwotKwkgIGJsb2NrID0gYXV4dl9w YWlyX3NpemU7Ci0rCSAgY29udGludWU7Ci0rCX0KLSsKLSsgICAgICBkYXRhX2FkZHJlc3MgKz0g YmxvY2s7Ci0rICAgICAgbGVuIC09IGJsb2NrOwotKwotKyAgICAgIC8qIENoZWNrIHRlcm1pbmFs IEFUX05VTEwuICBUaGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBpbmRlZmluaXRlbHkKLSsg ICAgICAgICBiZWluZyBleHRlbmRlZCBpdHMgUkVBREJVRiB1bnRpbCBpdCByZXR1cm5zIEVPRiAo MCkuICAqLwotKwotKyAgICAgIHdoaWxlIChibG9jayA+PSBhdXh2X3BhaXJfc2l6ZSkKLSsJewot KwkgIHJldHZhbCArPSBhdXh2X3BhaXJfc2l6ZTsKLSsKLSsJICBpZiAoZXh0cmFjdF90eXBlZF9h ZGRyZXNzIChyZWFkYnVmLCBwdHJfdHlwZSkgPT0gQVRfTlVMTCkKLSsJICAgIHJldHVybiByZXR2 YWw7Ci0rCi0rCSAgcmVhZGJ1ZiArPSBhdXh2X3BhaXJfc2l6ZTsKLSsJICBibG9jayAtPSBhdXh2 X3BhaXJfc2l6ZTsKLSsJfQotKyAgICB9Ci0rCi0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsv KiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBsaWtlIGEgdG9feGZlcl9wYXJ0aWFsIGhvb2ssIGJ1 dCBtdXN0IGJlCi0rICAgY2FsbGVkIHdpdGggVEFSR0VUX09CSkVDVF9BVVhWLiAgSXQgaGFuZGxl cyBhY2Nlc3MgdG8gQVVYVi4gICovCi0rCi0rTE9OR0VTVAotK21lbW9yeV94ZmVyX2F1eHYgKHN0 cnVjdCB0YXJnZXRfb3BzICpvcHMsCi0rCQkgIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3QsCi0r CQkgIGNvbnN0IGNoYXIgKmFubmV4LAotKwkJICBnZGJfYnl0ZSAqcmVhZGJ1ZiwKLSsJCSAgY29u c3QgZ2RiX2J5dGUgKndyaXRlYnVmLAotKwkJICBVTE9OR0VTVCBvZmZzZXQsCi0rCQkgIExPTkdF U1QgbGVuKQotK3sKLSsgIC8qIFdvcmthcm91bmQgZ2RiLTcuMCBidWcgd2hlcmUgbGludXhfbmF0 X3hmZXJfcGFydGlhbCgpIGRvZXMKLSsgICAgICAgaW5mZXJpb3JfcHRpZCA9IHBpZF90b19wdGlk IChHRVRfTFdQIChpbmZlcmlvcl9wdGlkKSk7Ci0rICAgICBhbmQgY3VycmVudF9pbmZlcmlvcigp IGFzc2VydGlvbiBmYWlscyBub3QgZmluZGluZyB0aGUgTFdQLT5QSUQuCi0rICAgICBJdCBnb3Qg Zml4ZWQgcG9zdC1nZGItNy4wIGJ5OgotKyAgICAgICBBZGQgYmFzZSBtdWx0aS1leGVjdXRhYmxl L3Byb2Nlc3Mgc3VwcG9ydCB0byBHREIuCi0rICAgICAgIDQwZmYwYTI4OWU2MTY1YWE5MzBhZjI4 NGRmNWM1MjE2MmNiMGNkNWYKLSsgICAgIGJ5IGludHJvZHVjaW5nIGBjdXJyZW50X2luZmVyaW9y XycuICAqLwotKyAgc3RydWN0IGluZmVyaW9yICppbmYgPSBmaW5kX2luZmVyaW9yX3BpZCAocHRp ZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0rCi0rICBnZGJfYXNzZXJ0IChvYmplY3QgPT0g VEFSR0VUX09CSkVDVF9BVVhWKTsKLSsgIGdkYl9hc3NlcnQgKHJlYWRidWYgfHwgd3JpdGVidWYp OwotKwotKyAgIC8qIGxkX3NvX3hmZXJfYXV4diBpcyB0aGUgb25seSBmdW5jdGlvbiBzYWZlIGZv ciB2aXJ0dWFsIGV4ZWN1dGFibGVzIGJlaW5nCi0rICAgICAgZXhlY3V0ZWQgYnkgdmFsZ3JpbmQn cyBtZW1jaGVjay4gIEFzIHVzaW5nIGxkX3NvX3hmZXJfYXV4diBpcyBwcm9ibGVtYXRpYwotKyAg ICAgIGR1cmluZyBpbmZlcmlvciBzdGFydHVwIEdEQiBkb2VzIGNhbGwgaXQgb25seSBmb3IgYXR0 YWNoZWQgcHJvY2Vzc2VzLiAgKi8KLSsKLSsgIGlmIChpbmYgPT0gTlVMTCB8fCBpbmYtPmF0dGFj aF9mbGFnICE9IDApCi0rICAgIHsKLSsgICAgICBMT05HRVNUIHJldHZhbDsKLSsKLSsgICAgICBy ZXR2YWwgPSBsZF9zb194ZmVyX2F1eHYgKHJlYWRidWYsIHdyaXRlYnVmLCBvZmZzZXQsIGxlbik7 Ci0rICAgICAgaWYgKHJldHZhbCAhPSAtMSkKLSsJcmV0dXJuIHJldHZhbDsKLSsgICAgfQotKwot KyAgcmV0dXJuIHByb2Nmc194ZmVyX2F1eHYgKHJlYWRidWYsIHdyaXRlYnVmLCBvZmZzZXQsIGxl bik7Ci0rfQotKwotIC8qIFJlYWQgb25lIGF1eHYgZW50cnkgZnJvbSAqUkVBRFBUUiwgbm90IHJl YWRpbmcgbG9jYXRpb25zID49IEVORFBUUi4KLSAgICBSZXR1cm4gMCBpZiAqUkVBRFBUUiBpcyBh bHJlYWR5IGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4KLSAgICBSZXR1cm4gLTEgaWYgdGhlcmUg aXMgaW5zdWZmaWNpZW50IGJ1ZmZlciBmb3IgYSB3aG9sZSBlbnRyeS4KLWRpZmYgLS1naXQgYS9n ZGIvYXV4di5oIGIvZ2RiL2F1eHYuaAotaW5kZXggNzFlNjU2Mi4uODdjMjRhZSAxMDA2NDQKLS0t LSBhL2dkYi9hdXh2LmgKLSsrKyBiL2dkYi9hdXh2LmgKLUBAIC00MywxMSArNDMsNyBAQCBleHRl cm4gaW50IHRhcmdldF9hdXh2X3NlYXJjaCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSAvKiBQ cmludCB0aGUgY29udGVudHMgb2YgdGhlIHRhcmdldCdzIEFVWFYgb24gdGhlIHNwZWNpZmllZCBm aWxlLiAqLwotIGV4dGVybiBpbnQgZnByaW50X3RhcmdldF9hdXh2IChzdHJ1Y3QgdWlfZmlsZSAq ZmlsZSwgc3RydWN0IHRhcmdldF9vcHMgKm9wcyk7Ci0gCi0tLyogVGhpcyBmdW5jdGlvbiBpcyBj YWxsZWQgbGlrZSBhIHRvX3hmZXJfcGFydGlhbCBob29rLCBidXQgbXVzdCBiZQotLSAgIGNhbGxl ZCB3aXRoIFRBUkdFVF9PQkpFQ1RfQVVYVi4gIEl0IGhhbmRsZXMgYWNjZXNzIHZpYQotLSAgIC9w cm9jL1BJRC9hdXh2LCB3aGljaCBpcyBhIGNvbW1vbiBtZXRob2QgZm9yIG5hdGl2ZSB0YXJnZXRz LiAgKi8KLS0KLS1leHRlcm4gTE9OR0VTVCBwcm9jZnNfeGZlcl9hdXh2IChzdHJ1Y3QgdGFyZ2V0 X29wcyAqb3BzLAotK2V4dGVybiBMT05HRVNUIG1lbW9yeV94ZmVyX2F1eHYgKHN0cnVjdCB0YXJn ZXRfb3BzICpvcHMsCi0gCQkJCSBlbnVtIHRhcmdldF9vYmplY3Qgb2JqZWN0LAotIAkJCQkgY29u c3QgY2hhciAqYW5uZXgsCi0gCQkJCSBnZGJfYnl0ZSAqcmVhZGJ1ZiwKLWRpZmYgLS1naXQgYS9n ZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQuYwotaW5kZXggMGYzNTEwMS4uYmZmYzVh NiAxMDA2NDQKLS0tLSBhL2dkYi9icmVha3BvaW50LmMKLSsrKyBiL2dkYi9icmVha3BvaW50LmMK LUBAIC00ODA1LDcgKzQ4MDUsOCBAQCBkaXNhYmxlX2JyZWFrcG9pbnRzX2luX3NobGlicyAodm9p ZCkKLSAgICAgICAgdG8gaW5zZXJ0IHRob3NlIGJyZWFrcG9pbnRzIGFuZCBmYWlsLiAgKi8KLSAg ICAgaWYgKCgoYi0+dHlwZSA9PSBicF9icmVha3BvaW50KQotIAkgfHwgKGItPnR5cGUgPT0gYnBf aGFyZHdhcmVfYnJlYWtwb2ludCkKLS0JIHx8IChiLT50eXBlID09IGJwX3RyYWNlcG9pbnQpKQot KwkgfHwgKGItPnR5cGUgPT0gYnBfdHJhY2Vwb2ludCkKLSsJIHx8IGItPnR5cGUgPT0gYnBfc2hs aWJfZXZlbnQpCi0gCSYmICFsb2MtPnNobGliX2Rpc2FibGVkCi0gI2lmZGVmIFBDX1NPTElCCi0g CSYmIFBDX1NPTElCIChsb2MtPmFkZHJlc3MpCi1kaWZmIC0tZ2l0IGEvZ2RiL2RlZnMuaCBiL2dk Yi9kZWZzLmgKLWluZGV4IDk0Njc0ZGMuLjU3YWFhZTIgMTAwNjQ0Ci0tLS0gYS9nZGIvZGVmcy5o Ci0rKysgYi9nZGIvZGVmcy5oCi1AQCAtOTgsNyArOTgsMjAgQEAKLSAvKiBBIGJ5dGUgZnJvbSB0 aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4gICovCi0gdHlwZWRlZiBiZmRfYnl0ZSBnZGJfYnl0 ZTsKLSAKLS0vKiBBbiBhZGRyZXNzIGluIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkLiAgSG9z dCBieXRlIG9yZGVyLiAgKi8KLSsvKiBBbiBhZGRyZXNzIGluIHRoZSBwcm9ncmFtIGJlaW5nIGRl YnVnZ2VkLiAgSG9zdCBieXRlIG9yZGVyLgotKwotKyAgIEl0cyB3aWR0aCBpcyB0aGUgbWF4aW11 bSB3aWR0aCBvZiBhbGwgdGhlIHN1cHBvcnRlZCB0YXJnZXRzLiAgVGhhdCBtZWFucwotKyAgIDMy LWJpdCB0YXJnZXQgd2lsbCBydW4gb24gc3VjaCBHREIgdXNpbmcgNjQtYml0IENPUkVfQUREUiBj bHV0dGVyaW5nIHRoZQotKyAgIGJpdHMgMzIuLi42MyB3aXRoIHJhbmRvbSBkYXRhIGZyb20gaW50 ZXJuYWwgR0RCIGNhbGN1bGF0aW9ucy4gIEdEQiBjdXJyZW50bHkKLSsgICBpbiBnZW5lcmFsIHRy dW5jYXRlcyB0aGUgYWRkcmVzcyB3aWR0aCBvbmx5IHdoZW4gaXQgaXMgYmVpbmcgcHJlc2VudGVk L3VzZWQKLSsgICBleHRlcm5hbGx5IChzdWNoIGFzIGJ5IHRoZSBwYWRkcmVzcyBmdW5jdGlvbiku Ci0rCi0rICAgRklYTUU6IFRoaXMgaXMgc3RpbGwgbm90IHJpZ2h0IGFzIGFueSBHREIgaW50ZXJu YWwgY29tcGFyaXNvbnMgKHN1Y2ggYXMgPj0pCi0rICAgb2YgQ09SRV9BRERSIGRvIG5vdCB1c2Ug dGhlIHByb3Blcmx5IHRydW5jYXRlZCB3aWR0aC4gIEFzIGNvbnZlcnRpbmcgYWxsIHRoZQotKyAg IENPUkVfQUREUiBvcGVyYXRpb25zIHRvIHdpZHRoLWF3YXJlIGZ1bmN0aW9ucyBpcyBub3QgZmVh c2libGUgdGhlIHdheSBvdXQKLSsgICBjb3VsZCBiZSBhIHdpZHRoLWF3YXJlIEMrKyBjbGFzcyBD T1JFX0FERFIgcmVmZXJlbmNpbmcgZ2RiYXJjaCBhcyBpdHMKLSsgICBjb25zdHJ1Y3RvciBwYXJh bWV0ZXIuICAqLwotKwotIHR5cGVkZWYgYmZkX3ZtYSBDT1JFX0FERFI7Ci0gCi0gLyogVGhlIGxh cmdlc3QgQ09SRV9BRERSIHZhbHVlLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvZXhlYy5jIGIvZ2Ri L2V4ZWMuYwotaW5kZXggNDU1MTUxZS4uNjdmNDBkOSAxMDA2NDQKLS0tLSBhL2dkYi9leGVjLmMK LSsrKyBiL2dkYi9leGVjLmMKLUBAIC02NTYsOCArNjU2LDMzIEBAIHByaW50X3NlY3Rpb25faW5m byAoc3RydWN0IHRhcmdldF9zZWN0aW9uX3RhYmxlICp0LCBiZmQgKmFiZmQpCi0gICB3cmFwX2hl cmUgKCIgICAgICAgICIpOwotICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJmaWxlIHR5cGUgJXMuXG4i KSwgYmZkX2dldF90YXJnZXQgKGFiZmQpKTsKLSAgIGlmIChhYmZkID09IGV4ZWNfYmZkKQotLSAg ICBwcmludGZfZmlsdGVyZWQgKF8oIlx0RW50cnkgcG9pbnQ6ICVzXG4iKSwKLS0gICAgICAgICAg ICAgICAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwgYmZkX2dldF9zdGFydF9hZGRyZXNzIChhYmZk KSkpOwotKyAgICB7Ci0rICAgICAgYmZkX3ZtYSBkaXNwbGFjZW1lbnQgPSAwOwotKwotKyAgICAg IGZvciAocCA9IHQtPnNlY3Rpb25zOyBwIDwgdC0+c2VjdGlvbnNfZW5kOyBwKyspCi0rCXsKLSsJ ICBhc2VjdGlvbiAqYXNlY3QgPSBwLT50aGVfYmZkX3NlY3Rpb247Ci0rCi0rCSAgaWYgKChiZmRf Z2V0X3NlY3Rpb25fZmxhZ3MgKGFiZmQsIGFzZWN0KSAmIChTRUNfQUxMT0MgfCBTRUNfTE9BRCkp Ci0rCSAgICAgICE9IChTRUNfQUxMT0MgfCBTRUNfTE9BRCkpCi0rCSAgICBjb250aW51ZTsKLSsK LSsJICBpZiAoYmZkX2dldF9zZWN0aW9uX3ZtYSAoYWJmZCwgYXNlY3QpIDw9IGFiZmQtPnN0YXJ0 X2FkZHJlc3MKLSsJICAgICAgJiYgYWJmZC0+c3RhcnRfYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlv bl92bWEgKGFiZmQsIGFzZWN0KQotKwkJCQkgICAgICAgKyBiZmRfZ2V0X3NlY3Rpb25fc2l6ZSAo YXNlY3QpKQotKwkgICAgewotKwkgICAgICBkaXNwbGFjZW1lbnQgPSBwLT5hZGRyIC0gYmZkX2dl dF9zZWN0aW9uX3ZtYSAoYWJmZCwgYXNlY3QpOwotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJ fQotKyAgICAgIGlmIChwID09IHQtPnNlY3Rpb25zX2VuZCkKLSsJd2FybmluZyAoXygiQ2Fubm90 IGZpbmQgc2VjdGlvbiBmb3IgdGhlIGVudHJ5IHBvaW50IG9mICVzLlxuIiksCi0rCQkgYmZkX2dl dF9maWxlbmFtZSAoYWJmZCkpOwotKwotKyAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiXHRFbnRy eSBwb2ludDogJXNcbiIpLAotKwkJICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBiZmRfZ2V0X3N0 YXJ0X2FkZHJlc3MgKGFiZmQpCi0rCQkJCQkgICsgZGlzcGxhY2VtZW50KSk7Ci0rICAgIH0KLSAg IGZvciAocCA9IHQtPnNlY3Rpb25zOyBwIDwgdC0+c2VjdGlvbnNfZW5kOyBwKyspCi0gICAgIHsK LSAgICAgICBwcmludGZfZmlsdGVyZWQgKCJcdCVzIiwgaGV4X3N0cmluZ19jdXN0b20gKHAtPmFk ZHIsIHdpZCkpOwotZGlmZiAtLWdpdCBhL2dkYi9pbmZjbWQuYyBiL2dkYi9pbmZjbWQuYwotaW5k ZXggZmFiMTg5Mi4uZmMwZjA1ZCAxMDA2NDQKLS0tLSBhL2dkYi9pbmZjbWQuYwotKysrIGIvZ2Ri L2luZmNtZC5jCi1AQCAtMzk1LDIyICszOTUsNiBAQCBwb3N0X2NyZWF0ZV9pbmZlcmlvciAoc3Ry dWN0IHRhcmdldF9vcHMgKnRhcmdldCwgaW50IGZyb21fdHR5KQotICAgLyogTm93IHRoYXQgd2Ug a25vdyB0aGUgcmVnaXN0ZXIgbGF5b3V0LCByZXRyaWV2ZSBjdXJyZW50IFBDLiAgKi8KLSAgIHN0 b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfY3VycmVudF9yZWdjYWNoZSAoKSk7Ci0gCi0t ICAvKiBJZiB0aGUgc29saXN0IGlzIGdsb2JhbCBhY3Jvc3MgcHJvY2Vzc2VzLCB0aGVyZSdzIG5v IG5lZWQgdG8KLS0gICAgIHJlZmV0Y2ggaXQgaGVyZS4gICovCi0tICBpZiAoZXhlY19iZmQgJiYg IWdkYmFyY2hfaGFzX2dsb2JhbF9zb2xpc3QgKHRhcmdldF9nZGJhcmNoKSkKLS0gICAgewotLSAg ICAgIC8qIFNvbWV0aW1lcyB0aGUgcGxhdGZvcm0tc3BlY2lmaWMgaG9vayBsb2FkcyBpbml0aWFs IHNoYXJlZAotLQkgbGlicmFyaWVzLCBhbmQgc29tZXRpbWVzIGl0IGRvZXNuJ3QuICBUcnkgdG8g ZG8gc28gZmlyc3QsIHNvCi0tCSB0aGF0IHdlIGNhbiBhZGQgdGhlbSB3aXRoIHRoZSBjb3JyZWN0 IHZhbHVlIGZvciBGUk9NX1RUWS4KLS0JIElmIHdlIG1hZGUgYWxsIHRoZSBpbmZlcmlvciBob29r IG1ldGhvZHMgY29uc2lzdGVudCwKLS0JIHRoaXMgY2FsbCBjb3VsZCBiZSByZW1vdmVkLiAgKi8K LS0jaWZkZWYgU09MSUJfQURECi0tICAgICAgU09MSUJfQUREIChOVUxMLCBmcm9tX3R0eSwgdGFy Z2V0LCBhdXRvX3NvbGliX2FkZCk7Ci0tI2Vsc2UKLS0gICAgICBzb2xpYl9hZGQgKE5VTEwsIGZy b21fdHR5LCB0YXJnZXQsIGF1dG9fc29saWJfYWRkKTsKLS0jZW5kaWYKLS0gICAgfQotLQotICAg aWYgKGV4ZWNfYmZkKQotICAgICB7Ci0gICAgICAgLyogQ3JlYXRlIHRoZSBob29rcyB0byBoYW5k bGUgc2hhcmVkIGxpYnJhcnkgbG9hZCBhbmQgdW5sb2FkCi1AQCAtNDE4LDcgKzQwMiwyNSBAQCBw b3N0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgaW50IGZyb21f dHR5KQotICNpZmRlZiBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSwotICAgICAgIFNPTElCX0NS RUFURV9JTkZFUklPUl9IT09LIChQSURHRVQgKGluZmVyaW9yX3B0aWQpKTsKLSAjZWxzZQotLSAg ICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgpOwotKyAgICAgIHNvbGliX2NyZWF0ZV9p bmZlcmlvcl9ob29rIChmcm9tX3R0eSk7Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsgIC8qIElmIHRo ZSBzb2xpc3QgaXMgZ2xvYmFsIGFjcm9zcyBwcm9jZXNzZXMsIHRoZXJlJ3Mgbm8gbmVlZCB0bwot KyAgICAgcmVmZXRjaCBpdCBoZXJlLiAgKi8KLSsgIGlmIChleGVjX2JmZCAmJiAhZ2RiYXJjaF9o YXNfZ2xvYmFsX3NvbGlzdCAodGFyZ2V0X2dkYmFyY2gpKQotKyAgICB7Ci0rICAgICAgLyogU29t ZXRpbWVzIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyBob29rIGxvYWRzIGluaXRpYWwgc2hhcmVkCi0r CSBsaWJyYXJpZXMsIGFuZCBzb21ldGltZXMgaXQgZG9lc24ndC4gIElmIGl0IGRvZXNuJ3QgRlJP TV9UVFkgd2lsbCBiZQotKwkgaW5jb3JyZWN0bHkgMCBidXQgc3VjaCBzb2xpYiB0YXJnZXRzIHNo b3VsZCBiZSBmaXhlZCBhbnl3YXkuICBJZiB3ZQotKwkgbWFkZSBhbGwgdGhlIGluZmVyaW9yIGhv b2sgbWV0aG9kcyBjb25zaXN0ZW50LCB0aGlzIGNhbGwgY291bGQgYmUKLSsJIHJlbW92ZWQuICBD YWxsIGl0IG9ubHkgYWZ0ZXIgdGhlIHNvbGliIHRhcmdldCBoYXMgYmVlbiBpbml0aWFsaXplZCBi eQotKwkgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2suICAqLwotKwotKyNpZmRlZiBTT0xJQl9B REQKLSsgICAgICBTT0xJQl9BREQgKE5VTEwsIDAsIHRhcmdldCwgYXV0b19zb2xpYl9hZGQpOwot KyNlbHNlCi0rICAgICAgc29saWJfYWRkIChOVUxMLCAwLCB0YXJnZXQsIGF1dG9fc29saWJfYWRk KTsKLSAjZW5kaWYKLSAgICAgfQotIAotZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9p bmZydW4uYwotaW5kZXggOWQyOWIxNS4uZWQ0NTFkNSAxMDA2NDQKLS0tLSBhL2dkYi9pbmZydW4u YwotKysrIGIvZ2RiL2luZnJ1bi5jCi1AQCAtNTQ0LDcgKzU0NCw3IEBAIGZvbGxvd19leGVjIChw dGlkX3QgcGlkLCBjaGFyICpleGVjZF9wYXRobmFtZSkKLSAjaWZkZWYgU09MSUJfQ1JFQVRFX0lO RkVSSU9SX0hPT0sKLSAgIFNPTElCX0NSRUFURV9JTkZFUklPUl9IT09LIChQSURHRVQgKGluZmVy aW9yX3B0aWQpKTsKLSAjZWxzZQotLSAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCk7Ci0r ICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoMCk7Ci0gI2VuZGlmCi0gCi0gICBqaXRfaW5m ZXJpb3JfY3JlYXRlZF9ob29rICgpOwotZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dk Yi9saW51eC1uYXQuYwotaW5kZXggMDkwN2YwMy4uMWMxODc4MiAxMDA2NDQKLS0tLSBhL2dkYi9s aW51eC1uYXQuYwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtNDY3NCw3ICs0Njc0LDcgQEAg bGludXhfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBlbnVtIHRhcmdldF9v YmplY3Qgb2JqZWN0LAotICAgTE9OR0VTVCB4ZmVyOwotIAotICAgaWYgKG9iamVjdCA9PSBUQVJH RVRfT0JKRUNUX0FVWFYpCi0tICAgIHJldHVybiBwcm9jZnNfeGZlcl9hdXh2IChvcHMsIG9iamVj dCwgYW5uZXgsIHJlYWRidWYsIHdyaXRlYnVmLAotKyAgICByZXR1cm4gbWVtb3J5X3hmZXJfYXV4 diAob3BzLCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKLSAJCQkgICAgIG9mZnNl dCwgbGVuKTsKLSAKLSAgIGlmIChvYmplY3QgPT0gVEFSR0VUX09CSkVDVF9PU0RBVEEpCi1kaWZm IC0tZ2l0IGEvZ2RiL2xpbnV4LXRkZXAuYyBiL2dkYi9saW51eC10ZGVwLmMKLWluZGV4IDY2MzQ3 MDMuLjM3NzcwZjUgMTAwNjQ0Ci0tLS0gYS9nZGIvbGludXgtdGRlcC5jCi0rKysgYi9nZGIvbGlu dXgtdGRlcC5jCi1AQCAtMTgsMTIgKzE4LDggQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0g I2luY2x1ZGUgImRlZnMuaCIKLS0jaW5jbHVkZSAiZ2RiY29yZS5oIgotICNpbmNsdWRlICJnZGJ0 eXBlcy5oIgotICNpbmNsdWRlICJsaW51eC10ZGVwLmgiCi0tI2luY2x1ZGUgIm9ic2VydmVyLmgi Ci0tCi0tI2luY2x1ZGUgImVsZi1iZmQuaCIKLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGlzIHN1aXRh YmxlIGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgZG9uJ3QKLSAgICBleHRlbmQvb3ZlcnJpZGUgdGhl IHN0YW5kYXJkIHNpZ2luZm8gc3RydWN0dXJlLiAgKi8KLUBAIC0xMzgsMzAgKzEzNCwzIEBAIGxp bnV4X2dldF9zaWdpbmZvX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIAotICAgcmV0 dXJuIHNpZ2luZm9fdHlwZTsKLSB9Ci0tCi0tLyogT2JzZXJ2ZXIgZm9yIHRoZSBleGVjdXRhYmxl X2NoYW5nZWQgZXZlbnQsIHRvIGNoZWNrIHdoZXRoZXIgdGhlIG5ldwotLSAgIGV4ZWMgYmluYXJ5 IGlzIGEgUElFIChQb3NpdGlvbiBJbmRlcGVuZGVudCBFeGVjdXRhYmxlKSBzcGVjaW1lbiwgd2hp Y2gKLS0gICBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuICAqLwotLQotLXN0YXRpYyB2b2lkCi0t Y2hlY2tfaXNfcGllX2JpbmFyeSAodm9pZCkKLS17Ci0tICBFbGZfSW50ZXJuYWxfRWhkciAqZWxm X2hkcjsKLS0KLS0gIGlmICghZXhlY19iZmQpCi0tICAgIHJldHVybjsKLS0gIGVsc2UgaWYgKGJm ZF9nZXRfZmxhdm91ciAoZXhlY19iZmQpICE9IGJmZF90YXJnZXRfZWxmX2ZsYXZvdXIpCi0tICAg IHJldHVybjsKLS0KLS0gIGlmIChlbGZfdGRhdGEgKGV4ZWNfYmZkKS0+ZWxmX2hlYWRlci0+ZV90 eXBlID09IEVUX0RZTikKLS0gICAgd2FybmluZyAoXygiXAotLVRoZSBjdXJyZW50IGJpbmFyeSBp cyBhIFBJRSAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSksIHdoaWNoXG5cCi0tR0RC IGRvZXMgTk9UIGN1cnJlbnRseSBzdXBwb3J0LiAgTW9zdCBkZWJ1Z2dlciBmZWF0dXJlcyB3aWxs IGZhaWwgaWYgdXNlZFxuXAotLWluIHRoaXMgc2Vzc2lvbi5cbiIpKTsKLS19Ci0tCi0tdm9pZAot LV9pbml0aWFsaXplX2xpbnV4X3RkZXAgKHZvaWQpCi0tewotLSAgb2JzZXJ2ZXJfYXR0YWNoX2V4 ZWN1dGFibGVfY2hhbmdlZCAoY2hlY2tfaXNfcGllX2JpbmFyeSk7Ci0tfQotZGlmZiAtLWdpdCBh L2dkYi9udG8tcHJvY2ZzLmMgYi9nZGIvbnRvLXByb2Nmcy5jCi1pbmRleCAwYWRiMDQ1Li5lYTg5 MzMxIDEwMDY0NAotLS0tIGEvZ2RiL250by1wcm9jZnMuYwotKysrIGIvZ2RiL250by1wcm9jZnMu YwotQEAgLTY1Miw3ICs2NTIsNyBAQCBzdGF0aWMgdm9pZAotIHByb2Nmc19wb3N0X2F0dGFjaCAo cGlkX3QgcGlkKQotIHsKLSAgIGlmIChleGVjX2JmZCkKLS0gICAgc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKCk7Ci0rICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgwKTsKLSB9Ci0g Ci0gc3RhdGljIHB0aWRfdAotQEAgLTEyMTIsNyArMTIxMiw3IEBAIHByb2Nmc19jcmVhdGVfaW5m ZXJpb3IgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGNoYXIgKmV4ZWNfZmlsZSwKLSAKLSAgIGlm IChleGVjX2JmZCAhPSBOVUxMCi0gICAgICAgfHwgKHN5bWZpbGVfb2JqZmlsZSAhPSBOVUxMICYm IHN5bWZpbGVfb2JqZmlsZS0+b2JmZCAhPSBOVUxMKSkKLS0gICAgc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKCk7Ci0rICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgwKTsKLSB9Ci0g Ci0gc3RhdGljIHZvaWQKLWRpZmYgLS1naXQgYS9nZGIvb2JqZmlsZXMuYyBiL2dkYi9vYmpmaWxl cy5jCi1pbmRleCBlNTQ0MmNhLi5mYjBjZWE5IDEwMDY0NAotLS0tIGEvZ2RiL29iamZpbGVzLmMK LSsrKyBiL2dkYi9vYmpmaWxlcy5jCi1AQCAtNTQ0LDkgKzU0NCwxMCBAQCBmcmVlX2FsbF9vYmpm aWxlcyAodm9pZCkKLSB9Ci0gDAotIC8qIFJlbG9jYXRlIE9CSkZJTEUgdG8gTkVXX09GRlNFVFMu ICBUaGVyZSBzaG91bGQgYmUgT0JKRklMRS0+TlVNX1NFQ1RJT05TCi0tICAgZW50cmllcyBpbiBu ZXdfb2Zmc2V0cy4gICovCi0tdm9pZAotLW9iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKLSsgICBlbnRy aWVzIGluIG5ld19vZmZzZXRzLiAgU0VQQVJBVEVfREVCVUdfT0JKRklMRSBpcyBub3QgdG91Y2hl ZCBoZXJlLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK29iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMpCi0g ewotICAgc3RydWN0IG9ial9zZWN0aW9uICpzOwotICAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAq ZGVsdGEgPQotQEAgLTYyNCw2ICs2MjUsMTAgQEAgb2JqZmlsZV9yZWxvY2F0ZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZzZXRzKQotICAg ICB9Ci0gICB9Ci0gCi0rICBpZiAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCkKLSsgICAgYWRk cm1hcF9yZWxvY2F0ZSAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCwKLSsJCSAgICAgIEFOT0ZG U0VUIChkZWx0YSwgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpKTsKLSsKLSAgIHsKLSAgICAgc3Ry dWN0IHBhcnRpYWxfc3ltdGFiICpwOwotIAotQEAgLTcwMSw2ICs3MDYsNDkgQEAgb2JqZmlsZV9y ZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMg Km5ld19vZmZzZXRzKQotICAgICAgIGV4ZWNfc2V0X3NlY3Rpb25fYWRkcmVzcyAoYmZkX2dldF9m aWxlbmFtZSAob2JqZmlsZS0+b2JmZCksIGlkeCwKLSAJCQkJb2JqX3NlY3Rpb25fYWRkciAocykp OwotICAgICB9Ci0rfQotKwotKy8qIFJlbG9jYXRlIE9CSkZJTEUgdG8gTkVXX09GRlNFVFMuICBU aGVyZSBzaG91bGQgYmUgT0JKRklMRS0+TlVNX1NFQ1RJT05TCi0rICAgZW50cmllcyBpbiBuZXdf b2Zmc2V0cy4gIFByb2Nlc3MgYWxzbyBPQkpGSUxFJ3MgU0VQQVJBVEVfREVCVUdfT0JKRklMRS4K LSsKLSsgICBUaGUgbnVtYmVyIGFuZCBvcmRlcmluZyBvZiBzZWN0aW9ucyBkb2VzIGRpZmZlciBi ZXR3ZWVuIHRoZSB0d28gb2JqZmlsZXMuCi0rICAgT25seSB0aGVpciBuYW1lcyBtYXRjaC4gIEFs c28gdGhlIGZpbGUgb2Zmc2V0cyB3aWxsIGRpZmZlciAob2JqZmlsZSBiZWluZwotKyAgIHBvc3Np Ymx5IHByZWxpbmtlZCBidXQgc2VwYXJhdGVfZGVidWdfb2JqZmlsZSBpcyBwcm9iYWJseSBub3Qg cHJlbGlua2VkKSBidXQKLSsgICB0aGUgaW4tbWVtb3J5IGFic29sdXRlIGFkZHJlc3MgYXMgc3Bl Y2lmaWVkIGJ5IE5FV19PRkZTRVRTIG11c3QgbWF0Y2ggYm90aAotKyAgIGZpbGVzLiAgKi8KLSsK LSt2b2lkCi0rb2JqZmlsZV9yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVj dCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZzZXRzKQotK3sKLSsgIG9iamZpbGVfcmVsb2NhdGUx IChvYmpmaWxlLCBuZXdfb2Zmc2V0cyk7Ci0rCi0rICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVi dWdfb2JqZmlsZSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3RydWN0IG9iamZpbGUgKmRlYnVn X29iamZpbGUgPSBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlOwotKyAgICAgIHN0cnVj dCBzZWN0aW9uX2FkZHJfaW5mbyAqb2JqZmlsZV9hZGRyczsKLSsgICAgICBzdHJ1Y3Qgc2VjdGlv bl9vZmZzZXRzICpuZXdfZGVidWdfb2Zmc2V0czsKLSsgICAgICBpbnQgbmV3X2RlYnVnX251bV9z ZWN0aW9uczsKLSsgICAgICBzdHJ1Y3QgY2xlYW51cCAqbXlfY2xlYW51cHM7Ci0rCi0rICAgICAg b2JqZmlsZV9hZGRycyA9IGJ1aWxkX3NlY3Rpb25fYWRkcl9pbmZvX2Zyb21fb2JqZmlsZSAob2Jq ZmlsZSk7Ci0rICAgICAgbXlfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBvYmpmaWxl X2FkZHJzKTsKLSsKLSsgICAgICAvKiBIZXJlIE9CSkZJTEVfQUREUlMgY29udGFpbiB0aGUgY29y cmVjdCBhYnNvbHV0ZSBhZGRyZXNzZXMsIHRoZQotKwkgcmVsYXRpdmUgb25lcyBtdXN0IGJlIGFs cmVhZHkgY3JlYXRlZCBhY2NvcmRpbmcgdG8gZGVidWdfb2JqZmlsZS4gICovCi0rCi0rICAgICAg YWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgKG9iamZpbGVfYWRkcnMsIGRlYnVnX29iamZpbGUtPm9i ZmQpOwotKwotKyAgICAgIGdkYl9hc3NlcnQgKGRlYnVnX29iamZpbGUtPm51bV9zZWN0aW9ucwot KwkJICA9PSBiZmRfY291bnRfc2VjdGlvbnMgKGRlYnVnX29iamZpbGUtPm9iZmQpKTsKLSsgICAg ICBuZXdfZGVidWdfb2Zmc2V0cyA9IGFsbG9jYSAoU0laRU9GX05fU0VDVElPTl9PRkZTRVRTCi0r CQkJCQkJIChkZWJ1Z19vYmpmaWxlLT5udW1fc2VjdGlvbnMpKTsKLSsgICAgICByZWxhdGl2ZV9h ZGRyX2luZm9fdG9fc2VjdGlvbl9vZmZzZXRzIChuZXdfZGVidWdfb2Zmc2V0cywKLSsJCQkJCSAg ICAgZGVidWdfb2JqZmlsZS0+bnVtX3NlY3Rpb25zLAotKwkJCQkJICAgICBvYmpmaWxlX2FkZHJz KTsKLSsgICAgICBkb19jbGVhbnVwcyAobXlfY2xlYW51cHMpOwotKwotKyAgICAgIG9iamZpbGVf cmVsb2NhdGUxIChkZWJ1Z19vYmpmaWxlLCBuZXdfZGVidWdfb2Zmc2V0cyk7Ci0rICAgIH0KLSAK LSAgIC8qIFJlbG9jYXRlIGJyZWFrcG9pbnRzIGFzIG5lY2Vzc2FyeSwgYWZ0ZXIgdGhpbmdzIGFy ZSByZWxvY2F0ZWQuICovCi0gICBicmVha3BvaW50X3JlX3NldCAoKTsKLWRpZmYgLS1naXQgYS9n ZGIvcHJvY2ZzLmMgYi9nZGIvcHJvY2ZzLmMKLWluZGV4IGI1NjliYWMuLjE1ODI5YzIgMTAwNjQ0 Ci0tLS0gYS9nZGIvcHJvY2ZzLmMKLSsrKyBiL2dkYi9wcm9jZnMuYwotQEAgLTQzNzYsNyArNDM3 Niw3IEBAIHByb2Nmc194ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0g dGFyZ2V0X29iamVjdCBvYmplY3QsCi0gCi0gI2lmZGVmIE5FV19QUk9DX0FQSQotICAgICBjYXNl IFRBUkdFVF9PQkpFQ1RfQVVYVjoKLS0gICAgICByZXR1cm4gcHJvY2ZzX3hmZXJfYXV4diAob3Bz LCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKLSsgICAgICByZXR1cm4gbWVtb3J5 X3hmZXJfYXV4diAob3BzLCBvYmplY3QsIGFubmV4LCByZWFkYnVmLCB3cml0ZWJ1ZiwKLSAJCQkg ICAgICAgb2Zmc2V0LCBsZW4pOwotICNlbmRpZgotIAotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1k YXJ3aW4uYyBiL2dkYi9zb2xpYi1kYXJ3aW4uYwotaW5kZXggOTQyOGQ5Mi4uMzU5MTE2OCAxMDA2 NDQKLS0tLSBhL2dkYi9zb2xpYi1kYXJ3aW4uYwotKysrIGIvZ2RiL3NvbGliLWRhcndpbi5jCi1A QCAtMjc3LDcgKzI3Nyw3IEBAIGRhcndpbl9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkK LSAKLSAvKiBTaGFyZWQgbGlicmFyeSBzdGFydHVwIHN1cHBvcnQuICBTZWUgZG9jdW1lbnRhdGlv biBpbiBzb2xpYi1zdnI0LmMgICovCi0gc3RhdGljIHZvaWQKLS1kYXJ3aW5fc29saWJfY3JlYXRl X2luZmVyaW9yX2hvb2sgKHZvaWQpCi0rZGFyd2luX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29r IChpbnQgZnJvbV90dHkpCi0gewotICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sOwot ICAgY2hhciAqKmJrcHRfbmFtZXA7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLWZydi5jIGIvZ2Ri L3NvbGliLWZydi5jCi1pbmRleCBiOGQ1NTI4Li4wMDJjNTg5IDEwMDY0NAotLS0tIGEvZ2RiL3Nv bGliLWZydi5jCi0rKysgYi9nZGIvc29saWItZnJ2LmMKLUBAIC05NzEsNyArOTcxLDcgQEAgZnJ2 X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCkKLSAgKi8KLSAKLSBzdGF0aWMgdm9pZAot LWZydl9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKLStmcnZfc29saWJfY3JlYXRl X2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSB7Ci0gICAvKiBSZWxvY2F0ZSBtYWluIGV4 ZWN1dGFibGUuICAqLwotICAgZnJ2X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoKTsKLWRpZmYg LS1naXQgYS9nZGIvc29saWItaXJpeC5jIGIvZ2RiL3NvbGliLWlyaXguYwotaW5kZXggYTBjMWNk Mi4uZjk0ZjdkYyAxMDA2NDQKLS0tLSBhL2dkYi9zb2xpYi1pcml4LmMKLSsrKyBiL2dkYi9zb2xp Yi1pcml4LmMKLUBAIC0zODYsNyArMzg2LDcgQEAgZW5hYmxlX2JyZWFrICh2b2lkKQotIAotICAg IFNZTk9QU0lTCi0gCi0tICAgdm9pZCBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoKQotKyAg IHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSAKLSAgICBE RVNDUklQVElPTgotIAotQEAgLTQzMSw3ICs0MzEsNyBAQCBlbmFibGVfYnJlYWsgKHZvaWQpCi0g ICovCi0gCi0gc3RhdGljIHZvaWQKLS1pcml4X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2 b2lkKQotK2lyaXhfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSB7 Ci0gICBzdHJ1Y3QgaW5mZXJpb3IgKmluZjsKLSAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7Ci1k aWZmIC0tZ2l0IGEvZ2RiL3NvbGliLW51bGwuYyBiL2dkYi9zb2xpYi1udWxsLmMKLWluZGV4IGIz OWNjZGIuLjg3Zjc4NDggMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItbnVsbC5jCi0rKysgYi9nZGIv c29saWItbnVsbC5jCi1AQCAtMzIsNyArMzIsNyBAQCBudWxsX3NwZWNpYWxfc3ltYm9sX2hhbmRs aW5nICh2b2lkKQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLW51bGxfc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKHZvaWQpCi0rbnVsbF9zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZy b21fdHR5KQotIHsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLW9zZi5jIGIvZ2RiL3Nv bGliLW9zZi5jCi1pbmRleCBjMjk1MzM1Li4wYWNjN2ZiIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGli LW9zZi5jCi0rKysgYi9nZGIvc29saWItb3NmLmMKLUBAIC0zMDYsNyArMzA2LDcgQEAgb3NmX2Ns ZWFyX3NvbGliICh2b2lkKQotICAgIEFsc28sIHdoYXQgaWYgY2hpbGQgaGFzIGV4aXQoKWVkPyAg TXVzdCBleGl0IGxvb3Agc29tZWhvdy4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1vc2Zfc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCi0rb3NmX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rIChpbnQgZnJvbV90dHkpCi0gewotICAgc3RydWN0IGluZmVyaW9yICppbmY7Ci0gICBzdHJ1 Y3QgdGhyZWFkX2luZm8gKnRwOwotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1wYTY0LmMgYi9nZGIv c29saWItcGE2NC5jCi1pbmRleCA2MzdmYzFhLi4xNmQ0MDEwIDEwMDY0NAotLS0tIGEvZ2RiL3Nv bGliLXBhNjQuYwotKysrIGIvZ2RiL3NvbGliLXBhNjQuYwotQEAgLTMyOSw3ICszMjksNyBAQCBi ZmRfbG9va3VwX3N5bWJvbCAoYmZkICphYmZkLCBjaGFyICpzeW1uYW1lKQotICAgIHdpdGggc2hh cmVkIGxpYnJhcmllcyBtYXBwZWQgc2hhcmVhYmxlLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLXBh NjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCi0rcGE2NF9zb2xpYl9jcmVhdGVf aW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsKLSAgIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbXN5bWJvbDsKLSAgIHVuc2lnbmVkIGludCBkbGRfZmxhZ3MsIHN0YXR1czsKLWRpZmYgLS1n aXQgYS9nZGIvc29saWItc29tLmMgYi9nZGIvc29saWItc29tLmMKLWluZGV4IDE2ZjAwYTMuLjM3 YWM4Y2QgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc29tLmMKLSsrKyBiL2dkYi9zb2xpYi1zb20u YwotQEAgLTE4Miw3ICsxODIsNyBAQCBzdHJ1Y3QgewotICAgIG1lYW5zIHJ1bm5pbmcgdW50aWwg dGhlICJfc3RhcnQiIGlzIGNhbGxlZC4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1zb21fc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKHZvaWQpCi0rc29tX3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rIChpbnQgZnJvbV90dHkpCi0gewotICAgZW51bSBiZmRfZW5kaWFuIGJ5dGVfb3JkZXIgPSBn ZGJhcmNoX2J5dGVfb3JkZXIgKHRhcmdldF9nZGJhcmNoKTsKLSAgIHN0cnVjdCBtaW5pbWFsX3N5 bWJvbCAqbXN5bWJvbDsKLWRpZmYgLS1naXQgYS9nZGIvc29saWItc3B1LmMgYi9nZGIvc29saWIt c3B1LmMKLWluZGV4IDlmMDZmYTkuLjQ1ZTdlNjkgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItc3B1 LmMKLSsrKyBiL2dkYi9zb2xpYi1zcHUuYwotQEAgLTUyLDI1ICs1MiwxOSBAQAotIHN0YXRpYyB2 b2lkCi0gc3B1X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAoaW50IHNwdWZzX2ZkKQotIHsKLS0g IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotLSAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsK LSAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZzZXRzOwotICAgaW50IGk7Ci0gCi0t ICBmb3IgKG9iamZpbGUgPSBzeW1maWxlX29iamZpbGU7Ci0tICAgICAgIG9iamZpbGU7Ci0tICAg ICAgIG9iamZpbGUgPSBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlKQotLSAgICB7Ci0t ICAgICAgbmV3X29mZnNldHMgPSB4Y2FsbG9jIChvYmpmaWxlLT5udW1fc2VjdGlvbnMsCi0tCQkJ ICAgICBzaXplb2YgKHN0cnVjdCBzZWN0aW9uX29mZnNldHMpKTsKLS0gICAgICBvbGRfY2hhaW4g PSBtYWtlX2NsZWFudXAgKHhmcmVlLCBuZXdfb2Zmc2V0cyk7Ci0rICBpZiAoc3ltZmlsZV9vYmpm aWxlID09IE5VTEwpCi0rICAgIHJldHVybjsKLSAKLS0gICAgICBmb3IgKGkgPSAwOyBpIDwgb2Jq ZmlsZS0+bnVtX3NlY3Rpb25zOyBpKyspCi0tICAgICAgICBuZXdfb2Zmc2V0cy0+b2Zmc2V0c1tp XSA9IFNQVUFERFIgKHNwdWZzX2ZkLCAwKTsKLSsgIG5ld19vZmZzZXRzID0gYWxsb2NhIChzeW1m aWxlX29iamZpbGUtPm51bV9zZWN0aW9ucwotKwkJCSogc2l6ZW9mIChzdHJ1Y3Qgc2VjdGlvbl9v ZmZzZXRzKSk7Ci0gCi0tICAgICAgb2JqZmlsZV9yZWxvY2F0ZSAob2JqZmlsZSwgbmV3X29mZnNl dHMpOwotLSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotLSAgICB9Ci0rICBmb3IgKGkg PSAwOyBpIDwgc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnM7IGkrKykKLSsgICAgbmV3X29m ZnNldHMtPm9mZnNldHNbaV0gPSBTUFVBRERSIChzcHVmc19mZCwgMCk7Ci0rCi0rICBvYmpmaWxl X3JlbG9jYXRlIChzeW1maWxlX29iamZpbGUsIG5ld19vZmZzZXRzKTsKLSB9Ci0gCi0gLyogV2hl biBydW5uaW5nIGEgc3RhbmQtYWxvbmUgU1BFIGV4ZWN1dGFibGUsIHdlIG1heSBuZWVkIHRvIHNr aXAgb25lIG1vcmUKLUBAIC0zNzAsNyArMzY0LDcgQEAgc3B1X2VuYWJsZV9icmVhayAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCi0gCi0gLyogQ3JlYXRlIGluZmVyaW9yIGhvb2suICAqLwotIHN0 YXRpYyB2b2lkCi0tc3B1X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICh2b2lkKQotK3NwdV9z b2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsKLSAgIC8qIFJlbW92 ZSBhbGwgcHJldmlvdXNseSBpbnN0YWxsZWQgc29saWIgYnJlYWtwb2ludHMuICBCb3RoIHRoZSBT VlI0Ci0gICAgICBjb2RlIGFuZCB1cyB3aWxsIHJlLWluc3RhbGwgYWxsIHJlcXVpcmVkIGJyZWFr cG9pbnRzLiAgKi8KLUBAIC00MDEsNyArMzk1LDcgQEAgc3B1X3NvbGliX2NyZWF0ZV9pbmZlcmlv cl9ob29rICh2b2lkKQotICAgICB9Ci0gCi0gICAvKiBDYWxsIFNWUjQgaG9vayAtLSB0aGlzIHdp bGwgcmUtaW5zZXJ0IHRoZSBTVlI0IHNvbGliIGJyZWFrcG9pbnRzLiAgKi8KLS0gIHN2cjRfc29f b3BzLnNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgpOwotKyAgc3ZyNF9zb19vcHMuc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKGZyb21fdHR5KTsKLSAKLSAgIC8qIElmIHRoZSBpbmZlcmlv ciBpcyBzdGF0aWNhbGx5IGxpbmtlZCBhZ2FpbnN0IGxpYnNwZSwgd2UgbmVlZCB0byBpbnN0YWxs Ci0gICAgICBvdXIgb3duIHNvbGliIGJyZWFrcG9pbnQgcmlnaHQgbm93LiAgT3RoZXJ3aXNlLCBp dCB3aWxsIGJlIGluc3RhbGxlZCBieQotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdW5vcy5jIGIv Z2RiL3NvbGliLXN1bm9zLmMKLWluZGV4IDliMmE0NzAuLmIyYTE0N2QgMTAwNjQ0Ci0tLS0gYS9n ZGIvc29saWItc3Vub3MuYwotKysrIGIvZ2RiL3NvbGliLXN1bm9zLmMKLUBAIC03NDAsNyArNzQw LDcgQEAgc3Vub3Nfc3BlY2lhbF9zeW1ib2xfaGFuZGxpbmcgKHZvaWQpCi0gICovCi0gCi0gc3Rh dGljIHZvaWQKLS1zdW5vc19zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKLStzdW5v c19zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsKLSAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdHA7Ci0gICBzdHJ1Y3QgaW5mZXJpb3IgKmluZjsKLWRpZmYgLS1naXQg YS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYwotaW5kZXggNjhhYWRjMC4uZWZi ZTcxNyAxMDA2NDQKLS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKLSsrKyBiL2dkYi9zb2xpYi1zdnI0 LmMKLUBAIC01MCw2ICs1MCw3IEBACi0gCi0gc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRz ICpzdnI0X2ZldGNoX2xpbmtfbWFwX29mZnNldHMgKHZvaWQpOwotIHN0YXRpYyBpbnQgc3ZyNF9o YXZlX2xpbmtfbWFwX29mZnNldHMgKHZvaWQpOwotK3N0YXRpYyB2b2lkIHN2cjRfcmVsb2NhdGVf bWFpbl9leGVjdXRhYmxlICh2b2lkKTsKLSAKLSAvKiBMaW5rIG1hcCBpbmZvIHRvIGluY2x1ZGUg aW4gYW4gYWxsb2NhdGVkIHNvX2xpc3QgZW50cnkgKi8KLSAKLUBAIC01OTksMTEgKzYwMCwxMiBA QCBzY2FuX2R5bnRhZyAoaW50IGR5bnRhZywgYmZkICphYmZkLCBDT1JFX0FERFIgKnB0cikKLSB7 Ci0gICBpbnQgYXJjaF9zaXplLCBzdGVwLCBzZWN0X3NpemU7Ci0gICBsb25nIGR5bl90YWc7Ci0t ICBDT1JFX0FERFIgZHluX3B0ciwgZHluX2FkZHI7Ci0rICBDT1JFX0FERFIgZHluX3B0cjsKLSAg IGdkYl9ieXRlICpidWZlbmQsICpidWZzdGFydCwgKmJ1ZjsKLSAgIEVsZjMyX0V4dGVybmFsX0R5 biAqeF9keW5wXzMyOwotICAgRWxmNjRfRXh0ZXJuYWxfRHluICp4X2R5bnBfNjQ7Ci0gICBzdHJ1 Y3QgYmZkX3NlY3Rpb24gKnNlY3Q7Ci0rICBzdHJ1Y3QgdGFyZ2V0X3NlY3Rpb24gKnRhcmdldF9z ZWN0aW9uOwotIAotICAgaWYgKGFiZmQgPT0gTlVMTCkKLSAgICAgcmV0dXJuIDA7Ci1AQCAtNjE5 LDcgKzYyMSwxMyBAQCBzY2FuX2R5bnRhZyAoaW50IGR5bnRhZywgYmZkICphYmZkLCBDT1JFX0FE RFIgKnB0cikKLSAgIHNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoYWJmZCwgIi5keW5h bWljIik7Ci0gICBpZiAoc2VjdCA9PSBOVUxMKQotICAgICByZXR1cm4gMDsKLS0gIGR5bl9hZGRy ID0gYmZkX3NlY3Rpb25fdm1hIChhYmZkLCBzZWN0KTsKLSsKLSsgIGZvciAodGFyZ2V0X3NlY3Rp b24gPSB0YXJnZXRfZ2V0X3NlY3Rpb25fdGFibGUgKCZleGVjX29wcyktPnNlY3Rpb25zOwotKyAg ICAgICB0YXJnZXRfc2VjdGlvbiA8IHRhcmdldF9nZXRfc2VjdGlvbl90YWJsZSAoJmV4ZWNfb3Bz KS0+c2VjdGlvbnNfZW5kOwotKyAgICAgICB0YXJnZXRfc2VjdGlvbisrKQotKyAgICBpZiAoc2Vj dCA9PSB0YXJnZXRfc2VjdGlvbi0+dGhlX2JmZF9zZWN0aW9uKQotKyAgICAgIGJyZWFrOwotKyAg Z2RiX2Fzc2VydCAodGFyZ2V0X3NlY3Rpb24gPCB0YXJnZXRfZ2V0X3NlY3Rpb25fdGFibGUgKCZl eGVjX29wcyktPnNlY3Rpb25zX2VuZCk7Ci0gCi0gICAvKiBSZWFkIGluIC5keW5hbWljIGZyb20g dGhlIEJGRC4gIFdlIHdpbGwgZ2V0IHRoZSBhY3R1YWwgdmFsdWUKLSAgICAgIGZyb20gbWVtb3J5 IGxhdGVyLiAgKi8KLUBAIC02NjEsNyArNjY5LDcgQEAgc2Nhbl9keW50YWcgKGludCBkeW50YWcs IGJmZCAqYWJmZCwgQ09SRV9BRERSICpwdHIpCi0gCSAgICAgQ09SRV9BRERSIHB0cl9hZGRyOwot IAotIAkgICAgIHB0cl90eXBlID0gYnVpbHRpbl90eXBlICh0YXJnZXRfZ2RiYXJjaCktPmJ1aWx0 aW5fZGF0YV9wdHI7Ci0tCSAgICAgcHRyX2FkZHIgPSBkeW5fYWRkciArIChidWYgLSBidWZzdGFy dCkgKyBhcmNoX3NpemUgLyA4OwotKwkgICAgIHB0cl9hZGRyID0gdGFyZ2V0X3NlY3Rpb24tPmFk ZHIgKyAoYnVmIC0gYnVmc3RhcnQpICsgYXJjaF9zaXplIC8gODsKLSAJICAgICBpZiAodGFyZ2V0 X3JlYWRfbWVtb3J5IChwdHJfYWRkciwgcHRyX2J1ZiwgYXJjaF9zaXplIC8gOCkgPT0gMCkKLSAJ ICAgICAgIGR5bl9wdHIgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKHB0cl9idWYsIHB0cl90eXBl KTsKLSAJICAgICAqcHRyID0gZHluX3B0cjsKLUBAIC0xMjU4LDcgKzEyNjYsNyBAQCBleGVjX2Vu dHJ5X3BvaW50IChzdHJ1Y3QgYmZkICphYmZkLCBzdHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZykKLSAg Ki8KLSAKLSBzdGF0aWMgaW50Ci0tZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZv KQotK2VuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5mbyAqaW5mbywgaW50IGZyb21fdHR5KQot IHsKLSAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbDsKLSAgIGNoYXIgKipia3B0X25h bWVwOwotQEAgLTEyNzksNyArMTI4Nyw3IEBAIGVuYWJsZV9icmVhayAoc3RydWN0IHN2cjRfaW5m byAqaW5mbykKLSAgICAgIG1lYW4gcl9icmsgaGFzIGFscmVhZHkgYmVlbiByZWxvY2F0ZWQuICBB c3N1bWUgdGhlIGR5bmFtaWMgbGlua2VyCi0gICAgICBpcyB0aGUgb2JqZWN0IGNvbnRhaW5pbmcg cl9icmsuICAqLwotIAotLSAgc29saWJfYWRkIChOVUxMLCAwLCAmY3VycmVudF90YXJnZXQsIGF1 dG9fc29saWJfYWRkKTsKLSsgIHNvbGliX2FkZCAoTlVMTCwgZnJvbV90dHksICZjdXJyZW50X3Rh cmdldCwgYXV0b19zb2xpYl9hZGQpOwotICAgc3ltX2FkZHIgPSAwOwotICAgaWYgKGluZm8tPmRl YnVnX2Jhc2UgJiYgc29saWJfc3ZyNF9yX21hcCAoaW5mbykgIT0gMCkKLSAgICAgc3ltX2FkZHIg PSBzb2xpYl9zdnI0X3JfYnJrIChpbmZvKTsKLUBAIC0xMzM5LDYgKzEzNDcsMTEgQEAgZW5hYmxl X2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotICAgICAgIGJmZCAqdG1wX2JmZCA9IE5V TEw7Ci0gICAgICAgc3RydWN0IHRhcmdldF9vcHMgKnRtcF9iZmRfdGFyZ2V0OwotICAgICAgIHZv bGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4OwotKyAgICAgIGludCBhZGRyX2JpdCA9IGdk YmFyY2hfYWRkcl9iaXQgKHRhcmdldF9nZGJhcmNoKTsKLSsgICAgICBDT1JFX0FERFIgbWFzayA9 IENPUkVfQUREUl9NQVg7Ci0rCi0rICAgICAgaWYgKGFkZHJfYml0IDwgKHNpemVvZiAoQ09SRV9B RERSKSAqIEhPU1RfQ0hBUl9CSVQpKQotKwltYXNrID0gKChDT1JFX0FERFIpIDEgPDwgYWRkcl9i aXQpIC0gMTsKLSAKLSAgICAgICBzeW1fYWRkciA9IDA7Ci0gCi1AQCAtMTQwNCw3ICsxNDE3LDcg QEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotIAkgIGluZm8tPmRlYnVn X2xvYWRlcl9uYW1lID0geHN0cmR1cCAoaW50ZXJwX25hbWUpOwotIAkgIGluZm8tPmRlYnVnX2xv YWRlcl9vZmZzZXRfcCA9IDE7Ci0gCSAgaW5mby0+ZGVidWdfbG9hZGVyX29mZnNldCA9IGxvYWRf YWRkcjsKLS0JICBzb2xpYl9hZGQgKE5VTEwsIDAsICZjdXJyZW50X3RhcmdldCwgYXV0b19zb2xp Yl9hZGQpOwotKwkgIHNvbGliX2FkZCAoTlVMTCwgZnJvbV90dHksICZjdXJyZW50X3RhcmdldCwg YXV0b19zb2xpYl9hZGQpOwotIAl9Ci0gCi0gICAgICAgLyogUmVjb3JkIHRoZSByZWxvY2F0ZWQg c3RhcnQgYW5kIGVuZCBhZGRyZXNzIG9mIHRoZSBkeW5hbWljIGxpbmtlcgotQEAgLTE0MTQsMTYg KzE0MjcsMjAgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICppbmZvKQotIAl7Ci0g CSAgaW50ZXJwX3RleHRfc2VjdF9sb3cgPQotIAkgICAgYmZkX3NlY3Rpb25fdm1hICh0bXBfYmZk LCBpbnRlcnBfc2VjdCkgKyBsb2FkX2FkZHI7Ci0rCSAgaW50ZXJwX3RleHRfc2VjdF9sb3cgJj0g bWFzazsKLSAJICBpbnRlcnBfdGV4dF9zZWN0X2hpZ2ggPQotIAkgICAgaW50ZXJwX3RleHRfc2Vj dF9sb3cgKyBiZmRfc2VjdGlvbl9zaXplICh0bXBfYmZkLCBpbnRlcnBfc2VjdCk7Ci0rCSAgaW50 ZXJwX3RleHRfc2VjdF9oaWdoICY9IG1hc2s7Ci0gCX0KLSAgICAgICBpbnRlcnBfc2VjdCA9IGJm ZF9nZXRfc2VjdGlvbl9ieV9uYW1lICh0bXBfYmZkLCAiLnBsdCIpOwotICAgICAgIGlmIChpbnRl cnBfc2VjdCkKLSAJewotIAkgIGludGVycF9wbHRfc2VjdF9sb3cgPQotIAkgICAgYmZkX3NlY3Rp b25fdm1hICh0bXBfYmZkLCBpbnRlcnBfc2VjdCkgKyBsb2FkX2FkZHI7Ci0rCSAgaW50ZXJwX3Rl eHRfc2VjdF9sb3cgJj0gbWFzazsKLSAJICBpbnRlcnBfcGx0X3NlY3RfaGlnaCA9Ci0gCSAgICBp bnRlcnBfcGx0X3NlY3RfbG93ICsgYmZkX3NlY3Rpb25fc2l6ZSAodG1wX2JmZCwgaW50ZXJwX3Nl Y3QpOwotKwkgIGludGVycF90ZXh0X3NlY3RfaGlnaCAmPSBtYXNrOwotIAl9Ci0gCi0gICAgICAg LyogTm93IHRyeSB0byBzZXQgYSBicmVha3BvaW50IGluIHRoZSBkeW5hbWljIGxpbmtlci4gICov Ci1AQCAtMTQ0OCw3ICsxNDY1LDcgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZvICpp bmZvKQotIAotICAgICAgIGlmIChzeW1fYWRkciAhPSAwKQotIAl7Ci0tCSAgY3JlYXRlX3NvbGli X2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoLCBsb2FkX2FkZHIgKyBzeW1fYWRkcik7 Ci0rCSAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoLCAobG9h ZF9hZGRyICsgc3ltX2FkZHIpICYgbWFzayk7Ci0gCSAgeGZyZWUgKGludGVycF9uYW1lKTsKLSAJ ICByZXR1cm4gMTsKLSAJfQotQEAgLTE1MTcsMTEzICsxNTM0LDEzMSBAQCBlbmFibGVfYnJlYWsg KHN0cnVjdCBzdnI0X2luZm8gKmluZm8pCi0gc3RhdGljIHZvaWQKLSBzdnI0X3NwZWNpYWxfc3lt Ym9sX2hhbmRsaW5nICh2b2lkKQotIHsKLSsgIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxl ICgpOwotIH0KLSAKLS0vKiBSZWxvY2F0ZSB0aGUgbWFpbiBleGVjdXRhYmxlLiAgVGhpcyBmdW5j dGlvbiBzaG91bGQgYmUgY2FsbGVkIHVwb24KLS0gICBzdG9wcGluZyB0aGUgaW5mZXJpb3IgcHJv Y2VzcyBhdCB0aGUgZW50cnkgcG9pbnQgdG8gdGhlIHByb2dyYW0uIAotLSAgIFRoZSBlbnRyeSBw b2ludCBmcm9tIEJGRCBpcyBjb21wYXJlZCB0byB0aGUgUEMgYW5kIGlmIHRoZXkgYXJlCi0tICAg ZGlmZmVyZW50LCB0aGUgbWFpbiBleGVjdXRhYmxlIGlzIHJlbG9jYXRlZCBieSB0aGUgcHJvcGVy IGFtb3VudC4gCi0rLyogRGVjaWRlIGlmIHRoZSBvYmpmaWxlIG5lZWRzIHRvIGJlIHJlbG9jYXRl ZC4gIEFzIGluZGljYXRlZCBhYm92ZSwKLSsgICB3ZSB3aWxsIG9ubHkgYmUgaGVyZSB3aGVuIGV4 ZWN1dGlvbiBpcyBzdG9wcGVkIGF0IHRoZSBiZWdpbm5pbmcKLSsgICBvZiB0aGUgcHJvZ3JhbS4g IFJlbG9jYXRpb24gaXMgbmVjZXNzYXJ5IGlmIHRoZSBhZGRyZXNzIGF0IHdoaWNoCi0rICAgd2Ug YXJlIHByZXNlbnRseSBzdG9wcGVkIGRpZmZlcnMgZnJvbSB0aGUgc3RhcnQgYWRkcmVzcyBzdG9y ZWQgaW4KLSsgICB0aGUgZXhlY3V0YWJsZSBBTkQgdGhlcmUncyBubyBpbnRlcnByZXRlciBzZWN0 aW9uLiAgVGhlIGNvbmRpdGlvbgotKyAgIHJlZ2FyZGluZyB0aGUgaW50ZXJwcmV0ZXIgc2VjdGlv biBpcyB2ZXJ5IGltcG9ydGFudCBiZWNhdXNlIGlmCi0rICAgdGhlcmUgKmlzKiBhbiBpbnRlcnBy ZXRlciBzZWN0aW9uLCBleGVjdXRpb24gd2lsbCBiZWdpbiB0aGVyZQotKyAgIGluc3RlYWQuICBX aGVuIHRoZXJlIGlzIGFuIGludGVycHJldGVyIHNlY3Rpb24sIHRoZSBzdGFydCBhZGRyZXNzCi0r ICAgaXMgKHByZXN1bWFibHkpIHVzZWQgYnkgdGhlIGludGVycHJldGVyIGF0IHNvbWUgcG9pbnQg dG8gc3RhcnQKLSsgICBleGVjdXRpb24gb2YgdGhlIHByb2dyYW0uCi0rCi0rICAgSWYgdGhlcmUg aXMgYW4gaW50ZXJwcmV0ZXIsIGl0IGlzIG5vcm1hbCBmb3IgaXQgdG8gYmUgc2V0IHRvIGFuCi0r ICAgYXJiaXRyYXJ5IGFkZHJlc3MgYXQgdGhlIG91dHNldC4gIFRoZSBqb2Igb2YgZmluZGluZyBp dCBpcwotKyAgIGhhbmRsZWQgaW4gZW5hYmxlX2JyZWFrKCkuCi0rCi0rICAgU28sIHRvIHN1bW1h cml6ZSwgcmVsb2NhdGlvbnMgYXJlIG5lY2Vzc2FyeSB3aGVuIHRoZXJlIGlzIG5vCi0rICAgaW50 ZXJwcmV0ZXIgc2VjdGlvbiBhbmQgdGhlIHN0YXJ0IGFkZHJlc3Mgb2J0YWluZWQgZnJvbSB0aGUK LSsgICBleGVjdXRhYmxlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBhZGRyZXNzIGF0IHdoaWNoIEdE QiBpcwotKyAgIGN1cnJlbnRseSBzdG9wcGVkLgotICAgIAotLSAgIEFzIHdyaXR0ZW4gaXQgd2ls bCBvbmx5IGF0dGVtcHQgdG8gcmVsb2NhdGUgZXhlY3V0YWJsZXMgd2hpY2gKLS0gICBsYWNrIGlu dGVycHJldGVyIHNlY3Rpb25zLiAgSXQgc2VlbXMgbGlrZWx5IHRoYXQgb25seSBkeW5hbWljCi0t ICAgbGlua2VyIGV4ZWN1dGFibGVzIHdpbGwgZ2V0IHJlbG9jYXRlZCwgdGhvdWdoIGl0IHNob3Vs ZCB3b3JrCi0tICAgcHJvcGVybHkgZm9yIGEgcG9zaXRpb24taW5kZXBlbmRlbnQgc3RhdGljIGV4 ZWN1dGFibGUgYXMgd2VsbC4gICovCi0rICAgWyBUaGUgYXN0dXRlIHJlYWRlciB3aWxsIG5vdGUg dGhhdCB3ZSBhbHNvIHRlc3QgdG8gbWFrZSBzdXJlIHRoYXQKLSsgICAgIHRoZSBleGVjdXRhYmxl IGluIHF1ZXN0aW9uIGhhcyB0aGUgRFlOQU1JQyBmbGFnIHNldC4gIEl0IGlzIG15Ci0rICAgICBv cGluaW9uIHRoYXQgdGhpcyB0ZXN0IGlzIHVubmVjZXNzYXJ5ICh1bmRlc2lyYWJsZSBldmVuKS4g IEl0Ci0rICAgICB3YXMgYWRkZWQgdG8gYXZvaWQgaW5hZHZlcnRlbnQgcmVsb2NhdGlvbiBvZiBh biBleGVjdXRhYmxlCi0rICAgICB3aG9zZSBlX3R5cGUgbWVtYmVyIGluIHRoZSBFTEYgaGVhZGVy IGlzIG5vdCBFVF9EWU4uICBUaGVyZSBtYXkKLSsgICAgIGJlIGEgdGltZSBpbiB0aGUgZnV0dXJl IHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIGRvIHJlbG9jYXRpb25zCi0rICAgICBvbiBvdGhlciB0 eXBlcyBvZiBmaWxlcyBhcyB3ZWxsIGluIHdoaWNoIGNhc2UgdGhpcyBjb25kaXRpb24KLSsgICAg IHNob3VsZCBlaXRoZXIgYmUgcmVtb3ZlZCBvciBtb2RpZmllZCB0byBhY2NvbW9kYXRlIHRoZSBu ZXcgZmlsZQotKyAgICAgdHlwZS4gIChFLmcsIGFuIEVUX0VYRUMgZXhlY3V0YWJsZSB3aGljaCBo YXMgYmVlbiBidWlsdCB0byBiZQotKyAgICAgcG9zaXRpb24taW5kZXBlbmRlbnQgY291bGQgc2Fm ZWx5IGJlIHJlbG9jYXRlZCBieSB0aGUgT1MgaWYKLSsgICAgIGRlc2lyZWQuICBJdCBpcyB0cnVl IHRoYXQgdGhpcyB2aW9sYXRlcyB0aGUgQUJJLCBidXQgdGhlIEFCSQotKyAgICAgaGFzIGJlZW4g a25vd24gdG8gYmUgYmVudCBmcm9tIHRpbWUgdG8gdGltZS4pICAtIEtldmluLCBOb3YgMjAwMC4g XQotKyAgICovCi0gCi0tc3RhdGljIHZvaWQKLS1zdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJs ZSAodm9pZCkKLStzdGF0aWMgQ09SRV9BRERSCi0rc3ZyNF9zdGF0aWNfZXhlY19kaXNwbGFjZW1l bnQgKHZvaWQpCi0gewotICAgYXNlY3Rpb24gKmludGVycF9zZWN0OwotICAgc3RydWN0IHJlZ2Nh Y2hlICpyZWdjYWNoZQotICAgICA9IGdldF90aHJlYWRfYXJjaF9yZWdjYWNoZSAoaW5mZXJpb3Jf cHRpZCwgdGFyZ2V0X2dkYmFyY2gpOwotICAgQ09SRV9BRERSIHBjID0gcmVnY2FjaGVfcmVhZF9w YyAocmVnY2FjaGUpOwotIAotLSAgLyogRGVjaWRlIGlmIHRoZSBvYmpmaWxlIG5lZWRzIHRvIGJl IHJlbG9jYXRlZC4gIEFzIGluZGljYXRlZCBhYm92ZSwKLS0gICAgIHdlIHdpbGwgb25seSBiZSBo ZXJlIHdoZW4gZXhlY3V0aW9uIGlzIHN0b3BwZWQgYXQgdGhlIGJlZ2lubmluZwotLSAgICAgb2Yg dGhlIHByb2dyYW0uICBSZWxvY2F0aW9uIGlzIG5lY2Vzc2FyeSBpZiB0aGUgYWRkcmVzcyBhdCB3 aGljaAotLSAgICAgd2UgYXJlIHByZXNlbnRseSBzdG9wcGVkIGRpZmZlcnMgZnJvbSB0aGUgc3Rh cnQgYWRkcmVzcyBzdG9yZWQgaW4KLS0gICAgIHRoZSBleGVjdXRhYmxlIEFORCB0aGVyZSdzIG5v IGludGVycHJldGVyIHNlY3Rpb24uICBUaGUgY29uZGl0aW9uCi0tICAgICByZWdhcmRpbmcgdGhl IGludGVycHJldGVyIHNlY3Rpb24gaXMgdmVyeSBpbXBvcnRhbnQgYmVjYXVzZSBpZgotLSAgICAg dGhlcmUgKmlzKiBhbiBpbnRlcnByZXRlciBzZWN0aW9uLCBleGVjdXRpb24gd2lsbCBiZWdpbiB0 aGVyZQotLSAgICAgaW5zdGVhZC4gIFdoZW4gdGhlcmUgaXMgYW4gaW50ZXJwcmV0ZXIgc2VjdGlv biwgdGhlIHN0YXJ0IGFkZHJlc3MKLS0gICAgIGlzIChwcmVzdW1hYmx5KSB1c2VkIGJ5IHRoZSBp bnRlcnByZXRlciBhdCBzb21lIHBvaW50IHRvIHN0YXJ0Ci0tICAgICBleGVjdXRpb24gb2YgdGhl IHByb2dyYW0uCi0tCi0tICAgICBJZiB0aGVyZSBpcyBhbiBpbnRlcnByZXRlciwgaXQgaXMgbm9y bWFsIGZvciBpdCB0byBiZSBzZXQgdG8gYW4KLS0gICAgIGFyYml0cmFyeSBhZGRyZXNzIGF0IHRo ZSBvdXRzZXQuICBUaGUgam9iIG9mIGZpbmRpbmcgaXQgaXMKLS0gICAgIGhhbmRsZWQgaW4gZW5h YmxlX2JyZWFrKCkuCi0tCi0tICAgICBTbywgdG8gc3VtbWFyaXplLCByZWxvY2F0aW9ucyBhcmUg bmVjZXNzYXJ5IHdoZW4gdGhlcmUgaXMgbm8KLS0gICAgIGludGVycHJldGVyIHNlY3Rpb24gYW5k IHRoZSBzdGFydCBhZGRyZXNzIG9idGFpbmVkIGZyb20gdGhlCi0tICAgICBleGVjdXRhYmxlIGlz IGRpZmZlcmVudCBmcm9tIHRoZSBhZGRyZXNzIGF0IHdoaWNoIEdEQiBpcwotLSAgICAgY3VycmVu dGx5IHN0b3BwZWQuCi0tICAgICAKLS0gICAgIFsgVGhlIGFzdHV0ZSByZWFkZXIgd2lsbCBub3Rl IHRoYXQgd2UgYWxzbyB0ZXN0IHRvIG1ha2Ugc3VyZSB0aGF0Ci0tICAgICAgIHRoZSBleGVjdXRh YmxlIGluIHF1ZXN0aW9uIGhhcyB0aGUgRFlOQU1JQyBmbGFnIHNldC4gIEl0IGlzIG15Ci0tICAg ICAgIG9waW5pb24gdGhhdCB0aGlzIHRlc3QgaXMgdW5uZWNlc3NhcnkgKHVuZGVzaXJhYmxlIGV2 ZW4pLiAgSXQKLS0gICAgICAgd2FzIGFkZGVkIHRvIGF2b2lkIGluYWR2ZXJ0ZW50IHJlbG9jYXRp b24gb2YgYW4gZXhlY3V0YWJsZQotLSAgICAgICB3aG9zZSBlX3R5cGUgbWVtYmVyIGluIHRoZSBF TEYgaGVhZGVyIGlzIG5vdCBFVF9EWU4uICBUaGVyZSBtYXkKLS0gICAgICAgYmUgYSB0aW1lIGlu IHRoZSBmdXR1cmUgd2hlbiBpdCBpcyBkZXNpcmFibGUgdG8gZG8gcmVsb2NhdGlvbnMKLS0gICAg ICAgb24gb3RoZXIgdHlwZXMgb2YgZmlsZXMgYXMgd2VsbCBpbiB3aGljaCBjYXNlIHRoaXMgY29u ZGl0aW9uCi0tICAgICAgIHNob3VsZCBlaXRoZXIgYmUgcmVtb3ZlZCBvciBtb2RpZmllZCB0byBh Y2NvbW9kYXRlIHRoZSBuZXcgZmlsZQotLSAgICAgICB0eXBlLiAgKEUuZywgYW4gRVRfRVhFQyBl eGVjdXRhYmxlIHdoaWNoIGhhcyBiZWVuIGJ1aWx0IHRvIGJlCi0tICAgICAgIHBvc2l0aW9uLWlu ZGVwZW5kZW50IGNvdWxkIHNhZmVseSBiZSByZWxvY2F0ZWQgYnkgdGhlIE9TIGlmCi0tICAgICAg IGRlc2lyZWQuICBJdCBpcyB0cnVlIHRoYXQgdGhpcyB2aW9sYXRlcyB0aGUgQUJJLCBidXQgdGhl IEFCSQotLSAgICAgICBoYXMgYmVlbiBrbm93biB0byBiZSBiZW50IGZyb20gdGltZSB0byB0aW1l LikgIC0gS2V2aW4sIE5vdiAyMDAwLiBdCi0tICAgICAqLwotLQotICAgaW50ZXJwX3NlY3QgPSBi ZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAoZXhlY19iZmQsICIuaW50ZXJwIik7Ci0gICBpZiAoaW50 ZXJwX3NlY3QgPT0gTlVMTCAKLSAgICAgICAmJiAoYmZkX2dldF9maWxlX2ZsYWdzIChleGVjX2Jm ZCkgJiBEWU5BTUlDKSAhPSAwCi0gICAgICAgJiYgKGV4ZWNfZW50cnlfcG9pbnQgKGV4ZWNfYmZk LCAmZXhlY19vcHMpICE9IHBjKSkKLSsgICAgcmV0dXJuIHBjIC0gZXhlY19lbnRyeV9wb2ludCAo ZXhlY19iZmQsICZleGVjX29wcyk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci0rCi0rLyogV2UgcmVs b2NhdGUgYWxsIG9mIHRoZSBzZWN0aW9ucyBieSB0aGUgc2FtZSBhbW91bnQuICBUaGlzCi0rICAg YmVoYXZpb3IgaXMgbWFuZGF0ZWQgYnkgcmVjZW50IGVkaXRpb25zIG9mIHRoZSBTeXN0ZW0gViBB QkkuIAotKyAgIEFjY29yZGluZyB0byB0aGUgU3lzdGVtIFYgQXBwbGljYXRpb24gQmluYXJ5IElu dGVyZmFjZSwKLSsgICBFZGl0aW9uIDQuMSwgcGFnZSA1LTU6Ci0rCi0rICAgICAuLi4gIFRob3Vn aCB0aGUgc3lzdGVtIGNob29zZXMgdmlydHVhbCBhZGRyZXNzZXMgZm9yCi0rICAgICBpbmRpdmlk dWFsIHByb2Nlc3NlcywgaXQgbWFpbnRhaW5zIHRoZSBzZWdtZW50cycgcmVsYXRpdmUKLSsgICAg IHBvc2l0aW9ucy4gIEJlY2F1c2UgcG9zaXRpb24taW5kZXBlbmRlbnQgY29kZSB1c2VzIHJlbGF0 aXZlCi0rICAgICBhZGRyZXNzZXNpbmcgYmV0d2VlbiBzZWdtZW50cywgdGhlIGRpZmZlcmVuY2Ug YmV0d2VlbgotKyAgICAgdmlydHVhbCBhZGRyZXNzZXMgaW4gbWVtb3J5IG11c3QgbWF0Y2ggdGhl IGRpZmZlcmVuY2UKLSsgICAgIGJldHdlZW4gdmlydHVhbCBhZGRyZXNzZXMgaW4gdGhlIGZpbGUu ICBUaGUgZGlmZmVyZW5jZQotKyAgICAgYmV0d2VlbiB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIGFu eSBzZWdtZW50IGluIG1lbW9yeSBhbmQKLSsgICAgIHRoZSBjb3JyZXNwb25kaW5nIHZpcnR1YWwg YWRkcmVzcyBpbiB0aGUgZmlsZSBpcyB0aHVzIGEKLSsgICAgIHNpbmdsZSBjb25zdGFudCB2YWx1 ZSBmb3IgYW55IG9uZSBleGVjdXRhYmxlIG9yIHNoYXJlZAotKyAgICAgb2JqZWN0IGluIGEgZ2l2 ZW4gcHJvY2Vzcy4gIFRoaXMgZGlmZmVyZW5jZSBpcyB0aGUgYmFzZQotKyAgICAgYWRkcmVzcy4g IE9uZSB1c2Ugb2YgdGhlIGJhc2UgYWRkcmVzcyBpcyB0byByZWxvY2F0ZSB0aGUKLSsgICAgIG1l bW9yeSBpbWFnZSBvZiB0aGUgcHJvZ3JhbSBkdXJpbmcgZHluYW1pYyBsaW5raW5nLgotKwotKyAg IFRoZSBzYW1lIGxhbmd1YWdlIGFsc28gYXBwZWFycyBpbiBFZGl0aW9uIDQuMCBvZiB0aGUgU3lz dGVtIFYKLSsgICBBQkkgYW5kIGlzIGxlZnQgdW5zcGVjaWZpZWQgaW4gc29tZSBvZiB0aGUgZWFy bGllciBlZGl0aW9ucy4gICovCi0rCi0rc3RhdGljIENPUkVfQUREUgotK3N2cjRfZXhlY19kaXNw bGFjZW1lbnQgKHZvaWQpCi0rewotKyAgaW50IGZvdW5kOwotKyAgQ09SRV9BRERSIGVudHJ5X3Bv aW50OwotKwotKyAgaWYgKGV4ZWNfYmZkID09IE5VTEwpCi0rICAgIHJldHVybiAwOwotKwotKyAg aWYgKHRhcmdldF9hdXh2X3NlYXJjaCAoJmN1cnJlbnRfdGFyZ2V0LCBBVF9FTlRSWSwgJmVudHJ5 X3BvaW50KSA9PSAxKQotKyAgICByZXR1cm4gZW50cnlfcG9pbnQgLSBleGVjX2VudHJ5X3BvaW50 IChleGVjX2JmZCwgJmN1cnJlbnRfdGFyZ2V0KTsKLSsKLSsgIHJldHVybiBzdnI0X3N0YXRpY19l eGVjX2Rpc3BsYWNlbWVudCAoKTsKLSt9Ci0rCi0rLyogUmVsb2NhdGUgdGhlIG1haW4gZXhlY3V0 YWJsZS4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB1cG9uCi0rICAgc3RvcHBpbmcg dGhlIGluZmVyaW9yIHByb2Nlc3MgYXQgdGhlIGVudHJ5IHBvaW50IHRvIHRoZSBwcm9ncmFtLiAK LSsgICBUaGUgZW50cnkgcG9pbnQgZnJvbSBCRkQgaXMgY29tcGFyZWQgdG8gdGhlIEFUX0VOVFJZ IG9mIEFVWFYgYW5kIGlmIHRoZXkgYXJlCi0rICAgZGlmZmVyZW50LCB0aGUgbWFpbiBleGVjdXRh YmxlIGlzIHJlbG9jYXRlZCBieSB0aGUgcHJvcGVyIGFtb3VudC4gICovCi0rCi0rc3RhdGljIHZv aWQKLStzdnI0X3JlbG9jYXRlX21haW5fZXhlY3V0YWJsZSAodm9pZCkKLSt7Ci0rICBDT1JFX0FE RFIgZGlzcGxhY2VtZW50ID0gc3ZyNF9leGVjX2Rpc3BsYWNlbWVudCAoKTsKLSsKLSsgIC8qIEV2 ZW4gaWYgRElTUExBQ0VNRU5UIGlzIDAgc3RpbGwgdHJ5IHRvIHJlbG9jYXRlIGl0IGFzIHRoaXMg aXMgYSBuZXcKLSsgICAgIGRpZmZlcmVuY2Ugb2YgaW4tbWVtb3J5IHZzLiBpbi1maWxlIGFkZHJl c3NlcyBhbmQgd2UgY291bGQgYWxyZWFkeQotKyAgICAgcmVsb2NhdGUgdGhlIGV4ZWN1dGFibGUg YXQgdGhpcyBmdW5jdGlvbiB0byBpbXByb3BlciBhZGRyZXNzIGJlZm9yZS4gICovCi0rCi0rICBp ZiAoc3ltZmlsZV9vYmpmaWxlKQotICAgICB7Ci0tICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9j aGFpbjsKLSAgICAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0czsKLS0gICAg ICBpbnQgaSwgY2hhbmdlZDsKLS0gICAgICBDT1JFX0FERFIgZGlzcGxhY2VtZW50OwotLSAgICAg IAotLSAgICAgIC8qIEl0IGlzIG5lY2Vzc2FyeSB0byByZWxvY2F0ZSB0aGUgb2JqZmlsZS4gIFRo ZSBhbW91bnQgdG8KLS0JIHJlbG9jYXRlIGJ5IGlzIHNpbXBseSB0aGUgYWRkcmVzcyBhdCB3aGlj aCB3ZSBhcmUgc3RvcHBlZAotLQkgbWludXMgdGhlIHN0YXJ0aW5nIGFkZHJlc3MgZnJvbSB0aGUg ZXhlY3V0YWJsZS4KLS0KLS0JIFdlIHJlbG9jYXRlIGFsbCBvZiB0aGUgc2VjdGlvbnMgYnkgdGhl IHNhbWUgYW1vdW50LiAgVGhpcwotLQkgYmVoYXZpb3IgaXMgbWFuZGF0ZWQgYnkgcmVjZW50IGVk aXRpb25zIG9mIHRoZSBTeXN0ZW0gViBBQkkuIAotLQkgQWNjb3JkaW5nIHRvIHRoZSBTeXN0ZW0g ViBBcHBsaWNhdGlvbiBCaW5hcnkgSW50ZXJmYWNlLAotLQkgRWRpdGlvbiA0LjEsIHBhZ2UgNS01 OgotLQotLQkgICAuLi4gIFRob3VnaCB0aGUgc3lzdGVtIGNob29zZXMgdmlydHVhbCBhZGRyZXNz ZXMgZm9yCi0tCSAgIGluZGl2aWR1YWwgcHJvY2Vzc2VzLCBpdCBtYWludGFpbnMgdGhlIHNlZ21l bnRzJyByZWxhdGl2ZQotLQkgICBwb3NpdGlvbnMuICBCZWNhdXNlIHBvc2l0aW9uLWluZGVwZW5k ZW50IGNvZGUgdXNlcyByZWxhdGl2ZQotLQkgICBhZGRyZXNzZXNpbmcgYmV0d2VlbiBzZWdtZW50 cywgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbgotLQkgICB2aXJ0dWFsIGFkZHJlc3NlcyBpbiBtZW1v cnkgbXVzdCBtYXRjaCB0aGUgZGlmZmVyZW5jZQotLQkgICBiZXR3ZWVuIHZpcnR1YWwgYWRkcmVz c2VzIGluIHRoZSBmaWxlLiAgVGhlIGRpZmZlcmVuY2UKLS0JICAgYmV0d2VlbiB0aGUgdmlydHVh bCBhZGRyZXNzIG9mIGFueSBzZWdtZW50IGluIG1lbW9yeSBhbmQKLS0JICAgdGhlIGNvcnJlc3Bv bmRpbmcgdmlydHVhbCBhZGRyZXNzIGluIHRoZSBmaWxlIGlzIHRodXMgYQotLQkgICBzaW5nbGUg Y29uc3RhbnQgdmFsdWUgZm9yIGFueSBvbmUgZXhlY3V0YWJsZSBvciBzaGFyZWQKLS0JICAgb2Jq ZWN0IGluIGEgZ2l2ZW4gcHJvY2Vzcy4gIFRoaXMgZGlmZmVyZW5jZSBpcyB0aGUgYmFzZQotLQkg ICBhZGRyZXNzLiAgT25lIHVzZSBvZiB0aGUgYmFzZSBhZGRyZXNzIGlzIHRvIHJlbG9jYXRlIHRo ZQotLQkgICBtZW1vcnkgaW1hZ2Ugb2YgdGhlIHByb2dyYW0gZHVyaW5nIGR5bmFtaWMgbGlua2lu Zy4KLS0KLS0JIFRoZSBzYW1lIGxhbmd1YWdlIGFsc28gYXBwZWFycyBpbiBFZGl0aW9uIDQuMCBv ZiB0aGUgU3lzdGVtIFYKLS0JIEFCSSBhbmQgaXMgbGVmdCB1bnNwZWNpZmllZCBpbiBzb21lIG9m IHRoZSBlYXJsaWVyIGVkaXRpb25zLiAgKi8KLS0KLS0gICAgICBkaXNwbGFjZW1lbnQgPSBwYyAt IGV4ZWNfZW50cnlfcG9pbnQgKGV4ZWNfYmZkLCAmZXhlY19vcHMpOwotLSAgICAgIGNoYW5nZWQg PSAwOwotLQotLSAgICAgIG5ld19vZmZzZXRzID0geGNhbGxvYyAoc3ltZmlsZV9vYmpmaWxlLT5u dW1fc2VjdGlvbnMsCi0tCQkJICAgICBzaXplb2YgKHN0cnVjdCBzZWN0aW9uX29mZnNldHMpKTsK LS0gICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBuZXdfb2Zmc2V0cyk7Ci0r ICAgICAgaW50IGk7Ci0rCi0rICAgICAgbmV3X29mZnNldHMgPSBhbGxvY2EgKHN5bWZpbGVfb2Jq ZmlsZS0+bnVtX3NlY3Rpb25zCi0rCQkJICAgICogc2l6ZW9mICgqbmV3X29mZnNldHMpKTsKLSAK LSAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3ltZmlsZV9vYmpmaWxlLT5udW1fc2VjdGlvbnM7IGkr KykKLS0JewotLQkgIGlmIChkaXNwbGFjZW1lbnQgIT0gQU5PRkZTRVQgKHN5bWZpbGVfb2JqZmls ZS0+c2VjdGlvbl9vZmZzZXRzLCBpKSkKLS0JICAgIGNoYW5nZWQgPSAxOwotLQkgIG5ld19vZmZz ZXRzLT5vZmZzZXRzW2ldID0gZGlzcGxhY2VtZW50OwotLQl9Ci0rCW5ld19vZmZzZXRzLT5vZmZz ZXRzW2ldID0gZGlzcGxhY2VtZW50OwotIAotLSAgICAgIGlmIChjaGFuZ2VkKQotLQlvYmpmaWxl X3JlbG9jYXRlIChzeW1maWxlX29iamZpbGUsIG5ld19vZmZzZXRzKTsKLSsgICAgICBvYmpmaWxl X3JlbG9jYXRlIChzeW1maWxlX29iamZpbGUsIG5ld19vZmZzZXRzKTsKLSsgICAgfQotKyAgZWxz ZSBpZiAoZXhlY19iZmQpCi0rICAgIHsKLSsgICAgICBhc2VjdGlvbiAqYXNlY3Q7Ci0gCi0tICAg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgZm9yIChhc2VjdCA9IGV4ZWNfYmZk LT5zZWN0aW9uczsgYXNlY3QgIT0gTlVMTDsgYXNlY3QgPSBhc2VjdC0+bmV4dCkKLSsJZXhlY19z ZXRfc2VjdGlvbl9hZGRyZXNzIChiZmRfZ2V0X2ZpbGVuYW1lIChleGVjX2JmZCksIGFzZWN0LT5p bmRleCwKLSsJCQkJICBiZmRfc2VjdGlvbl92bWEgKGV4ZWNfYmZkLCBhc2VjdCkKLSsJCQkJICAr IGRpc3BsYWNlbWVudCk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTYzNSw3ICsxNjcwLDcgQEAgc3Zy NF9yZWxvY2F0ZV9tYWluX2V4ZWN1dGFibGUgKHZvaWQpCi0gCi0gICAgU1lOT1BTSVMKLSAKLS0g ICB2b2lkIHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKCkKLSsgICB2b2lkIHN2cjRf c29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSkKLSAKLSAgICBERVNDUklQ VElPTgotIAotQEAgLTE2ODAsNyArMTcxNSw3IEBAIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRh YmxlICh2b2lkKQotICAqLwotIAotIHN0YXRpYyB2b2lkCi0tc3ZyNF9zb2xpYl9jcmVhdGVfaW5m ZXJpb3JfaG9vayAodm9pZCkKLStzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQg ZnJvbV90dHkpCi0gewotICAgc3RydWN0IGluZmVyaW9yICppbmY7Ci0gICBzdHJ1Y3QgdGhyZWFk X2luZm8gKnRwOwotQEAgLTE2ODksMTIgKzE3MjQsMTMgQEAgc3ZyNF9zb2xpYl9jcmVhdGVfaW5m ZXJpb3JfaG9vayAodm9pZCkKLSAgIGluZm8gPSBnZXRfc3ZyNF9pbmZvIChQSURHRVQgKGluZmVy aW9yX3B0aWQpKTsKLSAKLSAgIC8qIFJlbG9jYXRlIHRoZSBtYWluIGV4ZWN1dGFibGUgaWYgbmVj ZXNzYXJ5LiAgKi8KLS0gIHN2cjRfcmVsb2NhdGVfbWFpbl9leGVjdXRhYmxlICgpOwotKyAgaWYg KGN1cnJlbnRfaW5mZXJpb3IgKCktPmF0dGFjaF9mbGFnID09IDApCi0rICAgIHN2cjRfcmVsb2Nh dGVfbWFpbl9leGVjdXRhYmxlICgpOwotIAotICAgaWYgKCFzdnI0X2hhdmVfbGlua19tYXBfb2Zm c2V0cyAoKSkKLSAgICAgcmV0dXJuOwotIAotLSAgaWYgKCFlbmFibGVfYnJlYWsgKGluZm8pKQot KyAgaWYgKCFlbmFibGVfYnJlYWsgKGluZm8sIGZyb21fdHR5KSkKLSAgICAgcmV0dXJuOwotIAot ICNpZiBkZWZpbmVkKF9TQ09fRFMpCi1AQCAtMTkxMCw4ICsxOTQ2LDE5IEBAIGVsZl9sb29rdXBf bGliX3N5bWJvbCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkgICAgICAgY29u c3QgY2hhciAqbmFtZSwKLSAJCSAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewot LSAgaWYgKG9iamZpbGUtPm9iZmQgPT0gTlVMTAotLSAgICAgfHwgc2Nhbl9keW50YWcgKERUX1NZ TUJPTElDLCBvYmpmaWxlLT5vYmZkLCBOVUxMKSAhPSAxKQotKyAgYmZkICphYmZkOwotKwotKyAg aWYgKG9iamZpbGUgPT0gc3ltZmlsZV9vYmpmaWxlKQotKyAgICBhYmZkID0gZXhlY19iZmQ7Ci0r ICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBPQkpGSUxFIHNob3VsZCBoYXZlIGJlZW4gcGFzc2Vk IGFzIHRoZSBub24tZGVidWcgb25lLiAgKi8KLSsgICAgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5z ZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwotKwotKyAgICAgIGFiZmQg PSBvYmpmaWxlLT5vYmZkOwotKyAgICB9Ci0rCi0rICBpZiAoYWJmZCA9PSBOVUxMIHx8IHNjYW5f ZHludGFnIChEVF9TWU1CT0xJQywgYWJmZCwgTlVMTCkgIT0gMSkKLSAgICAgcmV0dXJuIE5VTEw7 Ci0gCi0gICByZXR1cm4gbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChvYmpmaWxl LCBuYW1lLCBkb21haW4pOwotZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi10YXJnZXQuYyBiL2dkYi9z b2xpYi10YXJnZXQuYwotaW5kZXggMDc0MTVlNC4uZDE2MGE3MCAxMDA2NDQKLS0tLSBhL2dkYi9z b2xpYi10YXJnZXQuYwotKysrIGIvZ2RiL3NvbGliLXRhcmdldC5jCi1AQCAtMzA2LDcgKzMwNiw3 IEBAIHNvbGliX3RhcmdldF9zcGVjaWFsX3N5bWJvbF9oYW5kbGluZyAodm9pZCkKLSB9Ci0gCi0g c3RhdGljIHZvaWQKLS1zb2xpYl90YXJnZXRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKHZv aWQpCi0rc29saWJfdGFyZ2V0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChpbnQgZnJvbV90 dHkpCi0gewotICAgLyogTm90aGluZyBuZWVkZWQuICAqLwotIH0KLWRpZmYgLS1naXQgYS9nZGIv c29saWIuYyBiL2dkYi9zb2xpYi5jCi1pbmRleCAzNTc0ZTYyLi43ZWEzNjYzIDEwMDY0NAotLS0t IGEvZ2RiL3NvbGliLmMKLSsrKyBiL2dkYi9zb2xpYi5jCi1AQCAtOTk4LDcgKzk5OCw3IEBAIGNs ZWFyX3NvbGliICh2b2lkKQotIAotICAgIFNZTk9QU0lTCi0gCi0tICAgdm9pZCBzb2xpYl9jcmVh dGVfaW5mZXJpb3JfaG9vayAoKQotKyAgIHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sg KGludCBmcm9tX3R0eSkKLSAKLSAgICBERVNDUklQVElPTgotIAotQEAgLTEwMDgsMTAgKzEwMDgs MTAgQEAgY2xlYXJfc29saWIgKHZvaWQpCi0gICAgU09MSUJfQ1JFQVRFX0lORkVSSU9SX0hPT0su ICAqLwotIAotIHZvaWQKLS1zb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCkKLStzb2xp Yl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoaW50IGZyb21fdHR5KQotIHsKLSAgIHN0cnVjdCB0YXJn ZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJhcmNoKTsKLS0gIG9wcy0+c29s aWJfY3JlYXRlX2luZmVyaW9yX2hvb2soKTsKLSsgIG9wcy0+c29saWJfY3JlYXRlX2luZmVyaW9y X2hvb2sgKGZyb21fdHR5KTsKLSB9Ci0gCi0gLyogR0xPQkFMIEZVTkNUSU9OCi1AQCAtMTA4Nyw3 ICsxMDg3LDYgQEAgcmVsb2FkX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQsIGludCBm cm9tX3R0eSwKLSAJCQkgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmUpCi0gewotICAgbm9fc2hh cmVkX2xpYnJhcmllcyAoTlVMTCwgZnJvbV90dHkpOwotLSAgc29saWJfYWRkIChOVUxMLCBmcm9t X3R0eSwgTlVMTCwgYXV0b19zb2xpYl9hZGQpOwotICAgLyogQ3JlYXRpbmcgaW5mZXJpb3IgaG9v a3MgaGVyZSBoYXMgdHdvIHB1cnBvc2VzLiBGaXJzdCwgaWYgd2UgcmVsb2FkIAotICAgICAgc2hh cmVkIGxpYnJhcmllcyB0aGVuIHRoZSBhZGRyZXNzIG9mIHNvbGliIGJyZWFrcG9pbnQgd2UndmUg Y29tcHV0ZWQKLSAgICAgIHByZXZpb3VzbHkgbWlnaHQgYmUgbm8gbG9uZ2VyIHZhbGlkLiAgRm9y IGV4YW1wbGUsIGlmIHdlIGZvcmdvdCB0byBzZXQKLUBAIC0xMTAyLDkgKzExMDEsMTkgQEAgcmVs b2FkX3NoYXJlZF9saWJyYXJpZXMgKGNoYXIgKmlnbm9yZWQsIGludCBmcm9tX3R0eSwKLSAjaWZk ZWYgU09MSUJfQ1JFQVRFX0lORkVSSU9SX0hPT0sKLSAgICAgICBTT0xJQl9DUkVBVEVfSU5GRVJJ T1JfSE9PSyAoUElER0VUIChpbmZlcmlvcl9wdGlkKSk7Ci0gI2Vsc2UKLS0gICAgICBzb2xpYl9j cmVhdGVfaW5mZXJpb3JfaG9vayAoKTsKLSsgICAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9v ayAoZnJvbV90dHkpOwotICNlbmRpZgotICAgICB9Ci0rCi0rICAvKiBTb21ldGltZXMgdGhlIHBs YXRmb3JtLXNwZWNpZmljIGhvb2sgbG9hZHMgaW5pdGlhbCBzaGFyZWQKLSsgICAgIGxpYnJhcmll cywgYW5kIHNvbWV0aW1lcyBpdCBkb2Vzbid0LiAgSWYgaXQgZG9lc24ndCBGUk9NX1RUWSB3aWxs IGJlCi0rICAgICBpbmNvcnJlY3RseSAwIGJ1dCBzdWNoIHNvbGliIHRhcmdldHMgc2hvdWxkIGJl IGZpeGVkIGFueXdheS4gIElmIHdlCi0rICAgICBtYWRlIGFsbCB0aGUgaW5mZXJpb3IgaG9vayBt ZXRob2RzIGNvbnNpc3RlbnQsIHRoaXMgY2FsbCBjb3VsZCBiZQotKyAgICAgcmVtb3ZlZC4gIENh bGwgaXQgb25seSBhZnRlciB0aGUgc29saWIgdGFyZ2V0IGhhcyBiZWVuIGluaXRpYWxpemVkIGJ5 Ci0rICAgICBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vay4gICovCi0rCi0rICBzb2xpYl9hZGQg KE5VTEwsIDAsIE5VTEwsIGF1dG9fc29saWJfYWRkKTsKLSsKLSAgIC8qIFdlIGhhdmUgdW5sb2Fk ZWQgYW5kIHRoZW4gcmVsb2FkZWQgZGVidWcgaW5mbyBmb3IgYWxsIHNoYXJlZCBsaWJyYXJpZXMu Ci0gICAgICBIb3dldmVyLCBmcmFtZXMgbWF5IHN0aWxsIHJlZmVyZW5jZSB0aGVtLCBmb3IgZXhh bXBsZSBhIGZyYW1lJ3MgCi0gICAgICB1bndpbmRlciBtaWdodCBzdGlsbCBwb2ludCBvZiBEV0FS RiBGREUgc3RydWN0dXJlcyB0aGF0IGFyZSBub3cgZnJlZWQuCi1kaWZmIC0tZ2l0IGEvZ2RiL3Nv bGliLmggYi9nZGIvc29saWIuaAotaW5kZXggY2NjNWI2My4uYWJlNWUxOSAxMDA2NDQKLS0tLSBh L2dkYi9zb2xpYi5oCi0rKysgYi9nZGIvc29saWIuaAotQEAgLTQxLDcgKzQxLDcgQEAgZXh0ZXJu IGludCBzb2xpYl9yZWFkX3N5bWJvbHMgKHN0cnVjdCBzb19saXN0ICosIGludCk7Ci0gICAgYWRk cmVzc2VzIHRvIHdoaWNoIHRoZXkgYXJlIGxpbmtlZCwgYW5kIHN1ZmZpY2llbnQgaW5mb3JtYXRp b24gdG8KLSAgICByZWFkIGluIHRoZWlyIHN5bWJvbHMgYXQgYSBsYXRlciB0aW1lLiAgKi8KLSAK LS1leHRlcm4gdm9pZCBzb2xpYl9jcmVhdGVfaW5mZXJpb3JfaG9vayAodm9pZCk7Ci0rZXh0ZXJu IHZvaWQgc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGludCBmcm9tX3R0eSk7Ci0gCi0gLyog SWYgQUREUiBsaWVzIGluIGEgc2hhcmVkIGxpYnJhcnksIHJldHVybiBpdHMgbmFtZS4gICovCi0g Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGlzdC5oIGIvZ2RiL3NvbGlzdC5oCi1pbmRleCAwMDVlOGY3 Li45NzI0ZmU3IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGlzdC5oCi0rKysgYi9nZGIvc29saXN0LmgK LUBAIC04Nyw3ICs4Nyw3IEBAIHN0cnVjdCB0YXJnZXRfc29fb3BzCi0gICAgIHZvaWQgKCpjbGVh cl9zb2xpYikgKHZvaWQpOwotIAotICAgICAvKiBUYXJnZXQgZGVwZW5kZW50IGNvZGUgdG8gcnVu IGFmdGVyIGNoaWxkIHByb2Nlc3MgZm9yay4gICovCi0tICAgIHZvaWQgKCpzb2xpYl9jcmVhdGVf aW5mZXJpb3JfaG9vaykgKHZvaWQpOwotKyAgICB2b2lkICgqc29saWJfY3JlYXRlX2luZmVyaW9y X2hvb2spIChpbnQgZnJvbV90dHkpOwotIAotICAgICAvKiBEbyBhZGRpdGlvbmFsIHN5bWJvbCBo YW5kbGluZywgbG9va3VwLCBldGMuIGFmdGVyIHN5bWJvbHMKLSAgICAgICAgZm9yIGEgc2hhcmVk IG9iamVjdCBoYXZlIGJlZW4gbG9hZGVkLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5j IGIvZ2RiL3N5bWZpbGUuYwotaW5kZXggYzMxYjcyYS4uNmQ3ZmExMCAxMDA2NDQKLS0tLSBhL2dk Yi9zeW1maWxlLmMKLSsrKyBiL2dkYi9zeW1maWxlLmMKLUBAIC01MzYsNDAgKzUzNiwxNTEgQEAg cGxhY2Vfc2VjdGlvbiAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdCwgdm9pZCAqb2JqKQotICAg YXJnLT5sb3dlc3QgPSBzdGFydF9hZGRyICsgYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3QpOwot IH0KLSAKLS0vKiBQYXJzZSB0aGUgdXNlcidzIGlkZWEgb2YgYW4gb2Zmc2V0IGZvciBkeW5hbWlj IGxpbmtpbmcsIGludG8gb3VyIGlkZWEKLS0gICBvZiBob3cgdG8gcmVwcmVzZW50IGl0IGZvciBm YXN0IHN5bWJvbCByZWFkaW5nLiAgVGhpcyBpcyB0aGUgZGVmYXVsdAotLSAgIHZlcnNpb24gb2Yg dGhlIHN5bV9mbnMuc3ltX29mZnNldHMgZnVuY3Rpb24gZm9yIHN5bWJvbCByZWFkZXJzIHRoYXQK LS0gICBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuICBJdCBhbGxvY2F0ZXMgYSBz ZWN0aW9uX29mZnNldHMgdGFibGUKLS0gICBmb3IgdGhlIG9iamVjdGZpbGUgT0JKRklMRSBhbmQg c3R1ZmZzIEFERFIgaW50byBhbGwgb2YgdGhlIG9mZnNldHMuICAqLwotKy8qIEJ1aWxkIChhbGxv Y2F0ZSBhbmQgcG9wdWxhdGUpIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyB3aXRoIGFic29sdXRl Ci0rICAgYWRkcmVzc2VzIGZyb20gT0JKRklMRS0+T0JGRCBhbmQgT0JKRklMRS0+U0VDVElPTl9P RkZTRVRTLiAgKi8KLSsKLStzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKgotK2J1aWxkX3NlY3Rp b25fYWRkcl9pbmZvX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewot KyAgc3RydWN0IHRhcmdldF9zZWN0aW9uICpzZWN0aW9ucyA9IE5VTEwsICpzZWN0aW9uc19lbmQ7 Ci0rICBzdHJ1Y3QgdGFyZ2V0X3NlY3Rpb24gKnA7Ci0rICBpbnQgYWRkcl9iaXQgPSBnZGJhcmNo X2FkZHJfYml0IChvYmpmaWxlLT5nZGJhcmNoKTsKLSsgIENPUkVfQUREUiBtYXNrID0gQ09SRV9B RERSX01BWDsKLSsgIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqcmV0dmFsOwotKyAgc3RydWN0 IGNsZWFudXAgKm15X2NsZWFudXBzOwotKwotKyAgaWYgKGJ1aWxkX3NlY3Rpb25fdGFibGUgKG9i amZpbGUtPm9iZmQsICZzZWN0aW9ucywgJnNlY3Rpb25zX2VuZCkpCi0rICAgIGVycm9yIChfKCJD YW4ndCBmaW5kIHRoZSBmaWxlIHNlY3Rpb25zIGluIGAlcyc6ICVzIiksCi0rCSAgIGJmZF9nZXRf ZmlsZW5hbWUgKG9iamZpbGUtPm9iZmQpLCBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7 Ci0rICBteV9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHNlY3Rpb25zKTsKLSsKLSsg IGlmIChhZGRyX2JpdCA8IChzaXplb2YgKENPUkVfQUREUikgKiBIT1NUX0NIQVJfQklUKSkKLSsg ICAgbWFzayA9ICgoQ09SRV9BRERSKSAxIDw8IGFkZHJfYml0KSAtIDE7Ci0rCi0rICBmb3IgKHAg PSBzZWN0aW9uczsgcCA8IHNlY3Rpb25zX2VuZDsgcCsrKQotKyAgICB7Ci0rICAgICAgQ09SRV9B RERSIGJhc2VhZGRyOwotKwotKyAgICAgIGdkYl9hc3NlcnQgKHAtPnRoZV9iZmRfc2VjdGlvbi0+ aW5kZXggPCBvYmpmaWxlLT5udW1fc2VjdGlvbnMpOwotKyAgICAgIGJhc2VhZGRyID0gQU5PRkZT RVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywKLSsJCQkgICBwLT50aGVfYmZkX3NlY3Rpb24t PmluZGV4KTsKLSsKLSsgICAgICBwLT5hZGRyID0gKHAtPmFkZHIgKyBiYXNlYWRkcikgJiBtYXNr OwotKyAgICAgIHAtPmVuZGFkZHIgPSAocC0+ZW5kYWRkciArIGJhc2VhZGRyKSAmIG1hc2s7Ci0r ICAgIH0KLSsKLSsgIHJldHZhbCA9IGJ1aWxkX3NlY3Rpb25fYWRkcl9pbmZvX2Zyb21fc2VjdGlv bl90YWJsZSAoc2VjdGlvbnMsIHNlY3Rpb25zX2VuZCk7Ci0rCi0rICBkb19jbGVhbnVwcyAobXlf Y2xlYW51cHMpOwotKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rLyogU3RvcmUgc3RydWN0 IHNlY3Rpb25fYWRkcl9pbmZvIGFzIHByZXBhcmVkIChtYWRlIHJlbGF0aXZlIGFuZCB3aXRoIFNF Q1RJTkRFWAotKyAgIGZpbGxlZC1pbikgYnkgYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgaW50byBT RUNUSU9OX09GRlNFVFMgb2YgTlVNX1NFQ1RJT05TCi0rICAgZW50cmllcy4gICovCi0gCi0gdm9p ZAotLWRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0J CQkgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycykKLStyZWxhdGl2ZV9hZGRyX2luZm9f dG9fc2VjdGlvbl9vZmZzZXRzIChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpzZWN0aW9uX29mZnNl dHMsCi0rCQkJCSAgICAgICBpbnQgbnVtX3NlY3Rpb25zLAotKwkJCQkgICAgICAgc3RydWN0IHNl Y3Rpb25fYWRkcl9pbmZvICphZGRycykKLSB7Ci0gICBpbnQgaTsKLSAKLS0gIG9iamZpbGUtPm51 bV9zZWN0aW9ucyA9IGJmZF9jb3VudF9zZWN0aW9ucyAob2JqZmlsZS0+b2JmZCk7Ci0tICBvYmpm aWxlLT5zZWN0aW9uX29mZnNldHMgPSAoc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqKQotLSAgICBv YnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJICAgU0laRU9GX05f U0VDVElPTl9PRkZTRVRTIChvYmpmaWxlLT5udW1fc2VjdGlvbnMpKTsKLS0gIG1lbXNldCAob2Jq ZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCAwLAotLQkgIFNJWkVPRl9OX1NFQ1RJT05fT0ZGU0VUUyAo b2JqZmlsZS0+bnVtX3NlY3Rpb25zKSk7Ci0rICBtZW1zZXQgKHNlY3Rpb25fb2Zmc2V0cywgMCwg U0laRU9GX05fU0VDVElPTl9PRkZTRVRTIChudW1fc2VjdGlvbnMpKTsKLSAKLS0gIC8qIE5vdyBj YWxjdWxhdGUgb2Zmc2V0cyBmb3Igc2VjdGlvbiB0aGF0IHdlcmUgc3BlY2lmaWVkIGJ5IHRoZQot LSAgICAgY2FsbGVyLiAqLwotKyAgLyogTm93IGNhbGN1bGF0ZSBvZmZzZXRzIGZvciBzZWN0aW9u IHRoYXQgd2VyZSBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlci4gKi8KLSAgIGZvciAoaSA9IDA7IGkg PCBhZGRycy0+bnVtX3NlY3Rpb25zICYmIGFkZHJzLT5vdGhlcltpXS5uYW1lOyBpKyspCi0gICAg IHsKLS0gICAgICBzdHJ1Y3Qgb3RoZXJfc2VjdGlvbnMgKm9zcCA7Ci0rICAgICAgc3RydWN0IG90 aGVyX3NlY3Rpb25zICpvc3A7Ci0gCi0tICAgICAgb3NwID0gJmFkZHJzLT5vdGhlcltpXSA7Ci0r ICAgICAgb3NwID0gJmFkZHJzLT5vdGhlcltpXTsKLSAgICAgICBpZiAob3NwLT5hZGRyID09IDAp Ci0gICAJY29udGludWU7Ci0gCi0gICAgICAgLyogUmVjb3JkIGFsbCBzZWN0aW9ucyBpbiBvZmZz ZXRzICovCi0gICAgICAgLyogVGhlIHNlY3Rpb25fb2Zmc2V0cyBpbiB0aGUgb2JqZmlsZSBhcmUg aGVyZSBmaWxsZWQgaW4gdXNpbmcKLSAgICAgICAgICB0aGUgQkZEIGluZGV4LiAqLwotLSAgICAg IChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMpLT5vZmZzZXRzW29zcC0+c2VjdGluZGV4XSA9IG9z cC0+YWRkcjsKLSsgICAgICBzZWN0aW9uX29mZnNldHMtPm9mZnNldHNbb3NwLT5zZWN0aW5kZXhd ID0gb3NwLT5hZGRyOwotKyAgICB9Ci0rfQotKwotKy8qIFJlbGF0aXZpemUgYWJzb2x1dGUgYWRk cmVzc2VzIGluIEFERFJTIGludG8gb2Zmc2V0cyBiYXNlZCBvbiBBQkZELiAgRmlsbC1pbgotKyAg IGFsc28gU0VDVElOREVYZXMgdGhlcmUuICAqLwotKwotK3ZvaWQKLSthZGRyX2luZm9fbWFrZV9y ZWxhdGl2ZSAoc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycywgYmZkICphYmZkKQotK3sK LSsgIGFzZWN0aW9uICpsb3dlcl9zZWN0OwotKyAgYXNlY3Rpb24gKnNlY3Q7Ci0rICBDT1JFX0FE RFIgbG93ZXJfb2Zmc2V0OwotKyAgaW50IGk7Ci0rCi0rICAvKiBGaW5kIGxvd2VzdCBsb2FkYWJs ZSBzZWN0aW9uIHRvIGJlIHVzZWQgYXMgc3RhcnRpbmcgcG9pbnQgZm9yCi0rICAgICBjb250aW5n dW91cyBzZWN0aW9ucy4gRklYTUUhISB3b24ndCB3b3JrIHdpdGhvdXQgY2FsbCB0byBmaW5kCi0r ICAgICAudGV4dCBmaXJzdCwgYnV0IHRoaXMgYXNzdW1lcyB0ZXh0IGlzIGxvd2VzdCBzZWN0aW9u LiAqLwotKyAgbG93ZXJfc2VjdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChhYmZkLCAiLnRl eHQiKTsKLSsgIGlmIChsb3dlcl9zZWN0ID09IE5VTEwpCi0rICAgIGJmZF9tYXBfb3Zlcl9zZWN0 aW9ucyAoYWJmZCwgZmluZF9sb3dlc3Rfc2VjdGlvbiwgJmxvd2VyX3NlY3QpOwotKyAgaWYgKGxv d2VyX3NlY3QgPT0gTlVMTCkKLSsgICAgewotKyAgICAgIHdhcm5pbmcgKF8oIm5vIGxvYWRhYmxl IHNlY3Rpb25zIGZvdW5kIGluIGFkZGVkIHN5bWJvbC1maWxlICVzIiksCi0rCSAgICAgICBiZmRf Z2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rICAgICAgbG93ZXJfb2Zmc2V0ID0gMDsKLSsgICAgfQot KyAgZWxzZQotKyAgICBsb3dlcl9vZmZzZXQgPSBiZmRfc2VjdGlvbl92bWEgKGJmZF9nZXRfZmls ZW5hbWUgKGFiZmQpLCBsb3dlcl9zZWN0KTsKLSsKLSsgIC8qIENhbGN1bGF0ZSBvZmZzZXRzIGZv ciB0aGUgbG9hZGFibGUgc2VjdGlvbnMuCi0rICAgICBGSVhNRSEgU2VjdGlvbnMgbXVzdCBiZSBp biBvcmRlciBvZiBpbmNyZWFzaW5nIGxvYWRhYmxlIHNlY3Rpb24KLSsgICAgIHNvIHRoYXQgY29u dGlndW91cyBzZWN0aW9ucyBjYW4gdXNlIHRoZSBsb3dlci1vZmZzZXQhISEKLSsKLSsgICAgIEFk anVzdCBvZmZzZXRzIGlmIHRoZSBzZWdtZW50cyBhcmUgbm90IGNvbnRpZ3VvdXMuCi0rICAgICBJ ZiB0aGUgc2VjdGlvbiBpcyBjb250aWd1b3VzLCBpdHMgb2Zmc2V0IHNob3VsZCBiZSBzZXQgdG8K LSsgICAgIHRoZSBvZmZzZXQgb2YgdGhlIGhpZ2hlc3QgbG9hZGFibGUgc2VjdGlvbiBsb3dlciB0 aGFuIGl0Ci0rICAgICAodGhlIGxvYWRhYmxlIHNlY3Rpb24gZGlyZWN0bHkgYmVsb3cgaXQgaW4g bWVtb3J5KS4KLSsgICAgIHRoaXNfb2Zmc2V0ID0gbG93ZXJfb2Zmc2V0ID0gbG93ZXJfYWRkciAt IGxvd2VyX29yaWdfYWRkciAqLwotKwotKyAgZm9yIChpID0gMDsgaSA8IGFkZHJzLT5udW1fc2Vj dGlvbnMgJiYgYWRkcnMtPm90aGVyW2ldLm5hbWU7IGkrKykKLSsgICAgewotKyAgICAgIGlmIChh ZGRycy0+b3RoZXJbaV0uYWRkciAhPSAwKQotKwl7Ci0rCSAgc2VjdCA9IGJmZF9nZXRfc2VjdGlv bl9ieV9uYW1lIChhYmZkLCBhZGRycy0+b3RoZXJbaV0ubmFtZSk7Ci0rCSAgaWYgKHNlY3QpCi0r CSAgICB7Ci0rCSAgICAgIGFkZHJzLT5vdGhlcltpXS5hZGRyIC09IGJmZF9zZWN0aW9uX3ZtYSAo YWJmZCwgc2VjdCk7Ci0rCSAgICAgIGxvd2VyX29mZnNldCA9IGFkZHJzLT5vdGhlcltpXS5hZGRy OwotKwkgICAgICAvKiBUaGlzIGlzIHRoZSBpbmRleCB1c2VkIGJ5IEJGRC4gKi8KLSsJICAgICAg YWRkcnMtPm90aGVyW2ldLnNlY3RpbmRleCA9IHNlY3QtPmluZGV4OwotKwkgICAgfQotKwkgIGVs c2UKLSsJICAgIHsKLSsJICAgICAgd2FybmluZyAoXygic2VjdGlvbiAlcyBub3QgZm91bmQgaW4g JXMiKSwgYWRkcnMtPm90aGVyW2ldLm5hbWUsCi0rCQkgICAgICAgYmZkX2dldF9maWxlbmFtZSAo YWJmZCkpOwotKwkgICAgICBhZGRycy0+b3RoZXJbaV0uYWRkciA9IDA7Ci0rCSAgICB9Ci0rCX0K LSsgICAgICBlbHNlCi0rCWFkZHJzLT5vdGhlcltpXS5hZGRyID0gbG93ZXJfb2Zmc2V0OwotICAg ICB9Ci0rfQotKwotKy8qIFBhcnNlIHRoZSB1c2VyJ3MgaWRlYSBvZiBhbiBvZmZzZXQgZm9yIGR5 bmFtaWMgbGlua2luZywgaW50byBvdXIgaWRlYQotKyAgIG9mIGhvdyB0byByZXByZXNlbnQgaXQg Zm9yIGZhc3Qgc3ltYm9sIHJlYWRpbmcuICBUaGlzIGlzIHRoZSBkZWZhdWx0Ci0rICAgdmVyc2lv biBvZiB0aGUgc3ltX2Zucy5zeW1fb2Zmc2V0cyBmdW5jdGlvbiBmb3Igc3ltYm9sIHJlYWRlcnMg dGhhdAotKyAgIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4gIEl0IGFsbG9jYXRl cyBhIHNlY3Rpb25fb2Zmc2V0cyB0YWJsZQotKyAgIGZvciB0aGUgb2JqZWN0ZmlsZSBPQkpGSUxF IGFuZCBzdHVmZnMgQUREUiBpbnRvIGFsbCBvZiB0aGUgb2Zmc2V0cy4gICovCi0rCi0rdm9pZAot K2RlZmF1bHRfc3ltZmlsZV9vZmZzZXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkg c3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycykKLSt7Ci0rICBvYmpmaWxlLT5udW1fc2Vj dGlvbnMgPSBiZmRfY291bnRfc2VjdGlvbnMgKG9iamZpbGUtPm9iZmQpOwotKyAgb2JqZmlsZS0+ c2VjdGlvbl9vZmZzZXRzID0gKHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKikKLSsgICAgb2JzdGFj a19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCSAgIFNJWkVPRl9OX1NFQ1RJ T05fT0ZGU0VUUyAob2JqZmlsZS0+bnVtX3NlY3Rpb25zKSk7Ci0rICByZWxhdGl2ZV9hZGRyX2lu Zm9fdG9fc2VjdGlvbl9vZmZzZXRzIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsCi0rCQkJCQkg b2JqZmlsZS0+bnVtX3NlY3Rpb25zLCBhZGRycyk7Ci0gCi0gICAvKiBGb3IgcmVsb2NhdGFibGUg ZmlsZXMsIGFsbCBsb2FkYWJsZSBzZWN0aW9ucyB3aWxsIHN0YXJ0IGF0IHplcm8uCi0gICAgICBU aGUgemVybyBpcyBtZWFuaW5nbGVzcywgc28gdHJ5IHRvIHBpY2sgYXJiaXRyYXJ5IGFkZHJlc3Nl cyBzdWNoCi1AQCAtODAzLDY1ICs5MTQsOCBAQCBzeW1zX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCi0gCi0gICAgICBXZSBubyBsb25nZXIgd2FybiBpZiB0aGUgbG93ZXN0 IHNlY3Rpb24gaXMgbm90IGEgdGV4dCBzZWdtZW50IChhcwotICAgICAgaGFwcGVucyBmb3IgdGhl IFBBNjQgcG9ydC4gICovCi0tICBpZiAoIW1haW5saW5lICYmIGFkZHJzICYmIGFkZHJzLT5vdGhl clswXS5uYW1lKQotLSAgICB7Ci0tICAgICAgYXNlY3Rpb24gKmxvd2VyX3NlY3Q7Ci0tICAgICAg YXNlY3Rpb24gKnNlY3Q7Ci0tICAgICAgQ09SRV9BRERSIGxvd2VyX29mZnNldDsKLS0gICAgICBp bnQgaTsKLS0KLS0gICAgICAvKiBGaW5kIGxvd2VzdCBsb2FkYWJsZSBzZWN0aW9uIHRvIGJlIHVz ZWQgYXMgc3RhcnRpbmcgcG9pbnQgZm9yCi0tICAgICAgICAgY29udGluZ3VvdXMgc2VjdGlvbnMu IEZJWE1FISEgd29uJ3Qgd29yayB3aXRob3V0IGNhbGwgdG8gZmluZAotLQkgLnRleHQgZmlyc3Qs IGJ1dCB0aGlzIGFzc3VtZXMgdGV4dCBpcyBsb3dlc3Qgc2VjdGlvbi4gKi8KLS0gICAgICBsb3dl cl9zZWN0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iamZpbGUtPm9iZmQsICIudGV4dCIp OwotLSAgICAgIGlmIChsb3dlcl9zZWN0ID09IE5VTEwpCi0tCWJmZF9tYXBfb3Zlcl9zZWN0aW9u cyAob2JqZmlsZS0+b2JmZCwgZmluZF9sb3dlc3Rfc2VjdGlvbiwKLS0JCQkgICAgICAgJmxvd2Vy X3NlY3QpOwotLSAgICAgIGlmIChsb3dlcl9zZWN0ID09IE5VTEwpCi0tCXsKLS0JICB3YXJuaW5n IChfKCJubyBsb2FkYWJsZSBzZWN0aW9ucyBmb3VuZCBpbiBhZGRlZCBzeW1ib2wtZmlsZSAlcyIp LAotLQkJICAgb2JqZmlsZS0+bmFtZSk7Ci0tCSAgbG93ZXJfb2Zmc2V0ID0gMDsKLS0JfQotLSAg ICAgIGVsc2UKLS0JbG93ZXJfb2Zmc2V0ID0gYmZkX3NlY3Rpb25fdm1hIChvYmpmaWxlLT5vYmZk LCBsb3dlcl9zZWN0KTsKLS0KLS0gICAgICAvKiBDYWxjdWxhdGUgb2Zmc2V0cyBmb3IgdGhlIGxv YWRhYmxlIHNlY3Rpb25zLgotLSAJIEZJWE1FISBTZWN0aW9ucyBtdXN0IGJlIGluIG9yZGVyIG9m IGluY3JlYXNpbmcgbG9hZGFibGUgc2VjdGlvbgotLSAJIHNvIHRoYXQgY29udGlndW91cyBzZWN0 aW9ucyBjYW4gdXNlIHRoZSBsb3dlci1vZmZzZXQhISEKLS0KLS0gICAgICAgICBBZGp1c3Qgb2Zm c2V0cyBpZiB0aGUgc2VnbWVudHMgYXJlIG5vdCBjb250aWd1b3VzLgotLSAgICAgICAgIElmIHRo ZSBzZWN0aW9uIGlzIGNvbnRpZ3VvdXMsIGl0cyBvZmZzZXQgc2hvdWxkIGJlIHNldCB0bwotLSAJ IHRoZSBvZmZzZXQgb2YgdGhlIGhpZ2hlc3QgbG9hZGFibGUgc2VjdGlvbiBsb3dlciB0aGFuIGl0 Ci0tIAkgKHRoZSBsb2FkYWJsZSBzZWN0aW9uIGRpcmVjdGx5IGJlbG93IGl0IGluIG1lbW9yeSku Ci0tIAkgdGhpc19vZmZzZXQgPSBsb3dlcl9vZmZzZXQgPSBsb3dlcl9hZGRyIC0gbG93ZXJfb3Jp Z19hZGRyICovCi0tCi0tICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYWRkcnMtPm51bV9zZWN0aW9u cyAmJiBhZGRycy0+b3RoZXJbaV0ubmFtZTsgaSsrKQotLSAgICAgICAgICB7Ci0tICAgICAgICAg ICAgaWYgKGFkZHJzLT5vdGhlcltpXS5hZGRyICE9IDApCi0tICAgICAgICAgICAgICB7Ci0tICAg ICAgICAgICAgICAgIHNlY3QgPSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2JqZmlsZS0+b2Jm ZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRy cy0+b3RoZXJbaV0ubmFtZSk7Ci0tICAgICAgICAgICAgICAgIGlmIChzZWN0KQotLSAgICAgICAg ICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIGFkZHJzLT5vdGhlcltpXS5hZGRyCi0t ICAgICAgICAgICAgICAgICAgICAgIC09IGJmZF9zZWN0aW9uX3ZtYSAob2JqZmlsZS0+b2JmZCwg c2VjdCk7Ci0tICAgICAgICAgICAgICAgICAgICBsb3dlcl9vZmZzZXQgPSBhZGRycy0+b3RoZXJb aV0uYWRkcjsKLS0gICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGluZGV4IHVzZWQg YnkgQkZELiAqLwotLSAgICAgICAgICAgICAgICAgICAgYWRkcnMtPm90aGVyW2ldLnNlY3RpbmRl eCA9IHNlY3QtPmluZGV4IDsKLS0gICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICAg IGVsc2UKLS0gICAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICB3YXJuaW5n IChfKCJzZWN0aW9uICVzIG5vdCBmb3VuZCBpbiAlcyIpLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYWRkcnMtPm90aGVyW2ldLm5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvYmpmaWxlLT5uYW1lKTsKLS0gICAgICAgICAgICAgICAgICAgIGFkZHJzLT5vdGhlcltp XS5hZGRyID0gMDsKLS0gICAgICAgICAgICAgICAgICB9Ci0tICAgICAgICAgICAgICB9Ci0tICAg ICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgYWRkcnMtPm90aGVyW2ldLmFkZHIgPSBsb3dl cl9vZmZzZXQ7Ci0tICAgICAgICAgIH0KLS0gICAgfQotKyAgaWYgKGFkZHJzICYmIGFkZHJzLT5v dGhlclswXS5uYW1lKQotKyAgICBhZGRyX2luZm9fbWFrZV9yZWxhdGl2ZSAoYWRkcnMsIG9iamZp bGUtPm9iZmQpOwotIAotICAgLyogSW5pdGlhbGl6ZSBzeW1ib2wgcmVhZGluZyByb3V0aW5lcyBm b3IgdGhpcyBvYmpmaWxlLCBhbGxvdyBjb21wbGFpbnRzIHRvCi0gICAgICBhcHBlYXIgZm9yIHRo aXMgbmV3IGZpbGUsIGFuZCByZWNvcmQgaG93IHZlcmJvc2UgdG8gYmUsIHRoZW4gZG8gdGhlCi1A QCAtOTU5LDcgKzEwMTMsNiBAQCBzeW1ib2xfZmlsZV9hZGRfd2l0aF9hZGRyc19vcl9vZmZzZXRz IChiZmQgKmFiZmQsCi0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSAgIHN0cnVjdCBwYXJ0 aWFsX3N5bXRhYiAqcHN5bXRhYjsKLSAgIGNoYXIgKmRlYnVnZmlsZSA9IE5VTEw7Ci0tICBzdHJ1 Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKm9yaWdfYWRkcnMgPSBOVUxMOwotICAgc3RydWN0IGNsZWFu dXAgKm15X2NsZWFudXBzOwotICAgY29uc3QgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUg KGFiZmQpOwotICAgY29uc3QgaW50IGZyb21fdHR5ID0gYWRkX2ZsYWdzICYgU1lNRklMRV9WRVJC T1NFOwotQEAgLTk4MSwxMiArMTAzNCw2IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29y X29mZnNldHMgKGJmZCAqYWJmZCwKLSAgICAgb2JqZmlsZS0+ZmxhZ3MgfD0gT0JKRl9NQUlOOwot ICAgZGlzY2FyZF9jbGVhbnVwcyAobXlfY2xlYW51cHMpOwotIAotLSAgaWYgKGFkZHJzKQotLSAg ICB7Ci0tICAgICAgb3JpZ19hZGRycyA9IGNvcHlfc2VjdGlvbl9hZGRyX2luZm8gKGFkZHJzKTsK LS0gICAgICBtYWtlX2NsZWFudXBfZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAob3JpZ19hZGRycyk7 Ci0tICAgIH0KLS0KLSAgIC8qIFdlIGVpdGhlciBjcmVhdGVkIGEgbmV3IG1hcHBlZCBzeW1ib2wg dGFibGUsIG1hcHBlZCBhbiBleGlzdGluZwotICAgICAgc3ltYm9sIHRhYmxlIGZpbGUgd2hpY2gg aGFzIG5vdCBoYWQgaW5pdGlhbCBzeW1ib2wgcmVhZGluZwotICAgICAgcGVyZm9ybWVkLCBvciBu ZWVkIHRvIHJlYWQgYW4gdW5tYXBwZWQgc3ltYm9sIHRhYmxlLiAqLwotQEAgLTEwMzMsMTggKzEw ODAsMTcgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZk LAotICAgICAgYC5nbnVfZGVidWdsaW5rJyBtYXkgbm8gbG9uZ2VyIGJlIHByZXNlbnQgd2l0aCBg Lm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCi0gICBpZiAoIWhhc19hbnlfZGVidWdfc3ltYm9scyAo b2JqZmlsZSkpCi0gICAgIGRlYnVnZmlsZSA9IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAob2Jq ZmlsZSk7Ci0rCi0gICBpZiAoZGVidWdmaWxlKQotICAgICB7Ci0tICAgICAgaWYgKGFkZHJzICE9 IE5VTEwpCi0tCXsKLS0JICBvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlCi0tICAgICAg ICAgICAgPSBzeW1ib2xfZmlsZV9hZGQgKGRlYnVnZmlsZSwgYWRkX2ZsYWdzLCBvcmlnX2FkZHJz LCBmbGFncyk7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICBvYmpmaWxlLT5zZXBhcmF0ZV9k ZWJ1Z19vYmpmaWxlCi0tICAgICAgICAgICAgPSBzeW1ib2xfZmlsZV9hZGQgKGRlYnVnZmlsZSwg YWRkX2ZsYWdzLCBOVUxMLCBmbGFncyk7Ci0tCX0KLSsgICAgICBzdHJ1Y3Qgc2VjdGlvbl9hZGRy X2luZm8gKm9iamZpbGVfYWRkcnM7Ci0rCi0rICAgICAgb2JqZmlsZV9hZGRycyA9IGJ1aWxkX3Nl Y3Rpb25fYWRkcl9pbmZvX2Zyb21fb2JqZmlsZSAob2JqZmlsZSk7Ci0rICAgICAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgb2JqZmlsZV9hZGRycyk7Ci0rCi0rICAgICAgb2JqZmlsZS0+c2VwYXJhdGVf ZGVidWdfb2JqZmlsZSA9IHN5bWJvbF9maWxlX2FkZCAoZGVidWdmaWxlLCBhZGRfZmxhZ3MsCi0r CQkJCQkJCSBvYmpmaWxlX2FkZHJzLCBmbGFncyk7Ci0rCi0gICAgICAgb2JqZmlsZS0+c2VwYXJh dGVfZGVidWdfb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluawotICAgICAg ICAgPSBvYmpmaWxlOwotIAotZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmls ZS5oCi1pbmRleCBiZjlkOWU3Li5iZmY2YmQ4IDEwMDY0NAotLS0tIGEvZ2RiL3N5bWZpbGUuaAot KysrIGIvZ2RiL3N5bWZpbGUuaAotQEAgLTE4MSw2ICsxODEsMTYgQEAgc3RydWN0IHN5bV9mbnMK LSAKLSB9OwotIAotK2V4dGVybiBzdHJ1Y3Qgc2VjdGlvbl9hZGRyX2luZm8gKgotKwkJIGJ1aWxk X3NlY3Rpb25fYWRkcl9pbmZvX2Zyb21fb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp OwotKwotK2V4dGVybiB2b2lkIHJlbGF0aXZlX2FkZHJfaW5mb190b19zZWN0aW9uX29mZnNldHMK LSsgIChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpzZWN0aW9uX29mZnNldHMsIGludCBudW1fc2Vj dGlvbnMsCi0rICAgc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRycyk7Ci0rCi0rZXh0ZXJu IHZvaWQgYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgKHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAq YWRkcnMsCi0rCQkJCSAgICAgYmZkICphYmZkKTsKLSsKLSAvKiBUaGUgZGVmYXVsdCB2ZXJzaW9u IG9mIHN5bV9mbnMuc3ltX29mZnNldHMgZm9yIHJlYWRlcnMgdGhhdCBkb24ndAotICAgIGRvIGFu eXRoaW5nIHNwZWNpYWwuICAqLwotIAotZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9z eW10YWIuYwotaW5kZXggODJlMDE2My4uMDExMTdlMyAxMDA2NDQKLS0tLSBhL2dkYi9zeW10YWIu YwotKysrIGIvZ2RiL3N5bXRhYi5jCi1AQCAtMTQ0OSw3ICsxNDQ5LDEyIEBAIGxvb2t1cF9vYmpm aWxlX2Zyb21fYmxvY2sgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spCi0gICAvKiBHbyB0aHJv dWdoIFNZTVRBQlMuICAqLwotICAgQUxMX1NZTVRBQlMgKG9iaiwgcykKLSAgICAgaWYgKGJsb2Nr ID09IEJMT0NLVkVDVE9SX0JMT0NLIChCTE9DS1ZFQ1RPUiAocyksIEdMT0JBTF9CTE9DSykpCi0t ICAgICAgcmV0dXJuIG9iajsKLSsgICAgICB7Ci0rCWlmIChvYmotPnNlcGFyYXRlX2RlYnVnX29i amZpbGVfYmFja2xpbmspCi0rCSAgb2JqID0gb2JqLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2Jh Y2tsaW5rOwotKwotKwlyZXR1cm4gb2JqOwotKyAgICAgIH0KLSAKLSAgIHJldHVybiBOVUxMOwot IH0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC1saWIu YyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLWxpYi5jCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOWNhOTQzZQotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAtbGliLmMKLUBAIC0wLDAgKzEsNDAg QEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgot KwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8 c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsj aW5jbHVkZSA8c3RkaW8uaD4KLSsKLSt2b2lkCi0rbGliZnVuYyAoY29uc3QgY2hhciAqYWN0aW9u KQotK3sKLSsgIGFzc2VydCAoYWN0aW9uICE9IE5VTEwpOwotKwotKyAgaWYgKHN0cmNtcCAoYWN0 aW9uLCAic2VndiIpID09IDApCi0rICAgIHJhaXNlIChTSUdTRUdWKTsKLSsKLSsgIGlmIChzdHJj bXAgKGFjdGlvbiwgInNsZWVwIikgPT0gMCkKLSsgICAgewotKyAgICAgIHB1dHMgKCJzbGVlcGlu ZyIpOwotKyAgICAgIGZmbHVzaCAoc3Rkb3V0KTsKLSsKLSsgICAgICBzbGVlcCAoNjApOwotKyAg ICB9Ci0rCi0rICBhc3NlcnQgKDApOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWludGVycC1tYWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFr LWludGVycC1tYWluLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lMTJl YzJiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWlu dGVycC1tYWluLmMKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rCi0rZXh0ZXJuIHZvaWQgbGli ZnVuYyAoY29uc3QgY2hhciAqYWN0aW9uKTsKLSsKLStpbnQKLSttYWluIChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCi0rewotKyAgYXNzZXJ0IChhcmdjID09IDIpOwotKwotKyAgbGliZnVuYyAoYXJn dlsxXSk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1p bnRlcnAuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTJmNDYwYwot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAu ZXhwCi1AQCAtMCwwICsxLDU0NSBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMg VGhpcyB0ZXN0IG9ubHkgd29ya3Mgb24gR05VL0xpbnV4LgotK2lmIHsgIVtpc25hdGl2ZV0gfHwg W2lzX3JlbW90ZSBob3N0XSB8fCAhW2lzdGFyZ2V0ICotbGludXgqXSB8fCBbc2tpcF9zaGxpYl90 ZXN0c119IHsKLSsgICAgY29udGludWUKLSt9Ci0rCi0rc2V0IHRlc3QgImJyZWFrLWludGVycCIK LStzZXQgYmlucHJlZml4ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fQotKyMgT25seSB0byBn ZXQgdGhlICRpbnRlcnBfc3lzdGVtIG5hbWUuCi0rc2V0IHNyY2ZpbGVfdGVzdCAic3RhcnQuYyIK LStzZXQgYmluZmlsZV90ZXN0ICR7dGVzdH0tdGVzdAotK3NldCBiaW5maWxlX2xpYiAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdH0uc28KLStzZXQgc3JjZmlsZSAiJHt0ZXN0fS1tYWluLmMiCi0r c2V0IHNyY2ZpbGVfbGliICIke3Rlc3R9LWxpYi5jIgotKwotK2lmIFtnZXRfY29tcGlsZXJfaW5m byAke2JpbmZpbGVfbGlifV0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBVc2UgLXNvbmFt ZSBzbyB0aGF0IGl0IGlzIGxpc3RlZCB3aXRoICIgPT4gIiBieSBsZGQgYW5kIHRoaXMgdGVzdGNh c2UgbWFrZXMKLSsjIGEgY29weSBvZiAke2JpbmZpbGVfbGlifSBmb3IgZWFjaCBwcmVsaW5rIHZh cmlhbnQuCi0rCi0raWYge1tnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9 LVdsLC1zb25hbWUsJHt0ZXN0fS5zb11dICE9ICIifSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsK LStpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0fS5leHAgJGJpbmZpbGVfdGVzdCAke3NyY2Zp bGVfdGVzdH0ge31dID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIFJldHVybiB0 aGUgaW50ZXJwcmV0ZXIgZmlsZW5hbWUgc3RyaW5nLgotKyMgUmV0dXJuICIiIGlmIG5vIGludGVy cHJldGVyIHdhcyBmb3VuZC4KLStwcm9jIHNlY3Rpb25fZ2V0IHtleGVjIHNlY3Rpb259IHsKLSsg ICAgZ2xvYmFsIG9iamRpcgotKyAgICBnbG9iYWwgc3ViZGlyCi0rICAgIHNldCB0bXAgIiR7b2Jq ZGlyfS8ke3N1YmRpcn0vYnJlYWstaW50ZXJwLmludGVycCIKLSsgICAgc2V0IG9iamNvcHlfcHJv Z3JhbSBbdHJhbnNmb3JtIG9iamNvcHldCi0rCi0rICAgIHNldCBjb21tYW5kICJleGVjICRvYmpj b3B5X3Byb2dyYW0gLU8gYmluYXJ5IC0tc2V0LXNlY3Rpb24tZmxhZ3MgJHNlY3Rpb249QSAtLWNo YW5nZS1zZWN0aW9uLWFkZHJlc3MgJHNlY3Rpb249MCAtaiAkc2VjdGlvbiAkZXhlYyAkdG1wIgot KyAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQgaXMgJGNvbW1hbmQiCi0rICAgIHNldCByZXN1bHQg W2NhdGNoICRjb21tYW5kIG91dHB1dF0KLSsgICAgdmVyYm9zZSAtbG9nICJyZXN1bHQgaXMgJHJl c3VsdCIKLSsgICAgdmVyYm9zZSAtbG9nICJvdXRwdXQgaXMgJG91dHB1dCIKLSsgICAgaWYgeyRy ZXN1bHQgPT0gMX0gewotKwlyZXR1cm4gIiIKLSsgICAgfQotKyAgICBzZXQgZmkgW29wZW4gJHRt cF0KLSsgICAgZmNvbmZpZ3VyZSAkZmkgLXRyYW5zbGF0aW9uIGJpbmFyeQotKyAgICBzZXQgZGF0 YSBbcmVhZCAkZmldCi0rICAgIGNsb3NlICRmaQotKyAgICAjZmlsZSBkZWxldGUgJHRtcAotKyAg ICAjIC5pbnRlcnAgaGFzIHNpemUgJGxlbiArIDEgYnV0IC5nbnVfZGVidWdsaW5rIGNvbnRhaW5z IGdhcmJhZ2UgYWZ0ZXIgXDAwMC4KLSsgICAgc2V0IGxlbiBbc3RyaW5nIGZpcnN0IFwwMDAgJGRh dGFdCi0rICAgIGlmIHskbGVuIDwgMH0gewotKwl2ZXJib3NlIC1sb2cgInNlY3Rpb24gJHNlY3Rp b24gbm90IGZvdW5kIgotKwlyZXR1cm4gIiIKLSsgICAgfQotKyAgICBzZXQgcmV0dmFsIFtzdHJp bmcgcmFuZ2UgJGRhdGEgMCBbZXhwciAkbGVuIC0gMV1dCi0rICAgIHZlcmJvc2UgLWxvZyAic2Vj dGlvbiAkc2VjdGlvbiBpcyA8JHJldHZhbD4iCi0rICAgIHJldHVybiAkcmV0dmFsCi0rfQotKwot KyMgTm90ZTogVGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZmlsZSBjb250ZW50IGJ1aWxkLWlkL2Ny YzMyIGFyZSBub3QgdmVyaWZpZWQKLSsjIGNvbnRyYXJ5IHRvIHRoZSBHREIgc2VhcmNoIGFsZ29y aXRobSBza2lwcGluZyBub24tbWF0Y2hpbmcgb25lcy4KLStwcm9jIHN5c3RlbV9kZWJ1Z19nZXQg e2V4ZWN9IHsKLSsgICAgZ2xvYmFsIGRlYnVnX3Jvb3QKLSsKLSsgICAgc2V0IGV4ZWNfYnVpbGRf aWRfZGVidWcgW2J1aWxkX2lkX2RlYnVnX2ZpbGVuYW1lX2dldCAkZXhlY10KLSsgICAgc2V0IGRl YnVnX2Jhc2UgIltmaWxlIHRhaWwgJGV4ZWNdLmRlYnVnIgotKyAgICBzZXQgZXhlY19kaXIgW2Zp bGUgZGlybmFtZSAkZXhlY10KLSsKLSsgICAgIyBpc2ZpbGUgcmV0dXJucyAxIGV2ZW4gZm9yIHN5 bWxpbmtzIHRvIGZpbGVzLgotKyAgICBzZXQgcmV0dmFsICRkZWJ1Z19yb290LyRleGVjX2J1aWxk X2lkX2RlYnVnCi0rICAgIGlmIFtmaWxlIGlzZmlsZSAkcmV0dmFsXSB7Ci0rCXJldHVybiAkcmV0 dmFsCi0rICAgIH0KLSsgICAgc2V0IHJldHZhbCAkZXhlY19kaXIvJGRlYnVnX2Jhc2UKLSsgICAg aWYgW2ZpbGUgaXNmaWxlICRyZXR2YWxdIHsKLSsJcmV0dXJuICRyZXR2YWwKLSsgICAgfQotKyAg ICBzZXQgcmV0dmFsICRleGVjX2Rpci8uZGVidWcvJGRlYnVnX2Jhc2UKLSsgICAgaWYgW2ZpbGUg aXNmaWxlICRyZXR2YWxdIHsKLSsJcmV0dXJuICRyZXR2YWwKLSsgICAgfQotKyAgICBzZXQgcmV0 dmFsICRkZWJ1Z19yb290LyRleGVjX2Rpci8kZGVidWdfYmFzZQotKyAgICBpZiBbZmlsZSBpc2Zp bGUgJHJldHZhbF0gewotKwlyZXR1cm4gJHJldHZhbAotKyAgICB9Ci0rICAgIHJldHVybiAiIgot K30KLSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK3NldCBkZWJ1Z19yb290ICIiCi0rc2V0IHRl c3QgInNob3cgZGVidWctZmlsZS1kaXJlY3RvcnkiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3Qg JHRlc3QgewotKyAgICAtcmUgIlRoZSBkaXJlY3Rvcnkgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3lt Ym9scyBhcmUgc2VhcmNoZWQgZm9yIGlzIFwiKC4qKVwiLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0r CXNldCBkZWJ1Z19yb290ICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKyAgICB9Ci0rfQotKwotK3Nl dCBpbnRlcnBfc3lzdGVtIFtzZWN0aW9uX2dldCAke29iamRpcn0vJHtzdWJkaXJ9LyRiaW5maWxl X3Rlc3QgLmludGVycF0KLStzZXQgaW50ZXJwX3N5c3RlbV9kZWJ1ZyBbc3lzdGVtX2RlYnVnX2dl dCAkaW50ZXJwX3N5c3RlbV0KLSt2ZXJib3NlIC1sb2cgIiRpbnRlcnBfc3lzdGVtIGhhcyBkZWJ1 ZyAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyIKLSsKLStwcm9jIHByZWxpbmtOT19ydW4ge2FyZ30gewot KyAgICBzZXQgY29tbWFuZCAiZXhlYyAvdXNyL3NiaW4vcHJlbGluayAtdU4gJGFyZyIKLSsgICAg dmVyYm9zZSAtbG9nICJjb21tYW5kIGlzICRjb21tYW5kIgotKyAgICBzZXQgcmVzdWx0IFtjYXRj aCAkY29tbWFuZCBvdXRwdXRdCi0rICAgIHZlcmJvc2UgLWxvZyAicmVzdWx0IGlzICRyZXN1bHQi Ci0rICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IGlzICRvdXRwdXQiCi0rICAgIHJldHVybiBbbGlz dCAkcmVzdWx0ICRvdXRwdXRdCi0rfQotKwotK3Byb2MgcHJlbGlua05PIHthcmcge25hbWUge319 fSB7Ci0rICAgIGlmIHskbmFtZSA9PSAiIn0gewotKwlzZXQgbmFtZSBbZmlsZSB0YWlsICRhcmdd Ci0rICAgIH0KLSsgICAgc2V0IHRlc3QgInVucHJlbGluayAkbmFtZSIKLSsgICAgc2V0IHJ1biBb cHJlbGlua05PX3J1biAkYXJnXQotKyAgICBzZXQgcmVzdWx0IFtsaW5kZXggJHJ1biAwXQotKyAg ICBzZXQgb3V0cHV0IFtsaW5kZXggJHJ1biAxXQotKyAgICBpZiB7JHJlc3VsdCA9PSAwICYmICRv dXRwdXQgPT0gIiJ9IHsKLSsJdmVyYm9zZSAtbG9nICIkbmFtZSBoYXMgYmVlbiBub3cgdW5wcmVs aW5rZWQiCi0rCXNldCBydW4gW3ByZWxpbmtOT19ydW4gJGFyZ10KLSsJc2V0IHJlc3VsdCBbbGlu ZGV4ICRydW4gMF0KLSsJc2V0IG91dHB1dCBbbGluZGV4ICRydW4gMV0KLSsgICAgfQotKyAgICAj IExhc3QgbGluZSBkb2VzIG1pc3MgdGhlIHRyYWlsaW5nIFxuLgotKyAgICBpZiB7JHJlc3VsdCA9 PSAxICYmIFtyZWdleHAge14oL3Vzci9zYmluL3ByZWxpbms6IFteIF0qIGRvZXMgbm90IGhhdmUg LmdudS5wcmVsaW5rX3VuZG8gc2VjdGlvblxuPykqJH0gJG91dHB1dF19IHsKLSsJcGFzcyAkdGVz dAotKwlyZXR1cm4gMQotKyAgICB9IGVsc2UgewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAwCi0r ICAgIH0KLSt9Ci0rCi0rcHJvYyBwcmVsaW5rWUVTIHthcmcge25hbWUgIiJ9fSB7Ci0rICAgIGlm IHskbmFtZSA9PSAiIn0gewotKwlzZXQgbmFtZSBbZmlsZSB0YWlsICRhcmddCi0rICAgIH0KLSsg ICAgc2V0IHRlc3QgInByZWxpbmsgJG5hbWUiCi0rICAgIHNldCBjb21tYW5kICJleGVjIC91c3Iv c2Jpbi9wcmVsaW5rIC1xTlIgLS1uby1leGVjLXNoaWVsZCAkYXJnIgotKyAgICB2ZXJib3NlIC1s b2cgImNvbW1hbmQgaXMgJGNvbW1hbmQiCi0rICAgIHNldCByZXN1bHQgW2NhdGNoICRjb21tYW5k IG91dHB1dF0KLSsgICAgdmVyYm9zZSAtbG9nICJyZXN1bHQgaXMgJHJlc3VsdCIKLSsgICAgdmVy Ym9zZSAtbG9nICJvdXRwdXQgaXMgJG91dHB1dCIKLSsgICAgaWYgeyRyZXN1bHQgPT0gMCAmJiAk b3V0cHV0ID09ICIifSB7Ci0rCXBhc3MgJHRlc3QKLSsJcmV0dXJuIDEKLSsgICAgfSBlbHNlIHsK LSsJZmFpbCAkdGVzdAotKwlyZXR1cm4gMAotKyAgICB9Ci0rfQotKwotKyMgUmVzb2x2ZSBzeW1s aW5rcy4KLStwcm9jIHN5bWxpbmtfcmVzb2x2ZSB7ZmlsZX0gewotKyAgICBzZXQgbG9vcCAwCi0r ICAgIHdoaWxlIHtbZmlsZSB0eXBlICRmaWxlXSA9PSAibGluayJ9IHsKLSsJc2V0IHRhcmdldCBb ZmlsZSByZWFkbGluayAkZmlsZV0KLSsJaWYge1tmaWxlIHBhdGh0eXBlICR0YXJnZXRdID09ICJy ZWxhdGl2ZSJ9IHsKLSsJICAgIHNldCBzcmMyIFtmaWxlIGRpcm5hbWUgJGZpbGVdLyR0YXJnZXQK LSsJfSBlbHNlIHsKLSsJICAgIHNldCBzcmMyICR0YXJnZXQKLSsJfQotKwl2ZXJib3NlIC1sb2cg IlJlc29sdmVkIHN5bWxpbmsgJGZpbGUgdGFyZ2V0dGluZyAkdGFyZ2V0IGFzICRzcmMyIgotKwlz ZXQgZmlsZSAkc3JjMgotKwotKwlzZXQgbG9vcCBbZXhwciAkbG9vcCArIDFdCi0rCWlmIHskbG9v cCA+IDMwfSB7Ci0rCSAgICBmYWlsICJMb29waW5nIHN5bWxpbmsgcmVzb2x1dGlvbiBmb3IgJGZp bGUiCi0rCSAgICByZXR1cm4gIiIKLSsJfQotKyAgICB9Ci0rICAgIHJldHVybiAkZmlsZQotK30K LSsKLStwcm9jIGNvcHkge3NyYyBkZXN0fSB7Ci0rICAgIHNldCBzcmMgW3N5bWxpbmtfcmVzb2x2 ZSAkc3JjXQotKyAgICAjIFRlc3QgbmFtZSB3b3VsZCBjb250YWluIGJ1aWxkLWlkIGhhc2ggZm9y IHN5bWxpbmstdW5yZXNvbHZlZCAkc3JjLgotKyAgICBzZXQgdGVzdCAiY29weSBbZmlsZSB0YWls ICRzcmNdIHRvIFtmaWxlIHRhaWwgJGRlc3RdIgotKyAgICBzZXQgY29tbWFuZCAiZmlsZSBjb3B5 IC1mb3JjZSAkc3JjICRkZXN0IgotKyAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQgaXMgJGNvbW1h bmQiCi0rICAgIGlmIFtjYXRjaCAkY29tbWFuZF0gewotKwlmYWlsICR0ZXN0Ci0rCXJldHVybiAw Ci0rICAgIH0gZWxzZSB7Ci0rICAgIAlwYXNzICR0ZXN0Ci0rCXJldHVybiAxCi0rICAgIH0KLSt9 Ci0rCi0rcHJvYyBzdHJpcF9kZWJ1ZyB7ZGVzdH0gewotKyAgICBzZXQgdGVzdCAic3RyaXAgW2Zp bGUgdGFpbCAkZGVzdF0iCi0rICAgIHNldCBzdHJpcF9wcm9ncmFtIFt0cmFuc2Zvcm0gc3RyaXBd Ci0rICAgIHNldCBjb21tYW5kICJleGVjICRzdHJpcF9wcm9ncmFtIC0tc3RyaXAtZGVidWcgJGRl c3QiCi0rICAgIHZlcmJvc2UgLWxvZyAiY29tbWFuZCBpcyAkY29tbWFuZCIKLSsgICAgaWYgW2Nh dGNoICRjb21tYW5kXSB7Ci0rCWZhaWwgJHRlc3QKLSsJcmV0dXJuIDAKLSsgICAgfSBlbHNlIHsK LSsgICAgCXBhc3MgJHRlc3QKLSsJcmV0dXJuIDEKLSsgICAgfQotK30KLSsKLSsjIGBydW50bycg ZG9lcyBub3QgY2hlY2sgd2Ugc3RvcHBlZCByZWFsbHkgYXQgdGhlIGZ1bmN0aW9uIHdlIHNwZWNp ZmllZC4KLStwcm9jIHJlYWNoIHtmdW5jIGNvbW1hbmR9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9t cHQKLSsKLSsgICAgaWYgW2dkYl9icmVha3BvaW50ICRmdW5jIGFsbG93LXBlbmRpbmddIHsKLSsJ c2V0IHRlc3QgInJlYWNoICRmdW5jIgotKwlnZGJfdGVzdF9tdWx0aXBsZSAkY29tbWFuZCAkdGVz dCB7Ci0rCSAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssICRmdW5jIFxcKC4qXFwpIGF0IC4q OlxbMC05XF0rXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotKwkJcGFzcyAkdGVzdAotKwkgICAgfQot KwkgICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBcWzAtOXhhLWZcXSsgaW4gJGZ1bmMgXFwo XFwpKCBmcm9tIC4qKT9cclxuJGdkYl9wcm9tcHQgJCIgeyAKLSsJCXBhc3MgJHRlc3QKLSsJICAg IH0KLSsJfQotKyAgICB9Ci0rfQotKwotK3Byb2MgdGVzdF9jb3JlIHtmaWxlfSB7Ci0rICAgIGds b2JhbCBzcmNkaXIgc3ViZGlyIGdkYl9wcm9tcHQKLSsKLSsgICAgc2V0IGNvcmVmaWxlIFtjb3Jl X2ZpbmQgJGZpbGUge30gInNlZ3YiXQotKyAgICBpZiB7JGNvcmVmaWxlID09ICIifSB7Ci0rCXJl dHVybgotKyAgICB9Ci0rCi0rICAgIGdkYl9leGl0Ci0rICAgIGdkYl9zdGFydAotKyAgICAjIENs ZWFyIGl0IHRvIG5ldmVyIGZpbmQgYW55IHNlcGFyYXRlIGRlYnVnIGluZm9zIGluICRkZWJ1Z19y b290LgotKyAgICBnZGJfdGVzdCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IiAiIiAic2V0IGRl YnVnLWZpbGUtZGlyZWN0b3J5IGZvciBjb3JlIgotKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKLSsgICAgZ2RiX2xvYWQgJGZpbGUKLSsKLSsgICAgIyBEbyBub3QgY2hl Y2sgdGhlIGJpbmFyeSBmaWxlbmFtZSBhcyBpdCBtYXkgYmUgdHJ1bmNhdGVkLgotKyAgICBnZGJf dGVzdCAiY29yZS1maWxlICRjb3JlZmlsZSIgIkNvcmUgd2FzIGdlbmVyYXRlZCBieSAuKlxyXG4j MCAuKiIgImNvcmUgbG9hZGVkIgotKwotKyAgICAjIENoZWNrIHRoZXJlIGlzIG5vICJhcmdjPWNh bid0IGNvbXB1dGUgQ0ZBIGZvciB0aGlzIGZyYW1lIi4KLSsgICAgZ2RiX3Rlc3QgImJ0IiAiI1xb MC05XF0rICtcW15cclxuXF0qXFxtbGliZnVuY1xcTVxbXlxyXG5cXSpcclxuI1xbMC05XF0rICtc W15cclxuXF0qXFxtbWFpbiBcXCgoYXJnYz0yLC4qKT9cXCkuKiIgImNvcmUgbWFpbiBidCIKLSt9 Ci0rCi0rcHJvYyB0ZXN0X2F0dGFjaCB7ZmlsZX0gewotKyAgICBnbG9iYWwgYm9hcmRfaW5mbwot KwotKyAgICBnZGJfZXhpdAotKwotKyAgICBzZXQgdGVzdCAic2xlZXAgZnVuY3Rpb24gc3RhcnRl ZCIKLSsKLSsgICAgc2V0IGNvbW1hbmQgIiR7ZmlsZX0gc2xlZXAiCi0rICAgIHNldCByZXMgW3Jl bW90ZV9zcGF3biBob3N0ICRjb21tYW5kXTsKLSsgICAgaWYgeyAkcmVzIDwgMCB8fCAkcmVzID09 ICIiIH0gewotKwlwZXJyb3IgIlNwYXduaW5nICRjb21tYW5kIGZhaWxlZC4iCi0rCWZhaWwgJHRl c3QKLSsJcmV0dXJuCi0rICAgIH0KLSsgICAgc2V0IHBpZCBbZXhwX3BpZCAtaSAkcmVzXQotKyAg ICBnZGJfZXhwZWN0IHsKLSsJLXJlICJzbGVlcGluZ1xyXG4iIHsKLSsJICAgIHBhc3MgJHRlc3QK LSsJfQotKwllb2YgewotKwkgICAgZmFpbCAiJHRlc3QgKGVvZikiCi0rCSAgICByZXR1cm4KLSsJ fQotKwl0aW1lb3V0IHsKLSsJICAgIGZhaWwgIiR0ZXN0ICh0aW1lb3V0KSIKLSsJICAgIHJldHVy bgotKwl9Ci0rICAgIH0KLSsKLSsgICAgZ2RiX2V4aXQKLSsgICAgZ2RiX3N0YXJ0Ci0rICAgIGdk Yl90ZXN0ICJhdHRhY2ggJHBpZCIgIkF0dGFjaGluZyB0byBwcm9jZXNzICRwaWRcclxuLioiICJh dHRhY2giCi0rICAgICMgQ2hlY2sgdGhlcmUgaXMgbm8gImFyZ2M9Y2FuJ3QgY29tcHV0ZSBDRkEg Zm9yIHRoaXMgZnJhbWUiLgotKyAgICBnZGJfdGVzdCAiYnQiICIjXFswLTlcXSsgK1xbXlxyXG5c XSpcXG1saWJmdW5jXFxNXFteXHJcblxdKlxyXG4jXFswLTlcXSsgK1xbXlxyXG5cXSpcXG1tYWlu IFxcKChhcmdjPTIsLiopP1xcKS4qIiAiYXR0YWNoIG1haW4gYnQiCi0rICAgIGdkYl9leGl0Ci0r Ci0rICAgIHJlbW90ZV9leGVjIGhvc3QgImtpbGwgLTkgJHBpZCIKLSt9Ci0rCi0rcHJvYyB0ZXN0 X2xkIHtmaWxlIGlmbWFpbiB0cnlub3N5bX0gewotKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBn ZGJfcHJvbXB0Ci0rCi0rICAgICMgRmlyc3QgdGVzdCBub3JtYWwgYGZpbGUnLWNvbW1hbmQgbG9h ZGVkICRGSUxFIHdpdGggc3ltYm9scy4KLSsKLSsgICAgZ2RiX2V4aXQKLSsgICAgZ2RiX3N0YXJ0 Ci0rICAgICMgQ2xlYXIgaXQgdG8gbmV2ZXIgZmluZCBhbnkgc2VwYXJhdGUgZGVidWcgaW5mb3Mg aW4gJGRlYnVnX3Jvb3QuCi0rICAgIGdkYl90ZXN0ICJzZXQgZGVidWctZmlsZS1kaXJlY3Rvcnki Ci0rICAgIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotKyAgICBnZGJfbG9h ZCAkZmlsZQotKwotKyAgICByZWFjaCAiZGxfbWFpbiIgInJ1biBzZWd2IgotKwotKyAgICBnZGJf dGVzdCAiYnQiICIjMCArXFteXHJcblxdKlxcbWRsX21haW5cXE0uKiIgImRsIGJ0IgotKwotKyAg ICBpZiAkaWZtYWluIHsKLSsJcmVhY2ggIm1haW4iIGNvbnRpbnVlCi0rCi0rCXJlYWNoICJsaWJm dW5jIiBjb250aW51ZQotKwotKwkjIENoZWNrIHRoZXJlIGlzIG5vICJhcmdjPWNhbid0IGNvbXB1 dGUgQ0ZBIGZvciB0aGlzIGZyYW1lIi4KLSsJZ2RiX3Rlc3QgImJ0IiAiIzAgK1xbXlxyXG5cXSpc XG1saWJmdW5jXFxNXFteXHJcblxdKlxyXG4jMSArXFteXHJcblxdKlxcbW1haW4gXFwoKGFyZ2M9 MiwuKik/XFwpLioiICJtYWluIGJ0IgotKwotKwl0ZXN0X2NvcmUgJGZpbGUKLSsKLSsJdGVzdF9h dHRhY2ggJGZpbGUKLSsgICAgfQotKwotKyAgICBpZiAhJHRyeW5vc3ltIHsKLSsJcmV0dXJuCi0r ICAgIH0KLSsKLSsgICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBzZXQgb2xkX2xkcHJlZml4ICRw Zl9wcmVmaXgKLSsgICAgbGFwcGVuZCBwZl9wcmVmaXggInN5bWJvbC1sZXNzOiIKLSsKLSsgICAg IyBUZXN0IGFsc28gYGV4ZWMtZmlsZSctY29tbWFuZCBsb2FkZWQgJEZJTEUgLSB0aGVyZWZvcmUg d2l0aG91dCBzeW1ib2xzLgotKyAgICAjIFNZTUJPTF9PQkpGSUxFIGlzIG5vdCBhdmFpbGFibGUg YW5kIG9ubHkgRVhFQ19CRkQgbXVzdCBiZSB1c2VkLgotKwotKyAgICBnZGJfZXhpdAotKyAgICBn ZGJfc3RhcnQKLSsgICAgIyBDbGVhciBpdCB0byBuZXZlciBmaW5kIGFueSBzZXBhcmF0ZSBkZWJ1 ZyBpbmZvcyBpbiAkZGVidWdfcm9vdC4KLSsgICAgZ2RiX3Rlc3QgInNldCBkZWJ1Zy1maWxlLWRp cmVjdG9yeSIKLSsgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rCi0r ICAgICMgVGVzdCBubyAoZXJyb3IpIG1lc3NhZ2UgaGFzIGJlZW4gcHJpbnRlZCBieSBgZXhlYy1m aWxlJy4KLSsgICAgc2V0IGVzY2FwZWRmaWxlIFtzdHJpbmdfdG9fcmVnZXhwICRmaWxlXQotKyAg ICBnZGJfdGVzdCAiZXhlYy1maWxlICRmaWxlIiAiZXhlYy1maWxlICRlc2NhcGVkZmlsZSIgImxv YWQiCi0rCi0rICAgIGlmICRpZm1haW4gewotKwlyZWFjaCAiZGxfbWFpbiIgcnVuCi0rCi0rCXNl dCB0ZXN0ICJpbmZvIGZpbGVzIgotKwlzZXQgZW50cnlub2hleCAiIgotKwlnZGJfdGVzdF9tdWx0 aXBsZSAkdGVzdCAkdGVzdCB7Ci0rCSAgICAtcmUgIlxyXG5cW1x0IFxdKkVudHJ5IHBvaW50Olxb XHQgXF0qMHgoXFswLTlhLWZcXSspXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotKwkJc2V0IGVudHJ5 bm9oZXggJGV4cGVjdF9vdXQoMSxzdHJpbmcpIAotKwkJcGFzcyAkdGVzdAotKwkgICAgfQotKwl9 Ci0rCWlmIHskZW50cnlub2hleCAhPSAiIn0gewotKwkgICAgZ2RiX3Rlc3QgImJyZWFrICoweCRl bnRyeW5vaGV4IiAiIiAiYnJlYWsgYXQgZW50cnkgcG9pbnQiCi0rCSAgICBnZGJfdGVzdCAiY29u dGludWUiICJcclxuQnJlYWtwb2ludCBcWzAtOVxdKywgMHgwKiRlbnRyeW5vaGV4IGluIC4qIiAi ZW50cnkgcG9pbnQgcmVhY2hlZCIKLSsJfQotKyAgICB9IGVsc2UgewotKwkjIFRoZXJlIGlzIG5v IHN5bWJvbCB0byBicmVhayBhdCBsZC5zby4gIE1vcmVvdmVyIGl0IGNhbiBleGl0IHdpdGggYW4K LSsJIyBlcnJvciBjb2RlLgotKwlnZGJfdGVzdCAicnVuIiAiUHJvZ3JhbSBleGl0ZWQgKG5vcm1h bGx5fHdpdGggY29kZSBcWzAtOVxdKylcXC4iICJsZC5zbyBleGl0IgotKyAgICB9Ci0rCi0rICAg IHNldCBwZl9wcmVmaXggJG9sZF9sZHByZWZpeAotK30KLSsKLSsjIENyZWF0ZSBzZXBhcmF0ZSBi aW5hcmllcyBmb3IgZWFjaCB0ZXN0Y2FzZSAtIHRvIG1ha2UgdGhlIHBvc3NpYmxlIHJlcG9ydGVk Ci0rIyBwcm9ibGVtIHJlcHJvZHVjaWJsZSBhZnRlciB0aGUgd2hvbGUgdGVzdCBydW4gZmluaXNo ZXMuCi0rCi0rc2V0IG9sZF9sZHByZWZpeCAkcGZfcHJlZml4Ci0rZm9yZWFjaCBsZHByZWxpbmsg e05PIFlFU30gewotKyAgICBmb3JlYWNoIGxkc2VwZGVidWcge05PIElOIFNFUH0gewotKwkjIFNr aXAgcnVubmluZyB0aGUgbGRzZXBkZWJ1ZyB0ZXN0IGlmIHdlIGRvIG5vdCBoYXZlIHN5c3RlbSBz ZXBhcmF0ZQotKwkjIGRlYnVnIGluZm8gYXZhaWxhYmxlLgotKwlpZiB7JGludGVycF9zeXN0ZW1f ZGVidWcgPT0gIiIgJiYgJGxkc2VwZGVidWcgPT0gIlNFUCJ9IHsKLSsJICAgIGNvbnRpbnVlCi0r CX0KLSsKLSsJc2V0IGxkbmFtZSAiTERwcmVsaW5rJHtsZHByZWxpbmt9ZGVidWcke2xkc2VwZGVi dWd9IgotKwlzZXQgaW50ZXJwICRiaW5wcmVmaXgtJGxkbmFtZQotKwotKwkjIHByZWxpbmsgbmVl ZHMgdG8gYWx3YXlzIHByZWxpbmsgYWxsIHRoZSBkZXBlbmRlbmNpZXMgdG8gZG8gYW55IGZpbGUK LSsJIyBtb2RpZmljYXRpb25zIG9mIGl0cyBmaWxlcy4gIGxkLnNvIGFsc28gbmVlZHMgYWxsIHRo ZSBkZXBlbmRlbmNpZXMgdG8KLSsJIyBiZSBwcmVsaW5rZWQgdG8gb21pdCB0aGUgcmVsb2NhdGlv biBwcm9jZXNzLiAgSW4tbWVtb3J5IGZpbGUgb2Zmc2V0cwotKwkjIGFyZSBub3QgZGVwZW5kZW50 IHdoZXRoZXIgbGQuc28gd2VudCB0aGUgcHJlbGluayB3YXkgb3IgdGhyb3VnaCB0aGUKLSsJIyBy ZWxvY2F0aW9uIHByb2Nlc3MuCi0rCSMKLSsJIyBGb3IgR0RCIHdlIGFyZSBub3QgaW50ZXJlc3Rl ZCB3aGV0aGVyIHByZWxpbmsgc3VjY2VlZHMgYXMgaXQgaXMKLSsJIyB0cmFuc3BhcmVudCB0byBH REIuICBHREIgaXMgYmVpbmcgdGVzdGVkIGZvciBkaWZmZXJlbmNlcyBvZiBmaWxlCi0rCSMgb2Zm c2V0cyB2cy4gaW4tbWVtb3J5IG9mZnNldHMuICBTbyB3ZSBoYXZlIHRvIHByZWxpbmsgZXZlbiBs ZC5zbyBmb3IKLSsJIyB0aGUgQklOIG1vZGlmaWNhdGlvbiB0byBoYXBwZW4gYnV0IHdlIG5lZWQg dG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwKLSsJIyBwb3NzaWJseSB1bnByZWxpbmtlZCBsZC5zbyB0 byB0ZXN0IGFsbCB0aGUgY29tYmluYXRpb25zIGZvciBHREIuCi0rCXNldCBpbnRlcnBfc2F2ZWQg JHtpbnRlcnB9LXNhdmVkCi0rCi0rCXNldCBwZl9wcmVmaXggJG9sZF9sZHByZWZpeAotKwlsYXBw ZW5kIHBmX3ByZWZpeCAiJGxkbmFtZToiCi0rCi0rCWlmIHskbGRzZXBkZWJ1ZyA9PSAiTk8ifSB7 Ci0rCSAgICBjb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRlcnAKLSsJICAgICMgTmV2ZXIgY2FsbCBz dHJpcC1kZWJ1ZyBiZWZvcmUgdW5wcmVsaW5rOgotKwkgICAgIyBwcmVsaW5rOiAuLi46IFNlY3Rp b24gLm5vdGUuZ251LmJ1aWxkLWlkIGNyZWF0ZWQgYWZ0ZXIgcHJlbGlua2luZwotKwkgICAgaWYg IVtwcmVsaW5rTk8gJGludGVycF0gewotKwkJY29udGludWUKLSsJICAgIH0KLSsJICAgIHN0cmlw X2RlYnVnICRpbnRlcnAKLSsJfSBlbHNlaWYgeyRsZHNlcGRlYnVnID09ICJJTiIgJiYgJGludGVy cF9zeXN0ZW1fZGVidWcgPT0gIiJ9IHsKLSsJICAgIGNvcHkgJGludGVycF9zeXN0ZW0gJGludGVy cAotKwl9IGVsc2VpZiB7JGxkc2VwZGVidWcgPT0gIklOIiAmJiAkaW50ZXJwX3N5c3RlbV9kZWJ1 ZyAhPSAiIn0gewotKwkgICAgY29weSAkaW50ZXJwX3N5c3RlbSAkaW50ZXJwCi0rCSAgICBjb3B5 ICRpbnRlcnBfc3lzdGVtX2RlYnVnICIke2ludGVycH0uZGVidWciCi0rCSAgICAjIGV1LXVuc3Ry aXA6IERXQVJGIGRhdGEgaW4gJy4uLicgbm90IGFkanVzdGVkIGZvciBwcmVsaW5raW5nIGJpYXM7 IGNvbnNpZGVyIHByZWxpbmsgLXUKLSsJICAgIGlmIHshW3ByZWxpbmtOTyAkaW50ZXJwXSB8fCAh W3ByZWxpbmtOTyAiJHtpbnRlcnB9LmRlYnVnIl19IHsKLSsJCWNvbnRpbnVlCi0rCSAgICB9Ci0r CSAgICBzZXQgdGVzdCAiZXUtdW5zdHJpcCB1bnByZWxpbmtlZDpbZmlsZSB0YWlsICRpbnRlcnBf c3lzdGVtXSArIFtmaWxlIHRhaWwgJGludGVycF9zeXN0ZW1fZGVidWddIHRvIFtmaWxlIHRhaWwg JGludGVycF0iCi0rCSAgICBzZXQgY29tbWFuZCAiZXhlYyBldS11bnN0cmlwIC1vICRpbnRlcnAg JGludGVycCAke2ludGVycH0uZGVidWciCi0rCSAgICB2ZXJib3NlIC1sb2cgImNvbW1hbmQgaXMg JGNvbW1hbmQiCi0rCSAgICBpZiBbY2F0Y2ggJGNvbW1hbmRdIHsKLSsJCXNldHVwX3hmYWlsICot Ki0qCi0rCQlmYWlsICR0ZXN0Ci0rCQljb250aW51ZQotKwkgICAgfSBlbHNlIHsKLSsJCXBhc3Mg JHRlc3QKLSsJICAgIH0KLSsJfSBlbHNlaWYgeyRsZHNlcGRlYnVnID09ICJTRVAiICYmICRpbnRl cnBfc3lzdGVtX2RlYnVnID09ICIifSB7Ci0rCSAgICBjb3B5ICRpbnRlcnBfc3lzdGVtICRpbnRl cnAKLSsJICAgICMgZXUtdW5zdHJpcDogRFdBUkYgZGF0YSBpbiAnLi4uJyBub3QgYWRqdXN0ZWQg Zm9yIHByZWxpbmtpbmcgYmlhczsgY29uc2lkZXIgcHJlbGluayAtdQotKwkgICAgaWYgIVtwcmVs aW5rTk8gJGludGVycF0gewotKwkJY29udGludWUKLSsJICAgIH0KLSsJICAgIGdkYl9nbnVfc3Ry aXBfZGVidWcgJGludGVycAotKwl9IGVsc2VpZiB7JGxkc2VwZGVidWcgPT0gIlNFUCIgJiYgJGlu dGVycF9zeXN0ZW1fZGVidWcgIT0gIiJ9IHsKLSsJICAgIGNvcHkgJGludGVycF9zeXN0ZW0gJGlu dGVycAotKwkgICAgY29weSAkaW50ZXJwX3N5c3RlbV9kZWJ1ZyAiJHtpbnRlcnB9LmRlYnVnIgot Kwl9Ci0rCi0rCWlmIHskbGRzZXBkZWJ1ZyA9PSAiU0VQIn0gewotKwkgICAgaWYgIVtwcmVsaW5r Tk8gIiR7aW50ZXJwfS5kZWJ1ZyJdIHsKLSsJCWNvbnRpbnVlCi0rCSAgICB9Ci0rCX0gZWxzZSB7 Ci0rCSAgICBmaWxlIGRlbGV0ZSAiJHtpbnRlcnB9LmRlYnVnIgotKwl9Ci0rCi0rCWlmICFbcHJl bGluayRsZHByZWxpbmsgJGludGVycF0gewotKwkgICAgY29udGludWUKLSsJfQotKwl0ZXN0X2xk ICRpbnRlcnAgMCBbZXhwciB7JGxkc2VwZGVidWcgPT0gIk5PIn1dCi0rCi0rCWlmICFbY29weSAk aW50ZXJwICRpbnRlcnBfc2F2ZWRdIHsKLSsJICAgIGNvbnRpbnVlCi0rCX0KLSsJc2V0IG9sZF9i aW5wcmVmaXggJHBmX3ByZWZpeAotKwlmb3JlYWNoIGJpbnByZWxpbmsge05PIFlFU30gewotKwkg ICAgZm9yZWFjaCBiaW5zZXBkZWJ1ZyB7Tk8gSU4gU0VQfSB7Ci0rCQlmb3JlYWNoIGJpbnBpZSB7 Tk8gWUVTfSB7Ci0rCQkgICAgIyBUaGlzIGNvbWJpbmF0aW9uIGlzIG5vdCBwb3NzaWJsZSwgbm9u LVBJRSAoZml4ZWQgYWRkcmVzcykKLSsJCSAgICAjIGJpbmFyeSBjYW5ub3QgYmUgcHJlbGlua2Vk IHRvIGFueSAob3RoZXIpIGFkZHJlc3MuCi0rCQkgICAgaWYgeyRiaW5wcmVsaW5rID09ICJZRVMi ICYmICRiaW5waWUgPT0gIk5PIn0gewotKwkJCWNvbnRpbnVlCi0rCQkgICAgfQotKwotKwkJICAg IHNldCBiaW5uYW1lICJCSU5wcmVsaW5rJHtiaW5wcmVsaW5rfWRlYnVnJHtiaW5zZXBkZWJ1Z31w aWUke2JpbnBpZX0iCi0rCQkgICAgc2V0IGV4ZWMgJGJpbnByZWZpeC0kYmlubmFtZQotKwkJICAg IHNldCBkaXIgJHtleGVjfS5kCi0rCi0rCQkgICAgc2V0IHBmX3ByZWZpeCAkb2xkX2JpbnByZWZp eAotKwkJICAgIGxhcHBlbmQgcGZfcHJlZml4ICIkYmlubmFtZToiCi0rCi0rCQkgICAgc2V0IG9w dHMgImFkZGl0aW9uYWxfZmxhZ3M9LVdsLC0tZHluYW1pYy1saW5rZXIsJGludGVycCwtcnBhdGgs JGRpciIKLSsJCSAgICBsYXBwZW5kIG9wdHMgImFkZGl0aW9uYWxfZmxhZ3M9LVdsLCRiaW5maWxl X2xpYiwtcnBhdGgsW2ZpbGUgZGlybmFtZSAkYmluZmlsZV9saWJdIgotKwkJICAgIGlmIHskYmlu c2VwZGVidWcgIT0gIk5PIn0gewotKwkJCWxhcHBlbmQgb3B0cyB7ZGVidWd9Ci0rCQkgICAgfQot KwkJICAgIGlmIHskYmlucGllID09ICJZRVMifSB7Ci0rCQkJbGFwcGVuZCBvcHRzIHthZGRpdGlv bmFsX2ZsYWdzPS1mUElFIC1waWV9Ci0rCQkgICAgfQotKwkJICAgIGlmIHtbYnVpbGRfZXhlY3V0 YWJsZSAke3Rlc3R9LmV4cCBbZmlsZSB0YWlsICRleGVjXSAkc3JjZmlsZSAkb3B0c10gPT0gLTF9 IHsKLSsJCQljb250aW51ZTsKLSsJCSAgICB9Ci0rCQkgICAgaWYgeyRiaW5zZXBkZWJ1ZyA9PSAi U0VQIn0gewotKwkJCWdkYl9nbnVfc3RyaXBfZGVidWcgJGV4ZWMKLSsJCQkjIEp1c3QgYSBzYW5p dHkgY2hlY2suICBBcyBnZGJfZ251X3N0cmlwX2RlYnVnIHVzZXMgdGhlCi0rCQkJIyAiW2ZpbGUg ZGlybmFtZSAkZXhlY10vLmRlYnVnL1tmaWxlIHRhaWwgJGV4ZWNdLmRlYnVnIgotKwkJCSMgdmFy aWFudCBkZWxldGUgdGhlIGhpZ2hlci1wcmlvcml0eSBleGVjLmRlYnVnIGZpbGUuCi0rCQkJZmls ZSBkZWxldGUgIiRleGVjLmRlYnVnIgotKwkJICAgIH0KLSsKLSsJCSAgICAjIFN1cHBseSBhIHNl bGYtc3VmZmljZW50IGRpcmVjdG9yeSAkZGlyIHdpdGggdGhlIHJlcXVpcmVkCi0rCQkgICAgIyBs aWJyYXJpZXMuICBUbyBtYWtlIGFuIGV4ZWN1dGFibGUgcHJvcGVybHkgcHJlbGlua2VkIGFsbAot KwkJICAgICMgaXRzIGRlcGVuZGVuY2llcyBvbiBsaWJyYXJpZXMgbXVzdCBiZSBhbHNvIHByZWxp bmtlZC4gIElmCi0rCQkgICAgIyBzb21lIG9mIHRoZSBzeXN0ZW0gbGlicmFyaWVzIGlzIGN1cnJl bnRseSBub3QgcHJlbGlua2VkCi0rCQkgICAgIyB3ZSBoYXZlIG5vIHJpZ2h0IHRvIHByZWxpbmsg KG1vZGlmeSBpdCkgYXQgaXRzIGN1cnJlbnQKLSsJCSAgICAjIHN5c3RlbSBwbGFjZS4KLSsKLSsJ CSAgICBmaWxlIGRlbGV0ZSAtZm9yY2UgJGRpcgotKwkJICAgIGZpbGUgbWtkaXIgJGRpcgotKwot KwkJICAgIHNldCBjb21tYW5kICJsZGQgJGV4ZWMiCi0rCQkgICAgc2V0IHJlc3VsdCBbY2F0Y2gg ImV4ZWMgJGNvbW1hbmQiIG91dHB1dF0KLSsJCSAgICB2ZXJib3NlIC1sb2cgInJlc3VsdCBvZiAk Y29tbWFuZCBpcyAkcmVzdWx0IgotKwkJICAgIHZlcmJvc2UgLWxvZyAib3V0cHV0IG9mICRjb21t YW5kIGlzICRvdXRwdXQiCi0rCQkgICAgaWYgeyRyZXN1bHQgIT0gMCB8fCAkb3V0cHV0ID09ICIi fSB7Ci0rCQkJZmFpbCAkY29tbWFuZAotKwkJICAgIH0gZWxzZSB7Ci0rCQkJcGFzcyAkY29tbWFu ZAotKwkJICAgIH0KLSsKLSsJCSAgICAjIGdkYiB0ZXN0c3VpdGUgd2lsbCBwdXQgdGhlcmUgYWxz byBuZWVkbGVzcyAtbG0uCi0rCQkgICAgc2V0IHRlc3QgIiRjb21tYW5kIG91dHB1dCBjb250YWlu cyBsaWJjIgotKwkJICAgIHNldCBsaWJjIFtyZWdleHAgLWFsbCAtaW5saW5lIC1saW5lIHteLiog PT4gKC9bXiBdKykuKiR9ICRvdXRwdXRdCi0rCQkgICAgaWYge1tsbGVuZ3RoICRsaWJjXSA9PSAw fSB7Ci0rCQkJZmFpbCAkdGVzdAotKwkJICAgIH0gZWxzZSB7Ci0rCQkJcGFzcyAkdGVzdAotKwkJ ICAgIH0KLSsKLSsJCSAgICBzZXQgZGVzdHMge30KLSsJCSAgICBmb3Ige3NldCBpIDF9IHskaSA8 IFtsbGVuZ3RoICRsaWJjXX0ge2luY3IgaSAyfSB7Ci0rCQkJc2V0IGFic3BhdGggW2xpbmRleCAk bGliYyAkaV0KLSsJCQlzZXQgZGVzdCAiJGRpci9bZmlsZSB0YWlsICRhYnNwYXRoXSIKLSsJCQlj b3B5ICRhYnNwYXRoICRkZXN0Ci0rCQkJbGFwcGVuZCBkZXN0cyAkZGVzdAotKwkJICAgIH0KLSsK LSsJCSAgICBpZiB7W3ByZWxpbmskYmlucHJlbGluayAiLS1keW5hbWljLWxpbmtlcj0kaW50ZXJw IC0tbGQtbGlicmFyeS1wYXRoPSRkaXIgJGV4ZWMgJGludGVycCBbY29uY2F0ICRkZXN0c10iICRl eGVjXQotKwkJICAgICAgICAmJiBbY29weSAkaW50ZXJwX3NhdmVkICRpbnRlcnBdfSB7Ci0rCQkJ dGVzdF9sZCAkZXhlYyAxIFtleHByIHskYmluc2VwZGVidWcgPT0gIk5PIn1dCi0rCQkgICAgfQot KwkJfQotKwkgICAgfQotKwl9Ci0rCi0rCWZpbGUgZGVsZXRlICRpbnRlcnBfc2F2ZWQKLSsgICAg fQotK30KLStzZXQgcGZfcHJlZml4ICRvbGRfbGRwcmVmaXgKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29y ZWZpbGUuZXhwCi1pbmRleCBhMTAwM2UxLi41NDdhODk4IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv Y29yZWZpbGUuZXhwCi1AQCAtNDIsNjUgKzQyLDEyIEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAk e2JpbmZpbGV9XSB7Ci0gICAgIHJldHVybiAtMTsKLSB9Ci0gCi0tIyBDcmVhdGUgYSBjb3JlIGZp bGUgbmFtZWQgImNvcmVmaWxlIiByYXRoZXIgdGhhbiBqdXN0ICJjb3JlIiwgdG8KLS0jIGF2b2lk IHByb2JsZW1zIHdpdGggc3lzIGFkbWluIHR5cGVzIHRoYXQgbGlrZSB0byByZWd1bGFybHkgcHJ1 bmUgYWxsCi0tIyBmaWxlcyBuYW1lZCAiY29yZSIgZnJvbSB0aGUgc3lzdGVtLgotLSMKLS0jIEFy Yml0cmFyaWx5IHRyeSBzZXR0aW5nIHRoZSBjb3JlIHNpemUgbGltaXQgdG8gInVubGltaXRlZCIg c2luY2UKLS0jIHRoaXMgZG9lcyBub3QgaHVydCBvbiBzeXN0ZW1zIHdoZXJlIHRoZSBjb21tYW5k IGRvZXMgbm90IHdvcmsgYW5kCi0tIyBhbGxvd3MgdXMgdG8gZ2VuZXJhdGUgYSBjb3JlIG9uIHN5 c3RlbXMgd2hlcmUgaXQgZG9lcy4KLS0jCi0tIyBTb21lIHN5c3RlbXMgYXBwZW5kICJjb3JlIiB0 byB0aGUgbmFtZSBvZiB0aGUgcHJvZ3JhbTsgb3RoZXJzIGFwcGVuZAotLSMgdGhlIG5hbWUgb2Yg dGhlIHByb2dyYW0gdG8gImNvcmUiOyBzdGlsbCBvdGhlcnMgKGxpa2UgTGludXgsIGFzIG9mCi0t IyBNYXkgMjAwMykgY3JlYXRlIGNvcmVzIG5hbWVkICJjb3JlLlBJRCIuICBJbiB0aGUgbGF0dGVy IGNhc2UsIHdlCi0tIyBjb3VsZCBoYXZlIG1hbnkgY29yZSBmaWxlcyBseWluZyBhcm91bmQsIGFu ZCBpdCBtYXkgYmUgZGlmZmljdWx0IHRvCi0tIyB0ZWxsIHdoaWNoIG9uZSBpcyBvdXJzLCBzbyBs ZXQncyBydW4gdGhlIHByb2dyYW0gaW4gYSBzdWJkaXJlY3RvcnkuCi0tc2V0IGZvdW5kIDAKLS1z ZXQgY29yZWRpciAiJHtvYmpkaXJ9LyR7c3ViZGlyfS9jb3JlZGlyLltnZXRwaWRdIgotLWZpbGUg bWtkaXIgJGNvcmVkaXIKLS1jYXRjaCAic3lzdGVtIFwiKGNkICR7Y29yZWRpcn07IHVsaW1pdCAt YyB1bmxpbWl0ZWQ7ICR7YmluZmlsZX07IHRydWUpID4vZGV2L251bGwgMj4mMVwiIgotLSMgICAg ICByZW1vdGVfZXhlYyBob3N0ICIke2JpbmZpbGV9IgotLWZvcmVhY2ggaSAiJHtjb3JlZGlyfS9j b3JlICR7Y29yZWRpcn0vY29yZS5jb3JlbWFrZXIuYyAke2JpbmZpbGV9LmNvcmUiIHsKLS0gICAg aWYgW3JlbW90ZV9maWxlIGJ1aWxkIGV4aXN0cyAkaV0gewotLQlyZW1vdGVfZXhlYyBidWlsZCAi bXYgJGkgJHtvYmpkaXJ9LyR7c3ViZGlyfS9jb3JlZmlsZSIKLS0Jc2V0IGZvdW5kIDEKLS0gICAg fQotLX0KLS0jIENoZWNrIGZvciAiY29yZS5QSUQiLgotLWlmIHsgJGZvdW5kID09IDAgfSB7Ci0t ICAgIHNldCBuYW1lcyBbZ2xvYiAtbm9jb21wbGFpbiAtZGlyZWN0b3J5ICRjb3JlZGlyIGNvcmUu Kl0KLS0gICAgaWYge1tsbGVuZ3RoICRuYW1lc10gPT0gMX0gewotLSAgICAgICAgc2V0IGNvcmVm aWxlIFtmaWxlIGpvaW4gJGNvcmVkaXIgW2xpbmRleCAkbmFtZXMgMF1dCi0tICAgICAgICByZW1v dGVfZXhlYyBidWlsZCAibXYgJGNvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vY29yZWZpbGUi Ci0tICAgICAgICBzZXQgZm91bmQgMQotLSAgICB9Ci0tfQotLWlmIHsgJGZvdW5kID09IDAgfSB7 Ci0tICAgICMgVGhlIGJyYWluZGFtYWdlZCBIUFVYIHNoZWxsIHF1aXRzIGFmdGVyIHRoZSB1bGlt aXQgLWMgYWJvdmUKLS0gICAgIyB3aXRob3V0IGV4ZWN1dGluZyAke2JpbmZpbGV9LiAgU28gd2Ug dHJ5IGFnYWluIHdpdGhvdXQgdGhlCi0tICAgICMgdWxpbWl0IGhlcmUgaWYgd2UgZGlkbid0IGZp bmQgYSBjb3JlIGZpbGUgYWJvdmUuCi0tICAgICMgT2gsIEkgc2hvdWxkIG1lbnRpb24gdGhhdCBh bnkgImJyYWluZGFtYWdlZCIgbm9uLVVuaXggc3lzdGVtIGhhcwotLSAgICAjIHRoZSBzYW1lIHBy b2JsZW0uIEkgbGlrZSB0aGUgY2QgYml0IHRvbywgaXQncyByZWFsbHkgbmVhdCduIHN0dWZmLgot LSAgICBjYXRjaCAic3lzdGVtIFwiKGNkICR7b2JqZGlyfS8ke3N1YmRpcn07ICR7YmluZmlsZX07 IHRydWUpID4vZGV2L251bGwgMj4mMVwiIgotLSAgICBmb3JlYWNoIGkgIiR7b2JqZGlyfS8ke3N1 YmRpcn0vY29yZSAke29iamRpcn0vJHtzdWJkaXJ9L2NvcmUuY29yZW1ha2VyLmMgJHtiaW5maWxl fS5jb3JlIiB7Ci0tCWlmIFtyZW1vdGVfZmlsZSBidWlsZCBleGlzdHMgJGldIHsKLS0JICAgIHJl bW90ZV9leGVjIGJ1aWxkICJtdiAkaSAke29iamRpcn0vJHtzdWJkaXJ9L2NvcmVmaWxlIgotLQkg ICAgc2V0IGZvdW5kIDEKLS0JfQotLSAgICB9Ci0rc2V0IGNvcmVmaWxlIFtjb3JlX2ZpbmQgJGJp bmZpbGUge2NvcmVtbWFwLmRhdGF9XQotK2lmIHskY29yZWZpbGUgPT0gIiJ9IHsKLSsgICAgcmV0 dXJuIDA7Ci0gfQotIAotLSMgVHJ5IHRvIGNsZWFuIHVwIGFmdGVyIG91cnNlbHZlcy4gCi0tcmVt b3RlX2ZpbGUgYnVpbGQgZGVsZXRlIFtmaWxlIGpvaW4gJGNvcmVkaXIgY29yZW1tYXAuZGF0YV0K LS1yZW1vdGVfZXhlYyBidWlsZCAicm1kaXIgJGNvcmVkaXIiCi0tICAgIAotLWlmIHsgJGZvdW5k ID09IDAgIH0gewotLSAgICB3YXJuaW5nICJjYW4ndCBnZW5lcmF0ZSBhIGNvcmUgZmlsZSAtIGNv cmUgdGVzdHMgc3VwcHJlc3NlZCAtIGNoZWNrIHVsaW1pdCAtYyIKLS0gICAgcmV0dXJuIDAKLS19 Ci0tCi0tIwotLSMgVGVzdCB0aGF0IHdlIGNhbiBzaW1wbHkgc3RhcnR1cCB3aXRoIGEgIi1jb3Jl PWNvcmVmaWxlIiBjb21tYW5kIGxpbmUgYXJnCi0rIyBUZXN0IHRoYXQgd2UgY2FuIHNpbXBseSBz dGFydHVwIHdpdGggYSAiLWNvcmU9JGNvcmVmaWxlIiBjb21tYW5kIGxpbmUgYXJnCi0gIyBhbmQg cmVjb2duaXplIHRoYXQgdGhlIGNvcmUgZmlsZSBpcyBhIHZhbGlkLCB1c2FibGUgY29yZSBmaWxl LgotICMgVG8gZG8gdGhpcywgd2UgbXVzdCBzaHV0ZG93biB0aGUgY3VycmVudGx5IHJ1bm5pbmcg Z2RiIGFuZCByZXN0YXJ0Ci0gIyB3aXRoIHRoZSAtY29yZSBhcmdzLiAgV2UgY2FuJ3QgdXNlIGdk Yl9zdGFydCBiZWNhdXNlIGl0IGxvb2tzIGZvcgotQEAgLTExNCwyNyArNjEsMjcgQEAgaWYgeyAk Zm91bmQgPT0gMCAgfSB7Ci0gCi0gZ2RiX2V4aXQKLSBpZiAkdmVyYm9zZT4xIHRoZW4gewotLSAg ICBzZW5kX3VzZXIgIlNwYXduaW5nICRHREIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAt Y29yZT0kb2JqZGlyLyRzdWJkaXIvY29yZWZpbGVcbiIKLSsgICAgc2VuZF91c2VyICJTcGF3bmlu ZyAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgLWNvcmU9JGNvcmVmaWxlXG4iCi0g fQotIAotIHNldCBvbGR0aW1lb3V0ICR0aW1lb3V0Ci0gc2V0IHRpbWVvdXQgW2V4cHIgIiR0aW1l b3V0ICsgNjAiXQotIHZlcmJvc2UgIlRpbWVvdXQgaXMgbm93ICR0aW1lb3V0IHNlY29uZHMiIDIK LS1ldmFsICJzcGF3biAkR0RCICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgLWNvcmU9JG9i amRpci8kc3ViZGlyL2NvcmVmaWxlIgotK2V2YWwgInNwYXduICRHREIgJElOVEVSTkFMX0dEQkZM QUdTICRHREJGTEFHUyAtY29yZT0kY29yZWZpbGUiCi0gZXhwZWN0IHsKLSAgICAgLXJlICJDb3Vs ZG4ndCBmaW5kIC4qIHJlZ2lzdGVycyBpbiBjb3JlIGZpbGUuKiRnZGJfcHJvbXB0ICQiIHsKLS0g ICAgICAgIGZhaWwgImFyZ3M6IC1jb3JlPWNvcmVmaWxlIChjb3VsZG4ndCBmaW5kIHJlZ3MpIgot KyAgICAgICAgZmFpbCAiYXJnczogLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIChjb3VsZG4n dCBmaW5kIHJlZ3MpIgotICAgICB9Ci0gICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4q Y29yZW1ha2VyLipcclxuXCMwICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0tCXBhc3Mg ImFyZ3M6IC1jb3JlPWNvcmVmaWxlIgotKwlwYXNzICJhcmdzOiAtY29yZT1bZmlsZSB0YWlsICRj b3JlZmlsZV0iCi0gICAgIH0KLSAgICAgLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLipcclxu XCMwICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0tCXBhc3MgImFyZ3M6IC1jb3JlPWNv cmVmaWxlICh3aXRoIGJhZCBwcm9ncmFtIG5hbWUpIgotKwlwYXNzICJhcmdzOiAtY29yZT1bZmls ZSB0YWlsICRjb3JlZmlsZV0gKHdpdGggYmFkIHByb2dyYW0gbmFtZSkiCi0gICAgIH0KLSAgICAg LXJlICIuKnJlZ2lzdGVycyBmcm9tIGNvcmUgZmlsZTogRmlsZSBpbiB3cm9uZyBmb3JtYXQuKiAk IiB7Ci0tCWZhaWwgImFyZ3M6IC1jb3JlPWNvcmVmaWxlIChjb3VsZCBub3QgcmVhZCByZWdpc3Rl cnMgZnJvbSBjb3JlIGZpbGUpIgotKwlmYWlsICJhcmdzOiAtY29yZT1bZmlsZSB0YWlsICRjb3Jl ZmlsZV0gKGNvdWxkIG5vdCByZWFkIHJlZ2lzdGVycyBmcm9tIGNvcmUgZmlsZSkiCi0gICAgIH0K LS0gICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczogLWNvcmU9Y29yZWZpbGUi IH0KLSsgICAgLXJlICIuKiRnZGJfcHJvbXB0ICQiCXsgZmFpbCAiYXJnczogLWNvcmU9W2ZpbGUg dGFpbCAkY29yZWZpbGVdIiB9Ci0gICAgIHRpbWVvdXQgCQl7IGZhaWwgIih0aW1lb3V0KSBzdGFy dGluZyB3aXRoIC1jb3JlIiB9Ci0gfQotIAotQEAgLTE0NywyMiArOTQsMjIgQEAgZXhwZWN0IHsK LSBjbG9zZTsKLSAKLSBpZiAkdmVyYm9zZT4xIHRoZW4gewotLSAgICBzZW5kX3VzZXIgIlNwYXdu aW5nICRHREIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAkYmluZmlsZSAtY29yZT0kb2Jq ZGlyLyRzdWJkaXIvY29yZWZpbGVcbiIKLSsgICAgc2VuZF91c2VyICJTcGF3bmluZyAkR0RCICRJ TlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgJGJpbmZpbGUgLWNvcmU9JGNvcmVmaWxlXG4iCi0g fQotIAotIAotLWV2YWwgInNwYXduICRHREIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAk YmluZmlsZSAtY29yZT0kb2JqZGlyLyRzdWJkaXIvY29yZWZpbGUiOwotK2V2YWwgInNwYXduICRH REIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyAkYmluZmlsZSAtY29yZT0kY29yZWZpbGUi OwotIGV4cGVjdCB7Ci0gICAgIC1yZSAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qY29yZW1ha2Vy LipcclxuXCMwICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0tCXBhc3MgImFyZ3M6IGV4 ZWNmaWxlIC1jb3JlPWNvcmVmaWxlIgotKwlwYXNzICJhcmdzOiBleGVjZmlsZSAtY29yZT1bZmls ZSB0YWlsICRjb3JlZmlsZV0iCi0gICAgIH0KLSAgICAgLXJlICJDb3JlIHdhcyBnZW5lcmF0ZWQg YnkgLipcclxuXCMwICAuKlwoXCkuKlxyXG4kZ2RiX3Byb21wdCAkIgkgewotLQlwYXNzICJhcmdz OiBleGVjZmlsZSAtY29yZT1jb3JlZmlsZSAod2l0aCBiYWQgcHJvZ3JhbSBuYW1lKSIKLSsJcGFz cyAiYXJnczogZXhlY2ZpbGUgLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdICh3aXRoIGJhZCBw cm9ncmFtIG5hbWUpIgotICAgICB9Ci0gICAgIC1yZSAiLipyZWdpc3RlcnMgZnJvbSBjb3JlIGZp bGU6IEZpbGUgaW4gd3JvbmcgZm9ybWF0LiogJCIgewotLQlmYWlsICJhcmdzOiBleGVjZmlsZSAt Y29yZT1jb3JlZmlsZSAoY291bGQgbm90IHJlYWQgcmVnaXN0ZXJzIGZyb20gY29yZSBmaWxlKSIK LSsJZmFpbCAiYXJnczogZXhlY2ZpbGUgLWNvcmU9W2ZpbGUgdGFpbCAkY29yZWZpbGVdIChjb3Vs ZCBub3QgcmVhZCByZWdpc3RlcnMgZnJvbSBjb3JlIGZpbGUpIgotICAgICB9Ci0tICAgIC1yZSAi LiokZ2RiX3Byb21wdCAkIgl7IGZhaWwgImFyZ3M6IGV4ZWNmaWxlIC1jb3JlPWNvcmVmaWxlIiB9 Ci0rICAgIC1yZSAiLiokZ2RiX3Byb21wdCAkIgl7IGZhaWwgImFyZ3M6IGV4ZWNmaWxlIC1jb3Jl PVtmaWxlIHRhaWwgJGNvcmVmaWxlXSIgfQotICAgICB0aW1lb3V0IAkJeyBmYWlsICIodGltZW91 dCkgc3RhcnRpbmcgd2l0aCAtY29yZSIgfQotIH0KLSBzZXQgdGltZW91dCAkb2xkdGltZW91dAot QEAgLTE3OCw3ICsxMjUsNyBAQCBnZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0gIyBUZXN0IGJhc2lj IGNvcmVmaWxlIHJlY29nbml0aW9uIHZpYSBjb3JlLWZpbGUgY29tbWFuZC4KLSAKLS1zZW5kX2dk YiAiY29yZS1maWxlICRvYmpkaXIvJHN1YmRpci9jb3JlZmlsZVxuIgotK3NlbmRfZ2RiICJjb3Jl LWZpbGUgJGNvcmVmaWxlXG4iCi0gZ2RiX2V4cGVjdCB7Ci0gICAgIC1yZSAiLiogcHJvZ3JhbSBp cyBiZWluZyBkZWJ1Z2dlZCBhbHJlYWR5Lip5IG9yIG4uICQiIHsKLSAJIyBnZGJfbG9hZCBtYXkg Y29ubmVjdCB1cyB0byBhIGdkYnNlcnZlci4KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3BpZS1zdXBwb3J0LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1zdXBwb3J0 LmMKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNjM3NjhiOS4uMDAwMDAwMAotLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5jCi0rKysgL2Rldi9udWxsCi1A QCAtMSwzNCArMCwwIEBACi0tLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KLS0KLS0gICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLS0gICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0KLS0q LwotLQotLSNpbmNsdWRlIDxzdGRpby5oPgotLQotLXZvaWQKLS1mMSAoaW50IGEpCi0tewotLSAg cHJpbnRmICgiYSA9ICVkXG4iLCBhKTsKLS19Ci0tCi0taW50Ci0tbWFpbiAoaW50IGFyZ2MsIGNo YXIgKmFyZ3ZbXSkKLS17Ci0tICBmMSAoMSk7Ci0tCi0tICByZXR1cm4gMDsKLS19Ci1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3BpZS1zdXBwb3J0LmV4cAotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCA3ZDExOGMwLi4wMDAwMDAwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3BpZS1z dXBwb3J0LmV4cAotKysrIC9kZXYvbnVsbAotQEAgLTEsNTggKzAsMCBAQAotLSMgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tCi0tIyBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot LSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0j IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotLQotLXNldCB0ZXN0ZmlsZSBwaWUtc3VwcG9ydAotLXNldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmMKLS1zZXQgb2JqZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9Lm8KLS1zZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0tCi0t aWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke29i amZpbGV9IiBvYmplY3Qge3F1aWV0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWZwaWV9XSAhPSAi IiB9IHsKLS0gICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBQSUUgb2JqZWN0IGZp bGUuIgotLSAgICByZXR1cm4gLTEKLS19Ci0taWYgIHsgW2dkYl9jb21waWxlICIke29iamZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7cXVpZXQgZGVidWcgYWRkaXRpb25hbF9mbGFncz0t cGllfV0gIT0gIiIgfSB7Ci0tICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgUElF IGJpbmFyeS4iCi0tICAgIHJldHVybiAtMQotLX0KLS0KLS0jIEdldCB0aGluZ3Mgc3RhcnRlZC4K LS0KLS1nZGJfZXhpdAotLWdkYl9zdGFydAotLWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIv JHN1YmRpcgotLQotLWlmIFtpc19yZW1vdGUgaG9zdF0gewotLSAgc2V0IGJpbmZpbGUgW3JlbW90 ZV9kb3dubG9hZCBob3N0ICRiaW5maWxlXQotLSAgICBpZiB7ICRiaW5maWxlID09ICIiIH0gewot LSAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBkb3dubG9hZCByZW1vdGUgdGVzdCBiaW5hcnkuIgot LSAgICAgIHJldHVybiAtMQotLSAgICB9Ci0tfQotLQotLSMgVGhlIGZpbGUgY29tbWFuZCB1c2Vk IHRvIGtpbGwgdGhlIHJlbW90ZSB0YXJnZXQuICBGb3IgdGhlIGJlbmVmaXQKLS0jIG9mIHRoZSB0 ZXN0c3VpdGUsIHByZXNlcnZlIHRoaXMgYmVoYXZpb3IuCi0tc2VuZF9nZGIgImtpbGxcbiIKLS1n ZGJfZXhwZWN0IDEyMCB7Ci0tICAgIC1yZSAiS2lsbCB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dl ZC4gLnkgb3Igbi4gJCIgewotLQlzZW5kX2dkYiAieVxuIgotLQl2ZXJib3NlICJcdFx0S2lsbGlu ZyBwcmV2aW91cyBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIgotLQlleHBfY29udGludWUKLS0gICAg fQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiIHsKLS0JIyBPSy4KLS0gICAgfQotLX0KLS0KLS1n ZGJfdGVzdCAiZmlsZSAkYmluZmlsZSIgImN1cnJlbnQgYmluYXJ5IGlzIGEgUElFLioiICJjb3Jy ZWN0bHkgZGV0ZWN0ZWQgUElFIGJpbmFyeSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZhbGdyaW5kLWRiLWF0dGFjaC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxn cmluZC1kYi1hdHRhY2guYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjVm YWFhYWMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3Jp bmQtZGItYXR0YWNoLmMKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0raW50IG1haW4oKQot K3sKLSsgIHZvaWQgKnA7Ci0rCi0rICBwID0gbWFsbG9jICgxKTsKLSsgIGlmIChwID09IE5VTEwp Ci0rICAgIHJldHVybiAxOwotKyAgZnJlZSAocCk7Ci0rICBmcmVlIChwKTsJLyogZG91YmxlLWZy ZWUgKi8KLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZhbGdyaW5kLWRiLWF0dGFjaC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdy aW5kLWRiLWF0dGFjaC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5h YzA2ZmQzCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdy aW5kLWRiLWF0dGFjaC5leHAKLUBAIC0wLDAgKzEsNzQgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsKLStzZXQgdGVzdCB2YWxncmluZC1kYi1hdHRhY2gKLStzZXQgc3JjZmlsZSAkdGVz dC5jCi0rc2V0IGV4ZWN1dGFibGUgJHRlc3QKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJk aXJ9LyR7ZXhlY3V0YWJsZX0KLStpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHRlc3QuZXhwICRleGVj dXRhYmxlICRzcmNmaWxlIHtkZWJ1Z31dID09IC0xfSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsK LStnZGJfZXhpdAotKwotKyMgcmVtb3RlX3NwYXduIGJyZWFrcyB0aGUgY29tbWFuZCBvbiBlYWNo IHdoaXRlc3BhY2UgZGVzcGl0ZSBwb3NzaWJsZSBxdW90aW5nLgotKyMgVXNlIGJhY2tzbGFzaC1l c2NhcGVkIHdoaXRlc3BhY2UgdGhlcmUgaW5zdGVhZDoKLSsKLStzZXQgZGJfY29tbWFuZCAiLS1k Yi1jb21tYW5kPSRHREIgJElOVEVSTkFMX0dEQkZMQUdTICRHREJGTEFHUyBbaG9zdF9pbmZvIGdk Yl9vcHRzXSAlZiAlcCIKLStyZWdzdWIgLWFsbCAiICIgJGRiX2NvbW1hbmQgIlxcICIgZGJfY29t bWFuZAotKwotK3NldCB0ZXN0ICJzcGF3biB2YWxncmluZCIKLStzZXQgY21kICJ2YWxncmluZCAt LWRiLWF0dGFjaD15ZXMgJGRiX2NvbW1hbmQgJGJpbmZpbGUiCi0rc2V0IHJlcyBbcmVtb3RlX3Nw YXduIGhvc3QgJGNtZF07Ci0raWYgeyAkcmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotKyAgICB2 ZXJib3NlIC1sb2cgIlNwYXduaW5nICRjbWQgZmFpbGVkLiIKLSsgICAgc2V0dXBfeGZhaWwgKi0q LSoKLSsgICAgZmFpbCAkdGVzdAotKyAgICByZXR1cm4gLTEKLSt9Ci0rcGFzcyAkdGVzdAotKyMg RGVjbGFyZSBHREIgbm93IGFzIHJ1bm5pbmcuCi0rc2V0IGdkYl9zcGF3bl9pZCAtMQotKwotK3Nl dCB0ZXN0ICJ2YWxncmluZCBzdGFydGVkIgotKyMgVGhlIHRyYWlsaW5nICcuJyBkaWZmZXJzIGZv ciBkaWZmZXJlbnQgbWVtY2hlY2sgdmVyc2lvbnMuCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRl c3QgewotKyAgICAtcmUgIk1lbWNoZWNrLCBhIG1lbW9yeSBlcnJvciBkZXRlY3RvclxcLj9cclxu IiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgInZhbGdyaW5kOiBmYWlsZWQgdG8g c3RhcnQgdG9vbCAnbWVtY2hlY2snIGZvciBwbGF0Zm9ybSAnLionOiBObyBzdWNoIGZpbGUgb3Ig ZGlyZWN0b3J5IiB7Ci0rCXNldHVwX3hmYWlsICotKi0qCi0rCWZhaWwgJHRlc3QKLSsJcmV0dXJu IC0xCi0rICAgIH0KLSt9Ci0rCi0rc2V0IGRvdWJsZV9mcmVlIFtnZGJfZ2V0X2xpbmVfbnVtYmVy ICJkb3VibGUtZnJlZSJdCi0rCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgIiIgJHRlc3QgewotKyAgICAt cmUgIkludmFsaWQgZnJlZVxcKFxcKSAvIGRlbGV0ZSAvIGRlbGV0ZVxcXFtcXFxdXHJcbi4qOiBt YWluIFxcKCR7c3JjZmlsZX06JGRvdWJsZV9mcmVlXFwpXHJcbi4qLS0tLSBBdHRhY2ggdG8gZGVi dWdnZXIgXFw/IC0tLSBcW15cclxuXF0qIC0tLS0gIiB7Ci0rCXNlbmRfZ2RiICJ5XHIiCi0rICAg IH0KLSsgICAgLXJlICItLS0tIEF0dGFjaCB0byBkZWJ1Z2dlciBcXD8gLS0tIFxbXlxyXG5cXSog LS0tLSAiIHsKLSsJc2VuZF9nZGIgIm5cciIKLSsJZXhwX2NvbnRpbnVlCi0rICAgIH0KLSt9Ci0r Ci0rIyBJbml0aWFsaXphdGlvbiBmcm9tIGRlZmF1bHRfZ2RiX3N0YXJ0LgotK2dkYl90ZXN0ICJz ZXQgaGVpZ2h0IDAiCi0rZ2RiX3Rlc3QgInNldCB3aWR0aCAwIgotKwotK2dkYl90ZXN0ICJidCIg ImluIG1haW4gXFwoLipcXCkgYXQgLioke3NyY2ZpbGV9OiRkb3VibGVfZnJlZSIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXJhbmdlcy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvZHcyLXJhbmdlcy5leHAKLWluZGV4IDYxZTFmZTQuLjkxMDkwMzAgMTAw NjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXJhbmdlcy5leHAKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItcmFuZ2VzLmV4cAotQEAgLTU1LDYgKzU1LDEy IEBAIGdkYl9zdGFydAotIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotIGdk Yl9sb2FkICR7YmluZmlsZX0KLSAKLSsjIFRlc3QgYWxzbyBvYmpmaWxlLT5wc3ltdGFic19hZGRy bWFwIHJlbG9jYXRpb25zIGZvciAtZlBJRSAtcGllIGJ1aWxkcyBiZWxvdy4KLSsjIE9uIHNvbWUg dGFyZ2V0cyBpdCBtYXkgcG9zc2libHkgZmFpbCBidXQgdGhlIHByb2dyYW0gaXMgYmVpbmcgc3Rh cnRlZCBvbmx5Ci0rIyBmb3IgdGhlIFBJRSBidWlsZCBzbyB0cnkgaXQgYW55d2F5LgotKwotK3J1 bnRvX21haW4KLSsKLSAjIENvcnJlY3Qgb3V0cHV0OgotICMgCUxpbmUgMzkgb2YgIi4uLy4uLy4v Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1yYW5nZXMuUyIgc3RhcnRzIGF0IGFkZHJlc3Mg MHg0IGFuZCBlbmRzIGF0IDB4OC4KLSAjIFdyb25nIG91dHB1dDoKLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotaW5kZXgg ZDBjMzQ5My4uZmJmOTEyNCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLUBAIC0yNzc4LDYgKzI3NzgsMTEgQEAg cHJvYyBnZGJfZ251X3N0cmlwX2RlYnVnIHsgZGVzdCBhcmdzIH0gewotICAgICAgIHJldHVybiAx Ci0gICAgIH0KLSAKLSsgICAgIyBXb3JrYXJvdW5kIFBSIGJpbnV0aWxzLzEwODAyOgotKyAgICAj IFByZXNlcnZlIHRoZSAneCcgYml0IGFsc28gZm9yIFBJRXMgKFBvc2l0aW9uIEluZGVwZW5kZW50 IEV4ZWN1dGFibGVzKS4KLSsgICAgc2V0IHBlcm0gW2ZpbGUgYXR0cmlidXRlcyAke2Rlc3R9IC1w ZXJtaXNzaW9uc10KLSsgICAgZmlsZSBhdHRyaWJ1dGVzICR7c3RyaXBwZWRfZmlsZX0gLXBlcm1p c3Npb25zICRwZXJtCi0rCi0gICAgICMgR2V0IHJpZCBvZiBldmVyeXRoaW5nIGJ1dCB0aGUgZGVi dWcgaW5mbywgYW5kIHN0b3JlIHJlc3VsdCBpbiBkZWJ1Z19maWxlCi0gICAgICMgVGhpcyB3aWxs IGJlIGluIHRoZSAuZGVidWcgc3ViZGlyZWN0b3J5LCBzZWUgYWJvdmUuCi0gICAgIHNldCByZXN1 bHQgW2NhdGNoICJleGVjICRzdHJpcF90b19maWxlX3Byb2dyYW0gLS1vbmx5LWtlZXAtZGVidWcg JHtkZXN0fSAtbyAke2RlYnVnX2ZpbGV9IiBvdXRwdXRdCi1AQCAtMjgxNCw3ICsyODE5LDEyIEBA IHByb2MgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB7IGRlc3QgYXJncyB9IHsKLSAgICAgICByZXR1cm4g MQotICAgICB9Ci0gCi0tICAgcmV0dXJuIDAKLSsgICAgIyBXb3JrYXJvdW5kIFBSIGJpbnV0aWxz LzEwODAyOgotKyAgICAjIFByZXNlcnZlIHRoZSAneCcgYml0IGFsc28gZm9yIFBJRXMgKFBvc2l0 aW9uIEluZGVwZW5kZW50IEV4ZWN1dGFibGVzKS4KLSsgICAgc2V0IHBlcm0gW2ZpbGUgYXR0cmli dXRlcyAke3N0cmlwcGVkX2ZpbGV9IC1wZXJtaXNzaW9uc10KLSsgICAgZmlsZSBhdHRyaWJ1dGVz ICR7ZGVzdH0gLXBlcm1pc3Npb25zICRwZXJtCi0rCi0rICAgIHJldHVybiAwCi0gfQotIAotICMg VGVzdCB0aGUgb3V0cHV0IG9mIEdEQl9DT01NQU5EIG1hdGNoZXMgdGhlIHBhdHRlcm4gb2J0YWlu ZWQKLUBAIC0zMDQzLDMgKzMwNTMsNzAgQEAgaWYge1tpbmZvIGV4aXN0cyBUUkFOU0NSSVBUXX0g ewotICAgICByZXR1cm4gW3VwbGV2ZWwgcmVhbF9zZW5kX2dkYiAkYXJnc10KLSAgIH0KLSB9Ci0r Ci0rcHJvYyBjb3JlX2ZpbmQge2JpbmZpbGUge2RlbGV0ZWZpbGVzIHt9fSB7YXJnICIifX0gewot KyAgICBnbG9iYWwgb2JqZGlyIHN1YmRpcgotKwotKyAgICBzZXQgZGVzdGNvcmUgIiRiaW5maWxl LmNvcmUiCi0rICAgIGZpbGUgZGVsZXRlICRkZXN0Y29yZQotKwotKyAgICAjIENyZWF0ZSBhIGNv cmUgZmlsZSBuYW1lZCAiJGRlc3Rjb3JlIiByYXRoZXIgdGhhbiBqdXN0ICJjb3JlIiwgdG8KLSsg ICAgIyBhdm9pZCBwcm9ibGVtcyB3aXRoIHN5cyBhZG1pbiB0eXBlcyB0aGF0IGxpa2UgdG8gcmVn dWxhcmx5IHBydW5lIGFsbAotKyAgICAjIGZpbGVzIG5hbWVkICJjb3JlIiBmcm9tIHRoZSBzeXN0 ZW0uCi0rICAgICMKLSsgICAgIyBBcmJpdHJhcmlseSB0cnkgc2V0dGluZyB0aGUgY29yZSBzaXpl IGxpbWl0IHRvICJ1bmxpbWl0ZWQiIHNpbmNlCi0rICAgICMgdGhpcyBkb2VzIG5vdCBodXJ0IG9u IHN5c3RlbXMgd2hlcmUgdGhlIGNvbW1hbmQgZG9lcyBub3Qgd29yayBhbmQKLSsgICAgIyBhbGxv d3MgdXMgdG8gZ2VuZXJhdGUgYSBjb3JlIG9uIHN5c3RlbXMgd2hlcmUgaXQgZG9lcy4KLSsgICAg IwotKyAgICAjIFNvbWUgc3lzdGVtcyBhcHBlbmQgImNvcmUiIHRvIHRoZSBuYW1lIG9mIHRoZSBw cm9ncmFtOyBvdGhlcnMgYXBwZW5kCi0rICAgICMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8g ImNvcmUiOyBzdGlsbCBvdGhlcnMgKGxpa2UgTGludXgsIGFzIG9mCi0rICAgICMgTWF5IDIwMDMp IGNyZWF0ZSBjb3JlcyBuYW1lZCAiY29yZS5QSUQiLiAgSW4gdGhlIGxhdHRlciBjYXNlLCB3ZQot KyAgICAjIGNvdWxkIGhhdmUgbWFueSBjb3JlIGZpbGVzIGx5aW5nIGFyb3VuZCwgYW5kIGl0IG1h eSBiZSBkaWZmaWN1bHQgdG8KLSsgICAgIyB0ZWxsIHdoaWNoIG9uZSBpcyBvdXJzLCBzbyBsZXQn cyBydW4gdGhlIHByb2dyYW0gaW4gYSBzdWJkaXJlY3RvcnkuCi0rICAgIHNldCBmb3VuZCAwCi0r ICAgIHNldCBjb3JlZGlyICIke29iamRpcn0vJHtzdWJkaXJ9L2NvcmVkaXIuW2dldHBpZF0iCi0r ICAgIGZpbGUgbWtkaXIgJGNvcmVkaXIKLSsgICAgY2F0Y2ggInN5c3RlbSBcIihjZCAke2NvcmVk aXJ9OyB1bGltaXQgLWMgdW5saW1pdGVkOyAke2JpbmZpbGV9ICR7YXJnfTsgdHJ1ZSkgPi9kZXYv bnVsbCAyPiYxXCIiCi0rICAgICMgICAgICByZW1vdGVfZXhlYyBob3N0ICIke2JpbmZpbGV9Igot KyAgICBmb3JlYWNoIGkgIiR7Y29yZWRpcn0vY29yZSAke2NvcmVkaXJ9L2NvcmUuY29yZW1ha2Vy LmMgJHtiaW5maWxlfS5jb3JlIiB7Ci0rCWlmIFtyZW1vdGVfZmlsZSBidWlsZCBleGlzdHMgJGld IHsKLSsJICAgIHJlbW90ZV9leGVjIGJ1aWxkICJtdiAkaSAkZGVzdGNvcmUiCi0rCSAgICBzZXQg Zm91bmQgMQotKwl9Ci0rICAgIH0KLSsgICAgIyBDaGVjayBmb3IgImNvcmUuUElEIi4KLSsgICAg aWYgeyAkZm91bmQgPT0gMCB9IHsKLSsJc2V0IG5hbWVzIFtnbG9iIC1ub2NvbXBsYWluIC1kaXJl Y3RvcnkgJGNvcmVkaXIgY29yZS4qXQotKwlpZiB7W2xsZW5ndGggJG5hbWVzXSA9PSAxfSB7Ci0r CSAgICBzZXQgY29yZWZpbGUgW2ZpbGUgam9pbiAkY29yZWRpciBbbGluZGV4ICRuYW1lcyAwXV0K LSsJICAgIHJlbW90ZV9leGVjIGJ1aWxkICJtdiAkY29yZWZpbGUgJGRlc3Rjb3JlIgotKwkgICAg c2V0IGZvdW5kIDEKLSsJfQotKyAgICB9Ci0rICAgIGlmIHsgJGZvdW5kID09IDAgfSB7Ci0rCSMg VGhlIGJyYWluZGFtYWdlZCBIUFVYIHNoZWxsIHF1aXRzIGFmdGVyIHRoZSB1bGltaXQgLWMgYWJv dmUKLSsJIyB3aXRob3V0IGV4ZWN1dGluZyAke2JpbmZpbGV9LiAgU28gd2UgdHJ5IGFnYWluIHdp dGhvdXQgdGhlCi0rCSMgdWxpbWl0IGhlcmUgaWYgd2UgZGlkbid0IGZpbmQgYSBjb3JlIGZpbGUg YWJvdmUuCi0rCSMgT2gsIEkgc2hvdWxkIG1lbnRpb24gdGhhdCBhbnkgImJyYWluZGFtYWdlZCIg bm9uLVVuaXggc3lzdGVtIGhhcwotKwkjIHRoZSBzYW1lIHByb2JsZW0uIEkgbGlrZSB0aGUgY2Qg Yml0IHRvbywgaXQncyByZWFsbHkgbmVhdCduIHN0dWZmLgotKwljYXRjaCAic3lzdGVtIFwiKGNk ICR7b2JqZGlyfS8ke3N1YmRpcn07ICR7YmluZmlsZX07IHRydWUpID4vZGV2L251bGwgMj4mMVwi IgotKwlmb3JlYWNoIGkgIiR7b2JqZGlyfS8ke3N1YmRpcn0vY29yZSAke29iamRpcn0vJHtzdWJk aXJ9L2NvcmUuY29yZW1ha2VyLmMgJHtiaW5maWxlfS5jb3JlIiB7Ci0rCSAgICBpZiBbcmVtb3Rl X2ZpbGUgYnVpbGQgZXhpc3RzICRpXSB7Ci0rCQlyZW1vdGVfZXhlYyBidWlsZCAibXYgJGkgJGRl c3Rjb3JlIgotKwkJc2V0IGZvdW5kIDEKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgICMg VHJ5IHRvIGNsZWFuIHVwIGFmdGVyIG91cnNlbHZlcy4gCi0rICAgIGZvcmVhY2ggZGVsZXRlZmls ZSAkZGVsZXRlZmlsZXMgewotKwlyZW1vdGVfZmlsZSBidWlsZCBkZWxldGUgW2ZpbGUgam9pbiAk Y29yZWRpciAkZGVsZXRlZmlsZV0KLSsgICAgfQotKyAgICByZW1vdGVfZXhlYyBidWlsZCAicm1k aXIgJGNvcmVkaXIiCi0rCQotKyAgICBpZiB7ICRmb3VuZCA9PSAwICB9IHsKLSsJd2FybmluZyAi Y2FuJ3QgZ2VuZXJhdGUgYSBjb3JlIGZpbGUgLSBjb3JlIHRlc3RzIHN1cHByZXNzZWQgLSBjaGVj ayB1bGltaXQgLWMiCi0rCXJldHVybiAiIgotKyAgICB9Ci0rICAgIHJldHVybiAkZGVzdGNvcmUK LSt9CgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci5wYXRjaCBiL2dkYi1hcmNoZXIucGF0Y2gKaW5k ZXggYzI1ODQ0Yi4uNjdlNjUxMCAxMDA2NDQKLS0tIGEvZ2RiLWFyY2hlci5wYXRjaAorKysgYi9n ZGItYXJjaGVyLnBhdGNoCkBAIC0yLDM4ICsyLDM2IEBAIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9n ZGIvd2lraS9Qcm9qZWN0QXJjaGVyCiBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvQXJj aGVyQnJhbmNoTWFuYWdlbWVudAogCiBHSVQgc25hcHNob3Q6Ci1jb21taXQgNmU3Mzk4OGY2NTNi YTk4NmU4NzQyZjIwOGYxN2VjMDg0MjkyY2JkNQorY29tbWl0IDgxODEwYTIwYjJkMmMzYmYxOGUx NTFkZTNjZGRmYzk2NDQ1YjNjNDYKIAogYnJhbmNoIGBhcmNoZXInIC0gdGhlIG1lcmdlIG9mIGJy YW5jaGVzOgotYXJjaGVyLXRyb21leS1jYWxsLWZyYW1lLWNmYQogYXJjaGVyLXRyb21leS1kZWxh eWVkLXN5bWZpbGUKLWFyY2hlci10cm9tZXktZHctb3AtdmFsdWUKLWFyY2hlci1qYW5rcmF0b2No dmlsLXZsYQotYXJjaGVyLWphbmtyYXRvY2h2aWwtbWlzYwotYXJjaGVyLWtlaXRocy1leHByLWN1 bXVsYXRpdmUKIGFyY2hlci10cm9tZXktcHl0aG9uCithcmNoZXItcG11bGRvb24tbmV4dC1vdmVy LXRocm93CiBhcmNoZXItamFua3JhdG9jaHZpbC1mb3J0cmFuLW1vZHVsZQogYXJjaGVyLWphbmty YXRvY2h2aWwtd2F0Y2hwb2ludAotYXJjaGVyLWphbmtyYXRvY2h2aWwtYnBfbG9jYXRpb24tYWNj ZWwKLWFyY2hlci1wbXVsZG9vbi1uZXh0LW92ZXItdGhyb3cKK2FyY2hlci1qYW5rcmF0b2Nodmls LXZsYQorVE9ETzphcmNoZXIta2VpdGhzLWV4cHItY3VtdWxhdGl2ZQogCiAKIGRpZmYgLS1naXQg YS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4KLWluZGV4IDdkNTMyMDUuLjMxOWZh YzQgMTAwNjQ0CitpbmRleCBmZjhiODZlLi5mNDUwYTdiIDEwMDY0NAogLS0tIGEvZ2RiL01ha2Vm aWxlLmluCiArKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xNjksNiArMTY5LDEwIEBAIFRBUkdF VF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKLSAjIERp ZCB0aGUgdXNlciBnaXZlIHVzIGEgLS13aXRoLWdkYi1kYXRhZGlyIG9wdGlvbj8KLSBHREJfREFU QURJUiA9IEBHREJfREFUQURJUkAKK0BAIC0xNjcsNiArMTY3LDEyIEBAIFRBUkdFVF9TWVNURU1f Uk9PVCA9IEBUQVJHRVRfU1lTVEVNX1JPT1RACisgVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9 IEBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQAogIAorICMgRGlkIHRoZSB1c2VyIGdpdmUgdXMg YSAtLXdpdGgtZ2RiLWRhdGFkaXIgb3B0aW9uPworK0dEQl9EQVRBRElSX1BBVEggPSBAR0RCX0RB VEFESVJfUEFUSEAKKysKICsjIFRoZSBhcmd1bWVudCB0byAtLXdpdGgtcHl0aG9uZGlyLiAgSWYg bm90IGdpdmVuLCB0aGlzIGlzCiArIyBHREJfREFUQURJUl9QQVRIL3B5dGhvbi4KICtweXRob25k aXIgPSBAcHl0aG9uZGlyQAogKworIEdEQl9EQVRBRElSID0gQEdEQl9EQVRBRElSQAorIAogICMg SGVscGVyIGNvZGUgZnJvbSBnbnVsaWIuCi0gTElCR05VID0gZ251bGliL2xpYmdudS5hCi0gSU5D R05VID0gLUkkKHNyY2RpcikvZ251bGliIC1JZ251bGliCi1AQCAtMjY3LDIxICsyNzEsMzcgQEAg U1VCRElSX1RVSV9DRkxBR1M9IFwKK0BAIC0yNjcsMjMgKzI3MywzOSBAQCBTVUJESVJfVFVJX0NG TEFHUz0gXAogICMKICBTVUJESVJfUFlUSE9OX09CUyA9IFwKICAJcHl0aG9uLm8gXApAQCAtNDUs NiArNDMsNyBAQCBpbmRleCA3ZDUzMjA1Li4zMTlmYWM0IDEwMDY0NAogKwlweS1ob29rcy5vIFwK ICsJcHktaW5mZXJpb3IubyBcCiArCXB5LWluZnRocmVhZC5vIFwKKyAJcHktbGF6eS1zdHJpbmcu byBcCiAgCXB5LW9iamZpbGUubyBcCiArCXB5LXBhcmFtLm8gXAogIAlweS1wcmV0dHlwcmludC5v IFwKQEAgLTYzLDYgKzYyLDcgQEAgaW5kZXggN2Q1MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICsJcHl0 aG9uL3B5LWhvb2tzLmMgXAogKwlweXRob24vcHktaW5mZXJpb3IuYyBcCiArCXB5dGhvbi9weS1p bmZ0aHJlYWQuYyBcCisgCXB5dGhvbi9weS1sYXp5LXN0cmluZy5jIFwKICAJcHl0aG9uL3B5LW9i amZpbGUuYyBcCiArCXB5dGhvbi9weS1wYXJhbS5jIFwKICAJcHl0aG9uL3B5LXByZXR0eXByaW50 LmMgXApAQCAtNzEsMjUgKzcxLDE3IEBAIGluZGV4IDdkNTMyMDUuLjMxOWZhYzQgMTAwNjQ0CiAg CXB5dGhvbi9weS10eXBlLmMgXAogIAlweXRob24vcHktdXRpbHMuYyBcCiAgCXB5dGhvbi9weS12 YWx1ZS5jCi1AQCAtNzUwLDcgKzc3MCw3IEBAIGNvbmZpZy9yczYwMDAvbm0tcnM2MDAwLmggdG9w LmggYnNkLWt2bS5oIGdkYi1zdGFicy5oIHJlZ2dyb3Vwcy5oIFwKK0BAIC03NTYsNyArNzc4LDgg QEAgY29uZmlnL3JzNjAwMC9ubS1yczYwMDAuaCB0b3AuaCBic2Qta3ZtLmggZ2RiLXN0YWJzLmgg cmVnZ3JvdXBzLmggXAogIGFubm90YXRlLmggc2ltLXJlZ25vLmggZGljdGlvbmFyeS5oIGRmcC5o IG1haW4uaCBmcmFtZS11bndpbmQuaAlcCiAgcmVtb3RlLWZpbGVpby5oIGkzODYtbGludXgtdGRl cC5oIHZheC10ZGVwLmggb2JqYy1sYW5nLmggXAogIHNlbnRpbmVsLWZyYW1lLmggYmNhY2hlLmgg c3ltZmlsZS5oIHdpbmRvd3MtdGRlcC5oIGxpbnV4LXRkZXAuaCBcCi0tZ2RiX3VzbGVlcC5oIGpp dC5oIHhtbC1zeXNjYWxsLmggYWRhLW9wZXJhdG9yLmluYwotK2dkYl91c2xlZXAuaCBqaXQuaCB4 bWwtc3lzY2FsbC5oIGFkYS1vcGVyYXRvci5pbmMgcHl0aG9uL3B5dGhvbi5oIHB5dGhvbi9weXRo b24taW50ZXJuYWwuaAorLWdkYl91c2xlZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5oIGFkYS1vcGVy YXRvci5pbmMgbWljcm9ibGF6ZS10ZGVwLmgKKytnZGJfdXNsZWVwLmggaml0LmggcHl0aG9uL3B5 dGhvbi5oIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCBcCisreG1sLXN5c2NhbGwuaCBhZGEtb3Bl cmF0b3IuaW5jIG1pY3JvYmxhemUtdGRlcC5oCiAgCiAgIyBIZWFkZXIgZmlsZXMgdGhhdCBhbHJl YWR5IGhhdmUgc3JjZGlyIGluIHRoZW0sIG9yIHdoaWNoIGFyZSBpbiBvYmpkaXIuCiAgCi1AQCAt ODc0LDcgKzg5NCw3IEBAIGdlbmVyYXRlZF9maWxlcyA9IGNvbmZpZy5oIG9ic2VydmVyLmggb2Jz ZXJ2ZXIuaW5jIGFkYS1sZXguYyBcCi0gCSQoQ09NUElMRSkgJDwKLSAJJChQT1NUQ09NUElMRSkK LSAKLS1hbGw6IGdkYiQoRVhFRVhUKSAkKENPTkZJR19BTEwpIHhtbC1zeXNjYWxsLWNvcHkKLSth bGw6IGdkYiQoRVhFRVhUKSAkKENPTkZJR19BTEwpIHhtbC1zeXNjYWxsLWNvcHkgLmdkYmluaXQK LSAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBETz1hbGwgIkRPRElSUz1gZWNobyAkKFNVQkRJ UlMpIHwgc2VkICdzL3Rlc3RzdWl0ZS8vJ2AiIHN1YmRpcl9kbwotIC5QSE9OWTogYWxsLXR1aQot IGFsbC10dWk6ICQoVFVJKSQoRVhFRVhUKQotQEAgLTEyNjQsNiArMTI4NCwxMiBAQCBzdGFtcC1o OiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC0xMjcwLDYgKzEyOTMsMTIg QEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCiAgCSAgQ09ORklH X0xJTktTPSBcCiAgCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cwogIApAQCAtMTAyLDcgKzk0LDcg QEAgaW5kZXggN2Q1MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICBjb25maWcuc3RhdHVzOiAkKHNyY2Rp cikvY29uZmlndXJlIGNvbmZpZ3VyZS50Z3QgY29uZmlndXJlLmhvc3QKICAJJChTSEVMTCkgY29u ZmlnLnN0YXR1cyAtLXJlY2hlY2sKICAKLUBAIC0xOTYzLDYgKzE5ODksMTQgQEAgcHl0aG9uLm86 ICQoc3JjZGlyKS9weXRob24vcHl0aG9uLmMKK0BAIC0xOTcwLDYgKzE5OTksMTQgQEAgcHl0aG9u Lm86ICQoc3JjZGlyKS9weXRob24vcHl0aG9uLmMKICAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxB R1MpICQoc3JjZGlyKS9weXRob24vcHl0aG9uLmMKICAJJChQT1NUQ09NUElMRSkKICAKQEAgLTEx Nyw3ICsxMDksNyBAQCBpbmRleCA3ZDUzMjA1Li4zMTlmYWM0IDEwMDY0NAogIHB5LWNtZC5vOiAk KHNyY2RpcikvcHl0aG9uL3B5LWNtZC5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAk KHNyY2RpcikvcHl0aG9uL3B5LWNtZC5jCiAgCSQoUE9TVENPTVBJTEUpCi1AQCAtMTk3NSwxNCAr MjAwOSwzOCBAQCBweS1mdW5jdGlvbi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0aW9uLmMK K0BAIC0xOTgyLDYgKzIwMTksMTggQEAgcHktZnVuY3Rpb24ubzogJChzcmNkaXIpL3B5dGhvbi9w eS1mdW5jdGlvbi5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0 aG9uL3B5LWZ1bmN0aW9uLmMKICAJJChQT1NUQ09NUElMRSkKICAKQEAgLTEzMyw3ICsxMjUsMTAg QEAgaW5kZXggN2Q1MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICsJJChDT01QSUxFKSAkKFBZVEhPTl9D RkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktaW5mdGhyZWFkLmMKICsJJChQT1NUQ09NUElMRSkK ICsKLSBweS1vYmpmaWxlLm86ICQoc3JjZGlyKS9weXRob24vcHktb2JqZmlsZS5jCisgcHktbGF6 eS1zdHJpbmcubzogJChzcmNkaXIpL3B5dGhvbi9weS1sYXp5LXN0cmluZy5jCisgCSQoQ09NUElM RSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LWxhenktc3RyaW5nLmMKKyAJ JChQT1NUQ09NUElMRSkKK0BAIC0xOTkwLDEwICsyMDM5LDIyIEBAIHB5LW9iamZpbGUubzogJChz cmNkaXIpL3B5dGhvbi9weS1vYmpmaWxlLmMKICAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1Mp ICQoc3JjZGlyKS9weXRob24vcHktb2JqZmlsZS5jCiAgCSQoUE9TVENPTVBJTEUpCiAgCkBAIC0x NTYsNyArMTUxLDcgQEAgaW5kZXggN2Q1MzIwNS4uMzE5ZmFjNCAxMDA2NDQKICBweS10eXBlLm86 ICQoc3JjZGlyKS9weXRob24vcHktdHlwZS5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdT KSAkKHNyY2RpcikvcHl0aG9uL3B5LXR5cGUuYwogIAkkKFBPU1RDT01QSUxFKQotQEAgLTE5OTUs NiArMjA1MywzNiBAQCBweS12YWx1ZS5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMKK0BA IC0yMDA2LDYgKzIwNjcsMzYgQEAgcHktdmFsdWUubzogJChzcmNkaXIpL3B5dGhvbi9weS12YWx1 ZS5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LXZh bHVlLmMKICAJJChQT1NUQ09NUElMRSkKICAKQEAgLTE5NCwxMCArMTg5LDEwIEBAIGluZGV4IDdk NTMyMDUuLjMxOWZhYzQgMTAwNjQ0CiAgIyBEZXBlbmRlbmN5IHRyYWNraW5nLiAgTW9zdCBvZiB0 aGlzIGlzIGNvbmRpdGlvbmFsIG9uIEdOVSBNYWtlIGJlaW5nCiAgIyBmb3VuZCBieSBjb25maWd1 cmU7IGlmIEdOVSBNYWtlIGlzIG5vdCBmb3VuZCwgd2UgZmFsbCBiYWNrIHRvIGEKIGRpZmYgLS1n aXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCi1pbmRleCA4ZDMyYzM0Li5mN2VhMjFiIDEwMDY0NAor aW5kZXggMTdkNjRmYi4uZTBlYjE2MCAxMDA2NDQKIC0tLSBhL2dkYi9ORVdTCiArKysgYi9nZGIv TkVXUwotQEAgLTQ3Niw2ICs0NzYsMTMgQEAgeDg2L3g4Nl82NCBEYXJ3aW4JCWlbMzQ1NjddODYt Ki1kYXJ3aW4qCitAQCAtNjY5LDYgKzY2OSwxMyBAQCB4ODYveDg2XzY0IERhcndpbgkJaVszNDU2 N104Ni0qLWRhcndpbioKICAKICB4ODZfNjQgTWluR1cJCQl4ODZfNjQtKi1taW5ndyoKICAKQEAg LTIxMiwxMCArMjA3LDEwIEBAIGluZGV4IDhkMzJjMzQuLmY3ZWEyMWIgMTAwNjQ0CiAgCiAgTGF0 dGljZSBNaWNvMzIgICAgICAgICAgICAgICAgICBsbTMyLSoKIGRpZmYgLS1naXQgYS9nZGIvYWRh LWxhbmcuYyBiL2dkYi9hZGEtbGFuZy5jCi1pbmRleCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAor aW5kZXggMjRkZWY5NS4uNDY4MjA0NSAxMDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysg Yi9nZGIvYWRhLWxhbmcuYwotQEAgLTE2MjEsNyArMTYyMSw3IEBAIGFkYV90eXBlX29mX2FycmF5 IChzdHJ1Y3QgdmFsdWUgKmFyciwgaW50IGJvdW5kcykKK0BAIC0xNjQ0LDcgKzE2NDQsNyBAQCBh ZGFfdHlwZV9vZl9hcnJheSAoc3RydWN0IHZhbHVlICphcnIsIGludCBib3VuZHMpCiAgICAgICAg ICByZXR1cm4gTlVMTDsKICAgICAgICB3aGlsZSAoYXJpdHkgPiAwKQogICAgICAgICAgewpAQCAt MjI0LDIzICsyMTksNyBAQCBpbmRleCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAogICAgICAgICAg ICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAodmFsdWVfdHlwZSAo YXJyKSk7CiAgICAgICAgICAgIHN0cnVjdCB2YWx1ZSAqbG93ID0gZGVzY19vbmVfYm91bmQgKGRl c2NyaXB0b3IsIGFyaXR5LCAwKTsKICAgICAgICAgICAgc3RydWN0IHZhbHVlICpoaWdoID0gZGVz Y19vbmVfYm91bmQgKGRlc2NyaXB0b3IsIGFyaXR5LCAxKTsKLUBAIC00NzI3LDE0ICs0NzI3LDEw IEBAIGFkYV9sb29rdXBfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrMCwKLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCi0gYWRhX2xvb2t1cF9zeW1i b2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLS0gIGlmIChsaW5rYWdlX25hbWUgPT0g TlVMTCkKLS0gICAgbGlua2FnZV9uYW1lID0gbmFtZTsKLS0gIHJldHVybiBhZGFfbG9va3VwX3N5 bWJvbCAobGlua2FnZV9uYW1lLCBibG9ja19zdGF0aWNfYmxvY2sgKGJsb2NrKSwgZG9tYWluLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKLSsgIHJldHVybiBhZGFfbG9va3Vw X3N5bWJvbCAobmFtZSwgYmxvY2tfc3RhdGljX2Jsb2NrIChibG9jayksIGRvbWFpbiwgTlVMTCk7 Ci0gfQotIAotIAotQEAgLTEwODM5LDYgKzEwODM1LDQwIEBAIGFkYV9vcGVyYXRvcl9sZW5ndGgg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsIGludCAqYXJnc3Ap CitAQCAtMTA5MzcsNiArMTA5MzcsNDAgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwgaW50ICphcmdzcCkKICAgICAgfQog IH0KICAKQEAgLTI4MSw3ICsyNjAsNyBAQCBpbmRleCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAog IHN0YXRpYyBjaGFyICoKICBhZGFfb3BfbmFtZSAoZW51bSBleHBfb3Bjb2RlIG9wY29kZSkKICB7 Ci1AQCAtMTEyMjcsNiArMTEyNTcsNyBAQCBwYXJzZSAodm9pZCkKK0BAIC0xMTMyNSw2ICsxMTM1 OSw3IEBAIHBhcnNlICh2b2lkKQogIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3Ig YWRhX2V4cF9kZXNjcmlwdG9yID0gewogICAgYWRhX3ByaW50X3N1YmV4cCwKICAgIGFkYV9vcGVy YXRvcl9sZW5ndGgsCkBAIC0yOTAsNzQgKzI2OSwxMyBAQCBpbmRleCA5YjVkMmM2Li42MTY3NmE5 IDEwMDY0NAogICAgYWRhX2R1bXBfc3ViZXhwX2JvZHksCiAgICBhZGFfZXZhbHVhdGVfc3ViZXhw CiBkaWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jIGIvZ2RiL2FtZDY0LWxpbnV4LW5h dC5jCi1pbmRleCA3ZDg0NjFjLi5mYzRiM2UwIDEwMDY0NAoraW5kZXggNWM5ZTU1OC4uNTVhMTg3 MyAxMDA2NDQKIC0tLSBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYwogKysrIGIvZ2RiL2FtZDY0LWxp bnV4LW5hdC5jCi1AQCAtMjcwLDYgKzI3MCw4IEBAIGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZF90 IHB0aWQsIGludCByZWdudW0pCi0gICByZXR1cm4gdmFsdWU7Ci0gfQotIAotKy8qIFNldCBkZWJ1 ZyByZWdpc3RlciBSRUdOVU0gdG8gVkFMVUUgaW4gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAg Ki8KLSsKLSBzdGF0aWMgdm9pZAotIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZF90IHB0aWQsIGlu dCByZWdudW0sIHVuc2lnbmVkIGxvbmcgdmFsdWUpCi0gewotQEAgLTI4Niw2ICsyODgsOCBAQCBh bWQ2NF9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBsb25n IHZhbHVlKQotICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyBy ZWdpc3RlciIpKTsKLSB9Ci0gCi0rLyogU2V0IERSX0NPTlRST0wgdG8gQUREUiBpbiBhbGwgTFdQ cyBvZiBMV1BfTElTVC4gICovCi0rCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF9kcl9zZXRf Y29udHJvbCAodW5zaWduZWQgbG9uZyBjb250cm9sKQotIHsKLUBAIC0yOTcsNiArMzAxLDggQEAg YW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKLSAgICAg YW1kNjRfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKLSB9Ci0gCi0r LyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9m IExXUF9MSVNULiAgKi8KLSsKLSBzdGF0aWMgdm9pZAotIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRy IChpbnQgcmVnbnVtLCBDT1JFX0FERFIgYWRkcikKLSB7Ci1AQCAtMzEwLDE4ICszMTYsNTUgQEAg YW1kNjRfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQotICAg ICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7 Ci0gfQotIAotKy8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBh bGwgTFdQcyBvZiBMV1BfTElTVC4gICovCi0rCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF9k cl9yZXNldF9hZGRyIChpbnQgcmVnbnVtKQotIHsKLSAgIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRy IChyZWdudW0sIDApOwotIH0KLSAKLSsvKiBHZXQgRFJfU1RBVFVTIGZyb20gb25seSB0aGUgb25l IExXUCBvZiBJTkZFUklPUl9QVElELiAgKi8KLSsKLSBzdGF0aWMgdW5zaWduZWQgbG9uZwotIGFt ZDY0X2xpbnV4X2RyX2dldF9zdGF0dXMgKHZvaWQpCi0gewotICAgcmV0dXJuIGFtZDY0X2xpbnV4 X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsKK0BAIC0zNTAsNiArMzUwLDIwIEBA IGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorICAgICB9 CiAgfQogIAotKy8qIFVuc2V0IE1BU0sgYml0cyBpbiBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2Yg TFdQX0xJU1QuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rYW1kNjRfbGludXhfZHJfdW5zZXRfc3Rh dHVzICh1bnNpZ25lZCBsb25nIG1hc2spCi0rewotKyAgc3RydWN0IGx3cF9pbmZvICpscDsKLSsg IHB0aWRfdCBwdGlkOwotKwotKyAgQUxMX0xXUFMgKGxwLCBwdGlkKQotKyAgICB7Ci0rICAgICAg dW5zaWduZWQgbG9uZyB2YWx1ZTsKLSsgICAgICAKLSsgICAgICB2YWx1ZSA9IGFtZDY0X2xpbnV4 X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsKLSsgICAgICB2YWx1ZSAmPSB+bWFzazsKLSsgICAg ICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQsIERSX1NUQVRVUywgdmFsdWUpOwotKyAgICB9Ci0r fQotKwogKy8qIFNlZSBpMzg2X2RyX2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBl cnMgYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wKICsgICBvciBhbWQ2NF9saW51eF9kcl9yZXNl dF9hZGRyIGFzIHRoZXkgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQogKyAgIChhbWQ2 NF9saW51eF9kcikuICAqLwpAQCAtMzcyLDM2ICsyOTAsMjIgQEAgaW5kZXggN2Q4NDYxYy4uZmM0 YjNlMCAxMDA2NDQKICsgIGZvciAocmVnbnVtID0gRFJfRklSU1RBRERSOyByZWdudW0gPD0gRFJf TEFTVEFERFI7IHJlZ251bSsrKQogKyAgICBhbWQ2NF9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0 aWQsIHJlZ251bSwgMCk7CiArfQotKworIAogIHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfbmV3 X3RocmVhZCAocHRpZF90IHB0aWQpCi0gewotQEAgLTY3Miw2ICs3MTUsOCBAQCBfaW5pdGlhbGl6 ZV9hbWQ2NF9saW51eF9uYXQgKHZvaWQpCi0gICBpMzg2X2RyX2xvdy5zZXRfYWRkciA9IGFtZDY0 X2xpbnV4X2RyX3NldF9hZGRyOworQEAgLTcwMiw2ICs3MTYsNyBAQCBfaW5pdGlhbGl6ZV9hbWQ2 NF9saW51eF9uYXQgKHZvaWQpCiAgICBpMzg2X2RyX2xvdy5yZXNldF9hZGRyID0gYW1kNjRfbGlu dXhfZHJfcmVzZXRfYWRkcjsKICAgIGkzODZfZHJfbG93LmdldF9zdGF0dXMgPSBhbWQ2NF9saW51 eF9kcl9nZXRfc3RhdHVzOwotKyAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gYW1kNjRfbGlu dXhfZHJfdW5zZXRfc3RhdHVzOworICAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gYW1kNjRf bGludXhfZHJfdW5zZXRfc3RhdHVzOwogKyAgaTM4Nl9kcl9sb3cuZGV0YWNoID0gYW1kNjRfbGlu dXhfZHJfZGV0YWNoOwogICAgaTM4Nl9zZXRfZGVidWdfcmVnaXN0ZXJfbGVuZ3RoICg4KTsKICAK ICAgIC8qIE92ZXJyaWRlIHRoZSBHTlUvTGludXggaW5mZXJpb3Igc3RhcnR1cCBob29rLiAgKi8K IGRpZmYgLS1naXQgYS9nZGIvYmxvY2suYyBiL2dkYi9ibG9jay5jCi1pbmRleCA5N2VhNjdhLi5i MjBiZWViIDEwMDY0NAoraW5kZXggNDhhYzIxYi4uODAwMDNiOCAxMDA2NDQKIC0tLSBhL2dkYi9i bG9jay5jCiArKysgYi9nZGIvYmxvY2suYwotQEAgLTIyNyw4ICsyMjcsOSBAQCBibG9ja19zZXRf c2NvcGUgKHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKnNjb3BlLAotICAgQkxPQ0tf TkFNRVNQQUNFIChibG9jayktPnNjb3BlID0gc2NvcGU7Ci0gfQotIAotLS8qIFRoaXMgcmV0dXJu cyB0aGUgdXNpbmcgZGlyZWN0aXZlcyBsaXN0IGFzc29jaWF0ZWQgd2l0aCBCTE9DSywgaWYKLS0g ICBhbnkuICAqLwotKy8qIFRoaXMgcmV0dXJucyB0aGUgZmlyc3QgdXNpbmcgZGlyZWN0aXZlcyBh c3NvY2lhdGVkIHdpdGggQkxPQ0ssIGlmCi0rICAgYW55LiAgRWFjaCBCTE9DS19OQU1FU1BBQ0Uo KS0+VVNJTkcgYWxyZWFkeSBjb250YWlucyBhbGwgdGhlIG5hbWVzcGFjZXMKLSsgICBpbXBvcnRl ZCBhdCB0aGF0IGNvZGUgcG9pbnQgLSBldmVuIHRob3NlIGZyb20gaXRzIHBhcmVudCBibG9ja3Mu ICAqLwotIAotIHN0cnVjdCB1c2luZ19kaXJlY3QgKgotIGJsb2NrX3VzaW5nIChjb25zdCBzdHJ1 Y3QgYmxvY2sgKmJsb2NrKQotQEAgLTMxOCw2ICszMTksMjUgQEAgYWxsb2NhdGVfYmxvY2sgKHN0 cnVjdCBvYnN0YWNrICpvYnN0YWNrKQorQEAgLTMxOCw2ICszMTgsMjUgQEAgYWxsb2NhdGVfYmxv Y2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQogICAgQkxPQ0tfU1VQRVJCTE9DSyAoYmwpID0g TlVMTDsKICAgIEJMT0NLX0RJQ1QgKGJsKSA9IE5VTEw7CiAgICBCTE9DS19OQU1FU1BBQ0UgKGJs KSA9IE5VTEw7CkBAIC00MjgsNyArMzMyLDcgQEAgaW5kZXggOTdlYTY3YS4uYjIwYmVlYiAxMDA2 NDQKICsgIHJldHVybiBTWU1CT0xfU1lNVEFCIChmdW5jKS0+b2JqZmlsZTsKICt9CiBkaWZmIC0t Z2l0IGEvZ2RiL2Jsb2NrLmggYi9nZGIvYmxvY2suaAotaW5kZXggNTNlNzM3MS4uZDM3M2Y4YSAx MDA2NDQKK2luZGV4IDdlZWRiNmMuLmIxNDc4MjYgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suaAog KysrIGIvZ2RiL2Jsb2NrLmgKIEBAIC05Niw2ICs5NiwxNSBAQCBzdHJ1Y3QgYmxvY2sKQEAgLTQ2 Myw3ICszNjcsNyBAQCBpbmRleCA1M2U3MzcxLi5kMzczZjhhIDEwMDY0NAogKwogICNlbmRpZiAv KiBCTE9DS19IICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3Bv aW50LmMKLWluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CitpbmRleCAwZGM4NDc0Li4xYTMw OWI1IDEwMDY0NAogLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2RiL2JyZWFrcG9pbnQu YwogQEAgLTYxLDYgKzYxLDcgQEAKQEAgLTQ3NCw3MiArMzc4LDcgQEAgaW5kZXggODExY2RmYi4u MGYzNTEwMSAxMDA2NDQKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCiAgI2luY2x1 ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtMTEyLDggKzExMyw2IEBAIHN0cnVjdCBicmVh a3BvaW50ICpzZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotIAkJ CQkJICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSwKLSAJCQkJCSAgICAgIGVudW0gYnB0eXBl KTsKLSAKLS1zdGF0aWMgdm9pZCBjaGVja19kdXBsaWNhdGVzIChzdHJ1Y3QgYnJlYWtwb2ludCAq KTsKLS0KLSBzdGF0aWMgdm9pZCBicmVha3BvaW50X2FkanVzdG1lbnRfd2FybmluZyAoQ09SRV9B RERSLCBDT1JFX0FERFIsIGludCwgaW50KTsKLSAKLSBzdGF0aWMgQ09SRV9BRERSIGFkanVzdF9i cmVha3BvaW50X2FkZHJlc3MgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotQEAgLTMzNywxNCAr MzM2LDE0IEBAIHN0YXRpYyBpbnQgZXhlY3V0aW5nX3N0YXJ0dXA7Ci0gCSAgICAgQiA/IChUTVA9 Qi0+bmV4dCwgMSk6IDA7CVwKLSAJICAgICBCID0gVE1QKQotIAotLS8qIFNpbWlsYXIgaXRlcmF0 b3JzIGZvciB0aGUgbG93LWxldmVsIGJyZWFrcG9pbnRzLiAgKi8KLS0KLS0jZGVmaW5lIEFMTF9C UF9MT0NBVElPTlMoQikgIGZvciAoQiA9IGJwX2xvY2F0aW9uX2NoYWluOyBCOyBCID0gQi0+Z2xv YmFsX25leHQpCi0rLyogU2ltaWxhciBpdGVyYXRvciBmb3IgdGhlIGxvdy1sZXZlbCBicmVha3Bv aW50cy4gIFNBRkUgdmFyaWFudCBpcyBub3QKLSsgICBwcm92aWRlZCBzbyB1cGRhdGVfZ2xvYmFs X2xvY2F0aW9uX2xpc3QgbXVzdCBub3QgYmUgY2FsbGVkIHdoaWxlIGV4ZWN1dGluZwotKyAgIHRo ZSBibG9jayBvZiBBTExfQlBfTE9DQVRJT05TLiAgKi8KLSAKLS0jZGVmaW5lIEFMTF9CUF9MT0NB VElPTlNfU0FGRShCLFRNUCkJXAotLQlmb3IgKEIgPSBicF9sb2NhdGlvbl9jaGFpbjsJXAotLQkg ICAgIEIgPyAoVE1QPUItPmdsb2JhbF9uZXh0LCAxKTogMDsJXAotLQkgICAgIEIgPSBUTVApCi0r I2RlZmluZSBBTExfQlBfTE9DQVRJT05TKEIsQlBfVE1QKQkJCQkJXAotKwlmb3IgKEJQX1RNUCA9 IGJwX2xvY2F0aW9uOwkJCQkJXAotKwkgICAgIEJQX1RNUCA8IGJwX2xvY2F0aW9uICsgYnBfbG9j YXRpb25fY291bnQgJiYgKEIgPSAqQlBfVE1QKTsJXAotKwkgICAgIEJQX1RNUCsrKQotIAotIC8q IEl0ZXJhdG9yIGZvciB0cmFjZXBvaW50cyBvbmx5LiAgKi8KLSAKLUBAIC0zNTYsMTAgKzM1NSwz MSBAQCBzdGF0aWMgaW50IGV4ZWN1dGluZ19zdGFydHVwOwotIAotIHN0cnVjdCBicmVha3BvaW50 ICpicmVha3BvaW50X2NoYWluOwotIAotLXN0cnVjdCBicF9sb2NhdGlvbiAqYnBfbG9jYXRpb25f Y2hhaW47Ci0rLyogQXJyYXkgaXMgc29ydGVkIGJ5IGJwX2xvY2F0aW9uX2NvbXBhcmUgLSBwcmlt YXJpbHkgYnkgdGhlIEFERFJFU1MuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgYnBfbG9jYXRpb24g KipicF9sb2NhdGlvbjsKLSsKLSsvKiBOdW1iZXIgb2YgZWxlbWVudHMgb2YgQlBfTE9DQVRJT04u ICAqLwotKwotK3N0YXRpYyB1bnNpZ25lZCBicF9sb2NhdGlvbl9jb3VudDsKLSsKLSsvKiBNYXhp bXVtIGFsaWdubWVudCBvZmZzZXQgYmV0d2VlbiBicF90YXJnZXRfaW5mby5QTEFDRURfQUREUkVT UyBhbmQgQUREUkVTUwotKyAgIGZvciB0aGUgY3VycmVudCBlbGVtZW50cyBvZiBCUF9MT0NBVElP TiB3aGljaCBnZXQgYSB2YWxpZCByZXN1bHQgZnJvbQotKyAgIGJwX2xvY2F0aW9uX2hhc19zaGFk b3cuICBZb3UgY2FuIHVzZSBpdCBmb3Igcm91Z2hseSBsaW1pdGluZyB0aGUgc3VicmFuZ2Ugb2YK LSsgICBCUF9MT0NBVElPTiB0byBzY2FuIGZvciBzaGFkb3cgYnl0ZXMgZm9yIGFuIGFkZHJlc3Mg eW91IG5lZWQgdG8gcmVhZC4gICovCi0rCi0rc3RhdGljIENPUkVfQUREUiBicF9sb2NhdGlvbl9w bGFjZWRfYWRkcmVzc19iZWZvcmVfYWRkcmVzc19tYXg7Ci0rCi0rLyogTWF4aW11bSBvZmZzZXQg cGx1cyBhbGlnbm1lbnQgYmV0d2VlbgotKyAgIGJwX3RhcmdldF9pbmZvLlBMQUNFRF9BRERSRVNT ICsgYnBfdGFyZ2V0X2luZm8uU0hBRE9XX0xFTiBhbmQgQUREUkVTUyBmb3IKLSsgICB0aGUgY3Vy cmVudCBlbGVtZW50cyBvZiBCUF9MT0NBVElPTiB3aGljaCBnZXQgYSB2YWxpZCByZXN1bHQgZnJv bQotKyAgIGJwX2xvY2F0aW9uX2hhc19zaGFkb3cuICBZb3UgY2FuIHVzZSBpdCBmb3Igcm91Z2hs eSBsaW1pdGluZyB0aGUgc3VicmFuZ2Ugb2YKLSsgICBCUF9MT0NBVElPTiB0byBzY2FuIGZvciBz aGFkb3cgYnl0ZXMgZm9yIGFuIGFkZHJlc3MgeW91IG5lZWQgdG8gcmVhZC4gICovCi0rCi0rc3Rh dGljIENPUkVfQUREUiBicF9sb2NhdGlvbl9zaGFkb3dfbGVuX2FmdGVyX2FkZHJlc3NfbWF4Owot IAotIC8qIFRoZSBsb2NhdGlvbnMgdGhhdCBubyBsb25nZXIgY29ycmVzcG9uZCB0byBhbnkgYnJl YWtwb2ludCwKLS0gICB1bmxpbmtlZCBmcm9tIGJwX2xvY2F0aW9uX2NoYWluLCBidXQgZm9yIHdo aWNoIGEgaGl0Ci0rICAgdW5saW5rZWQgZnJvbSBicF9sb2NhdGlvbiBhcnJheSwgYnV0IGZvciB3 aGljaCBhIGhpdAotICAgIG1heSBzdGlsbCBiZSByZXBvcnRlZCBieSBhIHRhcmdldC4gICovCi0g VkVDKGJwX2xvY2F0aW9uX3ApICptb3JpYnVuZF9sb2NhdGlvbnMgPSBOVUxMOwotIAotQEAgLTU4 Miw2ICs2MDIsNTMgQEAgZ2V0X2JyZWFrcG9pbnQgKGludCBudW0pCitAQCAtNjE2LDYgKzYxNyw1 MyBAQCBnZXRfYnJlYWtwb2ludCAoaW50IG51bSkKICB9CiAgCiAgDApAQCAtNTkzLDcgKzQzMiw3 IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgLyogY29uZGl0aW9uIE4gRVhQIC0t IHNldCBicmVhayBjb25kaXRpb24gb2YgYnJlYWtwb2ludCBOIHRvIEVYUC4gICovCiAgCiAgc3Rh dGljIHZvaWQKLUBAIC02MDIsNDIgKzY2OSw3IEBAIGNvbmRpdGlvbl9jb21tYW5kIChjaGFyICph cmcsIGludCBmcm9tX3R0eSkKK0BAIC02MzYsNDIgKzY4NCw3IEBAIGNvbmRpdGlvbl9jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKICAgIEFMTF9CUkVBS1BPSU5UUyAoYikKICAgICAg aWYgKGItPm51bWJlciA9PSBibnVtKQogICAgICAgIHsKQEAgLTYzNywxODEgKzQ3Niw4IEBAIGlu ZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgCXJldHVybjsKICAgICAgICB9CiAgCi1AQCAt NzM1LDM1ICs3NjcsODggQEAgY29tbWFuZHNfZnJvbV9jb250cm9sX2NvbW1hbmQgKGNoYXIgKmFy Zywgc3RydWN0IGNvbW1hbmRfbGluZSAqY21kKQotICAgICAgIH0KLSAgIGVycm9yIChfKCJObyBi cmVha3BvaW50IG51bWJlciAlZC4iKSwgYm51bSk7Ci0gfQotLQwKLSsKLSsvKiBSZXR1cm4gbm9u LXplcm8gaWYgQkwtPlRBUkdFVF9JTkZPIGNvbnRhaW5zIHZhbGlkIGluZm9ybWF0aW9uLiAgKi8K LSsKLStzdGF0aWMgaW50Ci0rYnBfbG9jYXRpb25faGFzX3NoYWRvdyAoc3RydWN0IGJwX2xvY2F0 aW9uICpibCkKLSt7Ci0rICBpZiAoYmwtPmxvY190eXBlICE9IGJwX2xvY19zb2Z0d2FyZV9icmVh a3BvaW50KQotKyAgICByZXR1cm4gMDsKLSsgIGlmICghYmwtPmluc2VydGVkKQotKyAgICByZXR1 cm4gMDsKLSsgIGlmIChibC0+dGFyZ2V0X2luZm8uc2hhZG93X2xlbiA9PSAwKQotKyAgICAvKiBi cCBpc24ndCB2YWxpZCwgb3IgZG9lc24ndCBzaGFkb3cgbWVtb3J5LiAgKi8KLSsgICAgcmV0dXJu IDA7Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0gLyogVXBkYXRlIEJVRiwgd2hpY2ggaXMgTEVOIGJ5 dGVzIHJlYWQgZnJvbSB0aGUgdGFyZ2V0IGFkZHJlc3MgTUVNQUREUiwKLS0gICBieSByZXBsYWNp bmcgYW55IG1lbW9yeSBicmVha3BvaW50cyB3aXRoIHRoZWlyIHNoYWRvd2VkIGNvbnRlbnRzLiAg Ki8KLSsgICBieSByZXBsYWNpbmcgYW55IG1lbW9yeSBicmVha3BvaW50cyB3aXRoIHRoZWlyIHNo YWRvd2VkIGNvbnRlbnRzLgotKwotKyAgIFRoZSByYW5nZSBvZiBzaGFkb3dlZCBhcmVhIGJ5IGVh Y2ggYnBfbG9jYXRpb24gaXM6Ci0rICAgICBiLT5hZGRyZXNzIC0gYnBfbG9jYXRpb25fcGxhY2Vk X2FkZHJlc3NfYmVmb3JlX2FkZHJlc3NfbWF4Ci0rICAgICB1cCB0byBiLT5hZGRyZXNzICsgYnBf bG9jYXRpb25fc2hhZG93X2xlbl9hZnRlcl9hZGRyZXNzX21heAotKyAgIFRoZSByYW5nZSB3ZSB3 ZXJlIHJlcXVlc3RlZCB0byByZXNvbHZlIHNoYWRvd3MgZm9yIGlzOgotKyAgICAgbWVtYWRkciAu Li4gbWVtYWRkciArIGxlCi0rICAgVGh1cyB0aGUgc2FmZSBjdXRvZmYgYm91bmRhcmllcyBmb3Ig cGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIGFyZQotKyAgICAgbWVtYWRkciArIGxlbiA8PSBiLT5h ZGRyZXNzIC0gYnBfbG9jYXRpb25fcGxhY2VkX2FkZHJlc3NfYmVmb3JlX2FkZHJlc3NfbWF4Ci0r ICAgYW5kOgotKyAgICAgYi0+YWRkcmVzcyArIGJwX2xvY2F0aW9uX3NoYWRvd19sZW5fYWZ0ZXJf YWRkcmVzc19tYXggPD0gbWVtYWRkciAgKi8KLSAKLSB2b2lkCi0gYnJlYWtwb2ludF9yZXN0b3Jl X3NoYWRvd3MgKGdkYl9ieXRlICpidWYsIFVMT05HRVNUIG1lbWFkZHIsIExPTkdFU1QgbGVuKQot IHsKLS0gIHN0cnVjdCBicF9sb2NhdGlvbiAqYjsKLS0gIENPUkVfQUREUiBicF9hZGRyID0gMDsK LS0gIGludCBicF9zaXplID0gMDsKLS0gIGludCBicHRvZmZzZXQgPSAwOwotKyAgLyogTGVmdCBi b3VuZGFyeSwgcmlnaHQgYm91bmRhcnkgYW5kIG1lZGlhIGVsZW1lbnQgb2Ygb3VyIGJpbmFyeSBz ZWFyY2guICAqLwotKyAgdW5zaWduZWQgYmNfbCwgYmNfciwgYmM7Ci0rCi0rICAvKiBGaW5kIEJD X0wgd2hpY2ggaXMgYSBsZWZ0bW9zdCBlbGVtZW50IHdoaWNoIG1heSBhZmZlY3QgQlVGIGNvbnRl bnQuICBJdCBpcwotKyAgICAgc2FmZSB0byByZXBvcnQgbG93ZXIgdmFsdWUgYnV0IGEgZmFpbHVy ZSB0byByZXBvcnQgaGlnaGVyIG9uZS4gICovCi0gCi0tICBBTExfQlBfTE9DQVRJT05TIChiKQot KyAgYmNfbCA9IDA7Ci0rICBiY19yID0gYnBfbG9jYXRpb25fY291bnQ7Ci0rICB3aGlsZSAoYmNf bCArIDEgPCBiY19yKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKwot KyAgICAgIGJjID0gKGJjX2wgKyBiY19yKSAvIDI7Ci0rICAgICAgYiA9IGJwX2xvY2F0aW9uW2Jj XTsKLSsKLSsgICAgICBpZiAoYi0+YWRkcmVzcyArIGJwX2xvY2F0aW9uX3NoYWRvd19sZW5fYWZ0 ZXJfYWRkcmVzc19tYXggPj0gYi0+YWRkcmVzcwotKwkgICYmIGItPmFkZHJlc3MgKyBicF9sb2Nh dGlvbl9zaGFkb3dfbGVuX2FmdGVyX2FkZHJlc3NfbWF4IDw9IG1lbWFkZHIpCi0rCWJjX2wgPSBi YzsKLSsgICAgICBlbHNlCi0rCWJjX3IgPSBiYzsKLSsgICAgfQotKwotKyAgLyogTm93IGRvIGZ1 bGwgcHJvY2Vzc2luZyBvZiB0aGUgZm91bmQgcmVsZXZhbnQgcmFuZ2Ugb2YgZWxlbWVudHMuICAq LwotKwotKyAgZm9yIChiYyA9IGJjX2w7IGJjIDwgYnBfbG9jYXRpb25fY291bnQ7IGJjKyspCi0g ICB7Ci0rICAgIHN0cnVjdCBicF9sb2NhdGlvbiAqYiA9IGJwX2xvY2F0aW9uW2JjXTsKLSsgICAg Q09SRV9BRERSIGJwX2FkZHIgPSAwOwotKyAgICBpbnQgYnBfc2l6ZSA9IDA7Ci0rICAgIGludCBi cHRvZmZzZXQgPSAwOwotKwotICAgICBpZiAoYi0+b3duZXItPnR5cGUgPT0gYnBfbm9uZSkKLSAg ICAgICB3YXJuaW5nIChfKCJyZWFkaW5nIHRocm91Z2ggYXBwYXJlbnRseSBkZWxldGVkIGJyZWFr cG9pbnQgIyVkPyIpLAotICAgICAgICAgICAgICAgYi0+b3duZXItPm51bWJlcik7Ci0gCi0tICAg IGlmIChiLT5sb2NfdHlwZSAhPSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2ludCkKLS0gICAgICBj b250aW51ZTsKLS0gICAgaWYgKCFiLT5pbnNlcnRlZCkKLSsgICAgLyogUGVyZm9ybWFuY2Ugb3B0 aW1pemF0aW9uOiBhbnkgZnV0aGVyIGVsZW1lbnQgY2FuIG5vIGxvbmdlciBhZmZlY3QgQlVGCi0r ICAgICAgIGNvbnRlbnQuICAqLwotKwotKyAgICBpZiAoYi0+YWRkcmVzcyA+PSBicF9sb2NhdGlv bl9wbGFjZWRfYWRkcmVzc19iZWZvcmVfYWRkcmVzc19tYXgKLSsgICAgICAgICYmIG1lbWFkZHIg KyBsZW4gPD0gYi0+YWRkcmVzcwotKwkJCSAgICAtIGJwX2xvY2F0aW9uX3BsYWNlZF9hZGRyZXNz X2JlZm9yZV9hZGRyZXNzX21heCkKLSsgICAgICBicmVhazsKLSsKLSsgICAgaWYgKCFicF9sb2Nh dGlvbl9oYXNfc2hhZG93IChiKSkKLSAgICAgICBjb250aW51ZTsKLSsKLSAgICAgLyogQWRkcmVz c2VzIGFuZCBsZW5ndGggb2YgdGhlIHBhcnQgb2YgdGhlIGJyZWFrcG9pbnQgdGhhdAotICAgICAg ICB3ZSBuZWVkIHRvIGNvcHkuICAqLwotICAgICBicF9hZGRyID0gYi0+dGFyZ2V0X2luZm8ucGxh Y2VkX2FkZHJlc3M7Ci0gICAgIGJwX3NpemUgPSBiLT50YXJnZXRfaW5mby5zaGFkb3dfbGVuOwot LSAgICBpZiAoYnBfc2l6ZSA9PSAwKQotLSAgICAgIC8qIGJwIGlzbid0IHZhbGlkLCBvciBkb2Vz bid0IHNoYWRvdyBtZW1vcnkuICAqLwotLSAgICAgIGNvbnRpbnVlOwotIAotICAgICBpZiAoYnBf YWRkciArIGJwX3NpemUgPD0gbWVtYWRkcikKLSAgICAgICAvKiBUaGUgYnJlYWtwb2ludCBpcyBl bnRpcmVseSBiZWZvcmUgdGhlIGNodW5rIG9mIG1lbW9yeSB3ZQotQEAgLTkxMiw3ICs5OTcsNyBA QCB1cGRhdGVfd2F0Y2hwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNlKQot ICAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0gICBicHN0YXQgYnM7Ci0gCi0tICAvKiBXZSBk b24ndCBmcmVlIGxvY2F0aW9ucy4gIFRoZXkgYXJlIHN0b3JlZCBpbiBicF9sb2NhdGlvbl9jaGFp biBhbmQKLSsgIC8qIFdlIGRvbid0IGZyZWUgbG9jYXRpb25zLiAgVGhleSBhcmUgc3RvcmVkIGlu IGJwX2xvY2F0aW9uIGFycmF5IGFuZAotICAgICAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbnMgd2ls bCBldmVudHVhbGx5IGRlbGV0ZSB0aGVtIGFuZCByZW1vdmUKLSAgICAgIGJyZWFrcG9pbnRzIGlm IG5lZWRlZC4gICovCi0gICBiLT5sb2MgPSBOVUxMOwotQEAgLTEzNDcsNyArMTQzMiw3IEBAIHN0 YXRpYyB2b2lkCi0gaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQotIHsKLSAgIHN0 cnVjdCBicmVha3BvaW50ICpicHQ7Ci0tICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmIsICp0ZW1wOwot KyAgc3RydWN0IGJwX2xvY2F0aW9uICpiLCAqKmJwX3RtcDsKLSAgIGludCBlcnJvciA9IDA7Ci0g ICBpbnQgdmFsID0gMDsKLSAgIGludCBkaXNhYmxlZF9icmVha3MgPSAwOwotQEAgLTEzNjAsNyAr MTQ0NSw3IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKLSAgICAgIHRoZXJl IHdhcyBhbiBlcnJvci4gICovCi0gICBmcHJpbnRmX3VuZmlsdGVyZWQgKHRtcF9lcnJvcl9zdHJl YW0sICJXYXJuaW5nOlxuIik7Ci0gCQotLSAgQUxMX0JQX0xPQ0FUSU9OU19TQUZFIChiLCB0ZW1w KQotKyAgQUxMX0JQX0xPQ0FUSU9OUyAoYiwgYnBfdG1wKQotICAgICB7Ci0gICAgICAgaWYgKCFz aG91bGRfYmVfaW5zZXJ0ZWQgKGIpIHx8IGItPmluc2VydGVkKQotIAljb250aW51ZTsKLUBAIC0x NDM0LDEwICsxNTE5LDEwIEBAIFlvdSBtYXkgaGF2ZSByZXF1ZXN0ZWQgdG9vIG1hbnkgaGFyZHdh cmUgYnJlYWtwb2ludHMvd2F0Y2hwb2ludHMuXG4iKTsKLSBpbnQKLSByZW1vdmVfYnJlYWtwb2lu dHMgKHZvaWQpCi0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKyAgc3RydWN0IGJwX2xv Y2F0aW9uICpiLCAqKmJwX3RtcDsKLSAgIGludCB2YWwgPSAwOwotIAotLSAgQUxMX0JQX0xPQ0FU SU9OUyAoYikKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGIsIGJwX3RtcCkKLSAgIHsKLSAgICAgaWYg KGItPmluc2VydGVkKQotICAgICAgIHZhbCB8PSByZW1vdmVfYnJlYWtwb2ludCAoYiwgbWFya191 bmluc2VydGVkKTsKLUBAIC0xNDQ4LDEwICsxNTMzLDEwIEBAIHJlbW92ZV9icmVha3BvaW50cyAo dm9pZCkKLSBpbnQKLSByZW1vdmVfaHdfd2F0Y2hwb2ludHMgKHZvaWQpCi0gewotLSAgc3RydWN0 IGJwX2xvY2F0aW9uICpiOwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpiLCAqKmJwX3RtcDsKLSAg IGludCB2YWwgPSAwOwotIAotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYikKLSsgIEFMTF9CUF9MT0NB VElPTlMgKGIsIGJwX3RtcCkKLSAgIHsKLSAgICAgaWYgKGItPmluc2VydGVkICYmIGItPmxvY190 eXBlID09IGJwX2xvY19oYXJkd2FyZV93YXRjaHBvaW50KQotICAgICAgIHZhbCB8PSByZW1vdmVf YnJlYWtwb2ludCAoYiwgbWFya191bmluc2VydGVkKTsKLUBAIC0xNDYyLDcgKzE1NDcsNyBAQCBy ZW1vdmVfaHdfd2F0Y2hwb2ludHMgKHZvaWQpCi0gaW50Ci0gcmVhdHRhY2hfYnJlYWtwb2ludHMg KGludCBwaWQpCi0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKyAgc3RydWN0IGJwX2xv Y2F0aW9uICpiLCAqKmJwX3RtcDsKLSAgIGludCB2YWw7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqb2xk X2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOwotICAgc3RydWN0IHVpX2ZpbGUgKnRtcF9l cnJvcl9zdHJlYW0gPSBtZW1fZmlsZW9wZW4gKCk7Ci1AQCAtMTQ3MSw3ICsxNTU2LDcgQEAgcmVh dHRhY2hfYnJlYWtwb2ludHMgKGludCBwaWQpCi0gICBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxl dGUgKHRtcF9lcnJvcl9zdHJlYW0pOwotIAotICAgaW5mZXJpb3JfcHRpZCA9IHBpZF90b19wdGlk IChwaWQpOwotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYikKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGIs IGJwX3RtcCkKLSAgIHsKLSAgICAgaWYgKGItPmluc2VydGVkKQotICAgICAgIHsKLUBAIC0xNTY5 LDEyICsxNjU0LDQyIEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50IChjaGFyICpm dW5jX25hbWUpCi0gICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDEpOworQEAgLTE4NzAs NiArMTg4MywzNiBAQCBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoY2hhciAqZnVu Y19uYW1lKQorICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgfQogIAogKy8qIEluc3RhbGwg YSBtYXN0ZXIgYnJlYWtwb2ludCBvbiB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLiAgKi8KQEAg LTg0NywyMyArNTEzLDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQKICB2b2lkCiAg dXBkYXRlX2JyZWFrcG9pbnRzX2FmdGVyX2V4ZWMgKHZvaWQpCiAgewotICAgc3RydWN0IGJyZWFr cG9pbnQgKmI7Ci0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqdGVtcDsKLS0gIHN0cnVjdCBicF9sb2Nh dGlvbiAqYnBsb2M7Ci0rICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJwbG9jLCAqKmJwbG9jcF90bXA7 Ci0gCi0gICAvKiBXZSdyZSBhYm91dCB0byBkZWxldGUgYnJlYWtwb2ludHMgZnJvbSBHREIncyBs aXN0cy4gIElmIHRoZQotICAgICAgSU5TRVJURUQgZmxhZyBpcyB0cnVlLCBHREIgd2lsbCB0cnkg dG8gbGlmdCB0aGUgYnJlYWtwb2ludHMgYnkKLUBAIC0xNTg0LDcgKzE2OTksNyBAQCB1cGRhdGVf YnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKLSAgICAgIGJyZWFrcG9pbnRzIG91dCBhcyBz b29uIGFzIGl0IGRldGVjdHMgYW4gZXhlYy4gIFdlIGRvbid0IGRvIHRoYXQKLSAgICAgIGhlcmUg aW5zdGVhZCwgYmVjYXVzZSB0aGVyZSBtYXkgYmUgb3RoZXIgYXR0ZW1wdHMgdG8gZGVsZXRlCi0g ICAgICBicmVha3BvaW50cyBhZnRlciBkZXRlY3RpbmcgYW4gZXhlYyBhbmQgYmVmb3JlIHJlYWNo aW5nIGhlcmUuICAqLwotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYnBsb2MpCi0rICBBTExfQlBfTE9D QVRJT05TIChicGxvYywgYnBsb2NwX3RtcCkKLSAgICAgZ2RiX2Fzc2VydCAoIWJwbG9jLT5pbnNl cnRlZCk7Ci0gCi0gICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKLUBAIC0xNjA2LDcg KzE3MjEsNyBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKK0BAIC0xOTEx LDcgKzE5NTQsNyBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkKICAgICAg LyogVGhyZWFkIGV2ZW50IGJyZWFrcG9pbnRzIG11c3QgYmUgc2V0IGFuZXcgYWZ0ZXIgYW4gZXhl YygpLAogICAgICAgICBhcyBtdXN0IG92ZXJsYXkgZXZlbnQgYW5kIGxvbmdqbXAgbWFzdGVyIGJy ZWFrcG9pbnRzLiAgKi8KICAgICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGIt PnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudApAQCAtODcyLDcgKzUyMiw3IEBAIGluZGV4IDgxMWNk ZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgICAgewogIAlkZWxldGVfYnJlYWtwb2ludCAoYik7CiAg CWNvbnRpbnVlOwotQEAgLTE2MjEsNyArMTczNiw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRl cl9leGVjICh2b2lkKQorQEAgLTE5MjYsNyArMTk2OSw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19h ZnRlcl9leGVjICh2b2lkKQogIAogICAgICAvKiBMb25nam1wIGFuZCBsb25nam1wLXJlc3VtZSBi cmVha3BvaW50cyBhcmUgYWxzbyBtZWFuaW5nbGVzcwogICAgICAgICBhZnRlciBhbiBleGVjLiAg Ki8KQEAgLTg4Miw3ICs1MzIsNyBAQCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogICAg ICAgIHsKICAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwogIAljb250aW51ZTsKLUBAIC0xNjgyLDEy ICsxNzk4LDEzIEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQorQEAgLTE5 ODcsNiArMjAzMSw3IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQogICAg Y3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJfbG9uZ2ptcCIpOwogICAgY3JlYXRl X2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJzaWdsb25nam1wIik7CiAgICBjcmVhdGVfbG9u Z2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoIl9zaWdsb25nam1wIik7CkBAIC04OTAsMjggKzU0MCwx NSBAQCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogIH0KICAKICBpbnQKLSBkZXRhY2hf YnJlYWtwb2ludHMgKGludCBwaWQpCi0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpiOwotKyAg c3RydWN0IGJwX2xvY2F0aW9uICpiLCAqKmJwX3RtcDsKLSAgIGludCB2YWwgPSAwOwotICAgc3Ry dWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IHNhdmVfaW5mZXJpb3JfcHRpZCAoKTsKLSAKLUBAIC0x Njk2LDExICsxODEzLDEyIEBAIGRldGFjaF9icmVha3BvaW50cyAoaW50IHBpZCkKLSAKLSAgIC8q IFNldCBpbmZlcmlvcl9wdGlkOyByZW1vdmVfYnJlYWtwb2ludCB1c2VzIHRoaXMgZ2xvYmFsLiAg Ki8KLSAgIGluZmVyaW9yX3B0aWQgPSBwaWRfdG9fcHRpZCAocGlkKTsKLS0gIEFMTF9CUF9MT0NB VElPTlMgKGIpCi0rICBBTExfQlBfTE9DQVRJT05TIChiLCBicF90bXApCi0gICB7CitAQCAtMjAx MCw2ICsyMDU1LDcgQEAgZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgcGlkKQogICAgICBpZiAoYi0+ aW5zZXJ0ZWQpCi0gICAgICAgdmFsIHw9IHJlbW92ZV9icmVha3BvaW50IChiLCBtYXJrX2luc2Vy dGVkKTsKKyAgICAgICB2YWwgfD0gcmVtb3ZlX2JyZWFrcG9pbnRfMSAoYiwgbWFya19pbnNlcnRl ZCk7CiAgICB9CiArICB2YWwgfD0gdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cyAoKTsKICAgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwogICAgcmV0dXJuIHZhbDsKICB9Ci1AQCAtMTc5MywxMiAr MTkxMSwxNCBAQCByZW1vdmVfYnJlYWtwb2ludCAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNl cnRpb25fc3RhdGVfdCBpcykKK0BAIC0yMTA5LDEyICsyMTU1LDE0IEBAIHJlbW92ZV9icmVha3Bv aW50XzEgKHN0cnVjdCBicF9sb2NhdGlvbiAqYiwgaW5zZXJ0aW9uX3N0YXRlX3QgaXMpCiAgCXJl dHVybiB2YWw7CiAgICAgICAgYi0+aW5zZXJ0ZWQgPSAoaXMgPT0gbWFya19pbnNlcnRlZCk7CiAg ICAgIH0KQEAgLTkyOCw5OCArNTY1LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQK ICAgICAgICB2YWwgPSB0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQgKGItPmFkZHJlc3MsIGItPmxl bmd0aCwgCiAgCQkJCSAgICAgIGItPndhdGNocG9pbnRfdHlwZSk7CiAgCi1AQCAtMTgyNyw5ICsx OTQ3LDkgQEAgcmVtb3ZlX2JyZWFrcG9pbnQgKHN0cnVjdCBicF9sb2NhdGlvbiAqYiwgaW5zZXJ0 aW9uX3N0YXRlX3QgaXMpCi0gdm9pZAotIG1hcmtfYnJlYWtwb2ludHNfb3V0ICh2b2lkKQotIHsK LS0gIHN0cnVjdCBicF9sb2NhdGlvbiAqYnB0OwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpicHQs ICoqYnB0cF90bXA7Ci0gCi0tICBBTExfQlBfTE9DQVRJT05TIChicHQpCi0rICBBTExfQlBfTE9D QVRJT05TIChicHQsIGJwdHBfdG1wKQotICAgICBicHQtPmluc2VydGVkID0gMDsKLSB9Ci0gCi1A QCAtMTg0OSw3ICsxOTY5LDcgQEAgdm9pZAotIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51 bSBpbmZfY29udGV4dCBjb250ZXh0KQotIHsKLSAgIHN0cnVjdCBicmVha3BvaW50ICpiLCAqdGVt cDsKLS0gIHN0cnVjdCBicF9sb2NhdGlvbiAqYnB0OwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpi cHQsICoqYnB0cF90bXA7Ci0gICBpbnQgaXg7Ci0gCi0gICAvKiBJZiBicmVha3BvaW50IGxvY2F0 aW9ucyBhcmUgc2hhcmVkIGFjcm9zcyBwcm9jZXNzZXMsIHRoZW4gdGhlcmUncwotQEAgLTE4NTcs NyArMTk3Nyw3IEBAIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBpbmZfY29udGV4dCBj b250ZXh0KQotICAgaWYgKGdkYmFyY2hfaGFzX2dsb2JhbF9icmVha3BvaW50cyAodGFyZ2V0X2dk YmFyY2gpKQotICAgICByZXR1cm47Ci0gCi0tICBBTExfQlBfTE9DQVRJT05TIChicHQpCi0rICBB TExfQlBfTE9DQVRJT05TIChicHQsIGJwdHBfdG1wKQotICAgICBpZiAoYnB0LT5vd25lci0+ZW5h YmxlX3N0YXRlICE9IGJwX3Blcm1hbmVudCkKLSAgICAgICBicHQtPmluc2VydGVkID0gMDsKLSAK LUBAIC0xOTE4LDEwICsyMDM4LDEwIEBAIGJyZWFrcG9pbnRfaW5pdF9pbmZlcmlvciAoZW51bSBp bmZfY29udGV4dCBjb250ZXh0KQotIGVudW0gYnJlYWtwb2ludF9oZXJlCi0gYnJlYWtwb2ludF9o ZXJlX3AgKENPUkVfQUREUiBwYykKLSB7Ci0tICBjb25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJw dDsKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAqYnB0LCAqKmJwdHBfdG1wOwotICAgaW50IGFueV9i cmVha3BvaW50X2hlcmUgPSAwOwotIAotLSAgQUxMX0JQX0xPQ0FUSU9OUyAoYnB0KQotKyAgQUxM X0JQX0xPQ0FUSU9OUyAoYnB0LCBicHRwX3RtcCkKLSAgICAgewotICAgICAgIGlmIChicHQtPmxv Y190eXBlICE9IGJwX2xvY19zb2Z0d2FyZV9icmVha3BvaW50Ci0gCSAgJiYgYnB0LT5sb2NfdHlw ZSAhPSBicF9sb2NfaGFyZHdhcmVfYnJlYWtwb2ludCkKLUBAIC0xOTYxLDE2ICsyMDgxLDE2IEBA IG1vcmlidW5kX2JyZWFrcG9pbnRfaGVyZV9wIChDT1JFX0FERFIgcGMpCi0gfQotIAotIC8qIFJl dHVybnMgbm9uLXplcm8gaWYgdGhlcmUncyBhIGJyZWFrcG9pbnQgaW5zZXJ0ZWQgYXQgUEMsIHdo aWNoIGlzCi0tICAgaW5zZXJ0ZWQgdXNpbmcgcmVndWxhciBicmVha3BvaW50X2NoYWluL2JwX2xv Y2F0aW9uX2NoYWluIG1lY2hhbmlzbS4KLSsgICBpbnNlcnRlZCB1c2luZyByZWd1bGFyIGJyZWFr cG9pbnRfY2hhaW4gLyBicF9sb2NhdGlvbiBhcnJheSBtZWNoYW5pc20uCi0gICAgVGhpcyBkb2Vz IG5vdCBjaGVjayBmb3Igc2luZ2xlLXN0ZXAgYnJlYWtwb2ludHMsIHdoaWNoIGFyZQotICAgIGlu c2VydGVkIGFuZCByZW1vdmVkIHVzaW5nIGRpcmVjdCB0YXJnZXQgbWFuaXB1bGF0aW9uLiAgKi8K LSAKLSBpbnQKLSByZWd1bGFyX2JyZWFrcG9pbnRfaW5zZXJ0ZWRfaGVyZV9wIChDT1JFX0FERFIg cGMpCi0gewotLSAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpicHQ7Ci0rICBzdHJ1Y3QgYnBf bG9jYXRpb24gKmJwdCwgKipicHRwX3RtcDsKLSAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGJwdCkK LSsgIEFMTF9CUF9MT0NBVElPTlMgKGJwdCwgYnB0cF90bXApCi0gICAgIHsKLSAgICAgICBpZiAo YnB0LT5sb2NfdHlwZSAhPSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2ludAotIAkgICYmIGJwdC0+ bG9jX3R5cGUgIT0gYnBfbG9jX2hhcmR3YXJlX2JyZWFrcG9pbnQpCi1AQCAtMjAxMSwxMCArMjEz MSwxMCBAQCBicmVha3BvaW50X2luc2VydGVkX2hlcmVfcCAoQ09SRV9BRERSIHBjKQotIGludAot IHNvZnR3YXJlX2JyZWFrcG9pbnRfaW5zZXJ0ZWRfaGVyZV9wIChDT1JFX0FERFIgcGMpCi0gewot LSAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpicHQ7Ci0rICBzdHJ1Y3QgYnBfbG9jYXRpb24g KmJwdCwgKipicHRwX3RtcDsKLSAgIGludCBhbnlfYnJlYWtwb2ludF9oZXJlID0gMDsKLSAKLS0g IEFMTF9CUF9MT0NBVElPTlMgKGJwdCkKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGJwdCwgYnB0cF90 bXApCi0gICAgIHsKLSAgICAgICBpZiAoYnB0LT5sb2NfdHlwZSAhPSBicF9sb2Nfc29mdHdhcmVf YnJlYWtwb2ludCkKLSAJY29udGludWU7Ci1AQCAtMjA0NCwxMiArMjE2NCwxMiBAQCBzb2Z0d2Fy ZV9icmVha3BvaW50X2luc2VydGVkX2hlcmVfcCAoQ09SRV9BRERSIHBjKQotIGludAotIGJyZWFr cG9pbnRfdGhyZWFkX21hdGNoIChDT1JFX0FERFIgcGMsIHB0aWRfdCBwdGlkKQotIHsKLS0gIGNv bnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYnB0OwotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpicHQs ICoqYnB0cF90bXA7Ci0gICAvKiBUaGUgdGhyZWFkIGFuZCB0YXNrIElEcyBhc3NvY2lhdGVkIHRv IFBUSUQsIGNvbXB1dGVkIGxhemlseS4gICovCi0gICBpbnQgdGhyZWFkID0gLTE7Ci0gICBpbnQg dGFzayA9IDA7Ci0gICAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGJwdCkKLSsgIEFMTF9CUF9MT0NB VElPTlMgKGJwdCwgYnB0cF90bXApCi0gICAgIHsKLSAgICAgICBpZiAoYnB0LT5sb2NfdHlwZSAh PSBicF9sb2Nfc29mdHdhcmVfYnJlYWtwb2ludAotIAkgICYmIGJwdC0+bG9jX3R5cGUgIT0gYnBf bG9jX2hhcmR3YXJlX2JyZWFrcG9pbnQpCi1AQCAtMjUwMyw2ICsyNjIzLDEyIEBAIHByaW50X2l0 X3R5cGljYWwgKGJwc3RhdCBicykKK0BAIC0yODk0LDYgKzI5NDIsMTIgQEAgcHJpbnRfaXRfdHlw aWNhbCAoYnBzdGF0IGJzKQogICAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7CiAgICAgICAg YnJlYWs7CiAgCkBAIC0xMDMyLDcgKzU3OCw3IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAw NjQ0CiAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludDoKICAgICAgY2FzZSBicF9oYXJkd2FyZV93YXRj aHBvaW50OgogICAgICAgIGFubm90YXRlX3dhdGNocG9pbnQgKGItPm51bWJlcik7Ci1AQCAtMjU5 MCw2ICsyNzE2LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQorQEAgLTI5ODEsNiAr MzAzNSw4IEBAIHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKICAgICAgY2FzZSBicF9ub25l OgogICAgICBjYXNlIGJwX2xvbmdqbXA6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CkBA IC0xMDQxLDcgKzU4Nyw3IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgIGNh c2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKICAgICAg Y2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTI5NzMsOCArMzEwMSwxMiBAQCBicHN0YXRfY2hlY2tf bG9jYXRpb24gKGNvbnN0IHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsIENPUkVfQUREUiBicF9hZGRy KQorQEAgLTMzODUsOCArMzQ0MSwxMiBAQCBicHN0YXRfY2hlY2tfbG9jYXRpb24gKGNvbnN0IHN0 cnVjdCBicF9sb2NhdGlvbiAqYmwsCiAgCiAgLyogSWYgQlMgcmVmZXJzIHRvIGEgd2F0Y2hwb2lu dCwgZGV0ZXJtaW5lIGlmIHRoZSB3YXRjaGVkIHZhbHVlcwogICAgIGhhcyBhY3R1YWxseSBjaGFu Z2VkLCBhbmQgd2Ugc2hvdWxkIHN0b3AuICBJZiBub3QsIHNldCBCUy0+c3RvcApAQCAtMTA1Niw3 ICs2MDIsNyBAQCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogIGJwc3RhdF9jaGVja193 YXRjaHBvaW50IChicHN0YXQgYnMpCiAgewogICAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpi bCA9IGJzLT5icmVha3BvaW50X2F0OwotQEAgLTMwNjMsOCArMzE5NSwxMCBAQCBicHN0YXRfY2hl Y2tfd2F0Y2hwb2ludCAoYnBzdGF0IGJzKQorQEAgLTM0NzUsOCArMzUzNSwxMCBAQCBicHN0YXRf Y2hlY2tfd2F0Y2hwb2ludCAoYnBzdGF0IGJzKQogIAkgICAgIGFueXRoaW5nIGZvciB0aGlzIHdh dGNocG9pbnQuICAqLwogIAkgIGJzLT5wcmludF9pdCA9IHByaW50X2l0X25vb3A7CiAgCSAgYnMt PnN0b3AgPSAwOwpAQCAtMTA2Nyw5MyArNjEzLDUxIEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEg MTAwNjQ0CiAgfQogIAogIAotQEAgLTMxNTcsMTcgKzMyOTEsMTkgQEAgYnBzdGF0Ci0gYnBzdGF0 X3N0b3Bfc3RhdHVzIChDT1JFX0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCi0gewotICAgc3Ry dWN0IGJyZWFrcG9pbnQgKmIgPSBOVUxMOwotLSAgY29uc3Qgc3RydWN0IGJwX2xvY2F0aW9uICpi bDsKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAqYmwsICoqYmxwX3RtcDsKLSAgIHN0cnVjdCBicF9s b2NhdGlvbiAqbG9jOwotICAgLyogUm9vdCBvZiB0aGUgY2hhaW4gb2YgYnBzdGF0J3MgKi8KLSAg IHN0cnVjdCBicHN0YXRzIHJvb3RfYnNbMV07Ci0gICAvKiBQb2ludGVyIHRvIHRoZSBsYXN0IHRo aW5nIGluIHRoZSBjaGFpbiBjdXJyZW50bHkuICAqLwotICAgYnBzdGF0IGJzID0gcm9vdF9iczsK LSAgIGludCBpeDsKLS0gIGludCBuZWVkX3JlbW92ZV9pbnNlcnQ7Ci0rICBpbnQgbmVlZF9yZW1v dmVfaW5zZXJ0LCB1cGRhdGVfbG9jYXRpb25zID0gMDsKLSAKLS0gIEFMTF9CUF9MT0NBVElPTlMg KGJsKQotKyAgQUxMX0JQX0xPQ0FUSU9OUyAoYmwsIGJscF90bXApCi0gICB7Ci0rICAgIGJwc3Rh dCBic19wcmV2ID0gYnM7Ci0rCi0gICAgIGIgPSBibC0+b3duZXI7Ci0gICAgIGdkYl9hc3NlcnQg KGIpOwotICAgICBpZiAoIWJyZWFrcG9pbnRfZW5hYmxlZCAoYikgJiYgYi0+ZW5hYmxlX3N0YXRl ICE9IGJwX3Blcm1hbmVudCkKLUBAIC0zMTg4LDYgKzMzMjQsNyBAQCBicHN0YXRfc3RvcF9zdGF0 dXMgKENPUkVfQUREUiBicF9hZGRyLCBwdGlkX3QgcHRpZCkKLSAgICAgLyogQ29tZSBoZXJlIGlm IGl0J3MgYSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBtYXRjaGVzICovCi0g Ci0gICAgIGJzID0gYnBzdGF0X2FsbG9jIChibCwgYnMpOwkvKiBBbGxvYyBhIGJwc3RhdCB0byBl eHBsYWluIHN0b3AgKi8KLSsgICAgZ2RiX2Fzc2VydCAoYnNfcHJldi0+bmV4dCA9PSBicyk7Ci0g Ci0gICAgIC8qIEFzc3VtZSB3ZSBzdG9wLiAgU2hvdWxkIHdlIGZpbmQgd2F0Y2hwb2ludCB0aGF0 IGlzIG5vdCBhY3R1YWxseQotICAgICAgICB0cmlnZ2VyZWQsIG9yIGlmIGNvbmRpdGlvbiBvZiBi cmVha3BvaW50IGlzIGZhbHNlLCB3ZSdsbCByZXNldAotQEAgLTMxOTUsMTIgKzMzMzIsMjEgQEAg YnBzdGF0X3N0b3Bfc3RhdHVzIChDT1JFX0FERFIgYnBfYWRkciwgcHRpZF90IHB0aWQpCi0gICAg IGJzLT5zdG9wID0gMTsKLSAgICAgYnMtPnByaW50ID0gMTsKLSAKLS0gICAgYnBzdGF0X2NoZWNr X3dhdGNocG9pbnQgKGJzKTsKLS0gICAgaWYgKCFicy0+c3RvcCkKLS0gICAgICBjb250aW51ZTsK LSsgICAgaWYgKCFicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnMpKQotKyAgICAgIHsKLSsJLyog RW5zdXJlIGJwc3RhdF9leHBsYWluc19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3Vs ZCBub3QgYmUKLSsJICAgdGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCi0rCi0rCWdkYl9hc3Nl cnQgKGJzLT5wcmludF9pdCA9PSBwcmludF9pdF9ub29wKTsKLSsJZ2RiX2Fzc2VydCAoIWJzLT5z dG9wKTsKLSsJeGZyZWUgKGJzKTsKLSsJYnMgPSBic19wcmV2OwotKwlicy0+bmV4dCA9IE5VTEw7 Ci0rCWNvbnRpbnVlOwotKyAgICAgIH0KLSAKLSAgICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFk X2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAotLQl8fCBiLT50eXBlID09IGJw X2xvbmdqbXBfbWFzdGVyKQotKwl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGIt PnR5cGUgPT0gYnBfZXhjZXB0aW9uX21hc3RlcikKLSAgICAgICAvKiBXZSBkbyBub3Qgc3RvcCBm b3IgdGhlc2UuICAqLwotICAgICAgIGJzLT5zdG9wID0gMDsKLSAgICAgZWxzZQotQEAgLTMyMDgs MTQgKzMzNTQsMTUgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChDT1JFX0FERFIgYnBfYWRkciwgcHRp ZF90IHB0aWQpCi0gICAKLSAgICAgaWYgKGJzLT5zdG9wKQotICAgICAgIHsKLS0JKysoYi0+aGl0 X2NvdW50KTsKLSsJaWYgKGItPmVuYWJsZV9zdGF0ZSAhPSBicF9kaXNhYmxlZCkKLSsJICArKyhi LT5oaXRfY291bnQpOworQEAgLTM1OTAsNiArMzY1Miw4IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAo c3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKICAKLSAJLyogV2Ugd2lsbCBzdG9wIGhlcmUg Ki8KLSAJaWYgKGItPmRpc3Bvc2l0aW9uID09IGRpc3BfZGlzYWJsZSkKLSAJICB7Ci0gCSAgICBp ZiAoYi0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1hbmVudCkKLSAJICAgICAgYi0+ZW5hYmxlX3N0 YXRlID0gYnBfZGlzYWJsZWQ7Ci0tCSAgICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgKDAp OwotKwkgICAgdXBkYXRlX2xvY2F0aW9ucyA9IDE7Ci0gCSAgfQotIAlpZiAoYi0+c2lsZW50KQot IAkgIGJzLT5wcmludCA9IDA7Ci1AQCAtMzIzNSw2ICszMzgyLDEwIEBAIGJwc3RhdF9zdG9wX3N0 YXR1cyAoQ09SRV9BRERSIGJwX2FkZHIsIHB0aWRfdCBwdGlkKQotICAgICAgIGJzLT5wcmludF9p dCA9IHByaW50X2l0X25vb3A7Ci0gICB9CisgICAgICAgZm9yIChibCA9IGItPmxvYzsgYmwgIT0g TlVMTDsgYmwgPSBibC0+bmV4dCkKKyAJeworKwkgIGJwc3RhdCBic19wcmV2ID0gYnM7CisrCisg CSAgLyogRm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzLCB3ZSBsb29rIG9ubHkgYXQgdGhlIGZpcnN0 IGxvY2F0aW9uLgorIAkgICAgIFRoZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29y ayBvbiBlbnRpcmUgZXhwcmVzc2lvbiwKKyAJICAgICBub3QgdGhlIGluZGl2aWR1YWwgbG9jYXRp b25zLiAgRm9yIHJlYWQgd2F0Y2hvcGludHMsIHRoZQorQEAgLTM2MDcsNiArMzY3MSw3IEBAIGJw c3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKKyAJICAvKiBD b21lIGhlcmUgaWYgaXQncyBhIHdhdGNocG9pbnQsIG9yIGlmIHRoZSBicmVhayBhZGRyZXNzIG1h dGNoZXMgKi8KKyAKKyAJICBicyA9IGJwc3RhdF9hbGxvYyAoYmwsIGJzKTsJLyogQWxsb2MgYSBi cHN0YXQgdG8gZXhwbGFpbiBzdG9wICovCisrCSAgZ2RiX2Fzc2VydCAoYnNfcHJldi0+bmV4dCA9 PSBicyk7CisgCisgCSAgLyogQXNzdW1lIHdlIHN0b3AuICBTaG91bGQgd2UgZmluZCB3YXRjaHBv aW50IHRoYXQgaXMgbm90IGFjdHVhbGx5CisgCSAgICAgdHJpZ2dlcmVkLCBvciBpZiBjb25kaXRp b24gb2YgYnJlYWtwb2ludCBpcyBmYWxzZSwgd2UnbGwgcmVzZXQKK0BAIC0zNjE0LDEyICszNjc5 LDIyIEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwK KyAJICBicy0+c3RvcCA9IDE7CisgCSAgYnMtPnByaW50ID0gMTsKKyAKKy0JICBicHN0YXRfY2hl Y2tfd2F0Y2hwb2ludCAoYnMpOworLQkgIGlmICghYnMtPnN0b3ApCistCSAgICBjb250aW51ZTsK KysJICBpZiAoIWJwc3RhdF9jaGVja193YXRjaHBvaW50IChicykpCisrCSAgICB7CisrCSAgICAg IC8qIEVuc3VyZSBicHN0YXRfZXhwbGFpbnNfc2lnbmFsIHN0YXlzIGZhbHNlIGlmIHRoaXMgQkwg Y291bGQgbm90IGJlCisrCQkgdGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCisrCisrCSAgICAg IGdkYl9hc3NlcnQgKGJzLT5wcmludF9pdCA9PSBwcmludF9pdF9ub29wKTsKKysJICAgICAgZ2Ri X2Fzc2VydCAoIWJzLT5zdG9wKTsKKysJICAgICAgeGZyZWUgKGJzKTsKKysJICAgICAgYnMgPSBi c19wcmV2OworKwkgICAgICBicy0+bmV4dCA9IE5VTEw7CisrCSAgICAgIGNvbnRpbnVlOworKwkg ICAgfQogIAotKyAgLyogRGVsYXkgdGhpcyBjYWxsIHdoaWNoIHdvdWxkIGJyZWFrIHRoZSBBTExf QlBfTE9DQVRJT05TIGl0ZXJhdGlvbiBhYm92ZS4gICovCi0rICBpZiAodXBkYXRlX2xvY2F0aW9u cykKLSsgICAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0ICgwKTsKLSsKLSAgIGZvciAoaXgg PSAwOyBWRUNfaXRlcmF0ZSAoYnBfbG9jYXRpb25fcCwgbW9yaWJ1bmRfbG9jYXRpb25zLCBpeCwg bG9jKTsgKytpeCkKLSAgICAgewotICAgICAgIGlmIChsb2MtPmFkZHJlc3MgPT0gYnBfYWRkcikK LUBAIC0zNDEyLDYgKzM1NjMsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorIAkgIGlmIChi LT50eXBlID09IGJwX3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQK Ky0JICAgICAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlcikKKysJICAgICAgfHwgYi0+ dHlwZSA9PSBicF9sb25nam1wX21hc3RlcgorKwkgICAgICB8fCBiLT50eXBlID09IGJwX2V4Y2Vw dGlvbl9tYXN0ZXIpCisgCSAgICAvKiBXZSBkbyBub3Qgc3RvcCBmb3IgdGhlc2UuICAqLworIAkg ICAgYnMtPnN0b3AgPSAwOworIAkgIGVsc2UKK0BAIC0zODI5LDYgKzM5MDQsNyBAQCBicHN0YXRf d2hhdCAoYnBzdGF0IGJzKQogICAgc3RydWN0IGJwc3RhdF93aGF0IHJldHZhbDsKICAKICAgIHJl dHZhbC5jYWxsX2R1bW15ID0gMDsKQEAgLTExNjEsNyArNjY1LDcgQEAgaW5kZXggODExY2RmYi4u MGYzNTEwMSAxMDA2NDQKICAgIGZvciAoOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQogICAg ICB7CiAgICAgICAgZW51bSBjbGFzcyBic19jbGFzcyA9IG5vX2VmZmVjdDsKLUBAIC0zNDU4LDEw ICszNjEwLDE1IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtMzg3NSwxMCArMzk1MSwx NSBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogIAkgICAgYnNfY2xhc3MgPSBub19lZmZlY3Q7 CiAgCSAgYnJlYWs7CiAgCWNhc2UgYnBfbG9uZ2ptcDoKQEAgLTExNzcsNyArNjgxLDcgQEAgaW5k ZXggODExY2RmYi4uMGYzNTEwMSAxMDA2NDQKICAJICBicmVhazsKICAJY2FzZSBicF9zdGVwX3Jl c3VtZToKICAJICBpZiAoYnMtPnN0b3ApCi1AQCAtMzQ4NCw2ICszNjQxLDcgQEAgYnBzdGF0X3do YXQgKGJwc3RhdCBicykKK0BAIC0zOTAxLDYgKzM5ODIsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0 IGJzKQogIAljYXNlIGJwX3RocmVhZF9ldmVudDoKICAJY2FzZSBicF9vdmVybGF5X2V2ZW50Ogog IAljYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgpAQCAtMTE4NSw3ICs2ODksNyBAQCBpbmRleCA4MTFj ZGZiLi4wZjM1MTAxIDEwMDY0NAogIAkgIGJzX2NsYXNzID0gYnBfbm9zdG9wOwogIAkgIGJyZWFr OwogIAljYXNlIGJwX2NhdGNocG9pbnQ6Ci1AQCAtMzYwNSw2ICszNzYzLDggQEAgcHJpbnRfb25l X2JyZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTQwNDUsNiAr NDEyNyw4IEBAIHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2lu dCAqYiwKICAgICAge2JwX2FjY2Vzc193YXRjaHBvaW50LCAiYWNjIHdhdGNocG9pbnQifSwKICAg ICAge2JwX2xvbmdqbXAsICJsb25nam1wIn0sCiAgICAgIHticF9sb25nam1wX3Jlc3VtZSwgImxv bmdqbXAgcmVzdW1lIn0sCkBAIC0xMTk0LDE1ICs2OTgsMTUgQEAgaW5kZXggODExY2RmYi4uMGYz NTEwMSAxMDA2NDQKICAgICAge2JwX3N0ZXBfcmVzdW1lLCAic3RlcCByZXN1bWUifSwKICAgICAg e2JwX3dhdGNocG9pbnRfc2NvcGUsICJ3YXRjaHBvaW50IHNjb3BlIn0sCiAgICAgIHticF9jYWxs X2R1bW15LCAiY2FsbCBkdW1teSJ9LAotQEAgLTM2MTIsNiArMzc3Miw3IEBAIHByaW50X29uZV9i cmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00MDUyLDYgKzQx MzYsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQg KmIsCiAgICAgIHticF90aHJlYWRfZXZlbnQsICJ0aHJlYWQgZXZlbnRzIn0sCiAgICAgIHticF9v dmVybGF5X2V2ZW50LCAib3ZlcmxheSBldmVudHMifSwKICAgICAge2JwX2xvbmdqbXBfbWFzdGVy LCAibG9uZ2ptcCBtYXN0ZXIifSwKICsgICAge2JwX2V4Y2VwdGlvbl9tYXN0ZXIsICJleGNlcHRp b24gbWFzdGVyIn0sCiAgICAgIHticF9jYXRjaHBvaW50LCAiY2F0Y2hwb2ludCJ9LAogICAgICB7 YnBfdHJhY2Vwb2ludCwgInRyYWNlcG9pbnQifSwKLSAgICAge2JwX2ppdF9ldmVudCwgImppdCBl dmVudHMifSwKLUBAIC0zNzM1LDYgKzM4OTYsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2Nh dGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCisgICAgIHticF9mYXN0X3RyYWNlcG9pbnQsICJm YXN0IHRyYWNlcG9pbnQifSwKK0BAIC00MTc2LDYgKzQyNjEsOCBAQCBwcmludF9vbmVfYnJlYWtw b2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF9maW5p c2g6CiAgICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1 bWU6CkBAIC0xMjExLDExNiArNzE1LDE1IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0 CiAgICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRf c2NvcGU6CiAgICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgotQEAgLTM3NDIsNiArMzkwNSw3IEBA IHByaW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BA IC00MTgzLDYgKzQyNzAsNyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF90aHJlYWRfZXZlbnQ6CiAgICAgICAgY2Fz ZSBicF9vdmVybGF5X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CiArICAg ICAgY2FzZSBicF9leGNlcHRpb25fbWFzdGVyOgogICAgICAgIGNhc2UgYnBfdHJhY2Vwb2ludDoK KyAgICAgICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAgICAgICBjYXNlIGJwX2ppdF9ldmVu dDoKLSAJaWYgKG9wdHMuYWRkcmVzc3ByaW50KQotQEAgLTQxOTcsOSArNDM2MSw4IEBAIHNldF9k ZWZhdWx0X2JyZWFrcG9pbnQgKGludCB2YWxpZCwgQ09SRV9BRERSIGFkZHIsIHN0cnVjdCBzeW10 YWIgKnN5bXRhYiwKLSAgICAob3IgdXNlIGl0IGZvciBhbnkgb3RoZXIgcHVycG9zZSBlaXRoZXIp LgotIAotICAgIE1vcmUgc3BlY2lmaWNhbGx5LCBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgYnJlYWtw b2ludCB0eXBlcyB3aWxsIGFsd2F5cwotLSAgIGhhdmUgYSB6ZXJvIHZhbHVlZCBhZGRyZXNzIGFu ZCB3ZSBkb24ndCB3YW50IGNoZWNrX2R1cGxpY2F0ZXMoKSB0byBtYXJrCi0tICAgYnJlYWtwb2lu dHMgb2YgYW55IG9mIHRoZXNlIHR5cGVzIHRvIGJlIGEgZHVwbGljYXRlIG9mIGFuIGFjdHVhbAot LSAgIGJyZWFrcG9pbnQgYXQgYWRkcmVzcyB6ZXJvOgotKyAgIGhhdmUgYSB6ZXJvIHZhbHVlZCBh ZGRyZXNzIGFuZCB3ZSBkb24ndCB3YW50IHRvIG1hcmsgYnJlYWtwb2ludHMgb2YgYW55IG9mCi0r ICAgdGhlc2UgdHlwZXMgdG8gYmUgYSBkdXBsaWNhdGUgb2YgYW4gYWN0dWFsIGJyZWFrcG9pbnQg YXQgYWRkcmVzcyB6ZXJvOgotIAotICAgICAgIGJwX3dhdGNocG9pbnQKLSAgICAgICBicF9oYXJk d2FyZV93YXRjaHBvaW50Ci1AQCAtNDIxOSw4OCArNDM4Miw2IEBAIGJyZWFrcG9pbnRfYWRkcmVz c19pc19tZWFuaW5nZnVsIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQotIAkgICYmIHR5cGUgIT0g YnBfY2F0Y2hwb2ludCk7Ci0gfQotIAotLS8qIFJlc2NhbiBicmVha3BvaW50cyBhdCB0aGUgc2Ft ZSBhZGRyZXNzIGFuZCBzZWN0aW9uIGFzIEJQVCwKLS0gICBtYXJraW5nIHRoZSBmaXJzdCBvbmUg YXMgImZpcnN0IiBhbmQgYW55IG90aGVycyBhcyAiZHVwbGljYXRlcyIuCi0tICAgVGhpcyBpcyBz byB0aGF0IHRoZSBicHQgaW5zdHJ1Y3Rpb24gaXMgb25seSBpbnNlcnRlZCBvbmNlLgotLSAgIElm IHdlIGhhdmUgYSBwZXJtYW5lbnQgYnJlYWtwb2ludCBhdCB0aGUgc2FtZSBwbGFjZSBhcyBCUFQs IG1ha2UKLS0gICB0aGF0IG9uZSB0aGUgb2ZmaWNpYWwgb25lLCBhbmQgdGhlIHJlc3QgYXMgZHVw bGljYXRlcy4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1jaGVja19kdXBsaWNhdGVzX2ZvciAoQ09S RV9BRERSIGFkZHJlc3MsIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlvbikKLS17Ci0tICBzdHJ1 Y3QgYnBfbG9jYXRpb24gKmI7Ci0tICBpbnQgY291bnQgPSAwOwotLSAgc3RydWN0IGJwX2xvY2F0 aW9uICpwZXJtX2JwID0gMDsKLS0KLS0gIEFMTF9CUF9MT0NBVElPTlMgKGIpCi0tICAgIGlmIChi LT5vd25lci0+ZW5hYmxlX3N0YXRlICE9IGJwX2Rpc2FibGVkCi0tCSYmIGItPm93bmVyLT5lbmFi bGVfc3RhdGUgIT0gYnBfY2FsbF9kaXNhYmxlZAotLQkmJiBiLT5vd25lci0+ZW5hYmxlX3N0YXRl ICE9IGJwX3N0YXJ0dXBfZGlzYWJsZWQKLS0JJiYgYi0+ZW5hYmxlZAotLQkmJiAhYi0+c2hsaWJf ZGlzYWJsZWQKLS0JJiYgYi0+YWRkcmVzcyA9PSBhZGRyZXNzCS8qIGFkZHJlc3MgLyBvdmVybGF5 IG1hdGNoICovCi0tCSYmICghb3ZlcmxheV9kZWJ1Z2dpbmcgfHwgYi0+c2VjdGlvbiA9PSBzZWN0 aW9uKQotLQkmJiBicmVha3BvaW50X2FkZHJlc3NfaXNfbWVhbmluZ2Z1bCAoYi0+b3duZXIpKQot LSAgICB7Ci0tICAgICAgLyogSGF2ZSB3ZSBmb3VuZCBhIHBlcm1hbmVudCBicmVha3BvaW50PyAg Ki8KLS0gICAgICBpZiAoYi0+b3duZXItPmVuYWJsZV9zdGF0ZSA9PSBicF9wZXJtYW5lbnQpCi0t CXsKLS0JICBwZXJtX2JwID0gYjsKLS0JICBicmVhazsKLS0JfQotLQkKLS0gICAgICBjb3VudCsr OwotLSAgICAgIGItPmR1cGxpY2F0ZSA9IGNvdW50ID4gMTsKLS0gICAgfQotLQotLSAgLyogSWYg d2UgZm91bmQgYSBwZXJtYW5lbnQgYnJlYWtwb2ludCBhdCB0aGlzIGFkZHJlc3MsIGdvIG92ZXIg dGhlCi0tICAgICBsaXN0IGFnYWluIGFuZCBkZWNsYXJlIGFsbCB0aGUgb3RoZXIgYnJlYWtwb2lu dHMgdGhlcmUgKGV4Y2VwdAotLSAgICAgb3RoZXIgcGVybWFuZW50IGJyZWFrcG9pbnRzKSB0byBi ZSB0aGUgZHVwbGljYXRlcy4gICovCi0tICBpZiAocGVybV9icCkKLS0gICAgewotLSAgICAgIHBl cm1fYnAtPmR1cGxpY2F0ZSA9IDA7Ci0tCi0tICAgICAgLyogUGVybWFuZW50IGJyZWFrcG9pbnQg c2hvdWxkIGFsd2F5cyBiZSBpbnNlcnRlZC4gICovCi0tICAgICAgaWYgKCEgcGVybV9icC0+aW5z ZXJ0ZWQpCi0tCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0tCQkJXygiYWxs ZWdlZGx5IHBlcm1hbmVudCBicmVha3BvaW50IGlzIG5vdCAiCi0tCQkJImFjdHVhbGx5IGluc2Vy dGVkIikpOwotLQotLSAgICAgIEFMTF9CUF9MT0NBVElPTlMgKGIpCi0tCWlmIChiICE9IHBlcm1f YnApCi0tCSAgewotLQkgICAgaWYgKGItPm93bmVyLT5lbmFibGVfc3RhdGUgIT0gYnBfcGVybWFu ZW50Ci0tCQkmJiBiLT5vd25lci0+ZW5hYmxlX3N0YXRlICE9IGJwX2Rpc2FibGVkCi0tCQkmJiBi LT5vd25lci0+ZW5hYmxlX3N0YXRlICE9IGJwX2NhbGxfZGlzYWJsZWQKLS0JCSYmIGItPm93bmVy LT5lbmFibGVfc3RhdGUgIT0gYnBfc3RhcnR1cF9kaXNhYmxlZAotLQkJJiYgYi0+ZW5hYmxlZCAm JiAhYi0+c2hsaWJfZGlzYWJsZWQJCQotLQkJJiYgYi0+YWRkcmVzcyA9PSBhZGRyZXNzCS8qIGFk ZHJlc3MgLyBvdmVybGF5IG1hdGNoICovCi0tCQkmJiAoIW92ZXJsYXlfZGVidWdnaW5nIHx8IGIt PnNlY3Rpb24gPT0gc2VjdGlvbikKLS0JCSYmIGJyZWFrcG9pbnRfYWRkcmVzc19pc19tZWFuaW5n ZnVsIChiLT5vd25lcikpCi0tCSAgICAgIHsKLS0JCWlmIChiLT5pbnNlcnRlZCkKLS0JCSAgaW50 ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLS0JCQkJICBfKCJhbm90aGVyIGJyZWFr cG9pbnQgd2FzIGluc2VydGVkIG9uIHRvcCBvZiAiCi0tCQkJCSAgImEgcGVybWFuZW50IGJyZWFr cG9pbnQiKSk7Ci0tCi0tCQliLT5kdXBsaWNhdGUgPSAxOwotLQkgICAgICB9Ci0tCSAgfQotLSAg ICB9Ci0tfQotLQotLXN0YXRpYyB2b2lkCi0tY2hlY2tfZHVwbGljYXRlcyAoc3RydWN0IGJyZWFr cG9pbnQgKmJwdCkKLS17Ci0tICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsID0gYnB0LT5sb2M7Ci0t Ci0tICBpZiAoISBicmVha3BvaW50X2FkZHJlc3NfaXNfbWVhbmluZ2Z1bCAoYnB0KSkKLS0gICAg cmV0dXJuOwotLQotLSAgZm9yICg7IGJsOyBibCA9IGJsLT5uZXh0KQotLSAgICBjaGVja19kdXBs aWNhdGVzX2ZvciAoYmwtPmFkZHJlc3MsIGJsLT5zZWN0aW9uKTsgICAgCi0tfQotLQotIHN0YXRp YyB2b2lkCi0gYnJlYWtwb2ludF9hZGp1c3RtZW50X3dhcm5pbmcgKENPUkVfQUREUiBmcm9tX2Fk ZHIsIENPUkVfQUREUiB0b19hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgYm51bSwgaW50IGhhdmVfYm51bSkKLUBAIC00MzgyLDYgKzQ0NjMsOCBAQCBhbGxvY2F0ZV9i cF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKK0BAIC00ODIxLDYgKzQ5MDksOCBA QCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKICAgICAgY2Fz ZSBicF9maW5pc2g6CiAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgY2FzZSBicF9sb25nam1w X3Jlc3VtZToKQEAgLTEzMjksNyArNzMyLDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2 NDQKICAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKICAgICAgY2FzZSBicF93YXRjaHBvaW50X3Nj b3BlOgogICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtNDM5MCw2ICs0NDczLDcgQEAgYWxs b2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCitAQCAtNDgyOSw2ICs0 OTE5LDcgQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpicHQpCiAg ICAgIGNhc2UgYnBfb3ZlcmxheV9ldmVudDoKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAgICAg IGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CkBAIC0xMzM3LDcgKzc0MCw3IEBAIGluZGV4IDgxMWNk ZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgICAgbG9jLT5sb2NfdHlwZSA9IGJwX2xvY19zb2Z0d2Fy ZV9icmVha3BvaW50OwogICAgICAgIGJyZWFrOwogICAgICBjYXNlIGJwX2hhcmR3YXJlX2JyZWFr cG9pbnQ6Ci1AQCAtNDU2OCw4ICs0NjUyLDcgQEAgbWFrZV9icmVha3BvaW50X3Blcm1hbmVudCAo c3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNTAxNSw4ICs1MTA2LDcgQEAgbWFrZV9icmVha3Bv aW50X3Blcm1hbmVudCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAgfQogIAogIC8qIENhbGwgdGhp cyByb3V0aW5lIHdoZW4gc3RlcHBpbmcgYW5kIG5leHRpbmcgdG8gZW5hYmxlIGEgYnJlYWtwb2lu dApAQCAtMTM0NywxMiArNzUwLDEzIEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAg CiAgdm9pZAogIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCi1AQCAtNDU4MSwx MCArNDY2NCwxMCBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQotICAgICAg bG9uZ2ptcCAibWFzdGVyIiBicmVha3BvaW50cy4gIEhlcmUsIHdlIHNpbXBseSBjcmVhdGUgbW9t ZW50YXJ5CitAQCAtNTAyOSwxMCArNTExOSwxMSBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChp bnQgdGhyZWFkKQogICAgICAgY2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhl IHJlcXVlc3RlZCB0aHJlYWQuICAqLwogICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXAp Ci0tICAgIGlmIChiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyKQotKyAgICBpZiAoYi0+dHlw ZSA9PSBicF9sb25nam1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIp CisgICAgIGlmIChiLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCistCSYmIGItPnR5 cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIpCisrCSYmIChiLT50eXBlID09IGJwX2xvbmdqbXBfbWFz dGVyCisrCSAgICB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpKQogICAgICAgIHsK ICAJc3RydWN0IGJyZWFrcG9pbnQgKmNsb25lID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQg KGIpOwogLQljbG9uZS0+dHlwZSA9IGJwX2xvbmdqbXA7CkBAIC0xMzYwLDcgKzc2NCw3IEBAIGlu ZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgCWNsb25lLT50aHJlYWQgPSB0aHJlYWQ7CiAg ICAgICAgfQogIH0KLUBAIC00NTk2LDcgKzQ2NzksNyBAQCBkZWxldGVfbG9uZ2ptcF9icmVha3Bv aW50IChpbnQgdGhyZWFkKQorQEAgLTUwNDQsNyArNTEzNSw3IEBAIGRlbGV0ZV9sb25nam1wX2Jy ZWFrcG9pbnQgKGludCB0aHJlYWQpCiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgKnRlbXA7CiAg CiAgICBBTExfQlJFQUtQT0lOVFNfU0FGRSAoYiwgdGVtcCkKQEAgLTEzNjksMzcgKzc3Myw3IEBA IGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgICAgICAgewogIAlpZiAoYi0+dGhyZWFk ID09IHRocmVhZCkKICAJICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci1AQCAtNDcxMCw5ICs0Nzkz LDkgQEAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBDT1JFX0FERFIgYWRkcmVzcykKLSB2b2lkCi0gZGlzYWJsZV9icmVha3BvaW50c19pbl9z aGxpYnMgKHZvaWQpCi0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0rICBzdHJ1Y3Qg YnBfbG9jYXRpb24gKmxvYywgKipsb2NwX3RtcDsKLSAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGxv YykKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGxvYywgbG9jcF90bXApCi0gICB7Ci0gICAgIHN0cnVj dCBicmVha3BvaW50ICpiID0gbG9jLT5vd25lcjsKLSAgICAgLyogV2UgYXBwbHkgdGhlIGNoZWNr IHRvIGFsbCBicmVha3BvaW50cywgaW5jbHVkaW5nIGRpc2FibGVkCi1AQCAtNDc0Miw3ICs0ODI1 LDcgQEAgZGlzYWJsZV9icmVha3BvaW50c19pbl9zaGxpYnMgKHZvaWQpCi0gc3RhdGljIHZvaWQK LSBkaXNhYmxlX2JyZWFrcG9pbnRzX2luX3VubG9hZGVkX3NobGliIChzdHJ1Y3Qgc29fbGlzdCAq c29saWIpCi0gewotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7Ci0rICBzdHJ1Y3QgYnBfbG9j YXRpb24gKmxvYywgKipsb2NwX3RtcDsKLSAgIGludCBkaXNhYmxlZF9zaGxpYl9icmVha3MgPSAw OwotIAotICAgLyogU3VuT1MgYS5vdXQgc2hhcmVkIGxpYnJhcmllcyBhcmUgYWx3YXlzIG1hcHBl ZCwgc28gZG8gbm90Ci1AQCAtNDc1Myw3ICs0ODM2LDcgQEAgZGlzYWJsZV9icmVha3BvaW50c19p bl91bmxvYWRlZF9zaGxpYiAoc3RydWN0IHNvX2xpc3QgKnNvbGliKQotICAgICAgICYmIGJmZF9n ZXRfZmxhdm91ciAoZXhlY19iZmQpID09IGJmZF90YXJnZXRfYW91dF9mbGF2b3VyKQotICAgICBy ZXR1cm47Ci0gCi0tICBBTExfQlBfTE9DQVRJT05TIChsb2MpCi0rICBBTExfQlBfTE9DQVRJT05T IChsb2MsIGxvY3BfdG1wKQotICAgewotICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGxvYy0+ b3duZXI7Ci0gICAgIGlmICgobG9jLT5sb2NfdHlwZSA9PSBicF9sb2NfaGFyZHdhcmVfYnJlYWtw b2ludAotQEAgLTU2NDgsNiArNTczMSw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpi KQorQEAgLTYxMTksNiArNjIxMCw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQog ICAgICAgIGNhc2UgYnBfZmluaXNoOgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKICAgICAgICBj YXNlIGJwX2xvbmdqbXBfcmVzdW1lOgpAQCAtMTQwOCw3ICs3ODIsNyBAQCBpbmRleCA4MTFjZGZi Li4wZjM1MTAxIDEwMDY0NAogICAgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CiAgICAgICAgY2Fz ZSBicF9jYWxsX2R1bW15OgogICAgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9zY29wZToKLUBAIC01 NjU2LDYgKzU3NDEsNyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC02MTI3 LDYgKzYyMjAsNyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICAgICAgICBjYXNl IGJwX292ZXJsYXlfZXZlbnQ6CiAgICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CiAgICAgICAgY2Fz ZSBicF9sb25nam1wX21hc3RlcjoKQEAgLTE0MTYsNyArNzkwLDcgQEAgaW5kZXggODExY2RmYi4u MGYzNTEwMSAxMDA2NDQKICAJYnJlYWs7CiAgICAgICAgfQogIAotQEAgLTY5NTgsNiArNzA0NCw3 IEBAIHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzCitAQCAtNzUx MSw2ICs3NjA1LDcgQEAgc3RydWN0IHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uX2Fy Z3MKICB7CiAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKICAgIHN0cnVjdCBicmVh a3BvaW50ICpicmVha3BvaW50MjsKQEAgLTE0MjQsNyArNzk4LDcgQEAgaW5kZXggODExY2RmYi4u MGYzNTEwMSAxMDA2NDQKICB9OwogIAogIC8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGZl dGNoX2luZmVyaW9yX2V2ZW50IHZpYSB0aGUKLUBAIC02OTcyLDYgKzcwNTksNyBAQCB1bnRpbF9i cmVha19jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQorQEAgLTc1MjUsNiArNzYyMCw3 IEBAIHVudGlsX2JyZWFrX2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCiAgICBkZWxl dGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludCk7CiAgICBpZiAoYS0+YnJlYWtwb2ludDIpCiAg ICAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5icmVha3BvaW50Mik7CkBAIC0xNDMyLDcgKzgwNiw3 IEBAIGluZGV4IDgxMWNkZmIuLjBmMzUxMDEgMTAwNjQ0CiAgfQogIAogIHZvaWQKLUBAIC02OTgz LDYgKzcwNzEsOCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0 eSwgaW50IGFueXdoZXJlKQorQEAgLTc1MzYsNiArNzYzMiw4IEBAIHVudGlsX2JyZWFrX2NvbW1h bmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgICBzdHJ1Y3QgYnJl YWtwb2ludCAqYnJlYWtwb2ludDsKICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50MiA9 IE5VTEw7CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwpAQCAtMTQ0MSw3ICs4MTUsNyBA QCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogIAogICAgY2xlYXJfcHJvY2VlZF9zdGF0 dXMgKCk7CiAgCi1AQCAtNzAyMSw2ICs3MTExLDkgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hh ciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKK0BAIC03NTc0LDYgKzc2NzIsOSBA QCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdo ZXJlKQogIAogICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChi cmVha3BvaW50KTsKICAKQEAgLTE0NTEsNyArODI1LDcgQEAgaW5kZXggODExY2RmYi4uMGYzNTEw MSAxMDA2NDQKICAgIC8qIEtlZXAgd2l0aGluIHRoZSBjdXJyZW50IGZyYW1lLCBvciBpbiBmcmFt ZXMgY2FsbGVkIGJ5IHRoZSBjdXJyZW50CiAgICAgICBvbmUuICAqLwogIAotQEAgLTcwMzMsNiAr NzEyNiwxMCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwg aW50IGFueXdoZXJlKQorQEAgLTc1ODYsNiArNzY4NywxMCBAQCB1bnRpbF9icmVha19jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogIAkJCQkJICAgICAgZnJh bWVfdW53aW5kX2NhbGxlcl9pZCAoZnJhbWUpLAogIAkJCQkJICAgICAgYnBfdW50aWwpOwogICAg ICAgIG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludDIpOwpAQCAtMTQ2 Miw3ICs4MzYsNyBAQCBpbmRleCA4MTFjZGZiLi4wZjM1MTAxIDEwMDY0NAogICAgICB9CiAgCiAg ICBwcm9jZWVkICgtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAwKTsKLUBAIC03MDQ5LDYgKzcx NDYsNyBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50 IGFueXdoZXJlKQorQEAgLTc2MDIsNiArNzcwNyw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5LCBpbnQgYW55d2hlcmUpCiAgCiAgICAgICAgYXJncy0+YnJl YWtwb2ludCA9IGJyZWFrcG9pbnQ7CiAgICAgICAgYXJncy0+YnJlYWtwb2ludDIgPSBicmVha3Bv aW50MjsKQEAgLTE0NzAsMzg3ICs4NDQsNTIgQEAgaW5kZXggODExY2RmYi4uMGYzNTEwMSAxMDA2 NDQKICAKICAgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwogICAgICAgIGFkZF9j b250aW51YXRpb24gKGluZmVyaW9yX3RocmVhZCAoKSwKLUBAIC03NzU4LDYgKzc4NTYsODIgQEAg ZG9fdmVjX2ZyZWUgKHZvaWQgKnApCi0gICAgIFZFQ19mcmVlIChicF9sb2NhdGlvbl9wLCAqdmVj KTsKK0BAIC04ODIzLDYgKzg5MjksNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQg ZnJvbV90dHkpCisgCSAgICAmJiBiLT50eXBlICE9IGJwX3RocmVhZF9ldmVudAorIAkgICAgJiYg Yi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50CisgCSAgICAmJiBiLT50eXBlICE9IGJwX2xvbmdq bXBfbWFzdGVyCisrCSAgICAmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKKyAJICAg ICYmIGItPm51bWJlciA+PSAwKQorIAkgIHsKKyAJICAgIGJyZWFrc190b19kZWxldGUgPSAxOwor QEAgLTg4NDIsNiArODk0OSw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSkKKyAJCSYmIGItPnR5cGUgIT0gYnBfaml0X2V2ZW50CisgCQkmJiBiLT50eXBlICE9IGJw X292ZXJsYXlfZXZlbnQKKyAJCSYmIGItPnR5cGUgIT0gYnBfbG9uZ2ptcF9tYXN0ZXIKKysJCSYm IGItPnR5cGUgIT0gYnBfZXhjZXB0aW9uX21hc3RlcgorIAkJJiYgYi0+bnVtYmVyID49IDApCisg CSAgICAgIGRlbGV0ZV9icmVha3BvaW50IChiKTsKKyAJICB9CitAQCAtOTE1Miw2ICs5MjYwLDcg QEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorIAkgcmVzZXQgbGF0ZXIgYnkg YnJlYWtwb2ludF9yZV9zZXQuICAqLworICAgICBjYXNlIGJwX292ZXJsYXlfZXZlbnQ6CisgICAg IGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CisrICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoK KyAgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CisgICAgICAgYnJlYWs7CisgCitAQCAtOTE3 NCw2ICs5MjgzLDggQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorICAgICBj YXNlIGJwX3N0ZXBfcmVzdW1lOgorICAgICBjYXNlIGJwX2xvbmdqbXA6CisgICAgIGNhc2UgYnBf bG9uZ2ptcF9yZXN1bWU6CisrICAgIGNhc2UgYnBfZXhjZXB0aW9uOgorKyAgICBjYXNlIGJwX2V4 Y2VwdGlvbl9yZXN1bWU6CisgICAgIGNhc2UgYnBfaml0X2V2ZW50OgorICAgICAgIGJyZWFrOwor ICAgICB9CitAQCAtOTIxNiw2ICs5MzI3LDcgQEAgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQpCisg ICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoIl9sb25nam1wIik7CisgICBjcmVh dGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsKKyAgIGNyZWF0ZV9s b25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKKysgIGNyZWF0ZV9leGNl cHRpb25fbWFzdGVyX2JyZWFrcG9pbnQgKCk7CisgfQorIAwKKyAvKiBSZXNldCB0aGUgdGhyZWFk IG51bWJlciBvZiB0aGlzIGJyZWFrcG9pbnQ6CitAQCAtMTAxNzcsNiArMTAyODksMjIgQEAgYWxs X3RyYWNlcG9pbnRzICgpCisgICByZXR1cm4gdHBfdmVjOwogIH0KICAKLSsvKiBBIGNvbXBhcmlz b24gZnVuY3Rpb24gZm9yIGJwX2xvY2F0aW9uIEEgYW5kIEIgYmVpbmcgaW50ZXJmYWNlZCB0byBx c29ydC4KLSsgICBTb3J0IGVsZW1lbnRzIHByaW1hcmlseSBieSB0aGVpciBBRERSRVNTIChubyBt YXR0ZXIgd2hhdCBkb2VzCi0rICAgYnJlYWtwb2ludF9hZGRyZXNzX2lzX21lYW5pbmdmdWwgc2F5 IGZvciBpdHMgT1dORVIpLCBzZWNvbmRhcmlseSBieSBvcmRlcmluZwotKyAgIGZpcnN0IGJwX3Bl cm1hbmVudCBPV05FUmVkIGVsZW1lbnRzIGFuZCB0ZXJjaWFyaWx5IGp1c3QgZW5zdXJpbmcgdGhl IGFycmF5Ci0rICAgaXMgc29ydGVkIHN0YWJsZSB3YXkgZGVzcGl0ZSBxc29ydCBiZWluZyBhbiBp bnN0YWJsZSBhbGdvcml0aG0uICAqLwotKwotK3N0YXRpYyBpbnQKLSticF9sb2NhdGlvbl9jb21w YXJlIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmEsIHN0cnVjdCBicF9sb2NhdGlvbiAqYikKLSt7Ci0r ICBpbnQgYV9wZXJtID0gYS0+b3duZXItPmVuYWJsZV9zdGF0ZSA9PSBicF9wZXJtYW5lbnQ7Ci0r ICBpbnQgYl9wZXJtID0gYi0+b3duZXItPmVuYWJsZV9zdGF0ZSA9PSBicF9wZXJtYW5lbnQ7Ci0r Ci0rICBpZiAoYS0+YWRkcmVzcyAhPSBiLT5hZGRyZXNzKQotKyAgICByZXR1cm4gKGEtPmFkZHJl c3MgPiBiLT5hZGRyZXNzKSAtIChhLT5hZGRyZXNzIDwgYi0+YWRkcmVzcyk7Ci0rCi0rICAvKiBT b3J0IHBlcm1hbmVudCBicmVha3BvaW50cyBmaXJzdC4gICovCi0rICBpZiAoYV9wZXJtICE9IGJf cGVybSkKLSsgICAgcmV0dXJuIChhX3Blcm0gPCBiX3Blcm0pIC0gKGFfcGVybSA+IGJfcGVybSk7 Ci0rCi0rICAvKiBNYWtlIHRoZSB1c2VyLXZpc2libGUgb3JkZXIgc3RhYmxlIGFjcm9zcyBHREIg cnVucy4gIExvY2F0aW9ucyBvZiB0aGUgc2FtZQotKyAgICAgYnJlYWtwb2ludCBjYW4gYmUgc29y dGVkIGluIGFyYml0cmFyeSBvcmRlci4gICovCi0rCi0rICBpZiAoYS0+b3duZXItPm51bWJlciAh PSBiLT5vd25lci0+bnVtYmVyKQotKyAgICByZXR1cm4gKGEtPm93bmVyLT5udW1iZXIgPiBiLT5v d25lci0+bnVtYmVyKQotKyAgICAgICAgICAgLSAoYS0+b3duZXItPm51bWJlciA8IGItPm93bmVy LT5udW1iZXIpOwotKwotKyAgcmV0dXJuIChhID4gYikgLSAoYSA8IGIpOwotK30KLSsKLSsvKiBJ bnRlcmZhY2UgYnBfbG9jYXRpb25fY29tcGFyZSBhcyB0aGUgQ09NUEFSIHBhcmFtZXRlciBvZiBx c29ydCBmdW5jdGlvbi4gICovCi0rCi0rc3RhdGljIGludAotK2JwX2xvY2F0aW9uX2NvbXBhcmVf Zm9yX3Fzb3J0IChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0rewotKyAgc3RydWN0 IGJwX2xvY2F0aW9uICphID0gKih2b2lkICoqKSBhcDsKLSsgIHN0cnVjdCBicF9sb2NhdGlvbiAq YiA9ICoodm9pZCAqKikgYnA7Ci0rCi0rICByZXR1cm4gYnBfbG9jYXRpb25fY29tcGFyZSAoYSwg Yik7Ci0rfQotKwotKy8qIFNldCBicF9sb2NhdGlvbl9wbGFjZWRfYWRkcmVzc19iZWZvcmVfYWRk cmVzc19tYXggYW5kCi0rICAgYnBfbG9jYXRpb25fc2hhZG93X2xlbl9hZnRlcl9hZGRyZXNzX21h eCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY29udGVudCBvZgotKyAgIHRoZSBicF9sb2NhdGlv biBhcnJheS4gICovCi0rCi0rc3RhdGljIHZvaWQKLSticF9sb2NhdGlvbl90YXJnZXRfZXh0ZW5z aW9uc191cGRhdGUgKHZvaWQpCi0rewotKyAgc3RydWN0IGJwX2xvY2F0aW9uICpibCwgKipibHBf dG1wOwotKwotKyAgYnBfbG9jYXRpb25fcGxhY2VkX2FkZHJlc3NfYmVmb3JlX2FkZHJlc3NfbWF4 ID0gMDsKLSsgIGJwX2xvY2F0aW9uX3NoYWRvd19sZW5fYWZ0ZXJfYWRkcmVzc19tYXggPSAwOwot KwotKyAgQUxMX0JQX0xPQ0FUSU9OUyAoYmwsIGJscF90bXApCi0rICAgIHsKLSsgICAgICBDT1JF X0FERFIgc3RhcnQsIGVuZCwgYWRkcjsKLSsKLSsgICAgICBpZiAoIWJwX2xvY2F0aW9uX2hhc19z aGFkb3cgKGJsKSkKLSsJY29udGludWU7Ci0rCi0rICAgICAgc3RhcnQgPSBibC0+dGFyZ2V0X2lu Zm8ucGxhY2VkX2FkZHJlc3M7Ci0rICAgICAgZW5kID0gc3RhcnQgKyBibC0+dGFyZ2V0X2luZm8u c2hhZG93X2xlbjsKLSsKLSsgICAgICBnZGJfYXNzZXJ0IChibC0+YWRkcmVzcyA+PSBzdGFydCk7 Ci0rICAgICAgYWRkciA9IGJsLT5hZGRyZXNzIC0gc3RhcnQ7Ci0rICAgICAgaWYgKGFkZHIgPiBi cF9sb2NhdGlvbl9wbGFjZWRfYWRkcmVzc19iZWZvcmVfYWRkcmVzc19tYXgpCi0rCWJwX2xvY2F0 aW9uX3BsYWNlZF9hZGRyZXNzX2JlZm9yZV9hZGRyZXNzX21heCA9IGFkZHI7Ci0rCi0rICAgICAg LyogWmVybyBTSEFET1dfTEVOIHdvdWxkIG5vdCBwYXNzIGJwX2xvY2F0aW9uX2hhc19zaGFkb3cu ICAqLwotKwotKyAgICAgIGdkYl9hc3NlcnQgKGJsLT5hZGRyZXNzIDwgZW5kKTsKLSsgICAgICBh ZGRyID0gZW5kIC0gYmwtPmFkZHJlc3M7Ci0rICAgICAgaWYgKGFkZHIgPiBicF9sb2NhdGlvbl9z aGFkb3dfbGVuX2FmdGVyX2FkZHJlc3NfbWF4KQotKwlicF9sb2NhdGlvbl9zaGFkb3dfbGVuX2Fm dGVyX2FkZHJlc3NfbWF4ID0gYWRkcjsKLSsgICAgfQotK30KLSsKLSAvKiBJZiBTSE9VTERfSU5T RVJUIGlzIGZhbHNlLCBkbyBub3QgaW5zZXJ0IGFueSBicmVha3BvaW50IGxvY2F0aW9ucwotICAg IGludG8gdGhlIGluZmVyaW9yLCBvbmx5IHJlbW92ZSBhbHJlYWR5LWluc2VydGVkIGxvY2F0aW9u cyB0aGF0IG5vCi0gICAgbG9uZ2VyIHNob3VsZCBiZSBpbnNlcnRlZC4gIEZ1bmN0aW9ucyB0aGF0 IGRlbGV0ZSBhIGJyZWFrcG9pbnQgb3IKLUBAIC03Nzc3LDQ5ICs3OTUxLDc4IEBAIHN0YXRpYyB2 b2lkCi0gdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKLSB7 Ci0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYjsKLS0gIHN0cnVjdCBicF9sb2NhdGlvbiAqKm5leHQg PSAmYnBfbG9jYXRpb25fY2hhaW47Ci0tICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsKLS0gIHN0 cnVjdCBicF9sb2NhdGlvbiAqbG9jMjsKLS0gIFZFQyhicF9sb2NhdGlvbl9wKSAqb2xkX2xvY2F0 aW9ucyA9IE5VTEw7Ci0tICBpbnQgcmV0OwotLSAgaW50IGl4OwotKyAgc3RydWN0IGJwX2xvY2F0 aW9uICoqbG9jcCwgKmxvYzsKLSAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsKLSAKLS0gIGNs ZWFudXBzID0gbWFrZV9jbGVhbnVwIChkb192ZWNfZnJlZSwgJm9sZF9sb2NhdGlvbnMpOwotLSAg LyogU3RvcmUgb2xkIGxvY2F0aW9ucyBmb3IgZnV0dXJlIHJlZmVyZW5jZS4gICovCi0tICBmb3Ig KGxvYyA9IGJwX2xvY2F0aW9uX2NoYWluOyBsb2M7IGxvYyA9IGxvYy0+Z2xvYmFsX25leHQpCi0t ICAgIFZFQ19zYWZlX3B1c2ggKGJwX2xvY2F0aW9uX3AsIG9sZF9sb2NhdGlvbnMsIGxvYyk7Ci0r ICAvKiBUaGUgZmlyc3QgYnBfbG9jYXRpb24gYmVpbmcgdGhlIG9ubHkgb25lIG5vbi1EVVBMSUNB VEUgZm9yIHRoZSBjdXJyZW50IHJ1bgotKyAgICAgb2YgdGhlIHNhbWUgQUREUkVTUy4gICovCi0r ICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvY19maXJzdDsKLSsKLSsgIC8qIFNhdmVkIGZvcm1lciBi cF9sb2NhdGlvbiBhcnJheSB3aGljaCB3ZSBjb21wYXJlIGFnYWluc3QgdGhlIG5ld2x5IGJ1aWx0 Ci0rICAgICBicF9sb2NhdGlvbiBmcm9tIHRoZSBjdXJyZW50IHN0YXRlIG9mIEFMTF9CUkVBS1BP SU5UUy4gICovCi0rICBzdHJ1Y3QgYnBfbG9jYXRpb24gKipvbGRfbG9jYXRpb24sICoqb2xkX2xv Y3A7Ci0rICB1bnNpZ25lZCBvbGRfbG9jYXRpb25fY291bnQ7Ci0rCi0rICBvbGRfbG9jYXRpb24g PSBicF9sb2NhdGlvbjsKLSsgIG9sZF9sb2NhdGlvbl9jb3VudCA9IGJwX2xvY2F0aW9uX2NvdW50 OwotKyAgYnBfbG9jYXRpb24gPSBOVUxMOwotKyAgYnBfbG9jYXRpb25fY291bnQgPSAwOwotKyAg Y2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBvbGRfbG9jYXRpb24pOwotIAotLSAgYnBf bG9jYXRpb25fY2hhaW4gPSBOVUxMOwotICAgQUxMX0JSRUFLUE9JTlRTIChiKQotLSAgICB7Ci0t ICAgICAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotLQl7Ci0tCSAg Km5leHQgPSBsb2M7Ci0tCSAgbmV4dCA9ICYobG9jLT5nbG9iYWxfbmV4dCk7Ci0tCSAgKm5leHQg PSBOVUxMOwotLQl9Ci0tICAgIH0KLSsgICAgZm9yIChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0g bG9jLT5uZXh0KQotKyAgICAgIGJwX2xvY2F0aW9uX2NvdW50Kys7Ci0rCi0rICBicF9sb2NhdGlv biA9IHhtYWxsb2MgKHNpemVvZiAoKmJwX2xvY2F0aW9uKSAqIGJwX2xvY2F0aW9uX2NvdW50KTsK LSsgIGxvY3AgPSBicF9sb2NhdGlvbjsKLSsgIEFMTF9CUkVBS1BPSU5UUyAoYikKLSsgICAgZm9y IChsb2MgPSBiLT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotKyAgICAgICpsb2NwKysgPSBs b2M7Ci0rICBxc29ydCAoYnBfbG9jYXRpb24sIGJwX2xvY2F0aW9uX2NvdW50LCBzaXplb2YgKCpi cF9sb2NhdGlvbiksCi0rCSBicF9sb2NhdGlvbl9jb21wYXJlX2Zvcl9xc29ydCk7Ci0rCi0rICBi cF9sb2NhdGlvbl90YXJnZXRfZXh0ZW5zaW9uc191cGRhdGUgKCk7Ci0gCi0gICAvKiBJZGVudGlm eSBicF9sb2NhdGlvbiBpbnN0YW5jZXMgdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQgaW4gdGhl IG5ldwotICAgICAgbGlzdCwgYW5kIHRoZXJlZm9yZSBzaG91bGQgYmUgZnJlZWQuICBOb3RlIHRo YXQgaXQncyBub3QgbmVjZXNzYXJ5IHRoYXQKLSAgICAgIHRob3NlIGxvY2F0aW9ucyBzaG91bGQg YmUgcmVtb3ZlZCBmcm9tIGluZmVyaW9yIC0tIGlmIHRoZXJlJ3MgYW5vdGhlcgotICAgICAgbG9j YXRpb24gYXQgdGhlIHNhbWUgYWRkcmVzcyAocHJldmlvdXNseSBtYXJrZWQgYXMgZHVwbGljYXRl KSwKLS0gICAgIHdlIGRvbid0IG5lZWQgdG8gcmVtb3ZlL2luc2VydCB0aGUgbG9jYXRpb24uICAq LwotLSAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlKGJwX2xvY2F0aW9uX3AsIG9sZF9sb2NhdGlv bnMsIGl4LCBsb2MpOyArK2l4KQotKyAgICAgd2UgZG9uJ3QgbmVlZCB0byByZW1vdmUvaW5zZXJ0 IHRoZSBsb2NhdGlvbi4KLSsgICAgIAotKyAgICAgTE9DUCBpcyBrZXB0IGluIHN5bmMgd2l0aCBP TERfTE9DUCwgZWFjaCBwb2ludGluZyB0byB0aGUgY3VycmVudCBhbmQKLSsgICAgIGZvcm1lciBi cF9sb2NhdGlvbiBhcnJheSBzdGF0ZSByZXNwZWN0aXZlbHkuICAqLwotKwotKyAgbG9jcCA9IGJw X2xvY2F0aW9uOwotKyAgZm9yIChvbGRfbG9jcCA9IG9sZF9sb2NhdGlvbjsgb2xkX2xvY3AgPCBv bGRfbG9jYXRpb24gKyBvbGRfbG9jYXRpb25fY291bnQ7Ci0rICAgICAgIG9sZF9sb2NwKyspCi0g ICAgIHsKLS0gICAgICAvKiBUZWxscyBpZiAnbG9jJyBpcyBmb3VuZCBhbW91bmcgdGhlIG5ldyBs b2NhdGlvbnMuICBJZiBub3QsIHdlCi0rICAgICAgc3RydWN0IGJwX2xvY2F0aW9uICpvbGRfbG9j ID0gKm9sZF9sb2NwOwotKyAgICAgIHN0cnVjdCBicF9sb2NhdGlvbiAqKmxvYzJwOwotKwotKyAg ICAgIC8qIFRlbGxzIGlmICdvbGRfbG9jJyBpcyBmb3VuZCBhbW91bmcgdGhlIG5ldyBsb2NhdGlv bnMuICBJZiBub3QsIHdlCi0gCSBoYXZlIHRvIGZyZWUgaXQuICAqLwotICAgICAgIGludCBmb3Vu ZF9vYmplY3QgPSAwOwotICAgICAgIC8qIFRlbGxzIGlmIHRoZSBsb2NhdGlvbiBzaG91bGQgcmVt YWluIGluc2VydGVkIGluIHRoZSB0YXJnZXQuICAqLwotICAgICAgIGludCBrZWVwX2luX3Rhcmdl dCA9IDA7Ci0gICAgICAgaW50IHJlbW92ZWQgPSAwOwotLSAgICAgIGZvciAobG9jMiA9IGJwX2xv Y2F0aW9uX2NoYWluOyBsb2MyOyBsb2MyID0gbG9jMi0+Z2xvYmFsX25leHQpCi0tCWlmIChsb2My ID09IGxvYykKLS0JICB7Ci0tCSAgICBmb3VuZF9vYmplY3QgPSAxOwotLQkgICAgYnJlYWs7Ci0t CSAgfQotKwotKyAgICAgIC8qIFNraXAgTE9DUCBlbnRyaWVzIHdoaWNoIHdpbGwgZGVmaW5pdGVs eSBuZXZlciBiZSBuZWVkZWQuICBTdG9wIGVpdGhlcgotKwkgYXQgb3IgYmVpbmcgdGhlIG9uZSBt YXRjaGluZyBPTERfTE9DLiAgKi8KLSsgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsg YnBfbG9jYXRpb25fY291bnQKLSsJICAgICAmJiAoKmxvY3ApLT5hZGRyZXNzIDwgb2xkX2xvYy0+ YWRkcmVzcykKLSsJbG9jcCsrOwotKwotKyAgICAgIGZvciAobG9jMnAgPSBsb2NwOwotKwkgICAo bG9jMnAgPCBicF9sb2NhdGlvbiArIGJwX2xvY2F0aW9uX2NvdW50Ci0rCSAgICAmJiAoKmxvYzJw KS0+YWRkcmVzcyA9PSBvbGRfbG9jLT5hZGRyZXNzKTsKLSsJICAgbG9jMnArKykKLSsJewotKwkg IGlmICgqbG9jMnAgPT0gb2xkX2xvYykKLSsJICAgIHsKLSsJICAgICAgZm91bmRfb2JqZWN0ID0g MTsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSAKLSAgICAgICAvKiBJZiB0aGlzIGxv Y2F0aW9uIGlzIG5vIGxvbmdlciBwcmVzZW50LCBhbmQgaW5zZXJ0ZWQsIGxvb2sgaWYgdGhlcmUn cwotIAkgbWF5YmUgYSBuZXcgbG9jYXRpb24gYXQgdGhlIHNhbWUgYWRkcmVzcy4gIElmIHNvLCBt YXJrIHRoYXQgb25lIAotQEAgLTc4MjcsMTEgKzgwMzAsMTEgQEAgdXBkYXRlX2dsb2JhbF9sb2Nh dGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKLSAJIGRvbid0IGhhdmUgYSB0aW1lIHdpbmRv dyB3aGVyZSBhIGJyZWFrcG9pbnQgYXQgY2VydGFpbiBsb2NhdGlvbiBpcyBub3QKLSAJIGluc2Vy dGVkLiAgKi8KLSAKLS0gICAgICBpZiAobG9jLT5pbnNlcnRlZCkKLSsgICAgICBpZiAob2xkX2xv Yy0+aW5zZXJ0ZWQpCi0gCXsKLSAJICAvKiBJZiB0aGUgbG9jYXRpb24gaXMgaW5zZXJ0ZWQgbm93 LCB3ZSBtaWdodCBoYXZlIHRvIHJlbW92ZSBpdC4gICovCi0gCi0tCSAgaWYgKGZvdW5kX29iamVj dCAmJiBzaG91bGRfYmVfaW5zZXJ0ZWQgKGxvYykpCi0rCSAgaWYgKGZvdW5kX29iamVjdCAmJiBz aG91bGRfYmVfaW5zZXJ0ZWQgKG9sZF9sb2MpKQotIAkgICAgewotIAkgICAgICAvKiBUaGUgbG9j YXRpb24gaXMgc3RpbGwgcHJlc2VudCBpbiB0aGUgbG9jYXRpb24gbGlzdCwgYW5kIHN0aWxsCi0g CQkgc2hvdWxkIGJlIGluc2VydGVkLiAgRG9uJ3QgZG8gYW55dGhpbmcuICAqLwotQEAgLTc4NDIs MzcgKzgwNDUsNDYgQEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2lu c2VydCkKLSAJICAgICAgLyogVGhlIGxvY2F0aW9uIGlzIGVpdGhlciBubyBsb25nZXIgcHJlc2Vu dCwgb3IgZ290IGRpc2FibGVkLgotIAkJIFNlZSBpZiB0aGVyZSdzIGFub3RoZXIgbG9jYXRpb24g YXQgdGhlIHNhbWUgYWRkcmVzcywgaW4gd2hpY2ggCi0gCQkgY2FzZSB3ZSBkb24ndCBuZWVkIHRv IHJlbW92ZSB0aGlzIG9uZSBmcm9tIHRoZSB0YXJnZXQuICAqLwotLQkgICAgICBpZiAoYnJlYWtw b2ludF9hZGRyZXNzX2lzX21lYW5pbmdmdWwgKGxvYy0+b3duZXIpKQotLQkJZm9yIChsb2MyID0g YnBfbG9jYXRpb25fY2hhaW47IGxvYzI7IGxvYzIgPSBsb2MyLT5nbG9iYWxfbmV4dCkKLS0JCSAg ewotLQkJICAgIC8qIEZvciB0aGUgc2FrZSBvZiBzaG91bGRfaW5zZXJ0X2xvY2F0aW9uLiAgVGhl Ci0tCQkgICAgICAgY2FsbCB0byBjaGVja19kdXBsaWNhdGVzIHdpbGwgZml4IHVwIHRoaXMgbGF0 ZXIuICAqLwotLQkJICAgIGxvYzItPmR1cGxpY2F0ZSA9IDA7Ci0tCQkgICAgaWYgKHNob3VsZF9i ZV9pbnNlcnRlZCAobG9jMikKLS0JCQkmJiBsb2MyICE9IGxvYyAmJiBsb2MyLT5hZGRyZXNzID09 IGxvYy0+YWRkcmVzcykKLS0JCSAgICAgIHsJCSAgCi0tCQkJbG9jMi0+aW5zZXJ0ZWQgPSAxOwot LQkJCWxvYzItPnRhcmdldF9pbmZvID0gbG9jLT50YXJnZXRfaW5mbzsKLS0JCQlrZWVwX2luX3Rh cmdldCA9IDE7Ci0tCQkJYnJlYWs7Ci0tCQkgICAgICB9Ci0tCQkgIH0KLSsKLSsJICAgICAgaWYg KGJyZWFrcG9pbnRfYWRkcmVzc19pc19tZWFuaW5nZnVsIChvbGRfbG9jLT5vd25lcikpCi0rCQl7 Ci0rCQkgIGZvciAobG9jMnAgPSBsb2NwOwotKwkJICAgICAgIChsb2MycCA8IGJwX2xvY2F0aW9u ICsgYnBfbG9jYXRpb25fY291bnQKLSsJCQkmJiAoKmxvYzJwKS0+YWRkcmVzcyA9PSBvbGRfbG9j LT5hZGRyZXNzKTsKLSsJCSAgICAgICBsb2MycCsrKQotKwkJICAgIHsKLSsJCSAgICAgIHN0cnVj dCBicF9sb2NhdGlvbiAqbG9jMiA9ICpsb2MycDsKLSsKLSsJCQl7Ci0rCQkJICAvKiBGb3IgdGhl IHNha2Ugb2Ygc2hvdWxkX2JlX2luc2VydGVkLgotKwkJCSAgICAgRHVwbGljYXRlcyBjaGVjayBi ZWxvdyB3aWxsIGZpeCB1cCB0aGlzIGxhdGVyLiAgKi8KLSsJCQkgIGxvYzItPmR1cGxpY2F0ZSA9 IDA7Ci0rCQkJICBpZiAobG9jMiAhPSBvbGRfbG9jICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9j MikpCi0rCQkJICAgIHsKLSsJCQkgICAgICBsb2MyLT5pbnNlcnRlZCA9IDE7Ci0rCQkJICAgICAg bG9jMi0+dGFyZ2V0X2luZm8gPSBvbGRfbG9jLT50YXJnZXRfaW5mbzsKLSsJCQkgICAgICBrZWVw X2luX3RhcmdldCA9IDE7Ci0rCQkJICAgICAgYnJlYWs7Ci0rCQkJICAgIH0KLSsJCQl9Ci0rCQkg ICAgfQotKwkJfQotIAkgICAgfQotIAotIAkgIGlmICgha2VlcF9pbl90YXJnZXQpCi0gCSAgICB7 Ci0tCSAgICAgIGlmIChyZW1vdmVfYnJlYWtwb2ludCAobG9jLCBtYXJrX3VuaW5zZXJ0ZWQpKQot KwkgICAgICBpZiAocmVtb3ZlX2JyZWFrcG9pbnQgKG9sZF9sb2MsIG1hcmtfdW5pbnNlcnRlZCkp Ci0gCQl7Ci0gCQkgIC8qIFRoaXMgaXMganVzdCBhYm91dCBhbGwgd2UgY2FuIGRvLiAgV2UgY291 bGQga2VlcCB0aGlzCi0gCQkgICAgIGxvY2F0aW9uIG9uIHRoZSBnbG9iYWwgbGlzdCwgYW5kIHRy eSB0byByZW1vdmUgaXQgbmV4dAotIAkJICAgICB0aW1lLCBidXQgdGhlcmUncyBubyBwYXJ0aWN1 bGFyIHJlYXNvbiB3aHkgd2Ugd2lsbAotIAkJICAgICBzdWNjZWVkIG5leHQgdGltZS4gIAotIAkJ ICAgICAKLS0JCSAgICAgTm90ZSB0aGF0IGF0IHRoaXMgcG9pbnQsIGxvYy0+b3duZXIgaXMgc3Rp bGwgdmFsaWQsCi0rCQkgICAgIE5vdGUgdGhhdCBhdCB0aGlzIHBvaW50LCBvbGRfbG9jLT5vd25l ciBpcyBzdGlsbCB2YWxpZCwKLSAJCSAgICAgYXMgZGVsZXRlX2JyZWFrcG9pbnQgZnJlZXMgdGhl IGJyZWFrcG9pbnQgb25seQotIAkJICAgICBhZnRlciBjYWxsaW5nIHVzLiAgKi8KLSAJCSAgcHJp bnRmX2ZpbHRlcmVkIChfKCJ3YXJuaW5nOiBFcnJvciByZW1vdmluZyBicmVha3BvaW50ICVkXG4i KSwgCi0tCQkJCSAgIGxvYy0+b3duZXItPm51bWJlcik7Ci0rCQkJCSAgIG9sZF9sb2MtPm93bmVy LT5udW1iZXIpOwotIAkJfQotIAkgICAgICByZW1vdmVkID0gMTsKLSAJICAgIH0KLUBAIC03ODk0 LDE5ICs4MTA2LDU5IEBAIHVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCAoaW50IHNob3VsZF9p bnNlcnQpCi0gCQkgbG9uZ2VyIG5lZWQgdG8ga2VlcCB0aGlzIGJyZWFrcG9pbnQuICBUaGlzIGlz IGp1c3QgYQotIAkJIGhldXJpc3RpYywgYnV0IGlmIGl0J3Mgd3JvbmcsIHdlJ2xsIHJlcG9ydCB1 bmV4cGVjdGVkIFNJR1RSQVAsCi0gCQkgd2hpY2ggaXMgdXNhYmlsaXR5IGlzc3VlLCBidXQgbm90 IGEgY29ycmVjdG5lc3MgcHJvYmxlbS4gICovCi0tCSAgICAgIGxvYy0+ZXZlbnRzX3RpbGxfcmV0 aXJlbWVudCA9IDMgKiAodGhyZWFkX2NvdW50ICgpICsgMSk7Ci0tCSAgICAgIGxvYy0+b3duZXIg PSBOVUxMOwotKwkgICAgICBvbGRfbG9jLT5ldmVudHNfdGlsbF9yZXRpcmVtZW50ID0gMyAqICh0 aHJlYWRfY291bnQgKCkgKyAxKTsKLSsJICAgICAgb2xkX2xvYy0+b3duZXIgPSBOVUxMOwotIAot LQkgICAgICBWRUNfc2FmZV9wdXNoIChicF9sb2NhdGlvbl9wLCBtb3JpYnVuZF9sb2NhdGlvbnMs IGxvYyk7Ci0rCSAgICAgIFZFQ19zYWZlX3B1c2ggKGJwX2xvY2F0aW9uX3AsIG1vcmlidW5kX2xv Y2F0aW9ucywgb2xkX2xvYyk7Ci0gCSAgICB9Ci0gCSAgZWxzZQotLQkgICAgZnJlZV9icF9sb2Nh dGlvbiAobG9jKTsKLSsJICAgIGZyZWVfYnBfbG9jYXRpb24gKG9sZF9sb2MpOwotIAl9Ci0gICAg IH0KLSAKLS0gIEFMTF9CUkVBS1BPSU5UUyAoYikKLSsgIC8qIFJlc2NhbiBicmVha3BvaW50cyBh dCB0aGUgc2FtZSBhZGRyZXNzIGFuZCBzZWN0aW9uLAotKyAgICAgbWFya2luZyB0aGUgZmlyc3Qg b25lIGFzICJmaXJzdCIgYW5kIGFueSBvdGhlcnMgYXMgImR1cGxpY2F0ZXMiLgotKyAgICAgVGhp cyBpcyBzbyB0aGF0IHRoZSBicHQgaW5zdHJ1Y3Rpb24gaXMgb25seSBpbnNlcnRlZCBvbmNlLgot KyAgICAgSWYgd2UgaGF2ZSBhIHBlcm1hbmVudCBicmVha3BvaW50IGF0IHRoZSBzYW1lIHBsYWNl IGFzIEJQVCwgbWFrZQotKyAgICAgdGhhdCBvbmUgdGhlIG9mZmljaWFsIG9uZSwgYW5kIHRoZSBy ZXN0IGFzIGR1cGxpY2F0ZXMuICBQZXJtYW5lbnQKLSsgICAgIGJyZWFrcG9pbnRzIGFyZSBzb3J0 ZWQgZmlyc3QgZm9yIHRoZSBzYW1lIGFkZHJlc3MuICAqLwotKwotKyAgbG9jX2ZpcnN0ID0gTlVM TDsKLSsgIEFMTF9CUF9MT0NBVElPTlMgKGxvYywgbG9jcCkKLSAgICAgewotLSAgICAgIGNoZWNr X2R1cGxpY2F0ZXMgKGIpOwotKyAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiID0gbG9jLT5vd25l cjsKLSsKLSsgICAgICBpZiAoYi0+ZW5hYmxlX3N0YXRlID09IGJwX2Rpc2FibGVkCi0rCSAgfHwg Yi0+ZW5hYmxlX3N0YXRlID09IGJwX2NhbGxfZGlzYWJsZWQKLSsJICB8fCBiLT5lbmFibGVfc3Rh dGUgPT0gYnBfc3RhcnR1cF9kaXNhYmxlZAotKwkgIHx8ICFsb2MtPmVuYWJsZWQKLSsJICB8fCBs b2MtPnNobGliX2Rpc2FibGVkCi0rCSAgfHwgIWJyZWFrcG9pbnRfYWRkcmVzc19pc19tZWFuaW5n ZnVsIChiKSkKLSsJY29udGludWU7Ci0rCi0rICAgICAgLyogUGVybWFuZW50IGJyZWFrcG9pbnQg c2hvdWxkIGFsd2F5cyBiZSBpbnNlcnRlZC4gICovCi0rICAgICAgaWYgKGItPmVuYWJsZV9zdGF0 ZSA9PSBicF9wZXJtYW5lbnQgJiYgISBsb2MtPmluc2VydGVkKQotKwlpbnRlcm5hbF9lcnJvciAo X19GSUxFX18sIF9fTElORV9fLAotKwkJCV8oImFsbGVnZWRseSBwZXJtYW5lbnQgYnJlYWtwb2lu dCBpcyBub3QgIgotKwkJCSJhY3R1YWxseSBpbnNlcnRlZCIpKTsKLSsKLSsgICAgICBpZiAobG9j X2ZpcnN0ID09IE5VTEwKLSsJICAvKiBhZGRyZXNzIC8gb3ZlcmxheSBtYXRjaCAqLwotKwkgIHx8 IGxvYy0+YWRkcmVzcyAhPSBsb2NfZmlyc3QtPmFkZHJlc3MKLSsJICB8fCAob3ZlcmxheV9kZWJ1 Z2dpbmcgJiYgbG9jLT5zZWN0aW9uICE9IGxvY19maXJzdC0+c2VjdGlvbikpCi0rCXsKLSsJICBs b2NfZmlyc3QgPSBsb2M7Ci0rCSAgbG9jLT5kdXBsaWNhdGUgPSAwOwotKwkgIGNvbnRpbnVlOwot Kwl9Ci0rCi0rICAgICAgbG9jLT5kdXBsaWNhdGUgPSAxOwotKwotKyAgICAgIGlmIChsb2NfZmly c3QtPm93bmVyLT5lbmFibGVfc3RhdGUgPT0gYnBfcGVybWFuZW50ICYmIGxvYy0+aW5zZXJ0ZWQK LSsgICAgICAgICAgJiYgYi0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1hbmVudCkKLSsJaW50ZXJu YWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCQlfKCJhbm90aGVyIGJyZWFrcG9pbnQg d2FzIGluc2VydGVkIG9uIHRvcCBvZiAiCi0rCQkJImEgcGVybWFuZW50IGJyZWFrcG9pbnQiKSk7 Ci0gICAgIH0KLSAKLSAgIGlmIChicmVha3BvaW50c19hbHdheXNfaW5zZXJ0ZWRfbW9kZSAoKSAm JiBzaG91bGRfaW5zZXJ0Ci1AQCAtODA4Myw2ICs4MzM1LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNo YXIgKmFyZywgaW50IGZyb21fdHR5KQotIAkgICAgJiYgYi0+dHlwZSAhPSBicF90aHJlYWRfZXZl bnQKLSAJICAgICYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAotIAkgICAgJiYgYi0+dHlw ZSAhPSBicF9sb25nam1wX21hc3RlcgotKwkgICAgJiYgYi0+dHlwZSAhPSBicF9leGNlcHRpb25f bWFzdGVyCi0gCSAgICAmJiBiLT5udW1iZXIgPj0gMCkKLSAJICB7Ci0gCSAgICBicmVha3NfdG9f ZGVsZXRlID0gMTsKLUBAIC04MTAyLDYgKzgzNTUsNyBAQCBkZWxldGVfY29tbWFuZCAoY2hhciAq YXJnLCBpbnQgZnJvbV90dHkpCi0gCQkmJiBiLT50eXBlICE9IGJwX2ppdF9ldmVudAotIAkJJiYg Yi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50Ci0gCQkmJiBiLT50eXBlICE9IGJwX2xvbmdqbXBf bWFzdGVyCi0rCQkmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKLSAJCSYmIGItPm51 bWJlciA+PSAwKQotIAkgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci0gCSAgfQotQEAgLTg0 MDQsNiArODY1OCw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAJIHJl c2V0IGxhdGVyIGJ5IGJyZWFrcG9pbnRfcmVfc2V0LiAgKi8KLSAgICAgY2FzZSBicF9vdmVybGF5 X2V2ZW50OgotICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgotKyAgICBjYXNlIGJwX2V4Y2Vw dGlvbl9tYXN0ZXI6Ci0gICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotICAgICAgIGJyZWFr OwotIAotQEAgLTg0MjcsNiArODY4Miw4IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAq YmludCkKLSAgICAgY2FzZSBicF9sb25nam1wOgotICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1l OgotICAgICBjYXNlIGJwX2ppdF9ldmVudDoKLSsgICAgY2FzZSBicF9leGNlcHRpb246Ci0rICAg IGNhc2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgICBicmVhazsKLSAgICAgfQotIAotQEAg LTg0NjIsNiArODcxOSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0ICh2b2lkKQotICAgY3JlYXRlX2xv bmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJfbG9uZ2ptcCIpOwotICAgY3JlYXRlX2xvbmdqbXBf bWFzdGVyX2JyZWFrcG9pbnQgKCJzaWdsb25nam1wIik7Ci0gICBjcmVhdGVfbG9uZ2ptcF9tYXN0 ZXJfYnJlYWtwb2ludCAoIl9zaWdsb25nam1wIik7Ci0rICBjcmVhdGVfZXhjZXB0aW9uX21hc3Rl cl9icmVha3BvaW50ICgpOwotIH0KLSAMCi0gLyogUmVzZXQgdGhlIHRocmVhZCBudW1iZXIgb2Yg dGhpcyBicmVha3BvaW50OgotQEAgLTkzMjcsNiArOTU4NSwyMiBAQCBhbGxfdHJhY2Vwb2ludHMg KCkKLSAgIHJldHVybiB0cF92ZWM7Ci0gfQotIAotKy8qIENhbGwgdHlwZV9tYXJrX3VzZWQgZm9y IGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNlIGZpbGUuICAqLworKy8q IENhbGwgdHlwZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBH REIgc291cmNlIGZpbGUuICAqLwogKwogK3N0YXRpYyB2b2lkCiArYnJlYWtwb2ludF90eXBlc19t YXJrX3VzZWQgKHZvaWQpCkBAIC0xODY5LDE0ICs5MDgsMTQgQEAgaW5kZXggODExY2RmYi4uMGYz NTEwMSAxMDA2NDQKICAMCiAgLyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJl YWssIGhicmVhaywgdGJyZWFrIGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmlu ZWQgYXMgYSBtYWNybyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTk4NTAsNCArMTAxMjQs NSBAQCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMt aW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCitAQCAtMTA3MjEsNCArMTA4NDksNSBAQCBpbmZlcmlv ciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0ZWQgbW9k ZSBpcyBvZmYuIiksCiAgICBhdXRvbWF0aWNfaGFyZHdhcmVfYnJlYWtwb2ludHMgPSAxOwogIAog ICAgb2JzZXJ2ZXJfYXR0YWNoX2Fib3V0X3RvX3Byb2NlZWQgKGJyZWFrcG9pbnRfYWJvdXRfdG9f cHJvY2VlZCk7CiArICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChicmVha3BvaW50X3R5cGVz X21hcmtfdXNlZCk7CiAgfQogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmggYi9nZGIvYnJl YWtwb2ludC5oCi1pbmRleCBiYTQ5OWM2Li44MGY3MDJmIDEwMDY0NAoraW5kZXggNmIzNzNhMy4u NTlhYTQxMiAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmgKICsrKyBiL2dkYi9icmVha3Bv aW50LmgKIEBAIC01Niw2ICs1NiwxMyBAQCBlbnVtIGJwdHlwZQpAQCAtMTkwMywxOCArOTQyLDcg QEAgaW5kZXggYmE0OTljNi4uODBmNzAyZiAxMDA2NDQKICAgICAgYnBfY2F0Y2hwb2ludCwKICAK ICAgICAgYnBfdHJhY2Vwb2ludCwKLUBAIC0yMjgsMTAgKzIzOCw2IEBAIHN0cnVjdCBicF9sb2Nh dGlvbgotICAgICAgdGhlIHNhbWUgcGFyZW50IGJyZWFrcG9pbnQuICAqLwotICAgc3RydWN0IGJw X2xvY2F0aW9uICpuZXh0OwotIAotLSAgLyogUG9pbnRlciB0byB0aGUgbmV4dCBicmVha3BvaW50 IGxvY2F0aW9uLCBpbiBhIGdsb2JhbAotLSAgICAgbGlzdCBvZiBhbGwgYnJlYWtwb2ludCBsb2Nh dGlvbnMuICAqLwotLSAgc3RydWN0IGJwX2xvY2F0aW9uICpnbG9iYWxfbmV4dDsKLS0gCi0gICAv KiBUeXBlIG9mIHRoaXMgYnJlYWtwb2ludCBsb2NhdGlvbi4gICovCi0gICBlbnVtIGJwX2xvY190 eXBlIGxvY190eXBlOwotIAotQEAgLTU4Myw2ICs1ODksMTAgQEAgc3RydWN0IGJwc3RhdF93aGF0 CitAQCAtNjAzLDYgKzYxMywxMCBAQCBzdHJ1Y3QgYnBzdGF0X3doYXQKICAgICAgICAgY29udGlu dWluZyBmcm9tIGEgY2FsbCBkdW1teSB3aXRob3V0IHBvcHBpbmcgdGhlIGZyYW1lIGlzIG5vdCBh CiAgICAgICAgIHVzZWZ1bCBvbmUpLiAgKi8KICAgICAgaW50IGNhbGxfZHVtbXk7CkBAIC0xOTI1 LDcgKzk1Myw3IEBAIGluZGV4IGJhNDk5YzYuLjgwZjcwMmYgMTAwNjQ0CiAgICB9OwogIAogIC8q IFRoZSBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGZvciBwcmludF9icHN0YXQsIHByaW50X2l0X25v cm1hbCwKLUBAIC05NDYsNiArOTU2LDkgQEAgZXh0ZXJuIGludCBjYXRjaGluZ19zeXNjYWxsX251 bWJlciAoaW50IHN5c2NhbGxfbnVtYmVyKTsKK0BAIC05ODUsNiArOTk5LDkgQEAgZXh0ZXJuIGlu dCBjYXRjaGluZ19zeXNjYWxsX251bWJlciAoaW50IHN5c2NhbGxfbnVtYmVyKTsKICAvKiBUZWxs IGEgYnJlYWtwb2ludCB0byBiZSBxdWlldC4gICovCiAgZXh0ZXJuIHZvaWQgbWFrZV9icmVha3Bv aW50X3NpbGVudCAoc3RydWN0IGJyZWFrcG9pbnQgKik7CiAgCkBAIC0xOTM1LDQzMiArOTYzLDIw IEBAIGluZGV4IGJhNDk5YzYuLjgwZjcwMmYgMTAwNjQ0CiAgLyogUmV0dXJuIGEgdHJhY2Vwb2lu dCB3aXRoIHRoZSBnaXZlbiBudW1iZXIgaWYgZm91bmQuICAqLwogIGV4dGVybiBzdHJ1Y3QgYnJl YWtwb2ludCAqZ2V0X3RyYWNlcG9pbnQgKGludCBudW0pOwogIAotZGlmZiAtLWdpdCBhL2dkYi9j LWV4cC55IGIvZ2RiL2MtZXhwLnkKLWluZGV4IGY4ZTRmMTIuLjViNDdlMmUgMTAwNjQ0Ci0tLS0g YS9nZGIvYy1leHAueQotKysrIGIvZ2RiL2MtZXhwLnkKLUBAIC0xMTcsNiArMTE3LDggQEAgc3Rh dGljIGludCB5eWxleCAodm9pZCk7Ci0gCi0gdm9pZCB5eWVycm9yIChjaGFyICopOwotIAotKy8q IENsZWFudXAgZm9yICdub25lbXB0eV90eXBlbGlzdCcgKi8KLStzdGF0aWMgc3RydWN0IGNsZWFu dXAgKnR5cGVsaXN0X2NsZWFudXA7Ci0gJX0KLSAKLSAvKiBBbHRob3VnaCB0aGUgeWFjYyAidmFs dWUiIG9mIGFuIGV4cHJlc3Npb24gaXMgbm90IHVzZWQsCi1AQCAtMTU3LDYgKzE1OSw3IEBAIHZv aWQgeXllcnJvciAoY2hhciAqKTsKLSAlewotIC8qIFlZU1RZUEUgZ2V0cyBkZWZpbmVkIGJ5ICV1 bmlvbiAqLwotIHN0YXRpYyBpbnQgcGFyc2VfbnVtYmVyIChjaGFyICosIGludCwgaW50LCBZWVNU WVBFICopOwotK3N0YXRpYyBzdHJ1Y3Qgc3Rva2VuIG9wZXJhdG9yX3N0b2tlbiAoY29uc3QgY2hh ciAqKTsKLSAlfQotIAotICV0eXBlIDx2b2lkdmFsPiBleHAgZXhwMSB0eXBlX2V4cCBzdGFydCB2 YXJpYWJsZSBxdWFsaWZpZWRfbmFtZSBsY3VybHkKLUBAIC0xOTksOSArMjAyLDEyIEBAIHN0YXRp YyBpbnQgcGFyc2VfbnVtYmVyIChjaGFyICosIGludCwgaW50LCBZWVNUWVBFICopOwotIAotICV0 b2tlbiA8c3N5bT4gTkFNRV9PUl9JTlQgCi0gCi0rJXRva2VuIE9QRVJBVE9SCi0gJXRva2VuIFNU UlVDVCBDTEFTUyBVTklPTiBFTlVNIFNJWkVPRiBVTlNJR05FRCBDT0xPTkNPTE9OCi0gJXRva2Vu IFRFTVBMQVRFCi0gJXRva2VuIEVSUk9SCi0rJXRva2VuIE5FVyBERUxFVEUKLSsldHlwZSA8c3Zh bD4gb3BlcmF0b3IKLSAKLSAvKiBTcGVjaWFsIHR5cGUgY2FzZXMsIHB1dCBpbiB0byBhbGxvdyB0 aGUgcGFyc2VyIHRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudAotICAgIGxlZ2FsIGJhc2V0eXBlcy4g ICovCi1AQCAtNDAxLDYgKzQwNywzNiBAQCBhcmdsaXN0CToJYXJnbGlzdCAnLCcgZXhwICAgJXBy ZWMgQUJPVkVfQ09NTUEKLSAJCQl7IGFyZ2xpc3RfbGVuKys7IH0KLSAJOwotIAotK2V4cCAgICAg OiAgICAgICBleHAgJygnIG5vbmVtcHR5X3R5cGVsaXN0ICcpJyBjb25zdF9vcl92b2xhdGlsZQot KwkJCXsgaW50IGk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQRV9JTlNUQU5DRSk7 Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKChMT05HRVNUKSAkPGl2ZWM+M1swXSk7Ci0r CQkJICBmb3IgKGkgPSAwOyBpIDwgJDxpdmVjPjNbMF07ICsraSkKLSsJCQkgICAgd3JpdGVfZXhw X2VsdF90eXBlICgkPHR2ZWM+M1tpICsgMV0pOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0 KChMT05HRVNUKSAkPGl2ZWM+M1swXSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVFlQ RV9JTlNUQU5DRSk7Ci0rCQkJICBkb19jbGVhbnVwcyAodHlwZWxpc3RfY2xlYW51cCk7Ci0rCQkJ fQotKwk7Ci0rCi0rLyoKLStleHAgICAgIDogICAgICAgQkxPQ0tOQU1FICcoJyBub25lbXB0eV90 eXBlbGlzdCAnKScKLSsJCQl7IGludCBpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFRZ UEVfSU5TVEFOQ0VfTE9PS1VQKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfc3ltICgkMS5zeW0pOwot KwkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFRZUEVfSU5TVEFOQ0VfTE9PS1VQKTsKLSsKLSsJ CQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChUWVBFX0lOU1RBTkNFKTsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfbG9uZ2NzdCAoKExPTkdFU1QpICQ8aXZlYz4zWzBdKTsKLSsJCQkgIGZvciAoaSA9IDA7 IGkgPCAkPGl2ZWM+M1swXTsgKytpKQotKwkJCSAgICB3cml0ZV9leHBfZWx0X3R5cGUgKCQ8dHZl Yz4zW2kgKyAxXSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QoKExPTkdFU1QpICQ8aXZl Yz4zWzBdKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChUWVBFX0lOU1RBTkNFKTsKLSsJ CQkgIGRvX2NsZWFudXBzICh0eXBlbGlzdF9jbGVhbnVwKTsKLSsJCQl9Ci0rCTsKLSsqLwotKwot IHJjdXJseQk6CSd9JwotIAkJCXsgJCQgPSBlbmRfYXJnbGlzdCAoKSAtIDE7IH0KLSAJOwotQEAg LTcwMyw2ICs3MzksNyBAQCB2YXJpYWJsZToJYmxvY2sgQ09MT05DT0xPTiBuYW1lCi0gcXVhbGlm aWVkX25hbWU6CXR5cGViYXNlIENPTE9OQ09MT04gbmFtZQotIAkJCXsKLSAJCQkgIHN0cnVjdCB0 eXBlICp0eXBlID0gJDE7Ci0rCQkJICBDSEVDS19UWVBFREVGICh0eXBlKTsKLSAJCQkgIGlmIChU WVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJVQ1QKLSAJCQkgICAgICAmJiBUWVBFX0NP REUgKHR5cGUpICE9IFRZUEVfQ09ERV9VTklPTgotIAkJCSAgICAgICYmIFRZUEVfQ09ERSAodHlw ZSkgIT0gVFlQRV9DT0RFX05BTUVTUEFDRSkKLUBAIC03MTgsNiArNzU1LDcgQEAgcXVhbGlmaWVk X25hbWU6CXR5cGViYXNlIENPTE9OQ09MT04gbmFtZQotIAkJCXsKLSAJCQkgIHN0cnVjdCB0eXBl ICp0eXBlID0gJDE7Ci0gCQkJICBzdHJ1Y3Qgc3Rva2VuIHRtcF90b2tlbjsKLSsJCQkgIENIRUNL X1RZUEVERUYgKHR5cGUpOwotIAkJCSAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RF X1NUUlVDVAotIAkJCSAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9O Ci0gCQkJICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfTkFNRVNQQUNFKQot QEAgLTc0MCwxMiArNzc4LDEzIEBAIHF1YWxpZmllZF9uYW1lOgl0eXBlYmFzZSBDT0xPTkNPTE9O IG5hbWUKLSAJOwotIAotIHZhcmlhYmxlOglxdWFsaWZpZWRfbmFtZQotKwl8CUNPTE9OQ09MT04g cXVhbGlmaWVkX25hbWUKLSAJfAlDT0xPTkNPTE9OIG5hbWUKLSAJCQl7Ci0gCQkJICBjaGFyICpu YW1lID0gY29weV9uYW1lICgkMik7Ci0gCQkJICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gCQkJICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2w7Ci0tCi0rCQkJICAKLSAJCQkgIHN5bSA9Ci0g CQkJICAgIGxvb2t1cF9zeW1ib2wgKG5hbWUsIChjb25zdCBzdHJ1Y3QgYmxvY2sgKikgTlVMTCwK LSAJCQkJCSAgIFZBUl9ET01BSU4sIChpbnQgKikgTlVMTCk7Ci1AQCAtODgzLDcgKzkyMiw3IEBA IGFycmF5X21vZDoJJ1snICddJwotIGZ1bmNfbW9kOgknKCcgJyknCi0gCQkJeyAkJCA9IDA7IH0K LSAJfAknKCcgbm9uZW1wdHlfdHlwZWxpc3QgJyknCi0tCQkJeyBmcmVlICgkMik7ICQkID0gMDsg fQotKwkJCXsgZG9fY2xlYW51cHMgKHR5cGVsaXN0X2NsZWFudXApOyAkJCA9IDA7IH0KLSAJOwot IAotIC8qIFdlIHVzZWQgdG8gdHJ5IHRvIHJlY29nbml6ZSBwb2ludGVyIHRvIG1lbWJlciB0eXBl cyBoZXJlLCBidXQKLUBAIC0xMDg4LDEyICsxMTI3LDE1IEBAIHR5cGVuYW1lOglUWVBFTkFNRQot IG5vbmVtcHR5X3R5cGVsaXN0Ci0gCToJdHlwZQotIAkJeyAkJCA9IChzdHJ1Y3QgdHlwZSAqKikg bWFsbG9jIChzaXplb2YgKHN0cnVjdCB0eXBlICopICogMik7Ci0rCQkgIHR5cGVsaXN0X2NsZWFu dXAgPSBtYWtlX2NsZWFudXAgKGZyZWUsICQkKTsKLSAJCSAgJDxpdmVjPiRbMF0gPSAxOwkvKiBO dW1iZXIgb2YgdHlwZXMgaW4gdmVjdG9yICovCi0gCQkgICQkWzFdID0gJDE7Ci0gCQl9Ci0gCXwJ bm9uZW1wdHlfdHlwZWxpc3QgJywnIHR5cGUKLSAJCXsgaW50IGxlbiA9IHNpemVvZiAoc3RydWN0 IHR5cGUgKikgKiAoKysoJDxpdmVjPjFbMF0pICsgMSk7Ci0gCQkgICQkID0gKHN0cnVjdCB0eXBl ICoqKSByZWFsbG9jICgoY2hhciAqKSAkMSwgbGVuKTsKLSsJCSAgZGlzY2FyZF9jbGVhbnVwcyAo dHlwZWxpc3RfY2xlYW51cCk7Ci0rCQkgIHR5cGVsaXN0X2NsZWFudXAgPSBtYWtlX2NsZWFudXAg KGZyZWUsICQkKTsKLSAJCSAgJCRbJDxpdmVjPiRbMF1dID0gJDM7Ci0gCQl9Ci0gCTsKLUBAIC0x MTE3LDEwICsxMTU5LDEzNSBAQCBjb25zdF9vcl92b2xhdGlsZV9ub29wdDogIAljb25zdF9hbmRf dm9sYXRpbGUKLSAJCQl7IHB1c2hfdHlwZSAodHBfdm9sYXRpbGUpOyB9Ci0gCTsKLSAKLStvcGVy YXRvcjoJT1BFUkFUT1IgTkVXCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIiBuZXciKTsg fQotKwl8CU9QRVJBVE9SIERFTEVURQotKwkJCXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCIgZGVs ZXRlIik7IH0KLSsJfAlPUEVSQVRPUiBORVcgJ1snICddJwotKwkJCXsgJCQgPSBvcGVyYXRvcl9z dG9rZW4gKCIgbmV3W10iKTsgfQotKwl8CU9QRVJBVE9SIERFTEVURSAnWycgJ10nCi0rCQkJeyAk JCA9IG9wZXJhdG9yX3N0b2tlbiAoIiBkZWxldGVbXSIpOyB9Ci0rCXwJT1BFUkFUT1IgJysnCi0r CQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIisiKTsgfQotKwl8CU9QRVJBVE9SICctJwotKwkJ CXsgJCQgPSBvcGVyYXRvcl9zdG9rZW4gKCItIik7IH0KLSsJfAlPUEVSQVRPUiAnKicKLSsJCQl7 ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiKiIpOyB9Ci0rCXwJT1BFUkFUT1IgJy8nCi0rCQkJeyAk JCA9IG9wZXJhdG9yX3N0b2tlbiAoIi8iKTsgfQotKwl8CU9QRVJBVE9SICclJwotKwkJCXsgJCQg PSBvcGVyYXRvcl9zdG9rZW4gKCIlIik7IH0KLSsJfAlPUEVSQVRPUiAnXicKLSsJCQl7ICQkID0g b3BlcmF0b3Jfc3Rva2VuICgiXiIpOyB9Ci0rCXwJT1BFUkFUT1IgJyYnCi0rCQkJeyAkJCA9IG9w ZXJhdG9yX3N0b2tlbiAoIiYiKTsgfQotKwl8CU9QRVJBVE9SICd8JwotKwkJCXsgJCQgPSBvcGVy YXRvcl9zdG9rZW4gKCJ8Iik7IH0KLSsJfAlPUEVSQVRPUiAnficKLSsJCQl7ICQkID0gb3BlcmF0 b3Jfc3Rva2VuICgifiIpOyB9Ci0rCXwJT1BFUkFUT1IgJyEnCi0rCQkJeyAkJCA9IG9wZXJhdG9y X3N0b2tlbiAoIiEiKTsgfQotKwl8CU9QRVJBVE9SICc9JwotKwkJCXsgJCQgPSBvcGVyYXRvcl9z dG9rZW4gKCI9Iik7IH0KLSsJfAlPUEVSQVRPUiAnPCcKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rv a2VuICgiPCIpOyB9Ci0rCXwJT1BFUkFUT1IgJz4nCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0b2tl biAoIj4iKTsgfQotKwl8CU9QRVJBVE9SIEFTU0lHTl9NT0RJRlkKLSsJCQl7IGNvbnN0IGNoYXIg Km9wID0gInVua25vd24iOwotKwkJCSAgc3dpdGNoICgkMikKLSsJCQkgICAgewotKwkJCSAgICBj YXNlIEJJTk9QX1JTSDoKLSsJCQkgICAgICBvcCA9ICI+Pj0iOwotKwkJCSAgICAgIGJyZWFrOwot KwkJCSAgICBjYXNlIEJJTk9QX0xTSDoKLSsJCQkgICAgICBvcCA9ICI8PD0iOwotKwkJCSAgICAg IGJyZWFrOwotKwkJCSAgICBjYXNlIEJJTk9QX0FERDoKLSsJCQkgICAgICBvcCA9ICIrPSI7Ci0r CQkJICAgICAgYnJlYWs7Ci0rCQkJICAgIGNhc2UgQklOT1BfU1VCOgotKwkJCSAgICAgIG9wID0g Ii09IjsKLSsJCQkgICAgICBicmVhazsKLSsJCQkgICAgY2FzZSBCSU5PUF9NVUw6Ci0rCQkJICAg ICAgb3AgPSAiKj0iOwotKwkJCSAgICAgIGJyZWFrOwotKwkJCSAgICBjYXNlIEJJTk9QX0RJVjoK LSsJCQkgICAgICBvcCA9ICIvPSI7Ci0rCQkJICAgICAgYnJlYWs7Ci0rCQkJICAgIGNhc2UgQklO T1BfUkVNOgotKwkJCSAgICAgIG9wID0gIiU9IjsKLSsJCQkgICAgICBicmVhazsKLSsJCQkgICAg Y2FzZSBCSU5PUF9CSVRXSVNFX0lPUjoKLSsJCQkgICAgICBvcCA9ICJ8PSI7Ci0rCQkJICAgICAg YnJlYWs7Ci0rCQkJICAgIGNhc2UgQklOT1BfQklUV0lTRV9BTkQ6Ci0rCQkJICAgICAgb3AgPSAi Jj0iOwotKwkJCSAgICAgIGJyZWFrOwotKwkJCSAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgot KwkJCSAgICAgIG9wID0gIl49IjsKLSsJCQkgICAgICBicmVhazsKLSsJCQkgICAgZGVmYXVsdDoK LSsJCQkgICAgICBicmVhazsKLSsJCQkgICAgfQotKwotKwkJCSAgJCQgPSBvcGVyYXRvcl9zdG9r ZW4gKG9wKTsKLSsJCQl9Ci0rCXwJT1BFUkFUT1IgTFNICi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0 b2tlbiAoIjw8Iik7IH0KLSsJfAlPUEVSQVRPUiBSU0gKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rv a2VuICgiPj4iKTsgfQotKwl8CU9QRVJBVE9SIEVRVUFMCi0rCQkJeyAkJCA9IG9wZXJhdG9yX3N0 b2tlbiAoIj09Iik7IH0KLSsJfAlPUEVSQVRPUiBOT1RFUVVBTAotKwkJCXsgJCQgPSBvcGVyYXRv cl9zdG9rZW4gKCIhPSIpOyB9Ci0rCXwJT1BFUkFUT1IgTEVRCi0rCQkJeyAkJCA9IG9wZXJhdG9y X3N0b2tlbiAoIjw9Iik7IH0KLSsJfAlPUEVSQVRPUiBHRVEKLSsJCQl7ICQkID0gb3BlcmF0b3Jf c3Rva2VuICgiPj0iKTsgfQotKwl8CU9QRVJBVE9SIEFOREFORAotKwkJCXsgJCQgPSBvcGVyYXRv cl9zdG9rZW4gKCImJiIpOyB9Ci0rCXwJT1BFUkFUT1IgT1JPUgotKwkJCXsgJCQgPSBvcGVyYXRv cl9zdG9rZW4gKCJ8fCIpOyB9Ci0rCXwJT1BFUkFUT1IgSU5DUkVNRU5UCi0rCQkJeyAkJCA9IG9w ZXJhdG9yX3N0b2tlbiAoIisrIik7IH0KLSsJfAlPUEVSQVRPUiBERUNSRU1FTlQKLSsJCQl7ICQk ID0gb3BlcmF0b3Jfc3Rva2VuICgiLS0iKTsgfQotKwl8CU9QRVJBVE9SICcsJwotKwkJCXsgJCQg PSBvcGVyYXRvcl9zdG9rZW4gKCIsIik7IH0KLSsJfAlPUEVSQVRPUiBBUlJPV19TVEFSCi0rCQkJ eyAkJCA9IG9wZXJhdG9yX3N0b2tlbiAoIi0+KiIpOyB9Ci0rCXwJT1BFUkFUT1IgQVJST1cKLSsJ CQl7ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiLT4iKTsgfQotKwl8CU9QRVJBVE9SICcoJyAnKScK LSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiKCkiKTsgfQotKwl8CU9QRVJBVE9SICdbJyAn XScKLSsJCQl7ICQkID0gb3BlcmF0b3Jfc3Rva2VuICgiW10iKTsgfQotKwl8CU9QRVJBVE9SIHB0 eXBlCi0rCQkJeyBjaGFyICpuYW1lLCAqY2Fub247Ci0rCQkJICBsb25nIGxlbmd0aDsKLSsJCQkg IHN0cnVjdCB1aV9maWxlICpidWYgPSBtZW1fZmlsZW9wZW4gKCk7Ci0rCi0rCQkJICBjX3ByaW50 X3R5cGUgKCQyLCBOVUxMLCBidWYsIC0xLCAwKTsKLSsJCQkgIG5hbWUgPSB1aV9maWxlX3hzdHJk dXAgKGJ1ZiwgJmxlbmd0aCk7Ci0rCQkJICBjYW5vbiA9IGNwX2Nhbm9uaWNhbGl6ZV9zdHJpbmcg KG5hbWUpOwotKwkJCSAgaWYgKGNhbm9uICE9IE5VTEwpCi0rCQkJICAgIHsKLSsJCQkgICAgICB4 ZnJlZSAobmFtZSk7Ci0rCQkJICAgICAgbmFtZSA9IGNhbm9uOwotKwkJCSAgICB9Ci0rCQkJICB1 aV9maWxlX2RlbGV0ZSAoYnVmKTsKLSsJCQkgICQkID0gb3BlcmF0b3Jfc3Rva2VuIChuYW1lKTsK LSsJCQl9Ci0rCTsKLSsKLSsKLSsKLSBuYW1lCToJTkFNRSB7ICQkID0gJDEuc3Rva2VuOyB9Ci0g CXwJQkxPQ0tOQU1FIHsgJCQgPSAkMS5zdG9rZW47IH0KLSAJfAlUWVBFTkFNRSB7ICQkID0gJDEu c3Rva2VuOyB9Ci0gCXwJTkFNRV9PUl9JTlQgIHsgJCQgPSAkMS5zdG9rZW47IH0KLSsJfAlvcGVy YXRvciB7ICQkID0gJDE7IH0KLSAJOwotIAotIG5hbWVfbm90X3R5cGVuYW1lIDoJTkFNRQotQEAg LTExMzYsNiArMTMwMywyMCBAQCBuYW1lX25vdF90eXBlbmFtZSA6CU5BTUUKLSAKLSAlJQotIAot Ky8qIFJldHVybnMgYSBzdG9rZW4gb2YgdGhlIG9wZXJhdG9yIG5hbWUgZ2l2ZW4gYnkgT1AgKHdo aWNoIGRvZXMgbm90Ci0rICAgaW5jbHVkZSB0aGUgc3RyaW5nICJvcGVyYXRvciIpLiAgVGhlIHJl c3VsdCBpcyB4bWFsbG9jJ2QuICAqLwotK3N0YXRpYyBzdHJ1Y3Qgc3Rva2VuCi0rb3BlcmF0b3Jf c3Rva2VuIChjb25zdCBjaGFyICpvcCkKLSt7Ci0rICBzdGF0aWMgY29uc3QgY2hhciAqb3BlcmF0 b3Jfc3RyaW5nID0gIm9wZXJhdG9yIjsKLSsgIHN0cnVjdCBzdG9rZW4gc3QgPSB7IE5VTEwsIDAg fTsKLSsgIHN0Lmxlbmd0aCA9IHN0cmxlbiAob3BlcmF0b3Jfc3RyaW5nKSArIHN0cmxlbiAob3Ap OwotKyAgc3QucHRyID0geG1hbGxvYyAoc3QubGVuZ3RoICsgMSk7Ci0rICBzdHJjcHkgKHN0LnB0 ciwgb3BlcmF0b3Jfc3RyaW5nKTsKLSsgIHN0cmNhdCAoc3QucHRyLCBvcCk7Ci0rICByZXR1cm4g c3Q7Ci0rfTsKLSsKLSAvKiBUYWtlIGNhcmUgb2YgcGFyc2luZyBhIG51bWJlciAoYW55dGhpbmcg dGhhdCBzdGFydHMgd2l0aCBhIGRpZ2l0KS4KLSAgICBTZXQgeXlsdmFsIGFuZCByZXR1cm4gdGhl IHRva2VuIHR5cGU7IHVwZGF0ZSBsZXhwdHIuCi0gICAgTEVOIGlzIHRoZSBudW1iZXIgb2YgY2hh cmFjdGVycyBpbiBpdC4gICovCi1AQCAtMTcxNCw2ICsxODk1LDkgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCB0b2tlbiBpZGVudF90b2tlbnNbXSA9Ci0gICAgIHsibG9uZyIsIExPTkcsIE9QX05VTEws IDB9LAotICAgICB7InRydWUiLCBUUlVFS0VZV09SRCwgT1BfTlVMTCwgMX0sCi0gICAgIHsiaW50 IiwgSU5UX0tFWVdPUkQsIE9QX05VTEwsIDB9LAotKyAgICB7Im5ldyIsIE5FVywgT1BfTlVMTCwg MX0sCi0rICAgIHsiZGVsZXRlIiwgREVMRVRFLCBPUF9OVUxMLCAxfSwKLSsgICAgeyJvcGVyYXRv ciIsIE9QRVJBVE9SLCBPUF9OVUxMLCAxfSwKLSAKLSAgICAgeyJhbmQiLCBBTkRBTkQsIEJJTk9Q X0VORCwgMX0sCi0gICAgIHsiYW5kX2VxIiwgQVNTSUdOX01PRElGWSwgQklOT1BfQklUV0lTRV9B TkQsIDF9LAotQEAgLTE4MjIsNiArMjAwNiwxMyBAQCBzdGF0aWMgaW50IGxhc3Rfd2FzX3N0cnVj dG9wOwotIHN0YXRpYyBpbnQKLSB5eWxleCAodm9pZCkKLSB7Ci0rICAvKiBuYW1lX3ByZWZpeCBz dG9yZXMgdGhlIGZ1bGwgcXVhbGlmaWNhdGlvbiBvZiBhIHZhcmlhYmxlIHRoYXQgaXMKLSsgICAg IHNwZWNpZmllZCBpbiB0aGUgZXhwcmVzc2lvbi4gSXQgaXMgdXNlZCB0byBlbGVtaW5hdGUgY29u ZnVzaW9uIAotKyAgICAgZHVyaW5nIGxvb2t1cC4qLwotKyAgc3RhdGljIGNoYXIgKm5hbWVfcHJl Zml4ID0gTlVMTDsKLSsgIHN0YXRpYyBpbnQgbmFtZV9wcmVmaXhfbGVuID0gMDsKLSsgIHN0YXRp YyBpbnQgdGVybWluYXRlX3ByZWZpeCA9IDA7Ci0rICAKLSAgIGludCBjOwotICAgaW50IG5hbWVs ZW47Ci0gICB1bnNpZ25lZCBpbnQgaTsKLUBAIC0xODMwLDkgKzIwMjEsMTkgQEAgeXlsZXggKHZv aWQpCi0gICBjaGFyICpjb3B5OwotIAotICAgbGFzdF93YXNfc3RydWN0b3AgPSAwOwotLQotKyAg Ci0gIHJldHJ5OgotLQotKyAgCi0rICBpZiAodGVybWluYXRlX3ByZWZpeAotKyAgICAgIHx8IGxl eHB0ciAhPSBuYW1lX3ByZWZpeCArIG5hbWVfcHJlZml4X2xlbikKLSsgICAgewotKyAgICAgIC8q IFNvbWUgdG9rZW4gd2FzIHNraXBwZWQsIHNvIGNsZWFyIG5hbWVfcHJlZml4LiAqLwotKyAgICAg IG5hbWVfcHJlZml4ID0gTlVMTDsKLSsgICAgICBuYW1lX3ByZWZpeF9sZW4gPSAwOwotKyAgICB9 Ci0rICAgIAotKyAgdGVybWluYXRlX3ByZWZpeCA9IDE7Ci0rICAJICAJICAKLSAgIC8qIENoZWNr IGlmIHRoaXMgaXMgYSBtYWNybyBpbnZvY2F0aW9uIHRoYXQgd2UgbmVlZCB0byBleHBhbmQuICAq LwotICAgaWYgKCEgc2Nhbm5pbmdfbWFjcm9fZXhwYW5zaW9uICgpKQotICAgICB7Ci1AQCAtMTg2 OCwxMCArMjA2OSwxOSBAQCB5eWxleCAodm9pZCkKLSAJICAgICYmIHBhcnNlX2xhbmd1YWdlLT5s YV9sYW5ndWFnZSAhPSBsYW5ndWFnZV9jcGx1cykKLSAJICBicmVhazsKLSAKLSsJaWYgKHRva2Vu dGFiMltpXS50b2tlbiA9PSBDT0xPTkNPTE9OKQotKwkgIHsKLSsJICAgIG5hbWVfcHJlZml4X2xl biArPSAyOwotKwkgICAgdGVybWluYXRlX3ByZWZpeCA9IDA7Ci0rCSAgICBpZiAobmFtZV9wcmVm aXggPT0gTlVMTCkKLSsJICAgICAgbmFtZV9wcmVmaXggPSBsZXhwdHI7Ci0rCSAgfQotKwotIAls ZXhwdHIgKz0gMjsKLSAJeXlsdmFsLm9wY29kZSA9IHRva2VudGFiMltpXS5vcGNvZGU7Ci0gCWlm IChpbl9wYXJzZV9maWVsZCAmJiB0b2tlbnRhYjJbaV0udG9rZW4gPT0gQVJST1cpCi0gCSAgbGFz dF93YXNfc3RydWN0b3AgPSAxOwotKwkKLSAJcmV0dXJuIHRva2VudGFiMltpXS50b2tlbjsKLSAg ICAgICB9Ci0gCi1AQCAtMTkwMCw2ICsyMTEwLDggQEAgeXlsZXggKHZvaWQpCi0gICAgICAgICBy ZXR1cm4gMDsKLSAKLSAgICAgY2FzZSAnICc6Ci0rICAgICAgbmFtZV9wcmVmaXhfbGVuKys7Ci0r ICAgICAgdGVybWluYXRlX3ByZWZpeCA9IDA7Ci0gICAgIGNhc2UgJ1x0JzoKLSAgICAgY2FzZSAn XG4nOgotICAgICAgIGxleHB0cisrOwotQEAgLTIwNTcsMTEgKzIyNjksMTMgQEAgeXlsZXggKHZv aWQpCi0gICAgIGVycm9yICgiSW52YWxpZCBjaGFyYWN0ZXIgJyVjJyBpbiBleHByZXNzaW9uLiIs IGMpOwotIAotICAgLyogSXQncyBhIG5hbWUuICBTZWUgaG93IGxvbmcgaXQgaXMuICAqLwotKyAg Ci0gICBuYW1lbGVuID0gMDsKLSAgIGZvciAoYyA9IHRva3N0YXJ0W25hbWVsZW5dOwotICAgICAg ICAoYyA9PSAnXycgfHwgYyA9PSAnJCcgfHwgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotIAl8fCAo YyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChjID49ICdBJyAmJiBjIDw9ICdaJykgfHwgYyA9PSAn PCcpOykKLSAgICAgewotKyAgICAKLSAgICAgICAvKiBUZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdHMg YXJlIHBhcnQgb2YgdGhlIG5hbWUuCi0gCSBGSVhNRTogVGhpcyBtaXNoYW5kbGVzIGBwcmludCAk YTw0JiYkYT4zJy4gICovCi0gCi1AQCAtMjEyNSwxNCArMjMzOSwyOSBAQCB5eWxleCAodm9pZCkK LSAgICAgIGN1cnJlbnRseSBhcyBuYW1lcyBvZiB0eXBlczsgTkFNRSBmb3Igb3RoZXIgc3ltYm9s cy4KLSAgICAgIFRoZSBjYWxsZXIgaXMgbm90IGNvbnN0cmFpbmVkIHRvIGNhcmUgYWJvdXQgdGhl IGRpc3RpbmN0aW9uLiAgKi8KLSAgIHsKLSsgICAgY2hhciAqdG1wID0gY29weTsKLSAgICAgc3Ry dWN0IHN5bWJvbCAqc3ltOwotICAgICBpbnQgaXNfYV9maWVsZF9vZl90aGlzID0gMDsKLSAgICAg aW50IGhleHR5cGU7Ci0gCi0tICAgIHN5bSA9IGxvb2t1cF9zeW1ib2wgKGNvcHksIGV4cHJlc3Np b25fY29udGV4dF9ibG9jaywKLSsgICAgaWYgKG5hbWVfcHJlZml4ICE9IE5VTEwpCi0rICAgICAg dG1wID0gc2F2ZXN0cmluZyAobmFtZV9wcmVmaXgsIG5hbWVfcHJlZml4X2xlbituYW1lbGVuKTsK LSsKLSsgICAgc3ltID0gbG9va3VwX3N5bWJvbCAodG1wLCBleHByZXNzaW9uX2NvbnRleHRfYmxv Y2ssCi0gCQkJIFZBUl9ET01BSU4sCi0gCQkJIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9 PSBsYW5ndWFnZV9jcGx1cwotIAkJCSA/ICZpc19hX2ZpZWxkX29mX3RoaXMgOiAoaW50ICopIE5V TEwpOwotKwkJCSAKLSsgICAgLyogS2VlcCB0aGlzIG5hbWUgYXMgdGhlIHByZWZpeCBmb3IgdGhl IG5leHQgbmFtZS4gKi8KLSsgICAgaWYgKHN5bSkKLSsgICAgICB7Ci0rCWlmIChuYW1lX3ByZWZp eCA9PSBOVUxMKQotKwkgIG5hbWVfcHJlZml4ID0gdG9rc3RhcnQ7Ci0rCi0rCW5hbWVfcHJlZml4 X2xlbiArPSBuYW1lbGVuOwotKwl0ZXJtaW5hdGVfcHJlZml4ID0gMDsKLSsgICAgICB9Ci0rCi0g ICAgIC8qIENhbGwgbG9va3VwX3N5bXRhYiwgbm90IGxvb2t1cF9wYXJ0aWFsX3N5bXRhYiwgaW4g Y2FzZSB0aGVyZSBhcmUKLSAgICAgICAgbm8gcHN5bXRhYnMgKGNvZmYsIHhjb2ZmLCBvciBzb21l IGZ1dHVyZSBjaGFuZ2UgdG8gYmxvdyBhd2F5IHRoZQotICAgICAgICBwc3ltdGFicyBvbmNlIG9u Y2Ugc3ltYm9scyBhcmUgcmVhZCkuICAqLwotQEAgLTIxOTEsNiArMjQyMCw3IEBAIHl5bGV4ICh2 b2lkKQotICAgICB5eWx2YWwuc3N5bS5pc19hX2ZpZWxkX29mX3RoaXMgPSBpc19hX2ZpZWxkX29m X3RoaXM7Ci0gICAgIGlmIChpbl9wYXJzZV9maWVsZCAmJiAqbGV4cHRyID09ICdcMCcpCi0gICAg ICAgc2F3X25hbWVfYXRfZW9mID0gMTsKLSsgICAgICAgIAotICAgICByZXR1cm4gTkFNRTsKLSAg IH0KLSB9CiBkaWZmIC0tZ2l0IGEvZ2RiL2MtbGFuZy5jIGIvZ2RiL2MtbGFuZy5jCi1pbmRleCBk MDE0OTBjLi5iYzM1YTNlIDEwMDY0NAoraW5kZXggZDYyMDg4MS4uZDRhMjI5ZCAxMDA2NDQKIC0t LSBhL2dkYi9jLWxhbmcuYwogKysrIGIvZ2RiL2MtbGFuZy5jCi1AQCAtNzE1LDcgKzcxNSw3IEBA IGNfZ2V0X3N0cmluZyAoc3RydWN0IHZhbHVlICp2YWx1ZSwgZ2RiX2J5dGUgKipidWZmZXIsIGlu dCAqbGVuZ3RoLAorQEAgLTcxNyw3ICs3MTcsNyBAQCBjX2dldF9zdHJpbmcgKHN0cnVjdCB2YWx1 ZSAqdmFsdWUsIGdkYl9ieXRlICoqYnVmZmVyLCBpbnQgKmxlbmd0aCwKICAgICAgIElmIGxlbmd0 aCByZXR1cm5lZCBmcm9tIHJlYWRfc3RyaW5nIHdhcyA+IDAsIHJldHVybiB0aGUgbnVtYmVyIG9m CiAgICAgICBjaGFyYWN0ZXJzIHJlYWQgYnkgZGl2aWRpbmcgdGhlIG51bWJlciBvZiBieXRlcyBi eSB3aWR0aC4gICovCiAgICBpZiAoKmxlbmd0aCAhPSAwKQogLSAgICAgKmxlbmd0aCA9ICpsZW5n dGggLyB3aWR0aDsKICsgICAgKmxlbmd0aCA9ICpsZW5ndGggLyB3aWR0aDsKICAKLSAgICpjaGFy c2V0ID0gdGFyZ2V0X2NoYXJzZXQgKCk7CisgICAqY2hhcl90eXBlID0gZWxlbWVudF90eXBlOwog IAotQEAgLTEwMzgsNiArMTAzOCw5IEBAIGV2YWx1YXRlX3N1YmV4cF9jIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsIHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMTA0MCw2ICsxMDQwLDkg QEAgZXZhbHVhdGVfc3ViZXhwX2MgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwgc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwKICAgIHJldHVybiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKGV4cGVj dF90eXBlLCBleHAsIHBvcywgbm9zaWRlKTsKICB9CiAgCkBAIC0yMzcwLDcgKzk4Niw3IEBAIGlu ZGV4IGQwMTQ5MGMuLmJjMzVhM2UgMTAwNjQ0CiAgCiAgDAogIC8qIFRhYmxlIG1hcHBpbmcgb3Bj b2RlcyBpbnRvIHN0cmluZ3MgZm9yIHByaW50aW5nIG9wZXJhdG9ycwotQEAgLTExMzgsNiArMTE0 MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IgZXhwX2Rlc2NyaXB0b3Jf YyA9CitAQCAtMTE0MCw2ICsxMTQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBleHBfZGVzY3Jp cHRvciBleHBfZGVzY3JpcHRvcl9jID0KICB7CiAgICBwcmludF9zdWJleHBfc3RhbmRhcmQsCiAg ICBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQsCkBAIC0yMzc5LDk1ICs5OTUsMTUgQEAgaW5kZXgg ZDAxNDkwYy4uYmMzNWEzZSAxMDA2NDQKICAgIGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQsCiAg ICBldmFsdWF0ZV9zdWJleHBfYwogZGlmZiAtLWdpdCBhL2dkYi9jLXR5cGVwcmludC5jIGIvZ2Ri L2MtdHlwZXByaW50LmMKLWluZGV4IGIxOTMwODAuLjA0Y2YzYmMgMTAwNjQ0CitpbmRleCBkMWFm NDgxLi4xYzkzMGI1IDEwMDY0NAogLS0tIGEvZ2RiL2MtdHlwZXByaW50LmMKICsrKyBiL2dkYi9j LXR5cGVwcmludC5jCi1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJjLWxhbmcuaCIKLSAj aW5jbHVkZSAidHlwZXByaW50LmgiCi0gI2luY2x1ZGUgImNwLWFiaS5oIgotKyNpbmNsdWRlICJq di1sYW5nLmgiCi0gCi0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLSAjaW5jbHVkZSA8ZXJybm8u aD4KLUBAIC00MCw4ICs0MSw2IEBAIHN0YXRpYyB2b2lkIGNwX3R5cGVfcHJpbnRfbWV0aG9kX2Fy Z3MgKHN0cnVjdCB0eXBlICptdHlwZSwgY2hhciAqcHJlZml4LAotIAkJCQkgICAgICAgY2hhciAq dmFyc3RyaW5nLCBpbnQgc3RhdGljcCwKLSAJCQkJICAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJl YW0pOwotIAotLXN0YXRpYyB2b2lkIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdWlfZmlsZSAqKTsKLS0KLSBzdGF0aWMgdm9pZCBjcF90eXBlX3ByaW50X2Rlcml2YXRp b25faW5mbyAoc3RydWN0IHVpX2ZpbGUgKiwgc3RydWN0IHR5cGUgKik7Ci0gCi0gc3RhdGljIHZv aWQgY190eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQsCi1AQCAtMTk5LDYgKzE5OCwyMyBAQCBjcF90eXBlX3ByaW50X21ldGhvZF9h cmdzIChzdHJ1Y3QgdHlwZSAqbXR5cGUsIGNoYXIgKnByZWZpeCwgY2hhciAqdmFyc3RyaW5nLAot ICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ2b2lkIik7Ci0gCi0gICBmcHJpbnRmX2Zp bHRlcmVkIChzdHJlYW0sICIpIik7Ci0rCi0rICAvKiBGb3Igbm9uLXN0YXRpYyBtZXRob2RzLCBy ZWFkIHF1YWxpZmllcnMgZnJvbSB0aGUgdHlwZSBvZgotKyAgICAgVEhJUy4gICovCi0rICBpZiAo IXN0YXRpY3ApCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqZG9tYWluOwotKwotKyAgICAg IGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9DT0RFIChh cmdzWzBdLnR5cGUpID09IFRZUEVfQ09ERV9QVFIpOwotKyAgICAgIGRvbWFpbiA9IFRZUEVfVEFS R0VUX1RZUEUgKGFyZ3NbMF0udHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfQ09OU1QgKGRvbWFp bikpCi0rCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiBjb25zdCIpOwotKwotKyAgICAgIGlm IChUWVBFX1ZPTEFUSUxFIChkb21haW4pKQotKwlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIg dm9sYXRpbGUiKTsKLSsgICAgfQotIH0KLSAKLSAKLUBAIC0zNTUsMTAgKzM3MSwxNCBAQCBjX3R5 cGVfcHJpbnRfbW9kaWZpZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3Ry ZWFtLAotIAotIC8qIFByaW50IG91dCB0aGUgYXJndW1lbnRzIG9mIFRZUEUsIHdoaWNoIHNob3Vs ZCBoYXZlIFRZUEVfQ09ERV9NRVRIT0QKLSAgICBvciBUWVBFX0NPREVfRlVOQywgdG8gU1RSRUFN LiAgQXJ0aWZpY2lhbCBhcmd1bWVudHMsIHN1Y2ggYXMgInRoaXMiCi0tICAgaW4gbm9uLXN0YXRp YyBtZXRob2RzLCBhcmUgZGlzcGxheWVkLiAgKi8KLSsgICBpbiBub24tc3RhdGljIG1ldGhvZHMs IGFyZSBkaXNwbGF5ZWQgaWYgU0hPV19BUlRJRklDSUFMIGlzCi0rICAgbm9uLXplcm8uIExBTkdV QUdFIGlzIHRoZSBsYW5ndWFnZSBpbiB3aGljaCBUWVBFIHdhcyBkZWZpbmVkLiAgVGhpcyBpcwot KyAgIGEgbmVjZXNzYXJ5IGV2aWwgc2luY2UgdGhpcyBjb2RlIGlzIHVzZWQgYnkgdGhlIEMsIEMr KywgYW5kIEphdmEKLSsgICBiYWNrZW5kcy4gKi8KLSAKLS1zdGF0aWMgdm9pZAotLWNfdHlwZV9w cmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt2 b2lkCi0rY190eXBlX3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAotKwkJICAgaW50IHNob3dfYXJ0aWZpY2lhbCwgZW51bSBsYW5ndWFnZSBsYW5n dWFnZSkKLSB7Ci0gICBpbnQgaSwgbGVuOwotICAgc3RydWN0IGZpZWxkICphcmdzOwotQEAgLTM3 MCwxMyArMzkwLDE5IEBAIGNfdHlwZV9wcmludF9hcmdzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05GSUVMRFMg KHR5cGUpOyBpKyspCi0gICAgIHsKLSsgICAgICBpZiAoVFlQRV9GSUVMRF9BUlRJRklDSUFMICh0 eXBlLCBpKSAmJiAhc2hvd19hcnRpZmljaWFsKQotKwljb250aW51ZTsKLSsKLSAgICAgICBpZiAo cHJpbnRlZF9hbnkpCi0gCXsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIsICIpOwot IAkgIHdyYXBfaGVyZSAoIiAgICAiKTsKLSAJfQotIAotLSAgICAgIGNfcHJpbnRfdHlwZSAoVFlQ RV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOwotKyAgICAgIGlmIChs YW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQotKwlqYXZhX3ByaW50X3R5cGUgKFRZUEVfRklFTERf VFlQRSAodHlwZSwgaSksICIiLCBzdHJlYW0sIC0xLCAwKTsKLSsgICAgICBlbHNlCi0rCWNfcHJp bnRfdHlwZSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwgIiIsIHN0cmVhbSwgLTEsIDApOwot ICAgICAgIHByaW50ZWRfYW55ID0gMTsKLSAgICAgfQotIAotQEAgLTU2MCw3ICs1ODYsMTIgQEAg Y190eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVp X2ZpbGUgKnN0cmVhbSwKK0BAIC01NTgsNyArNTU4LDEyIEBAIGNfdHlwZV9wcmludF92YXJzcGVj X3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgCWZw cmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKICAKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVk IChzdHJlYW0sICJbIik7CiAtICAgICAgaWYgKFRZUEVfTEVOR1RIIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKSkgPiAwCi0rICAgICAgaWYgKFRZUEVfQVJSQVlfQk9VTkRfSVNfRFdBUkZfQkxPQ0sg KHR5cGUsIDEpKQorKyAgICAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX0RXQVJGX0JM T0NLICh0eXBlKSkKICsJewogKwkgIC8qIE5vIF8oKSAtIHByaW50ZWQgc291cmNlcyBzaG91bGQg bm90IGJlIGxvY2FsZSBkZXBlbmRlbnQuICAqLwogKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgInZhcmlhYmxlIik7CkBAIC0yNDc2LDIwICsxMDEyLDExIEBAIGluZGV4IGIxOTMwODAuLjA0 Y2YzYmMgMTAwNjQ0CiAgCSYmICFUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAo dHlwZSkpCiAgCWZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiVkIiwKICAJCQkgIChUWVBFX0xF TkdUSCAodHlwZSkKLUBAIC01OTMsNyArNjI0LDcgQEAgY190eXBlX3ByaW50X3ZhcnNwZWNfc3Vm Zml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgICAgICBp ZiAocGFzc2VkX2FfcHRyKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7Ci0gICAg ICAgaWYgKCFkZW1hbmdsZWRfYXJncykKLS0JY190eXBlX3ByaW50X2FyZ3MgKHR5cGUsIHN0cmVh bSk7Ci0rCWNfdHlwZV9wcmludF9hcmdzICh0eXBlLCBzdHJlYW0sIDEsIGxhbmd1YWdlX2MpOwot ICAgICAgIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSksIHN0cmVhbSwgc2hvdywKLSAJCQkJICAgcGFzc2VkX2FfcHRyLCAwKTsKLSAgICAgICBicmVh azsKIGRpZmYgLS1naXQgYS9nZGIvY2xpL2NsaS1jbWRzLmMgYi9nZGIvY2xpL2NsaS1jbWRzLmMK LWluZGV4IGNlN2MyYTYuLjYzODBmZWMgMTAwNjQ0CitpbmRleCA0ODMzODk4Li45OTJjNDZmIDEw MDY0NAogLS0tIGEvZ2RiL2NsaS9jbGktY21kcy5jCiArKysgYi9nZGIvY2xpL2NsaS1jbWRzLmMK LUBAIC00Niw2ICs0Niw4IEBACitAQCAtNDcsNiArNDcsOCBAQCBleHRlcm4gdm9pZCBkaXNjb25u ZWN0X29yX3N0b3BfdHJhY2luZyAoaW50IGZyb21fdHR5KTsKICAjaW5jbHVkZSAiY2xpL2NsaS1z ZXRzaG93LmgiCiAgI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgogIApAQCAtMjQ5OCw3ICsxMDI1 LDcgQEAgaW5kZXggY2U3YzJhNi4uNjM4MGZlYyAxMDA2NDQKICAjaWZkZWYgVFVJCiAgI2luY2x1 ZGUgInR1aS90dWkuaCIJCS8qIEZvciB0dWlfYWN0aXZlIGV0LmFsLiAgICovCiAgI2VuZGlmCi1A QCAtMTgzLDYgKzE4NSw3IEBAIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hlY2tsaXN0 OworQEAgLTE4NCw2ICsxODYsNyBAQCBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2hvd2NoZWNr bGlzdDsKICAKICAvKiBDb21tYW5kIHRyYWNpbmcgc3RhdGUuICAqLwogIApAQCAtMjUwNiw3ICsx MDMzLDcgQEAgaW5kZXggY2U3YzJhNi4uNjM4MGZlYyAxMDA2NDQKICBpbnQgc291cmNlX3ZlcmJv c2UgPSAwOwogIGludCB0cmFjZV9jb21tYW5kcyA9IDA7CiAgDAotQEAgLTQ0NCw2ICs0NDcsNyBA QCBzb3VyY2Vfc2NyaXB0IChjaGFyICpmaWxlLCBpbnQgZnJvbV90dHkpCitAQCAtNDQ4LDYgKzQ1 MSw3IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0eSkKICAgIHN0cnVj dCBjbGVhbnVwICpvbGRfY2xlYW51cHM7CiAgICBjaGFyICpmdWxsX3BhdGhuYW1lID0gTlVMTDsK ICAgIGludCBmZDsKQEAgLTI1MTQsNyArMTA0MSw3IEBAIGluZGV4IGNlN2MyYTYuLjYzODBmZWMg MTAwNjQ0CiAgCiAgICBpZiAoZmlsZSA9PSBOVUxMIHx8ICpmaWxlID09IDApCiAgICAgIHsKLUBA IC00NzYsOCArNDgwLDE2IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBmcm9tX3R0 eSkKK0BAIC00ODAsOCArNDg0LDE2IEBAIHNvdXJjZV9zY3JpcHQgKGNoYXIgKmZpbGUsIGludCBm cm9tX3R0eSkKICAJfQogICAgICB9CiAgCkBAIC0yNTMyLDcgKzEwNTksNyBAQCBpbmRleCBjZTdj MmE2Li42MzgwZmVjIDEwMDY0NAogIAogICAgZG9fY2xlYW51cHMgKG9sZF9jbGVhbnVwcyk7CiAg fQotQEAgLTQ5MSwxNSArNTAzLDMwIEBAIHNvdXJjZV92ZXJib3NlX2NsZWFudXAgKHZvaWQgKm9s ZF92YWx1ZSkKK0BAIC00OTUsMTUgKzUwNywzMCBAQCBzb3VyY2VfdmVyYm9zZV9jbGVhbnVwICh2 b2lkICpvbGRfdmFsdWUpCiAgICB4ZnJlZSAob2xkX3ZhbHVlKTsKICB9CiAgCkBAIC0yNTY3LDcg KzEwOTQsNyBAQCBpbmRleCBjZTdjMmE2Li42MzgwZmVjIDEwMDY0NAogIAogICAgLyogLXYgY2F1 c2VzIHRoZSBzb3VyY2UgY29tbWFuZCB0byBydW4gaW4gdmVyYm9zZSBtb2RlLgogICAgICAgV2Ug c3RpbGwgaGF2ZSB0byBiZSBhYmxlIHRvIGhhbmRsZSBmaWxlbmFtZXMgd2l0aCBzcGFjZXMgaW4g YQotQEAgLTUwNywyMyArNTM0LDI4IEBAIHNvdXJjZV9jb21tYW5kIChjaGFyICphcmdzLCBpbnQg ZnJvbV90dHkpCitAQCAtNTExLDIzICs1MzgsMjggQEAgc291cmNlX2NvbW1hbmQgKGNoYXIgKmFy Z3MsIGludCBmcm9tX3R0eSkKICAKICAgIGlmIChhcmdzKQogICAgICB7CkBAIC0yNjA5LDcgKzEx MzYsNyBAQCBpbmRleCBjZTdjMmE2Li42MzgwZmVjIDEwMDY0NAogIH0KICAKICAKLUBAIC0xMzA3 LDcgKzEzMzksOSBAQCBSZWFkIGNvbW1hbmRzIGZyb20gYSBmaWxlIG5hbWVkIEZJTEUuXG5cCitA QCAtMTMwOSw3ICsxMzQxLDkgQEAgUmVhZCBjb21tYW5kcyBmcm9tIGEgZmlsZSBuYW1lZCBGSUxF LlxuXAogIE9wdGlvbmFsIC12IHN3aXRjaCAoYmVmb3JlIHRoZSBmaWxlbmFtZSkgY2F1c2VzIGVh Y2ggY29tbWFuZCBpblxuXAogIEZJTEUgdG8gYmUgZWNob2VkIGFzIGl0IGlzIGV4ZWN1dGVkLlxu XAogIE5vdGUgdGhhdCB0aGUgZmlsZSBcIiVzXCIgaXMgcmVhZCBhdXRvbWF0aWNhbGx5IGluIHRo aXMgd2F5XG5cCkBAIC0yNjIxLDE5ICsxMTQ4LDEwIEBAIGluZGV4IGNlN2MyYTYuLjYzODBmZWMg MTAwNjQ0CiAgCSAgICAgICBzb3VyY2VfaGVscF90ZXh0LCAmY21kbGlzdCk7CiAgICBzZXRfY21k X2NvbXBsZXRlciAoYywgZmlsZW5hbWVfY29tcGxldGVyKTsKIGRpZmYgLS1naXQgYS9nZGIvY29m ZnJlYWQuYyBiL2dkYi9jb2ZmcmVhZC5jCi1pbmRleCA4ODhmOGI0Li42NTQ5NGI4IDEwMDY0NAor aW5kZXggZWNhNjYxOC4uMDU3OWNlNiAxMDA2NDQKIC0tLSBhL2dkYi9jb2ZmcmVhZC5jCiArKysg Yi9nZGIvY29mZnJlYWQuYwotQEAgLTM0Niw3ICszNDYsNyBAQCBjb2ZmX2FsbG9jX3R5cGUgKGlu dCBpbmRleCkKLSAgICAgIFdlIHdpbGwgZmlsbCBpdCBpbiBsYXRlciBpZiB3ZSBmaW5kIG91dCBo b3cuICAqLwotICAgaWYgKHR5cGUgPT0gTlVMTCkKLSAgICAgewotLSAgICAgIHR5cGUgPSBhbGxv Y190eXBlIChjdXJyZW50X29iamZpbGUpOwotKyAgICAgIHR5cGUgPSBhbGxvY190eXBlIChjdXJy ZW50X29iamZpbGUsIE5VTEwpOwotICAgICAgICp0eXBlX2FkZHIgPSB0eXBlOwotICAgICB9Ci0g ICByZXR1cm4gdHlwZTsKLUBAIC0yMTIxLDYgKzIxMjEsNyBAQCBzdGF0aWMgc3RydWN0IHN5bV9m bnMgY29mZl9zeW1fZm5zID0KK0BAIC0yMTI2LDYgKzIxMjYsNyBAQCBzdGF0aWMgc3RydWN0IHN5 bV9mbnMgY29mZl9zeW1fZm5zID0KICAgIGNvZmZfbmV3X2luaXQsCQkvKiBzeW1fbmV3X2luaXQ6 IGluaXQgYW55dGhpbmcgZ2JsIHRvIGVudGlyZSBzeW10YWIgKi8KICAgIGNvZmZfc3ltZmlsZV9p bml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQo KSAqLwogICAgY29mZl9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBm aWxlIGludG8gc3ltdGFiICovCkBAIC0yNjQyLDcgKzExNjAsNyBAQCBpbmRleCA4ODhmOGI0Li42 NTQ5NGI4IDEwMDY0NAogICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRz OiAgeGxhdGUgZXh0ZXJuYWwgdG8gaW50ZXJuYWwgZm9ybSAqLwogICAgZGVmYXVsdF9zeW1maWxl X3NlZ21lbnRzLAkvKiBzeW1fc2VnbWVudHM6IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20K IGRpZmYgLS1naXQgYS9nZGIvY29uZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgotaW5kZXggNDcxNjUy NC4uMDc0NWM2NSAxMDA2NDQKK2luZGV4IGViZGU4NzYuLjkwN2IyNzUgMTAwNjQ0CiAtLS0gYS9n ZGIvY29uZmlnLmluCiArKysgYi9nZGIvY29uZmlnLmluCiBAQCAtNDYsMTEgKzQ2LDEwIEBACkBA IC0yNjU5LDcgKzExNzcsNyBAQCBpbmRleCA0NzE2NTI0Li4wNzQ1YzY1IDEwMDY0NAogICN1bmRl ZiBHREJfREFUQURJUl9SRUxPQ0FUQUJMRQogIAogIC8qIERlZmluZSB0byBiZSBhIHN0cmluZyBu YW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0LiAqLwotQEAgLTY0Nyw2ICs2NDYs OSBAQAorQEAgLTY1Myw2ICs2NTIsOSBAQAogICAgICdwdHJkaWZmX3QnLiAqLwogICN1bmRlZiBQ VFJESUZGX1RfU1VGRklYCiAgCkBAIC0yOTExLDcgKzE0MjksNyBAQCBpbmRleCAwMDAwMDAwLi40 OWFjNDIwCiArI2RlZmluZSBUQVJHRVRfUkVHSU9OX1NJWkVfT0tfRk9SX0hXX1dBVENIUE9JTlQo U0laRSkgMQogKwogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCi1p bmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1NQoraW5kZXggN2YyNmM2NC4uMDU0MmY3ZSAxMDA3 NTUKIC0tLSBhL2dkYi9jb25maWd1cmUKICsrKyBiL2dkYi9jb25maWd1cmUKIEBAIC02NzYsNiAr Njc2LDggQEAgUkVQT1JUX0JVR1NfVE8KQEAgLTI5MjMsNyArMTQ0MSw3IEBAIGluZGV4IDQ2ZTdi ZmUuLmVhNjY3ZjAgMTAwNzU1CiAgR0RCX0RBVEFESVIKICBERUJVR0RJUgogIGFtX19mYXN0ZGVw Q0NfRkFMU0UKLUBAIC04ODMsNiArODg1LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcK K0BAIC04ODUsNiArODg3LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKICB3aXRoX3Nl cGFyYXRlX2RlYnVnX2RpcgogIHdpdGhfZ2RiX2RhdGFkaXIKICB3aXRoX3JlbG9jYXRlZF9zb3Vy Y2VzCkBAIC0yOTMxLDcgKzE0NDksNyBAQCBpbmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1NQog IGVuYWJsZV90YXJnZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RiY2xpCi1AQCAt MTU4MSw2ICsxNTg0LDEwIEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE1ODYsNiArMTU4OSwx MCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEQVRB RElSL2dkYl0KICAgIC0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRICiAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0aCBmb3Igc291cmNl IGZpbGVzCkBAIC0yOTQyLDcgKzE0NjAsNyBAQCBpbmRleCA0NmU3YmZlLi5lYTY2N2YwIDEwMDc1 NQogICAgLS13aXRoLWxpYnVud2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRp bmcgc3VwcG9ydAogICAgLS13aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGli cmFyeSBpbnN0ZWFkIG9mIHRoZSB0ZXJtY2FwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBs aWJyYXJ5Ci1AQCAtNjYwMiw2ICs2NjA5LDczIEBAIF9BQ0VPRgorQEAgLTY4NjYsNiArNjg3Myw3 MyBAQCBfQUNFT0YKICBmaQogIAogIApAQCAtMzAxNiw3ICsxNTM0LDcgQEAgaW5kZXggNDZlN2Jm ZS4uZWE2NjdmMCAxMDA3NTUKICAKICAKICBzdWJkaXJzPSIkc3ViZGlycyBkb2MgdGVzdHN1aXRl IgotQEAgLTkyODIsNiArOTM1Niw4IEBAICRhc19lY2hvICIjZGVmaW5lIEhBVkVfUFlUSE9OIDEi ID4+Y29uZmRlZnMuaAorQEAgLTk2MDQsNiArOTY3OCw4IEBAICRhc19lY2hvICIjZGVmaW5lIEhB VkVfUFlUSE9OIDEiID4+Y29uZmRlZnMuaAogICAgQ09ORklHX09CUz0iJENPTkZJR19PQlMgXCQo U1VCRElSX1BZVEhPTl9PQlMpIgogICAgQ09ORklHX0RFUFM9IiRDT05GSUdfREVQUyBcJChTVUJE SVJfUFlUSE9OX0RFUFMpIgogICAgQ09ORklHX1NSQ1M9IiRDT05GSUdfU1JDUyBcJChTVUJESVJf UFlUSE9OX1NSQ1MpIgpAQCAtMzAyNiwxMCArMTU0NCwxMCBAQCBpbmRleCA0NmU3YmZlLi5lYTY2 N2YwIDEwMDc1NQogIAogICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRob24gY29kZSAo dGFrZW4gZnJvbSBweXRob24tY29uZmlnIC0tY2ZsYWdzKS4KIGRpZmYgLS1naXQgYS9nZGIvY29u ZmlndXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYwotaW5kZXggMGU0MjE4Mi4uZTdmOTdjZiAxMDA2 NDQKK2luZGV4IGViYjBhOTUuLmM4ZWJhZmUgMTAwNjQ0CiAtLS0gYS9nZGIvY29uZmlndXJlLmFj CiArKysgYi9nZGIvY29uZmlndXJlLmFjCi1AQCAtMTA3LDYgKzEwNyw1MSBAQCBBU19IRUxQX1NU UklORyhbLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEhdLCBbYXV0b21hdGljYWxseSByZWxv Y2F0ZSB0aGlzIHBhdAorQEAgLTEwOCw2ICsxMDgsNTEgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0 aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRIXSwgW2F1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBw YXQKICAgICAgICAgICAgICAgIFtSZWxvY2F0ZWQgZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMu IF0pCiAgXSkKICAKQEAgLTMwODEsNyArMTU5OSw3IEBAIGluZGV4IDBlNDIxODIuLmU3Zjk3Y2Yg MTAwNjQ0CiAgQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKICAKICAjIENoZWNrIHdo ZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKLUBAIC02 NTgsNiArNzAzLDggQEAgaWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iID0geWVzOyB0aGVuCitA QCAtNjc0LDYgKzcxOSw4IEBAIGlmIHRlc3QgIiR7aGF2ZV9saWJweXRob259IiA9IHllczsgdGhl bgogICAgQ09ORklHX09CUz0iJENPTkZJR19PQlMgXCQoU1VCRElSX1BZVEhPTl9PQlMpIgogICAg Q09ORklHX0RFUFM9IiRDT05GSUdfREVQUyBcJChTVUJESVJfUFlUSE9OX0RFUFMpIgogICAgQ09O RklHX1NSQ1M9IiRDT05GSUdfU1JDUyBcJChTVUJESVJfUFlUSE9OX1NSQ1MpIgpAQCAtMzA5MCw4 MTggKzE2MDgsNjQgQEAgaW5kZXggMGU0MjE4Mi4uZTdmOTdjZiAxMDA2NDQKICAgIEVOQUJMRV9D RkxBR1M9IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKICAKICAgICMg RmxhZ3MgbmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0aG9uLWNv bmZpZyAtLWNmbGFncykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2NwLW5hbWUtcGFyc2VyLnkgYi9nZGIv Y3AtbmFtZS1wYXJzZXIueQotaW5kZXggNjI4MDBiOC4uOTdkNTg3YiAxMDA2NDQKLS0tLSBhL2dk Yi9jcC1uYW1lLXBhcnNlci55Ci0rKysgYi9nZGIvY3AtbmFtZS1wYXJzZXIueQotQEAgLTEsNyAr MSw2IEBACi0gLyogWUFDQyBwYXJzZXIgZm9yIEMrKyBuYW1lcywgZm9yIEdEQi4KLSAKLS0gICBD b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDgsIDIwMDkKLS0gICBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQs IDIwMDUsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0g Ci0gICAgUGFydHMgb2YgdGhlIGxleGVyIGFyZSBiYXNlZCBvbiBjLWV4cC55IGZyb20gR0RCLgot IAotQEAgLTM4OSw3ICszODgsNyBAQCBmdW5jdGlvbgotIAkJfAljb2xvbl9leHRfb25seSBmdW5j dGlvbl9hcmdsaXN0IHN0YXJ0X29wdAotIAkJCXsgJCQgPSBmaWxsX2NvbXAgKERFTUFOR0xFX0NP TVBPTkVOVF9UWVBFRF9OQU1FLCAkMSwgJDIuY29tcCk7Ci0gCQkJICBpZiAoJDMpICQkID0gZmls bF9jb21wIChERU1BTkdMRV9DT01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQzKTsgfQotLQotKwkJ fAljb2xvbl9leHRfb25seQotIAkJfAljb252ZXJzaW9uX29wX25hbWUgc3RhcnRfb3B0Ci0gCQkJ eyAkJCA9ICQxLmNvbXA7Ci0gCQkJICBpZiAoJDIpICQkID0gZmlsbF9jb21wIChERU1BTkdMRV9D T01QT05FTlRfTE9DQUxfTkFNRSwgJCQsICQyKTsgfQotZGlmZiAtLWdpdCBhL2dkYi9jcC1uYW1l c3BhY2UuYyBiL2dkYi9jcC1uYW1lc3BhY2UuYwotaW5kZXggZDJkOGYyZS4uZGIyNmEwMSAxMDA2 NDQKLS0tLSBhL2dkYi9jcC1uYW1lc3BhY2UuYwotKysrIGIvZ2RiL2NwLW5hbWVzcGFjZS5jCi1A QCAtMzYsMTQgKzM2LDE3IEBAIHN0YXRpYyBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjcF9jb3B5X3Vz aW5ncyAoc3RydWN0IHVzaW5nX2RpcmVjdCAqdXNpbmcsCi0gCQkJCQkgICAgc3RydWN0IG9ic3Rh Y2sgKm9ic3RhY2spOwotIAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfbmFtZXNwYWNl X3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICAgICAgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAotIAkJCQkJICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCSAg ICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLSAJCQkJCSAgICAgIGNvbnN0IGNoYXIgKnNj b3BlLAotIAkJCQkJICAgICAgaW50IHNjb3BlX2xlbik7Ci0gCi0rc3RhdGljIHN0cnVjdCBzeW1i b2wgKmNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2Us Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbik7Ci0rCi0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfZmlsZSAo Y29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJ CQkJICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotIAkJCQkJICBjb25zdCBkb21haW5fZW51 bSBkb21haW4sCi0gCQkJCQkgIGludCBhbm9ueW1vdXNfbmFtZXNwYWNlKTsKLUBAIC0xMTksNyAr MTIyLDcgQEAgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBz eW1ib2wgKnN5bWJvbCkKLSAJCSBhbm9ueW1vdXMgbmFtZXNwYWNlLiAgU28gYWRkIHN5bWJvbHMg aW4gaXQgdG8gdGhlCi0gCQkgbmFtZXNwYWNlIGdpdmVuIGJ5IHRoZSBwcmV2aW91cyBjb21wb25l bnQgaWYgdGhlcmUgaXMKLSAJCSBvbmUsIG9yIHRvIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGlmIHRo ZXJlIGlzbid0LiAgKi8KLS0JICAgICAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoZGVzdCwgc3Jj KTsKLSsJICAgICAgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoZGVzdCwgc3JjLCAiIiwgIiIsIDAp OwotIAkgICAgfQotIAkgIC8qIFRoZSAiKyAyIiBpcyBmb3IgdGhlICI6OiIuICAqLwotIAkgIHBy ZXZpb3VzX2NvbXBvbmVudCA9IG5leHRfY29tcG9uZW50ICsgMjsKLUBAIC0xMzQsNyArMTM3LDgg QEAgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wg KnN5bWJvbCkKLSAgICBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLCBkb24ndCBhZGQgaXQgdHdpY2Uu ICAqLwotIAotIHZvaWQKLS1jcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChjb25zdCBjaGFyICpkZXN0 LCBjb25zdCBjaGFyICpzcmMpCi0rY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hhciAq ZGVzdCwgY29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyKiBhbGlhcywKLSsJCQljb25zdCBjaGFy ICpkZWNsYXJhdGlvbiwgY29uc3QgaW50IGxpbmVfbnVtYmVyKQotIHsKLSAgIHN0cnVjdCB1c2lu Z19kaXJlY3QgKmN1cnJlbnQ7Ci0gICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpuZXc7Ci1AQCAtMTQ4 LDcgKzE1Miw4IEBAIGNwX2FkZF91c2luZ19kaXJlY3RpdmUgKGNvbnN0IGNoYXIgKmRlc3QsIGNv bnN0IGNoYXIgKnNyYykKLSAJcmV0dXJuOwotICAgICB9Ci0gCi0tICB1c2luZ19kaXJlY3RpdmVz ID0gY3BfYWRkX3VzaW5nIChkZXN0LCBzcmMsIHVzaW5nX2RpcmVjdGl2ZXMpOwotKyAgdXNpbmdf ZGlyZWN0aXZlcyA9IGNwX2FkZF91c2luZyAoZGVzdCwgc3JjLCBhbGlhcywgZGVjbGFyYXRpb24s Ci0rCQkJCSAgIGxpbmVfbnVtYmVyLCB1c2luZ19kaXJlY3RpdmVzKTsKLSAKLSB9CitkaWZmIC0t Z2l0IGEvZ2RiL2RieHJlYWQuYyBiL2dkYi9kYnhyZWFkLmMKK2luZGV4IDgxNmEzNTUuLmU5ZjU2 ZjkgMTAwNjQ0CistLS0gYS9nZGIvZGJ4cmVhZC5jCisrKysgYi9nZGIvZGJ4cmVhZC5jCitAQCAt MzU3MCw2ICszNTcwLDcgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5zIGFvdXRfc3ltX2ZucyA9Cisg ICBkYnhfbmV3X2luaXQsCQkvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhpbmcgZ2JsIHRvIGVu dGlyZSBzeW10YWIgKi8KKyAgIGRieF9zeW1maWxlX2luaXQsCS8qIHN5bV9pbml0OiByZWFkIGlu aXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KKyAgIGRieF9zeW1maWxlX3JlYWQs CQkvKiBzeW1fcmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCisrICBOVUxM LAkJCQkvKiBzeW1fcmVhZF9wc3ltYm9scyAqLworICAgZGJ4X3N5bWZpbGVfZmluaXNoLAkJLyog c3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCisgICBkZWZhdWx0X3N5 bWZpbGVfb2Zmc2V0cywgLyogc3ltX29mZnNldHM6IHBhcnNlIHVzZXIncyBvZmZzZXRzIHRvCisg CQkJICAgICAgaW50ZXJuYWwgZm9ybSAqLworZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiLnRleGlu Zm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitpbmRleCAyNTNlMjUxLi42ZDczZmM1IDEwMDY0NAor LS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbworQEAg LTk2Miw4ICs5NjIsMTAgQEAgQ29ubmVjdCB0byBwcm9jZXNzIElEIEB2YXJ7bnVtYmVyfSwgYXMg d2l0aCB0aGUgQGNvZGV7YXR0YWNofSBjb21tYW5kLgorIEBpdGVteCAteCBAdmFye2ZpbGV9Cisg QGNpbmRleCBAY29kZXstLWNvbW1hbmR9CisgQGNpbmRleCBAY29kZXsteH0KKy1FeGVjdXRlIEB2 YWx1ZXtHREJOfSBjb21tYW5kcyBmcm9tIGZpbGUgQHZhcntmaWxlfS4gIEB4cmVme0NvbW1hbmQK Ky1GaWxlcywsIENvbW1hbmQgZmlsZXN9LgorK0V4ZWN1dGUgY29tbWFuZHMgZnJvbSBmaWxlIEB2 YXJ7ZmlsZX0uICBJZiBAdmFye2ZpbGV9IGVuZHMgaW4KKytAc2FtcHsucHl9LCB0aGVuIHRoZSBm aWxlIGlzIGV2YWx1YXRlZCBhcyBQeXRob24gY29kZS4gIElmIFB5dGhvbgorK3N1cHBvcnQgaXMg bm90IGVuYWJsZWQgaW4gdGhpcyBAdmFsdWV7R0RCTn0sIHRoZW4gYW4gZXJyb3Igb2NjdXJzLgor K0B4cmVme0NvbW1hbmQgRmlsZXMsLCBDb21tYW5kIGZpbGVzfS4KICAKLUBAIC0yMDEsNyArMjA2 LDEwIEBAIGNwX2lzX2Fub255bW91cyAoY29uc3QgY2hhciAqbmFtZXNwYWNlKQotIH0KKyBAaXRl bSAtZXZhbC1jb21tYW5kIEB2YXJ7Y29tbWFuZH0KKyBAaXRlbXggLWV4IEB2YXJ7Y29tbWFuZH0K K0BAIC0xMTU1LDYgKzExNTcsMTYgQEAgZm9yIHJlbW90ZSBkZWJ1Z2dpbmcuCisgUnVuIHVzaW5n IEB2YXJ7ZGV2aWNlfSBmb3IgeW91ciBwcm9ncmFtJ3Mgc3RhbmRhcmQgaW5wdXQgYW5kIG91dHB1 dC4KKyBAYyBGSVhNRToga2luZ2RvbiB0aGlua3MgdGhlcmUgaXMgbW9yZSB0byAtdHR5LiAgSW52 ZXN0aWdhdGUuCiAgCi0gLyogQ3JlYXRlIGEgbmV3IHN0cnVjdCB1c2luZyBkaXJlY3Qgd2hpY2gg aW1wb3J0cyB0aGUgbmFtZXNwYWNlIFNSQwotLSAgIGludG8gdGhlIHNjb3BlIERFU1QuCi0rICAg aW50byB0aGUgc2NvcGUgREVTVC4gIEFMSUFTIGlzIHRoZSBuYW1lIG9mIHRoZSBpbXBvcnRlZCBu YW1lc3BhY2UKLSsgICBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIEFMSUFTIGlzIGFuIGVtcHR5 IHN0cmluZyAgdGhlbiB0aGUKLSsgICBuYW1lc3BhY2UgaXMga25vd24gYnkgaXRzIG9yaWdpbmFs IG5hbWUuCi0rCi0gICAgU2V0IGl0cyBuZXh0IG1lbWJlciBpbiB0aGUgbGlua2VkIGxpc3QgdG8g TkVYVDsgYWxsb2NhdGUgYWxsIG1lbW9yeQotICAgIHVzaW5nIHhtYWxsb2MuICBJdCBjb3BpZXMg dGhlIHN0cmluZ3MsIHNvIE5BTUUgY2FuIGJlIGEgdGVtcG9yYXJ5Ci0gICAgc3RyaW5nLiAgKi8K LUBAIC0yMDksMTQgKzIxNywyMSBAQCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVz cGFjZSkKLSBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICoKLSBjcF9hZGRfdXNpbmcgKGNvbnN0IGNoYXIg KmRlc3QsCi0gICAgICAgICAgICAgICBjb25zdCBjaGFyICpzcmMsCi0rICAgICAgICAgICAgICBj b25zdCBjaGFyICphbGlhcywKLSsgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9u LAotKyAgICAgICAgICAgICAgY29uc3QgaW50IGxpbmVfbnVtYmVyLAotIAkgICAgICBzdHJ1Y3Qg dXNpbmdfZGlyZWN0ICpuZXh0KQotIHsKLSAgIHN0cnVjdCB1c2luZ19kaXJlY3QgKnJldHZhbDsK LSAKLSAgIHJldHZhbCA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHVzaW5nX2RpcmVjdCkpOwot LSAgcmV0dmFsLT5pbXBvcnRfc3JjID0gc2F2ZXN0cmluZyAoc3JjLCBzdHJsZW4oc3JjKSk7Ci0t ICByZXR2YWwtPmltcG9ydF9kZXN0ID0gc2F2ZXN0cmluZyAoZGVzdCwgc3RybGVuKGRlc3QpKTsK LSsgIHJldHZhbC0+aW1wb3J0X3NyYyA9IHNhdmVzdHJpbmcgKHNyYywgc3RybGVuIChzcmMpKTsK LSsgIHJldHZhbC0+aW1wb3J0X2Rlc3QgPSBzYXZlc3RyaW5nIChkZXN0LCBzdHJsZW4gKGRlc3Qp KTsKLSsgIHJldHZhbC0+YWxpYXMgPSBzYXZlc3RyaW5nIChhbGlhcywgc3RybGVuIChhbGlhcykp OwotKyAgcmV0dmFsLT5kZWNsYXJhdGlvbiA9IHNhdmVzdHJpbmcgKGRlY2xhcmF0aW9uLCBzdHJs ZW4gKGRlY2xhcmF0aW9uKSk7Ci0rICByZXR2YWwtPmxpbmVfbnVtYmVyID0gbGluZV9udW1iZXI7 Ci0gICByZXR2YWwtPm5leHQgPSBuZXh0OwotKyAgcmV0dmFsLT5zZWFyY2hlZCA9IDA7CisrQGl0 ZW0gLVAKKytAY2luZGV4IEBjb2Rley1QfQorK0BpdGVteCAtLXB5dGhvbgorK0BjaW5kZXggQGNv ZGV7LS1weXRob259CisrQ2hhbmdlIGludGVycHJldGF0aW9uIG9mIGNvbW1hbmQgbGluZSBzbyB0 aGF0IHRoZSBhcmd1bWVudCBpbW1lZGlhdGVseQorK2ZvbGxvd2luZyB0aGlzIHN3aXRjaCBpcyB0 YWtlbiB0byBiZSB0aGUgbmFtZSBvZiBhIFB5dGhvbiBzY3JpcHQgZmlsZS4KKytUaGlzIG9wdGlv biBzdG9wcyBvcHRpb24gcHJvY2Vzc2luZzsgc3Vic2VxdWVudCBvcHRpb25zIGFyZSBwYXNzZWQg dG8KKytQeXRob24gYXMgQGNvZGV7c3lzLmFyZ3Z9LiAgVGhpcyBvcHRpb24gaXMgb25seSBhdmFp bGFibGUgaWYgUHl0aG9uCisrc2NyaXB0aW5nIHN1cHBvcnQgd2FzIGVuYWJsZWQgd2hlbiBAdmFs dWV7R0RCTn0gd2FzIGNvbmZpZ3VyZWQuCisrCisgQGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9m IHRoZXNlIGV2ZW50dWFsbHkKKyBAaXRlbSAtdHVpCisgQGNpbmRleCBAY29kZXstLXR1aX0KK0BA IC0xOTEwMSw3ICsxOTExMyw3IEBAIGNvbW1hbmQ6CisgQHRhYmxlIEBjb2RlCisgQGtpbmRleCBz b3VyY2UKKyBAY2luZGV4IGV4ZWN1dGUgY29tbWFuZHMgZnJvbSBhIGZpbGUKKy1AaXRlbSBzb3Vy Y2UgW0Bjb2Rley12fV0gQHZhcntmaWxlbmFtZX0KKytAaXRlbSBzb3VyY2UgW0Bjb2Rley12fV0g W0Bjb2Rley1wfV0gQHZhcntmaWxlbmFtZX0KKyBFeGVjdXRlIHRoZSBjb21tYW5kIGZpbGUgQHZh cntmaWxlbmFtZX0uCisgQGVuZCB0YWJsZQogIAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci1AQCAt MjQxLDEwICsyNTYsMTggQEAgY3BfY29weV91c2luZ3MgKHN0cnVjdCB1c2luZ19kaXJlY3QgKnVz aW5nLAotIAkJCQkgICAgb2JzdGFjayk7Ci0gICAgICAgcmV0dmFsLT5pbXBvcnRfZGVzdCA9IG9i c2F2ZXN0cmluZyAodXNpbmctPmltcG9ydF9kZXN0LCBzdHJsZW4gKHVzaW5nLT5pbXBvcnRfZGVz dCksCi0gCQkJCSAgICBvYnN0YWNrKTsKLSsgICAgICByZXR2YWwtPmFsaWFzID0gb2JzYXZlc3Ry aW5nICh1c2luZy0+YWxpYXMsIHN0cmxlbiAodXNpbmctPmFsaWFzKSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBvYnN0YWNrKTsKLSsgICAgICByZXR2YWwtPmRlY2xhcmF0 aW9uID0gb2JzYXZlc3RyaW5nICh1c2luZy0+ZGVjbGFyYXRpb24sIHN0cmxlbiAodXNpbmctPmRl Y2xhcmF0aW9uKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnN0YWNr KTsKLSAgICAgICByZXR2YWwtPm5leHQgPSBjcF9jb3B5X3VzaW5ncyAodXNpbmctPm5leHQsIG9i c3RhY2spOwotIAotKyAgICAgIHJldHZhbC0+c2VhcmNoZWQgPSB1c2luZy0+c2VhcmNoZWQ7Ci0r Ci0gICAgICAgeGZyZWUgKHVzaW5nLT5pbXBvcnRfc3JjKTsKLSAgICAgICB4ZnJlZSAodXNpbmct PmltcG9ydF9kZXN0KTsKLSsgICAgICB4ZnJlZSAodXNpbmctPmFsaWFzKTsKLSsgICAgICB4ZnJl ZSAodXNpbmctPmRlY2xhcmF0aW9uKTsKLSAgICAgICB4ZnJlZSAodXNpbmcpOwotIAotICAgICAg IHJldHVybiByZXR2YWw7Ci1AQCAtMjYxLDEyICsyODQsNDggQEAgY3BfY29weV91c2luZ3MgKHN0 cnVjdCB1c2luZ19kaXJlY3QgKnVzaW5nLAotIAotIHN0cnVjdCBzeW1ib2wgKgotIGNwX2xvb2t1 cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJICAgY29uc3QgY2hhciAq bGlua2FnZV9uYW1lLAotIAkJCSAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJICAg Y29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLS0gIHJldHVybiBsb29rdXBfbmFtZXNwYWNl X3Njb3BlIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLCBkb21haW4sCi0tCQkJCSBibG9ja19z Y29wZSAoYmxvY2spLCAwKTsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bTsgCi0rICBjb25zdCBjaGFy ICpzY29wZSA9IGJsb2NrX3Njb3BlIChibG9jayk7Ci0rCi0rICBzeW0gPSBsb29rdXBfbmFtZXNw YWNlX3Njb3BlIChuYW1lLCBibG9jaywgZG9tYWluLCBzY29wZSwgMCk7Ci0rICBpZiAoc3ltICE9 IE5VTEwpCi0rICAgIHJldHVybiBzeW07Ci0rCi0rICByZXR1cm4gY3BfbG9va3VwX3N5bWJvbF9u YW1lc3BhY2Uoc2NvcGUsIG5hbWUsIGJsb2NrLCBkb21haW4pOwotK30KLSsKLSsvKiBTZWFyY2hl cyBmb3IgTkFNRSBpbiB0aGUgY3VycmVudCBuYW1lc3BhY2UsIGFuZCBieSBhcHBseWluZyByZWxl dmFudCBpbXBvcnQKLSsgICBzdGF0ZW1lbnRzIGJlbG9uZ2luZyB0byBCTE9DSyBhbmQgaXRzIHBh cmVudHMuICBTQ09QRSBpcyB0aGUgbmFtZXNwYWNlCi0rICAgc2NvcGUgb2YgdGhlIGNvbnRleHQg aW4gd2hpY2ggdGhlIHNlYXJjaCBpcyBiZWluZyBldmFsdWF0ZWQuICAqLwotKwotK3N0cnVjdCBz eW1ib2wqCi0rY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIgKnNjb3BlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0rewotKyAgc3Ry dWN0IHN5bWJvbCAqc3ltOwotKwotKyAgLyogRmlyc3QsIHRyeSB0byBmaW5kIHRoZSBzeW1ib2wg aW4gdGhlIGdpdmVuIG5hbWVzcGFjZS4gICovCi0rICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2lu X25hbWVzcGFjZSAoc2NvcGUsIG5hbWUsIGJsb2NrLCBkb21haW4pOwotKyAgaWYgKCBzeW0gIT0g TlVMTCkKLSsgICAgcmV0dXJuIHN5bTsKLSsgICAgCi0rICAvKiBTZWFyY2ggZm9yIG5hbWUgaW4g bmFtZXNwYWNlcyBpbXBvcnRlZCB0byB0aGlzIGFuZCBwYXJlbnQgYmxvY2tzLiAgKi8KLSsgIHdo aWxlIChibG9jayAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgc3ltID0gY3BfbG9va3VwX3N5bWJv bF9pbXBvcnRzKHNjb3BlLG5hbWUsIGJsb2NrLCBkb21haW4sMCwxKTsKLSsKLSsgICAgICBpZiAo c3ltKQotKyAgICAgICAgcmV0dXJuIHN5bTsKLSsKLSsgICAgICBibG9jayA9IEJMT0NLX1NVUEVS QkxPQ0soYmxvY2spOwotKyAgICB9Ci0rCi0rICByZXR1cm4gTlVMTDsKLSB9Ci0gCi0gLyogTG9v a3VwIE5BTUUgYXQgbmFtZXNwYWNlIHNjb3BlIChvciwgaW4gQyB0ZXJtcywgaW4gc3RhdGljIGFu ZAotQEAgLTI4NCw5ICszNDMsOCBAQCBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBj aGFyICpuYW1lLAotICAgICJBOjp4IiwgYW5kIGlmIHRoYXQgY2FsbCBmYWlscywgdGhlbiB0aGUg Zmlyc3QgY2FsbCBsb29rcyBmb3IKLSAgICAieCIuICAqLwotIAotLXN0YXRpYyBzdHJ1Y3Qgc3lt Ym9sICoKLStzdHJ1Y3Qgc3ltYm9sICoKLSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBj aGFyICpuYW1lLAotLQkJCWNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQljb25zdCBzdHJ1 Y3QgYmxvY2sgKmJsb2NrLAotIAkJCWNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKLSAJCQljb25z dCBjaGFyICpzY29wZSwKLUBAIC0zMDgsOCArMzY2LDcgQEAgbG9va3VwX25hbWVzcGFjZV9zY29w ZSAoY29uc3QgY2hhciAqbmFtZSwKLSAJICBuZXdfc2NvcGVfbGVuICs9IDI7Ci0gCX0KLSAgICAg ICBuZXdfc2NvcGVfbGVuICs9IGNwX2ZpbmRfZmlyc3RfY29tcG9uZW50IChzY29wZSArIG5ld19z Y29wZV9sZW4pOwotLSAgICAgIHN5bSA9IGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKG5hbWUsIGxp bmthZ2VfbmFtZSwgYmxvY2ssCi0tCQkJCSAgICBkb21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVu KTsKLSsgICAgICBzeW0gPSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBibG9jaywgZG9t YWluLCBzY29wZSwgbmV3X3Njb3BlX2xlbik7Ci0gICAgICAgaWYgKHN5bSAhPSBOVUxMKQotIAly ZXR1cm4gc3ltOwotICAgICB9Ci1AQCAtMzIwLDI1ICszNzcsOTggQEAgbG9va3VwX25hbWVzcGFj ZV9zY29wZSAoY29uc3QgY2hhciAqbmFtZSwKLSAgIG5hbWVzcGFjZSA9IGFsbG9jYSAoc2NvcGVf bGVuICsgMSk7Ci0gICBzdHJuY3B5IChuYW1lc3BhY2UsIHNjb3BlLCBzY29wZV9sZW4pOwotICAg bmFtZXNwYWNlW3Njb3BlX2xlbl0gPSAnXDAnOwotLSAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xf bmFtZXNwYWNlIChuYW1lc3BhY2UsIG5hbWUsIGxpbmthZ2VfbmFtZSwKLS0JCQkJICAgICBibG9j aywgZG9tYWluKTsKLSsgIHJldHVybiBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAobmFt ZXNwYWNlLCBuYW1lLGJsb2NrLCBkb21haW4pOwotIH0KLSAKLS0vKiBMb29rIHVwIE5BTUUgaW4g dGhlIEMrKyBuYW1lc3BhY2UgTkFNRVNQQUNFLCBhcHBseWluZyB0aGUgdXNpbmcKLS0gICBkaXJl Y3RpdmVzIHRoYXQgYXJlIGFjdGl2ZSBpbiBCTE9DSy4gIE90aGVyIGFyZ3VtZW50cyBhcmUgYXMg aW4KLSsvKiBMb29rIHVwIE5BTUUgaW4gdGhlIEMrKyBuYW1lc3BhY2UgTkFNRVNQQUNFLiBPdGhl ciBhcmd1bWVudHMgYXJlIGFzIGluCi0gICAgY3BfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICov Ci0gCi0rc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotK2NwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNw YWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUs Ci0rCQkJICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rCQkJICAgICAgIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbikKLSt7Ci0rCi0rICBpZiAobmFtZXNwYWNlWzBdID09ICdcMCcp Ci0rICAgIHsKLSsgICAgICByZXR1cm4gbG9va3VwX3N5bWJvbF9maWxlIChuYW1lLCBibG9jayxk b21haW4sIDApOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICpjb25jYXRl bmF0ZWRfbmFtZQotKwk9IGFsbG9jYSAoc3RybGVuIChuYW1lc3BhY2UpICsgMiArIHN0cmxlbiAo bmFtZSkgKyAxKTsKLSsgICAgICBzdHJjcHkgKGNvbmNhdGVuYXRlZF9uYW1lLCBuYW1lc3BhY2Up OwotKyAgICAgIHN0cmNhdCAoY29uY2F0ZW5hdGVkX25hbWUsICI6OiIpOwotKyAgICAgIHN0cmNh dCAoY29uY2F0ZW5hdGVkX25hbWUsIG5hbWUpOwotKyAgICAgIHJldHVybiBsb29rdXBfc3ltYm9s X2ZpbGUgKGNvbmNhdGVuYXRlZF9uYW1lLCBibG9jaywgZG9tYWluLAotKwkJCQljcF9pc19hbm9u eW1vdXMgKG5hbWVzcGFjZSkpOwotKyAgICB9Ci0rfQotKwotKy8qIFVzZWQgZm9yIGNsZWFudXBz IHRvIHJlc2V0IHRoZSAic2VhcmNoZWQiIGZsYWcgaW5jYXNlCi0rICAgb2YgYW4gZXJyb3IuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rcmVzZXRfZGlyZWN0aXZlX3NlYXJjaGVkICh2b2lkICpkYXRh KQotK3sKLSsgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmRpcmVjdCA9IGRhdGE7Ci0rICBkaXJlY3Qt PnNlYXJjaGVkID0gMDsKLSt9Ci0rCi0rLyogU2VhcmNoIGZvciBOQU1FIGJ5IGFwcGx5aW5nIGFs bCBpbXBvcnQgc3RhdGVtZW50cyBiZWxvbmdpbmcKLSsgICB0byBCTE9DSyB3aGljaCBhcmUgYXBw bGljYWJsZSBpbiBTQ09QRS4gSWYgREVDTEFSQVRJT05fT05MWSB0aGUgc2VhcmNoCi0rICAgaXMg cmVzdHJpY3RlZCB0byB1c2luZyBkZWNsYXJhdGlvbnMuCi0rICAgRXhhbXBsZToKLSsKLSsgICAg IG5hbWVzcGFjZSBBewotKyAgICAgICBpbnQgeDsKLSsgICAgIH0KLSsgICAgIHVzaW5nIEE6Ong7 Ci0rCi0rICAgSWYgU0VBUkNIX1BBUkVOVFMgdGhlIHNlYXJjaCB3aWxsIGluY2x1ZGUgaW1wb3J0 cyB3aGljaCBhcmUgYXBwbGljYWJsZSBpbgotKyAgIHBhcmVudHMgb2Ygc2NvcGVzLgotKyAgIEV4 YW1wbGU6Ci0rCi0rICAgICBuYW1lc3BhY2UgQXsKLSsgICAgICAgdXNpbmcgbmFtZXNwYWNlIFg7 Ci0rICAgICAgIG5hbWVzcGFjZSBCewotKyAgICAgICAgIHVzaW5nIG5hbWVzcGFjZSBZOwotKyAg ICAgICB9Ci0rICAgICB9Ci0rCi0rICAgSWYgU0NPUEUgaXMgIkE6OkIiIGFuZCBTRUFSQ0hfUEFS RU5UUyBpcyB0cnVlIHRoZSBpbXBvcnRzIG9mIG5hbWVzcGFjZXMgWAotKyAgIGFuZCBZIHdpbGwg YmUgY29uc2lkZXJlZC4gSWYgU0VBUkNIX1BBUkVOVFMgaXMgZmFsc2Ugb25seSB0aGUgaW1wb3J0 IG9mIFkKLSsgICBpcyBjb25zaWRlcmVkLiAgKi8KLSsKLSBzdHJ1Y3Qgc3ltYm9sICoKLS1jcF9s b29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAotLQkJCSAgICBj b25zdCBjaGFyICpuYW1lLAotLQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0tCQkJ ICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0tCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbikKLStjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNoYXIgKnNjb3BlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25fb25seSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgIGludCBzZWFyY2hfcGFyZW50cykKLSB7Ci0tICBjb25zdCBzdHJ1Y3QgdXNpbmdfZGlyZWN0 ICpjdXJyZW50OwotLSAgc3RydWN0IHN5bWJvbCAqc3ltOwotKyAgc3RydWN0IHVzaW5nX2RpcmVj dCAqY3VycmVudDsKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IE5VTEw7Ci0rICBpbnQgZGlyZWN0 aXZlX21hdGNoOwotKyAgaW50IGN1cnJlbnRfbGluZTsKLSsgIHN0cnVjdCBjbGVhbnVwICpzZWFy Y2hlZF9jbGVhbnVwOwotKwotKyAgaWYoIWRlY2xhcmF0aW9uX29ubHkpCi0rICAgIC8qIEZpcnN0 LCB0cnkgdG8gZmluZCB0aGUgc3ltYm9sIGluIHRoZSBnaXZlbiBuYW1lc3BhY2UuICAqLwotKyAg ICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoc2NvcGUsIG5hbWUsIGJsb2Nr LCBkb21haW4pOwotIAotLSAgLyogRmlyc3QsIGdvIHRocm91Z2ggdGhlIHVzaW5nIGRpcmVjdGl2 ZXMuICBJZiBhbnkgb2YgdGhlbSBhZGQgbmV3Ci0rICBpZiAoIHN5bSAhPSBOVUxMKQotKyAgICBy ZXR1cm4gc3ltOwotKwotKyAgaWYgKGhhc19zdGFja19mcmFtZXMgKCkpCi0rICAgIGN1cnJlbnRf bGluZSA9IGZpbmRfcGNfbGluZSAoZ2V0X2ZyYW1lX3BjIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5V TEwpKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCku bGluZTsKLSsgIGVsc2UKLSsgICAgY3VycmVudF9saW5lID0gMDsKLSsKLSsgIC8qIEdvIHRocm91 Z2ggdGhlIHVzaW5nIGRpcmVjdGl2ZXMuICBJZiBhbnkgb2YgdGhlbSBhZGQgbmV3Ci0gICAgICBu YW1lcyB0byB0aGUgbmFtZXNwYWNlIHdlJ3JlIHNlYXJjaGluZyBpbiwgc2VlIGlmIHdlIGNhbiBm aW5kIGEKLSAgICAgIG1hdGNoIGJ5IGFwcGx5aW5nIHRoZW0uICAqLwotIAotQEAgLTM0NiwzOSAr NDc2LDc4IEBAIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3Bh Y2UsCi0gICAgICAgIGN1cnJlbnQgIT0gTlVMTDsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnQt Pm5leHQpCi0gICAgIHsKLS0gICAgICBpZiAoc3RyY21wIChuYW1lc3BhY2UsIGN1cnJlbnQtPmlt cG9ydF9kZXN0KSA9PSAwKQotKyAgCi0rICAgICAgLyogSWYgdGhlIGltcG9ydCBkZXN0aW5hdGlv biBpcyB0aGUgY3VycmVudCBzY29wZSBvciBvbmUgb2YgaXRzIGFuY2VzdG9ycyB0aGVuCi0rICAg ICAgICAgaXQgaXMgYXBwbGljYWJsZS4gICovCi0rICAgICAgZGlyZWN0aXZlX21hdGNoID0gc2Vh cmNoX3BhcmVudHMgPwotKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cm5jbXAgKHNjb3BlLCBj dXJyZW50LT5pbXBvcnRfZGVzdCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJsZW4oY3VycmVudC0+aW1wb3J0X2Rlc3QpKSA9PSAwIDoKLSsgICAgICAgICAgICAgICAgICAg ICAgICBzdHJjbXAgKHNjb3BlLCBjdXJyZW50LT5pbXBvcnRfZGVzdCkgPT0gMDsKLSsKLSsgICAg ICBpZiAoZGlyZWN0aXZlX21hdGNoICYmCi0rICAgICAgICAgIGN1cnJlbnQtPmxpbmVfbnVtYmVy IDwgY3VycmVudF9saW5lICYmCi0rICAgICAgICAgICFjdXJyZW50LT5zZWFyY2hlZCkKLSAJewot LQkgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjdXJyZW50LT5pbXBvcnRfc3Jj LAotLQkJCQkJICAgIG5hbWUsCi0tCQkJCQkgICAgbGlua2FnZV9uYW1lLAotLQkJCQkJICAgIGJs b2NrLAotLQkJCQkJICAgIGRvbWFpbik7Ci0rCSAgY3VycmVudC0+c2VhcmNoZWQgPSAxOwotKwkg IHNlYXJjaGVkX2NsZWFudXAgPSBtYWtlX2NsZWFudXAgKHJlc2V0X2RpcmVjdGl2ZV9zZWFyY2hl ZCwgY3VycmVudCk7Ci0rCi0rCSAgLyogSWYgdGhlcmUgaXMgYW4gaW1wb3J0IG9mIGEgc2luZ2xl IGRlY2xhcmF0aW9uLCBjb21wYXJlIHRoZSBpbXBvcnRlZAotKwkgICAgIGRlY2xhcmF0aW9uIHdp dGggdGhlIHNvdWdodCBvdXQgbmFtZS4gSWYgdGhlcmUgaXMgYSBtYXRjaCBwYXNzCi0rCSAgICAg Y3VycmVudC0+aW1wb3J0X3NyYyBhcyBOQU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93 YXJkcyB0aGUKLSsJICAgICBpbXBvcnRlZCBuYW1lc3BhY2UuICAqLwotKwkgIGlmIChzdHJjbXAg KCIiLCBjdXJyZW50LT5kZWNsYXJhdGlvbikgIT0gMCkKLSsJICAgIHsKLSsJICAgIGlmIChzdHJj bXAgKG5hbWUsIGN1cnJlbnQtPmRlY2xhcmF0aW9uKSA9PSAwKQotKwkgICAgICB7Ci0rCSAgICAg IHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChjdXJyZW50LT5pbXBvcnRfc3Jj LAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSsJ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluKTsKLSsJICAgICAg fQotKwotKwkgICAgY3VycmVudC0+c2VhcmNoZWQgPSAwOwotKwkgICAgaWYgKHN5bSkKLSsJICAg ICAgcmV0dXJuIHN5bTsKLSsKLSsJICAgIGNvbnRpbnVlOwotKwkgICAgfQotKwkgICAKLSsJICBp ZiAoZGVjbGFyYXRpb25fb25seSkKLSsJICAgIHsKLSsJICAgIGN1cnJlbnQtPnNlYXJjaGVkID0g MDsKLSsJICAgIGRpc2NhcmRfY2xlYW51cHMgKHNlYXJjaGVkX2NsZWFudXApOwotKwkgICAgY29u dGludWU7Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKHN0cmNtcCAobmFtZSwgY3VycmVudC0+YWxpYXMp ID09IDApCi0rCSAgICAvKiBJZiB0aGUgaW1wb3J0IGlzIGNyZWF0aW5nIGFuIGFsaWFzIGFuZCB0 aGUgYWxpYXMgbWF0Y2hlcyB0aGUKLSsJICAgICAgIHNvdWdodCBuYW1lLiBQYXNzIGN1cnJlbnQt PmlubmVyIGFzIHRoZSBOQU1FIHRvIGRpcmVjdCB0aGUKLSsJICAgICAgIHNlYXJjaCB0b3dhcmRz IHRoZSBhbGlhc2VkIG5hbWVzcGFjZSAqLwotKwkgICAgewotKwkgICAgc3ltID0gY3BfbG9va3Vw X3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGN1cnJlbnQtPmltcG9ydF9zcmMsCi0rCSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssCi0rCSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZG9tYWluKTsKLSsJICAgIH0gZWxzZSBpZiAoc3RyY21wICgiIiwg Y3VycmVudC0+YWxpYXMpID09IDApewotKwkgICAgLyogSWYgdGhpcyBpbXBvcnQgc3RhdGVtZW50 IGNyZWF0ZXMgbm8gYWxpYXMsIHBhc3MgY3VycmVudC0+aW5uZXIgYXMKLSsJICAgICAgIE5BTUVT UEFDRSB0byBkaXJlY3QgdGhlIHNlYXJjaCB0b3dhcmRzIHRoZSBpbXBvcnRlZCBuYW1lc3BhY2Uu ICovCi0rCSAgICAgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW1wb3J0cyAoY3VycmVudC0+aW1w b3J0X3NyYywKLSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAot KwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbiwKLSsJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAwLAotKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDApOwotKwkgICAgfQotKwotKwkgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKLSsJ ICBkaXNjYXJkX2NsZWFudXBzIChzZWFyY2hlZF9jbGVhbnVwKTsKLSsKLSAJICBpZiAoc3ltICE9 IE5VTEwpCi0gCSAgICByZXR1cm4gc3ltOwotIAl9Ci0gICAgIH0KLSAKLS0gIC8qIFdlIGRpZG4n dCBmaW5kIGFueXRoaW5nIGJ5IGFwcGx5aW5nIGFueSBvZiB0aGUgdXNpbmcgZGlyZWN0aXZlcwot LSAgICAgdGhhdCBhcmUgc3RpbGwgYXBwbGljYWJsZTsgc28gbGV0J3Mgc2VlIGlmIHdlJ3ZlIGdv dCBhIG1hdGNoCi0tICAgICB1c2luZyB0aGUgY3VycmVudCBuYW1lc3BhY2UuICAqLwotLSAgCi0t ICBpZiAobmFtZXNwYWNlWzBdID09ICdcMCcpCi0tICAgIHsKLS0gICAgICByZXR1cm4gbG9va3Vw X3N5bWJvbF9maWxlIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLAotLQkJCQkgZG9tYWluLCAw KTsKLS0gICAgfQotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgY2hhciAqY29uY2F0ZW5hdGVkX25h bWUKLS0JPSBhbGxvY2EgKHN0cmxlbiAobmFtZXNwYWNlKSArIDIgKyBzdHJsZW4gKG5hbWUpICsg MSk7Ci0tICAgICAgc3RyY3B5IChjb25jYXRlbmF0ZWRfbmFtZSwgbmFtZXNwYWNlKTsKLS0gICAg ICBzdHJjYXQgKGNvbmNhdGVuYXRlZF9uYW1lLCAiOjoiKTsKLS0gICAgICBzdHJjYXQgKGNvbmNh dGVuYXRlZF9uYW1lLCBuYW1lKTsKLS0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2ZpbGUgKGNv bmNhdGVuYXRlZF9uYW1lLCBsaW5rYWdlX25hbWUsCi0tCQkJCWJsb2NrLCBkb21haW4sIAotLQkJ CQljcF9pc19hbm9ueW1vdXMgKG5hbWVzcGFjZSkpOwotLSAgICAgIHJldHVybiBzeW07Ci0tICAg IH0KLSsgIHJldHVybiBOVUxMOwotIH0KLSAKLSAvKiBMb29rIHVwIE5BTUUgaW4gQkxPQ0sncyBz dGF0aWMgYmxvY2sgYW5kIGluIGdsb2JhbCBibG9ja3MuICBJZgotQEAgLTM4OCwxNyArNTU3LDE1 IEBAIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0g Ci0gc3RhdGljIHN0cnVjdCBzeW1ib2wgKgotIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hh ciAqbmFtZSwKLS0JCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgY29uc3Qg c3RydWN0IGJsb2NrICpibG9jaywKLSAJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCi0g CQkgICAgaW50IGFub255bW91c19uYW1lc3BhY2UpCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3lt ID0gTlVMTDsKLSAKLS0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfc3RhdGljIChuYW1lLCBsaW5rYWdl X25hbWUsIGJsb2NrLCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9zdGF0aWMgKG5h bWUsIGJsb2NrLCBkb21haW4pOwotICAgaWYgKHN5bSAhPSBOVUxMKQotICAgICByZXR1cm4gc3lt OwotLQotICAgaWYgKGFub255bW91c19uYW1lc3BhY2UpCi0gICAgIHsKLSAgICAgICAvKiBTeW1i b2xzIGRlZmluZWQgaW4gYW5vbnltb3VzIG5hbWVzcGFjZXMgaGF2ZSBleHRlcm5hbCBsaW5rYWdl Ci1AQCAtNDA4LDEyICs1NzUsMTEgQEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpu YW1lLAotICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqZ2xvYmFsX2Jsb2NrID0gYmxvY2tfZ2xv YmFsX2Jsb2NrIChibG9jayk7Ci0gICAgICAgCi0gICAgICAgaWYgKGdsb2JhbF9ibG9jayAhPSBO VUxMKQotLQlzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgbGlua2FnZV9uYW1l LCBnbG9iYWxfYmxvY2ssCi0tCQkJCSAgICAgICBkb21haW4pOwotKwlzeW0gPSBsb29rdXBfc3lt Ym9sX2F1eF9ibG9jayAobmFtZSwgZ2xvYmFsX2Jsb2NrLCBkb21haW4pOwotICAgICB9Ci0gICBl bHNlCi0gICAgIHsKLS0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2dsb2JhbCAobmFtZSwgbGlu a2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2ds b2JhbCAobmFtZSwgYmxvY2ssIGRvbWFpbik7Ci0gICAgIH0KLSAKLSAgIGlmIChzeW0gIT0gTlVM TCkKLUBAIC00MzQsNiArNjAwLDcgQEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFyICpu YW1lLAotICAgICAgIHN5bSA9IGxvb2t1cF9wb3NzaWJsZV9uYW1lc3BhY2Vfc3ltYm9sIChuYW1l KTsKLSAgICAgICBpZiAoc3ltICE9IE5VTEwpCi0gCXJldHVybiBzeW07Ci0rCi0gICAgIH0KLSAK LSAgIHJldHVybiBOVUxMOwotQEAgLTQ2MSw5ICs2MjgsOCBAQCBjcF9sb29rdXBfbmVzdGVkX3R5 cGUgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSwKLSAJICAgbG9va3VwX3N5bWJvbF9uYW1lc3Bh Y2Ugd29ya3Mgd2hlbiBsb29raW5nIHRoZW0gdXAuICAqLwotIAotIAljb25zdCBjaGFyICpwYXJl bnRfbmFtZSA9IFRZUEVfVEFHX05BTUUgKHBhcmVudF90eXBlKTsKLS0Jc3RydWN0IHN5bWJvbCAq c3ltID0gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKHBhcmVudF9uYW1lLAotKwlzdHJ1Y3Qg c3ltYm9sICpzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAocGFyZW50X25hbWUs Ci0gCQkJCQkJCSBuZXN0ZWRfbmFtZSwKLS0JCQkJCQkJIE5VTEwsCi0gCQkJCQkJCSBibG9jaywK LSAJCQkJCQkJIFZBUl9ET01BSU4pOwotIAlpZiAoc3ltID09IE5VTEwgfHwgU1lNQk9MX0NMQVNT IChzeW0pICE9IExPQ19UWVBFREVGKQotQEAgLTcwOSw3ICs4NzUsNyBAQCBjaGVja19vbmVfcG9z c2libGVfbmFtZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwKLSAKLSAg IG1lbWNweSAobmFtZV9jb3B5LCBuYW1lLCBsZW4pOwotICAgbmFtZV9jb3B5W2xlbl0gPSAnXDAn OwotLSAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWVfY29weSwgTlVMTCwg VkFSX0RPTUFJTik7Ci0rICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZV9j b3B5LCBWQVJfRE9NQUlOKTsKLSAKLSAgIGlmIChzeW0gPT0gTlVMTCkKLSAgICAgewotQEAgLTc0 OSw3ICs5MTUsNyBAQCBsb29rdXBfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hh ciAqbmFtZSkKLSAgICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0gCi0gICAgICAgc3ltID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoZ2V0X3Bvc3NpYmxlX25hbWVzcGFjZV9ibG9jayAob2JqZmlsZSks Ci0tCQkJCSBuYW1lLCBOVUxMLCBWQVJfRE9NQUlOKTsKLSsJCQkJIG5hbWUsIFZBUl9ET01BSU4p OwotIAotICAgICAgIGlmIChzeW0gIT0gTlVMTCkKLSAJcmV0dXJuIHN5bTsKLWRpZmYgLS1naXQg YS9nZGIvY3Atc3VwcG9ydC5jIGIvZ2RiL2NwLXN1cHBvcnQuYwotaW5kZXggZjEyZDc4NS4uMjNi MzRjMSAxMDA2NDQKLS0tLSBhL2dkYi9jcC1zdXBwb3J0LmMKLSsrKyBiL2dkYi9jcC1zdXBwb3J0 LmMKLUBAIC0zMiw2ICszMiw5IEBACi0gI2luY2x1ZGUgImJsb2NrLmgiCi0gI2luY2x1ZGUgImNv bXBsYWludHMuaCIKLSAjaW5jbHVkZSAiZ2RidHlwZXMuaCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9u cy5oIgotKyNpbmNsdWRlICJleHByZXNzaW9uLmgiCi0rI2luY2x1ZGUgInZhbHVlLmgiCi0gCi0g I2luY2x1ZGUgInNhZmUtY3R5cGUuaCIKLSAKLUBAIC03MCw2ICs3MywxOCBAQCBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqbWFpbnRfY3BsdXNfY21kX2xpc3QgPSBOVUxMOwotIHN0YXRpYyB2b2lk IG1haW50X2NwbHVzX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KTsKLSBzdGF0aWMg dm9pZCBmaXJzdF9jb21wb25lbnRfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpOwot IAotKy8qIE9wZXJhdG9yIHZhbGlkYXRpb24uCi0rICAgTk9URTogTXVsdGktYnl0ZSBvcGVyYXRv cnMgKHVzdWFsbHkgdGhlIGFzc2lnbm1lbnQgdmFyaWV0eSBvcGVyYXRvcikKLSsgICBtdXN0IGFw cGVhciBiZWZvcmUgdGhlIHNpbmdsZSBieXRlIHZlcnNpb24sIGkuZS4sICIrPSIgYmVmb3JlICIr Ii4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKm9wZXJhdG9yX3Rva2Vuc1tdID0KLSsgIHsKLSsg ICAgIisrIiwgIis9IiwgIisiLCAiLT4qIiwgIi0+IiwgIi0tIiwgIi09IiwgIi0iLCAiKj0iLCAi KiIsICIvPSIsICIvIiwKLSsgICAgIiU9IiwgIiUiLCAiIT0iLCAiPT0iLCAiISIsICImJiIsICI8 PD0iLCAiPDwiLCAiPj49IiwgIj4+IiwKLSsgICAgIjw9IiwgIjwiLCAiPj0iLCAiPiIsICJ+Iiwg IiY9IiwgIiYiLCAifD0iLCAifHwiLCAifCIsICJePSIsICJeIiwKLSsgICAgIj0iLCAiKCkiLCAi W10iLCAiLCIsICJuZXciLCAiZGVsZXRlIgotKyAgICAvKiBuZXdbXSBhbmQgZGVsZXRlW10gcmVx dWlyZSBzcGVjaWFsIHdoaXRlc3BhY2UgaGFuZGxpbmcgKi8KLSsgIH07Ci0rCi0gLyogUmV0dXJu IDEgaWYgU1RSSU5HIGlzIGNsZWFybHkgYWxyZWFkeSBpbiBjYW5vbmljYWwgZm9ybS4gIFRoaXMK LSAgICBmdW5jdGlvbiBpcyBjb25zZXJ2YXRpdmU7IHRoaW5ncyB3aGljaCBpdCBkb2VzIG5vdCBy ZWNvZ25pemUgYXJlCi0gICAgYXNzdW1lZCB0byBiZSBub24tY2Fub25pY2FsLCBhbmQgdGhlIHBh cnNlciB3aWxsIHNvcnQgdGhlbSBvdXQKLUBAIC0xNzUsNyArMTkwLDggQEAgbWFuZ2xlZF9uYW1l X3RvX2NvbXAgKGNvbnN0IGNoYXIgKm1hbmdsZWRfbmFtZSwgaW50IG9wdGlvbnMsCi0gICByZXR1 cm4gcmV0OwotIH0KLSAKLS0vKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGNvbnRhaW5p bmcgbWV0aG9kIFBIWVNOQU1FLiAgKi8KLSsvKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGNsYXNz IG9yIG5hbWVzcGFjZSBjb250YWluaW5nCi0rICAgZnVuY3Rpb24sIG1ldGhvZCwgb3IgdmFyaWFi bGUgUEhZU05BTUUuICAqLwotIAotIGNoYXIgKgotIGNwX2NsYXNzX25hbWVfZnJvbV9waHlzbmFt ZSAoY29uc3QgY2hhciAqcGh5c25hbWUpCi1AQCAtODI1LDkgKzg0MSw5IEBAIHJlYWRfaW5fcHN5 bXRhYnMgKGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKLSAgICAgaWYgKHBzLT5yZWFkaW4pCi0gICAg ICAgY29udGludWU7Ci0gCi0tICAgIGlmICgobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVu Y19uYW1lLCBOVUxMLCAxLCBWQVJfRE9NQUlOKQotKyAgICBpZiAoKGxvb2t1cF9wYXJ0aWFsX3N5 bWJvbCAocHMsIGZ1bmNfbmFtZSwgMSwgVkFSX0RPTUFJTikKLSAJICE9IE5VTEwpCi0tCXx8IChs b29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIE5VTEwsIDAsIFZBUl9ET01BSU4p Ci0rCXx8IChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBmdW5jX25hbWUsIDAsIFZBUl9ET01B SU4pCi0gCSAgICAhPSBOVUxMKSkKLSAgICAgICBwc3ltdGFiX3RvX3N5bXRhYiAocHMpOwotICAg fQotQEAgLTkwOSw2ICs5MjUsMTA3IEBAIGZpcnN0X2NvbXBvbmVudF9jb21tYW5kIChjaGFyICph cmcsIGludCBmcm9tX3R0eSkKLSAKLSBleHRlcm4gaW5pdGlhbGl6ZV9maWxlX2Z0eXBlIF9pbml0 aWFsaXplX2NwX3N1cHBvcnQ7IC8qIC1XbWlzc2luZy1wcm90b3R5cGVzICovCi0gCi0rI2RlZmlu ZSBTS0lQX1NQQUNFKFApCQkJCVwKLSsgIGRvCQkJCQkJXAotKyAgewkJCQkJCVwKLSsgICAgd2hp bGUgKCooUCkgPT0gJyAnIHx8ICooUCkgPT0gJ1x0JykJCVwKLSsgICAgICArKyhQKTsJCQkJCVwK LSsgIH0JCQkJCQlcCi0rICB3aGlsZSAoMCkKLSsKLSsvKiBSZXR1cm5zIHRoZSBsZW5ndGggb2Yg dGhlIG9wZXJhdG9yIG5hbWUgb3IgMCBpZiBJTlBVVCBkb2VzIG5vdAotKyAgIHBvaW50IHRvIGEg dmFsaWQgQysrIG9wZXJhdG9yLiAgSU5QVVQgc2hvdWxkIHN0YXJ0IHdpdGggIm9wZXJhdG9yIi4g ICovCi0raW50Ci0rY3BfdmFsaWRhdGVfb3BlcmF0b3IgKGNvbnN0IGNoYXIgKmlucHV0KQotK3sK LSsgIGludCBpOwotKyAgY2hhciAqY29weTsKLSsgIGNvbnN0IGNoYXIgKnA7Ci0rICBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwcjsKLSsgIHN0cnVjdCB2YWx1ZSAqdmFsOwotKyAgc3RydWN0IGdkYl9l eGNlcHRpb24gZXhjZXB0OwotKyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSsKLSsgIHAg PSBpbnB1dDsKLSsKLSsgIGlmIChzdHJuY21wIChwLCAib3BlcmF0b3IiLCA4KSA9PSAwKQotKyAg ICB7Ci0rICAgICAgaW50IHZhbGlkID0gMDsKLSsgICAgICBwICs9IDg7Ci0rCi0rICAgICAgU0tJ UF9TUEFDRSAocCk7Ci0rICAgICAgZm9yIChpID0gMDsgaSA8IHNpemVvZiAob3BlcmF0b3JfdG9r ZW5zKSAvIHNpemVvZiAob3BlcmF0b3JfdG9rZW5zWzBdKTsKLSsJICAgKytpKQotKwl7Ci0rCSAg aW50IGxlbmd0aCA9IHN0cmxlbiAob3BlcmF0b3JfdG9rZW5zW2ldKTsKLSsJICAvKiBCeSB1c2lu ZyBzdHJuY21wIGhlcmUsIHdlIE1VU1QgaGF2ZSBvcGVyYXRvcl90b2tlbnMgb3JkZXJlZCEKLSsJ ICAgICBTZWUgYWRkaXRpb25hbCBub3RlcyB3aGVyZSBvcGVyYXRvcl90b2tlbnMgaXMgZGVmaW5l ZCBhYm92ZS4gICovCi0rCSAgaWYgKHN0cm5jbXAgKHAsIG9wZXJhdG9yX3Rva2Vuc1tpXSwgbGVu Z3RoKSA9PSAwKQotKwkgICAgewotKwkgICAgICBjb25zdCBjaGFyICpvcCA9IHA7Ci0rCSAgICAg IHZhbGlkID0gMTsKLSsJICAgICAgcCArPSBsZW5ndGg7Ci0rCi0rCSAgICAgIGlmIChzdHJuY21w IChvcCwgIm5ldyIsIDMpID09IDAKLSsJCSAgfHwgc3RybmNtcCAob3AsICJkZWxldGUiLCA2KSA9 PSAwKQotKwkJewotKwotKwkJICAvKiBTcGVjaWFsIGNhc2U6IG5ld1tdIGFuZCBkZWxldGVbXS4g IFdlIG11c3QgYmUgY2FyZWZ1bAotKwkJICAgICB0byBzd2FsbG93IHdoaXRlc3BhY2UgYmVmb3Jl L2luICJbXSIuICAqLwotKwkJICBTS0lQX1NQQUNFIChwKTsKLSsKLSsJCSAgaWYgKCpwID09ICdb JykKLSsJCSAgICB7Ci0rCQkgICAgICArK3A7Ci0rCQkgICAgICBTS0lQX1NQQUNFIChwKTsKLSsJ CSAgICAgIGlmICgqcCA9PSAnXScpCi0rCQkJKytwOwotKwkJICAgICAgZWxzZQotKwkJCXZhbGlk ID0gMDsKLSsJCSAgICB9Ci0rCQl9Ci0rCi0rCSAgICAgIGlmICh2YWxpZCkKLSsJCXJldHVybiAo cCAtIGlucHV0KTsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIC8qIENoZWNrIGlucHV0IGZvciBh IGNvbnZlcnNpb24gb3BlcmF0b3IuICAqLwotKwotKyAgICAgIC8qIFNraXAgcGFzdCBiYXNlIHR5 cGVuYW1lICovCi0rICAgICAgd2hpbGUgKCpwICE9ICcqJyAmJiAqcCAhPSAnJicgJiYgKnAgIT0g MCAmJiAqcCAhPSAnICcpCi0rCSsrcDsKLSsgICAgICBTS0lQX1NQQUNFIChwKTsKLSsKLSsgICAg ICAvKiBBZGQgbW9kaWZpZXJzICcqJy8nJicgKi8KLSsgICAgICB3aGlsZSAoKnAgPT0gJyonIHx8 ICpwID09ICcmJykKLSsJewotKwkgICsrcDsKLSsJICBTS0lQX1NQQUNFIChwKTsKLSsJfQotKwot KyAgICAgIC8qIENoZWNrIGZvciB2YWxpZCB0eXBlLiAgW1JlbWVtYmVyOiBpbnB1dCBzdGFydHMg d2l0aCAKLSsJICJvcGVyYXRvciIuXSAgKi8KLSsgICAgICBjb3B5ID0gc2F2ZXN0cmluZyAoaW5w dXQgKyA4LCBwIC0gaW5wdXQgLSA4KTsKLSsgICAgICBleHByID0gTlVMTDsKLSsgICAgICB2YWwg PSBOVUxMOwotKyAgICAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCi0rCXsK LSsJICBleHByID0gcGFyc2VfZXhwcmVzc2lvbiAoY29weSk7Ci0rCSAgdmFsID0gZXZhbHVhdGVf dHlwZSAoZXhwcik7Ci0rCX0KLSsKLSsgICAgICB4ZnJlZSAoY29weSk7Ci0rICAgICAgaWYgKGV4 cHIpCi0rCXhmcmVlIChleHByKTsKLSsKLSsgICAgICBpZiAodmFsICE9IE5VTEwgJiYgdmFsdWVf dHlwZSAodmFsKSAhPSBOVUxMKQotKwlyZXR1cm4gKHAgLSBpbnB1dCk7Ci0rICAgIH0KLSsKLSsg IHJldHVybiAwOwotK30KLSsKLSB2b2lkCi0gX2luaXRpYWxpemVfY3Bfc3VwcG9ydCAodm9pZCkK LSB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2NwLXN1cHBvcnQuaCBiL2dkYi9jcC1zdXBwb3J0LmgKLWlu ZGV4IGI1YTVjNWYuLjNmNDhmOTggMTAwNjQ0Ci0tLS0gYS9nZGIvY3Atc3VwcG9ydC5oCi0rKysg Yi9nZGIvY3Atc3VwcG9ydC5oCi1AQCAtMzgsMTUgKzM4LDMzIEBAIHN0cnVjdCBkZW1hbmdsZV9j b21wb25lbnQ7Ci0gCi0gLyogVGhpcyBzdHJ1Y3QgaXMgZGVzaWduZWQgdG8gc3RvcmUgZGF0YSBm cm9tIHVzaW5nIGRpcmVjdGl2ZXMuICBJdAotICAgIHNheXMgdGhhdCBuYW1lcyBmcm9tIG5hbWVz cGFjZSBJTVBPUlRfU1JDIHNob3VsZCBiZSB2aXNpYmxlIHdpdGhpbgotLSAgIG5hbWVzcGFjZSBJ TVBPUlRfREVTVC4gSU1QT1JUX0RFU1Qgc2hvdWxkIGFsd2F5cyBiZSBhIHN0cmljdCBpbml0aWFs Ci0tICAgc3Vic3RyaW5nIG9mIElNUE9SVF9TUkMuIFRoZXNlIGZvcm0gYSBsaW5rZWQgbGlzdDsg TkVYVCBpcyB0aGUgbmV4dCBlbGVtZW50Ci0tICAgb2YgdGhlIGxpc3QuICAqLwotKyAgIG5hbWVz cGFjZSBJTVBPUlRfREVTVC4gIElNUE9SVF9ERVNUIHNob3VsZCBhbHdheXMgYmUgYSBzdHJpY3Qg aW5pdGlhbAotKyAgIHN1YnN0cmluZyBvZiBJTVBPUlRfU1JDLiAgVGhlc2UgZm9ybSBhIGxpbmtl ZCBsaXN0OyBORVhUIGlzIHRoZSBuZXh0Ci0rICAgZWxlbWVudCBvZiB0aGUgbGlzdC4gIEFMSUFT IGlzIHNldCB0byBhIG5vbiBlbXB0eSBzdHJpbmcgaWYgdGhlIGltcG9ydGVkCi0rICAgbmFtZXNw YWNlIGhhcyBiZWVuIGFsaWFzZWQuRWc6Ci0rICAgICAgIG5hbWVzcGFjZSBDPUE6OkI7Ci0rICAg QUxJQVMgPSAiQyIKLSsgICBERUNMQVJBVElPTiBpcyB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0ZWQg ZGVjbGFyYXRpb24sIGlmIHRoaXMgaW1wb3J0IAotKyAgIHN0YXRlbWVudCByZXByZXNlbnRzIG9u ZS4gRWc6Ci0rICAgICAgIHVzaW5nIEE6Ong7Ci0rICAgV2hlcmUgeCBpcyB2YXJpYWJsZSBpbiBu YW1lc3BhY2UgQS4gZGVjbGFyYXRpb24gaXMgc2V0IHRvIHguICAKLSsqLwotIAotIHN0cnVjdCB1 c2luZ19kaXJlY3QKLSB7Ci0gICBjaGFyICppbXBvcnRfc3JjOwotICAgY2hhciAqaW1wb3J0X2Rl c3Q7Ci0rCi0rICBjaGFyICphbGlhczsKLSsKLSsgIGNoYXIgKmRlY2xhcmF0aW9uOwotKwotKyAg aW50IGxpbmVfbnVtYmVyOwotKwotICAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV4dDsKLSsKLSsg IC8qIFVzZWQgZHVyaW5nIGltcG9ydCBzZWFyY2ggdG8gdGVtcG9yYXJseSBtYXJrIHRoaXMgbm9k ZSBhcyBzZWFyY2VkLiAgKi8KLSsgIGludCBzZWFyY2hlZDsKLSB9OwotIAotIAotQEAgLTU0LDYg KzcyLDcgQEAgc3RydWN0IHVzaW5nX2RpcmVjdAotIAotIGV4dGVybiBjaGFyICpjcF9jYW5vbmlj YWxpemVfc3RyaW5nIChjb25zdCBjaGFyICpzdHJpbmcpOwotIAotKwotIGV4dGVybiBjaGFyICpj cF9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGNvbnN0IGNoYXIgKnBoeXNuYW1lKTsKLSAKLSBl eHRlcm4gY2hhciAqbWV0aG9kX25hbWVfZnJvbV9waHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25h bWUpOwotQEAgLTcyLDE1ICs5MSwyMyBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqKm1ha2Vfc3lt Ym9sX292ZXJsb2FkX2xpc3QgKGNvbnN0IGNoYXIgKiwKLSBleHRlcm4gc3RydWN0IHR5cGUgKmNw X2xvb2t1cF9ydHRpX3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCQkJCQkgc3RydWN0IGJsb2Nr ICpibG9jayk7Ci0gCi0rZXh0ZXJuIGludCBjcF92YWxpZGF0ZV9vcGVyYXRvciAoY29uc3QgY2hh ciAqaW5wdXQpOwotKwotIC8qIEZ1bmN0aW9ucy92YXJpYWJsZXMgZnJvbSBjcC1uYW1lc3BhY2Uu Yy4gICovCi0gCi0gZXh0ZXJuIGludCBjcF9pc19hbm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVz cGFjZSk7Ci0gCi0gZXh0ZXJuIHZvaWQgY3BfYWRkX3VzaW5nX2RpcmVjdGl2ZSAoY29uc3QgY2hh ciAqZGVzdCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICpzcmMpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIg KnNyYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICph bGlhcywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpk ZWNsYXJhdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQgbGluZV9udW1iZXIpOwotIAotIGV4dGVybiBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjcF9hZGRf dXNpbmcgKGNvbnN0IGNoYXIgKmRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqc3JjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmFsaWFzLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlY2xhcmF0aW9uLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsaW5lX251bWJlciwK LSAJCQkJCSAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV4dCk7Ci0gCi0gZXh0ZXJuIHZvaWQgY3Bf aW5pdGlhbGl6ZV9uYW1lc3BhY2UgKHZvaWQpOwotQEAgLTk3LDE1ICsxMjQsMjAgQEAgZXh0ZXJu IHZvaWQgY3Bfc2V0X2Jsb2NrX3Njb3BlIChjb25zdCBzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsCi0g ZXh0ZXJuIHZvaWQgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVj dCBzeW1ib2wgKnN5bWJvbCk7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9z eW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkJIGNvbnN0IGNoYXIgKmxp bmthZ2VfbmFtZSwKLSAJCQkJCQkgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCQkg Y29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSAKLStzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBf c3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBkb21haW5fZW51bSBk b21haW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVj bGFyYXRpb25fb25seSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCBzZWFyY2hfcGFyZW50cyk7Ci0rCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1 cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCi0tCQkJCQkJICBjb25z dCBjaGFyICpuYW1lLAotLQkJCQkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotLQkJCQkJ CSAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLS0JCQkJCQkgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbik7Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjcF9sb29rdXBfbmVzdGVkX3R5cGUg KHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSwKLSAJCQkJCSAgIGNvbnN0IGNoYXIgKm5lc3RlZF9u YW1lLAotZGlmZiAtLWdpdCBhL2dkYi9kYnhyZWFkLmMgYi9nZGIvZGJ4cmVhZC5jCi1pbmRleCA3 Y2IwMTZkLi5iYjllMzVhIDEwMDY0NAotLS0tIGEvZ2RiL2RieHJlYWQuYwotKysrIGIvZ2RiL2Ri eHJlYWQuYwotQEAgLTM1ODEsNiArMzU4MSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBhb3V0 X3N5bV9mbnMgPQotICAgZGJ4X25ld19pbml0LAkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRo aW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCi0gICBkYnhfc3ltZmlsZV9pbml0LAkvKiBzeW1f aW5pdDogcmVhZCBpbml0aWFsIGluZm8sIHNldHVwIGZvciBzeW1fcmVhZCgpICovCi0gICBkYnhf c3ltZmlsZV9yZWFkLAkJLyogc3ltX3JlYWQ6IHJlYWQgYSBzeW1ib2wgZmlsZSBpbnRvIHN5bXRh YiAqLwotKyAgTlVMTCwJCQkJLyogc3ltX3JlYWRfcHN5bWJvbHMgKi8KLSAgIGRieF9zeW1maWxl X2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwgY2xlYW51cCAqLwot ICAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsIC8qIHN5bV9vZmZzZXRzOiBwYXJzZSB1c2VyJ3Mg b2Zmc2V0cyB0bwotIAkJCSAgICAgIGludGVybmFsIGZvcm0gKi8KLWRpZmYgLS1naXQgYS9nZGIv ZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotaW5kZXggMWY5OGZhNS4uOWUy NDQ4MiAxMDA2NDQKLS0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8KLUBAIC05NTksOCArOTU5LDEwIEBAIENvbm5lY3QgdG8gcHJvY2VzcyBJRCBAdmFy e251bWJlcn0sIGFzIHdpdGggdGhlIEBjb2Rle2F0dGFjaH0gY29tbWFuZC4KLSBAaXRlbXggLXgg QHZhcntmaWxlfQotIEBjaW5kZXggQGNvZGV7LS1jb21tYW5kfQotIEBjaW5kZXggQGNvZGV7LXh9 Ci0tRXhlY3V0ZSBAdmFsdWV7R0RCTn0gY29tbWFuZHMgZnJvbSBmaWxlIEB2YXJ7ZmlsZX0uICBA eHJlZntDb21tYW5kCi0tRmlsZXMsLCBDb21tYW5kIGZpbGVzfS4KLStFeGVjdXRlIGNvbW1hbmRz IGZyb20gZmlsZSBAdmFye2ZpbGV9LiAgSWYgQHZhcntmaWxlfSBlbmRzIGluCi0rQHNhbXB7LnB5 fSwgdGhlbiB0aGUgZmlsZSBpcyBldmFsdWF0ZWQgYXMgUHl0aG9uIGNvZGUuICBJZiBQeXRob24K LStzdXBwb3J0IGlzIG5vdCBlbmFibGVkIGluIHRoaXMgQHZhbHVle0dEQk59LCB0aGVuIGFuIGVy cm9yIG9jY3Vycy4KLStAeHJlZntDb21tYW5kIEZpbGVzLCwgQ29tbWFuZCBmaWxlc30uCi0gCi0g QGl0ZW0gLWV2YWwtY29tbWFuZCBAdmFye2NvbW1hbmR9Ci0gQGl0ZW14IC1leCBAdmFye2NvbW1h bmR9Ci1AQCAtMTE1Miw2ICsxMTU0LDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgotIFJ1biB1 c2luZyBAdmFye2RldmljZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFuZCBv dXRwdXQuCi0gQGMgRklYTUU6IGtpbmdkb24gdGhpbmtzIHRoZXJlIGlzIG1vcmUgdG8gLXR0eS4g IEludmVzdGlnYXRlLgotIAotK0BpdGVtIC1QCi0rQGNpbmRleCBAY29kZXstUH0KLStAaXRlbXgg LS1weXRob24KLStAY2luZGV4IEBjb2Rley0tcHl0aG9ufQotK0NoYW5nZSBpbnRlcnByZXRhdGlv biBvZiBjb21tYW5kIGxpbmUgc28gdGhhdCB0aGUgYXJndW1lbnQgaW1tZWRpYXRlbHkKLStmb2xs b3dpbmcgdGhpcyBzd2l0Y2ggaXMgdGFrZW4gdG8gYmUgdGhlIG5hbWUgb2YgYSBQeXRob24gc2Ny aXB0IGZpbGUuCi0rVGhpcyBvcHRpb24gc3RvcHMgb3B0aW9uIHByb2Nlc3Npbmc7IHN1YnNlcXVl bnQgb3B0aW9ucyBhcmUgcGFzc2VkIHRvCi0rUHl0aG9uIGFzIEBjb2Rle3N5cy5hcmd2fS4gIFRo aXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIFB5dGhvbgotK3NjcmlwdGluZyBzdXBwb3J0 IHdhcyBlbmFibGVkIHdoZW4gQHZhbHVle0dEQk59IHdhcyBjb25maWd1cmVkLgotKwotIEBjIHJl c29sdmUgdGhlIHNpdHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5Ci0gQGl0ZW0gLXR1aQotIEBj aW5kZXggQGNvZGV7LS10dWl9Ci1AQCAtMTg2NjAsNyArMTg2NzIsNyBAQCBjb21tYW5kOgotIEB0 YWJsZSBAY29kZQotIEBraW5kZXggc291cmNlCi0gQGNpbmRleCBleGVjdXRlIGNvbW1hbmRzIGZy b20gYSBmaWxlCi0tQGl0ZW0gc291cmNlIFtAY29kZXstdn1dIEB2YXJ7ZmlsZW5hbWV9Ci0rQGl0 ZW0gc291cmNlIFtAY29kZXstdn1dIFtAY29kZXstcH1dIEB2YXJ7ZmlsZW5hbWV9Ci0gRXhlY3V0 ZSB0aGUgY29tbWFuZCBmaWxlIEB2YXJ7ZmlsZW5hbWV9LgotIEBlbmQgdGFibGUKLSAKLUBAIC0x ODY3Nyw2ICsxODY4OSwxMSBAQCBJZiBAY29kZXstdn0sIGZvciB2ZXJib3NlIG1vZGUsIGlzIGdp dmVuIHRoZW4gQHZhbHVle0dEQk59IGRpc3BsYXlzCi0gZWFjaCBjb21tYW5kIGFzIGl0IGlzIGV4 ZWN1dGVkLiAgVGhlIG9wdGlvbiBtdXN0IGJlIGdpdmVuIGJlZm9yZQotIEB2YXJ7ZmlsZW5hbWV9 LCBhbmQgaXMgaW50ZXJwcmV0ZWQgYXMgcGFydCBvZiB0aGUgZmlsZW5hbWUgYW55d2hlcmUgZWxz ZS4KK0BAIC0xOTExOCw2ICsxOTEzMCwxMSBAQCBJZiBAY29kZXstdn0sIGZvciB2ZXJib3NlIG1v ZGUsIGlzIGdpdmVuIHRoZW4gQHZhbHVle0dEQk59IGRpc3BsYXlzCisgZWFjaCBjb21tYW5kIGFz IGl0IGlzIGV4ZWN1dGVkLiAgVGhlIG9wdGlvbiBtdXN0IGJlIGdpdmVuIGJlZm9yZQorIEB2YXJ7 ZmlsZW5hbWV9LCBhbmQgaXMgaW50ZXJwcmV0ZWQgYXMgcGFydCBvZiB0aGUgZmlsZW5hbWUgYW55 d2hlcmUgZWxzZS4KICAKICtJZiBAdmFye2ZpbGVuYW1lfSBlbmRzIGluIEBzYW1wey5weX0sIG9y IGlmIEBjb2Rley1wfSwgZm9yIFB5dGhvbiwgaXMKICtnaXZlbiB0aGVuIEB2YWx1ZXtHREJOfSBl dmFsdWF0ZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBmaWxlIGFzIFB5dGhvbgpAQCAtMzkxMSw3ICsx Njc1LDcgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2NDQKICBDb21tYW5kcyB0aGF0IHdv dWxkIGFzayBmb3IgY29uZmlybWF0aW9uIGlmIHVzZWQgaW50ZXJhY3RpdmVseSBwcm9jZWVkCiAg d2l0aG91dCBhc2tpbmcgd2hlbiB1c2VkIGluIGEgY29tbWFuZCBmaWxlLiAgTWFueSBAdmFsdWV7 R0RCTn0gY29tbWFuZHMgdGhhdAogIG5vcm1hbGx5IHByaW50IG1lc3NhZ2VzIHRvIHNheSB3aGF0 IHRoZXkgYXJlIGRvaW5nIG9taXQgdGhlIG1lc3NhZ2VzCi1AQCAtMTg5MzgsOCArMTg5NTUsNiBA QCBjb250YWluaW5nIEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKK0BAIC0xOTM3OSw4ICsxOTM5 Niw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBleGFtcGxlOgogIAogIEBzbWFsbGV4 YW1wbGUKICAoQHZhbHVle0dEQlB9KSBweXRob24KQEAgLTM5MjAsNyArMTY4NCw3IEBAIGluZGV4 IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgPnByaW50IDIzCiAgPmVuZAogIDIzCi1AQCAtMTg5 NTIsNiArMTg5NjcsMTQgQEAgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJv bGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKK0BAIC0xOTM5Myw2ICsxOTQwOCwxNCBAQCBpbiBh IFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250cm9sbGVkIHVzaW5nIEBjb2Rle21haW50 IHNldAogIHB5dGhvbiBwcmludC1zdGFja306IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRo ZW4gUHl0aG9uIHN0YWNrCiAgcHJpbnRpbmcgaXMgZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhl biBQeXRob24gc3RhY2sgcHJpbnRpbmcgaXMKICBkaXNhYmxlZC4KQEAgLTM5MzUsNyArMTY5OSw3 IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgQGVuZCB0YWJsZQogIAogIEBub2Rl IFB5dGhvbiBBUEkKLUBAIC0xODk1OSw2ICsxODk4MiwxNCBAQCBkaXNhYmxlZC4KK0BAIC0xOTQw MCw2ICsxOTQyMywxNCBAQCBkaXNhYmxlZC4KICBAY2luZGV4IHB5dGhvbiBhcGkKICBAY2luZGV4 IHByb2dyYW1taW5nIGluIHB5dGhvbgogIApAQCAtMzk1MCw3ICsxNzE0LDcgQEAgaW5kZXggMWY5 OGZhNS4uOWUyNDQ4MiAxMDA2NDQKICBAY2luZGV4IHB5dGhvbiBzdGRvdXQKICBAY2luZGV4IHB5 dGhvbiBwYWdpbmF0aW9uCiAgQXQgc3RhcnR1cCwgQHZhbHVle0dEQk59IG92ZXJyaWRlcyBQeXRo b24ncyBAY29kZXtzeXMuc3Rkb3V0fSBhbmQKLUBAIC0xODk3MSwxMyArMTkwMDIsMTcgQEAgc2l0 dWF0aW9uLCBhIFB5dGhvbiBAY29kZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRo cm93bi4KK0BAIC0xOTQxMiwxMyArMTk0NDMsMTcgQEAgc2l0dWF0aW9uLCBhIFB5dGhvbiBAY29k ZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KICAqIEJhc2ljIFB5dGhv bjo6ICAgICAgICAgICAgICAgIEJhc2ljIFB5dGhvbiBGdW5jdGlvbnMuCiAgKiBFeGNlcHRpb24g SGFuZGxpbmc6OgogICogQXV0by1sb2FkaW5nOjogICAgICAgICAgICAgICAgQXV0b21hdGljYWxs eSBsb2FkaW5nIFB5dGhvbiBjb2RlLgpAQCAtMzk2Nyw5ICsxNzMxLDkgQEAgaW5kZXggMWY5OGZh NS4uOWUyNDQ4MiAxMDA2NDQKICAqIE9iamZpbGVzIEluIFB5dGhvbjo6ICAgICAgICAgIE9iamVj dCBmaWxlcy4KICsqIEJyZWFrcG9pbnRzIEluIFB5dGhvbjo6ICAgICAgIE1hbmlwdWxhdGluZyBi cmVha3BvaW50cyB1c2luZyBQeXRob24uCiAgKiBGcmFtZXMgSW4gUHl0aG9uOjogICAgICAgICAg ICBBY2Vzc2luZyBpbmZlcmlvciBzdGFjayBmcmFtZXMgZnJvbSBQeXRob24uCisgKiBMYXp5IFN0 cmluZ3MgSW4gUHl0aG9uOjogICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2YgbGF6eSBzdHJp bmdzLgogIEBlbmQgbWVudQotIAotQEAgLTE5MDA0LDYgKzE5MDM5LDEyIEBAIGNvbW1hbmQgYXMg aGF2aW5nIG9yaWdpbmF0ZWQgZnJvbSB0aGUgdXNlciBpbnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5 LgorQEAgLTE5NDQ2LDYgKzE5NDgxLDEyIEBAIGNvbW1hbmQgYXMgaGF2aW5nIG9yaWdpbmF0ZWQg ZnJvbSB0aGUgdXNlciBpbnZva2luZyBpdCBpbnRlcmFjdGl2ZWx5LgogIEl0IG11c3QgYmUgYSBi b29sZWFuIHZhbHVlLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gQGNvZGV7RmFsc2V9Lgog IEBlbmQgZGVmdW4KICAKQEAgLTM5ODIsNyArMTc0Niw3IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0 ODIgMTAwNjQ0CiAgQGZpbmRleCBnZGIucGFyYW1ldGVyCiAgQGRlZnVuIHBhcmFtZXRlciBwYXJh bWV0ZXIKICBSZXR1cm4gdGhlIHZhbHVlIG9mIGEgQHZhbHVle0dEQk59IHBhcmFtZXRlci4gIEB2 YXJ7cGFyYW1ldGVyfSBpcyBhCi1AQCAtMTkwMjAsNiArMTkwNjEsNyBAQCBhIFB5dGhvbiB2YWx1 ZSBvZiB0aGUgYXBwcm9wcmlhdGUgdHlwZSwgYW5kIHJldHVybmVkLgorQEAgLTE5NDYyLDYgKzE5 NTAzLDcgQEAgYSBQeXRob24gdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUsIGFuZCByZXR1 cm5lZC4KICBAZGVmdW4gaGlzdG9yeSBudW1iZXIKICBSZXR1cm4gYSB2YWx1ZSBmcm9tIEB2YWx1 ZXtHREJOfSdzIHZhbHVlIGhpc3RvcnkgKEBweHJlZntWYWx1ZQogIEhpc3Rvcnl9KS4gIEB2YXJ7 bnVtYmVyfSBpbmRpY2F0ZXMgd2hpY2ggaGlzdG9yeSBlbGVtZW50IHRvIHJldHVybi4KQEAgLTM5 OTAsMTcgKzE3NTQsMTAgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2NDQKICBJZiBAdmFy e251bWJlcn0gaXMgbmVnYXRpdmUsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgdGFrZSBpdHMgYWJz b2x1dGUgdmFsdWUKICBhbmQgY291bnQgYmFja3dhcmQgZnJvbSB0aGUgbGFzdCBlbGVtZW50IChp LmUuLCB0aGUgbW9zdCByZWNlbnQgZWxlbWVudCkgdG8KICBmaW5kIHRoZSB2YWx1ZSB0byByZXR1 cm4uICBJZiBAdmFye251bWJlcn0gaXMgemVybywgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbAotQEAg LTE5MDMxLDYgKzE5MDczLDI4IEBAIElmIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHRoZSByZXR1 cm4gdmFsdWUgaXMgYWx3YXlzIGFuIGluc3RhbmNlIG9mCi0gQGNvZGV7Z2RiLlZhbHVlfSAoQHB4 cmVme1ZhbHVlcyBGcm9tIEluZmVyaW9yfSkuCitAQCAtMTk0ODYsNiArMTk1MjgsMjEgQEAgY29t cHV0ZSB2YWx1ZXMsIGZvciBleGFtcGxlLCBpdCBpcyB0aGUgb25seSB3YXkgdG8gZ2V0IHRoZSB2 YWx1ZSBvZiBhCisgY29udmVuaWVuY2UgdmFyaWFibGUgKEBweHJlZntDb252ZW5pZW5jZSBWYXJz fSkgYXMgYSBAY29kZXtnZGIuVmFsdWV9LgogIEBlbmQgZGVmdW4KICAKLStAZmluZGV4IGdkYi5w YXJzZV9hbmRfZXZhbAotK0BkZWZ1biBwYXJzZV9hbmRfZXZhbCBleHByZXNzaW9uCi0rUGFyc2Ug QHZhcntleHByZXNzaW9ufSBhcyBhbiBleHByZXNzaW9uIGluIHRoZSBjdXJyZW50IGxhbmd1YWdl LAotK2V2YWx1YXRlIGl0LCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMgYSBAY29kZXtnZGIuVmFs dWV9LgotK0B2YXJ7ZXhwcmVzc2lvbn0gbXVzdCBiZSBhIHN0cmluZy4KLStAZW5kIGRlZnVuCi0r CiArQGZpbmRleCBnZGIucG9zdF9ldmVudAogK0BkZWZ1biBwb3N0X2V2ZW50IGV2ZW50CiArUHV0 IEB2YXJ7ZXZlbnR9LCBhIGNhbGxhYmxlIG9iamVjdCB0YWtpbmcgbm8gYXJndW1lbnRzLCBpbnRv CkBAIC00MDE5LDcgKzE3NzYsNyBAQCBpbmRleCAxZjk4ZmE1Li45ZTI0NDgyIDEwMDY0NAogIEBm aW5kZXggZ2RiLndyaXRlCiAgQGRlZnVuIHdyaXRlIHN0cmluZwogIFByaW50IGEgc3RyaW5nIHRv IEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFyZCBvdXRwdXQgc3RyZWFtLgotQEAgLTE5 MDQ1LDYgKzE5MTA5LDExIEBAIEZsdXNoIEB2YWx1ZXtHREJOfSdzIHBhZ2luYXRlZCBzdGFuZGFy ZCBvdXRwdXQgc3RyZWFtLiAgRmx1c2hpbmcKK0BAIC0xOTUwMCw2ICsxOTU1NywxMSBAQCBGbHVz aCBAdmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4gIEZsdXNo aW5nCiAgZnVuY3Rpb24uCiAgQGVuZCBkZWZ1bgogIApAQCAtNDAzMSwyMSArMTc4OCw3IEBAIGlu ZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgQG5vZGUgRXhjZXB0aW9uIEhhbmRsaW5nCiAg QHN1YnN1YnNlY3Rpb24gRXhjZXB0aW9uIEhhbmRsaW5nCiAgQGNpbmRleCBweXRob24gZXhjZXB0 aW9ucwotQEAgLTE5MTgxLDYgKzE5MjUwLDEzIEBAIFRoZSB0eXBlIG9mIHRoaXMgQGNvZGV7Z2Ri LlZhbHVlfS4gIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBhCi0gVGhlIGZvbGxvd2lu ZyBtZXRob2RzIGFyZSBwcm92aWRlZDoKLSAKLSBAdGFibGUgQGNvZGUKLStAZGVmbWV0aG9kIFZh bHVlIGNhc3QgdHlwZQotK0Nhc3QgdGhlIEBjb2Rle2dkYi5WYWx1ZX0gdG8gdGhlIHR5cGUgcmVw cmVzZW50ZWQgYnkgQHZhcnt0eXBlfSwgYW5kCi0rcmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5WYWx1 ZX0uICBAdmFye3R5cGV9IG11c3QgYmUgYSBAY29kZXtnZGIuVHlwZX0KLStvYmplY3QuICBJZiB0 aGUgY2FzdCBjYW5ub3QgYmUgcGVyZm9ybWVkIGZvciBzb21lIHJlYXNvbiwgYW4gZXhjZXB0aW9u Ci0raXMgdGhyb3duLgotK0BlbmQgZGVmbWV0aG9kCi0rCi0gQGRlZm1ldGhvZCBWYWx1ZSBkZXJl ZmVyZW5jZQotIEZvciBwb2ludGVyIGRhdGEgdHlwZXMsIHRoaXMgbWV0aG9kIHJldHVybnMgYSBu ZXcgQGNvZGV7Z2RiLlZhbHVlfSBvYmplY3QKLSB3aG9zZSBjb250ZW50cyBpcyB0aGUgb2JqZWN0 IHBvaW50ZWQgdG8gYnkgdGhlIHBvaW50ZXIuICBGb3IgZXhhbXBsZSwgaWYKLUBAIC0xOTI1Miw2 ICsxOTMyOCw5IEBAIG1vZHVsZToKK0BAIC0xOTczOCw2ICsxOTgwMCw5IEBAIG1vZHVsZToKICBU aGlzIGZ1bmN0aW9uIGxvb2tzIHVwIGEgdHlwZSBieSBuYW1lLiAgQHZhcntuYW1lfSBpcyB0aGUg bmFtZSBvZiB0aGUKICB0eXBlIHRvIGxvb2sgdXAuICBJdCBtdXN0IGJlIGEgc3RyaW5nLgogIApA QCAtNDA1NSwyMCArMTc5OCw3IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgT3Jk aW5hcmlseSwgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBhbiBpbnN0YW5jZSBvZiBAY29kZXtn ZGIuVHlwZX0uCiAgSWYgdGhlIG5hbWVkIHR5cGUgY2Fubm90IGJlIGZvdW5kLCBpdCB3aWxsIHRo cm93IGFuIGV4Y2VwdGlvbi4KICBAZW5kIGRlZnVuCi1AQCAtMTkzMDQsNiArMTkzODMsMTIgQEAg VGhpcyBpcyBAY29kZXtUcnVlfSBpZiB0aGUgZmllbGQgaXMgYXJ0aWZpY2lhbCwgdXN1YWxseSBt ZWFuaW5nIHRoYXQKLSBpdCB3YXMgcHJvdmlkZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBub3QgdGhl IHVzZXIuICBUaGlzIGF0dHJpYnV0ZSBpcwotIGFsd2F5cyBwcm92aWRlZCwgYW5kIGlzIEBjb2Rl e0ZhbHNlfSBpZiB0aGUgZmllbGQgaXMgbm90IGFydGlmaWNpYWwuCi0gCi0rQGl0ZW0gaXNfYmFz ZV9jbGFzcwotK1RoaXMgaXMgQGNvZGV7VHJ1ZX0gaWYgdGhlIGZpZWxkIHJlcHJlc2VudHMgYSBi YXNlIGNsYXNzIG9mIGEgQ0B0eysrfQotK3N0cnVjdHVyZS4gIFRoaXMgYXR0cmlidXRlIGlzIGFs d2F5cyBwcm92aWRlZCwgYW5kIGlzIEBjb2Rle0ZhbHNlfQotK2lmIHRoZSBmaWVsZCBpcyBub3Qg YSBiYXNlIGNsYXNzIG9mIHRoZSB0eXBlIG9uIHdoaWNoIEBjb2Rle2ZpZWxkc30gd2FzCi0rY2Fs bGVkLCBvciBpZiB0aGF0IHR5cGUgd2FzIG5vdCBhIENAdHsrK30gY2xhc3MuCi0rCi0gQGl0ZW0g Yml0c2l6ZQotIElmIHRoZSBmaWVsZCBpcyBwYWNrZWQsIG9yIGlzIGEgYml0ZmllbGQsIHRoZW4g dGhpcyB3aWxsIGhhdmUgYQotIG5vbi16ZXJvIHZhbHVlLCB3aGljaCBpcyB0aGUgc2l6ZSBvZiB0 aGUgZmllbGQgaW4gYml0cy4gIE90aGVyd2lzZSwKLUBAIC0xOTM1Niw3ICsxOTQ0MSw3IEBAIElm IHRoZSB0eXBlIGRvZXMgbm90IGhhdmUgYSB0YXJnZXQsIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cg YW4KK0BAIC0xOTg2MCw3ICsxOTkyNSw3IEBAIElmIHRoZSB0eXBlIGRvZXMgbm90IGhhdmUgYSB0 YXJnZXQsIHRoaXMgbWV0aG9kIHdpbGwgdGhyb3cgYW4KICBleGNlcHRpb24uCiAgQGVuZCBkZWZt ZXRob2QKICAKQEAgLTQwNzcsNyArMTgwNyw3IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAw NjQ0CiAgSWYgdGhpcyBAY29kZXtnZGIuVHlwZX0gaXMgYW4gaW5zdGFudGlhdGlvbiBvZiBhIHRl bXBsYXRlLCB0aGlzIHdpbGwKICByZXR1cm4gYSBuZXcgQGNvZGV7Z2RiLlR5cGV9IHdoaWNoIHJl cHJlc2VudHMgdGhlIHR5cGUgb2YgdGhlCiAgQHZhcntufXRoIHRlbXBsYXRlIGFyZ3VtZW50Lgot QEAgLTE5MzY0LDcgKzE5NDQ5LDggQEAgcmV0dXJuIGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGlj aCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRoZQorQEAgLTE5ODY4LDcgKzE5OTMzLDggQEAgcmV0 dXJuIGEgbmV3IEBjb2Rle2dkYi5UeXBlfSB3aGljaCByZXByZXNlbnRzIHRoZSB0eXBlIG9mIHRo ZQogIElmIHRoaXMgQGNvZGV7Z2RiLlR5cGV9IGlzIG5vdCBhIHRlbXBsYXRlIHR5cGUsIHRoaXMg d2lsbCB0aHJvdyBhbgogIGV4Y2VwdGlvbi4gIE9yZGluYXJpbHksIG9ubHkgQ0B0eysrfSBjb2Rl IHdpbGwgaGF2ZSB0ZW1wbGF0ZSB0eXBlcy4KICAKQEAgLTQwODcsNyArMTgxNyw3IEBAIGluZGV4 IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgQGVuZCBkZWZtZXRob2QKICBAZW5kIHRhYmxlCiAg Ci1AQCAtMTk3MTgsNiArMTk4MDQsMTIxIEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CitAQCAt MjAyMjIsNiArMjAyODgsMTIxIEBAIGltcG9ydCBnZGIubGlic3RkY3h4LnY2CiAgZ2RiLmxpYnN0 ZGN4eC52Ni5yZWdpc3Rlcl9wcmludGVycyAoZ2RiLmN1cnJlbnRfb2JqZmlsZSAoKSkKICBAZW5k IHNtYWxsZXhhbXBsZQogIApAQCAtNDA5NSw5ICsxODI1LDkgQEAgaW5kZXggMWY5OGZhNS4uOWUy NDQ4MiAxMDA2NDQKICtAc3Vic3Vic2VjdGlvbiBJbmZlcmlvcnMgSW4gUHl0aG9uCiArCiArUHJv Z3JhbXMgd2hpY2ggYXJlIGJlaW5nIHJ1biB1bmRlciBAdmFsdWV7R0RCTn0gYXJlIGNhbGxlZCBp bmZlcmlvcnMKLSsoQHB4cmVme0luZmVyaW9yc30pLiAgUHl0aG9uIHNjcmlwdHMgY2FuIGFjY2Vz cyBpbmZvcm1hdGlvbiBhYm91dCBhbmQKLSttYW5pcHVsYXRlIGluZmVyaW9ycyBjb250cm9sbGVk IGJ5IEB2YWx1ZXtHREJOfSB2aWEgb2JqZWN0cyBvZiB0aGUKLStAY29kZXtnZGIuSW5mZXJpb3J9 IGNsYXNzLgorKyhAcHhyZWZ7SW5mZXJpb3JzIGFuZCBQcm9ncmFtc30pLiAgUHl0aG9uIHNjcmlw dHMgY2FuIGFjY2VzcworK2luZm9ybWF0aW9uIGFib3V0IGFuZCBtYW5pcHVsYXRlIGluZmVyaW9y cyBjb250cm9sbGVkIGJ5IEB2YWx1ZXtHREJOfQorK3ZpYSBvYmplY3RzIG9mIHRoZSBAY29kZXtn ZGIuSW5mZXJpb3J9IGNsYXNzLgogKwogK1RoZSBmb2xsb3dpbmcgaW5mZXJpb3ItcmVsYXRlZCBm dW5jdGlvbnMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgQGNvZGV7Z2RifQogK21vZHVsZToKQEAgLTQy MDksNyArMTkzOSw3IEBAIGluZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgQG5vZGUgQ29t bWFuZHMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24gQ29tbWFuZHMgSW4gUHl0aG9uCiAgCi1A QCAtMTk5NzAsNiArMjAxNzEsMTM1IEBAIHJlZ2lzdHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRo IEB2YWx1ZXtHREJOfS4gIERlcGVuZGluZyBvbiBob3cgdGhlCitAQCAtMjA0NzQsNiArMjA2NTUs MTM1IEBAIHJlZ2lzdHJhdGlvbiBvZiB0aGUgY29tbWFuZCB3aXRoIEB2YWx1ZXtHREJOfS4gIERl cGVuZGluZyBvbiBob3cgdGhlCiAgUHl0aG9uIGNvZGUgaXMgcmVhZCBpbnRvIEB2YWx1ZXtHREJO fSwgeW91IG1heSBuZWVkIHRvIGltcG9ydCB0aGUKICBAY29kZXtnZGJ9IG1vZHVsZSBleHBsaWNp dGx5LgogIApAQCAtNDM0NSw3ICsyMDc1LDcgQEAgaW5kZXggMWY5OGZhNS4uOWUyNDQ4MiAxMDA2 NDQKICBAbm9kZSBGdW5jdGlvbnMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rpb24gV3JpdGluZyBu ZXcgY29udmVuaWVuY2UgZnVuY3Rpb25zCiAgCi1AQCAtMjAwNzQsNiArMjA0MDQsODIgQEAgd2hp Y2ggaXMgdXNlZCB0byBmb3JtYXQgdGhlIHZhbHVlLiAgQHhyZWZ7UHJldHR5IFByaW50aW5nfSwg Zm9yIG1vcmUKK0BAIC0yMDU3OCw2ICsyMDg4OCw4MiBAQCB3aGljaCBpcyB1c2VkIHRvIGZvcm1h dCB0aGUgdmFsdWUuICBAeHJlZntQcmV0dHkgUHJpbnRpbmd9LCBmb3IgbW9yZQogIGluZm9ybWF0 aW9uLgogIEBlbmQgZGVmaXZhcgogIApAQCAtNDQyOCw3ICsyMTU4LDcgQEAgaW5kZXggMWY5OGZh NS4uOWUyNDQ4MiAxMDA2NDQKICBAbm9kZSBGcmFtZXMgSW4gUHl0aG9uCiAgQHN1YnN1YnNlY3Rp b24gQWNlc3NpbmcgaW5mZXJpb3Igc3RhY2sgZnJhbWVzIGZyb20gUHl0aG9uLgogIAotQEAgLTIw MTM4LDYgKzIwNTQ0LDE0IEBAIGZ1bmN0aW9uIHRvIGEgc3RyaW5nLgorQEAgLTIwNjQyLDYgKzIx MDI4LDE0IEBAIGZ1bmN0aW9uIHRvIGEgc3RyaW5nLgogIFJldHVybnMgdGhlIGZyYW1lJ3MgcmVz dW1lIGFkZHJlc3MuCiAgQGVuZCBkZWZtZXRob2QKICAKQEAgLTQ0NDMsNyArMjE3Myw3IEBAIGlu ZGV4IDFmOThmYTUuLjllMjQ0ODIgMTAwNjQ0CiAgQGRlZm1ldGhvZCBGcmFtZSBvbGRlcgogIFJl dHVybiB0aGUgZnJhbWUgdGhhdCBjYWxsZWQgdGhpcyBmcmFtZS4KICBAZW5kIGRlZm1ldGhvZAot QEAgLTIwMTQ2LDEwICsyMDU2MCwxOCBAQCBSZXR1cm4gdGhlIGZyYW1lIHRoYXQgY2FsbGVkIHRo aXMgZnJhbWUuCitAQCAtMjA2NTAsMTAgKzIxMDQ0LDE4IEBAIFJldHVybiB0aGUgZnJhbWUgdGhh dCBjYWxsZWQgdGhpcyBmcmFtZS4KICBSZXR1cm4gdGhlIGZyYW1lIGNhbGxlZCBieSB0aGlzIGZy YW1lLgogIEBlbmQgZGVmbWV0aG9kCiAgCkBAIC00NDYxLDEyICsyMTkxLDEyIEBAIGluZGV4IDFm OThmYTUuLjllMjQ0ODIgMTAwNjQ0CiArQGVuZCBkZWZtZXRob2QKICBAZW5kIHRhYmxlCiAgCi0g QG5vZGUgSW50ZXJwcmV0ZXJzCisgQG5vZGUgTGF6eSBTdHJpbmdzIEluIFB5dGhvbgogZGlmZiAt LWdpdCBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8gYi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCi1p bmRleCBjMmJlM2Y3Li5hNzgxMWFiIDEwMDY0NAoraW5kZXggMzQ3Yzg2MC4uNWQ3MDAyZSAxMDA2 NDQKIC0tLSBhL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KICsrKyBiL2dkYi9kb2MvZ2RiaW50LnRl eGluZm8KLUBAIC0yMTE0LDYgKzIxMTQsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8g aGFuZGxlIHN5bWJvbHMgaW5jcmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKK0BAIC0yMTA3LDYg KzIxMDcsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0dGVtcHQgdG8gaGFuZGxlIHN5bWJvbHMgaW5j cmVtZW50YWxseS4gIEZvciBpbnN0YW5jZSwKICB3ZSBjcmVhdGUgQGRmbntwYXJ0aWFsIHN5bWJv bCB0YWJsZXN9IGNvbnNpc3Rpbmcgb2Ygb25seSBzZWxlY3RlZAogIHN5bWJvbHMsIGFuZCBvbmx5 IGV4cGFuZCB0aGVtIHRvIGZ1bGwgc3ltYm9sIHRhYmxlcyB3aGVuIG5lY2Vzc2FyeS4KICAKQEAg LTQ0ODUsNyArMjIxNSw3IEBAIGluZGV4IGMyYmUzZjcuLmE3ODExYWIgMTAwNjQ0CiAgQHNlY3Rp b24gU3ltYm9sIFJlYWRpbmcKICAKICBAY2luZGV4IHN5bWJvbCByZWFkaW5nCi1AQCAtMjIwNiw2 ICsyMjE4LDcgQEAgc3ltdGFiLiAgVXBvbiByZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91 bGQgaGF2ZSBiZWVuIHNldCB0byAxLCBhbmQKK0BAIC0yMTk5LDYgKzIyMTEsNyBAQCBzeW10YWIu ICBVcG9uIHJldHVybiwgQGNvZGV7cHN0LT5yZWFkaW59IHNob3VsZCBoYXZlIGJlZW4gc2V0IHRv IDEsIGFuZAogIHplcm8gaWYgdGhlcmUgd2VyZSBubyBzeW1ib2xzIGluIHRoYXQgcGFydCBvZiB0 aGUgc3ltYm9sIGZpbGUuCiAgQGVuZCB0YWJsZQogIApAQCAtNDQ5Myw3ICsyMjIzLDcgQEAgaW5k ZXggYzJiZTNmNy4uYTc4MTFhYiAxMDA2NDQKICBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBUYWJs ZXMKICAKICBAdmFsdWV7R0RCTn0gaGFzIHRocmVlIHR5cGVzIG9mIHN5bWJvbCB0YWJsZXM6Ci1A QCAtMjMwMSw2ICsyMzE0LDcgQEAgYW5kIGFsbCB0aGUgcHN5bWJvbHMgdGhlbXNlbHZlcyBhcmUg YWxsb2NhdGVkIGluIGEgcGFpciBvZiBsYXJnZSBhcnJheXMKK0BAIC0yMjk0LDYgKzIzMDcsNyBA QCBhbmQgYWxsIHRoZSBwc3ltYm9scyB0aGVtc2VsdmVzIGFyZSBhbGxvY2F0ZWQgaW4gYSBwYWly IG9mIGxhcmdlIGFycmF5cwogIG9uIGFuIG9ic3RhY2ssIHNvIHRoZXJlIGlzIGxpdHRsZSB0byBi ZSBnYWluZWQgYnkgdHJ5aW5nIHRvIGZyZWUgdGhlbQogIHVubGVzcyB5b3Ugd2FudCB0byBkbyBh IGxvdCBtb3JlIHdvcmsuCiAgCkBAIC00NTAxLDcgKzIyMzEsNyBAQCBpbmRleCBjMmJlM2Y3Li5h NzgxMWFiIDEwMDY0NAogIEBzZWN0aW9uIFR5cGVzCiAgCiAgQHVubnVtYmVyZWRzdWJzZWMgRnVu ZGFtZW50YWwgVHlwZXMgKGUuZy4sIEBjb2Rle0ZUX1ZPSUR9LCBAY29kZXtGVF9CT09MRUFOfSku Ci1AQCAtMjMyMyw2ICsyMzM3LDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBAY29kZXtUWVBFX0NPREVf Kn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CitAQCAtMjMxNiw2ICsyMzMwLDcgQEAg dHlwZXMgbWFwIHRvIG9uZSBAY29kZXtUWVBFX0NPREVfKn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5n dWlzaGVkIGJ5CiAgb3RoZXIgbWVtYmVycyBvZiB0aGUgdHlwZSBzdHJ1Y3QsIHN1Y2ggYXMgd2hl dGhlciB0aGUgdHlwZSBpcyBzaWduZWQKICBvciB1bnNpZ25lZCwgYW5kIGhvdyBtYW55IGJpdHMg aXQgdXNlcy4KICAKQEAgLTQ1MDksNyArMjIzOSw3IEBAIGluZGV4IGMyYmUzZjcuLmE3ODExYWIg MTAwNjQ0CiAgQHVubnVtYmVyZWRzdWJzZWMgQnVpbHRpbiBUeXBlcyAoZS5nLiwgQGNvZGV7YnVp bHRpbl90eXBlX3ZvaWR9LCBAY29kZXtidWlsdGluX3R5cGVfY2hhcn0pLgogIAogIFRoZXNlIGFy ZSBpbnN0YW5jZXMgb2YgdHlwZSBzdHJ1Y3RzIHRoYXQgcm91Z2hseSBjb3JyZXNwb25kIHRvCi1A QCAtMjMzNyw2ICsyMzUyLDcgQEAgb25seSBvbmUgaW5zdGFuY2UgZXhpc3RzLCB3aGlsZSBAZmls ZXtjLWxhbmcuY30gYnVpbGRzIGFzIG1hbnkKK0BAIC0yMzMwLDYgKzIzNDUsNyBAQCBvbmx5IG9u ZSBpbnN0YW5jZSBleGlzdHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQog IEBjb2Rle1RZUEVfQ09ERV9JTlR9IHR5cGVzIGFzIG5lZWRlZCwgd2l0aCBlYWNoIG9uZSBhc3Nv Y2lhdGVkIHdpdGgKICBzb21lIHBhcnRpY3VsYXIgb2JqZmlsZS4KICAKQEAgLTQ1MTcsNyArMjI0 Nyw3IEBAIGluZGV4IGMyYmUzZjcuLmE3ODExYWIgMTAwNjQ0CiAgQHNlY3Rpb24gT2JqZWN0IEZp bGUgRm9ybWF0cwogIEBjaW5kZXggb2JqZWN0IGZpbGUgZm9ybWF0cwogIAotQEAgLTI0MjIsNiAr MjQzOCw3IEBAIFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5ndWFnZSBBQkkpLgorQEAgLTI0MTUs NiArMjQzMSw3IEBAIFNPTSwgd2hpY2ggaXMgYSBjcm9zcy1sYW5ndWFnZSBBQkkpLgogIAogIFRo ZSBTT00gcmVhZGVyIGlzIGluIEBmaWxle3NvbXJlYWQuY30uCiAgCkBAIC00NTI1LDcgKzIyNTUs NyBAQCBpbmRleCBjMmJlM2Y3Li5hNzgxMWFiIDEwMDY0NAogIEBzZWN0aW9uIERlYnVnZ2luZyBG aWxlIEZvcm1hdHMKICAKICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGNoYXJhY3RlcmlzdGljcyBv ZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAotQEAgLTI0OTMsNiArMjUxMCw3IEBAIERXQVJG IDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgorQEAgLTI0ODYsNiArMjUwMyw3 IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgogIEBjaW5kZXgg U09NIGRlYnVnZ2luZyBpbmZvCiAgTGlrZSBDT0ZGLCB0aGUgU09NIGRlZmluaXRpb24gaW5jbHVk ZXMgZGVidWdnaW5nIGluZm9ybWF0aW9uLgogIApAQCAtNDUzMyw3ICsyMjYzLDcgQEAgaW5kZXgg YzJiZTNmNy4uYTc4MTFhYiAxMDA2NDQKICBAc2VjdGlvbiBBZGRpbmcgYSBOZXcgU3ltYm9sIFJl YWRlciB0byBAdmFsdWV7R0RCTn0KICAKICBAY2luZGV4IGFkZGluZyBkZWJ1Z2dpbmcgaW5mbyBy ZWFkZXIKLUBAIC0yNTE1LDYgKzI1MzMsNyBAQCB3aWxsIG9ubHkgZXZlciBiZSBpbXBsZW1lbnRl ZCBieSBvbmUgb2JqZWN0IGZpbGUgZm9ybWF0IG1heSBiZSBjYWxsZWQKK0BAIC0yNTA4LDYgKzI1 MjYsNyBAQCB3aWxsIG9ubHkgZXZlciBiZSBpbXBsZW1lbnRlZCBieSBvbmUgb2JqZWN0IGZpbGUg Zm9ybWF0IG1heSBiZSBjYWxsZWQKICBkaXJlY3RseS4gIFRoaXMgaW50ZXJmYWNlIHNob3VsZCBi ZSBkZXNjcmliZWQgaW4gYSBmaWxlCiAgQGZpbGV7YmZkL2xpYkB2YXJ7eHl6fS5ofSwgd2hpY2gg aXMgaW5jbHVkZWQgYnkgQHZhbHVle0dEQk59LgogIApAQCAtNDU0MSw3ICsyMjcxLDcgQEAgaW5k ZXggYzJiZTNmNy4uYTc4MTFhYiAxMDA2NDQKICBAc2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudCBm b3IgU3ltYm9sIEZpbGVzCiAgCiAgTW9zdCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGEgbG9hZGVk IHN5bWJvbCBmaWxlIGlzIHN0b3JlZCBvbgotQEAgLTI1MjYsMTAgKzI1NDUsNDUgQEAgcmVsZWFz ZWQgd2hlbiB0aGUgb2JqZmlsZSBpcyB1bmxvYWRlZCBvciByZWxvYWRlZC4gIFRoZXJlZm9yZSBv bmUKK0BAIC0yNTE5LDEwICsyNTM4LDQ1IEBAIHJlbGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMg dW5sb2FkZWQgb3IgcmVsb2FkZWQuICBUaGVyZWZvcmUgb25lCiAgb2JqZmlsZSBtdXN0IG5vdCBy ZWZlcmVuY2Ugc3ltYm9sIG9yIHR5cGUgZGF0YSBmcm9tIGFub3RoZXIgb2JqZmlsZTsKICB0aGV5 IGNvdWxkIGJlIHVubG9hZGVkIGF0IGRpZmZlcmVudCB0aW1lcy4KICAKQEAgLTQ1OTIsMTEgKzIz MjIsMTEgQEAgaW5kZXggYzJiZTNmNy4uYTc4MTFhYiAxMDA2NDQKICAKICBAbm9kZSBMYW5ndWFn ZSBTdXBwb3J0CiBkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpIGIvZ2RiL2RvYy9v YnNlcnZlci50ZXhpCi1pbmRleCA0OTg0ZjMxLi5mY2YxYjVkIDEwMDY0NAoraW5kZXggZGIzZDEx NC4uNzU5MjAwZiAxMDA2NDQKIC0tLSBhL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQogKysrIGIvZ2Ri L2RvYy9vYnNlcnZlci50ZXhpCi1AQCAtMjA2LDYgKzIwNiwxMSBAQCBFaXRoZXIgQHZhbHVle0dE Qk59IGRldGFjaGVkIGZyb20gdGhlIGluZmVyaW9yLCBvciB0aGUgaW5mZXJpb3IKLSBleGl0ZWQu ICBUaGUgYXJndW1lbnQgQHZhcntwaWR9IGlkZW50aWZpZXMgdGhlIGluZmVyaW9yLgorQEAgLTIx Myw2ICsyMTMsMTEgQEAgQnl0ZXMgZnJvbSBAdmFye2RhdGF9IHRvIEB2YXJ7ZGF0YX0gKyBAdmFy e2xlbn0gaGF2ZSBiZWVuIHdyaXR0ZW4KKyB0byB0aGUgY3VycmVudCBpbmZlcmlvciBhdCBAdmFy e2FkZHJ9LgogIEBlbmQgZGVmdHlwZWZ1bgogIAogK0BkZWZ0eXBlZnVuIHZvaWQgbWFya191c2Vk ICh2b2lkKQpAQCAtNDYwOCw3ICsyMzM4LDcgQEAgaW5kZXggNDk4NGYzMS4uZmNmMWI1ZCAxMDA2 NDQKICBUaGlzIG9ic2VydmVyIGlzIHVzZWQgZm9yIGludGVybmFsIHRlc3RpbmcuICBEbyBub3Qg dXNlLiAgCiAgU2VlIHRlc3RzdWl0ZS9nZGIuZ2RiL29ic2VydmVyLmV4cC4KIGRpZmYgLS1naXQg YS9nZGIvZHdhcmYyLWZyYW1lLmMgYi9nZGIvZHdhcmYyLWZyYW1lLmMKLWluZGV4IDY2OGM0MzQu LmMyOWMzYTUgMTAwNjQ0CitpbmRleCA5OTEwMGQ3Li41OTE1MjQ5IDEwMDY0NAogLS0tIGEvZ2Ri L2R3YXJmMi1mcmFtZS5jCiArKysgYi9nZGIvZHdhcmYyLWZyYW1lLmMKIEBAIC0zOCw2ICszOCw3 IEBACkBAIC00NjE5LDcgKzIzNDksNyBAQCBpbmRleCA2NjhjNDM0Li5jMjljM2E1IDEwMDY0NAog IAogIHN0cnVjdCBjb21wX3VuaXQ7CiAgCi1AQCAtMTU3NCw2ICsxNTc1LDE0IEBAIGR3YXJmMl9m cmFtZV9maW5kX2ZkZSAoQ09SRV9BRERSICpwYykKK0BAIC0xNTgyLDYgKzE1ODMsMTQgQEAgZHdh cmYyX2ZyYW1lX2ZpbmRfZmRlIChDT1JFX0FERFIgKnBjKQogICAgICAgIENPUkVfQUREUiBvZmZz ZXQ7CiAgICAgICAgQ09SRV9BRERSIHNlZWtfcGM7CiAgCkBAIC00NjM1LDcgKzIzNjUsNyBAQCBp bmRleCA2NjhjNDM0Li5jMjljM2E1IDEwMDY0NAogICAgICAgIGlmIChmZGVfdGFibGUgPT0gTlVM TCkKICAJY29udGludWU7CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBiL2dkYi9kd2Fy ZjJleHByLmMKLWluZGV4IDQ2YmM5ZDcuLmU2NzU1NzUgMTAwNjQ0CitpbmRleCA1ZTI3ZDM4Li42 MjhiYTg4IDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYwogKysrIGIvZ2RiL2R3YXJmMmV4 cHIuYwogQEAgLTg0OCw2ICs4NDgsMTMgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dCAqY3R4LApAQCAtNDY1Myw3ICsyMzgzLDcgQEAgaW5kZXggNDZiYzlkNy4u ZTY3NTU3NSAxMDA2NDQKICAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Npb24g b3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuaCBi L2dkYi9kd2FyZjJleHByLmgKLWluZGV4IGE5YThhMDUuLmQ0NDkwMTIgMTAwNjQ0CitpbmRleCA0 MzdjYTM5Li5mN2ZjZTkyIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmV4cHIuaAogKysrIGIvZ2Ri L2R3YXJmMmV4cHIuaAogQEAgLTEwMiwxMCArMTAyLDEwIEBAIHN0cnVjdCBkd2FyZl9leHByX2Nv bnRleHQKQEAgLTQ2NjksMTAgKzIzOTksMTAgQEAgaW5kZXggYTlhOGEwNS4uZDQ0OTAxMiAxMDA2 NDQKICAgIC8qIFRoZSBjdXJyZW50IGRlcHRoIG9mIGR3YXJmIGV4cHJlc3Npb24gcmVjdXJzaW9u LCB2aWEgRFdfT1BfY2FsbCosCiAgICAgICBEV19PUF9mYnJlZywgRFdfT1BfcHVzaF9vYmplY3Rf YWRkcmVzcywgZXRjLiwgYW5kIHRoZSBtYXhpbXVtCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxv Yy5jIGIvZ2RiL2R3YXJmMmxvYy5jCi1pbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAoraW5k ZXggNjY3OWQ3NC4uNTRkMmJhZSAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJsb2MuYwogKysrIGIv Z2RiL2R3YXJmMmxvYy5jCi1AQCAtMTE2LDYgKzExNiw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2Jh dG9uCitAQCAtMTIxLDYgKzEyMSw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCiAgewogICAg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOwogICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CkBA IC00NjgyLDkgKzI0MTIsOSBAQCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogIH07CiAg CiAgLyogSGVscGVyIGZ1bmN0aW9ucyBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAgKi8K LUBAIC0xNzcsMjIgKzE4MCwzMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2UgKHZvaWQgKmJhdG9u LCBnZGJfYnl0ZSAqKnN0YXJ0LCBzaXplX3QgKiBsZW5ndGgpCi0gICAgICAgKnN0YXJ0ID0gZmlu ZF9sb2NhdGlvbl9leHByZXNzaW9uIChzeW1iYXRvbiwgbGVuZ3RoLAotIAkJCQkJIGdldF9mcmFt ZV9hZGRyZXNzX2luX2Jsb2NrIChmcmFtZSkpOworQEAgLTE4OSwyMiArMTkyLDMzIEBAIGR3YXJm X2V4cHJfZnJhbWVfYmFzZV8xIChzdHJ1Y3Qgc3ltYm9sICpmcmFtZWZ1bmMsIENPUkVfQUREUiBw YywKKyAgICAgICBzeW1iYXRvbiA9IFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoZnJhbWVmdW5jKTsK KyAgICAgICAqc3RhcnQgPSBmaW5kX2xvY2F0aW9uX2V4cHJlc3Npb24gKHN5bWJhdG9uLCBsZW5n dGgsIHBjKTsKICAgICAgfQogLSAgZWxzZQogKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09Q UyAoZnJhbWVmdW5jKSA9PSAmZHdhcmYyX2xvY2V4cHJfZnVuY3MpCkBAIC00NzI1LDcgKzI0NTUs NyBAQCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogIH0KICAKICAvKiBIZWxwZXIgZnVu Y3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gIENvbXB1dGVzIHRoZSBDRkEgZm9y Ci1AQCAtMjE1LDYgKzIyOSwxMjkgQEAgZHdhcmZfZXhwcl90bHNfYWRkcmVzcyAodm9pZCAqYmF0 b24sIENPUkVfQUREUiBvZmZzZXQpCitAQCAtMjI3LDYgKzI0MSwxMjkgQEAgZHdhcmZfZXhwcl90 bHNfYWRkcmVzcyAodm9pZCAqYmF0b24sIENPUkVfQUREUiBvZmZzZXQpCiAgICByZXR1cm4gdGFy Z2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoZGViYXRvbi0+b2JqZmlsZSwgb2Zmc2V0KTsKICB9 CiAgCkBAIC00ODU1LDcgKzI1ODUsNyBAQCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAog IHN0cnVjdCBwaWVjZV9jbG9zdXJlCiAgewogICAgLyogVGhlIG51bWJlciBvZiBwaWVjZXMgdXNl ZCB0byBkZXNjcmliZSB0aGlzIHZhcmlhYmxlLiAgKi8KLUBAIC0zODIsOSArNTE5LDggQEAgZHdh cmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwKK0BAIC00MDgsOSArNTQ1LDggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNj IChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJCQkgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKICB7CiAgICBzdHJ1Y3QgdmFsdWUgKnJl dHZhbDsKQEAgLTQ4NjYsMTQgKzI1OTYsMTMgQEAgaW5kZXggM2E4MTIwMi4uODVmNDQ4NyAxMDA2 NDQKICAKICAgIGlmIChzaXplID09IDApCiAgICAgIHsKLUBAIC0zOTQsMjIgKzUzMCw4IEBAIGR3 YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVf aW5mbyAqZnJhbWUsCitAQCAtNDIwLDIyICs1NTYsOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rl c2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogICAgICAg IHJldHVybiByZXR2YWw7CiAgICAgIH0KICAKIC0gIGJhdG9uLmZyYW1lID0gZnJhbWU7CiAtICBi YXRvbi5vYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChwZXJfY3UpOwotKyAgY3R4ID0g ZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUsIHBlcl9jdSk7Ci0gCistCiAt ICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwogLSAgb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwogLQpAQCAtNDg4NSwxMiArMjYx NCwxMyBAQCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogLSAgY3R4LT5nZXRfZnJhbWVf YmFzZSA9IGR3YXJmX2V4cHJfZnJhbWVfYmFzZTsKIC0gIGN0eC0+Z2V0X2ZyYW1lX2NmYSA9IGR3 YXJmX2V4cHJfZnJhbWVfY2ZhOwogLSAgY3R4LT5nZXRfdGxzX2FkZHJlc3MgPSBkd2FyZl9leHBy X3Rsc19hZGRyZXNzOwotLQorKyAgY3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRh dGEsIHNpemUsIHBlcl9jdSk7CisgCiAtICBkd2FyZl9leHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6 ZSk7CiAgICBpZiAoY3R4LT5udW1fcGllY2VzID4gMCkKICAgICAgewogICAgICAgIHN0cnVjdCBw aWVjZV9jbG9zdXJlICpjOwotQEAgLTQzOSw2ICs1NjEsMTEgQEAgZHdhcmYyX2V2YWx1YXRlX2xv Y19kZXNjIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BA IC00NjUsNiArNTg3LDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHN5bWJv bCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCSAgICBDT1JFX0FERFIgYWRkcmVz cyA9IGR3YXJmX2V4cHJfZmV0Y2ggKGN0eCwgMCk7CiAgCSAgICBpbnQgaW5fc3RhY2tfbWVtb3J5 ID0gZHdhcmZfZXhwcl9mZXRjaF9pbl9zdGFja19tZW1vcnkgKGN0eCwgMCk7CiAgCkBAIC00OTAy LDcgKzI2MzIsNyBAQCBpbmRleCAzYTgxMjAyLi44NWY0NDg3IDEwMDY0NAogIAkgICAgcmV0dmFs ID0gYWxsb2NhdGVfdmFsdWUgKFNZTUJPTF9UWVBFICh2YXIpKTsKICAJICAgIFZBTFVFX0xWQUwg KHJldHZhbCkgPSBsdmFsX21lbW9yeTsKICAJICAgIHNldF92YWx1ZV9sYXp5IChyZXR2YWwsIDEp OwotQEAgLTgxNSw3ICs5NDIsNyBAQCBzdGF0aWMgaW50CitAQCAtODcyLDcgKzk5OSw3IEBAIHN0 YXRpYyBpbnQKICBsb2NsaXN0X2Rlc2NyaWJlX2xvY2F0aW9uIChzdHJ1Y3Qgc3ltYm9sICpzeW1i b2wsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgewogICAgLyogRklYTUU6IENvdWxkIHByaW50 IHRoZSBlbnRpcmUgbGlzdCBvZiBsb2NhdGlvbnMuICAqLwpAQCAtNDkxMSw3ICsyNjQxLDcgQEAg aW5kZXggM2E4MTIwMi4uODVmNDQ4NyAxMDA2NDQKICAgIHJldHVybiAxOwogIH0KICAKLUBAIC04 MzEsMTYgKzk1OCw1NiBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJv bCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC04ODgsMTYgKzEwMTUsNTYg QEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCiAgICBkYXRhID0gZmluZF9sb2NhdGlvbl9leHByZXNz aW9uIChkbGJhdG9uLCAmc2l6ZSwgYXgtPnNjb3BlKTsKICAgIGlmIChkYXRhID09IE5VTEwpCkBA IC00OTcyLDEwICsyNzAyLDEwIEBAIGluZGV4IDNhODEyMDIuLjg1ZjQ0ODcgMTAwNjQ0CiArICBt aXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgogK307CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmxv Yy5oIGIvZ2RiL2R3YXJmMmxvYy5oCi1pbmRleCAwYmZjZmNhLi4wMTAxOGQ2IDEwMDY0NAoraW5k ZXggZmEwYmQxMS4uZmRlYTJiNCAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJsb2MuaAogKysrIGIv Z2RiL2R3YXJmMmxvYy5oCi1AQCAtNzEsNSArNzEsMTEgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0 X2JhdG9uCitAQCAtNzIsNSArNzIsMTEgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCiAg CiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHBy X2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJf bG9jbGlzdF9mdW5jczsKQEAgLTQ5ODgsMjMgKzI3MTgsMTkgQEAgaW5kZXggMGJmY2ZjYS4uMDEw MThkNiAxMDA2NDQKICAKICAjZW5kaWYgLyogZHdhcmYybG9jLmggKi8KIGRpZmYgLS1naXQgYS9n ZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwotaW5kZXggNGNjZTM2Yi4uZmIwYTY5 MyAxMDA2NDQKK2luZGV4IDI0Mzg1OWMuLjJmY2NlYzUgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYy cmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCi1AQCAtNDgsNiArNDgsMTIgQEAKK0BAIC00 OCw2ICs0OCw4IEBACiAgI2luY2x1ZGUgImdkYmNtZC5oIgogICNpbmNsdWRlICJibG9jay5oIgog ICNpbmNsdWRlICJhZGRybWFwLmgiCi0rI2luY2x1ZGUgImYtbGFuZy5oIgotKyNpbmNsdWRlICJj LWxhbmcuaCIKLSsjaW5jbHVkZSAidHlwZXByaW50LmgiCi0rI2luY2x1ZGUgImp2LWxhbmcuaCIK LSsjaW5jbHVkZSAidmVjLmgiCiArI2luY2x1ZGUgImJsb2NrLmgiCisrI2luY2x1ZGUgImYtbGFu Zy5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCi1A QCAtOTMsNyArOTksNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWJuYW1lc19oZWFkZXIKK0BAIC05Niw3 ICs5OCw3IEBAIHR5cGVkZWYgc3RydWN0IHB1Ym5hbWVzX2hlYWRlcgogIF9QVUJOQU1FU19IRUFE RVI7CiAgI2RlZmluZSBfQUNUVUFMX1BVQk5BTUVTX0hFQURFUl9TSVpFIDEzCiAgCkBAIC01MDEz LDcgKzI3MzksNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgIEJlY2F1c2Ug b2YgYWxpZ25tZW50IGNvbnN0cmFpbnRzLCB0aGlzIHN0cnVjdHVyZSBoYXMgcGFkZGluZyBhbmQg Y2Fubm90CiAgICAgYmUgbWFwcGVkIGRpcmVjdGx5IG9udG8gdGhlIGJlZ2lubmluZyBvZiB0aGUg LmRlYnVnX2luZm8gc2VjdGlvbi4gICovCiAgdHlwZWRlZiBzdHJ1Y3QgYXJhbmdlc19oZWFkZXIK LUBAIC0xNTAsNyArMTU2LDEwIEBAIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvCitAQCAtMTUz LDcgKzE1NSwxMCBAQCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbwogICAgYXNlY3Rpb24gKmFz ZWN0aW9uOwogICAgZ2RiX2J5dGUgKmJ1ZmZlcjsKICAgIGJmZF9zaXplX3R5cGUgc2l6ZTsKQEAg LTUwMjUsMTAgKzI3NTEsMTAgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICB9Owog IAogIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKLUBAIC0zMzYsNiArMzQ1LDE5IEBAIHN0cnVj dCBkd2FyZjJfY3UKLSAKLSAgIC8qIEZpZWxkIGByYW5nZXNfb2Zmc2V0JyBpcyBmaWxsZWQgaW47 IGZsYWcgYXMgdGhlIHZhbHVlIG1heSBiZSB6ZXJvLiAgKi8KLSAgIHVuc2lnbmVkIGludCBoYXNf cmFuZ2VzX29mZnNldCA6IDE7CitAQCAtMzMzLDYgKzMzOCwxOSBAQCBzdHJ1Y3QgZHdhcmYyX2N1 CisgICAgICBESUVzIGZvciBuYW1lc3BhY2VzLCB3ZSBkb24ndCBuZWVkIHRvIHRyeSB0byBpbmZl ciB0aGVtCisgICAgICBmcm9tIG1hbmdsZWQgbmFtZXMuICAqLworICAgdW5zaWduZWQgaW50IGhh c19uYW1lc3BhY2VfaW5mbyA6IDE7CiArCiArICAvKiBGaWVsZHMgYXJlIHZhbGlkIGFjY29yZGlu ZyB0byB0aGUgTEFOR1VBR0UgZmllbGQuICAqLwogKyAgdW5pb24KQEAgLTUwNDUsNDEgKzI3NzEs MTcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICB9OwogIAogIC8qIFBlcnNpc3Rl bnQgZGF0YSBoZWxkIGZvciBhIGNvbXBpbGF0aW9uIHVuaXQsIGV2ZW4gd2hlbiBub3QKLUBAIC00 OTUsOCArNTE3LDcgQEAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8KLSAgICAgdW5zaWduZWQgaW50 IGhhc19ieXRlX3NpemUgOiAxOwotIAotICAgICAvKiBUaGUgbmFtZSBvZiB0aGlzIERJRS4gIE5v cm1hbGx5IHRoZSB2YWx1ZSBvZiBEV19BVF9uYW1lLCBidXQKLS0gICAgICAgc29tZXRpbWVzIERX X1RBR19NSVBTX2xpbmthZ2VfbmFtZSBvciBhIHN0cmluZyBjb21wdXRlZCBpbiBzb21lCi0tICAg ICAgIG90aGVyIGZhc2hpb24uICAqLwotKyAgICAgICBzb21ldGltZXMgYSBkZWZhdWx0IG5hbWUg Zm9yIHVubmFtZWQgRElFcy4gICovCi0gICAgIGNoYXIgKm5hbWU7Ci0gICAgIGNoYXIgKmRpcm5h bWU7Ci0gCi1AQCAtNjg5LDYgKzcxMCwxMSBAQCBzdHJ1Y3QgZmllbGRfaW5mbwotICAgICBpbnQg bmZuZmllbGRzOwotICAgfTsKLSAKLSsvKiBBIHZlY3RvciB1c2VkIGR1cmluZyBsaW5rYWdlIG5h bWUgZ2VuZXJhdGlvbi4gICovCi0rdHlwZWRlZiBzdHJ1Y3QgZGllX2luZm8gKmRpZV9pbmZvX3A7 Ci0rREVGX1ZFQ19QIChkaWVfaW5mb19wKTsKLStzdGF0aWMgVkVDKGRpZV9pbmZvX3ApICpkaWVf bGlzdDsKLSsKLSAvKiBPbmUgaXRlbSBvbiB0aGUgcXVldWUgb2YgY29tcGlsYXRpb24gdW5pdHMg dG8gcmVhZCBpbiBmdWxsIHN5bWJvbHMKLSAgICBmb3IuICAqLwotIHN0cnVjdCBkd2FyZjJfcXVl dWVfaXRlbQotQEAgLTgwMCw3ICs4MjYsMTAgQEAgc3RhdGljIHZvaWQgc2Nhbl9wYXJ0aWFsX3N5 bWJvbHMgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICosCitAQCAtNzg4LDYgKzgwNiw5IEBAIHN0 YXRpYyB2b2lkIHNjYW5fcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAq LAogIHN0YXRpYyB2b2lkIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfZGllX2lu Zm8gKiwKICAJCQkJc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKLS1zdGF0aWMgaW50IHBkaV9uZWVk c19uYW1lc3BhY2UgKGVudW0gZHdhcmZfdGFnIHRhZyk7CiArc3RhdGljIGdkYl9ieXRlICpyZWFk X2NvbXBfdW5pdF9oZWFkIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKiwgZ2RiX2J5dGUgKiwKICsJ CQkJICAgICAgYmZkICopOwogKwotK3N0YXRpYyBpbnQgZGllX25lZWRzX25hbWVzcGFjZSAoc3Ry dWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Cisgc3RhdGljIGludCBwZGlfbmVl ZHNfbmFtZXNwYWNlIChlbnVtIGR3YXJmX3RhZyB0YWcpOwogIAogIHN0YXRpYyB2b2lkIGFkZF9w YXJ0aWFsX25hbWVzcGFjZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKLSAJCQkJICAg Q09SRV9BRERSICpsb3dwYywgQ09SRV9BRERSICpoaWdocGMsCi1AQCAtODI1LDYgKzg1NCwxMCBA QCBzdGF0aWMgdm9pZCBkd2FyZjJfcHN5bXRhYl90b19zeW10YWIgKHN0cnVjdCBwYXJ0aWFsX3N5 bXRhYiAqKTsKK0BAIC04MTMsNiArODM0LDEwIEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9wc3ltdGFi X3RvX3N5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICopOwogIAogIHN0YXRpYyB2b2lkIHBz eW10YWJfdG9fc3ltdGFiXzEgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqKTsKICAKQEAgLTUwOTAs NDIgKzI3OTIsNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIHN0YXRpYyB2b2lk IGR3YXJmMl9yZWFkX2FiYnJldnMgKGJmZCAqYWJmZCwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwog IAogIHN0YXRpYyB2b2lkIGR3YXJmMl9mcmVlX2FiYnJldl90YWJsZSAodm9pZCAqKTsKLUBAIC05 NDUsNiArOTc4LDExIEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqdGFnX3R5cGVfdG9fdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0gCi0gc3RhdGljIHN0cnVjdCB0 eXBlICpyZWFkX3R5cGVfZGllIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAq KTsKLSAKLStzdGF0aWMgY2hhciAqcGh5c25hbWVfcHJlZml4IChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSsKLStzdGF0aWMgdm9pZCBwaHlzbmFtZV9wcmVmaXhf MSAoc3RydWN0IHVpX2ZpbGUgKiwgc3RydWN0IGRpZV9pbmZvICosCi0rCQkJICAgICAgIHN0cnVj dCBkd2FyZjJfY3UgKik7Ci0rCi0gc3RhdGljIGNoYXIgKmRldGVybWluZV9wcmVmaXggKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotIAotIHN0YXRpYyBjaGFyICp0 eXBlbmFtZV9jb25jYXQgKHN0cnVjdCBvYnN0YWNrICosCi1AQCAtOTY0LDcgKzEwMDIsOCBAQCBz dGF0aWMgaW50IGR3YXJmMl9yYW5nZXNfcmVhZCAodW5zaWduZWQsIENPUkVfQUREUiAqLCBDT1JF X0FERFIgKiwKLSAJCQkgICAgICAgc3RydWN0IGR3YXJmMl9jdSAqLCBzdHJ1Y3QgcGFydGlhbF9z eW10YWIgKik7Ci0gCi0gc3RhdGljIGludCBkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoc3RydWN0IGRp ZV9pbmZvICosCi0tCQkJCSBDT1JFX0FERFIgKiwgQ09SRV9BRERSICosIHN0cnVjdCBkd2FyZjJf Y3UgKik7Ci0rCQkJCSBDT1JFX0FERFIgKiwgQ09SRV9BRERSICosIHN0cnVjdCBkd2FyZjJfY3Ug KiwKLSsJCQkJIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0KTsKLSAKLSBzdGF0aWMgdm9pZCBn ZXRfc2NvcGVfcGNfYm91bmRzIChzdHJ1Y3QgZGllX2luZm8gKiwKLSAJCQkJIENPUkVfQUREUiAq LCBDT1JFX0FERFIgKiwKLUBAIC05ODgsMTcgKzEwMjcsMjUgQEAgc3RhdGljIHZvaWQgZHdhcmYy X2F0dGFjaF9mbl9maWVsZHNfdG9fdHlwZSAoc3RydWN0IGZpZWxkX2luZm8gKiwKLSAKLSBzdGF0 aWMgdm9pZCBwcm9jZXNzX3N0cnVjdHVyZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVj dCBkd2FyZjJfY3UgKik7Ci0gCi0tc3RhdGljIGNvbnN0IGNoYXIgKmRldGVybWluZV9jbGFzc19u YW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKLS0JCQkJCSBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7 Ci0tCi0gc3RhdGljIHZvaWQgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqLCBz dHJ1Y3QgZHdhcmYyX2N1ICopOwotIAotIHN0YXRpYyB2b2lkIHJlYWRfbmFtZXNwYWNlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLSAKLStzdGF0aWMgdm9pZCBy ZWFkX2ltcG9ydF9zdGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICopOwotKwotIHN0YXRpYyB2b2lkIHJlYWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworQEAgLTk5NSw2ICsxMDIwLDE1IEBAIHN0YXRpYyB2 b2lkIHJlYWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpOwogIAogIHN0YXRpYyB2b2lkIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCkBAIC01MTQxLDI4ICsyODA4LDE3IEBA IGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgc3RhdGljIGNvbnN0IGNoYXIgKm5hbWVz cGFjZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJCQkJICAgaW50ICppc19hbm9ueW1v dXMsIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTAzMiw3ICsxMDc5LDEwIEBAIHN0YXRp YyBnZGJfYnl0ZSAqcmVhZF9mdWxsX2RpZSAoY29uc3Qgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3Mg KnJlYWRlciwKK0BAIC0xMDMwLDYgKzEwNjQsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2RpZSAo c3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi0gc3RhdGljIHZvaWQg cHJvY2Vzc19kaWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworIHN0 YXRpYyBjaGFyICpkd2FyZjJfbGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0 IGR3YXJmMl9jdSAqKTsKICAKLS1zdGF0aWMgY2hhciAqZHdhcmYyX2xpbmthZ2VfbmFtZSAoc3Ry dWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0rc3RhdGljIGNoYXIgKmR3YXJm Ml9waHlzbmFtZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0rCiAr c3RhdGljIGNoYXIgKmZvcnRyYW5fbW9kdWxlX2xpbmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZv ICpkaWUsCiArCQkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLSAKKysKICBzdGF0aWMgY2hh ciAqZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICosIHN0cnVjdCBkd2FyZjJfY3UgKiwK ICAJCQkJICAgICAgIHN0cnVjdCBvYnN0YWNrICopOwotQEAgLTEwNzYsNyArMTEyNiw3IEBAIHN0 YXRpYyBpbnQgaXNfcmVmX2F0dHIgKHN0cnVjdCBhdHRyaWJ1dGUgKik7Ci0gCi0gc3RhdGljIHVu c2lnbmVkIGludCBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0IChzdHJ1Y3QgYXR0cmlidXRlICop OwotIAotLXN0YXRpYyBpbnQgZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChzdHJ1Y3Qg YXR0cmlidXRlICosIGludCk7Ci0rc3RhdGljIENPUkVfQUREUiBkd2FyZjJfZ2V0X2F0dHJfY29u c3RhbnRfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKiwgQ09SRV9BRERSKTsKICAKLSBzdGF0aWMg c3RydWN0IGRpZV9pbmZvICpmb2xsb3dfZGllX3JlZl9vcl9zaWcgKHN0cnVjdCBkaWVfaW5mbyAq LAotIAkJCQkJICAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKiwKLUBAIC0xMTQ4LDYgKzExOTgsOSBA QCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOworQEAgLTExNDQsNiAr MTE4MSw5IEBAIHN0YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAg c3RhdGljIHZvaWQgZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAodm9pZCAqKTsKICAKQEAgLTUx NzIsNyArMjgyOCw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgc3RhdGljIHN0 cnVjdCB0eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAq LAogIAkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTE2NywyMiArMTIyMCwzMSBA QCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKik7CitAQCAtMTE2MywyMiArMTIwMywzMSBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJf bWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CiAgCiAgc3RhdGljIHN0cnVjdCB0 eXBlICpnZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSk7CiAgCkBAIC01MjEzLDcgKzI4NjksNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEw MDY0NAogIH0KICAKICAvKiBXaGVuIGxvYWRpbmcgc2VjdGlvbnMsIHdlIGNhbiBlaXRoZXIgbG9v ayBmb3IgIi48bmFtZT4iLCBvciBmb3IKLUBAIC0xMjc1LDEwICsxMzM3LDEzIEBAIGR3YXJmMl9s b2NhdGVfc2VjdGlvbnMgKGJmZCAqYWJmZCwgYXNlY3Rpb24gKnNlY3RwLCB2b2lkICppZ25vcmVf cHRyKQorQEAgLTEyNzEsMTAgKzEzMjAsMTMgQEAgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAoYmZk ICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZvaWQgKmlnbm9yZV9wdHIpCiAgfQogIAogIC8qIERl Y29tcHJlc3MgYSBzZWN0aW9uIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgemxpYi4gIFN0b3Jl IHRoZQpAQCAtNTIyOSw3ICsyODg1LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQK ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX2J5dGUgKipvdXRidWYsIGJmZF9zaXplX3R5 cGUgKm91dHNpemUpCiAgewogICAgYmZkICphYmZkID0gb2JqZmlsZS0+b2JmZDsKLUBAIC0xMjk1 LDYgKzEzNjAsNyBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIGFzZWN0aW9uICpzZWN0cCwKK0BAIC0xMjkxLDYgKzEzNDMsNyBAQCB6bGliX2RlY29t cHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwK ICAgIHpfc3RyZWFtIHN0cm07CiAgICBpbnQgcmM7CiAgICBpbnQgaGVhZGVyX3NpemUgPSAxMjsK QEAgLTUyMzcsNyArMjg5Myw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgCiAg ICBpZiAoYmZkX3NlZWsgKGFiZmQsIHNlY3RwLT5maWxlcG9zLCBTRUVLX1NFVCkgIT0gMAogICAg ICAgIHx8IGJmZF9icmVhZCAoY29tcHJlc3NlZF9idWZmZXIsIGNvbXByZXNzZWRfc2l6ZSwgYWJm ZCkgIT0gY29tcHJlc3NlZF9zaXplKQotQEAgLTEzMjQsOCArMTM5MCwxMyBAQCB6bGliX2RlY29t cHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwK K0BAIC0xMzIwLDggKzEzNzMsMTMgQEAgemxpYl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBhc2VjdGlvbiAqc2VjdHAsCiAgICBzdHJtLmF2YWlsX2luID0gY29t cHJlc3NlZF9zaXplIC0gaGVhZGVyX3NpemU7CiAgICBzdHJtLm5leHRfaW4gPSAoQnl0ZWYqKSBj b21wcmVzc2VkX2J1ZmZlciArIGhlYWRlcl9zaXplOwogICAgc3RybS5hdmFpbF9vdXQgPSB1bmNv bXByZXNzZWRfc2l6ZTsKQEAgLTUyNTMsNyArMjkwOSw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2 OTMgMTAwNjQ0CiAgICByYyA9IGluZmxhdGVJbml0ICgmc3RybSk7CiAgICB3aGlsZSAoc3RybS5h dmFpbF9pbiA+IDApCiAgICAgIHsKLUBAIC0xMzQ2LDI2ICsxNDE3LDE3NiBAQCB6bGliX2RlY29t cHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwK K0BAIC0xMzQyLDI2ICsxNDAwLDE3NiBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKICAgICAgZXJyb3IgKF8oIkR3YXJm IEVycm9yOiBjb25jbHVkaW5nIERXQVJGIHVuY29tcHJlc3Npb24gaW4gJyVzJzogJWQiKSwKICAg ICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpLCByYyk7CiAgCkBAIC01NDM1LDcgKzMw OTEsNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIAogICAgaWYgKGluZm8tPmFz ZWN0aW9uID09IE5VTEwgfHwgaW5mby0+c2l6ZSA9PSAwKQogICAgICByZXR1cm47Ci1AQCAtMTM3 OCw3ICsxNTk5LDcgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorQEAgLTEzNzQsNyArMTU4Miw3 IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKICAgICAgICAvKiBVcG9uIGRlY29tcHJlc3Npb24s IHVwZGF0ZSB0aGUgYnVmZmVyIGFuZCBpdHMgc2l6ZS4gICovCiAgICAgICAgaWYgKHN0cm5jbXAg KGhlYWRlciwgIlpMSUIiLCBzaXplb2YgKGhlYWRlcikpID09IDApCiAgICAgICAgICB7CkBAIC01 NDQ0LDcgKzMxMDAsNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIAkJCQkgICAm aW5mby0+c2l6ZSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgIH0KLUBAIC0xNDAxLDcg KzE2MjIsNyBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTM5Nyw3ICsxNjA1LDcgQEAg ZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2Fy ZjJfc2VjdGlvbl9pbmZvICppbmZvKQogIAogICAgICAgIGlmIChyZXRidWYgIT0gTUFQX0ZBSUxF RCkKICAJewpAQCAtNTQ1Myw3ICszMTA5LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2 NDQKICAJICBpbmZvLT5idWZmZXIgPSByZXRidWYgKyAoc2VjdHAtPmZpbGVwb3MgJiAocGFnZXNp emUgLSAxKSkgOwogIAkgIHJldHVybjsKICAJfQotQEAgLTE0MDksOCArMTYzMCwxNSBAQCBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTQwNSw4ICsxNjEzLDE1IEBAIGR3YXJmMl9yZWFkX3Nl Y3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5m byAqaW5mbykKICAjZW5kaWYKICAKICAgIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgYSBub3Jt YWwsIG5vdC1jb21wcmVzc2VkIHNlY3Rpb24uICAqLwpAQCAtNTQ3MSw3ICszMTI3LDcgQEAgaW5k ZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAKICAgIC8qIFdoZW4gZGVidWdnaW5nIC5vIGZp bGVzLCB3ZSBtYXkgbmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2VlCiAgICAgICBodHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwMi0wNC9tc2cwMDEzNi5odG1sIC4KLUBA IC0xNDE5LDYgKzE2NDcsOCBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTQxNSw2ICsx NjMwLDggQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0 cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQogICAgcmV0YnVmID0gc3ltZmlsZV9yZWxv Y2F0ZV9kZWJ1Z19zZWN0aW9uIChhYmZkLCBzZWN0cCwgYnVmKTsKICAgIGlmIChyZXRidWYgIT0g TlVMTCkKICAgICAgewpAQCAtNTQ4MCw3ICszMTM2LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5 MyAxMDA2NDQKICAgICAgICBpbmZvLT5idWZmZXIgPSByZXRidWY7CiAgICAgICAgcmV0dXJuOwog ICAgICB9Ci1AQCAtMTQyNyw2ICsxNjU3LDE5IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BA IC0xNDIzLDYgKzE2NDAsMTkgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQogICAgICAgIHx8IGJm ZF9icmVhZCAoYnVmLCBpbmZvLT5zaXplLCBhYmZkKSAhPSBpbmZvLT5zaXplKQogICAgICBlcnJv ciAoXygiRHdhcmYgRXJyb3I6IENhbid0IHJlYWQgRFdBUkYgZGF0YSBmcm9tICclcyciKSwKICAJ ICAgYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpOwpAQCAtNTUwMCwxMDIgKzMxNTYsMTMgQEAgaW5k ZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICB9CiAgCiAgLyogRmlsbCBpbiBTRUNUUCwgQlVG UCBhbmQgU0laRVAgd2l0aCBzZWN0aW9uIGluZm8sIGdpdmVuIE9CSkZJTEUgYW5kCi1AQCAtMTgx MCw2ICsyMDUzLDM3IEBAIGxvb2t1cF9zaWduYXR1cmVkX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLCBVTE9OR0VTVCBzaWcpCi0gICByZXR1cm4gZW50cnk7Ci0gfQotIAotKy8qIEZpbmQg dGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUgY29tcGlsYXRpb24gdW5pdCBmb3IgcmFuZ2UgbGlzdHMg YW5kCi0rICAgbG9jYXRpb24gbGlzdHMuICBJdCB3aWxsIG5vcm1hbGx5IGJlIHNwZWNpZmllZCBi eSBEV19BVF9sb3dfcGMuCi0rICAgSW4gRFdBUkYtMyBkcmFmdCA0LCB0aGUgYmFzZSBhZGRyZXNz IGNvdWxkIGJlIG92ZXJyaWRkZW4gYnkKLSsgICBEV19BVF9lbnRyeV9wYy4gIEl0J3MgYmVlbiBy ZW1vdmVkLCBidXQgR0NDIHN0aWxsIHVzZXMgdGhpcyBmb3IKLSsgICBjb21waWxhdGlvbiB1bml0 cyB3aXRoIGRpc2NvbnRpbnVvdXMgcmFuZ2VzLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2R3YXJm Ml9maW5kX2Jhc2VfYWRkcmVzcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQotK3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rCi0rICBjdS0+YmFzZV9r bm93biA9IDA7Ci0rICBjdS0+YmFzZV9hZGRyZXNzID0gMDsKLSsKLSsgIGF0dHIgPSBkd2FyZjJf YXR0ciAoZGllLCBEV19BVF9lbnRyeV9wYywgY3UpOwotKyAgaWYgKGF0dHIpCi0rICAgIHsKLSsg ICAgICBjdS0+YmFzZV9hZGRyZXNzID0gRFdfQUREUiAoYXR0cik7Ci0rICAgICAgY3UtPmJhc2Vf a25vd24gPSAxOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfbG93X3BjLCBjdSk7Ci0rICAgICAgaWYgKGF0dHIpCi0rCXsKLSsJ ICBjdS0+YmFzZV9hZGRyZXNzID0gRFdfQUREUiAoYXR0cik7Ci0rCSAgY3UtPmJhc2Vfa25vd24g PSAxOwotKwl9Ci0rICAgIH0KLSt9Ci0rCi0gLyogU3Vicm91dGluZSBvZiBwcm9jZXNzX3R5cGVf Y29tcF91bml0IGFuZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnNfaGFyZAotICAgIHRvIGNvbWJpbmUg dGhlIGNvbW1vbiBwYXJ0cy4KLSAgICBQcm9jZXNzIGEgY29tcGlsYXRpb24gdW5pdCBmb3IgYSBw c3ltdGFiLgotQEAgLTIzNTksNyArMjYzMyw3IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAo c3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKLSAJIGlnbm9yaW5nIHRoZW0uICAqLwotICAg ICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSAJCSBfKCJ1bmhhbmRsZWQgY29u dGFpbmluZyBESUUgdGFnICVkIGZvciBESUUgYXQgJWQiKSwKLS0JCSBwYXJlbnQtPnRhZywgcGRp LT5vZmZzZXQpOwotKwkJIHBhcmVudC0+dGFnLCByZWFsX3BkaS0+b2Zmc2V0KTsKLSAgICAgICBw YXJlbnQtPnNjb3BlID0gZ3JhbmRwYXJlbnRfc2NvcGU7Ci0gICAgIH0KLSAKLUBAIC0yMzc0LDEy ICsyNjQ4LDIyIEBAIHBhcnRpYWxfZGllX2Z1bGxfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2lu Zm8gKnBkaSwKLSAJCSAgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0gICBjaGFyICpw YXJlbnRfc2NvcGU7Ci0rICBzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcmVhbF9wZGk7Ci0gCi0t ICBwYXJlbnRfc2NvcGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHBkaSwgY3UpOwotLSAg aWYgKHBhcmVudF9zY29wZSA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0gIGVsc2UKLSsg IC8qIFdlIG5lZWQgdG8gbG9vayBhdCBvdXIgcGFyZW50IERJRTsgaWYgd2UgaGF2ZSBhIERXX0FU X3NwZWNpZmljYXRpb24sCi0rICAgICB0aGVuIHRoaXMgbWVhbnMgdGhlIHBhcmVudCBvZiB0aGUg c3BlY2lmaWNhdGlvbiBESUUuCi0rICAgICBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgZG9lcyB0 aGlzIGxvb3AgYWxzbywgYnV0IHdlIGRvIGl0IGhlcmUKLSsgICAgIHNpbmNlIHdlIG5lZWQgdG8g ZXhhbWluZSByZWFsX3BkaS0+cGFyZW50IG91cnNlbHZlcy4gICovCi0rCi0rICByZWFsX3BkaSA9 IHBkaTsKLSsgIHdoaWxlIChyZWFsX3BkaS0+aGFzX3NwZWNpZmljYXRpb24pCi0rICAgIHJlYWxf cGRpID0gZmluZF9wYXJ0aWFsX2RpZSAocmVhbF9wZGktPnNwZWNfb2Zmc2V0LCBjdSk7Ci0rCi0r ICBwYXJlbnRfc2NvcGUgPSBwYXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUgKHJlYWxfcGRpLCBjdSk7 Ci0rICBpZiAocGFyZW50X3Njb3BlICE9IE5VTEwpCi0gICAgIHJldHVybiB0eXBlbmFtZV9jb25j YXQgKE5VTEwsIHBhcmVudF9zY29wZSwgcGRpLT5uYW1lLCBjdSk7Ci0rCi0rICByZXR1cm4gTlVM TDsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0yMzk1LDEyICsyNjc5LDkgQEAgYWRkX3BhcnRp YWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKLSAKLSAgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0 cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwotIAotLSAgaWYgKHBkaV9uZWVkc19uYW1lc3Bh Y2UgKHBkaS0+dGFnKSkKLS0gICAgewotLSAgICAgIGFjdHVhbF9uYW1lID0gcGFydGlhbF9kaWVf ZnVsbF9uYW1lIChwZGksIGN1KTsKLS0gICAgICBpZiAoYWN0dWFsX25hbWUpCi0tCWJ1aWx0X2Fj dHVhbF9uYW1lID0gMTsKLS0gICAgfQotKyAgYWN0dWFsX25hbWUgPSBwYXJ0aWFsX2RpZV9mdWxs X25hbWUgKHBkaSwgY3UpOwotKyAgaWYgKGFjdHVhbF9uYW1lKQotKyAgICBidWlsdF9hY3R1YWxf bmFtZSA9IDE7Ci0gCi0gICBpZiAoYWN0dWFsX25hbWUgPT0gTlVMTCkKLSAgICAgYWN0dWFsX25h bWUgPSBwZGktPm5hbWU7Ci1AQCAtMjQ5MSw2ICsyNzcyLDEyIEBAIGFkZF9wYXJ0aWFsX3N5bWJv bCAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitA QCAtMjU0OCw2ICsyNzc4LDEzIEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxf ZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCQkJICAgJm9iamZpbGUtPmds b2JhbF9wc3ltYm9scywKICAJCQkgICAwLCAoQ09SRV9BRERSKSAwLCBjdS0+bGFuZ3VhZ2UsIG9i amZpbGUpOwogICAgICAgIGJyZWFrOwogKyAgICBjYXNlIERXX1RBR19tb2R1bGU6CiArICAgICAg YWRkX3BzeW1ib2xfdG9fbGlzdCAoYWN0dWFsX25hbWUsIHN0cmxlbiAoYWN0dWFsX25hbWUpLAor KwkJCSAgIGJ1aWx0X2FjdHVhbF9uYW1lLAogKwkJCSAgIE1PRFVMRV9ET01BSU4sIExPQ19TVEFU SUMsCiArCQkJICAgJm9iamZpbGUtPmdsb2JhbF9wc3ltYm9scywKICsJCQkgICAwLCAoQ09SRV9B RERSKSAwLCBjdS0+bGFuZ3VhZ2UsIG9iamZpbGUpOwpAQCAtNTYwMyw3MCArMzE3MCw3IEBAIGlu ZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6 CiAgICAgIGNhc2UgRFdfVEFHX2ludGVyZmFjZV90eXBlOgogICAgICBjYXNlIERXX1RBR19zdHJ1 Y3R1cmVfdHlwZToKLUBAIC0yNTMyLDM0ICsyODE5LDE3IEBAIGFkZF9wYXJ0aWFsX3N5bWJvbCAo c3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAg ICAgYnJlYWs7Ci0gICAgIH0KLSAKLS0gIC8qIENoZWNrIHRvIHNlZSBpZiB3ZSBzaG91bGQgc2Nh biB0aGUgbmFtZSBmb3IgcG9zc2libGUgbmFtZXNwYWNlCi0tICAgICBpbmZvLiAgT25seSBkbyB0 aGlzIGlmIHRoaXMgaXMgQysrLCBpZiB3ZSBkb24ndCBoYXZlIG5hbWVzcGFjZQotLSAgICAgZGVi dWdnaW5nIGluZm8gaW4gdGhlIGZpbGUsIGlmIHRoZSBwc3ltIGlzIG9mIGFuIGFwcHJvcHJpYXRl IHR5cGUKLS0gICAgIChvdGhlcndpc2Ugd2UnbGwgaGF2ZSBwc3ltID09IE5VTEwpLCBhbmQgaWYg d2UgYWN0dWFsbHkgaGFkIGEKLS0gICAgIG1hbmdsZWQgbmFtZSB0byBiZWdpbiB3aXRoLiAgKi8K LS0KLS0gIC8qIEZJWE1FIGRyb3cvMjAwNC0wMi0yMjogV2h5IGRvbid0IHdlIGRvIHRoaXMgZm9y IGNsYXNzZXMsIGkuZS4gdGhlCi0tICAgICBjYXNlcyB3aGljaCBkbyBub3Qgc2V0IFBTWU0gYWJv dmU/ICAqLwotLQotLSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwotLSAgICAg ICYmIGN1LT5oYXNfbmFtZXNwYWNlX2luZm8gPT0gMAotLSAgICAgICYmIHBzeW0gIT0gTlVMTAot LSAgICAgICYmIFNZTUJPTF9DUExVU19ERU1BTkdMRURfTkFNRSAocHN5bSkgIT0gTlVMTCkKLS0g ICAgY3BfY2hlY2tfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbHMgKFNZTUJPTF9DUExVU19ERU1B TkdMRURfTkFNRSAocHN5bSksCi0tCQkJCQkgb2JqZmlsZSk7Ci0tCi0gICBpZiAoYnVpbHRfYWN0 dWFsX25hbWUpCi0gICAgIHhmcmVlIChhY3R1YWxfbmFtZSk7Ci0gfQotIAotLS8qIERldGVybWlu ZSB3aGV0aGVyIGEgZGllIG9mIHR5cGUgVEFHIGxpdmluZyBpbiBhIEMrKyBjbGFzcyBvcgotLSAg IG5hbWVzcGFjZSBuZWVkcyB0byBoYXZlIHRoZSBuYW1lIG9mIHRoZSBzY29wZSBwcmVwZW5kZWQg dG8gdGhlCi0tICAgbmFtZSBsaXN0ZWQgaW4gdGhlIGRpZS4gICovCi0rLyogRGV0ZXJtaW5lIHdo ZXRoZXIgRElFIG5lZWRzIHRvIGhhdmUgdGhlIG5hbWUgb2YgdGhlIHNjb3BlIHByZXBlbmRlZAot KyAgIHRvIHRoZSBuYW1lIGxpc3RlZCBpbiB0aGUgZGllLiAgKi8KLSAKLSBzdGF0aWMgaW50Ci0t cGRpX25lZWRzX25hbWVzcGFjZSAoZW51bSBkd2FyZl90YWcgdGFnKQotK2RpZV9uZWVkc19uYW1l c3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0t ICBzd2l0Y2ggKHRhZykKLSsgIHN3aXRjaCAoZGllLT50YWcpCi0gICAgIHsKLSAgICAgY2FzZSBE V19UQUdfbmFtZXNwYWNlOgotICAgICBjYXNlIERXX1RBR190eXBlZGVmOgotQEAgLTI1NjksNyAr MjgzOSwyMyBAQCBwZGlfbmVlZHNfbmFtZXNwYWNlIChlbnVtIGR3YXJmX3RhZyB0YWcpCi0gICAg IGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5 cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0b3I6Ci0rICAgIGNhc2UgRFdfVEFHX3N1YnBy b2dyYW06Ci0rICAgIGNhc2UgRFdfVEFHX21lbWJlcjoKLSAgICAgICByZXR1cm4gMTsKLSsKLSsg ICAgY2FzZSBEV19UQUdfdmFyaWFibGU6Ci0rICAgICAgewotKwlzdHJ1Y3QgYXR0cmlidXRlICph dHRyOwotKwlhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3Up OwotKwlpZiAoYXR0cikKLSsJICByZXR1cm4gMTsKLSsJYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2V4dGVybmFsLCBjdSk7Ci0rCWlmIChhdHRyID09IE5VTEwgJiYgZGllLT5wYXJlbnQt PnRhZyAhPSBEV19UQUdfbmFtZXNwYWNlKQotKwkgIHJldHVybiAwOwotKwlyZXR1cm4gMTsKLSsg ICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIDA7 Ci0gICAgIH0KLUBAIC0yNjAyLDEyICsyODg4LDEyIEBAIHN0YXRpYyB2b2lkCitAQCAtMjY2MSwx MiArMjg5OCwxMiBAQCBzdGF0aWMgdm9pZAogIGFkZF9wYXJ0aWFsX21vZHVsZSAoc3RydWN0IHBh cnRpYWxfZGllX2luZm8gKnBkaSwgQ09SRV9BRERSICpsb3dwYywKICAJCSAgICBDT1JFX0FERFIg KmhpZ2hwYywgaW50IG5lZWRfcGMsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIHsKQEAgLTU2ODMs MzUgKzMxODcsNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIH0KICAKICAvKiBS ZWFkIGEgcGFydGlhbCBkaWUgY29ycmVzcG9uZGluZyB0byBhIHN1YnByb2dyYW0gYW5kIGNyZWF0 ZSBhIHBhcnRpYWwKLUBAIC0yNjk4LDI3ICsyOTg0LDYgQEAgZ3Vlc3Nfc3RydWN0dXJlX25hbWUg KHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpzdHJ1Y3RfcGRpLAotIAotICAgICAgIGlmIChyZWFs X3BkaS0+ZGllX3BhcmVudCAhPSBOVUxMKQotIAlyZXR1cm47Ci0tCi0tICAgICAgd2hpbGUgKGNo aWxkX3BkaSAhPSBOVUxMKQotLQl7Ci0tCSAgaWYgKGNoaWxkX3BkaS0+dGFnID09IERXX1RBR19z dWJwcm9ncmFtKQotLQkgICAgewotLQkgICAgICBjaGFyICphY3R1YWxfY2xhc3NfbmFtZQotLQkJ PSBsYW5ndWFnZV9jbGFzc19uYW1lX2Zyb21fcGh5c25hbWUgKGN1LT5sYW5ndWFnZV9kZWZuLAot LQkJCQkJCSAgICAgY2hpbGRfcGRpLT5uYW1lKTsKLS0JICAgICAgaWYgKGFjdHVhbF9jbGFzc19u YW1lICE9IE5VTEwpCi0tCQl7Ci0tCQkgIHN0cnVjdF9wZGktPm5hbWUKLS0JCSAgICA9IG9ic2F2 ZXN0cmluZyAoYWN0dWFsX2NsYXNzX25hbWUsCi0tCQkJCSAgICBzdHJsZW4gKGFjdHVhbF9jbGFz c19uYW1lKSwKLS0JCQkJICAgICZjdS0+Y29tcF91bml0X29ic3RhY2spOwotLQkJICB4ZnJlZSAo YWN0dWFsX2NsYXNzX25hbWUpOwotLQkJfQotLQkgICAgICBicmVhazsKLS0JICAgIH0KLS0KLS0J ICBjaGlsZF9wZGkgPSBjaGlsZF9wZGktPmRpZV9zaWJsaW5nOwotLQl9Ci0gICAgIH0KLSB9Ci0g Ci1AQCAtMzI5NSw2ICszNTYwLDE0IEBAIHByb2Nlc3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzMzMCw2ICszNTY3LDE0IEBAIHByb2Nlc3Nf ZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIGNh c2UgRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0aW9uOgogICAgICBjYXNlIERXX1RBR19pbXBvcnRl ZF9tb2R1bGU6CiAgICAgICAgcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8gPSAxOwpAQCAt NTcyNiwyNDYgKzMyMDIsMjEgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAgICAg ICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMICYmIChkaWUtPnRhZyA9PSBEV19UQUdfaW1wb3J0ZWRf ZGVjbGFyYXRpb24KICAJCQkJIHx8IGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9mb3J0cmFuKSkK ICAJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJUYWcgJyVzJyBoYXMgdW5leHBl Y3RlZCBjaGlsZHJlbiIpLAotQEAgLTMzMTAsNDEgKzM1ODMsNzEgQEAgcHJvY2Vzc19kaWUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAvKiBSZXR1cm4gdGhl IGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9mIERJRSwgYmFzZWQgb24gaXRzIERXX0FUX25hbWUuCi0g ICAgSWYgc2NvcGUgcXVhbGlmaWVycyBhcmUgYXBwcm9wcmlhdGUgdGhleSB3aWxsIGJlIGFkZGVk LiAgVGhlIHJlc3VsdAotICAgIHdpbGwgYmUgYWxsb2NhdGVkIG9uIHRoZSBvYmpmaWxlX29ic3Rh Y2ssIG9yIE5VTEwgaWYgdGhlIERJRSBkb2VzCi0tICAgbm90IGhhdmUgYSBuYW1lLiAgKi8KLSsg ICBub3QgaGF2ZSBhIG5hbWUuCi0rCi0rICAgVGhlIG91dHB1dCBzdHJpbmcgd2lsbCBiZSBjYW5v bmljYWxpemVkIChpZiBDKysvSmF2YSkuICovCi0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKgotIGR3 YXJmMl9mdWxsX25hbWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKLSB7Ci0tICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAgY2hhciAqcHJlZml4LCAqbmFt ZTsKLS0gIHN0cnVjdCB1aV9maWxlICpidWYgPSBOVUxMOwotKyAgY2hhciAqbmFtZTsKLSAKLSAg IG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0tICBpZiAoIW5hbWUpCi0tICAgIHJldHVy biBOVUxMOwotIAotICAgLyogVGhlc2UgYXJlIHRoZSBvbmx5IGxhbmd1YWdlcyB3ZSBrbm93IGhv dyB0byBxdWFsaWZ5IG5hbWVzIGluLiAgKi8KLS0gIGlmIChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3Vh Z2VfY3BsdXMKLS0gICAgICAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfamF2YSkKLS0gICAg cmV0dXJuIG5hbWU7Ci0rICBpZiAobmFtZSAhPSBOVUxMCi0rICAgICAgJiYgKGN1LT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9jcGx1cyB8fCBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkpCi0r ICAgIHsKLSsgICAgICBpZiAoZGllX25lZWRzX25hbWVzcGFjZSAoZGllLCBjdSkpCi0rCXsKLSsJ ICBsb25nIGxlbmd0aDsKLSsJICBjaGFyICpwcmVmaXg7Ci0rCSAgc3RydWN0IHVpX2ZpbGUgKmJ1 ZjsKLSAKLS0gIC8qIElmIG5vIHByZWZpeCBpcyBuZWNlc3NhcnkgZm9yIHRoaXMgdHlwZSBvZiBE SUUsIHJldHVybiB0aGUKLS0gICAgIHVucXVhbGlmaWVkIG5hbWUuICBUaGUgb3RoZXIgdGhyZWUg dGFncyBsaXN0ZWQgY291bGQgYmUgaGFuZGxlZAotLSAgICAgaW4gcGRpX25lZWRzX25hbWVzcGFj ZSwgYnV0IHRoYXQgcmVxdWlyZXMgYnJvYWRlciBjaGFuZ2VzLiAgKi8KLS0gIGlmICghcGRpX25l ZWRzX25hbWVzcGFjZSAoZGllLT50YWcpCi0tICAgICAgJiYgZGllLT50YWcgIT0gRFdfVEFHX3N1 YnByb2dyYW0KLS0gICAgICAmJiBkaWUtPnRhZyAhPSBEV19UQUdfdmFyaWFibGUKLS0gICAgICAm JiBkaWUtPnRhZyAhPSBEV19UQUdfbWVtYmVyKQotLSAgICByZXR1cm4gbmFtZTsKLSsJICBidWYg PSBtZW1fZmlsZW9wZW4gKCk7Ci0rCSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBj dSk7Ci0rCSAgaWYgKCpwcmVmaXggIT0gJ1wwJykKLSsJICAgIHsKLSsJICAgICAgY2hhciAqcHJl Zml4ZWRfbmFtZSA9IHR5cGVuYW1lX2NvbmNhdCAoTlVMTCwgcHJlZml4LCBuYW1lLCBjdSk7Ci0r CSAgICAgIGZwdXRzX3VuZmlsdGVyZWQgKHByZWZpeGVkX25hbWUsIGJ1Zik7Ci0rCSAgICAgIHhm cmVlIChwcmVmaXhlZF9uYW1lKTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBmcHV0c191bmZp bHRlcmVkIChuYW1lLCBidWYpOwotIAotLSAgcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGll LCBjdSk7Ci0tICBpZiAoKnByZWZpeCAhPSAnXDAnKQotLSAgICBuYW1lID0gdHlwZW5hbWVfY29u Y2F0ICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgcHJlZml4LAotLQkJCSAgICBuYW1l LCBjdSk7Ci0rCSAgbmFtZSA9IHVpX2ZpbGVfb2JzYXZlc3RyaW5nIChidWYsICZjdS0+b2JqZmls ZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCQkgICAgICAgJmxlbmd0aCk7Ci0rCSAgdWlfZmlsZV9k ZWxldGUgKGJ1Zik7Ci0rCi0rCSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykK LSsJICAgIHsKLSsJICAgICAgY2hhciAqY25hbWUKLSsJCT0gZHdhcmYyX2Nhbm9uaWNhbGl6ZV9u YW1lIChuYW1lLCBjdSwKLSsJCQkJCSAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7 Ci0rCSAgICAgIGlmIChjbmFtZSAhPSBOVUxMKQotKwkJbmFtZSA9IGNuYW1lOwotKwkgICAgfQot Kwl9Ci0rICAgIH0KLSAKLSAgIHJldHVybiBuYW1lOwotIH0KLSAKLSsvKiBSZWFkIHRoZSBnaXZl biBESUUncyBEV19BVF9kZWNsX2xpbmUgbnVtYmVyLiAgUmV0dXJuIC0xIGlmIGluIGNhc2Ugb2Yg YW4KLSsgICBlcnJvci4gICovCi0rCi0rc3RhdGljIGludAotK2R3YXJmMl9yZWFkX2RlY2xfbGlu ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0 cnVjdCBhdHRyaWJ1dGUgKmxpbmVfYXR0cjsKLSsKLSsgIGxpbmVfYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2RlY2xfbGluZSwgY3UpOwotKyAgaWYgKGxpbmVfYXR0cikKLSsgICAgcmV0 dXJuIERXX1VOU05EIChsaW5lX2F0dHIpOwotKwotKyAgcmV0dXJuIC0xOwotK30KLSsKLSAvKiBS ZWFkIHRoZSBpbXBvcnQgc3RhdGVtZW50IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gZGllIGFuZCBy ZWNvcmQgaXQuICAqLwotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzM1NCw5ICszNjU3LDE1IEBAIHJl YWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQotICAgc3RydWN0IGRpZV9pbmZvICppbXBvcnRlZF9kaWU7Ci0gICBjb25zdCBjaGFy ICppbXBvcnRlZF9uYW1lOwotICAgY29uc3QgY2hhciAqaW1wb3J0ZWRfbmFtZV9wcmVmaXg7Ci0t ICBjb25zdCBjaGFyICppbXBvcnRfcHJlZml4OwotICAgY2hhciAqY2Fub25pY2FsX25hbWU7Ci0t Ci0rICBjb25zdCBjaGFyICppbXBvcnRfYWxpYXM7Ci0rICBjb25zdCBjaGFyICppbXBvcnRlZF9k ZWNsYXJhdGlvbiA9ICIiOwotKyAgY29uc3QgY2hhciAqaW1wb3J0X3ByZWZpeDsKLSsgIAotKyAg aW50IGxpbmVfbnVtYmVyID0gLTE7Ci0rICAKLSsgIGludCBpc19hbm9ueW1vdXMgPSAwOwotKyAg Ci0gICBpbXBvcnRfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2ltcG9ydCwgY3UpOwot ICAgaWYgKGltcG9ydF9hdHRyID09IE5VTEwpCi0gICAgIHsKLUBAIC0zNDA0LDE3ICszNzEzLDI3 IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgLyogRklYTUU6IGR3 YXJmMl9uYW1lIChkaWUpOyBmb3IgdGhlIGxvY2FsIG5hbWUgYWZ0ZXIgaW1wb3J0LiAgKi8KLS0K LS0gIC8qIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIHN0YXRlbWVudCBpcyBiZWluZyBpbXBvcnRlZCB0 by4gICovCi0rICAvKiBGaWd1cmUgb3V0IHRoZSBsb2NhbCBuYW1lIGFmdGVyIGltcG9ydC4gICov Ci0rICBpbXBvcnRfYWxpYXMgPSBkd2FyZjJfbmFtZShkaWUsIGN1KTsKLSsgIGlmKGltcG9ydF9h bGlhcyA9PSBOVUxMKXsKLSsgICAgaW1wb3J0X2FsaWFzID0gIiI7Ci0rICB9Ci0rICAKLSsgIC8q IERldGVybWluZSB0aGUgbGluZSBudW1iZXIgYXQgd2hpY2ggdGhlIGltcG9ydCB3YXMgbWFkZSAq LwotKyAgbGluZV9udW1iZXIgPSBkd2FyZjJfcmVhZF9kZWNsX2xpbmUoZGllLCBjdSk7Ci0rICAK LSsgIC8qIEZpZ3VyZSBvdXQgd2hlcmUgdGhlIHN0YXRlbWVudCBpcyBiZWluZyBpbXBvcnRlZCB0 byAqLwotICAgaW1wb3J0X3ByZWZpeCA9IGRldGVybWluZV9wcmVmaXggKGRpZSwgY3UpOwotIAot ICAgLyogRmlndXJlIG91dCB3aGF0IHRoZSBzY29wZSBvZiB0aGUgaW1wb3J0ZWQgZGllIGlzIGFu ZCBwcmVwZW5kIGl0Ci0gICAgICB0byB0aGUgbmFtZSBvZiB0aGUgaW1wb3J0ZWQgZGllLiAgKi8K LSAgIGltcG9ydGVkX25hbWVfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoaW1wb3J0ZWRfZGll LCBjdSk7Ci0tCi0tICBpZiAoc3RybGVuIChpbXBvcnRlZF9uYW1lX3ByZWZpeCkgPiAwKQotLSAg ICB7Ci0rICAKLSsgIGlmKGltcG9ydGVkX2RpZS0+dGFnICE9IERXX1RBR19uYW1lc3BhY2Upewot KyAgICBpbXBvcnRlZF9kZWNsYXJhdGlvbiA9IGltcG9ydGVkX25hbWU7Ci0rICAgIGNhbm9uaWNh bF9uYW1lID0gKGNoYXIqKWltcG9ydGVkX25hbWVfcHJlZml4OwotKyAgfWVsc2V7Ci0rICAgIGlm KHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpID4gMCl7Ci0gICAgICAgY2Fub25pY2FsX25h bWUgPSBhbGxvY2EgKHN0cmxlbiAoaW1wb3J0ZWRfbmFtZV9wcmVmaXgpICsgMiArIHN0cmxlbiAo aW1wb3J0ZWRfbmFtZSkgKyAxKTsKLSAgICAgICBzdHJjcHkgKGNhbm9uaWNhbF9uYW1lLCBpbXBv cnRlZF9uYW1lX3ByZWZpeCk7Ci0gICAgICAgc3RyY2F0IChjYW5vbmljYWxfbmFtZSwgIjo6Iik7 Ci1AQCAtMzQyNSw4ICszNzQ0LDE0IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgIGNhbm9uaWNhbF9uYW1l ID0gYWxsb2NhIChzdHJsZW4gKGltcG9ydGVkX25hbWUpICsgMSk7Ci0gICAgICAgc3RyY3B5IChj YW5vbmljYWxfbmFtZSwgaW1wb3J0ZWRfbmFtZSk7Ci0gICAgIH0KLS0KLS0gIHVzaW5nX2RpcmVj dGl2ZXMgPSBjcF9hZGRfdXNpbmcgKGltcG9ydF9wcmVmaXgsY2Fub25pY2FsX25hbWUsIHVzaW5n X2RpcmVjdGl2ZXMpOwotKyAgfQotKyAgCi0rICB1c2luZ19kaXJlY3RpdmVzID0gY3BfYWRkX3Vz aW5nIChpbXBvcnRfcHJlZml4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y2Fub25pY2FsX25hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBv cnRfYWxpYXMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRlZF9k ZWNsYXJhdGlvbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVt YmVyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmdfZGlyZWN0aXZl cyk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMzY5NSw2ICs0MDIwLDE0IEBAIGluaGVyaXRf YWJzdHJhY3RfZGllcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAo ZGllLCBEV19BVF9hYnN0cmFjdF9vcmlnaW4sIGN1KTsKLSsgIAotKyAgLyogR0NDIDQuMyBpbmNv cnJlY3RseSB1c2VzIERXX0FUX3NwZWNpZmljYXRpb24gdG8gaW5kaWNhdGUgZGllIGluaGVyaXRl bmNlCi0rICAgICBpbiB0aGUgY2FzZSBvZiBpbXBvcnQgc3RhdGVtZW50cy4gVGhlIGZvbGxvd2lu ZyBpcyB0byBhY2NvbW1vZGF0ZSAKLSsgICAgIHRoYXQuICAqLwotKyAgaWYoIWF0dHIpewotKyAg ICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3BlY2lmaWNhdGlvbiwgY3UpOwotKyAg fQotKyAgCi0gICBpZiAoIWF0dHIpCi0gICAgIHJldHVybjsKLSAKLUBAIC0zNzkzLDYgKzQxMjYs NyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKLSAgIGNoYXIgKm5hbWU7Ci0gICBDT1JFX0FERFIgYmFzZWFkZHI7Ci0gICBzdHJ1 Y3QgYmxvY2sgKmJsb2NrOwotKyAgdW5zaWduZWQgZGllX2NoaWxkcmVuID0gMDsKLSAgIGludCBp bmxpbmVkX2Z1bmMgPSAoZGllLT50YWcgPT0gRFdfVEFHX2lubGluZWRfc3Vicm91dGluZSk7Ci0g Ci0gICBpZiAoaW5saW5lZF9mdW5jKQotQEAgLTM4MTEsMTMgKzQxNDUsMjMgQEAgcmVhZF9mdW5j X3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gCi0g ICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZG X1RFWFQgKG9iamZpbGUpKTsKLSAKLS0gIG5hbWUgPSBkd2FyZjJfbGlua2FnZV9uYW1lIChkaWUs IGN1KTsKLSsgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0gCi0gICAvKiBJZ25vcmUg ZnVuY3Rpb25zIHdpdGggbWlzc2luZyBvciBlbXB0eSBuYW1lcyBhbmQgZnVuY3Rpb25zIHdpdGgK LSAgICAgIG1pc3Npbmcgb3IgaW52YWxpZCBsb3cgYW5kIGhpZ2ggcGMgYXR0cmlidXRlcy4gICov Ci0tICBpZiAobmFtZSA9PSBOVUxMIHx8ICFkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAmbG93 cGMsICZoaWdocGMsIGN1KSkKLSsgIGlmIChuYW1lID09IE5VTEwgfHwgIWR3YXJmMl9nZXRfcGNf Ym91bmRzIChkaWUsICZsb3dwYywgJmhpZ2hwYywgY3UsIE5VTEwpKXsKLSsgICAgLyogZXhwbG9y ZSBhYnN0cmFjdCBvcmlnaW5zIGlmIHByZXNlbnQuIFRoZXkgbWlnaHQgY29udGFpbiB1c2VmdWwg aW5mb3JtYXRpb24KLSsgICAgIHN1Y2ggYXMgaW1wb3J0IHN0YXRlbWVudHMuICovCi0rICAgIGNo aWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGll LT50YWcpCi0rICAgICAgewotKwljaGlsZF9kaWUgPSBzaWJsaW5nX2RpZSAoY2hpbGRfZGllKTsK LSsJZGllX2NoaWxkcmVuKys7Ci0rICAgICAgfQotKyAgICBpbmhlcml0X2Fic3RyYWN0X2RpZXMo ZGllLCBjdSk7Ci0gICAgIHJldHVybjsKLS0KLSsgIH0KLSsgIAotICAgbG93cGMgKz0gYmFzZWFk ZHI7Ci0gICBoaWdocGMgKz0gYmFzZWFkZHI7Ci0gCi1AQCAtMzg0NCwxNCArNDE4OCwxOSBAQCBy ZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC0zODgxLDYgKzQxMjYsMTMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBjdS0+bGlzdF9pbl9zY29wZSA9 ICZsb2NhbF9zeW1ib2xzOwogIAotLSAgaWYgKGRpZS0+Y2hpbGQgIT0gTlVMTCkKICsgIHN3aXRj aCAoY3UtPmxhbmd1YWdlKQotICAgICB7Ci0tICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsK LS0gICAgICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQotLQl7Ci0tCSAgcHJv Y2Vzc19kaWUgKGNoaWxkX2RpZSwgY3UpOwotLQkgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChj aGlsZF9kaWUpOwotLQl9CisrICAgIHsKICsgICAgY2FzZSBsYW5ndWFnZV9mb3J0cmFuOgogKyAg ICAgIGN1LT5sYW5ndWFnZV9zcGVjaWZpYy5mb3J0cmFuLnVzZSA9IE5VTEw7CiArICAgICAgYnJl YWs7CiArICAgIH0KICsKLSsgIGNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICB3aGlsZSAoY2hp bGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQotKyAgICB7Ci0rICAgICAgcHJvY2Vzc19kaWUgKGNo aWxkX2RpZSwgY3UpOwotKyAgICAgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUp OwotKyAgICAgIGRpZV9jaGlsZHJlbisrOwotICAgICB9Ci0gCi0gICBpbmhlcml0X2Fic3RyYWN0 X2RpZXMgKGRpZSwgY3UpOwotQEAgLTM4NjcsNiArNDIxNiwxMyBAQCByZWFkX2Z1bmNfc2NvcGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIGlmIChkaWUt PmNoaWxkICE9IE5VTEwpCisgICAgIHsKKyAgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwor QEAgLTM5MDQsNiArNDE1NiwxMyBAQCByZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJCQlkZXRlcm1pbmVfcHJlZml4IChkaWUsIGN1 KSwKICAJCQlwcm9jZXNzaW5nX2hhc19uYW1lc3BhY2VfaW5mbyk7CiAgCkBAIC01OTc5LDIxNiAr MzIzMCw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgICAvKiBJZiB3ZSBoYXZl IGFkZHJlc3MgcmFuZ2VzLCByZWNvcmQgdGhlbS4gICovCiAgICBkd2FyZjJfcmVjb3JkX2Jsb2Nr X3JhbmdlcyAoZGllLCBibG9jaywgYmFzZWFkZHIsIGN1KTsKICAgIAotQEAgLTM5MDMsNyArNDI1 OSw3IEBAIHJlYWRfbGV4aWNhbF9ibG9ja19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgYXMgbXVsdGlwbGUgbGV4aWNhbCBibG9ja3M/ICBI YW5kbGluZyBjaGlsZHJlbiBpbiBhIHNhbmUgd2F5IHdvdWxkCi0gICAgICBiZSBuYXN0eS4gIE1p Z2h0IGJlIGVhc2llciB0byBwcm9wZXJseSBleHRlbmQgZ2VuZXJpYyBibG9ja3MgdG8gCi0gICAg ICBkZXNjcmliZSByYW5nZXMuICAqLwotLSAgaWYgKCFkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGll LCAmbG93cGMsICZoaWdocGMsIGN1KSkKLSsgIGlmICghZHdhcmYyX2dldF9wY19ib3VuZHMgKGRp ZSwgJmxvd3BjLCAmaGlnaHBjLCBjdSwgTlVMTCkpCi0gICAgIHJldHVybjsKLSAgIGxvd3BjICs9 IGJhc2VhZGRyOwotICAgaGlnaHBjICs9IGJhc2VhZGRyOwotQEAgLTM5MjAsNyArNDI3Niw3IEBA IHJlYWRfbGV4aWNhbF9ibG9ja19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotICAgICB9Ci0gICBuZXcgPSBwb3BfY29udGV4dCAoKTsKLSAKLS0gIGlm IChsb2NhbF9zeW1ib2xzICE9IE5VTEwpCi0rICBpZiAobG9jYWxfc3ltYm9scyAhPSBOVUxMIHx8 IHVzaW5nX2RpcmVjdGl2ZXMgIT0gTlVMTCkKLSAgICAgewotICAgICAgIHN0cnVjdCBibG9jayAq YmxvY2sKLSAgICAgICAgID0gZmluaXNoX2Jsb2NrICgwLCAmbG9jYWxfc3ltYm9scywgbmV3LT5v bGRfYmxvY2tzLCBuZXctPnN0YXJ0X2FkZHIsCi1AQCAtNDA3NSw3ICs0NDMxLDggQEAgZHdhcmYy X3Jhbmdlc19yZWFkICh1bnNpZ25lZCBvZmZzZXQsIENPUkVfQUREUiAqbG93X3JldHVybiwKLSAg ICBkaXNjb250aW51b3VzLCBpLmUuIGRlcml2ZWQgZnJvbSBEV19BVF9yYW5nZXMgaW5mb3JtYXRp b24uICAqLwotIHN0YXRpYyBpbnQKLSBkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoc3RydWN0IGRpZV9p bmZvICpkaWUsIENPUkVfQUREUiAqbG93cGMsCi0tCQkgICAgICBDT1JFX0FERFIgKmhpZ2hwYywg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rCQkgICAgICBDT1JFX0FERFIgKmhpZ2hwYywgc3RydWN0 IGR3YXJmMl9jdSAqY3UsCi0rCQkgICAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCkKLSB7 Ci0gICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotICAgQ09SRV9BRERSIGxvdyA9IDA7Ci1AQCAt NDEwMyw3ICs0NDYwLDcgQEAgZHdhcmYyX2dldF9wY19ib3VuZHMgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBDT1JFX0FERFIgKmxvd3BjLAotIAl7Ci0gCSAgLyogVmFsdWUgb2YgdGhlIERXX0FUX3Jh bmdlcyBhdHRyaWJ1dGUgaXMgdGhlIG9mZnNldCBpbiB0aGUKLSAJICAgICAuZGVidWdfcmFuZ2Vz IHNlY3Rpb24uICAqLwotLQkgIGlmICghZHdhcmYyX3Jhbmdlc19yZWFkIChEV19VTlNORCAoYXR0 ciksICZsb3csICZoaWdoLCBjdSwgTlVMTCkpCi0rCSAgaWYgKCFkd2FyZjJfcmFuZ2VzX3JlYWQg KERXX1VOU05EIChhdHRyKSwgJmxvdywgJmhpZ2gsIGN1LCBwc3QpKQotIAkgICAgcmV0dXJuIDA7 Ci0gCSAgLyogRm91bmQgZGlzY29udGludW91cyByYW5nZSBvZiBhZGRyZXNzZXMuICAqLwotIAkg IHJldCA9IC0xOwotQEAgLTQxNDIsNyArNDQ5OSw3IEBAIGR3YXJmMl9nZXRfc3VicHJvZ3JhbV9w Y19ib3VuZHMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAotICAgQ09SRV9BRERSIGxvdywgaGlnaDsK LSAgIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGQgPSBkaWUtPmNoaWxkOwotIAotLSAgaWYgKGR3YXJm Ml9nZXRfcGNfYm91bmRzIChkaWUsICZsb3csICZoaWdoLCBjdSkpCi0rICBpZiAoZHdhcmYyX2dl dF9wY19ib3VuZHMgKGRpZSwgJmxvdywgJmhpZ2gsIGN1LCBOVUxMKSkKLSAgICAgewotICAgICAg ICpsb3dwYyA9IG1pbiAoKmxvd3BjLCBsb3cpOwotICAgICAgICpoaWdocGMgPSBtYXggKCpoaWdo cGMsIGhpZ2gpOwotQEAgLTQxNzksNyArNDUzNiw3IEBAIGdldF9zY29wZV9wY19ib3VuZHMgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLAotICAgQ09SRV9BRERSIGJlc3RfaGlnaCA9IChDT1JFX0FERFIp IDA7Ci0gICBDT1JFX0FERFIgY3VycmVudF9sb3csIGN1cnJlbnRfaGlnaDsKLSAKLS0gIGlmIChk d2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAmY3VycmVudF9sb3csICZjdXJyZW50X2hpZ2gsIGN1 KSkKLSsgIGlmIChkd2FyZjJfZ2V0X3BjX2JvdW5kcyAoZGllLCAmY3VycmVudF9sb3csICZjdXJy ZW50X2hpZ2gsIGN1LCBOVUxMKSkKLSAgICAgewotICAgICAgIGJlc3RfbG93ID0gY3VycmVudF9s b3c7Ci0gICAgICAgYmVzdF9oaWdoID0gY3VycmVudF9oaWdoOwotQEAgLTQ0NzQsNyArNDgzMSw3 IEBAIGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVf aW5mbyAqZGllLAotIAlyZXR1cm47Ci0gCi0gICAgICAgLyogR2V0IHBoeXNpY2FsIG5hbWUuICAq LwotLSAgICAgIHBoeXNuYW1lID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAoZGllLCBjdSk7Ci0rICAg ICAgcGh5c25hbWUgPSBkd2FyZjJfcGh5c25hbWUgKGRpZSwgY3UpOwotIAotICAgICAgIC8qIFRo ZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGggdGhpcyBvYmpmaWxlLCBzbyB3 ZSBkb24ndAotIAkgbmVlZCB0byBkdXBsaWNhdGUgaXQgZm9yIHRoZSB0eXBlLiAgKi8KLUBAIC00 NjE3LDcgKzQ5NzQsNyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8g KmZpcCwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0gICAgIHJldHVybjsKLSAKLSAgIC8qIEdldCB0 aGUgbWFuZ2xlZCBuYW1lLiAgKi8KLS0gIHBoeXNuYW1lID0gZHdhcmYyX2xpbmthZ2VfbmFtZSAo ZGllLCBjdSk7Ci0rICBwaHlzbmFtZSA9IGR3YXJmMl9waHlzbmFtZSAoZGllLCBjdSk7Ci0gCi0g ICAvKiBMb29rIHVwIG1lbWJlciBmdW5jdGlvbiBuYW1lIGluIGZpZWxkbGlzdC4gICovCi0gICBm b3IgKGkgPSAwOyBpIDwgZmlwLT5uZm5maWVsZHM7IGkrKykKLUBAIC00NjYxLDcgKzUwMTgsNyBA QCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRp ZV9pbmZvICpkaWUsCi0gICAvKiBUaGUgbmFtZSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBhbG9uZyB3 aXRoIHRoaXMgb2JqZmlsZSwgc28gd2UgZG9uJ3QKLSAgICAgIG5lZWQgdG8gZHVwbGljYXRlIGl0 IGZvciB0aGUgdHlwZS4gICovCi0gICBmbnAtPnBoeXNuYW1lID0gcGh5c25hbWUgPyBwaHlzbmFt ZSA6ICIiOwotLSAgZm5wLT50eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0rICBmbnAtPnR5 cGUgPSBhbGxvY190eXBlIChvYmpmaWxlLCBOVUxMKTsKLSAgIHRoaXNfdHlwZSA9IHJlYWRfdHlw ZV9kaWUgKGRpZSwgY3UpOwotICAgaWYgKHRoaXNfdHlwZSAmJiBUWVBFX0NPREUgKHRoaXNfdHlw ZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCi0gICAgIHsKLUBAIC00NzIxLDE4ICs1MDc4LDE4IEBAIGR3 YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKLSAgICAgewotICAgICAgIC8qIFN1cHBvcnQgdGhlIC5kZWJ1Z19sb2Mgb2Zmc2V0 cyAqLwotICAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotLSAgICAgICAgewot LSAgICAgICAgICBmbnAtPnZvZmZzZXQgPSBkZWNvZGVfbG9jZGVzYyAoRFdfQkxPQ0sgKGF0dHIp LCBjdSkgKyAyOwotLSAgICAgICAgfQotKwl7Ci0rCSAgZm5wLT52b2Zmc2V0ID0gZGVjb2RlX2xv Y2Rlc2MgKERXX0JMT0NLIChhdHRyKSwgY3UpICsgMjsKLSsJfQotICAgICAgIGVsc2UgaWYgKGF0 dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikpCi0tICAgICAgICB7Ci0rCXsKLSAJICBk d2FyZjJfY29tcGxleF9sb2NhdGlvbl9leHByX2NvbXBsYWludCAoKTsKLS0gICAgICAgIH0KLSsJ fQotICAgICAgIGVsc2UKLS0gICAgICAgIHsKLSsJewotIAkgIGR3YXJmMl9pbnZhbGlkX2F0dHJp Yl9jbGFzc19jb21wbGFpbnQgKCJEV19BVF92dGFibGVfZWxlbV9sb2NhdGlvbiIsCi0gCQkJCQkJ IGZpZWxkbmFtZSk7Ci0tICAgICAgICB9Ci0rCX0KLSAgICB9Ci0gfQotIAotQEAgLTQ4NDUsNyAr NTIwMiw3IEBAIHF1aXJrX2djY19tZW1iZXJfZnVuY3Rpb25fcG9pbnRlciAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICByZXR1cm4gTlVMTDsKLSAKLSAg IGRvbWFpbl90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9GSUVMRF9UWVBFIChwZm5fdHlw ZSwgMCkpOwotLSAgdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUpOwotKyAgdHlwZSA9IGFsbG9j X3R5cGUgKG9iamZpbGUsIE5VTEwpOwotICAgc21hc2hfdG9fbWV0aG9kX3R5cGUgKHR5cGUsIGRv bWFpbl90eXBlLCBUWVBFX1RBUkdFVF9UWVBFIChwZm5fdHlwZSksCi0gCQkJVFlQRV9GSUVMRFMg KHBmbl90eXBlKSwgVFlQRV9ORklFTERTIChwZm5fdHlwZSksCi0gCQkJVFlQRV9WQVJBUkdTIChw Zm5fdHlwZSkpOwotQEAgLTQ4OTgsNyArNTI1NSw3IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICByZXR1cm4g c2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKLSAgICAgfQotIAotLSAgdHlwZSA9IGFsbG9j X3R5cGUgKG9iamZpbGUpOwotKyAgdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUsIE5VTEwpOwot ICAgSU5JVF9DUExVU19TUEVDSUZJQyAodHlwZSk7Ci0gCi0gICBuYW1lID0gZHdhcmYyX25hbWUg KGRpZSwgY3UpOwotQEAgLTQ5MDcsMTQgKzUyNjQsMTggQEAgcmVhZF9zdHJ1Y3R1cmVfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgIGlmIChj dS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMKLSAJICB8fCBjdS0+bGFuZ3VhZ2UgPT0gbGFu Z3VhZ2VfamF2YSkKLSAJewotLQkgIGNvbnN0IGNoYXIgKm5ld19wcmVmaXggPSBkZXRlcm1pbmVf Y2xhc3NfbmFtZSAoZGllLCBjdSk7Ci0tCSAgVFlQRV9UQUdfTkFNRSAodHlwZSkgPSAoY2hhciAq KSBuZXdfcHJlZml4OwotKwkgIFRZUEVfVEFHX05BTUUgKHR5cGUpID0gKGNoYXIgKikgZHdhcmYy X2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci0rCSAgaWYgKGRpZS0+dGFnID09IERXX1RBR19zdHJ1Y3R1 cmVfdHlwZQotKwkgICAgICB8fCBkaWUtPnRhZyA9PSBEV19UQUdfY2xhc3NfdHlwZSkKLSsJICAg IFRZUEVfTkFNRSAodHlwZSkgPSBUWVBFX1RBR19OQU1FICh0eXBlKTsKLSAJfQotICAgICAgIGVs c2UKLSAJewotIAkgIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25nIHdpdGgg dGhpcyBvYmpmaWxlLCBzbwotIAkgICAgIHdlIGRvbid0IG5lZWQgdG8gZHVwbGljYXRlIGl0IGZv ciB0aGUgdHlwZS4gICovCi0tCSAgVFlQRV9UQUdfTkFNRSAodHlwZSkgPSBuYW1lOwotKwkgIFRZ UEVfVEFHX05BTUUgKHR5cGUpID0gKGNoYXIgKikgbmFtZTsKLSsJICBpZiAoZGllLT50YWcgPT0g RFdfVEFHX2NsYXNzX3R5cGUpCi0rCSAgICBUWVBFX05BTUUgKHR5cGUpID0gVFlQRV9UQUdfTkFN RSAodHlwZSk7Ci0gCX0KLSAgICAgfQotIAotQEAgLTUxMjQsNyArNTQ4NSw3IEBAIHJlYWRfZW51 bWVyYXRpb25fdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotICAgICAgIHJldHVybiBzZXRfZGllX3R5cGUgKGRpZSwgdHlwZSwgY3UpOwotICAgICB9Ci0g Ci0tICB0eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0rICB0eXBlID0gYWxsb2NfdHlwZSAo b2JqZmlsZSwgTlVMTCk7Ci0gCi0gICBUWVBFX0NPREUgKHR5cGUpID0gVFlQRV9DT0RFX0VOVU07 Ci0gICBuYW1lID0gZHdhcmYyX2Z1bGxfbmFtZSAoZGllLCBjdSk7Ci1AQCAtNTE1Miw1MSArNTUx Myw2IEBAIHJlYWRfZW51bWVyYXRpb25fdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQotICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7 Ci0gfQotIAotLS8qIERldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgdHlwZSByZXByZXNlbnRlZCBi eSBESUUsIHdoaWNoIHNob3VsZCBiZQotLSAgIGEgbmFtZWQgQysrIG9yIEphdmEgY29tcG91bmQg dHlwZS4gIFJldHVybiB0aGUgbmFtZSBpbiBxdWVzdGlvbiwKLS0gICBhbGxvY2F0ZWQgb24gdGhl IG9iamZpbGUgb2JzdGFjay4gICovCi0tCi0tc3RhdGljIGNvbnN0IGNoYXIgKgotLWRldGVybWlu ZV9jbGFzc19uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up Ci0tewotLSAgY29uc3QgY2hhciAqbmV3X3ByZWZpeCA9IE5VTEw7Ci0tCi0tICAvKiBJZiB3ZSBk b24ndCBoYXZlIG5hbWVzcGFjZSBkZWJ1ZyBpbmZvLCBndWVzcyB0aGUgbmFtZSBieSB0cnlpbmcK LS0gICAgIHRvIGRlbWFuZ2xlIHRoZSBuYW1lcyBvZiBtZW1iZXJzLCBqdXN0IGxpa2Ugd2UgZGlk IGluCi0tICAgICBndWVzc19zdHJ1Y3R1cmVfbmFtZS4gICovCi0tICBpZiAoIXByb2Nlc3Npbmdf aGFzX25hbWVzcGFjZV9pbmZvKQotLSAgICB7Ci0tICAgICAgc3RydWN0IGRpZV9pbmZvICpjaGls ZDsKLS0KLS0gICAgICBmb3IgKGNoaWxkID0gZGllLT5jaGlsZDsKLS0JICAgY2hpbGQgIT0gTlVM TCAmJiBjaGlsZC0+dGFnICE9IDA7Ci0tCSAgIGNoaWxkID0gc2libGluZ19kaWUgKGNoaWxkKSkK LS0JewotLQkgIGlmIChjaGlsZC0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtKQotLQkgICAgewot LQkgICAgICBjaGFyICpwaHlzX3ByZWZpeAotLQkJPSBsYW5ndWFnZV9jbGFzc19uYW1lX2Zyb21f cGh5c25hbWUgKGN1LT5sYW5ndWFnZV9kZWZuLAotLQkJCQkJCSAgICAgZHdhcmYyX2xpbmthZ2Vf bmFtZQotLQkJCQkJCSAgICAgKGNoaWxkLCBjdSkpOwotLQotLQkgICAgICBpZiAocGh5c19wcmVm aXggIT0gTlVMTCkKLS0JCXsKLS0JCSAgbmV3X3ByZWZpeAotLQkJICAgID0gb2JzYXZlc3RyaW5n IChwaHlzX3ByZWZpeCwgc3RybGVuIChwaHlzX3ByZWZpeCksCi0tCQkJCSAgICAmY3UtPm9iamZp bGUtPm9iamZpbGVfb2JzdGFjayk7Ci0tCQkgIHhmcmVlIChwaHlzX3ByZWZpeCk7Ci0tCQkgIGJy ZWFrOwotLQkJfQotLQkgICAgfQotLQl9Ci0tICAgIH0KLS0KLS0gIGlmIChuZXdfcHJlZml4ID09 IE5VTEwpCi0tICAgIG5ld19wcmVmaXggPSBkd2FyZjJfZnVsbF9uYW1lIChkaWUsIGN1KTsKLS0K LS0gIHJldHVybiBuZXdfcHJlZml4OwotLX0KLS0KLSAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBk aWUgd2hpY2ggYmVnaW5zIGFuIGVudW1lcmF0aW9uLCBwcm9jZXNzIGFsbAotICAgIHRoZSBkaWVz IHRoYXQgZGVmaW5lIHRoZSBtZW1iZXJzIG9mIHRoZSBlbnVtZXJhdGlvbiwgYW5kIGNyZWF0ZSB0 aGUKLSAgICBzeW1ib2wgZm9yIHRoZSBlbnVtZXJhdGlvbiB0eXBlLgotQEAgLTUyNzQsNiArNTU5 MCwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTM4NSw2ICs1NjQ0LDI5IEBAIHByb2Nlc3NfZW51 bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtNjIxOCw3 ICszMjYwLDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAvKiBFeHRyYWN0IGFs bCBpbmZvcm1hdGlvbiBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4K ICAgICB0aGUgRElFJ3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9u ZSBkaW1lbnNpb25hbAogICAgIGFycmF5cy4gICovCi1AQCAtNTI4Nyw3ICs1NjI2LDcgQEAgcmVh ZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CitAQCAtNTM5OCw3ICs1NjgwLDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8g KmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBl LCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVz ID0gTlVMTDsKICAgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC02MjI3LDcgKzMyNjksNyBA QCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tf dG87CiAgICBjaGFyICpuYW1lOwogIAotQEAgLTUzMzQsMTYgKzU2NzMsMTEgQEAgcmVhZF9hcnJh eV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAt NTQ0NSwxNiArNTcyNywxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCiAgICBp ZiAocmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKQEAgLTYy NDksMTQxICszMjkxLDI3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgCiAgICAv KiBVbmRlcnN0YW5kIER3YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBv Y2N1ciBvbgogICAgICAgdGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFu b3RoZXIgYXR0cmlidXRlIHRvIHRoZQotQEAgLTU0MTAsMTIgKzU3NDQsMTQgQEAgcmVhZF9zZXRf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgcmV0 dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOworQEAgLTU2NTksMjAgKzU5MzYs MTU1IEBAIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCisgICAgIH0KICB9CiAgCi0tLyogRmlyc3QgY3V0OiBpbnN0YWxsIGVhY2ggY29t bW9uIGJsb2NrIG1lbWJlciBhcyBhIGdsb2JhbCB2YXJpYWJsZS4gICovCi0rLyogQ3JlYXRlIGFw cHJvcHJpYXRlIGxvY2FsbHktc2NvcGVkIHZhcmlhYmxlcyBmb3IgYWxsIHRoZSBEV19UQUdfY29t bW9uX2Jsb2NrCi0rICAgZW50cmllcy4gIENyZWF0ZSBhbHNvIFRZUEVfQ09ERV9TVFJVQ1QgbGlz dGluZyBhbGwgc3VjaCB2YXJpYWJsZXMgdG8gYmUKLSsgICBhdmFpbGFibGUgZm9yIGBpbmZvIGNv bW1vbicuICBDT01NT05fQkxPQ0tfRE9NQUlOIGlzIHVzZWQgdG8gc2VwYXRlIHRoZQotKyAgIGNv bW1vbiBibG9ja3MgbmFtZSBuYW1lc3BhY2UgZnJvbSByZWd1bGFyIHZhcmlhYmxlIG5hbWVzLiAg Ki8KKy0vKiBSZWFkIGEgRm9ydHJhbiBtb2R1bGUuICAqLworKy8qIFJlYWQgYSBGb3J0cmFuIG1v ZHVsZSBhcyBnbG9iYWwgc3ltYm9sIHdoaWNoIGNhbiBiZSBsYXRlciBsb29rZWQgdXAgYnkKKysg ICBmX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwuICAqLwogIAogIHN0YXRpYyB2b2lkCi0gcmVhZF9j b21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK KyByZWFkX21vZHVsZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQogIHsKLS0gIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllOwotICAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKLSAgIENPUkVfQUREUiBiYXNlID0gKENP UkVfQUREUikgMDsKLUBAIC01NDI1LDI1ICs1NzYxLDU1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICAgIHsKLSAgICAg ICAvKiBTdXBwb3J0IHRoZSAuZGVidWdfbG9jIG9mZnNldHMgKi8KLSAgICAgICBpZiAoYXR0cl9m b3JtX2lzX2Jsb2NrIChhdHRyKSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgYmFzZSA9IGRlY29k ZV9sb2NkZXNjIChEV19CTE9DSyAoYXR0ciksIGN1KTsKLS0gICAgICAgIH0KLSsJewotKwkgIGJh c2UgPSBkZWNvZGVfbG9jZGVzYyAoRFdfQkxPQ0sgKGF0dHIpLCBjdSk7Ci0rCX0KLSAgICAgICBl bHNlIGlmIChhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpKQotLSAgICAgICAgewot Kwl7Ci0gCSAgZHdhcmYyX2NvbXBsZXhfbG9jYXRpb25fZXhwcl9jb21wbGFpbnQgKCk7Ci0tICAg ICAgICB9Ci0rCX0KLSAgICAgICBlbHNlCi0tICAgICAgICB7Ci0rCXsKLSAJICBkd2FyZjJfaW52 YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgiRFdfQVRfbG9jYXRpb24iLAotIAkJCQkJCSAi Y29tbW9uIGJsb2NrIG1lbWJlciIpOwotLSAgICAgICAgfQotKwl9Ci0gICAgIH0KLSAgIGlmIChk aWUtPmNoaWxkICE9IE5VTEwpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IGN1LT5vYmpmaWxlOwotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllOwotKyAg ICAgIHN0cnVjdCB0eXBlICp0eXBlOwotKyAgICAgIHN0cnVjdCBmaWVsZCAqZmllbGQ7Ci0rICAg ICAgY2hhciAqbmFtZTsKLSsgICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci0rCi0rICAgICAgdHlw ZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUsIE5VTEwpOwotKyAgICAgIFRZUEVfQ09ERSAodHlwZSkg PSBUWVBFX0NPREVfU1RSVUNUOwotKyAgICAgIC8qIEFydGlmaWNpYWwgdHlwZSB0byBiZSB1c2Vk IG9ubHkgYnkgYGluZm8gY29tbW9uJy4gICovCi0rICAgICAgVFlQRV9OQU1FICh0eXBlKSA9ICI8 Y29tbW9uPiI7Ci0rCi0gICAgICAgY2hpbGRfZGllID0gZGllLT5jaGlsZDsKLSAgICAgICB3aGls ZSAoY2hpbGRfZGllICYmIGNoaWxkX2RpZS0+dGFnKQotIAl7Ci0rCSAgVFlQRV9ORklFTERTICh0 eXBlKSsrOwotKwkgIGNoaWxkX2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwotKwl9Ci0r Ci0rICAgICAgVFlQRV9GSUVMRFMgKHR5cGUpID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9i amZpbGVfb2JzdGFjaywKLSsJCQkJCSAgc2l6ZW9mICgqVFlQRV9GSUVMRFMgKHR5cGUpKQotKwkJ CQkJICAqIFRZUEVfTkZJRUxEUyAodHlwZSkpOwotKyAgICAgIG1lbXNldCAoVFlQRV9GSUVMRFMg KHR5cGUpLCAwLCBzaXplb2YgKCpUWVBFX0ZJRUxEUyAodHlwZSkpCi0rCQkJCSAgICAgKiBUWVBF X05GSUVMRFMgKHR5cGUpKTsKLSsgICAgICAKLSsgICAgICBmaWVsZCA9IFRZUEVfRklFTERTICh0 eXBlKTsKLSsgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwotKyAgICAgIHdoaWxlIChjaGls ZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCi0rCXsKLSsJICAvKiBDcmVhdGUgdGhlIHN5bWJvbCBp biB0aGUgRFdfVEFHX2NvbW1vbl9ibG9jayBibG9jayBpbiB0aGUgY3VycmVudAotKwkgICAgIHN5 bWJvbCBzY29wZS4gICovCi0gCSAgc3ltID0gbmV3X3N5bWJvbCAoY2hpbGRfZGllLCBOVUxMLCBj dSk7Ci0rCi0rCSAgLyogVW5kb2N1bWVudGVkIGluIERXQVJGMywgd2hlbiBpdCBjYW4gYmUgcHJl c2VudD8gICovCi0gCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2RhdGFf bWVtYmVyX2xvY2F0aW9uLCBjdSk7Ci0gCSAgaWYgKGF0dHIpCi0gCSAgICB7Ci1AQCAtNTQ2MSw4 ICs1ODI3LDI1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi0gCSAgICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChzeW0pID0g YmFzZSArIGJ5dGVfb2Zmc2V0OwotIAkgICAgICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmds b2JhbF9zeW1ib2xzKTsKLSAJICAgIH0KLSsKLSsJICBpZiAoU1lNQk9MX0NMQVNTIChzeW0pID09 IExPQ19TVEFUSUMpCi0rCSAgICBTRVRfRklFTERfUEhZU0FERFIgKCpmaWVsZCwgU1lNQk9MX1ZB TFVFX0FERFJFU1MgKHN5bSkpOwotKwkgIGVsc2UKLSsJICAgIFNFVF9GSUVMRF9QSFlTTkFNRSAo KmZpZWxkLCBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pKTsKLSsJICBGSUVMRF9UWVBFICgqZmll bGQpID0gU1lNQk9MX1RZUEUgKHN5bSk7Ci0rCSAgRklFTERfTkFNRSAoKmZpZWxkKSA9IFNZTUJP TF9OQVRVUkFMX05BTUUgKHN5bSk7Ci0rCSAgZmllbGQrKzsKLSAJICBjaGlsZF9kaWUgPSBzaWJs aW5nX2RpZSAoY2hpbGRfZGllKTsKLSAJfQotKwotKyAgICAgIC8qIFRZUEVfTEVOR1RIICh0eXBl KSBpcyBsZWZ0IDAgLSBpdCBpcyBvbmx5IGEgdmlydHVhbCBzdHJ1Y3R1cmUgZXZlbgotKwkgd2l0 aCBubyBjb25zZWN1dGl2ZSBhZGRyZXNzIHNwYWNlLiAgKi8KLSsKLSsgICAgICBzeW0gPSBuZXdf c3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKLSsgICAgICAvKiBTWU1CT0xfVkFMVUVfQUREUkVTUyBu ZXZlciBnZXRzIHVzZWQgYXMgYWxsIGl0cyBmaWVsZHMgYXJlIHN0YXRpYy4gICovCi0rICAgICAg U1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkgPSBiYXNlOwotKwotKyAgICAgIHNldF9kaWVfdHlw ZSAoZGllLCB0eXBlLCBjdSk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNTUzMCw3ICs1OTEzLDcgQEAg cmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKLSAgICAgICBpZiAoaXNfYW5vbnltb3VzKQotIAl7Ci0gCSAgY29uc3QgY2hhciAqcHJldmlv dXNfcHJlZml4ID0gZGV0ZXJtaW5lX3ByZWZpeCAoZGllLCBjdSk7Ci0tCSAgY3BfYWRkX3VzaW5n X2RpcmVjdGl2ZSAocHJldmlvdXNfcHJlZml4LCBUWVBFX05BTUUgKHR5cGUpKTsKLSsJICBjcF9h ZGRfdXNpbmdfZGlyZWN0aXZlIChwcmV2aW91c19wcmVmaXgsIFRZUEVfTkFNRSAodHlwZSksICIi LCAiIiwgZHdhcmYyX3JlYWRfZGVjbF9saW5lKGRpZSwgY3UpKTsKLSAJfQotICAgICB9Ci0gCi1A QCAtNTU0NiwyMCArNTkyOSwxNTUgQEAgcmVhZF9uYW1lc3BhY2UgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgfQotIH0KLSAKLS0vKiBSZWFkIGEgRm9y dHJhbiBtb2R1bGUuICAqLwotKy8qIFJlYWQgYSBGb3J0cmFuIG1vZHVsZSBhcyBnbG9iYWwgc3lt Ym9sIHdoaWNoIGNhbiBiZSBsYXRlciBsb29rZWQgdXAgYnkKLSsgICBmX2xvb2t1cF9zeW1ib2xf bm9ubG9jYWwuICAqLwotIAotIHN0YXRpYyB2b2lkCi0gcmVhZF9tb2R1bGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0tICBzdHJ1Y3QgZGllX2luZm8g KmNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsKLSsgIHR5 cGUgPSByZWFkX21vZHVsZV90eXBlIChkaWUsIGN1KTsKKy0gIHN0cnVjdCBkaWVfaW5mbyAqY2hp bGRfZGllID0gZGllLT5jaGlsZDsKKysgIHN0cnVjdCB0eXBlICp0eXBlOworIAorLSAgLyogRklY TUU6IFN1cHBvcnQgdGhlIHNlcGFyYXRlIEZvcnRyYW4gbW9kdWxlIG5hbWVzcGFjZXMuICAqLwor KyAgdHlwZSA9IHJlYWRfbW9kdWxlX3R5cGUgKGRpZSwgY3UpOwogKwogKyAgaWYgKHR5cGUpCiAr ICAgIG5ld19zeW1ib2wgKGRpZSwgdHlwZSwgY3UpOwogK30KLSsKKyAKICsvKiBSZWFkIGEgRm9y dHJhbiBtb2R1bGUgYXMgdHlwZS4KICsKICsgICBNb2R1bGVzIHByZXNlbnQgb25seSBhcyBkZWNs YXJhdGlvbnMgLSBiZWluZyB1c2VkIG9ubHkgZm9yIERXX0FUX2ltcG9ydCBvZgpAQCAtNjQxMiwx MCArMzM0MCw5IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiArICB0eXBlID0gaW5p dF90eXBlIChUWVBFX0NPREVfTU9EVUxFLCAwLCAwLCBtb2R1bGVfbmFtZSwgb2JqZmlsZSk7CiAr CiArICAvKiBDcmVhdGUgYSBjb250ZXh0IGZvciByZWFkaW5nIHRoZSBtb2R1bGUgdmFyaWFibGVz LiAgKi8KLSAKLS0gIC8qIEZJWE1FOiBTdXBwb3J0IHRoZSBzZXBhcmF0ZSBGb3J0cmFuIG1vZHVs ZSBuYW1lc3BhY2VzLiAgKi8KKysKICsgIG5ldyA9IHB1c2hfY29udGV4dCAoMCwgMCk7Ci0gCisr CiArICBzYXZlX2ZpbGVfc3ltYm9scyA9IGZpbGVfc3ltYm9sczsKICsgIGZpbGVfc3ltYm9scyA9 IE5VTEw7CiArICBzYXZlX2dsb2JhbF9zeW1ib2xzID0gZ2xvYmFsX3N5bWJvbHM7CkBAIC02NTE5 LDExICszNDQ2LDExIEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiArICBzeW0gPSBu ZXdfc3ltYm9sIChpbXBvcnRlZF9kaWUsIE5VTEwsIGN1KTsKICsKICsgIGlmIChzeW0gJiYgcmVu YW1lKQotKyAgICAoc3ltKS0+Z2luZm8ubGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMu ZGVtYW5nbGVkX25hbWUgPSByZW5hbWU7CisrICAgIFNZTUJPTF9DUExVU19ERU1BTkdMRURfTkFN RSAoc3ltKSA9IHJlbmFtZTsKICB9CiAgCiAgLyogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBuYW1l c3BhY2UgcmVwcmVzZW50ZWQgYnkgRElFLiAgU2V0Ci1AQCAtNTcyNCwyOSArNjI0MiwxMTMgQEAg cmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC01ODM3LDI5ICs2MjQ5LDExMyBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0IGdk YmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVjdCB0 eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtNjUzMiw3ICszNDU5LDcgQEAgaW5kZXggNGNjZTM2Yi4u ZmIwYTY5MyAxMDA2NDQKICsKICsgIGluZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUp LT5idWlsdGluX2ludDsKICsgIC8qIFJBTkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklM RSwgbm90IGFzIGEgcGVybWFuZW50IHR5cGUuICAqLwotKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5 cGUgKG9iamZpbGUsIE5VTEwpOworKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUp OwogKyAgLyogTE9XX0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cu ICAqLwogKyAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90eXBlLCBpbmRl eF90eXBlLCAwLCAtMSk7CiArCkBAIC02NjA4LDggKzM1MzUsOCBAQCBpbmRleCA0Y2NlMzZiLi5m YjBhNjkzIDEwMDY0NAogKwkJfQogKwkgICAgfQogKwotKwkgIFRZUEVfUkFOR0VfQk9VTkRfU0VU X0RXQVJGX0JMT0NLIChyYW5nZV90eXBlLCAxKTsKLSsJICBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NL IChyYW5nZV90eXBlLCAxKSA9IGxlbmd0aF9iYXRvbjsKKysJICBUWVBFX0hJR0hfQk9VTkRfSVNf RFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUpID0gMTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdl X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247CiArCSAgVFlQRV9EWU5B TUlDIChyYW5nZV90eXBlKSA9IDE7CiArCX0KICAgICAgfQpAQCAtNjYzMiw4ICszNTU5LDggQEAg aW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKIC0gICAgICAgIH0KICsgICAgICBpZiAoYXR0 ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogKwl7Ci0rCSAgVFlQRV9SQU5HRV9CT1VO RF9TRVRfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUsIDEpOwotKwkgIFRZUEVfRklFTERfRFdBUkZf QkxPQ0sgKHJhbmdlX3R5cGUsIDEpID0KKysJICBUWVBFX0hJR0hfQk9VTkRfSVNfRFdBUkZfQkxP Q0sgKHJhbmdlX3R5cGUpID0gMTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5o aWdoLnUuZHdhcmZfYmxvY2sgPQogKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAo YXR0ciwgY3UpOwogKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwogKwl9CkBAIC02 NjUxLDcgKzM1NzgsNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgY2hhcl90 eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFy Y2gpOwogICAgdHlwZSA9IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5n ZV90eXBlKTsKICAKLUBAIC01ODQxLDcgKzY0NDMsNiBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKgor QEAgLTU5NTksNyArNjQ1NSw2IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqCiAgcmVhZF90eXBlZGVm IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgewogICAgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKQEAgLTY2NTksMTcgKzM1ODYsMTcg QEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBO VUxMOwogICAgc3RydWN0IHR5cGUgKnRoaXNfdHlwZTsKICAKLUBAIC01OTQ5LDggKzY1NTAsNyBA QCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC02MDY3LDggKzY1NjIsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0eXBlICpi YXNlX3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKICAgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7Ci0tICBpbnQgbG93ID0gMDsKLS0gIGludCBoaWdoID0gLTE7Ci0rICBpbnQgbG93 OworLSAgTE9OR0VTVCBsb3cgPSAwOworLSAgTE9OR0VTVCBoaWdoID0gLTE7CisrICBMT05HRVNU IGxvdzsKICAgIGNoYXIgKm5hbWU7CisgICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CiAgICAKLSAg IGJhc2VfdHlwZSA9IGRpZV90eXBlIChkaWUsIGN1KTsKLUBAIC01OTYzLDQyICs2NTYzLDg5IEBA IHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorQEAgLTYwODIsNDkgKzY1NzYsMTAxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkJICAgICAwLCBOVUxM LCBjdS0+b2JqZmlsZSk7CiAgICAgIH0KICAKQEAgLTY2ODAsNiArMzYwNyw5IEBAIGluZGV4IDRj Y2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAtICAgIH0KICsgIC8qIExPV19CT1VORCBhbmQgSElHSF9C T1VORCBhcmUgc2V0IGZvciByZWFsIGJlbG93LiAgKi8KICsgIHJhbmdlX3R5cGUgPSBjcmVhdGVf cmFuZ2VfdHlwZSAoTlVMTCwgYmFzZV90eXBlLCAwLCAtMSk7CisrCisrICBuZWdhdGl2ZV9tYXNr ID0gCisrICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBUQVJH RVRfQ0hBUl9CSVQgLSAxKTsKICAKIC0gIC8qIEZJWE1FOiBGb3IgdmFyaWFibGUgc2l6ZWQgYXJy YXlzIGVpdGhlciBvZiB0aGVzZSBjb3VsZCBiZQogLSAgICAgYSB2YXJpYWJsZSByYXRoZXIgdGhh biBhIGNvbnN0YW50IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCkBAIC02Njg5LDkgKzM2MTksOSBA QCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogLSAgICBsb3cgPSBkd2FyZjJfZ2V0X2F0 dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwogKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lz X2Jsb2NrIChhdHRyKSkKICsgICAgewotKyAgICAgIFRZUEVfUkFOR0VfQk9VTkRfU0VUX0RXQVJG X0JMT0NLIChyYW5nZV90eXBlLCAwKTsKLSsgICAgICBUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLIChy YW5nZV90eXBlLCAwKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24KLSsJCQkJCQkJCSAg ICAgKGF0dHIsIGN1KTsKKysgICAgICBUWVBFX0xPV19CT1VORF9JU19EV0FSRl9CTE9DSyAocmFu Z2VfdHlwZSkgPSAxOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51 LmR3YXJmX2Jsb2NrID0KKysJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIs IGN1KTsKICsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKICsgICAgICAvKiBG b3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlzc2lu Zy4gICovCiArICAgICAgbG93ID0gMDsKQEAgLTY3MTQsNiArMzY0NCw4IEBAIGluZGV4IDRjY2Uz NmIuLmZiMGE2OTMgMTAwNjQ0CiArCSAgICAgIGxvdyA9IDA7CiArCSAgICB9CiArCX0KKysgICAg ICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZlX21hc2sp KQorKwlsb3cgfD0gbmVnYXRpdmVfbWFzazsKICsgICAgICBUWVBFX0xPV19CT1VORCAocmFuZ2Vf dHlwZSkgPSBsb3c7CiArICAgICAgaWYgKGxvdyA+PSAwKQogKwlUWVBFX1VOU0lHTkVEIChyYW5n ZV90eXBlKSA9IDE7CkBAIC02NzM3LDYgKzM2NjksOCBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkz IDEwMDY0NAogLSAgICAgICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJv dmUuICAqLwogLSAgICAgICAgICBoaWdoID0gbG93IC0gMTsKIC0gICAgICAgIH0KKy0gICAgICBl bHNlCistICAgICAgICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRy LCAxKTsKICsgIGlmICghYXR0ciB8fCAoIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgIWF0 dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpKQogKyAgICB7CiArICAgICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7CkBAIC02NzQ3LDM1ICszNjgxLDQ3IEBAIGlu ZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiArCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBl KSA9IDE7CiArCX0KICsgICAgICAvKiBQYXNzIGl0IG5vdyBhcyB0aGUgcmVndWxhciBEV19BVF91 cHBlcl9ib3VuZC4gICovCi0rICAgIH0KLSsKKyAgICAgfQorIAorLSAgbmVnYXRpdmVfbWFzayA9 IAorLSAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VU X0NIQVJfQklUIC0gMSk7CistICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxv dyAmIG5lZ2F0aXZlX21hc2spKQorLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKKy0gIGlmICgh VFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQorLSAg ICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7CiArICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpKQogKyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9CT1VORF9TRVRfRFdBUkZfQkxP Q0sgKHJhbmdlX3R5cGUsIDEpOwotKyAgICAgIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sgKHJhbmdl X3R5cGUsIDEpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbgotKwkJCQkJCQkJICAgICAo YXR0ciwgY3UpOworKyAgICAgIFRZUEVfSElHSF9CT1VORF9JU19EV0FSRl9CTE9DSyAocmFuZ2Vf dHlwZSkgPSAxOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5k d2FyZl9ibG9jayA9CisrCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBj dSk7CiArICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CiArICAgIH0KICsgIGVs c2UKICsgICAgewogKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0 cikpCi0rCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBkd2FyZjJfZ2V0X2F0dHJfY29u c3RhbnRfdmFsdWUgKGF0dHIsIDApOwotICAgICAgIGVsc2UKLS0gICAgICAgIGhpZ2ggPSBkd2Fy ZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOwogKwl7Ci0rCSAgVFlQRV9SQU5H RV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsJICBUWVBFX0hJ R0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gbG93IC0gMTsKLSsJfQotICAgICB9CisrCSAgTE9OR0VT VCBoaWdoOwogIAogLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNl X3R5cGUsIGxvdywgaGlnaCk7CisrCSAgaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92 YWx1ZSAoYXR0ciwgMCk7CisrCSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmICho aWdoICYgbmVnYXRpdmVfbWFzaykpCisrCSAgICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7CisrCSAg VFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGhpZ2g7CisrCX0KKysgICAgICBlbHNlCisr CXsKKysJICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CisrCSAg VFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGxvdyAtIDE7CisrCX0KKysgICAgfQorKwog KyAgLyogRFdfQVRfYml0X3N0cmlkZSBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQgYXMgd2UgY291 bnQgaW4gYnl0ZXMuICAqLwogKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVf c3RyaWRlLCBjdSk7CiArICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQog KyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9CT1VORF9TRVRfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5 cGUsIDIpOwotKyAgICAgIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUsIDIpID0g ZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbgotKwkJCQkJCQkJICAgICAoYXR0ciwgY3UpOwor KyAgICAgIFRZUEVfQllURV9TVFJJREVfSVNfRFdBUkZfQkxPQ0sgKHJhbmdlX3R5cGUpID0gMTsK KysgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJm X2Jsb2NrID0KKysJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsK ICsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKICsgICAgfQogKyAgZWxzZSBp ZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQpAQCAtNjc4OCw3ICszNzM0 LDcgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2FyZjJf bmFtZSAoZGllLCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC02NDY5LDYgKzcxMTYsNyBAQCBsb2Fk X3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqYnVmZmVyLCBnZGJfYnl0ZSAqaW5m b19wdHIsCitAQCAtNjU4Myw2ICs3MTI5LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJm ZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAogIAkgICYmIGFiYnJldi0+ dGFnICE9IERXX1RBR19sZXhpY2FsX2Jsb2NrCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFH X3ZhcmlhYmxlCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX25hbWVzcGFjZQpAQCAtNjc5 NiwyNyArMzc0Miw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgCSAgJiYgYWJi cmV2LT50YWcgIT0gRFdfVEFHX21lbWJlcikKICAJewogIAkgIC8qIE90aGVyd2lzZSB3ZSBza2lw IHRvIHRoZSBuZXh0IHNpYmxpbmcsIGlmIGFueS4gICovCi1AQCAtNjY4OSw5ICs3MzM3LDYgQEAg cmVhZF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAotIAkg IGlmIChwYXJ0X2RpZS0+ZGlybmFtZSA9PSBOVUxMKQotIAkgICAgcGFydF9kaWUtPmRpcm5hbWUg PSBEV19TVFJJTkcgKCZhdHRyKTsKLSAJICBicmVhazsKLS0JY2FzZSBEV19BVF9NSVBTX2xpbmth Z2VfbmFtZToKLS0JICBwYXJ0X2RpZS0+bmFtZSA9IERXX1NUUklORyAoJmF0dHIpOwotLQkgIGJy ZWFrOwotIAljYXNlIERXX0FUX2xvd19wYzoKLSAJICBoYXNfbG93X3BjX2F0dHIgPSAxOwotIAkg IHBhcnRfZGllLT5sb3dwYyA9IERXX0FERFIgKCZhdHRyKTsKLUBAIC02OTIzLDcgKzc1NjgsOCBA QCBmaXh1cF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAot ICAgLyogSWYgd2UgZm91bmQgYSByZWZlcmVuY2UgYXR0cmlidXRlIGFuZCB0aGUgRElFIGhhcyBu byBuYW1lLCB0cnkKLSAgICAgIHRvIGZpbmQgYSBuYW1lIGluIHRoZSByZWZlcnJlZCB0byBESUUu ICAqLwotIAotLSAgaWYgKHBhcnRfZGllLT5uYW1lID09IE5VTEwgJiYgcGFydF9kaWUtPmhhc19z cGVjaWZpY2F0aW9uKQotKyAgaWYgKHBhcnRfZGllLT5oYXNfc3BlY2lmaWNhdGlvbgotKyAgICAg ICYmIChwYXJ0X2RpZS0+bmFtZSA9PSBOVUxMIHx8ICFwYXJ0X2RpZS0+aXNfZXh0ZXJuYWwpKQot ICAgICB7Ci0gICAgICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnNwZWNfZGllOwotIAotQEAg LTgyNjUsMTAgKzg5MTEsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0 ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTgzMzEsMTAgKzg4NzgsMTIgQEAgdmFy X2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAq c3ltLAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1vcnkg bG9jYXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2NrLCBl dGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4gIEkn bSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtNjgzMSw1NyAr Mzc1NywyNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogIH0KICAKICAvKiBHaXZl biBhIHBvaW50ZXIgdG8gYSBEV0FSRiBpbmZvcm1hdGlvbiBlbnRyeSwgZmlndXJlIG91dCBpZiB3 ZSBuZWVkCi1AQCAtODI5MCwyMSArODkzOCwzMCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAotICAg YmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9U RVhUIChvYmpmaWxlKSk7Ci0gCi0tICBpZiAoZGllLT50YWcgIT0gRFdfVEFHX25hbWVzcGFjZSkK LS0gICAgbmFtZSA9IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwotLSAgZWxzZQotLSAg ICBuYW1lID0gVFlQRV9OQU1FICh0eXBlKTsKLS0KLSsgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGll LCBjdSk7Ci0gICBpZiAobmFtZSkKLSAgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2Vu YW1lOwotKwotICAgICAgIHN5bSA9IChzdHJ1Y3Qgc3ltYm9sICopIG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCitAQCAtODM2NywxMCArODkxNiwxNyBAQCBuZXdfc3lt Ym9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQogIAkJCQkJICAgICBzaXplb2YgKHN0cnVjdCBzeW1ib2wpKTsKICAgICAgICBP QkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7CiAgICAgICAgbWVtc2V0IChzeW0sIDAsIHNpemVv ZiAoc3RydWN0IHN5bWJvbCkpOwogKyAgICAgIC8qIFNvbWUgbWV0aG9kcyBhcmUgY2FsbGVkIHcv byBjaGVja2luZyBTWU1CT0xfQ09NUFVURURfT1BTIHZhbGlkaXR5LiAgKi8KICsgICAgICBTWU1C T0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOwogIAotLSAgICAg IC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9y bSAoaWYgYW55KS4gICovCisgICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0 aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBhbnkpLiAgKi8KICAgICAgICBTWU1CT0xfTEFO R1VBR0UgKHN5bSkgPSBjdS0+bGFuZ3VhZ2U7Ci0tICAgICAgU1lNQk9MX1NFVF9OQU1FUyAoc3lt LCBuYW1lLCBzdHJsZW4gKG5hbWUpLCBvYmpmaWxlKTsKLSsKLSsgICAgICAvKiBDYWNoZSB0aGlz IHN5bWJvbCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAq LwotKwotKyAgICAgIGxpbmthZ2VuYW1lID0gZHdhcmYyX3BoeXNuYW1lIChkaWUsIGN1KTsKLSsg ICAgICBTWU1CT0xfU0VUX05BTUVTIChzeW0sIGxpbmthZ2VuYW1lLCBzdHJsZW4gKGxpbmthZ2Vu YW1lKSwgb2JqZmlsZSk7CisgICAgICAgU1lNQk9MX1NFVF9OQU1FUyAoc3ltLCBuYW1lLCBzdHJs ZW4gKG5hbWUpLCAwLCBvYmpmaWxlKTsKICsgICAgICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1 YWdlX2ZvcnRyYW4pCiArCXsKLSsJICAoc3ltKS0+Z2luZm8ubGFuZ3VhZ2Vfc3BlY2lmaWMuY3Bs dXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWUgPQotKwkgICAgU1lNQk9MX0xJTktBR0VfTkFNRSAo c3ltKTsKKysJICBTWU1CT0xfQ1BMVVNfREVNQU5HTEVEX05BTUUgKHN5bSkgPSBTWU1CT0xfTElO S0FHRV9OQU1FIChzeW0pOwogKwkgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkgPSBmb3J0cmFu X21vZHVsZV9saW5rYWdlX25hbWUgKGRpZSwgY3UpOwogKwl9CiAgCiAgICAgICAgLyogRGVmYXVs dCBhc3N1bXB0aW9ucy4KICAgICAgICAgICBVc2UgdGhlIHBhc3NlZCB0eXBlIG9yIGRlY29kZSBp dCBmcm9tIHRoZSBkaWUuICAqLwotQEAgLTg0MDIsOSArOTA1OSwyOCBAQCBuZXdfc3ltYm9sIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQotIAkgIGlmIChhdHRyKQotIAkgICAgeworQEAgLTg0NzAsNyArOTAyNiwxOCBAQCBuZXdf c3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQogIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1 KTsKLSsKICAJICAgICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwg Y3UpOwotKwotKwkgICAgICAvKiBGb3J0cmFuIGV4cGxpY2l0ZWx5IGltcG9ydHMgYW55IGdsb2Jh bCBzeW1ib2xzIHRvIHRoZSBsb2NhbAotKwkJIHNjb3BlIGJ5IERXX1RBR19jb21tb25fYmxvY2su ICAqLwotKwkgICAgICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4gJiYgZGll LT5wYXJlbnQKLSsJCSAgJiYgZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdfY29tbW9uX2Jsb2Nr KQotKwkJYXR0cjIgPSBOVUxMOwotKwogIAkgICAgICBpZiAoYXR0cjIgJiYgKERXX1VOU05EIChh dHRyMikgIT0gMCkpCiAtCQlhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xz KTsKICsJCXsKQEAgLTY4OTksMjQgKzM3OTUsMTAgQEAgaW5kZXggNGNjZTM2Yi4uZmIwYTY5MyAx MDA2NDQKICAJICAgICAgZWxzZQogIAkJYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0 X2luX3Njb3BlKTsKICAJICAgIH0KLUBAIC04NTM0LDcgKzkyMTAsNyBAQCBuZXdfc3ltYm9sIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQotIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7Ci0g CSAgYnJlYWs7Ci0gCWNhc2UgRFdfVEFHX2VudW1lcmF0b3I6Ci0tCSAgU1lNQk9MX0xJTktBR0Vf TkFNRSAoc3ltKSA9IChjaGFyICopIGR3YXJmMl9mdWxsX25hbWUgKGRpZSwgY3UpOwotKwkgIFNZ TUJPTF9MSU5LQUdFX05BTUUgKHN5bSkgPSAoY2hhciAqKSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7 Ci0gCSAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbnN0X3ZhbHVlLCBjdSk7Ci0g CSAgaWYgKGF0dHIpCi0gCSAgICB7Ci1AQCAtODU1OCw2ICs5MjM0LDE2IEBAIG5ld19zeW1ib2wg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCitAQCAtODYzMSw2ICs5MTk4LDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgU1lN Qk9MX0NMQVNTIChzeW0pID0gTE9DX1RZUEVERUY7CiAgCSAgYWRkX3N5bWJvbF90b19saXN0IChz eW0sICZnbG9iYWxfc3ltYm9scyk7CiAgCSAgYnJlYWs7Ci0rCWNhc2UgRFdfVEFHX2NvbW1vbl9i bG9jazoKLSsJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfU1RBVElDOwotKwkgIFNZTUJPTF9E T01BSU4gKHN5bSkgPSBDT01NT05fQkxPQ0tfRE9NQUlOOwotKwkgIGFkZF9zeW1ib2xfdG9fbGlz dCAoc3ltLCBjdS0+bGlzdF9pbl9zY29wZSk7Ci0rCSAgYnJlYWs7CiArCWNhc2UgRFdfVEFHX21v ZHVsZToKICsJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfU1RBVElDOwogKwkgIFNZTUJPTF9E T01BSU4gKHN5bSkgPSBNT0RVTEVfRE9NQUlOOwpAQCAtNjkyNSwxNyArMzgwNyw3IEBAIGluZGV4 IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgCWRlZmF1bHQ6CiAgCSAgLyogTm90IGEgdGFnIHdl IHJlY29nbml6ZS4gIEhvcGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2luZwogIAkgICAgIHRyYXNo IGRhdGEsIGJ1dCBzaW5jZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25vcmUgdGhpbmdzCi1AQCAt ODU3MSw4ICs5MjU3LDcgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICAvKiBGb3IgdGhlIGJl bmVmaXQgb2Ygb2xkIHZlcnNpb25zIG9mIEdDQywgY2hlY2sgZm9yIGFub255bW91cwotIAkgbmFt ZXNwYWNlcyBiYXNlZCBvbiB0aGUgZGVtYW5nbGVkIG5hbWUuICAqLwotICAgICAgIGlmICghcHJv Y2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8KLS0JICAmJiBjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3Vh Z2VfY3BsdXMKLS0JICAmJiBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9NSVBTX2xpbmthZ2VfbmFt ZSwgY3UpICE9IE5VTEwpCi0rCSAgJiYgY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQot IAljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoc3ltKTsKLSAgICAgfQotICAgcmV0 dXJuIChzeW0pOwotQEAgLTg4MjMsMTIgKzk1MDgsMTggQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTg5NTcsMTIgKzk1Mjks MTggQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQogICAgICBjYXNlIERXX1RBR19uYW1lc3BhY2U6CiAgICAgICAgdGhpc190eXBlID0g cmVhZF9uYW1lc3BhY2VfdHlwZSAoZGllLCBjdSk7CiAgICAgICAgYnJlYWs7CkBAIC02OTU0LDE4 OCArMzgyNiwxMCBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogICAgcmV0dXJuIHRo aXNfdHlwZTsKICB9CiAgCi1AQCAtODkxMCwxMCArOTYwMSwxMDAgQEAgZGV0ZXJtaW5lX3ByZWZp eCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotIAkgICAgIFNv IGl0IGRvZXMgbm90IG5lZWQgYSBwcmVmaXguICAqLwotIAkgIHJldHVybiAiIjsKLSAgICAgICBk ZWZhdWx0OgotLQlyZXR1cm4gZGV0ZXJtaW5lX3ByZWZpeCAocGFyZW50LCBjdSk7Ci0rICAgICAg ICByZXR1cm4gZGV0ZXJtaW5lX3ByZWZpeCAocGFyZW50LCBjdSk7Ci0gICAgICAgfQotIH0KLSAK LSsvKiBEZXRlcm1pbmVzIHRoZSBwcmVmaXggZm9yIGEgc3ltYm9sJ3MgcGh5c25hbWUuICBVbmxp a2UgZGV0ZXJtaW5lX3ByZWZpeCwKLSsgICB0aGlzIG1ldGhvZCBkb2VzIG5vdCBzaW1wbHkgbG9v ayBhdCB0aGUgRElFJ3MgaW1tZWRpYXRlIHBhcmVudC4KLSsgICBJdCB3aWxsIGNvbXB1dGUgdGhl IHN5bWJvbCdzIHBoeXNuYW1lIGJ5IHNjYW5uaW5nIHRocm91Z2ggYWxsIHBhcmVudAotKyAgIERJ RXMgdW50aWwgaXQgZ2V0cyB0byB0aGUgY29tcGlsYXRpb24gdW5pdCdzIERJRS4gICovCi0rCi0r c3RhdGljIGNoYXIgKgotK3BoeXNuYW1lX3ByZWZpeCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIGxvbmcgbGVuZ3RoOwotKyAgc3RydWN0IHVpX2Zp bGUgKmJ1ZjsKLSsgIHN0cnVjdCBkaWVfaW5mbyAqZCwgKnNwZWNfZGllOwotKyAgc3RydWN0IGR3 YXJmMl9jdSAqc3BlY19jdTsKLSsgIGNoYXIgKm5hbWU7Ci0rCi0rICAvKiBDb25zdHJ1Y3QgYSBz dGFjayBjb250YWluaW5nIGFsbCBvZiB0aGUgRElFJ3MgcGFyZW50cy4gIENhdXRpb24KLSsgICAg IG11c3QgYmUgb2JzZXJ2ZWQgZm9yIGRlYWxpbmcgd2l0aCBEV19BVF9zcGVjaWZpY2F0aW9uLiAq LwotKyAgc3BlY19jdSA9IGN1OwotKyAgc3BlY19kaWUgPSBkaWVfc3BlY2lmaWNhdGlvbiAoZGll LCAmc3BlY19jdSk7Ci0rICBpZiAoc3BlY19kaWUgIT0gTlVMTCkKLSsgICAgZCA9IHNwZWNfZGll LT5wYXJlbnQ7Ci0rICBlbHNlCi0rICAgIGQgPSBkaWUtPnBhcmVudDsKLSsgIHdoaWxlIChkICE9 IE5VTEwgJiYgZC0+dGFnICE9IERXX1RBR19jb21waWxlX3VuaXQpCi0rICAgIHsKLSsgICAgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwotKwotKyAgICAgIHNwZWNfZGllID0gZGllX3NwZWNpZmlj YXRpb24gKGQsICZzcGVjX2N1KTsKLSsgICAgICBpZiAoc3BlY19kaWUgIT0gTlVMTCkKLSsJZCA9 IHNwZWNfZGllOwotKwotKyAgICAgIFZFQ19xdWlja19wdXNoIChkaWVfaW5mb19wLCBkaWVfbGlz dCwgZCk7Ci0rICAgICAgZCA9IGQtPnBhcmVudDsKLSsgICAgfQotKwotKyAgLyogTm93IHBvcCBh bGwgdGhlIGVsZW1lbnRzLCBwcmludGluZyB0aGVpciBuYW1lcyBhcyB3ZSBnby4gICovCi0rICBi dWYgPSBtZW1fZmlsZW9wZW4gKCk7Ci0rICB3aGlsZSAoIVZFQ19lbXB0eSAoZGllX2luZm9fcCwg ZGllX2xpc3QpKQotKyAgICB7Ci0rICAgICAgZCA9IFZFQ19wb3AgKGRpZV9pbmZvX3AsIGRpZV9s aXN0KTsKLSsgICAgICBwaHlzbmFtZV9wcmVmaXhfMSAoYnVmLCBkLCBjdSk7Ci0rCi0rICAgICAg aWYgKCFWRUNfZW1wdHkgKGRpZV9pbmZvX3AsIGRpZV9saXN0KSkKLSsJewotKwkgIGlmIChjdS0+ bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0rCSAgICBmcHV0c191bmZpbHRlcmVkICgiOjoi LCBidWYpOwotKwkgIGVsc2UKLSsJICAgIGZwdXRzX3VuZmlsdGVyZWQgKCIuIiwgYnVmKTsKLSsJ fQotKyAgICB9Ci0rCi0rICBuYW1lID0gdWlfZmlsZV9vYnNhdmVzdHJpbmcgKGJ1ZiwgJmN1LT5v YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssICZsZW5ndGgpOwotKyAgdWlfZmlsZV9kZWxldGUgKGJ1 Zik7Ci0rICByZXR1cm4gbmFtZTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLStwaHlzbmFtZV9wcmVm aXhfMSAoc3RydWN0IHVpX2ZpbGUgKmJ1Ziwgc3RydWN0IGRpZV9pbmZvICpkaWUsCi0rCQkgICBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSt7Ci0rICBjb25zdCBjaGFyICpuYW1lID0gTlVMTDsKLSsg IGdkYl9hc3NlcnQgKGJ1ZiAhPSBOVUxMKTsKLSsKLSsgIGlmIChkaWUgIT0gTlVMTCkKLSsgICAg ewotKyAgICAgIHN3aXRjaCAoZGllLT50YWcpCi0rCXsKLSsJY2FzZSBEV19UQUdfbmFtZXNwYWNl OgotKwkgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rCSAgaWYgKG5hbWUgPT0gTlVM TCkKLSsJICAgIG5hbWUgPSAiKGFub255bW91cyBuYW1lc3BhY2UpIjsKLSsJICBicmVhazsKLSsK LSsJY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKLSsJY2FzZSBEV19UQUdfc3RydWN0dXJlX3R5cGU6 Ci0rCWNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6Ci0rCWNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5 cGU6Ci0rCWNhc2UgRFdfVEFHX2ludGVyZmFjZV90eXBlOgotKwljYXNlIERXX1RBR19zdWJwcm9n cmFtOgotKwkgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7Ci0rCSAgYnJlYWs7Ci0rCi0r CWRlZmF1bHQ6Ci0rCSAgYnJlYWs7Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKG5hbWUgIT0gTlVM TCkKLSsgICAgZnB1dHNfdW5maWx0ZXJlZCAobmFtZSwgYnVmKTsKLSt9Ci0rCi0gLyogUmV0dXJu IGEgbmV3bHktYWxsb2NhdGVkIHN0cmluZyBmb3JtZWQgYnkgY29uY2F0ZW5hdGluZyBQUkVGSVgg YW5kCi0gICAgU1VGRklYIHdpdGggYXBwcm9wcmlhdGUgc2VwYXJhdG9yLiAgSWYgUFJFRklYIG9y IFNVRkZJWCBpcyBOVUxMIG9yIGVtcHR5LCB0aGVuCi0gICAgc2ltcGx5IGNvcHkgdGhlIFNVRkZJ WCBvciBQUkVGSVgsIHJlc3BlY3RpdmVseS4gIElmIE9CUyBpcyBub24tbnVsbCwKLUBAIC04OTYz LDE3ICs5NzQ0LDExMSBAQCBzaWJsaW5nX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUpCi0gICBy ZXR1cm4gZGllLT5zaWJsaW5nOworQEAgLTkxMTAsNiArOTY4OCwzOSBAQCBkd2FyZjJfbGlua2Fn ZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICBy ZXR1cm4gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwogIH0KICAKLS0vKiBHZXQgbGlua2FnZSBuYW1l IG9mIGEgZGllLCByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQuICAqLwotKy8qIENvbnN0cnVjdCBh IHBoeXNuYW1lIGZvciB0aGUgZ2l2ZW4gRElFIGluIENVLiAqLwotIAotIHN0YXRpYyBjaGFyICoK LS1kd2FyZjJfbGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCi0rZHdhcmYyX3BoeXNuYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCi0gewotICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSsgIGNoYXIg Km5hbWU7Ci0rCi0rICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotKwotKyAgLyogVGhl c2UgYXJlIHRoZSBvbmx5IGxhbmd1YWdlcyB3ZSBrbm93IGhvdyB0byBxdWFsaWZ5IG5hbWVzIGlu LiAgKi8KLSsgIGlmIChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfY3BsdXMKLSsgICAgICAmJiBj dS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfamF2YSkKLSsgICAgcmV0dXJuIG5hbWU7Ci0rCi0rICBp ZiAoZGllX25lZWRzX25hbWVzcGFjZSAoZGllLCBjdSkpCi0rICAgIHsKLSsgICAgICBsb25nIGxl bmd0aDsKLSsgICAgICBjaGFyICpwcmVmaXg7Ci0rICAgICAgc3RydWN0IHVpX2ZpbGUgKmJ1ZjsK LSsKLSsgICAgICBwcmVmaXggPSBwaHlzbmFtZV9wcmVmaXggKGRpZSwgY3UpOwotKyAgICAgIGJ1 ZiA9IG1lbV9maWxlb3BlbiAoKTsKLSsgICAgICBpZiAoKnByZWZpeCAhPSAnXDAnKQotKwl7Ci0r CSAgY2hhciAqcHJlZml4ZWRfbmFtZSA9IHR5cGVuYW1lX2NvbmNhdCAoTlVMTCwgcHJlZml4LCBu YW1lLCBjdSk7Ci0rCSAgZnB1dHNfdW5maWx0ZXJlZCAocHJlZml4ZWRfbmFtZSwgYnVmKTsKLSsJ ICB4ZnJlZSAocHJlZml4ZWRfbmFtZSk7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWZwdXRzX3VuZmls dGVyZWQgKG5hbWUgPyBuYW1lIDogIiIsIGJ1Zik7Ci0rCi0rICAgICAgLyogRm9yIEphdmEgYW5k IEMrKyBtZXRob2RzLCBhcHBlbmQgZm9ybWFsIHBhcmFtZXRlciB0eXBlCi0rCSBpbmZvcm1hdGlv bi4gKi8KLSsgICAgICBpZiAoKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cyB8fCBjdS0+ bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkKLSsJICAmJiBkaWUtPnRhZyA9PSBEV19UQUdfc3Vi cHJvZ3JhbSkKLSsJewotKwkgIHN0cnVjdCB0eXBlICp0eXBlID0gcmVhZF90eXBlX2RpZSAoZGll LCBjdSk7Ci0rCi0rCSAgY190eXBlX3ByaW50X2FyZ3MgKHR5cGUsIGJ1ZiwgMCwgY3UtPmxhbmd1 YWdlKTsKLSsKLSsJICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2phdmEpCi0rCSAgICB7 Ci0rCSAgICAgIC8qIEZvciBqYXZhLCB3ZSBtdXN0IGFwcGVuZCB0aGUgcmV0dXJuIHR5cGUgdG8g bWV0aG9kIG5hbWVzLiAqLwotKwkgICAgICBpZiAoZGllLT50YWcgPT0gRFdfVEFHX3N1YnByb2dy YW0pCi0rCQlqYXZhX3ByaW50X3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCAiIiwgYnVm LCAwLCAwKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf Y3BsdXMpCi0rCSAgICB7Ci0rCSAgICAgIC8qIGNfdHlwZV9wcmludF9hcmdzIGFkZHMgYXJndW1l bnQgdHlwZXMsIGJ1dCBpdCBkb2VzCi0rCQkgbm90IGFkZCBhbnkgbmVjZXNzYXJ5ICJjb25zdCIu ICovCi0rCSAgICAgIGlmIChUWVBFX05GSUVMRFMgKHR5cGUpID4gMCAmJiBUWVBFX0ZJRUxEX0FS VElGSUNJQUwgKHR5cGUsIDApCi0rCQkgICYmIFRZUEVfQ09OU1QgKFRZUEVfVEFSR0VUX1RZUEUg KFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpKSkKLSsJCWZwdXRzX3VuZmlsdGVyZWQgKCIgY29u c3QiLCBidWYpOwotKwkgICAgfQotKwl9Ci0rCi0rICAgICAgbmFtZSA9IHVpX2ZpbGVfb2JzYXZl c3RyaW5nIChidWYsICZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCQkgICAmbGVu Z3RoKTsKLSsgICAgICB1aV9maWxlX2RlbGV0ZSAoYnVmKTsKLSsKLSsgICAgICBpZiAoY3UtPmxh bmd1YWdlID09IGxhbmd1YWdlX2NwbHVzKQotKwl7Ci0rCSAgY2hhciAqY25hbWUKLSsJICAgID0g ZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChuYW1lLCBjdSwKLSsJCQkJCSZjdS0+b2JqZmlsZS0+ b2JqZmlsZV9vYnN0YWNrKTsKLSsJICBpZiAoY25hbWUgIT0gTlVMTCkKLSsJICAgIG5hbWUgPSBj bmFtZTsKLSsJfQotKyAgICB9Ci0rCi0rICByZXR1cm4gbmFtZTsKLSt9Ci0rCiArLyogUmV0dXJu IHRoZSBmdWxseSBxdWFsaWZpZWQgLnN5bXRhYiBuYW1lIGZvciBzeW1ib2xzIGNvbnRhaW5lZCBp biBGb3J0cmFuCiArICAgbW9kdWxlcy4gIFJldHVybiBEV0FSRjJfTkFNRSBvdGhlcndpc2UuICAq LwogKwpAQCAtNzE1NSwxMSArMzg0OSw3IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0 CiArICAgICAgaWYgKG1vZHVsZV9uYW1lKQogKwl7CiArCSAgY2hhciAqcmV0dmFsOwotIAotLSAg YXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX01JUFNfbGlua2FnZV9uYW1lLCBjdSk7Ci0t ICBpZiAoYXR0ciAmJiBEV19TVFJJTkcgKGF0dHIpKQotLSAgICByZXR1cm4gRFdfU1RSSU5HIChh dHRyKTsKLS0gIHJldHVybiBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisrCiArCSAgLyogYF9fbW9k dWxlbmFtZV9NT0RfdmFyaWFibGVuYW1lMCcuICAqLwogKwkgIHJldHZhbCA9IG9ic3RhY2tfYWxs b2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAogKwkJCQkgIDIgKyBzdHJsZW4gKG1v ZHVsZV9uYW1lKSArIDUgKyBzdHJsZW4gKG5hbWUpCkBAIC03MTcxLDI0MSArMzg2MSwxMiBAQCBp bmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAogKyAgICB9CiArCiArICByZXR1cm4gbmFtZTsK LSB9Ci0gCi0gLyogR2V0IG5hbWUgb2YgYSBkaWUsIHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZC4g ICovCi1AQCAtMTAyMDAsMTEgKzExMDc1LDExIEBAIGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQg KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogUmV0dXJu IHRoZSBjb25zdGFudCB2YWx1ZSBoZWxkIGJ5IHRoZSBnaXZlbiBhdHRyaWJ1dGUuICBSZXR1cm4g LTEKLSsvKiBSZXR1cm4gdGhlIGNvbnN0YW50IHZhbHVlIGhlbGQgYnkgdGhlIGdpdmVuIGF0dHJp YnV0ZS4gIFJldHVybiBERUZBVUxUX1ZBTFVFCi0gICAgaWYgdGhlIHZhbHVlIGhlbGQgYnkgdGhl IGF0dHJpYnV0ZSBpcyBub3QgY29uc3RhbnQuICAqLwotIAotLXN0YXRpYyBpbnQKLS1kd2FyZjJf Z2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIGludCBkZWZh dWx0X3ZhbHVlKQotK3N0YXRpYyBDT1JFX0FERFIKLStkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRf dmFsdWUgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIENPUkVfQUREUiBkZWZhdWx0X3ZhbHVlKQot IHsKLSAgIGlmIChhdHRyLT5mb3JtID09IERXX0ZPUk1fc2RhdGEpCi0gICAgIHJldHVybiBEV19T TkQgKGF0dHIpOwotQEAgLTExMDA5LDggKzExODg0LDYgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAo c3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9mZnNldCwKLSB7Ci0gICBnZGJf Ynl0ZSAqbWFjX3B0ciwgKm1hY19lbmQ7Ci0gICBzdHJ1Y3QgbWFjcm9fc291cmNlX2ZpbGUgKmN1 cnJlbnRfZmlsZSA9IDA7Ci0tICBlbnVtIGR3YXJmX21hY2luZm9fcmVjb3JkX3R5cGUgbWFjaW5m b190eXBlOwotLSAgaW50IGF0X2NvbW1hbmRsaW5lOwotIAotICAgaWYgKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+bWFjaW5mby5idWZmZXIgPT0gTlVMTCkKLSAgICAgewotQEAgLTExMDE4LDI5ICsxMTg5 MSwxOSBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNp Z25lZCBpbnQgb2Zmc2V0LAotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgLyogRmlyc3Qg cGFzczogRmluZCB0aGUgbmFtZSBvZiB0aGUgYmFzZSBmaWxlbmFtZS4KLS0gICAgIFRoaXMgZmls ZW5hbWUgaXMgbmVlZGVkIGluIG9yZGVyIHRvIHByb2Nlc3MgYWxsIG1hY3JvcyB3aG9zZSBkZWZp bml0aW9uCi0tICAgICAob3IgdW5kZWZpbml0aW9uKSBjb21lcyBmcm9tIHRoZSBjb21tYW5kIGxp bmUuICBUaGVzZSBtYWNyb3MgYXJlIGRlZmluZWQKLS0gICAgIGJlZm9yZSB0aGUgZmlyc3QgRFdf TUFDSU5GT19zdGFydF9maWxlIGVudHJ5LCBhbmQgeWV0IHN0aWxsIG5lZWQgdG8gYmUKLS0gICAg IGFzc29jaWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4KLS0KLS0gICAgIFRvIGRldGVybWluZSB0aGUg YmFzZSBmaWxlIG5hbWUsIHdlIHNjYW4gdGhlIG1hY3JvIGRlZmluaXRpb25zIHVudGlsIHdlCi0t ICAgICByZWFjaCB0aGUgZmlyc3QgRFdfTUFDSU5GT19zdGFydF9maWxlIGVudHJ5LiAgV2UgdGhl biBpbml0aWFsaXplCi0tICAgICBDVVJSRU5UX0ZJTEUgYWNjb3JkaW5nbHkgc28gdGhhdCBhbnkg bWFjcm8gZGVmaW5pdGlvbiBmb3VuZCBiZWZvcmUgdGhlCi0tICAgICBmaXJzdCBEV19NQUNJTkZP X3N0YXJ0X2ZpbGUgY2FuIHN0aWxsIGJlIGFzc29jaWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4gICov Ci0tCi0gICBtYWNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1ZmZlciArIG9m ZnNldDsKLSAgIG1hY19lbmQgPSBkd2FyZjJfcGVyX29iamZpbGUtPm1hY2luZm8uYnVmZmVyCi0g ICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLnNpemU7Ci0gCi0tICBkbwotKyAgZm9y ICg7OykKLSAgICAgewotKyAgICAgIGVudW0gZHdhcmZfbWFjaW5mb19yZWNvcmRfdHlwZSBtYWNp bmZvX3R5cGU7CisrfQogKwotICAgICAgIC8qIERvIHdlIGF0IGxlYXN0IGhhdmUgcm9vbSBmb3Ig YSBtYWNpbmZvIHR5cGUgYnl0ZT8gICovCi0gICAgICAgaWYgKG1hY19wdHIgPj0gbWFjX2VuZCkK LSAgICAgICAgIHsKLS0JICAvKiBDb21wbGFpbnQgaXMgcHJpbnRlZCBkdXJpbmcgdGhlIHNlY29u ZCBwYXNzIGFzIEdEQiB3aWxsIHByb2JhYmx5Ci0tCSAgICAgc3RvcCB0aGUgZmlyc3QgcGFzcyBl YXJsaWVyIHVwb24gZmluZGluZyBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUuICAqLwotLQkgIGJyZWFr OwotKwkgIGR3YXJmMl9tYWNyb3NfdG9vX2xvbmdfY29tcGxhaW50ICgpOwotKyAgICAgICAgICBy ZXR1cm47Ci0gICAgICAgICB9Ci0gCi0gICAgICAgbWFjaW5mb190eXBlID0gcmVhZF8xX2J5dGUg KGFiZmQsIG1hY19wdHIpOwotQEAgLTExMDUxLDkyICsxMTkxNCw3IEBAIGR3YXJmX2RlY29kZV9t YWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCi0gICAg ICAgICAgIC8qIEEgemVybyBtYWNpbmZvIHR5cGUgaW5kaWNhdGVzIHRoZSBlbmQgb2YgdGhlIG1h Y3JvCi0gICAgICAgICAgICAgIGluZm9ybWF0aW9uLiAgKi8KLSAgICAgICAgIGNhc2UgMDoKLS0J ICBicmVhazsKLS0KLS0JY2FzZSBEV19NQUNJTkZPX2RlZmluZToKLS0JY2FzZSBEV19NQUNJTkZP X3VuZGVmOgotLQkgIC8qIE9ubHkgc2tpcCB0aGUgZGF0YSBieSBNQUNfUFRSLiAgKi8KLS0JICB7 Ci0tCSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKLS0KLS0JICAgIHJlYWRfdW5zaWduZWRf bGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0tCSAgICBtYWNfcHRyICs9IGJ5 dGVzX3JlYWQ7Ci0tCSAgICByZWFkX3N0cmluZyAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQp OwotLQkgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotLQkgIH0KLS0JICBicmVhazsKLS0KLS0J Y2FzZSBEV19NQUNJTkZPX3N0YXJ0X2ZpbGU6Ci0tCSAgewotLQkgICAgdW5zaWduZWQgaW50IGJ5 dGVzX3JlYWQ7Ci0tCSAgICBpbnQgbGluZSwgZmlsZTsKLS0KLS0JICAgIGxpbmUgPSByZWFkX3Vu c2lnbmVkX2xlYjEyOCAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFjX3B0 ciArPSBieXRlc19yZWFkOwotLQkgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZk LCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0tCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0t Ci0tCSAgICBjdXJyZW50X2ZpbGUgPSBtYWNyb19zdGFydF9maWxlIChmaWxlLCBsaW5lLCBjdXJy ZW50X2ZpbGUsIGNvbXBfZGlyLAotLQkJCQkJICAgICBsaCwgY3UtPm9iamZpbGUpOwotLQkgIH0K LS0JICBicmVhazsKLS0KLS0JY2FzZSBEV19NQUNJTkZPX2VuZF9maWxlOgotLQkgIC8qIE5vIGRh dGEgdG8gc2tpcCBieSBNQUNfUFRSLiAgKi8KLS0JICBicmVhazsKLS0KLS0JY2FzZSBEV19NQUNJ TkZPX3ZlbmRvcl9leHQ6Ci0tCSAgLyogT25seSBza2lwIHRoZSBkYXRhIGJ5IE1BQ19QVFIuICAq LwotLQkgIHsKLS0JICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotLQotLQkgICAgcmVhZF91 bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLS0JICAgIG1hY19w dHIgKz0gYnl0ZXNfcmVhZDsKLS0JICAgIHJlYWRfc3RyaW5nIChhYmZkLCBtYWNfcHRyLCAmYnl0 ZXNfcmVhZCk7Ci0tCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0tCSAgfQotLQkgIGJyZWFr OwotLQotLQlkZWZhdWx0OgotLQkgIGJyZWFrOwotLQl9Ci0tICAgIH0gd2hpbGUgKG1hY2luZm9f dHlwZSAhPSAwICYmIGN1cnJlbnRfZmlsZSA9PSBOVUxMKTsKLS0KLS0gIC8qIFNlY29uZCBwYXNz OiBQcm9jZXNzIGFsbCBlbnRyaWVzLgotLQotLSAgICAgVXNlIHRoZSBBVF9DT01NQU5EX0xJTkUg ZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBhcmUgc3RpbGwgcHJvY2Vzc2luZwotLSAgICAg Y29tbWFuZC1saW5lIG1hY3JvIGRlZmluaXRpb25zL3VuZGVmaW5pdGlvbnMuICBUaGlzIGZsYWcg aXMgdW5zZXQgd2hlbiB3ZQotLSAgICAgcmVhY2ggdGhlIGZpcnN0IERXX01BQ0lORk9fc3RhcnRf ZmlsZSBlbnRyeS4gICovCi0tCi0tICBtYWNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNp bmZvLmJ1ZmZlciArIG9mZnNldDsKLS0KLS0gIC8qIERldGVybWluZXMgaWYgR0RCIGlzIHN0aWxs IGJlZm9yZSBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUuICBJZiB0cnVlCi0tICAgICBHREIg aXMgc3RpbGwgcmVhZGluZyB0aGUgZGVmaW5pdGlvbnMgZnJvbSBjb21tYW5kIGxpbmUuICBGaXJz dAotLSAgICAgRFdfTUFDSU5GT19zdGFydF9maWxlIHdpbGwgbmVlZCB0byBiZSBpZ25vcmVkIGFz IGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkCi0tICAgICB0byBjcmVhdGUgQ1VSUkVOVF9GSUxFIGZv ciB0aGUgbWFpbiBzb3VyY2UgaG9sZGluZyBhbHNvIHRoZSBjb21tYW5kIGxpbmUKLS0gICAgIGRl ZmluaXRpb25zLiAgT24gZmlyc3QgbWV0IERXX01BQ0lORk9fc3RhcnRfZmlsZSB0aGlzIGZsYWcg aXMgcmVzZXQgdG8KLS0gICAgIG5vcm1hbGx5IGV4ZWN1dGUgYWxsIHRoZSByZW1haW5pbmcgRFdf TUFDSU5GT19zdGFydF9maWxlIG1hY2luZm9zLiAgKi8KLS0KLS0gIGF0X2NvbW1hbmRsaW5lID0g MTsKLS0KLS0gIGRvCi0tICAgIHsKLS0gICAgICAvKiBEbyB3ZSBhdCBsZWFzdCBoYXZlIHJvb20g Zm9yIGEgbWFjaW5mbyB0eXBlIGJ5dGU/ICAqLwotLSAgICAgIGlmIChtYWNfcHRyID49IG1hY19l bmQpCi0tCXsKLS0JICBkd2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCAoKTsKLS0JICBi cmVhazsKLS0JfQotLQotLSAgICAgIG1hY2luZm9fdHlwZSA9IHJlYWRfMV9ieXRlIChhYmZkLCBt YWNfcHRyKTsKLS0gICAgICBtYWNfcHRyKys7Ci0tCi0tICAgICAgc3dpdGNoIChtYWNpbmZvX3R5 cGUpCi0tCXsKLS0JICAvKiBBIHplcm8gbWFjaW5mbyB0eXBlIGluZGljYXRlcyB0aGUgZW5kIG9m IHRoZSBtYWNybwotLQkgICAgIGluZm9ybWF0aW9uLiAgKi8KLS0JY2FzZSAwOgotLQkgIGJyZWFr OwotKyAgICAgICAgICByZXR1cm47Ci0gCi0gICAgICAgICBjYXNlIERXX01BQ0lORk9fZGVmaW5l OgotICAgICAgICAgY2FzZSBEV19NQUNJTkZPX3VuZGVmOgotQEAgLTExMTUxLDMxICsxMTkyOSwx OSBAQCBkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25l ZCBpbnQgb2Zmc2V0LAotICAgICAgICAgICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLSAKLSAg ICAgICAgICAgICBpZiAoISBjdXJyZW50X2ZpbGUpCi0tCSAgICAgIHsKLS0JCS8qIERXQVJGIHZp b2xhdGlvbiBhcyBubyBtYWluIHNvdXJjZSBpcyBwcmVzZW50LiAgKi8KLS0JCWNvbXBsYWludCAo JnN5bWZpbGVfY29tcGxhaW50cywKLS0JCQkgICBfKCJkZWJ1ZyBpbmZvIHdpdGggbm8gbWFpbiBz b3VyY2UgZ2l2ZXMgbWFjcm8gJXMgIgotLQkJCSAgICAgIm9uIGxpbmUgJWQ6ICVzIiksCi0tCQkJ ICAgbWFjaW5mb190eXBlID09Ci0tCQkJICAgRFdfTUFDSU5GT19kZWZpbmUgPyBfKCJkZWZpbml0 aW9uIikgOiBtYWNpbmZvX3R5cGUgPT0KLS0JCQkgICBEV19NQUNJTkZPX3VuZGVmID8gXygidW5k ZWZpbml0aW9uIikgOgotLQkJCSAgICJzb21ldGhpbmctb3Itb3RoZXIiLCBsaW5lLCBib2R5KTsK LS0JCWJyZWFrOwotLQkgICAgICB9Ci0tCSAgICBpZiAoKGxpbmUgPT0gMCAmJiAhYXRfY29tbWFu ZGxpbmUpIHx8IChsaW5lICE9IDAgJiYgYXRfY29tbWFuZGxpbmUpKQotIAkgICAgICBjb21wbGFp bnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0tCQkJIF8oImRlYnVnIGluZm8gZ2l2ZXMgJXMgbWFj cm8gJXMgd2l0aCAlcyBsaW5lICVkOiAlcyIpLAotLQkJCSBhdF9jb21tYW5kbGluZSA/IF8oImNv bW1hbmQtbGluZSIpIDogXygiaW4tZmlsZSIpLAotKwkJCSBfKCJkZWJ1ZyBpbmZvIGdpdmVzIG1h Y3JvICVzIG91dHNpZGUgb2YgYW55IGZpbGU6ICVzIiksCi0gCQkJIG1hY2luZm9fdHlwZSA9PQot LQkJCSBEV19NQUNJTkZPX2RlZmluZSA/IF8oImRlZmluaXRpb24iKSA6IG1hY2luZm9fdHlwZSA9 PQotLQkJCSBEV19NQUNJTkZPX3VuZGVmID8gXygidW5kZWZpbml0aW9uIikgOgotLQkJCSAic29t ZXRoaW5nLW9yLW90aGVyIiwKLS0JCQkgbGluZSA9PSAwID8gXygiemVybyIpIDogXygibm9uLXpl cm8iKSwgbGluZSwgYm9keSk7Ci0tCi0tCSAgICBpZiAobWFjaW5mb190eXBlID09IERXX01BQ0lO Rk9fZGVmaW5lKQotLQkgICAgICBwYXJzZV9tYWNyb19kZWZpbml0aW9uIChjdXJyZW50X2ZpbGUs IGxpbmUsIGJvZHkpOwotLQkgICAgZWxzZSBpZiAobWFjaW5mb190eXBlID09IERXX01BQ0lORk9f dW5kZWYpCi0tCSAgICAgIG1hY3JvX3VuZGVmIChjdXJyZW50X2ZpbGUsIGxpbmUsIGJvZHkpOwot KwkJCSBEV19NQUNJTkZPX2RlZmluZSA/ICJkZWZpbml0aW9uIiA6IG1hY2luZm9fdHlwZSA9PQot KwkJCSBEV19NQUNJTkZPX3VuZGVmID8gInVuZGVmaW5pdGlvbiIgOgotKwkJCSAic29tZXRoaW5n LW9yLW90aGVyIiwgYm9keSk7Ci0rICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgewot KyAgICAgICAgICAgICAgICBpZiAobWFjaW5mb190eXBlID09IERXX01BQ0lORk9fZGVmaW5lKQot KyAgICAgICAgICAgICAgICAgIHBhcnNlX21hY3JvX2RlZmluaXRpb24gKGN1cnJlbnRfZmlsZSwg bGluZSwgYm9keSk7Ci0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1hY2luZm9fdHlwZSA9PSBE V19NQUNJTkZPX3VuZGVmKQotKyAgICAgICAgICAgICAgICAgIG1hY3JvX3VuZGVmIChjdXJyZW50 X2ZpbGUsIGxpbmUsIGJvZHkpOwotKyAgICAgICAgICAgICAgfQotICAgICAgICAgICB9Ci0gICAg ICAgICAgIGJyZWFrOwotIAotQEAgLTExMTg5LDIyICsxMTk1NSw5IEBAIGR3YXJmX2RlY29kZV9t YWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCi0gICAg ICAgICAgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0 ZXNfcmVhZCk7Ci0gICAgICAgICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotIAotLQkgICAg aWYgKChsaW5lID09IDAgJiYgIWF0X2NvbW1hbmRsaW5lKSB8fCAobGluZSAhPSAwICYmIGF0X2Nv bW1hbmRsaW5lKSkKLS0JICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotLQkJ CSBfKCJkZWJ1ZyBpbmZvIGdpdmVzIHNvdXJjZSAlZCBpbmNsdWRlZCAiCi0tCQkJICAgImZyb20g JXMgYXQgJXMgbGluZSAlZCIpLAotLQkJCSBmaWxlLCBhdF9jb21tYW5kbGluZSA/IF8oImNvbW1h bmQtbGluZSIpIDogXygiZmlsZSIpLAotLQkJCSBsaW5lID09IDAgPyBfKCJ6ZXJvIikgOiBfKCJu b24temVybyIpLCBsaW5lKTsKLS0KLS0JICAgIGlmIChhdF9jb21tYW5kbGluZSkKLS0JICAgICAg ewotLQkJLyogVGhpcyBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgd2FzIGV4ZWN1dGVkIGluIHRoZSBw YXNzIG9uZS4gICovCi0tCQlhdF9jb21tYW5kbGluZSA9IDA7Ci0tCSAgICAgIH0KLS0JICAgIGVs c2UKLS0JICAgICAgY3VycmVudF9maWxlID0gbWFjcm9fc3RhcnRfZmlsZSAoZmlsZSwgbGluZSwK LS0JCQkJCSAgICAgICBjdXJyZW50X2ZpbGUsIGNvbXBfZGlyLAotLQkJCQkJICAgICAgIGxoLCBj dS0+b2JqZmlsZSk7Ci0rICAgICAgICAgICAgY3VycmVudF9maWxlID0gbWFjcm9fc3RhcnRfZmls ZSAoZmlsZSwgbGluZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjdXJyZW50X2ZpbGUsIGNvbXBfZGlyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxoLCBjdS0+b2JqZmlsZSk7Ci0gICAgICAgICAgIH0KLSAgICAg ICAgICAgYnJlYWs7Ci0gCi1AQCAtMTEyNTgsNyArMTIwMTEsNyBAQCBkd2FyZl9kZWNvZGVfbWFj cm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAotICAgICAg ICAgICB9Ci0gICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAgICB9IHdoaWxlIChtYWNp bmZvX3R5cGUgIT0gMCk7Ci0rICAgIH0KLSB9CisgLyogR2V0IG5hbWUgb2YgYSBkaWUsIHJldHVy biBOVUxMIGlmIG5vdCBmb3VuZC4gICovCiAgCi0gLyogQ2hlY2sgaWYgdGhlIGF0dHJpYnV0ZSdz IGZvcm0gaXMgYSBEV19GT1JNX2Jsb2NrKgotQEAgLTExMzE4LDYgKzEyMDcxLDM0IEBAIGF0dHJf Zm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKKyBzdGF0aWMgY2hhciAq CitAQCAtMTE0NTUsNiArMTIwNjYsMzQgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3Qg YXR0cmlidXRlICphdHRyKQogICAgICB9CiAgfQogIApAQCAtNzQ0MCw3ICszOTAxLDcgQEAgaW5k ZXggNGNjZTM2Yi4uZmIwYTY5MyAxMDA2NDQKICBzdGF0aWMgdm9pZAogIGR3YXJmMl9zeW1ib2xf bWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3lt LAogIAkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi1AQCAtMTEzNDcsMzUgKzEyMTI4LDI1 IEBAIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg c3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTExNDg0LDM1ICsxMjEyMywyNSBAQCBkd2FyZjJfc3lt Ym9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wg KnN5bSwKICAgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0 X2Z1bmNzOwogICAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwogICAg ICB9CkBAIC03NDkxLDcgKzM5NTIsNyBAQCBpbmRleCA0Y2NlMzZiLi5mYjBhNjkzIDEwMDY0NAog ICAgICB9CiAgfQogIAotQEAgLTExNjYzLDYgKzEyNDM0LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9l cSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTExODAw LDYgKzEyNDI5LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMs IGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNf cmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtNzUyMywxNiArMzk4NCwxNiBAQCBpbmRleCA0Y2NlMzZi Li5mYjBhNjkzIDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRv IFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZv ciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuICAqLwogIAotQEAgLTExNjcxLDYgKzEyNDY3LDgg QEAgc2V0X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTExODA4LDYgKzEyNDYyLDggQEAgc2V0X2RpZV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQogIHsKICAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqc2xvdCwg b2ZzOwogIAogKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwogKwotICAg aWYgKGN1LT50eXBlX2hhc2ggPT0gTlVMTCkKLSAgICAgewotICAgICAgIGdkYl9hc3NlcnQgKGN1 LT5wZXJfY3UgIT0gTlVMTCk7Ci1AQCAtMTE4MTMsMjMgKzEyNjExLDEzIEBAIHNob3dfZHdhcmYy X2NtZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorICAgLyogRm9yIEFkYSB0eXBlcywgbWFr ZSBzdXJlIHRoYXQgdGhlIGduYXQtc3BlY2lmaWMgZGF0YSBpcyBhbHdheXMKKyAgICAgIGluaXRp YWxpemVkIChpZiBub3QgYWxyZWFkeSBzZXQpLiAgVGhlcmUgYXJlIGEgZmV3IHR5cGVzIHdoZXJl CisgICAgICB3ZSBzaG91bGQgbm90IGJlIGRvaW5nIHNvLCBiZWNhdXNlIHRoZSB0eXBlLXNwZWNp ZmljIGFyZWEgaXMKK0BAIC0xMTk2MywyMyArMTI2MTksMTMgQEAgc2hvd19kd2FyZjJfY21kIChj aGFyICphcmdzLCBpbnQgZnJvbV90dHkpCiAgICBjbWRfc2hvd19saXN0IChzaG93X2R3YXJmMl9j bWRsaXN0LCBmcm9tX3R0eSwgIiIpOwogIH0KICAKQEAgLTc1NjAsNyArNDAyMSw3IEBAIGluZGV4 IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgfQogIAogIC8qIG11bm1hcCBkZWJ1ZyBzZWN0aW9u cyBmb3IgT0JKRklMRSwgaWYgbmVjZXNzYXJ5LiAgKi8KLUBAIC0xMTgzOCwxNSArMTI2MjYsMTUg QEAgc3RhdGljIHZvaWQKK0BAIC0xMTk4OCwxNSArMTI2MzQsMTUgQEAgc3RhdGljIHZvaWQKICBk d2FyZjJfcGVyX29iamZpbGVfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQp CiAgewogICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZGF0YSA9IGQ7CkBAIC03NTg1LDM5 ICs0MDQ2LDU2IEBAIGluZGV4IDRjY2UzNmIuLmZiMGE2OTMgMTAwNjQ0CiAgfQogIAogIHZvaWQg X2luaXRpYWxpemVfZHdhcmYyX3JlYWQgKHZvaWQpOwotQEAgLTExODU0LDYgKzEyNjQyLDcgQEAg dm9pZCBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7Ci0gdm9pZAotIF9pbml0aWFsaXpl X2R3YXJmMl9yZWFkICh2b2lkKQotIHsKLSsgIGRpZV9saXN0ID0gVkVDX2FsbG9jIChkaWVfaW5m b19wLCAzMik7Ci0gICBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleQotICAgICA9IHJlZ2lzdGVyX29i amZpbGVfZGF0YV93aXRoX2NsZWFudXAgKE5VTEwsIGR3YXJmMl9wZXJfb2JqZmlsZV9mcmVlKTsK LSAKIGRpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJlYWQuYwotaW5kZXggNmU3 OWQ0YS4uMTk4YmFlMyAxMDA2NDQKK2luZGV4IDc4ZTkxNjMuLjRlMjA4ZDEgMTAwNjQ0CiAtLS0g YS9nZGIvZWxmcmVhZC5jCiArKysgYi9nZGIvZWxmcmVhZC5jCi1AQCAtNzI4LDEwICs3MjgsMTgg QEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBtYWlubGlu ZSkKK0BAIC04NzksMjAgKzg3OSwxMyBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCiAgCQkJCXN0cl9zZWN0LT5maWxlcG9zLAog IAkJCQliZmRfc2VjdGlvbl9zaXplIChhYmZkLCBzdHJfc2VjdCkpOwogICAgICB9Ci0rCistICBp ZiAoZHdhcmYyX2hhc19pbmZvIChvYmpmaWxlKSkKKy0gICAgeworLSAgICAgIC8qIERXQVJGIDIg c2VjdGlvbnMgKi8KKy0gICAgICBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKG9iamZpbGUpOworLSAg ICB9CistCistICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMzA1MDQ6IFRoaXMgc3RpbGwgbmVlZHMg dG8gYmUgaW50ZWdyYXRlZCB3aXRoCistICAgICBkd2FyZjJyZWFkLmMgaW4gYSBiZXR0ZXIgd2F5 LiAgKi8KKy0gIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChvYmpmaWxlKTsKKyAKICsgIGlmIChk d2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQogKyAgICBkd2FyZjJfY3JlYXRlX3F1aWNrX2FkZHJt YXAgKG9iamZpbGUpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK3JlYWRfcHN5bXMgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlKQotK3sKLSAgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQor ICAgLyogSWYgdGhlIGZpbGUgaGFzIGl0cyBvd24gc3ltYm9sIHRhYmxlcyBpdCBoYXMgbm8gc2Vw YXJhdGUgZGVidWcgaW5mby4KKyAgICAgIGAuZHluc3ltJy9gLnN5bXRhYicgZ28gdG8gTVNZTUJP TFMsIGAuZGVidWdfaW5mbycgZ29lcyB0byBTWU1UQUJTL1BTWU1UQUJTLgorICAgICAgYC5nbnVf ZGVidWdsaW5rJyBtYXkgbm8gbG9uZ2VyIGJlIHByZXNlbnQgd2l0aCBgLm5vdGUuZ251LmJ1aWxk LWlkJy4gICovCistICBpZiAoIW9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkp CisrICBlbHNlCiAgICAgIHsKLSAgICAgICAvKiBEV0FSRiAyIHNlY3Rpb25zICovCi0tICAgICAg ZHdhcmYyX2J1aWxkX3BzeW10YWJzIChvYmpmaWxlLCBtYWlubGluZSk7Ci0rICAgICAgZHdhcmYy X2J1aWxkX3BzeW10YWJzIChvYmpmaWxlLCAwKTsKKyAgICAgICBjaGFyICpkZWJ1Z2ZpbGU7Cisg CitAQCAtOTEwLDYgKzkwMywyMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgaW50IHN5bWZpbGVfZmxhZ3MpCiAgICAgIH0KKyB9CiAgCi0gICAvKiBGSVhNRTog a2V0dGVuaXMvMjAwMzA1MDQ6IFRoaXMgc3RpbGwgbmVlZHMgdG8gYmUgaW50ZWdyYXRlZCB3aXRo Ci1AQCAtODgxLDYgKzg4OSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9 Cisrc3RhdGljIHZvaWQKKytyZWFkX3BzeW1zIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7 CisrICBpZiAoZHdhcmYyX2hhc19pbmZvIChvYmpmaWxlKSkKKysgICAgeworKyAgICAgIC8qIERX QVJGIDIgc2VjdGlvbnMgKi8KKysgICAgICBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKG9iamZpbGUp OworKyAgICB9CisrCisrICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMzA1MDQ6IFRoaXMgc3RpbGwg bmVlZHMgdG8gYmUgaW50ZWdyYXRlZCB3aXRoCisrICAgICBkd2FyZjJyZWFkLmMgaW4gYSBiZXR0 ZXIgd2F5LiAgKi8KKysgIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChvYmpmaWxlKTsKKyt9Cisr CisgLyogVGhpcyBjbGVhbnMgdXAgdGhlIG9iamZpbGUncyBkZXByZWNhdGVkX3N5bV9zdGFiX2lu Zm8gcG9pbnRlciwgYW5kCisgICAgdGhlIGNoYWluIG9mIHN0YWJfc2VjdGlvbl9pbmZvJ3MsIHRo YXQgbWlnaHQgYmUgZGFuZ2xpbmcgZnJvbQorICAgIGl0LiAgKi8KK0BAIC0xMDUyLDYgKzEwNTks NyBAQCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQogICAgZWxmX25ld19pbml0 LAkJCS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bXRhYiAq LwogICAgZWxmX3N5bWZpbGVfaW5pdCwJCS8qIHN5bV9pbml0OiByZWFkIGluaXRpYWwgaW5mbywg c2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KICAgIGVsZl9zeW1maWxlX3JlYWQsCQkvKiBzeW1fcmVh ZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCkBAIC03NjI2LDYwICs0MTA0LDIz IEBAIGluZGV4IDZlNzlkNGEuLjE5OGJhZTMgMTAwNjQ0CiAgICBkZWZhdWx0X3N5bWZpbGVfb2Zm c2V0cywJLyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9jYXRpb24g Ki8KICAgIGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVu dCBpbmZvcm1hdGlvbiBmcm9tCiBkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMK LWluZGV4IDI5MjY0NjUuLmI1M2Y4OTUgMTAwNjQ0CitpbmRleCAzZGJiYzhiLi40ZGViODJkIDEw MDY0NAogLS0tIGEvZ2RiL2V2YWwuYwogKysrIGIvZ2RiL2V2YWwuYwotQEAgLTM5LDggKzM5LDEy IEBACitAQCAtMzksMTAgKzM5LDEyIEBACiAgI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKICAjaW5j bHVkZSAicmVnY2FjaGUuaCIKICAjaW5jbHVkZSAidXNlci1yZWdzLmgiCiArI2luY2x1ZGUgInB5 dGhvbi9weXRob24uaCIKICAjaW5jbHVkZSAidmFscHJpbnQuaCIKLSsjaW5jbHVkZSAiZ2RiX29i c3RhY2suaCIKLSsjaW5jbHVkZSAib2JqZmlsZXMuaCIKKyAjaW5jbHVkZSAiZ2RiX29ic3RhY2su aCIKKyAjaW5jbHVkZSAib2JqZmlsZXMuaCIKICAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgog KyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKICAKICAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAot QEAgLTY1MSw2ICs2NTUsMzYgQEAgcHRybWF0aF90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQot ICAgICB9Ci0gfQotIAotKy8qIENvbnN0cnVjdHMgYSBmYWtlIG1ldGhvZCB3aXRoIHRoZSBnaXZl biBwYXJhbWV0ZXIgdHlwZXMuICovCi0rc3RhdGljIHZvaWQKLStmcmVlX3BhcmFtX3R5cGVzICh2 b2lkICphcmcpCi0rewotKyAgc3RydWN0IHR5cGUgKnR5cGUgPSAoc3RydWN0IHR5cGUgKikgYXJn OwotKyAgeGZyZWUgKFRZUEVfRklFTERTICh0eXBlKSk7Ci0rICB4ZnJlZSAoVFlQRV9NQUlOX1RZ UEUgKHR5cGUpKTsKLSsgIHhmcmVlICh0eXBlKTsKLSt9Ci0rCi0rc3RhdGljIHN0cnVjdCB0eXBl ICoKLSttYWtlX3BhcmFtcyAoaW50IG51bV90eXBlcywgc3RydWN0IHR5cGUgKipwYXJhbV90eXBl cykKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IFhaQUxMT0MgKHN0cnVjdCB0eXBlKTsKLSsg IFRZUEVfTUFJTl9UWVBFICh0eXBlKSA9IFhaQUxMT0MgKHN0cnVjdCBtYWluX3R5cGUpOwotKyAg VFlQRV9MRU5HVEggKHR5cGUpID0gMTsKLSsgIFRZUEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVf TUVUSE9EOwotKyAgVFlQRV9WUFRSX0ZJRUxETk8gKHR5cGUpID0gLTE7Ci0rICBUWVBFX0NIQUlO ICh0eXBlKSA9IHR5cGU7Ci0rICBUWVBFX05GSUVMRFMgKHR5cGUpID0gbnVtX3R5cGVzOwotKyAg VFlQRV9GSUVMRFMgKHR5cGUpID0gKHN0cnVjdCBmaWVsZCAqKQotKyAgICBUWVBFX1pBTExPQyAo dHlwZSwgc2l6ZW9mIChzdHJ1Y3QgZmllbGQpICogbnVtX3R5cGVzKTsKLSsKLSsgIHdoaWxlIChu dW1fdHlwZXMtLSA+IDApCi0rICAgIFRZUEVfRklFTERfVFlQRSAodHlwZSwgbnVtX3R5cGVzKSA9 IHBhcmFtX3R5cGVzW251bV90eXBlc107Ci0rCi0rICBtYWtlX2NsZWFudXAgKGZyZWVfcGFyYW1f dHlwZXMsIHR5cGUpOwotKyAgcmV0dXJuIHR5cGU7Ci0rfQotKwotIHN0cnVjdCB2YWx1ZSAqCi0g ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCQkJ ICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLUBAIC02NzEsNiArNzA1LDcgQEAg ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAt Njk2LDYgKzY5OCw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAogICAgbG9uZyBtZW1fb2Zmc2V0OwogICAgc3RydWN0IHR5cGUgKiphcmdfdHlw ZXM7CiAgICBpbnQgc2F2ZV9wb3MxOwpAQCAtNzY4Nyw4NyArNDEyOCw3IEBAIGluZGV4IDI5MjY0 NjUuLmI1M2Y4OTUgMTAwNjQ0CiAgCiAgICBwYyA9ICgqcG9zKSsrOwogICAgb3AgPSBleHAtPmVs dHNbcGNdLm9wY29kZTsKLUBAIC02ODQsNyArNzE5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCWdvdG8gbm9zaWRlcmV0OwotICAgICAg IGFyZzEgPSB2YWx1ZV9hZ2dyZWdhdGVfZWx0IChleHAtPmVsdHNbcGMgKyAxXS50eXBlLAotIAkJ CQkgICZleHAtPmVsdHNbcGMgKyAzXS5zdHJpbmcsCi0tCQkJCSAgMCwgbm9zaWRlKTsKLSsJCQkJ ICBleHBlY3RfdHlwZSwgMCwgbm9zaWRlKTsKLSAgICAgICBpZiAoYXJnMSA9PSBOVUxMKQotIAll cnJvciAoXygiVGhlcmUgaXMgbm8gZmllbGQgbmFtZWQgJXMiKSwgJmV4cC0+ZWx0c1twYyArIDNd LnN0cmluZyk7Ci0gICAgICAgcmV0dXJuIGFyZzE7Ci1AQCAtMTI5Myw3ICsxMzI4LDYgQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gICAgICAg YXJndmVjID0gKHN0cnVjdCB2YWx1ZSAqKikgYWxsb2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZSAq KSAqIChuYXJncyArIDMpKTsKLSAgICAgICBpZiAob3AgPT0gU1RSVUNUT1BfTUVNQkVSIHx8IG9w ID09IFNUUlVDVE9QX01QVFIpCi0gCXsKLS0JICBuYXJncysrOwotIAkgIC8qIEZpcnN0LCBldmFs dWF0ZSB0aGUgc3RydWN0dXJlIGludG8gYXJnMiAqLwotIAkgIHBjMiA9ICgqcG9zKSsrOwotIAot QEAgLTEzMTcsMjEgKzEzNTEsNDAgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3Qg dHlwZSAqZXhwZWN0X3R5cGUsCi0gCi0gCSAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9U WVBFLCBleHAsIHBvcywgbm9zaWRlKTsKLSAKLS0JICBpZiAoVFlQRV9DT0RFIChjaGVja190eXBl ZGVmICh2YWx1ZV90eXBlIChhcmcxKSkpCi0tCSAgICAgICE9IFRZUEVfQ09ERV9NRVRIT0RQVFIp Ci0tCSAgICBlcnJvciAoXygiTm9uLXBvaW50ZXItdG8tbWVtYmVyIHZhbHVlIHVzZWQgaW4gcG9p bnRlci10by1tZW1iZXIgIgotLQkJICAgICAiY29uc3RydWN0IikpOwotLQotLQkgIGlmIChub3Np ZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCi0rCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKGFyZzEpKTsKLSsJICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCi0gCSAg ICB7Ci0tCSAgICAgIHN0cnVjdCB0eXBlICptZXRob2RfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFyZzEpKTsKLS0JICAgICAgYXJnMSA9IHZhbHVlX3plcm8gKG1ldGhvZF90eXBl LCBub3RfbHZhbCk7Ci0rCSAgICBjYXNlIFRZUEVfQ09ERV9NRVRIT0RQVFI6Ci0rCSAgICAgIGlm IChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpCi0rCQlhcmcxID0gdmFsdWVfemVy byAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIG5vdF9sdmFsKTsKLSsJICAgICAgZWxzZQotKwkJ YXJnMSA9IGNwbHVzX21ldGhvZF9wdHJfdG9fdmFsdWUgKCZhcmcyLCBhcmcxKTsKLSsKLSsJICAg ICAgLyogTm93LCBzYXkgd2hpY2ggYXJndW1lbnQgdG8gc3RhcnQgZXZhbHVhdGluZyBmcm9tICov Ci0rCSAgICAgIG5hcmdzKys7Ci0rCSAgICAgIHRlbSA9IDI7Ci0rCSAgICAgIGFyZ3ZlY1sxXSA9 IGFyZzI7Ci0rCSAgICAgIGJyZWFrOwotKwotKwkgICAgY2FzZSBUWVBFX0NPREVfTUVNQkVSUFRS OgotKwkgICAgICAvKiBOb3csIGNvbnZlcnQgdGhlc2UgdmFsdWVzIHRvIGFuIGFkZHJlc3MuICAq LwotKwkgICAgICBhcmcyID0gdmFsdWVfY2FzdCAobG9va3VwX3BvaW50ZXJfdHlwZSAoVFlQRV9E T01BSU5fVFlQRSAodHlwZSkpLAotKwkJCQkgYXJnMik7Ci0rCi0rCSAgICAgIG1lbV9vZmZzZXQg PSB2YWx1ZV9hc19sb25nIChhcmcxKTsKLSsKLSsJICAgICAgYXJnMSA9IHZhbHVlX2Zyb21fcG9p bnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpLAotKwkJ CQkJIHZhbHVlX2FzX2xvbmcgKGFyZzIpICsgbWVtX29mZnNldCk7Ci0rCSAgICAgIGFyZzEgPSB2 YWx1ZV9pbmQgKGFyZzEpOwotKwkgICAgICB0ZW0gPSAxOwotKwkgICAgICBicmVhazsKLSsKLSsJ ICAgIGRlZmF1bHQ6Ci0rCSAgICAgIGVycm9yIChfKCJOb24tcG9pbnRlci10by1tZW1iZXIgdmFs dWUgdXNlZCBpbiBwb2ludGVyLXRvLW1lbWJlciAiCi0rCQkgICAgICAgImNvbnN0cnVjdCIpKTsK LSAJICAgIH0KLS0JICBlbHNlCi0tCSAgICBhcmcxID0gY3BsdXNfbWV0aG9kX3B0cl90b192YWx1 ZSAoJmFyZzIsIGFyZzEpOwotIAotLQkgIC8qIE5vdywgc2F5IHdoaWNoIGFyZ3VtZW50IHRvIHN0 YXJ0IGV2YWx1YXRpbmcgZnJvbSAqLwotLQkgIHRlbSA9IDI7Ci0rCSAgYXJndmVjWzBdID0gYXJn MTsKLSAJfQotICAgICAgIGVsc2UgaWYgKG9wID09IFNUUlVDVE9QX1NUUlVDVCB8fCBvcCA9PSBT VFJVQ1RPUF9QVFIpCi0gCXsKLUBAIC0xNDU3LDggKzE1MTAsNyBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJfQotICAgICAgIGVsc2UgaWYg KG9wID09IFNUUlVDVE9QX01FTUJFUiB8fCBvcCA9PSBTVFJVQ1RPUF9NUFRSKQotIAl7Ci0tCSAg YXJndmVjWzFdID0gYXJnMjsKLS0JICBhcmd2ZWNbMF0gPSBhcmcxOwotKwkgIC8qIFBvaW50ZXIg dG8gbWVtYmVyLiAgYXJndmVjIGlzIGFscmVhZHkgc2V0IHVwLiAgKi8KLSAJfQotICAgICAgIGVs c2UgaWYgKG9wID09IE9QX1ZBUl9WQUxVRSkKLSAJewotQEAgLTE1NDksNiArMTYwMSw4IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTE1 ODgsNiArMTU5MSw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAogIAogICAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUgdHlwZSBjb2RlIHdl IGFyZSBkZWFsaW5nIHdpdGguICAqLwogICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5V TExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7CkBAIC03Nzc2LDcgKzQxMzcsNyBAQCBpbmRleCAy OTI2NDY1Li5iNTNmODk1IDEwMDY0NAogICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1 ZV90eXBlIChhcmcxKSk7CiAgICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCi1AQCAt MTU2OSw2ICsxNjIzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCitAQCAtMTYwOCw2ICsxNjEzLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5k YXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgICAgIGNvZGUgPSBUWVBFX0NPREUg KHR5cGUpOwogIAkgICAgfQogIAl9IApAQCAtNzc4NCw0NSArNDE0NSw3IEBAIGluZGV4IDI5MjY0 NjUuLmI1M2Y4OTUgMTAwNjQ0CiAgCiAgICAgICAgc3dpdGNoIChjb2RlKQogIAl7Ci1AQCAtMTcx Niw2ICsxNzcxLDM3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAotIAkgIGVycm9yIChfKCJub24tcG9pbnRlci10by1tZW1iZXIgdmFsdWUgdXNl ZCBpbiBwb2ludGVyLXRvLW1lbWJlciBjb25zdHJ1Y3QiKSk7Ci0gCX0KLSAKLSsgICAgY2FzZSBU WVBFX0lOU1RBTkNFOgotKyAgICAgIG5hcmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1tw YyArIDFdLmxvbmdjb25zdCk7Ci0rICAgICAgYXJnX3R5cGVzID0gKHN0cnVjdCB0eXBlICoqKSBh bGxvY2EgKG5hcmdzICogc2l6ZW9mIChzdHJ1Y3QgdHlwZSAqKSk7Ci0rICAgICAgZm9yIChpeCA9 IDA7IGl4IDwgbmFyZ3M7ICsraXgpCi0rCWFyZ190eXBlc1tpeF0gPSBleHAtPmVsdHNbcGMgKyAx ICsgaXggKyAxXS50eXBlOwotKwotKyAgICAgIGV4cGVjdF90eXBlID0gbWFrZV9wYXJhbXMgKG5h cmdzLCBhcmdfdHlwZXMpOwotKyAgICAgICoocG9zKSArPSAzICsgbmFyZ3M7Ci0rICAgICAgcmV0 dXJuIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3Np ZGUpOwotKwotKyAgICBjYXNlIFRZUEVfSU5TVEFOQ0VfTE9PS1VQOgotKyAgICAgIHsKLSsJaW50 IGk7Ci0rCXN0cnVjdCBzeW1ib2wgKnN5bTsKLSsJc3RydWN0IHR5cGUgKiphcmdfdHlwZXM7Ci0r CSgqcG9zKSArPSAzOwotKwlwcmludGYgKCJUWVBFX0lOU1RBTkNFX0xPT0tVUFxuIik7Ci0rCWFy Z190eXBlcyA9IChzdHJ1Y3QgdHlwZSAqKikgYWxsb2NhIChUWVBFX05GSUVMRFMgKGV4cGVjdF90 eXBlKQotKwkJCQkJICAgICAqIHNpemVvZiAoc3RydWN0IHR5cGUgKikpOwotKwlmb3IgKGkgPSAw OyBpIDwgVFlQRV9ORklFTERTIChleHBlY3RfdHlwZSk7ICsraSkKLSsJICBhcmdfdHlwZXNbaV0g PSBUWVBFX0ZJRUxEX1RZUEUgKGV4cGVjdF90eXBlLCBpKTsKLSsJKHZvaWQpIGZpbmRfb3Zlcmxv YWRfbWF0Y2ggKGFyZ190eXBlcywgVFlQRV9ORklFTERTIChleHBlY3RfdHlwZSksCi0rCQkJCSAg ICBOVUxMIC8qIG5vIG5lZWQgZm9yIG5hbWUgKi8sCi0rCQkJCSAgICAwIC8qIG5vdCBtZXRob2Qg Ki8sCi0rCQkJCSAgICAwIC8qIHN0cmljdCBtYXRjaCAqLywKLSsJCQkJICAgIE5VTEwsIGV4cC0+ ZWx0c1twYyArIDFdLnN5bWJvbCwgTlVMTCwKLSsJCQkJICAgICZzeW0sIE5VTEwpOwotKwlpID0g MDsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgQklOT1BfQ09OQ0FUOgot ICAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5v c2lkZSk7Ci0gICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAs IHBvcywgbm9zaWRlKTsKLUBAIC0xOTg3LDEzICsyMDczLDE5IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIwNDAsMTMgKzIwNDYsMTkg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAg ICAgICAgewogIAlpbnQgc3Vic2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOwogIAlpbnQg YXJyYXlfc2l6ZV9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKQEAgLTc4NDIsNyArNDE2NSw3IEBA IGluZGV4IDI5MjY0NjUuLmI1M2Y4OTUgMTAwNjQ0CiAgCXRtcF90eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJnMSkpOwogIAluZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2Rp bXMgKHR5cGUpOwogIAotQEAgLTIwMjMsNiArMjExNSw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIwNzYsNiArMjA4OCw5IEBAIGV2 YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogIAkgICAg dXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKICAJICAgIGxvd2VyID0gZjc3 X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CiAgCkBAIC03ODUyLDcgKzQxNzUsNyBAQCBpbmRl eCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0NAogIAkgICAgYXJyYXlfc2l6ZV9hcnJheVtuYXJncyAt IGkgLSAxXSA9IHVwcGVyIC0gbG93ZXIgKyAxOwogIAogIAkgICAgLyogWmVyby1ub3JtYWxpemUg c3Vic2NyaXB0cyBzbyB0aGF0IG9mZnNldHRpbmcgd2lsbCB3b3JrLiAqLwotQEAgLTIwNDEsMTMg KzIxMzYsMjUgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0 X3R5cGUsCitAQCAtMjA5NCwxMyArMjEwOSwyNSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQg KHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAgICAgdG1wX3R5cGUgPSBjaGVja190eXBl ZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSkpOwogIAkgIH0KICAKQEAgLTc4NjQsMTAg KzQxODcsNyBAQCBpbmRleCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0NAogLQlvZmZzZXRfaXRlbSA9 IHN1YnNjcmlwdF9hcnJheVtuZGltZW5zaW9ucyAtIDFdOwogKwlvZmZzZXRfaXRlbSA9IDA7CiAr CW9mZnNldF9ieXRlID0gMDsKLSAKLS0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAxOyBpID4gMDsg LS1pKQotLQkgIG9mZnNldF9pdGVtID0KLS0JICAgIGFycmF5X3NpemVfYXJyYXlbaSAtIDFdICog b2Zmc2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworKwogKwlmb3IgKGkgPSBuZGlt ZW5zaW9ucyAtIDE7IGkgPj0gMDsgLS1pKQogKwkgIHsKICsJICAgIG9mZnNldF9pdGVtICo9IGFy cmF5X3NpemVfYXJyYXlbaV07CkBAIC03ODc2LDEzICs0MTk2LDE2IEBAIGluZGV4IDI5MjY0NjUu LmI1M2Y4OTUgMTAwNjQ0CiArCSAgICBlbHNlCiArCSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNj cmlwdF9hcnJheVtpXSAqIGJ5dGVfc3RyaWRlX2FycmF5W2ldOwogKwkgIH0KLSsKKyAKKy0JZm9y IChpID0gbmRpbWVuc2lvbnMgLSAxOyBpID4gMDsgLS1pKQorLQkgIG9mZnNldF9pdGVtID0KKy0J ICAgIGFycmF5X3NpemVfYXJyYXlbaSAtIDFdICogb2Zmc2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJy YXlbaSAtIDFdOwogKwllbGVtZW50X3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQ RSAodG1wX3R5cGUpKTsKICsJb2Zmc2V0X2J5dGUgKz0gb2Zmc2V0X2l0ZW0gKiBlbGVtZW50X3Np emU7CiAgCiAgCS8qIExldCB1cyBub3cgcGxheSBhIGRpcnR5IHRyaWNrOiB3ZSB3aWxsIHRha2Ug YXJnMSAKICAJICAgd2hpY2ggaXMgYSB2YWx1ZSBub2RlIHBvaW50aW5nIHRvIHRoZSB0b3Btb3N0 IGxldmVsCi1AQCAtMjA1Nyw3ICsyMTY0LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChz dHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCitAQCAtMjExMCw3ICsyMTM3LDcgQEAgZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSAgIHJldHVybnMg dGhlIGNvcnJlY3QgdHlwZSB2YWx1ZSAqLwogIAogIAlkZXByZWNhdGVkX3NldF92YWx1ZV90eXBl IChhcmcxLCB0bXBfdHlwZSk7CkBAIC03ODkxLDcgKzQyMTQsNyBAQCBpbmRleCAyOTI2NDY1Li5i NTNmODk1IDEwMDY0NAogICAgICAgIH0KICAKICAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoK LUBAIC0yMjkxLDE0ICsyMzk4LDIyIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIzNDQsMTQgKzIzNzEsMjIgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgICAgICAgaWYgKGV4cGVj dF90eXBlICYmIFRZUEVfQ09ERSAoZXhwZWN0X3R5cGUpID09IFRZUEVfQ09ERV9QVFIpCiAgCWV4 cGVjdF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAoZXhwZWN0X3R5cGUp KTsKICAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChleHBlY3RfdHlwZSwgZXhwLCBwb3Ms IG5vc2lkZSk7CkBAIC03OTE2LDcgKzQyMzksNyBAQCBpbmRleCAyOTI2NDY1Li5iNTNmODk1IDEw MDY0NAogICAgICAgIGVsc2UgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykK ICAJewogIAkgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAt MjMwNywxMiArMjQyMiwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKK0BAIC0yMzYwLDEyICsyMzk1LDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogIAkgIC8qIEluIEMgeW91IGNhbiBk ZXJlZmVyZW5jZSBhbiBhcnJheSB0byBnZXQgdGhlIDFzdCBlbHQuICAqLwogIAkgICAgICB8fCBU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQogIAkgICAgKQpAQCAtNzk0MCw3ICs0 MjYzLDcgQEAgaW5kZXggMjkyNjQ2NS4uYjUzZjg5NSAxMDA2NDQKICAJICBlbHNlCiAgCSAgICBl cnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUu IikpOwogIAl9Ci1AQCAtMjMyMiw5ICsyNDQzLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorQEAgLTIzNzUsOSArMjQxNiwxNCBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJIGRvLiAg ImxvbmcgbG9uZyIgdmFyaWFibGVzIGFyZSByYXJlIGVub3VnaCB0aGF0CiAgCSBCVUlMVElOX1RZ UEVfTE9OR0VTVCB3b3VsZCBzZWVtIHRvIGJlIGEgbWlzdGFrZS4gICovCiAgICAgICAgaWYgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKQEAgLTc5NTgsMTYgKzQyODEsNyBAQCBp bmRleCAyOTI2NDY1Li5iNTNmODk1IDEwMDY0NAogIAogICAgICBjYXNlIFVOT1BfQUREUjoKICAg ICAgICAvKiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICov Ci1AQCAtMjU5OCw3ICsyNzI0LDcgQEAgZXZhbHVhdGVfc3ViZXhwX2Zvcl9hZGRyZXNzIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSAgICAgICAoKnBvcykgKz0gNSArIEJZVEVT X1RPX0VYUF9FTEVNICh0ZW0gKyAxKTsKLSAgICAgICB4ID0gdmFsdWVfYWdncmVnYXRlX2VsdCAo ZXhwLT5lbHRzW3BjICsgMV0udHlwZSwKLSAJCQkgICAgICAgJmV4cC0+ZWx0c1twYyArIDNdLnN0 cmluZywKLS0JCQkgICAgICAgMSwgbm9zaWRlKTsKLSsJCQkgICAgICAgTlVMTCwgMSwgbm9zaWRl KTsKLSAgICAgICBpZiAoeCA9PSBOVUxMKQotIAllcnJvciAoXygiVGhlcmUgaXMgbm8gZmllbGQg bmFtZWQgJXMiKSwgJmV4cC0+ZWx0c1twYyArIDNdLnN0cmluZyk7Ci0gICAgICAgcmV0dXJuIHg7 Ci1AQCAtMjY0Myw3ICsyNzY5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0 cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjY5Niw3ICsyNzQyLDcgQEAgZXZhbHVhdGVfc3Vi ZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgewogICAgZW51bSBl eHBfb3Bjb2RlIG9wOwogICAgaW50IHBjOwpAQCAtNzk3Niw3ICs0MjkwLDcgQEAgaW5kZXggMjky NjQ2NS4uYjUzZjg5NSAxMDA2NDQKICAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKICAgIHN0cnVjdCB0 eXBlICp0eXBlOwogIAotQEAgLTI2NTQsMTIgKzI3ODAsMTcgQEAgZXZhbHVhdGVfc3ViZXhwX3dp dGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCitAQCAtMjcwNywxMiArMjc1Mywx NyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICB2YXIgPSBleHAtPmVs dHNbcGMgKyAyXS5zeW1ib2w7CkBAIC03OTk1LDcgKzQzMDksNyBAQCBpbmRleCAyOTI2NDY1Li5i NTNmODk1IDEwMDY0NAogIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBl IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCiAgCQkJICAgICB2YWwpOwogIAl9Ci1AQCAtMjcx MSw5ICsyODQyLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgKnBvcykKK0BAIC0yNzY0LDkgKzI4MTUsMTMgQEAgZXZhbHVhdGVfc3Vi ZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQogIAogICAg ICBjYXNlIE9QX1ZBUl9WQUxVRToKICAgICAgICAoKnBvcykgKz0gNDsKQEAgLTgwMTMsNjMgKzQz MjcsMTcgQEAgaW5kZXggMjkyNjQ2NS4uYjUzZjg5NSAxMDA2NDQKICAgICAgZGVmYXVsdDoKICAg ICAgICB2YWwgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIEVWQUxfQVZP SURfU0lERV9FRkZFQ1RTKTsKIGRpZmYgLS1naXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4 cHJlc3Npb24uaAotaW5kZXggZWZmZTFmMC4uM2UwODNjYSAxMDA2NDQKK2luZGV4IGU0ZTg1OTgu LmNhOTZiOWIgMTAwNjQ0CiAtLS0gYS9nZGIvZXhwcmVzc2lvbi5oCiArKysgYi9nZGIvZXhwcmVz c2lvbi5oCi1AQCAtODgsNiArODgsMTYgQEAgZW51bSBleHBfb3Bjb2RlCi0gICAgICAgIHdoZW4g WCBpcyBhIHBvaW50ZXIgaW5zdGVhZCBvZiBhbiBhZ2dyZWdhdGUuICAqLwotICAgICBTVFJVQ1RP UF9NUFRSLAotIAotKyAgICAvKiBUWVBFX0lOU1RBTkNFIGlzIHVzZWQgd2hlbiB0aGUgdXNlciBz cGVjaWZpZXMgYSBzcGVjaWZpYwotKyAgICAgICB0eXBlIGluc3RhbnRpYXRpb24gZm9yIG92ZXJs b2FkZWQgbWV0aG9kcy9mdW5jdGlvbnMuIFRoZSBmb3JtYXQKLSsgICAgICAgaXM6IFRZUEVfSU5T VEFOQ0UgbnVtX3R5cGVzIHR5cGUwIC4uLiB0eXBlTiBudW1fdHlwZXMgVFlQRV9JTlNUQU5DRSov Ci0rICAgIFRZUEVfSU5TVEFOQ0UsCi0rCi0rICAgIC8qIFRZUEVfSU5TVEFOQ0VfTE9PS1VQIGlz IHVzZWQgd2hlbiB0aGUgdXNlciBzcGVjaWZpZXMgYSBzcGVjaWZpYwotKyAgICAgICB0eXBlIGlu c3RhbnRpYXRpb24gb2YgYSBmdW5jdGlvbiAobm90IGEgbWV0aG9kKS4gSW4gdGhpcyBjYXNlLAot KyAgICAgICB3ZSBtdXN0IHRvc3MgdGhlIHJlc3VsdHMgb2YgdGhlIHBhcnNlciBhbmQgbWFudWFs bHkgZG8gdGhlIGxvb2t1cC4gKi8KLSsgICAgVFlQRV9JTlNUQU5DRV9MT09LVVAsCi0rCi0gICAg IC8qIGVuZCBvZiBDKysuICAqLwotIAotICAgICAvKiBGb3IgTW9kdWxhLTIgaW50ZWdlciBkaXZp c2lvbiBESVYgKi8KLUBAIC00MzgsNCArNDQ4LDUgQEAgZXh0ZXJuIGNoYXIgKm9wX3N0cmluZyAo ZW51bSBleHBfb3Bjb2RlKTsKK0BAIC00NDUsNCArNDQ1LDUgQEAgZXh0ZXJuIGNoYXIgKm9wX3N0 cmluZyAoZW51bSBleHBfb3Bjb2RlKTsKICBleHRlcm4gdm9pZCBkdW1wX3Jhd19leHByZXNzaW9u IChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBzdHJ1Y3QgdWlfZmlsZSAqLCBjaGFyICopOwogIGV4dGVy biB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVj dCB1aV9maWxlICopOwogIAogKwogICNlbmRpZiAvKiAhZGVmaW5lZCAoRVhQUkVTU0lPTl9IKSAq LwotZGlmZiAtLWdpdCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKLWluZGV4IGMwNGM4ZjQu LmRkY2Q0NjAgMTAwNjQ0Ci0tLS0gYS9nZGIvZi1leHAueQotKysrIGIvZ2RiL2YtZXhwLnkKLUBA IC0xOTYsNiArMTk2LDcgQEAgc3RhdGljIGludCBwYXJzZV9udW1iZXIgKGNoYXIgKiwgaW50LCBp bnQsIFlZU1RZUEUgKik7Ci0gLyogU3BlY2lhbCB0eXBlIGNhc2VzLCBwdXQgaW4gdG8gYWxsb3cg dGhlIHBhcnNlciB0byBkaXN0aW5ndWlzaCBkaWZmZXJlbnQKLSAgICBsZWdhbCBiYXNldHlwZXMu ICAqLwotICV0b2tlbiBJTlRfS0VZV09SRCBJTlRfUzJfS0VZV09SRCBMT0dJQ0FMX1MxX0tFWVdP UkQgTE9HSUNBTF9TMl9LRVlXT1JEIAotKyV0b2tlbiBMT0dJQ0FMX1M4X0tFWVdPUkQgCi0gJXRv a2VuIExPR0lDQUxfS0VZV09SRCBSRUFMX0tFWVdPUkQgUkVBTF9TOF9LRVlXT1JEIFJFQUxfUzE2 X0tFWVdPUkQgCi0gJXRva2VuIENPTVBMRVhfUzhfS0VZV09SRCBDT01QTEVYX1MxNl9LRVlXT1JE IENPTVBMRVhfUzMyX0tFWVdPUkQgCi0gJXRva2VuIEJPT0xfQU5EIEJPT0xfT1IgQk9PTF9OT1Qg ICAKLUBAIC02MDYsNiArNjA3LDggQEAgdHlwZWJhc2UgIC8qIEltcGxlbWVudHMgKGFwcHJveGlt YXRlbHkpOiAodHlwZS1xdWFsaWZpZXIpKiB0eXBlLXNwZWNpZmllciAqLwotIAkJCXsgJCQgPSBw YXJzZV9mX3R5cGUtPmJ1aWx0aW5faW50ZWdlcl9zMjsgfQotIAl8CUNIQVJBQ1RFUiAKLSAJCQl7 ICQkID0gcGFyc2VfZl90eXBlLT5idWlsdGluX2NoYXJhY3RlcjsgfQotKwl8CUxPR0lDQUxfUzhf S0VZV09SRAotKwkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbF9zODt9Ci0g CXwJTE9HSUNBTF9LRVlXT1JEIAotIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fbG9n aWNhbDsgfQotIAl8CUxPR0lDQUxfUzJfS0VZV09SRAotQEAgLTg1OCw2ICs4NjEsNyBAQCBzdGF0 aWMgY29uc3Qgc3RydWN0IHRva2VuIGY3N19rZXl3b3Jkc1tdID0KLSAgIHsgImludGVnZXJfMiIs IElOVF9TMl9LRVlXT1JELCBCSU5PUF9FTkQgfSwKLSAgIHsgImxvZ2ljYWxfMSIsIExPR0lDQUxf UzFfS0VZV09SRCwgQklOT1BfRU5EIH0sCi0gICB7ICJsb2dpY2FsXzIiLCBMT0dJQ0FMX1MyX0tF WVdPUkQsIEJJTk9QX0VORCB9LAotKyAgeyAibG9naWNhbF84IiwgTE9HSUNBTF9TOF9LRVlXT1JE LCBCSU5PUF9FTkQgfSwKLSAgIHsgImNvbXBsZXhfOCIsIENPTVBMRVhfUzhfS0VZV09SRCwgQklO T1BfRU5EIH0sCi0gICB7ICJpbnRlZ2VyIiwgSU5UX0tFWVdPUkQsIEJJTk9QX0VORCB9LAotICAg eyAibG9naWNhbCIsIExPR0lDQUxfS0VZV09SRCwgQklOT1BfRU5EIH0sCiBkaWZmIC0tZ2l0IGEv Z2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi1pbmRleCAxOWMxMzE2Li40Y2MyYTQwIDEwMDY0 NAoraW5kZXggYjkxNGI0OS4uNzliNDZkMiAxMDA2NDQKIC0tLSBhL2dkYi9mLWxhbmcuYwogKysr IGIvZ2RiL2YtbGFuZy5jCiBAQCAtMzEsNiArMzEsOCBAQApAQCAtODA4MSw0NSArNDM0OSw3IEBA IGluZGV4IDE5YzEzMTYuLjRjYzJhNDAgMTAwNjQ0CiAgCiAgCiAgLyogRm9sbG93aW5nIGlzIGR1 YmlvdXMgc3R1ZmYgdGhhdCBoYWQgYmVlbiBpbiB0aGUgeGNvZmYgcmVhZGVyLiAqLwotQEAgLTU1 LDIwICs1Nyw2IEBAIHR5cGVkZWYgc3RydWN0IHNhdmVkX2JmX3N5bW51bSBTQVZFRF9CRiwgKlNB VkVEX0JGX1BUUjsKLSAvKiBMb2NhbCBmdW5jdGlvbnMgKi8KLSAKLSBleHRlcm4gdm9pZCBfaW5p dGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKTsKLS0jaWYgMAotLXN0YXRpYyB2b2lkIGNsZWFyX2Z1 bmN0aW9uX2xpc3QgKHZvaWQpOwotLXN0YXRpYyBsb25nIGdldF9iZl9mb3JfZmNuIChsb25nKTsK LS1zdGF0aWMgdm9pZCBjbGVhcl9iZl9saXN0ICh2b2lkKTsKLS1zdGF0aWMgdm9pZCBwYXRjaF9h bGxfY29tbW9uc19ieV9uYW1lIChjaGFyICosIENPUkVfQUREUiwgaW50KTsKLS1zdGF0aWMgU0FW RURfRjc3X0NPTU1PTl9QVFIgZmluZF9maXJzdF9jb21tb25fbmFtZWQgKGNoYXIgKik7Ci0tc3Rh dGljIHZvaWQgYWRkX2NvbW1vbl9lbnRyeSAoc3RydWN0IHN5bWJvbCAqKTsKLS1zdGF0aWMgdm9p ZCBhZGRfY29tbW9uX2Jsb2NrIChjaGFyICosIENPUkVfQUREUiwgaW50LCBjaGFyICopOwotLXN0 YXRpYyBTQVZFRF9GVU5DVElPTiAqYWxsb2NhdGVfc2F2ZWRfZnVuY3Rpb25fbm9kZSAodm9pZCk7 Ci0tc3RhdGljIFNBVkVEX0JGX1BUUiBhbGxvY2F0ZV9zYXZlZF9iZl9ub2RlICh2b2lkKTsKLS1z dGF0aWMgQ09NTU9OX0VOVFJZX1BUUiBhbGxvY2F0ZV9jb21tb25fZW50cnlfbm9kZSAodm9pZCk7 Ci0tc3RhdGljIFNBVkVEX0Y3N19DT01NT05fUFRSIGFsbG9jYXRlX3NhdmVkX2Y3N19jb21tb25f bm9kZSAodm9pZCk7Ci0tc3RhdGljIHZvaWQgcGF0Y2hfY29tbW9uX2VudHJpZXMgKFNBVkVEX0Y3 N19DT01NT05fUFRSLCBDT1JFX0FERFIsIGludCk7Ci0tI2VuZGlmCi0gCi0gc3RhdGljIHZvaWQg Zl9wcmludGNoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKiBz dHJlYW0pOwotIHN0YXRpYyB2b2lkIGZfZW1pdF9jaGFyIChpbnQgYywgc3RydWN0IHR5cGUgKnR5 cGUsCi1AQCAtMjU5LDYgKzI0Nyw3IEBAIGVudW0gZl9wcmltaXRpdmVfdHlwZXMgewotICAgZl9w cmltaXRpdmVfdHlwZV9sb2dpY2FsLAotICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3MxLAot ICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3MyLAotKyAgZl9wcmltaXRpdmVfdHlwZV9sb2dp Y2FsX3M4LAotICAgZl9wcmltaXRpdmVfdHlwZV9pbnRlZ2VyLAotICAgZl9wcmltaXRpdmVfdHlw ZV9pbnRlZ2VyX3MyLAotICAgZl9wcmltaXRpdmVfdHlwZV9yZWFsLAotQEAgLTI4OSw2ICsyNzgs OCBAQCBmX2xhbmd1YWdlX2FyY2hfaW5mbyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gICAg ID0gYnVpbHRpbi0+YnVpbHRpbl9sb2dpY2FsX3MxOwotICAgbGFpLT5wcmltaXRpdmVfdHlwZV92 ZWN0b3IgW2ZfcHJpbWl0aXZlX3R5cGVfbG9naWNhbF9zMl0KLSAgICAgPSBidWlsdGluLT5idWls dGluX2xvZ2ljYWxfczI7Ci0rICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZl9wcmltaXRp dmVfdHlwZV9sb2dpY2FsX3M4XQotKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zODsK LSAgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtmX3ByaW1pdGl2ZV90eXBlX3JlYWxdCi0g ICAgID0gYnVpbHRpbi0+YnVpbHRpbl9yZWFsOwotICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0 b3IgW2ZfcHJpbWl0aXZlX3R5cGVfcmVhbF9zOF0KLUBAIC0zMDYsNiArMjk3LDQ2IEBAIGZfbGFu Z3VhZ2VfYXJjaF9pbmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKK0BAIC0zMDYsNiArMzA4 LDQ4IEBAIGZfbGFuZ3VhZ2VfYXJjaF9pbmZvIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAg IGxhaS0+Ym9vbF90eXBlX2RlZmF1bHQgPSBidWlsdGluLT5idWlsdGluX2xvZ2ljYWxfczI7CiAg fQogIApAQCAtODEzMSw2ICs0MzYxLDcgQEAgaW5kZXggMTljMTMxNi4uNGNjMmE0MCAxMDA2NDQK ICsKICtzdGF0aWMgc3RydWN0IHN5bWJvbCAqCiArZl9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChj b25zdCBjaGFyICpuYW1lLAorKwkJCSAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAogKwkJCSAg Y29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKICsJCQkgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFp bikKICt7CkBAIC04MTQ1LDcgKzQzNzYsNyBAQCBpbmRleCAxOWMxMzE2Li40Y2MyYTQwIDEwMDY0 NAogKyAgICAgIHN0cnVjdCB0eXBlICp0eXBlOwogKyAgICAgIHN0cnVjdCBzeW1ib2wgKnJldHZh bDsKICsKLSsgICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2dsb2JhbCAodXNlLT5tb2R1bGVfbmFt ZSwgYmxvY2ssIE1PRFVMRV9ET01BSU4pOworKyAgICAgIHN5bSA9IGxvb2t1cF9zeW1ib2xfZ2xv YmFsICh1c2UtPm1vZHVsZV9uYW1lLCBOVUxMLCBibG9jaywgTU9EVUxFX0RPTUFJTik7CiArCiAr ICAgICAgLyogTW9kdWxlIG5hbWUgbG9va3VwIHNob3VsZCBub3QgZmFpbCB3aXRoIGNvcnJlY3Qg ZGVidWcgaW5mby4gICovCiArICAgICAgaWYgKHN5bSA9PSBOVUxMKQpAQCAtODE1NSw3ICs0Mzg2 LDggQEAgaW5kZXggMTljMTMxNi4uNGNjMmE0MCAxMDA2NDQKICsgICAgICBnZGJfYXNzZXJ0IChU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9NT0RVTEUpOwogKyAgICAgIGdkYl9hc3NlcnQg KFRZUEVfTU9EVUxFX0JMT0NLICh0eXBlKSAhPSBOVUxMKTsKICsKLSsgICAgICByZXR2YWwgPSBs b29rdXBfYmxvY2tfc3ltYm9sIChUWVBFX01PRFVMRV9CTE9DSyAodHlwZSksIG5hbWUsIGRvbWFp bik7CisrICAgICAgcmV0dmFsID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoVFlQRV9NT0RVTEVfQkxP Q0sgKHR5cGUpLCBuYW1lLAorKwkJCQkgICAgbGlua2FnZV9uYW1lLCBkb21haW4pOwogKyAgICAg IGlmIChyZXR2YWwpCiArCXJldHVybiByZXR2YWw7CiArICAgIH0KQEAgLTgxNjYsNyArNDM5OCw3 IEBAIGluZGV4IDE5YzEzMTYuLjRjYzJhNDAgMTAwNjQ0CiAgLyogVGhpcyBpcyBkZWNsYXJlZCBp biBjLWxhbmcuaCBidXQgaXQgaXMgc2lsbHkgdG8gaW1wb3J0IHRoYXQgZmlsZSBmb3Igd2hhdAog ICAgIGlzIGFscmVhZHkganVzdCBhIGhhY2suICovCiAgZXh0ZXJuIGludCBjX3ZhbHVlX3ByaW50 IChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKLUBAIC0zMzMsNyArMzY0LDcgQEAg Y29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gZl9sYW5ndWFnZV9kZWZuID0KK0BAIC0zMzMsNyAr Mzc3LDcgQEAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gZl9sYW5ndWFnZV9kZWZuID0KICAg IGNfdmFsdWVfcHJpbnQsCQkvKiBGSVhNRSAqLwogICAgTlVMTCwJCQkJLyogTGFuZ3VhZ2Ugc3Bl Y2lmaWMgc2tpcF90cmFtcG9saW5lICovCiAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgCS8q IG5hbWVfb2ZfdGhpcyAqLwpAQCAtODE3NSw0MTUgKzQ0MDcsOCBAQCBpbmRleCAxOWMxMzE2Li40 Y2MyYTQwIDEwMDY0NAogICAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUsLyogbG9va3Vw X3RyYW5zcGFyZW50X3R5cGUgKi8KICAgIE5VTEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIHN5 bWJvbCBkZW1hbmdsZXIgKi8KICAgIE5VTEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIGNsYXNz X25hbWVfZnJvbV9waHlzbmFtZSAqLwotQEAgLTM3Miw2ICs0MDMsMTAgQEAgYnVpbGRfZm9ydHJh bl90eXBlcyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCi0gICAgID0gYXJjaF9ib29sZWFuX3R5 cGUgKGdkYmFyY2gsIGdkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoKSwgMSwKLSAJCQkgImxvZ2lj YWwqMiIpOwotIAotKyAgYnVpbHRpbl9mX3R5cGUtPmJ1aWx0aW5fbG9naWNhbF9zOAotKyAgICA9 IGFyY2hfYm9vbGVhbl90eXBlIChnZGJhcmNoLCBnZGJhcmNoX2xvbmdfbG9uZ19iaXQgKGdkYmFy Y2gpLCAxLAotKwkJCSAibG9naWNhbCo4Iik7Ci0rCi0gICBidWlsdGluX2ZfdHlwZS0+YnVpbHRp bl9pbnRlZ2VyCi0gICAgID0gYXJjaF9pbnRlZ2VyX3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfaW50 X2JpdCAoZ2RiYXJjaCksIDAsCi0gCQkJICJpbnRlZ2VyIik7Ci1AQCAtNDE4LDM5NSArNDUzLDMg QEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAodm9pZCkKLSAKLSAgIGFkZF9sYW5ndWFnZSAoJmZf bGFuZ3VhZ2VfZGVmbik7Ci0gfQotLQotLSNpZiAwCi0tc3RhdGljIFNBVkVEX0JGX1BUUgotLWFs bG9jYXRlX3NhdmVkX2JmX25vZGUgKHZvaWQpCi0tewotLSAgU0FWRURfQkZfUFRSIG5ldzsKLS0K LS0gIG5ldyA9IChTQVZFRF9CRl9QVFIpIHhtYWxsb2MgKHNpemVvZiAoU0FWRURfQkYpKTsKLS0g IHJldHVybiAobmV3KTsKLS19Ci0tCi0tc3RhdGljIFNBVkVEX0ZVTkNUSU9OICoKLS1hbGxvY2F0 ZV9zYXZlZF9mdW5jdGlvbl9ub2RlICh2b2lkKQotLXsKLS0gIFNBVkVEX0ZVTkNUSU9OICpuZXc7 Ci0tCi0tICBuZXcgPSAoU0FWRURfRlVOQ1RJT04gKikgeG1hbGxvYyAoc2l6ZW9mIChTQVZFRF9G VU5DVElPTikpOwotLSAgcmV0dXJuIChuZXcpOwotLX0KLS0KLS1zdGF0aWMgU0FWRURfRjc3X0NP TU1PTl9QVFIKLS1hbGxvY2F0ZV9zYXZlZF9mNzdfY29tbW9uX25vZGUgKHZvaWQpCi0tewotLSAg U0FWRURfRjc3X0NPTU1PTl9QVFIgbmV3OwotLQotLSAgbmV3ID0gKFNBVkVEX0Y3N19DT01NT05f UFRSKSB4bWFsbG9jIChzaXplb2YgKFNBVkVEX0Y3N19DT01NT04pKTsKLS0gIHJldHVybiAobmV3 KTsKLS19Ci0tCi0tc3RhdGljIENPTU1PTl9FTlRSWV9QVFIKLS1hbGxvY2F0ZV9jb21tb25fZW50 cnlfbm9kZSAodm9pZCkKLS17Ci0tICBDT01NT05fRU5UUllfUFRSIG5ldzsKLS0KLS0gIG5ldyA9 IChDT01NT05fRU5UUllfUFRSKSB4bWFsbG9jIChzaXplb2YgKENPTU1PTl9FTlRSWSkpOwotLSAg cmV0dXJuIChuZXcpOwotLX0KLS0jZW5kaWYKLS0KLS1TQVZFRF9GNzdfQ09NTU9OX1BUUiBoZWFk X2NvbW1vbl9saXN0ID0gTlVMTDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCi0tU0FW RURfRjc3X0NPTU1PTl9QVFIgdGFpbF9jb21tb25fbGlzdCA9IE5VTEw7CS8qIFB0ciB0byBsYXN0 IHNhdmVkIENPTU1PTiAgKi8KLS1TQVZFRF9GNzdfQ09NTU9OX1BUUiBjdXJyZW50X2NvbW1vbiA9 IE5VTEw7CS8qIFB0ciB0byBjdXJyZW50IENPTU1PTiAqLwotLQotLSNpZiAwCi0tc3RhdGljIFNB VkVEX0JGX1BUUiBzYXZlZF9iZl9saXN0ID0gTlVMTDsJLyogUHRyIHRvICguYmYsZnVuY3Rpb24p IAotLQkJCQkJCSAgIGxpc3QgKi8KLS1zdGF0aWMgU0FWRURfQkZfUFRSIHNhdmVkX2JmX2xpc3Rf ZW5kID0gTlVMTDsJLyogUHRyIHRvIGFib3ZlIGxpc3QncyBlbmQgKi8KLS1zdGF0aWMgU0FWRURf QkZfUFRSIGN1cnJlbnRfaGVhZF9iZl9saXN0ID0gTlVMTDsJLyogQ3VycmVudCBoZWFkIG9mIGFi b3ZlIGxpc3QKLS0JCQkJCQkJICovCi0tCi0tc3RhdGljIFNBVkVEX0JGX1BUUiB0bXBfYmZfcHRy OwkvKiBHZW5lcmljIHRlbXBvcmFyeSBmb3IgdXNlIAotLQkJCQkgICBpbiBtYWNyb3MgKi8KLS0K LS0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHNpbXBseSBlbnRlcnMgYSBnaXZlbiBjb21tb24g YmxvY2sgb250byAKLS0gICB0aGUgZ2xvYmFsIGNvbW1vbiBibG9jayBjaGFpbiAqLwotLQotLXN0 YXRpYyB2b2lkCi0tYWRkX2NvbW1vbl9ibG9jayAoY2hhciAqbmFtZSwgQ09SRV9BRERSIG9mZnNl dCwgaW50IHNlY251bSwgY2hhciAqZnVuY19zdGFiKQotLXsKLS0gIFNBVkVEX0Y3N19DT01NT05f UFRSIHRtcDsKLS0gIGNoYXIgKmMsICpsb2NhbF9jb3B5X2Z1bmNfc3RhYjsKLS0KLS0gIC8qIElm IHRoZSBDT01NT04gYmxvY2sgd2UgYXJlIHRyeWluZyB0byBhZGQgaGFzIGEgYmxhbmsgCi0tICAg ICBuYW1lIChpLmUuICIjQkxOS19DT00iKSB0aGVuIHdlIHNldCBpdCB0byBfX0JMQU5LCi0tICAg ICBiZWNhdXNlIHRoZSBkYXJuICIjIiBjaGFyYWN0ZXIgbWFrZXMgR0RCJ3MgaW5wdXQgCi0tICAg ICBwYXJzZXIgaGF2ZSBmaXRzLiAqLwotLQotLQotLSAgaWYgKHN0cmNtcCAobmFtZSwgQkxBTktf Q09NTU9OX05BTUVfT1JJR0lOQUwpID09IDAKLS0gICAgICB8fCBzdHJjbXAgKG5hbWUsIEJMQU5L X0NPTU1PTl9OQU1FX01GNzcpID09IDApCi0tICAgIHsKLS0KLS0gICAgICB4ZnJlZSAobmFtZSk7 Ci0tICAgICAgbmFtZSA9IGFsbG9jYSAoc3RybGVuIChCTEFOS19DT01NT05fTkFNRV9MT0NBTCkg KyAxKTsKLS0gICAgICBzdHJjcHkgKG5hbWUsIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMKTsKLS0g ICAgfQotLQotLSAgdG1wID0gYWxsb2NhdGVfc2F2ZWRfZjc3X2NvbW1vbl9ub2RlICgpOwotLQot LSAgbG9jYWxfY29weV9mdW5jX3N0YWIgPSB4bWFsbG9jIChzdHJsZW4gKGZ1bmNfc3RhYikgKyAx KTsKLS0gIHN0cmNweSAobG9jYWxfY29weV9mdW5jX3N0YWIsIGZ1bmNfc3RhYik7Ci0tCi0tICB0 bXAtPm5hbWUgPSB4bWFsbG9jIChzdHJsZW4gKG5hbWUpICsgMSk7Ci0tCi0tICAvKiBsb2NhbF9j b3B5X2Z1bmNfc3RhYiBpcyBhIHN0YWJzdHJpbmcsIGxldCB1cyBmaXJzdCBleHRyYWN0IHRoZSAK LS0gICAgIGZ1bmN0aW9uIG5hbWUgZnJvbSB0aGUgc3RhYiBieSBOVUxMaW5nIG91dCB0aGUgJzon IGNoYXJhY3Rlci4gKi8KLS0KLS0KLS0gIGMgPSBOVUxMOwotLSAgYyA9IHN0cmNociAobG9jYWxf Y29weV9mdW5jX3N0YWIsICc6Jyk7Ci0tCi0tICBpZiAoYykKLS0gICAgKmMgPSAnXDAnOwotLSAg ZWxzZQotLSAgICBlcnJvciAoXygiTWFsZm9ybWVkIGZ1bmN0aW9uIFNUQUIgZm91bmQgaW4gYWRk X2NvbW1vbl9ibG9jaygpIikpOwotLQotLQotLSAgdG1wLT5vd25pbmdfZnVuY3Rpb24gPSB4bWFs bG9jIChzdHJsZW4gKGxvY2FsX2NvcHlfZnVuY19zdGFiKSArIDEpOwotLQotLSAgc3RyY3B5ICh0 bXAtPm93bmluZ19mdW5jdGlvbiwgbG9jYWxfY29weV9mdW5jX3N0YWIpOwotLQotLSAgc3RyY3B5 ICh0bXAtPm5hbWUsIG5hbWUpOwotLSAgdG1wLT5vZmZzZXQgPSBvZmZzZXQ7Ci0tICB0bXAtPm5l eHQgPSBOVUxMOwotLSAgdG1wLT5lbnRyaWVzID0gTlVMTDsKLS0gIHRtcC0+c2VjbnVtID0gc2Vj bnVtOwotLQotLSAgY3VycmVudF9jb21tb24gPSB0bXA7Ci0tCi0tICBpZiAoaGVhZF9jb21tb25f bGlzdCA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgaGVhZF9jb21tb25fbGlzdCA9IHRhaWxfY29t bW9uX2xpc3QgPSB0bXA7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgewotLSAgICAgIHRhaWxfY29t bW9uX2xpc3QtPm5leHQgPSB0bXA7Ci0tICAgICAgdGFpbF9jb21tb25fbGlzdCA9IHRtcDsKLS0g ICAgfQotLX0KLS0jZW5kaWYKLS0KLS0vKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHNpbXBseSBl bnRlcnMgYSBnaXZlbiBjb21tb24gZW50cnkgb250byAKLS0gICB0aGUgImN1cnJlbnRfY29tbW9u IiBibG9jayB0aGF0IGhhcyBiZWVuIHNhdmVkIGF3YXkuICovCi0tCi0tI2lmIDAKLS1zdGF0aWMg dm9pZAotLWFkZF9jb21tb25fZW50cnkgKHN0cnVjdCBzeW1ib2wgKmVudHJ5X3N5bV9wdHIpCi0t ewotLSAgQ09NTU9OX0VOVFJZX1BUUiB0bXA7Ci0tCi0tCi0tCi0tICAvKiBUaGUgb3JkZXIgb2Yg dGhpcyBsaXN0IGlzIGltcG9ydGFudCwgc2luY2UgCi0tICAgICB3ZSBleHBlY3QgdGhlIGVudHJp ZXMgdG8gYXBwZWFyIGluIGRlY2wuCi0tICAgICBvcmRlciB3aGVuIHdlIGxhdGVyIGlzc3VlICJp bmZvIGNvbW1vbiIgY2FsbHMgKi8KLS0KLS0gIHRtcCA9IGFsbG9jYXRlX2NvbW1vbl9lbnRyeV9u b2RlICgpOwotLQotLSAgdG1wLT5uZXh0ID0gTlVMTDsKLS0gIHRtcC0+c3ltYm9sID0gZW50cnlf c3ltX3B0cjsKLS0KLS0gIGlmIChjdXJyZW50X2NvbW1vbiA9PSBOVUxMKQotLSAgICBlcnJvciAo XygiQXR0ZW1wdCB0byBhZGQgQ09NTU9OIGVudHJ5IHdpdGggbm8gYmxvY2sgb3BlbiEiKSk7Ci0t ICBlbHNlCi0tICAgIHsKLS0gICAgICBpZiAoY3VycmVudF9jb21tb24tPmVudHJpZXMgPT0gTlVM TCkKLS0JewotLQkgIGN1cnJlbnRfY29tbW9uLT5lbnRyaWVzID0gdG1wOwotLQkgIGN1cnJlbnRf Y29tbW9uLT5lbmRfb2ZfZW50cmllcyA9IHRtcDsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkg IGN1cnJlbnRfY29tbW9uLT5lbmRfb2ZfZW50cmllcy0+bmV4dCA9IHRtcDsKLS0JICBjdXJyZW50 X2NvbW1vbi0+ZW5kX29mX2VudHJpZXMgPSB0bXA7Ci0tCX0KLS0gICAgfQotLX0KLS0jZW5kaWYK LS0KLS0vKiBUaGlzIHJvdXRpbmUgZmluZHMgdGhlIGZpcnN0IGVuY291bnRyZWQgQ09NTU9OIGJs b2NrIG5hbWVkICJuYW1lIiAqLwotLQotLSNpZiAwCi0tc3RhdGljIFNBVkVEX0Y3N19DT01NT05f UFRSCi0tZmluZF9maXJzdF9jb21tb25fbmFtZWQgKGNoYXIgKm5hbWUpCi0tewotLQotLSAgU0FW RURfRjc3X0NPTU1PTl9QVFIgdG1wOwotLQotLSAgdG1wID0gaGVhZF9jb21tb25fbGlzdDsKLS0K LS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAgIGlmIChzdHJjbXAgKHRtcC0+ bmFtZSwgbmFtZSkgPT0gMCkKLS0JcmV0dXJuICh0bXApOwotLSAgICAgIGVsc2UKLS0JdG1wID0g dG1wLT5uZXh0OwotLSAgICB9Ci0tICByZXR1cm4gKE5VTEwpOwotLX0KLS0jZW5kaWYKLS0KLS0v KiBUaGlzIHJvdXRpbmUgZmluZHMgdGhlIGZpcnN0IGVuY291bnRyZWQgQ09NTU9OIGJsb2NrIG5h bWVkICJuYW1lIiAKLS0gICB0aGF0IGJlbG9uZ3MgdG8gZnVuY3Rpb24gZnVuY25hbWUgKi8KLS0K LS1TQVZFRF9GNzdfQ09NTU9OX1BUUgotLWZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAoY2hhciAq bmFtZSwgY2hhciAqZnVuY25hbWUpCi0tewotLQotLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1w OwotLQotLSAgdG1wID0gaGVhZF9jb21tb25fbGlzdDsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVM TCkKLS0gICAgewotLSAgICAgIGlmIChzdHJjbXAgKHRtcC0+bmFtZSwgbmFtZSkgPT0gMAotLQkg ICYmIHN0cmNtcCAodG1wLT5vd25pbmdfZnVuY3Rpb24sIGZ1bmNuYW1lKSA9PSAwKQotLQlyZXR1 cm4gKHRtcCk7Ci0tICAgICAgZWxzZQotLQl0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS0gIHJl dHVybiAoTlVMTCk7Ci0tfQotLQotLQotLSNpZiAwCi0tCi0tLyogVGhlIGZvbGxvd2luZyBmdW5j dGlvbiBpcyBjYWxsZWQgdG8gcGF0Y2ggdXAgdGhlIG9mZnNldHMgCi0tICAgZm9yIHRoZSBzdGF0 aWNzIGNvbnRhaW5lZCBpbiB0aGUgQ09NTU9OIGJsb2NrIG5hbWVkCi0tICAgIm5hbWUuIiAgKi8K LS0KLS1zdGF0aWMgdm9pZAotLXBhdGNoX2NvbW1vbl9lbnRyaWVzIChTQVZFRF9GNzdfQ09NTU9O X1BUUiBibGssIENPUkVfQUREUiBvZmZzZXQsIGludCBzZWNudW0pCi0tewotLSAgQ09NTU9OX0VO VFJZX1BUUiBlbnRyeTsKLS0KLS0gIGJsay0+b2Zmc2V0ID0gb2Zmc2V0OwkJLyogS2VlcCB0aGlz IGFyb3VuZCBmb3IgZnV0dXJlIHVzZS4gKi8KLS0KLS0gIGVudHJ5ID0gYmxrLT5lbnRyaWVzOwot LQotLSAgd2hpbGUgKGVudHJ5ICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBTWU1CT0xfVkFMVUUg KGVudHJ5LT5zeW1ib2wpICs9IG9mZnNldDsKLS0gICAgICBTWU1CT0xfU0VDVElPTiAoZW50cnkt PnN5bWJvbCkgPSBzZWNudW07Ci0tCi0tICAgICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKLS0gICAg fQotLSAgYmxrLT5zZWNudW0gPSBzZWNudW07Ci0tfQotLQotLS8qIFBhdGNoIGFsbCBjb21tb25z IG5hbWVkICJuYW1lIiB0aGF0IG5lZWQgcGF0Y2hpbmcuU2luY2UgQ09NTU9OCi0tICAgYmxvY2tz IG9jY3VyIHdpdGggcmVsYXRpdmUgaW5mcmVxdWVuY3ksIHdlIHNpbXBseSBkbyBhIGxpbmVhciBz Y2FuIG9uCi0tICAgdGhlIG5hbWUuICBFdmVudHVhbGx5LCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhp cyB3aWxsIGJlIGEKLS0gICBoYXNoZWQtbG9va3VwLiAgU2VjbnVtIGlzIHRoZSBzZWN0aW9uIG51 bWJlciBmb3IgdGhlIC5ic3Mgc2VjdGlvbgotLSAgICh3aGljaCBpcyB3aGVyZSBjb21tb24gZGF0 YSBsaXZlcykuICovCi0tCi0tc3RhdGljIHZvaWQKLS1wYXRjaF9hbGxfY29tbW9uc19ieV9uYW1l IChjaGFyICpuYW1lLCBDT1JFX0FERFIgb2Zmc2V0LCBpbnQgc2VjbnVtKQotLXsKLS0KLS0gIFNB VkVEX0Y3N19DT01NT05fUFRSIHRtcDsKLS0KLS0gIC8qIEZvciBibGFuayBjb21tb24gYmxvY2tz LCBjaGFuZ2UgdGhlIGNhbm9uaWNhbCByZXByc2VudGF0aW9uIAotLSAgICAgb2YgYSBibGFuayBu YW1lICovCi0tCi0tICBpZiAoc3RyY21wIChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9PUklHSU5B TCkgPT0gMAotLSAgICAgIHx8IHN0cmNtcCAobmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTUY3Nykg PT0gMCkKLS0gICAgewotLSAgICAgIHhmcmVlIChuYW1lKTsKLS0gICAgICBuYW1lID0gYWxsb2Nh IChzdHJsZW4gKEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMKSArIDEpOwotLSAgICAgIHN0cmNweSAo bmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTE9DQUwpOwotLSAgICB9Ci0tCi0tICB0bXAgPSBoZWFk X2NvbW1vbl9saXN0OwotLQotLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAg aWYgKENPTU1PTl9ORUVEU19QQVRDSElORyAodG1wKSkKLS0JaWYgKHN0cmNtcCAodG1wLT5uYW1l LCBuYW1lKSA9PSAwKQotLQkgIHBhdGNoX2NvbW1vbl9lbnRyaWVzICh0bXAsIG9mZnNldCwgc2Vj bnVtKTsKLS0KLS0gICAgICB0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS19Ci0tI2VuZGlmCi0t Ci0tLyogVGhpcyBtYWNybyBhZGRzIHRoZSBzeW1ib2wtbnVtYmVyIGZvciB0aGUgc3RhcnQgb2Yg dGhlIGZ1bmN0aW9uIAotLSAgICh0aGUgc3ltYm9sIG51bWJlciBvZiB0aGUgLmJmKSByZWZlcmVu Y2VkIGJ5IHN5bW51bV9mY24gdG8gYSAKLS0gICBsaXN0LiAgVGhpcyBsaXN0LCBpbiByZWFsaXR5 IHNob3VsZCBiZSBhIEZJRk8gcXVldWUgYnV0IHNpbmNlIAotLSAgICNsaW5lIHByYWdtYXMgc29t ZXRpbWVzIGNhdXNlIGxpbmUgcmFuZ2VzIHRvIGdldCBtZXNzZWQgdXAgCi0tICAgd2Ugc2ltcGx5 IGNyZWF0ZSBhIGxpbmVhciBsaXN0LiAgVGhpcyBsaXN0IGNhbiB0aGVuIGJlIHNlYXJjaGVkIAot LSAgIGZpcnN0IGJ5IGEgcXVldWVpbmcgYWxnb3JpdGhtIGFuZCB1cG9uIGZhaWx1cmUgZmFsbCBi YWNrIHRvIAotLSAgIGEgbGluZWFyIHNjYW4uICovCi0tCi0tI2lmIDAKLS0jZGVmaW5lIEFERF9C Rl9TWU1OVU0oYmZfc3ltLGZjbl9zeW0pIFwKLS0gIFwKLS0gIGlmIChzYXZlZF9iZl9saXN0ID09 IE5VTEwpIFwKLS17IFwKLS0gICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUo KTsgXAotLSAgICAgIFwKLS0JdG1wX2JmX3B0ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7IFwKLS0J ICB0bXBfYmZfcHRyLT5zeW1udW1fZmNuID0gKGZjbl9zeW0pOyAgXAotLQkgICAgdG1wX2JmX3B0 ci0+bmV4dCA9IE5VTEw7IFwKLS0JICAgICAgXAotLQkJY3VycmVudF9oZWFkX2JmX2xpc3QgPSBz YXZlZF9iZl9saXN0ID0gdG1wX2JmX3B0cjsgXAotLQkJICBzYXZlZF9iZl9saXN0X2VuZCA9IHRt cF9iZl9wdHI7IFwKLS0JCSAgfSBcCi0tZWxzZSBcCi0teyAgXAotLSAgICAgdG1wX2JmX3B0ciA9 IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsgXAotLSAgICAgICBcCi0tICAgICAgICAgdG1wX2Jm X3B0ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7ICBcCi0tCSAgIHRtcF9iZl9wdHItPnN5bW51bV9m Y24gPSAoZmNuX3N5bSk7ICBcCi0tCSAgICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7ICBcCi0t CSAgICAgICBcCi0tCQkgc2F2ZWRfYmZfbGlzdF9lbmQtPm5leHQgPSB0bXBfYmZfcHRyOyAgXAot LQkJICAgc2F2ZWRfYmZfbGlzdF9lbmQgPSB0bXBfYmZfcHRyOyBcCi0tCQkgICB9Ci0tI2VuZGlm Ci0tCi0tLyogVGhpcyBmdW5jdGlvbiBmcmVlcyB0aGUgZW50aXJlICguYmYsZnVuY3Rpb24pIGxp c3QgKi8KLS0KLS0jaWYgMAotLXN0YXRpYyB2b2lkCi0tY2xlYXJfYmZfbGlzdCAodm9pZCkKLS17 Ci0tCi0tICBTQVZFRF9CRl9QVFIgdG1wID0gc2F2ZWRfYmZfbGlzdDsKLS0gIFNBVkVEX0JGX1BU UiBuZXh0ID0gTlVMTDsKLS0KLS0gIHdoaWxlICh0bXAgIT0gTlVMTCkKLS0gICAgewotLSAgICAg IG5leHQgPSB0bXAtPm5leHQ7Ci0tICAgICAgeGZyZWUgKHRtcCk7Ci0tICAgICAgdG1wID0gbmV4 dDsKLS0gICAgfQotLSAgc2F2ZWRfYmZfbGlzdCA9IE5VTEw7Ci0tfQotLSNlbmRpZgotLQotLWlu dCBnbG9iYWxfcmVtb3RlX2RlYnVnOwotLQotLSNpZiAwCi0tCi0tc3RhdGljIGxvbmcKLS1nZXRf YmZfZm9yX2ZjbiAobG9uZyB0aGVfZnVuY3Rpb24pCi0tewotLSAgU0FWRURfQkZfUFRSIHRtcDsK LS0gIGludCBucHJvYmVzID0gMDsKLS0KLS0gIC8qIEZpcnN0IHVzZSBhIHNpbXBsZSBxdWV1aW5n IGFsZ29yaXRobSAoaS5lLiBsb29rIGFuZCBzZWUgaWYgdGhlIAotLSAgICAgaXRlbSBhdCB0aGUg aGVhZCBvZiB0aGUgcXVldWUgaXMgdGhlIG9uZSB5b3Ugd2FudCkgICovCi0tCi0tICBpZiAoc2F2 ZWRfYmZfbGlzdCA9PSBOVUxMKQotLSAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElO RV9fLAotLQkJICAgIF8oImNhbm5vdCBnZXQgLmJmIG5vZGUgb2ZmIGVtcHR5IGxpc3QiKSk7Ci0t Ci0tICBpZiAoY3VycmVudF9oZWFkX2JmX2xpc3QgIT0gTlVMTCkKLS0gICAgaWYgKGN1cnJlbnRf aGVhZF9iZl9saXN0LT5zeW1udW1fZmNuID09IHRoZV9mdW5jdGlvbikKLS0gICAgICB7Ci0tCWlm IChnbG9iYWxfcmVtb3RlX2RlYnVnKQotLQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVy ciwgIioiKTsKLS0KLS0JdG1wID0gY3VycmVudF9oZWFkX2JmX2xpc3Q7Ci0tCWN1cnJlbnRfaGVh ZF9iZl9saXN0ID0gY3VycmVudF9oZWFkX2JmX2xpc3QtPm5leHQ7Ci0tCXJldHVybiAodG1wLT5z eW1udW1fYmYpOwotLSAgICAgIH0KLS0KLS0gIC8qIElmIHRoZSBhYm92ZSBkaWQgbm90IHdvcmsg KHByb2JhYmx5IGJlY2F1c2UgI2xpbmUgZGlyZWN0aXZlcyB3ZXJlIAotLSAgICAgdXNlZCBpbiB0 aGUgc291cmNlZmlsZSBhbmQgdGhleSBtZXNzZWQgdXAgb3VyIGludGVybmFsIHRhYmxlcykgd2Ug bm93IGRvCi0tICAgICB0aGUgdWdseSBsaW5lYXIgc2NhbiAqLwotLQotLSAgaWYgKGdsb2JhbF9y ZW1vdGVfZGVidWcpCi0tICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIlxuZGVm YXVsdGluZyB0byBsaW5lYXIgc2NhblxuIik7Ci0tCi0tICBucHJvYmVzID0gMDsKLS0gIHRtcCA9 IHNhdmVkX2JmX2xpc3Q7Ci0tICB3aGlsZSAodG1wICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICBu cHJvYmVzKys7Ci0tICAgICAgaWYgKHRtcC0+c3ltbnVtX2ZjbiA9PSB0aGVfZnVuY3Rpb24pCi0t CXsKLS0JICBpZiAoZ2xvYmFsX3JlbW90ZV9kZWJ1ZykKLS0JICAgIGZwcmludGZfdW5maWx0ZXJl ZCAoZ2RiX3N0ZGVyciwgIkZvdW5kIGluICVkIHByb2Jlc1xuIiwgbnByb2Jlcyk7Ci0tCSAgY3Vy cmVudF9oZWFkX2JmX2xpc3QgPSB0bXAtPm5leHQ7Ci0tCSAgcmV0dXJuICh0bXAtPnN5bW51bV9i Zik7Ci0tCX0KLS0gICAgICB0bXAgPSB0bXAtPm5leHQ7Ci0tICAgIH0KLS0KLS0gIHJldHVybiAo LTEpOwotLX0KLS0KLS1zdGF0aWMgU0FWRURfRlVOQ1RJT05fUFRSIHNhdmVkX2Z1bmN0aW9uX2xp c3QgPSBOVUxMOwotLXN0YXRpYyBTQVZFRF9GVU5DVElPTl9QVFIgc2F2ZWRfZnVuY3Rpb25fbGlz dF9lbmQgPSBOVUxMOwotLQotLXN0YXRpYyB2b2lkCi0tY2xlYXJfZnVuY3Rpb25fbGlzdCAodm9p ZCkKLS17Ci0tICBTQVZFRF9GVU5DVElPTl9QVFIgdG1wID0gc2F2ZWRfZnVuY3Rpb25fbGlzdDsK LS0gIFNBVkVEX0ZVTkNUSU9OX1BUUiBuZXh0ID0gTlVMTDsKLS0KLS0gIHdoaWxlICh0bXAgIT0g TlVMTCkKLS0gICAgewotLSAgICAgIG5leHQgPSB0bXAtPm5leHQ7Ci0tICAgICAgeGZyZWUgKHRt cCk7Ci0tICAgICAgdG1wID0gbmV4dDsKLS0gICAgfQotLQotLSAgc2F2ZWRfZnVuY3Rpb25fbGlz dCA9IE5VTEw7Ci0tfQotLSNlbmRpZgogZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9m LWxhbmcuaAotaW5kZXggNzExYmRiYS4uOWQ3ZDkyYiAxMDA2NDQKK2luZGV4IGI5OGM1NTYuLmM2 ODM3OWEgMTAwNjQ0CiAtLS0gYS9nZGIvZi1sYW5nLmgKICsrKyBiL2dkYi9mLWxhbmcuaAogQEAg LTI4LDYgKzI4LDEwIEBAIGV4dGVybiB2b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQg aW4gZi1leHAueSAqLwpAQCAtODU5Nyw1NyArNDQyMiw3IEBAIGluZGV4IDcxMWJkYmEuLjlkN2Q5 MmIgMTAwNjQ0CiAgZXh0ZXJuIGludCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKiwgY29uc3Qg Z2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCiAgCQkJc3RydWN0IHVpX2ZpbGUgKiwgaW50LAog IAkJCWNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICopOwotQEAgLTQ3LDQxICs1MSw4 IEBAIGVudW0gZjkwX3JhbmdlX3R5cGUKLSAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxv dzpoaWdoKSIgICovCi0gICB9OwotIAotLXN0cnVjdCBjb21tb25fZW50cnkKLS0gIHsKLS0gICAg c3RydWN0IHN5bWJvbCAqc3ltYm9sOwkvKiBUaGUgc3ltYm9sIG5vZGUgY29ycmVzcG9uZGluZwot LQkJCQkgICB0byB0aGlzIGNvbXBvbmVudCAqLwotLSAgICBzdHJ1Y3QgY29tbW9uX2VudHJ5ICpu ZXh0OwkvKiBUaGUgbmV4dCBjb21wb25lbnQgKi8KLS0gIH07Ci0tCi0tc3RydWN0IHNhdmVkX2Y3 N19jb21tb24KLS0gIHsKLS0gICAgY2hhciAqbmFtZTsJCQkvKiBOYW1lIG9mIENPTU1PTiAqLwot LSAgICBjaGFyICpvd25pbmdfZnVuY3Rpb247CS8qIE5hbWUgb2YgcGFyZW50IGZ1bmN0aW9uICov Ci0tICAgIGludCBzZWNudW07CQkJLyogU2VjdGlvbiAjIG9mIC5ic3MgKi8KLS0gICAgQ09SRV9B RERSIG9mZnNldDsJCS8qIE9mZnNldCBmcm9tIC5ic3MgZm9yIAotLQkJCQkgICB0aGlzIGJsb2Nr ICovCi0tICAgIHN0cnVjdCBjb21tb25fZW50cnkgKmVudHJpZXM7CS8qIExpc3Qgb2YgYmxvY2sn cyBjb21wb25lbnRzICovCi0tICAgIHN0cnVjdCBjb21tb25fZW50cnkgKmVuZF9vZl9lbnRyaWVz OwkvKiBwdHIuIHRvIGVuZCBvZiBjb21wb25lbnRzICovCi0tICAgIHN0cnVjdCBzYXZlZF9mNzdf Y29tbW9uICpuZXh0OwkvKiBOZXh0IHNhdmVkIENPTU1PTiBibG9jayAqLwotLSAgfTsKLS0KLS10 eXBlZGVmIHN0cnVjdCBzYXZlZF9mNzdfY29tbW9uIFNBVkVEX0Y3N19DT01NT04sICpTQVZFRF9G NzdfQ09NTU9OX1BUUjsKLS0KLS10eXBlZGVmIHN0cnVjdCBjb21tb25fZW50cnkgQ09NTU9OX0VO VFJZLCAqQ09NTU9OX0VOVFJZX1BUUjsKLS0KLS1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIg aGVhZF9jb21tb25fbGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICovCi0tZXh0ZXJu IFNBVkVEX0Y3N19DT01NT05fUFRSIHRhaWxfY29tbW9uX2xpc3Q7CS8qIFB0ciB0byBsYXN0IHNh dmVkIENPTU1PTiAgKi8KLS1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgY3VycmVudF9jb21t b247CS8qIFB0ciB0byBjdXJyZW50IENPTU1PTiAqLwotLQotLWV4dGVybiBTQVZFRF9GNzdfQ09N TU9OX1BUUiBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwgY2hhciAqKTsKLS0KLS0j ZGVmaW5lIFVOSU5JVElBTElaRURfU0VDTlVNIC0xCi0tI2RlZmluZSBDT01NT05fTkVFRFNfUEFU Q0hJTkcoYmxrKSAoKGJsayktPnNlY251bSA9PSBVTklOSVRJQUxJWkVEX1NFQ05VTSkKLS0KLSAj ZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3Np Z25lZCAgKi8KLSAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJ LyogTUY3NyBhc3NpZ25lZCAgKi8KLS0jZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAg ICJfX0JMQU5LIgkvKiBMb2NhbCBHREIgKi8KLSAKLSAvKiBXaGVuIHJlYXNvbmFibGUgYXJyYXkg Ym91bmRzIGNhbm5vdCBiZSBmZXRjaGVkLCBzdWNoIGFzIHdoZW4gCi0gICAgeW91IGFzayB0byAn bXQgcHJpbnQgc3ltYm9scycgYW5kIHRoZXJlIGlzIG5vIHN0YWNrIGZyYW1lIGFuZCAKLUBAIC0x MTMsNiArODQsNyBAQCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUKLSAgIHN0cnVjdCB0eXBlICpidWls dGluX2xvZ2ljYWw7Ci0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9sb2dpY2FsX3MxOwotICAgc3Ry dWN0IHR5cGUgKmJ1aWx0aW5fbG9naWNhbF9zMjsKLSsgIHN0cnVjdCB0eXBlICpidWlsdGluX2xv Z2ljYWxfczg7Ci0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9yZWFsOwotICAgc3RydWN0IHR5cGUg KmJ1aWx0aW5fcmVhbF9zODsKLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX3JlYWxfczE2OwotQEAg LTEyNSwzICs5NywxMCBAQCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUKK0BAIC0xMjUsMyArMTI5LDEw IEBAIHN0cnVjdCBidWlsdGluX2ZfdHlwZQogIC8qIFJldHVybiB0aGUgRm9ydHJhbiB0eXBlIHRh YmxlIGZvciB0aGUgc3BlY2lmaWVkIGFyY2hpdGVjdHVyZS4gICovCiAgZXh0ZXJuIGNvbnN0IHN0 cnVjdCBidWlsdGluX2ZfdHlwZSAqYnVpbHRpbl9mX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoKTsKICAKQEAgLTg2NTksMTAgKzQ0MzQsMTAgQEAgaW5kZXggNzExYmRiYS4uOWQ3ZDkyYiAx MDA2NDQKICsgICAgY2hhciBtb2R1bGVfbmFtZVsxXTsKICsgIH07CiBkaWZmIC0tZ2l0IGEvZ2Ri L2YtdHlwZXByaW50LmMgYi9nZGIvZi10eXBlcHJpbnQuYwotaW5kZXggNmM5NjY4Zi4uODUyYjlh OCAxMDA2NDQKK2luZGV4IDAzMzI5MzIuLjZlODY2OGMgMTAwNjQ0CiAtLS0gYS9nZGIvZi10eXBl cHJpbnQuYwogKysrIGIvZ2RiL2YtdHlwZXByaW50LmMKLUBAIC0zMSw3ICszMSw3IEBACitAQCAt MzIsNyArMzIsNyBAQAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgInRhcmdldC5o IgogICNpbmNsdWRlICJmLWxhbmcuaCIKQEAgLTg2NzEsNyArNDQ0Niw3IEBAIGluZGV4IDZjOTY2 OGYuLjg1MmI5YTggMTAwNjQ0CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKICAjaW5jbHVkZSA8 ZXJybm8uaD4KICAKLUBAIC00OCw2ICs0OCwzNCBAQCB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVj X3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2ZpbGUgKiwKK0BAIC00OSw2ICs0OSwz NCBAQCB2b2lkIGZfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3Ry dWN0IHVpX2ZpbGUgKiwKICB2b2lkIGZfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqLCBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQsIGludCk7CiAgDAogIApAQCAtODcwNiw3ICs0NDgxLDcgQEAg aW5kZXggNmM5NjY4Zi4uODUyYjlhOCAxMDA2NDQKICAvKiBMRVZFTCBpcyB0aGUgZGVwdGggdG8g aW5kZW50IGxpbmVzIGJ5LiAgKi8KICAKICB2b2lkCi1AQCAtNTcsNiArODUsOSBAQCBmX3ByaW50 X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sCitAQCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0 eXBlLCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgICBlbnVtIHR5 cGVfY29kZSBjb2RlOwogICAgaW50IGRlbWFuZ2xlZF9hcmdzOwogIApAQCAtODcxNiw3ICs0NDkx LDcgQEAgaW5kZXggNmM5NjY4Zi4uODUyYjlhOCAxMDA2NDQKICAgIGZfdHlwZV9wcmludF9iYXNl ICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsKICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUp OwogICAgaWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAt MTY2LDYgKzE5Nyw5IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitAQCAtMTY1LDYgKzE5Niw5IEBAIGZfdHlw ZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxl ICpzdHJlYW0sCiAgCiAgICBRVUlUOwogIApAQCAtODcyNywyMyArNDUwMiwxMCBAQCBpbmRleCA2 Yzk2NjhmLi44NTJiOWE4IDEwMDY0NAogICAgICB7CiAgICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZ OgogZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCi1pbmRl eCAwYTU3NDA0Li5hOWNjYzc3IDEwMDY0NAoraW5kZXggOWJkMzY0MC4uZjUyYjg1OCAxMDA2NDQK IC0tLSBhL2dkYi9mLXZhbHByaW50LmMKICsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBAIC0zNCwx MCArMzQsOCBAQAotICNpbmNsdWRlICJnZGJjb3JlLmgiCi0gI2luY2x1ZGUgImNvbW1hbmQuaCIK LSAjaW5jbHVkZSAiYmxvY2suaCIKLS0KLS0jaWYgMAotLXN0YXRpYyBpbnQgdGhlcmVfaXNfYV92 aXNpYmxlX2NvbW1vbl9uYW1lZCAoY2hhciAqKTsKLS0jZW5kaWYKLSsjaW5jbHVkZSAiZGljdGlv bmFyeS5oIgotKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gCi0gZXh0ZXJuIHZvaWQgX2luaXRp YWxpemVfZl92YWxwcmludCAodm9pZCk7Ci0gc3RhdGljIHZvaWQgaW5mb19jb21tb25fY29tbWFu ZCAoY2hhciAqLCBpbnQpOwotQEAgLTU0LDE1ICs1MiwxNyBAQCBpbnQgZjc3X2FycmF5X29mZnNl dF90YmxbTUFYX0ZPUlRSQU5fRElNUyArIDFdWzJdOworQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQg Zjc3X2FycmF5X29mZnNldF90YmxbTUFYX0ZPUlRSQU5fRElNUyArIDFdWzJdOwogIC8qIFRoZSBm b2xsb3dpbmcgbWFjcm8gZ2l2ZXMgdXMgdGhlIHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdo ZXJlIAogICAgIG4gaXMgMSBiYXNlZC4gKi8KICAKQEAgLTg3NjQsNyArNDUyNiw3IEBAIGluZGV4 IDBhNTc0MDQuLmE5Y2NjNzcgMTAwNjQ0CiAgICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9J U19VTkRFRklORUQgKHR5cGUpKQogICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5IG5vdCBi ZSAnKicgaW4gRjc3IikpOwogIAotQEAgLTcyLDE0ICs3MiwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91 bmQgKHN0cnVjdCB0eXBlICp0eXBlKQorQEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2Vy Ym91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQogIGludAogIGY3N19nZXRfdXBwZXJib3VuZCAoc3Ry dWN0IHR5cGUgKnR5cGUpCiAgewpAQCAtODc4Nyw3ICs0NTQ5LDcgQEAgaW5kZXggMGE1NzQwNC4u YTljY2M3NyAxMDA2NDQKICAgICAgfQogIAogICAgcmV0dXJuIFRZUEVfQVJSQVlfVVBQRVJfQk9V TkRfVkFMVUUgKHR5cGUpOwotQEAgLTEzNSwyNCArMTM4LDI5IEBAIGY3N19jcmVhdGVfYXJyYXlw cmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVh bSkKK0BAIC0xMzUsMjQgKzE0MCwyOSBAQCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3Ri bCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCiAgICAgICAgdXBw ZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKICAgICAgICBsb3dlciA9IGY3N19n ZXRfbG93ZXJib3VuZCAodG1wX3R5cGUpOwogIApAQCAtODgyMyw3ICs0NTg1LDcgQEAgaW5kZXgg MGE1NzQwNC4uYTljY2M3NyAxMDA2NDQKICAgICAgfQogIH0KICAKLUBAIC0xNzIsMzQgKzE4MCwz NCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3Qg dHlwZSAqdHlwZSwKK0BAIC0xNzIsMzQgKzE4MiwzNCBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50 IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKICAKICAgIGlmIChuc3Mg IT0gbmRpbWVuc2lvbnMpCiAgICAgIHsKQEAgLTg4NjcsNyArNDYyOSw3IEBAIGluZGV4IDBhNTc0 MDQuLmE5Y2NjNzcgMTAwNjQ0CiAgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4i KTsKICAJfQogICAgICB9Ci1AQCAtMjUzLDYgKzI2MSw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQs CitAQCAtMjUzLDYgKzI2Myw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCiAgICBDT1JFX0FERFIg YWRkcjsKICAgIGludCBpbmRleDsKICAKQEAgLTg4NzcsMjUzICs0NjM5LDE3IEBAIGluZGV4IDBh NTc0MDQuLmE5Y2NjNzcgMTAwNjQ0CiAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKICAgIHN3aXRj aCAoVFlQRV9DT0RFICh0eXBlKSkKICAgICAgewotQEAgLTQ2NywyMiArNDc4LDU0IEBAIGZfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsIGludCBl bWJlZGRlZF9vZmZzZXQsCi0gICByZXR1cm4gMDsKLSB9CitkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmRj bWQuYyBiL2dkYi9maW5kY21kLmMKK2luZGV4IGM3NTIzMTYuLmRmMjY4N2MgMTAwNjQ0CistLS0g YS9nZGIvZmluZGNtZC5jCisrKysgYi9nZGIvZmluZGNtZC5jCitAQCAtMjcsNyArMjcsNyBAQAor IAorIC8qIENvcGllZCBmcm9tIGJmZF9wdXRfYml0cy4gICovCiAgCiAtc3RhdGljIHZvaWQKLS1s aXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUpCi0rc3RhdGljIGludAotK2lu Zm9fY29tbW9uX2NvbW1hbmRfZm9yX2Jsb2NrIChzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJICAgICAgIGNvbnN0IGNoYXIgKmNvbW5hbWUpCi0gewot LSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1wOwotLQotLSAgdG1wID0gaGVhZF9jb21tb25fbGlz dDsKLS0KLS0gIHByaW50Zl9maWx0ZXJlZCAoXygiQWxsIENPTU1PTiBibG9ja3MgdmlzaWJsZSBh dCB0aGlzIGxldmVsOlxuXG4iKSk7Ci0tCi0tICB3aGlsZSAodG1wICE9IE5VTEwpCi0tICAgIHsK LS0gICAgICBpZiAoc3RyY21wICh0bXAtPm93bmluZ19mdW5jdGlvbiwgZnVubmFtZSkgPT0gMCkK LS0JcHJpbnRmX2ZpbHRlcmVkICgiJXNcbiIsIHRtcC0+bmFtZSk7Ci0tCi0tICAgICAgdG1wID0g dG1wLT5uZXh0OwotLSAgICB9Ci0rICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVyOwotKyAgc3Ry dWN0IHN5bWJvbCAqc3ltOwotKyAgaW50IHZhbHVlc19wcmludGVkID0gMDsKLSsgIGNvbnN0IGNo YXIgKm5hbWU7Ci0rICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOwotKwotKyAgZ2V0 X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOwotKwotKyAgQUxMX0JMT0NLX1NZTUJPTFMgKGJs b2NrLCBpdGVyLCBzeW0pCi0rICAgIGlmIChTWU1CT0xfRE9NQUlOIChzeW0pID09IENPTU1PTl9C TE9DS19ET01BSU4pCi0rICAgICAgewotKyAgICAgIAlzdHJ1Y3QgdHlwZSAqdHlwZSA9IFNZTUJP TF9UWVBFIChzeW0pOwotKwlpbnQgaW5kZXg7Ci0rCi0rCWdkYl9hc3NlcnQgKFNZTUJPTF9DTEFT UyAoc3ltKSA9PSBMT0NfU1RBVElDKTsKLSsJZ2RiX2Fzc2VydCAoVFlQRV9DT0RFICh0eXBlKSA9 PSBUWVBFX0NPREVfU1RSVUNUKTsKLSsKLSsJaWYgKGNvbW5hbWUgJiYgKCFTWU1CT0xfTElOS0FH RV9OQU1FIChzeW0pCi0rCSAgICAgICAgICAgICAgICB8fCBzdHJjbXAgKGNvbW5hbWUsIFNZTUJP TF9MSU5LQUdFX05BTUUgKHN5bSkpICE9IDApKQotKwkgIGNvbnRpbnVlOwotKwotKwl2YWx1ZXNf cHJpbnRlZCA9IDE7Ci0rCWlmIChTWU1CT0xfUFJJTlRfTkFNRSAoc3ltKSkKLSsJICBwcmludGZf ZmlsdGVyZWQgKF8oIkNvbnRlbnRzIG9mIEY3NyBDT01NT04gYmxvY2sgJyVzJzpcbiIpLAotKwkJ CSAgIFNZTUJPTF9QUklOVF9OQU1FIChzeW0pKTsKLSsJZWxzZQotKwkgIHByaW50Zl9maWx0ZXJl ZCAoXygiQ29udGVudHMgb2YgYmxhbmsgQ09NTU9OIGJsb2NrOlxuIikpOwotKwkKLSsJZm9yIChp bmRleCA9IDA7IGluZGV4IDwgVFlQRV9ORklFTERTICh0eXBlKTsgaW5kZXgrKykKLSsJICB7Ci0r CSAgICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSsKLSsJICAgIGdkYl9hc3NlcnQgKGZpZWxkX2lzX3N0 YXRpYyAoJlRZUEVfRklFTEQgKHR5cGUsIGluZGV4KSkpOwotKwkgICAgdmFsID0gdmFsdWVfc3Rh dGljX2ZpZWxkICh0eXBlLCBpbmRleCk7Ci0rCi0rCSAgICBwcmludGZfZmlsdGVyZWQgKCIlcyA9 ICIsIFRZUEVfRklFTERfTkFNRSAodHlwZSwgaW5kZXgpKTsKLSsJICAgIHZhbHVlX3ByaW50ICh2 YWwsIGdkYl9zdGRvdXQsICZvcHRzKTsKLSsJICAgIHB1dGNoYXJfZmlsdGVyZWQgKCdcbicpOwot KwkgIH0KLSsKLSsJcHV0Y2hhcl9maWx0ZXJlZCAoJ1xuJyk7Ci0rICAgICAgfQotKwotKyAgcmV0 dXJuIHZhbHVlc19wcmludGVkOwotIH0KLSAKLSAvKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8g cHJpbnQgb3V0IHRoZSB2YWx1ZXMgaW4gYSBnaXZlbiBDT01NT04gCi1AQCAtNDkyLDExICs1MzUs OSBAQCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNoYXIgKmZ1bm5hbWUpCi0gc3RhdGljIHZv aWQKLSBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21uYW1lLCBpbnQgZnJvbV90dHkpCi0g ewotLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdGhlX2NvbW1vbjsKLS0gIENPTU1PTl9FTlRSWV9Q VFIgZW50cnk7Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZmk7Ci0tICBjaGFyICpmdW5uYW1lID0g MDsKLS0gIHN0cnVjdCBzeW1ib2wgKmZ1bmM7Ci0rICBzdHJ1Y3QgYmxvY2sgKmJsb2NrOwotKyAg aW50IHZhbHVlc19wcmludGVkID0gMDsKLSAKLSAgIC8qIFdlIGhhdmUgYmVlbiB0b2xkIHRvIGRp c3BsYXkgdGhlIGNvbnRlbnRzIG9mIEY3NyBDT01NT04gCi0gICAgICBibG9jayBzdXBwb3NlZGx5 IHZpc2libGUgaW4gdGhpcyBmdW5jdGlvbi4gIExldCB1cyAKLUBAIC01MDgsMTM2ICs1NDksMzIg QEAgaW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqY29tbmFtZSwgaW50IGZyb21fdHR5KQotICAg LyogVGhlIGZvbGxvd2luZyBpcyBnZW5lcmFsbHkgcmlwcGVkIG9mZiBmcm9tIHN0YWNrLmMncyBy b3V0aW5lIAotICAgICAgcHJpbnRfZnJhbWVfaW5mbygpICovCi0gCi0tICBmdW5jID0gZmluZF9w Y19mdW5jdGlvbiAoZ2V0X2ZyYW1lX3BjIChmaSkpOwotLSAgaWYgKGZ1bmMpCi0tICAgIHsKLS0g ICAgICAvKiBJbiBjZXJ0YWluIHBhdGhvbG9naWNhbCBjYXNlcywgdGhlIHN5bXRhYnMgZ2l2ZSB0 aGUgd3JvbmcKLS0gICAgICAgICBmdW5jdGlvbiAod2hlbiB3ZSBhcmUgaW4gdGhlIGZpcnN0IGZ1 bmN0aW9uIGluIGEgZmlsZSB3aGljaAotLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGhvdXQgZGVi dWdnaW5nIHN5bWJvbHMsIHRoZSBwcmV2aW91cyBmdW5jdGlvbgotLSAgICAgICAgIGlzIGNvbXBp bGVkIHdpdGggZGVidWdnaW5nIHN5bWJvbHMsIGFuZCB0aGUgImZvby5vIiBzeW1ib2wKLS0gICAg ICAgICB0aGF0IGlzIHN1cHBvc2VkIHRvIHRlbGwgdXMgd2hlcmUgdGhlIGZpbGUgd2l0aCBkZWJ1 Z2dpbmcgc3ltYm9scwotLSAgICAgICAgIGVuZHMgaGFzIGJlZW4gdHJ1bmNhdGVkIGJ5IGFyIGJl Y2F1c2UgaXQgaXMgbG9uZ2VyIHRoYW4gMTUKLS0gICAgICAgICBjaGFyYWN0ZXJzKS4KLS0KLS0g ICAgICAgICBTbyBsb29rIGluIHRoZSBtaW5pbWFsIHN5bWJvbCB0YWJsZXMgYXMgd2VsbCwgYW5k IGlmIGl0IGNvbWVzCi0tICAgICAgICAgdXAgd2l0aCBhIGxhcmdlciBhZGRyZXNzIGZvciB0aGUg ZnVuY3Rpb24gdXNlIHRoYXQgaW5zdGVhZC4KLS0gICAgICAgICBJIGRvbid0IHRoaW5rIHRoaXMg Y2FuIGV2ZXIgY2F1c2UgYW55IHByb2JsZW1zOyB0aGVyZSBzaG91bGRuJ3QKLS0gICAgICAgICBi ZSBhbnkgbWluaW1hbCBzeW1ib2xzIGluIHRoZSBtaWRkbGUgb2YgYSBmdW5jdGlvbi4KLS0gICAg ICAgICBGSVhNRTogIChOb3QgbmVjZXNzYXJpbHkgdHJ1ZS4gIFdoYXQgYWJvdXQgdGV4dCBsYWJl bHMpICovCi0tCi0tICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sID0gCi0tCWxv b2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmaSkpOwotLQotLSAgICAg IGlmIChtc3ltYm9sICE9IE5VTEwKLS0JICAmJiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1i b2wpCi0tCSAgICAgID4gQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAoZnVuYykpKSkK LS0JZnVubmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpOwotLSAgICAgIGVsc2UK LS0JZnVubmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKGZ1bmMpOwotLSAgICB9Ci0tICBlbHNl Ci0tICAgIHsKLS0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPQotLSAgICAg IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmaSkpOwotLQotLSAg ICAgIGlmIChtc3ltYm9sICE9IE5VTEwpCi0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1F IChtc3ltYm9sKTsKLS0gICAgICBlbHNlIC8qIEdvdCBubyAnZnVubmFtZScsIGNvZGUgYmVsb3cg d2lsbCBmYWlsLiAgKi8KLS0JZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIGZvdW5kIGZvciBmcmFtZS4i KSk7Ci0tICAgIH0KLS0KLS0gIC8qIElmIGNvbW5hbWUgaXMgTlVMTCwgd2UgYXNzdW1lIHRoZSB1 c2VyIHdpc2hlcyB0byBzZWUgdGhlIAotLSAgICAgd2hpY2ggQ09NTU9OIGJsb2NrcyBhcmUgdmlz aWJsZSBoZXJlIGFuZCB0aGVuIHJldHVybiAqLwotLQotLSAgaWYgKGNvbW5hbWUgPT0gMCkKLSsg IGJsb2NrID0gZ2V0X2ZyYW1lX2Jsb2NrIChmaSwgMCk7Ci0rICBpZiAoYmxvY2sgPT0gTlVMTCkK LSAgICAgewotLSAgICAgIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoZnVubmFtZSk7Ci0rICAg ICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJObyBzeW1ib2wgdGFibGUgaW5mbyBhdmFpbGFibGUuXG4i KSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICB0aGVfY29tbW9uID0gZmluZF9jb21t b25fZm9yX2Z1bmN0aW9uIChjb21uYW1lLCBmdW5uYW1lKTsKLS0KLS0gIGlmICh0aGVfY29tbW9u KQotKyAgd2hpbGUgKGJsb2NrKQotICAgICB7Ci0tICAgICAgaWYgKHN0cmNtcCAoY29tbmFtZSwg QkxBTktfQ09NTU9OX05BTUVfTE9DQUwpID09IDApCi0tCXByaW50Zl9maWx0ZXJlZCAoXygiQ29u dGVudHMgb2YgYmxhbmsgQ09NTU9OIGJsb2NrOlxuIikpOwotLSAgICAgIGVsc2UKLS0JcHJpbnRm X2ZpbHRlcmVkIChfKCJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICclcyc6XG4iKSwgY29t bmFtZSk7Ci0tCi0tICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKLS0gICAgICBlbnRyeSA9 IHRoZV9jb21tb24tPmVudHJpZXM7Ci0tCi0tICAgICAgd2hpbGUgKGVudHJ5ICE9IE5VTEwpCi0t CXsKLS0JICBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKE5VTEwsIGVudHJ5LT5zeW1ib2wsIGZp LCBnZGJfc3Rkb3V0LCAwKTsKLS0JICBlbnRyeSA9IGVudHJ5LT5uZXh0OwotLQl9Ci0rICAgICAg aWYgKGluZm9fY29tbW9uX2NvbW1hbmRfZm9yX2Jsb2NrIChibG9jaywgZmksIGNvbW5hbWUpKQot Kwl2YWx1ZXNfcHJpbnRlZCA9IDE7Ci0rICAgICAgLyogQWZ0ZXIgaGFuZGxpbmcgdGhlIGZ1bmN0 aW9uJ3MgdG9wLWxldmVsIGJsb2NrLCBzdG9wLiAgRG9uJ3QKLSsgICAgICAgICBjb250aW51ZSB0 byBpdHMgc3VwZXJibG9jaywgdGhlIGJsb2NrIG9mIHBlci1maWxlIHN5bWJvbHMuICAqLwotKyAg ICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2spKQotKwlicmVhazsKLSsgICAgICBibG9jayA9 IEJMT0NLX1NVUEVSQkxPQ0sgKGJsb2NrKTsKLSAgICAgfQotLSAgZWxzZQotLSAgICBwcmludGZf ZmlsdGVyZWQgKF8oIkNhbm5vdCBsb2NhdGUgdGhlIGNvbW1vbiBibG9jayAlcyBpbiBmdW5jdGlv biAnJXMnXG4iKSwKLS0JCSAgICAgY29tbmFtZSwgZnVubmFtZSk7Ci0tfQotLQotLS8qIFRoaXMg ZnVuY3Rpb24gaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVyZSBpcyBhCi0tICAgRjc3 IGNvbW1vbiBibG9jayB2aXNpYmxlIGF0IHRoZSBjdXJyZW50IHNjb3BlIGNhbGxlZCAnY29tbmFt ZScuICovCi0tCi0tI2lmIDAKLS1zdGF0aWMgaW50Ci0tdGhlcmVfaXNfYV92aXNpYmxlX2NvbW1v bl9uYW1lZCAoY2hhciAqY29tbmFtZSkKLS17Ci0tICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0aGVf Y29tbW9uOwotLSAgc3RydWN0IGZyYW1lX2luZm8gKmZpOwotLSAgY2hhciAqZnVubmFtZSA9IDA7 Ci0tICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwotLQotLSAgaWYgKGNvbW5hbWUgPT0gTlVMTCkKLS0g ICAgZXJyb3IgKF8oIkNhbm5vdCBkZWFsIHdpdGggTlVMTCBjb21tb24gbmFtZSEiKSk7Ci0gCi0t ICBmaSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoXygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7Ci0tCi0t ICAvKiBUaGUgZm9sbG93aW5nIGlzIGdlbmVyYWxseSByaXBwZWQgb2ZmIGZyb20gc3RhY2suYydz IHJvdXRpbmUgCi0tICAgICBwcmludF9mcmFtZV9pbmZvKCkgKi8KLS0KLS0gIGZ1bmMgPSBmaW5k X3BjX2Z1bmN0aW9uIChmaS0+cGMpOwotLSAgaWYgKGZ1bmMpCi0rICBpZiAoIXZhbHVlc19wcmlu dGVkKQotICAgICB7Ci0tICAgICAgLyogSW4gY2VydGFpbiBwYXRob2xvZ2ljYWwgY2FzZXMsIHRo ZSBzeW10YWJzIGdpdmUgdGhlIHdyb25nCi0tICAgICAgICAgZnVuY3Rpb24gKHdoZW4gd2UgYXJl IGluIHRoZSBmaXJzdCBmdW5jdGlvbiBpbiBhIGZpbGUgd2hpY2gKLS0gICAgICAgICBpcyBjb21w aWxlZCB3aXRob3V0IGRlYnVnZ2luZyBzeW1ib2xzLCB0aGUgcHJldmlvdXMgZnVuY3Rpb24KLS0g ICAgICAgICBpcyBjb21waWxlZCB3aXRoIGRlYnVnZ2luZyBzeW1ib2xzLCBhbmQgdGhlICJmb28u byIgc3ltYm9sCi0tICAgICAgICAgdGhhdCBpcyBzdXBwb3NlZCB0byB0ZWxsIHVzIHdoZXJlIHRo ZSBmaWxlIHdpdGggZGVidWdnaW5nIHN5bWJvbHMKLS0gICAgICAgICBlbmRzIGhhcyBiZWVuIHRy dW5jYXRlZCBieSBhciBiZWNhdXNlIGl0IGlzIGxvbmdlciB0aGFuIDE1Ci0tICAgICAgICAgY2hh cmFjdGVycykuCi0tCi0tICAgICAgICAgU28gbG9vayBpbiB0aGUgbWluaW1hbCBzeW1ib2wgdGFi bGVzIGFzIHdlbGwsIGFuZCBpZiBpdCBjb21lcwotLSAgICAgICAgIHVwIHdpdGggYSBsYXJnZXIg YWRkcmVzcyBmb3IgdGhlIGZ1bmN0aW9uIHVzZSB0aGF0IGluc3RlYWQuCi0tICAgICAgICAgSSBk b24ndCB0aGluayB0aGlzIGNhbiBldmVyIGNhdXNlIGFueSBwcm9ibGVtczsgdGhlcmUgc2hvdWxk bid0Ci0tICAgICAgICAgYmUgYW55IG1pbmltYWwgc3ltYm9scyBpbiB0aGUgbWlkZGxlIG9mIGEg ZnVuY3Rpb24uCi0tICAgICAgICAgRklYTUU6ICAoTm90IG5lY2Vzc2FyaWx5IHRydWUuICBXaGF0 IGFib3V0IHRleHQgbGFiZWxzKSAqLwotLQotLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq bXN5bWJvbCA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKLS0KLS0gICAg ICBpZiAobXN5bWJvbCAhPSBOVUxMCi0tCSAgJiYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3lt Ym9sKQotLQkgICAgICA+IEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKGZ1bmMpKSkp Ci0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKTsKLSsgICAgICBpZiAo Y29tbmFtZSkKLSsJcHJpbnRmX2ZpbHRlcmVkIChfKCJObyBjb21tb24gYmxvY2sgJyVzJy5cbiIp LCBjb21uYW1lKTsKLSAgICAgICBlbHNlCi0tCWZ1bm5hbWUgPSBTWU1CT0xfTElOS0FHRV9OQU1F IChmdW5jKTsKLSsJcHJpbnRmX2ZpbHRlcmVkIChfKCJObyBjb21tb24gYmxvY2tzLlxuIikpOwot ICAgICB9Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1z eW1ib2wgPQotLSAgICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKLS0K LS0gICAgICBpZiAobXN5bWJvbCAhPSBOVUxMKQotLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0Vf TkFNRSAobXN5bWJvbCk7Ci0tICAgIH0KLS0KLS0gIHRoZV9jb21tb24gPSBmaW5kX2NvbW1vbl9m b3JfZnVuY3Rpb24gKGNvbW5hbWUsIGZ1bm5hbWUpOwotLQotLSAgcmV0dXJuICh0aGVfY29tbW9u ID8gMSA6IDApOwotIH0KLS0jZW5kaWYKLSAKLSB2b2lkCi0gX2luaXRpYWxpemVfZl92YWxwcmlu dCAodm9pZCkKLWRpZmYgLS1naXQgYS9nZGIvZmluZGNtZC5jIGIvZ2RiL2ZpbmRjbWQuYwotaW5k ZXggMWQyODkxNC4uZDE3NjM0MSAxMDA2NDQKLS0tLSBhL2dkYi9maW5kY21kLmMKLSsrKyBiL2dk Yi9maW5kY21kLmMKLUBAIC0yNyw3ICsyNyw3IEBACi0gCi0gLyogQ29waWVkIGZyb20gYmZkX3B1 dF9iaXRzLiAgKi8KLSAKLS1zdGF0aWMgdm9pZAotK3ZvaWQKLSBwdXRfYml0cyAoYmZkX3VpbnQ2 NF90IGRhdGEsIGNoYXIgKmJ1ZiwgaW50IGJpdHMsIGJmZF9ib29sZWFuIGJpZ19wKQorK3ZvaWQK KyBwdXRfYml0cyAoYmZkX3VpbnQ2NF90IGRhdGEsIGNoYXIgKmJ1ZiwgaW50IGJpdHMsIGJmZF9i b29sZWFuIGJpZ19wKQogIHsKICAgIGludCBpOwogQEAgLTQ1LDYgKzQ1LDQxIEBAIHB1dF9iaXRz IChiZmRfdWludDY0X3QgZGF0YSwgY2hhciAqYnVmLCBpbnQgYml0cywgYmZkX2Jvb2xlYW4gYmln X3ApCkBAIC05Mjg3LDcgKzQ4MTMsNyBAQCBpbmRleCAxZDI4OTE0Li5kMTc2MzQxIDEwMDY0NAog IAogICAgLyogUmVjb3JkIGFuZCBwcmludCB0aGUgcmVzdWx0cy4gICovCiBkaWZmIC0tZ2l0IGEv Z2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAw NjQ0CitpbmRleCBlMTE3YThlLi42YmQzNzI0IDEwMDY0NAogLS0tIGEvZ2RiL2ZpbmR2YXIuYwog KysrIGIvZ2RiL2ZpbmR2YXIuYwogQEAgLTM1LDYgKzM1LDcgQEAKQEAgLTkyOTYsOSArNDgyMiw5 IEBAIGluZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAwNjQ0CiAgI2luY2x1ZGUgIm9iamZpbGVzLmgi CiArI2luY2x1ZGUgImR3YXJmMmxvYy5oIgogIAotIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91 dGluZXMuICBHREIgaGFzIG5lZWRlZCB0aGVzZSBmb3IgYSBsb25nIHRpbWUuLi4KLSAgICBBbGwg ZXh0cmFjdCBhIHRhcmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzIExFTiBieXRl cyBsb25nLiAgKi8KLUBAIC0zOTQsMjcgKzM5NSwxNiBAQCBzeW1ib2xfcmVhZF9uZWVkc19mcmFt ZSAoc3RydWN0IHN5bWJvbCAqc3ltKQorIC8qIEJhc2ljIGJ5dGUtc3dhcHBpbmcgcm91dGluZXMu ICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9ucyByZXR1cm4gYQorICAgIGhvc3QtZm9ybWF0IGludGVn ZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQgaW50ZWdlciBhdCBBRERSIHdoaWNoIGlzCitAQCAtMzk3 LDI3ICszOTgsMTYgQEAgc3ltYm9sX3JlYWRfbmVlZHNfZnJhbWUgKHN0cnVjdCBzeW1ib2wgKnN5 bSkKICAvKiBHaXZlbiBhIHN0cnVjdCBzeW1ib2wgZm9yIGEgdmFyaWFibGUsCiAgICAgYW5kIGEg c3RhY2sgZnJhbWUgaWQsIHJlYWQgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZQogICAgIGFuZCBy ZXR1cm4gYSAocG9pbnRlciB0byBhKSBzdHJ1Y3QgdmFsdWUgY29udGFpbmluZyB0aGUgdmFsdWUu IApAQCAtOTMzMCw3ICs0ODU2LDcgQEAgaW5kZXggOGMwMjdjOS4uZDIwMWY3NiAxMDA2NDQKICAK ICAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAgICAgZ2RiX2Fzc2VydCAo ZnJhbWUpOwotQEAgLTQyMiwzMiArNDEyLDQwIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3lt Ym9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC00MjUsMzIgKzQxNSw0MCBA QCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAq ZnJhbWUpCiAgICBzd2l0Y2ggKFNZTUJPTF9DTEFTUyAodmFyKSkKICAgICAgewogICAgICBjYXNl IExPQ19DT05TVDoKQEAgLTkzOTEsNyArNDkxNyw3IEBAIGluZGV4IDhjMDI3YzkuLmQyMDFmNzYg MTAwNjQ0CiAgCXJldHVybiB2OwogICAgICAgIH0KICAKLUBAIC00ODksMTIgKzQ4NywyMyBAQCBy ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCitAQCAtNDkyLDEyICs0OTAsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogIAogICAgICBj YXNlIExPQ19CTE9DSzoKQEAgLTk0MjEsNyArNDk0Nyw3IEBAIGluZGV4IDhjMDI3YzkuLmQyMDFm NzYgMTAwNjQ0CiAgCiAgICAgIGNhc2UgTE9DX1JFR0lTVEVSOgogICAgICBjYXNlIExPQ19SRUdQ QVJNX0FERFI6Ci1AQCAtNTEzLDcgKzUyMiw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3lt Ym9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01MTYsNyArNTI1LDYgQEAg cmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lKQogIAkgICAgICBlcnJvciAoXygiVmFsdWUgb2YgcmVnaXN0ZXIgdmFyaWFibGUgbm90IGF2 YWlsYWJsZS4iKSk7CiAgCiAgCSAgICBhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAocmVndmFsKTsK QEAgLTk0MjksNyArNDk1NSw3IEBAIGluZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAwNjQ0CiAgCSAg fQogIAllbHNlCiAgCSAgewotQEAgLTU1NiwxOCArNTY0LDMzIEBAIHJlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01NTksMTgg KzU2NywzMyBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgTE9DX09QVElNSVpF RF9PVVQ6CkBAIC05NDY5LDcgKzQ5OTUsNyBAQCBpbmRleCA4YzAyN2M5Li5kMjAxZjc2IDEwMDY0 NAogIH0KICAKICAvKiBJbnN0YWxsIGRlZmF1bHQgYXR0cmlidXRlcyBmb3IgcmVnaXN0ZXIgdmFs dWVzLiAgKi8KLUBAIC02MDQsMTAgKzYyNywxMSBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTYwNywx MCArNjMwLDExIEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0 IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICB7CiAg ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7CkBAIC05 NDgzLDcgKzUwMDksNyBAQCBpbmRleCA4YzAyN2M5Li5kMjAxZjc2IDEwMDY0NAogICAgICB7CiAg ICAgICAgLyogVGhlIElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5p bmcgdGhlCiAgICAgICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0 IG1pZ2h0IG5lZWQgdG8KLUBAIC02MjEsNyArNjQ1LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAo c3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK K0BAIC02MjQsNyArNjQ4LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5 cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBWQUxVRV9G UkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKICAgICAgICBWQUxVRV9SRUdOVU0g KHYpID0gcmVnbnVtOwogICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUgKGdkYmFyY2gs CkBAIC05NDkyLDI1ICs1MDE4LDYgQEAgaW5kZXggOGMwMjdjOS4uZDIwMWY3NiAxMDA2NDQKICAg ICAgfQogICAgZWxzZQogICAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2ZyYW1lLmMgYi9nZGIvZnJh bWUuYwotaW5kZXggNzkzMmI0OC4uNGU3YzQzNCAxMDA2NDQKLS0tLSBhL2dkYi9mcmFtZS5jCi0r KysgYi9nZGIvZnJhbWUuYwotQEAgLTExNzEsNiArMTE3MSwxNCBAQCBoYXNfc3RhY2tfZnJhbWVz ICh2b2lkKQotICAgaWYgKHB0aWRfZXF1YWwgKGluZmVyaW9yX3B0aWQsIG51bGxfcHRpZCkpCi0g ICAgIHJldHVybiAwOwotIAotKyAgLyogRklYTUU6IFdvcmthcm91bmQgYXJjaGVyLXRyb21leS1w eXRob24gY3Jhc2ggaW4KLSsgICAgIGFkZF9pbmZlcmlvcl9vYmplY3QtPmdldF9jdXJyZW50X2Fy Y2ggb24gRlNGIEdEQiB1cGRhdGU6Ci0rICAgICBpc190aHJlYWRfc3RhdGUgd291bGQgYXNzZXJ0 aW9uIGNoZWNrIGhlcmUgYXMKLSsgICAgIHJlbW90ZV9zdGFydF9yZW1vdGUtPmFkZF9pbmZlcmlv cl9zaWxlbnQtPm9ic2VydmVyX25vdGlmeV9uZXdfaW5mZXJpb3IgaXMKLSsgICAgIGJlZm9yZSBy ZW1vdGVfc3RhcnRfcmVtb3RlLT5hZGRfdGhyZWFkX3NpbGVudC4gICovCi0rICBpZiAoZmluZF90 aHJlYWRfcHRpZCAoaW5mZXJpb3JfcHRpZCkgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0g ICAvKiBEb24ndCB0cnkgdG8gcmVhZCBmcm9tIGEgZGVhZCB0aHJlYWQuICAqLwotICAgaWYgKGlz X2V4aXRlZCAoaW5mZXJpb3JfcHRpZCkpCi0gICAgIHJldHVybiAwOwogZGlmZiAtLWdpdCBhL2dk Yi9nZGJpbml0LmluIGIvZ2RiL2dkYmluaXQuaW4KIGluZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAw NjQ0CiAtLS0gYS9nZGIvZ2RiaW5pdC5pbgpAQCAtOTkzOCw3ICs1NDQ1LDcgQEAgaW5kZXggMDAw MDAwMC4uYjgyMTNmNQogKyAgTlVMTCwKICt9OwogZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQu aCBiL2dkYi9nZGJ0aHJlYWQuaAotaW5kZXggNzlkMzNmZS4uZDNiNGZhMSAxMDA2NDQKK2luZGV4 IGNkMjRlYWYuLjExOWFmN2QgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidGhyZWFkLmgKICsrKyBiL2dk Yi9nZGJ0aHJlYWQuaAogQEAgLTE4NSw2ICsxODUsMTAgQEAgc3RydWN0IHRocmVhZF9pbmZvCkBA IC05OTUxLDggKzU0NTgsOCBAQCBpbmRleCA3OWQzM2ZlLi5kM2I0ZmExIDEwMDY0NAogKwogICAg LyogUHJpdmF0ZSBkYXRhIHVzZWQgYnkgdGhlIHRhcmdldCB2ZWN0b3IgaW1wbGVtZW50YXRpb24u ICAqLwogICAgc3RydWN0IHByaXZhdGVfdGhyZWFkX2luZm8gKnByaXZhdGU7Ci0gfTsKLUBAIC0y NDksNiArMjUzLDkgQEAgZXh0ZXJuIHN0cnVjdCB0aHJlYWRfaW5mbyAqYW55X3RocmVhZF9vZl9w cm9jZXNzIChpbnQgcGlkKTsKKyAKK0BAIC0yNTcsNiArMjYxLDkgQEAgZXh0ZXJuIHN0cnVjdCB0 aHJlYWRfaW5mbyAqYW55X2xpdmVfdGhyZWFkX29mX3Byb2Nlc3MgKGludCBwaWQpOwogIC8qIENo YW5nZSB0aGUgcHRpZCBvZiB0aHJlYWQgT0xEX1BUSUQgdG8gTkVXX1BUSUQuICAqLwogIHZvaWQg dGhyZWFkX2NoYW5nZV9wdGlkIChwdGlkX3Qgb2xkX3B0aWQsIHB0aWRfdCBuZXdfcHRpZCk7CiAg CkBAIC05OTYzLDEwICs1NDcwLDEwIEBAIGluZGV4IDc5ZDMzZmUuLmQzYjRmYTEgMTAwNjQ0CiAg ICAgb25jZSBmb3IgZWFjaCBrbm93biB0aHJlYWQuICAqLwogIHR5cGVkZWYgaW50ICgqdGhyZWFk X2NhbGxiYWNrX2Z1bmMpIChzdHJ1Y3QgdGhyZWFkX2luZm8gKiwgdm9pZCAqKTsKIGRpZmYgLS1n aXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi1pbmRleCAyZjc3ZGNhLi45MGFi ZjJjIDEwMDY0NAoraW5kZXggMTZiMzRjYS4uYjVlNjExMCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJ0 eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTM4LDYgKzM4LDkgQEAKK0BAIC0zOSw2 ICszOSw5IEBACiAgI2luY2x1ZGUgImNwLWFiaS5oIgogICNpbmNsdWRlICJnZGJfYXNzZXJ0Lmgi CiAgI2luY2x1ZGUgImhhc2h0YWIuaCIKQEAgLTk5NzYsNyArNTQ4Myw3IEBAIGluZGV4IDJmNzdk Y2EuLjkwYWJmMmMgMTAwNjQ0CiAgCiAgCiAgLyogRmxvYXRmb3JtYXQgcGFpcnMuICAqLwotQEAg LTExOCwxMyArMTIxLDMxIEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0IGZp ZWxkICosIGludCwgaW50KTsKK0BAIC0xMTksNiArMTIyLDI0IEBAIHN0YXRpYyB2b2lkIHByaW50 X2FyZ190eXBlcyAoc3RydWN0IGZpZWxkICosIGludCwgaW50KTsKICBzdGF0aWMgdm9pZCBkdW1w X2ZuX2ZpZWxkbGlzdHMgKHN0cnVjdCB0eXBlICosIGludCk7CiAgc3RhdGljIHZvaWQgcHJpbnRf Y3BsdXNfc3R1ZmYgKHN0cnVjdCB0eXBlICosIGludCk7CiAgCkBAIC0xMDAwMSwxNSArNTUwOCw3 IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiAgCiAgLyogQWxsb2NhdGUgYSBuZXcg T0JKRklMRS1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0CiAgICAgd2l0aCBz b21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQK LSAgICBvbiB0aGUgb2JqZmlsZSdzIG9iamZpbGVfb2JzdGFjay4gICovCi0gCi0gc3RydWN0IHR5 cGUgKgotLWFsbG9jX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK2FsbG9jX3R5cGUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgdHlwZSAqcGFyZW50KQotIHsKLSAgIHN0 cnVjdCB0eXBlICp0eXBlOwotIAotQEAgLTE0OCw2ICsxNjksMzkgQEAgYWxsb2NfdHlwZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCitAQCAtMTQ5LDYgKzE3MCwzOSBAQCBhbGxvY190eXBlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICAgIHJldHVybiB0eXBlOwogIH0KICAKQEAgLTEwMDQ5 LDE2ICs1NTQ4LDcgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAvKiBBbGxvY2F0 ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKICAg ICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFs bG9jYXRlZAogICAgIG9uIHRoZSBoZWFwLiAgKi8KLUBAIC0xODQsNyArMjM4LDcgQEAgc3RydWN0 IHR5cGUgKgotIGFsbG9jX3R5cGVfY29weSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCi0gewot ICAgaWYgKFRZUEVfT0JKRklMRV9PV05FRCAodHlwZSkpCi0tICAgIHJldHVybiBhbGxvY190eXBl IChUWVBFX09XTkVSICh0eXBlKS5vYmpmaWxlKTsKLSsgICAgcmV0dXJuIGFsbG9jX3R5cGUgKFRZ UEVfT1dORVIgKHR5cGUpLm9iamZpbGUsIChzdHJ1Y3QgdHlwZSAqKSB0eXBlKTsKLSAgIGVsc2UK LSAgICAgcmV0dXJuIGFsbG9jX3R5cGVfYXJjaCAoVFlQRV9PV05FUiAodHlwZSkuZ2RiYXJjaCk7 Ci0gfQotQEAgLTI3Myw3ICszMjcsNyBAQCBtYWtlX3BvaW50ZXJfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKK0BAIC0yNzQsNyArMzI4LDcgQEAgbWFrZV9w b2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCiAg CiAgICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xsIG5lZWQgdG8g YWxsb2NhdGUgb25lLiAgKi8KICAgICAgewpAQCAtMTAwNjcsNyArNTU1Nyw3IEBAIGluZGV4IDJm NzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiAgICAgICAgaWYgKHR5cGVwdHIpCiAgCSp0eXBlcHRyID0g bnR5cGU7CiAgICAgIH0KLUBAIC0zNTAsNyArNDA0LDcgQEAgbWFrZV9yZWZlcmVuY2VfdHlwZSAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKK0BAIC0zNTEsNyArNDA1 LDcgQEAgbWFrZV9yZWZlcmVuY2VfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBl ICoqdHlwZXB0cikKICAKICAgIGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyog V2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLwogICAgICB7CkBAIC0xMDA3NiwyMiArNTU2 NiwxNSBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogICAgICAgIGlmICh0eXBlcHRy KQogIAkqdHlwZXB0ciA9IG50eXBlOwogICAgICB9Ci1AQCAtNzIxLDEyICs3NzUsMTMgQEAgY3Jl YXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUgKmlu ZGV4X3R5cGUsCi0gICAgIFRZUEVfVEFSR0VUX1NUVUIgKHJlc3VsdF90eXBlKSA9IDE7Ci0gICBl bHNlCi0gICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSBUWVBFX0xFTkdUSCAoY2hlY2tf dHlwZWRlZiAoaW5kZXhfdHlwZSkpOwotLSAgVFlQRV9ORklFTERTIChyZXN1bHRfdHlwZSkgPSAy OwotKyAgVFlQRV9ORklFTERTIChyZXN1bHRfdHlwZSkgPSAzOwotICAgVFlQRV9GSUVMRFMgKHJl c3VsdF90eXBlKSA9IFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwKLSAJCQkJCSAgIFRZUEVfTkZJ RUxEUyAocmVzdWx0X3R5cGUpCi0gCQkJCQkgICAqIHNpemVvZiAoc3RydWN0IGZpZWxkKSk7CitA QCAtNzI2LDYgKzc4MCw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0 X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorICAgICBUWVBFX1pBTExPQyAocmVzdWx0 X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwogICAgVFlQRV9MT1dfQk9VTkQg KHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsKICAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5 cGUpID0gaGlnaF9ib3VuZDsKICsgIFRZUEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7 CiAgCiAgICBpZiAobG93X2JvdW5kID49IDApCiAgICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90 eXBlKSA9IDE7Ci1AQCAtODI2LDI2ICs4ODEsNDUgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVj dCB0eXBlICpyZXN1bHRfdHlwZSwKK0BAIC04MjUsMjYgKzg4MCw0NSBAQCBjcmVhdGVfYXJyYXlf dHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBlLAogIAogICAgVFlQRV9DT0RFIChyZXN1bHRf dHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7CiAgICBUWVBFX1RBUkdFVF9UWVBFIChyZXN1bHRfdHlw ZSkgPSBlbGVtZW50X3R5cGU7CkBAIC0xMDExNiwxMCArNTU5OSwxMCBAQCBpbmRleCAyZjc3ZGNh Li45MGFiZjJjIDEwMDY0NAogKyAgLyogRFdBUkYgYmxvY2tzIG1heSBkZXBlbmQgb24gcnVudGlt ZSBpbmZvcm1hdGlvbiBsaWtlCiArICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIG5vdCBi ZWluZyBhdmFpbGFibGUgZHVyaW5nIHRoZQogKyAgICAgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4g ICovCi0rICBpZiAoVFlQRV9SQU5HRV9CT1VORF9JU19EV0FSRl9CTE9DSyAocmFuZ2VfdHlwZSwg MCkKLSsgICAgICB8fCBUWVBFX1JBTkdFX0JPVU5EX0lTX0RXQVJGX0JMT0NLIChyYW5nZV90eXBl LCAxKQotKyAgICAgIHx8IFRZUEVfUkFOR0VfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEIChyYW5n ZV90eXBlKSAKLSsgICAgICB8fCBUWVBFX1JBTkdFX0xPV0VSX0JPVU5EX0lTX1VOREVGSU5FRCAo cmFuZ2VfdHlwZSkgCisrICBpZiAoVFlQRV9MT1dfQk9VTkRfSVNfRFdBUkZfQkxPQ0sgKHJhbmdl X3R5cGUpCisrICAgICAgfHwgVFlQRV9ISUdIX0JPVU5EX0lTX0RXQVJGX0JMT0NLIChyYW5nZV90 eXBlKQorKyAgICAgIHx8IFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCisr ICAgICAgfHwgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgCiArICAgICAg fHwgZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91 bmQpIDwgMCkKICsgICAgewogKyAgICAgIGxvd19ib3VuZCA9IDA7CkBAIC0xMDE1MCw3ICs1NjMz LDcgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAKICAgIHJldHVybiByZXN1bHRf dHlwZTsKICB9Ci1AQCAtMTMzMSw2ICsxNDA1LDg0IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAo dm9pZCkKK0BAIC0xMzMxLDYgKzE0MDUsMTA1IEBAIHN0dWJfbm9uYW1lX2NvbXBsYWludCAodm9p ZCkKICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygic3R1YiB0eXBlIGhhcyBO VUxMIG5hbWUiKSk7CiAgfQogIApAQCAtMTAxNjIsMTMgKzU2NDUsMTIgQEAgaW5kZXggMmY3N2Rj YS4uOTBhYmYyYyAxMDA2NDQKICsgICBjbGVhcmVkIEZVTExfU1BBTiByZXR1cm4gdmFsdWUgKHRo ZSBleHBlY3RlZCBTSVpFT0YpIGZvciBub24temVybwogKyAgIFRZUEVfQllURV9TVFJJREUgdmFs dWVzLiAgKi8KICsKLStzdGF0aWMgQ09SRV9BRERSCisrc3RhdGljIExPTkdFU1QKICt0eXBlX2xl bmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUsIGlu dCBmdWxsX3NwYW4pCiArewogKyAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7Ci0rICBpbnQgY291 bnQ7Ci0rICBDT1JFX0FERFIgYnl0ZV9zdHJpZGUgPSAwOwkvKiBgPSAwJyBmb3IgYSBmYWxzZSBH Q0Mgd2FybmluZy4gICovCi0rICBDT1JFX0FERFIgZWxlbWVudF9zaXplOworKyAgTE9OR0VTVCBi eXRlX3N0cmlkZSA9IDA7CS8qIGA9IDAnIGZvciBhIGZhbHNlIEdDQyB3YXJuaW5nLiAgKi8KKysg IExPTkdFU1QgY291bnQsIGVsZW1lbnRfc2l6ZSwgcmV0dmFsOwogKwogKyAgaWYgKFRZUEVfQ09E RSAodHlwZSkgIT0gVFlQRV9DT0RFX0FSUkFZCiArICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAh PSBUWVBFX0NPREVfU1RSSU5HKQpAQCAtMTAxODEsMTUgKzU2NjMsMTUgQEAgaW5kZXggMmY3N2Rj YS4uOTBhYmYyYyAxMDA2NDQKICsgICAgcmV0dXJuIDA7CiArCiArICByYW5nZV90eXBlID0gVFlQ RV9JTkRFWF9UWVBFICh0eXBlKTsKLSsgIGlmIChUWVBFX1JBTkdFX0xPV0VSX0JPVU5EX0lTX1VO REVGSU5FRCAocmFuZ2VfdHlwZSkKLSsgICAgICB8fCBUWVBFX1JBTkdFX1VQUEVSX0JPVU5EX0lT X1VOREVGSU5FRCAocmFuZ2VfdHlwZSkpCisrICBpZiAoVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVE IChyYW5nZV90eXBlKQorKyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdl X3R5cGUpKQogKyAgICByZXR1cm4gMDsKICsgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5n ZV90eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7CiArICAvKiBJdCBtYXkg aGFwcGVuIGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRh LiAgKi8KICsgIGlmIChjb3VudCA8IDApCi0rICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBl ICVzIGhhcyBpbnZhbGlkIGJvdW5kcyAlZC4uJWQiKSwKLSsJICAgICBUWVBFX05BTUUgKHR5cGUp LCBUWVBFX0xPV19CT1VORCAocmFuZ2VfdHlwZSksCi0rCSAgICAgVFlQRV9ISUdIX0JPVU5EIChy YW5nZV90eXBlKSk7CisrICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZh bGlkIGJvdW5kcyAlcy4uJXMiKSwKKysJICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9uZ2VzdCAo VFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKKysJICAgICBwbG9uZ2VzdCAoVFlQRV9ISUdI X0JPVU5EIChyYW5nZV90eXBlKSkpOwogKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFu ZGxlIGNvdW50ID09IDAgcmlnaHQuICAqLwogKyAgaWYgKGNvdW50IDw9IDApCiArICAgIHJldHVy biAwOwpAQCAtMTAyMDUsMTIgKzU2ODcsMzQgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2 NDQKICsJICBieXRlX3N0cmlkZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEws IDEpOwogKwl9CiArICAgIH0KKysKKysgIC8qIEZvciBub3csIHdlIGNvbnNlcnZhdGl2ZWx5IHRh a2UgdGhlIGFycmF5IGxlbmd0aCB0byBiZSAwIGlmIGl0cyBsZW5ndGgKKysgICAgIGV4Y2VlZHMg VUlOVF9NQVguICBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIHRoYXQgZm9yIHggPCAwLAorKyAgICAg KFVMT05HRVNUKSB4ID09IC14ICsgVUxPTkdFU1RfTUFYICsgMSwgd2hpY2ggaXMgdGVjaG5pY2Fs bHkgbm90IGd1YXJhbnRlZWQKKysgICAgIGJ5IEMsIGJ1dCBpcyB1c3VhbGx5IHRydWUgKGJlY2F1 c2UgaXQgd291bGQgYmUgdHJ1ZSBpZiB4IHdlcmUgdW5zaWduZWQKKysgICAgIHdpdGggaXRzIGhp Z2gtb3JkZXIgYml0IG9uKS4gSXQgdXNlcyB0aGUgZmFjdCB0aGF0IGhpZ2hfYm91bmQtbG93X2Jv dW5kIGlzCisrICAgICBhbHdheXMgcmVwcmVzZW50YWJsZSBpbiBVTE9OR0VTVCBhbmQgdGhhdCBp ZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxCisrICAgICBvdmVyZmxvd3MsIGl0IG92ZXJmbG93cyB0 byAwLiAgV2UgbXVzdCBjaGFuZ2UgdGhlc2UgdGVzdHMgaWYgd2UgZGVjaWRlIHRvCisrICAgICBp bmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgVFlQRV9MRU5HVEggZnJvbSB1bnNpZ25lZCBp bnQgdG8gVUxPTkdFU1QuCisrICAgICAqLworKwogKyAgaWYgKGZ1bGxfc3BhbikKLSsgICAgcmV0 dXJuIGNvdW50ICogYnl0ZV9zdHJpZGU7CisrICAgIHsKKysgICAgICByZXR2YWwgPSBjb3VudCAq IGJ5dGVfc3RyaWRlOworKyAgICAgIGlmIChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50ICE9 IGJ5dGVfc3RyaWRlIHx8IHJldHZhbCA+IFVJTlRfTUFYKQorKwlyZXR2YWwgPSAwOworKyAgICAg IHJldHVybiByZXR2YWw7CisrICAgIH0KICsgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQogKyAg ICB0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsK ICsgIGVsZW1lbnRfc2l6ZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEp OwotKyAgcmV0dXJuIChjb3VudCAtIDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7Cisr ICByZXR2YWwgPSAoY291bnQgLSAxKSAqIGJ5dGVfc3RyaWRlICsgZWxlbWVudF9zaXplOworKyAg aWYgKHJldHZhbCA8IGVsZW1lbnRfc2l6ZQorKyAgICAgIHx8IChieXRlX3N0cmlkZSAhPSAwCisr ICAgICAgICAgICYmIChyZXR2YWwgLSBlbGVtZW50X3NpemUpIC8gYnl0ZV9zdHJpZGUgIT0gY291 bnQgLSAxKQorKyAgICAgIHx8IHJldHZhbCA+IFVJTlRfTUFYKQorKyAgICByZXR2YWwgPSAwOwor KyAgcmV0dXJuIHJldHZhbDsKICt9CiArCiArLyogUHJlcGFyZSBUWVBFIGFmdGVyIGJlaW5nIHJl YWQgaW4gYnkgdGhlIGJhY2tlbmQuICBDdXJyZW50bHkgdGhpcyBmdW5jdGlvbgpAQCAtMTAyMzUs MTcgKzU3MzksNyBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogIC8qIEFkZGVkIGJ5 IEJyeWFuIEJvcmVoYW0sIEtld2lsbCwgU3VuIFNlcCAxNyAxODowNzoxNyAxOTg5LgogIAogICAg IElmIHRoaXMgaXMgYSBzdHViYmVkIHN0cnVjdCAoaS5lLiBkZWNsYXJlZCBhcyBzdHJ1Y3QgZm9v ICopLCBzZWUgaWYKLUBAIC0xMzQ3LDcgKzE0OTksOCBAQCBzdHViX25vbmFtZV9jb21wbGFpbnQg KHZvaWQpCi0gLyogRmluZCB0aGUgcmVhbCB0eXBlIG9mIFRZUEUuICBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgdGhlIHJlYWwgdHlwZSwKLSAgICBhZnRlciByZW1vdmluZyBhbGwgbGF5ZXJzIG9mIHR5 cGVkZWZzIGFuZCBjb21wbGV0aW5nIG9wYXF1ZSBvciBzdHViCi0gICAgdHlwZXMuICBDb21wbGV0 aW9uIGNoYW5nZXMgdGhlIFRZUEUgYXJndW1lbnQsIGJ1dCBzdHJpcHBpbmcgb2YKLS0gICB0eXBl ZGVmcyBkb2VzIG5vdC4gICovCi0rICAgdHlwZWRlZnMgZG9lcyBub3QuICBTdGlsbCBvcmlnaW5h bCBwYXNzZWQgVFlQRSB3aWxsIGhhdmUgVFlQRV9MRU5HVEgKLSsgICB1cGRhdGVkLiAgRklYTUU6 IFJlbW92ZSB0aGlzIGRlcGVuZGVuY3kgKG9ubHkgYWRhX3RvX2ZpeGVkX3R5cGU/KS4gICovCi0g Ci0gc3RydWN0IHR5cGUgKgotIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotQEAg LTE0NTcsMzQgKzE2MTAsMzcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCitA QCAtMTQ2Miw1MSArMTYzNSwzNiBAQCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkK ICAgICAgICAgIH0KICAgICAgfQogIApAQCAtMTAyNjQsOCArNTc1OCw3IEBAIGluZGV4IDJmNzdk Y2EuLjkwYWJmMmMgMTAwNjQ0CiArICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EWU5BTUlDICh0eXBl KSA9PSAwKTsKICsgICAgfQogKwotKyAgaWYgKCFjdXJyZW50bHlfcmVhZGluZ19zeW10YWIKLSsg ICAgICAmJiAoVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkp CisrICBpZiAoVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgfHwgVFlQRV9EWU5BTUlDICh0eXBlKSkK ICAgICAgewogLSAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwogICAgICAgIHN0cnVjdCB0 eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KTsKQEAgLTEwMjg1LDIzICs1Nzc4LDQwIEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMgMTAwNjQ0 CiAgCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBlLCBiYXNl ZCBvbiBpdHMKIC0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdz IGxlbmd0aC4KIC0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMgd2hlcmUg dGhlIGhpZ2ggYm91bmQKLS0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3VuZC4gICov Ci0tCSAgY29uc3QgaW50IGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKTsK LS0JICBjb25zdCBpbnQgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSk7 Ci0tCSAgaW50IG5iX2VsZW1lbnRzOwotLQkKKy0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxv dyBib3VuZC4gKi8KKy0JICBjb25zdCBMT05HRVNUIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5E IChyYW5nZV90eXBlKTsKKy0JICBjb25zdCBMT05HRVNUIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hf Qk9VTkQgKHJhbmdlX3R5cGUpOworLQkgIFVMT05HRVNUIGxlbjsKKy0KIC0JICBpZiAoaGlnaF9i b3VuZCA8IGxvd19ib3VuZCkKLS0JICAgIG5iX2VsZW1lbnRzID0gMDsKLS0JICBlbHNlCi0tCSAg ICBuYl9lbGVtZW50cyA9IGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxOwotLQkKLS0JICBUWVBF X0xFTkdUSCAodHlwZSkgPSBuYl9lbGVtZW50cyAqIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7 CistCSAgICBsZW4gPSAwOworLQkgIGVsc2UgeworLQkgICAgLyogRm9yIG5vdywgd2UgY29uc2Vy dmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJlIDAKKy0JICAgICAgIGlmIGl0cyBs ZW5ndGggZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMKKy0JICAgICAg IHRoYXQgZm9yIHggPCAwLCAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLAor LQkgICAgICAgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQgYnkgQywgYnV0IGlz IHVzdWFsbHkgdHJ1ZQorLQkgICAgICAgKGJlY2F1c2UgaXQgd291bGQgYmUgdHJ1ZSBpZiB4IHdl cmUgdW5zaWduZWQgd2l0aCBpdHMKKy0JICAgICAgIGhpZ2gtb3JkZXIgYml0IG9uKS4gSXQgdXNl cyB0aGUgZmFjdCB0aGF0CistCSAgICAgICBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcyBhbHdheXMg cmVwcmVzZW50YWJsZSBpbgorLQkgICAgICAgVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3Vu ZC1sb3dfYm91bmQrMSBvdmVyZmxvd3MsCistCSAgICAgICBpdCBvdmVyZmxvd3MgdG8gMC4gIFdl IG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlmIHdlIAorLQkgICAgICAgZGVjaWRlIHRvIGluY3Jl YXNlIHRoZSByZXByZXNlbnRhdGlvbiBvZiBUWVBFX0xFTkdUSAorLQkgICAgICAgZnJvbSB1bnNp Z25lZCBpbnQgdG8gVUxPTkdFU1QuICovCistCSAgICBVTE9OR0VTVCB1bG93ID0gbG93X2JvdW5k LCB1aGlnaCA9IGhpZ2hfYm91bmQ7CistCSAgICBVTE9OR0VTVCB0bGVuID0gVFlQRV9MRU5HVEgg KHRhcmdldF90eXBlKTsKKy0KKy0JICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7 CistCSAgICBpZiAodGxlbiA9PSAwIHx8IChsZW4gLyB0bGVuIC0gMSArIHVsb3cpICE9IHVoaWdo IAorLQkJfHwgbGVuID4gVUlOVF9NQVgpCistCSAgICAgIGxlbiA9IDA7CistCSAgfQorLQkgIFRZ UEVfTEVOR1RIICh0eXBlKSA9IGxlbjsKICsJICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRo ZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4gICovCiArCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gdHlw ZV9sZW5ndGhfZ2V0ICh0eXBlLCB0YXJnZXRfdHlwZSwgMCk7CiAgCSAgVFlQRV9UQVJHRVRfU1RV QiAodHlwZSkgPSAwOwogIAl9CiAgICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfUkFOR0UpCi1AQCAtMTQ5Miw5ICsxNjQ4LDEyIEBAIGNoZWNrX3R5cGVkZWYgKHN0 cnVjdCB0eXBlICp0eXBlKQorQEAgLTE1MTQsOSArMTY3MiwxMiBAQCBjaGVja190eXBlZGVmIChz dHJ1Y3QgdHlwZSAqdHlwZSkKICAJICBUWVBFX0xFTkdUSCAodHlwZSkgPSBUWVBFX0xFTkdUSCAo dGFyZ2V0X3R5cGUpOwogIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKICAJfQpAQCAt MTAzMTQsMzcgKzU4MjQsMTUgQEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAgIHJl dHVybiB0eXBlOwogIH0KICAKLUBAIC0xNzE2LDcgKzE4NzUsNyBAQCBpbml0X3R5cGUgKGVudW0g dHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywKLSB7Ci0gICBzdHJ1Y3QgdHlw ZSAqdHlwZTsKLSAKLS0gIHR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKLSsgIHR5cGUgPSBh bGxvY190eXBlIChvYmpmaWxlLCBOVUxMKTsKLSAgIFRZUEVfQ09ERSAodHlwZSkgPSBjb2RlOwot ICAgVFlQRV9MRU5HVEggKHR5cGUpID0gbGVuZ3RoOwotIAotQEAgLTE3NjAsNiArMTkxOSwxMCBA QCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2RlIGNvZGUsIGludCBsZW5ndGgsIGludCBmbGFncywK LSAgICAgewotICAgICAgIElOSVRfQ1BMVVNfU1BFQ0lGSUMgKHR5cGUpOworQEAgLTE4MDksNiAr MTk3MCw3IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2NvZGUgY29kZSwgaW50IGxlbmd0aCwgaW50 IGZsYWdzLAorICAgICAgICAgVFlQRV9TUEVDSUZJQ19GSUVMRCAodHlwZSkgPSBUWVBFX1NQRUNJ RklDX0NBTExJTkdfQ09OVkVOVElPTjsKKyAgICAgICAgIGJyZWFrOwogICAgICB9CiArCi0rICBp ZiAoIW9iamZpbGUpCi0rICAgIHR5cGVfaW5jcmVmICh0eXBlKTsKLSsKICAgIHJldHVybiB0eXBl OwogIH0KICAKLUBAIC0yMDA0LDcgKzIxNjcsOCBAQCByYW5rX29uZV90eXBlIChzdHJ1Y3QgdHlw ZSAqcGFybSwgc3RydWN0IHR5cGUgKmFyZykKLSAgICAgICBzd2l0Y2ggKFRZUEVfQ09ERSAoYXJn KSkKLSAJewotIAljYXNlIFRZUEVfQ09ERV9QVFI6Ci0tCSAgaWYgKFRZUEVfQ09ERSAoVFlQRV9U QVJHRVRfVFlQRSAocGFybSkpID09IFRZUEVfQ09ERV9WT0lEKQotKwkgIGlmIChUWVBFX0NPREUg KFRZUEVfVEFSR0VUX1RZUEUgKHBhcm0pKSA9PSBUWVBFX0NPREVfVk9JRAotKwkgICAgICAmJiBU WVBFX0NPREUgKFRZUEVfVEFSR0VUX1RZUEUgKGFyZykpICE9IFRZUEVfQ09ERV9WT0lEKQotIAkg ICAgcmV0dXJuIFZPSURfUFRSX0NPTlZFUlNJT05fQkFETkVTUzsKLSAJICBlbHNlCi0gCSAgICBy ZXR1cm4gcmFua19vbmVfdHlwZSAoVFlQRV9UQVJHRVRfVFlQRSAocGFybSksIAotQEAgLTI4MjAs MzMgKzI5ODQsNDIgQEAgdHlwZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qg dm9pZCAqaXRlbV9yaHMpCitAQCAtMjg4OSwzMyArMzA1MSw0MiBAQCB0eXBlX3BhaXJfZXEgKGNv bnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKICB9CiAgCiAgLyogQWxs b2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsK QEAgLTEwNDAyLDcgKzU4OTAsNyBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogICAg ICByZXR1cm4gdHlwZTsKICAKICAgIC8qIFRoaXMgdHlwZSBzaG91bGRuJ3QgYmUgcG9pbnRpbmcg dG8gYW55IHR5cGVzIGluIG90aGVyIG9iamZpbGVzOwotQEAgLTI4NjEsOCArMzAzNCwxMCBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yOTMwLDgg KzMxMDEsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgICBuZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOwog IAogICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVk aWF0ZWx5LCBpbiBjYXNlCkBAIC0xMDQxNSw3ICs1OTAzLDcgQEAgaW5kZXggMmY3N2RjYS4uOTBh YmYyYyAxMDA2NDQKICAgIHN0b3JlZC0+b2xkID0gdHlwZTsKICAgIHN0b3JlZC0+bmV3ID0gbmV3 X3R5cGU7CiAgICAqc2xvdCA9IHN0b3JlZDsKLUBAIC0yODczLDYgKzMwNDgsMTkgQEAgY29weV90 eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMjk0Miw2ICszMTE1 LDE5IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAg VFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOwogICAgVFlQRV9PV05FUiAobmV3X3R5 cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKICAKQEAgLTEwNDM1LDcgKzU5MjMs NyBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogICAgaWYgKFRZUEVfTkFNRSAodHlw ZSkpCiAgICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBl KSk7CiAgICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkpCi1AQCAtMjg4MSwxMiArMzA2OSw0NSBA QCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yOTUw LDEyICszMTM2LDQ1IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAogICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9G TEFHUyAodHlwZSk7CiAgICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5 cGUpOwogIApAQCAtMTA0ODEsNyArNTk2OSw3IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMgMTAw NjQ0CiAgICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IFhDQUxMT0MgKG5maWVsZHMsIHN0 cnVjdCBmaWVsZCk7CiAgICAgICAgZm9yIChpID0gMDsgaSA8IG5maWVsZHM7IGkrKykKICAJewot QEAgLTI4OTUsOCArMzExNiw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAorQEAgLTI5NjQsOCArMzE4Myw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5cGUs IGkpID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQRV9GSUVMRF9U WVBFICh0eXBlLCBpKSkKICAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCkBAIC0x MDQ5Miw0MCArNTk4MCw2OCBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogIAkgIGlm IChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdf dHlwZSwgaSkgPSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7 Ci1AQCAtMjkxNSw2ICszMTM2LDE2IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotIAkJCQkgIHhzdHJkdXAgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1F ICh0eXBlLAotIAkJCQkJCQkJICAgICAgIGkpKSk7Ci0gCSAgICAgIGJyZWFrOwotKwkgICAgY2Fz ZSBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSzoKLSsJICAgICAgLyogYHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCQkgaXQgaXMg ZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLiAgKi8KLSsJICAg ICAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCi0rCQkgIHx8IFRZUEVfTk9UX0FT U09DSUFURUQgKG5ld190eXBlKSkKLSsJCVNFVF9GSUVMRF9EV0FSRl9CTE9DSyAoVFlQRV9GSUVM RCAobmV3X3R5cGUsIGkpLCBOVUxMKTsKLSsJICAgICAgZWxzZQotKwkJU0VUX0ZJRUxEX0JJVFBP UyAoVFlQRV9GSUVMRCAobmV3X3R5cGUsIGkpLAotKwkJICAgZHdhcmZfbG9jZXhwcl9iYXRvbl9l dmFsIChUWVBFX0ZJRUxEX0RXQVJGX0JMT0NLICh0eXBlLCBpKSkpOwotKwkgICAgICBicmVhazsK LSAJICAgIGRlZmF1bHQ6Ci0gCSAgICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5F X18sCi0gCQkJICAgICAgXygiVW5leHBlY3RlZCB0eXBlIGZpZWxkIGxvY2F0aW9uIGtpbmQ6ICVk IiksCi1AQCAtMjkyMywxNyArMzE1NCwzMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKK0BAIC0yOTkyLDI0ICszMjExLDc1IEBAIGNvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKLSsgIC8qIENv bnZlcnQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIGludG8gYSByZWd1bGFyIGJvdW5k LiAgKi8KLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRQotKyAgICAg ICYmIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAodHlwZSkpCi0rICAgIHsKLSsgICAg ICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9IDA7Ci0rICAgICAg VFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgPSBUWVBFX0xPV19CT1VORCAodHlwZSkKLSsJCQkJ ICAgKyBUWVBFX0hJR0hfQk9VTkQgKHR5cGUpIC0gMTsKLSsgICAgfQotKwogKyAgLyogQm90aCBG SUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSyBhbmQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NP VU5UIHdlcmUKICsgICAgIHBvc3NpYmx5IGNvbnZlcnRlZC4gICovCiArICBUWVBFX0RZTkFNSUMg KG5ld190eXBlKSA9IDA7CiArCisgICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJvdW5k cyBpbmZvcm1hdGlvbi4gKi8KKyAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9S QU5HRSkKKyAgICAgeworICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0geG1hbGxv YyAoc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRzKSk7CisgICAgICAgKlRZUEVfUkFOR0VfREFU QSAobmV3X3R5cGUpID0gKlRZUEVfUkFOR0VfREFUQSAodHlwZSk7CisrCisrICAgICAgaWYgKFRZ UEVfTE9XX0JPVU5EX0lTX0RXQVJGX0JMT0NLICh0eXBlKSkKKysJeworKwkgIC8qIGBzdHJ1Y3Qg ZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkg ICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4g ICovCisrCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkKKysJICAgICAgfHwgVFlQRV9O T1RfQVNTT0NJQVRFRCAodHlwZSkpCisrCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+ bG93LnUuZHdhcmZfYmxvY2sgPSBOVUxMOworKwkgIGVsc2UKKysJICAgIFRZUEVfTE9XX0JPVU5E IChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysJCQkJKFRZUEVfUkFOR0Vf REFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9ibG9jayk7CisrCSAgVFlQRV9MT1dfQk9VTkRf SVNfRFdBUkZfQkxPQ0sgKG5ld190eXBlKSA9IDA7CisrCX0KKysKKysgICAgICBpZiAoVFlQRV9I SUdIX0JPVU5EX0lTX0RXQVJGX0JMT0NLICh0eXBlKSkKKysJeworKwkgIC8qIGBzdHJ1Y3QgZHdh cmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAg IGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4gICov CisrCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkKKysJICAgICAgfHwgVFlQRV9OT1Rf QVNTT0NJQVRFRCAodHlwZSkpCisrCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGln aC51LmR3YXJmX2Jsb2NrID0gTlVMTDsKKysJICBlbHNlCisrCSAgICBUWVBFX0hJR0hfQk9VTkQg KG5ld190eXBlKSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAorKwkJCSAgICAgICAoVFlQRV9S QU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9ibG9jayk7CisrCSAgVFlQRV9ISUdI X0JPVU5EX0lTX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkgPSAwOworKwl9CisrCisrICAgICAgaWYg KFRZUEVfQllURV9TVFJJREVfSVNfRFdBUkZfQkxPQ0sgKHR5cGUpKQorKwl7CisrCSAgLyogYHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNv CisrCSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBF REVGLiAgKi8KKysJICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEICh0eXBlKQorKwkgICAgICB8fCBU WVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSkKKysJICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5 cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrID0gTlVMTDsKKysJICBlbHNlCisrCSAgICBU WVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysJ CQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfYmxvY2sp OworKwkgIFRZUEVfQllURV9TVFJJREVfSVNfRFdBUkZfQkxPQ0sgKG5ld190eXBlKSA9IDA7Cisr CX0KKysKKysgICAgICAvKiBDb252ZXJ0IFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCBp bnRvIGEgcmVndWxhciBib3VuZC4gICovCisrICAgICAgaWYgKFRZUEVfUkFOR0VfSElHSF9CT1VO RF9JU19DT1VOVCAodHlwZSkpCisrCXsKKysJICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9 IFRZUEVfTE9XX0JPVU5EICh0eXBlKQorKwkJCQkgICAgICAgKyBUWVBFX0hJR0hfQk9VTkQgKHR5 cGUpIC0gMTsKKysJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9 IDA7CisrCX0KKyAgICAgfQorIAogICAgLyogQ29weSBwb2ludGVycyB0byBvdGhlciB0eXBlcy4g ICovCiAgICBpZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpCiAgICAgIFRZUEVfVEFSR0VUX1RZ UEUgKG5ld190eXBlKSA9IApAQCAtMTA1NDYsNyArNjA2Miw3IEBAIGluZGV4IDJmNzdkY2EuLjkw YWJmMmMgMTAwNjQ0CiAgICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMuCiAg CiAgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVj aWZpYyBiaXRzIGxpa2UKLUBAIC0yOTUxLDYgKzMxOTUsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2 ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMzAyNyw2ICszMjk3LDE3IEBAIGNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgcmV0dXJuIG5ld190 eXBlOwogIH0KICAKQEAgLTEwNTY0LDcgKzYwODAsNyBAQCBpbmRleCAyZjc3ZGNhLi45MGFiZjJj IDEwMDY0NAogIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0 aGUgcG9pbnRlciAmIHJlZmVyZW5jZQogICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgogICAg IAotQEAgLTI5NzMsNiArMzIyOCwyMTcgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAq dHlwZSkKK0BAIC0zMDQ5LDYgKzMzMzAsMTk5IEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5 cGUgKnR5cGUpCiAgICByZXR1cm4gbmV3X3R5cGU7CiAgfQogIApAQCAtMTA1OTMsNyArNjEwOSw3 IEBAIGluZGV4IDJmNzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiArICAvKiBgc3RydWN0IGNwbHVzX3N0 cnVjdF90eXBlJyBoYW5kbGluZyBpcyB1bnN1cHBvcnRlZCBieSB0aGlzIGZ1bmN0aW9uLiAgKi8K ICsgIGdkYl9hc3NlcnQgKChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJVQ1QKICsJ ICAgICAgICYmIFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1VOSU9OKQotKwkgICAgICB8 fCAhSEFWRV9DUExVU19TVFJVQ1QgKHR5cGUpIHx8ICFUWVBFX0NQTFVTX1NQRUNJRklDICh0eXBl KSk7CisrCSAgICAgIHx8ICFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOwogKwogKyAgaWYgKCEo Kml0ZXIpICh0eXBlLCBkYXRhKSkKICsgICAgcmV0dXJuOwpAQCAtMTA2NDEsMTAgKzYxNTcsNyBA QCBpbmRleCAyZjc3ZGNhLi45MGFiZjJjIDEwMDY0NAogKyAgICB9CiArICB4ZnJlZSAoVFlQRV9G SUVMRFMgKHR5cGUpKTsKICsKLSsgIC8qIGBzdHJ1Y3QgY3BsdXNfc3RydWN0X3R5cGUnIGhhbmRs aW5nIGlzIHVuc3VwcG9ydGVkIGJ5IHRoaXMgZnVuY3Rpb24uICAqLwotKyAgZ2RiX2Fzc2VydCAo KFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1NUUlVDVAotKwkgICAgICAgJiYgVFlQRV9D T0RFICh0eXBlKSAhPSBUWVBFX0NPREVfVU5JT04pCi0rCSAgICAgIHx8ICFIQVZFX0NQTFVTX1NU UlVDVCAodHlwZSkgfHwgIVRZUEVfQ1BMVVNfU1BFQ0lGSUMgKHR5cGUpKTsKKysgIGdkYl9hc3Nl cnQgKCFIQVZFX0NQTFVTX1NUUlVDVCAodHlwZSkpOwogKwogKyAgeGZyZWUgKFRZUEVfTUFJTl9U WVBFICh0eXBlKSk7CiArfQpAQCAtMTA3MjUsMjEgKzYyMzgsNiBAQCBpbmRleCAyZjc3ZGNhLi45 MGFiZjJjIDEwMDY0NAogKyAgbWFpbl90eXBlX2NyYXdsICh0eXBlLCB0eXBlX21hcmtfdXNlZF9j cmF3bCwgTlVMTCk7CiArfQogKwotKy8qIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IGZv ciBUWVBFLiAgKi8KLSsKLSt2b2lkCi0rdHlwZV9pbmNyZWYgKHN0cnVjdCB0eXBlICp0eXBlKQot K3sKLSt9Ci0rCi0rLyogRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgZm9yIFRZUEUuICBJ ZiBUWVBFIGhhcyBubyBtb3JlCi0rICAgcmVmZXJlbmNlcywgZGVsZXRlIGl0LiAgKi8KLSsKLSt2 b2lkCi0rdHlwZV9kZWNyZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSt9Ci0rCiArLyogQSB0 cmF2ZXJzZSBjYWxsYmFjayBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSB3aGljaCByZW1vdmVz IGFueQogKyAgIHR5cGVfZGlzY2FyZGFibGUgd2hvc2UgcmVmZXJlbmNlIGNvdW50IGlzIG5vdyB6 ZXJvICh1bnVzZWQgbGluaykuICAqLwogKwpAQCAtMTA3ODIsNyArNjI4MCw3IEBAIGluZGV4IDJm NzdkY2EuLjkwYWJmMmMgMTAwNjQ0CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9ucyB0byBpbml0aWFs aXplIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0eXBlcy4gICovCiAgCi1AQCAtMzQ2Myw2ICszOTI5 LDExIEBAIHZvaWQKK0BAIC0zNTM5LDYgKzQwMTMsMTEgQEAgdm9pZAogIF9pbml0aWFsaXplX2dk YnR5cGVzICh2b2lkKQogIHsKICAgIGdkYnR5cGVzX2RhdGEgPSBnZGJhcmNoX2RhdGFfcmVnaXN0 ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0X2luaXQpOwpAQCAtMTA3OTUsMTAgKzYyOTMsMTAg QEAgaW5kZXggMmY3N2RjYS4uOTBhYmYyYyAxMDA2NDQKICAKICAgIGFkZF9zZXRzaG93X3ppbnRl Z2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywgXygiXAogZGlm ZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKLWluZGV4IGJlNmVkNTUu LjZhNTFhNGUgMTAwNjQ0CitpbmRleCA4ZTczY2EwLi44NTg4OGUxIDEwMDY0NAogLS0tIGEvZ2Ri L2dkYnR5cGVzLmgKICsrKyBiL2dkYi9nZGJ0eXBlcy5oCi1AQCAtMTM3LDYgKzEzNyw4IEBAIGVu dW0gdHlwZV9jb2RlCitAQCAtMTM4LDYgKzEzOCw4IEBAIGVudW0gdHlwZV9jb2RlCiAgCiAgICAg IFRZUEVfQ09ERV9ERUNGTE9BVCwJCS8qIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQuICAqLwogIApA QCAtMTA4MDcsNyArNjMwNSw3IEBAIGluZGV4IGJlNmVkNTUuLjZhNTFhNGUgMTAwNjQ0CiAgICAg IC8qIEludGVybmFsIGZ1bmN0aW9uIHR5cGUuICAqLwogICAgICBUWVBFX0NPREVfSU5URVJOQUxf RlVOQ1RJT04KICAgIH07Ci1AQCAtMjEzLDYgKzIxNSwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2Vf ZmxhZ192YWx1ZQorQEAgLTIxNCw2ICsyMTYsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdf dmFsdWUKICAKICAjZGVmaW5lIFRZUEVfVEFSR0VUX1NUVUIodCkJKFRZUEVfTUFJTl9UWVBFICh0 KS0+ZmxhZ190YXJnZXRfc3R1YikKICAKQEAgLTEwODE5LDcgKzYzMTcsNyBAQCBpbmRleCBiZTZl ZDU1Li42YTUxYTRlIDEwMDY0NAogIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRo ZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAogICAqIGEgc3RhdGljIG1vZGlmaWVyLgogICAqIE5v dGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJzCi1A QCAtMjc4LDYgKzI4NSw0OCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorQEAgLTI3 OSw2ICsyODYsNDggQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKICAjZGVmaW5lIFRZ UEVfT1dORVIodCkgVFlQRV9NQUlOX1RZUEUodCktPm93bmVyCiAgI2RlZmluZSBUWVBFX09CSkZJ TEUodCkgKFRZUEVfT0JKRklMRV9PV05FRCh0KT8gVFlQRV9PV05FUih0KS5vYmpmaWxlIDogTlVM TCkKICAKQEAgLTEwODY4LDcgKzYzNjYsMTcgQEAgaW5kZXggYmU2ZWQ1NS4uNmE1MWE0ZSAxMDA2 NDQKICAvKiBDb25zdGFudCB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5n IHR5cGUgaGFzIGEKICAgKiBjb25zdCBtb2RpZmllci4KICAgKi8KLUBAIC0zNjUsNiArNDE0LDEz IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC0zMzYsOCArMzg1LDcgQEAgZW51bSBmaWVsZF9sb2Nf a2luZAorICAgeworICAgICBGSUVMRF9MT0NfS0lORF9CSVRQT1MsCS8qIGJpdHBvcyAqLworICAg ICBGSUVMRF9MT0NfS0lORF9QSFlTQUREUiwJLyogcGh5c2FkZHIgKi8KKy0gICAgRklFTERfTE9D X0tJTkRfUEhZU05BTUUsCS8qIHBoeXNuYW1lICovCistICAgIEZJRUxEX0xPQ19LSU5EX0RXQVJG X0JMT0NLCS8qIGR3YXJmX2Jsb2NrICovCisrICAgIEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FCS8q IHBoeXNuYW1lICovCisgICB9OworIAorIC8qIEEgZGlzY3JpbWluYW50IHRvIGRldGVybWluZSB3 aGljaCBmaWVsZCBpbiB0aGUgbWFpbl90eXBlLnR5cGVfc3BlY2lmaWMKK0BAIC0zODYsNiArNDM0 LDEzIEBAIHN0cnVjdCBtYWluX3R5cGUKICAgIHVuc2lnbmVkIGludCBmbGFnX25vdHRleHQgOiAx OwogICAgdW5zaWduZWQgaW50IGZsYWdfZml4ZWRfaW5zdGFuY2UgOiAxOwogICAgdW5zaWduZWQg aW50IGZsYWdfb2JqZmlsZV9vd25lZCA6IDE7CkBAIC0xMDg4MCw5ICs2Mzg4LDkgQEAgaW5kZXgg YmU2ZWQ1NS4uNmE1MWE0ZSAxMDA2NDQKICsgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hc3NvY2lh dGVkIDogMTsKICsgIHVuc2lnbmVkIGludCBmbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkciA6IDE7 CiAgCi0gICAvKiBOdW1iZXIgb2YgZmllbGRzIGRlc2NyaWJlZCBmb3IgdGhpcyB0eXBlLiAgVGhp cyBmaWVsZCBhcHBlYXJzIGF0Ci0gICAgICB0aGlzIGxvY2F0aW9uIGJlY2F1c2UgaXQgcGFja3Mg bmljZWx5IGhlcmUuICAqLwotQEAgLTQzMSw2ICs0ODcsMjAgQEAgc3RydWN0IG1haW5fdHlwZQor ICAgLyogQSBkaXNjcmltaW5hbnQgdGVsbGluZyB1cyB3aGljaCBmaWVsZCBvZiB0aGUgdHlwZV9z cGVjaWZpYyB1bmlvbgorICAgICAgaXMgYmVpbmcgdXNlZCBmb3IgdGhpcyB0eXBlLCBpZiBhbnku ICAqLworQEAgLTQ1Niw2ICs1MTEsMjAgQEAgc3RydWN0IG1haW5fdHlwZQogIAogICAgc3RydWN0 IHR5cGUgKnRhcmdldF90eXBlOwogIApAQCAtMTA5MDMsNyArNjQxMSw0OCBAQCBpbmRleCBiZTZl ZDU1Li42YTUxYTRlIDEwMDY0NAogICAgLyogRm9yIHN0cnVjdHVyZSBhbmQgdW5pb24gdHlwZXMs IGEgZGVzY3JpcHRpb24gb2YgZWFjaCBmaWVsZC4KICAgICAgIEZvciBzZXQgYW5kIHBhc2NhbCBh cnJheSB0eXBlcywgdGhlcmUgaXMgb25lICJmaWVsZCIsCiAgICAgICB3aG9zZSB0eXBlIGlzIHRo ZSBkb21haW4gdHlwZSBvZiB0aGUgc2V0IG9yIGFycmF5LgotQEAgLTUzOCw2ICs2MDgsOSBAQCBz dHJ1Y3QgbWFpbl90eXBlCitAQCAtNDkyLDEyICs1NjEsNiBAQCBzdHJ1Y3QgbWFpbl90eXBlCisg CisgCUNPUkVfQUREUiBwaHlzYWRkcjsKKyAJY2hhciAqcGh5c25hbWU7CistCistCS8qIFRoZSBm aWVsZCBsb2NhdGlvbiBjYW4gYmUgY29tcHV0ZWQgYnkgZXZhbHVhdGluZyB0aGUgZm9sbG93aW5n IERXQVJGCistCSAgIGJsb2NrLiAgVGhpcyBjYW4gYmUgdXNlZCBpbiBGb3J0cmFuIHZhcmlhYmxl LWxlbmd0aCBhcnJheXMsIGZvcgorLQkgICBpbnN0YW5jZS4gICovCistCistCXN0cnVjdCBkd2Fy ZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7CisgICAgICAgfQorICAgICAgIGxvYzsKKyAK K0BAIC01MzUsMTMgKzU5OCwyMiBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgCisgICAgIHN0cnVjdCBy YW5nZV9ib3VuZHMKKyAgICAgeworKyAgICAgIHN0cnVjdAorKwl7CisrCSAgdW5pb24KKysJICAg IHsKKysJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9ibG9jazsKKysJ ICAgICAgTE9OR0VTVCBjb25zdGFudDsKKysJICAgIH0KKysJICB1OworKwkgIHVuc2lnbmVkIGlz X2R3YXJmX2Jsb2NrIDogMTsKKysJfQorICAgICAgIC8qIExvdyBib3VuZCBvZiByYW5nZS4gKi8K Ky0KKy0gICAgICBMT05HRVNUIGxvdzsKKy0KKysgICAgICBsb3csCisgICAgICAgLyogSGlnaCBi b3VuZCBvZiByYW5nZS4gKi8KKy0KKy0gICAgICBMT05HRVNUIGhpZ2g7CisrICAgICAgaGlnaCwK KysgICAgICAvKiBCeXRlIHN0cmlkZSBvZiByYW5nZS4gKi8KKysgICAgICBieXRlX3N0cmlkZTsK KyAKKyAgICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cg YW5kIGhpZ2ggYXJlCisgICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNwZWN0aXZl IHJhbmdlIHZhbHVlIGlzCitAQCAtNTkzLDYgKzY2NSw5IEBAIHN0cnVjdCBtYWluX3R5cGUKICAg ICAgICAgc3VwcG9ydGluZyBtdWx0aXBsZSBBQklzLiAgUmlnaHQgbm93IHRoaXMgaXMgb25seSBm ZXRjaGVkIGZyb20KICAgICAgICAgdGhlIER3YXJmLTIgRFdfQVRfY2FsbGluZ19jb252ZW50aW9u IGF0dHJpYnV0ZS4gICovCiAgICAgIHVuc2lnbmVkIGNhbGxpbmdfY29udmVudGlvbjsKQEAgLTEw OTEzLDcgKzY0NjIsNyBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogICAgfSB0eXBl X3NwZWNpZmljOwogIH07CiAgCi1AQCAtODEyLDkgKzg4NSw5IEBAIGV4dGVybiB2b2lkIGFsbG9j YXRlX2NwbHVzX3N0cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC05MDAsOSArOTc1LDkg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAg I2RlZmluZSBUWVBFX1BPSU5URVJfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cG9pbnRlcl90 eXBlCiAgI2RlZmluZSBUWVBFX1JFRkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5y ZWZlcmVuY2VfdHlwZQogICNkZWZpbmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRoaXN0eXBlKS0+ Y2hhaW4KQEAgLTEwOTI2LDkgKzY0NzUsOSBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0 NAogICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkg aXMgc2FmZS4gICovCiAgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+ bGVuZ3RoCiAgLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYs IHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCi1AQCAtODIzLDIzICs4OTYsNDQgQEAgZXh0ZXJuIHZv aWQgYWxsb2NhdGVfY3BsdXNfc3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAgLTkxMSwx NSArOTg2LDI2IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0 eXBlICopOwogICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0 aGlzdHlwZSktPm5maWVsZHMKLSAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01B SU5fVFlQRSh0aGlzdHlwZSktPmZpZWxkcworICNkZWZpbmUgVFlQRV9GSUVMRFModGhpc3R5cGUp IFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZpZWxkcwogICNkZWZpbmUgVFlQ RV9URU1QTEFURV9BUkdTKHRoaXN0eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+ dGVtcGxhdGVfYXJncwogKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLKHRo aXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5kYXRhX2xvY2F0aW9uLmR3YXJmX2Js b2NrCiArI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fQUREUih0aGlzdHlwZSkgVFlQRV9NQUlO X1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5hZGRyCkBAIC0xMDkzNiw0MiArNjQ4NSw0 MSBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogKyNkZWZpbmUgVFlQRV9BU1NPQ0lB VEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5hc3NvY2lhdGVkCiAgCiAg I2RlZmluZSBUWVBFX0lOREVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKQot ICNkZWZpbmUgVFlQRV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9GSUVMRF9CSVRQT1MgKHJh bmdlX3R5cGUsIDApCi0gI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9G SUVMRF9CSVRQT1MgKHJhbmdlX3R5cGUsIDEpCi0tCi0tLyogTW90by1zcGVjaWZpYyBzdHVmZiBm b3IgRk9SVFJBTiBhcnJheXMgKi8KLS0KLS0jZGVmaW5lIFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRf SVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAotLSAgIChUWVBFX0ZJRUxEX0FSVElGSUNJQUwoVFlQ RV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSwxKSkKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJREUo cmFuZ2VfdHlwZSkgVFlQRV9GSUVMRF9CSVRQT1MgKHJhbmdlX3R5cGUsIDIpCi0rCi0rLyogV2hl dGhlciB3ZSBzaG91bGQgdXNlIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sgKGFuZCBub3QgVFlQRV9G SUVMRF9CSVRQT1MpLiAgKi8KLSsjZGVmaW5lIFRZUEVfUkFOR0VfQk9VTkRfSVNfRFdBUkZfQkxP Q0socmFuZ2VfdHlwZSwgZmllbGRubykgXAotKyAgKFRZUEVfRklFTERfTE9DX0tJTkQgKHJhbmdl X3R5cGUsIGZpZWxkbm8pID09IEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLKQotKyNkZWZpbmUg VFlQRV9SQU5HRV9CT1VORF9TRVRfRFdBUkZfQkxPQ0socmFuZ2VfdHlwZSwgZmllbGRubykgXAot KyAgKFRZUEVfRklFTERfTE9DX0tJTkQgKHJhbmdlX3R5cGUsIGZpZWxkbm8pID0gRklFTERfTE9D X0tJTkRfRFdBUkZfQkxPQ0spCi0rI2RlZmluZSBUWVBFX0FSUkFZX0JPVU5EX0lTX0RXQVJGX0JM T0NLKGFycmF5X3R5cGUsIGZpZWxkbm8pIFwKLSsgIFRZUEVfUkFOR0VfQk9VTkRfSVNfRFdBUkZf QkxPQ0sgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXlfdHlwZSksIGZpZWxkbm8pCi0rCi0rLyogVW5i b3VuZCBhcnJheXMsIHN1Y2ggYXMgR0NDIGFycmF5W107IGF0IGVuZCBvZiBzdHJ1Y3QuICAqLwot KyNkZWZpbmUgVFlQRV9SQU5HRV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQocmFuZ2V0eXBlKSBc Ci0rICAgVFlQRV9GSUVMRF9BUlRJRklDSUFMKChyYW5nZXR5cGUpLDApCi0rI2RlZmluZSBUWVBF X1JBTkdFX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRChyYW5nZXR5cGUpIFwKLSsgICBUWVBFX0ZJ RUxEX0FSVElGSUNJQUwoKHJhbmdldHlwZSksMSkKKyAjZGVmaW5lIFRZUEVfUkFOR0VfREFUQSh0 aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5mbGRzX2JuZHMuYm91bmRzCistI2Rl ZmluZSBUWVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlw ZSktPmxvdworLSNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0Vf REFUQShyYW5nZV90eXBlKS0+aGlnaAorKyNkZWZpbmUgVFlQRV9MT1dfQk9VTkQocmFuZ2VfdHlw ZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3cudS5jb25zdGFudAorKyNkZWZpbmUg VFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+ aGlnaC51LmNvbnN0YW50CisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5jb25zdGFudAorICNkZWZp bmUgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKKyAgICBUWVBFX1JBTkdF X0RBVEEocmFuZ2VfdHlwZSktPmxvd191bmRlZmluZWQKKyAjZGVmaW5lIFRZUEVfSElHSF9CT1VO RF9VTkRFRklORUQocmFuZ2VfdHlwZSkgXAorICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBl KS0+aGlnaF91bmRlZmluZWQKKysjZGVmaW5lIFRZUEVfTE9XX0JPVU5EX0lTX0RXQVJGX0JMT0NL KHJhbmdlX3R5cGUpIFwKKysgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy5pc19k d2FyZl9ibG9jaworKyNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX0lTX0RXQVJGX0JMT0NLKHJhbmdl X3R5cGUpIFwKKysgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmhpZ2guaXNfZHdhcmZf YmxvY2sKKysjZGVmaW5lIFRZUEVfQllURV9TVFJJREVfSVNfRFdBUkZfQkxPQ0socmFuZ2VfdHlw ZSkgXAorKyAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUuaXNfZHdh cmZfYmxvY2sKKyAKKyAvKiBNb3RvLXNwZWNpZmljIHN0dWZmIGZvciBGT1JUUkFOIGFycmF5cyAq LworIAorQEAgLTkyOCwxMSArMTAxNCwyMyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1 eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRf SVNfVU5ERUZJTkVEKGFycmF5dHlwZSkgXAotLSAgIChUWVBFX0ZJRUxEX0FSVElGSUNJQUwoVFlQ RV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSwwKSkKLS0KLS0jZGVmaW5lIFRZUEVfQVJSQVlfVVBQ RVJfQk9VTkRfVkFMVUUoYXJyYXl0eXBlKSBcCi0tICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lO REVYX1RZUEUoKGFycmF5dHlwZSkpKSkKLSsgICBUWVBFX1JBTkdFX0xPV0VSX0JPVU5EX0lTX1VO REVGSU5FRCAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKQotKyNkZWZpbmUgVFlQRV9BUlJB WV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQoYXJyYXl0eXBlKSBcCi0rICAgVFlQRV9SQU5HRV9V UFBFUl9CT1VORF9JU19VTkRFRklORUQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkKKyAg ICBUWVBFX0xPV19CT1VORF9VTkRFRklORUQoVFlQRV9JTkRFWF9UWVBFKGFycmF5dHlwZSkpCisg CisrI2RlZmluZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX0RXQVJGX0JMT0NLKGFycmF5dHlw ZSkgXAorKyAgIFRZUEVfSElHSF9CT1VORF9JU19EV0FSRl9CTE9DSyhUWVBFX0lOREVYX1RZUEUo YXJyYXl0eXBlKSkKKysjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfRFdBUkZfQkxP Q0soYXJyYXl0eXBlKSBcCisrICAgVFlQRV9MT1dfQk9VTkRfSVNfRFdBUkZfQkxPQ0soVFlQRV9J TkRFWF9UWVBFKGFycmF5dHlwZSkpCisrCisgI2RlZmluZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5E X1ZBTFVFKGFycmF5dHlwZSkgXAorICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBF KChhcnJheXR5cGUpKSkpCiAgCiAgI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZBTFVF KGFycmF5dHlwZSkgXAogLSAgIChUWVBFX0xPV19CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5 dHlwZSkpKSkKICsgIFRZUEVfTE9XX0JPVU5EIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkp Ci0rI2RlZmluZSBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAotKyAg VFlQRV9ISUdIX0JPVU5EIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpCisrCiArLyogVFlQ RV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKSB3aXRoIGEgZmFsbGJh Y2sgdG8gdGhlCiArICAgZWxlbWVudCBzaXplIGlmIG5vIHNwZWNpZmljIHN0cmlkZSB2YWx1ZSBp cyBrbm93bi4gICovCiArI2RlZmluZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFKGFycmF5 dHlwZSkJCVwKQEAgLTEwOTgxLDI0ICs2NTI5LDQxIEBAIGluZGV4IGJlNmVkNTUuLjZhNTFhNGUg MTAwNjQ0CiAgCiAgLyogQysrICovCiAgCi1AQCAtODU1LDYgKzk0OSw3IEBAIGV4dGVybiB2b2lk IGFsbG9jYXRlX2NwbHVzX3N0cnVjdF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZ UEVfQ1BMVVNfU1BFQ0lGSUModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlw ZV9zcGVjaWZpYy5jcGx1c19zdHVmZgotICNkZWZpbmUgVFlQRV9GTE9BVEZPUk1BVCh0aGlzdHlw ZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT50eXBlX3NwZWNpZmljLmZsb2F0Zm9ybWF0CitA QCAtOTYxLDYgKzEwNTksNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChz dHJ1Y3QgdHlwZSAqKTsKKyAjZGVmaW5lIFRZUEVfR05BVF9TUEVDSUZJQyh0aGlzdHlwZSkgVFlQ RV9NQUlOX1RZUEUodGhpc3R5cGUpLT50eXBlX3NwZWNpZmljLmduYXRfc3R1ZmYKKyAjZGVmaW5l IFRZUEVfREVTQ1JJUFRJVkVfVFlQRSh0aGlzdHlwZSkgVFlQRV9HTkFUX1NQRUNJRklDKHRoaXN0 eXBlKS0+ZGVzY3JpcHRpdmVfdHlwZQogICNkZWZpbmUgVFlQRV9DQUxMSU5HX0NPTlZFTlRJT04o dGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+dHlwZV9zcGVjaWZpYy5jYWxsaW5n X2NvbnZlbnRpb24KICsjZGVmaW5lIFRZUEVfTU9EVUxFX0JMT0NLKHRoaXN0eXBlKSBUWVBFX01B SU5fVFlQRSh0aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMubW9kdWxlX2Jsb2NrCi0gI2RlZmluZSBU WVBFX0JBU0VDTEFTUyh0aGlzdHlwZSxpbmRleCkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5m aWVsZHNbaW5kZXhdLnR5cGUKKyAjZGVmaW5lIFRZUEVfQkFTRUNMQVNTKHRoaXN0eXBlLGluZGV4 KSBUWVBFX0ZJRUxEX1RZUEUodGhpc3R5cGUsIGluZGV4KQogICNkZWZpbmUgVFlQRV9OX0JBU0VD TEFTU0VTKHRoaXN0eXBlKSBUWVBFX0NQTFVTX1NQRUNJRklDKHRoaXN0eXBlKS0+bl9iYXNlY2xh c3NlcwotICNkZWZpbmUgVFlQRV9CQVNFQ0xBU1NfTkFNRSh0aGlzdHlwZSxpbmRleCkgVFlQRV9N QUlOX1RZUEUodGhpc3R5cGUpLT5maWVsZHNbaW5kZXhdLm5hbWUKLUBAIC0xMTMxLDcgKzEyMjYs NyBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGZsb2F0Zm9ybWF0ICpmbG9hdGZvcm1hdHNfaWJtX2xv bmdfZG91YmxlW0JGRF9FTkRJQU5fVU5LTk9XTgotICAgIFVzZSBhbGxvY190eXBlX2FyY2ggdG8g YWxsb2NhdGUgYSB0eXBlIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZS4KLSAgICBVc2UgYWxsb2Nf dHlwZV9jb3B5IHRvIGFsbG9jYXRlIGEgdHlwZSB3aXRoIHRoZSBzYW1lIG93bmVyIGFzIGEKLSAg ICBwcmUtZXhpc3RpbmcgdGVtcGxhdGUgdHlwZSwgbm8gbWF0dGVyIHdoZXRoZXIgb2JqZmlsZSBv ciBnZGJhcmNoLiAgKi8KLS1leHRlcm4gc3RydWN0IHR5cGUgKmFsbG9jX3R5cGUgKHN0cnVjdCBv YmpmaWxlICopOwotK2V4dGVybiBzdHJ1Y3QgdHlwZSAqYWxsb2NfdHlwZSAoc3RydWN0IG9iamZp bGUgKiwgc3RydWN0IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICphbGxvY190eXBlX2Fy Y2ggKHN0cnVjdCBnZGJhcmNoICopOwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqYWxsb2NfdHlwZV9j b3B5IChjb25zdCBzdHJ1Y3QgdHlwZSAqKTsKLSAKLUBAIC0xMjI2LDYgKzEzMjEsMTggQEAgZXh0 ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHR5cGUgKiwKKyAjZGVmaW5lIFRZUEVfQkFTRUNMQVNTX05BTUUodGhpc3R5cGUsaW5kZXgpIFRZ UEVfRklFTERfTkFNRSh0aGlzdHlwZSwgaW5kZXgpCitAQCAtOTc5LDcgKzEwNzgsNiBAQCBleHRl cm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAjZGVmaW5l IEZJRUxEX0JJVFBPUyh0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5iaXRwb3MpCisgI2RlZmluZSBG SUVMRF9TVEFUSUNfUEhZU05BTUUodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MucGh5c25hbWUpCisg I2RlZmluZSBGSUVMRF9TVEFUSUNfUEhZU0FERFIodGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MucGh5 c2FkZHIpCistI2RlZmluZSBGSUVMRF9EV0FSRl9CTE9DSyh0aGlzZmxkKSAoKHRoaXNmbGQpLmxv Yy5kd2FyZl9ibG9jaykKKyAjZGVmaW5lIFNFVF9GSUVMRF9CSVRQT1ModGhpc2ZsZCwgYml0cG9z KQkJCVwKKyAgIChGSUVMRF9MT0NfS0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9CSVRQ T1MsCQlcCisgICAgRklFTERfQklUUE9TICh0aGlzZmxkKSA9IChiaXRwb3MpKQorQEAgLTk4OSw5 ICsxMDg3LDYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5 cGUgKik7CisgI2RlZmluZSBTRVRfRklFTERfUEhZU0FERFIodGhpc2ZsZCwgYWRkcikJCQlcCisg ICAoRklFTERfTE9DX0tJTkQgKHRoaXNmbGQpID0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCQlc CisgICAgRklFTERfU1RBVElDX1BIWVNBRERSICh0aGlzZmxkKSA9IChhZGRyKSkKKy0jZGVmaW5l IFNFVF9GSUVMRF9EV0FSRl9CTE9DSyh0aGlzZmxkLCBhZGRyKQkJCVwKKy0gIChGSUVMRF9MT0Nf S0lORCAodGhpc2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSywJXAorLSAgIEZJRUxE X0RXQVJGX0JMT0NLICh0aGlzZmxkKSA9IChhZGRyKSkKKyAjZGVmaW5lIEZJRUxEX0FSVElGSUNJ QUwodGhpc2ZsZCkgKCh0aGlzZmxkKS5hcnRpZmljaWFsKQorICNkZWZpbmUgRklFTERfQklUU0la RSh0aGlzZmxkKSAoKHRoaXNmbGQpLmJpdHNpemUpCisgCitAQCAtMTAwMiw3ICsxMDk3LDYgQEAg ZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2Rl ZmluZSBUWVBFX0ZJRUxEX0JJVFBPUyh0aGlzdHlwZSwgbikgRklFTERfQklUUE9TIChUWVBFX0ZJ RUxEICh0aGlzdHlwZSwgbikpCisgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTTkFNRSh0 aGlzdHlwZSwgbikgRklFTERfU1RBVElDX1BIWVNOQU1FIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwg bikpCisgI2RlZmluZSBUWVBFX0ZJRUxEX1NUQVRJQ19QSFlTQUREUih0aGlzdHlwZSwgbikgRklF TERfU1RBVElDX1BIWVNBRERSIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCistI2RlZmluZSBU WVBFX0ZJRUxEX0RXQVJGX0JMT0NLKHRoaXN0eXBlLCBuKSBGSUVMRF9EV0FSRl9CTE9DSyAoVFlQ RV9GSUVMRCAodGhpc3R5cGUsIG4pKQorICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklDSUFMKHRo aXN0eXBlLCBuKSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCisgI2Rl ZmluZSBUWVBFX0ZJRUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQRV9G SUVMRCh0aGlzdHlwZSxuKSkKKyAjZGVmaW5lIFRZUEVfRklFTERfUEFDS0VEKHRoaXN0eXBlLCBu KSAoRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKSE9MCkKK0BAIC0xMzMzLDYg KzE0MjcsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0 IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4 dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICos IGludCwgaW50KTsKICAKQEAgLTExMDE3LDcgKzY1ODIsNyBAQCBpbmRleCBiZTZlZDU1Li42YTUx YTRlIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1 Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkJc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJu IHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGlu dCwgaW50KTsKLUBAIC0xMjYyLDYgKzEzNjksOCBAQCBleHRlcm4gaW50IGdldF9kaXNjcmV0ZV9i b3VuZHMgKHN0cnVjdCB0eXBlICosIExPTkdFU1QgKiwgTE9OR0VTVCAqKTsKK0BAIC0xMzY5LDYg KzE0NzUsOCBAQCBleHRlcm4gaW50IGdldF9kaXNjcmV0ZV9ib3VuZHMgKHN0cnVjdCB0eXBlICos IExPTkdFU1QgKiwgTE9OR0VTVCAqKTsKICAKICBleHRlcm4gaW50IGlzX2FuY2VzdG9yIChzdHJ1 Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKQEAgLTExMDI2LDcgKzY1OTEsNyBAQCBpbmRl eCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogIC8qIE92ZXJsb2FkIHJlc29sdXRpb24gKi8KICAK ICAjZGVmaW5lIExFTkdUSF9NQVRDSChidikgKChidiktPnJhbmtbMF0pCi1AQCAtMTMyNCwxMCAr MTQzMywxNSBAQCBleHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmludF90eXBlIChjaGFyICosIGlu dCk7CitAQCAtMTQzMSwxMCArMTUzOSwxMSBAQCBleHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmlu dF90eXBlIChjaGFyICosIGludCk7CiAgCiAgZXh0ZXJuIGh0YWJfdCBjcmVhdGVfY29waWVkX3R5 cGVzX2hhc2ggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKICAKQEAgLTExMDM5LDE0MCArNjYw NCwxNSBAQCBpbmRleCBiZTZlZDU1Li42YTUxYTRlIDEwMDY0NAogIAogK2V4dGVybiB2b2lkIGZy ZWVfYWxsX3R5cGVzICh2b2lkKTsKICsKLStleHRlcm4gdm9pZCB0eXBlX2luY3JlZiAoc3RydWN0 IHR5cGUgKnR5cGUpOwotKwotK2V4dGVybiB2b2lkIHR5cGVfZGVjcmVmIChzdHJ1Y3QgdHlwZSAq dHlwZSk7Ci0rCiAgI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvZ251 LXYzLWFiaS5jIGIvZ2RiL2dudS12My1hYmkuYwotaW5kZXggMGY5ZDQ0ZS4uYzkxMGU4OCAxMDA2 NDQKLS0tLSBhL2dkYi9nbnUtdjMtYWJpLmMKLSsrKyBiL2dkYi9nbnUtdjMtYWJpLmMKLUBAIC0y Niw2ICsyNiw3IEBACi0gI2luY2x1ZGUgImRlbWFuZ2xlLmgiCi0gI2luY2x1ZGUgIm9iamZpbGVz LmgiCi0gI2luY2x1ZGUgInZhbHByaW50LmgiCi0rI2luY2x1ZGUgImMtbGFuZy5oIgotIAotICNp bmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC00NTks MTAgKzQ2MCw4IEBAIGdudXYzX2ZpbmRfbWV0aG9kX2luIChzdHJ1Y3QgdHlwZSAqZG9tYWluLCBD T1JFX0FERFIgdm9mZnNldCwKLSAJCSAgICAgIExPTkdFU1QgYWRqdXN0bWVudCkKLSB7Ci0gICBp bnQgaTsKLS0gIGNvbnN0IGNoYXIgKnBoeXNuYW1lOwotIAotICAgLyogU2VhcmNoIHRoaXMgY2xh c3MgZmlyc3QuICAqLwotLSAgcGh5c25hbWUgPSBOVUxMOwotICAgaWYgKGFkanVzdG1lbnQgPT0g MCkKLSAgICAgewotICAgICAgIGludCBsZW47Ci1AQCAtNTkwLDE1ICs1ODksMjQgQEAgZ251djNf cHJpbnRfbWV0aG9kX3B0ciAoY29uc3QgZ2RiX2J5dGUgKmNvbnRlbnRzLAotIAl7Ci0gCSAgY2hh ciAqZGVtYW5nbGVkX25hbWUgPSBjcGx1c19kZW1hbmdsZSAocGh5c25hbWUsCi0gCQkJCQkJIERN R0xfQU5TSSB8IERNR0xfUEFSQU1TKTsKLS0JICBpZiAoZGVtYW5nbGVkX25hbWUgIT0gTlVMTCkK LSsJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICImdmlydHVhbCAiKTsKLSsJICBpZiAoZGVt YW5nbGVkX25hbWUgPT0gTlVMTCkKLSsJICAgIGZwdXRzX2ZpbHRlcmVkIChwaHlzbmFtZSwgc3Ry ZWFtKTsKLSsJICBlbHNlCi0gCSAgICB7Ci0tCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVh bSwgIiZ2aXJ0dWFsICIpOwotIAkgICAgICBmcHV0c19maWx0ZXJlZCAoZGVtYW5nbGVkX25hbWUs IHN0cmVhbSk7Ci0gCSAgICAgIHhmcmVlIChkZW1hbmdsZWRfbmFtZSk7Ci0tCSAgICAgIHJldHVy bjsKLSAJICAgIH0KLSsJICByZXR1cm47Ci0gCX0KLSAgICAgfQotKyAgZWxzZSBpZiAocHRyX3Zh bHVlICE9IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3VuZCBhIG5vbi12aXJ0dWFsIGZ1bmN0aW9u OiBwcmludCBvdXQgdGhlIHR5cGUuICAqLwotKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgiKCIsIHN0 cmVhbSk7Ci0rICAgICAgY19wcmludF90eXBlICh0eXBlLCAiIiwgc3RyZWFtLCAtMSwgMCk7Ci0r ICAgICAgZnB1dHNfZmlsdGVyZWQgKCIpICIsIHN0cmVhbSk7Ci0rICAgIH0KLSAKLSAgIC8qIFdl IGRpZG4ndCBmaW5kIGl0OyBwcmludCB0aGUgcmF3IGRhdGEuICAqLwotICAgaWYgKHZiaXQpCiBk aWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGludXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwot aW5kZXggZmU4NDhmZi4uOTA1ZGNjMyAxMDA2NDQKK2luZGV4IGZmODM3ZjIuLjE3MTA0ODcgMTAw NjQ0CiAtLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYwogKysrIGIvZ2RiL2kzODYtbGludXgtbmF0 LmMKLUBAIC01ODYsNiArNTg2LDggQEAgaTM4Nl9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3Rl cnMgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCi0gCi0gc3RhdGljIHVuc2lnbmVkIGxvbmcgaTM4 Nl9saW51eF9kcltEUl9DT05UUk9MICsgMV07Ci0gCi0rLyogR2V0IGRlYnVnIHJlZ2lzdGVyIFJF R05VTSB2YWx1ZSBmcm9tIG9ubHkgdGhlIG9uZSBMV1Agb2YgUFRJRC4gICovCi0rCi0gc3RhdGlj IHVuc2lnbmVkIGxvbmcKLSBpMzg2X2xpbnV4X2RyX2dldCAocHRpZF90IHB0aWQsIGludCByZWdu dW0pCi0gewotQEAgLTYxNCw2ICs2MTYsOCBAQCBpMzg2X2xpbnV4X2RyX2dldCAocHRpZF90IHB0 aWQsIGludCByZWdudW0pCi0gICByZXR1cm4gdmFsdWU7Ci0gfQotIAotKy8qIFNldCBkZWJ1ZyBy ZWdpc3RlciBSRUdOVU0gdG8gVkFMVUUgaW4gb25seSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8K LSsKLSBzdGF0aWMgdm9pZAotIGkzODZfbGludXhfZHJfc2V0IChwdGlkX3QgcHRpZCwgaW50IHJl Z251bSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKLSB7Ci1AQCAtNjMwLDYgKzYzNCw4IEBAIGkzODZf bGludXhfZHJfc2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSwgdW5zaWduZWQgbG9uZyB2YWx1 ZSkKLSAgICAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3Qgd3JpdGUgZGVidWcgcmVnaXN0 ZXIiKSk7Ci0gfQotIAotKy8qIFNldCBEUl9DT05UUk9MIHRvIEFERFIgaW4gYWxsIExXUHMgb2Yg TFdQX0xJU1QuICAqLwotKwotIHN0YXRpYyB2b2lkCi0gaTM4Nl9saW51eF9kcl9zZXRfY29udHJv bCAodW5zaWduZWQgbG9uZyBjb250cm9sKQotIHsKLUBAIC02NDEsNiArNjQ3LDggQEAgaTM4Nl9s aW51eF9kcl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9uZyBjb250cm9sKQotICAgICBpMzg2X2xp bnV4X2RyX3NldCAocHRpZCwgRFJfQ09OVFJPTCwgY29udHJvbCk7Ci0gfQotIAotKy8qIFNldCBh ZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gQUREUiBpbiBhbGwgTFdQcyBvZiBMV1BfTElT VC4gICovCi0rCi0gc3RhdGljIHZvaWQKLSBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVn bnVtLCBDT1JFX0FERFIgYWRkcikKLSB7Ci1AQCAtNjU0LDE4ICs2NjIsNTUgQEAgaTM4Nl9saW51 eF9kcl9zZXRfYWRkciAoaW50IHJlZ251bSwgQ09SRV9BRERSIGFkZHIpCi0gICAgIGkzODZfbGlu dXhfZHJfc2V0IChwdGlkLCBEUl9GSVJTVEFERFIgKyByZWdudW0sIGFkZHIpOwotIH0KLSAKLSsv KiBTZXQgYWRkcmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIHplcm8gaW4gYWxsIExXUHMgb2Yg TFdQX0xJU1QuICAqLwotKwotIHN0YXRpYyB2b2lkCi0gaTM4Nl9saW51eF9kcl9yZXNldF9hZGRy IChpbnQgcmVnbnVtKQotIHsKLSAgIGkzODZfbGludXhfZHJfc2V0X2FkZHIgKHJlZ251bSwgMCk7 Ci0gfQotIAotKy8qIEdldCBEUl9TVEFUVVMgZnJvbSBvbmx5IHRoZSBvbmUgTFdQIG9mIElORkVS SU9SX1BUSUQuICAqLwotKwotIHN0YXRpYyB1bnNpZ25lZCBsb25nCi0gaTM4Nl9saW51eF9kcl9n ZXRfc3RhdHVzICh2b2lkKQotIHsKLSAgIHJldHVybiBpMzg2X2xpbnV4X2RyX2dldCAoaW5mZXJp b3JfcHRpZCwgRFJfU1RBVFVTKTsKK0BAIC02OTYsNiArNjk2LDIxIEBAIGkzODZfbGludXhfZHJf dW5zZXRfc3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCisgICAgIH0KICB9CiAgCi0rLyogVW5z ZXQgTUFTSyBiaXRzIGluIERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9u ZyBtYXNrKQotK3sKLSsgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0rICBwdGlkX3QgcHRpZDsKLSsK LSsgIEFMTF9MV1BTIChscCwgcHRpZCkKLSsgICAgewotKyAgICAgIHVuc2lnbmVkIGxvbmcgdmFs dWU7Ci0rICAgICAgCi0rICAgICAgdmFsdWUgPSBpMzg2X2xpbnV4X2RyX2dldCAocHRpZCwgRFJf U1RBVFVTKTsKLSsgICAgICB2YWx1ZSAmPSB+bWFzazsKLSsgICAgICBpMzg2X2xpbnV4X2RyX3Nl dCAocHRpZCwgRFJfU1RBVFVTLCB2YWx1ZSk7Ci0rICAgIH0KLSt9Ci0rCiArLyogU2VlIGkzODZf ZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4X2RyX3Nl dF9jb250cm9sCiArICAgb3IgaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQg bW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQogKyAgIChpMzg2X2xpbnV4X2RyKS4gICovCkBAIC0x MTE5MSw1NiArNjYzMSwxOSBAQCBpbmRleCBmZTg0OGZmLi45MDVkY2MzIDEwMDY0NAogIHN0YXRp YyB2b2lkCiAgaTM4Nl9saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKICB7Ci1AQCAtODM3 LDYgKzg4Miw4IEBAIF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0ICh2b2lkKQotICAgaTM4Nl9k cl9sb3cuc2V0X2FkZHIgPSBpMzg2X2xpbnV4X2RyX3NldF9hZGRyOworQEAgLTg2OCw2ICs4ODMs NyBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKICAgIGkzODZfZHJfbG93LnJl c2V0X2FkZHIgPSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHI7CiAgICBpMzg2X2RyX2xvdy5nZXRf c3RhdHVzID0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVzOwotKyAgaTM4Nl9kcl9sb3cudW5zZXRf c3RhdHVzID0gaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXM7CisgICBpMzg2X2RyX2xvdy51bnNl dF9zdGF0dXMgPSBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKICsgIGkzODZfZHJfbG93LmRl dGFjaCA9IGkzODZfbGludXhfZHJfZGV0YWNoOwogICAgaTM4Nl9zZXRfZGVidWdfcmVnaXN0ZXJf bGVuZ3RoICg0KTsKICAKICAgIC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHB0cmFjZSByZXN1bWUg bWV0aG9kLiAgKi8KIGRpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5j Ci1pbmRleCAzMjViNGRmLi42MzFjY2Q2IDEwMDY0NAoraW5kZXggZmEwY2NlNi4uNDJkZmQxYyAx MDA2NDQKIC0tLSBhL2dkYi9pMzg2LW5hdC5jCiArKysgYi9nZGIvaTM4Ni1uYXQuYwotQEAgLTEz Nyw4ICsxMzcsMTEgQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUgaTM4Nl9kcl9sb3c7Ci0gI2Rl ZmluZSBJMzg2X0RSX0dFVF9SV19MRU4oaSkgXAotICAgKChkcl9jb250cm9sX21pcnJvciA+PiAo RFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRST0xfU0laRSAqIChpKSkpICYgMHgwZikKLSAKLSsv KiBNYXNrIHRoYXQgdGhpcyBJJ3RoIHdhdGNocG9pbnQgaGFzIHRyaWdnZXJlZC4gICovCi0rI2Rl ZmluZSBJMzg2X0RSX1dBVENIX01BU0soaSkJKDEgPDwgKGkpKQotKwotIC8qIERpZCB0aGUgd2F0 Y2hwb2ludCB3aG9zZSBhZGRyZXNzIGlzIGluIHRoZSBJJ3RoIHJlZ2lzdGVyIGJyZWFrPyAgKi8K LS0jZGVmaW5lIEkzODZfRFJfV0FUQ0hfSElUKGkpCShkcl9zdGF0dXNfbWlycm9yICYgKDEgPDwg KGkpKSkKLSsjZGVmaW5lIEkzODZfRFJfV0FUQ0hfSElUKGkpCShkcl9zdGF0dXNfbWlycm9yICYg STM4Nl9EUl9XQVRDSF9NQVNLIChpKSkKLSAKLSAvKiBBIG1hY3JvIHRvIGxvb3Agb3ZlciBhbGwg ZGVidWcgcmVnaXN0ZXJzLiAgKi8KLSAjZGVmaW5lIEFMTF9ERUJVR19SRUdJU1RFUlMoaSkJZm9y IChpID0gMDsgaSA8IERSX05BRERSOyBpKyspCi1AQCAtMzU4LDYgKzM2MSwxMCBAQCBpMzg2X2lu c2VydF9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCB1bnNpZ25lZCBsZW5fcndf Yml0cykKLSAgIGkzODZfZHJfbG93LnNldF9hZGRyIChpLCBhZGRyKTsKLSAgIGkzODZfZHJfbG93 LnNldF9jb250cm9sIChkcl9jb250cm9sX21pcnJvcik7Ci0gCi0rICAvKiBPbmx5IGEgc2FuaXR5 IGNoZWNrIGZvciBsZWZ0b3ZlciBiaXRzIChzZXQgcG9zc2libHkgb25seSBieSBpbmZlcmlvciku ICAqLwotKyAgaWYgKGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cykKLSsgICAgaTM4Nl9kcl9sb3cu dW5zZXRfc3RhdHVzIChJMzg2X0RSX1dBVENIX01BU0sgKGkpKTsKLSsKLSAgIHJldHVybiAwOwot IH0KLSAKLUBAIC0zODcsNiArMzk0LDExIEBAIGkzODZfcmVtb3ZlX2FsaWduZWRfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGFkZHIsIHVuc2lnbmVkIGxlbl9yd19iaXRzKQotIAkgICAgICBpMzg2X2Ry X2xvdy5zZXRfY29udHJvbCAoZHJfY29udHJvbF9taXJyb3IpOwotIAkgICAgICBpZiAoaTM4Nl9k cl9sb3cucmVzZXRfYWRkcikKLSAJCWkzODZfZHJfbG93LnJlc2V0X2FkZHIgKGkpOwotKwotKwkg ICAgICAvKiBTdGF0dXMgbXVzdCBiZSBhbHJlYWR5IHF1ZXJpZWQgZm9yIGVhY2ggTFdQLiAgT3Ro ZXJ3aXNlIGl0IHdpbGwKLSsJICAgICAgICAgYmUgbG9zdCBpbiBhbGwtc3RvcCBtb2RlICsgYnJl YWtwb2ludCBhbHdheXMtaW5zZXJ0ZWQgb2ZmLiAgKi8KLSsJICAgICAgaWYgKGkzODZfZHJfbG93 LnVuc2V0X3N0YXR1cykKLSsJCWkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyAoSTM4Nl9EUl9XQVRD SF9NQVNLIChpKSk7Ci0gCSAgICB9Ci0gCSAgcmV0dmFsID0gMDsKLSAJfQotQEAgLTUyMCw2ICs1 MzIsMTcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4s IGludCB0eXBlKQorQEAgLTUyNyw2ICs1MjcsMTcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQogICAgcmV0dXJuIHJldHZhbDsKICB9 CiAgCkBAIC0xMTI1OCwzNyArNjY2MSw3IEBAIGluZGV4IDMyNWI0ZGYuLjYzMWNjZDYgMTAwNjQ0 CiAgLyogUmV0dXJuIG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9yeSByZWdpb24gdGhh dCBzdGFydHMgYXQKICAgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0 ZXMuICAqLwogIAotQEAgLTU3OCwyOCArNjAxLDcgQEAgc3RhdGljIGludAotIGkzODZfc3RvcHBl ZF9ieV93YXRjaHBvaW50ICh2b2lkKQotIHsKLSAgIENPUkVfQUREUiBhZGRyID0gMDsKLS0gIHJl dHVybiBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzICgmY3VycmVudF90YXJnZXQsICZhZGRyKTsK LS19Ci0tCi0tLyogUmV0dXJuIG5vbi16ZXJvIGlmIHRoZSBpbmZlcmlvciBoYXMgc29tZSBicmVh ay93YXRjaHBvaW50IHRoYXQKLS0gICB0cmlnZ2VyZWQuICAqLwotLQotLXN0YXRpYyBpbnQKLS1p Mzg2X3N0b3BwZWRfYnlfaHdicCAodm9pZCkKLS17Ci0tICBpbnQgaTsKLS0KLS0gIGRyX3N0YXR1 c19taXJyb3IgPSBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOwotLSAgaWYgKG1haW50X3Nob3df ZHIpCi0tICAgIGkzODZfc2hvd19kciAoInN0b3BwZWRfYnlfaHdicCIsIDAsIDAsIGh3X2V4ZWN1 dGUpOwotLQotLSAgQUxMX0RFQlVHX1JFR0lTVEVSUyhpKQotLSAgICB7Ci0tICAgICAgaWYgKEkz ODZfRFJfV0FUQ0hfSElUIChpKSkKLS0JcmV0dXJuIDE7Ci0tICAgIH0KLS0KLS0gIHJldHVybiAw OwotKyAgcmV0dXJuIHRhcmdldF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoJmN1cnJlbnRfdGFyZ2V0 LCAmYWRkcik7Ci0gfQotIAotIC8qIEluc2VydCBhIGhhcmR3YXJlLWFzc2lzdGVkIGJyZWFrcG9p bnQgYXQgQlBfVEdULT5wbGFjZWRfYWRkcmVzcy4KLUBAIC02OTMsNiArNjk1LDcgQEAgaTM4Nl91 c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorQEAgLTY3OSw2ICs2OTAsNyBA QCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKnQpCiAgICB0LT50b19z dG9wcGVkX2RhdGFfYWRkcmVzcyA9IGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3M7CiAgICB0LT50 b19pbnNlcnRfd2F0Y2hwb2ludCA9IGkzODZfaW5zZXJ0X3dhdGNocG9pbnQ7CiAgICB0LT50b19y ZW1vdmVfd2F0Y2hwb2ludCA9IGkzODZfcmVtb3ZlX3dhdGNocG9pbnQ7CkBAIC0xMTI5Nyw4NCAr NjY3MCwzMyBAQCBpbmRleCAzMjViNGRmLi42MzFjY2Q2IDEwMDY0NAogICAgdC0+dG9fcmVtb3Zl X2h3X2JyZWFrcG9pbnQgPSBpMzg2X3JlbW92ZV9od19icmVha3BvaW50OwogIH0KIGRpZmYgLS1n aXQgYS9nZGIvaTM4Ni1uYXQuaCBiL2dkYi9pMzg2LW5hdC5oCi1pbmRleCBmNDliOWY2Li5jZDMx OTU4IDEwMDY0NAoraW5kZXggNzMxN2U3ZC4uZWE5MTRhNSAxMDA2NDQKIC0tLSBhL2dkYi9pMzg2 LW5hdC5oCiArKysgYi9nZGIvaTM4Ni1uYXQuaAotQEAgLTQ5LDE2ICs0OSwyMyBAQCBleHRlcm4g dm9pZCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gICAgZnVu Y3Rpb25zIGFyZToKLSAKLSAgICAgICBzZXRfY29udHJvbCAgICAgICAgICAgICAgLS0gc2V0IHRo ZSBkZWJ1ZyBjb250cm9sIChEUjcpCi0tCQkJCSAgcmVnaXN0ZXIgdG8gYSBnaXZlbiB2YWx1ZQot KwkJCQkgIHJlZ2lzdGVyIHRvIGEgZ2l2ZW4gdmFsdWUgZm9yIGFsbCBMV1BzCitAQCAtNjIsNiAr NjIsMTAgQEAgZXh0ZXJuIHZvaWQgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRf b3BzICopOworICAgICAgIHVuc2V0X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUgc3Bl Y2lmaWVkIGJpdHMgb2YgdGhlIGRlYnVnCisgCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZv ciBhbGwgTFdQcwogIAotICAgICAgIHNldF9hZGRyICAgICAgICAgICAgICAgICAtLSBwdXQgYW4g YWRkcmVzcyBpbnRvIG9uZSBkZWJ1ZwotLQkJCQkgIHJlZ2lzdGVyCi0rCQkJCSAgcmVnaXN0ZXIg Zm9yIGFsbCBMV1BzCi0gCi0gICAgICAgcmVzZXRfYWRkciAgICAgICAgICAgICAgIC0tIHJlc2V0 IHRoZSBhZGRyZXNzIHN0b3JlZCBpbgotLQkJCQkgIG9uZSBkZWJ1ZyByZWdpc3RlcgotKwkJCQkg IG9uZSBkZWJ1ZyByZWdpc3RlciBmb3IgYWxsIExXUHMKLSAKLSAgICAgICBnZXRfc3RhdHVzICAg ICAgICAgICAgICAgLS0gcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZGVidWcKLS0JCQkJICBzdGF0 dXMgKERSNikgcmVnaXN0ZXIuCi0rCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVyIGZvciBjdXJy ZW50IExXUAotKwotKyAgICAgIHVuc2V0X3N0YXR1cyAgICAgICAgICAgICAtLSB1bnNldCB0aGUg c3BlY2lmaWVkIGJpdHMgb2YgdGhlIGRlYnVnCi0rCQkJCSAgc3RhdHVzIChEUjYpIHJlZ2lzdGVy IGZvciBhbGwgTFdQcwotKwogKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBjbGVh ciBhbGwgZGVidWcgcmVnaXN0ZXJzIG9mIG9ubHkgdGhlCiArCQkJCSAgSU5GRVJJT1JfUFRJRCB0 YXNrIHdpdGhvdXQgYWZmZWN0aW5nIGFueQogKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KLSAKKysK ICAgICBBZGRpdGlvbmFsbHksIHRoZSBuYXRpdmUgZmlsZSBzaG91bGQgc2V0IHRoZSBkZWJ1Z19y ZWdpc3Rlcl9sZW5ndGgKICAgICBmaWVsZCB0byA0IG9yIDggZGVwZW5kaW5nIG9uIHRoZSBudW1i ZXIgb2YgYnl0ZXMgdXNlZCBmb3IKLUBAIC03MCw2ICs3Nyw4IEBAIHN0cnVjdCBpMzg2X2RyX2xv d190eXBlCi0gICAgIHZvaWQgKCpzZXRfYWRkcikgKGludCwgQ09SRV9BRERSKTsKKyAgICBkZXVi ZyByZWdpc3RlcnMuICAqLworQEAgLTczLDYgKzc3LDcgQEAgc3RydWN0IGkzODZfZHJfbG93X3R5 cGUKICAgICAgdm9pZCAoKnJlc2V0X2FkZHIpIChpbnQpOwogICAgICB1bnNpZ25lZCBsb25nICgq Z2V0X3N0YXR1cykgKHZvaWQpOwotKyAgICB2b2lkICgqdW5zZXRfc3RhdHVzKSAodW5zaWduZWQg bG9uZyk7CisgICAgIHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsKICsgICAg dm9pZCAoKmRldGFjaCkgKHZvaWQpOwogICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoOwog ICAgfTsKICAKLWRpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwotaW5k ZXggYzlkOThjZi4uMjc3Mzk5YSAxMDA2NDQKLS0tLSBhL2dkYi9pbmZjYWxsLmMKLSsrKyBiL2dk Yi9pbmZjYWxsLmMKLUBAIC00NDEsNiArNDQxLDcgQEAgY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChz dHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBpbnQgbmFyZ3MsIHN0cnVjdCB2YWx1ZSAqKmFyZ3MpCi0g ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKLSAgIHN0cnVjdCBicmVha3BvaW50ICp0ZXJtaW5h dGVfYnAgPSBOVUxMOwotICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICp0bTsKLSsgIHN0cnVjdCBj bGVhbnVwICp0ZXJtaW5hdGVfYnBfY2xlYW51cCA9IE5VTEw7Ci0gICBwdGlkX3QgY2FsbF90aHJl YWRfcHRpZDsKLSAgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0gICBjb25zdCBjaGFyICpuYW1l OwotQEAgLTc3Miw3ICs3NzMsNyBAQCBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKHN0cnVjdCB2YWx1 ZSAqZnVuY3Rpb24sIGludCBuYXJncywgc3RydWN0IHZhbHVlICoqYXJncykKLSAKLSAgIC8qIFJl Z2lzdGVyIGEgY2xlYW4tdXAgZm9yIHVud2luZF9vbl90ZXJtaW5hdGluZ19leGNlcHRpb25fYnJl YWtwb2ludC4gICovCi0gICBpZiAodGVybWluYXRlX2JwKQotLSAgICBtYWtlX2NsZWFudXBfZGVs ZXRlX2JyZWFrcG9pbnQgKHRlcm1pbmF0ZV9icCk7Ci0rICAgIHRlcm1pbmF0ZV9icF9jbGVhbnVw ID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50ICh0ZXJtaW5hdGVfYnApOwotIAotICAg LyogLSBTTklQIC0gU05JUCAtIFNOSVAgLSBTTklQIC0gU05JUCAtIFNOSVAgLSBTTklQIC0gU05J UCAtIFNOSVAgLQotICAgICAgSWYgeW91J3JlIGxvb2tpbmcgdG8gaW1wbGVtZW50IGFzeW5jaHJv bm91cyBkdW1teS1mcmFtZXMsIHRoZW4KLUBAIC05ODcsNiArOTg4LDExIEBAIFdoZW4gdGhlIGZ1 bmN0aW9uIGlzIGRvbmUgZXhlY3V0aW5nLCBHREIgd2lsbCBzaWxlbnRseSBzdG9wLiIpLAotICAg ICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sIF8oIi4uLiBzaG91bGQgbm90 IGJlIGhlcmUiKSk7Ci0gICAgIH0KLSAKLSsgIC8qIElmIHdlIGdldCBoZXJlIGFuZCB0aGUgc3Rk Ojp0ZXJtaW5hdGUoKSBicmVha3BvaW50IGhhcyBiZWVuIHNldCwKLSsgICAgIGl0IGhhcyB0byBi ZSBjbGVhbmVkIG1hbnVhbGx5LiAgKi8KLSsgIGlmICh0ZXJtaW5hdGVfYnApCi0rICAgIGRvX2Ns ZWFudXBzICh0ZXJtaW5hdGVfYnBfY2xlYW51cCk7Ci0rCi0gICAvKiBJZiB3ZSBnZXQgaGVyZSB0 aGUgY2FsbGVkIEZVTkNUSU9OIHJhbiB0byBjb21wbGV0aW9uLAotICAgICAgYW5kIHRoZSBkdW1t eSBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIHBvcHBlZC4gICovCi0gCiBkaWZmIC0tZ2l0IGEvZ2Ri L2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCi1pbmRleCA5ZTk4MjkwLi5mYWIxODkyIDEwMDY0NAor aW5kZXggMjFhMjIzMy4uMzRhMzcxOCAxMDA2NDQKIC0tLSBhL2dkYi9pbmZjbWQuYwogKysrIGIv Z2RiL2luZmNtZC5jCi1AQCAtODAxLDcgKzgwMSw3IEBAIG5leHRpX2NvbW1hbmQgKGNoYXIgKmNv dW50X3N0cmluZywgaW50IGZyb21fdHR5KQorQEAgLTgwNSw3ICs4MDUsNyBAQCBuZXh0aV9jb21t YW5kIChjaGFyICpjb3VudF9zdHJpbmcsIGludCBmcm9tX3R0eSkKICAgIHN0ZXBfMSAoMSwgMSwg Y291bnRfc3RyaW5nKTsKICB9CiAgCkBAIC0xMTM4Myw3ICs2NzA1LDcgQEAgaW5kZXggOWU5ODI5 MC4uZmFiMTg5MiAxMDA2NDQKICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZv aWQgKmFyZykKICB7CiAgICBpbnQgdGhyZWFkID0gKiAoaW50ICopIGFyZzsKLUBAIC04NDEsMTAg Kzg0MSwxMyBAQCBzdGVwXzEgKGludCBza2lwX3N1YnJvdXRpbmVzLCBpbnQgc2luZ2xlX2luc3Qs IGNoYXIgKmNvdW50X3N0cmluZykKK0BAIC04NDUsMTAgKzg0NSwxMyBAQCBzdGVwXzEgKGludCBz a2lwX3N1YnJvdXRpbmVzLCBpbnQgc2luZ2xlX2luc3QsIGNoYXIgKmNvdW50X3N0cmluZykKICAK ICAgIGlmICghc2luZ2xlX2luc3QgfHwgc2tpcF9zdWJyb3V0aW5lcykJCS8qIGxlYXZlIHNpIGNv bW1hbmQgYWxvbmUgKi8KICAgICAgewpAQCAtMTEzOTcsNyArNjcxOSw3IEBAIGluZGV4IDllOTgy OTAuLmZhYjE4OTIgMTAwNjQ0CiAgCiAgICAgICAgbWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2pt cF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwogICAgICB9Ci1AQCAtMTE5Myw2ICsxMTk2 LDE1IEBAIHNpZ25hbF9jb21tYW5kIChjaGFyICpzaWdudW1fZXhwLCBpbnQgZnJvbV90dHkpCitA QCAtMTE5Nyw2ICsxMjAwLDE1IEBAIHNpZ25hbF9jb21tYW5kIChjaGFyICpzaWdudW1fZXhwLCBp bnQgZnJvbV90dHkpCiAgICBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgb3Vyc2lnLCAwKTsKICB9 CiAgCkBAIC0xMTQxMyw3ICs2NzM1LDcgQEAgaW5kZXggOWU5ODI5MC4uZmFiMTg5MiAxMDA2NDQK ICAvKiBQcm9jZWVkIHVudGlsIHdlIHJlYWNoIGEgZGlmZmVyZW50IHNvdXJjZSBsaW5lIHdpdGgg cGMgZ3JlYXRlciB0aGFuCiAgICAgb3VyIGN1cnJlbnQgb25lIG9yIGV4aXQgdGhlIGZ1bmN0aW9u LiAgV2Ugc2tpcCBjYWxscyBpbiBib3RoIGNhc2VzLgogIAotQEAgLTEyMDksNiArMTIyMSw4IEBA IHVudGlsX25leHRfY29tbWFuZCAoaW50IGZyb21fdHR5KQorQEAgLTEyMTMsNiArMTIyNSw4IEBA IHVudGlsX25leHRfY29tbWFuZCAoaW50IGZyb21fdHR5KQogICAgc3RydWN0IHN5bWJvbCAqZnVu YzsKICAgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOwogICAgc3RydWN0IHRocmVhZF9pbmZv ICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKQEAgLTExNDIyLDcgKzY3NDQsNyBAQCBpbmRleCA5 ZTk4MjkwLi5mYWIxODkyIDEwMDY0NAogIAogICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7CiAg ICBzZXRfc3RlcF9mcmFtZSAoKTsKLUBAIC0xMjQ0LDcgKzEyNTgsMTkgQEAgdW50aWxfbmV4dF9j b21tYW5kIChpbnQgZnJvbV90dHkpCitAQCAtMTI0OCw3ICsxMjYyLDE5IEBAIHVudGlsX25leHRf Y29tbWFuZCAoaW50IGZyb21fdHR5KQogIAogICAgdHAtPnN0ZXBfbXVsdGkgPSAwOwkJLyogT25s eSBvbmUgY2FsbCB0byBwcm9jZWVkICovCiAgCkBAIC0xMTQ0Miw3ICs2NzY0LDcgQEAgaW5kZXgg OWU5ODI5MC4uZmFiMTg5MiAxMDA2NDQKICB9CiAgCiAgc3RhdGljIHZvaWQKLUBAIC0xNDIxLDYg KzE0NDcsNyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKK0BAIC0x NDI1LDYgKzE0NTEsNyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykK ICAgIGlmIChicyAhPSBOVUxMICYmIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKICAgICAgb2JzZXJ2 ZXJfbm90aWZ5X25vcm1hbF9zdG9wIChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7CiAgICBkZWxl dGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludCk7CkBAIC0xMTQ1MCw3ICs2NzcyLDcgQEAgaW5k ZXggOWU5ODI5MC4uZmFiMTg5MiAxMDA2NDQKICB9CiAgCiAgc3RhdGljIHZvaWQKLUBAIC0xNTA0 LDYgKzE1MzEsNyBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC0xNTA4LDYgKzE1MzUsNyBAQCBmaW5pc2hfZm9y d2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK ICAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50OwogICAgc3RydWN0IGNsZWFudXAgKm9s ZF9jaGFpbjsKICAgIHN0cnVjdCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb25fYXJncyAqY2Fy Z3M7CkBAIC0xMTQ1OCw3ICs2NzgwLDcgQEAgaW5kZXggOWU5ODI5MC4uZmFiMTg5MiAxMDA2NDQK ICAKICAgIHNhbCA9IGZpbmRfcGNfbGluZSAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksIDApOwogICAg c2FsLnBjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7Ci1AQCAtMTUxNCw2ICsxNTQyLDEwIEBAIGZp bmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lKQorQEAgLTE1MTgsNiArMTU0NiwxMCBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5 bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAKICAgIG9sZF9jaGFp biA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtwb2ludCk7CiAgCkBAIC0x MTQ2NywxMyArNjc4OSwxMyBAQCBpbmRleCA5ZTk4MjkwLi5mYWIxODkyIDEwMDY0NAogKyAgbWFr ZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwog KwogICAgdHAtPnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9wX3JlZ2lz dGVycywgcGxlYXNlLi4uICAqLwotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEsIFRBUkdFVF9T SUdOQUxfREVGQVVMVCwgMCk7CisgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdzKSk7 CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2luZmVyaW9yLmggYi9nZGIvaW5mZXJpb3IuaAotaW5kZXgg ZjFiNWQxNy4uMzFhZGQ3ZCAxMDA2NDQKK2luZGV4IDk3OThlZjEuLmU5NzgzZmIgMTAwNjQ0CiAt LS0gYS9nZGIvaW5mZXJpb3IuaAogKysrIGIvZ2RiL2luZmVyaW9yLmgKLUBAIC0yNzIsNiArMjcy LDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF9jb21tYW5kIChjaGFyICphcmdzLCBp bnQgZnJvbV90dHkpOworQEAgLTI3OSw2ICsyNzksOCBAQCBleHRlcm4gdm9pZCBpbnRlcnJ1cHRf dGFyZ2V0X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSk7CiAgCiAgZXh0ZXJuIHZv aWQgaW50ZXJydXB0X3RhcmdldF8xIChpbnQgYWxsX3RocmVhZHMpOwogIApAQCAtMTE0ODMsNyAr NjgwNSw3IEBAIGluZGV4IGYxYjVkMTcuLjMxYWRkN2QgMTAwNjQ0CiAgCiAgZXh0ZXJuIHZvaWQg bm90aWNlX25ld19pbmZlcmlvciAocHRpZF90LCBpbnQsIGludCk7CiBkaWZmIC0tZ2l0IGEvZ2Ri L2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCi1pbmRleCBmZjdjNmI5Li45ZDI5YjE1IDEwMDY0NAor aW5kZXggNDI2YjgxNi4uYmQ2NTI1OCAxMDA2NDQKIC0tLSBhL2dkYi9pbmZydW4uYwogKysrIGIv Z2RiL2luZnJ1bi5jCiBAQCAtNDUsNiArNDUsOCBAQApAQCAtMTE0OTUsNyArNjgxNyw3IEBAIGlu ZGV4IGZmN2M2YjkuLjlkMjliMTUgMTAwNjQ0CiAgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICAj aW5jbHVkZSAibWkvbWktY29tbW9uLmgiCiAgI2luY2x1ZGUgImV2ZW50LXRvcC5oIgotQEAgLTE3 ODIsNiArMTc4NCw4IEBAIHN0YXRpYyB2b2lkIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50 X2F0X3NhbCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtMjAxMyw2ICsyMDE1LDggQEAg c3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRfc2FsIChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkJCQkgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc3Jfc2Fs LAogIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKICBzdGF0aWMgdm9pZCBpbnNlcnRf bG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsK QEAgLTExNTA0LDcgKzY4MjYsNyBAQCBpbmRleCBmZjdjNmI5Li45ZDI5YjE1IDEwMDY0NAogIAog IHN0YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0 ZSAqZWNzKTsKICBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0cnVjdCBleGVjdXRpb25f Y29udHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC0yNjg3LDYgKzI2OTEsMTAgQEAgaGFuZGxlX2luZmVy aW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKK0BAIC0yOTQy LDYgKzI5NDYsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcykKICAKICAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAo Z2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CiAgCkBAIC0xMTUxMiwxMCArNjgzNCwx MCBAQCBpbmRleCBmZjdjNmI5Li45ZDI5YjE1IDEwMDY0NAogKwkgY29uZnVzZSBicHN0YXRfc3Rv cF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLwogKyAgICAgIHdhdGNocG9p bnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOwogKwotICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5z dG9wX2Jwc3RhdCA9IGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RvcF9wYywgZWNzLT5wdGlkKTsKLSAK LSAgICAgICBlY3MtPnJhbmRvbV9zaWduYWwgPSAhYnBzdGF0X2V4cGxhaW5zX3NpZ25hbCAoZWNz LT5ldmVudF90aHJlYWQtPnN0b3BfYnBzdGF0KTsKLUBAIC0yNzI0LDYgKzI3MzIsMTAgQEAgaGFu ZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykK KyAgICAgICBlY3MtPmV2ZW50X3RocmVhZC0+c3RvcF9icHN0YXQKKyAJPSBicHN0YXRfc3RvcF9z dGF0dXMgKGdldF9yZWdjYWNoZV9hc3BhY2UgKGdldF9jdXJyZW50X3JlZ2NhY2hlICgpKSwKKyAJ CQkgICAgICBzdG9wX3BjLCBlY3MtPnB0aWQpOworQEAgLTMwMjYsNiArMzAzNCwxMCBAQCBoYW5k bGVfaW5mZXJpb3JfZXZlbnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQog IAogICAgICAgIHN0b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hl IChlY3MtPnB0aWQpKTsKICAKQEAgLTExNTIzLDI5ICs2ODQ1LDEwIEBAIGluZGV4IGZmN2M2Yjku LjlkMjliMTUgMTAwNjQ0CiArCSBjb25mdXNlIGJwc3RhdF9zdG9wX3N0YXR1cyBhbmQgYnBzdGF0 X2V4cGxhaW5zX3NpZ25hbC4gICovCiArICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVkICgmZWNz LT53cyk7CiArCi0gICAgICAgLyogVGhpcyBjYXVzZXMgdGhlIGV2ZW50cG9pbnRzIGFuZCBzeW1i b2wgdGFibGUgdG8gYmUgcmVzZXQuCi0gICAgICAgICAgTXVzdCBkbyB0aGlzIG5vdywgYmVmb3Jl IHRyeWluZyB0byBkZXRlcm1pbmUgd2hldGhlciB0bwotICAgICAgICAgIHN0b3AuICAqLwotQEAg LTI4NDUsNiArMjg1Nyw5IEBAIHRhcmdldHMgc2hvdWxkIGFkZCBuZXcgdGhyZWFkcyB0byB0aGUg dGhyZWFkIGxpc3QgdGhlbXNlbHZlcyBpbiBub24tc3RvcCBtb2RlLiIpCi0gICAgIHsKLSAgICAg ICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5w dGlkKTsKLSAgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNo IChyZWdjYWNoZSk7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IHNhdmVfaW5m ZXJpb3JfcHRpZCAoKTsKLSsKLSsgICAgICBpbmZlcmlvcl9wdGlkID0gZWNzLT5wdGlkOwotIAot ICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImluZnJ1bjogc3RvcF9wYyA9 ICVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIHN0 b3BfcGMpKTsKLUBAIC0yODYxLDYgKzI4NzYsOCBAQCB0YXJnZXRzIHNob3VsZCBhZGQgbmV3IHRo cmVhZHMgdG8gdGhlIHRocmVhZCBsaXN0IHRoZW1zZWx2ZXMgaW4gbm9uLXN0b3AgbW9kZS4iKQot ICAgICAgICAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJpbmZydW46IChubyBkYXRhIGFkZHJlc3MgYXZhaWxhYmxl KVxuIik7Ci0gCX0KLSsKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAgICAgfQor ICAgICAgIC8qIERvIHdoYXRldmVyIGlzIG5lY2Vzc2FyeSB0byB0aGUgcGFyZW50IGJyYW5jaCBv ZiB0aGUgdmZvcmsuICAqLworICAgICAgIGhhbmRsZV92Zm9ya19jaGlsZF9leGVjX29yX2V4aXQg KDEpOwogIAotICAgaWYgKHN0ZXBwaW5nX3Bhc3Rfc2luZ2xlc3RlcF9icmVha3BvaW50KQotQEAg LTM0NjgsMjMgKzM0ODUsMzMgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CitAQCAtMzc4NCwy MyArMzc5NiwzMyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoKICAKICAJZWNzLT5ldmVudF90 aHJlYWQtPnN0ZXBwaW5nX292ZXJfYnJlYWtwb2ludCA9IDE7CiAgCkBAIC0xMTU5MSw3ICs2ODk0 LDcgQEAgaW5kZXggZmY3YzZiOS4uOWQyOWIxNSAxMDA2NDQKICAJa2VlcF9nb2luZyAoZWNzKTsK ICAJcmV0dXJuOwogIAotQEAgLTM0OTYsNiArMzUyMyw1MyBAQCBpbmZydW46IEJQU1RBVF9XSEFU X1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7CitA QCAtMzgxMiw2ICszODM0LDUzIEBAIGluZnJ1bjogQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBfUkVT VU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4iKTsKICAJZ2RiX2Fzc2VydCAoZWNz LT5ldmVudF90aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7CiAgCWRlbGV0 ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CiAgCkBAIC0xMTY0 NSw3ICs2OTQ4LDcgQEAgaW5kZXggZmY3YzZiOS4uOWQyOWIxNSAxMDA2NDQKICAJZWNzLT5ldmVu dF90aHJlYWQtPnN0b3Bfc3RlcCA9IDE7CiAgCXByaW50X3N0b3BfcmVhc29uIChFTkRfU1RFUFBJ TkdfUkFOR0UsIDApOwogIAlzdG9wX3N0ZXBwaW5nIChlY3MpOwotQEAgLTQ1MDAsNiArNDU3NCw5 NiBAQCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gsIENPUkVfQUREUiBwYykKK0BAIC00ODMxLDYgKzQ5MDAsOTYgQEAgaW5zZXJ0X2xvbmdq bXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIg cGMpCiAgICAgIHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMsIGJw X2xvbmdqbXBfcmVzdW1lKTsKICB9CiAgCkBAIC0xMTc0MiwxNyArNzA0NSw4IEBAIGluZGV4IGZm N2M2YjkuLjlkMjliMTUgMTAwNjQ0CiAgc3RhdGljIHZvaWQKICBzdG9wX3N0ZXBwaW5nIChzdHJ1 Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKICB7Ci1AQCAtNDU2OCw2ICs0NzMyLDgg QEAga2VlcF9nb2luZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCSAg ICB9Ci0gCSAgaWYgKGUucmVhc29uIDwgMCkKLSAJICAgIHsKLSsJICAgICAgaWYgKGRlYnVnX2lu ZnJ1bikKLSsJCWV4Y2VwdGlvbl9mcHJpbnRmIChnZGJfc3RkbG9nLCBlLCAiaW5mcnVuOiBleGNl cHRpb24gd2hpbGUgaW5zZXJ0aW5nIGJyZWFrcG9pbnRzOiAiKTsKLSAJICAgICAgc3RvcF9zdGVw cGluZyAoZWNzKTsKLSAJICAgICAgcmV0dXJuOwotIAkgICAgfQogZGlmZiAtLWdpdCBhL2dkYi9q di1sYW5nLmMgYi9nZGIvanYtbGFuZy5jCi1pbmRleCA2YjY4ZTdkLi41MDk1MTgwIDEwMDY0NAor aW5kZXggMjRiNjY3My4uMjJlZDk2MCAxMDA2NDQKIC0tLSBhL2dkYi9qdi1sYW5nLmMKICsrKyBi L2dkYi9qdi1sYW5nLmMKIEBAIC0xMTIxLDYgKzExMjEsNyBAQCBjb25zdCBzdHJ1Y3QgZXhwX2Rl c2NyaXB0b3IgZXhwX2Rlc2NyaXB0b3JfamF2YSA9CkBAIC0xMTc2MywyMjggKzcwNTcsMTQgQEAg aW5kZXggNmI2OGU3ZC4uNTA5NTE4MCAxMDA2NDQKICAgIG9wX25hbWVfc3RhbmRhcmQsCiAgICBk dW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkLAogICAgZXZhbHVhdGVfc3ViZXhwX2phdmEKLWRpZmYg LS1naXQgYS9nZGIvbGFuZ3VhZ2UuaCBiL2dkYi9sYW5ndWFnZS5oCi1pbmRleCBjNjUwZTA3Li42 NjBmZGY2IDEwMDY0NAotLS0tIGEvZ2RiL2xhbmd1YWdlLmgKLSsrKyBiL2dkYi9sYW5ndWFnZS5o Ci1AQCAtMjM3LDcgKzIzNyw2IEBAIHN0cnVjdCBsYW5ndWFnZV9kZWZuCi0gICAgICAgIHZhcmlh Ymxlcy4gICovCi0gCi0gICAgIHN0cnVjdCBzeW1ib2wgKigqbGFfbG9va3VwX3N5bWJvbF9ub25s b2NhbCkgKGNvbnN0IGNoYXIgKiwKLS0JCQkJCQkgY29uc3QgY2hhciAqLAotIAkJCQkJCSBjb25z dCBzdHJ1Y3QgYmxvY2sgKiwKLSAJCQkJCQkgY29uc3QgZG9tYWluX2VudW0pOwotIAotZGlmZiAt LWdpdCBhL2dkYi9saW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKLWluZGV4IDNlOTQzYTEuLmI5 NmQ0MjUgMTAwNjQ0Ci0tLS0gYS9nZGIvbGluZXNwZWMuYwotKysrIGIvZ2RiL2xpbmVzcGVjLmMK LUBAIC0zMCw2ICszMCw3IEBACi0gI2luY2x1ZGUgInZhbHVlLmgiCi0gI2luY2x1ZGUgImNvbXBs ZXRlci5oIgotICNpbmNsdWRlICJjcC1hYmkuaCIKLSsjaW5jbHVkZSAiY3Atc3VwcG9ydC5oIgot ICNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgotICNpbmNsdWRlICJibG9jay5oIgotICNpbmNsdWRl ICJvYmpjLWxhbmcuaCIKLUBAIC04MzksMTMgKzg0MCwzMyBAQCBkZWNvZGVfbGluZV8xIChjaGFy ICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3Qgc3ltdGFiICpkZWZhdWx0X3N5bXRh YiwKLSAgICAgfQotICAgZWxzZSBpZiAocGFyZW5fcG9pbnRlciAhPSBOVUxMKQotICAgICB7Ci0t ICAgICAgcCA9IHBhcmVuX3BvaW50ZXIgKyAxOwotKyAgICAgIC8qIFdlIG5lZWQgdG8gZGVhbCB3 aXRoIG1ldGhvZCBhbmQgZnVuY3Rpb24gb3ZlcmxvYWRzCi0rCSB3aXRoIG5vIHBhcmFtZXRlcnMu IEdkYiBhbmQgZ2NjIChhbmQgd2hvIGtub3dzIGFib3V0IG90aGVyCi0rCSBjb21waWxlcnMpIGFy ZSB2ZXJ5IGluY29uc2lzdGVudCB3aXRoIHRoZSBrZXl3b3JkICJ2b2lkIi4KLSsJIENhbm9uaWNh bGl6aW5nIEMrKyB0eXBlcyBpcyBpbnN1ZmZpY2llbnQgaW4gdGhpcyBjYXNlLCBzaW5jZQotKwkg d2Ugc3RpbGwgbmVlZCB0byBlbmZvcmNlIHRoZSBwcmVzZW5jZSAob3IgbGFjayB0aGVyZW9mKSBv ZgotKwkgInZvaWQiLiBGb3Igc2ltcGxpY2l0eSwgb21pdCB0aGUga2V5d29yZCAidm9pZCIgaWYg cHJlc2VudC4gKi8KLSsgICAgICBpZiAoc3RybmNtcCAocGFyZW5fcG9pbnRlciAtIDUsICIodm9p ZCkiLCA2KSA9PSAwKQotKwl7Ci0rCSAgY2hhciAqYSwgKmI7Ci0rCSAgYSA9IHBhcmVuX3BvaW50 ZXIgLSA0OwotKwkgIGIgPSBwYXJlbl9wb2ludGVyOwotKwkgIHdoaWxlICgoKihhKyspID0gKihi KyspKSAhPSAnXDAnKSA7Ci0rCSAgKmEgPSAnXDAnOwotKwkgIHAgPSBwYXJlbl9wb2ludGVyIC0g MzsKLSsJfQotKyAgICAgIGVsc2UKLSsJcCA9IHBhcmVuX3BvaW50ZXIgKyAxOwotICAgICB9Ci0g ICBlbHNlCi0gICAgIHsKLSAgICAgICBwID0gc2tpcF9xdW90ZWQgKCphcmdwdHIpOwotICAgICB9 Ci0gCi0rICAvKiBNYWtlIHN1cmUgd2Uga2VlcCBpbXBvcnRhbnQga2V3b3JkcyBsaWtlICJjb25z dCIgKi8KLSsgIGlmIChzdHJuY21wIChwLCAiIGNvbnN0IiwgNikgPT0gMCkKLSsgICAgcCArPSA2 OwotKwotICAgLyogS2VlcCBhbnkgdGVtcGxhdGUgcGFyYW1ldGVycyAqLwotICAgaWYgKCpwID09 ICc8JykKLSAgICAgcCA9IGZpbmRfdGVtcGxhdGVfbmFtZV9lbmQgKHApOwotQEAgLTEyNTcsNiAr MTI3OCw5IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGlu ZSwgY2hhciAqKipjYW5vbmljYWwsCi0gICAgICAgLyogTW92ZSBwb2ludGVyIGFoZWFkIHRvIG5l eHQgZG91YmxlLWNvbG9uLiAgKi8KLSAgICAgICB3aGlsZSAoKnAgJiYgKHBbMF0gIT0gJyAnKSAm JiAocFswXSAhPSAnXHQnKSAmJiAocFswXSAhPSAnXCcnKSkKLSAJewotKwkgIGlmIChjdXJyZW50 X2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKLSsJICAgIHAgKz0gY3Bf dmFsaWRhdGVfb3BlcmF0b3IgKHApOwotKwotIAkgIGlmIChwWzBdID09ICc8JykKLSAJICAgIHsK LSAJICAgICAgdGVtcF9lbmQgPSBmaW5kX3RlbXBsYXRlX25hbWVfZW5kIChwKTsKLUBAIC0xMzM0 LDYgKzEzNTgsMTUgQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmly c3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwKLSAJICB3aGlsZSAoKnAgJiYgKnAgIT0gJyAnICYm ICpwICE9ICdcdCcgJiYgKnAgIT0gJywnICYmICpwICE9ICc6JykKLSAJICAgIHArKzsKLSAJICAv KiBBdCB0aGlzIHBvaW50IHAtPiIiLiAgU3RyaW5nIGVuZGVkLiAgKi8KLSsJICAvKiBOb3BlLCBD Kysgb3BlcmF0b3JzIGNvdWxkIGhhdmUgc3BhY2VzIGluIHRoZW0KLSsJICAgICAoImZvbzo6b3Bl cmF0b3IgPCIgb3IgImZvbzo6b3BlcmF0b3IgZGVsZXRlIFtdIikuCi0rCSAgICAgSSBhcG9sb2dp emUsIHRoaXMgaXMgYSBiaXQgaGFja3kuLi4gICovCi0rCSAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2Ut PmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCi0rCSAgICAgICYmICpwID09ICcgJyAmJiBw IC0gOCAtICphcmdwdHIgKyAxID4gMCkKLSsJICAgIHsKLSsJICAgICAgLyogVGhlIGFib3ZlIGxv b3AgaGFzIGFscmVhZHkgc3dhbGxvd2VkICJvcGVyYXRvciIuICAqLwotKwkgICAgICBwICs9IGNw X3ZhbGlkYXRlX29wZXJhdG9yIChwIC0gOCkgLSA4OwotKwkgICAgfQotIAl9Ci0gCi0gICAgICAg LyogQWxsb2NhdGUgb3VyIG93biBjb3B5IG9mIHRoZSBzdWJzdHJpbmcgYmV0d2VlbiBhcmdwdHIg YW5kCi1AQCAtMTQwNyw2ICsxNDQwLDcgQEAgbG9va3VwX3ByZWZpeF9zeW0gKGNoYXIgKiphcmdw dHIsIGNoYXIgKnApCi0gewotICAgY2hhciAqcDE7Ci0gICBjaGFyICpjb3B5OwotKyAgc3RydWN0 IHN5bWJvbCAqc3ltOwotIAotICAgLyogRXh0cmFjdCB0aGUgY2xhc3MgbmFtZS4gICovCi0gICBw MSA9IHA7Ci1AQCAtMTQyNSw3ICsxNDU5LDI2IEBAIGxvb2t1cF9wcmVmaXhfc3ltIChjaGFyICoq YXJncHRyLCBjaGFyICpwKQotICAgLyogQXQgdGhpcyBwb2ludCBwMS0+Ijo6aW5BOjpmdW4iLCBw LT4iaW5BOjpmdW4iIGNvcHktPiJBQUEiLAotICAgICAgYXJncHRyLT4iaW5BOjpmdW4iICovCi0g Ci0tICByZXR1cm4gbG9va3VwX3N5bWJvbCAoY29weSwgMCwgU1RSVUNUX0RPTUFJTiwgMCk7Ci0r ICBzeW0gPSBsb29rdXBfc3ltYm9sIChjb3B5LCAwLCBTVFJVQ1RfRE9NQUlOLCAwKTsKLSsgIGlm IChzeW0gPT0gTlVMTCkKLSsgICAgewotKyAgICAgIC8qIFR5cGVkZWZzIGFyZSBpbiBWQVJfRE9N QUlOIHNvIHRoZSBhYm92ZSBzeW1ib2wgbG9va3VwIHdpbGwKLSsJIGZhaWwgd2hlbiB0aGUgdXNl ciBhdHRlbXB0cyB0byBsb29rdXAgYSBtZXRob2Qgb2YgYSBjbGFzcwotKwkgdmlhIGEgdHlwZWRl ZidkIG5hbWUgKE5PVCB2aWEgdGhlIGNsYXNzZXMgbmFtZSwgd2hpY2ggaXMgYWxyZWFkeQotKwkg aGFuZGxlZCBpbiBzeW1ib2xfbWF0Y2hlc19kb21haW4pLiAgU28gdHJ5IHRoZSBsb29rdXAgYWdh aW4KLSsJIHVzaW5nIFZBUl9ET01BSU4gKHdoZXJlIHR5cGVkZWZzIGxpdmUpIGFuZCBkb3VibGUt Y2hlY2sgdGhhdCB3ZQotKwkgZm91bmQgYSBzdHJ1Y3QvY2xhc3MgdHlwZS4gICovCi0rICAgICAg c3RydWN0IHN5bWJvbCAqcyA9IGxvb2t1cF9zeW1ib2wgKGNvcHksIDAsIFZBUl9ET01BSU4sIDAp OwotKyAgICAgIGlmIChzICE9IE5VTEwpCi0rCXsKLSsJICBzdHJ1Y3QgdHlwZSAqdCA9IFNZTUJP TF9UWVBFIChzKTsKLSsJICBDSEVDS19UWVBFREVGICh0KTsKLSsJICBpZiAoVFlQRV9DT0RFICh0 KSA9PSBUWVBFX0NPREVfU1RSVUNUKQotKwkgICAgcmV0dXJuIHM7Ci0rCX0KLSsgICAgfQotKwot KyAgcmV0dXJuIHN5bTsKLSB9Ci0gCi0gLyogVGhpcyBmaW5kcyB0aGUgbWV0aG9kIENPUFkgaW4g dGhlIGNsYXNzIHdob3NlIHR5cGUgaXMgVCBhbmQgd2hvc2UKLUBAIC0xNDc0LDI2ICsxNTI3LDE2 IEBAIGZpbmRfbWV0aG9kIChpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwgY2hh ciAqc2F2ZWRfYXJnLAotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBjaGFyICp0bXA7 Ci0tCi0tICAgICAgaWYgKGlzX29wZXJhdG9yX25hbWUgKGNvcHkpKQotLQl7Ci0tCSAgdG1wID0g KGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNvcHkgKyAzKSArIDkpOwotLQkgIHN0cmNweSAodG1w LCAib3BlcmF0b3IgIik7Ci0tCSAgc3RyY2F0ICh0bXAsIGNvcHkgKyAzKTsKLS0JfQotLSAgICAg IGVsc2UKLS0JdG1wID0gY29weTsKLSAgICAgICBpZiAobm90X2ZvdW5kX3B0cikKLSAgICAgICAg ICpub3RfZm91bmRfcHRyID0gMTsKLS0gICAgICBpZiAodG1wWzBdID09ICd+JykKLSsgICAgICBp ZiAoY29weVswXSA9PSAnficpCi0gCWNwbHVzcGx1c19lcnJvciAoc2F2ZWRfYXJnLAotIAkJCSAi dGhlIGNsYXNzIGAlcycgZG9lcyBub3QgaGF2ZSBkZXN0cnVjdG9yIGRlZmluZWRcbiIsCi0gCQkJ IFNZTUJPTF9QUklOVF9OQU1FIChzeW1fY2xhc3MpKTsKLSAgICAgICBlbHNlCi0gCWNwbHVzcGx1 c19lcnJvciAoc2F2ZWRfYXJnLAotIAkJCSAidGhlIGNsYXNzICVzIGRvZXMgbm90IGhhdmUgYW55 IG1ldGhvZCBuYW1lZCAlc1xuIiwKLS0JCQkgU1lNQk9MX1BSSU5UX05BTUUgKHN5bV9jbGFzcyks IHRtcCk7Ci0rCQkJIFNZTUJPTF9QUklOVF9OQU1FIChzeW1fY2xhc3MpLCBjb3B5KTsKLSAgICAg fQotIH0KLSAKLUBAIC0xNzgwLDcgKzE4MjMsNyBAQCBzeW1ib2xfZm91bmQgKGludCBmdW5maXJz dGxpbmUsIGNoYXIgKioqY2Fub25pY2FsLCBjaGFyICpjb3B5LAotIAl7Ci0gCSAgc3RydWN0IGJs b2NrdmVjdG9yICpidiA9IEJMT0NLVkVDVE9SIChTWU1CT0xfU1lNVEFCIChzeW0pKTsKLSAJICBz dHJ1Y3QgYmxvY2sgKmIgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIFNUQVRJQ19CTE9DSyk7Ci0t CSAgaWYgKGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIE5VTEwsIFZBUl9ET01BSU4pICE9 IE5VTEwpCi0rCSAgaWYgKGxvb2t1cF9ibG9ja19zeW1ib2wgKGIsIGNvcHksIFZBUl9ET01BSU4p ICE9IE5VTEwpCi0gCSAgICBidWlsZF9jYW5vbmljYWxfbGluZV9zcGVjICh2YWx1ZXMuc2Fscywg Y29weSwgY2Fub25pY2FsKTsKLSAJfQotICAgICAgIHJldHVybiB2YWx1ZXM7CiBkaWZmIC0tZ2l0 IGEvZ2RiL2xpbnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCA5OGY2MzQ3Li4wOTA3 ZjAzIDEwMDY0NAoraW5kZXggMDM1NjNjZC4uODE0NTYyOSAxMDA2NDQKIC0tLSBhL2dkYi9saW51 eC1uYXQuYwogKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtMTcxMCw2ICsxNzEwLDcgQEAgcmVz dW1lX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLCB2b2lkICpkYXRhKQotICAgICAgIGxw LT5zdG9wcGVkID0gMDsKLSAgICAgICBscC0+c3RlcCA9IDA7Ci0gICAgICAgbWVtc2V0ICgmbHAt PnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKLSsgICAgICBscC0+d2F0Y2hwb2lu dF9oaXRfc2V0ID0gMDsKLSAgICAgfQotICAgZWxzZSBpZiAobHAtPnN0b3BwZWQgJiYgZGVidWdf bGludXhfbmF0KQotICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJSQzogTm90 IHJlc3VtaW5nIHNpYmxpbmcgJXMgKGhhcyBwZW5kaW5nKVxuIiwKLUBAIC0xODQ3LDYgKzE4NDgs NyBAQCBsaW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotIAotICAgbGlu dXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcHRpZCwgc3RlcCwgc2lnbm8pOwotICAgbWVt c2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKLSsgIGxwLT53YXRj aHBvaW50X2hpdF9zZXQgPSAwOwotIAotICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSAgICAgZnBy aW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotQEAgLTIyODYsNiArMjI4OCw3OCBAQCBtYXli ZV9jbGVhcl9pZ25vcmVfc2lnaW50IChzdHJ1Y3QgbHdwX2luZm8gKmxwKQotICAgICB9CitAQCAt MjY0Myw2ICsyNjQzLDM5IEBAIGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3RydWN0 IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSICphZGRyX3ApCisgICByZXR1cm4gbHAtPnN0b3Bw ZWRfZGF0YV9hZGRyZXNzX3A7CiAgfQogIAotKy8qIEZldGNoIHRoZSBwb3NzaWJsZSB0cmlnZ2Vy ZWQgZGF0YSB3YXRjaHBvaW50IGluZm8gYW5kIHN0b3JlIGl0IHRvIExQLgotKyAgIFRoZSBoYXJk d2FyZSBkYXRhIHdhdGNocG9pbnQgdHJpZ2dlciBnZXRzIGNsZWFyZWQgZHVyaW5nIHRoaXMgZmV0 Y2guICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2F2ZV9zaWd0cmFwIChzdHJ1Y3QgbHdwX2luZm8g KmxwKQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0rCi0rICAvKiBsaW51eF9u YXRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgaXMgbm90IGV2ZW4gaW5zdGFsbGVkIGluIHRoaXMgY2Fz ZS4gICovCi0rICBpZiAobGludXhfb3BzLT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9PSBOVUxM KQotKyAgICByZXR1cm47Ci0rCi0rICBvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7 Ci0rICBpbmZlcmlvcl9wdGlkID0gbHAtPnB0aWQ7Ci0rCi0rICBscC0+d2F0Y2hwb2ludF9oaXRf c2V0ID0KLSsgICAgbGludXhfb3BzLT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyAoJmN1cnJlbnRf dGFyZ2V0LCAmbHAtPndhdGNocG9pbnRfaGl0KTsKLSsKLSsgIGRvX2NsZWFudXBzIChvbGRfY2hh aW4pOwotK30KLSsKLSsvKiBXcmFwIHRhcmdldF9zdG9wcGVkX2RhdGFfYWRkcmVzcyB3aGVyZSB0 aGUgR05VL0xpbnV4IG5hdGl2ZSB0YXJnZXQgbWF5IGJlCi0rICAgZGlyZWN0ZWQgYnkgdGhlIHdh dGNocG9pbnQvZGVidWcgcmVnaXN0ZXIgbnVtYmVyLiAgQmFzZSB0aGUgcmVwb3J0ZWQgdmFsdWUK LSsgICBvbiB0aGUgdHJpZ2dlcmVkIGRhdGEgYWRkcmVzcyBpbnN0ZWFkLiAgRHVyaW5nIGluZmVy aW9yIHN0b3AgdGhlIGFzc2lnbm1lbnQKLSsgICBvZiB3YXRjaHBvaW50L2RlYnVnIHJlZ2lzdGVy cyBtYXkgY2hhbmdlIG1ha2luZyB0aGUgcmVnaXN0ZXIgbnVtYmVyIHNwZWNpZmljCi0rICAgdHJp Z2dlciBpbmZvIHN0YWxlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rbGludXhfbmF0X3N0b3BwZWRf ZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkK LSt7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwID0gZmluZF9sd3BfcGlkIChpbmZlcmlvcl9wdGlk KTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxwICE9IE5VTEwpOwotKwotKyAgKmFkZHJfcCA9IGxwLT53 YXRjaHBvaW50X2hpdDsKLSsKLSsgIHJldHVybiBscC0+d2F0Y2hwb2ludF9oaXRfc2V0OwotK30K LSsKICsvKiBJbiBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHdpdGggbXVsdGl0aHJlYWRl ZCBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2gKICsgICB3YXRjaHBvaW50cyBmcm9tIGFsbCB0aGUg TFdQcy4gIEluIHN1Y2ggY2FzZSBJTkZFUklPUl9QVElEIHdpbGwgYmUgdGhlCiArICAgbm9uLXRo cmVhZGVkIG5ldyBjaGlsZCB3aGlsZSBMV1BfTElTVCB3aWxsIHN0aWxsIGNvbnRhaW4gYWxsIHRo ZSB0aHJlYWRzIG9mCkBAIC0xMjAyMSw2MiArNzEwMSwxNyBAQCBpbmRleCA5OGY2MzQ3Li4wOTA3 ZjAzIDEwMDY0NAogIC8qIFdhaXQgdW50aWwgTFAgaXMgc3RvcHBlZC4gICovCiAgCiAgc3RhdGlj IGludAotQEAgLTIzMzcsNiArMjQxMSw4IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3 cF9pbmZvICpscCwgdm9pZCAqZGF0YSkKLSAJICAgICAgLyogU2F2ZSB0aGUgdHJhcCdzIHNpZ2lu Zm8gaW4gY2FzZSB3ZSBuZWVkIGl0IGxhdGVyLiAgKi8KLSAJICAgICAgc2F2ZV9zaWdpbmZvIChs cCk7Ci0gCi0rCSAgICAgIHNhdmVfc2lndHJhcCAobHApOwotKwotIAkgICAgICAvKiBOb3cgcmVz dW1lIHRoaXMgTFdQIGFuZCBnZXQgdGhlIFNJR1NUT1AgZXZlbnQuICovCi0gCSAgICAgIGVycm5v ID0gMDsKLSAJICAgICAgcHRyYWNlIChQVFJBQ0VfQ09OVCwgR0VUX0xXUCAobHAtPnB0aWQpLCAw LCAwKTsKLUBAIC0yNzAxLDEwICsyNzc3LDE0IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGlu dCBsd3BpZCwgaW50IHN0YXR1cywgaW50IG9wdGlvbnMpCi0gICAgICAgYWRkX3RocmVhZCAobHAt PnB0aWQpOwotICAgICB9Ci0gCi0tICAvKiBTYXZlIHRoZSB0cmFwJ3Mgc2lnaW5mbyBpbiBjYXNl IHdlIG5lZWQgaXQgbGF0ZXIuICAqLwotICAgaWYgKFdJRlNUT1BQRUQgKHN0YXR1cykKLSAgICAg ICAmJiAoV1NUT1BTSUcgKHN0YXR1cykgPT0gU0lHVFJBUCB8fCBXU1RPUFNJRyAoc3RhdHVzKSA9 PSBUUkFQX0lTX1NZU0NBTEwpKQotLSAgICBzYXZlX3NpZ2luZm8gKGxwKTsKLSsgICAgewotKyAg ICAgIC8qIFNhdmUgdGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4g ICovCi0rICAgICAgc2F2ZV9zaWdpbmZvIChscCk7Ci0rCi0rICAgICAgc2F2ZV9zaWd0cmFwIChs cCk7Ci0rICAgIH0KLSAKLSAgIC8qIEhhbmRsZSBHTlUvTGludXgncyBleHRlbmRlZCB3YWl0c3Rh dHVzIGZvciB0cmFjZSBldmVudHMuCi0gICAgICBJdCBpcyBuZWNlc3NhcnkgdG8gY2hlY2sgaWYg V1NUT1BTSUcgaXMgc2lnbmFsaW5nIHRoYXQKLUBAIC00OTk5LDYgKzUwNzksMTAgQEAgbGludXhf bmF0X2FkZF90YXJnZXQgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQotICAgdC0+dG9fdGhyZWFkX2Fs aXZlID0gbGludXhfbmF0X3RocmVhZF9hbGl2ZTsKLSAgIHQtPnRvX3BpZF90b19zdHIgPSBsaW51 eF9uYXRfcGlkX3RvX3N0cjsKLSAgIHQtPnRvX2hhc190aHJlYWRfY29udHJvbCA9IHRjX3NjaGVk bG9jazsKLSsgIGlmIChsaW51eF9vcHMtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzKQotKyAgICB0 LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVz czsKK0BAIC01NTE5LDYgKzU1NTIsOCBAQCBsaW51eF9uYXRfYWRkX3RhcmdldCAoc3RydWN0IHRh cmdldF9vcHMgKnQpCisgICB0LT50b190aHJlYWRfYWRkcmVzc19zcGFjZSA9IGxpbnV4X25hdF90 aHJlYWRfYWRkcmVzc19zcGFjZTsKKyAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IGxp bnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19zdG9wcGVkX2RhdGFfYWRk cmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKICsgIGlmIChsaW51eF9vcHMt PnRvX2RldGFjaF93YXRjaHBvaW50cykKICsgICAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0g bGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50czsKICAKICAgIHQtPnRvX2Nhbl9hc3luY19wID0g bGludXhfbmF0X2Nhbl9hc3luY19wOwogICAgdC0+dG9faXNfYXN5bmNfcCA9IGxpbnV4X25hdF9p c19hc3luY19wOwotZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuaCBiL2dkYi9saW51eC1uYXQu aAotaW5kZXggZWFlNzRmMy4uNzMyMDRmYyAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuaAot KysrIGIvZ2RiL2xpbnV4LW5hdC5oCi1AQCAtNjIsNiArNjIsMTIgQEAgc3RydWN0IGx3cF9pbmZv Ci0gICAgICBiZSB0aGUgYWRkcmVzcyBvZiBhIGhhcmR3YXJlIHdhdGNocG9pbnQuICAqLwotICAg c3RydWN0IHNpZ2luZm8gc2lnaW5mbzsKLSAKLSsgIC8qIFdBVENIUE9JTlRfSElUX1NFVCBpcyBu b24temVybyBpZiB0aGlzIExXUCBzdG9wcGVkIHdpdGggYSB0cmFwIGFuZCBhIGRhdGEKLSsgICAg IHdhdGNocG9pbnQgaGFzIGJlZW4gZm91bmQgYXMgdHJpZ2dlcmVkLiAgSW4gc3VjaCBjYXNlIFdB VENIUE9JTlRfSElUCi0rICAgICBjb250YWlucyBkYXRhIGFkZHJlc3Mgb2YgdGhlIHRyaWdnZXJl ZCBkYXRhIHdhdGNocG9pbnQuICAqLwotKyAgdW5zaWduZWQgd2F0Y2hwb2ludF9oaXRfc2V0IDog MTsKLSsgIENPUkVfQUREUiB3YXRjaHBvaW50X2hpdDsKLSsKLSAgIC8qIE5vbi16ZXJvIGlmIHdl IGV4cGVjdCBhIGR1cGxpY2F0ZWQgU0lHSU5ULiAgKi8KLSAgIGludCBpZ25vcmVfc2lnaW50Owot IAogZGlmZiAtLWdpdCBhL2dkYi9tMi1sYW5nLmMgYi9nZGIvbTItbGFuZy5jCi1pbmRleCA4OGM3 ZTVlLi4yZDBiM2NhIDEwMDY0NAoraW5kZXggODBlOWJmOS4uMzA1Nzc3NCAxMDA2NDQKIC0tLSBh L2dkYi9tMi1sYW5nLmMKICsrKyBiL2dkYi9tMi1sYW5nLmMKIEBAIC0zNTYsNiArMzU2LDcgQEAg Y29uc3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX21vZHVsYTIgPQpAQCAt MTIwODgsMTkgKzcxMjMsMTkgQEAgaW5kZXggODhjN2U1ZS4uMmQwYjNjYSAxMDA2NDQKICAgIGR1 bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQsCiAgICBldmFsdWF0ZV9zdWJleHBfbW9kdWxhMgogZGlm ZiAtLWdpdCBhL2dkYi9tYWNob3JlYWQuYyBiL2dkYi9tYWNob3JlYWQuYwotaW5kZXggNWY5YTBm ZS4uNjZmYTA2NyAxMDA2NDQKK2luZGV4IDAyYjYxZDMuLjEzYWI1OTUgMTAwNjQ0CiAtLS0gYS9n ZGIvbWFjaG9yZWFkLmMKICsrKyBiL2dkYi9tYWNob3JlYWQuYwotQEAgLTY4MSw2ICs2ODEsNyBA QCBzdGF0aWMgc3RydWN0IHN5bV9mbnMgbWFjaG9fc3ltX2ZucyA9IHsKK0BAIC03NTUsNiArNzU1 LDcgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5zIG1hY2hvX3N5bV9mbnMgPSB7CiAgICBtYWNob19u ZXdfaW5pdCwgICAgICAgICAgICAgICAvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhpbmcgZ2Js IHRvIGVudGlyZSBzeW10YWIgKi8KICAgIG1hY2hvX3N5bWZpbGVfaW5pdCwgICAgICAgICAgIC8q IHN5bV9pbml0OiByZWFkIGluaXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWFkKCkgKi8KICAg IG1hY2hvX3N5bWZpbGVfcmVhZCwgICAgICAgICAgIC8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9s IGZpbGUgaW50byBzeW10YWIgKi8KICsgIE5VTEwsCQkJCS8qIHN5bV9yZWFkX3BzeW1ib2xzICov CiAgICBtYWNob19zeW1maWxlX2ZpbmlzaCwgICAgICAgICAvKiBzeW1fZmluaXNoOiBmaW5pc2hl ZCB3aXRoIGZpbGUsIGNsZWFudXAgKi8KICAgIG1hY2hvX3N5bWZpbGVfb2Zmc2V0cywgICAgICAg IC8qIHN5bV9vZmZzZXRzOiAgeGxhdGUgZXh0ZXJuYWwgdG8gaW50ZXJuYWwgZm9ybSAqLwotICAg TlVMTCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbmV4dDogcG9pbnRlciB0byBuZXh0IHN0 cnVjdCBzeW1fZm5zICovCisgICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8qIHN5bV9zZWdt ZW50czogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbQogZGlmZiAtLWdpdCBhL2dkYi9tYWlu LmMgYi9nZGIvbWFpbi5jCi1pbmRleCA1NTQxMWE4Li5hYzlhNTQwIDEwMDY0NAoraW5kZXggMGNj MGY3NS4uZTNmYzJlNiAxMDA2NDQKIC0tLSBhL2dkYi9tYWluLmMKICsrKyBiL2dkYi9tYWluLmMK IEBAIC00MCw2ICs0MCw3IEBACkBAIC0xMjEyMiw3ICs3MTU3LDcgQEAgaW5kZXggNTU0MTFhOC4u YWM5YTU0MCAxMDA2NDQKICAgIHN0YXRpYyBpbnQgcHJpbnRfdmVyc2lvbjsKIEBAIC00MzQsMTAg KzQzNywxNCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsiYXJncyIsIG5v X2FyZ3VtZW50LCAmc2V0X2FyZ3MsIDF9LAotICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQs IDAsICdsJ30sCisgICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCiAgICAg ICAgeyJyZXR1cm4tY2hpbGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVz dWx0LCAxfSwKICsjaWYgSEFWRV9QWVRIT04KICsgICAgICB7InB5dGhvbiIsIG5vX2FyZ3VtZW50 LCAwLCAnUCd9LApAQCAtMTIyNTEsNyArNzI4Niw3IEBAIGluZGV4IDU1NDExYTguLmFjOWE1NDAg MTAwNjQ0CiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24g Zmlyc3QgYWNjZXNzLlxuXAogICIpLCBzdHJlYW0pOwogZGlmZiAtLWdpdCBhL2dkYi9tYWludC5j IGIvZ2RiL21haW50LmMKLWluZGV4IGVjYmFlMTIuLjgwZmMzNmUgMTAwNjQ0CitpbmRleCA0MzE2 ZDY2Li5mZThhMDY5IDEwMDY0NAogLS0tIGEvZ2RiL21haW50LmMKICsrKyBiL2dkYi9tYWludC5j CiBAQCAtOTE0LDQgKzkxNCwxMiBAQCBXaGVuIGVuYWJsZWQgR0RCIGlzIHByb2ZpbGVkLiIpLApA QCAtMTIyNjcsMjEgKzczMDIsOCBAQCBpbmRleCBlY2JhZTEyLi44MGZjMzZlIDEwMDY0NAogKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwKICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsKICB9Ci1k aWZmIC0tZ2l0IGEvZ2RiL21kZWJ1Z3JlYWQuYyBiL2dkYi9tZGVidWdyZWFkLmMKLWluZGV4IGFh YzgyZTkuLjYyNjI5MmMgMTAwNjQ0Ci0tLS0gYS9nZGIvbWRlYnVncmVhZC5jCi0rKysgYi9nZGIv bWRlYnVncmVhZC5jCi1AQCAtNDgwMiw3ICs0ODAyLDcgQEAgbmV3X3R5cGUgKGNoYXIgKm5hbWUp Ci0gewotICAgc3RydWN0IHR5cGUgKnQ7Ci0gCi0tICB0ID0gYWxsb2NfdHlwZSAoY3VycmVudF9v YmpmaWxlKTsKLSsgIHQgPSBhbGxvY190eXBlIChjdXJyZW50X29iamZpbGUsIE5VTEwpOwotICAg VFlQRV9OQU1FICh0KSA9IG5hbWU7Ci0gICBUWVBFX0NQTFVTX1NQRUNJRklDICh0KSA9IChzdHJ1 Y3QgY3BsdXNfc3RydWN0X3R5cGUgKikgJmNwbHVzX3N0cnVjdF9kZWZhdWx0OwotICAgcmV0dXJu IHQ7CiBkaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9taS1jbWQtdmFy LmMKLWluZGV4IDBiYWFhODMuLjk0ZWJmZWIgMTAwNjQ0CitpbmRleCBiMjI3NDExLi4zYjkzMmYw IDEwMDY0NAogLS0tIGEvZ2RiL21pL21pLWNtZC12YXIuYwogKysrIGIvZ2RiL21pL21pLWNtZC12 YXIuYwogQEAgLTY5Nyw3ICs2OTcsNiBAQCBtaV9jbWRfdmFyX3VwZGF0ZSAoY2hhciAqY29tbWFu ZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQpAQCAtMTIyOTMsMTAgKzczMTUsMTAgQEAgaW5kZXgg MGJhYWE4My4uOTRlYmZlYiAxMDA2NDQKICAKICAgICAgICB2YXJvYmpfdXBkYXRlX29uZSAodmFy LCBwcmludF92YWx1ZXMsIDEgLyogZXhwbGljaXQgKi8pOwogZGlmZiAtLWdpdCBhL2dkYi9taS9t aS1tYWluLmMgYi9nZGIvbWkvbWktbWFpbi5jCi1pbmRleCA4NTdhNWQ1Li42MTgxMDAyIDEwMDY0 NAoraW5kZXggZGRlMDA2Mi4uODMyY2ZjYyAxMDA2NDQKIC0tLSBhL2dkYi9taS9taS1tYWluLmMK ICsrKyBiL2dkYi9taS9taS1tYWluLmMKLUBAIC0xMTMwLDcgKzExMzAsNyBAQCBtaV9jbWRfbGlz dF9mZWF0dXJlcyAoY2hhciAqY29tbWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQorQEAgLTE0 MDAsNyArMTQwMCw3IEBAIG1pX2NtZF9saXN0X2ZlYXR1cmVzIChjaGFyICpjb21tYW5kLCBjaGFy ICoqYXJndiwgaW50IGFyZ2MpCiAgICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsIE5V TEwsICJmcm96ZW4tdmFyb2JqcyIpOwogICAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0 LCBOVUxMLCAicGVuZGluZy1icmVha3BvaW50cyIpOwogICAgICAgIHVpX291dF9maWVsZF9zdHJp bmcgKHVpb3V0LCBOVUxMLCAidGhyZWFkLWluZm8iKTsKQEAgLTEyMzA2LDcgKzczMjgsNyBAQCBp bmRleCA4NTdhNWQ1Li42MTgxMDAyIDEwMDY0NAogICAgICAgIHVpX291dF9maWVsZF9zdHJpbmcg KHVpb3V0LCBOVUxMLCAicHl0aG9uIik7CiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvZ2RiL21pcHNy ZWFkLmMgYi9nZGIvbWlwc3JlYWQuYwotaW5kZXggYTg0MDAzZi4uOTI0YzFjNSAxMDA2NDQKK2lu ZGV4IDRlZjgxN2UuLjFjNTM1NzQgMTAwNjQ0CiAtLS0gYS9nZGIvbWlwc3JlYWQuYwogKysrIGIv Z2RiL21pcHNyZWFkLmMKIEBAIC0zOTQsNiArMzk0LDcgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5z IGVjb2ZmX3N5bV9mbnMgPQpAQCAtMTIzMTgsMTQgKzczNDAsMTMgQEAgaW5kZXggYTg0MDAzZi4u OTI0YzFjNSAxMDA2NDQKICAgIGRlZmF1bHRfc3ltZmlsZV9vZmZzZXRzLAkvKiBzeW1fb2Zmc2V0 czogZHVtbXkgRklYTUUgdGlsIGltcGxlbSBzeW0gcmVsb2MgKi8KICAgIGRlZmF1bHRfc3ltZmls ZV9zZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9t CiBkaWZmIC0tZ2l0IGEvZ2RiL29iamZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYwotaW5kZXggOGRj Y2E3MC4uZTU0NDJjYSAxMDA2NDQKK2luZGV4IDBiMDdlMzcuLjVkZTUzMDAgMTAwNjQ0CiAtLS0g YS9nZGIvb2JqZmlsZXMuYwogKysrIGIvZ2RiL29iamZpbGVzLmMKLUBAIC02MzQsNiArNjM0LDEx IEBAIG9iamZpbGVfcmVsb2NhdGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3Qgc2Vj dGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cykKK0BAIC03ODksNiArNzg5LDEwIEBAIG9iamZpbGVf cmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0 cyAqbmV3X29mZnNldHMpCiAgICAgIH0KICAgIH0KICAKLSsgIC8qIEFscmVhZCBRVUlDS19BRERS TUFQIHRpc2VsZiBhc3N1bWVzIGFsbCBzZWN0aW9ucyBoYXZlIHRoZSBzYW1lIG9mZnNldC4gICov CiArICBpZiAob2JqZmlsZS0+cXVpY2tfYWRkcm1hcCkKICsgICAgYWRkcm1hcF9yZWxvY2F0ZSAo b2JqZmlsZS0+cXVpY2tfYWRkcm1hcCwKICsJCSAgICAgIEFOT0ZGU0VUIChkZWx0YSwgU0VDVF9P RkZfVEVYVCAob2JqZmlsZSkpKTsKQEAgLTEyMzMzLDcgKzczNTQsMTYgQEAgaW5kZXggOGRjY2E3 MC4uZTU0NDJjYSAxMDA2NDQKICAgIHsKICAgICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoqcHN5 bTsKICAKLUBAIC03MzEsNiArNzM2LDIwIEBAIGhhdmVfcGFydGlhbF9zeW1ib2xzICh2b2lkKQor QEAgLTkxNCw3ICs5MTgsNyBAQCBvYmpmaWxlX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqbmV3X29mZnNldHMpCisgaW50Cisgb2JqZmls ZV9oYXNfcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyB7CistICBy ZXR1cm4gb2JqZmlsZS0+cHN5bXRhYnMgIT0gTlVMTDsKKysgIHJldHVybiBvYmpmaWxlLT5wc3lt dGFicyAhPSBOVUxMIHx8IG9iamZpbGUtPnF1aWNrX2FkZHJtYXA7CisgfQorIAorIC8qIFJldHVy biBub24temVybyBpZiBPQkpGSUxFIGhhcyBmdWxsIHN5bWJvbHMuICAqLworQEAgLTk1NCw2ICs5 NTgsMjAgQEAgaGF2ZV9wYXJ0aWFsX3N5bWJvbHMgKHZvaWQpCiAgICAgIGlmIChvYmpmaWxlX2hh c19wYXJ0aWFsX3N5bWJvbHMgKG9mcCkpCiAgICAgICAgcmV0dXJuIDE7CiAgICB9CkBAIC0xMjM1 NSwxMCArNzM4NSwxMCBAQCBpbmRleCA4ZGNjYTcwLi5lNTQ0MmNhIDEwMDY0NAogIH0KICAKIGRp ZmYgLS1naXQgYS9nZGIvb2JqZmlsZXMuaCBiL2dkYi9vYmpmaWxlcy5oCi1pbmRleCA2MmZhNDk4 Li4xZmM5YzZhIDEwMDY0NAoraW5kZXggYzY4OTYyMi4uZWIzYWUxMCAxMDA2NDQKIC0tLSBhL2dk Yi9vYmpmaWxlcy5oCiArKysgYi9nZGIvb2JqZmlsZXMuaAotQEAgLTIxMiw2ICsyMTIsMTEgQEAg c3RydWN0IG9iamZpbGUKK0BAIC0yMTMsNiArMjEzLDExIEBAIHN0cnVjdCBvYmpmaWxlCiAgCiAg ICAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN5bXRhYnM7CiAgCkBAIC0xMjM3MCw3ICs3NDAw LDcgQEAgaW5kZXggNjJmYTQ5OC4uMWZjOWM2YSAxMDA2NDQKICAgICAgLyogTWFwIGFkZHJlc3Nl cyB0byB0aGUgZW50cmllcyBvZiBQU1lNVEFCUy4gIEl0IHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50 IHRvCiAgICAgICAgIGhhdmUgYSBtYXAgcGVyIHRoZSB3aG9sZSBwcm9jZXNzIGJ1dCBBRERSTUFQ IGNhbm5vdCBzZWxlY3RpdmVseSByZW1vdmUKICAgICAgICAgaXRzIGl0ZW1zIGR1cmluZyBGUkVF X09CSkZJTEUuICBUaGlzIG1hcHBpbmcgaXMgYWxyZWFkeSBwcmVzZW50IGV2ZW4gZm9yCi1AQCAt NDE0LDYgKzQxOSwxNSBAQCBzdHJ1Y3Qgb2JqZmlsZQorQEAgLTQyNiw2ICs0MzEsMTUgQEAgc3Ry dWN0IG9iamZpbGUKICAKICAjZGVmaW5lIE9CSkZfVVNFUkxPQURFRAkoMSA8PCAzKQkvKiBVc2Vy IGxvYWRlZCAqLwogIApAQCAtMTIzODMsMTAgKzc0MTMsMTAgQEAgaW5kZXggNjJmYTQ5OC4uMWZj OWM2YSAxMDA2NDQKICsKICsjZGVmaW5lIE9CSkZfTUFJTiAoMSA8PCA3KQogKwotIC8qIFRoZSBv YmplY3QgZmlsZSB0aGF0IHRoZSBtYWluIHN5bWJvbCB0YWJsZSB3YXMgbG9hZGVkIGZyb20gKGUu Zy4gdGhlCi0gICAgYXJndW1lbnQgdG8gdGhlICJzeW1ib2wtZmlsZSIgb3IgImZpbGUiIGNvbW1h bmQpLiAgKi8KKyAvKiBUaGUgb2JqZWN0IGZpbGUgdGhhdCBjb250YWlucyB0aGUgcnVudGltZSBj b21tb24gbWluaW1hbCBzeW1ib2xzCisgICAgZm9yIFN1bk9TNC4gTm90ZSB0aGF0IHRoaXMgb2Jq ZmlsZSBoYXMgbm8gYXNzb2NpYXRlZCBCRkQuICAqLwogIAotQEAgLTU2OCw2ICs1ODIsMTMgQEAg ZXh0ZXJuIHZvaWQgZ2RiX2JmZF91bnJlZiAoc3RydWN0IGJmZCAqYWJmZCk7CitAQCAtNjA2LDYg KzYyMCwxMyBAQCBleHRlcm4gdm9pZCBnZGJfYmZkX3VucmVmIChzdHJ1Y3QgYmZkICphYmZkKTsK ICAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkJIFwKICAgICAgQUxMX09CSkZJTEVfUFNZTVRBQlMg KG9iamZpbGUsIHApCiAgCkBAIC0xMjM5NywxNCArNzQyNywxNCBAQCBpbmRleCA2MmZhNDk4Li4x ZmM5YzZhIDEwMDY0NAogKyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQkJCQkJXAogKyAgICBBTExf T0JKRklMRV9QU1lNVEFCUyAocmVxdWlyZV9wYXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUpLCBwKQog KwotIC8qIFRyYXZlcnNlIGFsbCBtaW5pbWFsIHN5bWJvbHMgaW4gYWxsIG9iamZpbGVzLiAgKi8K LSAKLSAjZGVmaW5lCUFMTF9NU1lNQk9MUyhvYmpmaWxlLCBtKSBcCisgI2RlZmluZSBBTExfUFNQ QUNFX1BTWU1UQUJTKHNzLCBvYmpmaWxlLCBwKQkJXAorICAgQUxMX1BTUEFDRV9PQkpGSUxFUyAo c3MsIG9iamZpbGUpCQkJXAorICAgICBBTExfT0JKRklMRV9QU1lNVEFCUyAob2JqZmlsZSwgcCkK IGRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCBlZjkzOGUzLi5j MjQzYmQ4IDEwMDY0NAoraW5kZXggMjg4NTUwNi4uNzc5YjgxOSAxMDA2NDQKIC0tLSBhL2dkYi9w YXJzZS5jCiArKysgYi9nZGIvcGFyc2UuYwotQEAgLTYzLDYgKzYzLDcgQEAgY29uc3Qgc3RydWN0 IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX3N0YW5kYXJkID0KK0BAIC02Miw2ICs2Miw3 IEBAIGNvbnN0IHN0cnVjdCBleHBfZGVzY3JpcHRvciBleHBfZGVzY3JpcHRvcl9zdGFuZGFyZCA9 CiAgICB7CiAgICAgIHByaW50X3N1YmV4cF9zdGFuZGFyZCwKICAgICAgb3BlcmF0b3JfbGVuZ3Ro X3N0YW5kYXJkLApAQCAtMTI0MTIsMjMgKzc0NDIsNyBAQCBpbmRleCBlZjkzOGUzLi5jMjQzYmQ4 IDEwMDY0NAogICAgICBvcF9uYW1lX3N0YW5kYXJkLAogICAgICBkdW1wX3N1YmV4cF9ib2R5X3N0 YW5kYXJkLAogICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQKLUBAIC04MzcsNiArODM4LDE1 IEBAIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cHIsIGlu dCBlbmRwb3MsCi0gICAgICAgYXJncyA9IDEgKyBsb25nZXN0X3RvX2ludCAoZXhwci0+ZWx0c1tl bmRwb3MgLSAyXS5sb25nY29uc3QpOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIFRZUEVf SU5TVEFOQ0U6Ci0rICAgICAgb3BsZW4gPSA0ICsgbG9uZ2VzdF90b19pbnQgKGV4cHItPmVsdHNb ZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKLSsgICAgICBhcmdzID0gMTsKLSsgICAgICBicmVhazsK LSsKLSsgICAgY2FzZSBUWVBFX0lOU1RBTkNFX0xPT0tVUDoKLSsgICAgICBvcGxlbiA9IDM7Ci0r ICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgT1BfT0JKQ19NU0dDQUxMOgkvKiBPYmplY3RpdmUg QyBtZXNzYWdlIChtZXRob2QpIGNhbGwgKi8KLSAgICAgICBvcGxlbiA9IDQ7Ci0gICAgICAgYXJn cyA9IDEgKyBsb25nZXN0X3RvX2ludCAoZXhwci0+ZWx0c1tlbmRwb3MgLSAyXS5sb25nY29uc3Qp OwotQEAgLTEzNTUsNiArMTM2NSwxNTAgQEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0 IGNoYXIgKnksIC4uLikKK0BAIC0xMzU5LDYgKzEzNjAsMTUwIEBAIHBhcnNlcl9mcHJpbnRmIChG SUxFICp4LCBjb25zdCBjaGFyICp5LCAuLi4pCiAgICB2YV9lbmQgKGFyZ3MpOwogIH0KICAKQEAg LTEyNTgwLDEwICs3NTk0LDEwIEBAIGluZGV4IGVmOTM4ZTMuLmMyNDNiZDggMTAwNjQ0CiAgX2lu aXRpYWxpemVfcGFyc2UgKHZvaWQpCiAgewogZGlmZiAtLWdpdCBhL2dkYi9wYXJzZXItZGVmcy5o IGIvZ2RiL3BhcnNlci1kZWZzLmgKLWluZGV4IGNiZGE5YzMuLmEwN2U2ZjIgMTAwNjQ0CitpbmRl eCA2ZmNmN2FlLi4zZjVlZmU4IDEwMDY0NAogLS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKICsrKyBi L2dkYi9wYXJzZXItZGVmcy5oCi1AQCAtMTg5LDYgKzE4OSwxMyBAQCBleHRlcm4gdm9pZCBvcGVy YXRvcl9sZW5ndGggKHN0cnVjdCBleHByZXNzaW9uICosIGludCwgaW50ICosIGludCAqKTsKK0BA IC0xOTAsNiArMTkwLDEzIEBAIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aCAoc3RydWN0IGV4 cHJlc3Npb24gKiwgaW50LCBpbnQgKiwgaW50ICopOwogIAogIGV4dGVybiB2b2lkIG9wZXJhdG9y X2xlbmd0aF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwgaW50ICop OwogIApAQCAtMTI1OTcsNyArNzYxMSw3IEBAIGluZGV4IGNiZGE5YzMuLmEwN2U2ZjIgMTAwNjQ0 CiAgZXh0ZXJuIGNoYXIgKm9wX25hbWVfc3RhbmRhcmQgKGVudW0gZXhwX29wY29kZSk7CiAgCiAg ZXh0ZXJuIHN0cnVjdCB0eXBlICpmb2xsb3dfdHlwZXMgKHN0cnVjdCB0eXBlICopOwotQEAgLTI2 Nyw2ICsyNzQsMjAgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCitAQCAtMjY4LDYgKzI3NSwyMCBA QCBzdHJ1Y3QgZXhwX2Rlc2NyaXB0b3IKICAgICAgICAgdGhlIG51bWJlciBvZiBzdWJleHByZXNz aW9ucyBpdCB0YWtlcy4gICovCiAgICAgIHZvaWQgKCpvcGVyYXRvcl9sZW5ndGgpIChzdHJ1Y3Qg ZXhwcmVzc2lvbiosIGludCwgaW50KiwgaW50ICopOwogIApAQCAtMTI2MTgsNyArNzYzMiw3IEBA IGluZGV4IGNiZGE5YzMuLmEwN2U2ZjIgMTAwNjQ0CiAgICAgIC8qIE5hbWUgb2YgdGhpcyBvcGVy YXRvciBmb3IgZHVtcGluZyBwdXJwb3Nlcy4gICovCiAgICAgIGNoYXIgKigqb3BfbmFtZSkgKGVu dW0gZXhwX29wY29kZSk7CiAgCi1AQCAtMjk5LDQgKzMyMCw4IEBAIGV4dGVybiB2b2lkIHByaW50 X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKiwgaW50ICosCitAQCAtMzAwLDQg KzMyMSw4IEBAIGV4dGVybiB2b2lkIHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJl c3Npb24gKiwgaW50ICosCiAgCiAgZXh0ZXJuIHZvaWQgcGFyc2VyX2ZwcmludGYgKEZJTEUgKiwg Y29uc3QgY2hhciAqLCAuLi4pIEFUVFJfRk9STUFUIChwcmludGYsIDIgLDMpOwogIApAQCAtMTI2 MjgsNyArNzY0Miw3IEBAIGluZGV4IGNiZGE5YzMuLmEwN2U2ZjIgMTAwNjQ0CiArCiAgI2VuZGlm IC8qIFBBUlNFUl9ERUZTX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LW5hdC5jIGIv Z2RiL3BwYy1saW51eC1uYXQuYwotaW5kZXggNDdiNzRhZC4uMjJmYjJmYyAxMDA2NDQKK2luZGV4 IDEwZmY3M2QuLjViNjhmNTYgMTAwNjQ0CiAtLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCiArKysg Yi9nZGIvcHBjLWxpbnV4LW5hdC5jCiBAQCAtMTM5MSw2ICsxMzkxLDI0IEBAIHBwY19saW51eF9y ZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCBydykKQEAgLTEy NjY1LDcgKzc2NzksNyBAQCBpbmRleCA0N2I3NGFkLi4yMmZiMmZjIDEwMDY0NAogICAgdC0+dG9f c3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBwcGNfbGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3M7CiAg ICB0LT50b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlID0gcHBjX2xpbnV4X3dhdGNocG9p bnRfYWRkcl93aXRoaW5fcmFuZ2U7CiBkaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIv cHJpbnRjbWQuYwotaW5kZXggNWQ4YjkzNi4uZmIwYTQ1NSAxMDA2NDQKK2luZGV4IDg4ZGIwOGIu LjE4ZGFlOWUgMTAwNjQ0CiAtLS0gYS9nZGIvcHJpbnRjbWQuYwogKysrIGIvZ2RiL3ByaW50Y21k LmMKIEBAIC00Niw3ICs0Niw2IEBACkBAIC0xMjY3NSw4ICs3Njg5LDggQEAgaW5kZXggNWQ4Yjkz Ni4uZmIwYTQ1NSAxMDA2NDQKIC0jaW5jbHVkZSAic29saWIuaCIKICAjaW5jbHVkZSAicGFyc2Vy LWRlZnMuaCIKICAjaW5jbHVkZSAiY2hhcnNldC5oIgotIAotQEAgLTkwMCw2ICs4OTksMTEgQEAg cHJpbnRfY29tbWFuZF8xIChjaGFyICpleHAsIGludCBpbnNwZWN0LCBpbnQgdm9pZHByaW50KQor ICNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCitAQCAtOTQxLDYgKzk0MCwxMSBAQCBwcmludF9jb21t YW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCiAgICBlbHNlCiAg ICAgIHZhbCA9IGFjY2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKICAKQEAgLTEyNjg4LDcgKzc3MDIs NyBAQCBpbmRleCA1ZDhiOTM2Li5mYjBhNDU1IDEwMDY0NAogICAgaWYgKHZvaWRwcmludCB8fCAo dmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKICAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5cGUg KHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKICAgICAgewotQEAgLTEzOTYsNiArMTQwMCwyMiBA QCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorQEAgLTE0MzcsNiArMTQ0MSwy MiBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAlzZXRfaW50ZXJuYWx2 YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CiAgICAg IH0KICB9CkBAIC0xMjcxMSw3ICs3NzI1LDcgQEAgaW5kZXggNWQ4YjkzNi4uZmIwYTQ1NSAxMDA2 NDQKICAMCiAgCiAgLyogQWRkIGFuIGV4cHJlc3Npb24gdG8gdGhlIGF1dG8tZGlzcGxheSBjaGFp bi4KLUBAIC0xNzk4LDUwICsxODE4LDYgQEAgZGlzYWJsZV9kaXNwbGF5X2NvbW1hbmQgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkKK0BAIC0xODU5LDUyICsxODc5LDYgQEAgZGlzYWJsZV9kaXNw bGF5X2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKICAgICAgICB9CiAgfQogIApA QCAtMTI3MjcsNiArNzc0MSw3IEBAIGluZGV4IDVkOGI5MzYuLmZiMGE0NTUgMTAwNjQ0CiAtICBj b25zdCB1bmlvbiBleHBfZWxlbWVudCAqY29uc3QgZWx0cyA9IGV4cC0+ZWx0czsKIC0KIC0gIGlm IChkLT5ibG9jayAhPSBOVUxMCistICAgICAgJiYgZC0+cHNwYWNlID09IHNvbGliLT5wc3BhY2UK IC0gICAgICAmJiBzb2xpYl9jb250YWluc19hZGRyZXNzX3AgKHNvbGliLCBkLT5ibG9jay0+c3Rh cnRhZGRyKSkKIC0gICAgcmV0dXJuIDE7CiAtCkBAIC0xMjc0Nyw3ICs3NzYyLDggQEAgaW5kZXgg NWQ4YjkzNi4uZmIwYTQ1NSAxMDA2NDQKIC0JICAgIFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9s KTsKIC0KIC0JICBpZiAoYmxvY2sgIT0gTlVMTAotLQkgICAgICAmJiBzb2xpYl9jb250YWluc19h ZGRyZXNzX3AgKHNvbGliLCBibG9jay0+c3RhcnRhZGRyKSkKKy0JICAgICAgJiYgc29saWJfY29u dGFpbnNfYWRkcmVzc19wIChzb2xpYiwKKy0JCQkJCSAgIGJsb2NrLT5zdGFydGFkZHIpKQogLQkg ICAgcmV0dXJuIDE7CiAtCiAtCSAgaWYgKHNlY3Rpb24gJiYgc2VjdGlvbi0+b2JqZmlsZSA9PSBz b2xpYi0+b2JqZmlsZSkKQEAgLTEyNzYyLDcgKzc3NzgsNyBAQCBpbmRleCA1ZDhiOTM2Li5mYjBh NDU1IDEwMDY0NAogIC8qIGRpc3BsYXlfY2hhaW4gaXRlbXMgcG9pbnQgdG8gYmxvY2tzIGFuZCBl eHByZXNzaW9ucy4gIFNvbWUgZXhwcmVzc2lvbnMgaW4KICAgICB0dXJuIG1heSBwb2ludCB0byBz eW1ib2xzLgogICAgIEJvdGggc3ltYm9scyBhbmQgYmxvY2tzIGFyZSBvYnN0YWNrX2FsbG9jJ2Qg b24gb2JqZmlsZV9zdGFjaywgYW5kIGFyZQotQEAgLTE4NTMsMTggKzE4MjksMjAgQEAgZGlzcGxh eV91c2VzX3NvbGliX3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpkLAorQEAgLTE5MTYsMTggKzE4 OTAsMjAgQEAgZGlzcGxheV91c2VzX3NvbGliX3AgKGNvbnN0IHN0cnVjdCBkaXNwbGF5ICpkLAog IHN0YXRpYyB2b2lkCiAgY2xlYXJfZGFuZ2xpbmdfZGlzcGxheV9leHByZXNzaW9ucyAoc3RydWN0 IHNvX2xpc3QgKnNvbGliKQogIHsKQEAgLTEyNzkzLDcgKzc4MDksNyBAQCBpbmRleCA1ZDhiOTM2 Li5mYjBhNDU1IDEwMDY0NAogIH0KICAMCiAgCi1AQCAtMjc0OSw0ICsyNzI3LDYgQEAgU2hvdyBw cmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4u IiksIE5VTEwsCitAQCAtMjgxMiw0ICsyNzg4LDYgQEAgU2hvdyBwcmludGluZyBvZiBzb3VyY2Ug ZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJvbD4uIiksIE5VTEwsCiAgCQkJICAg TlVMTCwKICAJCQkgICBzaG93X3ByaW50X3N5bWJvbF9maWxlbmFtZSwKICAJCQkgICAmc2V0cHJp bnRsaXN0LCAmc2hvd3ByaW50bGlzdCk7CkBAIC0xNDAwNCwxMCArOTAyMCwxMCBAQCBpbmRleCAw MDAwMDAwLi44MDE5ZTlkCiArfTsKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWJyZWFrcG9p bnQuYyBiL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uYWZhOTUyNgoraW5kZXggMDAwMDAwMC4uNzgzMzg1ZQogLS0tIC9kZXYv bnVsbAogKysrIGIvZ2RiL3B5dGhvbi9weS1icmVha3BvaW50LmMKLUBAIC0wLDAgKzEsNjY1IEBA CitAQCAtMCwwICsxLDY2NiBAQAogKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gYnJlYWtwb2ludHMK ICsKICsgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCkBAIC0xNDAzNiw3ICs5MDUyLDggQEAgaW5kZXggMDAwMDAwMC4uYWZhOTUyNgogKyNp bmNsdWRlICJnZGJjbWQuaCIKICsjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiArI2luY2x1ZGUgIm9i c2VydmVyLmgiCi0rCisrI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAibGFuZ3Vh Z2UuaCIKICsKICsvKiBGcm9tIGJyZWFrcG9pbnQuYy4gICovCiArZXh0ZXJuIHN0cnVjdCBicmVh a3BvaW50ICpicmVha3BvaW50X2NoYWluOwpAQCAtMTQ1MDQsNyArOTUyMSw3IEBAIGluZGV4IDAw MDAwMDAuLmFmYTk1MjYKICt7CiArICBicmVha3BvaW50X29iamVjdCAqbmV3YnA7CiArICBzdHJ1 Y3QgYnJlYWtwb2ludCAqYnA7Ci0rICBQeUdJTFN0YXRlX1NUQVRFIHN0YXRlOworKyAgc3RydWN0 IGNsZWFudXAgKmNsZWFudXA7CiArCiArICBpZiAobnVtIDwgMCkKICsgICAgcmV0dXJuOwpAQCAt MTQ1MjksNyArOTU0Niw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1MjYKICsKICsgICsrYnBweV9s aXZlOwogKwotKyAgc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAgPSBl bnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7 CiArCiArICBpZiAoYnBweV9wZW5kaW5nX29iamVjdCkKICsgICAgewpAQCAtMTQ1NjIsNyArOTU3 OSw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1MjYKICsgIC8qIEp1c3QgaWdub3JlIGVycm9ycyBo ZXJlLiAgKi8KICsgIFB5RXJyX0NsZWFyICgpOwogKwotKyAgUHlHSUxTdGF0ZV9SZWxlYXNlIChz dGF0ZSk7CisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiArfQogKwogKy8qIENhbGxiYWNrIHRo YXQgaXMgdXNlZCB3aGVuIGEgYnJlYWtwb2ludCBpcyBkZWxldGVkLiAgVGhpcyB3aWxsCkBAIC0x NDU3MCw5ICs5NTg3LDkgQEAgaW5kZXggMDAwMDAwMC4uYWZhOTUyNgogK3N0YXRpYyB2b2lkCiAr Z2RicHlfYnJlYWtwb2ludF9kZWxldGVkIChpbnQgbnVtKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RB VEUgc3RhdGU7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKICsKLSsgIHN0YXRlID0gUHlH SUxTdGF0ZV9FbnN1cmUgKCk7CisrICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9j dXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOwogKyAgaWYgKEJQUFlfVkFMSURfUCAo bnVtKSkKICsgICAgewogKyAgICAgIGJwcHlfYnJlYWtwb2ludHNbbnVtXS0+YnAgPSBOVUxMOwpA QCAtMTQ1ODAsNyArOTU5Nyw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1MjYKICsgICAgICBicHB5 X2JyZWFrcG9pbnRzW251bV0gPSBOVUxMOwogKyAgICAgIC0tYnBweV9saXZlOwogKyAgICB9Ci0r ICBQeUdJTFN0YXRlX1JlbGVhc2UgKHN0YXRlKTsKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsK ICt9CiArCiArDApAQCAtMTQ2NzQsNyArOTY5MSw3IEBAIGluZGV4IDAwMDAwMDAuLmFmYTk1MjYK ICsgIGJyZWFrcG9pbnRfb2JqZWN0X2dldHNldAkgIC8qIHRwX2dldHNldCAqLwogK307CiBkaWZm IC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1jbWQuYyBiL2dkYi9weXRob24vcHktY21kLmMKLWluZGV4 IDUyOGFjYTYuLjA0YjNmZDEgMTAwNjQ0CitpbmRleCBhZTQ2MmQ5Li4yMmQxNDA1IDEwMDY0NAog LS0tIGEvZ2RiL3B5dGhvbi9weS1jbWQuYwogKysrIGIvZ2RiL3B5dGhvbi9weS1jbWQuYwogQEAg LTQ5LDggKzQ5LDcgQEAgc3RhdGljIHN0cnVjdCBjbWRweV9jb21wbGV0ZXIgY29tcGxldGVyc1td ID0KQEAgLTE0NzM5LDcgKzk3NTYsNyBAQCBpbmRleCA1MjhhY2E2Li4wNGIzZmQxIDEwMDY0NAog ICAgICByZXR1cm4gLTE7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1mcmFtZS5jIGIv Z2RiL3B5dGhvbi9weS1mcmFtZS5jCi1pbmRleCAyNzk0MTVjLi41ZDhjZTBhIDEwMDY0NAoraW5k ZXggMzM0YmFkOS4uNTI0MzUzZCAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktZnJhbWUuYwog KysrIGIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCiBAQCAtMjAyLDEwICsyMDIsNTkgQEAgZnJhcHlf cGMgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTE0OTg0LDEzICsxMDAwMSwx MyBAQCBpbmRleCAwMDAwMDAwLi5hMzE0MGJjCiArfQogZGlmZiAtLWdpdCBhL2dkYi9weXRob24v cHktaW5mZXJpb3IuYyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwogbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLjVlOTBjYzIKK2luZGV4IDAwMDAwMDAuLmIyNTlhYjUKIC0t LSAvZGV2L251bGwKICsrKyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYwotQEAgLTAsMCArMSw5 MjYgQEAKK0BAIC0wLDAgKzEsOTM0IEBACiArLyogUHl0aG9uIGludGVyZmFjZSB0byBpbmZlcmlv cnMuCiArCi0rICAgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyAgIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KICsKICsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCiArCkBAIC0xNTA3Miw3 ICsxMDA4OSw3IEBAIGluZGV4IDAwMDAwMDAuLjVlOTBjYzIKICsKICsvKiBMaXN0IGNvbnRhaW5p bmcgaW5mZXJpb3Jfb2JqZWN0cy4gIFRoaXMgbGlzdCBvd25zIGEgcmVmZXJlbmNlIHRvIGVhY2gK ICsgICBvYmplY3QgaXQgY29udGFpbnMuICAqLwotK3N0YXRpYyBzdHJ1Y3QgaW5mbGlzdF9lbnRy eSAqaW5mZXJpb3JfbGlzdDsKKytzdGF0aWMgc3RydWN0IGluZmxpc3RfZW50cnkgKmdkYnB5X2lu ZmVyaW9yX2xpc3Q7CiArCiArc3RhdGljIGludCBuaW5mZXJpb3JzOwogKwpAQCAtMTUwOTQsNyAr MTAxMTEsMTAgQEAgaW5kZXggMDAwMDAwMC4uNWU5MGNjMgogKyAgICAgIHJldHVybjsKICsgICAg fQogKwotKyAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52IChnZXRfY3VycmVudF9hcmNoICgp LCBjdXJyZW50X2xhbmd1YWdlKTsKKysgIC8qIFdoaWxlIGNyZWF0aW5nIG5ldyBpbmZlcmlvciBu byBpbmZlcmlvciB0aHJlYWQgaXMgYXZhaWxhYmxlLiAgVGhlcmVmb3JlCisrICAgICBnZXRfY3Vy cmVudF9hcmNoIGhhcyBubyB2YWxpZCBjdXJyZW50IGZyYW1lIChhbmQgaXQgd291bGQgY3Jhc2gp LiAgKi8KKysKKysgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9uX2VudiAodGFyZ2V0X2dkYmFyY2gs IGN1cnJlbnRfbGFuZ3VhZ2UpOwogKwogKyAgaW5mX29iaiA9IFB5T2JqZWN0X05ldyAoaW5mZXJp b3Jfb2JqZWN0LCAmaW5mZXJpb3Jfb2JqZWN0X3R5cGUpOwogKyAgaWYgKCFpbmZfb2JqKQpAQCAt MTUxMTEsOSArMTAxMzEsOSBAQCBpbmRleCAwMDAwMDAwLi41ZTkwY2MyCiArCiArICBlbnRyeSA9 IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGluZmxpc3RfZW50cnkpKTsKICsgIGVudHJ5LT5pbmZf b2JqID0gaW5mX29iajsKLSsgIGVudHJ5LT5uZXh0ID0gaW5mZXJpb3JfbGlzdDsKKysgIGVudHJ5 LT5uZXh0ID0gZ2RicHlfaW5mZXJpb3JfbGlzdDsKICsKLSsgIGluZmVyaW9yX2xpc3QgPSBlbnRy eTsKKysgIGdkYnB5X2luZmVyaW9yX2xpc3QgPSBlbnRyeTsKICsKICsgIG5pbmZlcmlvcnMrKzsK ICsKQEAgLTE1MTI2LDEyICsxMDE0NiwxMiBAQCBpbmRleCAwMDAwMDAwLi41ZTkwY2MyCiArc3Rh dGljIHZvaWQKICtkZWxldGVfaW5mZXJpb3Jfb2JqZWN0IChpbnQgcGlkKQogK3sKLSsgIFB5R0lM U3RhdGVfU1RBVEUgc3RhdGU7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKICsgIHN0cnVj dCBpbmZsaXN0X2VudHJ5ICoqaW5mX2VudHJ5LCAqaW5mX3RtcDsKICsgIHN0cnVjdCB0aHJlYWRs aXN0X2VudHJ5ICp0aF9lbnRyeSwgKnRoX3RtcDsKICsKICsgIC8qIEZpbmQgaW5mZXJpb3Jfb2Jq ZWN0IGZvciB0aGUgZ2l2ZW4gUElELiAgKi8KLSsgIGZvciAoaW5mX2VudHJ5ID0gJmluZmVyaW9y X2xpc3Q7ICppbmZfZW50cnkgIT0gTlVMTDsKKysgIGZvciAoaW5mX2VudHJ5ID0gJmdkYnB5X2lu ZmVyaW9yX2xpc3Q7ICppbmZfZW50cnkgIT0gTlVMTDsKICsgICAgICAgaW5mX2VudHJ5ID0gJigq aW5mX2VudHJ5KS0+bmV4dCkKICsgICAgaWYgKCgqaW5mX2VudHJ5KS0+aW5mX29iai0+aW5mZXJp b3ItPnBpZCA9PSBwaWQpCiArICAgICAgYnJlYWs7CkBAIC0xNTEzOSw3ICsxMDE1OSw3IEBAIGlu ZGV4IDAwMDAwMDAuLjVlOTBjYzIKICsgIGlmICghKmluZl9lbnRyeSkKICsgICAgcmV0dXJuOwog KwotKyAgc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAgPSBlbnN1cmVf cHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CiArCiAr ICBpbmZfdG1wID0gKmluZl9lbnRyeTsKICsgIGluZl90bXAtPmluZl9vYmotPmluZmVyaW9yID0g TlVMTDsKQEAgLTE1MTYyLDcgKzEwMTgyLDcgQEAgaW5kZXggMDAwMDAwMC4uNWU5MGNjMgogKwog KyAgbmluZmVyaW9ycy0tOwogKwotKyAgUHlHSUxTdGF0ZV9SZWxlYXNlIChzdGF0ZSk7CisrICBk b19jbGVhbnVwcyAoY2xlYW51cCk7CiArfQogKwogKy8qIEZpbmRzIHRoZSBQeXRob24gSW5mZXJp b3Igb2JqZWN0IGZvciB0aGUgZ2l2ZW4gcGlkLiAgUmV0dXJucyBhIGJvcnJvd2VkCkBAIC0xNTE3 Miw3ICsxMDE5Miw3IEBAIGluZGV4IDAwMDAwMDAuLjVlOTBjYzIKICt7CiArICBzdHJ1Y3QgaW5m bGlzdF9lbnRyeSAqcDsKICsKLSsgIGZvciAocCA9IGluZmVyaW9yX2xpc3Q7IHAgIT0gTlVMTDsg cCA9IHAtPm5leHQpCisrICBmb3IgKHAgPSBnZGJweV9pbmZlcmlvcl9saXN0OyBwICE9IE5VTEw7 IHAgPSBwLT5uZXh0KQogKyAgICBpZiAocC0+aW5mX29iai0+aW5mZXJpb3ItPnBpZCA9PSBwaWQp CiArICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBwLT5pbmZfb2JqOwogKwpAQCAtMTUxODksNyAr MTAyMDksNyBAQCBpbmRleCAwMDAwMDAwLi41ZTkwY2MyCiArICBzdHJ1Y3QgdGhyZWFkbGlzdF9l bnRyeSAqcTsKICsKICsgIHBpZCA9IFBJREdFVCAocHRpZCk7Ci0rICBmb3IgKHAgPSBpbmZlcmlv cl9saXN0OyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQorKyAgZm9yIChwID0gZ2RicHlfaW5mZXJp b3JfbGlzdDsgcCAhPSBOVUxMOyBwID0gcC0+bmV4dCkKICsgICAgaWYgKHAtPmluZl9vYmotPmlu ZmVyaW9yLT5waWQgPT0gcGlkKQogKyAgICAgIGZvciAocSA9IHAtPmluZl9vYmotPnRocmVhZHM7 IHEgIT0gTlVMTDsgcSA9IHEtPm5leHQpCiArCWlmIChwdGlkX2VxdWFsIChxLT50aHJlYWRfb2Jq LT50aHJlYWQtPnB0aWQsIHB0aWQpKQpAQCAtMTUyMDUsMTkgKzEwMjI1LDIyIEBAIGluZGV4IDAw MDAwMDAuLjVlOTBjYzIKICtzdGF0aWMgdm9pZAogK2FkZF90aHJlYWRfb2JqZWN0IChzdHJ1Y3Qg dGhyZWFkX2luZm8gKnRwKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RBVEUgc3RhdGU7CisrICBzdHJ1 Y3QgY2xlYW51cCAqY2xlYW51cDsKICsgIHRocmVhZF9vYmplY3QgKnRocmVhZF9vYmo7CiArICBp bmZlcmlvcl9vYmplY3QgKmluZl9vYmo7CiArICBzdHJ1Y3QgdGhyZWFkbGlzdF9lbnRyeSAqZW50 cnk7CiArCi0rICBzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlICgpOworKyAgLyogTm90ZSB0aGF0 IHRoZSBhcmNoIGRvZXMgbm90IG1hdHRlciBoZXJlLCBiZWNhdXNlIHdlIGNhbid0IHJ1bgorKyAg ICAgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlLiAgQ2FsbGluZyBnZXRfY3VycmVudF9hcmNoIGhlcmUg d2lsbAorKyAgICAgY3Jhc2guICAqLworKyAgY2xlYW51cCA9IGVuc3VyZV9weXRob25fZW52ICh0 YXJnZXRfZ2RiYXJjaCwgY3VycmVudF9sYW5ndWFnZSk7CiArCiArICB0aHJlYWRfb2JqID0gY3Jl YXRlX3RocmVhZF9vYmplY3QgKHRwKTsKICsgIGlmICghdGhyZWFkX29iaikKICsgICAgewogKyAg ICAgIHdhcm5pbmcgKF8oIkNhbid0IGNyZWF0ZSBQeXRob24gSW5mZXJpb3JUaHJlYWQgb2JqZWN0 LiIpKTsKICsgICAgICBnZGJweV9wcmludF9zdGFjayAoKTsKLSsgICAgICBQeUdJTFN0YXRlX1Jl bGVhc2UgKHN0YXRlKTsKKysgICAgICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiArICAgICAgcmV0 dXJuOwogKyAgICB9CiArCkBAIC0xNTIzMCwxMyArMTAyNTMsMTMgQEAgaW5kZXggMDAwMDAwMC4u NWU5MGNjMgogKyAgaW5mX29iai0+dGhyZWFkcyA9IGVudHJ5OwogKyAgaW5mX29iai0+bnRocmVh ZHMrKzsKICsKLSsgIFB5R0lMU3RhdGVfUmVsZWFzZSAoc3RhdGUpOworKyAgZG9fY2xlYW51cHMg KGNsZWFudXApOwogK30KICsKICtzdGF0aWMgdm9pZAogK2RlbGV0ZV90aHJlYWRfb2JqZWN0IChz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwLCBpbnQgaWdub3JlKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RB VEUgc3RhdGU7CisrICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKICsgIGluZmVyaW9yX29iamVj dCAqaW5mX29iajsKICsgIHRocmVhZF9vYmplY3QgKnRocmVhZF9vYmo7CiArICBzdHJ1Y3QgdGhy ZWFkbGlzdF9lbnRyeSAqKmVudHJ5LCAqdG1wOwpAQCAtMTUyNTMsNyArMTAyNzYsNyBAQCBpbmRl eCAwMDAwMDAwLi41ZTkwY2MyCiArICBpZiAoISplbnRyeSkKICsgICAgcmV0dXJuOwogKwotKyAg c3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAgPSBlbnN1cmVfcHl0aG9u X2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFnZSk7CiArCiArICB0bXAg PSAqZW50cnk7CiArICB0bXAtPnRocmVhZF9vYmotPnRocmVhZCA9IE5VTEw7CkBAIC0xNTI2NSw3 ICsxMDI4OCw3IEBAIGluZGV4IDAwMDAwMDAuLjVlOTBjYzIKICsgIHhmcmVlICh0bXApOwogKwog KwotKyAgUHlHSUxTdGF0ZV9SZWxlYXNlIChzdGF0ZSk7CisrICBkb19jbGVhbnVwcyAoY2xlYW51 cCk7CiArfQogKwogK3N0YXRpYyBQeU9iamVjdCAqCkBAIC0xNTM0Myw3ICsxMDM2Niw5IEBAIGlu ZGV4IDAwMDAwMDAuLjVlOTBjYzIKICsKICsgIC8qIFRoZSBsaXN0IGlzIGluIHJldmVyc2Ugb3Jk ZXIgb2YgaW5mZXJpb3IgYWdlIChpLmUuLCBuZXdlc3QgY29tZXMgZmlyc3QpLAogKyAgICAgaXMg dGhpcyBhIHByb2JsZW0/ICAqLwotKyAgZm9yIChpID0gMCwgZW50cnkgPSBpbmZlcmlvcl9saXN0 OyBpIDwgbmluZmVyaW9yczsgaSsrLCBlbnRyeSA9IGVudHJ5LT5uZXh0KQorKyAgZm9yIChpID0g MCwgZW50cnkgPSBnZGJweV9pbmZlcmlvcl9saXN0OworKyAgICAgICBpIDwgbmluZmVyaW9yczsK KysgICAgICAgaSsrLCBlbnRyeSA9IGVudHJ5LT5uZXh0KQogKyAgICB7CiArICAgICAgUHlfSU5D UkVGIChlbnRyeS0+aW5mX29iaik7CiArICAgICAgUHlUdXBsZV9TRVRfSVRFTSAodHVwbGUsIGks IChQeU9iamVjdCAqKSBlbnRyeS0+aW5mX29iaik7CkBAIC0xNTc2NywxMCArMTA3OTIsMTAgQEAg aW5kZXggMDAwMDAwMC4uNWU5MGNjMgogKyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxl LCAiSW5mZXJpb3IiLAogKwkJICAgICAgKFB5T2JqZWN0ICopICZpbmZlcmlvcl9vYmplY3RfdHlw ZSk7CiArCi0rICBpbmZlcmlvcl9saXN0ID0gTlVMTDsKKysgIGdkYnB5X2luZmVyaW9yX2xpc3Qg PSBOVUxMOwogKyAgbmluZmVyaW9ycyA9IDA7CiArCi0rICBvYnNlcnZlcl9hdHRhY2hfbmV3X2lu ZmVyaW9yIChhZGRfaW5mZXJpb3Jfb2JqZWN0KTsKKysgIG9ic2VydmVyX2F0dGFjaF9pbmZlcmlv cl9hcHBlYXJlZCAoYWRkX2luZmVyaW9yX29iamVjdCk7CiArICBvYnNlcnZlcl9hdHRhY2hfaW5m ZXJpb3JfZXhpdCAoZGVsZXRlX2luZmVyaW9yX29iamVjdCk7CiArICBvYnNlcnZlcl9hdHRhY2hf bmV3X3RocmVhZCAoYWRkX3RocmVhZF9vYmplY3QpOwogKyAgb2JzZXJ2ZXJfYXR0YWNoX3RocmVh ZF9leGl0IChkZWxldGVfdGhyZWFkX29iamVjdCk7CkBAIC0xNzA5MiwxOSArMTIxMTcsMTEgQEAg aW5kZXggMDAwMDAwMC4uMWY1OTFhOAogKyAgUHlUeXBlX0dlbmVyaWNOZXcJCSAgLyogdHBfbmV3 ICovCiArfTsKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMgYi9nZGIv cHl0aG9uL3B5LXByZXR0eXByaW50LmMKLWluZGV4IDVkNjk2YzguLmE2MzQ4YmEgMTAwNjQ0Citp bmRleCAxOTNmOTdjLi4yZjJiMzY1IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS1wcmV0dHlw cmludC5jCiArKysgYi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMKLUBAIC0xMjEsNiArMTIx LDcgQEAgZmluZF9wcmV0dHlfcHJpbnRlciAoUHlPYmplY3QgKnZhbHVlKQotICAgCi0gICByZXR1 cm4gZnVuY3Rpb247Ci0gfQotKwotIC8qIFByZXR0eS1wcmludCBhIHNpbmdsZSB2YWx1ZSwgdmlh IHRoZSBwcmludGVyIG9iamVjdCBQUklOVEVSLgotICAgIElmIHRoZSBmdW5jdGlvbiByZXR1cm5z IGEgc3RyaW5nLCBhIFB5T2JqZWN0IGNvbnRhaW5pbmcgdGhlIHN0cmluZwotICAgIGlzIHJldHVy bmVkLiAgT3RoZXJ3aXNlLCBpZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhIHZhbHVlLAotQEAgLTE0 MSwxMCArMTQyLDE1IEBAIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0ICpwcmludGVy LCBzdHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCi0gCSAgaWYgKCEgZ2RicHlfaXNfc3RyaW5nIChy ZXN1bHQpKQorQEAgLTE0MywxMCArMTQzLDE1IEBAIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5 T2JqZWN0ICpwcmludGVyLCBzdHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCisgCSAgaWYgKCEgZ2Ri cHlfaXNfc3RyaW5nIChyZXN1bHQpICYmICEgZ2RicHlfaXNfbGF6eV9zdHJpbmcgKHJlc3VsdCkp CiAgCSAgICB7CiAgCSAgICAgICpvdXRfdmFsdWUgPSBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0aG9u IChyZXN1bHQpOwogLQkgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQgKCkpCkBAIC0xNzEyMyw3ICsx MjE0MCw3IEBAIGluZGV4IDVkNjk2YzguLmE2MzQ4YmEgMTAwNjQ0CiAgCSAgICB9CiAgCX0KICAg ICAgfQotQEAgLTU1NiwxNCArNTYyLDcgQEAgZ2RicHlfZ2V0X3Zhcm9ial9wcmV0dHlfcHJpbnRl ciAoc3RydWN0IHZhbHVlICp2YWx1ZSkKK0BAIC02MDQsMTQgKzYwOSw3IEBAIGdkYnB5X2dldF92 YXJvYmpfcHJldHR5X3ByaW50ZXIgKHN0cnVjdCB2YWx1ZSAqdmFsdWUpCiAgewogICAgUHlPYmpl Y3QgKnZhbF9vYmo7CiAgICBQeU9iamVjdCAqcHJldHR5X3ByaW50ZXIgPSBOVUxMOwpAQCAtMTc4 MDksNyArMTI4MjYsNyBAQCBpbmRleCAwMDAwMDAwLi44MzBlNTg2CiArICBzYWxfb2JqZWN0X2dl dHNldAkJICAvKiB0cF9nZXRzZXQgKi8KICt9OwogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHkt dHlwZS5jIGIvZ2RiL3B5dGhvbi9weS10eXBlLmMKLWluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAw NjQ0CitpbmRleCBhOTdjMTI1Li5hYzM2NmJiIDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS10 eXBlLmMKICsrKyBiL2dkYi9weXRob24vcHktdHlwZS5jCiBAQCAtMjcsNiArMjcsOCBAQApAQCAt MTc4NDAsMTkgKzEyODU3LDcgQEAgaW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQKICBzdGF0 aWMgUHlUeXBlT2JqZWN0IHR5cGVfb2JqZWN0X3R5cGU7CiAgCiAgLyogQSBGaWVsZCBvYmplY3Qu ICAqLwotQEAgLTE2OSw2ICsxNzcsMTEgQEAgY29udmVydF9maWVsZCAoc3RydWN0IHR5cGUgKnR5 cGUsIGludCBmaWVsZCkKLSAgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nIChyZXN1bHQsICJh cnRpZmljaWFsIiwgYXJnKSA8IDApCi0gICAgIGdvdG8gZmFpbGFyZzsKLSAKLSsgIGFyZyA9IGZp ZWxkIDwgVFlQRV9OX0JBU0VDTEFTU0VTICh0eXBlKSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKLSsg IFB5X0lOQ1JFRiAoYXJnKTsKLSsgIGlmIChQeU9iamVjdF9TZXRBdHRyU3RyaW5nIChyZXN1bHQs ICJpc19iYXNlX2NsYXNzIiwgYXJnKSA8IDApCi0rICAgIGdvdG8gZmFpbGFyZzsKLSsKLSAgIGFy ZyA9IFB5TG9uZ19Gcm9tTG9uZyAoVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBmaWVsZCkpOwot ICAgaWYgKCFhcmcpCi0gICAgIGdvdG8gZmFpbDsKLUBAIC0zNjEsNyArMzc0LDcgQEAgdHlweV9n ZXRfc2l6ZW9mIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK0BAIC00MzQsNyArNDQy LDcgQEAgdHlweV9nZXRfc2l6ZW9mIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKICB9 CiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoKQEAgLTE3ODYxLDcgKzEyODY2LDcgQEAgaW5kZXgg NTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IE5VTEw7 CiAgICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci1AQCAtMzc1LDcgKzM4 OCw3IEBAIHR5cHlfbG9va3VwX3R5cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCitAQCAtNDQ4LDcg KzQ1Niw3IEBAIHR5cHlfbG9va3VwX3R5cGVuYW1lIChjaGFyICp0eXBlX25hbWUpCiAgCXR5cGUg PSBsb29rdXBfZW51bSAodHlwZV9uYW1lICsgNSwgTlVMTCk7CiAgICAgICAgZWxzZQogIAl0eXBl ID0gbG9va3VwX3R5cGVuYW1lIChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoLApAQCAt MTc4NzAsNyArMTI4NzUsNyBAQCBpbmRleCA1OTBkOTBhLi5mNTEyMjQ4IDEwMDY0NAogICAgICB9 CiAgICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCiAgICAgIHsKLUBAIC0zODksNyArNDAyLDggQEAg dHlweV9sb29rdXBfdHlwZW5hbWUgKGNoYXIgKnR5cGVfbmFtZSkKK0BAIC00NjIsNyArNDcwLDgg QEAgdHlweV9sb29rdXBfdHlwZW5hbWUgKGNoYXIgKnR5cGVfbmFtZSkKICB9CiAgCiAgc3RhdGlj IHN0cnVjdCB0eXBlICoKQEAgLTE3ODgwLDcgKzEyODg1LDcgQEAgaW5kZXggNTkwZDkwYS4uZjUx MjI0OCAxMDA2NDQKICB7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKICAgIGNoYXIgKnR5cGVfbmFt ZTsKLUBAIC00MDQsNyArNDE4LDcgQEAgdHlweV9sb29rdXBfdHlwZSAoc3RydWN0IGRlbWFuZ2xl X2NvbXBvbmVudCAqZGVtYW5nbGVkKQorQEAgLTQ3Nyw3ICs0ODYsNyBAQCB0eXB5X2xvb2t1cF90 eXBlIChzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpkZW1hbmdsZWQpCiAgICAgICAgfHwgZGVt YW5nbGVkX3R5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX0NPTlNUCiAgICAgICAgfHwgZGVtYW5n bGVkX3R5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX1ZPTEFUSUxFKQogICAgICB7CkBAIC0xNzg4 OSw3ICsxMjg5NCw3IEBAIGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0CiAgICAgICAgaWYg KCEgdHlwZSkKICAJcmV0dXJuIE5VTEw7CiAgCi1AQCAtNDIyLDcgKzQzNiw3IEBAIHR5cHlfbG9v a3VwX3R5cGUgKHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRlbWFuZ2xlZCkKK0BAIC00OTUs NyArNTA0LDcgQEAgdHlweV9sb29rdXBfdHlwZSAoc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAq ZGVtYW5nbGVkKQogICAgICB9CiAgCiAgICB0eXBlX25hbWUgPSBjcF9jb21wX3RvX3N0cmluZyAo ZGVtYW5nbGVkLCAxMCk7CkBAIC0xNzg5OCw3ICsxMjkwMyw3IEBAIGluZGV4IDU5MGQ5MGEuLmY1 MTIyNDggMTAwNjQ0CiAgICB4ZnJlZSAodHlwZV9uYW1lKTsKICAKICAgIHJldHVybiB0eXBlOwot QEAgLTQzNiwxMCArNDUwLDIzIEBAIHR5cHlfdGVtcGxhdGVfYXJndW1lbnQgKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAqYXJncykKK0BAIC01MDksMTAgKzUxOCwyMyBAQCB0eXB5X3RlbXBsYXRl X2FyZ3VtZW50IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiAgICBzdHJ1Y3QgZGVt YW5nbGVfY29tcG9uZW50ICpkZW1hbmdsZWQ7CiAgICBjb25zdCBjaGFyICplcnI7CiAgICBzdHJ1 Y3QgdHlwZSAqYXJndHlwZTsKQEAgLTE3OTIzLDcgKzEyOTI4LDcgQEAgaW5kZXggNTkwZDkwYS4u ZjUxMjI0OCAxMDA2NDQKICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKICAgIGlmIChU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SRUYpCiAgICAgIHR5cGUgPSBjaGVja190eXBl ZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci1AQCAtNDgyLDcgKzUwOSw3IEBAIHR5cHlf dGVtcGxhdGVfYXJndW1lbnQgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK0BAIC01 NTUsNyArNTc3LDcgQEAgdHlweV90ZW1wbGF0ZV9hcmd1bWVudCAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKQogICAgICAgIHJldHVybiBOVUxMOwogICAgICB9CiAgCkBAIC0xNzkzMiw3 ICsxMjkzNyw3IEBAIGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0CiAgICBpZiAoISBhcmd0 eXBlKQogICAgICByZXR1cm4gTlVMTDsKICAKLUBAIC01MjQsOCArNTUxLDU5IEBAIHR5cHlfc3Ry IChQeU9iamVjdCAqc2VsZikKK0BAIC01OTcsOCArNjE5LDU5IEBAIHR5cHlfc3RyIChQeU9iamVj dCAqc2VsZikKICAKICAMCiAgCkBAIC0xNzk5Miw3ICsxMjk5Nyw3IEBAIGluZGV4IDU5MGQ5MGEu LmY1MTIyNDggMTAwNjQ0CiAgc3RhdGljIHZvaWQKICBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICB7Ci1AQCAtNTQzLDEyICs2MjEsMTMg QEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0 dW0pCitAQCAtNjE2LDEyICs2ODksMTMgQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgICAgIHsKICAgICAgICB0eXBlX29iamVjdCAq bmV4dCA9IG9iai0+bmV4dDsKICAKQEAgLTE4MDEwLDcgKzEzMDE1LDcgQEAgaW5kZXggNTkwZDkw YS4uZjUxMjI0OCAxMDA2NDQKICAKICAgICAgICBvYmogPSBuZXh0OwogICAgICB9Ci1AQCAtNTU5 LDQxICs2MzgsMjUgQEAgc2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdm9pZCAqZGF0dW0pCitAQCAtNjMyLDQxICs3MDYsMjUgQEAgc2F2ZV9vYmpmaWxlX3R5cGVz IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0pCiAgfQogIAogIHN0YXRpYyB2 b2lkCkBAIC0xODA2NCw3ICsxMzA2OSw3IEBAIGluZGV4IDU5MGQ5MGEuLmY1MTIyNDggMTAwNjQ0 CiAgfQogIAogIC8qIENyZWF0ZSBhIG5ldyBUeXBlIHJlZmVycmluZyB0byBUWVBFLiAgKi8KLUBA IC02MDQsNyArNjY3LDEwIEBAIHR5cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0eXBlICp0eXBl KQorQEAgLTY3Nyw3ICs3MzUsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUg KnR5cGUpCiAgCiAgICB0eXBlX29iaiA9IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3QsICZ0eXBl X29iamVjdF90eXBlKTsKICAgIGlmICh0eXBlX29iaikKQEAgLTE4MDc2LDcgKzEzMDgxLDcgQEAg aW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQKICAKICAgIHJldHVybiAoUHlPYmplY3QgKikg dHlwZV9vYmo7CiAgfQotQEAgLTYyMywxNCArNjg5LDI4IEBAIHR5cGVfb2JqZWN0X3RvX3R5cGUg KFB5T2JqZWN0ICpvYmopCitAQCAtNjk2LDE0ICs3NTcsMjggQEAgdHlwZV9vYmplY3RfdG9fdHlw ZSAoUHlPYmplY3QgKm9iaikKICBQeU9iamVjdCAqCiAgZ2RicHlfbG9va3VwX3R5cGUgKFB5T2Jq ZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KQogIHsKQEAgLTE4MTA4LDcg KzEzMTEzLDcgQEAgaW5kZXggNTkwZDkwYS4uZjUxMjI0OCAxMDA2NDQKICAgIGlmICghIHR5cGUp CiAgICAgIHJldHVybiBOVUxMOwogIAotQEAgLTY2NCw2ICs3NDQsOCBAQCBnZGJweV9pbml0aWFs aXplX3R5cGVzICh2b2lkKQorQEAgLTczNyw2ICs4MTIsOCBAQCBnZGJweV9pbml0aWFsaXplX3R5 cGVzICh2b2lkKQogIAogICAgUHlfSU5DUkVGICgmZmllbGRfb2JqZWN0X3R5cGUpOwogICAgUHlN b2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiRmllbGQiLCAoUHlPYmplY3QgKikgJmZpZWxk X29iamVjdF90eXBlKTsKQEAgLTE4MTE4LDcgKzEzMTIzLDcgQEAgaW5kZXggNTkwZDkwYS4uZjUx MjI0OCAxMDA2NDQKICAKICAMCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS11dGlscy5jIGIv Z2RiL3B5dGhvbi9weS11dGlscy5jCi1pbmRleCA0OWMwNDM3Li44NGE0NzZlIDEwMDY0NAoraW5k ZXggNGNjZjk3Zi4uODdjZGU3MyAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktdXRpbHMuYwog KysrIGIvZ2RiL3B5dGhvbi9weS11dGlscy5jCiBAQCAtMTksNiArMTksNyBAQApAQCAtMTgxNzks NyArMTMxODQsNyBAQCBpbmRleCA0OWMwNDM3Li44NGE0NzZlIDEwMDY0NAogKyAgcmV0dXJuIDE7 CiArfQogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktdmFsdWUuYyBiL2dkYi9weXRob24vcHkt dmFsdWUuYwotaW5kZXggMDE0NjU5My4uYjgyZmNiNiAxMDA2NDQKK2luZGV4IGE3OTI4MTkuLmJk YWM4MGUgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKICsrKyBiL2dkYi9weXRo b24vcHktdmFsdWUuYwogQEAgLTI1LDYgKzI1LDcgQEAKQEAgLTE4MjAxLDcgKzEzMjA2LDcgQEAg aW5kZXggMDE0NjU5My4uYjgyZmNiNiAxMDA2NDQKICAjZGVmaW5lIGJ1aWx0aW5fdHlwZV9weWJv b2wgXAogICAgbGFuZ3VhZ2VfYm9vbF90eXBlIChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJh cmNoKQogIAotQEAgLTkxMyw3ICs5MTgsMzQgQEAgY29udmVydF92YWx1ZV9mcm9tX3B5dGhvbiAo UHlPYmplY3QgKm9iaikKK0BAIC05NDUsNyArOTUwLDM0IEBAIGNvbnZlcnRfdmFsdWVfZnJvbV9w eXRob24gKFB5T2JqZWN0ICpvYmopCiAgCXsKICAJICBMT05HRVNUIGwgPSBQeUxvbmdfQXNMb25n TG9uZyAob2JqKTsKICAKQEAgLTE4MjM3LDcgKzEzMjQyLDcgQEAgaW5kZXggMDE0NjU5My4uYjgy ZmNiNiAxMDA2NDQKICAJICAgIHZhbHVlID0gdmFsdWVfZnJvbV9sb25nZXN0IChidWlsdGluX3R5 cGVfcHlsb25nLCBsKTsKICAJfQogICAgICAgIGVsc2UgaWYgKFB5RmxvYXRfQ2hlY2sgKG9iaikp Ci1AQCAtOTcyLDYgKzEwMDQsMjUgQEAgZ2RicHlfaGlzdG9yeSAoUHlPYmplY3QgKnNlbGYsIFB5 T2JqZWN0ICphcmdzKQorQEAgLTEwMTEsNiArMTA0MywyNSBAQCBnZGJweV9oaXN0b3J5IChQeU9i amVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiAgICByZXR1cm4gdmFsdWVfdG9fdmFsdWVfb2Jq ZWN0IChyZXNfdmFsKTsKICB9CiAgCkBAIC0xODI2Myw3ICsxMzI2OCw3IEBAIGluZGV4IDAxNDY1 OTMuLmI4MmZjYjYgMTAwNjQ0CiAgdm9pZAogIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lk KQogIHsKLUBAIC05ODIsNiArMTAzMyw4IEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lk KQorQEAgLTEwMjEsNiArMTA3Miw4IEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQog ICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUiLCAoUHlPYmplY3QgKikg JnZhbHVlX29iamVjdF90eXBlKTsKICAKICAgIHZhbHVlc19pbl9weXRob24gPSBOVUxMOwpAQCAt MTgyNzMsMTAgKzEzMjc4LDEwIEBAIGluZGV4IDAxNDY1OTMuLmI4MmZjYjYgMTAwNjQ0CiAgCiAg DAogZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmggYi9nZGIvcHl0aG9u L3B5dGhvbi1pbnRlcm5hbC5oCi1pbmRleCA2N2E3OGFmLi40NzY2MmQ5IDEwMDY0NAoraW5kZXgg OTE5NmYwOC4uNTIzMGE4YyAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFs LmgKICsrKyBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLUBAIC02MSwzMyArNjEsNzYg QEAgdHlwZWRlZiBpbnQgUHlfc3NpemVfdDsKK0BAIC02MSwzNiArNjEsNzkgQEAgdHlwZWRlZiBp bnQgUHlfc3NpemVfdDsKICAjZGVmaW5lIFB5RXZhbF9SZWxlYXNlTG9jaygpIDAKICAjZW5kaWYK ICAKQEAgLTE4MzEyLDYgKzEzMzE3LDggQEAgaW5kZXggNjdhNzhhZi4uNDc2NjJkOSAxMDA2NDQK ICBQeU9iamVjdCAqZ2RicHlfc2VsZWN0ZWRfZnJhbWUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncyk7CiArUHlPYmplY3QgKmdkYnB5X2Jsb2NrX2Zvcl9wYyAoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICphcmdzKTsKICBQeU9iamVjdCAqZ2RicHlfbG9va3VwX3R5cGUgKFB5T2JqZWN0 ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3KTsKKyBQeU9iamVjdCAqZ2RicHlf Y3JlYXRlX2xhenlfc3RyaW5nX29iamVjdCAoQ09SRV9BRERSIGFkZHJlc3MsIGxvbmcgbGVuZ3Ro LAorIAkJCQkJICAgY29uc3QgY2hhciAqZW5jb2RpbmcsIHN0cnVjdCB0eXBlICp0eXBlKTsKICtQ eU9iamVjdCAqZ2RicHlfaW5mZXJpb3JzIChQeU9iamVjdCAqdW51c2VkLCBQeU9iamVjdCAqdW51 c2VkMik7CiArUHlPYmplY3QgKmdkYnB5X3NlbGVjdGVkX3RocmVhZCAoUHlPYmplY3QgKnNlbGYs IFB5T2JqZWN0ICphcmdzKTsKICAKQEAgLTE4MzQ3LDEzICsxMzM1NCwxNCBAQCBpbmRleCA2N2E3 OGFmLi40NzY2MmQ5IDEwMDY0NAogK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9ibG9ja3MgKHZvaWQp OwogIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9mdW5jdGlvbnMgKHZvaWQpOwogIHZvaWQgZ2RicHlf aW5pdGlhbGl6ZV9vYmpmaWxlICh2b2lkKTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfbGF6eV9z dHJpbmcgKHZvaWQpOwogK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9wYXJhbWV0ZXJzICh2b2lkKTsK ICt2b2lkIGdkYnB5X2luaXRpYWxpemVfdGhyZWFkICh2b2lkKTsKICt2b2lkIGdkYnB5X2luaXRp YWxpemVfaW5mZXJpb3IgKHZvaWQpOwogIAogIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBf cHlfZGVjcmVmIChQeU9iamVjdCAqcHkpOwogIAotQEAgLTk3LDYgKzE0MCwxMiBAQCBzdHJ1Y3Qg Y2xlYW51cCAqZW5zdXJlX3B5dGhvbl9lbnYgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAg LTEwMCw2ICsxNDMsMTIgQEAgc3RydWN0IGNsZWFudXAgKmVuc3VyZV9weXRob25fZW52IChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICBleHRlcm4gc3RydWN0IGdkYmFyY2ggKnB5dGhvbl9nZGJh cmNoOwogIGV4dGVybiBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqcHl0aG9uX2xhbmd1YWdl OwogIApAQCAtMTgzNjYsNyArMTMzNzQsNyBAQCBpbmRleCA2N2E3OGFmLi40NzY2MmQ5IDEwMDY0 NAogIC8qIFVzZSB0aGlzIGFmdGVyIGEgVFJZX0VYQ0VQVCB0byB0aHJvdyB0aGUgYXBwcm9wcmlh dGUgUHl0aG9uCiAgICAgZXhjZXB0aW9uLiAgKi8KICAjZGVmaW5lIEdEQl9QWV9IQU5ETEVfRVhD RVBUSU9OKEV4Y2VwdGlvbikJCQkJXAotQEAgLTEwNyw2ICsxNTYsMTkgQEAgZXh0ZXJuIGNvbnN0 IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpweXRob25fbGFuZ3VhZ2U7CitAQCAtMTEwLDYgKzE1OSwx OSBAQCBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvbl9sYW5ndWFnZTsK ICAJCQkgICAgICIlcyIsIEV4Y2VwdGlvbi5tZXNzYWdlKTsJCQlcCiAgICAgIH0gd2hpbGUgKDAp CiAgCkBAIC0xODM4Niw5ICsxMzM5NCw5IEBAIGluZGV4IDY3YTc4YWYuLjQ3NjYyZDkgMTAwNjQ0 CiAgCiAgdm9pZCBnZGJweV9wcmludF9zdGFjayAodm9pZCk7CiAgCi1AQCAtMTE4LDE3ICsxODAs MjIgQEAgY2hhciAqcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoUHlPYmplY3QgKm9iaik7 Ci0gUHlPYmplY3QgKnRhcmdldF9zdHJpbmdfdG9fdW5pY29kZSAoY29uc3QgZ2RiX2J5dGUgKnN0 ciwgaW50IGxlbmd0aCk7Ci0gaW50IGdkYnB5X2lzX3N0cmluZyAoUHlPYmplY3QgKm9iaik7CitA QCAtMTI1LDE3ICsxODcsMjIgQEAgZ2RiX2J5dGUgKmdkYnB5X2V4dHJhY3RfbGF6eV9zdHJpbmcg KFB5T2JqZWN0ICpzdHJpbmcsCisgCQkJCSAgICAgc3RydWN0IHR5cGUgKipzdHJfdHlwZSwgCisg CQkJCSAgICAgbG9uZyAqbGVuZ3RoLCBjaGFyICoqZW5jb2RpbmcpOwogIAogK2ludCBnZGJweV9p c192YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmopOwogKwpAQCAtMTg0MTEsNyArMTM0MTksNyBA QCBpbmRleCA2N2E3OGFmLi40NzY2MmQ5IDEwMDY0NAogIAogICNlbmRpZiAvKiBHREJfUFlUSE9O X0lOVEVSTkFMX0ggKi8KIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5 dGhvbi9weXRob24uYwotaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQKK2luZGV4IDgyNzM3 MmMuLjE3MWNkNWIgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCiArKysgYi9nZGIv cHl0aG9uL3B5dGhvbi5jCiBAQCAtMjcsNiArMjcsNyBAQApAQCAtMTg1MTAsNyArMTM1MTgsNyBA QCBpbmRleCAyNTRiZDI4Li41YTJhOWFlIDEwMDY0NAogIH0KICAKICAvKiBBIFB5dGhvbiBmdW5j dGlvbiB3aGljaCBldmFsdWF0ZXMgYSBzdHJpbmcgdXNpbmcgdGhlIGdkYiBDTEkuICAqLwotQEAg LTMxOSw2ICszMjcsMjMzIEBAIGV4ZWN1dGVfZ2RiX2NvbW1hbmQgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncykKK0BAIC0zMjMsNiArMzMxLDEwNSBAQCBleGVjdXRlX2dkYl9jb21tYW5k IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiAgICBQeV9SRVRVUk5fTk9ORTsKICB9 CiAgCkBAIC0xODUyNyw3ICsxMzUzNSw3IEBAIGluZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0 CiArICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJLIiwgJnBjKSkKICsgICAgcmV0dXJu IE5VTEw7CiArCi0rICBzb25hbWUgPSBzb2xpYl9uYW1lX2Zyb21fYWRkcmVzcyAocGMpOworKyAg c29uYW1lID0gc29saWJfbmFtZV9mcm9tX2FkZHJlc3MgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwg cGMpOwogKyAgaWYgKHNvbmFtZSkKICsgICAgc3RyX29iaiA9IFB5U3RyaW5nX0RlY29kZSAoc29u YW1lLCBzdHJsZW4gKHNvbmFtZSksIGhvc3RfY2hhcnNldCAoKSwgTlVMTCk7CiArICBlbHNlCkBA IC0xODYxMywyOCArMTM2MjEsMTMgQEAgaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQKICsg IFB5X1JFVFVSTl9OT05FOwogK30KICsKLSsvKiBQYXJzZSBhIHN0cmluZyBhbmQgZXZhbHVhdGUg aXQgYXMgYW4gZXhwcmVzc2lvbi4gICovCi0rc3RhdGljIFB5T2JqZWN0ICoKLStnZGJweV9wYXJz ZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIGNoYXIg KmV4cHJfc3RyOwotKyAgc3RydWN0IHZhbHVlICpyZXN1bHQgPSBOVUxMOwotKyAgdm9sYXRpbGUg c3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwotKyAgaWYgKCFQeUFyZ19QYXJzZVR1cGxl IChhcmdzLCAicyIsICZleHByX3N0cikpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgVFJZX0NB VENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHJlc3VsdCA9IHBh cnNlX2FuZF9ldmFsIChleHByX3N0cik7Ci0rICAgIH0KLSsgIEdEQl9QWV9IQU5ETEVfRVhDRVBU SU9OIChleGNlcHQpOwotKwotKyAgcmV0dXJuIHZhbHVlX3RvX3ZhbHVlX29iamVjdCAocmVzdWx0 KTsKLSt9Ci0rCi0rDAotKworIC8qIFBhcnNlIGEgc3RyaW5nIGFuZCBldmFsdWF0ZSBpdCBhcyBh biBleHByZXNzaW9uLiAgKi8KKyBzdGF0aWMgUHlPYmplY3QgKgorIGdkYnB5X3BhcnNlX2FuZF9l dmFsIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitAQCAtMzQ1LDYgKzQ1MiwxMTQg QEAgZ2RicHlfcGFyc2VfYW5kX2V2YWwgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykK KyAKKyAMCisgCiArLyogUG9zdGluZyBhbmQgaGFuZGxpbmcgZXZlbnRzLiAgKi8KICsKICsvKiBB IHNpbmdsZSBldmVudC4gICovCkBAIC0xODY2MSwxMSArMTM2NTQsMTEgQEAgaW5kZXggMjU0YmQy OC4uNWEyYTlhZSAxMDA2NDQKICtzdGF0aWMgdm9pZAogK2dkYnB5X3J1bl9ldmVudHMgKGludCBl cnIsIGdkYl9jbGllbnRfZGF0YSBpZ25vcmUpCiArewotKyAgUHlHSUxTdGF0ZV9TVEFURSBzdGF0 ZTsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwogKyAgY2hhciBidWZmZXJbMTAwXTsKICsg IGludCByOwogKwotKyAgc3RhdGUgPSBQeUdJTFN0YXRlX0Vuc3VyZSAoKTsKKysgIGNsZWFudXAg PSBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5ndWFn ZSk7CiArCiArICAvKiBKdXN0IHJlYWQgd2hhdGV2ZXIgaXMgYXZhaWxhYmxlIG9uIHRoZSBmZC4g IEl0IGlzIHJlbGF0aXZlbHkKICsgICAgIGhhcm1sZXNzIGlmIHRoZXJlIGFyZSBhbnkgYnl0ZXMg bGVmdCBvdmVyLiAgKi8KQEAgLTE4Njg3LDcgKzEzNjgwLDcgQEAgaW5kZXggMjU0YmQyOC4uNWEy YTlhZSAxMDA2NDQKICsgICAgICB4ZnJlZSAoaXRlbSk7CiArICAgIH0KICsKLSsgIFB5R0lMU3Rh dGVfUmVsZWFzZSAoc3RhdGUpOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwogK30KICsKICsv KiBTdWJtaXQgYW4gZXZlbnQgdG8gdGhlIGdkYiB0aHJlYWQuICAqLwpAQCAtMTg3NDEsMTAgKzEz NzM0LDEyIEBAIGluZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiArICAgIH0KICt9CiArCi0g DAotIAorKwwKKysKICAvKiBQcmludGluZy4gICovCi1AQCAtMzU3LDYgKzU5Miw2OSBAQCBnZGJw eV9wcmludF9zdGFjayAodm9pZCkKKyAKKyAvKiBBIHB5dGhvbiBmdW5jdGlvbiB0byB3cml0ZSBh IHNpbmdsZSBzdHJpbmcgdXNpbmcgZ2RiJ3MgZmlsdGVyZWQKK0BAIC0zODEsNiArNTk2LDY3IEBA IGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQogIAogIAwKICAKQEAgLTE4Nzc4LDEwICsxMzc3Myw5 IEBAIGluZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiArcnVuX3B5dGhvbl9zY3JpcHQgKGlu dCBhcmdjLCBjaGFyICoqYXJndikKICt7CiArICBGSUxFICppbnB1dDsKLSsgIFB5R0lMU3RhdGVf U1RBVEUgc3RhdGU7CiArCiArICAvKiBXZSBuZXZlciBmcmVlIHRoaXMsIHNpbmNlIHdlIHBsYW4g dG8gZXhpdCBhdCB0aGUgZW5kLiAgKi8KLSsgIHN0YXRlID0gUHlHSUxTdGF0ZV9FbnN1cmUgKCk7 CisrICBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAoKSwgY3VycmVudF9sYW5n dWFnZSk7CiArCiArICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOwogKyAgUHlTeXNfU2V0QXJn diAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsKQEAgLTE4Nzk5LDE0ICsxMzc5MywxMyBAQCBpbmRleCAy NTRiZDI4Li41YTJhOWFlIDEwMDY0NAogK3ZvaWQKICtzb3VyY2VfcHl0aG9uX3NjcmlwdCAoRklM RSAqc3RyZWFtLCBjaGFyICpmaWxlKQogK3sKLSsgIFB5R0lMU3RhdGVfU1RBVEUgc3RhdGU7Ci0r Ci0rICBzdGF0ZSA9IFB5R0lMU3RhdGVfRW5zdXJlICgpOworKyAgc3RydWN0IGNsZWFudXAgKmNs ZWFudXA7CiArCisrICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2Fy Y2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOwogKyAgUHlSdW5fU2ltcGxlRmlsZSAoc3RyZWFtLCBm aWxlKTsKICsKICsgIGZjbG9zZSAoc3RyZWFtKTsKLSsgIFB5R0lMU3RhdGVfUmVsZWFzZSAoc3Rh dGUpOworKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwogK30KICsKICsMCkBAIC0xODgxNCw3ICsx MzgwNyw3IEBAIGluZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiAgLyogVGhlICJjdXJyZW50 IiBvYmpmaWxlLiAgVGhpcyBpcyBzZXQgd2hlbiBnZGIgZGV0ZWN0cyB0aGF0IGEgbmV3CiAgICAg b2JqZmlsZSBoYXMgYmVlbiBsb2FkZWQuICBJdCBpcyBvbmx5IHNldCBmb3IgdGhlIGR1cmF0aW9u IG9mIGEgY2FsbAogICAgIHRvIGdkYnB5X25ld19vYmpmaWxlOyBpdCBpcyBOVUxMIGF0IG90aGVy IHRpbWVzLiAgKi8KLUBAIC01MDEsNiArNzk5LDEzIEBAIGV2YWxfcHl0aG9uX2Zyb21fY29udHJv bF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICpjbWQpCitAQCAtNTI1LDYgKzgwMSwxMyBA QCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAq Y21kKQogICAgZXJyb3IgKF8oIlB5dGhvbiBzY3JpcHRpbmcgaXMgbm90IHN1cHBvcnRlZCBpbiB0 aGlzIGNvcHkgb2YgR0RCLiIpKTsKICB9CiAgCkBAIC0xODgyOCw3ICsxMzgyMSw3IEBAIGluZGV4 IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiAgI2VuZGlmIC8qIEhBVkVfUFlUSE9OICovCiAgCiAg DAotQEAgLTU5MiwxMyArODk3LDI3IEBAIEVuYWJsZXMgb3IgZGlzYWJsZXMgYXV0by1sb2FkaW5n IG9mIFB5dGhvbiBjb2RlIHdoZW4gYW4gb2JqZWN0IGlzIG9wZW5lZC4iKSwKK0BAIC02MTYsMTQg Kzg5OSwyOCBAQCBFbmFibGVzIG9yIGRpc2FibGVzIGF1dG8tbG9hZGluZyBvZiBQeXRob24gY29k ZSB3aGVuIGFuIG9iamVjdCBpcyBvcGVuZWQuIiksCiAgICBQeU1vZHVsZV9BZGRTdHJpbmdDb25z dGFudCAoZ2RiX21vZHVsZSwgIlZFUlNJT04iLCAoY2hhciopIHZlcnNpb24pOwogICAgUHlNb2R1 bGVfQWRkU3RyaW5nQ29uc3RhbnQgKGdkYl9tb2R1bGUsICJIT1NUX0NPTkZJRyIsIChjaGFyKikg aG9zdF9uYW1lKTsKICAgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50IChnZGJfbW9kdWxlLCAi VEFSR0VUX0NPTkZJRyIsIChjaGFyKikgdGFyZ2V0X25hbWUpOwpAQCAtMTg4NTAsMTMgKzEzODQz LDE0IEBAIGluZGV4IDI1NGJkMjguLjVhMmE5YWUgMTAwNjQ0CiAgICBnZGJweV9pbml0aWFsaXpl X3R5cGVzICgpOwogKyAgZ2RicHlfaW5pdGlhbGl6ZV9wYXJhbWV0ZXJzICgpOwogICAgZ2RicHlf aW5pdGlhbGl6ZV9vYmpmaWxlICgpOworICAgZ2RicHlfaW5pdGlhbGl6ZV9sYXp5X3N0cmluZyAo KTsKICsgIGdkYnB5X2luaXRpYWxpemVfdGhyZWFkICgpOwogKyAgZ2RicHlfaW5pdGlhbGl6ZV9p bmZlcmlvciAoKTsKICsgIGdkYnB5X2luaXRpYWxpemVfZXZlbnRzICgpOwogIAogICAgUHlSdW5f U2ltcGxlU3RyaW5nICgiaW1wb3J0IGdkYiIpOwogICAgUHlSdW5fU2ltcGxlU3RyaW5nICgiZ2Ri LnByZXR0eV9wcmludGVycyA9IFtdIik7Ci1AQCAtNjM0LDYgKzk1MywxNSBAQCBjbGFzcyBHZGJP dXRwdXRGaWxlOlxuXAorQEAgLTY1OSw2ICs5NTYsMTUgQEAgY2xhc3MgR2RiT3V0cHV0RmlsZTpc blwKICBcblwKICBzeXMuc3RkZXJyID0gR2RiT3V0cHV0RmlsZSgpXG5cCiAgc3lzLnN0ZG91dCA9 IEdkYk91dHB1dEZpbGUoKVxuXApAQCAtMTg4NzIsNyArMTM4NjYsNyBAQCBpbmRleCAyNTRiZDI4 Li41YTJhOWFlIDEwMDY0NAogICIpOwogIAogICAgLyogUmVsZWFzZSB0aGUgR0lMIHdoaWxlIGdk YiBydW5zLiAgKi8KLUBAIC02NTMsOSArOTgxLDE0IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJN ZXRob2RzW10gPQorQEAgLTY3OCw5ICs5ODQsMTQgQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1l dGhvZHNbXSA9CiAgICAgICJHZXQgYSB2YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCiAgICB7ICJleGVj dXRlIiwgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTLAogICAgICAiRXhlY3V0ZSBh IGdkYiBjb21tYW5kIiB9LApAQCAtMTg4ODcsNyArMTM4ODEsNyBAQCBpbmRleCAyNTRiZDI4Li41 YTJhOWFlIDEwMDY0NAogICAgeyAiZGVmYXVsdF92aXN1YWxpemVyIiwgZ2RicHlfZGVmYXVsdF92 aXN1YWxpemVyLCBNRVRIX1ZBUkFSR1MsCiAgICAgICJGaW5kIHRoZSBkZWZhdWx0IHZpc3VhbGl6 ZXIgZm9yIGEgVmFsdWUuIiB9LAogIAotQEAgLTY3Niw2ICsxMDA5LDM3IEBAIFJldHVybiBhIHN0 cmluZyBleHBsYWluaW5nIHVud2luZCBzdG9wIHJlYXNvbi4iIH0sCitAQCAtNzAxLDExICsxMDEy LDM5IEBAIFJldHVybiBhIHN0cmluZyBleHBsYWluaW5nIHVud2luZCBzdG9wIHJlYXNvbi4iIH0s CiAgICAgICJsb29rdXBfdHlwZSAobmFtZSBbLCBibG9ja10pIC0+IHR5cGVcblwKICBSZXR1cm4g YSBUeXBlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIG5hbWUuIiB9LAogIApAQCAtMTg5MTYs OSArMTM5MTAsMTEgQEAgaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQKICsgICAgImluZmVy aW9ycyAoKSAtPiAoZ2RiLkluZmVyaW9yLCAuLi4pLlxuXAogK1JldHVybiBhIHR1cGxlIGNvbnRh aW5pbmcgYWxsIGluZmVyaW9ycy4iIH0sCiArCi0rICB7ICJwYXJzZV9hbmRfZXZhbCIsIGdkYnB5 X3BhcnNlX2FuZF9ldmFsLCBNRVRIX1ZBUkFSR1MsCi0rICAgICJQYXJzZSBhIHN0cmluZyBhcyBh biBleHByZXNzaW9uLCBldmFsdWF0ZSBpdCwgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIgfSwKLSsK KyAgIHsgInBhcnNlX2FuZF9ldmFsIiwgZ2RicHlfcGFyc2VfYW5kX2V2YWwsIE1FVEhfVkFSQVJH UywKKyAgICAgInBhcnNlX2FuZF9ldmFsIChTdHJpbmcpIC0+IFZhbHVlLlxuXAorIFBhcnNlIFN0 cmluZyBhcyBhbiBleHByZXNzaW9uLCBldmFsdWF0ZSBpdCwgYW5kIHJldHVybiB0aGUgcmVzdWx0 IGFzIGEgVmFsdWUuIgorICAgfSwKKyAKICsgIHsgInBvc3RfZXZlbnQiLCBnZGJweV9wb3N0X2V2 ZW50LCBNRVRIX1ZBUkFSR1MsCiArICAgICJQb3N0IGFuIGV2ZW50IGludG8gZ2RiJ3MgZXZlbnQg bG9vcC4iIH0sCiArCkBAIC0xODkyNiw3ICsxMzkyMiw3IEBAIGluZGV4IDI1NGJkMjguLjVhMmE5 YWUgMTAwNjQ0CiAgICAgICJXcml0ZSBhIHN0cmluZyB1c2luZyBnZGIncyBmaWx0ZXJlZCBzdHJl YW0uIiB9LAogICAgeyAiZmx1c2giLCBnZGJweV9mbHVzaCwgTUVUSF9OT0FSR1MsCiBkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgKLWluZGV4IGU5 NzAxODAuLmJiYjYxODQgMTAwNjQ0CitpbmRleCBmMzU4MjdiLi4xYTViOWE4IDEwMDY0NAogLS0t IGEvZ2RiL3B5dGhvbi9weXRob24uaAogKysrIGIvZ2RiL3B5dGhvbi9weXRob24uaAogQEAgLTI0 LDYgKzI0LDEwIEBACkBAIC0xODk0MSw3ICsxMzkzNyw3IEBAIGluZGV4IGU5NzAxODAuLmJiYjYx ODQgMTAwNjQ0CiAgCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJl c3MsCiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCiBkaWZm IC0tZ2l0IGEvZ2RiL3NjbS1sYW5nLmMgYi9nZGIvc2NtLWxhbmcuYwotaW5kZXggZGUzNDg5NC4u MDc1MThiMCAxMDA2NDQKK2luZGV4IDFkMDVmOGEuLmUyMDE1YzQgMTAwNjQ0CiAtLS0gYS9nZGIv c2NtLWxhbmcuYwogKysrIGIvZ2RiL3NjbS1sYW5nLmMKIEBAIC0yMzMsNiArMjMzLDcgQEAgY29u c3Qgc3RydWN0IGV4cF9kZXNjcmlwdG9yIGV4cF9kZXNjcmlwdG9yX3NjbSA9CkBAIC0xODk1Miwx MjIgKzEzOTQ4LDExIEBAIGluZGV4IGRlMzQ4OTQuLjA3NTE4YjAgMTAwNjQ0CiAgICBvcF9uYW1l X3N0YW5kYXJkLAogICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKICAgIGV2YWx1YXRlX2V4 cAotZGlmZiAtLWdpdCBhL2dkYi9zY20tdmFscHJpbnQuYyBiL2dkYi9zY20tdmFscHJpbnQuYwot aW5kZXggY2MzMzE5YS4uZDBkNDcwMiAxMDA2NDQKLS0tLSBhL2dkYi9zY20tdmFscHJpbnQuYwot KysrIGIvZ2RiL3NjbS12YWxwcmludC5jCi1AQCAtNjIsOSArNjIsOSBAQCBzY21faW5mZXJpb3Jf cHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIHZhbHVlLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtLAotICAgICB7Ci0gICAgICAgLyogWFhYOiBTaG91bGQgd2UgY2FjaGUgdGhlc2Ugc3lt Ym9scz8gICovCi0gICAgICAgZ2RiX291dHB1dF9zeW0gPQotLQlsb29rdXBfc3ltYm9sX2dsb2Jh bCAoImdkYl9vdXRwdXQiLCBOVUxMLCBOVUxMLCBWQVJfRE9NQUlOKTsKLSsJbG9va3VwX3N5bWJv bF9nbG9iYWwgKCJnZGJfb3V0cHV0IiwgTlVMTCwgVkFSX0RPTUFJTik7Ci0gICAgICAgZ2RiX291 dHB1dF9sZW5fc3ltID0KLS0JbG9va3VwX3N5bWJvbF9nbG9iYWwgKCJnZGJfb3V0cHV0X2xlbmd0 aCIsIE5VTEwsIE5VTEwsIFZBUl9ET01BSU4pOwotKwlsb29rdXBfc3ltYm9sX2dsb2JhbCAoImdk Yl9vdXRwdXRfbGVuZ3RoIiwgTlVMTCwgVkFSX0RPTUFJTik7Ci0gCi0gICAgICAgaWYgKChnZGJf b3V0cHV0X3N5bSA9PSBOVUxMKSB8fCAoZ2RiX291dHB1dF9sZW5fc3ltID09IE5VTEwpKQotIAly ZXQgPSAtMTsKLWRpZmYgLS1naXQgYS9nZGIvc29saWItZGFyd2luLmMgYi9nZGIvc29saWItZGFy d2luLmMKLWluZGV4IDhiOTZhNmYuLjk0MjhkOTIgMTAwNjQ0Ci0tLS0gYS9nZGIvc29saWItZGFy d2luLmMKLSsrKyBiL2dkYi9zb2xpYi1kYXJ3aW4uYwotQEAgLTM4OSw3ICszODksNiBAQCBkYXJ3 aW5fcmVsb2NhdGVfc2VjdGlvbl9hZGRyZXNzZXMgKHN0cnVjdCBzb19saXN0ICpzbywKLSBzdGF0 aWMgc3RydWN0IHN5bWJvbCAqCi0gZGFyd2luX2xvb2t1cF9saWJfc3ltYm9sIChjb25zdCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJICBjb25z dCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0g ewotICAgcmV0dXJuIE5VTEw7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXNwdS5jIGIvZ2RiL3Nv bGliLXNwdS5jCi1pbmRleCAxOWUzMjEyLi45ZjA2ZmE5IDEwMDY0NAotLS0tIGEvZ2RiL3NvbGli LXNwdS5jCi0rKysgYi9nZGIvc29saWItc3B1LmMKLUBAIC0zMzQsMTYgKzMzNCwxMyBAQCBzcHVf YmZkX29wZW4gKGNoYXIgKnBhdGhuYW1lKQotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLSBzcHVf bG9va3VwX2xpYl9zeW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAotIAkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBpZiAoYmZkX2dl dF9hcmNoIChvYmpmaWxlLT5vYmZkKSA9PSBiZmRfYXJjaF9zcHUpCi0tICAgIHJldHVybiBsb29r dXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKG9iamZpbGUsIG5hbWUsIGxpbmthZ2VfbmFt ZSwKLS0JCQkJCSAgICAgIGRvbWFpbik7Ci0rICAgIHJldHVybiBsb29rdXBfZ2xvYmFsX3N5bWJv bF9mcm9tX29iamZpbGUgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7Ci0gCi0gICBpZiAoc3ZyNF9z b19vcHMubG9va3VwX2xpYl9nbG9iYWxfc3ltYm9sICE9IE5VTEwpCi0tICAgIHJldHVybiBzdnI0 X3NvX29wcy5sb29rdXBfbGliX2dsb2JhbF9zeW1ib2wgKG9iamZpbGUsIG5hbWUsIGxpbmthZ2Vf bmFtZSwKLS0JCQkJCQkgZG9tYWluKTsKLSsgICAgcmV0dXJuIHN2cjRfc29fb3BzLmxvb2t1cF9s aWJfZ2xvYmFsX3N5bWJvbCAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKLSAgIHJldHVybiBOVUxM OwotIH0KLSAKLWRpZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQu YwotaW5kZXggNmNmYWE4NS4uNjhhYWRjMCAxMDA2NDQKLS0tLSBhL2dkYi9zb2xpYi1zdnI0LmMK LSsrKyBiL2dkYi9zb2xpYi1zdnI0LmMKLUBAIC0xOTA4LDE1ICsxOTA4LDEzIEBAIHN0cnVjdCB0 YXJnZXRfc29fb3BzIHN2cjRfc29fb3BzOwotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLSBlbGZf bG9va3VwX2xpYl9zeW1ib2wgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJICAg ICAgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAotIAkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBpZiAob2JqZmls ZS0+b2JmZCA9PSBOVUxMCi0gICAgICB8fCBzY2FuX2R5bnRhZyAoRFRfU1lNQk9MSUMsIG9iamZp bGUtPm9iZmQsIE5VTEwpICE9IDEpCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgcmV0dXJuIGxv b2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZQotLQkJKG9iamZpbGUsIG5hbWUsIGxpbmth Z2VfbmFtZSwgZG9tYWluKTsKLSsgIHJldHVybiBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29i amZpbGUgKG9iamZpbGUsIG5hbWUsIGRvbWFpbik7Ci0gfQotIAotIGV4dGVybiBpbml0aWFsaXpl X2ZpbGVfZnR5cGUgX2luaXRpYWxpemVfc3ZyNF9zb2xpYjsgLyogLVdtaXNzaW5nLXByb3RvdHlw ZXMgKi8KLWRpZmYgLS1naXQgYS9nZGIvc29saWIuYyBiL2dkYi9zb2xpYi5jCi1pbmRleCBhMmFk MGM0Li4zNTc0ZTYyIDEwMDY0NAotLS0tIGEvZ2RiL3NvbGliLmMKLSsrKyBiL2dkYi9zb2xpYi5j Ci1AQCAtMTEyNywxMyArMTEyNywxMiBAQCBzaG93X2F1dG9fc29saWJfYWRkIChzdHJ1Y3QgdWlf ZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotIHN0cnVjdCBzeW1ib2wgKgotIHNvbGliX2dsb2Jh bF9sb29rdXAgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkJICAgICBjb25zdCBj aGFyICpuYW1lLAotLQkJICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgIGNv bnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqb3Bz ID0gc29saWJfb3BzICh0YXJnZXRfZ2RiYXJjaCk7Ci0gCi0gICBpZiAob3BzLT5sb29rdXBfbGli X2dsb2JhbF9zeW1ib2wgIT0gTlVMTCkKLS0gICAgcmV0dXJuIG9wcy0+bG9va3VwX2xpYl9nbG9i YWxfc3ltYm9sIChvYmpmaWxlLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRvbWFpbik7Ci0rICAgIHJl dHVybiBvcHMtPmxvb2t1cF9saWJfZ2xvYmFsX3N5bWJvbCAob2JqZmlsZSwgbmFtZSwgZG9tYWlu KTsKLSAgIHJldHVybiBOVUxMOwotIH0KLSAKLWRpZmYgLS1naXQgYS9nZGIvc29saXN0LmggYi9n ZGIvc29saXN0LmgKLWluZGV4IDYzYTZiYTAuLjAwNWU4ZjcgMTAwNjQ0Ci0tLS0gYS9nZGIvc29s aXN0LmgKLSsrKyBiL2dkYi9zb2xpc3QuaAotQEAgLTExNCw3ICsxMTQsNiBAQCBzdHJ1Y3QgdGFy Z2V0X3NvX29wcwotICAgICAvKiBIb29rIGZvciBsb29raW5nIHVwIGdsb2JhbCBzeW1ib2xzIGlu IGEgbGlicmFyeS1zcGVjaWZpYyB3YXkuICAqLwotICAgICBzdHJ1Y3Qgc3ltYm9sICogKCpsb29r dXBfbGliX2dsb2JhbF9zeW1ib2wpIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJ CQkJCQkgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCQkgY29uc3QgY2hhciAqbGlua2FnZV9uYW1l LAotIAkJCQkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwotIAotICAgICAvKiBHaXZlbiB0 d28gc29fbGlzdCBvYmplY3RzLCBvbmUgZnJvbSB0aGUgR0RCIHRocmVhZCBsaXN0Ci1AQCAtMTQ2 LDcgKzE0NSw2IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X3NvX29wcyAqY3VycmVudF90YXJnZXRf c29fb3BzOwotIC8qIEhhbmRsZXIgZm9yIGxpYnJhcnktc3BlY2lmaWMgZ2xvYmFsIHN5bWJvbCBs b29rdXAgaW4gc29saWIuYy4gICovCi0gc3RydWN0IHN5bWJvbCAqc29saWJfZ2xvYmFsX2xvb2t1 cCAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCSAgICBjb25zdCBjaGFyICpu YW1lLAotLQkJCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkgICAgY29uc3Qg ZG9tYWluX2VudW0gZG9tYWluKTsKLSAKLSAjZW5kaWYKIGRpZmYgLS1naXQgYS9nZGIvc29tcmVh ZC5jIGIvZ2RiL3NvbXJlYWQuYwotaW5kZXggMzZhMmIyOC4uNGQ1YmRhOSAxMDA2NDQKK2luZGV4 IGM3YmVhYmEuLmUzMTE2NGMgMTAwNjQ0CiAtLS0gYS9nZGIvc29tcmVhZC5jCiArKysgYi9nZGIv c29tcmVhZC5jCi1AQCAtNDM1LDYgKzQzNSw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBzb21f c3ltX2ZucyA9CitAQCAtNDMyLDYgKzQzMiw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyBzb21f c3ltX2ZucyA9CiAgICBzb21fbmV3X2luaXQsCQkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRo aW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICovCiAgICBzb21fc3ltZmlsZV9pbml0LAkJLyogc3lt X2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1cCBmb3Igc3ltX3JlYWQoKSAqLwogICAgc29t X3N5bWZpbGVfcmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10 YWIgKi8KQEAgLTE5MDc1LDQ2ICsxMzk2MCwxMSBAQCBpbmRleCAzNmEyYjI4Li40ZDViZGE5IDEw MDY0NAogICAgc29tX3N5bWZpbGVfZmluaXNoLAkJLyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0 aCBmaWxlLCBjbGVhbnVwICovCiAgICBzb21fc3ltZmlsZV9vZmZzZXRzLAkJLyogc3ltX29mZnNl dHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQuIHJlbG9jYXRpb24gKi8KICAgIGRlZmF1bHRfc3lt ZmlsZV9zZWdtZW50cywJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBm cm9tCi1kaWZmIC0tZ2l0IGEvZ2RiL3NwdS10ZGVwLmMgYi9nZGIvc3B1LXRkZXAuYwotaW5kZXgg N2U3YWI5Yy4uYTAxNGI3YSAxMDA2NDQKLS0tLSBhL2dkYi9zcHUtdGRlcC5jCi0rKysgYi9nZGIv c3B1LXRkZXAuYwotQEAgLTE4MzksNyArMTgzOSw3IEBAIHNwdV9jYXRjaF9zdGFydCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCi0gICAgICAgc3RydWN0IHN5bWJvbCAqc3ltOwotICAgICAgIHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOwotIAotLSAgICAgIHN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGJsb2NrLCAibWFpbiIsIE5VTEwsIFZBUl9ET01BSU4pOwotKyAgICAgIHN5bSA9IGxv b2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCAibWFpbiIsIFZBUl9ET01BSU4pOwotICAgICAgIGlm IChzeW0pCi0gCXsKLSAJICBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3ltLCBvYmpmaWxlKTsKLWRp ZmYgLS1naXQgYS9nZGIvc3RhYnNyZWFkLmMgYi9nZGIvc3RhYnNyZWFkLmMKLWluZGV4IGU2MmJi MTUuLmFkNjU2OGUgMTAwNjQ0Ci0tLS0gYS9nZGIvc3RhYnNyZWFkLmMKLSsrKyBiL2dkYi9zdGFi c3JlYWQuYwotQEAgLTMyMiw3ICszMjIsNyBAQCBkYnhfYWxsb2NfdHlwZSAoaW50IHR5cGVudW1z WzJdLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAKLSAgIGlmICh0eXBlbnVtc1swXSA9PSAt MSkKLSAgICAgewotLSAgICAgIHJldHVybiAoYWxsb2NfdHlwZSAob2JqZmlsZSkpOwotKyAgICAg IHJldHVybiAoYWxsb2NfdHlwZSAob2JqZmlsZSwgTlVMTCkpOwotICAgICB9Ci0gCi0gICB0eXBl X2FkZHIgPSBkYnhfbG9va3VwX3R5cGUgKHR5cGVudW1zLCBvYmpmaWxlKTsKLUBAIC0zMzIsNyAr MzMyLDcgQEAgZGJ4X2FsbG9jX3R5cGUgKGludCB0eXBlbnVtc1syXSwgc3RydWN0IG9iamZpbGUg Km9iamZpbGUpCi0gICAgICBXZSB3aWxsIGZpbGwgaXQgaW4gbGF0ZXIgaWYgd2UgZmluZCBvdXQg aG93LiAgKi8KLSAgIGlmICgqdHlwZV9hZGRyID09IDApCi0gICAgIHsKLS0gICAgICAqdHlwZV9h ZGRyID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7Ci0rICAgICAgKnR5cGVfYWRkciA9IGFsbG9jX3R5 cGUgKG9iamZpbGUsIE5VTEwpOwotICAgICB9Ci0gCi0gICByZXR1cm4gKCp0eXBlX2FkZHIpOwog ZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKLWluZGV4IDFjMzc4MDEuLjU5 NGViMTYgMTAwNjQ0CitpbmRleCA2ZTE5OGUwLi45NGEzZWY5IDEwMDY0NAogLS0tIGEvZ2RiL3N0 YWNrLmMKICsrKyBiL2dkYi9zdGFjay5jCi1AQCAtMTMwOCwyNCArMTMwOCwyNCBAQCBiYWNrdHJh Y2VfY29tbWFuZF8xIChjaGFyICpjb3VudF9leHAsIGludCBzaG93X2xvY2FscywgaW50IGZyb21f dHR5KQorQEAgLTEzMDksMjQgKzEzMDksMjQgQEAgYmFja3RyYWNlX2NvbW1hbmRfMSAoY2hhciAq Y291bnRfZXhwLCBpbnQgc2hvd19sb2NhbHMsIGludCBmcm9tX3R0eSkKICAgIGVsc2UKICAgICAg Y291bnQgPSAtMTsKICAKQEAgLTE5MTU3LDM4ICsxNDAwNywxMSBAQCBpbmRleCAxYzM3ODAxLi41 OTRlYjE2IDEwMDY0NAogIAogICAgZm9yIChpID0gMCwgZmkgPSB0cmFpbGluZzsgZmkgJiYgY291 bnQtLTsgaSsrLCBmaSA9IGdldF9wcmV2X2ZyYW1lIChmaSkpCiAgICAgIHsKLUBAIC0xNDczLDYg KzE0NzMsOCBAQCBwcmludF9ibG9ja19mcmFtZV9sb2NhbHMgKHN0cnVjdCBibG9jayAqYiwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lLAotIAljYXNlIExPQ19DT01QVVRFRDoKLSAJICBpZiAoU1lN Qk9MX0lTX0FSR1VNRU5UIChzeW0pKQotIAkgICAgYnJlYWs7Ci0rCSAgaWYgKFNZTUJPTF9ET01B SU4gKHN5bSkgPT0gQ09NTU9OX0JMT0NLX0RPTUFJTikKLSsJICAgIGJyZWFrOwotIAkgIHZhbHVl c19wcmludGVkID0gMTsKLSAJICBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKE5VTEwsIHN5bSwg ZnJhbWUsIHN0cmVhbSwgNCAqIG51bV90YWJzKTsKLSAJICBicmVhazsKIGRpZmYgLS1naXQgYS9n ZGIvc3ltZmlsZS5jIGIvZ2RiL3N5bWZpbGUuYwotaW5kZXggMjQ1ODIwMS4uYzMxYjcyYSAxMDA2 NDQKK2luZGV4IDg5Y2MwN2MuLmI3NTlmMTAgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltZmlsZS5jCiAr KysgYi9nZGIvc3ltZmlsZS5jCi1AQCAtOTIxLDYgKzkyMSwxNyBAQCBuZXdfc3ltZmlsZV9vYmpm aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IGFkZF9mbGFncykKLSAgIGNsZWFyX2Nv bXBsYWludHMgKCZzeW1maWxlX2NvbXBsYWludHMsIDAsIGFkZF9mbGFncyAmIFNZTUZJTEVfVkVS Qk9TRSk7Ci0gfQotIAotKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgdHJ1ZSBp ZiBPQkpGSUxFIGhhcyBhbnkgZGVidWcKLSsgICBzeW1ib2xzLCBhbmQgZmFsc2Ugb3RoZXJ3aXNl LiAgKi8KLStzdGF0aWMgaW50Ci0raGFzX2FueV9kZWJ1Z19zeW1ib2xzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKLSt7Ci0rICByZXR1cm4gKG9iamZpbGUtPnBzeW10YWJzIHx8IG9iamZpbGUt PnF1aWNrX2FkZHJtYXAKLSsJICB8fCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZQot KwkgICAgICAmJiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZS0+cHN5bXRhYnMKLSsJ CSAgfHwgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZS0+cXVpY2tfYWRkcm1hcCkpKTsK LSt9Ci0rCi0gLyogUHJvY2VzcyBhIHN5bWJvbCBmaWxlLCBhcyBlaXRoZXIgdGhlIG1haW4gZmls ZSBvciBhcyBhIGR5bmFtaWNhbGx5Ci0gICAgbG9hZGVkIGZpbGUuCi0gCi1AQCAtOTU4LDEzICs5 NjksMTYgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZk LAorQEAgLTk2OCwxMyArOTY4LDE2IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29m ZnNldHMgKGJmZCAqYWJmZCwKICAgIC8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byBidXJwIGlmIHdl J2QgYmUKICAgICAgIGludGVyYWN0aXZlbHkgd2lwaW5nIG91dCBhbnkgZXhpc3Rpbmcgc3ltYm9s cy4gICovCiAgCkBAIC0xOTIwNiw4ICsxNDAyOSw4IEBAIGluZGV4IDI0NTgyMDEuLmMzMWI3MmEg MTAwNjQ0CiArICAgIG9iamZpbGUtPmZsYWdzIHw9IE9CSkZfTUFJTjsKICAgIGRpc2NhcmRfY2xl YW51cHMgKG15X2NsZWFudXBzKTsKICAKLSAgIGlmIChhZGRycykKLUBAIC05OTcsNiArMTAxMSw4 IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKKyAg IC8qIFdlIGVpdGhlciBjcmVhdGVkIGEgbmV3IG1hcHBlZCBzeW1ib2wgdGFibGUsIG1hcHBlZCBh biBleGlzdGluZworQEAgLTEwMDEsNiArMTAwNCw4IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2Fk ZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKICAKICAgIGlmICgoZmxhZ3MgJiBPQkpGX1JFQURO T1cpIHx8IHJlYWRub3dfc3ltYm9sX2ZpbGVzKQogICAgICB7CkBAIC0xOTIxNiw3MCArMTQwMzks MjggQEAgaW5kZXggMjQ1ODIwMS4uYzMxYjcyYSAxMDA2NDQKICAgICAgICBpZiAoZnJvbV90dHkg fHwgaW5mb192ZXJib3NlKQogIAl7CiAgCSAgcHJpbnRmX3VuZmlsdGVyZWQgKF8oImV4cGFuZGlu ZyB0byBmdWxsIHN5bWJvbHMuLi4iKSk7Ci1AQCAtMTAxNSw3ICsxMDMxLDcgQEAgc3ltYm9sX2Zp bGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAotICAgLyogSWYgdGhlIGZp bGUgaGFzIGl0cyBvd24gc3ltYm9sIHRhYmxlcyBpdCBoYXMgbm8gc2VwYXJhdGUgZGVidWcgaW5m by4KLSAgICAgIGAuZHluc3ltJy9gLnN5bXRhYicgZ28gdG8gTVNZTUJPTFMsIGAuZGVidWdfaW5m bycgZ29lcyB0byBTWU1UQUJTL1BTWU1UQUJTLgotICAgICAgYC5nbnVfZGVidWdsaW5rJyBtYXkg bm8gbG9uZ2VyIGJlIHByZXNlbnQgd2l0aCBgLm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCi0tICBp ZiAob2JqZmlsZS0+cHN5bXRhYnMgPT0gTlVMTCkKLSsgIGlmICghaGFzX2FueV9kZWJ1Z19zeW1i b2xzIChvYmpmaWxlKSkKLSAgICAgZGVidWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxl IChvYmpmaWxlKTsKLSAgIGlmIChkZWJ1Z2ZpbGUpCi0gICAgIHsKLUBAIC0xMDM5LDkgKzEwNTUs MTAgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAot ICAgICAgIHhmcmVlIChkZWJ1Z2ZpbGUpOwotICAgICB9Ci0gCi0rICAvKiBoYXNfYW55X2RlYnVn X3N5bWJvbHMgaXMgbm90IGZ1bGx5IGNvbXBhdGlibGUgd2l0aCB0aGUgZm9ybWVyIGNhbGxzIHdo aWNoCi0rICAgICB3b3VsZCBqdXN0IGJlIG5lZWRsZXNzbHkgZXhwZW5zaXZlIGhlcmUuICAqLwot ICAgaWYgKChmcm9tX3R0eSB8fCBpbmZvX3ZlcmJvc2UpCi0tICAgICAgJiYgIW9iamZpbGVfaGFz X3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkKLS0gICAgICAmJiAhb2JqZmlsZV9oYXNfZnVsbF9z eW1ib2xzIChvYmpmaWxlKSkKLSsgICAgICAmJiAhaGFzX2FueV9kZWJ1Z19zeW1ib2xzIChvYmpm aWxlKSkKLSAgICAgewotICAgICAgIHdyYXBfaGVyZSAoIiIpOwotICAgICAgIHByaW50Zl91bmZp bHRlcmVkIChfKCIobm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQpLi4uIikpOwotQEAgLTI0MjIs MTQgKzI0MzksMTUgQEAgcmVyZWFkX3N5bWJvbHMgKHZvaWQpCi0gCSAgICAgICAgIHplcm8gaXMg T0sgc2luY2UgZGJ4cmVhZC5jIGFsc28gZG9lcyB3aGF0IGl0IG5lZWRzIHRvIGRvIGlmCi0gCSAg ICAgICAgIG9iamZpbGUtPmdsb2JhbF9wc3ltYm9scy5zaXplIGlzIDAuICAqLwotIAkgICAgICAo Km9iamZpbGUtPnNmLT5zeW1fcmVhZCkgKG9iamZpbGUsIDApOwotLQkgICAgICBpZiAoIW9iamZp bGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkKLS0JCSAgJiYgIW9iamZpbGVfaGFzX2Z1 bGxfc3ltYm9scyAob2JqZmlsZSkpCi0rCSAgICAgIGlmICghaGFzX2FueV9kZWJ1Z19zeW1ib2xz IChvYmpmaWxlKSkKLSAJCXsKLSAJCSAgd3JhcF9oZXJlICgiIik7Ci0gCQkgIHByaW50Zl91bmZp bHRlcmVkIChfKCIobm8gZGVidWdnaW5nIHN5bWJvbHMgZm91bmQpXG4iKSk7Ci0gCQkgIHdyYXBf aGVyZSAoIiIpOwotIAkJfQotIAotKwkgICAgICBvYmpmaWxlLT5mbGFncyAmPSB+T0JKRl9TWU1U QUJTX1JFQUQ7Ci0rCi0gCSAgICAgIC8qIFdlJ3JlIGRvbmUgcmVhZGluZyB0aGUgc3ltYm9sIGZp bGU7IGZpbmlzaCBvZmYgY29tcGxhaW50cy4gICovCi0gCSAgICAgIGNsZWFyX2NvbXBsYWludHMg KCZzeW1maWxlX2NvbXBsYWludHMsIDAsIDEpOwotIAotQEAgLTI3MjcsNyArMjc0NSw3IEBAIGFs bG9jYXRlX3N5bXRhYiAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQot IH0KLSAKLSBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKgotLWFsbG9jYXRlX3BzeW10YWIgKGNoYXIg KmZpbGVuYW1lLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSthbGxvY2F0ZV9wc3ltdGFiIChj b25zdCBjaGFyICpmaWxlbmFtZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotICAgc3Ry dWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiOwotIAotQEAgLTMwNDEsNyArMzA1OSw4IEBAIGFn YWluMjoKLSAKLSBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKgotIHN0YXJ0X3BzeW10YWJfY29tbW9u IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLS0JCSAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNl dHMgKnNlY3Rpb25fb2Zmc2V0cywgY2hhciAqZmlsZW5hbWUsCi0rCQkgICAgICBzdHJ1Y3Qgc2Vj dGlvbl9vZmZzZXRzICpzZWN0aW9uX29mZnNldHMsCi0rCQkgICAgICBjb25zdCBjaGFyICpmaWxl bmFtZSwKLSAJCSAgICAgIENPUkVfQUREUiB0ZXh0bG93LCBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wg KipnbG9iYWxfc3ltcywKLSAJCSAgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnN0YXRpY19z eW1zKQotIHsKK0BAIC0yMzIzLDYgKzIzMjgsNyBAQCByZXJlYWRfc3ltYm9scyAodm9pZCkKKyAJ ICBvYmpmaWxlLT5zeW10YWJzID0gTlVMTDsKKyAJICBvYmpmaWxlLT5wc3ltdGFicyA9IE5VTEw7 CisgCSAgb2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCA9IE5VTEw7CisrCSAgb2JqZmlsZS0+cXVp Y2tfYWRkcm1hcCA9IE5VTEw7CisgCSAgb2JqZmlsZS0+ZnJlZV9wc3ltdGFicyA9IE5VTEw7Cisg CSAgb2JqZmlsZS0+Y3BfbmFtZXNwYWNlX3N5bXRhYiA9IE5VTEw7CisgCSAgb2JqZmlsZS0+bXN5 bWJvbHMgPSBOVUxMOworQEAgLTIzMzMsNiArMjMzOSw4IEBAIHJlcmVhZF9zeW1ib2xzICh2b2lk KQorIAkgIG1lbXNldCAoJm9iamZpbGUtPm1zeW1ib2xfZGVtYW5nbGVkX2hhc2gsIDAsCisgCQkg IHNpemVvZiAob2JqZmlsZS0+bXN5bWJvbF9kZW1hbmdsZWRfaGFzaCkpOworIAorKwkgIG9iamZp bGUtPmZsYWdzICY9IH5PQkpGX1NZTVRBQlNfUkVBRDsKKysKKyAJICBvYmpmaWxlLT5wc3ltYm9s X2NhY2hlID0gYmNhY2hlX3htYWxsb2MgKCk7CisgCSAgb2JqZmlsZS0+bWFjcm9fY2FjaGUgPSBi Y2FjaGVfeG1hbGxvYyAoKTsKKyAJICBvYmpmaWxlLT5maWxlbmFtZV9jYWNoZSA9IGJjYWNoZV94 bWFsbG9jICgpOwogZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCi1p bmRleCA4YzkyNDljLi5iZjlkOWU3IDEwMDY0NAoraW5kZXggN2FlODE5Yy4uZjNmNmViMyAxMDA2 NDQKIC0tLSBhL2dkYi9zeW1maWxlLmgKICsrKyBiL2dkYi9zeW1maWxlLmgKLUBAIC0xNDAsNiAr MTQwLDEyIEBAIHN0cnVjdCBzeW1fZm5zCitAQCAtMTM5LDYgKzEzOSwxMiBAQCBzdHJ1Y3Qgc3lt X2ZucwogIAogICAgdm9pZCAoKnN5bV9yZWFkKSAoc3RydWN0IG9iamZpbGUgKiwgaW50KTsKICAK QEAgLTE5MjkyLDEwMCArMTQwNzMsMjAgQEAgaW5kZXggOGM5MjQ5Yy4uYmY5ZDllNyAxMDA2NDQK ICAgIC8qIENhbGxlZCB3aGVuIHdlIGFyZSBmaW5pc2hlZCB3aXRoIGFuIG9iamZpbGUuICBTaG91 bGQgZG8gYWxsCiAgICAgICBjbGVhbnVwIHRoYXQgaXMgc3BlY2lmaWMgdG8gdGhlIG9iamVjdCBm aWxlIGZvcm1hdCBmb3IgdGhlCiAgICAgICBwYXJ0aWN1bGFyIG9iamZpbGUuICAqLwotQEAgLTI2 Niw3ICsyNzIsNyBAQCBleHRlcm4gdm9pZCBmcmVlX3NlY3Rpb25fYWRkcl9pbmZvIChzdHJ1Y3Qg c2VjdGlvbl9hZGRyX2luZm8gKik7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAq c3RhcnRfcHN5bXRhYl9jb21tb24gKHN0cnVjdCBvYmpmaWxlICosCi0gCQkJCQkJICAgIHN0cnVj dCBzZWN0aW9uX29mZnNldHMgKiwKLS0JCQkJCQkgICAgY2hhciAqLCBDT1JFX0FERFIsCi0rCQkJ CQkJICAgIGNvbnN0IGNoYXIgKiwgQ09SRV9BRERSLAotIAkJCQkJCSAgICBzdHJ1Y3QgcGFydGlh bF9zeW1ib2wgKiosCi0gCQkJCQkJICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKik7Ci0gCi1A QCAtMzA5LDcgKzMxNSw3IEBAIGV4dGVybiBpbnQgYXV0b19zb2xpYl9saW1pdDsKLSAKLSBleHRl cm4gdm9pZCBzZXRfaW5pdGlhbF9sYW5ndWFnZSAodm9pZCk7Ci0gCi0tZXh0ZXJuIHN0cnVjdCBw YXJ0aWFsX3N5bXRhYiAqYWxsb2NhdGVfcHN5bXRhYiAoY2hhciAqLCBzdHJ1Y3Qgb2JqZmlsZSAq KTsKLStleHRlcm4gc3RydWN0IHBhcnRpYWxfc3ltdGFiICphbGxvY2F0ZV9wc3ltdGFiIChjb25z dCBjaGFyICosIHN0cnVjdCBvYmpmaWxlICopOwotIAotIGV4dGVybiB2b2lkIGRpc2NhcmRfcHN5 bXRhYiAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICopOwotIAotQEAgLTM3OCw3ICszODQsNyBAQCB2 b2lkIGZyZWVfc3ltZmlsZV9zZWdtZW50X2RhdGEgKHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0 YSAqZGF0YSk7CitAQCAtMzg5LDcgKzM5NSw3IEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRf ZGF0YSAoc3RydWN0IHN5bWZpbGVfc2VnbWVudF9kYXRhICpkYXRhKTsKICAvKiBGcm9tIGR3YXJm MnJlYWQuYyAqLwogIAogIGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChzdHJ1Y3Qgb2JqZmls ZSAqKTsKIC0KICtleHRlcm4gdm9pZCBkd2FyZjJfY3JlYXRlX3F1aWNrX2FkZHJtYXAgKHN0cnVj dCBvYmpmaWxlICopOwotIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9wc3ltdGFicyAoc3RydWN0 IG9iamZpbGUgKiwgaW50KTsKKyBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKHN0 cnVjdCBvYmpmaWxlICopOwogIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChz dHJ1Y3Qgb2JqZmlsZSAqKTsKICAKLWRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5 bW1pc2MuYwotaW5kZXggZWIzNTM2OS4uZGZkOGM4YyAxMDA2NDQKLS0tLSBhL2dkYi9zeW1taXNj LmMKLSsrKyBiL2dkYi9zeW1taXNjLmMKLUBAIC0xMTI4LDcgKzExMjgsNyBAQCBtYWludGVuYW5j ZV9jaGVja19zeW10YWJzIChjaGFyICppZ25vcmUsIGludCBmcm9tX3R0eSkKLSAgICAgd2hpbGUg KGxlbmd0aC0tKQotICAgICAgIHsKLSAJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYiwgU1lN Qk9MX0xJTktBR0VfTkFNRSAoKnBzeW0pLAotLQkJCQkgICBOVUxMLCBTWU1CT0xfRE9NQUlOICgq cHN5bSkpOwotKwkJCQkgICBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotIAlpZiAoIXN5bSkKLSAJ ICB7Ci0gCSAgICBwcmludGZfZmlsdGVyZWQgKCJTdGF0aWMgc3ltYm9sIGAiKTsKLUBAIC0xMTQ1 LDcgKzExNDUsNyBAQCBtYWludGVuYW5jZV9jaGVja19zeW10YWJzIChjaGFyICppZ25vcmUsIGlu dCBmcm9tX3R0eSkKLSAgICAgd2hpbGUgKGxlbmd0aC0tKQotICAgICAgIHsKLSAJc3ltID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoYiwgU1lNQk9MX0xJTktBR0VfTkFNRSAoKnBzeW0pLAotLQkJCQkg ICBOVUxMLCBTWU1CT0xfRE9NQUlOICgqcHN5bSkpOwotKwkJCQkgICBTWU1CT0xfRE9NQUlOICgq cHN5bSkpOwotIAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICBwcmludGZfZmlsdGVyZWQgKCJHbG9i YWwgc3ltYm9sIGAiKTsKIGRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMK LWluZGV4IDhkOWQ3MmMuLjgyZTAxNjMgMTAwNjQ0CitpbmRleCA0MjYzMjZkLi5iYWM0Y2EzIDEw MDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5jCiArKysgYi9nZGIvc3ltdGFiLmMKLUBAIC00Miw2ICs0 Miw3IEBACi0gI2luY2x1ZGUgImFkYS1sYW5nLmgiCi0gI2luY2x1ZGUgInAtbGFuZy5oIgotICNp bmNsdWRlICJhZGRybWFwLmgiCi0rI2luY2x1ZGUgImNwLXN1cHBvcnQuaCIKLSAKLSAjaW5jbHVk ZSAiaGFzaHRhYi5oIgotIAotQEAgLTg1LDcgKzg2LDYgQEAgc3RhdGljIGludCBmaW5kX2xpbmVf Y29tbW9uIChzdHJ1Y3QgbGluZXRhYmxlICosIGludCwgaW50ICopOwotIGNoYXIgKm9wZXJhdG9y X2NoYXJzIChjaGFyICpwLCBjaGFyICoqZW5kKTsKLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAq bG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJCQkgY29uc3QgY2hhciAq bGlua2FnZV9uYW1lLAotIAkJCQkJIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJCQkg Y29uc3QgZG9tYWluX2VudW0gZG9tYWluLAotIAkJCQkJIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2Us Ci1AQCAtOTMsMjAgKzkzLDE5IEBAIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9s X2F1eCAoY29uc3QgY2hhciAqbmFtZSwKLSAKLSBzdGF0aWMKLSBzdHJ1Y3Qgc3ltYm9sICpsb29r dXBfc3ltYm9sX2F1eF9sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKLS0JCQkJCWNvbnN0IGNoYXIg KmxpbmthZ2VfbmFtZSwKLSAJCQkJCWNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0tCQkJCQlj b25zdCBkb21haW5fZW51bSBkb21haW4pOwotKwkJCQkJY29uc3QgZG9tYWluX2VudW0gZG9tYWlu LAotKwkJCQkJZW51bSBsYW5ndWFnZSBsYW5ndWFnZSwKLSsJCQkJCWludCAqaXNfYV9maWVsZF9v Zl90aGlzKTsKLSAKLSBzdGF0aWMKLSBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9z eW10YWJzIChpbnQgYmxvY2tfaW5kZXgsCi0gCQkJCQkgIGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkJ CQkgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKTsKLSAKLSBzdGF0aWMKLSBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2F1eF9w c3ltdGFicyAoaW50IGJsb2NrX2luZGV4LAotIAkJCQkJICAgY29uc3QgY2hhciAqbmFtZSwKLS0J CQkJCSAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbik7Ci0gCi0gc3RhdGljIGludCBmaWxlX21hdGNoZXMgKGNoYXIgKiwgY2hhciAq KiwgaW50KTsKLUBAIC0yNzEsNyArMjcwLDcgQEAgbG9va3VwX3BhcnRpYWxfc3ltdGFiIChjb25z dCBjaGFyICpuYW1lKQorQEAgLTI3MSw3ICsyNzEsNyBAQCBsb29rdXBfcGFydGlhbF9zeW10YWIg KGNvbnN0IGNoYXIgKm5hbWUpCiAgICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcmVhbF9wYXRo KTsKICAgICAgfQogIApAQCAtMTkzOTQsNyArMTQwOTUsNyBAQCBpbmRleCA4ZDlkNzJjLi44MmUw MTYzIDEwMDY0NAogICAgewogICAgICBpZiAoRklMRU5BTUVfQ01QIChuYW1lLCBwc3QtPmZpbGVu YW1lKSA9PSAwKQogICAgICAgIHsKLUBAIC00MTQsNyArNDEzLDggQEAgc3ltYm9sX2luaXRfbGFu Z3VhZ2Vfc3BlY2lmaWMgKHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpnc3ltYm9sLAorQEAg LTQxNCw3ICs0MTQsOCBAQCBzeW1ib2xfaW5pdF9sYW5ndWFnZV9zcGVjaWZpYyAoc3RydWN0IGdl bmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wsCiAgICBnc3ltYm9sLT5sYW5ndWFnZSA9IGxhbmd1 YWdlOwogICAgaWYgKGdzeW1ib2wtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCiAgICAgICAg fHwgZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YQpAQCAtMTk0MDQsMTYgKzE0MTA1 LDcgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAgICAgewogICAgICAgIGdzeW1i b2wtPmxhbmd1YWdlX3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lID0gTlVM TDsKICAgICAgfQotQEAgLTQ3NCw3ICs0NzQsNyBAQCBzeW1ib2xfZmluZF9kZW1hbmdsZWRfbmFt ZSAoc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wsCi0gICAgICAgfHwgZ3N5bWJv bC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfYXV0bykKLSAgICAgewotICAgICAgIGRlbWFuZ2xlZCA9 Ci0tICAgICAgICBjcGx1c19kZW1hbmdsZSAobWFuZ2xlZCwgRE1HTF9QQVJBTVMgfCBETUdMX0FO U0kpOwotKyAgICAgICAgY3BsdXNfZGVtYW5nbGUgKG1hbmdsZWQsIERNR0xfUEFSQU1TIHwgRE1H TF9BTlNJIHwgRE1HTF9WRVJCT1NFKTsKLSAgICAgICBpZiAoZGVtYW5nbGVkICE9IE5VTEwpCi0g CXsKLSAJICBnc3ltYm9sLT5sYW5ndWFnZSA9IGxhbmd1YWdlX2NwbHVzOwotQEAgLTYzMyw2ICs2 MzMsNyBAQCBzeW1ib2xfbmF0dXJhbF9uYW1lIChjb25zdCBzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xf aW5mbyAqZ3N5bWJvbCkKK0BAIC02OTUsNiArNjk2LDcgQEAgc3ltYm9sX25hdHVyYWxfbmFtZSAo Y29uc3Qgc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wpCiAgICAgIGNhc2UgbGFu Z3VhZ2VfY3BsdXM6CiAgICAgIGNhc2UgbGFuZ3VhZ2VfamF2YToKICAgICAgY2FzZSBsYW5ndWFn ZV9vYmpjOgpAQCAtMTk0MjEsNyArMTQxMTMsNyBAQCBpbmRleCA4ZDlkNzJjLi44MmUwMTYzIDEw MDY0NAogICAgICAgIGlmIChnc3ltYm9sLT5sYW5ndWFnZV9zcGVjaWZpYy5jcGx1c19zcGVjaWZp Yy5kZW1hbmdsZWRfbmFtZSAhPSBOVUxMKQogIAlyZXR1cm4gZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3Bl Y2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWU7CiAgICAgICAgYnJlYWs7Ci1AQCAt NjU4LDYgKzY1OSw3IEBAIHN5bWJvbF9kZW1hbmdsZWRfbmFtZSAoY29uc3Qgc3RydWN0IGdlbmVy YWxfc3ltYm9sX2luZm8gKmdzeW1ib2wpCitAQCAtNzIwLDYgKzcyMiw3IEBAIHN5bWJvbF9kZW1h bmdsZWRfbmFtZSAoY29uc3Qgc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wpCiAg ICAgIGNhc2UgbGFuZ3VhZ2VfY3BsdXM6CiAgICAgIGNhc2UgbGFuZ3VhZ2VfamF2YToKICAgICAg Y2FzZSBsYW5ndWFnZV9vYmpjOgpAQCAtMTk0MjksNyArMTQxMjEsNyBAQCBpbmRleCA4ZDlkNzJj Li44MmUwMTYzIDEwMDY0NAogICAgICAgIGlmIChnc3ltYm9sLT5sYW5ndWFnZV9zcGVjaWZpYy5j cGx1c19zcGVjaWZpYy5kZW1hbmdsZWRfbmFtZSAhPSBOVUxMKQogIAlyZXR1cm4gZ3N5bWJvbC0+ bGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWU7CiAgICAgICAg YnJlYWs7Ci1AQCAtODY4LDcgKzg3MCwxMyBAQCBmaW5kX3BjX3NlY3RfcHN5bXRhYiAoQ09SRV9B RERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCitAQCAtOTMxLDcgKzkzNCwxMyBA QCBmaW5kX3BjX3NlY3RfcHN5bXRhYiAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24g KnNlY3Rpb24pCiAgICAgICB0aGFuIHRoZSBsYXRlciB1c2VkIFRFWFRMT1cvVEVYVEhJR0ggb25l LiAgKi8KICAKICAgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKQEAgLTE5NDQ0LDcgKzE0MTM2LDcg QEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAgICAgICB7CiAgCXN0cnVjdCBwYXJ0 aWFsX3N5bXRhYiAqcHN0OwogIAotQEAgLTkwMSw2ICs5MDksNyBAQCBmaW5kX3BjX3NlY3RfcHN5 bXRhYiAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCitAQCAtOTY0 LDYgKzk3Myw3IEBAIGZpbmRfcGNfc2VjdF9wc3ltdGFiIChDT1JFX0FERFIgcGMsIHN0cnVjdCBv Ympfc2VjdGlvbiAqc2VjdGlvbikKICAJICAgIHJldHVybiBwc3Q7CiAgCSAgfQogICAgICAgIH0K QEAgLTE5NDUyLDcgKzE0MTQ0LDcgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAK ICAgIC8qIEV4aXN0aW5nIFBTWU1UQUJTX0FERFJNQVAgbWFwcGluZyBpcyBwcmVzZW50IGV2ZW4g Zm9yIFBBUlRJQUxfU1lNVEFCcwogICAgICAgd2hpY2ggc3RpbGwgaGF2ZSBubyBjb3JyZXNwb25k aW5nIGZ1bGwgU1lNVEFCcyByZWFkLiAgQnV0IGl0IGlzIG5vdAotQEAgLTExNjgsNiArMTE3Nywy MiBAQCBmaXh1cF9wc3ltYm9sX3NlY3Rpb24gKHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqcHN5bSwg c3RydWN0IG9iamZpbGUgKm9iamZpbGUpCitAQCAtMTIzMSw2ICsxMjQxLDIyIEBAIGZpeHVwX3Bz eW1ib2xfc2VjdGlvbiAoc3RydWN0IHBhcnRpYWxfc3ltYm9sICpwc3ltLCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSkKICAgIHJldHVybiBwc3ltOwogIH0KICAKQEAgLTE5NDc1LDMyMiArMTQxNjcs MTUgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2NDQKICAvKiBGaW5kIHRoZSBkZWZpbml0 aW9uIGZvciBhIHNwZWNpZmllZCBzeW1ib2wgbmFtZSBOQU1FCiAgICAgaW4gZG9tYWluIERPTUFJ TiwgdmlzaWJsZSBmcm9tIGxleGljYWwgYmxvY2sgQkxPQ0suCiAgICAgUmV0dXJucyB0aGUgc3Ry dWN0IHN5bWJvbCBwb2ludGVyLCBvciB6ZXJvIGlmIG5vIHN5bWJvbCBpcyBmb3VuZC4KLUBAIC0x MTk0LDEwICsxMjE5LDE0IEBAIGxvb2t1cF9zeW1ib2xfaW5fbGFuZ3VhZ2UgKGNvbnN0IGNoYXIg Km5hbWUsIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gewotICAgY2hhciAqZGVtYW5nbGVk X25hbWUgPSBOVUxMOwotICAgY29uc3QgY2hhciAqbW9kaWZpZWRfbmFtZSA9IE5VTEw7Ci0tICBj b25zdCBjaGFyICptYW5nbGVkX25hbWUgPSBOVUxMOwotICAgc3RydWN0IHN5bWJvbCAqcmV0dXJu dmFsOwotICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXAgPSBtYWtlX2NsZWFudXAgKG51bGxfY2xl YW51cCwgMCk7Ci0gCi0rICBpZihzdHJuY21wKG5hbWUsICI6OiIsIDIpID09IDApey8qIHRoaXMg bXVzdCBiZSBhIGdsb2JhbCBuYW1lICovCi0rICAgIG5hbWUgPSBuYW1lKzI7Ci0rICAgIGJsb2Nr ID0gTlVMTDsKLSsgIH0KLSsgIAotICAgbW9kaWZpZWRfbmFtZSA9IG5hbWU7CitAQCAtMTUzNCw2 ICsxNTYwLDcgQEAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1 Y3Qgb2JqZmlsZSAqbWFpbl9vYmpmaWxlLAorICAgICAgICAgfQogIAotICAgLyogSWYgd2UgYXJl IHVzaW5nIEMrKyBvciBKYXZhLCBkZW1hbmdsZSB0aGUgbmFtZSBiZWZvcmUgZG9pbmcgYSBsb29r dXAsIHNvCi1AQCAtMTIwNyw3ICsxMjM2LDYgQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAo Y29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAgICAgICBkZW1h bmdsZWRfbmFtZSA9IGNwbHVzX2RlbWFuZ2xlIChuYW1lLCBETUdMX0FOU0kgfCBETUdMX1BBUkFN Uyk7Ci0gICAgICAgaWYgKGRlbWFuZ2xlZF9uYW1lKQotIAl7Ci0tCSAgbWFuZ2xlZF9uYW1lID0g bmFtZTsKLSAJICBtb2RpZmllZF9uYW1lID0gZGVtYW5nbGVkX25hbWU7Ci0gCSAgbWFrZV9jbGVh bnVwICh4ZnJlZSwgZGVtYW5nbGVkX25hbWUpOwotIAl9Ci1AQCAtMTIyOSw3ICsxMjU3LDYgQEAg bG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaywKLSAJCSAgICAgIAkJICAgICAgIERNR0xfQU5TSSB8IERNR0xfUEFSQU1T IHwgRE1HTF9KQVZBKTsKLSAgICAgICBpZiAoZGVtYW5nbGVkX25hbWUpCi0gCXsKLS0JICBtYW5n bGVkX25hbWUgPSBuYW1lOwotIAkgIG1vZGlmaWVkX25hbWUgPSBkZW1hbmdsZWRfbmFtZTsKLSAJ ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBkZW1hbmdsZWRfbmFtZSk7Ci0gCX0KLUBAIC0xMjQ4LDgg KzEyNzUsOCBAQCBsb29rdXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBj b25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotICAgICAgIG1vZGlmaWVkX25hbWUgPSBjb3B5Owot ICAgICB9Ci0gCi0tICByZXR1cm52YWwgPSBsb29rdXBfc3ltYm9sX2F1eCAobW9kaWZpZWRfbmFt ZSwgbWFuZ2xlZF9uYW1lLCBibG9jaywKLS0JCQkJIGRvbWFpbiwgbGFuZywgaXNfYV9maWVsZF9v Zl90aGlzKTsKLSsgIHJldHVybnZhbCA9IGxvb2t1cF9zeW1ib2xfYXV4IChtb2RpZmllZF9uYW1l LCBibG9jaywgZG9tYWluLCBsYW5nLAotKwkJCQkgaXNfYV9maWVsZF9vZl90aGlzKTsKLSAgIGRv X2NsZWFudXBzIChjbGVhbnVwKTsKLSAKLSAgIHJldHVybiByZXR1cm52YWw7Ci1AQCAtMTI3Myw5 ICsxMzAwLDkgQEAgbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaywKLSAgICB3ZWxsLiAgKi8KLSAKLSBzdGF0aWMgc3RydWN0IHN5bWJvbCAq Ci0tbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmth Z2VfbmFtZSwKLS0JCSAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbiwKLS0JCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UsIGludCAqaXNfYV9maWVs ZF9vZl90aGlzKQotK2xvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrLAotKwkJICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLCBlbnVt IGxhbmd1YWdlIGxhbmd1YWdlLAotKwkJICAgaW50ICppc19hX2ZpZWxkX29mX3RoaXMpCi0gewot ICAgc3RydWN0IHN5bWJvbCAqc3ltOwotICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxh bmdkZWY7Ci1AQCAtMTI5MSw1NSArMTMxOCwxOSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3Qg Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotICAgLyogU2VhcmNoIHNwZWNp ZmllZCBibG9jayBhbmQgaXRzIHN1cGVyaW9ycy4gIERvbid0IHNlYXJjaAotICAgICAgU1RBVElD X0JMT0NLIG9yIEdMT0JBTF9CTE9DSy4gICovCi0gCi0tICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1 eF9sb2NhbCAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsgIHN5bSA9IGxv b2t1cF9zeW1ib2xfYXV4X2xvY2FsIChuYW1lLCBibG9jaywgZG9tYWluLCBsYW5ndWFnZSwgaXNf YV9maWVsZF9vZl90aGlzKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsK LSAKLS0gIC8qIElmIHJlcXVlc3RlZCB0byBkbyBzbyBieSB0aGUgY2FsbGVyIGFuZCBpZiBhcHBy b3ByaWF0ZSBmb3IgTEFOR1VBR0UsCi0tICAgICBjaGVjayB0byBzZWUgaWYgTkFNRSBpcyBhIGZp ZWxkIG9mIGB0aGlzJy4gKi8KLS0KLS0gIGxhbmdkZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1YWdl KTsKLS0KLS0gIGlmIChsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2Zp ZWxkX29mX3RoaXMgIT0gTlVMTAotLSAgICAgICYmIGJsb2NrICE9IE5VTEwpCi0tICAgIHsKLS0g ICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBOVUxMOwotLSAgICAgIC8qICd0aGlzJyBpcyBvbmx5 IGRlZmluZWQgaW4gdGhlIGZ1bmN0aW9uJ3MgYmxvY2ssIHNvIGZpbmQgdGhlCi0tCSBlbmNsb3Np bmcgZnVuY3Rpb24gYmxvY2suICAqLwotLSAgICAgIGZvciAoOyBibG9jayAmJiAhQkxPQ0tfRlVO Q1RJT04gKGJsb2NrKTsKLS0JICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jaykpOwot LQotLSAgICAgIGlmIChibG9jayAmJiAhZGljdF9lbXB0eSAoQkxPQ0tfRElDVCAoYmxvY2spKSkK LS0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIGxhbmdkZWYtPmxhX25hbWVfb2Zf dGhpcywKLS0JCQkJICAgTlVMTCwgVkFSX0RPTUFJTik7Ci0tICAgICAgaWYgKHN5bSkKLS0Jewot LQkgIHN0cnVjdCB0eXBlICp0ID0gc3ltLT50eXBlOwotLQotLQkgIC8qIEknbSBub3QgcmVhbGx5 IHN1cmUgdGhhdCB0eXBlIG9mIHRoaXMgY2FuIGV2ZXIKLS0JICAgICBiZSB0eXBlZGVmZWQ7IGp1 c3QgYmUgc2FmZS4gICovCi0tCSAgQ0hFQ0tfVFlQRURFRiAodCk7Ci0tCSAgaWYgKFRZUEVfQ09E RSAodCkgPT0gVFlQRV9DT0RFX1BUUgotLQkgICAgICB8fCBUWVBFX0NPREUgKHQpID09IFRZUEVf Q09ERV9SRUYpCi0tCSAgICB0ID0gVFlQRV9UQVJHRVRfVFlQRSAodCk7Ci0tCi0tCSAgaWYgKFRZ UEVfQ09ERSAodCkgIT0gVFlQRV9DT0RFX1NUUlVDVAotLQkgICAgICAmJiBUWVBFX0NPREUgKHQp ICE9IFRZUEVfQ09ERV9VTklPTikKLS0JICAgIGVycm9yIChfKCJJbnRlcm5hbCBlcnJvcjogYCVz JyBpcyBub3QgYW4gYWdncmVnYXRlIiksCi0tCQkgICBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMp OwotLQotLQkgIGlmIChjaGVja19maWVsZCAodCwgbmFtZSkpCi0tCSAgICB7Ci0tCSAgICAgICpp c19hX2ZpZWxkX29mX3RoaXMgPSAxOwotLQkgICAgICByZXR1cm4gTlVMTDsKLS0JICAgIH0KLS0J fQotLSAgICB9Ci0rICAvKiB0aGlzIHN5bWJvbCB3YXMgZm91bmQgdG8gYmUgYSBtZW1iZXIgdmFy aWFibGUKLSsgICAgIGRvIG5vdCBwZXJmb3JtIHRoZSBnbG9iYWwgc2VhcmNoLiAqLwotKyAgaWYg KGlzX2FfZmllbGRfb2ZfdGhpcyAmJiAqaXNfYV9maWVsZF9vZl90aGlzKQotKyAgICByZXR1cm4g TlVMTDsKLSAKLSAgIC8qIE5vdyBkbyB3aGF0ZXZlciBpcyBhcHByb3ByaWF0ZSBmb3IgTEFOR1VB R0UgdG8gbG9vawotICAgICAgdXAgc3RhdGljIGFuZCBnbG9iYWwgdmFyaWFibGVzLiAgKi8KLS0K LS0gIHN5bSA9IGxhbmdkZWYtPmxhX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKG5hbWUsIGxpbmth Z2VfbmFtZSwgYmxvY2ssIGRvbWFpbik7Ci0rICBsYW5nZGVmID0gbGFuZ3VhZ2VfZGVmIChsYW5n dWFnZSk7Ci0rICBzeW0gPSBsYW5nZGVmLT5sYV9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChuYW1l LCBibG9jaywgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsK LSAKLUBAIC0xMzQ5LDExICsxMzQwLDExIEBAIGxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFy ICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gICAgICBkZXNpcmVkIG5hbWUgYXMg YSBmaWxlLWxldmVsIHN0YXRpYywgdGhlbiBkbyBwc3ltdGFiLXRvLXN5bXRhYgotICAgICAgY29u dmVyc2lvbiBvbiB0aGUgZmx5IGFuZCByZXR1cm4gdGhlIGZvdW5kIHN5bWJvbC4gKi8KLSAKLS0g IHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgbGlu a2FnZV9uYW1lLCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAo U1RBVElDX0JMT0NLLCBuYW1lLCBkb21haW4pOwotICAgaWYgKHN5bSAhPSBOVUxMKQotICAgICBy ZXR1cm4gc3ltOwotIAotLSAgc3ltID0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKFNUQVRJ Q19CTE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5 bWJvbF9hdXhfcHN5bXRhYnMgKFNUQVRJQ19CTE9DSywgbmFtZSwgZG9tYWluKTsKLSAgIGlmIChz eW0gIT0gTlVMTCkKLSAgICAgcmV0dXJuIHN5bTsKLSAKLUBAIC0xMzY0LDMwICsxMzU1LDgxIEBA IGxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdl X25hbWUsCi0gICAgRG9uJ3Qgc2VhcmNoIFNUQVRJQ19CTE9DSyBvciBHTE9CQUxfQkxPQ0suICAq LwotIAotIHN0YXRpYyBzdHJ1Y3Qgc3ltYm9sICoKLS1sb29rdXBfc3ltYm9sX2F1eF9sb2NhbCAo Y29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotLQkJCSBjb25zdCBz dHJ1Y3QgYmxvY2sgKmJsb2NrLAotLQkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0rbG9v a3VwX3N5bWJvbF9hdXhfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2ssCi0rCQkJIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwgZW51bSBsYW5ndWFnZSBs YW5ndWFnZSwKLSsJCQkgaW50ICppc19hX2ZpZWxkX29mX3RoaXMpCi0gewotICAgc3RydWN0IHN5 bWJvbCAqc3ltOwotLSAgY29uc3Qgc3RydWN0IGJsb2NrICpzdGF0aWNfYmxvY2sgPSBibG9ja19z dGF0aWNfYmxvY2sgKGJsb2NrKTsKLSsgIGNvbnN0IHN0cnVjdCBibG9jayAqZ2xvYmFsX2Jsb2Nr ID0gYmxvY2tfZ2xvYmFsX2Jsb2NrIChibG9jayk7Ci0rICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJs b2NrX2l0ZXJhdG9yID0gYmxvY2s7Ci0rICBjb25zdCBzdHJ1Y3QgbGFuZ3VhZ2VfZGVmbiAqbGFu Z2RlZjsKLSsKLSsgIGxhbmdkZWYgPSBsYW5ndWFnZV9kZWYgKGxhbmd1YWdlKTsKLSAKLSAgIC8q IENoZWNrIGlmIGVpdGhlciBubyBibG9jayBpcyBzcGVjaWZpZWQgb3IgaXQncyBhIGdsb2JhbCBi bG9jay4gICovCi0gCi0tICBpZiAoc3RhdGljX2Jsb2NrID09IE5VTEwpCi0rICBpZiAoZ2xvYmFs X2Jsb2NrID09IE5VTEwpCi0gICAgIHJldHVybiBOVUxMOwotIAotLSAgd2hpbGUgKGJsb2NrICE9 IHN0YXRpY19ibG9jaykKLSsgIHdoaWxlIChibG9ja19pdGVyYXRvciAhPSBnbG9iYWxfYmxvY2sp Ci0gICAgIHsKLS0gICAgICBzeW0gPSBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgbGlu a2FnZV9uYW1lLCBibG9jaywgZG9tYWluKTsKLSsKLSsgICAgICBzeW0gPSBsb29rdXBfc3ltYm9s X2F1eF9ibG9jayAobmFtZSwgYmxvY2tfaXRlcmF0b3IsIGRvbWFpbik7Ci0rCi0gICAgICAgaWYg KHN5bSAhPSBOVUxMKQotIAlyZXR1cm4gc3ltOwotLQotLSAgICAgIGlmIChCTE9DS19GVU5DVElP TiAoYmxvY2spICE9IE5VTEwgJiYgYmxvY2tfaW5saW5lZF9wIChibG9jaykpCi0tCWJyZWFrOwot LSAgICAgIGJsb2NrID0gQkxPQ0tfU1VQRVJCTE9DSyAoYmxvY2spOwotKyAgICAKLSsgICAgICBp ZiAobGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMgKQotKyAgICAgICAgewotKyAgICAgICAgICBz eW0gPSBjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGJsb2NrX3Njb3BlIChibG9ja19pdGVyYXRv ciksIG5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxv Y2tfaXRlcmF0b3IsIGRvbWFpbiwgMSwgMSk7Ci0rCi0rICAgICAgICAgIGlmIChzeW0gIT0gTlVM TCkKLSsgICAgICAgICAgICByZXR1cm4gc3ltOwotKyAgICAgICAgfQotKwotKyAgICAgIGlmIChs YW5nZGVmLT5sYV9uYW1lX29mX3RoaXMgIT0gTlVMTCAmJiBpc19hX2ZpZWxkX29mX3RoaXMgIT0g TlVMTAotKwkgICYmIEJMT0NLX0ZVTkNUSU9OIChibG9ja19pdGVyYXRvcikpCi0rICAgICAgICB7 Ci0rICAgICAgICAgIGlmICghZGljdF9lbXB0eSAoQkxPQ0tfRElDVCAoYmxvY2tfaXRlcmF0b3Ip KSkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3lt Ym9sIChibG9ja19pdGVyYXRvciwKLSsJCQkJCSBsYW5nZGVmLT5sYV9uYW1lX29mX3RoaXMsCi0r CQkJCQkgVkFSX0RPTUFJTik7Ci0rCi0rCi0rICAgICAgICAgICAgICBpZiAoc3ltKQotKyAgICAg ICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgc3RydWN0IHR5cGUgKnQgPSBzeW0tPnR5 cGU7Ci0rCi0rICAgICAgICAgICAgICAgICAgLyogSSdtIG5vdCByZWFsbHkgc3VyZSB0aGF0IHR5 cGUgb2YgdGhpcyBjYW4gZXZlcgotKyAgICAgICAgICAgICAgICAgICAgIGJlIHR5cGVkZWZlZDsg anVzdCBiZSBzYWZlLiAgKi8KLSsgICAgICAgICAgICAgICAgICBDSEVDS19UWVBFREVGICh0KTsK LSsgICAgICAgICAgICAgICAgICBpZiAoVFlQRV9DT0RFICh0KSA9PSBUWVBFX0NPREVfUFRSCi0r ICAgICAgICAgICAgICAgICAgICAgIHx8IFRZUEVfQ09ERSAodCkgPT0gVFlQRV9DT0RFX1JFRikK LSsgICAgICAgICAgICAgICAgICAgICAgdCA9IFRZUEVfVEFSR0VUX1RZUEUgKHQpOwotKwotKyAg ICAgICAgICAgICAgICAgIGlmIChUWVBFX0NPREUgKHQpICE9IFRZUEVfQ09ERV9TVFJVQ1QKLSsg ICAgICAgICAgICAgICAgICAgICAgJiYgVFlQRV9DT0RFICh0KSAhPSBUWVBFX0NPREVfVU5JT04p Ci0rICAgICAgICAgICAgICAgICAgICBlcnJvciAoXygiSW50ZXJuYWwgZXJyb3I6IGAlcycgaXMg bm90IGFuIGFnZ3JlZ2F0ZSIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGxhbmdkZWYtPmxh X25hbWVfb2ZfdGhpcyk7Ci0rCi0rICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrX2ZpZWxkICh0 LCBuYW1lKSkKLSsgICAgICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgICAg KmlzX2FfZmllbGRfb2ZfdGhpcyA9IDE7Ci0rICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBO VUxMOwotKyAgICAgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAg ICAgICAgfQotKyAgICAgICAgfQotKwotKyAgICAgIGlmIChCTE9DS19GVU5DVElPTiAoYmxvY2tf aXRlcmF0b3IpICE9IE5VTEwgJiYgYmxvY2tfaW5saW5lZF9wIChibG9ja19pdGVyYXRvcikpCi0r ICAgICAgICBicmVhazsKLSsKLSsgICAgICBibG9ja19pdGVyYXRvciA9IEJMT0NLX1NVUEVSQkxP Q0sgKGJsb2NrX2l0ZXJhdG9yKTsKLSAgICAgfQotIAotLSAgLyogV2UndmUgcmVhY2hlZCB0aGUg ZWRnZSBvZiB0aGUgZnVuY3Rpb24gd2l0aG91dCBmaW5kaW5nIGEgcmVzdWx0LiAgKi8KLSsgIC8q IFdlJ3ZlIHJlYWNoZWQgdGhlIGdsb2JhbCBibG9jayB3aXRob3V0IGZpbmRpbmcgYSByZXN1bHQu ICAqLwotIAotICAgcmV0dXJuIE5VTEw7Ci0gfQotQEAgLTE0MTYsMTMgKzE0NTgsMTIgQEAgbG9v a3VwX29iamZpbGVfZnJvbV9ibG9jayAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaykKLSAgICBi bG9ja19mb3VuZCBhcHByb3ByaWF0ZWx5LiAgKi8KLSAKLSBzdHJ1Y3Qgc3ltYm9sICoKLS1sb29r dXBfc3ltYm9sX2F1eF9ibG9jayAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAotLQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotK2xvb2t1cF9zeW1ib2xf YXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAot IAkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0IHN5bWJvbCAqc3lt OwotIAotLSAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGxpbmthZ2Vf bmFtZSwgZG9tYWluKTsKLSsgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1l LCBkb21haW4pOwotICAgaWYgKHN5bSkKLSAgICAgewotICAgICAgIGJsb2NrX2ZvdW5kID0gYmxv Y2s7Ci1AQCAtMTQzOCw3ICsxNDc5LDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfYmxvY2sgKGNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSBzdHJ1Y3Qgc3ltYm9sICoK LSBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAotIAkJCQkgICBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkgICBjb25zdCBjaGFy ICpsaW5rYWdlX25hbWUsCi0gCQkJCSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0g ICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci1AQCAtMTQ1Miw3ICsxNDkyLDcgQEAgbG9va3VwX2dsb2Jh bF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAg IHsKLSAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0gICAgIGJsb2NrID0gQkxPQ0tWRUNUT1Jf QkxPQ0sgKGJ2LCBHTE9CQUxfQkxPQ0spOwotLSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9s IChibG9jaywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgICBzeW0gPSBsb29rdXBf YmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSAgICAgaWYgKHN5bSkKLSAgICAg ICB7Ci0gCWJsb2NrX2ZvdW5kID0gYmxvY2s7Ci1AQCAtMTQ2MSwyMyArMTUwMSwyMyBAQCBsb29r dXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAotICAgfQotIAotICAgLyogTm93IGdvIHRocm91Z2ggcHN5bXRhYnMuICAqLwotKyAgcmVx dWlyZV9wYXJ0aWFsX3N5bWJvbHMgKChzdHJ1Y3Qgb2JqZmlsZSAqKSBvYmpmaWxlKTsKLSAgIEFM TF9PQkpGSUxFX1BTWU1UQUJTIChvYmpmaWxlLCBwcykKLSAgIHsKLSAgICAgaWYgKCFwcy0+cmVh ZGluCi0tCSYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwK LS0JCQkJICAxLCBkb21haW4pKQotKwkmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1l LCAxLCBkb21haW4pKQotICAgICAgIHsKLSAJcyA9IFBTWU1UQUJfVE9fU1lNVEFCIChwcyk7Ci0g CWJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotIAlibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwg R0xPQkFMX0JMT0NLKTsKLS0Jc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUs IGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxv Y2ssIG5hbWUsIGRvbWFpbik7Ci0gCXJldHVybiBmaXh1cF9zeW1ib2xfc2VjdGlvbiAoc3ltLCAo c3RydWN0IG9iamZpbGUgKilvYmpmaWxlKTsKLSAgICAgICB9Ci0gICB9Ci0gCi0gICBpZiAob2Jq ZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSkKLSAgICAgcmV0dXJuIGxvb2t1cF9nbG9iYWxf c3ltYm9sX2Zyb21fb2JqZmlsZSAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSwKLS0J CQkJCSAgICAgIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsJCQkJCSAgICAgIG5hbWUs IGRvbWFpbik7Ci0gCi0gICByZXR1cm4gTlVMTDsKLSB9Ci1AQCAtMTQ4OCw4ICsxNTI4LDcgQEAg bG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLSAgICBzdGF0aWMgc3ltYm9scy4gICovCi0gCi0gc3RhdGljIHN0cnVjdCBzeW1i b2wgKgotLWxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLS0JCQkg ICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0rbG9va3VwX3N5 bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAkJ CSAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3Qgc3ltYm9sICpzeW07 Ci1AQCAtMTUwMiw3ICsxNTQxLDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJs b2NrX2luZGV4LAotICAgewotICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKLSAgICAgYmxvY2sg PSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLS0gICAgc3ltID0gbG9va3Vw X2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgICAg c3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0gICAgIGlm IChzeW0pCi0gICAgICAgewotIAlibG9ja19mb3VuZCA9IGJsb2NrOwotQEAgLTE1MjAsNyArMTU1 OSw2IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKLSAKLSBz dGF0aWMgc3RydWN0IHN5bWJvbCAqCi0gbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBi bG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkgICAgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAotIAkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0gewotICAgc3RydWN0 IHN5bWJvbCAqc3ltOwotQEAgLTE1MzEsMTYgKzE1NjksMTUgQEAgbG9va3VwX3N5bWJvbF9hdXhf cHN5bXRhYnMgKGludCBibG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAvKiBO b3cgZ28gdGhyb3VnaCBwc3ltdGFicy4gICovCisrICAgICAgcmVxdWlyZV9wYXJ0aWFsX3N5bWJv bHMgKChzdHJ1Y3Qgb2JqZmlsZSAqKSBvYmpmaWxlKTsKKyAgICAgICBBTExfT0JKRklMRV9QU1lN VEFCUyAob2JqZmlsZSwgcHMpCisgICAgICAgICB7CisgICAgICAgICAgIGlmICghcHMtPnJlYWRp bgorQEAgLTE2MDEsNyArMTYyOCw3IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChpbnQg YmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCiAgICBzdHJ1Y3Qgc3ltdGFiICpzOwogICAg Y29uc3QgaW50IHBzeW10YWJfaW5kZXggPSAoYmxvY2tfaW5kZXggPT0gR0xPQkFMX0JMT0NLID8g MSA6IDApOwogIApAQCAtMTk3OTgsMTQ4ICsxNDE4Myw4IEBAIGluZGV4IDhkOWQ3MmMuLjgyZTAx NjMgMTAwNjQ0CiArICBBTExfUFNZTVRBQlNfUkVRVUlSRUQgKG9iamZpbGUsIHBzKQogICAgewog ICAgICBpZiAoIXBzLT5yZWFkaW4KLS0JJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFt ZSwgbGlua2FnZV9uYW1lLAotLQkJCQkgIHBzeW10YWJfaW5kZXgsIGRvbWFpbikpCi0rCSYmIGxv b2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIHBzeW10YWJfaW5kZXgsIGRvbWFpbikpCi0g ICAgICAgewotIAlzID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSAJYnYgPSBCTE9DS1ZFQ1RP UiAocyk7Ci0gCWJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBibG9ja19pbmRleCk7Ci0t CXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBsaW5rYWdlX25hbWUsIGRv bWFpbik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4p OwotIAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICAvKiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3Nh cnksIGJ1dCBhcyBhIGxhc3QgcmVzb3J0IHRyeQotQEAgLTE1NTcsNyArMTU5NCw3IEBAIGxvb2t1 cF9zeW1ib2xfYXV4X3BzeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUs Ci0gCSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwKLSAJCQkJICAgICAgIGJsb2Nr X2luZGV4ID09IEdMT0JBTF9CTE9DSyA/Ci0gCQkJCSAgICAgICBTVEFUSUNfQkxPQ0sgOiBHTE9C QUxfQkxPQ0spOwotLQkgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUs IGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wg KGJsb2NrLCBuYW1lLCBkb21haW4pOwotIAkgICAgaWYgKCFzeW0pCi0gCSAgICAgIGVycm9yIChf KCJJbnRlcm5hbDogJXMgc3ltYm9sIGAlcycgZm91bmQgaW4gJXMgcHN5bXRhYiBidXQgbm90IGlu IHN5bXRhYi5cbiVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBtYXkgYmUgYSB0ZW1w bGF0ZSBmdW5jdGlvblxuKGlmIGEgdGVtcGxhdGUsIHRyeSBzcGVjaWZ5aW5nIGFuIGluc3RhbnRp YXRpb246ICVzPHR5cGU+KS4iKSwKLSAJCSAgICAgYmxvY2tfaW5kZXggPT0gR0xPQkFMX0JMT0NL ID8gImdsb2JhbCIgOiAic3RhdGljIiwKLUBAIC0xNTc2LDcgKzE2MTMsNiBAQCBsb29rdXBfc3lt Ym9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAotIAot IHN0cnVjdCBzeW1ib2wgKgotIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNo YXIgKm5hbWUsCi0tCQkJICAgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCSAgICAg IGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJICAgICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKQotIHsKLUBAIC0xNjEwLDExICsxNjQ2LDExIEBAIGJhc2ljX2xvb2t1cF9zeW1ib2xf bm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICB0aGFuIHRoYXQgb25lLCBzbyBJIGRv bid0IHRoaW5rIHdlIHNob3VsZCB3b3JyeSBhYm91dCB0aGF0IGZvcgotICAgICAgbm93LiAgKi8K LSAKLS0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfc3RhdGljIChuYW1lLCBsaW5rYWdlX25hbWUsIGJs b2NrLCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5bWJvbF9zdGF0aWMgKG5hbWUsIGJsb2Nr LCBkb21haW4pOwotICAgaWYgKHN5bSAhPSBOVUxMKQotICAgICByZXR1cm4gc3ltOwotIAotLSAg cmV0dXJuIGxvb2t1cF9zeW1ib2xfZ2xvYmFsIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2NrLCBk b21haW4pOwotKyAgcmV0dXJuIGxvb2t1cF9zeW1ib2xfZ2xvYmFsIChuYW1lLCBibG9jaywgZG9t YWluKTsKLSB9Ci0gCi0gLyogTG9va3VwIGEgc3ltYm9sIGluIHRoZSBzdGF0aWMgYmxvY2sgYXNz b2NpYXRlZCB0byBCTE9DSywgaWYgdGhlcmUKLUBAIC0xNjIyLDE0ICsxNjU4LDEzIEBAIGJhc2lj X2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCi0gc3RydWN0IHN5 bWJvbCAqCi0gbG9va3VwX3N5bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCi0tCQkgICAg ICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAotIAkJICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLSAgIGNvbnN0 IHN0cnVjdCBibG9jayAqc3RhdGljX2Jsb2NrID0gYmxvY2tfc3RhdGljX2Jsb2NrIChibG9jayk7 Ci0gCi0gICBpZiAoc3RhdGljX2Jsb2NrICE9IE5VTEwpCi0tICAgIHJldHVybiBsb29rdXBfc3lt Ym9sX2F1eF9ibG9jayAobmFtZSwgbGlua2FnZV9uYW1lLCBzdGF0aWNfYmxvY2ssIGRvbWFpbik7 Ci0rICAgIHJldHVybiBsb29rdXBfc3ltYm9sX2F1eF9ibG9jayAobmFtZSwgc3RhdGljX2Jsb2Nr LCBkb21haW4pOwotICAgZWxzZQotICAgICByZXR1cm4gTlVMTDsKLSB9Ci1AQCAtMTYzOSw3ICsx Njc0LDYgQEAgbG9va3VwX3N5bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCi0gCi0gc3Ry dWN0IHN5bWJvbCAqCi0gbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCi0t CQkgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgICBjb25zdCBzdHJ1Y3Qg YmxvY2sgKmJsb2NrLAotIAkJICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQotIHsKLUBA IC0xNjQ5LDE1ICsxNjgzLDE1IEBAIGxvb2t1cF9zeW1ib2xfZ2xvYmFsIChjb25zdCBjaGFyICpu YW1lLAotICAgLyogQ2FsbCBsaWJyYXJ5LXNwZWNpZmljIGxvb2t1cCBwcm9jZWR1cmUuICAqLwot ICAgb2JqZmlsZSA9IGxvb2t1cF9vYmpmaWxlX2Zyb21fYmxvY2sgKGJsb2NrKTsKLSAgIGlmIChv YmpmaWxlICE9IE5VTEwpCi0tICAgIHN5bSA9IHNvbGliX2dsb2JhbF9sb29rdXAgKG9iamZpbGUs IG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsKLSsgICAgc3ltID0gc29saWJfZ2xvYmFsX2xv b2t1cCAob2JqZmlsZSwgbmFtZSwgZG9tYWluKTsKLSAgIGlmIChzeW0gIT0gTlVMTCkKLSAgICAg cmV0dXJuIHN5bTsKLSAKLS0gIHN5bSA9IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKEdMT0JB TF9CTE9DSywgbmFtZSwgbGlua2FnZV9uYW1lLCBkb21haW4pOwotKyAgc3ltID0gbG9va3VwX3N5 bWJvbF9hdXhfc3ltdGFicyAoR0xPQkFMX0JMT0NLLCBuYW1lLCBkb21haW4pOwotICAgaWYgKHN5 bSAhPSBOVUxMKQotICAgICByZXR1cm4gc3ltOwotIAotLSAgcmV0dXJuIGxvb2t1cF9zeW1ib2xf YXV4X3BzeW10YWJzIChHTE9CQUxfQkxPQ0ssIG5hbWUsIGxpbmthZ2VfbmFtZSwgZG9tYWluKTsK LSsgIHJldHVybiBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoR0xPQkFMX0JMT0NLLCBuYW1l LCBkb21haW4pOwotIH0KLSAKLSBpbnQKLUBAIC0xNjgxLDE0ICsxNzE1LDExIEBAIHN5bWJvbF9t YXRjaGVzX2RvbWFpbiAoZW51bSBsYW5ndWFnZSBzeW1ib2xfbGFuZ3VhZ2UsCi0gfQotIAotIC8q IExvb2ssIGluIHBhcnRpYWxfc3ltdGFiIFBTVCwgZm9yIHN5bWJvbCB3aG9zZSBuYXR1cmFsIG5h bWUgaXMgTkFNRS4KLS0gICBJZiBMSU5LQUdFX05BTUUgaXMgbm9uLU5VTEwsIGNoZWNrIGluIGFk ZGl0aW9uIHRoYXQgdGhlIHN5bWJvbCdzCi0tICAgbGlua2FnZSBuYW1lIG1hdGNoZXMgaXQuICBD aGVjayB0aGUgZ2xvYmFsIHN5bWJvbHMgaWYgR0xPQkFMLCB0aGUKLS0gICBzdGF0aWMgc3ltYm9s cyBpZiBub3QgKi8KLSsgICBDaGVjayB0aGUgZ2xvYmFsIHN5bWJvbHMgaWYgR0xPQkFMLCB0aGUg c3RhdGljIHN5bWJvbHMgaWYgbm90LiAqLwotIAotIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqCi0g bG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwgY29uc3Qg Y2hhciAqbmFtZSwKLS0JCSAgICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsIGludCBnbG9i YWwsCi0tCQkgICAgICAgZG9tYWluX2VudW0gZG9tYWluKQotKwkJICAgICAgIGludCBnbG9iYWws IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKnRlbXA7 Ci0gICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKipzdGFydCwgKipwc3ltOwotQEAgLTE3NDAsOSAr MTc3MSw3IEBAIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpw c3QsIGNvbnN0IGNoYXIgKm5hbWUsCi0gCWludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5F X18sIF8oImZhaWxlZCBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVjayIpKTsKLSAKLSAgICAgICB3 aGlsZSAodG9wIDw9IHJlYWxfdG9wCi0tCSAgICAgJiYgKGxpbmthZ2VfbmFtZSAhPSBOVUxMCi0t CQkgPyBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKCp0b3ApLCBsaW5rYWdlX25hbWUpID09 IDAKLS0JCSA6IFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqdG9wLG5hbWUpKSkKLSsJICAg ICAmJiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnRvcCwgbmFtZSkpCi0gCXsKLSAJICBp ZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKCp0b3ApLAotIAkJCQkg ICAgIFNZTUJPTF9ET01BSU4gKCp0b3ApLCBkb21haW4pKQotQEAgLTE3NTksMTUgKzE3ODgsOSBA QCBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25z dCBjaGFyICpuYW1lLAotICAgICAgIGZvciAocHN5bSA9IHN0YXJ0OyBwc3ltIDwgc3RhcnQgKyBs ZW5ndGg7IHBzeW0rKykKLSAJewotIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21haW4gKFNZTUJP TF9MQU5HVUFHRSAoKnBzeW0pLAotLQkJCQkgICAgIFNZTUJPTF9ET01BSU4gKCpwc3ltKSwgZG9t YWluKSkKLS0JICAgIHsKLS0JICAgICAgaWYgKGxpbmthZ2VfbmFtZSAhPSBOVUxMCi0tCQkgID8g c3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FICgqcHN5bSksIGxpbmthZ2VfbmFtZSkgPT0gMAot LQkJICA6IFNZTUJPTF9NQVRDSEVTX1NFQVJDSF9OQU1FICgqcHN5bSwgbmFtZSkpCi0tCQl7Ci0t CQkgIHJldHVybiAoKnBzeW0pOwotLQkJfQotLQkgICAgfQotKwkJCQkgICAgIFNZTUJPTF9ET01B SU4gKCpwc3ltKSwgZG9tYWluKQotKwkgICAgICAmJiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFN RSAoKnBzeW0sIG5hbWUpKQotKwkgICAgcmV0dXJuICgqcHN5bSk7Ci0gCX0KLSAgICAgfQotIAot QEAgLTE4MDksMjIgKzE4MzIsMjUgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNv bnN0IGNoYXIgKm5hbWUpCi0gICB7Ci0gICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotICAgICBi bG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKLS0gICAgc3ltID0g bG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIE5VTEwsIFNUUlVDVF9ET01BSU4pOwot KyAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgU1RSVUNUX0RPTUFJ Tik7Ci0gICAgIGlmIChzeW0gJiYgIVRZUEVfSVNfT1BBUVVFIChTWU1CT0xfVFlQRSAoc3ltKSkp Ci0gICAgICAgewotIAlyZXR1cm4gU1lNQk9MX1RZUEUgKHN5bSk7CisgCSYmIGxvb2t1cF9wYXJ0 aWFsX3N5bWJvbCAocHMsIG5hbWUsIGxpbmthZ2VfbmFtZSwKK0BAIC0xODg2LDcgKzE5MTMsMTEg QEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAg ICAgfQogICAgfQogIApAQCAtMTk5NTAsMzYgKzE0MTk1LDkgQEAgaW5kZXggOGQ5ZDcyYy4uODJl MDE2MyAxMDA2NDQKICsgICAgIGNhbGwgYnV0IHRoYXQgd291bGQgYmVoYXZlIG5vbmRldGVybWlu aXN0aWNhbGx5LiAgKi8KICsgIEFMTF9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwgcHMpCiAg ICB7Ci0tICAgIGlmICghcHMtPnJlYWRpbiAmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBu YW1lLCBOVUxMLAotLQkJCQkJICAgICAgMSwgU1RSVUNUX0RPTUFJTikpCi0rICAgIGlmICghcHMt PnJlYWRpbiAmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzLCBuYW1lLCAxLCBTVFJVQ1RfRE9N QUlOKSkKLSAgICAgICB7Ci0gCXMgPSBQU1lNVEFCX1RPX1NZTVRBQiAocHMpOwotIAlidiA9IEJM T0NLVkVDVE9SIChzKTsKLSAJYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9C TE9DSyk7Ci0tCXN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBOVUxMLCBT VFJVQ1RfRE9NQUlOKTsKLSsJc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUs IFNUUlVDVF9ET01BSU4pOwotIAlpZiAoIXN5bSkKLSAJICB7Ci0gCSAgICAvKiBUaGlzIHNob3Vs ZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCBhcyBhIGxhc3QgcmVzb3J0Ci1AQCAtMTgzMyw3ICsxODU5 LDcgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCi0g CSAgICAgKiB0aGUgcHN5bXRhYiBnZXRzIGl0IHdyb25nIGluIHNvbWUgY2FzZXMuCi0gCSAgICAg Ki8KLSAJICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBTVEFUSUNfQkxPQ0spOwot LQkgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIE5VTEwsIFNUUlVD VF9ET01BSU4pOwotKwkgICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUs IFNUUlVDVF9ET01BSU4pOwotIAkgICAgaWYgKCFzeW0pCi0gCSAgICAgIGVycm9yIChfKCJJbnRl cm5hbDogZ2xvYmFsIHN5bWJvbCBgJXMnIGZvdW5kIGluICVzIHBzeW10YWIgYnV0IG5vdCBpbiBz eW10YWIuXG5cCi0gJXMgbWF5IGJlIGFuIGlubGluZWQgZnVuY3Rpb24sIG9yIG1heSBiZSBhIHRl bXBsYXRlIGZ1bmN0aW9uXG5cCi1AQCAtMTg1NywyMSArMTg4MywyNiBAQCBiYXNpY19sb29rdXBf dHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkKLSAgIHsKLSAgICAgYnYgPSBCTE9D S1ZFQ1RPUiAocyk7Ci0gICAgIGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBTVEFUSUNf QkxPQ0spOwotLSAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgTlVM TCwgU1RSVUNUX0RPTUFJTik7Ci0rICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2Nr LCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAgICAgaWYgKHN5bSAmJiAhVFlQRV9JU19PUEFRVUUg KFNZTUJPTF9UWVBFIChzeW0pKSkKLSAgICAgICB7Ci0gCXJldHVybiBTWU1CT0xfVFlQRSAoc3lt KTsKKyAgICAgaWYgKCFwcy0+cmVhZGluICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5h bWUsIE5VTEwsCisgCQkJCQkgICAgICAxLCBTVFJVQ1RfRE9NQUlOKSkKK0BAIC0xOTM0LDcgKzE5 NjUsMTIgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUp CiAgICAgICAgfQogICAgfQogIApAQCAtMTk5OTEsMjcgKzE0MjA5LDkgQEAgaW5kZXggOGQ5ZDcy Yy4uODJlMDE2MyAxMDA2NDQKICsgICAgIGNhbGwgYnV0IHRoYXQgd291bGQgYmVoYXZlIG5vbmRl dGVybWluaXN0aWNhbGx5LiAgKi8KICsgIEFMTF9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwg cHMpCiAgICB7Ci0tICAgIGlmICghcHMtPnJlYWRpbiAmJiBsb29rdXBfcGFydGlhbF9zeW1ib2wg KHBzLCBuYW1lLCBOVUxMLCAwLCBTVFJVQ1RfRE9NQUlOKSkKLSsgICAgaWYgKCFwcy0+cmVhZGlu ICYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIDAsIFNUUlVDVF9ET01BSU4pKQor ICAgICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwg TlVMTCwgMCwgU1RSVUNUX0RPTUFJTikpCiAgICAgICAgewotIAlzID0gUFNZTVRBQl9UT19TWU1U QUIgKHBzKTsKLSAJYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0gCWJsb2NrID0gQkxPQ0tWRUNUT1Jf QkxPQ0sgKGJ2LCBTVEFUSUNfQkxPQ0spOwotLQlzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChi bG9jaywgbmFtZSwgTlVMTCwgU1RSVUNUX0RPTUFJTik7Ci0rCXN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJaWYgKCFzeW0pCi0gCSAgewot IAkgICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29y dAotQEAgLTE4ODAsNyArMTkxMSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChj b25zdCBjaGFyICpuYW1lKQotIAkgICAgICogdGhlIHBzeW10YWIgZ2V0cyBpdCB3cm9uZyBpbiBz b21lIGNhc2VzLgotIAkgICAgICovCi0gCSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChi diwgR0xPQkFMX0JMT0NLKTsKLS0JICAgIHN5bSA9IGxvb2t1cF9ibG9ja19zeW1ib2wgKGJsb2Nr LCBuYW1lLCBOVUxMLCBTVFJVQ1RfRE9NQUlOKTsKLSsJICAgIHN5bSA9IGxvb2t1cF9ibG9ja19z eW1ib2wgKGJsb2NrLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSAJICAgIGlmICghc3ltKQotIAkg ICAgICBlcnJvciAoXygiSW50ZXJuYWw6IHN0YXRpYyBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBw c3ltdGFiIGJ1dCBub3QgaW4gc3ltdGFiLlxuXAotICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0 aW9uLCBvciBtYXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5MDUsOSArMTkzNiwy MyBAQCBmaW5kX21haW5fcHN5bXRhYiAodm9pZCkKK0BAIC0xOTc1LDcgKzIwMTEsMjEgQEAgZmlu ZF9tYWluX3BzeW10YWIgKHZvaWQpCiAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdDsKICAg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwogIApAQCAtMjAwMjMsNyArMTQyMjMsNyBAQCBpbmRl eCA4ZDlkNzJjLi44MmUwMTYzIDEwMDY0NAogKyAgICByZXF1aXJlX3BhcnRpYWxfc3ltYm9scyAo b2JqZmlsZSk7CiArICAgIEFMTF9PQkpGSUxFX1BTWU1UQUJTIChvYmpmaWxlLCBwc3QpCiArICAg IHsKLSsgICAgICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3QsIG1haW5fbmFtZSAoKSwg MSwgVkFSX0RPTUFJTikpCisrICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0LCBt YWluX25hbWUgKCksIE5VTEwsIDEsIFZBUl9ET01BSU4pKQogKwl7CiArCSAgcmV0dXJuIHBzdDsK ICsJfQpAQCAtMjAwMzIsNDkgKzE0MjMyLDkgQEAgaW5kZXggOGQ5ZDcyYy4uODJlMDE2MyAxMDA2 NDQKICsKICsgIEFMTF9QU1lNVEFCU19SRVFVSVJFRCAob2JqZmlsZSwgcHN0KQogICAgewotLSAg ICBpZiAobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwc3QsIG1haW5fbmFtZSAoKSwgTlVMTCwgMSwg VkFSX0RPTUFJTikpCi0rICAgIGlmIChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzdCwgbWFpbl9u YW1lICgpLCAxLCBWQVJfRE9NQUlOKSkKKyAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAo cHN0LCBtYWluX25hbWUgKCksIE5VTEwsIDEsIFZBUl9ET01BSU4pKQogICAgICAgIHsKLSAJcmV0 dXJuIChwc3QpOwotICAgICAgIH0KLUBAIC0xOTI1LDE0ICsxOTcwLDEwIEBAIGZpbmRfbWFpbl9w c3ltdGFiICh2b2lkKQotICAgIHNlYXJjaCBvbiB0aGUgc3ltYm9scy4gIEVhY2ggc3ltYm9sIHdo aWNoIGlzIG1hcmtlZCBhcyBiZWluZyBhIE9iakMvQysrCi0gICAgc3ltYm9sIChsYW5ndWFnZV9j cGx1cyBvciBsYW5ndWFnZV9vYmpjIHNldCkgaGFzIGJvdGggdGhlIGVuY29kZWQgYW5kCi0gICAg bm9uLWVuY29kZWQgbmFtZXMgdGVzdGVkIGZvciBhIG1hdGNoLgotLQotLSAgIElmIExJTktBR0Vf TkFNRSBpcyBub24tTlVMTCwgdmVyaWZ5IHRoYXQgYW55IHN5bWJvbCB3ZSBmaW5kIGhhcyB0aGlz Ci0tICAgcGFydGljdWxhciBtYW5nbGVkIG5hbWUuCi0gKi8KLSAKLSBzdHJ1Y3Qgc3ltYm9sICoK LSBsb29rdXBfYmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBj aGFyICpuYW1lLAotLQkJICAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkgICAgIGNv bnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKLSB7Ci0gICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVy OwotQEAgLTE5NDUsOSArMTk4Niw3IEBAIGxvb2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsCi0gCSAgIHN5bSA9IGRpY3RfaXRlcl9u YW1lX25leHQgKG5hbWUsICZpdGVyKSkKLSAJewotIAkgIGlmIChzeW1ib2xfbWF0Y2hlc19kb21h aW4gKFNZTUJPTF9MQU5HVUFHRSAoc3ltKSwKLS0JCQkJICAgICBTWU1CT0xfRE9NQUlOIChzeW0p LCBkb21haW4pCi0tCSAgICAgICYmIChsaW5rYWdlX25hbWUgIT0gTlVMTAotLQkJICA/IHN0cmNt cCAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSwgbGlua2FnZV9uYW1lKSA9PSAwIDogMSkpCi0r CQkJCSAgICAgU1lNQk9MX0RPTUFJTiAoc3ltKSwgZG9tYWluKSkKLSAJICAgIHJldHVybiBzeW07 Ci0gCX0KLSAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0xOTY3LDkgKzIwMDYsNyBAQCBsb29rdXBf YmxvY2tfc3ltYm9sIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFyICpuYW1l LAotIAkgICBzeW0gPSBkaWN0X2l0ZXJfbmFtZV9uZXh0IChuYW1lLCAmaXRlcikpCi0gCXsKLSAJ ICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKHN5bSksCi0tCQkJ CSAgICAgU1lNQk9MX0RPTUFJTiAoc3ltKSwgZG9tYWluKQotLQkgICAgICAmJiAobGlua2FnZV9u YW1lICE9IE5VTEwKLS0JCSAgPyBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSksIGxp bmthZ2VfbmFtZSkgPT0gMCA6IDEpKQotKwkJCQkgICAgIFNZTUJPTF9ET01BSU4gKHN5bSksIGRv bWFpbikpCi0gCSAgICB7Ci0gCSAgICAgIHN5bV9mb3VuZCA9IHN5bTsKLSAJICAgICAgaWYgKCFT WU1CT0xfSVNfQVJHVU1FTlQgKHN5bSkpCi1AQCAtMzE3Miw3ICszMjA5LDcgQEAgc2VhcmNoX3N5 bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9tYWluX2VudW0ga2luZCwgaW50IG5maWxlcywgY2hhciAq ZmlsZXNbXSwKK0BAIC0zMjYxLDcgKzMzMTEsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVn ZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAogICAgICAg bWF0Y2hpbmcgdGhlIHJlZ2V4cC4gIFRoYXQgd2F5IHdlIGRvbid0IGhhdmUgdG8gcmVwcm9kdWNl IGFsbCBvZgogICAgICAgdGhlIG1hY2hpbmVyeSBiZWxvdy4gKi8KICAKQEAgLTIwMDg0LDgxICsx NDI0NCwyMiBAQCBpbmRleCA4ZDlkNzJjLi44MmUwMTYzIDEwMDY0NAogICAgICBzdHJ1Y3QgcGFy dGlhbF9zeW1ib2wgKipib3VuZCwgKipnYm91bmQsICoqc2JvdW5kOwogICAgICBpbnQga2VlcF9n b2luZyA9IDE7CiBkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCi1pbmRl eCA3NDBkNGUwLi40NjFmZjk1IDEwMDY0NAoraW5kZXggODAwZmZkOC4uM2VkNjk0NyAxMDA2NDQK IC0tLSBhL2dkYi9zeW10YWIuaAogKysrIGIvZ2RiL3N5bXRhYi5oCi1AQCAtMTcxLDkgKzE3MSw2 IEBAIGV4dGVybiBDT1JFX0FERFIgc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChDT1JFX0FERFIs IHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKLSAjZGVmaW5lIFNZTUJPTF9TRUNUSU9OKHN5bWJvbCkJ CShzeW1ib2wpLT5naW5mby5zZWN0aW9uCi0gI2RlZmluZSBTWU1CT0xfT0JKX1NFQ1RJT04oc3lt Ym9sKQkoc3ltYm9sKS0+Z2luZm8ub2JqX3NlY3Rpb24KLSAKLS0jZGVmaW5lIFNZTUJPTF9DUExV U19ERU1BTkdMRURfTkFNRShzeW1ib2wpCVwKLS0gIChzeW1ib2wpLT5naW5mby5sYW5ndWFnZV9z cGVjaWZpYy5jcGx1c19zcGVjaWZpYy5kZW1hbmdsZWRfbmFtZQotLQotIC8qIEluaXRpYWxpemVz IHRoZSBsYW5ndWFnZSBkZXBlbmRlbnQgcG9ydGlvbiBvZiBhIHN5bWJvbAotICAgIGRlcGVuZGlu ZyB1cG9uIHRoZSBsYW5ndWFnZSBmb3IgdGhlIHN5bWJvbC4gKi8KLSAjZGVmaW5lIFNZTUJPTF9J TklUX0xBTkdVQUdFX1NQRUNJRklDKHN5bWJvbCxsYW5ndWFnZSkgXAotQEAgLTM5NCw3ICszOTEs MTMgQEAgdHlwZWRlZiBlbnVtIGRvbWFpbl9lbnVtX3RhZworQEAgLTM5Niw3ICszOTYsMTAgQEAg dHlwZWRlZiBlbnVtIGRvbWFpbl9lbnVtX3RhZwogICAgRlVOQ1RJT05TX0RPTUFJTiwKICAKICAg IC8qIEFsbCBkZWZpbmVkIHR5cGVzICovCiAtICBUWVBFU19ET01BSU4KICsgIFRZUEVTX0RPTUFJ TiwKICsKLSsgIC8qIEZvcnRyYW4gY29tbW9uIGJsb2Nrcy4gIFRoZWlyIG5hbWluZyBtdXN0IGJl IHNlcGFyYXRlIGZyb20gVkFSX0RPTUFJTi4gICovCi0rICBDT01NT05fQkxPQ0tfRE9NQUlOLAot KwogKyAgLyogRm9ydHJhbiBtb2R1bGUuICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZS4g ICovCiArICBNT0RVTEVfRE9NQUlOCiAgfQogIGRvbWFpbl9lbnVtOwogIAotQEAgLTk5MCw3ICs5 OTMsNiBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAq LCBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKLSAgICB0aGF0IGNhbid0IHRoaW5rIG9mIGFueXRoaW5n IGJldHRlciB0byBkby4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xvb2t1 cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKiwKLS0JCQkJCQkgICAgY29uc3QgY2hhciAq LAotIAkJCQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwKLSAJCQkJCQkgICAgY29uc3QgZG9t YWluX2VudW0pOwotIAotQEAgLTEwMDEsNyArMTAwMyw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9s ICpiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICosCi0gICAgaXMgb25l OyBkbyBub3RoaW5nIGlmIEJMT0NLIGlzIE5VTEwgb3IgYSBnbG9iYWwgYmxvY2suICAqLwotIAot IGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29uc3QgY2hhciAq bmFtZSwKLS0JCQkJCSAgICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkgICAgY29u c3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSAJCQkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21h aW4pOwotIAotQEAgLTEwMDksNyArMTAxMCw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29r dXBfc3ltYm9sX3N0YXRpYyAoY29uc3QgY2hhciAqbmFtZSwKLSAgICBuZWNlc3NhcnkpLiAgKi8K LSAKLSBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNo YXIgKm5hbWUsCi0tCQkJCQkgICAgY29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAotIAkJCQkJICAg IGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0gCQkJCQkgICAgY29uc3QgZG9tYWluX2VudW0g ZG9tYWluKTsKLSAKLUBAIC0xMDE4LDIxICsxMDE4LDE4IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9s ICpsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKLSAgICB3aWxsIGZpeCB1 cCB0aGUgc3ltYm9sIGlmIG5lY2Vzc2FyeS4gICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1ib2wg Kmxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLAotLQkJCQkJICAgICAg IGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKLSAJCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAotIAkJCQkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7Ci0gCi0g LyogTG9va3VwIGEgcGFydGlhbCBzeW1ib2wuICAqLwotIAotIGV4dGVybiBzdHJ1Y3QgcGFydGlh bF9zeW1ib2wgKmxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICos Ci0tCQkJCQkJICAgICBjb25zdCBjaGFyICosCi0gCQkJCQkJICAgICBjb25zdCBjaGFyICosIGlu dCwKLSAJCQkJCQkgICAgIGRvbWFpbl9lbnVtKTsKLSAKLSAvKiBsb29rdXAgYSBzeW1ib2wgYnkg bmFtZSwgd2l0aGluIGEgc3BlY2lmaWVkIGJsb2NrICovCi0gCi0gZXh0ZXJuIHN0cnVjdCBzeW1i b2wgKmxvb2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVjdCBibG9jayAqLCBjb25zdCBjaGFy ICosCi0tCQkJCQkgICBjb25zdCBjaGFyICosCi0gCQkJCQkgICBjb25zdCBkb21haW5fZW51bSk7 Ci0gCi0gLyogbG9va3VwIGEgW3N0cnVjdCwgdW5pb24sIGVudW1dIGJ5IG5hbWUsIHdpdGhpbiBh IHNwZWNpZmllZCBibG9jayAqLwotQEAgLTEwNjIsNiArMTA1OSw4IEBAIGV4dGVybiB2b2lkIGNs ZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKTsKK0BAIC0xMDY1LDYgKzEwNjgsOCBAQCBleHRl cm4gdm9pZCBjbGVhcl9wY19mdW5jdGlvbl9jYWNoZSAodm9pZCk7CiAgCiAgLyogZnJvbSBzeW10 YWIuYzogKi8KICAKQEAgLTIwMTY3LDE2ICsxNDI2OCw4IEBAIGluZGV4IDc0MGQ0ZTAuLjQ2MWZm OTUgMTAwNjQ0CiAgLyogbG9va3VwIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGJ5IGZpbGVuYW1lICov CiAgCiAgZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqbG9va3VwX3BhcnRpYWxfc3ltdGFi IChjb25zdCBjaGFyICopOwotQEAgLTEzNTYsNyArMTM1NSw2IEBAIGV4dGVybiAvKmNvbnN0ICov IGNoYXIgKm1haW5fbmFtZSAodm9pZCk7Ci0gLyogQ2hlY2sgZ2xvYmFsIHN5bWJvbHMgaW4gb2Jq ZmlsZS4gICovCi0gc3RydWN0IHN5bWJvbCAqbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpm aWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkJCQkgIGNvbnN0IGNoYXIg Km5hbWUsCi0tCQkJCQkJICBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCi0gCQkJCQkJICBjb25z dCBkb21haW5fZW51bSBkb21haW4pOwotIAotIGV4dGVybiBzdHJ1Y3Qgc3ltdGFic19hbmRfbGlu ZXMKIGRpZmYgLS1naXQgYS9nZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKLWluZGV4IGU1ZDE0 ZmQuLjM3ZmFiNzIgMTAwNjQ0CitpbmRleCBlZGY4Njk3Li5hN2VkMjA2IDEwMDY0NAogLS0tIGEv Z2RiL3RhcmdldC5jCiArKysgYi9nZGIvdGFyZ2V0LmMKIEBAIC0xMjQsNiArMTI0LDggQEAgc3Rh dGljIGludCBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSLCBpbnQsIGludCk7 CkBAIC0yMDE4OCw3ICsxNDI4MSw3IEBAIGluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAg c3RhdGljIGludCBkZWJ1Z190b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgKHZvaWQpOwogIAogIHN0 YXRpYyBpbnQgZGVidWdfdG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3Bz ICosIENPUkVfQUREUiAqKTsKLUBAIC02MjIsNiArNjI0LDcgQEAgdXBkYXRlX2N1cnJlbnRfdGFy Z2V0ICh2b2lkKQorQEAgLTYyNCw2ICs2MjYsNyBAQCB1cGRhdGVfY3VycmVudF90YXJnZXQgKHZv aWQpCiAgICAgICAgSU5IRVJJVCAodG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQsIHQpOwogICAgICAg IElOSEVSSVQgKHRvX2luc2VydF93YXRjaHBvaW50LCB0KTsKICAgICAgICBJTkhFUklUICh0b19y ZW1vdmVfd2F0Y2hwb2ludCwgdCk7CkBAIC0yMDE5Niw3ICsxNDI4OSw3IEBAIGluZGV4IGU1ZDE0 ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAgICAgICAgSU5IRVJJVCAodG9fc3RvcHBlZF9kYXRhX2FkZHJl c3MsIHQpOwogICAgICAgIElOSEVSSVQgKHRvX2hhdmVfc3RlcHBhYmxlX3dhdGNocG9pbnQsIHQp OwogICAgICAgIElOSEVSSVQgKHRvX2hhdmVfY29udGludWFibGVfd2F0Y2hwb2ludCwgdCk7Ci1A QCAtNzMzLDYgKzczNiw5IEBAIHVwZGF0ZV9jdXJyZW50X3RhcmdldCAodm9pZCkKK0BAIC03NDcs NiArNzUwLDkgQEAgdXBkYXRlX2N1cnJlbnRfdGFyZ2V0ICh2b2lkKQogICAgZGVfZmF1bHQgKHRv X3JlbW92ZV93YXRjaHBvaW50LAogIAkgICAgKGludCAoKikgKENPUkVfQUREUiwgaW50LCBpbnQp KQogIAkgICAgcmV0dXJuX21pbnVzX29uZSk7CkBAIC0yMDIwNiw3ICsxNDI5OSw3IEBAIGluZGV4 IGU1ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAgICBkZV9mYXVsdCAodG9fc3RvcHBlZF9ieV93YXRj aHBvaW50LAogIAkgICAgKGludCAoKikgKHZvaWQpKQogIAkgICAgcmV0dXJuX3plcm8pOwotQEAg LTMxNzMsNiArMzE3OSwxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERS IGFkZHIsIGludCBsZW4sIGludCB0eXBlKQorQEAgLTMzMDIsNiArMzMwOCwxOSBAQCBkZWJ1Z190 b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQog ICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC0yMDIyNiw3ICsxNDMxOSw3IEBAIGluZGV4IGU1 ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAgc3RhdGljIHZvaWQKICBkZWJ1Z190b190ZXJtaW5hbF9p bml0ICh2b2lkKQogIHsKLUBAIC0zNDIwLDYgKzM0MzksNyBAQCBzZXR1cF90YXJnZXRfZGVidWcg KHZvaWQpCitAQCAtMzU0OSw2ICszNTY4LDcgQEAgc2V0dXBfdGFyZ2V0X2RlYnVnICh2b2lkKQog ICAgY3VycmVudF90YXJnZXQudG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBkZWJ1Z190b19yZW1v dmVfaHdfYnJlYWtwb2ludDsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX2luc2VydF93YXRjaHBvaW50 ID0gZGVidWdfdG9faW5zZXJ0X3dhdGNocG9pbnQ7CiAgICBjdXJyZW50X3RhcmdldC50b19yZW1v dmVfd2F0Y2hwb2ludCA9IGRlYnVnX3RvX3JlbW92ZV93YXRjaHBvaW50OwpAQCAtMjAyMzUsMTAg KzE0MzI4LDEwIEBAIGluZGV4IGU1ZDE0ZmQuLjM3ZmFiNzIgMTAwNjQ0CiAgICBjdXJyZW50X3Rh cmdldC50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IGRlYnVnX3RvX3N0b3BwZWRfZGF0YV9hZGRy ZXNzOwogICAgY3VycmVudF90YXJnZXQudG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9 IGRlYnVnX3RvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2U7CiBkaWZmIC0tZ2l0IGEvZ2Ri L3RhcmdldC5oIGIvZ2RiL3RhcmdldC5oCi1pbmRleCBiMWNiODUyLi4zYzA2ZWJhIDEwMDY0NAor aW5kZXggYTAyMGJmNy4uMmM1ZTU4ZSAxMDA2NDQKIC0tLSBhL2dkYi90YXJnZXQuaAogKysrIGIv Z2RiL3RhcmdldC5oCi1AQCAtMzk1LDYgKzM5NSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCitAQCAt NDE5LDYgKzQxOSw3IEBAIHN0cnVjdCB0YXJnZXRfb3BzCiAgICAgIGludCAoKnRvX3JlbW92ZV9o d19icmVha3BvaW50KSAoc3RydWN0IGdkYmFyY2ggKiwgc3RydWN0IGJwX3RhcmdldF9pbmZvICop OwogICAgICBpbnQgKCp0b19yZW1vdmVfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQp OwogICAgICBpbnQgKCp0b19pbnNlcnRfd2F0Y2hwb2ludCkgKENPUkVfQUREUiwgaW50LCBpbnQp OwpAQCAtMjAyNDYsMTYgKzE0MzM5LDcgQEAgaW5kZXggYjFjYjg1Mi4uM2MwNmViYSAxMDA2NDQK ICAgICAgaW50ICgqdG9fc3RvcHBlZF9ieV93YXRjaHBvaW50KSAodm9pZCk7CiAgICAgIGludCB0 b19oYXZlX3N0ZXBwYWJsZV93YXRjaHBvaW50OwogICAgICBpbnQgdG9faGF2ZV9jb250aW51YWJs ZV93YXRjaHBvaW50OwotQEAgLTExMjQsNyArMTEyNSw3IEBAIGV4dGVybiBjaGFyICpub3JtYWxf cGlkX3RvX3N0ciAocHRpZF90IHB0aWQpOwotIC8qIEhhcmR3YXJlIHdhdGNocG9pbnQgaW50ZXJm YWNlcy4gICovCi0gCi0gLyogUmV0dXJucyBub24temVybyBpZiB3ZSB3ZXJlIHN0b3BwZWQgYnkg YSBoYXJkd2FyZSB3YXRjaHBvaW50IChtZW1vcnkgcmVhZCBvcgotLSAgIHdyaXRlKS4gICovCi0r ICAgd3JpdGUpLiAgT25seSB0aGUgSU5GRVJJT1JfUFRJRCB0YXNrIGlzIGJlaW5nIHF1ZXJpZWQu ICAqLwotIAotICNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCBcCi0gICAgKCpj dXJyZW50X3RhcmdldC50b19zdG9wcGVkX2J5X3dhdGNocG9pbnQpCi1AQCAtMTE2NiwxNCArMTE2 NywyNiBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19zdHIgKHB0aWRfdCBwdGlkKTsKK0BA IC0xMjYyLDYgKzEyNjMsMTUgQEAgZXh0ZXJuIGNoYXIgKm5vcm1hbF9waWRfdG9fc3RyIChwdGlk X3QgcHRpZCk7CiAgI2RlZmluZQl0YXJnZXRfcmVtb3ZlX3dhdGNocG9pbnQoYWRkciwgbGVuLCB0 eXBlKQlcCiAgICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3JlbW92ZV93YXRjaHBvaW50KSAoYWRk ciwgbGVuLCB0eXBlKQogIApAQCAtMjAyNzEsMjAgKzE0MzU1LDcgQEAgaW5kZXggYjFjYjg1Mi4u M2MwNmViYSAxMDA2NDQKICAjZGVmaW5lIHRhcmdldF9pbnNlcnRfaHdfYnJlYWtwb2ludChnZGJh cmNoLCBicF90Z3QpIFwKICAgICAgICgqY3VycmVudF90YXJnZXQudG9faW5zZXJ0X2h3X2JyZWFr cG9pbnQpIChnZGJhcmNoLCBicF90Z3QpCiAgCi0gI2RlZmluZSB0YXJnZXRfcmVtb3ZlX2h3X2Jy ZWFrcG9pbnQoZ2RiYXJjaCwgYnBfdGd0KSBcCi0gICAgICAoKmN1cnJlbnRfdGFyZ2V0LnRvX3Jl bW92ZV9od19icmVha3BvaW50KSAoZ2RiYXJjaCwgYnBfdGd0KQotIAotLSNkZWZpbmUgdGFyZ2V0 X3N0b3BwZWRfZGF0YV9hZGRyZXNzKHRhcmdldCwgeCkgXAotLSAgICAoKnRhcmdldC50b19zdG9w cGVkX2RhdGFfYWRkcmVzcykgKHRhcmdldCwgeCkKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWYgdGFy Z2V0IGtub3dzIHRoZSBkYXRhIGFkZHJlc3Mgd2hpY2ggdHJpZ2dlcmVkIHRoaXMKLSsgICB0YXJn ZXRfc3RvcHBlZF9ieV93YXRjaHBvaW50LCBpbiBzdWNoIGNhc2UgcGxhY2UgaXQgdG8gKkFERFJf UC4gIE9ubHkgdGhlCi0rICAgSU5GRVJJT1JfUFRJRCB0YXNrIGlzIGJlaW5nIHF1ZXJpZWQuICAq LwotKyNkZWZpbmUgdGFyZ2V0X3N0b3BwZWRfZGF0YV9hZGRyZXNzKHRhcmdldCwgYWRkcl9wKSBc Ci0rICAgICgqdGFyZ2V0LnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzKSAodGFyZ2V0LCBhZGRyX3Ap Ci0gCi0gI2RlZmluZSB0YXJnZXRfd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSh0YXJnZXQs IGFkZHIsIHN0YXJ0LCBsZW5ndGgpIFwKLSAgICgqdGFyZ2V0LnRvX3dhdGNocG9pbnRfYWRkcl93 aXRoaW5fcmFuZ2UpICh0YXJnZXQsIGFkZHIsIHN0YXJ0LCBsZW5ndGgpCi1AQCAtMTIwMyw2ICsx MjE2LDIwIEBAIGV4dGVybiBpbnQgdGFyZ2V0X3NlYXJjaF9tZW1vcnkgKENPUkVfQUREUiBzdGFy dF9hZGRyLAorQEAgLTEzMDIsNiArMTMxMiwyMCBAQCBleHRlcm4gaW50IHRhcmdldF9zZWFyY2hf bWVtb3J5IChDT1JFX0FERFIgc3RhcnRfYWRkciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVTE9OR0VTVCBwYXR0ZXJuX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBDT1JFX0FERFIgKmZvdW5kX2FkZHJwKTsKICAKQEAgLTIwMzAyLDMxOCArMTQzNzMs OSBAQCBpbmRleCBiMWNiODUyLi4zYzA2ZWJhIDEwMDY0NAogKwogK3ZvaWQgcHV0X2JpdHMgKGJm ZF91aW50NjRfdCBkYXRhLCBjaGFyICpidWYsIGludCBiaXRzLCBiZmRfYm9vbGVhbiBiaWdfcCk7 CiArCi0gLyogQ29tbWFuZCBsb2dnaW5nIGZhY2lsaXR5LiAgKi8KKyAvKiBUcmFjZXBvaW50LXJl bGF0ZWQgb3BlcmF0aW9ucy4gICovCiAgCi0gI2RlZmluZSB0YXJnZXRfbG9nX2NvbW1hbmQocCkJ CQkJCQlcCi1AQCAtMTMyMiw2ICsxMzQ5LDE0IEBAIGV4dGVybiBzdHJ1Y3QgdGFyZ2V0X29wcyAq ZmluZF90YXJnZXRfYmVuZWF0aCAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gCi0gZXh0ZXJuIGNo YXIgKnRhcmdldF9nZXRfb3NkYXRhIChjb25zdCBjaGFyICp0eXBlKTsKLSAKLSsvKiBSZWFkIE9T IGRhdGEgb2JqZWN0IG9mIHR5cGUgVFlQRSBmcm9tIHRoZSB0YXJnZXQsIGFuZCByZXR1cm4gaXQg aW4KLSsgICBYTUwgZm9ybWF0LiAgVGhlIHJlc3VsdCBpcyBOVUwtdGVybWluYXRlZCBhbmQgcmV0 dXJuZWQgYXMgYSBzdHJpbmcsCi0rICAgYWxsb2NhdGVkIHVzaW5nIHhtYWxsb2MuICBJZiBhbiBl cnJvciBvY2N1cnMgb3IgdGhlIHRyYW5zZmVyIGlzCi0rICAgdW5zdXBwb3J0ZWQsIE5VTEwgaXMg cmV0dXJuZWQuICBFbXB0eSBvYmplY3RzIGFyZSByZXR1cm5lZCBhcwotKyAgIGFsbG9jYXRlZCBi dXQgZW1wdHkgc3RyaW5ncy4gICovCi0rCi0rZXh0ZXJuIGNoYXIgKnRhcmdldF9nZXRfb3NkYXRh IChjb25zdCBjaGFyICp0eXBlKTsKLSsKLSAMCi0gLyogU3R1ZmYgdGhhdCBzaG91bGQgYmUgc2hh cmVkIGFtb25nIHRoZSB2YXJpb3VzIHJlbW90ZSB0YXJnZXRzLiAgKi8KLSAKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3Bvd2VycGMtcG93ZXI3LmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uYWUzMDFkYgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC9wb3dlcnBjLXBvd2VyNy5leHAKLUBAIC0wLDAgKzEsMTc1IEBACi0rIyBDb3B5cmln aHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFRlc3QgUG93ZXJQQyBQb3dlcjcg aW5zdHJ1Y3Rpb25zIGRpc2Fzc2VtYmx5LgotKwotK2lmIHshW2lzdGFyZ2V0ICJwb3dlcnBjKi0q LSoiXX0gdGhlbiB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIFBvd2VyUEMgUG93ZXI3IGluc3Ry dWN0aW9ucyBkaXNhc3NlbWJseS4iCi0rICAgIHJldHVybgotK30KLSsKLStzZXQgdGVzdGZpbGUg InBvd2VycGMtcG93ZXI3IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LnMKLStzZXQgb2JqZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Lm8KLSsKLStpZiB7IFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpmaWxlfSIgb2JqZWN0IHtk ZWJ1Z31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiUG93ZXJQQyBQb3dlcjcgaW5zdHJ1Y3Rp b25zIGRpc2Fzc2VtYmx5IgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rCi0rZ2RiX2V4aXQKLStn ZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9h ZCAke29iamZpbGV9Ci0rIAotKwotKyMgRGlzYXNzZW1ibGUgdGhlIGZ1bmN0aW9uLgotKwotK3Nl dCB0ZXN0ICJkaXNhc3MgZnVuYyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0r ICAgIC1yZSAiXHJcbkR1bXAgb2YgYXNzZW1ibGVyIGNvZGUgZm9yIGZ1bmN0aW9uIGZ1bmM6KFxy XG4uKlxyXG4pRW5kIG9mIGFzc2VtYmxlciBkdW1wLlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNl dCBmdW5jICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0r Ci0rcHJvYyBpbnN0cl90b19wYXR0IHtvZmZzZXQgaW5zdHJ9IHsKLSsgICAgIyAweDAwMDAwMDAw MDAwMDAwMTggPGZ1bmMrMjQ+OglzdHh2ZDJ4IHZzNDMscjQscjUKLSsgICAgcmV0dXJuICIuKlxy XG5bc3RyaW5nIG1hcCB7MHggMHgwKn0gJG9mZnNldF0gPGZ1bmNcXCs/XFswLTlcXSo+OlxbIFx0 XF0qW3N0cmluZyBtYXAgW2xpc3QgeyB9ICJcWyBcdFxdKyIgLiB7XC59XSAkaW5zdHJdXFsgXHRc XSpcclxuLioiCi0rfQotKwotKyMgS0ZBSUwgc3RyaW5ncyB3b3VsZCBub3QgZXhpc3QgaWYgLU1h bnkgd291bGQgcHJpbnQgdGhlIHNhbWUgYXMgLU1wb3dlcjcuCi0rIyBUaGF0IG1lYW5zIHRoZSBw b3dlcjcgZm9ybSBzaG91bGQgYmUgdGhlIHByZWZlcnJlZCBvbmUuCi0rIyBodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0wMy90aHJlYWRzLmh0bWwjMDAwMjAKLSsKLStw cm9jIGZ1bmNfY2hlY2sge29mZnNldCBpbnN0ciB7a2ZhaWwgIiJ9fSB7Ci0rICAgIGdsb2JhbCBm dW5jCi0rCi0rICAgIHNldCB0ZXN0ICJGb3VuZCAkb2Zmc2V0OiAkaW5zdHIiCi0rICAgIGlmIFty ZWdleHAgLW5vY2FzZSAtbGluZSBbaW5zdHJfdG9fcGF0dCAkb2Zmc2V0ICRpbnN0cl0gJGZ1bmNd IHsKLSsJcGFzcyAkdGVzdAotKyAgICB9IGVsc2VpZiB7JGtmYWlsICE9ICIiICYmIFtyZWdleHAg LW5vY2FzZSAtbGluZSBbaW5zdHJfdG9fcGF0dCAkb2Zmc2V0ICRrZmFpbF0gJGZ1bmNdfSB7Ci0r CWtmYWlsIGdkYi9OTk5OICR0ZXN0Ci0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgJHRlc3QKLSsgICAg fQotK30KLSsKLStmdW5jX2NoZWNrICAgMHgwICJseHZkMnggIHZzMyxyNCxyNSIKLStmdW5jX2No ZWNrICAgMHg0ICJseHZkMnV4IHZzMyxyNCxyNSIKLStmdW5jX2NoZWNrICAgMHg4ICJseHZkMngg IHZzNDMscjQscjUiCi0rZnVuY19jaGVjayAgIDB4YyAibHh2ZDJ1eCB2czQzLHI0LHI1IgotK2Z1 bmNfY2hlY2sgIDB4MTAgInN0eHZkMnggdnMzLHI0LHI1IgotK2Z1bmNfY2hlY2sgIDB4MTQgInN0 eHZkMnV4IHZzMyxyNCxyNSIKLStmdW5jX2NoZWNrICAweDE4ICJzdHh2ZDJ4IHZzNDMscjQscjUi Ci0rZnVuY19jaGVjayAgMHgxYyAic3R4dmQydXggdnM0MyxyNCxyNSIKLStmdW5jX2NoZWNrICAw eDIwICJ4eG1yZ2hkIHZzMyx2czQsdnM1IgotK2Z1bmNfY2hlY2sgIDB4MjQgInh4bXJnaGQgdnM0 Myx2czQ0LHZzNDUiCi0rZnVuY19jaGVjayAgMHgyOCAieHhtcmdsZCB2czMsdnM0LHZzNSIKLStm dW5jX2NoZWNrICAweDJjICJ4eG1yZ2xkIHZzNDMsdnM0NCx2czQ1IgotK2Z1bmNfY2hlY2sgIDB4 MzAgInh4bXJnaGQgdnMzLHZzNCx2czUiCi0rZnVuY19jaGVjayAgMHgzNCAieHhtcmdoZCB2czQz LHZzNDQsdnM0NSIKLStmdW5jX2NoZWNrICAweDM4ICJ4eG1yZ2xkIHZzMyx2czQsdnM1IgotK2Z1 bmNfY2hlY2sgIDB4M2MgInh4bXJnbGQgdnM0Myx2czQ0LHZzNDUiCi0rZnVuY19jaGVjayAgMHg0 MCAieHhwZXJtZGkgdnMzLHZzNCx2czUsMSIKLStmdW5jX2NoZWNrICAweDQ0ICJ4eHBlcm1kaSB2 czQzLHZzNDQsdnM0NSwxIgotK2Z1bmNfY2hlY2sgIDB4NDggInh4cGVybWRpIHZzMyx2czQsdnM1 LDIiCi0rZnVuY19jaGVjayAgMHg0YyAieHhwZXJtZGkgdnM0Myx2czQ0LHZzNDUsMiIKLStmdW5j X2NoZWNrICAweDUwICJ4dm1vdmRwIHZzMyx2czQiCi0rZnVuY19jaGVjayAgMHg1NCAieHZtb3Zk cCB2czQzLHZzNDQiCi0rZnVuY19jaGVjayAgMHg1OCAieHZtb3ZkcCB2czMsdnM0IgotK2Z1bmNf Y2hlY2sgIDB4NWMgInh2bW92ZHAgdnM0Myx2czQ0IgotK2Z1bmNfY2hlY2sgIDB4NjAgInh2Y3Bz Z25kcCB2czMsdnM0LHZzNSIKLStmdW5jX2NoZWNrICAweDY0ICJ4dmNwc2duZHAgdnM0Myx2czQ0 LHZzNDUiCi0rZnVuY19jaGVjayAgMHg2OCAid2FpdCIKLStmdW5jX2NoZWNrICAweDZjICJ3YWl0 IgotK2Z1bmNfY2hlY2sgIDB4NzAgIndhaXRyc3YiCi0rZnVuY19jaGVjayAgMHg3NCAid2FpdHJz diIKLStmdW5jX2NoZWNrICAweDc4ICJ3YWl0aW1wbCIKLStmdW5jX2NoZWNrICAweDdjICJ3YWl0 aW1wbCIKLStmdW5jX2NoZWNrICAweDgwICJkb3plIgotK2Z1bmNfY2hlY2sgIDB4ODQgIm5hcCIK LStmdW5jX2NoZWNrICAweDg4ICJzbGVlcCIKLStmdW5jX2NoZWNrICAweDhjICJydndpbmtsZSIK LStmdW5jX2NoZWNrICAweDkwICJwcnR5dyAgIHIzLHI0IgotK2Z1bmNfY2hlY2sgIDB4OTQgInBy dHlkICAgcjEzLHIxNCIKLStmdW5jX2NoZWNrICAweDk4ICJtZmNmYXIgIHIxMCIgICAgICAgICAg ICJtZnNwciAgIHIxMCwyOCIKLStmdW5jX2NoZWNrICAweDljICJtdGNmYXIgIHIxMSIgICAgICAg ICAgICJtdHNwciAgIDI4LHIxMSIKLStmdW5jX2NoZWNrICAweGEwICJjbXBiICAgIHIzLHI0LHI1 IgotK2Z1bmNfY2hlY2sgIDB4YTQgImx3emNpeCAgcjEwLHIxMSxyMTIiCi0rZnVuY19jaGVjayAg MHhhOCAiZGFkZCAgICBmMTYsZjE3LGYxOCIKLStmdW5jX2NoZWNrICAweGFjICJkYWRkcSAgIGYy MCxmMjIsZjI0IgotK2Z1bmNfY2hlY2sgIDB4YjAgImRzcyAgICAgMyIKLStmdW5jX2NoZWNrICAw eGI0ICJkc3NhbGwiCi0rZnVuY19jaGVjayAgMHhiOCAiZHN0ICAgICByNSxyNCwxIgotK2Z1bmNf Y2hlY2sgIDB4YmMgImRzdHQgICAgcjgscjcsMCIKLStmdW5jX2NoZWNrICAweGMwICJkc3RzdCAg IHI1LHI2LDMiCi0rZnVuY19jaGVjayAgMHhjNCAiZHN0c3R0ICByNCxyNSwyIgotK2Z1bmNfY2hl Y2sgIDB4YzggImRpdndlICAgcjEwLHIxMSxyMTIiCi0rZnVuY19jaGVjayAgMHhjYyAiZGl2d2Uu ICByMTEscjEyLHIxMyIKLStmdW5jX2NoZWNrICAweGQwICJkaXZ3ZW8gIHIxMixyMTMscjE0Igot K2Z1bmNfY2hlY2sgIDB4ZDQgImRpdndlby4gcjEzLHIxNCxyMTUiCi0rZnVuY19jaGVjayAgMHhk OCAiZGl2d2V1ICByMTAscjExLHIxMiIKLStmdW5jX2NoZWNrICAweGRjICJkaXZ3ZXUuIHIxMSxy MTIscjEzIgotK2Z1bmNfY2hlY2sgIDB4ZTAgImRpdndldW8gcjEyLHIxMyxyMTQiCi0rZnVuY19j aGVjayAgMHhlNCAiZGl2d2V1by4gcjEzLHIxNCxyMTUiCi0rZnVuY19jaGVjayAgMHhlOCAiYnBl cm1kICByNyxyMTcscjI3IgotK2Z1bmNfY2hlY2sgIDB4ZWMgInBvcGNudHcgcjEwLHIyMCIKLStm dW5jX2NoZWNrICAweGYwICJwb3BjbnRkIHIxMCxyMjAiCi0rZnVuY19jaGVjayAgMHhmNCAibGRi cnggICByMjAscjIxLHIyMiIKLStmdW5jX2NoZWNrICAweGY4ICJzdGRicnggIHIyMCxyMjEscjIy IgotK2Z1bmNfY2hlY2sgIDB4ZmMgImxmaXd6eCAgZjEwLDAscjEwIgotK2Z1bmNfY2hlY2sgMHgx MDAgImxmaXd6eCAgZjEwLHI5LHIxMCIKLStmdW5jX2NoZWNrIDB4MTA0ICJmY2ZpZHMgIGY0LGY1 IgotK2Z1bmNfY2hlY2sgMHgxMDggImZjZmlkcy4gZjQsZjUiCi0rZnVuY19jaGVjayAweDEwYyAi ZmNmaWR1cyBmNCxmNSIKLStmdW5jX2NoZWNrIDB4MTEwICJmY2ZpZHVzLiBmNCxmNSIKLStmdW5j X2NoZWNrIDB4MTE0ICJmY3Rpd3UgIGY0LGY1IgotK2Z1bmNfY2hlY2sgMHgxMTggImZjdGl3dS4g ZjQsZjUiCi0rZnVuY19jaGVjayAweDExYyAiZmN0aXd1eiBmNCxmNSIKLStmdW5jX2NoZWNrIDB4 MTIwICJmY3Rpd3V6LiBmNCxmNSIKLStmdW5jX2NoZWNrIDB4MTI0ICJmY3RpZHUgIGY0LGY1Igot K2Z1bmNfY2hlY2sgMHgxMjggImZjdGlkdS4gZjQsZjUiCi0rZnVuY19jaGVjayAweDEyYyAiZmN0 aWR1eiBmNCxmNSIKLStmdW5jX2NoZWNrIDB4MTMwICJmY3RpZHV6LiBmNCxmNSIKLStmdW5jX2No ZWNrIDB4MTM0ICJmY2ZpZHUgIGY0LGY1IgotK2Z1bmNfY2hlY2sgMHgxMzggImZjZmlkdS4gZjQs ZjUiCi0rZnVuY19jaGVjayAweDEzYyAiZnRkaXYgICBjcjAsZjEwLGYxMSIKLStmdW5jX2NoZWNr IDB4MTQwICJmdGRpdiAgIGNyNyxmMTAsZjExIgotK2Z1bmNfY2hlY2sgMHgxNDQgImZ0c3FydCAg Y3IwLGYxMCIKLStmdW5jX2NoZWNrIDB4MTQ4ICJmdHNxcnQgIGNyNyxmMTAiCi0rZnVuY19jaGVj ayAweDE0YyAiZGNidHQgICByOCxyOSIgICAgICAgICAiZGNidCAgICAxNixyOCxyOSIKLStmdW5j X2NoZWNrIDB4MTUwICJkY2J0c3R0IHI4LHI5IiAgICAgICAgICJkY2J0c3QgIDE2LHI4LHI5Igot K2Z1bmNfY2hlY2sgMHgxNTQgImRjZmZpeCAgZjEwLGYxMiIKLStmdW5jX2NoZWNrIDB4MTU4ICJk Y2ZmaXguIGYyMCxmMjIiCi0rZnVuY19jaGVjayAweDE1YyAibGJhcnggICByMTAscjExLHIxMiIK LStmdW5jX2NoZWNrIDB4MTYwICJsYmFyeCAgIHIxMCxyMTEscjEyIgotK2Z1bmNfY2hlY2sgMHgx NjQgImxiYXJ4ICAgcjEwLHIxMSxyMTIsMSIKLStmdW5jX2NoZWNrIDB4MTY4ICJsaGFyeCAgIHIy MCxyMjEscjIyIgotK2Z1bmNfY2hlY2sgMHgxNmMgImxoYXJ4ICAgcjIwLHIyMSxyMjIiCi0rZnVu Y19jaGVjayAweDE3MCAibGhhcnggICByMjAscjIxLHIyMiwxIgotK2Z1bmNfY2hlY2sgMHgxNzQg InN0YmN4LiAgcjEwLHIxMSxyMTIiCi0rZnVuY19jaGVjayAweDE3OCAic3RoY3guICByMTAscjEx LHIxMiIKLStmdW5jX2NoZWNrIDB4MTdjICJmcmUgICAgIGYxNCxmMTUiCi0rZnVuY19jaGVjayAw eDE4MCAiZnJlLiAgICBmMTQsZjE1IgotK2Z1bmNfY2hlY2sgMHgxODQgImZyZXMgICAgZjE0LGYx NSIKLStmdW5jX2NoZWNrIDB4MTg4ICJmcmVzLiAgIGYxNCxmMTUiCi0rZnVuY19jaGVjayAweDE4 YyAiZnJzcXJ0ZSBmMTQsZjE1IgotK2Z1bmNfY2hlY2sgMHgxOTAgImZyc3FydGUuIGYxNCxmMTUi Ci0rZnVuY19jaGVjayAweDE5NCAiZnJzcXJ0ZXMgZjE0LGYxNSIKLStmdW5jX2NoZWNrIDB4MTk4 ICJmcnNxcnRlcy4gZjE0LGYxNSIKLStmdW5jX2NoZWNrIDB4MTljICJpc2VsICAgIHIyLHIzLHI0 LDI4IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcu cyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcucwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjk4YjJlNzkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcucwotQEAgLTAsMCArMSwxMDcgQEAK LSsJLnRleHQKLSsJLmdsb2JsCWZ1bmMKLStmdW5jOgotKwkubG9uZwkweDdjNjQyZTk4CS8qICAg MDogbHh2ZDJ4ICB2czMscjQscjUgICAgICAgICAqLwotKwkubG9uZwkweDdjNjQyZWQ4CS8qICAg NDogbHh2ZDJ1eCB2czMscjQscjUgICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZTk5CS8qICAg ODogbHh2ZDJ4ICB2czQzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZWQ5CS8qICAg YzogbHh2ZDJ1eCB2czQzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdjNjQyZjk4CS8qICAx MDogc3R4dmQyeCB2czMscjQscjUgICAgICAgICAqLwotKwkubG9uZwkweDdjNjQyZmQ4CS8qICAx NDogc3R4dmQydXggdnMzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZjk5CS8qICAx ODogc3R4dmQyeCB2czQzLHI0LHI1ICAgICAgICAqLwotKwkubG9uZwkweDdkNjQyZmQ5CS8qICAx Yzogc3R4dmQydXggdnM0MyxyNCxyNSAgICAgICAqLwotKwkubG9uZwkweGYwNjQyODUwCS8qICAy MDogeHhtcmdoZCB2czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2ODU3CS8qICAy NDogeHhtcmdoZCB2czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyYjUwCS8qICAy ODogeHhtcmdsZCB2czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2YjU3CS8qICAy YzogeHhtcmdsZCB2czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyODUwCS8qICAz MDogeHhtcmdoZCB2czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2ODU3CS8qICAz NDogeHhtcmdoZCB2czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyYjUwCS8qICAz ODogeHhtcmdsZCB2czMsdnM0LHZzNSAgICAgICAqLwotKwkubG9uZwkweGYxNmM2YjU3CS8qICAz YzogeHhtcmdsZCB2czQzLHZzNDQsdnM0NSAgICAqLwotKwkubG9uZwkweGYwNjQyOTUwCS8qICA0 MDogeHhwZXJtZGkgdnMzLHZzNCx2czUsMSAgICAqLwotKwkubG9uZwkweGYxNmM2OTU3CS8qICA0 NDogeHhwZXJtZGkgdnM0Myx2czQ0LHZzNDUsMSAqLwotKwkubG9uZwkweGYwNjQyYTUwCS8qICA0 ODogeHhwZXJtZGkgdnMzLHZzNCx2czUsMiAgICAqLwotKwkubG9uZwkweGYxNmM2YTU3CS8qICA0 YzogeHhwZXJtZGkgdnM0Myx2czQ0LHZzNDUsMiAqLwotKwkubG9uZwkweGYwNjQyNzgwCS8qICA1 MDogeHZtb3ZkcCB2czMsdnM0ICAgICAgICAgICAqLwotKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1 NDogeHZtb3ZkcCB2czQzLHZzNDQgICAgICAgICAqLwotKwkubG9uZwkweGYwNjQyNzgwCS8qICA1 ODogeHZtb3ZkcCB2czMsdnM0ICAgICAgICAgICAqLwotKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1 YzogeHZtb3ZkcCB2czQzLHZzNDQgICAgICAgICAqLwotKwkubG9uZwkweGYwNjQyZjgwCS8qICA2 MDogeHZjcHNnbmRwIHZzMyx2czQsdnM1ICAgICAqLwotKwkubG9uZwkweGYxNmM2Zjg3CS8qICA2 NDogeHZjcHNnbmRwIHZzNDMsdnM0NCx2czQ1ICAqLwotKwkubG9uZwkweDdjMDAwMDdjCS8qICA2 ODogd2FpdCAgICAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMDAwMDdjCS8qICA2 Yzogd2FpdCAgICAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMjAwMDdjCS8qICA3 MDogd2FpdHJzdiAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMjAwMDdjCS8qICA3 NDogd2FpdHJzdiAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjNDAwMDdjCS8qICA3 ODogd2FpdGltcGwgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjNDAwMDdjCS8qICA3 Yzogd2FpdGltcGwgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwMzI0CS8qICA4 MDogZG96ZSAgICAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwMzY0CS8qICA4 NDogbmFwICAgICAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwM2E0CS8qICA4 ODogc2xlZXAgICAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDRjMDAwM2U0CS8qICA4 YzogcnZ3aW5rbGUgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjODMwMTM0CS8qICA5 MDogcHJ0eXcgICByMyxyNCAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdkY2QwMTc0CS8qICA5 NDogcHJ0eWQgICByMTMscjE0ICAgICAgICAgICAqLwotKwkubG9uZwkweDdkNWMwMmE2CS8qICA5 ODogbWZjZmFyICByMTAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdkN2MwM2E2CS8qICA5 YzogbXRjZmFyICByMTEgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjODMyYmY4CS8qICBh MDogY21wYiAgICByMyxyNCxyNSAgICAgICAgICAqLwotKwkubG9uZwkweDdkNGI2NjJhCS8qICBh NDogbHd6Y2l4ICByMTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweGVlMTE5MDA0CS8qICBh ODogZGFkZCAgICBmMTYsZjE3LGYxOCAgICAgICAqLwotKwkubG9uZwkweGZlOTZjMDA0CS8qICBh YzogZGFkZHEgICBmMjAsZjIyLGYyNCAgICAgICAqLwotKwkubG9uZwkweDdjNjAwNjZjCS8qICBi MDogZHNzICAgICAzICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDAwNjZjCS8qICBi NDogZHNzYWxsICAgICAgICAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdjMjUyMmFjCS8qICBi ODogZHN0ICAgICByNSxyNCwxICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDgzYWFjCS8qICBi YzogZHN0dCAgICByOCxyNywwICAgICAgICAgICAqLwotKwkubG9uZwkweDdjNjUzMmVjCS8qICBj MDogZHN0c3QgICByNSxyNiwzICAgICAgICAgICAqLwotKwkubG9uZwkweDdlNDQyYWVjCS8qICBj NDogZHN0c3R0ICByNCxyNSwyICAgICAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MzU2CS8qICBj ODogZGl2d2UgICByMTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNmM2YjU3CS8qICBj YzogZGl2d2UuICByMTEscjEyLHIxMyAgICAgICAqLwotKwkubG9uZwkweDdkOGQ3NzU2CS8qICBk MDogZGl2d2VvICByMTIscjEzLHIxNCAgICAgICAqLwotKwkubG9uZwkweDdkYWU3ZjU3CS8qICBk NDogZGl2d2VvLiByMTMscjE0LHIxNSAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MzE2CS8qICBk ODogZGl2d2V1ICByMTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNmM2YjE3CS8qICBk YzogZGl2d2V1LiByMTEscjEyLHIxMyAgICAgICAqLwotKwkubG9uZwkweDdkOGQ3NzE2CS8qICBl MDogZGl2d2V1byByMTIscjEzLHIxNCAgICAgICAqLwotKwkubG9uZwkweDdkYWU3ZjE3CS8qICBl NDogZGl2d2V1by4gcjEzLHIxNCxyMTUgICAgICAqLwotKwkubG9uZwkweDdlMjdkOWY4CS8qICBl ODogYnBlcm1kICByNyxyMTcscjI3ICAgICAgICAqLwotKwkubG9uZwkweDdlOGEwMmY0CS8qICBl YzogcG9wY250dyByMTAscjIwICAgICAgICAgICAqLwotKwkubG9uZwkweDdlOGEwM2Y0CS8qICBm MDogcG9wY250ZCByMTAscjIwICAgICAgICAgICAqLwotKwkubG9uZwkweDdlOTViNDI4CS8qICBm NDogbGRicnggICByMjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdlOTViNTI4CS8qICBm ODogc3RkYnJ4ICByMjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdkNDA1NmVlCS8qICBm YzogbGZpd3p4ICBmMTAsMCxyMTAgICAgICAgICAqLwotKwkubG9uZwkweDdkNDk1NmVlCS8qIDEw MDogbGZpd3p4ICBmMTAscjkscjEwICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZTljCS8qIDEw NDogZmNmaWRzICBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZTlkCS8qIDEw ODogZmNmaWRzLiBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZjljCS8qIDEw YzogZmNmaWR1cyBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVjODAyZjlkCS8qIDEx MDogZmNmaWR1cy4gZjQsZjUgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFjCS8qIDEx NDogZmN0aXd1ICBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFkCS8qIDEx ODogZmN0aXd1LiBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFlCS8qIDEx YzogZmN0aXd1eiBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyOTFmCS8qIDEy MDogZmN0aXd1ei4gZjQsZjUgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVjCS8qIDEy NDogZmN0aWR1ICBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVkCS8qIDEy ODogZmN0aWR1LiBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVlCS8qIDEy YzogZmN0aWR1eiBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjVmCS8qIDEz MDogZmN0aWR1ei4gZjQsZjUgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjljCS8qIDEz NDogZmNmaWR1ICBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjODAyZjlkCS8qIDEz ODogZmNmaWR1LiBmNCxmNSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGZjMGE1OTAwCS8qIDEz YzogZnRkaXYgICBjcjAsZjEwLGYxMSAgICAgICAqLwotKwkubG9uZwkweGZmOGE1OTAwCS8qIDE0 MDogZnRkaXYgICBjcjcsZjEwLGYxMSAgICAgICAqLwotKwkubG9uZwkweGZjMDA1MTQwCS8qIDE0 NDogZnRzcXJ0ICBjcjAsZjEwICAgICAgICAgICAqLwotKwkubG9uZwkweGZmODA1MTQwCS8qIDE0 ODogZnRzcXJ0ICBjcjcsZjEwICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDg0YTJjCS8qIDE0 YzogZGNidHQgICByOCxyOSAgICAgICAgICAgICAqLwotKwkubG9uZwkweDdlMDg0OWVjCS8qIDE1 MDogZGNidHN0dCByOCxyOSAgICAgICAgICAgICAqLwotKwkubG9uZwkweGVkNDA2NjQ0CS8qIDE1 NDogZGNmZml4ICBmMTAsZjEyICAgICAgICAgICAqLwotKwkubG9uZwkweGVlODBiNjQ1CS8qIDE1 ODogZGNmZml4LiBmMjAsZjIyICAgICAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MDY4CS8qIDE1 YzogbGJhcnggICByMTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MDY4CS8qIDE2 MDogbGJhcnggICByMTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNGI2MDY5CS8qIDE2 NDogbGJhcnggICByMTAscjExLHIxMiwxICAgICAqLwotKwkubG9uZwkweDdlOTViMGU4CS8qIDE2 ODogbGhhcnggICByMjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdlOTViMGU4CS8qIDE2 YzogbGhhcnggICByMjAscjIxLHIyMiAgICAgICAqLwotKwkubG9uZwkweDdlOTViMGU5CS8qIDE3 MDogbGhhcnggICByMjAscjIxLHIyMiwxICAgICAqLwotKwkubG9uZwkweDdkNGI2NTZkCS8qIDE3 NDogc3RiY3guICByMTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweDdkNGI2NWFkCS8qIDE3 ODogc3RoY3guICByMTAscjExLHIxMiAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODMwCS8qIDE3 YzogZnJlICAgICBmMTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODMxCS8qIDE4 MDogZnJlLiAgICBmMTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODMwCS8qIDE4 NDogZnJlcyAgICBmMTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODMxCS8qIDE4 ODogZnJlcy4gICBmMTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODM0CS8qIDE4 YzogZnJzcXJ0ZSBmMTQsZjE1ICAgICAgICAgICAqLwotKwkubG9uZwkweGZkYzA3ODM1CS8qIDE5 MDogZnJzcXJ0ZS4gZjE0LGYxNSAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODM0CS8qIDE5 NDogZnJzcXJ0ZXMgZjE0LGYxNSAgICAgICAgICAqLwotKwkubG9uZwkweGVkYzA3ODM1CS8qIDE5 ODogZnJzcXJ0ZXMuIGYxNCxmMTUgICAgICAgICAqLwotKwkubG9uZwkweDdjNDMyNzFlCS8qIDE5 YzogaXNlbCAgICByMixyMyxyNCwyOCAgICAgICAqLworICNkZWZpbmUgdGFyZ2V0X3RyYWNlX2lu aXQoKSBcCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBv aW50ZXItZm9vLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1m b28uUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjgzZmFhZjYKQEAgLTIx Nzc5LDcgKzE1NTQxLDcgQEAgaW5kZXggMDAwMDAwMC4uYjA1NDExZQogKwogK2dkYl90ZXN0ICJw dHlwZSBhcnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIGFycmF5 IgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguYwotaW5kZXggOThkNGQzNS4uZjk4YTY1NiAxMDA2 NDQKK2luZGV4IGVjYzMyODkuLmY3OWFkNDAgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmMKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHgu YwogQEAgLTE3LDYgKzE3LDEzIEBACkBAIC0yMTc5Nyw3ICsxNTU1OSw3IEBAIGluZGV4IDk4ZDRk MzUuLmY5OGE2NTYgMTAwNjQ0CiAgbWFpbiAodm9pZCkKICB7CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fy cmF5aWR4LmV4cAotaW5kZXggNzFjZTRhYS4uYWYwZTVmOCAxMDA2NDQKK2luZGV4IDBlZjZjNGIu LjMzMGVkODcgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4 cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKIEBAIC01OSw0ICs1 OSwxMiBAQCBnZGJfdGVzdCAicHJpbnQgYXJyYXkiIFwKQEAgLTIxODE1LDcgKzE1NTc3LDcgQEAg aW5kZXggNzFjZTRhYS4uYWYwZTVmOCAxMDA2NDQKICsgICAgfQogK30KIGRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9o ZWxwLmV4cAotaW5kZXggZDc2Y2MzNi4uNDk2ZmYxOCAxMDA2NDQKK2luZGV4IGQ3MTY0MWIuLmRi ZTg2ZWIgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCiArKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2hlbHAuZXhwCiBAQCAtNjA2LDcgKzYwNiw3IEBAIGdk Yl90ZXN0ICJoZWxwIHN0ZXBpIiAiU3RlcCBvbmUgaW5zdHJ1Y3Rpb24gZXhhY3RseVwuXFtcclxu XF0rQXJndW1lbnQgTiBtZWFucyBkCkBAIC0yMTg4NSwxNSArMTU2NDcsMzMgQEAgaW5kZXggMDAw MDAwMC4uNmQ4MmU3MwogKwogK2dkYl90ZXN0IHtzZXQgJHZhcnN0cnVjdCA9IHN0YXRpY3N0cnVj dH0KICtnZGJfdGVzdCB7cCAkdmFyc3RydWN0LmZpZWxkfSAiID0gMSIKLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xpbmVuby1tYWtldXAtZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLWZ1bmMuYworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvcmFkaXguZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAK K2luZGV4IDlmZDZjYjUuLjkzYWExNDIgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3JhZGl4LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAKK0BA IC0xNjMsMTMgKzE2Myw2IEBAIGdkYl90ZXN0ICJzZXQgcmFkaXgiIFwKKyAgICAgIklucHV0IGFu ZCBvdXRwdXQgcmFkaWNlcyBub3cgc2V0IHRvIGRlY2ltYWwgMTAsIGhleCBhLCBvY3RhbCAxMlwu IiBcCisgICAgICJSZXNldCByYWRpY2VzIgorIAorLWdkYl90ZXN0ICJzZXQgaW5wdXQtcmFkaXgg MCIgXAorLSAgICAiTm9uc2Vuc2UgaW5wdXQgcmFkaXggYGBkZWNpbWFsIDAnJzsgaW5wdXQgcmFk aXggdW5jaGFuZ2VkXFwuIiBcCistICAgICJSZWplY3QgaW5wdXQtcmFkaXggMCIKKy1nZGJfdGVz dCAic2hvdyBpbnB1dC1yYWRpeCIgXAorLSAgICAiRGVmYXVsdCBpbnB1dCByYWRpeCBmb3IgZW50 ZXJpbmcgbnVtYmVycyBpcyAxMFxcLiIgXAorLSAgICAiSW5wdXQgcmFkaXggdW5jaGFuZ2VkIGFm dGVyIHJlamVjdGluZyAwIgorLQorIGdkYl90ZXN0ICJzZXQgaW5wdXQtcmFkaXggMSIgXAorICAg ICAiTm9uc2Vuc2UgaW5wdXQgcmFkaXggYGBkZWNpbWFsIDEnJzsgaW5wdXQgcmFkaXggdW5jaGFu Z2VkXFwuIiBcCisgICAgICJSZWplY3QgaW5wdXQtcmFkaXggMSIKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEtb3ZlcmZsb3cuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjFh MDIyMGUKK2luZGV4IDAwMDAwMDAuLmM1ZDVlZTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC1mdW5jLmMKLUBAIC0wLDAgKzEsMjEgQEAK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMKK0BAIC0wLDAgKzEs MzAgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgogKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KyAgIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTIxOTA4LDU4ICsxNTY4OCwyNiBAQCBp bmRleCAwMDAwMDAwLi4xYTAyMjBlCiArICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov CiArCi0rdm9pZAotK2Z1bmMgKHZvaWQpCi0rewotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2xpbmVuby1tYWtldXAuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGlu ZW5vLW1ha2V1cC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYmIyMGU5 OAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFr ZXVwLmMKLUBAIC0wLDAgKzEsMzUgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjaW5jbHVkZSA8c3RkbGliLmg+CiArCi0rICAgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQorK3sKKysgIGludCBhcnJheVthcmdjXTsKICsKLSsvKiBEV19BVF9sb3dfcGMtRFdf QVRfaGlnaF9wYyBzaG91bGQgY292ZXIgdGhlIGZ1bmN0aW9uIHdpdGhvdXQgbGluZSBudW1iZXIK LSsgICBpbmZvcm1hdGlvbiAoLmRlYnVnX2xpbmUpIHNvIHdlIGNhbm5vdCB1c2UgYW4gZXh0ZXJu YWwgb2JqZWN0IGZpbGUuCi0rICAgCi0rICAgSXQgbXVzdCBub3QgYmUganVzdCBhIGxhYmVsIGFz IGl0IHdvdWxkIGFsaWFzIG9uIHRoZSBuZXh0IGZ1bmN0aW9uIGV2ZW4gZm9yCi0rICAgY29ycmVj dCBHREIuICBUaGVyZWZvcmUgc29tZSBzdHViIGRhdGEgbXVzdCBiZSBwbGFjZWQgdGhlcmUuCi0r ICAgCi0rICAgV2UgbmVlZCB0byBwcm92aWRlIGEgcmVhbCBzdHViIGZ1bmN0aW9uIGJvZHkgYXMg YXQgbGVhc3QgczM5MAotKyAgIChzMzkwX2FuYWx5emVfcHJvbG9ndWUpIHdvdWxkIHNraXAgdGhl IHdob2xlIGJvZHkgdGlsbCByZWFjaGluZyBgbWFpbicuICAqLworKyAgYXJyYXlbMF0gPSBhcnJh eVswXTsKICsKLStleHRlcm4gdm9pZCBmdW5jICh2b2lkKTsKLSthc20gKCJmdW5jOiAuaW5jYmlu IFwiZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC1mdW5jLmJpblwiIik7CisrICBhYm9ydCAoKTsKICsK LStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGZ1bmMgKCk7CiArICByZXR1cm4gMDsKICt9Ci1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvbGluZW5vLW1ha2V1cC5leHAKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3ZsYS1vdmVyZmxvdy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li4wYzc1Yjg0CitpbmRleCAwMDAwMDAwLi43MjAzYTQ4CiAtLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2xpbmVuby1tYWtldXAuZXhwCi1AQCAtMCwwICsxLDc4IEBA Ci0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAorQEAgLTAsMCArMSwxMDgg QEAKKysjIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwog KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yMTk3NCwzNDQgKzE1NzIyLDI3IEBA IGluZGV4IDAwMDAwMDAuLjBjNzViODQKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsK LStzZXQgdGVzdGZpbGUgImxpbmVuby1tYWtldXAiCi0rc2V0IHNyY2Z1bmNmaWxlICR7dGVzdGZp bGV9LWZ1bmMuYworKyMgV2UgY291bGQgY3Jhc2ggaW46CisrIyAjMCAgYmxvY2tfbGlua2FnZV9m dW5jdGlvbiAoYmw9MHgwKSBhdCAuLi8uLi9nZGIvYmxvY2suYzo2OQorKyMgIzEgIGluIGR3YXJm X2Jsb2NrX2dldF9mcmFtZV9iYXNlICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9jay5jOjk3 CisrIyAgIDk3CSAgZnJhbWVmdW5jID0gYmxvY2tfbGlua2FnZV9mdW5jdGlvbiAoZ2V0X2ZyYW1l X2Jsb2NrIChmcmFtZSwgTlVMTCkpOworKyMgIzIgIGluIGV4ZWN1dGVfc3RhY2tfb3AgKC4uLikg YXQgLi4vLi4vZ2RiL2R3YXJmMmV4cHIuYzo0OTYKKysjICMzICBpbiBkd2FyZl9ibG9ja19leGVj X2NvcmUgKCkgYXQgLi4vLi4vZ2RiL2R3YXJmMmJsb2NrLmM6MTU2CisrIyAjNCAgZHdhcmZfYmxv Y2tfZXhlYyAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzoyMDYKKysjICM1ICBpbiBy YW5nZV90eXBlX2NvdW50X2JvdW5kX2ludGVybmFsICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0eXBl cy5jOjE0MzAKKysjICM2ICBpbiBjcmVhdGVfYXJyYXlfdHlwZSAoLi4uKSBhdCAuLi8uLi9nZGIv Z2RidHlwZXMuYzo4NDAKKysjIC4uLgorKyMgIzIxIGluIHBzeW10YWJfdG9fc3ltdGFiICguLi4p IGF0IC4uLy4uL2dkYi9zeW1maWxlLmM6MjkyCisrIyAuLi4KKysjICMyOSBpbiBiYWNrdHJhY2Vf Y29tbWFuZF8xICgpIGF0IC4uLy4uL2dkYi9zdGFjay5jOjEyNzMKKysKKytzZXQgdGVzdGZpbGUg dmxhLW92ZXJmbG93Cisrc2V0IHNoZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 LWdkYi5zaAogK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgb2JqZnVuY2ZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLm8KLStzZXQgYmluZnVuY2ZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLmJpbgogK3NldCBiaW5maWxlICR7b2Jq ZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLStpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2Z1bmNmaWxlfSIgIiR7b2JqZnVuY2ZpbGV9IiBvYmplY3Qge31d ICE9ICIiIH0gewotKyAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRlc3RjYXNlIGNvbXBp bGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0b21hdGljYWxseSBm YWlsLiIKLSt9Ci0rCi0rc2V0IG9iamNvcHkgW2NhdGNoICJleGVjIG9iamNvcHkgLU8gYmluYXJ5 IC0tb25seS1zZWN0aW9uIC50ZXh0ICR7b2JqZnVuY2ZpbGV9ICR7YmluZnVuY2ZpbGV9IiBvdXRw dXRdCi0rdmVyYm9zZSAtbG9nICJvYmpjb3B5PSRvYmpjb3B5OiAkb3V0cHV0IgotK2lmIHsgJG9i amNvcHkgIT0gMCB9IHsKLSsgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBj b21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2Fs bHkgZmFpbC4iCi0rfQotK3NldCBiaW5mdW5jZmlsZXNpemUgW2ZpbGUgc2l6ZSAkYmluZnVuY2Zp bGVdCi0rdmVyYm9zZSAtbG9nICJmaWxlIHNpemUgJGJpbmZ1bmNmaWxlID0gJGJpbmZ1bmNmaWxl c2l6ZSIKLSsKLStpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Zp bGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgZ2Ri X3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRl c3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCi0rfQotKwotK2dkYl9l eGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0r Z2RiX2xvYWQgJHtiaW5maWxlfQotKwotK3NldCBiX2FkZHIgIiIKLStzZXQgdGVzdCAiYnJlYWsg ZnVuYyIKLStnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiQnJlYWtw b2ludCBcWzAtOVxdKyBhdCAoMHhcWzAtOWEtZlxdKylcclxuJGdkYl9wcm9tcHQgJCIgewotKwlz ZXQgYl9hZGRyICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsg ICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rIGF0ICgweFxbMC05YS1mXF0rKTogLipcclxuJGdk Yl9wcm9tcHQgJCIgewotKwlzZXQgYl9hZGRyICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlmYWls ICR0ZXN0Ci0rICAgIH0KLSt9Ci0rdmVyYm9zZSAtbG9nICJiX2FkZHI9PCRiX2FkZHI+IgotKwot K3NldCBwX2FkZHIgIiIKLStzZXQgdGVzdCAicHJpbnQgZnVuYyIKLStnZGJfdGVzdF9tdWx0aXBs ZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiXFwkXFswLTlcXSsgPSB7PHRleHQgdmFyaWFibGUs IG5vIGRlYnVnIGluZm8+fSAoMHhcWzAtOWEtZlxdKykgPGZ1bmM+XHJcbiRnZGJfcHJvbXB0ICQi IHsKLSsJc2V0IHBfYWRkciAkZXhwZWN0X291dCgxLHN0cmluZykKLSsJcGFzcyAkdGVzdAotKyAg ICB9Ci0rfQotK3ZlcmJvc2UgLWxvZyAicF9hZGRyPTwkcF9hZGRyPiIKLSsKLStzZXQgdGVzdCAi YnJlYWsgYWRkcmVzcyBiZWxvbmdzIHRvIGZ1bmMiCi0raWYgeyRiX2FkZHIgPT0gJHBfYWRkcn0g ewotKyAgICBwYXNzICIkdGVzdCAoZXhhY3QgbWF0Y2gpIgotK30gZWxzZSB7Ci0rICAgIHNldCBz a2lwIFtleHByICRiX2FkZHIgLSAkcF9hZGRyXQotKyAgICBpZiB7JHNraXAgPiAwICYmICRza2lw IDwgJGJpbmZ1bmNmaWxlc2l6ZX0gewotKwlwYXNzICIkdGVzdCAocHJvbG9ndWUgc2tpcCBieSAk c2tpcCBieXRlcykiCi0rICAgIH0gZWxzZSB7Ci0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30KLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21hY3NjcC5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL21hY3NjcC5leHAKLWluZGV4IDU1YzRkMzEuLmRmMjVkM2MgMTAwNjQ0Ci0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21hY3NjcC5leHAKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvbWFjc2NwLmV4cAotQEAgLTMzLDYgKzMzLDE0IEBAIGlmIFt0ZXN0X2NvbXBp bGVyX2luZm8gZ2NjKl0gewotICAgICBsYXBwZW5kIG9wdGlvbnMgYWRkaXRpb25hbF9mbGFncz0t ZzMKLSB9Ci0gCi0rIyBXb3JrYXJvdW5kIGNjYWNoZSBtYWtpbmcgbGluZW5vIG5vbi16ZXJvIGZv ciBjb21tYW5kLWxpbmUgZGVmaW5pdGlvbnMuCi0raWYge1tmaW5kX2djY10gPT0gImdjYyIgJiYg W2ZpbGUgZXhlY3V0YWJsZSAiL3Vzci9iaW4vZ2NjIl19IHsKLSsgICAgc2V0IHJlc3VsdCBbY2F0 Y2ggImV4ZWMgd2hpY2ggZ2NjIiBvdXRwdXRdCi0rICAgIGlmIHskcmVzdWx0ID09IDAgJiYgW3N0 cmluZyBmaXJzdCAiL2NjYWNoZS8iICRvdXRwdXRdID49IC0xfSB7Ci0rICAgICAgIGxhcHBlbmQg b3B0aW9ucyAiY29tcGlsZXI9L3Vzci9iaW4vZ2NjIgotKyAgICB9Ci0rfQotKwotICMgR2VuZXJh dGUgdGhlIGludGVybWVkaWF0ZSBvYmplY3QgZmlsZS4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgRGFy d2luIHRvCi0gIyBoYXZlIGFjY2VzcyB0byB0aGUgLmRlYnVnX21hY2luZm8gc2VjdGlvbi4KLSBp ZiAge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS9tYWNzY3AxLmMiICIke29iamZp bGV9IiBcCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9yYWRpeC5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3JhZGl4LmV4cAotaW5kZXggNzUwZmQyMy4uZGZkYjkyOSAx MDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcmFkaXguZXhwCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL3JhZGl4LmV4cAotQEAgLTE2MiwxMyArMTYyLDYgQEAgZ2RiX3Rl c3QgInNldCByYWRpeCIgXAotICAgICAiSW5wdXQgYW5kIG91dHB1dCByYWRpY2VzIG5vdyBzZXQg dG8gZGVjaW1hbCAxMCwgaGV4IGEsIG9jdGFsIDEyXC4iIFwKLSAgICAgIlJlc2V0IHJhZGljZXMi Ci0gCi0tZ2RiX3Rlc3QgInNldCBpbnB1dC1yYWRpeCAwIiBcCi0tICAgICJOb25zZW5zZSBpbnB1 dCByYWRpeCBgYGRlY2ltYWwgMCcnOyBpbnB1dCByYWRpeCB1bmNoYW5nZWRcXC4iIFwKLS0gICAg IlJlamVjdCBpbnB1dC1yYWRpeCAwIgotLWdkYl90ZXN0ICJzaG93IGlucHV0LXJhZGl4IiBcCi0t ICAgICJEZWZhdWx0IGlucHV0IHJhZGl4IGZvciBlbnRlcmluZyBudW1iZXJzIGlzIDEwXFwuIiBc Ci0tICAgICJJbnB1dCByYWRpeCB1bmNoYW5nZWQgYWZ0ZXIgcmVqZWN0aW5nIDAiCi0tCi0gZ2Ri X3Rlc3QgInNldCBpbnB1dC1yYWRpeCAxIiBcCi0gICAgICJOb25zZW5zZSBpbnB1dCByYWRpeCBg YGRlY2ltYWwgMScnOyBpbnB1dCByYWRpeCB1bmNoYW5nZWRcXC4iIFwKLSAgICAgIlJlamVjdCBp bnB1dC1yYWRpeCAxIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3Jp bmQtYXR0YWNoLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWF0dGFjaC5jCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uODRiNTdkYgotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guYwotQEAgLTAs MCArMSwyOCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKyNp bmNsdWRlIDxzdGRsaWIuaD4KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIGludCAqYSA9 IG1hbGxvYyAoMSk7Ci0rCi0rICBhWzEwXSA9IDA7CQkvKiBjcmFzaC1oZXJlICovCi0rCi0rICBy ZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmlu ZC1hdHRhY2guZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guZXhw Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWY5YjI2ZQotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guZXhwCi1A QCAtMCwwICsxLDk0IEBACi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IK LSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r IyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3Rm aWxlIHZhbGdyaW5kLWF0dGFjaAotK3NldCBzaGZpbGUgJHt0ZXN0ZmlsZX0uc2gKLStzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Zp bGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAgdW50 ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RvcF9zdXBwcmVzc2luZ190ZXN0czsKLSsKLStzZXQgVkFM R1JJTkQgInZhbGdyaW5kIgotKwotKyMgU3ludGF4IGZvciAke3NoZmlsZX0gaXM6IDxiaW5maWxl PiA8dmFsZ3JpbmQ+IDxkYi1jb21tYW5kLWFyZ3VtZW50cz4KLStzZXQgVkFMR1JJTkRfU1BBV04g InNoICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzaGZpbGV9ICRiaW5maWxlICRWQUxHUklORCAkR0RC ICRJTlRFUk5BTF9HREJGTEFHUyAkR0RCRkxBR1MgW2hvc3RfaW5mbyBnZGJfb3B0c10iCi0rCi0r c2V0IHRlc3QgInNwYXduIHZhbGdyaW5kIgotK3ZlcmJvc2UgIlNwYXduaW5nICRWQUxHUklORF9T UEFXTiIKLSsKLStpZiBbaW5mbyBleGlzdHMgZ2RiX3NwYXduX2lkXSB7Ci0rICAgIGZhaWwgJHRl c3QKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbaXNfcmVtb3RlIGhvc3RdIHsKLSsgICAg aWYgeyBbd2hpY2ggJFZBTEdSSU5EXSA9PSAwIH0gdGhlbiB7Ci0rCXVudGVzdGVkICJDb3VsZG4n dCBmaW5kICRWQUxHUklORCIKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSt9Ci0rc2V0IHJlcyBbcmVt b3RlX3NwYXduIGhvc3QgIiRWQUxHUklORF9TUEFXTiJdCi0raWYgeyAkcmVzIDwgMCB8fCAkcmVz ID09ICIiIH0gewotKyAgICBwZXJyb3IgIlNwYXduaW5nICRWQUxHUklORF9TUEFXTiBmYWlsZWQu IgotKyAgICByZXR1cm4gLTEKLSt9Ci0rc2V0IGdkYl9zcGF3bl9pZCAtMTsKLSsKLStnZGJfZXhw ZWN0IHsKLSsgICAgLXJlICItLS0tIEF0dGFjaCB0byBkZWJ1Z2dlciBcXD8gLS0tIFxcXFtSZXR1 cm4vTi9uL1kveS9DL2NcXFxdIC0tLS0gJCIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAg ZW9mIHsKLSsJcGVycm9yICIoZW9mKSAkVkFMR1JJTkQgbmV2ZXIgaW5pdGlhbGl6ZWQiCi0rCXJl bW90ZV9jbG9zZSBob3N0Ci0rCXJldHVybiAtMQotKyAgICB9Ci0rICAgIHRpbWVvdXQgewotKwlw ZXJyb3IgIih0aW1lb3V0KSAkVkFMR1JJTkQgbmV2ZXIgaW5pdGlhbGl6ZWQiCi0rCXJlbW90ZV9j bG9zZSBob3N0Ci0rCXJldHVybiAtMQotKyAgICB9Ci0rfQotK3NlbmRfZ2RiICJ5XG4iCi0rCi0r c2V0IHRlc3QgInNwYXduIGdkYiIKLStzZXQgdGVzdDIgImNyYXNoIGxpbmUgY2F1Z2h0IgotK2dk Yl9leHBlY3QgewotKyAgICAtcmUgInN0YXJ0aW5nIGRlYnVnZ2VyIHdpdGggY21kOi4qIGluIG1h aW4gLiogY3Jhc2gtaGVyZSAuKlxbXHJcblxdJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0 Ci0rCXBhc3MgJHRlc3QyCi0rICAgIH0KLSsgICAgLXJlICJzdGFydGluZyBkZWJ1Z2dlciB3aXRo IGNtZDouKlxbXHJcblxdJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICR0ZXN0Ci0rCWZhaWwgJHRl c3QyCi0rICAgIH0KLSsgICAgZW9mIHsKLSsJcGVycm9yICIoZW9mKSAkR0RCIG5ldmVyIGluaXRp YWxpemVkIgotKwlyZW1vdGVfY2xvc2UgaG9zdAotKwlyZXR1cm4gLTEKLSsgICAgfQotKyAgICB0 aW1lb3V0IHsKLSsJcGVycm9yICIodGltZW91dCkgJEdEQiBuZXZlciBpbml0aWFsaXplZCIKLSsJ cmVtb3RlX2Nsb3NlIGhvc3QKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSt9Ci0rCi0rcmVtb3RlX2Ns b3NlIGhvc3QKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZhbGdyaW5kLWF0 dGFjaC5zaCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmFsZ3JpbmQtYXR0YWNoLnNoCi1uZXcg ZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggMDAwMDAwMC4uZjAyYzZmNwotLS0tIC9kZXYvbnVsbAot KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92YWxncmluZC1hdHRhY2guc2gKLUBAIC0wLDAg KzEsMjAgQEAKLSsjISAvYmluL3NoCi0rCi0rIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0r QklORklMRT0iJDEiOyBzaGlmdAotK1ZBTEdSSU5EPSIkMSI7IHNoaWZ0Ci0rIiRWQUxHUklORCIg LS1kYi1hdHRhY2g9eWVzIC0tZGItY29tbWFuZD0iJCogJWYgJXAiICIkQklORklMRSIKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4 IDAwMDAwMDAuLmM1ZDVlZTAKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLW92ZXJmbG93LmMKLUBAIC0wLDAgKzEsMzAgQEAKLSsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA4 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rCi0raW50Ci0r bWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsgIGludCBhcnJheVthcmdjXTsKLSsK LSsgIGFycmF5WzBdID0gYXJyYXlbMF07Ci0rCi0rICBhYm9ydCAoKTsKLSsKLSsgIHJldHVybiAw OwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MjAzYTQ4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5leHAKLUBAIC0wLDAgKzEsMTA4IEBA Ci0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBXZSBjb3VsZCBjcmFzaCBpbjoKLSsj ICMwICBibG9ja19saW5rYWdlX2Z1bmN0aW9uIChibD0weDApIGF0IC4uLy4uL2dkYi9ibG9jay5j OjY5Ci0rIyAjMSAgaW4gZHdhcmZfYmxvY2tfZ2V0X2ZyYW1lX2Jhc2UgKC4uLikgYXQgLi4vLi4v Z2RiL2R3YXJmMmJsb2NrLmM6OTcKLSsjICAgOTcJICBmcmFtZWZ1bmMgPSBibG9ja19saW5rYWdl X2Z1bmN0aW9uIChnZXRfZnJhbWVfYmxvY2sgKGZyYW1lLCBOVUxMKSk7Ci0rIyAjMiAgaW4gZXhl Y3V0ZV9zdGFja19vcCAoLi4uKSBhdCAuLi8uLi9nZGIvZHdhcmYyZXhwci5jOjQ5NgotKyMgIzMg IGluIGR3YXJmX2Jsb2NrX2V4ZWNfY29yZSAoKSBhdCAuLi8uLi9nZGIvZHdhcmYyYmxvY2suYzox NTYKLSsjICM0ICBkd2FyZl9ibG9ja19leGVjICguLi4pIGF0IC4uLy4uL2dkYi9kd2FyZjJibG9j ay5jOjIwNgotKyMgIzUgIGluIHJhbmdlX3R5cGVfY291bnRfYm91bmRfaW50ZXJuYWwgKC4uLikg YXQgLi4vLi4vZ2RiL2dkYnR5cGVzLmM6MTQzMAotKyMgIzYgIGluIGNyZWF0ZV9hcnJheV90eXBl ICguLi4pIGF0IC4uLy4uL2dkYi9nZGJ0eXBlcy5jOjg0MAotKyMgLi4uCi0rIyAjMjEgaW4gcHN5 bXRhYl90b19zeW10YWIgKC4uLikgYXQgLi4vLi4vZ2RiL3N5bWZpbGUuYzoyOTIKLSsjIC4uLgot KyMgIzI5IGluIGJhY2t0cmFjZV9jb21tYW5kXzEgKCkgYXQgLi4vLi4vZ2RiL3N0YWNrLmM6MTI3 MwotKwotK3NldCB0ZXN0ZmlsZSB2bGEtb3ZlcmZsb3cKLStzZXQgc2hmaWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0tZ2RiLnNoCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwot K3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbZ2Ri X2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4 ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21w aWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCisraWYgIHsgW2dkYl9jb21waWxlICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtk ZWJ1Z31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHBy b2dyYW0iCisrICAgIHJldHVybiAtMQogK30KICsKICtzZXQgZiBbb3BlbiAifGdldGNvbmYgUEFH RVNJWkUiICJyIl0KQEAgLTIyNTEzLDU1OCArMTU5NDQsMjggQEAgaW5kZXggMDAwMDAwMC4uNWRh NzM3OAogK2dkYl90ZXN0ICJwIHRlbXAxIiAiID0gJzEnIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNl Y29uZDogcHJpbnQgdGVtcDEiCiArZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAnMicgPHJlcGVhdHMg NzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1wMiIKICtnZGJfdGVzdCAicCB0ZW1wMyIgIiA9 ICczJyA8cmVwZWF0cyA0OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAzIgotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmMKLWluZGV4IDhkYTlhZjUuLmUyZGU1M2EgMTAwNjQ0 Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHcuYwotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmMKLUBAIC0yMCw1ICsyMCwxMSBAQCBp bnQgd2F0Y2hlZTsKLSBpbnQKLSBtYWluICh2b2lkKQotIHsKLSsgIHZvbGF0aWxlIGludCBkdW1t eTsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9NYWtlZmlsZS5pbiBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL01ha2VmaWxlLmluCitpbmRleCBjOTkwYTY0Li5jOTY0ZGI5IDEwMDY0 NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL01ha2VmaWxlLmluCitAQCAtNCw3ICs0LDcgQEAgc3JjZGlyID0gQHNyY2Rp ckAKKyBFWEVDVVRBQkxFUyA9IGFtYmlndW91cyBhbm5vdGEyIGFub24tdW5pb24gY3BsdXNmdW5j cyBjdHRpYWRkIFwKKyAJZGVyaXZhdGlvbiBpbmhlcml0IGxvY2FsIG1lbWJlci1wdHIgbWV0aG9k IG1pc2MgXAorICAgICAgICAgb3ZlcmxvYWQgb3ZsZGJyZWFrIHJlZi10eXAgcmVmLXR5cDIgdGVt cGxhdGVzIHVzZXJkZWYgdmlydGZ1bmMgbmFtZXNwYWNlIFwKKy0JcmVmLXR5cGVzIHJlZi1wYXJh bXMgbWV0aG9kMiBwcjk1OTQgZ2RiMjQ5NSB2aXJ0ZnVuYzIKKysJcmVmLXR5cGVzIHJlZi1wYXJh bXMgbWV0aG9kMiBwcjk1OTQgZ2RiMjQ5NSBnZGI5NTkzIHZpcnRmdW5jMgorIAorIGFsbCBpbmZv IGluc3RhbGwtaW5mbyBkdmkgaW5zdGFsbCB1bmluc3RhbGwgaW5zdGFsbGNoZWNrIGNoZWNrOgor IAlAZWNobyAiTm90aGluZyB0byBiZSBkb25lIGZvciAkQC4uLiIKK2RpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5 My5jYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjc4M2M5NjIKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKK0BAIC0wLDAg KzEsMTgwIEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1 Z2dlci4KICsKLSsgIGR1bW15ID0gd2F0Y2hlZTsKLSsgIGR1bW15ID0gMTsKLSsgIGR1bW15ID0g MjsJLyogYnJlYWstYXQtZXhpdCAqLwotKwotICAgcmV0dXJuIDA7Ci0gfQotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1ody5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3dhdGNocG9pbnQtaHcuZXhwCi1pbmRleCBhMmJiNzMxLi5kNzRkNmM3IDEwMDY0 NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmV4cAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWh3LmV4cAotQEAgLTIxLDE5ICsyMSwx MiBAQCBpZiB7KCFbaXN0YXJnZXQgImk/ODYtKi0qIl0gJiYgIVtpc3RhcmdldCAieDg2XzY0LSot KiJdCi0gICAgIHJldHVybgotIH0KLSAKLS1zZXQgdGVzdGZpbGUgd2F0Y2hwb2ludC1odwotLXNl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLS1zZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9Ci0taWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7 c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0gewotLSAg ICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rc2V0IHRlc3Qgd2F0 Y2hwb2ludC1odwotK3NldCBzcmNmaWxlICR7dGVzdH0uYwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rl c3RpbmcgJHt0ZXN0fS5leHAgJHt0ZXN0fSAke3NyY2ZpbGV9XSB9IHsKLSAgICAgcmV0dXJuIC0x Ci0gfQotIAotLWdkYl9leGl0Ci0tZ2RiX3N0YXJ0Ci0tZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCi0tZ2RiX2xvYWQgJHtiaW5maWxlfQotLQotICMgQ3JlYXRlIHRoZSB3YXRj aHBvaW50IGJlZm9yZSB0aGUgaW5mZXJpb3IgZ2V0cyBzdGFydGVkLiAgTm93IHRoZSBuYXRpdmUg Q1BVCi0gIyB0YXJnZXQgaXMgc3RpbGwgbm90IGFjdGl2ZSBhbmQgaXRzIGB0b19jYW5fdXNlX2h3 X2JyZWFrcG9pbnQnIGlzIG5vdAotICMgaW5zdGFsbGVkLCB0aGVyZWZvcmUgb25seSBhIHNvZnR3 YXJlIHdhdGNocG9pbnQgZ2V0cyBjcmVhdGVkLgotQEAgLTQzLDEwICszNiw0MCBAQCBnZGJfdGVz dCAid2F0Y2ggd2F0Y2hlZSIgImF0Y2hwb2ludCAxOiB3YXRjaGVlIgotICMgYHJ1bnRvX21haW4n IG9yIGBydW50byBtYWluJyB3b3VsZCBkZWxldGUgdGhlIHdhdGNocG9pbnQgY3JlYXRlZCBhYm92 ZS4KLSAKLSBpZiB7IFtnZGJfc3RhcnRfY21kXSA8IDAgfSB7Ci0tICAgIHVudGVzdGVkIHN0YXJ0 Ci0rICAgIHVudGVzdGVkICR7dGVzdH0uZXhwCi0gICAgIHJldHVybiAtMQotIH0KLSBnZGJfdGVz dCAiIiAibWFpbiAuKiBhdCAuKiIgInN0YXJ0IgotIAotICMgQ2hlY2sgaXQgaXMgcmVhbGx5IGEg YGh3Jy13YXRjaHBvaW50LgotIGdkYl90ZXN0ICJpbmZvIHdhdGNocG9pbnRzIiAiMSAqaHcgd2F0 Y2hwb2ludCAuKiB3YXRjaGVlIgotKwotKyMgQmVmb3JlIHRoZSBpbmZlcmlvciBnZXRzIHN0YXJ0 ZWQgd2Ugd291bGQgZ2V0OgotKyMgCVRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgdHlwZSBv ZiBoYXJkd2FyZSB3YXRjaHBvaW50LgotK2dkYl90ZXN0ICJkZWxldGUgMSIKLStnZGJfdGVzdCAi cndhdGNoIHdhdGNoZWUiCi0rCi0rc2V0IGJyZWFrbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAi YnJlYWstYXQtZXhpdCJdCi0rZ2RiX2JyZWFrcG9pbnQgJGJyZWFrbGluZQotKwotK2dkYl90ZXN0 ICJjb250aW51ZSIgIkNvbnRpbnVpbmcuXHJcbkhhcmR3YXJlIHJlYWQgd2F0Y2hwb2ludCAzOiB3 YXRjaGVlXHJcblxyXG5WYWx1ZSA9IDBcclxuLioiCi0rCi0rIyBIZXJlIHNob3VsZCBiZSBubyBy ZXBlYXRlZCBub3RpZmljYXRpb24gb2YgdGhlIHJlYWQgd2F0Y2hwb2ludC4KLStnZGJfdGVzdCAi Y29udGludWUiIFwKLSsJICJDb250aW51aW5nXFwuXFsgXHJcblxdK0JyZWFrcG9pbnQgXFswLTlc XSssIC4qYnJlYWstYXQtZXhpdC4qIiBcCi0rCSAiY29udGludWUgdG8gYnJlYWstYXQtZXhpdCBh ZnRlciByd2F0Y2giCi0rCi0rY2xlYW5fcmVzdGFydCAke3Rlc3R9Ci0rCi0raWYgIVtydW50b19t YWluXSB7Ci0rICAgIHVudGVzdGVkICR7dGVzdH0uZXhwCi0rICAgIHJldHVybiAtMQotK30KLSsK LStnZGJfdGVzdCAiaGJyZWFrICR7c3JjZmlsZX06JHticmVha2xpbmV9IiBcCi0rCSAiSGFyZHdh cmUgYXNzaXN0ZWQgYnJlYWtwb2ludCAyIGF0IDB4XFswLTlhLWZcXSs6IGZpbGUgLioke3NyY2Zp bGV9LCBsaW5lICR7YnJlYWtsaW5lfVxcLiIgXAotKwkgImhicmVhayIKLSsKLStnZGJfdGVzdCAi Y29udGludWUiIFwKLSsJICJDb250aW51aW5nXFwuXFsgXHJcblxdK0JyZWFrcG9pbnQgXFswLTlc XSssIC4qYnJlYWstYXQtZXhpdC4qIiBcCi0rCSAiY29udGludWUgdG8gYnJlYWstYXQtZXhpdCBh ZnRlciBoYnJlYWsiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvTWFrZWZpbGUu aW4gYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9NYWtlZmlsZS5pbgotaW5kZXggMGEwODdjNy4uYjQ4 ODBmMiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL01ha2VmaWxlLmluCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9NYWtlZmlsZS5pbgotQEAgLTQsNyArNCw3IEBAIHNyY2Rp ciA9IEBzcmNkaXJACi0gRVhFQ1VUQUJMRVMgPSBhbWJpZ3VvdXMgYW5ub3RhMiBhbm9uLXVuaW9u IGNwbHVzZnVuY3MgY3R0aWFkZCBcCi0gCWRlcml2YXRpb24gaW5oZXJpdCBsb2NhbCBtZW1iZXIt cHRyIG1ldGhvZCBtaXNjIFwKLSAgICAgICAgIG92ZXJsb2FkIG92bGRicmVhayByZWYtdHlwIHJl Zi10eXAyIHRlbXBsYXRlcyB1c2VyZGVmIHZpcnRmdW5jIG5hbWVzcGFjZSBcCi0tCXJlZi10eXBl cyByZWYtcGFyYW1zIG1ldGhvZDIgcHI5NTk0IGdkYjI0OTUKLSsJcmVmLXR5cGVzIHJlZi1wYXJh bXMgbWV0aG9kMiBwcjk1OTQgZ2RiMjQ5NSBnZGI5NTkzCi0gCi0gYWxsIGluZm8gaW5zdGFsbC1p bmZvIGR2aSBpbnN0YWxsIHVuaW5zdGFsbCBpbnN0YWxsY2hlY2sgY2hlY2s6Ci0gCUBlY2hvICJO b3RoaW5nIHRvIGJlIGRvbmUgZm9yICRALi4uIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2NwLXJlbG9jYXRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NwLXJlbG9jYXRl LmV4cAotaW5kZXggNDA5NWNjZi4uMDNjMDdkNSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLmNwL2NwLXJlbG9jYXRlLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3AtcmVs b2NhdGUuZXhwCi1AQCAtMzAsNyArMzAsNyBAQCBwcm9jIGdldF9mdW5jX2FkZHJlc3MgeyBmdW5j IH0gewotICAgICBnbG9iYWwgZ2RiX3Byb21wdCBoZXgKLSAKLSAgICAgc2V0IHJmdW5jIFtzdHJp bmdfdG9fcmVnZXhwICRmdW5jXQotLSAgICBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgJyR7ZnVu Y30nIiAiZ2V0IGFkZHJlc3Mgb2YgJHtmdW5jfSIgewotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAi cHJpbnQgJHtmdW5jfSIgImdldCBhZGRyZXNzIG9mICR7ZnVuY30iIHsKLSAJLXJlICJcXFwkXFsw LTlcXSsgPSBcXHsuKlxcfSAoMHwoJGhleCkgPCR7cmZ1bmN9PilcW1xyXG5cXSske2dkYl9wcm9t cHR9ICQiIHsKLSAJICAgICMgJDEgPSB7aW50ICgpfSAweDI0IDxmdW5jdGlvbl9iYXI+Ci0gCSAg ICAjIEJ1dCBpZiB0aGUgZnVuY3Rpb24gaXMgYXQgemVybywgdGhlIG5hbWUgbWF5IGJlIG9taXR0 ZWQuCi1AQCAtMTMwLDcgKzEzMCw3IEBAIGdkYl90ZXN0ICJhZGQtc3ltYm9sLWZpbGUgJHtiaW5m aWxlfSAwIC1zICR7ZnVuYzFfc2VjfSAweDEwMDAwIC1zICR7ZnVuYzJfc2VjfSAwCi0gCSJ5Igot IAotICMgTWFrZSBzdXJlIHRoZSBmdW5jdGlvbiBhZGRyZXNzZXMgd2VyZSB1cGRhdGVkLgotLWdk Yl90ZXN0ICJicmVhayAqJyRmdW5jMV9uYW1lJyIgXAotK2dkYl90ZXN0ICJicmVhayAqJGZ1bmMx X25hbWUiIFwKLSAgICAgIkJyZWFrcG9pbnQgJGRlY2ltYWwgYXQgMHgxLi4uLjogZmlsZSAuKiIK LS1nZGJfdGVzdCAiYnJlYWsgKickZnVuYzJfbmFtZSciIFwKLStnZGJfdGVzdCAiYnJlYWsgKiRm dW5jMl9uYW1lIiBcCi0gICAgICJCcmVha3BvaW50ICRkZWNpbWFsIGF0IDB4Mi4uLi46IGZpbGUg LioiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5jYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuY2MKLWluZGV4IDdmMDMzZDYuLjExZGJhMDYg MTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmNjCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9jcGx1c2Z1bmNzLmNjCi1AQCAtNDYsNyArNDYsOSBAQCBwdWJs aWM6Ci0gICB2b2lkICBvcGVyYXRvciBbXSAgICAgKGZvbyYpOwotICAgdm9pZCAgb3BlcmF0b3Ig KCkgICAgIChmb28mKTsKLSAgIHZvaWQqIG9wZXJhdG9yIG5ldyAgICAoc2l6ZV90KSB0aHJvdyAo KTsKLSsgIHZvaWQqIG9wZXJhdG9yIG5ld1tdICAoc2l6ZV90KSB0aHJvdyAoKTsKLSAgIHZvaWQg IG9wZXJhdG9yIGRlbGV0ZSAodm9pZCAqKTsKLSsgIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZVtdICh2 b2lkICopOwotICAgLyoqLyAgb3BlcmF0b3IgaW50ICAgICgpOwotICAgLyoqLyAgb3BlcmF0b3Ig Y2hhciogICgpOwotIAotQEAgLTExNSw3ICsxMTcsOSBAQCB2b2lkICBmb286Om9wZXJhdG9yIC0+ KiAgICAoZm9vJiBhZm9vKSB7IGFmb28uaWZvbyA9IDA7IH0KLSB2b2lkICBmb286Om9wZXJhdG9y IFtdICAgICAoZm9vJiBhZm9vKSB7IGFmb28uaWZvbyA9IDA7IH0KLSB2b2lkICBmb286Om9wZXJh dG9yICgpICAgICAoZm9vJiBhZm9vKSB7IGFmb28uaWZvbyA9IDA7IH0KLSB2b2lkKiBmb286Om9w ZXJhdG9yIG5ldyAgICAoc2l6ZV90IGl2YWwpIHRocm93ICgpIHsgaXZhbCA9IDA7IHJldHVybiAw OyB9Ci0rdm9pZCogZm9vOjpvcGVyYXRvciBuZXdbXSAgICAoc2l6ZV90IGl2YWwpIHRocm93ICgp IHsgaXZhbCA9IDA7IHJldHVybiAwOyB9Ci0gdm9pZCAgZm9vOjpvcGVyYXRvciBkZWxldGUgKHZv aWQgKnB0cikgeyBwdHIgPSAwOyB9Ci0rdm9pZCAgZm9vOjpvcGVyYXRvciBkZWxldGVbXSAodm9p ZCAqcHRyKSB7IHB0ciA9IDA7IH0KLSAvKiovICBmb286Om9wZXJhdG9yIGludCAgICAoKSB7IHJl dHVybiAwOyB9Ci0gLyoqLyAgZm9vOjpvcGVyYXRvciBjaGFyKiAgKCkgeyByZXR1cm4gMDsgfQot IAotQEAgLTE5MSw2ICsxOTUsMTIgQEAgY2hhciAqCWRtX3R5cGVfY2hhcl9zdGFyIChjaGFyICog cCkJCXsgcmV0dXJuIHA7IH0KLSBpbnQJZG1fdHlwZV9mb29fcmVmIChmb28gJiBmb28pCQl7IHJl dHVybiBmb28uaWZvbzsgfQotIGludCAqCWRtX3R5cGVfaW50X3N0YXIgKGludCAqIHApCQl7IHJl dHVybiBwOyB9Ci0gbG9uZyAqCWRtX3R5cGVfbG9uZ19zdGFyIChsb25nICogcCkJCXsgcmV0dXJu IHA7IH0KLStpbnQJZG1fdHlwZV9zaG9ydCAoc2hvcnQgaSkJCQl7IHJldHVybiBpOyB9Ci0raW50 CWRtX3R5cGVfbG9uZyAobG9uZyBpKQkJCXsgcmV0dXJuIGk7IH0KLSBpbnQJZG1fdHlwZV91bnNp Z25lZF9pbnQgKHVuc2lnbmVkIGludCBpKQl7IHJldHVybiBpOyB9Ci0raW50CWRtX3R5cGVfdW5z aWduZWRfc2hvcnQgKHVuc2lnbmVkIHNob3J0IGkpCXsgcmV0dXJuIGk7IH0KLStpbnQJZG1fdHlw ZV91bnNpZ25lZF9sb25nICh1bnNpZ25lZCBsb25nIGkpCXsgcmV0dXJuIGk7IH0KLSBpbnQJZG1f dHlwZV92b2lkICh2b2lkKQkJCXsgcmV0dXJuIDA7IH0KLSB2b2lkICoJZG1fdHlwZV92b2lkX3N0 YXIgKHZvaWQgKiBwKQkJeyByZXR1cm4gcDsgfQotK3R5cGVkZWYgaW50IG15aW50OwotK2ludAlk bV90eXBlX3R5cGVkZWYgKG15aW50IGkpCQl7IHJldHVybiBpOyB9Ci1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvY3BsdXNmdW5jcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9j cGx1c2Z1bmNzLmV4cAotaW5kZXggNWUwODc2OC4uMmVjNTBjYSAxMDA2NDQKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL2NwbHVzZnVuY3MuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9jcGx1c2Z1bmNzLmV4cAotQEAgLTYzLDEyICs2MywyOCBAQCBzZXQgZG1fdHlwZV9mb29fcmVm IAkJImZvbyYiCi0gc2V0IGRtX3R5cGVfaW50X3N0YXIJCSJpbnQqIgotIHNldCBkbV90eXBlX2xv bmdfc3RhcgkJImxvbmcqIgotIHNldCBkbV90eXBlX3Vuc2lnbmVkX2ludAkidW5zaWduZWQiCi0t c2V0IGRtX3R5cGVfdm9pZAkJIiIKLStzZXQgZG1fdHlwZV92b2lkCQkidm9pZCIKLSBzZXQgZG1f dHlwZV92b2lkX3N0YXIJCSJ2b2lkKiIKLSAKLSsjIFNvbWUgb3RoZXIgdmFnYXJpZXMgb2YgR0RC J3MgdHlwZSBwcmludGluZyBtYWNoaW5lcnkuICBUaGUgaW50ZWdlciB0eXBlcwotKyMgbWF5IGhh dmUgdW5zaWduZWQgYmVmb3JlIG9yIGFmdGVyIHRoZWlyIGxlbmd0aCwgYW5kIG1heSBoYXZlICJp bnQiCi0rIyBhcHBlbmRlZC4gIFRoZSBjaGFyKiBjb252ZXJzaW9uIG9wZXJhdG9yIG1heSBoYXZl IG5hbWUgImNoYXIqIiBldmVuIGlmCi0rIyB0aGUgdHlwZSBpcyAiY2hhciAqIiwgYmVjYXVzZSB0 aGUgbmFtZSBjb21lcyBmcm9tIHRoZSBkZWJ1ZyBpbmZvcm1hdGlvbgotKyMgYW5kIHRoZSB0eXBl IGZyb20gR0RCLiAgRnVuY3Rpb24gdHlwZXMgbWF5IG5vdCBzZWUgdGhyb3VnaCB0eXBlZGVmcy4K LSsKLStzZXQgZG1fdHlwZV9zaG9ydAkJInNob3J0IgotK3NldCBkbV90eXBlX2xvbmcJCSJsb25n IgotK3NldCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0CSJ1bnNpZ25lZCBzaG9ydCIKLStzZXQgZG1f dHlwZV91bnNpZ25lZF9sb25nCSJ1bnNpZ25lZCBsb25nIgotK3NldCBkbV9vcGVyYXRvcl9jaGFy X3N0YXIJImNoYXIqIgotK3NldCBkbV9vcGVyYXRvcl9jaGFyX3N0YXJfcXVvdGVkCSJjaGFyXFwq IgotK3NldCBkbV90eXBlX3R5cGVkZWYJCTAKLSsKLSBwcm9jIHByb2JlX2RlbWFuZ2xlciB7IH0g ewotICAgICBnbG9iYWwgZ2RiX3Byb21wdAotICAgICBnbG9iYWwgZG1fb3BlcmF0b3JfY29tbWEK LSsgICAgZ2xvYmFsIGRtX29wZXJhdG9yX2NoYXJfc3RhcgotKyAgICBnbG9iYWwgZG1fb3BlcmF0 b3JfY2hhcl9zdGFyX3F1b3RlZAotICAgICBnbG9iYWwgZG1fdHlwZV9jaGFyX3N0YXIKLSAgICAg Z2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyX3F1b3RlZAotICAgICBnbG9iYWwgZG1fdHlwZV9mb29f cmVmCi1AQCAtNzcsOCArOTMsMTMgQEAgcHJvYyBwcm9iZV9kZW1hbmdsZXIgeyB9IHsKLSAgICAg Z2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfaW50Ci0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWQKLSAg ICAgZ2xvYmFsIGRtX3R5cGVfdm9pZF9zdGFyCi0rICAgIGdsb2JhbCBkbV90eXBlX3Nob3J0Ci0r ICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0Ci0rICAgIGdsb2JhbCBkbV90eXBlX2xv bmcKLSsgICAgZ2xvYmFsIGRtX3R5cGVfdW5zaWduZWRfbG9uZwotKyAgICBnbG9iYWwgZG1fdHlw ZV90eXBlZGVmCi0gCi0tICAgIHNlbmRfZ2RiICJwcmludCAmJ2Zvbzo6b3BlcmF0b3IsKGZvbyYp J1xuIgotKyAgICBzZW5kX2dkYiAicHJpbnQgJmZvbzo6b3BlcmF0b3IsKGZvbyYpXG4iCi0gICAg IGdkYl9leHBlY3QgewotIAktcmUgIi4qZm9vOjpvcGVyYXRvciwgXFwoLipmb28uKiYuKlxcKS4q XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJICAgICMgdjIgZGVtYW5nbGVyCi1AQCAtOTcsNiArMTE4 LDI2IEBAIHByb2MgcHJvYmVfZGVtYW5nbGVyIHsgfSB7Ci0gCX0KLSAgICAgfQotIAotKyAgICBz ZW5kX2dkYiAicHJpbnQgJmZvbzo6b3BlcmF0b3IgY2hhciooJGRtX3R5cGVfdm9pZClcbiIKLSsg ICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiLipmb286Om9wZXJhdG9yIGNoYXIgXFwqXFwodm9pZFxc KS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgdjIgZGVtYW5nbGVyIG9yIEdEQiB0eXBl IHByaW50ZXIKLSsJICAgIHNldCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIgImNoYXIgKiIKLSsJICAg IHNldCBkbV9vcGVyYXRvcl9jaGFyX3N0YXJfcXVvdGVkICJjaGFyIFxcKiIKLSsJICAgIHBhc3Mg ImRldGVjdCBkbV9vcGVyYXRvcl9jaGFyX3N0YXIiCi0rCX0KLSsJLXJlICIuKmZvbzo6b3BlcmF0 b3IgY2hhclxcKlxcKFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgdjMgZGVtYW5n bGVyCi0rCSAgICBwYXNzICJkZXRlY3QgZG1fb3BlcmF0b3JfY2hhcl9zdGFyIgotKwl9Ci0rCS1y ZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fb3BlcmF0b3JfY2hh cl9zdGFyIgotKwl9Ci0rCXRpbWVvdXQgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX29wZXJhdG9y X2NoYXJfc3RhciIKLSsJfQotKyAgICB9Ci0rCi0gICAgIHNlbmRfZ2RiICJwcmludCAmJ2RtX3R5 cGVfY2hhcl9zdGFyJ1xuIgotICAgICBnZGJfZXhwZWN0IHsKLSAJLXJlICIuKmRtX3R5cGVfY2hh cl9zdGFyXFwoY2hhciBcXCpcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci1AQCAtMTY2LDYgKzIw NywxMSBAQCBwcm9jIHByb2JlX2RlbWFuZ2xlciB7IH0gewotIAkgICAgIyB2MyBkZW1hbmdsZXIK LSAJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX2xvbmdfc3RhciIKLSAJfQotKwktcmUgIi4qZG1f dHlwZV9sb25nX3N0YXJcXChsb25nIGludCBcXCpcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0r CSAgICAjIEdDQyB2MyBhbmQgR0RCJ3MgdHlwZSBwcmludGVyCi0rCSAgICBzZXQgZG1fdHlwZV9s b25nX3N0YXIgImxvbmcgaW50ICoiCi0rCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV9sb25nX3N0 YXIiCi0rCX0KLSAJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSAJICAgIGZhaWwgImRldGVjdCBk bV90eXBlX2xvbmdfc3RhciIKLSAJfQotQEAgLTIzMCw2ICsyNzYsMTAxIEBAIHByb2MgcHJvYmVf ZGVtYW5nbGVyIHsgfSB7Ci0gCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV92b2lkX3N0YXIgKHRp bWVvdXQpIgotIAl9Ci0gICAgIH0KLSsKLSsgICAgc2VuZF9nZGIgInByaW50ICYnZG1fdHlwZV9z aG9ydCdcbiIKLSsgICAgZ2RiX2V4cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBlX3Nob3J0XFwoc2hv cnRcXCkuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIHYyIGFuZCB2MyBkZW1hbmdsZXJz Ci0rCSAgICBwYXNzICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKLSsJfQotKwktcmUgIi4qZG1fdHlw ZV9zaG9ydFxcKHNob3J0IGludFxcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgR0RC IHR5cGUgcHJpbnRlcgotKwkgICAgc2V0IGRtX3R5cGVfc2hvcnQgInNob3J0IGludCIKLSsJICAg IHBhc3MgImRldGVjdCBkbV90eXBlX3Nob3J0IgotKwl9Ci0rCS1yZSAiLiokZ2RiX3Byb21wdCAk IiB7Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV9zaG9ydCIKLSsJfQotKwl0aW1lb3V0IHsK LSsJICAgIGZhaWwgImRldGVjdCBkbV90eXBlX3Nob3J0ICh0aW1lb3V0KSIKLSsJfQotKyAgICB9 Ci0rCi0rICAgIHNlbmRfZ2RiICJwcmludCAmJ2RtX3R5cGVfdW5zaWduZWRfc2hvcnQnXG4iCi0r ICAgIGdkYl9leHBlY3QgewotKwktcmUgIi4qZG1fdHlwZV91bnNpZ25lZF9zaG9ydFxcKHVuc2ln bmVkIHNob3J0XFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyB2MiBhbmQgdjMgZGVt YW5nbGVycwotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQiCi0rCX0K LSsJLXJlICIuKmRtX3R5cGVfdW5zaWduZWRfc2hvcnRcXChzaG9ydCB1bnNpZ25lZCBpbnRcXCku KlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSAgICAjIEdEQiB0eXBlIHByaW50ZXIKLSsJICAgIHNl dCBkbV90eXBlX3Vuc2lnbmVkX3Nob3J0ICJzaG9ydCB1bnNpZ25lZCBpbnQiCi0rCSAgICBwYXNz ICJkZXRlY3QgZG1fdHlwZV91bnNpZ25lZF9zaG9ydCIKLSsJfQotKwktcmUgIi4qJGdkYl9wcm9t cHQgJCIgewotKwkgICAgZmFpbCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfc2hvcnQiCi0rCX0K LSsJdGltZW91dCB7Ci0rCSAgICBmYWlsICJkZXRlY3QgZG1fdHlwZV91bnNpZ25lZF9zaG9ydCAo dGltZW91dCkiCi0rCX0KLSsgICAgfQotKwotKyAgICBzZW5kX2dkYiAicHJpbnQgJidkbV90eXBl X2xvbmcnXG4iCi0rICAgIGdkYl9leHBlY3QgewotKwktcmUgIi4qZG1fdHlwZV9sb25nXFwobG9u Z1xcKS4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgICMgdjIgYW5kIHYzIGRlbWFuZ2xlcnMK LSsJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX2xvbmciCi0rCX0KLSsJLXJlICIuKmRtX3R5cGVf bG9uZ1xcKGxvbmcgaW50XFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyBHREIgdHlw ZSBwcmludGVyCi0rCSAgICBzZXQgZG1fdHlwZV9sb25nICJsb25nIGludCIKLSsJICAgIHBhc3Mg ImRldGVjdCBkbV90eXBlX2xvbmciCi0rCX0KLSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSsJ ICAgIGZhaWwgImRldGVjdCBkbV90eXBlX2xvbmciCi0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICBm YWlsICJkZXRlY3QgZG1fdHlwZV9sb25nICh0aW1lb3V0KSIKLSsJfQotKyAgICB9Ci0rCi0rICAg IHNlbmRfZ2RiICJwcmludCAmJ2RtX3R5cGVfdW5zaWduZWRfbG9uZydcbiIKLSsgICAgZ2RiX2V4 cGVjdCB7Ci0rCS1yZSAiLipkbV90eXBlX3Vuc2lnbmVkX2xvbmdcXCh1bnNpZ25lZCBsb25nXFwp LipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyB2MiBhbmQgdjMgZGVtYW5nbGVycwotKwkg ICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKLSsJfQotKwktcmUgIi4qZG1f dHlwZV91bnNpZ25lZF9sb25nXFwobG9uZyB1bnNpZ25lZCBpbnRcXCkuKlxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCSAgICAjIEdEQiB0eXBlIHByaW50ZXIKLSsJICAgIHNldCBkbV90eXBlX3Vuc2ln bmVkX2xvbmcgImxvbmcgdW5zaWduZWQgaW50IgotKwkgICAgcGFzcyAiZGV0ZWN0IGRtX3R5cGVf dW5zaWduZWRfbG9uZyIKLSsJfQotKwktcmUgIi4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgZmFp bCAiZGV0ZWN0IGRtX3R5cGVfdW5zaWduZWRfbG9uZyIKLSsJfQotKwl0aW1lb3V0IHsKLSsJICAg IGZhaWwgImRldGVjdCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcgKHRpbWVvdXQpIgotKwl9Ci0rICAg IH0KLSsKLSsgICAgc2VuZF9nZGIgInByaW50ICYnZG1fdHlwZV90eXBlZGVmJ1xuIgotKyAgICBn ZGJfZXhwZWN0IHsKLSsJLXJlICIuKmRtX3R5cGVfdHlwZWRlZlxcKGludFxcKS4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJICAgICMgdjIgYW5kIHYzIGRlbWFuZ2xlcnMKLSsJICAgIHBhc3MgImRl dGVjdCBkbV90eXBlX3R5cGVkZWYiCi0rCX0KLSsJLXJlICIuKmRtX3R5cGVfdHlwZWRlZlxcKG15 aW50XFwpLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyBHREIgdHlwZSBwcmludGVyCi0r CSAgICBzZXQgZG1fdHlwZV90eXBlZGVmIDEKLSsJICAgIHBhc3MgImRldGVjdCBkbV90eXBlX3R5 cGVkZWYiCi0rCX0KLSsJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIGZhaWwgImRldGVj dCBkbV90eXBlX3R5cGVkZWYiCi0rCX0KLSsJdGltZW91dCB7Ci0rCSAgICBmYWlsICJkZXRlY3Qg ZG1fdHlwZV90eXBlZGVmICh0aW1lb3V0KSIKLSsJfQotKyAgICB9Ci0gfQotIAotICMKLUBAIC0y NDEsNiArMzgyLDcgQEAgcHJvYyBpbmZvX2Z1bmNfcmVnZXhwIHsgbmFtZSBkZW1hbmdsZWQgfSB7 Ci0gICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0gCi0gICAgIHNlbmRfZ2RiICJpbmZvIGZ1bmN0aW9u ICRuYW1lXG4iCi0rICAgIHNldCBkZW1hbmdsZWQgW3JlZ3N1YiB7XFxcKHZvaWRcXFwpfSAkZGVt YW5nbGVkIHtcKFwpfV0KLSAgICAgZ2RiX2V4cGVjdCB7Ci0gCS1yZSAiLipGaWxlIC4qOlxyXG4o Y2xhc3MgfCkkZGVtYW5nbGVkXHJcbi4qJGdkYl9wcm9tcHQgJCIgewotIAkgICAgcGFzcyAiaW5m byBmdW5jdGlvbiBmb3IgXCIkbmFtZVwiIgotQEAgLTI3NywxNiArNDE5LDE2IEBAIHByb2MgcHJp bnRfYWRkcl8yIHsgbmFtZSBnb29kIH0gewotIAotICAgICBzZXQgZ29vZF9wYXR0ZXJuIFtzdHJp bmdfdG9fcmVnZXhwICRnb29kXQotIAotLSAgICBzZW5kX2dkYiAicHJpbnQgJickbmFtZSdcbiIK LSsgICAgc2VuZF9nZGIgInByaW50ICYkbmFtZVxuIgotICAgICBnZGJfZXhwZWN0IHsKLSAJLXJl ICIuKiA9IC4qICRoZXggPCRnb29kX3BhdHRlcm4+XHJcbiRnZGJfcHJvbXB0ICQiIHsKLS0JICAg IHBhc3MgInByaW50ICYnJG5hbWUnIgotKwkgICAgcGFzcyAicHJpbnQgJiRuYW1lIgotIAl9Ci0g CS1yZSAiLiokZ2RiX3Byb21wdCAkIiB7Ci0tCSAgICBmYWlsICJwcmludCAmJyRuYW1lJyIKLSsJ ICAgIGZhaWwgInByaW50ICYkbmFtZSIKLSAJfQotIAl0aW1lb3V0IHsKLS0JICAgIGZhaWwgInBy aW50ICYnJG5hbWUnICh0aW1lb3V0KSIKLSsJICAgIGZhaWwgInByaW50ICYkbmFtZSAodGltZW91 dCkiCi0gCX0KLSAgICAgfQotIH0KLUBAIC0zMjcsNyArNDY5LDEyIEBAIHByb2MgcHJpbnRfYWRk cl8yX2tmYWlsIHsgbmFtZSBnb29kIGJhZCBidWdpZCB9IHsKLSAjCi0gCi0gcHJvYyBwcmludF9h ZGRyIHsgbmFtZSB9IHsKLS0gICAgcHJpbnRfYWRkcl8yICIkbmFtZSIgIiRuYW1lIgotKyAgICBz ZXQgZXhwZWN0ZWQgW3JlZ3N1YiB7XCh2b2lkXCl9ICRuYW1lIHsoKX1dCi0rICAgIGlmIHtbc3Ry aW5nIGZpcnN0ICI6OiIgJG5hbWVdID09IC0xfSB7Ci0rCSMgQyBmdW5jdGlvbiAtLSBtdXN0IGJl IHF1dG9lZAotKwlzZXQgbmFtZSAiJyRuYW1lJyIKLSsgICAgfQotKyAgICBwcmludF9hZGRyXzIg IiRuYW1lIiAkZXhwZWN0ZWQKLSB9Ci0gCi0gIwotQEAgLTM0NSw4ICs0OTIsOSBAQCBwcm9jIHBy aW50X2FkZHIgeyBuYW1lIH0gewotIAotIHByb2MgdGVzdF9sb29rdXBfb3BlcmF0b3JfZnVuY3Rp b25zIHt9IHsKLSAgICAgZ2xvYmFsIGRtX29wZXJhdG9yX2NvbW1hCi0rICAgIGdsb2JhbCBkbV9v cGVyYXRvcl9jaGFyX3N0YXIKLSAgICAgZ2xvYmFsIGRtX3R5cGVfY2hhcl9zdGFyCi0tICAgIGds b2JhbCBkbV90eXBlX2NoYXJfc3Rhcl9xdW90ZWQKLSsgICAgZ2xvYmFsIGRtX29wZXJhdG9yX2No YXJfc3Rhcl9xdW90ZWQKLSAgICAgZ2xvYmFsIGRtX3R5cGVfZm9vX3JlZgotICAgICBnbG9iYWwg ZG1fdHlwZV92b2lkCi0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgotQEAgLTQwNCw4ICs1 NTIsOCBAQCBwcm9jIHRlc3RfbG9va3VwX29wZXJhdG9yX2Z1bmN0aW9ucyB7fSB7Ci0gCi0gICAg IGluZm9fZnVuYyAib3BlcmF0b3IgaW50KCIJImludCBmb286Om9wZXJhdG9yIGludCgkZG1fdHlw ZV92b2lkKTsiCi0gICAgIGluZm9fZnVuYyAib3BlcmF0b3IoKSgiCSJ2b2lkIGZvbzo6b3BlcmF0 b3IoKSgkZG1fdHlwZV9mb29fcmVmKTsiCi0tICAgIGluZm9fZnVuYyAib3BlcmF0b3IgJGRtX3R5 cGVfY2hhcl9zdGFyX3F1b3RlZFwoIiBcCi0tCQkJCSJjaGFyICpmb286Om9wZXJhdG9yICRkbV90 eXBlX2NoYXJfc3RhclwoJGRtX3R5cGVfdm9pZCk7IgotKyAgICBpbmZvX2Z1bmMgIm9wZXJhdG9y ICRkbV9vcGVyYXRvcl9jaGFyX3N0YXJfcXVvdGVkXCgiIFwKLSsJCQkJImNoYXIgKmZvbzo6b3Bl cmF0b3IgJGRtX29wZXJhdG9yX2NoYXJfc3RhclwoJGRtX3R5cGVfdm9pZCk7IgotIAotIH0KLSAK LUBAIC00MjAsNiArNTY4LDcgQEAgcHJvYyB0ZXN0X3BhZGRyX29wZXJhdG9yX2Z1bmN0aW9ucyB7 fSB7Ci0gICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2ludAotICAgICBnbG9iYWwgZG1fdHlw ZV92b2lkCi0gICAgIGdsb2JhbCBkbV90eXBlX3ZvaWRfc3RhcgotKyAgICBnbG9iYWwgZG1fb3Bl cmF0b3JfY2hhcl9zdGFyCi0gCi0gICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IqKCRkbV90 eXBlX2Zvb19yZWYpIgotICAgICBwcmludF9hZGRyICJmb286Om9wZXJhdG9yJSgkZG1fdHlwZV9m b29fcmVmKSIKLUBAIC00NjAsMTcgKzYwOSwyMCBAQCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3Jf ZnVuY3Rpb25zIHt9IHsKLSAgICAgcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvclxbXF0oJGRtX3R5 cGVfZm9vX3JlZikiCi0gICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IoKSgkZG1fdHlwZV9m b29fcmVmKSIKLSAKLS0gICAgZ2RiX3Rlc3QgInByaW50ICYnZm9vOjpvcGVyYXRvciBuZXcnIiBc Ci0rICAgIGdkYl90ZXN0ICJwcmludCAmZm9vOjpvcGVyYXRvciBuZXciIFwKLSAJIiA9IC4qICRo ZXggPGZvbzo6b3BlcmF0b3IgbmV3XFwoLipcXCkofCBzdGF0aWMpPiIKLSsgICAgZ2RiX3Rlc3Qg InByaW50ICZmb286Om9wZXJhdG9yIG5ld1xbXF0iIFwKLSsJIiA9IC4qICRoZXggPGZvbzo6b3Bl cmF0b3IgbmV3XFxcW1xcXF1cXCguKlxcKSh8IHN0YXRpYyk+IiAgICAKLSAgICAgaWYgeyAhJGhw X2FDQ19jb21waWxlciB9IHsKLSAJcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciBkZWxldGUoJGRt X3R5cGVfdm9pZF9zdGFyKSIKLSsJcHJpbnRfYWRkciAiZm9vOjpvcGVyYXRvciBkZWxldGVbXSgk ZG1fdHlwZV92b2lkX3N0YXIpIgotICAgICB9IGVsc2UgewotIAlnZGJfdGVzdCAicHJpbnQgJidm b286Om9wZXJhdG9yIGRlbGV0ZSgkZG1fdHlwZV92b2lkX3N0YXIpIHN0YXRpYyciIFwKLSAJICAg ICIgPSAuKigweFxbMC05YS1mXF0rfCkgPGZvbzo6b3BlcmF0b3IgZGVsZXRlLio+IgotICAgICB9 Ci0gCi0gICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IgaW50KCRkbV90eXBlX3ZvaWQpIgot LSAgICBwcmludF9hZGRyICJmb286Om9wZXJhdG9yICRkbV90eXBlX2NoYXJfc3RhclwoJGRtX3R5 cGVfdm9pZCkiCi0rICAgIHByaW50X2FkZHIgImZvbzo6b3BlcmF0b3IgJGRtX29wZXJhdG9yX2No YXJfc3RhclwoJGRtX3R5cGVfdm9pZCkiCi0gfQotIAotICMKLUBAIC00ODAsMTcgKzYzMiwyMSBA QCBwcm9jIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25zIHt9IHsKLSBwcm9jIHRlc3RfcGFk ZHJfb3ZlcmxvYWRlZF9mdW5jdGlvbnMge30gewotICAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25l ZF9pbnQKLSAgICAgZ2xvYmFsIGRtX3R5cGVfdm9pZAotKyAgICBnbG9iYWwgZG1fdHlwZV9zaG9y dAotKyAgICBnbG9iYWwgZG1fdHlwZV91bnNpZ25lZF9zaG9ydAotKyAgICBnbG9iYWwgZG1fdHlw ZV9sb25nCi0rICAgIGdsb2JhbCBkbV90eXBlX3Vuc2lnbmVkX2xvbmcKLSAKLSAgICAgcHJpbnRf YWRkciAib3ZlcmxvYWQxYXJnKCRkbV90eXBlX3ZvaWQpIgotICAgICBwcmludF9hZGRyICJvdmVy bG9hZDFhcmcoY2hhcikiCi0gICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyhzaWduZWQgY2hh cikiCi0gICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyh1bnNpZ25lZCBjaGFyKSIKLS0gICAg cHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKHNob3J0KSIKLS0gICAgcHJpbnRfYWRkciAib3Zlcmxv YWQxYXJnKHVuc2lnbmVkIHNob3J0KSIKLSsgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKCRk bV90eXBlX3Nob3J0KSIKLSsgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKCRkbV90eXBlX3Vu c2lnbmVkX3Nob3J0KSIKLSAgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKGludCkiCi0gICAg IHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZygkZG1fdHlwZV91bnNpZ25lZF9pbnQpIgotLSAgICBw cmludF9hZGRyICJvdmVybG9hZDFhcmcobG9uZykiCi0tICAgIHByaW50X2FkZHIgIm92ZXJsb2Fk MWFyZyh1bnNpZ25lZCBsb25nKSIKLSsgICAgcHJpbnRfYWRkciAib3ZlcmxvYWQxYXJnKCRkbV90 eXBlX2xvbmcpIgotKyAgICBwcmludF9hZGRyICJvdmVybG9hZDFhcmcoJGRtX3R5cGVfdW5zaWdu ZWRfbG9uZykiCi0gICAgIHByaW50X2FkZHIgIm92ZXJsb2FkMWFyZyhmbG9hdCkiCi0gICAgIHBy aW50X2FkZHIgIm92ZXJsb2FkMWFyZyhkb3VibGUpIgotIAotQEAgLTUxMywxNyArNjY5LDMxIEBA IHByb2MgdGVzdF9wYWRkcl9oYWlyeV9mdW5jdGlvbnMge30gewotICAgICBnbG9iYWwgZG1fdHlw ZV9jaGFyX3N0YXIKLSAgICAgZ2xvYmFsIGRtX3R5cGVfaW50X3N0YXIKLSAgICAgZ2xvYmFsIGRt X3R5cGVfbG9uZ19zdGFyCi0rICAgIGdsb2JhbCBkbV90eXBlX3R5cGVkZWYKLSAKLSAgICAgcHJp bnRfYWRkcl8yICJoYWlyeWZ1bmMxIiAiaGFpcnlmdW5jMShpbnQpIgotLSAgICBwcmludF9hZGRy XzIgImhhaXJ5ZnVuYzIiICJoYWlyeWZ1bmMyKGludCAoKikoJGRtX3R5cGVfY2hhcl9zdGFyKSki Ci0tICAgIHByaW50X2FkZHJfMiAiaGFpcnlmdW5jMyIgImhhaXJ5ZnVuYzMoaW50ICgqKShzaG9y dCAoKikoJGRtX3R5cGVfbG9uZ19zdGFyKSkpIgotLSAgICBwcmludF9hZGRyXzIgImhhaXJ5ZnVu YzQiICJoYWlyeWZ1bmM0KGludCAoKikoc2hvcnQgKCopKCRkbV90eXBlX2NoYXJfc3RhcikpKSIK LS0KLS0gICAgIyBnZGItZ25hdHMgYnVnIGdkYi8xOToKLS0gICAgIyAiZ2RiIHYzIGRlbWFuZ2xl ciBmYWlscyBvbiBoYWlyeWZ1bmM1IGhhaXJ5ZnVuYzYgaGFpcnlmdW5jNyIKLS0gICAgcHJpbnRf YWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM1IiAiaGFpcnlmdW5jNShpbnQgKCooKikoJGRtX3R5cGVf Y2hhcl9zdGFyKSkobG9uZykpIiAiaGFpcnlmdW5jNShpbnQgKCopKGxvbmcpICgqKShjaGFyKikp IiAiZ2RiLzE5IgotLSAgICBwcmludF9hZGRyXzJfa2ZhaWwgImhhaXJ5ZnVuYzYiICJoYWlyeWZ1 bmM2KGludCAoKigqKSgkZG1fdHlwZV9pbnRfc3RhcikpKGxvbmcpKSIgImhhaXJ5ZnVuYzYoaW50 ICgqKShsb25nKSAoKikoaW50KikpIiAiZ2RiLzE5IgotLSAgICBwcmludF9hZGRyXzJfa2ZhaWwg ImhhaXJ5ZnVuYzciICJoYWlyeWZ1bmM3KGludCAoKigqKShpbnQgKCopKCRkbV90eXBlX2NoYXJf c3RhcikpKShsb25nKSkiICJoYWlyeWZ1bmM3KGludCAoKikobG9uZykgKCopKGludCAoKikoY2hh ciopKSkiICJnZGIvMTkiCi0rCi0rICAgIGlmIHskZG1fdHlwZV90eXBlZGVmID09IDB9IHsKLSsJ cHJpbnRfYWRkcl8yICJoYWlyeWZ1bmMyIiAiaGFpcnlmdW5jMihpbnQgKCopKCRkbV90eXBlX2No YXJfc3RhcikpIgotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzMiICJoYWlyeWZ1bmMzKGludCAo Kikoc2hvcnQgKCopKCRkbV90eXBlX2xvbmdfc3RhcikpKSIKLSsJcHJpbnRfYWRkcl8yICJoYWly eWZ1bmM0IiAiaGFpcnlmdW5jNChpbnQgKCopKHNob3J0ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIp KSkiCi0rCi0rCSMgZ2RiLWduYXRzIGJ1ZyBnZGIvMTk6Ci0rCSMgImdkYiB2MyBkZW1hbmdsZXIg ZmFpbHMgb24gaGFpcnlmdW5jNSBoYWlyeWZ1bmM2IGhhaXJ5ZnVuYzciCi0rCXByaW50X2FkZHJf Ml9rZmFpbCAiaGFpcnlmdW5jNSIgImhhaXJ5ZnVuYzUoaW50ICgqKCopKCRkbV90eXBlX2NoYXJf c3RhcikpKGxvbmcpKSIgImhhaXJ5ZnVuYzUoaW50ICgqKShsb25nKSAoKikoY2hhciopKSIgImdk Yi8xOSIKLSsJcHJpbnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM2IiAiaGFpcnlmdW5jNihpbnQg KCooKikoJGRtX3R5cGVfaW50X3N0YXIpKShsb25nKSkiICJoYWlyeWZ1bmM2KGludCAoKikobG9u ZykgKCopKGludCopKSIgImdkYi8xOSIKLSsJcHJpbnRfYWRkcl8yX2tmYWlsICJoYWlyeWZ1bmM3 IiAiaGFpcnlmdW5jNyhpbnQgKCooKikoaW50ICgqKSgkZG1fdHlwZV9jaGFyX3N0YXIpKSkobG9u ZykpIiAiaGFpcnlmdW5jNyhpbnQgKCopKGxvbmcpICgqKShpbnQgKCopKGNoYXIqKSkpIiAiZ2Ri LzE5IgotKyAgICB9IGVsc2UgewotKwlwcmludF9hZGRyXzIgImhhaXJ5ZnVuYzIiICJoYWlyeWZ1 bmMyKFBGUGNfaSkiCi0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jMyIgImhhaXJ5ZnVuYzMoUEZQ RlBsX3NfaSkiCi0rCXByaW50X2FkZHJfMiAiaGFpcnlmdW5jNCIgImhhaXJ5ZnVuYzQoUEZQRlBj X3NfaSkiCi0rCi0rCSMgZ2RiLWduYXRzIGJ1ZyBnZGIvMTk6Ci0rCSMgImdkYiB2MyBkZW1hbmds ZXIgZmFpbHMgb24gaGFpcnlmdW5jNSBoYWlyeWZ1bmM2IGhhaXJ5ZnVuYzciCi0rCXByaW50X2Fk ZHJfMiAiaGFpcnlmdW5jNSIgImhhaXJ5ZnVuYzUoUEZQY19QRmxfaSkiCi0rCXByaW50X2FkZHJf MiAiaGFpcnlmdW5jNiIgImhhaXJ5ZnVuYzYoUEZQaV9QRmxfaSkiCi0rCXByaW50X2FkZHJfMiAi aGFpcnlmdW5jNyIgImhhaXJ5ZnVuYzcoUEZQRlBjX2lfUEZsX2kpIgotKyAgICB9Ci0gfQotIAot IHByb2MgZG9fdGVzdHMge30gewotQEAgLTUzNCw2ICs3MDQsNyBAQCBwcm9jIGRvX3Rlc3RzIHt9 IHsKLSAgICAgZ2xvYmFsIHNyY2RpcgotICAgICBnbG9iYWwgYmluZmlsZQotICAgICBnbG9iYWwg Z2RiX3Byb21wdAotKyAgICBnbG9iYWwgZG1fdHlwZV9pbnRfc3RhcgotIAotICAgICBzZXQgcHJt c19pZCAwCi0gICAgIHNldCBidWdfaWQgMAotQEAgLTU1Nyw2ICs3MjgsMTAgQEAgcHJvYyBkb190 ZXN0cyB7fSB7Ci0gICAgIHRlc3RfcGFkZHJfb3BlcmF0b3JfZnVuY3Rpb25zCi0gICAgIHRlc3Rf cGFkZHJfaGFpcnlfZnVuY3Rpb25zCi0gICAgIHRlc3RfbG9va3VwX29wZXJhdG9yX2Z1bmN0aW9u cwotKwotKyAgICAjIEEgcmVncmVzc2lvbiB0ZXN0IG9uIGVycm9ycyBpbnZvbHZpbmcgb3BlcmF0 b3JzCi0rICAgIGdkYl90ZXN0ICJsaXN0IGZvbzo6b3BlcmF0b3IgJGRtX3R5cGVfaW50X3N0YXIi IFwKLSsJIi4qdGhlIGNsYXNzIGZvbyBkb2VzIG5vdCBoYXZlIGFueSBtZXRob2QgbmFtZWQgb3Bl cmF0b3IgJGRtX3R5cGVfaW50X3N0YXIuKiIKLSB9Ci0gCi0gZG9fdGVzdHMKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9leHBhbmQtc2Fscy5leHAKLWluZGV4IDNjMzAyYzMuLmNkMDQ5NmQgMTAwNjQ0Ci0tLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9leHBhbmQtc2Fscy5leHAKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL2V4cGFuZC1zYWxzLmV4cAotQEAgLTQ4LDcgKzQ4LDcgQEAgZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImNhbGxlciIgIi4qY2FsbGVyLWxpbmUuKiIKLSAKLSAjIFRlc3QgR0RC IGNhdWdodCB0aGlzIHJldHVybiBjYWxsIGFuZCBub3QgdGhlIG5leHQgb25lIHRocm91Z2ggQjo6 QigpCi0gZ2RiX3Rlc3QgImJ0IiBcCi0tCSAiIzAgXFteXHJcblxdKiBBIFxbXlxyXG5cXSpcclxu IzEgXFteXHJcblxdKiBtYWluIFxbXlxyXG5cXSoiIFwKLSsJICIjMCBcW15cclxuXF0qIChBOjop P0EgXFteXHJcblxdKlxyXG4jMSBcW15cclxuXF0qIG1haW4gXFteXHJcblxdKiIgXAotIAkgImJ0 IGZyb20gQSIKLSAKLSBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibmV4dCBjYWxsZXIgZnVu YyIgIi4qZnVuYy1saW5lLioiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2Ri OTU5My5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43ODNjOTYyCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmNjCi1AQCAtMCwwICsxLDE4MCBAQAotKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJp Z2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJp Z2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjM0MzMsMjYxICsxNjMzNCwxNTkgQEAgaW5k ZXggMDAwMDAwMC4uZWU5YWVmZgogK2dkYl90ZXN0ICJhZHZhbmNlICRsaW5lIiBcCiArICAiLipj YXRjaCAoLi4uKS4qIiBcCiArICAiYWR2YW5jZS1vdmVyLXRocm93IgotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9t ZW1iZXItcHRyLmNjCi1pbmRleCAxZGZmNzBhLi42NDhiMmFmIDEwMDY0NAotLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5jYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Av bWVtYmVyLXB0ci5jYwotQEAgLTEzOCw2ICsxMzgsNyBAQCBjbGFzcyBEaWFtb25kIDogcHVibGlj IFBhZGRpbmcsIHB1YmxpYyBMZWZ0LCBwdWJsaWMgUmlnaHQKLSB7Ci0gcHVibGljOgotICAgdmly dHVhbCBpbnQgdmdldF9iYXNlICgpOwotKyAgaW50ICgqZnVuY19wdHIpIChpbnQpOwotIH07Ci0g Ci0gaW50IERpYW1vbmQ6OnZnZXRfYmFzZSAoKQotQEAgLTE0NSw2ICsxNDYsMTIgQEAgaW50IERp YW1vbmQ6OnZnZXRfYmFzZSAoKQotICAgcmV0dXJuIHRoaXMtPkxlZnQ6OnggKyAyMDAwOwotIH0K LSAKLStpbnQKLStmdW5jIChpbnQgeCkKLSt7Ci0rICByZXR1cm4gMTkgKyB4OwotK30KLSsKLSBp bnQgbWFpbiAoKQotIHsKLSAgIEEgYTsKLUBAIC0xNjIsNiArMTY5LDcgQEAgaW50IG1haW4gKCkK LSAgIGludCAoRGlhbW9uZDo6KnJpZ2h0X3ZwbWYpICgpOwotICAgaW50IChCYXNlOjoqYmFzZV92 cG1mKSAoKTsKLSAgIGludCBEaWFtb25kOjoqZGlhbW9uZF9wbWk7Ci0rICBpbnQgKCogRGlhbW9u ZDo6KmRpYW1vbmRfcGZ1bmNfcHRyKSAoaW50KTsKLSAKLSAgIFBNSSBudWxsX3BtaTsKLSAgIFBN RiBudWxsX3BtZjsKLUBAIC0xNzksNiArMTg3LDcgQEAgaW50IG1haW4gKCkKLSAKLSAgIGRpYW1v bmQuTGVmdDo6eCA9IDc3OwotICAgZGlhbW9uZC5SaWdodDo6eCA9IDg4OwotKyAgZGlhbW9uZC5m dW5jX3B0ciA9IGZ1bmM7Ci0gCi0gICAvKiBTb21lIHZhbGlkIHBvaW50ZXIgdG8gbWVtYmVycyBm cm9tIGEgYmFzZSBjbGFzcy4gICovCi0gICBsZWZ0X3BtZiA9IChpbnQgKERpYW1vbmQ6OiopICgp KSAoaW50IChMZWZ0OjoqKSAoKSkgKCZCYXNlOjpnZXRfeCk7Ci1AQCAtMTkzLDExICsyMDIsMTkg QEAgaW50IG1haW4gKCkKLSAgIC8qIEEgcG9pbnRlciB0byBkYXRhIG1lbWJlciBmcm9tIGEgYmFz ZSBjbGFzcy4gICovCi0gICBkaWFtb25kX3BtaSA9IChpbnQgRGlhbW9uZDo6KikgKGludCBMZWZ0 OjoqKSAmQmFzZTo6eDsKLSAKLSsgIC8qIEEgcG9pbnRlciB0byBkYXRhIG1lbWJlciwgd2hlcmUg dGhlIG1lbWJlciBpcyBpdHNlbGYgYSBwb2ludGVyIHRvCi0rICAgICBhIGZ1bmN0aW9uLiAgKi8K LSsgIGRpYW1vbmRfcGZ1bmNfcHRyID0gKGludCAoKiBEaWFtb25kOjoqKSAoaW50KSkgJkRpYW1v bmQ6OmZ1bmNfcHRyOwotKwotICAgbnVsbF9wbWkgPSBOVUxMOwotICAgbnVsbF9wbWYgPSBOVUxM OwotIAotICAgcG1pID0gTlVMTDsgLyogQnJlYWtwb2ludCAxIGhlcmUuICAqLwotIAotKyAgLy8g SW52YWxpZCAodXNlcyBkaWFtb25kX3BmdW5jX3B0ciBhcyBhIGZ1bmN0aW9uKToKLSsgIC8vIGRp YW1vbmQuKmRpYW1vbmRfcGZ1bmNfcHRyICgyMCk7Ci0rICAoZGlhbW9uZC4qZGlhbW9uZF9wZnVu Y19wdHIpICgyMCk7Ci0rCi0gICBrID0gKGEuKnBtZikoMyk7Ci0gCi0gICBwbWkgPSAmQTo6amo7 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbWVtYmVyLXB0ci5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmV4cAotaW5kZXggYjY5ZDRhZC4uODNkZDBkNSAx MDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL21lbWJlci1wdHIuZXhwCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9tZW1iZXItcHRyLmV4cAotQEAgLTM5MCw2ICszOTAsMzMgQEAg Z2RiX3Rlc3RfbXVsdGlwbGUgInByaW50ICgoaW50KSBwbWkpID09ICgoY2hhciAqKSAmYS5qIC0g KGNoYXIgKikgJiBhKSIgJG5hbWUgewotICAgICB9Ci0gfQotIAotKyMgQ2hlY2sgcG9pbnRlcnMg dG8gZGF0YSBtZW1iZXJzLCB3aGljaCBhcmUgdGhlbXNlbHZlcyBwb2ludGVycyB0bwotKyMgZnVu Y3Rpb25zLiAgVGhlc2UgYmVoYXZlIGxpa2UgZGF0YSBtZW1iZXJzLCBub3QgbGlrZSBwb2ludGVy cyB0bwotKyMgbWVtYmVyIGZ1bmN0aW9ucy4KLSsKLStnZGJfdGVzdCAicHR5cGUgZGlhbW9uZF9w ZnVuY19wdHIiIFwKLSsgICAgInR5cGUgPSBpbnQgXFwoXFwqRGlhbW9uZDo6XFwqXFwpXFwoaW50 XFwpIgotKwotK2dkYl90ZXN0ICJwdHlwZSBkaWFtb25kLipkaWFtb25kX3BmdW5jX3B0ciIgXAot KyAgICAidHlwZSA9IGludCBcXChcXCpcXClcXChpbnRcXCkiCi0rCi0rIyBUaGlzIG9uZSBpcyBp bnZhbGlkOyAoKSBiaW5kcyBtb3JlIHRpZ2h0bHkgdGhhbiAuKiwgc28gaXQgdHJpZXMgdG8KLSsj IGNhbGwgdGhlIG1lbWJlciBwb2ludGVyIGFzIGEgbm9ybWFsIHBvaW50ZXItdG8tZnVuY3Rpb24u Ci0rCi0rZ2RiX3Rlc3QgInByaW50IGRpYW1vbmQuKmRpYW1vbmRfcGZ1bmNfcHRyICgyMCkiIFwK LSsgICAgIkludmFsaWQgZGF0YSB0eXBlIGZvciBmdW5jdGlvbiB0byBiZSBjYWxsZWQuIgotKwot KyMgV2l0aCBwYXJlbnRoZXNlcywgaXQgaXMgdmFsaWQuCi0rCi0rZ2RiX3Rlc3QgInByaW50IChk aWFtb25kLipkaWFtb25kX3BmdW5jX3B0cikgKDIwKSIgXAotKyAgICAiJHZobiA9IDM5IgotKwot KyMgTWFrZSBzdXJlIHRoYXQgd2UgZG8gbm90IGludGVycHJldCB0aGlzIGFzIGVpdGhlciBhIG1l bWJlciBwb2ludGVyCi0rIyBjYWxsIG9yIGEgbWVtYmVyIGZ1bmN0aW9uIGNhbGwuCi0rCi0rZ2Ri X3Rlc3QgInByaW50IGRpYW1vbmQuZnVuY19wdHIgKDIwKSIgXAotKyAgICAiJHZobiA9IDM5Igot KwotICMgPT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAjIHBvaW50ZXIgdG8gbWVtYmVyIGZ1 bmN0aW9uCi0gIyA9PT09PT09PT09PT09PT09PT09PT09PT09PQotQEAgLTQyMCw3ICs0NDcsNyBA QCBnZGJfdGVzdF9tdWx0aXBsZSAicHR5cGUgcG1mIiAkbmFtZSB7Ci0gCi0gc2V0IG5hbWUgInBy aW50IHBtZiIKLSBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgcG1mIiAkbmFtZSB7Ci0tICAgIC1y ZSAiJHZobiA9ICRoZXggPEE6OmJhclxcKGludFxcKT5cclxuJGdkYl9wcm9tcHQgJCIgewotKyAg ICAtcmUgIiR2aG4gPSBcXChpbnQgXFwoQTo6XFwqXFwpXFwoQSBcXCosIGludFxcKVxcKSAkaGV4 IDxBOjpiYXJcXChpbnRcXCk+XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSAJcGFzcyAkbmFtZQotICAg ICB9Ci0gICAgIC1yZSAiJHZobiA9IC4qbm90IHN1cHBvcnRlZCB3aXRoIEhQIGFDQy4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKLUBAIC02MDgsNiArNjM1LDkgQEAgZ2RiX3Rlc3RfbXVsdGlwbGUgInBy aW50IChhLipwbWYpKDMpIiAkbmFtZSB7Ci0gICAgIH0KLSB9Ci0gCi0rZ2RiX3Rlc3QgInB0eXBl IGEuKnBtZiIgInR5cGUgPSBpbnQgXFwoQSBcXCosIGludFxcKSIKLStnZGJfdGVzdCAicHR5cGUg KGEuKnBtZikoMykiICJ0eXBlID0gaW50IgotKwotICMgUHJpbnQgb3V0IGEgcG9pbnRlciB0byBk YXRhIG1lbWJlciB3aGljaCByZXF1aXJlcyBsb29raW5nIGludG8KLSAjIGEgYmFzZSBjbGFzcy4K LSBnZGJfdGVzdCAicHJpbnQgZGlhbW9uZF9wbWkiICIkdmhuID0gJkJhc2U6OngiCi1AQCAtNjU4 LDUgKzY4OCw1IEBAIGdkYl90ZXN0ICJwcmludCBudWxsX3BtaSA9ICZBOjpqIiAiJHZobiA9ICZB OjpqIgotIGdkYl90ZXN0ICJwcmludCBudWxsX3BtaSA9IDAiICIkdmhuID0gTlVMTCIKLSAKLSBn ZGJfdGVzdCAicHJpbnQgbnVsbF9wbWYiICIkdmhuID0gTlVMTCIKLS1nZGJfdGVzdCAicHJpbnQg bnVsbF9wbWYgPSAmQTo6Zm9vIiAiJHZobiA9ICRoZXggPEE6OmZvbyA/XFwoaW50XFwpPiIKLStn ZGJfdGVzdCAicHJpbnQgbnVsbF9wbWYgPSAmQTo6Zm9vIiAiJHZobiA9IFxcKGludCBcXChBOjpc XCpcXClcXChBIFxcKiwgaW50XFwpXFwpICRoZXggPEE6OmZvbyA/XFwoaW50XFwpPiIKLSBnZGJf dGVzdCAicHJpbnQgbnVsbF9wbWYgPSAwIiAiJHZobiA9IE5VTEwiCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW11bHRpcGxlLWltcG9ydHMuY2MgYi9nZGIvdGVz dHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5jYworZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5TIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi42YjE4MGQ2CitpbmRleCAwMDAwMDAwLi5kNWI5Y2E1CiAtLS0gL2Rldi9udWxsCi0rKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbXVsdGlwbGUtaW1wb3J0cy5jYwotQEAg LTAsMCArMSwyMCBAQAotK25hbWVzcGFjZSBBIHsKLSsgIGludCB4ID0gMTE7Ci0rICBuYW1lc3Bh Y2V7Ci0rICAgIGludCB4eCA9IDIyOwotKyAgfQotK30KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9kdzItYXJhbmdlcy5TCitAQCAtMCwwICsxLDE0MCBAQAorKy8qIFRoaXMgdGVzdGNh c2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rdXNpbmcgbmFtZXNwYWNl IEE7CisrICAgQ29weXJpZ2h0IDIwMDQsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCi0rbmFtZXNwYWNlewotKyAgaW50IHh4eCA9IDMzOwotK307Cisr ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLStpbnQgbWFpbigpCi0rewotKyAgeDsK LSsgIHh4OwotKyAgeHh4OwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLWluZGV4IDAwMDAwMDAuLmU0YmI5ZjgKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1tdWx0aXBsZS1pbXBvcnRzLmV4cAotQEAgLTAsMCAr MSw0OSBAQAotKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0raWYgJHRyYWNlbGV2 ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KKysvKiBUZXN0IC5kZWJ1Z19h cmFuZ2VzIGNvbnRhaW5pbmcgemVybyBhZGRyZXNzX3NpemUuICAqLwogKwotK3NldCBwcm1zX2lk IDAKLStzZXQgYnVnX2lkIDAKKysvKiBEdW1teSBmdW5jdGlvbiB0byBwcm92aWRlIGRlYnVnIGlu Zm9ybWF0aW9uIGZvci4gICovCiArCi0rc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1tdWx0aXBsZS1p bXBvcnRzCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0v JHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9 XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFt IgotKyAgICByZXR1cm4gLTEKLSt9CisrCS50ZXh0CisrLkxiZWdpbl90ZXh0MToKKysJLmdsb2Js IG1haW4KKysJLnR5cGUgbWFpbiwgJWZ1bmN0aW9uCisrbWFpbjoKKysuTGJlZ2luX21haW46Cisr CS5pbnQgMAorKy5MZW5kX21haW46CisrCS5zaXplIG1haW4sIC4tbWFpbgorKy5MZW5kX3RleHQx OgogKwotKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKy8qIERlYnVnIGluZm9ybWF0aW9uICovCiAr Ci0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCisrLkxj dTFfYmVnaW46CisrCS8qIENVIGhlYWRlciAqLworKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFf c3RhcnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCisrLkxjdTFfc3RhcnQ6Cisr CS4yYnl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KKysJLjRieXRlCS5MYWJicmV2MV9iZWdp bgkJCS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCisrCS5ieXRlCTQJCQkJLyogUG9p bnRlciBzaXplICovCiArCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLSsjIHRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGltcG9ydGVkIHdpdGhpbgotKyMg dGhlIGZ1bmN0aW9uLgorKwkvKiBDVSBkaWUgKi8KKysJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6 IERXX1RBR19jb21waWxlX3VuaXQgKi8KKysJLjRieXRlCS5MZW5kX3RleHQxCQkJLyogRFdfQVRf aGlnaF9wYyAqLworKwkuNGJ5dGUJLkxiZWdpbl90ZXh0MQkJCS8qIERXX0FUX2xvd19wYyAqLwor KwkuYXNjaWkJImZpbGUxLnR4dFwwIgkJCS8qIERXX0FUX25hbWUgKi8KKysJLmFzY2lpCSJHTlUg QyAzLjMuM1wwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCisrCS5ieXRlCTEJCQkJLyogRFdfQVRf bGFuZ3VhZ2UgKEMpICovCiArCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9y ICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KKysJ LyogbWFpbiAqLworKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAq LworKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICovCisrCS5ieXRlCQkxCQkJLyogRFdf QVRfZGVjbF9maWxlICovCisrCS5ieXRlCQkyCQkJLyogRFdfQVRfZGVjbF9saW5lICovCisrCS5h c2NpaQkJIm1haW5cMCIJCS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTHR5cGVfaW50LS5M Y3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KKysJLjRieXRlCQkuTGJlZ2luX21haW4JLyogRFdf QVRfbG93X3BjICovCisrCS40Ynl0ZQkJLkxlbmRfbWFpbgkJLyogRFdfQVRfaGlnaF9wYyAqLwor KwkuYnl0ZQkJMQkJCS8qIERXX0FUX2ZyYW1lX2Jhc2U6IGxlbmd0aCAqLworKwkuYnl0ZQkJMHg1 NQkJCS8qIERXX0FUX2ZyYW1lX2Jhc2U6IERXX09QX3JlZzUgKi8KICsKLStnZGJfdGVzdCAicHJp bnQgeCIgIlxcJFxbMC05XF0uKiA9IDExIgotK2dkYl90ZXN0ICJwcmludCB4eCIgIlxcJFxbMC05 XF0uKiA9IDIyIgotK2dkYl90ZXN0ICJwcmludCB4eHgiICJcXCRcWzAtOVxdLiogPSAzMyIKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMu Y2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MKLW5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi45NzIzZjg3Ci0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuY2MK LUBAIC0wLDAgKzEsMzYgQEAKLStuYW1lc3BhY2UgQQotK3sKLSsgIG5hbWVzcGFjZSBCCi0rICB7 Ci0rICAgIGludCBhYiA9IDExOwotKyAgfQotK30KKysuTHR5cGVfaW50OgorKwkudWxlYjEyOAkz CQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCisrCS5hc2NpaQkJImludFwwIgkJCS8q IERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmJ5 dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLwogKwotK25hbWVzcGFjZSBDCi0rewotKyAgbmFt ZXNwYWNlIEQKLSsgIHsKLSsgICAgdXNpbmcgbmFtZXNwYWNlIEE6OkI7CisrCS5ieXRlCQkwCQkJ LyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCiArCi0rICAgIGludAotKyAgICBzZWNvbmQoKQot KyAgICB7Ci0rICAgICAgYWI7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgIH0KKysuTGN1 MV9lbmQ6CiArCi0rICBpbnQKLSsgIGZpcnN0KCkKLSsgIHsKLSsgICAgLy9hYjsKLSsgICAgcmV0 dXJuIEQ6OnNlY29uZCgpOwotKyAgfQotK30KKysvKiBBYmJyZXYgdGFibGUgKi8KKysJLnNlY3Rp b24gLmRlYnVnX2FiYnJldgorKy5MYWJicmV2MV9iZWdpbjoKKysJLnVsZWIxMjgJMQkJCS8qIEFi YnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICov CisrCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBE V19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwku dWxlYjEyOAkweDExCQkJLyogRFdfQVRfbG93X3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERX X0ZPUk1fYWRkciAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGVi MTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19B VF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwku dWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0 ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwogKwotK2ludAotK21haW4oKQotK3sKLSsgIC8vYWI7 Ci0rICByZXR1cm4gQzo6Zmlyc3QoKTsKLSt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvbmFtZXNwYWNlLW5lc3RlZC1pbXBvcnRzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L25hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cy5leHAKKysJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBj b2RlICovCisrCS51bGViMTI4CTB4MmUJCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0 ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDNmCQkJLyogRFdfQVRfZXh0 ZXJuYWwgKi8KKysJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFnICovCisrCS51bGViMTI4 CTB4M2EJCQkvKiBEV19BVF9kZWNsX2ZpbGUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9S TV9kYXRhMSAqLworKwkudWxlYjEyOAkweDNiCQkJLyogRFdfQVRfZGVjbF9saW5lICovCisrCS51 bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdf QVRfbmFtZSAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxl YjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfRk9S TV9yZWY0ICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KKysJLnVsZWIx MjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisrCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9o aWdoX3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkudWxlYjEy OAkweDQwCQkJLyogRFdfQVRfZnJhbWVfYmFzZSAqLworKwkudWxlYjEyOAkweGEJCQkvKiBEV19G T1JNX2Jsb2NrMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJ MHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkzCQkJLyogQWJicmV2IGNvZGUg Ki8KKysJLnVsZWIxMjgJMHgyNAkJCS8qIERXX1RBR19iYXNlX3R5cGUgKi8KKysJLmJ5dGUJCTAJ CQkvKiBoYXNfY2hpbGRyZW4gKi8KKysJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwor KwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweGIJCQkv KiBEV19BVF9ieXRlX3NpemUgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAq LworKwkudWxlYjEyOAkweDNlCQkJLyogRFdfQVRfZW5jb2RpbmcgKi8KKysJLnVsZWIxMjgJMHhi CQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKy8qIGFyYW5n ZXMgdGFibGUgKi8KKysJLnNlY3Rpb24gLmRlYnVnX2FyYW5nZXMKKysJLmxvbmcJLkxhcmFuZ2Vz X2VuZCAtIDFmCisrMToKKysJLjJieXRlCTIJCQkJLyogYXJhbmdlcyBWZXJzaW9uICovCisrCS40 Ynl0ZQkuTGN1MV9iZWdpbiAtIC5kZWJ1Z19pbmZvCS8qIE9mZnNldCBpbnRvIC5kZWJ1Z19pbmZv IHNlY3Rpb24gKi8KKysJLyogVGhlIEdEQiBjcmFzaGVyIGlzIHRoaXMgemVybyB2YWx1ZS4gICov CisrCS5ieXRlCQkwCQkJLyogYXJhbmdlcyBhZGRyZXNzX3NpemUgKi8KKysJLmJ5dGUJCTAJCQkv KiBhcmFuZ2VzIHNlZ21lbnRfc2l6ZSAqLworKworKy5MYXJhbmdlc19lbmQ6CitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRl eCAwMDAwMDAwLi5kMjc5ZmI1CitpbmRleCAwMDAwMDAwLi4zOTYzMmQ1CiAtLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtbmVzdGVkLWltcG9ydHMuZXhw Ci1AQCAtMCwwICsxLDU3IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5l eHAKK0BAIC0wLDAgKzEsNDAgQEAKKysjIENvcHlyaWdodCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4 LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CkBAIC0yMzcwMiw0MTQgKzE2NTAxLDI2MCBAQCBpbmRleCAwMDAwMDAw Li5kMjc5ZmI1CiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgJHRyYWNlbGV2 ZWwgdGhlbiB7Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStzZXQgcHJtc19pZCAw Ci0rc2V0IGJ1Z19pZCAwCisrIyBUZXN0IC5kZWJ1Z19hcmFuZ2VzIGNvbnRhaW5pbmcgemVybyBh ZGRyZXNzX3NpemUuCiArCi0rc2V0IHRlc3RmaWxlIG5hbWVzcGFjZS1uZXN0ZWQtaW1wb3J0cwot K3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIg fSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAg cmV0dXJuIC0xCisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2gg c3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgorKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcg b2YgbGlrZWx5IHRhcmdldHMuCisraWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KKysgICAgJiYg IVtpc3RhcmdldCAqLSotZ251Kl0KKysgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KKysgICAg JiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCisrICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFi aSpdCisrICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0geworKyAgICByZXR1cm4g MCAgCiArfQogKwotKyMgR2V0IHRoaW5ncyBzdGFydGVkLgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0 YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHti aW5maWxlfQorK3NldCB0ZXN0ZmlsZSAiZHcyLWFyYW5nZXMiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0 ZmlsZX0uUworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICsK LSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotK2lmICFbcnVu dG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQg bWFpbiIKLSsgICAgY29udGludWUKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge25vZGVidWd9XSAhPSAi IiB9IHsKKysgICAgcmV0dXJuIC0xCiArfQogKwotK2dkYl90ZXN0ICJwcmludCBhYiIgIk5vIHN5 bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuIgotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rZ2RiX2JyZWFrcG9pbnQgQzo6Zmlyc3QKLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAiQzo6Zmlyc3QiCi0rCi0rZ2RiX3Rlc3QgInByaW50IGFiIiAi Tm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC4iCi0rZ2RiX3Rlc3QgInByaW50IEM6OkQ6 OmFiIiAiPSAxMSIKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotK2dkYl9icmVha3BvaW50IEM6OkQ6OnNlY29uZAotK2dkYl9jb250aW51ZV90b19icmVh a3BvaW50ICJDOjpEOjpzZWNvbmQiCisrY2xlYW5fcmVzdGFydCAkdGVzdGZpbGUKICsKLStnZGJf dGVzdCAicHJpbnQgYWIiICI9IDExIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNw L25hbWVzcGFjZS1uby1pbXBvcnRzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNl LW5vLWltcG9ydHMuY2MKKysjIEZhaWxlZCBnZGJfbG9hZCB3b3VsZCBhYm9ydCB0aGUgdGVzdGNh c2UgZXhlY3V0aW9uIGVhcmxpZXIuCisrcGFzcyAiZmlsZSBsb2FkZWQiCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uZDFjNjhhYgoraW5kZXggMDAwMDAwMC4uMWYwMmQ5MAogLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLW5vLWltcG9ydHMuY2MKLUBAIC0wLDAg KzEsMzcgQEAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYwor QEAgLTAsMCArMSw0MiBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCiArCi0rbmFtZXNwYWNlIEEKLSt7Ci0rICBpbnQgX2EgPSAxMTsKKysgICBD b3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsgIG5hbWVz cGFjZSBCeworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0rICAgIGludCBhYiA9 IDIyOworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0 IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIAorKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK KysgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywKKysgICBVU0EuICAqLwogKwotKyAgICBuYW1lc3BhY2UgQ3sKICsK LSsgICAgICBpbnQgYWJjID0gMzM7CisrLyogVGhlIGZ1bmN0aW9uIGBmdW5jMScgdHJhY2VkIGlu dG8gbXVzdCBoYXZlIGRlYnVnIGluZm8gb24gb2Zmc2V0ID4gMDsKKysgICAoRFdfVU5TTkQgKGF0 dHIpKS4gIFRoaXMgaXMgdGhlIHJlYXNvbiBvZiBgZnVuYzAnIGV4aXN0ZW5jZS4gICovCiArCi0r ICAgICAgaW50IHNlY29uZCgpewotKyAgICAgICAgcmV0dXJuIDA7Ci0rICAgICAgfQorK3ZvaWQK KytmdW5jMChpbnQgYSwgaW50IGIpCisreworK30KICsKLSsgICAgfQorKy8qIGBmdW5jMScgYmVp bmcgdHJhY2VkIGludG8gbXVzdCBoYXZlIHNvbWUgYXJndW1lbnRzIHRvIGR1bXAuICAqLwogKwot KyAgICBpbnQgZmlyc3QoKXsKLSsgICAgICBfYTsKLSsgICAgICBhYjsKLSsgICAgICBDOjphYmM7 Ci0rICAgICAgcmV0dXJuIEM6OnNlY29uZCgpOwotKyAgICB9Ci0rICB9Cisrdm9pZAorK2Z1bmMx KGludCBhLCBpbnQgYikKKyt7CisrICBmdW5jMCAoYSxiKTsKICt9CiArCi0rCiAraW50Ci0rbWFp bigpCisrbWFpbih2b2lkKQogK3sKLSsgIEE6Ol9hOwotKyAgQTo6Qjo6YWI7Ci0rICBBOjpCOjpD OjphYmM7Ci0rICByZXR1cm4gQTo6Qjo6Zmlyc3QoKTsKKysgIGZ1bmMxICgxLCAyKTsKKysgIHJl dHVybiAwOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Ut bm8taW1wb3J0cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2Utbm8taW1wb3J0 cy5leHAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVk LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTUwODEwMworaW5kZXggMDAwMDAwMC4uMWM2 ZTg0YQogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNl LW5vLWltcG9ydHMuZXhwCi1AQCAtMCwwICsxLDc2IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItc3RyaXBwZWQuZXhwCitAQCAtMCwwICsxLDc5IEBACisrIyBDb3B5cmlnaHQgMjAwNiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiArIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKKysjIAogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArIyBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKyMgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQog KyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCisrIyAK ICsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsK LSsgICAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK3NldCBwcm1zX2lkIDAKLStzZXQgYnVn X2lkIDAKLSsKLStzZXQgdGVzdGZpbGUgbmFtZXNwYWNlLW5vLWltcG9ydHMKLStzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KLStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1 bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQot K30KLSsKLSsjIEdldCB0aGluZ3Mgc3RhcnRlZC4KKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMu LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNB LgogKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQorKyMgTWluaW1hbCBEV0FSRi0yIHVuaXQg dGVzdAogKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0r aWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJl YWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQorKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1 biBvbiB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMi4KKysjIEZvciBub3cgcGljayBhIHNh bXBsaW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1saW51eCpdCisr ICAgICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWVsZipd CisrICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lzdGFyZ2V0IGFy bS0qLWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19IHsKKysgICAg cmV0dXJuIDAgIAogK30KICsKLStnZGJfdGVzdCAicHJpbnQgQTo6X2EiICI9IDExIgotK2dkYl90 ZXN0ICJwcmludCBBOjpCOjphYiIgIj0gMjIiCi0rZ2RiX3Rlc3QgInByaW50IEE6OkI6OkM6OmFi YyIgIj0gMzMiCi0rCi0rZ2RiX3Rlc3QgInByaW50IF9hIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJl bnQgY29udGV4dC4iCi0rZ2RiX3Rlc3QgInByaW50IGFiIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJl bnQgY29udGV4dC4iCi0rZ2RiX3Rlc3QgInByaW50IGFiYyIgIk5vIHN5bWJvbCAuKiBpbiBjdXJy ZW50IGNvbnRleHQuIgotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCi0rZ2RiX2JyZWFrcG9pbnQgQTo6Qjo6Zmlyc3QKLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiQTo6Qjo6Zmlyc3QiCi0rCi0rZ2RiX3Rlc3QgInByaW50IEE6Ol9hIiAiPSAxMSIK LStnZGJfdGVzdCAicHJpbnQgQTo6Qjo6YWIiICI9IDIyIgotK2dkYl90ZXN0ICJwcmludCBBOjpC OjpDOjphYmMiICI9IDMzIgotKwotK2dkYl90ZXN0ICJwcmludCBfYSIgIj0gMTEiCi0rZ2RiX3Rl c3QgInByaW50IGFiIiAiPSAyMiIKLStnZGJfdGVzdCAicHJpbnQgQzo6YWJjIiAiPSAzMyIKLSsK LStnZGJfdGVzdCAicHJpbnQgYWJjIiAiTm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4dC4i Ci0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLStnZGJf YnJlYWtwb2ludCBBOjpCOjpDOjpzZWNvbmQKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi QTo6Qjo6Qzo6c2Vjb25kIgorK3NldCB0ZXN0ZmlsZSAiZHcyLXN0cmlwcGVkIgorK3NldCBzcmNm aWxlICR7dGVzdGZpbGV9LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVz dGZpbGV9LngKICsKLStnZGJfdGVzdCAicHJpbnQgQTo6X2EiICI9IDExIgotK2dkYl90ZXN0ICJw cmludCBBOjpCOjphYiIgIj0gMjIiCi0rZ2RiX3Rlc3QgInByaW50IEE6OkI6OkM6OmFiYyIgIj0g MzMiCisrcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC1mICR7YmluZmlsZX0iCiArCi0rZ2RiX3Rlc3Qg InByaW50IF9hIiAiPSAxMSIKLStnZGJfdGVzdCAicHJpbnQgYWIiICI9IDIyIgotK2dkYl90ZXN0 ICJwcmludCBhYmMiICI9IDMzIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS1yZWN1cnNpdmUuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVj dXJzaXZlLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDZkNGMxOAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJlY3Vy c2l2ZS5jYwotQEAgLTAsMCArMSw0NyBAQAotK25hbWVzcGFjZSBBewotKyAgaW50IGF4ID0gOTsK KysjIGdldCB0aGUgdmFsdWUgb2YgZ2NjX2NvbXBpbGVkCisraWYgW2dldF9jb21waWxlcl9pbmZv ICR7YmluZmlsZX1dIHsKKysgICAgcmV0dXJuIC0xCiArfQogKwotK25hbWVzcGFjZSBCewotKyAg dXNpbmcgbmFtZXNwYWNlIEE7CisrIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIGdjYyBh cyB3ZSB1c2UgYWRkaXRpb25hbF9mbGFncz1GSVhNRQorK2lmIHskZ2NjX2NvbXBpbGVkID09IDB9 IHsKKysgICAgcmV0dXJuIDAKICt9CiArCi0rbmFtZXNwYWNlIEN7Ci0rICB1c2luZyBuYW1lc3Bh Y2UgQjsKKytpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWdnZGIz fV0gIT0gIiIgfSB7CisrICAgIHJldHVybiAtMQogK30KICsKLSt1c2luZyBuYW1lc3BhY2UgQzsK LSsKLSsvLy0tLS0tLS0tLS0tLS0tLQotK25hbWVzcGFjZSBEewotKyAgdXNpbmcgbmFtZXNwYWNl IEQ7Ci0rICBpbnQgZHggPSA5OTsKLSt9Ci0rdXNpbmcgbmFtZXNwYWNlIEQ7CisrcmVtb3RlX2V4 ZWMgYnVpbGQgIm9iamNvcHkgLVIgLmRlYnVnX2xvYyAke2JpbmZpbGV9IgorK3NldCBzdHJpcF9v dXRwdXQgW3JlbW90ZV9leGVjIGJ1aWxkICJvYmpkdW1wIC1oICR7YmluZmlsZX0iXQogKwotKy8v LS0tLS0tLS0tLS0tLS0tCi0rbmFtZXNwYWNlewotKyAgbmFtZXNwYWNlewotKyAgICBpbnQgeHgg PSA5OTk7Ci0rICB9Cisrc2V0IHRlc3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgcHJlc2VydmF0aW9u IgorK2lmIFsgcmVnZXhwICIuZGVidWdfaW5mbyAiICRzdHJpcF9vdXRwdXRdICB7CisrICAgIHBh c3MgIiR0ZXN0ICguZGVidWdfaW5mbyBwcmVzZXJ2ZWQpIgorK30gZWxzZSB7CisrICAgIGZhaWwg IiR0ZXN0ICguZGVidWdfaW5mbyBnb3QgYWxzbyBzdHJpcHBlZCkiCiArfQogKwotKy8vLS0tLS0t LS0tLS0tLS0tCi0rbmFtZXNwYWNlIEV7Ci0rICBpbnQgZXggPSA5OTk5OworK3NldCB0ZXN0ICJz dHJpcHBpbmcgdGVzdCBmaWxlIGZ1bmN0aW9uYWxpdHkiCisraWYgWyByZWdleHAgIi5kZWJ1Z19s b2MgIiAkc3RyaXBfb3V0cHV0XSAgeworKyAgICBmYWlsICIkdGVzdCAoLmRlYnVnX2xvYyBzdGls bCBwcmVzZW50KSIKKyt9IGVsc2UgeworKyAgICBwYXNzICIkdGVzdCAoLmRlYnVnX2xvYyBzdHJp cHBlZCkiCiArfQogKwotK25hbWVzcGFjZSBGewotKyAgbmFtZXNwYWNlIEZFID0gRTsKLSt9Cisr Z2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CiArCi0rbmFtZXNwYWNlIEd7Ci0rICBuYW1lc3BhY2Ug R0YgPSBGOwotK30KKysjIEZvciBDIHByb2dyYW1zLCAic3RhcnQiIHNob3VsZCBzdG9wIGluIG1h aW4oKS4KICsKLSsvLy0tLS0tLS0tLS0tLS0tLS0KLStpbnQgbWFpbigpewotKyAgdXNpbmcgbmFt ZXNwYWNlIEQ7Ci0rICBuYW1lc3BhY2UgR1ggPSBHOwotKyAgcmV0dXJuIGF4ICsgZHggKyB4eCAr IEc6OkdGOjpGRTo6ZXg7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25h bWVzcGFjZS1yZWN1cnNpdmUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXJl Y3Vyc2l2ZS5leHAKKytnZGJfdGVzdCAic3RhcnQiIFwKKysgICAgICAgICAiLiptYWluIFxcKFxc KSBhdCAuKiIgXAorKyAgICAgICAgICJzdGFydCIKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgICAg ICAgICJmdW5jLiogXFwoLipcXCkgYXQgLioiIFwKKysgICAgICAgICAic3RlcCIKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2Nh dGlvbi5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEt bG9jYXRpb24uUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU1NDM3NTcK K2luZGV4IDAwMDAwMDAuLjVmY2RkODQKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUuZXhwCi1AQCAtMCwwICsxLDc1IEBACi0rIyBD b3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0rICAgIHN0 cmFjZSAkdHJhY2VsZXZlbAotK30KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt c3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMKK0BAIC0wLDAgKzEsODMgQEAKKysvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwotK3NldCBwcm1z X2lkIDAKLStzZXQgYnVnX2lkIDAKKysgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KICsKLStzZXQgdGVzdGZpbGUgbmFtZXNwYWNlLXJlY3Vyc2l2ZQotK3Nl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7 Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0 dXJuIC0xCi0rfQorKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArCi0raWYgW2dldF9j b21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAgcmV0dXJuIC0xOwotK30KKysgICBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgogKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwog KwotKyMgR2V0IHRoaW5ncyBzdGFydGVkLgorKy8qIERlYnVnIGluZm9ybWF0aW9uICovCiArCi0r Z2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJk aXIKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCisrLkxjdTFf YmVnaW46CisrCS8qIENVIGhlYWRlciAqLworKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3Rh cnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCisrLkxjdTFfc3RhcnQ6CisrCS4y Ynl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KKysJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJ CS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCisrCS5ieXRlCTQJCQkJLyogUG9pbnRl ciBzaXplICovCiArCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3Vs ZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KKysJLyogQ1Ug ZGllICovCisrCS51bGViMTI4IDEJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICov CisrCS5hc2NpaQkiZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5jXDAiCS8qIERXX0FU X25hbWUgKi8KKysJLmFzY2lpCSJHTlUgQyA0LjMuMlwwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICov CisrCS5ieXRlCTEJCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpICovCiArCi0rIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIHRlc3QgcHJpbnRpbmcgZnJvbSBu YW1lc3BhY2UgaW1wb3J0ZWQgaW50bwotKyMgaW1wb3J0ZWQgbmFtZXNwYWNlCisrLkx0eXBlX3Vj aGFyOgorKwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8K KysJLmFzY2lpCQkic29tZV9zdHJ1Y3RcMCIJCS8qIERXX0FUX25hbWUgKi8KICsKLStnZGJfdGVz dCAicHJpbnQgYXgiICI9IDkiCisrCS51bGViMTI4CTMJCQkvKiBBYmJyZXY6IERXX1RBR19tZW1i ZXIgKi8KKysJLmFzY2lpCQkiZmllbGRcMCIJCS8qIERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTAJ CQkvKiBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiAqLwogKwotKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyB0ZXN0IHRoYXQgZ2RiIGNhbiBwcmludCB3 aXRob3V0IGZhbGxpbmcgCi0rIyBpbnRvIHNlYXJjaCBsb29wCisrCS5ieXRlCQkwCQkJLyogRW5k IG9mIGNoaWxkcmVuIG9mIHNvbWVfc3RydWN0ICovCiArCi0rZ2RiX3Rlc3QgInByaW50IGR4IiAi PSA5OSIKKysJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hpbGRyZW4gb2YgQ1UgKi8KICsKLSsjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgdGVzdCBwcmludGlu ZyBmcm9tIG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvCi0rIyBpbXBvcnRlZCBuYW1lc3BhY2Ugd2hl cmUgaW1wb3J0cyBhcmUgaW1wbGljaXQKLSsjIGFub255bW91cyBuYW1lc3BhY2UgaW1wb3J0cy4K KysuTGN1MV9lbmQ6CiArCi0rZ2RiX3Rlc3QgInByaW50IHh4IiAiPSA5OTkiCisrLyogQWJicmV2 IHRhYmxlICovCisrCS5zZWN0aW9uIC5kZWJ1Z19hYmJyZXYKKysuTGFiYnJldjFfYmVnaW46Cisr CS51bGViMTI4CTEJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdf VEFHX2NvbXBpbGVfdW5pdCAqLworKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLworKwku dWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZP Uk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLworKwku dWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyog RFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwor KwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWlu YXRvciAqLwogKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0rIyBUZXN0IHByaW50aW5nIHVzaW5nIHJlY3Vyc2l2ZSBuYW1lc3BhY2UKLSsjIGFsaWFzZXMu CisrCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLworKwkudWxlYjEyOAkweDEzCQkJLyog RFdfVEFHX3N0cnVjdHVyZV90eXBlICovCisrCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICov CisrCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyog RFdfRk9STV9zdHJpbmcgKi8KKysJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KKysJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KICsKLStzZXR1cF9rZmFpbCAiZ2RiLzEwNTQxIiAi Ki0qLSoiCi0rZ2RiX3Rlc3QgInB0eXBlIEc6OkdGIiAiPSBuYW1lc3BhY2UgRiIKKysJLnVsZWIx MjgJMwkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MGQJCQkvKiBEV19UQUdfbWVt YmVyICovCisrCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4MwkJ CS8qIERXX0FUX25hbWUgKi8KKysJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8K KysJLnVsZWIxMjgJMHgzOAkJCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCisrCS51 bGViMTI4CTB4MGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCiArCi0rc2V0dXBfa2Zh aWwgImdkYi8xMDU0MSIgIiotKi0qIgotK2dkYl90ZXN0ICJwcmludCBHOjpHRjo6RkU6OmV4IiAi PSA5OTk5IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJl c3MtZGVjbGFyYXRpb25zLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVz cy1kZWNsYXJhdGlvbnMuY2MKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4x NzNlNDliCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3Bh Y2Utc3RyZXNzLWRlY2xhcmF0aW9ucy5jYwotQEAgLTAsMCArMSw5MyBAQAotK2ludCBhOwotK2lu dCBiOwotK2ludCBjOwotK2ludCBkOwotK2ludCBlOwotK2ludCBmOwotK2ludCBnOwotK2ludCBo OwotK2ludCBpOwotK2ludCBqOwotK2ludCBrOwotK2ludCBsOwotK2ludCBtOwotK2ludCBuOwot K2ludCBvOwotK2ludCBwOwotK2ludCBxOwotK2ludCByOwotK2ludCBzOwotK2ludCB0OwotK2lu dCB1OwotK2ludCB2OwotK2ludCB3OwotK2ludCB4OwotK2ludCB5OwotK2ludCB6OwotKwotK25h bWVzcGFjZSBBCi0rewotKyAgaW50IHh5ejsKLSsKLSsgIHVzaW5nIDo6YTsKLSsgIHVzaW5nIDo6 YjsKLSsgIHVzaW5nIDo6YzsKLSsgIHVzaW5nIDo6ZDsKLSsgIHVzaW5nIDo6ZTsKLSsgIHVzaW5n IDo6ZjsKLSsgIHVzaW5nIDo6ZzsKLSsgIHVzaW5nIDo6aDsKLSsgIHVzaW5nIDo6aTsKLSsgIHVz aW5nIDo6ajsKLSsgIHVzaW5nIDo6azsKLSsgIHVzaW5nIDo6bDsKLSsgIHVzaW5nIDo6bTsKLSsg IHVzaW5nIDo6bjsKLSsgIHVzaW5nIDo6bzsKLSsgIHVzaW5nIDo6cDsKLSsgIHVzaW5nIDo6cTsK LSsgIHVzaW5nIDo6cjsKLSsgIHVzaW5nIDo6czsKLSsgIHVzaW5nIDo6dDsKLSsgIHVzaW5nIDo6 dTsKLSsgIHVzaW5nIDo6djsKLSsgIHVzaW5nIDo6dzsKLSsgIHVzaW5nIDo6eDsKLSsgIHVzaW5n IDo6eTsKLSsgIHVzaW5nIDo6ejsKLSsKLSt9Ci0rCi0rdXNpbmcgQTo6YTsKLSt1c2luZyBBOjpi OwotK3VzaW5nIEE6OmM7Ci0rdXNpbmcgQTo6ZDsKLSt1c2luZyBBOjplOwotK3VzaW5nIEE6OmY7 Ci0rdXNpbmcgQTo6ZzsKLSt1c2luZyBBOjpoOwotK3VzaW5nIEE6Omk7Ci0rdXNpbmcgQTo6ajsK LSt1c2luZyBBOjprOwotK3VzaW5nIEE6Omw7Ci0rdXNpbmcgQTo6bTsKLSt1c2luZyBBOjpuOwot K3VzaW5nIEE6Om87Ci0rdXNpbmcgQTo6cDsKLSt1c2luZyBBOjpxOwotK3VzaW5nIEE6OnI7Ci0r dXNpbmcgQTo6czsKLSt1c2luZyBBOjp0OwotK3VzaW5nIEE6OnU7Ci0rdXNpbmcgQTo6djsKLSt1 c2luZyBBOjp3OwotK3VzaW5nIEE6Ong7Ci0rdXNpbmcgQTo6eTsKLSt1c2luZyBBOjp6OwotKwot K3VzaW5nIG5hbWVzcGFjZSBBOwotKwotK2ludCBtYWluICgpCi0rewotKyAgcmV0dXJuIDA7Ci0r fQotXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEt bG9jYXRpb24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVy LWRhdGEtbG9jYXRpb24uZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u ZjIyYTE0ZQoraW5kZXggMDAwMDAwMC4uYzQxMTUxYwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy1kZWNsYXJhdGlvbnMuZXhwCi1AQCAt MCwwICsxLDUwIEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1k YXRhLWxvY2F0aW9uLmV4cAorQEAgLTAsMCArMSwzNyBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKQEAgLTI0MTI0LDIxODMgKzE2NzY5LDI4MCBAQCBpbmRleCAwMDAwMDAwLi5mMjJhMTRl CiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0raWYgJHRyYWNlbGV2ZWwgdGhlbiB7 Ci0rICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1biBv biB0YXJnZXRzIHdoaWNoIHN1cHBvcnQgRFdBUkYtMiBhbmQgdXNlIGdhcy4KKysjIEZvciBub3cg cGljayBhIHNhbXBsaW5nIG9mIGxpa2VseSB0YXJnZXRzLgorK2lmIHshW2lzdGFyZ2V0ICotKi1s aW51eCpdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLWdudSpdCisrICAgICYmICFbaXN0YXJnZXQg Ki0qLWVsZipdCisrICAgICYmICFbaXN0YXJnZXQgKi0qLW9wZW5ic2QqXQorKyAgICAmJiAhW2lz dGFyZ2V0IGFybS0qLWVhYmkqXQorKyAgICAmJiAhW2lzdGFyZ2V0IHBvd2VycGMtKi1lYWJpKl19 IHsKKysgICAgcmV0dXJuIDAgIAogK30KICsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19pZCAw Cisrc2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uIgorK3NldCBz cmNmaWxlICR7dGVzdGZpbGV9LlMKKytzZXQgYmluZmlsZSAke3Rlc3RmaWxlfS54CiArCi0rc2V0 IHRlc3RmaWxlIG5hbWVzcGFjZS1zdHJlc3MtZGVjbGFyYXRpb25zCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uY2MKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 Ci0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBjKyt9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgorK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2Jp bmZpbGV9IiBvYmplY3Qge25vZGVidWd9XSAhPSAiIiB9IHsKICsgICAgcmV0dXJuIC0xCiArfQog KwotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGV9XSB7Ci0rICAgIHJldHVybiAtMTsK LSt9Ci0rCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQK LStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZp bGV9Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gYnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCB0aGF0IHRoZSBzZWFy Y2ggY2FuIGZhaWwgZWZmaWNpZW50bHkgCi0rCi0rZ2RiX3Rlc3QgInByaW50IGZha2V4IiAiTm8g c3ltYm9sIFwiZmFrZXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIgotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9uYW1lc3BhY2Utc3RyZXNzLmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAw MC4uZjM0MDgzZQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLXN0cmVzcy5jYwotQEAgLTAsMCArMSw2MCBAQAotKwotK25hbWVzcGFjZSBBeyBpbnQg eDsgfQotK25hbWVzcGFjZSBCeyBpbnQgeDsgfQotK25hbWVzcGFjZSBDeyBpbnQgeDsgfQotK25h bWVzcGFjZSBEeyBpbnQgeDsgfQotK25hbWVzcGFjZSBFeyBpbnQgeDsgfQotK25hbWVzcGFjZSBG eyBpbnQgeDsgfQotK25hbWVzcGFjZSBHeyBpbnQgeDsgfQotK25hbWVzcGFjZSBIeyBpbnQgeDsg fQotK25hbWVzcGFjZSBJeyBpbnQgeDsgfQotK25hbWVzcGFjZSBKeyBpbnQgeDsgfQotK25hbWVz cGFjZSBLeyBpbnQgeDsgfQotK25hbWVzcGFjZSBMeyBpbnQgeDsgfQotK25hbWVzcGFjZSBNeyBp bnQgeDsgfQotK25hbWVzcGFjZSBOeyBpbnQgeDsgfQotK25hbWVzcGFjZSBPeyBpbnQgeDsgfQot K25hbWVzcGFjZSBQeyBpbnQgeDsgfQotK25hbWVzcGFjZSBReyBpbnQgeDsgfQotK25hbWVzcGFj ZSBSeyBpbnQgeDsgfQotK25hbWVzcGFjZSBTeyBpbnQgeDsgfQotK25hbWVzcGFjZSBUeyBpbnQg eDsgfQotK25hbWVzcGFjZSBVeyBpbnQgeDsgfQotK25hbWVzcGFjZSBWeyBpbnQgeDsgfQotK25h bWVzcGFjZSBXeyBpbnQgeDsgfQotK25hbWVzcGFjZSBYeyBpbnQgeDsgfQotK25hbWVzcGFjZSBZ eyBpbnQgeDsgfQotK25hbWVzcGFjZSBaeyBpbnQgeDsgfQotKwotKwotK2ludCBtYWluKCl7Ci0r Ci0rICB1c2luZyBuYW1lc3BhY2UgQTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBCOwotKyAgdXNpbmcg bmFtZXNwYWNlIEM7Ci0rICB1c2luZyBuYW1lc3BhY2UgRDsKLSsgIHVzaW5nIG5hbWVzcGFjZSBF OwotKyAgdXNpbmcgbmFtZXNwYWNlIEY7Ci0rICB1c2luZyBuYW1lc3BhY2UgRzsKLSsgIHVzaW5n IG5hbWVzcGFjZSBIOwotKyAgdXNpbmcgbmFtZXNwYWNlIEk7Ci0rICB1c2luZyBuYW1lc3BhY2Ug SjsKLSsgIHVzaW5nIG5hbWVzcGFjZSBLOwotKyAgdXNpbmcgbmFtZXNwYWNlIEw7Ci0rICB1c2lu ZyBuYW1lc3BhY2UgTTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBOOwotKyAgdXNpbmcgbmFtZXNwYWNl IE87Ci0rICB1c2luZyBuYW1lc3BhY2UgUDsKLSsgIHVzaW5nIG5hbWVzcGFjZSBROwotKyAgdXNp bmcgbmFtZXNwYWNlIFI7Ci0rICB1c2luZyBuYW1lc3BhY2UgUzsKLSsgIHVzaW5nIG5hbWVzcGFj ZSBUOwotKyAgdXNpbmcgbmFtZXNwYWNlIFU7Ci0rICB1c2luZyBuYW1lc3BhY2UgVjsKLSsgIHVz aW5nIG5hbWVzcGFjZSBXOwotKyAgdXNpbmcgbmFtZXNwYWNlIFg7Ci0rICB1c2luZyBuYW1lc3Bh Y2UgWTsKLSsgIHVzaW5nIG5hbWVzcGFjZSBaOworK2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKICsK LSsgIHJldHVybiAwOwotK30KLVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXN0cmVzcy5leHAKKytnZGJfdGVzdCAicHR5cGUgc3RydWN0 IHNvbWVfc3RydWN0IiAidHlwZSA9IHN0cnVjdCBzb21lX3N0cnVjdCB7XFtcclxuIFx0XF0qdm9p ZCBmaWVsZDtcW1xyXG4gXHRcXSp9IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHdhcmYtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYt c3RyaWRlLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjE4MDY1MjMK K2luZGV4IDAwMDAwMDAuLmNkMzQ4NmIKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL25hbWVzcGFjZS1zdHJlc3MuZXhwCi1AQCAtMCwwICsxLDUwIEBACi0rIyBDb3B5 cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAorQEAgLTAsMCArMSw0MiBAQAorKyMg Q29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCisrIyAKICsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKICsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKICsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIworKyMgCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4gIAogKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJh Y2UgJHRyYWNlbGV2ZWwKLSt9CisrIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRv Y2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotK3NldCBwcm1zX2lkIDAKLStz ZXQgYnVnX2lkIDAKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLiAg QXJyYXkgZWxlbWVudCBzdHJpZGUgbXVzdCBub3QgYmUKKysjIHNwZWNpZmllZCBpbiB0aGUgbnVt YmVyIG9mIGVsZW1lbnRzIGJ1dCBpbiBhIG51bWJlciBvZiBieXRlcyBpbnN0ZWFkLgorKyMgT3Jp Z2luYWwgcHJvYmxlbToKKysjIChnZGIpIHAgYzQwcHQoMSkKKysjICQxID0gJzAtaGVsbG8nLCAn ICcgPHJlcGVhdHMgMzMgdGltZXM+CisrIyAoZ2RiKSBwIGM0MHB0KDIpCisrIyB3YXJuaW5nOiBG b3J0cmFuIGFycmF5IHN0cmlkZSBub3QgZGl2aXNpYmxlIGJ5IHRoZSBlbGVtZW50IHNpemUKICsK LStzZXQgdGVzdGZpbGUgbmFtZXNwYWNlLXN0cmVzcwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmNjCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotK2lmICB7 IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3Vs ZG4ndCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKKytzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCisr c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisrCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGlu ZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSB7ZGVidWcgZjc3fV0gfSB7 CiArICAgIHJldHVybiAtMQogK30KICsKLStpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxl fV0gewotKyAgICByZXR1cm4gLTE7CisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBw ZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUK ICt9CiArCi0rIyBHZXQgdGhpbmdzIHN0YXJ0ZWQuCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgImJyZWFrLWhlcmUiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJi cmVhay1oZXJlIiAiLipicmVhay1oZXJlLioiCisrZ2RiX3Rlc3QgInAgYzQwcHQoMSkiICIgPSAn MC1oZWxsby4qIgorK2dkYl90ZXN0ICJwIGM0MHB0KDIpIiAiID0gJzEtaGVsbG8uKiIKK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwLi5lNDkyYjNhCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKK0BAIC0wLDAgKzEsNDAgQEAKKysh IENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgRmlsZSB3cml0dGVu IGJ5IEFsYW4gTWF0c3Vva2EuCiArCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9CisrcHJvZ3Jh bSByZXBybwogKwotK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFpbiIKLSsgICAgY29udGludWUKLSt9CisrICB0eXBlIHNt YWxsX3N0cmlkZQorKyAgICAgY2hhcmFjdGVyKjQwIGxvbmdfc3RyaW5nCisrICAgICBpbnRlZ2Vy ICAgICAgc21hbGxfcGFkCisrICBlbmQgdHlwZSBzbWFsbF9zdHJpZGUKICsKLSsjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCB0aGF0IHRoZSBzZWFy Y2ggY2FuIGZhaWwgZWZmaWNpZW50bHkgCisrICB0eXBlKHNtYWxsX3N0cmlkZSksIGRpbWVuc2lv biAoMjApLCB0YXJnZXQgOjogdW5wbGVhc2FudAorKyAgY2hhcmFjdGVyKjQwLCBwb2ludGVyLCBk aW1lbnNpb24oOik6OiBjNDBwdAogKwotK2dkYl90ZXN0ICJwcmludCB5IiAiTm8gc3ltYm9sIFwi eVwiIGluIGN1cnJlbnQgY29udGV4dC4iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbmFtZXNwYWNlLXVzaW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVz aW5nLmNjCi1pbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9u YW1lc3BhY2UtdXNpbmcuY2MKLUBAIC0xLDI2ICsxLDEyOSBAQAotK25hbWVzcGFjZSBNCi0rewot KyAgaW50IHggPSA5MTE7Ci0rfQorKyAgaW50ZWdlciBpCiArCi0rbmFtZXNwYWNlIE4KLSt7Ci0r ICBpbnQgeCA9IDkxMjsKLSt9CisrICBkbyBpID0gMCwxOQorKyAgICAgdW5wbGVhc2FudChpKzEp JXNtYWxsX3BhZCA9IGkrMQorKyAgICAgdW5wbGVhc2FudChpKzEpJWxvbmdfc3RyaW5nID0gY2hh ciAoaWNoYXIoJzAnKSArIGkpIC8vICctaGVsbG8nCisrICBlbmQgZG8KICsKLStpbnQgbWFya2Vy MTAgKCkKLSt7Ci0rICB1c2luZyBuYW1lc3BhY2UgTTsKLSsgIGludCB5ID0geCArIDE7ICAgICAg IC8vIG1hcmtlcjEwIHN0b3AKLSsgIHVzaW5nIG5hbWVzcGFjZSBOOwotKyAgcmV0dXJuIHk7Ci0r fQorKyAgYzQwcHQgPT4gdW5wbGVhc2FudCVsb25nX3N0cmluZwogKwotK25hbWVzcGFjZSBKCi0r ewotKyAgaW50IGp4ID0gNDQ7Ci0rfQorKyAgcHJpbnQgKiwgYzQwcHQgICEgYnJlYWstaGVyZQog KwotK25hbWVzcGFjZSBLCi0rewotKyAgaW50Ci0rICBtYXJrZXI5ICgpCi0rICB7Ci0rICAgIC8v eDsKLSsgICAgcmV0dXJuIG1hcmtlcjEwICgpOwotKyAgfQotK30KLSsKLStuYW1lc3BhY2UgTAot K3sKLSsgIHVzaW5nIG5hbWVzcGFjZSBKOwotKyAgaW50Ci0rICBtYXJrZXI4ICgpCi0rICB7Ci0r ICAgIGp4OwotKyAgICByZXR1cm4gSzo6bWFya2VyOSAoKTsKLSsgIH0KLSt9Ci0rCi0rbmFtZXNw YWNlIEcKLSt7Ci0rICBuYW1lc3BhY2UgSAotKyAgewotKyAgICBpbnQgZ2h4ID0gNjsKLSsgIH0K LSt9Ci0rCi0rbmFtZXNwYWNlIEkKLSt7ICAKLSsgIGludAotKyAgbWFya2VyNyAoKQotKyAgewot KyAgICB1c2luZyBuYW1lc3BhY2UgRzo6SDsKLSsgICAgZ2h4OwotKyAgICByZXR1cm4gTDo6bWFy a2VyOCAoKTsKLSsgIH0KLSt9Ci0rCi0rbmFtZXNwYWNlIEUKLSt7Ci0rICBuYW1lc3BhY2UgRgot KyAgewotKyAgICBpbnQgZWZ4ID0gNTsKLSsgIH0KLSt9Ci0rCi0rdXNpbmcgbmFtZXNwYWNlIEU6 OkY7Ci0raW50Ci0rbWFya2VyNiAoKQotK3sKLSsgIGVmeDsKLSsgIHJldHVybiBJOjptYXJrZXI3 ICgpOwotK30KLSsKLSBuYW1lc3BhY2UgQQotIHsKLSAgIGludCBfYSA9IDE7Ci0gICBpbnQgeCA9 IDI7Ci0gfQotIAotLWludCBtYXJrZXI0KCl7Ci0tCXVzaW5nIEE6Ong7Ci0tCXJldHVybiAwOwot K25hbWVzcGFjZSBDCi0rewotKyAgaW50IGNjID0gMzsKLSt9Ci0rCi0rbmFtZXNwYWNlIEQKLSt7 Ci0rICBpbnQgZHggPSA0OwotK30KLSsKLSt1c2luZyBuYW1lc3BhY2UgQzsKLStpbnQKLSttYXJr ZXI1ICgpCi0rewotKyAgY2M7Ci0rICByZXR1cm4gbWFya2VyNiAoKTsKLSt9Ci0rCi0raW50Ci0r bWFya2VyNCAoKQotK3sKLSsgIHVzaW5nIEQ6OmR4OwotKyAgcmV0dXJuIG1hcmtlcjUgKCk7Ci0g fQotIAotLWludCBtYXJrZXIzKCl7Ci0tCXJldHVybiBtYXJrZXI0KCk7Ci0raW50Ci0rbWFya2Vy MyAoKQotK3sKLSsgIHJldHVybiBtYXJrZXI0ICgpOwotIH0KLSAKLS1pbnQgbWFya2VyMigpCi0r aW50Ci0rbWFya2VyMiAoKQotIHsKLSAgIG5hbWVzcGFjZSBCID0gQTsKLSAgIEI6Ol9hOwotLSAg cmV0dXJuIG1hcmtlcjMoKTsKLSsgIHJldHVybiBtYXJrZXIzICgpOwotIH0KLSAKLS1pbnQgbWFy a2VyMSgpCi0raW50Ci0rbWFya2VyMSAoKQotIHsKLSAgIGludCB0b3RhbCA9IDA7Ci0gICB7Ci1A QCAtMjksMTcgKzEzMiwxOCBAQCBpbnQgbWFya2VyMSgpCi0gICAgICAgdXNpbmcgbmFtZXNwYWNl IEE7Ci0gICAgICAgaW50IGMgPSAyOwotICAgICAgIHsKLS0gICAgICAgIGludCBkID0gMzsKLS0g ICAgICAgIHRvdGFsID0gX2EgKyBiICsgYyArIGQgKyBtYXJrZXIyKCk7IC8vIG1hcmtlcjEgc3Rv cAotKwlpbnQgZCA9IDM7Ci0rCXRvdGFsID0gX2EgKyBiICsgYyArIGQgKyBtYXJrZXIyICgpOyAv LyBtYXJrZXIxIHN0b3AKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLSAgIHJldHVybiB0b3RhbDsK LSB9Ci0gCi0taW50IG1haW4oKQotK2ludAotK21haW4gKCkKLSB7Ci0gICB1c2luZyBuYW1lc3Bh Y2UgQTsKLSAgIF9hOwotLSAgcmV0dXJuIG1hcmtlcjEoKTsKLSsgIHJldHVybiBtYXJrZXIxICgp OwotIH0KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtdXNpbmcu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmV4cAotaW5kZXggZjI0 OTczZi4uZmMyMzExNSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFj ZS11c2luZy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS11c2luZy5l eHAKLUBAIC0yOCw2ICsyOCwxMSBAQCBpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1 YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYgotICAgICByZXR1 cm4gLTEKLSB9Ci0gCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsKLSsgICAg cmV0dXJuIC0xOwotK30KLSsKLSsKLSAjIEdldCB0aGluZ3Mgc3RhcnRlZC4KLSAKLSBnZGJfZXhp dAotQEAgLTQ2LDQyICs1MSwxNTUgQEAgaWYgIVtydW50b19tYWluXSB0aGVuIHsKLSAKLSBnZGJf dGVzdCAicHJpbnQgX2EiICI9IDEiCi0gCi0rIyBUZXN0IHRoYXQgbmFtZXMgYXJlIG5vdCBwcmlu dGVkIHdoZW4gdGhleSAKLSsjIGFyZSBub3QgaW1wb3J0ZWQKLSsKLStnZGJfYnJlYWtwb2ludCBt YXJrZXIzCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjMiCi0rCi0rI3NlbmRf Z2RiICJicmVhayBtYXJrZXIzXG4iCi0rI3NlbmRfZ2RiICJjb250aW51ZVxuIgotKwotK2dkYl90 ZXN0ICJwcmludCBfYSIgIk5vIHN5bWJvbCBcIl9hXCIgaW4gY3VycmVudCBjb250ZXh0LiIgIlBy aW50IF9hIHdpdGhvdXQgaW1wb3J0IgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQotKwot KwotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyB0ZXN0 IHByaW50aW5nIG9mIG5hbWVzcGFjZSBpbXBvcnRlZCBpbnRvIAotICMgYSBzY29wZSBjb250YWlu aW5nIHRoZSBwYy4KLSAKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNv dWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotIGdk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIxIHN0b3AiXQotIGdkYl9j b250aW51ZV90b19icmVha3BvaW50ICJtYXJrZXIxIHN0b3AiCi0gCi0gZ2RiX3Rlc3QgInByaW50 IF9hIiAiPSAxIiAicHJpbnQgX2EgaW4gYSBuZXN0ZWQgc2NvcGUiCi0gCi0rCi0rZ2RiX2V4aXQK LStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJf bG9hZCAke2JpbmZpbGV9Ci0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLSsjIHRlc3QgcHJpbnRpbmcgb2YgbmFtZXNwYWNlIGltcG9ydGVkIGludG8gCi0r IyBmaWxlIHNjb3BlLgotKwotKwotK2lmICFbcnVudG8gbWFya2VyNV0gdGhlbiB7Ci0rICAgIHBl cnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgbWFya2VyNSIKLSsgICAgY29udGludWUK LSt9Ci0rCi0rZ2RiX3Rlc3QgInByaW50IGNjIiAiPSAzIgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0 YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHti aW5maWxlfQotKwotKwotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0gIyBUZXN0IHByaW50aW5nIG9mIG5hbWVzcGFjZSBhbGlhc2VzCi0gCi0tc2V0dXBfa2Zh aWwgImdkYi83OTM1IiAiKi0qLSoiCi0gaWYgIVtydW50byBtYXJrZXIyXSB0aGVuIHsKLSAgICAg cGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYXJrZXIyIgotICAgICBjb250aW51 ZQotIH0KLSAKLS1nZGJfdGVzdCAicHJpbnQgQjo6YSIgIj0gMSIKLStnZGJfdGVzdCAicHJpbnQg Qjo6X2EiICI9IDEiCi0rCi0rZ2RiX3Rlc3QgInByaW50IF9hIiAiTm8gc3ltYm9sIFwiX2FcIiBp biBjdXJyZW50IGNvbnRleHQuIiAicHJpbnQgX2EgaW4gbmFtZXNwYWNlIGFsaWFzIHNjb3BlIgot K2dkYl90ZXN0ICJwcmludCB4IiAiTm8gc3ltYm9sIFwieFwiIGluIGN1cnJlbnQgY29udGV4dC4i ICJwcmludCB4IGluIG5hbWVzcGFjZSBhbGlhcyBzY29wZSIKLSsKLStnZGJfZXhpdAotK2dkYl9z dGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgotK2dkYl9sb2FkICR7 YmluZmlsZX0KLSsKLSAKLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotICMgVGVzdCB0aGF0IG5hbWVzIGFyZSBub3QgcHJpbnRlZCB3aGVuIHRoZXkgCi0gIyBh cmUgbm90IGltcG9ydGVkCi0gCi0tZ2RiX2JyZWFrcG9pbnQgIm1hcmtlcjMiCi0tZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjMiCi0raWYgeyFbcnVudG8gbWFya2VyM119IHsKLSsg ICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYXJrZXIzIgotK30KLSAKLS1n ZGJfdGVzdCAicHJpbnQgX2EiICJObyBzeW1ib2wgXCJfYVwiIGluIGN1cnJlbnQgY29udGV4dC4i ICJQcmludCBhIHdpdGhvdXQgaW1wb3J0IgotKyMgZ2NjLTQtMyBwdXRzIGltcG9ydCBzdGF0ZW1l bnRzIGZvciBhbGlhc2VzIGluCi0rIyB0aGUgZ2xvYmFsIHNjb3BlIGluc3RlYWQgb2YgdGhlIGNv cnJlc3BvbmRpbmcKLSsjIGZ1bmN0aW9uIHNjb3BlLiBUaGVzZSB3cm9uZyBpbXBvcnQgc3RhdGVt ZW50cyB0aHJvdwotKyMgdGhpcyB0ZXN0IG9mZi4gVGhpcyBpcyBmaXhlZCBpbiBnY2MtNC00Lgot K2lmIFt0ZXN0X2NvbXBpbGVyX2luZm8gZ2NjLTQtMy0qXSB0aGVuIHsgc2V0dXBfeGZhaWwgKi0q LSogfQotKwotK2dkYl90ZXN0ICJwcmludCBfYSIgIk5vIHN5bWJvbCBcIl9hXCIgaW4gY3VycmVu dCBjb250ZXh0LiIgIlByaW50IF9hIHdpdGhvdXQgaW1wb3J0IgotIAotICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0gIyBUZXN0IHByaW50aW5nIG9mIGluZGl2 aWR1YWxseSBpbXBvcnRlZCBlbGVtZW50cwotIAotLXNldHVwX2tmYWlsICJnZGIvNzkzNiIgIiot Ki0qIgotIGlmICFbcnVudG8gbWFya2VyNF0gdGhlbiB7Ci0gICAgIHBlcnJvciAiY291bGRuJ3Qg cnVuIHRvIGJyZWFrcG9pbnQgbWFya2VyNCIKLSAgICAgY29udGludWUKLSB9Ci0gCi0tZ2RiX3Rl c3QgInByaW50IHgiICI9IDIiCi0rZ2RiX3Rlc3QgInByaW50IGR4IiAiPSA0IgotKwotKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBUZXN0IHByaW50aW5n IG9mIG5hbWVzcGFjZSBhbGlhc2VzCi0rCi0raWYgIVtydW50byBtYXJrZXI1XSB0aGVuIHsKLSsg ICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFya2VyNSIKLSsgICAgY29udGludWUKLSt9Ci0r Ci0rZ2RiX3Rlc3QgInByaW50IGVmeCIgIj0gNSIKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGluZyBvZiB2YXJpYWJsZXMgaW1w b3J0ZWQgZnJvbQotKyMgbmVzdGVkIG5hbWVzcGFjZXMKLSsKLStpZiAhW3J1bnRvIEk6Om1hcmtl cjddIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IEk6Om1h cmtlcjciCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl90ZXN0ICJwcmludCBnaHgiICI9IDYi Ci0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRl c3QgdGhhdCB2YXJpYWJsZXMgYXJlIG5vdCBwcmludGVkIGluIGEgbmFtZXNwYWNlCi0rIyB0aGF0 IGlzIHNpYmxpbmcgdG8gdGhlIG5hbWVzcGFjZSBjb250YWluaW5nIGFuIGltcG9ydAotKwotK2lm ICFbcnVudG8gTDo6bWFya2VyOF0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRv IGJyZWFrcG9pbnQgTDo6bWFya2VyOCIKLSsgICAgY29udGludWUKLSt9Ci0rCi0rZ2RiX3Rlc3Qg InByaW50IGp4IiAiPSA0NCIKLSsKLStnZGJfYnJlYWtwb2ludCAiSzo6bWFya2VyOSIKLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiSzo6bWFya2VyOSIKLSsKLStnZGJfdGVzdCAicHJpbnQg angiICJObyBzeW1ib2wgXCJqeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCi0rCi0rIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgdGhhdCB2YXJpYWJs ZXMgYXJlIG9ubHkgcHJpbnRlZCBhZnRlciB0aGUgbGluZQotKyMgY29udGFpbmluZyB0aGUgaW1w b3J0Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBy dW4gdG8gYnJlYWtwb2ludCBtYWluIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyMTAgc3RvcCJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgIm1hcmtlcjEwIHN0b3AiCi0rCi0rIyBBc3NlcnQgdGhhdCBNOjp4IGlz IHByaW50ZWQgYW5kIG5vdCBOOjp4Ci0rZ2RiX3Rlc3QgInByaW50IHgiICI9IDkxMSIgInByaW50 IHggKGZyb20gTTo6eCkiCi0rCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFt ZXNwYWNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS5leHAKLWluZGV4IDc2 YjFiODIuLjIwNDJkYjIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3Bh Y2UuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UuZXhwCi1AQCAtMjQs NiArMjQsNyBAQAotICMgZm9yIG5hbWVzcGFjZXMuCi0gIyBOb3RlOiBBcyBvZiAyMDAwLTA2LTAz LCB0aGV5IHBhc3NlZCB1bmRlciBnKysgLSBkamIKLSAKLStsb2FkX2xpYiAiY3Atc3VwcG9ydC5l eHAiCi0gCi0gaWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgICAgICBzdHJhY2UgJHRyYWNlbGV2 ZWwKLUBAIC0yNTksMTEgKzI2MCwxNiBAQCBnZGJfdGVzdCAicHR5cGUgRSIgInR5cGUgPSBuYW1l c3BhY2UgQzo6RDo6RSIKLSBnZGJfdGVzdCAicHR5cGUgQ0NsYXNzIiAidHlwZSA9IChjbGFzcyBD OjpDQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpDQ2xhc3MgXHspXHJcbiAgICBpbnQg eDtcclxuXH0iCi0gZ2RiX3Rlc3QgInB0eXBlIENDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0g KGNsYXNzIEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpD Q2xhc3M6Ok5lc3RlZENsYXNzIFx7KVxyXG4gICAgaW50IHk7XHJcblx9IgotIGdkYl90ZXN0ICJw dHlwZSBOZXN0ZWRDbGFzcyIgIk5vIHN5bWJvbCBcIk5lc3RlZENsYXNzXCIgaW4gY3VycmVudCBj b250ZXh0LiIKLS1zZXR1cF9rZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKLS1nZGJfdGVzdCAicHR5 cGUgOjpDOjpDQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6Q0NsYXNzIFx7XHJcbiAgcHVibGljOlxy XG4gICAgaW50IHg7XHJcblx9IgotLXNldHVwX2tmYWlsICJnZGIvMTQ0OCIgIiotKi0qIgotLWdk Yl90ZXN0ICJwdHlwZSA6OkM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICJ0eXBlID0gY2xhc3MgQzo6 Q0NsYXNzOjpOZXN0ZWRDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB5O1xyXG5cfSIK LS1zZXR1cF9rZmFpbCAiZ2RiLzE0NDgiICIqLSotKiIKLStjcF90ZXN0X3B0eXBlX2NsYXNzIFwK LSsJInB0eXBlIDo6Qzo6Q0NsYXNzIiAiIiAiY2xhc3MiICJDOjpDQ2xhc3MiIFwKLSsJewotKwkg ICAgeyBmaWVsZCBwdWJsaWMgImludCB4OyIgfQotKwl9Ci0rY3BfdGVzdF9wdHlwZV9jbGFzcyBc Ci0rCSJwdHlwZSA6OkM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICIiICJjbGFzcyIgIkM6OkNDbGFz czo6TmVzdGVkQ2xhc3MiIFwKLSsJewotKwkgICAgeyBmaWVsZCBwdWJsaWMgImludCB5OyIgfQot Kwl9Ci0gZ2RiX3Rlc3QgInB0eXBlIDo6Qzo6TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0 ZWRDbGFzc1wiIGluIG5hbWVzcGFjZSBcIkNcIi4iCi0gZ2RiX3Rlc3QgInB0eXBlIEM6OkNDbGFz cyIgIk5vIHN5bWJvbCBcIkNDbGFzc1wiIGluIG5hbWVzcGFjZSBcIkM6OkNcIi4iCi0gZ2RiX3Rl c3QgInB0eXBlIEM6OkNDbGFzczo6TmVzdGVkQ2xhc3MiICJObyB0eXBlIFwiQ0NsYXNzXCIgd2l0 aGluIGNsYXNzIG9yIG5hbWVzcGFjZSBcIkM6OkNcIi4iCi1AQCAtMjczLDggKzI3OSwxMSBAQCBn ZGJfdGVzdCAicHR5cGUgQzo6TmVzdGVkQ2xhc3MiICJObyBzeW1ib2wgXCJOZXN0ZWRDbGFzc1wi IGluIG5hbWVzcGFjZSBcIkM6OkNcIgotIAotIGdkYl90ZXN0ICJwcmludCBjT3RoZXJGaWxlIiAi XFwkXFswLTlcXS4qID0gMzE2IgotIGdkYl90ZXN0ICJwdHlwZSBPdGhlckZpbGVDbGFzcyIgInR5 cGUgPSAoY2xhc3MgQzo6T3RoZXJGaWxlQ2xhc3MgXHtcclxuICBwdWJsaWM6fHN0cnVjdCBDOjpP dGhlckZpbGVDbGFzcyBceylcclxuICAgIGludCB6O1xyXG5cfSIKLS1zZXR1cF9rZmFpbCAiZ2Ri LzE0NDgiICIqLSotKiIKLS1nZGJfdGVzdCAicHR5cGUgOjpDOjpPdGhlckZpbGVDbGFzcyIgInR5 cGUgPSBjbGFzcyBDOjpPdGhlckZpbGVDbGFzcyBce1xyXG4gIHB1YmxpYzpcclxuICAgIGludCB6 O1xyXG5cfSIKLStjcF90ZXN0X3B0eXBlX2NsYXNzIFwKLSsJInB0eXBlIDo6Qzo6T3RoZXJGaWxl Q2xhc3MiICIiICJjbGFzcyIgIkM6Ok90aGVyRmlsZUNsYXNzIiBcCi0rCXsKLSsJICAgIHsgZmll bGQgcHVibGljICJpbnQgejsiIH0KLSsJfQotIGdkYl90ZXN0ICJwdHlwZSBDOjpPdGhlckZpbGVD bGFzcyIgIk5vIHN5bWJvbCBcIk90aGVyRmlsZUNsYXNzXCIgaW4gbmFtZXNwYWNlIFwiQzo6Q1wi LiIKLSAKLSAjIFNvbWUgYW5vbnltb3VzIG5hbWVzcGFjZSB0ZXN0cy4KLWRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmVybG9hZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9v dmVybG9hZC5leHAKLWluZGV4IDI0MDI1YTIuLmE3MjkzMmUgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5jcC9vdmVybG9hZC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292 ZXJsb2FkLmV4cAotQEAgLTc0LDEyICs3NCwxMiBAQCBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRo b2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCk7IgotIHNldCByZV9tZXRob2Rz CSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoY2hhclxcKTsiCi0gc2V0IHJl X21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChzaWduZWQgY2hh clxcKTsiCi0gc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFh cmdcXCh1bnNpZ25lZCBjaGFyXFwpOyIKLS1zZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7 d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHNob3J0XFwpOyIKLS1zZXQgcmVfbWV0aG9kcwkiJHtyZV9t ZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpOyIKLStzZXQg cmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkMWFyZ1xcKHNob3J0KCBp bnQpP1xcKTsiCi0rc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9h ZDFhcmdcXCgodW5zaWduZWQgc2hvcnR8c2hvcnQgdW5zaWduZWQpKCBpbnQpP1xcKTsiCi0gc2V0 IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChpbnRcXCk7 IgotIHNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwo dW5zaWduZWQgaW50XFwpOyIKLS1zZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50 IG92ZXJsb2FkMWFyZ1xcKGxvbmdcXCk7IgotLXNldCByZV9tZXRob2RzCSIke3JlX21ldGhvZHN9 JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgbG9uZ1xcKTsiCi0rc2V0IHJlX21ldGhv ZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXChsb25nKCBpbnQpP1xcKTsi Ci0rc2V0IHJlX21ldGhvZHMJIiR7cmVfbWV0aG9kc30ke3dzfWludCBvdmVybG9hZDFhcmdcXCgo dW5zaWduZWQgbG9uZ3xsb25nIHVuc2lnbmVkKSggaW50KT9cXCk7IgotIHNldCByZV9tZXRob2Rz CSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoZmxvYXRcXCk7IgotIHNldCBy ZV9tZXRob2RzCSIke3JlX21ldGhvZHN9JHt3c31pbnQgb3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwp OyIKLSBzZXQgcmVfbWV0aG9kcwkiJHtyZV9tZXRob2RzfSR7d3N9aW50IG92ZXJsb2FkZm5hcmdc XCgodm9pZHwpXFwpOyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9vdmxkYnJl YWsuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3Avb3ZsZGJyZWFrLmV4cAotaW5kZXggOGE2Yjc5 NS4uOTk5N2E0NSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292bGRicmVhay5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL292bGRicmVhay5leHAKLUBAIC0xMjcsMTAg KzEyNywyNCBAQCBwcm9jIHNldF9icF9vdmVybG9hZGVkIHtuYW1lIGV4cGVjdGVkbWVudSBteWNo b2ljZSBicG51bWJlciBsaW5lbnVtYmVyfSB7Ci0gfQotIAotICMgVGhpcyBpcyB0aGUgZXhwZWN0 ZWQgbWVudSBmb3Igb3ZlcmxvYWQxYXJnLgotLSMgTm90ZSB0aGUgYXJnIHR5cGUgdmFyaWF0aW9u cyBvbiBsaW5lcyA2IGFuZCAxMy4KLSsjIE5vdGUgdGhlIGFyZyB0eXBlIHZhcmlhdGlvbnMgZm9y IHZvaWQgYW5kIGludGVnZXIgdHlwZXMuCi0gIyBUaGlzIGFjY29tbW9kYXRlcyBkaWZmZXJlbnQg dmVyc2lvbnMgb2YgZysrLgotIAotLXNldCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzBcXFxdIGNh bmNlbFxyXG5cXFxbMVxcXF0gYWxsXHJcblxcXFsyXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGRv dWJsZVxcKSBhdC4qJHNyY2ZpbGU6MTIxXHJcblxcXFszXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xc KGZsb2F0XFwpIGF0Liokc3JjZmlsZToxMjBcclxuXFxcWzRcXFxdIGZvbzo6b3ZlcmxvYWQxYXJn XFwodW5zaWduZWQgbG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHJcblxcXFs1XFxcXSBmb286Om92 ZXJsb2FkMWFyZ1xcKGxvbmdcXCkgYXQuKiRzcmNmaWxlOjExOFxyXG5cXFxbNlxcXF0gZm9vOjpv dmVybG9hZDFhcmdcXCgodW5zaWduZWQgaW50fHVuc2lnbmVkKVxcKSBhdC4qJHNyY2ZpbGU6MTE3 XHJcblxcXFs3XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKGludFxcKSBhdC4qJHNyY2ZpbGU6MTE2 XHJcblxcXFs4XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKHVuc2lnbmVkIHNob3J0XFwpIGF0Liok c3JjZmlsZToxMTVcclxuXFxcWzlcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnRcXCkgYXQu KiRzcmNmaWxlOjExNFxyXG5cXFxbMTBcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQg Y2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEzXHJcblxcXFsxMVxcXF0gZm9vOjpvdmVybG9hZDFhcmdc XChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHJcblxcXFsxMlxcXF0gZm9vOjpvdmVy bG9hZDFhcmdcXChjaGFyXFwpIGF0Liokc3JjZmlsZToxMTFcclxuXFxcWzEzXFxcXSBmb286Om92 ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjExMFxyXG4+ICQiCi0rc2V0ICAg IG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbMFxcXF0gY2FuY2VsXHJcbiIKLSthcHBlbmQgbWVudV9v dmVybG9hZDFhcmcgIlxcXFsxXFxcXSBhbGxcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFy ZyAiXFxcWzJcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZTox MjFcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzNcXFxdIGZvbzo6b3Zlcmxv YWQxYXJnXFwoZmxvYXRcXCkgYXQuKiRzcmNmaWxlOjEyMFxyXG4iCi0rYXBwZW5kIG1lbnVfb3Zl cmxvYWQxYXJnICJcXFxbNFxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWQgbG9uZ3xs b25nIHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOVxyXG4iCi0rYXBwZW5kIG1l bnVfb3ZlcmxvYWQxYXJnICJcXFxbNVxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChsb25nKCBpbnQp P1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxc XFs2XFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNpZ25lZCBpbnR8dW5zaWduZWQpXFwpIGF0 Liokc3JjZmlsZToxMTdcclxuIgotK2FwcGVuZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzdcXFxd IGZvbzo6b3ZlcmxvYWQxYXJnXFwoaW50XFwpIGF0Liokc3JjZmlsZToxMTZcclxuIgotK2FwcGVu ZCBtZW51X292ZXJsb2FkMWFyZyAiXFxcWzhcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2ln bmVkIHNob3J0fHNob3J0IHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNVxyXG4i Ci0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICJcXFxbOVxcXF0gZm9vOjpvdmVybG9hZDFhcmdc XChzaG9ydCggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNFxyXG4iCi0rYXBwZW5kIG1lbnVfb3Zl cmxvYWQxYXJnICJcXFxbMTBcXFxdIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgY2hhclxc KSBhdC4qJHNyY2ZpbGU6MTEzXHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFsx MVxcXF0gZm9vOjpvdmVybG9hZDFhcmdcXChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEy XHJcbiIKLSthcHBlbmQgbWVudV9vdmVybG9hZDFhcmcgIlxcXFsxMlxcXF0gZm9vOjpvdmVybG9h ZDFhcmdcXChjaGFyXFwpIGF0Liokc3JjZmlsZToxMTFcclxuIgotK2FwcGVuZCBtZW51X292ZXJs b2FkMWFyZyAiXFxcWzEzXFxcXSBmb286Om92ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCkgYXQuKiRz cmNmaWxlOjExMFxyXG4iCi0rYXBwZW5kIG1lbnVfb3ZlcmxvYWQxYXJnICI+ICQiCi0gCi0gIyBT ZXQgbXVsdGlwbGUtc3ltYm9scyB0byAiYXNrIiwgdG8gYWxsb3cgdXMgdG8gdGVzdCB0aGUgdXNl Ci0gIyBvZiB0aGUgbXVsdGlwbGUtY2hvaWNlIG1lbnUgd2hlbiBicmVha2luZyBvbiBhbiBvdmVy bG9hZGVkIG1ldGhvZC4KLUBAIC0xNTcsMTcgKzE3MSwxNyBAQCBzZXRfYnBfb3ZlcmxvYWRlZCAi Zm9vOjpvdmVybG9hZDFhcmciICIkbWVudV9vdmVybG9hZDFhcmciIDEzICAgMTMgMTEwCi0gCi0g Z2RiX3Rlc3QgImluZm8gYnJlYWsiIFwKLSAgICAgIk51bSAgICAgVHlwZVxbXHQgXF0rRGlzcCBF bmIgQWRkcmVzc1xbXHQgXF0rV2hhdC4qCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAg IGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gbWFpbiBhdC4qJHNyY2ZpbGU6NDlccgotK1xb MC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2lu IG1haW4oXFwoKHx2b2lkKVxcKSk/IGF0Liokc3JjZmlsZTo0OVxyCi0gXFtcdCBcXSticmVha3Bv aW50IGFscmVhZHkgaGl0IDEgdGltZVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAg IGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChjaGFyXFwp IGF0Liokc3JjZmlsZToxMTFccgotIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVw IHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2lnbmVkIGNoYXJc XCkgYXQuKiRzcmNmaWxlOjExMlxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtl ZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBj aGFyXFwpIGF0Liokc3JjZmlsZToxMTNccgotLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAg ICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoc2hvcnRc XCkgYXQuKiRzcmNmaWxlOjExNFxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtl ZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBz aG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE1XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0 KCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2lu dCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1 bnNpZ25lZCBzaG9ydHxzaG9ydCB1bnNpZ25lZCkoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTVc cgotIFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0 IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoaW50XFwpIGF0Liokc3JjZmlsZToxMTZccgotIFxb MC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2lu IGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkfHVuc2lnbmVkIGludClcXCkgYXQuKiRzcmNm aWxlOjExN1xyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0r JGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChsb25nXFwpIGF0Liokc3JjZmlsZTox MThccgotLVxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhc W1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwodW5zaWduZWQgbG9uZ1xcKSBhdC4qJHNyY2Zp bGU6MTE5XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSsk aGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpIGF0Liokc3Jj ZmlsZToxMThccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxd KyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIGxvbmd8bG9uZyB1 bnNpZ25lZCkoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTlccgotIFxbMC05XF0rXFtcdCBcXSti cmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQx YXJnXFwoZmxvYXRcXCkgYXQuKiRzcmNmaWxlOjEyMFxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFr cG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdc XChkb3VibGVcXCkgYXQuKiRzcmNmaWxlOjEyMVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9p bnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgo dm9pZHwpXFwpIGF0Liokc3JjZmlsZToxMTAiIFwKLUBAIC0yMTUsMTcgKzIyOSwxNyBAQCBnZGJf ZXhwZWN0IHsKLSAKLSBnZGJfdGVzdCAiaW5mbyBicmVhayIgXAotICAgICAiTnVtICAgICBUeXBl XFtcdCBcXStEaXNwIEVuYiBBZGRyZXNzXFtcdCBcXStXaGF0LioKLS1cWzAtOVxdK1xbXHQgXF0r YnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBtYWluIGF0Liokc3Jj ZmlsZTo0OVxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0r JGhleFxbXHQgXF0raW4gbWFpbihcXCgofHZvaWQpXFwpKT8gYXQuKiRzcmNmaWxlOjQ5XHIKLSBc W1x0IFxdK2JyZWFrcG9pbnQgYWxyZWFkeSBoaXQgMSB0aW1lXHIKLSBcWzAtOVxdK1xbXHQgXF0r YnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2Fk MWFyZ1xcKGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFr cG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdc XChzaWduZWQgY2hhclxcKSBhdC4qJHNyY2ZpbGU6MTEyXHIKLSBcWzAtOVxdK1xbXHQgXF0rYnJl YWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFy Z1xcKHVuc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExM1xyCi0tXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXChzaG9ydFxcKSBhdC4qJHNyY2ZpbGU6MTE0XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJl YWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFy Z1xcKHVuc2lnbmVkIHNob3J0XFwpIGF0Liokc3JjZmlsZToxMTVccgotK1xbMC05XF0rXFtcdCBc XSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zlcmxv YWQxYXJnXFwoc2hvcnQoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMTRccgotK1xbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwoKHVuc2lnbmVkIHNob3J0fHNob3J0IHVuc2lnbmVkKSggaW50KT9cXCkgYXQu KiRzcmNmaWxlOjExNVxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxb XHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNm aWxlOjExNlxyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0r JGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWduZWR8dW5zaWduZWQgaW50 KVxcKSBhdC4qJHNyY2ZpbGU6MTE3XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAg a2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmdcXCkg YXQuKiRzcmNmaWxlOjExOFxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAg eVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBsb25n XFwpIGF0Liokc3JjZmlsZToxMTlccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBr ZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwobG9uZyggaW50 KT9cXCkgYXQuKiRzcmNmaWxlOjExOFxyCi0rXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAg IGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCgodW5zaWdu ZWQgbG9uZ3xsb25nIHVuc2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExOVxyCi0gXFsw LTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4g Zm9vOjpvdmVybG9hZDFhcmdcXChmbG9hdFxcKSBhdC4qJHNyY2ZpbGU6MTIwXHIKLSBcWzAtOVxd K1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286 Om92ZXJsb2FkMWFyZ1xcKGRvdWJsZVxcKSBhdC4qJHNyY2ZpbGU6MTIxXHIKLSBcWzAtOVxdK1xb XHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92 ZXJsb2FkMWFyZ1xcKCh2b2lkfClcXCkgYXQuKiRzcmNmaWxlOjExMCIgXAotQEAgLTI5NiwxMiAr MzEwLDEyIEBAIGdkYl90ZXN0ICJpbmZvIGJyZWFrIiBcCi0gICAgICJOdW0gICAgIFR5cGVcW1x0 IFxdK0Rpc3AgRW5iIEFkZHJlc3NcW1x0IFxdK1doYXQuKgotIFxbMC05XF0rXFtcdCBcXSticmVh a3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJn XFwoZG91YmxlXFwpIGF0Liokc3JjZmlsZToxMjFccgotIFxbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo ZmxvYXRcXCkgYXQuKiRzcmNmaWxlOjEyMFxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQg ICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNp Z25lZCBsb25nXFwpIGF0Liokc3JjZmlsZToxMTlccgotLVxbMC05XF0rXFtcdCBcXSticmVha3Bv aW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwo bG9uZ1xcKSBhdC4qJHNyY2ZpbGU6MTE4XHIKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAg ICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKCh1bnNp Z25lZCBsb25nfGxvbmcgdW5zaWduZWQpKCBpbnQpP1xcKSBhdC4qJHNyY2ZpbGU6MTE5XHIKLStc WzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBcXSskaGV4XFtcdCBcXStp biBmb286Om92ZXJsb2FkMWFyZ1xcKGxvbmcoIGludCk/XFwpIGF0Liokc3JjZmlsZToxMThccgot IFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxd K2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkfHVuc2lnbmVkIGludClcXCkgYXQuKiRz cmNmaWxlOjExN1xyCi0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQg XF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXChpbnRcXCkgYXQuKiRzcmNmaWxl OjExNlxyCi0tXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhl eFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFhcmdcXCh1bnNpZ25lZCBzaG9ydFxcKSBhdC4qJHNy Y2ZpbGU6MTE1XHIKLS1cWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2VlcCB5XFtcdCBc XSskaGV4XFtcdCBcXStpbiBmb286Om92ZXJsb2FkMWFyZ1xcKHNob3J0XFwpIGF0Liokc3JjZmls ZToxMTRccgotK1xbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRo ZXhcW1x0IFxdK2luIGZvbzo6b3ZlcmxvYWQxYXJnXFwoKHVuc2lnbmVkIHNob3J0fHNob3J0IHVu c2lnbmVkKSggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNVxyCi0rXFswLTlcXStcW1x0IFxdK2Jy ZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9hZDFh cmdcXChzaG9ydCggaW50KT9cXCkgYXQuKiRzcmNmaWxlOjExNFxyCi0gXFswLTlcXStcW1x0IFxd K2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpvdmVybG9h ZDFhcmdcXCh1bnNpZ25lZCBjaGFyXFwpIGF0Liokc3JjZmlsZToxMTNccgotIFxbMC05XF0rXFtc dCBcXSticmVha3BvaW50ICAgICBrZWVwIHlcW1x0IFxdKyRoZXhcW1x0IFxdK2luIGZvbzo6b3Zl cmxvYWQxYXJnXFwoc2lnbmVkIGNoYXJcXCkgYXQuKiRzcmNmaWxlOjExMlxyCi0gXFswLTlcXStc W1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeVxbXHQgXF0rJGhleFxbXHQgXF0raW4gZm9vOjpv dmVybG9hZDFhcmdcXChjaGFyXFwpIGF0Liokc3JjZmlsZToxMTFccgotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3No YWRvd2luZy5jYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjZkOWMyZjEK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5jYwot QEAgLTAsMCArMSw0OCBAQAotK25hbWVzcGFjZSBBCi0rewotKyAgaW50IHggPSAxMTsKLSt9Ci0r Ci0raW50IHggPSAyMjsKLStpbnQgeSA9IDA7Ci0rCi0rY2xhc3MgQgotK3sKLStwdWJsaWM6Ci0r ICBpbnQgeDsKLSsKLSsgIGludAotKyAgZnVuYygpCi0rICB7Ci0rICAgIHggPSAzMzsKLSsgICAg eSs9eDsgLy8gbWFya2VyMQotKwotKyAgICAgIHsKLSsgICAgICAgIGludCB4ID0gNDQ7Ci0rICAg ICAgICB5Kz14OyAvLyBtYXJrZXIyCi0rCi0rICAgICAgICAgIHsKLSsgICAgICAgICAgICBpbnQg eCA9IDU1OwotKyAgICAgICAgICAgIHkrPXg7IC8vIG1hcmtlcjMKLSsKLSsgICAgICAgICAgICAg IHsKLSsgICAgICAgICAgICAgICAgaW50IHogPSB4OyAvL3ByZXZlbnQgZ2NjIGZyb20gb3B0aW1p emluZyBhd2F5IHRoaXMgc2NvcGUKLSsgICAgICAgICAgICAgICAgdXNpbmcgbmFtZXNwYWNlIEE7 Ci0rICAgICAgICAgICAgICAgIHkrPXg7IC8vIG1hcmtlcjQKLSsKLSsgICAgICAgICAgICAgICAg dXNpbmcgQTo6eDsKLSsgICAgICAgICAgICAgICAgeSs9eDsgLy8gbWFya2VyNQotKyAgICAgICAg ICAgICAgICAKLSsgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMtPng7Ci0rICAgICAgICAgICAg ICB9Ci0rICAgICAgICAgIH0KLSsgICAgICB9Ci0rICB9Ci0rfTsKLSsKLStpbnQKLSttYWluKCkK LSt7Ci0rICBCIHRoZUI7Ci0rICByZXR1cm4gdGhlQi5mdW5jKCk7Ci0rfQotZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9zaGFkb3dpbmcuZXhwCisrZW5kIHByb2dyYW0gcmVwcm8KK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjY5MjJl ZWQKK2luZGV4IDAwMDAwMDAuLjBjY2ViZTAKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL3NoYWRvd2luZy5leHAKLUBAIC0wLDAgKzEsOTEgQEAKLSsjIENvcHlyaWdo dCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAorQEAgLTAsMCArMSwxNDUgQEAKKysjIENvcHlyaWdo dCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIworKyMgCiArIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAr IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCiArIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKKysjIAogKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90 LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5kYXRp b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0x MzA3LCBVU0EuICAKICsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0cmFj ZWxldmVsCi0rfQorKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVuIGJ5IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KICsKLStzZXQgcHJtc19pZCAwCi0rc2V0IGJ1Z19p ZCAwCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEl0IGNvbnRh aW5zIHRlc3RzIGZvciBkeW5hbWljYWxseQorKyMgYWxsb2NhdGVkIEZvcnRyYW4gYXJyYXlzLgor KyMgSXQgZGVwZW5kcyBvbiB0aGUgR0NDIGR5bmFtaWMgRm9ydHJhbiBhcnJheXMgRFdBUkYgc3Vw cG9ydDoKKysjIAlodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTIy MjQ0CiArCi0rc2V0IHRlc3RmaWxlIHNoYWRvd2luZwotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmNjCisrc2V0IHRlc3RmaWxlICJkeW5hbWljIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5 MAogK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBb Z2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0i IGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRu J3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rICAgIHJldHVybiAtMQotK30KICsKLStpZiBbZ2V0 X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlfV0gewotKyAgICByZXR1cm4gLTE7CisraWYgIHsgW2dk Yl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBl eGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKKysgICAgcmV0dXJuIC0xCiArfQogKwotKyMgR2V0 IHRoaW5ncyBzdGFydGVkLgotKwogK2dkYl9leGl0CiArZ2RiX3N0YXJ0CiArZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCiArZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotK2lmICFb cnVudG9fbWFpbl0gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9p bnQgbWFpbiIKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgogKyAgICBjb250aW51ZQogK30KICsKLSsjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGlu ZyBvZiBjbGFzcyB2YXJpYWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGdsb2JhbCB2YXJpYWJs ZQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIxIl0KLStn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyMSIKLSsKLStnZGJfdGVzdCAicHJpbnQg eCIgIj0gMzMiICJQcmludCBjbGFzcyB4IHNoYWRvd2luZyBnbG9iYWwgeCIKLSsKLSsKLSsjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgVGVzdCBwcmludGlu ZyBsb2NhbCB2YXJpYWJsZSBpcyBub3Qgc2hhZG93ZWQKLSsjIGJ5IGNsYXNzIHZhcmlhYmxlCi0r Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIm1hcmtlcjIiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJtYXJrZXIyIgotKwotK2dkYl90ZXN0ICJwcmludCB4IiAi PSA0NCIgIlByaW50IGxvY2FsIHggc2hhZG93aW5nIGNsYXNzIHgiCi0rCi0rIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgaW5uZXIgc2NvcGUgeCBp cyBwcmludGVkIG5vdCBvdXRlciBzY29wZQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJtYXJrZXIzIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2Vy MyIKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1pbml0Il0KKytn ZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeC1pbml0IgorK2dkYl90ZXN0ICJwIHZhcngi ICJcXCRcWzAtOVxdKiA9IDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFsbG9jYXRlZD4iICJw IHZhcnggdW5hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gPChvYmpl Y3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZhcnggdW5hbGxvY2F0ZWQi CisrZ2RiX3Rlc3QgInAgdmFyeCgxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRv IGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYWxs b2NhdGVkXFwuIiAicCB2YXJ4KDEsNSwxNykgdW5hbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInAgdmFy eCgxLDUsMTcpPTEiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmpl Y3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZh cngoMSw1LDE3KT0xIHVuYWxsb2NhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ4KDEsNSwxNyki ICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2Ug dGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwdHlwZSB2YXJ4KDEsNSwx NykgdW5hbGxvY2F0ZWQiCiArCi0rZ2RiX3Rlc3QgInByaW50IHgiICI9IDU1IiAiUHJpbnQgaW5u ZXIgc2NvcGUgeCIKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1h bGxvY2F0ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRlZCIK KysjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAsIDAsIDAsIDApIC0tLSAs IDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0 eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUg dmFyeCBhbGxvY2F0ZWQiCisrIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMg LTEgdGhlcmUsIEdDQyB1c2VzIDEuCisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gKFxc LlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFyeCBhbGxvY2F0ZWQiCiArCi0rIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgcHJpbnRpbmcg bG9jYWwgdmFyaWFibGUgaXMgbm90IHNoYWRvd2VkCi0rIyBieSBuYW1lc3BhY2UgdmFyaWFibGUK KytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFyeC1maWxsZWQiXQorK2dk Yl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWZpbGxlZCIKKytnZGJfdGVzdCAicCB2YXJ4 KDIsIDUsIDE3KSIgIlxcJFxbMC05XF0qID0gNiIKKytnZGJfdGVzdCAicCB2YXJ4KDEsIDUsIDE3 KSIgIlxcJFxbMC05XF0qID0gNyIKKytnZGJfdGVzdCAicCB2YXJ4KDIsIDYsIDE4KSIgIlxcJFxb MC05XF0qID0gOCIKKytnZGJfdGVzdCAicCB2YXJ4KDYsIDE1LCAyOCkiICJcXCRcWzAtOVxdKiA9 IDkiCisrIyBUaGUgbGF0dGVyIG9uZSBpcyBmb3IgdGhlIEludGVsIEZvcnRyYW4gQ29tcGlsZXIg MTAuMS4wMDggcG9pbnRlciB0eXBlLgorK2dkYl90ZXN0ICJwIHZhcnYiICJcXCRcWzAtOVxdKiA9 ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihDYW5ub3QgYWNjZXNz IGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgb2JqZWN0IGlzIG5v dCBhc3NvY2lhdGVkLikiICJwIHZhcnYgdW5hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwdHlwZSB2 YXJ2IiAidHlwZSA9ICg8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBhc3NvY2lhdGVkPnwuKihD YW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUg b2JqZWN0IGlzIG5vdCBhc3NvY2lhdGVkLikiICJwdHlwZSB2YXJ2IHVuYXNzb2NpYXRlZCIKICsK LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2VyNCJdCi0rZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgIm1hcmtlcjQiCi0rCi0rZ2RiX3Rlc3QgInByaW50IHgiICI9 IDU1IiAiUHJpbnQgbG9jYWwgeCBub3QgbmFtZXNwYWNlIHgiCi0rCi0rIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsjIFRlc3QgaW1wb3J0ZWQgbmFtZXNwYWNl IGVsZW1lbnQgaXMgcHJpbnRlZAotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVt YmVyICJtYXJrZXI1Il0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAibWFya2VyNSIKLSsK LStpZiBbdGVzdF9jb21waWxlcl9pbmZvIGdjYy00LTMtKl0gdGhlbiB7IHNldHVwX3hmYWlsICot Ki0qIH0KLSsKLStnZGJfdGVzdCAicHJpbnQgeCIgIj0gMTEiICJQcmludCBpbXBvcnRlZCBuYW1l c3BhY2UgeCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5n ZXMuUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5TCi1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZDViOWNhNQotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMKLUBAIC0wLDAgKzEsMTQwIEBA Ci0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsK LSsgICBDb3B5cmlnaHQgMjAwNCwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rLyogVGVzdCAuZGVidWdfYXJhbmdlcyBjb250YWluaW5nIHplcm8gYWRkcmVzc19zaXpl LiAgKi8KLSsKLSsvKiBEdW1teSBmdW5jdGlvbiB0byBwcm92aWRlIGRlYnVnIGluZm9ybWF0aW9u IGZvci4gICovCi0rCi0rCS50ZXh0Ci0rLkxiZWdpbl90ZXh0MToKLSsJLmdsb2JsIG1haW4KLSsJ LnR5cGUgbWFpbiwgJWZ1bmN0aW9uCi0rbWFpbjoKLSsuTGJlZ2luX21haW46Ci0rCS5pbnQgMAot Ky5MZW5kX21haW46Ci0rCS5zaXplIG1haW4sIC4tbWFpbgotKy5MZW5kX3RleHQxOgotKwotKy8q IERlYnVnIGluZm9ybWF0aW9uICovCi0rCi0rCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCi0rLkxjdTFf YmVnaW46Ci0rCS8qIENVIGhlYWRlciAqLwotKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3Rh cnQJCS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCi0rLkxjdTFfc3RhcnQ6Ci0rCS4y Ynl0ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJ CS8qIE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCi0rCS5ieXRlCTQJCQkJLyogUG9pbnRl ciBzaXplICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjog RFdfVEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuNGJ5dGUJLkxlbmRfdGV4dDEJCQkvKiBEV19BVF9o aWdoX3BjICovCi0rCS40Ynl0ZQkuTGJlZ2luX3RleHQxCQkJLyogRFdfQVRfbG93X3BjICovCi0r CS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBD IDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMQkJCQkvKiBEV19BVF9s YW5ndWFnZSAoQykgKi8KLSsKLSsJLyogbWFpbiAqLwotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2 OiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICov Ci0rCS5ieXRlCQkxCQkJLyogRFdfQVRfZGVjbF9maWxlICovCi0rCS5ieXRlCQkyCQkJLyogRFdf QVRfZGVjbF9saW5lICovCi0rCS5hc2NpaQkJIm1haW5cMCIJCS8qIERXX0FUX25hbWUgKi8KLSsJ LjRieXRlCQkuTHR5cGVfaW50LS5MY3UxX2JlZ2luCS8qIERXX0FUX3R5cGUgKi8KLSsJLjRieXRl CQkuTGJlZ2luX21haW4JLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0ZQkJLkxlbmRfbWFpbgkJ LyogRFdfQVRfaGlnaF9wYyAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2ZyYW1lX2Jhc2U6IGxl bmd0aCAqLwotKwkuYnl0ZQkJMHg1NQkJCS8qIERXX0FUX2ZyYW1lX2Jhc2U6IERXX09QX3JlZzUg Ki8KLSsKLSsuTHR5cGVfaW50OgotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBEV19UQUdfYmFz ZV90eXBlICovCi0rCS5hc2NpaQkJImludFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJ CTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLmJ5dGUJCTUJCQkvKiBEV19BVF9lbmNvZGlu ZyAqLwotKwotKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotKwotKy5M Y3UxX2VuZDoKLSsKLSsvKiBBYmJyZXYgdGFibGUgKi8KLSsJLnNlY3Rpb24gLmRlYnVnX2FiYnJl dgotKy5MYWJicmV2MV9iZWdpbjoKLSsJLnVsZWIxMjgJMQkJCS8qIEFiYnJldiBjb2RlICovCi0r CS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5ieXRlCQkxCQkJ LyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICov Ci0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOAkweDExCQkJ LyogRFdfQVRfbG93X3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwot KwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERX X0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwot KwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJ LyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAq LwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVy bWluYXRvciAqLwotKwotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIx MjgJMHgyZQkJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2No aWxkcmVuICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkudWxl YjEyOAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLnVsZWIxMjgJMHgzYQkJCS8qIERXX0FU X2RlY2xfZmlsZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51 bGViMTI4CTB4M2IJCQkvKiBEV19BVF9kZWNsX2xpbmUgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyog RFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51 bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4NDkJCQkvKiBE V19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVs ZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19G T1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVs ZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4NDAJCQkvKiBEV19B VF9mcmFtZV9iYXNlICovCi0rCS51bGViMTI4CTB4YQkJCS8qIERXX0ZPUk1fYmxvY2sxICovCi0r CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkw eDI0CQkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJl biAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJ CS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6 ZSAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4 M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2Rh dGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkv KiBUZXJtaW5hdG9yICovCi0rCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5i eXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rLyogYXJhbmdlcyB0YWJsZSAqLwotKwku c2VjdGlvbiAuZGVidWdfYXJhbmdlcwotKwkubG9uZwkuTGFyYW5nZXNfZW5kIC0gMWYKLSsxOgot KwkuMmJ5dGUJMgkJCQkvKiBhcmFuZ2VzIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MY3UxX2JlZ2lu IC0gLmRlYnVnX2luZm8JLyogT2Zmc2V0IGludG8gLmRlYnVnX2luZm8gc2VjdGlvbiAqLwotKwkv KiBUaGUgR0RCIGNyYXNoZXIgaXMgdGhpcyB6ZXJvIHZhbHVlLiAgKi8KLSsJLmJ5dGUJCTAJCQkv KiBhcmFuZ2VzIGFkZHJlc3Nfc2l6ZSAqLwotKwkuYnl0ZQkJMAkJCS8qIGFyYW5nZXMgc2VnbWVu dF9zaXplICovCi0rCi0rLkxhcmFuZ2VzX2VuZDoKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWFyYW5nZXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3 Mi1hcmFuZ2VzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjM5NjMy ZDUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJh bmdlcy5leHAKLUBAIC0wLDAgKzEsNDAgQEAKLSsjIENvcHlyaWdodCAyMDA0LCAyMDA1LCAyMDA3 LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3QgLmRlYnVnX2FyYW5nZXMgY29udGFpbmlu ZyB6ZXJvIGFkZHJlc3Nfc2l6ZS4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24g dGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBp Y2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGlu dXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICot Ki1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3Rh cmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7 Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJkdzItYXJhbmdlcyIKLStz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGly fS8ke3Rlc3RmaWxlfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7bm9kZWJ1Z31dICE9ICIiIH0g ewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkdGVzdGZpbGUKLSsKLSsj IEZhaWxlZCBnZGJfbG9hZCB3b3VsZCBhYm9ydCB0aGUgdGVzdGNhc2UgZXhlY3V0aW9uIGVhcmxp ZXIuCi0rcGFzcyAiZmlsZSBsb2FkZWQiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJp cHBlZC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWYwMmQ5MAotLS0t IC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5j Ci1AQCAtMCwwICsxLDQyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIAotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0 aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEt MTMwNywKLSsgICBVU0EuICAqLwotKwotKwotKy8qIFRoZSBmdW5jdGlvbiBgZnVuYzEnIHRyYWNl ZCBpbnRvIG11c3QgaGF2ZSBkZWJ1ZyBpbmZvIG9uIG9mZnNldCA+IDA7Ci0rICAgKERXX1VOU05E IChhdHRyKSkuICBUaGlzIGlzIHRoZSByZWFzb24gb2YgYGZ1bmMwJyBleGlzdGVuY2UuICAqLwot KwotK3ZvaWQKLStmdW5jMChpbnQgYSwgaW50IGIpCi0rewotK30KLSsKLSsvKiBgZnVuYzEnIGJl aW5nIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBzb21lIGFyZ3VtZW50cyB0byBkdW1wLiAgKi8KLSsK LSt2b2lkCi0rZnVuYzEoaW50IGEsIGludCBiKQotK3sKLSsgIGZ1bmMwIChhLGIpOwotK30KLSsK LStpbnQKLSttYWluKHZvaWQpCi0rewotKyAgZnVuYzEgKDEsIDIpOwotKyAgcmV0dXJuIDA7Ci0r fQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xYzZlODRhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmV4cAotQEAgLTAsMCArMSw3OSBA QAotKyMgQ29weXJpZ2h0IDIwMDYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMg Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUg dG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFj ZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rCi0rIyBNaW5pbWFs IERXQVJGLTIgdW5pdCB0ZXN0Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRh cmdldHMgd2hpY2ggc3VwcG9ydCBEV0FSRi0yLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcg b2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYg IVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAg JiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFi aSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4g MCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLXN0cmlwcGVkIgotK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 LngKLSsKLStyZW1vdGVfZXhlYyBidWlsZCAicm0gLWYgJHtiaW5maWxlfSIKLSsKLSsjIGdldCB0 aGUgdmFsdWUgb2YgZ2NjX2NvbXBpbGVkCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmls ZX1dIHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgVGhpcyB0ZXN0IGNhbiBvbmx5IGJlIHJ1 biBvbiBnY2MgYXMgd2UgdXNlIGFkZGl0aW9uYWxfZmxhZ3M9RklYTUUKLStpZiB7JGdjY19jb21w aWxlZCA9PSAwfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgYWRkaXRpb25hbF9mbGFncz0tZ2dkYjN9XSAhPSAiIiB9IHsKLSsgICAgcmV0dXJuIC0x Ci0rfQotKwotK3JlbW90ZV9leGVjIGJ1aWxkICJvYmpjb3B5IC1SIC5kZWJ1Z19sb2MgJHtiaW5m aWxlfSIKLStzZXQgc3RyaXBfb3V0cHV0IFtyZW1vdGVfZXhlYyBidWlsZCAib2JqZHVtcCAtaCAk e2JpbmZpbGV9Il0KLSsKLStzZXQgdGVzdCAic3RyaXBwaW5nIHRlc3QgZmlsZSBwcmVzZXJ2YXRp b24iCi0raWYgWyByZWdleHAgIi5kZWJ1Z19pbmZvICIgJHN0cmlwX291dHB1dF0gIHsKLSsgICAg cGFzcyAiJHRlc3QgKC5kZWJ1Z19pbmZvIHByZXNlcnZlZCkiCi0rfSBlbHNlIHsKLSsgICAgZmFp bCAiJHRlc3QgKC5kZWJ1Z19pbmZvIGdvdCBhbHNvIHN0cmlwcGVkKSIKLSt9Ci0rCi0rc2V0IHRl c3QgInN0cmlwcGluZyB0ZXN0IGZpbGUgZnVuY3Rpb25hbGl0eSIKLStpZiBbIHJlZ2V4cCAiLmRl YnVnX2xvYyAiICRzdHJpcF9vdXRwdXRdICB7Ci0rICAgIGZhaWwgIiR0ZXN0ICguZGVidWdfbG9j IHN0aWxsIHByZXNlbnQpIgotK30gZWxzZSB7Ci0rICAgIHBhc3MgIiR0ZXN0ICguZGVidWdfbG9j IHN0cmlwcGVkKSIKLSt9Ci0rCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rIyBGb3Ig QyBwcm9ncmFtcywgInN0YXJ0IiBzaG91bGQgc3RvcCBpbiBtYWluKCkuCi0rCi0rZ2RiX3Rlc3Qg InN0YXJ0IiBcCi0rICAgICAgICAgIi4qbWFpbiBcXChcXCkgYXQgLioiIFwKLSsgICAgICAgICAi c3RhcnQiCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICAgICAgICAiZnVuYy4qIFxcKC4qXFwpIGF0 IC4qIiBcCi0rICAgICAgICAgInN0ZXAiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZmNkZDg0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5T Ci1AQCAtMCwwICsxLDgzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICov Ci0rCi0rLyogRGVidWcgaW5mb3JtYXRpb24gKi8KLSsKLSsJLnNlY3Rpb24gLmRlYnVnX2luZm8K LSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0ZQkuTGN1MV9lbmQgLSAu TGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KLSsuTGN1MV9zdGFy dDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5dGUJLkxhYmJyZXYx X2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KLSsJLmJ5dGUJNAkJCQkv KiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGViMTI4IDEJCQkJLyog QWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5hc2NpaQkiZHcyLXN0cnVjdC1tZW1i ZXItZGF0YS1sb2NhdGlvbi5jXDAiCS8qIERXX0FUX25hbWUgKi8KLSsJLmFzY2lpCSJHTlUgQyA0 LjMuMlwwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTEJCQkJLyogRFdfQVRfbGFu Z3VhZ2UgKEMpICovCi0rCi0rLkx0eXBlX3VjaGFyOgotKwkudWxlYjEyOAkyCQkJLyogQWJicmV2 OiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSsJLmFzY2lpCQkic29tZV9zdHJ1Y3RcMCIJCS8q IERXX0FUX25hbWUgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX21lbWJl ciAqLwotKwkuYXNjaWkJCSJmaWVsZFwwIgkJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkJMAkJ CS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5k IG9mIGNoaWxkcmVuIG9mIHNvbWVfc3RydWN0ICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9m IGNoaWxkcmVuIG9mIENVICovCi0rCi0rLkxjdTFfZW5kOgotKwotKy8qIEFiYnJldiB0YWJsZSAq LwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgotKwkudWxlYjEy OAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21w aWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJ MHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJ MHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0FUX2xh bmd1YWdlICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJ CTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsKLSsJLnVsZWIxMjgJMgkJCS8qIEFiYnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MTMJCQkv KiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4g Ki8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkv KiBEV19GT1JNX3N0cmluZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwku Ynl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2 IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgwZAkJCS8qIERXX1RBR19tZW1iZXIgKi8KLSsJLmJ5dGUJ CTAJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAq LwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDM4 CQkJLyogRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHgwYgkJCS8q IERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0 b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5leHAg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlv bi5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5jNDExNTFjCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1i ZXItZGF0YS1sb2NhdGlvbi5leHAKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGlj aCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGlu ZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1l YWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVy biAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJkdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0 aW9uIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LlMKLStzZXQgYmluZmlsZSAke3Rlc3RmaWxl fS54Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmls ZX0iICIke29iamRpcn0vJHtzdWJkaXJ9LyR7YmluZmlsZX0iIG9iamVjdCB7bm9kZWJ1Z31dICE9 ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkYmluZmlsZQot KwotK2dkYl90ZXN0ICJwdHlwZSBzdHJ1Y3Qgc29tZV9zdHJ1Y3QiICJ0eXBlID0gc3RydWN0IHNv bWVfc3RydWN0IHtcW1xyXG4gXHRcXSp2b2lkIGZpZWxkO1xbXHJcbiBcdFxdKn0iCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uODg4ZjZjMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCi1AQCAtMCwwICsxLDEwMSBAQAotKyMg Q29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFRoaXMgZmlsZSB3 YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4u Ci0rCi0rc2V0IHRlc3RmaWxlICJjb21tb24tYmxvY2siCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uZjkwCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQotKwot K2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHti aW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7Ci0rICAgIHVu dGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30K LSsKLStnZGJfZXhpdAotK2dkYl9zdGFydAotK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIv JHN1YmRpcgotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLStpZiAhW3J1bnRvIE1BSU5fX10gdGhl biB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgotKyAg ICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi c3RvcC1oZXJlLW91dCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0b3AtaGVyZS1v dXQiCi0rCi0rIyBDb21tb24gYmxvY2sgbmFtaW5nIHdpdGggc291cmNlIG5hbWUgL2Zvby86Ci0r IyAgICAgICAgICAgICAgICAuc3ltdGFiICBEV19UQUdfY29tbW9uX2Jsb2NrJ3MgRFdfQVRfbmFt ZQotKyMgSW50ZWwgRm9ydHJhbiAgZm9vXyAgICAgZm9vXwotKyMgR05VIEZvcnRyYW4gICAgZm9v XyAgICAgZm9vCi0rI3NldCBzdWZmaXggIl8iCi0rc2V0IHN1ZmZpeCAiIgotKwotK3NldCBpbnQ0 IHsoaW50ZWdlclwoa2luZD00XCl8SU5URUdFUlwoNFwpKX0KLStzZXQgcmVhbDQgeyhyZWFsXChr aW5kPTRcKXxSRUFMXCg0XCkpfQotK3NldCByZWFsOCB7KHJlYWxcKGtpbmQ9OFwpfFJFQUxcKDhc KSl9Ci0rCi0rZ2RiX3Rlc3QgIndoYXRpcyBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1 ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCi0rZ2RiX3Rlc3QgInB0eXBlIGZvbyRzdWZmaXgi ICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVz dCAicCBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29u dGV4dC4iCi0rZ2RiX3Rlc3QgIndoYXRpcyBmb19vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvX28k c3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIKLStnZGJfdGVzdCAicHR5cGUgZm9fbyRzdWZm aXgiICJObyBzeW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCi0rZ2Ri X3Rlc3QgInAgZm9fbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1cnJl bnQgY29udGV4dC4iCi0rCi0rZ2RiX3Rlc3QgImluZm8gbG9jYWxzIiAiaXhfeCA9IDExXHJcbml5 X3kgPSAyMlxyXG5pel96ID0gMzNcclxuaXggPSAxXHJcbml5ID0gMlxyXG5peiA9IDMiICJpbmZv IGxvY2FscyBvdXQiCi0rZ2RiX3Rlc3QgImluZm8gY29tbW9uIiAiQ29udGVudHMgb2YgRjc3IENP TU1PTiBibG9jayAnZm9fbyc6XHJcbml4X3ggPSAxMVxyXG5peV95ID0gMjJcclxuaXpfeiA9IDMz XHJcblxyXG5Db250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb28nOlxyXG5peCA9IDFcclxu aXkgPSAyXHJcbml6ID0gMyIgImluZm8gY29tbW9uIG91dCIKLSsKLStnZGJfdGVzdCAicHR5cGUg aXgiICJ0eXBlID0gJGludDQiICJwdHlwZSBpeCBvdXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGl5IiAi dHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5IG91dCIKLStnZGJfdGVzdCAicHR5cGUgaXoiICJ0eXBl ID0gJHJlYWw4IiAicHR5cGUgaXogb3V0IgotK2dkYl90ZXN0ICJwdHlwZSBpeF94IiAidHlwZSA9 ICRpbnQ0IiAicHR5cGUgaXhfeCBvdXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGl5X3kiICJ0eXBlID0g JHJlYWw0IiAicHR5cGUgaXlfeSBvdXQiCi0rZ2RiX3Rlc3QgInB0eXBlIGl6X3oiICJ0eXBlID0g JHJlYWw4IiAicHR5cGUgaXpfeiBvdXQiCi0rCi0rZ2RiX3Rlc3QgInAgaXgiICIgPSAxICoiICJw IGl4IG91dCIKLStnZGJfdGVzdCAicCBpeSIgIiA9IDIgKiIgInAgaXkgb3V0IgotK2dkYl90ZXN0 ICJwIGl6IiAiID0gMyAqIiAicCBpeiBvdXQiCi0rZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDExICoi ICJwIGl4X3ggb3V0IgotK2dkYl90ZXN0ICJwIGl5X3kiICIgPSAyMiAqIiAicCBpeV95IG91dCIK LStnZGJfdGVzdCAicCBpel96IiAiID0gMzMgKiIgInAgaXpfeiBvdXQiCi0rCi0rZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInN0b3AtaGVyZS1pbiJdCi0rZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInN0b3AtaGVyZS1pbiIKLSsKLStnZGJfdGVzdCAid2hhdGlzIGZvbyRz dWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgIndo YXRpcyBmb28kc3VmZml4IGluIgotK2dkYl90ZXN0ICJwdHlwZSBmb28kc3VmZml4IiAiTm8gc3lt Ym9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iICJwdHlwZSBmb28kc3VmZml4 IGluIgotK2dkYl90ZXN0ICJwIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIg aW4gY3VycmVudCBjb250ZXh0LiIgInAgZm9vJHN1ZmZpeCBpbiIKLStnZGJfdGVzdCAid2hhdGlz IGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRl eHQuIiAid2hhdGlzIGZvX28kc3VmZml4IGluIgotK2dkYl90ZXN0ICJwdHlwZSBmb19vJHN1ZmZp eCIgIk5vIHN5bWJvbCBcImZvX28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgInB0eXBl IGZvX28kc3VmZml4IGluIgotK2dkYl90ZXN0ICJwIGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwi Zm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAicCBmb19vJHN1ZmZpeCBpbiIKLSsK LStnZGJfdGVzdCAiaW5mbyBsb2NhbHMiICJpeCA9IDExXHJcbml5MiA9IDIyXHJcbml6ID0gMzNc clxuaXhfeCA9IDFcclxuaXlfeSA9IDJcclxuaXpfejIgPSAzXHJcbml5ID0gNVxyXG5pel96ID0g NTUiICJpbmZvIGxvY2FscyBpbiIKLStnZGJfdGVzdCAiaW5mbyBjb21tb24iICJDb250ZW50cyBv ZiBGNzcgQ09NTU9OIGJsb2NrICdmb19vJzpcclxuaXggPSAxMVxyXG5peTIgPSAyMlxyXG5peiA9 IDMzXHJcblxyXG5Db250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb28nOlxyXG5peF94ID0g MVxyXG5peV95ID0gMlxyXG5pel96MiA9IDMiICJpbmZvIGNvbW1vbiBpbiIKLSsKLStnZGJfdGVz dCAicHR5cGUgaXgiICJ0eXBlID0gJGludDQiICJwdHlwZSBpeCBpbiIKLStnZGJfdGVzdCAicHR5 cGUgaXkyIiAidHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5MiBpbiIKLStnZGJfdGVzdCAicHR5cGUg aXoiICJ0eXBlID0gJHJlYWw4IiAicHR5cGUgaXogaW4iCi0rZ2RiX3Rlc3QgInB0eXBlIGl4X3gi ICJ0eXBlID0gJGludDQiICJwdHlwZSBpeF94IGluIgotK2dkYl90ZXN0ICJwdHlwZSBpeV95IiAi dHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5X3kgaW4iCi0rZ2RiX3Rlc3QgInB0eXBlIGl6X3oyIiAi dHlwZSA9ICRyZWFsOCIgInB0eXBlIGl6X3oyIGluIgotKwotK2dkYl90ZXN0ICJwIGl4IiAiID0g MTEgKiIgInAgaXggaW4iCi0rZ2RiX3Rlc3QgInAgaXkyIiAiID0gMjIgKiIgInAgaXkyIGluIgot K2dkYl90ZXN0ICJwIGl6IiAiID0gMzMgKiIgInAgaXogaW4iCi0rZ2RiX3Rlc3QgInAgaXhfeCIg IiA9IDEgKiIgInAgaXhfeCBpbiIKLStnZGJfdGVzdCAicCBpeV95IiAiID0gMiAqIiAicCBpeV95 IGluIgotK2dkYl90ZXN0ICJwIGl6X3oyIiAiID0gMyAqIiAicCBpel96MiBpbiIKLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0 Ci1pbmRleCAwMDAwMDAwLi5iNjE0ZThhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAKLUBAIC0wLDAgKzEsNjcgQEAKLSshIENv cHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgSWhpcyBmaWxlIGlzIHRo ZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KLSshIE9yaWdpbmFsIGZpbGUg d3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KLSshIE1vZGlmaWVk IGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEBy ZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGluCi0rCi0rICAgSU5URUdFUio0ICAgICAgICAg ICAgaXgKLSsgICBSRUFMKjQgICAgICAgICAgICAgICBpeTIKLSsgICBSRUFMKjggICAgICAgICAg ICAgICBpegotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFMKjQgICAg ICAgICAgICAgICBpeV95Ci0rICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfejIKLSsKLSsgICBj b21tb24gL2ZvX28vaXgsaXkyLGl6Ci0rICAgY29tbW9uIC9mb28vaXhfeCxpeV95LGl6X3oyCi0r Ci0rICAgaXkgPSA1Ci0rICAgaXpfeiA9IDU1Ci0rCi0rICAgaWYgKGl4IC5uZS4gMTEgLm9yLiBp eTIgLm5lLiAyMi4wIC5vci4gaXogLm5lLiAzMy4wKSBjYWxsIGFib3J0Ci0rICAgaWYgKGl4X3gg Lm5lLiAxIC5vci4gaXlfeSAubmUuIDIuMCAub3IuIGl6X3oyIC5uZS4gMy4wKSBjYWxsIGFib3J0 Ci0rCi0rICAgaXggPSAwCQkJCQkhIHN0b3AtaGVyZS1pbgotKwotK2VuZCBzdWJyb3V0aW5lIGlu Ci0rCi0rcHJvZ3JhbSBjb21tb25fdGVzdAotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4 Ci0rICAgUkVBTCo0ICAgICAgICAgICAgICAgaXkKLSsgICBSRUFMKjggICAgICAgICAgICAgICBp egotKwotKyAgIElOVEVHRVIqNCAgICAgICAgICAgIGl4X3gKLSsgICBSRUFMKjQgICAgICAgICAg ICAgICBpeV95Ci0rICAgUkVBTCo4ICAgICAgICAgICAgICAgaXpfegotKwotKyAgIGNvbW1vbiAv Zm9vL2l4LGl5LGl6Ci0rICAgY29tbW9uIC9mb19vL2l4X3gsaXlfeSxpel96Ci0rCi0rICAgaXgg PSAxCi0rICAgaXkgPSAyLjAKLSsgICBpeiA9IDMuMAotKwotKyAgIGl4X3ggPSAxMQotKyAgIGl5 X3kgPSAyMi4wCi0rICAgaXpfeiA9IDMzLjAKLSsKLSsgICBjYWxsIGluCQkJCQkhIHN0b3AtaGVy ZS1vdXQKLSsKLStlbmQgcHJvZ3JhbSBjb21tb25fdGVzdAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHdhcmYtc3RyaWRlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLmNkMzQ4NmIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZHdhcmYtc3RyaWRlLmV4cAotQEAgLTAsMCArMSw0MiBAQAotKyMgQ29weXJpZ2h0IDIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK LSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rIyBUaGlzIGZp bGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0ZS4gIEFycmF5IGVsZW1lbnQgc3RyaWRlIG11 c3Qgbm90IGJlCi0rIyBzcGVjaWZpZWQgaW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBidXQgaW4g YSBudW1iZXIgb2YgYnl0ZXMgaW5zdGVhZC4KLSsjIE9yaWdpbmFsIHByb2JsZW06Ci0rIyAoZ2Ri KSBwIGM0MHB0KDEpCi0rIyAkMSA9ICcwLWhlbGxvJywgJyAnIDxyZXBlYXRzIDMzIHRpbWVzPgot KyMgKGdkYikgcCBjNDBwdCgyKQotKyMgd2FybmluZzogRm9ydHJhbiBhcnJheSBzdHJpZGUgbm90 IGRpdmlzaWJsZSBieSB0aGUgZWxlbWVudCBzaXplCi0rCi0rc2V0IHRlc3RmaWxlIGR3YXJmLXN0 cmlkZQotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAotKwotK2lmIHsgW3ByZXBhcmVfZm9y X3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2RlYnVnIGY3 N31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4g ewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKLSsgICAg Y29udGludWUKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJy ZWFrLWhlcmUiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAiLipi cmVhay1oZXJlLioiCi0rZ2RiX3Rlc3QgInAgYzQwcHQoMSkiICIgPSAnMC1oZWxsby4qIgotK2dk Yl90ZXN0ICJwIGM0MHB0KDIpIiAiID0gJzEtaGVsbG8uKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R3YXJmLXN0cmlkZS5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi5lNDkyYjNhCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R3YXJmLXN0cmlkZS5mOTAKLUBAIC0wLDAgKzEsNDAgQEAKLSshIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK LSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9u LCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQotKyEgRmlsZSB3cml0dGVuIGJ5IEFsYW4gTWF0c3Vv a2EuCi0rCi0rcHJvZ3JhbSByZXBybwotKwotKyAgdHlwZSBzbWFsbF9zdHJpZGUKLSsgICAgIGNo YXJhY3Rlcio0MCBsb25nX3N0cmluZwotKyAgICAgaW50ZWdlciAgICAgIHNtYWxsX3BhZAotKyAg ZW5kIHR5cGUgc21hbGxfc3RyaWRlCi0rCi0rICB0eXBlKHNtYWxsX3N0cmlkZSksIGRpbWVuc2lv biAoMjApLCB0YXJnZXQgOjogdW5wbGVhc2FudAotKyAgY2hhcmFjdGVyKjQwLCBwb2ludGVyLCBk aW1lbnNpb24oOik6OiBjNDBwdAotKwotKyAgaW50ZWdlciBpCi0rCi0rICBkbyBpID0gMCwxOQot KyAgICAgdW5wbGVhc2FudChpKzEpJXNtYWxsX3BhZCA9IGkrMQotKyAgICAgdW5wbGVhc2FudChp KzEpJWxvbmdfc3RyaW5nID0gY2hhciAoaWNoYXIoJzAnKSArIGkpIC8vICctaGVsbG8nCi0rICBl bmQgZG8KLSsKLSsgIGM0MHB0ID0+IHVucGxlYXNhbnQlbG9uZ19zdHJpbmcKLSsKLSsgIHByaW50 ICosIGM0MHB0ICAhIGJyZWFrLWhlcmUKLSsKLStlbmQgcHJvZ3JhbSByZXBybwotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uMGNjZWJlMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9keW5hbWljLmV4cAotQEAgLTAsMCArMSwxNDUgQEAKLSsjIENvcHlyaWdodCAyMDA3IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAy IG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsjIAotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0r IyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3Rvbiwg TUEgMDIxMTEtMTMwNywgVVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFu IEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotKyMgVGhpcyBmaWxl IGlzIHBhcnQgb2YgdGhlIGdkYiB0ZXN0c3VpdGUuICBJdCBjb250YWlucyB0ZXN0cyBmb3IgZHlu YW1pY2FsbHkKLSsjIGFsbG9jYXRlZCBGb3J0cmFuIGFycmF5cy4KLSsjIEl0IGRlcGVuZHMgb24g dGhlIEdDQyBkeW5hbWljIEZvcnRyYW4gYXJyYXlzIERXQVJGIHN1cHBvcnQ6Ci0rIyAJaHR0cDov L2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMjI0NAotKwotK3NldCB0ZXN0 ZmlsZSAiZHluYW1pYyIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmls ZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNv bXBpbGUgJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2Ri X3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQg JHtiaW5maWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwot K2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ4LWluaXQiXQotK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWluaXQiCi0rZ2RiX3Rlc3QgInAgdmFyeCIgIlxc JFxbMC05XF0qID0gPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFy eCB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0 aGUgYXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWQ+IiAicHR5cGUgdmFyeCB1bmFsbG9jYXRlZCIKLStn ZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNj ZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0 ZWRcXC4iICJwIHZhcngoMSw1LDE3KSB1bmFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCB2YXJ4KDEs NSwxNyk9MSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkg YmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInAgdmFyeCgx LDUsMTcpPTEgdW5hbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngoMSw1LDE3KSIgIihD YW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3MgdGhlIG9iamVjdCkgYmVjYXVzZSB0aGUg KG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxcLiIgInB0eXBlIHZhcngoMSw1LDE3KSB1 bmFsbG9jYXRlZCIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFy eC1hbGxvY2F0ZWQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWFsbG9jYXRl ZCIKLSsjICQxID0gKCggKCAwLCAwLCAwLCAwLCAwLCAwKSAoIDAsIDAsIDAsIDAsIDAsIDApIC0t LSAsIDApICkgKCAoIDAsIDAsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcngi ICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5 cGUgdmFyeCBhbGxvY2F0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVz ZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0g KFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFyeCBhbGxvY2F0ZWQiCi0rCi0rZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtZmlsbGVkIl0KLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidmFyeC1maWxsZWQiCi0rZ2RiX3Rlc3QgInAgdmFyeCgyLCA1 LCAxNykiICJcXCRcWzAtOVxdKiA9IDYiCi0rZ2RiX3Rlc3QgInAgdmFyeCgxLCA1LCAxNykiICJc XCRcWzAtOVxdKiA9IDciCi0rZ2RiX3Rlc3QgInAgdmFyeCgyLCA2LCAxOCkiICJcXCRcWzAtOVxd KiA9IDgiCi0rZ2RiX3Rlc3QgInAgdmFyeCg2LCAxNSwgMjgpIiAiXFwkXFswLTlcXSogPSA5Igot KyMgVGhlIGxhdHRlciBvbmUgaXMgZm9yIHRoZSBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEu MDA4IHBvaW50ZXIgdHlwZS4KLStnZGJfdGVzdCAicCB2YXJ2IiAiXFwkXFswLTlcXSogPSAoPChv YmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxV bmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNz b2NpYXRlZC4pIiAicCB2YXJ2IHVuYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIg InR5cGUgPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90 IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVj dCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicHR5cGUgdmFydiB1bmFzc29jaWF0ZWQiCi0rCi0rZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnYtYXNzb2NpYXRlZCJdCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicCB2 YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIgInAgdmFyeCgzLCA3LCAxOSkgd2l0aCB2 YXJ2IGFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSkiICJcXCRcWzAtOVxd KiA9IDYiICJwIHZhcnYoMywgNywgMTkpIGFzc29jaWF0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENv bXBpbGVyIDEwLjEuMDA4IHVzZXMgLTEgdGhlcmUsIEdDQyB1c2VzIDEuCi0rZ2RiX3Rlc3QgInAg bCIgIlxcJFxbMC05XF0qID0gKFxcLlRSVUVcXC58NDI5NDk2NzI5NSkiICJwIGwgaWYgdmFydiBh c3NvY2lhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4IiAidHlwZSA9IHJlYWwoXFwoa2luZD00 XFwpfFxcKjQpIFxcKDYsNToxNSwxNzoyOFxcKSIgInB0eXBlIHZhcnggd2l0aCB2YXJ2IGFzc29j aWF0ZWQiCi0rIyBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHVzZXMgdGhlIHBvaW50 ZXIgdHlwZS4KLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoUFRSIFRPIC0+IFxcKCAp P3JlYWwoXFwoa2luZD00XFwpfFxcKjQpIFxcKDYsNToxNSwxNzoyOFxcKVxcKT8iICJwdHlwZSB2 YXJ2IGFzc29jaWF0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg InZhcnYtZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydi1maWxsZWQi Ci0rZ2RiX3Rlc3QgInAgdmFyeCgzLCA3LCAxOSkiICJcXCRcWzAtOVxdKiA9IDEwIiAicCB2YXJ4 KDMsIDcsIDE5KSB3aXRoIHZhcnYgZmlsbGVkIgotK2dkYl90ZXN0ICJwIHZhcnYoMywgNywgMTkp IiAiXFwkXFswLTlcXSogPSAxMCIgInAgdmFydigzLCA3LCAxOSkgZmlsbGVkIgotKwotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ2LWRlYXNzb2NpYXRlZCJdCi0rZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtZGVhc3NvY2lhdGVkIgotKyMgVGhlIGxhdHRl ciBvbmUgaXMgZm9yIHRoZSBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIg dHlwZS4KLStnZGJfdGVzdCAicCB2YXJ2IiAiXFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFy cmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNj ZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAi cCB2YXJ2IGRlYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChv YmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxV bmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNz b2NpYXRlZC4pIiAicHR5cGUgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2RiX3Rlc3QgInAgbCIgIlxc JFxbMC05XF0qID0gXFwuRkFMU0VcXC4iICJwIGwgaWYgdmFydiBkZWFzc29jaWF0ZWQiCi0rZ2Ri X3Rlc3QgInAgdmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2Vz cyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRl ZFxcLiIKLStnZGJfdGVzdCAicHR5cGUgdmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8 VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBp cyBub3QgYXNzb2NpYXRlZFxcLiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFyeC1kZWFsbG9jYXRlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZh cngtZGVhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInAgdmFyeCIgIlxcJFxbMC05XF0qID0gPChvYmpl Y3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInAgdmFyeCBkZWFsbG9jYXRlZCIKLStn ZGJfdGVzdCAicHR5cGUgdmFyeCIgInR5cGUgPSA8KG9iamVjdHx0aGUgYXJyYXkpIGlzIG5vdCBh bGxvY2F0ZWQ+IiAicHR5cGUgdmFyeCBkZWFsbG9jYXRlZCIKLStnZGJfdGVzdCAicCBsIiAiXFwk XFswLTlcXSogPSBcXC5GQUxTRVxcLiIgInAgbCBpZiB2YXJ4IGRlYWxsb2NhdGVkIgotK2dkYl90 ZXN0ICJwIHZhcngoMSw1LDE3KSIgIihDYW5ub3QgYWNjZXNzIGl0fFVuYWJsZSB0byBhY2Nlc3Mg dGhlIG9iamVjdCkgYmVjYXVzZSB0aGUgKG9iamVjdHxhcnJheSkgaXMgbm90IGFsbG9jYXRlZFxc LiIgInAgdmFyeCgxLDUsMTcpIGRlYWxsb2NhdGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ4KDEs NSwxNykiICIoQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJl Y2F1c2UgdGhlIChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwdHlwZSB2YXJ4 KDEsNSwxNykgZGVhbGxvY2F0ZWQiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInZhcnktcGFzc2VkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyeS1w YXNzZWQiCi0rIyAkMSA9ICgoICggMSwgMSwgMSwgMSwgMSwgMSkgKCAxLCAxLCAxLCAxLCAxLCAx KSAtLS0gLCAxKSApICggKCAxLCAxLCAuLi4pIC4uLikgLi4uKQotK2dkYl90ZXN0ICJwIHZhcnki ICJcXCRcWzAtOVxdKiA9IFxcKFxbKCkxLCAuXF0qXFwpIgotKwotK2dkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ5LWZpbGxlZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFr cG9pbnQgInZhcnktZmlsbGVkIgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ5IiAidHlwZSA9IHJlYWwo XFwoa2luZD00XFwpfFxcKjQpIFxcKDEwLDEwXFwpIgotK2dkYl90ZXN0ICJwIHZhcnkoMSwgMSki ICJcXCRcWzAtOVxdKiA9IDgiCi0rZ2RiX3Rlc3QgInAgdmFyeSgyLCAyKSIgIlxcJFxbMC05XF0q ID0gOSIKLStnZGJfdGVzdCAicCB2YXJ5KDEsIDMpIiAiXFwkXFswLTlcXSogPSAxMCIKLSsjICQx ID0gKCggKCAzLCAzLCAzLCAzLCAzLCAzKSAoIDMsIDMsIDMsIDMsIDMsIDMpIC0tLSAsIDMpICkg KCAoIDMsIDMsIC4uLikgLi4uKSAuLi4pCi0rZ2RiX3Rlc3QgInAgdmFydyIgIlxcJFxbMC05XF0q ID0gXFwoXFsoKTMsIC5cXSpcXCkiCi0rCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgInZhcnctYWxtb3N0ZmlsbGVkIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi dmFydy1hbG1vc3RmaWxsZWQiCi0rZ2RiX3Rlc3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChc XChraW5kPTRcXCl8XFwqNCkgXFwoNSw0LDNcXCkiCi0rZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9 MSIgIlxcJFxbMC05XF0qID0gMSIKLSsjICQxID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUs IDUsIDUsIDUsIDUsIDUpIC0tLSAsIDUpICkgKCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCi0rZ2Ri X3Rlc3QgInAgdmFydyIgIlxcJFxbMC05XF0qID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxb KCk1LCAuXF0qXFwpIiAicCB2YXJ3IGZpbGxlZCIKLSsjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0 IG90aGVyIEZvcnRyYW4gY29tcGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKLSsj IG91dGVyIGZ1bmN0aW9uIG9ubHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgot KyMgV2UgbmVlZCBib3RoIHZhcmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRp b25hbGx5IG1heSBzdGlsbCBiZQotKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3Qg YWZ0ZXIgYGZpbmlzaCcuCi0rZ2RiX3Rlc3QgImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhc XCl8Y2FsbCBmb28gXFwoeCwgelxcKDI6NiwgNDo3LCA2OjhcXClcXCkpIgotK2dkYl90ZXN0ICJw IHooMiw0LDUpIiAiXFwkXFswLTlcXSogPSAzIgotK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwk XFswLTlcXSogPSA2IgotK2dkYl90ZXN0ICJwIHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1Igot K2dkYl90ZXN0ICJwIHooNCw0LDYpIiAiXFwkXFswLTlcXSogPSAxIgotKwotK2dkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ6LWFsbW9zdGZpbGxlZCJdCi0rZ2RiX2NvbnRp bnVlX3RvX2JyZWFrcG9pbnQgInZhcnotYWxtb3N0ZmlsbGVkIgotKyMgR0NDIHVzZXMgdGhlIHBv aW50ZXIgdHlwZSBoZXJlLCBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IGRvZXMgbm90 LgotK2dkYl90ZXN0ICJwdHlwZSB2YXJ6IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChc XChraW5kPTRcXCl8XFwqNCkgXFwoXFwqXFwpXFwpPyIKLSsjIEludGVsIEZvcnRyYW4gQ29tcGls ZXIgMTAuMS4wMDggaGFzIGEgYnVnIGhlcmUgLSAoMjoxMSw3OjcpCi0rIyBhcyBpdCBwcm9kdWNl cyBEV19BVF9sb3dlcl9ib3VuZCA9PSBEV19BVF91cHBlcl9ib3VuZCA9PSA3LgotK2dkYl90ZXN0 ICJwdHlwZSB2YXJ0IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRcXCl8 XFwqNCkgXFwoMjoxMSw3OlxcKlxcKVxcKT8iCi0rZ2RiX3Rlc3QgInAgdmFyeiIgIlxcJFxbMC05 XF0qID0gXFwoXFwpIgotK2dkYl90ZXN0ICJwIHZhcnQiICJcXCRcWzAtOVxdKiA9IFxcKFxcKSIK LStnZGJfdGVzdCAicCB2YXJ6KDMpIiAiXFwkXFswLTlcXSogPSA0IgotKyMgbWFwcyB0byBmb286 OnZhcnkoMSwxKQotK2dkYl90ZXN0ICJwIHZhcnQoMiw3KSIgIlxcJFxbMC05XF0qID0gOCIKLSsj IG1hcHMgdG8gZm9vOjp2YXJ5KDIsMikKLStnZGJfdGVzdCAicCB2YXJ0KDMsOCkiICJcXCRcWzAt OVxdKiA9IDkiCi0rIyBtYXBzIHRvIGZvbzo6dmFyeSgxLDMpCi0rZ2RiX3Rlc3QgInAgdmFydCgy LDkpIiAiXFwkXFswLTlcXSogPSAxMCIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5 MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjBmNDM1NjQKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAKLUBAIC0w LDAgKzEsOTggQEAKLSshIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsh IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIQotKyEgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rISBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSshCi0rISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0rIQot KyEgSWhpcyBmaWxlIGlzIHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4K LSshIE9yaWdpbmFsIGZpbGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQu Y29tPi4KLSshIE1vZGlmaWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2Nodmls IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KLSsKLStzdWJyb3V0aW5lIGJhegotKyAgcmVh bCwgdGFyZ2V0LCBhbGxvY2F0YWJsZSA6OiB2YXJ4ICg6LCA6LCA6KQotKyAgcmVhbCwgcG9pbnRl ciA6OiB2YXJ2ICg6LCA6LCA6KQotKyAgcmVhbCwgdGFyZ2V0IDo6IHZhcnUgKDEsIDIsIDMpCi0r ICBsb2dpY2FsIDo6IGwKLSsgIGFsbG9jYXRlICh2YXJ4ICgxOjYsIDU6MTUsIDE3OjI4KSkgICAg ICAgICAgICAhIHZhcngtaW5pdAotKyAgbCA9IGFsbG9jYXRlZCAodmFyeCkKLSsgIHZhcngoOiwg OiwgOikgPSA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcngtYWxsb2NhdGVkCi0r ICB2YXJ4KDEsIDUsIDE3KSA9IDcKLSsgIHZhcngoMiwgNiwgMTgpID0gOAotKyAgdmFyeCg2LCAx NSwgMjgpID0gOQotKyAgdmFydiA9PiB2YXJ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICEgdmFyeC1maWxsZWQKLSsgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQotKyAgdmFydigzLCA3 LCAxOSkgPSAxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydi1hc3NvY2lhdGVkCi0r ICB2YXJ2ID0+IG51bGwgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWZp bGxlZAotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rICBkZWFsbG9jYXRlICh2YXJ4KSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ2LWRlYXNzb2NpYXRlZAotKyAgbCA9IGFsbG9j YXRlZCAodmFyeCkKLSsgIHZhcnUoOiwgOiwgOikgPSAxMCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAhIHZhcngtZGVhbGxvY2F0ZWQKLSsgIGFsbG9jYXRlICh2YXJ2ICgxOjYsIDU6MTUsIDE3 OjI4KSkKLSsgIGwgPSBhc3NvY2lhdGVkICh2YXJ2KQotKyAgdmFydig6LCA6LCA6KSA9IDYKLSsg IHZhcnYoMSwgNSwgMTcpID0gNwotKyAgdmFydigyLCA2LCAxOCkgPSA4Ci0rICB2YXJ2KDYsIDE1 LCAyOCkgPSA5Ci0rICBkZWFsbG9jYXRlICh2YXJ2KQotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYp Ci0rICB2YXJ2ID0+IHZhcnUKLSsgIHZhcnYoMSwgMSwgMSkgPSA2Ci0rICB2YXJ2KDEsIDIsIDMp ID0gNwotKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCi0rZW5kIHN1YnJvdXRpbmUgYmF6Ci0rc3Vi cm91dGluZSBmb28gKHZhcnksIHZhcncpCi0rICByZWFsIDo6IHZhcnkgKDosIDopCi0rICByZWFs IDo6IHZhcncgKDosIDosIDopCi0rICB2YXJ5KDosIDopID0gNCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJ5LXBhc3NlZAotKyAgdmFyeSgxLCAxKSA9IDgKLSsgIHZhcnkoMiwg MikgPSA5Ci0rICB2YXJ5KDEsIDMpID0gMTAKLSsgIHZhcncoOiwgOiwgOikgPSA1ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAhIHZhcnktZmlsbGVkCi0rICB2YXJ3KDEsIDEsIDEpID0gNgot KyAgdmFydygyLCAyLCAyKSA9IDcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFydy1h bG1vc3RmaWxsZWQKLStlbmQgc3Vicm91dGluZSBmb28KLStzdWJyb3V0aW5lIGJhciAodmFyeiwg dmFydCkKLSsgIHJlYWwgOjogdmFyeiAoKikKLSsgIHJlYWwgOjogdmFydCAoMjoxMSwgNzoqKQot KyAgdmFyeigxOjMpID0gNAotKyAgdmFyeigyKSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICEgdmFyei1hbG1vc3RmaWxsZWQKLSsgIHZhcnQoMiw3KSA9IHZhcnQoMiw3KQot K2VuZCBzdWJyb3V0aW5lIGJhcgotK3Byb2dyYW0gdGVzdAotKyAgaW50ZXJmYWNlCi0rICAgIHN1 YnJvdXRpbmUgZm9vICh2YXJ5LCB2YXJ3KQotKyAgICByZWFsIDo6IHZhcnkgKDosIDopCi0rICAg IHJlYWwgOjogdmFydyAoOiwgOiwgOikKLSsgICAgZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRl cmZhY2UKLSsgIGludGVyZmFjZQotKyAgICBzdWJyb3V0aW5lIGJhciAodmFyeiwgdmFydCkKLSsg ICAgcmVhbCA6OiB2YXJ6ICgqKQotKyAgICByZWFsIDo6IHZhcnQgKDI6MTEsIDc6KikKLSsgICAg ZW5kIHN1YnJvdXRpbmUKLSsgIGVuZCBpbnRlcmZhY2UKLSsgIHJlYWwgOjogeCAoMTAsIDEwKSwg eSAoNSksIHooOCwgOCwgOCkKLSsgIHgoOiw6KSA9IDEKLSsgIHkoOikgPSAyCi0rICB6KDosOiw6 KSA9IDMKLSsgIGNhbGwgYmF6Ci0rICBjYWxsIGZvbyAoeCwgeigyOjYsIDQ6NywgNjo4KSkKLSsg IGNhbGwgYmFyICh5LCB4KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5u ZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYgKHggKDEsIDMpIC5u ZS4gMTApIGNhbGwgYWJvcnQKLSsgIGlmICh6ICgyLCA0LCA2KSAubmUuIDYgLm9yLiB6ICgzLCA1 LCA3KSAubmUuIDcgLm9yLiB6ICgyLCA0LCA3KSAubmUuIDUpIGNhbGwgYWJvcnQKLSsgIGlmIChh bnkgKHkgLm5lLiAoLzQsIDUsIDQsIDIsIDIvKSkpIGNhbGwgYWJvcnQKLSsgIGNhbGwgZm9vICh0 cmFuc3Bvc2UgKHgpLCB6KQotKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5u ZS4gOSAub3IuIHggKDEsIDIpIC5uZS4gNCkgY2FsbCBhYm9ydAotKyAgaWYgKHggKDMsIDEpIC5u ZS4gMTApIGNhbGwgYWJvcnQKLStlbmQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2xpYnJhcnktbW9kdWxlLWxpYi5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi42MzY5ZDM0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2xpYnJhcnktbW9kdWxlLWxpYi5mOTAKLUBAIC0wLDAgKzEsMjggQEAKLSshIENvcHlyaWdo dCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyEgCi0rISBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyEgCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEgCi0rISBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rbW9kdWxlIGxpYgotKyAgICAgICAgaW50ZWdlciA6OiB2 YXJfaSA9IDEKLStjb250YWlucwotKyAgICAgICAgc3Vicm91dGluZSBsaWJfZnVuYwotKyAgICAg ICAgaWYgKHZhcl9pIC5uZS4gMSkgY2FsbCBhYm9ydAotKyAgICAgICAgdmFyX2kgPSAyCi0rICAg ICAgICBlbmQgc3Vicm91dGluZSBsaWJfZnVuYwotK2VuZCBtb2R1bGUgbGliCi0rCi0rbW9kdWxl IGxpYm1hbnkKLSsgICAgICAgIGludGVnZXIgOjogdmFyX2ogPSAzCi0rICAgICAgICBpbnRlZ2Vy IDo6IHZhcl9rID0gNAotK2VuZCBtb2R1bGUgbGlibWFueQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbWFpbi5mOTAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLW1haW4uZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uZGU2M2E2NQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS1tYWluLmY5MAotQEAgLTAsMCArMSwyMyBA QAotKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rISAK LSshIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSshIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rISAKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsh IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r ISAKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsgICAgICAgIHVzZSBsaWIKLSsJ dXNlIGxpYm1hbnksIG9ubHk6IHZhcl9qCi0rICAgICAgICBpZiAodmFyX2kgLm5lLiAxKSBjYWxs IGFib3J0Ci0rCWNhbGwgbGliX2Z1bmMKLSsgICAgICAgIGlmICh2YXJfaSAubmUuIDIpIGNhbGwg YWJvcnQKLSsgICAgICAgIGlmICh2YXJfaiAubmUuIDMpIGNhbGwgYWJvcnQKLSsgICAgICAgIHZh cl9pID0gdmFyX2kgICAgICAgICAgICAgICAgICEgaS1pcy0yCi0rZW5kCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLjRiNGVhNGMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCi1AQCAtMCwwICsxLDUzIEBACi0rIyBD b3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRlc3RmaWxlICJsaWJyYXJ5LW1vZHVsZSIK LStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS1tYWluLmY5MAotK3NldCBzcmNsaWJmaWxlICR7dGVz dGZpbGV9LWxpYi5mOTAKLStzZXQgbGliZmlsZSAke3Rlc3RmaWxlfS1saWIuc28KLStzZXQgYmlu ZmlsZSAke3Rlc3RmaWxlfQotKwotKyMgUmVxdWlyZWQgZm9yIC1mUElDIGJ5IGdkYl9jb21waWxl X3NobGliLgotK2lmIFtnZXRfY29tcGlsZXJfaW5mbyBub3QtdXNlZF0gewotKyAgIHdhcm5pbmcg IkNvdWxkIG5vdCBnZXQgY29tcGlsZXIgaW5mbyIKLSsgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYg IHsgW2dkYl9jb21waWxlX3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjbGliZmlsZX0i ICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZSB7ZGVidWcgZjc3fV0gIT0gIiIgfSB7Ci0rICAgIHVu dGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjbGliZmlsZX0iCi0rICAgIHJldHVybiAtMQot K30KLSsKLSsjIHByZXBhcmVfZm9yX3Rlc3RpbmcgY2Fubm90IGJlIHVzZWQgYXMgbGlua2luZyB3 aXRoICRsaWJmaWxlIGNhbm5vdCBiZSBwYXNzZWQKLSsjIGp1c3QgZm9yIHRoZSBsaW5raW5nIHBo YXNlIChhbmQgbm90IHRoZSBzb3VyY2UgY29tcGlsYXRpb24gcGhhc2UpLiAgQW5kIGFueQotKyMg d2FybmluZ3Mgb24gaWdub3JlZCAkbGliZmlsZSBhYm9ydCB0aGUgcHJvY2Vzcy4KLSsKLStpZiAg eyBbZ2RiX2NvbXBpbGUgW2xpc3QgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1 YmRpci8kbGliZmlsZV0gJG9iamRpci8kc3ViZGlyLyRiaW5maWxlIGV4ZWN1dGFibGUge2RlYnVn IGY3N31dICE9ICIiIH0gewotKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2Zp bGV9IgotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAkYmluZmlsZQotKwot K2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8g YnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJpLWlzLTIiXQotK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJpLWlzLTIiICIuKmktaXMtMi4qIgotK2dkYl90ZXN0ICJwcmludCB2YXJfaSIgIiA9IDIi Ci0rZ2RiX3Rlc3QgInByaW50IHZhcl9qIiAiID0gMyIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2si ICJObyBzeW1ib2wgXCJ2YXJfa1wiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xvZ2ljYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9sb2dpY2FsLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAw MDAuLmVmNzZmNDMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vbG9naWNhbC5leHAKLUBAIC0wLDAgKzEsNDQgQEAKLSsjIENvcHlyaWdodCAyMDA3IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjIAotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEty YXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3NldCB0ZXN0ZmlsZSAi bG9naWNhbCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKLStzZXQgYmluZmlsZSAke29i amRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgIHsgW2dkYl9jb21waWxlICIke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1 ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg JHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0 Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5m aWxlfQotKwotK2lmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSsgICAgcGVycm9yICJjb3VsZG4n dCBydW4gdG8gYnJlYWtwb2ludCBNQUlOX18iCi0rICAgIGNvbnRpbnVlCi0rfQotKwotK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdG9wLWhlcmUiXQotK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJzdG9wLWhlcmUiCi0rZ2RiX3Rlc3QgInAgbCIgIiA9IFxcLlRSVUVc XC4iCi0rZ2RiX3Rlc3QgInAgbDEiICIgPSBcXC5UUlVFXFwuIgotK2dkYl90ZXN0ICJwIGwyIiAi ID0gXFwuVFJVRVxcLiIKLStnZGJfdGVzdCAicCBsNCIgIiA9IFxcLlRSVUVcXC4iCi0rZ2RiX3Rl c3QgInAgbDgiICIgPSBcXC5UUlVFXFwuIgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbG9naWNhbC5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xvZ2ljYWwu ZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDIyOTMwNAotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9sb2dpY2FsLmY5MAotQEAg LTAsMCArMSwzMyBAQAotKyEgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgot KyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSshCi0rISBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsh IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkg VGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsh Ci0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhw LgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhh dC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2 aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotK3Byb2dyYW0gdGVzdAotKyAgbG9n aWNhbCA6OiBsCi0rICBsb2dpY2FsIChraW5kPTEpIDo6IGwxCi0rICBsb2dpY2FsIChraW5kPTIp IDo6IGwyCi0rICBsb2dpY2FsIChraW5kPTQpIDo6IGw0Ci0rICBsb2dpY2FsIChraW5kPTgpIDo6 IGw4Ci0rICBsID0gLlRSVUUuCi0rICBsMSA9IC5UUlVFLgotKyAgbDIgPSAuVFJVRS4KLSsgIGw0 ID0gLlRSVUUuCi0rICBsOCA9IC5UUlVFLgotKyAgbCA9IC5GQUxTRS4JCQkJCSEgc3RvcC1oZXJl Ci0rZW5kCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCi1pbmRleCAzNDJjY2VlLi5j ODM2YzNjIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhw Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKLUBAIC0xNSwyMSAr MTUsMzEgQEAKLSAKLSBzZXQgdGVzdGZpbGUgIm1vZHVsZSIKLSBzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5mOTAKLS1zZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0g Ci0taWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIk e2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKLS0gICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKLStpZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9XSB9 IHsKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLWdkYl9leGl0Ci0tZ2RiX3N0YXJ0Ci0tZ2RiX3Jl aW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0tZ2RiX2xvYWQgJHtiaW5maWxlfQotLQot IGlmICFbcnVudG8gTUFJTl9fXSB0aGVuIHsKLSAgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8g YnJlYWtwb2ludCBNQUlOX18iCi0gICAgIGNvbnRpbnVlCi0gfQotIAotLWdkYl90ZXN0ICJwcmlu dCBpIiAiID0gNDIiCi0rIyBEbyBub3QgdXNlIHNpbXBsZSBzaW5nbGUtbGV0dGVyIG5hbWVzIGFz IEdEQiB3b3VsZCBwaWNrIHVwIGZvciBleHBlY3RlZGx5Ci0rIyBub25leGlzdGluZyBzeW1ib2xz IHNvbWUgc3RhdGljIHZhcmlhYmxlcyBmcm9tIHN5c3RlbSBsaWJyYXJpZXMgZGVidWdpbmZvcy4K LSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiaS1pcy0xIl0KLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAiaS1pcy0xIiAiLippLWlzLTEuKiIKLStnZGJfdGVzdCAi cHJpbnQgdmFyX2kiICIgPSAxIiAicHJpbnQgdmFyX2kgdmFsdWUgMSIKLSsKLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiaS1pcy0yIl0KLStnZGJfY29udGludWVfdG9fYnJl YWtwb2ludCAiaS1pcy0yIiAiLippLWlzLTIuKiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIg PSAyIiAicHJpbnQgdmFyX2kgdmFsdWUgMiIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiYS1iLWMtZCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImEtYi1j LWQiICIuKmEtYi1jLWQuKiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2EiICJObyBzeW1ib2wgXCJ2 YXJfYVwiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2IiICIg PSAxMSIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2MiICJObyBzeW1ib2wgXCJ2YXJfY1wiIGluIGN1 cnJlbnQgY29udGV4dFxcLiIKLStnZGJfdGVzdCAicHJpbnQgdmFyX2QiICIgPSAxMiIKLStnZGJf dGVzdCAicHJpbnQgdmFyX2kiICIgPSAxNCIgInByaW50IHZhcl9pIHZhbHVlIDE0IgotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MAotaW5kZXggNTAxY2NjOC4uMTE4OTMxZCAxMDA2NDQK LS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5MAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZjkwCi1AQCAtMTMsMTAgKzEzLDM3IEBACi0gISBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotICEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gCi0tbW9kdWxlIG1vZAotLSAgICAgICAgaW50ZWdl ciA6OiBpID0gNDIKLS1lbmQgbW9kdWxlIG1vZAotK21vZHVsZSBtb2QxCi0rICAgICAgICBpbnRl Z2VyIDo6IHZhcl9pID0gMQotK2VuZCBtb2R1bGUgbW9kMQotIAotLSAgICAgICAgdXNlIG1vZAot LSAgICAgICAgcHJpbnQgKiwgaQotK21vZHVsZSBtb2QyCi0rICAgICAgICBpbnRlZ2VyIDo6IHZh cl9pID0gMgotK2VuZCBtb2R1bGUgbW9kMgotKwotK21vZHVsZSBtb2RtYW55Ci0rICAgICAgICBp bnRlZ2VyIDo6IHZhcl9hID0gMTAsIHZhcl9iID0gMTEsIHZhcl9jID0gMTIsIHZhcl9pID0gMTQK LStlbmQgbW9kdWxlIG1vZG1hbnkKLSsKLSsgICAgICAgIHN1YnJvdXRpbmUgc3ViMQotKyAgICAg ICAgdXNlIG1vZDEKLSsgICAgICAgIGlmICh2YXJfaSAubmUuIDEpIGNhbGwgYWJvcnQKLSsgICAg ICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAgICAgICAgICAgISBpLWlzLTEKLSsgICAg ICAgIGVuZAotKwotKyAgICAgICAgc3Vicm91dGluZSBzdWIyCi0rICAgICAgICB1c2UgbW9kMgot KyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMikgY2FsbCBhYm9ydAotKyAgICAgICAgdmFyX2kgPSB2 YXJfaSAgICAgICAgICAgICAgICAgICAgICAgICAhIGktaXMtMgotKyAgICAgICAgZW5kCi0rCi0r ICAgICAgICB1c2UgbW9kbWFueSwgb25seTogdmFyX2IsIHZhcl9kID0+IHZhcl9jLCB2YXJfaQot KwotKyAgICAgICAgY2FsbCBzdWIxCi0rICAgICAgICBjYWxsIHN1YjIKLSsKLSsgICAgICAgIGlm ICh2YXJfYiAubmUuIDExKSBjYWxsIGFib3J0Ci0rICAgICAgICBpZiAodmFyX2QgLm5lLiAxMikg Y2FsbCBhYm9ydAotKyAgICAgICAgaWYgKHZhcl9pIC5uZS4gMTQpIGNhbGwgYWJvcnQKLSsgICAg ICAgIHZhcl9iID0gdmFyX2IgICAgICAgICAgICAgICAgICAgICAgICAgISBhLWItYy1kCi0gZW5k Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMC4uYjExMjBjMwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCi1AQCAtMCwwICsxLDU5IEBACi0rIyBDb3B5cmlnaHQg MjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0r IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rIyAKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIyAKLSsjIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0r IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0 d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBC b3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gIAotKwotKyMgVGhpcyBmaWxlIHdhcyB3cml0dGVu IGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPi4KKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1hc3NvY2lhdGVkIl0KKytnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAidmFydi1hc3NvY2lhdGVkIgorK2dkYl90ZXN0ICJwIHZhcngo MywgNywgMTkpIiAiXFwkXFswLTlcXSogPSA2IiAicCB2YXJ4KDMsIDcsIDE5KSB3aXRoIHZhcnYg YXNzb2NpYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ2KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0g NiIgInAgdmFydigzLCA3LCAxOSkgYXNzb2NpYXRlZCIKKysjIEludGVsIEZvcnRyYW4gQ29tcGls ZXIgMTAuMS4wMDggdXNlcyAtMSB0aGVyZSwgR0NDIHVzZXMgMS4KKytnZGJfdGVzdCAicCBsIiAi XFwkXFswLTlcXSogPSAoXFwuVFJVRVxcLnw0Mjk0OTY3Mjk1KSIgInAgbCBpZiB2YXJ2IGFzc29j aWF0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8 XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpIiAicHR5cGUgdmFyeCB3aXRoIHZhcnYgYXNzb2NpYXRl ZCIKKysjIEludGVsIEZvcnRyYW4gQ29tcGlsZXIgMTAuMS4wMDggdXNlcyB0aGUgcG9pbnRlciB0 eXBlLgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ2IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVh bChcXChraW5kPTRcXCl8XFwqNCkgXFwoNiw1OjE1LDE3OjI4XFwpXFwpPyIgInB0eXBlIHZhcnYg YXNzb2NpYXRlZCIKICsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRl LiAgSXQgY29udGFpbnMgdGVzdHMgZm9yIEZvcnRyYW4KLSsjIHN0cmluZ3Mgd2l0aCBkeW5hbWlj IGxlbmd0aC4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidmFydi1maWxs ZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ2LWZpbGxlZCIKKytnZGJfdGVz dCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gMTAiICJwIHZhcngoMywgNywgMTkp IHdpdGggdmFydiBmaWxsZWQiCisrZ2RiX3Rlc3QgInAgdmFydigzLCA3LCAxOSkiICJcXCRcWzAt OVxdKiA9IDEwIiAicCB2YXJ2KDMsIDcsIDE5KSBmaWxsZWQiCiArCi0rc2V0IHRlc3RmaWxlICJz dHJpbmciCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCi0rc2V0IGJpbmZpbGUgJHtvYmpk aXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2YXJ2LWRlYXNzb2NpYXRlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg InZhcnYtZGVhc3NvY2lhdGVkIgorKyMgVGhlIGxhdHRlciBvbmUgaXMgZm9yIHRoZSBJbnRlbCBG b3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IHBvaW50ZXIgdHlwZS4KKytnZGJfdGVzdCAicCB2YXJ2 IiAiXFwkXFswLTlcXSogPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZD58 LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2Ug dGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicCB2YXJ2IGRlYXNzb2NpYXRlZCIKKytn ZGJfdGVzdCAicHR5cGUgdmFydiIgInR5cGUgPSAoPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3Qg YXNzb2NpYXRlZD58LiooQ2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmpl Y3QpIGJlY2F1c2UgdGhlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZC4pIiAicHR5cGUgdmFydiBk ZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwuRkFMU0VcXC4i ICJwIGwgaWYgdmFydiBkZWFzc29jaWF0ZWQiCisrZ2RiX3Rlc3QgInAgdmFydigxLDUsMTcpIiAi KENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRo ZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZFxcLiIKKytnZGJfdGVzdCAicHR5cGUg dmFydigxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2Jq ZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5KSBpcyBub3QgYXNzb2NpYXRlZFxcLiIKICsK LStpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGY3NyBxdWlldH1dICE9ICIiIH0gewotKyAgICB1 bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgotKyAgICByZXR1cm4gLTEKLSt9 CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcngtZGVhbGxvY2F0ZWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ4LWRlYWxsb2NhdGVkIgorK2dkYl90 ZXN0ICJwIHZhcngiICJcXCRcWzAtOVxdKiA9IDwob2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFs bG9jYXRlZD4iICJwIHZhcnggZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInB0eXBlIHZhcngiICJ0 eXBlID0gPChvYmplY3R8dGhlIGFycmF5KSBpcyBub3QgYWxsb2NhdGVkPiIgInB0eXBlIHZhcngg ZGVhbGxvY2F0ZWQiCisrZ2RiX3Rlc3QgInAgbCIgIlxcJFxbMC05XF0qID0gXFwuRkFMU0VcXC4i ICJwIGwgaWYgdmFyeCBkZWFsbG9jYXRlZCIKKytnZGJfdGVzdCAicCB2YXJ4KDEsNSwxNykiICIo Q2Fubm90IGFjY2VzcyBpdHxVbmFibGUgdG8gYWNjZXNzIHRoZSBvYmplY3QpIGJlY2F1c2UgdGhl IChvYmplY3R8YXJyYXkpIGlzIG5vdCBhbGxvY2F0ZWRcXC4iICJwIHZhcngoMSw1LDE3KSBkZWFs bG9jYXRlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFyeCgxLDUsMTcpIiAiKENhbm5vdCBhY2Nlc3Mg aXR8VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSAob2JqZWN0fGFycmF5 KSBpcyBub3QgYWxsb2NhdGVkXFwuIiAicHR5cGUgdmFyeCgxLDUsMTcpIGRlYWxsb2NhdGVkIgog KwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCi0rZ2RiX2xvYWQgJHtiaW5maWxlfQorK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJ2YXJ5LXBhc3NlZCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZh cnktcGFzc2VkIgorKyMgJDEgPSAoKCAoIDEsIDEsIDEsIDEsIDEsIDEpICggMSwgMSwgMSwgMSwg MSwgMSkgLS0tICwgMSkgKSAoICggMSwgMSwgLi4uKSAuLi4pIC4uLikKKytnZGJfdGVzdCAicCB2 YXJ5IiAiXFwkXFswLTlcXSogPSBcXChcWygpMSwgLlxdKlxcKSIKICsKLStpZiAhW3J1bnRvIE1B SU5fX10gdGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJ Tl9fIgotKyAgICBjb250aW51ZQotK30KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFyeS1maWxsZWQiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXJ5LWZp bGxlZCIKKytnZGJfdGVzdCAicHR5cGUgdmFyeSIgInR5cGUgPSByZWFsKFxcKGtpbmQ9NFxcKXxc XCo0KSBcXCgxMCwxMFxcKSIKKytnZGJfdGVzdCAicCB2YXJ5KDEsIDEpIiAiXFwkXFswLTlcXSog PSA4IgorK2dkYl90ZXN0ICJwIHZhcnkoMiwgMikiICJcXCRcWzAtOVxdKiA9IDkiCisrZ2RiX3Rl c3QgInAgdmFyeSgxLCAzKSIgIlxcJFxbMC05XF0qID0gMTAiCisrIyAkMSA9ICgoICggMywgMywg MywgMywgMywgMykgKCAzLCAzLCAzLCAzLCAzLCAzKSAtLS0gLCAzKSApICggKCAzLCAzLCAuLi4p IC4uLikgLi4uKQorK2dkYl90ZXN0ICJwIHZhcnciICJcXCRcWzAtOVxdKiA9IFxcKFxbKCkzLCAu XF0qXFwpIgogKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXItaW5p dCJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1pbml0IgotK2dkYl90ZXN0ICJw dHlwZSBjIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTFcXCl8XFwqMSkiCi0rZ2RiX3Rlc3Qg InB0eXBlIGQiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9OFxcKXxcXCo4KSIKLStnZGJfdGVz dCAicHR5cGUgZSIgInR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD00XFwpfFxcKjQpIgotK2dkYl90 ZXN0ICJwdHlwZSBmIiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkgXFwoNyw4 OjEwXFwpIgotK2dkYl90ZXN0ICJwdHlwZSAqZSIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBv ZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKLStnZGJfdGVzdCAicHR5cGUgKmYiICJ0eXBlID0gY2hh cmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg3XFwpIgotK2dkYl90ZXN0ICJwIGMiICJcXCRc WzAtOVxdKiA9ICdjJyIKLStnZGJfdGVzdCAicCBkIiAiXFwkXFswLTlcXSogPSAnZCAgICAgICAn IgotK2dkYl90ZXN0ICJwIGUiICJcXCRcWzAtOVxdKiA9ICdnICAgJyIKLStnZGJfdGVzdCAicCBm IiAiXFwkXFswLTlcXSogPSBcXChcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAn aCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAg ICcsICdoICAgJywgJ2ggICAnLCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcs ICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJ1xcKSBcXCkiCi0rZ2RiX3Rlc3QgInAgKmUi ICJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2YWx1ZS4iCi0rZ2Ri X3Rlc3QgInAgKmYiICJBdHRlbXB0IHRvIHRha2UgY29udGVudHMgb2YgYSBub24tcG9pbnRlciB2 YWx1ZS4iCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhcnctYWxtb3N0 ZmlsbGVkIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFydy1hbG1vc3RmaWxsZWQi CisrZ2RiX3Rlc3QgInB0eXBlIHZhcnciICJ0eXBlID0gcmVhbChcXChraW5kPTRcXCl8XFwqNCkg XFwoNSw0LDNcXCkiCisrZ2RiX3Rlc3QgInAgdmFydygzLDEsMSk9MSIgIlxcJFxbMC05XF0qID0g MSIKKysjICQxID0gKCggKCA2LCA1LCAxLCA1LCA1LCA1KSAoIDUsIDUsIDUsIDUsIDUsIDUpIC0t LSAsIDUpICkgKCAoIDUsIDUsIC4uLikgLi4uKSAuLi4pCisrZ2RiX3Rlc3QgInAgdmFydyIgIlxc JFxbMC05XF0qID0gXFwoICpcXCggKlxcKCAqNiwgKjUsICoxLFxbKCk1LCAuXF0qXFwpIiAicCB2 YXJ3IGZpbGxlZCIKKysjICJ1cCIgd29ya3Mgd2l0aCBHQ0MgYnV0IG90aGVyIEZvcnRyYW4gY29t cGlsZXJzIG1heSBjb3B5IHRoZSB2YWx1ZXMgaW50byB0aGUKKysjIG91dGVyIGZ1bmN0aW9uIG9u bHkgb24gdGhlIGV4aXQgb2YgdGhlIGlubmVyIGZ1bmN0aW9uLgorKyMgV2UgbmVlZCBib3RoIHZh cmlhbnRzIGFzIGRlcGVuZGluZyBvbiB0aGUgYXJjaCB3ZSBvcHRpb25hbGx5IG1heSBzdGlsbCBi ZQorKyMgZXhlY3V0aW5nIHRoZSBjYWxsZXIgbGluZSBvciBub3QgYWZ0ZXIgYGZpbmlzaCcuCisr Z2RiX3Rlc3QgImZpbmlzaCIgIi4qKGNhbGwgYmFyIFxcKHksIHhcXCl8Y2FsbCBmb28gXFwoeCwg elxcKDI6NiwgNDo3LCA2OjhcXClcXCkpIgorK2dkYl90ZXN0ICJwIHooMiw0LDUpIiAiXFwkXFsw LTlcXSogPSAzIgorK2dkYl90ZXN0ICJwIHooMiw0LDYpIiAiXFwkXFswLTlcXSogPSA2IgorK2dk Yl90ZXN0ICJwIHooMiw0LDcpIiAiXFwkXFswLTlcXSogPSA1IgorK2dkYl90ZXN0ICJwIHooNCw0 LDYpIiAiXFwkXFswLTlcXSogPSAxIgogKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJ2YXItZmluaXNoIl0KLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWZp bmlzaCIKLStnZGJfdGVzdCAicCBlIiAiXFwkXFswLTlcXSogPSAnZSAgICciICJwIGUgcmUtc2V0 IgotK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAtOVxdKiA9IFxcKFxcKCAnZiAgICcsICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmMiAgJywgJ2Yg ICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YgICAn LCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKSIg InAgKmYgcmUtc2V0IgotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3Ry aW5nLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAorK2dkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ2YXJ6LWFsbW9zdGZpbGxlZCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnotYWxtb3N0ZmlsbGVkIgorKyMgR0NDIHVzZXMgdGhl IHBvaW50ZXIgdHlwZSBoZXJlLCBJbnRlbCBGb3J0cmFuIENvbXBpbGVyIDEwLjEuMDA4IGRvZXMg bm90LgorK2dkYl90ZXN0ICJwdHlwZSB2YXJ6IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVh bChcXChraW5kPTRcXCl8XFwqNCkgXFwoXFwqXFwpXFwpPyIKKysjIEludGVsIEZvcnRyYW4gQ29t cGlsZXIgMTAuMS4wMDggaGFzIGEgYnVnIGhlcmUgLSAoMjoxMSw3OjcpCisrIyBhcyBpdCBwcm9k dWNlcyBEV19BVF9sb3dlcl9ib3VuZCA9PSBEV19BVF91cHBlcl9ib3VuZCA9PSA3LgorK2dkYl90 ZXN0ICJwdHlwZSB2YXJ0IiAidHlwZSA9IChQVFIgVE8gLT4gXFwoICk/cmVhbChcXChraW5kPTRc XCl8XFwqNCkgXFwoMjoxMSw3OlxcKlxcKVxcKT8iCisrZ2RiX3Rlc3QgInAgdmFyeiIgIlxcJFxb MC05XF0qID0gXFwoXFwpIgorK2dkYl90ZXN0ICJwIHZhcnQiICJcXCRcWzAtOVxdKiA9IFxcKFxc KSIKKytnZGJfdGVzdCAicCB2YXJ6KDMpIiAiXFwkXFswLTlcXSogPSA0IgorKyMgbWFwcyB0byBm b286OnZhcnkoMSwxKQorK2dkYl90ZXN0ICJwIHZhcnQoMiw3KSIgIlxcJFxbMC05XF0qID0gOCIK KysjIG1hcHMgdG8gZm9vOjp2YXJ5KDIsMikKKytnZGJfdGVzdCAicCB2YXJ0KDMsOCkiICJcXCRc WzAtOVxdKiA9IDkiCisrIyBtYXBzIHRvIGZvbzo6dmFyeSgxLDMpCisrZ2RiX3Rlc3QgInAgdmFy dCgyLDkpIiAiXFwkXFswLTlcXSogPSAxMCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R5bmFtaWMuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LmY5MAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIyNmRjNWQKK2luZGV4 IDAwMDAwMDAuLjBmNDM1NjQKIC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmY5MAotQEAgLTAsMCArMSwzNyBAQAotKyEgQ29weXJpZ2h0IDIwMDgg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMuZjkwCitAQCAtMCwwICsxLDk4IEBACisrISBDb3B5cmlnaHQgMjAwNyBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICshCiArISBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyEgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKQEAgLTI2MzEwLDI0OCArMTcwNTIsMTY4IEBAIGluZGV4IDAwMDAwMDAuLjIyNmRj NWQKICshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAogKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKICshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rISBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIx MTEtMTMwNywgVVNBLgotKyEKLSshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmls ZSBmb3IgZHluYW1pYy5leHAuCi0rISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVs aW5layA8amFrdWJAcmVkaGF0LmNvbT4uCi0rISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2Fz ZSBieSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rCi0rc3Vi cm91dGluZSBmb28gKGUsIGYpCi0rICBjaGFyYWN0ZXIgKGxlbj0xKSA6OiBjCi0rICBjaGFyYWN0 ZXIgKGxlbj04KSA6OiBkCi0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBlCi0rICBjaGFyYWN0ZXIg KGxlbj0qKSA6OiBmICgxOjcsIDg6MTApCi0rICBjID0gJ2MnCi0rICBkID0gJ2QnCi0rICBlID0g J2UnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXItaW5pdAotKyAg ZiA9ICdmJwotKyAgZigxLDkpID0gJ2YyJwotKyAgYyA9ICdjJyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICEgdmFyLWZpbmlzaAotK2VuZCBzdWJyb3V0aW5lIGZvbwotKyAg Y2hhcmFjdGVyIChsZW49NCkgOjogZywgaCAoMTo3LCA4OjEwKQotKyAgZyA9ICdnJwotKyAgaCA9 ICdoJwotKyAgY2FsbCBmb28gKGcsIGgpCi0rZW5kCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5l eHAKLWluZGV4IDQ5NWFlNDUuLmQwOGQ3YTQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5nZGIvc2VsZnRlc3QuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwCi1AQCAtOTUsNiArOTUsMTAgQEAgcHJvYyBkb19zdGVwc19hbmRfbmV4dHMge30gewotIAkJ c2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgdHR5YXJnIGluaXRpYWxpemF0aW9uIgotIAkJc2V0 IGNvbW1hbmQgInN0ZXAiCi0gCSAgICB9Ci0rCSAgICAtcmUgIi4qcHl0aG9uX3NjcmlwdCA9IDAu KiRnZGJfcHJvbXB0ICQiIHsKLSsJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVyIHB5dGhvbl9z Y3JpcHQgaW5pdGlhbGl6YXRpb24iCi0rCQlzZXQgY29tbWFuZCAic3RlcCIKLSsJICAgIH0KLSAJ ICAgIC1yZSAiLip0aW1lX2F0X3N0YXJ0dXAgPSBnZXRfcnVuX3RpbWUuKiRnZGJfcHJvbXB0ICQi IHsKLSAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIGdldF9ydW5fdGltZSBhbmQgZXZlcnl0 aGluZyBpdCBjYWxscyIKLSAJCXNldCBjb21tYW5kICJuZXh0IgotZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUu ZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZTcxMzkxZQotLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAotQEAgLTAsMCAr MSw3NyBAQAotKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK LSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu Ci0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotK2lmICR0cmFjZWxldmVsIHRo ZW4gewotKyAgc3RyYWNlICR0cmFjZWxldmVsCi0rfQotKwotK2xvYWRfbGliICJqYXZhLmV4cCIK LSsKLStzZXQgdGVzdGZpbGUgImpucGUiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uamF2YQot K3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAgeyBbY29t cGlsZV9qYXZhX2Zyb21fc291cmNlICR7c3JjZGlyfS8kc3ViZGlyLyR7c3JjZmlsZX0gJHtiaW5m aWxlfSAiLWciXSAhPSAiIiB9IHsKLSsgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtz cmNkaXJ9LyRzdWJkaXIvJHtzcmNmaWxlfSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK3NldCBw cm1zX2lkIDAKLStzZXQgYnVnX2lkIDAKLSsKLSsjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0r Ci0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9u dW1iZXIgImJyZWFrIGhlcmUiICR0ZXN0ZmlsZS5qYXZhXQotK2dkYl90ZXN0ICJicmVhayAkdGVz dGZpbGUuamF2YTokbGluZSIgIiIKLSsKLStnZGJfdGVzdCAicnVuIiBcCi0rICAiLy8gYnJlYWsg aGVyZS4qIiBcCi0rICAicnVuIGphdmEgbmV4dC1vdmVyLXRocm93IgotKwotKyMgU2VlIHdoZXRo ZXIgd2UgaGF2ZSB0aGUgbmVlZGVkIHVud2luZGVyIGhvb2tzLgotK3NldCBvayAxCi0rZ2RiX3Rl c3RfbXVsdGlwbGUgInByaW50IF9VbndpbmRfRGVidWdIb29rIiAiY2hlY2sgZm9yIHVud2luZGVy IGhvb2sgaW4gamF2YSIgewotKyAgICAtcmUgIj0gLipfVW53aW5kX0RlYnVnSG9vay4qXHJcbiRn ZGJfcHJvbXB0ICQiIHsKLSsJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIK LSsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4k Z2RiX3Byb21wdCAkIiB7Ci0rCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMg ZmFpbHMgaW4gdGhlIHJlc3VsdHMuCi0rCXNldHVwX3hmYWlsICotKi0qCi0rCWZhaWwgImNoZWNr IGZvciB1bndpbmRlciBob29rIGluIGphdmEiCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYg eyEkb2t9IHsKLSsgICAgdW50ZXN0ZWQgam5wZS5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot K2dkYl90ZXN0ICJoYW5kbGUgU0lHU0VHViBub3N0b3Agbm9wcmludCIgXAotKyAgIlNJR1NFR1Yu KmZhdWx0IiBcCi0rICAiZGlzYWJsZSBTSUdTRUdWIGZvciBuZXh0LW92ZXItTlBFIgotKwotKyMg VGhlIGxpbmUgd2hlcmUgd2Ugc3RvcCBkaWZmZXIgYWNjb3JkaW5nIHRvIGdjajsgY2hlY2sganVz dCB3ZSBkaWQgbm90IGFscmVhZHkKLSsjIGV4ZWN1dGUgdGhlIGNhdGNoIHBvaW50LgotKwotK2dk Yl90ZXN0ICJuZXh0IiBcCi0rICAiIiBcCi0rICAibmV4dCBvdmVyIE5QRSIKLSsKLStnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiY2F0Y2ggcG9pbnQiXQotK2dkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJjYXRjaCBwb2ludCIgIi4qLy8gY2F0Y2ggcG9pbnQuKiIKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuamF2YSBiL2dkYi90ZXN0c3VpdGUv Z2RiLmphdmEvam5wZS5qYXZhCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4u MzUyNDgzMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBl LmphdmEKLUBAIC0wLDAgKzEsMzggQEAKLSsvLyBUZXN0IG5leHQtb3Zlci1OUEUuCi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQot KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsgICAqLwotKwotK3B1YmxpYyBjbGFzcyBqbnBl Ci0rewotKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgbnBlICgpCi0rICB7Ci0rICAgIHJldHVybiAo KE9iamVjdCkgbnVsbCkudG9TdHJpbmcoKTsKLSsgIH0KLSsKLSsgIHB1YmxpYyBzdGF0aWMgdm9p ZCBtYWluIChTdHJpbmdbXSBhcmdzKQotKyAgewotKyAgICB0cnkKLSsgICAgICB7Ci0rCVN5c3Rl bS5vdXQucHJpbnRsbiAobnBlICgpKTsgLy8gYnJlYWsgaGVyZQotKyAgICAgIH0KLSsgICAgY2F0 Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG4pCi0rICAgICAgewotKwlTeXN0ZW0ub3V0LnByaW50 bG4gKCJzdWNjZXNzIik7IC8vIGNhdGNoIHBvaW50Ci0rICAgICAgfQotKyAgfQotK30KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MjlmNDU3Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKLUBA IC0wLDAgKzEsMjIgQEAKLSsvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKyEgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg U29mdHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgSWhpcyBmaWxlIGlzIHRoZSBG b3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KKyshIE9yaWdpbmFsIGZpbGUgd3Jp dHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKyshIE1vZGlmaWVkIGZv ciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPi4KICsKLStpbnQKLStmdW5jIChpbnQgKmFycikKLSt7Ci0rICByZXR1cm4gYXJyWzBd OwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdp c3Rlci5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYworK3N1 YnJvdXRpbmUgYmF6CisrICByZWFsLCB0YXJnZXQsIGFsbG9jYXRhYmxlIDo6IHZhcnggKDosIDos IDopCisrICByZWFsLCBwb2ludGVyIDo6IHZhcnYgKDosIDosIDopCisrICByZWFsLCB0YXJnZXQg OjogdmFydSAoMSwgMiwgMykKKysgIGxvZ2ljYWwgOjogbAorKyAgYWxsb2NhdGUgKHZhcnggKDE6 NiwgNToxNSwgMTc6MjgpKSAgICAgICAgICAgICEgdmFyeC1pbml0CisrICBsID0gYWxsb2NhdGVk ICh2YXJ4KQorKyAgdmFyeCg6LCA6LCA6KSA9IDYgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICEgdmFyeC1hbGxvY2F0ZWQKKysgIHZhcngoMSwgNSwgMTcpID0gNworKyAgdmFyeCgyLCA2LCAx OCkgPSA4CisrICB2YXJ4KDYsIDE1LCAyOCkgPSA5CisrICB2YXJ2ID0+IHZhcnggICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ4LWZpbGxlZAorKyAgbCA9IGFzc29jaWF0ZWQg KHZhcnYpCisrICB2YXJ2KDMsIDcsIDE5KSA9IDEwICAgICAgICAgICAgICAgICAgICAgICAgICAg ISB2YXJ2LWFzc29jaWF0ZWQKKysgIHZhcnYgPT4gbnVsbCAoKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhIHZhcnYtZmlsbGVkCisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKysgIGRl YWxsb2NhdGUgKHZhcngpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnYtZGVhc3Nv Y2lhdGVkCisrICBsID0gYWxsb2NhdGVkICh2YXJ4KQorKyAgdmFydSg6LCA6LCA6KSA9IDEwICAg ICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeC1kZWFsbG9jYXRlZAorKyAgYWxsb2NhdGUg KHZhcnYgKDE6NiwgNToxNSwgMTc6MjgpKQorKyAgbCA9IGFzc29jaWF0ZWQgKHZhcnYpCisrICB2 YXJ2KDosIDosIDopID0gNgorKyAgdmFydigxLCA1LCAxNykgPSA3CisrICB2YXJ2KDIsIDYsIDE4 KSA9IDgKKysgIHZhcnYoNiwgMTUsIDI4KSA9IDkKKysgIGRlYWxsb2NhdGUgKHZhcnYpCisrICBs ID0gYXNzb2NpYXRlZCAodmFydikKKysgIHZhcnYgPT4gdmFydQorKyAgdmFydigxLCAxLCAxKSA9 IDYKKysgIHZhcnYoMSwgMiwgMykgPSA3CisrICBsID0gYXNzb2NpYXRlZCAodmFydikKKytlbmQg c3Vicm91dGluZSBiYXoKKytzdWJyb3V0aW5lIGZvbyAodmFyeSwgdmFydykKKysgIHJlYWwgOjog dmFyeSAoOiwgOikKKysgIHJlYWwgOjogdmFydyAoOiwgOiwgOikKKysgIHZhcnkoOiwgOikgPSA0 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhcnktcGFzc2VkCisrICB2YXJ5KDEs IDEpID0gOAorKyAgdmFyeSgyLCAyKSA9IDkKKysgIHZhcnkoMSwgMykgPSAxMAorKyAgdmFydyg6 LCA6LCA6KSA9IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEgdmFyeS1maWxsZWQKKysg IHZhcncoMSwgMSwgMSkgPSA2CisrICB2YXJ3KDIsIDIsIDIpID0gNyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgISB2YXJ3LWFsbW9zdGZpbGxlZAorK2VuZCBzdWJyb3V0aW5lIGZvbworK3N1 YnJvdXRpbmUgYmFyICh2YXJ6LCB2YXJ0KQorKyAgcmVhbCA6OiB2YXJ6ICgqKQorKyAgcmVhbCA6 OiB2YXJ0ICgyOjExLCA3OiopCisrICB2YXJ6KDE6MykgPSA0CisrICB2YXJ6KDIpID0gNSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgISB2YXJ6LWFsbW9zdGZpbGxlZAorKyAgdmFy dCgyLDcpID0gdmFydCgyLDcpCisrZW5kIHN1YnJvdXRpbmUgYmFyCisrcHJvZ3JhbSB0ZXN0Cisr ICBpbnRlcmZhY2UKKysgICAgc3Vicm91dGluZSBmb28gKHZhcnksIHZhcncpCisrICAgIHJlYWwg OjogdmFyeSAoOiwgOikKKysgICAgcmVhbCA6OiB2YXJ3ICg6LCA6LCA6KQorKyAgICBlbmQgc3Vi cm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAgaW50ZXJmYWNlCisrICAgIHN1YnJvdXRpbmUg YmFyICh2YXJ6LCB2YXJ0KQorKyAgICByZWFsIDo6IHZhcnogKCopCisrICAgIHJlYWwgOjogdmFy dCAoMjoxMSwgNzoqKQorKyAgICBlbmQgc3Vicm91dGluZQorKyAgZW5kIGludGVyZmFjZQorKyAg cmVhbCA6OiB4ICgxMCwgMTApLCB5ICg1KSwgeig4LCA4LCA4KQorKyAgeCg6LDopID0gMQorKyAg eSg6KSA9IDIKKysgIHooOiw6LDopID0gMworKyAgY2FsbCBiYXoKKysgIGNhbGwgZm9vICh4LCB6 KDI6NiwgNDo3LCA2OjgpKQorKyAgY2FsbCBiYXIgKHksIHgpCisrICBpZiAoeCAoMSwgMSkgLm5l LiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0 CisrICBpZiAoeCAoMSwgMykgLm5lLiAxMCkgY2FsbCBhYm9ydAorKyAgaWYgKHogKDIsIDQsIDYp IC5uZS4gNiAub3IuIHogKDMsIDUsIDcpIC5uZS4gNyAub3IuIHogKDIsIDQsIDcpIC5uZS4gNSkg Y2FsbCBhYm9ydAorKyAgaWYgKGFueSAoeSAubmUuICgvNCwgNSwgNCwgMiwgMi8pKSkgY2FsbCBh Ym9ydAorKyAgY2FsbCBmb28gKHRyYW5zcG9zZSAoeCksIHopCisrICBpZiAoeCAoMSwgMSkgLm5l LiA4IC5vci4geCAoMiwgMikgLm5lLiA5IC5vci4geCAoMSwgMikgLm5lLiA0KSBjYWxsIGFib3J0 CisrICBpZiAoeCAoMywgMSkgLm5lLiAxMCkgY2FsbCBhYm9ydAorK2VuZAorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbGliLmY5MCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbGliLmY5MAogbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjMwOTBlN2UKK2luZGV4IDAwMDAwMDAuLjYzNjlkMzQK IC0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJl Z2lzdGVyLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUt bGliLmY5MAogQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4g ICovCi0rCi0rZXh0ZXJuIGludCBmdW5jIChpbnQgKmFycik7CisrISBDb3B5cmlnaHQgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshIAorKyEgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyshIAorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyEgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshIAorKyEgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgogKwotK2ludAotK21haW4gKHZvaWQpCi0rewotKyAgaW50IGFycltdID0geyA0 MiB9OworK21vZHVsZSBsaWIKKysgICAgICAgIGludGVnZXIgOjogdmFyX2kgPSAxCisrY29udGFp bnMKKysgICAgICAgIHN1YnJvdXRpbmUgbGliX2Z1bmMKKysgICAgICAgIGlmICh2YXJfaSAubmUu IDEpIGNhbGwgYWJvcnQKKysgICAgICAgIHZhcl9pID0gMgorKyAgICAgICAgZW5kIHN1YnJvdXRp bmUgbGliX2Z1bmMKKytlbmQgbW9kdWxlIGxpYgogKwotKyAgZnVuYyAoYXJyKTsKKyttb2R1bGUg bGlibWFueQorKyAgICAgICAgaW50ZWdlciA6OiB2YXJfaiA9IDMKKysgICAgICAgIGludGVnZXIg OjogdmFyX2sgPSA0CisrZW5kIG1vZHVsZSBsaWJtYW55CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS1tYWluLmY5MCBiL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUtbWFpbi5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi5kZTYzYTY1CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLW1haW4uZjkwCitAQCAtMCwwICsxLDIzIEBA CisrISBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyshIAor KyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyshIAorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysh IAorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgcmV0dXJuIDA7Ci0rfQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAorKyAgICAgICAg dXNlIGxpYgorKwl1c2UgbGlibWFueSwgb25seTogdmFyX2oKKysgICAgICAgIGlmICh2YXJfaSAu bmUuIDEpIGNhbGwgYWJvcnQKKysJY2FsbCBsaWJfZnVuYworKyAgICAgICAgaWYgKHZhcl9pIC5u ZS4gMikgY2FsbCBhYm9ydAorKyAgICAgICAgaWYgKHZhcl9qIC5uZS4gMykgY2FsbCBhYm9ydAor KyAgICAgICAgdmFyX2kgPSB2YXJfaSAgICAgICAgICAgICAgICAgISBpLWlzLTIKKytlbmQKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiBuZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZjJkZTcxOAoraW5kZXggMDAwMDAwMC4uNGI0ZWE0 YwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20t cmVnaXN0ZXIuZXhwCi1AQCAtMCwwICsxLDMzIEBACisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2xpYnJhcnktbW9kdWxlLmV4cAorQEAgLTAsMCArMSw1MyBAQAogKyMgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIworKwogKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiArIwogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCkBAIC0yNjU2MCw2Mzkg KzE3MjIyLDYwMiBAQCBpbmRleCAwMDAwMDAwLi5mMmRlNzE4CiArIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKyMKICsjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1B IDAyMTExLTEzMDcsIFVTQS4KLSsjCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRl c3RzdWl0ZS4KKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3Rpbmcg YXJyYXktZnJvbS1yZWdpc3Rlci5leHAgImFycmF5LWZyb20tcmVnaXN0ZXIiICAgICAgXAotKwkJ CSAge2FycmF5LWZyb20tcmVnaXN0ZXIuYyBhcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuY30gXAot KwkJCSAge2RlYnVnIG9wdGltaXplPS1PMn1dIH0gewotKyAgICByZXR1cm4gLTEKKytzZXQgdGVz dGZpbGUgImxpYnJhcnktbW9kdWxlIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LW1haW4uZjkw Cisrc2V0IHNyY2xpYmZpbGUgJHt0ZXN0ZmlsZX0tbGliLmY5MAorK3NldCBsaWJmaWxlICR7dGVz dGZpbGV9LWxpYi5zbworK3NldCBiaW5maWxlICR7dGVzdGZpbGV9CisrCisrIyBSZXF1aXJlZCBm b3IgLWZQSUMgYnkgZ2RiX2NvbXBpbGVfc2hsaWIuCisraWYgW2dldF9jb21waWxlcl9pbmZvIG5v dC11c2VkXSB7CisrICAgd2FybmluZyAiQ291bGQgbm90IGdldCBjb21waWxlciBpbmZvIgorKyAg IHJldHVybiAtMQogK30KICsKLStpZiAhW3J1bnRvIGZ1bmNdIHRoZW4geworK2lmICB7IFtnZGJf Y29tcGlsZV9zaGxpYiAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2xpYmZpbGV9IiAkb2JqZGly LyRzdWJkaXIvJGxpYmZpbGUge2RlYnVnIGY3N31dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSAke3NyY2xpYmZpbGV9IgogKyAgICByZXR1cm4gLTEKICt9CiArCi0r Z2RiX3Rlc3QgInAgYXJyIiAiXFwkXFswLTlcXSsgPSBcXChpbnQgXFwqXFwpICoweFxbMC05YS1m XF0rIgotKwotKyMgU2VlbiByZWdyZXNzaW9uOgotKyMgQWRkcmVzcyByZXF1ZXN0ZWQgZm9yIGlk ZW50aWZpZXIgImFyciIgd2hpY2ggaXMgaW4gcmVnaXN0ZXIgJHJkaQotK2dkYl90ZXN0ICJwIGFy clxbMFxdIiAiXFwkXFswLTlcXSsgPSA0MiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5vcHQvZm9ydHJhbi1zdHJpbmcuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4t c3RyaW5nLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmY5OTdlZWMK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmlu Zy5leHAKLUBAIC0wLDAgKzEsNDEgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjIAotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjIAotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29w eSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyBGb3VuZGF0aW9u LCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMw NywgVVNBLiAgCi0rCi0rIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgotKwotKyMgVGVzdCBHREIgY2FuIGNvcGUgd2l0 aCBGb3J0cmFuIHN0cmluZ3MgaGF2aW5nIHRoZWlyIGxlbmd0aCBwcmVzZW50IGluIGEgQ1BVCi0r IyByZWdpc3Rlci4gIFdpdGggLU8wIHRoZSBzdHJpbmcgbGVuZ3RoIGlzIHBhc3NlZCBvbiB0aGUg c3RhY2suICBUbyBtYWtlIHRoaXMKLSsjIHRlc3QgbWVhbmluZ2Z1bCB0aGUgZm9sbG93IGFzc2Vy dGlvbiBzaG91bGQgcGFzcy4gIEl0IGlzIG5vdCBiZWluZyBjaGVja2VkCi0rIyBoZXJlIGFzIHRo ZSAiX3MiIHN5bWJvbCBpcyBjb21waWxlciBkZXBlbmRlbnQ6Ci0rIyAgIChnZGIpIGluZm8gYWRk cmVzcyBfcwotKyMgICBTeW1ib2wgIl9zIiBpcyBhIHZhcmlhYmxlIGluIHJlZ2lzdGVyIFhYLgor KyMgcHJlcGFyZV9mb3JfdGVzdGluZyBjYW5ub3QgYmUgdXNlZCBhcyBsaW5raW5nIHdpdGggJGxp YmZpbGUgY2Fubm90IGJlIHBhc3NlZAorKyMganVzdCBmb3IgdGhlIGxpbmtpbmcgcGhhc2UgKGFu ZCBub3QgdGhlIHNvdXJjZSBjb21waWxhdGlvbiBwaGFzZSkuICBBbmQgYW55CisrIyB3YXJuaW5n cyBvbiBpZ25vcmVkICRsaWJmaWxlIGFib3J0IHRoZSBwcm9jZXNzLgogKwotK3NldCB0ZXN0IGZv cnRyYW4tc3RyaW5nCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0fS5mOTAKLStpZiB7IFtwcmVwYXJlX2Zv cl90ZXN0aW5nICR7dGVzdH0uZXhwICR7dGVzdH0gJHtzcmNmaWxlfSB7ZGVidWcgZjc3IGFkZGl0 aW9uYWxfZmxhZ3M9LU8yfV0gfSB7CisraWYgIHsgW2dkYl9jb21waWxlIFtsaXN0ICRzcmNkaXIv JHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdICRvYmpkaXIvJHN1YmRp ci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICsgICAgcmV0dXJuIC0xCiArfQogKwor K2NsZWFuX3Jlc3RhcnQgJGJpbmZpbGUKKysKICtpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CiAr ICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgogKyAgICBjb250 aW51ZQogK30KICsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicyA9IHMi XQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJzID0gcyIKLStnZGJfdGVzdCAiZnJhbWUi ICIuKnM9J2ZvbycuKiIKLStnZGJfdGVzdCAicHR5cGUgcyIgInR5cGUgPSBjaGFyYWN0ZXJcXCoz IgotK2dkYl90ZXN0ICJwIHMiICJcXCRcWzAtOVxdKiA9ICdmb28nIgotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmluZy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5vcHQvZm9ydHJhbi1zdHJpbmcuZjkwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAw MDAwMC4uZTQ4ZDUyMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0 L2ZvcnRyYW4tc3RyaW5nLmY5MAotQEAgLTAsMCArMSwyOCBAQAotKyEgQ29weXJpZ2h0IDIwMDkg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIQotKyEgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSshIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv biAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rISBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rISBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyEKLSshIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rISBhbG9u ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQot KyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24s IE1BIDAyMTExLTEzMDcsIFVTQS4KLSshCi0rISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291 cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgotKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEph a3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgotKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIg dGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Lgot KwotKyAgc3Vicm91dGluZSBmKHMpCi0rICBjaGFyYWN0ZXIqKCopIHMKLSsgIHMgPSBzCi0rICBl bmQKLSsKLSsgIHByb2dyYW0gbWFpbgotKyAgY2FsbCBmICgnZm9vJykKLSsgIGVuZAotZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKLWluZGV4IGY2ZWY5MzguLjEwMzJhMmQgMTAwNjQ0Ci0t LS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY21kLmV4cAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKLUBAIC0yMCwzNiArMjAsMTUgQEAgaWYgJHRyYWNl bGV2ZWwgdGhlbiB7Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAKLS0jIFVzYWdlOiBn ZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgot LSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9m IGlucHV0LgotLSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3Vs dCBsaW5lIFJFU1VMVC4KLS0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZhaWwg b3RoZXJ3aXNlLgotLXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30gewotLSAg ICBnbG9iYWwgZ2RiX3Byb21wdAotLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRhcmdzIHsK LS0JaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7Ci0tCSAg ICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+KSQiIHsK LS0JCXBhc3MgIiRuYW1lIC0gJGlucHV0IgotLQkgICAgfQotLQl9XX0gewotLQkgICAgcmV0dXJu IDEKLS0JfQotLSAgICB9Ci0tICAgIHJldHVybiAwCi0tfQotLQotICMgU3RhcnQgd2l0aCBhIGZy ZXNoIGdkYi4KLSAKLSBnZGJfZXhpdAotIGdkYl9zdGFydAotIGdkYl9yZWluaXRpYWxpemVfZGly ICRzcmNkaXIvJHN1YmRpcgotIAotLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgJ2hl bGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0tICAgIC1yZSAibm90IHN1 cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24gc3Vw cG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAgfQotLSAgICAtcmUgIiRn ZGJfcHJvbXB0ICQiCXt9Ci0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVuc3Vw cG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQotIH0KKytn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiaS1pcy0yIl0KKytnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiaS1pcy0yIiAiLippLWlzLTIuKiIKKytnZGJfdGVzdCAicHJpbnQg dmFyX2kiICIgPSAyIgorK2dkYl90ZXN0ICJwcmludCB2YXJfaiIgIiA9IDMiCisrZ2RiX3Rlc3Qg InByaW50IHZhcl9rIiAiTm8gc3ltYm9sIFwidmFyX2tcIiBpbiBjdXJyZW50IGNvbnRleHRcXC4i CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCitpbmRleCAwYWNjZTRmLi5iOTUyMTYy IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKK0BAIC0xNSwyMSArMTUsMzEg QEAKICAKLSAjIFRlc3QgYSBzaW1wbGUgY29tbWFuZC4KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWZyYW1lLmV4cAotaW5kZXggYTY3ZWFhMy4uNTM4MGMwZiAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1mcmFtZS5leHAKLUBAIC0yMCw0MCArMjAsMjggQEAgaWYgJHRyYWNlbGV2ZWwgdGhl biB7Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotIH0KKyBzZXQgdGVzdGZpbGUgIm1vZHVsZSIK KyBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKKy1zZXQgYmluZmlsZSAke29iamRpcn0vJHtz dWJkaXJ9LyR7dGVzdGZpbGV9CiAgCi0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotKwotK2dk Yl9leGl0Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGly Ci0rCi0raWYgIVtweXRob25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRo b24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLSsgIHJldHVybiAtMQotK30KLSsKLSBzZXQgdGVzdGZp bGUgInB5LWZyYW1lIgotIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLSBzZXQgYmluZmlsZSAk e29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0gaWYgeyBbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2Rl YnVnfV0gIT0gIiIgfSB7Ci0gICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmls ZX0iCistaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0i ICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKKy0g ICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKKytpZiB7IFtwcmVwYXJl X2Zvcl90ZXN0aW5nICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmNzd9 XSB9IHsKICAgICAgcmV0dXJuIC0xCiAgfQogIAotLSMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFu ZCByZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0tIyBJ ZiByZXBvcnRfcGFzcyBpcyB0cnVlLCByZXBvcnQgYSBwYXNzIGlmIG5vIGV4Y2VwdGlvbiBpcyB0 aHJvd24uCi0tcHJvYyBnZGJfcHlfdGVzdF9zaWxlbnRfY21kIHtjbWQgbmFtZSByZXBvcnRfcGFz c30gewotLSAgZ2xvYmFsIGdkYl9wcm9tcHQKLS0KLS0gIGdkYl90ZXN0X211bHRpcGxlICRjbWQg JG5hbWUgewotLSAgICAgIC1yZSAiVHJhY2ViYWNrLiokZ2RiX3Byb21wdCAkIiAgeyBmYWlsICRu YW1lIH0KLS0gICAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCSAgICAgIHsgaWYgJHJlcG9ydF9wYXNz IHsgcGFzcyAkbmFtZSB9IH0KLS0gIH0KLS19Ci0tCi0tIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2Ri LgotLQogLWdkYl9leGl0CiAtZ2RiX3N0YXJ0CiAtZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCi0gZ2RiX2xvYWQgJHtiaW5maWxlfQotIAotLWdkYl90ZXN0X211bHRpcGxlICJw eXRob24gcHJpbnQgJ2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7Ci0t ICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewotLSAgICAgIHVuc3VwcG9y dGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKLS0gICAgICByZXR1cm4gLTEKLS0gICAg fQotLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXt9Ci0tfQotLQotICMgVGhlIGZvbGxvd2luZyB0 ZXN0cyByZXF1aXJlIGV4ZWN1dGlvbi4KLSAKLSBpZiAhW3J1bnRvX21haW5dIHRoZW4gewotQEAg LTY1LDE5ICs1MywyMCBAQCBnZGJfYnJlYWtwb2ludCAiZjIiCi0gZ2RiX2NvbnRpbnVlX3RvX2Jy ZWFrcG9pbnQgImJyZWFrcG9pbnQgYXQgZjIiCi0gZ2RiX3Rlc3QgInVwIiAiIiAiIgotIAotLWdk Yl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMSA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKSIg ImdldCBzZWNvbmQgZnJhbWUiIDAKLS1nZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZjAg PSBmMS5uZXdlciAoKSIgImdldCBmaXJzdCBmcmFtZSIgMAotK2dkYl9weV90ZXN0X3NpbGVudF9j bWQgInB5dGhvbiBmcmFtZXMgPSBnZGIuc2VsZWN0ZWRfdGhyZWFkICgpLmZyYW1lcyAoKSIgImdl dCBmcmFtZXMgbGlzdCIgMQotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgZnJhbWVzIiAiXFwoPGdk Yi5GcmFtZSBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sIDxnZGIuRnJhbWUgb2JqZWN0 IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+LCA8Z2RiLkZyYW1lIG9iamVjdCBhdCAweFxbXFs6eGRp Z2l0OlxdXF0rPlxcKSIgInZlcmlmeSBmcmFtZXMgbGlzdCIKLStnZGJfcHlfdGVzdF9zaWxlbnRf Y21kICJweXRob24gZjAgPSBmcmFtZXNcWzBcXSIgImdldCBmaXJzdCBmcmFtZSIgMAotK2dkYl9w eV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMSA9IGZyYW1lc1xbMVxdIiAiZ2V0IHNlY29uZCBm cmFtZSIgMAotIAotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjEi ICIgPSBGYWxzZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgotIGdkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBlcXVh bGl0eSBjb21wYXJpc29uICh0cnVlKSIKLS1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQg PScsIGYwICE9IGYxIiAiID0gVHJ1ZSIgInRlc3QgaW5lcXVhbGl0eSBjb21wYXJpc29uICh0cnVl KSIKLS1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYwIiAiID0gRmFs c2UiICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgotIGdkYl90ZXN0ICJweXRo b24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIgPSBUcnVlIiAidGVzdCBGcmFt ZS5pc192YWxpZCIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLm5hbWUg KCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFNRSIgIiA9IFRydWUiICJ0ZXN0 IEZyYW1lLnR5cGUiCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC51bndp bmRfc3RvcF9yZWFzb24gKCkgPT0gZ2RiLkZSQU1FX1VOV0lORF9OT19SRUFTT04iICIgPSBUcnVl IiAidGVzdCBGcmFtZS50eXBlIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9Jywg Z2RiLmZyYW1lX3N0b3BfcmVhc29uX3N0cmluZyAoZ2RiLkZSQU1FX1VOV0lORF9JTk5FUl9JRCki ICIgPSBwcmV2aW91cyBmcmFtZSBpbm5lciB0byB0aGlzIGZyYW1lIFxcKGNvcnJ1cHQgc3RhY2tc XD9cXCkiICJ0ZXN0IGdkYi5mcmFtZV9zdG9wX3JlYXNvbl9zdHJpbmciCi0gZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5wYyAoKSIgIiA9IFxbMC05XF0rIiAidGVzdCBGcmFt ZS5wYyIKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLmZ1bmN0aW9uICgp IiAiID0gc3ltYm9sIGZvciBmMiIgInRlc3QgRnJhbWUuZnVuY3Rpb24iCi0gZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5vbGRlciAoKSA9PSBmMSIgIiA9IFRydWUiICJ0ZXN0 IEZyYW1lLm9sZGVyIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjEubmV3 ZXIgKCkgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBGcmFtZS5uZXdlciIKLSBnZGJfdGVzdCAicHl0 aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hfc3VyZWx5 X2RvZXNudF9leGlzdCcpIiBcCi1AQCAtODUsNCArNzQsNyBAQCBnZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFibGVfd2hpY2hfc3VyZWx5X2RvZXNu dF9leAotICAgInRlc3QgRnJhbWUucmVhZF92YXIgLSBlcnJvciIKLSBnZGJfdGVzdCAicHl0aG9u IHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgnYScpIiAiID0gMSIgInRlc3QgRnJhbWUu cmVhZF92YXIgLSBzdWNjZXNzIgotIAotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZ2RiLnNlbGVjdGVkX3RocmVhZCAoKS5uZXdlc3RfZnJhbWUgKCkgPT0gZjAiICIgPSBUcnVl IiAidGVzdCBnZGIubmV3ZXN0X2ZyYW1lIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3Vs dCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYxIiAiID0gVHJ1ZSIgInRlc3QgZ2RiLnNl bGVjdGVkX2ZyYW1lIgotKwotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAu YmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRl c3QgRnJhbWUuYmxvY2siCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWZ1bmN0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mdW5jdGlvbi5leHAK LWluZGV4IDMwZmRlN2QuLjE0Y2Q5MGMgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktZnVuY3Rpb24uZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt ZnVuY3Rpb24uZXhwCi1AQCAtMjAsMzYgKzIwLDE1IEBAIGlmICR0cmFjZWxldmVsIHRoZW4gewot ICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSB9Ci0gCi0tIyBVc2FnZTogZ2RiX3B5X3Rlc3RfbXVs dGlwbGUgTkFNRSBJTlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0uLi4KLS0jIFJ1biBhIHRlc3Qg bmFtZWQgTkFNRSwgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dC4KLS0jIEFm dGVyIGVhY2ggaW5wdXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciByZXN1bHQgbGluZSBSRVNVTFQu Ci0tIyBTdWNjZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90aGVyd2lzZS4KLS1w cm9jIGdkYl9weV90ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsKLS0gICAgZ2xvYmFsIGdkYl9w cm9tcHQKLS0gICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7Ci0tCWlmIHtbZ2RiX3Rl c3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgewotLQkgICAgLXJlICJcW1xyXG5c XSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7Ci0tCQlwYXNzICIkbmFt ZSAtICRpbnB1dCIKLS0JICAgIH0KLS0JfV19IHsKLS0JICAgIHJldHVybiAxCi0tCX0KLS0gICAg fQotLSAgICByZXR1cm4gMAotLX0KKy1nZGJfbG9hZCAke2JpbmZpbGV9CiAtCi0gIyBTdGFydCB3 aXRoIGEgZnJlc2ggZ2RiLgotIAotIGdkYl9leGl0Ci0gZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlh bGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0gCi0tZ2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhvbiBw cmludCAnaGVsbG8sIHdvcmxkISciICJ2ZXJpZnkgcHl0aG9uIHN1cHBvcnQiIHsKLS0gICAgLXJl ICJub3Qgc3VwcG9ydGVkLiokZ2RiX3Byb21wdCAkIgl7Ci0tICAgICAgdW5zdXBwb3J0ZWQgInB5 dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgotLSAgICAgIHJldHVybiAtMQotLSAgICB9Ci0tICAg IC1yZSAiJGdkYl9wcm9tcHQgJCIJe30KLStpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4gewot KyAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgotKyAgcmV0dXJuIC0x CisgaWYgIVtydW50byBNQUlOX19dIHRoZW4geworICAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0 byBicmVha3BvaW50IE1BSU5fXyIKKyAgICAgY29udGludWUKICB9CiAgCi0gZ2RiX3B5X3Rlc3Rf bXVsdGlwbGUgImlucHV0IGNvbnZlbmllbmNlIGZ1bmN0aW9uIiBcCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZmVyaW9yLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktaW5mZXJpb3IuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjBiNDgyOTkKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS1pbmZlcmlvci5jCi1AQCAtMCwwICsxLDQ5IEBACi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2lu Y2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjaW5jbHVkZSA8c3RyaW5n Lmg+Ci0rCi0rI2RlZmluZSBDSFVOS19TSVpFIDE2MDAwIC8qIHNhbWUgYXMgZmluZGNtZC5jJ3Mg Ki8KLSsjZGVmaW5lIEJVRl9TSVpFICgyICogQ0hVTktfU0laRSkgLyogYXQgbGVhc3QgdHdvIGNo dW5rcyAqLwotKwotK3N0YXRpYyBpbnQ4X3QgaW50OF9zZWFyY2hfYnVmWzEwMF07Ci0rc3RhdGlj IGludDE2X3QgaW50MTZfc2VhcmNoX2J1ZlsxMDBdOwotK3N0YXRpYyBpbnQzMl90IGludDMyX3Nl YXJjaF9idWZbMTAwXTsKLStzdGF0aWMgaW50NjRfdCBpbnQ2NF9zZWFyY2hfYnVmWzEwMF07Ci0r Ci0rc3RhdGljIGNoYXIgKnNlYXJjaF9idWY7Ci0rc3RhdGljIGludCBzZWFyY2hfYnVmX3NpemU7 CistZ2RiX3Rlc3QgInByaW50IGkiICIgPSA0MiIKKysjIERvIG5vdCB1c2Ugc2ltcGxlIHNpbmds ZS1sZXR0ZXIgbmFtZXMgYXMgR0RCIHdvdWxkIHBpY2sgdXAgZm9yIGV4cGVjdGVkbHkKKysjIG5v bmV4aXN0aW5nIHN5bWJvbHMgc29tZSBzdGF0aWMgdmFyaWFibGVzIGZyb20gc3lzdGVtIGxpYnJh cmllcyBkZWJ1Z2luZm9zLgogKwotK3N0YXRpYyBpbnQgeDsKKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAiaS1pcy0xIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAi aS1pcy0xIiAiLippLWlzLTEuKiIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIgPSAxIiAicHJp bnQgdmFyX2kgdmFsdWUgMSIKICsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiaS1pcy0yIl0KKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiaS1pcy0yIiAiLippLWlz LTIuKiIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIgPSAyIiAicHJpbnQgdmFyX2kgdmFsdWUg MiIKICsKLStpbnQgZjIgKGludCBhKQotK3sKLSsgIGNoYXIgKnN0ciA9ICJoZWxsbywgdGVzdHN1 aXRlIjsKKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYS1iLWMtZCJdCisr Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImEtYi1jLWQiICIuKmEtYi1jLWQuKiIKKytnZGJf dGVzdCAicHJpbnQgdmFyX2EiICJObyBzeW1ib2wgXCJ2YXJfYVwiIGluIGN1cnJlbnQgY29udGV4 dFxcLiIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2IiICIgPSAxMSIKKytnZGJfdGVzdCAicHJpbnQg dmFyX2MiICJObyBzeW1ib2wgXCJ2YXJfY1wiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKKytnZGJf dGVzdCAicHJpbnQgdmFyX2QiICIgPSAxMiIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2kiICIgPSAx NCIgInByaW50IHZhcl9pIHZhbHVlIDE0IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbW9kdWxlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmY5 MAoraW5kZXggODFlZjM3Ni4uZmI2ZWNjZCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbW9kdWxlLmY5MAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1 bGUuZjkwCitAQCAtMTMsMTAgKzEzLDM3IEBACisgISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICEgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisgCistbW9kdWxlIG1vZAorLSAgICAgICAgaW50ZWdlciA6OiBpID0gNDIKKy1lbmQgbW9kdWxl IG1vZAorK21vZHVsZSBtb2QxCisrICAgICAgICBpbnRlZ2VyIDo6IHZhcl9pID0gMQorK2VuZCBt b2R1bGUgbW9kMQorIAorLSAgICAgICAgdXNlIG1vZAorLSAgICAgICAgcHJpbnQgKiwgaQorK21v ZHVsZSBtb2QyCisrICAgICAgICBpbnRlZ2VyIDo6IHZhcl9pID0gMgorK2VuZCBtb2R1bGUgbW9k MgogKwotKyAgcHV0cyAoc3RyKTsJLyogQnJlYWsgaGVyZS4gICovCisrbW9kdWxlIG1vZG1hbnkK KysgICAgICAgIGludGVnZXIgOjogdmFyX2EgPSAxMCwgdmFyX2IgPSAxMSwgdmFyX2MgPSAxMiwg dmFyX2kgPSAxNAorK2VuZCBtb2R1bGUgbW9kbWFueQogKwotKyAgcmV0dXJuICsrYTsKLSt9Cisr ICAgICAgICBzdWJyb3V0aW5lIHN1YjEKKysgICAgICAgIHVzZSBtb2QxCisrICAgICAgICBpZiAo dmFyX2kgLm5lLiAxKSBjYWxsIGFib3J0CisrICAgICAgICB2YXJfaSA9IHZhcl9pICAgICAgICAg ICAgICAgICAgICAgICAgICEgaS1pcy0xCisrICAgICAgICBlbmQKICsKLStpbnQgZjEgKGludCBh LCBpbnQgYikKLSt7Ci0rICByZXR1cm4gZjIoYSkgKyBiOwotK30KKysgICAgICAgIHN1YnJvdXRp bmUgc3ViMgorKyAgICAgICAgdXNlIG1vZDIKKysgICAgICAgIGlmICh2YXJfaSAubmUuIDIpIGNh bGwgYWJvcnQKKysgICAgICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAgICAgICAgICAg ISBpLWlzLTIKKysgICAgICAgIGVuZAogKwotK3N0YXRpYyB2b2lkCi0raW5pdF9idWZzICgpCi0r ewotKyAgc2VhcmNoX2J1Zl9zaXplID0gQlVGX1NJWkU7Ci0rICBzZWFyY2hfYnVmID0gbWFsbG9j IChzZWFyY2hfYnVmX3NpemUpOwotKyAgaWYgKHNlYXJjaF9idWYgPT0gTlVMTCkKLSsgICAgZXhp dCAoMSk7Ci0rICBtZW1zZXQgKHNlYXJjaF9idWYsICd4Jywgc2VhcmNoX2J1Zl9zaXplKTsKLSt9 CisrICAgICAgICB1c2UgbW9kbWFueSwgb25seTogdmFyX2IsIHZhcl9kID0+IHZhcl9jLCB2YXJf aQogKwotK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotK3sKLSsgIGluaXRfYnVm cyAoKTsKKysgICAgICAgIGNhbGwgc3ViMQorKyAgICAgICAgY2FsbCBzdWIyCiArCi0rICByZXR1 cm4gZjEgKDEsIDIpOwotK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktaW5mZXJpb3IuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZmVyaW9yLmV4 cAorKyAgICAgICAgaWYgKHZhcl9iIC5uZS4gMTEpIGNhbGwgYWJvcnQKKysgICAgICAgIGlmICh2 YXJfZCAubmUuIDEyKSBjYWxsIGFib3J0CisrICAgICAgICBpZiAodmFyX2kgLm5lLiAxNCkgY2Fs bCBhYm9ydAorKyAgICAgICAgdmFyX2IgPSB2YXJfYiAgICAgICAgICAgICAgICAgICAgICAgICAh IGEtYi1jLWQKKyBlbmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0 cmluZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKIG5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43MTliMTc4CitpbmRleCAwMDAwMDAwLi5iMTEy MGMzCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5m ZXJpb3IuZXhwCi1AQCAtMCwwICsxLDIwMSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdHJpbmcuZXhwCitAQCAtMCwwICsxLDU5IEBACisrIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiArIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyMKKysjIAogKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCisrIyAKICsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBH REIgdGVzdHN1aXRlLiAgSXQgdGVzdHMgdGhlIG1lY2hhbmlzbQotKyMgZXhwb3NpbmcgaW5mZXJp b3JzIHRvIFB5dGhvbi4KLSsKLStpZiAkdHJhY2VsZXZlbCB0aGVuIHsKLSsgICAgc3RyYWNlICR0 cmFjZWxldmVsCi0rfQotKwotKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KKysjIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBG b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLiAgCiArCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0 aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCiArCi0raWYgIVtweXRo b25fc3VwcG9ydGVkXSB0aGVuIHsKLSsgIHVuc3VwcG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBk aXNhYmxlZCIKLSsgIHJldHVybiAtMQotK30KKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBn ZGIgdGVzdHN1aXRlLiAgSXQgY29udGFpbnMgdGVzdHMgZm9yIEZvcnRyYW4KKysjIHN0cmluZ3Mg d2l0aCBkeW5hbWljIGxlbmd0aC4KICsKLStzZXQgdGVzdGZpbGUgInB5LWluZmVyaW9yIgotK3Nl dCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgdGVzdGZpbGUgInN0cmluZyIKKytzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5mOTAKICtzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9CiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisraWYg IHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZp bGV9IiBleGVjdXRhYmxlIHtkZWJ1ZyBmNzcgcXVpZXR9XSAhPSAiIiB9IHsKICsgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICsgICAgcmV0dXJuIC0xCiArfQogKwor K2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3Vi ZGlyCiArZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotKyMgVGhlIGZvbGxvd2luZyB0ZXN0cyByZXF1 aXJlIGV4ZWN1dGlvbi4KLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewotKyAgICBmYWlsICJD YW4ndCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIDAKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhl biB7CisrICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAg ICBjb250aW51ZQogK30KICsKLStydW50byBbZ2RiX2dldF9saW5lX251bWJlciAiQnJlYWsgaGVy ZS4iXQotKwotKyMgVGVzdCBiYXNpYyBnZGIuSW5mZXJpb3IgYXR0cmlidXRlcyBhbmQgbWV0aG9k cy4KLSsKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gaW5mZXJpb3JzID0gZ2RiLmlu ZmVyaW9ycyAoKSIgImdldCBpbmZlcmlvcnMgbGlzdCIgMQotK2dkYl90ZXN0ICJweXRob24gcHJp bnQgaW5mZXJpb3JzIiAiXFwoPGdkYi5JbmZlcmlvciBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpc XVxdKz4sXFwpIiAidmVyaWZ5IGluZmVyaW9ycyBsaXN0IgotK2dkYl9weV90ZXN0X3NpbGVudF9j bWQgInB5dGhvbiBpMCA9IGluZmVyaW9yc1xbMFxdIiAiZ2V0IGZpcnN0IGluZmVyaW9yIiAwCi0r Ci0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBpMCA9PSBpbmZlcmlvcnNcWzBc XSIgIiA9IFRydWUiICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgotK2dkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgaTAubnVtIiAiID0gXFswLTlcXSsiICJ0ZXN0IElu ZmVyaW9yLm51bSIKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGkwLnBpZCIg IiA9IFxbMC05XF0rIiAidGVzdCBJbmZlcmlvci5waWQiCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCAncmVzdWx0ID0nLCBpMC53YXNfYXR0YWNoZWQiICIgPSBGYWxzZSIgInRlc3QgSW5mZXJpb3Iu d2FzX2F0dGFjaGVkIgotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgaTAudGhyZWFkcyAoKSIgIlxc KDxnZGIuSW5mZXJpb3JUaHJlYWQgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+LFxcKSIg InRlc3QgSW5mZXJpb3IudGhyZWFkcyIKLSsKLSsjIFRlc3QgbWVtb3J5IHJlYWQgYW5kIHdyaXRl IG9wZXJhdGlvbnMuCi0rCi0rZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGFkZHIgPSBn ZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92YXIgKCdzdHInKSIgXAotKyAgInJlYWQgc3RyIGFk ZHJlc3MiIDAKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc3RyID0gZ2RiLmluZmVy aW9ycygpXFswXF0ucmVhZF9tZW1vcnkgKGFkZHIsIDUpIiBcCi0rICAicmVhZCBzdHIgY29udGVu dHMiIDEKLStnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gc3RyXFsxXF0gPSAnYSciICJj aGFuZ2Ugc3RyIiAwCi0rZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGdkYi5pbmZlcmlv cnMoKVxbMFxdLndyaXRlX21lbW9yeSAoYWRkciwgc3RyKSIgXAotKyAgIndyaXRlIHN0ciIgMQot K2dkYl90ZXN0ICJwcmludCBzdHIiICIgPSAweFxbXFs6eGRpZ2l0OlxdXF0rIFwiaGFsbG8sIHRl c3RzdWl0ZVwiIiBcCi0rICAiZW5zdXJlIHN0ciB3YXMgY2hhbmdlZCBpbiB0aGUgaW5mZXJpb3Ii CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZhci1pbml0Il0KKytnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAidmFyLWluaXQiCisrZ2RiX3Rlc3QgInB0eXBlIGMiICJ0 eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9MVxcKXxcXCoxKSIKKytnZGJfdGVzdCAicHR5cGUgZCIg InR5cGUgPSBjaGFyYWN0ZXIoXFwoa2luZD04XFwpfFxcKjgpIgorK2dkYl90ZXN0ICJwdHlwZSBl IiAidHlwZSA9IGNoYXJhY3RlcihcXChraW5kPTRcXCl8XFwqNCkiCisrZ2RiX3Rlc3QgInB0eXBl IGYiICJ0eXBlID0gY2hhcmFjdGVyKFxcKGtpbmQ9NFxcKXxcXCo0KSBcXCg3LDg6MTBcXCkiCisr Z2RiX3Rlc3QgInB0eXBlICplIiAiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBv aW50ZXIgdmFsdWUuIgorK2dkYl90ZXN0ICJwdHlwZSAqZiIgInR5cGUgPSBjaGFyYWN0ZXIoXFwo a2luZD00XFwpfFxcKjQpIFxcKDdcXCkiCisrZ2RiX3Rlc3QgInAgYyIgIlxcJFxbMC05XF0qID0g J2MnIgorK2dkYl90ZXN0ICJwIGQiICJcXCRcWzAtOVxdKiA9ICdkICAgICAgICciCisrZ2RiX3Rl c3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2cgICAnIgorK2dkYl90ZXN0ICJwIGYiICJcXCRcWzAt OVxdKiA9IFxcKFxcKCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2gg ICAnLCAnaCAgICdcXCkgXFwoICdoICAgJywgJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAn LCAnaCAgICcsICdoICAgJ1xcKSBcXCggJ2ggICAnLCAnaCAgICcsICdoICAgJywgJ2ggICAnLCAn aCAgICcsICdoICAgJywgJ2ggICAnXFwpIFxcKSIKKytnZGJfdGVzdCAicCAqZSIgIkF0dGVtcHQg dG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKKytnZGJfdGVzdCAicCAq ZiIgIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVlLiIKICsK LSsjIFRlc3QgbWVtb3J5IHNlYXJjaC4KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251 bWJlciAidmFyLWZpbmlzaCJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5p c2giCisrZ2RiX3Rlc3QgInAgZSIgIlxcJFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIK KytnZGJfdGVzdCAicCBmIiAiXFwkXFswLTlcXSogPSBcXChcXCggJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKCAnZjIgICcsICdmICAg JywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCkiICJw ICpmIHJlLXNldCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmlu Zy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5mOTAKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yMjZkYzVkCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5mOTAKK0BAIC0wLDAgKzEsMzcgQEAKKysh IENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv bjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrISBidXQgV0lUSE9VVCBBTlkg V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyEgTUVSQ0hB TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQor KyEgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyshCisrISBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyEgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUKKyshIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1 aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisrIQorKyEgSWhpcyBmaWxlIGlz IHRoZSBGb3J0cmFuIHNvdXJjZSBmaWxlIGZvciBkeW5hbWljLmV4cC4KKyshIE9yaWdpbmFsIGZp bGUgd3JpdHRlbiBieSBKYWt1YiBKZWxpbmVrIDxqYWt1YkByZWRoYXQuY29tPi4KKyshIE1vZGlm aWVkIGZvciB0aGUgR0RCIHRlc3RjYXNlIGJ5IEphbiBLcmF0b2NodmlsIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPi4KICsKLStzZXQgaGV4X251bWJlciB7MHhbMC05YS1mQS1GXVswLTlhLWZB LUZdKn0KLStzZXQgZGVjX251bWJlciB7WzAtOV0rfQotK3NldCBoaXN0b3J5X3ByZWZpeCB7WyRd WzAtOV0qID0gfQotK3NldCBuZXdsaW5lIHtbXHJcbl0rfQotK3NldCBwYXR0ZXJuX25vdF9mb3Vu ZCAiJHtuZXdsaW5lfS5dIgotK3NldCBvbmVfcGF0dGVybl9mb3VuZCAiJHtuZXdsaW5lfS4ke2Rl Y19udW1iZXJ9TF0iCi0rc2V0IHR3b19wYXR0ZXJuc19mb3VuZCAiJHtuZXdsaW5lfS4ke2RlY19u dW1iZXJ9TCwgJHtkZWNfbnVtYmVyfUxdIgorK3N1YnJvdXRpbmUgZm9vIChlLCBmKQorKyAgY2hh cmFjdGVyIChsZW49MSkgOjogYworKyAgY2hhcmFjdGVyIChsZW49OCkgOjogZAorKyAgY2hhcmFj dGVyIChsZW49KikgOjogZQorKyAgY2hhcmFjdGVyIChsZW49KikgOjogZiAoMTo3LCA4OjEwKQor KyAgYyA9ICdjJworKyAgZCA9ICdkJworKyAgZSA9ICdlJyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICEgdmFyLWluaXQKKysgIGYgPSAnZicKKysgIGYoMSw5KSA9ICdmMicK KysgIGMgPSAnYycgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhIHZhci1m aW5pc2gKKytlbmQgc3Vicm91dGluZSBmb28KKysgIGNoYXJhY3RlciAobGVuPTQpIDo6IGcsIGgg KDE6NywgODoxMCkKKysgIGcgPSAnZycKKysgIGggPSAnaCcKKysgIGNhbGwgZm9vIChnLCBoKQor K2VuZAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCitpbmRleCA5ZTc4N2YwLi41Y2ExNWQ1 IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAorQEAgLTk1LDYgKzk1LDEwIEBAIHBy b2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKKyAJCXNldCBkZXNjcmlwdGlvbiAic3RlcCBvdmVy IHR0eWFyZyBpbml0aWFsaXphdGlvbiIKKyAJCXNldCBjb21tYW5kICJzdGVwIgorIAkgICAgfQor KwkgICAgLXJlICIuKnB5dGhvbl9zY3JpcHQgPSAwLiokZ2RiX3Byb21wdCAkIiB7CisrCQlzZXQg ZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxpemF0aW9uIgorKwkJ c2V0IGNvbW1hbmQgInN0ZXAiCisrCSAgICB9CisgCSAgICAtcmUgIi4qdGltZV9hdF9zdGFydHVw ID0gZ2V0X3J1bl90aW1lLiokZ2RiX3Byb21wdCAkIiB7CisgCQlzZXQgZGVzY3JpcHRpb24gIm5l eHQgb3ZlciBnZXRfcnVuX3RpbWUgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCisgCQlzZXQgY29t bWFuZCAibmV4dCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLmU3MTM5MWUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmphdmEvam5wZS5leHAKK0BAIC0wLDAgKzEsNzcgQEAKKysjIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyMgVGVzdCBzdHJpbmcgcGF0dGVy bi4KKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor KyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0rZ2RiX3Rlc3QgInNldCAqKGlu dDMyX3QqKSAmaW50OF9zZWFyY2hfYnVmXFsxMFxdID0gMHg2MTYxNjE2MSIgIiIgIiIKLStnZGJf dGVzdCAicHkgc2VhcmNoX2J1ZiA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ2lu dDhfc2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNo X2J1Zi5hZGRyZXNzIiAiIiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5 cGUuc2l6ZW9mIiAiIiAiIgorK2lmICR0cmFjZWxldmVsIHRoZW4geworKyAgc3RyYWNlICR0cmFj ZWxldmVsCisrfQogKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5z ZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsICdhYWEnKSIgXAotKyAgIiR7dHdvX3Bh dHRlcm5zX2ZvdW5kfSIgImZpbmQgc3RyaW5nIHBhdHRlcm4iCisrbG9hZF9saWIgImphdmEuZXhw IgogKwotKyMgVGVzdCBub3QgZmluZGluZyBwYXR0ZXJuIGJlY2F1c2Ugc2VhcmNoIHJhbmdlIHRv byBzbWFsbCwgd2l0aAotKyMgcG90ZW50aWFsIGZpbmQgYXQgdGhlIGVkZ2Ugb2YgdGhlIHJhbmdl LgorK3NldCB0ZXN0ZmlsZSAiam5wZSIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5qYXZhCisr c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorK2lmICB7IFtjb21w aWxlX2phdmFfZnJvbV9zb3VyY2UgJHtzcmNkaXJ9LyRzdWJkaXIvJHtzcmNmaWxlfSAke2JpbmZp bGV9ICItZyJdICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3Ny Y2Rpcn0vJHN1YmRpci8ke3NyY2ZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CiArCi0rZ2RiX3Rl c3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2Fk ZHIsIDEwKzMsICdhYWFhJykiIFwKLSsgICIke3BhdHRlcm5fbm90X2ZvdW5kfSIgInBhdHRlcm4g bm90IGZvdW5kIGF0IGVuZCBvZiByYW5nZSIKKytzZXQgcHJtc19pZCAwCisrc2V0IGJ1Z19pZCAw CiArCi0rIyBJbmNyZWFzZSB0aGUgc2VhcmNoIHJhbmdlIGJ5IDEgYW5kIHdlIHNob3VsZCBmaW5k IHRoZSBwYXR0ZXJuLgorKyMgU3RhcnQgd2l0aCBhIGZyZXNoIGdkYi4KICsKLStnZGJfdGVzdCAi cHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwg MTArMysxLCBcWydhJywgJ2EnLCAnYScsICdhJ1xdKSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91 bmR9IiAicGF0dGVybiBmb3VuZCBhdCBlbmQgb2YgcmFuZ2UiCisrZ2RiX2V4aXQKKytnZGJfc3Rh cnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2Jp bmZpbGV9CiArCi0rIyBUZXN0IG1heC1jb3VudCB3aXRoIHNpemUsIHdpdGggZGlmZmVyZW50IHBh cmFtZXRlciBwb3NpdGlvbgorK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhayBo ZXJlIiAkdGVzdGZpbGUuamF2YV0KKytnZGJfdGVzdCAiYnJlYWsgJHRlc3RmaWxlLmphdmE6JGxp bmUiICIiCiArCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJj aF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIDEsIDEpIiBcCi0r ICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJzaXplID0gMSwgbWF4X2NvdW50ID0gMSIKKytnZGJf dGVzdCAicnVuIiBcCisrICAiLy8gYnJlYWsgaGVyZS4qIiBcCisrICAicnVuIGphdmEgbmV4dC1v dmVyLXRocm93IgogKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5z ZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIFxbMHg2MSwgMHg2MVxdLCAxLCAyKSIg XAotKyAgIiR7dHdvX3BhdHRlcm5zX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAyLCBu b3JtYWwgb3JkZXJpbmciCisrIyBTZWUgd2hldGhlciB3ZSBoYXZlIHRoZSBuZWVkZWQgdW53aW5k ZXIgaG9va3MuCisrc2V0IG9rIDEKKytnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9E ZWJ1Z0hvb2siICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayBpbiBqYXZhIiB7CisrICAgIC1yZSAi PSAuKl9VbndpbmRfRGVidWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICJjaGVj ayBmb3IgdW53aW5kZXIgaG9vayBpbiBqYXZhIgorKyAgICB9CisrICAgIC1yZSAiTm8gc3ltYm9s IC4qIGluIGN1cnJlbnQgY29udGV4dC4/XHJcbiRnZGJfcHJvbXB0ICQiIHsKKysJIyBQYXNzIHRo ZSB0ZXN0IHNvIHdlIGRvbid0IGdldCBib2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KKysJc2V0 dXBfeGZhaWwgKi0qLSoKKysJZmFpbCAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIK KysJc2V0IG9rIDAKKysgICAgfQorK30KKytpZiB7ISRva30geworKyAgICB1bnRlc3RlZCBqbnBl LmV4cAorKyAgICByZXR1cm4gLTEKKyt9CiArCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZl cmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAw eDYxXF0sIHNpemUgPSAxLCBtYXhfY291bnQgPSAyKSIgXAotKyAgIiR7dHdvX3BhdHRlcm5zX2Zv dW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAyLCBub3JtYWwgb3JkZXJpbmcsIHdpdGgga2V5 d29yZHMiCisrZ2RiX3Rlc3QgImhhbmRsZSBTSUdTRUdWIG5vc3RvcCBub3ByaW50IiBcCisrICAi U0lHU0VHVi4qZmF1bHQiIFwKKysgICJkaXNhYmxlIFNJR1NFR1YgZm9yIG5leHQtb3Zlci1OUEUi CiArCi0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1v cnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIG1heF9jb3VudCA9IDIsIHNp emUgPSAxKSIgXAotKyAgIiR7dHdvX3BhdHRlcm5zX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291 bnQgPSAyLCBpbnZlcnRlZCBvcmRlcmluZyIKKysjIFRoZSBsaW5lIHdoZXJlIHdlIHN0b3AgZGlm ZmVyIGFjY29yZGluZyB0byBnY2o7IGNoZWNrIGp1c3Qgd2UgZGlkIG5vdCBhbHJlYWR5CisrIyBl eGVjdXRlIHRoZSBjYXRjaCBwb2ludC4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVy aW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWydhJywgJ2En XF0sIG1heF9jb3VudCA9IDIpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAibWF4X2Nv dW50ID0gMiwgd2l0aCBrZXl3b3JkIgorK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiIiBcCisrICAi bmV4dCBvdmVyIE5QRSIKICsKLSsjIFRlc3QgMTYtYml0IHBhdHRlcm4uCisrZ2RiX2JyZWFrcG9p bnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImNhdGNoIHBvaW50Il0KKytnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAiY2F0Y2ggcG9pbnQiICIuKi8vIGNhdGNoIHBvaW50LioiCitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmphdmEgYi9nZGIvdGVzdHN1aXRlL2dkYi5q YXZhL2pucGUuamF2YQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjM1MjQ4 MzAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5qYXZh CitAQCAtMCwwICsxLDM4IEBACisrLy8gVGVzdCBuZXh0LW92ZXItTlBFLgorKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rZ2RiX3Rlc3QgInNl dCBpbnQxNl9zZWFyY2hfYnVmXFsxMFxdID0gMHgxMjM0IiAiIiAiIgotK2dkYl90ZXN0ICJweSBz ZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50MTZfc2VhcmNo X2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRy ZXNzIiAiIiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9m IiAiIiAiIgotK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGlu dDE2X3QpIDB4MTIzNCcpIiAiIiAiIgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClc WzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4MTIzNCwgMikiIFwKLSsg ICIke29uZV9wYXR0ZXJuX2ZvdW5kfSIgImZpbmQgMTYtYml0IHBhdHRlcm4sIHdpdGggcHl0aG9u IHBhdHRlcm4iCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLStnZGJfdGVzdCAi cHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwg bGVuZ3RoLCBwYXR0ZXJuKSIgXAotKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCAxNi1i aXQgcGF0dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgorKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisr ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CiArCi0rIyBUZXN0IDMyLWJpdCBwYXR0ZXJuLgorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrICAgKi8KICsKLStnZGJfdGVzdCAic2V0IGludDMyX3NlYXJjaF9idWZcWzEwXF0gPSAw eDEyMzQ1Njc4IiAiIiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVk X2ZyYW1lICgpLnJlYWRfdmFyICgnaW50MzJfc2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0 ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNzIiAiIiAiIgotK2dkYl90ZXN0ICJw eSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAiIiAiIgotK2dkYl90ZXN0ICJweSBw YXR0ZXJuID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDMyX3QpIDB4MTIzNDU2NzgnKSIgIiIg IiIKKytwdWJsaWMgY2xhc3Mgam5wZQorK3sKKysgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG5wZSAo KQorKyAgeworKyAgICByZXR1cm4gKChPYmplY3QpIG51bGwpLnRvU3RyaW5nKCk7CisrICB9CiAr Ci0rZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkg KHN0YXJ0X2FkZHIsIGxlbmd0aCwgMHgxMjM0NTY3OCwgNCkiIFwKLSsgICIke29uZV9wYXR0ZXJu X2ZvdW5kfSIgImZpbmQgMzItYml0IHBhdHRlcm4sIHdpdGggcHl0aG9uIHBhdHRlcm4iCi0rZ2Ri X3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0YXJ0 X2FkZHIsIGxlbmd0aCwgcGF0dGVybikiIFwKLSsgICIke29uZV9wYXR0ZXJuX2ZvdW5kfSIgImZp bmQgMzItYml0IHBhdHRlcm4sIHdpdGggdmFsdWUgcGF0dGVybiIKKysgIHB1YmxpYyBzdGF0aWMg dm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKQorKyAgeworKyAgICB0cnkKKysgICAgICB7CisrCVN5 c3RlbS5vdXQucHJpbnRsbiAobnBlICgpKTsgLy8gYnJlYWsgaGVyZQorKyAgICAgIH0KKysgICAg Y2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG4pCisrICAgICAgeworKwlTeXN0ZW0ub3V0LnBy aW50bG4gKCJzdWNjZXNzIik7IC8vIGNhdGNoIHBvaW50CisrICAgICAgfQorKyAgfQorK30KK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5j LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MjlmNDU3CistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMK K0BAIC0wLDAgKzEsMjIgQEAKKysvKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCi0rIyBUZXN0IDY0LWJpdCBwYXR0ZXJuLgorKyAgIENvcHlyaWdodCAyMDA5 IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotK2dkYl90ZXN0ICJzZXQgaW50NjRf c2VhcmNoX2J1ZlxbMTBcXSA9IDB4ZmVkY2JhOTg3NjU0MzIxMExMIiAiIiAiIgotK2dkYl90ZXN0 ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50NjRf c2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1 Zi5hZGRyZXNzIiAiIiAiIgotK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUu c2l6ZW9mIiAiIiAiIgotK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNlX2FuZF9ldmFs ICgnKGludDY0X3QpIDB4ZmVkY2JhOTg3NjU0MzIxMExMJykiICIiICIiCisrICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygp XFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCAweGZlZGNiYTk4NzY1NDMy MTAsIDgpIiBcCi0rICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDY0LWJpdCBwYXR0ZXJu LCB3aXRoIHB5dGhvbiBwYXR0ZXJuIgotK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3Jz KClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIHBhdHRlcm4pIiBcCi0r ICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIDY0LWJpdCBwYXR0ZXJuLCB3aXRoIHZhbHVl IHBhdHRlcm4iCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLSsjIFRlc3QgbWl4ZWQtc2l6 ZWQgcGF0dGVybnMuCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCiArCi0rZ2Ri X3Rlc3QgInNldCAqKGludDhfdCopICZzZWFyY2hfYnVmXFsxMFxdID0gMHg2MiIgIiIgIiIKLStn ZGJfdGVzdCAic2V0ICooaW50MTZfdCopICZzZWFyY2hfYnVmXFsxMVxdID0gMHg2MzYzIiAiIiAi IgotK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWzEzXF0gPSAweDY0NjQ2 NDY0IiAiIiAiIgotK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1l ICgpLnJlYWRfdmFyICgnc2VhcmNoX2J1ZicpIiAiIiAiIgotK2dkYl90ZXN0ICJweSBzdGFydF9h ZGRyID0gc2VhcmNoX2J1ZlxbMFxdLmFkZHJlc3MiICIiICIiCi0rZ2RiX3Rlc3QgInB5IHBhdHRl cm4xID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDhfdCkgMHg2MicpIiAiIiAiIgotK2dkYl90 ZXN0ICJweSBwYXR0ZXJuMiA9IGdkYi5wYXJzZV9hbmRfZXZhbCAoJyhpbnQxNl90KSAweDYzNjMn KSIgIiIgIiIKLStnZGJfdGVzdCAicHkgcGF0dGVybjMgPSBnZGIucGFyc2VfYW5kX2V2YWwgKCco aW50MzJfdCkgMHg2NDY0NjQ2NCcpIiAiIiAiIgorK2ludAorK2Z1bmMgKGludCAqYXJyKQorK3sK KysgIHJldHVybiBhcnJbMF07CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJv bS1yZWdpc3Rlci5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMzA5MGU3 ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20t cmVnaXN0ZXIuYworQEAgLTAsMCArMSwyOCBAQAorKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKLStnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9y cygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgMTAwLCBcW3BhdHRlcm4xLCBwYXR0 ZXJuMiwgcGF0dGVybjNcXSkiIFwKLSsgICAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCBt aXhlZC1zaXplZCBwYXR0ZXJuIgorKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgogKwotKyMgVGVzdCBzZWFyY2ggc3Bhbm5pbmcgYSBsYXJnZSByYW5nZSwg aW4gdGhlIHBhcnRpY3VsYXIgY2FzZSBvZiBuYXRpdmUKLSsjIHRhcmdldHMsIHRlc3QgdGhlIHNl YXJjaCBzcGFubmluZyBtdWx0aXBsZSBjaHVua3MuCi0rIyBSZW1vdGUgdGFyZ2V0cyBtYXkgaW1w bGVtZW50IHRoZSBzZWFyY2ggZGlmZmVyZW50bHkuCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KICsKLStzZXQgQ0hVTktfU0laRSAxNjAwMCA7CisrICAgVGhpcyBwcm9ncmFtIGlzIGRp c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls cy4KICsKLStnZGJfdGVzdCAic2V0ICooaW50MzJfdCopICZzZWFyY2hfYnVmXFswKiR7Q0hVTktf U0laRX0rMTAwXF0gPSAweDEyMzQ1Njc4IiAiIiAiIgotK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90 KikgJnNlYXJjaF9idWZcWzEqJHtDSFVOS19TSVpFfSsxMDBcXSA9IDB4MTIzNDU2NzgiICIiICIi Ci0rZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkucmVhZF92 YXIgKCdzZWFyY2hfYnVmJykiICIiICIiCi0rZ2RiX3Rlc3QgInB5IGxlbmd0aCA9IGdkYi5zZWxl Y3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ3NlYXJjaF9idWZfc2l6ZScpIiAiIiAiIgorKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotK2dkYl90ZXN0ICJweSBwcmludCBnZGIu aW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4MTIz NDU2NzgsIDQpIiBcCi0rICAiJHt0d29fcGF0dGVybnNfZm91bmR9IiAic2VhcmNoIHNwYW5uaW5n IGxhcmdlIHJhbmdlIgorK2V4dGVybiBpbnQgZnVuYyAoaW50ICphcnIpOwogKwotKyMgRm9yIG5h dGl2ZSB0YXJnZXRzLCB0ZXN0IGEgcGF0dGVybiBzdHJhZGRsaW5nIGEgY2h1bmsgYm91bmRhcnku CisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBpbnQgYXJyW10gPSB7IDQyIH07CiArCi0raWYg W2lzbmF0aXZlXSB7Ci0rICAgIGdkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZc WyR7Q0hVTktfU0laRX0tMVxdID0gMHhmZGI5NzUzMSIgIiIgIiIKKysgIGZ1bmMgKGFycik7CiAr Ci0rICAgIGdkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVt b3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4ZmRiOTc1MzEsIDQpIiBcCi0rICAgICAgIiR7b25l X3BhdHRlcm5fZm91bmR9IiAiZmluZCBwYXR0ZXJuIHN0cmFkZGxpbmcgY2h1bmsgYm91bmRhcnki CisrICByZXR1cm4gMDsKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWluZnRocmVhZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZnRocmVhZC5j CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuZXhwCiBuZXcg ZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjJlYjlmMgoraW5kZXggMDAwMDAwMC4u ZjJkZTcxOAogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWluZnRocmVhZC5jCi1AQCAtMCwwICsxLDE0IEBACi0raW50IGYyIChpbnQgYSkKLSt7Ci0rICBy ZXR1cm4gKythOwotK30KKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJl Z2lzdGVyLmV4cAorQEAgLTAsMCArMSwzMyBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysj CisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx LTEzMDcsIFVTQS4KKysjCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgZ2RiIHRlc3RzdWl0 ZS4KICsKLStpbnQgZjEgKGludCBhLCBpbnQgYikKLSt7Ci0rICByZXR1cm4gZjIoYSkgKyBiOwor K2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgYXJyYXktZnJvbS1yZWdpc3Rlci5leHAgImFycmF5 LWZyb20tcmVnaXN0ZXIiICAgICAgXAorKwkJCSAge2FycmF5LWZyb20tcmVnaXN0ZXIuYyBhcnJh eS1mcm9tLXJlZ2lzdGVyLWZ1bmMuY30gXAorKwkJCSAge2RlYnVnIG9wdGltaXplPS1PMn1dIH0g eworKyAgICByZXR1cm4gLTEKICt9CiArCi0raW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2 W10pCi0rewotKyAgcmV0dXJuIGYxICgxLCAyKTsKKytpZiAhW3J1bnRvIGZ1bmNdIHRoZW4gewor KyAgICByZXR1cm4gLTEKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWluZnRocmVhZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mdGhyZWFk LmV4cAorKworK2dkYl90ZXN0ICJwIGFyciIgIlxcJFxbMC05XF0rID0gXFwoaW50IFxcKlxcKSAq MHhcWzAtOWEtZlxdKyIKKysKKysjIFNlZW4gcmVncmVzc2lvbjoKKysjIEFkZHJlc3MgcmVxdWVz dGVkIGZvciBpZGVudGlmaWVyICJhcnIiIHdoaWNoIGlzIGluIHJlZ2lzdGVyICRyZGkKKytnZGJf dGVzdCAicCBhcnJcWzBcXSIgIlxcJFxbMC05XF0rID0gNDIiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9mb3J0cmFuLXN0cmluZy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAw Li5lOWQxOGI3CitpbmRleCAwMDAwMDAwLi5mOTk3ZWVjCiAtLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mdGhyZWFkLmV4cAotQEAgLTAsMCArMSw1OCBA QAotKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmV4cAorQEAgLTAsMCAr MSw0MSBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl LCBvcgogKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCisrIyAKICsj IFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAogKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKICsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGZvciBtb3JlIGRldGFpbHMuCi0rIworKyMgCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u Ci0rCi0rIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3Rz IHRoZSBtZWNoYW5pc20KLSsjIGV4cG9zaW5nIGluZmVyaW9yIHRocmVhZHMgdG8gUHl0aG9uLgot KwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKLSt9Ci0r Ci0rIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgotKwotK2dkYl9leGl0Ci0rZ2RiX3N0YXJ0Ci0r Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisrIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyMgRm91bmRhdGlv biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEz MDcsIFVTQS4gIAogKwotK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7Ci0rICB1bnN1cHBv cnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4gLTEKLSt9CisrIyBU aGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+LgogKwotK3NldCB0ZXN0ZmlsZSAicHktaW5mdGhyZWFkIgotK3NldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9CisrIyBUZXN0IEdEQiBjYW4gY29wZSB3aXRoIEZvcnRyYW4gc3RyaW5ncyBoYXZpbmcgdGhl aXIgbGVuZ3RoIHByZXNlbnQgaW4gYSBDUFUKKysjIHJlZ2lzdGVyLiAgV2l0aCAtTzAgdGhlIHN0 cmluZyBsZW5ndGggaXMgcGFzc2VkIG9uIHRoZSBzdGFjay4gIFRvIG1ha2UgdGhpcworKyMgdGVz dCBtZWFuaW5nZnVsIHRoZSBmb2xsb3cgYXNzZXJ0aW9uIHNob3VsZCBwYXNzLiAgSXQgaXMgbm90 IGJlaW5nIGNoZWNrZWQKKysjIGhlcmUgYXMgdGhlICJfcyIgc3ltYm9sIGlzIGNvbXBpbGVyIGRl cGVuZGVudDoKKysjICAgKGdkYikgaW5mbyBhZGRyZXNzIF9zCisrIyAgIFN5bWJvbCAiX3MiIGlz IGEgdmFyaWFibGUgaW4gcmVnaXN0ZXIgWFguCiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVn fV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0i Cisrc2V0IHRlc3QgZm9ydHJhbi1zdHJpbmcKKytzZXQgc3JjZmlsZSAke3Rlc3R9LmY5MAorK2lm IHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0fS5leHAgJHt0ZXN0fSAke3NyY2ZpbGV9IHtk ZWJ1ZyBmNzcgYWRkaXRpb25hbF9mbGFncz0tTzJ9XSB9IHsKICsgICAgcmV0dXJuIC0xCiArfQog KwotK2dkYl9sb2FkICR7YmluZmlsZX0KLSsKLSsjIFRoZSBmb2xsb3dpbmcgdGVzdHMgcmVxdWly ZSBleGVjdXRpb24uCi0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgZmFpbCAiQ2Fu J3QgcnVuIHRvIG1haW4iCi0rICAgIHJldHVybiAwCisraWYgIVtydW50byBNQUlOX19dIHRoZW4g eworKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAg Y29udGludWUKICt9CiArCi0rcnVudG8gW2dkYl9nZXRfbGluZV9udW1iZXIgIkJyZWFrIGhlcmUu Il0KKytnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAicyA9IHMiXQorK2dkYl9j b250aW51ZV90b19icmVha3BvaW50ICJzID0gcyIKKytnZGJfdGVzdCAiZnJhbWUiICIuKnM9J2Zv bycuKiIKKytnZGJfdGVzdCAicHR5cGUgcyIgInR5cGUgPSBjaGFyYWN0ZXJcXCozIgorK2dkYl90 ZXN0ICJwIHMiICJcXCRcWzAtOVxdKiA9ICdmb28nIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmluZy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvZm9y dHJhbi1zdHJpbmcuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTQ4 ZDUyMAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4t c3RyaW5nLmY5MAorQEAgLTAsMCArMSwyOCBAQAorKyEgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyshIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysh CisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrISBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyEgRm91bmRh dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTEx LTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhlIEZvcnRyYW4gc291cmNlIGZpbGUg Zm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3cml0dGVuIGJ5IEpha3ViIEplbGlu ZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQgZm9yIHRoZSBHREIgdGVzdGNhc2Ug YnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+LgogKwotKyMgVGVz dCBiYXNpYyBnZGIuSW5mZXJpb3IgYXR0cmlidXRlcyBhbmQgbWV0aG9kcy4KKysgIHN1YnJvdXRp bmUgZihzKQorKyAgY2hhcmFjdGVyKigqKSBzCisrICBzID0gcworKyAgZW5kCiArCi0rZ2RiX3B5 X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIHQwID0gZ2RiLnNlbGVjdGVkX3RocmVhZCAoKSIgInRl c3QgZ2RiLnNlbGVjdGVkX3RocmVhZCIgMQotK2dkYl90ZXN0ICJweXRob24gcHJpbnQgdDAiICJc XDxnZGIuSW5mZXJpb3JUaHJlYWQgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidmVy aWZ5IEluZmVyaW9yVGhyZWFkIG9iamVjdCIKLStnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1 bHQgPScsIHQwLm51bSIgIiA9IFxbMC05XF0rIiAidGVzdCBJbmZlcmlvci5udW0iCi1kaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKLWluZGV4IGI0YjM3NzYuLjM1 OWM0ZWQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJp bnQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhw Ci1AQCAtMjcsMTIgKzI3LDIwIEBAIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0 ZXN0ZmlsZX0KKysgIHByb2dyYW0gbWFpbgorKyAgY2FsbCBmICgnZm9vJykKKysgIGVuZAorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jbWQuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKK2luZGV4IDJhM2VkMGQuLmZmNWRlMzMgMTAwNjQ0 CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY21kLmV4cAorKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKK0BAIC0yMCwzNiArMjAsMTUgQEAgaWYgJHRy YWNlbGV2ZWwgdGhlbiB7CisgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorIH0KKyAKKy0jIFVzYWdl OiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4u LgorLSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVz IG9mIGlucHV0LgorLSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJl c3VsdCBsaW5lIFJFU1VMVC4KKy0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJlIHNlZW47IGZh aWwgb3RoZXJ3aXNlLgorLXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUgYXJnc30gewor LSAgICBnbG9iYWwgZ2RiX3Byb21wdAorLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1bHR9ICRhcmdz IHsKKy0JaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlucHV0IiB7Cist CSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21wdCB8ICo+KSQi IHsKKy0JCXBhc3MgIiRuYW1lIC0gJGlucHV0IgorLQkgICAgfQorLQl9XX0geworLQkgICAgcmV0 dXJuIDEKKy0JfQorLSAgICB9CistICAgIHJldHVybiAwCistfQorLQogICMgU3RhcnQgd2l0aCBh IGZyZXNoIGdkYi4KKyAKICBnZGJfZXhpdAogIGdkYl9zdGFydAorIGdkYl9yZWluaXRpYWxpemVf ZGlyICRzcmNkaXIvJHN1YmRpcgorIAogLWdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQg J2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7CiAtICAgIC1yZSAibm90 IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJewogLSAgICAgIHVuc3VwcG9ydGVkICJweXRob24g c3VwcG9ydCBpcyBkaXNhYmxlZCIKQEAgLTI3MjAyLDM0ICsxNzgyNywxNCBAQCBpbmRleCBiNGIz Nzc2Li4zNTljNGVkIDEwMDY0NAogK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7CiArICB1 bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCiArICByZXR1cm4gLTEKLSt9 Ci0rCi0rIyBSdW4gYSBjb21tYW5kIGluIEdEQiwgYW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQ eXRob24gZXhjZXB0aW9uIGlzIHRocm93bi4KLSsjIElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJl cG9ydCBhIHBhc3MgaWYgbm8gZXhjZXB0aW9uIGlzIHRocm93bi4KLStwcm9jIGdkYl9weV90ZXN0 X3NpbGVudF9jbWQge2NtZCBuYW1lIHJlcG9ydF9wYXNzfSB7Ci0rICBnbG9iYWwgZ2RiX3Byb21w dAotKwotKyAgZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkbmFtZSB7Ci0rICAgICAgLXJlICJUcmFj ZWJhY2suKiRnZGJfcHJvbXB0ICQiICB7IGZhaWwgJG5hbWUgfQotKyAgICAgIC1yZSAiJGdkYl9w cm9tcHQgJCIJICAgICAgeyBpZiAkcmVwb3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQotKyAgfQot IH0KLSAKLSAjIFJ1biBhIGNvbW1hbmQgaW4gR0RCLCBhbmQgcmVwb3J0IGEgZmFpbHVyZSBpZiBh IFB5dGhvbiBleGNlcHRpb24gaXMgdGhyb3duLgotQEAgLTEwMiw2ICsxMTAsOCBAQCBwcm9jIHJ1 bl9sYW5nX3Rlc3RzIHtsYW5nfSB7Ci0gCi0gICAgIGdkYl90ZXN0ICJwcmludCBjIiAiID0gY29u dGFpbmVyICRoZXggXCJjb250YWluZXJcIiB3aXRoIDIgZWxlbWVudHMgPSB7JG5sICouMC4gPSAy MywkbmwgKi4xLiA9IDcyJG5sfSIKLSAKLSsgICAgZ2RiX3Rlc3QgInByaW50IG51bGxzdHIiICJS dW50aW1lRXJyb3I6IEVycm9yIHJlYWRpbmcgc3RyaW5nIGZyb20gaW5mZXJpb3IuKiIKLSsKLSAg ICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHlcLiIKICB9CiAg Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXRlbXBsYXRlLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10ZW1wbGF0ZS5leHAKLWluZGV4IGNlYTZhZTAu LmM5YTYzZDQgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdGVtcGxh dGUuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdGVtcGxhdGUuZXhwCi1A QCAtMjAsNiArMjAsMTcgQEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7CisgIyBUZXN0IGEgc2ltcGxl IGNvbW1hbmQuCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1l LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKK2luZGV4IDg2ZmU2 NjAuLjRjNzI5NWYgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJh bWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCitAQCAt MjAsNDAgKzIwLDI4IEBAIGlmICR0cmFjZWxldmVsIHRoZW4gewogICAgICBzdHJhY2UgJHRyYWNl bGV2ZWwKICB9CiAgCkBAIC0yNzI0NCwyMCArMTc4NDksMzQgQEAgaW5kZXggY2VhNmFlMC4uYzlh NjNkNCAxMDA2NDQKICsgIHJldHVybiAtMQogK30KICsKLSBzZXQgdGVzdGZpbGUgInB5LXRlbXBs YXRlIgotIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNjCisgc2V0IHRlc3RmaWxlICJweS1mcmFt ZSIKKyBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7 c3ViZGlyfS8ke3Rlc3RmaWxlfQotQEAgLTI5LDIwICs0MCw2IEBAIGlmIHsgW2dkYl9jb21waWxl ICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxl IFwKKysKKyBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9 IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKyAgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQogIAor LSMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFuZCByZXBvcnQgYSBmYWlsdXJlIGlmIGEgUHl0aG9u IGV4Y2VwdGlvbiBpcyB0aHJvd24uCistIyBJZiByZXBvcnRfcGFzcyBpcyB0cnVlLCByZXBvcnQg YSBwYXNzIGlmIG5vIGV4Y2VwdGlvbiBpcyB0aHJvd24uCistcHJvYyBnZGJfcHlfdGVzdF9zaWxl bnRfY21kIHtjbWQgbmFtZSByZXBvcnRfcGFzc30geworLSAgZ2xvYmFsIGdkYl9wcm9tcHQKKy0K Ky0gIGdkYl90ZXN0X211bHRpcGxlICRjbWQgJG5hbWUgeworLSAgICAgIC1yZSAiVHJhY2ViYWNr LiokZ2RiX3Byb21wdCAkIiAgeyBmYWlsICRuYW1lIH0KKy0gICAgICAtcmUgIiRnZGJfcHJvbXB0 ICQiCSAgICAgIHsgaWYgJHJlcG9ydF9wYXNzIHsgcGFzcyAkbmFtZSB9IH0KKy0gIH0KKy19Cist CiAtIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgogLQogLWdkYl9leGl0CiAtZ2RiX3N0YXJ0CiAt Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0tCi0tZ2RiX3Rlc3RfbXVsdGlw bGUgInB5dGhvbiBwcmludCAyMyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgeworIGdkYl9sb2Fk ICR7YmluZmlsZX0KKyAKKy1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywg d29ybGQhJyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewogLSAgICAtcmUgIm5vdCBzdXBwb3J0 ZWQuKiRnZGJfcHJvbXB0ICQiCXsKIC0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQg aXMgZGlzYWJsZWQiCiAtICAgICAgcmV0dXJuIC0xCkBAIC0yNzI2NSw4NCArMTc4ODQsNTAgQEAg aW5kZXggY2VhNmFlMC4uYzlhNjNkNCAxMDA2NDQKIC0gICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7 fQogLX0KIC0KLSBwcm9jIHRlc3RfdGVtcGxhdGVfYXJnIHt0eXBlfSB7Ci0gICAgIGdsb2JhbCB0 ZXN0ZmlsZSBzcmNkaXIgc3ViZGlyIHNyY2ZpbGUgYmluZmlsZQotICAgICBpZiB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwCi1pbmRleCAyOTU4MjMzLi4wZGUxY2FlIDEw MDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAotQEAgLTI5Miw2ICsyOTIsMTUg QEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKLSAgICAgInByaW50IHZhbHVlJ3Mg dHlwZSIKLSB9Ci0gCi0rIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGEgY2FzdCBmYWlsdXJlLiAgVGhl IGJ1ZyB3YXMgdGhhdCBpZiB3ZSBjYXN0IGEKLSsjIHZhbHVlIHRvIGl0cyBvd24gdHlwZSwgZ2Ri IGNvdWxkIGNyYXNoLiAgVGhpcyBoYXBwZW5lZCBiZWNhdXNlIHdlCi0rIyBjb3VsZCBlbmQgdXAg ZG91YmxlLWZyZWVpbmcgYSBzdHJ1Y3QgdmFsdWUuCi0rcHJvYyB0ZXN0X2Nhc3RfcmVncmVzc2lv biB7fSB7Ci0rICBnZGJfdGVzdCAicHl0aG9uIHYgPSBnZGIuVmFsdWUoNSkiICIiICJjcmVhdGUg dmFsdWUgZm9yIGNhc3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gdiA9IHYuY2FzdCh2LnR5 cGUpIiAiIiAiY2FzdCB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgotKyAgZ2RiX3Rlc3QgInB5dGhvbiBw cmludCB2IiAiNSIgInByaW50IHZhbHVlIGZvciBjYXN0IHRlc3QiCi0rfQotKwotICMgUmVncmVz c2lvbiB0ZXN0IGZvciBpbnZhbGlkIHN1YnNjcmlwdCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMg dGhhdAotICMgdGhlIHR5cGUgb2YgdGhlIHZhbHVlIHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZv cmUgYWxsb3dpbmcgYQotICMgc3Vic2NyaXB0IG9wZXJhdGlvbiB0byBwcm9jZWVkLgotQEAgLTM2 NiwxNiArMzc1LDIzIEBAIHByb2MgdGVzdF9zdWJzY3JpcHRfcmVncmVzc2lvbiB7bGFuZ30gewot IGdkYl9leGl0Ci0gZ2RiX3N0YXJ0Ci0gZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3Vi ZGlyCi0tZ2RiX2xvYWQgJHtiaW5maWxlfQorICMgVGhlIGZvbGxvd2luZyB0ZXN0cyByZXF1aXJl IGV4ZWN1dGlvbi4KICAKLS1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywg d29ybGQhJyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAtcmUgIm5vdCBzdXBwb3J0 ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQg aXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0gICAgLXJlICIkZ2RiX3By b21wdCAkIgl7fQotK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7Ci0rICB1bnN1cHBvcnRl ZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0rICByZXR1cm4gLTEKLSB9CisgaWYgIVty dW50b19tYWluXSB0aGVuIHsKK0BAIC02NSwxOSArNTMsMjAgQEAgZ2RiX2JyZWFrcG9pbnQgImYy IgorIGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVha3BvaW50IGF0IGYyIgorIGdkYl90 ZXN0ICJ1cCIgIiIgIiIKICAKLStzZXQgdGVzdGZpbGUgInB5LXZhbHVlIgotK3NldCBzcmNmaWxl ICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZp bGV9Ci0rCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxl fSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQotK30KLSsK LStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0gdGVzdF92YWx1ZV9jcmVhdGlvbgotIHRlc3RfdmFs dWVfbnVtZXJpY19vcHMKLSB0ZXN0X3ZhbHVlX2Jvb2xlYW4KLUBAIC0zOTEsNiArNDA3LDcgQEAg aWYgIVtydW50b19tYWluXSB0aGVuIHsKKy1nZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24g ZjEgPSBnZGIuc2VsZWN0ZWRfZnJhbWUgKCkiICJnZXQgc2Vjb25kIGZyYW1lIiAwCistZ2RiX3B5 X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGYwID0gZjEubmV3ZXIgKCkiICJnZXQgZmlyc3QgZnJh bWUiIDAKKytnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZnJhbWVzID0gZ2RiLnNlbGVj dGVkX3RocmVhZCAoKS5mcmFtZXMgKCkiICJnZXQgZnJhbWVzIGxpc3QiIDEKKytnZGJfdGVzdCAi cHl0aG9uIHByaW50IGZyYW1lcyIgIlxcKDxnZGIuRnJhbWUgb2JqZWN0IGF0IDB4XFtcWzp4ZGln aXQ6XF1cXSs+LCA8Z2RiLkZyYW1lIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0OlxdXF0rPiwgPGdk Yi5GcmFtZSBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz5cXCkiICJ2ZXJpZnkgZnJhbWVz IGxpc3QiCisrZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGYwID0gZnJhbWVzXFswXF0i ICJnZXQgZmlyc3QgZnJhbWUiIDAKKytnZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZjEg PSBmcmFtZXNcWzFcXSIgImdldCBzZWNvbmQgZnJhbWUiIDAKICAKLSB0ZXN0X3ZhbHVlX2luX2lu ZmVyaW9yCi0gdGVzdF92YWx1ZV9hZnRlcl9kZWF0aAotK3Rlc3RfY2FzdF9yZWdyZXNzaW9uCisg Z2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCA9PSBmMSIgIiA9IEZhbHNlIiAi dGVzdCBlcXVhbGl0eSBjb21wYXJpc29uIChmYWxzZSkiCisgZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCAncmVzdWx0ID0nLCBmMCA9PSBmMCIgIiA9IFRydWUiICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlz b24gKHRydWUpIgorLWdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjEi ICIgPSBUcnVlIiAidGVzdCBpbmVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgorLWdkYl90ZXN0 ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjAiICIgPSBGYWxzZSIgInRlc3QgaW5l cXVhbGl0eSBjb21wYXJpc29uIChmYWxzZSkiCisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVz dWx0ID0nLCBmMC5pc192YWxpZCAoKSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLmlzX3ZhbGlkIgor IGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAubmFtZSAoKSIgIiA9IGYyIiAi dGVzdCBGcmFtZS5uYW1lIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAu dHlwZSAoKSA9PSBnZGIuTk9STUFMX0ZSQU1FIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUudHlwZSIK KyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnVud2luZF9zdG9wX3JlYXNv biAoKSA9PSBnZGIuRlJBTUVfVU5XSU5EX05PX1JFQVNPTiIgIiA9IFRydWUiICJ0ZXN0IEZyYW1l LnR5cGUiCisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBnZGIuZnJhbWVfc3Rv cF9yZWFzb25fc3RyaW5nIChnZGIuRlJBTUVfVU5XSU5EX0lOTkVSX0lEKSIgIiA9IHByZXZpb3Vz IGZyYW1lIGlubmVyIHRvIHRoaXMgZnJhbWUgXFwoY29ycnVwdCBzdGFja1xcP1xcKSIgInRlc3Qg Z2RiLmZyYW1lX3N0b3BfcmVhc29uX3N0cmluZyIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwLnBjICgpIiAiID0gXFswLTlcXSsiICJ0ZXN0IEZyYW1lLnBjIgorK2dkYl90 ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuZnVuY3Rpb24gKCkiICIgPSBzeW1ib2wg Zm9yIGYyIiAidGVzdCBGcmFtZS5mdW5jdGlvbiIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdy ZXN1bHQgPScsIGYwLm9sZGVyICgpID09IGYxIiAiID0gVHJ1ZSIgInRlc3QgRnJhbWUub2xkZXIi CisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMS5uZXdlciAoKSA9PSBmMCIg IiA9IFRydWUiICJ0ZXN0IEZyYW1lLm5ld2VyIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jl c3VsdCA9JywgZjAucmVhZF92YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250X2V4aXN0 JykiIFwKK0BAIC04NSw0ICs3NCw3IEBAIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZjAucmVhZF92YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250X2V4CisgICAidGVz dCBGcmFtZS5yZWFkX3ZhciAtIGVycm9yIgorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3Vs dCA9JywgZjAucmVhZF92YXIgKCdhJykiICIgPSAxIiAidGVzdCBGcmFtZS5yZWFkX3ZhciAtIHN1 Y2Nlc3MiCiAgCi0gIyBUaGUgZm9sbG93aW5nIHRlc3QgcmVjb21waWxlcyB0aGUgYmluYXJ5IHRv IHRlc3QgZWl0aGVyIEMgb3IgQysrCi0gIyB2YWx1ZXMuIAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 dGhvbi5leHAKLWluZGV4IDUyMjNmYzguLjAzZTFlYWIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHl0aG9uLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5dGhvbi5leHAKLUBAIC0yNiwzMCArMjYsOSBAQCBnZGJfZXhpdAotIGdkYl9zdGFydAotIGdk Yl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX3RocmVhZCAoKS5uZXdlc3RfZnJhbWUgKCkgPT0g ZjAiICIgPSBUcnVlIiAidGVzdCBnZGIubmV3ZXN0X2ZyYW1lIgorIGdkYl90ZXN0ICJweXRob24g cHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09IGYxIiAiID0gVHJ1ZSIg InRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1lIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jl c3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBhdCAweFxbXFs6eGRpZ2l0 OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1m dW5jdGlvbi5leHAKK2luZGV4IDQ2MTI5NWQuLmVhMzM1OTYgMTAwNjQ0CistLS0gYS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktZnVuY3Rpb24uZXhwCitAQCAtMjAsMzYgKzIwLDE1IEBAIGlmICR0cmFjZWxl dmVsIHRoZW4geworICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKyB9CiAgCi0tZ2RiX3Rlc3RfbXVs dGlwbGUgInB5dGhvbiBwcmludCAyMyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgewotLSAgICAt cmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKLS0gICAgICB1bnN1cHBvcnRlZCAi cHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCi0tICAgICAgcmV0dXJuIC0xCi0tICAgIH0KLS0g ICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQotLX0KLS0KIC0jIFVzYWdlOiBnZGJfcHlfdGVzdF9t dWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQgUkVTVUxUfS4uLgogLSMgUnVuIGEgdGVz dCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRpcGxlIGxpbmVzIG9mIGlucHV0LgogLSMg QWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VM VC4KQEAgLTI3MzU5LDQyNiArMTc5NDQsMzE1IEBAIGluZGV4IDUyMjNmYzguLjAzZTFlYWIgMTAw NjQ0CiAtCX0KIC0gICAgfQogLSAgICByZXR1cm4gMAorLX0KKy0KKyAjIFN0YXJ0IHdpdGggYSBm cmVzaCBnZGIuCisgCisgZ2RiX2V4aXQKKyBnZGJfc3RhcnQKKyBnZGJfcmVpbml0aWFsaXplX2Rp ciAkc3JjZGlyLyRzdWJkaXIKKyAKKy1nZGJfdGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdo ZWxsbywgd29ybGQhJyIgInZlcmlmeSBweXRob24gc3VwcG9ydCIgeworLSAgICAtcmUgIm5vdCBz dXBwb3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsKKy0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1 cHBvcnQgaXMgZGlzYWJsZWQiCistICAgICAgcmV0dXJuIC0xCistICAgIH0KKy0gICAgLXJlICIk Z2RiX3Byb21wdCAkIgl7fQogK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7CiArICB1bnN1 cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCiArICByZXR1cm4gLTEKICB9CiAg Ci0gZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgIm11bHRpLWxpbmUgcHl0aG9uIGNvbW1hbmQiIFwKLWRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jr b2ZmLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2Zm LmMKKyBnZGJfcHlfdGVzdF9tdWx0aXBsZSAiaW5wdXQgY29udmVuaWVuY2UgZnVuY3Rpb24iIFwK K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uNGRjMzA4YgoraW5kZXggMDAwMDAwMC4uMGI0ODI5OQogLS0tIC9k ZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmst Zm9ya29mZi5jCi1AQCAtMCwwICsxLDE3NSBAQAotKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVu IGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgotKwotKyAgIENv cHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy ZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsg ICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktaW5mZXJpb3IuYworQEAgLTAsMCArMSw0OSBAQAorKyNpbmNsdWRlIDxz dGRpby5oPgorKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CiArI2lu Y2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgogKwotK3N0YXRpYyB2b2lkCi0r ZGVsYXkgKHZvaWQpCi0rewotKyAgaW50IGkgPSB1c2xlZXAgKDEwMDAwMDAgLyAxMDApOwotKyAg YXNzZXJ0IChpID09IDAgfHwgZXJybm8gPT0gRUlOVFIpOwotK30KKysjZGVmaW5lIENIVU5LX1NJ WkUgMTYwMDAgLyogc2FtZSBhcyBmaW5kY21kLmMncyAqLworKyNkZWZpbmUgQlVGX1NJWkUgKDIg KiBDSFVOS19TSVpFKSAvKiBhdCBsZWFzdCB0d28gY2h1bmtzICovCiArCi0rI2lmIGRlZmluZWQg Rk9MTE9XX1BBUkVOVAorK3N0YXRpYyBpbnQ4X3QgaW50OF9zZWFyY2hfYnVmWzEwMF07Cisrc3Rh dGljIGludDE2X3QgaW50MTZfc2VhcmNoX2J1ZlsxMDBdOworK3N0YXRpYyBpbnQzMl90IGludDMy X3NlYXJjaF9idWZbMTAwXTsKKytzdGF0aWMgaW50NjRfdCBpbnQ2NF9zZWFyY2hfYnVmWzEwMF07 CiArCi0rc3RhdGljIHZvaWQKLStmb3Jrb2ZmIChpbnQgbnIpCi0rewotKyAgcGlkX3QgY2hpbGQs IHBpZF9nb3Q7Ci0rICBpbnQgZXhpdF9jb2RlID0gNDIgKyBucjsKLSsgIGludCBzdGF0dXMsIGk7 Cisrc3RhdGljIGNoYXIgKnNlYXJjaF9idWY7Cisrc3RhdGljIGludCBzZWFyY2hfYnVmX3NpemU7 CiArCi0rICBjaGlsZCA9IGZvcmsgKCk7Ci0rICBzd2l0Y2ggKGNoaWxkKQotKyAgICB7Ci0rICAg IGNhc2UgLTE6Ci0rICAgICAgYXNzZXJ0ICgwKTsKLSsgICAgY2FzZSAwOgotKyAgICAgIHByaW50 ZiAoImNoaWxkJWQ6ICVkXG4iLCBuciwgKGludCkgZ2V0cGlkICgpKTsKLSsgICAgICAvKiBEZWxh eSB0byBnZXQgYm90aCB0aGUgImNoaWxkJWQiIGFuZCAicGFyZW50JWQiIG1lc3NhZ2UgcHJpbnRl ZCB3aXRob3V0Ci0rCSBhIHJhY2UgYnJlYWtpbmcgZXhwZWN0IGJ5IGl0cyBlbmRsZXNzIHdhaXQg b24gYCRnZGJfcHJvbXB0JCc6Ci0rCSBCcmVha3BvaW50IDMsIGJyZWFrcG9pbnQgKCkgYXQgLi4v Li4vLi4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYzozMwotKwkg MzMgICAgICB9Ci0rCSAoZ2RiKSBwYXJlbnQyOiAxNDIyMyAgKi8KLSsgICAgICBpID0gc2xlZXAg KDEpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKytzdGF0aWMgaW50IHg7CiArCi0rICAgICAg LyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZm9yZ290dGVuIGJyZWFr cG9pbnQpLiAgKi8KLSsgICAgICB2YXIrKzsKLSsgICAgICBicmVha3BvaW50ICgpOwogKwotKyAg ICAgIF9leGl0IChleGl0X2NvZGUpOwotKyAgICBkZWZhdWx0OgotKyAgICAgIHByaW50ZiAoInBh cmVudCVkOiAlZFxuIiwgbnIsIChpbnQpIGNoaWxkKTsKLSsgICAgICAvKiBEZWxheSB0byBnZXQg Ym90aCB0aGUgImNoaWxkJWQiIGFuZCAicGFyZW50JWQiIG1lc3NhZ2UgcHJpbnRlZCwgc2VlCi0r CSBhYm92ZS4gICovCi0rICAgICAgaSA9IHNsZWVwICgxKTsKLSsgICAgICBhc3NlcnQgKGkgPT0g MCk7CisraW50IGYyIChpbnQgYSkKKyt7CisrICBjaGFyICpzdHIgPSAiaGVsbG8sIHRlc3RzdWl0 ZSI7CiArCi0rICAgICAgcGlkX2dvdCA9IHdhaXQgKCZzdGF0dXMpOwotKyAgICAgIGFzc2VydCAo cGlkX2dvdCA9PSBjaGlsZCk7Ci0rICAgICAgYXNzZXJ0IChXSUZFWElURUQgKHN0YXR1cykpOwot KyAgICAgIGFzc2VydCAoV0VYSVRTVEFUVVMgKHN0YXR1cykgPT0gZXhpdF9jb2RlKTsKKysgIHB1 dHMgKHN0cik7CS8qIEJyZWFrIGhlcmUuICAqLwogKwotKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNh dWdodCBoZXJlIChhZ2FpbnN0IGEgZmFsc2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCi0rICAg ICAgYnJlYWtwb2ludCAoKTsKLSsgICAgfQorKyAgcmV0dXJuICsrYTsKICt9CiArCi0rI2VsaWYg ZGVmaW5lZCBGT0xMT1dfQ0hJTEQKLSsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHVzcjFfZ290Owot KwotK3N0YXRpYyB2b2lkCi0raGFuZGxlcl91c3IxIChpbnQgc2lnbm8pCisraW50IGYxIChpbnQg YSwgaW50IGIpCiArewotKyAgdXNyMV9nb3QrKzsKKysgIHJldHVybiBmMihhKSArIGI7CiArfQog KwogK3N0YXRpYyB2b2lkCi0rZm9ya29mZiAoaW50IG5yKQorK2luaXRfYnVmcyAoKQogK3sKLSsg IHBpZF90IGNoaWxkOwotKyAgaW50IGksIGxvb3A7Ci0rICBzdHJ1Y3Qgc2lnYWN0aW9uIGFjdCwg b2xkYWN0OwotKyNpZmRlZiBUSFJFQUQKLSsgIHZvaWQgKnRocmVhZF9yZXN1bHQ7Ci0rI2VuZGlm Ci0rCi0rICBtZW1zZXQgKCZhY3QsIDAsIHNpemVvZiBhY3QpOwotKyAgYWN0LnNhX2ZsYWdzID0g U0FfUkVTVEFSVDsKLSsgIGFjdC5zYV9oYW5kbGVyID0gaGFuZGxlcl91c3IxOwotKyAgc2lnZW1w dHlzZXQgKCZhY3Quc2FfbWFzayk7Ci0rICBpID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmYWN0LCAm b2xkYWN0KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIGNoaWxkID0gZm9yayAoKTsKLSsg IHN3aXRjaCAoY2hpbGQpCi0rICAgIHsKLSsgICAgY2FzZSAtMToKLSsgICAgICBhc3NlcnQgKDAp OwotKyAgICBkZWZhdWx0OgotKyAgICAgIHByaW50ZiAoInBhcmVudCVkOiAlZFxuIiwgbnIsIChp bnQpIGNoaWxkKTsKLSsKLSsgICAgICAvKiBTbGVlcCBmb3IgYSB3aGlsZSB0byBwb3NzaWJseSBn ZXQgaW5jb3JyZWN0bHkgQVRUQUNIX1RIUkVBRGVkIGJ5IEdEQgotKwkgdHJhY2luZyB0aGUgY2hp bGQgZm9yayB3aXRoIG5vIGxvbmdlciB2YWxpZCB0aHJlYWQvbHdwIGVudHJpZXMgb2YgdGhlCi0r CSBwYXJlbnQuICAqLwotKwotKyAgICAgIGkgPSBzbGVlcCAoMik7Ci0rICAgICAgYXNzZXJ0IChp ID09IDApOwotKwotKyAgICAgIC8qIFdlIG11c3Qgbm90IGdldCBjYXVnaHQgaGVyZSAoYWdhaW5z dCBhIGZvcmdvdHRlbiBicmVha3BvaW50KS4gICovCi0rCi0rICAgICAgdmFyKys7Ci0rICAgICAg YnJlYWtwb2ludCAoKTsKLSsKLSsjaWZkZWYgVEhSRUFECi0rICAgICAgLyogQW5kIG5laXRoZXIg Z290IGNhdWdodCBvdXIgdGhyZWFkLiAgKi8KKysgIHNlYXJjaF9idWZfc2l6ZSA9IEJVRl9TSVpF OworKyAgc2VhcmNoX2J1ZiA9IG1hbGxvYyAoc2VhcmNoX2J1Zl9zaXplKTsKKysgIGlmIChzZWFy Y2hfYnVmID09IE5VTEwpCisrICAgIGV4aXQgKDEpOworKyAgbWVtc2V0IChzZWFyY2hfYnVmLCAn eCcsIHNlYXJjaF9idWZfc2l6ZSk7CisrfQogKwotKyAgICAgIHN0ZXAgPSA5OTsKLSsgICAgICBp ID0gcHRocmVhZF9qb2luICh0aHJlYWQsICZ0aHJlYWRfcmVzdWx0KTsKLSsgICAgICBhc3NlcnQg KGkgPT0gMCk7Ci0rICAgICAgYXNzZXJ0ICh0aHJlYWRfcmVzdWx0ID09ICh2b2lkICopIDk5VUwp OwotKyNlbmRpZgorK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorK3sKKysgIGlu aXRfYnVmcyAoKTsKICsKLSsgICAgICAvKiBCZSBzdXJlIG91ciBjaGlsZCBrbm93cyB3ZSBkaWQg bm90IGdldCBjYXVnaHQgYWJvdmUuICAqLworKyAgcmV0dXJuIGYxICgxLCAyKTsKKyt9CitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWluZmVyaW9yLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZlcmlvci5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi43MTliMTc4CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktaW5mZXJpb3IuZXhwCitAQCAtMCwwICsxLDIwMSBAQAorKyMgQ29w eXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgICAg IGkgPSBraWxsIChjaGlsZCwgU0lHVVNSMSk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOworKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl CisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsgICAgICAvKiBTbGVlcCBmb3IgYSB3aGls ZSB0byBjaGVjayBHREIncyBgaW5mbyB0aHJlYWRzJyBubyBsb25nZXIgdHJhY2tzIHVzIGluCi0r CSB0aGUgY2hpbGQgZm9yay4gICovCisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRl c3RzdWl0ZS4gIEl0IHRlc3RzIHRoZSBtZWNoYW5pc20KKysjIGV4cG9zaW5nIGluZmVyaW9ycyB0 byBQeXRob24uCiArCi0rICAgICAgaSA9IHNsZWVwICgyKTsKLSsgICAgICBhc3NlcnQgKGkgPT0g MCk7CisraWYgJHRyYWNlbGV2ZWwgdGhlbiB7CisrICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30K ICsKLSsgICAgICBfZXhpdCAoMCk7Ci0rICAgIGNhc2UgMDoKLSsgICAgICBwcmludGYgKCJjaGls ZCVkOiAlZFxuIiwgbnIsIChpbnQpIGdldHBpZCAoKSk7CisrIyBTdGFydCB3aXRoIGEgZnJlc2gg Z2RiLgogKwotKyAgICAgIC8qIExldCB0aGUgcGFyZW50IHNpZ25hbCB1cyBhYm91dCBpdHMgc3Vj Y2Vzcy4gIEJlIGNhcmVmdWwgb2YgcmFjZXMuICAqLworK2dkYl9leGl0CisrZ2RiX3N0YXJ0Cisr Z2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCiArCi0rICAgICAgZm9yIChsb29w ID0gMDsgbG9vcCA8IDEwMDA7IGxvb3ArKykKLSsJewotKwkgIC8qIFBhcmVudCBlaXRoZXIgZGll ZCAoYW5kIFVTUjFfR09UIGlzIHplcm8pIG9yIGl0IHN1Y2NlZWRlZC4gICovCi0rCSAgaWYgKGtp bGwgKGdldHBwaWQgKCksIDApICE9IDApCi0rCSAgICBicmVhazsKLSsJICAvKiBQYXJlbnQgc3Vj Y2VlZGVkPyAgKi8KLSsJICBpZiAodXNyMV9nb3QpCi0rCSAgICBicmVhazsKKytpZiAhW3B5dGhv bl9zdXBwb3J0ZWRdIHRoZW4geworKyAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRp c2FibGVkIgorKyAgcmV0dXJuIC0xCisrfQogKwotKwkgIGRlbGF5ICgpOwotKwl9Ci0rICAgICAg YXNzZXJ0ICh1c3IxX2dvdCk7Cisrc2V0IHRlc3RmaWxlICJweS1pbmZlcmlvciIKKytzZXQgc3Jj ZmlsZSAke3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rl c3RmaWxlfQogKwotKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEg ZmFsc2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVn fV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0i CisrICAgIHJldHVybiAtMQorK30KICsKLSsgICAgICBicmVha3BvaW50ICgpOwotKyAgICB9Cisr Z2RiX2xvYWQgJHtiaW5maWxlfQogKwotKyAgaSA9IHNpZ2FjdGlvbiAoU0lHVVNSMSwgJm9sZGFj dCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrIyBUaGUgZm9sbG93aW5nIHRlc3RzIHJl cXVpcmUgZXhlY3V0aW9uLgorKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAgIGZhaWwg IkNhbid0IHJ1biB0byBtYWluIgorKyAgICByZXR1cm4gMAogK30KICsKLSsjZWxzZQotKyMgZXJy b3IgIiFGT0xMT1dfUEFSRU5UICYmICFGT0xMT1dfQ0hJTEQiCi0rI2VuZGlmCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLW10LmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZGFjZmMwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1tdC5jCi1AQCAtMCwwICsxLDE1 NyBAQAotKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZv cmsoKS1vZmYgb2YgYSBwcm9jZXNzLgorK3J1bnRvIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJCcmVh ayBoZXJlLiJdCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCisrIyBUZXN0IGJhc2ljIGdkYi5JbmZlcmlvciBhdHRyaWJ1dGVzIGFuZCBt ZXRob2RzLgogKwotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKytnZGJfcHlfdGVzdF9z aWxlbnRfY21kICJweXRob24gaW5mZXJpb3JzID0gZ2RiLmluZmVyaW9ycyAoKSIgImdldCBpbmZl cmlvcnMgbGlzdCIgMQorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgaW5mZXJpb3JzIiAiXFwoPGdk Yi5JbmZlcmlvciBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpcXVxdKz4sXFwpIiAidmVyaWZ5IGlu ZmVyaW9ycyBsaXN0IgorK2dkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBpMCA9IGluZmVy aW9yc1xbMFxdIiAiZ2V0IGZpcnN0IGluZmVyaW9yIiAwCiArCi0rICAgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsg ICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKytnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGkwID09IGlu ZmVyaW9yc1xbMFxdIiAiID0gVHJ1ZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSki CisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBpMC5udW0iICIgPSBcWzAtOVxd KyIgInRlc3QgSW5mZXJpb3IubnVtIgorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgaTAucGlkIiAiID0gXFswLTlcXSsiICJ0ZXN0IEluZmVyaW9yLnBpZCIKKytnZGJfdGVzdCAi cHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGkwLndhc19hdHRhY2hlZCIgIiA9IEZhbHNlIiAidGVz dCBJbmZlcmlvci53YXNfYXR0YWNoZWQiCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBpMC50aHJl YWRzICgpIiAiXFwoPGdkYi5JbmZlcmlvclRocmVhZCBvYmplY3QgYXQgMHhcW1xbOnhkaWdpdDpc XVxdKz4sXFwpIiAidGVzdCBJbmZlcmlvci50aHJlYWRzIgogKwotKyAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCisrIyBUZXN0IG1lbW9yeSByZWFkIGFuZCB3cml0ZSBvcGVyYXRpb25zLgogKwotKyAg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2Ug LSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworK2dkYl9w eV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBhZGRyID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJl YWRfdmFyICgnc3RyJykiIFwKKysgICJyZWFkIHN0ciBhZGRyZXNzIiAwCisrZ2RiX3B5X3Rlc3Rf c2lsZW50X2NtZCAicHl0aG9uIHN0ciA9IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnJlYWRfbWVtb3J5 IChhZGRyLCA1KSIgXAorKyAgInJlYWQgc3RyIGNvbnRlbnRzIiAxCisrZ2RiX3B5X3Rlc3Rfc2ls ZW50X2NtZCAicHl0aG9uIHN0clxbMVxdID0gJ2EnIiAiY2hhbmdlIHN0ciIgMAorK2dkYl9weV90 ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBnZGIuaW5mZXJpb3JzKClcWzBcXS53cml0ZV9tZW1vcnkg KGFkZHIsIHN0cikiIFwKKysgICJ3cml0ZSBzdHIiIDEKKytnZGJfdGVzdCAicHJpbnQgc3RyIiAi ID0gMHhcW1xbOnhkaWdpdDpcXVxdKyBcImhhbGxvLCB0ZXN0c3VpdGVcIiIgXAorKyAgImVuc3Vy ZSBzdHIgd2FzIGNoYW5nZWQgaW4gdGhlIGluZmVyaW9yIgogKwotKyNpbmNsdWRlIDxhc3NlcnQu aD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0rI2luY2x1 ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxwdGhyZWFkLmg+ CisrIyBUZXN0IG1lbW9yeSBzZWFyY2guCiArCi0rI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4KLSsj aW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dldHRp ZCkKKytzZXQgaGV4X251bWJlciB7MHhbMC05YS1mQS1GXVswLTlhLWZBLUZdKn0KKytzZXQgZGVj X251bWJlciB7WzAtOV0rfQorK3NldCBoaXN0b3J5X3ByZWZpeCB7WyRdWzAtOV0qID0gfQorK3Nl dCBuZXdsaW5lIHtbXHJcbl0rfQorK3NldCBwYXR0ZXJuX25vdF9mb3VuZCAiJHtuZXdsaW5lfS5d IgorK3NldCBvbmVfcGF0dGVybl9mb3VuZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TF0iCisr c2V0IHR3b19wYXR0ZXJuc19mb3VuZCAiJHtuZXdsaW5lfS4ke2RlY19udW1iZXJ9TCwgJHtkZWNf bnVtYmVyfUxdIgogKwotKy8qIE5vbi1hdG9taWMgYHZhcisrJyBzaG91bGQgbm90IGh1cnQgYXMg d2Ugc3luY2hyb25pemUgdGhlIHRocmVhZHMgYnkgdGhlIFNURVAKLSsgICB2YXJpYWJsZS4gIEhp dC1jb21tZW50cyBuZWVkIHRvIGJlIGR1cGxpY2l0ZSB0aGVyZSB0byBjYXRjaCBib3RoIGF0LXN0 b3BzCi0rICAgYW5kIGJlaGluZC1zdG9wcywgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQuICAqLwor KyMgVGVzdCBzdHJpbmcgcGF0dGVybi4KICsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsKKytn ZGJfdGVzdCAic2V0ICooaW50MzJfdCopICZpbnQ4X3NlYXJjaF9idWZcWzEwXF0gPSAweDYxNjE2 MTYxIiAiIiAiIgorK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1l ICgpLnJlYWRfdmFyICgnaW50OF9zZWFyY2hfYnVmJykiICIiICIiCisrZ2RiX3Rlc3QgInB5IHN0 YXJ0X2FkZHIgPSBzZWFyY2hfYnVmLmFkZHJlc3MiICIiICIiCisrZ2RiX3Rlc3QgInB5IGxlbmd0 aCA9IHNlYXJjaF9idWYudHlwZS5zaXplb2YiICIiICIiCiArCi0rc3RhdGljIHZvaWQKLStkdW1t eSAodm9pZCkKLSt7Ci0rfQorK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBc XS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsICdhYWEnKSIgXAorKyAgIiR7dHdv X3BhdHRlcm5zX2ZvdW5kfSIgImZpbmQgc3RyaW5nIHBhdHRlcm4iCiArCi0rc3RhdGljIHZvaWQK LSticmVha3BvaW50ICh2b2lkKQotK3sKLSt9CisrIyBUZXN0IG5vdCBmaW5kaW5nIHBhdHRlcm4g YmVjYXVzZSBzZWFyY2ggcmFuZ2UgdG9vIHNtYWxsLCB3aXRoCisrIyBwb3RlbnRpYWwgZmluZCBh dCB0aGUgZWRnZSBvZiB0aGUgcmFuZ2UuCiArCi0rLyogSW5jbHVkZSBoZXJlIHRoZSBmdW5jdGlv bnM6Ci0rICAgc3RhdGljIHZvaWQgZm9ya29mZiAoaW50IG5yKTsKLSsgICBzdGF0aWMgdm9pZCBk ZWxheSAodm9pZCk7ICAqLworK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBc XS5zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCAxMCszLCAnYWFhYScpIiBcCisrICAiJHtwYXR0 ZXJuX25vdF9mb3VuZH0iICJwYXR0ZXJuIG5vdCBmb3VuZCBhdCBlbmQgb2YgcmFuZ2UiCiArCi0r c3RhdGljIHB0aHJlYWRfdCB0aHJlYWQ7Ci0rc3RhdGljIHZvbGF0aWxlIGludCBzdGVwOwotKyNk ZWZpbmUgVEhSRUFECisrIyBJbmNyZWFzZSB0aGUgc2VhcmNoIHJhbmdlIGJ5IDEgYW5kIHdlIHNo b3VsZCBmaW5kIHRoZSBwYXR0ZXJuLgogKwotKyNpbmNsdWRlICJ3YXRjaHBvaW50LWZvcmstZm9y a29mZi5jIgorK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hf bWVtb3J5IChzdGFydF9hZGRyLCAxMCszKzEsIFxbJ2EnLCAnYScsICdhJywgJ2EnXF0pIiBcCisr ICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJwYXR0ZXJuIGZvdW5kIGF0IGVuZCBvZiByYW5nZSIK ICsKLStzdGF0aWMgdm9pZCAqCi0rc3RhcnQgKHZvaWQgKmFyZykKLSt7Ci0rICBpZiAoc3RlcCA+ PSAzKQotKyAgICBnb3RvIHN0ZXBfMzsKKysjIFRlc3QgbWF4LWNvdW50IHdpdGggc2l6ZSwgd2l0 aCBkaWZmZXJlbnQgcGFyYW1ldGVyIHBvc2l0aW9uCiArCi0rICB3aGlsZSAoc3RlcCAhPSAxKQot KyAgICBkZWxheSAoKTsKKytnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0u c2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwgMSwgMSki IFwKKysgICIke29uZV9wYXR0ZXJuX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAxIgog KwotKyAgdmFyKys7CS8qIHZhbGlkaXR5LXRocmVhZC1CICovCi0rICBkdW1teSAoKTsJLyogdmFs aWRpdHktdGhyZWFkLUIgKi8KLSsgIHN0ZXAgPSAyOwotKyAgd2hpbGUgKHN0ZXAgIT0gMykKLSsg ICAgewotKyAgICAgIGlmIChzdGVwID09IDk5KQotKwlnb3RvIHN0ZXBfOTk7Ci0rICAgICAgZGVs YXkgKCk7Ci0rICAgIH0KKytnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0u c2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBcWzB4NjEsIDB4NjFcXSwgMSwgMiki IFwKKysgICIke3R3b19wYXR0ZXJuc19mb3VuZH0iICJzaXplID0gMSwgbWF4X2NvdW50ID0gMiwg bm9ybWFsIG9yZGVyaW5nIgogKwotK3N0ZXBfMzoKLSsgIGlmIChzdGVwID49IDUpCi0rICAgIGdv dG8gc3RlcF81OworK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFy Y2hfbWVtb3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIFxbMHg2MSwgMHg2MVxdLCBzaXplID0gMSwg bWF4X2NvdW50ID0gMikiIFwKKysgICIke3R3b19wYXR0ZXJuc19mb3VuZH0iICJzaXplID0gMSwg bWF4X2NvdW50ID0gMiwgbm9ybWFsIG9yZGVyaW5nLCB3aXRoIGtleXdvcmRzIgogKwotKyAgdmFy Kys7CS8qIGFmdGVyLWZvcmsxLUIgKi8KLSsgIGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMS1CICov Ci0rICBzdGVwID0gNDsKLSsgIHdoaWxlIChzdGVwICE9IDUpCi0rICAgIHsKLSsgICAgICBpZiAo c3RlcCA9PSA5OSkKLSsJZ290byBzdGVwXzk5OwotKyAgICAgIGRlbGF5ICgpOwotKyAgICB9Cisr Z2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJjaF9tZW1vcnkgKHN0 YXJ0X2FkZHIsIGxlbmd0aCwgXFsweDYxLCAweDYxXF0sIG1heF9jb3VudCA9IDIsIHNpemUgPSAx KSIgXAorKyAgIiR7dHdvX3BhdHRlcm5zX2ZvdW5kfSIgInNpemUgPSAxLCBtYXhfY291bnQgPSAy LCBpbnZlcnRlZCBvcmRlcmluZyIKICsKLStzdGVwXzU6Ci0rICB2YXIrKzsJLyogYWZ0ZXItZm9y azItQiAqLwotKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUIgKi8KLSsgIHJldHVybiAodm9p ZCAqKSA1VUw7CisrZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJj aF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgXFsnYScsICdhJ1xdLCBtYXhfY291bnQgPSAy KSIgXAorKyAgIiR7dHdvX3BhdHRlcm5zX2ZvdW5kfSIgIm1heF9jb3VudCA9IDIsIHdpdGgga2V5 d29yZCIKICsKLStzdGVwXzk5OgotKyAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJlIChh Z2FpbnN0IGEgZm9yZ290dGVuIGJyZWFrcG9pbnQpLiAgKi8KLSsgIHZhcisrOwotKyAgYnJlYWtw b2ludCAoKTsKLSsgIHJldHVybiAodm9pZCAqKSA5OVVMOwotK30KKysjIFRlc3QgMTYtYml0IHBh dHRlcm4uCiArCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBpbnQgaTsKLSsgIHZvaWQgKnRo cmVhZF9yZXN1bHQ7CisrZ2RiX3Rlc3QgInNldCBpbnQxNl9zZWFyY2hfYnVmXFsxMFxdID0gMHgx MjM0IiAiIiAiIgorK2dkYl90ZXN0ICJweSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1l ICgpLnJlYWRfdmFyICgnaW50MTZfc2VhcmNoX2J1ZicpIiAiIiAiIgorK2dkYl90ZXN0ICJweSBz dGFydF9hZGRyID0gc2VhcmNoX2J1Zi5hZGRyZXNzIiAiIiAiIgorK2dkYl90ZXN0ICJweSBsZW5n dGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6ZW9mIiAiIiAiIgorK2dkYl90ZXN0ICJweSBwYXR0ZXJu ID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDE2X3QpIDB4MTIzNCcpIiAiIiAiIgogKwotKyAg c2V0YnVmIChzdGRvdXQsIE5VTEwpOwotKyAgcHJpbnRmICgibWFpbjogJWRcbiIsIChpbnQpIGdl dHRpZCAoKSk7CisrZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJj aF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgMHgxMjM0LCAyKSIgXAorKyAgIiR7b25lX3Bh dHRlcm5fZm91bmR9IiAiZmluZCAxNi1iaXQgcGF0dGVybiwgd2l0aCBweXRob24gcGF0dGVybiIK ICsKLSsgIC8qIEdlbmVyYWwgd2F0Y2hwb2ludHMgdmFsaWRpdHkuICAqLwotKyAgdmFyKys7CS8q IHZhbGlkaXR5LWZpcnN0ICovCi0rICBkdW1teSAoKTsJLyogdmFsaWRpdHktZmlyc3QgKi8KKytn ZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3Rh cnRfYWRkciwgbGVuZ3RoLCBwYXR0ZXJuKSIgXAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAi ZmluZCAxNi1iaXQgcGF0dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgogKwotKyAgaSA9IHB0aHJl YWRfY3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0g MCk7CisrIyBUZXN0IDMyLWJpdCBwYXR0ZXJuLgogKwotKyAgdmFyKys7CS8qIHZhbGlkaXR5LXRo cmVhZC1BICovCi0rICBkdW1teSAoKTsJLyogdmFsaWRpdHktdGhyZWFkLUEgKi8KLSsgIHN0ZXAg PSAxOwotKyAgd2hpbGUgKHN0ZXAgIT0gMikKLSsgICAgZGVsYXkgKCk7CisrZ2RiX3Rlc3QgInNl dCBpbnQzMl9zZWFyY2hfYnVmXFsxMFxdID0gMHgxMjM0NTY3OCIgIiIgIiIKKytnZGJfdGVzdCAi cHkgc2VhcmNoX2J1ZiA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ2ludDMyX3Nl YXJjaF9idWYnKSIgIiIgIiIKKytnZGJfdGVzdCAicHkgc3RhcnRfYWRkciA9IHNlYXJjaF9idWYu YWRkcmVzcyIgIiIgIiIKKytnZGJfdGVzdCAicHkgbGVuZ3RoID0gc2VhcmNoX2J1Zi50eXBlLnNp emVvZiIgIiIgIiIKKytnZGJfdGVzdCAicHkgcGF0dGVybiA9IGdkYi5wYXJzZV9hbmRfZXZhbCAo JyhpbnQzMl90KSAweDEyMzQ1Njc4JykiICIiICIiCiArCi0rICAvKiBIYXJkd2FyZSB3YXRjaHBv aW50cyBnb3QgZGlzYXJtZWQgaGVyZS4gICovCi0rICBmb3Jrb2ZmICgxKTsKKytnZGJfdGVzdCAi cHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwg bGVuZ3RoLCAweDEyMzQ1Njc4LCA0KSIgXAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmlu ZCAzMi1iaXQgcGF0dGVybiwgd2l0aCBweXRob24gcGF0dGVybiIKKytnZGJfdGVzdCAicHkgcHJp bnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2VhcmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3Ro LCBwYXR0ZXJuKSIgXAorKyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCAzMi1iaXQgcGF0 dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgogKwotKyAgdmFyKys7CS8qIGFmdGVyLWZvcmsxLUEg Ki8KLSsgIGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMS1BICovCi0rICBzdGVwID0gMzsKLSsjaWZk ZWYgRk9MTE9XX0NISUxECi0rICAvKiBTcGF3biBuZXcgdGhyZWFkIGFzIGl0IHdhcyBkZWxldGVk IGluIHRoZSBjaGlsZCBvZiBGT1JLLiAgKi8KLSsgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVh ZCwgTlVMTCwgc3RhcnQsIE5VTEwpOwotKyAgYXNzZXJ0IChpID09IDApOwotKyNlbmRpZgotKyAg d2hpbGUgKHN0ZXAgIT0gNCkKLSsgICAgZGVsYXkgKCk7CisrIyBUZXN0IDY0LWJpdCBwYXR0ZXJu LgogKwotKyAgLyogQSBzYW5pdHkgY2hlY2sgZm9yIGRvdWJsZSBoYXJkd2FyZSB3YXRjaHBvaW50 cyByZW1vdmFsLiAgKi8KLSsgIGZvcmtvZmYgKDIpOworK2dkYl90ZXN0ICJzZXQgaW50NjRfc2Vh cmNoX2J1ZlxbMTBcXSA9IDB4ZmVkY2JhOTg3NjU0MzIxMExMIiAiIiAiIgorK2dkYl90ZXN0ICJw eSBzZWFyY2hfYnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnaW50NjRfc2Vh cmNoX2J1ZicpIiAiIiAiIgorK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1Zi5h ZGRyZXNzIiAiIiAiIgorK2dkYl90ZXN0ICJweSBsZW5ndGggPSBzZWFyY2hfYnVmLnR5cGUuc2l6 ZW9mIiAiIiAiIgorK2dkYl90ZXN0ICJweSBwYXR0ZXJuID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgn KGludDY0X3QpIDB4ZmVkY2JhOTg3NjU0MzIxMExMJykiICIiICIiCiArCi0rICB2YXIrKzsJLyog YWZ0ZXItZm9yazItQSAqLwotKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUEgKi8KLSsgIHN0 ZXAgPSA1OwotKyNpZmRlZiBGT0xMT1dfQ0hJTEQKLSsgIC8qIFNwYXduIG5ldyB0aHJlYWQgYXMg aXQgd2FzIGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLwotKyAgaSA9IHB0aHJlYWRf Y3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7 Ci0rI2VuZGlmCisrZ2RiX3Rlc3QgInB5IHByaW50IGdkYi5pbmZlcmlvcnMoKVxbMFxdLnNlYXJj aF9tZW1vcnkgKHN0YXJ0X2FkZHIsIGxlbmd0aCwgMHhmZWRjYmE5ODc2NTQzMjEwLCA4KSIgXAor KyAgIiR7b25lX3BhdHRlcm5fZm91bmR9IiAiZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCBweXRo b24gcGF0dGVybiIKKytnZGJfdGVzdCAicHkgcHJpbnQgZ2RiLmluZmVyaW9ycygpXFswXF0uc2Vh cmNoX21lbW9yeSAoc3RhcnRfYWRkciwgbGVuZ3RoLCBwYXR0ZXJuKSIgXAorKyAgIiR7b25lX3Bh dHRlcm5fZm91bmR9IiAiZmluZCA2NC1iaXQgcGF0dGVybiwgd2l0aCB2YWx1ZSBwYXR0ZXJuIgog KwotKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkLCAmdGhyZWFkX3Jlc3VsdCk7Ci0rICBhc3Nl cnQgKGkgPT0gMCk7Ci0rICBhc3NlcnQgKHRocmVhZF9yZXN1bHQgPT0gKHZvaWQgKikgNVVMKTsK KysjIFRlc3QgbWl4ZWQtc2l6ZWQgcGF0dGVybnMuCiArCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmMKLW5ldyBmaWxlIG1vZGUg MTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41ZjYyZTdmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jCi1AQCAtMCwwICsxLDU3IEBA Ci0rLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygp LW9mZiBvZiBhIHByb2Nlc3MuCisrZ2RiX3Rlc3QgInNldCAqKGludDhfdCopICZzZWFyY2hfYnVm XFsxMFxdID0gMHg2MiIgIiIgIiIKKytnZGJfdGVzdCAic2V0ICooaW50MTZfdCopICZzZWFyY2hf YnVmXFsxMVxdID0gMHg2MzYzIiAiIiAiIgorK2dkYl90ZXN0ICJzZXQgKihpbnQzMl90KikgJnNl YXJjaF9idWZcWzEzXF0gPSAweDY0NjQ2NDY0IiAiIiAiIgorK2dkYl90ZXN0ICJweSBzZWFyY2hf YnVmID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpLnJlYWRfdmFyICgnc2VhcmNoX2J1ZicpIiAiIiAi IgorK2dkYl90ZXN0ICJweSBzdGFydF9hZGRyID0gc2VhcmNoX2J1ZlxbMFxdLmFkZHJlc3MiICIi ICIiCisrZ2RiX3Rlc3QgInB5IHBhdHRlcm4xID0gZ2RiLnBhcnNlX2FuZF9ldmFsICgnKGludDhf dCkgMHg2MicpIiAiIiAiIgorK2dkYl90ZXN0ICJweSBwYXR0ZXJuMiA9IGdkYi5wYXJzZV9hbmRf ZXZhbCAoJyhpbnQxNl90KSAweDYzNjMnKSIgIiIgIiIKKytnZGJfdGVzdCAicHkgcGF0dGVybjMg PSBnZGIucGFyc2VfYW5kX2V2YWwgKCcoaW50MzJfdCkgMHg2NDY0NjQ2NCcpIiAiIiAiIgogKwot KyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor K2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChz dGFydF9hZGRyLCAxMDAsIFxbcGF0dGVybjEsIHBhdHRlcm4yLCBwYXR0ZXJuM1xdKSIgXAorKyAg ICAiJHtvbmVfcGF0dGVybl9mb3VuZH0iICJmaW5kIG1peGVkLXNpemVkIHBhdHRlcm4iCiArCi0r ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKyMgVGVzdCBzZWFyY2ggc3Bhbm5pbmcgYSBs YXJnZSByYW5nZSwgaW4gdGhlIHBhcnRpY3VsYXIgY2FzZSBvZiBuYXRpdmUKKysjIHRhcmdldHMs IHRlc3QgdGhlIHNlYXJjaCBzcGFubmluZyBtdWx0aXBsZSBjaHVua3MuCisrIyBSZW1vdGUgdGFy Z2V0cyBtYXkgaW1wbGVtZW50IHRoZSBzZWFyY2ggZGlmZmVyZW50bHkuCiArCi0rICAgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKytzZXQgQ0hVTktfU0laRSAxNjAwMCA7CiArCi0rICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKytnZGJfdGVzdCAic2V0ICooaW50MzJfdCopICZzZWFyY2hfYnVm XFswKiR7Q0hVTktfU0laRX0rMTAwXF0gPSAweDEyMzQ1Njc4IiAiIiAiIgorK2dkYl90ZXN0ICJz ZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWzEqJHtDSFVOS19TSVpFfSsxMDBcXSA9IDB4MTIz NDU2NzgiICIiICIiCisrZ2RiX3Rlc3QgInB5IHN0YXJ0X2FkZHIgPSBnZGIuc2VsZWN0ZWRfZnJh bWUgKCkucmVhZF92YXIgKCdzZWFyY2hfYnVmJykiICIiICIiCisrZ2RiX3Rlc3QgInB5IGxlbmd0 aCA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5yZWFkX3ZhciAoJ3NlYXJjaF9idWZfc2l6ZScpIiAi IiAiIgogKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0rICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu ICAqLworK2dkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVt b3J5IChzdGFydF9hZGRyLCBsZW5ndGgsIDB4MTIzNDU2NzgsIDQpIiBcCisrICAiJHt0d29fcGF0 dGVybnNfZm91bmR9IiAic2VhcmNoIHNwYW5uaW5nIGxhcmdlIHJhbmdlIgogKwotKyNpbmNsdWRl IDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy93YWl0Lmg+ Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyMgRm9yIG5hdGl2 ZSB0YXJnZXRzLCB0ZXN0IGEgcGF0dGVybiBzdHJhZGRsaW5nIGEgY2h1bmsgYm91bmRhcnkuCiAr Ci0rc3RhdGljIHZvbGF0aWxlIGludCB2YXI7CisraWYgW2lzbmF0aXZlXSB7CisrICAgIGdkYl90 ZXN0ICJzZXQgKihpbnQzMl90KikgJnNlYXJjaF9idWZcWyR7Q0hVTktfU0laRX0tMVxdID0gMHhm ZGI5NzUzMSIgIiIgIiIKICsKLStzdGF0aWMgdm9pZAotK2JyZWFrcG9pbnQgKHZvaWQpCisrICAg IGdkYl90ZXN0ICJweSBwcmludCBnZGIuaW5mZXJpb3JzKClcWzBcXS5zZWFyY2hfbWVtb3J5IChz dGFydF9hZGRyLCBsZW5ndGgsIDB4ZmRiOTc1MzEsIDQpIiBcCisrICAgICAgIiR7b25lX3BhdHRl cm5fZm91bmR9IiAiZmluZCBwYXR0ZXJuIHN0cmFkZGxpbmcgY2h1bmsgYm91bmRhcnkiCisrfQor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZ0aHJlYWQuYyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZ0aHJlYWQuYworbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLjIyZWI5ZjIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZ0aHJlYWQuYworQEAgLTAsMCArMSwxNCBAQAorK2ludCBm MiAoaW50IGEpCiAreworKyAgcmV0dXJuICsrYTsKICt9CiArCi0rLyogSW5jbHVkZSBoZXJlIHRo ZSBmdW5jdGlvbjoKLSsgICBzdGF0aWMgdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOyAgKi8KLSsKLSsj aW5jbHVkZSAid2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYyIKLSsKLStpbnQKLSttYWluICh2b2lk KQorK2ludCBmMSAoaW50IGEsIGludCBiKQogK3sKLSsgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsK LSsgIHByaW50ZiAoIm1haW46ICVkXG4iLCAoaW50KSBnZXRwaWQgKCkpOwotKwotKyAgLyogR2Vu ZXJhbCB3YXRjaHBvaW50cyB2YWxpZGl0eS4gICovCi0rICB2YXIrKzsKLSsgIC8qIEhhcmR3YXJl IHdhdGNocG9pbnRzIGdvdCBkaXNhcm1lZCBoZXJlLiAgKi8KLSsgIGZvcmtvZmYgKDEpOwotKyAg LyogVGhpcyB3YXRjaHBvaW50IGdvdCBsb3N0IGJlZm9yZS4gICovCi0rICB2YXIrKzsKLSsgIC8q IEEgc2FuaXR5IGNoZWNrIGZvciBkb3VibGUgaGFyZHdhcmUgd2F0Y2hwb2ludHMgcmVtb3ZhbC4g ICovCi0rICBmb3Jrb2ZmICgyKTsKLSsgIHZhcisrOworKyAgcmV0dXJuIGYyKGEpICsgYjsKKyt9 CiArCi0rICByZXR1cm4gMDsKKytpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyt7 CisrICByZXR1cm4gZjEgKDEsIDIpOwogK30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3dhdGNocG9pbnQtZm9yay5leHAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktaW5mdGhyZWFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1pbmZ0aHJl YWQuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWRjOTNhYgoraW5k ZXggMDAwMDAwMC4uZTlkMThiNwogLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmsuZXhwCi1AQCAtMCwwICsxLDEzMCBAQAotKyMgQ29w eXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktaW5mdGhyZWFkLmV4cAorQEAgLTAsMCArMSw1OCBA QAorKyMgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yNzc5MywxMzQgKzE4MjY3LDI0 NCBAQCBpbmRleCAwMDAwMDAwLi4xZGM5M2FiCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CiArCi0rIyBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3Jr KCktb2ZmIG9mIGEgcHJvY2Vzcy4KLSsKLStwcm9jIHRlc3Qge3R5cGUgc3ltYm9sfSB7Ci0rICAg IGdsb2JhbCBvYmpkaXIgc3ViZGlyIHNyY2RpcgotKwotKyAgICBzZXQgdGVzdCB3YXRjaHBvaW50 LWZvcmsKLSsKLSsgICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBzZXQgcHJlZml4X3Rlc3QgJHBm X3ByZWZpeAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHR5cGU6IgotKyAgICBzZXQgcHJlZml4 X210ICRwZl9wcmVmaXgKKysjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHREIgdGVzdHN1aXRl LiAgSXQgdGVzdHMgdGhlIG1lY2hhbmlzbQorKyMgZXhwb3NpbmcgaW5mZXJpb3IgdGhyZWFkcyB0 byBQeXRob24uCiArCi0rICAgICMgbm8gdGhyZWFkcworK2lmICR0cmFjZWxldmVsIHRoZW4gewor KyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKyt9CiArCi0rICAgIHNldCBwZl9wcmVmaXggJHByZWZp eF9tdAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6IgorKyMgU3RhcnQg d2l0aCBhIGZyZXNoIGdkYi4KICsKLSsgICAgc2V0IGV4ZWN1dGFibGUgJHt0ZXN0fS0ke3R5cGV9 Ci0rICAgIGlmIHsgW2dkYl9jb21waWxlICR7c3JjZGlyfS8ke3N1YmRpcn0vJHt0ZXN0fS5jICR7 b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGFk ZGl0aW9uYWxfZmxhZ3M9LUQkc3ltYm9sXV0gIT0gIiIgfSB7Ci0rCXVudGVzdGVkICR7dGVzdH0u ZXhwCi0rCXJldHVybiAtMQotKyAgICB9Ci0rICAgIGNsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUK KytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgogKwotKyAgICBnZGJfdGVzdCAic2hvdyBkZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2Ri IHdpbGwgZGV0YWNoIHRoZSBjaGlsZCBvZiBhIGZvcmsgaXMgb24uIgotKyAgICBnZGJfdGVzdCAi c2V0IGZvbGxvdy1mb3JrLW1vZGUgJHR5cGUiCi0rICAgIGdkYl90ZXN0ICJzaG93IGZvbGxvdy1m b3JrLW1vZGUiICJEZWJ1Z2dlciByZXNwb25zZSB0byBhIHByb2dyYW0gY2FsbCBvZiBmb3JrIG9y IHZmb3JrIGlzIFwiJHR5cGVcIi4iCi0rICAgICMgVGVzdGNhc2UgdXNlcyBpdCBmb3IgdGhlIGBm b2xsb3ctZm9yay1tb2RlIGNoaWxkJyB0eXBlLgotKyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VT UjEgbm9zdG9wIG5vcHJpbnQgcGFzcyIKKytpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4gewor KyAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgorKyAgcmV0dXJuIC0x CisrfQogKwotKyAgICBpZiB7ICFbcnVudG9fbWFpbl0gfSB0aGVuIHsKLSsJZ2RiX3N1cHByZXNz X3Rlc3RzCi0rCXJldHVybgotKyAgICB9Cisrc2V0IHRlc3RmaWxlICJweS1pbmZ0aHJlYWQiCisr c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRp cn0vJHt0ZXN0ZmlsZX0KICsKLSsgICAgIyBJbnN0YWxsIHRoZSB3YXRjaHBvaW50IG9ubHkgYWZ0 ZXIgZ2V0dGluZyBpbnRvIE1BSU4gLSB3b3JrYXJvdW5kIHNvbWUgUFBDCi0rICAgICMgcHJvYmxl bS4KLSsgICAgZ2RiX3Rlc3QgIndhdGNoIHZhciIgImF0Y2hwb2ludCAyOiB2YXIiICJTZXQgdGhl IHdhdGNocG9pbnQiCisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7CisrICAg IHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCisrICAgIHJldHVybiAtMQor K30KICsKLSsgICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3QgYmUgbGVmdCBv dmVyIGluIHRoZSBmb3JrKCllZC1vZmYgY2hpbGQuCi0rICAgIGdkYl9icmVha3BvaW50ICJicmVh a3BvaW50IgorK2dkYl9sb2FkICR7YmluZmlsZX0KICsKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVl IiBcCi0rCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDAuKk5ldyB2YWx1ZSA9 IDEuKmZvcmtvZmYgKlxcKDFcXCkuKiIgIndhdGNocG9pbnRzIHdvcmsiCi0rICAgIGdkYl90ZXN0 ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4qIiAiYnJlYWtw b2ludCBhZnRlciB0aGUgZmlyc3QgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0r CSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDEuKk5ldyB2YWx1ZSA9IDIuKmZv cmtvZmYgKlxcKDJcXCkuKiIgIndhdGNocG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCi0rICAg IGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJyZWFrcG9pbnQgMywgYnJlYWtwb2ludC4q IiAiYnJlYWtwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250 aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAyLipOZXcgdmFs dWUgPSAzLipyZXR1cm4gKjA7IiAid2F0Y2hwb2ludCBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCi0r ICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIkNvbnRpbnVpbmcuLipQcm9ncmFtIGV4aXRlZCBub3Jt YWxseS4iICJmaW5pc2giCisrIyBUaGUgZm9sbG93aW5nIHRlc3RzIHJlcXVpcmUgZXhlY3V0aW9u LgogKworK2lmICFbcnVudG9fbWFpbl0gdGhlbiB7CisrICAgIGZhaWwgIkNhbid0IHJ1biB0byBt YWluIgorKyAgICByZXR1cm4gMAorK30KICsKLSsgICAgIyB0aHJlYWRzCisrcnVudG8gW2dkYl9n ZXRfbGluZV9udW1iZXIgIkJyZWFrIGhlcmUuIl0KICsKLSsgICAgc2V0IHBmX3ByZWZpeCAkcHJl Zml4X210Ci0rICAgIGxhcHBlbmQgcGZfcHJlZml4ICJtdWx0aXRocmVhZGVkOiIKKysjIFRlc3Qg YmFzaWMgZ2RiLkluZmVyaW9yIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMuCiArCi0rICAgIHNldCBl eGVjdXRhYmxlICR7dGVzdH0tbXQtJHt0eXBlfQotKyAgICBpZiB7IFtnZGJfY29tcGlsZV9wdGhy ZWFkcyAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7dGVzdH0tbXQuYyAke29iamRpcn0vJHtzdWJkaXJ9 LyR7ZXhlY3V0YWJsZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1E JHN5bWJvbF1dICE9ICIiIH0gewotKwl1bnRlc3RlZCAke3Rlc3R9LmV4cAotKwlyZXR1cm4gLTEK LSsgICAgfQotKyAgICBjbGVhbl9yZXN0YXJ0ICRleGVjdXRhYmxlCisrZ2RiX3B5X3Rlc3Rfc2ls ZW50X2NtZCAicHl0aG9uIHQwID0gZ2RiLnNlbGVjdGVkX3RocmVhZCAoKSIgInRlc3QgZ2RiLnNl bGVjdGVkX3RocmVhZCIgMQorK2dkYl90ZXN0ICJweXRob24gcHJpbnQgdDAiICJcXDxnZGIuSW5m ZXJpb3JUaHJlYWQgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidmVyaWZ5IEluZmVy aW9yVGhyZWFkIG9iamVjdCIKKytnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIHQw Lm51bSIgIiA9IFxbMC05XF0rIiAidGVzdCBJbmZlcmlvci5udW0iCitkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKK2luZGV4IDI2MjY4OTUuLmNkMGQ3ZTcgMTAw NjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCisr KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwCitAQCAtMjcs MTIgKzI3LDIwIEBAIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K KyAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCisgZ2RiX2V4aXQKKyBnZGJfc3RhcnQKKy1nZGJf dGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50ICdoZWxsbywgd29ybGQhJyIgInZlcmlmeSBweXRo b24gc3VwcG9ydCIgeworLSAgICAtcmUgIm5vdCBzdXBwb3J0ZWQuKiRnZGJfcHJvbXB0ICQiCXsK Ky0gICAgICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCistICAgICAg cmV0dXJuIC0xCistICAgIH0KKy0gICAgLXJlICIkZ2RiX3Byb21wdCAkIgl7fQorK2lmICFbcHl0 aG9uX3N1cHBvcnRlZF0gdGhlbiB7CisrICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMg ZGlzYWJsZWQiCisrICByZXR1cm4gLTEKKyt9CiArCi0rICAgIGdkYl90ZXN0ICJzZXQgZm9sbG93 LWZvcmstbW9kZSAkdHlwZSIKLSsgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0aGUgYGZvbGxv dy1mb3JrLW1vZGUgY2hpbGQnIHR5cGUuCi0rICAgIGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBu b3N0b3Agbm9wcmludCBwYXNzIgorKyMgUnVuIGEgY29tbWFuZCBpbiBHREIsIGFuZCByZXBvcnQg YSBmYWlsdXJlIGlmIGEgUHl0aG9uIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisrIyBJZiByZXBvcnRf cGFzcyBpcyB0cnVlLCByZXBvcnQgYSBwYXNzIGlmIG5vIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisr cHJvYyBnZGJfcHlfdGVzdF9zaWxlbnRfY21kIHtjbWQgbmFtZSByZXBvcnRfcGFzc30geworKyAg Z2xvYmFsIGdkYl9wcm9tcHQKICsKLSsgICAgaWYgeyAhW3J1bnRvX21haW5dIH0gdGhlbiB7Ci0r CWdkYl9zdXBwcmVzc190ZXN0cwotKwlyZXR1cm4KLSsgICAgfQorKyAgZ2RiX3Rlc3RfbXVsdGlw bGUgJGNtZCAkbmFtZSB7CisrICAgICAgLXJlICJUcmFjZWJhY2suKiRnZGJfcHJvbXB0ICQiICB7 IGZhaWwgJG5hbWUgfQorKyAgICAgIC1yZSAiJGdkYl9wcm9tcHQgJCIJICAgICAgeyBpZiAkcmVw b3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQorKyAgfQorIH0KKyAKKyAjIFJ1biBhIGNvbW1hbmQg aW4gR0RCLCBhbmQgcmVwb3J0IGEgZmFpbHVyZSBpZiBhIFB5dGhvbiBleGNlcHRpb24gaXMgdGhy b3duLgorQEAgLTEwNSw2ICsxMTMsOCBAQCBwcm9jIHJ1bl9sYW5nX3Rlc3RzIHtsYW5nfSB7Cisg ICAgIGdkYl90ZXN0ICJwcmludCBlc3RyaW5nIiAiXCJlbWJlZGRlZCB4XFxcXDIwMVxcXFwyMDJc XFxcMjAzXFxcXDIwNFwiIgorICAgICBnZGJfdGVzdCAicHJpbnQgYyIgIiA9IGNvbnRhaW5lciBc ImNvbnRhaW5lclwiIHdpdGggMiBlbGVtZW50cyA9IHskbmwgKi4wLiA9IDIzLCRubCAqLjEuID0g NzIkbmx9IgorIAorKyAgICBnZGJfdGVzdCAicHJpbnQgbnVsbHN0ciIgIlJ1bnRpbWVFcnJvcjog RXJyb3IgcmVhZGluZyBzdHJpbmcgZnJvbSBpbmZlcmlvci4qIgogKwotKyAgICAjIEluc3RhbGwg dGhlIHdhdGNocG9pbnQgb25seSBhZnRlciBnZXR0aW5nIGludG8gTUFJTiAtIHdvcmthcm91bmQg c29tZSBQUEMKLSsgICAgIyBwcm9ibGVtLgotKyAgICBnZGJfdGVzdCAid2F0Y2ggdmFyIiAiYXRj aHBvaW50IDI6IHZhciIgIlNldCB0aGUgd2F0Y2hwb2ludCIKKyAgICAgZ2RiX3Rlc3QgImNvbnRp bnVlIiAiUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHlcLiIKKyAKKyAgICAgcmVtb3RlX2ZpbGUgaG9z dCBkZWxldGUgJHtyZW1vdGVfcHl0aG9uX2ZpbGV9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LXRlbXBsYXRlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9w eS10ZW1wbGF0ZS5leHAKK2luZGV4IDcxM2FkNWYuLjVkMTdiMjYgMTAwNjQ0CistLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktdGVtcGxhdGUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktdGVtcGxhdGUuZXhwCitAQCAtMjAsNiArMjAsMTcgQEAgaWYgJHRyYWNl bGV2ZWwgdGhlbiB7CisgICAgIHN0cmFjZSAkdHJhY2VsZXZlbAorIH0KKyAKKysjIFN0YXJ0IHdp dGggYSBmcmVzaCBnZGIuCiArCi0rICAgICMgSXQgaXMgbmV2ZXIgaGl0IGJ1dCBpdCBzaG91bGQg bm90IGJlIGxlZnQgb3ZlciBpbiB0aGUgZm9yaygpZWQtb2ZmIGNoaWxkLgotKyAgICBnZGJfYnJl YWtwb2ludCAiYnJlYWtwb2ludCIKKytnZGJfZXhpdAorK2dkYl9zdGFydAorK2dkYl9yZWluaXRp YWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgogKwotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwK LSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMS4q dmFsaWRpdHktZmlyc3QuKiIgInNpbmdsZXRocmVhZCB3YXRjaHBvaW50cyB3b3JrIgotKyAgICBn ZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVl ID0gMS4qTmV3IHZhbHVlID0gMi4qdmFsaWRpdHktdGhyZWFkLUEuKiIgIm11bHRpdGhyZWFkZWQg d2F0Y2hwb2ludHMgd29yayBhdCBBIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAg ICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMi4qTmV3IHZhbHVlID0gMy4qdmFsaWRp dHktdGhyZWFkLUIuKiIgIm11bHRpdGhyZWFkZWQgd2F0Y2hwb2ludHMgd29yayBhdCBCIgotKyAg ICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IDMsIGJyZWFrcG9pbnQu KiIgImJyZWFrcG9pbnQgKEEpIGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAi Y29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMy4qTmV3 IHZhbHVlID0gNC4qYWZ0ZXItZm9yazEtQS4qIiAid2F0Y2hwb2ludCBBIGFmdGVyIHRoZSBmaXJz dCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6 IHZhci4qT2xkIHZhbHVlID0gNC4qTmV3IHZhbHVlID0gNS4qYWZ0ZXItZm9yazEtQi4qIiAid2F0 Y2hwb2ludCBCIGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUi IFwKLSsJICAgICAicmVha3BvaW50IDMsIGJyZWFrcG9pbnQuKiIgImJyZWFrcG9pbnQgKEEpIGFm dGVyIHRoZSBzZWNvbmQgZm9yayIKLSsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAg ImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDUuKk5ldyB2YWx1ZSA9IDYuKmFmdGVyLWZv cmsyLUEuKiIgIndhdGNocG9pbnQgQSBhZnRlciB0aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90 ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSA2 LipOZXcgdmFsdWUgPSA3LiphZnRlci1mb3JrMi1CLioiICJ3YXRjaHBvaW50IEIgYWZ0ZXIgdGhl IHNlY29uZCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLi4qUHJv Z3JhbSBleGl0ZWQgbm9ybWFsbHkuIiAiZmluaXNoIgorK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0g dGhlbiB7CisrICB1bnN1cHBvcnRlZCAicHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCisrICBy ZXR1cm4gLTEKKyt9CiArCisgc2V0IHRlc3RmaWxlICJweS10ZW1wbGF0ZSIKKyBzZXQgc3JjZmls ZSAke3Rlc3RmaWxlfS5jYworIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0 ZmlsZX0KK0BAIC0yOSwyMCArNDAsNiBAQCBpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7 c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSBcCisgICAgIHJldHVy biAtMQorIH0KKyAKKy0jIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCistCistZ2RiX2V4aXQKKy1n ZGJfc3RhcnQKKy1nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKy0KKy1nZGJf dGVzdF9tdWx0aXBsZSAicHl0aG9uIHByaW50IDIzIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7 CistICAgIC1yZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJeworLSAgICAgIHVuc3Vw cG9ydGVkICJweXRob24gc3VwcG9ydCBpcyBkaXNhYmxlZCIKKy0gICAgICByZXR1cm4gLTEKKy0g ICAgfQorLSAgICAtcmUgIiRnZGJfcHJvbXB0ICQiCXt9CistfQorLQorIHByb2MgdGVzdF90ZW1w bGF0ZV9hcmcge3R5cGV9IHsKKyAgICAgZ2xvYmFsIHRlc3RmaWxlIHNyY2RpciBzdWJkaXIgc3Jj ZmlsZSBiaW5maWxlCisgICAgIGlmIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBcCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1 ZS5leHAKK2luZGV4IGFhNGU1MTkuLmY4NzI3N2QgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5weXRob24vcHktdmFsdWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktdmFsdWUuZXhwCitAQCAtMzA1LDYgKzMwNSwxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJf ZGVhdGgge30geworICAgICAicHJpbnQgdmFsdWUncyB0eXBlIgorIH0KKyAKKysjIFJlZ3Jlc3Np b24gdGVzdCBmb3IgYSBjYXN0IGZhaWx1cmUuICBUaGUgYnVnIHdhcyB0aGF0IGlmIHdlIGNhc3Qg YQorKyMgdmFsdWUgdG8gaXRzIG93biB0eXBlLCBnZGIgY291bGQgY3Jhc2guICBUaGlzIGhhcHBl bmVkIGJlY2F1c2Ugd2UKKysjIGNvdWxkIGVuZCB1cCBkb3VibGUtZnJlZWluZyBhIHN0cnVjdCB2 YWx1ZS4KKytwcm9jIHRlc3RfY2FzdF9yZWdyZXNzaW9uIHt9IHsKKysgIGdkYl90ZXN0ICJweXRo b24gdiA9IGdkYi5WYWx1ZSg1KSIgIiIgImNyZWF0ZSB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgorKyAg Z2RiX3Rlc3QgInB5dGhvbiB2ID0gdi5jYXN0KHYudHlwZSkiICIiICJjYXN0IHZhbHVlIGZvciBj YXN0IHRlc3QiCisrICBnZGJfdGVzdCAicHl0aG9uIHByaW50IHYiICI1IiAicHJpbnQgdmFsdWUg Zm9yIGNhc3QgdGVzdCIKKyt9CiArCi0rICAgICMgY2xlYW51cAorICMgUmVncmVzc2lvbiB0ZXN0 IGZvciBpbnZhbGlkIHN1YnNjcmlwdCBvcGVyYXRpb25zLiAgVGhlIGJ1ZyB3YXMgdGhhdAorICMg dGhlIHR5cGUgb2YgdGhlIHZhbHVlIHdhcyBub3QgYmVpbmcgY2hlY2tlZCBiZWZvcmUgYWxsb3dp bmcgYQorICMgc3Vic2NyaXB0IG9wZXJhdGlvbiB0byBwcm9jZWVkLgorQEAgLTM5MCwxNiArMzk5 LDIzIEBAIHByb2MgdGVzdF9wYXJzZV9hbmRfZXZhbCB7fSB7CisgZ2RiX2V4aXQKKyBnZGJfc3Rh cnQKKyBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKy1nZGJfbG9hZCAke2Jp bmZpbGV9CisgCistZ2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhvbiBwcmludCAnaGVsbG8sIHdvcmxk ISciICJ2ZXJpZnkgcHl0aG9uIHN1cHBvcnQiIHsKKy0gICAgLXJlICJub3Qgc3VwcG9ydGVkLiok Z2RiX3Byb21wdCAkIgl7CistICAgICAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBwb3J0IGlzIGRp c2FibGVkIgorLSAgICAgIHJldHVybiAtMQorLSAgICB9CistICAgIC1yZSAiJGdkYl9wcm9tcHQg JCIJe30KKytpZiAhW3B5dGhvbl9zdXBwb3J0ZWRdIHRoZW4geworKyAgdW5zdXBwb3J0ZWQgInB5 dGhvbiBzdXBwb3J0IGlzIGRpc2FibGVkIgorKyAgcmV0dXJuIC0xCisgfQorIAorK3NldCB0ZXN0 ZmlsZSAicHktdmFsdWUiCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYworK3NldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KICsKLSsgICAgc2V0IHBmX3ByZWZpeCAk cHJlZml4X3Rlc3QKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAg dW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKKysgICAgcmV0dXJuIC0xCiAr fQogKwotK3Rlc3QgcGFyZW50IEZPTExPV19QQVJFTlQKKytnZGJfbG9hZCAke2JpbmZpbGV9CiAr Ci0rIyBPbmx5IEdOVS9MaW51eCBpcyBrbm93biB0byBzdXBwb3J0IGBzZXQgZm9sbG93LWZvcmst bW9kZSBjaGlsZCcuCi0raWYge1tpc3RhcmdldCAiKi0qLWxpbnV4KiJdfSB7Ci0rICAgIHRlc3Qg Y2hpbGQgRk9MTE9XX0NISUxECi0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3JkZXIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2h0aHJlYWRzLXJlb3JkZXIuYworIHRlc3RfdmFsdWVfY3JlYXRpb24KKyB0ZXN0X3ZhbHVl X251bWVyaWNfb3BzCisgdGVzdF92YWx1ZV9ib29sZWFuCitAQCAtNDE3LDYgKzQzMyw3IEBAIGlm ICFbcnVudG9fbWFpbl0gdGhlbiB7CisgdGVzdF92YWx1ZV9pbl9pbmZlcmlvcgorIHRlc3RfbGF6 eV9zdHJpbmdzCisgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aAorK3Rlc3RfY2FzdF9yZWdyZXNzaW9u CisgCisgIyBUaGUgZm9sbG93aW5nIHRlc3QgcmVjb21waWxlcyB0aGUgYmluYXJ5IHRvIHRlc3Qg ZWl0aGVyIEMgb3IgQysrCisgIyB2YWx1ZXMuIAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weXRob24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhvbi5l eHAKK2luZGV4IDk1MWMyOTUuLjlkZDBjMTIgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHl0aG9uLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5dGhv bi5leHAKK0BAIC0yNiwzMCArMjYsOSBAQCBnZGJfZXhpdAorIGdkYl9zdGFydAorIGdkYl9yZWlu aXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorIAorLWdkYl90ZXN0X211bHRpcGxlICJweXRo b24gcHJpbnQgMjMiICJ2ZXJpZnkgcHl0aG9uIHN1cHBvcnQiIHsKKy0gICAgLXJlICJub3Qgc3Vw cG9ydGVkLiokZ2RiX3Byb21wdCAkIgl7CistICAgICAgdW5zdXBwb3J0ZWQgInB5dGhvbiBzdXBw b3J0IGlzIGRpc2FibGVkIgorLSAgICAgIHJldHVybiAtMQorLSAgICB9CistICAgIC1yZSAiJGdk Yl9wcm9tcHQgJCIJe30KKy19CistCistIyBVc2FnZTogZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgTkFN RSBJTlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0uLi4KKy0jIFJ1biBhIHRlc3QgbmFtZWQgTkFN RSwgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dC4KKy0jIEFmdGVyIGVhY2gg aW5wdXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciByZXN1bHQgbGluZSBSRVNVTFQuCistIyBTdWNj ZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90aGVyd2lzZS4KKy1wcm9jIGdkYl9w eV90ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsKKy0gICAgZ2xvYmFsIGdkYl9wcm9tcHQKKy0g ICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7CistCWlmIHtbZ2RiX3Rlc3RfbXVsdGlw bGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgeworLQkgICAgLXJlICJcW1xyXG5cXSooJHJlc3Vs dClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7CistCQlwYXNzICIkbmFtZSAtICRpbnB1 dCIKKy0JICAgIH0KKy0JfV19IHsKKy0JICAgIHJldHVybiAxCistCX0KKy0gICAgfQorLSAgICBy ZXR1cm4gMAorK2lmICFbcHl0aG9uX3N1cHBvcnRlZF0gdGhlbiB7CisrICB1bnN1cHBvcnRlZCAi cHl0aG9uIHN1cHBvcnQgaXMgZGlzYWJsZWQiCisrICByZXR1cm4gLTEKKyB9CisgCisgZ2RiX3B5 X3Rlc3RfbXVsdGlwbGUgIm11bHRpLWxpbmUgcHl0aG9uIGNvbW1hbmQiIFwKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMgYi9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1mb3Jrb2ZmLmMKIG5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xNGY0MmQ2CitpbmRleCAwMDAwMDAwLi40 ZGMzMDhiCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dh dGNodGhyZWFkcy1yZW9yZGVyLmMKLUBAIC0wLDAgKzEsMzY2IEBACi0rLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYworQEAgLTAsMCArMSwxNzUgQEAK KysvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCkt b2ZmIG9mIGEgcHJvY2Vzcy4KICsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCiArCiArICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKICsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK ICsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKwogKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApA QCAtMjc5MjksMzY2ICsxODUxMywzOTcgQEAgaW5kZXggMDAwMDAwMC4uMTRmNDJkNgogKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCiArICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlm IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysgICBGb3VuZGF0aW9uLCBJbmMuLCA1 OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisrICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBV U0EuICAqLwogKwotKyNkZWZpbmUgX0dOVV9TT1VSQ0UKLSsjaW5jbHVkZSA8cHRocmVhZC5oPgot KyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaW5jbHVkZSA8ZXJy bm8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+CiArI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNs dWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHNpZ25h bC5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorKyNp bmNsdWRlIDxlcnJuby5oPgogKwotKyNkZWZpbmUgZ2V0dGlkKCkgc3lzY2FsbCAoX19OUl9nZXR0 aWQpCisrc3RhdGljIHZvaWQKKytkZWxheSAodm9pZCkKKyt7CisrICBpbnQgaSA9IHVzbGVlcCAo MTAwMDAwMCAvIDEwMCk7CisrICBhc3NlcnQgKGkgPT0gMCB8fCBlcnJubyA9PSBFSU5UUik7Cisr fQorKworKyNpZiBkZWZpbmVkIEZPTExPV19QQVJFTlQKKysKKytzdGF0aWMgdm9pZAorK2Zvcmtv ZmYgKGludCBucikKKyt7CisrICBwaWRfdCBjaGlsZCwgcGlkX2dvdDsKKysgIGludCBleGl0X2Nv ZGUgPSA0MiArIG5yOworKyAgaW50IHN0YXR1cywgaTsKICsKLSsvKiBUZXJtaW5hdGUgYWx3YXlz IGluIHRoZSBtYWluIHRhc2ssIGl0IGNhbiBsb2NrIHVwIHdpdGggU0lHU1RPUHBlZCBHREIKLSsg ICBvdGhlcndpc2UuICAqLwotKyNkZWZpbmUgVElNRU9VVCAoZ2V0dGlkICgpID09IGdldHBpZCgp ID8gMTAgOiAxNSkKKysgIGNoaWxkID0gZm9yayAoKTsKKysgIHN3aXRjaCAoY2hpbGQpCisrICAg IHsKKysgICAgY2FzZSAtMToKKysgICAgICBhc3NlcnQgKDApOworKyAgICBjYXNlIDA6CisrICAg ICAgcHJpbnRmICgiY2hpbGQlZDogJWRcbiIsIG5yLCAoaW50KSBnZXRwaWQgKCkpOworKyAgICAg IC8qIERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJlbnQlZCIgbWVzc2Fn ZSBwcmludGVkIHdpdGhvdXQKKysJIGEgcmFjZSBicmVha2luZyBleHBlY3QgYnkgaXRzIGVuZGxl c3Mgd2FpdCBvbiBgJGdkYl9wcm9tcHQkJzoKKysJIEJyZWFrcG9pbnQgMywgYnJlYWtwb2ludCAo KSBhdCAuLi8uLi8uLi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5j OjMzCisrCSAzMyAgICAgIH0KKysJIChnZGIpIHBhcmVudDI6IDE0MjIzICAqLworKyAgICAgIGkg PSBzbGVlcCAoMSk7CisrICAgICAgYXNzZXJ0IChpID09IDApOwogKwotK3N0YXRpYyBwdGhyZWFk X211dGV4X3QgZ2Ric3RvcF9tdXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFM SVpFUl9OUDsKKysgICAgICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3Qg YSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLworKyAgICAgIHZhcisrOworKyAgICAgIGJyZWFr cG9pbnQgKCk7CiArCi0rc3RhdGljIHBpZF90IHRocmVhZDFfdGlkOwotK3N0YXRpYyBwdGhyZWFk X2NvbmRfdCB0aHJlYWQxX3RpZF9jb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOwotK3N0 YXRpYyBwdGhyZWFkX211dGV4X3QgdGhyZWFkMV90aWRfbXV0ZXggPSBQVEhSRUFEX0VSUk9SQ0hF Q0tfTVVURVhfSU5JVElBTElaRVJfTlA7CisrICAgICAgX2V4aXQgKGV4aXRfY29kZSk7CisrICAg IGRlZmF1bHQ6CisrICAgICAgcHJpbnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkgY2hp bGQpOworKyAgICAgIC8qIERlbGF5IHRvIGdldCBib3RoIHRoZSAiY2hpbGQlZCIgYW5kICJwYXJl bnQlZCIgbWVzc2FnZSBwcmludGVkLCBzZWUKKysJIGFib3ZlLiAgKi8KKysgICAgICBpID0gc2xl ZXAgKDEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKICsKLStzdGF0aWMgcGlkX3QgdGhyZWFk Ml90aWQ7Ci0rc3RhdGljIHB0aHJlYWRfY29uZF90IHRocmVhZDJfdGlkX2NvbmQgPSBQVEhSRUFE X0NPTkRfSU5JVElBTElaRVI7Ci0rc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCB0aHJlYWQyX3RpZF9t dXRleCA9IFBUSFJFQURfRVJST1JDSEVDS19NVVRFWF9JTklUSUFMSVpFUl9OUDsKKysgICAgICBw aWRfZ290ID0gd2FpdCAoJnN0YXR1cyk7CisrICAgICAgYXNzZXJ0IChwaWRfZ290ID09IGNoaWxk KTsKKysgICAgICBhc3NlcnQgKFdJRkVYSVRFRCAoc3RhdHVzKSk7CisrICAgICAgYXNzZXJ0IChX RVhJVFNUQVRVUyAoc3RhdHVzKSA9PSBleGl0X2NvZGUpOwogKwotK3N0YXRpYyBwdGhyZWFkX211 dGV4X3QgdGVybWluYXRlX211dGV4ID0gUFRIUkVBRF9FUlJPUkNIRUNLX01VVEVYX0lOSVRJQUxJ WkVSX05QOworKyAgICAgIC8qIFdlIG11c3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0IGEgZmFs c2Ugd2F0Y2hwb2ludCByZW1vdmFsKS4gICovCisrICAgICAgYnJlYWtwb2ludCAoKTsKKysgICAg fQorK30KICsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHRocmVhZDFfcndhdGNoOwotK3N0YXRpYyB2 b2xhdGlsZSBpbnQgdGhyZWFkMl9yd2F0Y2g7CisrI2VsaWYgZGVmaW5lZCBGT0xMT1dfQ0hJTEQK ICsKLStzdGF0aWMgaW50IHVudXNlZDFfcndhdGNoOwotK3N0YXRpYyBpbnQgdW51c2VkMl9yd2F0 Y2g7Cisrc3RhdGljIHZvbGF0aWxlIGludCB1c3IxX2dvdDsKICsKLSsvKiBEbyBub3QgdXNlIGFs YXJtIGFzIGl0IHdvdWxkIGNyZWF0ZSBhIHB0cmFjZSBldmVudCB3aGljaCB3b3VsZCBoYW5nIHVw IHVzIGlmCi0rICogd2UgYXJlIGJlaW5nIHRyYWNlZCBieSBHREIgd2hpY2ggd2Ugc3RvcHBlZCBv dXJzZWx2ZXMuICAqLworK3N0YXRpYyB2b2lkCisraGFuZGxlcl91c3IxIChpbnQgc2lnbm8pCisr eworKyAgdXNyMV9nb3QrKzsKKyt9CiArCi0rc3RhdGljIHZvaWQgdGltZWRfbXV0ZXhfbG9jayAo cHRocmVhZF9tdXRleF90ICptdXRleCkKKytzdGF0aWMgdm9pZAorK2ZvcmtvZmYgKGludCBucikK ICt7Ci0rICBpbnQgaTsKLSsgIHN0cnVjdCB0aW1lc3BlYyBzdGFydCwgbm93OworKyAgcGlkX3Qg Y2hpbGQ7CisrICBpbnQgaSwgbG9vcDsKKysgIHN0cnVjdCBzaWdhY3Rpb24gYWN0LCBvbGRhY3Q7 CisrI2lmZGVmIFRIUkVBRAorKyAgdm9pZCAqdGhyZWFkX3Jlc3VsdDsKKysjZW5kaWYKICsKLSsg IGkgPSBjbG9ja19nZXR0aW1lIChDTE9DS19NT05PVE9OSUMsICZzdGFydCk7CisrICBtZW1zZXQg KCZhY3QsIDAsIHNpemVvZiBhY3QpOworKyAgYWN0LnNhX2ZsYWdzID0gU0FfUkVTVEFSVDsKKysg IGFjdC5zYV9oYW5kbGVyID0gaGFuZGxlcl91c3IxOworKyAgc2lnZW1wdHlzZXQgKCZhY3Quc2Ff bWFzayk7CisrICBpID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmYWN0LCAmb2xkYWN0KTsKICsgIGFz c2VydCAoaSA9PSAwKTsKICsKLSsgIGRvCisrICBjaGlsZCA9IGZvcmsgKCk7CisrICBzd2l0Y2gg KGNoaWxkKQogKyAgICB7Ci0rICAgICAgaSA9IHB0aHJlYWRfbXV0ZXhfdHJ5bG9jayAobXV0ZXgp OwotKyAgICAgIGlmIChpID09IDApCi0rCXJldHVybjsKLSsgICAgICBhc3NlcnQgKGkgPT0gRUJV U1kpOworKyAgICBjYXNlIC0xOgorKyAgICAgIGFzc2VydCAoMCk7CisrICAgIGRlZmF1bHQ6Cisr ICAgICAgcHJpbnRmICgicGFyZW50JWQ6ICVkXG4iLCBuciwgKGludCkgY2hpbGQpOworKworKyAg ICAgIC8qIFNsZWVwIGZvciBhIHdoaWxlIHRvIHBvc3NpYmx5IGdldCBpbmNvcnJlY3RseSBBVFRB Q0hfVEhSRUFEZWQgYnkgR0RCCisrCSB0cmFjaW5nIHRoZSBjaGlsZCBmb3JrIHdpdGggbm8gbG9u Z2VyIHZhbGlkIHRocmVhZC9sd3AgZW50cmllcyBvZiB0aGUKKysJIHBhcmVudC4gICovCiArCi0r ICAgICAgaSA9IGNsb2NrX2dldHRpbWUgKENMT0NLX01PTk9UT05JQywgJm5vdyk7CisrICAgICAg aSA9IHNsZWVwICgyKTsKICsgICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0rICAgICAgYXNzZXJ0IChu b3cudHZfc2VjID49IHN0YXJ0LnR2X3NlYyk7Ci0rICAgIH0KLSsgIHdoaWxlIChub3cudHZfc2Vj IC0gc3RhcnQudHZfc2VjIDwgVElNRU9VVCk7CiArCi0rICBmcHJpbnRmIChzdGRlcnIsICJUaW1l ZCBvdXQgd2FpdGluZyBmb3IgaW50ZXJuYWwgbG9jayFcbiIpOwotKyAgZXhpdCAoRVhJVF9GQUlM VVJFKTsKLSt9CisrICAgICAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJlIChhZ2FpbnN0 IGEgZm9yZ290dGVuIGJyZWFrcG9pbnQpLiAgKi8KICsKLStzdGF0aWMgdm9pZCAqCi0rdGhyZWFk MV9mdW5jICh2b2lkICp1bnVzZWQpCi0rewotKyAgaW50IGk7Ci0rICB2b2xhdGlsZSBpbnQgcndh dGNoX3N0b3JlOworKyAgICAgIHZhcisrOworKyAgICAgIGJyZWFrcG9pbnQgKCk7CiArCi0rICB0 aHJlYWQxX3RpZCA9IGdldHRpZCAoKTsKLSsgIGkgPSBwdGhyZWFkX2NvbmRfc2lnbmFsICgmdGhy ZWFkMV90aWRfY29uZCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrI2lmZGVmIFRIUkVBRAorKyAg ICAgIC8qIEFuZCBuZWl0aGVyIGdvdCBjYXVnaHQgb3VyIHRocmVhZC4gICovCiArCi0rICAvKiBC ZSBzdXJlIEdEQiBpcyBhbHJlYWR5IHN0b3BwZWQgYmVmb3JlIGNvbnRpbnVpbmcuICAqLwotKyAg dGltZWRfbXV0ZXhfbG9jayAoJmdkYnN0b3BfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhf dW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrICAgICAgc3Rl cCA9IDk5OworKyAgICAgIGkgPSBwdGhyZWFkX2pvaW4gKHRocmVhZCwgJnRocmVhZF9yZXN1bHQp OworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysgICAgICBhc3NlcnQgKHRocmVhZF9yZXN1bHQg PT0gKHZvaWQgKikgOTlVTCk7CisrI2VuZGlmCisrCisrICAgICAgLyogQmUgc3VyZSBvdXIgY2hp bGQga25vd3Mgd2UgZGlkIG5vdCBnZXQgY2F1Z2h0IGFib3ZlLiAgKi8KKysKKysgICAgICBpID0g a2lsbCAoY2hpbGQsIFNJR1VTUjEpOworKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKKysKKysgICAg ICAvKiBTbGVlcCBmb3IgYSB3aGlsZSB0byBjaGVjayBHREIncyBgaW5mbyB0aHJlYWRzJyBubyBs b25nZXIgdHJhY2tzIHVzIGluCisrCSB0aGUgY2hpbGQgZm9yay4gICovCiArCi0rICByd2F0Y2hf c3RvcmUgPSB0aHJlYWQxX3J3YXRjaDsKKysgICAgICBpID0gc2xlZXAgKDIpOworKyAgICAgIGFz c2VydCAoaSA9PSAwKTsKKysKKysgICAgICBfZXhpdCAoMCk7CisrICAgIGNhc2UgMDoKKysgICAg ICBwcmludGYgKCJjaGlsZCVkOiAlZFxuIiwgbnIsIChpbnQpIGdldHBpZCAoKSk7CisrCisrICAg ICAgLyogTGV0IHRoZSBwYXJlbnQgc2lnbmFsIHVzIGFib3V0IGl0cyBzdWNjZXNzLiAgQmUgY2Fy ZWZ1bCBvZiByYWNlcy4gICovCisrCisrICAgICAgZm9yIChsb29wID0gMDsgbG9vcCA8IDEwMDA7 IGxvb3ArKykKKysJeworKwkgIC8qIFBhcmVudCBlaXRoZXIgZGllZCAoYW5kIFVTUjFfR09UIGlz IHplcm8pIG9yIGl0IHN1Y2NlZWRlZC4gICovCisrCSAgaWYgKGtpbGwgKGdldHBwaWQgKCksIDAp ICE9IDApCisrCSAgICBicmVhazsKKysJICAvKiBQYXJlbnQgc3VjY2VlZGVkPyAgKi8KKysJICBp ZiAodXNyMV9nb3QpCisrCSAgICBicmVhazsKICsKLSsgIC8qIEJlIHN1cmUgdGhlICJUICh0cmFj aW5nIHN0b3ApIiB0ZXN0IGNhbiBwcm9jZWVkIGZvciBib3RoIHRocmVhZHMuICAqLwotKyAgdGlt ZWRfbXV0ZXhfbG9jayAoJnRlcm1pbmF0ZV9tdXRleCk7Ci0rICBpID0gcHRocmVhZF9tdXRleF91 bmxvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotKyAgYXNzZXJ0IChpID09IDApOworKwkgIGRlbGF5 ICgpOworKwl9CisrICAgICAgYXNzZXJ0ICh1c3IxX2dvdCk7CiArCi0rICByZXR1cm4gTlVMTDsK LSt9CisrICAgICAgLyogV2UgbXVzdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmYWxzZSB3 YXRjaHBvaW50IHJlbW92YWwpLiAgKi8KICsKLStzdGF0aWMgdm9pZCAqCi0rdGhyZWFkMl9mdW5j ICh2b2lkICp1bnVzZWQpCi0rewotKyAgaW50IGk7Ci0rICB2b2xhdGlsZSBpbnQgcndhdGNoX3N0 b3JlOworKyAgICAgIGJyZWFrcG9pbnQgKCk7CisrICAgIH0KICsKLSsgIHRocmVhZDJfdGlkID0g Z2V0dGlkICgpOwotKyAgaSA9IHB0aHJlYWRfY29uZF9zaWduYWwgKCZ0aHJlYWQyX3RpZF9jb25k KTsKKysgIGkgPSBzaWdhY3Rpb24gKFNJR1VTUjEsICZvbGRhY3QsIE5VTEwpOwogKyAgYXNzZXJ0 IChpID09IDApOworK30KICsKLSsgIC8qIEJlIHN1cmUgR0RCIGlzIGFscmVhZHkgc3RvcHBlZCBi ZWZvcmUgY29udGludWluZy4gICovCi0rICB0aW1lZF9tdXRleF9sb2NrICgmZ2Ric3RvcF9tdXRl eCk7Ci0rICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZnZGJzdG9wX211dGV4KTsKLSsgIGFz c2VydCAoaSA9PSAwKTsKKysjZWxzZQorKyMgZXJyb3IgIiFGT0xMT1dfUEFSRU5UICYmICFGT0xM T1dfQ0hJTEQiCisrI2VuZGlmCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy93YXRjaHBvaW50LWZvcmstbXQuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hw b2ludC1mb3JrLW10LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZGFj ZmMwCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNo cG9pbnQtZm9yay1tdC5jCitAQCAtMCwwICsxLDE1NyBAQAorKy8qIFRlc3QgY2FzZSBmb3IgZm9y Z290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgogKwot KyAgcndhdGNoX3N0b3JlID0gdGhyZWFkMl9yd2F0Y2g7CisrICAgQ29weXJpZ2h0IDIwMDgsIDIw MDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rICAvKiBCZSBzdXJlIHRoZSAi VCAodHJhY2luZyBzdG9wKSIgdGVzdCBjYW4gcHJvY2VlZCBmb3IgYm90aCB0aHJlYWRzLiAgKi8K LSsgIHRpbWVkX211dGV4X2xvY2sgKCZ0ZXJtaW5hdGVfbXV0ZXgpOwotKyAgaSA9IHB0aHJlYWRf bXV0ZXhfdW5sb2NrICgmdGVybWluYXRlX211dGV4KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKKysg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCiArCi0rICByZXR1cm4gTlVMTDsKLSt9CisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rcHJv Y19zdHJpbmcgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpsaW5lKQotK3sKLSsg IEZJTEUgKmY7Ci0rICBzdGF0aWMgY2hhciBidWZbTElORV9NQVhdOwotKyAgc2l6ZV90IGxpbmVf bGVuID0gc3RybGVuIChsaW5lKTsKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKwotKyAgZiA9 IGZvcGVuIChmaWxlbmFtZSwgInIiKTsKLSsgIGlmIChmID09IE5VTEwpCi0rICAgIHsKLSsgICAg ICBmcHJpbnRmIChzdGRlcnIsICJmb3BlbiAoXCIlc1wiKSBmb3IgXCIlc1wiOiAlc1xuIiwgZmls ZW5hbWUsIGxpbmUsCi0rCSAgICAgICBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICBleGl0IChF WElUX0ZBSUxVUkUpOwotKyAgICB9Ci0rICB3aGlsZSAoZXJybm8gPSAwLCBmZ2V0cyAoYnVmLCBz aXplb2YgKGJ1ZiksIGYpKQotKyAgICB7Ci0rICAgICAgY2hhciAqczsKKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisrICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LAorKyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KICsKLSsgICAgICBzID0gc3Ry Y2hyIChidWYsICdcbicpOwotKyAgICAgIGFzc2VydCAocyAhPSBOVUxMKTsKLSsgICAgICAqcyA9 IDA7CisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVk ZSA8c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+ CisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KICsKLSsgICAgICBpZiAoc3RybmNtcCAoYnVmLCBsaW5l LCBsaW5lX2xlbikgIT0gMCkKLSsJY29udGludWU7CisrI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4K KysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2RlZmluZSBnZXR0aWQoKSBzeXNjYWxsIChfX05SX2dl dHRpZCkKICsKLSsgICAgICBpZiAoZmNsb3NlIChmKSkKLSsJewotKwkgIGZwcmludGYgKHN0ZGVy ciwgImZjbG9zZSAoXCIlc1wiKSBmb3IgXCIlc1wiOiAlc1xuIiwgZmlsZW5hbWUsIGxpbmUsCi0r CQkgICBzdHJlcnJvciAoZXJybm8pKTsKLSsJICBleGl0IChFWElUX0ZBSUxVUkUpOwotKwl9Cisr LyogTm9uLWF0b21pYyBgdmFyKysnIHNob3VsZCBub3QgaHVydCBhcyB3ZSBzeW5jaHJvbml6ZSB0 aGUgdGhyZWFkcyBieSB0aGUgU1RFUAorKyAgIHZhcmlhYmxlLiAgSGl0LWNvbW1lbnRzIG5lZWQg dG8gYmUgZHVwbGljaXRlIHRoZXJlIHRvIGNhdGNoIGJvdGggYXQtc3RvcHMKKysgICBhbmQgYmVo aW5kLXN0b3BzLCBkZXBlbmRpbmcgb24gdGhlIHRhcmdldC4gICovCiArCi0rICAgICAgcmV0dXJu ICZidWZbbGluZV9sZW5dOwotKyAgICB9Ci0rICBpZiAoZXJybm8gIT0gMCkKLSsgICAgewotKyAg ICAgIGZwcmludGYgKHN0ZGVyciwgImZnZXRzIChcIiVzXCI6ICVzXG4iLCBmaWxlbmFtZSwgc3Ry ZXJyb3IgKGVycm5vKSk7Ci0rICAgICAgZXhpdCAoRVhJVF9GQUlMVVJFKTsKLSsgICAgfQotKyAg ZnByaW50ZiAoc3RkZXJyLCAiXCIlc1wiOiBObyBsaW5lIFwiJXNcIiBmb3VuZC5cbiIsIGZpbGVu YW1lLCBsaW5lKTsKLSsgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0rfQorK3N0YXRpYyB2b2xhdGls ZSBpbnQgdmFyOwogKwotK3N0YXRpYyB1bnNpZ25lZCBsb25nCi0rcHJvY191bG9uZyAoY29uc3Qg Y2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmxpbmUpCisrc3RhdGljIHZvaWQKKytkdW1teSAo dm9pZCkKICt7Ci0rICBjb25zdCBjaGFyICpzID0gcHJvY19zdHJpbmcgKGZpbGVuYW1lLCBsaW5l KTsKLSsgIGxvbmcgcmV0dmFsOwotKyAgY2hhciAqZW5kOwotKwotKyAgZXJybm8gPSAwOwotKyAg cmV0dmFsID0gc3RydG9sIChzLCAmZW5kLCAxMCk7Ci0rICBpZiAocmV0dmFsIDwgMCB8fCByZXR2 YWwgPj0gTE9OR19NQVggfHwgKGVuZCAmJiAqZW5kKSkKLSsgICAgewotKyAgICAgIGZwcmludGYg KHN0ZGVyciwgIlwiJXNcIjpcIiVzXCI6ICVsZCwgJXNcbiIsIGZpbGVuYW1lLCBsaW5lLCByZXR2 YWwsCi0rCSAgICAgICBzdHJlcnJvciAoZXJybm8pKTsKLSsgICAgICBleGl0IChFWElUX0ZBSUxV UkUpOwotKyAgICB9Ci0rICByZXR1cm4gcmV0dmFsOwogK30KICsKICtzdGF0aWMgdm9pZAotK3N0 YXRlX3dhaXQgKHBpZF90IHByb2Nlc3MsIGNvbnN0IGNoYXIgKndhbnRlZCkKKyticmVha3BvaW50 ICh2b2lkKQogK3sKLSsgIGNoYXIgKmZpbGVuYW1lOwotKyAgaW50IGk7Ci0rICBzdHJ1Y3QgdGlt ZXNwZWMgc3RhcnQsIG5vdzsKLSsgIGNvbnN0IGNoYXIgKnN0YXRlOwotKwotKyAgaSA9IGFzcHJp bnRmICgmZmlsZW5hbWUsICIvcHJvYy8lbHUvc3RhdHVzIiwgKHVuc2lnbmVkIGxvbmcpIHByb2Nl c3MpOwotKyAgYXNzZXJ0IChpID4gMCk7CisrfQogKwotKyAgaSA9IGNsb2NrX2dldHRpbWUgKENM T0NLX01PTk9UT05JQywgJnN0YXJ0KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKKysvKiBJbmNsdWRl IGhlcmUgdGhlIGZ1bmN0aW9uczoKKysgICBzdGF0aWMgdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOwor KyAgIHN0YXRpYyB2b2lkIGRlbGF5ICh2b2lkKTsgICovCiArCi0rICBkbwotKyAgICB7Ci0rICAg ICAgc3RhdGUgPSBwcm9jX3N0cmluZyAoZmlsZW5hbWUsICJTdGF0ZTpcdCIpOwotKyAgICAgIGlm IChzdHJjbXAgKHN0YXRlLCB3YW50ZWQpID09IDApCi0rCXsKLSsJICBmcmVlIChmaWxlbmFtZSk7 Ci0rCSAgcmV0dXJuOwotKwl9Cisrc3RhdGljIHB0aHJlYWRfdCB0aHJlYWQ7Cisrc3RhdGljIHZv bGF0aWxlIGludCBzdGVwOworKyNkZWZpbmUgVEhSRUFECiArCi0rICAgICAgaWYgKHNjaGVkX3lp ZWxkICgpKQotKwl7Ci0rCSAgcGVycm9yICgic2NoZWRfeWllbGQoKSIpOwotKwkgIGV4aXQgKEVY SVRfRkFJTFVSRSk7Ci0rCX0KKysjaW5jbHVkZSAid2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYyIK ICsKLSsgICAgICBpID0gY2xvY2tfZ2V0dGltZSAoQ0xPQ0tfTU9OT1RPTklDLCAmbm93KTsKLSsg ICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0rICAgICAgYXNzZXJ0IChub3cudHZfc2VjID49IHN0YXJ0 LnR2X3NlYyk7Ci0rICAgIH0KLSsgIHdoaWxlIChub3cudHZfc2VjIC0gc3RhcnQudHZfc2VjIDwg VElNRU9VVCk7Cisrc3RhdGljIHZvaWQgKgorK3N0YXJ0ICh2b2lkICphcmcpCisreworKyAgaWYg KHN0ZXAgPj0gMykKKysgICAgZ290byBzdGVwXzM7CiArCi0rICBmcHJpbnRmIChzdGRlcnIsICJU aW1lZCBvdXQgd2FpdGluZyBmb3IgUElEICVsdSBcIiVzXCIgKG5vdyBpdCBpcyBcIiVzXCIpIVxu IiwKLSsJICAgKHVuc2lnbmVkIGxvbmcpIHByb2Nlc3MsIHdhbnRlZCwgc3RhdGUpOwotKyAgZXhp dCAoRVhJVF9GQUlMVVJFKTsKLSt9CisrICB3aGlsZSAoc3RlcCAhPSAxKQorKyAgICBkZWxheSAo KTsKICsKLStzdGF0aWMgdm9sYXRpbGUgcGlkX3QgdHJhY2VyID0gMDsKLStzdGF0aWMgcHRocmVh ZF90IHRocmVhZDEsIHRocmVhZDI7CisrICB2YXIrKzsJLyogdmFsaWRpdHktdGhyZWFkLUIgKi8K KysgIGR1bW15ICgpOwkvKiB2YWxpZGl0eS10aHJlYWQtQiAqLworKyAgc3RlcCA9IDI7CisrICB3 aGlsZSAoc3RlcCAhPSAzKQorKyAgICB7CisrICAgICAgaWYgKHN0ZXAgPT0gOTkpCisrCWdvdG8g c3RlcF85OTsKKysgICAgICBkZWxheSAoKTsKKysgICAgfQogKwotK3N0YXRpYyB2b2lkCi0rY2xl YW51cCAodm9pZCkKLSt7Ci0rICBwcmludGYgKCJSZXN1bWluZyBHREIgUElEICVsdS5cbiIsICh1 bnNpZ25lZCBsb25nKSB0cmFjZXIpOworK3N0ZXBfMzoKKysgIGlmIChzdGVwID49IDUpCisrICAg IGdvdG8gc3RlcF81OwogKwotKyAgaWYgKHRyYWNlcikKKysgIHZhcisrOwkvKiBhZnRlci1mb3Jr MS1CICovCisrICBkdW1teSAoKTsJLyogYWZ0ZXItZm9yazEtQiAqLworKyAgc3RlcCA9IDQ7Cisr ICB3aGlsZSAoc3RlcCAhPSA1KQogKyAgICB7Ci0rICAgICAgaW50IGk7Ci0rICAgICAgaW50IHRy YWNlcl9zYXZlID0gdHJhY2VyOworKyAgICAgIGlmIChzdGVwID09IDk5KQorKwlnb3RvIHN0ZXBf OTk7CisrICAgICAgZGVsYXkgKCk7CisrICAgIH0KICsKLSsgICAgICB0cmFjZXIgPSAwOworK3N0 ZXBfNToKKysgIHZhcisrOwkvKiBhZnRlci1mb3JrMi1CICovCisrICBkdW1teSAoKTsJLyogYWZ0 ZXItZm9yazItQiAqLworKyAgcmV0dXJuICh2b2lkICopIDVVTDsKICsKLSsgICAgICBpID0ga2ls bCAodHJhY2VyX3NhdmUsIFNJR0NPTlQpOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAg fQorK3N0ZXBfOTk6CisrICAvKiBXZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3Qg YSBmb3Jnb3R0ZW4gYnJlYWtwb2ludCkuICAqLworKyAgdmFyKys7CisrICBicmVha3BvaW50ICgp OworKyAgcmV0dXJuICh2b2lkICopIDk5VUw7CiArfQogKwogK2ludAotK21haW4gKGludCBhcmdj LCBjaGFyICoqYXJndikKKyttYWluICh2b2lkKQogK3sKICsgIGludCBpOwotKyAgaW50IHN0YW5k YWxvbmUgPSAwOwotKwotKyAgaWYgKGFyZ2MgPT0gMiAmJiBzdHJjbXAgKGFyZ3ZbMV0sICItcyIp ID09IDApCi0rICAgIHN0YW5kYWxvbmUgPSAxOwotKyAgZWxzZQotKyAgICBhc3NlcnQgKGFyZ2Mg PT0gMSk7CisrICB2b2lkICp0aHJlYWRfcmVzdWx0OwogKwogKyAgc2V0YnVmIChzdGRvdXQsIE5V TEwpOworKyAgcHJpbnRmICgibWFpbjogJWRcbiIsIChpbnQpIGdldHRpZCAoKSk7CiArCi0rICB0 aW1lZF9tdXRleF9sb2NrICgmZ2Ric3RvcF9tdXRleCk7Ci0rCi0rICB0aW1lZF9tdXRleF9sb2Nr ICgmdGVybWluYXRlX211dGV4KTsKLSsKLSsgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZDEs IE5VTEwsIHRocmVhZDFfZnVuYywgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7CisrICAvKiBH ZW5lcmFsIHdhdGNocG9pbnRzIHZhbGlkaXR5LiAgKi8KKysgIHZhcisrOwkvKiB2YWxpZGl0eS1m aXJzdCAqLworKyAgZHVtbXkgKCk7CS8qIHZhbGlkaXR5LWZpcnN0ICovCiArCi0rICBpID0gcHRo cmVhZF9jcmVhdGUgKCZ0aHJlYWQyLCBOVUxMLCB0aHJlYWQyX2Z1bmMsIE5VTEwpOworKyAgaSA9 IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7CiArICBhc3NlcnQg KGkgPT0gMCk7CiArCi0rICBpZiAoIXN0YW5kYWxvbmUpCi0rICAgIHsKLSsgICAgICB0cmFjZXIg PSBwcm9jX3Vsb25nICgiL3Byb2Mvc2VsZi9zdGF0dXMiLCAiVHJhY2VyUGlkOlx0Iik7Ci0rICAg ICAgaWYgKHRyYWNlciA9PSAwKQotKwl7Ci0rCSAgZnByaW50ZiAoc3RkZXJyLCAiVGhlIHRlc3Rj YXNlIG11c3QgYmUgcnVuIGJ5IEdEQiFcbiIpOwotKwkgIGV4aXQgKEVYSVRfRkFJTFVSRSk7Ci0r CX0KLSsgICAgICBpZiAodHJhY2VyICE9IGdldHBwaWQgKCkpCi0rCXsKLSsJICBmcHJpbnRmIChz dGRlcnIsICJUaGUgdGVzdGNhc2UgcGFyZW50IG11c3QgYmUgb3VyIEdEQiB0cmFjZXIhXG4iKTsK LSsJICBleGl0IChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rICAgIH0KLSsKLSsgIC8qIFNJR0NPTlQg b3VyIGRlYnVnZ2VyIGluIHRoZSBjYXNlIG9mIG91ciBjcmFzaCBhcyB3ZSB3b3VsZCBkZWFkbG9j awotKyAgICAgb3RoZXJ3aXNlLiAgKi8KLSsKLSsgIGF0ZXhpdCAoY2xlYW51cCk7Ci0rCi0rICBw cmludGYgKCJTdG9wcGluZyBHREIgUElEICVsdS5cbiIsICh1bnNpZ25lZCBsb25nKSB0cmFjZXIp OwotKwotKyAgaWYgKHRyYWNlcikKLSsgICAgewotKyAgICAgIGkgPSBraWxsICh0cmFjZXIsIFNJ R1NUT1ApOwotKyAgICAgIGFzc2VydCAoaSA9PSAwKTsKLSsgICAgICBzdGF0ZV93YWl0ICh0cmFj ZXIsICJUIChzdG9wcGVkKSIpOwotKyAgICB9CisrICB2YXIrKzsJLyogdmFsaWRpdHktdGhyZWFk LUEgKi8KKysgIGR1bW15ICgpOwkvKiB2YWxpZGl0eS10aHJlYWQtQSAqLworKyAgc3RlcCA9IDE7 CisrICB3aGlsZSAoc3RlcCAhPSAyKQorKyAgICBkZWxheSAoKTsKICsKLSsgIHRpbWVkX211dGV4 X2xvY2sgKCZ0aHJlYWQxX3RpZF9tdXRleCk7Ci0rICB0aW1lZF9tdXRleF9sb2NrICgmdGhyZWFk Ml90aWRfbXV0ZXgpOworKyAgLyogSGFyZHdhcmUgd2F0Y2hwb2ludHMgZ290IGRpc2FybWVkIGhl cmUuICAqLworKyAgZm9ya29mZiAoMSk7CiArCi0rICAvKiBMZXQgdGhlIHRocmVhZHMgc3RhcnQu ICAqLwotKyAgaSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrICgmZ2Ric3RvcF9tdXRleCk7CisrICB2 YXIrKzsJLyogYWZ0ZXItZm9yazEtQSAqLworKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsxLUEg Ki8KKysgIHN0ZXAgPSAzOworKyNpZmRlZiBGT0xMT1dfQ0hJTEQKKysgIC8qIFNwYXduIG5ldyB0 aHJlYWQgYXMgaXQgd2FzIGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLworKyAgaSA9 IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7CiArICBhc3NlcnQg KGkgPT0gMCk7CisrI2VuZGlmCisrICB3aGlsZSAoc3RlcCAhPSA0KQorKyAgICBkZWxheSAoKTsK ICsKLSsgIHByaW50ZiAoIldhaXRpbmcgdGlsbCB0aGUgdGhyZWFkcyBpbml0aWFsaXplIHRoZWly IFRJRHMuXG4iKTsKLSsKLSsgIGlmICh0aHJlYWQxX3RpZCA9PSAwKQotKyAgICB7Ci0rICAgICAg aSA9IHB0aHJlYWRfY29uZF93YWl0ICgmdGhyZWFkMV90aWRfY29uZCwgJnRocmVhZDFfdGlkX211 dGV4KTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7CisrICAvKiBBIHNhbml0eSBjaGVjayBmb3Ig ZG91YmxlIGhhcmR3YXJlIHdhdGNocG9pbnRzIHJlbW92YWwuICAqLworKyAgZm9ya29mZiAoMik7 CiArCi0rICAgICAgYXNzZXJ0ICh0aHJlYWQxX3RpZCA+IDApOwotKyAgICB9CisrICB2YXIrKzsJ LyogYWZ0ZXItZm9yazItQSAqLworKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsyLUEgKi8KKysg IHN0ZXAgPSA1OworKyNpZmRlZiBGT0xMT1dfQ0hJTEQKKysgIC8qIFNwYXduIG5ldyB0aHJlYWQg YXMgaXQgd2FzIGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAqLworKyAgaSA9IHB0aHJl YWRfY3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7CisrICBhc3NlcnQgKGkgPT0g MCk7CisrI2VuZGlmCiArCi0rICBpZiAodGhyZWFkMl90aWQgPT0gMCkKLSsgICAgewotKyAgICAg IGkgPSBwdGhyZWFkX2NvbmRfd2FpdCAoJnRocmVhZDJfdGlkX2NvbmQsICZ0aHJlYWQyX3RpZF9t dXRleCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOworKyAgaSA9IHB0aHJlYWRfam9pbiAodGhy ZWFkLCAmdGhyZWFkX3Jlc3VsdCk7CisrICBhc3NlcnQgKGkgPT0gMCk7CisrICBhc3NlcnQgKHRo cmVhZF9yZXN1bHQgPT0gKHZvaWQgKikgNVVMKTsKICsKLSsgICAgICBhc3NlcnQgKHRocmVhZDJf dGlkID4gMCk7Ci0rICAgIH0KKysgIHJldHVybiAwOworK30KK2RpZmYgLS1naXQgYS9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjVmNjJlN2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2hwb2ludC1mb3JrLmMKK0BAIC0wLDAgKzEsNTcgQEAKKysvKiBUZXN0IGNhc2Ug Zm9yIGZvcmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vz cy4KICsKLSsgIHByaW50ZiAoIlRocmVhZCAxIFRJRCA9ICVsdSwgdGhyZWFkIDIgVElEID0gJWx1 LCBQSUQgPSAlbHUuXG4iLAotKwkgICh1bnNpZ25lZCBsb25nKSB0aHJlYWQxX3RpZCwgKHVuc2ln bmVkIGxvbmcpIHRocmVhZDJfdGlkLAotKwkgICh1bnNpZ25lZCBsb25nKSBnZXRwaWQgKCkpOwor KyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwotKyAgcHJpbnRmICgiV2FpdGluZyB0aWxsIHRoZSB0aHJlYWRzIGdldCB0cmFwcGVkIGJ5IHRo ZSB3YXRjaHBvaW50cy5cbiIpOworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KICsKLSsg IGlmICh0cmFjZXIpCi0rICAgIHsKLSsgICAgICAvKiBzMzkweC11bmtub3duLWxpbnV4LWdudSB3 aWxsIGZhaWwgd2l0aCAiUiAocnVubmluZykiLiAgKi8KKysgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgogKwotKyAgICAgIHN0YXRlX3dhaXQgKHRocmVhZDFfdGlkLCAiVCAodHJhY2luZyBz dG9wKSIpOworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiArCi0rICAgICAgc3RhdGVfd2FpdCAo dGhyZWFkMl90aWQsICJUICh0cmFjaW5nIHN0b3ApIik7Ci0rICAgIH0KKysgICBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor KyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisrICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw LAorKyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KICsKLSsgIGNsZWFudXAgKCk7 CisrI2luY2x1ZGUgPGFzc2VydC5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8 c3lzL3dhaXQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CiAr Ci0rICBwcmludGYgKCJKb2luaW5nIHRoZSB0aHJlYWRzLlxuIik7Cisrc3RhdGljIHZvbGF0aWxl IGludCB2YXI7CiArCi0rICBpID0gcHRocmVhZF9tdXRleF91bmxvY2sgKCZ0ZXJtaW5hdGVfbXV0 ZXgpOwotKyAgYXNzZXJ0IChpID09IDApOworK3N0YXRpYyB2b2lkCisrYnJlYWtwb2ludCAodm9p ZCkKKyt7CisrfQogKwotKyAgaSA9IHB0aHJlYWRfam9pbiAodGhyZWFkMSwgTlVMTCk7Ci0rICBh c3NlcnQgKGkgPT0gMCk7CisrLyogSW5jbHVkZSBoZXJlIHRoZSBmdW5jdGlvbjoKKysgICBzdGF0 aWMgdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOyAgKi8KICsKLSsgIGkgPSBwdGhyZWFkX2pvaW4gKHRo cmVhZDIsIE5VTEwpOwotKyAgYXNzZXJ0IChpID09IDApOworKyNpbmNsdWRlICJ3YXRjaHBvaW50 LWZvcmstZm9ya29mZi5jIgogKwotKyAgcHJpbnRmICgiRXhpdGluZy5cbiIpOwkvKiBicmVhay1h dC1leGl0ICovCisraW50CisrbWFpbiAodm9pZCkKKyt7CisrICBzZXRidWYgKHN0ZG91dCwgTlVM TCk7CisrICBwcmludGYgKCJtYWluOiAlZFxuIiwgKGludCkgZ2V0cGlkICgpKTsKICsKLSsgIC8q IEp1c3QgcHJldmVudCBjb21waWxlciBgd2FybmluZzogGyRCIUYbKEJ1bnVzZWRYX3J3YXRjaBsk QiFHGyhCIGRlZmluZWQgYnV0IG5vdCB1c2VkJy4gICovCi0rICB1bnVzZWQxX3J3YXRjaCA9IDE7 Ci0rICB1bnVzZWQyX3J3YXRjaCA9IDI7CisrICAvKiBHZW5lcmFsIHdhdGNocG9pbnRzIHZhbGlk aXR5LiAgKi8KKysgIHZhcisrOworKyAgLyogSGFyZHdhcmUgd2F0Y2hwb2ludHMgZ290IGRpc2Fy bWVkIGhlcmUuICAqLworKyAgZm9ya29mZiAoMSk7CisrICAvKiBUaGlzIHdhdGNocG9pbnQgZ290 IGxvc3QgYmVmb3JlLiAgKi8KKysgIHZhcisrOworKyAgLyogQSBzYW5pdHkgY2hlY2sgZm9yIGRv dWJsZSBoYXJkd2FyZSB3YXRjaHBvaW50cyByZW1vdmFsLiAgKi8KKysgIGZvcmtvZmYgKDIpOwor KyAgdmFyKys7CiArCi0rICByZXR1cm4gRVhJVF9TVUNDRVNTOworKyAgcmV0dXJuIDA7CiArfQot ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXJlb3Jk ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtcmVvcmRlci5l eHAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9y ay5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKIG5l dyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi41YWQxYTRlCitpbmRleCAwMDAwMDAw Li4xZGM5M2FiCiAtLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3dhdGNodGhyZWFkcy1yZW9yZGVyLmV4cAotQEAgLTAsMCArMSwxMDUgQEAKLSsjIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rIyBDb3B5cmlnaHQg MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAorQEAgLTAsMCArMSwxMzAgQEAKKysjIENv cHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yODMwMywxMTcgKzE4OTE4LDEyMyBAQCBp bmRleCAwMDAwMDAwLi41YWQxYTRlCiArIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiArCi0r IyBUZXN0IEdEQiBjYW4gY29wZSB3aXRoIHR3byB3YXRjaHBvaW50cyBiZWluZyBoaXQgYnkgZGlm ZmVyZW50IHRocmVhZHMgYXQgdGhlCi0rIyBzYW1lIHRpbWUsIEdEQiByZXBvcnRzIG9uZSBvZiB0 aGVtIGFuZCBhZnRlciAiY29udGludWUiIHRvIHJlcG9ydCB0aGUgb3RoZXIKLSsjIG9uZSBHREIg c2hvdWxkIG5vdCBiZSBjb25mdXNlZCBieSBkaWZmZXJlbnRseSBzZXQgd2F0Y2hwb2ludHMgdGhh dCB0aW1lLgotKyMgVGhpcyBpcyB0aGUgZ29hbCBvZiAicmVvcmRlcjEiLiAgInJlb3JkZXIwIiB0 ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZgotKyMgdHdvIHdhdGNocG9pbnQgYmVpbmcg aGl0IGF0IHRoZSBzYW1lIHRpbWUsIHdpdGhvdXQgcmVvcmRlcmluZyB0aGVtIGR1cmluZyB0aGUK LSsjIHN0b3AuICBUaGUgZm9ybWVybHkgYnJva2VuIGZ1bmN0aW9uYWxpdHkgaXMgZHVlIHRvIHRo ZSBhbGwtc3RvcCBtb2RlIGRlZmF1bHQKLSsjICJzaG93IGJyZWFrcG9pbnQgYWx3YXlzLWluc2Vy dGVkIiBiZWluZyAib2ZmIi4gIEZvcm1lcmx5IHRoZSByZW1lbWJlcmVkIGhpdAotKyMgY291bGQg YmUgYXNzaWduZWQgZHVyaW5nIGNvbnRpbnVhdGlvbiBvZiBhIHRocmVhZCB3aXRoIHBlbmRpbmcg U0lHVFJBUCB0byB0aGUKLSsjIGRpZmZlcmVudC9uZXcgd2F0Y2hwb2ludCwganVzdCBiYXNlZCBv biB0aGUgd2F0Y2hwb2ludC9kZWJ1ZyByZWdpc3RlciBudW1iZXIuCi0rCi0raWYge1t0YXJnZXRf aW5mbyBleGlzdHMgZ2RiLG5vX2hhcmR3YXJlX3dhdGNocG9pbnRzXQotKyAgICB8fCAhW2lzdGFy Z2V0ICotKi1saW51eCpdfSB7Ci0rICAgIHJldHVybiAwOwotK30KKysjIFRlc3QgY2FzZSBmb3Ig Zm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgog KwotK3NldCB0ZXN0ZmlsZSAid2F0Y2h0aHJlYWRzLXJlb3JkZXIiCi0rc2V0IHNyY2ZpbGUgJHt0 ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0K LStpZiB7W2dkYl9jb21waWxlX3B0aHJlYWRzICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmls ZX0iICR7YmluZmlsZX0gZXhlY3V0YWJsZSBbbGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1s cnRdXSAhPSAiIiB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQorK3Byb2MgdGVzdCB7dHlwZSBzeW1i b2x9IHsKKysgICAgZ2xvYmFsIG9iamRpciBzdWJkaXIgc3JjZGlyCiArCi0rZm9yZWFjaCByZW9y ZGVyIHswIDF9IHsKKysgICAgc2V0IHRlc3Qgd2F0Y2hwb2ludC1mb3JrCiArCiArICAgIGdsb2Jh bCBwZl9wcmVmaXgKICsgICAgc2V0IHByZWZpeF90ZXN0ICRwZl9wcmVmaXgKLSsgICAgbGFwcGVu ZCBwZl9wcmVmaXggInJlb3JkZXIkcmVvcmRlcjoiCisrICAgIGxhcHBlbmQgcGZfcHJlZml4ICIk dHlwZToiCisrICAgIHNldCBwcmVmaXhfbXQgJHBmX3ByZWZpeAogKwotKyAgICBjbGVhbl9yZXN0 YXJ0ICR0ZXN0ZmlsZQorKyAgICAjIG5vIHRocmVhZHMKICsKLSsgICAgZ2RiX3Rlc3QgInNldCBj YW4tdXNlLWh3LXdhdGNocG9pbnRzIDEiCisrICAgIHNldCBwZl9wcmVmaXggJHByZWZpeF9tdAor KyAgICBsYXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFkZWQ6IgogKwotKyAgICBpZiAhW3J1 bnRvX21haW5dIHsKLSsJZ2RiX3N1cHByZXNzX3Rlc3RzCisrICAgIHNldCBleGVjdXRhYmxlICR7 dGVzdH0tJHt0eXBlfQorKyAgICBpZiB7IFtnZGJfY29tcGlsZSAke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7dGVzdH0uYyAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZX0gZXhlY3V0YWJsZSBb bGlzdCBkZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJvbF1dICE9ICIiIH0geworKwl1bnRl c3RlZCAke3Rlc3R9LmV4cAorKwlyZXR1cm4gLTEKICsgICAgfQorKyAgICBjbGVhbl9yZXN0YXJ0 ICRleGVjdXRhYmxlCiArCi0rICAgICMgVXNlICJyd2F0Y2giIGFzICJ3YXRjaCIgd291bGQgcmVw b3J0IHRoZSB3YXRjaHBvaW50IGNoYW5nZWQganVzdCBiYXNlZCBvbiBpdHMKLSsgICAgIyByZWFk IG1lbW9yeSB2YWx1ZSBkdXJpbmcgYSBzdG9wIGJ5IHVucmVsYXRlZCBldmVudC4gIFdlIGFyZSBp bnRlcmVzdGVkIHRvIG5vdAotKyAgICAjIHRvIGxvc2UgdGhlIGhhcmR3YXJlIHdhdGNocG9pbnQg dHJpZ2dlci4KLSsKLSsgICAgZ2RiX3Rlc3QgInJ3YXRjaCB0aHJlYWQxX3J3YXRjaCIgIkhhcmR3 YXJlIHJlYWQgd2F0Y2hwb2ludCBcWzAtOVxdKzogdGhyZWFkMV9yd2F0Y2giCi0rICAgIGdkYl90 ZXN0IHtzZXQgJHJ3YXRjaDE9JGJwbnVtfQotKyAgICBzZXQgdGVzdCAicndhdGNoIHRocmVhZDJf cndhdGNoIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rCS1yZSAiVGFy Z2V0IGRvZXMgbm90IHN1cHBvcnQgdGhpcyB0eXBlIG9mIGhhcmR3YXJlIHdhdGNocG9pbnRcXC5c clxuJGdkYl9wcm9tcHQgJCIgewotKwkgICAgIyBwcGM2NCBzdXBwb3J0cyBhdCBtb3N0IDEgaHcg d2F0Y2hwb2ludHMuCi0rCSAgICB1bnN1cHBvcnRlZCAkdGVzdAotKwkgICAgcmV0dXJuCi0rCX0K LSsJLXJlICJIYXJkd2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6IHRocmVhZDJfcndhdGNo XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJICAgIHBhc3MgJHRlc3QKLSsJfQorKyAgICBnZGJfdGVz dCAic2hvdyBkZXRhY2gtb24tZm9yayIgIldoZXRoZXIgZ2RiIHdpbGwgZGV0YWNoIHRoZSBjaGls ZCBvZiBhIGZvcmsgaXMgb24uIgorKyAgICBnZGJfdGVzdCAic2V0IGZvbGxvdy1mb3JrLW1vZGUg JHR5cGUiCisrICAgIGdkYl90ZXN0ICJzaG93IGZvbGxvdy1mb3JrLW1vZGUiICJEZWJ1Z2dlciBy ZXNwb25zZSB0byBhIHByb2dyYW0gY2FsbCBvZiBmb3JrIG9yIHZmb3JrIGlzIFwiJHR5cGVcIi4i CisrICAgICMgVGVzdGNhc2UgdXNlcyBpdCBmb3IgdGhlIGBmb2xsb3ctZm9yay1tb2RlIGNoaWxk JyB0eXBlLgorKyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEgbm9zdG9wIG5vcHJpbnQgcGFz cyIKKysKKysgICAgaWYgeyAhW3J1bnRvX21haW5dIH0gdGhlbiB7CisrCWdkYl9zdXBwcmVzc190 ZXN0cworKwlyZXR1cm4KICsgICAgfQotKyAgICBnZGJfdGVzdCB7c2V0ICRyd2F0Y2gyPSRicG51 bX0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrLWF0LWV4 aXQiXQogKwotKyAgICAjIFRoZSB3YXRjaHBvaW50cyBjYW4gaGFwcGVuIGluIGFyYml0cmFyeSBv cmRlciBkZXBlbmRpbmcgb24gcmFuZG9tOgotKyAgICAjIFNFTDogRm91bmQgMiBTSUdUUkFQIGV2 ZW50cywgc2VsZWN0aW5nICNbMDFdCi0rICAgICMgQXMgR0RCIGNvbnRhaW5zIG5vIHNyYW5kKCkg b24gdGhlIHNwZWNpZmljIGhvc3QvT1MgaXQgd2lsbCBiZWhhdmUgYWx3YXlzIHRoZQotKyAgICAj IHNhbWUuICBTdWNoIG9yZGVyIGNhbm5vdCBiZSBndWFyYW50ZWVkIGZvciBHREIgaW4gZ2VuZXJh bC4KKysgICAgIyBJbnN0YWxsIHRoZSB3YXRjaHBvaW50IG9ubHkgYWZ0ZXIgZ2V0dGluZyBpbnRv IE1BSU4gLSB3b3JrYXJvdW5kIHNvbWUgUFBDCisrICAgICMgcHJvYmxlbS4KKysgICAgZ2RiX3Rl c3QgIndhdGNoIHZhciIgImF0Y2hwb2ludCAyOiB2YXIiICJTZXQgdGhlIHdhdGNocG9pbnQiCisr CisrICAgICMgSXQgaXMgbmV2ZXIgaGl0IGJ1dCBpdCBzaG91bGQgbm90IGJlIGxlZnQgb3ZlciBp biB0aGUgZm9yaygpZWQtb2ZmIGNoaWxkLgorKyAgICBnZGJfYnJlYWtwb2ludCAiYnJlYWtwb2lu dCIKICsKICsgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgIkhhcmR3YXJlIHJlYWQg d2F0Y2hwb2ludCBcWzAtOVxdKzogdGhyZWFkXFsxMlxdX3J3YXRjaFxyXG5cclxuVmFsdWUgPSAw XHJcbjB4XFswLTlhLWZcXSsgaW4gdGhyZWFkXFsxMlxdX2Z1bmMgLioiIFwKLSsJICAgICAiY29u dGludWUgYSIKKysJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMC4qTmV3IHZh bHVlID0gMS4qZm9ya29mZiAqXFwoMVxcKS4qIiAid2F0Y2hwb2ludHMgd29yayIKKysgICAgZ2Ri X3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJi cmVha3BvaW50IGFmdGVyIHRoZSBmaXJzdCBmb3JrIgorKyAgICBnZGJfdGVzdCAiY29udGludWUi IFwKKysJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0g Mi4qZm9ya29mZiAqXFwoMlxcKS4qIiAid2F0Y2hwb2ludCBhZnRlciB0aGUgZmlyc3QgZm9yayIK KysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3Bv aW50LioiICJicmVha3BvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3Qg ImNvbnRpbnVlIiBcCisrCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDIuKk5l dyB2YWx1ZSA9IDMuKnJldHVybiAqMDsiICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBzZWNvbmQgZm9y ayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy4uKlByb2dyYW0gZXhpdGVk IG5vcm1hbGx5LiIgImZpbmlzaCIKKysKKysKKysgICAgIyB0aHJlYWRzCiArCi0rICAgIGlmICRy ZW9yZGVyIHsKLSsJZ2RiX3Rlc3Qge2RlbGV0ZSAkcndhdGNoMX0KLSsJZ2RiX3Rlc3Qge2RlbGV0 ZSAkcndhdGNoMn0KKysgICAgc2V0IHBmX3ByZWZpeCAkcHJlZml4X210CisrICAgIGxhcHBlbmQg cGZfcHJlZml4ICJtdWx0aXRocmVhZGVkOiIKKysKKysgICAgc2V0IGV4ZWN1dGFibGUgJHt0ZXN0 fS1tdC0ke3R5cGV9CisrICAgIGlmIHsgW2dkYl9jb21waWxlX3B0aHJlYWRzICR7c3JjZGlyfS8k e3N1YmRpcn0vJHt0ZXN0fS1tdC5jICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfSBl eGVjdXRhYmxlIFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LUQkc3ltYm9sXV0gIT0gIiIg fSB7CisrCXVudGVzdGVkICR7dGVzdH0uZXhwCisrCXJldHVybiAtMQorKyAgICB9CisrICAgIGNs ZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKICsKLSsJZ2RiX3Rlc3QgInJ3YXRjaCB1bnVzZWQxX3J3 YXRjaCIgIkhhcmR3YXJlIHJlYWQgd2F0Y2hwb2ludCBcWzAtOVxdKzogdW51c2VkMV9yd2F0Y2gi Ci0rCWdkYl90ZXN0ICJyd2F0Y2ggdW51c2VkMl9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNo cG9pbnQgXFswLTlcXSs6IHVudXNlZDJfcndhdGNoIgorKyAgICBnZGJfdGVzdCAic2V0IGZvbGxv dy1mb3JrLW1vZGUgJHR5cGUiCisrICAgICMgVGVzdGNhc2UgdXNlcyBpdCBmb3IgdGhlIGBmb2xs b3ctZm9yay1tb2RlIGNoaWxkJyB0eXBlLgorKyAgICBnZGJfdGVzdCAiaGFuZGxlIFNJR1VTUjEg bm9zdG9wIG5vcHJpbnQgcGFzcyIKICsKLSsJZ2RiX3Rlc3QgInJ3YXRjaCB0aHJlYWQxX3J3YXRj aCIgIkhhcmR3YXJlIHJlYWQgd2F0Y2hwb2ludCBcWzAtOVxdKzogdGhyZWFkMV9yd2F0Y2giCi0r CWdkYl90ZXN0ICJyd2F0Y2ggdGhyZWFkMl9yd2F0Y2giICJIYXJkd2FyZSByZWFkIHdhdGNocG9p bnQgXFswLTlcXSs6IHRocmVhZDJfcndhdGNoIgorKyAgICBpZiB7ICFbcnVudG9fbWFpbl0gfSB0 aGVuIHsKKysJZ2RiX3N1cHByZXNzX3Rlc3RzCisrCXJldHVybgogKyAgICB9CiArCisrICAgICMg SW5zdGFsbCB0aGUgd2F0Y2hwb2ludCBvbmx5IGFmdGVyIGdldHRpbmcgaW50byBNQUlOIC0gd29y a2Fyb3VuZCBzb21lIFBQQworKyAgICAjIHByb2JsZW0uCisrICAgIGdkYl90ZXN0ICJ3YXRjaCB2 YXIiICJhdGNocG9pbnQgMjogdmFyIiAiU2V0IHRoZSB3YXRjaHBvaW50IgorKworKyAgICAjIEl0 IGlzIG5ldmVyIGhpdCBidXQgaXQgc2hvdWxkIG5vdCBiZSBsZWZ0IG92ZXIgaW4gdGhlIGZvcmso KWVkLW9mZiBjaGlsZC4KKysgICAgZ2RiX2JyZWFrcG9pbnQgImJyZWFrcG9pbnQiCisrCisrICAg IGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFs dWUgPSAwLipOZXcgdmFsdWUgPSAxLip2YWxpZGl0eS1maXJzdC4qIiAic2luZ2xldGhyZWFkIHdh dGNocG9pbnRzIHdvcmsiCiArICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJIYXJk d2FyZSByZWFkIHdhdGNocG9pbnQgXFswLTlcXSs6IHRocmVhZFxbMTJcXV9yd2F0Y2hcclxuXHJc blZhbHVlID0gMFxyXG4weFxbMC05YS1mXF0rIGluIHRocmVhZFxbMTJcXV9mdW5jIC4qIiBcCi0r CSAgICAgImNvbnRpbnVlIGIiCisrCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9 IDEuKk5ldyB2YWx1ZSA9IDIuKnZhbGlkaXR5LXRocmVhZC1BLioiICJtdWx0aXRocmVhZGVkIHdh dGNocG9pbnRzIHdvcmsgYXQgQSIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAg ImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDIuKk5ldyB2YWx1ZSA9IDMuKnZhbGlkaXR5 LXRocmVhZC1CLioiICJtdWx0aXRocmVhZGVkIHdhdGNocG9pbnRzIHdvcmsgYXQgQiIKKysgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50Lioi ICJicmVha3BvaW50IChBKSBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNv bnRpbnVlIiBcCisrCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1ZSA9IDMuKk5ldyB2 YWx1ZSA9IDQuKmFmdGVyLWZvcmsxLUEuKiIgIndhdGNocG9pbnQgQSBhZnRlciB0aGUgZmlyc3Qg Zm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBcCisrCSAgICAgImF0Y2hwb2ludCAyOiB2 YXIuKk9sZCB2YWx1ZSA9IDQuKk5ldyB2YWx1ZSA9IDUuKmFmdGVyLWZvcmsxLUIuKiIgIndhdGNo cG9pbnQgQiBhZnRlciB0aGUgZmlyc3QgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiBc CisrCSAgICAgInJlYWtwb2ludCAzLCBicmVha3BvaW50LioiICJicmVha3BvaW50IChBKSBhZnRl ciB0aGUgc2Vjb25kIGZvcmsiCisrICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAorKwkgICAgICJh dGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSA1LipOZXcgdmFsdWUgPSA2LiphZnRlci1mb3Jr Mi1BLioiICJ3YXRjaHBvaW50IEEgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgorKyAgICBnZGJfdGVz dCAiY29udGludWUiIFwKKysJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gNi4q TmV3IHZhbHVlID0gNy4qYWZ0ZXItZm9yazItQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVyIHRoZSBz ZWNvbmQgZm9yayIKKysgICAgZ2RiX3Rlc3QgImNvbnRpbnVlIiAiQ29udGludWluZy4uKlByb2dy YW0gZXhpdGVkIG5vcm1hbGx5LiIgImZpbmlzaCIKICsKLSsgICAgIyBXaGlsZSB0aGUgZGVidWcg b3V0cHV0IGl0c2VsZiBpcyBub3QgY2hlY2tlZCBpbiB0aGlzIHRlc3RjYXNlIG9uZSBidWcgd2Fz Ci0rICAgICMgZm91bmQgaW4gdGhlIERFQlVHX0lORlJVTiBjb2RlIHBhdGguCi0rICAgIGdkYl90 ZXN0ICJzZXQgZGVidWcgaW5mcnVuIDEiCiArCi0rICAgIGdkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJicmVhay1hdC1leGl0IiAiLipicmVhay1hdC1leGl0LioiCisrICAgICMgY2xlYW51cAog KwogKyAgICBzZXQgcGZfcHJlZml4ICRwcmVmaXhfdGVzdAogK30KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2xpYi9jcC1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2NwLXN1cHBv cnQuZXhwCi1pbmRleCBkYmQyZjU5Li40NGUxYjUxIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9saWIvY3Atc3VwcG9ydC5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2NwLXN1cHBvcnQu ZXhwCi1AQCAtMjIyLDcgKzIyMiw3IEBAIHByb2MgY3BfdGVzdF9wdHlwZV9jbGFzcyB7IGluX2Nv bW1hbmQgaW5fdGVzdG5hbWUgaW5fa2V5IGluX3RhZyBpbl9jbGFzc190YWJsZSB7Ci0gCi0gICAg IHNldCBwYXJzZV9va2F5IDAKLSAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIiRpbl9jb21tYW5kIiAi JGluX3Rlc3RuYW1lIC8vIHBhcnNlIGZhaWxlZCIgewotLQktcmUgInR5cGUgPSAoc3RydWN0fGNs YXNzKSR7d3NvcHR9KFxbQS1aYS16MC05X1xdKikke3dzb3B0fSgoOlxbXlx7XF0qKT8pJHt3c29w dH1ceyguKilcfSR7d3NvcHR9KFxbXlxyXG5cXSopXFtcclxuXF0rJGdkYl9wcm9tcHQgJCIgewot KwktcmUgInR5cGUgPSAoc3RydWN0fGNsYXNzKSR7d3NvcHR9KFxbQS1aYS16MC05XzpcXSopJHt3 c29wdH0oKDpcW15ce1xdKik/KSR7d3NvcHR9XHsoLiopXH0ke3dzb3B0fShcW15cclxuXF0qKVxb XHJcblxdKyRnZGJfcHJvbXB0ICQiIHsKLSAJICAgIHNldCBwYXJzZV9va2F5ICAgICAgICAgIDEK LSAJICAgIHNldCBhY3R1YWxfa2V5ICAgICAgICAgICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotIAkg ICAgc2V0IGFjdHVhbF90YWcgICAgICAgICAgJGV4cGVjdF9vdXQoMixzdHJpbmcpCi1AQCAtMjMx LDYgKzIzMSw3IEBAIHByb2MgY3BfdGVzdF9wdHlwZV9jbGFzcyB7IGluX2NvbW1hbmQgaW5fdGVz dG5hbWUgaW5fa2V5IGluX3RhZyBpbl9jbGFzc190YWJsZSB7Ci0gCSAgICBzZXQgYWN0dWFsX3Rh aWwgICAgICAgICAkZXhwZWN0X291dCg2LHN0cmluZykKLSAJfQotICAgICB9Ci0rICAgIAotICAg ICBpZiB7ICEgJHBhcnNlX29rYXkgfSB0aGVuIHsgcmV0dXJuIH0KLSAKLSAgICAgIyBDaGVjayB0 aGUgYWN0dWFsIGtleS4gIEl0IHdvdWxkIGJlIG5pY2UgdG8gcmVxdWlyZSB0aGF0IGl0IG1hdGNo CisrCisrdGVzdCBwYXJlbnQgRk9MTE9XX1BBUkVOVAorKworKyMgT25seSBHTlUvTGludXggaXMg a25vd24gdG8gc3VwcG9ydCBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnLgorK2lmIHtbaXN0 YXJnZXQgIiotKi1saW51eCoiXX0geworKyAgICB0ZXN0IGNoaWxkIEZPTExPV19DSElMRAorK30K IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAotaW5kZXggMGM5M2E3My4uZDBjMzQ5MyAxMDA2NDQKK2luZGV4IDliMDZhMmYu LjQxOWQ1YTkgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiArKysgYi9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiBAQCAtMjcsNiArMjcsNyBAQCBpZiB7JHRvb2wgPT0g IiJ9IHsKQEAgLTI4NDg0LDcgKzE5MTA1LDcgQEAgaW5kZXggMDAwMDAwMC4uYjhlOTgzNgogKyAg ICByZXR1cm4gMAogK30KIGRpZmYgLS1naXQgYS9nZGIvdGhyZWFkLmMgYi9nZGIvdGhyZWFkLmMK LWluZGV4IDU1YjRiOTYuLmUwYWQyZDMgMTAwNjQ0CitpbmRleCAxNmEyMDdjLi5jM2NmZjA2IDEw MDY0NAogLS0tIGEvZ2RiL3RocmVhZC5jCiArKysgYi9nZGIvdGhyZWFkLmMKIEBAIC02MSw3ICs2 MSw2IEBAIHN0YXRpYyBpbnQgdGhyZWFkX2FsaXZlIChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CkBA IC0yODQ5NSw3ICsxOTExNiw3IEBAIGluZGV4IDU1YjRiOTYuLmUwYWQyZDMgMTAwNjQ0CiAgCiAg LyogRnJvbnRlbmQgdmlldyBvZiB0aGUgdGhyZWFkIHN0YXRlLiAgUG9zc2libGUgZXh0ZW5zaW9u czogc3RlcHBpbmcsCiAgICAgZmluaXNoaW5nLCB1bnRpbChsaW5nKSwuLi4gICovCi1AQCAtNDk3 LDE2ICs0OTYsMjMgQEAgdGhyZWFkX2FsaXZlIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwKQorQEAg LTUxNyw3ICs1MTYsNyBAQCB0aHJlYWRfYWxpdmUgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApCiAg ICByZXR1cm4gMTsKICB9CiAgCkBAIC0yODUwMywzMiArMTkxMjQsMTIgQEAgaW5kZXggNTViNGI5 Ni4uZTBhZDJkMyAxMDA2NDQKICt2b2lkCiAgcHJ1bmVfdGhyZWFkcyAodm9pZCkKICB7Ci0tICBz dHJ1Y3QgdGhyZWFkX2luZm8gKnRwLCAqbmV4dDsKLSsgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7 Ci0rICBzdHJ1Y3QgdGhyZWFkX2luZm8gKipwcmV2cCA9ICZ0aHJlYWRfbGlzdDsKLSAKLS0gIGZv ciAodHAgPSB0aHJlYWRfbGlzdDsgdHA7IHRwID0gbmV4dCkKLSsgIGZvciAodHAgPSAqcHJldnA7 IHRwOyB0cCA9ICpwcmV2cCkKLSAgICAgewotLSAgICAgIG5leHQgPSB0cC0+bmV4dDsKLSsgICAg ICAvKiBJZiB0aGUgdGhyZWFkIGhhcyBkaWVkLCBmcmVlIGl0IGFuZCB1bmxpbmsgaXQgZnJvbSB0 aGUgbGlzdC4KLSsJIE90aGVyd2lzZSwgYWR2YW5jZSB0byB0aGUgbmV4dCB0aHJlYWQuICAqLwot ICAgICAgIGlmICghdGhyZWFkX2FsaXZlICh0cCkpCi0tCWRlbGV0ZV90aHJlYWQgKHRwLT5wdGlk KTsKLSsJewotKwkgICpwcmV2cCA9IHRwLT5uZXh0OwotKwkgIGZyZWVfdGhyZWFkICh0cCk7Ci0r CX0KLSsgICAgICBlbHNlCi0rCXByZXZwID0gJnRwLT5uZXh0OwotICAgICB9Ci0gfQotIAorICAg c3RydWN0IHRocmVhZF9pbmZvICp0cCwgKm5leHQ7CiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIv Z2RiL3RvcC5jCi1pbmRleCAxYjRhYTlkLi4zY2ZlNTdlIDEwMDY0NAoraW5kZXggODVlN2I2Mi4u YjRmMGJmNyAxMDA2NDQKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAtMzQ5 LDYgKzM0OSw3IEBAIHZvaWQKK0BAIC0zNDYsNiArMzQ2LDcgQEAgdm9pZAogIHByZXBhcmVfZXhl Y3V0ZV9jb21tYW5kICh2b2lkKQogIHsKICAgIGZyZWVfYWxsX3ZhbHVlcyAoKTsKQEAgLTI4NTM3 LDE5ICsxOTEzOCwxOCBAQCBpbmRleCAxYjRhYTlkLi4zY2ZlNTdlIDEwMDY0NAogICAgLyogV2l0 aCBtdWx0aXBsZSB0aHJlYWRzIHJ1bm5pbmcgd2hpbGUgdGhlIG9uZSB3ZSdyZSBleGFtaW5pbmcg aXMgc3RvcHBlZCwKICAgICAgIHRoZSBkY2FjaGUgY2FuIGdldCBzdGFsZSB3aXRob3V0IHVzIGJl aW5nIGFibGUgdG8gZGV0ZWN0IGl0LgogZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuYyBiL2dk Yi90eXBlcHJpbnQuYwotaW5kZXggZjA5MDIzMS4uZmMxNWVjMSAxMDA2NDQKK2luZGV4IGNlOWY1 NTEuLjVmOWQ3MzkgMTAwNjQ0CiAtLS0gYS9nZGIvdHlwZXByaW50LmMKICsrKyBiL2dkYi90eXBl cHJpbnQuYwotQEAgLTM1LDYgKzM1LDggQEAKK0BAIC0zNiw2ICszNiw3IEBACiAgI2luY2x1ZGUg ImdkYl9zdHJpbmcuaCIKICAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogICNpbmNsdWRlICJ2YWxw cmludC5oIgogKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKLSsKICAjaW5jbHVkZSA8ZXJybm8uaD4K ICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV90eXBlcHJpbnQgKHZvaWQpOwotQEAgLTc2LDYg Kzc4LDkgQEAgdm9pZAorQEAgLTc3LDYgKzc4LDkgQEAgdm9pZAogIHR5cGVfcHJpbnQgKHN0cnVj dCB0eXBlICp0eXBlLCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAg CSAgICBpbnQgc2hvdykKICB7CkBAIC0yODU1OSw3ICsxOTE1OSw3IEBAIGluZGV4IGYwOTAyMzEu LmZjMTVlYzEgMTAwNjQ0CiAgICBMQV9QUklOVF9UWVBFICh0eXBlLCB2YXJzdHJpbmcsIHN0cmVh bSwgc2hvdywgMCk7CiAgfQogIAotQEAgLTExNCw3ICsxMTksOCBAQCB3aGF0aXNfZXhwIChjaGFy ICpleHAsIGludCBzaG93KQorQEAgLTExNSw3ICsxMTksOCBAQCB3aGF0aXNfZXhwIChjaGFyICpl eHAsIGludCBzaG93KQogIHsKICAgIHN0cnVjdCBleHByZXNzaW9uICpleHByOwogICAgc3RydWN0 IHZhbHVlICp2YWw7CkBAIC0yODU2OSw3ICsxOTE2OSw3IEBAIGluZGV4IGYwOTAyMzEuLmZjMTVl YzEgMTAwNjQ0CiAgICBzdHJ1Y3QgdHlwZSAqcmVhbF90eXBlID0gTlVMTDsKICAgIHN0cnVjdCB0 eXBlICp0eXBlOwogICAgaW50IGZ1bGwgPSAwOwotQEAgLTEyNSwxMiArMTMxLDEzIEBAIHdoYXRp c19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCitAQCAtMTI2LDEyICsxMzEsMTMgQEAgd2hhdGlz X2V4cCAoY2hhciAqZXhwLCBpbnQgc2hvdykKICAgIGlmIChleHApCiAgICAgIHsKICAgICAgICBl eHByID0gcGFyc2VfZXhwcmVzc2lvbiAoZXhwKTsKQEAgLTI4NTg0LDcgKzE5MTg0LDcgQEAgaW5k ZXggZjA5MDIzMS4uZmMxNWVjMSAxMDA2NDQKICAgIHR5cGUgPSB2YWx1ZV90eXBlICh2YWwpOwog IAogICAgZ2V0X3VzZXJfcHJpbnRfb3B0aW9ucyAoJm9wdHMpOwotQEAgLTE2Nyw4ICsxNzQsNyBA QCB3aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBzaG93KQorQEAgLTE2OCw4ICsxNzQsNyBAQCB3 aGF0aXNfZXhwIChjaGFyICpleHAsIGludCBzaG93KQogICAgdHlwZV9wcmludCAodHlwZSwgIiIs IGdkYl9zdGRvdXQsIHNob3cpOwogICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKICAKQEAgLTI4 NTk0LDEyMCArMTkxOTQsOCBAQCBpbmRleCBmMDkwMjMxLi5mYzE1ZWMxIDEwMDY0NAogIH0KICAK ICBzdGF0aWMgdm9pZAotZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuaCBiL2dkYi90eXBlcHJp bnQuaAotaW5kZXggZjU2MTMxMC4uZDI2MWM3OSAxMDA2NDQKLS0tLSBhL2dkYi90eXBlcHJpbnQu aAotKysrIGIvZ2RiL3R5cGVwcmludC5oCi1AQCAtMjAsMTAgKzIwLDEzIEBACi0gI2lmbmRlZiBU WVBFUFJJTlRfSAotICNkZWZpbmUgVFlQRVBSSU5UX0gKLSAKLStlbnVtIGxhbmd1YWdlOwotIHN0 cnVjdCB1aV9maWxlOwotIAotIHZvaWQgcHJpbnRfdHlwZV9zY2FsYXIgKHN0cnVjdCB0eXBlICog dHlwZSwgTE9OR0VTVCwgc3RydWN0IHVpX2ZpbGUgKik7Ci0gCi0gdm9pZCBjX3R5cGVfcHJpbnRf dmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwKLSAJ CQkJICBpbnQsIGludCk7Ci0rCi0rdm9pZCBjX3R5cGVfcHJpbnRfYXJncyAoc3RydWN0IHR5cGUg Kiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LCBlbnVtIGxhbmd1YWdlKTsKLSAjZW5kaWYKLWRpZmYg LS1naXQgYS9nZGIvdWktZmlsZS5jIGIvZ2RiL3VpLWZpbGUuYwotaW5kZXggNTI3OTE3Yy4uMDdk OTU5YSAxMDA2NDQKLS0tLSBhL2dkYi91aS1maWxlLmMKLSsrKyBiL2dkYi91aS1maWxlLmMKLUBA IC0yMiw2ICsyMiw3IEBACi0gCi0gI2luY2x1ZGUgImRlZnMuaCIKLSAjaW5jbHVkZSAidWktZmls ZS5oIgotKyNpbmNsdWRlICJnZGJfb2JzdGFjay5oIgotICNpbmNsdWRlICJnZGJfc3RyaW5nLmgi Ci0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci1AQCAtMjYzLDcgKzI2NCw3IEBAIHNldF91aV9maWxl X2RhdGEgKHN0cnVjdCB1aV9maWxlICpmaWxlLCB2b2lkICpkYXRhLAotIH0KLSAKLSAvKiB1aV9m aWxlIHV0aWxpdHkgZnVuY3Rpb24gZm9yIGNvbnZlcnRpbmcgYSBgYHN0cnVjdCB1aV9maWxlJycg aW50bwotLSAgIGEgbWVtb3J5IGJ1ZmZlcicnLiAqLwotKyAgIGEgbWVtb3J5IGJ1ZmZlci4gKi8K LSAKLSBzdHJ1Y3QgYWNjdW11bGF0ZWRfdWlfZmlsZQotIHsKLUBAIC0yOTcsNiArMjk4LDIzIEBA IHVpX2ZpbGVfeHN0cmR1cCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGxvbmcgKmxlbmd0aCkKLSAg ICAgKmxlbmd0aCA9IGFjYy5sZW5ndGg7Ci0gICByZXR1cm4gYWNjLmJ1ZmZlcjsKLSB9Ci0rCi0r c3RhdGljIHZvaWQKLStkb191aV9maWxlX29ic2F2ZXN0cmluZyAodm9pZCAqY29udGV4dCwgY29u c3QgY2hhciAqYnVmZmVyLCBsb25nIGxlbmd0aCkKLSt7Ci0rICBzdHJ1Y3Qgb2JzdGFjayAqb2Jz dGFjayA9IChzdHJ1Y3Qgb2JzdGFjayAqKSBjb250ZXh0OwotKyAgb2JzdGFja19ncm93IChvYnN0 YWNrLCBidWZmZXIsIGxlbmd0aCk7Ci0rfQotKwotK2NoYXIgKgotK3VpX2ZpbGVfb2JzYXZlc3Ry aW5nIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgc3RydWN0IG9ic3RhY2sgKm9ic3RhY2ssCi0rCQkg ICAgICBsb25nICpsZW5ndGgpCi0rewotKyAgdWlfZmlsZV9wdXQgKGZpbGUsIGRvX3VpX2ZpbGVf b2JzYXZlc3RyaW5nLCBvYnN0YWNrKTsKLSsgICpsZW5ndGggPSBvYnN0YWNrX29iamVjdF9zaXpl IChvYnN0YWNrKTsKLSsgIG9ic3RhY2tfMWdyb3cgKG9ic3RhY2ssICdcMCcpOwotKyAgcmV0dXJu IG9ic3RhY2tfZmluaXNoIChvYnN0YWNrKTsKLSt9Ci0gDAotIC8qIEEgcHVyZSBtZW1vcnkgYmFz ZWQgYGBzdHJ1Y3QgdWlfZmlsZScnIHRoYXQgY2FuIGJlIHVzZWQgYW4gb3V0cHV0Ci0gICAgYnVm ZmVyLiBUaGUgYnVmZmVycyBhY2N1bXVsYXRlZCBjb250ZW50cyBhcmUgYXZhaWxhYmxlIHZpYQot ZGlmZiAtLWdpdCBhL2dkYi91aS1maWxlLmggYi9nZGIvdWktZmlsZS5oCi1pbmRleCBiZjk5MTVj Li4yMzMyMDZjIDEwMDY0NAotLS0tIGEvZ2RiL3VpLWZpbGUuaAotKysrIGIvZ2RiL3VpLWZpbGUu aAotQEAgLTE5LDYgKzE5LDcgQEAKLSAjaWZuZGVmIFVJX0ZJTEVfSAotICNkZWZpbmUgVUlfRklM RV9ICi0gCi0rc3RydWN0IG9ic3RhY2s7Ci0gc3RydWN0IHVpX2ZpbGU7Ci0gCi0gLyogQ3JlYXRl IGEgZ2VuZXJpYyB1aV9maWxlIG9iamVjdCB3aXRoIG51bGwgbWV0aG9kcy4gKi8KLUBAIC03Nyw3 ICs3OCwxMCBAQCBleHRlcm4gdm9pZCB1aV9maWxlX3B1dCAoc3RydWN0IHVpX2ZpbGUgKnNyYywg dWlfZmlsZV9wdXRfbWV0aG9kX2Z0eXBlICp3cml0ZSwgdgotICAgIG1pbnVzIHRoYXQgYXBwZW5k ZWQgTlVMLiAqLwotIGV4dGVybiBjaGFyICp1aV9maWxlX3hzdHJkdXAgKHN0cnVjdCB1aV9maWxl ICpmaWxlLCBsb25nICpsZW5ndGgpOwotIAotLQotKy8qIFNpbWlsYXIgdG8gdWlfZmlsZV94c3Ry ZHVwLCBidXQgcmV0dXJuIGEgbmV3IHN0cmluZyBhbGxvY2F0ZWQgb24KLSsgICBPQlNUQUNLLiAg Ki8KLStleHRlcm4gY2hhciAqdWlfZmlsZV9vYnNhdmVzdHJpbmcgKHN0cnVjdCB1aV9maWxlICpm aWxlLAotKwkJCQkgICBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgbG9uZyAqbGVuZ3RoKTsKLSAK LSBleHRlcm4gbG9uZyB1aV9maWxlX3JlYWQgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBjaGFyICpi dWYsIGxvbmcgbGVuZ3RoX2J1Zik7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3V0aWxzLmMgYi9nZGIv dXRpbHMuYwotaW5kZXggMTZhZDA4NC4uMzAyMWE0MyAxMDA2NDQKLS0tLSBhL2dkYi91dGlscy5j Ci0rKysgYi9nZGIvdXRpbHMuYwotQEAgLTI2MTAsNyArMjYxMCwxMCBAQCBmcHJpbnRmX3N5bWJv bF9maWx0ZXJlZCAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY2hhciAqbmFtZSwKLSAgICBBcyBh biBleHRyYSBoYWNrLCBzdHJpbmcxPT0iRk9PKEFSR1MpIiBtYXRjaGVzIHN0cmluZzI9PSJGT08i LgotICAgIFRoaXMgImZlYXR1cmUiIGlzIHVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgbWF0Y2hp bmcgQysrIGZ1bmN0aW9uIG5hbWVzCi0gICAgKHN1Y2ggYXMgaWYgdGhlIHVzZXIgdHlwZXMgJ2Jy ZWFrIEZPTycsIHdoZXJlIEZPTyBpcyBhIG1hbmdsZWQgQysrCi0tICAgZnVuY3Rpb24pLiAqLwot KyAgIGZ1bmN0aW9uKS4KLSsKLSsgICBBcyBhbiBleHRyYS1zcGVjaWFsIGhhY2ssIHdlIGRvIHRo ZSBzYW1lIHdpdGggJyAnLCBzbyB0aGF0Ci0rICAgIkZPTyhBUkdTKSBjb25zdCIgY2FuIG1hdGNo ICJGT08iLCB0b28uICAqLwotIAotIGludAotIHN0cmNtcF9pdyAoY29uc3QgY2hhciAqc3RyaW5n MSwgY29uc3QgY2hhciAqc3RyaW5nMikKLUBAIC0yNjM1LDcgKzI2MzgsNyBAQCBzdHJjbXBfaXcg KGNvbnN0IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIpCi0gCSAgc3RyaW5nMisr OwotIAl9Ci0gICAgIH0KLS0gIHJldHVybiAoKnN0cmluZzEgIT0gJ1wwJyAmJiAqc3RyaW5nMSAh PSAnKCcpIHx8ICgqc3RyaW5nMiAhPSAnXDAnKTsKLSsgIHJldHVybiAoKnN0cmluZzEgIT0gJyAn ICYmICpzdHJpbmcxICE9ICdcMCcgJiYgKnN0cmluZzEgIT0gJygnKSB8fCAoKnN0cmluZzIgIT0g J1wwJyAmJiAqc3RyaW5nMiAhPSAnKCcpOwotIH0KLSAKLSAvKiBUaGlzIGlzIGxpa2Ugc3RyY21w IGV4Y2VwdCB0aGF0IGl0IGlnbm9yZXMgd2hpdGVzcGFjZSBhbmQgdHJlYXRzCiBkaWZmIC0tZ2l0 IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFsYXJpdGguYwotaW5kZXggYTljODc1ZC4uMTJmNmYw NyAxMDA2NDQKK2luZGV4IDJiNjZmODUuLjljMzZlNTYgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsYXJp dGguYwogKysrIGIvZ2RiL3ZhbGFyaXRoLmMKIEBAIC0xMzksNyArMTM5LDYgQEAgYW4gaW50ZWdl ciBub3IgYSBwb2ludGVyIG9mIHRoZSBzYW1lIHR5cGUuIikpOwpAQCAtMjg3OTcsNyArMTkyODUs NyBAQCBpbmRleCBhOWM4NzVkLi4xMmY2ZjA3IDEwMDY0NAogIH0KICAKIGRpZmYgLS1naXQgYS9n ZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0 CitpbmRleCAxNjY3MzY4Li5lMWE2YmVmIDEwMDY0NAogLS0tIGEvZ2RiL3ZhbG9wcy5jCiArKysg Yi9nZGIvdmFsb3BzLmMKIEBAIC0zOCw2ICszOCw3IEBACkBAIC0yODgwOCw3ICsxOTI5Niw3IEBA IGluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CiAgCiAgI2luY2x1ZGUgPGVycm5vLmg+CiAg I2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0zNjksOCArMzcwLDYgQEAgdmFsdWVfY2FzdCAo c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnMikKK0BAIC0zNzQsOCArMzc1LDYg QEAgdmFsdWVfY2FzdCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB2YWx1ZSAqYXJnMikKICAJ ICBuZXdfbGVuZ3RoID0gdmFsX2xlbmd0aCAvIGVsZW1lbnRfbGVuZ3RoOwogIAkgIGlmICh2YWxf bGVuZ3RoICUgZWxlbWVudF9sZW5ndGggIT0gMCkKICAJICAgIHdhcm5pbmcgKF8oImFycmF5IGVs ZW1lbnQgdHlwZSBzaXplIGRvZXMgbm90IGRpdmlkZSBvYmplY3Qgc2l6ZSBpbiBjYXN0IikpOwpA QCAtMjg4MTcsNyArMTkzMDUsNyBAQCBpbmRleCAwMTJlYTZhLi45YjRkMmE4IDEwMDY0NAogIAkg IHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoKHN0cnVjdCB0eXBlICopIE5VTEwsCiAg CQkJCQkgIFRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJICBsb3dfYm91bmQs Ci1AQCAtNTY1LDYgKzU2NCw2NCBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlLCBlbnVt IGx2YWxfdHlwZSBsdikKK0BAIC01NzAsNiArNTY5LDY0IEBAIHZhbHVlX29uZSAoc3RydWN0IHR5 cGUgKnR5cGUsIGVudW0gbHZhbF90eXBlIGx2KQogICAgcmV0dXJuIHZhbDsKICB9CiAgCkBAIC0y ODg4Miw3ICsxOTM3MCw3IEBAIGluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CiAgLyogSGVs cGVyIGZ1bmN0aW9uIGZvciB2YWx1ZV9hdCwgdmFsdWVfYXRfbGF6eSwgYW5kIHZhbHVlX2F0X2xh enlfc3RhY2suICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotQEAgLTY1NiwxNSArNzEz LDIxIEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQorQEAgLTY2MSwxNSAr NzE4LDIxIEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQogICAgICB9CiAg ICBlbHNlIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxfbWVtb3J5KQogICAgICB7CkBAIC0y ODkxMSw3ICsxOTM5OSw3IEBAIGluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CiAgCX0KICAg ICAgfQogICAgZWxzZSBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX3JlZ2lzdGVyKQotQEAg LTEwNzIsNyArMTEzNSwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsIHN0cnVjdCBibG9jayAqYikKK0BAIC0xMDc3LDcgKzExNDAsMTggQEAgYWRkcmVzc19vZl92 YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgYmxvY2sgKmIpCiAgICBpZiAoKFZB TFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkgJiYgdmFsdWVfbGF6eSAodmFsKSkKICAgICAg ICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9GVU5DKQogICAgICB7CkBAIC0yODkz MSw3ICsxOTQxOSw3IEBAIGluZGV4IDAxMmVhNmEuLjliNGQyYTggMTAwNjQ0CiAgICAgICAgcmV0 dXJuIHZhbHVlX2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIp OwogICAgICB9CiAgCi1AQCAtMTE3OCw2ICsxMjUyLDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0x MTgzLDYgKzEyNTcsNyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3Ry dWN0IHZhbHVlICphcmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJnMSkpOwpAQCAtMjg5MzksNyArMTk0MjcsNyBAQCBpbmRleCAwMTJl YTZhLi45YjRkMmE4IDEwMDY0NAogIAogICAgLyogSWYgdGhlIHVzZXIgdHJpZXMgdG8gZG8gc29t ZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAgYXJyYXkgdGhhdCBoYXMg bm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRoaXMgd291bGQKLUBAIC0x MTg3LDggKzEyNjIsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEp CitAQCAtMTE5Miw4ICsxMjY3LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVl ICphcmcxKQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxfbWVtb3J5KQogICAgICBl cnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUgbm90IGxvY2F0ZWQgaW4g bWVtb3J5LiIpKTsKICAKQEAgLTI4OTUzLDIyOCArMTk0NDEsNyBAQCBpbmRleCAwMTJlYTZhLi45 YjRkMmE4IDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rp b24sIHJldHVybiBhIHZhbHVlIHdoaWNoIGlzIGEgcG9pbnRlcgotQEAgLTIwNzEsMTIgKzIxNTAs MjUgQEAgZmluZF9vdmVybG9hZF9tYXRjaCAoc3RydWN0IHR5cGUgKiphcmdfdHlwZXMsIGludCBu YXJncywKLSAgIGlmIChtZXRob2QpCi0gICAgIHsKLSAgICAgICBnZGJfYXNzZXJ0IChvYmopOwot KwotKyAgICAgIC8qIE9CSiBtYXkgYmUgYSBwb2ludGVyIHZhbHVlIHJhdGhlciB0aGFuIHRoZSBv YmplY3QgaXRzZWxmLiAgKi8KLSsgICAgICBvYmogPSBjb2VyY2VfcmVmIChvYmopOwotKyAgICAg IHdoaWxlIChUWVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKG9iaikpKSA9PSBU WVBFX0NPREVfUFRSKQotKwlvYmogPSBjb2VyY2VfcmVmICh2YWx1ZV9pbmQgKG9iaikpOwotICAg ICAgIG9ial90eXBlX25hbWUgPSBUWVBFX05BTUUgKHZhbHVlX3R5cGUgKG9iaikpOwotLSAgICAg IC8qIEhhY2s6IGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCBvZnRlbiBwYXNzZXMgaW4gYSBwb2lu dGVyCi0tICAgICAgICAgdmFsdWUgcmF0aGVyIHRoYW4gdGhlIG9iamVjdCBpdHNlbGYsIHNvIHRy eSBhZ2Fpbi4gICovCi0tICAgICAgaWYgKCghb2JqX3R5cGVfbmFtZSB8fCAhKm9ial90eXBlX25h bWUpIAotLQkgICYmIChUWVBFX0NPREUgKHZhbHVlX3R5cGUgKG9iaikpID09IFRZUEVfQ09ERV9Q VFIpKQotLQlvYmpfdHlwZV9uYW1lID0gVFlQRV9OQU1FIChUWVBFX1RBUkdFVF9UWVBFICh2YWx1 ZV90eXBlIChvYmopKSk7Ci0rCi0rICAgICAgLyogRmlyc3QgY2hlY2sgd2hldGhlciB0aGlzIGlz IGEgZGF0YSBtZW1iZXIsIGUuZy4gYSBwb2ludGVyIHRvCi0rCSBhIGZ1bmN0aW9uLiAgKi8KLSsg ICAgICBpZiAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChvYmopKSkgPT0g VFlQRV9DT0RFX1NUUlVDVCkKLSsJewotKwkgICp2YWxwID0gc2VhcmNoX3N0cnVjdF9maWVsZCAo bmFtZSwgb2JqLCAwLAotKwkJCQkgICAgICAgY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAob2Jq KSksIDApOwotKwkgIGlmICgqdmFscCkKLSsJICAgIHsKLSsJICAgICAgKnN0YXRpY3AgPSAxOwot KwkgICAgICByZXR1cm4gMDsKLSsJICAgIH0KLSsJfQotIAotICAgICAgIGZuc19wdHIgPSB2YWx1 ZV9maW5kX29sb2FkX21ldGhvZF9saXN0ICgmdGVtcCwgbmFtZSwgCi0gCQkJCQkgICAgICAwLCAm bnVtX2ZucywgCi1AQCAtMjA5NiwxNiArMjE4OCwyOSBAQCBmaW5kX292ZXJsb2FkX21hdGNoIChz dHJ1Y3QgdHlwZSAqKmFyZ190eXBlcywgaW50IG5hcmdzLAotICAgICB9Ci0gICBlbHNlCi0gICAg IHsKLS0gICAgICBjb25zdCBjaGFyICpxdWFsaWZpZWRfbmFtZSA9IFNZTUJPTF9DUExVU19ERU1B TkdMRURfTkFNRSAoZnN5bSk7Ci0rICAgICAgY29uc3QgY2hhciAqcXVhbGlmaWVkX25hbWUgPSBT WU1CT0xfTkFUVVJBTF9OQU1FIChmc3ltKTsKLSsKLSsgICAgICAvKiBJZiB3ZSBoYXZlIGEgZnVu Y3Rpb24gd2l0aCBhIEMrKyBuYW1lLCB0cnkgdG8gZXh0cmFjdCBqdXN0Ci0rCSB0aGUgZnVuY3Rp b24gcGFydC4gIERvIG5vdCB0cnkgdGhpcyBmb3Igbm9uLWZ1bmN0aW9ucyAoZS5nLgotKwkgZnVu Y3Rpb24gcG9pbnRlcnMpLiAgKi8KLSsgICAgICBpZiAocXVhbGlmaWVkX25hbWUKLSsJICAmJiBU WVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFIChmc3ltKSkpID09IFRZUEVfQ09E RV9GVU5DKQotKwl7Ci0rCSAgZnVuY19uYW1lID0gY3BfZnVuY19uYW1lIChxdWFsaWZpZWRfbmFt ZSk7Ci0gCi0tICAgICAgLyogSWYgd2UgaGF2ZSBhIEMrKyBuYW1lLCB0cnkgdG8gZXh0cmFjdCBq dXN0IHRoZSBmdW5jdGlvbgotLQkgcGFydC4gICovCi0tICAgICAgaWYgKHF1YWxpZmllZF9uYW1l KQotLQlmdW5jX25hbWUgPSBjcF9mdW5jX25hbWUgKHF1YWxpZmllZF9uYW1lKTsKLSsJICAvKiBJ ZiBjcF9mdW5jX25hbWUgZGlkIG5vdCByZW1vdmUgYW55dGhpbmcsIHRoZSBuYW1lIG9mIHRoZQot KwkgICAgIHN5bWJvbCBkaWQgbm90IGluY2x1ZGUgc2NvcGUgb3IgYXJndW1lbnQgdHlwZXMgLSBp dCB3YXMKLSsJICAgICBwcm9iYWJseSBhIEMtc3R5bGUgZnVuY3Rpb24uICAqLwotKwkgIGlmIChm dW5jX25hbWUgJiYgc3RyY21wIChmdW5jX25hbWUsIHF1YWxpZmllZF9uYW1lKSA9PSAwKQotKwkg ICAgewotKwkgICAgICB4ZnJlZSAoZnVuY19uYW1lKTsKLSsJICAgICAgZnVuY19uYW1lID0gTlVM TDsKLSsJICAgIH0KLSsJfQotIAotLSAgICAgIC8qIElmIHRoZXJlIHdhcyBubyBDKysgbmFtZSwg dGhpcyBtdXN0IGJlIGEgQy1zdHlsZSBmdW5jdGlvbi4KLS0JIEp1c3QgcmV0dXJuIHRoZSBzYW1l IHN5bWJvbC4gIERvIHRoZSBzYW1lIGlmIGNwX2Z1bmNfbmFtZQotLQkgZmFpbHMgZm9yIHNvbWUg cmVhc29uLiAgKi8KLSsgICAgICAvKiBJZiB0aGVyZSB3YXMgbm8gQysrIG5hbWUsIHRoaXMgbXVz dCBiZSBhIEMtc3R5bGUgZnVuY3Rpb24gb3IKLSsJIG5vdCBhIGZ1bmN0aW9uIGF0IGFsbC4gIEp1 c3QgcmV0dXJuIHRoZSBzYW1lIHN5bWJvbC4gIERvIHRoZQotKwkgc2FtZSBpZiBjcF9mdW5jX25h bWUgZmFpbHMgZm9yIHNvbWUgcmVhc29uLiAgKi8KLSAgICAgICBpZiAoZnVuY19uYW1lID09IE5V TEwpCi0gICAgICAgICB7Ci0gCSAgKnN5bXAgPSBmc3ltOwotQEAgLTI1MzYsOCArMjY0MSw4IEBA IGNoZWNrX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkKLSAgICB0 aGUgY29tbWVudCBiZWZvcmUgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNlLiAgKi8KLSAK LSBzdHJ1Y3QgdmFsdWUgKgotLXZhbHVlX2FnZ3JlZ2F0ZV9lbHQgKHN0cnVjdCB0eXBlICpjdXJ0 eXBlLAotLQkJICAgICBjaGFyICpuYW1lLCBpbnQgd2FudF9hZGRyZXNzLAotK3ZhbHVlX2FnZ3Jl Z2F0ZV9lbHQgKHN0cnVjdCB0eXBlICpjdXJ0eXBlLCBjaGFyICpuYW1lLAotKwkJICAgICBzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsIGludCB3YW50X2FkZHJlc3MsCi0gCQkgICAgIGVudW0gbm9z aWRlIG5vc2lkZSkKLSB7Ci0gICBzd2l0Y2ggKFRZUEVfQ09ERSAoY3VydHlwZSkpCi1AQCAtMjU0 NSw3ICsyNjUwLDcgQEAgdmFsdWVfYWdncmVnYXRlX2VsdCAoc3RydWN0IHR5cGUgKmN1cnR5cGUs Ci0gICAgIGNhc2UgVFlQRV9DT0RFX1NUUlVDVDoKLSAgICAgY2FzZSBUWVBFX0NPREVfVU5JT046 Ci0gICAgICAgcmV0dXJuIHZhbHVlX3N0cnVjdF9lbHRfZm9yX3JlZmVyZW5jZSAoY3VydHlwZSwg MCwgY3VydHlwZSwgCi0tCQkJCQkgICAgIG5hbWUsIE5VTEwsCi0rCQkJCQkgICAgIG5hbWUsIGV4 cGVjdF90eXBlLAotIAkJCQkJICAgICB3YW50X2FkZHJlc3MsIG5vc2lkZSk7Ci0gICAgIGNhc2Ug VFlQRV9DT0RFX05BTUVTUEFDRToKLSAgICAgICByZXR1cm4gdmFsdWVfbmFtZXNwYWNlX2VsdCAo Y3VydHlwZSwgbmFtZSwgCi1AQCAtMjU1Niw2ICsyNjYxLDU2IEBAIHZhbHVlX2FnZ3JlZ2F0ZV9l bHQgKHN0cnVjdCB0eXBlICpjdXJ0eXBlLAotICAgICB9Ci0gfQotIAotKy8qIENvbXBhcmVzIHRo ZSB0d28gbWV0aG9kL2Z1bmN0aW9uIHR5cGVzIFQxIGFuZCBUMiBmb3IgImVxdWFsaXR5IiAKLSsg ICB3aXRoIHJlc3BlY3QgdG8gdGhlIHRoZSBtZXRob2RzJyBwYXJhbWV0ZXJzLiBJZiB0aGUgdHlw ZXMgb2YgdGhlCi0rICAgdHdvIHBhcmFtZXRlciBsaXN0cyBhcmUgdGhlIHNhbWUsIHJldHVybnMg MTsgMCBvdGhlcndpc2UuIFRoaXMKLSsgICBjb21wYXJpc29uIG1heSBpZ25vcmUgYW55IGFydGlm aWNpYWwgcGFyYW1ldGVycyBpbiBUMSBpZgotKyAgIFNLSVBfQVJUSUZJQ0lBTCBpcyBub24temVy by4gVGhpcyBmdW5jdGlvbiB3aWxsIEFMV0FZUyBza2lwCi0rICAgdGhlIGZpcnN0IGFydGlmaWNp YWwgcGFyYW1ldGVyIGluIFQxLCBhc3N1bWVkIHRvIGJlIGEgJ3RoaXMnIHBvaW50ZXIuCi0rCi0r ICAgVGhlIHR5cGUgVDIgaXMgZXhwZWN0ZWQgdG8gaGF2ZSBjb21lIGZyb20gbWFrZV9wYXJhbXMg KGluIGV2YWwuYykuICovCi0rc3RhdGljIGludAotK2NvbXBhcmVfcGFyYW1ldGVycyAoc3RydWN0 IHR5cGUgKnQxLCBzdHJ1Y3QgdHlwZSAqdDIsIGludCBza2lwX2FydGlmaWNpYWwpCi0rewotKyAg aW50IHN0YXJ0ID0gMDsKLSsKLSsgIGlmIChUWVBFX0ZJRUxEX0FSVElGSUNJQUwgKHQxLCAwKSkK LSsgICAgKytzdGFydDsKLSsKLSsgIC8qIElmIHNraXBwaW5nIGFydGlmaWNpYWwgZmllbGRzLCBm aW5kIHRoZSBmaXJzdCByZWFsIGZpZWxkCi0rICAgICBpbiBUMS4gKi8KLSsgIGlmIChza2lwX2Fy dGlmaWNpYWwpCi0rICAgIHsKLSsgICAgICB3aGlsZSAoc3RhcnQgPCBUWVBFX05GSUVMRFMgKHQx KQotKwkgICAgICYmIFRZUEVfRklFTERfQVJUSUZJQ0lBTCAodDEsIHN0YXJ0KSkKLSsJKytzdGFy dDsKLSsgICAgfQotKwotKyAgLyogTm93IGNvbXBhcmUgcGFyYW1ldGVycyAqLwotKwotKyAgLyog U3BlY2lhbCBjYXNlOiBhIG1ldGhvZCB0YWtpbmcgdm9pZC4gVDEgd2lsbCBjb250YWluIG5vCi0r ICAgICBub24tYXJ0aWZpY2lhbCBmaWVsZHMsIGFuZCBUMiB3aWxsIGNvbnRhaW4gVFlQRV9DT0RF X1ZPSUQuICovCi0rICBpZiAoKFRZUEVfTkZJRUxEUyAodDEpIC0gc3RhcnQpID09IDAgJiYgVFlQ RV9ORklFTERTICh0MikgPT0gMQotKyAgICAgICYmIFRZUEVfQ09ERSAoVFlQRV9GSUVMRF9UWVBF ICh0MiwgMCkpID09IFRZUEVfQ09ERV9WT0lEKQotKyAgICByZXR1cm4gMTsKLSsKLSsgIGlmICgo VFlQRV9ORklFTERTICh0MSkgLSBzdGFydCkgPT0gVFlQRV9ORklFTERTICh0MikpCi0rICAgIHsK LSsgICAgICBpbnQgaTsKLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0Mik7 ICsraSkKLSsJewotKwkgIGlmIChyYW5rX29uZV90eXBlIChUWVBFX0ZJRUxEX1RZUEUgKHQxLCBz dGFydCArIGkpLAotKwkJCSAgICAgIFRZUEVfRklFTERfVFlQRSAodDIsIGkpKQotKwkgICAgICAh PSAwKQotKwkgICAgcmV0dXJuIDA7Ci0rCX0KLSsKLSsgICAgICByZXR1cm4gMTsKLSsgICAgfQot KwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIC8qIEMrKzogR2l2ZW4gYW4gYWdncmVnYXRlIHR5cGUg Q1VSVFlQRSwgYW5kIGEgbWVtYmVyIG5hbWUgTkFNRSwKLSAgICByZXR1cm4gdGhlIGFkZHJlc3Mg b2YgdGhpcyBtZW1iZXIgYXMgYSAicG9pbnRlciB0byBtZW1iZXIiIHR5cGUuCi0gICAgSWYgSU5U WVBFIGlzIG5vbi1udWxsLCB0aGVuIGl0IHdpbGwgYmUgdGhlIHR5cGUgb2YgdGhlIG1lbWJlciB3 ZQotQEAgLTI2MzMsMjMgKzI3ODgsNDYgQEAgdmFsdWVfc3RydWN0X2VsdF9mb3JfcmVmZXJlbmNl IChzdHJ1Y3QgdHlwZSAqZG9tYWluLCBpbnQgb2Zmc2V0LAotIAl9Ci0gICAgICAgaWYgKHRfZmll bGRfbmFtZSAmJiBzdHJjbXAgKHRfZmllbGRfbmFtZSwgbmFtZSkgPT0gMCkKLSAJewotLQkgIGlu dCBqID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0LCBpKTsKLSsJICBpbnQgajsKLSsJICBp bnQgbGVuID0gVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0LCBpKTsKLSAJICBzdHJ1Y3QgZm5f ZmllbGQgKmYgPSBUWVBFX0ZOX0ZJRUxETElTVDEgKHQsIGkpOwotIAotIAkgIGNoZWNrX3N0dWJf bWV0aG9kX2dyb3VwICh0LCBpKTsKLSAKLS0JICBpZiAoaW50eXBlID09IDAgJiYgaiA+IDEpCi0t CSAgICBlcnJvciAoXygibm9uLXVuaXF1ZSBtZW1iZXIgYCVzJyByZXF1aXJlcyB0eXBlIGluc3Rh bnRpYXRpb24iKSwgbmFtZSk7Ci0gCSAgaWYgKGludHlwZSkKLSAJICAgIHsKLS0JICAgICAgd2hp bGUgKGotLSkKLS0JCWlmIChUWVBFX0ZOX0ZJRUxEX1RZUEUgKGYsIGopID09IGludHlwZSkKLS0J CSAgYnJlYWs7Ci0tCSAgICAgIGlmIChqIDwgMCkKLS0JCWVycm9yIChfKCJubyBtZW1iZXIgZnVu Y3Rpb24gbWF0Y2hlcyB0aGF0IHR5cGUgaW5zdGFudGlhdGlvbiIpKTsKLS0JICAgIH0KLSsJICAg ICAgZm9yIChqID0gMDsgaiA8IGxlbjsgKytqKQotKwkJewotKwkJICBpZiAoY29tcGFyZV9wYXJh bWV0ZXJzIChUWVBFX0ZOX0ZJRUxEX1RZUEUgKGYsIGopLCBpbnR5cGUsIDApCi0rCQkgICAgICB8 fCBjb21wYXJlX3BhcmFtZXRlcnMgKFRZUEVfRk5fRklFTERfVFlQRSAoZiwgaiksIGludHlwZSwg MSkpCi0rCQkgICAgYnJlYWs7Ci0rCQl9Ci0rCi0rCSAgICAgIGlmIChqID09IGxlbikKLSsJCWVy cm9yIChfKCJubyBtZW1iZXIgZnVuY3Rpb24gbWF0Y2hlcyB0aGF0IHR5cGUgaW5zdGFudGlhdGlv biIpKTsJICAgIH0KLSAJICBlbHNlCi0tCSAgICBqID0gMDsKLSsJICAgIHsKLSsJICAgICAgaW50 IGlpOwotKwkgICAgICAvKiBTa2lwIGFydGlmaWNpYWwgbWV0aG9kcy4gVGhpcyBpcyBuZWNlc3Nh cnkgaWYsIGZvciBleGFtcGxlLAotKwkJIHRoZSB1c2VyIHdhbnRzIHRvICJwcmludCBzdWJjbGFz czo6c3ViY2xhc3MiIHdpdGggb25seQotKwkJIG9uZSBkZWZpbmVkIHVzZXIgY29uc3RydWN0b3Iu IFRoZXJlIGlzIG5vIGFtYmlndWl0eSBpbiB0aGlzCi0rCQkgY2FzZS4gKi8KLSsJICAgICAgZm9y IChpaSA9IDA7IGlpIDwgVFlQRV9GTl9GSUVMRExJU1RfTEVOR1RIICh0LCBpKTsKLSsJCSAgICsr aWkpCi0rCQl7Ci0rCQkgIGlmIChUWVBFX0ZOX0ZJRUxEX0FSVElGSUNJQUwgKGYsIGlpKSkKLSsJ CSAgICAtLWxlbjsKLSsJCX0KLSsKLSsJICAgICAgLyogRGVzaXJlZCBtZXRob2QgaXMgYW1iaWd1 b3VzIGlmIG1vcmUgdGhhbiBvbmUgbWV0aG9kIGlzCi0rCQkgZGVmaW5lZC4gKi8KLSsJICAgICAg aWYgKGxlbiA+IDEpCi0rCQllcnJvciAoXygibm9uLXVuaXF1ZSBtZW1iZXIgYCVzJyByZXF1aXJl cyB0eXBlIGluc3RhbnRpYXRpb24iKSwgbmFtZSk7Ci0rCi0rCSAgICAgIC8qIFRoaXMgYXNzdW1l cywgb2YgY291cnNlLCB0aGF0IGFsbCBhcnRpZmljaWFsIG1ldGhvZHMgYXBwZWFyCi0rCQkgQkVG T1JFIGFueSBjb25jcmV0ZSBtZXRob2RzLiAqLwotKwkgICAgICBqID0gVFlQRV9GTl9GSUVMRExJ U1RfTEVOR1RIICh0LCBpKSAtIDE7Ci0rCSAgICB9Ci0gCi0gCSAgaWYgKFRZUEVfRk5fRklFTERf U1RBVElDX1AgKGYsIGopKQotIAkgICAgewotQEAgLTI3NjMsNyArMjk0MSw3IEBAIHZhbHVlX21h eWJlX25hbWVzcGFjZV9lbHQgKGNvbnN0IHN0cnVjdCB0eXBlICpjdXJ0eXBlLAotICAgc3RydWN0 IHN5bWJvbCAqc3ltOwotICAgc3RydWN0IHZhbHVlICpyZXN1bHQ7Ci0gCi0tICBzeW0gPSBjcF9s b29rdXBfc3ltYm9sX25hbWVzcGFjZSAobmFtZXNwYWNlX25hbWUsIG5hbWUsIE5VTEwsCi0rICBz eW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZShuYW1lc3BhY2VfbmFtZSwgbmFtZSwKLSAJ CQkJICAgIGdldF9zZWxlY3RlZF9ibG9jayAoMCksIAotIAkJCQkgICAgVkFSX0RPTUFJTik7Ci0g Ci1AQCAtMjkwNyw3ICszMDg1LDcgQEAgdmFsdWVfb2ZfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUs IGludCBjb21wbGFpbikKLSAKLSAgIC8qIENhbGxpbmcgbG9va3VwX2Jsb2NrX3N5bWJvbCBpcyBu ZWNlc3NhcnkgdG8gZ2V0IHRoZSBMT0NfUkVHSVNURVIKLSAgICAgIHN5bWJvbCBpbnN0ZWFkIG9m IHRoZSBMT0NfQVJHIG9uZSAoaWYgYm90aCBleGlzdCkuICAqLwotLSAgc3ltID0gbG9va3VwX2Js b2NrX3N5bWJvbCAoYiwgbmFtZSwgTlVMTCwgVkFSX0RPTUFJTik7Ci0rICBzeW0gPSBsb29rdXBf YmxvY2tfc3ltYm9sIChiLCBuYW1lLCBWQVJfRE9NQUlOKTsKLSAgIGlmIChzeW0gPT0gTlVMTCkK LSAgICAgewotICAgICAgIGlmIChjb21wbGFpbikKLUBAIC0yOTYxLDggKzMxMzksNiBAQCB2YWx1 ZV9zbGljZSAoc3RydWN0IHZhbHVlICphcnJheSwgaW50IGxvd2JvdW5kLCBpbnQgbGVuZ3RoKQor QEAgLTMwNDIsOCArMzEyMSw2IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBp bnQgbG93Ym91bmQsIGludCBsZW5ndGgpCiAgICAgICAgfHwgbG93Ym91bmQgKyBsZW5ndGggLSAx ID4gdXBwZXJib3VuZCkKICAgICAgZXJyb3IgKF8oInNsaWNlIG91dCBvZiByYW5nZSIpKTsKICAK QEAgLTI5MTg0LDcgKzE5NDUxLDcgQEAgaW5kZXggMDEyZWE2YS4uOWI0ZDJhOCAxMDA2NDQKICAJ CQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAogIAkJCQkJbG93Ym91bmQsIAogZGlm ZiAtLWdpdCBhL2dkYi92YWxwcmludC5jIGIvZ2RiL3ZhbHByaW50LmMKLWluZGV4IGNiYjVkOTQu LmY5NjM0ZWEgMTAwNjQ0CitpbmRleCAzZjIxYWU0Li45YjE1YjFhIDEwMDY0NAogLS0tIGEvZ2Ri L3ZhbHByaW50LmMKICsrKyBiL2dkYi92YWxwcmludC5jCiBAQCAtMjM2LDcgKzIzNiw2IEBAIHNj YWxhcl90eXBlX3AgKHN0cnVjdCB0eXBlICp0eXBlKQpAQCAtMjkxOTUsNyArMTk0NjIsNyBAQCBp bmRleCBjYmI1ZDk0Li5mOTYzNGVhIDEwMDY0NAogICAgICBjYXNlIFRZUEVfQ09ERV9CSVRTVFJJ Tkc6CiAgICAgICAgcmV0dXJuIDA7CiAgICAgIGRlZmF1bHQ6Ci1AQCAtMTE1Myw2ICsxMTUyLDcg QEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCitAQCAtMTE1NCw2ICsxMTUzLDcgQEAgdmFsX3ByaW50X2FycmF5X2Vs ZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCiAg ICBmb3IgKDsgaSA8IGxlbiAmJiB0aGluZ3NfcHJpbnRlZCA8IG9wdGlvbnMtPnByaW50X21heDsg aSsrKQogICAgICB7CkBAIC0yOTIwMyw3ICsxOTQ3MCw3IEBAIGluZGV4IGNiYjVkOTQuLmY5NjM0 ZWEgMTAwNjQ0CiAgICAgICAgaWYgKGkgIT0gMCkKICAJewogIAkgIGlmIChvcHRpb25zLT5wcmV0 dHlwcmludF9hcnJheXMpCi1AQCAtMTE3Miw3ICsxMTcyLDcgQEAgdmFsX3ByaW50X2FycmF5X2Vs ZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCitAQCAt MTE3Myw3ICsxMTczLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAq dHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgICAgICAgcmVwMSA9IGkgKyAxOwogICAg ICAgIHJlcHMgPSAxOwogICAgICAgIHdoaWxlICgocmVwMSA8IGxlbikgJiYKQEAgLTI5MjEzLDcg KzE5NDgwLDcgQEAgaW5kZXggY2JiNWQ5NC4uZjk2MzRlYSAxMDA2NDQKICAJICArK3JlcHM7CiAg CSAgKytyZXAxOwogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKLWluZGV4 IDU4OWUwM2IuLjYyMDAzZmEgMTAwNjQ0CitpbmRleCBhNDYyZWU0Li45NjhjZGY0IDEwMDY0NAog LS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCiBAQCAtMzcsOCArMzcsMTAgQEAK QEAgLTI5MjQyLDQ2ICsxOTUwOSwyOSBAQCBpbmRleCA1ODllMDNiLi42MjAwM2ZhIDEwMDY0NAog ICAgLyogUmVnaXN0ZXIgbnVtYmVyIGlmIHRoZSB2YWx1ZSBpcyBmcm9tIGEgcmVnaXN0ZXIuICAq LwogICAgc2hvcnQgcmVnbnVtOwogIAotQEAgLTI2MSw3ICsyNzEsOSBAQCBhbGxvY2F0ZV92YWx1 ZV9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIHZhbC0+bmV4dCA9IGFsbF92YWx1ZXM7Ci0g ICBhbGxfdmFsdWVzID0gdmFsOwotICAgdmFsLT50eXBlID0gdHlwZTsKLSsgIHR5cGVfaW5jcmVm ICh0eXBlKTsKLSAgIHZhbC0+ZW5jbG9zaW5nX3R5cGUgPSB0eXBlOwotKyAgdHlwZV9pbmNyZWYg KHR5cGUpOwotICAgVkFMVUVfTFZBTCAodmFsKSA9IG5vdF9sdmFsOwotICAgdmFsLT5sb2NhdGlv bi5hZGRyZXNzID0gMDsKLSAgIFZBTFVFX0ZSQU1FX0lEICh2YWwpID0gbnVsbF9mcmFtZV9pZDsK LUBAIC0zNDYsNiArMzU4LDggQEAgdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlICp2YWx1ZSkKLSB2 b2lkCi0gZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3Ry dWN0IHR5cGUgKnR5cGUpCi0gewotKyAgdHlwZV9pbmNyZWYgKHR5cGUpOwotKyAgdHlwZV9kZWNy ZWYgKHZhbHVlLT50eXBlKTsKLSAgIHZhbHVlLT50eXBlID0gdHlwZTsKLSB9Ci0gCi1AQCAtNjI0 LDYgKzYzOCw5IEBAIHZhbHVlX2ZyZWUgKHN0cnVjdCB2YWx1ZSAqdmFsKQorQEAgLTYzMSw2ICs2 NDEsMTMgQEAgdmFsdWVfZnJlZSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAgICAgaWYgKHZhbC0+ cGFyZW50ICE9IE5VTEwpCiAgCXZhbHVlX2ZyZWUgKHZhbC0+cGFyZW50KTsKICAKKysjaWYgMAor KyAgICAgIC8qIFdlIG5lZWQgdHlwZSBHQyBpbnN0ZWFkLiAgVGhpcyBjYW4gZmFpbCB3aGVuIGFu IG9iamZpbGUgaXMKKysJIHJlY2xhaW1lZCBhbmQgdGhlbiBhIHZhbHVlIGlzIGxhdGVyIGZyZWVk LiAgKi8KICsgICAgICB0eXBlX2RlY3JlZiAodmFsLT50eXBlKTsKICsgICAgICB0eXBlX2RlY3Jl ZiAodmFsLT5lbmNsb3NpbmdfdHlwZSk7CisrI2VuZGlmCiArCiAgICAgICAgaWYgKFZBTFVFX0xW QUwgKHZhbCkgPT0gbHZhbF9jb21wdXRlZCkKICAJewogIAkgIHN0cnVjdCBsdmFsX2Z1bmNzICpm dW5jcyA9IHZhbC0+bG9jYXRpb24uY29tcHV0ZWQuZnVuY3M7Ci1AQCAtNzI4LDYgKzc0NSw5IEBA IHZhbHVlX2NvcHkgKHN0cnVjdCB2YWx1ZSAqYXJnKQorQEAgLTczNSw2ICs3NTIsNyBAQCB2YWx1 ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKICAgICAgdmFsID0gYWxsb2NhdGVfdmFsdWVfbGF6 eSAoZW5jbF90eXBlKTsKICAgIGVsc2UKICAgICAgdmFsID0gYWxsb2NhdGVfdmFsdWUgKGVuY2xf dHlwZSk7CiArCi0rICB0eXBlX2luY3JlZiAoYXJnLT50eXBlKTsKLSsgIHR5cGVfZGVjcmVmICh2 YWwtPnR5cGUpOwogICAgdmFsLT50eXBlID0gYXJnLT50eXBlOwogICAgVkFMVUVfTFZBTCAodmFs KSA9IFZBTFVFX0xWQUwgKGFyZyk7CiAgICB2YWwtPmxvY2F0aW9uID0gYXJnLT5sb2NhdGlvbjsK LUBAIC03NjMsMTIgKzc4MywxNSBAQCB2YWx1ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKK0BA IC03NzAsMTIgKzc4OCwxNSBAQCB2YWx1ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKICB2b2lk CiAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQs IHN0cnVjdCB2YWx1ZSAqd2hvbGUpCiAgewpAQCAtMjkyOTcsNyArMTk1NDcsNyBAQCBpbmRleCA1 ODllMDNiLi42MjAwM2ZhIDEwMDY0NAogICAgaWYgKFZBTFVFX0xWQUwgKHdob2xlKSA9PSBsdmFs X2NvbXB1dGVkKQogICAgICB7CiAgICAgICAgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hv bGUtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNzOwotQEAgLTc3Niw2ICs3OTksMTIgQEAgc2V0X3Zh bHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsIHN0cnVjdCB2 YWx1ZSAqd2hvbGUpCitAQCAtNzgzLDYgKzgwNCwxMiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xv Y2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVudCwgc3RydWN0IHZhbHVlICp3aG9sZSkKICAg ICAgICBpZiAoZnVuY3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+bG9jYXRp b24uY29tcHV0ZWQuY2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsKICAgICAg fQpAQCAtMjkzMTAsNyArMTk1NjAsNyBAQCBpbmRleCA1ODllMDNiLi42MjAwM2ZhIDEwMDY0NAog IH0KICAKICAMCi1AQCAtOTA2LDYgKzkzNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4 cCwgaW50IGZyb21fdHR5KQorQEAgLTkxMyw2ICs5NDAsMjkgQEAgc2hvd192YWx1ZXMgKGNoYXIg Km51bV9leHAsIGludCBmcm9tX3R0eSkKICAgICAgICBudW1fZXhwWzFdID0gJ1wwJzsKICAgICAg fQogIH0KQEAgLTI5MzQwLDcgKzE5NTkwLDcgQEAgaW5kZXggNTg5ZTAzYi4uNjIwMDNmYSAxMDA2 NDQKICAMCiAgLyogSW50ZXJuYWwgdmFyaWFibGVzLiAgVGhlc2UgYXJlIHZhcmlhYmxlcyB3aXRo aW4gdGhlIGRlYnVnZ2VyCiAgICAgdGhhdCBob2xkIHZhbHVlcyBhc3NpZ25lZCBieSBkZWJ1Z2dl ciBjb21tYW5kcy4KLUBAIC0xMzgxLDYgKzE0MzMsNDAgQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlv biAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtMTM4OCw2ICsxNDM4LDQwIEBAIGNhbGxf aW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgcmV0dXJuICgq aWZuLT5oYW5kbGVyKSAoZ2RiYXJjaCwgbGFuZ3VhZ2UsIGlmbi0+Y29va2llLCBhcmdjLCBhcmd2 KTsKICB9CiAgCkBAIC0yOTM4MSw3ICsxOTYzMSw3IEBAIGluZGV4IDU4OWUwM2IuLjYyMDAzZmEg MTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29tbWFuZC4gIFRoaXMgZG9lcyBub3RoaW5nIC0t IGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVyIHRvIGxldCAiaGVscCBmdW5jdGlvbiBOQU1F IiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMKICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2Yg dGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRlZCB3aGVuCi1AQCAtMTQyOCwxMSArMTUxNCwx MCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorQEAgLTE0MzUsMTEgKzE1MTksMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVl IChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAJCSAgICBo dGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09CSkZJTEUgKHZhbHVlLT50eXBl KSA9PSBvYmpmaWxlKQpAQCAtMjkzOTUsNyArMTk2NDUsNyBAQCBpbmRleCA1ODllMDNiLi42MjAw M2ZhIDEwMDY0NAogIAkJCQkJCSBjb3BpZWRfdHlwZXMpOwogIH0KICAKLUBAIC0xNDQ3LDEzICsx NTMyLDEzIEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2 YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTE0NTQsMTMgKzE1MzcsMTMgQEAgcHJl c2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfSU5URUdFUjoKICAgICAgICBp ZiAodmFyLT51LmludGVnZXIudHlwZSAmJiBUWVBFX09CSkZJTEUgKHZhci0+dS5pbnRlZ2VyLnR5 cGUpID09IG9iamZpbGUpCiAgCXZhci0+dS5pbnRlZ2VyLnR5cGUKQEAgLTI5NDExLDI1ICsxOTY2 MSw3IEBAIGluZGV4IDU4OWUwM2IuLjYyMDAzZmEgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAg ICAgIGNhc2UgSU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAtMTg1NSw2ICsxOTQwLDggQEAgdmFsdWVf Y2hhbmdlX2VuY2xvc2luZ190eXBlIChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHR5cGUgKm5l d19lbmNsX3R5cGUpCi0gICAgIHZhbC0+Y29udGVudHMgPQotICAgICAgIChnZGJfYnl0ZSAqKSB4 cmVhbGxvYyAodmFsLT5jb250ZW50cywgVFlQRV9MRU5HVEggKG5ld19lbmNsX3R5cGUpKTsKLSAK LSsgIHR5cGVfaW5jcmVmIChuZXdfZW5jbF90eXBlKTsKLSsgIHR5cGVfZGVjcmVmICh2YWwtPmVu Y2xvc2luZ190eXBlKTsKLSAgIHZhbC0+ZW5jbG9zaW5nX3R5cGUgPSBuZXdfZW5jbF90eXBlOwot ICAgcmV0dXJuIHZhbDsKLSB9Ci1AQCAtMTkxOSw2ICsyMDA2LDggQEAgdmFsdWVfcHJpbWl0aXZl X2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBvZmZzZXQsCi0gCSAgbWVtY3B5ICh2YWx1 ZV9jb250ZW50c19hbGxfcmF3ICh2KSwgdmFsdWVfY29udGVudHNfYWxsX3JhdyAoYXJnMSksCi0g CQkgIFRZUEVfTEVOR1RIICh2YWx1ZV9lbmNsb3NpbmdfdHlwZSAoYXJnMSkpKTsKLSAJfQotKyAg ICAgIHR5cGVfaW5jcmVmICh0eXBlKTsKLSsgICAgICB0eXBlX2RlY3JlZiAodi0+dHlwZSk7Ci0g ICAgICAgdi0+dHlwZSA9IHR5cGU7Ci0gICAgICAgdi0+b2Zmc2V0ID0gdmFsdWVfb2Zmc2V0IChh cmcxKTsKLSAgICAgICB2LT5lbWJlZGRlZF9vZmZzZXQgPSAob2Zmc2V0ICsgdmFsdWVfZW1iZWRk ZWRfb2Zmc2V0IChhcmcxKQotQEAgLTIxNzcsNiArMjI2Niw0MiBAQCBwYWNrX2xvbmcgKGdkYl9i eXRlICpidWYsIHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIG51bSkKK0BAIC0yMTkyLDYgKzIy NzUsNDIgQEAgcGFja19sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9O R0VTVCBudW0pCiAgfQogIAogIApAQCAtMjk0NzIsNyArMTk3MDQsNyBAQCBpbmRleCA1ODllMDNi Li42MjAwM2ZhIDEwMDY0NAogIC8qIENvbnZlcnQgQyBudW1iZXJzIGludG8gbmV3bHkgYWxsb2Nh dGVkIHZhbHVlcy4gICovCiAgCiAgc3RydWN0IHZhbHVlICoKLUBAIC0yMTkwLDYgKzIzMTUsMTkg QEAgdmFsdWVfZnJvbV9sb25nZXN0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VTVCBudW0pCitA QCAtMjIwNSw2ICsyMzI0LDE5IEBAIHZhbHVlX2Zyb21fbG9uZ2VzdCAoc3RydWN0IHR5cGUgKnR5 cGUsIExPTkdFU1QgbnVtKQogIH0KICAKICAKQEAgLTI5NDkyLDcgKzE5NzI0LDcgQEAgaW5kZXgg NTg5ZTAzYi4uNjIwMDNmYSAxMDA2NDQKICAvKiBDcmVhdGUgYSB2YWx1ZSByZXByZXNlbnRpbmcg YSBwb2ludGVyIG9mIHR5cGUgVFlQRSB0byB0aGUgYWRkcmVzcwogICAgIEFERFIuICAqLwogIHN0 cnVjdCB2YWx1ZSAqCi1AQCAtMjM0OCw0ICsyNDg2LDggQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBp bml0aWFsaXplZC4iKSk7CitAQCAtMjM2Myw0ICsyNDk1LDggQEAgVkFSSUFCTEUgaXMgYWxyZWFk eSBpbml0aWFsaXplZC4iKSk7CiAgICBhZGRfcHJlZml4X2NtZCAoImZ1bmN0aW9uIiwgbm9fY2xh c3MsIGZ1bmN0aW9uX2NvbW1hbmQsIF8oIlwKICBQbGFjZWhvbGRlciBjb21tYW5kIGZvciBzaG93 aW5nIGhlbHAgb24gY29udmVuaWVuY2UgZnVuY3Rpb25zLiIpLAogIAkJICAmZnVuY3Rpb25saXN0 LCAiZnVuY3Rpb24gIiwgMCwgJmNtZGxpc3QpOwpAQCAtMjk1MDIsNyArMTk3MzQsNyBAQCBpbmRl eCA1ODllMDNiLi42MjAwM2ZhIDEwMDY0NAogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAo dmFsdWVfdHlwZXNfbWFya191c2VkKTsKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9n ZGIvdmFsdWUuaAotaW5kZXggNTFlNjk2MC4uNDhiMzBlNCAxMDA2NDQKK2luZGV4IDhhYzYyYjgu LjA1MWM4YzUgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3ZhbHVlLmgKIEBA IC0zNDIsMTEgKzM0MiwxNiBAQCBleHRlcm4gTE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9uZyAo c3RydWN0IHR5cGUgKnR5cGUsCkBAIC0yOTUyMiwxNSArMTk3NTQsNyBAQCBpbmRleCA1MWU2OTYw Li40OGIzMGU0IDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2F0IChzdHJ1Y3Qg dHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVl X2F0X2xhenkgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgCi1AQCAtNDM2 LDYgKzQ0MSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX3N0cnVjdF9lbHQgKHN0cnVj dCB2YWx1ZSAqKmFyZ3AsCi0gCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYWdncmVnYXRl X2VsdCAoc3RydWN0IHR5cGUgKmN1cnR5cGUsCi0gCQkJCQkgIGNoYXIgKm5hbWUsCi0rCQkJCQkg IHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJCQkJCSAgaW50IHdhbnRfYWRkcmVzcywKLSAJ CQkJCSAgZW51bSBub3NpZGUgbm9zaWRlKTsKLSAKLUBAIC02ODEsNyArNjg3LDcgQEAgZXh0ZXJu IHN0cnVjdCB2YWx1ZSAqdmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGludCk7CitA QCAtNjg0LDcgKzY4OSw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRlX3Nw YWNlX2luX2luZmVyaW9yIChpbnQpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX29mX2xv Y2FsIChjb25zdCBjaGFyICpuYW1lLCBpbnQgY29tcGxhaW4pOwogIAogIGV4dGVybiBzdHJ1Y3Qg dmFsdWUgKnZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwKQEAg LTI5NTQwLDcgKzE5NzY0LDcgQEAgaW5kZXggNTFlNjk2MC4uNDhiMzBlNCAxMDA2NDQKICAvKiBV c2VyIGZ1bmN0aW9uIGhhbmRsZXIuICAqLwogIAogZGlmZiAtLWdpdCBhL2dkYi92YXJvYmouYyBi L2dkYi92YXJvYmouYwotaW5kZXggOGYyMjE1Ni4uOGZlNzJjYSAxMDA2NDQKK2luZGV4IDQ2ZDZi MzQuLjA1MzY3NTMgMTAwNjQ0CiAtLS0gYS9nZGIvdmFyb2JqLmMKICsrKyBiL2dkYi92YXJvYmou YwogQEAgLTI2LDYgKzI2LDggQEAKQEAgLTI5NTUyLDY2ICsxOTc3Niw3IEBAIGluZGV4IDhmMjIx NTYuLjhmZTcyY2EgMTAwNjQ0CiAgCiAgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKICAjaW5jbHVk ZSAiZ2RiX3N0cmluZy5oIgotQEAgLTI1Myw2ICsyNTUsOCBAQCBzdGF0aWMgdm9pZCBmcmVlX3Zh cmlhYmxlIChzdHJ1Y3QgdmFyb2JqICp2YXIpOwotIAotIHN0YXRpYyBzdHJ1Y3QgY2xlYW51cCAq bWFrZV9jbGVhbnVwX2ZyZWVfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhcik7Ci0gCi0rc3Rh dGljIHN0cnVjdCBjbGVhbnVwICptYWtlX2NsZWFudXBfdW5pbnN0YWxsX3ZhcmlhYmxlIChzdHJ1 Y3QgdmFyb2JqICp2YXIpOwotKwotIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqZ2V0X3R5cGUgKHN0cnVj dCB2YXJvYmogKnZhcik7Ci0gCi0gc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfdmFsdWVfdHlwZSAo c3RydWN0IHZhcm9iaiAqdmFyKTsKLUBAIC00ODAsNiArNDg0LDggQEAgaXNfcm9vdF9wIChzdHJ1 Y3QgdmFyb2JqICp2YXIpCi0gc3RydWN0IGNsZWFudXAgKgotIHZhcm9ial9lbnN1cmVfcHl0aG9u X2VudiAoc3RydWN0IHZhcm9iaiAqdmFyKQotIHsKLSsgIGdkYl9hc3NlcnQgKHZhci0+cm9vdC0+ aXNfdmFsaWQpOwotKwotICAgcmV0dXJuIGVuc3VyZV9weXRob25fZW52ICh2YXItPnJvb3QtPmV4 cC0+Z2RiYXJjaCwKLSAJCQkgICAgdmFyLT5yb290LT5leHAtPmxhbmd1YWdlX2RlZm4pOwotIH0K LUBAIC02NTEsNiArNjU3LDcgQEAgdmFyb2JqX2NyZWF0ZSAoY2hhciAqb2JqbmFtZSwKLSAJICBk b19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAJICByZXR1cm4gTlVMTDsKLSAJfQotKyAgICAgIG1h a2VfY2xlYW51cF91bmluc3RhbGxfdmFyaWFibGUgKHZhcik7Ci0gICAgIH0KLSAKLSAgIGRpc2Nh cmRfY2xlYW51cHMgKG9sZF9jaGFpbik7Ci1AQCAtODIxLDcgKzgyOCwxMiBAQCB2YXJvYmpfZ2V0 X2Rpc3BsYXlfaGludCAoc3RydWN0IHZhcm9iaiAqdmFyKQotICAgY2hhciAqcmVzdWx0ID0gTlVM TDsKLSAKLSAjaWYgSEFWRV9QWVRIT04KLS0gIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvID0gdmFy b2JqX2Vuc3VyZV9weXRob25fZW52ICh2YXIpOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87 Ci0rICAKLSsgIGlmICghdmFyLT5yb290LT5pc192YWxpZCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0r Ci0rICBiYWNrX3RvID0gdmFyb2JqX2Vuc3VyZV9weXRob25fZW52ICh2YXIpOwotIAotICAgaWYg KHZhci0+cHJldHR5X3ByaW50ZXIpCi0gICAgIHJlc3VsdCA9IGdkYnB5X2dldF9kaXNwbGF5X2hp bnQgKHZhci0+cHJldHR5X3ByaW50ZXIpOwotQEAgLTIxODYsNiArMjE5OCwxOCBAQCBtYWtlX2Ns ZWFudXBfZnJlZV92YXJpYWJsZSAoc3RydWN0IHZhcm9iaiAqdmFyKQotICAgcmV0dXJuIG1ha2Vf Y2xlYW51cCAoZG9fZnJlZV92YXJpYWJsZV9jbGVhbnVwLCB2YXIpOwotIH0KLSAKLStzdGF0aWMg dm9pZAotK2RvX3VuaW5zdGFsbF92YXJpYWJsZV9jbGVhbnVwICh2b2lkICp2YXIpCi0rewotKyAg dW5pbnN0YWxsX3ZhcmlhYmxlICh2YXIpOwotK30KLSsKLStzdGF0aWMgc3RydWN0IGNsZWFudXAg KgotK21ha2VfY2xlYW51cF91bmluc3RhbGxfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhcikK LSt7Ci0rICByZXR1cm4gbWFrZV9jbGVhbnVwIChkb191bmluc3RhbGxfdmFyaWFibGVfY2xlYW51 cCwgdmFyKTsKLSt9Ci0rCi0gLyogVGhpcyByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJs ZS4gSXQgYWxzbyBza2lwcyBwYXN0IHR5cGVkZWZzCi0gICAgdG8gcmV0dXJuIHRoZSByZWFsIHR5 cGUgb2YgdGhlIHZhcmlhYmxlLgotIAotQEAgLTM0NDIsNiArMzQ2NiwxOSBAQCBqYXZhX3ZhbHVl X29mX3ZhcmlhYmxlIChzdHJ1Y3QgdmFyb2JqICp2YXIsIGVudW0gdmFyb2JqX2Rpc3BsYXlfZm9y bWF0cyBmb3JtYXQpCitAQCAtMzQ2OCw2ICszNDcwLDE5IEBAIGphdmFfdmFsdWVfb2ZfdmFyaWFi bGUgKHN0cnVjdCB2YXJvYmogKnZhciwgZW51bSB2YXJvYmpfZGlzcGxheV9mb3JtYXRzIGZvcm1h dCkKICAgIHJldHVybiBjcGx1c192YWx1ZV9vZl92YXJpYWJsZSAodmFyLCBmb3JtYXQpOwogIH0K ICAKQEAgLTI5NjMxLDcgKzE5Nzk2LDcgQEAgaW5kZXggOGYyMjE1Ni4uOGZlNzJjYSAxMDA2NDQK ICAvKiBJdGVyYXRlIGFsbCB0aGUgZXhpc3RpbmcgX3Jvb3RfIFZBUk9CSnMgYW5kIGNhbGwgdGhl IEZVTkMgY2FsbGJhY2sgZm9yIHRoZW0KICAgICB3aXRoIGFuIGFyYml0cmFyeSBjYWxsZXIgc3Vw cGxpZWQgREFUQSBwb2ludGVyLiAgKi8KICAKLUBAIC0zNDU5LDYgKzM0OTYsNDMgQEAgYWxsX3Jv b3RfdmFyb2JqcyAodm9pZCAoKmZ1bmMpIChzdHJ1Y3QgdmFyb2JqICp2YXIsIHZvaWQgKmRhdGEp LCB2b2lkICpkYXRhKQorQEAgLTM0ODUsNiArMzUwMCw0MyBAQCBhbGxfcm9vdF92YXJvYmpzICh2 b2lkICgqZnVuYykgKHN0cnVjdCB2YXJvYmogKnZhciwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEp CiAgICAgICAgKCpmdW5jKSAodmFyX3Jvb3QtPnJvb3R2YXIsIGRhdGEpOwogICAgICB9CiAgfQpA QCAtMjk2NzYsMTAgKzE5ODQxLDEwIEBAIGluZGV4IDhmMjIxNTYuLjhmZTcyY2EgMTAwNjQ0CiAg ZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfdmFyb2JqICh2b2lkKTsKICB2b2lkCiBkaWZmIC0tZ2l0 IGEvZ2RiL3hjb2ZmcmVhZC5jIGIvZ2RiL3hjb2ZmcmVhZC5jCi1pbmRleCBjNTZhYjg2Li5kYWNm OTEzIDEwMDY0NAoraW5kZXggNjMwMWI2MS4uNDdjMmFjYiAxMDA2NDQKIC0tLSBhL2dkYi94Y29m ZnJlYWQuYwogKysrIGIvZ2RiL3hjb2ZmcmVhZC5jCi1AQCAtMzAzOCw2ICszMDM4LDcgQEAgc3Rh dGljIHN0cnVjdCBzeW1fZm5zIHhjb2ZmX3N5bV9mbnMgPQorQEAgLTMwMzUsNiArMzAzNSw3IEBA IHN0YXRpYyBzdHJ1Y3Qgc3ltX2ZucyB4Y29mZl9zeW1fZm5zID0KICAgIHhjb2ZmX25ld19pbml0 LAkJLyogc3ltX25ld19pbml0OiBpbml0IGFueXRoaW5nIGdibCB0byBlbnRpcmUgc3ltdGFiICov CiAgICB4Y29mZl9zeW1maWxlX2luaXQsCQkvKiBzeW1faW5pdDogcmVhZCBpbml0aWFsIGluZm8s IHNldHVwIGZvciBzeW1fcmVhZCgpICovCiAgICB4Y29mZl9pbml0aWFsX3NjYW4sCQkvKiBzeW1f cmVhZDogcmVhZCBhIHN5bWJvbCBmaWxlIGludG8gc3ltdGFiICovCgpkaWZmIC0tZ2l0IGEvZ2Ri LWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0Y2ggYi9nZGItYml0ZmllbGQtY2hlY2tfdHlwZWRl Zi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE4N2JmYi4uMDAwMDAwMAot LS0gYS9nZGItYml0ZmllbGQtY2hlY2tfdHlwZWRlZi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDEwMSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0w MS9tc2cwMDAzMC5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFJlOiBSZWdyZXNzaW9uOiBmaWVsZCB0 eXBlIHByZXNlcnZhdGlvbjogNy4wIC0+IDcuMC4xK0hFQUQKLQotT24gRnJpZGF5IDAxIEphbnVh cnkgMjAxMCAyMTo0NTowNSBKYW4gS3JhdG9jaHZpbCB3cm90ZToKLT4gLVBBU1M6IGdkYi5taS9t aS12YXItY2hpbGQuZXhwOiBnZXQgY2hpbGRyZW4gb2Ygc3RydWN0X2RlY2xhcmF0aW9ucy5zMi51 Mi51MXMxCi0+ICtGQUlMOiBnZGIubWkvbWktdmFyLWNoaWxkLmV4cDogZ2V0IGNoaWxkcmVuIG9m IHN0cnVjdF9kZWNsYXJhdGlvbnMuczIudTIudTFzMQotPiAtUEFTUzogZ2RiLm1pL21pMi12YXIt Y2hpbGQuZXhwOiBnZXQgY2hpbGRyZW4gb2Ygc3RydWN0X2RlY2xhcmF0aW9ucy5zMi51Mi51MXMx Ci0+ICtGQUlMOiBnZGIubWkvbWkyLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1 Y3RfZGVjbGFyYXRpb25zLnMyLnUyLnUxczEKLT4gLVBBU1M6IGdkYi5weXRob24vcHktbWkuZXhw OiBleGFtaW5lIGNvbnRhaW5lciBjaGlsZHJlbj0wLCBubyBwcmV0dHktcHJpbnRpbmcKLT4gK0ZB SUw6IGdkYi5weXRob24vcHktbWkuZXhwOiBleGFtaW5lIGNvbnRhaW5lciBjaGlsZHJlbj0wLCBu byBwcmV0dHktcHJpbnRpbmcKLT4gCi0+IGR1ZSB0bzoKLT4gUmU6IFJGQTogdW5icmVhayB0eXBl ZGVmZWQgYml0ZmllbGQKLT4gaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIw MDktMTIvbXNnMDAyOTUuaHRtbAotPiBjb21taXQgZmM4NWRhNGVlMmE3YzMyYWZjNTNiMWIzMzRh NGY4NGUyZTliZDg0ZQotPiBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDA5LTEy L21zZzAwMTAwLmh0bWwKLQotYXR0YWNoZWQgYSBmaXggb24gdG9wIG9mIGV4aXN0aW5nIEhFQUQu Ci0KLU9yaWdpbmFsIFBSIGdkYi8xMDg4NCB3YXMgYSByZWdyZXNzaW9uIDYuOCAtPiA3LjAgZHVl IHRvOgotUkZDOiBMYXp5IGJpdGZpZWxkcwotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMDktMDcvbXNnMDA0MzcuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1jdnMvMjAwOS0wNy9tc2cwMDE0My5odG1sCi0wNzQ5MWIzNDA5ZjZhY2UwYjdhOWE3MDc3NzVh NTZjZTEwZmVjZTFjCi0KLU5vIHJlZ3Jlc3Npb25zIGZvciBIRUFEIG9uIHt4ODZfNjQseDg2XzY0 LW0zMixpNjg2fS1mZWRvcmExMi1saW51eC1nbnUuICBQbHVzOgotLUZBSUw6IGdkYi5taS9taS12 YXItY2hpbGQuZXhwOiBnZXQgY2hpbGRyZW4gb2Ygc3RydWN0X2RlY2xhcmF0aW9ucy5zMi51Mi51 MXMxCi0rUEFTUzogZ2RiLm1pL21pLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1 Y3RfZGVjbGFyYXRpb25zLnMyLnUyLnUxczEKLS1GQUlMOiBnZGIubWkvbWkyLXZhci1jaGlsZC5l eHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFyYXRpb25zLnMyLnUyLnUxczEKLStQQVNT OiBnZGIubWkvbWkyLXZhci1jaGlsZC5leHA6IGdldCBjaGlsZHJlbiBvZiBzdHJ1Y3RfZGVjbGFy YXRpb25zLnMyLnUyLnUxczEKLS1GQUlMOiBnZGIucHl0aG9uL3B5LW1pLmV4cDogZXhhbWluZSBj b250YWluZXIgY2hpbGRyZW49MCwgbm8gcHJldHR5LXByaW50aW5nCi0rUEFTUzogZ2RiLnB5dGhv bi9weS1taS5leHA6IGV4YW1pbmUgY29udGFpbmVyIGNoaWxkcmVuPTAsIG5vIHByZXR0eS1wcmlu dGluZwotCi1Hb2luZyB0byBjaGVjayBpdCBpbiBhbHNvIGZvciBnZGJfN18wLWJyYW5jaCBhZnRl ciBhbiBhcHByb3ZhbC4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTAxLTAyICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIHZhbHVlLmMg KHZhbHVlX3ByaW1pdGl2ZV9maWVsZCk6IFJlbW92ZSBvbmUgY2hlY2tfdHlwZWRlZiBjYWxsLgot CU1vdmUgYml0cG9zIGFuZCBjb250YWluZXJfYml0c2l6ZSBpbml0aWFsaXphdGlvbiBhZnRlcgot CWFsbG9jYXRlX3ZhbHVlX2xhenkuICBOZXcgY29tbWVudCBiZWZvcmUgYWNjZXNzaW5nIFRZUEVf TEVOR1RILgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMC0wMS0wMiAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIubWkvdmFyLWNtZC5jIChkb19iaXRm aWVsZF90ZXN0cyk6IENoYW5nZSAiVi5zaGFyYWJsZSIgdHlwZSB0bwotCSJ1aW50X2Zvcl9taV90 ZXN0aW5nIi4KLQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvdmFyLWNtZC5jCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5taS92YXItY21kLmMKLUBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBk b19iaXRmaWVsZF90ZXN0cyAoKQotICAgICBtaV9jcmVhdGVfdmFyb2JqIFYgZCAiY3JlYXRlIHZh cm9iaiBmb3IgRGF0YSIKLSAgICAgbWlfbGlzdF92YXJvYmpfY2hpbGRyZW4gIlYiIHsKLSAgICAg ICAgIHsiVi5hbGxvYyIgImFsbG9jIiAiMCIgImludCJ9Ci0tICAgICAgICB7IlYuc2hhcmFibGUi ICJzaGFyYWJsZSIgIjAiICJ1bnNpZ25lZCBpbnQifQotKyAgICAgICAgeyJWLnNoYXJhYmxlIiAi c2hhcmFibGUiICIwIiAidWludF9mb3JfbWlfdGVzdGluZyJ9Ci0gICAgIH0gImxpc3QgY2hpbGRy ZW4gb2YgRGF0YSIKLSAgICAgbWlfY2hlY2tfdmFyb2JqX3ZhbHVlIFYuc2hhcmFibGUgMyAiYWNj ZXNzIGJpdGZpZWxkIgotICAgICA6Ki8KLS0tLSBhL2dkYi92YWx1ZS5jCi0rKysgYi9nZGIvdmFs dWUuYwotQEAgLTE4NzMsNyArMTg3Myw2IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0 IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAotIAotICAgQ0hFQ0tfVFlQRURFRiAoYXJnX3R5cGUp OwotICAgdHlwZSA9IFRZUEVfRklFTERfVFlQRSAoYXJnX3R5cGUsIGZpZWxkbm8pOwotLSAgdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwotIAotICAgLyogSGFuZGxlIHBhY2tlZCBmaWVsZHMg Ki8KLSAKLUBAIC0xODg1LDEwICsxODg0LDE0IEBAIHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3Ry dWN0IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAotIAkgT3RoZXJ3aXNlLCBhZGp1c3Qgb2Zmc2V0 IHRvIHRoZSBieXRlIGNvbnRhaW5pbmcgdGhlIGZpcnN0Ci0gCSBiaXQuICBBc3N1bWUgdGhhdCB0 aGUgYWRkcmVzcywgb2Zmc2V0LCBhbmQgZW1iZWRkZWQgb2Zmc2V0Ci0gCSBhcmUgc3VmZmljaWVu dGx5IGFsaWduZWQuICAqLwotLSAgICAgIGludCBiaXRwb3MgPSBUWVBFX0ZJRUxEX0JJVFBPUyAo YXJnX3R5cGUsIGZpZWxkbm8pOwotLSAgICAgIGludCBjb250YWluZXJfYml0c2l6ZSA9IFRZUEVf TEVOR1RIICh0eXBlKSAqIDg7Ci0rICAgICAgaW50IGJpdHBvcywgY29udGFpbmVyX2JpdHNpemU7 Ci0gCi0gICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwotKwotKyAgICAgIC8q IFRZUEVfTEVOR1RIIG9mIFRZUEUgZ2V0cyBpbml0aWFsaXplZCBieSBhbGxvY2F0ZV92YWx1ZV9s YXp5LiAgKi8KLSsgICAgICBiaXRwb3MgPSBUWVBFX0ZJRUxEX0JJVFBPUyAoYXJnX3R5cGUsIGZp ZWxkbm8pOwotKyAgICAgIGNvbnRhaW5lcl9iaXRzaXplID0gVFlQRV9MRU5HVEggKHR5cGUpICog ODsKLSsKLSAgICAgICB2LT5iaXRzaXplID0gVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwg ZmllbGRubyk7Ci0gICAgICAgaWYgKChiaXRwb3MgJSBjb250YWluZXJfYml0c2l6ZSkgKyB2LT5i aXRzaXplIDw9IGNvbnRhaW5lcl9iaXRzaXplCi0gCSAgJiYgVFlQRV9MRU5HVEggKHR5cGUpIDw9 IChpbnQpIHNpemVvZiAoTE9OR0VTVCkpCi1AQCAtMTkzOSw2ICsxOTQyLDggQEAgdmFsdWVfcHJp bWl0aXZlX2ZpZWxkIChzdHJ1Y3QgdmFsdWUgKmFyZzEsIGludCBvZmZzZXQsCi0gICAgICAgZWxz ZQotIAl7Ci0gCSAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsKLSsJICAvKiBUWVBFX0xF TkdUSCBvZiBUWVBFIGdldHMgaW5pdGlhbGl6ZWQgYnkgYWxsb2NhdGVfdmFsdWUuICAqLwotIAkg IG1lbWNweSAodmFsdWVfY29udGVudHNfcmF3ICh2KSwKLSAJCSAgdmFsdWVfY29udGVudHNfcmF3 IChhcmcxKSArIG9mZnNldCwKLSAJCSAgVFlQRV9MRU5HVEggKHR5cGUpKTsKLQoKZGlmZiAtLWdp dCBhL2dkYi1iejUyODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2ggYi9nZGItYno1Mjg2Njgtc3lt ZmlsZS1jbGVhbnVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTg0M2Zh Li4wMDAwMDAwCi0tLSBhL2dkYi1iejUyODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMDktMTAvbXNnMDA1MDkuaHRtbAotU3ViamVjdDogW3BhdGNoIDIvM10gZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlIGNsZWFudXAKLQotSGksCi0KLWN1cnJlbnQgY29kZSB3YXM6Ci0q IGRpZmZpY3VsdCB0byBtYWludGFpbiBhcyBhIG5ldyB2YXJpYWJsZSByZXF1aXJlZCB4ZnJlZSBv biBtYW55IHBsYWNlcwotKiB3YXMgY2F1c2luZyBtZW1vcnkgY29ycnVwdGlvbnMgZHVlIHRvIHNp bGVudGx5IG1pc2FwcGxpZWQgM3JkIHBhcnR5IHBhdGNoZXMKLSAgYXMgdGhlIGNsb3NlIGNvZGUg ZnJhZ21lbnRzIHVuZm9ydHVuYXRlbHkgbWF0Y2ggcGF0Y2ggY29udGV4dAotCi0KLVRoYW5rcywK LUphbgotCi0KLWdkYi8KLTIwMDktMTAtMjEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2 aWxAcmVkaGF0LmNvbT4KLQotCSogc3ltZmlsZS5jIChmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUp OiBJbml0aWFsaXplIGRpciwgZGVidWdmaWxlIGFuZAotCWNhbm9uX25hbWUgdG8gTlVMTC4gIENo YW5nZSBhbGxvY2EgdG8geG1hbGxvYywgbmV3bHkgY2FsbCB4ZnJlZSBmb3IgaXQuCi0JTmV3IGxh YmVsIGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZSwganVtcCB0byBpdCBmcm9tIHRoZSBmYWlsdXJl IHBhdGhzLgotCi0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5jCi1AQCAt MTMzMywxMSArMTMzMywxMCBAQCBzdGF0aWMgY2hhciAqCi0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19m aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBhc2VjdGlvbiAqc2VjdDsKLS0g IGNoYXIgKmJhc2VuYW1lOwotLSAgY2hhciAqZGlyOwotLSAgY2hhciAqZGVidWdmaWxlOwotLSAg Y2hhciAqbmFtZV9jb3B5OwotLSAgY2hhciAqY2Fub25fbmFtZTsKLSsgIGNoYXIgKmJhc2VuYW1l LCAqbmFtZV9jb3B5OwotKyAgY2hhciAqZGlyID0gTlVMTDsKLSsgIGNoYXIgKmRlYnVnZmlsZSA9 IE5VTEw7Ci0rICBjaGFyICpjYW5vbl9uYW1lID0gTlVMTDsKLSAgIGJmZF9zaXplX3R5cGUgZGVi dWdsaW5rX3NpemU7Ci0gICB1bnNpZ25lZCBsb25nIGNyYzMyOwotICAgaW50IGk7Ci1AQCAtMTM2 Niw3ICsxMzY1LDcgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSkKLSAgIGlmIChiYXNlbmFtZSA9PSBOVUxMKQotICAgICAvKiBUaGVyZSdzIG5vIHNl cGFyYXRlIGRlYnVnIGluZm8sIGhlbmNlIHRoZXJlJ3Mgbm8gd2F5IHdlIGNvdWxkCi0gICAgICAg IGxvYWQgaXQgPT4gbm8gd2FybmluZy4gICovCi0tICAgIHJldHVybiBOVUxMOwotKyAgICBnb3Rv IGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAKLSAgIGRpciA9IHhzdHJkdXAgKG9iamZpbGUt Pm5hbWUpOwotIAotQEAgLTEzODgsMjQgKzEzODcsMTkgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19m aWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgIGlmIChjYW5vbl9uYW1lICYmIHN0cmxl biAoY2Fub25fbmFtZSkgPiBpKQotICAgICBpID0gc3RybGVuIChjYW5vbl9uYW1lKTsKLSAKLS0g IGRlYnVnZmlsZSA9IGFsbG9jYSAoc3RybGVuIChkZWJ1Z19maWxlX2RpcmVjdG9yeSkgKyAxCi0t ICAgICAgICAgICAgICAgICAgICAgICsgaQotLSAgICAgICAgICAgICAgICAgICAgICArIHN0cmxl biAoREVCVUdfU1VCRElSRUNUT1JZKQotLSAgICAgICAgICAgICAgICAgICAgICArIHN0cmxlbiAo Ii8iKQotLSAgICAgICAgICAgICAgICAgICAgICArIHN0cmxlbiAoYmFzZW5hbWUpCi0tICAgICAg ICAgICAgICAgICAgICAgICsgMSk7Ci0rICBkZWJ1Z2ZpbGUgPSB4bWFsbG9jIChzdHJsZW4gKGRl YnVnX2ZpbGVfZGlyZWN0b3J5KSArIDEKLSsJCSAgICAgICArIGkKLSsJCSAgICAgICArIHN0cmxl biAoREVCVUdfU1VCRElSRUNUT1JZKQotKwkJICAgICAgICsgc3RybGVuICgiLyIpCi0rCQkgICAg ICAgKyBzdHJsZW4gKGJhc2VuYW1lKQotKwkJICAgICAgICsgMSk7Ci0gCi0gICAvKiBGaXJzdCB0 cnkgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoZSBvcmlnaW5hbCBmaWxlLiAgKi8KLSAgIHN0 cmNweSAoZGVidWdmaWxlLCBkaXIpOwotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsK LSAKLSAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwg b2JqZmlsZS0+bmFtZSkpCi0tICAgIHsKLS0gICAgICB4ZnJlZSAoYmFzZW5hbWUpOwotLSAgICAg IHhmcmVlIChkaXIpOwotLSAgICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLS0gICAgICByZXR1cm4g eHN0cmR1cCAoZGVidWdmaWxlKTsKLS0gICAgfQotKyAgICBnb3RvIGNsZWFudXBfcmV0dXJuX2Rl YnVnZmlsZTsKLSAKLSAgIC8qIFRoZW4gdHJ5IGluIHRoZSBzdWJkaXJlY3RvcnkgbmFtZWQgREVC VUdfU1VCRElSRUNUT1JZLiAgKi8KLSAgIHN0cmNweSAoZGVidWdmaWxlLCBkaXIpOwotQEAgLTE0 MTQsMTIgKzE0MDgsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgIGlmIChz ZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFt ZSkpCi0tICAgIHsKLS0gICAgICB4ZnJlZSAoYmFzZW5hbWUpOwotLSAgICAgIHhmcmVlIChkaXIp OwotLSAgICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLS0gICAgICByZXR1cm4geHN0cmR1cCAoZGVi dWdmaWxlKTsKLS0gICAgfQotKyAgICBnb3RvIGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAK LSAgIC8qIFRoZW4gdHJ5IGluIHRoZSBnbG9iYWwgZGVidWdmaWxlIGRpcmVjdG9yeS4gICovCi0g ICBzdHJjcHkgKGRlYnVnZmlsZSwgZGVidWdfZmlsZV9kaXJlY3RvcnkpOwotQEAgLTE0MjgsMTIg KzE0MTcsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgIGlmIChzZXBhcmF0 ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0t ICAgIHsKLS0gICAgICB4ZnJlZSAoYmFzZW5hbWUpOwotLSAgICAgIHhmcmVlIChkaXIpOwotLSAg ICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLS0gICAgICByZXR1cm4geHN0cmR1cCAoZGVidWdmaWxl KTsKLS0gICAgfQotKyAgICBnb3RvIGNsZWFudXBfcmV0dXJuX2RlYnVnZmlsZTsKLSAKLSAgIC8q IElmIHRoZSBmaWxlIGlzIGluIHRoZSBzeXNyb290LCB0cnkgdXNpbmcgaXRzIGJhc2UgcGF0aCBp biB0aGUKLSAgICAgIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAgKi8KLUBAIC0xNDQ3LDIw ICsxNDMxLDE3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLSAKLSAgICAgICBp ZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9iamZpbGUt Pm5hbWUpKQotLQl7Ci0tCSAgeGZyZWUgKGNhbm9uX25hbWUpOwotLQkgIHhmcmVlIChiYXNlbmFt ZSk7Ci0tCSAgeGZyZWUgKGRpcik7Ci0tCSAgcmV0dXJuIHhzdHJkdXAgKGRlYnVnZmlsZSk7Ci0t CX0KLSsJZ290byBjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU7Ci0gICAgIH0KLSAgIAotLSAgaWYg KGNhbm9uX25hbWUpCi0tICAgIHhmcmVlIChjYW5vbl9uYW1lKTsKLSsgIHhmcmVlIChkZWJ1Z2Zp bGUpOwotKyAgZGVidWdmaWxlID0gTlVMTDsKLSAKLStjbGVhbnVwX3JldHVybl9kZWJ1Z2ZpbGU6 Ci0rICB4ZnJlZSAoY2Fub25fbmFtZSk7Ci0gICB4ZnJlZSAoYmFzZW5hbWUpOwotICAgeGZyZWUg KGRpcik7Ci0tICByZXR1cm4gTlVMTDsKLSsgIHJldHVybiBkZWJ1Z2ZpbGU7Ci0gfQotIAotIAot CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtbXVsdGkucGF0Y2ggYi9nZGItYno1 Mjg2Njgtc3ltZmlsZS1tdWx0aS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZTc3M2YyZi4uMDAwMDAwMAotLS0gYS9nZGItYno1Mjg2Njgtc3ltZmlsZS1tdWx0aS5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDI3MSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLXBhdGNoZXMvMjAwOS0xMC9tc2cwMDUwOC5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMy8zXSBk ZWJ1Zy1maWxlLWRpcmVjdG9yeSB3aXRoIG11bHRpcGxlIGNvbXBvbmVudHMKLQotSGksCi0KLWZv ciB2YXJpb3VzIHJlYXNvbnMgYGRlYnVnLWZpbGUtZGlyZWN0b3J5JyB3b3VsZCBiZSBzb21ldGlt ZXMgdXNlZnVsIHRvIGhhdmUKLW11bHRpcGxlIGNvbXBvbmVudHMgc3VjaCBhcyBgc29saWItc2Vh cmNoLXBhdGgnIGhhcy4KLQotSSBmb3VuZCBpdCB1c2VmdWwgbXlzZWxmIGR1cmluZyB2YXJpb3Vz IHNlcGFyYXRlIGRlYnVnaW5mbyB0ZXN0cy9zY3JpcHRzLgotCi1JdCB3YXMgcmVxdWVzdGVkIGZv ciB0aGUgQUJSVCBidWdyZXBvcnRpbmcgcHJvamVjdCBhdCB0aGUgcHJlY2VkaW5nIG1haWwgb2Y6 Ci0JaHR0cHM6Ly9mZWRvcmFob3N0ZWQub3JnL3BpcGVybWFpbC9jcmFzaC1jYXRjaGVyLzIwMDkt T2N0b2Jlci8wMDAwNTQuaHRtbAotCi1JdCBzaG91bGQgYmUgYSBiYWNrd2FyZCBjb21wYXRpYmxl IGV4dGVuc2lvbiBhcyBESVJOQU1FX1NFUEFSQVRPUiBzaG91bGQgbmV2ZXIKLWJlIGEgdmFsaWQg cGFydCBvZiBhIHNpbmdsZSBERUJVR19GSUxFX0RJUkVDVE9SWSBjb21wb25lbnQuCi0KLQotVGhh bmtzLAotSmFuCi0KLQotZ2RiL2RvYy8KLTIwMDktMTAtMjIgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnRleGluZm8gKHNldCBkZWJ1Zy1maWxl LWRpcmVjdG9yeSwgc2hvdyBkZWJ1Zy1maWxlLWRpcmVjdG9yeSkKLQkoQXV0by1sb2FkaW5nKTog VXNlIHBsdXJhbCBhbmQgbm90ZSBvbmUgY2FuIHVzZSBtdWx0aXBsZSBjb21wb25lbnRzIG5vdy4K LQotZ2RiLwotMjAwOS0xMC0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JKiBzeW1maWxlLmMgKGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lKTogTmV3 IHZhcmlhYmxlIGRlYnVnZGlyLiAgTW92ZQotCXZhcmlhYmxlcyBzaXplLCBzIGFuZCBkYXRhIGlu dG8gYSBuZXcgaW5uZXIgYmxvY2suICBDaGFuZ2UgeG1hbGxvYyBmb3IKLQlhbGxvY2EsIHVzZSBk aXJlY3QgQlVJTERJRC0+U0laRSB0aGVyZSBub3cuICBMb29wIGZvciB0aGUKLQlERUJVR19GSUxF X0RJUkVDVE9SWSBjb21wb25lbnRzLgotCShmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGUpOiBOZXcg dmFyaWFibGUgZGVidWdkaXIgYW5kIGRlYnVnZGlyX2VuZC4KLQlMb29wIGZvciB0aGUgREVCVUdf RklMRV9ESVJFQ1RPUlkgY29tcG9uZW50cy4KLQkoX2luaXRpYWxpemVfc3ltZmlsZSk6IEZvciAi ZGVidWctZmlsZS1kaXJlY3RvcnkiIHVzZSBwbHVyYWwgYW5kIG5vdGUKLQlvbmUgY2FuIHVzZSBt dWx0aXBsZSBjb21wb25lbnRzIG5vdy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMDktMTAtMjIgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLmJhc2Uv c2VwZGVidWcuZXhwOiBOZXcgdGVzdF9kaWZmZXJlbnRfZGlyIGNhbGwgZm9yIG11bHRpcGxlLWRp cnMuCi0KLS0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGlu Zm8KLUBAIC0xNDA2NiwxMyArMTQwNjYsMTQgQEAgbmFtZSBAdmFsdWV7R0RCTn0gaXMgY3VycmVu dGx5IHVzaW5nLgotIEB0YWJsZSBAY29kZQotIAotIEBraW5kZXggc2V0IGRlYnVnLWZpbGUtZGly ZWN0b3J5Ci0tQGl0ZW0gc2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IEB2YXJ7ZGlyZWN0b3J5fQot LVNldCB0aGUgZGlyZWN0b3J5IHdoaWNoIEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3Igc2VwYXJh dGUgZGVidWdnaW5nCi0taW5mb3JtYXRpb24gZmlsZXMgdG8gQHZhcntkaXJlY3Rvcnl9LgotK0Bp dGVtIHNldCBkZWJ1Zy1maWxlLWRpcmVjdG9yeSBAdmFye2RpcmVjdG9yaWVzfQotK1NldCB0aGUg ZGlyZWN0b3JpZXMgd2hpY2ggQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1 Z2dpbmcKLStpbmZvcm1hdGlvbiBmaWxlcyB0byBAdmFye2RpcmVjdG9yeX0uICBNdWx0aXBsZSBk aXJlY3RvcnkgY29tcG9uZW50cyBjYW4gYmUgc2V0Ci0rY29uY2F0ZW5hdGluZyB0aGVtIGJ5IGEg ZGlyZWN0b3J5IHNlcGFyYXRvci4KLSAKLSBAa2luZGV4IHNob3cgZGVidWctZmlsZS1kaXJlY3Rv cnkKLSBAaXRlbSBzaG93IGRlYnVnLWZpbGUtZGlyZWN0b3J5Ci0tU2hvdyB0aGUgZGlyZWN0b3J5 IEB2YWx1ZXtHREJOfSBzZWFyY2hlcyBmb3Igc2VwYXJhdGUgZGVidWdnaW5nCi0rU2hvdyB0aGUg ZGlyZWN0b3JpZXMgQHZhbHVle0dEQk59IHNlYXJjaGVzIGZvciBzZXBhcmF0ZSBkZWJ1Z2dpbmcK LSBpbmZvcm1hdGlvbiBmaWxlcy4KLSAKLSBAZW5kIHRhYmxlCi1AQCAtMTkzMzYsOCArMTkzMzcs OCBAQCByZWFkYWJsZSwgQHZhbHVle0dEQk59IHdpbGwgZXZhbHVhdGUgaXQgYXMgYSBQeXRob24g c2NyaXB0LgotIAotIElmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgYW5kIGlmIHRoZSBwYXJh bWV0ZXIKLSBAY29kZXtkZWJ1Zy1maWxlLWRpcmVjdG9yeX0gaXMgc2V0IChAcHhyZWZ7U2VwYXJh dGUgRGVidWcgRmlsZXN9KSwKLS10aGVuIEB2YWx1ZXtHREJOfSB3aWxsIHVzZSB0aGUgZmlsZSBu YW1lZAotLUBmaWxle0B2YXJ7ZGVidWctZmlsZS1kaXJlY3Rvcnl9L0B2YXJ7cmVhbC1uYW1lfX0s IHdoZXJlCi0rdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCB1c2UgZm9yIGl0cyBlYWNoIHNlcGFyYXRl ZCBkaXJlY3RvcnkgY29tcG9uZW50Ci0rQGNvZGV7Y29tcG9uZW50fSB0aGUgZmlsZSBuYW1lZCBA ZmlsZXtAY29kZXtjb21wb25lbnR9L0B2YXJ7cmVhbC1uYW1lfX0sIHdoZXJlCi0gQHZhcntyZWFs LW5hbWV9IGlzIHRoZSBvYmplY3QgZmlsZSdzIHJlYWwgbmFtZSwgYXMgZGVzY3JpYmVkIGFib3Zl LgotIAotIEZpbmFsbHksIGlmIHRoaXMgZmlsZSBkb2VzIG5vdCBleGlzdCwgdGhlbiBAdmFsdWV7 R0RCTn0gd2lsbCBsb29rIGZvcgotLS0tIGEvZ2RiL3N5bWZpbGUuYwotKysrIGIvZ2RiL3N5bWZp bGUuYwotQEAgLTEyMTgsMzUgKzEyMTgsNTkgQEAgYnVpbGRfaWRfdmVyaWZ5IChjb25zdCBjaGFy ICpmaWxlbmFtZSwgc3RydWN0IGJ1aWxkX2lkICpjaGVjaykKLSBzdGF0aWMgY2hhciAqCi0gYnVp bGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQpCi0gewot LSAgY2hhciAqbGluaywgKnMsICpyZXR2YWwgPSBOVUxMOwotLSAgZ2RiX2J5dGUgKmRhdGEgPSBi dWlsZF9pZC0+ZGF0YTsKLS0gIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7Ci0rICBjaGFy ICpsaW5rLCAqZGVidWdkaXIsICpyZXR2YWwgPSBOVUxMOwotIAotICAgLyogREVCVUdfRklMRV9E SVJFQ1RPUlkvLmJ1aWxkLWlkL2FiL2NkZWYgKi8KLS0gIGxpbmsgPSB4bWFsbG9jIChzdHJsZW4g KGRlYnVnX2ZpbGVfZGlyZWN0b3J5KSArIChzaXplb2YgIi8uYnVpbGQtaWQvIiAtIDEpICsgMQot LQkJICArIDIgKiBzaXplICsgKHNpemVvZiAiLmRlYnVnIiAtIDEpICsgMSk7Ci0tICBzID0gbGlu ayArIHNwcmludGYgKGxpbmssICIlcy8uYnVpbGQtaWQvIiwgZGVidWdfZmlsZV9kaXJlY3Rvcnkp OwotLSAgaWYgKHNpemUgPiAwKQotLSAgICB7Ci0tICAgICAgc2l6ZS0tOwotLSAgICAgIHMgKz0g c3ByaW50ZiAocywgIiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOwotLSAgICB9Ci0tICBpZiAo c2l6ZSA+IDApCi0tICAgICpzKysgPSAnLyc7Ci0tICB3aGlsZSAoc2l6ZS0tID4gMCkKLS0gICAg cyArPSBzcHJpbnRmIChzLCAiJTAyeCIsICh1bnNpZ25lZCkgKmRhdGErKyk7Ci0tICBzdHJjcHkg KHMsICIuZGVidWciKTsKLS0KLS0gIC8qIGxyZWFscGF0aCgpIGlzIGV4cGVuc2l2ZSBldmVuIGZv ciB0aGUgdXN1YWxseSBub24tZXhpc3RlbnQgZmlsZXMuICAqLwotLSAgaWYgKGFjY2VzcyAobGlu aywgRl9PSykgPT0gMCkKLS0gICAgcmV0dmFsID0gbHJlYWxwYXRoIChsaW5rKTsKLS0gIHhmcmVl IChsaW5rKTsKLS0KLS0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChy ZXR2YWwsIGJ1aWxkX2lkKSkKLSsgIGxpbmsgPSBhbGxvY2EgKHN0cmxlbiAoZGVidWdfZmlsZV9k aXJlY3RvcnkpICsgKHNpemVvZiAiLy5idWlsZC1pZC8iIC0gMSkgKyAxCi0rCQkgKyAyICogYnVp bGRfaWQtPnNpemUgKyAoc2l6ZW9mICIuZGVidWciIC0gMSkgKyAxKTsKLSsKLSsgIC8qIEtlZXAg YmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNUT1JZIGJlaW5n ICIiIHdpbGwKLSsgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4gICovCi0rCi0r ICBkZWJ1Z2RpciA9IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OwotKyAgZG8KLSAgICAgewotLSAgICAg IHhmcmVlIChyZXR2YWwpOwotLSAgICAgIHJldHZhbCA9IE5VTEw7Ci0rICAgICAgY2hhciAqcywg KmRlYnVnZGlyX2VuZDsKLSsgICAgICBnZGJfYnl0ZSAqZGF0YSA9IGJ1aWxkX2lkLT5kYXRhOwot KyAgICAgIHNpemVfdCBzaXplID0gYnVpbGRfaWQtPnNpemU7Ci0rCi0rICAgICAgd2hpbGUgKCpk ZWJ1Z2RpciA9PSBESVJOQU1FX1NFUEFSQVRPUikKLSsJZGVidWdkaXIrKzsKLSsKLSsgICAgICBk ZWJ1Z2Rpcl9lbmQgPSBzdHJjaHIgKGRlYnVnZGlyLCBESVJOQU1FX1NFUEFSQVRPUik7Ci0rICAg ICAgaWYgKGRlYnVnZGlyX2VuZCA9PSBOVUxMKQotKwlkZWJ1Z2Rpcl9lbmQgPSAmZGVidWdkaXJb c3RybGVuIChkZWJ1Z2RpcildOwotKwotKyAgICAgIG1lbWNweSAobGluaywgZGVidWdkaXIsIGRl YnVnZGlyX2VuZCAtIGRlYnVnZGlyKTsKLSsgICAgICBzID0gJmxpbmtbZGVidWdkaXJfZW5kIC0g ZGVidWdkaXJdOwotKyAgICAgIHMgKz0gc3ByaW50ZiAocywgIi8uYnVpbGQtaWQvIik7Ci0rICAg ICAgaWYgKHNpemUgPiAwKQotKwl7Ci0rCSAgc2l6ZS0tOwotKwkgIHMgKz0gc3ByaW50ZiAocywg IiUwMngiLCAodW5zaWduZWQpICpkYXRhKyspOwotKwl9Ci0rICAgICAgaWYgKHNpemUgPiAwKQot KwkqcysrID0gJy8nOwotKyAgICAgIHdoaWxlIChzaXplLS0gPiAwKQotKwlzICs9IHNwcmludGYg KHMsICIlMDJ4IiwgKHVuc2lnbmVkKSAqZGF0YSsrKTsKLSsgICAgICBzdHJjcHkgKHMsICIuZGVi dWciKTsKLSsKLSsgICAgICAvKiBscmVhbHBhdGgoKSBpcyBleHBlbnNpdmUgZXZlbiBmb3IgdGhl IHVzdWFsbHkgbm9uLWV4aXN0ZW50IGZpbGVzLiAgKi8KLSsgICAgICBpZiAoYWNjZXNzIChsaW5r LCBGX09LKSA9PSAwKQotKwlyZXR2YWwgPSBscmVhbHBhdGggKGxpbmspOwotKwotKyAgICAgIGlm IChyZXR2YWwgIT0gTlVMTCAmJiAhYnVpbGRfaWRfdmVyaWZ5IChyZXR2YWwsIGJ1aWxkX2lkKSkK LSsJewotKwkgIHhmcmVlIChyZXR2YWwpOwotKwkgIHJldHZhbCA9IE5VTEw7Ci0rCX0KLSsKLSsg ICAgICBpZiAocmV0dmFsICE9IE5VTEwpCi0rCWJyZWFrOwotKwotKyAgICAgIGRlYnVnZGlyID0g ZGVidWdkaXJfZW5kOwotICAgICB9Ci0rICB3aGlsZSAoKmRlYnVnZGlyICE9IDApOwotIAotICAg cmV0dXJuIHJldHZhbDsKLSB9Ci1AQCAtMTMzMyw3ICsxMzU3LDcgQEAgc3RhdGljIGNoYXIgKgot IGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewot ICAgYXNlY3Rpb24gKnNlY3Q7Ci0tICBjaGFyICpiYXNlbmFtZSwgKm5hbWVfY29weTsKLSsgIGNo YXIgKmJhc2VuYW1lLCAqbmFtZV9jb3B5LCAqZGVidWdkaXI7Ci0gICBjaGFyICpkaXIgPSBOVUxM OwotICAgY2hhciAqZGVidWdmaWxlID0gTlVMTDsKLSAgIGNoYXIgKmNhbm9uX25hbWUgPSBOVUxM OwotQEAgLTE0MTAsMjkgKzE0MzQsNTEgQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAo ZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0gICAgIGdvdG8gY2xlYW51cF9yZXR1 cm5fZGVidWdmaWxlOwotIAotLSAgLyogVGhlbiB0cnkgaW4gdGhlIGdsb2JhbCBkZWJ1Z2ZpbGUg ZGlyZWN0b3J5LiAgKi8KLS0gIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9y eSk7Ci0tICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKLS0gIHN0cmNhdCAoZGVidWdmaWxlLCBk aXIpOwotLSAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsKLS0KLS0gIGlmIChzZXBhcmF0 ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0t ICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOwotKyAgLyogVGhlbiB0cnkgaW4gdGhl IGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3JpZXMuCi0rIAotKyAgICAgS2VlcCBiYWNrd2FyZCBj b21wYXRpYmlsaXR5IHNvIHRoYXQgREVCVUdfRklMRV9ESVJFQ1RPUlkgYmVpbmcgIiIgd2lsbAot KyAgICAgY2F1c2UgIi8uLi4iIGxvb2t1cHMuICAqLwotIAotLSAgLyogSWYgdGhlIGZpbGUgaXMg aW4gdGhlIHN5c3Jvb3QsIHRyeSB1c2luZyBpdHMgYmFzZSBwYXRoIGluIHRoZQotLSAgICAgZ2xv YmFsIGRlYnVnZmlsZSBkaXJlY3RvcnkuICAqLwotLSAgaWYgKGNhbm9uX25hbWUKLS0gICAgICAm JiBzdHJuY21wIChjYW5vbl9uYW1lLCBnZGJfc3lzcm9vdCwgc3RybGVuIChnZGJfc3lzcm9vdCkp ID09IDAKLS0gICAgICAmJiBJU19ESVJfU0VQQVJBVE9SIChjYW5vbl9uYW1lW3N0cmxlbiAoZ2Ri X3N5c3Jvb3QpXSkpCi0rICBkZWJ1Z2RpciA9IGRlYnVnX2ZpbGVfZGlyZWN0b3J5OwotKyAgZG8K LSAgICAgewotLSAgICAgIHN0cmNweSAoZGVidWdmaWxlLCBkZWJ1Z19maWxlX2RpcmVjdG9yeSk7 Ci0tICAgICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGNhbm9uX25hbWUgKyBzdHJsZW4gKGdkYl9zeXNy b290KSk7Ci0rICAgICAgY2hhciAqZGVidWdkaXJfZW5kOwotKwotKyAgICAgIHdoaWxlICgqZGVi dWdkaXIgPT0gRElSTkFNRV9TRVBBUkFUT1IpCi0rCWRlYnVnZGlyKys7Ci0rCi0rICAgICAgZGVi dWdkaXJfZW5kID0gc3RyY2hyIChkZWJ1Z2RpciwgRElSTkFNRV9TRVBBUkFUT1IpOwotKyAgICAg IGlmIChkZWJ1Z2Rpcl9lbmQgPT0gTlVMTCkKLSsJZGVidWdkaXJfZW5kID0gJmRlYnVnZGlyW3N0 cmxlbiAoZGVidWdkaXIpXTsKLSsKLSsgICAgICBtZW1jcHkgKGRlYnVnZmlsZSwgZGVidWdkaXIs IGRlYnVnZGlyX2VuZCAtIGRlYnVnZGlyKTsKLSsgICAgICBkZWJ1Z2ZpbGVbZGVidWdkaXJfZW5k IC0gZGVidWdkaXJdID0gMDsKLSAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgIi8iKTsKLSsgICAg ICBzdHJjYXQgKGRlYnVnZmlsZSwgZGlyKTsKLSAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFz ZW5hbWUpOwotIAotICAgICAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdm aWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0gCWdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdm aWxlOwotKwotKyAgICAgIC8qIElmIHRoZSBmaWxlIGlzIGluIHRoZSBzeXNyb290LCB0cnkgdXNp bmcgaXRzIGJhc2UgcGF0aCBpbiB0aGUKLSsJIGdsb2JhbCBkZWJ1Z2ZpbGUgZGlyZWN0b3J5LiAg Ki8KLSsgICAgICBpZiAoY2Fub25fbmFtZQotKwkgICYmIHN0cm5jbXAgKGNhbm9uX25hbWUsIGdk Yl9zeXNyb290LCBzdHJsZW4gKGdkYl9zeXNyb290KSkgPT0gMAotKwkgICYmIElTX0RJUl9TRVBB UkFUT1IgKGNhbm9uX25hbWVbc3RybGVuIChnZGJfc3lzcm9vdCldKSkKLSsJewotKwkgIG1lbWNw eSAoZGVidWdmaWxlLCBkZWJ1Z2RpciwgZGVidWdkaXJfZW5kIC0gZGVidWdkaXIpOwotKwkgIGRl YnVnZmlsZVtkZWJ1Z2Rpcl9lbmQgLSBkZWJ1Z2Rpcl0gPSAwOwotKwkgIHN0cmNhdCAoZGVidWdm aWxlLCBjYW5vbl9uYW1lICsgc3RybGVuIChnZGJfc3lzcm9vdCkpOwotKwkgIHN0cmNhdCAoZGVi dWdmaWxlLCAiLyIpOwotKwkgIHN0cmNhdCAoZGVidWdmaWxlLCBiYXNlbmFtZSk7Ci0rCi0rCSAg aWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyLCBvYmpmaWxl LT5uYW1lKSkKLSsJICAgIGdvdG8gY2xlYW51cF9yZXR1cm5fZGVidWdmaWxlOwotKwl9Ci0rCi0r ICAgICAgZGVidWdkaXIgPSBkZWJ1Z2Rpcl9lbmQ7Ci0gICAgIH0KLSsgIHdoaWxlICgqZGVidWdk aXIgIT0gMCk7Ci0gICAKLSAgIHhmcmVlIChkZWJ1Z2ZpbGUpOwotICAgZGVidWdmaWxlID0gTlVM TDsKLUBAIC00MTczLDEyICs0MjE5LDEyIEBAIFVzYWdlOiBzZXQgZXh0ZW5zaW9uLWxhbmd1YWdl IC5mb28gYmFyIiksCi0gCi0gICBhZGRfc2V0c2hvd19vcHRpb25hbF9maWxlbmFtZV9jbWQgKCJk ZWJ1Zy1maWxlLWRpcmVjdG9yeSIsIGNsYXNzX3N1cHBvcnQsCi0gCQkJCSAgICAgJmRlYnVnX2Zp bGVfZGlyZWN0b3J5LCBfKCJcCi0tU2V0IHRoZSBkaXJlY3Rvcnkgd2hlcmUgc2VwYXJhdGUgZGVi dWcgc3ltYm9scyBhcmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCi0tU2hvdyB0aGUgZGlyZWN0b3J5 IHdoZXJlIHNlcGFyYXRlIGRlYnVnIHN5bWJvbHMgYXJlIHNlYXJjaGVkIGZvci4iKSwgXygiXAot K1NldCB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUgZGVidWcgc3ltYm9scyBhcmUgc2Vh cmNoZWQgZm9yLiIpLCBfKCJcCi0rU2hvdyB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgc2VwYXJhdGUg ZGVidWcgc3ltYm9scyBhcmUgc2VhcmNoZWQgZm9yLiIpLCBfKCJcCi0gU2VwYXJhdGUgZGVidWcg c3ltYm9scyBhcmUgZmlyc3Qgc2VhcmNoZWQgZm9yIGluIHRoZSBzYW1lXG5cCi0gZGlyZWN0b3J5 IGFzIHRoZSBiaW5hcnksIHRoZW4gaW4gdGhlIGAiIERFQlVHX1NVQkRJUkVDVE9SWSAiJyBzdWJk aXJlY3RvcnksXG5cCi0gYW5kIGxhc3RseSBhdCB0aGUgcGF0aCBvZiB0aGUgZGlyZWN0b3J5IG9m IHRoZSBiaW5hcnkgd2l0aFxuXAotLXRoZSBnbG9iYWwgZGVidWctZmlsZSBkaXJlY3RvcnkgcHJl cGVuZGVkLiIpLAotK2VhY2ggZ2xvYmFsIGRlYnVnLWZpbGUtZGlyZWN0b3J5IGNvbXBvbmVudCBw cmVwZW5kZWQuIiksCi0gCQkJCSAgICAgTlVMTCwKLSAJCQkJICAgICBzaG93X2RlYnVnX2ZpbGVf ZGlyZWN0b3J5LAotIAkJCQkgICAgICZzZXRsaXN0LCAmc2hvd2xpc3QpOwotLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1Zy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2VwZGVidWcuZXhwCi1AQCAtOTk1LDYgKzk5NSwxMiBAQCBpZiAhW3N0cmluZyBjb21wYXJl ICRidWlsZF9pZF9kZWJ1Z19maWxlbmFtZSAiIl0gdGhlbiB7Ci0gCi0gICAgIHRlc3RfZGlmZmVy ZW50X2RpciBidWlsZC1pZCAiJHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCi0gCi0rICAgICMg VGVzdCBhbHNvIG11bHRpcGxlIGRpcmVjdG9yaWVzIGNhbiBiZSBzcGVjaWZpZWQuICBXaXRob3V0 IHRoZSBidWlsZC1pZAotKyAgICAjIHJlZmVyZW5jZSBHREIgd291bGQgZmluZCB0aGUgc2VwYXJh dGUgZGVidWcgaW5mbyBqdXN0IGF0IHRoZSBzYW1lCi0rICAgICMgbG9jYXRpb24gYXMgdGhlIGV4 ZWN1dGFibGUgZmlsZS4KLSsKLSsgICAgdGVzdF9kaWZmZXJlbnRfZGlyIG11bHRpcGxlLWRpcnMg Ii9kb2Vzbm90ZXhpc3Q6JHtvYmpkaXJ9LyR7c3ViZGlyfSIgJHhmYWlsCi0rCi0gICAgICMgU3Bh cmUgZGVidWcgZmlsZXMgbWF5IGNvbmZ1c2UgdGVzdHN1aXRlIHJ1bnMgaW4gdGhlIGZ1dHVyZS4K LSAgICAgcmVtb3RlX2V4ZWMgYnVpbGQgInJtIC1mICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtidWls ZF9pZF9kZWJ1Z19maWxlbmFtZX0iCi0gfQotCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTI4NjY4LXN5 bWZpbGUtc2VwY3JjLnBhdGNoIGIvZ2RiLWJ6NTI4NjY4LXN5bWZpbGUtc2VwY3JjLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODdlNDVmLi4wMDAwMDAwCi0tLSBhL2dkYi1i ejUyODY2OC1zeW1maWxlLXNlcGNyYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCww IEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwOS0xMC9tc2cwMDUw Ny5odG1sCi1TdWJqZWN0OiBbcGF0Y2ggMS8zXSBwcmludCB0aGUgLmRlYnVnIGZpbGUgbmFtZSBo YXZpbmcgQ1JDIG1pc21hdGNoCi0KLUhpLAotCi10aGlzIHBhdGNoIGlzIGxlZnQgYXMgaXMgZnJv bSBBbmRyZXcgQ2FnbmV5LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMDUtMDQtMDIg IEFuZHJldyBDYWduZXkgIDxjYWduZXlAZ251Lm9yZz4KLQotCSogc3ltZmlsZS5jIChzZXBhcmF0 ZV9kZWJ1Z19maWxlX2V4aXN0cyk6IFdoZW4gdGhlIENSQ3MgbWlzbWF0Y2gKLQlwcmludCBhIHdh cm5pbmcuCi0JKGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSk6IFBhc3MgaW4gdGhlIG9iamZpbGUn cyBuYW1lLgotCi1nZGIvdGVzdHN1aXRlLwotMjAwOS0xMC0yMSAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9zZXBkZWJ1Zy5leHAgKENS QyBtaXNtYXRjaCBpcyByZXBvcnRlZCk6IE5ldyB0ZXN0LgotCSogZ2RiLmJhc2Uvc2VwZGVidWcy LmM6IE5ldyBmaWxlLgotCi0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5j Ci1AQCAtMTI4Myw3ICsxMjgzLDggQEAgZ2V0X2RlYnVnX2xpbmtfaW5mbyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHVuc2lnbmVkIGxvbmcgKmNyYzMyX291dCkKLSB9Ci0gCi0gc3RhdGljIGlu dAotLXNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25l ZCBsb25nIGNyYykKLStzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hhciAqbmFt ZSwgdW5zaWduZWQgbG9uZyBjcmMsCi0rCQkJICAgIGNvbnN0IGNoYXIgKnBhcmVudF9uYW1lKQot IHsKLSAgIHVuc2lnbmVkIGxvbmcgZmlsZV9jcmMgPSAwOwotICAgYmZkICphYmZkOwotQEAgLTEz MDMsNyArMTMwNCwxNSBAQCBzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoY29uc3QgY2hhciAq bmFtZSwgdW5zaWduZWQgbG9uZyBjcmMpCi0gCi0gICBiZmRfY2xvc2UgKGFiZmQpOwotIAotLSAg cmV0dXJuIGNyYyA9PSBmaWxlX2NyYzsKLSsgIGlmIChjcmMgIT0gZmlsZV9jcmMpCi0rICAgIHsK LSsgICAgICB3YXJuaW5nIChfKCJ0aGUgZGVidWcgaW5mb3JtYXRpb24gZm91bmQgaW4gXCIlc1wi IgotKwkJICIgZG9lcyBub3QgbWF0Y2ggXCIlc1wiIChDUkMgbWlzbWF0Y2gpLlxuIiksCi0rCSAg ICAgICBuYW1lLCBwYXJlbnRfbmFtZSk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsKLSsg IHJldHVybiAxOwotIH0KLSAKLSBjaGFyICpkZWJ1Z19maWxlX2RpcmVjdG9yeSA9IE5VTEw7Ci1A QCAtMTM1NSw2ICsxMzY0LDggQEAgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSkKLSAgIGJhc2VuYW1lID0gZ2V0X2RlYnVnX2xpbmtfaW5mbyAob2JqZmls ZSwgJmNyYzMyKTsKLSAKLSAgIGlmIChiYXNlbmFtZSA9PSBOVUxMKQotKyAgICAvKiBUaGVyZSdz IG5vIHNlcGFyYXRlIGRlYnVnIGluZm8sIGhlbmNlIHRoZXJlJ3Mgbm8gd2F5IHdlIGNvdWxkCi0r ICAgICAgIGxvYWQgaXQgPT4gbm8gd2FybmluZy4gICovCi0gICAgIHJldHVybiBOVUxMOwotIAot ICAgZGlyID0geHN0cmR1cCAob2JqZmlsZS0+bmFtZSk7Ci1AQCAtMTM4OCw3ICsxMzk5LDcgQEAg ZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgIHN0 cmNweSAoZGVidWdmaWxlLCBkaXIpOwotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsIGJhc2VuYW1lKTsK LSAKLS0gIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMikp Ci0rICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVnZmlsZSwgY3JjMzIsIG9i amZpbGUtPm5hbWUpKQotICAgICB7Ci0gICAgICAgeGZyZWUgKGJhc2VuYW1lKTsKLSAgICAgICB4 ZnJlZSAoZGlyKTsKLUBAIC0xNDAyLDcgKzE0MTMsNyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgc3RyY2F0IChkZWJ1Z2ZpbGUsICIvIik7 Ci0gICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOwotIAotLSAgaWYgKHNlcGFyYXRlX2Rl YnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNyYzMyKSkKLSsgIGlmIChzZXBhcmF0ZV9kZWJ1 Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMzMiwgb2JqZmlsZS0+bmFtZSkpCi0gICAgIHsK LSAgICAgICB4ZnJlZSAoYmFzZW5hbWUpOwotICAgICAgIHhmcmVlIChkaXIpOwotQEAgLTE0MTYs NyArMTQyNyw3IEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0gICBzdHJjYXQgKGRlYnVnZmlsZSwgZGlyKTsKLSAgIHN0cmNhdCAoZGVidWdmaWxl LCBiYXNlbmFtZSk7Ci0gCi0tICBpZiAoc2VwYXJhdGVfZGVidWdfZmlsZV9leGlzdHMgKGRlYnVn ZmlsZSwgY3JjMzIpKQotKyAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2Zp bGUsIGNyYzMyLCBvYmpmaWxlLT5uYW1lKSkKLSAgICAgewotICAgICAgIHhmcmVlIChiYXNlbmFt ZSk7Ci0gICAgICAgeGZyZWUgKGRpcik7Ci1AQCAtMTQzNSw3ICsxNDQ2LDcgQEAgZmluZF9zZXBh cmF0ZV9kZWJ1Z19maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgICBzdHJjYXQg KGRlYnVnZmlsZSwgIi8iKTsKLSAgICAgICBzdHJjYXQgKGRlYnVnZmlsZSwgYmFzZW5hbWUpOwot IAotLSAgICAgIGlmIChzZXBhcmF0ZV9kZWJ1Z19maWxlX2V4aXN0cyAoZGVidWdmaWxlLCBjcmMz MikpCi0rICAgICAgaWYgKHNlcGFyYXRlX2RlYnVnX2ZpbGVfZXhpc3RzIChkZWJ1Z2ZpbGUsIGNy YzMyLCBvYmpmaWxlLT5uYW1lKSkKLSAJewotIAkgIHhmcmVlIChjYW5vbl9uYW1lKTsKLSAJICB4 ZnJlZSAoYmFzZW5hbWUpOwotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zZXBkZWJ1Zy5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2VwZGVidWcuZXhwCi1AQCAtOTUyLDYg Kzk1MiwyMyBAQCBzZXQgZGVidWdmaWxlICIke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 LmRlYnVnIgotIHRlc3RfZGlmZmVyZW50X2RpciBkZWJ1Z2xpbmsgIiR7b2JqZGlyfS8ke3N1YmRp cn0iIDAKLSAKLSAKLSsjIFRlc3QgQ1JDIG1pc21hdGNoIGlzIHJlcG9ydGVkLgotKwotK2lmIHtb YnVpbGRfZXhlY3V0YWJsZSBzZXBkZWJ1Zy5leHAgc2VwZGVidWcyIHNlcGRlYnVnMi5jIGRlYnVn XSAhPSAtMQotKyAgICAmJiAhW2dkYl9nbnVfc3RyaXBfZGVidWcgJHtvYmpkaXJ9LyR7c3ViZGly fS9zZXBkZWJ1ZzJdfSB7Ci0rCi0rICAgIHJlbW90ZV9leGVjIGJ1aWxkICJjcCAke2RlYnVnZmls ZX0gJHtvYmpkaXJ9LyR7c3ViZGlyfS8uZGVidWcvc2VwZGVidWcyLmRlYnVnIgotKwotKyAgICBn ZGJfZXhpdAotKyAgICBnZGJfc3RhcnQKLSsgICAgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCi0rCi0rICAgIHNldCBlc2NhcGVkb2JqZGlyc3ViZGlyIFtzdHJpbmdfdG9fcmVn ZXhwICR7b2JqZGlyfS8ke3N1YmRpcn1dCi0rCi0rICAgIGdkYl90ZXN0ICJmaWxlICR7b2JqZGly fS8ke3N1YmRpcn0vc2VwZGVidWcyIiAid2FybmluZzogdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZv dW5kIGluIFwiJHtlc2NhcGVkb2JqZGlyc3ViZGlyfS9cXC5kZWJ1Zy9zZXBkZWJ1ZzJcXC5kZWJ1 Z1wiIGRvZXMgbm90IG1hdGNoIFwiJHtlc2NhcGVkb2JqZGlyc3ViZGlyfS9zZXBkZWJ1ZzJcIiBc XChDUkMgbWlzbWF0Y2hcXClcXC4uKlxcKG5vIGRlYnVnZ2luZyBzeW1ib2xzIGZvdW5kXFwpLioi ICJDUkMgbWlzbWF0Y2ggaXMgcmVwb3J0ZWQiCi0rfQotKwotKwotICMgTlRfR05VX0JVSUxEX0lE IC8gLm5vdGUuZ251LmJ1aWxkLWlkIHRlc3Q6Ci0gCi0gc2V0IGJ1aWxkX2lkX2RlYnVnX2ZpbGVu YW1lIFtidWlsZF9pZF9kZWJ1Z19maWxlbmFtZV9nZXQgJGJpbmZpbGVdCi0tLS0gL2Rldi9udWxs Ci0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NlcGRlYnVnMi5jCi1AQCAtMCwwICsxLDIy IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsK LSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0rCi0raW50Ci0rbWFp biAodm9pZCkKLSt7Ci0rICByZXR1cm4gMDsKLSt9Ci0KCmRpZmYgLS1naXQgYS9nZGItYno1Mzg2 MjYtYnBfbG9jYXRpb24tYWNjZWwtYnAtY29uZC5wYXRjaCBiL2dkYi1iejUzODYyNi1icF9sb2Nh dGlvbi1hY2NlbC1icC1jb25kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl NTNiZjNjLi4wMDAwMDAwCi0tLSBhL2dkYi1iejUzODYyNi1icF9sb2NhdGlvbi1hY2NlbC1icC1j b25kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTEyL21zZzAwMTgwLmh0bWwKLVN1YmplY3Q6IFtw YXRjaF0gRml4IGEgcmVncmVzc2lvbiBieSBtZSBvbiBicmVha3BvaW50LWNvbmQtaW5mY2FsbAot Ci1IaSwKLQotR0RCIGhhcyBub3cgYSByZWdyZXNzaW9uIHNpbmNlOgotCVJlOiBbcGF0Y2hdIFBl cmZvcm1hbmNlIG9wdGltaXplIGxhcmdlIGJwX2xvY2F0aW9uIGNvdW50Ci0JaHR0cDovL3NvdXJj ZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMTAvbXNnMDA2MzIuaHRtbAotCT0KLQkyMDA5 LTEwLTI1ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0JUGVy Zm9ybWFuY2Ugb3B0aW1pemUgbGFyZ2UgYnBfbG9jYXRpb24gY291bnQuCi0KLW9uIGJyZWFrcG9p bnRzIHdpdGggY29uZGl0aW9ucyBjYWxsaW5nIGluZmVyaW9yLgotCi1CcmluZ2luZyB0aGUgY29k ZSBiYWNrIHRvIHRoZSBzdGF0ZSBiZWZvcmUgbXkgYWNjZWxlcmF0aW9uIHBhdGNoLgotCi1UaGUg Y29kZSBiZWZvcmUgYWxyZWFkeSBhc3N1bWVkIG5vIGJyZWFrcG9pbnRzIG9yIHRoZWlyIGJwX2xv Y2F0aW9ucyBjYW4KLWNoYW5nZSBhY3Jvc3MgdGhlIGluZmVyaW9yIGNhbGwgd2hpY2ggc2hvdWxk IGJlIHRydWUgLSB0cnlpbmcgdG8gZG8gc29tZToKLQlicmVhayBhIGlmIGIoKQotCWJyZWFrIGIK LQljb21tYW5kIDEKLQlkZWxldGUgMgotCWVuZAotb3Igc2ltaWxhciBjYW5ub3Qgd29yayBhcyBp bnNpZGUgImlmIGIoKSIgZXZhbHVhdGlvbiBubyBicmVha3BvaW50cyBjYW4gYmUKLWFkZGVkIG9y IHJlbW92ZWQuCi0KLXVwZGF0ZV9nbG9iYWxfbG9jYXRpb25fbGlzdCBhbHNvIGRvZXMgbm90IHJl bW92ZWQvYWRkIGBzdHJ1Y3QgYnBfbG9jYXRpb24ncwotdGhlbXNlbHZlcyBidXQgb25seSBwb2lu dGVycyB0byB0aGVtIGluIHRoZSBicF9sb2NhdGlvbiBhcnJheS4gIEFzIHRoZSBuZXcKLWl0ZXJh dGlvbiBubyBsb25nZXIgdXNlcyB0aGUgYnBfbG9jYXRpb24gYXJyYXkgaXQgaXMgbm8gbG9uZ2Vy IGEgcHJvYmxlbS4KLQotT3JpZ2luYWwgcHJvYmxlbSB3YXMgZm91bmQgYnkgYW5kIGZpeGVkIGRp ZmZlcmVudGx5IGJ5IFBoaWwgTXVsZG9vbi4KLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4 ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEyLWxpbnV4LWdudS4KLQotCi1UaGFua3MsCi1KYW4KLQot Ci1nZGIvCi0yMDA5LTEyLTEzICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0KLQkqIGJyZWFrcG9pbnQuYyAoYnBzdGF0X3N0b3Bfc3RhdHVzKTogSXRlcmF0ZSB1 c2luZyBBTExfQlJFQUtQT0lOVFMgYW5kCi0JdGhlIEItPkxPQyBsaXN0LiAgUmVtb3ZlIGdkYl9h c3NlcnQgb24gQi4gIENoYW5nZSBicF9oYXJkd2FyZV93YXRjaHBvaW50Ci0JY29udGludWUgdG8g YnJlYWsuICBSZW1vdmUgdmFyaWFibGUgdXBkYXRlX2xvY2F0aW9ucy4gIFJlbW92ZSBISVRfQ09V TlQKLQlpbmNyZW1lbnQgcHJvdGVjdGlvbiBieSBhbiBFTkFCTEVfU1RBVEUgY2hlY2suICBJbmxp bmUgdGhlIGRlbGF5ZWQKLQl1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgY2FsbC4KLQotZ2Ri L3Rlc3RzdWl0ZS8KLTIwMDktMTItMTMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLQkgICAgUGhpbCBNdWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLQot CSogZ2RiLmJhc2UvY29uZGJyZWFrLmV4cDogUHV0IGJyZWFrcG9pbnQgb24gbWFya2VyMyBhbmQg bWFya2VyNC4KLQkoYnBfbG9jYXRpb24xMywgYnBfbG9jYXRpb24xNCwgYnBfbG9jYXRpb24xNywg YnBfbG9jYXRpb24xOCkKLQkobWFya2VyM19wcm90bywgbWFya2VyNF9wcm90byk6IE5ldyB2YXJp YWJsZXMuCi0JKGJyZWFrcG9pbnQgaW5mbyk6IFVwZGF0ZSBvdXRwdXQuCi0JKHJ1biB1bnRpbCBi cmVha3BvaW50IGF0IG1hcmtlcjMsIHJ1biB1bnRpbCBicmVha3BvaW50IGF0IG1hcmtlcjQpOiBO ZXcKLQl0ZXN0cy4KLQotWyBCYWNrcG9ydGVkIGZvciBGLTEyLiAgXQotCi0tLS0gLi9nZGIvYnJl YWtwb2ludC5jCTIwMDktMTItMTQgMDA6MjU6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIv YnJlYWtwb2ludC5jCTIwMDktMTItMTQgMDA6MzI6MzIuMDAwMDAwMDAwICswMTAwCi1AQCAtMzI5 OCw5MyArMzI5OCw5MyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKENPUkVfQUREUiBicF9hZGRyLCBw Ci0gICAvKiBQb2ludGVyIHRvIHRoZSBsYXN0IHRoaW5nIGluIHRoZSBjaGFpbiBjdXJyZW50bHku ICAqLwotICAgYnBzdGF0IGJzID0gcm9vdF9iczsKLSAgIGludCBpeDsKLS0gIGludCBuZWVkX3Jl bW92ZV9pbnNlcnQsIHVwZGF0ZV9sb2NhdGlvbnMgPSAwOwotKyAgaW50IG5lZWRfcmVtb3ZlX2lu c2VydDsKLSAKLS0gIEFMTF9CUF9MT0NBVElPTlMgKGJsLCBibHBfdG1wKQotLSAgewotLSAgICBi cHN0YXQgYnNfcHJldiA9IGJzOwotKyAgLyogQUxMX0JQX0xPQ0FUSU9OUyBpdGVyYXRpb24gd291 bGQgYnJlYWsgYWNyb3NzCi0rICAgICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9uX2xpc3QgcG9zc2li bHkgZXhlY3V0ZWQgYnkKLSsgICAgIGJwc3RhdF9jaGVja19icmVha3BvaW50X2NvbmRpdGlvbnMn cyBpbmZlcmlvciBjYWxsLiAgKi8KLSAKLS0gICAgYiA9IGJsLT5vd25lcjsKLS0gICAgZ2RiX2Fz c2VydCAoYik7Ci0tICAgIGlmICghYnJlYWtwb2ludF9lbmFibGVkIChiKSAmJiBiLT5lbmFibGVf c3RhdGUgIT0gYnBfcGVybWFuZW50KQotLSAgICAgIGNvbnRpbnVlOwotLQotLSAgICAvKiBGb3Ig aGFyZHdhcmUgd2F0Y2hwb2ludHMsIHdlIGxvb2sgb25seSBhdCB0aGUgZmlyc3QgbG9jYXRpb24u Ci0tICAgICAgIFRoZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0aW9uIHdpbGwgd29yayBvbiBlbnRp cmUgZXhwcmVzc2lvbiwKLS0gICAgICAgbm90IHRoZSBpbmRpdmlkdWFsIGxvY2F0aW9ucy4gIEZv ciByZWFkIHdhdGNob3BpbnRzLCB0aGUKLS0gICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVkIGZ1 bmN0aW9uIGhhdmUgY2hlY2tlZCBhbGwgbG9jYXRpb25zCi0tICAgICAgIGFscmVhCi0tICAgICAq LwotLSAgICBpZiAoYi0+dHlwZSA9PSBicF9oYXJkd2FyZV93YXRjaHBvaW50ICYmIGJsICE9IGIt PmxvYykKLS0gICAgICBjb250aW51ZTsKLS0KLS0gICAgaWYgKCFicHN0YXRfY2hlY2tfbG9jYXRp b24gKGJsLCBicF9hZGRyKSkKLS0gICAgICBjb250aW51ZTsKLS0KLS0gICAgLyogQ29tZSBoZXJl IGlmIGl0J3MgYSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBtYXRjaGVzICov Ci0tCi0tICAgIGJzID0gYnBzdGF0X2FsbG9jIChibCwgYnMpOwkvKiBBbGxvYyBhIGJwc3RhdCB0 byBleHBsYWluIHN0b3AgKi8KLS0gICAgZ2RiX2Fzc2VydCAoYnNfcHJldi0+bmV4dCA9PSBicyk7 Ci0tCi0tICAgIC8qIEFzc3VtZSB3ZSBzdG9wLiAgU2hvdWxkIHdlIGZpbmQgd2F0Y2hwb2ludCB0 aGF0IGlzIG5vdCBhY3R1YWxseQotLSAgICAgICB0cmlnZ2VyZWQsIG9yIGlmIGNvbmRpdGlvbiBv ZiBicmVha3BvaW50IGlzIGZhbHNlLCB3ZSdsbCByZXNldAotLSAgICAgICAnc3RvcCcgdG8gMC4g ICovCi0tICAgIGJzLT5zdG9wID0gMTsKLS0gICAgYnMtPnByaW50ID0gMTsKLSsgIEFMTF9CUkVB S1BPSU5UUyAoYikKLSsgICAgewotKyAgICAgIGlmICghYnJlYWtwb2ludF9lbmFibGVkIChiKSAm JiBiLT5lbmFibGVfc3RhdGUgIT0gYnBfcGVybWFuZW50KQotKwljb250aW51ZTsKLSAKLS0gICAg aWYgKCFicHN0YXRfY2hlY2tfd2F0Y2hwb2ludCAoYnMpKQotLSAgICAgIHsKLS0JLyogRW5zdXJl IGJwc3RhdF9leHBsYWluc19zaWduYWwgc3RheXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3Qg YmUKLS0JICAgdGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCi0rICAgICAgZm9yIChibCA9IGIt PmxvYzsgYmwgIT0gTlVMTDsgYmwgPSBibC0+bmV4dCkKLSsJewotKwkgIGJwc3RhdCBic19wcmV2 ID0gYnM7Ci0rCi0rCSAgLyogRm9yIGhhcmR3YXJlIHdhdGNocG9pbnRzLCB3ZSBsb29rIG9ubHkg YXQgdGhlIGZpcnN0IGxvY2F0aW9uLgotKwkgICAgIFRoZSB3YXRjaHBvaW50X2NoZWNrIGZ1bmN0 aW9uIHdpbGwgd29yayBvbiBlbnRpcmUgZXhwcmVzc2lvbiwKLSsJICAgICBub3QgdGhlIGluZGl2 aWR1YWwgbG9jYXRpb25zLiAgRm9yIHJlYWQgd2F0Y2hvcGludHMsIHRoZQotKwkgICAgIHdhdGNo cG9pbnRzX3RyaWdnZXJlZCBmdW5jdGlvbiBoYXZlIGNoZWNrZWQgYWxsIGxvY2F0aW9ucwotKwkg ICAgIGFscmVhCi0rCSAgICovCi0rCSAgaWYgKGItPnR5cGUgPT0gYnBfaGFyZHdhcmVfd2F0Y2hw b2ludCAmJiBibCAhPSBiLT5sb2MpCi0rCSAgICBicmVhazsKLSAKLS0JZ2RiX2Fzc2VydCAoYnMt PnByaW50X2l0ID09IHByaW50X2l0X25vb3ApOwotLQlnZGJfYXNzZXJ0ICghYnMtPnN0b3ApOwot LQl4ZnJlZSAoYnMpOwotLQlicyA9IGJzX3ByZXY7Ci0tCWJzLT5uZXh0ID0gTlVMTDsKLS0JY29u dGludWU7Ci0tICAgICAgfQotKwkgIGlmICghYnBzdGF0X2NoZWNrX2xvY2F0aW9uIChibCwgYnBf YWRkcikpCi0rCSAgICBjb250aW51ZTsKLSAKLS0gICAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFk X2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAotLQl8fCBiLT50eXBlID09IGJw X2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uX21hc3RlcikKLS0gICAg ICAvKiBXZSBkbyBub3Qgc3RvcCBmb3IgdGhlc2UuICAqLwotLSAgICAgIGJzLT5zdG9wID0gMDsK LS0gICAgZWxzZQotLSAgICAgIGJwc3RhdF9jaGVja19icmVha3BvaW50X2NvbmRpdGlvbnMgKGJz LCBwdGlkKTsKLS0gIAotLSAgICBpZiAoYnMtPnN0b3ApCi0tICAgICAgewotLQlpZiAoYi0+ZW5h YmxlX3N0YXRlICE9IGJwX2Rpc2FibGVkKQotLQkgICsrKGItPmhpdF9jb3VudCk7Ci0rCSAgLyog Q29tZSBoZXJlIGlmIGl0J3MgYSB3YXRjaHBvaW50LCBvciBpZiB0aGUgYnJlYWsgYWRkcmVzcyBt YXRjaGVzICovCi0gCi0tCS8qIFdlIHdpbGwgc3RvcCBoZXJlICovCi0tCWlmIChiLT5kaXNwb3Np dGlvbiA9PSBkaXNwX2Rpc2FibGUpCi0tCSAgewotLQkgICAgaWYgKGItPmVuYWJsZV9zdGF0ZSAh PSBicF9wZXJtYW5lbnQpCi0tCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVkOwot LQkgICAgdXBkYXRlX2xvY2F0aW9ucyA9IDE7Ci0tCSAgfQotLQlpZiAoYi0+c2lsZW50KQotLQkg IGJzLT5wcmludCA9IDA7Ci0tCWJzLT5jb21tYW5kcyA9IGItPmNvbW1hbmRzOwotLQlpZiAoYnMt PmNvbW1hbmRzCi0tCSAgICAmJiAoc3RyY21wICgic2lsZW50IiwgYnMtPmNvbW1hbmRzLT5saW5l KSA9PSAwCi0tCQl8fCAoeGRiX2NvbW1hbmRzICYmIHN0cmNtcCAoIlEiLCBicy0+Y29tbWFuZHMt PmxpbmUpID09IDApKSkKLS0JICB7Ci0tCSAgICBicy0+Y29tbWFuZHMgPSBicy0+Y29tbWFuZHMt Pm5leHQ7Ci0tCSAgICBicy0+cHJpbnQgPSAwOwotLQkgIH0KLS0JYnMtPmNvbW1hbmRzID0gY29w eV9jb21tYW5kX2xpbmVzIChicy0+Y29tbWFuZHMpOwotLSAgICAgIH0KLSsJICBicyA9IGJwc3Rh dF9hbGxvYyAoYmwsIGJzKTsJLyogQWxsb2MgYSBicHN0YXQgdG8gZXhwbGFpbiBzdG9wICovCi0r CSAgZ2RiX2Fzc2VydCAoYnNfcHJldi0+bmV4dCA9PSBicyk7Ci0gCi0tICAgIC8qIFByaW50IG5v dGhpbmcgZm9yIHRoaXMgZW50cnkgaWYgd2UgZG9udCBzdG9wIG9yIGlmIHdlIGRvbnQgcHJpbnQu ICAqLwotLSAgICBpZiAoYnMtPnN0b3AgPT0gMCB8fCBicy0+cHJpbnQgPT0gMCkKLS0gICAgICBi cy0+cHJpbnRfaXQgPSBwcmludF9pdF9ub29wOwotLSAgfQotKwkgIC8qIEFzc3VtZSB3ZSBzdG9w LiAgU2hvdWxkIHdlIGZpbmQgd2F0Y2hwb2ludCB0aGF0IGlzIG5vdCBhY3R1YWxseQotKwkgICAg IHRyaWdnZXJlZCwgb3IgaWYgY29uZGl0aW9uIG9mIGJyZWFrcG9pbnQgaXMgZmFsc2UsIHdlJ2xs IHJlc2V0Ci0rCSAgICAgJ3N0b3AnIHRvIDAuICAqLwotKwkgIGJzLT5zdG9wID0gMTsKLSsJICBi cy0+cHJpbnQgPSAxOwotIAotLSAgLyogRGVsYXkgdGhpcyBjYWxsIHdoaWNoIHdvdWxkIGJyZWFr IHRoZSBBTExfQlBfTE9DQVRJT05TIGl0ZXJhdGlvbiBhYm92ZS4gICovCi0tICBpZiAodXBkYXRl X2xvY2F0aW9ucykKLS0gICAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0ICgwKTsKLSsJICBp ZiAoIWJwc3RhdF9jaGVja193YXRjaHBvaW50IChicykpCi0rCSAgICB7Ci0rCSAgICAgIC8qIEVu c3VyZSBicHN0YXRfZXhwbGFpbnNfc2lnbmFsIHN0YXlzIGZhbHNlIGlmIHRoaXMgQkwgY291bGQg bm90IGJlCi0rCQkgdGhlIGNhdXNlIG9mIHRoaXMgdHJhcC4gICovCi0rCi0rCSAgICAgIGdkYl9h c3NlcnQgKGJzLT5wcmludF9pdCA9PSBwcmludF9pdF9ub29wKTsKLSsJICAgICAgZ2RiX2Fzc2Vy dCAoIWJzLT5zdG9wKTsKLSsJICAgICAgeGZyZWUgKGJzKTsKLSsJICAgICAgYnMgPSBic19wcmV2 OwotKwkgICAgICBicy0+bmV4dCA9IE5VTEw7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQot KwotKwkgIGlmIChiLT50eXBlID09IGJwX3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292 ZXJsYXlfZXZlbnQKLSsJICAgICAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX21hc3RlciB8fCBi LT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpCi0rCSAgICAvKiBXZSBkbyBub3Qgc3RvcCBm b3IgdGhlc2UuICAqLwotKwkgICAgYnMtPnN0b3AgPSAwOwotKwkgIGVsc2UKLSsJICAgIGJwc3Rh dF9jaGVja19icmVha3BvaW50X2NvbmRpdGlvbnMgKGJzLCBwdGlkKTsKLSsJCi0rCSAgaWYgKGJz LT5zdG9wKQotKwkgICAgewotKwkgICAgICArKyhiLT5oaXRfY291bnQpOwotKwotKwkgICAgICAv KiBXZSB3aWxsIHN0b3AgaGVyZSAqLwotKwkgICAgICBpZiAoYi0+ZGlzcG9zaXRpb24gPT0gZGlz cF9kaXNhYmxlKQotKwkJewotKwkJICBpZiAoYi0+ZW5hYmxlX3N0YXRlICE9IGJwX3Blcm1hbmVu dCkKLSsJCSAgICBiLT5lbmFibGVfc3RhdGUgPSBicF9kaXNhYmxlZDsKLSsJCSAgdXBkYXRlX2ds b2JhbF9sb2NhdGlvbl9saXN0ICgwKTsKLSsJCX0KLSsJICAgICAgaWYgKGItPnNpbGVudCkKLSsJ CWJzLT5wcmludCA9IDA7Ci0rCSAgICAgIGJzLT5jb21tYW5kcyA9IGItPmNvbW1hbmRzOwotKwkg ICAgICBpZiAoYnMtPmNvbW1hbmRzCi0rCQkgICYmIChzdHJjbXAgKCJzaWxlbnQiLCBicy0+Y29t bWFuZHMtPmxpbmUpID09IDAKLSsJCSAgICAgIHx8ICh4ZGJfY29tbWFuZHMgJiYgc3RyY21wICgi USIsIGJzLT5jb21tYW5kcy0+bGluZSkgPT0gMCkpKQotKwkJewotKwkJICBicy0+Y29tbWFuZHMg PSBicy0+Y29tbWFuZHMtPm5leHQ7Ci0rCQkgIGJzLT5wcmludCA9IDA7Ci0rCQl9Ci0rCSAgICAg IGJzLT5jb21tYW5kcyA9IGNvcHlfY29tbWFuZF9saW5lcyAoYnMtPmNvbW1hbmRzKTsKLSsJICAg IH0KLSsKLSsJICAvKiBQcmludCBub3RoaW5nIGZvciB0aGlzIGVudHJ5IGlmIHdlIGRvbnQgc3Rv cCBvciBpZiB3ZSBkb250IHByaW50LiAgKi8KLSsJICBpZiAoYnMtPnN0b3AgPT0gMCB8fCBicy0+ cHJpbnQgPT0gMCkKLSsJICAgIGJzLT5wcmludF9pdCA9IHByaW50X2l0X25vb3A7Ci0rCX0KLSsg ICAgfQotIAotICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChicF9sb2NhdGlvbl9wLCBtb3Jp YnVuZF9sb2NhdGlvbnMsIGl4LCBsb2MpOyArK2l4KQotICAgICB7Ci0tLS0gLi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2NvbmRicmVhay5leHAJMjAwOS0wMS0wMyAwNjo1ODowMy4wMDAwMDAwMDAg KzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29uZGJyZWFrLmV4cAkyMDA5LTEy LTE0IDAwOjI3OjIxLjAwMDAwMDAwMCArMDEwMAotQEAgLTY4LDggKzY4LDEyIEBAIHNldCBicF9s b2NhdGlvbjEgIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICIKLSBzZXQgYnBfbG9jYXRpb242ICBbZ2Ri X2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgNiBoZXJlIl0KLSBzZXQgYnBfbG9jYXRp b244ICBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFrcG9pbnQgOCBoZXJlIiAkc3JjZmls ZTFdCi0gc2V0IGJwX2xvY2F0aW9uOSAgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3Bv aW50IDkgaGVyZSIgJHNyY2ZpbGUxXQotK3NldCBicF9sb2NhdGlvbjEzIFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJzZXQgYnJlYWtwb2ludCAxMyBoZXJlIiAkc3JjZmlsZTFdCi0rc2V0IGJwX2xvY2F0 aW9uMTQgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDE0IGhlcmUiICRzcmNm aWxlMV0KLSBzZXQgYnBfbG9jYXRpb24xNSBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJyZWFr cG9pbnQgMTUgaGVyZSIgJHNyY2ZpbGUxXQotIHNldCBicF9sb2NhdGlvbjE2IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJzZXQgYnJlYWtwb2ludCAxNiBoZXJlIiAkc3JjZmlsZTFdCi0rc2V0IGJwX2xv Y2F0aW9uMTcgW2dkYl9nZXRfbGluZV9udW1iZXIgInNldCBicmVha3BvaW50IDE3IGhlcmUiICRz cmNmaWxlMV0KLStzZXQgYnBfbG9jYXRpb24xOCBbZ2RiX2dldF9saW5lX251bWJlciAic2V0IGJy ZWFrcG9pbnQgMTggaGVyZSIgJHNyY2ZpbGUxXQotIAotICMKLSAjIHRlc3QgYnJlYWsgYXQgZnVu Y3Rpb24KLUBAIC0xMTAsMTUgKzExNCwyOSBAQCBnZGJfdGVzdCAiYnJlYWsgbWFya2VyMiBpZiAo YT09NDMpIiBcCi0gICAgICJCcmVha3BvaW50LiphdC4qIGZpbGUgLiokc3JjZmlsZTEsIGxpbmUu KiIKLSAKLSAjCi0rIyBDaGVjayBicmVhayBpbnZvbHZpbmcgaW5mZXJpb3IgZnVuY3Rpb24gY2Fs bC4KLSsjIEVuc3VyZSB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYWRkaXRpb25hbCBicmVha3BvaW50 IHdpdGggaGlnaGVyIFZNQS4KLSsjCi0rZ2RiX3Rlc3QgImJyZWFrIG1hcmtlcjMgaWYgKG11bHRp X2xpbmVfaWZfY29uZGl0aW9uYWwoMSwxLDEpPT0wKSIgXAotKyAgICAiQnJlYWtwb2ludC4qYXQu KiBmaWxlIC4qJHNyY2ZpbGUxLCBsaW5lLioiCi0rZ2RiX3Rlc3QgImJyZWFrIG1hcmtlcjQiIFwK LSsgICAgIkJyZWFrcG9pbnQuKmF0LiogZmlsZSAuKiRzcmNmaWxlMSwgbGluZS4qIgotKwotKyMK LSAjIGNoZWNrIHRvIHNlZSB3aGF0IGJyZWFrcG9pbnRzIGFyZSBzZXQKLSAjCi0gCi0gaWYgeyRo cF9hQ0NfY29tcGlsZXJ9IHsKLSAgICAgc2V0IG1hcmtlcjFfcHJvdG8gIlxcKHZvaWRcXCkiCi0g ICAgIHNldCBtYXJrZXIyX3Byb3RvICJcXChpbnRcXCkiCi0rICAgICMgTm90IGNoZWNrZWQuCi0r ICAgIHNldCBtYXJrZXIzX3Byb3RvICJcXChjaGFyIFxcKiwgY2hhciBcXCpcXCkiCi0rICAgIHNl dCBtYXJrZXI0X3Byb3RvICJcXChsb25nXFwpIgotIH0gZWxzZSB7Ci0gICAgIHNldCBtYXJrZXIx X3Byb3RvICIiCi0gICAgIHNldCBtYXJrZXIyX3Byb3RvICIiCi0rICAgIHNldCBtYXJrZXIzX3By b3RvICIiCi0rICAgIHNldCBtYXJrZXI0X3Byb3RvICIiCi0gfQotIAotIGdkYl90ZXN0ICJpbmZv IGJyZWFrIiBcCi1AQCAtMTI5LDcgKzE0NywxMCBAQCBnZGJfdGVzdCAiaW5mbyBicmVhayIgXAot IFxbMC05XF0rXFtcdCBcXSticmVha3BvaW50ICAgICBrZWVwIHkuKiBpbiBtYWluIGF0IC4qJHNy Y2ZpbGU6JGJwX2xvY2F0aW9uMS4qCi0gXFtcdCBcXStzdG9wIG9ubHkgaWYgXFwoMT09MVxcKS4q Ci0gXFswLTlcXStcW1x0IFxdK2JyZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1hcmtlcjIkbWFy a2VyMl9wcm90byBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uOHwkYnBfbG9jYXRpb245KS4q Ci0tXFtcdCBcXStzdG9wIG9ubHkgaWYgXFwoYT09NDNcXCkuKiIgXAotK1xbXHQgXF0rc3RvcCBv bmx5IGlmIFxcKGE9PTQzXFwpLioKLStcWzAtOVxdK1xbXHQgXF0rYnJlYWtwb2ludCAgICAga2Vl cCB5LiogaW4gbWFya2VyMyRtYXJrZXIzX3Byb3RvIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRp b24xN3wkYnBfbG9jYXRpb24xOCkuKgotK1xbXHQgXF0rc3RvcCBvbmx5IGlmIFxcKG11bHRpX2xp bmVfaWZfY29uZGl0aW9uYWxcXCgxLDEsMVxcKT09MFxcKS4qCi0rXFswLTlcXStcW1x0IFxdK2Jy ZWFrcG9pbnQgICAgIGtlZXAgeS4qIGluIG1hcmtlcjQkbWFya2VyNF9wcm90byBhdCAuKiRzcmNm aWxlMTooJGJwX2xvY2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpLioiIFwKLSAgICAgImJyZWFrcG9p bnQgaW5mbyIKLSAKLSAKLUBAIC0yMjAsMyArMjQxLDIzIEBAIGdkYl9leHBlY3QgewotIAlmYWls ICIodGltZW91dCkgcnVuIHVudGlsIGJyZWFrcG9pbnQgYXQgbWFya2VyMiIKLSAgICAgfQotIH0K LSsKLStzZXQgdGVzdCAicnVuIHVudGlsIGJyZWFrcG9pbnQgYXQgbWFya2VyMyIKLStnZGJfdGVz dF9tdWx0aXBsZSAiY29udGludWUiICR0ZXN0IHsKLSsgICAgLXJlICJDb250aW51aW5nXFwuLipC cmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXIzIFxcKGE9JGhleCBcInN0YWNrXCIsIGI9JGhleCBc InRyYWNlXCJcXCkgYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjE3fCRicF9sb2NhdGlvbjE4 KS4qKCRicF9sb2NhdGlvbjE3fCRicF9sb2NhdGlvbjE4KVxbXHQgXF0rLiokZ2RiX3Byb21wdCAk IiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFr cG9pbnQgXFswLTlcXSssICRoZXggaW4gbWFya2VyMyBcXChhPSRoZXggXCJzdGFja1wiLCBiPSRo ZXggXCJ0cmFjZVwiXFwpIGF0IC4qJHNyY2ZpbGUxOigkYnBfbG9jYXRpb24xN3wkYnBfbG9jYXRp b24xOCkuKigkYnBfbG9jYXRpb24xN3wkYnBfbG9jYXRpb24xOClcW1x0IFxdKy4qJGdkYl9wcm9t cHQgJCIgewotKwl4ZmFpbCAkdGVzdAotKyAgICB9Ci0rfQotKwotK3NldCB0ZXN0ICJydW4gdW50 aWwgYnJlYWtwb2ludCBhdCBtYXJrZXI0IgotK2dkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIg JHRlc3QgewotKyAgICAtcmUgIkNvbnRpbnVpbmdcXC4uKkJyZWFrcG9pbnQgXFswLTlcXSssIG1h cmtlcjQgXFwoZD0xNzc2MDE5NzZcXCkgYXQgLiokc3JjZmlsZTE6KCRicF9sb2NhdGlvbjEzfCRi cF9sb2NhdGlvbjE0KS4qKCRicF9sb2NhdGlvbjEzfCRicF9sb2NhdGlvbjE0KVxbXHQgXF0rLiok Z2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIkNvbnRpbnVp bmdcXC4uKkJyZWFrcG9pbnQgXFswLTlcXSssICRoZXggaW4gbWFya2VyNCBcXChkPTE3NzYwMTk3 NlxcKSBhdCAuKiRzcmNmaWxlMTooJGJwX2xvY2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpLiooJGJw X2xvY2F0aW9uMTN8JGJwX2xvY2F0aW9uMTQpXFtcdCBcXSsuKiRnZGJfcHJvbXB0ICQiIHsKLSsJ eGZhaWwgJHRlc3QKLSsgICAgfQotK30KCmRpZmYgLS1naXQgYS9nZGItYno1Mzk1OTAtZ251LWlm dW5jLnBhdGNoIGIvZ2RiLWJ6NTM5NTkwLWdudS1pZnVuYy5wYXRjaAppbmRleCAyZjFiODBiLi5m YjRmNTZkIDEwMDY0NAotLS0gYS9nZGItYno1Mzk1OTAtZ251LWlmdW5jLnBhdGNoCisrKyBiL2dk Yi1iejUzOTU5MC1nbnUtaWZ1bmMucGF0Y2gKQEAgLTMyLDExICszMiwxMSBAQCBnZGIvdGVzdHN1 aXRlLwogCSogZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jLCBnZGIuYmFzZS9nbnUtaWZ1bmMuYywK IAlnZGIuYmFzZS9nbnUtaWZ1bmMuZXhwOiBOZXcuCiAKLUluZGV4OiBnZGItNy4wL2dkYi9lbGZy ZWFkLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4wLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDA5LTExLTI1IDEwOjI0OjQ1LjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAvZ2RiL2VsZnJlYWQuYwkyMDA5LTExLTI1IDEwOjI1 OjUwLjAwMDAwMDAwMCArMDEwMAotQEAgLTE2OCw3ICsxNjgsOCBAQCByZWNvcmRfbWluaW1hbF9z eW1ib2wgKGNoYXIgKm5hbWUsIENPUkVfCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9lbGZyZWFkLmMJMjAxMC0wMS0xNSAxMTo0NTozNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9lbGZyZWFkLmMJMjAxMC0wMS0xNSAxMjoxNzoxNi4wMDAwMDAw MDAgKzAxMDAKK0BAIC0xODQsNyArMTg0LDggQEAgcmVjb3JkX21pbmltYWxfc3ltYm9sIChjb25z dCBjaGFyICpuYW1lLAogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZp bGVfYXJjaCAob2JqZmlsZSk7CiAgCkBAIC00NSw4ICs0NSw4IEBAIEluZGV4OiBnZGItNy4wL2dk Yi9lbGZyZWFkLmMKICsgICAgICB8fCBtc190eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKICAg ICAgYWRkcmVzcyA9IGdkYmFyY2hfc21hc2hfdGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNz KTsKICAKLSAgIHJldHVybiBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9hbmRfaW5mbwotQEAg LTM3Myw3ICszNzQsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZQorICAgcmV0dXJuIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9sX2Z1bGwgKG5hbWUsIG5hbWVf bGVuLCBjb3B5X25hbWUsIGFkZHJlc3MsCitAQCAtMzkzLDcgKzM5NCwxMCBAQCBlbGZfc3ltdGFi X3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCiAgCSAgICB7CiAgCSAgICAgIGlmIChzeW0t PmZsYWdzICYgKEJTRl9HTE9CQUwgfCBCU0ZfV0VBSykpCiAgCQl7CkBAIC01OCwxMSArNTgsMTEg QEAgSW5kZXg6IGdkYi03LjAvZ2RiL2VsZnJlYWQuYwogIAkJfQogIAkgICAgICBlbHNlIGlmICgo c3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQogIAkJICAgICAgIHx8 ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKLUluZGV4OiBnZGItNy4wL2dkYi9nZGJ0eXBlcy5j CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAub3JpZy9nZGIvZ2RidHlwZXMuYwkyMDA5LTExLTI1IDEwOjI0OjQ3LjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjAvZ2RiL2dkYnR5cGVzLmMJMjAwOS0xMS0yNSAxMDoyNDo1 Ni4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xOTA0LDYgKzE5MDQsOCBAQCBpbml0X3R5cGUgKGVudW0g dHlwZV9jb2RlIGNvZGUsIGludCBsZW5nCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dk Yi9nZGJ0eXBlcy5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvZ2RidHlwZXMuYwkyMDEwLTAxLTE1IDEyOjE2OjQ5LjAwMDAw MDAwMCArMDEwMAorQEAgLTE5NDYsNiArMTk0Niw4IEBAIGluaXRfdHlwZSAoZW51bSB0eXBlX2Nv ZGUgY29kZSwgaW50IGxlbmcKICAgICAgVFlQRV9OT1RURVhUICh0eXBlKSA9IDE7CiAgICBpZiAo ZmxhZ3MgJiBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UpCiAgICAgIFRZUEVfRklYRURfSU5TVEFO Q0UgKHR5cGUpID0gMTsKQEAgLTcxLDcgKzcxLDcgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2dkYnR5 cGVzLmMKICAKICAgIGlmIChuYW1lKQogICAgICBUWVBFX05BTUUgKHR5cGUpID0gb2JzYXZlc3Ry aW5nIChuYW1lLCBzdHJsZW4gKG5hbWUpLAotQEAgLTM3NjIsNiArMzc2NCw4IEBAIGdkYnR5cGVz X3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmEKK0BAIC0zODQ2LDYgKzM4NDgsOCBAQCBn ZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhCiAgICAgID0gbG9va3VwX3Bv aW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOwogICAgYnVpbHRpbl90eXBl LT5idWlsdGluX2Z1bmNfcHRyCiAgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9va3VwX2Z1 bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7CkBAIC04MCw3ICs4MCw3 IEBAIEluZGV4OiBnZGItNy4wL2dkYi9nZGJ0eXBlcy5jCiAgCiAgICAvKiBUaGlzIHR5cGUgcmVw cmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCiAgICBidWlsdGluX3R5cGUtPmlu dGVybmFsX2ZuCi1AQCAtMzg3OCw2ICszODgyLDExIEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCitAQCAtMzk2Miw2ICszOTY2LDExIEBAIG9iamZpbGVfdHlwZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUpCiAgCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZv PiIsIG9iamZpbGUpOwogICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVn X3RleHRfc3ltYm9sKQogICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7CkBAIC05Miwx MSArOTIsMTEgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2dkYnR5cGVzLmMKICAgIG9iamZpbGVfdHlw ZS0+bm9kZWJ1Z19kYXRhX3N5bWJvbAogICAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwK ICAJCSBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKLUluZGV4 OiBnZGItNy4wL2dkYi9nZGJ0eXBlcy5oCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv Z2RidHlwZXMuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAub3JpZy9nZGIvZ2RidHlwZXMuaAky MDA5LTExLTI1IDEwOjI0OjQ4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAvZ2RiL2dkYnR5 cGVzLmgJMjAwOS0xMS0yNSAxMDoyNToxNy4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODcsNiArMTg3 LDcgQEAgZW51bSB0eXBlX2ZsYWdfdmFsdWUKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcv Z2RiL2dkYnR5cGVzLmgJMjAxMC0wMS0xNSAxMTo0OToyNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9nZGJ0eXBlcy5oCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAw MDAwMDAwICswMTAwCitAQCAtMTg4LDYgKzE4OCw3IEBAIGVudW0gdHlwZV9mbGFnX3ZhbHVlCiAg ICBUWVBFX0ZMQUdfRklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNSksCiAgICBUWVBFX0ZMQUdfU1RV Ql9TVVBQT1JURUQgPSAoMSA8PCAxNiksCiAgICBUWVBFX0ZMQUdfTk9UVEVYVCA9ICgxIDw8IDE3 KSwKQEAgLTEwNCw3ICsxMDQsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvZ2RidHlwZXMuaAogIAog ICAgLyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcuICAqLwogICAgVFlQRV9GTEFHX01JTiA9IFRZ UEVfRkxBR19VTlNJR05FRAotQEAgLTI5Miw2ICsyOTMsMTIgQEAgZW51bSB0eXBlX2luc3RhbmNl X2ZsYWdfdmFsdWUKK0BAIC0yOTMsNiArMjk0LDEyIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX05PVFRFWFQodCkJCShUWVBFX01BSU5fVFlQRSAodCkt PmZsYWdfbm90dGV4dCkKICAKQEAgLTExNyw3ICsxMTcsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIv Z2RidHlwZXMuaAogIC8qIFR5cGUgb3duZXIuICBJZiBUWVBFX09CSkZJTEVfT1dORUQgaXMgdHJ1 ZSwgdGhlIHR5cGUgaXMgb3duZWQgYnkKICAgICB0aGUgb2JqZmlsZSByZXRyaWV2ZWQgYXMgVFlQ RV9PQkpGSUxFLiAgT3RoZXJ3ZWlzZSwgdGhlIHR5cGUgaXMKICAgICBvd25lZCBieSBhbiBhcmNo aXRlY3R1cmU7IFRZUEVfT0JKRklMRSBpcyBOVUxMIGluIHRoaXMgY2FzZS4gICovCi1AQCAtNDI3 LDYgKzQzNCw3IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC00NDcsNiArNDU0LDcgQEAgc3RydWN0 IG1haW5fdHlwZQogICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsKICAgIHVuc2lnbmVk IGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX25vdHRl eHQgOiAxOwpAQCAtMTI1LDcgKzEyNSw3IEBAIEluZGV4OiBnZGItNy4wL2dkYi9nZGJ0eXBlcy5o CiAgICB1bnNpZ25lZCBpbnQgZmxhZ19maXhlZF9pbnN0YW5jZSA6IDE7CiAgICB1bnNpZ25lZCBp bnQgZmxhZ19vYmpmaWxlX293bmVkIDogMTsKICAgIHVuc2lnbmVkIGludCBmbGFnX2Rpc2NhcmRh YmxlIDogMTsKLUBAIC0xMTQ0LDYgKzExNTIsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQorQEAg LTEyNTAsNiArMTI1OCwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCiAgICAgICAoKikgKCkgY2Fu IHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4gICovCiAgICBzdHJ1Y3QgdHlw ZSAqYnVpbHRpbl9mdW5jX3B0cjsKICAKQEAgLTEzNiw3ICsxMzYsNyBAQCBJbmRleDogZ2RiLTcu MC9nZGIvZ2RidHlwZXMuaAogIAogICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KICAK LUBAIC0xMTg2LDYgKzExOTgsNyBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCitAQCAtMTI5Miw2ICsx MzA0LDcgQEAgc3RydWN0IG9iamZpbGVfdHlwZQogIAogICAgLyogVHlwZXMgdXNlZCBmb3Igc3lt Ym9scyB3aXRoIG5vIGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KICAgIHN0cnVjdCB0eXBlICpub2Rl YnVnX3RleHRfc3ltYm9sOwpAQCAtMTQ0LDEwICsxNDQsMTAgQEAgSW5kZXg6IGdkYi03LjAvZ2Ri L2dkYnR5cGVzLmgKICAgIHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOwogICAgc3Ry dWN0IHR5cGUgKm5vZGVidWdfdW5rbm93bl9zeW1ib2w7CiAgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1 Z190bHNfc3ltYm9sOwotSW5kZXg6IGdkYi03LjAvZ2RiL2luZmNhbGwuYworSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL2luZmNhbGwuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAub3Jp Zy9nZGIvaW5mY2FsbC5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAwMDAwICswMTAwCi0rKysg Z2RiLTcuMC9nZGIvaW5mY2FsbC5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAw CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9pbmZjYWxsLmMJMjAxMC0wMS0wMSAw ODozMTozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9pbmZj YWxsLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yODYsNiArMjg2 LDI3IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGkKICAgIGVsc2UK ICAgICAgZXJyb3IgKF8oIkludmFsaWQgZGF0YSB0eXBlIGZvciBmdW5jdGlvbiB0byBiZSBjYWxs ZWQuIikpOwpAQCAtMTc2LDEwICsxNzYsMTAgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL2luZmNhbGwu YwogICAgaWYgKHJldHZhbF90eXBlICE9IE5VTEwpCiAgICAgICpyZXR2YWxfdHlwZSA9IHZhbHVl X3R5cGU7CiAgICByZXR1cm4gZnVuYWRkciArIGdkYmFyY2hfZGVwcmVjYXRlZF9mdW5jdGlvbl9z dGFydF9vZmZzZXQgKGdkYmFyY2gpOwotSW5kZXg6IGdkYi03LjAvZ2RiL2xpbmVzcGVjLmMKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9saW5lc3BlYy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMC5vcmlnL2dkYi9saW5lc3BlYy5jCTIwMDktMTEtMjUgMTA6MjQ6NDUuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMC9nZGIvbGluZXNwZWMuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAw MDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbGluZXNwZWMu YwkyMDEwLTAxLTEyIDA2OjQ4OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAx MDAxMTUvZ2RiL2xpbmVzcGVjLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAK IEBAIC00MCw2ICs0MCw3IEBACiAgI2luY2x1ZGUgImludGVycHMuaCIKICAjaW5jbHVkZSAibWkv bWktY21kcy5oIgpAQCAtMTg4LDcgKzE4OCw3IEBAIEluZGV4OiBnZGItNy4wL2dkYi9saW5lc3Bl Yy5jCiAgCiAgLyogV2Ugc2hhcmUgdGhpcyBvbmUgd2l0aCBzeW10YWIuYywgYnV0IGl0IGlzIG5v dCBleHBvcnRlZCB3aWRlbHkuICovCiAgCi1AQCAtMTg3NSw2ICsxODc2LDIyIEBAIG1pbnN5bV9m b3VuZCAoaW50IGZ1bmZpcnN0bGluZSwgc3RydWN0IG0KK0BAIC0xODY3LDYgKzE4NjgsMjIgQEAg bWluc3ltX2ZvdW5kIChpbnQgZnVuZmlyc3RsaW5lLCBzdHJ1Y3QgbQogICAgcGMgPSBnZGJhcmNo X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMuc2Fsc1swXS5wYywKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKQEAgLTIx MSwxMCArMjExLDEwIEBAIEluZGV4OiBnZGItNy4wL2dkYi9saW5lc3BlYy5jCiAgICBpZiAocGMg IT0gdmFsdWVzLnNhbHNbMF0ucGMpCiAgICAgIHZhbHVlcy5zYWxzWzBdID0gZmluZF9wY19zZWN0 X2xpbmUgKHBjLCBOVUxMLCAwKTsKICAKLUluZGV4OiBnZGItNy4wL2dkYi9taW5zeW1zLmMKK0lu ZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9taW5zeW1zLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLm9yaWcvZ2RiL21pbnN5bXMuYwkyMDA5LTExLTI1IDEwOjI0OjQ3LjAwMDAwMDAwMCAr MDEwMAotKysrIGdkYi03LjAvZ2RiL21pbnN5bXMuYwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAw MDAwMCArMDEwMAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvbWluc3ltcy5jCTIw MTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvbWluc3ltcy5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCiBAQCAt MzMxLDggKzMzMSw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICoK ICAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNoX25leHQpCiAgCSAgICB7CkBAIC0yMjcs NyArMjI3LDcgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL21pbnN5bXMuYwogIAkJewogIAkJICBzd2l0 Y2ggKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkpCiAgCQkgICAgewotQEAgLTY5OSw2ICs3MDAsMTYg QEAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcAorQEAgLTY5OCw2ICs2 OTksMTYgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcAogIHsKICAg IHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwog IH0KQEAgLTI0NCw3ICsyNDQsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvbWluc3ltcy5jCiAgDAog IAogIC8qIFJldHVybiBsZWFkaW5nIHN5bWJvbCBjaGFyYWN0ZXIgZm9yIGEgQkZELiBJZiBCRkQg aXMgTlVMTCwKLUBAIC03MzgsNiArNzQ5LDcgQEAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wg KGNvbnN0IGNoYXIgKgorQEAgLTczNyw2ICs3NDgsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5 bWJvbCAoY29uc3QgY2hhciAqCiAgICBzd2l0Y2ggKG1zX3R5cGUpCiAgICAgIHsKICAgICAgY2Fz ZSBtc3RfdGV4dDoKQEAgLTI1Miw3ICsyNTIsNyBAQCBJbmRleDogZ2RiLTcuMC9nZGIvbWluc3lt cy5jCiAgICAgIGNhc2UgbXN0X2ZpbGVfdGV4dDoKICAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBv bGluZToKICAgICAgICBzZWN0aW9uID0gU0VDVF9PRkZfVEVYVCAob2JqZmlsZSk7Ci1AQCAtMTE4 NCw3ICsxMTk2LDggQEAgZmluZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCAoc3RydWN0IGZyYQor QEAgLTEyMDIsNyArMTIxNCw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQgKHN0cnVj dCBmcmEKICAgICAgewogICAgICAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5bWJvbCkKICAg ICAgICB7CkBAIC0yNjIsMTEgKzI2MiwxMSBAQCBJbmRleDogZ2RiLTcuMC9nZGIvbWluc3ltcy5j CiAgCSAgICAmJiBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpLAogIAkJICAg ICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHRzeW1ib2wpKSA9PSAwKQogIAkgIHJldHVybiBTWU1C T0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7Ci1JbmRleDogZ2RiLTcuMC9nZGIvcGFyc2UuYwor SW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3BhcnNlLmMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4wLm9yaWcvZ2RiL3BhcnNlLmMJMjAwOS0xMS0yNSAxMDoyNDo0Ny4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4wL2dkYi9wYXJzZS5jCTIwMDktMTEtMjUgMTA6MjY6MTYuMDAwMDAwMDAw ICswMTAwCi1AQCAtNTE3LDYgKzUxNywxMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1p bmltYWxfc3ltYm9sCistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9wYXJzZS5jCTIw MTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvcGFyc2UuYwkyMDEwLTAxLTE1IDEyOjE2OjQ5LjAwMDAwMDAwMCArMDEwMAorQEAgLTUx Niw2ICs1MTYsMTEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbAog IAl3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4 dF9zeW1ib2wpOwogICAgICAgIGJyZWFrOwogIApAQCAtMjc4LDI1ICsyNzgsMjUgQEAgSW5kZXg6 IGdkYi03LjAvZ2RiL3BhcnNlLmMKICAgICAgY2FzZSBtc3RfZGF0YToKICAgICAgY2FzZSBtc3Rf ZmlsZV9kYXRhOgogICAgICBjYXNlIG1zdF9ic3M6Ci1JbmRleDogZ2RiLTcuMC9nZGIvc29saWIt c3ZyNC5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc29saWItc3ZyNC5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMC5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0xMS0yNSAxMDoy NDo0OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0x MS0yNSAxMDoyNjo0MS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjQyLDcgKzEyNDIsOCBAQCBzdnI0 X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUgKENPUkVfQUREUiBwCi0gewotICAgcmV0dXJuICgocGMg Pj0gaW50ZXJwX3RleHRfc2VjdF9sb3cgJiYgcGMgPCBpbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCi0g CSAgfHwgKHBjID49IGludGVycF9wbHRfc2VjdF9sb3cgJiYgcGMgPCBpbnRlcnBfcGx0X3NlY3Rf aGlnaCkKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDEw LTAxLTE1IDEyOjE2OjQxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3NvbGliLXN2cjQuYwkyMDEwLTAxLTE1IDEyOjE3OjQwLjAwMDAwMDAwMCArMDEwMAorQEAg LTEyNTcsNyArMTI1Nyw4IEBAIHN2cjRfaW5fZHluc3ltX3Jlc29sdmVfY29kZSAoQ09SRV9BRERS IHAKKyAJICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCisgCSAgfHwgKHBj ID49IGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cKKyAJICAgICAgJiYgcGMgPCBpbmZvLT5pbnRl cnBfcGx0X3NlY3RfaGlnaCkKIC0JICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpKTsKICsJ ICB8fCBpbl9wbHRfc2VjdGlvbiAocGMsIE5VTEwpCiArCSAgfHwgaW5fZ251X2lmdW5jX3N0dWIg KHBjKSk7CiAgfQogIAogIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQs IGNvbXB1dGUgdGhlIGVudHJ5LXBvaW50Ci1JbmRleDogZ2RiLTcuMC9nZGIvc3ltbWlzYy5jCitJ bmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltbWlzYy5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMC5vcmlnL2dkYi9zeW1taXNjLmMJMjAwOS0xMS0yNSAxMDoyNDo0Ny4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4wL2dkYi9zeW1taXNjLmMJMjAwOS0xMS0yNSAxMDoyNDo1Ni4wMDAw MDAwMDAgKzAxMDAKLUBAIC0yODcsNiArMjg3LDkgQEAgZHVtcF9tc3ltYm9scyAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIAorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvc3ltbWlz Yy5jCTIwMTAtMDEtMTUgMDM6MjI6MzIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvc3ltbWlzYy5jCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAwICswMTAw CitAQCAtMjk0LDYgKzI5NCw5IEBAIGR1bXBfbXN5bWJvbHMgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLCAKICAJY2FzZSBtc3RfdGV4dDoKICAJICBtc190eXBlID0gJ1QnOwogIAkgIGJyZWFrOwpA QCAtMzA2LDExICszMDYsMTEgQEAgSW5kZXg6IGdkYi03LjAvZ2RiL3N5bW1pc2MuYwogIAljYXNl IG1zdF9zb2xpYl90cmFtcG9saW5lOgogIAkgIG1zX3R5cGUgPSAnUyc7CiAgCSAgYnJlYWs7Ci1J bmRleDogZ2RiLTcuMC9nZGIvc3ltdGFiLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi9zeW10YWIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAub3JpZy9nZGIvc3ltdGFiLmMJMjAw OS0xMS0yNSAxMDoyNDo0Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi9zeW10YWIu YwkyMDA5LTExLTI1IDEwOjI0OjU2LjAwMDAwMDAwMCArMDEwMAotQEAgLTMxNTUsNyArMzE1NSw3 IEBAIHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnUKKy0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmMJMjAxMC0wMS0x NSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zMjU3LDcgKzMyNTcsNyBAQCBzZWFyY2hf c3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51CiAgICB7bXN0X2ZpbGVfZGF0YSwgbXN0 X3NvbGliX3RyYW1wb2xpbmUsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKICAgIHN0YXRpYyBlbnVt IG1pbmltYWxfc3ltYm9sX3R5cGUgdHlwZXM0W10KICAgID0KQEAgLTMxOSwxMSArMzE5LDExIEBA IEluZGV4OiBnZGItNy4wL2dkYi9zeW10YWIuYwogICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBl IG91cnR5cGU7CiAgICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTI7CiAgICBlbnVt IG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTM7Ci1JbmRleDogZ2RiLTcuMC9nZGIvc3ltdGFi LmgKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zeW10YWIuaAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjAub3JpZy9nZGIvc3ltdGFiLmgJMjAwOS0xMS0yNSAxMDoyNDo0NS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi9zeW10YWIuaAkyMDA5LTExLTI1IDEwOjI0OjU2LjAw MDAwMDAwMCArMDEwMAotQEAgLTI3NSw2ICsyNzUsOCBAQCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5 cGUKKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTAtMDEtMTUg MDM6MjI6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3lt dGFiLmgJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yODAsNiArMjgw LDggQEAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlCiAgewogICAgbXN0X3Vua25vd24gPSAwLAkJ LyogVW5rbm93biB0eXBlLCB0aGUgZGVmYXVsdCAqLwogICAgbXN0X3RleHQsCQkJLyogR2VuZXJh bGx5IGV4ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zICovCkBAIC0zMzIsNyArMzMyLDcgQEAgSW5kZXg6 IGdkYi03LjAvZ2RiL3N5bXRhYi5oCiAgICBtc3RfZGF0YSwJCQkvKiBHZW5lcmFsbHkgaW5pdGlh bGl6ZWQgZGF0YSAqLwogICAgbXN0X2JzcywJCQkvKiBHZW5lcmFsbHkgdW5pbml0aWFsaXplZCBk YXRhICovCiAgICBtc3RfYWJzLAkJCS8qIEdlbmVyYWxseSBhYnNvbHV0ZSAobm9ucmVsb2NhdGFi bGUpICovCi1AQCAtMTE0OSw2ICsxMTUxLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbG9va3VwX21pbgorQEAgLTExNjMsNiArMTE2NSw4IEBAIGV4dGVybiBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKmxvb2t1cF9taW4KICAKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICps b29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUik7CiAgCkBAIC0zNDEsMTAgKzM0 MSwxMCBAQCBJbmRleDogZ2RiLTcuMC9nZGIvc3ltdGFiLmgKICBleHRlcm4gc3RydWN0IG1pbmlt YWxfc3ltYm9sCiAgICAqbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKENPUkVf QUREUiwgc3RydWN0IG9ial9zZWN0aW9uICopOwogIAotSW5kZXg6IGdkYi03LjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxpYi5jCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu MC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy1saWIuYwkyMDA5LTExLTI1IDEwOjI0 OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMJMjAxMC0wMS0xNSAxMjoxNjo0OS4wMDAwMDAwMDAg KzAxMDAKIEBAIC0wLDAgKzEsNDUgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMzkxLDEwICszOTEsMTAgQEAgSW5kZXg6IGdkYi03 LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMtbGliLmMKICsKICsgIHJldHVybiBm aW5hbDsKICt9Ci1JbmRleDogZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVu Yy5jCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2du dS1pZnVuYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1p ZnVuYy5jCTIwMDktMTEtMjUgMTA6MjQ6NTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5jCTIwMTAtMDEtMTUg MTI6MTY6NDkuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDM2IEBACiArLyogVGhpcyB0ZXN0 Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTQzMiwxMCArNDMy LDEwIEBAIEluZGV4OiBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMK ICsKICsgIHJldHVybiAwOwkvKiBicmVhay1hdC1leGl0ICovCiArfQotSW5kZXg6IGdkYi03LjAv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCitJbmRleDogZ2RiLTcuMC41MC4y MDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVuYy5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAkyMDA5LTExLTI1IDEw OjI0OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9nbnUtaWZ1bmMuZXhwCTIwMTAtMDEtMTUgMTI6MTY6NDkuMDAwMDAwMDAw ICswMTAwCiBAQCAtMCwwICsxLDcyIEBACiArIyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLWNjYWNoZS13b3JrYXJv dW5kLnBhdGNoIGIvZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjg2MTQ3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItY2NhY2hl LXdvcmthcm91bmQucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9tYWNzY3AuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21hY3NjcC5l eHAKK0BAIC0zMyw2ICszMywxNCBAQCBpZiBbdGVzdF9jb21waWxlcl9pbmZvIGdjYypdIHsKKyAg ICAgbGFwcGVuZCBvcHRpb25zIGFkZGl0aW9uYWxfZmxhZ3M9LWczCisgfQorIAorKyMgV29ya2Fy b3VuZCBjY2FjaGUgbWFraW5nIGxpbmVubyBub24temVybyBmb3IgY29tbWFuZC1saW5lIGRlZmlu aXRpb25zLgorK2lmIHtbZmluZF9nY2NdID09ICJnY2MiICYmIFtmaWxlIGV4ZWN1dGFibGUgIi91 c3IvYmluL2djYyJdfSB7CisrICAgIHNldCByZXN1bHQgW2NhdGNoICJleGVjIHdoaWNoIGdjYyIg b3V0cHV0XQorKyAgICBpZiB7JHJlc3VsdCA9PSAwICYmIFtzdHJpbmcgZmlyc3QgIi9jY2FjaGUv IiAkb3V0cHV0XSA+PSAtMX0geworKyAgICAgICBsYXBwZW5kIG9wdGlvbnMgImNvbXBpbGVyPS91 c3IvYmluL2djYyIKKysgICAgfQorK30KKysKKyAjIEdlbmVyYXRlIHRoZSBpbnRlcm1lZGlhdGUg b2JqZWN0IGZpbGUuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IERhcndpbiB0bworICMgaGF2ZSBhY2Nl c3MgdG8gdGhlIC5kZWJ1Z19tYWNpbmZvIHNlY3Rpb24uCisgaWYgIHtbZ2RiX2NvbXBpbGUgIiR7 c3JjZGlyfS8ke3N1YmRpcn0vbWFjc2NwMS5jIiAiJHtvYmpmaWxlfSIgXAoKZGlmZiAtLWdpdCBh L2dkYi1lbXB0eS1uYW1lc3BhY2UucGF0Y2ggYi9nZGItZW1wdHktbmFtZXNwYWNlLnBhdGNoCmlu ZGV4IGE4YmFmMDUuLjFhYTc2NTQgMTAwNjQ0Ci0tLSBhL2dkYi1lbXB0eS1uYW1lc3BhY2UucGF0 Y2gKKysrIGIvZ2RiLWVtcHR5LW5hbWVzcGFjZS5wYXRjaApAQCAtMSwxMCArMSwxMCBAQAotZ2Ri LwotMjAwOS0xMi0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotCi0JRml4IGNvbXBhdGliaWxpdHkgd2l0aCBHKystNC4xLgotCSogZHdhcmYycmVhZC5jIChw YXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUpOiBOZXcgdmFyaWFibGUgUEFSRU5UX05BTUUuCi0JSWdu b3JlIHBhcmVudCBuYW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgotCShwaHlzbmFtZV9wcmVmaXhf MSk6IElnbm9yZSBuYW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgorIyMjZ2RiLworIyMjMjAwOS0x Mi0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgorIyMjCisj IyMJRml4IGNvbXBhdGliaWxpdHkgd2l0aCBHKystNC4xLgorIyMjCSogZHdhcmYycmVhZC5jIChw YXJ0aWFsX2RpZV9wYXJlbnRfc2NvcGUpOiBOZXcgdmFyaWFibGUgUEFSRU5UX05BTUUuCisjIyMJ SWdub3JlIHBhcmVudCBuYW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgorIyMjCShwaHlzbmFtZV9w cmVmaXhfMSk6IElnbm9yZSBuYW1lc3BhY2VzIHdpdGggbmFtZSAiOjoiLgogCiBnZGIvdGVzdHN1 aXRlLwogMjAwOS0xMi0yMCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgpAQCAtMTIsMzkgKzEyLDM5IEBAIGdkYi90ZXN0c3VpdGUvCiAJKiBnZGIuZHdhcmYyL2R3 Mi1lbXB0eS1uYW1lc3BhY2UuZXhwLCBnZGIuZHdhcmYyL2R3Mi1lbXB0eS1uYW1lc3BhY2UuUzoK IAlOZXcuCiAKLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2FyZjJyZWFkLmMK LUBAIC0yMzU1LDExICsyMzU1LDE4IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3RydWN0 IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKLSAgICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdf aW50ZXJmYWNlX3R5cGUKLSAgICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfdW5pb25fdHlw ZSkKLSAgICAgewotKyAgICAgIGNoYXIgKnBhcmVudF9uYW1lID0gcGFyZW50LT5uYW1lOwotKwot KyAgICAgIC8qIEcrKyA0LjEgcHJvZHVjZWQgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FUX25h bWUgIjo6Ii4gICovCi0rICAgICAgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19uYW1lc3BhY2Ug JiYgcGFyZW50X25hbWUgIT0gTlVMTAotKyAgICAgICAgICAmJiBzdHJjbXAgKHBhcmVudF9uYW1l LCAiOjoiKSA9PSAwKQotKwlwYXJlbnRfbmFtZSA9IE5VTEw7Ci0rCi0gICAgICAgaWYgKGdyYW5k cGFyZW50X3Njb3BlID09IE5VTEwpCi0tCXBhcmVudC0+c2NvcGUgPSBwYXJlbnQtPm5hbWU7Ci0r CXBhcmVudC0+c2NvcGUgPSBwYXJlbnRfbmFtZTsKLSAgICAgICBlbHNlCi0gCXBhcmVudC0+c2Nv cGUgPSB0eXBlbmFtZV9jb25jYXQgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssIGdyYW5kcGFyZW50 X3Njb3BlLAotLQkJCQkJIHBhcmVudC0+bmFtZSwgY3UpOwotKwkJCQkJIHBhcmVudF9uYW1lLCBj dSk7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19lbnVtZXJhdGlv bl90eXBlKQotICAgICAvKiBFbnVtZXJhdG9ycyBzaG91bGQgbm90IGdldCB0aGUgbmFtZSBvZiB0 aGUgZW51bWVyYXRpb24gYXMgYSBwcmVmaXguICAqLwotQEAgLTkwMDgsNiArOTAxNSw5IEBAIHBo eXNuYW1lX3ByZWZpeF8xIChzdHJ1Y3QgdWlfZmlsZSAqYnVmLCBzdHJ1Y3QgZGllX2luZm8gKmRp ZSwKLSAJICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotIAkgIGlmIChuYW1lID09IE5V TEwpCi0gCSAgICBuYW1lID0gIihhbm9ueW1vdXMgbmFtZXNwYWNlKSI7Ci0rCSAgLyogRysrIDQu MSBwcm9kdWNlZCBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAiOjoiLiAgKi8KLSsJ ICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICI6OiIpID09IDApCi0rCSAgICBuYW1lID0gTlVMTDsK LSAJICBicmVhazsKLSAKLSAJY2FzZSBEV19UQUdfY2xhc3NfdHlwZToKKyMjIy0tLSBhL2dkYi9k d2FyZjJyZWFkLmMKKyMjIysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKKyMjI0BAIC0yMzU1LDExICsy MzU1LDE4IEBAIHBhcnRpYWxfZGllX3BhcmVudF9zY29wZSAoc3RydWN0IHBhcnRpYWxfZGllX2lu Zm8gKnBkaSwKKyMjIyAgICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfaW50ZXJmYWNlX3R5 cGUKKyMjIyAgICAgICB8fCBwYXJlbnQtPnRhZyA9PSBEV19UQUdfdW5pb25fdHlwZSkKKyMjIyAg ICAgeworIyMjKyAgICAgIGNoYXIgKnBhcmVudF9uYW1lID0gcGFyZW50LT5uYW1lOworIyMjKwor IyMjKyAgICAgIC8qIEcrKyA0LjEgcHJvZHVjZWQgRFdfVEFHX25hbWVzcGFjZSB3aXRoIERXX0FU X25hbWUgIjo6Ii4gICovCisjIyMrICAgICAgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19uYW1l c3BhY2UgJiYgcGFyZW50X25hbWUgIT0gTlVMTAorIyMjKyAgICAgICAgICAmJiBzdHJjbXAgKHBh cmVudF9uYW1lLCAiOjoiKSA9PSAwKQorIyMjKwlwYXJlbnRfbmFtZSA9IE5VTEw7CisjIyMrCisj IyMgICAgICAgaWYgKGdyYW5kcGFyZW50X3Njb3BlID09IE5VTEwpCisjIyMtCXBhcmVudC0+c2Nv cGUgPSBwYXJlbnQtPm5hbWU7CisjIyMrCXBhcmVudC0+c2NvcGUgPSBwYXJlbnRfbmFtZTsKKyMj IyAgICAgICBlbHNlCisjIyMgCXBhcmVudC0+c2NvcGUgPSB0eXBlbmFtZV9jb25jYXQgKCZjdS0+ Y29tcF91bml0X29ic3RhY2ssIGdyYW5kcGFyZW50X3Njb3BlLAorIyMjLQkJCQkJIHBhcmVudC0+ bmFtZSwgY3UpOworIyMjKwkJCQkJIHBhcmVudF9uYW1lLCBjdSk7CisjIyMgICAgIH0KKyMjIyAg IGVsc2UgaWYgKHBhcmVudC0+dGFnID09IERXX1RBR19lbnVtZXJhdGlvbl90eXBlKQorIyMjICAg ICAvKiBFbnVtZXJhdG9ycyBzaG91bGQgbm90IGdldCB0aGUgbmFtZSBvZiB0aGUgZW51bWVyYXRp b24gYXMgYSBwcmVmaXguICAqLworIyMjQEAgLTkwMDgsNiArOTAxNSw5IEBAIHBoeXNuYW1lX3By ZWZpeF8xIChzdHJ1Y3QgdWlfZmlsZSAqYnVmLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKyMjIyAJ ICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOworIyMjIAkgIGlmIChuYW1lID09IE5VTEwp CisjIyMgCSAgICBuYW1lID0gIihhbm9ueW1vdXMgbmFtZXNwYWNlKSI7CisjIyMrCSAgLyogRysr IDQuMSBwcm9kdWNlZCBEV19UQUdfbmFtZXNwYWNlIHdpdGggRFdfQVRfbmFtZSAiOjoiLiAgKi8K KyMjIysJICBlbHNlIGlmIChzdHJjbXAgKG5hbWUsICI6OiIpID09IDApCisjIyMrCSAgICBuYW1l ID0gTlVMTDsKKyMjIyAJICBicmVhazsKKyMjIyAKKyMjIyAJY2FzZSBEV19UQUdfY2xhc3NfdHlw ZToKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZW1w dHktbmFtZXNwYWNlLlMKIEBAIC0wLDAgKzEsMTA4IEBACgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRy YW4tY29tbW9uLXJlZHVjZS5wYXRjaCBiL2dkYi1mb3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUxMzE4MwotLS0gL2Rldi9udWxs CisrKyBiL2dkYi1mb3J0cmFuLWNvbW1vbi1yZWR1Y2UucGF0Y2gKQEAgLTAsMCArMSw1MDEgQEAK Ky0tLSBhL2dkYi9mLWxhbmcuYworKysrIGIvZ2RiL2YtbGFuZy5jCitAQCAtNTUsMjAgKzU1LDYg QEAgdHlwZWRlZiBzdHJ1Y3Qgc2F2ZWRfYmZfc3ltbnVtIFNBVkVEX0JGLCAqU0FWRURfQkZfUFRS OworIC8qIExvY2FsIGZ1bmN0aW9ucyAqLworIAorIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2Zf bGFuZ3VhZ2UgKHZvaWQpOworLSNpZiAwCistc3RhdGljIHZvaWQgY2xlYXJfZnVuY3Rpb25fbGlz dCAodm9pZCk7Cistc3RhdGljIGxvbmcgZ2V0X2JmX2Zvcl9mY24gKGxvbmcpOworLXN0YXRpYyB2 b2lkIGNsZWFyX2JmX2xpc3QgKHZvaWQpOworLXN0YXRpYyB2b2lkIHBhdGNoX2FsbF9jb21tb25z X2J5X25hbWUgKGNoYXIgKiwgQ09SRV9BRERSLCBpbnQpOworLXN0YXRpYyBTQVZFRF9GNzdfQ09N TU9OX1BUUiBmaW5kX2ZpcnN0X2NvbW1vbl9uYW1lZCAoY2hhciAqKTsKKy1zdGF0aWMgdm9pZCBh ZGRfY29tbW9uX2VudHJ5IChzdHJ1Y3Qgc3ltYm9sICopOworLXN0YXRpYyB2b2lkIGFkZF9jb21t b25fYmxvY2sgKGNoYXIgKiwgQ09SRV9BRERSLCBpbnQsIGNoYXIgKik7Cistc3RhdGljIFNBVkVE X0ZVTkNUSU9OICphbGxvY2F0ZV9zYXZlZF9mdW5jdGlvbl9ub2RlICh2b2lkKTsKKy1zdGF0aWMg U0FWRURfQkZfUFRSIGFsbG9jYXRlX3NhdmVkX2JmX25vZGUgKHZvaWQpOworLXN0YXRpYyBDT01N T05fRU5UUllfUFRSIGFsbG9jYXRlX2NvbW1vbl9lbnRyeV9ub2RlICh2b2lkKTsKKy1zdGF0aWMg U0FWRURfRjc3X0NPTU1PTl9QVFIgYWxsb2NhdGVfc2F2ZWRfZjc3X2NvbW1vbl9ub2RlICh2b2lk KTsKKy1zdGF0aWMgdm9pZCBwYXRjaF9jb21tb25fZW50cmllcyAoU0FWRURfRjc3X0NPTU1PTl9Q VFIsIENPUkVfQUREUiwgaW50KTsKKy0jZW5kaWYKKyAKKyBzdGF0aWMgdm9pZCBmX3ByaW50Y2hh ciAoaW50IGMsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqIHN0cmVhbSk7Cisg c3RhdGljIHZvaWQgZl9lbWl0X2NoYXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC00 MTksMTg1ICs0MDUsNyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQorICAgYWRkX2xh bmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsKKyB9CisgCistI2lmIDAKKy1zdGF0aWMgU0FWRURf QkZfUFRSCistYWxsb2NhdGVfc2F2ZWRfYmZfbm9kZSAodm9pZCkKKy17CistICBTQVZFRF9CRl9Q VFIgbmV3OworLQorLSAgbmV3ID0gKFNBVkVEX0JGX1BUUikgeG1hbGxvYyAoc2l6ZW9mIChTQVZF RF9CRikpOworLSAgcmV0dXJuIChuZXcpOworLX0KKy0KKy1zdGF0aWMgU0FWRURfRlVOQ1RJT04g KgorLWFsbG9jYXRlX3NhdmVkX2Z1bmN0aW9uX25vZGUgKHZvaWQpCisteworLSAgU0FWRURfRlVO Q1RJT04gKm5ldzsKKy0KKy0gIG5ldyA9IChTQVZFRF9GVU5DVElPTiAqKSB4bWFsbG9jIChzaXpl b2YgKFNBVkVEX0ZVTkNUSU9OKSk7CistICByZXR1cm4gKG5ldyk7CistfQorLQorLXN0YXRpYyBT QVZFRF9GNzdfQ09NTU9OX1BUUgorLWFsbG9jYXRlX3NhdmVkX2Y3N19jb21tb25fbm9kZSAodm9p ZCkKKy17CistICBTQVZFRF9GNzdfQ09NTU9OX1BUUiBuZXc7CistCistICBuZXcgPSAoU0FWRURf Rjc3X0NPTU1PTl9QVFIpIHhtYWxsb2MgKHNpemVvZiAoU0FWRURfRjc3X0NPTU1PTikpOworLSAg cmV0dXJuIChuZXcpOworLX0KKy0KKy1zdGF0aWMgQ09NTU9OX0VOVFJZX1BUUgorLWFsbG9jYXRl X2NvbW1vbl9lbnRyeV9ub2RlICh2b2lkKQorLXsKKy0gIENPTU1PTl9FTlRSWV9QVFIgbmV3Owor LQorLSAgbmV3ID0gKENPTU1PTl9FTlRSWV9QVFIpIHhtYWxsb2MgKHNpemVvZiAoQ09NTU9OX0VO VFJZKSk7CistICByZXR1cm4gKG5ldyk7CistfQorLSNlbmRpZgorLQorIFNBVkVEX0Y3N19DT01N T05fUFRSIGhlYWRfY29tbW9uX2xpc3QgPSBOVUxMOwkvKiBQdHIgdG8gMXN0IHNhdmVkIENPTU1P TiAgKi8KKy1TQVZFRF9GNzdfQ09NTU9OX1BUUiB0YWlsX2NvbW1vbl9saXN0ID0gTlVMTDsJLyog UHRyIHRvIGxhc3Qgc2F2ZWQgQ09NTU9OICAqLworLVNBVkVEX0Y3N19DT01NT05fUFRSIGN1cnJl bnRfY29tbW9uID0gTlVMTDsJLyogUHRyIHRvIGN1cnJlbnQgQ09NTU9OICovCistCistI2lmIDAK Ky1zdGF0aWMgU0FWRURfQkZfUFRSIHNhdmVkX2JmX2xpc3QgPSBOVUxMOwkvKiBQdHIgdG8gKC5i ZixmdW5jdGlvbikgCistCQkJCQkJICAgbGlzdCAqLworLXN0YXRpYyBTQVZFRF9CRl9QVFIgc2F2 ZWRfYmZfbGlzdF9lbmQgPSBOVUxMOwkvKiBQdHIgdG8gYWJvdmUgbGlzdCdzIGVuZCAqLworLXN0 YXRpYyBTQVZFRF9CRl9QVFIgY3VycmVudF9oZWFkX2JmX2xpc3QgPSBOVUxMOwkvKiBDdXJyZW50 IGhlYWQgb2YgYWJvdmUgbGlzdAorLQkJCQkJCQkgKi8KKy0KKy1zdGF0aWMgU0FWRURfQkZfUFRS IHRtcF9iZl9wdHI7CS8qIEdlbmVyaWMgdGVtcG9yYXJ5IGZvciB1c2UgCistCQkJCSAgIGluIG1h Y3JvcyAqLworLQorLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gc2ltcGx5IGVudGVycyBhIGdp dmVuIGNvbW1vbiBibG9jayBvbnRvIAorLSAgIHRoZSBnbG9iYWwgY29tbW9uIGJsb2NrIGNoYWlu ICovCistCistc3RhdGljIHZvaWQKKy1hZGRfY29tbW9uX2Jsb2NrIChjaGFyICpuYW1lLCBDT1JF X0FERFIgb2Zmc2V0LCBpbnQgc2VjbnVtLCBjaGFyICpmdW5jX3N0YWIpCisteworLSAgU0FWRURf Rjc3X0NPTU1PTl9QVFIgdG1wOworLSAgY2hhciAqYywgKmxvY2FsX2NvcHlfZnVuY19zdGFiOwor LQorLSAgLyogSWYgdGhlIENPTU1PTiBibG9jayB3ZSBhcmUgdHJ5aW5nIHRvIGFkZCBoYXMgYSBi bGFuayAKKy0gICAgIG5hbWUgKGkuZS4gIiNCTE5LX0NPTSIpIHRoZW4gd2Ugc2V0IGl0IHRvIF9f QkxBTksKKy0gICAgIGJlY2F1c2UgdGhlIGRhcm4gIiMiIGNoYXJhY3RlciBtYWtlcyBHREIncyBp bnB1dCAKKy0gICAgIHBhcnNlciBoYXZlIGZpdHMuICovCistCistCistICBpZiAoc3RyY21wIChu YW1lLCBCTEFOS19DT01NT05fTkFNRV9PUklHSU5BTCkgPT0gMAorLSAgICAgIHx8IHN0cmNtcCAo bmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTUY3NykgPT0gMCkKKy0gICAgeworLQorLSAgICAgIHhm cmVlIChuYW1lKTsKKy0gICAgICBuYW1lID0gYWxsb2NhIChzdHJsZW4gKEJMQU5LX0NPTU1PTl9O QU1FX0xPQ0FMKSArIDEpOworLSAgICAgIHN0cmNweSAobmFtZSwgQkxBTktfQ09NTU9OX05BTUVf TE9DQUwpOworLSAgICB9CistCistICB0bXAgPSBhbGxvY2F0ZV9zYXZlZF9mNzdfY29tbW9uX25v ZGUgKCk7CistCistICBsb2NhbF9jb3B5X2Z1bmNfc3RhYiA9IHhtYWxsb2MgKHN0cmxlbiAoZnVu Y19zdGFiKSArIDEpOworLSAgc3RyY3B5IChsb2NhbF9jb3B5X2Z1bmNfc3RhYiwgZnVuY19zdGFi KTsKKy0KKy0gIHRtcC0+bmFtZSA9IHhtYWxsb2MgKHN0cmxlbiAobmFtZSkgKyAxKTsKKy0KKy0g IC8qIGxvY2FsX2NvcHlfZnVuY19zdGFiIGlzIGEgc3RhYnN0cmluZywgbGV0IHVzIGZpcnN0IGV4 dHJhY3QgdGhlIAorLSAgICAgZnVuY3Rpb24gbmFtZSBmcm9tIHRoZSBzdGFiIGJ5IE5VTExpbmcg b3V0IHRoZSAnOicgY2hhcmFjdGVyLiAqLworLQorLQorLSAgYyA9IE5VTEw7CistICBjID0gc3Ry Y2hyIChsb2NhbF9jb3B5X2Z1bmNfc3RhYiwgJzonKTsKKy0KKy0gIGlmIChjKQorLSAgICAqYyA9 ICdcMCc7CistICBlbHNlCistICAgIGVycm9yIChfKCJNYWxmb3JtZWQgZnVuY3Rpb24gU1RBQiBm b3VuZCBpbiBhZGRfY29tbW9uX2Jsb2NrKCkiKSk7CistCistCistICB0bXAtPm93bmluZ19mdW5j dGlvbiA9IHhtYWxsb2MgKHN0cmxlbiAobG9jYWxfY29weV9mdW5jX3N0YWIpICsgMSk7CistCist ICBzdHJjcHkgKHRtcC0+b3duaW5nX2Z1bmN0aW9uLCBsb2NhbF9jb3B5X2Z1bmNfc3RhYik7Cist CistICBzdHJjcHkgKHRtcC0+bmFtZSwgbmFtZSk7CistICB0bXAtPm9mZnNldCA9IG9mZnNldDsK Ky0gIHRtcC0+bmV4dCA9IE5VTEw7CistICB0bXAtPmVudHJpZXMgPSBOVUxMOworLSAgdG1wLT5z ZWNudW0gPSBzZWNudW07CistCistICBjdXJyZW50X2NvbW1vbiA9IHRtcDsKKy0KKy0gIGlmICho ZWFkX2NvbW1vbl9saXN0ID09IE5VTEwpCistICAgIHsKKy0gICAgICBoZWFkX2NvbW1vbl9saXN0 ID0gdGFpbF9jb21tb25fbGlzdCA9IHRtcDsKKy0gICAgfQorLSAgZWxzZQorLSAgICB7CistICAg ICAgdGFpbF9jb21tb25fbGlzdC0+bmV4dCA9IHRtcDsKKy0gICAgICB0YWlsX2NvbW1vbl9saXN0 ID0gdG1wOworLSAgICB9CistfQorLSNlbmRpZgorLQorLS8qIFRoZSBmb2xsb3dpbmcgZnVuY3Rp b24gc2ltcGx5IGVudGVycyBhIGdpdmVuIGNvbW1vbiBlbnRyeSBvbnRvIAorLSAgIHRoZSAiY3Vy cmVudF9jb21tb24iIGJsb2NrIHRoYXQgaGFzIGJlZW4gc2F2ZWQgYXdheS4gKi8KKy0KKy0jaWYg MAorLXN0YXRpYyB2b2lkCistYWRkX2NvbW1vbl9lbnRyeSAoc3RydWN0IHN5bWJvbCAqZW50cnlf c3ltX3B0cikKKy17CistICBDT01NT05fRU5UUllfUFRSIHRtcDsKKy0KKy0KKy0KKy0gIC8qIFRo ZSBvcmRlciBvZiB0aGlzIGxpc3QgaXMgaW1wb3J0YW50LCBzaW5jZSAKKy0gICAgIHdlIGV4cGVj dCB0aGUgZW50cmllcyB0byBhcHBlYXIgaW4gZGVjbC4KKy0gICAgIG9yZGVyIHdoZW4gd2UgbGF0 ZXIgaXNzdWUgImluZm8gY29tbW9uIiBjYWxscyAqLworLQorLSAgdG1wID0gYWxsb2NhdGVfY29t bW9uX2VudHJ5X25vZGUgKCk7CistCistICB0bXAtPm5leHQgPSBOVUxMOworLSAgdG1wLT5zeW1i b2wgPSBlbnRyeV9zeW1fcHRyOworLQorLSAgaWYgKGN1cnJlbnRfY29tbW9uID09IE5VTEwpCist ICAgIGVycm9yIChfKCJBdHRlbXB0IHRvIGFkZCBDT01NT04gZW50cnkgd2l0aCBubyBibG9jayBv cGVuISIpKTsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgIGlmIChjdXJyZW50X2NvbW1vbi0+ZW50 cmllcyA9PSBOVUxMKQorLQl7CistCSAgY3VycmVudF9jb21tb24tPmVudHJpZXMgPSB0bXA7Cist CSAgY3VycmVudF9jb21tb24tPmVuZF9vZl9lbnRyaWVzID0gdG1wOworLQl9CistICAgICAgZWxz ZQorLQl7CistCSAgY3VycmVudF9jb21tb24tPmVuZF9vZl9lbnRyaWVzLT5uZXh0ID0gdG1wOwor LQkgIGN1cnJlbnRfY29tbW9uLT5lbmRfb2ZfZW50cmllcyA9IHRtcDsKKy0JfQorLSAgICB9Cist fQorLSNlbmRpZgorLQorLS8qIFRoaXMgcm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5jb3VudHJl ZCBDT01NT04gYmxvY2sgbmFtZWQgIm5hbWUiICovCistCistI2lmIDAKKy1zdGF0aWMgU0FWRURf Rjc3X0NPTU1PTl9QVFIKKy1maW5kX2ZpcnN0X2NvbW1vbl9uYW1lZCAoY2hhciAqbmFtZSkKKy17 CistCistICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0bXA7CistCistICB0bXAgPSBoZWFkX2NvbW1v bl9saXN0OworLQorLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKHN0 cmNtcCAodG1wLT5uYW1lLCBuYW1lKSA9PSAwKQorLQlyZXR1cm4gKHRtcCk7CistICAgICAgZWxz ZQorLQl0bXAgPSB0bXAtPm5leHQ7CistICAgIH0KKy0gIHJldHVybiAoTlVMTCk7CistfQorLSNl bmRpZgorIAorIC8qIFRoaXMgcm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5jb3VudHJlZCBDT01N T04gYmxvY2sgbmFtZWQgIm5hbWUiIAorICAgIHRoYXQgYmVsb25ncyB0byBmdW5jdGlvbiBmdW5j bmFtZSAqLworQEAgLTYyMCwxOTMgKzQyOCwzIEBAIGZpbmRfY29tbW9uX2Zvcl9mdW5jdGlvbiAo Y2hhciAqbmFtZSwgY2hhciAqZnVuY25hbWUpCisgICAgIH0KKyAgIHJldHVybiAoTlVMTCk7Cisg fQorLQorLQorLSNpZiAwCistCistLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBpcyBjYWxsZWQg dG8gcGF0Y2ggdXAgdGhlIG9mZnNldHMgCistICAgZm9yIHRoZSBzdGF0aWNzIGNvbnRhaW5lZCBp biB0aGUgQ09NTU9OIGJsb2NrIG5hbWVkCistICAgIm5hbWUuIiAgKi8KKy0KKy1zdGF0aWMgdm9p ZAorLXBhdGNoX2NvbW1vbl9lbnRyaWVzIChTQVZFRF9GNzdfQ09NTU9OX1BUUiBibGssIENPUkVf QUREUiBvZmZzZXQsIGludCBzZWNudW0pCisteworLSAgQ09NTU9OX0VOVFJZX1BUUiBlbnRyeTsK Ky0KKy0gIGJsay0+b2Zmc2V0ID0gb2Zmc2V0OwkJLyogS2VlcCB0aGlzIGFyb3VuZCBmb3IgZnV0 dXJlIHVzZS4gKi8KKy0KKy0gIGVudHJ5ID0gYmxrLT5lbnRyaWVzOworLQorLSAgd2hpbGUgKGVu dHJ5ICE9IE5VTEwpCistICAgIHsKKy0gICAgICBTWU1CT0xfVkFMVUUgKGVudHJ5LT5zeW1ib2wp ICs9IG9mZnNldDsKKy0gICAgICBTWU1CT0xfU0VDVElPTiAoZW50cnktPnN5bWJvbCkgPSBzZWNu dW07CistCistICAgICAgZW50cnkgPSBlbnRyeS0+bmV4dDsKKy0gICAgfQorLSAgYmxrLT5zZWNu dW0gPSBzZWNudW07CistfQorLQorLS8qIFBhdGNoIGFsbCBjb21tb25zIG5hbWVkICJuYW1lIiB0 aGF0IG5lZWQgcGF0Y2hpbmcuU2luY2UgQ09NTU9OCistICAgYmxvY2tzIG9jY3VyIHdpdGggcmVs YXRpdmUgaW5mcmVxdWVuY3ksIHdlIHNpbXBseSBkbyBhIGxpbmVhciBzY2FuIG9uCistICAgdGhl IG5hbWUuICBFdmVudHVhbGx5LCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhpcyB3aWxsIGJlIGEKKy0g ICBoYXNoZWQtbG9va3VwLiAgU2VjbnVtIGlzIHRoZSBzZWN0aW9uIG51bWJlciBmb3IgdGhlIC5i c3Mgc2VjdGlvbgorLSAgICh3aGljaCBpcyB3aGVyZSBjb21tb24gZGF0YSBsaXZlcykuICovCist Cistc3RhdGljIHZvaWQKKy1wYXRjaF9hbGxfY29tbW9uc19ieV9uYW1lIChjaGFyICpuYW1lLCBD T1JFX0FERFIgb2Zmc2V0LCBpbnQgc2VjbnVtKQorLXsKKy0KKy0gIFNBVkVEX0Y3N19DT01NT05f UFRSIHRtcDsKKy0KKy0gIC8qIEZvciBibGFuayBjb21tb24gYmxvY2tzLCBjaGFuZ2UgdGhlIGNh bm9uaWNhbCByZXByc2VudGF0aW9uIAorLSAgICAgb2YgYSBibGFuayBuYW1lICovCistCistICBp ZiAoc3RyY21wIChuYW1lLCBCTEFOS19DT01NT05fTkFNRV9PUklHSU5BTCkgPT0gMAorLSAgICAg IHx8IHN0cmNtcCAobmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTUY3NykgPT0gMCkKKy0gICAgewor LSAgICAgIHhmcmVlIChuYW1lKTsKKy0gICAgICBuYW1lID0gYWxsb2NhIChzdHJsZW4gKEJMQU5L X0NPTU1PTl9OQU1FX0xPQ0FMKSArIDEpOworLSAgICAgIHN0cmNweSAobmFtZSwgQkxBTktfQ09N TU9OX05BTUVfTE9DQUwpOworLSAgICB9CistCistICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0Owor LQorLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKENPTU1PTl9ORUVE U19QQVRDSElORyAodG1wKSkKKy0JaWYgKHN0cmNtcCAodG1wLT5uYW1lLCBuYW1lKSA9PSAwKQor LQkgIHBhdGNoX2NvbW1vbl9lbnRyaWVzICh0bXAsIG9mZnNldCwgc2VjbnVtKTsKKy0KKy0gICAg ICB0bXAgPSB0bXAtPm5leHQ7CistICAgIH0KKy19CistI2VuZGlmCistCistLyogVGhpcyBtYWNy byBhZGRzIHRoZSBzeW1ib2wtbnVtYmVyIGZvciB0aGUgc3RhcnQgb2YgdGhlIGZ1bmN0aW9uIAor LSAgICh0aGUgc3ltYm9sIG51bWJlciBvZiB0aGUgLmJmKSByZWZlcmVuY2VkIGJ5IHN5bW51bV9m Y24gdG8gYSAKKy0gICBsaXN0LiAgVGhpcyBsaXN0LCBpbiByZWFsaXR5IHNob3VsZCBiZSBhIEZJ Rk8gcXVldWUgYnV0IHNpbmNlIAorLSAgICNsaW5lIHByYWdtYXMgc29tZXRpbWVzIGNhdXNlIGxp bmUgcmFuZ2VzIHRvIGdldCBtZXNzZWQgdXAgCistICAgd2Ugc2ltcGx5IGNyZWF0ZSBhIGxpbmVh ciBsaXN0LiAgVGhpcyBsaXN0IGNhbiB0aGVuIGJlIHNlYXJjaGVkIAorLSAgIGZpcnN0IGJ5IGEg cXVldWVpbmcgYWxnb3JpdGhtIGFuZCB1cG9uIGZhaWx1cmUgZmFsbCBiYWNrIHRvIAorLSAgIGEg bGluZWFyIHNjYW4uICovCistCistI2lmIDAKKy0jZGVmaW5lIEFERF9CRl9TWU1OVU0oYmZfc3lt LGZjbl9zeW0pIFwKKy0gIFwKKy0gIGlmIChzYXZlZF9iZl9saXN0ID09IE5VTEwpIFwKKy17IFwK Ky0gICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3NhdmVkX2JmX25vZGUoKTsgXAorLSAgICAgIFwK Ky0JdG1wX2JmX3B0ci0+c3ltbnVtX2JmID0gKGJmX3N5bSk7IFwKKy0JICB0bXBfYmZfcHRyLT5z eW1udW1fZmNuID0gKGZjbl9zeW0pOyAgXAorLQkgICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7 IFwKKy0JICAgICAgXAorLQkJY3VycmVudF9oZWFkX2JmX2xpc3QgPSBzYXZlZF9iZl9saXN0ID0g dG1wX2JmX3B0cjsgXAorLQkJICBzYXZlZF9iZl9saXN0X2VuZCA9IHRtcF9iZl9wdHI7IFwKKy0J CSAgfSBcCistZWxzZSBcCisteyAgXAorLSAgICAgdG1wX2JmX3B0ciA9IGFsbG9jYXRlX3NhdmVk X2JmX25vZGUoKTsgXAorLSAgICAgICBcCistICAgICAgICAgdG1wX2JmX3B0ci0+c3ltbnVtX2Jm ID0gKGJmX3N5bSk7ICBcCistCSAgIHRtcF9iZl9wdHItPnN5bW51bV9mY24gPSAoZmNuX3N5bSk7 ICBcCistCSAgICAgdG1wX2JmX3B0ci0+bmV4dCA9IE5VTEw7ICBcCistCSAgICAgICBcCistCQkg c2F2ZWRfYmZfbGlzdF9lbmQtPm5leHQgPSB0bXBfYmZfcHRyOyAgXAorLQkJICAgc2F2ZWRfYmZf bGlzdF9lbmQgPSB0bXBfYmZfcHRyOyBcCistCQkgICB9CistI2VuZGlmCistCistLyogVGhpcyBm dW5jdGlvbiBmcmVlcyB0aGUgZW50aXJlICguYmYsZnVuY3Rpb24pIGxpc3QgKi8KKy0KKy0jaWYg MAorLXN0YXRpYyB2b2lkCistY2xlYXJfYmZfbGlzdCAodm9pZCkKKy17CistCistICBTQVZFRF9C Rl9QVFIgdG1wID0gc2F2ZWRfYmZfbGlzdDsKKy0gIFNBVkVEX0JGX1BUUiBuZXh0ID0gTlVMTDsK Ky0KKy0gIHdoaWxlICh0bXAgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIG5leHQgPSB0bXAtPm5l eHQ7CistICAgICAgeGZyZWUgKHRtcCk7CistICAgICAgdG1wID0gbmV4dDsKKy0gICAgfQorLSAg c2F2ZWRfYmZfbGlzdCA9IE5VTEw7CistfQorLSNlbmRpZgorLQorLWludCBnbG9iYWxfcmVtb3Rl X2RlYnVnOworLQorLSNpZiAwCistCistc3RhdGljIGxvbmcKKy1nZXRfYmZfZm9yX2ZjbiAobG9u ZyB0aGVfZnVuY3Rpb24pCisteworLSAgU0FWRURfQkZfUFRSIHRtcDsKKy0gIGludCBucHJvYmVz ID0gMDsKKy0KKy0gIC8qIEZpcnN0IHVzZSBhIHNpbXBsZSBxdWV1aW5nIGFsZ29yaXRobSAoaS5l LiBsb29rIGFuZCBzZWUgaWYgdGhlIAorLSAgICAgaXRlbSBhdCB0aGUgaGVhZCBvZiB0aGUgcXVl dWUgaXMgdGhlIG9uZSB5b3Ugd2FudCkgICovCistCistICBpZiAoc2F2ZWRfYmZfbGlzdCA9PSBO VUxMKQorLSAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAorLQkJICAgIF8o ImNhbm5vdCBnZXQgLmJmIG5vZGUgb2ZmIGVtcHR5IGxpc3QiKSk7CistCistICBpZiAoY3VycmVu dF9oZWFkX2JmX2xpc3QgIT0gTlVMTCkKKy0gICAgaWYgKGN1cnJlbnRfaGVhZF9iZl9saXN0LT5z eW1udW1fZmNuID09IHRoZV9mdW5jdGlvbikKKy0gICAgICB7CistCWlmIChnbG9iYWxfcmVtb3Rl X2RlYnVnKQorLQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIioiKTsKKy0KKy0J dG1wID0gY3VycmVudF9oZWFkX2JmX2xpc3Q7CistCWN1cnJlbnRfaGVhZF9iZl9saXN0ID0gY3Vy cmVudF9oZWFkX2JmX2xpc3QtPm5leHQ7CistCXJldHVybiAodG1wLT5zeW1udW1fYmYpOworLSAg ICAgIH0KKy0KKy0gIC8qIElmIHRoZSBhYm92ZSBkaWQgbm90IHdvcmsgKHByb2JhYmx5IGJlY2F1 c2UgI2xpbmUgZGlyZWN0aXZlcyB3ZXJlIAorLSAgICAgdXNlZCBpbiB0aGUgc291cmNlZmlsZSBh bmQgdGhleSBtZXNzZWQgdXAgb3VyIGludGVybmFsIHRhYmxlcykgd2Ugbm93IGRvCistICAgICB0 aGUgdWdseSBsaW5lYXIgc2NhbiAqLworLQorLSAgaWYgKGdsb2JhbF9yZW1vdGVfZGVidWcpCist ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwgIlxuZGVmYXVsdGluZyB0byBsaW5l YXIgc2NhblxuIik7CistCistICBucHJvYmVzID0gMDsKKy0gIHRtcCA9IHNhdmVkX2JmX2xpc3Q7 CistICB3aGlsZSAodG1wICE9IE5VTEwpCistICAgIHsKKy0gICAgICBucHJvYmVzKys7CistICAg ICAgaWYgKHRtcC0+c3ltbnVtX2ZjbiA9PSB0aGVfZnVuY3Rpb24pCistCXsKKy0JICBpZiAoZ2xv YmFsX3JlbW90ZV9kZWJ1ZykKKy0JICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwg IkZvdW5kIGluICVkIHByb2Jlc1xuIiwgbnByb2Jlcyk7CistCSAgY3VycmVudF9oZWFkX2JmX2xp c3QgPSB0bXAtPm5leHQ7CistCSAgcmV0dXJuICh0bXAtPnN5bW51bV9iZik7CistCX0KKy0gICAg ICB0bXAgPSB0bXAtPm5leHQ7CistICAgIH0KKy0KKy0gIHJldHVybiAoLTEpOworLX0KKy0KKy1z dGF0aWMgU0FWRURfRlVOQ1RJT05fUFRSIHNhdmVkX2Z1bmN0aW9uX2xpc3QgPSBOVUxMOworLXN0 YXRpYyBTQVZFRF9GVU5DVElPTl9QVFIgc2F2ZWRfZnVuY3Rpb25fbGlzdF9lbmQgPSBOVUxMOwor LQorLXN0YXRpYyB2b2lkCistY2xlYXJfZnVuY3Rpb25fbGlzdCAodm9pZCkKKy17CistICBTQVZF RF9GVU5DVElPTl9QVFIgdG1wID0gc2F2ZWRfZnVuY3Rpb25fbGlzdDsKKy0gIFNBVkVEX0ZVTkNU SU9OX1BUUiBuZXh0ID0gTlVMTDsKKy0KKy0gIHdoaWxlICh0bXAgIT0gTlVMTCkKKy0gICAgewor LSAgICAgIG5leHQgPSB0bXAtPm5leHQ7CistICAgICAgeGZyZWUgKHRtcCk7CistICAgICAgdG1w ID0gbmV4dDsKKy0gICAgfQorLQorLSAgc2F2ZWRfZnVuY3Rpb25fbGlzdCA9IE5VTEw7CistfQor LSNlbmRpZgorLS0tIGEvZ2RiL2YtbGFuZy5oCisrKysgYi9nZGIvZi1sYW5nLmgKK0BAIC03MSwx NCArNzEsOSBAQCB0eXBlZGVmIHN0cnVjdCBzYXZlZF9mNzdfY29tbW9uIFNBVkVEX0Y3N19DT01N T04sICpTQVZFRF9GNzdfQ09NTU9OX1BUUjsKKyB0eXBlZGVmIHN0cnVjdCBjb21tb25fZW50cnkg Q09NTU9OX0VOVFJZLCAqQ09NTU9OX0VOVFJZX1BUUjsKKyAKKyBleHRlcm4gU0FWRURfRjc3X0NP TU1PTl9QVFIgaGVhZF9jb21tb25fbGlzdDsJLyogUHRyIHRvIDFzdCBzYXZlZCBDT01NT04gICov CistZXh0ZXJuIFNBVkVEX0Y3N19DT01NT05fUFRSIHRhaWxfY29tbW9uX2xpc3Q7CS8qIFB0ciB0 byBsYXN0IHNhdmVkIENPTU1PTiAgKi8KKy1leHRlcm4gU0FWRURfRjc3X0NPTU1PTl9QVFIgY3Vy cmVudF9jb21tb247CS8qIFB0ciB0byBjdXJyZW50IENPTU1PTiAqLworIAorIGV4dGVybiBTQVZF RF9GNzdfQ09NTU9OX1BUUiBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwgY2hhciAq KTsKKyAKKy0jZGVmaW5lIFVOSU5JVElBTElaRURfU0VDTlVNIC0xCistI2RlZmluZSBDT01NT05f TkVFRFNfUEFUQ0hJTkcoYmxrKSAoKGJsayktPnNlY251bSA9PSBVTklOSVRJQUxJWkVEX1NFQ05V TSkKKy0KKyAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8q IFhMRiBhc3NpZ25lZCAgKi8KKyAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJf X0JMTktfXyIJLyogTUY3NyBhc3NpZ25lZCAgKi8KKyAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1F X0xPQ0FMICAgICJfX0JMQU5LIgkvKiBMb2NhbCBHREIgKi8KKy0tLSBhL2dkYi9mLXZhbHByaW50 LmMKKysrKyBiL2dkYi9mLXZhbHByaW50LmMKK0BAIC0zNSwxMCArMzUsNiBAQAorICNpbmNsdWRl ICJjb21tYW5kLmgiCisgI2luY2x1ZGUgImJsb2NrLmgiCisgCistI2lmIDAKKy1zdGF0aWMgaW50 IHRoZXJlX2lzX2FfdmlzaWJsZV9jb21tb25fbmFtZWQgKGNoYXIgKik7CistI2VuZGlmCistCisg ZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCk7Cisgc3RhdGljIHZvaWQg aW5mb19jb21tb25fY29tbWFuZCAoY2hhciAqLCBpbnQpOworIHN0YXRpYyB2b2lkIGxpc3RfYWxs X3Zpc2libGVfY29tbW9ucyAoY2hhciAqKTsKK0BAIC01NzgsNjcgKzU3NCw2IEBAIGluZm9fY29t bW9uX2NvbW1hbmQgKGNoYXIgKmNvbW5hbWUsIGludCBmcm9tX3R0eSkKKyAJCSAgICAgY29tbmFt ZSwgZnVubmFtZSk7CisgfQorIAorLS8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBkZXRlcm1p bmUgd2hldGhlciB0aGVyZSBpcyBhCistICAgRjc3IGNvbW1vbiBibG9jayB2aXNpYmxlIGF0IHRo ZSBjdXJyZW50IHNjb3BlIGNhbGxlZCAnY29tbmFtZScuICovCistCistI2lmIDAKKy1zdGF0aWMg aW50CistdGhlcmVfaXNfYV92aXNpYmxlX2NvbW1vbl9uYW1lZCAoY2hhciAqY29tbmFtZSkKKy17 CistICBTQVZFRF9GNzdfQ09NTU9OX1BUUiB0aGVfY29tbW9uOworLSAgc3RydWN0IGZyYW1lX2lu Zm8gKmZpOworLSAgY2hhciAqZnVubmFtZSA9IDA7CistICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwor LQorLSAgaWYgKGNvbW5hbWUgPT0gTlVMTCkKKy0gICAgZXJyb3IgKF8oIkNhbm5vdCBkZWFsIHdp dGggTlVMTCBjb21tb24gbmFtZSEiKSk7CistCistICBmaSA9IGdldF9zZWxlY3RlZF9mcmFtZSAo XygiTm8gZnJhbWUgc2VsZWN0ZWQiKSk7CistCistICAvKiBUaGUgZm9sbG93aW5nIGlzIGdlbmVy YWxseSByaXBwZWQgb2ZmIGZyb20gc3RhY2suYydzIHJvdXRpbmUgCistICAgICBwcmludF9mcmFt ZV9pbmZvKCkgKi8KKy0KKy0gIGZ1bmMgPSBmaW5kX3BjX2Z1bmN0aW9uIChmaS0+cGMpOworLSAg aWYgKGZ1bmMpCistICAgIHsKKy0gICAgICAvKiBJbiBjZXJ0YWluIHBhdGhvbG9naWNhbCBjYXNl cywgdGhlIHN5bXRhYnMgZ2l2ZSB0aGUgd3JvbmcKKy0gICAgICAgICBmdW5jdGlvbiAod2hlbiB3 ZSBhcmUgaW4gdGhlIGZpcnN0IGZ1bmN0aW9uIGluIGEgZmlsZSB3aGljaAorLSAgICAgICAgIGlz IGNvbXBpbGVkIHdpdGhvdXQgZGVidWdnaW5nIHN5bWJvbHMsIHRoZSBwcmV2aW91cyBmdW5jdGlv bgorLSAgICAgICAgIGlzIGNvbXBpbGVkIHdpdGggZGVidWdnaW5nIHN5bWJvbHMsIGFuZCB0aGUg ImZvby5vIiBzeW1ib2wKKy0gICAgICAgICB0aGF0IGlzIHN1cHBvc2VkIHRvIHRlbGwgdXMgd2hl cmUgdGhlIGZpbGUgd2l0aCBkZWJ1Z2dpbmcgc3ltYm9scworLSAgICAgICAgIGVuZHMgaGFzIGJl ZW4gdHJ1bmNhdGVkIGJ5IGFyIGJlY2F1c2UgaXQgaXMgbG9uZ2VyIHRoYW4gMTUKKy0gICAgICAg ICBjaGFyYWN0ZXJzKS4KKy0KKy0gICAgICAgICBTbyBsb29rIGluIHRoZSBtaW5pbWFsIHN5bWJv bCB0YWJsZXMgYXMgd2VsbCwgYW5kIGlmIGl0IGNvbWVzCistICAgICAgICAgdXAgd2l0aCBhIGxh cmdlciBhZGRyZXNzIGZvciB0aGUgZnVuY3Rpb24gdXNlIHRoYXQgaW5zdGVhZC4KKy0gICAgICAg ICBJIGRvbid0IHRoaW5rIHRoaXMgY2FuIGV2ZXIgY2F1c2UgYW55IHByb2JsZW1zOyB0aGVyZSBz aG91bGRuJ3QKKy0gICAgICAgICBiZSBhbnkgbWluaW1hbCBzeW1ib2xzIGluIHRoZSBtaWRkbGUg b2YgYSBmdW5jdGlvbi4KKy0gICAgICAgICBGSVhNRTogIChOb3QgbmVjZXNzYXJpbHkgdHJ1ZS4g IFdoYXQgYWJvdXQgdGV4dCBsYWJlbHMpICovCistCistICAgICAgc3RydWN0IG1pbmltYWxfc3lt Ym9sICptc3ltYm9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChmaS0+cGMpOworLQor LSAgICAgIGlmIChtc3ltYm9sICE9IE5VTEwKKy0JICAmJiAoU1lNQk9MX1ZBTFVFX0FERFJFU1Mg KG1zeW1ib2wpCistCSAgICAgID4gQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAoZnVu YykpKSkKKy0JZnVubmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpOworLSAgICAg IGVsc2UKKy0JZnVubmFtZSA9IFNZTUJPTF9MSU5LQUdFX05BTUUgKGZ1bmMpOworLSAgICB9Cist ICBlbHNlCistICAgIHsKKy0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wgPQor LSAgICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZmktPnBjKTsKKy0KKy0gICAgICBp ZiAobXN5bWJvbCAhPSBOVUxMKQorLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5 bWJvbCk7CistICAgIH0KKy0KKy0gIHRoZV9jb21tb24gPSBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rp b24gKGNvbW5hbWUsIGZ1bm5hbWUpOworLQorLSAgcmV0dXJuICh0aGVfY29tbW9uID8gMSA6IDAp OworLX0KKy0jZW5kaWYKKy0KKyB2b2lkCisgX2luaXRpYWxpemVfZl92YWxwcmludCAodm9pZCkK KyB7CgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoIGIvZ2RiLWZvcnRyYW4t Y29tbW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmODZmMDYK LS0tIC9kZXYvbnVsbAorKysgYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKQEAgLTAsMCArMSw1 NzYgQEAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9kd2FyZjJyZWFkLmMKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEw LTAxLTE1IDIxOjM1OjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL2R3YXJmMnJlYWQuYwkyMDEwLTAxLTE1IDIxOjQxOjMyLjAwMDAwMDAwMCArMDEwMAorQEAg LTU4MTEsMTIgKzU4MTEsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cgorICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOworIH0KKyAK Ky0vKiBGaXJzdCBjdXQ6IGluc3RhbGwgZWFjaCBjb21tb24gYmxvY2sgbWVtYmVyIGFzIGEgZ2xv YmFsIHZhcmlhYmxlLiAgKi8KKysvKiBDcmVhdGUgYXBwcm9wcmlhdGUgbG9jYWxseS1zY29wZWQg dmFyaWFibGVzIGZvciBhbGwgdGhlIERXX1RBR19jb21tb25fYmxvY2sKKysgICBlbnRyaWVzLiAg Q3JlYXRlIGFsc28gVFlQRV9DT0RFX1NUUlVDVCBsaXN0aW5nIGFsbCBzdWNoIHZhcmlhYmxlcyB0 byBiZQorKyAgIGF2YWlsYWJsZSBmb3IgYGluZm8gY29tbW9uJy4gIENPTU1PTl9CTE9DS19ET01B SU4gaXMgdXNlZCB0byBzZXBhdGUgdGhlCisrICAgY29tbW9uIGJsb2NrcyBuYW1lIG5hbWVzcGFj ZSBmcm9tIHJlZ3VsYXIgdmFyaWFibGUgbmFtZXMuICAqLworIAorIHN0YXRpYyB2b2lkCisgcmVh ZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKKyB7CistICBzdHJ1Y3QgZGllX2luZm8gKmNoaWxkX2RpZTsKKyAgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7CisgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisgICBDT1JFX0FERFIgYmFzZSA9IChD T1JFX0FERFIpIDA7CitAQCAtNTg0MSwxMCArNTg0Myw0MCBAQCByZWFkX2NvbW1vbl9ibG9jayAo c3RydWN0IGRpZV9pbmZvICpkaWUsCisgICAgIH0KKyAgIGlmIChkaWUtPmNoaWxkICE9IE5VTEwp CisgICAgIHsKKysgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwor KyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllOworKyAgICAgIHN0cnVjdCB0eXBlICp0 eXBlOworKyAgICAgIHN0cnVjdCBmaWVsZCAqZmllbGQ7CisrICAgICAgY2hhciAqbmFtZTsKKysg ICAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisrCisrICAgICAgdHlwZSA9IGFsbG9jX3R5cGUgKG9i amZpbGUpOworKyAgICAgIFRZUEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVfU1RSVUNUOworKyAg ICAgIC8qIEFydGlmaWNpYWwgdHlwZSB0byBiZSB1c2VkIG9ubHkgYnkgYGluZm8gY29tbW9uJy4g ICovCisrICAgICAgVFlQRV9OQU1FICh0eXBlKSA9ICI8Y29tbW9uPiI7CisrCisrICAgICAgY2hp bGRfZGllID0gZGllLT5jaGlsZDsKKysgICAgICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxkX2Rp ZS0+dGFnKQorKwl7CisrCSAgVFlQRV9ORklFTERTICh0eXBlKSsrOworKwkgIGNoaWxkX2RpZSA9 IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOworKwl9CisrCisrICAgICAgVFlQRV9GSUVMRFMgKHR5 cGUpID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKysJCQkJCSAg c2l6ZW9mICgqVFlQRV9GSUVMRFMgKHR5cGUpKQorKwkJCQkJICAqIFRZUEVfTkZJRUxEUyAodHlw ZSkpOworKyAgICAgIG1lbXNldCAoVFlQRV9GSUVMRFMgKHR5cGUpLCAwLCBzaXplb2YgKCpUWVBF X0ZJRUxEUyAodHlwZSkpCisrCQkJCSAgICAgKiBUWVBFX05GSUVMRFMgKHR5cGUpKTsKKysgICAg ICAKKysgICAgICBmaWVsZCA9IFRZUEVfRklFTERTICh0eXBlKTsKKyAgICAgICBjaGlsZF9kaWUg PSBkaWUtPmNoaWxkOworICAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcp CisgCXsKKysJICAvKiBDcmVhdGUgdGhlIHN5bWJvbCBpbiB0aGUgRFdfVEFHX2NvbW1vbl9ibG9j ayBibG9jayBpbiB0aGUgY3VycmVudAorKwkgICAgIHN5bWJvbCBzY29wZS4gICovCisgCSAgc3lt ID0gbmV3X3N5bWJvbCAoY2hpbGRfZGllLCBOVUxMLCBjdSk7CisrCisrCSAgLyogVW5kb2N1bWVu dGVkIGluIERXQVJGMywgd2hlbiBpdCBjYW4gYmUgcHJlc2VudD8gICovCisgCSAgYXR0ciA9IGR3 YXJmMl9hdHRyIChjaGlsZF9kaWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uLCBjdSk7Cisg CSAgaWYgKGF0dHIpCisgCSAgICB7CitAQCAtNTg2Miw4ICs1ODk0LDI1IEBAIHJlYWRfY29tbW9u X2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKyAJICAgICAgU1lNQk9MX1ZBTFVFX0FERFJF U1MgKHN5bSkgPSBiYXNlICsgYnl0ZV9vZmZzZXQ7CisgCSAgICAgIGFkZF9zeW1ib2xfdG9fbGlz dCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOworIAkgICAgfQorKworKwkgIGlmIChTWU1CT0xfQ0xB U1MgKHN5bSkgPT0gTE9DX1NUQVRJQykKKysJICAgIFNFVF9GSUVMRF9QSFlTQUREUiAoKmZpZWxk LCBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSk7CisrCSAgZWxzZQorKwkgICAgU0VUX0ZJRUxE X1BIWVNOQU1FICgqZmllbGQsIFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkpOworKwkgIEZJRUxE X1RZUEUgKCpmaWVsZCkgPSBTWU1CT0xfVFlQRSAoc3ltKTsKKysJICBGSUVMRF9OQU1FICgqZmll bGQpID0gU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKTsKKysJICBmaWVsZCsrOworIAkgIGNoaWxk X2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOworIAl9CisrCisrICAgICAgLyogVFlQRV9M RU5HVEggKHR5cGUpIGlzIGxlZnQgMCAtIGl0IGlzIG9ubHkgYSB2aXJ0dWFsIHN0cnVjdHVyZSBl dmVuCisrCSB3aXRoIG5vIGNvbnNlY3V0aXZlIGFkZHJlc3Mgc3BhY2UuICAqLworKworKyAgICAg IHN5bSA9IG5ld19zeW1ib2wgKGRpZSwgdHlwZSwgY3UpOworKyAgICAgIC8qIFNZTUJPTF9WQUxV RV9BRERSRVNTIG5ldmVyIGdldHMgdXNlZCBhcyBhbGwgaXRzIGZpZWxkcyBhcmUgc3RhdGljLiAg Ki8KKysgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoc3ltKSA9IGJhc2U7CisrCisrICAgICAg c2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKKyAgICAgfQorIH0KKyAKK0BAIC05MDUyLDYg KzkxMDEsMTMgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorIAkg ICAgeworIAkgICAgICB2YXJfZGVjb2RlX2xvY2F0aW9uIChhdHRyLCBzeW0sIGN1KTsKKyAJICAg ICAgYXR0cjIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9leHRlcm5hbCwgY3UpOworKworKwkg ICAgICAvKiBGb3J0cmFuIGV4cGxpY2l0bHkgaW1wb3J0cyBhbnkgZ2xvYmFsIHN5bWJvbHMgdG8g dGhlIGxvY2FsCisrCQkgc2NvcGUgYnkgRFdfVEFHX2NvbW1vbl9ibG9jay4gICovCisrCSAgICAg IGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbiAmJiBkaWUtPnBhcmVudAorKwkJ ICAmJiBkaWUtPnBhcmVudC0+dGFnID09IERXX1RBR19jb21tb25fYmxvY2spCisrCQlhdHRyMiA9 IE5VTEw7CisrCisgCSAgICAgIGlmIChhdHRyMiAmJiAoRFdfVU5TTkQgKGF0dHIyKSAhPSAwKSkK KyAJCXsKKyAJCSAgLyogV29ya2Fyb3VuZCBnZm9ydHJhbiBQUiBkZWJ1Zy80MDA0MCAtIGl0IHVz ZXMKK0BAIC05MjMwLDYgKzkyODYsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdAorIAkgIFNZTUJPTF9ET01BSU4gKHN5bSkgPSBNT0RVTEVfRE9NQUlOOworIAkg IGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOworIAkgIGJyZWFrOwor KwljYXNlIERXX1RBR19jb21tb25fYmxvY2s6CisrCSAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9D X1NUQVRJQzsKKysJICBTWU1CT0xfRE9NQUlOIChzeW0pID0gQ09NTU9OX0JMT0NLX0RPTUFJTjsK KysJICBhZGRfc3ltYm9sX3RvX2xpc3QgKHN5bSwgY3UtPmxpc3RfaW5fc2NvcGUpOworKwkgIGJy ZWFrOworIAlkZWZhdWx0OgorIAkgIC8qIE5vdCBhIHRhZyB3ZSByZWNvZ25pemUuICBIb3BlZnVs bHkgd2UgYXJlbid0IHByb2Nlc3NpbmcKKyAJICAgICB0cmFzaCBkYXRhLCBidXQgc2luY2Ugd2Ug bXVzdCBzcGVjaWZpY2FsbHkgaWdub3JlIHRoaW5ncworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAx MTUvZ2RiL2YtbGFuZy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi9mLWxhbmcuYwkyMDEwLTAxLTE1IDIxOjM1OjE2LjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtbGFuZy5jCTIwMTAtMDEtMTUgMjE6MzU6MjcuMDAwMDAw MDAwICswMTAwCitAQCAtNDQ4LDI3ICs0NDgsMyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2 b2lkKQorIAorICAgYWRkX2xhbmd1YWdlICgmZl9sYW5ndWFnZV9kZWZuKTsKKyB9CistCistU0FW RURfRjc3X0NPTU1PTl9QVFIgaGVhZF9jb21tb25fbGlzdCA9IE5VTEw7CS8qIFB0ciB0byAxc3Qg c2F2ZWQgQ09NTU9OICAqLworLQorLS8qIFRoaXMgcm91dGluZSBmaW5kcyB0aGUgZmlyc3QgZW5j b3VudHJlZCBDT01NT04gYmxvY2sgbmFtZWQgIm5hbWUiIAorLSAgIHRoYXQgYmVsb25ncyB0byBm dW5jdGlvbiBmdW5jbmFtZSAqLworLQorLVNBVkVEX0Y3N19DT01NT05fUFRSCistZmluZF9jb21t b25fZm9yX2Z1bmN0aW9uIChjaGFyICpuYW1lLCBjaGFyICpmdW5jbmFtZSkKKy17CistCistICBT QVZFRF9GNzdfQ09NTU9OX1BUUiB0bXA7CistCistICB0bXAgPSBoZWFkX2NvbW1vbl9saXN0Owor LQorLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQorLSAgICB7CistICAgICAgaWYgKHN0cmNtcCAodG1w LT5uYW1lLCBuYW1lKSA9PSAwCistCSAgJiYgc3RyY21wICh0bXAtPm93bmluZ19mdW5jdGlvbiwg ZnVuY25hbWUpID09IDApCistCXJldHVybiAodG1wKTsKKy0gICAgICBlbHNlCistCXRtcCA9IHRt cC0+bmV4dDsKKy0gICAgfQorLSAgcmV0dXJuIChOVUxMKTsKKy19CitJbmRleDogZ2RiLTcuMC41 MC4yMDEwMDExNS9nZGIvZi1sYW5nLmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAw MTE1Lm9yaWcvZ2RiL2YtbGFuZy5oCTIwMTAtMDEtMTUgMjE6MzU6MTYuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvZi1sYW5nLmgJMjAxMC0wMS0xNSAyMTozNToy Ny4wMDAwMDAwMDAgKzAxMDAKK0BAIC01MSwzNiArNTEsOCBAQCBlbnVtIGY5MF9yYW5nZV90eXBl CisgICAgIE5PTkVfQk9VTkRfREVGQVVMVAkJLyogIihsb3c6aGlnaCkiICAqLworICAgfTsKKyAK Ky1zdHJ1Y3QgY29tbW9uX2VudHJ5CistICB7CistICAgIHN0cnVjdCBzeW1ib2wgKnN5bWJvbDsJ LyogVGhlIHN5bWJvbCBub2RlIGNvcnJlc3BvbmRpbmcKKy0JCQkJICAgdG8gdGhpcyBjb21wb25l bnQgKi8KKy0gICAgc3RydWN0IGNvbW1vbl9lbnRyeSAqbmV4dDsJLyogVGhlIG5leHQgY29tcG9u ZW50ICovCistICB9OworLQorLXN0cnVjdCBzYXZlZF9mNzdfY29tbW9uCistICB7CistICAgIGNo YXIgKm5hbWU7CQkJLyogTmFtZSBvZiBDT01NT04gKi8KKy0gICAgY2hhciAqb3duaW5nX2Z1bmN0 aW9uOwkvKiBOYW1lIG9mIHBhcmVudCBmdW5jdGlvbiAqLworLSAgICBpbnQgc2VjbnVtOwkJCS8q IFNlY3Rpb24gIyBvZiAuYnNzICovCistICAgIENPUkVfQUREUiBvZmZzZXQ7CQkvKiBPZmZzZXQg ZnJvbSAuYnNzIGZvciAKKy0JCQkJICAgdGhpcyBibG9jayAqLworLSAgICBzdHJ1Y3QgY29tbW9u X2VudHJ5ICplbnRyaWVzOwkvKiBMaXN0IG9mIGJsb2NrJ3MgY29tcG9uZW50cyAqLworLSAgICBz dHJ1Y3QgY29tbW9uX2VudHJ5ICplbmRfb2ZfZW50cmllczsJLyogcHRyLiB0byBlbmQgb2YgY29t cG9uZW50cyAqLworLSAgICBzdHJ1Y3Qgc2F2ZWRfZjc3X2NvbW1vbiAqbmV4dDsJLyogTmV4dCBz YXZlZCBDT01NT04gYmxvY2sgKi8KKy0gIH07CistCistdHlwZWRlZiBzdHJ1Y3Qgc2F2ZWRfZjc3 X2NvbW1vbiBTQVZFRF9GNzdfQ09NTU9OLCAqU0FWRURfRjc3X0NPTU1PTl9QVFI7CistCistdHlw ZWRlZiBzdHJ1Y3QgY29tbW9uX2VudHJ5IENPTU1PTl9FTlRSWSwgKkNPTU1PTl9FTlRSWV9QVFI7 CistCistZXh0ZXJuIFNBVkVEX0Y3N19DT01NT05fUFRSIGhlYWRfY29tbW9uX2xpc3Q7CS8qIFB0 ciB0byAxc3Qgc2F2ZWQgQ09NTU9OICAqLworLQorLWV4dGVybiBTQVZFRF9GNzdfQ09NTU9OX1BU UiBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNoYXIgKiwgY2hhciAqKTsKKy0KKyAjZGVmaW5l IEJMQU5LX0NPTU1PTl9OQU1FX09SSUdJTkFMICIjQkxOS19DT00iCS8qIFhMRiBhc3NpZ25lZCAg Ki8KKyAjZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX01GNzcgICAgICJfX0JMTktfXyIJLyogTUY3 NyBhc3NpZ25lZCAgKi8KKy0jZGVmaW5lIEJMQU5LX0NPTU1PTl9OQU1FX0xPQ0FMICAgICJfX0JM QU5LIgkvKiBMb2NhbCBHREIgKi8KKyAKKyAvKiBXaGVuIHJlYXNvbmFibGUgYXJyYXkgYm91bmRz IGNhbm5vdCBiZSBmZXRjaGVkLCBzdWNoIGFzIHdoZW4gCisgICAgeW91IGFzayB0byAnbXQgcHJp bnQgc3ltYm9scycgYW5kIHRoZXJlIGlzIG5vIHN0YWNrIGZyYW1lIGFuZCAKK0luZGV4OiBnZGIt Ny4wLjUwLjIwMTAwMTE1L2dkYi9mLXZhbHByaW50LmMKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTAxLTE1IDIxOjM1OjE2LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2YtdmFscHJpbnQuYwky MDEwLTAxLTE1IDIxOjM1OjI3LjAwMDAwMDAwMCArMDEwMAorQEAgLTM0LDYgKzM0LDggQEAKKyAj aW5jbHVkZSAiZ2RiY29yZS5oIgorICNpbmNsdWRlICJjb21tYW5kLmgiCisgI2luY2x1ZGUgImJs b2NrLmgiCisrI2luY2x1ZGUgImRpY3Rpb25hcnkuaCIKKysjaW5jbHVkZSAiZ2RiX2Fzc2VydC5o IgorIAorIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfdmFscHJpbnQgKHZvaWQpOworIHN0YXRp YyB2b2lkIGluZm9fY29tbW9uX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKK0BAIC00NzYsMjIgKzQ3 OCw1NCBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkCisgICByZXR1 cm4gMDsKKyB9CisgCistc3RhdGljIHZvaWQKKy1saXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNo YXIgKmZ1bm5hbWUpCisrc3RhdGljIGludAorK2luZm9fY29tbW9uX2NvbW1hbmRfZm9yX2Jsb2Nr IChzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCisrCQkJICAg ICAgIGNvbnN0IGNoYXIgKmNvbW5hbWUpCisgeworLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdG1w OworLQorLSAgdG1wID0gaGVhZF9jb21tb25fbGlzdDsKKysgIHN0cnVjdCBkaWN0X2l0ZXJhdG9y IGl0ZXI7CisrICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisrICBpbnQgdmFsdWVzX3ByaW50ZWQgPSAw OworKyAgY29uc3QgY2hhciAqbmFtZTsKKysgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9w dHM7CisrCisrICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CisrCisrICBBTExfQkxP Q0tfU1lNQk9MUyAoYmxvY2ssIGl0ZXIsIHN5bSkKKysgICAgaWYgKFNZTUJPTF9ET01BSU4gKHN5 bSkgPT0gQ09NTU9OX0JMT0NLX0RPTUFJTikKKysgICAgICB7CisrICAgICAgCXN0cnVjdCB0eXBl ICp0eXBlID0gU1lNQk9MX1RZUEUgKHN5bSk7CisrCWludCBpbmRleDsKKysKKysJZ2RiX2Fzc2Vy dCAoU1lNQk9MX0NMQVNTIChzeW0pID09IExPQ19TVEFUSUMpOworKwlnZGJfYXNzZXJ0IChUWVBF X0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJVQ1QpOworKworKwlpZiAoY29tbmFtZSAmJiAo IVNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSkKKysJICAgICAgICAgICAgICAgIHx8IHN0cmNtcCAo Y29tbmFtZSwgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSkgIT0gMCkpCisrCSAgY29udGludWU7 CisrCisrCXZhbHVlc19wcmludGVkID0gMTsKKysJaWYgKFNZTUJPTF9QUklOVF9OQU1FIChzeW0p KQorKwkgIHByaW50Zl9maWx0ZXJlZCAoXygiQ29udGVudHMgb2YgRjc3IENPTU1PTiBibG9jayAn JXMnOlxuIiksCisrCQkJICAgU1lNQk9MX1BSSU5UX05BTUUgKHN5bSkpOworKwllbHNlCisrCSAg cHJpbnRmX2ZpbHRlcmVkIChfKCJDb250ZW50cyBvZiBibGFuayBDT01NT04gYmxvY2s6XG4iKSk7 CisrCQorKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBpbmRl eCsrKQorKwkgIHsKKysJICAgIHN0cnVjdCB2YWx1ZSAqdmFsOworKworKwkgICAgZ2RiX2Fzc2Vy dCAoZmllbGRfaXNfc3RhdGljICgmVFlQRV9GSUVMRCAodHlwZSwgaW5kZXgpKSk7CisrCSAgICB2 YWwgPSB2YWx1ZV9zdGF0aWNfZmllbGQgKHR5cGUsIGluZGV4KTsKKysKKysJICAgIHByaW50Zl9m aWx0ZXJlZCAoIiVzID0gIiwgVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpbmRleCkpOworKwkgICAg dmFsdWVfcHJpbnQgKHZhbCwgZ2RiX3N0ZG91dCwgJm9wdHMpOworKwkgICAgcHV0Y2hhcl9maWx0 ZXJlZCAoJ1xuJyk7CisrCSAgfQorIAorLSAgcHJpbnRmX2ZpbHRlcmVkIChfKCJBbGwgQ09NTU9O IGJsb2NrcyB2aXNpYmxlIGF0IHRoaXMgbGV2ZWw6XG5cbiIpKTsKKysJcHV0Y2hhcl9maWx0ZXJl ZCAoJ1xuJyk7CisrICAgICAgfQorIAorLSAgd2hpbGUgKHRtcCAhPSBOVUxMKQorLSAgICB7Cist ICAgICAgaWYgKHN0cmNtcCAodG1wLT5vd25pbmdfZnVuY3Rpb24sIGZ1bm5hbWUpID09IDApCist CXByaW50Zl9maWx0ZXJlZCAoIiVzXG4iLCB0bXAtPm5hbWUpOworLQorLSAgICAgIHRtcCA9IHRt cC0+bmV4dDsKKy0gICAgfQorKyAgcmV0dXJuIHZhbHVlc19wcmludGVkOworIH0KKyAKKyAvKiBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcHJpbnQgb3V0IHRoZSB2YWx1ZXMgaW4gYSBnaXZlbiBD T01NT04gCitAQCAtNTAxLDExICs1MzUsOSBAQCBsaXN0X2FsbF92aXNpYmxlX2NvbW1vbnMgKGNo YXIgKmZ1bm5hbWUpCisgc3RhdGljIHZvaWQKKyBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpj b21uYW1lLCBpbnQgZnJvbV90dHkpCisgeworLSAgU0FWRURfRjc3X0NPTU1PTl9QVFIgdGhlX2Nv bW1vbjsKKy0gIENPTU1PTl9FTlRSWV9QVFIgZW50cnk7CisgICBzdHJ1Y3QgZnJhbWVfaW5mbyAq Zmk7CistICBjaGFyICpmdW5uYW1lID0gMDsKKy0gIHN0cnVjdCBzeW1ib2wgKmZ1bmM7CisrICBz dHJ1Y3QgYmxvY2sgKmJsb2NrOworKyAgaW50IHZhbHVlc19wcmludGVkID0gMDsKKyAKKyAgIC8q IFdlIGhhdmUgYmVlbiB0b2xkIHRvIGRpc3BsYXkgdGhlIGNvbnRlbnRzIG9mIEY3NyBDT01NT04g CisgICAgICBibG9jayBzdXBwb3NlZGx5IHZpc2libGUgaW4gdGhpcyBmdW5jdGlvbi4gIExldCB1 cyAKK0BAIC01MTcsNzQgKzU0OSwzMSBAQCBpbmZvX2NvbW1vbl9jb21tYW5kIChjaGFyICpjb21u YW1lLCBpbnQgCisgICAvKiBUaGUgZm9sbG93aW5nIGlzIGdlbmVyYWxseSByaXBwZWQgb2ZmIGZy b20gc3RhY2suYydzIHJvdXRpbmUgCisgICAgICBwcmludF9mcmFtZV9pbmZvKCkgKi8KKyAKKy0g IGZ1bmMgPSBmaW5kX3BjX2Z1bmN0aW9uIChnZXRfZnJhbWVfcGMgKGZpKSk7CistICBpZiAoZnVu YykKKysgIGJsb2NrID0gZ2V0X2ZyYW1lX2Jsb2NrIChmaSwgMCk7CisrICBpZiAoYmxvY2sgPT0g TlVMTCkKKyAgICAgeworLSAgICAgIC8qIEluIGNlcnRhaW4gcGF0aG9sb2dpY2FsIGNhc2VzLCB0 aGUgc3ltdGFicyBnaXZlIHRoZSB3cm9uZworLSAgICAgICAgIGZ1bmN0aW9uICh3aGVuIHdlIGFy ZSBpbiB0aGUgZmlyc3QgZnVuY3Rpb24gaW4gYSBmaWxlIHdoaWNoCistICAgICAgICAgaXMgY29t cGlsZWQgd2l0aG91dCBkZWJ1Z2dpbmcgc3ltYm9scywgdGhlIHByZXZpb3VzIGZ1bmN0aW9uCist ICAgICAgICAgaXMgY29tcGlsZWQgd2l0aCBkZWJ1Z2dpbmcgc3ltYm9scywgYW5kIHRoZSAiZm9v Lm8iIHN5bWJvbAorLSAgICAgICAgIHRoYXQgaXMgc3VwcG9zZWQgdG8gdGVsbCB1cyB3aGVyZSB0 aGUgZmlsZSB3aXRoIGRlYnVnZ2luZyBzeW1ib2xzCistICAgICAgICAgZW5kcyBoYXMgYmVlbiB0 cnVuY2F0ZWQgYnkgYXIgYmVjYXVzZSBpdCBpcyBsb25nZXIgdGhhbiAxNQorLSAgICAgICAgIGNo YXJhY3RlcnMpLgorLQorLSAgICAgICAgIFNvIGxvb2sgaW4gdGhlIG1pbmltYWwgc3ltYm9sIHRh YmxlcyBhcyB3ZWxsLCBhbmQgaWYgaXQgY29tZXMKKy0gICAgICAgICB1cCB3aXRoIGEgbGFyZ2Vy IGFkZHJlc3MgZm9yIHRoZSBmdW5jdGlvbiB1c2UgdGhhdCBpbnN0ZWFkLgorLSAgICAgICAgIEkg ZG9uJ3QgdGhpbmsgdGhpcyBjYW4gZXZlciBjYXVzZSBhbnkgcHJvYmxlbXM7IHRoZXJlIHNob3Vs ZG4ndAorLSAgICAgICAgIGJlIGFueSBtaW5pbWFsIHN5bWJvbHMgaW4gdGhlIG1pZGRsZSBvZiBh IGZ1bmN0aW9uLgorLSAgICAgICAgIEZJWE1FOiAgKE5vdCBuZWNlc3NhcmlseSB0cnVlLiAgV2hh dCBhYm91dCB0ZXh0IGxhYmVscykgKi8KKy0KKy0gICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Km1zeW1ib2wgPSAKKy0JbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChnZXRfZnJhbWVfcGMg KGZpKSk7CistCistICAgICAgaWYgKG1zeW1ib2wgIT0gTlVMTAorLQkgICYmIChTWU1CT0xfVkFM VUVfQUREUkVTUyAobXN5bWJvbCkKKy0JICAgICAgPiBCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NL X1ZBTFVFIChmdW5jKSkpKQorLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAobXN5bWJv bCk7CistICAgICAgZWxzZQorLQlmdW5uYW1lID0gU1lNQk9MX0xJTktBR0VfTkFNRSAoZnVuYyk7 CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq bXN5bWJvbCA9CistICAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChnZXRfZnJhbWVf cGMgKGZpKSk7CistCistICAgICAgaWYgKG1zeW1ib2wgIT0gTlVMTCkKKy0JZnVubmFtZSA9IFNZ TUJPTF9MSU5LQUdFX05BTUUgKG1zeW1ib2wpOworLSAgICAgIGVsc2UgLyogR290IG5vICdmdW5u YW1lJywgY29kZSBiZWxvdyB3aWxsIGZhaWwuICAqLworLQllcnJvciAoXygiTm8gZnVuY3Rpb24g Zm91bmQgZm9yIGZyYW1lLiIpKTsKKysgICAgICBwcmludGZfZmlsdGVyZWQgKF8oIk5vIHN5bWJv bCB0YWJsZSBpbmZvIGF2YWlsYWJsZS5cbiIpKTsKKysgICAgICByZXR1cm47CisgICAgIH0KKyAK Ky0gIC8qIElmIGNvbW5hbWUgaXMgTlVMTCwgd2UgYXNzdW1lIHRoZSB1c2VyIHdpc2hlcyB0byBz ZWUgdGhlIAorLSAgICAgd2hpY2ggQ09NTU9OIGJsb2NrcyBhcmUgdmlzaWJsZSBoZXJlIGFuZCB0 aGVuIHJldHVybiAqLworLQorLSAgaWYgKGNvbW5hbWUgPT0gMCkKKysgIHdoaWxlIChibG9jaykK KyAgICAgeworLSAgICAgIGxpc3RfYWxsX3Zpc2libGVfY29tbW9ucyAoZnVubmFtZSk7CistICAg ICAgcmV0dXJuOworKyAgICAgIGlmIChpbmZvX2NvbW1vbl9jb21tYW5kX2Zvcl9ibG9jayAoYmxv Y2ssIGZpLCBjb21uYW1lKSkKKysJdmFsdWVzX3ByaW50ZWQgPSAxOworKyAgICAgIC8qIEFmdGVy IGhhbmRsaW5nIHRoZSBmdW5jdGlvbidzIHRvcC1sZXZlbCBibG9jaywgc3RvcC4gIERvbid0Cisr ICAgICAgICAgY29udGludWUgdG8gaXRzIHN1cGVyYmxvY2ssIHRoZSBibG9jayBvZiBwZXItZmls ZSBzeW1ib2xzLiAgKi8KKysgICAgICBpZiAoQkxPQ0tfRlVOQ1RJT04gKGJsb2NrKSkKKysJYnJl YWs7CisrICAgICAgYmxvY2sgPSBCTE9DS19TVVBFUkJMT0NLIChibG9jayk7CisgICAgIH0KKyAK Ky0gIHRoZV9jb21tb24gPSBmaW5kX2NvbW1vbl9mb3JfZnVuY3Rpb24gKGNvbW5hbWUsIGZ1bm5h bWUpOworLQorLSAgaWYgKHRoZV9jb21tb24pCisrICBpZiAoIXZhbHVlc19wcmludGVkKQorICAg ICB7CistICAgICAgaWYgKHN0cmNtcCAoY29tbmFtZSwgQkxBTktfQ09NTU9OX05BTUVfTE9DQUwp ID09IDApCistCXByaW50Zl9maWx0ZXJlZCAoXygiQ29udGVudHMgb2YgYmxhbmsgQ09NTU9OIGJs b2NrOlxuIikpOworKyAgICAgIGlmIChjb21uYW1lKQorKwlwcmludGZfZmlsdGVyZWQgKF8oIk5v IGNvbW1vbiBibG9jayAnJXMnLlxuIiksIGNvbW5hbWUpOworICAgICAgIGVsc2UKKy0JcHJpbnRm X2ZpbHRlcmVkIChfKCJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICclcyc6XG4iKSwgY29t bmFtZSk7CistCistICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKKy0gICAgICBlbnRyeSA9 IHRoZV9jb21tb24tPmVudHJpZXM7CistCistICAgICAgd2hpbGUgKGVudHJ5ICE9IE5VTEwpCist CXsKKy0JICBwcmludF92YXJpYWJsZV9hbmRfdmFsdWUgKE5VTEwsIGVudHJ5LT5zeW1ib2wsIGZp LCBnZGJfc3Rkb3V0LCAwKTsKKy0JICBlbnRyeSA9IGVudHJ5LT5uZXh0OworLQl9CisrCXByaW50 Zl9maWx0ZXJlZCAoXygiTm8gY29tbW9uIGJsb2Nrcy5cbiIpKTsKKyAgICAgfQorLSAgZWxzZQor LSAgICBwcmludGZfZmlsdGVyZWQgKF8oIkNhbm5vdCBsb2NhdGUgdGhlIGNvbW1vbiBibG9jayAl cyBpbiBmdW5jdGlvbiAnJXMnXG4iKSwKKy0JCSAgICAgY29tbmFtZSwgZnVubmFtZSk7CisgfQor IAorIHZvaWQKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9zdGFjay5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9zdGFjay5jCTIwMTAtMDEtMTUg MjE6MzU6MTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3Rh Y2suYwkyMDEwLTAxLTE1IDIxOjM1OjI3LjAwMDAwMDAwMCArMDEwMAorQEAgLTE0NzQsNiArMTQ3 NCw4IEBAIHByaW50X2Jsb2NrX2ZyYW1lX2xvY2FscyAoc3RydWN0IGJsb2NrICoKKyAJY2FzZSBM T0NfQ09NUFVURUQ6CisgCSAgaWYgKFNZTUJPTF9JU19BUkdVTUVOVCAoc3ltKSkKKyAJICAgIGJy ZWFrOworKwkgIGlmIChTWU1CT0xfRE9NQUlOIChzeW0pID09IENPTU1PTl9CTE9DS19ET01BSU4p CisrCSAgICBicmVhazsKKyAJICB2YWx1ZXNfcHJpbnRlZCA9IDE7CisgCSAgcHJpbnRfdmFyaWFi bGVfYW5kX3ZhbHVlIChOVUxMLCBzeW0sIGZyYW1lLCBzdHJlYW0sIDQgKiBudW1fdGFicyk7Cisg CSAgYnJlYWs7CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvc3ltdGFiLmgKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3N5bXRhYi5oCTIwMTAtMDEt MTUgMjE6MzU6MTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv c3ltdGFiLmgJMjAxMC0wMS0xNSAyMTozNTo1Ny4wMDAwMDAwMDAgKzAxMDAKK0BAIC00MDEsNyAr NDAxLDEwIEBAIHR5cGVkZWYgZW51bSBkb21haW5fZW51bV90YWcKKyAgIFRZUEVTX0RPTUFJTiwK KyAKKyAgIC8qIEZvcnRyYW4gbW9kdWxlLiAgVGhlaXIgbmFtaW5nIG11c3QgYmUgc2VwYXJhdGUu ICAqLworLSAgTU9EVUxFX0RPTUFJTgorKyAgTU9EVUxFX0RPTUFJTiwKKysKKysgIC8qIEZvcnRy YW4gY29tbW9uIGJsb2Nrcy4gIFRoZWlyIG5hbWluZyBtdXN0IGJlIHNlcGFyYXRlIGZyb20gVkFS X0RPTUFJTi4gICovCisrICBDT01NT05fQkxPQ0tfRE9NQUlOCisgfQorIGRvbWFpbl9lbnVtOwor IAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24t YmxvY2suZXhwCitAQCAtMCwwICsxLDEwMSBAQAorKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK KysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMg CisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0 aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKysjIEZvdW5k YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjEx MS0xMzA3LCBVU0EuICAKKysKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrc2V0IHRlc3RmaWxlICJjb21t b24tYmxvY2siCisrc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCisrc2V0IGJpbmZpbGUgJHtv YmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorKworK2lmICB7IFtnZGJfY29tcGlsZSAiJHtz cmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVi dWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxl ICR7c3JjZmlsZX0iCisrICAgIHJldHVybiAtMQorK30KKysKKytnZGJfZXhpdAorK2dkYl9zdGFy dAorK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgorK2dkYl9sb2FkICR7Ymlu ZmlsZX0KKysKKytpZiAhW3J1bnRvIE1BSU5fX10gdGhlbiB7CisrICAgIHBlcnJvciAiY291bGRu J3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgorKyAgICBjb250aW51ZQorK30KKysKKytnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAic3RvcC1oZXJlLW91dCJdCisrZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0b3AtaGVyZS1vdXQiCisrCisrIyBDb21tb24gYmxvY2sg bmFtaW5nIHdpdGggc291cmNlIG5hbWUgL2Zvby86CisrIyAgICAgICAgICAgICAgICAuc3ltdGFi ICBEV19UQUdfY29tbW9uX2Jsb2NrJ3MgRFdfQVRfbmFtZQorKyMgSW50ZWwgRm9ydHJhbiAgZm9v XyAgICAgZm9vXworKyMgR05VIEZvcnRyYW4gICAgZm9vXyAgICAgZm9vCisrI3NldCBzdWZmaXgg Il8iCisrc2V0IHN1ZmZpeCAiIgorKworK3NldCBpbnQ0IHsoaW50ZWdlclwoa2luZD00XCl8SU5U RUdFUlwoNFwpKX0KKytzZXQgcmVhbDQgeyhyZWFsXChraW5kPTRcKXxSRUFMXCg0XCkpfQorK3Nl dCByZWFsOCB7KHJlYWxcKGtpbmQ9OFwpfFJFQUxcKDhcKSl9CisrCisrZ2RiX3Rlc3QgIndoYXRp cyBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4 dC4iCisrZ2RiX3Rlc3QgInB0eXBlIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4 XCIgaW4gY3VycmVudCBjb250ZXh0LiIKKytnZGJfdGVzdCAicCBmb28kc3VmZml4IiAiTm8gc3lt Ym9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCisrZ2RiX3Rlc3QgIndoYXRp cyBmb19vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvX28kc3VmZml4XCIgaW4gY3VycmVudCBjb250 ZXh0LiIKKytnZGJfdGVzdCAicHR5cGUgZm9fbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb19vJHN1 ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCisrZ2RiX3Rlc3QgInAgZm9fbyRzdWZmaXgiICJO byBzeW1ib2wgXCJmb19vJHN1ZmZpeFwiIGluIGN1cnJlbnQgY29udGV4dC4iCisrCisrZ2RiX3Rl c3QgImluZm8gbG9jYWxzIiAiaXhfeCA9IDExXHJcbml5X3kgPSAyMlxyXG5pel96ID0gMzNcclxu aXggPSAxXHJcbml5ID0gMlxyXG5peiA9IDMiICJpbmZvIGxvY2FscyBvdXQiCisrZ2RiX3Rlc3Qg ImluZm8gY29tbW9uIiAiQ29udGVudHMgb2YgRjc3IENPTU1PTiBibG9jayAnZm9fbyc6XHJcbml4 X3ggPSAxMVxyXG5peV95ID0gMjJcclxuaXpfeiA9IDMzXHJcblxyXG5Db250ZW50cyBvZiBGNzcg Q09NTU9OIGJsb2NrICdmb28nOlxyXG5peCA9IDFcclxuaXkgPSAyXHJcbml6ID0gMyIgImluZm8g Y29tbW9uIG91dCIKKysKKytnZGJfdGVzdCAicHR5cGUgaXgiICJ0eXBlID0gJGludDQiICJwdHlw ZSBpeCBvdXQiCisrZ2RiX3Rlc3QgInB0eXBlIGl5IiAidHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5 IG91dCIKKytnZGJfdGVzdCAicHR5cGUgaXoiICJ0eXBlID0gJHJlYWw4IiAicHR5cGUgaXogb3V0 IgorK2dkYl90ZXN0ICJwdHlwZSBpeF94IiAidHlwZSA9ICRpbnQ0IiAicHR5cGUgaXhfeCBvdXQi CisrZ2RiX3Rlc3QgInB0eXBlIGl5X3kiICJ0eXBlID0gJHJlYWw0IiAicHR5cGUgaXlfeSBvdXQi CisrZ2RiX3Rlc3QgInB0eXBlIGl6X3oiICJ0eXBlID0gJHJlYWw4IiAicHR5cGUgaXpfeiBvdXQi CisrCisrZ2RiX3Rlc3QgInAgaXgiICIgPSAxICoiICJwIGl4IG91dCIKKytnZGJfdGVzdCAicCBp eSIgIiA9IDIgKiIgInAgaXkgb3V0IgorK2dkYl90ZXN0ICJwIGl6IiAiID0gMyAqIiAicCBpeiBv dXQiCisrZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDExICoiICJwIGl4X3ggb3V0IgorK2dkYl90ZXN0 ICJwIGl5X3kiICIgPSAyMiAqIiAicCBpeV95IG91dCIKKytnZGJfdGVzdCAicCBpel96IiAiID0g MzMgKiIgInAgaXpfeiBvdXQiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1i ZXIgInN0b3AtaGVyZS1pbiJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0b3AtaGVy ZS1pbiIKKysKKytnZGJfdGVzdCAid2hhdGlzIGZvbyRzdWZmaXgiICJObyBzeW1ib2wgXCJmb28k c3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgIndoYXRpcyBmb28kc3VmZml4IGluIgorK2dk Yl90ZXN0ICJwdHlwZSBmb28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9vJHN1ZmZpeFwiIGluIGN1 cnJlbnQgY29udGV4dC4iICJwdHlwZSBmb28kc3VmZml4IGluIgorK2dkYl90ZXN0ICJwIGZvbyRz dWZmaXgiICJObyBzeW1ib2wgXCJmb28kc3VmZml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgInAg Zm9vJHN1ZmZpeCBpbiIKKytnZGJfdGVzdCAid2hhdGlzIGZvX28kc3VmZml4IiAiTm8gc3ltYm9s IFwiZm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50IGNvbnRleHQuIiAid2hhdGlzIGZvX28kc3VmZml4 IGluIgorK2dkYl90ZXN0ICJwdHlwZSBmb19vJHN1ZmZpeCIgIk5vIHN5bWJvbCBcImZvX28kc3Vm Zml4XCIgaW4gY3VycmVudCBjb250ZXh0LiIgInB0eXBlIGZvX28kc3VmZml4IGluIgorK2dkYl90 ZXN0ICJwIGZvX28kc3VmZml4IiAiTm8gc3ltYm9sIFwiZm9fbyRzdWZmaXhcIiBpbiBjdXJyZW50 IGNvbnRleHQuIiAicCBmb19vJHN1ZmZpeCBpbiIKKysKKytnZGJfdGVzdCAiaW5mbyBsb2NhbHMi ICJpeCA9IDExXHJcbml5MiA9IDIyXHJcbml6ID0gMzNcclxuaXhfeCA9IDFcclxuaXlfeSA9IDJc clxuaXpfejIgPSAzXHJcbml5ID0gNVxyXG5pel96ID0gNTUiICJpbmZvIGxvY2FscyBpbiIKKytn ZGJfdGVzdCAiaW5mbyBjb21tb24iICJDb250ZW50cyBvZiBGNzcgQ09NTU9OIGJsb2NrICdmb19v JzpcclxuaXggPSAxMVxyXG5peTIgPSAyMlxyXG5peiA9IDMzXHJcblxyXG5Db250ZW50cyBvZiBG NzcgQ09NTU9OIGJsb2NrICdmb28nOlxyXG5peF94ID0gMVxyXG5peV95ID0gMlxyXG5pel96MiA9 IDMiICJpbmZvIGNvbW1vbiBpbiIKKysKKytnZGJfdGVzdCAicHR5cGUgaXgiICJ0eXBlID0gJGlu dDQiICJwdHlwZSBpeCBpbiIKKytnZGJfdGVzdCAicHR5cGUgaXkyIiAidHlwZSA9ICRyZWFsNCIg InB0eXBlIGl5MiBpbiIKKytnZGJfdGVzdCAicHR5cGUgaXoiICJ0eXBlID0gJHJlYWw4IiAicHR5 cGUgaXogaW4iCisrZ2RiX3Rlc3QgInB0eXBlIGl4X3giICJ0eXBlID0gJGludDQiICJwdHlwZSBp eF94IGluIgorK2dkYl90ZXN0ICJwdHlwZSBpeV95IiAidHlwZSA9ICRyZWFsNCIgInB0eXBlIGl5 X3kgaW4iCisrZ2RiX3Rlc3QgInB0eXBlIGl6X3oyIiAidHlwZSA9ICRyZWFsOCIgInB0eXBlIGl6 X3oyIGluIgorKworK2dkYl90ZXN0ICJwIGl4IiAiID0gMTEgKiIgInAgaXggaW4iCisrZ2RiX3Rl c3QgInAgaXkyIiAiID0gMjIgKiIgInAgaXkyIGluIgorK2dkYl90ZXN0ICJwIGl6IiAiID0gMzMg KiIgInAgaXogaW4iCisrZ2RiX3Rlc3QgInAgaXhfeCIgIiA9IDEgKiIgInAgaXhfeCBpbiIKKytn ZGJfdGVzdCAicCBpeV95IiAiID0gMiAqIiAicCBpeV95IGluIgorK2dkYl90ZXN0ICJwIGl6X3oy IiAiID0gMyAqIiAicCBpel96MiBpbiIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmY5MAorQEAgLTAsMCArMSw2NyBAQAorKyEgQ29w eXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIQorKyEgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyshIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrISB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyEgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEKKyshIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl ZSBTb2Z0d2FyZQorKyEgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg MzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyshCisrISBJaGlzIGZpbGUgaXMgdGhl IEZvcnRyYW4gc291cmNlIGZpbGUgZm9yIGR5bmFtaWMuZXhwLgorKyEgT3JpZ2luYWwgZmlsZSB3 cml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+LgorKyEgTW9kaWZpZWQg Zm9yIHRoZSBHREIgdGVzdGNhc2UgYnkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJl ZGhhdC5jb20+LgorKworK3N1YnJvdXRpbmUgaW4KKysKKysgICBJTlRFR0VSKjQgICAgICAgICAg ICBpeAorKyAgIFJFQUwqNCAgICAgICAgICAgICAgIGl5MgorKyAgIFJFQUwqOCAgICAgICAgICAg ICAgIGl6CisrCisrICAgSU5URUdFUio0ICAgICAgICAgICAgaXhfeAorKyAgIFJFQUwqNCAgICAg ICAgICAgICAgIGl5X3kKKysgICBSRUFMKjggICAgICAgICAgICAgICBpel96MgorKworKyAgIGNv bW1vbiAvZm9fby9peCxpeTIsaXoKKysgICBjb21tb24gL2Zvby9peF94LGl5X3ksaXpfejIKKysK KysgICBpeSA9IDUKKysgICBpel96ID0gNTUKKysKKysgICBpZiAoaXggLm5lLiAxMSAub3IuIGl5 MiAubmUuIDIyLjAgLm9yLiBpeiAubmUuIDMzLjApIGNhbGwgYWJvcnQKKysgICBpZiAoaXhfeCAu bmUuIDEgLm9yLiBpeV95IC5uZS4gMi4wIC5vci4gaXpfejIgLm5lLiAzLjApIGNhbGwgYWJvcnQK KysKKysgICBpeCA9IDAJCQkJCSEgc3RvcC1oZXJlLWluCisrCisrZW5kIHN1YnJvdXRpbmUgaW4K KysKKytwcm9ncmFtIGNvbW1vbl90ZXN0CisrCisrICAgSU5URUdFUio0ICAgICAgICAgICAgaXgK KysgICBSRUFMKjQgICAgICAgICAgICAgICBpeQorKyAgIFJFQUwqOCAgICAgICAgICAgICAgIGl6 CisrCisrICAgSU5URUdFUio0ICAgICAgICAgICAgaXhfeAorKyAgIFJFQUwqNCAgICAgICAgICAg ICAgIGl5X3kKKysgICBSRUFMKjggICAgICAgICAgICAgICBpel96CisrCisrICAgY29tbW9uIC9m b28vaXgsaXksaXoKKysgICBjb21tb24gL2ZvX28vaXhfeCxpeV95LGl6X3oKKysKKysgICBpeCA9 IDEKKysgICBpeSA9IDIuMAorKyAgIGl6ID0gMy4wCisrCisrICAgaXhfeCA9IDExCisrICAgaXlf eSA9IDIyLjAKKysgICBpel96ID0gMzMuMAorKworKyAgIGNhbGwgaW4JCQkJCSEgc3RvcC1oZXJl LW91dAorKworK2VuZCBwcm9ncmFtIGNvbW1vbl90ZXN0CgpkaWZmIC0tZ2l0IGEvZ2RiLWZvcnRy YW4tbG9naWNhbDgucGF0Y2ggYi9nZGItZm9ydHJhbi1sb2dpY2FsOC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWRiNjVhCi0tLSAvZGV2L251bGwKKysrIGIvZ2Ri LWZvcnRyYW4tbG9naWNhbDgucGF0Y2gKQEAgLTAsMCArMSwxNTMgQEAKKy0tLSBhL2dkYi9mLWV4 cC55CisrKysgYi9nZGIvZi1leHAueQorQEAgLTE5Niw2ICsxOTYsNyBAQCBzdGF0aWMgaW50IHBh cnNlX251bWJlciAoY2hhciAqLCBpbnQsIGludCwgWVlTVFlQRSAqKTsKKyAvKiBTcGVjaWFsIHR5 cGUgY2FzZXMsIHB1dCBpbiB0byBhbGxvdyB0aGUgcGFyc2VyIHRvIGRpc3Rpbmd1aXNoIGRpZmZl cmVudAorICAgIGxlZ2FsIGJhc2V0eXBlcy4gICovCisgJXRva2VuIElOVF9LRVlXT1JEIElOVF9T Ml9LRVlXT1JEIExPR0lDQUxfUzFfS0VZV09SRCBMT0dJQ0FMX1MyX0tFWVdPUkQgCisrJXRva2Vu IExPR0lDQUxfUzhfS0VZV09SRCAKKyAldG9rZW4gTE9HSUNBTF9LRVlXT1JEIFJFQUxfS0VZV09S RCBSRUFMX1M4X0tFWVdPUkQgUkVBTF9TMTZfS0VZV09SRCAKKyAldG9rZW4gQ09NUExFWF9TOF9L RVlXT1JEIENPTVBMRVhfUzE2X0tFWVdPUkQgQ09NUExFWF9TMzJfS0VZV09SRCAKKyAldG9rZW4g Qk9PTF9BTkQgQk9PTF9PUiBCT09MX05PVCAgIAorQEAgLTYwNiw2ICs2MDcsOCBAQCB0eXBlYmFz ZSAgLyogSW1wbGVtZW50cyAoYXBwcm94aW1hdGVseSk6ICh0eXBlLXF1YWxpZmllcikqIHR5cGUt c3BlY2lmaWVyICovCisgCQkJeyAkJCA9IHBhcnNlX2ZfdHlwZS0+YnVpbHRpbl9pbnRlZ2VyX3My OyB9CisgCXwJQ0hBUkFDVEVSIAorIAkJCXsgJCQgPSBwYXJzZV9mX3R5cGUtPmJ1aWx0aW5fY2hh cmFjdGVyOyB9CisrCXwJTE9HSUNBTF9TOF9LRVlXT1JECisrCQkJeyAkJCA9IHBhcnNlX2ZfdHlw ZS0+YnVpbHRpbl9sb2dpY2FsX3M4O30KKyAJfAlMT0dJQ0FMX0tFWVdPUkQgCisgCQkJeyAkJCA9 IHBhcnNlX2ZfdHlwZS0+YnVpbHRpbl9sb2dpY2FsOyB9CisgCXwJTE9HSUNBTF9TMl9LRVlXT1JE CitAQCAtODU4LDYgKzg2MSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdG9rZW4gZjc3X2tleXdv cmRzW10gPQorICAgeyAiaW50ZWdlcl8yIiwgSU5UX1MyX0tFWVdPUkQsIEJJTk9QX0VORCB9LAor ICAgeyAibG9naWNhbF8xIiwgTE9HSUNBTF9TMV9LRVlXT1JELCBCSU5PUF9FTkQgfSwKKyAgIHsg ImxvZ2ljYWxfMiIsIExPR0lDQUxfUzJfS0VZV09SRCwgQklOT1BfRU5EIH0sCisrICB7ICJsb2dp Y2FsXzgiLCBMT0dJQ0FMX1M4X0tFWVdPUkQsIEJJTk9QX0VORCB9LAorICAgeyAiY29tcGxleF84 IiwgQ09NUExFWF9TOF9LRVlXT1JELCBCSU5PUF9FTkQgfSwKKyAgIHsgImludGVnZXIiLCBJTlRf S0VZV09SRCwgQklOT1BfRU5EIH0sCisgICB7ICJsb2dpY2FsIiwgTE9HSUNBTF9LRVlXT1JELCBC SU5PUF9FTkQgfSwKKy0tLSBhL2dkYi9mLWxhbmcuYworKysrIGIvZ2RiL2YtbGFuZy5jCitAQCAt MjU5LDYgKzI0NSw3IEBAIGVudW0gZl9wcmltaXRpdmVfdHlwZXMgeworICAgZl9wcmltaXRpdmVf dHlwZV9sb2dpY2FsLAorICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3MxLAorICAgZl9wcmlt aXRpdmVfdHlwZV9sb2dpY2FsX3MyLAorKyAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3M4LAor ICAgZl9wcmltaXRpdmVfdHlwZV9pbnRlZ2VyLAorICAgZl9wcmltaXRpdmVfdHlwZV9pbnRlZ2Vy X3MyLAorICAgZl9wcmltaXRpdmVfdHlwZV9yZWFsLAorQEAgLTI4OSw2ICsyNzYsOCBAQCBmX2xh bmd1YWdlX2FyY2hfaW5mbyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgID0gYnVpbHRp bi0+YnVpbHRpbl9sb2dpY2FsX3MxOworICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2Zf cHJpbWl0aXZlX3R5cGVfbG9naWNhbF9zMl0KKyAgICAgPSBidWlsdGluLT5idWlsdGluX2xvZ2lj YWxfczI7CisrICBsYWktPnByaW1pdGl2ZV90eXBlX3ZlY3RvciBbZl9wcmltaXRpdmVfdHlwZV9s b2dpY2FsX3M4XQorKyAgICA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zODsKKyAgIGxhaS0+ cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtmX3ByaW1pdGl2ZV90eXBlX3JlYWxdCisgICAgID0gYnVp bHRpbi0+YnVpbHRpbl9yZWFsOworICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJp bWl0aXZlX3R5cGVfcmVhbF9zOF0KK0BAIC0zNzIsNiArMzYxLDEwIEBAIGJ1aWxkX2ZvcnRyYW5f dHlwZXMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgICA9IGFyY2hfYm9vbGVhbl90eXBl IChnZGJhcmNoLCBnZGJhcmNoX3Nob3J0X2JpdCAoZ2RiYXJjaCksIDEsCisgCQkJICJsb2dpY2Fs KjIiKTsKKyAKKysgIGJ1aWx0aW5fZl90eXBlLT5idWlsdGluX2xvZ2ljYWxfczgKKysgICAgPSBh cmNoX2Jvb2xlYW5fdHlwZSAoZ2RiYXJjaCwgZ2RiYXJjaF9sb25nX2xvbmdfYml0IChnZGJhcmNo KSwgMSwKKysJCQkgImxvZ2ljYWwqOCIpOworKworICAgYnVpbHRpbl9mX3R5cGUtPmJ1aWx0aW5f aW50ZWdlcgorICAgICA9IGFyY2hfaW50ZWdlcl90eXBlIChnZGJhcmNoLCBnZGJhcmNoX2ludF9i aXQgKGdkYmFyY2gpLCAwLAorIAkJCSAiaW50ZWdlciIpOworLS0tIGEvZ2RiL2YtbGFuZy5oCisr KysgYi9nZGIvZi1sYW5nLmgKK0BAIC0xMTMsNiArODAsNyBAQCBzdHJ1Y3QgYnVpbHRpbl9mX3R5 cGUKKyAgIHN0cnVjdCB0eXBlICpidWlsdGluX2xvZ2ljYWw7CisgICBzdHJ1Y3QgdHlwZSAqYnVp bHRpbl9sb2dpY2FsX3MxOworICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fbG9naWNhbF9zMjsKKysg IHN0cnVjdCB0eXBlICpidWlsdGluX2xvZ2ljYWxfczg7CisgICBzdHJ1Y3QgdHlwZSAqYnVpbHRp bl9yZWFsOworICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fcmVhbF9zODsKKyAgIHN0cnVjdCB0eXBl ICpidWlsdGluX3JlYWxfczE2OworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9sb2dpY2FsLmV4cAorQEAgLTAsMCArMSw0NCBAQAorKyMgQ29weXJpZ2h0IDIw MDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgorKyMgCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMgCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh cmUKKysjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9z dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKKysKKysjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBi eSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrc2V0IHRl c3RmaWxlICJsb2dpY2FsIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAorK3NldCBiaW5m aWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKytpZiAgeyBbZ2RiX2NvbXBp bGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFi bGUge2RlYnVnIGY3NyBxdWlldH1dICE9ICIiIH0geworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSAke3NyY2ZpbGV9IgorKyAgICByZXR1cm4gLTEKKyt9CisrCisrZ2RiX2V4aXQKKytn ZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJfbG9h ZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50byBNQUlOX19dIHRoZW4geworKyAgICBwZXJyb3Ig ImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKKysgICAgY29udGludWUKKyt9Cisr CisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInN0b3AtaGVyZSJdCisrZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInN0b3AtaGVyZSIKKytnZGJfdGVzdCAicCBsIiAiID0g XFwuVFJVRVxcLiIKKytnZGJfdGVzdCAicCBsMSIgIiA9IFxcLlRSVUVcXC4iCisrZ2RiX3Rlc3Qg InAgbDIiICIgPSBcXC5UUlVFXFwuIgorK2dkYl90ZXN0ICJwIGw0IiAiID0gXFwuVFJVRVxcLiIK KytnZGJfdGVzdCAicCBsOCIgIiA9IFxcLlRSVUVcXC4iCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9sb2dpY2FsLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bG9naWNhbC5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi40MjI5MzA0 CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xvZ2ljYWwu ZjkwCitAQCAtMCwwICsxLDMzIEBACisrISBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyshCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyshIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu c2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyEKKyshIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl ZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrIQorKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyshIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrISBGb3VuZGF0aW9uLCBJ bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywg VVNBLgorKyEKKyshIEloaXMgZmlsZSBpcyB0aGUgRm9ydHJhbiBzb3VyY2UgZmlsZSBmb3IgZHlu YW1pYy5leHAuCisrISBPcmlnaW5hbCBmaWxlIHdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFr dWJAcmVkaGF0LmNvbT4uCisrISBNb2RpZmllZCBmb3IgdGhlIEdEQiB0ZXN0Y2FzZSBieSBKYW4g S3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCisrCisrcHJvZ3JhbSB0ZXN0 CisrICBsb2dpY2FsIDo6IGwKKysgIGxvZ2ljYWwgKGtpbmQ9MSkgOjogbDEKKysgIGxvZ2ljYWwg KGtpbmQ9MikgOjogbDIKKysgIGxvZ2ljYWwgKGtpbmQ9NCkgOjogbDQKKysgIGxvZ2ljYWwgKGtp bmQ9OCkgOjogbDgKKysgIGwgPSAuVFJVRS4KKysgIGwxID0gLlRSVUUuCisrICBsMiA9IC5UUlVF LgorKyAgbDQgPSAuVFJVRS4KKysgIGw4ID0gLlRSVUUuCisrICBsID0gLkZBTFNFLgkJCQkJISBz dG9wLWhlcmUKKytlbmQKCmRpZmYgLS1naXQgYS9nZGItbGluZW5vLW1ha2V1cC10ZXN0LnBhdGNo IGIvZ2RiLWxpbmVuby1tYWtldXAtdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4wNzM2NjJhCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWxpbmVuby1tYWtldXAt dGVzdC5wYXRjaApAQCAtMCwwICsxLDE1MSBAQAorTmV3IHRlc3RjYXNlIGZvcjoKK2h0dHBzOi8v YnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NDY2MjIyCisJKGZvciB0aGUgZmly c3QgLyBjdXN0b21lciByZWNvbW1lbmRlZCBmaXgpCithbmQgdGhlIHVwc3RyZWFtIGZpeDoKK2h0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA2LTExL21zZzAwMjUzLmh0bWwK KwlbcmZjXSBEbyBub3QgbWFrZSB1cCBsaW5lIGluZm9ybWF0aW9uCitodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLWN2cy8yMDA2LTExL21zZzAwMTI3Lmh0bWwKKworLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9saW5lbm8tbWFrZXVwLWZ1bmMuYworQEAgLTAs MCArMSwyMSBAQAorKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCisrCisrICAgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisr ICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dy YW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysg ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy YW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworK3Zv aWQKKytmdW5jICh2b2lkKQorK3sKKyt9CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2xpbmVuby1tYWtldXAuYworQEAgLTAsMCArMSwzNSBAQAorKy8qIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJp Z2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKy8qIERXX0FUX2xvd19wYy1EV19BVF9o aWdoX3BjIHNob3VsZCBjb3ZlciB0aGUgZnVuY3Rpb24gd2l0aG91dCBsaW5lIG51bWJlcgorKyAg IGluZm9ybWF0aW9uICguZGVidWdfbGluZSkgc28gd2UgY2Fubm90IHVzZSBhbiBleHRlcm5hbCBv YmplY3QgZmlsZS4KKysgICAKKysgICBJdCBtdXN0IG5vdCBiZSBqdXN0IGEgbGFiZWwgYXMgaXQg d291bGQgYWxpYXMgb24gdGhlIG5leHQgZnVuY3Rpb24gZXZlbiBmb3IKKysgICBjb3JyZWN0IEdE Qi4gIFRoZXJlZm9yZSBzb21lIHN0dWIgZGF0YSBtdXN0IGJlIHBsYWNlZCB0aGVyZS4KKysgICAK KysgICBXZSBuZWVkIHRvIHByb3ZpZGUgYSByZWFsIHN0dWIgZnVuY3Rpb24gYm9keSBhcyBhdCBs ZWFzdCBzMzkwCisrICAgKHMzOTBfYW5hbHl6ZV9wcm9sb2d1ZSkgd291bGQgc2tpcCB0aGUgd2hv bGUgYm9keSB0aWxsIHJlYWNoaW5nIGBtYWluJy4gICovCisrCisrZXh0ZXJuIHZvaWQgZnVuYyAo dm9pZCk7CisrYXNtICgiZnVuYzogLmluY2JpbiBcImdkYi5iYXNlL2xpbmVuby1tYWtldXAtZnVu Yy5iaW5cIiIpOworKworK2ludAorK21haW4gKHZvaWQpCisreworKyAgZnVuYyAoKTsKKysgIHJl dHVybiAwOworK30KKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv bGluZW5vLW1ha2V1cC5leHAKK0BAIC0wLDAgKzEsNzggQEAKKysjIENvcHlyaWdodCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgImxpbmVuby1tYWtldXAiCisrc2V0IHNyY2Z1bmNmaWxl ICR7dGVzdGZpbGV9LWZ1bmMuYworK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKKytzZXQgb2Jq ZnVuY2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLm8KKytzZXQgYmlu ZnVuY2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS1mdW5jLmJpbgorK3NldCBi aW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KKysKKytpZiB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2Z1bmNmaWxlfSIgIiR7b2JqZnVuY2ZpbGV9 IiBvYmplY3Qge31dICE9ICIiIH0geworKyAgICBnZGJfc3VwcHJlc3NfZW50aXJlX2ZpbGUgIlRl c3RjYXNlIGNvbXBpbGUgZmFpbGVkLCBzbyBhbGwgdGVzdHMgaW4gdGhpcyBmaWxlIHdpbGwgYXV0 b21hdGljYWxseSBmYWlsLiIKKyt9CisrCisrc2V0IG9iamNvcHkgW2NhdGNoICJleGVjIG9iamNv cHkgLU8gYmluYXJ5IC0tb25seS1zZWN0aW9uIC50ZXh0ICR7b2JqZnVuY2ZpbGV9ICR7YmluZnVu Y2ZpbGV9IiBvdXRwdXRdCisrdmVyYm9zZSAtbG9nICJvYmpjb3B5PSRvYmpjb3B5OiAkb3V0cHV0 IgorK2lmIHsgJG9iamNvcHkgIT0gMCB9IHsKKysgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxl ICJUZXN0Y2FzZSBjb21waWxlIGZhaWxlZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxs IGF1dG9tYXRpY2FsbHkgZmFpbC4iCisrfQorK3NldCBiaW5mdW5jZmlsZXNpemUgW2ZpbGUgc2l6 ZSAkYmluZnVuY2ZpbGVdCisrdmVyYm9zZSAtbG9nICJmaWxlIHNpemUgJGJpbmZ1bmNmaWxlID0g JGJpbmZ1bmNmaWxlc2l6ZSIKKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9 IHsKKysgICAgZ2RiX3N1cHByZXNzX2VudGlyZV9maWxlICJUZXN0Y2FzZSBjb21waWxlIGZhaWxl ZCwgc28gYWxsIHRlc3RzIGluIHRoaXMgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgZmFpbC4iCisr fQorKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtiaW5maWxlfQorKworK3NldCBiX2FkZHIgIiIKKytzZXQg dGVzdCAiYnJlYWsgZnVuYyIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAg IC1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKyBhdCAoMHhcWzAtOWEtZlxdKylcclxuJGdkYl9wcm9t cHQgJCIgeworKwlzZXQgYl9hZGRyICRleHBlY3Rfb3V0KDEsc3RyaW5nKQorKwlwYXNzICR0ZXN0 CisrICAgIH0KKysgICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rIGF0ICgweFxbMC05YS1mXF0r KTogLipcclxuJGdkYl9wcm9tcHQgJCIgeworKwlzZXQgYl9hZGRyICRleHBlY3Rfb3V0KDEsc3Ry aW5nKQorKwlmYWlsICR0ZXN0CisrICAgIH0KKyt9CisrdmVyYm9zZSAtbG9nICJiX2FkZHI9PCRi X2FkZHI+IgorKworK3NldCBwX2FkZHIgIiIKKytzZXQgdGVzdCAicHJpbnQgZnVuYyIKKytnZGJf dGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXFwkXFswLTlcXSsgPSB7PHRl eHQgdmFyaWFibGUsIG5vIGRlYnVnIGluZm8+fSAoMHhcWzAtOWEtZlxdKykgPGZ1bmM+XHJcbiRn ZGJfcHJvbXB0ICQiIHsKKysJc2V0IHBfYWRkciAkZXhwZWN0X291dCgxLHN0cmluZykKKysJcGFz cyAkdGVzdAorKyAgICB9CisrfQorK3ZlcmJvc2UgLWxvZyAicF9hZGRyPTwkcF9hZGRyPiIKKysK KytzZXQgdGVzdCAiYnJlYWsgYWRkcmVzcyBiZWxvbmdzIHRvIGZ1bmMiCisraWYgeyRiX2FkZHIg PT0gJHBfYWRkcn0geworKyAgICBwYXNzICIkdGVzdCAoZXhhY3QgbWF0Y2gpIgorK30gZWxzZSB7 CisrICAgIHNldCBza2lwIFtleHByICRiX2FkZHIgLSAkcF9hZGRyXQorKyAgICBpZiB7JHNraXAg PiAwICYmICRza2lwIDwgJGJpbmZ1bmNmaWxlc2l6ZX0geworKwlwYXNzICIkdGVzdCAocHJvbG9n dWUgc2tpcCBieSAkc2tpcCBieXRlcykiCisrICAgIH0gZWxzZSB7CisrCWZhaWwgJHRlc3QKKysg ICAgfQorK30KCmRpZmYgLS1naXQgYS9nZGItb3JwaGFucmlwcGVyLmMgYi9nZGItb3JwaGFucmlw cGVyLmMKaW5kZXggNDg5M2U4Zi4uYjI4OTQ3NyAxMDA2NDQKLS0tIGEvZ2RiLW9ycGhhbnJpcHBl ci5jCisrKyBiL2dkYi1vcnBoYW5yaXBwZXIuYwpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUg PGFzc2VydC5oPgogI2luY2x1ZGUgPHB0eS5oPgogI2luY2x1ZGUgPHBvbGwuaD4KKyNpbmNsdWRl IDxzeXMvc3RhdC5oPgogCiAjZGVmaW5lIExFTkdUSCh4KSAoc2l6ZW9mICh4KSAvIHNpemVvZiAo Kih4KSkpCiAKQEAgLTg3LDYgKzg4LDggQEAgc3RhdGljIGludCByZWFkX291dCAoaW50IGFtYXN0 ZXIpCiAgIC8qIFdlaXJkIGJ1dCBhdCBsZWFzdCBhZnRlciBQT0xMSFVQIHdlIGdldCBFSU8gaW5z dGVhZCBvZiBqdXN0IEVPRi4gICovCiAgIGlmIChidWZfZ290ID09IC0xICYmIGVycm5vID09IEVJ TykKICAgICByZXR1cm4gMDsKKyAgaWYgKGJ1Zl9nb3QgPT0gLTEgJiYgZXJybm8gPT0gRUFHQUlO KQorICAgIHJldHVybiAwOwogICBpZiAoYnVmX2dvdCA8IDApCiAgICAgewogICAgICAgcGVycm9y ICgicmVhZCAoYW1hc3RlcikiKTsKCmRpZmYgLS1naXQgYS9nZGItcHBjLWh3LXdhdGNocG9pbnQt dHdpY2UucGF0Y2ggYi9nZGItcHBjLWh3LXdhdGNocG9pbnQtdHdpY2UucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzNjMxNTguLjAwMDAwMDAKLS0tIGEvZ2RiLXBwYy1ody13 YXRjaHBvaW50LXR3aWNlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotcGNj IHJlZ3Jlc3Npb24gZnJvbToKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDA4LTEyL21zZzAwMTQzLmh0bWwKLQotZ2RiLwotMjAwOS0xMi0yMSAgSmFuIEtyYXRvY2h2aWwg IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBicmVha3BvaW50LmMgKHVwZGF0ZV93 YXRjaHBvaW50KTogU2V0IEItPlRZUEUgdG8gYnBfd2F0Y2hwb2ludCBiZWZvcmUKLQljYWxsaW5n IGh3X3dhdGNocG9pbnRfdXNlZF9jb3VudC4KLQotLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwotKysr IGIvZ2RiL2JyZWFrcG9pbnQuYwotQEAgLTExNTIsNiArMTE1Miw5IEBAIHVwZGF0ZV93YXRjaHBv aW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgaW50IHJlcGFyc2UpCi0gCSAgewotIAkgICAgaW50 IGksIG1lbV9jbnQsIG90aGVyX3R5cGVfdXNlZDsKLSAKLSsJICAgIC8qIERvIG5vdCBjb3VudCB3 aXRoIEIgdHdpY2UgYmVsb3cuICAqLwotKwkgICAgYi0+dHlwZSA9IGJwX3dhdGNocG9pbnQ7Ci0r Ci0gCSAgICBpID0gaHdfd2F0Y2hwb2ludF91c2VkX2NvdW50IChicF9oYXJkd2FyZV93YXRjaHBv aW50LAotIAkJCQkJICAmb3RoZXJfdHlwZV91c2VkKTsKLSAJICAgIG1lbV9jbnQgPSBjYW5fdXNl X2hhcmR3YXJlX3dhdGNocG9pbnQgKHZhbF9jaGFpbik7CgpkaWZmIC0tZ2l0IGEvZ2RiLXBwYy1w b3dlcjctdGVzdC5wYXRjaCBiL2dkYi1wcGMtcG93ZXI3LXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc2YzEzNAotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1w cGMtcG93ZXI3LXRlc3QucGF0Y2gKQEAgLTAsMCArMSwyODggQEAKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcuZXhwCitAQCAtMCwwICsx LDE3NSBAQAorKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CisrCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJ VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK KysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUg UGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgCisrCisrIyBU ZXN0IFBvd2VyUEMgUG93ZXI3IGluc3RydWN0aW9ucyBkaXNhc3NlbWJseS4KKysKKytpZiB7IVtp c3RhcmdldCAicG93ZXJwYyotKi0qIl19IHRoZW4geworKyAgICB2ZXJib3NlICJTa2lwcGluZyBQ b3dlclBDIFBvd2VyNyBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkuIgorKyAgICByZXR1cm4KKyt9 CisrCisrc2V0IHRlc3RmaWxlICJwb3dlcnBjLXBvd2VyNyIKKytzZXQgc3JjZmlsZSAke3Rlc3Rm aWxlfS5zCisrc2V0IG9iamZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS5vCisr CisraWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7 b2JqZmlsZX0iIG9iamVjdCB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQgIlBvd2Vy UEMgUG93ZXI3IGluc3RydWN0aW9ucyBkaXNhc3NlbWJseSIKKysgICAgcmV0dXJuIC0xCisrfQor KworKworK2dkYl9leGl0CisrZ2RiX3N0YXJ0CisrZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rp ci8kc3ViZGlyCisrZ2RiX2xvYWQgJHtvYmpmaWxlfQorKyAKKysKKysjIERpc2Fzc2VtYmxlIHRo ZSBmdW5jdGlvbi4KKysKKytzZXQgdGVzdCAiZGlzYXNzIGZ1bmMiCisrZ2RiX3Rlc3RfbXVsdGlw bGUgJHRlc3QgJHRlc3QgeworKyAgICAtcmUgIlxyXG5EdW1wIG9mIGFzc2VtYmxlciBjb2RlIGZv ciBmdW5jdGlvbiBmdW5jOihcclxuLipcclxuKUVuZCBvZiBhc3NlbWJsZXIgZHVtcC5cclxuJGdk Yl9wcm9tcHQgJCIgeworKwlzZXQgZnVuYyAkZXhwZWN0X291dCgxLHN0cmluZykKKysJcGFzcyAk dGVzdAorKyAgICB9CisrfQorKworK3Byb2MgaW5zdHJfdG9fcGF0dCB7b2Zmc2V0IGluc3RyfSB7 CisrICAgICMgMHgwMDAwMDAwMDAwMDAwMDE4IDxmdW5jKzI0PjoJc3R4dmQyeCB2czQzLHI0LHI1 CisrICAgIHJldHVybiAiLipcclxuW3N0cmluZyBtYXAgezB4IDB4MCp9ICRvZmZzZXRdIDxmdW5j XFwrP1xbMC05XF0qPjpcWyBcdFxdKltzdHJpbmcgbWFwIFtsaXN0IHsgfSAiXFsgXHRcXSsiIC4g e1wufV0gJGluc3RyXVxbIFx0XF0qXHJcbi4qIgorK30KKysKKysjIEtGQUlMIHN0cmluZ3Mgd291 bGQgbm90IGV4aXN0IGlmIC1NYW55IHdvdWxkIHByaW50IHRoZSBzYW1lIGFzIC1NcG93ZXI3Lgor KyMgVGhhdCBtZWFucyB0aGUgcG93ZXI3IGZvcm0gc2hvdWxkIGJlIHRoZSBwcmVmZXJyZWQgb25l LgorKyMgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDktMDMvdGhyZWFk cy5odG1sIzAwMDIwCisrCisrcHJvYyBmdW5jX2NoZWNrIHtvZmZzZXQgaW5zdHIge2tmYWlsICIi fX0geworKyAgICBnbG9iYWwgZnVuYworKworKyAgICBzZXQgdGVzdCAiRm91bmQgJG9mZnNldDog JGluc3RyIgorKyAgICBpZiBbcmVnZXhwIC1ub2Nhc2UgLWxpbmUgW2luc3RyX3RvX3BhdHQgJG9m ZnNldCAkaW5zdHJdICRmdW5jXSB7CisrCXBhc3MgJHRlc3QKKysgICAgfSBlbHNlaWYgeyRrZmFp bCAhPSAiIiAmJiBbcmVnZXhwIC1ub2Nhc2UgLWxpbmUgW2luc3RyX3RvX3BhdHQgJG9mZnNldCAk a2ZhaWxdICRmdW5jXX0geworKwlrZmFpbCBnZGIvTk5OTiAkdGVzdAorKyAgICB9IGVsc2Ugewor KwlmYWlsICR0ZXN0CisrICAgIH0KKyt9CisrCisrZnVuY19jaGVjayAgIDB4MCAibHh2ZDJ4ICB2 czMscjQscjUiCisrZnVuY19jaGVjayAgIDB4NCAibHh2ZDJ1eCB2czMscjQscjUiCisrZnVuY19j aGVjayAgIDB4OCAibHh2ZDJ4ICB2czQzLHI0LHI1IgorK2Z1bmNfY2hlY2sgICAweGMgImx4dmQy dXggdnM0MyxyNCxyNSIKKytmdW5jX2NoZWNrICAweDEwICJzdHh2ZDJ4IHZzMyxyNCxyNSIKKytm dW5jX2NoZWNrICAweDE0ICJzdHh2ZDJ1eCB2czMscjQscjUiCisrZnVuY19jaGVjayAgMHgxOCAi c3R4dmQyeCB2czQzLHI0LHI1IgorK2Z1bmNfY2hlY2sgIDB4MWMgInN0eHZkMnV4IHZzNDMscjQs cjUiCisrZnVuY19jaGVjayAgMHgyMCAieHhtcmdoZCB2czMsdnM0LHZzNSIKKytmdW5jX2NoZWNr ICAweDI0ICJ4eG1yZ2hkIHZzNDMsdnM0NCx2czQ1IgorK2Z1bmNfY2hlY2sgIDB4MjggInh4bXJn bGQgdnMzLHZzNCx2czUiCisrZnVuY19jaGVjayAgMHgyYyAieHhtcmdsZCB2czQzLHZzNDQsdnM0 NSIKKytmdW5jX2NoZWNrICAweDMwICJ4eG1yZ2hkIHZzMyx2czQsdnM1IgorK2Z1bmNfY2hlY2sg IDB4MzQgInh4bXJnaGQgdnM0Myx2czQ0LHZzNDUiCisrZnVuY19jaGVjayAgMHgzOCAieHhtcmds ZCB2czMsdnM0LHZzNSIKKytmdW5jX2NoZWNrICAweDNjICJ4eG1yZ2xkIHZzNDMsdnM0NCx2czQ1 IgorK2Z1bmNfY2hlY2sgIDB4NDAgInh4cGVybWRpIHZzMyx2czQsdnM1LDEiCisrZnVuY19jaGVj ayAgMHg0NCAieHhwZXJtZGkgdnM0Myx2czQ0LHZzNDUsMSIKKytmdW5jX2NoZWNrICAweDQ4ICJ4 eHBlcm1kaSB2czMsdnM0LHZzNSwyIgorK2Z1bmNfY2hlY2sgIDB4NGMgInh4cGVybWRpIHZzNDMs dnM0NCx2czQ1LDIiCisrZnVuY19jaGVjayAgMHg1MCAieHZtb3ZkcCB2czMsdnM0IgorK2Z1bmNf Y2hlY2sgIDB4NTQgInh2bW92ZHAgdnM0Myx2czQ0IgorK2Z1bmNfY2hlY2sgIDB4NTggInh2bW92 ZHAgdnMzLHZzNCIKKytmdW5jX2NoZWNrICAweDVjICJ4dm1vdmRwIHZzNDMsdnM0NCIKKytmdW5j X2NoZWNrICAweDYwICJ4dmNwc2duZHAgdnMzLHZzNCx2czUiCisrZnVuY19jaGVjayAgMHg2NCAi eHZjcHNnbmRwIHZzNDMsdnM0NCx2czQ1IgorK2Z1bmNfY2hlY2sgIDB4NjggIndhaXQiCisrZnVu Y19jaGVjayAgMHg2YyAid2FpdCIKKytmdW5jX2NoZWNrICAweDcwICJ3YWl0cnN2IgorK2Z1bmNf Y2hlY2sgIDB4NzQgIndhaXRyc3YiCisrZnVuY19jaGVjayAgMHg3OCAid2FpdGltcGwiCisrZnVu Y19jaGVjayAgMHg3YyAid2FpdGltcGwiCisrZnVuY19jaGVjayAgMHg4MCAiZG96ZSIKKytmdW5j X2NoZWNrICAweDg0ICJuYXAiCisrZnVuY19jaGVjayAgMHg4OCAic2xlZXAiCisrZnVuY19jaGVj ayAgMHg4YyAicnZ3aW5rbGUiCisrZnVuY19jaGVjayAgMHg5MCAicHJ0eXcgICByMyxyNCIKKytm dW5jX2NoZWNrICAweDk0ICJwcnR5ZCAgIHIxMyxyMTQiCisrZnVuY19jaGVjayAgMHg5OCAibWZj ZmFyICByMTAiICAgICAgICAgICAibWZzcHIgICByMTAsMjgiCisrZnVuY19jaGVjayAgMHg5YyAi bXRjZmFyICByMTEiICAgICAgICAgICAibXRzcHIgICAyOCxyMTEiCisrZnVuY19jaGVjayAgMHhh MCAiY21wYiAgICByMyxyNCxyNSIKKytmdW5jX2NoZWNrICAweGE0ICJsd3pjaXggIHIxMCxyMTEs cjEyIgorK2Z1bmNfY2hlY2sgIDB4YTggImRhZGQgICAgZjE2LGYxNyxmMTgiCisrZnVuY19jaGVj ayAgMHhhYyAiZGFkZHEgICBmMjAsZjIyLGYyNCIKKytmdW5jX2NoZWNrICAweGIwICJkc3MgICAg IDMiCisrZnVuY19jaGVjayAgMHhiNCAiZHNzYWxsIgorK2Z1bmNfY2hlY2sgIDB4YjggImRzdCAg ICAgcjUscjQsMSIKKytmdW5jX2NoZWNrICAweGJjICJkc3R0ICAgIHI4LHI3LDAiCisrZnVuY19j aGVjayAgMHhjMCAiZHN0c3QgICByNSxyNiwzIgorK2Z1bmNfY2hlY2sgIDB4YzQgImRzdHN0dCAg cjQscjUsMiIKKytmdW5jX2NoZWNrICAweGM4ICJkaXZ3ZSAgIHIxMCxyMTEscjEyIgorK2Z1bmNf Y2hlY2sgIDB4Y2MgImRpdndlLiAgcjExLHIxMixyMTMiCisrZnVuY19jaGVjayAgMHhkMCAiZGl2 d2VvICByMTIscjEzLHIxNCIKKytmdW5jX2NoZWNrICAweGQ0ICJkaXZ3ZW8uIHIxMyxyMTQscjE1 IgorK2Z1bmNfY2hlY2sgIDB4ZDggImRpdndldSAgcjEwLHIxMSxyMTIiCisrZnVuY19jaGVjayAg MHhkYyAiZGl2d2V1LiByMTEscjEyLHIxMyIKKytmdW5jX2NoZWNrICAweGUwICJkaXZ3ZXVvIHIx MixyMTMscjE0IgorK2Z1bmNfY2hlY2sgIDB4ZTQgImRpdndldW8uIHIxMyxyMTQscjE1IgorK2Z1 bmNfY2hlY2sgIDB4ZTggImJwZXJtZCAgcjcscjE3LHIyNyIKKytmdW5jX2NoZWNrICAweGVjICJw b3BjbnR3IHIxMCxyMjAiCisrZnVuY19jaGVjayAgMHhmMCAicG9wY250ZCByMTAscjIwIgorK2Z1 bmNfY2hlY2sgIDB4ZjQgImxkYnJ4ICAgcjIwLHIyMSxyMjIiCisrZnVuY19jaGVjayAgMHhmOCAi c3RkYnJ4ICByMjAscjIxLHIyMiIKKytmdW5jX2NoZWNrICAweGZjICJsZml3enggIGYxMCwwLHIx MCIKKytmdW5jX2NoZWNrIDB4MTAwICJsZml3enggIGYxMCxyOSxyMTAiCisrZnVuY19jaGVjayAw eDEwNCAiZmNmaWRzICBmNCxmNSIKKytmdW5jX2NoZWNrIDB4MTA4ICJmY2ZpZHMuIGY0LGY1Igor K2Z1bmNfY2hlY2sgMHgxMGMgImZjZmlkdXMgZjQsZjUiCisrZnVuY19jaGVjayAweDExMCAiZmNm aWR1cy4gZjQsZjUiCisrZnVuY19jaGVjayAweDExNCAiZmN0aXd1ICBmNCxmNSIKKytmdW5jX2No ZWNrIDB4MTE4ICJmY3Rpd3UuIGY0LGY1IgorK2Z1bmNfY2hlY2sgMHgxMWMgImZjdGl3dXogZjQs ZjUiCisrZnVuY19jaGVjayAweDEyMCAiZmN0aXd1ei4gZjQsZjUiCisrZnVuY19jaGVjayAweDEy NCAiZmN0aWR1ICBmNCxmNSIKKytmdW5jX2NoZWNrIDB4MTI4ICJmY3RpZHUuIGY0LGY1IgorK2Z1 bmNfY2hlY2sgMHgxMmMgImZjdGlkdXogZjQsZjUiCisrZnVuY19jaGVjayAweDEzMCAiZmN0aWR1 ei4gZjQsZjUiCisrZnVuY19jaGVjayAweDEzNCAiZmNmaWR1ICBmNCxmNSIKKytmdW5jX2NoZWNr IDB4MTM4ICJmY2ZpZHUuIGY0LGY1IgorK2Z1bmNfY2hlY2sgMHgxM2MgImZ0ZGl2ICAgY3IwLGYx MCxmMTEiCisrZnVuY19jaGVjayAweDE0MCAiZnRkaXYgICBjcjcsZjEwLGYxMSIKKytmdW5jX2No ZWNrIDB4MTQ0ICJmdHNxcnQgIGNyMCxmMTAiCisrZnVuY19jaGVjayAweDE0OCAiZnRzcXJ0ICBj cjcsZjEwIgorK2Z1bmNfY2hlY2sgMHgxNGMgImRjYnR0ICAgcjgscjkiICAgICAgICAgImRjYnQg ICAgMTYscjgscjkiCisrZnVuY19jaGVjayAweDE1MCAiZGNidHN0dCByOCxyOSIgICAgICAgICAi ZGNidHN0ICAxNixyOCxyOSIKKytmdW5jX2NoZWNrIDB4MTU0ICJkY2ZmaXggIGYxMCxmMTIiCisr ZnVuY19jaGVjayAweDE1OCAiZGNmZml4LiBmMjAsZjIyIgorK2Z1bmNfY2hlY2sgMHgxNWMgImxi YXJ4ICAgcjEwLHIxMSxyMTIiCisrZnVuY19jaGVjayAweDE2MCAibGJhcnggICByMTAscjExLHIx MiIKKytmdW5jX2NoZWNrIDB4MTY0ICJsYmFyeCAgIHIxMCxyMTEscjEyLDEiCisrZnVuY19jaGVj ayAweDE2OCAibGhhcnggICByMjAscjIxLHIyMiIKKytmdW5jX2NoZWNrIDB4MTZjICJsaGFyeCAg IHIyMCxyMjEscjIyIgorK2Z1bmNfY2hlY2sgMHgxNzAgImxoYXJ4ICAgcjIwLHIyMSxyMjIsMSIK KytmdW5jX2NoZWNrIDB4MTc0ICJzdGJjeC4gIHIxMCxyMTEscjEyIgorK2Z1bmNfY2hlY2sgMHgx NzggInN0aGN4LiAgcjEwLHIxMSxyMTIiCisrZnVuY19jaGVjayAweDE3YyAiZnJlICAgICBmMTQs ZjE1IgorK2Z1bmNfY2hlY2sgMHgxODAgImZyZS4gICAgZjE0LGYxNSIKKytmdW5jX2NoZWNrIDB4 MTg0ICJmcmVzICAgIGYxNCxmMTUiCisrZnVuY19jaGVjayAweDE4OCAiZnJlcy4gICBmMTQsZjE1 IgorK2Z1bmNfY2hlY2sgMHgxOGMgImZyc3FydGUgZjE0LGYxNSIKKytmdW5jX2NoZWNrIDB4MTkw ICJmcnNxcnRlLiBmMTQsZjE1IgorK2Z1bmNfY2hlY2sgMHgxOTQgImZyc3FydGVzIGYxNCxmMTUi CisrZnVuY19jaGVjayAweDE5OCAiZnJzcXJ0ZXMuIGYxNCxmMTUiCisrZnVuY19jaGVjayAweDE5 YyAiaXNlbCAgICByMixyMyxyNCwyOCIKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcucworQEAgLTAsMCArMSwxMDcgQEAKKysJLnRleHQK KysJLmdsb2JsCWZ1bmMKKytmdW5jOgorKwkubG9uZwkweDdjNjQyZTk4CS8qICAgMDogbHh2ZDJ4 ICB2czMscjQscjUgICAgICAgICAqLworKwkubG9uZwkweDdjNjQyZWQ4CS8qICAgNDogbHh2ZDJ1 eCB2czMscjQscjUgICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZTk5CS8qICAgODogbHh2ZDJ4 ICB2czQzLHI0LHI1ICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZWQ5CS8qICAgYzogbHh2ZDJ1 eCB2czQzLHI0LHI1ICAgICAgICAqLworKwkubG9uZwkweDdjNjQyZjk4CS8qICAxMDogc3R4dmQy eCB2czMscjQscjUgICAgICAgICAqLworKwkubG9uZwkweDdjNjQyZmQ4CS8qICAxNDogc3R4dmQy dXggdnMzLHI0LHI1ICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZjk5CS8qICAxODogc3R4dmQy eCB2czQzLHI0LHI1ICAgICAgICAqLworKwkubG9uZwkweDdkNjQyZmQ5CS8qICAxYzogc3R4dmQy dXggdnM0MyxyNCxyNSAgICAgICAqLworKwkubG9uZwkweGYwNjQyODUwCS8qICAyMDogeHhtcmdo ZCB2czMsdnM0LHZzNSAgICAgICAqLworKwkubG9uZwkweGYxNmM2ODU3CS8qICAyNDogeHhtcmdo ZCB2czQzLHZzNDQsdnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyYjUwCS8qICAyODogeHhtcmds ZCB2czMsdnM0LHZzNSAgICAgICAqLworKwkubG9uZwkweGYxNmM2YjU3CS8qICAyYzogeHhtcmds ZCB2czQzLHZzNDQsdnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyODUwCS8qICAzMDogeHhtcmdo ZCB2czMsdnM0LHZzNSAgICAgICAqLworKwkubG9uZwkweGYxNmM2ODU3CS8qICAzNDogeHhtcmdo ZCB2czQzLHZzNDQsdnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyYjUwCS8qICAzODogeHhtcmds ZCB2czMsdnM0LHZzNSAgICAgICAqLworKwkubG9uZwkweGYxNmM2YjU3CS8qICAzYzogeHhtcmds ZCB2czQzLHZzNDQsdnM0NSAgICAqLworKwkubG9uZwkweGYwNjQyOTUwCS8qICA0MDogeHhwZXJt ZGkgdnMzLHZzNCx2czUsMSAgICAqLworKwkubG9uZwkweGYxNmM2OTU3CS8qICA0NDogeHhwZXJt ZGkgdnM0Myx2czQ0LHZzNDUsMSAqLworKwkubG9uZwkweGYwNjQyYTUwCS8qICA0ODogeHhwZXJt ZGkgdnMzLHZzNCx2czUsMiAgICAqLworKwkubG9uZwkweGYxNmM2YTU3CS8qICA0YzogeHhwZXJt ZGkgdnM0Myx2czQ0LHZzNDUsMiAqLworKwkubG9uZwkweGYwNjQyNzgwCS8qICA1MDogeHZtb3Zk cCB2czMsdnM0ICAgICAgICAgICAqLworKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1NDogeHZtb3Zk cCB2czQzLHZzNDQgICAgICAgICAqLworKwkubG9uZwkweGYwNjQyNzgwCS8qICA1ODogeHZtb3Zk cCB2czMsdnM0ICAgICAgICAgICAqLworKwkubG9uZwkweGYxNmM2Nzg3CS8qICA1YzogeHZtb3Zk cCB2czQzLHZzNDQgICAgICAgICAqLworKwkubG9uZwkweGYwNjQyZjgwCS8qICA2MDogeHZjcHNn bmRwIHZzMyx2czQsdnM1ICAgICAqLworKwkubG9uZwkweGYxNmM2Zjg3CS8qICA2NDogeHZjcHNn bmRwIHZzNDMsdnM0NCx2czQ1ICAqLworKwkubG9uZwkweDdjMDAwMDdjCS8qICA2ODogd2FpdCAg ICAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjMDAwMDdjCS8qICA2Yzogd2FpdCAg ICAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjMjAwMDdjCS8qICA3MDogd2FpdHJz diAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjMjAwMDdjCS8qICA3NDogd2FpdHJz diAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjNDAwMDdjCS8qICA3ODogd2FpdGlt cGwgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjNDAwMDdjCS8qICA3Yzogd2FpdGlt cGwgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDRjMDAwMzI0CS8qICA4MDogZG96ZSAg ICAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDRjMDAwMzY0CS8qICA4NDogbmFwICAg ICAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDRjMDAwM2E0CS8qICA4ODogc2xlZXAg ICAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDRjMDAwM2U0CS8qICA4YzogcnZ3aW5r bGUgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjODMwMTM0CS8qICA5MDogcHJ0eXcg ICByMyxyNCAgICAgICAgICAgICAqLworKwkubG9uZwkweDdkY2QwMTc0CS8qICA5NDogcHJ0eWQg ICByMTMscjE0ICAgICAgICAgICAqLworKwkubG9uZwkweDdkNWMwMmE2CS8qICA5ODogbWZjZmFy ICByMTAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdkN2MwM2E2CS8qICA5YzogbXRjZmFy ICByMTEgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjODMyYmY4CS8qICBhMDogY21wYiAg ICByMyxyNCxyNSAgICAgICAgICAqLworKwkubG9uZwkweDdkNGI2NjJhCS8qICBhNDogbHd6Y2l4 ICByMTAscjExLHIxMiAgICAgICAqLworKwkubG9uZwkweGVlMTE5MDA0CS8qICBhODogZGFkZCAg ICBmMTYsZjE3LGYxOCAgICAgICAqLworKwkubG9uZwkweGZlOTZjMDA0CS8qICBhYzogZGFkZHEg ICBmMjAsZjIyLGYyNCAgICAgICAqLworKwkubG9uZwkweDdjNjAwNjZjCS8qICBiMDogZHNzICAg ICAzICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdlMDAwNjZjCS8qICBiNDogZHNzYWxs ICAgICAgICAgICAgICAgICAgICAqLworKwkubG9uZwkweDdjMjUyMmFjCS8qICBiODogZHN0ICAg ICByNSxyNCwxICAgICAgICAgICAqLworKwkubG9uZwkweDdlMDgzYWFjCS8qICBiYzogZHN0dCAg ICByOCxyNywwICAgICAgICAgICAqLworKwkubG9uZwkweDdjNjUzMmVjCS8qICBjMDogZHN0c3Qg ICByNSxyNiwzICAgICAgICAgICAqLworKwkubG9uZwkweDdlNDQyYWVjCS8qICBjNDogZHN0c3R0 ICByNCxyNSwyICAgICAgICAgICAqLworKwkubG9uZwkweDdkNGI2MzU2CS8qICBjODogZGl2d2Ug ICByMTAscjExLHIxMiAgICAgICAqLworKwkubG9uZwkweDdkNmM2YjU3CS8qICBjYzogZGl2d2Uu ICByMTEscjEyLHIxMyAgICAgICAqLworKwkubG9uZwkweDdkOGQ3NzU2CS8qICBkMDogZGl2d2Vv ICByMTIscjEzLHIxNCAgICAgICAqLworKwkubG9uZwkweDdkYWU3ZjU3CS8qICBkNDogZGl2d2Vv LiByMTMscjE0LHIxNSAgICAgICAqLworKwkubG9uZwkweDdkNGI2MzE2CS8qICBkODogZGl2d2V1 ICByMTAscjExLHIxMiAgICAgICAqLworKwkubG9uZwkweDdkNmM2YjE3CS8qICBkYzogZGl2d2V1 LiByMTEscjEyLHIxMyAgICAgICAqLworKwkubG9uZwkweDdkOGQ3NzE2CS8qICBlMDogZGl2d2V1 byByMTIscjEzLHIxNCAgICAgICAqLworKwkubG9uZwkweDdkYWU3ZjE3CS8qICBlNDogZGl2d2V1 by4gcjEzLHIxNCxyMTUgICAgICAqLworKwkubG9uZwkweDdlMjdkOWY4CS8qICBlODogYnBlcm1k ICByNyxyMTcscjI3ICAgICAgICAqLworKwkubG9uZwkweDdlOGEwMmY0CS8qICBlYzogcG9wY250 dyByMTAscjIwICAgICAgICAgICAqLworKwkubG9uZwkweDdlOGEwM2Y0CS8qICBmMDogcG9wY250 ZCByMTAscjIwICAgICAgICAgICAqLworKwkubG9uZwkweDdlOTViNDI4CS8qICBmNDogbGRicngg ICByMjAscjIxLHIyMiAgICAgICAqLworKwkubG9uZwkweDdlOTViNTI4CS8qICBmODogc3RkYnJ4 ICByMjAscjIxLHIyMiAgICAgICAqLworKwkubG9uZwkweDdkNDA1NmVlCS8qICBmYzogbGZpd3p4 ICBmMTAsMCxyMTAgICAgICAgICAqLworKwkubG9uZwkweDdkNDk1NmVlCS8qIDEwMDogbGZpd3p4 ICBmMTAscjkscjEwICAgICAgICAqLworKwkubG9uZwkweGVjODAyZTljCS8qIDEwNDogZmNmaWRz ICBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGVjODAyZTlkCS8qIDEwODogZmNmaWRz LiBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGVjODAyZjljCS8qIDEwYzogZmNmaWR1 cyBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGVjODAyZjlkCS8qIDExMDogZmNmaWR1 cy4gZjQsZjUgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFjCS8qIDExNDogZmN0aXd1 ICBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFkCS8qIDExODogZmN0aXd1 LiBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFlCS8qIDExYzogZmN0aXd1 eiBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyOTFmCS8qIDEyMDogZmN0aXd1 ei4gZjQsZjUgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVjCS8qIDEyNDogZmN0aWR1 ICBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVkCS8qIDEyODogZmN0aWR1 LiBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVlCS8qIDEyYzogZmN0aWR1 eiBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjVmCS8qIDEzMDogZmN0aWR1 ei4gZjQsZjUgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjljCS8qIDEzNDogZmNmaWR1 ICBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjODAyZjlkCS8qIDEzODogZmNmaWR1 LiBmNCxmNSAgICAgICAgICAgICAqLworKwkubG9uZwkweGZjMGE1OTAwCS8qIDEzYzogZnRkaXYg ICBjcjAsZjEwLGYxMSAgICAgICAqLworKwkubG9uZwkweGZmOGE1OTAwCS8qIDE0MDogZnRkaXYg ICBjcjcsZjEwLGYxMSAgICAgICAqLworKwkubG9uZwkweGZjMDA1MTQwCS8qIDE0NDogZnRzcXJ0 ICBjcjAsZjEwICAgICAgICAgICAqLworKwkubG9uZwkweGZmODA1MTQwCS8qIDE0ODogZnRzcXJ0 ICBjcjcsZjEwICAgICAgICAgICAqLworKwkubG9uZwkweDdlMDg0YTJjCS8qIDE0YzogZGNidHQg ICByOCxyOSAgICAgICAgICAgICAqLworKwkubG9uZwkweDdlMDg0OWVjCS8qIDE1MDogZGNidHN0 dCByOCxyOSAgICAgICAgICAgICAqLworKwkubG9uZwkweGVkNDA2NjQ0CS8qIDE1NDogZGNmZml4 ICBmMTAsZjEyICAgICAgICAgICAqLworKwkubG9uZwkweGVlODBiNjQ1CS8qIDE1ODogZGNmZml4 LiBmMjAsZjIyICAgICAgICAgICAqLworKwkubG9uZwkweDdkNGI2MDY4CS8qIDE1YzogbGJhcngg ICByMTAscjExLHIxMiAgICAgICAqLworKwkubG9uZwkweDdkNGI2MDY4CS8qIDE2MDogbGJhcngg ICByMTAscjExLHIxMiAgICAgICAqLworKwkubG9uZwkweDdkNGI2MDY5CS8qIDE2NDogbGJhcngg ICByMTAscjExLHIxMiwxICAgICAqLworKwkubG9uZwkweDdlOTViMGU4CS8qIDE2ODogbGhhcngg ICByMjAscjIxLHIyMiAgICAgICAqLworKwkubG9uZwkweDdlOTViMGU4CS8qIDE2YzogbGhhcngg ICByMjAscjIxLHIyMiAgICAgICAqLworKwkubG9uZwkweDdlOTViMGU5CS8qIDE3MDogbGhhcngg ICByMjAscjIxLHIyMiwxICAgICAqLworKwkubG9uZwkweDdkNGI2NTZkCS8qIDE3NDogc3RiY3gu ICByMTAscjExLHIxMiAgICAgICAqLworKwkubG9uZwkweDdkNGI2NWFkCS8qIDE3ODogc3RoY3gu ICByMTAscjExLHIxMiAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODMwCS8qIDE3YzogZnJlICAg ICBmMTQsZjE1ICAgICAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODMxCS8qIDE4MDogZnJlLiAg ICBmMTQsZjE1ICAgICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODMwCS8qIDE4NDogZnJlcyAg ICBmMTQsZjE1ICAgICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODMxCS8qIDE4ODogZnJlcy4g ICBmMTQsZjE1ICAgICAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODM0CS8qIDE4YzogZnJzcXJ0 ZSBmMTQsZjE1ICAgICAgICAgICAqLworKwkubG9uZwkweGZkYzA3ODM1CS8qIDE5MDogZnJzcXJ0 ZS4gZjE0LGYxNSAgICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODM0CS8qIDE5NDogZnJzcXJ0 ZXMgZjE0LGYxNSAgICAgICAgICAqLworKwkubG9uZwkweGVkYzA3ODM1CS8qIDE5ODogZnJzcXJ0 ZXMuIGYxNCxmMTUgICAgICAgICAqLworKwkubG9uZwkweDdjNDMyNzFlCS8qIDE5YzogaXNlbCAg ICByMixyMyxyNCwyOCAgICAgICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1yZWFkbGluZS02LjAtc2ln bmFsLnBhdGNoIGIvZ2RiLXJlYWRsaW5lLTYuMC1zaWduYWwucGF0Y2gKaW5kZXggMDg3M2JlYS4u MWI4YzhjNiAxMDA2NDQKLS0tIGEvZ2RiLXJlYWRsaW5lLTYuMC1zaWduYWwucGF0Y2gKKysrIGIv Z2RiLXJlYWRsaW5lLTYuMC1zaWduYWwucGF0Y2gKQEAgLTY1LDkgKzY1LDExIEBAIGdkYi90ZXN0 c3VpdGUvCiAJKHNlbmQgU0lHSU5UIHNpZ25hbCB0byBjaGlsZCBwcm9jZXNzKTogVXNlIGdkYl90 ZXN0LgogCShiYWNrdHJhY2UgdGhyb3VnaCByZWFkbGluZSBoYW5kbGVyKTogTmV3LgogCi0tLS0g YS9nZGIvY29uZmlnLmluCi0rKysgYi9nZGIvY29uZmlnLmluCi1AQCAtMzUxLDYgKzM1MSw5IEBA CitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29uZmlnLmluCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb25maWcuaW4JMjAxMC0wMS0xNSAxMjo0 ODowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWcu aW4JMjAxMC0wMS0xNSAxMjo0ODo0MC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0zNTksNiArMzU5LDkg QEAKICAvKiBEZWZpbmUgaWYgUHl0aG9uIGludGVycHJldGVyIGlzIGJlaW5nIGxpbmtlZCBpbi4g Ki8KICAjdW5kZWYgSEFWRV9QWVRIT04KICAKQEAgLTc3LDkgKzc5LDExIEBAIGdkYi90ZXN0c3Vp dGUvCiAgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGByZWFscGF0aCcgZnVuY3Rpb24u ICovCiAgI3VuZGVmIEhBVkVfUkVBTFBBVEgKICAKLS0tLSBhL2dkYi9jb25maWd1cmUuYWMKLSsr KyBiL2dkYi9jb25maWd1cmUuYWMKLUBAIC01MzksMTcgKzUzOSwyNSBAQCBpZiB0ZXN0ICIkd2l0 aF9zeXN0ZW1fcmVhZGxpbmUiID0geWVzOyB0aGVuCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDEx NS9nZGIvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5v cmlnL2dkYi9jb25maWd1cmUuYWMJMjAxMC0wMS0xNSAxMjo0ODowNC4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUuYWMJMjAxMC0wMS0xNSAxMjo0 ODo0MC4wMDAwMDAwMDAgKzAxMDAKK0BAIC03NzcsMTcgKzc3NywyNSBAQCBpZiB0ZXN0ICIkd2l0 aF9zeXN0ZW1fcmVhZGxpbmUiID0geWVzOyB0CiAgICAjIHJlYWRsaW5lLTYuMCBzdGFydGVkIHRv IHVzZSB0aGUgbmFtZSBgX3JsX2VjaG9pbmdfcCcuCiAgICAjIGAkKFJFQURMSU5FX0RJUikvJyBv ZiBidW5kbGVkIHJlYWRsaW5lIHdvdWxkIG5vdCByZXNvbHZlIGluIGNvbmZpZ3VyZS4KICAKQEAg LTEwNyw4ICsxMTEsMTAgQEAgZ2RiL3Rlc3RzdWl0ZS8KICBlbHNlCiAgICBSRUFETElORT0nJChS RUFETElORV9ESVIpL2xpYnJlYWRsaW5lLmEnCiAgICBSRUFETElORV9ERVBTPSckKFJFQURMSU5F KScKLS0tLSBhL2dkYi9ldmVudC1sb29wLmMKLSsrKyBiL2dkYi9ldmVudC1sb29wLmMKK0luZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9ldmVudC1sb29wLmMKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBn ZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2V2ZW50LWxvb3AuYwkyMDEwLTAxLTAxIDA4OjMx OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2V2ZW50LWxv b3AuYwkyMDEwLTAxLTE1IDEyOjQ4OjQwLjAwMDAwMDAwMCArMDEwMAogQEAgLTM3LDYgKzM3LDcg QEAKICAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgogICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCkBA IC0xNDQsOSArMTUwLDExIEBAIGdkYi90ZXN0c3VpdGUvCiAgICAvKiBIYW5kbGUgYW55IG5ldyBl dmVudHMgb2NjdXJyZWQgd2hpbGUgd2FpdGluZy4gICovCiAgICBpZiAocHJvY2Vzc19ldmVudCAo KSkKICAgICAgcmV0dXJuIDE7Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi1AQCAtNDY0LDMx ICs0NjQsNDIgQEAgR0RCLipDb3B5cmlnaHQgXFswLTlcXSsgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBJbmMuLiokZ2RiX3Byb21wdCAkIlwKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4w LjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEw LTAxLTE1IDEyOjQ4OjAxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAkyMDEwLTAxLTE1IDEyOjQ4OjQwLjAw MDAwMDAwMCArMDEwMAorQEAgLTQ3MSwzMSArNDcxLDQyIEBAIEdEQi4qQ29weXJpZ2h0IFxbMC05 XF0rIEZyZWUgU29mdHdhcmUgRm8KICAJICAgIGZhaWwgIiRkZXNjcmlwdGlvbiAodGltZW91dCki CiAgCX0KICAgICAgfQpAQCAtMjAyLDcgKzIxMCw3IEBAIGdkYi90ZXN0c3VpdGUvCiAgCSAgICBw YXNzICIkZGVzY3JpcHRpb24iCiAgCX0KICAJLXJlICIuKiRnZGJfcHJvbXB0ICQiIHsKLUBAIC01 MDAsOSArNTEwLDYgQEAgR0RCLipDb3B5cmlnaHQgXFswLTlcXSsgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuLiokZ2RiX3Byb21wdCAkIlwKK0BAIC01MDcsOSArNTE4LDYgQEAgR0RCLipD b3B5cmlnaHQgXFswLTlcXSsgRnJlZSBTb2Z0d2FyZSBGbwogIAkgICAgc2V0dXBfeGZhaWwgImFs cGhhKi0qLW9zZioiCiAgCSAgICBmYWlsICIkZGVzY3JpcHRpb24iCiAgCX0KQEAgLTIxMiw3NSAr MjIwLDQwNyBAQCBnZGIvdGVzdHN1aXRlLwogICAgICB9CiAgCiAgCi0tLS0gZ2RiLTcuMC9nZGIv Y29uZmlndXJlCTIwMDktMTItMDcgMTg6NTM6MzAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu MC14L2dkYi9jb25maWd1cmUJMjAwOS0xMi0wNyAxODo1MzoxNC4wMDAwMDAwMDAgKzAxMDAKLUBA IC05MjAxLDE1ICs5MjAxLDExIEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGluZSIgPSB5 ZXM7IHQKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9jb25maWd1cmUKKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDEwLTAxLTE1 IDEyOjQ4OjA0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2Nv bmZpZ3VyZQkyMDEwLTAxLTE1IDEyOjQ4OjQ2LjAwMDAwMDAwMCArMDEwMAorQEAgLTY3NzIsNiAr Njc3MiwxODUgQEAgZWxzZQorIGZpCisgCisgCisrCisrCisrCisrCisrIyBDaGVjayB3aGV0aGVy IC0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9z ZXBhcmF0ZV9kZWJ1Z19kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9z ZXBhcmF0ZV9kZWJ1Z19kaXI7CisrICAgIERFQlVHRElSPSR3aXRodmFsCisrZWxzZQorKyAgREVC VUdESVI9JHtsaWJkaXJ9L2RlYnVnCisrZmkKKysKKysKKysgIHRlc3QgIngkcHJlZml4IiA9IHhO T05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgorKyAgdGVzdCAieCRleGVjX3ByZWZp eCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JworKyAgYWNfZGVmaW5lX2Rpcj1g ZXZhbCBlY2hvICRERUJVR0RJUmAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNobyAkYWNfZGVm aW5lX2RpcmAKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBERUJVR0RJ UiAiJGFjX2RlZmluZV9kaXIiCisrX0FDRU9GCisrCisrCisrCisrICBpZiB0ZXN0ICJ4JGV4ZWNf cHJlZml4IiA9IHhOT05FIHx8IHRlc3QgIngkZXhlY19wcmVmaXgiID0gJ3gke3ByZWZpeH0nOyB0 aGVuCisrICAgICBpZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgorKyAgICAgCXRlc3Rf cHJlZml4PS91c3IvbG9jYWwKKysgICAgIGVsc2UKKysJdGVzdF9wcmVmaXg9JHByZWZpeAorKyAg ICAgZmkKKysgIGVsc2UKKysgICAgIHRlc3RfcHJlZml4PSRleGVjX3ByZWZpeAorKyAgZmkKKysg IHZhbHVlPTAKKysgIGNhc2UgJHthY19kZWZpbmVfZGlyfSBpbgorKyAgICAgIiR7dGVzdF9wcmVm aXh9InwiJHt0ZXN0X3ByZWZpeH0vIip8XAorKwknJHtleGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJl Zml4fS8nKikKKysgICAgIHZhbHVlPTEKKysgICAgIDs7CisrICBlc2FjCisrCisrY2F0ID4+Y29u ZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgREVCVUdESVJfUkVMT0NBVEFCTEUgJHZhbHVlCisr X0FDRU9GCisrCisrCisrCisrIyBHREIncyBkYXRhZGlyIHJlbG9jYXRpb24KKysKKysKKysKKysj IENoZWNrIHdoZXRoZXIgLS13aXRoLWdkYi1kYXRhZGlyIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIk e3dpdGhfZ2RiX2RhdGFkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9n ZGJfZGF0YWRpcjsKKysgICAgR0RCX0RBVEFESVI9JHdpdGh2YWwKKytlbHNlCisrICBHREJfREFU QURJUj0ke2RhdGFkaXJ9L2dkYgorK2ZpCisrCisrCisrICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9O RSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKysgIHRlc3QgIngkZXhlY19wcmVmaXgi ID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKysgIGFjX2RlZmluZV9kaXI9YGV2 YWwgZWNobyAkR0RCX0RBVEFESVJgCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2Rl ZmluZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorKyNkZWZpbmUgR0RCX0RB VEFESVIgIiRhY19kZWZpbmVfZGlyIgorK19BQ0VPRgorKworKworKworKyAgaWYgdGVzdCAieCRl eGVjX3ByZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9 JzsgdGhlbgorKyAgICAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KKysgICAgIAl0 ZXN0X3ByZWZpeD0vdXNyL2xvY2FsCisrICAgICBlbHNlCisrCXRlc3RfcHJlZml4PSRwcmVmaXgK KysgICAgIGZpCisrICBlbHNlCisrICAgICB0ZXN0X3ByZWZpeD0kZXhlY19wcmVmaXgKKysgIGZp CisrICB2YWx1ZT0wCisrICBjYXNlICR7YWNfZGVmaW5lX2Rpcn0gaW4KKysgICAgICIke3Rlc3Rf cHJlZml4fSJ8IiR7dGVzdF9wcmVmaXh9LyIqfFwKKysJJyR7ZXhlY19wcmVmaXh9J3wnJHtleGVj X3ByZWZpeH0vJyopCisrICAgICB2YWx1ZT0xCisrICAgICA7OworKyAgZXNhYworKworK2NhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIEdEQl9EQVRBRElSX1JFTE9DQVRBQkxFICR2 YWx1ZQorK19BQ0VPRgorKworKworKworKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtcmVsb2Nh dGVkLXNvdXJjZXMgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9yZWxvY2F0ZWRfc291cmNl cytzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX3JlbG9jYXRlZF9zb3VyY2Vz OyByZWxvY19zcmNkaXI9IiR7d2l0aHZhbH0iCisrCisrICB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9O RSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKysgIHRlc3QgIngkZXhlY19wcmVmaXgi ID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKysgIGFjX2RlZmluZV9kaXI9YGV2 YWwgZWNobyAkcmVsb2Nfc3JjZGlyYAorKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19k ZWZpbmVfZGlyYAorKworK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIFJFTE9D X1NSQ0RJUiAiJGFjX2RlZmluZV9kaXIiCisrX0FDRU9GCisrCisrCisrCisrZmkKKysKKysKKysj IEdEQidzIGRhdGFkaXIgcmVsb2NhdGlvbgorKworK2dkYmRhdGFkaXI9JHtkYXRhZGlyfS9nZGIK KysKKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWdkYi1kYXRhZGlyIHdhcyBnaXZlbi4KKytp ZiB0ZXN0ICIke3dpdGhfZ2RiX2RhdGFkaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZh bD0kd2l0aF9nZGJfZGF0YWRpcjsgZ2RiZGF0YWRpcj0iJHt3aXRodmFsfSIKKytmaQorKworKwor KworKyAgdGVzdCAieCRwcmVmaXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVm aXgiCisrICB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3By ZWZpeH0nCisrICBhY19kZWZpbmVfZGlyPWBldmFsIGVjaG8gJGdkYmRhdGFkaXJgCisrICBhY19k ZWZpbmVfZGlyPWBldmFsIGVjaG8gJGFjX2RlZmluZV9kaXJgCisrCisrY2F0ID4+Y29uZmRlZnMu aCA8PF9BQ0VPRgorKyNkZWZpbmUgR0RCX0RBVEFESVIgIiRhY19kZWZpbmVfZGlyIgorK19BQ0VP RgorKworKworKworK2lmIHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgfHwgdGVzdCAieCRl eGVjX3ByZWZpeCIgPSAneCR7cHJlZml4fSc7IHRoZW4KKysgIGlmIHRlc3QgIngkcHJlZml4IiA9 IHhOT05FOyB0aGVuCisrICAgIHRlc3RfcHJlZml4PS91c3IvbG9jYWwKKysgIGVsc2UKKysgICAg dGVzdF9wcmVmaXg9JHByZWZpeAorKyAgZmkKKytlbHNlCisrICB0ZXN0X3ByZWZpeD0kZXhlY19w cmVmaXgKKytmaQorKworK2Nhc2UgJHtnZGJkYXRhZGlyfSBpbgorKyAgIiR7dGVzdF9wcmVmaXh9 InwiJHt0ZXN0X3ByZWZpeH0vIip8XAorKyAgJyR7ZXhlY19wcmVmaXh9J3wnJHtleGVjX3ByZWZp eH0vJyopCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgR0RCX0RBVEFESVJfUkVMT0NBVEFCTEUgMSIg Pj5jb25mZGVmcy5oCisrCisrICA7OworK2VzYWMKKytHREJfREFUQURJUl9QQVRIPSR7Z2RiZGF0 YWRpcn0KKysKKysKKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLXB5dGhvbmRpciB3YXMgZ2l2 ZW4uCisraWYgdGVzdCAiJHt3aXRoX3B5dGhvbmRpcitzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3 aXRodmFsPSR3aXRoX3B5dGhvbmRpcjsgcHl0aG9uZGlyPSIke3dpdGh2YWx9IgorK2Vsc2UKKysg IHB5dGhvbmRpcj1ubworK2ZpCisrCisrCisrIyBJZiB0aGUgdXNlciBwYXNzZWQgaW4gYSBwYXRo LCBkZWZpbmUgaXQuICBPdGhlcndpc2UsIGNvbXB1dGUgaXQgYXQKKysjIHJ1bnRpbWUgYmFzZWQg b24gdGhlIHBvc3NpYmx5LXJlbG9jYXRhYmxlIGRhdGFkaXIuCisraWYgdGVzdCAiJHB5dGhvbmRp ciIgPSAibm8iOyB0aGVuCisrICBweXRob25kaXI9JyQoR0RCX0RBVEFESVJfUEFUSCkvcHl0aG9u JworK2Vsc2UKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmluZSBQWVRIT05E SVIgIiRweXRob25kaXIiCisrX0FDRU9GCisrCisrZmkKKysKKysKKyAjIEludGVncmF0aW9uIHdp dGggcnBtIGxpYnJhcnkgdG8gc3VwcG9ydCBtaXNzaW5nIGRlYnVnaW5mbyBzdWdnZXN0aW9ucy4K KyAjIC0td2l0aG91dC1ycG06IERpc2FibGUgYW55IHJwbSBzdXBwb3J0LgorICMgLS13aXRoLXJw bT1saWJuYW1lLnNvOiBUcnkgdG8gZHluYW1pY2FsbHkgb3BlbiBgbGlibmFtZS5zbycgZHVyaW5n IHJ1bnRpbWUuCitAQCAtNzI1NSwxODUgKzc0MzQsNiBAQCBmaQorIAorIAorIAorLQorLSMgQ2hl Y2sgd2hldGhlciAtLXdpdGgtc2VwYXJhdGUtZGVidWctZGlyIHdhcyBnaXZlbi4KKy1pZiB0ZXN0 ICIke3dpdGhfc2VwYXJhdGVfZGVidWdfZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKy0gIHdpdGh2 YWw9JHdpdGhfc2VwYXJhdGVfZGVidWdfZGlyOworLSAgICBERUJVR0RJUj0kd2l0aHZhbAorLWVs c2UKKy0gIERFQlVHRElSPSR7bGliZGlyfS9kZWJ1ZworLWZpCistCistCistICB0ZXN0ICJ4JHBy ZWZpeCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKy0gIHRlc3QgIngk ZXhlY19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKy0gIGFjX2Rl ZmluZV9kaXI9YGV2YWwgZWNobyAkREVCVUdESVJgCistICBhY19kZWZpbmVfZGlyPWBldmFsIGVj aG8gJGFjX2RlZmluZV9kaXJgCistCistY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorLSNkZWZp bmUgREVCVUdESVIgIiRhY19kZWZpbmVfZGlyIgorLV9BQ0VPRgorLQorLQorLQorLSAgaWYgdGVz dCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtw cmVmaXh9JzsgdGhlbgorLSAgICAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KKy0g ICAgIAl0ZXN0X3ByZWZpeD0vdXNyL2xvY2FsCistICAgICBlbHNlCistCXRlc3RfcHJlZml4PSRw cmVmaXgKKy0gICAgIGZpCistICBlbHNlCistICAgICB0ZXN0X3ByZWZpeD0kZXhlY19wcmVmaXgK Ky0gIGZpCistICB2YWx1ZT0wCistICBjYXNlICR7YWNfZGVmaW5lX2Rpcn0gaW4KKy0gICAgICIk e3Rlc3RfcHJlZml4fSJ8IiR7dGVzdF9wcmVmaXh9LyIqfFwKKy0JJyR7ZXhlY19wcmVmaXh9J3wn JHtleGVjX3ByZWZpeH0vJyopCistICAgICB2YWx1ZT0xCistICAgICA7OworLSAgZXNhYworLQor LWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKy0jZGVmaW5lIERFQlVHRElSX1JFTE9DQVRBQkxF ICR2YWx1ZQorLV9BQ0VPRgorLQorLQorLQorLSMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCist CistCistCistIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nZGItZGF0YWRpciB3YXMgZ2l2ZW4uCist aWYgdGVzdCAiJHt3aXRoX2dkYl9kYXRhZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKy0gIHdpdGh2 YWw9JHdpdGhfZ2RiX2RhdGFkaXI7CistICAgIEdEQl9EQVRBRElSPSR3aXRodmFsCistZWxzZQor LSAgR0RCX0RBVEFESVI9JHtkYXRhZGlyfS9nZGIKKy1maQorLQorLQorLSAgdGVzdCAieCRwcmVm aXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCistICB0ZXN0ICJ4JGV4 ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZp bmVfZGlyPWBldmFsIGVjaG8gJEdEQl9EQVRBRElSYAorLSAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBl Y2hvICRhY19kZWZpbmVfZGlyYAorLQorLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKy0jZGVm aW5lIEdEQl9EQVRBRElSICIkYWNfZGVmaW5lX2RpciIKKy1fQUNFT0YKKy0KKy0KKy0KKy0gIGlm IHRlc3QgIngkZXhlY19wcmVmaXgiID0geE5PTkUgfHwgdGVzdCAieCRleGVjX3ByZWZpeCIgPSAn eCR7cHJlZml4fSc7IHRoZW4KKy0gICAgIGlmIHRlc3QgIngkcHJlZml4IiA9IHhOT05FOyB0aGVu CistICAgICAJdGVzdF9wcmVmaXg9L3Vzci9sb2NhbAorLSAgICAgZWxzZQorLQl0ZXN0X3ByZWZp eD0kcHJlZml4CistICAgICBmaQorLSAgZWxzZQorLSAgICAgdGVzdF9wcmVmaXg9JGV4ZWNfcHJl Zml4CistICBmaQorLSAgdmFsdWU9MAorLSAgY2FzZSAke2FjX2RlZmluZV9kaXJ9IGluCistICAg ICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCistCScke2V4ZWNfcHJlZml4 fSd8JyR7ZXhlY19wcmVmaXh9LycqKQorLSAgICAgdmFsdWU9MQorLSAgICAgOzsKKy0gIGVzYWMK Ky0KKy1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2RlZmluZSBHREJfREFUQURJUl9SRUxP Q0FUQUJMRSAkdmFsdWUKKy1fQUNFT0YKKy0KKy0KKy0KKy0KKy0jIENoZWNrIHdoZXRoZXIgLS13 aXRoLXJlbG9jYXRlZC1zb3VyY2VzIHdhcyBnaXZlbi4KKy1pZiB0ZXN0ICIke3dpdGhfcmVsb2Nh dGVkX3NvdXJjZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgorLSAgd2l0aHZhbD0kd2l0aF9yZWxvY2F0 ZWRfc291cmNlczsgcmVsb2Nfc3JjZGlyPSIke3dpdGh2YWx9IgorLQorLSAgdGVzdCAieCRwcmVm aXgiID0geE5PTkUgJiYgcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCistICB0ZXN0ICJ4JGV4 ZWNfcHJlZml4IiA9IHhOT05FICYmIGV4ZWNfcHJlZml4PScke3ByZWZpeH0nCistICBhY19kZWZp bmVfZGlyPWBldmFsIGVjaG8gJHJlbG9jX3NyY2RpcmAKKy0gIGFjX2RlZmluZV9kaXI9YGV2YWwg ZWNobyAkYWNfZGVmaW5lX2RpcmAKKy0KKy1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCistI2Rl ZmluZSBSRUxPQ19TUkNESVIgIiRhY19kZWZpbmVfZGlyIgorLV9BQ0VPRgorLQorLQorLQorLWZp CistCistCistIyBHREIncyBkYXRhZGlyIHJlbG9jYXRpb24KKy0KKy1nZGJkYXRhZGlyPSR7ZGF0 YWRpcn0vZ2RiCistCistCistIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nZGItZGF0YWRpciB3YXMg Z2l2ZW4uCistaWYgdGVzdCAiJHt3aXRoX2dkYl9kYXRhZGlyK3NldH0iID0gc2V0OyB0aGVuIDoK Ky0gIHdpdGh2YWw9JHdpdGhfZ2RiX2RhdGFkaXI7IGdkYmRhdGFkaXI9IiR7d2l0aHZhbH0iCist ZmkKKy0KKy0KKy0KKy0gIHRlc3QgIngkcHJlZml4IiA9IHhOT05FICYmIHByZWZpeD0iJGFjX2Rl ZmF1bHRfcHJlZml4IgorLSAgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSAmJiBleGVjX3By ZWZpeD0nJHtwcmVmaXh9JworLSAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRnZGJkYXRhZGly YAorLSAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19kZWZpbmVfZGlyYAorLQorLWNhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKKy0jZGVmaW5lIEdEQl9EQVRBRElSICIkYWNfZGVmaW5lX2Rp ciIKKy1fQUNFT0YKKy0KKy0KKy0KKy1pZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FIHx8 IHRlc3QgIngkZXhlY19wcmVmaXgiID0gJ3gke3ByZWZpeH0nOyB0aGVuCistICBpZiB0ZXN0ICJ4 JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgorLSAgICB0ZXN0X3ByZWZpeD0vdXNyL2xvY2FsCistICBl bHNlCistICAgIHRlc3RfcHJlZml4PSRwcmVmaXgKKy0gIGZpCistZWxzZQorLSAgdGVzdF9wcmVm aXg9JGV4ZWNfcHJlZml4CistZmkKKy0KKy1jYXNlICR7Z2RiZGF0YWRpcn0gaW4KKy0gICIke3Rl c3RfcHJlZml4fSJ8IiR7dGVzdF9wcmVmaXh9LyIqfFwKKy0gICcke2V4ZWNfcHJlZml4fSd8JyR7 ZXhlY19wcmVmaXh9LycqKQorLQorLSRhc19lY2hvICIjZGVmaW5lIEdEQl9EQVRBRElSX1JFTE9D QVRBQkxFIDEiID4+Y29uZmRlZnMuaAorLQorLSAgOzsKKy1lc2FjCistR0RCX0RBVEFESVJfUEFU SD0ke2dkYmRhdGFkaXJ9CistCistCistCistIyBDaGVjayB3aGV0aGVyIC0td2l0aC1weXRob25k aXIgd2FzIGdpdmVuLgorLWlmIHRlc3QgIiR7d2l0aF9weXRob25kaXIrc2V0fSIgPSBzZXQ7IHRo ZW4gOgorLSAgd2l0aHZhbD0kd2l0aF9weXRob25kaXI7IHB5dGhvbmRpcj0iJHt3aXRodmFsfSIK Ky1lbHNlCistICBweXRob25kaXI9bm8KKy1maQorLQorLQorLSMgSWYgdGhlIHVzZXIgcGFzc2Vk IGluIGEgcGF0aCwgZGVmaW5lIGl0LiAgT3RoZXJ3aXNlLCBjb21wdXRlIGl0IGF0CistIyBydW50 aW1lIGJhc2VkIG9uIHRoZSBwb3NzaWJseS1yZWxvY2F0YWJsZSBkYXRhZGlyLgorLWlmIHRlc3Qg IiRweXRob25kaXIiID0gIm5vIjsgdGhlbgorLSAgcHl0aG9uZGlyPSckKEdEQl9EQVRBRElSX1BB VEgpL3B5dGhvbicKKy1lbHNlCistCistY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorLSNkZWZp bmUgUFlUSE9ORElSICIkcHl0aG9uZGlyIgorLV9BQ0VPRgorLQorLWZpCistCistCistCistCist Cisgc3ViZGlycz0iJHN1YmRpcnMgZG9jIHRlc3RzdWl0ZSIKKyAKKyAKK0BAIC05MjkwLDEwICs5 MjkwLDEwIEBAIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9yZWFkbGluZSIgPSB5ZXM7IHQKICAgICMg cmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIHRoZSBuYW1lIGBfcmxfZWNob2luZ19wJy4KICAg ICMgYCQoUkVBRExJTkVfRElSKS8nIG9mIGJ1bmRsZWQgcmVhZGxpbmUgd291bGQgbm90IHJlc29s dmUgaW4gY29uZmlndXJlLgogIAotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IGNoZWNraW5nIGZv ciByZWFkbGluZV9lY2hvaW5nX3AiID4mNQotLWVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgZm9yIHJl YWRsaW5lX2VjaG9pbmdfcC4uLiAkRUNIT19DIiA+JjYKKy0gIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcCIgPiY1 CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHJlYWRsaW5lX2VjaG9pbmdfcC4uLiAiID4mNjsg fQogICAgc2F2ZV9MSUJTPSRMSUJTCiAgICBMSUJTPSIkTElCUyAkUkVBRExJTkUiCi0tICBjYXQg PmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLS0vKiBjb25mZGVmcy5oLiAgKi8KLS1fQUNFT0YK LS1jYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQKLS1jYXQgPj5jb25mdGVzdC4kYWNf ZXh0IDw8X0FDRU9GCiArICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306 IGNoZWNraW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3AiID4mNQogKyRhc19lY2hvX24gImNoZWNr aW5nIGZvciByZWFkbGluZV9lY2hvaW5nX3AuLi4gIiA+JjY7IH0KLSsgIGNhdCBjb25mZGVmcy5o IC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNF T0YgPmNvbmZ0ZXN0LiRhY19leHQKICAvKiBlbmQgY29uZmRlZnMuaC4gICovCiAgCi0gaW50Ci1A QCAtOTIyMSw0NSArOTIxNyw0NSBAQCBleHRlcm4gaW50IHJlYWRsaW5lX2VjaG9pbmdfcDsKLSAg IHJldHVybiAwOwotIH0KLSBfQUNFT0YKLS1ybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0 ZXN0JGFjX2V4ZWV4dAotLWlmIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX2xp bmtcIiIpID4mNQotLSAgKGV2YWwgJGFjX2xpbmspIDI+Y29uZnRlc3QuZXIxCi0tICBhY19zdGF0 dXM9JD8KLS0gIGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0LmVyMSA+Y29uZnRlc3QuZXJyCi0tICBy bSAtZiBjb25mdGVzdC5lcjEKLS0gIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0tICBlY2hvICIkYXNf bWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0tICAoZXhpdCAkYWNfc3RhdHVzKTsg fSAmJgotLQkgeyBhY190cnk9J3Rlc3QgLXogIiRhY19jX3dlcnJvcl9mbGFnIgotLQkJCSB8fCB0 ZXN0ICEgLXMgY29uZnRlc3QuZXJyJwotLSAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzog XCIkYWNfdHJ5XCIiKSA+JjUKLS0gIChldmFsICRhY190cnkpIDI+JjUKLS0gIGFjX3N0YXR1cz0k PwotLSAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotLSAgKGV4 aXQgJGFjX3N0YXR1cyk7IH07IH0gJiYKLS0JIHsgYWNfdHJ5PSd0ZXN0IC1zIGNvbmZ0ZXN0JGFj X2V4ZWV4dCcKLS0gIHsgKGV2YWwgZWNobyAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikg PiY1Ci0tICAoZXZhbCAkYWNfdHJ5KSAyPiY1Ci0tICBhY19zdGF0dXM9JD8KLS0gIGVjaG8gIiRh c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLS0gIChleGl0ICRhY19zdGF0dXMp OyB9OyB9OyB0aGVuCi0raWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICAg UkVBRExJTkVfRUNIT0lOR19QPXllcwotIGVsc2UKLS0gIGVjaG8gIiRhc19tZTogZmFpbGVkIHBy b2dyYW0gd2FzOiIgPiY1Ci0tc2VkICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQotKyAg UkVBRExJTkVfRUNIT0lOR19QPW5vCi0gCi0tUkVBRExJTkVfRUNIT0lOR19QPW5vCi0rJGFzX2Vj aG8gIiNkZWZpbmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybF9lY2hvaW5nX3AiID4+Y29uZmRlZnMu aAotKwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBc Ci0rICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rICB7ICRhc19lY2hv ICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJFQURMSU5FX0VDSE9JTkdf UCIgPiY1Ci0rJGFzX2VjaG8gIiRSRUFETElORV9FQ0hPSU5HX1AiID4mNjsgfQorQEAgLTkzMTYs OSArOTMxNiwzNSBAQCAkYXNfZWNobyAiI2RlZmluZSByZWFkbGluZV9lY2hvaW5nX3AgX3JsCisg ZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAg Y29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gIExJQlM9IiRzYXZlX0xJQlMi CisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFJF QURMSU5FX0VDSE9JTkdfUCIgPiY1CisgJGFzX2VjaG8gIiRSRUFETElORV9FQ0hPSU5HX1AiID4m NjsgfQogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgX3JsX2NhdWdodF9zaWduYWwiID4mNQogKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBf cmxfY2F1Z2h0X3NpZ25hbC4uLiAiID4mNjsgfQogKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VP RiA+Y29uZnRlc3QuJGFjX2V4dAogKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLS1jYXQgPj5j b25mZGVmcy5oIDw8XF9BQ0VPRgotLSNkZWZpbmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybF9lY2hv aW5nX3AKKysKICtpbnQKICttYWluICgpCiArewpAQCAtMjg5LDI0ICs2MjksMjAgQEAgZ2RiL3Rl c3RzdWl0ZS8KICsgIDsKICsgIHJldHVybiAwOwogK30KLSBfQUNFT0YKKytfQUNFT0YKICtpZiBh Y19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CiArICBSRUFETElORV9DQVVHSFRfU0lH TkFMPXllcwogKwogKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUkVBRExJTkVfQ0FVR0hUX1NJR05B TCAvKiovIiA+PmNvbmZkZWZzLmgKLSAKKysKICtlbHNlCiArICBSRUFETElORV9DQVVHSFRfU0lH TkFMPW5vCi0gZmkKLS1ybSAtZiBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0t ICAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKytmaQogK3JtIC1mIGNv cmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogKyAgICBjb25mdGVzdCRhY19l eGVleHQgY29uZnRlc3QuJGFjX2V4dAogKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiByZXN1bHQ6ICRSRUFETElORV9DQVVHSFRfU0lHTkFMIiA+JjUKICskYXNfZWNo byAiJFJFQURMSU5FX0NBVUdIVF9TSUdOQUwiID4mNjsgfQotICAgTElCUz0iJHNhdmVfTElCUyIK LS0gIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5HX1AiID4m NQotLWVjaG8gIiR7RUNIT19UfSRSRUFETElORV9FQ0hPSU5HX1AiID4mNgorKyAgTElCUz0iJHNh dmVfTElCUyIKICBlbHNlCiAgICBSRUFETElORT0nJChSRUFETElORV9ESVIpL2xpYnJlYWRsaW5l LmEnCiAgICBSRUFETElORV9ERVBTPSckKFJFQURMSU5FKScKCmRpZmYgLS1naXQgYS9nZGItcmVh ZGxpbmUtNi4wLnBhdGNoIGIvZ2RiLXJlYWRsaW5lLTYuMC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMmQwMDYwYi4uMDAwMDAwMAotLS0gYS9nZGItcmVhZGxpbmUtNi4wLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLWdkYi8KLTIwMDktMDctMzEgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBjb21wYXRp YmlsaXR5IG9mIC0td2l0aC1zeXN0ZW0tcmVhZGxpbmUgYW5kIHJlYWRsaW5lLTYuMCsuCi0JKiBj b25maWd1cmUuYWMgPC0td2l0aC1zeXN0ZW0tcmVhZGxpbmU+IChmb3IgcmVhZGxpbmVfZWNob2lu Z19wKTogTmV3Ci0JdGVzdC4KLQkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KLQkqIGNvbmZpZ3Vy ZTogUmVnZW5lcmF0ZS4KLQotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3Vy ZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA5MDkub3JpZy9nZGIvY29uZmln dXJlLmFjCTIwMDktMDktMDkgMjA6MTE6MDQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41 MC4yMDA5MDkwOS9nZGIvY29uZmlndXJlLmFjCTIwMDktMDktMDkgMjA6MTE6NTQuMDAwMDAwMDAw ICswMjAwCi1AQCAtNzczLDYgKzc3MywyMSBAQCBpZiB0ZXN0ICIkd2l0aF9zeXN0ZW1fcmVhZGxp bmUiID0geWVzOyB0Ci0gICBSRUFETElORT0tbHJlYWRsaW5lCi0gICBSRUFETElORV9ERVBTPQot ICAgUkVBRExJTkVfQ0ZMQUdTPQotKwotKyAgIyByZWFkbGluZS02LjAgc3RhcnRlZCB0byB1c2Ug dGhlIG5hbWUgYF9ybF9lY2hvaW5nX3AnLgotKyAgIyBgJChSRUFETElORV9ESVIpLycgb2YgYnVu ZGxlZCByZWFkbGluZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25maWd1cmUuCi0rCi0rICBBQ19N U0dfQ0hFQ0tJTkcoW2ZvciByZWFkbGluZV9lY2hvaW5nX3BdKQotKyAgc2F2ZV9MSUJTPSRMSUJT Ci0rICBMSUJTPSIkTElCUyAkUkVBRExJTkUiCi0rICBBQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BS T0dSQU0oLFtbZXh0ZXJuIGludCByZWFkbGluZV9lY2hvaW5nX3A7Ci0rCQkJCSAgICByZXR1cm4g cmVhZGxpbmVfZWNob2luZ19wO11dKSwKLSsJCSBbUkVBRExJTkVfRUNIT0lOR19QPXllc10sCi0r CQkgW1JFQURMSU5FX0VDSE9JTkdfUD1ubwotKwkJICBBQ19ERUZJTkUoW3JlYWRsaW5lX2VjaG9p bmdfcF0sIFtfcmxfZWNob2luZ19wXSwKLSsJCQkgICAgW3JlYWRsaW5lLTYuMCBzdGFydGVkIHRv IHVzZSBkaWZmZXJlbnQgbmFtZS5dKV0pCi0rICBMSUJTPSIkc2F2ZV9MSUJTIgotKyAgQUNfTVNH X1JFU1VMVChbJFJFQURMSU5FX0VDSE9JTkdfUF0pCi0gZWxzZQotICAgUkVBRExJTkU9JyQoUkVB RExJTkVfRElSKS9saWJyZWFkbGluZS5hJwotICAgUkVBRExJTkVfREVQUz0nJChSRUFETElORSkn Ci1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDkwOS9nZGIvY29uZmlnLmluCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTYuOC41MC4yMDA5MDkwOS5vcmlnL2dkYi9jb25maWcuaW4JMjAwOS0wOS0wOSAyMDox MTozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwOTA5L2dkYi9jb25maWcu aW4JMjAwOS0wOS0wOSAyMDoxMjowMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC04MTUsNiArODE1LDkg QEAKLSAvKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUu ICovCi0gI3VuZGVmIHBpZF90Ci0gCi0rLyogcmVhZGxpbmUtNi4wIHN0YXJ0ZWQgdG8gdXNlIGRp ZmZlcmVudCBuYW1lLiAqLwotKyN1bmRlZiByZWFkbGluZV9lY2hvaW5nX3AKLSsKLSAvKiBEZWZp bmUgdG8gdGhlIGVxdWl2YWxlbnQgb2YgdGhlIEM5OSAncmVzdHJpY3QnIGtleXdvcmQsIG9yIHRv Ci0gICAgbm90aGluZyBpZiB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQuICBEbyBub3QgZGVmaW5lIGlm IHJlc3RyaWN0IGlzCi0gICAgc3VwcG9ydGVkIGRpcmVjdGx5LiAgKi8KLUluZGV4OiBnZGItNi44 LjUwLjIwMDkwOTA5L2dkYi9jb25maWd1cmUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIw MDkwOTA5Lm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDA5LTA5LTA5IDIwOjExOjA3LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA5MDkvZ2RiL2NvbmZpZ3VyZQkyMDA5LTA5LTA5IDIw OjExOjU0LjAwMDAwMDAwMCArMDIwMAotQEAgLTkxOTcsNiArOTE5Nyw2OSBAQCBpZiB0ZXN0ICIk d2l0aF9zeXN0ZW1fcmVhZGxpbmUiID0geWVzOyB0Ci0gICBSRUFETElORT0tbHJlYWRsaW5lCi0g ICBSRUFETElORV9ERVBTPQotICAgUkVBRExJTkVfQ0ZMQUdTPQotKwotKyAgIyByZWFkbGluZS02 LjAgc3RhcnRlZCB0byB1c2UgdGhlIG5hbWUgYF9ybF9lY2hvaW5nX3AnLgotKyAgIyBgJChSRUFE TElORV9ESVIpLycgb2YgYnVuZGxlZCByZWFkbGluZSB3b3VsZCBub3QgcmVzb2x2ZSBpbiBjb25m aWd1cmUuCi0rCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tpbmcgZm9yIHJlYWRsaW5l X2VjaG9pbmdfcCIgPiY1Ci0rZWNobyAkRUNIT19OICJjaGVja2luZyBmb3IgcmVhZGxpbmVfZWNo b2luZ19wLi4uICRFQ0hPX0MiID4mNgotKyAgc2F2ZV9MSUJTPSRMSUJTCi0rICBMSUJTPSIkTElC UyAkUkVBRExJTkUiCi0rICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKLSsvKiBjb25m ZGVmcy5oLiAgKi8KLStfQUNFT0YKLStjYXQgY29uZmRlZnMuaCA+PmNvbmZ0ZXN0LiRhY19leHQK LStjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FDRU9GCi0rLyogZW5kIGNvbmZkZWZzLmguICAq LwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rZXh0ZXJuIGludCByZWFkbGluZV9lY2hvaW5nX3A7 Ci0rCQkJCSAgICByZXR1cm4gcmVhZGxpbmVfZWNob2luZ19wOwotKyAgOwotKyAgcmV0dXJuIDA7 Ci0rfQotK19BQ0VPRgotK3JtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhl ZXh0Ci0raWYgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1 Ci0rICAoZXZhbCAkYWNfbGluaykgMj5jb25mdGVzdC5lcjEKLSsgIGFjX3N0YXR1cz0kPwotKyAg Z3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVzdC5lcnIKLSsgIHJtIC1mIGNvbmZ0 ZXN0LmVyMQotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGVjaG8gIiRhc19tZTokTElORU5P OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCi0rCSB7 IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCi0rCQkJIHx8IHRlc3QgISAtcyBj b25mdGVzdC5lcnInCi0rICB7IChldmFsIGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY190cnlc IiIpID4mNQotKyAgKGV2YWwgJGFjX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICAoZXhpdCAkYWNfc3Rh dHVzKTsgfTsgfSAmJgotKwkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0Jwot KyAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKLSsgIChl dmFsICRhY190cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgKGV4aXQgJGFjX3N0YXR1cyk7IH07IH07IHRo ZW4KLSsgIFJFQURMSU5FX0VDSE9JTkdfUD15ZXMKLStlbHNlCi0rICBlY2hvICIkYXNfbWU6IGZh aWxlZCBwcm9ncmFtIHdhczoiID4mNQotK3NlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+ JjUKLSsKLStSRUFETElORV9FQ0hPSU5HX1A9bm8KLSsKLStjYXQgPj5jb25mZGVmcy5oIDw8XF9B Q0VPRgotKyNkZWZpbmUgcmVhZGxpbmVfZWNob2luZ19wIF9ybF9lY2hvaW5nX3AKLStfQUNFT0YK LSsKLStmaQotK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSsgICAg ICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotKyAgTElCUz0iJHNhdmVfTElC UyIKLSsgIGVjaG8gIiRhc19tZTokTElORU5POiByZXN1bHQ6ICRSRUFETElORV9FQ0hPSU5HX1Ai ID4mNQotK2VjaG8gIiR7RUNIT19UfSRSRUFETElORV9FQ0hPSU5HX1AiID4mNgotIGVsc2UKLSAg IFJFQURMSU5FPSckKFJFQURMSU5FX0RJUikvbGlicmVhZGxpbmUuYScKLSAgIFJFQURMSU5FX0RF UFM9JyQoUkVBRExJTkUpJwoKZGlmZiAtLWdpdCBhL2dkYi1yaGVsNS1jb21wYXQucGF0Y2ggYi9n ZGItcmhlbDUtY29tcGF0LnBhdGNoCmluZGV4IDk3YjI3MTkuLjMzZTYzYTkgMTAwNjQ0Ci0tLSBh L2dkYi1yaGVsNS1jb21wYXQucGF0Y2gKKysrIGIvZ2RiLXJoZWw1LWNvbXBhdC5wYXRjaApAQCAt MSw5ICsxLDIwIEBACiBnZGIvbGludXgtbmF0LmM6CiAtIFdvcmthcm91bmQgUkhFTC01IGtlcm5l bHMgZm9yIGRldGFjaGluZyBTSUdTVE9QcGVkIHByb2Nlc3NlcyAoQlogNDk4NTk1KS4KIAotLS0t IGdkYi02LjgvZ2RiLW9yaWcvc3ltZmlsZS5jCTIwMDgtMDgtMjEgMDA6MDY6NTAuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTYuOC9nZGIvc3ltZmlsZS5jCTIwMDgtMDgtMjEgMjI6MzE6MDAuMDAw MDAwMDAwICswMjAwCi1AQCAtMTQ1Niw4ICsxNDU2LDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdf ZmlsZSAoc3RydWN0IG9iamZpbGUKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi9lbGZy ZWFkLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL2VsZnJl YWQuYwkyMDEwLTAxLTE1IDIyOjE5OjI4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAu MjAxMDAxMTUvZ2RiL2VsZnJlYWQuYwkyMDEwLTAxLTE1IDIyOjE5OjM0LjAwMDAwMDAwMCArMDEw MAorQEAgLTU4Miw3ICs1ODIsNyBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlCisgI2RlZmluZSBCVUlMRF9JRF9WRVJCT1NFX05PTkUgMAorICNkZWZpbmUgQlVJTERf SURfVkVSQk9TRV9GSUxFTkFNRVMgMQorICNkZWZpbmUgQlVJTERfSURfVkVSQk9TRV9CSU5BUllf UEFSU0UgMgorLXN0YXRpYyBpbnQgYnVpbGRfaWRfdmVyYm9zZSA9IEJVSUxEX0lEX1ZFUkJPU0Vf RklMRU5BTUVTOworK3N0YXRpYyBpbnQgYnVpbGRfaWRfdmVyYm9zZSA9IEJVSUxEX0lEX1ZFUkJP U0VfTk9ORTsKKyBzdGF0aWMgdm9pZAorIHNob3dfYnVpbGRfaWRfdmVyYm9zZSAoc3RydWN0IHVp X2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKyAJCSAgICAgICBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqYywgY29uc3QgY2hhciAqdmFsdWUpCitAQCAtMTY1OSw4ICsxNjU5LDEwIEBAIGZpbmRf c2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKICAgICAgICAvKiBQcmV2ZW50IGxv b3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAgICAgICAgaWYgKGJ1aWxkX2lk X25hbWUgIT0gTlVMTCAmJiBzdHJjbXAgKGJ1aWxkX2lkX25hbWUsIG9iamZpbGUtPm5hbWUpID09 IDApCiAgICAgICAgICB7CkBAIC0xNCw5ICsyNSwxMSBAQCBnZGIvbGludXgtbmF0LmM6CiAgCSAg eGZyZWUgKGJ1aWxkX2lkX25hbWUpOwogIAl9CiAgICAgICAgZWxzZSBpZiAoYnVpbGRfaWRfbmFt ZSAhPSBOVUxMKQotLS0tIC4vZ2RiL2NvcmVsb3cuYwkyMDEwLTAxLTAxIDE2OjA0OjM0LjAwMDAw MDAwMCArMDEwMAotKysrIC4vZ2RiL2NvcmVsb3cuYwkyMDEwLTAxLTAxIDE2OjA2OjI2LjAwMDAw MDAwMCArMDEwMAotQEAgLTI3Nyw3ICsyNzcsNyBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAq YWJmZCwgYXNlY3Rpb24gCitJbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvY29yZWxvdy5j Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9jb3JlbG93LmMJ MjAxMC0wMS0xNSAyMjoxOToyNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi9jb3JlbG93LmMJMjAxMC0wMS0xNSAyMjoxOTozNC4wMDAwMDAwMDAgKzAxMDAKK0BA IC0yOTQsNyArMjk0LDcgQEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9u IAogICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZDsJCQkgLyogWWVzLCBtYWtlIGl0IGN1cnJlbnQg Ki8KICB9CiAgCkBAIC0yNSwyMSArMzgsMTIgQEAgZ2RiL2xpbnV4LW5hdC5jOgogIAogIHN0YXRp YyB2b2lkCiAgYnVpbGRfaWRfbG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKLS0tLSAuL2dkYi9z eW1maWxlLmMJMjAxMC0wMS0wMSAxNjowNDozNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi9z eW1maWxlLmMJMjAxMC0wMS0wMSAxNjowNjoxMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjQ5LDcg KzEyNDksNyBAQCBzeW1ib2xfZmlsZV9jbGVhciAoaW50IGZyb21fdHR5KQotICNkZWZpbmUgQlVJ TERfSURfVkVSQk9TRV9OT05FIDAKLSAjZGVmaW5lIEJVSUxEX0lEX1ZFUkJPU0VfRklMRU5BTUVT IDEKLSAjZGVmaW5lIEJVSUxEX0lEX1ZFUkJPU0VfQklOQVJZX1BBUlNFIDIKLS1zdGF0aWMgaW50 IGJ1aWxkX2lkX3ZlcmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX0ZJTEVOQU1FUzsKLStzdGF0aWMg aW50IGJ1aWxkX2lkX3ZlcmJvc2UgPSBCVUlMRF9JRF9WRVJCT1NFX05PTkU7Ci0gc3RhdGljIHZv aWQKLSBzaG93X2J1aWxkX2lkX3ZlcmJvc2UgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJv bV90dHksCi0gCQkgICAgICAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIg KnZhbHVlKQotLS0tIGdkYi03LjAtb3JpZy9nZGIvbGludXgtbmF0LmMJMjAwOS0xMi0xOSAyMDo1 Mzo0Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4wL2dkYi9saW51eC1uYXQuYwkyMDA5LTEy LTE5IDIwOjU1OjAyLjAwMDAwMDAwMCArMDEwMAotQEAgLTE2MDQsOCArMTYwNCwyMiBAQCBHUFQ6 IGx3cCAlcyBoYWQgc2lnbmFsICVzLCBidXQgaXQgaXMgaW4gCi0gCSpzdGF0dXMgPSBscC0+c3Rh dHVzOworSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEwLTAx LTE1IDIyOjE5OjI3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMjI6MTk6NTUuMDAwMDAwMDAwICswMTAwCitAQCAtMTc2 OCw4ICsxNzY4LDIyIEBAIEdQVDogbHdwICVzIGhhZCBzaWduYWwgJXMsIGJ1dCBpdCBpcyBpbiAK KyAJCQkgICAgdGFyZ2V0X3NpZ25hbF90b19zdHJpbmcgKHNpZ25vKSk7CiAgICAgIH0KICAKIC0g IGlmICgqc3RhdHVzID09IDAgJiYgR0VUX1BJRCAobHAtPnB0aWQpID09IHBpZF93YXNfc3RvcHBl ZCkKCmRpZmYgLS1naXQgYS9nZGItcmhlbDUtZ2NjNDQucGF0Y2ggYi9nZGItcmhlbDUtZ2NjNDQu cGF0Y2gKaW5kZXggYzFmYThjNC4uMTVkMzRkZiAxMDA2NDQKLS0tIGEvZ2RiLXJoZWw1LWdjYzQ0 LnBhdGNoCisrKyBiL2dkYi1yaGVsNS1nY2M0NC5wYXRjaApAQCAtMSw4ICsxLDEwIEBACiBTb21l IGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlIG9uIFJIRUwtNS40KyBvbmx5IHdpdGggZ2NjNDQg YW5kIGdmb3J0cmFuNDQgYXMKIHRoZSBkZWZhdWx0IGdjYyBhbmQgZ2ZvcnRyYW4gYmluYXJpZXMg YXJlIGZyb20gZ2NjLTQuMS4KIAotLS0tIGdkYi03LjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92 bGEuZXhwLW9yaWcJMjAwOS0xMi0yMCAwMDozODoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4wL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDA5LTEyLTIwIDAwOjU0OjE5LjAw MDAwMDAwMCArMDEwMAorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS92bGEuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjEzLjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMTYsNyAr MTYsMjUgQEAKICBzZXQgdGVzdGZpbGUgdmxhCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwpA QCAtMzAsOCArMzIsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBh cmUgZnJvbSBnY2MtNC4xLgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSB0ZXN0IHBy b2dyYW0iCiAgICAgIHJldHVybiAtMQogIH0KLS0tLSBnZGItNy4wL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvYnJlYWstaW50ZXJwLmV4cC1vcmlnCTIwMDktMTItMjAgMDA6Mzg6MTMuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5l eHAJMjAwOS0xMi0yMCAwMToxMTo0Ny4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAorPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2JyZWFrLWludGVycC5leHAJMjAxMC0wMS0xNCAyMjoxMjowMC4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJw LmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTMxLDEwICszMSwz MCBAQCBpZiBbZ2V0X2NvbXBpbGVyX2luZm8gJHtiaW5maWxlX2xpYn1dIHsKICAgICAgcmV0dXJu IC0xCiAgfQpAQCAtNjQsNyArNjgsNyBAQCB0aGUgZGVmYXVsdCBnY2MgYW5kIGdmb3J0cmFuIGJp bmFyaWVzIGFyZSBmcm9tIGdjYy00LjEuCiAgICAgIHJldHVybiAtMQogIH0KICAKLUBAIC00ODMs OSArNTAzLDMzIEBAIGZvcmVhY2ggbGRwcmVsaW5rIHtOTyBZRVN9IHsKK0BAIC00ODAsOSArNTAw LDMzIEBAIGZvcmVhY2ggbGRwcmVsaW5rIHtOTyBZRVN9IHsKICAJCSAgICBpZiB7JGJpbnBpZSA9 PSAiWUVTIn0gewogIAkJCWxhcHBlbmQgb3B0cyB7YWRkaXRpb25hbF9mbGFncz0tZlBJRSAtcGll fQogIAkJICAgIH0KQEAgLTEwMCw4ICsxMDQsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9y dHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogIAkJICAgIGlmIHskYmluc2VwZGVidWcg PT0gIlNFUCJ9IHsKICAJCQlnZGJfZ251X3N0cmlwX2RlYnVnICRleGVjCiAgCQkJIyBKdXN0IGEg c2FuaXR5IGNoZWNrLiAgQXMgZ2RiX2dudV9zdHJpcF9kZWJ1ZyB1c2VzIHRoZQotLS0tIC4vZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMDktMTItMTUgMDU6MTM6 NTYuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1v bi1ibG9jay5leHAJMjAwOS0xMi0xNSAwNToyMTowMC4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBn ZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2Nr LmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAJMjAxMC0wMS0xNSAyMjoxNDoxNy4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEw MAogQEAgLTIwLDcgKzIwLDI1IEBAIHNldCB0ZXN0ZmlsZSAiY29tbW9uLWJsb2NrIgogIHNldCBz cmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KQEAgLTEyOSw4ICsxMzUsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9y dHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3Qg Y29tcGlsZSAke3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci0tLS0gLi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAwOS0xMi0xNSAwNToxMzo1Ni4wMDAw MDAwMDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRl LmV4cAkyMDA5LTEyLTE1IDA1OjIwOjA3LjAwMDAwMDAwMCArMDEwMAorSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjEzLjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9k d2FyZi1zdHJpZGUuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAt MjcsNyArMjcsMjUgQEAKICBzZXQgdGVzdGZpbGUgZHdhcmYtc3RyaWRlCiAgc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uZjkwCkBAIC0xNTgsOCArMTY2LDEwIEBAIHRoZSBkZWZhdWx0IGdjYyBhbmQg Z2ZvcnRyYW4gYmluYXJpZXMgYXJlIGZyb20gZ2NjLTQuMS4KICAgICAgcmV0dXJuIC0xCiAgfQog IAotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDA5LTEyLTE1 IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLmV4cAkyMDA5LTEyLTE1IDA1OjE3OjIxLjAwMDAwMDAwMCArMDEwMAorSW5kZXg6 IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4 cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6MTMuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5 bmFtaWMuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMjUsNyAr MjUsMjUgQEAgc2V0IHRlc3RmaWxlICJkeW5hbWljIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9 LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTE4 Nyw4ICsxOTcsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUg ZnJvbSBnY2MtNC4xLgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9 IgogICAgICByZXR1cm4gLTEKICB9Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xp YnJhcnktbW9kdWxlLmV4cAkyMDA5LTEyLTE1IDA1OjEzOjU2LjAwMDAwMDAwMCArMDEwMAotKysr IC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJMjAwOS0xMi0x NSAwNToyMjozNy4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGli cmFyeS1tb2R1bGUuZXhwCTIwMTAtMDEtMTUgMjI6MTQ6MTMuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9k dWxlLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTI1LDE2ICsy NSwzNCBAQCBpZiBbZ2V0X2NvbXBpbGVyX2luZm8gbm90LXVzZWRdIHsKICAgICByZXR1cm4gLTEK ICB9CkBAIC0yMjgsOCArMjQwLDEwIEBAIHRoZSBkZWZhdWx0IGdjYyBhbmQgZ2ZvcnRyYW4gYmlu YXJpZXMgYXJlIGZyb20gZ2NjLTQuMS4KICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUg JHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9tb2R1bGUuZXhwCTIwMDktMTItMTUgMDU6MTM6NTYuMDAwMDAwMDAwICswMTAwCi0r KysgLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAwOS0xMi0xNSAwNToy ODo0OS4wMDAwMDAwMDAgKzAxMDAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAu MjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0w MS0xNSAyMjoxNDoxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAw MDAwMDAwMCArMDEwMAogQEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlICJtb2R1bGUi CiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCkBAIC0yNTcsOCArMjcxLDEwIEBAIHRoZSBk ZWZhdWx0IGdjYyBhbmQgZ2ZvcnRyYW4gYmluYXJpZXMgYXJlIGZyb20gZ2NjLTQuMS4KICAgICAg cmV0dXJuIC0xCiAgfQogIAotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcu ZXhwCTIwMDktMTItMTUgMDU6MTM6NTYuMDAwMDAwMDAwICswMTAwCi0rKysgLi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAwOS0xMi0xNSAwNToxODoxMy4wMDAwMDAwMDAg KzAxMDAKK0luZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RyaW5nLmV4cAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAxMC0wMS0xNSAyMjoxNDoxMy4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAog QEAgLTIzLDcgKzIzLDI1IEBAIHNldCB0ZXN0ZmlsZSAic3RyaW5nIgogIHNldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0KQEAgLTI4Niw4ICszMDIsMTAgQEAgdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5h cmllcyBhcmUgZnJvbSBnY2MtNC4xLgogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAk e3NyY2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci0tLS0gZ2RiLTcuMC9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cC1vcmlnCTIwMDktMTItMjAgMDk6NDc6MDQuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVw LmV4cAkyMDA5LTEyLTIwIDA5OjUwOjA2LjAwMDAwMDAwMCArMDEwMAorSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKKz09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9vbXAtc3RlcC5leHAJMjAxMC0wMS0xNSAyMjoxNDoxNi4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAu ZXhwCTIwMTAtMDEtMTUgMjI6MTQ6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMTUsNyArMTUsMjYg QEAKICAKICBzZXQgdGVzdGZpbGUgIm9tcC1zdGVwIgpAQCAtMzE2LDEzICszMzQsMTYgQEAgdGhl IGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogICAg ICByZXR1cm4gLTEKICB9CiAgCi0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2 ZWQtdHlwZS5leHAJMjAwOS0wMS0wNyAxMzozOToxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDA5LTEyLTIwIDEyOjM3 OjEyLjAwMDAwMDAwMCArMDEwMAotQEAgLTI2LDcgKzI2LDI1IEBAIHNldCB0ZXN0ZmlsZSAiZGVy aXZlZC10eXBlIgorSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMC41MC4yMDEw MDExNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDEw LTAxLTAxIDA4OjMyOjAyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjAuNTAuMjAxMDAxMTUv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMTUgMjI6 MTY6MjAuMDAwMDAwMDAwICswMTAwCitAQCAtMjgsOCArMjgsMjYgQEAgc2V0IHRlc3RmaWxlICJk ZXJpdmVkLXR5cGUiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQogIAotLWlmICB7IFtnZGJfY29tcGlsZSAi JHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7 ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CistaWYge1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9 LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAorLQkgZXhlY3V0YWJsZSB7ZGVi dWcgZjc3fV0gIT0gIiJ9IHsKICsjIFRlbXBvcmFyaWx5IHByb3ZpZGUgZjc3Y29tcGlsZXI9Z2Zv cnRyYW40NCBzYXZpbmcgdGhlIG9yaWdpbmFsIHZhbHVlIGFyb3VuZC4KICsKICtzZXQgYm9hcmQg W3RhcmdldF9pbmZvIG5hbWVdCkBAIC0zMzQsNyArMzU1LDggQEAgdGhlIGRlZmF1bHQgZ2NjIGFu ZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJvbSBnY2MtNC4xLgogK30KICtzZXRfYm9hcmRfaW5m byBmNzdjb21waWxlciBnZm9ydHJhbjQ0CiArCi0rc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3Jj ZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVn IGY3NyBxdWlldH1dCisrc2V0IGVyciBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0v JHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIFwKKysJIGV4ZWN1dGFibGUge2RlYnVnIGY3N31dCiAr CiArdW5zZXRfYm9hcmRfaW5mbyBmNzdjb21waWxlcgogK2lmIFtpbmZvIGV4aXN0cyBvbGRfZjc3 Y29tcGlsZXJdIHsKQEAgLTM0MiwxNiArMzY0LDE5IEBAIHRoZSBkZWZhdWx0IGdjYyBhbmQgZ2Zv cnRyYW4gYmluYXJpZXMgYXJlIGZyb20gZ2NjLTQuMS4KICt9CiArCiAraWYgeyAkZXJyICE9ICIi IH0gewotICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAgICBy ZXR1cm4gLTEKICB9Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4 cAkyMDA5LTAxLTA3IDEzOjM5OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAwOS0xMi0yMCAxMjozODowMC4wMDAwMDAwMDAg KzAxMDAKLUBAIC0yNiw3ICsyNiwyNSBAQCBzZXQgdGVzdGZpbGUgInN1YmFycmF5IgorIAorSW5k ZXg6IGdkYi03LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJh eS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJMjAxMC0wMS0wMSAwODozMjowMi4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3ViYXJyYXkuZXhwCTIwMTAtMDEtMTUgMjI6MTc6MTguMDAwMDAwMDAwICswMTAwCitAQCAt MjgsOCArMjgsMjYgQEAgc2V0IHRlc3RmaWxlICJzdWJhcnJheSIKICBzZXQgc3JjZmlsZSAke3Rl c3RmaWxlfS5mCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQog IAotLWlmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CistaWYg e1tnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxl fSIgXAorLQlleGVjdXRhYmxlIHtkZWJ1ZyBmNzd9XSAhPSAiIn0gewogKyMgVGVtcG9yYXJpbHkg cHJvdmlkZSBmNzdjb21waWxlcj1nZm9ydHJhbjQ0IHNhdmluZyB0aGUgb3JpZ2luYWwgdmFsdWUg YXJvdW5kLgogKwogK3NldCBib2FyZCBbdGFyZ2V0X2luZm8gbmFtZV0KQEAgLTM2Myw3ICszODgs OCBAQCB0aGUgZGVmYXVsdCBnY2MgYW5kIGdmb3J0cmFuIGJpbmFyaWVzIGFyZSBmcm9tIGdjYy00 LjEuCiArfQogK3NldF9ib2FyZF9pbmZvIGY3N2NvbXBpbGVyIGdmb3J0cmFuNDQKICsKLStzZXQg ZXJyIFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5m aWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgZjc3IHF1aWV0fV0KKytzZXQgZXJyIFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgXAorKwlleGVj dXRhYmxlIHtkZWJ1ZyBmNzd9XQogKwogK3Vuc2V0X2JvYXJkX2luZm8gZjc3Y29tcGlsZXIKICtp ZiBbaW5mbyBleGlzdHMgb2xkX2Y3N2NvbXBpbGVyXSB7CkBAIC0zNzEsMTEgKzM5NywxMyBAQCB0 aGUgZGVmYXVsdCBnY2MgYW5kIGdmb3J0cmFuIGJpbmFyaWVzIGFyZSBmcm9tIGdjYy00LjEuCiAr fQogKwogK2lmIHsgJGVyciAhPSAiIiB9IHsKLSAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBp bGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCTIwMDktMTItMjAgMTI6MjI6MTguMDAwMDAwMDAw ICswMTAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJ MjAwOS0xMi0yMCAxMjozOTo1My4wMDAwMDAwMDAgKzAxMDAKKyAKK0luZGV4OiBnZGItNy4wLjUw LjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMC0wMS0xNSAyMjoxNDoxNS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxz LXNlcGRlYnVnLmV4cAkyMDEwLTAxLTE1IDIyOjE0OjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTMy LDcgKzMyLDI1IEBAIHNldCBiaW5zaGFyZWRkZWJ1Z2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGkKICAK ICAjIEZJWE1FOiBnY2MgZGVwZW5kZW5jeSAoLVdsLC1zb25hbWUpLgoKZGlmZiAtLWdpdCBhL2dk Yi1zdGFicy1yZWFkX2FyZ3MucGF0Y2ggYi9nZGItc3RhYnMtcmVhZF9hcmdzLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTE2OTI0Li4wMDAwMDAwCi0tLSBhL2dkYi1zdGFi cy1yZWFkX2FyZ3MucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1odHRwOi8v c291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wMS9tc2cwMDE0Mi5odG1sCi1TdWJq ZWN0OiBbcGF0Y2hdIEZpeCBjcmFzaCByZWFkaW5nIGJyb2tlbiBzdGFicwotCi1IaSwKLQotc2Vl biB0aGlzIHN0YWJzIGZyb20gdW5rbm93biB2YXJpYW50IG9mIGdjYy00LjEuMjoKLQotMTE3NjU4 NiBMU1lNICAgMCAgICAgIDE1NCAgICAwMDAwMDAwMCAxNjY4MjA3NiBiYXNpY19zdHJpbmc8Y2hh cixzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LHN0ZDo6YWxsb2NhdG9yPGNoYXI+ID46Ol9SZXA6VHQo MCwzNCk9czEyITEsMDIwLCgwLDM1KT14c19SZXBfYmFzZTo7X1NfbWF4X3NpemU6LzIoMCwzNik9 aygwLDMwKTpfWk5TczRfUmVwMTFfU19tYXhfc2l6ZUU7X1NfdGVybWluYWw6LzIoMCwyMik6X1pO U3M0X1JlcDExX1NfdGVybWluYWxFO19TX2VtcHR5X3JlcF9zdG9yYWdlOi8yKDAsMzcpPWFyKDAs MzgpPXIoMCwzOCk7MDswMzc3Nzc3Nzc3Nzc7OzA7MzsoMCwzMCk6X1pOU3M0X1JlcDIwX1NfZW1w dHlfcmVwX3N0b3JhZ2VFO19TX2VtcHR5X3JlcDo6KDAsMzkpPWYoMCw0MCk9JigwLDM0KTpfWk5T czRfUmVwMTJfU19lbXB0eV9yZXBFdjsyQT87X01faXNfbGVha2VkOjooMCw0MSk9IygwLDM0KSwo MCw0Mik9QHM4Oy0xNjssKDAsNDMpPSooMCw0NCk9aygwLDM0KSwoMCwxKTs6X1pOS1NzNF9SZXAx Ml9NX2lzX2xlYWtlZEV2OzJCLjtfTV9pc19zaGFyZWQ6OigwLDQxKTpfWk5LU3M0X1JlcDEyX01f aXNfc2hhcmVkRXY7MkIuO19NX3NldF9sZWFrZWQ6OigwLDQ1KT0jKDAsMzQpLCgwLDEpLCgwLDMz KSwoMCwxKTs6X1pOU3M0X1JlcDEzX01fc2V0X2xlYWtlZEV2OzJBLjtfTV9zZXRfc2hhcmFibGU6 OigwLDQ1KTpfWk5TczRfUmVwMTVfTV9zZXRfc2hhcmFibGVFdjsyQS47X01fc2V0X2xlbmd0aF9h bmRfc2hhcmFibGU6OigwLDQ2KT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwoMCwyNSksKDAsMSk7Ol9a TlNzNF9SZXAyNl9NX3NldF9sZW5ndGhfYW5kX3NoYXJhYmxlRWo7MkEuO19NX3JlZmRhdGE6Oigw LDQ3KT0jKDAsMzQpLCgwLDMpLCgwLDMzKSwoMCwxKTs6X1pOU3M0X1JlcDEwX01fcmVmZGF0YUV2 OzJBLjtfTV9ncmFiOjooMCw0OCk9IygwLDM0KSwoMCwzKSwoMCwzMyksKDAsNSksKDAsNSksKDAs MSk7Ol9aTlNzNF9SZXA3X01fZ3JhYkVSS1NhSWNFUzJfOzJBLjtfU19jcmVhdGU6OigwLDQ5KT1m KDAsMzMpOl9aTlNzNF9SZXA5X1NfY3JlYXRlRWpqUktTYUljRTsyQT87X01fZGlzcG9zZTo6KDAs NTApPSMoMCwzNCksKDAsMSksKDAsMzMpLCgwLDUpLCgwLDEpOzpfWk5TczRfUmVwMTBfTV9kaXNw b3NlRVJLU2FJY0U7MkEuO19NX2Rlc3Ryb3k6OigwLDUxKT0jKDAsMzQpLCgwLDEpLCgwLDMzKSwo MCw1KSwoMCwxKTs6X1pOU3M0X1JlcDEwX01fZGVzdHJveUVSS1NhSWNFOzJBLjtfTV9yZWZjb3B5 OjooMCw0Nyk6X1pOU3M0X1JlcDEwX01fcmVmY29weUV2OzJBLjtfTV9jbG9uZTo6KDAsNTIpPSMo MCwzNCksKDAsMyksKDAsMzMpLCgwLDUpLCgwLDI1KSwoMCwxKTs6X1pOU3M0X1JlcDhfTV9jbG9u ZUVSS1NhSWNFajsyQS47OwotCi1UaGVyZSBpcyBhIEdEQiBjcmFzaCBhdDoKLV9NX2lzX2xlYWtl ZDo6KDAsNDEpPSMoMCwzNCksKDAsNDIpPUBzODstMTY7LCgwLDQzKT0qKDAsNDQpPWsoMCwzNCks KDAsMSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXl4KLSsg Wy4uLl0gU29tZSBicm9rZW4gc3RhYnMKLSsJIG91dHB1dCBjb250YWluZWQgYCgwLDQxKSwoMCw0 Mik9QHM4Oy0xNjssKDAsNDMpLCgwLDEpOycgd2hlcmUgc2hvdWxkCi0rCSBoYXZlIGJlZW4gcHJl c2VudCAiOy0xNiwoMCw0MykiIHJlZmVyZW5jZSBpbnN0ZWFkLiAgVGhpcyB3YXkgdGhlCi0rCSBl eGNlc3NpdmUgIjsiIG1hcmtlciBwcmVtYXR1cmVseSBzdG9wcyB0aGUgcGFyYW1ldGVycyBwYXJz aW5nLiAgKi8KLQotU3RpbGwgSSB3YXMgdW5hYmxlIHRvIHJlcHJvZHVjZSBwcm9kdWNpbmcgc3Vj aCBTVEFCUyBvdXRwdXQuCi0KLVNvIHRoaXMgcGF0Y2ggZG9lcyBub3QgdHJ5IHRvIGNvbXBlbnNh dGUgdGhlIC0gcHJlc3VtYWJseSAtIGJ1Z2d5IFNUQUJTIG91dHB1dAotYW5kIHBhcnNlcyBzdWNo IHJlY29yZCBpbmNvcnJlY3RseS4gIEJ1dCBpdCBubyBsb25nZXIgY3Jhc2hlcy4KLQotTm8gcmVn cmVzc2lvbnMgb24ge3g4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTItbGludXgtZ251Ci11c2luZyAt LXRhcmdldF9ib2FyZCB1bml4Ly1nc3RhYnMrLy1tMzIuCi0KLQotVGhhbmtzLAotSmFuCi0KLQot Z2RiLwotMjAxMC0wMS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQu Y29tPgotCi0JKiBzdGFic3JlYWQuYyAocmVhZF9hcmdzKTogSGFuZGxlIHplcm8gYXJndW1lbnRz LgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMC0wMS0wNyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuc3RhYnMvd2VpcmQuZGVmIChhcmdzOTMpOiBO ZXcuCi0KLS0tLSBhL2dkYi9zdGFic3JlYWQuYwotKysrIGIvZ2RiL3N0YWJzcmVhZC5jCi1AQCAt NDExMSw3ICs0MTExLDE3IEBAIHJlYWRfYXJncyAoY2hhciAqKnBwLCBpbnQgZW5kLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgaW50ICpuYXJnc3AsCi0gICAgIH0KLSAgICgqcHApKys7CQkJLyog Z2V0IHBhc3QgYGVuZCcgKHRoZSAnOicgY2hhcmFjdGVyKSAqLwotIAotLSAgaWYgKFRZUEVfQ09E RSAodHlwZXNbbiAtIDFdKSAhPSBUWVBFX0NPREVfVk9JRCkKLSsgIGlmIChuID09IDApCi0rICAg IHsKLSsgICAgICAvKiBXZSBzaG91bGQgcmVhZCBhdCBsZWFzdCB0aGUgVEhJUyBwYXJhbWV0ZXIg aGVyZS4gIFNvbWUgYnJva2VuIHN0YWJzCi0rCSBvdXRwdXQgY29udGFpbmVkIGAoMCw0MSksKDAs NDIpPUBzODstMTY7LCgwLDQzKSwoMCwxKTsnIHdoZXJlIHNob3VsZAotKwkgaGF2ZSBiZWVuIHBy ZXNlbnQgIjstMTYsKDAsNDMpIiByZWZlcmVuY2UgaW5zdGVhZC4gIFRoaXMgd2F5IHRoZQotKwkg ZXhjZXNzaXZlICI7IiBtYXJrZXIgcHJlbWF0dXJlbHkgc3RvcHMgdGhlIHBhcmFtZXRlcnMgcGFy c2luZy4gICovCi0rCi0rICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJJ bnZhbGlkIChlbXB0eSkgbWV0aG9kIGFyZ3VtZW50cyIpKTsKLSsgICAgICAqdmFyYXJnc3AgPSAw OwotKyAgICB9Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGVzW24gLSAxXSkgIT0gVFlQRV9D T0RFX1ZPSUQpCi0gICAgICp2YXJhcmdzcCA9IDE7Ci0gICBlbHNlCi0gICAgIHsKLS0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnN0YWJzL3dlaXJkLmRlZgotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu c3RhYnMvd2VpcmQuZGVmCi1AQCAtODgwLDMgKzg4MCw2IEBAIHZhcjM6Ci0gLnN0YWJzICJzeW05 MjpcICEjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVW V1hZWltdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+IixOX0xTWU0sMCwwLDAKLSAu c3RhYnMgInR5cGU5Mjp0OTI9XCAhIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG R0hJSktMTU5PUFFSU1RVVldYWVpbXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fiIs Tl9MU1lNLDAsMCwwCi0gLnN0YWJzICJhdHRyOTI6RzM5Mj1AXCAhIyQlJicoKSorLC0uLzAxMjM0 NTY3ODk6PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltdXl9gYWJjZGVmZ2hpamtsbW5v cHFyc3R1dnd4eXp7fH1+OzEiLE5fR1NZTSwwLDAsIDAKLSsKLSsjIFNlZSByZWFkX2FyZ3MgIklu dmFsaWQgKGVtcHR5KSBtZXRob2QgYXJndW1lbnRzIiBlcnJvci4KLSsuc3RhYnMgImFyZ3M5MzpH OTM9IygwLDkzKSwoMCw5Myk9QHM4Oy0xNjssKDAsOTMpLCgwLDkzKTsiLE5fR1NZTSwwLDAsMAoK ZGlmZiAtLWdpdCBhL2dkYi10ZXN0c3VpdGUtdW5rbm93bi1vdXRwdXQucGF0Y2ggYi9nZGItdGVz dHN1aXRlLXVua25vd24tb3V0cHV0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA4OWRlY2FjLi4wMDAwMDAwCi0tLSBhL2dkYi10ZXN0c3VpdGUtdW5rbm93bi1vdXRwdXQucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcv bWwvZ2RiLXBhdGNoZXMvMjAwOS0xMi9tc2cwMDQ3My5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIHRl c3RzdWl0ZTogZmFsc2UgTUkgInVua25vd24gb3V0cHV0IGFmdGVyIHJ1bm5pbmciIHJlZ3Jlc3Np b24KLQotSGksCi0KLXRoZSBhdHRhY2hlZCBwYXRjaCB3aWxsIHR1cm4gdGhlIHJlc3VsdHMgdGhp cyB3YXk6Ci0tS0ZBSUw6IGdkYi5taS9taS11bnRpbC5leHA6IHVudGlsIGFmdGVyIHdoaWxlIGxv b3AgKHVua25vd24gb3V0cHV0IGFmdGVyIHJ1bm5pbmcpIChQUk1TOiBnZGIvMjEwNCkKLStLRkFJ TDogZ2RiLm1pL21pLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hpbGUgbG9vcCAoc3RvcHBlZCBh dCB3cm9uZyBwbGFjZSkgKFBSTVM6IGdkYi8yMTA0KQotLVhGQUlMOiBnZGIubWkvbWktd2F0Y2gu ZXhwOiBzdzogd2F0Y2hwb2ludCB0cmlnZ2VyICh1bmtub3duIG91dHB1dCBhZnRlciBydW5uaW5n KQotK1hGQUlMOiBnZGIubWkvbWktd2F0Y2guZXhwOiBzdzogd2F0Y2hwb2ludCB0cmlnZ2VyIChz dG9wcGVkIGF0IHdyb25nIHBsYWNlKQotLUtGQUlMOiBnZGIubWkvbWkyLXVudGlsLmV4cDogdW50 aWwgYWZ0ZXIgd2hpbGUgbG9vcCAodW5rbm93biBvdXRwdXQgYWZ0ZXIgcnVubmluZykgKFBSTVM6 IGdkYi8yMTA0KQotK0tGQUlMOiBnZGIubWkvbWkyLXVudGlsLmV4cDogdW50aWwgYWZ0ZXIgd2hp bGUgbG9vcCAoc3RvcHBlZCBhdCB3cm9uZyBwbGFjZSkgKFBSTVM6IGdkYi8yMTA0KQotLVhGQUlM OiBnZGIubWkvbWkyLXdhdGNoLmV4cDogc3c6IHdhdGNocG9pbnQgdHJpZ2dlciAodW5rbm93biBv dXRwdXQgYWZ0ZXIgcnVubmluZykKLStYRkFJTDogZ2RiLm1pL21pMi13YXRjaC5leHA6IHN3OiB3 YXRjaHBvaW50IHRyaWdnZXIgKHN0b3BwZWQgYXQgd3JvbmcgcGxhY2UpCi0KLVRoaXMgaXMgYSBm aXggb2YgS0ZBSUwta2luZCByZWdyZXNzaW9uIGR1ZSB0bzoKLWNvbW1pdCAyNmQwODZkNzQxZmIx YmIwZWVlOWQ1MGUwYmFmYTdjNWUzODgwMjNmCi1SZTogW1JGQV0gZml4ICpzdG9wcGVkIGZvciBD TEkgY29tbWFuZHMKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTAy L21zZzAwMjc4Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMDktMDIv bXNnMDAwODQuaHRtbAotcGFydDoKLWdkYi90ZXN0c3VpdGUvCi0yMDA5LTAyLTE0ICBWbGFkaW1p ciBQcnVzICA8dmxhZGltaXJAY29kZXNvdXJjZXJ5LmNvbT4KLQkqIGxpYi9taS1zdXBwb3J0LmV4 cCAobWlfZXhwZWN0X3N0b3ApOiBBZGp1c3QgdGhlIG9yZGVyIG9mIGZpZWxkcy4KLQkobWlfZXhw ZWN0X2ludGVycnVwdCk6IExpa2V3aXNlLgotCSogZ2RiLm1pL21pLWNsaS5leHA6IENoZWNrIHRo YXQgInN0ZXAiIHJlc3VsdHMgaW4gcHJvcGVyICpzdG9wcGVkCi0JcmVzcG9uc2UuCi0KLXJlLXdk aWZmLWVkIGZvciB5b3VyIGNvbnZlbmllbmNlIGFzOgotICAgIHZlcmJvc2UgLWxvZyAibWlfZXhw ZWN0X3N0b3A6IGV4cGVjdGluZzogXFwqc3RvcHBlZCwke3J9JHthfSR7Ym59Wy10aHJlYWQtaWQ9 XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55LC1dZnJhbWU9XHthZGRyPVwiJGhleFwi LGZ1bmM9XCIkZnVuY1wiLGFyZ3M9JGFyZ3MsZmlsZT1cIiRhbnkkZmlsZVwiLGZ1bGxuYW1lPVwi JHtmdWxsbmFtZV9zeW50YXh9JGZpbGVcIixsaW5lPVwiJGxpbmVcIlx9JGFmdGVyX3N0b3BwZWR7 Kyx0aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFkcz0kYW55K31cclxuKCR0aHJl YWRfc2VsZWN0ZWRfcmUpPyRwcm9tcHRfcmUiCi0JLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHti bn1bLXRocmVhZC1pZD1cIiRkZWNpbWFsXCIsc3RvcHBlZC10aHJlYWRzPSRhbnksLV1mcmFtZT1c e2FkZHI9XCIkaGV4XCIsZnVuYz1cIiRmdW5jXCIsYXJncz0kYXJncyxmaWxlPVwiJGFueSRmaWxl XCIsZnVsbG5hbWU9XCIke2Z1bGxuYW1lX3N5bnRheH0kZmlsZVwiLGxpbmU9XCIoJGxpbmUpXCJc fSRhZnRlcl9zdG9wcGVkeyssdGhyZWFkLWlkPVwiJGRlY2ltYWxcIixzdG9wcGVkLXRocmVhZHM9 JGFueSt9XHJcbigkdGhyZWFkX3NlbGVjdGVkX3JlKT8kcHJvbXB0X3JlIiB7Ci0JLXJlICJcXCpz dG9wcGVkLCR7cn0ke2F9JHtibn1bLXRocmVhZC1pZD1cIiRkZWNpbWFsXCIsc3RvcHBlZC10aHJl YWRzPSRhbnksLV1mcmFtZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxc W1x7XF0kYW55XFtcXFxdXH1cXSxmaWxlPVwiJGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9z eW50YXh9JGFueVwiLGxpbmU9XCJcWzAtOVxdKlwiXH1bLSRhbnktXXsrdGhyZWFkLWlkPVwiJGRl Y2ltYWxcIixzdG9wcGVkLXRocmVhZHM9JGFueSt9XHJcbiRwcm9tcHRfcmUiIHsKLQotRllJIHRo ZXJlIGlzOiBzZXQgYW55ICJcW15cblxdKiIKLQotInN0b3BwZWQgYXQgd3JvbmcgcGxhY2UiIGlz IHRoZSByaWdodCBraW5kIG9mIEtGQUlML1hGQUlMICh0ZXN0ZWQKLWdjYy00LjEuMi00Ni5lbDVf NC4xLng4Nl82NCBhbmQgZ2NjLTQuNC4yLTIwLmZjMTIueDg2XzY0KSBhcyBkaXNjdXNzZWQKLWlu IFBSIGdkYi8yMTA0LgotCi1JbiB0aGUgbGFzdCBjYXNlIHRoZXJlIGlzIG1pc3NpbmcgY29tbWEg KCwpIGFmdGVyIHRoZSBmb3JtZXIgcGF0Y2ggYWJvdmUuCi0KLSRhZnRlcl9zdG9wcGVkIHdhcyBJ TU8gbWlzc2luZyB0aGVyZSBldmVuIGJlZm9yZS4gIEl0IGlzIGluIHVzZSBvbmx5IGJ5Ci1nZGIu bWkvbWktc2ltcGxlcnVuLmV4cCBhbmQgZ2RiLm1pL21pMi1zaW1wbGVydW4uZXhwLiAgQWxzbyBm aXhlZCBiZWxvdy4KLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9 LWZlZG9yYTEyLWxpbnV4LWdudS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvdGVzdHN1aXRl LwotMjAwOS0xMi0zMSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29t PgotCi0JKiBsaWIvbWktc3VwcG9ydC5leHAgKG1pX2V4cGVjdF9zdG9wIDxzdG9wcGVkIGF0IHdy b25nIHBsYWNlPik6IEluc2VydAotCW1pc3NpbmcgJGFmdGVyX3N0b3BwZWQgYW5kIGNvbW1hICgs KSBleHBlY3RhdGlvbi4KLQotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCi1AQCAtMTAzOCw3ICsxMDM4 LDcgQEAgcHJvYyBtaV9leHBlY3Rfc3RvcCB7IHJlYXNvbiBmdW5jIGFyZ3MgZmlsZSBsaW5lIGV4 dHJhIHRlc3QgfSB7Ci0gCSAgICBwYXNzICIkdGVzdCIKLSAgICAgICAgICAgICByZXR1cm4gJGV4 cGVjdF9vdXQoMixzdHJpbmcpCi0gCX0KLS0JLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1m cmFtZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtc XFxdXH1cXSxmaWxlPVwiJGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwi LGxpbmU9XCJcWzAtOVxdKlwiXH10aHJlYWQtaWQ9XCIkZGVjaW1hbFwiLHN0b3BwZWQtdGhyZWFk cz0kYW55XHJcbiRwcm9tcHRfcmUiIHsKLSsJLXJlICJcXCpzdG9wcGVkLCR7cn0ke2F9JHtibn1m cmFtZT1ce2FkZHI9XCIkaGV4XCIsZnVuYz1cIiRhbnlcIixhcmdzPVxbXFxcW1x7XF0kYW55XFtc XFxdXH1cXSxmaWxlPVwiJGFueVwiLGZ1bGxuYW1lPVwiJHtmdWxsbmFtZV9zeW50YXh9JGFueVwi LGxpbmU9XCJcWzAtOVxdKlwiXH0kYWZ0ZXJfc3RvcHBlZCx0aHJlYWQtaWQ9XCIkZGVjaW1hbFwi LHN0b3BwZWQtdGhyZWFkcz0kYW55XHJcbiRwcm9tcHRfcmUiIHsKLSAgICAgICAgICAgICB2ZXJi b3NlIC1sb2cgImdvdCAkZXhwZWN0X291dChidWZmZXIpIgotIAkgICAgZmFpbCAiJHRlc3QgKHN0 b3BwZWQgYXQgd3JvbmcgcGxhY2UpIgotIAkgICAgcmV0dXJuIC0xCi0KCmRpZmYgLS1naXQgYS9n ZGItdHJhY2Vwb2ludC13YXJuaW5nLnBhdGNoIGIvZ2RiLXRyYWNlcG9pbnQtd2FybmluZy5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzUxMDcxCi0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLXRyYWNlcG9pbnQtd2FybmluZy5wYXRjaApAQCAtMCwwICsxLDIyMSBAQAor UmU6IGN2cyB0cmFjZXBvaW50LmMgYnVpbGQgZXJyb3IKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9t bC9nZGIvMjAxMC0wMS9tc2cwMDE1MC5odG1sCisKKy0tLSBhL2dkYi90cmFjZXBvaW50LmMKKysr KyBiL2dkYi90cmFjZXBvaW50LmMKK0BAIC0xNjQ3LDggKzE2NDcsOCBAQCB0cmFjZV9zdGF0dXNf Y29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorIAorICAgaWYgKHRzLT5idWZmZXJf ZnJlZSkKKyAgICAgeworLSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiVHJhY2UgYnVmZmVyIGhh cyAlZCBieXRlcyBmcmVlLlxuIiksCistCQkgICAgICAgdHMtPmJ1ZmZlcl9mcmVlKTsKKysgICAg ICBwcmludGZfZmlsdGVyZWQgKF8oIlRyYWNlIGJ1ZmZlciBoYXMgJWxsZCBieXRlcyBmcmVlLlxu IiksCisrCQkgICAgICAgKGxvbmcgbG9uZykgdHMtPmJ1ZmZlcl9mcmVlKTsKKyAgICAgfQorIAor ICAgLyogTm93IHJlcG9ydCBvbiB3aGF0IHdlJ3JlIGRvaW5nIHdpdGggdGZpbmQuICAqLworQEAg LTIzODksNyArMjM4OSw3IEBAIHRyYWNlX3NhdmVfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZy b21fdHR5KQorICAgLyogV3JpdGUgYSBmaWxlIGhlYWRlciwgd2l0aCBhIGhpZ2gtYml0LXNldCBj aGFyIHRvIGluZGljYXRlIGEKKyAgICAgIGJpbmFyeSBmaWxlLCBwbHVzIGEgaGludCBhcyB3aGF0 IHRoaXMgZmlsZSBpcywgYW5kIGEgdmVyc2lvbgorICAgICAgbnVtYmVyIGluIGNhc2Ugb2YgZnV0 dXJlIG5lZWRzLiAgKi8KKy0gIGZ3cml0ZSAoIlx4N2ZUUkFDRTBcbiIsIDgsIDEsIGZwKTsKKysg IDEgfHwgZndyaXRlICgiXHg3ZlRSQUNFMFxuIiwgOCwgMSwgZnApOworIAorICAgLyogV3JpdGUg ZGVzY3JpcHRpdmUgaW5mby4gICovCisgCitAQCAtMjQ3MywxMiArMjQ3MywxMiBAQCB0cmFjZV9z YXZlX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyAgICAgICAvKiBObyBtb3Jl IGRhdGEgaXMgZm9ydGhjb21pbmcsIHdlJ3JlIGRvbmUuICAqLworICAgICAgIGlmIChnb3R0ZW4g PT0gMCkKKyAJYnJlYWs7CistICAgICAgZndyaXRlIChidWYsIGdvdHRlbiwgMSwgZnApOworKyAg ICAgIDEgfHwgZndyaXRlIChidWYsIGdvdHRlbiwgMSwgZnApOworICAgICAgIG9mZnNldCArPSBn b3R0ZW47CisgICAgIH0KKyAKKyAgIC8qIE1hcmsgdGhlIGVuZCBvZiB0cmFjZSBkYXRhLiAgKi8K Ky0gIGZ3cml0ZSAoJmdvdHRlbiwgNCwgMSwgZnApOworKyAgMSB8fCBmd3JpdGUgKCZnb3R0ZW4s IDQsIDEsIGZwKTsKKyAKKyAgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKyAgIGlmIChmcm9tX3R0 eSkKK0BAIC0yNzg1LDcgKzI3ODUsNyBAQCB0ZmlsZV9vcGVuIChjaGFyICpmaWxlbmFtZSwgaW50 IGZyb21fdHR5KQorICAgaW50IHNjcmF0Y2hfY2hhbjsKKyAgIGNoYXIgaGVhZGVyW1RSQUNFX0hF QURFUl9TSVpFXTsKKyAgIGNoYXIgbGluZWJ1ZlsxMDAwXTsgLyogc2hvdWxkIGJlIG1heCByZW1v dGUgcGFja2V0IHNpemUgb3Igc28gKi8KKy0gIGNoYXIgYnl0ZTsKKysgIGNoYXIgYnl0ZSA9IDA7 CisgICBpbnQgYnl0ZXMsIGk7CisgICBzdHJ1Y3QgdHJhY2Vfc3RhdHVzICp0czsKKyAgIHN0cnVj dCB1cGxvYWRlZF90cCAqdXBsb2FkZWRfdHBzID0gTlVMTDsKK0BAIC0yODIzLDcgKzI4MjMsNyBA QCB0ZmlsZV9vcGVuIChjaGFyICpmaWxlbmFtZSwgaW50IGZyb21fdHR5KQorIAorICAgYnl0ZXMg PSAwOworICAgLyogUmVhZCB0aGUgZmlsZSBoZWFkZXIgYW5kIHRlc3QgZm9yIHZhbGlkaXR5LiAg Ki8KKy0gIHJlYWQgKHRyYWNlX2ZkLCAmaGVhZGVyLCBUUkFDRV9IRUFERVJfU0laRSk7CisrICAx IHx8IHJlYWQgKHRyYWNlX2ZkLCAmaGVhZGVyLCBUUkFDRV9IRUFERVJfU0laRSk7CisgICBieXRl cyArPSBUUkFDRV9IRUFERVJfU0laRTsKKyAgIGlmICghKGhlYWRlclswXSA9PSAweDdmCisgCSYm IChzdHJuY21wIChoZWFkZXIgKyAxLCAiVFJBQ0UwXG4iLCA3KSA9PSAwKSkpCitAQCAtMjg0NCw3 ICsyODQ0LDcgQEAgdGZpbGVfb3BlbiAoY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKKyAg IGkgPSAwOworICAgd2hpbGUgKDEpCisgICAgIHsKKy0gICAgICByZWFkICh0cmFjZV9mZCwgJmJ5 dGUsIDEpOworKyAgICAgIDEgfHwgcmVhZCAodHJhY2VfZmQsICZieXRlLCAxKTsKKyAgICAgICAr K2J5dGVzOworICAgICAgIGlmIChieXRlID09ICdcbicpCisgCXsKK0BAIC0zMTQxLDcgKzMxNDEs NyBAQCBzdGF0aWMgVUxPTkdFU1QKKyB0ZmlsZV9nZXRfdHJhY2VmcmFtZV9hZGRyZXNzIChvZmZf dCB0ZnJhbWVfb2Zmc2V0KQorIHsKKyAgIFVMT05HRVNUIGFkZHIgPSAwOworLSAgc2hvcnQgdHBu dW07CisrICBzaG9ydCB0cG51bSA9IDA7CisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqdHA7CisgICBv ZmZfdCBzYXZlZF9vZmZzZXQgPSBjdXJfb2Zmc2V0OworIAorQEAgLTMxNDksNyArMzE0OSw3IEBA IHRmaWxlX2dldF90cmFjZWZyYW1lX2FkZHJlc3MgKG9mZl90IHRmcmFtZV9vZmZzZXQpCisgCisg ICAvKiBGYWxsIGJhY2sgdG8gdXNpbmcgdHJhY2Vwb2ludCBhZGRyZXNzLiAgKi8KKyAgIGxzZWVr ICh0cmFjZV9mZCwgdGZyYW1lX29mZnNldCwgU0VFS19TRVQpOworLSAgcmVhZCAodHJhY2VfZmQs ICZ0cG51bSwgMik7CisrICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmdHBudW0sIDIpOworICAgdHAg PSBnZXRfdHJhY2Vwb2ludF9ieV9udW1iZXJfb25fdGFyZ2V0ICh0cG51bSk7CisgICBpZiAodHAg JiYgdHAtPmxvYykKKyAgICAgYWRkciA9IHRwLT5sb2MtPmFkZHJlc3M7CitAQCAtMzE2OSw3ICsz MTY5LDcgQEAgc3RhdGljIGludAorIHRmaWxlX3RyYWNlX2ZpbmQgKGVudW0gdHJhY2VfZmluZF90 eXBlIHR5cGUsIGludCBudW0sCisgCQkgIFVMT05HRVNUIGFkZHIxLCBVTE9OR0VTVCBhZGRyMiwg aW50ICp0cHApCisgeworLSAgc2hvcnQgdHBudW07CisrICBzaG9ydCB0cG51bSA9IDA7CisgICBp bnQgdGZudW0gPSAwLCBmb3VuZCA9IDA7CisgICBpbnQgZGF0YV9zaXplOworICAgc3RydWN0IGJy ZWFrcG9pbnQgKnRwOworQEAgLTMxODEsMTEgKzMxODEsMTEgQEAgdGZpbGVfdHJhY2VfZmluZCAo ZW51bSB0cmFjZV9maW5kX3R5cGUgdHlwZSwgaW50IG51bSwKKyAgIHdoaWxlICgxKQorICAgICB7 CisgICAgICAgdGZyYW1lX29mZnNldCA9IG9mZnNldDsKKy0gICAgICByZWFkICh0cmFjZV9mZCwg JnRwbnVtLCAyKTsKKysgICAgICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmdHBudW0sIDIpOworICAg ICAgIG9mZnNldCArPSAyOworICAgICAgIGlmICh0cG51bSA9PSAwKQorIAlicmVhazsKKy0gICAg ICByZWFkICh0cmFjZV9mZCwgJmRhdGFfc2l6ZSwgNCk7CQorKyAgICAgIDEgfHwgcmVhZCAodHJh Y2VfZmQsICZkYXRhX3NpemUsIDQpOwkKKyAgICAgICBvZmZzZXQgKz0gNDsKKyAgICAgICBzd2l0 Y2ggKHR5cGUpCisgCXsKK0BAIC0zMjQ1LDkgKzMyNDUsOSBAQCB0ZmlsZV9mZXRjaF9yZWdpc3Rl cnMgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgCQkgICAgICAgc3RydWN0IHJlZ2NhY2hlICpy ZWdjYWNoZSwgaW50IHJlZ25vKQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0 X3JlZ2NhY2hlX2FyY2ggKHJlZ2NhY2hlKTsKKy0gIGNoYXIgYmxvY2tfdHlwZTsKKysgIGNoYXIg YmxvY2tfdHlwZSA9IDA7CisgICBpbnQgaSwgcG9zLCBvZmZzZXQsIHJlZ24sIHJlZ3NpemU7Cist ICB1bnNpZ25lZCBzaG9ydCBtbGVuOworKyAgdW5zaWduZWQgc2hvcnQgbWxlbiA9IDA7CisgICBj aGFyICpyZWdzOworIAorICAgLyogQW4gdW5pbml0aWFsaXplZCByZWcgc2l6ZSBzYXlzIHdlJ3Jl IG5vdCBnb2luZyB0byBiZQorQEAgLTMyNjEsMTIgKzMyNjEsMTIgQEAgdGZpbGVfZmV0Y2hfcmVn aXN0ZXJzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAorICAgcG9zID0gMDsKKyAgIHdoaWxlIChw b3MgPCBjdXJfZGF0YV9zaXplKQorICAgICB7CistICAgICAgcmVhZCAodHJhY2VfZmQsICZibG9j a190eXBlLCAxKTsKKysgICAgICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmYmxvY2tfdHlwZSwgMSk7 CisgICAgICAgKytwb3M7CisgICAgICAgc3dpdGNoIChibG9ja190eXBlKQorIAl7CisgCWNhc2Ug J1InOgorLQkgIHJlYWQgKHRyYWNlX2ZkLCByZWdzLCB0cmFjZV9yZWdibG9ja19zaXplKTsKKysJ ICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCByZWdzLCB0cmFjZV9yZWdibG9ja19zaXplKTsKKyAJICAv KiBBc3N1bWUgdGhlIGJsb2NrIGlzIGxhaWQgb3V0IGluIEdEQiByZWdpc3RlciBudW1iZXIgb3Jk ZXIsCisgCSAgICAgZWFjaCByZWdpc3RlciB3aXRoIHRoZSBzaXplIHRoYXQgaXQgaGFzIGluIEdE Qi4gICovCisgCSAgb2Zmc2V0ID0gMDsKK0BAIC0zMjkzLDcgKzMyOTMsNyBAQCB0ZmlsZV9mZXRj aF9yZWdpc3RlcnMgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCisgCSAgcmV0dXJuOworIAljYXNl ICdNJzoKKyAJICBsc2VlayAodHJhY2VfZmQsIDgsIFNFRUtfQ1VSKTsKKy0JICByZWFkICh0cmFj ZV9mZCwgJm1sZW4sIDIpOworKwkgIDEgfHwgcmVhZCAodHJhY2VfZmQsICZtbGVuLCAyKTsKKyAJ ICBsc2VlayAodHJhY2VfZmQsIG1sZW4sIFNFRUtfQ1VSKTsKKyAJICBwb3MgKz0gKDggKyAyICsg bWxlbik7CisgCSAgYnJlYWs7CitAQCAtMzMxNCwxMCArMzMxNCwxMCBAQCB0ZmlsZV94ZmVyX3Bh cnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmplY3Qs CisgCQkgICAgY29uc3QgY2hhciAqYW5uZXgsIGdkYl9ieXRlICpyZWFkYnVmLAorIAkJICAgIGNv bnN0IGdkYl9ieXRlICp3cml0ZWJ1ZiwgVUxPTkdFU1Qgb2Zmc2V0LCBMT05HRVNUIGxlbikKKyB7 CistICBjaGFyIGJsb2NrX3R5cGU7CisrICBjaGFyIGJsb2NrX3R5cGUgPSAwOworICAgaW50IHBv czsKKy0gIFVMT05HRVNUIG1hZGRyOworLSAgdW5zaWduZWQgc2hvcnQgbWxlbjsKKysgIFVMT05H RVNUIG1hZGRyID0gMDsKKysgIHVuc2lnbmVkIHNob3J0IG1sZW4gPSAwOworIAorICAgLyogV2Un cmUgb25seSBkb2luZyByZWd1bGFyIG1lbW9yeSBmb3Igbm93LiAgKi8KKyAgIGlmIChvYmplY3Qg IT0gVEFSR0VUX09CSkVDVF9NRU1PUlkpCitAQCAtMzMzMCw3ICszMzMwLDcgQEAgdGZpbGVfeGZl cl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBlbnVtIHRhcmdldF9vYmplY3Qgb2Jq ZWN0LAorICAgcG9zID0gMDsKKyAgIHdoaWxlIChwb3MgPCBjdXJfZGF0YV9zaXplKQorICAgICB7 CistICAgICAgcmVhZCAodHJhY2VfZmQsICZibG9ja190eXBlLCAxKTsKKysgICAgICAxIHx8IHJl YWQgKHRyYWNlX2ZkLCAmYmxvY2tfdHlwZSwgMSk7CisgICAgICAgKytwb3M7CisgICAgICAgc3dp dGNoIChibG9ja190eXBlKQorIAl7CitAQCAtMzMzOSwxMSArMzMzOSwxMSBAQCB0ZmlsZV94ZmVy X3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0gdGFyZ2V0X29iamVjdCBvYmpl Y3QsCisgCSAgcG9zICs9IHRyYWNlX3JlZ2Jsb2NrX3NpemU7CisgCSAgYnJlYWs7CisgCWNhc2Ug J00nOgorLQkgIHJlYWQgKHRyYWNlX2ZkLCAmbWFkZHIsIDgpOworLQkgIHJlYWQgKHRyYWNlX2Zk LCAmbWxlbiwgMik7CisrCSAgMSB8fCByZWFkICh0cmFjZV9mZCwgJm1hZGRyLCA4KTsKKysJICAx IHx8IHJlYWQgKHRyYWNlX2ZkLCAmbWxlbiwgMik7CisgCSAgaWYgKG1hZGRyIDw9IG9mZnNldCAm JiAob2Zmc2V0ICsgbGVuKSA8PSAobWFkZHIgKyBtbGVuKSkKKyAJICAgIHsKKy0JICAgICAgcmVh ZCAodHJhY2VfZmQsIHJlYWRidWYsIG1sZW4pOworKwkgICAgICAxIHx8IHJlYWQgKHRyYWNlX2Zk LCByZWFkYnVmLCBtbGVuKTsKKyAJICAgICAgcmV0dXJuIG1sZW47CisgCSAgICB9CisgCSAgbHNl ZWsgKHRyYWNlX2ZkLCBtbGVuLCBTRUVLX0NVUik7CitAQCAtMzM2OSwxNSArMzM2OSwxNSBAQCB0 ZmlsZV94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGVudW0gdGFyZ2V0X29i amVjdCBvYmplY3QsCisgc3RhdGljIGludAorIHRmaWxlX2dldF90cmFjZV9zdGF0ZV92YXJpYWJs ZV92YWx1ZSAoaW50IHRzdm51bSwgTE9OR0VTVCAqdmFsKQorIHsKKy0gIGNoYXIgYmxvY2tfdHlw ZTsKKy0gIGludCBwb3MsIHZudW07CistICB1bnNpZ25lZCBzaG9ydCBtbGVuOworKyAgY2hhciBi bG9ja190eXBlID0gMDsKKysgIGludCBwb3MsIHZudW0gPSAwOworKyAgdW5zaWduZWQgc2hvcnQg bWxlbiA9IDA7CisgCisgICBsc2VlayAodHJhY2VfZmQsIGN1cl9vZmZzZXQsIFNFRUtfU0VUKTsK KyAgIHBvcyA9IDA7CisgICB3aGlsZSAocG9zIDwgY3VyX2RhdGFfc2l6ZSkKKyAgICAgeworLSAg ICAgIHJlYWQgKHRyYWNlX2ZkLCAmYmxvY2tfdHlwZSwgMSk7CisrICAgICAgMSB8fCByZWFkICh0 cmFjZV9mZCwgJmJsb2NrX3R5cGUsIDEpOworICAgICAgICsrcG9zOworICAgICAgIHN3aXRjaCAo YmxvY2tfdHlwZSkKKyAJeworQEAgLTMzODcsMTUgKzMzODcsMTUgQEAgdGZpbGVfZ2V0X3RyYWNl X3N0YXRlX3ZhcmlhYmxlX3ZhbHVlIChpbnQgdHN2bnVtLCBMT05HRVNUICp2YWwpCisgCSAgYnJl YWs7CisgCWNhc2UgJ00nOgorIAkgIGxzZWVrICh0cmFjZV9mZCwgOCwgU0VFS19DVVIpOworLQkg IHJlYWQgKHRyYWNlX2ZkLCAmbWxlbiwgMik7CisrCSAgMSB8fCByZWFkICh0cmFjZV9mZCwgJm1s ZW4sIDIpOworIAkgIGxzZWVrICh0cmFjZV9mZCwgbWxlbiwgU0VFS19DVVIpOworIAkgIHBvcyAr PSAoOCArIDIgKyBtbGVuKTsKKyAJICBicmVhazsKKyAJY2FzZSAnVic6CistCSAgcmVhZCAodHJh Y2VfZmQsICZ2bnVtLCA0KTsKKysJICAxIHx8IHJlYWQgKHRyYWNlX2ZkLCAmdm51bSwgNCk7Cisg CSAgaWYgKHRzdm51bSA9PSB2bnVtKQorIAkgICAgeworLQkgICAgICByZWFkICh0cmFjZV9mZCwg dmFsLCA4KTsKKysJICAgICAgMSB8fCByZWFkICh0cmFjZV9mZCwgdmFsLCA4KTsKKyAJICAgICAg cmV0dXJuIDE7CisgCSAgICB9CisgCSAgbHNlZWsgKHRyYWNlX2ZkLCA4LCBTRUVLX0NVUik7Cgpk aWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA0ZTUxM2U5Li4yZDcxZGI4IDEw MDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMzIsMTcgKzMyLDE3IEBAIE5h bWU6IGdkYiV7P193aXRoX2RlYnVnOi1kZWJ1Z30KICMgU2V0IHZlcnNpb24gdG8gY29udGVudHMg b2YgZ2RiL3ZlcnNpb24uaW4uCiAjIE5PVEU6IHRoZSBGU0YgZ2RiIHZlcnNpb25zIGFyZSBudW1i ZXJlZCBOLk0gZm9yIG9mZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMwogIyBhbmQsIHNpbmNlIEph bnVhcnkgMjAwNSwgWC5ZLlouZGF0ZSBmb3IgZGFpbHkgc25hcHNob3RzLCBsaWtlIDYuMy41MC4y MDA1MDExMiAjIChkYWlseSBzbmFwc2hvdCBmcm9tIG1haWxpbmUpLCBvciA2LjMuMC4yMDA0MDEx MiAoaGVhZCBvZiB0aGUgcmVsZWFzZSBicmFuY2gpLgotVmVyc2lvbjogNy4wLjEKK1ZlcnNpb246 IDcuMC41MC4yMDEwMDExNgogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlucyBhIGxlYWRp bmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0nIGlzIG5vdCBh IHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBjb21wYXRpYmxl IGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDI1JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFt fSV7ZGlzdH0KK1JlbGVhc2U6IDElez9fd2l0aF91cHN0cmVhbToudXBzdHJlYW19JXtkaXN0fQog CiBMaWNlbnNlOiBHUEx2MysKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKICMgZnRwOi8v c291cmNld2FyZS5vcmcvcHViL2dkYi9zbmFwc2hvdHMvYnJhbmNoL2dkYi0le3ZlcnNpb259LnRh ci5iejIKICMgZnRwOi8vc291cmNld2FyZS5vcmcvcHViL2dkYi9yZWxlYXNlcy9nZGItJXt2ZXJz aW9ufS50YXIuYnoyCi1Tb3VyY2U6IGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvcmVsZWFz ZXMvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgorU291cmNlOiBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9w dWIvZ2RiL3NuYXBzaG90cy9icmFuY2gvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgogQnVpbGRyb290 OiAlKG1rdGVtcCAtdWQgJXtfdG1wcGF0aH0vJXtuYW1lfS0le3ZlcnNpb259LSV7cmVsZWFzZX0t WFhYWFhYKQogVVJMOiBodHRwOi8vZ251Lm9yZy9zb2Z0d2FyZS9nZGIvCiAKQEAgLTExOCw3ICsx MTgsNyBAQCBQYXRjaDExODogZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKIAogIyBWU1lT Q0FMTCBhbmQgUElFCiBQYXRjaDEyMjogZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaAot UGF0Y2gxMjQ6IGdkYi1hcmNoZXItcGllLnBhdGNoCitQYXRjaDEyNDogZ2RiLWFyY2hlci1waWUt MDMxNS1icmVha3BvaW50X2FkZHJlc3NfbWF0Y2gucGF0Y2gKIFBhdGNoMzg5OiBnZGItYXJjaGVy LXBpZS1hZGRvbnMucGF0Y2gKIFBhdGNoMzk0OiBnZGItYXJjaGVyLXBpZS1hZGRvbnMta2VlcC1k aXNhYmxlZC5wYXRjaAogCkBAIC0yNDAsOCArMjQwLDggQEAgUGF0Y2gyMjk6IGdkYi02LjMtYnox NDA1MzItcHBjLXVud2luZGluZy10ZXN0LnBhdGNoCiAjIFRlc3RjYXNlIGZvciBleGVjKCkgZnJv bSB0aHJlYWRlZCBwcm9ncmFtIChCWiAyMDI2ODkpLgogUGF0Y2gyMzE6IGdkYi02LjMtYnoyMDI2 ODktZXhlYy1mcm9tLXB0aHJlYWQtdGVzdC5wYXRjaAogCi0jIEJhY2twb3J0ZWQgcG9zdCBnZGIt Ny4wIGZpeHVwcy4KLVBhdGNoMjMyOiBnZGItNy4wLXVwc3RyZWFtLnBhdGNoCisjIEJhY2twb3J0 ZWQgZml4dXBzIHBvc3QgdGhlIHNvdXJjZSB0YXJiYWxsLgorI1BhdGNoMjMyOiBnZGItdXBzdHJl YW0ucGF0Y2gKIAogIyBUZXN0Y2FzZSBmb3IgUFBDIFBvd2VyNi9ERlAgaW5zdHJ1Y3Rpb25zIGRp c2Fzc2VtYmx5IChCWiAyMzAwMDApLgogUGF0Y2gyMzQ6IGdkYi02LjYtYnoyMzAwMDAtcG93ZXI2 LWRpc2Fzc2VtYmx5LXRlc3QucGF0Y2gKQEAgLTM3NiwxMiArMzc2LDggQEAgUGF0Y2gzNDk6IGdk Yi1hcmNoZXIucGF0Y2gKIAogIyBGaXggcGFyc2luZyBlbGY2NC1pMzg2IGZpbGVzIGZvciBrZHVt cCBQQUUgdm1jb3JlIGR1bXBzIChCWiA0NTcxODcpLgogIyAtIFR1cm4gb24gNjQtYml0IEJGRCBz dXBwb3J0LCBnbG9iYWxseSBlbmFibGUgQUNfU1lTX0xBUkdFRklMRS4KLVBhdGNoMzUyOiBnZGIt Ni44LWJ6NDU3MTg3LWxhcmdlZmlsZS5wYXRjaAogUGF0Y2gzNjA6IGdkYi02LjgtYno0NTcxODct bGFyZ2VmaWxlLXRlc3QucGF0Y2gKIAotIyBGaXggY29tcGF0aWJpbGl0eSBvZiAtLXdpdGgtc3lz dGVtLXJlYWRsaW5lIGFuZCByZWFkbGluZS02LjArLgotUGF0Y2gzNzU6IGdkYi1yZWFkbGluZS02 LjAucGF0Y2gKLQogIyBGaXggcHl0aG9uIHByZXR0eSBwcmludGVycyBsb29rdXAgb24geDg2XzY0 LgogUGF0Y2gzNzY6IGxpYnN0ZGMrKy12My1weXRob24tY29tbW9uLXByZWZpeC5wYXRjaAogCkBA IC0zOTEsMTcgKzM4Nyw5IEBAIFBhdGNoMzgxOiBnZGItc2ltdWx0YW5lb3VzLXN0ZXAtcmVzdW1l LWJyZWFrcG9pbnQtdGVzdC5wYXRjaAogIyBGaXggR05VL0xpbnV4IGNvcmUgb3BlbjogQ2FuJ3Qg cmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6IElucHV0L291dHB1dCBlcnJvci4KIFBhdGNoMzgy OiBnZGItY29yZS1vcGVuLXZkc28td2FybmluZy5wYXRjaAogCi0jIFN1cHBvcnQgbXVsdGlwbGUg ZGlyZWN0b3JpZXMgZm9yIGBzZXQgZGVidWctZmlsZS1kaXJlY3RvcnknIChCWiA1Mjg2NjgpLgot UGF0Y2gzODM6IGdkYi1iejUyODY2OC1zeW1maWxlLXNlcGNyYy5wYXRjaAotUGF0Y2gzODQ6IGdk Yi1iejUyODY2OC1zeW1maWxlLWNsZWFudXAucGF0Y2gKLVBhdGNoMzg1OiBnZGItYno1Mjg2Njgt c3ltZmlsZS1tdWx0aS5wYXRjaAotCiAjIFN1cHBvcnQgR05VIElGVU5DcyAtIGluZGlyZWN0IGZ1 bmN0aW9ucyAoQlogNTM5NTkwKS4KIFBhdGNoMzg3OiBnZGItYno1Mzk1OTAtZ251LWlmdW5jLnBh dGNoCiAKLSMgRml4IGJwIGNvbmRpdGlvbmFscyBbYnBfbG9jYXRpb24tYWNjZWxdIHJlZ3Jlc3Np b24gKEJaIDUzODYyNikuCi1QYXRjaDM4ODogZ2RiLWJ6NTM4NjI2LWJwX2xvY2F0aW9uLWFjY2Vs LWJwLWNvbmQucGF0Y2gKLQogIyBGaXggY2FsbGJhY2stbW9kZSByZWFkbGluZS02LjAgcmVncmVz c2lvbiBmb3IgQ1RSTC1DLgogUGF0Y2gzOTA6IGdkYi1yZWFkbGluZS02LjAtc2lnbmFsLnBhdGNo CiAKQEAgLTQyMSwyMyArNDA5LDMwIEBAIFBhdGNoMzM1OiBnZGItcmhlbDUtY29tcGF0LnBhdGNo CiAjIEZpeCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggRysrIDQuMSBuYW1lc3BhY2VzICI6 OiIuCiBQYXRjaDM5NTogZ2RiLWVtcHR5LW5hbWVzcGFjZS5wYXRjaAogCi0jIEZpeCByZWdyZXNz aW9uIG9uIHJlLXNldHRpbmcgdGhlIHNpbmdsZSBwcGMgd2F0Y2hwb2ludCBzbG90LgotUGF0Y2gz OTY6IGdkYi1wcGMtaHctd2F0Y2hwb2ludC10d2ljZS5wYXRjaAotCiAjIEZpeCByZWdyZXNzaW9u IGJ5IHB5dGhvbiBvbiBpYTY0IGR1ZSB0byBzdGFsZSBjdXJyZW50IGZyYW1lLgogUGF0Y2gzOTc6 IGdkYi1mb2xsb3ctY2hpbGQtc3RhbGUtcGFyZW50LnBhdGNoCiAKLSMgdGVzdHN1aXRlOiBGaXgg ZmFsc2UgTUkgInVua25vd24gb3V0cHV0IGFmdGVyIHJ1bm5pbmciIHJlZ3Jlc3Npb24uCi1QYXRj aDM5ODogZ2RiLXRlc3RzdWl0ZS11bmtub3duLW91dHB1dC5wYXRjaAotCi0jIEZpeCByZWdyZXNz aW9uIG9mIGdkYi03LjAuMSBub3QgcHJlc2VydmluZyB0eXBlZGVmIG9mIGEgZmllbGQuCi1QYXRj aDM5OTogZ2RiLWJpdGZpZWxkLWNoZWNrX3R5cGVkZWYucGF0Y2gKLQogIyBGaXggcmVsYXRlZF9i cmVha3BvaW50IHN0YWxlIHJlZiBjcmFzaC4KIFBhdGNoNDAwOiBnZGItc3RhbGUtcmVsYXRlZF9i cmVha3BvaW50LnBhdGNoCiAKLSMgRml4IGNyYXNoIHJlYWRpbmcgYnJva2VuIHN0YWJzIChpdDM3 NzY3MSkuCi1QYXRjaDQwMTogZ2RiLXN0YWJzLXJlYWRfYXJncy5wYXRjaAorIyBXb3JrYXJvdW5k IGNjYWNoZSBtYWtpbmcgbGluZW5vIG5vbi16ZXJvIGZvciBjb21tYW5kLWxpbmUgZGVmaW5pdGlv bnMuCitQYXRjaDQwMzogZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoCisKKyMgSW1wbGVtZW50 IGBpbmZvIGNvbW1vbicgZm9yIEZvcnRyYW4uCitQYXRjaDQwNDogZ2RiLWZvcnRyYW4tY29tbW9u LXJlZHVjZS5wYXRjaAorUGF0Y2g0MDU6IGdkYi1mb3J0cmFuLWNvbW1vbi5wYXRjaAorCisjIEZp eCBGb3J0cmFuIGxvZ2ljYWwta2luZD04IChCWiA0NjUzMTApLgorUGF0Y2g0MDY6IGdkYi1mb3J0 cmFuLWxvZ2ljYWw4LnBhdGNoCisKKyMgVGVzdGNhc2UgZm9yICJEbyBub3QgbWFrZSB1cCBsaW5l IGluZm9ybWF0aW9uIiBmaXggYnkgRGFuaWVsIEphY29ib3dpdHouCitQYXRjaDQwNzogZ2RiLWxp bmVuby1tYWtldXAtdGVzdC5wYXRjaAorCisjIFRlc3QgcG93ZXI3IHBwYyBkaXNhc3NlbWJseS4K K1BhdGNoNDA4OiBnZGItcHBjLXBvd2VyNy10ZXN0LnBhdGNoCisKKyMgRml4IHRyYWNlcG9pbnQu YyBjb21waWxhdGlvbiB3YXJuaW5ncy4KK1BhdGNoNDA5OiBnZGItdHJhY2Vwb2ludC13YXJuaW5n LnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6IG5jdXJzZXMtZGV2ZWwlez9faXNhfSB0ZXhpbmZvIGdl dHRleHQgZmxleCBiaXNvbiBleHBhdC1kZXZlbCV7P19pc2F9CiBSZXF1aXJlczogcmVhZGxpbmUl ez9faXNhfQpAQCAtNTY4LDEyICs1NjMsOCBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4 cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAKICVpZiAwJXshP193aXRoX3Vwc3RyZWFt OjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEKICVwYXRjaDM0OSAtcDEKLSVwYXRj aDM4MyAtcDEKLSVwYXRjaDM4NCAtcDEKLSVwYXRjaDM4NSAtcDEKLSVwYXRjaDM4OCAtcDEKICVw YXRjaDEyNCAtcDEKICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQpAQCAtNjcwLDE3ICs2NjEsMjYg QEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIvcC1l eHAuYwogJXBhdGNoMzM3IC1wMQogJXBhdGNoMzQzIC1wMQogJXBhdGNoMzQ4IC1wMQotJXBhdGNo MzUyIC1wMQogJXBhdGNoMzYwIC1wMQotJXBhdGNoMzc1IC1wMQogJXBhdGNoMzc2IC1wMQogJXBh dGNoMzgxIC1wMQogJXBhdGNoMzgyIC1wMQogJXBhdGNoMzg3IC1wMQotJXBhdGNoMzg5IC1wMQog JXBhdGNoMzkwIC1wMQogJXBhdGNoMzkxIC1wMQogJXBhdGNoMzkyIC1wMQorJXBhdGNoMzk1IC1w MQorJXBhdGNoMzk3IC1wMQorJXBhdGNoNDAwIC1wMQorJXBhdGNoNDAzIC1wMQorJXBhdGNoNDA0 IC1wMQorJXBhdGNoNDA1IC1wMQorJXBhdGNoMzg5IC1wMQorJXBhdGNoMzk0IC1wMQorJXBhdGNo NDA2IC1wMQorJXBhdGNoNDA3IC1wMQorJXBhdGNoNDA4IC1wMQorJXBhdGNoNDA5IC1wMQogIyBB bHdheXMgdmVyaWZ5IGl0cyBhcHBsaWNhYmlsaXR5LgogJXBhdGNoMzkzIC1wMQogJXBhdGNoMzM1 IC1wMQpAQCAtNjg4LDE0ICs2ODgsNiBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5j IGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gzOTMgLXAxIC1SCiAlcGF0Y2gzMzUg LXAxIC1SCiAlZW5kaWYKLSVwYXRjaDM5NCAtcDEKLSVwYXRjaDM5NSAtcDEKLSVwYXRjaDM5NiAt cDEKLSVwYXRjaDM5NyAtcDEKLSVwYXRjaDM5OCAtcDEKLSVwYXRjaDM5OSAtcDEKLSVwYXRjaDQw MCAtcDEKLSVwYXRjaDQwMSAtcDEKIAogZmluZCAtbmFtZSAiKi5vcmlnIiB8IHhhcmdzIHJtIC1m CiAhIGZpbmQgLW5hbWUgIioucmVqIiAjIFNob3VsZCBub3QgaGFwcGVuLgpAQCAtNzc3LDcgKzc2 OSw3IEBAICQoOiBSSEVMLTUgbGlicnBtIGhhcyBpbmNvbXBhdGlibGUgQVBJLiApCQkJXAogJWlm IDAlez9lbDU6MX0KIAktLXdpdGhvdXQtcnBtCQkJCQkJXAogJWVsc2UKLQktLXdpdGgtcnBtPWxp YnJwbS5zby4wCQkJCQlcCisJLS13aXRoLXJwbT1saWJycG0uc28uMQkJCQkJXAogJWVuZGlmCiAl aWZhcmNoIGlhNjQKIAktLXdpdGgtbGlidW53aW5kCQkJCQlcCkBAIC0xMDE0LDYgKzEwMDYsMTQg QEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIFNhdCBKYW4gMTYgMjAxMCBKYW4gS3JhdG9j aHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjAuNTAuMjAxMDAxMTYtMS5mYzEz CistIFVwZ3JhZGUgdG8gdGhlIEZTRiBHREIgc25hcHNob3Q6IDcuMC41MC4yMDEwMDExNgorLSBh cmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMyBjb21taXQ6IDgxODEwYTIwYjJkMmMzYmYxOGUx NTFkZTNjZGRmYzk2NDQ1YjNjNDYKKy0gW2V4cHItY3VtdWxhdGl2ZV0gQXJjaGVyIGJyYW5jaCBp cyBtaXNzaW5nIGluIHRoaXMgcmVsZWFzZS4KKy0gVXBkYXRlIHJwbS5vcmcjNzYgd29ya2Fyb3Vu ZCBmb3IgcnBtLTQuOCB1c2luZyBsaWJycG0uc28uMS4KKy0gRGlzc2VjdCBhcmNoZXItamFua3Jh dG9jaHZpbC1taXNjIGludG8gUGF0Y2g0MDMuLi5QYXRjaDQwOC4KKy0gU29tZSByZWdyZXNzaW9u cyBleGlzdCBpbiB0aGlzIHJlbGVhc2UuCisKICogVHVlIEphbiAxMiAyMDEwIEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMC4xLTI1LmZjMTIKIC0gbm9uLWxp YnJwbSBtaXNzaW5nIGRlYnVnaW5mbyB5dW1jb21tYW5kIG5vdyBwcmludHMgYWxzbyAtLWRpc2Fi bGVyZXBvPScqJwogICB0byBzYXZlIHNvbWUgYmFuZHdpZHRoIGJ5IHl1bSAoUm9iaW4gR3JlZW4s IEJaIDU1NDE1MikuCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggMzY3OGQz Yy4uYmFmMmJlNCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xLDIgKzEs MiBAQAotNTNlYmFkZTM5YmZkYzFkMDY3NDRlNTE4OGI2NDM4YjEgIGdkYi03LjAuMS50YXIuYnoy Cis0NDZkYjllZDI0ODlhYjk5ODRmNjc5MjNhNTFiNzRhOSAgZ2RiLTcuMC41MC4yMDEwMDExNi50 YXIuYnoyCiA3NTA3NTQwYzUwYTFlZGViMmZjMjJhMzdiYzRhMDhiOCAgbGlic3RkYysrLXYzLXB5 dGhvbi1yMTUxNzk4LnRhci5iejIK