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: Kevin Buettner To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 11.1 Date: Sun, 28 Jun 2026 00:00:24 GMT Message-ID: <178260482430.1.13682604221593399924.rpms-gdb-39bde43193c2@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 39bde43193c224a6a3173782b36fd9ba5930e805 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMzliZGU0MzE5M2MyMjRhNmEzMTczNzgyYjM2 ZmQ5YmE1OTMwZTgwNQpBdXRob3IgOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+ CkRhdGUgICA6IDIwMjEtMTAtMTRUMTc6NTI6MDAtMDc6MDAKU3RhdHMgIDogKzI5NS8tNzM3MiBp biA0NyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv Z2RiL2MvMzliZGU0MzE5M2MyMjRhNmEzMTczNzgyYjM2ZmQ5YmE1OTMwZTgwNT9icmFuY2g9Z2Ri LTE3LjItcmViYXNlLWY0NAoKTG9nOgpSZWJhc2UgdG8gRlNGIEdEQiAxMS4xCgotLS0KZGlmZiAt LWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDVmNGE0MGMuLjFiODc2YWQgMTAw NjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSw0ICsxLDQgQEAKIC9u ZXctZmVkb3JhLXJlbGVhc2UKIC9nZGItbGlic3RkYysrLXYzLXB5dGhvbi04LjEuMS0yMDE4MDYy Ni50YXIueHoKIC92Mi4wLjQudGFyLmd6Ci0vZ2RiLTEwLjIudGFyLnh6CitnZGItMTEuMS50YXIu eHoKCmRpZmYgLS1naXQgYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5QYXRj aC5pbmNsdWRlCmluZGV4IDQwMjU2ZjguLmJhNDRhZTEgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5Q YXRjaC5pbmNsdWRlCisrKyBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCkBAIC0zMTQsMTA3ICsz MTQsMTQgQEAgUGF0Y2gwNzQ6IGdkYi1yaGJ6MTM5ODM4Ny10YWItY3Jhc2gtdGVzdC5wYXRjaAog IyA9ZmVkb3JhdGVzdAogUGF0Y2gwNzU6IGdkYi1yaGJ6MTU1MzEwNC1zMzkweC1hcmNoMTItdGVz dC5wYXRjaAogCi0jIEZpeCBvZmYtYnktb25lIGVycm9yIGluIGFkYV9mb2xkX25hbWUucGF0Y2gg KFJIIEJaIDE5MDU5OTYpCi0jIFVwc3RyZWFtIHBhdGNoIHByb3Bvc2FsOiBodHRwczovL3NvdXJj ZXdhcmUub3JnL3BpcGVybWFpbC9nZGItcGF0Y2hlcy8yMDIwLURlY2VtYmVyLzE3MzkzNS5odG1s Ci0jID1mZWRvcmF0ZXN0Ci1QYXRjaDA3NjogZ2RiLXJoYnoxOTA1OTk2LWZpeC1vZmYtYnktb25l LWVycm9yLWluLWFkYV9mb2xkX25hbWUucGF0Y2gKLQotIyBCYWNrcG9ydCBmaXggZm9yIGxpYnN0 ZGMrKyBhc3NlcnQgd2hlbiBwZXJmb3JtaW5nIHRhYiBjb21wbGV0aW9uCi0jIChSSCBCWiAxOTEy OTg1KS4KLVBhdGNoMDc3OiBnZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2VydC5wYXRjaAot Ci0jIEJhY2twb3J0IGZpeCBmb3IgZnJhbWVfaWRfcCBhc3NlcnRpb24gZmFpbHVyZSAoUkggQlog MTkwOTkwMikuCi1QYXRjaDA3ODogZ2RiLXJoYnoxOTA5OTAyLWZyYW1lX2lkX3AtYXNzZXJ0LTEu cGF0Y2gKLQotIyBCYWNrcG9ydCBwYXRjaCAjMiB3aGljaCBmaXhlcyBhIGZyYW1lX2lkX3AgYXNz ZXJ0aW9uIGZhaWx1cmUgKFJIIEJaIDE5MDk5MDIpLgotUGF0Y2gwNzk6IGdkYi1yaGJ6MTkwOTkw Mi1mcmFtZV9pZF9wLWFzc2VydC0yLnBhdGNoCi0KLSMgQmFja3BvcnQgY2hhbmdlIHdoaWNoIGZp eGVzIGdkYnNlcnZlciB0ZXN0aW5nIGhhbmcgb24gZjM0IGFuZCByYXdoaWRlLgotUGF0Y2gwODA6 IGdkYi1yaGJ6MTk0MTA4MC1maXgtZ2Ric2VydmVyLWhhbmcucGF0Y2gKLQotIyBCYWNrcG9ydCAi RGlzYWJsZSBicmFja2V0ZWQgcGFzdGUgbW9kZSBpbiBHREIgdGVzdHMiCi0jIChUb20gVHJvbWV5 KQotUGF0Y2gwODE6IHRlc3RpbmctY3VzdG9tLWlucHV0cmMucGF0Y2gKLQotIyBCYWNrcG9ydCAi U2F2ZS9yZXN0b3JlIGZpbGUgb2Zmc2V0IHdoaWxlIHJlYWRpbmcgbm90ZXMgaW4gY29yZSBmaWxl IgotIyAoS2VpdGggU2VpdHosIFJIQlogMTkzMTM0NCkKLVBhdGNoMDgyOiBnZGItcmhiejE5MzEz NDQtYmZkX3NlZWstZWxmX3JlYWRfbm90ZXMucGF0Y2gKLQotIyBbZm9ydHJhbl0gQmFja3BvcnQg QW5kcmV3IEJ1cmdlc3MncyBjb21taXQgd2hpY2ggY2xlYW5zIHVwCi0jIGFycmF5L3N0cmluZyBl eHByZXNzaW9uIGV2YWx1YXRpb24uCi1QYXRjaDA4MzogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4t Y2xlYW4tdXAtYXJyYXktZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNoCi0KLSMgW2ZvcnRyYW5d IEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0IHdoaWNoIG1vdmVzIEZvcnRyYW4KLSMg ZXhwcmVzc2lvbiBoYW5kbGluZyB0byBmLWxhbmcuYy4KLVBhdGNoMDg0OiBnZGItcmhiejE5NjQx NjctbW92ZS1mb3J0cmFuLWV4cHItaGFuZGxpbmcucGF0Y2gKLQotIyBbZm9ydHJhbl0gQmFja3Bv cnQgQW5kcmV3IEJ1cmdlc3MncyBjb21taXQgd2hpY2ggZWxpbWluYXRlcyB1bmRlc2lyYWJsZQot IyB3aGl0ZXNwYWNlIHdoZW4gcHJpbnRpbmcgYXJyYXlzLgotUGF0Y2gwODU6IGdkYi1yaGJ6MTk2 NDE2Ny1mb3J0cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKLQotIyBbZm9ydHJhbl0gQmFja3Bv cnQgQW5kcmV3IEJ1cmdlc3MncyBjb21taXQgd2hpY2ggY2hhbmdlcyBlbnVtCi0jIHJhbmdlX3R5 cGUgaW50byBhIGJpdCBmaWVsZCBlbnVtLgotUGF0Y2gwODY6IGdkYi1yaGJ6MTk2NDE2Ny1jb252 ZXJ0LWVudW0tcmFuZ2VfdHlwZS5wYXRjaAotCi0jIFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcg QnVyZ2VzcydzIGNvbW1pdCB3aGljaCByZW5hbWVzIGVudW0KLSMgcmFuZ2VfdHlwZSB0byBlbnVt IHJhbmdlX2ZsYWcuCi1QYXRjaDA4NzogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tcmFuZ2VfdHlw ZS10by1yYW5nZV9mbGFnLnBhdGNoCi0KLSMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJn ZXNzJ3MgY29tbWl0IHdoaWNoIGFkZHMgc3VwcG9ydAotIyBmb3IgYXJyYXkgc3RyaWRlcyBpbiBl eHByZXNzaW9ucy4KLVBhdGNoMDg4OiBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJp ZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoCi0KLSMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBC dXJnZXNzJ3MgY29tbWl0IGZvciBGb3J0cmFuIGFycmF5Ci0jIHNsaWNlIHN1cHBvcnQKLVBhdGNo MDg5OiBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zbGljZXMtYXQtcHJvbXB0LnBhdGNo Ci0KLSMgW2ZvcnRyYW5dIEJhY2twb3J0IFNpbW9uIE1hcmNoaSdzIGNvbW1pdCB3aGljaCBmaXhl cyBhIDMyLWJpdCBidWlsZAotIyBwcm9ibGVtIGluIGdkYi9mLWxhbmcuYy4KLVBhdGNoMDkwOiBn ZGItcmhiejE5NjQxNjctZm9ydHJhbi1maXgtdHlwZS1mb3JtYXQtbWlzbWF0Y2gtaW4tZi1sYW5n LmMucGF0Y2gKLQotIyBCYWNrcG9ydCBvZiAiRXhjbHVkZSBkZWJ1Z2luZm8gZmlsZXMgZnJvbSAn b3V0c2lkZSBvZiBFTEYgc2VnbWVudHMnCi0jIHdhcm5pbmciICAoS2VpdGggU2VpdHopCi1QYXRj aDA5MTogZ2RiLXJoYnoxODk4MjUyLWxvYWRhYmxlLXNlY3Rpb24tb3V0c2lkZS1FTEYtc2VnbWVu dHMucGF0Y2gKLQotIyBCYWNrcG9ydCAiRml4IGNyYXNoIHdoZW4gZXhwYW5kaW5nIHBhcnRpYWwg c3ltdGFicyB3aXRoIERXX1RBR19pbXBvcnRlZF91bml0IgotIyAoVG9tIFRyb21leSwgZ2RiLzI3 NzQzKQotUGF0Y2gwOTI6IGdkYi1nZGIyNzc0My1wc3ltdGFiLWltcG9ydGVkLXVuaXQucGF0Y2gK LQotIyBCYWNrcG9ydCAiW2dkYi9zZXJ2ZXJdIERvbid0IG92ZXJ3cml0ZSBmcy9nc19iYXNlIHdp dGggLW0zMiIKLSMgKFRvbSBkZSBWcmllcykKLVBhdGNoMDkzOiBnZGItZG9udC1vdmVyd3JpdGUt ZnNnc2Jhc2UtbTMyLnBhdGNoCi0KLSMgQmFja3BvcnQgcGF0Y2ggZml4aW5nIGdkYiBvbiBnbGli Yy0yLjM0IG1hY2hpbmVzIHdpdGggcmVnYXJkIHRvIGF0dGFjaGluZwotIyB0byBwcm9jZXNzZXMg KFJIIEJaIDE5NzEwOTYpLgotUGF0Y2gwOTQ6IGdkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtMS5w YXRjaAotCi0jIEJhY2twb3J0IHBhdGNoIGZpeGluZyBnZGIgb24gZ2xpYmMtMi4zNCBtYWNoaW5l cyB3LyByZWdhcmQgdG8KLSMgbGlidGhyZWFkX2RiIGluaXRpYWxpemF0aW9uLgotUGF0Y2gwOTU6 IGdkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtMi5wYXRjaAotCi0jIEJhY2twb3J0IHRlc3RzdWl0 ZSBwYXRjaCBmb3IgbWF0Y2hpbmcgbmV3IGxpYnRocmVhZF9kYiByZWxhdGVkIG91dHB1dAotIyB3 aGVuIHRlc3RpbmcgZ2RiIG9uIGdsaWJjLTIuMzQgbWF0Y2hpbmVzIChSSCBCWiAxOTcxMDk2KS4K LVBhdGNoMDk2OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0Y2gKLQotIyBCYWNrcG9y dCBwYXRjaCBhZGp1c3RpbmcgdGVzdCBnZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGluZy5leHAu Ci0jIChSSCBCWiAxOTcxMDk2KS4KLVBhdGNoMDk3OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0 LTQucGF0Y2gKLQotIyBCYWNrcG9ydCBwYXRjaCBhZGp1c3RpbmcgdGVzdCBnZGIubWkvbWktc3lt LWluZm8uZXhwIChSSCBCWiAxOTcxMDk2KS4KLVBhdGNoMDk4OiBnZGItcmhiejE5NzEwOTYtZ2xp YmMyLjM0LTUucGF0Y2gKLQotI1tnZGIvY2xpXSBEb24ndCBhc3NlcnQgb24gZW1wdHkgc3RyaW5n IGZvciBjb3JlLWZpbGUKLSMoVG9tIGRlIFZyaWVzKQotUGF0Y2gwOTk6IGdkYi1yaGJ6MTkxNjUx Ni1wYXRoc3R1ZmZzMTMyLWludGVybmFsLWVycm9yLnBhdGNoCi0KLSNbZ2RiXSBJbXByb3ZlIGVh cmx5IGV4aXRzIGZvciBlbnYgdmFyIGluIGRlYnVnaW5mb2Qtc3VwcG9ydC5jCi0jKFRvbSBkZSBW cmllcykKLVBhdGNoMTAwOiBnZGItcmhiejE5NzA3NDEtZWFybHktZXhpdC1mb3ItZW1wdHktZGVi dWdpbmZvZC11cmwucGF0Y2gKLQogI0JhY2twb3J0IHVwc3RyZWFtIHBhdGNoIHdoaWNoIGZpeGVz IGludGVybmFsLWVycm9yOiBVbmV4cGVjdGVkCiAjdHlwZSBmaWVsZCBsb2NhdGlvbiBraW5kIChS SEJaIDE5NzY4ODcpLgotUGF0Y2gxMDE6IGdkYi1yaGJ6MTk3Njg4Ny1maWVsZC1sb2NhdGlvbi1r aW5kLnBhdGNoCitQYXRjaDA3NjogZ2RiLXJoYnoxOTc2ODg3LWZpZWxkLWxvY2F0aW9uLWtpbmQu cGF0Y2gKIAogIyBCYWNrcG9ydCB0ZXN0IGZvciBSSEJaIDE5NzY4ODcgKEtldmluIEJ1ZXR0bmVy KS4KLVBhdGNoMTAyOiBnZGItdGVzdC1mb3ItcmhiejE5NzY4ODcucGF0Y2gKK1BhdGNoMDc3OiBn ZGItdGVzdC1mb3ItcmhiejE5NzY4ODcucGF0Y2gKKworIyBCYWNrcG9ydCBnZGIuZm9ydHJhbiB0 ZXN0c3VpdGUgY2hhbmdlcyBpbiBvcmRlciB0byBhdm9pZCBGb3J0cmFuCisjIGxleGljYWwgYW5h bHl6ZXIgYnVnLgorUGF0Y2gwNzg6IGdkYi1yaGJ6MjAxMjk3Ni1wYXBlci1vdmVyLWZvcnRyYW4t bGV4LXByb2JsZW1zLnBhdGNoCiAKCmRpZmYgLS1naXQgYS9fZ2RiLnNwZWMucGF0Y2guaW5jbHVk ZSBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCmluZGV4IDQ4ZjA5Y2QuLjQ4NWEzMmMgMTAwNjQ0 Ci0tLSBhL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCisrKyBiL19nZGIuc3BlYy5wYXRjaC5pbmNs dWRlCkBAIC03NiwyNyArNzYsMyBAQAogJXBhdGNoMDc2IC1wMQogJXBhdGNoMDc3IC1wMQogJXBh dGNoMDc4IC1wMQotJXBhdGNoMDc5IC1wMQotJXBhdGNoMDgwIC1wMQotJXBhdGNoMDgxIC1wMQot JXBhdGNoMDgyIC1wMQotJXBhdGNoMDgzIC1wMQotJXBhdGNoMDg0IC1wMQotJXBhdGNoMDg1IC1w MQotJXBhdGNoMDg2IC1wMQotJXBhdGNoMDg3IC1wMQotJXBhdGNoMDg4IC1wMQotJXBhdGNoMDg5 IC1wMQotJXBhdGNoMDkwIC1wMQotJXBhdGNoMDkxIC1wMQotJXBhdGNoMDkyIC1wMQotJXBhdGNo MDkzIC1wMQotJXBhdGNoMDk0IC1wMQotJXBhdGNoMDk1IC1wMQotJXBhdGNoMDk2IC1wMQotJXBh dGNoMDk3IC1wMQotJXBhdGNoMDk4IC1wMQotJXBhdGNoMDk5IC1wMQotJXBhdGNoMTAwIC1wMQot JXBhdGNoMTAxIC1wMQotJXBhdGNoMTAyIC1wMQoKZGlmZiAtLWdpdCBhL19naXRfdXBzdHJlYW1f Y29tbWl0IGIvX2dpdF91cHN0cmVhbV9jb21taXQKaW5kZXggMDJjMWEwZi4uMzQ5ZTc2YiAxMDA2 NDQKLS0tIGEvX2dpdF91cHN0cmVhbV9jb21taXQKKysrIGIvX2dpdF91cHN0cmVhbV9jb21taXQK QEAgLTEgKzEgQEAKLWNlMzVkNzE2M2U3NzliMTMyMTA1OGIyMmYwMDVjNzBjZTE1MjRiMjUKKzhj ZGQ4NTY4YmZlNGVhODZhOTNlNGI4MGJmMmZjNmU2ZjljYWQ4NGMKCmRpZmYgLS1naXQgYS9fcGF0 Y2hfb3JkZXIgYi9fcGF0Y2hfb3JkZXIKaW5kZXggZjQ0ODUxNS4uOTQ5NWQ5NSAxMDA2NDQKLS0t IGEvX3BhdGNoX29yZGVyCisrKyBiL19wYXRjaF9vcmRlcgpAQCAtNzMsMzAgKzczLDYgQEAgZ2Ri LWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCiBnZGItbGliZXhlYy1hZGQtaW5kZXgucGF0Y2gKIGdk Yi1yaGJ6MTM5ODM4Ny10YWItY3Jhc2gtdGVzdC5wYXRjaAogZ2RiLXJoYnoxNTUzMTA0LXMzOTB4 LWFyY2gxMi10ZXN0LnBhdGNoCi1nZGItcmhiejE5MDU5OTYtZml4LW9mZi1ieS1vbmUtZXJyb3It aW4tYWRhX2ZvbGRfbmFtZS5wYXRjaAotZ2RiLXJoYnoxOTEyOTg1LWxpYnN0ZGMrKy1hc3NlcnQu cGF0Y2gKLWdkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCi1nZGItcmhi ejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMi5wYXRjaAotZ2RiLXJoYnoxOTQxMDgwLWZpeC1n ZGJzZXJ2ZXItaGFuZy5wYXRjaAotdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAotZ2RiLXJo YnoxOTMxMzQ0LWJmZF9zZWVrLWVsZl9yZWFkX25vdGVzLnBhdGNoCi1nZGItcmhiejE5NjQxNjct Zm9ydHJhbi1jbGVhbi11cC1hcnJheS1leHByZXNzaW9uLWV2YWx1YXRpb24ucGF0Y2gKLWdkYi1y aGJ6MTk2NDE2Ny1tb3ZlLWZvcnRyYW4tZXhwci1oYW5kbGluZy5wYXRjaAotZ2RiLXJoYnoxOTY0 MTY3LWZvcnRyYW4td2hpdGVzcGFjZV9hcnJheS5wYXRjaAotZ2RiLXJoYnoxOTY0MTY3LWNvbnZl cnQtZW51bS1yYW5nZV90eXBlLnBhdGNoCi1nZGItcmhiejE5NjQxNjctZm9ydHJhbi1yYW5nZV90 eXBlLXRvLXJhbmdlX2ZsYWcucGF0Y2gKLWdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXN0 cmlkZXMtaW4tZXhwcmVzc2lvbnMucGF0Y2gKLWdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5 LXNsaWNlcy1hdC1wcm9tcHQucGF0Y2gKLWdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBl LWZvcm1hdC1taXNtYXRjaC1pbi1mLWxhbmcuYy5wYXRjaAotZ2RiLXJoYnoxODk4MjUyLWxvYWRh YmxlLXNlY3Rpb24tb3V0c2lkZS1FTEYtc2VnbWVudHMucGF0Y2gKLWdkYi1nZGIyNzc0My1wc3lt dGFiLWltcG9ydGVkLXVuaXQucGF0Y2gKLWdkYi1kb250LW92ZXJ3cml0ZS1mc2dzYmFzZS1tMzIu cGF0Y2gKLWdkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtMS5wYXRjaAotZ2RiLXJoYnoxOTcxMDk2 LWdsaWJjMi4zNC0yLnBhdGNoCi1nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0Y2gKLWdk Yi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtNC5wYXRjaAotZ2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4z NC01LnBhdGNoCi1nZGItcmhiejE5MTY1MTYtcGF0aHN0dWZmczEzMi1pbnRlcm5hbC1lcnJvci5w YXRjaAotZ2RiLXJoYnoxOTcwNzQxLWVhcmx5LWV4aXQtZm9yLWVtcHR5LWRlYnVnaW5mb2QtdXJs LnBhdGNoCiBnZGItcmhiejE5NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaAogZ2RiLXRl c3QtZm9yLXJoYnoxOTc2ODg3LnBhdGNoCitnZGItcmhiejIwMTI5NzYtcGFwZXItb3Zlci1mb3J0 cmFuLWxleC1wcm9ibGVtcy5wYXRjaAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtZ3N0YWNrLTIwMDUw NDExLnBhdGNoIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKaW5kZXggMzVjMmRlMS4u OWZhMmU3ZCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKKysrIGIv Z2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKQEAgLTE2LDcgKzE2LDcgQEAgU3ViamVjdDog Z2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUu aW4gYi9nZGIvTWFrZWZpbGUuaW4KIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01h a2VmaWxlLmluCi1AQCAtMTcyNiw3ICsxNzI2LDcgQEAgaW5mbyBpbnN0YWxsLWluZm8gY2xlYW4t aW5mbyBkdmkgcGRmIGluc3RhbGwtcGRmIGh0bWwgaW5zdGFsbC1odG1sOiBmb3JjZQorQEAgLTE3 NTMsNyArMTc1Myw3IEBAIGluZm8gaW5zdGFsbC1pbmZvIGNsZWFuLWluZm8gZHZpIHBkZiBpbnN0 YWxsLXBkZiBodG1sIGluc3RhbGwtaHRtbDogZm9yY2UKICBpbnN0YWxsOiBhbGwKICAJQCQoTUFL RSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsLW9ubHkKICAKQEAgLTI1LDcgKzI1LDcgQEAgZGlm ZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgogIAl0cmFuc2Zvcm1l ZF9uYW1lPWB0PSckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJzsgXAogIAkJCSAgZWNobyBnZGIg fCBzZWQgLWUgIiQkdCJgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4 OyB0aGVuIFwKLUBAIC0xNzc1LDcgKzE3NzUsMjUgQEAgaW5zdGFsbC1ndWlsZToKK0BAIC0xODAy LDcgKzE4MDIsMjUgQEAgaW5zdGFsbC1ndWlsZToKICBpbnN0YWxsLXB5dGhvbjoKICAJJChTSEVM TCkgJChzcmNkaXIpLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQoR0RCX0RBVEFESVIpL3B5 dGhvbi9nZGIKICAKQEAgLTUyLDcgKzUyLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5p biBiL2dkYi9NYWtlZmlsZS5pbgogIAl0cmFuc2Zvcm1lZF9uYW1lPWB0PSckKHByb2dyYW1fdHJh bnNmb3JtX25hbWUpJzsgXAogIAkJCSAgZWNobyBnZGIgfCBzZWQgLWUgJCR0YCA7IFwKICAJCWlm IHRlc3QgIngkJHRyYW5zZm9ybWVkX25hbWUiID0geDsgdGhlbiBcCi1AQCAtMTc5OCw2ICsxODE2 LDE4IEBAIHVuaW5zdGFsbDogZm9yY2UgJChDT05GSUdfVU5JTlNUQUxMKQorQEAgLTE4MjUsNiAr MTg0MywxOCBAQCB1bmluc3RhbGw6IGZvcmNlICQoQ09ORklHX1VOSU5TVEFMTCkKICAJZmkKICAJ QCQoTUFLRSkgRE89dW5pbnN0YWxsICJET0RJUlM9JChTVUJESVJTKSIgJChGTEFHU19UT19QQVNT KSBzdWJkaXJfZG8KICAKCmRpZmYgLS1naXQgYS9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQx MjAyLnBhdGNoIGIvZ2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAppbmRleCBj MWU3Mzk1Li43ZWU2OGU0IDEwMDY0NAotLS0gYS9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQx MjAyLnBhdGNoCisrKyBiL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKQEAg LTI3LDcgKzI3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVz dC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QKIGRpZmYgLS1naXQgYS9nZGIv dG9wLmMgYi9nZGIvdG9wLmMKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAt MjE2Myw3ICsyMTYzLDcgQEAgaW5pdF9nZGJfdmVyc2lvbl92YXJzICh2b2lkKQorQEAgLTIxOTUs NyArMjE5NSw3IEBAIGluaXRfZ2RiX3ZlcnNpb25fdmFycyAodm9pZCkKICAgIHN0cnVjdCBpbnRl cm5hbHZhciAqbWFqb3JfdmVyc2lvbl92YXIgPSBjcmVhdGVfaW50ZXJuYWx2YXIgKCJfZ2RiX21h am9yIik7CiAgICBzdHJ1Y3QgaW50ZXJuYWx2YXIgKm1pbm9yX3ZlcnNpb25fdmFyID0gY3JlYXRl X2ludGVybmFsdmFyICgiX2dkYl9taW5vciIpOwogICAgaW50IHZtYWpvciA9IDAsIHZtaW5vciA9 IDAsIHZyZXZpc2lvbiA9IDA7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZl LXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaCBiL2dkYi02LjUtYnoxODUzMzctcmVzb2x2 ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gKaW5kZXggNWNkZjY1Zi4uMzA0YWEzOCAx MDA2NDQKLS0tIGEvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5m by12Mi5wYXRjaAorKysgYi9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVi dWdpbmZvLXYyLnBhdGNoCkBAIC00NCwxNyArNDQsMTcgQEAgZ2xpYmMtZGVidWdpbmZvLTIuNy0y Lng4Nl82NDogL3Vzci9saWIvZGVidWcvbGliNjQvbGliYy5zby42LmRlYnVnOgogZGlmZiAtLWdp dCBhL2dkYi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKIC0tLSBhL2dkYi9wcmludGNtZC5j CiArKysgYi9nZGIvcHJpbnRjbWQuYwotQEAgLTEyMTAsNiArMTIxMCwxMCBAQCBwcmludF9jb21t YW5kXzEgKGNvbnN0IGNoYXIgKmFyZ3MsIGludCB2b2lkcHJpbnQpCitAQCAtMTMwNiw2ICsxMzA2 LDEwIEBAIHByb2Nlc3NfcHJpbnRfY29tbWFuZF9hcmdzIChjb25zdCBjaGFyICphcmdzLCB2YWx1 ZV9wcmludF9vcHRpb25zICpwcmludF9vcHRzLAogIAogICAgaWYgKGV4cCAhPSBudWxscHRyICYm ICpleHApCiAgICAgIHsKICsgICAgICAvKiAnKigoaW50ICooKikgKHZvaWQpKSBfX2Vycm5vX2xv Y2F0aW9uKSAoKScgaXMgaW5jb21wYXRpYmxlIHdpdGgKICsJIGZ1bmN0aW9uIGRlc2NyaXB0b3Jz LiAgKi8KLSsgICAgICBpZiAodGFyZ2V0X2hhc19leGVjdXRpb24gJiYgc3RyY21wIChleHAsICJl cnJubyIpID09IDApCisrICAgICAgaWYgKHRhcmdldF9oYXNfZXhlY3V0aW9uICgpICYmIHN0cmNt cCAoZXhwLCAiZXJybm8iKSA9PSAwKQogKwlleHAgPSAiKigqKGludCAqKCopKHZvaWQpKSBfX2Vy cm5vX2xvY2F0aW9uKSAoKSI7Ci0gICAgICAgZXhwcmVzc2lvbl91cCBleHByID0gcGFyc2VfZXhw cmVzc2lvbiAoZXhwKTsKLSAgICAgICB2YWwgPSBldmFsdWF0ZV9leHByZXNzaW9uIChleHByLmdl dCAoKSk7Ci0gICAgIH0KKyAgICAgICAvKiBWT0lEUFJJTlQgaXMgdHJ1ZSB0byBpbmRpY2F0ZSB0 aGF0IHdlIGRvIHdhbnQgdG8gcHJpbnQgYSB2b2lkCisgCSB2YWx1ZSwgc28gaW52ZXJ0IGl0IGZv ciBwYXJzZV9leHByZXNzaW9uLiAgKi8KKyAgICAgICBleHByZXNzaW9uX3VwIGV4cHIgPSBwYXJz ZV9leHByZXNzaW9uIChleHAsIG51bGxwdHIsICF2b2lkcHJpbnQpOwogZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3 YXJmMi9kdzItZXJybm8uYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIC0tLSAvZGV2L251bGwKCmRp ZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2ggYi9nZGItNi42 LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2gKaW5kZXggODEwNTZjYy4uMWRjM2FjNCAxMDA2 NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCisrKyBiL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUtcnBtLXNjbC5wYXRjaApAQCAtOTgsNyArOTgsNyBAQCBkaWZmIC0t Z2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogZGlmZiAtLWdpdCBhL2dkYi9k d2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5j CiArKysgYi9nZGIvZHdhcmYyL3JlYWQuYwotQEAgLTMwMzQsNiArMzAzNCwxNiBAQCByZWFkX2dk Yl9pbmRleF9mcm9tX2J1ZmZlciAoY29uc3QgY2hhciAqZmlsZW5hbWUsCitAQCAtMjgwMSw2ICsy ODAxLDE2IEBAIHJlYWRfZ2RiX2luZGV4X2Zyb21fYnVmZmVyIChjb25zdCBjaGFyICpmaWxlbmFt ZSwKICAgICAgICJzZXQgdXNlLWRlcHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgb24iLiAgKi8KICAg IGlmICh2ZXJzaW9uIDwgNiAmJiAhZGVwcmVjYXRlZF9vaykKICAgICAgewpAQCAtMTE1LDcgKzEx NSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5j CiAgICAgICAgc3RhdGljIGludCB3YXJuaW5nX3ByaW50ZWQgPSAwOwogICAgICAgIGlmICghd2Fy bmluZ19wcmludGVkKQogIAl7Ci1AQCAtMzA0NSw2ICszMDU1LDEwIEBAIHRvIHVzZSB0aGUgc2Vj dGlvbiBhbnl3YXkuIiksCitAQCAtMjgxMiw2ICsyODIyLDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlv biBhbnl3YXkuIiksCiAgCSAgd2FybmluZ19wcmludGVkID0gMTsKICAJfQogICAgICAgIHJldHVy biAwOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKaW5kZXggYmY3ODNkYS4uNDY5M2Y0MyAxMDA2 NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1i dWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKQEAgLTY5Niw3ICs2OTYsNyBAQCBkaWZmIC0tZ2l0IGEv Z2RiL2NvbmZpZy5pbiBiL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xh dGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3Vh Z2UgaXMgcmVxdWVzdGVkLiAqLwogICN1bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjQ3LDYgKzI1MCw5 IEBACitAQCAtMjQ2LDYgKzI0OSw5IEBACiAgLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtcGZy IGxpYnJhcnkuICovCiAgI3VuZGVmIEhBVkVfTElCTVBGUgogIApAQCAtNzA5LDcgKzcwOSw3IEBA IGRpZmYgLS1naXQgYS9nZGIvY29uZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgogZGlmZiAtLWdpdCBh L2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAtLS0gYS9nZGIvY29uZmlndXJlCiArKysg Yi9nZGIvY29uZmlndXJlCi1AQCAtNzY5LDYgKzc2OSwxMSBAQCBQS0dfQ09ORklHCitAQCAtNzcx LDYgKzc3MSwxMSBAQCBQS0dfQ09ORklHCiAgSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUCiAgVEFS R0VUX09CUwogIHN1YmRpcnMKQEAgLTcyMSw3ICs3MjEsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2Nv bmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKICBHREJfREFUQURJUgogIERFQlVHRElSCiAgTUFLRUlO Rk9fRVhUUkFfRkxBR1MKLUBAIC04NzMsNiArODc4LDcgQEAgd2l0aF9nZGJfZGF0YWRpcgorQEAg LTg3Niw2ICs4ODEsNyBAQCB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291cmNl cwogIHdpdGhfYXV0b19sb2FkX2RpcgogIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aApAQCAtNzI5 LDcgKzcyOSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQog IGVuYWJsZV90YXJnZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RibWkKLUBAIC05 NDksNiArOTU1LDggQEAgUEtHX0NPTkZJR19QQVRICitAQCAtOTUzLDYgKzk1OSw4IEBAIFBLR19D T05GSUdfUEFUSAogIFBLR19DT05GSUdfTElCRElSCiAgREVCVUdJTkZPRF9DRkxBR1MKICBERUJV R0lORk9EX0xJQlMKQEAgLTczOCw3ICs3MzgsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3Vy ZSBiL2dkYi9jb25maWd1cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTYyMSw2ICsx NjI5LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CitAQCAtMTYyNSw2ICsxNjMzLDggQEAgT3B0aW9u YWwgUGFja2FnZXM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3Qg YXV0by1sb2FkZWQgZmlsZXMgbG9jYXRpb25zCiAgICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBF bmFibGUgZGVidWdpbmZvIGxvb2t1cHMgd2l0aCBkZWJ1Z2luZm9kCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoYXV0by95ZXMvbm8pCkBAIC03NDcsNyArNzQ3LDcgQEAgZGlmZiAtLWdpdCBh L2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgtbGlidW53aW5kLWlhNjQg ICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGluZyBmb3IgaWE2NCB0YXJnZXRzCiAgICAtLXdp dGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhl IHRlcm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0xNzAyLDYg KzE3MTIsOCBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC0x NzA1LDYgKzE3MTUsOCBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoK ICAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIERFQlVHSU5GT0QsIG92ZXJyaWRp bmcgcGtnLWNvbmZpZwogICAgREVCVUdJTkZPRF9MSUJTCiAgICAgICAgICAgICAgICBsaW5rZXIg ZmxhZ3MgZm9yIERFQlVHSU5GT0QsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwpAQCAtNzU2LDcgKzc1 Niw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogICAgWUFD QyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDb21waWxlciBDb21waWxlcicgaW1wbGVtZW50YXRp b24gdG8gdXNlLgogICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGZpcnN0IHByb2dyYW0g Zm91bmQgb3V0IG9mOiBgYmlzb24gLXknLCBgYnlhY2MnLAogICAgICAgICAgICAgICAgYHlhY2Mn LgotQEAgLTY2NjYsNiArNjY3OCw0OTQgQEAgX0FDRU9GCitAQCAtNjYxNiw2ICs2NjI4LDQ5NCBA QCBfQUNFT0YKICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3Vs dDogJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aCIgPiY1CiAgJGFzX2VjaG8gIiR3aXRoX2F1dG9f bG9hZF9zYWZlX3BhdGgiID4mNjsgfQogIApAQCAtMTI1NCw3ICsxMjU0LDcgQEAgZGlmZiAtLWdp dCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJlCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZp Z3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKIC0tLSBhL2dkYi9jb25maWd1cmUuYWMKICsrKyBi L2dkYi9jb25maWd1cmUuYWMKLUBAIC0xNDMsNiArMTQzLDE5OSBAQCBBQ19ERUZJTkVfRElSKEFV VE9fTE9BRF9TQUZFX1BBVEgsIGVzY2FwZV9kaXIsCitAQCAtMTUzLDYgKzE1MywxOTkgQEAgQUNf REVGSU5FX0RJUihBVVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAogIAkgICAgICBbRGly ZWN0b3JpZXMgc2FmZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCiAgQUNfTVNHX1JFU1VM VChbJHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aF0pCiAgCkBAIC0xNDU3LDcgKzE0NTcsNyBAQCBk aWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKIGRpZmYgLS1n aXQgYS9nZGIvZXZlbnQtdG9wLmMgYi9nZGIvZXZlbnQtdG9wLmMKIC0tLSBhL2dkYi9ldmVudC10 b3AuYwogKysrIGIvZ2RiL2V2ZW50LXRvcC5jCi1AQCAtNDIsNiArNDIsNyBAQAorQEAgLTQxLDYg KzQxLDcgQEAKICAjaW5jbHVkZSAiZ2Ric3VwcG9ydC9nZGJfc2VsZWN0LmgiCiAgI2luY2x1ZGUg ImdkYnN1cHBvcnQvZ2RiLXNpZ21hc2suaCIKICAjaW5jbHVkZSAiYXN5bmMtZXZlbnQuaCIKQEAg LTE0NjUsNyArMTQ2NSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZXZlbnQtdG9wLmMgYi9nZGIvZXZl bnQtdG9wLmMKICAKICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzLiAgKi8KICAjaW5jbHVkZSAi cmVhZGxpbmUvcmVhZGxpbmUuaCIKLUBAIC0zNjQsNiArMzY1LDggQEAgZGlzcGxheV9nZGJfcHJv bXB0IChjb25zdCBjaGFyICpuZXdfcHJvbXB0KQorQEAgLTM2Myw2ICszNjQsOCBAQCBkaXNwbGF5 X2dkYl9wcm9tcHQgKGNvbnN0IGNoYXIgKm5ld19wcm9tcHQpCiAgICAvKiBSZXNldCB0aGUgbmVz dGluZyBkZXB0aCB1c2VkIHdoZW4gdHJhY2UtY29tbWFuZHMgaXMgc2V0LiAgKi8KICAgIHJlc2V0 X2NvbW1hbmRfbmVzdF9kZXB0aCAoKTsKICAKQEAgLTE0ODksMTEgKzE0ODksMTEgQEAgZGlmZiAt LWdpdCBhL2dkYi9ldmVudC10b3AuYyBiL2dkYi9ldmVudC10b3AuYwogZGlmZiAtLWdpdCBhL2dk Yi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCiAtLS0gYS9nZGIvc3ltZmlsZS5oCiArKysgYi9n ZGIvc3ltZmlsZS5oCi1AQCAtNTYwLDYgKzU2MCw3IEBAIGV4dGVybiB2b2lkIGdlbmVyaWNfbG9h ZCAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5KTsKK0BAIC0zNDIsNiArMzQyLDcgQEAg ZXh0ZXJuIHZvaWQgZ2VuZXJpY19sb2FkIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkp OwogIC8qIGJ1aWxkLWlkIHN1cHBvcnQuICAqLwogIGV4dGVybiBzdHJ1Y3QgYmZkX2J1aWxkX2lk ICpidWlsZF9pZF9hZGRyX2dldCAoQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiB2b2lkIGRlYnVn X3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwgY29uc3QgY2hhciAqZGVidWcpOwog K2V4dGVybiB2b2lkIGRlYnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQpOwogICNkZWZpbmUgQlVJTERf SURfTUFJTl9FWEVDVVRBQkxFX0ZJTEVOQU1FIF8oInRoZSBtYWluIGV4ZWN1dGFibGUgZmlsZSIp CiAgCi0gLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KKyAvKiBGcm9tIG1pbmlkZWJ1Zy5jLiAgKi8K CmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXNvbGliLW1pc3NpbmctaWRzLnBh dGNoIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaAppbmRl eCBmMWY1ZTgzLi43ZGQ0ZmIxIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXNv bGliLW1pc3NpbmctaWRzLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWIt bWlzc2luZy1pZHMucGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAgaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMzM5ODYyCiBkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2 cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKIC0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKICsrKyBiL2dk Yi9zb2xpYi1zdnI0LmMKLUBAIC0xMzQwLDE0ICsxMzQwLDI3IEBAIHN2cjRfcmVhZF9zb19saXN0 IChzdnI0X2luZm8gKmluZm8sIENPUkVfQUREUiBsbSwgQ09SRV9BRERSIHByZXZfbG0sCitAQCAt MTM1MCwxNCArMTM1MCwyOCBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBD T1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAogIAl9CiAgCiAgICAgICAgewpAQCAtMzgs MTMgKzM4LDE0IEBAIGRpZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2 cjQuYwogKwkgICBub3QgZG8gYW55IGJ1aWxkLWlkIGNoZWNraW5nIG9mIHRoZSBsaWJyYXJpZXMu ICBUaGVyZSBtYXkgYmUgbWlzc2luZwogKwkgICBidWlsZC1pZHMgZHVtcGVkIGluIHRoZSBjb3Jl IGZpbGUgYW5kIHdlIHdvdWxkIG1hcCBhbGwgdGhlIGxpYnJhcmllcwogKwkgICB0byB0aGUgb25s eSBleGlzdGluZyBmaWxlIGxvYWRlZCB0aGF0IHRpbWUgLSB0aGUgZXhlY3V0YWJsZS4gICovCi0r CWlmIChzeW1maWxlX29iamZpbGUgIT0gTlVMTAotKwkgICAgJiYgKHN5bWZpbGVfb2JqZmlsZS0+ ZmxhZ3MgJiBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEKSAhPSAwKQorKwlpZiAoY3VycmVudF9w cm9ncmFtX3NwYWNlLT5zeW1maWxlX29iamVjdF9maWxlICE9IE5VTEwKKysJICAgICYmIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UtPnN5bWZpbGVfb2JqZWN0X2ZpbGUtPmZsYWdzCisrCSAgICAgICAg ICYgT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURFRCkgIT0gMCkKICsJICBidWlsZF9pZCA9IGJ1aWxk X2lkX2FkZHJfZ2V0IChsaS0+bF9sZCk7CiAgCWlmIChidWlsZF9pZCAhPSBOVUxMKQogIAkgIHsK ICAJICAgIGNoYXIgKm5hbWUsICpidWlsZF9pZF9maWxlbmFtZTsKLUBAIC0xMzYyLDIzICsxMzc1 LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGxtLCBD T1JFX0FERFIgcHJldl9sbSwKK0BAIC0xMzcyLDIzICsxMzg2LDcgQEAgc3ZyNF9yZWFkX3NvX2xp c3QgKHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKICAJ CXhmcmVlIChuYW1lKTsKICAJICAgICAgfQogIAkgICAgZWxzZQpAQCAtNjAsOCArNjEsOCBAQCBk aWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKIC0JCSAgIGlu c3RlYWQpIGlmIHRoZSBvbi1kaXNrIGZpbGVzIG5vIGxvbmdlciBtYXRjaCB0aGUKIC0JCSAgIHJ1 bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KIC0KLS0JCWlmIChzeW1maWxlX29iamZpbGUgIT0g TlVMTAotLQkJICAgICYmIChzeW1maWxlX29iamZpbGUtPmZsYWdzCistCQlpZiAoY3VycmVudF9w cm9ncmFtX3NwYWNlLT5zeW1maWxlX29iamVjdF9maWxlICE9IE5VTEwKKy0JCSAgICAmJiAoY3Vy cmVudF9wcm9ncmFtX3NwYWNlLT5zeW1maWxlX29iamVjdF9maWxlLT5mbGFncwogLQkJCSYgT0JK Rl9CVUlMRF9JRF9DT1JFX0xPQURFRCkgIT0gMCkKIC0JCSAgbmV3b2JqLT5zb19uYW1lWzBdID0g MDsKIC0JICAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gg Yi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IGY2MDY3OTMuLmE0NjNlMzcgMTAw NjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWls ZGlkLWxvY2F0ZS5wYXRjaApAQCAtOSw3ICs5LDcgQEAgU3ViamVjdDogZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS5wYXRjaAogZGlmZiAtLWdpdCBhL2JmZC9saWJiZmQtaW4uaCBiL2JmZC9saWJiZmQt aW4uaAogLS0tIGEvYmZkL2xpYmJmZC1pbi5oCiArKysgYi9iZmQvbGliYmZkLWluLmgKLUBAIC0x MjEsNyArMTIxLDcgQEAgc3RhdGljIGlubGluZSBjaGFyICoKK0BAIC0xMTUsNyArMTE1LDcgQEAg c3RhdGljIGlubGluZSBjaGFyICoKICBiZmRfc3RyZHVwIChjb25zdCBjaGFyICpzdHIpCiAgewog ICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoc3RyKSArIDE7CkBAIC0yMSw3ICsyMSw3IEBAIGRpZmYg LS1naXQgYS9iZmQvbGliYmZkLWluLmggYi9iZmQvbGliYmZkLWluLmgKIGRpZmYgLS1naXQgYS9i ZmQvbGliYmZkLmggYi9iZmQvbGliYmZkLmgKIC0tLSBhL2JmZC9saWJiZmQuaAogKysrIGIvYmZk L2xpYmJmZC5oCi1AQCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciAqCitAQCAt MTIwLDcgKzEyMCw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciAqCiAgYmZkX3N0cmR1cCAoY29uc3Qg Y2hhciAqc3RyKQogIHsKICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKHN0cikgKyAxOwpAQCAtODkw LDcgKzg5MCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5j CiArICAgICAgY2hhciAqYnVpbGRfaWRfZmlsZW5hbWVfY3N0ciA9IE5VTEw7CiAgICAgICAgZ2Ri X2JmZF9yZWZfcHRyIGFiZmQgKGJ1aWxkX2lkX3RvX2RlYnVnX2JmZCAoYnVpbGRfaWQtPnNpemUs CiAtCQkJCQkJICAgYnVpbGRfaWQtPmRhdGEpKTsKLSsJCQkJCQkgICAgYnVpbGRfaWQtPmRhdGEs CisrCQkJCQkJICAgYnVpbGRfaWQtPmRhdGEsCiArCSAgICAgICghYnVpbGRfaWRfZmlsZW5hbWVf cmV0dXJuID8gTlVMTCA6ICZidWlsZF9pZF9maWxlbmFtZV9jc3RyKSkpOwogKyAgICAgIGlmIChi dWlsZF9pZF9maWxlbmFtZV9yZXR1cm4pCiArCXsKQEAgLTkwNiw3ICs5MDYsNyBAQCBkaWZmIC0t Z2l0IGEvZ2RiL2J1aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogICAgICAgIC8qIFByZXZlbnQg bG9vcGluZyBvbiBhIHN0cmlwcGVkIC5kZWJ1ZyBmaWxlLiAgKi8KICAgICAgICBpZiAoYWJmZCAh PSBOVUxMCiAgCSAgJiYgZmlsZW5hbWVfY21wIChiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkLmdldCAo KSksCi1AQCAtMjIzLDMgKzg5NywyMSBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVp bGRpZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCitAQCAtMjIzLDMgKzg5NywyMiBAQCBmaW5k X3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp CiAgCiAgICByZXR1cm4gc3RkOjpzdHJpbmcgKCk7CiAgfQpAQCAtOTI2LDcgKzkyNiw4IEBAIGRp ZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiArCQkJICAgIHNob3df YnVpbGRfaWRfdmVyYm9zZSwKICsJCQkgICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiArCi0rICBn ZGI6Om9ic2VydmVyczo6ZXhlY3V0YWJsZV9jaGFuZ2VkLmF0dGFjaCAoZGVidWdfcHJpbnRfZXhl Y3V0YWJsZV9jaGFuZ2VkKTsKKysgIGdkYjo6b2JzZXJ2ZXJzOjpleGVjdXRhYmxlX2NoYW5nZWQu YXR0YWNoIChkZWJ1Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkLWlkIik7CiArfQogZGlmZiAtLWdp dCBhL2dkYi9idWlsZC1pZC5oIGIvZ2RiL2J1aWxkLWlkLmgKIC0tLSBhL2dkYi9idWlsZC1pZC5o CkBAIC05NTAsNyArOTUxLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5oIGIvZ2RiL2J1 aWxkLWlkLmgKICBleHRlcm4gZ2RiX2JmZF9yZWZfcHRyIGJ1aWxkX2lkX3RvX2RlYnVnX2JmZCAo c2l6ZV90IGJ1aWxkX2lkX2xlbiwKIC0JCQkJCSAgICAgIGNvbnN0IGJmZF9ieXRlICpidWlsZF9p ZCk7CiArCQkJCQkgICAgICBjb25zdCBiZmRfYnl0ZSAqYnVpbGRfaWQsCi0rCQkJCQkgICAgICBj aGFyICoqbGlua19yZXR1cm4pOworKwkJCQkJICAgICAgY2hhciAqKmxpbmtfcmV0dXJuID0gTlVM TCk7CiArCiArZXh0ZXJuIGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3Qg YmZkX2J1aWxkX2lkICpidWlsZF9pZCwKICsJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuKTsKQEAg LTk3OCw5ICs5NzksOSBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmggYi9nZGIvYnVpbGQt aWQuaAogZGlmZiAtLWdpdCBhL2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZyZWFkLmMKIC0tLSBh L2dkYi9jb2ZmcmVhZC5jCiArKysgYi9nZGIvY29mZnJlYWQuYwotQEAgLTcwOSw3ICs3MDksOCBA QCBjb2ZmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN5bWZpbGVfYWRk X2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCitAQCAtNzEwLDcgKzcxMCw4IEBAIGNvZmZfc3ltZmlsZV9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9m bGFncykKICAgIC8qIFRyeSB0byBhZGQgc2VwYXJhdGUgZGVidWcgZmlsZSBpZiBubyBzeW1ib2xz IHRhYmxlIGZvdW5kLiAgICovCi0gICBpZiAoIW9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAo b2JqZmlsZSkpCisgICBpZiAoIW9iamZpbGUtPmhhc19wYXJ0aWFsX3N5bWJvbHMgKCkpCiAgICAg IHsKIC0gICAgICBzdGQ6OnN0cmluZyBkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2Zp bGVfYnlfYnVpbGRpZCAob2JqZmlsZSk7CiArICAgICAgc3RkOjpzdHJpbmcgZGVidWdmaWxlID0g ZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsCkBAIC0xMDAyLDcg KzEwMDMsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cuYyBiL2dkYi9jb3JlbG93LmMKICAj aW5jbHVkZSAiaW5mZXJpb3IuaCIKICAjaW5jbHVkZSAiaW5mcnVuLmgiCiAgI2luY2x1ZGUgInN5 bXRhYi5oIgotQEAgLTM2Miw2ICszNjYsOCBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJm ZCwgYXNlY3Rpb24gKmFzZWN0LCB2b2lkICpyZWdfc2VjdF9hcmcpCitAQCAtMzU2LDYgKzM2MCw4 IEBAIGFkZF90b190aHJlYWRfbGlzdCAoYXNlY3Rpb24gKmFzZWN0LCBhc2VjdGlvbiAqcmVnX3Nl Y3QpCiAgICAgIHN3aXRjaF90b190aHJlYWQgKHRocik7CQkJLyogWWVzLCBtYWtlIGl0IGN1cnJl bnQuICAqLwogIH0KICAKQEAgLTEwMTEsNyArMTAxMiw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29y ZWxvdy5jIGIvZ2RiL2NvcmVsb3cuYwogIC8qIElzc3VlIGEgbWVzc2FnZSBzYXlpbmcgd2UgaGF2 ZSBubyBjb3JlIHRvIGRlYnVnLCBpZiBGUk9NX1RUWS4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBA IC0zOTgsMTkgKzQwNCwyNSBAQCBjb3JlX2ZpbGVfY29tbWFuZCAoY29uc3QgY2hhciAqZmlsZW5h bWUsIGludCBmcm9tX3R0eSkKK0BAIC0zOTIsMTkgKzM5OCwyNiBAQCBjb3JlX2ZpbGVfY29tbWFu ZCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKICBzdGF0aWMgdm9pZAogIGxv Y2F0ZV9leGVjX2Zyb21fY29yZWZpbGVfYnVpbGRfaWQgKGJmZCAqYWJmZCwgaW50IGZyb21fdHR5 KQogIHsKQEAgLTEwMzEsMTYgKzEwMzIsMTcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb3JlbG93LmMg Yi9nZGIvY29yZWxvdy5jCiAgICAgICAgZXhlY19maWxlX2F0dGFjaCAoYmZkX2dldF9maWxlbmFt ZSAoZXhlY2JmZC5nZXQgKCkpLCBmcm9tX3R0eSk7CiAgICAgICAgc3ltYm9sX2ZpbGVfYWRkX21h aW4gKGJmZF9nZXRfZmlsZW5hbWUgKGV4ZWNiZmQuZ2V0ICgpKSwKICAJCQkgICAgc3ltZmlsZV9h ZGRfZmxhZyAoZnJvbV90dHkgPyBTWU1GSUxFX1ZFUkJPU0UgOiAwKSk7Ci0rICAgICAgaWYgKHN5 bWZpbGVfb2JqZmlsZSAhPSBOVUxMKQotKwlzeW1maWxlX29iamZpbGUtPmZsYWdzIHw9IE9CSkZf QlVJTERfSURfQ09SRV9MT0FERUQ7CisrICAgICAgaWYgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+ c3ltZmlsZV9vYmplY3RfZmlsZSAhPSBOVUxMKQorKwljdXJyZW50X3Byb2dyYW1fc3BhY2UtPnN5 bWZpbGVfb2JqZWN0X2ZpbGUtPmZsYWdzIHw9CisrCSAgT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURF RDsKICAgICAgfQogKyAgZWxzZQogKyAgICBkZWJ1Z19wcmludF9taXNzaW5nIChCVUlMRF9JRF9N QUlOX0VYRUNVVEFCTEVfRklMRU5BTUUsIGJ1aWxkX2lkX2ZpbGVuYW1lKTsKICB9CiAgCiAgLyog U2VlIGdkYmNvcmUuaC4gICovCi1AQCAtMTE4OSw0ICsxMjAxLDExIEBAIF9pbml0aWFsaXplX2Nv cmVsb3cgKCkKLSAgICAgICAgICAgIG1haW50ZW5hbmNlX3ByaW50X2NvcmVfZmlsZV9iYWNrZWRf bWFwcGluZ3MsCitAQCAtMTIwOSw0ICsxMjIyLDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKCkK KyAJICAgbWFpbnRlbmFuY2VfcHJpbnRfY29yZV9maWxlX2JhY2tlZF9tYXBwaW5ncywKICAJICAg XygiUHJpbnQgY29yZSBmaWxlJ3MgZmlsZS1iYWNrZWQgbWFwcGluZ3MuIiksCiAgCSAgICZtYWlu dGVuYW5jZXByaW50bGlzdCk7CiArCkBAIC0xMDU0LDcgKzEwNTYsNyBAQCBkaWZmIC0tZ2l0IGEv Z2RiL2NvcmVsb3cuYyBiL2dkYi9jb3JlbG93LmMKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50 ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwog KysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTIxMDc0LDYgKzIxMDc0LDI3IEBAIGluZm9y bWF0aW9uIGZpbGVzLgorQEAgLTIxNDE1LDYgKzIxNDE1LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVz LgogIAogIEBlbmQgdGFibGUKICAKQEAgLTExMDcsMTYgKzExMDksNyBAQCBkaWZmIC0tZ2l0IGEv Z2RiL2R3YXJmMi9pbmRleC1jYWNoZS5jIGIvZ2RiL2R3YXJmMi9pbmRleC1jYWNoZS5jCiBkaWZm IC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogLS0tIGEvZ2Ri L2R3YXJmMi9yZWFkLmMKICsrKyBiL2dkYi9kd2FyZjIvcmVhZC5jCi1AQCAtMjIyNSw3ICsyMjI1 LDcgQEAgZHdhcmYyX2dldF9kd3pfZmlsZSAoZHdhcmYyX3Blcl9iZmQgKnBlcl9iZmQpCi0gICAg IH0KLSAKLSAgIGlmIChkd3pfYmZkID09IE5VTEwpCi0tICAgIGR3el9iZmQgPSBidWlsZF9pZF90 b19kZWJ1Z19iZmQgKGJ1aWxkaWRfbGVuLCBidWlsZGlkKTsKLSsgICAgZHd6X2JmZCA9IGJ1aWxk X2lkX3RvX2RlYnVnX2JmZCAoYnVpbGRpZF9sZW4sIGJ1aWxkaWQsIE5VTEwpOwotIAotICAgaWYg KGR3el9iZmQgPT0gbnVsbHB0cikKLSAgICAgewotQEAgLTU5ODksNyArNTk4OSw3IEBAIGdldF9n ZGJfaW5kZXhfY29udGVudHNfZnJvbV9zZWN0aW9uIChvYmpmaWxlICpvYmosIFQgKnNlY3Rpb25f b3duZXIpCitAQCAtNTQ0Nyw3ICs1NDQ3LDcgQEAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9t X3NlY3Rpb24gKG9iamZpbGUgKm9iaiwgVCAqc2VjdGlvbl9vd25lcikKICBzdGF0aWMgZ2RiOjph cnJheV92aWV3PGNvbnN0IGdkYl9ieXRlPgogIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9j YWNoZSAob2JqZmlsZSAqb2JqLCBkd2FyZjJfcGVyX2JmZCAqZHdhcmYyX3Blcl9iZmQpCiAgewpA QCAtMTEyNSw3ICsxMTE4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2Ri L2R3YXJmMi9yZWFkLmMKICAgIGlmIChidWlsZF9pZCA9PSBudWxscHRyKQogICAgICByZXR1cm4g e307CiAgCi1AQCAtNjAwMiw3ICs2MDAyLDcgQEAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9t X2NhY2hlIChvYmpmaWxlICpvYmosIGR3YXJmMl9wZXJfYmZkICpkd2FyZjJfcGVyX2JmZCkKK0BA IC01NDYwLDcgKzU0NjAsNyBAQCBnZXRfZ2RiX2luZGV4X2NvbnRlbnRzX2Zyb21fY2FjaGUgKG9i amZpbGUgKm9iaiwgZHdhcmYyX3Blcl9iZmQgKmR3YXJmMl9wZXJfYmZkKQogIHN0YXRpYyBnZGI6 OmFycmF5X3ZpZXc8Y29uc3QgZ2RiX2J5dGU+CiAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9t X2NhY2hlX2R3eiAob2JqZmlsZSAqb2JqLCBkd3pfZmlsZSAqZHd6KQogIHsKQEAgLTExMzcsNyAr MTEzMCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVh ZC5jCiBkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKIC0tLSBhL2dk Yi9lbGZyZWFkLmMKICsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0xMjk4LDcgKzEyOTgsOSBAQCBl bGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxh Z3Mgc3ltZmlsZV9mbGFncykKK0BAIC0xMjcyLDcgKzEyNzIsOSBAQCBlbGZfc3ltZmlsZV9yZWFk IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFn cykKICAJICAgJiYgb2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9PSBOVUxMCiAgCSAg ICYmIG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCkKICAg ICAgewpAQCAtMTE0OCw3ICsxMTQxLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9n ZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgaWYgKGRlYnVnZmlsZS5lbXB0eSAoKSkKICAJZGVidWdm aWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAob2JqZmlsZSk7Ci1A QCAtMTMxMyw3ICsxMzE1LDcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIHN5bWZpbGVfYWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCitAQCAtMTI4Nyw3ICsxMjg5 LDcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN5bWZpbGVf YWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCiAgICAgICAgZWxzZQogIAl7CiAgCSAgaGFzX2R3YXJm MiA9IGZhbHNlOwpAQCAtMTE1Nyw3ICsxMTUwLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFk LmMgYi9nZGIvZWxmcmVhZC5jCiAgCiAgCSAgaWYgKGJ1aWxkX2lkICE9IG51bGxwdHIpCiAgCSAg ICB7Ci1AQCAtMTMzOCw2ICsxMzQwLDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorQEAgLTEzMTIs NiArMTMxNCwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg c3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKICAJCSAgICAgIGhhc19kd2FyZjIgPSB0 cnVlOwogIAkJICAgIH0KICAJCX0KQEAgLTExNzEsMTYgKzExNjQsMTYgQEAgZGlmZiAtLWdpdCBh L2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5jCiBkaWZmIC0tZ2l0IGEvZ2RiL2V4ZWMuYyBi L2dkYi9leGVjLmMKIC0tLSBhL2dkYi9leGVjLmMKICsrKyBiL2dkYi9leGVjLmMKLUBAIC0yNjQs NyArMjY0LDcgQEAgdmFsaWRhdGVfZXhlY19maWxlIChpbnQgZnJvbV90dHkpCi0gICByZW9wZW5f ZXhlY19maWxlICgpOworQEAgLTIzNyw3ICsyMzcsNyBAQCB2YWxpZGF0ZV9leGVjX2ZpbGUgKGlu dCBmcm9tX3R0eSkKICAgIGN1cnJlbnRfZXhlY19maWxlID0gZ2V0X2V4ZWNfZmlsZSAoMCk7CiAg Ci0tICBjb25zdCBiZmRfYnVpbGRfaWQgKmV4ZWNfZmlsZV9idWlsZF9pZCA9IGJ1aWxkX2lkX2Jm ZF9nZXQgKGV4ZWNfYmZkKTsKLSsgIGNvbnN0IGJmZF9idWlsZF9pZCAqZXhlY19maWxlX2J1aWxk X2lkID0gYnVpbGRfaWRfYmZkX3NoZHJfZ2V0IChleGVjX2JmZCk7CisgICBjb25zdCBiZmRfYnVp bGRfaWQgKmV4ZWNfZmlsZV9idWlsZF9pZAorLSAgICA9IGJ1aWxkX2lkX2JmZF9nZXQgKGN1cnJl bnRfcHJvZ3JhbV9zcGFjZS0+ZXhlY19iZmQgKCkpOworKyAgICA9IGJ1aWxkX2lkX2JmZF9zaGRy X2dldCAoY3VycmVudF9wcm9ncmFtX3NwYWNlLT5leGVjX2JmZCAoKSk7CiAgICBpZiAoZXhlY19m aWxlX2J1aWxkX2lkICE9IG51bGxwdHIpCiAgICAgIHsKICAgICAgICAvKiBQcmVwZW5kIHRoZSB0 YXJnZXQgcHJlZml4LCB0byBmb3JjZSBnZGJfYmZkX29wZW4gdG8gb3BlbiB0aGUKLUBAIC0yNzcs NyArMjc3LDcgQEAgdmFsaWRhdGVfZXhlY19maWxlIChpbnQgZnJvbV90dHkpCitAQCAtMjUwLDcg KzI1MCw3IEBAIHZhbGlkYXRlX2V4ZWNfZmlsZSAoaW50IGZyb21fdHR5KQogICAgICAgIGlmIChh YmZkICE9IG51bGxwdHIpCiAgCXsKICAJICBjb25zdCBiZmRfYnVpbGRfaWQgKnRhcmdldF9leGVj X2ZpbGVfYnVpbGRfaWQKQEAgLTExOTIsNyArMTE4NSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZXhl Yy5jIGIvZ2RiL2V4ZWMuYwogZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5oIGIvZ2RiL29iamZp bGVzLmgKIC0tLSBhL2dkYi9vYmpmaWxlcy5oCiArKysgYi9nZGIvb2JqZmlsZXMuaAotQEAgLTcx NCw2ICs3MTQsMTAgQEAgc3RydWN0IG9iamZpbGUKK0BAIC04MTIsNiArODEyLDEwIEBAIHN0cnVj dCBvYmpmaWxlCiAgICBib29sIHNraXBfaml0X3N5bWJvbF9sb29rdXAgPSBmYWxzZTsKICB9Owog IApAQCAtMTIzNSw3ICsxMjI4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9n ZGIvc29saWItc3ZyNC5jCiAgCiAgc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0 X2ZldGNoX2xpbmtfbWFwX29mZnNldHMgKHZvaWQpOwogIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xp bmtfbWFwX29mZnNldHMgKHZvaWQpOwotQEAgLTEzMzgsOSArMTMzOSw1MSBAQCBzdnI0X3JlYWRf c29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2X2xt LAorQEAgLTEzNDgsOSArMTM0OSw1MSBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICpp bmZvLCBDT1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAogIAkgIGNvbnRpbnVlOwogIAl9 CiAgCkBAIC0xMjc3LDggKzEyNzAsOCBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBi L2dkYi9zb2xpYi1zdnI0LmMKICsJCSAgIGluc3RlYWQpIGlmIHRoZSBvbi1kaXNrIGZpbGVzIG5v IGxvbmdlciBtYXRjaCB0aGUKICsJCSAgIHJ1bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KICsK LSsJCWlmIChzeW1maWxlX29iamZpbGUgIT0gTlVMTAotKwkJICAgICYmIChzeW1maWxlX29iamZp bGUtPmZsYWdzCisrCQlpZiAoY3VycmVudF9wcm9ncmFtX3NwYWNlLT5zeW1maWxlX29iamVjdF9m aWxlICE9IE5VTEwKKysJCSAgICAmJiAoY3VycmVudF9wcm9ncmFtX3NwYWNlLT5zeW1maWxlX29i amVjdF9maWxlLT5mbGFncwogKwkJCSYgT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURFRCkgIT0gMCkK ICsJCSAgbmV3b2JqLT5zb19uYW1lWzBdID0gMDsKICsJICAgICAgfQpAQCAtMTI5Myw3ICsxMjg2 LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCiBk aWZmIC0tZ2l0IGEvZ2RiL3NvdXJjZS5jIGIvZ2RiL3NvdXJjZS5jCiAtLS0gYS9nZGIvc291cmNl LmMKICsrKyBiL2dkYi9zb3VyY2UuYwotQEAgLTExNjUsNyArMTE2NSw3IEBAIG9wZW5fc291cmNl X2ZpbGUgKHN0cnVjdCBzeW10YWIgKnMpCitAQCAtMTE3OCw3ICsxMTc4LDcgQEAgb3Blbl9zb3Vy Y2VfZmlsZSAoc3RydWN0IHN5bXRhYiAqcykKICAJICAgICAgc3JjcGF0aCArPSBzLT5maWxlbmFt ZTsKICAJICAgIH0KICAKQEAgLTEzMDUsOSArMTI5OCw5IEBAIGRpZmYgLS1naXQgYS9nZGIvc291 cmNlLmMgYi9nZGIvc291cmNlLmMKIGRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5oIGIvZ2RiL3N5 bWZpbGUuaAogLS0tIGEvZ2RiL3N5bWZpbGUuaAogKysrIGIvZ2RiL3N5bWZpbGUuaAotQEAgLTU1 MCwxMiArNTUwLDE4IEBAIHZvaWQgZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcKLSB2b2lkIG1hcF9z eW1ib2xfZmlsZW5hbWVzIChzeW1ib2xfZmlsZW5hbWVfZnR5cGUgKmZ1biwgdm9pZCAqZGF0YSwK LSAJCQkgICBpbnQgbmVlZF9mdWxsbmFtZSk7CitAQCAtMzMyLDEyICszMzIsMTggQEAgYm9vbCBl eHBhbmRfc3ltdGFic19tYXRjaGluZworIHZvaWQgbWFwX3N5bWJvbF9maWxlbmFtZXMgKGdkYjo6 ZnVuY3Rpb25fdmlldzxzeW1ib2xfZmlsZW5hbWVfZnR5cGU+IGZ1biwKKyAJCQkgICBib29sIG5l ZWRfZnVsbG5hbWUpOwogIAogKwogIC8qIFRhcmdldC1hZ25vc3RpYyBmdW5jdGlvbiB0byBsb2Fk IHRoZSBzZWN0aW9ucyBvZiBhbiBleGVjdXRhYmxlIGludG8gbWVtb3J5LgpAQCAtMTMyMSw5ICsx MzE0LDkgQEAgZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCiArZXh0 ZXJuIHZvaWQgZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBj aGFyICpkZWJ1Zyk7CiArI2RlZmluZSBCVUlMRF9JRF9NQUlOX0VYRUNVVEFCTEVfRklMRU5BTUUg XygidGhlIG1haW4gZXhlY3V0YWJsZSBmaWxlIikKICsKLSAvKiBGcm9tIGR3YXJmMnJlYWQuYyAq LworIC8qIEZyb20gbWluaWRlYnVnLmMuICAqLwogIAotIC8qIE5hbWVzIGZvciBhIGR3YXJmMiBk ZWJ1Z2dpbmcgc2VjdGlvbi4gIFRoZSBmaWVsZCBOT1JNQUwgaXMgdGhlIG5vcm1hbAorIGV4dGVy biBnZGJfYmZkX3JlZl9wdHIgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2luX3NlY3Rpb24gKHN0 cnVjdCBvYmpmaWxlICopOwogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29y ZWZpbGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAKIC0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2NvcmVmaWxlLmV4cApAQCAtMTM2NCw3ICsxMzU3LDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9jb3JlZmkKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQtaGlz dG9yeS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQtaGlzdG9yeS5leHAKIC0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC1oaXN0b3J5LmV4cAogKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nZGJpbml0LWhpc3RvcnkuZXhwCi1AQCAtMTgxLDcgKzE4MSw4 IEBAIHByb2MgdGVzdF9lbXB0eV9oaXN0b3J5X2ZpbGVuYW1lIHsgfSB7CitAQCAtMTg1LDcgKzE4 NSw4IEBAIHByb2MgdGVzdF9lbXB0eV9oaXN0b3J5X2ZpbGVuYW1lIHsgfSB7CiAgICAgIGdsb2Jh bCBlbnYKICAgICAgZ2xvYmFsIGdkYl9wcm9tcHQKICAKQEAgLTEzODgsNyArMTM4MSw3IEBAIGRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL25ldy11aS1wZW5kaW5nLWlucHV0LmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ri LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLUBAIC0yMDExLDYgKzIw MTEsMTcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworQEAgLTIxMzAsNiArMjEzMCwx NyBAQCBwcm9jIGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCX0KICAgICAgfQogIApAQCAtMTQw OSw3ICsxNDAyLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIv bWktc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGli L21pLXN1cHBvcnQuZXhwCi1AQCAtMzA4LDYgKzMwOCwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2Ri X3N0YXJ0IHsgYXJncyB9IHsKK0BAIC0zMjIsNiArMzIyLDE2IEBAIHByb2MgZGVmYXVsdF9taV9n ZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0 aCB0byAwLiIKICAJfQogICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWNjYWNoZS13b3JrYXJvdW5k LnBhdGNoIGIvZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoCmluZGV4IDYwYmM1Y2MuLjgwMmZh MmIgMTAwNjQ0Ci0tLSBhL2dkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAorKysgYi9nZGItY2Nh Y2hlLXdvcmthcm91bmQucGF0Y2gKQEAgLTksOCArOSw4IEBAIFN1YmplY3Q6IGdkYi1jY2FjaGUt d29ya2Fyb3VuZC5wYXRjaAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbWFj c2NwLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbWFjc2NwLmV4cAogLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9tYWNzY3AuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L21hY3NjcC5leHAKLUBAIC0yNSw2ICsyNSwxNCBAQCBpZiB7IFt0ZXN0X2NvbXBpbGVyX2luZm8g ImdjYy0qIl0gfHwgW3Rlc3RfY29tcGlsZXJfaW5mbyAiY2xhbmctKiJdIH0gewotICAgICBsYXBw ZW5kIG9wdGlvbnMgYWRkaXRpb25hbF9mbGFncz0tZzMKK0BAIC0yNyw2ICsyNywxNCBAQCBpZiB7 IFt0ZXN0X2NvbXBpbGVyX2luZm8gImdjYy0qIl0gfSB7CisgICAgIGxhcHBlbmQgb3B0aW9ucyBh ZGRpdGlvbmFsX2ZsYWdzPS1mZGVidWctbWFjcm8KICB9CiAgCiArIyBXb3JrYXJvdW5kIGNjYWNo ZSBtYWtpbmcgbGluZW5vIG5vbi16ZXJvIGZvciBjb21tYW5kLWxpbmUgZGVmaW5pdGlvbnMuCgpk aWZmIC0tZ2l0IGEvZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2ggYi9nZGItY29udGFpbmVyLXJo LXBrZy5wYXRjaAppbmRleCAwNGE3ZjNjLi4wOTk2NDk1IDEwMDY0NAotLS0gYS9nZGItY29udGFp bmVyLXJoLXBrZy5wYXRjaAorKysgYi9nZGItY29udGFpbmVyLXJoLXBrZy5wYXRjaApAQCAtOSw3 ICs5LDcgQEAgU3ViamVjdDogZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKIGRpZmYgLS1naXQg YS9nZGIvcmVtb3RlLmMgYi9nZGIvcmVtb3RlLmMKIC0tLSBhL2dkYi9yZW1vdGUuYwogKysrIGIv Z2RiL3JlbW90ZS5jCi1AQCAtMTQwMzEsNyArMTQwMzEsMTcgQEAgcmVtb3RlX3RhcmdldDo6cGlk X3RvX2V4ZWNfZmlsZSAoaW50IHBpZCkKK0BAIC0xNDI5MCw3ICsxNDI5MCwxNyBAQCByZW1vdGVf dGFyZ2V0OjpwaWRfdG9fZXhlY19maWxlIChpbnQgcGlkKQogICAgY2hhciAqYW5uZXggPSBOVUxM OwogIAogICAgaWYgKHBhY2tldF9zdXBwb3J0IChQQUNLRVRfcVhmZXJfZXhlY19maWxlKSAhPSBQ QUNLRVRfRU5BQkxFKQoKZGlmZiAtLWdpdCBhL2dkYi1kb250LW92ZXJ3cml0ZS1mc2dzYmFzZS1t MzIucGF0Y2ggYi9nZGItZG9udC1vdmVyd3JpdGUtZnNnc2Jhc2UtbTMyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTlhZDQ5Li4wMDAwMDAwCi0tLSBhL2dkYi1kb250LW92 ZXJ3cml0ZS1mc2dzYmFzZS1tMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBA QAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRv bSBkZSBWcmllcyA8dGRldnJpZXNAc3VzZS5kZT4KLURhdGU6IFR1ZSwgMSBKdW4gMjAyMSAxMDox NDozMSAtMDcwMAotU3ViamVjdDogZ2RiLWRvbnQtb3ZlcndyaXRlLWZzZ3NiYXNlLW0zMi5wYXRj aAotCi07OyBCYWNrcG9ydCAiW2dkYi9zZXJ2ZXJdIERvbid0IG92ZXJ3cml0ZSBmcy9nc19iYXNl IHdpdGggLW0zMiIKLTs7IChUb20gZGUgVnJpZXMpCi0KLUNvbnNpZGVyIGEgbWluaW1hbCB0ZXN0 LWNhc2UgdGVzdC5jOgotLi4uCi1pbnQgbWFpbiAodm9pZCkgeyByZXR1cm4gMDsgfQotLi4uCi1j b21waWxlZCB3aXRoIC1tMzI6Ci0uLi4KLSQgZ2NjIHRlc3QuYyAtbTMyCi0uLi4KLQotV2hlbiBy dW5uaW5nIHRoZSBleGVjIHVzaW5nIGdkYnNlcnZlciBvbiBvcGVuU1VTRSBGYWN0b3J5IChjdXJy ZW50bHkgcnVubmluZyBhCi1saW51eCBrZXJuZWwgdmVyc2lvbiA1LjEwLjUpOgotLi4uCi0kIGdk YnNlcnZlciBsb2NhbGhvc3Q6MTIzNDUgYS5vdXQKLS4uLgotdG8gd2hpY2ggd2UgY29ubmVjdCBp biBhIGdkYiBzZXNzaW9uLCB3ZSBydW4gaW50byBhIHNlZ2ZhdWx0IGluIHRoZSBpbmZlcmlvcjoK LS4uLgotJCBnZGIgLWJhdGNoIC1xIC1leCAidGFyZ2V0IHJlbW90ZSBsb2NhbGhvc3Q6MTIzNDUi IC1leCBjb250aW51ZQotUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHU0VHViwgU2VnbWVudGF0 aW9uIGZhdWx0LgotMHhmN2RkOGJkMiBpbiBpbml0X2NhY2hlaW5mbyAoKSBhdCAuLi9zeXNkZXBz L3g4Ni9jYWNoZWluZm8uYzo3NjEKLS4uLgotCi1UaGUgc2VnZmF1bHQgaXMgY2F1c2VkIGJ5IGdk YnNlcnZlciBvdmVyd3JpdGluZyAkZ3NfYmFzZSB3aXRoIDAgdXNpbmcKLVBUUkFDRV9TRVRSRUdT LiAgQWZ0ZXIgaXQgaXMgb3ZlcndyaXR0ZW4sIHRoZSBuZXh0IHVzZSBvZiAkZ3MgaW4gdGhlIGlu ZmVyaW9yCi13aWxsIHRyaWdnZXIgdGhlIHNlZ2ZhdWx0LgotCi1CZWZvcmUgbGludXgga2VybmVs IHZlcnNpb24gNS45LCB0aGUgdmFsdWUgdXNlZCBieSBQVFJBQ0VfU0VUUkVHUyBmb3IgJGdzX2Jh c2UKLXdhcyBpZ25vcmVkLCBidXQgc3RhcnRpbmcgdmVyc2lvbiA1LjksIHRoZSBsaW51eCBrZXJu ZWwgaGFzIHN1cHBvcnQgZm9yCi1pbnRlbCBhcmNoaXRlY3R1cmUgZXh0ZW5zaW9uIEZTR1NCQVNF LCB3aGljaCBhbGxvd3MgdXNlcnMgdG8gbW9kaWZ5ICRnc19iYXNlLAotYW5kIGNvbnNlcXVlbnRs eSBQVFJBQ0VfU0VUUkVHUyBjYW4gbm8gbG9uZ2VyIGlnbm9yZSB0aGUgJGdzX2Jhc2UgdmFsdWUu Ci0KLVRoZSBvdmVyd3JpdGUgb2YgJGdzX2Jhc2Ugd2l0aCAwIGlzIGRvbmUgYnkgYSBtZW1zZXQg aW4geDg2X2ZpbGxfZ3JlZ3NldCwKLXdoaWNoIHdhcyBhZGRlZCBpbiBjb21taXQgOWUwYWE2NGY1 NTEgIkZpeCBnZGJzZXJ2ZXIgcUdldFRMU0FkZHIgZm9yCi14ODZfNjQgLW0zMiIuICBUaGUgbWVt c2V0IGludGVuZHMgdG8gemVyby1leHRlbmQgMzItYml0IHJlZ2lzdGVycyB0aGF0IGFyZQotdHJh Y2tlZCBpbiB0aGUgcmVnY2FjaGUgdG8gNjQtYml0IHdoZW4gd3JpdGluZyB0aGVtIGludG8gdGhl IFBUUkFDRV9TRVRSRUdTCi1kYXRhIGFyZ3VtZW50LiAgQnV0IGluIGFkZGl0aW9uLCBpdCBvdmVy d3JpdGVzIG90aGVyIHJlZ2lzdGVycyB0aGF0IGFyZQotbm90IHRyYWNrZWQgaW4gdGhlIHJlZ2Nh Y2hlLCBzdWNoIGFzICRnc19iYXNlLgotCi1GaXggdGhlIHNlZ2ZhdWx0IGJ5IHJlZG9pbmcgdGhl IGZpeCBmcm9tIGNvbW1pdCA5ZTBhYTY0ZjU1MSBpbiBtaW5pbWFsIGZvcm0uCi0KLVRlc3RlZCBv biB4ODZfNjQtbGludXg6Ci0tIG9wZW5TVVNFIExlYXAgMTUuMiAodXNpbmcga2VybmVsIHZlcnNp b24gNS4zLjE4KToKLSAgLSBuYXRpdmUKLSAgLSBnZGJzZXJ2ZXIgLW0zMgotICAtIC1tMzIKLS0g b3BlblNVU0UgRmFjdG9yeSAodXNpbmcga2VybmVsIHZlcnNpb24gNS4xMC41KToKLSAgLSBuYXRp dmUKLSAgLSBtMzIKLQotZ2Ric2VydmVyL0NoYW5nZUxvZzoKLQotMjAyMS0wMS0yMCAgVG9tIGRl IFZyaWVzICA8dGRldnJpZXNAc3VzZS5kZT4KLQotCSogbGludXgteDg2LWxvdy5jYyAoY29sbGVj dF9yZWdpc3Rlcl9pMzg2KTogTmV3IGZ1bmN0aW9uLgotCSh4ODZfZmlsbF9ncmVnc2V0KTogIFJl bW92ZSBtZW1zZXQuICBVc2UgY29sbGVjdF9yZWdpc3Rlcl9pMzg2LgotCi1kaWZmIC0tZ2l0IGEv Z2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuY2MgYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jYwot LS0tIGEvZ2Ric2VydmVyL2xpbnV4LXg4Ni1sb3cuY2MKLSsrKyBiL2dkYnNlcnZlci9saW51eC14 ODYtbG93LmNjCi1AQCAtMzk3LDYgKzM5NywzNSBAQCB4ODZfdGFyZ2V0Ojpsb3dfY2Fubm90X2Zl dGNoX3JlZ2lzdGVyIChpbnQgcmVnbm8pCi0gICByZXR1cm4gcmVnbm8gPj0gSTM4Nl9OVU1fUkVH UzsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStjb2xsZWN0X3JlZ2lzdGVyX2kzODYgKHN0cnVjdCBy ZWdjYWNoZSAqcmVnY2FjaGUsIGludCByZWdubywgdm9pZCAqYnVmKQotK3sKLSsgIGNvbGxlY3Rf cmVnaXN0ZXIgKHJlZ2NhY2hlLCByZWdubywgYnVmKTsKLSsKLSsjaWZkZWYgX194ODZfNjRfXwot KyAgLyogSW4gY2FzZSBvZiB4ODZfNjQgLW0zMiwgY29sbGVjdF9yZWdpc3RlciBvbmx5IHdyaXRl cyA0IGJ5dGVzLCBidXQgdGhlCi0rICAgICBzcGFjZSByZXNlcnZlZCBpbiBidWYgZm9yIHRoZSBy ZWdpc3RlciBpcyA4IGJ5dGVzLiAgTWFrZSBzdXJlIHRoZSBlbnRpcmUKLSsgICAgIHJlc2VydmVk IHNwYWNlIGlzIGluaXRpYWxpemVkLiAgKi8KLSsKLSsgIGdkYl9hc3NlcnQgKHJlZ2lzdGVyX3Np emUgKHJlZ2NhY2hlLT50ZGVzYywgcmVnbm8pID09IDQpOwotKwotKyAgaWYgKHJlZ25vID09IFJB WCkKLSsgICAgewotKyAgICAgIC8qIFNpZ24gZXh0ZW5kIEVBWCB2YWx1ZSB0byBhdm9pZCBwb3Rl bnRpYWwgc3lzY2FsbCByZXN0YXJ0Ci0rCSBwcm9ibGVtcy4KLSsKLSsJIFNlZSBhbWQ2NF9saW51 eF9jb2xsZWN0X25hdGl2ZV9ncmVnc2V0KCkgaW4KLSsJIGdkYi9hbWQ2NC1saW51eC1uYXQuYyBm b3IgYSBkZXRhaWxlZCBleHBsYW5hdGlvbi4gICovCi0rICAgICAgKihpbnQ2NF90ICopIGJ1ZiA9 ICooaW50MzJfdCAqKSBidWY7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIFpl cm8tZXh0ZW5kLiAgKi8KLSsgICAgICAqKHVpbnQ2NF90ICopIGJ1ZiA9ICoodWludDMyX3QgKikg YnVmOwotKyAgICB9Ci0rI2VuZGlmCi0rfQotKwotIHN0YXRpYyB2b2lkCi0geDg2X2ZpbGxfZ3Jl Z3NldCAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQotIHsKLUBAIC00MTEs MzIgKzQ0MCwxNCBAQCB4ODZfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LCB2b2lkICpidWYpCi0gCi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0tCi0tICAvKiAzMi1iaXQg aW5mZXJpb3IgcmVnaXN0ZXJzIG5lZWQgdG8gYmUgemVyby1leHRlbmRlZC4KLS0gICAgIENhbGxl cnMgd291bGQgcmVhZCB1bmluaXRpYWxpemVkIG1lbW9yeSBvdGhlcndpc2UuICAqLwotLSAgbWVt c2V0IChidWYsIDB4MDAsIFg4Nl82NF9VU0VSX1JFR1MgKiA4KTsKLSAjZW5kaWYKLSAKLSAgIGZv ciAoaSA9IDA7IGkgPCBJMzg2X05VTV9SRUdTOyBpKyspCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIg KHJlZ2NhY2hlLCBpLCAoKGNoYXIgKikgYnVmKSArIGkzODZfcmVnbWFwW2ldKTsKLS0KLS0gIGNv bGxlY3RfcmVnaXN0ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJvcmlnX2VheCIsCi0tCQkJICAgICgo Y2hhciAqKSBidWYpICsgT1JJR19FQVggKiBSRUdTSVpFKTsKLSsgICAgY29sbGVjdF9yZWdpc3Rl cl9pMzg2IChyZWdjYWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBpMzg2X3JlZ21hcFtpXSk7Ci0g Ci0tI2lmZGVmIF9feDg2XzY0X18KLS0gIC8qIFNpZ24gZXh0ZW5kIEVBWCB2YWx1ZSB0byBhdm9p ZCBwb3RlbnRpYWwgc3lzY2FsbCByZXN0YXJ0Ci0tICAgICBwcm9ibGVtcy4gCi0tCi0tICAgICBT ZWUgYW1kNjRfbGludXhfY29sbGVjdF9uYXRpdmVfZ3JlZ3NldCgpIGluIGdkYi9hbWQ2NC1saW51 eC1uYXQuYwotLSAgICAgZm9yIGEgZGV0YWlsZWQgZXhwbGFuYXRpb24uICAqLwotLSAgaWYgKHJl Z2lzdGVyX3NpemUgKHJlZ2NhY2hlLT50ZGVzYywgMCkgPT0gNCkKLS0gICAgewotLSAgICAgIHZv aWQgKnB0ciA9ICgoZ2RiX2J5dGUgKikgYnVmCi0tICAgICAgICAgICAgICAgICAgICsgaTM4Nl9y ZWdtYXBbZmluZF9yZWdubyAocmVnY2FjaGUtPnRkZXNjLCAiZWF4IildKTsKLS0KLS0gICAgICAq KGludDY0X3QgKikgcHRyID0gKihpbnQzMl90ICopIHB0cjsKLS0gICAgfQotLSNlbmRpZgotKyAg LyogSGFuZGxlIE9SSUdfRUFYLCB3aGljaCBpcyBub3QgaW4gaTM4Nl9yZWdtYXAuICAqLwotKyAg Y29sbGVjdF9yZWdpc3Rlcl9pMzg2IChyZWdjYWNoZSwgZmluZF9yZWdubyAocmVnY2FjaGUtPnRk ZXNjLCAib3JpZ19lYXgiKSwKLSsJCQkgKChjaGFyICopIGJ1ZikgKyBPUklHX0VBWCAqIFJFR1NJ WkUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZAoKZGlmZiAtLWdpdCBhL2dkYi1mZWRvcmEtbGlibmN1 cnNlc3cucGF0Y2ggYi9nZGItZmVkb3JhLWxpYm5jdXJzZXN3LnBhdGNoCmluZGV4IDdjNjIwZmIu LjEwNzEwYjkgMTAwNjQ0Ci0tLSBhL2dkYi1mZWRvcmEtbGlibmN1cnNlc3cucGF0Y2gKKysrIGIv Z2RiLWZlZG9yYS1saWJuY3Vyc2Vzdy5wYXRjaApAQCAtMTIsNyArMTIsNyBAQCBodHRwczovL2J1 Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTEyNzA1MzQKIGRpZmYgLS1naXQgYS9n ZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogLS0tIGEvZ2RiL2NvbmZpZ3VyZQogKysrIGIv Z2RiL2NvbmZpZ3VyZQotQEAgLTk2NDksNiArOTY0OSw3IEBAIGlmIHRlc3QgeCIkcHJlZmVyX2N1 cnNlcyIgPSB4eWVzOyB0aGVuCitAQCAtOTU0NCw2ICs5NTQ0LDcgQEAgaWYgdGVzdCB4IiRwcmVm ZXJfY3Vyc2VzIiA9IHh5ZXM7IHRoZW4KICAgICMgc2VhcmNoIC91c3IvbG9jYWwvaW5jbHVkZSwg aWYgbmN1cnNlcyBpcyBpbnN0YWxsZWQgaW4gL3Vzci9sb2NhbC4gIEEKICAgICMgZGVmYXVsdCBp bnN0YWxsYXRpb24gb2YgbmN1cnNlcyBvbiBhbHBoYSotZGVjLW9zZiogd2lsbCBsZWFkIHRvIHN1 Y2gKICAgICMgYSBzaXR1YXRpb24uCkBAIC0yMCw3ICsyMCw3IEBAIGRpZmYgLS1naXQgYS9nZGIv Y29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGlu ZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIHdhZGRzdHIiID4m NQogICRhc19lY2hvX24gImNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgd2FkZHN0ci4u LiAiID4mNjsgfQogIGlmICR7YWNfY3Zfc2VhcmNoX3dhZGRzdHIrOn0gZmFsc2U7IHRoZW4gOgot QEAgLTk2NzMsNyArOTY3NCw3IEBAIHJldHVybiB3YWRkc3RyICgpOworQEAgLTk1NjgsNyArOTU2 OSw3IEBAIHJldHVybiB3YWRkc3RyICgpOwogICAgcmV0dXJuIDA7CiAgfQogIF9BQ0VPRgpAQCAt MjksNyArMjksNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUK ICAgIGlmIHRlc3QgLXogIiRhY19saWIiOyB0aGVuCiAgICAgIGFjX3Jlcz0ibm9uZSByZXF1aXJl ZCIKICAgIGVsc2UKLUBAIC05NzQ3LDYgKzk3NDgsNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAt OTY0Miw2ICs5NjQzLDcgQEAgY2FzZSAkaG9zdF9vcyBpbgogIGVzYWMKICAKICAjIFRoZXNlIGFy ZSB0aGUgbGlicmFyaWVzIGNoZWNrZWQgYnkgUmVhZGxpbmUuCkBAIC0zNyw3ICszNyw3IEBAIGRp ZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogIHsgJGFzX2VjaG8gIiRh c19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmlu ZyB0Z2V0ZW50IiA+JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWlu aW5nIHRnZXRlbnQuLi4gIiA+JjY7IH0KICBpZiAke2FjX2N2X3NlYXJjaF90Z2V0ZW50Kzp9IGZh bHNlOyB0aGVuIDoKLUBAIC05NzcxLDcgKzk3NzMsNyBAQCByZXR1cm4gdGdldGVudCAoKTsKK0BA IC05NjY2LDcgKzk2NjgsNyBAQCByZXR1cm4gdGdldGVudCAoKTsKICAgIHJldHVybiAwOwogIH0K ICBfQUNFT0YKQEAgLTQ5LDcgKzQ5LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9n ZGIvY29uZmlndXJlCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1 cmUuYWMKIC0tLSBhL2dkYi9jb25maWd1cmUuYWMKICsrKyBiL2dkYi9jb25maWd1cmUuYWMKLUBA IC03MTIsNyArNzEyLDggQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9IHh5ZXM7IHRoZW4K K0BAIC03MzYsNyArNzM2LDggQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9IHh5ZXM7IHRo ZW4KICAgICMgc2VhcmNoIC91c3IvbG9jYWwvaW5jbHVkZSwgaWYgbmN1cnNlcyBpcyBpbnN0YWxs ZWQgaW4gL3Vzci9sb2NhbC4gIEEKICAgICMgZGVmYXVsdCBpbnN0YWxsYXRpb24gb2YgbmN1cnNl cyBvbiBhbHBoYSotZGVjLW9zZiogd2lsbCBsZWFkIHRvIHN1Y2gKICAgICMgYSBzaXR1YXRpb24u CkBAIC01OSw3ICs1OSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmFjIGIvZ2RiL2Nv bmZpZ3VyZS5hYwogIAogICAgaWYgdGVzdCAiJGFjX2N2X3NlYXJjaF93YWRkc3RyIiAhPSBubzsg dGhlbgogICAgICBjdXJzZXNfZm91bmQ9eWVzCi1AQCAtNzU0LDcgKzc1NSw4IEBAIGNhc2UgJGhv c3Rfb3MgaW4KK0BAIC03NzgsNyArNzc5LDggQEAgY2FzZSAkaG9zdF9vcyBpbgogIGVzYWMKICAK ICAjIFRoZXNlIGFyZSB0aGUgbGlicmFyaWVzIGNoZWNrZWQgYnkgUmVhZGxpbmUuCgpkaWZmIC0t Z2l0IGEvZ2RiLWdkYjI3NzQzLXBzeW10YWItaW1wb3J0ZWQtdW5pdC5wYXRjaCBiL2dkYi1nZGIy Nzc0My1wc3ltdGFiLWltcG9ydGVkLXVuaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGMxMjliNmQuLjAwMDAwMDAKLS0tIGEvZ2RiLWdkYjI3NzQzLXBzeW10YWItaW1wb3J0 ZWQtdW5pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi1Gcm9tIEZFRE9S QV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVG9tIFRyb21leSA8dHJv bWV5QGFkYWNvcmUuY29tPgotRGF0ZTogRnJpLCAyMyBBcHIgMjAyMSAxMToyODo0OCAtMDYwMAot U3ViamVjdDogZ2RiLWdkYjI3NzQzLXBzeW10YWItaW1wb3J0ZWQtdW5pdC5wYXRjaAotCi07OyBC YWNrcG9ydCAiRml4IGNyYXNoIHdoZW4gZXhwYW5kaW5nIHBhcnRpYWwgc3ltdGFicyB3aXRoIERX X1RBR19pbXBvcnRlZF91bml0IgotOzsgKFRvbSBUcm9tZXksIGdkYi8yNzc0MykKLQotICAgRnJv bSBlN2Q3N2NlMGM0MDhlNzAxOWY5ODg1YjhiZTY0YzljZGI0NmRkMzEyIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotICAgU3ViamVjdDogW1BBVENIXSBGaXggY3Jhc2ggd2hlbiBleHBhbmRpbmcg cGFydGlhbCBzeW10YWJzIHdpdGgKLSBEV19UQUdfaW1wb3J0ZWRfdW5pdAotCi1QUiBnZGIvMjc3 NDMgcG9pbnRzIG91dCBhIGdkYiBjcmFzaCB3aGVuIGV4cGFuZGluZyBwYXJ0aWFsIHN5bXRhYnMs Ci13aGVyZSBvbmUgb2YgdGhlIGNvbXBpbGF0aW9uIHVuaXRzIHVzZXMgRFdfVEFHX2ltcG9ydGVk X3VuaXQuCi0KLVRoZSBidWcgaXMgdGhhdCBwYXJ0aWFsX21hcF9leHBhbmRfYXBwbHkgZXhwZWN0 cyBvbmx5IHRvIGJlIGNhbGxlZCBmb3IKLXRoZSBvdXRlcm1vc3QgcHN5bXRhYi4gIEhvd2V2ZXIs IGZpbGVuYW1lIHNlYXJjaGluZyBkb2Vzbid0IChhbmQKLXByb2JhYmx5IHNob3VsZG4ndCkgZ3Vh cmFudGVlIHRoaXMuICBUaGUgZml4IGlzIHRvIHdhbGsgdXB3YXJkIHRvIGZpbmQKLXRoZSBvdXRl cm1vc3QgQ1UuCi0KLUEgbmV3IHRlc3QgY2FzZSBpcyBpbmNsdWRlZC4gIEl0IGlzIG1vc3RseSBj b3BpZWQgZnJvbSBvdGhlciB0ZXN0Ci1jYXNlcywgd2hpY2ggcmVhbGx5IHNwZWQgdXAgdGhlIGVm Zm9ydC4KLQotVGhpcyBidWcgZG9lcyBub3Qgb2NjdXIgb24gdHJ1bmsuICBUaGVyZSwKLXBzeW1f bWFwX3N5bXRhYnNfbWF0Y2hpbmdfZmlsZW5hbWUgaXMgZ29uZSwgcmVwbGFjZWQgYnkKLXBzeW1i b2xfZnVuY3Rpb25zOjpleHBhbmRfc3ltdGFic19tYXRjaGluZy4gIFdoZW4gdGhpcyBmaW5kIGEg bWF0Y2gsCi1pdCBjYWxscyBwc3ltdGFiX3RvX3N5bXRhYiwgd2hpY2ggZG9lcyB0aGlzIHNhbWUg dXB3YXJkIHdhbGsuCi0KLVRlc3RlZCBvbiB4ODYtNjQgRmVkb3JhIDMyLgotCi1JIHByb3Bvc2Ug Y2hlY2tpbmcgaW4gdGhpcyBwYXRjaCBvbiB0aGUgZ2RiLTEwIGJyYW5jaCwgYW5kIGp1c3QgdGhl Ci1uZXcgdGVzdCBjYXNlIG9uIHRydW5rLgotCi1nZGIvQ2hhbmdlTG9nCi0yMDIxLTA0LTIzICBU b20gVHJvbWV5ICA8dHJvbWV5QGFkYWNvcmUuY29tPgotCi0JUFIgZ2RiLzI3NzQzOgotCSogcHN5 bXRhYi5jIChwYXJ0aWFsX21hcF9leHBhbmRfYXBwbHkpOiBFeHBhbmQgb3V0ZXJtb3N0IHBzeW10 YWIuCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0yMDIxLTA0LTIzICBUb20gVHJvbWV5ICA8 dHJvbWV5QGFkYWNvcmUuY29tPgotCi0JUFIgZ2RiLzI3NzQzOgotCSogZ2RiLmR3YXJmMi9pbXBv cnRlZC11bml0LWJwLmV4cDogTmV3IGZpbGUuCi0JKiBnZGIuZHdhcmYyL2ltcG9ydGVkLXVuaXQt YnAtbWFpbi5jOiBOZXcgZmlsZS4KLQkqIGdkYi5kd2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1hbHQu YzogTmV3IGZpbGUuCi0KLWRpZmYgLS1naXQgYS9nZGIvcHN5bXRhYi5jIGIvZ2RiL3BzeW10YWIu YwotLS0tIGEvZ2RiL3BzeW10YWIuYwotKysrIGIvZ2RiL3BzeW10YWIuYwotQEAgLTEyNyw5ICsx MjcsMTAgQEAgcGFydGlhbF9tYXBfZXhwYW5kX2FwcGx5IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSB7Ci0gICBzdHJ1Y3QgY29tcHVuaXRfc3ltdGFiICpsYXN0X21hZGUgPSBvYmpmaWxlLT5j b21wdW5pdF9zeW10YWJzOwotIAotLSAgLyogU2hhcmVkIHBzeW10YWJzIHNob3VsZCBuZXZlciBi ZSBzZWVuIGhlcmUuICBJbnN0ZWFkIHRoZXkgc2hvdWxkCi0tICAgICBiZSBoYW5kbGVkIHByb3Bl cmx5IGJ5IHRoZSBjYWxsZXIuICAqLwotLSAgZ2RiX2Fzc2VydCAocHN0LT51c2VyID09IE5VTEwp OwotKyAgLyogV2UgbWF5IHNlZSBhIHNoYXJlZCBwc3ltdGFiIGhlcmUsIGJ1dCB3ZSB3YW50IHRv IGV4cGFuZCB0aGUKLSsgICAgIG91dGVybW9zdCBzeW10YWIuICAqLwotKyAgd2hpbGUgKHBzdC0+ dXNlciAhPSBudWxscHRyKQotKyAgICBwc3QgPSBwc3QtPnVzZXI7Ci0gCi0gICAvKiBEb24ndCB2 aXNpdCBhbHJlYWR5LWV4cGFuZGVkIHBzeW10YWJzLiAgKi8KLSAgIGlmIChwc3QtPnJlYWRpbl9w IChvYmpmaWxlKSkKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wb3J0 ZWQtdW5pdC1icC1hbHQuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9pbXBvcnRlZC11bml0 LWJwLWFsdC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcG9ydGVkLXVuaXQtYnAtYWx0LmMKLUBAIC0wLDAgKzEs NTAgQEAKLSsvKiBDb3B5cmlnaHQgMjAyMC0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgot KyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0r ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsv KiBVc2VkIHRvIGluc2VydCBsYWJlbHMgd2l0aCB3aGljaCB3ZSBjYW4gYnVpbGQgYSBmYWtlIGxp bmUgdGFibGUuICAqLwotKyNkZWZpbmUgTEwoTikgYXNtICgibGluZV9sYWJlbF8iICNOICI6IC5n bG9ibCBsaW5lX2xhYmVsXyIgI04pCi0rCi0rdm9sYXRpbGUgaW50IHZhcjsKLSt2b2xhdGlsZSBp bnQgYmFyOwotKwotKy8qIEdlbmVyYXRlIHNvbWUgY29kZSB0byB0YWtlIHVwIHNvbWUgc3BhY2Uu ICAqLwotKyNkZWZpbmUgRklMTEVSIGRvIHsgXAotKyAgICB2YXIgPSA5OTsJICAgIFwKLSt9IHdo aWxlICgwKQotKwotK2ludAotK2Z1bmMgKHZvaWQpCi0rewkJCQkJLyogZnVuYyBwcm9sb2d1ZSAq LwotKyAgYXNtICgiZnVuY19sYWJlbDogLmdsb2JsIGZ1bmNfbGFiZWwiKTsKLSsgIExMICgxKTsJ Ly8gRjEsIExuIDE2Ci0rICBGSUxMRVI7Ci0rICBMTCAoMik7CS8vIEYxLCBMbiAxNwotKyAgRklM TEVSOwotKyAgTEwgKDMpOwkvLyBGMiwgTG4gMjEKLSsgIEZJTExFUjsKLSsgIExMICg0KTsJLy8g RjIsIExuIDIyIC8vIEYxLCBMbiAxOCwgIVMKLSsgIEZJTExFUjsKLSsgIExMICg1KTsJLy8gRjEs IExuIDE5ICFTCi0rICBGSUxMRVI7Ci0rICBMTCAoNik7CS8vIEYxLCBMbiAyMAotKyAgRklMTEVS OwotKyAgTEwgKDcpOwotKyAgRklMTEVSOwotKyAgcmV0dXJuIDA7CQkJCS8qIGZ1bmMgZW5kICov Ci0rfQotKwotKyNpZmRlZiBXSVRITUFJTgotK2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0KLSsj ZW5kaWYKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wb3J0ZWQtdW5p dC1icC1tYWluLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1t YWluLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1tYWluLmMKLUBAIC0wLDAgKzEsMjQg QEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgot KwotKyAgIENvcHlyaWdodCAyMDA0LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAg KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0g aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJ ZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2V4dGVy biBpbnQgZnVuYyAodm9pZCk7Ci0rCi0raW50Ci0rbWFpbigpCi0rewotKyAgcmV0dXJuIGZ1bmMg KCk7Ci0rfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9pbXBvcnRlZC11 bml0LWJwLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9pbXBvcnRlZC11bml0LWJwLmV4 cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9pbXBvcnRlZC11bml0LWJwLmV4cAotQEAgLTAsMCArMSwxMjggQEAKLSsj IENvcHlyaWdodCAyMDIwLTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwot KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCB0aGF0ICJicmVhayAvYWJz b2x1dGUvZmlsZTpsaW5lIiB3b3JrcyBvayB3aXRoIGltcG9ydGVkIENVcy4KLSsKLStsb2FkX2xp YiBkd2FyZi5leHAKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3 aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0raWYgeyFbZHdhcmYyX3N1cHBvcnRd fSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotKyMgVGhlIC5jIGZpbGVzIHVzZSBfX2F0dHJpYnV0 ZV9fLgotK2lmIFtnZXRfY29tcGlsZXJfaW5mb10gewotKyAgICByZXR1cm4gLTEKLSt9Ci0raWYg ISRnY2NfY29tcGlsZWQgewotKyAgICByZXR1cm4gMAotK30KLSsKLStzdGFuZGFyZF90ZXN0Zmls ZSBpbXBvcnRlZC11bml0LWJwLWFsdC5jIC5TIGltcG9ydGVkLXVuaXQtYnAtbWFpbi5jCi0rCi0r c2V0IGJ1aWxkX29wdGlvbnMge25vZGVidWcgb3B0aW1pemU9LU8xfQotKwotK3NldCBhc21fZmls ZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgJHNyY2ZpbGUyXQotK0R3YXJmOjphc3NlbWJsZSAkYXNt X2ZpbGUgewotKyAgICBnbG9iYWwgc3JjZGlyIHN1YmRpciBzcmNmaWxlIHNyY2ZpbGUKLSsgICAg Z2xvYmFsIGJ1aWxkX29wdGlvbnMKLSsgICAgZGVjbGFyZV9sYWJlbHMgbGluZXNfbGFiZWwgY2Fs bGVlX3N1YnByb2dfbGFiZWwgY3VfbGFiZWwKLSsKLSsgICAgZ2V0X2Z1bmNfaW5mbyBmdW5jICIk YnVpbGRfb3B0aW9ucyBhZGRpdGlvbmFsX2ZsYWdzPS1EV0lUSE1BSU4iCi0rCi0rICAgIGN1IHt9 IHsKLSsJY29tcGlsZV91bml0IHsKLSsJICAgIHtsYW5ndWFnZSBARFdfTEFOR19DfQotKwkgICAg e25hbWUgIjxhcnRpZmljaWFsPiJ9Ci0rCX0gewotKwkgICAgaW1wb3J0ZWRfdW5pdCB7Ci0rCQl7 aW1wb3J0ICUkY3VfbGFiZWx9Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgICBjdSB7fSB7 Ci0rCWN1X2xhYmVsOiBjb21waWxlX3VuaXQgewotKwkgICAge3Byb2R1Y2VyICJnY2MifQotKwkg ICAge2xhbmd1YWdlIEBEV19MQU5HX0N9Ci0rCSAgICB7bmFtZSAke3NyY2ZpbGV9fQotKwkgICAg e2NvbXBfZGlyICIvdG1wIn0KLSsJICAgIHtsb3dfcGMgMCBhZGRyfQotKwkgICAge3N0bXRfbGlz dCAke2xpbmVzX2xhYmVsfSBEV19GT1JNX3NlY19vZmZzZXR9Ci0rCX0gewotKwkgICAgY2FsbGVl X3N1YnByb2dfbGFiZWw6IHN1YnByb2dyYW0gewotKwkJe2V4dGVybmFsIDEgZmxhZ30KLSsJCXtu YW1lIGNhbGxlZX0KLSsJCXtpbmxpbmUgMyBkYXRhMX0KLSsJICAgIH0KLSsJICAgIHN1YnByb2dy YW0gewotKwkJe2V4dGVybmFsIDEgZmxhZ30KLSsJCXtuYW1lIGZ1bmN9Ci0rCQl7bG93X3BjICRm dW5jX3N0YXJ0IGFkZHJ9Ci0rCQl7aGlnaF9wYyAiJGZ1bmNfc3RhcnQgKyAkZnVuY19sZW4iIGFk ZHJ9Ci0rCSAgICB9IHsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgIGxpbmVzIHt2ZXJz aW9uIDIgZGVmYXVsdF9pc19zdG10IDF9IGxpbmVzX2xhYmVsIHsKLSsJaW5jbHVkZV9kaXIgIi90 bXAiCi0rCWZpbGVfbmFtZSAiJHNyY2ZpbGUiIDEKLSsKLSsJcHJvZ3JhbSB7Ci0rCSAgICB7RFdf TE5FX3NldF9hZGRyZXNzIGxpbmVfbGFiZWxfMX0KLSsJICAgIHtEV19MTlNfYWR2YW5jZV9saW5l IDE1fQotKwkgICAge0RXX0xOU19jb3B5fQotKwotKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBs aW5lX2xhYmVsXzJ9Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQotKwkgICAge0RXX0xO U19jb3B5fQotKwotKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzN9Ci0rCSAg ICB7RFdfTE5TX2FkdmFuY2VfbGluZSA0fQotKwkgICAge0RXX0xOU19jb3B5fQotKwotKwkgICAg e0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzR9Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2Vf bGluZSAxfQotKwkgICAge0RXX0xOU19jb3B5fQotKwotKwkgICAge0RXX0xOU19hZHZhbmNlX2xp bmUgLTR9Ci0rCSAgICB7RFdfTE5TX25lZ2F0ZV9zdG10fQotKwkgICAge0RXX0xOU19jb3B5fQot KwotKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzV9Ci0rCSAgICB7RFdfTE5T X2FkdmFuY2VfbGluZSAxfQotKwkgICAge0RXX0xOU19jb3B5fQotKwotKwkgICAge0RXX0xORV9z ZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzZ9Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQot KwkgICAge0RXX0xOU19uZWdhdGVfc3RtdH0KLSsJICAgIHtEV19MTlNfY29weX0KLSsKLSsJICAg IHtEV19MTkVfc2V0X2FkZHJlc3MgbGluZV9sYWJlbF83fQotKwkgICAge0RXX0xORV9lbmRfc2Vx dWVuY2V9Ci0rCX0KLSsgICAgfQotK30KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICJm YWlsZWQgdG8gcHJlcGFyZSIgJHt0ZXN0ZmlsZX0gXAotKwkgIFtsaXN0ICRzcmNmaWxlICRhc21f ZmlsZSAkc3JjZmlsZTNdICRidWlsZF9vcHRpb25zXSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotK2dkYl9yZWluaXRpYWxpemVfZGlyIC90bXAKLSsKLSsjIFVzaW5nIGFuIGFic29sdXRlIHBh dGggaXMgaW1wb3J0YW50IHRvIHNlZSB0aGUgYnVnLgotK2dkYl90ZXN0ICJicmVhayAvdG1wLyR7 c3JjZmlsZX06MTkiICJCcmVha3BvaW50IC4qIGZpbGUgJHNyY2ZpbGUsIGxpbmUgLioiCgpkaWZm IC0tZ2l0IGEvZ2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoIGIvZ2RiLWxpbnV4X3BlcmYtYnVu ZGxlLnBhdGNoCmluZGV4IDcyOGY0NjMuLmUzY2UxYTMgMTAwNjQ0Ci0tLSBhL2dkYi1saW51eF9w ZXJmLWJ1bmRsZS5wYXRjaAorKysgYi9nZGItbGludXhfcGVyZi1idW5kbGUucGF0Y2gKQEAgLTIx Myw3ICsyMTMsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1idHJhY2UuaCBiL2dkYi9u YXQvbGludXgtYnRyYWNlLmgKIGRpZmYgLS1naXQgYS9nZGJzdXBwb3J0L2NvbW1vbi5tNCBiL2dk YnN1cHBvcnQvY29tbW9uLm00CiAtLS0gYS9nZGJzdXBwb3J0L2NvbW1vbi5tNAogKysrIGIvZ2Ri c3VwcG9ydC9jb21tb24ubTQKLUBAIC0xNDUsNyArMTQ1LDcgQEAgQUNfREVGVU4oW0dEQl9BQ19D T01NT05dLCBbCitAQCAtMTM1LDcgKzEzNSw3IEBAIEFDX0RFRlVOKFtHREJfQUNfQ09NTU9OXSwg WwogICAgICBBQ19QUkVQUk9DX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKICAgICNpbmNsdWRl IDxsaW51eC9wZXJmX2V2ZW50Lmg+CiAgICAjaWZuZGVmIFBFUkZfQVRUUl9TSVpFX1ZFUjUKCmRp ZmYgLS1naXQgYS9nZGItcmhiejEzNTA0MzYtdHlwZS1wcmludGVycy1lcnJvci5wYXRjaCBiL2dk Yi1yaGJ6MTM1MDQzNi10eXBlLXByaW50ZXJzLWVycm9yLnBhdGNoCmluZGV4IGQwNmUxMjEuLjMz MjIzMjcgMTAwNjQ0Ci0tLSBhL2dkYi1yaGJ6MTM1MDQzNi10eXBlLXByaW50ZXJzLWVycm9yLnBh dGNoCisrKyBiL2dkYi1yaGJ6MTM1MDQzNi10eXBlLXByaW50ZXJzLWVycm9yLnBhdGNoCkBAIC00 MiwyMiArNDIsMjQgQEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10 eXBlcHJpbnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG8KIGRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktdHlwZXByaW50LnB5IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXR5cGVwcmludC5weQogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXR5cGVwcmludC5weQogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXR5cGVwcmlu dC5weQotQEAgLTE1LDcgKzE1LDcgQEAKK0BAIC0xNSw4ICsxNSw3IEBACiAgCiAgaW1wb3J0IGdk YgogIAorLQogLWNsYXNzIFJlY29nbml6ZXIob2JqZWN0KToKICtjbGFzcyBTdHJpbmdSZWNvZ25p emVyKG9iamVjdCk6CiAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIHNlbGYuZW5h YmxlZCA9IFRydWUKICAKLUBAIC0zMCw2ICszMCwyNiBAQCBjbGFzcyBTdHJpbmdUeXBlUHJpbnRl cihvYmplY3QpOgorQEAgLTMyLDcgKzMxLDI3IEBAIGNsYXNzIFN0cmluZ1R5cGVQcmludGVyKG9i amVjdCk6CiAgICAgICAgICBzZWxmLmVuYWJsZWQgPSBUcnVlCiAgCiAgICAgIGRlZiBpbnN0YW50 aWF0ZShzZWxmKToKIC0gICAgICAgIHJldHVybiBSZWNvZ25pemVyKCkKICsgICAgICAgIHJldHVy biBTdHJpbmdSZWNvZ25pemVyKCkKICAKKyAKICBnZGIudHlwZV9wcmludGVycy5hcHBlbmQoU3Ry aW5nVHlwZVByaW50ZXIoKSkKICsKICtjbGFzcyBPdGhlclJlY29nbml6ZXIob2JqZWN0KToKCmRp ZmYgLS1naXQgYS9nZGItcmhiejE4OTgyNTItbG9hZGFibGUtc2VjdGlvbi1vdXRzaWRlLUVMRi1z ZWdtZW50cy5wYXRjaCBiL2dkYi1yaGJ6MTg5ODI1Mi1sb2FkYWJsZS1zZWN0aW9uLW91dHNpZGUt RUxGLXNlZ21lbnRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDE5NDU1 Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTg5ODI1Mi1sb2FkYWJsZS1zZWN0aW9uLW91dHNpZGUt RUxGLXNlZ21lbnRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotRnJvbSBG RURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlaXRoIFNlaXR6 IDxrZWl0aHNAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTYgTm92IDIwMjAgMTI6NDI6MDkgLTA1 MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTg5ODI1Mi1sb2FkYWJsZS1zZWN0aW9uLW91dHNpZGUtRUxG LXNlZ21lbnRzLnBhdGNoCi0KLTs7IEJhY2twb3J0IG9mICJFeGNsdWRlIGRlYnVnaW5mbyBmaWxl cyBmcm9tICdvdXRzaWRlIG9mIEVMRiBzZWdtZW50cycKLTs7IHdhcm5pbmciICAoS2VpdGggU2Vp dHopCi0KLSAgICBFeGNsdWRlIGRlYnVnaW5mbyBmaWxlcyBmcm9tICJvdXRzaWRlIG9mIEVMRiBz ZWdtZW50cyIgd2FybmluZwotCi0gICAgV2hlbiBHREIgbG9hZHMgYW4gRUxGIGZpbGUsIGl0IHdp bGwgd2FybiB3aGVuIGEgc2VjdGlvbiBpcyBub3QgbG9jYXRlZAotICAgIGluIGFuIEVMRiBzZWdt ZW50OgotCi0gICAgJCAuL2dkYiAtcSAtaWV4ICJzZXQgYnVpbGQtaWQtdmVyYm9zZSAwIiAtLWV4 ICJiIHN5c3RlbWN0bF9tYWluIiAtZXggInIiIC1iYXRjaCAtLWFyZ3Mgc3lzdGVtY3RsIGtleGVj Ci0gICAgQnJlYWtwb2ludCAxIGF0IDB4YzI0ZDogZmlsZSAuLi9zcmMvc3lzdGVtY3RsL3N5c3Rl bWN0bC5jLCBsaW5lIDg3NTIuCi0gICAgd2FybmluZzogTG9hZGFibGUgc2VjdGlvbiAiLm5vdGUu Z251LnByb3BlcnR5IiBvdXRzaWRlIG9mIEVMRiBzZWdtZW50cwotICAgICAgaW4gLmdudV9kZWJ1 Z2RhdGEgZm9yIC9saWI2NC9saWJnY2Nfcy5zby4xCi0gICAgW1RocmVhZCBkZWJ1Z2dpbmcgdXNp bmcgbGlidGhyZWFkX2RiIGVuYWJsZWRdCi0gICAgVXNpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGli cmFyeSAiL2xpYjY0L2xpYnRocmVhZF9kYi5zby4xIi4KLSAgICB3YXJuaW5nOiBMb2FkYWJsZSBz ZWN0aW9uICIubm90ZS5nbnUucHJvcGVydHkiIG91dHNpZGUgb2YgRUxGIHNlZ21lbnRzCi0gICAg ICBpbiAuZ251X2RlYnVnZGF0YSBmb3IgL2xpYjY0L2xpYmNhcC5zby4yCi0gICAgd2FybmluZzog TG9hZGFibGUgc2VjdGlvbiAiLm5vdGUuZ251LnByb3BlcnR5IiBvdXRzaWRlIG9mIEVMRiBzZWdt ZW50cwotICAgICAgaW4gLmdudV9kZWJ1Z2RhdGEgZm9yIC9saWI2NC9saWJhY2wuc28uMQotICAg IHdhcm5pbmc6IExvYWRhYmxlIHNlY3Rpb24gIi5ub3RlLmdudS5wcm9wZXJ0eSIgb3V0c2lkZSBv ZiBFTEYgc2VnbWVudHMKLSAgICAgIGluIC5nbnVfZGVidWdkYXRhIGZvciAvbGliNjQvbGliY3J5 cHRzZXR1cC5zby4xMgotICAgIHdhcm5pbmc6IExvYWRhYmxlIHNlY3Rpb24gIi5ub3RlLmdudS5w cm9wZXJ0eSIgb3V0c2lkZSBvZiBFTEYgc2VnbWVudHMKLSAgICAgIGluIC5nbnVfZGVidWdkYXRh IGZvciAvbGliNjQvbGliZ2NyeXB0LnNvLjIwCi0gICAgd2FybmluZzogTG9hZGFibGUgc2VjdGlv biAiLm5vdGUuZ251LnByb3BlcnR5IiBvdXRzaWRlIG9mIEVMRiBzZWdtZW50cwotICAgICAgaW4g LmdudV9kZWJ1Z2RhdGEgZm9yIC9saWI2NC9saWJpcDR0Yy5zby4yCi0gICAgW3NuaXBdCi0gICAg VGhpcyBoYXMgZmVhdHVyZSBoYXMgYWxzbyBiZWVuIHJlcG9ydGVkIGJ5IHZhcmlvdXMgdXNlcnMs IG1vc3Qgbm90YWJseQotICAgIHRoZSBGZWRvcmEtRU9MJ2QgYnVnIDE1NTMwODYuCi0KLSAgICBN YXJrIFdpZWxhYXJkIGV4cGxhaW5zIHRoZSBpc3N1ZSBxdWl0ZSBuaWNlbHkgaW4KLQotICAgICAg IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI0NzE3I2My Ci0KLSAgICBUaGUgc2hvcnQgb2YgaXQgaXMsIHRoZSBFTEYgcHJvZ3JhbSBoZWFkZXJzIGZvciBk ZWJ1Z2luZm8gZmlsZXMgYXJlCi0gICAgbm90IHN1aXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgdXNl IGNhc2UuIENvbnNlcXVlbnRseSwgdGhlIHdhcm5pbmcKLSAgICBnZW5lcmF0ZWQgYWJvdmUgcmVh bGx5IGlzIHVzZWxlc3MgYW5kIHNob3VsZCBiZSBpZ25vcmVkLgotCi0gICAgVGhpcyBwYXRjaCBm b2xsb3dzIHRoZSBzYW1lIGhldXJpc3RpYyB0aGF0IEJGRCBpdHNlbGYgdXNlcy4KLQotICAgIGdk Yi9DaGFuZ2VMb2cKLSAgICAyMDIwLTExLTEzICBLZWl0aCBTZWl0eiAgPGtlaXRoc0ByZWRoYXQu Y29tPgotCi0gICAgICAgICAgICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcu Y2dpP2lkPTE1NTMwODYKLSAgICAgICAgICAgICogZWxmcmVhZC5jIChlbGZfc3ltZmlsZV9zZWdt ZW50cyk6IE9taXQgIkxvYWRhYmxlIHNlY3Rpb24gLi4uCi0gICAgICAgICAgICBvdXRzaWRlIG9m IEVMRiBzZWdtZW50cyIgd2FybmluZyBmb3IgZGVidWdpbgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2Vs ZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9l bGZyZWFkLmMKLUBAIC0xNDcsNyArMTQ3LDEyIEBAIGVsZl9zeW1maWxlX3NlZ21lbnRzIChiZmQg KmFiZmQpCi0gCSBSZWFsVmlldykgdXNlIFNIVF9OT0JJVFMgZm9yIHVuaW5pdGlhbGl6ZWQgZGF0 YS4gIFNpbmNlIGl0IGlzCi0gCSB1bmluaXRpYWxpemVkLCBpdCBkb2Vzbid0IG5lZWQgYSBwcm9n cmFtIGhlYWRlci4gIFN1Y2gKLSAJIGJpbmFyaWVzIGFyZSBub3QgcmVsb2NhdGFibGUuICAqLwot LSAgICAgIGlmIChiZmRfc2VjdGlvbl9zaXplIChzZWN0KSA+IDAgJiYgaiA9PSBudW1fc2VnbWVu dHMKLSsKLSsgICAgICAvKiBFeGNsdWRlIGRlYnVnaW5mbyBmaWxlcyBmcm9tIHRoaXMgd2Fybmlu ZywgdG9vLCBzaW5jZSB0aG9zZQotKwkgYXJlIG9mdGVuIG5vdCBzdHJpY3RseSBjb21wbGlhbnQg d2l0aCB0aGUgc3RhbmRhcmQuIFNlZSwgZS5nLiwKLSsJIGxkLzI0NzE3IGZvciBtb3JlIGRpc2N1 c3Npb24uICAqLwotKyAgICAgIGlmICghaXNfZGVidWdpbmZvX2ZpbGUgKGFiZmQpCi0rCSAgJiYg YmZkX3NlY3Rpb25fc2l6ZSAoc2VjdCkgPiAwICYmIGogPT0gbnVtX3NlZ21lbnRzCi0gCSAgJiYg KGJmZF9zZWN0aW9uX2ZsYWdzIChzZWN0KSAmIFNFQ19MT0FEKSAhPSAwKQotIAl3YXJuaW5nIChf KCJMb2FkYWJsZSBzZWN0aW9uIFwiJXNcIiBvdXRzaWRlIG9mIEVMRiBzZWdtZW50cyIpLAotIAkJ IGJmZF9zZWN0aW9uX25hbWUgKHNlY3QpKTsKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5MDU5OTYt Zml4LW9mZi1ieS1vbmUtZXJyb3ItaW4tYWRhX2ZvbGRfbmFtZS5wYXRjaCBiL2dkYi1yaGJ6MTkw NTk5Ni1maXgtb2ZmLWJ5LW9uZS1lcnJvci1pbi1hZGFfZm9sZF9uYW1lLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTFiYzU3Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTkw NTk5Ni1maXgtb2ZmLWJ5LW9uZS1lcnJvci1pbi1hZGFfZm9sZF9uYW1lLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURh dGU6IFR1ZSwgOCBEZWMgMjAyMCAxNDowNzo0NSAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTA1 OTk2LWZpeC1vZmYtYnktb25lLWVycm9yLWluLWFkYV9mb2xkX25hbWUucGF0Y2gKLQotOzsgRml4 IG9mZi1ieS1vbmUgZXJyb3IgaW4gYWRhX2ZvbGRfbmFtZS5wYXRjaCAoUkggQlogMTkwNTk5NikK LTs7IFVwc3RyZWFtIHBhdGNoIHByb3Bvc2FsOiBodHRwczovL3NvdXJjZXdhcmUub3JnL3BpcGVy bWFpbC9nZGItcGF0Y2hlcy8yMDIwLURlY2VtYmVyLzE3MzkzNS5odG1sCi07OyA9ZmVkb3JhdGVz dAotCi1GaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBhZGFfZm9sZF9uYW1lCi0KLUknbSBzZWVpbmcg YSBsaWJzdGRjKysgYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBydW5uaW5nIEdEQidzICJtYWludCBz ZWxmdGVzdCIKLWNvbW1hbmQgd2hlbiBHREIgaXMgY29uZmlndXJlZCB3aXRoIHRoZSBmb2xsb3dp bmcgQ0ZMQUdTIGFuZCBDWFhGTEFHUyBhcwotcGFydCBvZiB0aGUgY29uZmlndXJlIGxpbmU6Ci0K LSAgQ0ZMQUdTPSctRF9HTElCQ1hYX0RFQlVHIC1nMyAtTzAnIENYWEZMQUdTPSctRF9HTElCQ1hY X0RFQlVHIC1nMyAtTzAnCi0KLVRoaXMgaXMgd2hhdCBJIHNlZSB3aGVuIHJ1bm5pbmcgdGhlIHNl bGYgdGVzdHM6Ci0KLShnZGIpIG1haW50IHNlbGZ0ZXN0Ci1SdW5uaW5nIHNlbGZ0ZXN0IGFhcmNo NjQtYW5hbHl6ZS1wcm9sb2d1ZS4KLVJ1bm5pbmcgc2VsZnRlc3QgYWFyY2g2NC1wcm9jZXNzLXJl Y29yZC4KLVJ1bm5pbmcgc2VsZnRlc3QgYXJtLXJlY29yZC4KLVJ1bm5pbmcgc2VsZnRlc3QgYXJt X2FuYWx5emVfcHJvbG9ndWUuCi1SdW5uaW5nIHNlbGZ0ZXN0IGFycmF5X3ZpZXcuCi1SdW5uaW5n IHNlbGZ0ZXN0IGNoaWxkX3BhdGguCi1SdW5uaW5nIHNlbGZ0ZXN0IGNsaV91dGlscy4KLVJ1bm5p bmcgc2VsZnRlc3QgY29tbWFuZF9zdHJ1Y3R1cmVfaW52YXJpYW50cy4KLVJ1bm5pbmcgc2VsZnRl c3QgY29weV9iaXR3aXNlLgotUnVubmluZyBzZWxmdGVzdCBjb3B5X2ludGVnZXJfdG9fc2l6ZS4K LVJ1bm5pbmcgc2VsZnRlc3QgY3BfcmVtb3ZlX3BhcmFtcy4KLVJ1bm5pbmcgc2VsZnRlc3QgY3Bf c3ltYm9sX25hbWVfbWF0Y2hlcy4KLVJ1bm5pbmcgc2VsZnRlc3QgZHcyX2V4cGFuZF9zeW10YWJz X21hdGNoaW5nLgotL3Vzci9pbmNsdWRlL2MrKy8xMS9zdHJpbmdfdmlldzoyMTE6IGNvbnN0ZXhw ciBjb25zdCB2YWx1ZV90eXBlJiBzdGQ6OmJhc2ljX3N0cmluZ192aWV3PF9DaGFyVCwgX1RyYWl0 cz46Om9wZXJhdG9yW10oc3RkOjpiYXNpY19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+Ojpz aXplX3R5cGUpIGNvbnN0IFt3aXRoIF9DaGFyVCA9IGNoYXI7IF9UcmFpdHMgPSBzdGQ6OmNoYXJf dHJhaXRzPGNoYXI+OyBzdGQ6OmJhc2ljX3N0cmluZ192aWV3PF9DaGFyVCwgX1RyYWl0cz46OmNv bnN0X3JlZmVyZW5jZSA9IGNvbnN0IGNoYXImOyBzdGQ6OmJhc2ljX3N0cmluZ192aWV3PF9DaGFy VCwgX1RyYWl0cz46OnNpemVfdHlwZSA9IGxvbmcgdW5zaWduZWQgaW50XTogQXNzZXJ0aW9uICdf X3BvcyA8IHRoaXMtPl9NX2xlbicgZmFpbGVkLgotQWJvcnRlZCAoY29yZSBkdW1wZWQpCi0KLUhl cmUncyBhIHBhcnRpYWwgc3RhY2sgdHJhY2U6Ci0KLSAgIzAgIDB4MDAwMDdmZmZmNmVmNjI2MiBp biByYWlzZSAoKSBmcm9tIC9saWI2NC9saWJjLnNvLjYKLSAgIzEgIDB4MDAwMDdmZmZmNmVkZjhh NCBpbiBhYm9ydCAoKSBmcm9tIC9saWI2NC9saWJjLnNvLjYKLSAgIzIgIDB4MDAwMDAwMDAwMDQy NDliZiBpbiBzdGQ6Ol9fcmVwbGFjZW1lbnRfYXNzZXJ0ICgKLSAgICAgIF9fZmlsZT0weGVmNzQ4 MCAiL3Vzci9pbmNsdWRlL2MrKy8xMS9zdHJpbmdfdmlldyIsIF9fbGluZT0yMTEsCi0gICAgICBf X2Z1bmN0aW9uPTB4ZWY3MzI4ICJjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSYgc3RkOjpiYXNp Y19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+OjpvcGVyYXRvcltdKHN0ZDo6YmFzaWNfc3Ry aW5nX3ZpZXc8X0NoYXJULCBfVHJhaXRzPjo6c2l6ZV90eXBlKSBjb25zdCBbd2l0aCBfQ2hhclQg PSBjaGFyOyBfVHJhaXRzID0gc3RkOjpjaGFyX3RyYWl0czxjaGFyPjsgc3RkOjpiYSIuLi4sCi0g ICAgICBfX2NvbmRpdGlvbj0weGVmNzMxMSAiX19wb3MgPCB0aGlzLT5fTV9sZW4iKQotICAgICAg YXQgL3Vzci9pbmNsdWRlL2MrKy8xMS94ODZfNjQtcmVkaGF0LWxpbnV4L2JpdHMvYysrY29uZmln Lmg6MjYyNAotICAjMyAgMHgwMDAwMDAwMDAwNDUxNzM3IGluIHN0ZDo6YmFzaWNfc3RyaW5nX3Zp ZXc8Y2hhciwgc3RkOjpjaGFyX3RyYWl0czxjaGFyPiA+OjpvcGVyYXRvcltdICh0aGlzPTB4N2Zm ZmZmZmZjMjAwLCBfX3Bvcz04KQotICAgICAgYXQgL3Vzci9pbmNsdWRlL2MrKy8xMS9zdHJpbmdf dmlldzoyMTEKLSAgIzQgIDB4MDAwMDAwMDAwMDQzMjlmNSBpbiBhZGFfZm9sZF9uYW1lIChuYW1l PSJmdW5jdGlvbiIpCi0gICAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L3Jhd2hpZGUt bWFzdGVyL2JsZC8uLi8uLi93b3JrdHJlZS1tYXN0ZXIvZ2RiL2FkYS1sYW5nLmM6OTg4Ci0KLUFu ZCwgbG9va2luZyBhdCBmcmFtZSAjNC4uLgotCi0odG9wLWdkYikgdXAgNAotICAgIGF0IC9pcm9u d29vZDEvc291cmNld2FyZS1naXQvcmF3aGlkZS1tYXN0ZXIvYmxkLy4uLy4uL3dvcmt0cmVlLW1h c3Rlci9nZGIvYWRhLWxhbmcuYzo5ODgKLTk4OAkJZm9sZF9idWZmZXJbaV0gPSB0b2xvd2VyIChu YW1lW2ldKTsKLSh0b3AtZ2RiKSBwIGkKLSQxID0gOAotKHRvcC1nZGIpIHAgbmFtZS5zaXplKCkK LSQyID0gOAotCi1NeSBwYXRjaCBhZGp1c3RzIHRoZSBjb21wYXJpc29uIHRvIG9ubHkgY29weSBu YW1lLnNpemUoKSBjaGFyYWN0ZXJzCi1mcm9tIHRoZSBzdHJpbmcuICBJJ3ZlIGFkZGVkIGEgc2Vw YXJhdGUgc3RhdGVtZW50IGZvciBOVUwgY2hhcmFjdGVyCi10ZXJtaW5hdGlvbiBvZiBmb2xkX2J1 ZmZlcltdLgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBhZGEtbGFuZy5jIChhZGFfZm9sZF9uYW1l KTogRml4IG9mZi1ieS1vbmUgZXJyb3IuCi0KLWRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBi L2dkYi9hZGEtbGFuZy5jCi0tLS0gYS9nZGIvYWRhLWxhbmcuYwotKysrIGIvZ2RiL2FkYS1sYW5n LmMKLUBAIC0xMDA2LDggKzEwMDYsOSBAQCBhZGFfZm9sZF9uYW1lIChnZGI6OnN0cmluZ192aWV3 IG5hbWUpCi0gICAgIHsKLSAgICAgICBpbnQgaTsKLSAKLS0gICAgICBmb3IgKGkgPSAwOyBpIDw9 IGxlbjsgaSArPSAxKQotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkKLSAgICAg ICAgIGZvbGRfYnVmZmVyW2ldID0gdG9sb3dlciAobmFtZVtpXSk7Ci0rICAgICAgZm9sZF9idWZm ZXJbaV0gPSAnXDAnOwotICAgICB9Ci0gCi0gICByZXR1cm4gZm9sZF9idWZmZXI7CgpkaWZmIC0t Z2l0IGEvZ2RiLXJoYnoxOTA5OTAyLWZyYW1lX2lkX3AtYXNzZXJ0LTEucGF0Y2ggYi9nZGItcmhi ejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggOGRkOTlhNS4uMDAwMDAwMAotLS0gYS9nZGItcmhiejE5MDk5MDItZnJhbWVfaWRf cC1hc3NlcnQtMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5MyArMCwwIEBACi1Gcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGVkcm8gQWx2ZXMg PHBlZHJvQHBhbHZlcy5uZXQ+Ci1EYXRlOiBGcmksIDMwIE9jdCAyMDIwIDE4OjI2OjE1ICswMTAw Ci1TdWJqZWN0OiBnZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5wYXRjaAotCi07 OyBCYWNrcG9ydCBmaXggZm9yIGZyYW1lX2lkX3AgYXNzZXJ0aW9uIGZhaWx1cmUgKFJIIEJaIDE5 MDk5MDIpLgotCi1NYWtlIHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkJ3MgY2R0b3JzIGV4 Y2VwdGlvbiBmcmVlIChSRkMpCi0KLUlmIHRoZSByZW1vdGUgdGFyZ2V0IGNsb3NlcyB3aGlsZSB3 ZSdyZSByZWFkaW5nIHJlZ2lzdGVycy9tZW1vcnkgZm9yCi1yZXN0b3JpbmcgdGhlIHNlbGVjdGVk IGZyYW1lIGluIHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkJ3MgZHRvciwKLXRoZSBjb3Jy ZXNwb25kaW5nIFRBUkdFVF9DTE9TRV9FUlJPUiBlcnJvciBpcyBzd2FsbG93ZWQgYnkgdGhlCi1z Y29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCdzIGR0b3IsIGJlY2F1c2UgbGV0dGluZyBleGNl cHRpb25zCi1lc2NhcGUgZnJvbSBhIGR0b3IgaXMgYmFkLiAgSXQgaXNuJ3QgZ3JlYXQgdG8gbG9z ZSB0aGF0IGVycm9ycyBsaWtlCi10aGF0LCB0aG91Z2guICBJJ3ZlIGJlZW4gdGhpbmtpbmcgYWJv dXQgaG93IHRvIGF2b2lkIGl0LCBhbmQgSSBjYW1lIHVwCi13aXRoIHRoaXMgcGF0Y2guCi0KLVRo ZSBpZGVhIGhlcmUgaXMgdG8gbWFrZSBzY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCdzIGR0 b3IgZG8gYXMKLWxpdHRsZSBhcyBwb3NzaWJsZSwgdG8gYXZvaWQgYW55IHdvcmsgdGhhdCBtaWdo dCB0aHJvdyBpbiB0aGUgZmlyc3QKLXBsYWNlLiAgQW5kIHRvIGRvIHRoYXQsIGluc3RlYWQgb2Yg aGF2aW5nIHRoZSBkdG9yIGNhbGwKLXJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUsIHdoaWNoIHJlLWZp bmRzIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIGZyYW1lLAotanVzdCByZWNvcmQgdGhlIGZyYW1l X2lkL2xldmVsIG9mIHRoZSBkZXNpcmVkIHNlbGVjdGVkIGZyYW1lLCBhbmQgaGF2ZQotZ2V0X3Nl bGVjdGVkX2ZyYW1lIGZpbmQgdGhlIGZyYW1lIHRoZSBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLiAg SW4KLWVmZmVjdCwgdGhpcyBpbXBsZW1lbnRzIG1vc3Qgb2YgQ2FnbmV5J3Mgc3VnZ2VzdGlvbiwg aGVyZToKLQotICAvKiBPbiBkZW1hbmQsIGNyZWF0ZSB0aGUgc2VsZWN0ZWQgZnJhbWUgYW5kIHRo ZW4gcmV0dXJuIGl0LiAgSWYgdGhlCi0gICAgIHNlbGVjdGVkIGZyYW1lIGNhbiBub3QgYmUgY3Jl YXRlZCwgdGhpcyBmdW5jdGlvbiBwcmludHMgdGhlbiB0aHJvd3MKLSAgICAgYW4gZXJyb3IuICBX aGVuIE1FU1NBR0UgaXMgbm9uLU5VTEwsIHVzZSBpdCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UsCi0g ICAgIG90aGVyd2l6ZSB1c2UgYSBnZW5lcmljIGVycm9yIG1lc3NhZ2UuICAqLwotICAvKiBGSVhN RTogY2FnbmV5LzIwMDItMTEtMjg6IEF0IHByZXNlbnQsIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0 ZWQKLSAgICAgZnJhbWUsIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgdGhlIGN1cnJlbnQg KGlubmVyIG1vc3QpIGZyYW1lLgotICAgICBJdCBzaG91bGQgaW5zdGVhZCwgd2hlbiBhIHRocmVh ZCBoYXMgcHJldmlvdXNseSBoYWQgaXRzIGZyYW1lCi0gICAgIHNlbGVjdGVkIChidXQgbm90IHJl c3VtZWQpIGFuZCB0aGUgZnJhbWUgY2FjaGUgaW52YWxpZGF0ZWQsIGZpbmQKLSAgICAgYW5kIHRo ZW4gcmV0dXJuIHRoYXQgdGhyZWFkJ3MgcHJldmlvdXNseSBzZWxlY3RlZCBmcmFtZS4gICovCi0g IGV4dGVybiBzdHJ1Y3QgZnJhbWVfaW5mbyAqZ2V0X3NlbGVjdGVkX2ZyYW1lIChjb25zdCBjaGFy ICptZXNzYWdlKTsKLQotVGhlIG9ubHkgdGhpbmcgbWlzc2luZyB0byBmdWxseSBpbXBsZW1lbnQg dGhhdCB3b3VsZCBiZSB0byBtYWtlCi1yZWluaXRfZnJhbWVfY2FjaGUganVzdCBjbGVhciBzZWxl Y3RlZF9mcmFtZSBpbnN0ZWFkIG9mIGNhbGxpbmcKLXNlbGVjdF9mcmFtZShOVUxMKSwgYW5kIHRo ZSBjYWxsIHNlbGVjdF9mcmFtZShOVUxMKSBleHBsaWNpdGx5IGluIHRoZQotcGxhY2VzIHdoZXJl IHdlIHJlYWxseSB3YW50ZWQgcmVpbml0X2ZyYW1lX2NhY2hlIHRvIGdvIGJhY2sgdG8gdGhlCi1j dXJyZW50IGZyYW1lIHRvby4gIFRoYXQgY2FuIGRvbmUgc2VwYXJhdGVseSwgdGhvdWdoLCBJJ20g bm90Ci1wcm9wb3NpbmcgdG8gZG8gdGhhdCBpbiB0aGlzIHBhdGNoLgotCi1Ob3RlIHRoYXQgdGhp cyBwYXRjaCByZW5hbWVzIHJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgdG8KLWxvb2t1cF9zZWxlY3Rl ZF9mcmFtZSwgYW5kIGFkZHMgYSBuZXcgcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSBmdW5jdGlvbgot dGhhdCBkb2Vzbid0IHRocm93LCB0byBiZSBwYWlyZWQgd2l0aCB0aGUgYWxzby1uZXcgc2F2ZV9z ZWxlY3RlZF9mcmFtZQotZnVuY3Rpb24uCi0KLVRoZXJlJ3MgYSByZXN0b3JlX3NlbGVjdGVkX2Zy YW1lIGZ1bmN0aW9uIGluIGluZnJ1bi5jIHRoYXQgSSB0aGluayBjYW4KLWJlIHJlcGxhY2VkIGJ5 IHRoZSBuZXcgb25lIGluIGZyYW1lLmMuCi0KLUFsc28gZG9uZSBpbiB0aGlzIHBhdGNoIGlzIG1h a2UgdGhlIGdldF9zZWxlY3RlZF9mcmFtZSdzIHBhcmFtZXRlciBiZQotb3B0aW9uYWwsIHNvIHRo YXQgd2UgZG9uJ3QgaGF2ZSB0byBwYXNzIGRvd24gbnVsbHB0ciBleHBsaWNpdGx5IGFsbAotb3Zl ciB0aGUgcGxhY2UuCi0KLWxvb2t1cF9zZWxlY3RlZF9mcmFtZSBzaG91bGQgcmVhbGx5IG1vdmUg ZnJvbSB0aHJlYWQuYyB0byBmcmFtZS5jLCBidXQKLUkgZGlkbid0IGRvIHRoYXQgaGVyZSwganVz dCB0byBhdm9pZCBjaHVybiBpbiB0aGUgcGF0Y2ggd2hpbGUgaXQKLWNvbGxlY3RzIGNvbW1lbnRz LiAgSSBkaWQgbWFrZSBpdCBleHRlcm4gYW5kIGRlY2xhcmVkIGl0IGluIGZyYW1lLmgKLWFscmVh ZHksIHByZXBhcmluZyBmb3IgdGhlIG1vdmUuICBJIHdpbGwgZG8gdGhlIG1vdmUgYXMgYSBmb2xs b3cgdXAKLXBhdGNoIGlmIHBlb3BsZSBhZ3JlZSB3aXRoIHRoaXMgYXBwcm9hY2guCi0KLUluY2lk ZW50YWxseSwgdGhpcyBwYXRjaCBhbG9uZSB3b3VsZCBmaXggdGhlIGNyYXNoZXMgZml4ZWQgYnkg dGhlCi1wcmV2aW91cyBwYXRjaGVzIGluIHRoZSBzZXJpZXMsIGJlY2F1c2Ugd2l0aCB0aGlzLAot c2NvcGVkX3Jlc3RvcmVfY3VycmVudF90aHJlYWQncyBjb25zdHJ1Y3RvciBkb2Vzbid0IHRocm93 IGVpdGhlci4KLQotZ2RiL0NoYW5nZUxvZzoKLQotCSogYmxvY2tmcmFtZS5jIChibG9ja19pbm5l cm1vc3RfZnJhbWUpOiBVc2UgZ2V0X3NlbGVjdGVkX2ZyYW1lLgotCSogZnJhbWUuYwotCShzY29w ZWRfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZTo6c2NvcGVkX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUp OgotCVVzZSBzYXZlX3NlbGVjdGVkX2ZyYW1lLiAgU2F2ZSBsYW5ndWFnZSBhcyB3ZWxsLgotCShz Y29wZWRfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZTo6fnNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2Zy YW1lKToKLQlVc2UgcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSwgYW5kIHJlc3RvcmUgbGFuZ3VhZ2Ug YXMgd2VsbC4KLQkoc2VsZWN0ZWRfZnJhbWVfaWQsIHNlbGVjdGVkX2ZyYW1lX2xldmVsKTogTmV3 LgotCShzZWxlY3RlZF9mcmFtZSk6IFVwZGF0ZSBjb21tZW50cy4KLQkoc2F2ZV9zZWxlY3RlZF9m cmFtZSwgcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSk6IE5ldy4KLQkoZ2V0X3NlbGVjdGVkX2ZyYW1l KTogVXNlIGxvb2t1cF9zZWxlY3RlZF9mcmFtZS4KLQkoZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3Nl dCk6IERlbGV0ZS4KLQkoc2VsZWN0X2ZyYW1lKTogUmVjb3JkIHNlbGVjdGVkX2ZyYW1lX2xldmVs IGFuZCBzZWxlY3RlZF9mcmFtZV9pZC4KLQkqIGZyYW1lLmggKHNjb3BlZF9yZXN0b3JlX3NlbGVj dGVkX2ZyYW1lKSA8bV9sZXZlbCwgbV9sYW5nPjogTmV3Ci0JZmllbGRzLgotCShnZXRfc2VsZWN0 ZWRfZnJhbWUpOiBNYWtlICdtZXNzYWdlJyBwYXJhbWV0ZXIgb3B0aW9uYWwuCi0JKGdldF9zZWxl Y3RlZF9mcmFtZV9pZl9zZXQpOiBEZWxldGUgZGVjbGFyYXRpb24uCi0JKHNlbGVjdF9mcmFtZSk6 IFVwZGF0ZSBjb21tZW50cy4KLQkoc2F2ZV9zZWxlY3RlZF9mcmFtZSwgcmVzdG9yZV9zZWxlY3Rl ZF9mcmFtZSkKLQkobG9va3VwX3NlbGVjdGVkX2ZyYW1lKTogRGVjbGFyZS4KLQkqIGdkYnRocmVh ZC5oIChzY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCkgPG1fbGFuZz46IE5ldyBmaWVsZC4K LQkqIGluZnJ1bi5jIChzdHJ1Y3QgaW5mY2FsbF9jb250cm9sX3N0YXRlKSA8c2VsZWN0ZWRfZnJh bWVfbGV2ZWw+OgotCU5ldyBmaWVsZC4KLQkoc2F2ZV9pbmZjYWxsX2NvbnRyb2xfc3RhdGUpOiBV c2Ugc2F2ZV9zZWxlY3RlZF9mcmFtZS4KLQkocmVzdG9yZV9zZWxlY3RlZF9mcmFtZSk6IERlbGV0 ZS4KLQkocmVzdG9yZV9pbmZjYWxsX2NvbnRyb2xfc3RhdGUpOiBVc2UgcmVzdG9yZV9zZWxlY3Rl ZF9mcmFtZS4KLQkqIHN0YWNrLmMgKHNlbGVjdF9mcmFtZV9jb21tYW5kX2NvcmUsIGZyYW1lX2Nv bW1hbmRfY29yZSk6IFVzZQotCWdldF9zZWxlY3RlZF9mcmFtZS4KLQkqIHRocmVhZC5jIChyZXN0 b3JlX3NlbGVjdGVkX2ZyYW1lKTogUmVuYW1lIHRvIC4uLgotCShsb29rdXBfc2VsZWN0ZWRfZnJh bWUpOiAuLi4gdGhpcyBhbmQgbWFrZSBleHRlcm4uICBTZWxlY3QgdGhlCi0JY3VycmVudCBmcmFt ZSBpZiB0aGUgZnJhbWUgbGV2ZWwgaXMgLTEuCi0JKHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhy ZWFkOjpyZXN0b3JlKTogQWxzbyByZXN0b3JlIHRoZQotCWxhbmd1YWdlLgotCShzY29wZWRfcmVz dG9yZV9jdXJyZW50X3RocmVhZDo6fnNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkKToKLQlE b24ndCB0cnkvY2F0Y2guCi0JKHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkOjpzY29wZWRf cmVzdG9yZV9jdXJyZW50X3RocmVhZCk6Ci0JU2F2ZSB0aGUgbGFuZ3VhZ2UgYXMgd2VsbC4gIFVz ZSBzYXZlX3NlbGVjdGVkX2ZyYW1lLgotCi1DaGFuZ2UtSWQ6IEk3M2ZkMWNmYzQwZDg1MTNjMjhl NTU5NjM4M2I3ZWNkOGJjZmU3MDBmCi0KLWRpZmYgLS1naXQgYS9nZGIvYmxvY2tmcmFtZS5jIGIv Z2RiL2Jsb2NrZnJhbWUuYwotLS0tIGEvZ2RiL2Jsb2NrZnJhbWUuYwotKysrIGIvZ2RiL2Jsb2Nr ZnJhbWUuYwotQEAgLTQ2NCwxNCArNDY0LDEwIEBAIGZpbmRfZ251X2lmdW5jX3RhcmdldF90eXBl IChDT1JFX0FERFIgcmVzb2x2ZXJfZnVuYWRkcikKLSBzdHJ1Y3QgZnJhbWVfaW5mbyAqCi0gYmxv Y2tfaW5uZXJtb3N0X2ZyYW1lIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKQotIHsKLS0gIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKLS0KLSAgIGlmIChibG9jayA9PSBOVUxMKQotICAgICBy ZXR1cm4gTlVMTDsKLSAKLS0gIGZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCAoKTsK LS0gIGlmIChmcmFtZSA9PSBOVUxMKQotLSAgICBmcmFtZSA9IGdldF9jdXJyZW50X2ZyYW1lICgp OwotKyAgZnJhbWVfaW5mbyAqZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKCk7Ci0gICB3aGls ZSAoZnJhbWUgIT0gTlVMTCkKLSAgICAgewotICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqZnJh bWVfYmxvY2sgPSBnZXRfZnJhbWVfYmxvY2sgKGZyYW1lLCBOVUxMKTsKLWRpZmYgLS1naXQgYS9n ZGIvZnJhbWUuYyBiL2dkYi9mcmFtZS5jCi0tLS0gYS9nZGIvZnJhbWUuYwotKysrIGIvZ2RiL2Zy YW1lLmMKLUBAIC0zMTcsMTcgKzMxNywxNSBAQCBmcmFtZV9zdGFzaF9pbnZhbGlkYXRlICh2b2lk KQotIC8qIFNlZSBmcmFtZS5oICAqLwotIHNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lOjpz Y29wZWRfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKQotIHsKLS0gIG1fZmlkID0gZ2V0X2ZyYW1l X2lkIChnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpKTsKLSsgIG1fbGFuZyA9IGN1cnJlbnRfbGFu Z3VhZ2UtPmxhX2xhbmd1YWdlOwotKyAgc2F2ZV9zZWxlY3RlZF9mcmFtZSAoJm1fZmlkLCAmbV9s ZXZlbCk7Ci0gfQotIAotIC8qIFNlZSBmcmFtZS5oICAqLwotIHNjb3BlZF9yZXN0b3JlX3NlbGVj dGVkX2ZyYW1lOjp+c2NvcGVkX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCkKLSB7Ci0tICBmcmFt ZV9pbmZvICpmcmFtZSA9IGZyYW1lX2ZpbmRfYnlfaWQgKG1fZmlkKTsKLS0gIGlmIChmcmFtZSA9 PSBOVUxMKQotLSAgICB3YXJuaW5nIChfKCJVbmFibGUgdG8gcmVzdG9yZSBwcmV2aW91c2x5IHNl bGVjdGVkIGZyYW1lLiIpKTsKLS0gIGVsc2UKLS0gICAgc2VsZWN0X2ZyYW1lIChmcmFtZSk7Ci0r ICByZXN0b3JlX3NlbGVjdGVkX2ZyYW1lIChtX2ZpZCwgbV9sZXZlbCk7Ci0rICBzZXRfbGFuZ3Vh Z2UgKG1fbGFuZyk7Ci0gfQotIAotIC8qIEZsYWcgdG8gY29udHJvbCBkZWJ1Z2dpbmcuICAqLwot QEAgLTE2ODUsMTAgKzE2ODMsNjMgQEAgZ2V0X2N1cnJlbnRfZnJhbWUgKHZvaWQpCi0gfQotIAot IC8qIFRoZSAic2VsZWN0ZWQiIHN0YWNrIGZyYW1lIGlzIHVzZWQgYnkgZGVmYXVsdCBmb3IgbG9j YWwgYW5kIGFyZwotLSAgIGFjY2Vzcy4gIE1heSBiZSB6ZXJvLCBmb3Igbm8gc2VsZWN0ZWQgZnJh bWUuICAqLwotLQotKyAgIGFjY2Vzcy4KLSsKLSsgICBUaGUgInNpbmdsZSBzb3VyY2Ugb2YgdHJ1 dGgiIGZvciB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgdGhlCi0rICAgU0VMRUNURURfRlJBTUVfSUQg LyBTRUxFQ1RFRF9GUkFNRV9MRVZFTCBwYWlyLgotKwotKyAgIEZyYW1lIElEcyBjYW4gYmUgc2F2 ZWQvcmVzdG9yZWQgYWNyb3NzIHJlaW5pdGlhbGl6aW5nIHRoZSBmcmFtZQotKyAgIGNhY2hlLCB3 aGlsZSBmcmFtZV9pbmZvIHBvaW50ZXJzIGNhbid0IChmcmFtZV9pbmZvIG9iamVjdHMgYXJlCi0r ICAgaW52YWxpZGF0ZWQpLiAgSWYgd2Uga25vdyB0aGUgY29ycmVzcG9uZGluZyBmcmFtZV9pbmZv IG9iamVjdCwgaXQKLSsgICBpcyBjYWNoZWQgaW4gU0VMRUNURURfRlJBTUUuCi0rCi0rICAgSWYg U0VMRUNURURfRlJBTUVfSUQgLyBTRUxFQ1RFRF9GUkFNRV9MRVZFTCBhcmUgbnVsbF9mcmFtZV9p ZCAvIC0xLAotKyAgIGFuZCB0aGUgdGFyZ2V0IGhhcyBzdGFjayBhbmQgaXMgc3RvcHBlZCwgdGhl IHNlbGVjdGVkIGZyYW1lIGlzIHRoZQotKyAgIGN1cnJlbnQgKGlubmVybW9zdCkgZnJhbWUuICBU aGlzIG1lYW5zIHRoYXQgU0VMRUNURURfRlJBTUVfTEVWRUwgaXMKLSsgICBuZXZlciAwIGFuZCBT RUxFQ1RFRF9GUkFNRV9JRCBpcyBuZXZlciB0aGUgSUQgb2YgdGhlIGlubmVybW9zdAotKyAgIGZy YW1lLgotKwotKyAgIElmIFNFTEVDVEVEX0ZSQU1FX0lEIC8gU0VMRUNURURfRlJBTUVfTEVWRUwg YXJlIG51bGxfZnJhbWVfaWQgLyAtMSwKLSsgICBhbmQgdGhlIHRhcmdldCBoYXMgbm8gc3RhY2sg b3IgaXMgZXhlY3V0aW5nLCB0aGVuIHRoZXJlJ3Mgbm8KLSsgICBzZWxlY3RlZCBmcmFtZS4gICov Ci0rc3RhdGljIGZyYW1lX2lkIHNlbGVjdGVkX2ZyYW1lX2lkID0gbnVsbF9mcmFtZV9pZDsKLStz dGF0aWMgaW50IHNlbGVjdGVkX2ZyYW1lX2xldmVsID0gLTE7Ci0rCi0rLyogVGhlIGNhY2hlZCBm cmFtZV9pbmZvIG9iamVjdCBwb2ludGluZyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuCi0rICAgTG9v a2VkIHVwIG9uIGRlbWFuZCBieSBnZXRfc2VsZWN0ZWRfZnJhbWUuICAqLwotIHN0YXRpYyBzdHJ1 Y3QgZnJhbWVfaW5mbyAqc2VsZWN0ZWRfZnJhbWU7Ci0gCi0rLyogU2VlIGZyYW1lLmguICAqLwot KwotK3ZvaWQKLStzYXZlX3NlbGVjdGVkX2ZyYW1lIChmcmFtZV9pZCAqZnJhbWVfaWQsIGludCAq ZnJhbWVfbGV2ZWwpCi0rICBub2V4Y2VwdAotK3sKLSsgICpmcmFtZV9pZCA9IHNlbGVjdGVkX2Zy YW1lX2lkOwotKyAgKmZyYW1lX2xldmVsID0gc2VsZWN0ZWRfZnJhbWVfbGV2ZWw7Ci0rfQotKwot Ky8qIFNlZSBmcmFtZS5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAo ZnJhbWVfaWQgZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCkKLSsgIG5vZXhjZXB0Ci0rewotKyAg Lyogc2F2ZV9zZWxlY3RlZF9mcmFtZSBuZXZlciByZXR1cm5zIGxldmVsID09IDAsIHNvIHdlIHNo b3VsZG4ndCBzZWUKLSsgICAgIGl0IGhlcmUgZWl0aGVyLiAgKi8KLSsgIGdkYl9hc3NlcnQgKGZy YW1lX2xldmVsICE9IDApOwotKwotKyAgLyogRlJBTUVfSUQgY2FuIGJlIG51bGxfZnJhbWVfaWQg b25seSBJRkYgZnJhbWVfbGV2ZWwgaXMgLTEuICAqLwotKyAgZ2RiX2Fzc2VydCAoKGZyYW1lX2xl dmVsID09IC0xICYmICFmcmFtZV9pZF9wIChmcmFtZV9pZCkpCi0rCSAgICAgIHx8IChmcmFtZV9s ZXZlbCAhPSAtMSAmJiBmcmFtZV9pZF9wIChmcmFtZV9pZCkpKTsKLSsKLSsgIHNlbGVjdGVkX2Zy YW1lX2lkID0gZnJhbWVfaWQ7Ci0rICBzZWxlY3RlZF9mcmFtZV9sZXZlbCA9IGZyYW1lX2xldmVs OwotKwotKyAgLyogV2lsbCBiZSBsb29rZWQgdXAgbGF0ZXIgYnkgZ2V0X3NlbGVjdGVkX2ZyYW1l LiAgKi8KLSsgIHNlbGVjdGVkX2ZyYW1lID0gbnVsbHB0cjsKLSt9Ci0rCi0gYm9vbAotIGhhc19z dGFja19mcmFtZXMgKCkKLSB7Ci1AQCAtMTcxNSw5ICsxNzY2LDcgQEAgaGFzX3N0YWNrX2ZyYW1l cyAoKQotICAgcmV0dXJuIHRydWU7Ci0gfQotIAotLS8qIFJldHVybiB0aGUgc2VsZWN0ZWQgZnJh bWUuICBBbHdheXMgbm9uLU5VTEwgKHVubGVzcyB0aGVyZSBpc24ndCBhbgotLSAgIGluZmVyaW9y IHN1ZmZpY2llbnQgZm9yIGNyZWF0aW5nIGEgZnJhbWUpIGluIHdoaWNoIGNhc2UgYW4gZXJyb3Ig aXMKLS0gICB0aHJvd24uICAqLwotKy8qIFNlZSBmcmFtZS5oLiAgKi8KLSAKLSBzdHJ1Y3QgZnJh bWVfaW5mbyAqCi0gZ2V0X3NlbGVjdGVkX2ZyYW1lIChjb25zdCBjaGFyICptZXNzYWdlKQotQEAg LTE3MjYsMjQgKzE3NzUsMTQgQEAgZ2V0X3NlbGVjdGVkX2ZyYW1lIChjb25zdCBjaGFyICptZXNz YWdlKQotICAgICB7Ci0gICAgICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCAmJiAhaGFzX3N0YWNrX2Zy YW1lcyAoKSkKLSAJZXJyb3IgKCgiJXMiKSwgbWVzc2FnZSk7Ci0tICAgICAgLyogSGV5ISAgRG9u J3QgdHJ1c3QgdGhpcy4gIEl0IHNob3VsZCByZWFsbHkgYmUgcmUtZmluZGluZyB0aGUKLS0JIGxh c3Qgc2VsZWN0ZWQgZnJhbWUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0aHJlYWQuICBUaGlz LAotLQkgdGhvdWdoLCBpcyBiZXR0ZXIgdGhhbiBub3RoaW5nLiAgKi8KLS0gICAgICBzZWxlY3Rf ZnJhbWUgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKLSsKLSsgICAgICBsb29rdXBfc2VsZWN0ZWRf ZnJhbWUgKHNlbGVjdGVkX2ZyYW1lX2lkLCBzZWxlY3RlZF9mcmFtZV9sZXZlbCk7Ci0gICAgIH0K LSAgIC8qIFRoZXJlIGlzIGFsd2F5cyBhIGZyYW1lLiAgKi8KLSAgIGdkYl9hc3NlcnQgKHNlbGVj dGVkX2ZyYW1lICE9IE5VTEwpOwotICAgcmV0dXJuIHNlbGVjdGVkX2ZyYW1lOwotIH0KLSAKLS0v KiBJZiB0aGVyZSBpcyBhIHNlbGVjdGVkIGZyYW1lLCByZXR1cm4gaXQuICBPdGhlcndpc2UsIHJl dHVybiBOVUxMLiAgKi8KLS0KLS1zdHJ1Y3QgZnJhbWVfaW5mbyAqCi0tZ2V0X3NlbGVjdGVkX2Zy YW1lX2lmX3NldCAodm9pZCkKLS17Ci0tICByZXR1cm4gc2VsZWN0ZWRfZnJhbWU7Ci0tfQotLQot IC8qIFRoaXMgaXMgYSB2YXJpYW50IG9mIGdldF9zZWxlY3RlZF9mcmFtZSgpIHdoaWNoIGNhbiBi ZSBjYWxsZWQgd2hlbgotICAgIHRoZSBpbmZlcmlvciBkb2VzIG5vdCBoYXZlIGEgZnJhbWU7IGlu IHRoYXQgY2FzZSBpdCB3aWxsIHJldHVybgotICAgIE5VTEwgaW5zdGVhZCBvZiBjYWxsaW5nIGVy cm9yKCkuICAqLwotQEAgLTE3NTYsMTIgKzE3OTUsNDIgQEAgZGVwcmVjYXRlZF9zYWZlX2dldF9z ZWxlY3RlZF9mcmFtZSAodm9pZCkKLSAgIHJldHVybiBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwp OwotIH0KLSAKLS0vKiBTZWxlY3QgZnJhbWUgRkkgKG9yIE5VTEwgLSB0byBpbnZhbGlkYXRlIHRo ZSBjdXJyZW50IGZyYW1lKS4gICovCi0rLyogU2VsZWN0IGZyYW1lIEZJIChvciBOVUxMIC0gdG8g aW52YWxpZGF0ZSB0aGUgc2VsZWN0ZWQgZnJhbWUpLiAgKi8KLSAKLSB2b2lkCi0gc2VsZWN0X2Zy YW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZmkpCi0gewotICAgc2VsZWN0ZWRfZnJhbWUgPSBmaTsK LSsgIHNlbGVjdGVkX2ZyYW1lX2xldmVsID0gZnJhbWVfcmVsYXRpdmVfbGV2ZWwgKGZpKTsKLSsg IGlmIChzZWxlY3RlZF9mcmFtZV9sZXZlbCA9PSAwKQotKyAgICB7Ci0rICAgICAgLyogVHJlYXQg dGhlIGN1cnJlbnQgZnJhbWUgZXNwZWNpYWxseSAtLSB3ZSB3YW50IHRvIGFsd2F5cwotKwkgc2F2 ZS9yZXN0b3JlIGl0IHdpdGhvdXQgd2FybmluZywgZXZlbiBpZiB0aGUgZnJhbWUgSUQgY2hhbmdl cwotKwkgKHNlZSBsb29rdXBfc2VsZWN0ZWRfZnJhbWUpLiAgRS5nLjoKLSsKLSsJICAvLyBUaGUg Y3VycmVudCBmcmFtZSBpcyBzZWxlY3RlZCwgdGhlIHRhcmdldCBoYWQganVzdCBzdG9wcGVkLgot KwkgIHsKLSsJICAgIHNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lIHJlc3RvcmVfZnJhbWU7 Ci0rCSAgICBzb21lX29wZXJhdGlvbl90aGF0X2NoYW5nZXNfdGhlX3N0YWNrICgpOwotKwkgIH0K LSsJICAvLyBzY29wZWRfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSdzIGR0b3IgcnVucywgYnV0IHRo ZQotKwkgIC8vIG9yaWdpbmFsIGZyYW1lX2lkIGNhbid0IGJlIGZvdW5kLiAgTm8gbWF0dGVyIHdo ZXRoZXIgaXQKLSsJICAvLyBpcyBmb3VuZCBvciBub3QsIHdlIHN0aWxsIGVuZCB1cCB3aXRoIHRo ZSBub3ctY3VycmVudAotKwkgIC8vIGZyYW1lIHNlbGVjdGVkLiAgV2FybmluZyBpbiBsb29rdXBf c2VsZWN0ZWRfZnJhbWUgaW4gdGhpcwotKwkgIC8vIGNhc2Ugc2VlbXMgcG9pbnRsZXNzLgotKwot KwkgQWxzbyBnZXRfZnJhbWVfaWQgbWF5IGFjY2VzcyB0aGUgdGFyZ2V0J3MgcmVnaXN0ZXJzL21l bW9yeSwKLSsJIGFuZCB0aHVzIHNraXBwaW5nIGdldF9mcmFtZV9pZCBvcHRpbWl6ZXMgdGhlIGNv bW1vbiBjYXNlLgotKwotKwkgU2F2aW5nIHRoZSBzZWxlY3RlZCBmcmFtZSB0aGlzIHdheSBtYWtl cyBnZXRfc2VsZWN0ZWRfZnJhbWUKLSsJIGFuZCByZXN0b3JlX2N1cnJlbnRfZnJhbWUgcmV0dXJu L3JlLXNlbGVjdCB3aGF0ZXZlciBmcmFtZSBpcwotKwkgdGhlIGlubmVybW9zdCAoY3VycmVudCkg dGhlbi4gICovCi0rICAgICAgc2VsZWN0ZWRfZnJhbWVfbGV2ZWwgPSAtMTsKLSsgICAgICBzZWxl Y3RlZF9mcmFtZV9pZCA9IG51bGxfZnJhbWVfaWQ7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgc2Vs ZWN0ZWRfZnJhbWVfaWQgPSBnZXRfZnJhbWVfaWQgKGZpKTsKLSsKLSAgIC8qIE5PVEU6IGNhZ25l eS8yMDAyLTA1LTA0OiBGSSBjYW4gYmUgTlVMTC4gIFRoaXMgb2NjdXJzIHdoZW4gdGhlCi0gICAg ICBmcmFtZSBpcyBiZWluZyBpbnZhbGlkYXRlZC4gICovCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2Zy YW1lLmggYi9nZGIvZnJhbWUuaAotLS0tIGEvZ2RiL2ZyYW1lLmgKLSsrKyBiL2dkYi9mcmFtZS5o Ci1AQCAtMTg2LDggKzE4NiwxNCBAQCBjbGFzcyBzY29wZWRfcmVzdG9yZV9zZWxlY3RlZF9mcmFt ZQotIAotIHByaXZhdGU6Ci0gCi0tICAvKiBUaGUgSUQgb2YgdGhlIHByZXZpb3VzbHkgc2VsZWN0 ZWQgZnJhbWUuICAqLwotKyAgLyogVGhlIElEIGFuZCBsZXZlbCBvZiB0aGUgcHJldmlvdXNseSBz ZWxlY3RlZCBmcmFtZS4gICovCi0gICBzdHJ1Y3QgZnJhbWVfaWQgbV9maWQ7Ci0rICBpbnQgbV9s ZXZlbDsKLSsKLSsgIC8qIFNhdmUvcmVzdG9yZSB0aGUgbGFuZ3VhZ2UgYXMgd2VsbCwgYmVjYXVz ZSBzZWxlY3RpbmcgYSBmcmFtZQotKyAgICAgY2hhbmdlcyB0aGUgY3VycmVudCBsYW5ndWFnZSB0 byB0aGUgZnJhbWUncyBsYW5ndWFnZSBpZiAic2V0Ci0rICAgICBsYW5ndWFnZSBhdXRvIi4gICov Ci0rICBlbnVtIGxhbmd1YWdlIG1fbGFuZzsKLSB9OwotIAotIC8qIE1ldGhvZHMgZm9yIGNvbnN0 cnVjdGluZyBhbmQgY29tcGFyaW5nIEZyYW1lIElEcy4gICovCi1AQCAtMzE2LDI0ICszMjIsNDkg QEAgZXh0ZXJuIGJvb2wgaGFzX3N0YWNrX2ZyYW1lcyAoKTsKLSAgICBtb2RpZmllcyB0aGUgdGFy Z2V0IGludmFsaWRhdGluZyB0aGUgZnJhbWUgY2FjaGUpLiAgKi8KLSBleHRlcm4gdm9pZCByZWlu aXRfZnJhbWVfY2FjaGUgKHZvaWQpOwotIAotLS8qIE9uIGRlbWFuZCwgY3JlYXRlIHRoZSBzZWxl Y3RlZCBmcmFtZSBhbmQgdGhlbiByZXR1cm4gaXQuICBJZiB0aGUKLS0gICBzZWxlY3RlZCBmcmFt ZSBjYW4gbm90IGJlIGNyZWF0ZWQsIHRoaXMgZnVuY3Rpb24gcHJpbnRzIHRoZW4gdGhyb3dzCi0t ICAgYW4gZXJyb3IuICBXaGVuIE1FU1NBR0UgaXMgbm9uLU5VTEwsIHVzZSBpdCBmb3IgdGhlIGVy cm9yIG1lc3NhZ2UsCi0rLyogUmV0dXJuIHRoZSBzZWxlY3RlZCBmcmFtZS4gIEFsd2F5cyByZXR1 cm5zIG5vbi1OVUxMLiAgSWYgdGhlcmUKLSsgICBpc24ndCBhbiBpbmZlcmlvciBzdWZmaWNpZW50 IGZvciBjcmVhdGluZyBhIGZyYW1lLCBhbiBlcnJvciBpcwotKyAgIHRocm93bi4gIFdoZW4gTUVT U0FHRSBpcyBub24tTlVMTCwgdXNlIGl0IGZvciB0aGUgZXJyb3IgbWVzc2FnZSwKLSAgICBvdGhl cndpc2UgdXNlIGEgZ2VuZXJpYyBlcnJvciBtZXNzYWdlLiAgKi8KLSAvKiBGSVhNRTogY2FnbmV5 LzIwMDItMTEtMjg6IEF0IHByZXNlbnQsIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0ZWQKLSAgICBm cmFtZSwgdGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucyB0aGUgY3VycmVudCAoaW5uZXIgbW9z dCkgZnJhbWUuCi0gICAgSXQgc2hvdWxkIGluc3RlYWQsIHdoZW4gYSB0aHJlYWQgaGFzIHByZXZp b3VzbHkgaGFkIGl0cyBmcmFtZQotICAgIHNlbGVjdGVkIChidXQgbm90IHJlc3VtZWQpIGFuZCB0 aGUgZnJhbWUgY2FjaGUgaW52YWxpZGF0ZWQsIGZpbmQKLSAgICBhbmQgdGhlbiByZXR1cm4gdGhh dCB0aHJlYWQncyBwcmV2aW91c2x5IHNlbGVjdGVkIGZyYW1lLiAgKi8KLS1leHRlcm4gc3RydWN0 IGZyYW1lX2luZm8gKmdldF9zZWxlY3RlZF9mcmFtZSAoY29uc3QgY2hhciAqbWVzc2FnZSk7Ci0t Ci0tLyogSWYgdGhlcmUgaXMgYSBzZWxlY3RlZCBmcmFtZSwgcmV0dXJuIGl0LiAgT3RoZXJ3aXNl LCByZXR1cm4gTlVMTC4gICovCi0tZXh0ZXJuIHN0cnVjdCBmcmFtZV9pbmZvICpnZXRfc2VsZWN0 ZWRfZnJhbWVfaWZfc2V0ICh2b2lkKTsKLStleHRlcm4gc3RydWN0IGZyYW1lX2luZm8gKmdldF9z ZWxlY3RlZF9mcmFtZSAoY29uc3QgY2hhciAqbWVzc2FnZSA9IG51bGxwdHIpOwotIAotLS8qIFNl bGVjdCBhIHNwZWNpZmljIGZyYW1lLiAgTlVMTCwgYXBwYXJlbnRseSBpbXBsaWVzIHJlLXNlbGVj dCB0aGUKLS0gICBpbm5lciBtb3N0IGZyYW1lLiAgKi8KLSsvKiBTZWxlY3QgYSBzcGVjaWZpYyBm cmFtZS4gIE5VTEwgaW1wbGllcyByZS1zZWxlY3QgdGhlIGlubmVyIG1vc3QKLSsgICBmcmFtZS4g ICovCi0gZXh0ZXJuIHZvaWQgc2VsZWN0X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLSAK LSsvKiBTYXZlIHRoZSBmcmFtZSBJRCBhbmQgZnJhbWUgbGV2ZWwgb2YgdGhlIHNlbGVjdGVkIGZy YW1lIGluIEZSQU1FX0lECi0rICAgYW5kIEZSQU1FX0xFVkVMLCB0byBiZSByZXN0b3JlZCBsYXRl ciB3aXRoIHJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUuCi0rCi0rICAgVGhpcyBpcyBwcmVmZXJyZWQg b3ZlciBnZXR0aW5nIHRoZSBzYW1lIGluZm8gb3V0IG9mCi0rICAgZ2V0X3NlbGVjdGVkX2ZyYW1l IGRpcmVjdGx5IGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjcmVhdGUKLSsgICB0aGUg c2VsZWN0ZWQtZnJhbWUncyBmcmFtZV9pbmZvIG9iamVjdCBpZiBpdCBoYXNuJ3QgYmVlbiBjcmVh dGVkCi0rICAgeWV0LCBhbmQgdGh1cyBpcyBtb3JlIGVmZmljaWVudCBhbmQgZG9lc24ndCB0aHJv dy4gICovCi0rZXh0ZXJuIHZvaWQgc2F2ZV9zZWxlY3RlZF9mcmFtZSAoZnJhbWVfaWQgKmZyYW1l X2lkLCBpbnQgKmZyYW1lX2xldmVsKQotKyAgbm9leGNlcHQ7Ci0rCi0rLyogUmVzdG9yZSBzZWxl Y3RlZCBmcmFtZSBhcyBzYXZlZCB3aXRoIHNhdmVfc2VsZWN0ZWRfZnJhbWUuCi0rCi0rICAgRG9l cyBub3QgdHJ5IHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZnJhbWVfaW5mbyBvYmplY3QuICBJ bnN0ZWFkCi0rICAgdGhlIG5leHQgY2FsbCB0byBnZXRfc2VsZWN0ZWRfZnJhbWUgd2lsbCBsb29r IGl0IHVwIGFuZCBjYWNoZSB0aGUKLSsgICByZXN1bHQuCi0rCi0rICAgVGhpcyBmdW5jdGlvbiBk b2VzIG5vdCB0aHJvdy4gIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHNhZmUgdG8gY2FsbGVkCi0rICAg ZnJvbSB0aGUgZGVzdHJ1Y3RvcnMgb2YgUkFJSSB0eXBlcy4gICovCi0rZXh0ZXJuIHZvaWQgcmVz dG9yZV9zZWxlY3RlZF9mcmFtZSAoZnJhbWVfaWQgZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCkK LSsgIG5vZXhjZXB0OwotKwotKy8qIExvb2t1cCB0aGUgZnJhbWVfaW5mbyBvYmplY3QgZm9yIHRo ZSBzZWxlY3RlZCBmcmFtZSBGUkFNRV9JRCAvCi0rICAgRlJBTUVfTEVWRUwgYW5kIGNhY2hlIHRo ZSByZXN1bHQuCi0rCi0rICAgSWYgRlJBTUVfTEVWRUwgPiAwIGFuZCB0aGUgb3JpZ2luYWxseSBz ZWxlY3RlZCBmcmFtZSBpc24ndCBmb3VuZCwKLSsgICB3YXJuIGFuZCBzZWxlY3QgdGhlIGlubmVy bW9zdCAoY3VycmVudCkgZnJhbWUuICAqLwotK2V4dGVybiB2b2lkIGxvb2t1cF9zZWxlY3RlZF9m cmFtZSAoZnJhbWVfaWQgZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCk7Ci0rCi0gLyogR2l2ZW4g YSBGUkFNRSwgcmV0dXJuIHRoZSBuZXh0IChtb3JlIGlubmVyLCB5b3VuZ2VyKSBvciBwcmV2aW91 cwotICAgIChtb3JlIG91dGVyLCBvbGRlcikgZnJhbWUuICAqLwotIGV4dGVybiBzdHJ1Y3QgZnJh bWVfaW5mbyAqZ2V0X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICopOwotZGlmZiAtLWdp dCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQuaAotLS0tIGEvZ2RiL2dkYnRocmVh ZC5oCi0rKysgYi9nZGIvZ2RidGhyZWFkLmgKLUBAIC02NzMsNiArNjczLDEwIEBAIGNsYXNzIHNj b3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkCi0gICBmcmFtZV9pZCBtX3NlbGVjdGVkX2ZyYW1l X2lkOwotICAgaW50IG1fc2VsZWN0ZWRfZnJhbWVfbGV2ZWw7Ci0gICBib29sIG1fd2FzX3N0b3Bw ZWQ7Ci0rICAvKiBTYXZlL3Jlc3RvcmUgdGhlIGxhbmd1YWdlIGFzIHdlbGwsIGJlY2F1c2Ugc2Vs ZWN0aW5nIGEgZnJhbWUKLSsgICAgIGNoYW5nZXMgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgdG8gdGhl IGZyYW1lJ3MgbGFuZ3VhZ2UgaWYgInNldAotKyAgICAgbGFuZ3VhZ2UgYXV0byIuICAqLwotKyAg ZW51bSBsYW5ndWFnZSBtX2xhbmc7Ci0gfTsKLSAKLSAvKiBSZXR1cm5zIGEgcG9pbnRlciBpbnRv IHRoZSB0aHJlYWRfaW5mbyBjb3JyZXNwb25kaW5nIHRvCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1 bi5jIGIvZ2RiL2luZnJ1bi5jCi0tLS0gYS9nZGIvaW5mcnVuLmMKLSsrKyBiL2dkYi9pbmZydW4u YwotQEAgLTkwMDYsOCArOTAwNiwxMCBAQCBzdHJ1Y3QgaW5mY2FsbF9jb250cm9sX3N0YXRlCi0g ICBlbnVtIHN0b3Bfc3RhY2tfa2luZCBzdG9wX3N0YWNrX2R1bW15ID0gU1RPUF9OT05FOwotICAg aW50IHN0b3BwZWRfYnlfcmFuZG9tX3NpZ25hbCA9IDA7Ci0gCi0tICAvKiBJRCBpZiB0aGUgc2Vs ZWN0ZWQgZnJhbWUgd2hlbiB0aGUgaW5mZXJpb3IgZnVuY3Rpb24gY2FsbCB3YXMgbWFkZS4gICov Ci0rICAvKiBJRCBhbmQgbGV2ZWwgb2YgdGhlIHNlbGVjdGVkIGZyYW1lIHdoZW4gdGhlIGluZmVy aW9yIGZ1bmN0aW9uCi0rICAgICBjYWxsIHdhcyBtYWRlLiAgKi8KLSAgIHN0cnVjdCBmcmFtZV9p ZCBzZWxlY3RlZF9mcmFtZV9pZCB7fTsKLSsgIGludCBzZWxlY3RlZF9mcmFtZV9sZXZlbCA9IC0x OwotIH07Ci0gCi0gLyogU2F2ZSBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0 aCB0aGUgaW5mZXJpb3I8PT0+Z2RiCi1AQCAtOTAzNiwyNyArOTAzOCwxMiBAQCBzYXZlX2luZmNh bGxfY29udHJvbF9zdGF0ZSAoKQotICAgaW5mX3N0YXR1cy0+c3RvcF9zdGFja19kdW1teSA9IHN0 b3Bfc3RhY2tfZHVtbXk7Ci0gICBpbmZfc3RhdHVzLT5zdG9wcGVkX2J5X3JhbmRvbV9zaWduYWwg PSBzdG9wcGVkX2J5X3JhbmRvbV9zaWduYWw7Ci0gCi0tICBpbmZfc3RhdHVzLT5zZWxlY3RlZF9m cmFtZV9pZCA9IGdldF9mcmFtZV9pZCAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSk7Ci0rICBz YXZlX3NlbGVjdGVkX2ZyYW1lICgmaW5mX3N0YXR1cy0+c2VsZWN0ZWRfZnJhbWVfaWQsCi0rCQkg ICAgICAgJmluZl9zdGF0dXMtPnNlbGVjdGVkX2ZyYW1lX2xldmVsKTsKLSAKLSAgIHJldHVybiBp bmZfc3RhdHVzOwotIH0KLSAKLS1zdGF0aWMgdm9pZAotLXJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUg KGNvbnN0IGZyYW1lX2lkICZmaWQpCi0tewotLSAgZnJhbWVfaW5mbyAqZnJhbWUgPSBmcmFtZV9m aW5kX2J5X2lkIChmaWQpOwotLQotLSAgLyogSWYgaW5mX3N0YXR1cy0+c2VsZWN0ZWRfZnJhbWVf aWQgaXMgTlVMTCwgdGhlcmUgd2FzIG5vIHByZXZpb3VzbHkKLS0gICAgIHNlbGVjdGVkIGZyYW1l LiAgKi8KLS0gIGlmIChmcmFtZSA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgd2FybmluZyAoXygi VW5hYmxlIHRvIHJlc3RvcmUgcHJldmlvdXNseSBzZWxlY3RlZCBmcmFtZS4iKSk7Ci0tICAgICAg cmV0dXJuOwotLSAgICB9Ci0tCi0tICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKLS19Ci0tCi0gLyog UmVzdG9yZSBpbmZlcmlvciBzZXNzaW9uIHN0YXRlIHRvIElORl9TVEFUVVMuICAqLwotIAotIHZv aWQKLUBAIC05MDg0LDIxICs5MDcxLDggQEAgcmVzdG9yZV9pbmZjYWxsX2NvbnRyb2xfc3RhdGUg KHN0cnVjdCBpbmZjYWxsX2NvbnRyb2xfc3RhdGUgKmluZl9zdGF0dXMpCi0gCi0gICBpZiAodGFy Z2V0X2hhc19zdGFjaykKLSAgICAgewotLSAgICAgIC8qIFRoZSBwb2ludCBvZiB0aGUgdHJ5L2Nh dGNoIGlzIHRoYXQgaWYgdGhlIHN0YWNrIGlzIGNsb2JiZXJlZCwKLS0gICAgICAgICB3YWxraW5n IHRoZSBzdGFjayBtaWdodCBlbmNvdW50ZXIgYSBnYXJiYWdlIHBvaW50ZXIgYW5kCi0tICAgICAg ICAgZXJyb3IoKSB0cnlpbmcgdG8gZGVyZWZlcmVuY2UgaXQuICAqLwotLSAgICAgIHRyeQotLQl7 Ci0tCSAgcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoaW5mX3N0YXR1cy0+c2VsZWN0ZWRfZnJhbWVf aWQpOwotLQl9Ci0tICAgICAgY2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRpb25fZXJyb3IgJmV4KQot LQl7Ci0tCSAgZXhjZXB0aW9uX2ZwcmludGYgKGdkYl9zdGRlcnIsIGV4LAotLQkJCSAgICAgIlVu YWJsZSB0byByZXN0b3JlIHByZXZpb3VzbHkgc2VsZWN0ZWQgZnJhbWU6XG4iKTsKLS0JICAvKiBF cnJvciBpbiByZXN0b3JpbmcgdGhlIHNlbGVjdGVkIGZyYW1lLiAgU2VsZWN0IHRoZQotLQkgICAg IGlubmVybW9zdCBmcmFtZS4gICovCi0tCSAgc2VsZWN0X2ZyYW1lIChnZXRfY3VycmVudF9mcmFt ZSAoKSk7Ci0tCX0KLSsgICAgICByZXN0b3JlX3NlbGVjdGVkX2ZyYW1lIChpbmZfc3RhdHVzLT5z ZWxlY3RlZF9mcmFtZV9pZCwKLSsJCQkgICAgICBpbmZfc3RhdHVzLT5zZWxlY3RlZF9mcmFtZV9s ZXZlbCk7Ci0gICAgIH0KLSAKLSAgIGRlbGV0ZSBpbmZfc3RhdHVzOwotZGlmZiAtLWdpdCBhL2dk Yi9zdGFjay5jIGIvZ2RiL3N0YWNrLmMKLS0tLSBhL2dkYi9zdGFjay5jCi0rKysgYi9nZGIvc3Rh Y2suYwotQEAgLTE4NDIsOSArMTg0Miw5IEBAIHRyYWlsaW5nX291dGVybW9zdF9mcmFtZSAoaW50 IGNvdW50KQotIHN0YXRpYyB2b2lkCi0gc2VsZWN0X2ZyYW1lX2NvbW1hbmRfY29yZSAoc3RydWN0 IGZyYW1lX2luZm8gKmZpLCBib29sIGlnbm9yZWQpCi0gewotLSAgc3RydWN0IGZyYW1lX2luZm8g KnByZXZfZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWVfaWZfc2V0ICgpOwotKyAgZnJhbWVfaW5m byAqcHJldl9mcmFtZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoKTsKLSAgIHNlbGVjdF9mcmFtZSAo ZmkpOwotLSAgaWYgKGdldF9zZWxlY3RlZF9mcmFtZV9pZl9zZXQgKCkgIT0gcHJldl9mcmFtZSkK LSsgIGlmIChnZXRfc2VsZWN0ZWRfZnJhbWUgKCkgIT0gcHJldl9mcmFtZSkKLSAgICAgZ2RiOjpv YnNlcnZlcnM6OnVzZXJfc2VsZWN0ZWRfY29udGV4dF9jaGFuZ2VkLm5vdGlmeSAoVVNFUl9TRUxF Q1RFRF9GUkFNRSk7Ci0gfQotIAotQEAgLTE4NjMsMTAgKzE4NjMsOSBAQCBzZWxlY3RfZnJhbWVf Zm9yX21pIChzdHJ1Y3QgZnJhbWVfaW5mbyAqZmkpCi0gc3RhdGljIHZvaWQKLSBmcmFtZV9jb21t YW5kX2NvcmUgKHN0cnVjdCBmcmFtZV9pbmZvICpmaSwgYm9vbCBpZ25vcmVkKQotIHsKLS0gIHN0 cnVjdCBmcmFtZV9pbmZvICpwcmV2X2ZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCAo KTsKLS0KLSsgIGZyYW1lX2luZm8gKnByZXZfZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKCk7 Ci0gICBzZWxlY3RfZnJhbWUgKGZpKTsKLS0gIGlmIChnZXRfc2VsZWN0ZWRfZnJhbWVfaWZfc2V0 ICgpICE9IHByZXZfZnJhbWUpCi0rICBpZiAoZ2V0X3NlbGVjdGVkX2ZyYW1lICgpICE9IHByZXZf ZnJhbWUpCi0gICAgIGdkYjo6b2JzZXJ2ZXJzOjp1c2VyX3NlbGVjdGVkX2NvbnRleHRfY2hhbmdl ZC5ub3RpZnkgKFVTRVJfU0VMRUNURURfRlJBTUUpOwotICAgZWxzZQotICAgICBwcmludF9zZWxl Y3RlZF90aHJlYWRfZnJhbWUgKGN1cnJlbnRfdWlvdXQsIFVTRVJfU0VMRUNURURfRlJBTUUpOwot ZGlmZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwotLS0tIGEvZ2RiL3RocmVh ZC5jCi0rKysgYi9nZGIvdGhyZWFkLmMKLUBAIC0xMzI1LDIwICsxMzI1LDI2IEBAIHN3aXRjaF90 b190aHJlYWQgKHByb2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0LCBwdGlkX3QgcHRp ZCkKLSAgIHN3aXRjaF90b190aHJlYWQgKHRocik7Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0tcmVz dG9yZV9zZWxlY3RlZF9mcmFtZSAoc3RydWN0IGZyYW1lX2lkIGFfZnJhbWVfaWQsIGludCBmcmFt ZV9sZXZlbCkKLSsvKiBTZWUgZnJhbWUuaC4gICovCi0rCi0rdm9pZAotK2xvb2t1cF9zZWxlY3Rl ZF9mcmFtZSAoc3RydWN0IGZyYW1lX2lkIGFfZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCkKLSB7 Ci0gICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUgPSBOVUxMOwotICAgaW50IGNvdW50OwotIAot LSAgLyogVGhpcyBtZWFucyB0aGVyZSB3YXMgbm8gc2VsZWN0ZWQgZnJhbWUuICAqLwotKyAgLyog VGhpcyBlaXRoZXIgbWVhbnMgdGhlcmUgd2FzIG5vIHNlbGVjdGVkIGZyYW1lLCBvciB0aGUgc2Vs ZWN0ZWQKLSsgICAgIGZyYW1lIHdhcyB0aGUgY3VycmVudCBmcmFtZS4gIEluIGVpdGhlciBjYXNl LCBzZWxlY3QgdGhlIGN1cnJlbnQKLSsgICAgIGZyYW1lLiAgKi8KLSAgIGlmIChmcmFtZV9sZXZl bCA9PSAtMSkKLSAgICAgewotLSAgICAgIHNlbGVjdF9mcmFtZSAoTlVMTCk7Ci0rICAgICAgc2Vs ZWN0X2ZyYW1lIChnZXRfY3VycmVudF9mcmFtZSAoKSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9 Ci0gCi0tICBnZGJfYXNzZXJ0IChmcmFtZV9sZXZlbCA+PSAwKTsKLSsgIC8qIHNlbGVjdF9mcmFt ZSBuZXZlciBzYXZlcyAwIGluIFNFTEVDVEVEX0ZSQU1FX0xFVkVMLCBzbyB3ZQotKyAgICAgc2hv dWxkbid0IHNlZSBpdCBoZXJlLiAgKi8KLSsgIGdkYl9hc3NlcnQgKGZyYW1lX2xldmVsID4gMCk7 Ci0gCi0gICAvKiBSZXN0b3JlIGJ5IGxldmVsIGZpcnN0LCBjaGVjayBpZiB0aGUgZnJhbWUgaWQg aXMgdGhlIHNhbWUgYXMKLSAgICAgIGV4cGVjdGVkLiAgSWYgdGhhdCBmYWlscywgdHJ5IHJlc3Rv cmluZyBieSBmcmFtZSBpZC4gIElmIHRoYXQKLUBAIC0xNDA5LDY0ICsxNDE1LDI4IEBAIHNjb3Bl ZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkOjpyZXN0b3JlICgpCi0gICAgICAgJiYgdGFyZ2V0X2hh c19zdGFjawotICAgICAgICYmIHRhcmdldF9oYXNfbWVtb3J5KQotICAgICByZXN0b3JlX3NlbGVj dGVkX2ZyYW1lIChtX3NlbGVjdGVkX2ZyYW1lX2lkLCBtX3NlbGVjdGVkX2ZyYW1lX2xldmVsKTsK LSsKLSsgIHNldF9sYW5ndWFnZSAobV9sYW5nKTsKLSB9Ci0gCi0gc2NvcGVkX3Jlc3RvcmVfY3Vy cmVudF90aHJlYWQ6On5zY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCAoKQotIHsKLSAgIGlm ICghbV9kb250X3Jlc3RvcmUpCi0tICAgIHsKLS0gICAgICB0cnkKLS0JewotLQkgIHJlc3RvcmUg KCk7Ci0tCX0KLS0gICAgICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlvbiAmZXgpCi0tCXsKLS0J ICAvKiBXZSdyZSBpbiBhIGR0b3IsIHRoZXJlJ3MgcmVhbGx5IG5vdGhpbmcgZWxzZSB3ZSBjYW4g ZG8KLS0JICAgICBidXQgc3dhbGxvdyB0aGUgZXhjZXB0aW9uLiAgKi8KLS0JfQotLSAgICB9Ci0r ICAgIHJlc3RvcmUgKCk7Ci0gfQotIAotIHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkOjpz Y29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCAoKQotIHsKLSAgIG1faW5mID0gaW5mZXJpb3Jf cmVmOjpuZXdfcmVmZXJlbmNlIChjdXJyZW50X2luZmVyaW9yICgpKTsKLSAKLSsgIG1fbGFuZyA9 IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlOwotKwotICAgaWYgKGluZmVyaW9yX3B0aWQg IT0gbnVsbF9wdGlkKQotICAgICB7Ci0gICAgICAgbV90aHJlYWQgPSB0aHJlYWRfaW5mb19yZWY6 Om5ld19yZWZlcmVuY2UgKGluZmVyaW9yX3RocmVhZCAoKSk7Ci0gCi0tICAgICAgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lOwotLQotICAgICAgIG1fd2FzX3N0b3BwZWQgPSBtX3RocmVhZC0+c3Rh dGUgPT0gVEhSRUFEX1NUT1BQRUQ7Ci0tICAgICAgaWYgKG1fd2FzX3N0b3BwZWQKLS0JICAmJiB0 YXJnZXRfaGFzX3JlZ2lzdGVycwotLQkgICYmIHRhcmdldF9oYXNfc3RhY2sKLS0JICAmJiB0YXJn ZXRfaGFzX21lbW9yeSkKLS0JewotLQkgIC8qIFdoZW4gcHJvY2Vzc2luZyBpbnRlcm5hbCBldmVu dHMsIHRoZXJlIG1pZ2h0IG5vdCBiZSBhCi0tCSAgICAgc2VsZWN0ZWQgZnJhbWUuICBJZiB3ZSBu YWl2ZWx5IGNhbGwgZ2V0X3NlbGVjdGVkX2ZyYW1lCi0tCSAgICAgaGVyZSwgdGhlbiB3ZSBjYW4g ZW5kIHVwIHJlYWRpbmcgZGVidWdpbmZvIGZvciB0aGUKLS0JICAgICBjdXJyZW50IGZyYW1lLCBi dXQgd2UgZG9uJ3QgZ2VuZXJhbGx5IG5lZWQgdGhlIGRlYnVnaW5mbwotLQkgICAgIGF0IHRoaXMg cG9pbnQuICAqLwotLQkgIGZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCAoKTsKLS0J fQotLSAgICAgIGVsc2UKLS0JZnJhbWUgPSBOVUxMOwotLQotLSAgICAgIHRyeQotLQl7Ci0tCSAg bV9zZWxlY3RlZF9mcmFtZV9pZCA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotLQkgIG1fc2VsZWN0 ZWRfZnJhbWVfbGV2ZWwgPSBmcmFtZV9yZWxhdGl2ZV9sZXZlbCAoZnJhbWUpOwotLQl9Ci0tICAg ICAgY2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRpb25fZXJyb3IgJmV4KQotLQl7Ci0tCSAgbV9zZWxl Y3RlZF9mcmFtZV9pZCA9IG51bGxfZnJhbWVfaWQ7Ci0tCSAgbV9zZWxlY3RlZF9mcmFtZV9sZXZl bCA9IC0xOwotLQotLQkgIC8qIEJldHRlciBsZXQgdGhpcyBwcm9wYWdhdGUuICAqLwotLQkgIGlm IChleC5lcnJvciA9PSBUQVJHRVRfQ0xPU0VfRVJST1IpCi0tCSAgICB0aHJvdzsKLS0JfQotKyAg ICAgIHNhdmVfc2VsZWN0ZWRfZnJhbWUgKCZtX3NlbGVjdGVkX2ZyYW1lX2lkLCAmbV9zZWxlY3Rl ZF9mcmFtZV9sZXZlbCk7Ci0gICAgIH0KLSB9Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTA5 OTAyLWZyYW1lX2lkX3AtYXNzZXJ0LTIucGF0Y2ggYi9nZGItcmhiejE5MDk5MDItZnJhbWVfaWRf cC1hc3NlcnQtMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwNGJiZS4u MDAwMDAwMAotLS0gYS9nZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGVkcm8gQWx2ZXMgPHBlZHJvQHBhbHZlcy5uZXQ+ Ci1EYXRlOiBTYXQsIDMxIE9jdCAyMDIwIDAwOjI3OjE4ICswMDAwCi1TdWJqZWN0OiBnZGItcmhi ejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMi5wYXRjaAotCi07OyBCYWNrcG9ydCBwYXRjaCAj MiB3aGljaCBmaXhlcyBhIGZyYW1lX2lkX3AgYXNzZXJ0aW9uIGZhaWx1cmUgKFJIIEJaIDE5MDk5 MDIpLgotCi1GaXggZnJhbWUgY3ljbGUgZGV0ZWN0aW9uCi0KLVRoZSByZWNlbnQgY29tbWl0IHRv IG1ha2Ugc2NvcGVkX3Jlc3RvcmVfY3VycmVudF90aHJlYWQncyBjZHRvcnMKLWV4Y2VwdGlvbiBm cmVlIHJlZ3Jlc3NlZCBnZGIuYmFzZS9laF9yZXR1cm4uZXhwOgotCi0gIEJyZWFrcG9pbnQgMSwg MHgwMDAwMDAwMDAwNDAxMmJiIGluIGVoMiAoZ2RiL2ZyYW1lLmM6NjQxOiBpbnRlcm5hbC1lcnJv cjogZnJhbWVfaWQgZ2V0X2ZyYW1lX2lkKGZyYW1lX2luZm8qKTogQXNzZXJ0aW9uIGBzdGFzaGVk JyBmYWlsZWQuCi0gIEEgcHJvYmxlbSBpbnRlcm5hbCB0byBHREIgaGFzIGJlZW4gZGV0ZWN0ZWQs Ci0gIGZ1cnRoZXIgZGVidWdnaW5nIG1heSBwcm92ZSB1bnJlbGlhYmxlLgotICBRdWl0IHRoaXMg ZGVidWdnaW5nIHNlc3Npb24/ICh5IG9yIG4pIEZBSUw6IGdkYi5iYXNlL2VoX3JldHVybi5leHA6 IGhpdCBicmVha3BvaW50IChHREIgaW50ZXJuYWwgZXJyb3IpCi0KLVRoYXQgdGVzdGNhc2UgdXNl cyBfX2J1aWx0aW5fZWhfcmV0dXJuIGFuZCwgYmVmb3JlIHRoZSByZWdyZXNzaW9uLCB0aGUKLWJh Y2t0cmFjZSBhdCBlaDIgbG9va2VkIGxpa2UgdGhpczoKLQotIChnZGIpIGJ0Ci0gIzAgIDB4MDAw MDAwMDAwMDQwMDZlYiBpbiBlaDIgKHA9MHg0MDA2ZWMgPGNvbnRpbnVhdGlvbj4pIGF0IHNyYy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2VoX3JldHVybi5jOjU0Ci0gQmFja3RyYWNlIHN0b3BwZWQ6 IHByZXZpb3VzIGZyYW1lIGlkZW50aWNhbCB0byB0aGlzIGZyYW1lIChjb3JydXB0IHN0YWNrPykK LQotVGhhdCAicHJldmlvdXMgZnJhbWUgaWRlbnRpY2FsIHRvIHRoaXMgZnJhbWUiIGlzIGNhdWdo dCBieSB0aGUgY3ljbGUKLWRldGVjdGlvbiBiYXNlZCBvbiBmcmFtZSBpZC4KLQotVGhlIGFzc2Vy dGlvbiBmYWlsaW5nIGlzIHRoaXMgb25lOgotCi0gNjM4ICAgICAgICAgICAvKiBTaW5jZSB0aGlz IGlzIHRoZSBmaXJzdCBmcmFtZSBpbiB0aGUgY2hhaW4sIHRoaXMgc2hvdWxkCi0gNjM5ICAgICAg ICAgICAgICBhbHdheXMgc3VjY2VlZC4gICovCi0gNjQwICAgICAgICAgICBib29sIHN0YXNoZWQg PSBmcmFtZV9zdGFzaF9hZGQgKGZpKTsKLSA2NDEgICAgICAgICAgIGdkYl9hc3NlcnQgKHN0YXNo ZWQpOwotCi1vcmlnaW5hbGx5IGFkZGVkIGJ5Ci0KLSAgY29tbWl0IGYyNDU1MzVjZjU4M2FlNGNh MTNiMTBkNDdiM2M3ZDMzMzQ1OTNlY2UKLSAgQXV0aG9yOiAgICAgUGVkcm8gQWx2ZXMgPHBhbHZl c0ByZWRoYXQuY29tPgotICBBdXRob3JEYXRlOiBNb24gU2VwIDUgMTg6NDE6MzggMjAxNiArMDEw MAotCi0gICAgICBGaXggUFIxOTkyNzogQXZvaWQgdW53aW5kZXIgcmVjdXJzaW9uIGlmIHNuaWZm ZXIgdXNlcyBjYWxscyBwYXJzZV9hbmRfZXZhbAotCi1UaGUgYXNzZXJ0aW9uIGlzIGZhaWxpbmcg YmVjYXVzZSBmcmFtZSAjMSdzIGZyYW1lIGlkIHdhcyBzdGFzaGVkCi1iZWZvcmUgdGhlIGlkIG9m IGZyYW1lICMwIGlzIHN0YXNoZWQuICBUaGUgZnJhbWUgaWQgb2YgZnJhbWUgIzEgd2FzCi1zdGFz aGVkIGhlcmU6Ci0KLSAodG9wLWdkYikgYnQKLSAjMCAgZnJhbWVfc3Rhc2hfYWRkIChmcmFtZT0w eDFlMjRjOTApIGF0IHNyYy9nZGIvZnJhbWUuYzoyNzYKLSAjMSAgMHgwMDAwMDAwMDAwNjY5YzFi IGluIGdldF9wcmV2X2ZyYW1lX2lmX25vX2N5Y2xlICh0aGlzX2ZyYW1lPTB4MTlmODM3MCkgYXQg c3JjL2dkYi9mcmFtZS5jOjIxMjAKLSAjMiAgMHgwMDAwMDAwMDAwNjZhMzM5IGluIGdldF9wcmV2 X2ZyYW1lX2Fsd2F5c18xICh0aGlzX2ZyYW1lPTB4MTlmODM3MCkgYXQgc3JjL2dkYi9mcmFtZS5j OjIzMDMKLSAjMyAgMHgwMDAwMDAwMDAwNjZhMzYwIGluIGdldF9wcmV2X2ZyYW1lX2Fsd2F5cyAo dGhpc19mcmFtZT0weDE5ZjgzNzApIGF0IHNyYy9nZGIvZnJhbWUuYzoyMzE5Ci0gIzQgIDB4MDAw MDAwMDAwMDY2YjU2YyBpbiBnZXRfZnJhbWVfdW53aW5kX3N0b3BfcmVhc29uIChmcmFtZT0weDE5 ZjgzNzApIGF0IHNyYy9nZGIvZnJhbWUuYzozMDI4Ci0gIzUgIDB4MDAwMDAwMDAwMDU5ZjkyOSBp biBkd2FyZjJfZnJhbWVfY2ZhICh0aGlzX2ZyYW1lPTB4MTlmODM3MCkgYXQgc3JjL2dkYi9kd2Fy ZjIvZnJhbWUuYzoxNDYyCi0gIzYgIDB4MDAwMDAwMDAwMDVjZTQzNCBpbiBkd2FyZl9ldmFsdWF0 ZV9sb2NfZGVzYzo6Z2V0X2ZyYW1lX2NmYSAodGhpcz0weDdmZmZmZmZmYzA3MCkgYXQgc3JjL2dk Yi9kd2FyZjIvbG9jLmM6NjY2Ci0gIzcgIDB4MDAwMDAwMDAwMDU5ODlhOSBpbiBkd2FyZl9leHBy X2NvbnRleHQ6OmV4ZWN1dGVfc3RhY2tfb3AgKHRoaXM9MHg3ZmZmZmZmZmMwNzAsIG9wX3B0cj0w eDFiMmEwNTMgIlwzNjRcMDAzIiwgb3BfZW5kPTB4MWIyYTA1MyAiXDM2NFwwMDMiKSBhdCBzcmMv Z2RiL2R3YXJmMi9leHByLmM6MTE2MQotICM4ICAweDAwMDAwMDAwMDA1OTZhZjYgaW4gZHdhcmZf ZXhwcl9jb250ZXh0OjpldmFsICh0aGlzPTB4N2ZmZmZmZmZjMDcwLCBhZGRyPTB4MWIyYTA1MiAi XDIzNFwzNjRcMDAzIiwgbGVuPTEpIGF0IHNyYy9nZGIvZHdhcmYyL2V4cHIuYzozMDMKLSAjOSAg MHgwMDAwMDAwMDAwNTk3YjRlIGluIGR3YXJmX2V4cHJfY29udGV4dDo6ZXhlY3V0ZV9zdGFja19v cCAodGhpcz0weDdmZmZmZmZmYzA3MCwgb3BfcHRyPTB4MWIyYTA2MyAiIiwgb3BfZW5kPTB4MWIy YTA2MyAiIikgYXQgc3JjL2dkYi9kd2FyZjIvZXhwci5jOjg2NQotICMxMCAweDAwMDAwMDAwMDA1 OTZhZjYgaW4gZHdhcmZfZXhwcl9jb250ZXh0OjpldmFsICh0aGlzPTB4N2ZmZmZmZmZjMDcwLCBh ZGRyPTB4MWIyYTA2MSAiXDIyMVgiLCBsZW49MikgYXQgc3JjL2dkYi9kd2FyZjIvZXhwci5jOjMw MwotICMxMSAweDAwMDAwMDAwMDA1YzhiNWEgaW4gZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1 bGwgKHR5cGU9MHgxYjU2NGQwLCBmcmFtZT0weDE5ZjgzNzAsIGRhdGE9MHgxYjJhMDYxICJcMjIx WCIsIHNpemU9MiwgcGVyX2N1PTB4MWIyODc2MCwgcGVyX29iamZpbGU9MHgxYTg0OTMwLCBzdWJv YmpfdHlwZT0weDFiNTY0ZDAsIHN1Ym9ial9ieXRlX29mZnNldD0wKSBhdCBzcmMvZ2RiL2R3YXJm Mi9sb2MuYzoyMjYwCi0gIzEyIDB4MDAwMDAwMDAwMDVjOTI0MyBpbiBkd2FyZjJfZXZhbHVhdGVf bG9jX2Rlc2MgKHR5cGU9MHgxYjU2NGQwLCBmcmFtZT0weDE5ZjgzNzAsIGRhdGE9MHgxYjJhMDYx ICJcMjIxWCIsIHNpemU9MiwgcGVyX2N1PTB4MWIyODc2MCwgcGVyX29iamZpbGU9MHgxYTg0OTMw KSBhdCBzcmMvZ2RiL2R3YXJmMi9sb2MuYzoyNDQ0Ci0gIzEzIDB4MDAwMDAwMDAwMDVjYjc2OSBp biBsb2NleHByX3JlYWRfdmFyaWFibGUgKHN5bWJvbD0weDFiNTk4NDAsIGZyYW1lPTB4MTlmODM3 MCkgYXQgc3JjL2dkYi9kd2FyZjIvbG9jLmM6MzY4NwotICMxNCAweDAwMDAwMDAwMDA2NjMxMzcg aW4gbGFuZ3VhZ2VfZGVmbjo6cmVhZF92YXJfdmFsdWUgKHRoaXM9MHgxMjJlYTYwIDxjX2xhbmd1 YWdlX2RlZm4+LCB2YXI9MHgxYjU5ODQwLCB2YXJfYmxvY2s9MHgwLCBmcmFtZT0weDE5ZjgzNzAp IGF0IHNyYy9nZGIvZmluZHZhci5jOjYxOAotICMxNSAweDAwMDAwMDAwMDA2NjNjM2IgaW4gcmVh ZF92YXJfdmFsdWUgKHZhcj0weDFiNTk4NDAsIHZhcl9ibG9jaz0weDAsIGZyYW1lPTB4MTlmODM3 MCkgYXQgc3JjL2dkYi9maW5kdmFyLmM6ODIyCi0gIzE2IDB4MDAwMDAwMDAwMDhjN2Q5ZiBpbiBy ZWFkX2ZyYW1lX2FyZyAoZnBfb3B0cz0uLi4sIHN5bT0weDFiNTk4NDAsIGZyYW1lPTB4MTlmODM3 MCwgYXJncD0weDdmZmZmZmZmYzQ3MCwgZW50cnlhcmdwPTB4N2ZmZmZmZmZjNDkwKSBhdCBzcmMv Z2RiL3N0YWNrLmM6NTQyCi0gIzE3IDB4MDAwMDAwMDAwMDhjODljZCBpbiBwcmludF9mcmFtZV9h cmdzIChmcF9vcHRzPS4uLiwgZnVuYz0weDFiNTk3YzAsIGZyYW1lPTB4MTlmODM3MCwgbnVtPS0x LCBzdHJlYW09MHgxYWJhODYwKSBhdCBzcmMvZ2RiL3N0YWNrLmM6ODkwCi0gIzE4IDB4MDAwMDAw MDAwMDhjOWJmOCBpbiBwcmludF9mcmFtZSAoZnBfb3B0cz0uLi4sIGZyYW1lPTB4MTlmODM3MCwg cHJpbnRfbGV2ZWw9MCwgcHJpbnRfd2hhdD1TUkNfQU5EX0xPQywgcHJpbnRfYXJncz0xLCBzYWw9 Li4uKSBhdCBzcmMvZ2RiL3N0YWNrLmM6MTM5NAotICMxOSAweDAwMDAwMDAwMDA4YzkyYjkgaW4g cHJpbnRfZnJhbWVfaW5mbyAoZnBfb3B0cz0uLi4sIGZyYW1lPTB4MTlmODM3MCwgcHJpbnRfbGV2 ZWw9MCwgcHJpbnRfd2hhdD1TUkNfQU5EX0xPQywgcHJpbnRfYXJncz0xLCBzZXRfY3VycmVudF9z YWw9MSkgYXQgc3JjL2dkYi9zdGFjay5jOjExMTkKLSAjMjAgMHgwMDAwMDAwMDAwOGM3NWYwIGlu IHByaW50X3N0YWNrX2ZyYW1lIChmcmFtZT0weDE5ZjgzNzAsIHByaW50X2xldmVsPTAsIHByaW50 X3doYXQ9U1JDX0FORF9MT0MsIHNldF9jdXJyZW50X3NhbD0xKSBhdCBzcmMvZ2RiL3N0YWNrLmM6 MzY2Ci0gIzIxIDB4MDAwMDAwMDAwMDcwMjUwYiBpbiBwcmludF9zdG9wX2xvY2F0aW9uICh3cz0w eDdmZmZmZmZmYzllMCkgYXQgc3JjL2dkYi9pbmZydW4uYzo4MTEwCi0gIzIyIDB4MDAwMDAwMDAw MDcwMjU2OSBpbiBwcmludF9zdG9wX2V2ZW50ICh1aW91dD0weDFhOGI5ZTAsIGRpc3BsYXlzPXRy dWUpIGF0IHNyYy9nZGIvaW5mcnVuLmM6ODEyNgotICMyMyAweDAwMDAwMDAwMDA5NmQwNGIgaW4g dHVpX29uX25vcm1hbF9zdG9wIChicz0weDFiY2QxYzAsIHByaW50X2ZyYW1lPTEpIGF0IHNyYy9n ZGIvdHVpL3R1aS1pbnRlcnAuYzo5OAotIC4uLgotCi1CZWZvcmUgdGhlIGNvbW1pdCB0byBtYWtl IHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkJ3MgY2R0b3JzCi1leGNlcHRpb24gZnJlZSwg c2NvcGVkX3Jlc3RvcmVfY3VycmVudF90aHJlYWQncyBkdG9yIHdvdWxkIGNhbGwKLWdldF9mcmFt ZV9pZCBvbiB0aGUgc2VsZWN0ZWQgZnJhbWUsIGFuZCB3ZSB1c2UKLXNjb3BlZF9yZXN0b3JlX2N1 cnJlbnRfdGhyZWFkIHBlcnZhc2l2ZWx5LiAgVGhhdCBoYWQgdGhlIHNpZGUgZWZmZWN0Ci1vZiBz dGFzaGluZyB0aGUgZnJhbWUgaWQgb2YgZnJhbWUgIzAgYmVmb3JlIHJlYWNoaW5nIHRoZSBwYXRo IHNob3duIGluCi10aGUgYmFja3RyYWNlLiAgSS5lLiwgdGhlIGZyYW1lIGlkIG9mIGZyYW1lICMw IGhhcHBlbmVkIHRvIGJlIHN0YXNoZWQKLWJlZm9yZSB0aGUgZnJhbWUgaWQgb2YgZnJhbWUgIzEu ICBCdXQgdGhhdCB3YXMgYnkgY2hhbmNlLCBub3QgYnkKLWRlc2lnbi4KLQotVGhpcyBjb21taXQ6 Ci0KLSAgY29tbWl0IDI1NmFlNWRiYzczZDEzNDg4NTBmODZlZTc3YTBkYzNiMDRiYzdjYzAKLSAg QXV0aG9yOiAgICAgS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotICBBdXRob3JE YXRlOiBNb24gT2N0IDMxIDEyOjQ3OjQyIDIwMTYgLTA3MDAKLQotICAgICAgU3Rhc2ggZnJhbWUg aWQgb2YgY3VycmVudCBmcmFtZSBiZWZvcmUgc3Rhc2hpbmcgZnJhbWUgaWQgZm9yIHByZXZpb3Vz IGZyYW1lCi0KLUZpeGVkIGEgc2ltaWxhciBwcm9ibGVtLCBieSBtYWtpbmcgc3VyZSBnZXRfcHJl dl9mcmFtZSBjb21wdXRlcyB0aGUKLWZyYW1lIGlkIG9mIHRoZSBjdXJyZW50IGZyYW1lIGJlZm9y ZSB1bndpbmRpbmcgdGhlIHByZXZpb3VzIGZyYW1lLCBzbwotdGhhdCB0aGUgY3ljbGUgZGV0ZWN0 aW9uIHdvcmtzIHByb3Blcmx5LiAgVGhhdCBmaXggbWlzc2VzIHRoZSBzY2VuYXJpbwotd2UncmUg bm93IHJ1bm5pbmcgYWdhaW5zdCwgYmVjYXVzZSBpZiB5b3Ugbm90aWNlLCB0aGUgYmFja3RyYWNl IGFib3ZlCi1zaG93cyB0aGF0IGZyYW1lICM0IGNhbGxzIGdldF9wcmV2X2ZyYW1lX2Fsd2F5cywg bm90IGdldF9wcmV2X2ZyYW1lLgotSS5lLiwgbm90aGluZyBpcyBjYWxsaW5nIGdldF9mcmFtZV9p ZCBvbiB0aGUgY3VycmVudCBmcmFtZS4KLQotVGhlIGZpeCBoZXJlIGlzIHRvIG1vdmUgS2V2aW4n cyBmaXggZG93biBmcm9tIGdldF9wcmV2X2ZyYW1lIHRvCi1nZXRfcHJldl9mcmFtZV9hbHdheXMu ICBPciBhY3R1YWxseSwgYSBiaXQgZnVydGhlciBkb3duIHRvCi1nZXRfcHJldl9mcmFtZV9hbHdh eXNfMSAtLSBub3RlIHRoYXQgaW5saW5lX2ZyYW1lX3RoaXNfaWQgY2FsbHMKLWdldF9wcmV2X2Zy YW1lX2Fsd2F5cywgc28gd2UgbmVlZCB0byBiZSBjYXJlZnVsIHRvIGF2b2lkIHJlY3Vyc2lvbiBp bgotdGhhdCBzY2VuYXJpby4KLQotZ2RiL0NoYW5nZUxvZzoKLQotCSogZnJhbWUuYyAoZ2V0X3By ZXZfZnJhbWUpOiBNb3ZlIGdldF9mcmFtZV9pZCBjYWxsIGZyb20gaGVyZSAuLi4KLQkoZ2V0X3By ZXZfZnJhbWVfYWx3YXlzXzEpOiAuLi4gdG8gaGVyZS4KLQkqIGlubGluZS1mcmFtZS5jIChpbmxp bmVfZnJhbWVfdGhpc19pZCk6IE1lbnRpb24KLQlnZXRfcHJldl9mcmFtZV9hbHdheXNfMSBpbiBj b21tZW50LgotCi1DaGFuZ2UtSWQ6IElkOTYwYzk4YWIyZDA3MmM0OGE0MzZjM2ViMTYwY2M0YjJh NWNmZDFkCi0KLWRpZmYgLS1naXQgYS9nZGIvZnJhbWUuYyBiL2dkYi9mcmFtZS5jCi0tLS0gYS9n ZGIvZnJhbWUuYwotKysrIGIvZ2RiL2ZyYW1lLmMKLUBAIC0yMTMzLDYgKzIxMzMsMjMgQEAgZ2V0 X3ByZXZfZnJhbWVfYWx3YXlzXzEgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQotICAg aWYgKGdldF9mcmFtZV90eXBlICh0aGlzX2ZyYW1lKSA9PSBJTkxJTkVfRlJBTUUpCi0gICAgIHJl dHVybiBnZXRfcHJldl9mcmFtZV9pZl9ub19jeWNsZSAodGhpc19mcmFtZSk7Ci0gCi0rICAvKiBJ ZiB0aGlzX2ZyYW1lIGlzIHRoZSBjdXJyZW50IGZyYW1lLCB0aGVuIGNvbXB1dGUgYW5kIHN0YXNo IGl0cwotKyAgICAgZnJhbWUgaWQgcHJpb3IgdG8gZmV0Y2hpbmcgYW5kIGNvbXB1dGluZyB0aGUg ZnJhbWUgaWQgb2YgdGhlCi0rICAgICBwcmV2aW91cyBmcmFtZS4gIE90aGVyd2lzZSwgdGhlIGN5 Y2xlIGRldGVjdGlvbiBjb2RlIGluCi0rICAgICBnZXRfcHJldl9mcmFtZV9pZl9ub19jeWNsZSgp IHdpbGwgbm90IHdvcmsgY29ycmVjdGx5LiAgV2hlbgotKyAgICAgZ2V0X2ZyYW1lX2lkKCkgaXMg Y2FsbGVkIGxhdGVyIG9uLCBhbiBhc3NlcnRpb24gZXJyb3Igd2lsbCBiZQotKyAgICAgdHJpZ2dl cmVkIGluIHRoZSBldmVudCBvZiBhIGN5Y2xlIGJldHdlZW4gdGhlIGN1cnJlbnQgZnJhbWUgYW5k Ci0rICAgICBpdHMgcHJldmlvdXMgZnJhbWUuCi0rCi0rICAgICBOb3RlIHdlIGRvIHRoaXMgYWZ0 ZXIgdGhlIElOTElORV9GUkFNRSBjaGVjayBhYm92ZS4gIFRoYXQgaXMKLSsgICAgIGJlY2F1c2Ug dGhlIGlubGluZSBmcmFtZSdzIGZyYW1lIGlkIGNvbXB1dGF0aW9uIG5lZWRzIHRvIGZldGNoCi0r ICAgICB0aGUgZnJhbWUgaWQgb2YgaXRzIHByZXZpb3VzIHJlYWwgc3RhY2sgZnJhbWUuICBJLmUu LCB3ZSBuZWVkIHRvCi0rICAgICBhdm9pZCByZWN1cnNpb24gaW4gdGhhdCBjYXNlLiAgVGhpcyBp cyBPSyBzaW5jZSB3ZSdyZSBzdXJlIHRoZQotKyAgICAgaW5saW5lIGZyYW1lIHdvbid0IGNyZWF0 ZSBhIGN5Y2xlIHdpdGggdGhlIHJlYWwgc3RhY2sgZnJhbWUuICBTZWUKLSsgICAgIGlubGluZV9m cmFtZV90aGlzX2lkLiAgKi8KLSsgIGlmICh0aGlzX2ZyYW1lLT5sZXZlbCA9PSAwKQotKyAgICBn ZXRfZnJhbWVfaWQgKHRoaXNfZnJhbWUpOwotKwotICAgLyogQ2hlY2sgdGhhdCB0aGlzIGZyYW1l IGlzIHVud2luZGFibGUuICBJZiBpdCBpc24ndCwgZG9uJ3QgdHJ5IHRvCi0gICAgICB1bndpbmQg dG8gdGhlIHByZXYgZnJhbWUuICAqLwotICAgdGhpc19mcmFtZS0+c3RvcF9yZWFzb24KLUBAIC0y NDEwLDE2ICsyNDI3LDYgQEAgZ2V0X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlz X2ZyYW1lKQotICAgICAgc29tZXRoaW5nIHNob3VsZCBiZSBjYWxsaW5nIGdldF9zZWxlY3RlZF9m cmFtZSgpIG9yCi0gICAgICBnZXRfY3VycmVudF9mcmFtZSgpLiAgKi8KLSAgIGdkYl9hc3NlcnQg KHRoaXNfZnJhbWUgIT0gTlVMTCk7Ci0tICAKLS0gIC8qIElmIHRoaXNfZnJhbWUgaXMgdGhlIGN1 cnJlbnQgZnJhbWUsIHRoZW4gY29tcHV0ZSBhbmQgc3Rhc2gKLS0gICAgIGl0cyBmcmFtZSBpZCBw cmlvciB0byBmZXRjaGluZyBhbmQgY29tcHV0aW5nIHRoZSBmcmFtZSBpZCBvZiB0aGUKLS0gICAg IHByZXZpb3VzIGZyYW1lLiAgT3RoZXJ3aXNlLCB0aGUgY3ljbGUgZGV0ZWN0aW9uIGNvZGUgaW4K LS0gICAgIGdldF9wcmV2X2ZyYW1lX2lmX25vX2N5Y2xlKCkgd2lsbCBub3Qgd29yayBjb3JyZWN0 bHkuICBXaGVuCi0tICAgICBnZXRfZnJhbWVfaWQoKSBpcyBjYWxsZWQgbGF0ZXIgb24sIGFuIGFz c2VydGlvbiBlcnJvciB3aWxsCi0tICAgICBiZSB0cmlnZ2VyZWQgaW4gdGhlIGV2ZW50IG9mIGEg Y3ljbGUgYmV0d2VlbiB0aGUgY3VycmVudAotLSAgICAgZnJhbWUgYW5kIGl0cyBwcmV2aW91cyBm cmFtZS4gICovCi0tICBpZiAodGhpc19mcmFtZS0+bGV2ZWwgPT0gMCkKLS0gICAgZ2V0X2ZyYW1l X2lkICh0aGlzX2ZyYW1lKTsKLSAKLSAgIGZyYW1lX3BjX3AgPSBnZXRfZnJhbWVfcGNfaWZfYXZh aWxhYmxlICh0aGlzX2ZyYW1lLCAmZnJhbWVfcGMpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9pbmxp bmUtZnJhbWUuYyBiL2dkYi9pbmxpbmUtZnJhbWUuYwotLS0tIGEvZ2RiL2lubGluZS1mcmFtZS5j Ci0rKysgYi9nZGIvaW5saW5lLWZyYW1lLmMKLUBAIC0xNjEsNyArMTYxLDggQEAgaW5saW5lX2Zy YW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotICAgICAgcmVhbCBm cmFtZSdzIHRoaXNfaWQgbWV0aG9kLiAgU28gd2UgbXVzdCBjYWxsCi0gICAgICBnZXRfcHJldl9m cmFtZV9hbHdheXMuICBCZWNhdXNlIHdlIGFyZSBpbmxpbmVkIGludG8gc29tZQotICAgICAgZnVu Y3Rpb24sIHRoZXJlIG11c3QgYmUgcHJldmlvdXMgZnJhbWVzLCBzbyB0aGlzIGlzIHNhZmUgLSBh cwotLSAgICAgbG9uZyBhcyB3ZSdyZSBjYXJlZnVsIG5vdCB0byBjcmVhdGUgYW55IGN5Y2xlcy4g ICovCi0rICAgICBsb25nIGFzIHdlJ3JlIGNhcmVmdWwgbm90IHRvIGNyZWF0ZSBhbnkgY3ljbGVz LiAgU2VlIHJlbGF0ZWQKLSsgICAgIGNvbW1lbnRzIGluIGdldF9wcmV2X2ZyYW1lX2Fsd2F5c18x LiAgKi8KLSAgICp0aGlzX2lkID0gZ2V0X2ZyYW1lX2lkIChnZXRfcHJldl9mcmFtZV9hbHdheXMg KHRoaXNfZnJhbWUpKTsKLSAKLSAgIC8qIFdlIG5lZWQgYSB2YWxpZCBmcmFtZSBJRCwgc28gd2Ug bmVlZCB0byBiZSBiYXNlZCBvbiBhIHZhbGlkCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTEyOTg1 LWxpYnN0ZGMrKy1hc3NlcnQucGF0Y2ggYi9nZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2Vy dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk2ZTMwOS4uMDAwMDAwMAot LS0gYS9nZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2VydC5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDY0ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBX ZWQsIDE3IEZlYiAyMDIxIDE3OjU4OjU0IC0wNzAwCi1TdWJqZWN0OiBnZGItcmhiejE5MTI5ODUt bGlic3RkYysrLWFzc2VydC5wYXRjaAotCi07OyBCYWNrcG9ydCBmaXggZm9yIGxpYnN0ZGMrKyBh c3NlcnQgd2hlbiBwZXJmb3JtaW5nIHRhYiBjb21wbGV0aW9uCi07OyAoUkggQlogMTkxMjk4NSku Ci0KLUZpeCBjb21wbGV0aW9uIHJlbGF0ZWQgbGlic3RkYysrIGFzc2VydCB3aGVuIHVzaW5nIC1E X0dMSUJDWFhfREVCVUcKLQotVGhpcyBjb21taXQgZml4ZXMgYSBsaWJzdGRjKysgYXNzZXJ0aW9u IGZhaWx1cmUgZW5jb3VudGVyZWQgd2hlbgotcnVubmluZyBnZGIuYmFzZS9jb21wbGV0aW9uLmV4 cC4gIEluIG9yZGVyIHRvIHNlZSB0aGlzIHByb2JsZW0sCi1HREIgbXVzdCBiZSBidWlsdCB3aXRo IHRoZSBmb2xsb3cgQ0ZMQUdTIGFuZCBDWFhGTEFHUyBhcyBwYXJ0Ci1vZiB0aGUgY29uZmlndXJl IGxpbmU6Ci0KLSAgQ0ZMQUdTPSctRF9HTElCQ1hYX0RFQlVHJyBDWFhGTEFHUz0nLURfR0xJQkNY WF9ERUJVRycKLQotKEFsc28sIHRoaXMgcHJvYmxlbSB3YXMgZW5jb3VudGVyZWQgdXNpbmcgRmVk b3JhIHJhd2hpZGUuICBJdCBtaWdodAotbm90IGJlIHJlcHJvZHVjaWJsZSBpbiBGZWRvcmEgdmVy c2lvbnMgcHJpb3IgdG8gRmVkb3JhIDM0LikKLQotVXNpbmcgdGhlIGdkYi5iYXNlL2NvbXBsZXRp b24uZXhwIHRlc3QgcHJvZ3JhbSwgdGhlIHByb2JsZW0gY2FuIGJlCi1vYnNlcnZlZCBhcyBmb2xs b3dzOgotCi1ba2V2QHJhd2hpZGUtMSBnZGJdJCAuL2dkYiAtcSB0ZXN0c3VpdGUvb3V0cHV0cy9n ZGIuYmFzZS9jb21wbGV0aW9uL2NvbXBsZXRpb24KLVJlYWRpbmcgc3ltYm9scyBmcm9tIHRlc3Rz dWl0ZS9vdXRwdXRzL2dkYi5iYXNlL2NvbXBsZXRpb24vY29tcGxldGlvbi4uLgotKGdkYikgc3Rh cnQKLVRlbXBvcmFyeSBicmVha3BvaW50IDEgYXQgMHg0MDExNzk6IGZpbGUgLi4vLi4vd29ya3Ry ZWUtbWFzdGVyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWsuYywgbGluZSA0My4KLVN0YXJ0 aW5nIHByb2dyYW06IHRlc3RzdWl0ZS9vdXRwdXRzL2dkYi5iYXNlL2NvbXBsZXRpb24vY29tcGxl dGlvbgotCi1UZW1wb3JhcnkgYnJlYWtwb2ludCAxLCBtYWluIChhcmdjPTEsIGFyZ3Y9MHg3ZmZm ZmZmZmQ3MTgsIGVudnA9MHg3ZmZmZmZmZmQ3MjgpIGF0IC4uLy4uL3dvcmt0cmVlLW1hc3Rlci9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLmM6NDMKLTQzCSAgICBpZiAoYXJnYyA9PSAxMjM0 NSkgeyAgLyogYW4gdW5saWtlbHkgdmFsdWUgPCAyXjE2LCBpbiBjYXNlIHVuaW5pdGVkICovIC8q IHNldCBicmVha3BvaW50IDYgaGVyZSAqLwotKGdkYikgcCA8VEFCPi91c3IvaW5jbHVkZS9jKysv MTEvc3RyaW5nX3ZpZXc6MjExOiBjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSYgc3RkOjpiYXNp Y19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+OjpvcGVyYXRvcltdKHN0ZDo6YmFzaWNfc3Ry aW5nX3ZpZXc8X0NoYXJULCBfVHJhaXRzPjo6c2l6ZV90eXBlKSBjb25zdCBbd2l0aCBfQ2hhclQg PSBjaGFyOyBfVHJhaXRzID0gc3RkOjpjaGFyX3RyYWl0czxjaGFyPjsgc3RkOjpiYXNpY19zdHJp bmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+Ojpjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBjaGFyJjsg c3RkOjpiYXNpY19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+OjpzaXplX3R5cGUgPSBsb25n IHVuc2lnbmVkIGludF06IEFzc2VydGlvbiAnX19wb3MgPCB0aGlzLT5fTV9sZW4nIGZhaWxlZC4K LUFib3J0ZWQgKGNvcmUgZHVtcGVkKQotCi0oTm90ZSB0aGF0IEkgYWRkZWQgIjxUQUI+IiB0byBt YWtlIGl0IGNsZWFyIHdoZXJlIHRoZSB0YWIga2V5IHdhcwotcHJlc3NlZC4pCi0KLWdkYi9DaGFu Z2VMb2c6Ci0KLQkqIGFkYS1sYW5nLmMgKGFkYV9mb2xkX25hbWUpOiBDaGVjayBmb3Igbm9uLWVt cHR5IHN0cmluZyBwcmlvcgotCXRvIGFjY2Vzc2luZyBpdC4KLQkoYWRhX2xvb2t1cF9uYW1lX2lu Zm8pOiBMaWtld2lzZS4KLQotZGlmZiAtLWdpdCBhL2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1s YW5nLmMKLS0tLSBhL2dkYi9hZGEtbGFuZy5jCi0rKysgYi9nZGIvYWRhLWxhbmcuYwotQEAgLTk5 Nyw3ICs5OTcsNyBAQCBhZGFfZm9sZF9uYW1lIChnZGI6OnN0cmluZ192aWV3IG5hbWUpCi0gICBp bnQgbGVuID0gbmFtZS5zaXplICgpOwotICAgR1JPV19WRUNUIChmb2xkX2J1ZmZlciwgZm9sZF9i dWZmZXJfc2l6ZSwgbGVuICsgMSk7Ci0gCi0tICBpZiAobmFtZVswXSA9PSAnXCcnKQotKyAgaWYg KCFuYW1lLmVtcHR5ICgpICYmIG5hbWVbMF0gPT0gJ1wnJykKLSAgICAgewotICAgICAgIHN0cm5j cHkgKGZvbGRfYnVmZmVyLCBuYW1lLmRhdGEgKCkgKyAxLCBsZW4gLSAyKTsKLSAgICAgICBmb2xk X2J1ZmZlcltsZW4gLSAyXSA9ICdcMDAwJzsKLUBAIC0xMzU5Nyw3ICsxMzU5Nyw3IEBAIGFkYV9s b29rdXBfbmFtZV9pbmZvOjphZGFfbG9va3VwX25hbWVfaW5mbyAoY29uc3QgbG9va3VwX25hbWVf aW5mbyAmbG9va3VwX25hbWUpCi0gewotICAgZ2RiOjpzdHJpbmdfdmlldyB1c2VyX25hbWUgPSBs b29rdXBfbmFtZS5uYW1lICgpOwotIAotLSAgaWYgKHVzZXJfbmFtZVswXSA9PSAnPCcpCi0rICBp ZiAoIXVzZXJfbmFtZS5lbXB0eSAoKSAmJiB1c2VyX25hbWVbMF0gPT0gJzwnKQotICAgICB7Ci0g ICAgICAgaWYgKHVzZXJfbmFtZS5iYWNrICgpID09ICc+JykKLSAJbV9lbmNvZGVkX25hbWUKCmRp ZmYgLS1naXQgYS9nZGItcmhiejE5MTY1MTYtcGF0aHN0dWZmczEzMi1pbnRlcm5hbC1lcnJvci5w YXRjaCBiL2dkYi1yaGJ6MTkxNjUxNi1wYXRoc3R1ZmZzMTMyLWludGVybmFsLWVycm9yLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjBjZDlkLi4wMDAwMDAwCi0tLSBhL2dk Yi1yaGJ6MTkxNjUxNi1wYXRoc3R1ZmZzMTMyLWludGVybmFsLWVycm9yLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNjcgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IEJydW5vIExhcnNlbiA8YmxhcnNlbkByZWRoYXQuY29tPgotRGF0 ZTogV2VkLCAyMiBTZXAgMjAyMSAxMjoyMjo0NCAtMDMwMAotU3ViamVjdDogZ2RiLXJoYnoxOTE2 NTE2LXBhdGhzdHVmZnMxMzItaW50ZXJuYWwtZXJyb3IucGF0Y2gKLQotOztbZ2RiL2NsaV0gRG9u J3QgYXNzZXJ0IG9uIGVtcHR5IHN0cmluZyBmb3IgY29yZS1maWxlCi07OyhUb20gZGUgVnJpZXMp Ci0KLVdpdGggY3VycmVudCBnZGIgd2UgcnVuIGludG86Ci0uLi4KLSQgZ2RiIC1iYXRjaCAnJyAn JwotOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5LgotcGF0aHN0dWZmLmNjOjEzMjogaW50ZXJu YWwtZXJyb3I6IFwKLSAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZ2RiX2Fic3BhdGgo Y29uc3QgY2hhciopOiBcCi0gIEFzc2VydGlvbiBgcGF0aCAhPSBOVUxMICYmIHBhdGhbMF0gIT0g J1wwJycgZmFpbGVkLgotLi4uCi0KLUZpeCB0aGlzIGJ5IHNraXBwaW5nIHRoZSBjYWxsIHRvIGdk Yl9hYnNwYXRoIGluIGNvcmVfdGFyZ2V0X29wZW4gaW4gdGhlCi1lbXB0eS1zdHJpbmcgY2FzZSwg c3VjaCB0aGF0IHdlIGhhdmUgaW5zdGVhZDoKLS4uLgotJCBnZGIgLWJhdGNoICcnICcnCi06IE5v IHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCi06IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCi0k Ci0uLi4KLQotVGVzdGVkIG9uIHg4Nl82NC1saW51eC4KLQotZ2RiL0NoYW5nZUxvZzoKLQotMjAy MS0wOC0zMCAgVG9tIGRlIFZyaWVzICA8dGRldnJpZXNAc3VzZS5kZT4KLQotCVBSIGNsaS8yODI5 MAotCSogZ2RiL2NvcmVsb3cuYyAoY29yZV90YXJnZXRfb3Blbik6IFNraXAgY2FsbCB0byBnZGJf YWJzcGF0aCBpbiB0aGUKLQllbXB0eS1zdHJpbmcgY2FzZS4KLQotZ2RiL3Rlc3RzdWl0ZS9DaGFu Z2VMb2c6Ci0KLTIwMjEtMDgtMzAgIFRvbSBkZSBWcmllcyAgPHRkZXZyaWVzQHN1c2UuZGU+Ci0K LQlQUiBjbGkvMjgyOTAKLQkqIGdkYi5iYXNlL2JhdGNoLWV4aXQtc3RhdHVzLmV4cDogQWRkIGdk YiAnJyBhbmQgZ2RiICcnICcnIHRlc3RzLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cuYyBi L2dkYi9jb3JlbG93LmMKLS0tLSBhL2dkYi9jb3JlbG93LmMKLSsrKyBiL2dkYi9jb3JlbG93LmMK LUBAIC00NDYsNyArNDQ2LDggQEAgY29yZV90YXJnZXRfb3BlbiAoY29uc3QgY2hhciAqYXJnLCBp bnQgZnJvbV90dHkpCi0gICAgIH0KLSAKLSAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+ IGZpbGVuYW1lICh0aWxkZV9leHBhbmQgKGFyZykpOwotLSAgaWYgKCFJU19BQlNPTFVURV9QQVRI IChmaWxlbmFtZS5nZXQgKCkpKQotKyAgaWYgKHN0cmxlbiAoZmlsZW5hbWUuZ2V0ICgpKSAhPSAw Ci0rICAgICAgJiYgIUlTX0FCU09MVVRFX1BBVEggKGZpbGVuYW1lLmdldCAoKSkpCi0gICAgIGZp bGVuYW1lID0gZ2RiX2Fic3BhdGggKGZpbGVuYW1lLmdldCAoKSk7Ci0gCi0gICBmbGFncyA9IE9f QklOQVJZIHwgT19MQVJHRUZJTEU7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9iYXRjaC1leGl0LXN0YXR1cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JhdGNoLWV4 aXQtc3RhdHVzLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9iYXRjaC1leGl0LXN0 YXR1cy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYmF0Y2gtZXhpdC1zdGF0dXMu ZXhwCi1AQCAtNzYsMyArNzYsNyBAQCB0ZXN0X2V4aXRfc3RhdHVzIDEgIi1iYXRjaCAteCAkZ29v ZF9jb21tYW5kcyAteCAkYmFkX2NvbW1hbmRzIiBcCi0gICAgICItYmF0Y2ggLXggZ29vZC1jb21t YW5kcyAteCBiYWQtY29tbWFuZHMiCi0gdGVzdF9leGl0X3N0YXR1cyAxICItYmF0Y2ggLXggJGdv b2RfY29tbWFuZHMgLWV4IFwic2V0IG5vdC1hLXRoaW5nIDRcIiIgXAotICAgICAiLWJhdGNoIC14 IGdvb2QtY29tbWFuZHMgLWV4IFwic2V0IG5vdC1hLXRoaW5nIDRcIiIKLSsKLStzZXQgbm9fc3Vj aF9yZSAiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5XFwuIgotK3Rlc3RfZXhpdF9zdGF0dXMg MSAiLWJhdGNoIFwiXCIiICRub19zdWNoX3JlCi0rdGVzdF9leGl0X3N0YXR1cyAxICItYmF0Y2gg XCJcIiBcIlwiIiBbbXVsdGlfbGluZSAkbm9fc3VjaF9yZSAkbm9fc3VjaF9yZV0KCmRpZmYgLS1n aXQgYS9nZGItcmhiejE5MzEzNDQtYmZkX3NlZWstZWxmX3JlYWRfbm90ZXMucGF0Y2ggYi9nZGIt cmhiejE5MzEzNDQtYmZkX3NlZWstZWxmX3JlYWRfbm90ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGUyMTJkYzYuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTMxMzQ0LWJm ZF9zZWVrLWVsZl9yZWFkX25vdGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBA QAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtl aXRoIFNlaXR6IDxrZWl0aHNAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjUgTWFyIDIwMjEgMTA6 MzE6NDggLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTkzMTM0NC1iZmRfc2Vlay1lbGZfcmVhZF9u b3Rlcy5wYXRjaAotCi07OyBCYWNrcG9ydCAiU2F2ZS9yZXN0b3JlIGZpbGUgb2Zmc2V0IHdoaWxl IHJlYWRpbmcgbm90ZXMgaW4gY29yZSBmaWxlIgotOzsgKEtlaXRoIFNlaXR6LCBSSEJaIDE5MzEz NDQpCi0KLUEgcmVjZW50IGJ1ZyAoUkggQlogMTkzMTM0NCkgaGFzIGV4cG9zZWQgYSBidWcgaW4g dGhlIGNvcmUgZmlsZQotYnVpbGQtSUQgc3VwcG9ydCB0aGF0IEkgaW50cm9kdWNlZCBhIHdoaWxl IGFnby4gSXQgaXMgcHJldHR5Ci1lYXN5IHRvIGRlbW9uc3RhdGUgdGhlIHByb2JsZW0gZm9sbG93 aW5nIGEgc2ltcGxpZmllZCBwcm9jZWR1cmUKLW91dGxpbmVkIGluIHRoYXQgYnVnOgotCi1bc2hl bGwxXQotc2hlbGwxJCAvdXNyL2xpYmV4ZWMvcWVtdS1rdm0KLQotW3NoZWxsMl0KLXNoZWxsMiQg cGtpbGwgLVNFR1YgLXggcWVtdS1rdm0KLQotW3NoZWxsMV0KLVNlZ21lbnRhdGlvbiBmYXVsdCAo Y29yZSBkdW1wZWQpCi0KLUxvYWQgdGhpcyBjb3JlIGZpbGUgaW50byBHREIgd2l0aG91dCBzcGVj aWZ5aW5nIGFuIGV4ZWN1dGFibGUKLShhbiB1bmZvcnR1bmF0ZSBGZWRvcmEvUkhFTC1pc20pLCBh bmQgR0RCIHdpbGwgaW5mb3JtIHRoZSB1c2VyCi10byBpbnN0YWxsIGRlYnVnaW5mbyBmb3IgdGhl ICJtaXNzaW5nIiBleGVjdXRhYmxlOgotCi0kIGdkYiAtbnggLXEgY29yZS4xMjM0NQotLi4uCi1N aXNzaW5nIHNlcGFyYXRlIGRlYnVnaW5mbyBmb3IgdGhlIG1haW4gZXhlY3V0YWJsZSBmaWxlCi1U cnk6IGRuZiAtLWVuYWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwgL3Vzci9saWIvZGVidWcvLmJ1 aWxkLWlkL2UyL2U5YzY2ZDMxMTdmYjJiYmI1YjJiZTEyMmYwNGYyNjY0ZTVkZjU0Ci1Db3JlIHdh cyBnZW5lcmF0ZWQgYnkgYC91c3IvbGliZXhlYy9xZW11LWt2bScuCi1Qcm9ncmFtIHRlcm1pbmF0 ZWQgd2l0aCBzaWduYWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0LgotLi4uCi0KLVRoZSBz dWdnZXN0ZWQgYnVpbGQtSUQgaXMgYWN0YXVsbHkgZm9yIGdtcCBub3QgcWVtdS1rdm0uIFRoZSBw cm9ibGVtCi1saWVzIGluIF9iZmRfZWxmX2NvcmVfZmluZF9idWlsZF9pZCwgd2hlcmUgd2UgbG9v cCBvdmVyIHByb2dyYW0gaGVhZGVycwotbG9va2luZyBmb3Igbm90ZSBzZWdtZW50czoKLQotICAv KiBSZWFkIGluIHByb2dyYW0gaGVhZGVycyBhbmQgcGFyc2Ugbm90ZXMuICAqLwotICBmb3IgKGkg PSAwOyBpIDwgaV9laGRyLmVfcGhudW07ICsraSwgKytpX3BoZHIpCi0gICAgewotICAgICAgRWxm X0V4dGVybmFsX1BoZHIgeF9waGRyOwotCi0gICAgICBpZiAoYmZkX2JyZWFkICgmeF9waGRyLCBz aXplb2YgKHhfcGhkciksIGFiZmQpICE9IHNpemVvZiAoeF9waGRyKSkKLSAgICAgICAgZ290byBm YWlsOwotICAgICAgZWxmX3N3YXBfcGhkcl9pbiAoYWJmZCwgJnhfcGhkciwgaV9waGRyKTsKLQot ICAgICAgaWYgKGlfcGhkci0+cF90eXBlID09IFBUX05PVEUgJiYgaV9waGRyLT5wX2ZpbGVzeiA+ IDApCi0gICAgICAgIHsKLSAgICAgICAgICBlbGZfcmVhZF9ub3RlcyAoYWJmZCwgb2Zmc2V0ICsg aV9waGRyLT5wX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaV9waGRyLT5wX2Zp bGVzeiwgaV9waGRyLT5wX2FsaWduKTsKLQotICAgICAgICAgIGlmIChhYmZkLT5idWlsZF9pZCAh PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgIH0KLQotZWxmX3JlYWRf bm90ZXMgdXNlcyBiZmRfc2VlayB0byBmb3J3YXJkIHRoZSBzdHJlYW0gdG8gdGhlIGxvY2F0aW9u IG9mCi10aGUgbm90ZSBzZWdtZW50LiBXaGVuIGNvbnRyb2wgcmV0dXJucyB0byBfYmZkX2VsZl9j b3JlX2ZpbGRfYnVpbGRfaWQsCi10aGUgc3RyZWFtIGlzIG5vIGxvbmdlciBpbiB0aGUgbG9jYXRp b24gbG9va2luZyBhdCBwcm9ncmFtIGhlYWRlcnMsIGFuZAotYWxsIHN1YnNlcXVlbnQgcmVhZHMg d2lsbCByZWFkIGZyb20gdGhlIHdyb25nIGZpbGUgb2Zmc2V0LgotCi1UbyBmaXggdGhpcywgdGhp cyBwYXRjaCBtYXJrcyB0aGUgc3RyZWFtIGxvY2F0aW9uIGFuZCBlbnN1cmVzCi10aGF0IGl0IGlz IHJlc3RvcmVkIGFmdGVyIGVsZl9yZWFkX25vdGVzIGlzIGNhbGxlZC4KLQotYmZkL0NoYW5nZUxv ZwotMjAyMS0wMy0yNiAgS2VpdGggU2VpdHogIDxrZWl0aHNAcmVkaGF0LmNvbT4KLQotCSogZWxm Y29yZS5oIChfYmZkX2VsZl9jb3JlX2ZpbmRfYnVpbGRfaWQpOiBTZWVrIGZpbGUKLQlvZmZzZXQg b2YgcHJvZ3JhbSBoZWFkZXJzIGFmdGVyIGNhbGxpbmcgZWxmX3JlYWRfbm90ZXMuCi0KLWRpZmYg LS1naXQgYS9iZmQvZWxmY29yZS5oIGIvYmZkL2VsZmNvcmUuaAotLS0tIGEvYmZkL2VsZmNvcmUu aAotKysrIGIvYmZkL2VsZmNvcmUuaAotQEAgLTQxMCw2ICs0MTAsMTMgQEAgTkFNRShfYmZkX2Vs ZiwgY29yZV9maW5kX2J1aWxkX2lkKQotIAl7Ci0gCSAgZWxmX3JlYWRfbm90ZXMgKGFiZmQsIG9m ZnNldCArIGlfcGhkci0+cF9vZmZzZXQsCi0gCQkJICBpX3BoZHItPnBfZmlsZXN6LCBpX3BoZHIt PnBfYWxpZ24pOwotKwotKwkgIC8qIE1ha2Ugc3VyZSBBQkZEIHJldHVybnMgdG8gcHJvY2Vzc2lu ZyB0aGUgcHJvZ3JhbSBoZWFkZXJzLiAgKi8KLSsJICBpZiAoYmZkX3NlZWsgKGFiZmQsIChmaWxl X3B0cikgKG9mZnNldCArIGlfZWhkci5lX3Bob2ZmCi0rCQkJCQkgICsgKGkgKyAxKSAqIHNpemVv ZiAoeF9waGRyKSksCi0rCQkJU0VFS19TRVQpICE9IDApCi0rCSAgICBnb3RvIGZhaWw7Ci0rCi0g CSAgaWYgKGFiZmQtPmJ1aWxkX2lkICE9IE5VTEwpCi0gCSAgICByZXR1cm4gVFJVRTsKLSAJfQoK ZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk0MTA4MC1maXgtZ2Ric2VydmVyLWhhbmcucGF0Y2ggYi9n ZGItcmhiejE5NDEwODAtZml4LWdkYnNlcnZlci1oYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBlNjM5ZGUxLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk0MTA4MC1maXgt Z2Ric2VydmVyLWhhbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVl dHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAxOSBNYXIgMjAyMSAxNToxNDow NCAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTQxMDgwLWZpeC1nZGJzZXJ2ZXItaGFuZy5wYXRj aAotCi07OyBCYWNrcG9ydCBjaGFuZ2Ugd2hpY2ggZml4ZXMgZ2Ric2VydmVyIHRlc3RpbmcgaGFu ZyBvbiBmMzQgYW5kIHJhd2hpZGUuCi0KLUZpeCBwb3RlbnRpYWwgaGFuZyBkdXJpbmcgZ2Ric2Vy dmVyIHRlc3RpbmcKLQotV2UncmUgY3VycmVudGx5IHNlZWluZyB0ZXN0aW5nIG9mIG5hdGl2ZS1l eHRlbmRlZC1nZGJzZXJ2ZXIgaGFuZyB3aGlsZQotdGVzdGluZyB0aGUgeDg2XzY0IGFyY2hpdGVj dHVyZSBvbiBib3RoIEZlZG9yYSAzNCBhbmQgRmVkb3JhIFJhd2hpZGUuCi1UaGUgdGVzdCByZXNw b25zaWJsZSBmb3IgdGhlIGhhbmcgaXMgZ2RiLnRocmVhZHMvZm9yay1wbHVzLXRocmVhZHMuZXhw LgotCi1XaGlsZSB0aGVyZSBpcyBjbGVhcmx5IGEgcHJvYmxlbS9idWcgd2l0aCB0aGlzIHRlc3Qg b24gRjM0IGFuZAotUmF3aGlkZSwgaXQncyBhbHNvIHRoZSBjYXNlIHRoYXQgdGVzdGluZyBzaG91 bGQgbm90IGhhbmcuICBUaGlzIGNvbW1pdAotcHJldmVudHMgdGhlIGhhbmcgYnkgd2FpdGluZyB3 aXRoIHRoZSAiLW5vd2FpdCIgZmxhZyBpbgotY2xvc2VfZ2Ric2VydmVyLgotCi1UaGUgLW5vd2Fp dCBmbGFnIGlzIGFsc28gdXNlZCBpbiB0aGUga2lsbF93YWl0X3NwYXduZWRfcHJvY2VzcyBwcm9j IGluCi1nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwLCBzbyB0aGVyZSBpcyBwcmVjZWRlbnQgZm9y IGRvaW5nIHRoaXMuCi0KLVRoZXJlIGFyZSBhbHNvIDE1IG90aGVyIHVzZXMgb2YgIndhaXQgLWki IHNjYXR0ZXJlZCB0aHJvdWdob3V0IHRoZQotdGVzdCBzdWl0ZS4gIFdoaWxlIGl0J3MgdGVtcHRp bmcgdG8gY2hhbmdlIHRoZXNlIHRvIGFsc28gdXNlIHRoZQotLW5vd2FpdCBmbGFnLCBJIHRoaW5r IGl0IG1pZ2h0IGJlIHNhZmVyIHRvIGRlZmVyIGRvaW5nIHNvIHVudGlsIHdlCi1hY3R1YWxseSBz ZWUgYSBwcm9ibGVtLgotCi1JJ3ZlIHRlc3RlZCB0aGlzIHBhdGNoIG9uIEZlZG9yYSAzMiwgMzMs IDM0LCBhbmQgUmF3aGlkZS4gIFJlc3VsdHMgYXJlCi1jb21wYXJhYmxlIG9uIEZlZG9yYSAzMiBh bmQgMzMuICBPbiBGZWRvcmEgMzQgYW5kIFJhd2hpZGUsIHdpdGggdGhpcwotY29tbWl0IGluIHBs YWNlLCB0ZXN0aW5nIGNvbXBsZXRlcyB3aGVuIHRoZSB0YXJnZXRfYm9hcmQgaXMKLW5hdGl2ZS1l eHRlbmRlZC1nZGJzZXJ2ZXIuICBPbiB0aG9zZSBPU2VzLCB3aGVuIG5vdCB1c2luZyB0aGlzIGNv bW1pdCwKLXRlc3RpbmcgdXN1YWxseSBoYW5ncyBkdWUgdG8gYSBwcm9ibGVtIHdpdGgKLWdkYi50 aHJlYWRzL2ZvcmstcGx1cy10aHJlYWRzLmV4cC4gIEkndmUgYWxzbyB0ZXN0ZWQgb24gYWxsIG9m IHRoZQotbWVudGlvbmVkIE9TZXMgd2l0aCB0YXJnZXRfYm9hcmQ9bmF0aXZlLWdkYnNlcnZlcjsg Zm9yIHRoYXQgdGVzdGluZywKLUkgYWNoaWV2ZWQgY29tcGFyYWJsZSByZXN1bHRzIG92ZXIgYSBu dW1iZXIgb2YgcnVucy4gIChVbmZvcnR1bmF0ZWx5Ci1yZXN1bHRzIGFyZSByYXJlbHkgaWRlbnRp Y2FsIGR1ZSB0byByYWN5IHRlc3RzLikKLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Ci0KLQkq IGxpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgKGdkYnNlcnZlcl9leGl0KTogVXNlIHRoZQotCSIt bm93YWl0IiBmbGFnIHdoZW4gd2FpdGluZyBmb3IgZ2Ric2VydmVyIHRvIGV4aXQuCi0KLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgYi9nZGIvdGVz dHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGli L2dkYnNlcnZlci1zdXBwb3J0LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVy LXN1cHBvcnQuZXhwCi1AQCAtNDE4LDcgKzQxOCwxMiBAQCBwcm9jIGNsb3NlX2dkYnNlcnZlciB7 fSB7Ci0gICAgIHZlcmJvc2UgIlF1aXR0aW5nIEdEQnNlcnZlciIKLSAKLSAgICAgY2F0Y2ggImNs b3NlIC1pICRzZXJ2ZXJfc3Bhd25faWQiCi0tICAgIGNhdGNoICJ3YWl0IC1pICRzZXJ2ZXJfc3Bh d25faWQiCi0rCi0rICAgICMgSWYgZ2Ric2VydmVyIG1pc2JlaGF2ZXMsIGFuZCBpZ25vcmVzIHRo ZSBjbG9zZSwgd2FpdGluZyBmb3IgaXQKLSsgICAgIyB3aXRob3V0IHRoZSAtbm93YWl0IGZsYWcg d2lsbCBjYXVzZSB0ZXN0aW5nIHRvIGhhbmcuICBQYXNzaW5nCi0rICAgICMgLW5vd2FpdCBtYWtl cyBleHBlY3QgdGVsbCBUY2wgdG8gd2FpdCBmb3IgdGhlIHByb2Nlc3MgaW4gdGhlCi0rICAgICMg YmFja2dyb3VuZC4KLSsgICAgY2F0Y2ggIndhaXQgLW5vd2FpdCAtaSAkc2VydmVyX3NwYXduX2lk IgotICAgICB1bnNldCBzZXJ2ZXJfc3Bhd25faWQKLSB9Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXJo YnoxOTY0MTY3LWNvbnZlcnQtZW51bS1yYW5nZV90eXBlLnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3 LWNvbnZlcnQtZW51bS1yYW5nZV90eXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBlY2Y4MDQyLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0t cmFuZ2VfdHlwZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3NSArMCwwIEBACi1Gcm9tIEZF RE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRu ZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNzoxMDoyOCAt MDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWNvbnZlcnQtZW51bS1yYW5nZV90eXBlLnBh dGNoCi0KLTs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGlj aCBjaGFuZ2VzIGVudW0KLTs7IHJhbmdlX3R5cGUgaW50byBhIGJpdCBmaWVsZCBlbnVtLgotCi1n ZGI6IENvbnZlcnQgZW51bSByYW5nZV90eXBlIHRvIGEgYml0IGZpZWxkIGVudW0KLQotVGhlIGV4 cHJlc3Npb24gcmFuZ2VfdHlwZSBlbnVtIHJlcHJlc2VudHMgdGhlIGZvbGxvd2luZyBpZGVhczoK LQotICAtIExvd2VyIGJvdW5kIGlzIHNldCB0byBkZWZhdWx0LAotICAtIFVwcGVyIGJvdW5kIGlz IHNldCB0byBkZWZhdWx0LAotICAtIFVwcGVyIGJvdW5kIGlzIGV4Y2x1c2l2ZS4KLQotVGhlcmUg YXJlIGN1cnJlbnRseSA2IGVudHJpZXMgaW4gdGhlIGVudW0gdG8gcmVwcmVzZW50IHRoZSBjb21i aW5hdGlvbgotb2YgYWxsIHRob3NlIGlkZWFzLgotCi1JbiBhIGZ1dHVyZSBjb21taXQgSSdkIGxp a2UgdG8gYWRkIHN0cmlkZSBpbmZvcm1hdGlvbiB0byB0aGUgcmFuZ2UsCi10aGlzIGNvdWxkIGlu IHRoZW9yeSBhcHBlYXIgd2l0aCBhbnkgb2YgdGhlIGV4aXN0aW5nIGVudW0gZW50cmllcywgc28K LXRoaXMgd291bGQgdGFrZSB1cyB0byAxMiBlbnVtIGVudHJpZXMuCi0KLVRoaXMgZmVlbHMgbGlr ZSBpdHMgZ2V0dGluZyBhIGxpdHRsZSBvdXQgb2YgaGFuZCwgc28gaW4gdGhpcyBjb21taXQgSQot c3dpdGNoIHRoZSByYW5nZV90eXBlIGVudW0gb3ZlciB0byBiZWluZyBhIGZsYWdzIHN0eWxlIGVu dW0uICBUaGVyZSdzCi1vbmUgZW50cnkgdG8gcmVwcmVzZW50IG5vIGZsYWdzIGJlaW5nIHNldCwg dGhlbiAzIGZsYWdzIHRvIHJlcHJlc2VudAotdGhlIDMgaWRlYXMgYWJvdmUuICBBZGRpbmcgc3Ry aWRlIGluZm9ybWF0aW9uIHdpbGwgcmVxdWlyZSBhZGRpbmcgb25seQotb25lIG1vcmUgZW51bSBm bGFnLgotCi1JJ3ZlIHRoZW4gZ29uZSB0aHJvdWdoIGFuZCB1cGRhdGVkIHRoZSBjb2RlIHRvIGhh bmRsZSB0aGlzIGNoYW5nZS4KLQotVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFu Z2VzIGFmdGVyIHRoaXMgY29tbWl0LgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBleHBwcmludC5j IChwcmludF9zdWJleHBfc3RhbmRhcmQpOiBVcGRhdGUgdG8gcmVmbGVjdCBjaGFuZ2VzIHRvCi0J ZW51bSByYW5nZV90eXBlLgotCShkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkKTogTGlrZXdpc2Uu Ci0JKiBleHByZXNzaW9uLmggKGVudW0gcmFuZ2VfdHlwZSk6IENvbnZlcnQgdG8gYSBiaXQgZmll bGQgZW51bSwgYW5kCi0JbWFrZSB0aGUgZW51bSB1bnNpZ25lZC4KLQkqIGYtZXhwLnkgKHN1YnJh bmdlKTogVXBkYXRlIHRvIHJlZmxlY3QgY2hhbmdlcyB0byBlbnVtCi0JcmFuZ2VfdHlwZS4KLQkq IGYtbGFuZy5jICh2YWx1ZV9mOTBfc3ViYXJyYXkpOiBMaWtld2lzZS4KLQkqIHBhcnNlLmMgKG9w ZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCk6IExpa2V3aXNlLgotCSogcnVzdC1leHAueSAocnVzdF9w YXJzZXI6OmNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KLQkqIHJ1c3QtbGFu Zy5jIChydXN0X3JhbmdlKTogTGlrZXdpc2UuCi0JKHJ1c3RfY29tcHV0ZV9yYW5nZSk6IExpa2V3 aXNlLgotCShydXN0X3N1YnNjcmlwdCk6IExpa2V3aXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4 cHByaW50LmMgYi9nZGIvZXhwcHJpbnQuYwotLS0tIGEvZ2RiL2V4cHByaW50LmMKLSsrKyBiL2dk Yi9leHBwcmludC5jCi1AQCAtNTg0LDE3ICs1ODQsMTMgQEAgcHJpbnRfc3ViZXhwX3N0YW5kYXJk IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSAJICBsb25nZXN0X3RvX2ludCAo ZXhwLT5lbHRzW3BjICsgMV0ubG9uZ2NvbnN0KTsKLSAJKnBvcyArPSAyOwotIAotLQlpZiAocmFu Z2VfdHlwZSA9PSBOT05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFCi0tCSAgICB8fCByYW5nZV90 eXBlID09IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsJaWYgKHJhbmdlX3R5cGUgJiBS QU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkKLSAJICBmcHV0c19maWx0ZXJlZCAoIkVYQ0xVU0lW RV8iLCBzdHJlYW0pOwotIAlmcHV0c19maWx0ZXJlZCAoIlJBTkdFKCIsIHN0cmVhbSk7Ci0tCWlm IChyYW5nZV90eXBlID09IEhJR0hfQk9VTkRfREVGQVVMVAotLQkgICAgfHwgcmFuZ2VfdHlwZSA9 PSBOT05FX0JPVU5EX0RFRkFVTFQKLS0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9E RUZBVUxUX0VYQ0xVU0lWRSkKLSsJaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9E RUZBVUxUKSkKLSAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVf Q09NTUEpOwotIAlmcHV0c19maWx0ZXJlZCAoIi4uIiwgc3RyZWFtKTsKLS0JaWYgKHJhbmdlX3R5 cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQKLS0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VO RF9ERUZBVUxUKQotKwlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxU KSkKLSAJICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEp OwotIAlmcHV0c19maWx0ZXJlZCAoIikiLCBzdHJlYW0pOwotIAlyZXR1cm47Ci1AQCAtMTExNCwz NiArMTExMCwxOSBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLAotIAkgIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29uc3QpOwot IAllbHQgKz0gMjsKLSAKLS0Jc3dpdGNoIChyYW5nZV90eXBlKQotLQkgIHsKLS0JICBjYXNlIEJP VEhfQk9VTkRfREVGQVVMVDoKLS0JICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIsIHN0 cmVhbSk7Ci0tCSAgICBicmVhazsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgotLQkgICAg ZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsKLS0JICAgIGJyZWFrOwot LQkgIGNhc2UgTE9XX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFOgotLQkgICAgZnB1dHNfZmlsdGVy ZWQgKCJFeGNsdXNpdmVSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsKLS0JICAgIGJyZWFrOwotLQkg IGNhc2UgSElHSF9CT1VORF9ERUZBVUxUOgotLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAn RVhQLi4nIiwgc3RyZWFtKTsKLS0JICAgIGJyZWFrOwotLQkgIGNhc2UgTk9ORV9CT1VORF9ERUZB VUxUOgotLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnRVhQLi5FWFAnIiwgc3RyZWFtKTsK LS0JICAgIGJyZWFrOwotLQkgIGNhc2UgTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRToKLS0J ICAgIGZwdXRzX2ZpbHRlcmVkICgiRXhjbHVzaXZlUmFuZ2UgJ0VYUC4uRVhQJyIsIHN0cmVhbSk7 Ci0tCSAgICBicmVhazsKLS0JICBkZWZhdWx0OgotLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJJbnZh bGlkIFJhbmdlISIsIHN0cmVhbSk7Ci0tCSAgICBicmVhazsKLS0JICB9Ci0rCWlmIChyYW5nZV90 eXBlICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCi0rCSAgZnB1dHNfZmlsdGVyZWQgKCJF eGNsdXNpdmUiLCBzdHJlYW0pOwotKwlmcHV0c19maWx0ZXJlZCAoIlJhbmdlICciLCBzdHJlYW0p OwotKwlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQotKwkgIGZw dXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKLSsJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0 cmVhbSk7Ci0rCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQot KwkgIGZwdXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKLSsJZnB1dHNfZmlsdGVyZWQgKCIn Iiwgc3RyZWFtKTsKLSAKLS0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCi0t CSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKCEocmFuZ2Vf dHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKLSAJICBlbHQgPSBkdW1wX3N1YmV4cCAo ZXhwLCBzdHJlYW0sIGVsdCk7Ci0tCWlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxU Ci0tCSAgICB8fCByYW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKCEocmFu Z2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCi0gCSAgZWx0ID0gZHVtcF9zdWJl eHAgKGV4cCwgc3RyZWFtLCBlbHQpOwotICAgICAgIH0KLSAgICAgICBicmVhazsKLWRpZmYgLS1n aXQgYS9nZGIvZXhwcmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAotLS0tIGEvZ2RiL2V4cHJl c3Npb24uaAotKysrIGIvZ2RiL2V4cHJlc3Npb24uaAotQEAgLTE4NSwyMiArMTg1LDIyIEBAIGV4 dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0 cnVjdCB1aV9maWxlICopOwotICAgIG9yIGluY2x1c2l2ZS4gIFNvIHdlIGhhdmUgc2l4IHNvcnRz IG9mIHN1YnJhbmdlLiAgVGhpcyBlbnVtZXJhdGlvbgotICAgIHR5cGUgaXMgdG8gaWRlbnRpZnkg dGhpcy4gICovCi0gCi0tZW51bSByYW5nZV90eXBlCi0rZW51bSByYW5nZV90eXBlIDogdW5zaWdu ZWQKLSB7Ci0tICAvKiBOZWl0aGVyIHRoZSBsb3cgbm9yIHRoZSBoaWdoIGJvdW5kIHdhcyBnaXZl biAtLSBzbyB0aGlzIHJlZmVycyB0bwotLSAgICAgdGhlIGVudGlyZSBhdmFpbGFibGUgcmFuZ2Uu ICAqLwotLSAgQk9USF9CT1VORF9ERUZBVUxULAotLSAgLyogVGhlIGxvdyBib3VuZCB3YXMgbm90 IGdpdmVuIGFuZCB0aGUgaGlnaCBib3VuZCBpcyBpbmNsdXNpdmUuICAqLwotLSAgTE9XX0JPVU5E X0RFRkFVTFQsCi0tICAvKiBUaGUgaGlnaCBib3VuZCB3YXMgbm90IGdpdmVuIGFuZCB0aGUgbG93 IGJvdW5kIGluIGluY2x1c2l2ZS4gICovCi0tICBISUdIX0JPVU5EX0RFRkFVTFQsCi0tICAvKiBC b3RoIGJvdW5kcyB3ZXJlIGdpdmVuIGFuZCBib3RoIGFyZSBpbmNsdXNpdmUuICAqLwotLSAgTk9O RV9CT1VORF9ERUZBVUxULAotLSAgLyogVGhlIGxvdyBib3VuZCB3YXMgbm90IGdpdmVuIGFuZCB0 aGUgaGlnaCBib3VuZCBpcyBleGNsdXNpdmUuICAqLwotLSAgTk9ORV9CT1VORF9ERUZBVUxUX0VY Q0xVU0lWRSwKLS0gIC8qIEJvdGggYm91bmRzIHdlcmUgZ2l2ZW4uICBUaGUgbG93IGJvdW5kIGlz IGluY2x1c2l2ZSBhbmQgdGhlIGhpZ2gKLS0gICAgIGJvdW5kIGlzIGV4Y2x1c2l2ZS4gICovCi0t ICBMT1dfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUsCi0rICAvKiBUaGlzIGlzIGEgc3RhbmRhcmQg cmFuZ2UuICBCb3RoIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRzIGFyZQotKyAgICAgZGVmaW5l ZCwgYW5kIHRoZSBib3VuZHMgYXJlIGluY2x1c2l2ZS4gICovCi0rICBSQU5HRV9TVEFOREFSRCA9 IDAsCi0rCi0rICAvKiBUaGUgbG93IGJvdW5kIHdhcyBub3QgZ2l2ZW4uICAqLwotKyAgUkFOR0Vf TE9XX0JPVU5EX0RFRkFVTFQgPSAxIDw8IDAsCi0rCi0rICAvKiBUaGUgaGlnaCBib3VuZCB3YXMg bm90IGdpdmVuLiAgKi8KLSsgIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCA9IDEgPDwgMSwKLSsK LSsgIC8qIFRoZSBoaWdoIGJvdW5kIG9mIHRoaXMgcmFuZ2UgaXMgZXhjbHVzaXZlLiAgKi8KLSsg IFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFID0gMSA8PCAyLAotIH07Ci0gCi0rREVGX0VOVU1f RkxBR1NfVFlQRSAoZW51bSByYW5nZV90eXBlLCByYW5nZV90eXBlcyk7Ci0rCi0gI2VuZGlmIC8q ICFkZWZpbmVkIChFWFBSRVNTSU9OX0gpICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9n ZGIvZi1leHAueQotLS0tIGEvZ2RiL2YtZXhwLnkKLSsrKyBiL2dkYi9mLWV4cC55Ci1AQCAtMjg3 LDI2ICsyODcsMzAgQEAgYXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NP TU1BCi0gLyogVGhlcmUgYXJlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UgdHlwZXMgaW4gRjkwLiAg Ki8KLSAKLSBzdWJyYW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKLS0JCQl7IHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgCi0tCQkJICB3cml0ZV9leHBf ZWx0X2xvbmdjc3QgKHBzdGF0ZSwgTk9ORV9CT1VORF9ERUZBVUxUKTsKLSsJCQl7IHdyaXRlX2V4 cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9u Z2NzdCAocHN0YXRlLCBSQU5HRV9TVEFOREFSRCk7Ci0gCQkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSAJOwotIAotIHN1YnJhbmdlOglleHAgJzonCSVwcmVj IEFCT1ZFX0NPTU1BCi0gCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5H RSk7Ci0tCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VORF9ERUZB VUxUKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAotKwkJCQkJCSBSQU5H RV9ISUdIX0JPVU5EX0RFRkFVTFQpOwotIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0 ZSwgT1BfUkFOR0UpOyB9Ci0gCTsKLSAKLSBzdWJyYW5nZToJJzonIGV4cAklcHJlYyBBQk9WRV9D T01NQQotIAkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotLQkJ CSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsIExPV19CT1VORF9ERUZBVUxUKTsKLSsJ CQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAotKwkJCQkJCSBSQU5HRV9MT1dfQk9V TkRfREVGQVVMVCk7Ci0gCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5H RSk7IH0KLSAJOwotIAotIHN1YnJhbmdlOgknOicJJXByZWMgQUJPVkVfQ09NTUEKLSAJCQl7IHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLS0JCQkgIHdyaXRlX2V4cF9l bHRfbG9uZ2NzdCAocHN0YXRlLCBCT1RIX0JPVU5EX0RFRkFVTFQpOwotKwkJCSAgd3JpdGVfZXhw X2VsdF9sb25nY3N0IChwc3RhdGUsCi0rCQkJCQkJIChSQU5HRV9MT1dfQk9VTkRfREVGQVVMVAot KwkJCQkJCSAgfCBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKTsKLSAJCQkgIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotIAk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2Ri L2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi0tLS0gYS9nZGIvZi1sYW5nLmMKLSsrKyBiL2dkYi9m LWxhbmcuYwotQEAgLTEzMSwxMiArMTMxLDEyIEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0 IHZhbHVlICphcnJheSwKLSAKLSAgICpwb3MgKz0gMzsKLSAKLS0gIGlmIChyYW5nZV90eXBlID09 IExPV19CT1VORF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQot KyAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKLSAgICAgbG93X2Jv dW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsKLSAgIGVsc2UKLSAgICAg bG93X2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAs IHBvcywgbm9zaWRlKSk7Ci0gCi0tICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFV TFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0rICBpZiAocmFuZ2VfdHlw ZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkKLSAgICAgaGlnaF9ib3VuZCA9IHJhbmdlLT5i b3VuZHMgKCktPmhpZ2guY29uc3RfdmFsICgpOwotICAgZWxzZQotICAgICBoaWdoX2JvdW5kID0g dmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRl KSk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYwotLS0tIGEvZ2RiL3Bh cnNlLmMKLSsrKyBiL2dkYi9wYXJzZS5jCi1AQCAtOTIxLDIxICs5MjEsMTMgQEAgb3BlcmF0b3Jf bGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50IGVuZHBv cywKLSAgICAgICByYW5nZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkKLSAJbG9uZ2VzdF90b19p bnQgKGV4cHItPmVsdHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKLSAKLS0gICAgICBzd2l0Y2gg KHJhbmdlX3R5cGUpCi0tCXsKLS0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVDoKLS0JY2FzZSBMT1df Qk9VTkRfREVGQVVMVF9FWENMVVNJVkU6Ci0tCWNhc2UgSElHSF9CT1VORF9ERUZBVUxUOgotLQkg IGFyZ3MgPSAxOwotLQkgIGJyZWFrOwotLQljYXNlIEJPVEhfQk9VTkRfREVGQVVMVDoKLS0JICBh cmdzID0gMDsKLS0JICBicmVhazsKLS0JY2FzZSBOT05FX0JPVU5EX0RFRkFVTFQ6Ci0tCWNhc2Ug Tk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRToKLS0JICBhcmdzID0gMjsKLS0JICBicmVhazsK LS0JfQotKyAgICAgIC8qIEFzc3VtZSB0aGUgcmFuZ2UgaGFzIDIgYXJndW1lbnRzIChsb3cgYm91 bmQgYW5kIGhpZ2ggYm91bmQpLCB0aGVuCi0rCSByZWR1Y2UgdGhlIGFyZ3VtZW50IGNvdW50IGlm IGFueSBib3VuZHMgYXJlIHNldCB0byBkZWZhdWx0LiAgKi8KLSsgICAgICBhcmdzID0gMjsKLSsg ICAgICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKQotKwktLWFyZ3M7 Ci0rICAgICAgaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpCi0rCS0t YXJnczsKLSAKLSAgICAgICBicmVhazsKLSAKLWRpZmYgLS1naXQgYS9nZGIvcnVzdC1leHAueSBi L2dkYi9ydXN0LWV4cC55Ci0tLS0gYS9nZGIvcnVzdC1leHAueQotKysrIGIvZ2RiL3J1c3QtZXhw LnkKLUBAIC0yNDkyLDI0ICsyNDkyLDI5IEBAIHJ1c3RfcGFyc2VyOjpjb252ZXJ0X2FzdF90b19l eHByZXNzaW9uIChjb25zdCBzdHJ1Y3QgcnVzdF9vcCAqb3BlcmF0aW9uLAotIAotICAgICBjYXNl IE9QX1JBTkdFOgotICAgICAgIHsKLS0JZW51bSByYW5nZV90eXBlIGtpbmQgPSBCT1RIX0JPVU5E X0RFRkFVTFQ7Ci0rCWVudW0gcmFuZ2VfdHlwZSBraW5kID0gKFJBTkdFX0hJR0hfQk9VTkRfREVG QVVMVAotKwkJCQl8IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKTsKLSAKLSAJaWYgKG9wZXJhdGlv bi0+bGVmdC5vcCAhPSBOVUxMKQotIAkgIHsKLSAJICAgIGNvbnZlcnRfYXN0X3RvX2V4cHJlc3Np b24gKG9wZXJhdGlvbi0+bGVmdC5vcCwgdG9wKTsKLS0JICAgIGtpbmQgPSBISUdIX0JPVU5EX0RF RkFVTFQ7Ci0rCSAgICBraW5kICY9IH5SQU5HRV9MT1dfQk9VTkRfREVGQVVMVDsKLSAJICB9Ci0g CWlmIChvcGVyYXRpb24tPnJpZ2h0Lm9wICE9IE5VTEwpCi0gCSAgewotIAkgICAgY29udmVydF9h c3RfdG9fZXhwcmVzc2lvbiAob3BlcmF0aW9uLT5yaWdodC5vcCwgdG9wKTsKLS0JICAgIGlmIChr aW5kID09IEJPVEhfQk9VTkRfREVGQVVMVCkKLS0JICAgICAga2luZCA9IChvcGVyYXRpb24tPmlu Y2x1c2l2ZQotLQkJICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IExPV19CT1VORF9ERUZBVUxU X0VYQ0xVU0lWRSk7Ci0rCSAgICBpZiAoa2luZCA9PSAoUkFOR0VfSElHSF9CT1VORF9ERUZBVUxU IHwgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQotKwkgICAgICB7Ci0rCQlraW5kID0gUkFOR0Vf TE9XX0JPVU5EX0RFRkFVTFQ7Ci0rCQlpZiAoIW9wZXJhdGlvbi0+aW5jbHVzaXZlKQotKwkJICBr aW5kIHw9IFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFOwotKwkgICAgICB9Ci0gCSAgICBlbHNl Ci0gCSAgICAgIHsKLS0JCWdkYl9hc3NlcnQgKGtpbmQgPT0gSElHSF9CT1VORF9ERUZBVUxUKTsK LS0JCWtpbmQgPSAob3BlcmF0aW9uLT5pbmNsdXNpdmUKLS0JCQk/IE5PTkVfQk9VTkRfREVGQVVM VCA6IE5PTkVfQk9VTkRfREVGQVVMVF9FWENMVVNJVkUpOwotKwkJZ2RiX2Fzc2VydCAoa2luZCA9 PSBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpOwotKwkJa2luZCA9IFJBTkdFX1NUQU5EQVJEOwot KwkJaWYgKCFvcGVyYXRpb24tPmluY2x1c2l2ZSkKLSsJCSAga2luZCB8PSBSQU5HRV9ISUdIX0JP VU5EX0VYQ0xVU0lWRTsKLSAJICAgICAgfQotIAkgIH0KLSAJZWxzZQotZGlmZiAtLWdpdCBhL2dk Yi9ydXN0LWxhbmcuYyBiL2dkYi9ydXN0LWxhbmcuYwotLS0tIGEvZ2RiL3J1c3QtbGFuZy5jCi0r KysgYi9nZGIvcnVzdC1sYW5nLmMKLUBAIC0xMDgyLDEzICsxMDgyLDExIEBAIHJ1c3RfcmFuZ2Ug KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0g ICBraW5kID0gKGVudW0gcmFuZ2VfdHlwZSkgbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1sqcG9z ICsgMV0ubG9uZ2NvbnN0KTsKLSAgICpwb3MgKz0gMzsKLSAKLS0gIGlmIChraW5kID09IEhJR0hf Qk9VTkRfREVGQVVMVCB8fCBraW5kID09IE5PTkVfQk9VTkRfREVGQVVMVAotLSAgICAgIHx8IGtp bmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsgIGlmICghKGtpbmQgJiBSQU5H RV9MT1dfQk9VTkRfREVGQVVMVCkpCi0gICAgIGxvdyA9IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0 ciwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tICBpZiAoa2luZCA9PSBMT1dfQk9VTkRfREVGQVVMVCB8 fCBraW5kID09IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRQotLSAgICAgIHx8IGtpbmQgPT0g Tk9ORV9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lW RSkKLSsgIGlmICghKGtpbmQgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotICAgICBoaWdo ID0gZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKLS0gIGJvb2wg aW5jbHVzaXZlID0gKGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9XX0JP VU5EX0RFRkFVTFQpOwotKyAgYm9vbCBpbmNsdXNpdmUgPSAhKGtpbmQgJiBSQU5HRV9ISUdIX0JP VU5EX0VYQ0xVU0lWRSk7Ci0gCi0gICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLSAgICAgcmV0 dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWls dGluX2ludCwgMSk7Ci1AQCAtMTE3MSwxMyArMTE2OSwxMyBAQCBydXN0X3JhbmdlIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQotIHN0YXRpYyB2 b2lkCi0gcnVzdF9jb21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHZhbHVl ICpyYW5nZSwKLSAJCSAgICBMT05HRVNUICpsb3csIExPTkdFU1QgKmhpZ2gsCi0tCQkgICAgZW51 bSByYW5nZV90eXBlICpraW5kKQotKwkJICAgIHJhbmdlX3R5cGVzICpraW5kKQotIHsKLSAgIGlu dCBpOwotIAotICAgKmxvdyA9IDA7Ci0gICAqaGlnaCA9IDA7Ci0tICAqa2luZCA9IEJPVEhfQk9V TkRfREVGQVVMVDsKLSsgICpraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQgfCBSQU5HRV9I SUdIX0JPVU5EX0RFRkFVTFQ7Ci0gCi0gICBpZiAodHlwZS0+bnVtX2ZpZWxkcyAoKSA9PSAwKQot ICAgICByZXR1cm47Ci1AQCAtMTE4NSwxNSArMTE4MywxNSBAQCBydXN0X2NvbXB1dGVfcmFuZ2Ug KHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAotICAgaSA9IDA7Ci0gICBp ZiAoc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3RhcnQiKSA9PSAwKQotICAg ICB7Ci0tICAgICAgKmtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7Ci0rICAgICAgKmtpbmQgPSBS QU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQ7Ci0gICAgICAgKmxvdyA9IHZhbHVlX2FzX2xvbmcgKHZh bHVlX2ZpZWxkIChyYW5nZSwgMCkpOwotICAgICAgICsraTsKLSAgICAgfQotICAgaWYgKHR5cGUt Pm51bV9maWVsZHMgKCkgPiBpCi0gICAgICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5 cGUsIGkpLCAiZW5kIikgPT0gMCkKLSAgICAgewotLSAgICAgICpraW5kID0gKCpraW5kID09IEJP VEhfQk9VTkRfREVGQVVMVAotLQkgICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9V TkRfREVGQVVMVCk7Ci0rICAgICAgKmtpbmQgPSAoKmtpbmQgPT0gKFJBTkdFX0xPV19CT1VORF9E RUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKQotKwkgICAgICAgPyBSQU5HRV9MT1df Qk9VTkRfREVGQVVMVCA6IFJBTkdFX1NUQU5EQVJEKTsKLSAgICAgICAqaGlnaCA9IHZhbHVlX2Fz X2xvbmcgKHZhbHVlX2ZpZWxkIChyYW5nZSwgaSkpOwotIAotICAgICAgIGlmIChydXN0X2luY2x1 c2l2ZV9yYW5nZV90eXBlX3AgKHR5cGUpKQotQEAgLTEyMTEsNyArMTIwOSw3IEBAIHJ1c3Rfc3Vi c2NyaXB0IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9z aWRlLAotICAgc3RydWN0IHR5cGUgKnJoc3R5cGU7Ci0gICBMT05HRVNUIGxvdywgaGlnaF9ib3Vu ZDsKLSAgIC8qIEluaXRpYWxpemVkIHRvIGFwcGVhc2UgdGhlIGNvbXBpbGVyLiAgKi8KLS0gIGVu dW0gcmFuZ2VfdHlwZSBraW5kID0gQk9USF9CT1VORF9ERUZBVUxUOwotKyAgcmFuZ2VfdHlwZXMg a2luZCA9IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxU OwotICAgTE9OR0VTVCBoaWdoID0gMDsKLSAgIGludCB3YW50X3NsaWNlID0gMDsKLSAKLUBAIC0x MzA4LDggKzEzMDYsNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKLSAgICAgICBlbHNlCi0gCWVycm9yIChfKCJD YW5ub3Qgc3Vic2NyaXB0IG5vbi1hcnJheSB0eXBlIikpOwotIAotLSAgICAgIGlmICh3YW50X3Ns aWNlCi0tCSAgJiYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9XX0JP VU5EX0RFRkFVTFQpKQotKyAgICAgIGlmICh3YW50X3NsaWNlICYmIChraW5kICYgUkFOR0VfTE9X X0JPVU5EX0RFRkFVTFQpKQotIAlsb3cgPSBsb3dfYm91bmQ7Ci0gICAgICAgaWYgKGxvdyA8IDAp Ci0gCWVycm9yIChfKCJJbmRleCBsZXNzIHRoYW4gemVybyIpKTsKLUBAIC0xMzI3LDcgKzEzMjQs NyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVu dW0gbm9zaWRlIG5vc2lkZSwKLSAJICBDT1JFX0FERFIgYWRkcjsKLSAJICBzdHJ1Y3QgdmFsdWUg KmFkZHJ2YWwsICp0ZW07Ci0gCi0tCSAgaWYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8 IGtpbmQgPT0gSElHSF9CT1VORF9ERUZBVUxUKQotKwkgIGlmIChraW5kICYgUkFOR0VfSElHSF9C T1VORF9ERUZBVUxUKQotIAkgICAgaGlnaCA9IGhpZ2hfYm91bmQ7Ci0gCSAgaWYgKGhpZ2ggPCAw KQotIAkgICAgZXJyb3IgKF8oIkhpZ2ggaW5kZXggbGVzcyB0aGFuIHplcm8iKSk7CgpkaWZmIC0t Z2l0IGEvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRj aCBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNlcy1hdC1wcm9tcHQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ZTU4OTAuLjAwMDAwMDAKLS0tIGEvZ2Ri LXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDI2NjAgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4K LURhdGU6IE1vbiwgMjQgTWF5IDIwMjEgMjI6NDY6MjEgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNlcy1hdC1wcm9tcHQucGF0Y2gKLQotOzsgW2ZvcnRy YW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0IGZvciBGb3J0cmFuIGFycmF5Ci07 OyBzbGljZSBzdXBwb3J0Ci0KLWdkYi9mb3J0cmFuOiBBZGQgc3VwcG9ydCBmb3IgRm9ydHJhbiBh cnJheSBzbGljZXMgYXQgdGhlIEdEQiBwcm9tcHQKLQotVGhpcyBjb21taXQgYnJpbmdzIGFycmF5 IHNsaWNlIHN1cHBvcnQgdG8gR0RCLgotCi1XQVJOSU5HOiBUaGlzIHBhdGNoIGNvbnRhaW5zIGEg cmF0aGVyIGJpZyBoYWNrIHdoaWNoIGlzIGxpbWl0ZWQgdG8KLUZvcnRyYW4gYXJyYXlzLCB0aGlz IGNhbiBiZSBzZWVuIGluIGdkYnR5cGVzLmMgYW5kIGYtbGFuZy5jLiAgTW9yZQotZGV0YWlscyBv biB0aGlzIGJlbG93LgotCi1UaGlzIHBhdGNoIHJld3JpdGVzIHR3byBhcmVhcyBvZiBHREIncyBG b3J0cmFuIHN1cHBvcnQsIHRoZSBjb2RlIHRvCi1leHRyYWN0IGFuIGFycmF5IHNsaWNlLCBhbmQg dGhlIGNvZGUgdG8gcHJpbnQgYW4gYXJyYXkuCi0KLUFmdGVyIHRoaXMgY29tbWl0IGEgdXNlciBj YW4sIGZyb20gdGhlIEdEQiBwcm9tcHQsIGFzayBmb3IgYSBzbGljZSBvZgotYSBGb3J0cmFuIGFy cmF5IGFuZCBzaG91bGQgZ2V0IHRoZSBjb3JyZWN0IHJlc3VsdCBiYWNrLiAgU2xpY2VzIGNhbgot KG9wdGlvbmFsbHkpIGhhdmUgdGhlIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCwgYW5kIGEgc3Ry aWRlCi1zcGVjaWZpZWQuICBTbGljZXMgY2FuIGFsc28gaGF2ZSBhIG5lZ2F0aXZlIHN0cmlkZS4K LQotRm9ydHJhbiBoYXMgdGhlIGNvbmNlcHQgb2YgcmVwYWNraW5nIGFycmF5IHNsaWNlcy4gIFdp dGhpbiBhIGNvbXBpbGVkCi1Gb3J0cmFuIHByb2dyYW0gaWYgYSB1c2VyIHBhc3NlcyBhIG5vbi1j b250aWd1b3VzIGFycmF5IHNsaWNlIHRvIGEKLWZ1bmN0aW9uIHRoZW4gdGhlIGNvbXBpbGVyIG1h eSBoYXZlIHRvIHJlcGFjayB0aGUgc2xpY2UsIHRoaXMgaW52b2x2ZXMKLWNvcHlpbmcgdGhlIGVs ZW1lbnRzIG9mIHRoZSBzbGljZSB0byBhIG5ldyBhcmVhIG9mIG1lbW9yeSBiZWZvcmUgdGhlCi1j YWxsLCBhbmQgY29weWluZyB0aGUgZWxlbWVudHMgYmFjayB0byB0aGUgb3JpZ2luYWwgYXJyYXkg YWZ0ZXIgdGhlCi1jYWxsLiAgV2hldGhlciByZXBhY2tpbmcgb2NjdXJzIHdpbGwgZGVwZW5kIG9u IHdoaWNoIHZlcnNpb24gb2YKLUZvcnRyYW4gaXMgYmVpbmcgdXNlZCwgYW5kIHdoYXQgdHlwZSBv ZiBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQuCi0KLVRoaXMgY29tbWl0IGFkZHMgc3VwcG9ydCBm b3IgYm90aCBwYWNrZWQsIGFuZCB1bnBhY2tlZCBhcnJheSBzbGljaW5nLAotd2l0aCB0aGUgZGVm YXVsdCBiZWluZyB1bnBhY2tlZC4KLQotV2l0aCBhbiB1bnBhY2tlZCBhcnJheSBzbGljZSwgd2hl biB0aGUgdXNlciBhc2tzIGZvciBhIHNsaWNlIG9mIGFuCi1hcnJheSBHREIgY3JlYXRlcyBhIG5l dyB0eXBlIHRoYXQgYWNjdXJhdGVseSBkZXNjcmliZXMgd2hlcmUgdGhlCi1lbGVtZW50cyBvZiB0 aGUgc2xpY2UgY2FuIGJlIGZvdW5kIHdpdGhpbiB0aGUgb3JpZ2luYWwgYXJyYXksIGEKLXZhbHVl IG9mIHRoaXMgdHlwZSBpcyB0aGVuIHJldHVybmVkIHRvIHRoZSB1c2VyLiAgVGhlIGFkZHJlc3Mg b2YgYW4KLWVsZW1lbnQgd2l0aGluIHRoZSBzbGljZSB3aWxsIGJlIGVxdWFsIHRvIHRoZSBhZGRy ZXNzIG9mIGFuIGVsZW1lbnQKLXdpdGhpbiB0aGUgb3JpZ2luYWwgYXJyYXkuCi0KLUEgdXNlciBj YW4gY2hvb3NlIHRvIHNlbGVjdCBwYWNrZWQgYXJyYXkgc2xpY2VzIGluc3RlYWQgdXNpbmc6Ci0K LSAgKGdkYikgc2V0IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyBvbnxvZmYKLSAgKGdkYikg c2hvdyBmb3J0cmFuIHJlcGFjay1hcnJheS1zbGljZXMKLQotV2l0aCBwYWNrZWQgYXJyYXkgc2xp Y2VzIEdEQiBjcmVhdGVzIGEgbmV3IHR5cGUgdGhhdCByZWZsZWN0cyBob3cgdGhlCi1lbGVtZW50 cyBvZiB0aGUgc2xpY2Ugd291bGQgbG9vayBpZiB0aGV5IHdlcmUgbGFpZCBvdXQgaW4gY29udGln dW91cwotbWVtb3J5LCBhbGxvY2F0ZXMgYSB2YWx1ZSBvZiB0aGlzIHR5cGUsIGFuZCB0aGVuIGZl dGNoZXMgdGhlIGVsZW1lbnRzCi1mcm9tIHRoZSBvcmlnaW5hbCBhcnJheSBhbmQgcGxhY2VzIHRo ZW4gaW50byB0aGUgY29udGVudHMgYnVmZmVyIG9mCi10aGUgbmV3IHZhbHVlLgotCi1PbmUgYmVu ZWZpdCBvZiB1c2luZyBwYWNrZWQgc2xpY2VzIG92ZXIgdW5wYWNrZWQgc2xpY2VzIGlzIHRoZSBt ZW1vcnkKLXVzYWdlLCB0YWtpbmcgYSBzbWFsbCBzbGljZSBvZiBOIGVsZW1lbnRzIGZyb20gYSBs YXJnZSBhcnJheSB3aWxsCi1yZXF1aXJlIChpbiBHREIpIE4gKiBFTEVNRU5UX1NJWkUgYnl0ZXMg b2YgbWVtb3J5LCB3aGlsZSBhbiB1bnBhY2tlZAotYXJyYXkgd2lsbCBhbHNvIGluY2x1ZGUgYWxs IG9mIHRoZSAicGFkZGluZyIgYmV0d2VlbiB0aGUKLW5vbi1jb250aWd1b3VzIGVsZW1lbnRzLiAg VGhlcmUgYXJlIG5ldyB0ZXN0cyBhZGRlZCB0aGF0IGhpZ2hsaWdodAotdGhpcyBkaWZmZXJlbmNl LgotCi1UaGVyZSBpcyBhbHNvIGEgbmV3IGRlYnVnZ2luZyBmbGFnIGFkZGVkIHdpdGggdGhpcyBj b21taXQgdGhhdAotaW50cm9kdWNlcyB0aGVzZSBjb21tYW5kczoKLQotICAoZ2RiKSBzZXQgZGVi dWcgZm9ydHJhbi1hcnJheS1zbGljaW5nIG9ufG9mZgotICAoZ2RiKSBzaG93IGRlYnVnIGZvcnRy YW4tYXJyYXktc2xpY2luZwotCi1UaGlzIHByaW50cyBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhl IGFycmF5IHNsaWNlcyBhcmUgYmVpbmcgYnVpbHQuCi0KLUFzIGJvdGggdGhlIHJlcGFja2luZywg YW5kIHRoZSBhcnJheSBwcmludGluZyByZXF1aXJlcyBHREIgdG8gd2FsawotdGhyb3VnaCBhIG11 bHRpLWRpbWVuc2lvbmFsIEZvcnRyYW4gYXJyYXkgdmlzaXRpbmcgZWFjaCBlbGVtZW50LCB0aGlz Ci1jb21taXQgYWRkcyB0aGUgZmlsZSBmLWFycmF5LXdhbGsuaCwgd2hpY2ggaW50cm9kdWNlcyBz b21lCi1pbmZyYXN0cnVjdHVyZSB0byBzdXBwb3J0IHRoaXMgcHJvY2Vzcy4gIFRoaXMgbWVhbnMg dGhlIGFycmF5IHByaW50aW5nCi1jb2RlIGluIGYtdmFscHJpbnQuYyBpcyBzaWduaWZpY2FudGx5 IHJlZHVjZWQuCi0KLVRoZSBvbmx5IHNsaWdodCBpc3N1ZSB3aXRoIHRoaXMgY29tbWl0IGlzIHRo ZSAicmF0aGVyIGJpZyBoYWNrIiB0aGF0IEkKLW1lbnRpb25lZCBhYm92ZS4gIFRoaXMgaGFjayBh bGxvd3MgdXMgdG8gaGFuZGxlIG9uZSBzcGVjaWZpYyBjYXNlLAotYXJyYXkgc2xpY2VzIHdpdGgg bmVnYXRpdmUgc3RyaWRlcy4gIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgSSBkb24ndAotYmVsaWV2 ZSB0aGUgY3VycmVudCBHREIgdmFsdWUgY29udGVudHMgbW9kZWwgd2lsbCBhbGxvdyB1cyB0bwot Y29ycmVjdGx5IGhhbmRsZSwgYW5kIHJhdGhlciB0aGFuIHJld3JpdGUgdGhlIHZhbHVlIGNvbnRl bnRzIGNvZGUKLXJpZ2h0IG5vdywgSSdtIGhvcGluZyB0byBzbGlwIHRoaXMgaGFjayBpbiBhcyBh IHdvcmsgYXJvdW5kLgotCi1UaGUgcHJvYmxlbSBpcyB0aGF0LCBhcyBJIHNlZSBpdCwgdGhlIGN1 cnJlbnQgdmFsdWUgY29udGVudHMgbW9kZWwKLWFzc3VtZXMgdGhhdCBhbiBvYmplY3QgYmFzZSBh ZGRyZXNzIHdpbGwgYmUgdGhlIGxvd2VzdCBhZGRyZXNzIHdpdGhpbgotdGhhdCBvYmplY3QsIGFu ZCB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgb2JqZWN0IHN0YXJ0IGF0IHRoaXMgYmFzZQotYWRk cmVzcyBhbmQgb2NjdXB5IHRoZSBUWVBFX0xFTkdUSCBieXRlcyBhZnRlciB0aGF0LgotCi0oIFdl IGRvIGhhdmUgdGhlIGVtYmVkZGVkX29mZnNldCwgd2hpY2ggaXMgdXNlZCBmb3IgQysrIHN1Yi1j bGFzc2VzLAotc3VjaCB0aGF0IGFuIG9iamVjdCBjYW4gc3RhcnQgYXQgc29tZSBvZmZzZXQgZnJv bSB0aGUgY29udGVudCBidWZmZXIsCi1ob3dldmVyLCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBv YmplY3QgdGhlbiBvY2N1cGllcyB0aGUgbmV4dAotVFlQRV9MRU5HVEggYnl0ZXMgaXMgc3RpbGwg dHJ1ZSB3aXRoaW4gR0RCLiApCi0KLVRoZSBwcm9ibGVtIGlzIHRoYXQgRm9ydHJhbiBhcnJheXMg d2l0aCBhIG5lZ2F0aXZlIHN0cmlkZSBkb24ndCBmb2xsb3cKLXRoaXMgcGF0dGVybi4gIEluIHRo aXMgY2FzZSB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZSBvYmplY3QgcG9pbnRzIHRvCi10aGUgZWxl bWVudCB3aXRoIHRoZSBoaWdoZXN0IGFkZHJlc3MsIHRoZSBjb250ZW50cyBvZiB0aGUgYXJyYXkg dGhlbgotc3RhcnQgYXQgc29tZSBvZmZzZXQgX2JlZm9yZV8gdGhlIGJhc2UgYWRkcmVzcywgYW5k IHByb2NlZWQgZm9yIG9uZQotZWxlbWVudCBfcGFzdF8gdGhlIGJhc2UgYWRkcmVzcy4KLQotQXMg dGhlIHN0cmlkZSBmb3Igc3VjaCBhbiBhcnJheSB3b3VsZCBiZSBuZWdhdGl2ZSB0aGVuLCBpbiB0 aGVvcnkgdGhlCi1UWVBFX0xFTkdUSCBmb3IgdGhpcyB0eXBlIHdvdWxkIGFsc28gYmUgbmVnYXRp dmUuICBIb3dldmVyLCBpbiBtYW55Ci1wbGFjZXMgYSB2YWx1ZSBpbiBHREIgd2lsbCBkZWdyYWRl IHRvIGEgcG9pbnRlciArIGxlbmd0aCwgYW5kIHRoZQotbGVuZ3RoIGFsbW9zdCBhbHdheXMgY29t ZXMgZnJvbSB0aGUgVFlQRV9MRU5HVEguCi0KLUl0IGlzIG15IGJlbGllZiB0aGF0IGluIG9yZGVy IHRvIGNvcnJlY3RseSBtb2RlbCB0aGlzIGNhc2UgdGhlIHZhbHVlCi1jb250ZW50IGhhbmRsaW5n IG9mIEdEQiB3aWxsIG5lZWQgdG8gYmUgcmV3b3JrZWQgdG8gc3BsaXQgYXBhcnQgdGhlCi12YWx1 ZSdzIGNvbnRlbnQgYnVmZmVyICh3aGljaCBpcyBhIGJsb2NrIG9mIG1lbW9yeSB3aXRoIGEgbGVu Z3RoKSwgYW5kCi10aGUgb2JqZWN0J3MgaW4gbWVtb3J5IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3Ro LCB3aGljaCBjb3VsZCBiZQotbmVnYXRpdmUuCi0KLVRoaW5ncyBhcmUgZnVydGhlciBjb21wbGlj YXRlZCBiZWNhdXNlIGFycmF5cyB3aXRoIG5lZ2F0aXZlIHN0cmlkZXMKLWxpa2UgdGhpcyBhcmUg YWx3YXlzIGR5bmFtaWMgdHlwZXMuICBXaGVuIGEgdmFsdWUgaGFzIGEgZHluYW1pYyB0eXBlCi1h bmQgaXRzIGJhc2UgYWRkcmVzcyBuZWVkcyByZXNvbHZpbmcgd2UgYWN0dWFsbHkgc3RvcmUgdGhl IGFkZHJlc3Mgb2YKLXRoZSBvYmplY3Qgd2l0aGluIHRoZSByZXNvbHZlZCBkeW5hbWljIHR5cGUs IG5vdCB3aXRoaW4gdGhlIHZhbHVlCi1vYmplY3QgaXRzZWxmLgotCi1JbiBzaG9ydCBJIGRvbid0 IGN1cnJlbnRseSBzZWUgYW4gZWFzeSBwYXRoIHRvIGNsZWFubHkgc3VwcG9ydCB0aGlzCi1zaXR1 YXRpb24gd2l0aGluIEdEQi4gIEFuZCBzbyBJIGJlbGlldmUgdGhhdCBsZWF2ZXMgdHdvIG9wdGlv bnMsCi1laXRoZXIgYWRkIGEgd29yayBhcm91bmQsIG9yIGNhdGNoIGNhc2VzIHdoZXJlIHRoZSB1 c2VyIHRyaWVzIHRvIG1ha2UKLXVzZSBvZiBhIG5lZ2F0aXZlIHN0cmlkZSwgb3IgYWNjZXNzIGFu IGFycmF5IHdpdGggYSBuZWdhdGl2ZSBzdHJpZGUsCi1hbmQgdGhyb3cgYW4gZXJyb3IuCi0KLVRo aXMgcGF0Y2ggY3VycmVudGx5IGdvZXMgd2l0aCBhZGRpbmcgYSB3b3JrIGFyb3VuZCwgd2hpY2gg aXMgdGhhdAotd2hlbiB3ZSByZXNvbHZlIGEgZHluYW1pYyBGb3J0cmFuIGFycmF5IHR5cGUsIGlm IHRoZSBzdHJpZGUgaXMKLW5lZ2F0aXZlLCB0aGVuIHdlIGFkanVzdCB0aGUgYmFzZSBhZGRyZXNz IHRvIHBvaW50IHRvIHRoZSBsb3dlc3QKLWFkZHJlc3MgcmVxdWlyZWQgYnkgdGhlIGFycmF5LiAg VGhlIHByaW50aW5nIGFuZCBzbGljaW5nIGNvZGUgaXMgYXdhcmUKLW9mIHRoaXMgYWRqdXN0bWVu dCBhbmQgd2lsbCBjb3JyZWN0bHkgc2xpY2UgYW5kIHByaW50IEZvcnRyYW4gYXJyYXlzLgotCi1X aGVyZSB0aGlzIGhhY2sgd2lsbCBzaG93IHRocm91Z2ggdG8gdGhlIHVzZXIgaXMgaWYgdGhleSBh c2sgZm9yIHRoZQotYWRkcmVzcyBvZiBhbiBhcnJheSBpbiB0aGVpciBwcm9ncmFtIHdpdGggYSBu ZWdhdGl2ZSBhcnJheSBzdHJpZGUsIHRoZQotYWRkcmVzcyB0aGV5IGdldCBmcm9tIEdEQiB3aWxs IG5vdCBtYXRjaCB0aGUgYWRkcmVzcyB0aGF0IHdvdWxkIGJlCi1jb21wdXRlZCB3aXRoaW4gdGhl IEZvcnRyYW4gcHJvZ3JhbS4KLQotZ2RiL0NoYW5nZUxvZzoKLQotCSogTWFrZWZpbGUuaW4gKEhG SUxFU19OT19TUkNESVIpOiBBZGQgZi1hcnJheS13YWxrZXIuaC4KLQkqIE5FV1M6IE1lbnRpb24g bmV3IG9wdGlvbnMuCi0JKiBmLWFycmF5LXdhbGtlci5oOiBOZXcgZmlsZS4KLQkqIGYtbGFuZy5j OiBJbmNsdWRlICdnZGJjbWQuaCcgYW5kICdmLWFycmF5LXdhbGtlci5oJy4KLQkocmVwYWNrX2Fy cmF5X3NsaWNlcyk6IE5ldyBzdGF0aWMgZ2xvYmFsLgotCShzaG93X3JlcGFja19hcnJheV9zbGlj ZXMpOiBOZXcgZnVuY3Rpb24uCi0JKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1Zyk6IE5ldyBz dGF0aWMgZ2xvYmFsLgotCShzaG93X2ZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1Zyk6IE5ldyBm dW5jdGlvbi4KLQkodmFsdWVfZjkwX3N1YmFycmF5KTogRGVsZXRlLgotCShza2lwX3VuZGV0ZXJt aW5lZF9hcmdsaXN0KTogRGVsZXRlLgotCShjbGFzcyBmb3J0cmFuX2FycmF5X3JlcGFja2VyX2Jh c2VfaW1wbCk6IE5ldyBjbGFzcy4KLQkoY2xhc3MgZm9ydHJhbl9sYXp5X2FycmF5X3JlcGFja2Vy X2ltcGwpOiBOZXcgY2xhc3MuCi0JKGNsYXNzIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfaW1wbCk6 IE5ldyBjbGFzcy4KLQkoZm9ydHJhbl92YWx1ZV9zdWJhcnJheSk6IENvbXBsZXRlIHJld3JpdGUu Ci0JKHNldF9mb3J0cmFuX2xpc3QpOiBOZXcgc3RhdGljIGdsb2JhbC4KLQkoc2hvd19mb3J0cmFu X2xpc3QpOiBMaWtld2lzZS4KLQkoX2luaXRpYWxpemVfZl9sYW5ndWFnZSk6IFJlZ2lzdGVyIG5l dyBjb21tYW5kcy4KLQkoZm9ydHJhbl9hZGp1c3RfZHluYW1pY19hcnJheV9iYXNlX2FkZHJlc3Nf aGFjayk6IE5ldyBmdW5jdGlvbi4KLQkqIGYtbGFuZy5oIChmb3J0cmFuX2FkanVzdF9keW5hbWlj X2FycmF5X2Jhc2VfYWRkcmVzc19oYWNrKToKLQlEZWNsYXJlLgotCSogZi12YWxwcmludC5jOiBJ bmNsdWRlICdmLWFycmF5LXdhbGtlci5oJy4KLQkoY2xhc3MgZm9ydHJhbl9hcnJheV9wcmludGVy X2ltcGwpOiBOZXcgY2xhc3MuCi0JKGY3N19wcmludF9hcnJheV8xKTogRGVsZXRlLgotCShmNzdf cHJpbnRfYXJyYXkpOiBEZWxldGUuCi0JKGZvcnRyYW5fcHJpbnRfYXJyYXkpOiBOZXcuCi0JKGZf dmFsdWVfcHJpbnRfaW5uZXIpOiBVcGRhdGUgdG8gY2FsbCBmb3J0cmFuX3ByaW50X2FycmF5Lgot CSogZ2RidHlwZXMuYzogSW5jbHVkZSAnZi1sYW5nLmgnLgotCShyZXNvbHZlX2R5bmFtaWNfdHlw ZV9pbnRlcm5hbCk6IENhbGwKLQlmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2VfYWRk cmVzc19oYWNrLgotCi1nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKLQotICAgICAgICAqIGdkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwOiBOZXcgZmlsZS4KLSAgICAgICAgKiBnZGIuZm9y dHJhbi9hcnJheS1zbGljZXMtYmFkLmY5MDogTmV3IGZpbGUuCi0gICAgICAgICogZ2RiLmZvcnRy YW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhwOiBOZXcgZmlsZS4KLSAgICAgICAgKiBnZGIu Zm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5mOTA6IE5ldyBmaWxlLgotICAgICAgICAq IGdkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHA6IFJld3JpdGUgdGVzdHMuCi0gICAgICAgICog Z2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmY5MDogUmV3cml0ZSB0ZXN0cy4KLSAgICAgICAgKiBn ZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cDogQ29ycmVjdCBleHBlY3RlZCByZXN1bHRzLgotCi1n ZGIvZG9jL0NoYW5nZUxvZzoKLQotICAgICAgICAqIGdkYi50ZXhpbmZvIChEZWJ1Z2dpbmcgT3V0 cHV0KTogRG9jdW1lbnQgJ3NldC9zaG93IGRlYnVnCi0gICAgICAgIGZvcnRyYW4tYXJyYXktc2xp Y2luZycuCi0gICAgICAgIChTcGVjaWFsIEZvcnRyYW4gQ29tbWFuZHMpOiBEb2N1bWVudCAnc2V0 L3Nob3cgZm9ydHJhbgotICAgICAgICByZXBhY2stYXJyYXktc2xpY2VzJy4KLQotZGlmZiAtLWdp dCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotLS0tIGEvZ2RiL01ha2VmaWxl LmluCi0rKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xMjY4LDYgKzEyNjgsNyBAQCBIRklMRVNf Tk9fU1JDRElSID0gXAotIAlleHByZXNzaW9uLmggXAotIAlleHRlbnNpb24uaCBcCi0gCWV4dGVu c2lvbi1wcml2LmggXAotKwlmLWFycmF5LXdhbGtlci5oIFwKLSAJZi1sYW5nLmggXAotIAlmYnNk LW5hdC5oIFwKLSAJZmJzZC10ZGVwLmggXAotZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05F V1MKLS0tLSBhL2dkYi9ORVdTCi0rKysgYi9nZGIvTkVXUwotQEAgLTExMSw2ICsxMTEsMTkgQEAg bWFpbnRlbmFuY2UgcHJpbnQgY29yZS1maWxlLWJhY2tlZC1tYXBwaW5ncwotICAgUHJpbnRzIGZp bGUtYmFja2VkIG1hcHBpbmdzIGxvYWRlZCBmcm9tIGEgY29yZSBmaWxlJ3Mgbm90ZSBzZWN0aW9u LgotICAgT3V0cHV0IGlzIGV4cGVjdGVkIHRvIGJlIHNpbWlsYXIgdG8gdGhhdCBvZiAiaW5mbyBw cm9jIG1hcHBpbmdzIi4KLSAKLStzZXQgZGVidWcgZm9ydHJhbi1hcnJheS1zbGljaW5nIG9ufG9m ZgotK3Nob3cgZGVidWcgZm9ydHJhbi1hcnJheS1zbGljaW5nCi0rICBQcmludCBkZWJ1Z2dpbmcg d2hlbiB0YWtpbmcgc2xpY2VzIG9mIEZvcnRyYW4gYXJyYXlzLgotKwotK3NldCBmb3J0cmFuIHJl cGFjay1hcnJheS1zbGljZXMgb258b2ZmCi0rc2hvdyBmb3J0cmFuIHJlcGFjay1hcnJheS1zbGlj ZXMKLSsgIFdoZW4gdGFraW5nIHNsaWNlcyBmcm9tIEZvcnRyYW4gYXJyYXlzIGFuZCBzdHJpbmdz LCBpZiB0aGUgc2xpY2UgaXMKLSsgIG5vbi1jb250aWd1b3VzIHdpdGhpbiB0aGUgb3JpZ2luYWwg dmFsdWUgdGhlbiwgd2hlbiB0aGlzIG9wdGlvbiBpcwotKyAgb24sIHRoZSBuZXcgdmFsdWUgd2ls bCBiZSByZXBhY2tlZCBpbnRvIGEgc2luZ2xlIGNvbnRpZ3VvdXMgdmFsdWUuCi0rICBXaGVuIHRo aXMgb3B0aW9uIGlzIG9mZiwgdGhlbiB0aGUgdmFsdWUgcmV0dXJuZWQgd2lsbCBjb25zaXN0IG9m IGEKLSsgIGRlc2NyaXB0b3IgdGhhdCBkZXNjcmliZXMgdGhlIHNsaWNlIHdpdGhpbiB0aGUgbWVt b3J5IG9mIHRoZQotKyAgb3JpZ2luYWwgcGFyZW50IHZhbHVlLgotKwotICogQ2hhbmdlZCBjb21t YW5kcwotIAotIGFsaWFzIFstYV0gWy0tXSBBTElBUyA9IENPTU1BTkQgW0RFRkFVTFQtQVJHUy4u Ll0KLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwotLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwotKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwot QEAgLTE2OTE5LDYgKzE2OTE5LDI5IEBAIFRoaXMgY29tbWFuZCBwcmludHMgdGhlIHZhbHVlcyBj b250YWluZWQgaW4gdGhlIEZvcnRyYW4gQGNvZGV7Q09NTU9OfQotIGJsb2NrIHdob3NlIG5hbWUg aXMgQHZhcntjb21tb24tbmFtZX0uICBXaXRoIG5vIGFyZ3VtZW50LCB0aGUgbmFtZXMgb2YKLSBh bGwgQGNvZGV7Q09NTU9OfSBibG9ja3MgdmlzaWJsZSBhdCB0aGUgY3VycmVudCBwcm9ncmFtIGxv Y2F0aW9uIGFyZQotIHByaW50ZWQuCi0rQGNpbmRleCBhcnJheXMgc2xpY2VzIChGb3J0cmFuKQot K0BraW5kZXggc2V0IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcwotK0BraW5kZXggc2hvdyBm b3J0cmFuIHJlcGFjay1hcnJheS1zbGljZXMKLStAaXRlbSBzZXQgZm9ydHJhbiByZXBhY2stYXJy YXktc2xpY2VzIFtvbnxvZmZdCi0rQGl0ZW0gc2hvdyBmb3J0cmFuIHJlcGFjay1hcnJheS1zbGlj ZXMKLStXaGVuIHRha2luZyBhIHNsaWNlIGZyb20gYW4gYXJyYXksIGEgRm9ydHJhbiBjb21waWxl ciBjYW4gY2hvb3NlIHRvCi0rZWl0aGVyIHByb2R1Y2UgYW4gYXJyYXkgZGVzY3JpcHRvciB0aGF0 IGRlc2NyaWJlcyB0aGUgc2xpY2UgaW4gcGxhY2UsCi0rb3IgaXQgbWF5IHJlcGFjayB0aGUgc2xp Y2UsIGNvcHlpbmcgdGhlIGVsZW1lbnRzIG9mIHRoZSBzbGljZSBpbnRvIGEKLStuZXcgcmVnaW9u IG9mIG1lbW9yeS4KLSsKLStXaGVuIHRoaXMgc2V0dGluZyBpcyBvbiwgdGhlbiBAdmFsdWV7R0RC Tn0gd2lsbCBhbHNvIHJlcGFjayBhcnJheQotK3NsaWNlcyBpbiBzb21lIHNpdHVhdGlvbnMuICBX aGVuIHRoaXMgc2V0dGluZyBpcyBvZmYsIHRoZW4KLStAdmFsdWV7R0RCTn0gd2lsbCBjcmVhdGUg YXJyYXkgZGVzY3JpcHRvcnMgZm9yIHNsaWNlcyB0aGF0IHJlZmVyZW5jZQotK3RoZSBvcmlnaW5h bCBkYXRhIGluIHBsYWNlLgotKwotK0B2YWx1ZXtHREJOfSB3aWxsIG5ldmVyIHJlcGFjayBhbiBh cnJheSBzbGljZSBpZiB0aGUgZGF0YSBmb3IgdGhlCi0rc2xpY2UgaXMgY29udGlndW91cyB3aXRo aW4gdGhlIG9yaWdpbmFsIGFycmF5LgotKwotK0B2YWx1ZXtHREJOfSB3aWxsIGFsd2F5cyByZXBh Y2sgc3RyaW5nIHNsaWNlcyBpZiB0aGUgZGF0YSBmb3IgdGhlCi0rc2xpY2UgaXMgbm9uLWNvbnRp Z3VvdXMgd2l0aGluIHRoZSBvcmlnaW5hbCBzdHJpbmcgYXMgQHZhbHVle0dEQk59Ci0rZG9lcyBu b3Qgc3VwcG9ydCBwcmludGluZyBub24tY29udGlndW91cyBzdHJpbmdzLgotKwotK1RoZSBkZWZh dWx0IGZvciB0aGlzIHNldHRpbmcgaXMgQGNvZGV7b2ZmfS4KLSBAZW5kIHRhYmxlCi0gCi0gQG5v ZGUgUGFzY2FsCi1AQCAtMjY1MDcsNiArMjY1MzAsMTYgQEAgU2hvdyB0aGUgY3VycmVudCBzdGF0 ZSBvZiBGcmVlQlNEIExXUCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCi0gVHVybnMgb24gb3Igb2ZmIGRl YnVnZ2luZyBtZXNzYWdlcyBmcm9tIHRoZSBGcmVlQlNEIG5hdGl2ZSB0YXJnZXQuCi0gQGl0ZW0g c2hvdyBkZWJ1ZyBmYnNkLW5hdAotIFNob3cgdGhlIGN1cnJlbnQgc3RhdGUgb2YgRnJlZUJTRCBu YXRpdmUgdGFyZ2V0IGRlYnVnZ2luZyBtZXNzYWdlcy4KLSsKLStAaXRlbSBzZXQgZGVidWcgZm9y dHJhbi1hcnJheS1zbGljaW5nCi0rQGNpbmRleCBmb3J0cmFuIGFycmF5IHNsaWNpbmcgZGVidWdn aW5nIGluZm8KLStUdXJucyBvbiBvciBvZmYgZGlzcGxheSBvZiBAdmFsdWV7R0RCTn0gRm9ydHJh biBhcnJheSBzbGljaW5nCi0rZGVidWdnaW5nIGluZm8uICBUaGUgZGVmYXVsdCBpcyBvZmYuCi0r Ci0rQGl0ZW0gc2hvdyBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcKLStEaXNwbGF5cyB0aGUg Y3VycmVudCBzdGF0ZSBvZiBkaXNwbGF5aW5nIEB2YWx1ZXtHREJOfSBGb3J0cmFuIGFycmF5Ci0r c2xpY2luZyBkZWJ1Z2dpbmcgaW5mby4KLSsKLSBAaXRlbSBzZXQgZGVidWcgZnJhbWUKLSBAY2lu ZGV4IGZyYW1lIGRlYnVnZ2luZyBpbmZvCi0gVHVybnMgb24gb3Igb2ZmIGRpc3BsYXkgb2YgQHZh bHVle0dEQk59IGZyYW1lIGRlYnVnZ2luZyBpbmZvLiAgVGhlCi1kaWZmIC0tZ2l0IGEvZ2RiL2Yt YXJyYXktd2Fsa2VyLmggYi9nZGIvZi1hcnJheS13YWxrZXIuaAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9mLWFycmF5LXdhbGtlci5oCi1AQCAtMCwwICsx LDI2NSBAQAotKy8qIENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsg ICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIFN1cHBvcnQgY2xhc3NlcyB0byB3 cmFwIHVwIHRoZSBwcm9jZXNzIG9mIGl0ZXJhdGluZyBvdmVyIGEKLSsgICBtdWx0aS1kaW1lbnNp b25hbCBGb3J0cmFuIGFycmF5LiAgKi8KLSsKLSsjaWZuZGVmIEZfQVJSQVlfV0FMS0VSX0gKLSsj ZGVmaW5lIEZfQVJSQVlfV0FMS0VSX0gKLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRl ICJnZGJ0eXBlcy5oIgotKyNpbmNsdWRlICJmLWxhbmcuaCIKLSsKLSsvKiBDbGFzcyBmb3IgY2Fs Y3VsYXRpbmcgdGhlIGJ5dGUgb2Zmc2V0IGZvciBlbGVtZW50cyB3aXRoaW4gYSBzaW5nbGUKLSsg ICBkaW1lbnNpb24gb2YgYSBGb3J0cmFuIGFycmF5LiAgKi8KLStjbGFzcyBmb3J0cmFuX2FycmF5 X29mZnNldF9jYWxjdWxhdG9yCi0rewotK3B1YmxpYzoKLSsgIC8qIENyZWF0ZSBhIG5ldyBvZmZz ZXQgY2FsY3VsYXRvciBmb3IgVFlQRSwgd2hpY2ggaXMgZWl0aGVyIGFuIGFycmF5IG9yIGEKLSsg ICAgIHN0cmluZy4gICovCi0rICBleHBsaWNpdCBmb3J0cmFuX2FycmF5X29mZnNldF9jYWxjdWxh dG9yIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSsgIHsKLSsgICAgLyogVmFsaWRhdGUgdGhlIHR5cGUu ICAqLwotKyAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0rICAgIGlmICh0eXBlLT5j b2RlICgpICE9IFRZUEVfQ09ERV9BUlJBWQotKwkmJiAodHlwZS0+Y29kZSAoKSAhPSBUWVBFX0NP REVfU1RSSU5HKSkKLSsgICAgICBlcnJvciAoXygiY2FuIG9ubHkgY29tcHV0ZSBvZmZzZXRzIGZv ciBhcnJheXMgYW5kIHN0cmluZ3MiKSk7Ci0rCi0rICAgIC8qIEdldCB0aGUgcmFuZ2UsIGFuZCBl eHRyYWN0IHRoZSBib3VuZHMuICAqLwotKyAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IHR5 cGUtPmluZGV4X3R5cGUgKCk7Ci0rICAgIGlmICghZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2Vf dHlwZSwgJm1fbG93ZXJib3VuZCwgJm1fdXBwZXJib3VuZCkpCi0rICAgICAgZXJyb3IgKCJ1bmFi bGUgdG8gcmVhZCBhcnJheSBib3VuZHMiKTsKLSsKLSsgICAgLyogRmlndXJlIG91dCB0aGUgc3Ry aWRlIGZvciB0aGlzIGFycmF5LiAgKi8KLSsgICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hl Y2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKyAgICBtX3N0cmlkZSA9IHR5 cGUtPmluZGV4X3R5cGUgKCktPmJvdW5kcyAoKS0+Yml0X3N0cmlkZSAoKTsKLSsgICAgaWYgKG1f c3RyaWRlID09IDApCi0rICAgICAgbV9zdHJpZGUgPSB0eXBlX2xlbmd0aF91bml0cyAoZWx0X3R5 cGUpOwotKyAgICBlbHNlCi0rICAgICAgewotKwlzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF90 eXBlX2FyY2ggKGVsdF90eXBlKTsKLSsJaW50IHVuaXRfc2l6ZSA9IGdkYmFyY2hfYWRkcmVzc2Fi bGVfbWVtb3J5X3VuaXRfc2l6ZSAoYXJjaCk7Ci0rCW1fc3RyaWRlIC89ICh1bml0X3NpemUgKiA4 KTsKLSsgICAgICB9Ci0rICB9OwotKwotKyAgLyogR2V0IHRoZSBieXRlIG9mZnNldCBmb3IgZWxl bWVudCBJTkRFWCB3aXRoaW4gdGhlIHR5cGUgd2UgYXJlIHdvcmtpbmcKLSsgICAgIG9uLiAgVGhl cmUgaXMgbm8gYm91bmRzIGNoZWNraW5nIGRvbmUgb24gSU5ERVguICBJZiB0aGUgc3RyaWRlIGlz Ci0rICAgICBuZWdhdGl2ZSB0aGVuIHdlIHN0aWxsIGFzc3VtZSB0aGF0IHRoZSBiYXNlIGFkZHJl c3MgKGZvciB0aGUgYXJyYXkKLSsgICAgIG9iamVjdCkgcG9pbnRzIHRvIHRoZSBlbGVtZW50IHdp dGggdGhlIGxvd2VzdCBtZW1vcnkgYWRkcmVzcywgd2UgdGhlbgotKyAgICAgY2FsY3VsYXRlIGFu IG9mZnNldCBhc3N1bWluZyB0aGF0IGluZGV4IDAgd2lsbCBiZSB0aGUgZWxlbWVudCBhdCB0aGUK LSsgICAgIGhpZ2hlc3QgYWRkcmVzcywgaW5kZXggMSB0aGUgbmV4dCBoaWdoZXN0LCBhbmQgc28g b24uICBUaGlzIGlzIG5vdAotKyAgICAgcXVpdGUgaG93IEZvcnRyYW4gd29ya3MgaW4gcmVhbGl0 eTsgaW4gcmVhbGl0eSB0aGUgYmFzZSBhZGRyZXNzIG9mCi0rICAgICB0aGUgb2JqZWN0IHdvdWxk IHBvaW50IGF0IHRoZSBlbGVtZW50IHdpdGggdGhlIGhpZ2hlc3QgYWRkcmVzcywgYW5kCi0rICAg ICB3ZSB3b3VsZCBpbmRleCBiYWNrd2FyZHMgZnJvbSB0aGVyZSBpbiB0aGUgIm5vcm1hbCIgd2F5 LCBob3dldmVyLAotKyAgICAgR0RCJ3MgY3VycmVudCB2YWx1ZSBjb250ZW50cyBtb2RlbCBkb2Vz bid0IHN1cHBvcnQgaGF2aW5nIHRoZSBiYXNlCi0rICAgICBhZGRyZXNzIGJlIG5lYXIgdG8gdGhl IGVuZCBvZiB0aGUgdmFsdWUgY29udGVudHMsIHNvIHdlIGN1cnJlbnRseQotKyAgICAgYWRqdXN0 IHRoZSBiYXNlIGFkZHJlc3Mgb2YgRm9ydHJhbiBhcnJheXMgd2l0aCBuZWdhdGl2ZSBzdHJpZGVz IHNvCi0rICAgICB0aGVpciBiYXNlIGFkZHJlc3MgcG9pbnRzIGF0IHRoZSBsb3dlc3QgbWVtb3J5 IGFkZHJlc3MuICBUaGlzIGNvZGUKLSsgICAgIGhlcmUgaXMgcGFydCBvZiB3b3JraW5nIGFyb3Vu ZCB0aGlzIHdlaXJkbmVzcy4gICovCi0rICBMT05HRVNUIGluZGV4X29mZnNldCAoTE9OR0VTVCBp bmRleCkKLSsgIHsKLSsgICAgTE9OR0VTVCBvZmZzZXQ7Ci0rICAgIGlmIChtX3N0cmlkZSA8IDAp Ci0rICAgICAgb2Zmc2V0ID0gc3RkOjphYnMgKG1fc3RyaWRlKSAqIChtX3VwcGVyYm91bmQgLSBp bmRleCk7Ci0rICAgIGVsc2UKLSsgICAgICBvZmZzZXQgPSBzdGQ6OmFicyAobV9zdHJpZGUpICog KGluZGV4IC0gbV9sb3dlcmJvdW5kKTsKLSsgICAgcmV0dXJuIG9mZnNldDsKLSsgIH0KLSsKLStw cml2YXRlOgotKwotKyAgLyogVGhlIHN0cmlkZSBmb3IgdGhlIHR5cGUgd2UgYXJlIHdvcmtpbmcg d2l0aC4gICovCi0rICBMT05HRVNUIG1fc3RyaWRlOwotKwotKyAgLyogVGhlIHVwcGVyIGJvdW5k IGZvciB0aGUgdHlwZSB3ZSBhcmUgd29ya2luZyB3aXRoLiAgKi8KLSsgIExPTkdFU1QgbV91cHBl cmJvdW5kOwotKwotKyAgLyogVGhlIGxvd2VyIGJvdW5kIGZvciB0aGUgdHlwZSB3ZSBhcmUgd29y a2luZyB3aXRoLiAgKi8KLSsgIExPTkdFU1QgbV9sb3dlcmJvdW5kOwotK307Ci0rCi0rLyogQSBi YXNlIGNsYXNzIHVzZWQgYnkgZm9ydHJhbl9hcnJheV93YWxrZXIuICBUaGVyZSdzIG5vIHZpcnR1 YWwgbWV0aG9kcwotKyAgIGhlcmUsIHN1Yi1jbGFzc2VzIHNob3VsZCBqdXN0IG92ZXJyaWRlIHRo ZSBmdW5jdGlvbnMgdGhleSB3YW50IGluIG9yZGVyCi0rICAgdG8gc3BlY2lhbGlzZSB0aGUgYmVo YXZpb3VyIHRvIHRoZWlyIG5lZWRzLiAgVGhlIGZ1bmN0aW9uYWxpdHkKLSsgICBwcm92aWRlZCBp biB0aGVzZSBkZWZhdWx0IGltcGxlbWVudGF0aW9ucyB3aWxsIHZpc2l0IGV2ZXJ5IGFycmF5Ci0r ICAgZWxlbWVudCwgYnV0IGRvIG5vdGhpbmcgZm9yIGVhY2ggZWxlbWVudC4gICovCi0rCi0rc3Ry dWN0IGZvcnRyYW5fYXJyYXlfd2Fsa2VyX2Jhc2VfaW1wbAotK3sKLSsgIC8qIENhbGxlZCB3aGVu IGl0ZXJhdGluZyBiZXR3ZWVuIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIGVhY2gKLSsg ICAgIGRpbWVuc2lvbiBvZiB0aGUgYXJyYXkuICBSZXR1cm4gdHJ1ZSBpZiBHREIgc2hvdWxkIGNv bnRpbnVlIGl0ZXJhdGluZywKLSsgICAgIG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLgotKwotKyAg ICAgU0hPVUxEX0NPTlRJTlVFIGluZGljYXRlcyBpZiBHREIgaXMgZ29pbmcgdG8gc3RvcCBhbnl3 YXksIGFuZCBzaG91bGQKLSsgICAgIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGRl Y2lkaW5nIHdoYXQgdG8gcmV0dXJuLiAgSWYKLSsgICAgIFNIT1VMRF9DT05USU5VRSBpcyBmYWxz ZSB0aGVuIHRoaXMgZnVuY3Rpb24gbXVzdCBhbHNvIHJldHVybiBmYWxzZSwKLSsgICAgIHRoZSBm dW5jdGlvbiBpcyBzdGlsbCBjYWxsZWQgdGhvdWdoIGluIGNhc2UgZXh0cmEgd29yayBuZWVkcyB0 byBiZQotKyAgICAgZG9uZSBhcyBwYXJ0IG9mIHRoZSBzdG9wcGluZyBwcm9jZXNzLiAgKi8KLSsg IGJvb2wgY29udGludWVfd2Fsa2luZyAoYm9vbCBzaG91bGRfY29udGludWUpCi0rICB7IHJldHVy biBzaG91bGRfY29udGludWU7IH0KLSsKLSsgIC8qIENhbGxlZCB3aGVuIEdEQiBzdGFydHMgaXRl cmF0aW5nIG92ZXIgYSBkaW1lbnNpb24gb2YgdGhlIGFycmF5LiAgVGhlCi0rICAgICBhcmd1bWVu dCBJTk5FUl9QIGlzIHRydWUgZm9yIHRoZSBpbm5lciBtb3N0IGRpbWVuc2lvbiAodGhlIGRpbWVu c2lvbgotKyAgICAgY29udGFpbmluZyB0aGUgYWN0dWFsIGVsZW1lbnRzIG9mIHRoZSBhcnJheSks IGFuZCBmYWxzZSBmb3IgbW9yZSBvdXRlcgotKyAgICAgZGltZW5zaW9ucy4gIEZvciBhIGNvbmNy ZXRlIGV4YW1wbGUgb2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCi0rICAgICBzZWUgdGhl IGNvbW1lbnQgb24gcHJvY2Vzc19lbGVtZW50IGJlbG93LiAgKi8KLSsgIHZvaWQgc3RhcnRfZGlt ZW5zaW9uIChib29sIGlubmVyX3ApCi0rICB7IC8qIE5vdGhpbmcuICAqLyB9Ci0rCi0rICAvKiBD YWxsZWQgd2hlbiBHREIgZmluaXNoZXMgaXRlcmF0aW5nIG92ZXIgYSBkaW1lbnNpb24gb2YgdGhl IGFycmF5LiAgVGhlCi0rICAgICBhcmd1bWVudCBJTk5FUl9QIGlzIHRydWUgZm9yIHRoZSBpbm5l ciBtb3N0IGRpbWVuc2lvbiAodGhlIGRpbWVuc2lvbgotKyAgICAgY29udGFpbmluZyB0aGUgYWN0 dWFsIGVsZW1lbnRzIG9mIHRoZSBhcnJheSksIGFuZCBmYWxzZSBmb3IgbW9yZSBvdXRlcgotKyAg ICAgZGltZW5zaW9ucy4gIExBU1RfUCBpcyB0cnVlIGZvciB0aGUgbGFzdCBjYWxsIGF0IGEgcGFy dGljdWxhcgotKyAgICAgZGltZW5zaW9uLiAgRm9yIGEgY29uY3JldGUgZXhhbXBsZSBvZiBob3cg dGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQKLSsgICAgIHNlZSB0aGUgY29tbWVudCBvbiBwcm9jZXNz X2VsZW1lbnQgYmVsb3cuICAqLwotKyAgdm9pZCBmaW5pc2hfZGltZW5zaW9uIChib29sIGlubmVy X3AsIGJvb2wgbGFzdF9wKQotKyAgeyAvKiBOb3RoaW5nLiAgKi8gfQotKwotKyAgLyogQ2FsbGVk IHdoZW4gcHJvY2Vzc2luZyB0aGUgaW5uZXIgbW9zdCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LCBm b3IKLSsgICAgIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIGFycmF5LiAgRUxUX1RZUEUgaXMgdGhlIHR5 cGUgb2YgdGhlIGVsZW1lbnQgYmVpbmcKLSsgICAgIGV4dHJhY3RlZCwgYW5kIEVMVF9PRkYgaXMg dGhlIG9mZnNldCBvZiB0aGUgZWxlbWVudCBmcm9tIHRoZSBzdGFydCBvZgotKyAgICAgYXJyYXkg YmVpbmcgd2Fsa2VkLCBhbmQgTEFTVF9QIGlzIHRydWUgb25seSB3aGVuIHRoaXMgaXMgdGhlIGxh c3QKLSsgICAgIGVsZW1lbnQgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCBpbiB0aGlzIGRpbWVuc2lv bi4KLSsKLSsgICAgIEdpdmVuIHRoaXMgdHdvIGRpbWVuc2lvbmFsIGFycmF5ICgoMSwgMikgKDMs IDQpKSwgdGhlIGNhbGxzIHRvCi0rICAgICBzdGFydF9kaW1lbnNpb24sIHByb2Nlc3NfZWxlbWVu dCwgYW5kIGZpbmlzaF9kaW1lbnNpb24gbG9vayBsaWtlIHRoaXM6Ci0rCi0rICAgICBzdGFydF9k aW1lbnNpb24gKGZhbHNlKTsKLSsgICAgICAgc3RhcnRfZGltZW5zaW9uICh0cnVlKTsKLSsgICAg ICAgICBwcm9jZXNzX2VsZW1lbnQgKFRZUEUsIE9GRlNFVCwgZmFsc2UpOwotKyAgICAgICAgIHBy b2Nlc3NfZWxlbWVudCAoVFlQRSwgT0ZGU0VULCB0cnVlKTsKLSsgICAgICAgZmluaXNoX2RpbWVu c2lvbiAodHJ1ZSwgZmFsc2UpOwotKyAgICAgICBzdGFydF9kaW1lbnNpb24gKHRydWUpOwotKyAg ICAgICAgIHByb2Nlc3NfZWxlbWVudCAoVFlQRSwgT0ZGU0VULCBmYWxzZSk7Ci0rICAgICAgICAg cHJvY2Vzc19lbGVtZW50IChUWVBFLCBPRkZTRVQsIHRydWUpOwotKyAgICAgICBmaW5pc2hfZGlt ZW5zaW9uICh0cnVlLCB0cnVlKTsKLSsgICAgIGZpbmlzaF9kaW1lbnNpb24gKGZhbHNlLCB0cnVl KTsgICovCi0rICB2b2lkIHByb2Nlc3NfZWxlbWVudCAoc3RydWN0IHR5cGUgKmVsdF90eXBlLCBM T05HRVNUIGVsdF9vZmYsIGJvb2wgbGFzdF9wKQotKyAgeyAvKiBOb3RoaW5nLiAgKi8gfQotK307 Ci0rCi0rLyogQSBjbGFzcyB0byB3cmFwIHVwIHRoZSBwcm9jZXNzIG9mIGl0ZXJhdGluZyBvdmVy IGEgbXVsdGktZGltZW5zaW9uYWwKLSsgICBGb3J0cmFuIGFycmF5LiAgSU1QTCBpcyB1c2VkIHRv IHNwZWNpYWxpc2Ugd2hhdCBoYXBwZW5zIGFzIHdlIHdhbGsgb3ZlcgotKyAgIHRoZSBhcnJheS4g IFNlZSBjbGFzcyBGT1JUUkFOX0FSUkFZX1dBTEtFUl9CQVNFX0lNUEwgKGFib3ZlKSBmb3IgdGhl Ci0rICAgbWV0aG9kcyB0aGFuIGNhbiBiZSB1c2VkIHRvIGN1c3RvbWlzZSB0aGUgYXJyYXkgd2Fs ay4gICovCi0rdGVtcGxhdGU8dHlwZW5hbWUgSW1wbD4KLStjbGFzcyBmb3J0cmFuX2FycmF5X3dh bGtlcgotK3sKLSsgIC8qIEVuc3VyZSB0aGF0IEltcGwgaXMgZGVyaXZlZCBmcm9tIHRoZSByZXF1 aXJlZCBiYXNlIGNsYXNzLiAgVGhpcyBqdXN0Ci0rICAgICBlbnN1cmVzIHRoYXQgYWxsIG9mIHRo ZSByZXF1aXJlZCBBUEkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGFuZCBoYXZlIGEKLSsgICAgIHNl bnNpYmxlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24uICAqLwotKyAgZ2RiX3N0YXRpY19hc3NlcnQg KChzdGQ6OmlzX2Jhc2Vfb2Y8Zm9ydHJhbl9hcnJheV93YWxrZXJfYmFzZV9pbXBsLEltcGw+Ojp2 YWx1ZSkpOwotKwotK3B1YmxpYzoKLSsgIC8qIENyZWF0ZSBhIG5ldyBhcnJheSB3YWxrZXIuICBU WVBFIGlzIHRoZSB0eXBlIG9mIHRoZSBhcnJheSBiZWluZyB3YWxrZWQKLSsgICAgIG92ZXIsIGFu ZCBBRERSRVNTIGlzIHRoZSBiYXNlIGFkZHJlc3MgZm9yIHRoZSBvYmplY3Qgb2YgVFlQRSBpbgot KyAgICAgbWVtb3J5LiAgQWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBj b25zdHJ1Y3RvciBvZiB0aGUKLSsgICAgIHRlbXBsYXRlIHBhcmFtZXRlciBjbGFzcyBJTVBMLiAg Ki8KLSsgIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5BcmdzPgotKyAgZm9ydHJhbl9hcnJheV93YWxr ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcmVzcywKLSsJCQlBcmdzLi4uIGFy Z3MpCi0rICAgIDogbV90eXBlICh0eXBlKSwKLSsgICAgICBtX2FkZHJlc3MgKGFkZHJlc3MpLAot KyAgICAgIG1faW1wbCAodHlwZSwgYWRkcmVzcywgYXJncy4uLikKLSsgIHsKLSsgICAgbV9uZGlt ZW5zaW9ucyA9ICBjYWxjX2Y3N19hcnJheV9kaW1zIChtX3R5cGUpOwotKyAgfQotKwotKyAgLyog V2FsayB0aGUgYXJyYXkuICAqLwotKyAgdm9pZAotKyAgd2FsayAoKQotKyAgewotKyAgICB3YWxr XzEgKDEsIG1fdHlwZSwgMCwgZmFsc2UpOwotKyAgfQotKwotK3ByaXZhdGU6Ci0rICAvKiBUaGUg Y29yZSBvZiB0aGUgYXJyYXkgd2Fsa2luZyBhbGdvcml0aG0uICBOU1MgaXMgdGhlIGN1cnJlbnQK LSsgICAgIGRpbWVuc2lvbiBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLCBUWVBFIGlzIHRoZSB0eXBl IG9mIHRoaXMgZGltZW5zaW9uLAotKyAgICAgYW5kIE9GRlNFVCBpcyB0aGUgb2Zmc2V0IChpbiBi eXRlcykgZm9yIHRoZSBzdGFydCBvZiB0aGlzIGRpbWVuc2lvbi4gICovCi0rICB2b2lkCi0rICB3 YWxrXzEgKGludCBuc3MsIHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgb2Zmc2V0LCBib29sIGxhc3Rf cCkKLSsgIHsKLSsgICAgLyogRXh0cmFjdCB0aGUgcmFuZ2UsIGFuZCBnZXQgbG93ZXIgYW5kIHVw cGVyIGJvdW5kcy4gICovCi0rICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gY2hlY2tfdHlw ZWRlZiAodHlwZSktPmluZGV4X3R5cGUgKCk7Ci0rICAgIExPTkdFU1QgbG93ZXJib3VuZCwgdXBw ZXJib3VuZDsKLSsgICAgaWYgKCFnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93 ZXJib3VuZCwgJnVwcGVyYm91bmQpKQotKyAgICAgIGVycm9yICgiZmFpbGVkIHRvIGdldCByYW5n ZSBib3VuZHMiKTsKLSsKLSsgICAgLyogQ0FMQyBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgb2Zm c2V0cyBmb3IgZWFjaCBlbGVtZW50IGluIHRoaXMKLSsgICAgICAgZGltZW5zaW9uLiAgKi8KLSsg ICAgZm9ydHJhbl9hcnJheV9vZmZzZXRfY2FsY3VsYXRvciBjYWxjICh0eXBlKTsKLSsKLSsgICAg bV9pbXBsLnN0YXJ0X2RpbWVuc2lvbiAobnNzID09IG1fbmRpbWVuc2lvbnMpOwotKwotKyAgICBp ZiAobnNzICE9IG1fbmRpbWVuc2lvbnMpCi0rICAgICAgewotKwkvKiBGb3IgZGltZW5zaW9ucyBv dGhlciB0aGFuIHRoZSBpbm5lciBtb3N0LCB3YWxrIGVhY2ggZWxlbWVudCBhbmQKLSsJICAgcmVj dXJzZSB3aGlsZSBwZWVsaW5nIG9mZiBvbmUgbW9yZSBkaW1lbnNpb24gb2YgdGhlIGFycmF5LiAg Ki8KLSsJZm9yIChMT05HRVNUIGkgPSBsb3dlcmJvdW5kOwotKwkgICAgIG1faW1wbC5jb250aW51 ZV93YWxraW5nIChpIDwgdXBwZXJib3VuZCArIDEpOwotKwkgICAgIGkrKykKLSsJICB7Ci0rCSAg ICAvKiBVc2UgdGhlIGluZGV4IGFuZCB0aGUgc3RyaWRlIHRvIHdvcmsgb3V0IGEgbmV3IG9mZnNl dC4gICovCi0rCSAgICBMT05HRVNUIG5ld19vZmZzZXQgPSBvZmZzZXQgKyBjYWxjLmluZGV4X29m ZnNldCAoaSk7Ci0rCi0rCSAgICAvKiBOb3cgcHJpbnQgdGhlIGxvd2VyIGRpbWVuc2lvbi4gICov Ci0rCSAgICBzdHJ1Y3QgdHlwZSAqc3ViYXJyYXlfdHlwZQotKwkgICAgICA9IFRZUEVfVEFSR0VU X1RZUEUgKGNoZWNrX3R5cGVkZWYgKHR5cGUpKTsKLSsJICAgIHdhbGtfMSAobnNzICsgMSwgc3Vi YXJyYXlfdHlwZSwgbmV3X29mZnNldCwgKGkgPT0gdXBwZXJib3VuZCkpOwotKwkgIH0KLSsgICAg ICB9Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCS8qIEZvciB0aGUgaW5uZXIgbW9zdCBkaW1lbnNp b24gb2YgdGhlIGFycmF5LCBwcm9jZXNzIGVhY2ggZWxlbWVudAotKwkgICB3aXRoaW4gdGhpcyBk aW1lbnNpb24uICAqLwotKwlmb3IgKExPTkdFU1QgaSA9IGxvd2VyYm91bmQ7Ci0rCSAgICAgbV9p bXBsLmNvbnRpbnVlX3dhbGtpbmcgKGkgPCB1cHBlcmJvdW5kICsgMSk7Ci0rCSAgICAgaSsrKQot KwkgIHsKLSsJICAgIExPTkdFU1QgZWx0X29mZiA9IG9mZnNldCArIGNhbGMuaW5kZXhfb2Zmc2V0 IChpKTsKLSsKLSsJICAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSsJICAgIGlmIChpc19keW5hbWljX3R5cGUgKGVsdF90 eXBlKSkKLSsJICAgICAgewotKwkJQ09SRV9BRERSIGVfYWRkcmVzcyA9IG1fYWRkcmVzcyArIGVs dF9vZmY7Ci0rCQllbHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY190eXBlIChlbHRfdHlwZSwge30s IGVfYWRkcmVzcyk7Ci0rCSAgICAgIH0KLSsKLSsJICAgIG1faW1wbC5wcm9jZXNzX2VsZW1lbnQg KGVsdF90eXBlLCBlbHRfb2ZmLCAoaSA9PSB1cHBlcmJvdW5kKSk7Ci0rCSAgfQotKyAgICAgIH0K LSsKLSsgICAgbV9pbXBsLmZpbmlzaF9kaW1lbnNpb24gKG5zcyA9PSBtX25kaW1lbnNpb25zLCBs YXN0X3AgfHwgbnNzID09IDEpOwotKyAgfQotKwotKyAgLyogVGhlIGFycmF5IHR5cGUgYmVpbmcg cHJvY2Vzc2VkLiAgKi8KLSsgIHN0cnVjdCB0eXBlICptX3R5cGU7Ci0rCi0rICAvKiBUaGUgYWRk cmVzcyBpbiB0YXJnZXQgbWVtb3J5IGZvciB0aGUgb2JqZWN0IG9mIE1fVFlQRSBiZWluZwotKyAg ICAgcHJvY2Vzc2VkLiAgVGhpcyBpcyByZXF1aXJlZCBpbiBvcmRlciB0byByZXNvbHZlIGR5bmFt aWMgdHlwZXMuICAqLwotKyAgQ09SRV9BRERSIG1fYWRkcmVzczsKLSsKLSsgIC8qIEFuIGluc3Rh bmNlIG9mIHRoZSB0ZW1wbGF0ZSBzcGVjaWFsaXNhdGlvbiBjbGFzcy4gICovCi0rICBJbXBsIG1f aW1wbDsKLSsKLSsgIC8qIFRoZSB0b3RhbCBudW1iZXIgb2YgZGltZW5zaW9ucyBpbiBNX1RZUEUu ICAqLwotKyAgaW50IG1fbmRpbWVuc2lvbnM7Ci0rfTsKLSsKLSsjZW5kaWYgLyogRl9BUlJBWV9X QUxLRVJfSCAqLwotZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYwotLS0t IGEvZ2RiL2YtbGFuZy5jCi0rKysgYi9nZGIvZi1sYW5nLmMKLUBAIC0zNiw5ICszNiwzNiBAQAot ICNpbmNsdWRlICJjLWxhbmcuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LWZsb2F0LmgiCi0gI2luY2x1 ZGUgImdkYmFyY2guaCIKLSsjaW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImYtYXJyYXkt d2Fsa2VyLmgiCi0gCi0gI2luY2x1ZGUgPG1hdGguaD4KLSAKLSsvKiBXaGV0aGVyIEdEQiBzaG91 bGQgcmVwYWNrIGFycmF5IHNsaWNlcyBjcmVhdGVkIGJ5IHRoZSB1c2VyLiAgKi8KLStzdGF0aWMg Ym9vbCByZXBhY2tfYXJyYXlfc2xpY2VzID0gZmFsc2U7Ci0rCi0rLyogSW1wbGVtZW50ICdzaG93 IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcycuICAqLwotK3N0YXRpYyB2b2lkCi0rc2hvd19y ZXBhY2tfYXJyYXlfc2xpY2VzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAot KwkJCSAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sK LSsgIGZwcmludGZfZmlsdGVyZWQgKGZpbGUsIF8oIlJlcGFja2luZyBvZiBGb3J0cmFuIGFycmF5 IHNsaWNlcyBpcyAlcy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVidWdnaW5n IG9mIEZvcnRyYW4ncyBhcnJheSBzbGljaW5nLiAgKi8KLStzdGF0aWMgYm9vbCBmb3J0cmFuX2Fy cmF5X3NsaWNpbmdfZGVidWcgPSBmYWxzZTsKLSsKLSsvKiBJbXBsZW1lbnQgJ3Nob3cgZGVidWcg Zm9ydHJhbi1hcnJheS1zbGljaW5nJy4gICovCi0rc3RhdGljIHZvaWQKLStzaG93X2ZvcnRyYW5f YXJyYXlfc2xpY2luZ19kZWJ1ZyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwK LSsJCQkJICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYywKLSsJCQkJICBjb25zdCBjaGFyICp2 YWx1ZSkKLSt7Ci0rICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJEZWJ1Z2dpbmcgb2YgRm9y dHJhbiBhcnJheSBzbGljaW5nIGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSAv KiBMb2NhbCBmdW5jdGlvbnMgKi8KLSAKLSAvKiBSZXR1cm4gdGhlIGVuY29kaW5nIHRoYXQgc2hv dWxkIGJlIHVzZWQgZm9yIHRoZSBjaGFyYWN0ZXIgdHlwZQotQEAgLTExNCw1NyArMTQxLDYgQEAg ZW51bSBmX3ByaW1pdGl2ZV90eXBlcyB7Ci0gICBucl9mX3ByaW1pdGl2ZV90eXBlcwotIH07Ci0g Ci0tLyogQ2FsbGVkIGZyb20gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSB0byB0YWtlIGEgc2xpY2Ug b2YgYW4gYXJyYXkgb3IgYQotLSAgIHN0cmluZy4gIEFSUkFZIGlzIHRoZSBhcnJheSBvciBzdHJp bmcgdG8gYmUgYWNjZXNzZWQuICBFWFAsIFBPUywgYW5kCi0tICAgTk9TSURFIGFyZSBhcyBmb3Ig ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkLiAgUmV0dXJuIGEgdmFsdWUgdGhhdCBpcyBhCi0tICAg c2xpY2Ugb2YgdGhlIGFycmF5LiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IHZhbHVlICoKLS12YWx1 ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCi0tCQkgICAgc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKLS17Ci0tICBpbnQgcGMg PSAoKnBvcykgKyAxOwotLSAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQsIHN0cmlkZTsK LS0gIHN0cnVjdCB0eXBlICpyYW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5 KS0+aW5kZXhfdHlwZSAoKSk7Ci0tICBlbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZwotLSAgICA9 IChlbnVtIHJhbmdlX2ZsYWcpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25z dCk7Ci0tCi0tICAqcG9zICs9IDM7Ci0tCi0tICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0xPV19C T1VORF9ERUZBVUxUKQotLSAgICBsb3dfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5sb3cuY29u c3RfdmFsICgpOwotLSAgZWxzZQotLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFs dWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLS0KLS0gIGlmIChyYW5n ZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKQotLSAgICBoaWdoX2JvdW5kID0gcmFu Z2UtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0tICBlbHNlCi0tICAgIGhpZ2hfYm91 bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBu b3NpZGUpKTsKLS0KLS0gIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSEFTX1NUUklERSkKLS0gICAg c3RyaWRlID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBv cywgbm9zaWRlKSk7Ci0tICBlbHNlCi0tICAgIHN0cmlkZSA9IDE7Ci0tCi0tICBpZiAoc3RyaWRl ICE9IDEpCi0tICAgIGVycm9yIChfKCJGb3J0cmFuIGFycmF5IHN0cmlkZXMgYXJlIG5vdCBjdXJy ZW50bHkgc3VwcG9ydGVkIikpOwotLQotLSAgcmV0dXJuIHZhbHVlX3NsaWNlIChhcnJheSwgbG93 X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0tfQotLQotLS8qIEhlbHBlciBm b3Igc2tpcHBpbmcgYWxsIHRoZSBhcmd1bWVudHMgaW4gYW4gdW5kZXRlcm1pbmVkIGFyZ3VtZW50 IGxpc3QuCi0tICAgVGhpcyBmdW5jdGlvbiB3YXMgZGVzaWduZWQgZm9yIHVzZSBpbiB0aGUgT1Bf Rjc3X1VOREVURVJNSU5FRF9BUkdMSVNUCi0tICAgY2FzZSBvZiBldmFsdWF0ZV9zdWJleHBfc3Rh bmRhcmQgYXMgbXVsdGlwbGUsIGJ1dCBub3QgYWxsLCBjb2RlIHBhdGhzCi0tICAgcmVxdWlyZSBh IGdlbmVyaWMgc2tpcC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1za2lwX3VuZGV0ZXJtaW5lZF9h cmdsaXN0IChpbnQgbmFyZ3MsIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAotLQkJ CSAgIGVudW0gbm9zaWRlIG5vc2lkZSkKLS17Ci0tICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdz OyArK2kpCi0tICAgIGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7 Ci0tfQotLQotIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgZm9yIGEgRm9ydHJh biBhcnJheSBvciBzdHJpbmcuICAqLwotIAotIGludAotQEAgLTE4OSw2ICsxNjUsMTQ1IEBAIGNh bGNfZjc3X2FycmF5X2RpbXMgKHN0cnVjdCB0eXBlICphcnJheV90eXBlKQotICAgcmV0dXJuIG5k aW1lbjsKLSB9Ci0gCi0rLyogQSBjbGFzcyB1c2VkIGJ5IEZPUlRSQU5fVkFMVUVfU1VCQVJSQVkg d2hlbiByZXBhY2tpbmcgRm9ydHJhbiBhcnJheQotKyAgIHNsaWNlcy4gIFRoaXMgaXMgYSBiYXNl IGNsYXNzIGZvciB0d28gYWx0ZXJuYXRpdmUgcmVwYWNraW5nIG1lY2hhbmlzbXMsCi0rICAgb25l IGZvciB3aGVuIHJlcGFja2luZyBmcm9tIGEgbGF6eSB2YWx1ZSwgYW5kIG9uZSBmb3IgcmVwYWNr aW5nIGZyb20gYQotKyAgIG5vbi1sYXp5IChhbHJlYWR5IGxvYWRlZCkgdmFsdWUuICAqLwotK2Ns YXNzIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfYmFzZV9pbXBsCi0rICA6IHB1YmxpYyBmb3J0cmFu X2FycmF5X3dhbGtlcl9iYXNlX2ltcGwKLSt7Ci0rcHVibGljOgotKyAgLyogQ29uc3RydWN0b3Is IERFU1QgaXMgdGhlIHZhbHVlIHdlIGFyZSByZXBhY2tpbmcgaW50by4gICovCi0rICBmb3J0cmFu X2FycmF5X3JlcGFja2VyX2Jhc2VfaW1wbCAoc3RydWN0IHZhbHVlICpkZXN0KQotKyAgICA6IG1f ZGVzdCAoZGVzdCksCi0rICAgICAgbV9kZXN0X29mZnNldCAoMCkKLSsgIHsgLyogTm90aGluZy4g ICovIH0KLSsKLSsgIC8qIFdoZW4gd2Ugc3RhcnQgcHJvY2Vzc2luZyB0aGUgaW5uZXIgbW9zdCBk aW1lbnNpb24sIHRoaXMgaXMgd2hlcmUgd2UKLSsgICAgIHdpbGwgYmUgY3JlYXRpbmcgdmFsdWVz IGZvciBlYWNoIGVsZW1lbnQgYXMgd2UgbG9hZCB0aGVtIGFuZCB0aGVuIGNvcHkKLSsgICAgIHRo ZW0gaW50byB0aGUgTV9ERVNUIHZhbHVlLiAgU2V0IGEgdmFsdWUgbWFyayBzbyB3ZSBjYW4gZnJl ZSB0aGVzZQotKyAgICAgdGVtcG9yYXJ5IHZhbHVlcy4gICovCi0rICB2b2lkIHN0YXJ0X2RpbWVu c2lvbiAoYm9vbCBpbm5lcl9wKQotKyAgewotKyAgICBpZiAoaW5uZXJfcCkKLSsgICAgICB7Ci0r CWdkYl9hc3NlcnQgKG1fbWFyayA9PSBudWxscHRyKTsKLSsJbV9tYXJrID0gdmFsdWVfbWFyayAo KTsKLSsgICAgICB9Ci0rICB9Ci0rCi0rICAvKiBXaGVuIHdlIGZpbmlzaCBwcm9jZXNzaW5nIHRo ZSBpbm5lciBtb3N0IGRpbWVuc2lvbiBmcmVlIGFsbCB0ZW1wb3JhcnkKLSsgICAgIHZhbHVlIHRo YXQgd2VyZSBjcmVhdGVkLiAgKi8KLSsgIHZvaWQgZmluaXNoX2RpbWVuc2lvbiAoYm9vbCBpbm5l cl9wLCBib29sIGxhc3RfcCkKLSsgIHsKLSsgICAgaWYgKGlubmVyX3ApCi0rICAgICAgewotKwln ZGJfYXNzZXJ0IChtX21hcmsgIT0gbnVsbHB0cik7Ci0rCXZhbHVlX2ZyZWVfdG9fbWFyayAobV9t YXJrKTsKLSsJbV9tYXJrID0gbnVsbHB0cjsKLSsgICAgICB9Ci0rICB9Ci0rCi0rcHJvdGVjdGVk OgotKyAgLyogQ29weSB0aGUgY29udGVudHMgb2YgYXJyYXkgZWxlbWVudCBFTFQgaW50byBNX0RF U1QgYXQgdGhlIG5leHQKLSsgICAgIGF2YWlsYWJsZSBvZmZzZXQuICAqLwotKyAgdm9pZCBjb3B5 X2VsZW1lbnRfdG9fZGVzdCAoc3RydWN0IHZhbHVlICplbHQpCi0rICB7Ci0rICAgIHZhbHVlX2Nv bnRlbnRzX2NvcHkgKG1fZGVzdCwgbV9kZXN0X29mZnNldCwgZWx0LCAwLAotKwkJCSBUWVBFX0xF TkdUSCAodmFsdWVfdHlwZSAoZWx0KSkpOwotKyAgICBtX2Rlc3Rfb2Zmc2V0ICs9IFRZUEVfTEVO R1RIICh2YWx1ZV90eXBlIChlbHQpKTsKLSsgIH0KLSsKLSsgIC8qIFRoZSB2YWx1ZSBiZWluZyB3 cml0dGVuIHRvLiAgKi8KLSsgIHN0cnVjdCB2YWx1ZSAqbV9kZXN0OwotKwotKyAgLyogVGhlIGJ5 dGUgb2Zmc2V0IGluIE1fREVTVCBhdCB3aGljaCB0aGUgbmV4dCBlbGVtZW50IHNob3VsZCBiZQot KyAgICAgd3JpdHRlbi4gICovCi0rICBMT05HRVNUIG1fZGVzdF9vZmZzZXQ7Ci0rCi0rICAvKiBT ZXQgd2l0aCBhIGNhbGwgdG8gVkFMVUVfTUFSSywgYW5kIHRoZW4gcmVzZXQgYWZ0ZXIgY2FsbGlu ZwotKyAgICAgVkFMVUVfRlJFRV9UT19NQVJLLiAgKi8KLSsgIHN0cnVjdCB2YWx1ZSAqbV9tYXJr ID0gbnVsbHB0cjsKLSt9OwotKwotKy8qIEEgY2xhc3MgdXNlZCBieSBGT1JUUkFOX1ZBTFVFX1NV QkFSUkFZIHdoZW4gcmVwYWNraW5nIEZvcnRyYW4gYXJyYXkKLSsgICBzbGljZXMuICBUaGlzIGNs YXNzIGlzIHNwZWNpYWxpc2VkIGZvciByZXBhY2tpbmcgYW4gYXJyYXkgc2xpY2UgZnJvbSBhCi0r ICAgbGF6eSBhcnJheSB2YWx1ZSwgYXMgc3VjaCBpdCBkb2VzIG5vdCByZXF1aXJlIHRoZSBwYXJl bnQgYXJyYXkgdmFsdWUgdG8KLSsgICBiZSBsb2FkZWQgaW50byBHREIncyBtZW1vcnk7IHRoZSBw YXJlbnQgdmFsdWUgY291bGQgYmUgaHVnZSwgd2hpbGUgdGhlCi0rICAgc2xpY2UgY291bGQgYmUg dGlueS4gICovCi0rY2xhc3MgZm9ydHJhbl9sYXp5X2FycmF5X3JlcGFja2VyX2ltcGwKLSsgIDog cHVibGljIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfYmFzZV9pbXBsCi0rewotK3B1YmxpYzoKLSsg IC8qIENvbnN0cnVjdG9yLiAgVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgc2xpY2UgYmVpbmcgbG9h ZGVkIGZyb20gdGhlCi0rICAgICBwYXJlbnQgdmFsdWUsIHNvIHRoaXMgdHlwZSB3aWxsIGNvcnJl Y3RseSByZWZsZWN0IHRoZSBzdHJpZGVzIHJlcXVpcmVkCi0rICAgICB0byBmaW5kIGFsbCBvZiB0 aGUgZWxlbWVudHMgZnJvbSB0aGUgcGFyZW50IHZhbHVlLiAgQUREUkVTUyBpcyB0aGUKLSsgICAg IGFkZHJlc3MgaW4gdGFyZ2V0IG1lbW9yeSBvZiB2YWx1ZSBtYXRjaGluZyBUWVBFLCBhbmQgREVT VCBpcyB0aGUgdmFsdWUKLSsgICAgIHdlIGFyZSByZXBhY2tpbmcgaW50by4gICovCi0rICBleHBs aWNpdCBmb3J0cmFuX2xhenlfYXJyYXlfcmVwYWNrZXJfaW1wbCAoc3RydWN0IHR5cGUgKnR5cGUs Ci0rCQkJCQkgICAgIENPUkVfQUREUiBhZGRyZXNzLAotKwkJCQkJICAgICBzdHJ1Y3QgdmFsdWUg KmRlc3QpCi0rICAgIDogZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9iYXNlX2ltcGwgKGRlc3QpLAot KyAgICAgIG1fYWRkciAoYWRkcmVzcykKLSsgIHsgLyogTm90aGluZy4gICovIH0KLSsKLSsgIC8q IENyZWF0ZSBhIGxhenkgdmFsdWUgaW4gdGFyZ2V0IG1lbW9yeSByZXByZXNlbnRpbmcgYSBzaW5n bGUgZWxlbWVudCwKLSsgICAgIHRoZW4gbG9hZCB0aGUgZWxlbWVudCBpbnRvIEdEQidzIG1lbW9y eSBhbmQgY29weSB0aGUgY29udGVudHMgaW50byB0aGUKLSsgICAgIGRlc3RpbmF0aW9uIHZhbHVl LiAgKi8KLSsgIHZvaWQgcHJvY2Vzc19lbGVtZW50IChzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUsIExP TkdFU1QgZWx0X29mZiwgYm9vbCBsYXN0X3ApCi0rICB7Ci0rICAgIGNvcHlfZWxlbWVudF90b19k ZXN0ICh2YWx1ZV9hdF9sYXp5IChlbHRfdHlwZSwgbV9hZGRyICsgZWx0X29mZikpOwotKyAgfQot KwotK3ByaXZhdGU6Ci0rICAvKiBUaGUgYWRkcmVzcyBpbiB0YXJnZXQgbWVtb3J5IHdoZXJlIHRo ZSBwYXJlbnQgdmFsdWUgc3RhcnRzLiAgKi8KLSsgIENPUkVfQUREUiBtX2FkZHI7Ci0rfTsKLSsK LSsvKiBBIGNsYXNzIHVzZWQgYnkgRk9SVFJBTl9WQUxVRV9TVUJBUlJBWSB3aGVuIHJlcGFja2lu ZyBGb3J0cmFuIGFycmF5Ci0rICAgc2xpY2VzLiAgVGhpcyBjbGFzcyBpcyBzcGVjaWFsaXNlZCBm b3IgcmVwYWNraW5nIGFuIGFycmF5IHNsaWNlIGZyb20gYQotKyAgIHByZXZpb3VzbHkgbG9hZGVk IChub24tbGF6eSkgYXJyYXkgdmFsdWUsIGFzIHN1Y2ggaXQgZmV0Y2hlcyB0aGUKLSsgICBlbGVt ZW50IHZhbHVlcyBmcm9tIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IHZhbHVlLiAgKi8KLStj bGFzcyBmb3J0cmFuX2FycmF5X3JlcGFja2VyX2ltcGwKLSsgIDogcHVibGljIGZvcnRyYW5fYXJy YXlfcmVwYWNrZXJfYmFzZV9pbXBsCi0rewotK3B1YmxpYzoKLSsgIC8qIENvbnN0cnVjdG9yLiAg VFlQRSBpcyB0aGUgdHlwZSBmb3IgdGhlIGFycmF5IHNsaWNlIHdpdGhpbiB0aGUgcGFyZW50Ci0r ICAgICB2YWx1ZSwgYXMgc3VjaCBpdCBoYXMgc3RyaWRlIHZhbHVlcyBhcyByZXF1aXJlZCB0byBm aW5kIHRoZSBlbGVtZW50cwotKyAgICAgd2l0aGluIHRoZSBvcmlnaW5hbCBwYXJlbnQgdmFsdWUu ICBBRERSRVNTIGlzIHRoZSBhZGRyZXNzIGluIHRhcmdldAotKyAgICAgbWVtb3J5IG9mIHRoZSB2 YWx1ZSBtYXRjaGluZyBUWVBFLiAgQkFTRV9PRkZTRVQgaXMgdGhlIG9mZnNldCBmcm9tCi0rICAg ICB0aGUgc3RhcnQgb2YgVkFMJ3MgY29udGVudCBidWZmZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBv YmplY3Qgb2YgVFlQRSwKLSsgICAgIFZBTCBpcyB0aGUgcGFyZW50IG9iamVjdCBmcm9tIHdoaWNo IHdlIGFyZSBsb2FkaW5nIHRoZSB2YWx1ZSwgYW5kCi0rICAgICBERVNUIGlzIHRoZSB2YWx1ZSBp bnRvIHdoaWNoIHdlIGFyZSByZXBhY2tpbmcuICAqLwotKyAgZXhwbGljaXQgZm9ydHJhbl9hcnJh eV9yZXBhY2tlcl9pbXBsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHJlc3MsCi0r CQkJCQlMT05HRVNUIGJhc2Vfb2Zmc2V0LAotKwkJCQkJc3RydWN0IHZhbHVlICp2YWwsIHN0cnVj dCB2YWx1ZSAqZGVzdCkKLSsgICAgOiBmb3J0cmFuX2FycmF5X3JlcGFja2VyX2Jhc2VfaW1wbCAo ZGVzdCksCi0rICAgICAgbV9iYXNlX29mZnNldCAoYmFzZV9vZmZzZXQpLAotKyAgICAgIG1fdmFs ICh2YWwpCi0rICB7Ci0rICAgIGdkYl9hc3NlcnQgKCF2YWx1ZV9sYXp5ICh2YWwpKTsKLSsgIH0K LSsKLSsgIC8qIEV4dHJhY3QgYW4gZWxlbWVudCBvZiBFTFRfVFlQRSBhdCBvZmZzZXQgKE1fQkFT RV9PRkZTRVQgKyBFTFRfT0ZGKQotKyAgICAgZnJvbSB0aGUgY29udGVudCBidWZmZXIgb2YgTV9W QUwgdGhlbiBjb3B5IHRoaXMgZXh0cmFjdGVkIHZhbHVlIGludG8KLSsgICAgIHRoZSByZXBhY2tl ZCBkZXN0aW5hdGlvbiB2YWx1ZS4gICovCi0rICB2b2lkIHByb2Nlc3NfZWxlbWVudCAoc3RydWN0 IHR5cGUgKmVsdF90eXBlLCBMT05HRVNUIGVsdF9vZmYsIGJvb2wgbGFzdF9wKQotKyAgewotKyAg ICBzdHJ1Y3QgdmFsdWUgKmVsdAotKyAgICAgID0gdmFsdWVfZnJvbV9jb21wb25lbnQgKG1fdmFs LCBlbHRfdHlwZSwgKGVsdF9vZmYgKyBtX2Jhc2Vfb2Zmc2V0KSk7Ci0rICAgIGNvcHlfZWxlbWVu dF90b19kZXN0IChlbHQpOwotKyAgfQotKwotK3ByaXZhdGU6Ci0rICAvKiBUaGUgb2Zmc2V0IGlu dG8gdGhlIGNvbnRlbnQgYnVmZmVyIG9mIE1fVkFMIHRvIHRoZSBzdGFydCBvZiB0aGUgc2xpY2UK LSsgICAgIGJlaW5nIGV4dHJhY3RlZC4gICovCi0rICBMT05HRVNUIG1fYmFzZV9vZmZzZXQ7Ci0r Ci0rICAvKiBUaGUgcGFyZW50IHZhbHVlIGZyb20gd2hpY2ggd2UgYXJlIGV4dHJhY3RpbmcgYSBz bGljZS4gICovCi0rICBzdHJ1Y3QgdmFsdWUgKm1fdmFsOwotK307Ci0rCi0gLyogQ2FsbGVkIGZy b20gZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIHRvIHBlcmZvcm0gYXJyYXkgaW5kZXhpbmcsIGFu ZAotICAgIHN1Yi1yYW5nZSBleHRyYWN0aW9uLCBmb3IgRm9ydHJhbi4gIEFzIHdlbGwgYXMgYXJy YXlzIHRoaXMgZnVuY3Rpb24KLSAgICBhbHNvIGhhbmRsZXMgc3RyaW5ncyBhcyB0aGV5IGNhbiBi ZSB0cmVhdGVkIGxpa2UgYXJyYXlzIG9mIGNoYXJhY3RlcnMuCi1AQCAtMjAwLDUxICszMTUsMzk0 IEBAIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotIGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkgKHN0cnVj dCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0gCQkJaW50ICpwb3MsIGlu dCBuYXJncywgZW51bSBub3NpZGUgbm9zaWRlKQotIHsKLS0gIGlmIChleHAtPmVsdHNbKnBvc10u b3Bjb2RlID09IE9QX1JBTkdFKQotLSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcnJh eSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCi0tICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLSsg IHR5cGUgKm9yaWdpbmFsX2FycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChh cnJheSkpOwotKyAgYm9vbCBpc19zdHJpbmdfcCA9IG9yaWdpbmFsX2FycmF5X3R5cGUtPmNvZGUg KCkgPT0gVFlQRV9DT0RFX1NUUklORzsKLSsKLSsgIC8qIFBlcmZvcm0gY2hlY2tzIGZvciBBUlJB WSBub3QgYmVpbmcgYXZhaWxhYmxlLiAgVGhlIHNvbWV3aGF0IG92ZXJseQotKyAgICAgY29tcGxl eCBsb2dpYyBoZXJlIGlzIGp1c3QgdG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgg dGhlCi0rICAgICBlcnJvcnMgdGhhdCB3ZSB1c2VkIHRvIGdldCBiZWZvcmUgRk9SVFJBTl9WQUxV RV9TVUJBUlJBWSB3YXMKLSsgICAgIHJld3JpdHRlbi4gIE1heWJlIGEgZnV0dXJlIHRhc2sgd291 bGQgc3RyZWFtbGluZSB0aGUgZXJyb3IgbWVzc2FnZXMgd2UKLSsgICAgIGdldCBoZXJlLCBhbmQg dXBkYXRlIGFsbCB0aGUgZXhwZWN0ZWQgdGVzdCByZXN1bHRzLiAgKi8KLSsgIGlmIChleHAtPmVs dHNbKnBvc10ub3Bjb2RlICE9IE9QX1JBTkdFKQotICAgICB7Ci0tICAgICAgc2tpcF91bmRldGVy bWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOwotLSAgICAgIC8qIFJldHVy biB0aGUgZHVtbXkgdmFsdWUgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiAgKi8KLS0gICAgICByZXR1 cm4gYXJyYXk7Ci0rICAgICAgaWYgKHR5cGVfbm90X2Fzc29jaWF0ZWQgKG9yaWdpbmFsX2FycmF5 X3R5cGUpKQotKwllcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAodmVjdG9yIG5vdCBh c3NvY2lhdGVkKSIpKTsKLSsgICAgICBlbHNlIGlmICh0eXBlX25vdF9hbGxvY2F0ZWQgKG9yaWdp bmFsX2FycmF5X3R5cGUpKQotKwllcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAodmVj dG9yIG5vdCBhbGxvY2F0ZWQpIikpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBp ZiAodHlwZV9ub3RfYXNzb2NpYXRlZCAob3JpZ2luYWxfYXJyYXlfdHlwZSkpCi0rCWVycm9yIChf KCJhcnJheSBub3QgYXNzb2NpYXRlZCIpKTsKLSsgICAgICBlbHNlIGlmICh0eXBlX25vdF9hbGxv Y2F0ZWQgKG9yaWdpbmFsX2FycmF5X3R5cGUpKQotKwllcnJvciAoXygiYXJyYXkgbm90IGFsbG9j YXRlZCIpKTsKLSAgICAgfQotIAotLSAgTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRS QU5fRElNU107Ci0tICBpbnQgbmRpbWVuc2lvbnMgPSAxOwotLSAgc3RydWN0IHR5cGUgKnR5cGUg PSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotKyAgLyogRmlyc3QgY2hlY2sg dGhhdCB0aGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgaW4gdGhlIHR5cGUgd2UgYXJlIHNsaWNpbmcK LSsgICAgIG1hdGNoZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2Ugd2VyZSBwYXNzZWQuICAq LwotKyAgaW50IG5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAob3JpZ2luYWxfYXJy YXlfdHlwZSk7Ci0rICBpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCi0rICAgIGVycm9yIChfKCJX cm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIpKTsKLSAKLS0gIGlmIChuYXJncyA+IE1BWF9GT1JU UkFOX0RJTVMpCi0tICAgIGVycm9yIChfKCJUb28gbWFueSBzdWJzY3JpcHRzIGZvciBGNzcgKCVk IE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7Ci0rICAvKiBUaGlzIHdpbGwgYmUgaW5pdGlhbGlz ZWQgYmVsb3cgd2l0aCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMgaGVsZCBpbgotKyAgICAgQVJS QVkuICAqLwotKyAgc3RydWN0IHR5cGUgKmlubmVyX2VsZW1lbnRfdHlwZTsKLSAKLS0gIG5kaW1l bnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0rICAvKiBFeHRyYWN0IHRoZSB0 eXBlcyBvZiBlYWNoIGFycmF5IGRpbWVuc2lvbiBmcm9tIHRoZSBvcmlnaW5hbCBhcnJheQotKyAg ICAgdHlwZS4gIFdlIG5lZWQgdGhlc2UgYXZhaWxhYmxlIHNvIHdlIGNhbiBmaWxsIGluIHRoZSBk ZWZhdWx0IHVwcGVyIGFuZAotKyAgICAgbG93ZXIgYm91bmRzIGlmIHRoZSB1c2VyIHJlcXVlc3Rl ZCBzbGljZSBkb2Vzbid0IHByb3ZpZGUgdGhhdAotKyAgICAgaW5mb3JtYXRpb24uICBBZGRpdGlv bmFsbHkgdW5wYWNraW5nIHRoZSBkaW1lbnNpb25zIGxpa2UgdGhpcyBnaXZlcyB1cwotKyAgICAg dGhlIGlubmVyIGVsZW1lbnQgdHlwZS4gICovCi0rICBzdGQ6OnZlY3RvcjxzdHJ1Y3QgdHlwZSAq PiBkaW1fdHlwZXM7Ci0rICB7Ci0rICAgIGRpbV90eXBlcy5yZXNlcnZlIChuZGltZW5zaW9ucyk7 Ci0rICAgIHN0cnVjdCB0eXBlICp0eXBlID0gb3JpZ2luYWxfYXJyYXlfdHlwZTsKLSsgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBuZGltZW5zaW9uczsgKytpKQotKyAgICAgIHsKLSsJZGltX3R5cGVz LnB1c2hfYmFjayAodHlwZSk7Ci0rCXR5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLSsg ICAgICB9Ci0rICAgIC8qIFRZUEUgaXMgbm93IHRoZSBpbm5lciBlbGVtZW50IHR5cGUgb2YgdGhl IGFycmF5LCB3ZSBzdGFydCB0aGUgbmV3Ci0rICAgICAgIGFycmF5IHNsaWNlIG9mZiBhcyB0aGlz IHR5cGUsIHRoZW4gYXMgd2UgcHJvY2VzcyB0aGUgcmVxdWVzdGVkIHNsaWNlCi0rICAgICAgIChm cm9tIHRoZSB1c2VyKSB3ZSB3cmFwIG5ldyB0eXBlcyBhcm91bmQgdGhpcyB0byBidWlsZCB1cCB0 aGUgZmluYWwKLSsgICAgICAgc2xpY2UgdHlwZS4gICovCi0rICAgIGlubmVyX2VsZW1lbnRfdHlw ZSA9IHR5cGU7Ci0rICB9Ci0gCi0tICBpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCi0tICAgIGVy cm9yIChfKCJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIpKTsKLSsgIC8qIEFzIHdlIGFuYWx5 c2UgdGhlIG5ldyBzbGljZSB0eXBlIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZGF0YQot KyAgICAgYmVpbmcgcmVmZXJlbmNlZCBpcyBjb250aWd1b3VzLiAgRG8gZGVjaWRlIHRoaXMgd2Ug bXVzdCB0cmFjayB0aGUgc2l6ZQotKyAgICAgb2YgYW4gZWxlbWVudCBhdCBlYWNoIGRpbWVuc2lv biBvZiB0aGUgbmV3IHNsaWNlIGFycmF5LiAgSW5pdGlhbGx5IHRoZQotKyAgICAgZWxlbWVudHMg b2YgdGhlIGlubmVyIG1vc3QgZGltZW5zaW9uIG9mIHRoZSBhcnJheSBhcmUgdGhlIHNhbWUgaW5u ZXIKLSsgICAgIG1vc3QgZWxlbWVudHMgYXMgdGhlIG9yaWdpbmFsIEFSUkFZLiAgKi8KLSsgIExP TkdFU1Qgc2xpY2VfZWxlbWVudF9zaXplID0gVFlQRV9MRU5HVEggKGlubmVyX2VsZW1lbnRfdHlw ZSk7Ci0rCi0rICAvKiBTdGFydCBvZmYgYXNzdW1pbmcgYWxsIGRhdGEgaXMgY29udGlndW91cywg dGhpcyB3aWxsIGJlIHNldCB0byBmYWxzZQotKyAgICAgaWYgYWNjZXNzIHRvIGFueSBkaW1lbnNp b24gcmVzdWx0cyBpbiBub24tY29udGlndW91cyBkYXRhLiAgKi8KLSsgIGJvb2wgaXNfYWxsX2Nv bnRpZ3VvdXMgPSB0cnVlOwotKwotKyAgLyogVGhlIFRPVEFMX09GRlNFVCBpcyB0aGUgZGlzdGFu Y2UgaW4gYnl0ZXMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlCi0rICAgICBvcmlnaW5hbCBBUlJBWSB0 byB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzbGljZS4gIFRoaXMgaXMgY2FsY3VsYXRlZCBhcwotKyAg ICAgd2UgcHJvY2VzcyB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgdXNlci4gICovCi0rICBMT05H RVNUIHRvdGFsX29mZnNldCA9IDA7Ci0rCi0rICAvKiBBIHN0cnVjdHVyZSByZXByZXNlbnRpbmcg aW5mb3JtYXRpb24gYWJvdXQgZWFjaCBkaW1lbnNpb24gb2YgdGhlCi0rICAgICByZXN1bHRpbmcg c2xpY2UuICAqLwotKyAgc3RydWN0IHNsaWNlX2RpbQotKyAgewotKyAgICAvKiBDb25zdHJ1Y3Rv ci4gICovCi0rICAgIHNsaWNlX2RpbSAoTE9OR0VTVCBsLCBMT05HRVNUIGgsIExPTkdFU1Qgcywg c3RydWN0IHR5cGUgKmlkeCkKLSsgICAgICA6IGxvdyAobCksCi0rCWhpZ2ggKGgpLAotKwlzdHJp ZGUgKHMpLAotKwlpbmRleCAoaWR4KQotKyAgICB7IC8qIE5vdGhpbmcuICAqLyB9Ci0rCi0rICAg IC8qIFRoZSBsb3cgYm91bmQgZm9yIHRoaXMgZGltZW5zaW9uIG9mIHRoZSBzbGljZS4gICovCi0r ICAgIExPTkdFU1QgbG93OwotKwotKyAgICAvKiBUaGUgaGlnaCBib3VuZCBmb3IgdGhpcyBkaW1l bnNpb24gb2YgdGhlIHNsaWNlLiAgKi8KLSsgICAgTE9OR0VTVCBoaWdoOwotKwotKyAgICAvKiBU aGUgYnl0ZSBzdHJpZGUgZm9yIHRoaXMgZGltZW5zaW9uIG9mIHRoZSBzbGljZS4gICovCi0rICAg IExPTkdFU1Qgc3RyaWRlOwotKwotKyAgICBzdHJ1Y3QgdHlwZSAqaW5kZXg7Ci0rICB9OwotKwot KyAgLyogVGhlIGRpbWVuc2lvbnMgb2YgdGhlIHJlc3VsdGluZyBzbGljZS4gICovCi0rICBzdGQ6 OnZlY3RvcjxzbGljZV9kaW0+IHNsaWNlX2RpbXM7Ci0rCi0rICAvKiBQcm9jZXNzIHRoZSBpbmNv bWluZyBhcmd1bWVudHMuICAgVGhlc2UgYXJndW1lbnRzIGFyZSBpbiB0aGUgcmV2ZXJzZQotKyAg ICAgb3JkZXIgdG8gdGhlIGFycmF5IGRpbWVuc2lvbnMsIHRoYXQgaXMgdGhlIGZpcnN0IGFyZ3Vt ZW50IHJlZmVycyB0bwotKyAgICAgdGhlIGxhc3QgYXJyYXkgZGltZW5zaW9uLiAgKi8KLSsgIGlm IChmb3J0cmFuX2FycmF5X3NsaWNpbmdfZGVidWcpCi0rICAgIGRlYnVnX3ByaW50ZiAoIlByb2Nl c3NpbmcgYXJyYXkgYWNjZXNzOlxuIik7Ci0rICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyAr K2kpCi0rICAgIHsKLSsgICAgICAvKiBGb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5IHRo ZSB1c2VyIHdpbGwgaGF2ZSBlaXRoZXIgcHJvdmlkZWQKLSsJIGEgcmFuZ2VkIGFjY2VzcyB3aXRo IG9wdGlvbmFsIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCwgYW5kCi0rCSBzdHJpZGUsIG9yIHRo ZSB1c2VyIHdpbGwgaGF2ZSBzdXBwbGllZCBhIHNpbmdsZSBpbmRleC4gICovCi0rICAgICAgc3Ry dWN0IHR5cGUgKmRpbV90eXBlID0gZGltX3R5cGVzW25kaW1lbnNpb25zIC0gKGkgKyAxKV07Ci0r ICAgICAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCi0rCXsKLSsJICBp bnQgcGMgPSAoKnBvcykgKyAxOwotKwkgIGVudW0gcmFuZ2VfZmxhZyByYW5nZV9mbGFnID0gKGVu dW0gcmFuZ2VfZmxhZykgZXhwLT5lbHRzW3BjXS5sb25nY29uc3Q7Ci0rCSAgKnBvcyArPSAzOwot KwotKwkgIExPTkdFU1QgbG93LCBoaWdoLCBzdHJpZGU7Ci0rCSAgbG93ID0gaGlnaCA9IHN0cmlk ZSA9IDA7Ci0rCi0rCSAgaWYgKChyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQp ID09IDApCi0rCSAgICBsb3cgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxw dHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSsJICBlbHNlCi0rCSAgICBsb3cgPSBmNzdfZ2V0X2xv d2VyYm91bmQgKGRpbV90eXBlKTsKLSsJICBpZiAoKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JP VU5EX0RFRkFVTFQpID09IDApCi0rCSAgICBoaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVf c3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Ci0rCSAgZWxzZQotKwkgICAgaGln aCA9IGY3N19nZXRfdXBwZXJib3VuZCAoZGltX3R5cGUpOwotKwkgIGlmICgocmFuZ2VfZmxhZyAm IFJBTkdFX0hBU19TVFJJREUpID09IFJBTkdFX0hBU19TVFJJREUpCi0rCSAgICBzdHJpZGUgPSB2 YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUp KTsKLSsJICBlbHNlCi0rCSAgICBzdHJpZGUgPSAxOwotKwotKwkgIGlmIChzdHJpZGUgPT0gMCkK LSsJICAgIGVycm9yIChfKCJzdHJpZGUgbXVzdCBub3QgYmUgMCIpKTsKLSsKLSsJICAvKiBHZXQg aW5mb3JtYXRpb24gYWJvdXQgdGhpcyBkaW1lbnNpb24gaW4gdGhlIG9yaWdpbmFsIEFSUkFZLiAg Ki8KLSsJICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChkaW1f dHlwZSk7Ci0rCSAgc3RydWN0IHR5cGUgKmluZGV4X3R5cGUgPSBkaW1fdHlwZS0+aW5kZXhfdHlw ZSAoKTsKLSsJICBMT05HRVNUIGxiID0gZjc3X2dldF9sb3dlcmJvdW5kIChkaW1fdHlwZSk7Ci0r CSAgTE9OR0VTVCB1YiA9IGY3N19nZXRfdXBwZXJib3VuZCAoZGltX3R5cGUpOwotKwkgIExPTkdF U1Qgc2QgPSBpbmRleF90eXBlLT5iaXRfc3RyaWRlICgpOwotKwkgIGlmIChzZCA9PSAwKQotKwkg ICAgc2QgPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpICogODsKLSsKLSsJICBpZiAoZm9ydHJh bl9hcnJheV9zbGljaW5nX2RlYnVnKQotKwkgICAgewotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8 LT4gUmFuZ2UgYWNjZXNzXG4iKTsKLSsJICAgICAgc3RkOjpzdHJpbmcgc3RyID0gdHlwZV90b19z dHJpbmcgKGRpbV90eXBlKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBUeXBlOiAl c1xuIiwgc3RyLmNfc3RyICgpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBBcnJh eTpcbiIpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVs ZFxuIiwgbGIpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5k OiAlbGRcbiIsIHViKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQml0IHN0 cmlkZTogJWxkXG4iLCBzZCk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJ5 dGUgc3RyaWRlOiAlbGRcbiIsIHNkIC8gOCk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8 ICAgfC0+IFR5cGUgc2l6ZTogJWxkXG4iLAotKwkJCSAgICBUWVBFX0xFTkdUSCAoZGltX3R5cGUp KTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICAnLT4gVGFyZ2V0IHR5cGUgc2l6ZTog JWxkXG4iLAotKwkJCSAgICBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpKTsKLSsJICAgICAgZGVi dWdfcHJpbnRmICgifCAgIHwtPiBBY2Nlc3Npbmc6XG4iKTsKLSsJICAgICAgZGVidWdfcHJpbnRm ICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIsCi0rCQkJICAgIGxvdyk7Ci0rCSAgICAg IGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6ICVsZFxuIiwKLSsJCQkgICAg aGlnaCk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgJy0+IEVsZW1lbnQgc3RyaWRl OiAlbGRcbiIsCi0rCQkJICAgIHN0cmlkZSk7Ci0rCSAgICB9Ci0rCi0rCSAgLyogQ2hlY2sgdGhl IHVzZXIgaGFzbid0IGFza2VkIGZvciBzb21ldGhpbmcgaW52YWxpZC4gICovCi0rCSAgaWYgKGhp Z2ggPiB1YiB8fCBsb3cgPCBsYikKLSsJICAgIGVycm9yIChfKCJhcnJheSBzdWJzY3JpcHQgb3V0 IG9mIGJvdW5kcyIpKTsKLSsKLSsJICAvKiBDYWxjdWxhdGUgd2hhdCB0aGlzIGRpbWVuc2lvbiBv ZiB0aGUgbmV3IHNsaWNlIGFycmF5IHdpbGwgbG9vawotKwkgICAgIGxpa2UuICBPRkZTRVQgaXMg dGhlIGJ5dGUgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQotKwkgICAgIHByZXZpb3VzICht b3JlIG91dGVyKSBkaW1lbnNpb24gdG8gdGhlIHN0YXJ0IG9mIHRoaXMKLSsJICAgICBkaW1lbnNp b24uICBFX0NPVU5UIGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhpcwotKwkgICAgIGRp bWVuc2lvbi4gIFJFTUFJTkRFUiBpcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHJlbWFpbmluZwot KwkgICAgIGJldHdlZW4gdGhlIGxhc3QgaW5jbHVkZWQgZWxlbWVudCBhbmQgdGhlIHVwcGVyIGJv dW5kLiAgRm9yCi0rCSAgICAgZXhhbXBsZSBhbiBhY2Nlc3MgJzE6NjoyJyB3aWxsIGluY2x1ZGUg ZWxlbWVudHMgMSwgMywgNSBhbmQKLSsJICAgICBoYXZlIGEgcmVtYWluZGVyIG9mIDEgKGVsZW1l bnQgIzYpLiAgKi8KLSsJICBMT05HRVNUIGxvd2VzdCA9IHN0ZDo6bWluIChsb3csIGhpZ2gpOwot KwkgIExPTkdFU1Qgb2Zmc2V0ID0gKHNkIC8gOCkgKiAobG93ZXN0IC0gbGIpOwotKwkgIExPTkdF U1QgZV9jb3VudCA9IHN0ZDo6YWJzIChoaWdoIC0gbG93KSArIDE7Ci0rCSAgZV9jb3VudCA9IChl X2NvdW50ICsgKHN0ZDo6YWJzIChzdHJpZGUpIC0gMSkpIC8gc3RkOjphYnMgKHN0cmlkZSk7Ci0r CSAgTE9OR0VTVCBuZXdfbG93ID0gMTsKLSsJICBMT05HRVNUIG5ld19oaWdoID0gbmV3X2xvdyAr IGVfY291bnQgLSAxOwotKwkgIExPTkdFU1QgbmV3X3N0cmlkZSA9IChzZCAqIHN0cmlkZSkgLyA4 OwotKwkgIExPTkdFU1QgbGFzdF9lbGVtID0gbG93ICsgKChlX2NvdW50IC0gMSkgKiBzdHJpZGUp OwotKwkgIExPTkdFU1QgcmVtYWluZGVyID0gaGlnaCAtIGxhc3RfZWxlbTsKLSsJICBpZiAobG93 ID4gaGlnaCkKLSsJICAgIHsKLSsJICAgICAgb2Zmc2V0ICs9IHN0ZDo6YWJzIChyZW1haW5kZXIp ICogVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKLSsJICAgICAgaWYgKHN0cmlkZSA+IDApCi0r CQllcnJvciAoXygiaW5jb3JyZWN0IHN0cmlkZSBhbmQgYm91bmRhcnkgY29tYmluYXRpb24iKSk7 Ci0rCSAgICB9Ci0rCSAgZWxzZSBpZiAoc3RyaWRlIDwgMCkKLSsJICAgIGVycm9yIChfKCJpbmNv cnJlY3Qgc3RyaWRlIGFuZCBib3VuZGFyeSBjb21iaW5hdGlvbiIpKTsKLSsKLSsJICAvKiBJcyB0 aGUgZGF0YSB3aXRoaW4gdGhpcyBkaW1lbnNpb24gY29udGlndW91cz8gIEl0IGlzIGlmIHRoZQot KwkgICAgIG5ld2x5IGNvbXB1dGVkIHN0cmlkZSBpcyB0aGUgc2FtZSBzaXplIGFzIGEgc2luZ2xl IGVsZW1lbnQgb2YKLSsJICAgICB0aGlzIGRpbWVuc2lvbi4gICovCi0rCSAgYm9vbCBpc19kaW1f Y29udGlndW91cyA9IChuZXdfc3RyaWRlID09IHNsaWNlX2VsZW1lbnRfc2l6ZSk7Ci0rCSAgaXNf YWxsX2NvbnRpZ3VvdXMgJj0gaXNfZGltX2NvbnRpZ3VvdXM7Ci0rCi0rCSAgaWYgKGZvcnRyYW5f YXJyYXlfc2xpY2luZ19kZWJ1ZykKLSsJICAgIHsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAg ICctPiBSZXN1bHRzOlxuIik7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IE9m ZnNldCA9ICVsZFxuIiwgb2Zmc2V0KTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8 LT4gRWxlbWVudHMgPSAlbGRcbiIsIGVfY291bnQpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8 ICAgICAgIHwtPiBMb3cgYm91bmQgPSAlbGRcbiIsIG5ld19sb3cpOwotKwkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgICAgIHwtPiBIaWdoIGJvdW5kID0gJWxkXG4iLCBuZXdfaGlnaCk7Ci0rCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IEJ5dGUgc3RyaWRlID0gJWxkXG4iLCBuZXdf c3RyaWRlKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gTGFzdCBlbGVtZW50 ID0gJWxkXG4iLCBsYXN0X2VsZW0pOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwt PiBSZW1haW5kZXIgPSAlbGRcbiIsIHJlbWFpbmRlcik7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAo InwgICAgICAgJy0+IENvbnRpZ3VvdXMgPSAlc1xuIiwKLSsJCQkgICAgKGlzX2RpbV9jb250aWd1 b3VzID8gIlllcyIgOiAiTm8iKSk7Ci0rCSAgICB9Ci0rCi0rCSAgLyogRmlndXJlIG91dCBob3cg YmlnIChpbiBieXRlcykgYW4gZWxlbWVudCBvZiB0aGlzIGRpbWVuc2lvbiBvZgotKwkgICAgIHRo ZSBuZXcgYXJyYXkgc2xpY2Ugd2lsbCBiZS4gICovCi0rCSAgc2xpY2VfZWxlbWVudF9zaXplID0g c3RkOjphYnMgKG5ld19zdHJpZGUgKiBlX2NvdW50KTsKLSsKLSsJICBzbGljZV9kaW1zLmVtcGxh Y2VfYmFjayAobmV3X2xvdywgbmV3X2hpZ2gsIG5ld19zdHJpZGUsCi0rCQkJCSAgIGluZGV4X3R5 cGUpOwotKwotKwkgIC8qIFVwZGF0ZSB0aGUgdG90YWwgb2Zmc2V0LiAgKi8KLSsJICB0b3RhbF9v ZmZzZXQgKz0gb2Zmc2V0OwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogVGhlcmUgaXMg YSBzaW5nbGUgaW5kZXggZm9yIHRoaXMgZGltZW5zaW9uLiAgKi8KLSsJICBMT05HRVNUIGluZGV4 Ci0rCSAgICA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChl eHAsIHBvcywgbm9zaWRlKSk7Ci0rCi0rCSAgLyogR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoaXMg ZGltZW5zaW9uIGluIHRoZSBvcmlnaW5hbCBBUlJBWS4gICovCi0rCSAgc3RydWN0IHR5cGUgKnRh cmdldF90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZGltX3R5cGUpOwotKwkgIHN0cnVjdCB0eXBl ICppbmRleF90eXBlID0gZGltX3R5cGUtPmluZGV4X3R5cGUgKCk7Ci0rCSAgTE9OR0VTVCBsYiA9 IGY3N19nZXRfbG93ZXJib3VuZCAoZGltX3R5cGUpOwotKwkgIExPTkdFU1QgdWIgPSBmNzdfZ2V0 X3VwcGVyYm91bmQgKGRpbV90eXBlKTsKLSsJICBMT05HRVNUIHNkID0gaW5kZXhfdHlwZS0+Yml0 X3N0cmlkZSAoKSAvIDg7Ci0rCSAgaWYgKHNkID09IDApCi0rCSAgICBzZCA9IFRZUEVfTEVOR1RI ICh0YXJnZXRfdHlwZSk7Ci0rCi0rCSAgaWYgKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZykK LSsJICAgIHsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifC0+IEluZGV4IGFjY2Vzc1xuIik7Ci0r CSAgICAgIHN0ZDo6c3RyaW5nIHN0ciA9IHR5cGVfdG9fc3RyaW5nIChkaW1fdHlwZSk7Ci0rCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gVHlwZTogJXNcbiIsIHN0ci5jX3N0ciAoKSk7Ci0r CSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gQXJyYXk6XG4iKTsKLSsJICAgICAgZGVidWdf cHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIsIGxiKTsKLSsJICAgICAgZGVi dWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxkXG4iLCB1Yik7Ci0rCSAgICAg IGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJ5dGUgc3RyaWRlOiAlbGRcbiIsIHNkKTsKLSsJ ICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlbGRcbiIsIFRZUEVf TEVOR1RIIChkaW1fdHlwZSkpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICctPiBU YXJnZXQgdHlwZSBzaXplOiAlbGRcbiIsCi0rCQkJICAgIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlw ZSkpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgJy0+IEFjY2Vzc2luZzpcbiIpOwotKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgICctPiBJbmRleDogJWxkXG4iLCBpbmRleCk7Ci0r CSAgICB9Ci0rCi0rCSAgLyogSWYgdGhlIGFycmF5IGhhcyBhY3R1YWwgY29udGVudCB0aGVuIGNo ZWNrIHRoZSBpbmRleCBpcyBpbgotKwkgICAgIGJvdW5kcy4gIEFuIGFycmF5IHdpdGhvdXQgY29u dGVudCAoYW4gdW5ib3VuZCBhcnJheSkgZG9lc24ndAotKwkgICAgIGhhdmUgYSBrbm93biB1cHBl ciBib3VuZCwgc28gZG9uJ3QgZXJyb3IgY2hlY2sgaW4gdGhhdAotKwkgICAgIHNpdHVhdGlvbi4g ICovCi0rCSAgaWYgKGluZGV4IDwgbGIKLSsJICAgICAgfHwgKGRpbV90eXBlLT5pbmRleF90eXBl ICgpLT5ib3VuZHMgKCktPmhpZ2gua2luZCAoKSAhPSBQUk9QX1VOREVGSU5FRAotKwkJICAmJiBp bmRleCA+IHViKQotKwkgICAgICB8fCAoVkFMVUVfTFZBTCAoYXJyYXkpICE9IGx2YWxfbWVtb3J5 Ci0rCQkgICYmIGRpbV90eXBlLT5pbmRleF90eXBlICgpLT5ib3VuZHMgKCktPmhpZ2gua2luZCAo KSA9PSBQUk9QX1VOREVGSU5FRCkpCi0rCSAgICB7Ci0rCSAgICAgIGlmICh0eXBlX25vdF9hc3Nv Y2lhdGVkIChkaW1fdHlwZSkpCi0rCQllcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAo dmVjdG9yIG5vdCBhc3NvY2lhdGVkKSIpKTsKLSsJICAgICAgZWxzZSBpZiAodHlwZV9ub3RfYWxs b2NhdGVkIChkaW1fdHlwZSkpCi0rCQllcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAo dmVjdG9yIG5vdCBhbGxvY2F0ZWQpIikpOwotKwkgICAgICBlbHNlCi0rCQllcnJvciAoXygibm8g c3VjaCB2ZWN0b3IgZWxlbWVudCIpKTsKLSsJICAgIH0KLSAKLS0gIGdkYl9hc3NlcnQgKG5hcmdz ID4gMCk7Ci0rCSAgLyogQ2FsY3VsYXRlIHVzaW5nIHRoZSB0eXBlIHN0cmlkZSwgbm90IHRoZSB0 YXJnZXQgdHlwZSBzaXplLiAgKi8KLSsJICBMT05HRVNUIG9mZnNldCA9IHNkICogKGluZGV4IC0g bGIpOwotKwkgIHRvdGFsX29mZnNldCArPSBvZmZzZXQ7Ci0rCX0KLSsgICAgfQotIAotLSAgLyog Tm93IHRoYXQgd2Uga25vdyB3ZSBoYXZlIGEgbGVnYWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Np b24gbGV0IHVzCi0tICAgICBhY3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhp c3RzIGluIHRoZSBhcnJheS4gICovCi0rICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLSsgICAg cmV0dXJuIGFycmF5OwotIAotLSAgLyogVGFrZSBhcnJheSBpbmRpY2VzIGxlZnQgdG8gcmlnaHQu ICAqLwotLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSsrKQotKyAgLyogQnVpbGQgYSB0 eXBlIHRoYXQgcmVwcmVzZW50cyB0aGUgbmV3IGFycmF5IHNsaWNlIGluIHRoZSB0YXJnZXQgbWVt b3J5Ci0rICAgICBvZiB0aGUgb3JpZ2luYWwgQVJSQVksIHRoaXMgdHlwZSBtYWtlcyB1c2Ugb2Yg c3RyaWRlcyB0byBjb3JyZWN0bHkKLSsgICAgIGZpbmQgb25seSB0aG9zZSBlbGVtZW50cyB0aGF0 IGFyZSBwYXJ0IG9mIHRoZSBuZXcgc2xpY2UuICAqLwotKyAgc3RydWN0IHR5cGUgKmFycmF5X3Ns aWNlX3R5cGUgPSBpbm5lcl9lbGVtZW50X3R5cGU7Ci0rICBmb3IgKGNvbnN0IGF1dG8gJmQgOiBz bGljZV9kaW1zKQotICAgICB7Ci0tICAgICAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3JpcHQ7IGl0 IG11c3QgYmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gICovCi0tICAgICAgdmFsdWUgKmFyZzIg PSBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAg ICAgLyogQ3JlYXRlIHRoZSByYW5nZS4gICovCi0rICAgICAgZHluYW1pY19wcm9wIHBfbG93LCBw X2hpZ2gsIHBfc3RyaWRlOwotKwotKyAgICAgIHBfbG93LnNldF9jb25zdF92YWwgKGQubG93KTsK LSsgICAgICBwX2hpZ2guc2V0X2NvbnN0X3ZhbCAoZC5oaWdoKTsKLSsgICAgICBwX3N0cmlkZS5z ZXRfY29uc3RfdmFsIChkLnN0cmlkZSk7Ci0rCi0rICAgICAgc3RydWN0IHR5cGUgKm5ld19yYW5n ZQotKwk9IGNyZWF0ZV9yYW5nZV90eXBlX3dpdGhfc3RyaWRlICgoc3RydWN0IHR5cGUgKikgTlVM TCwKLSsJCQkJCSBUWVBFX1RBUkdFVF9UWVBFIChkLmluZGV4KSwKLSsJCQkJCSAmcF9sb3csICZw X2hpZ2gsIDAsICZwX3N0cmlkZSwKLSsJCQkJCSB0cnVlKTsKLSsgICAgICBhcnJheV9zbGljZV90 eXBlCi0rCT0gY3JlYXRlX2FycmF5X3R5cGUgKG51bGxwdHIsIGFycmF5X3NsaWNlX3R5cGUsIG5l d19yYW5nZSk7Ci0rICAgIH0KLSAKLS0gICAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3JpcHQgYXJy YXkuICAqLwotLSAgICAgIHN1YnNjcmlwdF9hcnJheVtpXSA9IHZhbHVlX2FzX2xvbmcgKGFyZzIp OwotKyAgaWYgKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZykKLSsgICAgewotKyAgICAgIGRl YnVnX3ByaW50ZiAoIictPiBGaW5hbCByZXN1bHQ6XG4iKTsKLSsgICAgICBkZWJ1Z19wcmludGYg KCIgICAgfC0+IFR5cGU6ICVzXG4iLAotKwkJICAgIHR5cGVfdG9fc3RyaW5nIChhcnJheV9zbGlj ZV90eXBlKS5jX3N0ciAoKSk7Ci0rICAgICAgZGVidWdfcHJpbnRmICgiICAgIHwtPiBUb3RhbCBv ZmZzZXQ6ICVsZFxuIiwgdG90YWxfb2Zmc2V0KTsKLSsgICAgICBkZWJ1Z19wcmludGYgKCIgICAg fC0+IEJhc2UgYWRkcmVzczogJXNcbiIsCi0rCQkgICAgY29yZV9hZGRyX3RvX3N0cmluZyAodmFs dWVfYWRkcmVzcyAoYXJyYXkpKSk7Ci0rICAgICAgZGVidWdfcHJpbnRmICgiICAgICctPiBDb250 aWd1b3VzID0gJXNcbiIsCi0rCQkgICAgKGlzX2FsbF9jb250aWd1b3VzID8gIlllcyIgOiAiTm8i KSk7Ci0gICAgIH0KLSAKLS0gIC8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQg cmlnaHQgdG8gbGVmdC4gICovCi0tICBmb3IgKGludCBpID0gbmFyZ3M7IGkgPiAwOyBpLS0pCi0r ICAvKiBTaG91bGQgd2UgcmVwYWNrIHRoaXMgYXJyYXkgc2xpY2U/ICAqLwotKyAgaWYgKCFpc19h bGxfY29udGlndW91cyAmJiAocmVwYWNrX2FycmF5X3NsaWNlcyB8fCBpc19zdHJpbmdfcCkpCi0g ICAgIHsKLS0gICAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFycmF5KSk7Ci0tICAgICAgTE9OR0VTVCBpbmRleCA9IHN1YnNjcmlwdF9hcnJh eVtpIC0gMV07Ci0rICAgICAgLyogQnVpbGQgYSB0eXBlIGZvciB0aGUgcmVwYWNrZWQgc2xpY2Uu ICAqLwotKyAgICAgIHN0cnVjdCB0eXBlICpyZXBhY2tlZF9hcnJheV90eXBlID0gaW5uZXJfZWxl bWVudF90eXBlOwotKyAgICAgIGZvciAoY29uc3QgYXV0byAmZCA6IHNsaWNlX2RpbXMpCi0rCXsK LSsJICAvKiBDcmVhdGUgdGhlIHJhbmdlLiAgKi8KLSsJICBkeW5hbWljX3Byb3AgcF9sb3csIHBf aGlnaCwgcF9zdHJpZGU7Ci0rCi0rCSAgcF9sb3cuc2V0X2NvbnN0X3ZhbCAoZC5sb3cpOwotKwkg IHBfaGlnaC5zZXRfY29uc3RfdmFsIChkLmhpZ2gpOwotKwkgIHBfc3RyaWRlLnNldF9jb25zdF92 YWwgKFRZUEVfTEVOR1RIIChyZXBhY2tlZF9hcnJheV90eXBlKSk7Ci0rCi0rCSAgc3RydWN0IHR5 cGUgKm5ld19yYW5nZQotKwkgICAgPSBjcmVhdGVfcmFuZ2VfdHlwZV93aXRoX3N0cmlkZSAoKHN0 cnVjdCB0eXBlICopIE5VTEwsCi0rCQkJCQkgICAgIFRZUEVfVEFSR0VUX1RZUEUgKGQuaW5kZXgp LAotKwkJCQkJICAgICAmcF9sb3csICZwX2hpZ2gsIDAsICZwX3N0cmlkZSwKLSsJCQkJCSAgICAg dHJ1ZSk7Ci0rCSAgcmVwYWNrZWRfYXJyYXlfdHlwZQotKwkgICAgPSBjcmVhdGVfYXJyYXlfdHlw ZSAobnVsbHB0ciwgcmVwYWNrZWRfYXJyYXlfdHlwZSwgbmV3X3JhbmdlKTsKLSsJfQotIAotLSAg ICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJheSwgaW5kZXgsCi0tCQkJ CQlmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsKLSsgICAgICAvKiBOb3cgY29weSB0 aGUgZWxlbWVudHMgZnJvbSB0aGUgb3JpZ2luYWwgQVJSQVkgaW50byB0aGUgcGFja2VkCi0rCSBh cnJheSB2YWx1ZSBERVNULiAgKi8KLSsgICAgICBzdHJ1Y3QgdmFsdWUgKmRlc3QgPSBhbGxvY2F0 ZV92YWx1ZSAocmVwYWNrZWRfYXJyYXlfdHlwZSk7Ci0rICAgICAgaWYgKHZhbHVlX2xhenkgKGFy cmF5KQotKwkgIHx8ICh0b3RhbF9vZmZzZXQgKyBUWVBFX0xFTkdUSCAoYXJyYXlfc2xpY2VfdHlw ZSkKLSsJICAgICAgPiBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJy YXkpKSkpKQotKwl7Ci0rCSAgZm9ydHJhbl9hcnJheV93YWxrZXI8Zm9ydHJhbl9sYXp5X2FycmF5 X3JlcGFja2VyX2ltcGw+IHAKLSsJICAgIChhcnJheV9zbGljZV90eXBlLCB2YWx1ZV9hZGRyZXNz IChhcnJheSkgKyB0b3RhbF9vZmZzZXQsIGRlc3QpOwotKwkgIHAud2FsayAoKTsKLSsJfQotKyAg ICAgIGVsc2UKLSsJewotKwkgIGZvcnRyYW5fYXJyYXlfd2Fsa2VyPGZvcnRyYW5fYXJyYXlfcmVw YWNrZXJfaW1wbD4gcAotKwkgICAgKGFycmF5X3NsaWNlX3R5cGUsIHZhbHVlX2FkZHJlc3MgKGFy cmF5KSArIHRvdGFsX29mZnNldCwKLSsJICAgICB0b3RhbF9vZmZzZXQsIGFycmF5LCBkZXN0KTsK LSsJICBwLndhbGsgKCk7Ci0rCX0KLSsgICAgICBhcnJheSA9IGRlc3Q7Ci0rICAgIH0KLSsgIGVs c2UKLSsgICAgewotKyAgICAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkp Ci0rCXsKLSsJICAvKiBJZiB0aGUgdmFsdWUgd2UncmUgdGFraW5nIGEgc2xpY2UgZnJvbSBpcyBu b3QgeWV0IGxvYWRlZCwgb3IKLSsJICAgICB0aGUgcmVxdWVzdGVkIHNsaWNlIGlzIG91dHNpZGUg dGhlIHZhbHVlcyBjb250ZW50IHJhbmdlIHRoZW4KLSsJICAgICBqdXN0IGNyZWF0ZSBhIG5ldyBs YXp5IHZhbHVlIHBvaW50aW5nIGF0IHRoZSBtZW1vcnkgd2hlcmUgdGhlCi0rCSAgICAgY29udGVu dHMgd2UncmUgbG9va2luZyBmb3IgZXhpc3QuICAqLwotKwkgIGlmICh2YWx1ZV9sYXp5IChhcnJh eSkKLSsJICAgICAgfHwgKHRvdGFsX29mZnNldCArIFRZUEVfTEVOR1RIIChhcnJheV9zbGljZV90 eXBlKQotKwkJICA+IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJh eSkpKSkpCi0rCSAgICBhcnJheSA9IHZhbHVlX2F0X2xhenkgKGFycmF5X3NsaWNlX3R5cGUsCi0r CQkJCSAgIHZhbHVlX2FkZHJlc3MgKGFycmF5KSArIHRvdGFsX29mZnNldCk7Ci0rCSAgZWxzZQot KwkgICAgYXJyYXkgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNzIChhcnJheV9zbGlj ZV90eXBlLAotKwkJCQkJCSAgICAgKHZhbHVlX2NvbnRlbnRzIChhcnJheSkKLSsJCQkJCQkgICAg ICArIHRvdGFsX29mZnNldCksCi0rCQkJCQkJICAgICAodmFsdWVfYWRkcmVzcyAoYXJyYXkpCi0r CQkJCQkJICAgICAgKyB0b3RhbF9vZmZzZXQpKTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKCF2YWx1 ZV9sYXp5IChhcnJheSkpCi0rCXsKLSsJICBjb25zdCB2b2lkICp2YWxhZGRyID0gdmFsdWVfY29u dGVudHMgKGFycmF5KSArIHRvdGFsX29mZnNldDsKLSsJICBhcnJheSA9IGFsbG9jYXRlX3ZhbHVl IChhcnJheV9zbGljZV90eXBlKTsKLSsJICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAoYXJy YXkpLCB2YWxhZGRyLCBUWVBFX0xFTkdUSCAoYXJyYXlfc2xpY2VfdHlwZSkpOwotKwl9Ci0rICAg ICAgZWxzZQotKwllcnJvciAoXygiY2Fubm90IHN1YnNjcmlwdCBhcnJheXMgdGhhdCBhcmUgbm90 IGluIG1lbW9yeSIpKTsKLSAgICAgfQotIAotICAgcmV0dXJuIGFycmF5OwotQEAgLTEwMzEsMTEg KzE0ODksNTAgQEAgYnVpbHRpbl9mX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAg cmV0dXJuIChjb25zdCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUgKikgZ2RiYXJjaF9kYXRhIChnZGJh cmNoLCBmX3R5cGVfZGF0YSk7Ci0gfQotIAotKy8qIENvbW1hbmQtbGlzdCBmb3IgdGhlICJzZXQv c2hvdyBmb3J0cmFuIiBwcmVmaXggY29tbWFuZC4gICovCi0rc3RhdGljIHN0cnVjdCBjbWRfbGlz dF9lbGVtZW50ICpzZXRfZm9ydHJhbl9saXN0OwotK3N0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxl bWVudCAqc2hvd19mb3J0cmFuX2xpc3Q7Ci0rCi0gdm9pZCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdl ICgpOwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICgpCi0gewotICAgZl90eXBlX2Rh dGEgPSBnZGJhcmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChidWlsZF9mb3J0cmFuX3R5cGVz KTsKLSsKLSsgIGFkZF9iYXNpY19wcmVmaXhfY21kICgiZm9ydHJhbiIsIG5vX2NsYXNzLAotKwkJ CV8oIlByZWZpeCBjb21tYW5kIGZvciBjaGFuZ2luZyBGb3J0cmFuLXNwZWNpZmljIHNldHRpbmdz LiIpLAotKwkJCSZzZXRfZm9ydHJhbl9saXN0LCAic2V0IGZvcnRyYW4gIiwgMCwgJnNldGxpc3Qp OwotKwotKyAgYWRkX3Nob3dfcHJlZml4X2NtZCAoImZvcnRyYW4iLCBub19jbGFzcywKLSsJCSAg ICAgICBfKCJHZW5lcmljIGNvbW1hbmQgZm9yIHNob3dpbmcgRm9ydHJhbi1zcGVjaWZpYyBzZXR0 aW5ncy4iKSwKLSsJCSAgICAgICAmc2hvd19mb3J0cmFuX2xpc3QsICJzaG93IGZvcnRyYW4gIiwg MCwgJnNob3dsaXN0KTsKLSsKLSsgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgicmVwYWNrLWFy cmF5LXNsaWNlcyIsIGNsYXNzX3ZhcnMsCi0rCQkJICAgJnJlcGFja19hcnJheV9zbGljZXMsIF8o IlwKLStFbmFibGUgb3IgZGlzYWJsZSByZXBhY2tpbmcgb2Ygbm9uLWNvbnRpZ3VvdXMgYXJyYXkg c2xpY2VzLiIpLCBfKCJcCi0rU2hvdyB3aGV0aGVyIG5vbi1jb250aWd1b3VzIGFycmF5IHNsaWNl cyBhcmUgcmVwYWNrZWQuIiksIF8oIlwKLStXaGVuIHRoZSB1c2VyIHJlcXVlc3RzIGEgc2xpY2Ug b2YgYSBGb3J0cmFuIGFycmF5IHRoZW4gd2UgY2FuIGVpdGhlciByZXR1cm5cblwKLSthIGRlc2Ny aXB0b3IgdGhhdCBkZXNjcmliZXMgdGhlIGFycmF5IGluIHBsYWNlICh1c2luZyB0aGUgb3JpZ2lu YWwgYXJyYXkgZGF0YVxuXAotK2luIGl0cyBleGlzdGluZyBsb2NhdGlvbikgb3IgdGhlIG9yaWdp bmFsIGRhdGEgY2FuIGJlIHJlcGFja2VkIChjb3BpZWQpIHRvIGFcblwKLStuZXcgbG9jYXRpb24u XG5cCi0rXG5cCi0rV2hlbiB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkgc2xpY2UgaXMgY29udGln dW91cyB3aXRoaW4gdGhlIG9yaWdpbmFsIGFycmF5XG5cCi0rdGhlbiB0aGUgcmVzdWx0IHdpbGwg bmV2ZXIgYmUgcmVwYWNrZWQsIGJ1dCB3aGVuIHRoZSBkYXRhIGZvciB0aGUgbmV3IGFycmF5XG5c Ci0raXMgbm9uLWNvbnRpZ3VvdXMgd2l0aGluIHRoZSBvcmlnaW5hbCBhcnJheSByZXBhY2tpbmcg d2lsbCBvbmx5IGJlIHBlcmZvcm1lZFxuXAotK3doZW4gdGhpcyBzZXR0aW5nIGlzIG9uLiIpLAot KwkJCSAgIE5VTEwsCi0rCQkJICAgc2hvd19yZXBhY2tfYXJyYXlfc2xpY2VzLAotKwkJCSAgICZz ZXRfZm9ydHJhbl9saXN0LCAmc2hvd19mb3J0cmFuX2xpc3QpOwotKwotKyAgLyogRGVidWcgRm9y dHJhbidzIGFycmF5IHNsaWNpbmcgbG9naWMuICAqLwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9j bWQgKCJmb3J0cmFuLWFycmF5LXNsaWNpbmciLCBjbGFzc19tYWludGVuYW5jZSwKLSsJCQkgICAm Zm9ydHJhbl9hcnJheV9zbGljaW5nX2RlYnVnLCBfKCJcCi0rU2V0IGRlYnVnZ2luZyBvZiBGb3J0 cmFuIGFycmF5IHNsaWNpbmcuIiksIF8oIlwKLStTaG93IGRlYnVnZ2luZyBvZiBGb3J0cmFuIGFy cmF5IHNsaWNpbmcuIiksIF8oIlwKLStXaGVuIG9uLCBkZWJ1Z2dpbmcgb2YgRm9ydHJhbiBhcnJh eSBzbGljaW5nIGlzIGVuYWJsZWQuIiksCi0rCQkJICAgIE5VTEwsCi0rCQkJICAgIHNob3dfZm9y dHJhbl9hcnJheV9zbGljaW5nX2RlYnVnLAotKwkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2Rl YnVnbGlzdCk7Ci0gfQotIAotIC8qIFNlZSBmLWxhbmcuaC4gICovCi1AQCAtMTA3NCwzICsxNTcx LDU2IEBAIGZvcnRyYW5fcHJlc2VydmVfYXJnX3BvaW50ZXIgKHN0cnVjdCB2YWx1ZSAqYXJnLCBz dHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgcmV0dXJuIHZhbHVlX3R5cGUgKGFyZyk7Ci0gICByZXR1 cm4gdHlwZTsKLSB9Ci0rCi0rLyogU2VlIGYtbGFuZy5oLiAgKi8KLSsKLStDT1JFX0FERFIKLStm b3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2VfYWRkcmVzc19oYWNrIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKLSsJCQkJCQlDT1JFX0FERFIgYWRkcmVzcykKLSt7Ci0rICBnZGJfYXNzZXJ0ICh0 eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9BUlJBWSk7Ci0rCi0rICBpbnQgbmRpbWVuc2lvbnMg PSBjYWxjX2Y3N19hcnJheV9kaW1zICh0eXBlKTsKLSsgIExPTkdFU1QgdG90YWxfb2Zmc2V0ID0g MDsKLSsKLSsgIC8qIFdhbGsgdGhyb3VnaCBlYWNoIG9mIHRoZSBkaW1lbnNpb25zIG9mIHRoaXMg YXJyYXkgdHlwZSBhbmQgZmlndXJlIG91dAotKyAgICAgaWYgYW55IG9mIHRoZSBkaW1lbnNpb25z IGFyZSAiYmFja3dhcmRzIiwgdGhhdCBpcyB0aGUgYmFzZSBhZGRyZXNzCi0rICAgICBmb3IgdGhp cyBkaW1lbnNpb24gcG9pbnRzIHRvIHRoZSBlbGVtZW50IGF0IHRoZSBoaWdoZXN0IG1lbW9yeQot KyAgICAgYWRkcmVzcyBhbmQgdGhlIHN0cmlkZSBpcyBuZWdhdGl2ZS4gICovCi0rICBzdHJ1Y3Qg dHlwZSAqdG1wX3R5cGUgPSB0eXBlOwotKyAgZm9yIChpbnQgaSA9IDAgOyBpIDwgbmRpbWVuc2lv bnM7ICsraSkKLSsgICAgewotKyAgICAgIC8qIEdyYWIgdGhlIHJhbmdlIGZvciB0aGlzIGRpbWVu c2lvbiBhbmQgZXh0cmFjdCB0aGUgbG93ZXIgYW5kIHVwcGVyCi0rCSBib3VuZHMuICAqLwotKyAg ICAgIHRtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAodG1wX3R5cGUpOwotKyAgICAgIHN0cnVjdCB0 eXBlICpyYW5nZV90eXBlID0gdG1wX3R5cGUtPmluZGV4X3R5cGUgKCk7Ci0rICAgICAgTE9OR0VT VCBsb3dlcmJvdW5kLCB1cHBlcmJvdW5kLCBzdHJpZGU7Ci0rICAgICAgaWYgKCFnZXRfZGlzY3Jl dGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpKQotKwllcnJv ciAoImZhaWxlZCB0byBnZXQgcmFuZ2UgYm91bmRzIik7Ci0rCi0rICAgICAgLyogRmlndXJlIG91 dCB0aGUgc3RyaWRlIGZvciB0aGlzIGRpbWVuc2lvbi4gICovCi0rICAgICAgc3RydWN0IHR5cGUg KmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsK LSsgICAgICBzdHJpZGUgPSB0bXBfdHlwZS0+aW5kZXhfdHlwZSAoKS0+Ym91bmRzICgpLT5iaXRf c3RyaWRlICgpOwotKyAgICAgIGlmIChzdHJpZGUgPT0gMCkKLSsJc3RyaWRlID0gdHlwZV9sZW5n dGhfdW5pdHMgKGVsdF90eXBlKTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBzdHJ1Y3QgZ2RiYXJj aCAqYXJjaCA9IGdldF90eXBlX2FyY2ggKGVsdF90eXBlKTsKLSsJICBpbnQgdW5pdF9zaXplID0g Z2RiYXJjaF9hZGRyZXNzYWJsZV9tZW1vcnlfdW5pdF9zaXplIChhcmNoKTsKLSsJICBzdHJpZGUg Lz0gKHVuaXRfc2l6ZSAqIDgpOwotKwl9Ci0rCi0rICAgICAgLyogSWYgdGhpcyBkaW1lbnNpb24g aXMgImJhY2t3YXJkIiB0aGVuIGZpZ3VyZSBvdXQgdGhlIG9mZnNldAotKwkgYWRqdXN0bWVudCBy ZXF1aXJlZCB0byBwb2ludCB0byB0aGUgZWxlbWVudCBhdCB0aGUgbG93ZXN0IG1lbW9yeQotKwkg YWRkcmVzcywgYW5kIGFkZCB0aGlzIHRvIHRoZSB0b3RhbCBvZmZzZXQuICAqLwotKyAgICAgIExP TkdFU1Qgb2Zmc2V0ID0gMDsKLSsgICAgICBpZiAoc3RyaWRlIDwgMCAmJiBsb3dlcmJvdW5kIDwg dXBwZXJib3VuZCkKLSsJb2Zmc2V0ID0gKHVwcGVyYm91bmQgLSBsb3dlcmJvdW5kKSAqIHN0cmlk ZTsKLSsgICAgICB0b3RhbF9vZmZzZXQgKz0gb2Zmc2V0OwotKyAgICAgIHRtcF90eXBlID0gVFlQ RV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpOwotKyAgICB9Ci0rCi0rICAvKiBBZGp1c3QgdGhlIGFk ZHJlc3Mgb2YgdGhpcyBvYmplY3QgYW5kIHJldHVybiBpdC4gICovCi0rICBhZGRyZXNzICs9IHRv dGFsX29mZnNldDsKLSsgIHJldHVybiBhZGRyZXNzOwotK30KLWRpZmYgLS1naXQgYS9nZGIvZi1s YW5nLmggYi9nZGIvZi1sYW5nLmgKLS0tLSBhL2dkYi9mLWxhbmcuaAotKysrIGIvZ2RiL2YtbGFu Zy5oCi1AQCAtNjQsNyArNjQsNiBAQCBleHRlcm4gdm9pZCBmNzdfZ2V0X2R5bmFtaWNfYXJyYXlf bGVuZ3RoIChzdHJ1Y3QgdHlwZSAqKTsKLSAKLSBleHRlcm4gaW50IGNhbGNfZjc3X2FycmF5X2Rp bXMgKHN0cnVjdCB0eXBlICopOwotIAotLQotIC8qIEZvcnRyYW4gKEY3NykgdHlwZXMgKi8KLSAK LSBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUKLUBAIC0xMjIsNCArMTIxLDIyIEBAIGV4dGVybiBzdHJ1 Y3QgdmFsdWUgKmZvcnRyYW5fYXJndW1lbnRfY29udmVydCAoc3RydWN0IHZhbHVlICp2YWx1ZSwK LSBleHRlcm4gc3RydWN0IHR5cGUgKmZvcnRyYW5fcHJlc2VydmVfYXJnX3BvaW50ZXIgKHN0cnVj dCB2YWx1ZSAqYXJnLAotIAkJCQkJCSAgc3RydWN0IHR5cGUgKnR5cGUpOwotIAotKy8qIEZvcnRy YW4gYXJyYXlzIGNhbiBoYXZlIGEgbmVnYXRpdmUgc3RyaWRlLiAgV2hlbiB0aGlzIGhhcHBlbnMg aXQgaXMKLSsgICBvZnRlbiB0aGUgY2FzZSB0aGF0IHRoZSBiYXNlIGFkZHJlc3MgZm9yIGFuIG9i amVjdCBpcyBub3QgdGhlIGxvd2VzdAotKyAgIGFkZHJlc3Mgb2NjdXBpZWQgYnkgdGhhdCBvYmpl Y3QuICBGb3IgZXhhbXBsZSwgYW4gYXJyYXkgc2xpY2UgKDEwOjE6LTEpCi0rICAgd2lsbCBiZSBl bmNvZGVkIHdpdGggbG93ZXIgYm91bmQgMSwgdXBwZXIgYm91bmQgMTAsIGEgc3RyaWRlIG9mCi0r ICAgLUVMRU1FTlRfU0laRSwgYW5kIGhhdmUgYSBiYXNlIGFkZHJlc3MgcG9pbnRlciB0aGF0IHBv aW50cyBhdCB0aGUKLSsgICBlbGVtZW50IHdpdGggdGhlIGhpZ2hlc3QgYWRkcmVzcyBpbiBtZW1v cnkuCi0rCi0rICAgVGhpcyByZWFsbHkgZG9lc24ndCBwbGF5IHdlbGwgd2l0aCBvdXIgY3VycmVu dCBtb2RlbCBvZiB2YWx1ZSBjb250ZW50cywKLSsgICBidXQgY291bGQgZWFzaWx5IHJlcXVpcmUg YSBzaWduaWZpY2FudCB1cGRhdGUgaW4gb3JkZXIgdG8gYmUgc3VwcG9ydGVkCi0rICAgImNvcnJl Y3RseSIuCi0rCi0rICAgRm9yIG5vdywgd2UgbWFudWFsbHkgZm9yY2UgdGhlIGJhc2UgYWRkcmVz cyB0byBiZSB0aGUgbG93ZXN0IGFkZHJlc3NlZAotKyAgIGVsZW1lbnQgaGVyZS4gIFllcywgdGhp cyB3aWxsIGJyZWFrIHNvbWUgdGhpbmdzLCBidXQgaXQgZml4ZXMgb3RoZXIKLSsgICB0aGluZ3Mu ICBUaGUgaG9wZSBpcyB0aGF0IGl0IGZpeGVzIG1vcmUgdGhhbiBpdCBicmVha3MuICAqLwotKwot K2V4dGVybiBDT1JFX0FERFIgZm9ydHJhbl9hZGp1c3RfZHluYW1pY19hcnJheV9iYXNlX2FkZHJl c3NfaGFjawotKwkoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyZXNzKTsKLSsKLSAj ZW5kaWYgLyogRl9MQU5HX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvZi12YWxwcmludC5jIGIvZ2Ri L2YtdmFscHJpbnQuYwotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysrIGIvZ2RiL2YtdmFscHJp bnQuYwotQEAgLTM1LDYgKzM1LDcgQEAKLSAjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgotICNpbmNs dWRlICJjbGkvY2xpLXN0eWxlLmgiCi0gI2luY2x1ZGUgImdkYmFyY2guaCIKLSsjaW5jbHVkZSAi Zi1hcnJheS13YWxrZXIuaCIKLSAKLSBzdGF0aWMgdm9pZCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3Ro X29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKik7Ci0gCi1AQCAtMTAwLDEwMCArMTAxLDEwMyBA QCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnR5cGUp Ci0gICAgICogVFlQRV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKSk7Ci0gfQotIAotLS8qIEFjdHVhbCBmdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IEY3NyBh cnJheXMsIFZhbGFkZHIgPT0gYWRkcmVzcyBpbiAKLS0gICB0aGUgc3VwZXJpb3IuICBBZGRyZXNz ID09IHRoZSBhZGRyZXNzIGluIHRoZSBpbmZlcmlvci4gICovCi0rLyogQSBjbGFzcyB1c2VkIGJ5 IEZPUlRSQU5fUFJJTlRfQVJSQVkgYXMgYSBzcGVjaWFsaXNhdGlvbiBvZiB0aGUgYXJyYXkKLSsg ICB3YWxraW5nIHRlbXBsYXRlLiAgVGhpcyBzcGVjaWFsaXNhdGlvbiBwcmludHMgRm9ydHJhbiBh cnJheXMuICAqLwotIAotLXN0YXRpYyB2b2lkCi0tZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3Ms IGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCi0tCQkgICBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKLS0JCSAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNz LAotLQkJICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi0tCQkgICBjb25z dCBzdHJ1Y3QgdmFsdWUgKnZhbCwKLS0JCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRp b25zICpvcHRpb25zLAotLQkJICAgaW50ICplbHRzKQotK2NsYXNzIGZvcnRyYW5fYXJyYXlfcHJp bnRlcl9pbXBsIDogcHVibGljIGZvcnRyYW5fYXJyYXlfd2Fsa2VyX2Jhc2VfaW1wbAotIHsKLS0g IHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSktPmluZGV4X3R5 cGUgKCk7Ci0tICBDT1JFX0FERFIgYWRkciA9IGFkZHJlc3MgKyBlbWJlZGRlZF9vZmZzZXQ7Ci0t ICBMT05HRVNUIGxvd2VyYm91bmQsIHVwcGVyYm91bmQ7Ci0tICBMT05HRVNUIGk7Ci0tCi0tICBn ZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQp OwotLQotLSAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKLS0gICAgewotLSAgICAgIHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7Ci0tICAgICAgc2l6ZV90IGRp bV9zaXplID0gdHlwZV9sZW5ndGhfdW5pdHMgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLS0g ICAgICBpbnQgdW5pdF9zaXplID0gZ2RiYXJjaF9hZGRyZXNzYWJsZV9tZW1vcnlfdW5pdF9zaXpl IChnZGJhcmNoKTsKLS0gICAgICBzaXplX3QgYnl0ZV9zdHJpZGUgPSB0eXBlLT5iaXRfc3RyaWRl ICgpIC8gKHVuaXRfc2l6ZSAqIDgpOwotLSAgICAgIGlmIChieXRlX3N0cmlkZSA9PSAwKQotLQli eXRlX3N0cmlkZSA9IGRpbV9zaXplOwotLSAgICAgIHNpemVfdCBvZmZzID0gMDsKLS0KLS0gICAg ICBmb3IgKGkgPSBsb3dlcmJvdW5kOwotLQkgICAoaSA8IHVwcGVyYm91bmQgKyAxICYmICgqZWx0 cykgPCBvcHRpb25zLT5wcmludF9tYXgpOwotLQkgICBpKyspCi0tCXsKLS0JICBzdHJ1Y3QgdmFs dWUgKnN1YmFycmF5ID0gdmFsdWVfZnJvbV9jb250ZW50c19hbmRfYWRkcmVzcwotLQkgICAgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpLCB2YWx1ZV9jb250ZW50c19mb3JfcHJpbnRpbmdfY29uc3Qg KHZhbCkKLS0JICAgICArIG9mZnMsIGFkZHIgKyBvZmZzKTsKLS0KLS0JICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIoIik7Ci0tCSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyArIDEsIG5kaW1l bnNpb25zLCB2YWx1ZV90eXBlIChzdWJhcnJheSksCi0tCQkJICAgICB2YWx1ZV9jb250ZW50c19m b3JfcHJpbnRpbmcgKHN1YmFycmF5KSwKLS0JCQkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAo c3ViYXJyYXkpLAotLQkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3ViYXJyYXkpLAotLQkJCSAgICAg c3RyZWFtLCByZWN1cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0cyk7Ci0tCSAgb2ZmcyArPSBi eXRlX3N0cmlkZTsKLS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7Ci0tCi0tCSAg aWYgKGkgPCB1cHBlcmJvdW5kKQotLQkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiICIp OwotLQl9Ci0tICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgdXBw ZXJib3VuZCkKLS0JZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0tICAgIH0KLS0g IGVsc2UKLS0gICAgewotLSAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7IGkgPCB1cHBlcmJvdW5k ICsgMSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OwotLQkgICBpKyssICgqZWx0cykr KykKLS0JewotLQkgIHN0cnVjdCB2YWx1ZSAqZWx0ID0gdmFsdWVfc3Vic2NyaXB0ICgoc3RydWN0 IHZhbHVlICopdmFsLCBpKTsKLS0KLS0JICBjb21tb25fdmFsX3ByaW50IChlbHQsIHN0cmVhbSwg cmVjdXJzZSwgb3B0aW9ucywgY3VycmVudF9sYW5ndWFnZSk7Ci0tCi0tCSAgaWYgKGkgIT0gdXBw ZXJib3VuZCkKLS0JICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7Ci0tCi0tCSAg aWYgKCgqZWx0cyA9PSBvcHRpb25zLT5wcmludF9tYXggLSAxKQotLQkgICAgICAmJiAoaSAhPSB1 cHBlcmJvdW5kKSkKLS0JICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwotLQl9 Ci0tICAgIH0KLS19Ci0rcHVibGljOgotKyAgLyogQ29uc3RydWN0b3IuICBUWVBFIGlzIHRoZSBh cnJheSB0eXBlIGJlaW5nIHByaW50ZWQsIEFERFJFU1MgaXMgdGhlCi0rICAgICBhZGRyZXNzIGlu IHRhcmdldCBtZW1vcnkgZm9yIHRoZSBvYmplY3Qgb2YgVFlQRSBiZWluZyBwcmludGVkLiAgVkFM IGlzCi0rICAgICB0aGUgR0RCIHZhbHVlIChvZiBUWVBFKSBiZWluZyBwcmludGVkLiAgU1RSRUFN IGlzIHdoZXJlIHRvIHByaW50IHRvLAotKyAgICAgUkVDT1VSU0UgaXMgcGFzc2VkIHRocm91Z2gg KGFuZCBwcmV2ZW50cyBpbmZpbml0ZSByZWN1cnNpb24pLCBhbmQKLSsgICAgIE9QVElPTlMgYXJl IHRoZSBwcmludGluZyBjb250cm9sIG9wdGlvbnMuICAqLwotKyAgZXhwbGljaXQgZm9ydHJhbl9h cnJheV9wcmludGVyX2ltcGwgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCQkgICAgICAgQ09SRV9B RERSIGFkZHJlc3MsCi0rCQkJCSAgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbCwKLSsJCQkJICAgICAg IHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCi0rCQkJCSAgICAgICBpbnQgcmVjdXJzZSwKLSsJCQkJ ICAgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotKyAgICA6 IG1fZWx0cyAoMCksCi0rICAgICAgbV92YWwgKHZhbCksCi0rICAgICAgbV9zdHJlYW0gKHN0cmVh bSksCi0rICAgICAgbV9yZWN1cnNlIChyZWN1cnNlKSwKLSsgICAgICBtX29wdGlvbnMgKG9wdGlv bnMpCi0rICB7IC8qIE5vdGhpbmcuICAqLyB9Ci0rCi0rICAvKiBDYWxsZWQgd2hpbGUgaXRlcmF0 aW5nIG92ZXIgdGhlIGFycmF5IGJvdW5kcy4gIFdoZW4gU0hPVUxEX0NPTlRJTlVFIGlzCi0rICAg ICBmYWxzZSB0aGVuIHdlIG11c3QgcmV0dXJuIGZhbHNlLCBhcyB3ZSBoYXZlIHJlYWNoZWQgdGhl IGVuZCBvZiB0aGUKLSsgICAgIGFycmF5IGJvdW5kcyBmb3IgdGhpcyBkaW1lbnNpb24uICBIb3dl dmVyLCB3ZSBhbHNvIHJldHVybiBmYWxzZSBpZiB3ZQotKyAgICAgaGF2ZSBwcmludGVkIHRvbyBt YW55IGVsZW1lbnRzIChhZnRlciBwcmludGluZyAnLi4uJykuICBJbiBhbGwgb3RoZXIKLSsgICAg IGNhc2VzLCByZXR1cm4gdHJ1ZS4gICovCi0rICBib29sIGNvbnRpbnVlX3dhbGtpbmcgKGJvb2wg c2hvdWxkX2NvbnRpbnVlKQotKyAgewotKyAgICBib29sIGNvbnQgPSBzaG91bGRfY29udGludWUg JiYgKG1fZWx0cyA8IG1fb3B0aW9ucy0+cHJpbnRfbWF4KTsKLSsgICAgaWYgKCFjb250ICYmIHNo b3VsZF9jb250aW51ZSkKLSsgICAgICBmcHV0c19maWx0ZXJlZCAoIi4uLiIsIG1fc3RyZWFtKTsK LSsgICAgcmV0dXJuIGNvbnQ7Ci0rICB9Ci0rCi0rICAvKiBDYWxsZWQgd2hlbiB3ZSBzdGFydCBp dGVyYXRpbmcgb3ZlciBhIGRpbWVuc2lvbi4gIElmIGl0J3Mgbm90IHRoZQotKyAgICAgaW5uZXIg bW9zdCBkaW1lbnNpb24gdGhlbiBwcmludCBhbiBvcGVuaW5nICcoJyBjaGFyYWN0ZXIuICAqLwot KyAgdm9pZCBzdGFydF9kaW1lbnNpb24gKGJvb2wgaW5uZXJfcCkKLSsgIHsKLSsgICAgZnB1dHNf ZmlsdGVyZWQgKCIoIiwgbV9zdHJlYW0pOwotKyAgfQotKwotKyAgLyogQ2FsbGVkIHdoZW4gd2Ug ZmluaXNoIHByb2Nlc3NpbmcgYSBiYXRjaCBvZiBpdGVtcyB3aXRoaW4gYSBkaW1lbnNpb24KLSsg ICAgIG9mIHRoZSBhcnJheS4gIERlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgdGhlIGlubmVy IG1vc3QgZGltZW5zaW9uCi0rICAgICBvciBub3Qgd2UgcHJpbnQgZGlmZmVyZW50IHRoaW5ncywg YnV0IHRoaXMgaXMgYWxsIGFib3V0IGFkZGluZwotKyAgICAgc2VwYXJhdG9ycyBiZXR3ZWVuIGVs ZW1lbnRzLCBhbmQgZGltZW5zaW9ucyBvZiB0aGUgYXJyYXkuICAqLwotKyAgdm9pZCBmaW5pc2hf ZGltZW5zaW9uIChib29sIGlubmVyX3AsIGJvb2wgbGFzdF9wKQotKyAgewotKyAgICBmcHV0c19m aWx0ZXJlZCAoIikiLCBtX3N0cmVhbSk7Ci0rICAgIGlmICghbGFzdF9wKQotKyAgICAgIGZwdXRz X2ZpbHRlcmVkICgiICIsIG1fc3RyZWFtKTsKLSsgIH0KLSsKLSsgIC8qIENhbGxlZCB0byBwcm9j ZXNzIGFuIGVsZW1lbnQgb2YgRUxUX1RZUEUgYXQgb2Zmc2V0IEVMVF9PRkYgZnJvbSB0aGUKLSsg ICAgIHN0YXJ0IG9mIHRoZSBwYXJlbnQgb2JqZWN0LiAgKi8KLSsgIHZvaWQgcHJvY2Vzc19lbGVt ZW50IChzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUsIExPTkdFU1QgZWx0X29mZiwgYm9vbCBsYXN0X3Ap Ci0rICB7Ci0rICAgIC8qIEV4dHJhY3QgdGhlIGVsZW1lbnQgdmFsdWUgZnJvbSB0aGUgcGFyZW50 IHZhbHVlLiAgKi8KLSsgICAgc3RydWN0IHZhbHVlICplX3ZhbAotKyAgICAgID0gdmFsdWVfZnJv bV9jb21wb25lbnQgKG1fdmFsLCBlbHRfdHlwZSwgZWx0X29mZik7Ci0rICAgIGNvbW1vbl92YWxf cHJpbnQgKGVfdmFsLCBtX3N0cmVhbSwgbV9yZWN1cnNlLCBtX29wdGlvbnMsIGN1cnJlbnRfbGFu Z3VhZ2UpOwotKyAgICBpZiAoIWxhc3RfcCkKLSsgICAgICBmcHV0c19maWx0ZXJlZCAoIiwgIiwg bV9zdHJlYW0pOwotKyAgICArK21fZWx0czsKLSsgIH0KLSsKLStwcml2YXRlOgotKyAgLyogVGhl IG51bWJlciBvZiBlbGVtZW50cyBwcmludGVkIHNvIGZhci4gICovCi0rICBpbnQgbV9lbHRzOwot KwotKyAgLyogVGhlIHZhbHVlIGZyb20gd2hpY2ggd2UgYXJlIHByaW50aW5nIGVsZW1lbnRzLiAg Ki8KLSsgIHN0cnVjdCB2YWx1ZSAqbV92YWw7Ci0rCi0rICAvKiBUaGUgc3RyZWFtIHdlIHNob3Vs ZCBwcmludCB0b28uICAqLwotKyAgc3RydWN0IHVpX2ZpbGUgKm1fc3RyZWFtOwotKwotKyAgLyog VGhlIHJlY3Vyc2lvbiBjb3VudGVyLCBwYXNzZWQgdGhyb3VnaCB3aGVuIHdlIHByaW50IGVhY2gg ZWxlbWVudC4gICovCi0rICBpbnQgbV9yZWN1cnNlOwotKwotKyAgLyogVGhlIHByaW50IGNvbnRy b2wgb3B0aW9ucy4gIEdpdmVzIHVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0bwot KyAgICAgcHJpbnQsIGFuZCBpcyBwYXNzZWQgdGhyb3VnaCB0byBlYWNoIGVsZW1lbnQgdGhhdCB3 ZSBwcmludC4gICovCi0rICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqbV9vcHRp b25zID0gbnVsbHB0cjsKLSt9OwotIAotLS8qIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgdG8g cHJpbnQgYW4gRjc3IGFycmF5LCB3ZSBzZXQgdXAgc29tZSAKLS0gICBzdHVmZiBhbmQgdGhlbiBp bW1lZGlhdGVseSBjYWxsIGY3N19wcmludF9hcnJheV8xKCkuICAqLwotKy8qIFRoaXMgZnVuY3Rp b24gZ2V0cyBjYWxsZWQgdG8gcHJpbnQgYSBGb3J0cmFuIGFycmF5LiAgKi8KLSAKLSBzdGF0aWMg dm9pZAotLWY3N19wcmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAotLQkJIGludCBlbWJlZGRlZF9vZmZzZXQsCi0tCQkgQ09SRV9BRERSIGFkZHJl c3MsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCi0tCQkgaW50IHJlY3Vyc2UsCi0tCQkgY29uc3Qg c3RydWN0IHZhbHVlICp2YWwsCi0tCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMg Km9wdGlvbnMpCi0rZm9ydHJhbl9wcmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVf QUREUiBhZGRyZXNzLAotKwkJICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJz ZSwKLSsJCSAgICAgY29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi0rCQkgICAgIGNvbnN0IHN0cnVj dCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotIHsKLS0gIGludCBuZGltZW5zaW9uczsK LS0gIGludCBlbHRzID0gMDsKLS0KLS0gIG5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGlt cyAodHlwZSk7Ci0tCi0tICBpZiAobmRpbWVuc2lvbnMgPiBNQVhfRk9SVFJBTl9ESU1TIHx8IG5k aW1lbnNpb25zIDwgMCkKLS0gICAgZXJyb3IgKF8oIlwKLS1UeXBlIG5vZGUgY29ycnVwdCEgRjc3 IGFycmF5cyBjYW5ub3QgaGF2ZSAlZCBzdWJzY3JpcHRzICglZCBNYXgpIiksCi0tCSAgIG5kaW1l bnNpb25zLCBNQVhfRk9SVFJBTl9ESU1TKTsKLS0KLS0gIGY3N19wcmludF9hcnJheV8xICgxLCBu ZGltZW5zaW9ucywgdHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LAotLQkJICAgICBhZGRy ZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0aW9ucywgJmVsdHMpOwotKyAgZm9ydHJhbl9h cnJheV93YWxrZXI8Zm9ydHJhbl9hcnJheV9wcmludGVyX2ltcGw+IHAKLSsgICAgKHR5cGUsIGFk ZHJlc3MsIChzdHJ1Y3QgdmFsdWUgKikgdmFsLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOwot KyAgcC53YWxrICgpOwotIH0KLSAMCi0gCi1AQCAtMjM2LDEyICsyNDAsNyBAQCBmX3ZhbHVlX3By aW50X2lubmVyIChzdHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IHJlY3Vyc2UsCi0gCi0gICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgotICAgICAgIGlmIChUWVBF X1RBUkdFVF9UWVBFICh0eXBlKS0+Y29kZSAoKSAhPSBUWVBFX0NPREVfQ0hBUikKLS0JewotLQkg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIigiKTsKLS0JICBmNzdfcHJpbnRfYXJyYXkgKHR5 cGUsIHZhbGFkZHIsIDAsCi0tCQkJICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9w dGlvbnMpOwotLQkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKLS0JfQotKwlmb3J0 cmFuX3ByaW50X2FycmF5ICh0eXBlLCBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0 aW9ucyk7Ci0gICAgICAgZWxzZQotIAl7Ci0gCSAgc3RydWN0IHR5cGUgKmNoX3R5cGUgPSBUWVBF X1RBUkdFVF9UWVBFICh0eXBlKTsKLWRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9n ZGJ0eXBlcy5jCi0tLS0gYS9nZGIvZ2RidHlwZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBA IC0zOSw2ICszOSw3IEBACi0gI2luY2x1ZGUgImR3YXJmMi9sb2MuaCIKLSAjaW5jbHVkZSAiZ2Ri Y29yZS5oIgotICNpbmNsdWRlICJmbG9hdGZvcm1hdC5oIgotKyNpbmNsdWRlICJmLWxhbmcuaCIK LSAjaW5jbHVkZSA8YWxnb3JpdGhtPgotIAotIC8qIEluaXRpYWxpemUgQkFETkVTUyBjb25zdGFu dHMuICAqLwotQEAgLTI2OTUsNyArMjY5NiwxNiBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZV9pbnRl cm5hbCAoc3RydWN0IHR5cGUgKnR5cGUsCi0gICBwcm9wID0gVFlQRV9EQVRBX0xPQ0FUSU9OIChy ZXNvbHZlZF90eXBlKTsKLSAgIGlmIChwcm9wICE9IE5VTEwKLSAgICAgICAmJiBkd2FyZjJfZXZh bHVhdGVfcHJvcGVydHkgKHByb3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1ZSkpCi0tICAgIHBy b3AtPnNldF9jb25zdF92YWwgKHZhbHVlKTsKLSsgICAgewotKyAgICAgIC8qIFN0YXJ0IG9mIEZv cnRyYW4gaGFjay4gIFNlZSBjb21tZW50IGluIGYtbGFuZy5oIGZvciB3aGF0IGlzIGdvaW5nCi0r CSBvbiBoZXJlLiovCi0rICAgICAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09 IGxhbmd1YWdlX2ZvcnRyYW4KLSsJICAmJiByZXNvbHZlZF90eXBlLT5jb2RlICgpID09IFRZUEVf Q09ERV9BUlJBWSkKLSsJdmFsdWUgPSBmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2Vf YWRkcmVzc19oYWNrIChyZXNvbHZlZF90eXBlLAotKwkJCQkJCQkJdmFsdWUpOwotKyAgICAgIC8q IEVuZCBvZiBGb3J0cmFuIGhhY2suICAqLwotKyAgICAgIHByb3AtPnNldF9jb25zdF92YWwgKHZh bHVlKTsKLSsgICAgfQotIAotICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7Ci0gfQotQEAgLTM2MDAs OSArMzYxMCwxMSBAQCBpc19zY2FsYXJfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0KQot ICAgICAgIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwotICAgICAgIHN0cnVjdCB0eXBl ICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHQpKTsKLSAKLS0g ICAgICBnZXRfZGlzY3JldGVfYm91bmRzICh0LT5pbmRleF90eXBlICgpLCAmbG93X2JvdW5kLCAm aGlnaF9ib3VuZCk7Ci0tCi0tICAgICAgcmV0dXJuIGhpZ2hfYm91bmQgPT0gbG93X2JvdW5kICYm IGlzX3NjYWxhcl90eXBlX3JlY3Vyc2l2ZSAoZWx0X3R5cGUpOwotKyAgICAgIGlmIChnZXRfZGlz Y3JldGVfYm91bmRzICh0LT5pbmRleF90eXBlICgpLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkp Ci0rCXJldHVybiAoaGlnaF9ib3VuZCA9PSBsb3dfYm91bmQKLSsJICAgICAgICAmJiBpc19zY2Fs YXJfdHlwZV9yZWN1cnNpdmUgKGVsdF90eXBlKSk7Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gMDsK LSAgICAgfQotICAgLyogQXJlIHdlIGRlYWxpbmcgd2l0aCBhIHN0cnVjdCB3aXRoIG9uZSBlbGVt ZW50PyAgKi8KLSAgIGVsc2UgaWYgKHQtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX1NUUlVDVCAmJiB0 LT5udW1fZmllbGRzICgpID09IDEpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9hcnJheS1zbGljZXMtYmFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJy YXktc2xpY2VzLWJhZC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi1AQCAt MCwwICsxLDY5IEBACi0rIyBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsj IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0 YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gLgotKwotKyMgVGVzdCBpbnZh bGlkIGVsZW1lbnQgYW5kIHNsaWNlIGFycmF5IGFjY2Vzc2VzLgotKwotK2lmIHtbc2tpcF9mb3J0 cmFuX3Rlc3RzXX0geyByZXR1cm4gLTEgfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgot K2xvYWRfbGliIGZvcnRyYW4uZXhwCi0rCi0raWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVz dGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsJIHtkZWJ1ZyBmOTB9XX0gewot KyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSsgICAg dW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwot KyMgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgTWVzc2FnZSBC cmVha3BvaW50Il0KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmlyc3Qg QnJlYWtwb2ludCJdCi0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIlNlY29u ZCBCcmVha3BvaW50Il0KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmlu YWwgQnJlYWtwb2ludCJdCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkZpcnN0IEJy ZWFrcG9pbnQiCi0rCi0rIyBBY2Nlc3Mgbm90IHlldCBhbGxvY2F0ZWQgYXJyYXkuCi0rZ2RiX3Rl c3QgInByaW50IG90aGVyIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IgotK2dkYl90ZXN0ICJwcmludCBv dGhlcigwOjQsMjozKSIgImFycmF5IG5vdCBhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IG90 aGVyKDEsMSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcKHZlY3RvciBub3QgYWxsb2NhdGVk XFwpIgotKwotKyMgQWNjZXNzIG5vdCB5ZXQgYXNzb2NpYXRlZCBwb2ludGVyLgotK2dkYl90ZXN0 ICJwcmludCBwb2ludGVyMmQiICIgPSA8bm90IGFzc29jaWF0ZWQ+IgotK2dkYl90ZXN0ICJwcmlu dCBwb2ludGVyMmQoMToyLDE6MikiICJhcnJheSBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAi cHJpbnQgcG9pbnRlcjJkKDEsMSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcKHZlY3RvciBu b3QgYXNzb2NpYXRlZFxcKSIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiU2Vjb25k IEJyZWFrcG9pbnQiCi0rCi0rIyBBY2Nlc3NpbmcganVzdCBvdXRzaWRlIHRoZSBhcnJheXMuCi0r Zm9yZWFjaCBuYW1lIHthcnJheSBwb2ludGVyMmQgb3RoZXJ9IHsKLSsgICAgZ2RiX3Rlc3QgInBy aW50ICRuYW1lICgwOiw6KSIgImFycmF5IHN1YnNjcmlwdCBvdXQgb2YgYm91bmRzIgotKyAgICBn ZGJfdGVzdCAicHJpbnQgJG5hbWUgKDoxMSw6KSIgImFycmF5IHN1YnNjcmlwdCBvdXQgb2YgYm91 bmRzIgotKyAgICBnZGJfdGVzdCAicHJpbnQgJG5hbWUgKDosMDopIiAiYXJyYXkgc3Vic2NyaXB0 IG91dCBvZiBib3VuZHMiCi0rICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSAoOiw6MTEpIiAiYXJy YXkgc3Vic2NyaXB0IG91dCBvZiBib3VuZHMiCi0rCi0rICAgIGdkYl90ZXN0ICJwcmludCAkbmFt ZSAoMCw6KSIgIm5vIHN1Y2ggdmVjdG9yIGVsZW1lbnQiCi0rICAgIGdkYl90ZXN0ICJwcmludCAk bmFtZSAoMTEsOikiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IgotKyAgICBnZGJfdGVzdCAicHJp bnQgJG5hbWUgKDosMCkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IgotKyAgICBnZGJfdGVzdCAi cHJpbnQgJG5hbWUgKDosMTEpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIKLSt9Ci0rCi0rIyBT dHJpZGUgaW4gdGhlIHdyb25nIGRpcmVjdGlvbi4KLStnZGJfdGVzdCAicHJpbnQgYXJyYXkgKDE6 MTA6LTEsOikiICJpbmNvcnJlY3Qgc3RyaWRlIGFuZCBib3VuZGFyeSBjb21iaW5hdGlvbiIKLStn ZGJfdGVzdCAicHJpbnQgYXJyYXkgKDosMToxMDotMSkiICJpbmNvcnJlY3Qgc3RyaWRlIGFuZCBi b3VuZGFyeSBjb21iaW5hdGlvbiIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkgKDEwOjE6MSw6KSIg ImluY29ycmVjdCBzdHJpZGUgYW5kIGJvdW5kYXJ5IGNvbWJpbmF0aW9uIgotK2dkYl90ZXN0ICJw cmludCBhcnJheSAoOiwxMDoxOjEpIiAiaW5jb3JyZWN0IHN0cmlkZSBhbmQgYm91bmRhcnkgY29t YmluYXRpb24iCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1z bGljZXMtYmFkLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJh ZC5mOTAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZjkwCi1AQCAtMCwwICsxLDQyIEBA Ci0rISBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0r ISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQot KyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyEKLSshIFN0YXJ0IG9mIHRlc3QgcHJv Z3JhbS4KLSshCi0rcHJvZ3JhbSB0ZXN0Ci0rCi0rICAhIERlY2xhcmUgdmFyaWFibGVzIHVzZWQg aW4gdGhpcyB0ZXN0LgotKyAgaW50ZWdlciwgZGltZW5zaW9uICgxOjEwLDE6MTApIDo6IGFycmF5 Ci0rICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBvdGhlciAoOiwgOikKLSsgIGludGVnZXIsIGRp bWVuc2lvbig6LDopLCBwb2ludGVyIDo6IHBvaW50ZXIyZCA9PiBudWxsKCkKLSsgIGludGVnZXIs IGRpbWVuc2lvbigxOjEwLDE6MTApLCB0YXJnZXQgOjogdGFycmF5Ci0rCi0rICBwcmludCAqLCAi IiAhIEZpcnN0IEJyZWFrcG9pbnQuCi0rCi0rICAhIEFsbG9jYXRlIG9yIGFzc29jaWF0ZSBhbnkg dmFyaWFibGVzIGFzIG5lZWRlZC4KLSsgIGFsbG9jYXRlIChvdGhlciAoMToxMCwgMToxMCkpCi0r ICBwb2ludGVyMmQgPT4gdGFycmF5Ci0rICBhcnJheSA9IDAKLSsKLSsgIHByaW50ICosICIiICEg U2Vjb25kIEJyZWFrcG9pbnQuCi0rCi0rICAhIEFsbCBkb25lLiAgRGVhbGxvY2F0ZS4KLSsgIGRl YWxsb2NhdGUgKG90aGVyKQotKwotKyAgISBHREIgY2F0Y2hlcyB0aGlzIGZpbmFsIGJyZWFrcG9p bnQgdG8gaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgdGVzdC4KLSsgIHByaW50ICosICIiICEgRmlu YWwgQnJlYWtwb2ludC4KLSsKLStlbmQgcHJvZ3JhbSB0ZXN0Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmV4cAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vYXJyYXktc2xpY2VzLXN1Yi1zbGljZXMuZXhwCi1AQCAtMCwwICsxLDExMSBAQAotKyMgQ29w eXJpZ2h0IDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+IC4KLSsKLSsjIENyZWF0ZSBhIHNsaWNlIG9mIGFuIGFycmF5LCB0 aGVuIHRha2UgYSBzbGljZSBvZiB0aGF0IHNsaWNlLgotKwotK2lmIHtbc2tpcF9mb3J0cmFuX3Rl c3RzXX0geyByZXR1cm4gLTEgfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotK2xvYWRf bGliIGZvcnRyYW4uZXhwCi0rCi0raWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9 LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsJIHtkZWJ1ZyBmOTB9XX0gewotKyAgICBy ZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSsgICAgdW50ZXN0 ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgTWVzc2FnZSBCcmVha3Bv aW50Il0KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiU3RvcCBIZXJlIl0K LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmluYWwgQnJlYWtwb2ludCJd Ci0rCi0rIyBXZSdyZSBnb2luZyB0byBwcmludCBzb21lIHJlYXNvbmFibHkgbGFyZ2UgYXJyYXlz LgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IHByaW50IGVsZW1lbnRzIHVubGltaXRlZCIKLSsK LStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiU3RvcCBIZXJlIgotKwotKyMgUHJpbnQgYSBz bGljZSwgY2FwdHVyZSB0aGUgY29udmVuaWVuY2UgdmFyaWFibGUgbmFtZSBjcmVhdGVkLgotK3Nl dCBjbWQgInByaW50IGFycmF5ICgxOjEwOjIsIDE6MTA6MikiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUg JGNtZCAkY21kIHsKLSsgICAgLXJlICJcclxuXFxcJChcXGQrKSA9IC4qXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJc2V0IHZhcm5hbWUgIlwkJGV4cGVjdF9vdXQoMSxzdHJpbmcpIgotKyAgICB9Ci0r fQotKwotKyMgTm93IGNoZWNrIHRoYXQgd2UgY2FuIGNvcnJlY3RseSBleHRyYWN0IGFsbCB0aGUg ZWxlbWVudHMgZnJvbSB0aGlzCi0rIyBzbGljZS4KLStmb3IgeyBzZXQgaiAxIH0geyAkaiA8IDYg fSB7IGluY3IgaiB9IHsKLSsgICAgZm9yIHsgc2V0IGkgMSB9IHsgJGkgPCA2IH0geyBpbmNyIGkg fSB7Ci0rCXNldCB2YWwgW2V4cHIgKCgoJGkgLSAxKSAqIDIpICsgKCgkaiAtIDEpICogMjApKSAr IDFdCi0rCWdkYl90ZXN0ICJwcmludCAke3Zhcm5hbWV9ICgkaSwkaikiICIgPSAkdmFsIgotKyAg ICB9Ci0rfQotKwotKyMgTm93IHRha2UgYSBzbGljZSBvZiB0aGUgc2xpY2UuCi0rZ2RiX3Rlc3Qg InByaW50ICR7dmFybmFtZX0gKDM6NSwgMzo1KSIgXAotKyAgICAiID0gXFwoXFwoNDUsIDQ3LCA0 OVxcKSBcXCg2NSwgNjcsIDY5XFwpIFxcKDg1LCA4NywgODlcXClcXCkiCi0rCi0rIyBOb3cgdGFr ZSBhIGRpZmZlcmVudCBzbGljZSBvZiBhIHNsaWNlLgotK3NldCBjbWQgInByaW50ICR7dmFybmFt ZX0gKDE6NToyLCAxOjU6MikiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkY21kIHsKLSsgICAg LXJlICJcclxuXFxcJChcXGQrKSA9IFxcKFxcKDEsIDUsIDlcXCkgXFwoNDEsIDQ1LCA0OVxcKSBc XCg4MSwgODUsIDg5XFwpXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0IHZhcm5hbWUgIlwk JGV4cGVjdF9vdXQoMSxzdHJpbmcpIgotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSt9 Ci0rCi0rIyBOb3cgdGFrZSBhIHNsaWNlIGZyb20gdGhlIHNsaWNlLCBvZiBhIHNsaWNlIQotK3Nl dCBjbWQgInByaW50ICR7dmFybmFtZX0gKDE6MzoyLCAxOjM6MikiCi0rZ2RiX3Rlc3RfbXVsdGlw bGUgJGNtZCAkY21kIHsKLSsgICAgLXJlICJcclxuXFxcJChcXGQrKSA9IFxcKFxcKDEsIDlcXCkg XFwoODEsIDg5XFwpXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0IHZhcm5hbWUgIlwkJGV4 cGVjdF9vdXQoMSxzdHJpbmcpIgotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSt9Ci0r Ci0rIyBBbmQgYWdhaW4hCi0rc2V0IGNtZCAicHJpbnQgJHt2YXJuYW1lfSAoMToyOjIsIDE6Mjoy KSIKLStnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRjbWQgewotKyAgICAtcmUgIlxyXG5cXFwkKFxc ZCspID0gXFwoXFwoMVxcKVxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNldCB2YXJuYW1lICJc JCRleHBlY3Rfb3V0KDEsc3RyaW5nKSIKLSsJcGFzcyAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0r fQotKwotKyMgVGVzdCB0YWtpbmcgYSBzbGljZSB3aXRoIHN0cmlkZSBvZiBhIHN0cmluZy4gIFRo aXMgaXNuJ3QgYWN0dWFsbHkKLSsjIHN1cHBvcnRlZCB3aXRoaW4gZ2ZvcnRyYW4gKGF0IGxlYXN0 KSwgYnV0IG5hdHVyYWxseSBkcm9wcyBvdXQgb2YgaG93Ci0rIyBHREIgbW9kZWxzIGFycmF5cyBh bmQgc3RyaW5ncyBpbiBhIHNpbWlsYXIgd2F5LCBzbyB3ZSBtYXkgYXMgd2VsbAotKyMgdGVzdCB0 aGF0IHRoaXMgaXMgc3RpbGwgd29ya2luZy4KLStnZGJfdGVzdCAicHJpbnQgc3RyICgxOjI2OjIp IiAiID0gJ2FjZWdpa21vcXN1d3knIgotK2dkYl90ZXN0ICJwcmludCBzdHIgKDI2OjE6LTEpIiAi ID0gJ3p5eHd2dXRzcnFwb25tbGtqaWhnZmVkY2JhJyIKLStnZGJfdGVzdCAicHJpbnQgc3RyICgy NjoxOi0yKSIgIiA9ICd6eHZ0cnBubGpoZmRiJyIKLSsKLSsjIE5vdyB0ZXN0IHRoZSBtZW1vcnkg cmVxdWlyZW1lbnRzIG9mIHRha2luZyBhIHNsaWNlIGZyb20gYW4gYXJyYXkuCi0rIyBUaGUgaWRl YSBpcyB0aGF0IHdlIHNob3VsZG4ndCByZXF1aXJlIG1vcmUgbWVtb3J5IHRvIGV4dHJhY3QgYSBz bGljZQotKyMgdGhhbiB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UuCi0rIwotKyMgVGhpcyB3aWxsIG9u bHkgd29yayBpZiBhcnJheSByZXBhY2tpbmcgaXMgdHVybmVkIG9uLCBvdGhlcndpc2UgR0RCCi0r IyB3aWxsIGNyZWF0ZSB0aGUgc2xpY2UgYnkgZ2VuZXJhdGluZyBhIG5ldyB0eXBlIHRoYXQgc2l0 cyBvdmVyIHRoZQotKyMgZXhpc3RpbmcgdmFsdWUgaW4gbWVtb3J5LgotK2dkYl90ZXN0X25vX291 dHB1dCAic2V0IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyBvbiIKLStzZXQgZWxlbWVudF9z aXplIFtnZXRfaW50ZWdlcl92YWx1ZW9mICJzaXplb2YgKGFycmF5ICgxLDEpKSIgInVua25vd24i XQotK3NldCBzbGljZV9zaXplIFtleHByICRlbGVtZW50X3NpemUgKiA0XQotK2dkYl90ZXN0X25v X291dHB1dCAic2V0IG1heC12YWx1ZS1zaXplICRzbGljZV9zaXplIgotK2dkYl90ZXN0ICJwcmlu dCBhcnJheSAoMToyLCAxOjIpIiAiPSBcXChcXCgxLCAyXFwpIFxcKDExLCAxMlxcKVxcKSIKLStn ZGJfdGVzdCAicHJpbnQgYXJyYXkgKDI6MywgMjozKSIgIj0gXFwoXFwoMTIsIDEzXFwpIFxcKDIy LCAyM1xcKVxcKSIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkgKDI6NToyLCAyOjU6MikiICI9IFxc KFxcKDEyLCAxNFxcKSBcXCgzMiwgMzRcXClcXCkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5mOTAgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmY5MAotbmV3IGZpbGUgbW9kZSAx MDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJy YXktc2xpY2VzLXN1Yi1zbGljZXMuZjkwCi1AQCAtMCwwICsxLDk2IEBACi0rISBDb3B5cmlnaHQg MjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQot KyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsh IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgotKwotKyEKLSshIFN0YXJ0IG9mIHRlc3QgcHJvZ3JhbS4KLSshCi0rcHJv Z3JhbSB0ZXN0Ci0rICBpbnRlZ2VyLCBkaW1lbnNpb24gKDE6MTAsMToxMSkgOjogYXJyYXkKLSsg IGNoYXJhY3RlciAobGVuPTI2KSA6OiBzdHIgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoi Ci0rCi0rICBjYWxsIGZpbGxfYXJyYXlfMmQgKGFycmF5KQotKwotKyAgISBHREIgY2F0Y2hlcyB0 aGlzIGZpbmFsIGJyZWFrcG9pbnQgdG8gaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgdGVzdC4KLSsg IHByaW50ICosICIiICEgU3RvcCBIZXJlCi0rCi0rICBwcmludCAqLCBhcnJheQotKyAgcHJpbnQg Kiwgc3RyCi0rCi0rICAhIEdEQiBjYXRjaGVzIHRoaXMgZmluYWwgYnJlYWtwb2ludCB0byBpbmRp Y2F0ZSB0aGUgZW5kIG9mIHRoZSB0ZXN0LgotKyAgcHJpbnQgKiwgIiIgISBGaW5hbCBCcmVha3Bv aW50LgotKwotK2NvbnRhaW5zCi0rCi0rICAhIEZpbGwgYSAxRCBhcnJheSB3aXRoIGEgdW5pcXVl IHBvc2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgotKyAgc3Vicm91dGluZSBmaWxsX2Fy cmF5XzFkIChhcnJheSkKLSsgICAgaW50ZWdlciwgZGltZW5zaW9uICg6KSA6OiBhcnJheQotKyAg ICBpbnRlZ2VyIDo6IGNvdW50ZXIKLSsKLSsgICAgY291bnRlciA9IDEKLSsgICAgZG8gaj1MQk9V TkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKLSsgICAgICAgYXJyYXkgKGopID0g Y291bnRlcgotKyAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKLSsgICAgZW5kIGRvCi0rICBl bmQgc3Vicm91dGluZSBmaWxsX2FycmF5XzFkCi0rCi0rICAhIEZpbGwgYSAyRCBhcnJheSB3aXRo IGEgdW5pcXVlIHBvc2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgotKyAgc3Vicm91dGlu ZSBmaWxsX2FycmF5XzJkIChhcnJheSkKLSsgICAgaW50ZWdlciwgZGltZW5zaW9uICg6LDopIDo6 IGFycmF5Ci0rICAgIGludGVnZXIgOjogY291bnRlcgotKwotKyAgICBjb3VudGVyID0gMQotKyAg ICBkbyBpPUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQotKyAgICAgICBk byBqPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQotKyAgICAgICAgICBh cnJheSAoaixpKSA9IGNvdW50ZXIKLSsgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCi0r ICAgICAgIGVuZCBkbwotKyAgICBlbmQgZG8KLSsgIGVuZCBzdWJyb3V0aW5lIGZpbGxfYXJyYXlf MmQKLSsKLSsgICEgRmlsbCBhIDNEIGFycmF5IHdpdGggYSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdl ciBpbiBlYWNoIGVsZW1lbnQuCi0rICBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfM2QgKGFycmF5KQot KyAgICBpbnRlZ2VyLCBkaW1lbnNpb24gKDosOiw6KSA6OiBhcnJheQotKyAgICBpbnRlZ2VyIDo6 IGNvdW50ZXIKLSsKLSsgICAgY291bnRlciA9IDEKLSsgICAgZG8gaT1MQk9VTkQgKGFycmF5LCAz KSwgVUJPVU5EIChhcnJheSwgMyksIDEKLSsgICAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAyKSwg VUJPVU5EIChhcnJheSwgMiksIDEKLSsgICAgICAgICAgZG8gaz1MQk9VTkQgKGFycmF5LCAxKSwg VUJPVU5EIChhcnJheSwgMSksIDEKLSsgICAgICAgICAgICAgYXJyYXkgKGssIGosaSkgPSBjb3Vu dGVyCi0rICAgICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQotKyAgICAgICAgICBlbmQg ZG8KLSsgICAgICAgZW5kIGRvCi0rICAgIGVuZCBkbwotKyAgZW5kIHN1YnJvdXRpbmUgZmlsbF9h cnJheV8zZAotKwotKyAgISBGaWxsIGEgNEQgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2ZSBp bnRlZ2VyIGluIGVhY2ggZWxlbWVudC4KLSsgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV80ZCAoYXJy YXkpCi0rICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6LDosOikgOjogYXJyYXkKLSsgICAgaW50 ZWdlciA6OiBjb3VudGVyCi0rCi0rICAgIGNvdW50ZXIgPSAxCi0rICAgIGRvIGk9TEJPVU5EIChh cnJheSwgNCksIFVCT1VORCAoYXJyYXksIDQpLCAxCi0rICAgICAgIGRvIGo9TEJPVU5EIChhcnJh eSwgMyksIFVCT1VORCAoYXJyYXksIDMpLCAxCi0rICAgICAgICAgIGRvIGs9TEJPVU5EIChhcnJh eSwgMiksIFVCT1VORCAoYXJyYXksIDIpLCAxCi0rICAgICAgICAgICAgIGRvIGw9TEJPVU5EIChh cnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCi0rICAgICAgICAgICAgICAgIGFycmF5IChs LCBrLCBqLGkpID0gY291bnRlcgotKyAgICAgICAgICAgICAgICBjb3VudGVyID0gY291bnRlciAr IDEKLSsgICAgICAgICAgICAgZW5kIGRvCi0rICAgICAgICAgIGVuZCBkbwotKyAgICAgICBlbmQg ZG8KLSsgICAgZW5kIGRvCi0rICAgIHByaW50ICosICIiCi0rICBlbmQgc3Vicm91dGluZSBmaWxs X2FycmF5XzRkCi0rZW5kIHByb2dyYW0gdGVzdAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v YXJyYXktc2xpY2VzLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1z bGljZXMuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5l eHAKLUBAIC0xOCw2ICsxOCwyMSBAQAotICMgdGhlIHN1YnJvdXRpbmUuICBUaGlzIHNob3VsZCBl eGVyY2lzZSBHREIncyBhYmlsaXR5IHRvIGhhbmRsZQotICMgZGlmZmVyZW50IHN0cmlkZXMgZm9y IHRoZSBkaWZmZXJlbnQgZGltZW5zaW9ucy4KLSAKLSsjIFRlc3RpbmcgR0RCJ3MgYWJpbGl0eSB0 byBwcmludCBhcnJheSAoYW5kIHN0cmluZykgc2xpY2VzLCBpbmNsdWRpbmcKLSsjIHNsaWNlcyB0 aGF0IG1ha2UgdXNlIG9mIGFycmF5IHN0cmlkZXMuCi0rIwotKyMgSW4gdGhlIEZvcnRyYW4gY29k ZSB2YXJpb3VzIGFycmF5cyBvZiBkaWZmZXJlbnQgcmFua3MgYXJlIGZpbGxlZAotKyMgd2l0aCBk YXRhLCBhbmQgc2xpY2VzIGFyZSBwYXNzZWQgdG8gYSBzZXJpZXMgb2Ygc2hvdyBmdW5jdGlvbnMu Ci0rIwotKyMgSW4gdGhpcyB0ZXN0IHNjcmlwdCB3ZSBicmVhayBpbiBlYWNoIG9mIHRoZSBzaG93 IGZ1bmN0aW9ucywgcHJpbnQKLSsjIHRoZSBhcnJheSBzbGljZSB0aGF0IHdhcyBwYXNzZWQgaW4s IGFuZCB0aGVuIG1vdmUgdXAgdGhlIHN0YWNrIHRvCi0rIyB0aGUgcGFyZW50IGZyYW1lIGFuZCBj aGVjayBHREIgY2FuIG1hbnVhbGx5IGV4dHJhY3QgdGhlIHNhbWUgc2xpY2UuCi0rIwotKyMgVGhp cyB0ZXN0IGFsc28gY2hlY2tzIHRoYXQgdGhlIHNpemUgb2YgdGhlIGFycmF5IHNsaWNlIHBhc3Nl ZCB0byB0aGUKLSsjIGZ1bmN0aW9uIChzbyBhcyBleHRyYWN0ZWQgYW5kIGRlc2NyaWJlZCBieSB0 aGUgY29tcGlsZXIgYW5kIHRoZQotKyMgZGVidWcgaW5mb3JtYXRpb24pIG1hdGNoZXMgdGhlIHNp emUgb2YgdGhlIHNsaWNlIG1hbnVhbGx5IGV4dHJhY3RlZAotKyMgYnkgR0RCLgotKwotIGlmIHtb c2tpcF9mb3J0cmFuX3Rlc3RzXX0geyByZXR1cm4gLTEgfQotIAotIHN0YW5kYXJkX3Rlc3RmaWxl ICIuZjkwIgotQEAgLTI4LDU3ICs0MywyMjQgQEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSAgICAgcmV0dXJuIC0xCi0g fQotIAotLWlmICFbZm9ydHJhbl9ydW50b19tYWluXSB7Ci0tICAgIHVudGVzdGVkICJjb3VsZCBu b3QgcnVuIHRvIG1haW4iCi0tICAgIHJldHVybiAtMQotKyMgVGFrZXMgdGhlIG5hbWUgb2YgYW4g YXJyYXkgc2xpY2UgYXMgdXNlZCBpbiB0aGUgdGVzdCBzb3VyY2UsIGFuZCBleHRyYWN0cwotKyMg dGhlIGJhc2UgYXJyYXkgbmFtZS4gIEZvciBleGFtcGxlOiAnYXJyYXkgKDEsMiknIGJlY29tZXMg J2FycmF5Jy4KLStwcm9jIGFycmF5X3NsaWNlX3RvX3ZhciB7IHNsaWNlX3N0ciB9IHsKLSsgICAg cmVnZXhwICJeKD86XFxzKlxcKCkqKFxbXiggXHRcXSspIiAkc2xpY2Vfc3RyIG1hdGNodmFyIHZh cm5hbWUKLSsgICAgcmV0dXJuICR2YXJuYW1lCi0gfQotIAotLWdkYl9icmVha3BvaW50ICJzaG93 IgotLWdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50 Il0KLS0KLS1zZXQgYXJyYXlfY29udGVudHMgXAotLSAgICBbbGlzdCBcCi0tCSAiID0gXFwoXFwo MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTBcXCkgXFwoMTEsIDEyLCAxMywgMTQsIDE1LCAx NiwgMTcsIDE4LCAxOSwgMjBcXCkgXFwoMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAy OSwgMzBcXCkgXFwoMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDBcXCkgXFwo NDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTBcXCkgXFwoNTEsIDUyLCA1Mywg NTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjBcXCkgXFwoNjEsIDYyLCA2MywgNjQsIDY1LCA2Niwg NjcsIDY4LCA2OSwgNzBcXCkgXFwoNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwg ODBcXCkgXFwoODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTBcXCkgXFwoOTEs IDkyLCA5MywgOTQsIDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwXFwpXFwpIiBcCi0tCSAiID0gXFwo XFwoMSwgMiwgMywgNCwgNVxcKSBcXCgxMSwgMTIsIDEzLCAxNCwgMTVcXCkgXFwoMjEsIDIyLCAy MywgMjQsIDI1XFwpIFxcKDMxLCAzMiwgMzMsIDM0LCAzNVxcKSBcXCg0MSwgNDIsIDQzLCA0NCwg NDVcXClcXCkiIFwKLS0JICIgPSBcXChcXCgxLCAzLCA1LCA3LCA5XFwpIFxcKDIxLCAyMywgMjUs IDI3LCAyOVxcKSBcXCg0MSwgNDMsIDQ1LCA0NywgNDlcXCkgXFwoNjEsIDYzLCA2NSwgNjcsIDY5 XFwpIFxcKDgxLCA4MywgODUsIDg3LCA4OVxcKVxcKSIgXAotLQkgIiA9IFxcKFxcKDEsIDQsIDcs IDEwXFwpIFxcKDIxLCAyNCwgMjcsIDMwXFwpIFxcKDQxLCA0NCwgNDcsIDUwXFwpIFxcKDYxLCA2 NCwgNjcsIDcwXFwpIFxcKDgxLCA4NCwgODcsIDkwXFwpXFwpIiBcCi0tCSAiID0gXFwoXFwoMSwg NSwgOVxcKSBcXCgzMSwgMzUsIDM5XFwpIFxcKDYxLCA2NSwgNjlcXCkgXFwoOTEsIDk1LCA5OVxc KVxcKSIgXAotLQkgIiA9IFxcKFxcKC0yNiwgLTI1LCAtMjQsIC0yMywgLTIyLCAtMjEsIC0yMCwg LTE5LCAtMTgsIC0xN1xcKSBcXCgtMTksIC0xOCwgLTE3LCAtMTYsIC0xNSwgLTE0LCAtMTMsIC0x MiwgLTExLCAtMTBcXCkgXFwoLTEyLCAtMTEsIC0xMCwgLTksIC04LCAtNywgLTYsIC01LCAtNCwg LTNcXCkgXFwoLTUsIC00LCAtMywgLTIsIC0xLCAwLCAxLCAyLCAzLCA0XFwpIFxcKDIsIDMsIDQs IDUsIDYsIDcsIDgsIDksIDEwLCAxMVxcKSBcXCg5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAx NiwgMTcsIDE4XFwpIFxcKDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XFwp IFxcKDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXFwpIFxcKDMwLCAzMSwg MzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsIDM5XFwpIFxcKDM3LCAzOCwgMzksIDQwLCA0MSwg NDIsIDQzLCA0NCwgNDUsIDQ2XFwpXFwpIiBcCi0tCSAiID0gXFwoXFwoLTI2LCAtMjUsIC0yNCwg LTIzLCAtMjIsIC0yMVxcKSBcXCgtMTksIC0xOCwgLTE3LCAtMTYsIC0xNSwgLTE0XFwpIFxcKC0x MiwgLTExLCAtMTAsIC05LCAtOCwgLTdcXClcXCkiIFwKLS0JICIgPSBcXChcXCgtMjYsIC0yNCwg LTIyLCAtMjAsIC0xOFxcKSBcXCgtNSwgLTMsIC0xLCAxLCAzXFwpIFxcKDE2LCAxOCwgMjAsIDIy LCAyNFxcKSBcXCgzNywgMzksIDQxLCA0MywgNDVcXClcXCkiIF0KLS0KLS1zZXQgbWVzc2FnZV9z dHJpbmdzIFwKLS0gICAgW2xpc3QgXAotLQkgIiA9ICdhcnJheSciIFwKLS0JICIgPSAnYXJyYXkg XFwoMTo1LDE6NVxcKSciIFwKLS0JICIgPSAnYXJyYXkgXFwoMToxMDoyLDE6MTA6MlxcKSciIFwK LS0JICIgPSAnYXJyYXkgXFwoMToxMDozLDE6MTA6MlxcKSciIFwKLS0JICIgPSAnYXJyYXkgXFwo MToxMDo1LDE6MTA6M1xcKSciIF0KLS0KLS1zZXQgaSAwCi0tZm9yZWFjaCByZXN1bHQgJGFycmF5 X2NvbnRlbnRzIG1zZyAkbWVzc2FnZV9zdHJpbmdzIHsKLS0gICAgaW5jciBpCi0tICAgIHdpdGhf dGVzdF9wcmVmaXggInRlc3QgJGkiIHsKLS0JZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInNo b3ciCi0tCWdkYl90ZXN0ICJwIGFycmF5IiAkcmVzdWx0Ci0tCWdkYl90ZXN0ICJwIG1lc3NhZ2Ui ICIkbXNnIgotK3Byb2MgcnVuX3Rlc3QgeyByZXBhY2sgfSB7Ci0rICAgIGdsb2JhbCBiaW5maWxl IGdkYl9wcm9tcHQKLSsKLSsgICAgY2xlYW5fcmVzdGFydCAke2JpbmZpbGV9Ci0rCi0rICAgIGlm ICFbZm9ydHJhbl9ydW50b19tYWluXSB7Ci0rCXVudGVzdGVkICJjb3VsZCBub3QgcnVuIHRvIG1h aW4iCi0rCXJldHVybiAtMQotICAgICB9Ci0tfQotIAotLWdkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJjb250aW51ZSB0byBGaW5hbCBCcmVha3BvaW50IgotKyAgICBnZGJfdGVzdF9ub19vdXRw dXQgInNldCBmb3J0cmFuIHJlcGFjay1hcnJheS1zbGljZXMgJHJlcGFjayIKLSsKLSsgICAgIyBn ZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBNZXNzYWdlIEJyZWFr cG9pbnQiXQotKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxh eSBFbGVtZW50Il0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRp c3BsYXkgU3RyaW5nIl0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg IkRpc3BsYXkgQXJyYXkgU2xpY2UgMUQiXQotKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9s aW5lX251bWJlciAiRGlzcGxheSBBcnJheSBTbGljZSAyRCJdCi0rICAgIGdkYl9icmVha3BvaW50 IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IEFycmF5IFNsaWNlIDNEIl0KLSsgICAgZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgQXJyYXkgU2xpY2UgNEQi XQotKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmluYWwgQnJlYWtw b2ludCJdCi0rCi0rICAgICMgV2UncmUgZ29pbmcgdG8gcHJpbnQgc29tZSByZWFzb25hYmx5IGxh cmdlIGFycmF5cy4KLSsgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgcHJpbnQgZWxlbWVudHMg dW5saW1pdGVkIgotKwotKyAgICBzZXQgZm91bmRfZmluYWxfYnJlYWtwb2ludCBmYWxzZQotKwot KyAgICAjIFdlIHBsYWNlIGEgbGltaXQgb24gdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IGNhbiBi ZSBydW4sIGp1c3QgaW4KLSsgICAgIyBjYXNlIHNvbWV0aGluZyBnb2VzIHdyb25nLCBhbmQgR0RC IGdldHMgc3R1Y2sgaW4gYW4gbG9vcCBoZXJlLgotKyAgICBzZXQgdGVzdF9jb3VudCAwCi0rICAg IHdoaWxlIHsgJHRlc3RfY291bnQgPCA1MDAgfSB7Ci0rCXdpdGhfdGVzdF9wcmVmaXggInRlc3Qg JHRlc3RfY291bnQiIHsKLSsJICAgIGluY3IgdGVzdF9jb3VudAotKwotKwkgICAgc2V0IGZvdW5k X2ZpbmFsX2JyZWFrcG9pbnQgZmFsc2UKLSsJICAgIHNldCBleHBlY3RlZF9yZXN1bHQgIiIKLSsJ ICAgIHNldCBmdW5jX25hbWUgIiIKLSsJICAgIGdkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIg ImNvbnRpbnVlIiB7Ci0rCQktcmUgIi4qR0RCID0gKFxbXlxyXG5cXSspXHJcbiIgewotKwkJICAg IHNldCBleHBlY3RlZF9yZXN1bHQgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCQkgICAgZXhwX2Nv bnRpbnVlCi0rCQl9Ci0rCQktcmUgIiEgRGlzcGxheSBFbGVtZW50IiB7Ci0rCQkgICAgc2V0IGZ1 bmNfbmFtZSAic2hvd19lbGVtIgotKwkJICAgIGV4cF9jb250aW51ZQotKwkJfQotKwkJLXJlICIh IERpc3BsYXkgU3RyaW5nIiB7Ci0rCQkgICAgc2V0IGZ1bmNfbmFtZSAic2hvd19zdHIiCi0rCQkg ICAgZXhwX2NvbnRpbnVlCi0rCQl9Ci0rCQktcmUgIiEgRGlzcGxheSBBcnJheSBTbGljZSAoLilE IiB7Ci0rCQkgICAgc2V0IGZ1bmNfbmFtZSAic2hvd18kZXhwZWN0X291dCgxLHN0cmluZylkIgot KwkJICAgIGV4cF9jb250aW51ZQotKwkJfQotKwkJLXJlICIhIEZpbmFsIEJyZWFrcG9pbnQiIHsK LSsJCSAgICBzZXQgZm91bmRfZmluYWxfYnJlYWtwb2ludCB0cnVlCi0rCQkgICAgZXhwX2NvbnRp bnVlCi0rCQl9Ci0rCQktcmUgIiRnZGJfcHJvbXB0ICQiIHsKLSsJCSAgICAjIFdlJ3JlIGRvbmUu Ci0rCQl9Ci0rCSAgICB9Ci0gCi0tIyBOZXh0IHRlc3QgdGhhdCBhc2tpbmcgZm9yIGFuIGFycmF5 IHdpdGggc3RyaWRlIGF0IHRoZSBDTEkgZ2l2ZXMgYW4KLS0jIGVycm9yLgotLWNsZWFuX3Jlc3Rh cnQgJHt0ZXN0ZmlsZX0KLSsJICAgIGlmICgkZm91bmRfZmluYWxfYnJlYWtwb2ludCkgewotKwkJ YnJlYWsKLSsJICAgIH0KLSAKLS1pZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0gdGhlbiB7Ci0tICAg IHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCi0tICAgIGNvbnRpbnVlCi0rCSAgICAjIFdl IHdhbnQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGxpbmUgaW4gdGhlIHByZXZpb3VzIGZyYW1lIHRo YXQKLSsJICAgICMgY2FsbGVkIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiAgSSBjb3VsZG4ndCBmaW5k IGEgYmV0dGVyIHdheSBvZgotKwkgICAgIyBkb2luZyB0aGlzIHRoYW4gJ3VwJywgd2hpY2ggd2ls bCBwcmludCB0aGUgbGluZSwgdGhlbiAnZG93bicKLSsJICAgICMgYWdhaW4uCi0rCSAgICAjCi0r CSAgICAjIEkgZG9uJ3Qgd2FudCB0byBmaWxsIHRoZSBsb2cgd2l0aCBwYXNzZXMgZm9yIHRoZXNl IHVwL2Rvd24KLSsJICAgICMgY29tbWFuZHMsIHNvIHdlIGRvbid0IHJlcG9ydCBhbnkuICBJZiBz b21ldGhpbmcgZ29lcyB3cm9uZyB0aGVuIHdlCi0rCSAgICAjIHNob3VsZCBnZXQgYSBmYWlsIGZy b20gZ2RiX3Rlc3RfbXVsdGlwbGUuCi0rCSAgICBzZXQgYXJyYXlfc2xpY2VfbmFtZSAiIgotKwkg ICAgc2V0IHVuaXF1ZV9pZCAiIgotKwkgICAgYXJyYXkgdW5zZXQgcmVwbGFjZW1lbnRfdmFycwot KwkgICAgYXJyYXkgc2V0IHJlcGxhY2VtZW50X3ZhcnMge30KLSsJICAgIGdkYl90ZXN0X211bHRp cGxlICJ1cCIgInVwIiB7Ci0rCQktcmUgIlxyXG5cWzAtOVxdK1xbIFx0XF0rY2FsbCAke2Z1bmNf bmFtZX0gXFwoKFxbXlxyXG5cXSspXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCSAgICBzZXQg YXJyYXlfc2xpY2VfbmFtZSAkZXhwZWN0X291dCgxLHN0cmluZykKLSsJCX0KLSsJCS1yZSAiXHJc blxbMC05XF0rXFsgXHRcXStjYWxsICR7ZnVuY19uYW1lfSBcXCgoXFteXHJcblxdKylcXClcWyBc dFxdKyEgVkFSUz0oXFteIFx0XHJcblxdKylcclxuJGdkYl9wcm9tcHQgJCIgewotKwkJICAgIHNl dCBhcnJheV9zbGljZV9uYW1lICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwkJICAgIHNldCB1bmlx dWVfaWQgJGV4cGVjdF9vdXQoMixzdHJpbmcpCi0rCQl9Ci0rCSAgICB9Ci0rCSAgICBpZiB7JHVu aXF1ZV9pZCAhPSAiIn0gewotKwkJc2V0IHN0ciAiIgotKwkJZm9yZWFjaCB2IFtzcGxpdCAkdW5p cXVlX2lkICxdIHsKLSsJCSAgICBzZXQgdmFsIFtnZXRfaW50ZWdlcl92YWx1ZW9mICIke3Z9IiAi Pz8iXAotKwkJCQkgImdldCB2YXJpYWJsZSAnJHYnIGZvciAnJGFycmF5X3NsaWNlX25hbWUnIl0K LSsJCSAgICBzZXQgcmVwbGFjZW1lbnRfdmFycygkdikgJHZhbAotKwkJICAgIGlmIHskc3RyICE9 ICIifSB7Ci0rCQkJc2V0IHN0ciAiU3RyLCIKLSsJCSAgICB9Ci0rCQkgICAgc2V0IHN0ciAiJHN0 ciR2PSR2YWwiCi0rCQl9Ci0rCQlzZXQgdW5pcXVlX2lkICIgJHN0ciIKLSsJICAgIH0KLSsJICAg IGdkYl90ZXN0X211bHRpcGxlICJkb3duIiAiZG93biIgewotKwkJLXJlICJcclxuJGdkYl9wcm9t cHQgJCIgewotKwkJICAgICMgRG9uJ3QgaXNzdWUgYSBwYXNzIGhlcmUuCi0rCQl9Ci0rCSAgICB9 Ci0rCi0rCSAgICAjIENoZWNrIHdlIGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIHRv IHN1Y2Nlc3NmdWxseSBydW4gb25lCi0rCSAgICAjIG9mIHRoZXNlIHRlc3RzLgotKwkgICAgaWYg eyAkZXhwZWN0ZWRfcmVzdWx0ID09ICIiIH0gewotKwkJcGVycm9yICJmYWlsZWQgdG8gZXh0cmFj dCBleHBlY3RlZCByZXN1bHRzIgotKwkJcmV0dXJuIDAKLSsJICAgIH0KLSsJICAgIGlmIHsgJGFy cmF5X3NsaWNlX25hbWUgPT0gIiIgfSB7Ci0rCQlwZXJyb3IgImZhaWxlZCB0byBleHRyYWN0IGFy cmF5IHNsaWNlIG5hbWUiCi0rCQlyZXR1cm4gMAotKwkgICAgfQotKwotKwkgICAgIyBDaGVjayBH REIgY2FuIGNvcnJlY3RseSBwcmludCB0aGUgYXJyYXkgc2xpY2UgdGhhdCB3YXMgcGFzc2VkIGlu dG8KLSsJICAgICMgdGhlIGN1cnJlbnQgZnJhbWUuCi0rCSAgICBzZXQgcGF0dGVybiBbc3RyaW5n X3RvX3JlZ2V4cCAiID0gJGV4cGVjdGVkX3Jlc3VsdCJdCi0rCSAgICBnZGJfdGVzdCAicCBhcnJh eSIgIiRwYXR0ZXJuIiBcCi0rCQkiY2hlY2sgdmFsdWUgb2YgJyRhcnJheV9zbGljZV9uYW1lJyR1 bmlxdWVfaWQiCi0rCi0rCSAgICAjIEdldCB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UuCi0rCSAgICBz ZXQgc2l6ZV9pbl9zaG93IFwKLSsJCVtnZXRfaW50ZWdlcl92YWx1ZW9mICJzaXplb2YgKGFycmF5 KSIgInNob3dfdW5rbm93biIgXAotKwkJICAgICAiZ2V0IHNpemVvZiAnJGFycmF5X3NsaWNlX25h bWUnJHVuaXF1ZV9pZCBpbiBzaG93Il0KLSsJICAgIHNldCBhZGRyX2luX3Nob3cgXAotKwkJW2dl dF9oZXhhZGVjaW1hbF92YWx1ZW9mICImYXJyYXkiICJzaG93X3Vua25vd24iIFwKLSsJCSAgICAg ImdldCBhZGRyZXNzICckYXJyYXlfc2xpY2VfbmFtZSckdW5pcXVlX2lkIGluIHNob3ciXQotKwot KwkgICAgIyBOb3cgbW92ZSBpbnRvIHRoZSBwcmV2aW91cyBmcmFtZSwgYW5kIHNlZSBpZiBHREIg Y2FuIGV4dHJhY3QgdGhlCi0rCSAgICAjIGFycmF5IHNsaWNlIGZyb20gdGhlIG9yaWdpbmFsIHBh cmVudCBvYmplY3QuICBBZ2FpbiwgdXNlIG9mCi0rCSAgICAjIGdkYl90ZXN0X211bHRpcGxlIHRv IGF2b2lkIGZpbGxpbmcgdGhlIGxvZ3Mgd2l0aCB1bm5lY2Vzc2FyeQotKwkgICAgIyBwYXNzZXMu Ci0rCSAgICBnZGJfdGVzdF9tdWx0aXBsZSAidXAiICJ1cCIgewotKwkJLXJlICJcclxuJGdkYl9w cm9tcHQgJCIgewotKwkJICAgICMgRG8gbm90aGluZy4KLSsJCX0KLSsJICAgIH0KLSsKLSsJICAg ICMgUHJpbnQgdGhlIGFycmF5IHNsaWNlLCB0aGlzIHdpbGwgZm9yY2UgR0RCIHRvIG1hbnVhbGx5 IGV4dHJhY3QgdGhlCi0rCSAgICAjIHNsaWNlIGZyb20gdGhlIHBhcmVudCBhcnJheS4KLSsJICAg IGdkYl90ZXN0ICJwICRhcnJheV9zbGljZV9uYW1lIiAiJHBhdHRlcm4iIFwKLSsJCSJjaGVjayBh cnJheSBzbGljZSAnJGFycmF5X3NsaWNlX25hbWUnJHVuaXF1ZV9pZCBjYW4gYmUgZXh0cmFjdGVk IgotKwotKwkgICAgIyBHZXQgdGhlIHNpemUgb2YgdGhlIHNsaWNlIGluIHRoZSBjYWxsaW5nIGZy YW1lLgotKwkgICAgc2V0IHNpemVfaW5fcGFyZW50IFwKLSsJCVtnZXRfaW50ZWdlcl92YWx1ZW9m ICJzaXplb2YgKCRhcnJheV9zbGljZV9uYW1lKSIgXAotKwkJICAgICAicGFyZW50X3Vua25vd24i IFwKLSsJCSAgICAgImdldCBzaXplb2YgJyRhcnJheV9zbGljZV9uYW1lJyR1bmlxdWVfaWQgaW4g cGFyZW50Il0KLSsKLSsJICAgICMgRmlndXJlIG91dCB0aGUgc3RhcnQgYW5kIGVuZCBhZGRyZXNz ZXMgb2YgdGhlIGZ1bGwgYXJyYXkgaW4gdGhlCi0rCSAgICAjIHBhcmVudCBmcmFtZS4KLSsJICAg IHNldCBmdWxsX3Zhcl9uYW1lIFthcnJheV9zbGljZV90b192YXIgJGFycmF5X3NsaWNlX25hbWVd Ci0rCSAgICBzZXQgc3RhcnRfYWRkciBbZ2V0X2hleGFkZWNpbWFsX3ZhbHVlb2YgIiYke2Z1bGxf dmFyX25hbWV9IiBcCi0rCQkJCSJzdGFydCB1bmtub3duIl0KLSsJICAgIHNldCBlbmRfYWRkciBb Z2V0X2hleGFkZWNpbWFsX3ZhbHVlb2YgXAotKwkJCSAgICAgICIoJiR7ZnVsbF92YXJfbmFtZX0p ICsgc2l6ZW9mICgke2Z1bGxfdmFyX25hbWV9KSIgXAotKwkJCSAgICAgICJlbmQgdW5rbm93biJd Ci0rCi0rCSAgICAjIFRoZSBGb3J0cmFuIGNvbXBpbGVyIGNhbiBjaG9vc2UgdG8gZWl0aGVyIHNl bmQgYSBkZXNjcmlwdG9yIHRoYXQKLSsJICAgICMgZGVzY3JpYmVzIHRoZSBhcnJheSBzbGljZSB0 byB0aGUgc3Vicm91dGluZSwgb3IgaXQgY2FuIHJlcGFjayB0aGUKLSsJICAgICMgc2xpY2UgaW50 byBhbiBhcnJheSBzZWN0aW9uIGFuZCBzZW5kIHRoYXQuCi0rCSAgICAjCi0rCSAgICAjIFdlIGZp bmQgdGhlIGFkZHJlc3MgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIGFycmF5IGluIHRoZSBwYXJlbnQs Ci0rCSAgICAjIGFuZCB0aGUgYWRkcmVzcyBvZiB0aGUgc2xpY2UgaW4gdGhlIHNob3cgZnVuY3Rp b24sIGlmIHRoZQotKwkgICAgIyBhZGRyZXNzIG9mIHRoZSBzbGljZSAoZnJvbSBzaG93KSBpcyBp biB0aGUgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsCi0rCSAgICAjIGFycmF5IHRoZW4gcmVwYWNraW5n IGhhcyBub3Qgb2NjdXJyZWQsIG90aGVyd2lzZSwgdGhlIHNsaWNlIGlzCi0rCSAgICAjIG91dHNp ZGUgb2YgdGhlIHBhcmVudCwgYW5kIHJlcGFja2luZyBtdXN0IGhhdmUgb2NjdXJyZWQuCi0rCSAg ICAjCi0rCSAgICAjIFRoZSBnb2FsIGhlcmUgaXMgdG8gY29tcGFyZSB0aGUgc2l6ZXMgb2YgdGhl IHNsaWNlIGluIHNob3cgd2l0aAotKwkgICAgIyB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UgZXh0cmFj dGVkIGJ5IEdEQi4gIFNvIHdlIGNhbiBvbmx5IGNvbXBhcmUKLSsJICAgICMgc2l6ZXMgd2hlbiBH REIncyByZXBhY2tpbmcgc2V0dGluZyBtYXRjaGVzIHRoZSByZXBhY2tpbmcKLSsJICAgICMgYmVo YXZpb3VyIHdlIGdvdCBmcm9tIHRoZSBjb21waWxlci4KLSsJICAgIGlmIHsgKCRhZGRyX2luX3No b3cgPCAkc3RhcnRfYWRkciB8fCAkYWRkcl9pbl9zaG93ID49ICRlbmRfYWRkcikgXAotKwkJID09 ICgkcmVwYWNrID09ICJvbiIpIH0gewotKwkJZ2RiX2Fzc2VydCB7JHNpemVfaW5fc2hvdyA9PSAk c2l6ZV9pbl9wYXJlbnR9IFwKLSsJCSAgICAiY2hlY2sgc2l6ZXMgbWF0Y2giCi0rCSAgICB9IGVs c2VpZiB7ICRyZXBhY2sgPT0gIm9mZiIgfSB7Ci0rCQkjIEdEQidzIHJlcGFja2luZyBpcyBvZmYg KHNvIHNsaWNlcyBhcmUgbGVmdCB1bnBhY2tlZCksIGJ1dAotKwkJIyB0aGUgY29tcGlsZXIgZGlk IHBhY2sgdGhpcyBvbmUuICBBcyBhIHJlc3VsdCB3ZSBjYW4ndAotKwkJIyBjb21wYXJlIHRoZSBz aXplcyBiZXR3ZWVuIHRoZSBjb21waWxlcidzIHNsaWNlIGFuZCBHREIncwotKwkJIyBzbGljZS4K LSsJCXZlcmJvc2UgLWxvZyAic2xpY2UgJyRhcnJheV9zbGljZV9uYW1lJyB3YXMgcmVwYWNrZWQs IHNpemVzIGNhbid0IGJlIGNvbXBhcmVkIgotKwkgICAgfSBlbHNlIHsKLSsJCSMgTGlrZSB0aGUg YWJvdmUsIGJ1dCB0aGUgcmV2ZXJzZSwgR0RCJ3MgcmVwYWNraW5nIGlzIG9uLCBidXQKLSsJCSMg dGhlIGNvbXBpbGVyIGRpZG4ndCByZXBhY2sgdGhpcyBzbGljZS4KLSsJCXZlcmJvc2UgLWxvZyAi c2xpY2UgJyRhcnJheV9zbGljZV9uYW1lJyB3YXMgbm90IHJlcGFja2VkLCBzaXplcyBjYW4ndCBi ZSBjb21wYXJlZCIKLSsJICAgIH0KLSsKLSsJICAgICMgSWYgdGhlIGFycmF5IG5hbWUgd2UganVz dCB0ZXN0ZWQgaW5jbHVkZWQgdmFyaWFibGUgbmFtZXMsIHRoZW4KLSsJICAgICMgdGVzdCBhZ2Fp biB3aXRoIGFsbCB0aGUgdmFyaWFibGVzIGV4cGFuZGVkLgotKwkgICAgaWYgeyR1bmlxdWVfaWQg IT0gIiJ9IHsKLSsJCWZvcmVhY2ggdiBbYXJyYXkgbmFtZXMgcmVwbGFjZW1lbnRfdmFyc10gewot KwkJICAgIHNldCB2YWwgJHJlcGxhY2VtZW50X3ZhcnMoJHYpCi0rCQkgICAgc2V0IGFycmF5X3Ns aWNlX25hbWUgXAotKwkJCVtyZWdzdWIgIlxceSR7dn1cXHkiICRhcnJheV9zbGljZV9uYW1lICR2 YWxdCi0rCQl9Ci0rCQlnZGJfdGVzdCAicCAkYXJyYXlfc2xpY2VfbmFtZSIgIiRwYXR0ZXJuIiBc Ci0rCQkgICAgImNoZWNrIGFycmF5IHNsaWNlICckYXJyYXlfc2xpY2VfbmFtZSckdW5pcXVlX2lk IGNhbiBiZSBleHRyYWN0ZWQsIHdpdGggdmFyaWFibGVzIGV4cGFuZGVkIgotKwkgICAgfQotKwl9 Ci0rICAgIH0KLSsKLSsgICAgIyBFbnN1cmUgd2UgcmVhY2hlZCB0aGUgZmluYWwgYnJlYWtwb2lu dC4gIElmIG1vcmUgdGVzdHMgaGF2ZSBiZWVuIGFkZGVkCi0rICAgICMgdG8gdGhlIHRlc3Qgc2Ny aXB0LCBhbmQgdGhpcyBzdGFydHMgZmFpbGluZywgdGhlbiB0aGUgc2FmZXR5ICd3aGlsZScKLSsg ICAgIyBsb29wIGFib3ZlIG1pZ2h0IG5lZWQgdG8gYmUgaW5jcmVhc2VkLgotKyAgICBnZGJfYXNz ZXJ0IHskZm91bmRfZmluYWxfYnJlYWtwb2ludH0gInJhbiBhbGwgdGVzdHMiCi0gfQotIAotLWdk Yl9icmVha3BvaW50ICJzaG93IgotLWdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJzaG93Igot LWdkYl90ZXN0ICJ1cCIgIi4qIgotLWdkYl90ZXN0ICJwIGFycmF5ICgxOjEwOjIsIDE6MTA6Miki IFwKLS0gICAgIkZvcnRyYW4gYXJyYXkgc3RyaWRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0 ZWQiIFwKLS0gICAgInVzaW5nIGFycmF5IHN0cmlkZSBnaXZlcyBhbiBlcnJvciIKLStmb3JlYWNo X3dpdGhfcHJlZml4IHJlcGFjayB7IG9uIG9mZiB9IHsKLSsgICAgcnVuX3Rlc3QgJHJlcGFjawot K30KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5m OTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5mOTAKLS0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmY5MAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZjkwCi1AQCAtMTMsNTggKzEzLDM2OCBAQAot ICEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKLSAhIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIAotLXN1YnJvdXRpbmUgc2hvdyAobWVzc2Fn ZSwgYXJyYXkpCi0tICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBtZXNzYWdlCi0rc3Vicm91dGluZSBz aG93X2VsZW0gKGFycmF5KQotKyAgaW50ZWdlciA6OiBhcnJheQotKwotKyAgcHJpbnQgKiwgIiIK LSsgIHByaW50ICosICJFeHBlY3RlZCBHREIgT3V0cHV0OiIKLSsgIHByaW50ICosICIiCi0rCi0r ICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICIKLSsgIHdyaXRlKCos IGZtdD0iKEkwKSIsIGFkdmFuY2U9Im5vIikgYXJyYXkKLSsgIHdyaXRlKCosIGZtdD0iKEEpIiwg YWR2YW5jZT0ieWVzIikgIiIKLSsKLSsgIHByaW50ICosICIiCSEgRGlzcGxheSBFbGVtZW50Ci0r ZW5kIHN1YnJvdXRpbmUgc2hvd19lbGVtCi0rCi0rc3Vicm91dGluZSBzaG93X3N0ciAoYXJyYXkp Ci0rICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBhcnJheQotKwotKyAgcHJpbnQgKiwgIiIKLSsgIHBy aW50ICosICJFeHBlY3RlZCBHREIgT3V0cHV0OiIKLSsgIHByaW50ICosICIiCi0rICB3cml0ZSAo KiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICJHREIgPSAnIgotKyAgd3JpdGUgKCosIGZtdD0i KEEpIiwgYWR2YW5jZT0ibm8iKSBhcnJheQotKyAgd3JpdGUgKCosIGZtdD0iKEEpIiwgYWR2YW5j ZT0ieWVzIikgIiciCi0rCi0rICBwcmludCAqLCAiIgkhIERpc3BsYXkgU3RyaW5nCi0rZW5kIHN1 YnJvdXRpbmUgc2hvd19zdHIKLSsKLStzdWJyb3V0aW5lIHNob3dfMWQgKGFycmF5KQotKyAgaW50 ZWdlciwgZGltZW5zaW9uICg6KSA6OiBhcnJheQotKwotKyAgcHJpbnQgKiwgIkFycmF5IENvbnRl bnRzOiIKLSsgIHByaW50ICosICIiCi0rCi0rICBkbyBpPUxCT1VORCAoYXJyYXksIDEpLCBVQk9V TkQgKGFycmF5LCAxKSwgMQotKyAgICAgd3JpdGUoKiwgZm10PSIoaTQpIiwgYWR2YW5jZT0ibm8i KSBhcnJheSAoaSkKLSsgIGVuZCBkbwotKwotKyAgcHJpbnQgKiwgIiIKLSsgIHByaW50ICosICJF eHBlY3RlZCBHREIgT3V0cHV0OiIKLSsgIHByaW50ICosICIiCi0rCi0rICB3cml0ZSgqLCBmbXQ9 IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICgiCi0rICBkbyBpPUxCT1VORCAoYXJyYXksIDEp LCBVQk9VTkQgKGFycmF5LCAxKSwgMQotKyAgICAgaWYgKGkgPiBMQk9VTkQgKGFycmF5LCAxKSkg dGhlbgotKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIsICIKLSsg ICAgIGVuZCBpZgotKyAgICAgd3JpdGUoKiwgZm10PSIoSTApIiwgYWR2YW5jZT0ibm8iKSBhcnJh eSAoaSkKLSsgIGVuZCBkbwotKyAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIp IgotKwotKyAgcHJpbnQgKiwgIiIJISBEaXNwbGF5IEFycmF5IFNsaWNlIDFECi0rZW5kIHN1YnJv dXRpbmUgc2hvd18xZAotKwotK3N1YnJvdXRpbmUgc2hvd18yZCAoYXJyYXkpCi0gICBpbnRlZ2Vy LCBkaW1lbnNpb24gKDosOikgOjogYXJyYXkKLSAKLS0gIHByaW50ICosIG1lc3NhZ2UKLSsgIHBy aW50ICosICJBcnJheSBDb250ZW50czoiCi0rICBwcmludCAqLCAiIgotKwotICAgZG8gaT1MQk9V TkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLSAgICAgIGRvIGo9TEJPVU5EIChh cnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCi0gICAgICAgICB3cml0ZSgqLCBmbXQ9Iihp NCkiLCBhZHZhbmNlPSJubyIpIGFycmF5IChqLCBpKQotICAgICAgZW5kIGRvCi0gICAgICBwcmlu dCAqLCAiIgotLSBlbmQgZG8KLS0gcHJpbnQgKiwgYXJyYXkKLS0gcHJpbnQgKiwgIiIKLSsgIGVu ZCBkbwotIAotLWVuZCBzdWJyb3V0aW5lIHNob3cKLSsgIHByaW50ICosICIiCi0rICBwcmludCAq LCAiRXhwZWN0ZWQgR0RCIE91dHB1dDoiCi0rICBwcmludCAqLCAiIgotIAotLXByb2dyYW0gdGVz dAotKyAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICJHREIgPSAoIgotKyAgZG8g aT1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLSsgICAgIGlmIChpID4g TEJPVU5EIChhcnJheSwgMikpIHRoZW4KLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2 YW5jZT0ibm8iKSAiICIKLSsgICAgIGVuZCBpZgotKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBh ZHZhbmNlPSJubyIpICIoIgotKyAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChh cnJheSwgMSksIDEKLSsgICAgICAgIGlmIChqID4gTEJPVU5EIChhcnJheSwgMSkpIHRoZW4KLSsg ICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiLCAiCi0rICAgICAg ICBlbmQgaWYKLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEkwKSIsIGFkdmFuY2U9Im5vIikgYXJy YXkgKGosIGkpCi0rICAgICBlbmQgZG8KLSsgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5j ZT0ibm8iKSAiKSIKLSsgIGVuZCBkbwotKyAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJ5 ZXMiKSAiKSIKLSsKLSsgIHByaW50ICosICIiCSEgRGlzcGxheSBBcnJheSBTbGljZSAyRAotK2Vu ZCBzdWJyb3V0aW5lIHNob3dfMmQKLSsKLStzdWJyb3V0aW5lIHNob3dfM2QgKGFycmF5KQotKyAg aW50ZWdlciwgZGltZW5zaW9uICg6LDosOikgOjogYXJyYXkKLSsKLSsgIHByaW50ICosICIiCi0r ICBwcmludCAqLCAiRXhwZWN0ZWQgR0RCIE91dHB1dDoiCi0rICBwcmludCAqLCAiIgotKwotKyAg d3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICJHREIgPSAoIgotKyAgZG8gaT1MQk9V TkQgKGFycmF5LCAzKSwgVUJPVU5EIChhcnJheSwgMyksIDEKLSsgICAgIGlmIChpID4gTEJPVU5E IChhcnJheSwgMykpIHRoZW4KLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0i bm8iKSAiICIKLSsgICAgIGVuZCBpZgotKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNl PSJubyIpICIoIgotKyAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwg MiksIDEKLSsgICAgICAgIGlmIChqID4gTEJPVU5EIChhcnJheSwgMikpIHRoZW4KLSsgICAgICAg ICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiICIKLSsgICAgICAgIGVuZCBp ZgotKyAgICAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIoIgotKyAgICAg ICAgZG8gaz1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKLSsgICAgICAg ICAgIGlmIChrID4gTEJPVU5EIChhcnJheSwgMSkpIHRoZW4KLSsgICAgICAgICAgICAgIHdyaXRl KCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiLCAiCi0rICAgICAgICAgICBlbmQgaWYKLSsg ICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEkwKSIsIGFkdmFuY2U9Im5vIikgYXJyYXkgKGssIGos IGkpCi0rICAgICAgICBlbmQgZG8KLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5j ZT0ibm8iKSAiKSIKLSsgICAgIGVuZCBkbwotKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZh bmNlPSJubyIpICIpIgotKyAgZW5kIGRvCi0rICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9 InllcyIpICIpIgotKwotKyAgcHJpbnQgKiwgIiIJISBEaXNwbGF5IEFycmF5IFNsaWNlIDNECi0r ZW5kIHN1YnJvdXRpbmUgc2hvd18zZAotKwotK3N1YnJvdXRpbmUgc2hvd180ZCAoYXJyYXkpCi0r ICBpbnRlZ2VyLCBkaW1lbnNpb24gKDosOiw6LDopIDo6IGFycmF5Ci0rCi0rICBwcmludCAqLCAi IgotKyAgcHJpbnQgKiwgIkV4cGVjdGVkIEdEQiBPdXRwdXQ6IgotKyAgcHJpbnQgKiwgIiIKLSsK LSsgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiR0RCID0gKCIKLSsgIGRvIGk9 TEJPVU5EIChhcnJheSwgNCksIFVCT1VORCAoYXJyYXksIDQpLCAxCi0rICAgICBpZiAoaSA+IExC T1VORCAoYXJyYXksIDQpKSB0aGVuCi0rICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFu Y2U9Im5vIikgIiAiCi0rICAgICBlbmQgaWYKLSsgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2 YW5jZT0ibm8iKSAiKCIKLSsgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMyksIFVCT1VORCAoYXJy YXksIDMpLCAxCi0rICAgICAgICBpZiAoaiA+IExCT1VORCAoYXJyYXksIDMpKSB0aGVuCi0rICAg ICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiAiCi0rICAgICAgICBl bmQgaWYKLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKCIKLSsK LSsgICAgICAgIGRvIGs9TEJPVU5EIChhcnJheSwgMiksIFVCT1VORCAoYXJyYXksIDIpLCAxCi0r ICAgICAgICAgICBpZiAoayA+IExCT1VORCAoYXJyYXksIDIpKSB0aGVuCi0rICAgICAgICAgICAg ICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiAiCi0rICAgICAgICAgICBlbmQg aWYKLSsgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKCIKLSsg ICAgICAgICAgIGRvIGw9TEJPVU5EIChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCi0r ICAgICAgICAgICAgICBpZiAobCA+IExCT1VORCAoYXJyYXksIDEpKSB0aGVuCi0rICAgICAgICAg ICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiwgIgotKyAgICAgICAg ICAgICAgZW5kIGlmCi0rICAgICAgICAgICAgICB3cml0ZSgqLCBmbXQ9IihJMCkiLCBhZHZhbmNl PSJubyIpIGFycmF5IChsLCBrLCBqLCBpKQotKyAgICAgICAgICAgZW5kIGRvCi0rICAgICAgICAg ICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIikiCi0rICAgICAgICBlbmQgZG8K LSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKSIKLSsgICAgIGVu ZCBkbwotKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIpIgotKyAgZW5k IGRvCi0rICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9InllcyIpICIpIgotKwotKyAgcHJp bnQgKiwgIiIJISBEaXNwbGF5IEFycmF5IFNsaWNlIDRECi0rZW5kIHN1YnJvdXRpbmUgc2hvd180 ZAotIAotKyEKLSshIFN0YXJ0IG9mIHRlc3QgcHJvZ3JhbS4KLSshCi0rcHJvZ3JhbSB0ZXN0Ci0g ICBpbnRlcmZhY2UKLS0gICAgIHN1YnJvdXRpbmUgc2hvdyAobWVzc2FnZSwgYXJyYXkpCi0tICAg ICAgIGNoYXJhY3RlciAobGVuPSopIDo6IG1lc3NhZ2UKLSsgICAgIHN1YnJvdXRpbmUgc2hvd19z dHIgKGFycmF5KQotKyAgICAgICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBhcnJheQotKyAgICAgZW5k IHN1YnJvdXRpbmUgc2hvd19zdHIKLSsKLSsgICAgIHN1YnJvdXRpbmUgc2hvd18xZCAoYXJyYXkp Ci0rICAgICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOikgOjogYXJyYXkKLSsgICAgIGVuZCBzdWJy b3V0aW5lIHNob3dfMWQKLSsKLSsgICAgIHN1YnJvdXRpbmUgc2hvd18yZCAoYXJyYXkpCi0gICAg ICAgIGludGVnZXIsIGRpbWVuc2lvbig6LDopIDo6IGFycmF5Ci0tICAgICBlbmQgc3Vicm91dGlu ZSBzaG93Ci0rICAgICBlbmQgc3Vicm91dGluZSBzaG93XzJkCi0rCi0rICAgICBzdWJyb3V0aW5l IHNob3dfM2QgKGFycmF5KQotKyAgICAgICBpbnRlZ2VyLCBkaW1lbnNpb24oOiw6LDopIDo6IGFy cmF5Ci0rICAgICBlbmQgc3Vicm91dGluZSBzaG93XzNkCi0rCi0rICAgICBzdWJyb3V0aW5lIHNo b3dfNGQgKGFycmF5KQotKyAgICAgICBpbnRlZ2VyLCBkaW1lbnNpb24oOiw6LDosOikgOjogYXJy YXkKLSsgICAgIGVuZCBzdWJyb3V0aW5lIHNob3dfNGQKLSAgIGVuZCBpbnRlcmZhY2UKLSAKLSsg ICEgRGVjbGFyZSB2YXJpYWJsZXMgdXNlZCBpbiB0aGlzIHRlc3QuCi0rICBpbnRlZ2VyLCBkaW1l bnNpb24gKC0xMDotMSwtMTA6LTIpIDo6IG5lZ19hcnJheQotICAgaW50ZWdlciwgZGltZW5zaW9u ICgxOjEwLDE6MTApIDo6IGFycmF5Ci0gICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBvdGhlciAo OiwgOikKLSsgIGNoYXJhY3RlciAobGVuPTI2KSA6OiBzdHJfMSA9ICJhYmNkZWZnaGlqa2xtbm9w cXJzdHV2d3h5eiIKLSsgIGludGVnZXIsIGRpbWVuc2lvbiAoLTI6MiwtMjoyLC0yOjIpIDo6IGFy cmF5M2QKLSsgIGludGVnZXIsIGRpbWVuc2lvbiAoLTM6Myw3OjEwLC0zOjMsLTEwOi03KSA6OiBh cnJheTRkCi0rICBpbnRlZ2VyLCBkaW1lbnNpb24gKDEwOjIwKSA6OiBhcnJheTFkCi0rICBpbnRl Z2VyLCBkaW1lbnNpb24oOiw6KSwgcG9pbnRlciA6OiBwb2ludGVyMmQgPT4gbnVsbCgpCi0rICBp bnRlZ2VyLCBkaW1lbnNpb24oLTE6OSwtMTo5KSwgdGFyZ2V0IDo6IHRhcnJheQotIAotKyAgISBB bGxvY2F0ZSBvciBhc3NvY2lhdGUgYW55IHZhcmlhYmxlcyBhcyBuZWVkZWQuCi0gICBhbGxvY2F0 ZSAob3RoZXIgKC01OjQsIC0yOjcpKQotKyAgcG9pbnRlcjJkID0+IHRhcnJheQotIAotLSAgZG8g aT1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLS0gICAgIGRvIGo9TEJP VU5EIChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCi0tICAgICAgICBhcnJheSAoaixp KSA9ICgoaSAtIDEpICogVUJPVU5EIChhcnJheSwgMikpICsgagotLSAgICAgZW5kIGRvCi0tICBl bmQgZG8KLSsgICEgRmlsbCBhcnJheXMgd2l0aCBjb250ZW50cyByZWFkeSBmb3IgdGVzdGluZy4K LSsgIGNhbGwgZmlsbF9hcnJheV8xZCAoYXJyYXkxZCkKLSsKLSsgIGNhbGwgZmlsbF9hcnJheV8y ZCAobmVnX2FycmF5KQotKyAgY2FsbCBmaWxsX2FycmF5XzJkIChhcnJheSkKLSsgIGNhbGwgZmls bF9hcnJheV8yZCAob3RoZXIpCi0rICBjYWxsIGZpbGxfYXJyYXlfMmQgKHRhcnJheSkKLSsKLSsg IGNhbGwgZmlsbF9hcnJheV8zZCAoYXJyYXkzZCkKLSsgIGNhbGwgZmlsbF9hcnJheV80ZCAoYXJy YXk0ZCkKLSsKLSsgICEgVGhlIHRlc3RzLiAgRWFjaCBjYWxsIHRvIGEgc2hvd18qIGZ1bmN0aW9u IG11c3QgaGF2ZSBhIHVuaXF1ZSBzZXQKLSsgICEgb2YgYXJndW1lbnRzIGFzIEdEQiB1c2VzIHRo ZSBhcmd1bWVudHMgYXJlIHBhcnQgb2YgdGhlIHRlc3QgbmFtZQotKyAgISBzdHJpbmcsIHNvIGR1 cGxpY2F0ZSBhcmd1bWVudHMgd2lsbCByZXN1bHQgaW4gZHVwbGljYXRlIHRlc3QKLSsgICEgbmFt ZXMuCi0rICAhCi0rICAhIElmIGEgc2hvd18qIGxpbmUgZW5kcyB3aXRoIFZBUlM9Li4uIHdoZXJl ICcuLi4nIGlzIGEgY29tbWEKLSsgICEgc2VwYXJhdGVkIGxpc3Qgb2YgdmFyaWFibGUgbmFtZXMs IHRoZXNlIHZhcmlhYmxlcyBhcmUgYXNzdW1lZCB0bwotKyAgISBiZSBwYXJ0IG9mIHRoZSBjYWxs IGxpbmUsIGFuZCB3aWxsIGJlIGV4cGFuZGVkIGJ5IHRoZSB0ZXN0IHNjcmlwdCwKLSsgICEgZm9y IGV4YW1wbGU6Ci0rICAhCi0rICAhICAgICBkbyB4PTEsOSwxCi0rICAhICAgICAgIGRvIHk9eCwx MCwxCi0rICAhICAgICAgICAgY2FsbCBzaG93XzFkIChzb21lX2FycmF5ICh4LHkpKQkhIFZBUlM9 eCx5Ci0rICAhICAgICAgIGVuZCBkbwotKyAgISAgICAgZW5kIGRvCi0rICAhCi0rICAhIEluIHRo aXMgZXhhbXBsZSB0aGUgdGVzdCBzY3JpcHQgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGFuZCAneCcg YW5kCi0rICAhICd5JyBpbiBvcmRlciB0byBiZXR0ZXIgdGVzdCBkaWZmZXJlbnQgYXNwZWN0cyBv ZiBHREIuICBEbyB0YWtlCi0rICAhIGNhcmUsIHRoZSBleHBhbnNpb24gaXMgbm90IHZlcnkgInNt YXJ0Iiwgc28gdHJ5IHRvIGF2b2lkIGNsYXNoaW5nCi0rICAhIHdpdGggb3RoZXIgdGV4dCBvbiB0 aGUgbGluZSwgaW4gdGhlIGV4YW1wbGUgYWJvdmUsIGF2b2lkIHZhcmlhYmxlcwotKyAgISBuYW1l ZCAnc29tZScgb3IgJ2FycmF5JywgYXMgdGhlc2Ugd2lsbCBsaWtlbHkgY2xhc2ggd2l0aAotKyAg ISAnc29tZV9hcnJheScuCi0rICBjYWxsIHNob3dfc3RyIChzdHJfMSkKLSsgIGNhbGwgc2hvd19z dHIgKHN0cl8xICgxOjIwKSkKLSsgIGNhbGwgc2hvd19zdHIgKHN0cl8xICgxMDoyMCkpCi0gCi0t ICBkbyBpPUxCT1VORCAob3RoZXIsIDIpLCBVQk9VTkQgKG90aGVyLCAyKSwgMQotLSAgICAgZG8g aj1MQk9VTkQgKG90aGVyLCAxKSwgVUJPVU5EIChvdGhlciwgMSksIDEKLS0gICAgICAgIG90aGVy IChqLGkpID0gKChpIC0gMSkgKiBVQk9VTkQgKG90aGVyLCAyKSkgKyBqCi0rICBjYWxsIHNob3df ZWxlbSAoYXJyYXkxZCAoMTEpKQotKyAgY2FsbCBzaG93X2VsZW0gKHBvaW50ZXIyZCAoMiwzKSkK LSsKLSsgIGNhbGwgc2hvd18xZCAoYXJyYXkxZCkKLSsgIGNhbGwgc2hvd18xZCAoYXJyYXkxZCAo MTM6MTcpKQotKyAgY2FsbCBzaG93XzFkIChhcnJheTFkICgxNzoxMzotMSkpCi0rICBjYWxsIHNo b3dfMWQgKGFycmF5ICgxOjUsMSkpCi0rICBjYWxsIHNob3dfMWQgKGFycmF5NGQgKDEsNywzLDop KQotKyAgY2FsbCBzaG93XzFkIChwb2ludGVyMmQgKC0xOjMsIDIpKQotKyAgY2FsbCBzaG93XzFk IChwb2ludGVyMmQgKC0xLCAyOjQpKQotKwotKyAgISBFbmNsb3NpbmcgdGhlIGFycmF5IHNsaWNl IGFyZ3VtZW50IGluICguLi4pIGNhdXNlc3MgZ2ZvcnRyYW4gdG8KLSsgICEgcmVwYWNrIHRoZSBh cnJheS4KLSsgIGNhbGwgc2hvd18xZCAoKGFycmF5ICgxOjUsMSkpKQotKwotKyAgY2FsbCBzaG93 XzJkIChwb2ludGVyMmQpCi0rICBjYWxsIHNob3dfMmQgKGFycmF5KQotKyAgY2FsbCBzaG93XzJk IChhcnJheSAoMTo1LDE6NSkpCi0rICBkbyBpPTEsMTAsMgotKyAgICAgZG8gaj0xLDEwLDMKLSsg ICAgICAgIGNhbGwgc2hvd18yZCAoYXJyYXkgKDE6MTA6aSwxOjEwOmopKQkhIFZBUlM9aSxqCi0r ICAgICAgICBjYWxsIHNob3dfMmQgKGFycmF5ICgxMDoxOi1pLDE6MTA6aikpCSEgVkFSUz1pLGoK LSsgICAgICAgIGNhbGwgc2hvd18yZCAoYXJyYXkgKDEwOjE6LWksMTA6MTotaikpCSEgVkFSUz1p LGoKLSsgICAgICAgIGNhbGwgc2hvd18yZCAoYXJyYXkgKDE6MTA6aSwxMDoxOi1qKSkJISBWQVJT PWksagotICAgICAgZW5kIGRvCi0gICBlbmQgZG8KLSsgIGNhbGwgc2hvd18yZCAoYXJyYXkgKDY6 MjotMSwzOjkpKQotKyAgY2FsbCBzaG93XzJkIChhcnJheSAoMToxMDoyLCAxOjEwOjIpKQotKyAg Y2FsbCBzaG93XzJkIChvdGhlcikKLSsgIGNhbGwgc2hvd18yZCAob3RoZXIgKC01OjAsIC0yOjAp KQotKyAgY2FsbCBzaG93XzJkIChvdGhlciAoLTU6NDoyLCAtMjo3OjMpKQotKyAgY2FsbCBzaG93 XzJkIChuZWdfYXJyYXkpCi0rICBjYWxsIHNob3dfMmQgKG5lZ19hcnJheSAoLTEwOi0zLC04Oi00 OjIpKQotKwotKyAgISBFbmNsb3NpbmcgdGhlIGFycmF5IHNsaWNlIGFyZ3VtZW50IGluICguLi4p IGNhdXNlc3MgZ2ZvcnRyYW4gdG8KLSsgICEgcmVwYWNrIHRoZSBhcnJheS4KLSsgIGNhbGwgc2hv d18yZCAoKGFycmF5ICgxOjEwOjMsIDE6MTA6MikpKQotKyAgY2FsbCBzaG93XzJkICgobmVnX2Fy cmF5ICgtMTA6LTMsLTg6LTQ6MikpKQotIAotLSAgY2FsbCBzaG93ICgiYXJyYXkiLCBhcnJheSkK LS0gIGNhbGwgc2hvdyAoImFycmF5ICgxOjUsMTo1KSIsIGFycmF5ICgxOjUsMTo1KSkKLS0gIGNh bGwgc2hvdyAoImFycmF5ICgxOjEwOjIsMToxMDoyKSIsIGFycmF5ICgxOjEwOjIsMToxMDoyKSkK LS0gIGNhbGwgc2hvdyAoImFycmF5ICgxOjEwOjMsMToxMDoyKSIsIGFycmF5ICgxOjEwOjMsMTox MDoyKSkKLS0gIGNhbGwgc2hvdyAoImFycmF5ICgxOjEwOjUsMToxMDozKSIsIGFycmF5ICgxOjEw OjQsMToxMDozKSkKLSsgIGNhbGwgc2hvd18zZCAoYXJyYXkzZCkKLSsgIGNhbGwgc2hvd18zZCAo YXJyYXkzZCgtMToxLC0xOjEsLTE6MSkpCi0rICBjYWxsIHNob3dfM2QgKGFycmF5M2QoMTotMTot MSwxOi0xOi0xLDE6LTE6LTEpKQotIAotLSAgY2FsbCBzaG93ICgib3RoZXIiLCBvdGhlcikKLS0g IGNhbGwgc2hvdyAoIm90aGVyICgtNTowLCAtMjowKSIsIG90aGVyICgtNTowLCAtMjowKSkKLS0g IGNhbGwgc2hvdyAoIm90aGVyICgtNTo0OjIsIC0yOjc6MykiLCBvdGhlciAoLTU6NDoyLCAtMjo3 OjMpKQotKyAgISBFbmNsb3NpbmcgdGhlIGFycmF5IHNsaWNlIGFyZ3VtZW50IGluICguLi4pIGNh dXNlc3MgZ2ZvcnRyYW4gdG8KLSsgICEgcmVwYWNrIHRoZSBhcnJheS4KLSsgIGNhbGwgc2hvd18z ZCAoKGFycmF5M2QoMTotMTotMSwxOi0xOi0xLDE6LTE6LTEpKSkKLSAKLSsgIGNhbGwgc2hvd180 ZCAoYXJyYXk0ZCkKLSsgIGNhbGwgc2hvd180ZCAoYXJyYXk0ZCAoLTM6MCwxMDo3Oi0xLDA6Mywt NzotMTA6LTEpKQotKyAgY2FsbCBzaG93XzRkIChhcnJheTRkICgzOjA6LTEsIDEwOjc6LTEsIDos IC03Oi0xMDotMSkpCi0rCi0rICAhIEVuY2xvc2luZyB0aGUgYXJyYXkgc2xpY2UgYXJndW1lbnQg aW4gKC4uLikgY2F1c2VzcyBnZm9ydHJhbiB0bwotKyAgISByZXBhY2sgdGhlIGFycmF5LgotKyAg Y2FsbCBzaG93XzRkICgoYXJyYXk0ZCAoMzotMjotMiwgMTA6NzotMiwgOiwgLTc6LTEwOi0xKSkp Ci0rCi0rICAhIEFsbCBkb25lLiAgRGVhbGxvY2F0ZS4KLSAgIGRlYWxsb2NhdGUgKG90aGVyKQot KwotKyAgISBHREIgY2F0Y2hlcyB0aGlzIGZpbmFsIGJyZWFrcG9pbnQgdG8gaW5kaWNhdGUgdGhl IGVuZCBvZiB0aGUgdGVzdC4KLSAgIHByaW50ICosICIiICEgRmluYWwgQnJlYWtwb2ludC4KLSsK LStjb250YWlucwotKwotKyAgISBGaWxsIGEgMUQgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2 ZSBpbnRlZ2VyIGluIGVhY2ggZWxlbWVudC4KLSsgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8xZCAo YXJyYXkpCi0rICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOikgOjogYXJyYXkKLSsgICAgaW50ZWdl ciA6OiBjb3VudGVyCi0rCi0rICAgIGNvdW50ZXIgPSAxCi0rICAgIGRvIGo9TEJPVU5EIChhcnJh eSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCi0rICAgICAgIGFycmF5IChqKSA9IGNvdW50ZXIK LSsgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCi0rICAgIGVuZCBkbwotKyAgZW5kIHN1YnJv dXRpbmUgZmlsbF9hcnJheV8xZAotKwotKyAgISBGaWxsIGEgMkQgYXJyYXkgd2l0aCBhIHVuaXF1 ZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIGVhY2ggZWxlbWVudC4KLSsgIHN1YnJvdXRpbmUgZmlsbF9h cnJheV8yZCAoYXJyYXkpCi0rICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6KSA6OiBhcnJheQot KyAgICBpbnRlZ2VyIDo6IGNvdW50ZXIKLSsKLSsgICAgY291bnRlciA9IDEKLSsgICAgZG8gaT1M Qk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLSsgICAgICAgZG8gaj1MQk9V TkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKLSsgICAgICAgICAgYXJyYXkgKGos aSkgPSBjb3VudGVyCi0rICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQotKyAgICAgICBl bmQgZG8KLSsgICAgZW5kIGRvCi0rICBlbmQgc3Vicm91dGluZSBmaWxsX2FycmF5XzJkCi0rCi0r ICAhIEZpbGwgYSAzRCBhcnJheSB3aXRoIGEgdW5pcXVlIHBvc2l0aXZlIGludGVnZXIgaW4gZWFj aCBlbGVtZW50LgotKyAgc3Vicm91dGluZSBmaWxsX2FycmF5XzNkIChhcnJheSkKLSsgICAgaW50 ZWdlciwgZGltZW5zaW9uICg6LDosOikgOjogYXJyYXkKLSsgICAgaW50ZWdlciA6OiBjb3VudGVy Ci0rCi0rICAgIGNvdW50ZXIgPSAxCi0rICAgIGRvIGk9TEJPVU5EIChhcnJheSwgMyksIFVCT1VO RCAoYXJyYXksIDMpLCAxCi0rICAgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMiksIFVCT1VORCAo YXJyYXksIDIpLCAxCi0rICAgICAgICAgIGRvIGs9TEJPVU5EIChhcnJheSwgMSksIFVCT1VORCAo YXJyYXksIDEpLCAxCi0rICAgICAgICAgICAgIGFycmF5IChrLCBqLGkpID0gY291bnRlcgotKyAg ICAgICAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKLSsgICAgICAgICAgZW5kIGRvCi0rICAg ICAgIGVuZCBkbwotKyAgICBlbmQgZG8KLSsgIGVuZCBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfM2QK LSsKLSsgICEgRmlsbCBhIDREIGFycmF5IHdpdGggYSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdlciBp biBlYWNoIGVsZW1lbnQuCi0rICBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfNGQgKGFycmF5KQotKyAg ICBpbnRlZ2VyLCBkaW1lbnNpb24gKDosOiw6LDopIDo6IGFycmF5Ci0rICAgIGludGVnZXIgOjog Y291bnRlcgotKwotKyAgICBjb3VudGVyID0gMQotKyAgICBkbyBpPUxCT1VORCAoYXJyYXksIDQp LCBVQk9VTkQgKGFycmF5LCA0KSwgMQotKyAgICAgICBkbyBqPUxCT1VORCAoYXJyYXksIDMpLCBV Qk9VTkQgKGFycmF5LCAzKSwgMQotKyAgICAgICAgICBkbyBrPUxCT1VORCAoYXJyYXksIDIpLCBV Qk9VTkQgKGFycmF5LCAyKSwgMQotKyAgICAgICAgICAgICBkbyBsPUxCT1VORCAoYXJyYXksIDEp LCBVQk9VTkQgKGFycmF5LCAxKSwgMQotKyAgICAgICAgICAgICAgICBhcnJheSAobCwgaywgaixp KSA9IGNvdW50ZXIKLSsgICAgICAgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCi0rICAg ICAgICAgICAgIGVuZCBkbwotKyAgICAgICAgICBlbmQgZG8KLSsgICAgICAgZW5kIGRvCi0rICAg IGVuZCBkbwotKyAgICBwcmludCAqLCAiIgotKyAgZW5kIHN1YnJvdXRpbmUgZmlsbF9hcnJheV80 ZAotIGVuZCBwcm9ncmFtIHRlc3QKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3ZsYS1zaXplb2YuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9m LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAotQEAgLTQ0LDcgKzQ0 LDcgQEAgZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtYWxsb2NhdGVkIgotIGdkYl90 ZXN0ICJwcmludCBzaXplb2YodmxhMSkiICIgPSA0MDAwIiAicHJpbnQgc2l6ZW9mIGFsbG9jYXRl ZCB2bGExIgotIGdkYl90ZXN0ICJwcmludCBzaXplb2YodmxhMSgzLDIsMSkpIiAiNCIgXAotICAg ICAicHJpbnQgc2l6ZW9mIGVsZW1lbnQgZnJvbSBhbGxvY2F0ZWQgdmxhMSIKLS1nZGJfdGVzdCAi cHJpbnQgc2l6ZW9mKHZsYTEoMzo0LDIsMSkpIiAiODAwIiBcCi0rZ2RiX3Rlc3QgInByaW50IHNp emVvZih2bGExKDM6NCwyLDEpKSIgIjgiIFwKLSAgICAgInByaW50IHNpemVvZiBzbGljZWQgdmxh MSIKLSAKLSAjIFRyeSB0byBhY2Nlc3MgdmFsdWVzIGluIHVuZGVmaW5lZCBwb2ludGVyIHRvIFZM QSAoZGFuZ2xpbmcpCi1AQCAtNjEsNyArNjEsNyBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAicHZsYS1hc3NvY2lhdGVkIgotIGdkYl90ZXN0ICJwcmludCBzaXplb2YocHZsYSkiICIgPSA0 MDAwIiAicHJpbnQgc2l6ZW9mIGFzc29jaWF0ZWQgcHZsYSIKLSBnZGJfdGVzdCAicHJpbnQgc2l6 ZW9mKHB2bGEoMywyLDEpKSIgIjQiIFwKLSAgICAgInByaW50IHNpemVvZiBlbGVtZW50IGZyb20g YXNzb2NpYXRlZCBwdmxhIgotLWdkYl90ZXN0ICJwcmludCBzaXplb2YocHZsYSgzOjQsMiwxKSki ICI4MDAiICJwcmludCBzaXplb2Ygc2xpY2VkIHB2bGEiCi0rZ2RiX3Rlc3QgInByaW50IHNpemVv ZihwdmxhKDM6NCwyLDEpKSIgIjgiICJwcmludCBzaXplb2Ygc2xpY2VkIHB2bGEiCi0gCi0gZ2Ri X2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtbmVnLWJvdW5kcy12MSJdCi0g Z2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtbmVnLWJvdW5kcy12MSIKCmRpZmYgLS1n aXQgYS9nZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25z LnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRlcy1pbi1leHByZXNz aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIzZWMzNC4uMDAwMDAw MAotLS0gYS9nZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Np b25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLUZyb20gRkVET1JBX1BB VENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2 aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDI0IE1heSAyMDIxIDIyOjMwOjMyIC0wNzAwCi1T dWJqZWN0OiBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Np b25zLnBhdGNoCi0KLTs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1p dCB3aGljaCBhZGRzIHN1cHBvcnQKLTs7IGZvciBhcnJheSBzdHJpZGVzIGluIGV4cHJlc3Npb25z LgotCi1nZGIvZm9ydHJhbjogYWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgYXJyYXkgc3RyaWRlcyBp biBleHByZXNzaW9ucwotCi1XaXRoIHRoaXMgY29tbWl0IEdEQiBub3cgdW5kZXJzdGFuZHMgdGhl IHN5bnRheCBvZiBGb3J0cmFuIGFycmF5Ci1zdHJpZGVzLCBhIHVzZXIgY2FuIHR5cGUgYW4gZXhw cmVzc2lvbiBpbmNsdWRpbmcgYW4gYXJyYXkgc3RyaWRlLCBidXQKLXRoZXkgd2lsbCBvbmx5IGdl dCBhbiBlcnJvciBpbmZvcm1pbmcgdGhlbSB0aGF0IGFycmF5IHN0cmlkZXMgYXJlIG5vdAotc3Vw cG9ydGVkLgotCi1UaGlzIGFsb25lIGlzIGFuIGltcHJvdmVtZW50IG9uIHdoYXQgd2UgaGFkIGJl Zm9yZSBpbiBHREIsIGJldHRlciB0bwotZ2l2ZSB0aGUgdXNlciBhIGhlbHBmdWwgbWVzc2FnZSB0 aGF0IGEgcGFydGljdWxhciBmZWF0dXJlIGlzIG5vdAotc3VwcG9ydGVkIHRoYW4gdG8ganVzdCBj bGFpbSBhIHN5bnRheCBlcnJvci4KLQotQmVmb3JlOgotCi0gIChnZGIpIHAgYXJyYXkgKDE6MTA6 MiwgMjoxMDoyKQotICBBIHN5bnRheCBlcnJvciBpbiBleHByZXNzaW9uLCBuZWFyIGA6MiwgMjox MDoyKScuCi0KLU5vdzoKLQotICAoZ2RiKSBwIGFycmF5ICgxOjEwOjIsIDI6MTA6MikKLSAgRm9y dHJhbiBhcnJheSBzdHJpZGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZAotCi1MYXRlciBj b21taXRzIHdpbGwgYWxsb3cgR0RCIHRvIGhhbmRsZSBhcnJheSBzdHJpZGVzIGNvcnJlY3RseS4K LQotZ2RiL0NoYW5nZUxvZzoKLQotCSogZXhwcHJpbnQuYyAoZHVtcF9zdWJleHBfYm9keV9zdGFu ZGFyZCk6IFByaW50IFJBTkdFX0hBU19TVFJJREUuCi0JKiBleHByZXNzaW9uLmggKGVudW0gcmFu Z2VfdHlwZSk6IEFkZCBSQU5HRV9IQVNfU1RSSURFLgotCSogZi1leHAueSAoYXJnbGlzdCk6IEFs bG93IGZvciBhIHNlcmllcyBvZiBzdWJyYW5nZXMuCi0JKHN1YnJhbmdlKTogQWRkIGNhc2VzIGZv ciBzdWJyYW5nZXMgd2l0aCBzdHJpZGVzLgotCSogZi1sYW5nLmMgKHZhbHVlX2Y5MF9zdWJhcnJh eSk6IENhdGNoIHVzZSBvZiBhcnJheSBzdHJpZGVzIGFuZAotCXRocm93IGFuIGVycm9yLgotCSog cGFyc2UuYyAob3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkKTogSGFuZGxlIFJBTkdFX0hBU19TVFJJ REUuCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgotCi0JKiBnZGIuZm9ydHJhbi9hcnJheS1z bGljZXMuZXhwOiBBZGQgYSBuZXcgdGVzdC4KLQotZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5j IGIvZ2RiL2V4cHByaW50LmMKLS0tLSBhL2dkYi9leHBwcmludC5jCi0rKysgYi9nZGIvZXhwcHJp bnQuYwotQEAgLTExMTgsMTIgKzExMTgsMTYgQEAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7 Ci0gCWlmICghKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotIAkgIGZw dXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKLSsJaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9I QVNfU1RSSURFKQotKwkgIGZwdXRzX2ZpbHRlcmVkICgiOkVYUCIsIHN0cmVhbSk7Ci0gCWZwdXRz X2ZpbHRlcmVkICgiJyIsIHN0cmVhbSk7Ci0gCi0gCWlmICghKHJhbmdlX2ZsYWcgJiBSQU5HRV9M T1dfQk9VTkRfREVGQVVMVCkpCi0gCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBl bHQpOwotIAlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKLSAJ ICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0rCWlmIChyYW5nZV9mbGFn ICYgUkFOR0VfSEFTX1NUUklERSkKLSsJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0s IGVsdCk7Ci0gICAgICAgfQotICAgICAgIGJyZWFrOwotIAotZGlmZiAtLWdpdCBhL2dkYi9leHBy ZXNzaW9uLmggYi9nZGIvZXhwcmVzc2lvbi5oCi0tLS0gYS9nZGIvZXhwcmVzc2lvbi5oCi0rKysg Yi9nZGIvZXhwcmVzc2lvbi5oCi1AQCAtMTk5LDYgKzE5OSw5IEBAIGVudW0gcmFuZ2VfZmxhZyA6 IHVuc2lnbmVkCi0gCi0gICAvKiBUaGUgaGlnaCBib3VuZCBvZiB0aGlzIHJhbmdlIGlzIGV4Y2x1 c2l2ZS4gICovCi0gICBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSA9IDEgPDwgMiwKLSsKLSsg IC8qIFRoZSByYW5nZSBoYXMgYSBzdHJpZGUuICAqLwotKyAgUkFOR0VfSEFTX1NUUklERSA9IDEg PDwgMywKLSB9OwotIAotIERFRl9FTlVNX0ZMQUdTX1RZUEUgKGVudW0gcmFuZ2VfZmxhZywgcmFu Z2VfZmxhZ3MpOwotZGlmZiAtLWdpdCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKLS0tLSBh L2dkYi9mLWV4cC55Ci0rKysgYi9nZGIvZi1leHAueQotQEAgLTI4NCw2ICsyODQsMTAgQEAgYXJn bGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyBwc3RhdGUt PmFyZ2xpc3RfbGVuKys7IH0KLSAJOwotIAotK2FyZ2xpc3QJOglhcmdsaXN0ICcsJyBzdWJyYW5n ZSAgICVwcmVjIEFCT1ZFX0NPTU1BCi0rCQkJeyBwc3RhdGUtPmFyZ2xpc3RfbGVuKys7IH0KLSsJ OwotKwotIC8qIFRoZXJlIGFyZSBmb3VyIHNvcnRzIG9mIHN1YnJhbmdlIHR5cGVzIGluIEY5MC4g ICovCi0gCi0gc3VicmFuZ2U6CWV4cCAnOicgZXhwCSVwcmVjIEFCT1ZFX0NPTU1BCi1AQCAtMzE0 LDYgKzMxOCwzOCBAQCBzdWJyYW5nZToJJzonCSVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJICB3cml0 ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSAJOwotIAotKy8qIEFuZCBl YWNoIG9mIHRoZSBmb3VyIHN1YnJhbmdlIHR5cGVzIGNhbiBhbHNvIGhhdmUgYSBzdHJpZGUuICAq LwotK3N1YnJhbmdlOglleHAgJzonIGV4cCAnOicgZXhwCSVwcmVjIEFCT1ZFX0NPTU1BCi0rCQkJ eyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0rCQkJICB3cml0ZV9l eHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgUkFOR0VfSEFTX1NUUklERSk7Ci0rCQkJICB3cml0ZV9l eHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSsJOwotKwotK3N1YnJhbmdlOgll eHAgJzonICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IHdyaXRlX2V4cF9lbHRfb3Bj b2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0 YXRlLAotKwkJCQkJCSAoUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUCi0rCQkJCQkJICB8IFJBTkdF X0hBU19TVFJJREUpKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JB TkdFKTsgfQotKwk7Ci0rCi0rc3VicmFuZ2U6CSc6JyBleHAgJzonIGV4cAklcHJlYyBBQk9WRV9D T01NQQotKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotKwkJ CSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsCi0rCQkJCQkJIChSQU5HRV9MT1dfQk9V TkRfREVGQVVMVAotKwkJCQkJCSAgfCBSQU5HRV9IQVNfU1RSSURFKSk7Ci0rCQkJICB3cml0ZV9l eHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSsJOwotKwotK3N1YnJhbmdlOgkn OicgJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KHBzdGF0ZSwgT1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUs Ci0rCQkJCQkJIChSQU5HRV9MT1dfQk9VTkRfREVGQVVMVAotKwkJCQkJCSAgfCBSQU5HRV9ISUdI X0JPVU5EX0RFRkFVTFQKLSsJCQkJCQkgIHwgUkFOR0VfSEFTX1NUUklERSkpOwotKwkJCSAgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0rCTsKLSsKLSBjb21wbGV4 bnVtOiAgICAgZXhwICcsJyBleHAgCi0gICAgICAgICAgICAgICAgIAl7IH0gICAgICAgICAgICAg ICAgICAgICAgICAgIAotICAgICAgICAgOwotZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dk Yi9mLWxhbmcuYwotLS0tIGEvZ2RiL2YtbGFuZy5jCi0rKysgYi9nZGIvZi1sYW5nLmMKLUBAIC0x MjQsNyArMTI0LDcgQEAgdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LAot IAkJICAgIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3Np ZGUpCi0gewotICAgaW50IHBjID0gKCpwb3MpICsgMTsKLS0gIExPTkdFU1QgbG93X2JvdW5kLCBo aWdoX2JvdW5kOwotKyAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQsIHN0cmlkZTsKLSAg IHN0cnVjdCB0eXBlICpyYW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KS0+ aW5kZXhfdHlwZSAoKSk7Ci0gICBlbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZwotICAgICA9IChl bnVtIHJhbmdlX2ZsYWcpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7 Ci1AQCAtMTQxLDYgKzE0MSwxNCBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAq YXJyYXksCi0gICBlbHNlCi0gICAgIGhpZ2hfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0 ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSAKLSsgIGlmIChyYW5nZV9m bGFnICYgUkFOR0VfSEFTX1NUUklERSkKLSsgICAgc3RyaWRlID0gdmFsdWVfYXNfbG9uZyAoZXZh bHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Ci0rICBlbHNlCi0rICAg IHN0cmlkZSA9IDE7Ci0rCi0rICBpZiAoc3RyaWRlICE9IDEpCi0rICAgIGVycm9yIChfKCJGb3J0 cmFuIGFycmF5IHN0cmlkZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIikpOwotKwotICAg cmV0dXJuIHZhbHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2Jv dW5kICsgMSk7Ci0gfQotIAotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMK LS0tLSBhL2dkYi9wYXJzZS5jCi0rKysgYi9nZGIvcGFyc2UuYwotQEAgLTkyNCw2ICs5MjQsOCBA QCBvcGVyYXRvcl9sZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHBy LCBpbnQgZW5kcG9zLAotICAgICAgIC8qIEFzc3VtZSB0aGUgcmFuZ2UgaGFzIDIgYXJndW1lbnRz IChsb3cgYm91bmQgYW5kIGhpZ2ggYm91bmQpLCB0aGVuCi0gCSByZWR1Y2UgdGhlIGFyZ3VtZW50 IGNvdW50IGlmIGFueSBib3VuZHMgYXJlIHNldCB0byBkZWZhdWx0LiAgKi8KLSAgICAgICBhcmdz ID0gMjsKLSsgICAgICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hBU19TVFJJREUpCi0rCSsrYXJn czsKLSAgICAgICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKQotIAkt LWFyZ3M7Ci0gICAgICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQp Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCi0tLS0gYS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cAotQEAgLTY2LDMgKzY2LDE5IEBAIGZvcmVh Y2ggcmVzdWx0ICRhcnJheV9jb250ZW50cyBtc2cgJG1lc3NhZ2Vfc3RyaW5ncyB7Ci0gfQotIAot IGdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBGaW5hbCBCcmVha3BvaW50 IgotKwotKyMgTmV4dCB0ZXN0IHRoYXQgYXNraW5nIGZvciBhbiBhcnJheSB3aXRoIHN0cmlkZSBh dCB0aGUgQ0xJIGdpdmVzIGFuCi0rIyBlcnJvci4KLStjbGVhbl9yZXN0YXJ0ICR7dGVzdGZpbGV9 Ci0rCi0raWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxk bid0IHJ1biB0byBtYWluIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCAi c2hvdyIKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAic2hvdyIKLStnZGJfdGVzdCAidXAi ICIuKiIKLStnZGJfdGVzdCAicCBhcnJheSAoMToxMDoyLCAxOjEwOjIpIiBcCi0rICAgICJGb3J0 cmFuIGFycmF5IHN0cmlkZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIiBcCi0rICAgICJ1 c2luZyBhcnJheSBzdHJpZGUgZ2l2ZXMgYW4gZXJyb3IiCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnox OTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNo IGIvZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhwcmVzc2lvbi1ldmFs dWF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjYyMDIyLi4wMDAw MDAwCi0tLSBhL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Np b24tZXZhbHVhdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi1Gcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVl dHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNjo1Mzoy MiAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXkt ZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNoCi0KLTs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRy ZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCBjbGVhbnMgdXAKLTs7IGFycmF5L3N0cmluZyBleHBy ZXNzaW9uIGV2YWx1YXRpb24uCi0KLWdkYi9mb3J0cmFuOiBDbGVhbiB1cCBhcnJheS9zdHJpbmcg ZXhwcmVzc2lvbiBldmFsdWF0aW9uCi0KLVRoaXMgY29tbWl0IGlzIGEgcmVmYWN0b3Igb2YgcGFy dCBvZiB0aGUgRm9ydHJhbiBhcnJheSBhbmQgc3RyaW5nCi1oYW5kbGluZyBjb2RlLgotCi1UaGUg Y3VycmVudCBjb2RlIGlzIHNwbGl0IGludG8gdHdvIGJsb2NrcywgbGlua2VkLCB3ZWlyZGx5LCB3 aXRoIGEKLWdvdG8uICBBZnRlciB0aGlzIGNvbW1pdCBhbGwgdGhlIGNvZGUgaXMgbW92ZWQgdG8g aXRzIG93biBmdW5jdGlvbiwKLWFuZCBhcnJheXMgYW5kIHN0cmluZ3MgYXJlIG5vdyBoYW5kbGVk IHVzaW5nIHRoZSBzYW1lIGNvZGU7IHRoaXMgd2lsbAotYmUgdXNlZnVsIGxhdGVyIHdoZW4gSSB3 YW50IHRvIGFkZCBhcnJheSBzdHJpZGUgc3VwcG9ydCB3aGVyZSBzdHJpbmdzCi13aWxsIHdhbnQg dG8gYmUgdHJlYXRlZCBqdXN0IGxpa2UgYXJyYXlzLCBidXQgaXMgYSBnb29kIGNsZWFuIHVwIGV2 ZW4KLXdpdGhvdXQgdGhlIGFycmF5IHN0cmlkZSB3b3JrLCB3aGljaCBpcyB3aHkgSSdtIG1lcmdp bmcgaXQgbm93LgotCi1Gb3Igbm93IHRoZSBuZXcgZnVuY3Rpb24gaXMgYWRkZWQgYXMgYSBzdGF0 aWMgd2l0aGluIGV2YWwuYywgZXZlbgotdGhvdWdoIHRoZSBmdW5jdGlvbiBpcyBGb3J0cmFuIG9u bHkuICBBIGZvbGxvd2luZyBjb21taXQgd2lsbCByZW1vdmUKLXNvbWUgb2YgdGhlIEZvcnRyYW4g c3BlY2lmaWMgY29kZSBmcm9tIGV2YWwuYyBpbnRvIG9uZSBvZiB0aGUgRm9ydHJhbgotc3BlY2lm aWMgZmlsZXMsIGluY2x1ZGluZyB0aGlzIG5ldyBmdW5jdGlvbi4KLQotVGhlcmUgc2hvdWxkIGJl IG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgotCi1nZGIvQ2hhbmdl TG9nOgotCi0JKiBldmFsLmMgKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBOZXcgZnVuY3Rpb24s IGNvbnRlbnQgaXMgdGFrZW4KLQlmcm9tLi4uCi0JKGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCk6 IC4uLmhlcmUsIGluIHR3byBwbGFjZXMuICBOb3cgYXJyYXlzCi0JYW5kIHN0cmluZ3MgYm90aCBj YWxsIHRoZSBuZXcgZnVuY3Rpb24uCi0JKGNhbGNfZjc3X2FycmF5X2RpbXMpOiBBZGQgaGVhZGVy IGNvbW1lbnQsIGhhbmRsZSBzdHJpbmdzLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dk Yi9ldmFsLmMKLS0tLSBhL2dkYi9ldmFsLmMKLSsrKyBiL2dkYi9ldmFsLmMKLUBAIC0xMjYwLDYg KzEyNjAsNjcgQEAgaXNfaW50ZWdyYWxfb3JfaW50ZWdyYWxfcmVmZXJlbmNlIChzdHJ1Y3QgdHlw ZSAqdHlwZSkKLSAJICAmJiBpc19pbnRlZ3JhbF90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSkpOwotIH0KLSAKLSsvKiBDYWxsZWQgZnJvbSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgdG8g cGVyZm9ybSBhcnJheSBpbmRleGluZywgYW5kCi0rICAgc3ViLXJhbmdlIGV4dHJhY3Rpb24sIGZv ciBGb3J0cmFuLiAgQXMgd2VsbCBhcyBhcnJheXMgdGhpcyBmdW5jdGlvbgotKyAgIGFsc28gaGFu ZGxlcyBzdHJpbmdzIGFzIHRoZXkgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhcnJheXMgb2YgY2hhcmFj dGVycy4KLSsgICBBUlJBWSBpcyB0aGUgYXJyYXkgb3Igc3RyaW5nIGJlaW5nIGFjY2Vzc2VkLiAg RVhQLCBQT1MsIGFuZCBOT1NJREUgYXJlCi0rICAgYXMgZm9yIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCwgYW5kIE5BUkdTIGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCi0rICAgaW4gdGhpcyBh Y2Nlc3MgKGUuZy4gJ2FycmF5ICgxLDIsMyknIHdvdWxkIGJlIE5BUkdTIDMpLiAgKi8KLSsKLStz dGF0aWMgc3RydWN0IHZhbHVlICoKLStmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotKwkJCWludCAqcG9zLCBpbnQgbmFy Z3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKLSt7Ci0rICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29k ZSA9PSBPUF9SQU5HRSkKLSsgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJyYXksIGV4 cCwgcG9zLCBub3NpZGUpOwotKwotKyAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi0rICAgIHsK LSsgICAgICBza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChuYXJncywgZXhwLCBwb3MsIG5vc2lk ZSk7Ci0rICAgICAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5 cGUuICAqLwotKyAgICAgIHJldHVybiBhcnJheTsKLSsgICAgfQotKwotKyAgTE9OR0VTVCBzdWJz Y3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0rICBpbnQgbmRpbWVuc2lvbnMgPSAxOwot KyAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkp OwotKwotKyAgaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLSsgICAgZXJyb3IgKF8oIlRv byBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsK LSsKLSsgIG5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0rCi0rICBp ZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCi0rICAgIGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2Yg c3Vic2NyaXB0cyIpKTsKLSsKLSsgIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rCi0rICAvKiBO b3cgdGhhdCB3ZSBrbm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lv biBsZXQgdXMKLSsgICAgIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxlbWVudCBleGlz dHMgaW4gdGhlIGFycmF5LiAgKi8KLSsKLSsgIC8qIFRha2UgYXJyYXkgaW5kaWNlcyBsZWZ0IHRv IHJpZ2h0LiAgKi8KLSsgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsgICAgewot KyAgICAgIC8qIEV2YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50 ZWdlciBpbiBGNzcuICAqLwotKyAgICAgIHZhbHVlICphcmcyID0gZXZhbHVhdGVfc3ViZXhwX3dp dGhfY29lcmNpb24gKGV4cCwgcG9zLCBub3NpZGUpOwotKwotKyAgICAgIC8qIEZpbGwgaW4gdGhl IHN1YnNjcmlwdCBhcnJheS4gICovCi0rICAgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVf YXNfbG9uZyAoYXJnMik7Ci0rICAgIH0KLSsKLSsgIC8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkg aXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICovCi0rICBmb3IgKGludCBpID0gbmFyZ3M7IGkg PiAwOyBpLS0pCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KSk7Ci0rICAgICAgTE9OR0VTVCBpbmRleCA9IHN1 YnNjcmlwdF9hcnJheVtpIC0gMV07Ci0rCi0rICAgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRl ZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKLSsJCQkJCWY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlf dHlwZSkpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gYXJyYXk7Ci0rfQotKwotIHN0cnVjdCB2YWx1 ZSAqCi0gZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUs Ci0gCQkJICBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLUBAIC0xOTUzLDMzICsy MDE0LDggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5 cGUsCi0gICAgICAgc3dpdGNoIChjb2RlKQotIAl7Ci0gCWNhc2UgVFlQRV9DT0RFX0FSUkFZOgot LQkgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQotLQkgICAgcmV0dXJu IHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCSAgZWxzZQot LQkgICAgewotLQkgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLS0JCXsKLS0JCSAgc2tp cF91bmRldGVybWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOwotLQkJICAv KiBSZXR1cm4gdGhlIGR1bW15IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4gICovCi0tCQkg IHJldHVybiBhcmcxOwotLQkJfQotLQkgICAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7Ci0t CSAgICB9Ci0tCi0gCWNhc2UgVFlQRV9DT0RFX1NUUklORzoKLS0JICBpZiAoZXhwLT5lbHRzWypw b3NdLm9wY29kZSA9PSBPUF9SQU5HRSkKLS0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkg KGFyZzEsIGV4cCwgcG9zLCBub3NpZGUpOwotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAgaWYg KG5vc2lkZSA9PSBFVkFMX1NLSVApCi0tCQl7Ci0tCQkgIHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xp c3QgKG5hcmdzLCBleHAsIHBvcywgbm9zaWRlKTsKLS0JCSAgLyogUmV0dXJuIHRoZSBkdW1teSB2 YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLwotLQkJICByZXR1cm4gYXJnMTsKLS0JCX0K LS0JICAgICAgYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywg bm9zaWRlKTsKLS0JICAgICAgcmV0dXJuIHZhbHVlX3N1YnNjcmlwdCAoYXJnMSwgdmFsdWVfYXNf bG9uZyAoYXJnMikpOwotLQkgICAgfQotKwkgIHJldHVybiBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5 IChhcmcxLCBleHAsIHBvcywgbmFyZ3MsIG5vc2lkZSk7Ci0gCi0gCWNhc2UgVFlQRV9DT0RFX1BU UjoKLSAJY2FzZSBUWVBFX0NPREVfRlVOQzoKLUBAIC0yNDAwLDQ5ICsyNDM2LDYgQEAgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCX0KLSAgICAg ICByZXR1cm4gKGFyZzEpOwotIAotLSAgICBtdWx0aV9mNzdfc3Vic2NyaXB0OgotLSAgICAgIHsK LS0JTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0tCWludCBuZGlt ZW5zaW9ucyA9IDEsIGk7Ci0tCXN0cnVjdCB2YWx1ZSAqYXJyYXkgPSBhcmcxOwotLQotLQlpZiAo bmFyZ3MgPiBNQVhfRk9SVFJBTl9ESU1TKQotLQkgIGVycm9yIChfKCJUb28gbWFueSBzdWJzY3Jp cHRzIGZvciBGNzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7Ci0tCi0tCW5kaW1lbnNp b25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0tCi0tCWlmIChuYXJncyAhPSBuZGlt ZW5zaW9ucykKLS0JICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7Ci0t Ci0tCWdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0tCi0tCS8qIE5vdyB0aGF0IHdlIGtub3cgd2Ug aGF2ZSBhIGxlZ2FsIGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9uIAotLQkgICBsZXQgdXMgYWN0 dWFsbHkgZmluZCBvdXQgd2hlcmUgdGhpcyBlbGVtZW50IGV4aXN0cyBpbiB0aGUgYXJyYXkuICAq LwotLQotLQkvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICovCi0tCWZvciAo aSA9IDA7IGkgPCBuYXJnczsgaSsrKQotLQkgIHsKLS0JICAgIC8qIEV2YWx1YXRlIGVhY2ggc3Vi c2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcuICAqLwotLQkgICAgYXJn MiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLS0K LS0JICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4gICovCi0tCi0tCSAgICBzdWJz Y3JpcHRfYXJyYXlbaV0gPSB2YWx1ZV9hc19sb25nIChhcmcyKTsKLS0JICB9Ci0tCi0tCS8qIElu dGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICovCi0tCWZv ciAoaSA9IG5hcmdzOyBpID4gMDsgaS0tKQotLQkgIHsKLS0JICAgIHN0cnVjdCB0eXBlICphcnJh eV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLS0JICAgIExPTkdF U1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwotLQotLQkgICAgYXJyYXkgPSB2YWx1 ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKLS0JCQkJCSAgICAgIGY3N19nZXRf bG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOwotLQkgIH0KLS0KLS0JcmV0dXJuIGFycmF5OwotLSAg ICAgIH0KLS0KLSAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLSAgICAgICBhcmcxID0gZXZh bHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKLSAgICAgICBpZiAobm9z aWRlID09IEVWQUxfU0tJUCkKLUBAIC0zMzU0LDEyICszMzQ3LDE3IEBAIHBhcnNlX2FuZF9ldmFs X3R5cGUgKGNoYXIgKnAsIGludCBsZW5ndGgpCi0gICByZXR1cm4gZXhwci0+ZWx0c1sxXS50eXBl OwotIH0KLSAKLSsvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGZvciBhIEZvcnRy YW4gYXJyYXkgb3Igc3RyaW5nLiAgKi8KLSsKLSBpbnQKLSBjYWxjX2Y3N19hcnJheV9kaW1zIChz dHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKLSB7Ci0gICBpbnQgbmRpbWVuID0gMTsKLSAgIHN0cnVj dCB0eXBlICp0bXBfdHlwZTsKLSAKLSsgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBUWVBF X0NPREVfU1RSSU5HKSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0gICBpZiAoKGFycmF5X3R5cGUtPmNv ZGUgKCkgIT0gVFlQRV9DT0RFX0FSUkFZKSkKLSAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1l bnNpb25zIGZvciBhIG5vbi1hcnJheSB0eXBlIikpOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1pbi1mLWxhbmcuYy5wYXRj aCBiL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1pbi1m LWxhbmcuYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNkYjgyOC4uMDAw MDAwMAotLS0gYS9nZGItcmhiejE5NjQxNjctZm9ydHJhbi1maXgtdHlwZS1mb3JtYXQtbWlzbWF0 Y2gtaW4tZi1sYW5nLmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotRnJv bSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1 ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjUgTWF5IDIwMjEgMTc6MzQ6 NTcgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1h dC1taXNtYXRjaC1pbi1mLWxhbmcuYy5wYXRjaAotCi07OyBbZm9ydHJhbl0gQmFja3BvcnQgU2lt b24gTWFyY2hpJ3MgY29tbWl0IHdoaWNoIGZpeGVzIGEgMzItYml0IGJ1aWxkCi07OyBwcm9ibGVt IGluIGdkYi9mLWxhbmcuYy4KLQotZ2RiOiBmaXggZm9ybWF0IHN0cmluZyB3YXJuaW5ncyBpbiBm LWxhbmcuYwotCi1JIGdldCBhIGJ1bmNoIG9mIHRoZXNlIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5n IGZvciBpMzg2ICgzMi1iaXQpOgotCi0gICAgICBDWFggICAgZi1sYW5nLm8KLSAgICAvaG9tZS9z aW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvZi1sYW5nLmM6IEluIGZ1bmN0aW9uICd2YWx1ZSog Zm9ydHJhbl92YWx1ZV9zdWJhcnJheSh2YWx1ZSosIGV4cHJlc3Npb24qLCBpbnQqLCBpbnQsIG5v c2lkZSknOgotICAgIC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9mLWxhbmcuYzo0 NTM6NDg6IGVycm9yOiBmb3JtYXQgJyVsZCcgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25n IGludCcsIGJ1dCBhcmd1bWVudCAyIGhhcyB0eXBlICdMT05HRVNUJyB7YWthICdsb25nIGxvbmcg aW50J30gWy1XZXJyb3I9Zm9ybWF0PV0KLSAgICAgIDQ1MyB8ICAgICAgICBkZWJ1Z19wcmludGYg KCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwgbGIpOwotICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5eICAgICB+fgotICAgICAg ICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICB8Ci0gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAgIExPTkdFU1Qge2FrYSBsb25nIGxvbmcgaW50fQotICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGludAotICAg ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWxs ZAotCi1GaXggdGhlbSBieSB1c2luZyBwbG9uZ2VzdC9wdWxvbmdlc3QuCi0KLWdkYi9DaGFuZ2VM b2c6Ci0KLQkqIGYtbGFuZy5jIChmb3J0cmFuX3ZhbHVlX3N1YmFycmF5KTogVXNlIHBsb25nZXN0 L3B1bG9uZ2VzdC4KLQotQ2hhbmdlLUlkOiBJNjY2ZWFkNTU5MzY1M2Q1YTFhM2RhYjJmZmRjNzI5 NDJjOTI4YzdkMgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi0t LS0gYS9nZGIvZi1sYW5nLmMKLSsrKyBiL2dkYi9mLWxhbmcuYwotQEAgLTQ2MywyMSArNDYzLDIx IEBAIGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBl eHByZXNzaW9uICpleHAsCi0gCSAgICAgIHN0ZDo6c3RyaW5nIHN0ciA9IHR5cGVfdG9fc3RyaW5n IChkaW1fdHlwZSk7Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gVHlwZTogJXNcbiIs IHN0ci5jX3N0ciAoKSk7Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gQXJyYXk6XG4i KTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIs IGxiKTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxk XG4iLCB1Yik7Ci0tCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJpdCBzdHJpZGU6 ICVsZFxuIiwgc2QpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBCeXRlIHN0 cmlkZTogJWxkXG4iLCBzZCAvIDgpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwt PiBUeXBlIHNpemU6ICVsZFxuIiwKLS0JCQkgICAgVFlQRV9MRU5HVEggKGRpbV90eXBlKSk7Ci0t CSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgJy0+IFRhcmdldCB0eXBlIHNpemU6ICVsZFxu IiwKLS0JCQkgICAgVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKSk7Ci0rCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICB8ICAgfC0+IExvdyBib3VuZDogJXNcbiIsIHBsb25nZXN0IChsYikpOwotKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5kOiAlc1xuIiwgcGxvbmdl c3QgKHViKSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJpdCBzdHJpZGU6 ICVzXG4iLCBwbG9uZ2VzdCAoc2QpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8 LT4gQnl0ZSBzdHJpZGU6ICVzXG4iLCBwbG9uZ2VzdCAoc2QgLyA4KSk7Ci0rCSAgICAgIGRlYnVn X3ByaW50ZiAoInwgICB8ICAgfC0+IFR5cGUgc2l6ZTogJXNcbiIsCi0rCQkJICAgIHB1bG9uZ2Vz dCAoVFlQRV9MRU5HVEggKGRpbV90eXBlKSkpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAg fCAgICctPiBUYXJnZXQgdHlwZSBzaXplOiAlc1xuIiwKLSsJCQkgICAgcHVsb25nZXN0IChUWVBF X0xFTkdUSCAodGFyZ2V0X3R5cGUpKSk7Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4g QWNjZXNzaW5nOlxuIik7Ci0tCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IExvdyBi b3VuZDogJWxkXG4iLAotLQkJCSAgICBsb3cpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAg fCAgIHwtPiBIaWdoIGJvdW5kOiAlbGRcbiIsCi0tCQkJICAgIGhpZ2gpOwotLQkgICAgICBkZWJ1 Z19wcmludGYgKCJ8ICAgfCAgICctPiBFbGVtZW50IHN0cmlkZTogJWxkXG4iLAotLQkJCSAgICBz dHJpZGUpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVz XG4iLAotKwkJCSAgICBwbG9uZ2VzdCAobG93KSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwg ICB8ICAgfC0+IEhpZ2ggYm91bmQ6ICVzXG4iLAotKwkJCSAgICBwbG9uZ2VzdCAoaGlnaCkpOwot KwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICctPiBFbGVtZW50IHN0cmlkZTogJXNcbiIs Ci0rCQkJICAgIHBsb25nZXN0IChzdHJpZGUpKTsKLSAJICAgIH0KLSAKLSAJICAvKiBDaGVjayB0 aGUgdXNlciBoYXNuJ3QgYXNrZWQgZm9yIHNvbWV0aGluZyBpbnZhbGlkLiAgKi8KLUBAIC01MTks MTMgKzUxOSwxNyBAQCBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5 LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkgIGlmIChmb3J0cmFuX2FycmF5X3NsaWNpbmdf ZGVidWcpCi0gCSAgICB7Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAnLT4gUmVzdWx0czpc biIpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBPZmZzZXQgPSAlbGRcbiIs IG9mZnNldCk7Ci0tCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IEVsZW1lbnRzID0g JWxkXG4iLCBlX2NvdW50KTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gTG93 IGJvdW5kID0gJWxkXG4iLCBuZXdfbG93KTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAg ICB8LT4gSGlnaCBib3VuZCA9ICVsZFxuIiwgbmV3X2hpZ2gpOwotLQkgICAgICBkZWJ1Z19wcmlu dGYgKCJ8ICAgICAgIHwtPiBCeXRlIHN0cmlkZSA9ICVsZFxuIiwgbmV3X3N0cmlkZSk7Ci0tCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IExhc3QgZWxlbWVudCA9ICVsZFxuIiwgbGFz dF9lbGVtKTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gUmVtYWluZGVyID0g JWxkXG4iLCByZW1haW5kZXIpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBP ZmZzZXQgPSAlc1xuIiwgcGxvbmdlc3QgKG9mZnNldCkpOwotKwkgICAgICBkZWJ1Z19wcmludGYg KCJ8ICAgICAgIHwtPiBFbGVtZW50cyA9ICVzXG4iLCBwbG9uZ2VzdCAoZV9jb3VudCkpOwotKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBMb3cgYm91bmQgPSAlc1xuIiwgcGxvbmdl c3QgKG5ld19sb3cpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gSGlnaCBi b3VuZCA9ICVzXG4iLAotKwkJCSAgICBwbG9uZ2VzdCAobmV3X2hpZ2gpKTsKLSsJICAgICAgZGVi dWdfcHJpbnRmICgifCAgICAgICB8LT4gQnl0ZSBzdHJpZGUgPSAlc1xuIiwKLSsJCQkgICAgcGxv bmdlc3QgKG5ld19zdHJpZGUpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4g TGFzdCBlbGVtZW50ID0gJXNcbiIsCi0rCQkJICAgIHBsb25nZXN0IChsYXN0X2VsZW0pKTsKLSsJ ICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gUmVtYWluZGVyID0gJXNcbiIsCi0rCQkJ ICAgIHBsb25nZXN0IChyZW1haW5kZXIpKTsKLSAJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAg ICAnLT4gQ29udGlndW91cyA9ICVzXG4iLAotIAkJCSAgICAoaXNfZGltX2NvbnRpZ3VvdXMgPyAi WWVzIiA6ICJObyIpKTsKLSAJICAgIH0KLUBAIC01NjEsMTQgKzU2NSwxNiBAQCBmb3J0cmFuX3Zh bHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LAotIAkgICAgICBzdGQ6OnN0cmluZyBzdHIgPSB0eXBlX3RvX3N0cmluZyAoZGltX3R5cGUpOwot IAkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfC0+IFR5cGU6ICVzXG4iLCBzdHIuY19zdHIgKCkp OwotIAkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfC0+IEFycmF5OlxuIik7Ci0tCSAgICAgIGRl YnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IExvdyBib3VuZDogJWxkXG4iLCBsYik7Ci0tCSAgICAg IGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6ICVsZFxuIiwgdWIpOwotLQkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBCeXRlIHN0cmlkZTogJWxkXG4iLCBzZCk7 Ci0tCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IFR5cGUgc2l6ZTogJWxkXG4iLCBU WVBFX0xFTkdUSCAoZGltX3R5cGUpKTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICAn LT4gVGFyZ2V0IHR5cGUgc2l6ZTogJWxkXG4iLAotLQkJCSAgICBUWVBFX0xFTkdUSCAodGFyZ2V0 X3R5cGUpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAl c1xuIiwgcGxvbmdlc3QgKGxiKSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+ IEhpZ2ggYm91bmQ6ICVzXG4iLCBwbG9uZ2VzdCAodWIpKTsKLSsJICAgICAgZGVidWdfcHJpbnRm ICgifCAgIHwgICB8LT4gQnl0ZSBzdHJpZGU6ICVzXG4iLCBwbG9uZ2VzdCAoc2QpKTsKLSsJICAg ICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlc1xuIiwKLSsJCQkgICAg cHVsb25nZXN0IChUWVBFX0xFTkdUSCAoZGltX3R5cGUpKSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50 ZiAoInwgICB8ICAgJy0+IFRhcmdldCB0eXBlIHNpemU6ICVzXG4iLAotKwkJCSAgICBwdWxvbmdl c3QgKFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSkpKTsKLSAJICAgICAgZGVidWdfcHJpbnRmICgi fCAgICctPiBBY2Nlc3Npbmc6XG4iKTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICAn LT4gSW5kZXg6ICVsZFxuIiwgaW5kZXgpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAg ICctPiBJbmRleDogJXNcbiIsCi0rCQkJICAgIHBsb25nZXN0IChpbmRleCkpOwotIAkgICAgfQot IAotIAkgIC8qIElmIHRoZSBhcnJheSBoYXMgYWN0dWFsIGNvbnRlbnQgdGhlbiBjaGVjayB0aGUg aW5kZXggaXMgaW4KLUBAIC02MjUsNyArNjMxLDggQEAgZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAo c3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAgICAgICBkZWJ1 Z19wcmludGYgKCInLT4gRmluYWwgcmVzdWx0OlxuIik7Ci0gICAgICAgZGVidWdfcHJpbnRmICgi ICAgIHwtPiBUeXBlOiAlc1xuIiwKLSAJCSAgICB0eXBlX3RvX3N0cmluZyAoYXJyYXlfc2xpY2Vf dHlwZSkuY19zdHIgKCkpOwotLSAgICAgIGRlYnVnX3ByaW50ZiAoIiAgICB8LT4gVG90YWwgb2Zm c2V0OiAlbGRcbiIsIHRvdGFsX29mZnNldCk7Ci0rICAgICAgZGVidWdfcHJpbnRmICgiICAgIHwt PiBUb3RhbCBvZmZzZXQ6ICVzXG4iLAotKwkJICAgIHBsb25nZXN0ICh0b3RhbF9vZmZzZXQpKTsK LSAgICAgICBkZWJ1Z19wcmludGYgKCIgICAgfC0+IEJhc2UgYWRkcmVzczogJXNcbiIsCi0gCQkg ICAgY29yZV9hZGRyX3RvX3N0cmluZyAodmFsdWVfYWRkcmVzcyAoYXJyYXkpKSk7Ci0gICAgICAg ZGVidWdfcHJpbnRmICgiICAgICctPiBDb250aWd1b3VzID0gJXNcbiIsCgpkaWZmIC0tZ2l0IGEv Z2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoIGIv Z2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWQyMzlhLi4wMDAwMDAwCi0tLSBhL2dkYi1y aGJ6MTk2NDE2Ny1mb3J0cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDIyNCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgot RGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNzoxNToyNyAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnox OTY0MTY3LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoCi0KLTs7IFtmb3J0 cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCByZW5hbWVzIGVudW0K LTs7IHJhbmdlX3R5cGUgdG8gZW51bSByYW5nZV9mbGFnLgotCi1nZGI6IHJlbmFtZSAnZW51bSBy YW5nZV90eXBlJyB0byAnZW51bSByYW5nZV9mbGFnJwotCi1UbyBhdm9pZCBjb25mdXNpb24gd2l0 aCBvdGhlciBwYXJ0cyBvZiBHREIgcmVsYXRpbmcgdG8gdHlwZXMgYW5kCi1yYW5nZXMsIHJlbmFt ZSB0aGlzIGVudW0gdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgaXQgaXMgYSBzZXQgb2YKLWluZGl2 aWR1YWwgZmxhZ3MgcmF0aGVyIHRoYW4gYW4gZW51bWVyYXRpb24gb2YgZGlmZmVyZW50IHR5cGVz IG9mCi1yYW5nZS4KLQotVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFm dGVyIHRoaXMgY29tbWl0LgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBleHBwcmludC5jIChwcmlu dF9zdWJleHBfc3RhbmRhcmQpOiBDaGFuZ2UgZW51bSByYW5nZV90eXBlIHRvCi0JcmFuZ2VfZmxh ZyBhbmQgcmVuYW1lIHZhcmlhYmxlcyB0byBtYXRjaC4KLQkoZHVtcF9zdWJleHBfYm9keV9zdGFu ZGFyZCk6IExpa2V3aXNlLgotCSogZXhwcmVzc2lvbi5oIChlbnVtIHJhbmdlX3R5cGUpOiBSZW5h bWUgdG8uLi4KLQkoZW51bSByYW5nZV9mbGFnKTogLi4udGhpcy4KLQkocmFuZ2VfdHlwZXMpOiBS ZW5hbWUgdG8uLi4KLQkocmFuZ2VfZmxhZ3MpOiAuLi50aGlzLgotCSogZi1sYW5nLmMgKHZhbHVl X2Y5MF9zdWJhcnJheSk6IENoYW5nZSBlbnVtIHJhbmdlX3R5cGUgdG8KLQlyYW5nZV9mbGFnIGFu ZCByZW5hbWUgdmFyaWFibGVzIHRvIG1hdGNoLgotCSogcGFyc2UuYyAob3BlcmF0b3JfbGVuZ3Ro X3N0YW5kYXJkKTogTGlrZXdpc2UuCi0JKiBydXN0LWV4cC55IChydXN0X3BhcnNlcjo6Y29udmVy dF9hc3RfdG9fZXhwcmVzc2lvbik6IENoYW5nZSBlbnVtCi0JcmFuZ2VfdHlwZSB0byByYW5nZV9m bGFnLgotCSogcnVzdC1sYW5nLmMgKHJ1c3RfZXZhbHVhdGVfZnVuY2FsbCk6IExpa2V3aXNlLgot CShydXN0X3JhbmdlKTogTGlrZXdpc2UuCi0JKHJ1c3RfY29tcHV0ZV9yYW5nZSk6IExpa2V3aXNl LgotCShydXN0X3N1YnNjcmlwdCk6IExpa2V3aXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4cHBy aW50LmMgYi9nZGIvZXhwcHJpbnQuYwotLS0tIGEvZ2RiL2V4cHByaW50LmMKLSsrKyBiL2dkYi9l eHBwcmludC5jCi1AQCAtNTc4LDE5ICs1NzgsMTkgQEAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSAKLSAgICAgY2FzZSBPUF9SQU5HRToK LSAgICAgICB7Ci0tCWVudW0gcmFuZ2VfdHlwZSByYW5nZV90eXBlOwotKwllbnVtIHJhbmdlX2Zs YWcgcmFuZ2VfZmxhZzsKLSAKLS0JcmFuZ2VfdHlwZSA9IChlbnVtIHJhbmdlX3R5cGUpCi0rCXJh bmdlX2ZsYWcgPSAoZW51bSByYW5nZV9mbGFnKQotIAkgIGxvbmdlc3RfdG9faW50IChleHAtPmVs dHNbcGMgKyAxXS5sb25nY29uc3QpOwotIAkqcG9zICs9IDI7Ci0gCi0tCWlmIChyYW5nZV90eXBl ICYgUkFOR0VfSElHSF9CT1VORF9FWENMVVNJVkUpCi0rCWlmIChyYW5nZV9mbGFnICYgUkFOR0Vf SElHSF9CT1VORF9FWENMVVNJVkUpCi0gCSAgZnB1dHNfZmlsdGVyZWQgKCJFWENMVVNJVkVfIiwg c3RyZWFtKTsKLSAJZnB1dHNfZmlsdGVyZWQgKCJSQU5HRSgiLCBzdHJlYW0pOwotLQlpZiAoIShy YW5nZV90eXBlICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQotKwlpZiAoIShyYW5nZV9mbGFn ICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQotIAkgIHByaW50X3N1YmV4cCAoZXhwLCBwb3Ms IHN0cmVhbSwgUFJFQ19BQk9WRV9DT01NQSk7Ci0gCWZwdXRzX2ZpbHRlcmVkICgiLi4iLCBzdHJl YW0pOwotLQlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKLSsJ aWYgKCEocmFuZ2VfZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCi0gCSAgcHJpbnRf c3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX0FCT1ZFX0NPTU1BKTsKLSAJZnB1dHNfZmls dGVyZWQgKCIpIiwgc3RyZWFtKTsKLSAJcmV0dXJuOwotQEAgLTExMDQsMjUgKzExMDQsMjUgQEAg ZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAgICAg ICBicmVhazsKLSAgICAgY2FzZSBPUF9SQU5HRToKLSAgICAgICB7Ci0tCWVudW0gcmFuZ2VfdHlw ZSByYW5nZV90eXBlOwotKwllbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZzsKLSAKLS0JcmFuZ2Vf dHlwZSA9IChlbnVtIHJhbmdlX3R5cGUpCi0rCXJhbmdlX2ZsYWcgPSAoZW51bSByYW5nZV9mbGFn KQotIAkgIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29uc3QpOwotIAllbHQg Kz0gMjsKLSAKLS0JaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkK LSsJaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkKLSAJICBmcHV0 c19maWx0ZXJlZCAoIkV4Y2x1c2l2ZSIsIHN0cmVhbSk7Ci0gCWZwdXRzX2ZpbHRlcmVkICgiUmFu Z2UgJyIsIHN0cmVhbSk7Ci0tCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVG QVVMVCkpCi0rCWlmICghKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCi0g CSAgZnB1dHNfZmlsdGVyZWQgKCJFWFAiLCBzdHJlYW0pOwotIAlmcHV0c19maWx0ZXJlZCAoIi4u Iiwgc3RyZWFtKTsKLS0JaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVM VCkpCi0rCWlmICghKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotIAkg IGZwdXRzX2ZpbHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKLSAJZnB1dHNfZmlsdGVyZWQgKCInIiwg c3RyZWFtKTsKLSAKLS0JaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxU KSkKLSsJaWYgKCEocmFuZ2VfZmxhZyAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKLSAJICBl bHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0tCWlmICghKHJhbmdlX3R5cGUg JiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotKwlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0Vf SElHSF9CT1VORF9ERUZBVUxUKSkKLSAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0s IGVsdCk7Ci0gICAgICAgfQotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9leHByZXNz aW9uLmggYi9nZGIvZXhwcmVzc2lvbi5oCi0tLS0gYS9nZGIvZXhwcmVzc2lvbi5oCi0rKysgYi9n ZGIvZXhwcmVzc2lvbi5oCi1AQCAtMTg1LDcgKzE4NSw3IEBAIGV4dGVybiB2b2lkIGR1bXBfcHJl Zml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOwot ICAgIG9yIGluY2x1c2l2ZS4gIFNvIHdlIGhhdmUgc2l4IHNvcnRzIG9mIHN1YnJhbmdlLiAgVGhp cyBlbnVtZXJhdGlvbgotICAgIHR5cGUgaXMgdG8gaWRlbnRpZnkgdGhpcy4gICovCi0gCi0tZW51 bSByYW5nZV90eXBlIDogdW5zaWduZWQKLStlbnVtIHJhbmdlX2ZsYWcgOiB1bnNpZ25lZAotIHsK LSAgIC8qIFRoaXMgaXMgYSBzdGFuZGFyZCByYW5nZS4gIEJvdGggdGhlIGxvd2VyIGFuZCB1cHBl ciBib3VuZHMgYXJlCi0gICAgICBkZWZpbmVkLCBhbmQgdGhlIGJvdW5kcyBhcmUgaW5jbHVzaXZl LiAgKi8KLUBAIC0yMDEsNiArMjAxLDYgQEAgZW51bSByYW5nZV90eXBlIDogdW5zaWduZWQKLSAg IFJBTkdFX0hJR0hfQk9VTkRfRVhDTFVTSVZFID0gMSA8PCAyLAotIH07Ci0gCi0tREVGX0VOVU1f RkxBR1NfVFlQRSAoZW51bSByYW5nZV90eXBlLCByYW5nZV90eXBlcyk7Ci0rREVGX0VOVU1fRkxB R1NfVFlQRSAoZW51bSByYW5nZV9mbGFnLCByYW5nZV9mbGFncyk7Ci0gCi0gI2VuZGlmIC8qICFk ZWZpbmVkIChFWFBSRVNTSU9OX0gpICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2Ri L2YtbGFuZy5jCi0tLS0gYS9nZGIvZi1sYW5nLmMKLSsrKyBiL2dkYi9mLWxhbmcuYwotQEAgLTEy NiwxNyArMTI2LDE3IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwK LSAgIGludCBwYyA9ICgqcG9zKSArIDE7Ci0gICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3Vu ZDsKLSAgIHN0cnVjdCB0eXBlICpyYW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy cmF5KS0+aW5kZXhfdHlwZSAoKSk7Ci0tICBlbnVtIHJhbmdlX3R5cGUgcmFuZ2VfdHlwZQotLSAg ICA9IChlbnVtIHJhbmdlX3R5cGUpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdj b25zdCk7Ci0rICBlbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZwotKyAgICA9IChlbnVtIHJhbmdl X2ZsYWcpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Ci0gCi0gICAq cG9zICs9IDM7Ci0gCi0tICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxU KQotKyAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKLSAgICAgbG93 X2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsKLSAgIGVsc2UKLSAg ICAgbG93X2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBl eHAsIHBvcywgbm9zaWRlKSk7Ci0gCi0tICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9V TkRfREVGQVVMVCkKLSsgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxU KQotICAgICBoaWdoX2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7 Ci0gICBlbHNlCi0gICAgIGhpZ2hfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJl eHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2Uu YyBiL2dkYi9wYXJzZS5jCi0tLS0gYS9nZGIvcGFyc2UuYwotKysrIGIvZ2RiL3BhcnNlLmMKLUBA IC03NzQsNyArNzc0LDcgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwciwgaW50IGVuZHBvcywKLSB7Ci0gICBpbnQgb3BsZW4gPSAxOwotICAg aW50IGFyZ3MgPSAwOwotLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGU7Ci0rICBlbnVtIHJh bmdlX2ZsYWcgcmFuZ2VfZmxhZzsKLSAgIGludCBpOwotIAotICAgaWYgKGVuZHBvcyA8IDEpCi1A QCAtOTE4LDE1ICs5MTgsMTUgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50IGVuZHBvcywKLSAKLSAgICAgY2FzZSBPUF9SQU5HRToK LSAgICAgICBvcGxlbiA9IDM7Ci0tICAgICAgcmFuZ2VfdHlwZSA9IChlbnVtIHJhbmdlX3R5cGUp Ci0rICAgICAgcmFuZ2VfZmxhZyA9IChlbnVtIHJhbmdlX2ZsYWcpCi0gCWxvbmdlc3RfdG9faW50 IChleHByLT5lbHRzW2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7Ci0gCi0gICAgICAgLyogQXNzdW1l IHRoZSByYW5nZSBoYXMgMiBhcmd1bWVudHMgKGxvdyBib3VuZCBhbmQgaGlnaCBib3VuZCksIHRo ZW4KLSAJIHJlZHVjZSB0aGUgYXJndW1lbnQgY291bnQgaWYgYW55IGJvdW5kcyBhcmUgc2V0IHRv IGRlZmF1bHQuICAqLwotICAgICAgIGFyZ3MgPSAyOwotLSAgICAgIGlmIChyYW5nZV90eXBlICYg UkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpCi0rICAgICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9M T1dfQk9VTkRfREVGQVVMVCkKLSAJLS1hcmdzOwotLSAgICAgIGlmIChyYW5nZV90eXBlICYgUkFO R0VfSElHSF9CT1VORF9ERUZBVUxUKQotKyAgICAgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSElH SF9CT1VORF9ERUZBVUxUKQotIAktLWFyZ3M7Ci0gCi0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3J1c3QtZXhwLnkgYi9nZGIvcnVzdC1leHAueQotLS0tIGEvZ2RiL3J1c3QtZXhwLnkK LSsrKyBiL2dkYi9ydXN0LWV4cC55Ci1AQCAtMjQ5Miw3ICsyNDkyLDcgQEAgcnVzdF9wYXJzZXI6 OmNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24gKGNvbnN0IHN0cnVjdCBydXN0X29wICpvcGVyYXRp b24sCi0gCi0gICAgIGNhc2UgT1BfUkFOR0U6Ci0gICAgICAgewotLQllbnVtIHJhbmdlX3R5cGUg a2luZCA9IChSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQKLSsJdW5zaWduZWQgaW50IGtpbmQgPSAo UkFOR0VfSElHSF9CT1VORF9ERUZBVUxUCi0gCQkJCXwgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQp OwotIAotIAlpZiAob3BlcmF0aW9uLT5sZWZ0Lm9wICE9IE5VTEwpCi1kaWZmIC0tZ2l0IGEvZ2Ri L3J1c3QtbGFuZy5jIGIvZ2RiL3J1c3QtbGFuZy5jCi0tLS0gYS9nZGIvcnVzdC1sYW5nLmMKLSsr KyBiL2dkYi9ydXN0LWxhbmcuYwotQEAgLTEwNzAsNyArMTA3MCw2IEBAIHJ1c3RfZXZhbHVhdGVf ZnVuY2FsbCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5v c2lkZSkKLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLSBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQotIHsKLS0gIGVudW0gcmFu Z2VfdHlwZSBraW5kOwotICAgc3RydWN0IHZhbHVlICpsb3cgPSBOVUxMLCAqaGlnaCA9IE5VTEw7 Ci0gICBzdHJ1Y3QgdmFsdWUgKmFkZHJ2YWwsICpyZXN1bHQ7Ci0gICBDT1JFX0FERFIgYWRkcjsK LUBAIC0xMDc5LDcgKzEwNzgsOCBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQotICAgc3RydWN0IHR5cGUgKnRlbXBfdHlw ZTsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gCi0tICBraW5kID0gKGVudW0gcmFuZ2VfdHlwZSkg bG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1sqcG9zICsgMV0ubG9uZ2NvbnN0KTsKLSsgIGF1dG8g a2luZAotKyAgICA9IChlbnVtIHJhbmdlX2ZsYWcpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNb KnBvcyArIDFdLmxvbmdjb25zdCk7Ci0gICAqcG9zICs9IDM7Ci0gCi0gICBpZiAoIShraW5kICYg UkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQotQEAgLTExNjksNyArMTE2OSw3IEBAIHJ1c3RfcmFu Z2UgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUp Ci0gc3RhdGljIHZvaWQKLSBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgdmFsdWUgKnJhbmdlLAotIAkJICAgIExPTkdFU1QgKmxvdywgTE9OR0VTVCAqaGlnaCwK LS0JCSAgICByYW5nZV90eXBlcyAqa2luZCkKLSsJCSAgICByYW5nZV9mbGFncyAqa2luZCkKLSB7 Ci0gICBpbnQgaTsKLSAKLUBAIC0xMjA5LDcgKzEyMDksNyBAQCBydXN0X3N1YnNjcmlwdCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKLSAgIHN0 cnVjdCB0eXBlICpyaHN0eXBlOwotICAgTE9OR0VTVCBsb3csIGhpZ2hfYm91bmQ7Ci0gICAvKiBJ bml0aWFsaXplZCB0byBhcHBlYXNlIHRoZSBjb21waWxlci4gICovCi0tICByYW5nZV90eXBlcyBr aW5kID0gUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQgfCBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQ7 Ci0rICByYW5nZV9mbGFncyBraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQgfCBSQU5HRV9I SUdIX0JPVU5EX0RFRkFVTFQ7Ci0gICBMT05HRVNUIGhpZ2ggPSAwOwotICAgaW50IHdhbnRfc2xp Y2UgPSAwOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3Bh Y2VfYXJyYXkucGF0Y2ggYi9nZGItcmhiejE5NjQxNjctZm9ydHJhbi13aGl0ZXNwYWNlX2FycmF5 LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDIxNTU5Li4wMDAwMDAwCi0t LSBhL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4K LURhdGU6IE1vbiwgMjQgTWF5IDIwMjEgMTc6MDc6MzYgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKLQotOzsgW2ZvcnRyYW5dIEJh Y2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0IHdoaWNoIGVsaW1pbmF0ZXMgdW5kZXNpcmFi bGUKLTs7IHdoaXRlc3BhY2Ugd2hlbiBwcmludGluZyBhcnJheXMuCi0KLWdkYi9mb3J0cmFuOiBD aGFuZ2Ugd2hpdGVzcGFjZSB3aGVuIHByaW50aW5nIGFycmF5cwotCi1UaGlzIGNvbW1pdCBtYWtl cyB0aGUgd2hpdGVzcGFjZSB1c2FnZSB3aGVuIHByaW50aW5nIEZvcnRyYW4gYXJyYXlzCi1tb3Jl IGNvbnNpc3RlbnQsIGFuZCBtb3JlIGlubGluZSB3aXRoIGhvdyB3ZSBwcmludCBDIGFycmF5cy4K LQotQ3VycmVudGx5IGEgMiBkaW1lbnNpb25hbCBGb3RyYW4gYXJyYXkgaXMgcHJpbnRlZCBsaWtl IHRoaXMsIEkgZmluZAotdGhlIG1hcmtlZCB3aGl0ZXNwYWNlIHVucGxlYXNhbnQ6Ci0KLSAgKCgg MSwgMiwgMykgKCA0LCA1LCA2KSApCi0gICAgXiAgICAgICAgICBeICAgICAgICBeCi0KLUFmdGVy IHRoaXMgY29tbWl0IHRoZSBzYW1lIGFycmF5IGlzIHByaW50ZWQgbGlrZSB0aGlzOgotCi0gICgo MSwgMiwgMykgKDQsIDUsIDYpKQotCi1XaGljaCBzZWVtcyBtb3JlIGlubGluZSB3aXRoIGhvdyB3 ZSBwcmludCBDIGFycmF5cywgaW4gdGhlIGNhc2Ugb2YgQwotYXJyYXlzIHdlIGRvbid0IGFkZCBl eHRyYSB3aGl0ZXNwYWNlIGJlZm9yZSB0aGUgZmlyc3QgZWxlbWVudC4KLQotZ2RiL0NoYW5nZUxv ZzoKLQotCSogZi12YWxwcmludC5jIChmNzdfcHJpbnRfYXJyYXlfMSk6IEFkanVzdCBwcmludGlu ZyBvZiB3aGl0ZXNwYWNlCi0JZm9yIGFycmF5cy4KLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6 Ci0KLQkqIGdkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHA6IFVwZGF0ZSBleHBlY3RlZCByZXN1 bHRzLgotCSogZ2RiLmZvcnRyYW4vY2xhc3MtYWxsb2NhdGFibGUtYXJyYXkuZXhwOiBMaWtld2lz ZS4KLQkqIGdkYi5mb3J0cmFuL211bHRpLWRpbS5leHA6IExpa2V3aXNlLgotCSogZ2RiLmZvcnRy YW4vdmxhLXR5cGUuZXhwOiBMaWtld2lzZS4KLQkqIGdkYi5taS9taS12bGEtZm9ydHJhbi5leHA6 IExpa2V3aXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHBy aW50LmMKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBA IC0xMzcsMTQgKzEzNywxNyBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1l bnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJICAgIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSwgdmFsdWVfY29udGVudHNfZm9yX3ByaW50aW5nX2NvbnN0ICh2YWwpCi0gCSAgICAgKyBvZmZz LCBhZGRyICsgb2Zmcyk7Ci0gCi0tCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCAiKTsK LSsJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoIik7Ci0gCSAgZjc3X3ByaW50X2FycmF5 XzEgKG5zcyArIDEsIG5kaW1lbnNpb25zLCB2YWx1ZV90eXBlIChzdWJhcnJheSksCi0gCQkJICAg ICB2YWx1ZV9jb250ZW50c19mb3JfcHJpbnRpbmcgKHN1YmFycmF5KSwKLSAJCQkgICAgIHZhbHVl X2VtYmVkZGVkX29mZnNldCAoc3ViYXJyYXkpLAotIAkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3Vi YXJyYXkpLAotIAkJCSAgICAgc3RyZWFtLCByZWN1cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0 cyk7Ci0gCSAgb2ZmcyArPSBieXRlX3N0cmlkZTsKLS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIpICIpOwotKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKLSsKLSsJICBp ZiAoaSA8IHVwcGVyYm91bmQpCi0rCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgIik7 Ci0gCX0KLSAgICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCB1cHBl cmJvdW5kKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLWRpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9hcnJheS1zbGljZXMuZXhwCi1AQCAtMzgsMTQgKzM4LDE0IEBAIGdkYl9icmVha3BvaW50IFtn ZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0KLSAKLSBzZXQgYXJyYXlfY29u dGVudHMgXAotICAgICBbbGlzdCBcCi0tCSAiID0gXFwoXFwoIDEsIDIsIDMsIDQsIDUsIDYsIDcs IDgsIDksIDEwXFwpIFxcKCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxc KSBcXCggMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzBcXCkgXFwoIDMxLCAz MiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzksIDQwXFwpIFxcKCA0MSwgNDIsIDQzLCA0NCwg NDUsIDQ2LCA0NywgNDgsIDQ5LCA1MFxcKSBcXCggNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcs IDU4LCA1OSwgNjBcXCkgXFwoIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcw XFwpIFxcKCA3MSwgNzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MFxcKSBcXCggODEs IDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTBcXCkgXFwoIDkxLCA5MiwgOTMsIDk0 LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMFxcKSBcXCkiIFwKLS0JICIgPSBcXChcXCggMSwgMiwg MywgNCwgNVxcKSBcXCggMTEsIDEyLCAxMywgMTQsIDE1XFwpIFxcKCAyMSwgMjIsIDIzLCAyNCwg MjVcXCkgXFwoIDMxLCAzMiwgMzMsIDM0LCAzNVxcKSBcXCggNDEsIDQyLCA0MywgNDQsIDQ1XFwp IFxcKSIgXAotLQkgIiA9IFxcKFxcKCAxLCAzLCA1LCA3LCA5XFwpIFxcKCAyMSwgMjMsIDI1LCAy NywgMjlcXCkgXFwoIDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBcXCggNjEsIDYzLCA2NSwgNjcsIDY5 XFwpIFxcKCA4MSwgODMsIDg1LCA4NywgODlcXCkgXFwpIiBcCi0tCSAiID0gXFwoXFwoIDEsIDQs IDcsIDEwXFwpIFxcKCAyMSwgMjQsIDI3LCAzMFxcKSBcXCggNDEsIDQ0LCA0NywgNTBcXCkgXFwo IDYxLCA2NCwgNjcsIDcwXFwpIFxcKCA4MSwgODQsIDg3LCA5MFxcKSBcXCkiIFwKLS0JICIgPSBc XChcXCggMSwgNSwgOVxcKSBcXCggMzEsIDM1LCAzOVxcKSBcXCggNjEsIDY1LCA2OVxcKSBcXCgg OTEsIDk1LCA5OVxcKSBcXCkiIFwKLS0JICIgPSBcXChcXCggLTI2LCAtMjUsIC0yNCwgLTIzLCAt MjIsIC0yMSwgLTIwLCAtMTksIC0xOCwgLTE3XFwpIFxcKCAtMTksIC0xOCwgLTE3LCAtMTYsIC0x NSwgLTE0LCAtMTMsIC0xMiwgLTExLCAtMTBcXCkgXFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwg LTcsIC02LCAtNSwgLTQsIC0zXFwpIFxcKCAtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMs IDRcXCkgXFwoIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMVxcKSBcXCggOSwgMTAsIDEx LCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOFxcKSBcXCggMTYsIDE3LCAxOCwgMTksIDIwLCAy MSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwg MzEsIDMyXFwpIFxcKCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOVxcKSBc XCggMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXCkgXFwpIiBcCi0tCSAi ID0gXFwoXFwoIC0yNiwgLTI1LCAtMjQsIC0yMywgLTIyLCAtMjFcXCkgXFwoIC0xOSwgLTE4LCAt MTcsIC0xNiwgLTE1LCAtMTRcXCkgXFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwgLTdcXCkgXFwp IiBcCi0tCSAiID0gXFwoXFwoIC0yNiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKCAtNSwgLTMs IC0xLCAxLCAzXFwpIFxcKCAxNiwgMTgsIDIwLCAyMiwgMjRcXCkgXFwoIDM3LCAzOSwgNDEsIDQz LCA0NVxcKSBcXCkiIF0KLSsJICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAx MFxcKSBcXCgxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCgyMSwg MjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMFxcKSBcXCgzMSwgMzIsIDMzLCAzNCwg MzUsIDM2LCAzNywgMzgsIDM5LCA0MFxcKSBcXCg0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0Nywg NDgsIDQ5LCA1MFxcKSBcXCg1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MFxc KSBcXCg2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MFxcKSBcXCg3MSwgNzIs IDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MFxcKSBcXCg4MSwgODIsIDgzLCA4NCwgODUs IDg2LCA4NywgODgsIDg5LCA5MFxcKSBcXCg5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgs IDk5LCAxMDBcXClcXCkiIFwKLSsJICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1XFwpIFxcKDExLCAx MiwgMTMsIDE0LCAxNVxcKSBcXCgyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoMzEsIDMyLCAzMywg MzQsIDM1XFwpIFxcKDQxLCA0MiwgNDMsIDQ0LCA0NVxcKVxcKSIgXAotKwkgIiA9IFxcKFxcKDEs IDMsIDUsIDcsIDlcXCkgXFwoMjEsIDIzLCAyNSwgMjcsIDI5XFwpIFxcKDQxLCA0MywgNDUsIDQ3 LCA0OVxcKSBcXCg2MSwgNjMsIDY1LCA2NywgNjlcXCkgXFwoODEsIDgzLCA4NSwgODcsIDg5XFwp XFwpIiBcCi0rCSAiID0gXFwoXFwoMSwgNCwgNywgMTBcXCkgXFwoMjEsIDI0LCAyNywgMzBcXCkg XFwoNDEsIDQ0LCA0NywgNTBcXCkgXFwoNjEsIDY0LCA2NywgNzBcXCkgXFwoODEsIDg0LCA4Nywg OTBcXClcXCkiIFwKLSsJICIgPSBcXChcXCgxLCA1LCA5XFwpIFxcKDMxLCAzNSwgMzlcXCkgXFwo NjEsIDY1LCA2OVxcKSBcXCg5MSwgOTUsIDk5XFwpXFwpIiBcCi0rCSAiID0gXFwoXFwoLTI2LCAt MjUsIC0yNCwgLTIzLCAtMjIsIC0yMSwgLTIwLCAtMTksIC0xOCwgLTE3XFwpIFxcKC0xOSwgLTE4 LCAtMTcsIC0xNiwgLTE1LCAtMTQsIC0xMywgLTEyLCAtMTEsIC0xMFxcKSBcXCgtMTIsIC0xMSwg LTEwLCAtOSwgLTgsIC03LCAtNiwgLTUsIC00LCAtM1xcKSBcXCgtNSwgLTQsIC0zLCAtMiwgLTEs IDAsIDEsIDIsIDMsIDRcXCkgXFwoMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXFwpIFxc KDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThcXCkgXFwoMTYsIDE3LCAxOCwg MTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwg MjksIDMwLCAzMSwgMzJcXCkgXFwoMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwg MzlcXCkgXFwoMzcsIDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXClcXCkiIFwK LSsJICIgPSBcXChcXCgtMjYsIC0yNSwgLTI0LCAtMjMsIC0yMiwgLTIxXFwpIFxcKC0xOSwgLTE4 LCAtMTcsIC0xNiwgLTE1LCAtMTRcXCkgXFwoLTEyLCAtMTEsIC0xMCwgLTksIC04LCAtN1xcKVxc KSIgXAotKwkgIiA9IFxcKFxcKC0yNiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKC01LCAtMywg LTEsIDEsIDNcXCkgXFwoMTYsIDE4LCAyMCwgMjIsIDI0XFwpIFxcKDM3LCAzOSwgNDEsIDQzLCA0 NVxcKVxcKSIgXQotIAotIHNldCBtZXNzYWdlX3N0cmluZ3MgXAotICAgICBbbGlzdCBcCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1hcnJh eS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NsYXNzLWFsbG9jYXRhYmxlLWFycmF5 LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1h cnJheS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY2xhc3MtYWxsb2NhdGFi bGUtYXJyYXkuZXhwCi1AQCAtNDAsNCArNDAsNCBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiQnJlYWsgSGVyZSIKLSAjIGNldGFpbmx5IGdvaW5nIHRvIGZhaWwuCi0gZ2RiX3Rlc3QgInBy aW50IHRoaXMiICIgPSBcXCggX2RhdGEgPSBcW15cclxuXF0rLCBfdnB0ciA9IFxbXlxyXG5cXStc XCkiCi0gZ2RiX3Rlc3QgInByaW50IHRoaXMlX2RhdGEiICIgPSBcXChQVFIgVE8gLT4gXFwoIFR5 cGUgdGVzdF90eXBlIFxcKVxcKSBcW15cclxuXF0rIgotLWdkYl90ZXN0ICJwcmludCB0aGlzJV9k YXRhJWIiICIgPSBcXChcXCggMSwgMiwgM1xcKSBcXCggNCwgNSwgNlxcKSBcXCkiCi0rZ2RiX3Rl c3QgInByaW50IHRoaXMlX2RhdGElYiIgIiA9IFxcKFxcKDEsIDIsIDNcXCkgXFwoNCwgNSwgNlxc KVxcKSIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL211bHRpLWRpbS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL211bHRpLWRpbS5leHAKLS0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbXVsdGktZGltLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9tdWx0aS1kaW0uZXhwCi1AQCAtNTcsNyArNTcsNyBAQCBnZGJfdGVzdCAicHJp bnQgZm9vKDMsMyw0KSIgXAotICAgICAicHJpbnQgYW4gaW52YWxpZCBhcnJheSBpbmRleCAoMywz LDQpIgotIAotIGdkYl90ZXN0ICJwcmludCBmb28iIFwKLS0gICAgeyA9IFwoXCggXCggMTAsIDEw XCkgXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCkgXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkg XCggMTAsIDEwXCkgXCkgXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCkg XCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDIwXCkgXCkgXCl9IFwKLSsgICAgeyA9 IFwoXChcKDEwLCAxMFwpIFwoMTAsIDEwXCkgXCgxMCwgMTBcKVwpIFwoXCgxMCwgMTBcKSBcKDEw LCAxMFwpIFwoMTAsIDEwXClcKSBcKFwoMTAsIDEwXCkgXCgxMCwgMTBcKSBcKDEwLCAxMFwpXCkg XChcKDEwLCAxMFwpIFwoMTAsIDEwXCkgXCgxMCwgMjBcKVwpXCl9IFwKLSAgICAgInByaW50IGZ1 bGwgY29udGVudHMgb2YgdGhlIGFycmF5IgotIAotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJicmVhay12YXJpYWJsZSJdCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi92bGEtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10 eXBlLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwCi1AQCAtNjYsOSArNjYs OSBAQCBnZGJfdGVzdCAicHR5cGUgdHdvdiIgXAotICAgICAgICAgICAgICAgICAgICAgICJcXHMr JGludCwgYWxsb2NhdGFibGUgOjogaXZsYTFcXFwoNSwxMiw5OVxcXCkiIFwKLSAgICAgICAgICAg ICAgICAgICAgICAiXFxzKyRpbnQsIGFsbG9jYXRhYmxlIDo6IGl2bGEyXFxcKDksMTJcXFwpIiBc Ci0gICAgICAgICAgICAgICAgICAgICAgIkVuZCBUeXBlIHR3byIgXQotLWdkYl90ZXN0ICJwcmlu dCB0d292IiAiID0gXFxcKCBpdmxhMSA9IFxcXChcXFwoIFxcXCggMSwgMSwgMSwgMSwgMVxcXClc Ci0tIFxcXCggMSwgMSwgMzIxLCAxLCAxXFxcKVwKLS0gXFxcKCAxLCAxLCAxLCAxLCAxXFxcKSAu KiIKLStnZGJfdGVzdCAicHJpbnQgdHdvdiIgIiA9IFxcXCggaXZsYTEgPSBcXFwoXFxcKFxcXCgx LCAxLCAxLCAxLCAxXFxcKVwKLSsgXFxcKDEsIDEsIDMyMSwgMSwgMVxcXClcCi0rIFxcXCgxLCAx LCAxLCAxLCAxXFxcKSAuKiIKLSAKLSAjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgYmVn aW5uIG9mIHR5cGUKLSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidGhyZWV2 LWZpbGxlZCJdCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRy YW4uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwCi0tLS0gYS9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taS12bGEtZm9ydHJhbi5leHAKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLXZsYS1mb3J0cmFuLmV4cAotQEAgLTE4MCw3ICsxODAsNyBAQCBtaV9ydW5f Y21kCi0gbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkw IiAiJGJwX2xpbmVubyIgXAotICAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtw b2ludCBhdCBsaW5lICRicF9saW5lbm8iCi0gbWlfZ2RiX3Rlc3QgIjU5MC1kYXRhLWV2YWx1YXRl LWV4cHJlc3Npb24gcHZsYTIiIFwKLS0gICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwoIDIsIDIs IDIsIDIsIDJcXCkgXFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwpXCIiIFwKLSsgICI1OTBcXF5kb25l LHZhbHVlPVwiXFwoXFwoMiwgMiwgMiwgMiwgMlxcKSBcXCgyLCAyLCAyLCAyLCAyXFwpXFwpXCIi IFwKLSAgICJldmFsdWF0ZSBhc3NvY2lhdGVkIHZsYSIKLSAKLSBtaV9jcmVhdGVfdmFyb2JqX2No ZWNrZWQgcHZsYTJfYXNzb2NpYXRlZCBwdmxhMiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0 MTY3LW1vdmUtZm9ydHJhbi1leHByLWhhbmRsaW5nLnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3LW1v dmUtZm9ydHJhbi1leHByLWhhbmRsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBiOTIxNjg0Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk2NDE2Ny1tb3ZlLWZvcnRyYW4t ZXhwci1oYW5kbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4NyArMCwwIEBACi1Gcm9t IEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVl dHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNzowMDox NyAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJhbi1leHByLWhhbmRs aW5nLnBhdGNoCi0KLTs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1p dCB3aGljaCBtb3ZlcyBGb3J0cmFuCi07OyBleHByZXNzaW9uIGhhbmRsaW5nIHRvIGYtbGFuZy5j LgotCi1nZGIvZm9ydHJhbjogTW92ZSBGb3J0cmFuIGV4cHJlc3Npb24gaGFuZGxpbmcgaW50byBm LWxhbmcuYwotCi1UaGUgRm9ydHJhbiBzcGVjaWZpYyBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJ U1QgaXMgY3VycmVudGx5IGhhbmRsZWQKLWluIHRoZSBnZW5lcmljIGV4cHJlc3Npb24gaGFuZGxp bmcgY29kZS4gIFRoZXJlJ3Mgbm8gcmVhc29uIHdoeSB0aGlzCi1zaG91bGQgYmUgdGhlIGNhc2Us IHNvIHRoaXMgY29tbWl0IG1vdmVzIGhhbmRsaW5nIG9mIHRoaXMgaW50byBGb3J0cmFuCi1zcGVj aWZpYyBmaWxlcy4KLQotVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFm dGVyIHRoaXMgY29tbWl0LgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBldmFsLmM6IFJlbW92ZSAn Zi1sYW5nLmgnIGluY2x1ZGUuCi0JKHZhbHVlX2Y5MF9zdWJhcnJheSk6IE1vdmVkIHRvIGYtbGFu Zy5jLgotCShldmFsX2NhbGwpOiBSZW5hbWVkIHRvLi4uCi0JKGV2YWx1YXRlX3N1YmV4cF9kb19j YWxsKTogLi4udGhpcywgaXMgbm8gbG9uZ2VyIHN0YXRpYywgaGVhZGVyCi0JY29tbWVudCBtb3Zl ZCBpbnRvIGhlYWRlciBmaWxlLgotCShldmFsdWF0ZV9mdW5jYWxsKTogVXBkYXRlIGNhbGwgdG8g ZXZhbF9jYWxsLgotCShza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0KTogTW92ZWQgdG8gZi1sYW5n LmMuCi0JKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBMaWtld2lzZS4KLQkoZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkKTogT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUIGhhbmRsaW5nCi0JbW92 ZWQgdG8gZXZhbHVhdGVfc3ViZXhwX2YuCi0JKGNhbGNfZjc3X2FycmF5X2RpbXMpOiBNb3ZlZCB0 byBmLWxhbmcuYwotCSogZXhwcHJpbnQuYyAocHJpbnRfc3ViZXhwX2Z1bmNhbGwpOiBOZXcgZnVu Y3Rpb24uCi0JKHByaW50X3N1YmV4cF9zdGFuZGFyZCk6IE9QX0Y3N19VTkRFVEVSTUlORURfQVJH TElTVCBoYW5kbGluZwotCW1vdmVkIHRvIHByaW50X3N1YmV4cF9mLCBPUF9GVU5DQUxMIHVzZXMg bmV3IGZ1bmN0aW9uLgotCShkdW1wX3N1YmV4cF9ib2R5X2Z1bmNhbGwpOiBOZXcgZnVuY3Rpb24u Ci0JKGR1bXBfc3ViZXhwX2JvZHlfc3RhbmRhcmQpOiBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJ U1QgaGFuZGxpbmcKLQltb3ZlZCB0byBkdW1wX3N1YmV4cF9mLCBPUF9GVU5DQUxMIHVzZXMgbmV3 IGZ1bmN0aW9uLgotCSogZXhwcmVzc2lvbi5oIChldmFsdWF0ZV9zdWJleHBfZG9fY2FsbCk6IERl Y2xhcmUuCi0JKiBmLWxhbmcuYyAodmFsdWVfZjkwX3N1YmFycmF5KTogTW92ZWQgZnJvbSBldmFs LmMuCi0JKHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QpOiBMaWtld2lzZS4KLQkoY2FsY19mNzdf YXJyYXlfZGltcyk6IExpa2V3aXNlLgotCShmb3J0cmFuX3ZhbHVlX3N1YmFycmF5KTogTGlrZXdp c2UuCi0JKGV2YWx1YXRlX3N1YmV4cF9mKTogQWRkIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElT VCBzdXBwb3J0LgotCShvcGVyYXRvcl9sZW5ndGhfZik6IExpa2V3aXNlLgotCShwcmludF9zdWJl eHBfZik6IExpa2V3aXNlLgotCShkdW1wX3N1YmV4cF9ib2R5X2YpOiBMaWtld2lzZS4KLQkqIGZv cnRyYW4tb3BlcmF0b3IuZGVmIChPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QpOiBNb3ZlCi0J ZGVjbGFyYXRpb24gb2YgdGhpcyBvcGVyYXRpb24gdG8gaGVyZS4KLQkqIHBhcnNlLmMgKG9wZXJh dG9yX2xlbmd0aF9zdGFuZGFyZCk6IE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVAotCXN1cHBv cnQgbW92ZWQgdG8gb3BlcmF0b3JfbGVuZ3RoX2YuCi0JKiBwYXJzZXItZGVmcy5oIChkdW1wX3N1 YmV4cF9ib2R5X2Z1bmNhbGwpOiBEZWNsYXJlLgotCShwcmludF9zdWJleHBfZnVuY2FsbCk6IERl Y2xhcmUuCi0JKiBzdGQtb3BlcmF0b3IuZGVmIChPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Qp OiBNb3ZlZCB0bwotCWZvcnRyYW4tb3BlcmF0b3IuZGVmLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V2 YWwuYyBiL2dkYi9ldmFsLmMKLS0tLSBhL2dkYi9ldmFsLmMKLSsrKyBiL2dkYi9ldmFsLmMKLUBA IC0yNiw3ICsyNiw2IEBACi0gI2luY2x1ZGUgImZyYW1lLmgiCi0gI2luY2x1ZGUgImdkYnRocmVh ZC5oIgotICNpbmNsdWRlICJsYW5ndWFnZS5oIgkJLyogRm9yIENBU1RfSVNfQ09OVkVSU0lPTi4g ICovCi0tI2luY2x1ZGUgImYtbGFuZy5oIgkJLyogRm9yIGFycmF5IGJvdW5kIHN0dWZmLiAgKi8K LSAjaW5jbHVkZSAiY3AtYWJpLmgiCi0gI2luY2x1ZGUgImluZmNhbGwuaCIKLSAjaW5jbHVkZSAi b2JqYy1sYW5nLmgiCi1AQCAtMzcxLDMyICszNzAsNiBAQCBpbml0X2FycmF5X2VsZW1lbnQgKHN0 cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKLSAgIHJldHVybiBpbmRl eDsKLSB9Ci0gCi0tc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0tdmFsdWVfZjkwX3N1YmFycmF5IChz dHJ1Y3QgdmFsdWUgKmFycmF5LAotLQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAq cG9zLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0tewotLSAgaW50IHBjID0gKCpwb3MpICsgMTsKLS0g IExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwotLSAgc3RydWN0IHR5cGUgKnJhbmdlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpLT5pbmRleF90eXBlICgpKTsKLS0gIGVu dW0gcmFuZ2VfdHlwZSByYW5nZV90eXBlCi0tICAgID0gKGVudW0gcmFuZ2VfdHlwZSkgbG9uZ2Vz dF90b19pbnQgKGV4cC0+ZWx0c1twY10ubG9uZ2NvbnN0KTsKLS0gCi0tICAqcG9zICs9IDM7Ci0t Ci0tICBpZiAocmFuZ2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVMVCB8fCByYW5nZV90eXBlID09 IEJPVEhfQk9VTkRfREVGQVVMVCkKLS0gICAgbG93X2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+ bG93LmNvbnN0X3ZhbCAoKTsKLS0gIGVsc2UKLS0gICAgbG93X2JvdW5kID0gdmFsdWVfYXNfbG9u ZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Ci0tCi0tICBp ZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RI X0JPVU5EX0RFRkFVTFQpCi0tICAgIGhpZ2hfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5oaWdo LmNvbnN0X3ZhbCAoKTsKLS0gIGVsc2UKLS0gICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcg KGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOwotLQotLSAgcmV0 dXJuIHZhbHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5k ICsgMSk7Ci0tfQotLQotLQotIC8qIFByb21vdGUgdmFsdWUgQVJHMSBhcyBhcHByb3ByaWF0ZSBi ZWZvcmUgcGVyZm9ybWluZyBhIHVuYXJ5IG9wZXJhdGlvbgotICAgIG9uIHRoaXMgYXJndW1lbnQu Ci0gICAgSWYgdGhlIHJlc3VsdCBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIGFueSBwYXJ0aWN1bGFy IGxhbmd1YWdlIHRoZW4gaXQKLUBAIC03NDksMTcgKzcyMiwxMyBAQCBldmFsX3NraXBfdmFsdWUg KGV4cHJlc3Npb24gKmV4cCkKLSAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5f dHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsIDEpOwotIH0KLSAKLS0vKiBFdmFsdWF0 ZSBhIGZ1bmN0aW9uIGNhbGwuICBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGlzIGluCi0tICAg QVJHVkVDWzBdIGFuZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGlu Ci0tICAgQVJHVkVDWzEuLk5BUkdTXS4gIEZVTkNUSU9OX05BTUUgaXMgdGhlIG5hbWUgb2YgdGhl IGZ1bmN0aW9uLCBpZgotLSAgIGtub3duLiAgREVGQVVMVF9SRVRVUk5fVFlQRSBpcyB1c2VkIGFz IHRoZSBmdW5jdGlvbidzIHJldHVybiB0eXBlCi0tICAgaWYgdGhlIHJldHVybiB0eXBlIGlzIHVu a25vd24uICAqLwotKy8qIFNlZSBleHByZXNzaW9uLmguICAqLwotIAotLXN0YXRpYyB2YWx1ZSAq Ci0tZXZhbF9jYWxsIChleHByZXNzaW9uICpleHAsIGVudW0gbm9zaWRlIG5vc2lkZSwKLS0JICAg aW50IG5hcmdzLCB2YWx1ZSAqKmFyZ3ZlYywKLS0JICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFt ZSwKLS0JICAgdHlwZSAqZGVmYXVsdF9yZXR1cm5fdHlwZSkKLSt2YWx1ZSAqCi0rZXZhbHVhdGVf c3ViZXhwX2RvX2NhbGwgKGV4cHJlc3Npb24gKmV4cCwgZW51bSBub3NpZGUgbm9zaWRlLAotKwkJ CSBpbnQgbmFyZ3MsIHZhbHVlICoqYXJndmVjLAotKwkJCSBjb25zdCBjaGFyICpmdW5jdGlvbl9u YW1lLAotKwkJCSB0eXBlICpkZWZhdWx0X3JldHVybl90eXBlKQotIHsKLSAgIGlmIChhcmd2ZWNb MF0gPT0gTlVMTCkKLSAgICAgZXJyb3IgKF8oIkNhbm5vdCBldmFsdWF0ZSBmdW5jdGlvbiAtLSBt YXkgYmUgaW5saW5lZCIpKTsKLUBAIC0xMjMwLDIwICsxMTk5LDggQEAgZXZhbHVhdGVfZnVuY2Fs bCAodHlwZSAqZXhwZWN0X3R5cGUsIGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0gICAgICAg LyogTm90aGluZyB0byBiZSBkb25lOyBhcmd2ZWMgYWxyZWFkeSBjb3JyZWN0bHkgc2V0IHVwLiAg Ki8KLSAgICAgfQotIAotLSAgcmV0dXJuIGV2YWxfY2FsbCAoZXhwLCBub3NpZGUsIG5hcmdzLCBh cmd2ZWMsIHZhcl9mdW5jX25hbWUsIGV4cGVjdF90eXBlKTsKLS19Ci0tCi0tLyogSGVscGVyIGZv ciBza2lwcGluZyBhbGwgdGhlIGFyZ3VtZW50cyBpbiBhbiB1bmRldGVybWluZWQgYXJndW1lbnQg bGlzdC4KLS0gICBUaGlzIGZ1bmN0aW9uIHdhcyBkZXNpZ25lZCBmb3IgdXNlIGluIHRoZSBPUF9G NzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QKLS0gICBjYXNlIG9mIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCBhcyBtdWx0aXBsZSwgYnV0IG5vdCBhbGwsIGNvZGUgcGF0aHMKLS0gICByZXF1aXJlIGEg Z2VuZXJpYyBza2lwLiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXNraXBfdW5kZXRlcm1pbmVkX2Fy Z2xpc3QgKGludCBuYXJncywgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0tCQkJ ICAgZW51bSBub3NpZGUgbm9zaWRlKQotLXsKLS0gIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7 ICsraSkKLS0gICAgZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsK LSsgIHJldHVybiBldmFsdWF0ZV9zdWJleHBfZG9fY2FsbCAoZXhwLCBub3NpZGUsIG5hcmdzLCBh cmd2ZWMsCi0rCQkJCSAgdmFyX2Z1bmNfbmFtZSwgZXhwZWN0X3R5cGUpOwotIH0KLSAKLSAvKiBS ZXR1cm4gdHJ1ZSBpZiB0eXBlIGlzIGludGVncmFsIG9yIHJlZmVyZW5jZSB0byBpbnRlZ3JhbCAq LwotQEAgLTEyNjAsNjcgKzEyMTcsNiBAQCBpc19pbnRlZ3JhbF9vcl9pbnRlZ3JhbF9yZWZlcmVu Y2UgKHN0cnVjdCB0eXBlICp0eXBlKQotIAkgICYmIGlzX2ludGVncmFsX3R5cGUgKFRZUEVfVEFS R0VUX1RZUEUgKHR5cGUpKSk7Ci0gfQotIAotLS8qIENhbGxlZCBmcm9tIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCB0byBwZXJmb3JtIGFycmF5IGluZGV4aW5nLCBhbmQKLS0gICBzdWItcmFuZ2Ug ZXh0cmFjdGlvbiwgZm9yIEZvcnRyYW4uICBBcyB3ZWxsIGFzIGFycmF5cyB0aGlzIGZ1bmN0aW9u Ci0tICAgYWxzbyBoYW5kbGVzIHN0cmluZ3MgYXMgdGhleSBjYW4gYmUgdHJlYXRlZCBsaWtlIGFy cmF5cyBvZiBjaGFyYWN0ZXJzLgotLSAgIEFSUkFZIGlzIHRoZSBhcnJheSBvciBzdHJpbmcgYmVp bmcgYWNjZXNzZWQuICBFWFAsIFBPUywgYW5kIE5PU0lERSBhcmUKLS0gICBhcyBmb3IgZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkLCBhbmQgTkFSR1MgaXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMK LS0gICBpbiB0aGlzIGFjY2VzcyAoZS5nLiAnYXJyYXkgKDEsMiwzKScgd291bGQgYmUgTkFSR1Mg MykuICAqLwotLQotLXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLWZvcnRyYW5fdmFsdWVfc3ViYXJy YXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0tCQkJaW50 ICpwb3MsIGludCBuYXJncywgZW51bSBub3NpZGUgbm9zaWRlKQotLXsKLS0gIGlmIChleHAtPmVs dHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQotLSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFy cmF5IChhcnJheSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCi0tICBpZiAobm9zaWRlID09IEVWQUxf U0tJUCkKLS0gICAgewotLSAgICAgIHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QgKG5hcmdzLCBl eHAsIHBvcywgbm9zaWRlKTsKLS0gICAgICAvKiBSZXR1cm4gdGhlIGR1bW15IHZhbHVlIHdpdGgg dGhlIGNvcnJlY3QgdHlwZS4gICovCi0tICAgICAgcmV0dXJuIGFycmF5OwotLSAgICB9Ci0tCi0t ICBMT05HRVNUIHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLS0gIGludCBuZGlt ZW5zaW9ucyA9IDE7Ci0tICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFycmF5KSk7Ci0tCi0tICBpZiAobmFyZ3MgPiBNQVhfRk9SVFJBTl9ESU1TKQotLSAg ICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9G T1JUUkFOX0RJTVMpOwotLQotLSAgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1zICh0 eXBlKTsKLS0KLS0gIGlmIChuYXJncyAhPSBuZGltZW5zaW9ucykKLS0gICAgZXJyb3IgKF8oIldy b25nIG51bWJlciBvZiBzdWJzY3JpcHRzIikpOwotLQotLSAgZ2RiX2Fzc2VydCAobmFyZ3MgPiAw KTsKLS0KLS0gIC8qIE5vdyB0aGF0IHdlIGtub3cgd2UgaGF2ZSBhIGxlZ2FsIGFycmF5IHN1YnNj cmlwdCBleHByZXNzaW9uIGxldCB1cwotLSAgICAgYWN0dWFsbHkgZmluZCBvdXQgd2hlcmUgdGhp cyBlbGVtZW50IGV4aXN0cyBpbiB0aGUgYXJyYXkuICAqLwotLQotLSAgLyogVGFrZSBhcnJheSBp bmRpY2VzIGxlZnQgdG8gcmlnaHQuICAqLwotLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsg aSsrKQotLSAgICB7Ci0tICAgICAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3JpcHQ7IGl0IG11c3Qg YmUgYSBsZWdhbCBpbnRlZ2VyIGluIEY3Ny4gICovCi0tICAgICAgdmFsdWUgKmFyZzIgPSBldmFs dWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCi0tICAgICAg LyogRmlsbCBpbiB0aGUgc3Vic2NyaXB0IGFycmF5LiAgKi8KLS0gICAgICBzdWJzY3JpcHRfYXJy YXlbaV0gPSB2YWx1ZV9hc19sb25nIChhcmcyKTsKLS0gICAgfQotLQotLSAgLyogSW50ZXJuYWwg dHlwZSBvZiBhcnJheSBpcyBhcnJhbmdlZCByaWdodCB0byBsZWZ0LiAgKi8KLS0gIGZvciAoaW50 IGkgPSBuYXJnczsgaSA+IDA7IGktLSkKLS0gICAgewotLSAgICAgIHN0cnVjdCB0eXBlICphcnJh eV90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLS0gICAgICBMT05H RVNUIGluZGV4ID0gc3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKLS0KLS0gICAgICBhcnJheSA9IHZh bHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoYXJyYXksIGluZGV4LAotLQkJCQkJZjc3X2dldF9sb3dl cmJvdW5kIChhcnJheV90eXBlKSk7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBhcnJheTsKLS19Ci0t Ci0gc3RydWN0IHZhbHVlICoKLSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKLSAJCQkgIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAot QEAgLTEzMzUsNyArMTIzMSw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5 cGUgKmV4cGVjdF90eXBlLAotICAgc3RydWN0IHR5cGUgKnR5cGU7Ci0gICBpbnQgbmFyZ3M7Ci0g ICBzdHJ1Y3QgdmFsdWUgKiphcmd2ZWM7Ci0tICBpbnQgY29kZTsKLSAgIGludCBpeDsKLSAgIGxv bmcgbWVtX29mZnNldDsKLSAgIHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotQEAgLTE5NzYsODQg KzE4NzEsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKLSAgICAgY2FzZSBPUF9GVU5DQUxMOgotICAgICAgIHJldHVybiBldmFsdWF0ZV9mdW5j YWxsIChleHBlY3RfdHlwZSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0gCi0tICAgIGNhc2UgT1BfRjc3 X1VOREVURVJNSU5FRF9BUkdMSVNUOgotLQotLSAgICAgIC8qIFJlbWVtYmVyIHRoYXQgaW4gRjc3 LCBmdW5jdGlvbnMsIHN1YnN0cmluZyBvcHMgYW5kIAotLSAgICAgICAgIGFycmF5IHN1YnNjcmlw dCBvcGVyYXRpb25zIGNhbm5vdCBiZSBkaXNhbWJpZ3VhdGVkIAotLSAgICAgICAgIGF0IHBhcnNl IHRpbWUuICBXZSBoYXZlIG1hZGUgYWxsIGFycmF5IHN1YnNjcmlwdCBvcGVyYXRpb25zLCAKLS0g ICAgICAgICBzdWJzdHJpbmcgb3BlcmF0aW9ucyBhcyB3ZWxsIGFzIGZ1bmN0aW9uIGNhbGxzICBj b21lIGhlcmUgCi0tICAgICAgICAgYW5kIHdlIG5vdyBoYXZlIHRvIGRpc2NvdmVyIHdoYXQgdGhl IGhlY2sgdGhpcyB0aGluZyBhY3R1YWxseSB3YXMuCi0tICAgICAgICAgSWYgaXQgaXMgYSBmdW5j dGlvbiwgd2UgcHJvY2VzcyBqdXN0IGFzIGlmIHdlIGdvdCBhbiBPUF9GVU5DQUxMLiAgKi8KLS0K LS0gICAgICBuYXJncyA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGMgKyAxXS5sb25nY29u c3QpOwotLSAgICAgICgqcG9zKSArPSAyOwotLQotLSAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0 aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotLSAgICAgIGFyZzEgPSBldmFs dWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpOwotLSAgICAgIHR5cGUgPSBj aGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0tICAgICAgY29kZSA9IHR5cGUtPmNv ZGUgKCk7Ci0tCi0tICAgICAgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BUUikKLS0JewotLQkgIC8q IEZvcnRyYW4gYWx3YXlzIHBhc3NlcyB2YXJpYWJsZSB0byBzdWJyb3V0aW5lcyBhcyBwb2ludGVy LgotLQkgICAgIFNvIHdlIG5lZWQgdG8gbG9vayBpbnRvIGl0cyB0YXJnZXQgdHlwZSB0byBzZWUg aWYgaXQgaXMKLS0JICAgICBhcnJheSwgc3RyaW5nIG9yIGZ1bmN0aW9uLiAgSWYgaXQgaXMsIHdl IG5lZWQgdG8gc3dpdGNoCi0tCSAgICAgdG8gdGhlIHRhcmdldCB2YWx1ZSB0aGUgb3JpZ2luYWwg b25lIHBvaW50cyB0by4gICovIAotLQkgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNr X3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLS0KLS0JICBpZiAodGFyZ2V0X3R5 cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0FSUkFZCi0tCSAgICAgIHx8IHRhcmdldF90eXBlLT5j b2RlICgpID09IFRZUEVfQ09ERV9TVFJJTkcKLS0JICAgICAgfHwgdGFyZ2V0X3R5cGUtPmNvZGUg KCkgPT0gVFlQRV9DT0RFX0ZVTkMpCi0tCSAgICB7Ci0tCSAgICAgIGFyZzEgPSB2YWx1ZV9pbmQg KGFyZzEpOwotLQkgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkp OwotLQkgICAgICBjb2RlID0gdHlwZS0+Y29kZSAoKTsKLS0JICAgIH0KLS0JfSAKLS0KLS0gICAg ICBzd2l0Y2ggKGNvZGUpCi0tCXsKLS0JY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0tCWNhc2UgVFlQ RV9DT0RFX1NUUklORzoKLS0JICByZXR1cm4gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoYXJnMSwg ZXhwLCBwb3MsIG5hcmdzLCBub3NpZGUpOwotLQotLQljYXNlIFRZUEVfQ09ERV9QVFI6Ci0tCWNh c2UgVFlQRV9DT0RFX0ZVTkM6Ci0tCWNhc2UgVFlQRV9DT0RFX0lOVEVSTkFMX0ZVTkNUSU9OOgot LQkgIC8qIEl0J3MgYSBmdW5jdGlvbiBjYWxsLiAgKi8KLS0JICAvKiBBbGxvY2F0ZSBhcmcgdmVj dG9yLCBpbmNsdWRpbmcgc3BhY2UgZm9yIHRoZSBmdW5jdGlvbiB0byBiZQotLQkgICAgIGNhbGxl ZCBpbiBhcmd2ZWNbMF0gYW5kIGEgdGVybWluYXRpbmcgTlVMTC4gICovCi0tCSAgYXJndmVjID0g KHN0cnVjdCB2YWx1ZSAqKikKLS0JICAgIGFsbG9jYSAoc2l6ZW9mIChzdHJ1Y3QgdmFsdWUgKikg KiAobmFyZ3MgKyAyKSk7Ci0tCSAgYXJndmVjWzBdID0gYXJnMTsKLS0JICB0ZW0gPSAxOwotLQkg IGZvciAoOyB0ZW0gPD0gbmFyZ3M7IHRlbSsrKQotLQkgICAgewotLQkgICAgICBhcmd2ZWNbdGVt XSA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLS0J ICAgICAgLyogQXJndW1lbnRzIGluIEZvcnRyYW4gYXJlIHBhc3NlZCBieSBhZGRyZXNzLiAgQ29l cmNlIHRoZQotLQkJIGFyZ3VtZW50cyBoZXJlIHJhdGhlciB0aGFuIGluIHZhbHVlX2FyZ19jb2Vy Y2UgYXMgb3RoZXJ3aXNlCi0tCQkgdGhlIGNhbGwgdG8gbWFsbG9jIHRvIHBsYWNlIHRoZSBub24t bHZhbHVlIHBhcmFtZXRlcnMgaW4KLS0JCSB0YXJnZXQgbWVtb3J5IGlzIGhpdCBieSB0aGlzIEZv cnRyYW4gc3BlY2lmaWMgbG9naWMuICBUaGlzCi0tCQkgcmVzdWx0cyBpbiBtYWxsb2MgYmVpbmcg Y2FsbGVkIHdpdGggYSBwb2ludGVyIHRvIGFuIGludGVnZXIKLS0JCSBmb2xsb3dlZCBieSBhbiBh dHRlbXB0IHRvIG1hbGxvYyB0aGUgYXJndW1lbnRzIHRvIG1hbGxvYyBpbgotLQkJIHRhcmdldCBt ZW1vcnkuICBJbmZpbml0ZSByZWN1cnNpb24gZW5zdWVzLiAgKi8KLS0JICAgICAgaWYgKGNvZGUg PT0gVFlQRV9DT0RFX1BUUiB8fCBjb2RlID09IFRZUEVfQ09ERV9GVU5DKQotLQkJewotLQkJICBi b29sIGlzX2FydGlmaWNpYWwKLS0JCSAgICA9IFRZUEVfRklFTERfQVJUSUZJQ0lBTCAodmFsdWVf dHlwZSAoYXJnMSksIHRlbSAtIDEpOwotLQkJICBhcmd2ZWNbdGVtXSA9IGZvcnRyYW5fYXJndW1l bnRfY29udmVydCAoYXJndmVjW3RlbV0sCi0tCQkJCQkJCSAgaXNfYXJ0aWZpY2lhbCk7Ci0tCQl9 Ci0tCSAgICB9Ci0tCSAgYXJndmVjW3RlbV0gPSAwOwkvKiBzaWduYWwgZW5kIG9mIGFyZ2xpc3Qg Ki8KLS0JICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLS0JICAgIHJldHVybiBldmFsX3NraXBf dmFsdWUgKGV4cCk7Ci0tCSAgcmV0dXJuIGV2YWxfY2FsbCAoZXhwLCBub3NpZGUsIG5hcmdzLCBh cmd2ZWMsIE5VTEwsIGV4cGVjdF90eXBlKTsKLS0KLS0JZGVmYXVsdDoKLS0JICBlcnJvciAoXygi Q2Fubm90IHBlcmZvcm0gc3Vic3RyaW5nIG9uIHRoaXMgdHlwZSIpKTsKLS0JfQotLQotICAgICBj YXNlIE9QX0NPTVBMRVg6Ci0gICAgICAgLyogV2UgaGF2ZSBhIGNvbXBsZXggbnVtYmVyLCBUaGVy ZSBzaG91bGQgYmUgMiBmbG9hdGluZyAKLSAgICAgICAgICBwb2ludCBudW1iZXJzIHRoYXQgY29t cG9zZSBpdC4gICovCi1AQCAtMzM0NiwyNyArMzE2MywzIEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUg KGNoYXIgKnAsIGludCBsZW5ndGgpCi0gICAgIGVycm9yIChfKCJJbnRlcm5hbCBlcnJvciBpbiBl dmFsX3R5cGUuIikpOwotICAgcmV0dXJuIGV4cHItPmVsdHNbMV0udHlwZTsKLSB9Ci0tCi0tLyog UmV0dXJuIHRoZSBudW1iZXIgb2YgZGltZW5zaW9ucyBmb3IgYSBGb3J0cmFuIGFycmF5IG9yIHN0 cmluZy4gICovCi0tCi0taW50Ci0tY2FsY19mNzdfYXJyYXlfZGltcyAoc3RydWN0IHR5cGUgKmFy cmF5X3R5cGUpCi0tewotLSAgaW50IG5kaW1lbiA9IDE7Ci0tICBzdHJ1Y3QgdHlwZSAqdG1wX3R5 cGU7Ci0tCi0tICBpZiAoKGFycmF5X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX1NUUklORykp Ci0tICAgIHJldHVybiAxOwotLQotLSAgaWYgKChhcnJheV90eXBlLT5jb2RlICgpICE9IFRZUEVf Q09ERV9BUlJBWSkpCi0tICAgIGVycm9yIChfKCJDYW4ndCBnZXQgZGltZW5zaW9ucyBmb3IgYSBu b24tYXJyYXkgdHlwZSIpKTsKLS0KLS0gIHRtcF90eXBlID0gYXJyYXlfdHlwZTsKLS0KLS0gIHdo aWxlICgodG1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSkpKQotLSAgICB7Ci0t ICAgICAgaWYgKHRtcF90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9BUlJBWSkKLS0JKytuZGlt ZW47Ci0tICAgIH0KLS0gIHJldHVybiBuZGltZW47Ci0tfQotZGlmZiAtLWdpdCBhL2dkYi9leHBw cmludC5jIGIvZ2RiL2V4cHByaW50LmMKLS0tLSBhL2dkYi9leHBwcmludC5jCi0rKysgYi9nZGIv ZXhwcHJpbnQuYwotQEAgLTUzLDYgKzUzLDI1IEBAIHByaW50X3N1YmV4cCAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50ICpwb3MsCi0gICBleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNj LT5wcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIHByZWMpOwotIH0KLSAKLSsvKiBTZWUg cGFyc2VyLWRlZnMuaC4gICovCi0rCi0rdm9pZAotK3ByaW50X3N1YmV4cF9mdW5jYWxsIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSsJCSAgICAgIHN0cnVjdCB1aV9maWxlICpz dHJlYW0pCi0rewotKyAgKCpwb3MpICs9IDI7Ci0rICB1bnNpZ25lZCBuYXJncyA9IGxvbmdlc3Rf dG9faW50IChleHAtPmVsdHNbKnBvc10ubG9uZ2NvbnN0KTsKLSsgIHByaW50X3N1YmV4cCAoZXhw LCBwb3MsIHN0cmVhbSwgUFJFQ19TVUZGSVgpOwotKyAgZnB1dHNfZmlsdGVyZWQgKCIgKCIsIHN0 cmVhbSk7Ci0rICBmb3IgKHVuc2lnbmVkIHRlbSA9IDA7IHRlbSA8IG5hcmdzOyB0ZW0rKykKLSsg ICAgewotKyAgICAgIGlmICh0ZW0gIT0gMCkKLSsJZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVh bSk7Ci0rICAgICAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX0FCT1ZFX0NP TU1BKTsKLSsgICAgfQotKyAgZnB1dHNfZmlsdGVyZWQgKCIpIiwgc3RyZWFtKTsKLSt9Ci0rCi0g LyogU3RhbmRhcmQgaW1wbGVtZW50YXRpb24gb2YgcHJpbnRfc3ViZXhwIGZvciB1c2UgaW4gbGFu Z3VhZ2VfZGVmbgotICAgIHZlY3RvcnMuICAqLwotIHZvaWQKLUBAIC0xODcsMTggKzIwNiw3IEBA IHByaW50X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3Ms Ci0gICAgICAgcmV0dXJuOwotIAotICAgICBjYXNlIE9QX0ZVTkNBTEw6Ci0tICAgIGNhc2UgT1Bf Rjc3X1VOREVURVJNSU5FRF9BUkdMSVNUOgotLSAgICAgICgqcG9zKSArPSAyOwotLSAgICAgIG5h cmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1twYyArIDFdLmxvbmdjb25zdCk7Ci0tICAg ICAgcHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX1NVRkZJWCk7Ci0tICAgICAg ZnB1dHNfZmlsdGVyZWQgKCIgKCIsIHN0cmVhbSk7Ci0tICAgICAgZm9yICh0ZW0gPSAwOyB0ZW0g PCBuYXJnczsgdGVtKyspCi0tCXsKLS0JICBpZiAodGVtICE9IDApCi0tCSAgICBmcHV0c19maWx0 ZXJlZCAoIiwgIiwgc3RyZWFtKTsKLS0JICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0s IFBSRUNfQUJPVkVfQ09NTUEpOwotLQl9Ci0tICAgICAgZnB1dHNfZmlsdGVyZWQgKCIpIiwgc3Ry ZWFtKTsKLSsgICAgICBwcmludF9zdWJleHBfZnVuY2FsbCAoZXhwLCBwb3MsIHN0cmVhbSk7Ci0g ICAgICAgcmV0dXJuOwotIAotICAgICBjYXNlIE9QX05BTUU6Ci1AQCAtNzk2LDYgKzgwNCwyMiBA QCBkdW1wX3N1YmV4cF9ib2R5IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBpbnQgZWx0KQotICAgcmV0dXJuIGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfZXhw X2Rlc2MtPmR1bXBfc3ViZXhwX2JvZHkgKGV4cCwgc3RyZWFtLCBlbHQpOwotIH0KLSAKLSsvKiBT ZWUgcGFyc2VyLWRlZnMuaC4gICovCi0rCi0raW50Ci0rZHVtcF9zdWJleHBfYm9keV9mdW5jYWxs IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotKwkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwg aW50IGVsdCkKLSt7Ci0rICBpbnQgbmFyZ3MgPSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW2Vs dF0ubG9uZ2NvbnN0KTsKLSsgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIk51bWJlciBvZiBh cmdzOiAlZCIsIG5hcmdzKTsKLSsgIGVsdCArPSAyOwotKwotKyAgZm9yIChpbnQgaSA9IDE7IGkg PD0gbmFyZ3MgKyAxOyBpKyspCi0rICAgIGVsdCA9IGR1bXBfc3ViZXhwIChleHAsIHN0cmVhbSwg ZWx0KTsKLSsKLSsgIHJldHVybiBlbHQ7Ci0rfQotKwotIC8qIERlZmF1bHQgdmFsdWUgZm9yIHN1 YmV4cF9ib2R5IGluIGV4cF9kZXNjcmlwdG9yIHZlY3Rvci4gICovCi0gCi0gaW50Ci1AQCAtOTMx LDE4ICs5NTUsNyBAQCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLAotICAgICAgIGVsdCArPSAyOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIE9QX0ZV TkNBTEw6Ci0tICAgIGNhc2UgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUOgotLSAgICAgIHsK LS0JaW50IGksIG5hcmdzOwotLQotLQluYXJncyA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNb ZWx0XS5sb25nY29uc3QpOwotLQotLQlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJOdW1iZXIg b2YgYXJnczogJWQiLCBuYXJncyk7Ci0tCWVsdCArPSAyOwotLQotLQlmb3IgKGkgPSAxOyBpIDw9 IG5hcmdzICsgMTsgaSsrKQotLQkgIGVsdCA9IGR1bXBfc3ViZXhwIChleHAsIHN0cmVhbSwgZWx0 KTsKLS0gICAgICB9Ci0rICAgICAgZWx0ID0gZHVtcF9zdWJleHBfYm9keV9mdW5jYWxsIChleHAs IHN0cmVhbSwgZWx0KTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBPUF9BUlJBWToKLSAgICAg ICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2V4cHJlc3Npb24uaCBiL2dkYi9leHByZXNzaW9uLmgKLS0t LSBhL2dkYi9leHByZXNzaW9uLmgKLSsrKyBiL2dkYi9leHByZXNzaW9uLmgKLUBAIC0xNTUsNiAr MTU1LDE4IEBAIGVudW0gbm9zaWRlCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkCi0gICAoc3RydWN0IHR5cGUgKiwgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50 ICosIGVudW0gbm9zaWRlKTsKLSAKLSsvKiBFdmFsdWF0ZSBhIGZ1bmN0aW9uIGNhbGwuICBUaGUg ZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGlzIGluIEFSR1ZFQ1swXSBhbmQKLSsgICB0aGUgYXJndW1l bnRzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGluIEFSR1ZFQ1sxLi5OQVJHU10uCi0rICAg RlVOQ1RJT05fTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24sIGlmIGtub3duLgotKyAg IERFRkFVTFRfUkVUVVJOX1RZUEUgaXMgdXNlZCBhcyB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdHlw ZSBpZiB0aGUgcmV0dXJuCi0rICAgdHlwZSBpcyB1bmtub3duLiAgKi8KLSsKLStleHRlcm4gc3Ry dWN0IHZhbHVlICpldmFsdWF0ZV9zdWJleHBfZG9fY2FsbCAoZXhwcmVzc2lvbiAqZXhwLAotKwkJ CQkJICAgICAgZW51bSBub3NpZGUgbm9zaWRlLAotKwkJCQkJICAgICAgaW50IG5hcmdzLCB2YWx1 ZSAqKmFyZ3ZlYywKLSsJCQkJCSAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCi0rCQkJ CQkgICAgICB0eXBlICpkZWZhdWx0X3JldHVybl90eXBlKTsKLSsKLSAvKiBGcm9tIGV4cHByaW50 LmMgKi8KLSAKLSBleHRlcm4gdm9pZCBwcmludF9leHByZXNzaW9uIChzdHJ1Y3QgZXhwcmVzc2lv biAqLCBzdHJ1Y3QgdWlfZmlsZSAqKTsKLWRpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmMgYi9nZGIv Zi1sYW5nLmMKLS0tLSBhL2dkYi9mLWxhbmcuYwotKysrIGIvZ2RiL2YtbGFuZy5jCi1AQCAtMTE0 LDYgKzExNCwxMzQgQEAgZW51bSBmX3ByaW1pdGl2ZV90eXBlcyB7Ci0gICBucl9mX3ByaW1pdGl2 ZV90eXBlcwotIH07Ci0gCi0rLyogQ2FsbGVkIGZyb20gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSB0 byB0YWtlIGEgc2xpY2Ugb2YgYW4gYXJyYXkgb3IgYQotKyAgIHN0cmluZy4gIEFSUkFZIGlzIHRo ZSBhcnJheSBvciBzdHJpbmcgdG8gYmUgYWNjZXNzZWQuICBFWFAsIFBPUywgYW5kCi0rICAgTk9T SURFIGFyZSBhcyBmb3IgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkLiAgUmV0dXJuIGEgdmFsdWUg dGhhdCBpcyBhCi0rICAgc2xpY2Ugb2YgdGhlIGFycmF5LiAgKi8KLSsKLStzdGF0aWMgc3RydWN0 IHZhbHVlICoKLSt2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCi0rCQkg ICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkK LSt7Ci0rICBpbnQgcGMgPSAoKnBvcykgKyAxOwotKyAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hf Ym91bmQ7Ci0rICBzdHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBl IChhcnJheSktPmluZGV4X3R5cGUgKCkpOwotKyAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUK LSsgICAgPSAoZW51bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5s b25nY29uc3QpOwotKwotKyAgKnBvcyArPSAzOwotKwotKyAgaWYgKHJhbmdlX3R5cGUgPT0gTE9X X0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0rICAg IGxvd19ib3VuZCA9IHJhbmdlLT5ib3VuZHMgKCktPmxvdy5jb25zdF92YWwgKCk7Ci0rICBlbHNl Ci0rICAgIGxvd19ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0 ciwgZXhwLCBwb3MsIG5vc2lkZSkpOwotKwotKyAgaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VO RF9ERUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQotKyAgICBoaWdo X2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0rICBlbHNlCi0r ICAgIGhpZ2hfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIs IGV4cCwgcG9zLCBub3NpZGUpKTsKLSsKLSsgIHJldHVybiB2YWx1ZV9zbGljZSAoYXJyYXksIGxv d19ib3VuZCwgaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwotK30KLSsKLSsvKiBIZWxwZXIg Zm9yIHNraXBwaW5nIGFsbCB0aGUgYXJndW1lbnRzIGluIGFuIHVuZGV0ZXJtaW5lZCBhcmd1bWVu dCBsaXN0LgotKyAgIFRoaXMgZnVuY3Rpb24gd2FzIGRlc2lnbmVkIGZvciB1c2UgaW4gdGhlIE9Q X0Y3N19VTkRFVEVSTUlORURfQVJHTElTVAotKyAgIGNhc2Ugb2YgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIGFzIG11bHRpcGxlLCBidXQgbm90IGFsbCwgY29kZSBwYXRocwotKyAgIHJlcXVpcmUg YSBnZW5lcmljIHNraXAuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2tpcF91bmRldGVybWluZWRf YXJnbGlzdCAoaW50IG5hcmdzLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSsJ CQkgICBlbnVtIG5vc2lkZSBub3NpZGUpCi0rewotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJn czsgKytpKQotKyAgICBldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUp OwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGZvciBhIEZvcnRy YW4gYXJyYXkgb3Igc3RyaW5nLiAgKi8KLSsKLStpbnQKLStjYWxjX2Y3N19hcnJheV9kaW1zIChz dHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSkKLSt7Ci0rICBpbnQgbmRpbWVuID0gMTsKLSsgIHN0cnVj dCB0eXBlICp0bXBfdHlwZTsKLSsKLSsgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBUWVBF X0NPREVfU1RSSU5HKSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICBpZiAoKGFycmF5X3R5cGUtPmNv ZGUgKCkgIT0gVFlQRV9DT0RFX0FSUkFZKSkKLSsgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1l bnNpb25zIGZvciBhIG5vbi1hcnJheSB0eXBlIikpOwotKwotKyAgdG1wX3R5cGUgPSBhcnJheV90 eXBlOwotKwotKyAgd2hpbGUgKCh0bXBfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBl KSkpCi0rICAgIHsKLSsgICAgICBpZiAodG1wX3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0FS UkFZKQotKwkrK25kaW1lbjsKLSsgICAgfQotKyAgcmV0dXJuIG5kaW1lbjsKLSt9Ci0rCi0rLyog Q2FsbGVkIGZyb20gZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIHRvIHBlcmZvcm0gYXJyYXkgaW5k ZXhpbmcsIGFuZAotKyAgIHN1Yi1yYW5nZSBleHRyYWN0aW9uLCBmb3IgRm9ydHJhbi4gIEFzIHdl bGwgYXMgYXJyYXlzIHRoaXMgZnVuY3Rpb24KLSsgICBhbHNvIGhhbmRsZXMgc3RyaW5ncyBhcyB0 aGV5IGNhbiBiZSB0cmVhdGVkIGxpa2UgYXJyYXlzIG9mIGNoYXJhY3RlcnMuCi0rICAgQVJSQVkg aXMgdGhlIGFycmF5IG9yIHN0cmluZyBiZWluZyBhY2Nlc3NlZC4gIEVYUCwgUE9TLCBhbmQgTk9T SURFIGFyZQotKyAgIGFzIGZvciBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQsIGFuZCBOQVJHUyBp cyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cwotKyAgIGluIHRoaXMgYWNjZXNzIChlLmcuICdhcnJh eSAoMSwyLDMpJyB3b3VsZCBiZSBOQVJHUyAzKS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1 ZSAqCi0rZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwKLSsJCQlpbnQgKnBvcywgaW50IG5hcmdzLCBlbnVtIG5vc2lkZSBu b3NpZGUpCi0rewotKyAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCi0r ICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFycmF5LCBleHAsIHBvcywgbm9zaWRlKTsK LSsKLSsgIGlmIChub3NpZGUgPT0gRVZBTF9TS0lQKQotKyAgICB7Ci0rICAgICAgc2tpcF91bmRl dGVybWluZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOwotKyAgICAgIC8qIFJl dHVybiB0aGUgZHVtbXkgdmFsdWUgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiAgKi8KLSsgICAgICBy ZXR1cm4gYXJyYXk7Ci0rICAgIH0KLSsKLSsgIExPTkdFU1Qgc3Vic2NyaXB0X2FycmF5W01BWF9G T1JUUkFOX0RJTVNdOwotKyAgaW50IG5kaW1lbnNpb25zID0gMTsKLSsgIHN0cnVjdCB0eXBlICp0 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLSsKLSsgIGlmIChuYXJn cyA+IE1BWF9GT1JUUkFOX0RJTVMpCi0rICAgIGVycm9yIChfKCJUb28gbWFueSBzdWJzY3JpcHRz IGZvciBGNzcgKCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7Ci0rCi0rICBuZGltZW5zaW9u cyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOwotKwotKyAgaWYgKG5hcmdzICE9IG5kaW1l bnNpb25zKQotKyAgICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7Ci0r Ci0rICBnZGJfYXNzZXJ0IChuYXJncyA+IDApOwotKwotKyAgLyogTm93IHRoYXQgd2Uga25vdyB3 ZSBoYXZlIGEgbGVnYWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb24gbGV0IHVzCi0rICAgICBh Y3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhpc3RzIGluIHRoZSBhcnJheS4g ICovCi0rCi0rICAvKiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICovCi0rICBm b3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyBpKyspCi0rICAgIHsKLSsgICAgICAvKiBFdmFsdWF0 ZSBlYWNoIHN1YnNjcmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8K LSsgICAgICB2YWx1ZSAqYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAs IHBvcywgbm9zaWRlKTsKLSsKLSsgICAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3JpcHQgYXJyYXku ICAqLwotKyAgICAgIHN1YnNjcmlwdF9hcnJheVtpXSA9IHZhbHVlX2FzX2xvbmcgKGFyZzIpOwot KyAgICB9Ci0rCi0rICAvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFycmFuZ2VkIHJpZ2h0 IHRvIGxlZnQuICAqLwotKyAgZm9yIChpbnQgaSA9IG5hcmdzOyBpID4gMDsgaS0tKQotKyAgICB7 Ci0rICAgICAgc3RydWN0IHR5cGUgKmFycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90 eXBlIChhcnJheSkpOwotKyAgICAgIExPTkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAt IDFdOwotKwotKyAgICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJheSwg aW5kZXgsCi0rCQkJCQlmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsKLSsgICAgfQot KwotKyAgcmV0dXJuIGFycmF5OwotK30KLSsKLSAvKiBTcGVjaWFsIGV4cHJlc3Npb24gZXZhbHVh dGlvbiBjYXNlcyBmb3IgRm9ydHJhbi4gICovCi0gCi0gc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi1A QCAtMjg1LDYgKzQxMyw4NyBAQCBldmFsdWF0ZV9zdWJleHBfZiAoc3RydWN0IHR5cGUgKmV4cGVj dF90eXBlLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkJCQkgICBUWVBFX0xFTkdUSCAodHlw ZSkpOwotICAgICAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZXhw LT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0gCQkJCSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSkpKTsKLSsKLSsKLSsgICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJ U1Q6Ci0rICAgICAgLyogUmVtZW1iZXIgdGhhdCBpbiBGNzcsIGZ1bmN0aW9ucywgc3Vic3RyaW5n IG9wcyBhbmQgYXJyYXkgc3Vic2NyaXB0Ci0rICAgICAgICAgb3BlcmF0aW9ucyBjYW5ub3QgYmUg ZGlzYW1iaWd1YXRlZCBhdCBwYXJzZSB0aW1lLiAgV2UgaGF2ZSBtYWRlCi0rICAgICAgICAgYWxs IGFycmF5IHN1YnNjcmlwdCBvcGVyYXRpb25zLCBzdWJzdHJpbmcgb3BlcmF0aW9ucyBhcyB3ZWxs IGFzCi0rICAgICAgICAgZnVuY3Rpb24gY2FsbHMgY29tZSBoZXJlIGFuZCB3ZSBub3cgaGF2ZSB0 byBkaXNjb3ZlciB3aGF0IHRoZSBoZWNrCi0rICAgICAgICAgdGhpcyB0aGluZyBhY3R1YWxseSB3 YXMuICBJZiBpdCBpcyBhIGZ1bmN0aW9uLCB3ZSBwcm9jZXNzIGp1c3QgYXMKLSsgICAgICAgICBp ZiB3ZSBnb3QgYW4gT1BfRlVOQ0FMTC4gICovCi0rICAgICAgaW50IG5hcmdzID0gbG9uZ2VzdF90 b19pbnQgKGV4cC0+ZWx0c1twYyArIDFdLmxvbmdjb25zdCk7Ci0rICAgICAgKCpwb3MpICs9IDI7 Ci0rCi0rICAgICAgLyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxp bmcgd2l0aC4gICovCi0rICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhw LCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUg KGFyZzEpKTsKLSsgICAgICBlbnVtIHR5cGVfY29kZSBjb2RlID0gdHlwZS0+Y29kZSAoKTsKLSsK LSsgICAgICBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQotKwl7Ci0rCSAgLyogRm9ydHJhbiBh bHdheXMgcGFzc2VzIHZhcmlhYmxlIHRvIHN1YnJvdXRpbmVzIGFzIHBvaW50ZXIuCi0rCSAgICAg U28gd2UgbmVlZCB0byBsb29rIGludG8gaXRzIHRhcmdldCB0eXBlIHRvIHNlZSBpZiBpdCBpcwot KwkgICAgIGFycmF5LCBzdHJpbmcgb3IgZnVuY3Rpb24uICBJZiBpdCBpcywgd2UgbmVlZCB0byBz d2l0Y2gKLSsJICAgICB0byB0aGUgdGFyZ2V0IHZhbHVlIHRoZSBvcmlnaW5hbCBvbmUgcG9pbnRz IHRvLiAgKi8KLSsJICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rCi0rCSAgaWYgKHRhcmdldF90eXBlLT5jb2RlICgp ID09IFRZUEVfQ09ERV9BUlJBWQotKwkgICAgICB8fCB0YXJnZXRfdHlwZS0+Y29kZSAoKSA9PSBU WVBFX0NPREVfU1RSSU5HCi0rCSAgICAgIHx8IHRhcmdldF90eXBlLT5jb2RlICgpID09IFRZUEVf Q09ERV9GVU5DKQotKwkgICAgewotKwkgICAgICBhcmcxID0gdmFsdWVfaW5kIChhcmcxKTsKLSsJ ICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKLSsJICAgICAg Y29kZSA9IHR5cGUtPmNvZGUgKCk7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICBzd2l0Y2ggKGNv ZGUpCi0rCXsKLSsJY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0rCWNhc2UgVFlQRV9DT0RFX1NUUklO RzoKLSsJICByZXR1cm4gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5h cmdzLCBub3NpZGUpOwotKwotKwljYXNlIFRZUEVfQ09ERV9QVFI6Ci0rCWNhc2UgVFlQRV9DT0RF X0ZVTkM6Ci0rCWNhc2UgVFlQRV9DT0RFX0lOVEVSTkFMX0ZVTkNUSU9OOgotKwkgIHsKLSsJICAg IC8qIEl0J3MgYSBmdW5jdGlvbiBjYWxsLiAgQWxsb2NhdGUgYXJnIHZlY3RvciwgaW5jbHVkaW5n Ci0rCSAgICBzcGFjZSBmb3IgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBpbiBhcmd2ZWNbMF0g YW5kIGEKLSsJICAgIHRlcm1pbmF0aW9uIE5VTEwuICAqLwotKwkgICAgc3RydWN0IHZhbHVlICoq YXJndmVjID0gKHN0cnVjdCB2YWx1ZSAqKikKLSsJICAgICAgYWxsb2NhIChzaXplb2YgKHN0cnVj dCB2YWx1ZSAqKSAqIChuYXJncyArIDIpKTsKLSsJICAgIGFyZ3ZlY1swXSA9IGFyZzE7Ci0rCSAg ICBpbnQgdGVtID0gMTsKLSsJICAgIGZvciAoOyB0ZW0gPD0gbmFyZ3M7IHRlbSsrKQotKwkgICAg ICB7Ci0rCQlhcmd2ZWNbdGVtXSA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAs IHBvcywgbm9zaWRlKTsKLSsJCS8qIEFyZ3VtZW50cyBpbiBGb3J0cmFuIGFyZSBwYXNzZWQgYnkg YWRkcmVzcy4gIENvZXJjZSB0aGUKLSsJCSAgIGFyZ3VtZW50cyBoZXJlIHJhdGhlciB0aGFuIGlu IHZhbHVlX2FyZ19jb2VyY2UgYXMKLSsJCSAgIG90aGVyd2lzZSB0aGUgY2FsbCB0byBtYWxsb2Mg dG8gcGxhY2UgdGhlIG5vbi1sdmFsdWUKLSsJCSAgIHBhcmFtZXRlcnMgaW4gdGFyZ2V0IG1lbW9y eSBpcyBoaXQgYnkgdGhpcyBGb3J0cmFuCi0rCQkgICBzcGVjaWZpYyBsb2dpYy4gIFRoaXMgcmVz dWx0cyBpbiBtYWxsb2MgYmVpbmcgY2FsbGVkCi0rCQkgICB3aXRoIGEgcG9pbnRlciB0byBhbiBp bnRlZ2VyIGZvbGxvd2VkIGJ5IGFuIGF0dGVtcHQgdG8KLSsJCSAgIG1hbGxvYyB0aGUgYXJndW1l bnRzIHRvIG1hbGxvYyBpbiB0YXJnZXQgbWVtb3J5LgotKwkJICAgSW5maW5pdGUgcmVjdXJzaW9u IGVuc3Vlcy4gICovCi0rCQlpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSIHx8IGNvZGUgPT0gVFlQ RV9DT0RFX0ZVTkMpCi0rCQkgIHsKLSsJCSAgICBib29sIGlzX2FydGlmaWNpYWwKLSsJCSAgICAg ID0gVFlQRV9GSUVMRF9BUlRJRklDSUFMICh2YWx1ZV90eXBlIChhcmcxKSwgdGVtIC0gMSk7Ci0r CQkgICAgYXJndmVjW3RlbV0gPSBmb3J0cmFuX2FyZ3VtZW50X2NvbnZlcnQgKGFyZ3ZlY1t0ZW1d LAotKwkJCQkJCQkgICAgaXNfYXJ0aWZpY2lhbCk7Ci0rCQkgIH0KLSsJICAgICAgfQotKwkgICAg YXJndmVjW3RlbV0gPSAwOwkvKiBzaWduYWwgZW5kIG9mIGFyZ2xpc3QgKi8KLSsJICAgIGlmIChu b3NpZGUgPT0gRVZBTF9TS0lQKQotKwkgICAgICByZXR1cm4gZXZhbF9za2lwX3ZhbHVlIChleHAp OwotKwkgICAgcmV0dXJuIGV2YWx1YXRlX3N1YmV4cF9kb19jYWxsIChleHAsIG5vc2lkZSwgbmFy Z3MsIGFyZ3ZlYywgTlVMTCwKLSsJCQkJCSAgICBleHBlY3RfdHlwZSk7Ci0rCSAgfQotKwotKwlk ZWZhdWx0OgotKwkgIGVycm9yIChfKCJDYW5ub3QgcGVyZm9ybSBzdWJzdHJpbmcgb24gdGhpcyB0 eXBlIikpOwotKwl9Ci0gICAgIH0KLSAKLSAgIC8qIFNob3VsZCBiZSB1bnJlYWNoYWJsZS4gICov Ci1AQCAtMzE4LDYgKzUyNywxMSBAQCBvcGVyYXRvcl9sZW5ndGhfZiAoY29uc3Qgc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKLSAgICAgICBvcGxlbiA9IDE7Ci0g ICAgICAgYXJncyA9IDI7Ci0gICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgT1BfRjc3X1VOREVU RVJNSU5FRF9BUkdMSVNUOgotKyAgICAgIG9wbGVuID0gMzsKLSsgICAgICBhcmdzID0gMSArIGxv bmdlc3RfdG9faW50IChleHAtPmVsdHNbcGMgLSAyXS5sb25nY29uc3QpOwotKyAgICAgIGJyZWFr OwotICAgICB9Ci0gCi0gICAqb3BsZW5wID0gb3BsZW47Ci1AQCAtMzkwLDYgKzYwNCwxMCBAQCBw cmludF9zdWJleHBfZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0gICAgIGNh c2UgQklOT1BfRk9SVFJBTl9NT0RVTE86Ci0gICAgICAgcHJpbnRfYmlub3Bfc3ViZXhwX2YgKGV4 cCwgcG9zLCBzdHJlYW0sIHByZWMsICJNT0RVTE8iKTsKLSAgICAgICByZXR1cm47Ci0rCi0rICAg IGNhc2UgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUOgotKyAgICAgIHByaW50X3N1YmV4cF9m dW5jYWxsIChleHAsIHBvcywgc3RyZWFtKTsKLSsgICAgICByZXR1cm47Ci0gICAgIH0KLSB9Ci0g Ci1AQCAtNDMyLDYgKzY1MCw5IEBAIGR1bXBfc3ViZXhwX2JvZHlfZiAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwKLSAgICAgY2FzZSBCSU5PUF9GT1JUUkFOX01PRFVMTzoKLSAgICAgICBvcGVyYXRv cl9sZW5ndGhfZiAoZXhwLCAoZWx0ICsgMSksICZvcGxlbiwgJm5hcmdzKTsKLSAgICAgICBicmVh azsKLSsKLSsgICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Q6Ci0rICAgICAgcmV0 dXJuIGR1bXBfc3ViZXhwX2JvZHlfZnVuY2FsbCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0gICAgIH0K LSAKLSAgIGVsdCArPSBvcGxlbjsKLWRpZmYgLS1naXQgYS9nZGIvZm9ydHJhbi1vcGVyYXRvci5k ZWYgYi9nZGIvZm9ydHJhbi1vcGVyYXRvci5kZWYKLS0tLSBhL2dkYi9mb3J0cmFuLW9wZXJhdG9y LmRlZgotKysrIGIvZ2RiL2ZvcnRyYW4tb3BlcmF0b3IuZGVmCi1AQCAtMTcsNiArMTcsMTQgQEAK LSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSsvKiBUaGlzIGlzIEVYQUNU TFkgbGlrZSBPUF9GVU5DQUxMIGJ1dCBpcyBzZW1hbnRpY2FsbHkgZGlmZmVyZW50LgotKyAgIElu IEY3NywgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb25zLCBzdWJzdHJpbmcgZXhwcmVzc2lvbnMg YW5kCi0rICAgZnVuY3Rpb24gY2FsbHMgYXJlIGFsbCBleGFjdGx5IHRoZSBzYW1lIHN5bnRhY3Rp Y2FsbHkuICBUaGV5Ci0rICAgbWF5IG9ubHkgYmUgZGlzYW1iaWd1YXRlZCBhdCBydW50aW1lLiAg VGh1cyB0aGlzIG9wZXJhdG9yLAotKyAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHdlIGhhdmUgZm91 bmQgc29tZXRoaW5nIG9mIHRoZSBmb3JtCi0rICAgPG5hbWU+ICggPHN0dWZmPiApLiAgKi8KLStP UCAoT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUKQotKwotIC8qIFNpbmdsZSBvcGVyYW5kIGJ1 aWx0aW5zLiAgKi8KLSBPUCAoVU5PUF9GT1JUUkFOX0tJTkQpCi0gT1AgKFVOT1BfRk9SVFJBTl9G TE9PUikKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi0tLS0gYS9nZGIv cGFyc2UuYwotKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC04MTcsNyArODE3LDYgQEAgb3BlcmF0b3Jf bGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50IGVuZHBv cywKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBPUF9GVU5DQUxMOgotLSAgICBjYXNlIE9Q X0Y3N19VTkRFVEVSTUlORURfQVJHTElTVDoKLSAgICAgICBvcGxlbiA9IDM7Ci0gICAgICAgYXJn cyA9IDEgKyBsb25nZXN0X3RvX2ludCAoZXhwci0+ZWx0c1tlbmRwb3MgLSAyXS5sb25nY29uc3Qp OwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2RiL3Bh cnNlci1kZWZzLmgKLS0tLSBhL2dkYi9wYXJzZXItZGVmcy5oCi0rKysgYi9nZGIvcGFyc2VyLWRl ZnMuaAotQEAgLTMzOCw2ICszMzgsMTMgQEAgZXh0ZXJuIGludCBkdW1wX3N1YmV4cCAoc3RydWN0 IGV4cHJlc3Npb24gKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50KTsKLSBleHRlcm4gaW50IGR1bXBf c3ViZXhwX2JvZHlfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICosIAotIAkJCQkgICAgICBz dHJ1Y3QgdWlfZmlsZSAqLCBpbnQpOwotIAotKy8qIER1bXAgKHRvIFNUUkVBTSkgYSBmdW5jdGlv biBjYWxsIGxpa2UgZXhwcmVzc2lvbiBhdCBwb3NpdGlvbiBFTFQgaW4gdGhlCi0rICAgZXhwcmVz c2lvbiBhcnJheSBFWFAuICBSZXR1cm4gYSBuZXcgdmFsdWUgZm9yIEVMVCBqdXN0IGFmdGVyIHRo ZQotKyAgIGZ1bmN0aW9uIGNhbGwgZXhwcmVzc2lvbi4gICovCi0rCi0rZXh0ZXJuIGludCBkdW1w X3N1YmV4cF9ib2R5X2Z1bmNhbGwgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0rCQkJCSAgICAg c3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGVsdCk7Ci0rCi0gZXh0ZXJuIHZvaWQgb3BlcmF0 b3JfbGVuZ3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLCBpbnQgKik7 Ci0gCi0gZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3Qg ZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAotQEAgLTQ0MCw2ICs0NDcsMTUgQEAgZXh0ZXJuIHZv aWQgcHJpbnRfc3ViZXhwIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQgKiwgc3RydWN0IHVpX2Zp bGUgKiwKLSBleHRlcm4gdm9pZCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNz aW9uICosIGludCAqLCAKLSAJCQkJICAgc3RydWN0IHVpX2ZpbGUgKiwgZW51bSBwcmVjZWRlbmNl KTsKLSAKLSsvKiBQcmludCBhIGZ1bmN0aW9uIGNhbGwgbGlrZSBleHByZXNzaW9uIHRvIFNUUkVB TS4gIFRoaXMgaXMgY2FsbGVkIGFzIGEKLSsgICBoZWxwZXIgZnVuY3Rpb24gYnkgd2hpY2ggcG9p bnQgdGhlIGV4cHJlc3Npb24gbm9kZSBpZGVudGlmeWluZyB0aGlzIGFzIGEKLSsgICBmdW5jdGlv biBjYWxsIGhhcyBhbHJlYWR5IGJlZW4gc3RyaXBwZWQgb2ZmIGFuZCBQT1Mgc2hvdWxkIHBvaW50 IHRvIHRoZQotKyAgIG51bWJlciBvZiBmdW5jdGlvbiBjYWxsIGFyZ3VtZW50cy4gIEVYUCBpcyB0 aGUgb2JqZWN0IGNvbnRhaW5pbmcgdGhlCi0rICAgbGlzdCBvZiBleHByZXNzaW9uIGVsZW1lbnRz LiAgKi8KLSsKLStleHRlcm4gdm9pZCBwcmludF9zdWJleHBfZnVuY2FsbCAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50ICpwb3MsCi0rCQkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci0r Ci0gLyogRnVuY3Rpb24gdXNlZCB0byBhdm9pZCBkaXJlY3QgY2FsbHMgdG8gZnByaW50ZgotICAg IGluIHRoZSBjb2RlIGdlbmVyYXRlZCBieSB0aGUgYmlzb24gcGFyc2VyLiAgKi8KLSAKLWRpZmYg LS1naXQgYS9nZGIvc3RkLW9wZXJhdG9yLmRlZiBiL2dkYi9zdGQtb3BlcmF0b3IuZGVmCi0tLS0g YS9nZGIvc3RkLW9wZXJhdG9yLmRlZgotKysrIGIvZ2RiL3N0ZC1vcGVyYXRvci5kZWYKLUBAIC0x NjgsMTQgKzE2OCw2IEBAIE9QIChPUF9GVU5DQUxMKQotICAgIHBvaW50ZXIuICBUaGlzIGlzIGFu IE9iamVjdGl2ZSBDIG1lc3NhZ2UuICAqLwotIE9QIChPUF9PQkpDX01TR0NBTEwpCi0gCi0tLyog VGhpcyBpcyBFWEFDVExZIGxpa2UgT1BfRlVOQ0FMTCBidXQgaXMgc2VtYW50aWNhbGx5IGRpZmZl cmVudC4KLS0gICBJbiBGNzcsIGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9ucywgc3Vic3RyaW5n IGV4cHJlc3Npb25zIGFuZAotLSAgIGZ1bmN0aW9uIGNhbGxzIGFyZSBhbGwgZXhhY3RseSB0aGUg c2FtZSBzeW50YWN0aWNhbGx5LiAgVGhleQotLSAgIG1heSBvbmx5IGJlIGRpc2FtYmlndWF0ZWQg YXQgcnVudGltZS4gIFRodXMgdGhpcyBvcGVyYXRvciwKLS0gICB3aGljaCBpbmRpY2F0ZXMgdGhh dCB3ZSBoYXZlIGZvdW5kIHNvbWV0aGluZyBvZiB0aGUgZm9ybQotLSAgIDxuYW1lPiAoIDxzdHVm Zj4gKS4gICovCi0tT1AgKE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCkKLS0KLSAvKiBPUF9D T01QTEVYIHRha2VzIGEgdHlwZSBpbiB0aGUgZm9sbG93aW5nIGVsZW1lbnQsIGZvbGxvd2VkIGJ5 IGFub3RoZXIKLSAgICBPUF9DT01QTEVYLCBtYWtpbmcgdGhyZWUgZXhwX2VsZW1lbnRzLiAgSXQg aXMgZm9sbG93ZWQgYnkgdHdvIGRvdWJsZQotICAgIGFyZ3MsIGFuZCBjb252ZXJ0cyB0aGVtIGlu dG8gYSBjb21wbGV4IG51bWJlciBvZiB0aGUgZ2l2ZW4gdHlwZS4gICovCgpkaWZmIC0tZ2l0IGEv Z2RiLXJoYnoxOTcwNzQxLWVhcmx5LWV4aXQtZm9yLWVtcHR5LWRlYnVnaW5mb2QtdXJsLnBhdGNo IGIvZ2RiLXJoYnoxOTcwNzQxLWVhcmx5LWV4aXQtZm9yLWVtcHR5LWRlYnVnaW5mb2QtdXJsLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjc4YjA0Li4wMDAwMDAwCi0tLSBh L2dkYi1yaGJ6MTk3MDc0MS1lYXJseS1leGl0LWZvci1lbXB0eS1kZWJ1Z2luZm9kLXVybC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9u IFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCcnVubyBMYXJzZW4gPGJsYXJzZW5AcmVkaGF0 LmNvbT4KLURhdGU6IFdlZCwgMjIgU2VwIDIwMjEgMTI6Mjk6MTEgLTAzMDAKLVN1YmplY3Q6IGdk Yi1yaGJ6MTk3MDc0MS1lYXJseS1leGl0LWZvci1lbXB0eS1kZWJ1Z2luZm9kLXVybC5wYXRjaAot Ci07O1tnZGJdIEltcHJvdmUgZWFybHkgZXhpdHMgZm9yIGVudiB2YXIgaW4gZGVidWdpbmZvZC1z dXBwb3J0LmMKLTs7KFRvbSBkZSBWcmllcykKLQotVGhlcmUncyBhbiBlYXJseSBleGl0IGluIGxp YmRlYnVnaW5mb2QncyBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlciwgd2hpY2ggY2hlY2tzCi1ib3Ro IGZvcjoKLS0gZ2V0ZW52IChERUJVR0lORk9EX1VSTFNfRU5WX1ZBUikgPT0gTlVMTCwgYW5kCi0t IChnZXRlbnYgKERFQlVHSU5GT0RfVVJMU19FTlZfVkFSKSlbMF0gPT0gJ1wwJy4KLQotSW4gZGVi dWdpbmZvZF9zb3VyY2VfcXVlcnkgYW5kIGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5ICh3aGlj aCBib3RoCi1lbmQgdXAgY2FsbGluZyBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlcikgdGhlcmUgYXJl IGFsc28gZWFybHkgZXhpdHMgY2hlY2tpbmcKLXRoZSBzYW1lIGVudiB2YXIsIGJ1dCB0aG9zZSBq dXN0IGNoZWNrIGZvciBOVUxMLgotCi1NYWtlIHRoZSBlYXJseSBleGl0IHRlc3RzIGluIGRlYnVn aW5mb2Qtc3VwcG9ydC5jIG1hdGNoIHRob3NlIGluCi1saWJkZWJ1Z2luZm9kLgotCi1nZGIvQ2hh bmdlTG9nOgotCi0yMDIwLTExLTE4ICBUb20gZGUgVnJpZXMgIDx0ZGV2cmllc0BzdXNlLmRlPgot Ci0JKiBkZWJ1Z2luZm9kLXN1cHBvcnQuYyAoZGVidWdpbmZvZF9zb3VyY2VfcXVlcnkpCi0JKGRl YnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5KTogQWxzbyBkbyBlYXJseSBleGl0IGlmCi0JIihnZXRl bnYgKERFQlVHSU5GT0RfVVJMU19FTlZfVkFSKSlbMF0gPT0gJ1wwJyIuCi0KLWRpZmYgLS1naXQg YS9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKLS0t LSBhL2dkYi9kZWJ1Z2luZm9kLXN1cHBvcnQuYwotKysrIGIvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9y dC5jCi1AQCAtOTgsNyArOTgsOCBAQCBkZWJ1Z2luZm9kX3NvdXJjZV9xdWVyeSAoY29uc3QgdW5z aWduZWQgY2hhciAqYnVpbGRfaWQsCi0gCQkJIGNvbnN0IGNoYXIgKnNyY3BhdGgsCi0gCQkJIGdk Yjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+ICpkZXN0bmFtZSkKLSB7Ci0tICBpZiAoZ2V0ZW52 IChERUJVR0lORk9EX1VSTFNfRU5WX1ZBUikgPT0gTlVMTCkKLSsgIGNvbnN0IGNoYXIgKnVybHNf ZW52X3ZhciA9IGdldGVudiAoREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIpOwotKyAgaWYgKHVybHNf ZW52X3ZhciA9PSBOVUxMIHx8IHVybHNfZW52X3ZhclswXSA9PSAnXDAnKQotICAgICByZXR1cm4g c2NvcGVkX2ZkICgtRU5PU1lTKTsKLSAKLSAgIGRlYnVnaW5mb2RfY2xpZW50ICpjID0gZGVidWdp bmZvZF9pbml0ICgpOwotQEAgLTEzNSw3ICsxMzYsOCBAQCBkZWJ1Z2luZm9kX2RlYnVnaW5mb19x dWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAqYnVpbGRfaWQsCi0gCQkJICAgIGNvbnN0IGNoYXIg KmZpbGVuYW1lLAotIAkJCSAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAqZGVzdG5h bWUpCi0gewotLSAgaWYgKGdldGVudiAoREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIpID09IE5VTEwp Ci0rICBjb25zdCBjaGFyICp1cmxzX2Vudl92YXIgPSBnZXRlbnYgKERFQlVHSU5GT0RfVVJMU19F TlZfVkFSKTsKLSsgIGlmICh1cmxzX2Vudl92YXIgPT0gTlVMTCB8fCB1cmxzX2Vudl92YXJbMF0g PT0gJ1wwJykKLSAgICAgcmV0dXJuIHNjb3BlZF9mZCAoLUVOT1NZUyk7Ci0gCi0gICBkZWJ1Z2lu Zm9kX2NsaWVudCAqYyA9IGRlYnVnaW5mb2RfaW5pdCAoKTsKCmRpZmYgLS1naXQgYS9nZGItcmhi ejE5NzEwOTYtZ2xpYmMyLjM0LTEucGF0Y2ggYi9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTEu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ODI2OTkuLjAwMDAwMDAKLS0t IGEvZ2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4zNC0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs MzA3ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx Ci1Gcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDE0 IEp1biAyMDIxIDE5OjEyOjA2IC0wNzAwCi1TdWJqZWN0OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMy LjM0LTEucGF0Y2gKLQotOzsgQmFja3BvcnQgcGF0Y2ggZml4aW5nIGdkYiBvbiBnbGliYy0yLjM0 IG1hY2hpbmVzIHdpdGggcmVnYXJkIHRvIGF0dGFjaGluZwotOzsgdG8gcHJvY2Vzc2VzIChSSCBC WiAxOTcxMDk2KS4KLQotZ2RiOiB0cnkgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgb25seSBhZnRlciBy ZWFkaW5nIGFsbCBzaGFyZWQgbGlicmFyaWVzIHdoZW4gYXR0YWNoaW5nIC8gaGFuZGxpbmcgYSBm b3JrIGNoaWxkCi0KLVdoZW4gdHJ5aW5nIHRvIGF0dGFjaCB0byBhIHB0aHJlYWQgcHJvY2VzcyBv biBhIExpbnV4IHN5c3RlbSB3aXRoIGdsaWJjIDIuMzMsCi13ZSBnZXQ6Ci0KLSAgICAkIC4vZ2Ri IC1xIC1ueCAtLWRhdGEtZGlyZWN0b3J5PWRhdGEtZGlyZWN0b3J5IC1wIDE0NzIwMTAKLSAgICBB dHRhY2hpbmcgdG8gcHJvY2VzcyAxNDcyMDEwCi0gICAgW05ldyBMV1AgMTQ3MjAxM10KLSAgICBb TmV3IExXUCAxNDcyMDE0XQotICAgIFtOZXcgTFdQIDE0NzIwMTVdCi0gICAgRXJyb3Igd2hpbGUg cmVhZGluZyBzaGFyZWQgbGlicmFyeSBzeW1ib2xzIGZvciAvdXNyL2xpYi9saWJwdGhyZWFkLnNv LjA6Ci0gICAgQ2Fubm90IGZpbmQgdXNlci1sZXZlbCB0aHJlYWQgZm9yIExXUCAxNDcyMDE1OiBn ZW5lcmljIGVycm9yCi0gICAgMHgwMDAwN2ZmZmY2ZDM2MzdmIGluIHBvbGwgKCkgZnJvbSAvdXNy L2xpYi9saWJjLnNvLjYKLSAgICAoZ2RiKQotCi1XaGVuIGF0dGFjaGluZyB0byBhIHByb2Nlc3Mg KG9yIGhhbmRsaW5nIGEgZm9yayBjaGlsZCwgYW4gb3BlcmF0aW9uIHZlcnkKLXNpbWlsYXIgdG8g YXR0YWNoaW5nKSwgR0RCIHJlYWRzIHRoZSBzaGFyZWQgbGlicmFyeSBsaXN0IGZyb20gdGhlCi1w cm9jZXNzLiAgRm9yIGVhY2ggc2hhcmVkIGxpYnJhcnkgKGlmICJzZXQgYXV0by1zb2xpYi1hZGQi IGlzIG9uKSwgaXQKLXJlYWRzIGl0cyBzeW1ib2xzIGFuZCBjYWxscyB0aGUgIm5ld19vYmpmaWxl IiBvYnNlcnZhYmxlLgotCi1UaGUgbGlidGhyZWFkLWRiIGNvZGUgbW9uaXRvcnMgdGhpcyBvYnNl cnZhYmxlLCBhbmQgaWYgaXQgc2VlcyBhbgotb2JqZmlsZSBuYW1lZCBzb21ld2hhdCBsaWtlICJs aWJwdGhyZWFkLnNvIiBnbyBieSwgaXQgdHJpZXMgdG8gbG9hZAotbGlidGhyZWFkX2RiLnNvIGlu IHRoZSBHREIgcHJvY2VzcyBpdHNlbGYuICBsaWJ0aHJlYWRfZGIga25vd3MgaG93IHRvCi1uYXZp Z2F0ZSBsaWJwdGhyZWFkJ3MgZGF0YSBzdHJ1Y3R1cmVzIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91 dCB0aGUKLWV4aXN0aW5nIHRocmVhZHMuCi0KLVRvIGxvY2F0ZSB0aGVzZSBkYXRhIHN0cnVjdHVy ZXMsIGxpYnRocmVhZF9kYiBjYWxscyBwc19wZ2xvYmFsX2xvb2t1cAotKGltcGxlbWVudGVkIGlu IHByb2Mtc2VydmljZS5jKSwgcGFzc2luZyBpbiBhIHN5bWJvbCBuYW1lIGFuZCBleHBlY3RpbmcK LWFuIGFkZHJlc3MgaW4gcmV0dXJuLgotCi1CZWZvcmUgZ2xpYmMgMi4zMywgbGlidGhyZWFkX2Ri IGFsd2F5cyBhc2tlZCBmb3Igc3ltYm9scyBmb3VuZCBpbgotbGlicHRocmVhZC4gIFRoZXJlIHdh cyBubyBvcmRlcmluZyBwcm9ibGVtOiBzaW5jZSB3ZSB3ZXJlIGFsd2F5cyB0cnlpbmcKLXRvIGxv YWQgbGlidGhyZWFkX2RiIGluIHJlYWN0aW9uIHRvIHByb2Nlc3NpbmcgbGlicHRocmVhZCAoYW5k IHJlYWRpbmcKLWluIGl0cyBzeW1ib2xzKSBhbmQgbGlidGhyZWFkX2RiIG9ubHkgYXNrZWQgc3lt Ym9scyBmcm9tIGxpYnB0aHJlYWQsIHRoZQotcmVxdWVzdGVkIHN5bWJvbHMgY291bGQgYWx3YXlz IGJlIGZvdW5kLiAgU3RhcnRpbmcgd2l0aCBnbGliYyAyLjMzLAotbGlidGhyZWFkX2RiIG5vdyBh c2tzIGZvciBhIHN5bWJvbCBuYW1lIHRoYXQgY2FuIGJlIGZvdW5kIGluCi0vbGliL2xkLWxpbnV4 LXg4Ni02NC5zby4yIChfcnRsZF9nbG9iYWwpLiAgQW5kIHRoZSBvcmRlcmluZyBpbiB3aGljaCBH REIKLXJlYWRzIHRoZSBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGluZmVyaW9yIHdoZW4gYXR0 YWNoaW5nIGlzCi11bmZvcnR1bmF0ZSwgaW4gdGhhdCBsaWJwdGhyZWFkIGlzIHByb2Nlc3NlZCBi ZWZvcmUgbGQtbGludXguICBTbyB3aGVuCi1sb2FkaW5nIGxpYnRocmVhZF9kYiBpbiByZWFjdGlv biB0byBwcm9jZXNzaW5nIGxpYnB0aHJlYWQsIGFuZAotbGlidGhyZWFkX2RiIHJlcXVlc3RzIHRo ZSBzeW1ib2wgdGhhdCBpcyBmcm9tIGxkLWxpbnV4LCBHREIgaXMgbm90IHlldAotYWJsZSB0byBz dXBwbHkgaXQuCi0KLVRoYXQgcHJvYmxlbWF0aWMgc3ltYm9sIGxvb2t1cCBoYXBwZW5zIGluIHRo ZSB0aHJlYWRfZnJvbV9sd3AgZnVuY3Rpb24sCi13aGVuIHdlIGNhbGwgdGRfdGFfbWFwX2x3cDJ0 aHJfcCwgYW5kIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gYXQgdGhpcwotcG9pbnQ6Ci0KLSAgICAj MCAgMHgwMDAwN2ZmZmY2NjgxMDEyIGluIF9fY3h4YWJpdjE6Ol9fY3hhX3Rocm93IChvYmo9MHg2 MGUwMDAwMDYxMDAsIHRpbmZvPTB4NTU1NTYwMDMzYjUwIDx0eXBlaW5mbyBmb3IgZ2RiX2V4Y2Vw dGlvbl9lcnJvcj4sIGRlc3Q9MHg1NTU1NWQ5NDA0YmMgPGdkYl9leGNlcHRpb25fZXJyb3I6On5n ZGJfZXhjZXB0aW9uX2Vycm9yKCk+KSBhdCAvYnVpbGQvZ2NjL3NyYy9nY2MvbGlic3RkYysrLXYz L2xpYnN1cGMrKy9laF90aHJvdy5jYzo3OAotICAgICMxICAweDAwMDA1NTU1NWU1ZDM3MzQgaW4g dGhyb3dfaXQocmV0dXJuX3JlYXNvbiwgZXJyb3JzLCBjb25zdCBjaGFyICosIHR5cGVkZWYgX192 YV9saXN0X3RhZyBfX3ZhX2xpc3RfdGFnICopIChyZWFzb249UkVUVVJOX0VSUk9SLCBlcnJvcj1H RU5FUklDX0VSUk9SLCBmbXQ9MHg1NTU1NWYwYzUzNjAgIkNhbm5vdCBmaW5kIHVzZXItbGV2ZWwg dGhyZWFkIGZvciBMV1AgJWxkOiAlcyIsIGFwPTB4N2ZmZmZmZmZhYWUwKSBhdCAvaG9tZS9zaW1h cmsvc3JjL2JpbnV0aWxzLWdkYi9nZGJzdXBwb3J0L2NvbW1vbi1leGNlcHRpb25zLmNjOjIwMAot ICAgICMyICAweDAwMDA1NTU1NWU1ZDM3ZDQgaW4gdGhyb3dfdmVycm9yIChlcnJvcj1HRU5FUklD X0VSUk9SLCBmbXQ9MHg1NTU1NWYwYzUzNjAgIkNhbm5vdCBmaW5kIHVzZXItbGV2ZWwgdGhyZWFk IGZvciBMV1AgJWxkOiAlcyIsIGFwPTB4N2ZmZmZmZmZhYWUwKSBhdCAvaG9tZS9zaW1hcmsvc3Jj L2JpbnV0aWxzLWdkYi9nZGJzdXBwb3J0L2NvbW1vbi1leGNlcHRpb25zLmNjOjIwOAotICAgICMz ICAweDAwMDA1NTU1NWUwYjBlZDIgaW4gdmVycm9yIChzdHJpbmc9MHg1NTU1NWYwYzUzNjAgIkNh bm5vdCBmaW5kIHVzZXItbGV2ZWwgdGhyZWFkIGZvciBMV1AgJWxkOiAlcyIsIGFyZ3M9MHg3ZmZm ZmZmZmFhZTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi91dGlscy5jOjE3 MQotICAgICM0ICAweDAwMDA1NTU1NWU1ZTg5OGEgaW4gZXJyb3IgKGZtdD0weDU1NTU1ZjBjNTM2 MCAiQ2Fubm90IGZpbmQgdXNlci1sZXZlbCB0aHJlYWQgZm9yIExXUCAlbGQ6ICVzIikgYXQgL2hv bWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ric3VwcG9ydC9lcnJvcnMuY2M6NDMKLSAgICAj NSAgMHgwMDAwNTU1NTVkMDZiNGJjIGluIHRocmVhZF9mcm9tX2x3cCAoc3RvcHBlZD0weDYxNzAw MDAzNWQ4MCwgcHRpZD0uLi4pIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9s aW51eC10aHJlYWQtZGIuYzo0MTgKLSAgICAjNiAgMHgwMDAwNTU1NTVkMDcwNDBkIGluIHRyeV90 aHJlYWRfZGJfbG9hZF8xIChpbmZvPTB4NjBjMDAwMDExMTQwKSBhdCAvaG9tZS9zaW1hcmsvc3Jj L2JpbnV0aWxzLWdkYi9nZGIvbGludXgtdGhyZWFkLWRiLmM6OTEyCi0gICAgIzcgIDB4MDAwMDU1 NTU1ZDA3MTEwMyBpbiB0cnlfdGhyZWFkX2RiX2xvYWQgKGxpYnJhcnk9MHg1NTU1NWYwYzYyYTAg ImxpYnRocmVhZF9kYi5zby4xIiwgY2hlY2tfYXV0b19sb2FkX3NhZmU9ZmFsc2UpIGF0IC9ob21l L3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzoxMDE0Ci0gICAg IzggIDB4MDAwMDU1NTU1ZDA3MjE2OCBpbiB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9zZGlyICgp IGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzox MDkxCi0gICAgIzkgIDB4MDAwMDU1NTU1ZDA3MmQxYyBpbiB0aHJlYWRfZGJfbG9hZF9zZWFyY2gg KCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2xpbnV4LXRocmVhZC1kYi5j OjExNDYKLSAgICAjMTAgMHgwMDAwNTU1NTVkMDczNjVjIGluIHRocmVhZF9kYl9sb2FkICgpIGF0 IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzoxMjAz Ci0gICAgIzExIDB4MDAwMDU1NTU1ZDA3MzczZSBpbiBjaGVja19mb3JfdGhyZWFkX2RiICgpIGF0 IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzoxMjQ2 Ci0gICAgIzEyIDB4MDAwMDU1NTU1ZDA3MzhhYiBpbiB0aHJlYWRfZGJfbmV3X29iamZpbGUgKG9i amZpbGU9MHg2MTMwMDAwMGMwYzApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dk Yi9saW51eC10aHJlYWQtZGIuYzoxMjc1Ci0gICAgIzEzIDB4MDAwMDU1NTU1YmQxMDc0MCBpbiBz dGQ6Ol9faW52b2tlX2ltcGw8dm9pZCwgdm9pZCAoKiYpKG9iamZpbGUqKSwgb2JqZmlsZSo+IChf X2Y9QDB4NjE2MDAwMDY4ZDg4OiAweDU1NTU1ZDA3Mzc0NSA8dGhyZWFkX2RiX25ld19vYmpmaWxl KG9iamZpbGUqKT4pIGF0IC91c3IvaW5jbHVkZS9jKysvMTAuMi4wL2JpdHMvaW52b2tlLmg6NjAK LSAgICAjMTQgMHgwMDAwNTU1NTViZDAyMDk2IGluIHN0ZDo6X19pbnZva2Vfcjx2b2lkLCB2b2lk ICgqJikob2JqZmlsZSopLCBvYmpmaWxlKj4gKF9fZm49QDB4NjE2MDAwMDY4ZDg4OiAweDU1NTU1 ZDA3Mzc0NSA8dGhyZWFkX2RiX25ld19vYmpmaWxlKG9iamZpbGUqKT4pIGF0IC91c3IvaW5jbHVk ZS9jKysvMTAuMi4wL2JpdHMvaW52b2tlLmg6MTUzCi0gICAgIzE1IDB4MDAwMDU1NTU1YmNlMDM5 MiBpbiBzdGQ6Ol9GdW5jdGlvbl9oYW5kbGVyPHZvaWQgKG9iamZpbGUqKSwgdm9pZCAoKikob2Jq ZmlsZSopPjo6X01faW52b2tlKHN0ZDo6X0FueV9kYXRhIGNvbnN0Jiwgb2JqZmlsZSomJikgKF9f ZnVuY3Rvcj0uLi4sIF9fYXJncyMwPUAweDdmZmZmZmZmYjRhMDogMHg2MTMwMDAwMGMwYzApIGF0 IC91c3IvaW5jbHVkZS9jKysvMTAuMi4wL2JpdHMvc3RkX2Z1bmN0aW9uLmg6MjkxCi0gICAgIzE2 IDB4MDAwMDU1NTU1ZDM1OTVjMCBpbiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKG9iamZpbGUqKT46Om9w ZXJhdG9yKCkob2JqZmlsZSopIGNvbnN0ICh0aGlzPTB4NjE2MDAwMDY4ZDg4LCBfX2FyZ3MjMD0w eDYxMzAwMDAwYzBjMCkgYXQgL3Vzci9pbmNsdWRlL2MrKy8xMC4yLjAvYml0cy9zdGRfZnVuY3Rp b24uaDo2MjIKLSAgICAjMTcgMHgwMDAwNTU1NTVkMzU2YjdmIGluIGdkYjo6b2JzZXJ2ZXJzOjpv YnNlcnZhYmxlPG9iamZpbGUqPjo6bm90aWZ5ICh0aGlzPTB4NTU1NTY2NzI3MDIwIDxnZGI6Om9i c2VydmVyczo6bmV3X29iamZpbGU+LCBhcmdzIzA9MHg2MTMwMDAwMGMwYzApIGF0IC9ob21lL3Np bWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi8uLi9nZGJzdXBwb3J0L29ic2VydmFibGUuaDoxMDYK LSAgICAjMTggMHgwMDAwNTU1NTVkYTNmMjI4IGluIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJz IChhYmZkPTB4NjEyMDAwMDFjY2MwLCBuYW1lPTB4NjE5MDAwMGQ5MDkwICIvdXNyL2xpYi9saWJw dGhyZWFkLnNvLjAiLCBhZGRfZmxhZ3M9Li4uLCBhZGRycz0weDdmZmZmZmZmYmMxMCwgZmxhZ3M9 Li4uLCBwYXJlbnQ9MHgwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc3lt ZmlsZS5jOjExMzEKLSAgICAjMTkgMHgwMDAwNTU1NTVkYTNmNzYzIGluIHN5bWJvbF9maWxlX2Fk ZF9mcm9tX2JmZCAoYWJmZD0weDYxMjAwMDAxY2NjMCwgbmFtZT0weDYxOTAwMDBkOTA5MCAiL3Vz ci9saWIvbGlicHRocmVhZC5zby4wIiwgYWRkX2ZsYWdzPTxlcnJvciByZWFkaW5nIHZhcmlhYmxl OiBDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4ZmZmZmZmZmZmZmZmZmZiMD4sIGFk ZHJzPTB4N2ZmZmZmZmZiYzEwLCBmbGFncz08ZXJyb3IgcmVhZGluZyB2YXJpYWJsZTogQ2Fubm90 IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweGZmZmZmZmZmZmZmZmZmYzA+LCBwYXJlbnQ9MHgw KSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc3ltZmlsZS5jOjExNjcKLSAg ICAjMjAgMHgwMDAwNTU1NTVkOTVmOWZhIGluIHNvbGliX3JlYWRfc3ltYm9scyAoc289MHg2MTkw MDAwZDhlODAsIGZsYWdzPS4uLikgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ri L3NvbGliLmM6NjgxCi0gICAgIzIxIDB4MDAwMDU1NTU1ZDk2MjMzZCBpbiBzb2xpYl9hZGQgKHBh dHRlcm49MHgwLCBmcm9tX3R0eT0wLCByZWFkc3ltcz0xKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2Jp bnV0aWxzLWdkYi9nZGIvc29saWIuYzo5ODcKLSAgICAjMjIgMHgwMDAwNTU1NTVkOTM2NDZlIGlu IGVuYWJsZV9icmVhayAoaW5mbz0weDYwODAwMDAwOGYyMCwgZnJvbV90dHk9MCkgYXQgL2hvbWUv c2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL3NvbGliLXN2cjQuYzoyMjM4Ci0gICAgIzIzIDB4 MDAwMDU1NTU1ZDkzY2ZjMCBpbiBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9t X3R0eT0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc29saWItc3ZyNC5j OjMwNDkKLSAgICAjMjQgMHgwMDAwNTU1NTVkOTY2MTBkIGluIHNvbGliX2NyZWF0ZV9pbmZlcmlv cl9ob29rIChmcm9tX3R0eT0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIv c29saWIuYzoxMTk1Ci0gICAgIzI1IDB4MDAwMDU1NTU1Y2RlZTMxOCBpbiBwb3N0X2NyZWF0ZV9p bmZlcmlvciAoZnJvbV90dHk9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ri L2luZmNtZC5jOjMxOAotICAgICMyNiAweDAwMDA1NTU1NWNlMDBlNmUgaW4gc2V0dXBfaW5mZXJp b3IgKGZyb21fdHR5PTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZj bWQuYzoyNDM5Ci0gICAgIzI3IDB4MDAwMDU1NTU1Y2U1OWMzNCBpbiBoYW5kbGVfb25lIChldmVu dD0uLi4pIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZydW4uYzo0ODg3 Ci0gICAgIzI4IDB4MDAwMDU1NTU1Y2U1Y2QwMCBpbiBzdG9wX2FsbF90aHJlYWRzICgpIGF0IC9o b21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZydW4uYzo1MDY0Ci0gICAgIzI5IDB4 MDAwMDU1NTU1Y2U3ZjBkYSBpbiBzdG9wX3dhaXRpbmcgKGVjcz0weDdmZmZmZmZmZDE3MCkgYXQg L2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2luZnJ1bi5jOjgwMDYKLSAgICAjMzAg MHgwMDAwNTU1NTVjZTY3ZjVjIGluIGhhbmRsZV9zaWduYWxfc3RvcCAoZWNzPTB4N2ZmZmZmZmZk MTcwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvaW5mcnVuLmM6NjA2Mgot ICAgICMzMSAweDAwMDA1NTU1NWNlNjM2NTMgaW4gaGFuZGxlX2luZmVyaW9yX2V2ZW50IChlY3M9 MHg3ZmZmZmZmZmQxNzApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZy dW4uYzo1NzI3Ci0gICAgIzMyIDB4MDAwMDU1NTU1Y2U0ZjI5NyBpbiBmZXRjaF9pbmZlcmlvcl9l dmVudCAoKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvaW5mcnVuLmM6NDEw NQotICAgICMzMyAweDAwMDA1NTU1NWNkYmUzYmYgaW4gaW5mZXJpb3JfZXZlbnRfaGFuZGxlciAo ZXZlbnRfdHlwZT1JTkZfUkVHX0VWRU5UKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdk Yi9nZGIvaW5mLWxvb3AuYzo0MgotICAgICMzNCAweDAwMDA1NTU1NWQwMTgwNDcgaW4gaGFuZGxl X3RhcmdldF9ldmVudCAoZXJyb3I9MCwgY2xpZW50X2RhdGE9MHgwKSBhdCAvaG9tZS9zaW1hcmsv c3JjL2JpbnV0aWxzLWdkYi9nZGIvbGludXgtbmF0LmM6NDA2MAotICAgICMzNSAweDAwMDA1NTU1 NWU1ZWE3N2UgaW4gaGFuZGxlX2ZpbGVfZXZlbnQgKGZpbGVfcHRyPTB4NjA2MDAwMDhiMWMwLCBy ZWFkeV9tYXNrPTEpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYnN1cHBvcnQv ZXZlbnQtbG9vcC5jYzo1NzUKLSAgICAjMzYgMHgwMDAwNTU1NTVlNWViMDljIGluIGdkYl93YWl0 X2Zvcl9ldmVudCAoYmxvY2s9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ri c3VwcG9ydC9ldmVudC1sb29wLmNjOjcwMQotICAgICMzNyAweDAwMDA1NTU1NWU1ZThkMTkgaW4g Z2RiX2RvX29uZV9ldmVudCAoKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGJz dXBwb3J0L2V2ZW50LWxvb3AuY2M6MjEyCi0gICAgIzM4IDB4MDAwMDU1NTU1ZGQ2ZTBkNCBpbiB3 YWl0X3N5bmNfY29tbWFuZF9kb25lICgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2Ri L2dkYi90b3AuYzo1MjgKLSAgICAjMzkgMHgwMDAwNTU1NTVkZDZlMzcyIGluIG1heWJlX3dhaXRf c3luY19jb21tYW5kX2RvbmUgKHdhc19zeW5jPTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRp bHMtZ2RiL2dkYi90b3AuYzo1NDUKLSAgICAjNDAgMHgwMDAwNTU1NTVkMGVjN2M4IGluIGNhdGNo X2NvbW1hbmRfZXJyb3JzIChjb21tYW5kPTB4NTU1NTVjZTAxYmI4IDxhdHRhY2hfY29tbWFuZChj aGFyIGNvbnN0KiwgaW50KT4sIGFyZz0weDdmZmZmZmZmZTI4ZCAiMTQ3MjAxMCIsIGZyb21fdHR5 PTEsIGRvX2JwX2FjdGlvbnM9ZmFsc2UpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2Ri L2dkYi9tYWluLmM6NDUyCi0gICAgIzQxIDB4MDAwMDU1NTU1ZDBmMDNhZCBpbiBjYXB0dXJlZF9t YWluXzEgKGNvbnRleHQ9MHg3ZmZmZmZmZmRkMTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRp bHMtZ2RiL2dkYi9tYWluLmM6MTE0OQotICAgICM0MiAweDAwMDA1NTU1NWQwZjEyMzkgaW4gY2Fw dHVyZWRfbWFpbiAoZGF0YT0weDdmZmZmZmZmZGQxMCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51 dGlscy1nZGIvZ2RiL21haW4uYzoxMjMyCi0gICAgIzQzIDB4MDAwMDU1NTU1ZDBmMTMxNSBpbiBn ZGJfbWFpbiAoYXJncz0weDdmZmZmZmZmZGQxMCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGls cy1nZGIvZ2RiL21haW4uYzoxMjU3Ci0gICAgIzQ0IDB4MDAwMDU1NTU1YmI3MGNmOSBpbiBtYWlu IChhcmdjPTcsIGFyZ3Y9MHg3ZmZmZmZmZmRlODgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRp bHMtZ2RiL2dkYi9nZGIuYzozMgotCi1UaGUgZXhjZXB0aW9uIGlzIGNhdWdodCBoZXJlOgotCi0g ICAgIzAgIF9fY3h4YWJpdjE6Ol9fY3hhX2JlZ2luX2NhdGNoIChleGNfb2JqX2luPTB4NjBlMDAw MDA2MGUwKSBhdCAvYnVpbGQvZ2NjL3NyYy9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9laF9j YXRjaC5jYzo4NAotICAgICMxICAweDAwMDA1NTU1NWQ5NWZkZWQgaW4gc29saWJfcmVhZF9zeW1i b2xzIChzbz0weDYxOTAwMDBkOGU4MCwgZmxhZ3M9Li4uKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2Jp bnV0aWxzLWdkYi9nZGIvc29saWIuYzo2ODkKLSAgICAjMiAgMHgwMDAwNTU1NTVkOTYyMzNkIGlu IHNvbGliX2FkZCAocGF0dGVybj0weDAsIGZyb21fdHR5PTAsIHJlYWRzeW1zPTEpIGF0IC9ob21l L3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9zb2xpYi5jOjk4NwotICAgICMzICAweDAwMDA1 NTU1NWQ5MzY0NmUgaW4gZW5hYmxlX2JyZWFrIChpbmZvPTB4NjA4MDAwMDA4ZjIwLCBmcm9tX3R0 eT0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc29saWItc3ZyNC5jOjIy MzgKLSAgICAjNCAgMHgwMDAwNTU1NTVkOTNjZmMwIGluIHN2cjRfc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKGZyb21fdHR5PTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dk Yi9zb2xpYi1zdnI0LmM6MzA0OQotICAgICM1ICAweDAwMDA1NTU1NWQ5NjYxMGQgaW4gc29saWJf Y3JlYXRlX2luZmVyaW9yX2hvb2sgKGZyb21fdHR5PTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmlu dXRpbHMtZ2RiL2dkYi9zb2xpYi5jOjExOTUKLSAgICAjNiAgMHgwMDAwNTU1NTVjZGVlMzE4IGlu IHBvc3RfY3JlYXRlX2luZmVyaW9yIChmcm9tX3R0eT0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2Jp bnV0aWxzLWdkYi9nZGIvaW5mY21kLmM6MzE4Ci0gICAgIzcgIDB4MDAwMDU1NTU1Y2UwMGU2ZSBp biBzZXR1cF9pbmZlcmlvciAoZnJvbV90dHk9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGls cy1nZGIvZ2RiL2luZmNtZC5jOjI0MzkKLSAgICAjOCAgMHgwMDAwNTU1NTVjZTU5YzM0IGluIGhh bmRsZV9vbmUgKGV2ZW50PS4uLikgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ri L2luZnJ1bi5jOjQ4ODcKLSAgICAjOSAgMHgwMDAwNTU1NTVjZTVjZDAwIGluIHN0b3BfYWxsX3Ro cmVhZHMgKCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2luZnJ1bi5jOjUw NjQKLSAgICAjMTAgMHgwMDAwNTU1NTVjZTdmMGRhIGluIHN0b3Bfd2FpdGluZyAoZWNzPTB4N2Zm ZmZmZmZkMTcwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvaW5mcnVuLmM6 ODAwNgotICAgICMxMSAweDAwMDA1NTU1NWNlNjdmNWMgaW4gaGFuZGxlX3NpZ25hbF9zdG9wIChl Y3M9MHg3ZmZmZmZmZmQxNzApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9p bmZydW4uYzo2MDYyCi0gICAgIzEyIDB4MDAwMDU1NTU1Y2U2MzY1MyBpbiBoYW5kbGVfaW5mZXJp b3JfZXZlbnQgKGVjcz0weDdmZmZmZmZmZDE3MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGls cy1nZGIvZ2RiL2luZnJ1bi5jOjU3MjcKLSAgICAjMTMgMHgwMDAwNTU1NTVjZTRmMjk3IGluIGZl dGNoX2luZmVyaW9yX2V2ZW50ICgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dk Yi9pbmZydW4uYzo0MTA1Ci0gICAgIzE0IDB4MDAwMDU1NTU1Y2RiZTNiZiBpbiBpbmZlcmlvcl9l dmVudF9oYW5kbGVyIChldmVudF90eXBlPUlORl9SRUdfRVZFTlQpIGF0IC9ob21lL3NpbWFyay9z cmMvYmludXRpbHMtZ2RiL2dkYi9pbmYtbG9vcC5jOjQyCi0gICAgIzE1IDB4MDAwMDU1NTU1ZDAx ODA0NyBpbiBoYW5kbGVfdGFyZ2V0X2V2ZW50IChlcnJvcj0wLCBjbGllbnRfZGF0YT0weDApIGF0 IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC1uYXQuYzo0MDYwCi0gICAg IzE2IDB4MDAwMDU1NTU1ZTVlYTc3ZSBpbiBoYW5kbGVfZmlsZV9ldmVudCAoZmlsZV9wdHI9MHg2 MDYwMDAwOGIxYzAsIHJlYWR5X21hc2s9MSkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1n ZGIvZ2Ric3VwcG9ydC9ldmVudC1sb29wLmNjOjU3NQotICAgICMxNyAweDAwMDA1NTU1NWU1ZWIw OWMgaW4gZ2RiX3dhaXRfZm9yX2V2ZW50IChibG9jaz0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2Jp bnV0aWxzLWdkYi9nZGJzdXBwb3J0L2V2ZW50LWxvb3AuY2M6NzAxCi0gICAgIzE4IDB4MDAwMDU1 NTU1ZTVlOGQxOSBpbiBnZGJfZG9fb25lX2V2ZW50ICgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmlu dXRpbHMtZ2RiL2dkYnN1cHBvcnQvZXZlbnQtbG9vcC5jYzoyMTIKLSAgICAjMTkgMHgwMDAwNTU1 NTVkZDZlMGQ0IGluIHdhaXRfc3luY19jb21tYW5kX2RvbmUgKCkgYXQgL2hvbWUvc2ltYXJrL3Ny Yy9iaW51dGlscy1nZGIvZ2RiL3RvcC5jOjUyOAotICAgICMyMCAweDAwMDA1NTU1NWRkNmUzNzIg aW4gbWF5YmVfd2FpdF9zeW5jX2NvbW1hbmRfZG9uZSAod2FzX3N5bmM9MCkgYXQgL2hvbWUvc2lt YXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL3RvcC5jOjU0NQotICAgICMyMSAweDAwMDA1NTU1NWQw ZWM3YzggaW4gY2F0Y2hfY29tbWFuZF9lcnJvcnMgKGNvbW1hbmQ9MHg1NTU1NWNlMDFiYjggPGF0 dGFjaF9jb21tYW5kKGNoYXIgY29uc3QqLCBpbnQpPiwgYXJnPTB4N2ZmZmZmZmZlMjhkICIxNDcy MDEwIiwgZnJvbV90dHk9MSwgZG9fYnBfYWN0aW9ucz1mYWxzZSkgYXQgL2hvbWUvc2ltYXJrL3Ny Yy9iaW51dGlscy1nZGIvZ2RiL21haW4uYzo0NTIKLSAgICAjMjIgMHgwMDAwNTU1NTVkMGYwM2Fk IGluIGNhcHR1cmVkX21haW5fMSAoY29udGV4dD0weDdmZmZmZmZmZGQxMCkgYXQgL2hvbWUvc2lt YXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL21haW4uYzoxMTQ5Ci0gICAgIzIzIDB4MDAwMDU1NTU1 ZDBmMTIzOSBpbiBjYXB0dXJlZF9tYWluIChkYXRhPTB4N2ZmZmZmZmZkZDEwKSBhdCAvaG9tZS9z aW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvbWFpbi5jOjEyMzIKLSAgICAjMjQgMHgwMDAwNTU1 NTVkMGYxMzE1IGluIGdkYl9tYWluIChhcmdzPTB4N2ZmZmZmZmZkZDEwKSBhdCAvaG9tZS9zaW1h cmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvbWFpbi5jOjEyNTcKLSAgICAjMjUgMHgwMDAwNTU1NTVi YjcwY2Y5IGluIG1haW4gKGFyZ2M9NywgYXJndj0weDdmZmZmZmZmZGU4OCkgYXQgL2hvbWUvc2lt YXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2dkYi5jOjMyCi0KLUNhdGNoaW5nIHRoZSBleGNlcHRp b24gYXQgdGhpcyBwb2ludCBtZWFucyB0aGF0IHRoZSB0aHJlYWRfZGJfaW5mbwotb2JqZWN0IGZv ciB0aGlzIGluZmVyaW9yIHdpbGwgYmUgbGVmdCBpbiBwbGFjZSwgZGVzcGl0ZSB0aGUgZmFpbHVy ZSB0bwotbG9hZCBsaWJ0aHJlYWRfZGIuICBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgd29uJ3QgYmUg ZnVydGhlciBhdHRlbXB0cyBhdAotbG9hZGluZyBsaWJ0aHJlYWRfZGIsIGJlY2F1c2UgdGhyZWFk X2RiX2xvYWQgd2lsbCB0aGluayB0aGF0Ci1saWJ0aHJlYWRfZGIgaXMgYWxyZWFkeSBsb2FkZWQg Zm9yIHRoaXMgaW5mZXJpb3IgYW5kIHdpbGwgYWx3YXlzIGV4aXQKLWVhcmx5LiAgVG8gZml4IHRo aXMsIGFkZCBhIHRyeS9jYXRjaCBhcm91bmQgY2FsbGluZyB0cnlfdGhyZWFkX2RiX2xvYWRfMQot aW4gdHJ5X3RocmVhZF9kYl9sb2FkLCBzdWNoIHRoYXQgaWYgc29tZSBleGNlcHRpb24gaXMgdGhy b3duIHdoaWxlCi10cnlpbmcgdG8gbG9hZCBsaWJ0aHJlYWRfZGIsIHdlIHJlc2V0IC8gZGVsZXRl IHRoZSB0aHJlYWRfZGJfaW5mbyBmb3IKLXRoYXQgaW5mZXJpb3IuICBUaGF0IGFsb25lIG1ha2Vz IGF0dGFjaCB3b3JrIGZpbmUgYWdhaW4sIGJlY2F1c2UKLWNoZWNrX2Zvcl90aHJlYWRfZGIgaXMg Y2FsbGVkIGFnYWluIGluIHRoZSB0aHJlYWRfZGJfaW5mZXJpb3JfY3JlYXRlZAotb2JzZXJ2ZXIg KHRoYXQgaGFwcGVucyBhZnRlciB3ZSBsZWFybmVkIGFib3V0IGFsbCBzaGFyZWQgbGlicmFyaWVz IGFuZAotdGhlaXIgc3ltYm9scyksIGFuZCBsaWJ0aHJlYWRfZGIgaXMgc3VjY2Vzc2Z1bGx5IGxv YWRlZCB0aGVuLgotCi1XaGVuIGF0dGFjaGluZywgSSB0aGluayB0aGF0IHRoZSBpbmZlcmlvcl9j cmVhdGVkIG9ic2VydmVyIGlzIGEgZ29vZAotcGxhY2UgdG8gdHJ5IHRvIGxvYWQgbGlidGhyZWFk X2RiOiBpdCBpcyBjYWxsZWQgb25jZSBldmVyeXRoaW5nIGhhcwotc3RhYmlsaXplZCwgd2hlbiB3 ZSBsZWFybmVkIGFib3V0IGFsbCBzaGFyZWQgbGlicmFyaWVzLgotCi1UaGUgb25seSBwcm9ibGVt IHRoZW4gaXMgdGhhdCB3aGVuIHdlIGZpcnN0IHRyeSAoYW5kIGZhaWwpIHRvIGxvYWQKLWxpYnRo cmVhZF9kYiwgaW4gcmVhY3Rpb24gdG8gbGVhcm5pbmcgYWJvdXQgbGlicHRocmVhZCwgd2Ugc2hv dyB0aGlzCi13YXJuaW5nOgotCi0gICAgd2FybmluZzogVW5hYmxlIHRvIGZpbmQgbGlidGhyZWFk X2RiIG1hdGNoaW5nIGluZmVyaW9yJ3MgdGhyZWFkIGxpYnJhcnksIHRocmVhZCBkZWJ1Z2dpbmcg d2lsbCBub3QgYmUgYXZhaWxhYmxlLgotCi1UaGlzIGlzIG1pc2xlYWRpbmcsIGJlY2F1c2Ugd2Ug ZG8gc3VjY2VlZCBpbiBsb2FkaW5nIGl0IGxhdGVyLiAgU28gd2hlbgotYXR0YWNoaW5nLCBJIHRo aW5rIHdlIHNob3VsZG4ndCB0cnkgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgaW4gcmVhY3Rpb24gdG8K LXRoZSBuZXdfb2JqZmlsZSBldmVudHMsIHdlIHNob3VsZCB3YWl0IHVudGlsIHdlIGhhdmUgbGVh cm5lZCBhYm91dCBhbGwKLXNoYXJlZCBsaWJyYXJpZXMgKHVzaW5nIHRoZSBpbmZlcmlvcl9jcmVh dGVkIG9ic2VydmFibGUpLiAgVG8gZG8gc28sIGFkZAotYW4gYGluX2luaXRpYWxfbGlicmFyeV9z Y2FuYCBmbGFnIHRvIHN0cnVjdCBpbmZlcmlvci4gIFRoaXMgZmxhZyBpcyB1c2VkCi10byBwb3N0 cG9uZSBsb2FkaW5nIGxpYnRocmVhZF9kYiBpZiB3ZSBhcmUgYXR0YWNoaW5nIG9yIGhhbmRsaW5n IGEgZm9yawotY2hpbGQuCi0KLVdoZW4gZGVidWdnaW5nIHJlbW90ZWx5IHdpdGggR0RCc2VydmVy LCB0aGUgc2FtZSBwcm9ibGVtIGhhcHBlbnMsIGV4Y2VwdAotdGhhdCB0aGUgcVN5bWJvbCBtZWNo YW5pc20gKGFsbG93aW5nIHRoZSByZW1vdGUgc2lkZSB0byBhc2sgR0RCIGZvcgotc3ltYm9scyB2 YWx1ZXMpIGlzIGludm9sdmVkLiAgVGhlIGZpeCB0aGVyZSBpcyB0aGUgc2FtZSBpZGVhLCB3ZSBt YWtlCi1HREIgd2FpdCB1bnRpbCBhbGwgc2hhcmVkIGxpYnJhcmllcyBhbmQgdGhlaXIgc3ltYm9s cyBhcmUga25vd24gYmVmb3JlCi1zZW5kaW5nIG91dCBhIHFTeW1ib2wgcGFja2V0LiAgVGhpcyB3 YXksIHdlIG5ldmVyIHByZXNlbnQgdGhlIHJlbW90ZQotc2lkZSBhIHN0YXRlIHdoZXJlIGxpYnB0 aHJlYWQuc28ncyBzeW1ib2xzIGFyZSBrbm93biBidXQgbGQtbGludXgncwotc3ltYm9scyBhcmVu J3QuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0KLQkqIGluZmVyaW9yLmggKGNsYXNzIGluZmVyaW9yKSA8 aW5faW5pdGlhbF9saWJyYXJ5X3NjYW4+OiBOZXcuCi0JKiBpbmZjbWQuYyAocG9zdF9jcmVhdGVf aW5mZXJpb3IpOiBTZXQgaW5faW5pdGlhbF9saWJyYXJ5X3NjYW4uCi0JKiBpbmZydW4uYyAoZm9s bG93X2ZvcmtfaW5mZXJpb3IpOiBMaWtld2lzZS4KLQkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlf dGhyZWFkX2RiX2xvYWQpOiBDYXRjaCBleGNlcHRpb24gdGhyb3duCi0JYnkgdHJ5X3RocmVhZF9k Yl9sb2FkXzEKLQkodGhyZWFkX2RiX2xvYWQpOiBSZXR1cm4gZWFybHkgaWYgaW5faW5pdGlhbF9s aWJyYXJ5X3NjYW4gaXMKLQlzZXQuCi0JKiByZW1vdGUuYyAocmVtb3RlX25ld19vYmpmaWxlKTog UmV0dXJuIGVhcmx5IGlmCi0JaW5faW5pdGlhbF9saWJyYXJ5X3NjYW4gaXMgc2V0LgotCi1DaGFu Z2UtSWQ6IEk3YTI3OTgzNmNmYmIyYjM2MmI0ZmRlMTFiMTk2YjRhYWI4MmY1ZWZiCi0KLWRpZmYg LS1naXQgYS9nZGIvaW5mY21kLmMgYi9nZGIvaW5mY21kLmMKLS0tLSBhL2dkYi9pbmZjbWQuYwot KysrIGIvZ2RiL2luZmNtZC5jCi1AQCAtMzEzLDYgKzMxMywxMCBAQCBwb3N0X2NyZWF0ZV9pbmZl cmlvciAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgaW50IGZyb21fdHR5KQotICAgICAgIGNv bnN0IHVuc2lnbmVkIHNvbGliX2FkZF9nZW5lcmF0aW9uCi0gCT0gY3VycmVudF9wcm9ncmFtX3Nw YWNlLT5zb2xpYl9hZGRfZ2VuZXJhdGlvbjsKLSAKLSsgICAgICBzY29wZWRfcmVzdG9yZSByZXN0 b3JlX2luX2luaXRpYWxfbGlicmFyeV9zY2FuCi0rCT0gbWFrZV9zY29wZWRfcmVzdG9yZSAoJmN1 cnJlbnRfaW5mZXJpb3IgKCktPmluX2luaXRpYWxfbGlicmFyeV9zY2FuLAotKwkJCSAgICAgICB0 cnVlKTsKLSsKLSAgICAgICAvKiBDcmVhdGUgdGhlIGhvb2tzIHRvIGhhbmRsZSBzaGFyZWQgbGli cmFyeSBsb2FkIGFuZCB1bmxvYWQKLSAJIGV2ZW50cy4gICovCi0gICAgICAgc29saWJfY3JlYXRl X2luZmVyaW9yX2hvb2sgKGZyb21fdHR5KTsKLWRpZmYgLS1naXQgYS9nZGIvaW5mZXJpb3IuaCBi L2dkYi9pbmZlcmlvci5oCi0tLS0gYS9nZGIvaW5mZXJpb3IuaAotKysrIGIvZ2RiL2luZmVyaW9y LmgKLUBAIC01MTEsNiArNTExLDEwIEBAIGNsYXNzIGluZmVyaW9yIDogcHVibGljIHJlZmNvdW50 ZWRfb2JqZWN0Ci0gICAgICBhcmNoaXRlY3R1cmUvZGVzY3JpcHRpb24uICAqLwotICAgYm9vbCBu ZWVkc19zZXR1cCA9IGZhbHNlOwotIAotKyAgLyogVHJ1ZSB3aGVuIHdlIGFyZSByZWFkaW5nIHRo ZSBsaWJyYXJ5IGxpc3Qgb2YgdGhlIGluZmVyaW9yIGR1cmluZyBhbgotKyAgICAgYXR0YWNoIG9y IGhhbmRsaW5nIGEgZm9yayBjaGlsZC4gICovCi0rICBib29sIGluX2luaXRpYWxfbGlicmFyeV9z Y2FuID0gZmFsc2U7Ci0rCi0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZl Y3RvciBpbXBsZW1lbnRhdGlvbi4gICovCi0gICBzdGQ6OnVuaXF1ZV9wdHI8cHJpdmF0ZV9pbmZl cmlvcj4gcHJpdjsKLSAKLWRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMK LS0tLSBhL2dkYi9pbmZydW4uYwotKysrIGIvZ2RiL2luZnJ1bi5jCi1AQCAtNTQwLDYgKzU0MCw5 IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGV0YWNoLW9uLWZvcmtc IiBvciBcCi0gCQkgYnJlYWtwb2ludC4gIElmIGEgImNsb25lZC1WTSIgZXZlbnQgd2FzIHByb3Bh Z2F0ZWQKLSAJCSBiZXR0ZXIgdGhyb3VnaG91dCB0aGUgY29yZSwgdGhpcyB3b3VsZG4ndCBiZQot IAkJIHJlcXVpcmVkLiAgKi8KLSsJICAgICAgc2NvcGVkX3Jlc3RvcmUgcmVzdG9yZV9pbl9pbml0 aWFsX2xpYnJhcnlfc2NhbgotKwkJPSBtYWtlX3Njb3BlZF9yZXN0b3JlICgmY2hpbGRfaW5mLT5p bl9pbml0aWFsX2xpYnJhcnlfc2NhbiwKLSsJCQkJICAgICAgIHRydWUpOwotIAkgICAgICBzb2xp Yl9jcmVhdGVfaW5mZXJpb3JfaG9vayAoMCk7Ci0gCSAgICB9Ci0gCX0KLUBAIC02NzUsNiArNjc4 LDggQEAgaG9sZGluZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZXRhY2gtb24tZm9y a1wiIG9yIFwKLSAJICAgICBzaGFyZWQgbGlicmFyaWVzLCBhbmQgaW5zdGFsbCB0aGUgc29saWIg ZXZlbnQgYnJlYWtwb2ludC4KLSAJICAgICBJZiBhICJjbG9uZWQtVk0iIGV2ZW50IHdhcyBwcm9w YWdhdGVkIGJldHRlciB0aHJvdWdob3V0Ci0gCSAgICAgdGhlIGNvcmUsIHRoaXMgd291bGRuJ3Qg YmUgcmVxdWlyZWQuICAqLwotKwkgIHNjb3BlZF9yZXN0b3JlIHJlc3RvcmVfaW5faW5pdGlhbF9s aWJyYXJ5X3NjYW4KLSsJICAgID0gbWFrZV9zY29wZWRfcmVzdG9yZSAoJmNoaWxkX2luZi0+aW5f aW5pdGlhbF9saWJyYXJ5X3NjYW4sIHRydWUpOwotIAkgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9o b29rICgwKTsKLSAJfQotIAotZGlmZiAtLWdpdCBhL2dkYi9saW51eC10aHJlYWQtZGIuYyBiL2dk Yi9saW51eC10aHJlYWQtZGIuYwotLS0tIGEvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCi0rKysgYi9n ZGIvbGludXgtdGhyZWFkLWRiLmMKLUBAIC0xMDEyLDggKzEwMTIsMTcgQEAgdHJ5X3RocmVhZF9k Yl9sb2FkIChjb25zdCBjaGFyICpsaWJyYXJ5LCBib29sIGNoZWNrX2F1dG9fbG9hZF9zYWZlKQot ICAgaWYgKHN0cmNociAobGlicmFyeSwgJy8nKSAhPSBOVUxMKQotICAgICBpbmZvLT5maWxlbmFt ZSA9IGdkYl9yZWFscGF0aCAobGlicmFyeSkucmVsZWFzZSAoKTsKLSAKLS0gIGlmICh0cnlfdGhy ZWFkX2RiX2xvYWRfMSAoaW5mbykpCi0tICAgIHJldHVybiB0cnVlOwotKyAgdHJ5Ci0rICAgIHsK LSsgICAgICBpZiAodHJ5X3RocmVhZF9kYl9sb2FkXzEgKGluZm8pKQotKwlyZXR1cm4gdHJ1ZTsK LSsgICAgfQotKyAgY2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRpb25fZXJyb3IgJmV4Y2VwdCkKLSsg ICAgewotKyAgICAgIGlmIChsaWJ0aHJlYWRfZGJfZGVidWcpCi0rCWV4Y2VwdGlvbl9mcHJpbnRm IChnZGJfc3RkbG9nLCBleGNlcHQsCi0rCQkJICAgIldhcm5pbmc6IFdoaWxlIHRyeWluZyB0byBs b2FkIGxpYnRocmVhZF9kYjogIik7Ci0rICAgIH0KLSAKLSAgIC8qIFRoaXMgbGlicmFyeSAicmVm dXNlZCIgdG8gd29yayBvbiBjdXJyZW50IGluZmVyaW9yLiAgKi8KLSAgIGRlbGV0ZV90aHJlYWRf ZGJfaW5mbyAoY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCksCi1AQCAtMTE4 NCwxMCArMTE5MywxNSBAQCBoYXNfbGlicHRocmVhZCAodm9pZCkKLSBzdGF0aWMgYm9vbAotIHRo cmVhZF9kYl9sb2FkICh2b2lkKQotIHsKLS0gIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqaW5mbzsK LSsgIGluZmVyaW9yICppbmYgPSBjdXJyZW50X2luZmVyaW9yICgpOwotIAotLSAgaW5mbyA9IGdl dF90aHJlYWRfZGJfaW5mbyAoY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCks Ci0tCQkJICAgICBpbmZlcmlvcl9wdGlkLnBpZCAoKSk7Ci0rICAvKiBXaGVuIGF0dGFjaGluZyAv IGhhbmRsaW5nIGZvcmsgY2hpbGQsIGRvbid0IHRyeSBsb2FkaW5nIGxpYnRocmVhZF9kYgotKyAg ICAgdW50aWwgd2Uga25vdyBhYm91dCBhbGwgc2hhcmVkIGxpYnJhcmllcy4gICovCi0rICBpZiAo aW5mLT5pbl9pbml0aWFsX2xpYnJhcnlfc2NhbikKLSsgICAgcmV0dXJuIGZhbHNlOwotKwotKyAg dGhyZWFkX2RiX2luZm8gKmluZm8gPSBnZXRfdGhyZWFkX2RiX2luZm8gKGluZi0+cHJvY2Vzc190 YXJnZXQgKCksCi0rCQkJCQkgICAgIGluZmVyaW9yX3B0aWQucGlkICgpKTsKLSAKLSAgIGlmIChp bmZvICE9IE5VTEwpCi0gICAgIHJldHVybiB0cnVlOwotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUu YyBiL2dkYi9yZW1vdGUuYwotLS0tIGEvZ2RiL3JlbW90ZS5jCi0rKysgYi9nZGIvcmVtb3RlLmMK LUBAIC0xNDI5OSw4ICsxNDI5OSwyNiBAQCByZW1vdGVfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQotIHsKLSAgIHJlbW90ZV90YXJnZXQgKnJlbW90ZSA9IGdldF9jdXJyZW50 X3JlbW90ZV90YXJnZXQgKCk7Ci0gCi0tICBpZiAocmVtb3RlICE9IE5VTEwpCQkJLyogSGF2ZSBh IHJlbW90ZSBjb25uZWN0aW9uLiAgKi8KLS0gICAgcmVtb3RlLT5yZW1vdGVfY2hlY2tfc3ltYm9s cyAoKTsKLSsgIC8qIEZpcnN0LCBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGluZmVyaW9yJ3Mg cHJvY2VzcyB0YXJnZXQgaXMgYSByZW1vdGUKLSsgICAgIHRhcmdldC4gICovCi0rICBpZiAocmVt b3RlID09IG51bGxwdHIpCi0rICAgIHJldHVybjsKLSsKLSsgIC8qIFdoZW4gd2UgYXJlIGF0dGFj aGluZyBvciBoYW5kbGluZyBhIGZvcmsgY2hpbGQgYW5kIHRoZSBzaGFyZWQgbGlicmFyeQotKyAg ICAgc3Vic3lzdGVtIHJlYWRzIHRoZSBsaXN0IG9mIGxvYWRlZCBsaWJyYXJpZXMsIHdlIHJlY2Vp dmUgbmV3IG9iamZpbGUKLSsgICAgIGV2ZW50cyBpbiBiZXR3ZWVuIGVhY2ggZm91bmQgbGlicmFy eS4gIFRoZSBsaWJyYXJpZXMgYXJlIHJlYWQgaW4gYW4KLSsgICAgIHVuZGVmaW5lZCBvcmRlciwg c28gaWYgd2UgZ2F2ZSB0aGUgcmVtb3RlIHNpZGUgYSBjaGFuY2UgdG8gbG9vayB1cAotKyAgICAg c3ltYm9scyBiZXR3ZWVuIGVhY2ggb2JqZmlsZSwgd2UgbWlnaHQgZ2l2ZSBpdCBhbiBpbmNvbnNp c3RlbnQgcGljdHVyZQotKyAgICAgb2YgdGhlIGluZmVyaW9yLiAgSXQgY291bGQgYXBwZWFyIHRo YXQgYSBsaWJyYXJ5IEEgYXBwZWFycyBsb2FkZWQgYnV0Ci0rICAgICBhIGxpYnJhcnkgQiBkb2Vz IG5vdCwgZXZlbiB0aG91Z2ggbGlicmFyeSBBIHJlcXVpcmVzIGxpYnJhcnkgQi4gIFRoYXQKLSsg ICAgIHdvdWxkIHByZXNlbnQgYSBzdGF0ZSB0aGF0IGNvdWxkbid0IG5vcm1hbGx5IGV4aXN0IGlu IHRoZSBpbmZlcmlvci4KLSsKLSsgICAgIFNvLCBza2lwIHRoZXNlIGV2ZW50cywgd2UnbGwgZ2l2 ZSB0aGUgcmVtb3RlIGEgY2hhbmNlIHRvIGxvb2sgdXAgc3ltYm9scwotKyAgICAgb25jZSBhbGwg dGhlIGxvYWRlZCBsaWJyYXJpZXMgYW5kIHRoZWlyIHN5bWJvbHMgYXJlIGtub3duIHRvIEdEQi4g ICovCi0rICAgIGlmIChjdXJyZW50X2luZmVyaW9yICgpLT5pbl9pbml0aWFsX2xpYnJhcnlfc2Nh bikKLSsgICAgICByZXR1cm47Ci0rCi0rICByZW1vdGUtPnJlbW90ZV9jaGVja19zeW1ib2xzICgp OwotIH0KLSAKLSAvKiBQdWxsIGFsbCB0aGUgdHJhY2Vwb2ludHMgZGVmaW5lZCBvbiB0aGUgdGFy Z2V0IGFuZCBjcmVhdGUgbG9jYWwKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzEwOTYtZ2xpYmMy LjM0LTIucGF0Y2ggYi9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTIucGF0Y2gKZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ZWRhYjkuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTcx MDk2LWdsaWJjMi4zNC0yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLUZy b20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZXZpbiBC dWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDE0IEp1biAyMDIxIDE5OjIw OjA3IC0wNzAwCi1TdWJqZWN0OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTIucGF0Y2gKLQot OzsgQmFja3BvcnQgcGF0Y2ggZml4aW5nIGdkYiBvbiBnbGliYy0yLjM0IG1hY2hpbmVzIHcvIHJl Z2FyZCB0bwotOzsgbGlidGhyZWFkX2RiIGluaXRpYWxpemF0aW9uLgotCi1saWJ0aHJlYWRfZGIg aW5pdGlhbGl6YXRpb24gY2hhbmdlcyByZWxhdGVkIHRvIHVwY29taW5nIGdsaWJjLTIuMzQKLQot VGhpcyBjb21taXQgbWFrZXMgc29tZSBhZGp1c3RtZW50cyB0byBhY2NvbW9kYXRlIHRoZSB1cGNv bWluZwotZ2xpYmMtMi4zNCByZWxlYXNlLiAgQmVnaW5uaW5nIHdpdGggZ2xpYmMtMi4zNCwgZnVu Y3Rpb25hbGl0eSBmb3JtZXJseQotY29udGFpbmVkIGluIGxpYnB0aHJlYWQgaGFzIGJlZW4gbW92 ZWQgdG8gbGliYy4gIEZvciB0aGUgdGltZSBiZWluZywKLWxpYnB0aHJlYWQuc28gc3RpbGwgZXhp c3RzIGluIHRoZSBmaWxlIHN5c3RlbSwgYnV0IGl0IHdvbid0IHNob3cgdXAgaW4KLWxkZCBvdXRw dXQgYW5kIHRoZXJlZm9yZSB3b24ndCBiZSBhYmxlIHRvIHRyaWdnZXIgaW5pdGlhbGl6YXRpb24g b2YKLWxpYnRocmVhZF9kYiByZWxhdGVkIGNvZGUuICBFLmcuLi4KLQotRmVkb3JhIDM0IC8gZ2xp YmMtMi4zMy45MDAwOgotCi1ba2V2QGYzNC0yIGdkYl0kIGxkZCB0ZXN0c3VpdGUvb3V0cHV0cy9n ZGIudGhyZWFkcy90bHMvdGxzCi0JbGludXgtdmRzby5zby4xICgweDAwMDA3ZmZjZjk0ZmEwMDAp Ci0JbGlic3RkYysrLnNvLjYgPT4gL2xpYjY0L2xpYnN0ZGMrKy5zby42ICgweDAwMDA3ZmYwYmE5 YWYwMDApCi0JbGlibS5zby42ID0+IC9saWI2NC9saWJtLnNvLjYgKDB4MDAwMDdmZjBiYThkNDAw MCkKLQlsaWJnY2Nfcy5zby4xID0+IC9saWI2NC9saWJnY2Nfcy5zby4xICgweDAwMDA3ZmYwYmE4 YjkwMDApCi0JbGliYy5zby42ID0+IC9saWI2NC9saWJjLnNvLjYgKDB4MDAwMDdmZjBiYTZjNjAw MCkKLQkvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIgKDB4MDAwMDdmZjBiYWJmMDAwMCkKLQot RmVkb3JhIDM0IC8gZ2xpYmMtMi4zMzoKLQotW2tldkBmMzQtMSBnZGJdJCBsZGQgdGVzdHN1aXRl L291dHB1dHMvZ2RiLnRocmVhZHMvdGxzL3RscwotCWxpbnV4LXZkc28uc28uMSAoMHgwMDAwN2Zm ZjMyZGMwMDAwKQotCWxpYnB0aHJlYWQuc28uMCA9PiAvbGliNjQvbGlicHRocmVhZC5zby4wICgw eDAwMDA3ZjgxNWY2ZGUwMDApCi0JbGlic3RkYysrLnNvLjYgPT4gL2xpYjY0L2xpYnN0ZGMrKy5z by42ICgweDAwMDA3ZjgxNWY0YmYwMDApCi0JbGlibS5zby42ID0+IC9saWI2NC9saWJtLnNvLjYg KDB4MDAwMDdmODE1ZjM3YjAwMCkKLQlsaWJnY2Nfcy5zby4xID0+IC9saWI2NC9saWJnY2Nfcy5z by4xICgweDAwMDA3ZjgxNWYzNjAwMDApCi0JbGliYy5zby42ID0+IC9saWI2NC9saWJjLnNvLjYg KDB4MDAwMDdmODE1ZjE5MTAwMCkKLQkvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIgKDB4MDAw MDdmODE1ZjcyMTAwMCkKLQotTm90ZSB0aGF0IGxpYnB0aHJlYWQgaXMgbWlzc2luZyBmcm9tIHRo ZSBsZGQgb3V0cHV0IGZvciB0aGUKLWdsaWJjLTIuMzMuOTAwMCBtYWNoaW5lLgotCi1UaGlzIG1l YW5zIHRoYXQgKHVubGVzcyB3ZSBoYXBwZW4gdG8gdGhpbmsgb2Ygc29tZSBlbnRpcmVseSBkaWZm ZXJlbnQKLW1lY2hhbmlzbSksIHdlJ2xsIG5vdyBuZWVkIHRvIHBvdGVudGlhbGx5IG1hdGNoICJs aWJjIiBpbiBhZGRpdGlvbiB0bwotImxpYnB0aHJlYWQiIGFzIGxpYnJhcmllcyB3aGljaCBtaWdo dCBiZSB0aHJlYWQgbGlicmFyaWVzLiAgVGhpcwotYWNjb3VudHMgZm9yIHRoZSBjaGFuZ2UgbWFk ZSBpbiBzb2xpYi5jLiAgTm90ZSB0aGF0IHRoZSBuZXcgY29kZQotYXR0ZW1wdHMgdG8gbWF0Y2gg Ii9saWJjLiIgdmlhIHN0cnN0cigpLiAgVGhhdCB0cmFpbGluZyBkb3QgKCIuIikKLWF2b2lkcyBp bmFkdmVydGVudGx5IG1hdGNoaW5nIGxpYnJhcmllcyBzdWNoIGFzIGxpYmNyeXB0IChhbmQKLWFs bCB0aGUgb3RoZXIgbWFueSBsaWJyYXJpZXMgd2hpY2ggYmVnaW4gd2l0aCAibGliYyIpLgotCi1U byBhdm9pZCBhdHRlbXB0cyB0byBsb2FkIGxpYnRocmVhZF9kYiB3aGVuIGVuY291bnRlcmluZyBv bGRlcgotdmVyc2lvbnMgb2YgbGliYywgd2Ugbm93IGF0dGVtcHQgdG8gZmluZCAicHRocmVhZF9j cmVhdGUiICh3aGljaCBpcyBhCi1zeW1ib2wgdGhhdCB3ZSdkIGV4cGVjdCB0byBiZSBpbiBhbnkg cHRocmVhZCBsaWJyYXJ5KSBpbiB0aGUKLWFzc29jaWF0ZWQgb2JqZmlsZS4gIFRoaXMgYWNjb3Vu dHMgZm9yIHRoZSBjaGFuZ2VzIGluCi1saW51eC10aHJlYWQtZGIuYy4KLQotSSB0aGluayB0aGF0 IG90aGVyIHNtYWxsIGFkanVzdG1lbnRzIHdpbGwgbmVlZCB0byBiZSBtYWRlIGVsc2V3aGVyZQot dG9vLiAgSSd2ZSBiZWVuIHdvcmtpbmcgdGhyb3VnaCByZWdyZXNzaW9ucyBvbiBteSBnbGliYy0y LjMzLjkwMDAKLW1hY2hpbmU7IEkndmUgZml4ZWQgc29tZSBmYWlybHkgIm9idmlvdXMiIGNoYW5n ZXMgaW4gdGhlIHRlc3RzdWl0ZQotKHdoaWNoIGFyZSBpbiBvdGhlciBjb21taXRzKS4gIEZvciB0 aGUgcmVzdCwgaXQncyBub3QgeWV0IGNsZWFyIHRvIG1lCi13aGV0aGVyIHRoZSBoYW5kZnVsIG9m IHJlbWFpbmluZyBmYWlsdXJlcyByZXByZXNlbnQgYSBwcm9ibGVtIGluIGdsaWJjCi1vciBnZGIu ICBJJ20gc3RpbGwgaW52ZXN0aWdhdGluZywgaG93ZXZlciwgSSdsbCBub3RlIHRoYXQgdGhlc2Ug YXJlCi1wcm9ibGVtcyB0aGF0IEkgb25seSBzZWUgb24gbXkgZ2xpYmMtMi4zMy45MDAwIG1hY2hp bmUuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0KLQkqIHNvbGliLmMgKGxpYnB0aHJlYWRfbmFtZV9wKTog TWF0Y2ggImxpYmMiIGluIGFkZGl0aW9uCi0JdG8gImxpYnB0aHJlYWQiLgotCSogbGludXgtdGhy ZWFkLWRiLmMgKGxpYnB0aHJlYWRfb2JqZmlsZV9wKTogTmV3IGZ1bmN0aW9uLgotCShsaWJwdGhy ZWFkX25hbWVfcCk6IEFkanVzdCBwcmVleGlzdGluZyBjYWxsZXJzIHRvIHVzZQotCWxpYnB0aHJl YWRfb2JqZmlsZV9wKCkuCi0KLWRpZmYgLS1naXQgYS9nZGIvbGludXgtdGhyZWFkLWRiLmMgYi9n ZGIvbGludXgtdGhyZWFkLWRiLmMKLS0tLSBhL2dkYi9saW51eC10aHJlYWQtZGIuYwotKysrIGIv Z2RiL2xpbnV4LXRocmVhZC1kYi5jCi1AQCAtODAwLDYgKzgwMCwyNCBAQCBjaGVja190aHJlYWRf ZGIgKHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqaW5mbywgYm9vbCBsb2dfcHJvZ3Jlc3MpCi0gICBy ZXR1cm4gdGVzdF9wYXNzZWQ7Ci0gfQotIAotKy8qIFByZWRpY2F0ZSB3aGljaCB0ZXN0cyB3aGV0 aGVyIG9iamZpbGUgT0JKIHJlZmVycyB0byB0aGUgbGlicmFyeQotKyAgIGNvbnRhaW5pbmcgcHRo cmVhZCByZWxhdGVkIHN5bWJvbHMuICBIaXN0b3JpY2FsbHksIHRoaXMgbGlicmFyeSBoYXMKLSsg ICBiZWVuIG5hbWVkIGluIHN1Y2ggYSB3YXkgdGhhdCBsb29raW5nIGZvciAibGlicHRocmVhZCIg aW4gdGhlIG5hbWUKLSsgICB3YXMgc3VmZmljaWVudCB0byBpZGVudGlmeSBpdC4gIEFzIG9mIGds aWJjLTIuMzQsIHRoZSBDIGxpYnJhcnkKLSsgICAobGliYykgY29udGFpbnMgdGhlIHRocmVhZCBs aWJyYXJ5IHN5bWJvbHMuICBUaGVyZWZvcmUgd2UgY2hlY2sKLSsgICB0aGF0IHRoZSBuYW1lIG1h dGNoZXMgYSBwb3NzaWJsZSB0aHJlYWQgbGlicmFyeSwgYnV0IHdlIGFsc28gY2hlY2sKLSsgICB0 aGF0IGl0IGNvbnRhaW5zIGF0IGxlYXN0IG9uZSBvZiB0aGUgc3ltYm9scyAocHRocmVhZF9jcmVh dGUpIHRoYXQKLSsgICB3ZSdkIGV4cGVjdCB0byBmaW5kIGluIHRoZSB0aHJlYWQgbGlicmFyeS4g ICovCi0rCi0rc3RhdGljIGJvb2wKLStsaWJwdGhyZWFkX29iamZpbGVfcCAob2JqZmlsZSAqb2Jq KQotK3sKLSsgIHJldHVybiAobGlicHRocmVhZF9uYW1lX3AgKG9iamZpbGVfbmFtZSAob2JqKSkK LSsgICAgICAgICAgJiYgbG9va3VwX21pbmltYWxfc3ltYm9sICgicHRocmVhZF9jcmVhdGUiLAot KwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKLSsJCQkJICAgIG9iaikubWluc3lt ICE9IE5VTEwpOwotK30KLSsKLSAvKiBBdHRlbXB0IHRvIGluaXRpYWxpemUgZGxvcGVuKCllZCBs aWJ0aHJlYWRfZGIsIGRlc2NyaWJlZCBieSBJTkZPLgotICAgIFJldHVybiB0cnVlIG9uIHN1Y2Nl c3MuCi0gICAgRmFpbHVyZSBjb3VsZCBoYXBwZW4gaWYgbGlidGhyZWFkX2RiIGRvZXMgbm90IGhh dmUgc3ltYm9scyB3ZSBleHBlY3QsCi1AQCAtMTA3Miw3ICsxMDkwLDcgQEAgdHJ5X3RocmVhZF9k Yl9sb2FkX2Zyb21fcGRpciAoY29uc3QgY2hhciAqc3ViZGlyKQotICAgICByZXR1cm4gZmFsc2U7 Ci0gCi0gICBmb3IgKG9iamZpbGUgKm9iaiA6IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+b2JqZmls ZXMgKCkpCi0tICAgIGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqZmlsZV9uYW1lIChvYmopKSkK LSsgICAgaWYgKGxpYnB0aHJlYWRfb2JqZmlsZV9wIChvYmopKQotICAgICAgIHsKLSAJaWYgKHRy eV90aHJlYWRfZGJfbG9hZF9mcm9tX3BkaXJfMSAob2JqLCBzdWJkaXIpKQotIAkgIHJldHVybiB0 cnVlOwotQEAgLTExODEsNyArMTE5OSw3IEBAIHN0YXRpYyBib29sCi0gaGFzX2xpYnB0aHJlYWQg KHZvaWQpCi0gewotICAgZm9yIChvYmpmaWxlICpvYmogOiBjdXJyZW50X3Byb2dyYW1fc3BhY2Ut Pm9iamZpbGVzICgpKQotLSAgICBpZiAobGlicHRocmVhZF9uYW1lX3AgKG9iamZpbGVfbmFtZSAo b2JqKSkpCi0rICAgIGlmIChsaWJwdGhyZWFkX29iamZpbGVfcCAob2JqKSkKLSAgICAgICByZXR1 cm4gdHJ1ZTsKLSAKLSAgIHJldHVybiBmYWxzZTsKLUBAIC0xMjk1LDcgKzEzMTMsNyBAQCB0aHJl YWRfZGJfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIAkgb2YgdGhlIGxp c3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyB0byBsb2FkLCBhbmQgaW4gYW4gYXBwIG9mIHNldmVyYWwK LSAJIHRob3VzYW5kIHNoYXJlZCBsaWJyYXJpZXMsIHRoaXMgY2FuIG90aGVyd2lzZSBiZSBwYWlu ZnVsLiAgKi8KLSAgICAgICAmJiAoKG9iamZpbGUtPmZsYWdzICYgT0JKRl9NQUlOTElORSkgIT0g MAotLQkgIHx8IGxpYnB0aHJlYWRfbmFtZV9wIChvYmpmaWxlX25hbWUgKG9iamZpbGUpKSkpCi0r CSAgfHwgbGlicHRocmVhZF9vYmpmaWxlX3AgKG9iamZpbGUpKSkKLSAgICAgY2hlY2tfZm9yX3Ro cmVhZF9kYiAoKTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLmMgYi9nZGIvc29saWIu YwotLS0tIGEvZ2RiL3NvbGliLmMKLSsrKyBiL2dkYi9zb2xpYi5jCi1AQCAtOTA2LDEyICs5MDYs MTcgQEAgRG8geW91IG5lZWQgXCJzZXQgc29saWItc2VhcmNoLXBhdGhcIiBvciBcInNldCBzeXNy b290XCI/IiksCi0gCi0gICAgVXNlcyBhIGZhaXJseSBzaW1wbGlzdGljIGhldXJpc3RpYyBhcHBy b2FjaCB3aGVyZSB3ZSBjaGVjawotICAgIHRoZSBmaWxlIG5hbWUgYWdhaW5zdCAiL2xpYnB0aHJl YWQiLiAgVGhpcyBjYW4gbGVhZCB0byBmYWxzZQotLSAgIHBvc2l0aXZlcywgYnV0IHRoaXMgc2hv dWxkIGJlIGdvb2QgZW5vdWdoIGluIHByYWN0aWNlLiAgKi8KLSsgICBwb3NpdGl2ZXMsIGJ1dCB0 aGlzIHNob3VsZCBiZSBnb29kIGVub3VnaCBpbiBwcmFjdGljZS4KLSsKLSsgICBBcyBvZiBnbGli Yy0yLjM0LCBmdW5jdGlvbnMgZm9ybWVybHkgcmVzaWRpbmcgaW4gbGlicHRocmVhZCBoYXZlCi0r ICAgYmVlbiBtb3ZlZCB0byBsaWJjLCBzbyAiL2xpYmMuIiBuZWVkcyB0byBiZSBjaGVja2VkIHRv by4gIChNYXRjaGluZwotKyAgIHRoZSAiLiIgd2lsbCBhdm9pZCBtYXRjaGluZyBsaWJyYXJpZXMg c3VjaCBhcyBsaWJjcnlwdC4pICovCi0gCi0gYm9vbAotIGxpYnB0aHJlYWRfbmFtZV9wIChjb25z dCBjaGFyICpuYW1lKQotIHsKLS0gIHJldHVybiAoc3Ryc3RyIChuYW1lLCAiL2xpYnB0aHJlYWQi KSAhPSBOVUxMKTsKLSsgIHJldHVybiAoc3Ryc3RyIChuYW1lLCAiL2xpYnB0aHJlYWQiKSAhPSBO VUxMCi0rICAgICAgICAgIHx8IHN0cnN0ciAobmFtZSwgIi9saWJjLiIpICE9IE5VTEwgKTsKLSB9 Ci0gCi0gLyogUmV0dXJuIG5vbi16ZXJvIGlmIFNPIGlzIHRoZSBsaWJwdGhyZWFkIHNoYXJlZCBs aWJyYXJ5LiAgKi8KCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0 Y2ggYi9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDVjNTY1MDQuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTcxMDk2LWdsaWJj Mi4zNC0zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSBGRURPUkFf UEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxr ZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTQgSnVuIDIwMjEgMTk6MjQ6NDEgLTA3MDAK LVN1YmplY3Q6IGdkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtMy5wYXRjaAotCi07OyBCYWNrcG9y dCB0ZXN0c3VpdGUgcGF0Y2ggZm9yIG1hdGNoaW5nIG5ldyBsaWJ0aHJlYWRfZGIgcmVsYXRlZCBv dXRwdXQKLTs7IHdoZW4gdGVzdGluZyBnZGIgb24gZ2xpYmMtMi4zNCBtYXRjaGluZXMgKFJIIEJa IDE5NzEwOTYpLgotCi10ZXN0c3VpdGUvZ2xpYi0yLjM0OiBNYXRjaC9jb25zdW1lIG9wdGlvbmFs IGxpYnRocmVhZF9kYiByZWxhdGVkIG91dHB1dAotCi1XaGVuIHVzaW5nIGdsaWJjLTIuMzQsIHdl IG5vdyBzZWUgbWVzc2FnZXMgcmVsYXRlZCB0byB0aGUgbG9hZGluZyBvZgotdGhlIHRocmVhZCBs aWJyYXJ5IGZvciBub24tdGhyZWFkIHByb2dyYW1zLiAgRS5nLiAgZm9yIHRoZSB0ZXN0IGNhc2Us Ci1nZGIuYmFzZS9leGVjbC11cGRhdGUtYnJlYWtwb2ludHMuZXhwLCB3ZSB3aWxsIHNlZSB0aGUg Zm9sbG93aW5nIHdoZW4KLXN0YXJ0aW5nIHRoZSBwcm9ncmFtOgotCi0oZ2RiKSBicmVhayAtcXVh bGlmaWVkIG1haW4KLUJyZWFrcG9pbnQgMSBhdCAweDEwMDExOGM6IGZpbGUgL2lyb253b29kMS9z b3VyY2V3YXJlLWdpdC9mMzQtMi1nbGliYzI0NF9maXgvYmxkLy4uLy4uL3dvcmt0cmVlLWdsaWJj MjQ0X2ZpeC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4ZWNsLXVwZGF0ZS1icmVha3BvaW50cy5j LCBsaW5lIDM0LgotKGdkYikgcnVuCi1TdGFydGluZyBwcm9ncmFtOiBbLi4uXS9leGVjbC11cGRh dGUtYnJlYWtwb2ludHMxCi1bVGhyZWFkIGRlYnVnZ2luZyB1c2luZyBsaWJ0aHJlYWRfZGIgZW5h YmxlZF0KLVVzaW5nIGhvc3QgbGlidGhyZWFkX2RiIGxpYnJhcnkgIi9saWI2NC9saWJ0aHJlYWRf ZGIuc28uMSIuCi0KLVRoZSB0d28gbGluZXMgb2Ygb3V0cHV0IHJlbGF0ZWQgdG8gbGlidGhyZWFk X2RiIGFyZSBuZXc7IHdlIGRpZG4ndCBzZWUKLXRoZXNlIGluIHRoZSBwYXN0LiAgVGhpcyBpcyBh IHNpZGUgZWZmZWN0IG9mIGxpYmMgbm93IGNvbnRhaW5pbmcgdGhlCi1wdGhyZWFkIEFQSSAtIHdl IGNhbiBubyBsb25nZXIgdGVsbCB3aGV0aGVyIHRoZSBwcm9ncmFtIGlzCi1tdWx0aS10aHJlYWRl ZCBieSBzaW1wbHkgbG9va2luZyBmb3IgbGlicHRocmVhZC5zby4gIFRoYXQgc2FpZCwgSQotdGhp bmsgdGhhdCB3ZSBub3cgd2FudCB0byBsb2FkIGxpYnRocmVhZF9kYiBhbnl3YXkgc2luY2UgaXQn cyB1c2VkIHRvCi1yZXNvbHZlIFRMUyB2YXJpYWJsZXM7IGkuZS4gd2UgbmVlZCBpdCBmb3IgY29y cmVjdGx5IGRldGVybWluaW5nIHRoZQotdmFsdWUgb2YgZXJybm8uCi0KLVRoaXMgY29tbWl0IGFk ZHMgdGhlIG5lY2Vzc2FyeSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIG1hdGNoIHRoaXMKLShvcHRp b25hbCkgYWRkaXRpb25hbCBvdXRwdXQgaW4gdGhlIHR3byB0ZXN0cyB3aGljaCB3ZXJlIGZhaWxp bmcKLXdpdGhvdXQgaXQuCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgotCi0JKiBnZGIuYmFz ZS9leGVjbC11cGRhdGUtYnJlYWtwb2ludHMuZXhwOiBBZGQgcmVndWxhcgotCWV4cHJlc3Npb24g Zm9yIG9wdGlvbmFsbHkgbWF0Y2hpbmcgb3V0cHV0IHJlbGF0ZWQgdG8KLQlsaWJ0aHJlYWRfZGIu Ci0JKiBnZGIuYmFzZS9mb3JrLXByaW50LWluZmVyaW9yLWV2ZW50cy5leHA6IExpa2V3aXNlLgot Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9leGVjbC11cGRhdGUtYnJlYWtw b2ludHMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9leGVjbC11cGRhdGUtYnJlYWtwb2lu dHMuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4ZWNsLXVwZGF0ZS1icmVha3Bv aW50cy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZXhlY2wtdXBkYXRlLWJyZWFr cG9pbnRzLmV4cAotQEAgLTEzMiw2ICsxMzIsNyBAQCBwcm9jIHRlc3QgeyBhbHdheXNfaW5zZXJ0 ZWQgfSB7Ci0gCSJDb250aW51aW5nXFwuXHJcbiIgXAotIAkiJHtub3Rfbmx9IGlzIGV4ZWN1dGlu ZyBuZXcgcHJvZ3JhbTogJHtub3Rfbmx9XHJcbiIgXAotIAkiKFJlYWRpbmcgJHtub3Rfbmx9IGZy b20gcmVtb3RlIHRhcmdldFxcLlxcLlxcLlxyXG4pKiIgXAotKwkiKD86LlRocmVhZCBkZWJ1Z2dp bmcgdXNpbmcgLio/IGVuYWJsZWQuXHJcblVzaW5nIC4qPyBsaWJyYXJ5IC4qP1xcLlxyXG4pPyIg XAotIAkiXHJcbiIgXAotIAkiQnJlYWtwb2ludCAxLCBtYWluLiokZ2RiX3Byb21wdCAkIgotICAg ICBzZXQgbWVzc2FnZSAiY29udGludWUgYWNyb3NzIGV4ZWMiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9mb3JrLXByaW50LWluZmVyaW9yLWV2ZW50cy5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2ZvcmstcHJpbnQtaW5mZXJpb3ItZXZlbnRzLmV4cAotLS0tIGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLXByaW50LWluZmVyaW9yLWV2ZW50cy5leHAKLSsrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9yay1wcmludC1pbmZlcmlvci1ldmVudHMuZXhwCi1A QCAtNTksNiArNTksNyBAQCBzZXQgZGV0YWNoX2NoaWxkX3JlICIke3JlYWRpbmdfcmV9XFxcW0Rl dGFjaGluZyBhZnRlciBmb3JrIGZyb20gY2hpbGQgLipcXFxdXHJcbgotIHNldCBkZXRhY2hfcGFy ZW50X3JlICIke3JlYWRpbmdfcmV9XFxcW0RldGFjaGluZyBhZnRlciBmb3JrIGZyb20gcGFyZW50 IC4qXFxcXVxyXG4iCi0gc2V0IG5ld19pbmZfcmUgIiR7cmVhZGluZ19yZX1cXFxbTmV3IGluZmVy aW9yICRkZWNpbWFsIFxcKC4qXFwpXFxcXVxyXG4iCi0gc2V0IGluZl9kZXRhY2hlZF9yZSAiJHty ZWFkaW5nX3JlfVxcXFtJbmZlcmlvciAkZGVjaW1hbCBcXCguKlxcKSBkZXRhY2hlZFxcXF1cclxu IgotK3NldCB0aHJlYWRfZGJfcmUgIig/OlxcXFtUaHJlYWQgZGVidWdnaW5nIHVzaW5nIC4qPyBl bmFibGVkXFxcXVxyXG5Vc2luZyAuKj8gbGlicmFyeSAuKj9cXC5cclxuKT8iCi0gCi0gc2V0IGV4 cGVjdGVkX291dHB1dCBbbGlzdCBcCi0gCQkJICIke2F0dGFjaF9jaGlsZF9yZX0ke25ld19pbmZf cmV9JHtkZXRhY2hfcGFyZW50X3JlfSR7aW5mX2RldGFjaGVkX3JlfSIgXAotQEAgLTg0LDcgKzg1 LDcgQEAgZm9yZWFjaF93aXRoX3ByZWZpeCBwcmludF9pbmZlcmlvcl9ldmVudHMgeyAib24iICJv ZmYiIH0gewotIAkgICAgc2V0IG91dHB1dCBbbGluZGV4ICRleHBlY3RlZF9vdXRwdXQgJGldCi0g CSAgICAjIEFsd2F5cyBhZGQgdGhlICJTdGFydGluZyBwcm9ncmFtLi4uIiBzdHJpbmcgc28gdGhh dCB3ZQotIAkgICAgIyBtYXRjaCBleGFjdGx5IHRoZSBsaW5lcyB3ZSB3YW50LgotLQkgICAgc2V0 IG91dHB1dCAiU3RhcnRpbmcgcHJvZ3JhbTogJGJpbmZpbGVcXHMqXHJcbiR7b3V0cHV0fSR7ZXhp dGVkX25vcm1hbGx5X3JlfSIKLSsJICAgIHNldCBvdXRwdXQgIlN0YXJ0aW5nIHByb2dyYW06ICRi aW5maWxlXFxzKlxyXG4ke3RocmVhZF9kYl9yZX0ke291dHB1dH0ke3RocmVhZF9kYl9yZX0ke2V4 aXRlZF9ub3JtYWxseV9yZX0iCi0gCSAgICBzZXQgaSBbZXhwciAkaSArIDFdCi0gCSAgICBnZGJf dGVzdCAicnVuIiAkb3V0cHV0Ci0gCX0KCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzEwOTYtZ2xp YmMyLjM0LTQucGF0Y2ggYi9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTQucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZTliZTUuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnox OTcxMDk2LWdsaWJjMi4zNC00LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAot RnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmlu IEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTQgSnVuIDIwMjEgMTk6 Mjk6MTkgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtNC5wYXRjaAot Ci07OyBCYWNrcG9ydCBwYXRjaCBhZGp1c3RpbmcgdGVzdCBnZGIuYmFzZS9wcmludC1zeW1ib2wt bG9hZGluZy5leHAuCi07OyAoUkggQlogMTk3MTA5NikuCi0KLXByaW50LXN5bWJvbC1sb2FkaW5n LmV4cDogQWxsb3cgbGliYyBzeW1ib2xzIHRvIGJlIGFscmVhZHkgbG9hZGVkCi0KLU9uZSBjb25z ZXF1ZW5jZSBvZiBjaGFuZ2luZyBsaWJwdGhyZWFkX25hbWVfcCgpIGluIHNvbGliLmMgdG8gKGFs c28pCi1tYXRjaCBsaWJjIGlzIHRoYXQgdGhlIHN5bWJvbHMgZm9yIGxpYmMgd2lsbCBub3cgYmUg bG9hZGVkIGJ5Ci1zb2xpYl9hZGQoKSBpbiBzb2xpYi5jLiAgSSB0aGluayB0aGlzIGlzIG1vc3Rs eSBoYXJtbGVzcyBiZWNhdXNlCi13ZSdsbCBsaWtlbHkgd2FudCB0aGVzZSBzeW1ib2xzIHRvIGJl IGxvYWRlZCBhbnl3YXksIGJ1dCBpdCBkaWQgY2F1c2UKLXR3byBmYWlsdXJlcyBpbiBnZGIuYmFz ZS9wcmludC1zeW1ib2wtbG9hZGluZy5leHAuCi0KLVNwZWNpZmljYWxseS4uLgotCi0xKQotCi1z aGFyZWRsaWJyYXJ5IC4qCi0oZ2RiKSBQQVNTOiBnZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGlu Zy5leHA6IHNobGliIG9mZjogbG9hZCBzaGFyZWQtbGliCi0KLW5vdyBsb29rcyBsaWtlIHRoaXM6 Ci0KLXNoYXJlZGxpYnJhcnkgLioKLVN5bWJvbHMgYWxyZWFkeSBsb2FkZWQgZm9yIC9saWI2NC9s aWJjLnNvLjYKLShnZGIpIFBBU1M6IGdkYi5iYXNlL3ByaW50LXN5bWJvbC1sb2FkaW5nLmV4cDog c2hsaWIgb2ZmOiBsb2FkIHNoYXJlZC1saWIKLQotMikKLQotc2hhcmVkbGlicmFyeSAuKgotTG9h ZGluZyBzeW1ib2xzIGZvciBzaGFyZWQgbGlicmFyaWVzOiAuKgotKGdkYikgUEFTUzogZ2RiLmJh c2UvcHJpbnQtc3ltYm9sLWxvYWRpbmcuZXhwOiBzaGxpYiBicmllZjogbG9hZCBzaGFyZWQtbGli Ci0KLW5vdyBsb29rcyBsaWtlIHRoaXM6Ci0KLXNoYXJlZGxpYnJhcnkgLioKLUxvYWRpbmcgc3lt Ym9scyBmb3Igc2hhcmVkIGxpYnJhcmllczogLioKLVN5bWJvbHMgYWxyZWFkeSBsb2FkZWQgZm9y IC9saWI2NC9saWJjLnNvLjYKLShnZGIpIFBBU1M6IGdkYi5iYXNlL3ByaW50LXN5bWJvbC1sb2Fk aW5nLmV4cDogc2hsaWIgYnJpZWY6IGxvYWQgc2hhcmVkLWxpYgotCi1GaXhpbmcgY2FzZSAjMiBl bmRlZCB1cCBiZWluZyBlYXNpZXIgdGhhbiAjMS4gICMxIGhhZCBiZWVuIHVzaW5nCi1nZGJfdGVz dF9ub19vdXRwdXQgdG8gY29ycmVjdGx5IG1hdGNoIHRoaXMgbm8tb3V0cHV0IGNhc2UuICBJCi1l bmRlZCB1cCByZXBsYWNpbmcgaXQgd2l0aCBnZGJfdGVzdF9tdWx0aXBsZSwgbWF0Y2hpbmcgdGhl IGV4YWN0Ci1leHBlY3RlZCBvdXRwdXQgZm9yIGVhY2ggb2YgdGhlIHR3byBub3cgYWNjZXB0YWJs ZSBjYXNlcy4KLQotRm9yIGNhc2UgIzIsIEkgc2ltcGx5IGFkZGVkIGFuIG9wdGlvbmFsIG5vbi1j YXB0dXJpbmcgZ3JvdXAKLWZvciB0aGUgcG90ZW50aWFsIG5ldyBvdXRwdXQuCi0KLWdkYi90ZXN0 c3VpdGUvQ2hhbmdlTG9nOgotCi0JKiBnZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGluZy5leHAg KHByb2MgdGVzdF9sb2FkX3NobGliKToKLQlBbGxvdyAiU3ltYm9scyBhbHJlYWR5IGxvYWRlZCBm b3IuLi4iIG1lc3NhZ2VzLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9w cmludC1zeW1ib2wtbG9hZGluZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ByaW50LXN5 bWJvbC1sb2FkaW5nLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmludC1zeW1i b2wtbG9hZGluZy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJpbnQtc3ltYm9s LWxvYWRpbmcuZXhwCi1AQCAtOTYsNiArOTYsNyBAQCB0ZXN0X2xvYWRfY29yZSBmdWxsCi0gCi0g cHJvYyB0ZXN0X2xvYWRfc2hsaWIgeyBwcmludF9zeW1ib2xfbG9hZGluZyB9IHsKLSAgICAgZ2xv YmFsIGJpbmZpbGUKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSAgICAgd2l0aF90ZXN0X3ByZWZp eCAic2hsaWIgJHtwcmludF9zeW1ib2xfbG9hZGluZ30iIHsKLSAJY2xlYW5fcmVzdGFydCAke2Jp bmZpbGV9Ci0gCWdkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIKLUBA IC0xMDYsMTIgKzEwNywyMCBAQCBwcm9jIHRlc3RfbG9hZF9zaGxpYiB7IHByaW50X3N5bWJvbF9s b2FkaW5nIH0gewotIAlzZXQgdGVzdF9uYW1lICJsb2FkIHNoYXJlZC1saWIiCi0gCXN3aXRjaCAk e3ByaW50X3N5bWJvbF9sb2FkaW5nfSB7Ci0gCSAgICAib2ZmIiB7Ci0tCQlnZGJfdGVzdF9ub19v dXRwdXQgInNoYXJlZGxpYnJhcnkgLioiIFwKLS0JCSAgICAke3Rlc3RfbmFtZX0KLSsJCXNldCBj bWQgInNoYXJlZGxpYnJhcnkgLioiCi0rCQlzZXQgY21kX3JlZ2V4IFtzdHJpbmdfdG9fcmVnZXhw ICRjbWRdCi0rCQlnZGJfdGVzdF9tdWx0aXBsZSAkY21kICR0ZXN0X25hbWUgewotKwkJICAgIC1y ZSAiXiRjbWRfcmVnZXhcclxuJGdkYl9wcm9tcHQgJCIgewotKwkJCXBhc3MgJHRlc3RfbmFtZQot KwkJICAgIH0KLSsJCSAgICAtcmUgIl4kY21kX3JlZ2V4XHJcblN5bWJvbHMgYWxyZWFkeSBsb2Fk ZWQgZm9yXFteXHJcblxdKlxcL2xpYmNcXC5cW15cclxuXF0qXHJcbiRnZGJfcHJvbXB0ICQiIHsK LSsJCQlwYXNzICR0ZXN0X25hbWUKLSsJCSAgICB9Ci0rCQl9Ci0gCSAgICB9Ci0gCSAgICAiYnJp ZWYiIHsKLSAJCWdkYl90ZXN0ICJzaGFyZWRsaWJyYXJ5IC4qIiBcCi0tCQkgICAgIkxvYWRpbmcg c3ltYm9scyBmb3Igc2hhcmVkIGxpYnJhcmllczogXFwuXFwqIiBcCi0rCQkgICAgIkxvYWRpbmcg c3ltYm9scyBmb3Igc2hhcmVkIGxpYnJhcmllczogXFwuXFwqLio/KD86U3ltYm9scyBhbHJlYWR5 IGxvYWRlZCBmb3IgLio/bGliYyk/IiBcCi0gCQkgICAgJHt0ZXN0X25hbWV9Ci0gCSAgICB9Ci0g CSAgICAiZnVsbCIgewoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtNS5w YXRjaCBiL2dkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtNS5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggOTExZDJiYy4uMDAwMDAwMAotLS0gYS9nZGItcmhiejE5NzEwOTYtZ2xp YmMyLjM0LTUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1Gcm9tIEZFRE9S QV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIg PGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxNCBKdW4gMjAyMSAxOTozMjoxMiAtMDcw MAotU3ViamVjdDogZ2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4zNC01LnBhdGNoCi0KLTs7IEJhY2tw b3J0IHBhdGNoIGFkanVzdGluZyB0ZXN0IGdkYi5taS9taS1zeW0taW5mby5leHAgKFJIIEJaIDE5 NzEwOTYpLgotCi1taS1zeW0taW5mby5leHA6IEluY3JlYXNlIHRpbWVvdXQgZm9yIDExNC1zeW1i b2wtaW5mby1mdW5jdGlvbnMKLQotTG9hZGluZyBsaWJjLnNvJ3Mgc3ltYm9scyBpbmNyZWFzZWQg dGhlIGFtb3VudCBvZiB0aW1lIG5lZWRlZCBmb3IKLTExNC1zeW1ib2wtaW5mby1mdW5jdGlvbiB0 byBmZXRjaCBzeW1ib2xzLCBjYXVzaW5nIGEgdGltZW91dCBkdXJpbmcgbXkKLXRlc3RpbmcuICBJ IGVuY2xvc2VkIHRoZSBlbnRpcmUgYmxvY2sgd2l0aCBhICJ3aXRoX3RpbWVvdXRfZmFjdG9yIDQi LAotd2hpY2ggZml4ZXMgdGhlIHByb2JsZW0gZm9yIG1lLiAgKFVzaW5nIDIgYWxzbyBmaXhlZCBp dCBmb3IgbWUsIGJ1dCBpdAotbWlnaHQgbm90IGJlIGVub3VnaCB3aGVuIHJ1bm5pbmcgdGhpcyB0 ZXN0IG9uIHNsb3dlciBtYWNoaW5lcy4pCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgotCi0J KiBnZGIubWkvbWktc3ltLWluZm8uZXhwICgxMTQtc3ltYm9sLWluZm8tZnVuY3Rpb24gdGVzdCk6 IEluY3JlYXNlCi0JdGltZW91dC4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pLXN5bS1pbmZvLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXN5bS1pbmZvLmV4cAot LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktc3ltLWluZm8uZXhwCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5taS9taS1zeW0taW5mby5leHAKLUBAIC0xMjIsMzMgKzEyMiwzNSBAQCBnZGJf dGVzdF9tdWx0aXBsZSAkY21kICR0ZXN0bmFtZSAtcHJvbXB0ICIke21pX2dkYl9wcm9tcHR9JCIg ewotICMgKGZyb20gdGhlIHN5bWJvbCB0YWJsZSkuICBUaGVyZSdzIG9mdGVuIHNvIG11Y2ggb3V0 cHV0IG91dHB1dCBmcm9tCi0gIyB0aGlzIGNvbW1hbmQgdGhhdCB3ZSBvdmVyZmxvdyBleHBlY3Qn cyBidWZmZXJzLCBhdm9pZCB0aGlzIGJ5Ci0gIyBmZXRjaGluZyB0aGUgb3V0cHV0IHBpZWNlIGJ5 IHBpZWNlLgotLXNldCB0ZXN0bmFtZSAiTGlzdCBhbGwgZnVuY3Rpb25zIgotLXNldCBjbWQgIjEx NC1zeW1ib2wtaW5mby1mdW5jdGlvbnMgLS1pbmNsdWRlLW5vbmRlYnVnIgotLXNldCBzdGF0ZSAw Ci0tZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAke3Rlc3RuYW1lfSAtcHJvbXB0ICIke21pX2dkYl9w cm9tcHR9JCIgewotLSAgICAtcmUgIjExNFxcXmRvbmUsc3ltYm9scz1ceyIgewotLQlpZiB7ICRz dGF0ZSA9PSAwIH0geyBzZXQgc3RhdGUgMSB9Ci0tCWV4cF9jb250aW51ZQotLSAgICB9Ci0tICAg IC1yZSAiZGVidWc9XFxcWyR7c3ltdGFiX3JlfSIgewotLQlpZiB7ICRzdGF0ZSA9PSAxIH0geyBz ZXQgc3RhdGUgMiB9Ci0tCWV4cF9jb250aW51ZQotLSAgICB9Ci0tICAgIC1yZSAiLCR7c3ltdGFi X3JlfSIgewotLQlleHBfY29udGludWUKLS0gICAgfQotLSAgICAtcmUgIlxcXF0sbm9uZGVidWc9 XFxcWyIgewotLQlpZiB7ICRzdGF0ZSA9PSAyIH0geyBzZXQgc3RhdGUgMyB9Ci0tCWV4cF9jb250 aW51ZQotLSAgICB9Ci0tICAgIC1yZSAiXHthZGRyZXNzPSR7cXN0cn0sbmFtZT0ke3FzdHJ9XH0s IiB7Ci0tCWV4cF9jb250aW51ZQotLSAgICB9Ci0tICAgIC1yZSAiXHthZGRyZXNzPSR7cXN0cn0s bmFtZT0ke3FzdHJ9XH1cXFxdXH1cclxuJHttaV9nZGJfcHJvbXB0fSQiIHsKLS0JaWYgeyAkc3Rh dGUgPT0gMyB9IHsKLS0JICAgIHBhc3MgJGdkYl90ZXN0X25hbWUKLS0JfSBlbHNlIHsKLS0JICAg IGZhaWwgJGdkYl90ZXN0X25hbWUKLSt3aXRoX3RpbWVvdXRfZmFjdG9yIDQgewotKyAgICBzZXQg dGVzdG5hbWUgIkxpc3QgYWxsIGZ1bmN0aW9ucyIKLSsgICAgc2V0IGNtZCAiMTE0LXN5bWJvbC1p bmZvLWZ1bmN0aW9ucyAtLWluY2x1ZGUtbm9uZGVidWciCi0rICAgIHNldCBzdGF0ZSAwCi0rICAg IGdkYl90ZXN0X211bHRpcGxlICRjbWQgJHt0ZXN0bmFtZX0gLXByb21wdCAiJHttaV9nZGJfcHJv bXB0fSQiIHsKLSsJLXJlICIxMTRcXF5kb25lLHN5bWJvbHM9XHsiIHsKLSsJICAgIGlmIHsgJHN0 YXRlID09IDAgfSB7IHNldCBzdGF0ZSAxIH0KLSsJICAgIGV4cF9jb250aW51ZQotKwl9Ci0rCS1y ZSAiZGVidWc9XFxcWyR7c3ltdGFiX3JlfSIgewotKwkgICAgaWYgeyAkc3RhdGUgPT0gMSB9IHsg c2V0IHN0YXRlIDIgfQotKwkgICAgZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICIsJHtzeW10YWJf cmV9IiB7Ci0rCSAgICBleHBfY29udGludWUKLSsJfQotKwktcmUgIlxcXF0sbm9uZGVidWc9XFxc WyIgewotKwkgICAgaWYgeyAkc3RhdGUgPT0gMiB9IHsgc2V0IHN0YXRlIDMgfQotKwkgICAgZXhw X2NvbnRpbnVlCi0rCX0KLSsJLXJlICJce2FkZHJlc3M9JHtxc3RyfSxuYW1lPSR7cXN0cn1cfSwi IHsKLSsJICAgIGV4cF9jb250aW51ZQotKwl9Ci0rCS1yZSAiXHthZGRyZXNzPSR7cXN0cn0sbmFt ZT0ke3FzdHJ9XH1cXFxdXH1cclxuJHttaV9nZGJfcHJvbXB0fSQiIHsKLSsJICAgIGlmIHsgJHN0 YXRlID09IDMgfSB7Ci0rCQlwYXNzICRnZGJfdGVzdF9uYW1lCi0rCSAgICB9IGVsc2UgewotKwkJ ZmFpbCAkZ2RiX3Rlc3RfbmFtZQotKwkgICAgfQotIAl9Ci0gICAgIH0KLSB9CgpkaWZmIC0tZ2l0 IGEvZ2RiLXJoYnoxOTc2ODg3LWZpZWxkLWxvY2F0aW9uLWtpbmQucGF0Y2ggYi9nZGItcmhiejE5 NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaAppbmRleCA4MDNiMmRhLi4wMGY5YWNjIDEw MDY0NAotLS0gYS9nZGItcmhiejE5NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaAorKysg Yi9nZGItcmhiejE5NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaApAQCAtMSw2ICsxLDYg QEAKIEZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9 P1VURi04P3E/QWxleGFuZHJhPTIwSD1DMz1BMWprb3Y9QzM9QTE/PSA8YWhhamtvdmFAcmVkaGF0 LmNvbT4KLURhdGU6IFRodSwgMzAgU2VwIDIwMjEgMTM6MDc6NTYgKzAyMDAKK0RhdGU6IFdlZCwg MjkgU2VwIDIwMjEgMTA6NTg6NTAgKzAyMDAKIFN1YmplY3Q6IGdkYi1yaGJ6MTk3Njg4Ny1maWVs ZC1sb2NhdGlvbi1raW5kLnBhdGNoCiAKIDs7QmFja3BvcnQgdXBzdHJlYW0gcGF0Y2ggd2hpY2gg Zml4ZXMgaW50ZXJuYWwtZXJyb3I6IFVuZXhwZWN0ZWQKQEAgLTE3LDcgKzE3LDcgQEAgRml4ZXMg YnVnIDI4MDMwLgogZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2RiL2dkYnR5cGVzLmMK IC0tLSBhL2dkYi9nZGJ0eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTU0MzQsNiAr NTQzNCwxMCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK K0BAIC01NTcxLDYgKzU1NzEsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCiAgCQkJCSAgeHN0cmR1cCAoVFlQRV9GSUVMRF9TVEFUSUNfUEhZU05BTUUg KHR5cGUsCiAgCQkJCQkJCQkgICAgICAgaSkpKTsKICAJICAgICAgYnJlYWs7CgpkaWZmIC0tZ2l0 IGEvZ2RiLXJoYnoyMDEyOTc2LXBhcGVyLW92ZXItZm9ydHJhbi1sZXgtcHJvYmxlbXMucGF0Y2gg Yi9nZGItcmhiejIwMTI5NzYtcGFwZXItb3Zlci1mb3J0cmFuLWxleC1wcm9ibGVtcy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzNmNTFkCi0tLSAvZGV2L251bGwK KysrIGIvZ2RiLXJoYnoyMDEyOTc2LXBhcGVyLW92ZXItZm9ydHJhbi1sZXgtcHJvYmxlbXMucGF0 Y2gKQEAgLTAsMCArMSwxODUgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+CitEYXRl OiBNb24sIDExIE9jdCAyMDIxIDExOjIyOjA0IC0wNzAwCitTdWJqZWN0OiBnZGItcmhiejIwMTI5 NzYtcGFwZXItb3Zlci1mb3J0cmFuLWxleC1wcm9ibGVtcy5wYXRjaAorCis7OyBCYWNrcG9ydCBn ZGIuZm9ydHJhbiB0ZXN0c3VpdGUgY2hhbmdlcyBpbiBvcmRlciB0byBhdm9pZCBGb3J0cmFuCis7 OyBsZXhpY2FsIGFuYWx5emVyIGJ1Zy4KKworW2dkYi90ZXN0c3VpdGVdIEZpeCBGQUlMIGluIGdk Yi5taS9taS12YXItY2hpbGQtZi5leHAKKworV2hlbiBydW5uaW5nIHRlc3QtY2FzZSBnZGIubWkv bWktdmFyLWNoaWxkLWYuZXhwIG9uIG9wZW5TVVNFIFR1bWJsZXdlZWQKKyh3aXRoIGdsaWJjIDIu MzQpIEkgcnVuIGludG86CisuLi4KKyhnZGIpIF5NCitQQVNTOiBnZGIubWkvbWktdmFyLWNoaWxk LWYuZXhwOiBtaSBydW50byBwcm9nX2FycmF5CitFeHBlY3Rpbmc6IF4oLXZhci1jcmVhdGUgYXJy YXkgXCogYXJyYXlbXk0KK10rKT8oXF5kb25lLG5hbWU9ImFycmF5IixudW1jaGlsZD0iWzAtOV0r Iix2YWx1ZT0iLioiLHR5cGU9LiosaGFzX21vcmU9IjAiW15NCitdK1soXWdkYlspXSBeTQorWyBd KikKKy12YXItY3JlYXRlIGFycmF5ICogYXJyYXleTQorJiJBdHRlbXB0IHRvIHVzZSBhIHR5cGUg bmFtZSBhcyBhbiBleHByZXNzaW9uLlxuIl5NCiteZXJyb3IsbXNnPSItdmFyLWNyZWF0ZTogdW5h YmxlIHRvIGNyZWF0ZSB2YXJpYWJsZSBvYmplY3QiXk0KKyhnZGIpIF5NCitGQUlMOiBnZGIubWkv bWktdmFyLWNoaWxkLWYuZXhwOiBjcmVhdGUgbG9jYWwgdmFyaWFibGUgYXJyYXkgKHVuZXhwZWN0 ZWQgb3V0cHV0KQorLi4uCisKK1RoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIG5hbWUgYXJyYXkgaXMg dXNlZCBib3RoOgorLSBhcyB0aGUgbmFtZSBmb3IgYSBsb2NhbCB2YXJpYWJsZQorLSBhcyB0aGUg bmFtZSBvZiBhIHR5cGUgaW4gZ2xpYmMsIGluIGZpbGUgbWFsbG9jL2R5bmFycmF5LXNrZWxldG9u LmMsIGFzIGluY2x1ZGVkCisgIGJ5IG5zcy9uc3NfZmlsZXMvZmlsZXMtaG9zdHMuYy4KKworRml4 IHRoaXMgYnkgaWdub3JpbmcgdGhlIHNoYXJlZCBsaWIgc3ltYm9scy4KKworTGlrZXdpc2UgaW4g YSBjb3VwbGUgb2Ygb3RoZXIgZm9ydHJhbiB0ZXN0cy4KKworVGVzdGVkIG9uIHg4Nl82NC1saW51 eC4KKworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYWxsb2NhdGVkLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYWxsb2NhdGVkLmV4cAorLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9hbGxvY2F0ZWQuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2FsbG9jYXRlZC5leHAKK0BAIC0yNSwxMSArMjUsMTcgQEAgaWYge1twcmVwYXJl X2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKyAg ICAgcmV0dXJuIC0xCisgfQorIAorKyMgQXZvaWQgc2hhcmVkIGxpYiBzeW1ib2xzLgorK2dkYl90 ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIKKysKKyBpZiAhW2ZvcnRyYW5f cnVudG9fbWFpbl0geworICAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorICAg ICByZXR1cm4gLTEKKyB9CisgCisrIyBBdm9pZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIg dGhlICdhcnJheScgdHlwZS4KKytnZGJfdGVzdF9ub19vdXRwdXQgIm5vc2hhcmVkbGlicmFyeSIK KysKKyAjIFNldCBhbGwgdGhlIGJyZWFrcG9pbnRzLgorIGZvciB7IHNldCBpIDEgfSB7ICRpIDwg NiB9IHsgaW5jciBpIH0geworICAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiQnJlYWtwb2ludCAkaSJdCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9hcnJheS1zbGljZXMtYmFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXkt c2xpY2VzLWJhZC5leHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xp Y2VzLWJhZC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2Vz LWJhZC5leHAKK0BAIC0yNSwxMSArMjUsMTcgQEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKyAgICAgcmV0dXJuIC0xCisg fQorIAorKyMgQXZvaWQgc2hhcmVkIGxpYiBzeW1ib2xzLgorK2dkYl90ZXN0X25vX291dHB1dCAi c2V0IGF1dG8tc29saWItYWRkIG9mZiIKKysKKyBpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0gewor ICAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorICAgICByZXR1cm4gLTEKKyB9 CisgCisrIyBBdm9pZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlw ZS4KKytnZGJfdGVzdF9ub19vdXRwdXQgIm5vc2hhcmVkbGlicmFyeSIKKysKKyAjIGdkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IE1lc3NhZ2UgQnJlYWtwb2ludCJd CisgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkZpcnN0IEJyZWFrcG9pbnQi XQorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJTZWNvbmQgQnJlYWtwb2lu dCJdCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMt c3ViLXNsaWNlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1z dWItc2xpY2VzLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGlj ZXMtc3ViLXNsaWNlcy5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXkt c2xpY2VzLXN1Yi1zbGljZXMuZXhwCitAQCAtMjUsMTEgKzI1LDE3IEBAIGlmIHtbcHJlcGFyZV9m b3JfdGVzdGluZyAke3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisgICAg IHJldHVybiAtMQorIH0KKyAKKysjIEF2b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KKytnZGJfdGVz dF9ub19vdXRwdXQgInNldCBhdXRvLXNvbGliLWFkZCBvZmYiCisrCisgaWYgIVtmb3J0cmFuX3J1 bnRvX21haW5dIHsKKyAgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKKyAgICAg cmV0dXJuIC0xCisgfQorIAorKyMgQXZvaWQgbGliYyBzeW1ib2xzLCBpbiBwYXJ0aWN1bGFyIHRo ZSAnYXJyYXknIHR5cGUuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJub3NoYXJlZGxpYnJhcnkiCisr CisgIyBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBNZXNzYWdl IEJyZWFrcG9pbnQiXQorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJTdG9w IEhlcmUiXQorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVh a3BvaW50Il0KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNs aWNlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKKy0t LSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cAorKysrIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCitAQCAtNTUsMTEgKzU1LDE3 IEBAIHByb2MgcnVuX3Rlc3QgeyByZXBhY2sgfSB7CisgCisgICAgIGNsZWFuX3Jlc3RhcnQgJHti aW5maWxlfQorIAorKyAgICAjIEF2b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KKysgICAgZ2RiX3Rl c3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1zb2xpYi1hZGQgb2ZmIgorKworICAgICBpZiAhW2ZvcnRy YW5fcnVudG9fbWFpbl0geworIAl1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorIAly ZXR1cm4gLTEKKyAgICAgfQorIAorKyAgICAjIEF2b2lkIGxpYmMgc3ltYm9scywgaW4gcGFydGlj dWxhciB0aGUgJ2FycmF5JyB0eXBlLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgIm5vc2hhcmVk bGlicmFyeSIKKysKKyAgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZm9ydHJhbiByZXBhY2st YXJyYXktc2xpY2VzICRyZXBhY2siCisgCisgICAgICMgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRf bGluZV9udW1iZXIgIkRpc3BsYXkgTWVzc2FnZSBCcmVha3BvaW50Il0KK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xib3VuZC11Ym91bmQuZXhwIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9sYm91bmQtdWJvdW5kLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9sYm91bmQtdWJvdW5kLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9sYm91bmQtdWJvdW5kLmV4cAorQEAgLTI1LDEyICsyNSwxNyBAQCBpZiB7W3ByZXBhcmVfZm9y X3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorICAgICBy ZXR1cm4gLTEKKyB9CisgCisrIyBBdm9pZCBzaGFyZWQgbGliIHN5bWJvbHMuCisrZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJzZXQgYXV0by1zb2xpYi1hZGQgb2ZmIgorIAorIGlmICFbZm9ydHJhbl9ydW50 b19tYWluXSB7CisgICAgIHVudGVzdGVkICJjb3VsZCBub3QgcnVuIHRvIG1haW4iCisgICAgIHJl dHVybiAtMQorIH0KKyAKKysjIEF2b2lkIGxpYmMgc3ltYm9scywgaW4gcGFydGljdWxhciB0aGUg J2FycmF5JyB0eXBlLgorK2dkYl90ZXN0X25vX291dHB1dCAibm9zaGFyZWRsaWJyYXJ5IgorKwor IGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJUZXN0IEJyZWFrcG9pbnQiXQor IGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0K KyAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCistLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9zdWJhcnJheS5leHAKK0BAIC0yNywxNiArMjcsMTcgQEAgaWYge1twcmVwYXJlX2Zvcl90 ZXN0aW5nICJmYWlsZWQgdG8gcHJlcGFyZSIgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmOTB9 XX0geworICAgICByZXR1cm4gLTEKKyB9CisgCistZ2RiX2V4aXQKKy1nZGJfc3RhcnQKKy1nZGJf cmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKy1nZGJfbG9hZCAke2JpbmZpbGV9Cisr IyBBdm9pZCBzaGFyZWQgbGliIHN5bWJvbHMuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0 by1zb2xpYi1hZGQgb2ZmIgorIAorIGlmICFbZm9ydHJhbl9ydW50b19tYWluXSB0aGVuIHsKKyAg ICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKKyAgICAgY29udGludWUKKyB9CisgCisr IyBBdm9pZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KKytn ZGJfdGVzdF9ub19vdXRwdXQgIm5vc2hhcmVkbGlicmFyeSIKKysKKyAjIFRyeSB0byBzZXQgYnJl YWtwb2ludCBhdCB0aGUgbGFzdCB3cml0ZSBzdGF0ZW1lbnQuCisgCisgc2V0IGJwX2xvY2F0aW9u IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzdHIoOikiXQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZh ci1jaGlsZC1mLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYu ZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAKK0BAIC0z Niw4ICszNiwxNCBAQCBpZiB7W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3Jj ZmlsZX0iICIke2JpbmZpbGV9IiBcCisgbWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCisgbWlfZ2RiX2xvYWQgJHtiaW5maWxlfQorIAorKyMgQXZvaWQgc2hhcmVkIGxpYiBz eW1ib2xzLgorK21pX2dkYl90ZXN0ICItZ2RiLXNldCBhdXRvLXNvbGliLWFkZCBvZmYiICJcXF5k b25lIgorKworIG1pX3J1bnRvIHByb2dfYXJyYXkKKyAKKysjIEF2b2lkIGxpYmMgc3ltYm9scywg aW4gcGFydGljdWxhciB0aGUgJ2FycmF5JyB0eXBlLgorK21pX2dkYl90ZXN0ICJub3NoYXJlZGxp YnJhcnkiICIuKlxcXmRvbmUiCisrCisgbWlfY3JlYXRlX3Zhcm9iaiAiYXJyYXkiICJhcnJheSIg ImNyZWF0ZSBsb2NhbCB2YXJpYWJsZSBhcnJheSIKKyAKKyAKCmRpZmYgLS1naXQgYS9nZGItdGVz dC1mb3ItcmhiejE5NzY4ODcucGF0Y2ggYi9nZGItdGVzdC1mb3ItcmhiejE5NzY4ODcucGF0Y2gK aW5kZXggZDA2MjVkNy4uM2NiNzA0OSAxMDA2NDQKLS0tIGEvZ2RiLXRlc3QtZm9yLXJoYnoxOTc2 ODg3LnBhdGNoCisrKyBiL2dkYi10ZXN0LWZvci1yaGJ6MTk3Njg4Ny5wYXRjaApAQCAtMSw2ICsx LDYgQEAKIEZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9t OiA9P1VURi04P3E/QWxleGFuZHJhPTIwSD1DMz1BMWprb3Y9QzM9QTE/PSA8YWhhamtvdmFAcmVk aGF0LmNvbT4KLURhdGU6IFRodSwgMzAgU2VwIDIwMjEgMTM6MTM6MDMgKzAyMDAKK0RhdGU6IFdl ZCwgMjkgU2VwIDIwMjEgMTE6MTQ6NTEgKzAyMDAKIFN1YmplY3Q6IGdkYi10ZXN0LWZvci1yaGJ6 MTk3Njg4Ny5wYXRjaAogCiA7OyBCYWNrcG9ydCB0ZXN0IGZvciBSSEJaIDE5NzY4ODcgKEtldmlu IEJ1ZXR0bmVyKS4KCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDY2YjNl N2EuLmE1MjQ3M2YgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0zMSwx MyArMzEsMTMgQEAgTmFtZTogJXs/c2NsX3ByZWZpeH1nZGIKICMgRnJlZXplIGl0IHdoZW4gR0RC IGdldHMgYnJhbmNoZWQKICVnbG9iYWwgc25hcHNyYyAgICAyMDIwMDIwOAogIyBTZWUgdGltZXN0 YW1wIG9mIHNvdXJjZSBnbnVsaWIgaW5zdGFsbGVkIGludG8gZ251bGliLyAuCi0lZ2xvYmFsIHNu YXBnbnVsaWIgMjAyMDA2MzAKKyVnbG9iYWwgc25hcGdudWxpYiAyMDIxMDEwNQogJWdsb2JhbCB0 YXJuYW1lIGdkYi0le3ZlcnNpb259Ci1WZXJzaW9uOiAxMC4yCitWZXJzaW9uOiAxMS4xCiAKICMg VGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0 YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3Rh eSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVs ZWFzZTogOSV7P2Rpc3R9CitSZWxlYXNlOiAyJXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFu ZCBHUEx2Mysgd2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2Vw dGlvbnMgYW5kIEdQTCsgYW5kIExHUEx2MisgYW5kIExHUEx2MysgYW5kIEJTRCBhbmQgUHVibGlj IERvbWFpbiBhbmQgR0ZETAogIyBEbyBub3QgcHJvdmlkZSBVUkwgZm9yIHNuYXBzaG90cyBhcyB0 aGUgZmlsZSBsYXN0cyB0aGVyZSBvbmx5IGZvciAyIGRheXMuCkBAIC0xMTQzLDYgKzExNDMsMTYg QEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIE1vbiBPY3QgMTEgMjAyMSBLZXZpbiBCdWV0 dG5lciAtIDExLjEtMgorLSBCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB3aGljaCBwYXBlcnMgb3Zl ciBGb3J0cmFuIGxleGljYWwgYW5hbHl6ZXIKKyAgYnVnIChSSEJaIDIwMTI5NzYsIFRvbSBkZSBW cmllcykuCisKKyogTW9uIE9jdCAwNCAyMDIxIEtldmluIEJ1ZXR0bmVyIC0gMTEuMS0xCistIFJl YmFzZSB0byBGU0YgR0RCIDExLjEuCistIEFkanVzdCBidWlsZC1pZCByZWxhdGVkIHBhdGNoZXMu CistIERyb3AgYmFja3BvcnRlZCBwYXRjaGVzIHdoaWNoIGFyZSBubyBsb25nZXIgcmVsZXZhbnQu CistIEJ1bXAgJ3NuYXBnbnVsaWInIGRhdGUuCisKICogVGh1IFNlcCAzMCAyMDIxIEFsZXhhbmRy YSBIw6Fqa292w6EgPGFoYWprb3ZhQHJlZGhhdC5jb20+IC0gMTAuMi05CiAtIEJhY2twb3J0IHRl c3QgZm9yIFJIQlogMTk3Njg4NyAoS2V2aW4gQnVldHRuZXIpLgogCgpkaWZmIC0tZ2l0IGEvc291 cmNlcyBiL3NvdXJjZXMKaW5kZXggZWNjNzc4NC4uNDdhMDJlNSAxMDA2NDQKLS0tIGEvc291cmNl cworKysgYi9zb3VyY2VzCkBAIC0xLDMgKzEsMyBAQAogU0hBNTEyIChnZGItbGlic3RkYysrLXYz LXB5dGhvbi04LjEuMS0yMDE4MDYyNi50YXIueHopID0gYThiMWM1NGRkMzQ4Y2ZlYjM3ZGE3M2Y5 Njg3NDI4OTZiZTNkZDEzYTQyMTVmOGQ4NTE5ODcwYzJhYmVhOTE1ZjUxNzZjM2ZhNjk4OWRkZDEw ZjIwMDIwYTE2ZjBmYWIyMGNiYWU2OGVlOGQ1OGE4MjIzNGQ4Nzc4MDIzNTIwZjgKIFNIQTUxMiAo djIuMC40LnRhci5neikgPSA1OTZkMmRhYzI1ZmRiZDNlNTY2MGQ3ZTFmZWViN2U4ZDVkMzU5ZDFk MGUxOWI2MmVmNTkzNDQ5MDM3ZGYyMzZkYjFkNGQ5ODgyMGYwMDMxMDYxYjU1NzNlZDY3Nzk3YTg1 YTc3ZmI5OTkxZTIxNWFiYWFiYzRiZmUxNmNlYWVjOAotU0hBNTEyIChnZGItMTAuMi50YXIueHop ID0gMzY1Mzc2MmFjMDA4ZTA2NWMzN2NkNjQxNjUzMTg0YzlmZjdjZTUxZWUyMjIyYWRlMTEyMmJl YzlkNmNjNjRkZmZkNGZiNzQ4ODhlZjExYWMxOTQyMDY0YTA4OTEwZTk2Yjc4NjUxMTJhZDM3ZjQ2 MDJlYjBhMTZiZWQwNzRjYWEKK1NIQTUxMiAoZ2RiLTExLjEudGFyLnh6KSA9IGM0MGJmOTcwZTJm N2MyMTA3YjI5YzVhYTZhNzE1MGRhYTcwOWQ3NWRkYWRiNzNhYzIwNzQyNDE5ZDQ2MzdkMTU4ZTMw NjNhNGM2ZmY2ZTQ3ZmFlOGNhOGUxZDM2MjUzOTczZjg1ZWExNTQ0NWQwMDRiZTZkNWQ3YTJkZDli ZDQ2CgpkaWZmIC0tZ2l0IGEvdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaCBiL3Rlc3Rpbmct Y3VzdG9tLWlucHV0cmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NWY3 ZDEuLjAwMDAwMDAKLS0tIGEvdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBLZWl0aCBTZWl0eiA8a2VpdGhzQHJlZGhhdC5jb20+Ci1EYXRlOiBU dWUsIDIzIE1hciAyMDIxIDA5OjMyOjM3IC0wNzAwCi1TdWJqZWN0OiB0ZXN0aW5nLWN1c3RvbS1p bnB1dHJjLnBhdGNoCi0KLTs7IEJhY2twb3J0ICJEaXNhYmxlIGJyYWNrZXRlZCBwYXN0ZSBtb2Rl IGluIEdEQiB0ZXN0cyIKLTs7IChUb20gVHJvbWV5KQotCi0gICBjb21taXQgMWFmNGM5YzQyMDlj MzQ3ODIyNGYxOGRmYjc5ZGMwOTU2N2I5NjcwNQotICAgQXV0aG9yOiBUb20gVHJvbWV5IDx0b21A dHJvbWV5LmNvbT4KLSAgIERhdGU6ICAgU2F0IEphbiAyMyAwODo1Mjo0NSAyMDIxIC0wNzAwCi0K LSAgICBEaXNhYmxlIGJyYWNrZXRlZCBwYXN0ZSBtb2RlIGluIEdEQiB0ZXN0cwotCi0gICAgSSBo YXZlIGEgcGF0Y2ggdG8gaW1wb3J0IEdOVSByZWFkbGluZSA4LjEgaW50byBHREIuICBIb3dldmVy LCB3aGVuCi0gICAgcnVubmluZyB0aGUgdGVzdHMsIHRoZXJlIHdlcmUgYSBudW1iZXIgb2YgZmFp bHVyZXMgZHVlIHRvICJicmFja2V0ZWQKLSAgICBwYXN0ZSBtb2RlIi4gIFRoaXMgaXMgYSB0ZXJt aW5hbCBmZWF0dXJlIHRoYXQgcmVhZGxpbmUgOC4xIGVuYWJsZXMgYnkKLSAgICBkZWZhdWx0Lgot Ci0gICAgVGhlIHNpbXBsZXN0IHdheSB0byB3b3JrIGFyb3VuZCB0aGlzIHdhcyB0byBhbHdheXMg bWFrZSBhICIuaW5wdXRyYyIKLSAgICBmb3IgR0RCIHRlc3RzIHRoYXQgd2lsbCB0ZWxsIHJlYWRs aW5lIHRvIGRpc2FibGUgYnJhY2t0ZWQgcGFzdGUgbW9kZS4KLQotICAgIGdkYi90ZXN0c3VpdGUv Q2hhbmdlTG9nCi0gICAgMjAyMS0wMS0yMyAgVG9tIFRyb21leSAgPHRvbUB0cm9tZXkuY29tPgot Ci0gICAgICAgICAgICAqIGxpYi9nZGIuZXhwIChkZWZhdWx0X2dkYl9pbml0KTogU2V0IElOUFVU UkMgdG8gYSBjYWNoZWQgZmlsZS4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1AQCAtNTEzNSwxMyAr NTEzNSwxNCBAQCBwcm9jIGRlZmF1bHRfZ2RiX2luaXQgeyB0ZXN0X2ZpbGVfbmFtZSB9IHsKLSAg ICAgc2V0ZW52IExDX0NUWVBFIEMKLSAgICAgc2V0ZW52IExBTkcgQwotIAotLSAgICAjIERvbid0 IGxldCBhIC5pbnB1dHJjIGZpbGUgb3IgYW4gZXhpc3Rpbmcgc2V0dGluZyBvZiBJTlBVVFJDIG1l c3MgdXAKLS0gICAgIyB0aGUgdGVzdCByZXN1bHRzLiAgRXZlbiBpZiAvZGV2L251bGwgZG9lc24n dCBleGlzdCBvbiB0aGUgcGFydGljdWxhcgotLSAgICAjIHBsYXRmb3JtLCB0aGUgcmVhZGxpbmUg bGlicmFyeSB3aWxsIHVzZSB0aGUgZGVmYXVsdCBzZXR0aW5nIGp1c3QgYnkKLS0gICAgIyBmYWls aW5nIHRvIG9wZW4gdGhlIGZpbGUuICBPVE9ILCBvcGVuaW5nIC9kZXYvbnVsbCBzdWNjZXNzZnVs bHkgd2lsbAotLSAgICAjIGFsc28gcmVzdWx0IGluIHRoZSBkZWZhdWx0IHNldHRpbmdzIGJlaW5n IHVzZWQgc2luY2Ugbm90aGluZyB3aWxsIGJlCi0tICAgICMgcmVhZCBmcm9tIHRoaXMgZmlsZS4K LS0gICAgc2V0ZW52IElOUFVUUkMgIi9kZXYvbnVsbCIKLSsgICAgIyBEb24ndCBsZXQgYSAuaW5w dXRyYyBmaWxlIG9yIGFuIGV4aXN0aW5nIHNldHRpbmcgb2YgSU5QVVRSQyBtZXNzCi0rICAgICMg dXAgdGhlIHRlc3QgcmVzdWx0cy4gIENlcnRhaW4gdGVzdHMgKHN0eWxlIHRlc3RzIGFuZCBUVUkg dGVzdHMpCi0rICAgICMgd2FudCB0byBzZXQgdGhlIHRlcm1pbmFsIHRvIGEgbm9uLSJkdW1iIiB2 YWx1ZSwgYW5kIGZvciB0aG9zZSB3ZQotKyAgICAjIHdhbnQgdG8gZGlzYWJsZSBicmFja2V0ZWQg cGFzdGUgbW9kZS4gIFZlcnNpb25zIG9mIFJlYWRsaW5lCi0rICAgICMgYmVmb3JlIDguMCB3aWxs IG5vdCB1bmRlcnN0YW5kIHRoaXMgYW5kIHdpbGwgaXNzdWUgYSB3YXJuaW5nLgotKyAgICAjIFdl IHRyaWVkIHVzaW5nIGEgJGlmIHRvIGd1YXJkIGl0LCBidXQgUmVhZGxpbmUgOC4xIGhhZCBhIGJ1 ZyBpbgotKyAgICAjIGl0cyB2ZXJzaW9uLWNvbXBhcmlzb24gY29kZSB0aGF0IHByZXZlbnRlZCB0 aGlzIGZvciB3b3JraW5nLgotKyAgICBzZXRlbnYgSU5QVVRSQyBbY2FjaGVkX2ZpbGUgaW5wdXRy YyAic2V0IGVuYWJsZS1icmFja2V0ZWQtcGFzdGUgb2ZmIl0KLSAKLSAgICAgIyBUaGlzIGRpc2Fi bGVzIHN0eWxlIG91dHB1dCwgd2hpY2ggd291bGQgaW50ZXJmZXJlIHdpdGggbWFueQotICAgICAj IHRlc3RzLgo=