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] fix-dup-patch: Rebase to FSF GDB 11.1 Date: Thu, 23 Jul 2026 18:34:33 GMT Message-ID: <178483167386.1.11068304860700582164.rpms-gdb-39bde43193c2@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: 39bde43193c224a6a3173782b36fd9ba5930e805 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogMzliZGU0MzE5M2MyMjRhNmEzMTczNzgyYjM2ZmQ5YmE1 OTMwZTgwNQpBdXRob3IgOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+CkRhdGUg ICA6IDIwMjEtMTAtMTRUMTc6NTI6MDAtMDc6MDAKU3RhdHMgIDogKzI5NS8tNzM3MiBpbiA0NyBm aWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2Mv MzliZGU0MzE5M2MyMjRhNmEzMTczNzgyYjM2ZmQ5YmE1OTMwZTgwNT9icmFuY2g9Zml4LWR1cC1w YXRjaAoKTG9nOgpSZWJhc2UgdG8gRlNGIEdEQiAxMS4xCgotLS0KZGlmZiAtLWdpdCBhLy5naXRp Z25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDVmNGE0MGMuLjFiODc2YWQgMTAwNjQ0Ci0tLSBhLy5n aXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMSw0ICsxLDQgQEAKIC9uZXctZmVkb3JhLXJl bGVhc2UKIC9nZGItbGlic3RkYysrLXYzLXB5dGhvbi04LjEuMS0yMDE4MDYyNi50YXIueHoKIC92 Mi4wLjQudGFyLmd6Ci0vZ2RiLTEwLjIudGFyLnh6CitnZGItMTEuMS50YXIueHoKCmRpZmYgLS1n aXQgYS9fZ2RiLnNwZWMuUGF0Y2guaW5jbHVkZSBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCmlu ZGV4IDQwMjU2ZjguLmJhNDRhZTEgMTAwNjQ0Ci0tLSBhL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRl CisrKyBiL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlCkBAIC0zMTQsMTA3ICszMTQsMTQgQEAgUGF0 Y2gwNzQ6IGdkYi1yaGJ6MTM5ODM4Ny10YWItY3Jhc2gtdGVzdC5wYXRjaAogIyA9ZmVkb3JhdGVz dAogUGF0Y2gwNzU6IGdkYi1yaGJ6MTU1MzEwNC1zMzkweC1hcmNoMTItdGVzdC5wYXRjaAogCi0j IEZpeCBvZmYtYnktb25lIGVycm9yIGluIGFkYV9mb2xkX25hbWUucGF0Y2ggKFJIIEJaIDE5MDU5 OTYpCi0jIFVwc3RyZWFtIHBhdGNoIHByb3Bvc2FsOiBodHRwczovL3NvdXJjZXdhcmUub3JnL3Bp cGVybWFpbC9nZGItcGF0Y2hlcy8yMDIwLURlY2VtYmVyLzE3MzkzNS5odG1sCi0jID1mZWRvcmF0 ZXN0Ci1QYXRjaDA3NjogZ2RiLXJoYnoxOTA1OTk2LWZpeC1vZmYtYnktb25lLWVycm9yLWluLWFk YV9mb2xkX25hbWUucGF0Y2gKLQotIyBCYWNrcG9ydCBmaXggZm9yIGxpYnN0ZGMrKyBhc3NlcnQg d2hlbiBwZXJmb3JtaW5nIHRhYiBjb21wbGV0aW9uCi0jIChSSCBCWiAxOTEyOTg1KS4KLVBhdGNo MDc3OiBnZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2VydC5wYXRjaAotCi0jIEJhY2twb3J0 IGZpeCBmb3IgZnJhbWVfaWRfcCBhc3NlcnRpb24gZmFpbHVyZSAoUkggQlogMTkwOTkwMikuCi1Q YXRjaDA3ODogZ2RiLXJoYnoxOTA5OTAyLWZyYW1lX2lkX3AtYXNzZXJ0LTEucGF0Y2gKLQotIyBC YWNrcG9ydCBwYXRjaCAjMiB3aGljaCBmaXhlcyBhIGZyYW1lX2lkX3AgYXNzZXJ0aW9uIGZhaWx1 cmUgKFJIIEJaIDE5MDk5MDIpLgotUGF0Y2gwNzk6IGdkYi1yaGJ6MTkwOTkwMi1mcmFtZV9pZF9w LWFzc2VydC0yLnBhdGNoCi0KLSMgQmFja3BvcnQgY2hhbmdlIHdoaWNoIGZpeGVzIGdkYnNlcnZl ciB0ZXN0aW5nIGhhbmcgb24gZjM0IGFuZCByYXdoaWRlLgotUGF0Y2gwODA6IGdkYi1yaGJ6MTk0 MTA4MC1maXgtZ2Ric2VydmVyLWhhbmcucGF0Y2gKLQotIyBCYWNrcG9ydCAiRGlzYWJsZSBicmFj a2V0ZWQgcGFzdGUgbW9kZSBpbiBHREIgdGVzdHMiCi0jIChUb20gVHJvbWV5KQotUGF0Y2gwODE6 IHRlc3RpbmctY3VzdG9tLWlucHV0cmMucGF0Y2gKLQotIyBCYWNrcG9ydCAiU2F2ZS9yZXN0b3Jl IGZpbGUgb2Zmc2V0IHdoaWxlIHJlYWRpbmcgbm90ZXMgaW4gY29yZSBmaWxlIgotIyAoS2VpdGgg U2VpdHosIFJIQlogMTkzMTM0NCkKLVBhdGNoMDgyOiBnZGItcmhiejE5MzEzNDQtYmZkX3NlZWst ZWxmX3JlYWRfbm90ZXMucGF0Y2gKLQotIyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1cmdl c3MncyBjb21taXQgd2hpY2ggY2xlYW5zIHVwCi0jIGFycmF5L3N0cmluZyBleHByZXNzaW9uIGV2 YWx1YXRpb24uCi1QYXRjaDA4MzogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJy YXktZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNoCi0KLSMgW2ZvcnRyYW5dIEJhY2twb3J0IEFu ZHJldyBCdXJnZXNzJ3MgY29tbWl0IHdoaWNoIG1vdmVzIEZvcnRyYW4KLSMgZXhwcmVzc2lvbiBo YW5kbGluZyB0byBmLWxhbmcuYy4KLVBhdGNoMDg0OiBnZGItcmhiejE5NjQxNjctbW92ZS1mb3J0 cmFuLWV4cHItaGFuZGxpbmcucGF0Y2gKLQotIyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1 cmdlc3MncyBjb21taXQgd2hpY2ggZWxpbWluYXRlcyB1bmRlc2lyYWJsZQotIyB3aGl0ZXNwYWNl IHdoZW4gcHJpbnRpbmcgYXJyYXlzLgotUGF0Y2gwODU6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFu LXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKLQotIyBbZm9ydHJhbl0gQmFja3BvcnQgQW5kcmV3IEJ1 cmdlc3MncyBjb21taXQgd2hpY2ggY2hhbmdlcyBlbnVtCi0jIHJhbmdlX3R5cGUgaW50byBhIGJp dCBmaWVsZCBlbnVtLgotUGF0Y2gwODY6IGdkYi1yaGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFu Z2VfdHlwZS5wYXRjaAotCi0jIFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNv bW1pdCB3aGljaCByZW5hbWVzIGVudW0KLSMgcmFuZ2VfdHlwZSB0byBlbnVtIHJhbmdlX2ZsYWcu Ci1QYXRjaDA4NzogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9m bGFnLnBhdGNoCi0KLSMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0 IHdoaWNoIGFkZHMgc3VwcG9ydAotIyBmb3IgYXJyYXkgc3RyaWRlcyBpbiBleHByZXNzaW9ucy4K LVBhdGNoMDg4OiBnZGItcmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJl c3Npb25zLnBhdGNoCi0KLSMgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJldyBCdXJnZXNzJ3MgY29t bWl0IGZvciBGb3J0cmFuIGFycmF5Ci0jIHNsaWNlIHN1cHBvcnQKLVBhdGNoMDg5OiBnZGItcmhi ejE5NjQxNjctZm9ydHJhbi1hcnJheS1zbGljZXMtYXQtcHJvbXB0LnBhdGNoCi0KLSMgW2ZvcnRy YW5dIEJhY2twb3J0IFNpbW9uIE1hcmNoaSdzIGNvbW1pdCB3aGljaCBmaXhlcyBhIDMyLWJpdCBi dWlsZAotIyBwcm9ibGVtIGluIGdkYi9mLWxhbmcuYy4KLVBhdGNoMDkwOiBnZGItcmhiejE5NjQx NjctZm9ydHJhbi1maXgtdHlwZS1mb3JtYXQtbWlzbWF0Y2gtaW4tZi1sYW5nLmMucGF0Y2gKLQot IyBCYWNrcG9ydCBvZiAiRXhjbHVkZSBkZWJ1Z2luZm8gZmlsZXMgZnJvbSAnb3V0c2lkZSBvZiBF TEYgc2VnbWVudHMnCi0jIHdhcm5pbmciICAoS2VpdGggU2VpdHopCi1QYXRjaDA5MTogZ2RiLXJo YnoxODk4MjUyLWxvYWRhYmxlLXNlY3Rpb24tb3V0c2lkZS1FTEYtc2VnbWVudHMucGF0Y2gKLQot IyBCYWNrcG9ydCAiRml4IGNyYXNoIHdoZW4gZXhwYW5kaW5nIHBhcnRpYWwgc3ltdGFicyB3aXRo IERXX1RBR19pbXBvcnRlZF91bml0IgotIyAoVG9tIFRyb21leSwgZ2RiLzI3NzQzKQotUGF0Y2gw OTI6IGdkYi1nZGIyNzc0My1wc3ltdGFiLWltcG9ydGVkLXVuaXQucGF0Y2gKLQotIyBCYWNrcG9y dCAiW2dkYi9zZXJ2ZXJdIERvbid0IG92ZXJ3cml0ZSBmcy9nc19iYXNlIHdpdGggLW0zMiIKLSMg KFRvbSBkZSBWcmllcykKLVBhdGNoMDkzOiBnZGItZG9udC1vdmVyd3JpdGUtZnNnc2Jhc2UtbTMy LnBhdGNoCi0KLSMgQmFja3BvcnQgcGF0Y2ggZml4aW5nIGdkYiBvbiBnbGliYy0yLjM0IG1hY2hp bmVzIHdpdGggcmVnYXJkIHRvIGF0dGFjaGluZwotIyB0byBwcm9jZXNzZXMgKFJIIEJaIDE5NzEw OTYpLgotUGF0Y2gwOTQ6IGdkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtMS5wYXRjaAotCi0jIEJh Y2twb3J0IHBhdGNoIGZpeGluZyBnZGIgb24gZ2xpYmMtMi4zNCBtYWNoaW5lcyB3LyByZWdhcmQg dG8KLSMgbGlidGhyZWFkX2RiIGluaXRpYWxpemF0aW9uLgotUGF0Y2gwOTU6IGdkYi1yaGJ6MTk3 MTA5Ni1nbGliYzIuMzQtMi5wYXRjaAotCi0jIEJhY2twb3J0IHRlc3RzdWl0ZSBwYXRjaCBmb3Ig bWF0Y2hpbmcgbmV3IGxpYnRocmVhZF9kYiByZWxhdGVkIG91dHB1dAotIyB3aGVuIHRlc3Rpbmcg Z2RiIG9uIGdsaWJjLTIuMzQgbWF0Y2hpbmVzIChSSCBCWiAxOTcxMDk2KS4KLVBhdGNoMDk2OiBn ZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0Y2gKLQotIyBCYWNrcG9ydCBwYXRjaCBhZGp1 c3RpbmcgdGVzdCBnZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGluZy5leHAuCi0jIChSSCBCWiAx OTcxMDk2KS4KLVBhdGNoMDk3OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTQucGF0Y2gKLQot IyBCYWNrcG9ydCBwYXRjaCBhZGp1c3RpbmcgdGVzdCBnZGIubWkvbWktc3ltLWluZm8uZXhwIChS SCBCWiAxOTcxMDk2KS4KLVBhdGNoMDk4OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTUucGF0 Y2gKLQotI1tnZGIvY2xpXSBEb24ndCBhc3NlcnQgb24gZW1wdHkgc3RyaW5nIGZvciBjb3JlLWZp bGUKLSMoVG9tIGRlIFZyaWVzKQotUGF0Y2gwOTk6IGdkYi1yaGJ6MTkxNjUxNi1wYXRoc3R1ZmZz MTMyLWludGVybmFsLWVycm9yLnBhdGNoCi0KLSNbZ2RiXSBJbXByb3ZlIGVhcmx5IGV4aXRzIGZv ciBlbnYgdmFyIGluIGRlYnVnaW5mb2Qtc3VwcG9ydC5jCi0jKFRvbSBkZSBWcmllcykKLVBhdGNo MTAwOiBnZGItcmhiejE5NzA3NDEtZWFybHktZXhpdC1mb3ItZW1wdHktZGVidWdpbmZvZC11cmwu cGF0Y2gKLQogI0JhY2twb3J0IHVwc3RyZWFtIHBhdGNoIHdoaWNoIGZpeGVzIGludGVybmFsLWVy cm9yOiBVbmV4cGVjdGVkCiAjdHlwZSBmaWVsZCBsb2NhdGlvbiBraW5kIChSSEJaIDE5NzY4ODcp LgotUGF0Y2gxMDE6IGdkYi1yaGJ6MTk3Njg4Ny1maWVsZC1sb2NhdGlvbi1raW5kLnBhdGNoCitQ YXRjaDA3NjogZ2RiLXJoYnoxOTc2ODg3LWZpZWxkLWxvY2F0aW9uLWtpbmQucGF0Y2gKIAogIyBC YWNrcG9ydCB0ZXN0IGZvciBSSEJaIDE5NzY4ODcgKEtldmluIEJ1ZXR0bmVyKS4KLVBhdGNoMTAy OiBnZGItdGVzdC1mb3ItcmhiejE5NzY4ODcucGF0Y2gKK1BhdGNoMDc3OiBnZGItdGVzdC1mb3It cmhiejE5NzY4ODcucGF0Y2gKKworIyBCYWNrcG9ydCBnZGIuZm9ydHJhbiB0ZXN0c3VpdGUgY2hh bmdlcyBpbiBvcmRlciB0byBhdm9pZCBGb3J0cmFuCisjIGxleGljYWwgYW5hbHl6ZXIgYnVnLgor UGF0Y2gwNzg6IGdkYi1yaGJ6MjAxMjk3Ni1wYXBlci1vdmVyLWZvcnRyYW4tbGV4LXByb2JsZW1z LnBhdGNoCiAKCmRpZmYgLS1naXQgYS9fZ2RiLnNwZWMucGF0Y2guaW5jbHVkZSBiL19nZGIuc3Bl Yy5wYXRjaC5pbmNsdWRlCmluZGV4IDQ4ZjA5Y2QuLjQ4NWEzMmMgMTAwNjQ0Ci0tLSBhL19nZGIu c3BlYy5wYXRjaC5pbmNsdWRlCisrKyBiL19nZGIuc3BlYy5wYXRjaC5pbmNsdWRlCkBAIC03Niwy NyArNzYsMyBAQAogJXBhdGNoMDc2IC1wMQogJXBhdGNoMDc3IC1wMQogJXBhdGNoMDc4IC1wMQot JXBhdGNoMDc5IC1wMQotJXBhdGNoMDgwIC1wMQotJXBhdGNoMDgxIC1wMQotJXBhdGNoMDgyIC1w MQotJXBhdGNoMDgzIC1wMQotJXBhdGNoMDg0IC1wMQotJXBhdGNoMDg1IC1wMQotJXBhdGNoMDg2 IC1wMQotJXBhdGNoMDg3IC1wMQotJXBhdGNoMDg4IC1wMQotJXBhdGNoMDg5IC1wMQotJXBhdGNo MDkwIC1wMQotJXBhdGNoMDkxIC1wMQotJXBhdGNoMDkyIC1wMQotJXBhdGNoMDkzIC1wMQotJXBh dGNoMDk0IC1wMQotJXBhdGNoMDk1IC1wMQotJXBhdGNoMDk2IC1wMQotJXBhdGNoMDk3IC1wMQot JXBhdGNoMDk4IC1wMQotJXBhdGNoMDk5IC1wMQotJXBhdGNoMTAwIC1wMQotJXBhdGNoMTAxIC1w MQotJXBhdGNoMTAyIC1wMQoKZGlmZiAtLWdpdCBhL19naXRfdXBzdHJlYW1fY29tbWl0IGIvX2dp dF91cHN0cmVhbV9jb21taXQKaW5kZXggMDJjMWEwZi4uMzQ5ZTc2YiAxMDA2NDQKLS0tIGEvX2dp dF91cHN0cmVhbV9jb21taXQKKysrIGIvX2dpdF91cHN0cmVhbV9jb21taXQKQEAgLTEgKzEgQEAK LWNlMzVkNzE2M2U3NzliMTMyMTA1OGIyMmYwMDVjNzBjZTE1MjRiMjUKKzhjZGQ4NTY4YmZlNGVh ODZhOTNlNGI4MGJmMmZjNmU2ZjljYWQ4NGMKCmRpZmYgLS1naXQgYS9fcGF0Y2hfb3JkZXIgYi9f cGF0Y2hfb3JkZXIKaW5kZXggZjQ0ODUxNS4uOTQ5NWQ5NSAxMDA2NDQKLS0tIGEvX3BhdGNoX29y ZGVyCisrKyBiL19wYXRjaF9vcmRlcgpAQCAtNzMsMzAgKzczLDYgQEAgZ2RiLWxpbnV4X3BlcmYt YnVuZGxlLnBhdGNoCiBnZGItbGliZXhlYy1hZGQtaW5kZXgucGF0Y2gKIGdkYi1yaGJ6MTM5ODM4 Ny10YWItY3Jhc2gtdGVzdC5wYXRjaAogZ2RiLXJoYnoxNTUzMTA0LXMzOTB4LWFyY2gxMi10ZXN0 LnBhdGNoCi1nZGItcmhiejE5MDU5OTYtZml4LW9mZi1ieS1vbmUtZXJyb3ItaW4tYWRhX2ZvbGRf bmFtZS5wYXRjaAotZ2RiLXJoYnoxOTEyOTg1LWxpYnN0ZGMrKy1hc3NlcnQucGF0Y2gKLWdkYi1y aGJ6MTkwOTkwMi1mcmFtZV9pZF9wLWFzc2VydC0xLnBhdGNoCi1nZGItcmhiejE5MDk5MDItZnJh bWVfaWRfcC1hc3NlcnQtMi5wYXRjaAotZ2RiLXJoYnoxOTQxMDgwLWZpeC1nZGJzZXJ2ZXItaGFu Zy5wYXRjaAotdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAotZ2RiLXJoYnoxOTMxMzQ0LWJm ZF9zZWVrLWVsZl9yZWFkX25vdGVzLnBhdGNoCi1nZGItcmhiejE5NjQxNjctZm9ydHJhbi1jbGVh bi11cC1hcnJheS1leHByZXNzaW9uLWV2YWx1YXRpb24ucGF0Y2gKLWdkYi1yaGJ6MTk2NDE2Ny1t b3ZlLWZvcnRyYW4tZXhwci1oYW5kbGluZy5wYXRjaAotZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4t d2hpdGVzcGFjZV9hcnJheS5wYXRjaAotZ2RiLXJoYnoxOTY0MTY3LWNvbnZlcnQtZW51bS1yYW5n ZV90eXBlLnBhdGNoCi1nZGItcmhiejE5NjQxNjctZm9ydHJhbi1yYW5nZV90eXBlLXRvLXJhbmdl X2ZsYWcucGF0Y2gKLWdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXN0cmlkZXMtaW4tZXhw cmVzc2lvbnMucGF0Y2gKLWdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNlcy1hdC1w cm9tcHQucGF0Y2gKLWdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNt YXRjaC1pbi1mLWxhbmcuYy5wYXRjaAotZ2RiLXJoYnoxODk4MjUyLWxvYWRhYmxlLXNlY3Rpb24t b3V0c2lkZS1FTEYtc2VnbWVudHMucGF0Y2gKLWdkYi1nZGIyNzc0My1wc3ltdGFiLWltcG9ydGVk LXVuaXQucGF0Y2gKLWdkYi1kb250LW92ZXJ3cml0ZS1mc2dzYmFzZS1tMzIucGF0Y2gKLWdkYi1y aGJ6MTk3MTA5Ni1nbGliYzIuMzQtMS5wYXRjaAotZ2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4zNC0y LnBhdGNoCi1nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0Y2gKLWdkYi1yaGJ6MTk3MTA5 Ni1nbGliYzIuMzQtNC5wYXRjaAotZ2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4zNC01LnBhdGNoCi1n ZGItcmhiejE5MTY1MTYtcGF0aHN0dWZmczEzMi1pbnRlcm5hbC1lcnJvci5wYXRjaAotZ2RiLXJo YnoxOTcwNzQxLWVhcmx5LWV4aXQtZm9yLWVtcHR5LWRlYnVnaW5mb2QtdXJsLnBhdGNoCiBnZGIt cmhiejE5NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaAogZ2RiLXRlc3QtZm9yLXJoYnox OTc2ODg3LnBhdGNoCitnZGItcmhiejIwMTI5NzYtcGFwZXItb3Zlci1mb3J0cmFuLWxleC1wcm9i bGVtcy5wYXRjaAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtZ3N0YWNrLTIwMDUwNDExLnBhdGNoIGIv Z2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKaW5kZXggMzVjMmRlMS4uOWZhMmU3ZCAxMDA2 NDQKLS0tIGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKKysrIGIvZ2RiLTYuMy1nc3Rh Y2stMjAwNTA0MTEucGF0Y2gKQEAgLTE2LDcgKzE2LDcgQEAgU3ViamVjdDogZ2RiLTYuMy1nc3Rh Y2stMjAwNTA0MTEucGF0Y2gKIGRpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFr ZWZpbGUuaW4KIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIvZ2RiL01ha2VmaWxlLmluCi1A QCAtMTcyNiw3ICsxNzI2LDcgQEAgaW5mbyBpbnN0YWxsLWluZm8gY2xlYW4taW5mbyBkdmkgcGRm IGluc3RhbGwtcGRmIGh0bWwgaW5zdGFsbC1odG1sOiBmb3JjZQorQEAgLTE3NTMsNyArMTc1Myw3 IEBAIGluZm8gaW5zdGFsbC1pbmZvIGNsZWFuLWluZm8gZHZpIHBkZiBpbnN0YWxsLXBkZiBodG1s IGluc3RhbGwtaHRtbDogZm9yY2UKICBpbnN0YWxsOiBhbGwKICAJQCQoTUFLRSkgJChGTEFHU19U T19QQVNTKSBpbnN0YWxsLW9ubHkKICAKQEAgLTI1LDcgKzI1LDcgQEAgZGlmZiAtLWdpdCBhL2dk Yi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgogIAl0cmFuc2Zvcm1lZF9uYW1lPWB0PSck KHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJzsgXAogIAkJCSAgZWNobyBnZGIgfCBzZWQgLWUgIiQk dCJgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4OyB0aGVuIFwKLUBA IC0xNzc1LDcgKzE3NzUsMjUgQEAgaW5zdGFsbC1ndWlsZToKK0BAIC0xODAyLDcgKzE4MDIsMjUg QEAgaW5zdGFsbC1ndWlsZToKICBpbnN0YWxsLXB5dGhvbjoKICAJJChTSEVMTCkgJChzcmNkaXIp Ly4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQoR0RCX0RBVEFESVIpL3B5dGhvbi9nZGIKICAK QEAgLTUyLDcgKzUyLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtl ZmlsZS5pbgogIAl0cmFuc2Zvcm1lZF9uYW1lPWB0PSckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUp JzsgXAogIAkJCSAgZWNobyBnZGIgfCBzZWQgLWUgJCR0YCA7IFwKICAJCWlmIHRlc3QgIngkJHRy YW5zZm9ybWVkX25hbWUiID0geDsgdGhlbiBcCi1AQCAtMTc5OCw2ICsxODE2LDE4IEBAIHVuaW5z dGFsbDogZm9yY2UgJChDT05GSUdfVU5JTlNUQUxMKQorQEAgLTE4MjUsNiArMTg0MywxOCBAQCB1 bmluc3RhbGw6IGZvcmNlICQoQ09ORklHX1VOSU5TVEFMTCkKICAJZmkKICAJQCQoTUFLRSkgRE89 dW5pbnN0YWxsICJET0RJUlM9JChTVUJESVJTKSIgJChGTEFHU19UT19QQVNTKSBzdWJkaXJfZG8K ICAKCmRpZmYgLS1naXQgYS9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoIGIv Z2RiLTYuMy1yaC10ZXN0dmVyc2lvbi0yMDA0MTIwMi5wYXRjaAppbmRleCBjMWU3Mzk1Li43ZWU2 OGU0IDEwMDY0NAotLS0gYS9nZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQxMjAyLnBhdGNoCisr KyBiL2dkYi02LjMtcmgtdGVzdHZlcnNpb24tMjAwNDEyMDIucGF0Y2gKQEAgLTI3LDcgKzI3LDcg QEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QKIGRpZmYgLS1naXQgYS9nZGIvdG9wLmMgYi9nZGIv dG9wLmMKIC0tLSBhL2dkYi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCi1AQCAtMjE2Myw3ICsyMTYz LDcgQEAgaW5pdF9nZGJfdmVyc2lvbl92YXJzICh2b2lkKQorQEAgLTIxOTUsNyArMjE5NSw3IEBA IGluaXRfZ2RiX3ZlcnNpb25fdmFycyAodm9pZCkKICAgIHN0cnVjdCBpbnRlcm5hbHZhciAqbWFq b3JfdmVyc2lvbl92YXIgPSBjcmVhdGVfaW50ZXJuYWx2YXIgKCJfZ2RiX21ham9yIik7CiAgICBz dHJ1Y3QgaW50ZXJuYWx2YXIgKm1pbm9yX3ZlcnNpb25fdmFyID0gY3JlYXRlX2ludGVybmFsdmFy ICgiX2dkYl9taW5vciIpOwogICAgaW50IHZtYWpvciA9IDAsIHZtaW5vciA9IDAsIHZyZXZpc2lv biA9IDA7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0 LWRlYnVnaW5mby12Mi5wYXRjaCBiL2dkYi02LjUtYnoxODUzMzctcmVzb2x2ZS10bHMtd2l0aG91 dC1kZWJ1Z2luZm8tdjIucGF0Y2gKaW5kZXggNWNkZjY1Zi4uMzA0YWEzOCAxMDA2NDQKLS0tIGEv Z2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaAor KysgYi9nZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBh dGNoCkBAIC00NCwxNyArNDQsMTcgQEAgZ2xpYmMtZGVidWdpbmZvLTIuNy0yLng4Nl82NDogL3Vz ci9saWIvZGVidWcvbGliNjQvbGliYy5zby42LmRlYnVnOgogZGlmZiAtLWdpdCBhL2dkYi9wcmlu dGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKIC0tLSBhL2dkYi9wcmludGNtZC5jCiArKysgYi9nZGIv cHJpbnRjbWQuYwotQEAgLTEyMTAsNiArMTIxMCwxMCBAQCBwcmludF9jb21tYW5kXzEgKGNvbnN0 IGNoYXIgKmFyZ3MsIGludCB2b2lkcHJpbnQpCitAQCAtMTMwNiw2ICsxMzA2LDEwIEBAIHByb2Nl c3NfcHJpbnRfY29tbWFuZF9hcmdzIChjb25zdCBjaGFyICphcmdzLCB2YWx1ZV9wcmludF9vcHRp b25zICpwcmludF9vcHRzLAogIAogICAgaWYgKGV4cCAhPSBudWxscHRyICYmICpleHApCiAgICAg IHsKICsgICAgICAvKiAnKigoaW50ICooKikgKHZvaWQpKSBfX2Vycm5vX2xvY2F0aW9uKSAoKScg aXMgaW5jb21wYXRpYmxlIHdpdGgKICsJIGZ1bmN0aW9uIGRlc2NyaXB0b3JzLiAgKi8KLSsgICAg ICBpZiAodGFyZ2V0X2hhc19leGVjdXRpb24gJiYgc3RyY21wIChleHAsICJlcnJubyIpID09IDAp CisrICAgICAgaWYgKHRhcmdldF9oYXNfZXhlY3V0aW9uICgpICYmIHN0cmNtcCAoZXhwLCAiZXJy bm8iKSA9PSAwKQogKwlleHAgPSAiKigqKGludCAqKCopKHZvaWQpKSBfX2Vycm5vX2xvY2F0aW9u KSAoKSI7Ci0gICAgICAgZXhwcmVzc2lvbl91cCBleHByID0gcGFyc2VfZXhwcmVzc2lvbiAoZXhw KTsKLSAgICAgICB2YWwgPSBldmFsdWF0ZV9leHByZXNzaW9uIChleHByLmdldCAoKSk7Ci0gICAg IH0KKyAgICAgICAvKiBWT0lEUFJJTlQgaXMgdHJ1ZSB0byBpbmRpY2F0ZSB0aGF0IHdlIGRvIHdh bnQgdG8gcHJpbnQgYSB2b2lkCisgCSB2YWx1ZSwgc28gaW52ZXJ0IGl0IGZvciBwYXJzZV9leHBy ZXNzaW9uLiAgKi8KKyAgICAgICBleHByZXNzaW9uX3VwIGV4cHIgPSBwYXJzZV9leHByZXNzaW9u IChleHAsIG51bGxwdHIsICF2b2lkcHJpbnQpOwogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItZXJybm8uYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJy bm8uYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIC0tLSAvZGV2L251bGwKCmRpZmYgLS1naXQgYS9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS1zY2wucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLXJwbS1zY2wucGF0Y2gKaW5kZXggODEwNTZjYy4uMWRjM2FjNCAxMDA2NDQKLS0tIGEvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0tc2NsLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1s b2NhdGUtcnBtLXNjbC5wYXRjaApAQCAtOTgsNyArOTgsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1 aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5j IGIvZ2RiL2R3YXJmMi9yZWFkLmMKIC0tLSBhL2dkYi9kd2FyZjIvcmVhZC5jCiArKysgYi9nZGIv ZHdhcmYyL3JlYWQuYwotQEAgLTMwMzQsNiArMzAzNCwxNiBAQCByZWFkX2dkYl9pbmRleF9mcm9t X2J1ZmZlciAoY29uc3QgY2hhciAqZmlsZW5hbWUsCitAQCAtMjgwMSw2ICsyODAxLDE2IEBAIHJl YWRfZ2RiX2luZGV4X2Zyb21fYnVmZmVyIChjb25zdCBjaGFyICpmaWxlbmFtZSwKICAgICAgICJz ZXQgdXNlLWRlcHJlY2F0ZWQtaW5kZXgtc2VjdGlvbnMgb24iLiAgKi8KICAgIGlmICh2ZXJzaW9u IDwgNiAmJiAhZGVwcmVjYXRlZF9vaykKICAgICAgewpAQCAtMTE1LDcgKzExNSw3IEBAIGRpZmYg LS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAgICAgICAgc3Rh dGljIGludCB3YXJuaW5nX3ByaW50ZWQgPSAwOwogICAgICAgIGlmICghd2FybmluZ19wcmludGVk KQogIAl7Ci1AQCAtMzA0NSw2ICszMDU1LDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBhbnl3YXku IiksCitAQCAtMjgxMiw2ICsyODIyLDEwIEBAIHRvIHVzZSB0aGUgc2VjdGlvbiBhbnl3YXkuIiks CiAgCSAgd2FybmluZ19wcmludGVkID0gMTsKICAJfQogICAgICAgIHJldHVybiAwOwoKZGlmZiAt LWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoIGIvZ2RiLTYuNi1idWlsZGlk LWxvY2F0ZS1ycG0ucGF0Y2gKaW5kZXggYmY3ODNkYS4uNDY5M2Y0MyAxMDA2NDQKLS0tIGEvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS1ycG0ucGF0Y2gKQEAgLTY5Niw3ICs2OTYsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5p biBiL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0cmFuc2xhdGlvbiBvZiBwcm9n cmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAgbGFuZ3VhZ2UgaXMgcmVxdWVz dGVkLiAqLwogICN1bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjQ3LDYgKzI1MCw5IEBACitAQCAtMjQ2 LDYgKzI0OSw5IEBACiAgLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBtcGZyIGxpYnJhcnkuICov CiAgI3VuZGVmIEhBVkVfTElCTVBGUgogIApAQCAtNzA5LDcgKzcwOSw3IEBAIGRpZmYgLS1naXQg YS9nZGIvY29uZmlnLmluIGIvZ2RiL2NvbmZpZy5pbgogZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1 cmUgYi9nZGIvY29uZmlndXJlCiAtLS0gYS9nZGIvY29uZmlndXJlCiArKysgYi9nZGIvY29uZmln dXJlCi1AQCAtNzY5LDYgKzc2OSwxMSBAQCBQS0dfQ09ORklHCitAQCAtNzcxLDYgKzc3MSwxMSBA QCBQS0dfQ09ORklHCiAgSEFWRV9OQVRJVkVfR0NPUkVfVEFSR0VUCiAgVEFSR0VUX09CUwogIHN1 YmRpcnMKQEAgLTcyMSw3ICs3MjEsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dk Yi9jb25maWd1cmUKICBHREJfREFUQURJUgogIERFQlVHRElSCiAgTUFLRUlORk9fRVhUUkFfRkxB R1MKLUBAIC04NzMsNiArODc4LDcgQEAgd2l0aF9nZGJfZGF0YWRpcgorQEAgLTg3Niw2ICs4ODEs NyBAQCB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291cmNlcwogIHdpdGhfYXV0 b19sb2FkX2RpcgogIHdpdGhfYXV0b19sb2FkX3NhZmVfcGF0aApAQCAtNzI5LDcgKzcyOSw3IEBA IGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogIGVuYWJsZV90YXJn ZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQKICBlbmFibGVfZ2RibWkKLUBAIC05NDksNiArOTU1LDgg QEAgUEtHX0NPTkZJR19QQVRICitAQCAtOTUzLDYgKzk1OSw4IEBAIFBLR19DT05GSUdfUEFUSAog IFBLR19DT05GSUdfTElCRElSCiAgREVCVUdJTkZPRF9DRkxBR1MKICBERUJVR0lORk9EX0xJQlMK QEAgLTczOCw3ICs3MzgsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25m aWd1cmUKICBZQUNDCiAgWUZMQUdTCiAgWE1LTUYnCi1AQCAtMTYyMSw2ICsxNjI5LDggQEAgT3B0 aW9uYWwgUGFja2FnZXM6CitAQCAtMTYyNSw2ICsxNjMzLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyBub3QgcmVzdHJpY3QgYXV0by1sb2FkZWQg ZmlsZXMgbG9jYXRpb25zCiAgICAtLXdpdGgtZGVidWdpbmZvZCAgICAgICBFbmFibGUgZGVidWdp bmZvIGxvb2t1cHMgd2l0aCBkZWJ1Z2luZm9kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAo YXV0by95ZXMvbm8pCkBAIC03NDcsNyArNzQ3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1 cmUgYi9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgtbGlidW53aW5kLWlhNjQgICB1c2UgbGlidW53 aW5kIGZyYW1lIHVud2luZGluZyBmb3IgaWE2NCB0YXJnZXRzCiAgICAtLXdpdGgtY3Vyc2VzICAg ICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0xNzAyLDYgKzE3MTIsOCBAQCBT b21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC0xNzA1LDYgKzE3MTUs OCBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgICAgICAgICAg ICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIERFQlVHSU5GT0QsIG92ZXJyaWRpbmcgcGtnLWNvbmZp ZwogICAgREVCVUdJTkZPRF9MSUJTCiAgICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIERF QlVHSU5GT0QsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwpAQCAtNzU2LDcgKzc1Niw3IEBAIGRpZmYg LS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogICAgWUFDQyAgICAgICAgVGhl IGBZZXQgQW5vdGhlciBDb21waWxlciBDb21waWxlcicgaW1wbGVtZW50YXRpb24gdG8gdXNlLgog ICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gdGhlIGZpcnN0IHByb2dyYW0gZm91bmQgb3V0IG9m OiBgYmlzb24gLXknLCBgYnlhY2MnLAogICAgICAgICAgICAgICAgYHlhY2MnLgotQEAgLTY2NjYs NiArNjY3OCw0OTQgQEAgX0FDRU9GCitAQCAtNjYxNiw2ICs2NjI4LDQ5NCBAQCBfQUNFT0YKICB7 ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aCIgPiY1CiAgJGFzX2VjaG8gIiR3aXRoX2F1dG9fbG9hZF9zYWZlX3Bh dGgiID4mNjsgfQogIApAQCAtMTI1NCw3ICsxMjU0LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25m aWd1cmUgYi9nZGIvY29uZmlndXJlCiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dk Yi9jb25maWd1cmUuYWMKIC0tLSBhL2dkYi9jb25maWd1cmUuYWMKICsrKyBiL2dkYi9jb25maWd1 cmUuYWMKLUBAIC0xNDMsNiArMTQzLDE5OSBAQCBBQ19ERUZJTkVfRElSKEFVVE9fTE9BRF9TQUZF X1BBVEgsIGVzY2FwZV9kaXIsCitAQCAtMTUzLDYgKzE1MywxOTkgQEAgQUNfREVGSU5FX0RJUihB VVRPX0xPQURfU0FGRV9QQVRILCBlc2NhcGVfZGlyLAogIAkgICAgICBbRGlyZWN0b3JpZXMgc2Fm ZSB0byBob2xkIGF1dG8tbG9hZGVkIGZpbGVzLl0pCiAgQUNfTVNHX1JFU1VMVChbJHdpdGhfYXV0 b19sb2FkX3NhZmVfcGF0aF0pCiAgCkBAIC0xNDU3LDcgKzE0NTcsNyBAQCBkaWZmIC0tZ2l0IGEv Z2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKIGRpZmYgLS1naXQgYS9nZGIvZXZl bnQtdG9wLmMgYi9nZGIvZXZlbnQtdG9wLmMKIC0tLSBhL2dkYi9ldmVudC10b3AuYwogKysrIGIv Z2RiL2V2ZW50LXRvcC5jCi1AQCAtNDIsNiArNDIsNyBAQAorQEAgLTQxLDYgKzQxLDcgQEAKICAj aW5jbHVkZSAiZ2Ric3VwcG9ydC9nZGJfc2VsZWN0LmgiCiAgI2luY2x1ZGUgImdkYnN1cHBvcnQv Z2RiLXNpZ21hc2suaCIKICAjaW5jbHVkZSAiYXN5bmMtZXZlbnQuaCIKQEAgLTE0NjUsNyArMTQ2 NSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZXZlbnQtdG9wLmMgYi9nZGIvZXZlbnQtdG9wLmMKICAK ICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzLiAgKi8KICAjaW5jbHVkZSAicmVhZGxpbmUvcmVh ZGxpbmUuaCIKLUBAIC0zNjQsNiArMzY1LDggQEAgZGlzcGxheV9nZGJfcHJvbXB0IChjb25zdCBj aGFyICpuZXdfcHJvbXB0KQorQEAgLTM2Myw2ICszNjQsOCBAQCBkaXNwbGF5X2dkYl9wcm9tcHQg KGNvbnN0IGNoYXIgKm5ld19wcm9tcHQpCiAgICAvKiBSZXNldCB0aGUgbmVzdGluZyBkZXB0aCB1 c2VkIHdoZW4gdHJhY2UtY29tbWFuZHMgaXMgc2V0LiAgKi8KICAgIHJlc2V0X2NvbW1hbmRfbmVz dF9kZXB0aCAoKTsKICAKQEAgLTE0ODksMTEgKzE0ODksMTEgQEAgZGlmZiAtLWdpdCBhL2dkYi9l dmVudC10b3AuYyBiL2dkYi9ldmVudC10b3AuYwogZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmgg Yi9nZGIvc3ltZmlsZS5oCiAtLS0gYS9nZGIvc3ltZmlsZS5oCiArKysgYi9nZGIvc3ltZmlsZS5o Ci1AQCAtNTYwLDYgKzU2MCw3IEBAIGV4dGVybiB2b2lkIGdlbmVyaWNfbG9hZCAoY29uc3QgY2hh ciAqYXJncywgaW50IGZyb21fdHR5KTsKK0BAIC0zNDIsNiArMzQyLDcgQEAgZXh0ZXJuIHZvaWQg Z2VuZXJpY19sb2FkIChjb25zdCBjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOwogIC8qIGJ1aWxk LWlkIHN1cHBvcnQuICAqLwogIGV4dGVybiBzdHJ1Y3QgYmZkX2J1aWxkX2lkICpidWlsZF9pZF9h ZGRyX2dldCAoQ09SRV9BRERSIGFkZHIpOwogIGV4dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3Np bmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwgY29uc3QgY2hhciAqZGVidWcpOwogK2V4dGVybiB2b2lk IGRlYnVnX2ZsdXNoX21pc3NpbmcgKHZvaWQpOwogICNkZWZpbmUgQlVJTERfSURfTUFJTl9FWEVD VVRBQkxFX0ZJTEVOQU1FIF8oInRoZSBtYWluIGV4ZWN1dGFibGUgZmlsZSIpCiAgCi0gLyogRnJv bSBkd2FyZjJyZWFkLmMgKi8KKyAvKiBGcm9tIG1pbmlkZWJ1Zy5jLiAgKi8KCmRpZmYgLS1naXQg YS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXNvbGliLW1pc3NpbmctaWRzLnBhdGNoIGIvZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS1zb2xpYi1taXNzaW5nLWlkcy5wYXRjaAppbmRleCBmMWY1ZTgzLi43 ZGQ0ZmIxIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXNvbGliLW1pc3Npbmct aWRzLnBhdGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtc29saWItbWlzc2luZy1pZHMu cGF0Y2gKQEAgLTE0LDcgKzE0LDcgQEAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3df YnVnLmNnaT9pZD0xMzM5ODYyCiBkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9z b2xpYi1zdnI0LmMKIC0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKICsrKyBiL2dkYi9zb2xpYi1zdnI0 LmMKLUBAIC0xMzQwLDE0ICsxMzQwLDI3IEBAIHN2cjRfcmVhZF9zb19saXN0IChzdnI0X2luZm8g KmluZm8sIENPUkVfQUREUiBsbSwgQ09SRV9BRERSIHByZXZfbG0sCitAQCAtMTM1MCwxNCArMTM1 MCwyOCBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0s IENPUkVfQUREUiBwcmV2X2xtLAogIAl9CiAgCiAgICAgICAgewpAQCAtMzgsMTMgKzM4LDE0IEBA IGRpZmYgLS1naXQgYS9nZGIvc29saWItc3ZyNC5jIGIvZ2RiL3NvbGliLXN2cjQuYwogKwkgICBu b3QgZG8gYW55IGJ1aWxkLWlkIGNoZWNraW5nIG9mIHRoZSBsaWJyYXJpZXMuICBUaGVyZSBtYXkg YmUgbWlzc2luZwogKwkgICBidWlsZC1pZHMgZHVtcGVkIGluIHRoZSBjb3JlIGZpbGUgYW5kIHdl IHdvdWxkIG1hcCBhbGwgdGhlIGxpYnJhcmllcwogKwkgICB0byB0aGUgb25seSBleGlzdGluZyBm aWxlIGxvYWRlZCB0aGF0IHRpbWUgLSB0aGUgZXhlY3V0YWJsZS4gICovCi0rCWlmIChzeW1maWxl X29iamZpbGUgIT0gTlVMTAotKwkgICAgJiYgKHN5bWZpbGVfb2JqZmlsZS0+ZmxhZ3MgJiBPQkpG X0JVSUxEX0lEX0NPUkVfTE9BREVEKSAhPSAwKQorKwlpZiAoY3VycmVudF9wcm9ncmFtX3NwYWNl LT5zeW1maWxlX29iamVjdF9maWxlICE9IE5VTEwKKysJICAgICYmIChjdXJyZW50X3Byb2dyYW1f c3BhY2UtPnN5bWZpbGVfb2JqZWN0X2ZpbGUtPmZsYWdzCisrCSAgICAgICAgICYgT0JKRl9CVUlM RF9JRF9DT1JFX0xPQURFRCkgIT0gMCkKICsJICBidWlsZF9pZCA9IGJ1aWxkX2lkX2FkZHJfZ2V0 IChsaS0+bF9sZCk7CiAgCWlmIChidWlsZF9pZCAhPSBOVUxMKQogIAkgIHsKICAJICAgIGNoYXIg Km5hbWUsICpidWlsZF9pZF9maWxlbmFtZTsKLUBAIC0xMzYyLDIzICsxMzc1LDcgQEAgc3ZyNF9y ZWFkX3NvX2xpc3QgKHN2cjRfaW5mbyAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJl dl9sbSwKK0BAIC0xMzcyLDIzICsxMzg2LDcgQEAgc3ZyNF9yZWFkX3NvX2xpc3QgKHN2cjRfaW5m byAqaW5mbywgQ09SRV9BRERSIGxtLCBDT1JFX0FERFIgcHJldl9sbSwKICAJCXhmcmVlIChuYW1l KTsKICAJICAgICAgfQogIAkgICAgZWxzZQpAQCAtNjAsOCArNjEsOCBAQCBkaWZmIC0tZ2l0IGEv Z2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0LmMKIC0JCSAgIGluc3RlYWQpIGlmIHRo ZSBvbi1kaXNrIGZpbGVzIG5vIGxvbmdlciBtYXRjaCB0aGUKIC0JCSAgIHJ1bm5pbmcgcHJvZ3Jh bSB2ZXJzaW9uLiAgKi8KIC0KLS0JCWlmIChzeW1maWxlX29iamZpbGUgIT0gTlVMTAotLQkJICAg ICYmIChzeW1maWxlX29iamZpbGUtPmZsYWdzCistCQlpZiAoY3VycmVudF9wcm9ncmFtX3NwYWNl LT5zeW1maWxlX29iamVjdF9maWxlICE9IE5VTEwKKy0JCSAgICAmJiAoY3VycmVudF9wcm9ncmFt X3NwYWNlLT5zeW1maWxlX29iamVjdF9maWxlLT5mbGFncwogLQkJCSYgT0JKRl9CVUlMRF9JRF9D T1JFX0xPQURFRCkgIT0gMCkKIC0JCSAgbmV3b2JqLT5zb19uYW1lWzBdID0gMDsKIC0JICAgICAg fQoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2ggYi9nZGItNi42LWJ1 aWxkaWQtbG9jYXRlLnBhdGNoCmluZGV4IGY2MDY3OTMuLmE0NjNlMzcgMTAwNjQ0Ci0tLSBhL2dk Yi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKKysrIGIvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5w YXRjaApAQCAtOSw3ICs5LDcgQEAgU3ViamVjdDogZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRj aAogZGlmZiAtLWdpdCBhL2JmZC9saWJiZmQtaW4uaCBiL2JmZC9saWJiZmQtaW4uaAogLS0tIGEv YmZkL2xpYmJmZC1pbi5oCiArKysgYi9iZmQvbGliYmZkLWluLmgKLUBAIC0xMjEsNyArMTIxLDcg QEAgc3RhdGljIGlubGluZSBjaGFyICoKK0BAIC0xMTUsNyArMTE1LDcgQEAgc3RhdGljIGlubGlu ZSBjaGFyICoKICBiZmRfc3RyZHVwIChjb25zdCBjaGFyICpzdHIpCiAgewogICAgc2l6ZV90IGxl biA9IHN0cmxlbiAoc3RyKSArIDE7CkBAIC0yMSw3ICsyMSw3IEBAIGRpZmYgLS1naXQgYS9iZmQv bGliYmZkLWluLmggYi9iZmQvbGliYmZkLWluLmgKIGRpZmYgLS1naXQgYS9iZmQvbGliYmZkLmgg Yi9iZmQvbGliYmZkLmgKIC0tLSBhL2JmZC9saWJiZmQuaAogKysrIGIvYmZkL2xpYmJmZC5oCi1A QCAtMTI2LDcgKzEyNiw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciAqCitAQCAtMTIwLDcgKzEyMCw3 IEBAIHN0YXRpYyBpbmxpbmUgY2hhciAqCiAgYmZkX3N0cmR1cCAoY29uc3QgY2hhciAqc3RyKQog IHsKICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKHN0cikgKyAxOwpAQCAtODkwLDcgKzg5MCw3IEBA IGRpZmYgLS1naXQgYS9nZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiArICAgICAgY2hh ciAqYnVpbGRfaWRfZmlsZW5hbWVfY3N0ciA9IE5VTEw7CiAgICAgICAgZ2RiX2JmZF9yZWZfcHRy IGFiZmQgKGJ1aWxkX2lkX3RvX2RlYnVnX2JmZCAoYnVpbGRfaWQtPnNpemUsCiAtCQkJCQkJICAg YnVpbGRfaWQtPmRhdGEpKTsKLSsJCQkJCQkgICAgYnVpbGRfaWQtPmRhdGEsCisrCQkJCQkJICAg YnVpbGRfaWQtPmRhdGEsCiArCSAgICAgICghYnVpbGRfaWRfZmlsZW5hbWVfcmV0dXJuID8gTlVM TCA6ICZidWlsZF9pZF9maWxlbmFtZV9jc3RyKSkpOwogKyAgICAgIGlmIChidWlsZF9pZF9maWxl bmFtZV9yZXR1cm4pCiArCXsKQEAgLTkwNiw3ICs5MDYsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1 aWxkLWlkLmMgYi9nZGIvYnVpbGQtaWQuYwogICAgICAgIC8qIFByZXZlbnQgbG9vcGluZyBvbiBh IHN0cmlwcGVkIC5kZWJ1ZyBmaWxlLiAgKi8KICAgICAgICBpZiAoYWJmZCAhPSBOVUxMCiAgCSAg JiYgZmlsZW5hbWVfY21wIChiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkLmdldCAoKSksCi1AQCAtMjIz LDMgKzg5NywyMSBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUpCitAQCAtMjIzLDMgKzg5NywyMiBAQCBmaW5kX3NlcGFyYXRlX2Rl YnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiAgCiAgICByZXR1 cm4gc3RkOjpzdHJpbmcgKCk7CiAgfQpAQCAtOTI2LDcgKzkyNiw4IEBAIGRpZmYgLS1naXQgYS9n ZGIvYnVpbGQtaWQuYyBiL2dkYi9idWlsZC1pZC5jCiArCQkJICAgIHNob3dfYnVpbGRfaWRfdmVy Ym9zZSwKICsJCQkgICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiArCi0rICBnZGI6Om9ic2VydmVy czo6ZXhlY3V0YWJsZV9jaGFuZ2VkLmF0dGFjaCAoZGVidWdfcHJpbnRfZXhlY3V0YWJsZV9jaGFu Z2VkKTsKKysgIGdkYjo6b2JzZXJ2ZXJzOjpleGVjdXRhYmxlX2NoYW5nZWQuYXR0YWNoIChkZWJ1 Z19wcmludF9leGVjdXRhYmxlX2NoYW5nZWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgImJ1aWxkLWlkIik7CiArfQogZGlmZiAtLWdpdCBhL2dkYi9idWls ZC1pZC5oIGIvZ2RiL2J1aWxkLWlkLmgKIC0tLSBhL2dkYi9idWlsZC1pZC5oCkBAIC05NTAsNyAr OTUxLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9idWlsZC1pZC5oIGIvZ2RiL2J1aWxkLWlkLmgKICBl eHRlcm4gZ2RiX2JmZF9yZWZfcHRyIGJ1aWxkX2lkX3RvX2RlYnVnX2JmZCAoc2l6ZV90IGJ1aWxk X2lkX2xlbiwKIC0JCQkJCSAgICAgIGNvbnN0IGJmZF9ieXRlICpidWlsZF9pZCk7CiArCQkJCQkg ICAgICBjb25zdCBiZmRfYnl0ZSAqYnVpbGRfaWQsCi0rCQkJCQkgICAgICBjaGFyICoqbGlua19y ZXR1cm4pOworKwkJCQkJICAgICAgY2hhciAqKmxpbmtfcmV0dXJuID0gTlVMTCk7CiArCiArZXh0 ZXJuIGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChjb25zdCBzdHJ1Y3QgYmZkX2J1aWxkX2lk ICpidWlsZF9pZCwKICsJCQkJICAgY2hhciAqKmxpbmtfcmV0dXJuKTsKQEAgLTk3OCw5ICs5Nzks OSBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2J1aWxkLWlkLmggYi9nZGIvYnVpbGQtaWQuaAogZGlmZiAt LWdpdCBhL2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZyZWFkLmMKIC0tLSBhL2dkYi9jb2ZmcmVh ZC5jCiArKysgYi9nZGIvY29mZnJlYWQuYwotQEAgLTcwOSw3ICs3MDksOCBAQCBjb2ZmX3N5bWZp bGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN5bWZpbGVfYWRkX2ZsYWdzIHN5bWZp bGVfZmxhZ3MpCitAQCAtNzEwLDcgKzcxMCw4IEBAIGNvZmZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKICAgIC8q IFRyeSB0byBhZGQgc2VwYXJhdGUgZGVidWcgZmlsZSBpZiBubyBzeW1ib2xzIHRhYmxlIGZvdW5k LiAgICovCi0gICBpZiAoIW9iamZpbGVfaGFzX3BhcnRpYWxfc3ltYm9scyAob2JqZmlsZSkpCisg ICBpZiAoIW9iamZpbGUtPmhhc19wYXJ0aWFsX3N5bWJvbHMgKCkpCiAgICAgIHsKIC0gICAgICBz dGQ6OnN0cmluZyBkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRp ZCAob2JqZmlsZSk7CiArICAgICAgc3RkOjpzdHJpbmcgZGVidWdmaWxlID0gZmluZF9zZXBhcmF0 ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKG9iamZpbGUsCkBAIC0xMDAyLDcgKzEwMDMsNyBAQCBk aWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cuYyBiL2dkYi9jb3JlbG93LmMKICAjaW5jbHVkZSAiaW5m ZXJpb3IuaCIKICAjaW5jbHVkZSAiaW5mcnVuLmgiCiAgI2luY2x1ZGUgInN5bXRhYi5oIgotQEAg LTM2Miw2ICszNjYsOCBAQCBhZGRfdG9fdGhyZWFkX2xpc3QgKGJmZCAqYWJmZCwgYXNlY3Rpb24g KmFzZWN0LCB2b2lkICpyZWdfc2VjdF9hcmcpCitAQCAtMzU2LDYgKzM2MCw4IEBAIGFkZF90b190 aHJlYWRfbGlzdCAoYXNlY3Rpb24gKmFzZWN0LCBhc2VjdGlvbiAqcmVnX3NlY3QpCiAgICAgIHN3 aXRjaF90b190aHJlYWQgKHRocik7CQkJLyogWWVzLCBtYWtlIGl0IGN1cnJlbnQuICAqLwogIH0K ICAKQEAgLTEwMTEsNyArMTAxMiw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29yZWxvdy5jIGIvZ2Ri L2NvcmVsb3cuYwogIC8qIElzc3VlIGEgbWVzc2FnZSBzYXlpbmcgd2UgaGF2ZSBubyBjb3JlIHRv IGRlYnVnLCBpZiBGUk9NX1RUWS4gICovCiAgCiAgc3RhdGljIHZvaWQKLUBAIC0zOTgsMTkgKzQw NCwyNSBAQCBjb3JlX2ZpbGVfY29tbWFuZCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmcm9t X3R0eSkKK0BAIC0zOTIsMTkgKzM5OCwyNiBAQCBjb3JlX2ZpbGVfY29tbWFuZCAoY29uc3QgY2hh ciAqZmlsZW5hbWUsIGludCBmcm9tX3R0eSkKICBzdGF0aWMgdm9pZAogIGxvY2F0ZV9leGVjX2Zy b21fY29yZWZpbGVfYnVpbGRfaWQgKGJmZCAqYWJmZCwgaW50IGZyb21fdHR5KQogIHsKQEAgLTEw MzEsMTYgKzEwMzIsMTcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb3JlbG93LmMgYi9nZGIvY29yZWxv dy5jCiAgICAgICAgZXhlY19maWxlX2F0dGFjaCAoYmZkX2dldF9maWxlbmFtZSAoZXhlY2JmZC5n ZXQgKCkpLCBmcm9tX3R0eSk7CiAgICAgICAgc3ltYm9sX2ZpbGVfYWRkX21haW4gKGJmZF9nZXRf ZmlsZW5hbWUgKGV4ZWNiZmQuZ2V0ICgpKSwKICAJCQkgICAgc3ltZmlsZV9hZGRfZmxhZyAoZnJv bV90dHkgPyBTWU1GSUxFX1ZFUkJPU0UgOiAwKSk7Ci0rICAgICAgaWYgKHN5bWZpbGVfb2JqZmls ZSAhPSBOVUxMKQotKwlzeW1maWxlX29iamZpbGUtPmZsYWdzIHw9IE9CSkZfQlVJTERfSURfQ09S RV9MT0FERUQ7CisrICAgICAgaWYgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+c3ltZmlsZV9vYmpl Y3RfZmlsZSAhPSBOVUxMKQorKwljdXJyZW50X3Byb2dyYW1fc3BhY2UtPnN5bWZpbGVfb2JqZWN0 X2ZpbGUtPmZsYWdzIHw9CisrCSAgT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURFRDsKICAgICAgfQog KyAgZWxzZQogKyAgICBkZWJ1Z19wcmludF9taXNzaW5nIChCVUlMRF9JRF9NQUlOX0VYRUNVVEFC TEVfRklMRU5BTUUsIGJ1aWxkX2lkX2ZpbGVuYW1lKTsKICB9CiAgCiAgLyogU2VlIGdkYmNvcmUu aC4gICovCi1AQCAtMTE4OSw0ICsxMjAxLDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKCkKLSAg ICAgICAgICAgIG1haW50ZW5hbmNlX3ByaW50X2NvcmVfZmlsZV9iYWNrZWRfbWFwcGluZ3MsCitA QCAtMTIwOSw0ICsxMjIyLDExIEBAIF9pbml0aWFsaXplX2NvcmVsb3cgKCkKKyAJICAgbWFpbnRl bmFuY2VfcHJpbnRfY29yZV9maWxlX2JhY2tlZF9tYXBwaW5ncywKICAJICAgXygiUHJpbnQgY29y ZSBmaWxlJ3MgZmlsZS1iYWNrZWQgbWFwcGluZ3MuIiksCiAgCSAgICZtYWludGVuYW5jZXByaW50 bGlzdCk7CiArCkBAIC0xMDU0LDcgKzEwNTYsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cu YyBiL2dkYi9jb3JlbG93LmMKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2Ri L2RvYy9nZGIudGV4aW5mbwogLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwogKysrIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbwotQEAgLTIxMDc0LDYgKzIxMDc0LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVz LgorQEAgLTIxNDE1LDYgKzIxNDE1LDI3IEBAIGluZm9ybWF0aW9uIGZpbGVzLgogIAogIEBlbmQg dGFibGUKICAKQEAgLTExMDcsMTYgKzExMDksNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9p bmRleC1jYWNoZS5jIGIvZ2RiL2R3YXJmMi9pbmRleC1jYWNoZS5jCiBkaWZmIC0tZ2l0IGEvZ2Ri L2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQuYwogLS0tIGEvZ2RiL2R3YXJmMi9yZWFk LmMKICsrKyBiL2dkYi9kd2FyZjIvcmVhZC5jCi1AQCAtMjIyNSw3ICsyMjI1LDcgQEAgZHdhcmYy X2dldF9kd3pfZmlsZSAoZHdhcmYyX3Blcl9iZmQgKnBlcl9iZmQpCi0gICAgIH0KLSAKLSAgIGlm IChkd3pfYmZkID09IE5VTEwpCi0tICAgIGR3el9iZmQgPSBidWlsZF9pZF90b19kZWJ1Z19iZmQg KGJ1aWxkaWRfbGVuLCBidWlsZGlkKTsKLSsgICAgZHd6X2JmZCA9IGJ1aWxkX2lkX3RvX2RlYnVn X2JmZCAoYnVpbGRpZF9sZW4sIGJ1aWxkaWQsIE5VTEwpOwotIAotICAgaWYgKGR3el9iZmQgPT0g bnVsbHB0cikKLSAgICAgewotQEAgLTU5ODksNyArNTk4OSw3IEBAIGdldF9nZGJfaW5kZXhfY29u dGVudHNfZnJvbV9zZWN0aW9uIChvYmpmaWxlICpvYmosIFQgKnNlY3Rpb25fb3duZXIpCitAQCAt NTQ0Nyw3ICs1NDQ3LDcgQEAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9tX3NlY3Rpb24gKG9i amZpbGUgKm9iaiwgVCAqc2VjdGlvbl9vd25lcikKICBzdGF0aWMgZ2RiOjphcnJheV92aWV3PGNv bnN0IGdkYl9ieXRlPgogIGdldF9nZGJfaW5kZXhfY29udGVudHNfZnJvbV9jYWNoZSAob2JqZmls ZSAqb2JqLCBkd2FyZjJfcGVyX2JmZCAqZHdhcmYyX3Blcl9iZmQpCiAgewpAQCAtMTEyNSw3ICsx MTE4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9yZWFk LmMKICAgIGlmIChidWlsZF9pZCA9PSBudWxscHRyKQogICAgICByZXR1cm4ge307CiAgCi1AQCAt NjAwMiw3ICs2MDAyLDcgQEAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9tX2NhY2hlIChvYmpm aWxlICpvYmosIGR3YXJmMl9wZXJfYmZkICpkd2FyZjJfcGVyX2JmZCkKK0BAIC01NDYwLDcgKzU0 NjAsNyBAQCBnZXRfZ2RiX2luZGV4X2NvbnRlbnRzX2Zyb21fY2FjaGUgKG9iamZpbGUgKm9iaiwg ZHdhcmYyX3Blcl9iZmQgKmR3YXJmMl9wZXJfYmZkKQogIHN0YXRpYyBnZGI6OmFycmF5X3ZpZXc8 Y29uc3QgZ2RiX2J5dGU+CiAgZ2V0X2dkYl9pbmRleF9jb250ZW50c19mcm9tX2NhY2hlX2R3eiAo b2JqZmlsZSAqb2JqLCBkd3pfZmlsZSAqZHd6KQogIHsKQEAgLTExMzcsNyArMTEzMCw3IEBAIGRp ZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiBkaWZmIC0t Z2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKIC0tLSBhL2dkYi9lbGZyZWFkLmMK ICsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0xMjk4LDcgKzEyOTgsOSBAQCBlbGZfc3ltZmlsZV9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9m bGFncykKK0BAIC0xMjcyLDcgKzEyNzIsOSBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRfZmxhZ3Mgc3ltZmlsZV9mbGFncykKICAJICAgJiYg b2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZSA9PSBOVUxMCiAgCSAgICYmIG9iamZpbGUt PnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVMTCkKICAgICAgewpAQCAtMTE0 OCw3ICsxMTQxLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5j CiAgCiAgICAgICAgaWYgKGRlYnVnZmlsZS5lbXB0eSAoKSkKICAJZGVidWdmaWxlID0gZmluZF9z ZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2RlYnVnbGluayAob2JqZmlsZSk7Ci1AQCAtMTMxMyw3ICsx MzE1LDcgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN5bWZp bGVfYWRkX2ZsYWdzIHN5bWZpbGVfZmxhZ3MpCitAQCAtMTI4Nyw3ICsxMjg5LDcgQEAgZWxmX3N5 bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN5bWZpbGVfYWRkX2ZsYWdzIHN5 bWZpbGVfZmxhZ3MpCiAgICAgICAgZWxzZQogIAl7CiAgCSAgaGFzX2R3YXJmMiA9IGZhbHNlOwpA QCAtMTE1Nyw3ICsxMTUwLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxm cmVhZC5jCiAgCiAgCSAgaWYgKGJ1aWxkX2lkICE9IG51bGxwdHIpCiAgCSAgICB7Ci1AQCAtMTMz OCw2ICsxMzQwLDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBzeW1maWxlX2FkZF9mbGFncyBzeW1maWxlX2ZsYWdzKQorQEAgLTEzMTIsNiArMTMxNCwxMCBA QCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3ltZmlsZV9hZGRf ZmxhZ3Mgc3ltZmlsZV9mbGFncykKICAJCSAgICAgIGhhc19kd2FyZjIgPSB0cnVlOwogIAkJICAg IH0KICAJCX0KQEAgLTExNzEsMTYgKzExNjQsMTYgQEAgZGlmZiAtLWdpdCBhL2dkYi9lbGZyZWFk LmMgYi9nZGIvZWxmcmVhZC5jCiBkaWZmIC0tZ2l0IGEvZ2RiL2V4ZWMuYyBiL2dkYi9leGVjLmMK IC0tLSBhL2dkYi9leGVjLmMKICsrKyBiL2dkYi9leGVjLmMKLUBAIC0yNjQsNyArMjY0LDcgQEAg dmFsaWRhdGVfZXhlY19maWxlIChpbnQgZnJvbV90dHkpCi0gICByZW9wZW5fZXhlY19maWxlICgp OworQEAgLTIzNyw3ICsyMzcsNyBAQCB2YWxpZGF0ZV9leGVjX2ZpbGUgKGludCBmcm9tX3R0eSkK ICAgIGN1cnJlbnRfZXhlY19maWxlID0gZ2V0X2V4ZWNfZmlsZSAoMCk7CiAgCi0tICBjb25zdCBi ZmRfYnVpbGRfaWQgKmV4ZWNfZmlsZV9idWlsZF9pZCA9IGJ1aWxkX2lkX2JmZF9nZXQgKGV4ZWNf YmZkKTsKLSsgIGNvbnN0IGJmZF9idWlsZF9pZCAqZXhlY19maWxlX2J1aWxkX2lkID0gYnVpbGRf aWRfYmZkX3NoZHJfZ2V0IChleGVjX2JmZCk7CisgICBjb25zdCBiZmRfYnVpbGRfaWQgKmV4ZWNf ZmlsZV9idWlsZF9pZAorLSAgICA9IGJ1aWxkX2lkX2JmZF9nZXQgKGN1cnJlbnRfcHJvZ3JhbV9z cGFjZS0+ZXhlY19iZmQgKCkpOworKyAgICA9IGJ1aWxkX2lkX2JmZF9zaGRyX2dldCAoY3VycmVu dF9wcm9ncmFtX3NwYWNlLT5leGVjX2JmZCAoKSk7CiAgICBpZiAoZXhlY19maWxlX2J1aWxkX2lk ICE9IG51bGxwdHIpCiAgICAgIHsKICAgICAgICAvKiBQcmVwZW5kIHRoZSB0YXJnZXQgcHJlZml4 LCB0byBmb3JjZSBnZGJfYmZkX29wZW4gdG8gb3BlbiB0aGUKLUBAIC0yNzcsNyArMjc3LDcgQEAg dmFsaWRhdGVfZXhlY19maWxlIChpbnQgZnJvbV90dHkpCitAQCAtMjUwLDcgKzI1MCw3IEBAIHZh bGlkYXRlX2V4ZWNfZmlsZSAoaW50IGZyb21fdHR5KQogICAgICAgIGlmIChhYmZkICE9IG51bGxw dHIpCiAgCXsKICAJICBjb25zdCBiZmRfYnVpbGRfaWQgKnRhcmdldF9leGVjX2ZpbGVfYnVpbGRf aWQKQEAgLTExOTIsNyArMTE4NSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZXhlYy5jIGIvZ2RiL2V4 ZWMuYwogZGlmZiAtLWdpdCBhL2dkYi9vYmpmaWxlcy5oIGIvZ2RiL29iamZpbGVzLmgKIC0tLSBh L2dkYi9vYmpmaWxlcy5oCiArKysgYi9nZGIvb2JqZmlsZXMuaAotQEAgLTcxNCw2ICs3MTQsMTAg QEAgc3RydWN0IG9iamZpbGUKK0BAIC04MTIsNiArODEyLDEwIEBAIHN0cnVjdCBvYmpmaWxlCiAg ICBib29sIHNraXBfaml0X3N5bWJvbF9sb29rdXAgPSBmYWxzZTsKICB9OwogIApAQCAtMTIzNSw3 ICsxMjI4LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3Zy NC5jCiAgCiAgc3RhdGljIHN0cnVjdCBsaW5rX21hcF9vZmZzZXRzICpzdnI0X2ZldGNoX2xpbmtf bWFwX29mZnNldHMgKHZvaWQpOwogIHN0YXRpYyBpbnQgc3ZyNF9oYXZlX2xpbmtfbWFwX29mZnNl dHMgKHZvaWQpOwotQEAgLTEzMzgsOSArMTMzOSw1MSBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3Zy NF9pbmZvICppbmZvLCBDT1JFX0FERFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAorQEAgLTEzNDgs OSArMTM0OSw1MSBAQCBzdnI0X3JlYWRfc29fbGlzdCAoc3ZyNF9pbmZvICppbmZvLCBDT1JFX0FE RFIgbG0sIENPUkVfQUREUiBwcmV2X2xtLAogIAkgIGNvbnRpbnVlOwogIAl9CiAgCkBAIC0xMjc3 LDggKzEyNzAsOCBAQCBkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1z dnI0LmMKICsJCSAgIGluc3RlYWQpIGlmIHRoZSBvbi1kaXNrIGZpbGVzIG5vIGxvbmdlciBtYXRj aCB0aGUKICsJCSAgIHJ1bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KICsKLSsJCWlmIChzeW1m aWxlX29iamZpbGUgIT0gTlVMTAotKwkJICAgICYmIChzeW1maWxlX29iamZpbGUtPmZsYWdzCisr CQlpZiAoY3VycmVudF9wcm9ncmFtX3NwYWNlLT5zeW1maWxlX29iamVjdF9maWxlICE9IE5VTEwK KysJCSAgICAmJiAoY3VycmVudF9wcm9ncmFtX3NwYWNlLT5zeW1maWxlX29iamVjdF9maWxlLT5m bGFncwogKwkJCSYgT0JKRl9CVUlMRF9JRF9DT1JFX0xPQURFRCkgIT0gMCkKICsJCSAgbmV3b2Jq LT5zb19uYW1lWzBdID0gMDsKICsJICAgICAgfQpAQCAtMTI5Myw3ICsxMjg2LDcgQEAgZGlmZiAt LWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCiBkaWZmIC0tZ2l0IGEv Z2RiL3NvdXJjZS5jIGIvZ2RiL3NvdXJjZS5jCiAtLS0gYS9nZGIvc291cmNlLmMKICsrKyBiL2dk Yi9zb3VyY2UuYwotQEAgLTExNjUsNyArMTE2NSw3IEBAIG9wZW5fc291cmNlX2ZpbGUgKHN0cnVj dCBzeW10YWIgKnMpCitAQCAtMTE3OCw3ICsxMTc4LDcgQEAgb3Blbl9zb3VyY2VfZmlsZSAoc3Ry dWN0IHN5bXRhYiAqcykKICAJICAgICAgc3JjcGF0aCArPSBzLT5maWxlbmFtZTsKICAJICAgIH0K ICAKQEAgLTEzMDUsOSArMTI5OCw5IEBAIGRpZmYgLS1naXQgYS9nZGIvc291cmNlLmMgYi9nZGIv c291cmNlLmMKIGRpZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5oIGIvZ2RiL3N5bWZpbGUuaAogLS0t IGEvZ2RiL3N5bWZpbGUuaAogKysrIGIvZ2RiL3N5bWZpbGUuaAotQEAgLTU1MCwxMiArNTUwLDE4 IEBAIHZvaWQgZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcKLSB2b2lkIG1hcF9zeW1ib2xfZmlsZW5h bWVzIChzeW1ib2xfZmlsZW5hbWVfZnR5cGUgKmZ1biwgdm9pZCAqZGF0YSwKLSAJCQkgICBpbnQg bmVlZF9mdWxsbmFtZSk7CitAQCAtMzMyLDEyICszMzIsMTggQEAgYm9vbCBleHBhbmRfc3ltdGFi c19tYXRjaGluZworIHZvaWQgbWFwX3N5bWJvbF9maWxlbmFtZXMgKGdkYjo6ZnVuY3Rpb25fdmll dzxzeW1ib2xfZmlsZW5hbWVfZnR5cGU+IGZ1biwKKyAJCQkgICBib29sIG5lZWRfZnVsbG5hbWUp OwogIAogKwogIC8qIFRhcmdldC1hZ25vc3RpYyBmdW5jdGlvbiB0byBsb2FkIHRoZSBzZWN0aW9u cyBvZiBhbiBleGVjdXRhYmxlIGludG8gbWVtb3J5LgpAQCAtMTMyMSw5ICsxMzE0LDkgQEAgZGlm ZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIvc3ltZmlsZS5oCiArZXh0ZXJuIHZvaWQgZGVi dWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpkZWJ1Zyk7 CiArI2RlZmluZSBCVUlMRF9JRF9NQUlOX0VYRUNVVEFCTEVfRklMRU5BTUUgXygidGhlIG1haW4g ZXhlY3V0YWJsZSBmaWxlIikKICsKLSAvKiBGcm9tIGR3YXJmMnJlYWQuYyAqLworIC8qIEZyb20g bWluaWRlYnVnLmMuICAqLwogIAotIC8qIE5hbWVzIGZvciBhIGR3YXJmMiBkZWJ1Z2dpbmcgc2Vj dGlvbi4gIFRoZSBmaWVsZCBOT1JNQUwgaXMgdGhlIG5vcm1hbAorIGV4dGVybiBnZGJfYmZkX3Jl Zl9wdHIgZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2luX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxl ICopOwogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZWZpbGUuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAKIC0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY29yZWZpbGUuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVm aWxlLmV4cApAQCAtMTM2NCw3ICsxMzU3LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvY29yZWZpbGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9jb3JlZmkKIGRp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQtaGlzdG9yeS5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQtaGlzdG9yeS5leHAKIC0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvZ2RiaW5pdC1oaXN0b3J5LmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nZGJpbml0LWhpc3RvcnkuZXhwCi1AQCAtMTgxLDcgKzE4MSw4IEBAIHByb2MgdGVz dF9lbXB0eV9oaXN0b3J5X2ZpbGVuYW1lIHsgfSB7CitAQCAtMTg1LDcgKzE4NSw4IEBAIHByb2Mg dGVzdF9lbXB0eV9oaXN0b3J5X2ZpbGVuYW1lIHsgfSB7CiAgICAgIGdsb2JhbCBlbnYKICAgICAg Z2xvYmFsIGdkYl9wcm9tcHQKICAKQEAgLTEzODgsNyArMTM4MSw3IEBAIGRpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL25ldy11aS1wZW5kaW5nLWlucHV0LmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAKIC0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICsr KyBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKLUBAIC0yMDExLDYgKzIwMTEsMTcgQEAgcHJv YyBkZWZhdWx0X2dkYl9zdGFydCB7IH0geworQEAgLTIxMzAsNiArMjEzMCwxNyBAQCBwcm9jIGRl ZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCX0KICAgICAgfQogIApAQCAtMTQwOSw3ICsxNDAyLDcg QEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5l eHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogLS0tIGEvZ2RiL3Rlc3RzdWl0 ZS9saWIvbWktc3VwcG9ydC5leHAKICsrKyBiL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCi1AQCAtMzA4LDYgKzMwOCwxNiBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJn cyB9IHsKK0BAIC0zMjIsNiArMzIyLDE2IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBh cmdzIH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJ fQogICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoIGIvZ2Ri LWNjYWNoZS13b3JrYXJvdW5kLnBhdGNoCmluZGV4IDYwYmM1Y2MuLjgwMmZhMmIgMTAwNjQ0Ci0t LSBhL2dkYi1jY2FjaGUtd29ya2Fyb3VuZC5wYXRjaAorKysgYi9nZGItY2NhY2hlLXdvcmthcm91 bmQucGF0Y2gKQEAgLTksOCArOSw4IEBAIFN1YmplY3Q6IGdkYi1jY2FjaGUtd29ya2Fyb3VuZC5w YXRjaAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvbWFjc2NwLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvbWFjc2NwLmV4cAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9tYWNzY3AuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL21hY3NjcC5leHAK LUBAIC0yNSw2ICsyNSwxNCBAQCBpZiB7IFt0ZXN0X2NvbXBpbGVyX2luZm8gImdjYy0qIl0gfHwg W3Rlc3RfY29tcGlsZXJfaW5mbyAiY2xhbmctKiJdIH0gewotICAgICBsYXBwZW5kIG9wdGlvbnMg YWRkaXRpb25hbF9mbGFncz0tZzMKK0BAIC0yNyw2ICsyNywxNCBAQCBpZiB7IFt0ZXN0X2NvbXBp bGVyX2luZm8gImdjYy0qIl0gfSB7CisgICAgIGxhcHBlbmQgb3B0aW9ucyBhZGRpdGlvbmFsX2Zs YWdzPS1mZGVidWctbWFjcm8KICB9CiAgCiArIyBXb3JrYXJvdW5kIGNjYWNoZSBtYWtpbmcgbGlu ZW5vIG5vbi16ZXJvIGZvciBjb21tYW5kLWxpbmUgZGVmaW5pdGlvbnMuCgpkaWZmIC0tZ2l0IGEv Z2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2ggYi9nZGItY29udGFpbmVyLXJoLXBrZy5wYXRjaApp bmRleCAwNGE3ZjNjLi4wOTk2NDk1IDEwMDY0NAotLS0gYS9nZGItY29udGFpbmVyLXJoLXBrZy5w YXRjaAorKysgYi9nZGItY29udGFpbmVyLXJoLXBrZy5wYXRjaApAQCAtOSw3ICs5LDcgQEAgU3Vi amVjdDogZ2RiLWNvbnRhaW5lci1yaC1wa2cucGF0Y2gKIGRpZmYgLS1naXQgYS9nZGIvcmVtb3Rl LmMgYi9nZGIvcmVtb3RlLmMKIC0tLSBhL2dkYi9yZW1vdGUuYwogKysrIGIvZ2RiL3JlbW90ZS5j Ci1AQCAtMTQwMzEsNyArMTQwMzEsMTcgQEAgcmVtb3RlX3RhcmdldDo6cGlkX3RvX2V4ZWNfZmls ZSAoaW50IHBpZCkKK0BAIC0xNDI5MCw3ICsxNDI5MCwxNyBAQCByZW1vdGVfdGFyZ2V0OjpwaWRf dG9fZXhlY19maWxlIChpbnQgcGlkKQogICAgY2hhciAqYW5uZXggPSBOVUxMOwogIAogICAgaWYg KHBhY2tldF9zdXBwb3J0IChQQUNLRVRfcVhmZXJfZXhlY19maWxlKSAhPSBQQUNLRVRfRU5BQkxF KQoKZGlmZiAtLWdpdCBhL2dkYi1kb250LW92ZXJ3cml0ZS1mc2dzYmFzZS1tMzIucGF0Y2ggYi9n ZGItZG9udC1vdmVyd3JpdGUtZnNnc2Jhc2UtbTMyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBlZTlhZDQ5Li4wMDAwMDAwCi0tLSBhL2dkYi1kb250LW92ZXJ3cml0ZS1mc2dz YmFzZS1tMzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzkgKzAsMCBAQAotRnJvbSBGRURP UkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbSBkZSBWcmllcyA8 dGRldnJpZXNAc3VzZS5kZT4KLURhdGU6IFR1ZSwgMSBKdW4gMjAyMSAxMDoxNDozMSAtMDcwMAot U3ViamVjdDogZ2RiLWRvbnQtb3ZlcndyaXRlLWZzZ3NiYXNlLW0zMi5wYXRjaAotCi07OyBCYWNr cG9ydCAiW2dkYi9zZXJ2ZXJdIERvbid0IG92ZXJ3cml0ZSBmcy9nc19iYXNlIHdpdGggLW0zMiIK LTs7IChUb20gZGUgVnJpZXMpCi0KLUNvbnNpZGVyIGEgbWluaW1hbCB0ZXN0LWNhc2UgdGVzdC5j OgotLi4uCi1pbnQgbWFpbiAodm9pZCkgeyByZXR1cm4gMDsgfQotLi4uCi1jb21waWxlZCB3aXRo IC1tMzI6Ci0uLi4KLSQgZ2NjIHRlc3QuYyAtbTMyCi0uLi4KLQotV2hlbiBydW5uaW5nIHRoZSBl eGVjIHVzaW5nIGdkYnNlcnZlciBvbiBvcGVuU1VTRSBGYWN0b3J5IChjdXJyZW50bHkgcnVubmlu ZyBhCi1saW51eCBrZXJuZWwgdmVyc2lvbiA1LjEwLjUpOgotLi4uCi0kIGdkYnNlcnZlciBsb2Nh bGhvc3Q6MTIzNDUgYS5vdXQKLS4uLgotdG8gd2hpY2ggd2UgY29ubmVjdCBpbiBhIGdkYiBzZXNz aW9uLCB3ZSBydW4gaW50byBhIHNlZ2ZhdWx0IGluIHRoZSBpbmZlcmlvcjoKLS4uLgotJCBnZGIg LWJhdGNoIC1xIC1leCAidGFyZ2V0IHJlbW90ZSBsb2NhbGhvc3Q6MTIzNDUiIC1leCBjb250aW51 ZQotUHJvZ3JhbSByZWNlaXZlZCBzaWduYWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0Lgot MHhmN2RkOGJkMiBpbiBpbml0X2NhY2hlaW5mbyAoKSBhdCAuLi9zeXNkZXBzL3g4Ni9jYWNoZWlu Zm8uYzo3NjEKLS4uLgotCi1UaGUgc2VnZmF1bHQgaXMgY2F1c2VkIGJ5IGdkYnNlcnZlciBvdmVy d3JpdGluZyAkZ3NfYmFzZSB3aXRoIDAgdXNpbmcKLVBUUkFDRV9TRVRSRUdTLiAgQWZ0ZXIgaXQg aXMgb3ZlcndyaXR0ZW4sIHRoZSBuZXh0IHVzZSBvZiAkZ3MgaW4gdGhlIGluZmVyaW9yCi13aWxs IHRyaWdnZXIgdGhlIHNlZ2ZhdWx0LgotCi1CZWZvcmUgbGludXgga2VybmVsIHZlcnNpb24gNS45 LCB0aGUgdmFsdWUgdXNlZCBieSBQVFJBQ0VfU0VUUkVHUyBmb3IgJGdzX2Jhc2UKLXdhcyBpZ25v cmVkLCBidXQgc3RhcnRpbmcgdmVyc2lvbiA1LjksIHRoZSBsaW51eCBrZXJuZWwgaGFzIHN1cHBv cnQgZm9yCi1pbnRlbCBhcmNoaXRlY3R1cmUgZXh0ZW5zaW9uIEZTR1NCQVNFLCB3aGljaCBhbGxv d3MgdXNlcnMgdG8gbW9kaWZ5ICRnc19iYXNlLAotYW5kIGNvbnNlcXVlbnRseSBQVFJBQ0VfU0VU UkVHUyBjYW4gbm8gbG9uZ2VyIGlnbm9yZSB0aGUgJGdzX2Jhc2UgdmFsdWUuCi0KLVRoZSBvdmVy d3JpdGUgb2YgJGdzX2Jhc2Ugd2l0aCAwIGlzIGRvbmUgYnkgYSBtZW1zZXQgaW4geDg2X2ZpbGxf Z3JlZ3NldCwKLXdoaWNoIHdhcyBhZGRlZCBpbiBjb21taXQgOWUwYWE2NGY1NTEgIkZpeCBnZGJz ZXJ2ZXIgcUdldFRMU0FkZHIgZm9yCi14ODZfNjQgLW0zMiIuICBUaGUgbWVtc2V0IGludGVuZHMg dG8gemVyby1leHRlbmQgMzItYml0IHJlZ2lzdGVycyB0aGF0IGFyZQotdHJhY2tlZCBpbiB0aGUg cmVnY2FjaGUgdG8gNjQtYml0IHdoZW4gd3JpdGluZyB0aGVtIGludG8gdGhlIFBUUkFDRV9TRVRS RUdTCi1kYXRhIGFyZ3VtZW50LiAgQnV0IGluIGFkZGl0aW9uLCBpdCBvdmVyd3JpdGVzIG90aGVy IHJlZ2lzdGVycyB0aGF0IGFyZQotbm90IHRyYWNrZWQgaW4gdGhlIHJlZ2NhY2hlLCBzdWNoIGFz ICRnc19iYXNlLgotCi1GaXggdGhlIHNlZ2ZhdWx0IGJ5IHJlZG9pbmcgdGhlIGZpeCBmcm9tIGNv bW1pdCA5ZTBhYTY0ZjU1MSBpbiBtaW5pbWFsIGZvcm0uCi0KLVRlc3RlZCBvbiB4ODZfNjQtbGlu dXg6Ci0tIG9wZW5TVVNFIExlYXAgMTUuMiAodXNpbmcga2VybmVsIHZlcnNpb24gNS4zLjE4KToK LSAgLSBuYXRpdmUKLSAgLSBnZGJzZXJ2ZXIgLW0zMgotICAtIC1tMzIKLS0gb3BlblNVU0UgRmFj dG9yeSAodXNpbmcga2VybmVsIHZlcnNpb24gNS4xMC41KToKLSAgLSBuYXRpdmUKLSAgLSBtMzIK LQotZ2Ric2VydmVyL0NoYW5nZUxvZzoKLQotMjAyMS0wMS0yMCAgVG9tIGRlIFZyaWVzICA8dGRl dnJpZXNAc3VzZS5kZT4KLQotCSogbGludXgteDg2LWxvdy5jYyAoY29sbGVjdF9yZWdpc3Rlcl9p Mzg2KTogTmV3IGZ1bmN0aW9uLgotCSh4ODZfZmlsbF9ncmVnc2V0KTogIFJlbW92ZSBtZW1zZXQu ICBVc2UgY29sbGVjdF9yZWdpc3Rlcl9pMzg2LgotCi1kaWZmIC0tZ2l0IGEvZ2Ric2VydmVyL2xp bnV4LXg4Ni1sb3cuY2MgYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jYwotLS0tIGEvZ2Ric2Vy dmVyL2xpbnV4LXg4Ni1sb3cuY2MKLSsrKyBiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmNjCi1A QCAtMzk3LDYgKzM5NywzNSBAQCB4ODZfdGFyZ2V0Ojpsb3dfY2Fubm90X2ZldGNoX3JlZ2lzdGVy IChpbnQgcmVnbm8pCi0gICByZXR1cm4gcmVnbm8gPj0gSTM4Nl9OVU1fUkVHUzsKLSB9Ci0gCi0r c3RhdGljIHZvaWQKLStjb2xsZWN0X3JlZ2lzdGVyX2kzODYgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdubywgdm9pZCAqYnVmKQotK3sKLSsgIGNvbGxlY3RfcmVnaXN0ZXIgKHJl Z2NhY2hlLCByZWdubywgYnVmKTsKLSsKLSsjaWZkZWYgX194ODZfNjRfXwotKyAgLyogSW4gY2Fz ZSBvZiB4ODZfNjQgLW0zMiwgY29sbGVjdF9yZWdpc3RlciBvbmx5IHdyaXRlcyA0IGJ5dGVzLCBi dXQgdGhlCi0rICAgICBzcGFjZSByZXNlcnZlZCBpbiBidWYgZm9yIHRoZSByZWdpc3RlciBpcyA4 IGJ5dGVzLiAgTWFrZSBzdXJlIHRoZSBlbnRpcmUKLSsgICAgIHJlc2VydmVkIHNwYWNlIGlzIGlu aXRpYWxpemVkLiAgKi8KLSsKLSsgIGdkYl9hc3NlcnQgKHJlZ2lzdGVyX3NpemUgKHJlZ2NhY2hl LT50ZGVzYywgcmVnbm8pID09IDQpOwotKwotKyAgaWYgKHJlZ25vID09IFJBWCkKLSsgICAgewot KyAgICAgIC8qIFNpZ24gZXh0ZW5kIEVBWCB2YWx1ZSB0byBhdm9pZCBwb3RlbnRpYWwgc3lzY2Fs bCByZXN0YXJ0Ci0rCSBwcm9ibGVtcy4KLSsKLSsJIFNlZSBhbWQ2NF9saW51eF9jb2xsZWN0X25h dGl2ZV9ncmVnc2V0KCkgaW4KLSsJIGdkYi9hbWQ2NC1saW51eC1uYXQuYyBmb3IgYSBkZXRhaWxl ZCBleHBsYW5hdGlvbi4gICovCi0rICAgICAgKihpbnQ2NF90ICopIGJ1ZiA9ICooaW50MzJfdCAq KSBidWY7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIFplcm8tZXh0ZW5kLiAg Ki8KLSsgICAgICAqKHVpbnQ2NF90ICopIGJ1ZiA9ICoodWludDMyX3QgKikgYnVmOwotKyAgICB9 Ci0rI2VuZGlmCi0rfQotKwotIHN0YXRpYyB2b2lkCi0geDg2X2ZpbGxfZ3JlZ3NldCAoc3RydWN0 IHJlZ2NhY2hlICpyZWdjYWNoZSwgdm9pZCAqYnVmKQotIHsKLUBAIC00MTEsMzIgKzQ0MCwxNCBA QCB4ODZfZmlsbF9ncmVnc2V0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCB2b2lkICpidWYp Ci0gCi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0tCi0tICAvKiAzMi1iaXQgaW5mZXJpb3IgcmVn aXN0ZXJzIG5lZWQgdG8gYmUgemVyby1leHRlbmRlZC4KLS0gICAgIENhbGxlcnMgd291bGQgcmVh ZCB1bmluaXRpYWxpemVkIG1lbW9yeSBvdGhlcndpc2UuICAqLwotLSAgbWVtc2V0IChidWYsIDB4 MDAsIFg4Nl82NF9VU0VSX1JFR1MgKiA4KTsKLSAjZW5kaWYKLSAKLSAgIGZvciAoaSA9IDA7IGkg PCBJMzg2X05VTV9SRUdTOyBpKyspCi0tICAgIGNvbGxlY3RfcmVnaXN0ZXIgKHJlZ2NhY2hlLCBp LCAoKGNoYXIgKikgYnVmKSArIGkzODZfcmVnbWFwW2ldKTsKLS0KLS0gIGNvbGxlY3RfcmVnaXN0 ZXJfYnlfbmFtZSAocmVnY2FjaGUsICJvcmlnX2VheCIsCi0tCQkJICAgICgoY2hhciAqKSBidWYp ICsgT1JJR19FQVggKiBSRUdTSVpFKTsKLSsgICAgY29sbGVjdF9yZWdpc3Rlcl9pMzg2IChyZWdj YWNoZSwgaSwgKChjaGFyICopIGJ1ZikgKyBpMzg2X3JlZ21hcFtpXSk7Ci0gCi0tI2lmZGVmIF9f eDg2XzY0X18KLS0gIC8qIFNpZ24gZXh0ZW5kIEVBWCB2YWx1ZSB0byBhdm9pZCBwb3RlbnRpYWwg c3lzY2FsbCByZXN0YXJ0Ci0tICAgICBwcm9ibGVtcy4gCi0tCi0tICAgICBTZWUgYW1kNjRfbGlu dXhfY29sbGVjdF9uYXRpdmVfZ3JlZ3NldCgpIGluIGdkYi9hbWQ2NC1saW51eC1uYXQuYwotLSAg ICAgZm9yIGEgZGV0YWlsZWQgZXhwbGFuYXRpb24uICAqLwotLSAgaWYgKHJlZ2lzdGVyX3NpemUg KHJlZ2NhY2hlLT50ZGVzYywgMCkgPT0gNCkKLS0gICAgewotLSAgICAgIHZvaWQgKnB0ciA9ICgo Z2RiX2J5dGUgKikgYnVmCi0tICAgICAgICAgICAgICAgICAgICsgaTM4Nl9yZWdtYXBbZmluZF9y ZWdubyAocmVnY2FjaGUtPnRkZXNjLCAiZWF4IildKTsKLS0KLS0gICAgICAqKGludDY0X3QgKikg cHRyID0gKihpbnQzMl90ICopIHB0cjsKLS0gICAgfQotLSNlbmRpZgotKyAgLyogSGFuZGxlIE9S SUdfRUFYLCB3aGljaCBpcyBub3QgaW4gaTM4Nl9yZWdtYXAuICAqLwotKyAgY29sbGVjdF9yZWdp c3Rlcl9pMzg2IChyZWdjYWNoZSwgZmluZF9yZWdubyAocmVnY2FjaGUtPnRkZXNjLCAib3JpZ19l YXgiKSwKLSsJCQkgKChjaGFyICopIGJ1ZikgKyBPUklHX0VBWCAqIFJFR1NJWkUpOwotIH0KLSAK LSBzdGF0aWMgdm9pZAoKZGlmZiAtLWdpdCBhL2dkYi1mZWRvcmEtbGlibmN1cnNlc3cucGF0Y2gg Yi9nZGItZmVkb3JhLWxpYm5jdXJzZXN3LnBhdGNoCmluZGV4IDdjNjIwZmIuLjEwNzEwYjkgMTAw NjQ0Ci0tLSBhL2dkYi1mZWRvcmEtbGlibmN1cnNlc3cucGF0Y2gKKysrIGIvZ2RiLWZlZG9yYS1s aWJuY3Vyc2Vzdy5wYXRjaApAQCAtMTIsNyArMTIsNyBAQCBodHRwczovL2J1Z3ppbGxhLnJlZGhh dC5jb20vc2hvd19idWcuY2dpP2lkPTEyNzA1MzQKIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJl IGIvZ2RiL2NvbmZpZ3VyZQogLS0tIGEvZ2RiL2NvbmZpZ3VyZQogKysrIGIvZ2RiL2NvbmZpZ3Vy ZQotQEAgLTk2NDksNiArOTY0OSw3IEBAIGlmIHRlc3QgeCIkcHJlZmVyX2N1cnNlcyIgPSB4eWVz OyB0aGVuCitAQCAtOTU0NCw2ICs5NTQ0LDcgQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9 IHh5ZXM7IHRoZW4KICAgICMgc2VhcmNoIC91c3IvbG9jYWwvaW5jbHVkZSwgaWYgbmN1cnNlcyBp cyBpbnN0YWxsZWQgaW4gL3Vzci9sb2NhbC4gIEEKICAgICMgZGVmYXVsdCBpbnN0YWxsYXRpb24g b2YgbmN1cnNlcyBvbiBhbHBoYSotZGVjLW9zZiogd2lsbCBsZWFkIHRvIHN1Y2gKICAgICMgYSBz aXR1YXRpb24uCkBAIC0yMCw3ICsyMCw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIv Z2RiL2NvbmZpZ3VyZQogICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99 OiBjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIHdhZGRzdHIiID4mNQogICRhc19lY2hv X24gImNoZWNraW5nIGZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgd2FkZHN0ci4uLiAiID4mNjsgfQog IGlmICR7YWNfY3Zfc2VhcmNoX3dhZGRzdHIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTk2NzMsNyAr OTY3NCw3IEBAIHJldHVybiB3YWRkc3RyICgpOworQEAgLTk1NjgsNyArOTU2OSw3IEBAIHJldHVy biB3YWRkc3RyICgpOwogICAgcmV0dXJuIDA7CiAgfQogIF9BQ0VPRgpAQCAtMjksNyArMjksNyBA QCBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUKICAgIGlmIHRlc3Qg LXogIiRhY19saWIiOyB0aGVuCiAgICAgIGFjX3Jlcz0ibm9uZSByZXF1aXJlZCIKICAgIGVsc2UK LUBAIC05NzQ3LDYgKzk3NDgsNyBAQCBjYXNlICRob3N0X29zIGluCitAQCAtOTY0Miw2ICs5NjQz LDcgQEAgY2FzZSAkaG9zdF9vcyBpbgogIGVzYWMKICAKICAjIFRoZXNlIGFyZSB0aGUgbGlicmFy aWVzIGNoZWNrZWQgYnkgUmVhZGxpbmUuCkBAIC0zNyw3ICszNyw3IEBAIGRpZmYgLS1naXQgYS9n ZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQogIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGxpYnJhcnkgY29udGFpbmluZyB0Z2V0ZW50IiA+ JjUKICAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbGlicmFyeSBjb250YWluaW5nIHRnZXRlbnQu Li4gIiA+JjY7IH0KICBpZiAke2FjX2N2X3NlYXJjaF90Z2V0ZW50Kzp9IGZhbHNlOyB0aGVuIDoK LUBAIC05NzcxLDcgKzk3NzMsNyBAQCByZXR1cm4gdGdldGVudCAoKTsKK0BAIC05NjY2LDcgKzk2 NjgsNyBAQCByZXR1cm4gdGdldGVudCAoKTsKICAgIHJldHVybiAwOwogIH0KICBfQUNFT0YKQEAg LTQ5LDcgKzQ5LDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUgYi9nZGIvY29uZmlndXJl CiBkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZS5hYyBiL2dkYi9jb25maWd1cmUuYWMKIC0tLSBh L2dkYi9jb25maWd1cmUuYWMKICsrKyBiL2dkYi9jb25maWd1cmUuYWMKLUBAIC03MTIsNyArNzEy LDggQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9IHh5ZXM7IHRoZW4KK0BAIC03MzYsNyAr NzM2LDggQEAgaWYgdGVzdCB4IiRwcmVmZXJfY3Vyc2VzIiA9IHh5ZXM7IHRoZW4KICAgICMgc2Vh cmNoIC91c3IvbG9jYWwvaW5jbHVkZSwgaWYgbmN1cnNlcyBpcyBpbnN0YWxsZWQgaW4gL3Vzci9s b2NhbC4gIEEKICAgICMgZGVmYXVsdCBpbnN0YWxsYXRpb24gb2YgbmN1cnNlcyBvbiBhbHBoYSot ZGVjLW9zZiogd2lsbCBsZWFkIHRvIHN1Y2gKICAgICMgYSBzaXR1YXRpb24uCkBAIC01OSw3ICs1 OSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYwog IAogICAgaWYgdGVzdCAiJGFjX2N2X3NlYXJjaF93YWRkc3RyIiAhPSBubzsgdGhlbgogICAgICBj dXJzZXNfZm91bmQ9eWVzCi1AQCAtNzU0LDcgKzc1NSw4IEBAIGNhc2UgJGhvc3Rfb3MgaW4KK0BA IC03NzgsNyArNzc5LDggQEAgY2FzZSAkaG9zdF9vcyBpbgogIGVzYWMKICAKICAjIFRoZXNlIGFy ZSB0aGUgbGlicmFyaWVzIGNoZWNrZWQgYnkgUmVhZGxpbmUuCgpkaWZmIC0tZ2l0IGEvZ2RiLWdk YjI3NzQzLXBzeW10YWItaW1wb3J0ZWQtdW5pdC5wYXRjaCBiL2dkYi1nZGIyNzc0My1wc3ltdGFi LWltcG9ydGVkLXVuaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxMjli NmQuLjAwMDAwMDAKLS0tIGEvZ2RiLWdkYjI3NzQzLXBzeW10YWItaW1wb3J0ZWQtdW5pdC5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDI4MSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogVG9tIFRyb21leSA8dHJvbWV5QGFkYWNvcmUu Y29tPgotRGF0ZTogRnJpLCAyMyBBcHIgMjAyMSAxMToyODo0OCAtMDYwMAotU3ViamVjdDogZ2Ri LWdkYjI3NzQzLXBzeW10YWItaW1wb3J0ZWQtdW5pdC5wYXRjaAotCi07OyBCYWNrcG9ydCAiRml4 IGNyYXNoIHdoZW4gZXhwYW5kaW5nIHBhcnRpYWwgc3ltdGFicyB3aXRoIERXX1RBR19pbXBvcnRl ZF91bml0IgotOzsgKFRvbSBUcm9tZXksIGdkYi8yNzc0MykKLQotICAgRnJvbSBlN2Q3N2NlMGM0 MDhlNzAxOWY5ODg1YjhiZTY0YzljZGI0NmRkMzEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot ICAgU3ViamVjdDogW1BBVENIXSBGaXggY3Jhc2ggd2hlbiBleHBhbmRpbmcgcGFydGlhbCBzeW10 YWJzIHdpdGgKLSBEV19UQUdfaW1wb3J0ZWRfdW5pdAotCi1QUiBnZGIvMjc3NDMgcG9pbnRzIG91 dCBhIGdkYiBjcmFzaCB3aGVuIGV4cGFuZGluZyBwYXJ0aWFsIHN5bXRhYnMsCi13aGVyZSBvbmUg b2YgdGhlIGNvbXBpbGF0aW9uIHVuaXRzIHVzZXMgRFdfVEFHX2ltcG9ydGVkX3VuaXQuCi0KLVRo ZSBidWcgaXMgdGhhdCBwYXJ0aWFsX21hcF9leHBhbmRfYXBwbHkgZXhwZWN0cyBvbmx5IHRvIGJl IGNhbGxlZCBmb3IKLXRoZSBvdXRlcm1vc3QgcHN5bXRhYi4gIEhvd2V2ZXIsIGZpbGVuYW1lIHNl YXJjaGluZyBkb2Vzbid0IChhbmQKLXByb2JhYmx5IHNob3VsZG4ndCkgZ3VhcmFudGVlIHRoaXMu ICBUaGUgZml4IGlzIHRvIHdhbGsgdXB3YXJkIHRvIGZpbmQKLXRoZSBvdXRlcm1vc3QgQ1UuCi0K LUEgbmV3IHRlc3QgY2FzZSBpcyBpbmNsdWRlZC4gIEl0IGlzIG1vc3RseSBjb3BpZWQgZnJvbSBv dGhlciB0ZXN0Ci1jYXNlcywgd2hpY2ggcmVhbGx5IHNwZWQgdXAgdGhlIGVmZm9ydC4KLQotVGhp cyBidWcgZG9lcyBub3Qgb2NjdXIgb24gdHJ1bmsuICBUaGVyZSwKLXBzeW1fbWFwX3N5bXRhYnNf bWF0Y2hpbmdfZmlsZW5hbWUgaXMgZ29uZSwgcmVwbGFjZWQgYnkKLXBzeW1ib2xfZnVuY3Rpb25z OjpleHBhbmRfc3ltdGFic19tYXRjaGluZy4gIFdoZW4gdGhpcyBmaW5kIGEgbWF0Y2gsCi1pdCBj YWxscyBwc3ltdGFiX3RvX3N5bXRhYiwgd2hpY2ggZG9lcyB0aGlzIHNhbWUgdXB3YXJkIHdhbGsu Ci0KLVRlc3RlZCBvbiB4ODYtNjQgRmVkb3JhIDMyLgotCi1JIHByb3Bvc2UgY2hlY2tpbmcgaW4g dGhpcyBwYXRjaCBvbiB0aGUgZ2RiLTEwIGJyYW5jaCwgYW5kIGp1c3QgdGhlCi1uZXcgdGVzdCBj YXNlIG9uIHRydW5rLgotCi1nZGIvQ2hhbmdlTG9nCi0yMDIxLTA0LTIzICBUb20gVHJvbWV5ICA8 dHJvbWV5QGFkYWNvcmUuY29tPgotCi0JUFIgZ2RiLzI3NzQzOgotCSogcHN5bXRhYi5jIChwYXJ0 aWFsX21hcF9leHBhbmRfYXBwbHkpOiBFeHBhbmQgb3V0ZXJtb3N0IHBzeW10YWIuCi0KLWdkYi90 ZXN0c3VpdGUvQ2hhbmdlTG9nCi0yMDIxLTA0LTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QGFkYWNv cmUuY29tPgotCi0JUFIgZ2RiLzI3NzQzOgotCSogZ2RiLmR3YXJmMi9pbXBvcnRlZC11bml0LWJw LmV4cDogTmV3IGZpbGUuCi0JKiBnZGIuZHdhcmYyL2ltcG9ydGVkLXVuaXQtYnAtbWFpbi5jOiBO ZXcgZmlsZS4KLQkqIGdkYi5kd2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1hbHQuYzogTmV3IGZpbGUu Ci0KLWRpZmYgLS1naXQgYS9nZGIvcHN5bXRhYi5jIGIvZ2RiL3BzeW10YWIuYwotLS0tIGEvZ2Ri L3BzeW10YWIuYwotKysrIGIvZ2RiL3BzeW10YWIuYwotQEAgLTEyNyw5ICsxMjcsMTAgQEAgcGFy dGlhbF9tYXBfZXhwYW5kX2FwcGx5IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSB7Ci0gICBz dHJ1Y3QgY29tcHVuaXRfc3ltdGFiICpsYXN0X21hZGUgPSBvYmpmaWxlLT5jb21wdW5pdF9zeW10 YWJzOwotIAotLSAgLyogU2hhcmVkIHBzeW10YWJzIHNob3VsZCBuZXZlciBiZSBzZWVuIGhlcmUu ICBJbnN0ZWFkIHRoZXkgc2hvdWxkCi0tICAgICBiZSBoYW5kbGVkIHByb3Blcmx5IGJ5IHRoZSBj YWxsZXIuICAqLwotLSAgZ2RiX2Fzc2VydCAocHN0LT51c2VyID09IE5VTEwpOwotKyAgLyogV2Ug bWF5IHNlZSBhIHNoYXJlZCBwc3ltdGFiIGhlcmUsIGJ1dCB3ZSB3YW50IHRvIGV4cGFuZCB0aGUK LSsgICAgIG91dGVybW9zdCBzeW10YWIuICAqLwotKyAgd2hpbGUgKHBzdC0+dXNlciAhPSBudWxs cHRyKQotKyAgICBwc3QgPSBwc3QtPnVzZXI7Ci0gCi0gICAvKiBEb24ndCB2aXNpdCBhbHJlYWR5 LWV4cGFuZGVkIHBzeW10YWJzLiAgKi8KLSAgIGlmIChwc3QtPnJlYWRpbl9wIChvYmpmaWxlKSkK LWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1h bHQuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9pbXBvcnRlZC11bml0LWJwLWFsdC5jCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2ltcG9ydGVkLXVuaXQtYnAtYWx0LmMKLUBAIC0wLDAgKzEsNTAgQEAKLSsvKiBD b3B5cmlnaHQgMjAyMC0yMDIxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBVc2VkIHRvIGlu c2VydCBsYWJlbHMgd2l0aCB3aGljaCB3ZSBjYW4gYnVpbGQgYSBmYWtlIGxpbmUgdGFibGUuICAq LwotKyNkZWZpbmUgTEwoTikgYXNtICgibGluZV9sYWJlbF8iICNOICI6IC5nbG9ibCBsaW5lX2xh YmVsXyIgI04pCi0rCi0rdm9sYXRpbGUgaW50IHZhcjsKLSt2b2xhdGlsZSBpbnQgYmFyOwotKwot Ky8qIEdlbmVyYXRlIHNvbWUgY29kZSB0byB0YWtlIHVwIHNvbWUgc3BhY2UuICAqLwotKyNkZWZp bmUgRklMTEVSIGRvIHsgXAotKyAgICB2YXIgPSA5OTsJICAgIFwKLSt9IHdoaWxlICgwKQotKwot K2ludAotK2Z1bmMgKHZvaWQpCi0rewkJCQkJLyogZnVuYyBwcm9sb2d1ZSAqLwotKyAgYXNtICgi ZnVuY19sYWJlbDogLmdsb2JsIGZ1bmNfbGFiZWwiKTsKLSsgIExMICgxKTsJLy8gRjEsIExuIDE2 Ci0rICBGSUxMRVI7Ci0rICBMTCAoMik7CS8vIEYxLCBMbiAxNwotKyAgRklMTEVSOwotKyAgTEwg KDMpOwkvLyBGMiwgTG4gMjEKLSsgIEZJTExFUjsKLSsgIExMICg0KTsJLy8gRjIsIExuIDIyIC8v IEYxLCBMbiAxOCwgIVMKLSsgIEZJTExFUjsKLSsgIExMICg1KTsJLy8gRjEsIExuIDE5ICFTCi0r ICBGSUxMRVI7Ci0rICBMTCAoNik7CS8vIEYxLCBMbiAyMAotKyAgRklMTEVSOwotKyAgTEwgKDcp OwotKyAgRklMTEVSOwotKyAgcmV0dXJuIDA7CQkJCS8qIGZ1bmMgZW5kICovCi0rfQotKwotKyNp ZmRlZiBXSVRITUFJTgotK2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0KLSsjZW5kaWYKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1tYWluLmMg Yi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1tYWluLmMKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvaW1wb3J0ZWQtdW5pdC1icC1tYWluLmMKLUBAIC0wLDAgKzEsMjQgQEAKLSsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHly aWdodCAyMDA0LTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwot KyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotK2V4dGVybiBpbnQgZnVuYyAo dm9pZCk7Ci0rCi0raW50Ci0rbWFpbigpCi0rewotKyAgcmV0dXJuIGZ1bmMgKCk7Ci0rfQotZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9pbXBvcnRlZC11bml0LWJwLmV4cCBi L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9pbXBvcnRlZC11bml0LWJwLmV4cAotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9pbXBvcnRlZC11bml0LWJwLmV4cAotQEAgLTAsMCArMSwxMjggQEAKLSsjIENvcHlyaWdodCAy MDIwLTIwMjEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCB0aGF0ICJicmVhayAvYWJzb2x1dGUvZmlsZTps aW5lIiB3b3JrcyBvayB3aXRoIGltcG9ydGVkIENVcy4KLSsKLStsb2FkX2xpYiBkd2FyZi5leHAK LSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0 IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0raWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7Ci0rICAgIHJl dHVybiAwCi0rfQotKwotKyMgVGhlIC5jIGZpbGVzIHVzZSBfX2F0dHJpYnV0ZV9fLgotK2lmIFtn ZXRfY29tcGlsZXJfaW5mb10gewotKyAgICByZXR1cm4gLTEKLSt9Ci0raWYgISRnY2NfY29tcGls ZWQgewotKyAgICByZXR1cm4gMAotK30KLSsKLStzdGFuZGFyZF90ZXN0ZmlsZSBpbXBvcnRlZC11 bml0LWJwLWFsdC5jIC5TIGltcG9ydGVkLXVuaXQtYnAtbWFpbi5jCi0rCi0rc2V0IGJ1aWxkX29w dGlvbnMge25vZGVidWcgb3B0aW1pemU9LU8xfQotKwotK3NldCBhc21fZmlsZSBbc3RhbmRhcmRf b3V0cHV0X2ZpbGUgJHNyY2ZpbGUyXQotK0R3YXJmOjphc3NlbWJsZSAkYXNtX2ZpbGUgewotKyAg ICBnbG9iYWwgc3JjZGlyIHN1YmRpciBzcmNmaWxlIHNyY2ZpbGUKLSsgICAgZ2xvYmFsIGJ1aWxk X29wdGlvbnMKLSsgICAgZGVjbGFyZV9sYWJlbHMgbGluZXNfbGFiZWwgY2FsbGVlX3N1YnByb2df bGFiZWwgY3VfbGFiZWwKLSsKLSsgICAgZ2V0X2Z1bmNfaW5mbyBmdW5jICIkYnVpbGRfb3B0aW9u cyBhZGRpdGlvbmFsX2ZsYWdzPS1EV0lUSE1BSU4iCi0rCi0rICAgIGN1IHt9IHsKLSsJY29tcGls ZV91bml0IHsKLSsJICAgIHtsYW5ndWFnZSBARFdfTEFOR19DfQotKwkgICAge25hbWUgIjxhcnRp ZmljaWFsPiJ9Ci0rCX0gewotKwkgICAgaW1wb3J0ZWRfdW5pdCB7Ci0rCQl7aW1wb3J0ICUkY3Vf bGFiZWx9Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgICBjdSB7fSB7Ci0rCWN1X2xhYmVs OiBjb21waWxlX3VuaXQgewotKwkgICAge3Byb2R1Y2VyICJnY2MifQotKwkgICAge2xhbmd1YWdl IEBEV19MQU5HX0N9Ci0rCSAgICB7bmFtZSAke3NyY2ZpbGV9fQotKwkgICAge2NvbXBfZGlyICIv dG1wIn0KLSsJICAgIHtsb3dfcGMgMCBhZGRyfQotKwkgICAge3N0bXRfbGlzdCAke2xpbmVzX2xh YmVsfSBEV19GT1JNX3NlY19vZmZzZXR9Ci0rCX0gewotKwkgICAgY2FsbGVlX3N1YnByb2dfbGFi ZWw6IHN1YnByb2dyYW0gewotKwkJe2V4dGVybmFsIDEgZmxhZ30KLSsJCXtuYW1lIGNhbGxlZX0K LSsJCXtpbmxpbmUgMyBkYXRhMX0KLSsJICAgIH0KLSsJICAgIHN1YnByb2dyYW0gewotKwkJe2V4 dGVybmFsIDEgZmxhZ30KLSsJCXtuYW1lIGZ1bmN9Ci0rCQl7bG93X3BjICRmdW5jX3N0YXJ0IGFk ZHJ9Ci0rCQl7aGlnaF9wYyAiJGZ1bmNfc3RhcnQgKyAkZnVuY19sZW4iIGFkZHJ9Ci0rCSAgICB9 IHsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rICAgIGxpbmVzIHt2ZXJzaW9uIDIgZGVmYXVs dF9pc19zdG10IDF9IGxpbmVzX2xhYmVsIHsKLSsJaW5jbHVkZV9kaXIgIi90bXAiCi0rCWZpbGVf bmFtZSAiJHNyY2ZpbGUiIDEKLSsKLSsJcHJvZ3JhbSB7Ci0rCSAgICB7RFdfTE5FX3NldF9hZGRy ZXNzIGxpbmVfbGFiZWxfMX0KLSsJICAgIHtEV19MTlNfYWR2YW5jZV9saW5lIDE1fQotKwkgICAg e0RXX0xOU19jb3B5fQotKwotKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzJ9 Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQotKwkgICAge0RXX0xOU19jb3B5fQotKwot KwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzN9Ci0rCSAgICB7RFdfTE5TX2Fk dmFuY2VfbGluZSA0fQotKwkgICAge0RXX0xOU19jb3B5fQotKwotKwkgICAge0RXX0xORV9zZXRf YWRkcmVzcyBsaW5lX2xhYmVsXzR9Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQotKwkg ICAge0RXX0xOU19jb3B5fQotKwotKwkgICAge0RXX0xOU19hZHZhbmNlX2xpbmUgLTR9Ci0rCSAg ICB7RFdfTE5TX25lZ2F0ZV9zdG10fQotKwkgICAge0RXX0xOU19jb3B5fQotKwotKwkgICAge0RX X0xORV9zZXRfYWRkcmVzcyBsaW5lX2xhYmVsXzV9Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2VfbGlu ZSAxfQotKwkgICAge0RXX0xOU19jb3B5fQotKwotKwkgICAge0RXX0xORV9zZXRfYWRkcmVzcyBs aW5lX2xhYmVsXzZ9Ci0rCSAgICB7RFdfTE5TX2FkdmFuY2VfbGluZSAxfQotKwkgICAge0RXX0xO U19uZWdhdGVfc3RtdH0KLSsJICAgIHtEV19MTlNfY29weX0KLSsKLSsJICAgIHtEV19MTkVfc2V0 X2FkZHJlc3MgbGluZV9sYWJlbF83fQotKwkgICAge0RXX0xORV9lbmRfc2VxdWVuY2V9Ci0rCX0K LSsgICAgfQotK30KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWlsZWQgdG8gcHJl cGFyZSIgJHt0ZXN0ZmlsZX0gXAotKwkgIFtsaXN0ICRzcmNmaWxlICRhc21fZmlsZSAkc3JjZmls ZTNdICRidWlsZF9vcHRpb25zXSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9yZWlu aXRpYWxpemVfZGlyIC90bXAKLSsKLSsjIFVzaW5nIGFuIGFic29sdXRlIHBhdGggaXMgaW1wb3J0 YW50IHRvIHNlZSB0aGUgYnVnLgotK2dkYl90ZXN0ICJicmVhayAvdG1wLyR7c3JjZmlsZX06MTki ICJCcmVha3BvaW50IC4qIGZpbGUgJHNyY2ZpbGUsIGxpbmUgLioiCgpkaWZmIC0tZ2l0IGEvZ2Ri LWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoIGIvZ2RiLWxpbnV4X3BlcmYtYnVuZGxlLnBhdGNoCmlu ZGV4IDcyOGY0NjMuLmUzY2UxYTMgMTAwNjQ0Ci0tLSBhL2dkYi1saW51eF9wZXJmLWJ1bmRsZS5w YXRjaAorKysgYi9nZGItbGludXhfcGVyZi1idW5kbGUucGF0Y2gKQEAgLTIxMyw3ICsyMTMsNyBA QCBkaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1idHJhY2UuaCBiL2dkYi9uYXQvbGludXgtYnRy YWNlLmgKIGRpZmYgLS1naXQgYS9nZGJzdXBwb3J0L2NvbW1vbi5tNCBiL2dkYnN1cHBvcnQvY29t bW9uLm00CiAtLS0gYS9nZGJzdXBwb3J0L2NvbW1vbi5tNAogKysrIGIvZ2Ric3VwcG9ydC9jb21t b24ubTQKLUBAIC0xNDUsNyArMTQ1LDcgQEAgQUNfREVGVU4oW0dEQl9BQ19DT01NT05dLCBbCitA QCAtMTM1LDcgKzEzNSw3IEBAIEFDX0RFRlVOKFtHREJfQUNfQ09NTU9OXSwgWwogICAgICBBQ19Q UkVQUk9DX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKICAgICNpbmNsdWRlIDxsaW51eC9wZXJm X2V2ZW50Lmg+CiAgICAjaWZuZGVmIFBFUkZfQVRUUl9TSVpFX1ZFUjUKCmRpZmYgLS1naXQgYS9n ZGItcmhiejEzNTA0MzYtdHlwZS1wcmludGVycy1lcnJvci5wYXRjaCBiL2dkYi1yaGJ6MTM1MDQz Ni10eXBlLXByaW50ZXJzLWVycm9yLnBhdGNoCmluZGV4IGQwNmUxMjEuLjMzMjIzMjcgMTAwNjQ0 Ci0tLSBhL2dkYi1yaGJ6MTM1MDQzNi10eXBlLXByaW50ZXJzLWVycm9yLnBhdGNoCisrKyBiL2dk Yi1yaGJ6MTM1MDQzNi10eXBlLXByaW50ZXJzLWVycm9yLnBhdGNoCkBAIC00MiwyMiArNDIsMjQg QEAgZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS10eXBlcHJpbnQuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG8KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktdHlwZXByaW50LnB5IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXR5 cGVwcmludC5weQogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXR5cGVwcmludC5w eQogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXR5cGVwcmludC5weQotQEAgLTE1 LDcgKzE1LDcgQEAKK0BAIC0xNSw4ICsxNSw3IEBACiAgCiAgaW1wb3J0IGdkYgogIAorLQogLWNs YXNzIFJlY29nbml6ZXIob2JqZWN0KToKICtjbGFzcyBTdHJpbmdSZWNvZ25pemVyKG9iamVjdCk6 CiAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgIHNlbGYuZW5hYmxlZCA9IFRydWUK ICAKLUBAIC0zMCw2ICszMCwyNiBAQCBjbGFzcyBTdHJpbmdUeXBlUHJpbnRlcihvYmplY3QpOgor QEAgLTMyLDcgKzMxLDI3IEBAIGNsYXNzIFN0cmluZ1R5cGVQcmludGVyKG9iamVjdCk6CiAgICAg ICAgICBzZWxmLmVuYWJsZWQgPSBUcnVlCiAgCiAgICAgIGRlZiBpbnN0YW50aWF0ZShzZWxmKToK IC0gICAgICAgIHJldHVybiBSZWNvZ25pemVyKCkKICsgICAgICAgIHJldHVybiBTdHJpbmdSZWNv Z25pemVyKCkKICAKKyAKICBnZGIudHlwZV9wcmludGVycy5hcHBlbmQoU3RyaW5nVHlwZVByaW50 ZXIoKSkKICsKICtjbGFzcyBPdGhlclJlY29nbml6ZXIob2JqZWN0KToKCmRpZmYgLS1naXQgYS9n ZGItcmhiejE4OTgyNTItbG9hZGFibGUtc2VjdGlvbi1vdXRzaWRlLUVMRi1zZWdtZW50cy5wYXRj aCBiL2dkYi1yaGJ6MTg5ODI1Mi1sb2FkYWJsZS1zZWN0aW9uLW91dHNpZGUtRUxGLXNlZ21lbnRz LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDE5NDU1Li4wMDAwMDAwCi0t LSBhL2dkYi1yaGJ6MTg5ODI1Mi1sb2FkYWJsZS1zZWN0aW9uLW91dHNpZGUtRUxGLXNlZ21lbnRz LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hF UyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlaXRoIFNlaXR6IDxrZWl0aHNAcmVk aGF0LmNvbT4KLURhdGU6IE1vbiwgMTYgTm92IDIwMjAgMTI6NDI6MDkgLTA1MDAKLVN1YmplY3Q6 IGdkYi1yaGJ6MTg5ODI1Mi1sb2FkYWJsZS1zZWN0aW9uLW91dHNpZGUtRUxGLXNlZ21lbnRzLnBh dGNoCi0KLTs7IEJhY2twb3J0IG9mICJFeGNsdWRlIGRlYnVnaW5mbyBmaWxlcyBmcm9tICdvdXRz aWRlIG9mIEVMRiBzZWdtZW50cycKLTs7IHdhcm5pbmciICAoS2VpdGggU2VpdHopCi0KLSAgICBF eGNsdWRlIGRlYnVnaW5mbyBmaWxlcyBmcm9tICJvdXRzaWRlIG9mIEVMRiBzZWdtZW50cyIgd2Fy bmluZwotCi0gICAgV2hlbiBHREIgbG9hZHMgYW4gRUxGIGZpbGUsIGl0IHdpbGwgd2FybiB3aGVu IGEgc2VjdGlvbiBpcyBub3QgbG9jYXRlZAotICAgIGluIGFuIEVMRiBzZWdtZW50OgotCi0gICAg JCAuL2dkYiAtcSAtaWV4ICJzZXQgYnVpbGQtaWQtdmVyYm9zZSAwIiAtLWV4ICJiIHN5c3RlbWN0 bF9tYWluIiAtZXggInIiIC1iYXRjaCAtLWFyZ3Mgc3lzdGVtY3RsIGtleGVjCi0gICAgQnJlYWtw b2ludCAxIGF0IDB4YzI0ZDogZmlsZSAuLi9zcmMvc3lzdGVtY3RsL3N5c3RlbWN0bC5jLCBsaW5l IDg3NTIuCi0gICAgd2FybmluZzogTG9hZGFibGUgc2VjdGlvbiAiLm5vdGUuZ251LnByb3BlcnR5 IiBvdXRzaWRlIG9mIEVMRiBzZWdtZW50cwotICAgICAgaW4gLmdudV9kZWJ1Z2RhdGEgZm9yIC9s aWI2NC9saWJnY2Nfcy5zby4xCi0gICAgW1RocmVhZCBkZWJ1Z2dpbmcgdXNpbmcgbGlidGhyZWFk X2RiIGVuYWJsZWRdCi0gICAgVXNpbmcgaG9zdCBsaWJ0aHJlYWRfZGIgbGlicmFyeSAiL2xpYjY0 L2xpYnRocmVhZF9kYi5zby4xIi4KLSAgICB3YXJuaW5nOiBMb2FkYWJsZSBzZWN0aW9uICIubm90 ZS5nbnUucHJvcGVydHkiIG91dHNpZGUgb2YgRUxGIHNlZ21lbnRzCi0gICAgICBpbiAuZ251X2Rl YnVnZGF0YSBmb3IgL2xpYjY0L2xpYmNhcC5zby4yCi0gICAgd2FybmluZzogTG9hZGFibGUgc2Vj dGlvbiAiLm5vdGUuZ251LnByb3BlcnR5IiBvdXRzaWRlIG9mIEVMRiBzZWdtZW50cwotICAgICAg aW4gLmdudV9kZWJ1Z2RhdGEgZm9yIC9saWI2NC9saWJhY2wuc28uMQotICAgIHdhcm5pbmc6IExv YWRhYmxlIHNlY3Rpb24gIi5ub3RlLmdudS5wcm9wZXJ0eSIgb3V0c2lkZSBvZiBFTEYgc2VnbWVu dHMKLSAgICAgIGluIC5nbnVfZGVidWdkYXRhIGZvciAvbGliNjQvbGliY3J5cHRzZXR1cC5zby4x MgotICAgIHdhcm5pbmc6IExvYWRhYmxlIHNlY3Rpb24gIi5ub3RlLmdudS5wcm9wZXJ0eSIgb3V0 c2lkZSBvZiBFTEYgc2VnbWVudHMKLSAgICAgIGluIC5nbnVfZGVidWdkYXRhIGZvciAvbGliNjQv bGliZ2NyeXB0LnNvLjIwCi0gICAgd2FybmluZzogTG9hZGFibGUgc2VjdGlvbiAiLm5vdGUuZ251 LnByb3BlcnR5IiBvdXRzaWRlIG9mIEVMRiBzZWdtZW50cwotICAgICAgaW4gLmdudV9kZWJ1Z2Rh dGEgZm9yIC9saWI2NC9saWJpcDR0Yy5zby4yCi0gICAgW3NuaXBdCi0gICAgVGhpcyBoYXMgZmVh dHVyZSBoYXMgYWxzbyBiZWVuIHJlcG9ydGVkIGJ5IHZhcmlvdXMgdXNlcnMsIG1vc3Qgbm90YWJs eQotICAgIHRoZSBGZWRvcmEtRU9MJ2QgYnVnIDE1NTMwODYuCi0KLSAgICBNYXJrIFdpZWxhYXJk IGV4cGxhaW5zIHRoZSBpc3N1ZSBxdWl0ZSBuaWNlbHkgaW4KLQotICAgICAgIGh0dHBzOi8vc291 cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI0NzE3I2MyCi0KLSAgICBUaGUg c2hvcnQgb2YgaXQgaXMsIHRoZSBFTEYgcHJvZ3JhbSBoZWFkZXJzIGZvciBkZWJ1Z2luZm8gZmls ZXMgYXJlCi0gICAgbm90IHN1aXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgdXNlIGNhc2UuIENvbnNl cXVlbnRseSwgdGhlIHdhcm5pbmcKLSAgICBnZW5lcmF0ZWQgYWJvdmUgcmVhbGx5IGlzIHVzZWxl c3MgYW5kIHNob3VsZCBiZSBpZ25vcmVkLgotCi0gICAgVGhpcyBwYXRjaCBmb2xsb3dzIHRoZSBz YW1lIGhldXJpc3RpYyB0aGF0IEJGRCBpdHNlbGYgdXNlcy4KLQotICAgIGdkYi9DaGFuZ2VMb2cK LSAgICAyMDIwLTExLTEzICBLZWl0aCBTZWl0eiAgPGtlaXRoc0ByZWRoYXQuY29tPgotCi0gICAg ICAgICAgICBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE1NTMw ODYKLSAgICAgICAgICAgICogZWxmcmVhZC5jIChlbGZfc3ltZmlsZV9zZWdtZW50cyk6IE9taXQg IkxvYWRhYmxlIHNlY3Rpb24gLi4uCi0gICAgICAgICAgICBvdXRzaWRlIG9mIEVMRiBzZWdtZW50 cyIgd2FybmluZyBmb3IgZGVidWdpbgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dk Yi9lbGZyZWFkLmMKLS0tLSBhL2dkYi9lbGZyZWFkLmMKLSsrKyBiL2dkYi9lbGZyZWFkLmMKLUBA IC0xNDcsNyArMTQ3LDEyIEBAIGVsZl9zeW1maWxlX3NlZ21lbnRzIChiZmQgKmFiZmQpCi0gCSBS ZWFsVmlldykgdXNlIFNIVF9OT0JJVFMgZm9yIHVuaW5pdGlhbGl6ZWQgZGF0YS4gIFNpbmNlIGl0 IGlzCi0gCSB1bmluaXRpYWxpemVkLCBpdCBkb2Vzbid0IG5lZWQgYSBwcm9ncmFtIGhlYWRlci4g IFN1Y2gKLSAJIGJpbmFyaWVzIGFyZSBub3QgcmVsb2NhdGFibGUuICAqLwotLSAgICAgIGlmIChi ZmRfc2VjdGlvbl9zaXplIChzZWN0KSA+IDAgJiYgaiA9PSBudW1fc2VnbWVudHMKLSsKLSsgICAg ICAvKiBFeGNsdWRlIGRlYnVnaW5mbyBmaWxlcyBmcm9tIHRoaXMgd2FybmluZywgdG9vLCBzaW5j ZSB0aG9zZQotKwkgYXJlIG9mdGVuIG5vdCBzdHJpY3RseSBjb21wbGlhbnQgd2l0aCB0aGUgc3Rh bmRhcmQuIFNlZSwgZS5nLiwKLSsJIGxkLzI0NzE3IGZvciBtb3JlIGRpc2N1c3Npb24uICAqLwot KyAgICAgIGlmICghaXNfZGVidWdpbmZvX2ZpbGUgKGFiZmQpCi0rCSAgJiYgYmZkX3NlY3Rpb25f c2l6ZSAoc2VjdCkgPiAwICYmIGogPT0gbnVtX3NlZ21lbnRzCi0gCSAgJiYgKGJmZF9zZWN0aW9u X2ZsYWdzIChzZWN0KSAmIFNFQ19MT0FEKSAhPSAwKQotIAl3YXJuaW5nIChfKCJMb2FkYWJsZSBz ZWN0aW9uIFwiJXNcIiBvdXRzaWRlIG9mIEVMRiBzZWdtZW50cyIpLAotIAkJIGJmZF9zZWN0aW9u X25hbWUgKHNlY3QpKTsKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5MDU5OTYtZml4LW9mZi1ieS1v bmUtZXJyb3ItaW4tYWRhX2ZvbGRfbmFtZS5wYXRjaCBiL2dkYi1yaGJ6MTkwNTk5Ni1maXgtb2Zm LWJ5LW9uZS1lcnJvci1pbi1hZGFfZm9sZF9uYW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA1ZTFiYzU3Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTkwNTk5Ni1maXgtb2Zm LWJ5LW9uZS1lcnJvci1pbi1hZGFfZm9sZF9uYW1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs ODIgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgOCBE ZWMgMjAyMCAxNDowNzo0NSAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTA1OTk2LWZpeC1vZmYt Ynktb25lLWVycm9yLWluLWFkYV9mb2xkX25hbWUucGF0Y2gKLQotOzsgRml4IG9mZi1ieS1vbmUg ZXJyb3IgaW4gYWRhX2ZvbGRfbmFtZS5wYXRjaCAoUkggQlogMTkwNTk5NikKLTs7IFVwc3RyZWFt IHBhdGNoIHByb3Bvc2FsOiBodHRwczovL3NvdXJjZXdhcmUub3JnL3BpcGVybWFpbC9nZGItcGF0 Y2hlcy8yMDIwLURlY2VtYmVyLzE3MzkzNS5odG1sCi07OyA9ZmVkb3JhdGVzdAotCi1GaXggb2Zm LWJ5LW9uZSBlcnJvciBpbiBhZGFfZm9sZF9uYW1lCi0KLUknbSBzZWVpbmcgYSBsaWJzdGRjKysg YXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBydW5uaW5nIEdEQidzICJtYWludCBzZWxmdGVzdCIKLWNv bW1hbmQgd2hlbiBHREIgaXMgY29uZmlndXJlZCB3aXRoIHRoZSBmb2xsb3dpbmcgQ0ZMQUdTIGFu ZCBDWFhGTEFHUyBhcwotcGFydCBvZiB0aGUgY29uZmlndXJlIGxpbmU6Ci0KLSAgQ0ZMQUdTPSct RF9HTElCQ1hYX0RFQlVHIC1nMyAtTzAnIENYWEZMQUdTPSctRF9HTElCQ1hYX0RFQlVHIC1nMyAt TzAnCi0KLVRoaXMgaXMgd2hhdCBJIHNlZSB3aGVuIHJ1bm5pbmcgdGhlIHNlbGYgdGVzdHM6Ci0K LShnZGIpIG1haW50IHNlbGZ0ZXN0Ci1SdW5uaW5nIHNlbGZ0ZXN0IGFhcmNoNjQtYW5hbHl6ZS1w cm9sb2d1ZS4KLVJ1bm5pbmcgc2VsZnRlc3QgYWFyY2g2NC1wcm9jZXNzLXJlY29yZC4KLVJ1bm5p bmcgc2VsZnRlc3QgYXJtLXJlY29yZC4KLVJ1bm5pbmcgc2VsZnRlc3QgYXJtX2FuYWx5emVfcHJv bG9ndWUuCi1SdW5uaW5nIHNlbGZ0ZXN0IGFycmF5X3ZpZXcuCi1SdW5uaW5nIHNlbGZ0ZXN0IGNo aWxkX3BhdGguCi1SdW5uaW5nIHNlbGZ0ZXN0IGNsaV91dGlscy4KLVJ1bm5pbmcgc2VsZnRlc3Qg Y29tbWFuZF9zdHJ1Y3R1cmVfaW52YXJpYW50cy4KLVJ1bm5pbmcgc2VsZnRlc3QgY29weV9iaXR3 aXNlLgotUnVubmluZyBzZWxmdGVzdCBjb3B5X2ludGVnZXJfdG9fc2l6ZS4KLVJ1bm5pbmcgc2Vs ZnRlc3QgY3BfcmVtb3ZlX3BhcmFtcy4KLVJ1bm5pbmcgc2VsZnRlc3QgY3Bfc3ltYm9sX25hbWVf bWF0Y2hlcy4KLVJ1bm5pbmcgc2VsZnRlc3QgZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nLgot L3Vzci9pbmNsdWRlL2MrKy8xMS9zdHJpbmdfdmlldzoyMTE6IGNvbnN0ZXhwciBjb25zdCB2YWx1 ZV90eXBlJiBzdGQ6OmJhc2ljX3N0cmluZ192aWV3PF9DaGFyVCwgX1RyYWl0cz46Om9wZXJhdG9y W10oc3RkOjpiYXNpY19zdHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+OjpzaXplX3R5cGUpIGNv bnN0IFt3aXRoIF9DaGFyVCA9IGNoYXI7IF9UcmFpdHMgPSBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ OyBzdGQ6OmJhc2ljX3N0cmluZ192aWV3PF9DaGFyVCwgX1RyYWl0cz46OmNvbnN0X3JlZmVyZW5j ZSA9IGNvbnN0IGNoYXImOyBzdGQ6OmJhc2ljX3N0cmluZ192aWV3PF9DaGFyVCwgX1RyYWl0cz46 OnNpemVfdHlwZSA9IGxvbmcgdW5zaWduZWQgaW50XTogQXNzZXJ0aW9uICdfX3BvcyA8IHRoaXMt Pl9NX2xlbicgZmFpbGVkLgotQWJvcnRlZCAoY29yZSBkdW1wZWQpCi0KLUhlcmUncyBhIHBhcnRp YWwgc3RhY2sgdHJhY2U6Ci0KLSAgIzAgIDB4MDAwMDdmZmZmNmVmNjI2MiBpbiByYWlzZSAoKSBm cm9tIC9saWI2NC9saWJjLnNvLjYKLSAgIzEgIDB4MDAwMDdmZmZmNmVkZjhhNCBpbiBhYm9ydCAo KSBmcm9tIC9saWI2NC9saWJjLnNvLjYKLSAgIzIgIDB4MDAwMDAwMDAwMDQyNDliZiBpbiBzdGQ6 Ol9fcmVwbGFjZW1lbnRfYXNzZXJ0ICgKLSAgICAgIF9fZmlsZT0weGVmNzQ4MCAiL3Vzci9pbmNs dWRlL2MrKy8xMS9zdHJpbmdfdmlldyIsIF9fbGluZT0yMTEsCi0gICAgICBfX2Z1bmN0aW9uPTB4 ZWY3MzI4ICJjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSYgc3RkOjpiYXNpY19zdHJpbmdfdmll dzxfQ2hhclQsIF9UcmFpdHM+OjpvcGVyYXRvcltdKHN0ZDo6YmFzaWNfc3RyaW5nX3ZpZXc8X0No YXJULCBfVHJhaXRzPjo6c2l6ZV90eXBlKSBjb25zdCBbd2l0aCBfQ2hhclQgPSBjaGFyOyBfVHJh aXRzID0gc3RkOjpjaGFyX3RyYWl0czxjaGFyPjsgc3RkOjpiYSIuLi4sCi0gICAgICBfX2NvbmRp dGlvbj0weGVmNzMxMSAiX19wb3MgPCB0aGlzLT5fTV9sZW4iKQotICAgICAgYXQgL3Vzci9pbmNs dWRlL2MrKy8xMS94ODZfNjQtcmVkaGF0LWxpbnV4L2JpdHMvYysrY29uZmlnLmg6MjYyNAotICAj MyAgMHgwMDAwMDAwMDAwNDUxNzM3IGluIHN0ZDo6YmFzaWNfc3RyaW5nX3ZpZXc8Y2hhciwgc3Rk OjpjaGFyX3RyYWl0czxjaGFyPiA+OjpvcGVyYXRvcltdICh0aGlzPTB4N2ZmZmZmZmZjMjAwLCBf X3Bvcz04KQotICAgICAgYXQgL3Vzci9pbmNsdWRlL2MrKy8xMS9zdHJpbmdfdmlldzoyMTEKLSAg IzQgIDB4MDAwMDAwMDAwMDQzMjlmNSBpbiBhZGFfZm9sZF9uYW1lIChuYW1lPSJmdW5jdGlvbiIp Ci0gICAgICBhdCAvaXJvbndvb2QxL3NvdXJjZXdhcmUtZ2l0L3Jhd2hpZGUtbWFzdGVyL2JsZC8u Li8uLi93b3JrdHJlZS1tYXN0ZXIvZ2RiL2FkYS1sYW5nLmM6OTg4Ci0KLUFuZCwgbG9va2luZyBh dCBmcmFtZSAjNC4uLgotCi0odG9wLWdkYikgdXAgNAotICAgIGF0IC9pcm9ud29vZDEvc291cmNl d2FyZS1naXQvcmF3aGlkZS1tYXN0ZXIvYmxkLy4uLy4uL3dvcmt0cmVlLW1hc3Rlci9nZGIvYWRh LWxhbmcuYzo5ODgKLTk4OAkJZm9sZF9idWZmZXJbaV0gPSB0b2xvd2VyIChuYW1lW2ldKTsKLSh0 b3AtZ2RiKSBwIGkKLSQxID0gOAotKHRvcC1nZGIpIHAgbmFtZS5zaXplKCkKLSQyID0gOAotCi1N eSBwYXRjaCBhZGp1c3RzIHRoZSBjb21wYXJpc29uIHRvIG9ubHkgY29weSBuYW1lLnNpemUoKSBj aGFyYWN0ZXJzCi1mcm9tIHRoZSBzdHJpbmcuICBJJ3ZlIGFkZGVkIGEgc2VwYXJhdGUgc3RhdGVt ZW50IGZvciBOVUwgY2hhcmFjdGVyCi10ZXJtaW5hdGlvbiBvZiBmb2xkX2J1ZmZlcltdLgotCi1n ZGIvQ2hhbmdlTG9nOgotCi0JKiBhZGEtbGFuZy5jIChhZGFfZm9sZF9uYW1lKTogRml4IG9mZi1i eS1vbmUgZXJyb3IuCi0KLWRpZmYgLS1naXQgYS9nZGIvYWRhLWxhbmcuYyBiL2dkYi9hZGEtbGFu Zy5jCi0tLS0gYS9nZGIvYWRhLWxhbmcuYwotKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMDA2 LDggKzEwMDYsOSBAQCBhZGFfZm9sZF9uYW1lIChnZGI6OnN0cmluZ192aWV3IG5hbWUpCi0gICAg IHsKLSAgICAgICBpbnQgaTsKLSAKLS0gICAgICBmb3IgKGkgPSAwOyBpIDw9IGxlbjsgaSArPSAx KQotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMSkKLSAgICAgICAgIGZvbGRfYnVm ZmVyW2ldID0gdG9sb3dlciAobmFtZVtpXSk7Ci0rICAgICAgZm9sZF9idWZmZXJbaV0gPSAnXDAn OwotICAgICB9Ci0gCi0gICByZXR1cm4gZm9sZF9idWZmZXI7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJo YnoxOTA5OTAyLWZyYW1lX2lkX3AtYXNzZXJ0LTEucGF0Y2ggYi9nZGItcmhiejE5MDk5MDItZnJh bWVfaWRfcC1hc3NlcnQtMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRk OTlhNS4uMDAwMDAwMAotLS0gYS9nZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5MyArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGVkcm8gQWx2ZXMgPHBlZHJvQHBhbHZl cy5uZXQ+Ci1EYXRlOiBGcmksIDMwIE9jdCAyMDIwIDE4OjI2OjE1ICswMTAwCi1TdWJqZWN0OiBn ZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMS5wYXRjaAotCi07OyBCYWNrcG9ydCBm aXggZm9yIGZyYW1lX2lkX3AgYXNzZXJ0aW9uIGZhaWx1cmUgKFJIIEJaIDE5MDk5MDIpLgotCi1N YWtlIHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkJ3MgY2R0b3JzIGV4Y2VwdGlvbiBmcmVl IChSRkMpCi0KLUlmIHRoZSByZW1vdGUgdGFyZ2V0IGNsb3NlcyB3aGlsZSB3ZSdyZSByZWFkaW5n IHJlZ2lzdGVycy9tZW1vcnkgZm9yCi1yZXN0b3JpbmcgdGhlIHNlbGVjdGVkIGZyYW1lIGluIHNj b3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkJ3MgZHRvciwKLXRoZSBjb3JyZXNwb25kaW5nIFRB UkdFVF9DTE9TRV9FUlJPUiBlcnJvciBpcyBzd2FsbG93ZWQgYnkgdGhlCi1zY29wZWRfcmVzdG9y ZV9jdXJyZW50X3RocmVhZCdzIGR0b3IsIGJlY2F1c2UgbGV0dGluZyBleGNlcHRpb25zCi1lc2Nh cGUgZnJvbSBhIGR0b3IgaXMgYmFkLiAgSXQgaXNuJ3QgZ3JlYXQgdG8gbG9zZSB0aGF0IGVycm9y cyBsaWtlCi10aGF0LCB0aG91Z2guICBJJ3ZlIGJlZW4gdGhpbmtpbmcgYWJvdXQgaG93IHRvIGF2 b2lkIGl0LCBhbmQgSSBjYW1lIHVwCi13aXRoIHRoaXMgcGF0Y2guCi0KLVRoZSBpZGVhIGhlcmUg aXMgdG8gbWFrZSBzY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCdzIGR0b3IgZG8gYXMKLWxp dHRsZSBhcyBwb3NzaWJsZSwgdG8gYXZvaWQgYW55IHdvcmsgdGhhdCBtaWdodCB0aHJvdyBpbiB0 aGUgZmlyc3QKLXBsYWNlLiAgQW5kIHRvIGRvIHRoYXQsIGluc3RlYWQgb2YgaGF2aW5nIHRoZSBk dG9yIGNhbGwKLXJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUsIHdoaWNoIHJlLWZpbmRzIHRoZSBwcmV2 aW91c2x5IHNlbGVjdGVkIGZyYW1lLAotanVzdCByZWNvcmQgdGhlIGZyYW1lX2lkL2xldmVsIG9m IHRoZSBkZXNpcmVkIHNlbGVjdGVkIGZyYW1lLCBhbmQgaGF2ZQotZ2V0X3NlbGVjdGVkX2ZyYW1l IGZpbmQgdGhlIGZyYW1lIHRoZSBuZXh0IHRpbWUgaXQgaXMgY2FsbGVkLiAgSW4KLWVmZmVjdCwg dGhpcyBpbXBsZW1lbnRzIG1vc3Qgb2YgQ2FnbmV5J3Mgc3VnZ2VzdGlvbiwgaGVyZToKLQotICAv KiBPbiBkZW1hbmQsIGNyZWF0ZSB0aGUgc2VsZWN0ZWQgZnJhbWUgYW5kIHRoZW4gcmV0dXJuIGl0 LiAgSWYgdGhlCi0gICAgIHNlbGVjdGVkIGZyYW1lIGNhbiBub3QgYmUgY3JlYXRlZCwgdGhpcyBm dW5jdGlvbiBwcmludHMgdGhlbiB0aHJvd3MKLSAgICAgYW4gZXJyb3IuICBXaGVuIE1FU1NBR0Ug aXMgbm9uLU5VTEwsIHVzZSBpdCBmb3IgdGhlIGVycm9yIG1lc3NhZ2UsCi0gICAgIG90aGVyd2l6 ZSB1c2UgYSBnZW5lcmljIGVycm9yIG1lc3NhZ2UuICAqLwotICAvKiBGSVhNRTogY2FnbmV5LzIw MDItMTEtMjg6IEF0IHByZXNlbnQsIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0ZWQKLSAgICAgZnJh bWUsIHRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVybnMgdGhlIGN1cnJlbnQgKGlubmVyIG1vc3Qp IGZyYW1lLgotICAgICBJdCBzaG91bGQgaW5zdGVhZCwgd2hlbiBhIHRocmVhZCBoYXMgcHJldmlv dXNseSBoYWQgaXRzIGZyYW1lCi0gICAgIHNlbGVjdGVkIChidXQgbm90IHJlc3VtZWQpIGFuZCB0 aGUgZnJhbWUgY2FjaGUgaW52YWxpZGF0ZWQsIGZpbmQKLSAgICAgYW5kIHRoZW4gcmV0dXJuIHRo YXQgdGhyZWFkJ3MgcHJldmlvdXNseSBzZWxlY3RlZCBmcmFtZS4gICovCi0gIGV4dGVybiBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZ2V0X3NlbGVjdGVkX2ZyYW1lIChjb25zdCBjaGFyICptZXNzYWdlKTsK LQotVGhlIG9ubHkgdGhpbmcgbWlzc2luZyB0byBmdWxseSBpbXBsZW1lbnQgdGhhdCB3b3VsZCBi ZSB0byBtYWtlCi1yZWluaXRfZnJhbWVfY2FjaGUganVzdCBjbGVhciBzZWxlY3RlZF9mcmFtZSBp bnN0ZWFkIG9mIGNhbGxpbmcKLXNlbGVjdF9mcmFtZShOVUxMKSwgYW5kIHRoZSBjYWxsIHNlbGVj dF9mcmFtZShOVUxMKSBleHBsaWNpdGx5IGluIHRoZQotcGxhY2VzIHdoZXJlIHdlIHJlYWxseSB3 YW50ZWQgcmVpbml0X2ZyYW1lX2NhY2hlIHRvIGdvIGJhY2sgdG8gdGhlCi1jdXJyZW50IGZyYW1l IHRvby4gIFRoYXQgY2FuIGRvbmUgc2VwYXJhdGVseSwgdGhvdWdoLCBJJ20gbm90Ci1wcm9wb3Np bmcgdG8gZG8gdGhhdCBpbiB0aGlzIHBhdGNoLgotCi1Ob3RlIHRoYXQgdGhpcyBwYXRjaCByZW5h bWVzIHJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgdG8KLWxvb2t1cF9zZWxlY3RlZF9mcmFtZSwgYW5k IGFkZHMgYSBuZXcgcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSBmdW5jdGlvbgotdGhhdCBkb2Vzbid0 IHRocm93LCB0byBiZSBwYWlyZWQgd2l0aCB0aGUgYWxzby1uZXcgc2F2ZV9zZWxlY3RlZF9mcmFt ZQotZnVuY3Rpb24uCi0KLVRoZXJlJ3MgYSByZXN0b3JlX3NlbGVjdGVkX2ZyYW1lIGZ1bmN0aW9u IGluIGluZnJ1bi5jIHRoYXQgSSB0aGluayBjYW4KLWJlIHJlcGxhY2VkIGJ5IHRoZSBuZXcgb25l IGluIGZyYW1lLmMuCi0KLUFsc28gZG9uZSBpbiB0aGlzIHBhdGNoIGlzIG1ha2UgdGhlIGdldF9z ZWxlY3RlZF9mcmFtZSdzIHBhcmFtZXRlciBiZQotb3B0aW9uYWwsIHNvIHRoYXQgd2UgZG9uJ3Qg aGF2ZSB0byBwYXNzIGRvd24gbnVsbHB0ciBleHBsaWNpdGx5IGFsbAotb3ZlciB0aGUgcGxhY2Uu Ci0KLWxvb2t1cF9zZWxlY3RlZF9mcmFtZSBzaG91bGQgcmVhbGx5IG1vdmUgZnJvbSB0aHJlYWQu YyB0byBmcmFtZS5jLCBidXQKLUkgZGlkbid0IGRvIHRoYXQgaGVyZSwganVzdCB0byBhdm9pZCBj aHVybiBpbiB0aGUgcGF0Y2ggd2hpbGUgaXQKLWNvbGxlY3RzIGNvbW1lbnRzLiAgSSBkaWQgbWFr ZSBpdCBleHRlcm4gYW5kIGRlY2xhcmVkIGl0IGluIGZyYW1lLmgKLWFscmVhZHksIHByZXBhcmlu ZyBmb3IgdGhlIG1vdmUuICBJIHdpbGwgZG8gdGhlIG1vdmUgYXMgYSBmb2xsb3cgdXAKLXBhdGNo IGlmIHBlb3BsZSBhZ3JlZSB3aXRoIHRoaXMgYXBwcm9hY2guCi0KLUluY2lkZW50YWxseSwgdGhp cyBwYXRjaCBhbG9uZSB3b3VsZCBmaXggdGhlIGNyYXNoZXMgZml4ZWQgYnkgdGhlCi1wcmV2aW91 cyBwYXRjaGVzIGluIHRoZSBzZXJpZXMsIGJlY2F1c2Ugd2l0aCB0aGlzLAotc2NvcGVkX3Jlc3Rv cmVfY3VycmVudF90aHJlYWQncyBjb25zdHJ1Y3RvciBkb2Vzbid0IHRocm93IGVpdGhlci4KLQot Z2RiL0NoYW5nZUxvZzoKLQotCSogYmxvY2tmcmFtZS5jIChibG9ja19pbm5lcm1vc3RfZnJhbWUp OiBVc2UgZ2V0X3NlbGVjdGVkX2ZyYW1lLgotCSogZnJhbWUuYwotCShzY29wZWRfcmVzdG9yZV9z ZWxlY3RlZF9mcmFtZTo6c2NvcGVkX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUpOgotCVVzZSBzYXZl X3NlbGVjdGVkX2ZyYW1lLiAgU2F2ZSBsYW5ndWFnZSBhcyB3ZWxsLgotCShzY29wZWRfcmVzdG9y ZV9zZWxlY3RlZF9mcmFtZTo6fnNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lKToKLQlVc2Ug cmVzdG9yZV9zZWxlY3RlZF9mcmFtZSwgYW5kIHJlc3RvcmUgbGFuZ3VhZ2UgYXMgd2VsbC4KLQko c2VsZWN0ZWRfZnJhbWVfaWQsIHNlbGVjdGVkX2ZyYW1lX2xldmVsKTogTmV3LgotCShzZWxlY3Rl ZF9mcmFtZSk6IFVwZGF0ZSBjb21tZW50cy4KLQkoc2F2ZV9zZWxlY3RlZF9mcmFtZSwgcmVzdG9y ZV9zZWxlY3RlZF9mcmFtZSk6IE5ldy4KLQkoZ2V0X3NlbGVjdGVkX2ZyYW1lKTogVXNlIGxvb2t1 cF9zZWxlY3RlZF9mcmFtZS4KLQkoZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCk6IERlbGV0ZS4K LQkoc2VsZWN0X2ZyYW1lKTogUmVjb3JkIHNlbGVjdGVkX2ZyYW1lX2xldmVsIGFuZCBzZWxlY3Rl ZF9mcmFtZV9pZC4KLQkqIGZyYW1lLmggKHNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lKSA8 bV9sZXZlbCwgbV9sYW5nPjogTmV3Ci0JZmllbGRzLgotCShnZXRfc2VsZWN0ZWRfZnJhbWUpOiBN YWtlICdtZXNzYWdlJyBwYXJhbWV0ZXIgb3B0aW9uYWwuCi0JKGdldF9zZWxlY3RlZF9mcmFtZV9p Zl9zZXQpOiBEZWxldGUgZGVjbGFyYXRpb24uCi0JKHNlbGVjdF9mcmFtZSk6IFVwZGF0ZSBjb21t ZW50cy4KLQkoc2F2ZV9zZWxlY3RlZF9mcmFtZSwgcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSkKLQko bG9va3VwX3NlbGVjdGVkX2ZyYW1lKTogRGVjbGFyZS4KLQkqIGdkYnRocmVhZC5oIChzY29wZWRf cmVzdG9yZV9jdXJyZW50X3RocmVhZCkgPG1fbGFuZz46IE5ldyBmaWVsZC4KLQkqIGluZnJ1bi5j IChzdHJ1Y3QgaW5mY2FsbF9jb250cm9sX3N0YXRlKSA8c2VsZWN0ZWRfZnJhbWVfbGV2ZWw+Ogot CU5ldyBmaWVsZC4KLQkoc2F2ZV9pbmZjYWxsX2NvbnRyb2xfc3RhdGUpOiBVc2Ugc2F2ZV9zZWxl Y3RlZF9mcmFtZS4KLQkocmVzdG9yZV9zZWxlY3RlZF9mcmFtZSk6IERlbGV0ZS4KLQkocmVzdG9y ZV9pbmZjYWxsX2NvbnRyb2xfc3RhdGUpOiBVc2UgcmVzdG9yZV9zZWxlY3RlZF9mcmFtZS4KLQkq IHN0YWNrLmMgKHNlbGVjdF9mcmFtZV9jb21tYW5kX2NvcmUsIGZyYW1lX2NvbW1hbmRfY29yZSk6 IFVzZQotCWdldF9zZWxlY3RlZF9mcmFtZS4KLQkqIHRocmVhZC5jIChyZXN0b3JlX3NlbGVjdGVk X2ZyYW1lKTogUmVuYW1lIHRvIC4uLgotCShsb29rdXBfc2VsZWN0ZWRfZnJhbWUpOiAuLi4gdGhp cyBhbmQgbWFrZSBleHRlcm4uICBTZWxlY3QgdGhlCi0JY3VycmVudCBmcmFtZSBpZiB0aGUgZnJh bWUgbGV2ZWwgaXMgLTEuCi0JKHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkOjpyZXN0b3Jl KTogQWxzbyByZXN0b3JlIHRoZQotCWxhbmd1YWdlLgotCShzY29wZWRfcmVzdG9yZV9jdXJyZW50 X3RocmVhZDo6fnNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkKToKLQlEb24ndCB0cnkvY2F0 Y2guCi0JKHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkOjpzY29wZWRfcmVzdG9yZV9jdXJy ZW50X3RocmVhZCk6Ci0JU2F2ZSB0aGUgbGFuZ3VhZ2UgYXMgd2VsbC4gIFVzZSBzYXZlX3NlbGVj dGVkX2ZyYW1lLgotCi1DaGFuZ2UtSWQ6IEk3M2ZkMWNmYzQwZDg1MTNjMjhlNTU5NjM4M2I3ZWNk OGJjZmU3MDBmCi0KLWRpZmYgLS1naXQgYS9nZGIvYmxvY2tmcmFtZS5jIGIvZ2RiL2Jsb2NrZnJh bWUuYwotLS0tIGEvZ2RiL2Jsb2NrZnJhbWUuYwotKysrIGIvZ2RiL2Jsb2NrZnJhbWUuYwotQEAg LTQ2NCwxNCArNDY0LDEwIEBAIGZpbmRfZ251X2lmdW5jX3RhcmdldF90eXBlIChDT1JFX0FERFIg cmVzb2x2ZXJfZnVuYWRkcikKLSBzdHJ1Y3QgZnJhbWVfaW5mbyAqCi0gYmxvY2tfaW5uZXJtb3N0 X2ZyYW1lIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKQotIHsKLS0gIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZTsKLS0KLSAgIGlmIChibG9jayA9PSBOVUxMKQotICAgICByZXR1cm4gTlVMTDsK LSAKLS0gIGZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCAoKTsKLS0gIGlmIChmcmFt ZSA9PSBOVUxMKQotLSAgICBmcmFtZSA9IGdldF9jdXJyZW50X2ZyYW1lICgpOwotKyAgZnJhbWVf aW5mbyAqZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKCk7Ci0gICB3aGlsZSAoZnJhbWUgIT0g TlVMTCkKLSAgICAgewotICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqZnJhbWVfYmxvY2sgPSBn ZXRfZnJhbWVfYmxvY2sgKGZyYW1lLCBOVUxMKTsKLWRpZmYgLS1naXQgYS9nZGIvZnJhbWUuYyBi L2dkYi9mcmFtZS5jCi0tLS0gYS9nZGIvZnJhbWUuYwotKysrIGIvZ2RiL2ZyYW1lLmMKLUBAIC0z MTcsMTcgKzMxNywxNSBAQCBmcmFtZV9zdGFzaF9pbnZhbGlkYXRlICh2b2lkKQotIC8qIFNlZSBm cmFtZS5oICAqLwotIHNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lOjpzY29wZWRfcmVzdG9y ZV9zZWxlY3RlZF9mcmFtZSAoKQotIHsKLS0gIG1fZmlkID0gZ2V0X2ZyYW1lX2lkIChnZXRfc2Vs ZWN0ZWRfZnJhbWUgKE5VTEwpKTsKLSsgIG1fbGFuZyA9IGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xh bmd1YWdlOwotKyAgc2F2ZV9zZWxlY3RlZF9mcmFtZSAoJm1fZmlkLCAmbV9sZXZlbCk7Ci0gfQot IAotIC8qIFNlZSBmcmFtZS5oICAqLwotIHNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lOjp+ c2NvcGVkX3Jlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKCkKLSB7Ci0tICBmcmFtZV9pbmZvICpmcmFt ZSA9IGZyYW1lX2ZpbmRfYnlfaWQgKG1fZmlkKTsKLS0gIGlmIChmcmFtZSA9PSBOVUxMKQotLSAg ICB3YXJuaW5nIChfKCJVbmFibGUgdG8gcmVzdG9yZSBwcmV2aW91c2x5IHNlbGVjdGVkIGZyYW1l LiIpKTsKLS0gIGVsc2UKLS0gICAgc2VsZWN0X2ZyYW1lIChmcmFtZSk7Ci0rICByZXN0b3JlX3Nl bGVjdGVkX2ZyYW1lIChtX2ZpZCwgbV9sZXZlbCk7Ci0rICBzZXRfbGFuZ3VhZ2UgKG1fbGFuZyk7 Ci0gfQotIAotIC8qIEZsYWcgdG8gY29udHJvbCBkZWJ1Z2dpbmcuICAqLwotQEAgLTE2ODUsMTAg KzE2ODMsNjMgQEAgZ2V0X2N1cnJlbnRfZnJhbWUgKHZvaWQpCi0gfQotIAotIC8qIFRoZSAic2Vs ZWN0ZWQiIHN0YWNrIGZyYW1lIGlzIHVzZWQgYnkgZGVmYXVsdCBmb3IgbG9jYWwgYW5kIGFyZwot LSAgIGFjY2Vzcy4gIE1heSBiZSB6ZXJvLCBmb3Igbm8gc2VsZWN0ZWQgZnJhbWUuICAqLwotLQot KyAgIGFjY2Vzcy4KLSsKLSsgICBUaGUgInNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgiIGZvciB0aGUg c2VsZWN0ZWQgZnJhbWUgaXMgdGhlCi0rICAgU0VMRUNURURfRlJBTUVfSUQgLyBTRUxFQ1RFRF9G UkFNRV9MRVZFTCBwYWlyLgotKwotKyAgIEZyYW1lIElEcyBjYW4gYmUgc2F2ZWQvcmVzdG9yZWQg YWNyb3NzIHJlaW5pdGlhbGl6aW5nIHRoZSBmcmFtZQotKyAgIGNhY2hlLCB3aGlsZSBmcmFtZV9p bmZvIHBvaW50ZXJzIGNhbid0IChmcmFtZV9pbmZvIG9iamVjdHMgYXJlCi0rICAgaW52YWxpZGF0 ZWQpLiAgSWYgd2Uga25vdyB0aGUgY29ycmVzcG9uZGluZyBmcmFtZV9pbmZvIG9iamVjdCwgaXQK LSsgICBpcyBjYWNoZWQgaW4gU0VMRUNURURfRlJBTUUuCi0rCi0rICAgSWYgU0VMRUNURURfRlJB TUVfSUQgLyBTRUxFQ1RFRF9GUkFNRV9MRVZFTCBhcmUgbnVsbF9mcmFtZV9pZCAvIC0xLAotKyAg IGFuZCB0aGUgdGFyZ2V0IGhhcyBzdGFjayBhbmQgaXMgc3RvcHBlZCwgdGhlIHNlbGVjdGVkIGZy YW1lIGlzIHRoZQotKyAgIGN1cnJlbnQgKGlubmVybW9zdCkgZnJhbWUuICBUaGlzIG1lYW5zIHRo YXQgU0VMRUNURURfRlJBTUVfTEVWRUwgaXMKLSsgICBuZXZlciAwIGFuZCBTRUxFQ1RFRF9GUkFN RV9JRCBpcyBuZXZlciB0aGUgSUQgb2YgdGhlIGlubmVybW9zdAotKyAgIGZyYW1lLgotKwotKyAg IElmIFNFTEVDVEVEX0ZSQU1FX0lEIC8gU0VMRUNURURfRlJBTUVfTEVWRUwgYXJlIG51bGxfZnJh bWVfaWQgLyAtMSwKLSsgICBhbmQgdGhlIHRhcmdldCBoYXMgbm8gc3RhY2sgb3IgaXMgZXhlY3V0 aW5nLCB0aGVuIHRoZXJlJ3Mgbm8KLSsgICBzZWxlY3RlZCBmcmFtZS4gICovCi0rc3RhdGljIGZy YW1lX2lkIHNlbGVjdGVkX2ZyYW1lX2lkID0gbnVsbF9mcmFtZV9pZDsKLStzdGF0aWMgaW50IHNl bGVjdGVkX2ZyYW1lX2xldmVsID0gLTE7Ci0rCi0rLyogVGhlIGNhY2hlZCBmcmFtZV9pbmZvIG9i amVjdCBwb2ludGluZyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuCi0rICAgTG9va2VkIHVwIG9uIGRl bWFuZCBieSBnZXRfc2VsZWN0ZWRfZnJhbWUuICAqLwotIHN0YXRpYyBzdHJ1Y3QgZnJhbWVfaW5m byAqc2VsZWN0ZWRfZnJhbWU7Ci0gCi0rLyogU2VlIGZyYW1lLmguICAqLwotKwotK3ZvaWQKLStz YXZlX3NlbGVjdGVkX2ZyYW1lIChmcmFtZV9pZCAqZnJhbWVfaWQsIGludCAqZnJhbWVfbGV2ZWwp Ci0rICBub2V4Y2VwdAotK3sKLSsgICpmcmFtZV9pZCA9IHNlbGVjdGVkX2ZyYW1lX2lkOwotKyAg KmZyYW1lX2xldmVsID0gc2VsZWN0ZWRfZnJhbWVfbGV2ZWw7Ci0rfQotKwotKy8qIFNlZSBmcmFt ZS5oLiAgKi8KLSsKLSt2b2lkCi0rcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoZnJhbWVfaWQgZnJh bWVfaWQsIGludCBmcmFtZV9sZXZlbCkKLSsgIG5vZXhjZXB0Ci0rewotKyAgLyogc2F2ZV9zZWxl Y3RlZF9mcmFtZSBuZXZlciByZXR1cm5zIGxldmVsID09IDAsIHNvIHdlIHNob3VsZG4ndCBzZWUK LSsgICAgIGl0IGhlcmUgZWl0aGVyLiAgKi8KLSsgIGdkYl9hc3NlcnQgKGZyYW1lX2xldmVsICE9 IDApOwotKwotKyAgLyogRlJBTUVfSUQgY2FuIGJlIG51bGxfZnJhbWVfaWQgb25seSBJRkYgZnJh bWVfbGV2ZWwgaXMgLTEuICAqLwotKyAgZ2RiX2Fzc2VydCAoKGZyYW1lX2xldmVsID09IC0xICYm ICFmcmFtZV9pZF9wIChmcmFtZV9pZCkpCi0rCSAgICAgIHx8IChmcmFtZV9sZXZlbCAhPSAtMSAm JiBmcmFtZV9pZF9wIChmcmFtZV9pZCkpKTsKLSsKLSsgIHNlbGVjdGVkX2ZyYW1lX2lkID0gZnJh bWVfaWQ7Ci0rICBzZWxlY3RlZF9mcmFtZV9sZXZlbCA9IGZyYW1lX2xldmVsOwotKwotKyAgLyog V2lsbCBiZSBsb29rZWQgdXAgbGF0ZXIgYnkgZ2V0X3NlbGVjdGVkX2ZyYW1lLiAgKi8KLSsgIHNl bGVjdGVkX2ZyYW1lID0gbnVsbHB0cjsKLSt9Ci0rCi0gYm9vbAotIGhhc19zdGFja19mcmFtZXMg KCkKLSB7Ci1AQCAtMTcxNSw5ICsxNzY2LDcgQEAgaGFzX3N0YWNrX2ZyYW1lcyAoKQotICAgcmV0 dXJuIHRydWU7Ci0gfQotIAotLS8qIFJldHVybiB0aGUgc2VsZWN0ZWQgZnJhbWUuICBBbHdheXMg bm9uLU5VTEwgKHVubGVzcyB0aGVyZSBpc24ndCBhbgotLSAgIGluZmVyaW9yIHN1ZmZpY2llbnQg Zm9yIGNyZWF0aW5nIGEgZnJhbWUpIGluIHdoaWNoIGNhc2UgYW4gZXJyb3IgaXMKLS0gICB0aHJv d24uICAqLwotKy8qIFNlZSBmcmFtZS5oLiAgKi8KLSAKLSBzdHJ1Y3QgZnJhbWVfaW5mbyAqCi0g Z2V0X3NlbGVjdGVkX2ZyYW1lIChjb25zdCBjaGFyICptZXNzYWdlKQotQEAgLTE3MjYsMjQgKzE3 NzUsMTQgQEAgZ2V0X3NlbGVjdGVkX2ZyYW1lIChjb25zdCBjaGFyICptZXNzYWdlKQotICAgICB7 Ci0gICAgICAgaWYgKG1lc3NhZ2UgIT0gTlVMTCAmJiAhaGFzX3N0YWNrX2ZyYW1lcyAoKSkKLSAJ ZXJyb3IgKCgiJXMiKSwgbWVzc2FnZSk7Ci0tICAgICAgLyogSGV5ISAgRG9uJ3QgdHJ1c3QgdGhp cy4gIEl0IHNob3VsZCByZWFsbHkgYmUgcmUtZmluZGluZyB0aGUKLS0JIGxhc3Qgc2VsZWN0ZWQg ZnJhbWUgb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0aHJlYWQuICBUaGlzLAotLQkgdGhvdWdo LCBpcyBiZXR0ZXIgdGhhbiBub3RoaW5nLiAgKi8KLS0gICAgICBzZWxlY3RfZnJhbWUgKGdldF9j dXJyZW50X2ZyYW1lICgpKTsKLSsKLSsgICAgICBsb29rdXBfc2VsZWN0ZWRfZnJhbWUgKHNlbGVj dGVkX2ZyYW1lX2lkLCBzZWxlY3RlZF9mcmFtZV9sZXZlbCk7Ci0gICAgIH0KLSAgIC8qIFRoZXJl IGlzIGFsd2F5cyBhIGZyYW1lLiAgKi8KLSAgIGdkYl9hc3NlcnQgKHNlbGVjdGVkX2ZyYW1lICE9 IE5VTEwpOwotICAgcmV0dXJuIHNlbGVjdGVkX2ZyYW1lOwotIH0KLSAKLS0vKiBJZiB0aGVyZSBp cyBhIHNlbGVjdGVkIGZyYW1lLCByZXR1cm4gaXQuICBPdGhlcndpc2UsIHJldHVybiBOVUxMLiAg Ki8KLS0KLS1zdHJ1Y3QgZnJhbWVfaW5mbyAqCi0tZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCAo dm9pZCkKLS17Ci0tICByZXR1cm4gc2VsZWN0ZWRfZnJhbWU7Ci0tfQotLQotIC8qIFRoaXMgaXMg YSB2YXJpYW50IG9mIGdldF9zZWxlY3RlZF9mcmFtZSgpIHdoaWNoIGNhbiBiZSBjYWxsZWQgd2hl bgotICAgIHRoZSBpbmZlcmlvciBkb2VzIG5vdCBoYXZlIGEgZnJhbWU7IGluIHRoYXQgY2FzZSBp dCB3aWxsIHJldHVybgotICAgIE5VTEwgaW5zdGVhZCBvZiBjYWxsaW5nIGVycm9yKCkuICAqLwot QEAgLTE3NTYsMTIgKzE3OTUsNDIgQEAgZGVwcmVjYXRlZF9zYWZlX2dldF9zZWxlY3RlZF9mcmFt ZSAodm9pZCkKLSAgIHJldHVybiBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpOwotIH0KLSAKLS0v KiBTZWxlY3QgZnJhbWUgRkkgKG9yIE5VTEwgLSB0byBpbnZhbGlkYXRlIHRoZSBjdXJyZW50IGZy YW1lKS4gICovCi0rLyogU2VsZWN0IGZyYW1lIEZJIChvciBOVUxMIC0gdG8gaW52YWxpZGF0ZSB0 aGUgc2VsZWN0ZWQgZnJhbWUpLiAgKi8KLSAKLSB2b2lkCi0gc2VsZWN0X2ZyYW1lIChzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZmkpCi0gewotICAgc2VsZWN0ZWRfZnJhbWUgPSBmaTsKLSsgIHNlbGVjdGVk X2ZyYW1lX2xldmVsID0gZnJhbWVfcmVsYXRpdmVfbGV2ZWwgKGZpKTsKLSsgIGlmIChzZWxlY3Rl ZF9mcmFtZV9sZXZlbCA9PSAwKQotKyAgICB7Ci0rICAgICAgLyogVHJlYXQgdGhlIGN1cnJlbnQg ZnJhbWUgZXNwZWNpYWxseSAtLSB3ZSB3YW50IHRvIGFsd2F5cwotKwkgc2F2ZS9yZXN0b3JlIGl0 IHdpdGhvdXQgd2FybmluZywgZXZlbiBpZiB0aGUgZnJhbWUgSUQgY2hhbmdlcwotKwkgKHNlZSBs b29rdXBfc2VsZWN0ZWRfZnJhbWUpLiAgRS5nLjoKLSsKLSsJICAvLyBUaGUgY3VycmVudCBmcmFt ZSBpcyBzZWxlY3RlZCwgdGhlIHRhcmdldCBoYWQganVzdCBzdG9wcGVkLgotKwkgIHsKLSsJICAg IHNjb3BlZF9yZXN0b3JlX3NlbGVjdGVkX2ZyYW1lIHJlc3RvcmVfZnJhbWU7Ci0rCSAgICBzb21l X29wZXJhdGlvbl90aGF0X2NoYW5nZXNfdGhlX3N0YWNrICgpOwotKwkgIH0KLSsJICAvLyBzY29w ZWRfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSdzIGR0b3IgcnVucywgYnV0IHRoZQotKwkgIC8vIG9y aWdpbmFsIGZyYW1lX2lkIGNhbid0IGJlIGZvdW5kLiAgTm8gbWF0dGVyIHdoZXRoZXIgaXQKLSsJ ICAvLyBpcyBmb3VuZCBvciBub3QsIHdlIHN0aWxsIGVuZCB1cCB3aXRoIHRoZSBub3ctY3VycmVu dAotKwkgIC8vIGZyYW1lIHNlbGVjdGVkLiAgV2FybmluZyBpbiBsb29rdXBfc2VsZWN0ZWRfZnJh bWUgaW4gdGhpcwotKwkgIC8vIGNhc2Ugc2VlbXMgcG9pbnRsZXNzLgotKwotKwkgQWxzbyBnZXRf ZnJhbWVfaWQgbWF5IGFjY2VzcyB0aGUgdGFyZ2V0J3MgcmVnaXN0ZXJzL21lbW9yeSwKLSsJIGFu ZCB0aHVzIHNraXBwaW5nIGdldF9mcmFtZV9pZCBvcHRpbWl6ZXMgdGhlIGNvbW1vbiBjYXNlLgot KwotKwkgU2F2aW5nIHRoZSBzZWxlY3RlZCBmcmFtZSB0aGlzIHdheSBtYWtlcyBnZXRfc2VsZWN0 ZWRfZnJhbWUKLSsJIGFuZCByZXN0b3JlX2N1cnJlbnRfZnJhbWUgcmV0dXJuL3JlLXNlbGVjdCB3 aGF0ZXZlciBmcmFtZSBpcwotKwkgdGhlIGlubmVybW9zdCAoY3VycmVudCkgdGhlbi4gICovCi0r ICAgICAgc2VsZWN0ZWRfZnJhbWVfbGV2ZWwgPSAtMTsKLSsgICAgICBzZWxlY3RlZF9mcmFtZV9p ZCA9IG51bGxfZnJhbWVfaWQ7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgc2VsZWN0ZWRfZnJhbWVf aWQgPSBnZXRfZnJhbWVfaWQgKGZpKTsKLSsKLSAgIC8qIE5PVEU6IGNhZ25leS8yMDAyLTA1LTA0 OiBGSSBjYW4gYmUgTlVMTC4gIFRoaXMgb2NjdXJzIHdoZW4gdGhlCi0gICAgICBmcmFtZSBpcyBi ZWluZyBpbnZhbGlkYXRlZC4gICovCi0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2ZyYW1lLmggYi9nZGIv ZnJhbWUuaAotLS0tIGEvZ2RiL2ZyYW1lLmgKLSsrKyBiL2dkYi9mcmFtZS5oCi1AQCAtMTg2LDgg KzE4NiwxNCBAQCBjbGFzcyBzY29wZWRfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZQotIAotIHByaXZh dGU6Ci0gCi0tICAvKiBUaGUgSUQgb2YgdGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgZnJhbWUuICAq LwotKyAgLyogVGhlIElEIGFuZCBsZXZlbCBvZiB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCBmcmFt ZS4gICovCi0gICBzdHJ1Y3QgZnJhbWVfaWQgbV9maWQ7Ci0rICBpbnQgbV9sZXZlbDsKLSsKLSsg IC8qIFNhdmUvcmVzdG9yZSB0aGUgbGFuZ3VhZ2UgYXMgd2VsbCwgYmVjYXVzZSBzZWxlY3Rpbmcg YSBmcmFtZQotKyAgICAgY2hhbmdlcyB0aGUgY3VycmVudCBsYW5ndWFnZSB0byB0aGUgZnJhbWUn cyBsYW5ndWFnZSBpZiAic2V0Ci0rICAgICBsYW5ndWFnZSBhdXRvIi4gICovCi0rICBlbnVtIGxh bmd1YWdlIG1fbGFuZzsKLSB9OwotIAotIC8qIE1ldGhvZHMgZm9yIGNvbnN0cnVjdGluZyBhbmQg Y29tcGFyaW5nIEZyYW1lIElEcy4gICovCi1AQCAtMzE2LDI0ICszMjIsNDkgQEAgZXh0ZXJuIGJv b2wgaGFzX3N0YWNrX2ZyYW1lcyAoKTsKLSAgICBtb2RpZmllcyB0aGUgdGFyZ2V0IGludmFsaWRh dGluZyB0aGUgZnJhbWUgY2FjaGUpLiAgKi8KLSBleHRlcm4gdm9pZCByZWluaXRfZnJhbWVfY2Fj aGUgKHZvaWQpOwotIAotLS8qIE9uIGRlbWFuZCwgY3JlYXRlIHRoZSBzZWxlY3RlZCBmcmFtZSBh bmQgdGhlbiByZXR1cm4gaXQuICBJZiB0aGUKLS0gICBzZWxlY3RlZCBmcmFtZSBjYW4gbm90IGJl IGNyZWF0ZWQsIHRoaXMgZnVuY3Rpb24gcHJpbnRzIHRoZW4gdGhyb3dzCi0tICAgYW4gZXJyb3Iu ICBXaGVuIE1FU1NBR0UgaXMgbm9uLU5VTEwsIHVzZSBpdCBmb3IgdGhlIGVycm9yIG1lc3NhZ2Us Ci0rLyogUmV0dXJuIHRoZSBzZWxlY3RlZCBmcmFtZS4gIEFsd2F5cyByZXR1cm5zIG5vbi1OVUxM LiAgSWYgdGhlcmUKLSsgICBpc24ndCBhbiBpbmZlcmlvciBzdWZmaWNpZW50IGZvciBjcmVhdGlu ZyBhIGZyYW1lLCBhbiBlcnJvciBpcwotKyAgIHRocm93bi4gIFdoZW4gTUVTU0FHRSBpcyBub24t TlVMTCwgdXNlIGl0IGZvciB0aGUgZXJyb3IgbWVzc2FnZSwKLSAgICBvdGhlcndpc2UgdXNlIGEg Z2VuZXJpYyBlcnJvciBtZXNzYWdlLiAgKi8KLSAvKiBGSVhNRTogY2FnbmV5LzIwMDItMTEtMjg6 IEF0IHByZXNlbnQsIHdoZW4gdGhlcmUgaXMgbm8gc2VsZWN0ZWQKLSAgICBmcmFtZSwgdGhpcyBm dW5jdGlvbiBhbHdheXMgcmV0dXJucyB0aGUgY3VycmVudCAoaW5uZXIgbW9zdCkgZnJhbWUuCi0g ICAgSXQgc2hvdWxkIGluc3RlYWQsIHdoZW4gYSB0aHJlYWQgaGFzIHByZXZpb3VzbHkgaGFkIGl0 cyBmcmFtZQotICAgIHNlbGVjdGVkIChidXQgbm90IHJlc3VtZWQpIGFuZCB0aGUgZnJhbWUgY2Fj aGUgaW52YWxpZGF0ZWQsIGZpbmQKLSAgICBhbmQgdGhlbiByZXR1cm4gdGhhdCB0aHJlYWQncyBw cmV2aW91c2x5IHNlbGVjdGVkIGZyYW1lLiAgKi8KLS1leHRlcm4gc3RydWN0IGZyYW1lX2luZm8g KmdldF9zZWxlY3RlZF9mcmFtZSAoY29uc3QgY2hhciAqbWVzc2FnZSk7Ci0tCi0tLyogSWYgdGhl cmUgaXMgYSBzZWxlY3RlZCBmcmFtZSwgcmV0dXJuIGl0LiAgT3RoZXJ3aXNlLCByZXR1cm4gTlVM TC4gICovCi0tZXh0ZXJuIHN0cnVjdCBmcmFtZV9pbmZvICpnZXRfc2VsZWN0ZWRfZnJhbWVfaWZf c2V0ICh2b2lkKTsKLStleHRlcm4gc3RydWN0IGZyYW1lX2luZm8gKmdldF9zZWxlY3RlZF9mcmFt ZSAoY29uc3QgY2hhciAqbWVzc2FnZSA9IG51bGxwdHIpOwotIAotLS8qIFNlbGVjdCBhIHNwZWNp ZmljIGZyYW1lLiAgTlVMTCwgYXBwYXJlbnRseSBpbXBsaWVzIHJlLXNlbGVjdCB0aGUKLS0gICBp bm5lciBtb3N0IGZyYW1lLiAgKi8KLSsvKiBTZWxlY3QgYSBzcGVjaWZpYyBmcmFtZS4gIE5VTEwg aW1wbGllcyByZS1zZWxlY3QgdGhlIGlubmVyIG1vc3QKLSsgICBmcmFtZS4gICovCi0gZXh0ZXJu IHZvaWQgc2VsZWN0X2ZyYW1lIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLSAKLSsvKiBTYXZlIHRo ZSBmcmFtZSBJRCBhbmQgZnJhbWUgbGV2ZWwgb2YgdGhlIHNlbGVjdGVkIGZyYW1lIGluIEZSQU1F X0lECi0rICAgYW5kIEZSQU1FX0xFVkVMLCB0byBiZSByZXN0b3JlZCBsYXRlciB3aXRoIHJlc3Rv cmVfc2VsZWN0ZWRfZnJhbWUuCi0rCi0rICAgVGhpcyBpcyBwcmVmZXJyZWQgb3ZlciBnZXR0aW5n IHRoZSBzYW1lIGluZm8gb3V0IG9mCi0rICAgZ2V0X3NlbGVjdGVkX2ZyYW1lIGRpcmVjdGx5IGJl Y2F1c2UgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjcmVhdGUKLSsgICB0aGUgc2VsZWN0ZWQtZnJh bWUncyBmcmFtZV9pbmZvIG9iamVjdCBpZiBpdCBoYXNuJ3QgYmVlbiBjcmVhdGVkCi0rICAgeWV0 LCBhbmQgdGh1cyBpcyBtb3JlIGVmZmljaWVudCBhbmQgZG9lc24ndCB0aHJvdy4gICovCi0rZXh0 ZXJuIHZvaWQgc2F2ZV9zZWxlY3RlZF9mcmFtZSAoZnJhbWVfaWQgKmZyYW1lX2lkLCBpbnQgKmZy YW1lX2xldmVsKQotKyAgbm9leGNlcHQ7Ci0rCi0rLyogUmVzdG9yZSBzZWxlY3RlZCBmcmFtZSBh cyBzYXZlZCB3aXRoIHNhdmVfc2VsZWN0ZWRfZnJhbWUuCi0rCi0rICAgRG9lcyBub3QgdHJ5IHRv IGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZnJhbWVfaW5mbyBvYmplY3QuICBJbnN0ZWFkCi0rICAg dGhlIG5leHQgY2FsbCB0byBnZXRfc2VsZWN0ZWRfZnJhbWUgd2lsbCBsb29rIGl0IHVwIGFuZCBj YWNoZSB0aGUKLSsgICByZXN1bHQuCi0rCi0rICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCB0aHJv dy4gIEl0IGlzIGRlc2lnbmVkIHRvIGJlIHNhZmUgdG8gY2FsbGVkCi0rICAgZnJvbSB0aGUgZGVz dHJ1Y3RvcnMgb2YgUkFJSSB0eXBlcy4gICovCi0rZXh0ZXJuIHZvaWQgcmVzdG9yZV9zZWxlY3Rl ZF9mcmFtZSAoZnJhbWVfaWQgZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCkKLSsgIG5vZXhjZXB0 OwotKwotKy8qIExvb2t1cCB0aGUgZnJhbWVfaW5mbyBvYmplY3QgZm9yIHRoZSBzZWxlY3RlZCBm cmFtZSBGUkFNRV9JRCAvCi0rICAgRlJBTUVfTEVWRUwgYW5kIGNhY2hlIHRoZSByZXN1bHQuCi0r Ci0rICAgSWYgRlJBTUVfTEVWRUwgPiAwIGFuZCB0aGUgb3JpZ2luYWxseSBzZWxlY3RlZCBmcmFt ZSBpc24ndCBmb3VuZCwKLSsgICB3YXJuIGFuZCBzZWxlY3QgdGhlIGlubmVybW9zdCAoY3VycmVu dCkgZnJhbWUuICAqLwotK2V4dGVybiB2b2lkIGxvb2t1cF9zZWxlY3RlZF9mcmFtZSAoZnJhbWVf aWQgZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCk7Ci0rCi0gLyogR2l2ZW4gYSBGUkFNRSwgcmV0 dXJuIHRoZSBuZXh0IChtb3JlIGlubmVyLCB5b3VuZ2VyKSBvciBwcmV2aW91cwotICAgIChtb3Jl IG91dGVyLCBvbGRlcikgZnJhbWUuICAqLwotIGV4dGVybiBzdHJ1Y3QgZnJhbWVfaW5mbyAqZ2V0 X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICopOwotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0 aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQuaAotLS0tIGEvZ2RiL2dkYnRocmVhZC5oCi0rKysgYi9n ZGIvZ2RidGhyZWFkLmgKLUBAIC02NzMsNiArNjczLDEwIEBAIGNsYXNzIHNjb3BlZF9yZXN0b3Jl X2N1cnJlbnRfdGhyZWFkCi0gICBmcmFtZV9pZCBtX3NlbGVjdGVkX2ZyYW1lX2lkOwotICAgaW50 IG1fc2VsZWN0ZWRfZnJhbWVfbGV2ZWw7Ci0gICBib29sIG1fd2FzX3N0b3BwZWQ7Ci0rICAvKiBT YXZlL3Jlc3RvcmUgdGhlIGxhbmd1YWdlIGFzIHdlbGwsIGJlY2F1c2Ugc2VsZWN0aW5nIGEgZnJh bWUKLSsgICAgIGNoYW5nZXMgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgdG8gdGhlIGZyYW1lJ3MgbGFu Z3VhZ2UgaWYgInNldAotKyAgICAgbGFuZ3VhZ2UgYXV0byIuICAqLwotKyAgZW51bSBsYW5ndWFn ZSBtX2xhbmc7Ci0gfTsKLSAKLSAvKiBSZXR1cm5zIGEgcG9pbnRlciBpbnRvIHRoZSB0aHJlYWRf aW5mbyBjb3JyZXNwb25kaW5nIHRvCi1kaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2RiL2lu ZnJ1bi5jCi0tLS0gYS9nZGIvaW5mcnVuLmMKLSsrKyBiL2dkYi9pbmZydW4uYwotQEAgLTkwMDYs OCArOTAwNiwxMCBAQCBzdHJ1Y3QgaW5mY2FsbF9jb250cm9sX3N0YXRlCi0gICBlbnVtIHN0b3Bf c3RhY2tfa2luZCBzdG9wX3N0YWNrX2R1bW15ID0gU1RPUF9OT05FOwotICAgaW50IHN0b3BwZWRf YnlfcmFuZG9tX3NpZ25hbCA9IDA7Ci0gCi0tICAvKiBJRCBpZiB0aGUgc2VsZWN0ZWQgZnJhbWUg d2hlbiB0aGUgaW5mZXJpb3IgZnVuY3Rpb24gY2FsbCB3YXMgbWFkZS4gICovCi0rICAvKiBJRCBh bmQgbGV2ZWwgb2YgdGhlIHNlbGVjdGVkIGZyYW1lIHdoZW4gdGhlIGluZmVyaW9yIGZ1bmN0aW9u Ci0rICAgICBjYWxsIHdhcyBtYWRlLiAgKi8KLSAgIHN0cnVjdCBmcmFtZV9pZCBzZWxlY3RlZF9m cmFtZV9pZCB7fTsKLSsgIGludCBzZWxlY3RlZF9mcmFtZV9sZXZlbCA9IC0xOwotIH07Ci0gCi0g LyogU2F2ZSBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW5mZXJp b3I8PT0+Z2RiCi1AQCAtOTAzNiwyNyArOTAzOCwxMiBAQCBzYXZlX2luZmNhbGxfY29udHJvbF9z dGF0ZSAoKQotICAgaW5mX3N0YXR1cy0+c3RvcF9zdGFja19kdW1teSA9IHN0b3Bfc3RhY2tfZHVt bXk7Ci0gICBpbmZfc3RhdHVzLT5zdG9wcGVkX2J5X3JhbmRvbV9zaWduYWwgPSBzdG9wcGVkX2J5 X3JhbmRvbV9zaWduYWw7Ci0gCi0tICBpbmZfc3RhdHVzLT5zZWxlY3RlZF9mcmFtZV9pZCA9IGdl dF9mcmFtZV9pZCAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSk7Ci0rICBzYXZlX3NlbGVjdGVk X2ZyYW1lICgmaW5mX3N0YXR1cy0+c2VsZWN0ZWRfZnJhbWVfaWQsCi0rCQkgICAgICAgJmluZl9z dGF0dXMtPnNlbGVjdGVkX2ZyYW1lX2xldmVsKTsKLSAKLSAgIHJldHVybiBpbmZfc3RhdHVzOwot IH0KLSAKLS1zdGF0aWMgdm9pZAotLXJlc3RvcmVfc2VsZWN0ZWRfZnJhbWUgKGNvbnN0IGZyYW1l X2lkICZmaWQpCi0tewotLSAgZnJhbWVfaW5mbyAqZnJhbWUgPSBmcmFtZV9maW5kX2J5X2lkIChm aWQpOwotLQotLSAgLyogSWYgaW5mX3N0YXR1cy0+c2VsZWN0ZWRfZnJhbWVfaWQgaXMgTlVMTCwg dGhlcmUgd2FzIG5vIHByZXZpb3VzbHkKLS0gICAgIHNlbGVjdGVkIGZyYW1lLiAgKi8KLS0gIGlm IChmcmFtZSA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgd2FybmluZyAoXygiVW5hYmxlIHRvIHJl c3RvcmUgcHJldmlvdXNseSBzZWxlY3RlZCBmcmFtZS4iKSk7Ci0tICAgICAgcmV0dXJuOwotLSAg ICB9Ci0tCi0tICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKLS19Ci0tCi0gLyogUmVzdG9yZSBpbmZl cmlvciBzZXNzaW9uIHN0YXRlIHRvIElORl9TVEFUVVMuICAqLwotIAotIHZvaWQKLUBAIC05MDg0 LDIxICs5MDcxLDggQEAgcmVzdG9yZV9pbmZjYWxsX2NvbnRyb2xfc3RhdGUgKHN0cnVjdCBpbmZj YWxsX2NvbnRyb2xfc3RhdGUgKmluZl9zdGF0dXMpCi0gCi0gICBpZiAodGFyZ2V0X2hhc19zdGFj aykKLSAgICAgewotLSAgICAgIC8qIFRoZSBwb2ludCBvZiB0aGUgdHJ5L2NhdGNoIGlzIHRoYXQg aWYgdGhlIHN0YWNrIGlzIGNsb2JiZXJlZCwKLS0gICAgICAgICB3YWxraW5nIHRoZSBzdGFjayBt aWdodCBlbmNvdW50ZXIgYSBnYXJiYWdlIHBvaW50ZXIgYW5kCi0tICAgICAgICAgZXJyb3IoKSB0 cnlpbmcgdG8gZGVyZWZlcmVuY2UgaXQuICAqLwotLSAgICAgIHRyeQotLQl7Ci0tCSAgcmVzdG9y ZV9zZWxlY3RlZF9mcmFtZSAoaW5mX3N0YXR1cy0+c2VsZWN0ZWRfZnJhbWVfaWQpOwotLQl9Ci0t ICAgICAgY2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRpb25fZXJyb3IgJmV4KQotLQl7Ci0tCSAgZXhj ZXB0aW9uX2ZwcmludGYgKGdkYl9zdGRlcnIsIGV4LAotLQkJCSAgICAgIlVuYWJsZSB0byByZXN0 b3JlIHByZXZpb3VzbHkgc2VsZWN0ZWQgZnJhbWU6XG4iKTsKLS0JICAvKiBFcnJvciBpbiByZXN0 b3JpbmcgdGhlIHNlbGVjdGVkIGZyYW1lLiAgU2VsZWN0IHRoZQotLQkgICAgIGlubmVybW9zdCBm cmFtZS4gICovCi0tCSAgc2VsZWN0X2ZyYW1lIChnZXRfY3VycmVudF9mcmFtZSAoKSk7Ci0tCX0K LSsgICAgICByZXN0b3JlX3NlbGVjdGVkX2ZyYW1lIChpbmZfc3RhdHVzLT5zZWxlY3RlZF9mcmFt ZV9pZCwKLSsJCQkgICAgICBpbmZfc3RhdHVzLT5zZWxlY3RlZF9mcmFtZV9sZXZlbCk7Ci0gICAg IH0KLSAKLSAgIGRlbGV0ZSBpbmZfc3RhdHVzOwotZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5jIGIv Z2RiL3N0YWNrLmMKLS0tLSBhL2dkYi9zdGFjay5jCi0rKysgYi9nZGIvc3RhY2suYwotQEAgLTE4 NDIsOSArMTg0Miw5IEBAIHRyYWlsaW5nX291dGVybW9zdF9mcmFtZSAoaW50IGNvdW50KQotIHN0 YXRpYyB2b2lkCi0gc2VsZWN0X2ZyYW1lX2NvbW1hbmRfY29yZSAoc3RydWN0IGZyYW1lX2luZm8g KmZpLCBib29sIGlnbm9yZWQpCi0gewotLSAgc3RydWN0IGZyYW1lX2luZm8gKnByZXZfZnJhbWUg PSBnZXRfc2VsZWN0ZWRfZnJhbWVfaWZfc2V0ICgpOwotKyAgZnJhbWVfaW5mbyAqcHJldl9mcmFt ZSA9IGdldF9zZWxlY3RlZF9mcmFtZSAoKTsKLSAgIHNlbGVjdF9mcmFtZSAoZmkpOwotLSAgaWYg KGdldF9zZWxlY3RlZF9mcmFtZV9pZl9zZXQgKCkgIT0gcHJldl9mcmFtZSkKLSsgIGlmIChnZXRf c2VsZWN0ZWRfZnJhbWUgKCkgIT0gcHJldl9mcmFtZSkKLSAgICAgZ2RiOjpvYnNlcnZlcnM6OnVz ZXJfc2VsZWN0ZWRfY29udGV4dF9jaGFuZ2VkLm5vdGlmeSAoVVNFUl9TRUxFQ1RFRF9GUkFNRSk7 Ci0gfQotIAotQEAgLTE4NjMsMTAgKzE4NjMsOSBAQCBzZWxlY3RfZnJhbWVfZm9yX21pIChzdHJ1 Y3QgZnJhbWVfaW5mbyAqZmkpCi0gc3RhdGljIHZvaWQKLSBmcmFtZV9jb21tYW5kX2NvcmUgKHN0 cnVjdCBmcmFtZV9pbmZvICpmaSwgYm9vbCBpZ25vcmVkKQotIHsKLS0gIHN0cnVjdCBmcmFtZV9p bmZvICpwcmV2X2ZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCAoKTsKLS0KLSsgIGZy YW1lX2luZm8gKnByZXZfZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKCk7Ci0gICBzZWxlY3Rf ZnJhbWUgKGZpKTsKLS0gIGlmIChnZXRfc2VsZWN0ZWRfZnJhbWVfaWZfc2V0ICgpICE9IHByZXZf ZnJhbWUpCi0rICBpZiAoZ2V0X3NlbGVjdGVkX2ZyYW1lICgpICE9IHByZXZfZnJhbWUpCi0gICAg IGdkYjo6b2JzZXJ2ZXJzOjp1c2VyX3NlbGVjdGVkX2NvbnRleHRfY2hhbmdlZC5ub3RpZnkgKFVT RVJfU0VMRUNURURfRlJBTUUpOwotICAgZWxzZQotICAgICBwcmludF9zZWxlY3RlZF90aHJlYWRf ZnJhbWUgKGN1cnJlbnRfdWlvdXQsIFVTRVJfU0VMRUNURURfRlJBTUUpOwotZGlmZiAtLWdpdCBh L2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwotLS0tIGEvZ2RiL3RocmVhZC5jCi0rKysgYi9n ZGIvdGhyZWFkLmMKLUBAIC0xMzI1LDIwICsxMzI1LDI2IEBAIHN3aXRjaF90b190aHJlYWQgKHBy b2Nlc3Nfc3RyYXR1bV90YXJnZXQgKnByb2NfdGFyZ2V0LCBwdGlkX3QgcHRpZCkKLSAgIHN3aXRj aF90b190aHJlYWQgKHRocik7Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0tcmVzdG9yZV9zZWxlY3Rl ZF9mcmFtZSAoc3RydWN0IGZyYW1lX2lkIGFfZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCkKLSsv KiBTZWUgZnJhbWUuaC4gICovCi0rCi0rdm9pZAotK2xvb2t1cF9zZWxlY3RlZF9mcmFtZSAoc3Ry dWN0IGZyYW1lX2lkIGFfZnJhbWVfaWQsIGludCBmcmFtZV9sZXZlbCkKLSB7Ci0gICBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUgPSBOVUxMOwotICAgaW50IGNvdW50OwotIAotLSAgLyogVGhpcyBt ZWFucyB0aGVyZSB3YXMgbm8gc2VsZWN0ZWQgZnJhbWUuICAqLwotKyAgLyogVGhpcyBlaXRoZXIg bWVhbnMgdGhlcmUgd2FzIG5vIHNlbGVjdGVkIGZyYW1lLCBvciB0aGUgc2VsZWN0ZWQKLSsgICAg IGZyYW1lIHdhcyB0aGUgY3VycmVudCBmcmFtZS4gIEluIGVpdGhlciBjYXNlLCBzZWxlY3QgdGhl IGN1cnJlbnQKLSsgICAgIGZyYW1lLiAgKi8KLSAgIGlmIChmcmFtZV9sZXZlbCA9PSAtMSkKLSAg ICAgewotLSAgICAgIHNlbGVjdF9mcmFtZSAoTlVMTCk7Ci0rICAgICAgc2VsZWN0X2ZyYW1lIChn ZXRfY3VycmVudF9mcmFtZSAoKSk7Ci0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICBnZGJf YXNzZXJ0IChmcmFtZV9sZXZlbCA+PSAwKTsKLSsgIC8qIHNlbGVjdF9mcmFtZSBuZXZlciBzYXZl cyAwIGluIFNFTEVDVEVEX0ZSQU1FX0xFVkVMLCBzbyB3ZQotKyAgICAgc2hvdWxkbid0IHNlZSBp dCBoZXJlLiAgKi8KLSsgIGdkYl9hc3NlcnQgKGZyYW1lX2xldmVsID4gMCk7Ci0gCi0gICAvKiBS ZXN0b3JlIGJ5IGxldmVsIGZpcnN0LCBjaGVjayBpZiB0aGUgZnJhbWUgaWQgaXMgdGhlIHNhbWUg YXMKLSAgICAgIGV4cGVjdGVkLiAgSWYgdGhhdCBmYWlscywgdHJ5IHJlc3RvcmluZyBieSBmcmFt ZSBpZC4gIElmIHRoYXQKLUBAIC0xNDA5LDY0ICsxNDE1LDI4IEBAIHNjb3BlZF9yZXN0b3JlX2N1 cnJlbnRfdGhyZWFkOjpyZXN0b3JlICgpCi0gICAgICAgJiYgdGFyZ2V0X2hhc19zdGFjawotICAg ICAgICYmIHRhcmdldF9oYXNfbWVtb3J5KQotICAgICByZXN0b3JlX3NlbGVjdGVkX2ZyYW1lICht X3NlbGVjdGVkX2ZyYW1lX2lkLCBtX3NlbGVjdGVkX2ZyYW1lX2xldmVsKTsKLSsKLSsgIHNldF9s YW5ndWFnZSAobV9sYW5nKTsKLSB9Ci0gCi0gc2NvcGVkX3Jlc3RvcmVfY3VycmVudF90aHJlYWQ6 On5zY29wZWRfcmVzdG9yZV9jdXJyZW50X3RocmVhZCAoKQotIHsKLSAgIGlmICghbV9kb250X3Jl c3RvcmUpCi0tICAgIHsKLS0gICAgICB0cnkKLS0JewotLQkgIHJlc3RvcmUgKCk7Ci0tCX0KLS0g ICAgICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlvbiAmZXgpCi0tCXsKLS0JICAvKiBXZSdyZSBp biBhIGR0b3IsIHRoZXJlJ3MgcmVhbGx5IG5vdGhpbmcgZWxzZSB3ZSBjYW4gZG8KLS0JICAgICBi dXQgc3dhbGxvdyB0aGUgZXhjZXB0aW9uLiAgKi8KLS0JfQotLSAgICB9Ci0rICAgIHJlc3RvcmUg KCk7Ci0gfQotIAotIHNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFkOjpzY29wZWRfcmVzdG9y ZV9jdXJyZW50X3RocmVhZCAoKQotIHsKLSAgIG1faW5mID0gaW5mZXJpb3JfcmVmOjpuZXdfcmVm ZXJlbmNlIChjdXJyZW50X2luZmVyaW9yICgpKTsKLSAKLSsgIG1fbGFuZyA9IGN1cnJlbnRfbGFu Z3VhZ2UtPmxhX2xhbmd1YWdlOwotKwotICAgaWYgKGluZmVyaW9yX3B0aWQgIT0gbnVsbF9wdGlk KQotICAgICB7Ci0gICAgICAgbV90aHJlYWQgPSB0aHJlYWRfaW5mb19yZWY6Om5ld19yZWZlcmVu Y2UgKGluZmVyaW9yX3RocmVhZCAoKSk7Ci0gCi0tICAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZy YW1lOwotLQotICAgICAgIG1fd2FzX3N0b3BwZWQgPSBtX3RocmVhZC0+c3RhdGUgPT0gVEhSRUFE X1NUT1BQRUQ7Ci0tICAgICAgaWYgKG1fd2FzX3N0b3BwZWQKLS0JICAmJiB0YXJnZXRfaGFzX3Jl Z2lzdGVycwotLQkgICYmIHRhcmdldF9oYXNfc3RhY2sKLS0JICAmJiB0YXJnZXRfaGFzX21lbW9y eSkKLS0JewotLQkgIC8qIFdoZW4gcHJvY2Vzc2luZyBpbnRlcm5hbCBldmVudHMsIHRoZXJlIG1p Z2h0IG5vdCBiZSBhCi0tCSAgICAgc2VsZWN0ZWQgZnJhbWUuICBJZiB3ZSBuYWl2ZWx5IGNhbGwg Z2V0X3NlbGVjdGVkX2ZyYW1lCi0tCSAgICAgaGVyZSwgdGhlbiB3ZSBjYW4gZW5kIHVwIHJlYWRp bmcgZGVidWdpbmZvIGZvciB0aGUKLS0JICAgICBjdXJyZW50IGZyYW1lLCBidXQgd2UgZG9uJ3Qg Z2VuZXJhbGx5IG5lZWQgdGhlIGRlYnVnaW5mbwotLQkgICAgIGF0IHRoaXMgcG9pbnQuICAqLwot LQkgIGZyYW1lID0gZ2V0X3NlbGVjdGVkX2ZyYW1lX2lmX3NldCAoKTsKLS0JfQotLSAgICAgIGVs c2UKLS0JZnJhbWUgPSBOVUxMOwotLQotLSAgICAgIHRyeQotLQl7Ci0tCSAgbV9zZWxlY3RlZF9m cmFtZV9pZCA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotLQkgIG1fc2VsZWN0ZWRfZnJhbWVfbGV2 ZWwgPSBmcmFtZV9yZWxhdGl2ZV9sZXZlbCAoZnJhbWUpOwotLQl9Ci0tICAgICAgY2F0Y2ggKGNv bnN0IGdkYl9leGNlcHRpb25fZXJyb3IgJmV4KQotLQl7Ci0tCSAgbV9zZWxlY3RlZF9mcmFtZV9p ZCA9IG51bGxfZnJhbWVfaWQ7Ci0tCSAgbV9zZWxlY3RlZF9mcmFtZV9sZXZlbCA9IC0xOwotLQot LQkgIC8qIEJldHRlciBsZXQgdGhpcyBwcm9wYWdhdGUuICAqLwotLQkgIGlmIChleC5lcnJvciA9 PSBUQVJHRVRfQ0xPU0VfRVJST1IpCi0tCSAgICB0aHJvdzsKLS0JfQotKyAgICAgIHNhdmVfc2Vs ZWN0ZWRfZnJhbWUgKCZtX3NlbGVjdGVkX2ZyYW1lX2lkLCAmbV9zZWxlY3RlZF9mcmFtZV9sZXZl bCk7Ci0gICAgIH0KLSB9Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTA5OTAyLWZyYW1lX2lk X3AtYXNzZXJ0LTIucGF0Y2ggYi9nZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMi5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwNGJiZS4uMDAwMDAwMAotLS0g YS9nZGItcmhiejE5MDk5MDItZnJhbWVfaWRfcC1hc3NlcnQtMi5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE2OSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogUGVkcm8gQWx2ZXMgPHBlZHJvQHBhbHZlcy5uZXQ+Ci1EYXRlOiBTYXQs IDMxIE9jdCAyMDIwIDAwOjI3OjE4ICswMDAwCi1TdWJqZWN0OiBnZGItcmhiejE5MDk5MDItZnJh bWVfaWRfcC1hc3NlcnQtMi5wYXRjaAotCi07OyBCYWNrcG9ydCBwYXRjaCAjMiB3aGljaCBmaXhl cyBhIGZyYW1lX2lkX3AgYXNzZXJ0aW9uIGZhaWx1cmUgKFJIIEJaIDE5MDk5MDIpLgotCi1GaXgg ZnJhbWUgY3ljbGUgZGV0ZWN0aW9uCi0KLVRoZSByZWNlbnQgY29tbWl0IHRvIG1ha2Ugc2NvcGVk X3Jlc3RvcmVfY3VycmVudF90aHJlYWQncyBjZHRvcnMKLWV4Y2VwdGlvbiBmcmVlIHJlZ3Jlc3Nl ZCBnZGIuYmFzZS9laF9yZXR1cm4uZXhwOgotCi0gIEJyZWFrcG9pbnQgMSwgMHgwMDAwMDAwMDAw NDAxMmJiIGluIGVoMiAoZ2RiL2ZyYW1lLmM6NjQxOiBpbnRlcm5hbC1lcnJvcjogZnJhbWVfaWQg Z2V0X2ZyYW1lX2lkKGZyYW1lX2luZm8qKTogQXNzZXJ0aW9uIGBzdGFzaGVkJyBmYWlsZWQuCi0g IEEgcHJvYmxlbSBpbnRlcm5hbCB0byBHREIgaGFzIGJlZW4gZGV0ZWN0ZWQsCi0gIGZ1cnRoZXIg ZGVidWdnaW5nIG1heSBwcm92ZSB1bnJlbGlhYmxlLgotICBRdWl0IHRoaXMgZGVidWdnaW5nIHNl c3Npb24/ICh5IG9yIG4pIEZBSUw6IGdkYi5iYXNlL2VoX3JldHVybi5leHA6IGhpdCBicmVha3Bv aW50IChHREIgaW50ZXJuYWwgZXJyb3IpCi0KLVRoYXQgdGVzdGNhc2UgdXNlcyBfX2J1aWx0aW5f ZWhfcmV0dXJuIGFuZCwgYmVmb3JlIHRoZSByZWdyZXNzaW9uLCB0aGUKLWJhY2t0cmFjZSBhdCBl aDIgbG9va2VkIGxpa2UgdGhpczoKLQotIChnZGIpIGJ0Ci0gIzAgIDB4MDAwMDAwMDAwMDQwMDZl YiBpbiBlaDIgKHA9MHg0MDA2ZWMgPGNvbnRpbnVhdGlvbj4pIGF0IHNyYy9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2VoX3JldHVybi5jOjU0Ci0gQmFja3RyYWNlIHN0b3BwZWQ6IHByZXZpb3VzIGZy YW1lIGlkZW50aWNhbCB0byB0aGlzIGZyYW1lIChjb3JydXB0IHN0YWNrPykKLQotVGhhdCAicHJl dmlvdXMgZnJhbWUgaWRlbnRpY2FsIHRvIHRoaXMgZnJhbWUiIGlzIGNhdWdodCBieSB0aGUgY3lj bGUKLWRldGVjdGlvbiBiYXNlZCBvbiBmcmFtZSBpZC4KLQotVGhlIGFzc2VydGlvbiBmYWlsaW5n IGlzIHRoaXMgb25lOgotCi0gNjM4ICAgICAgICAgICAvKiBTaW5jZSB0aGlzIGlzIHRoZSBmaXJz dCBmcmFtZSBpbiB0aGUgY2hhaW4sIHRoaXMgc2hvdWxkCi0gNjM5ICAgICAgICAgICAgICBhbHdh eXMgc3VjY2VlZC4gICovCi0gNjQwICAgICAgICAgICBib29sIHN0YXNoZWQgPSBmcmFtZV9zdGFz aF9hZGQgKGZpKTsKLSA2NDEgICAgICAgICAgIGdkYl9hc3NlcnQgKHN0YXNoZWQpOwotCi1vcmln aW5hbGx5IGFkZGVkIGJ5Ci0KLSAgY29tbWl0IGYyNDU1MzVjZjU4M2FlNGNhMTNiMTBkNDdiM2M3 ZDMzMzQ1OTNlY2UKLSAgQXV0aG9yOiAgICAgUGVkcm8gQWx2ZXMgPHBhbHZlc0ByZWRoYXQuY29t PgotICBBdXRob3JEYXRlOiBNb24gU2VwIDUgMTg6NDE6MzggMjAxNiArMDEwMAotCi0gICAgICBG aXggUFIxOTkyNzogQXZvaWQgdW53aW5kZXIgcmVjdXJzaW9uIGlmIHNuaWZmZXIgdXNlcyBjYWxs cyBwYXJzZV9hbmRfZXZhbAotCi1UaGUgYXNzZXJ0aW9uIGlzIGZhaWxpbmcgYmVjYXVzZSBmcmFt ZSAjMSdzIGZyYW1lIGlkIHdhcyBzdGFzaGVkCi1iZWZvcmUgdGhlIGlkIG9mIGZyYW1lICMwIGlz IHN0YXNoZWQuICBUaGUgZnJhbWUgaWQgb2YgZnJhbWUgIzEgd2FzCi1zdGFzaGVkIGhlcmU6Ci0K LSAodG9wLWdkYikgYnQKLSAjMCAgZnJhbWVfc3Rhc2hfYWRkIChmcmFtZT0weDFlMjRjOTApIGF0 IHNyYy9nZGIvZnJhbWUuYzoyNzYKLSAjMSAgMHgwMDAwMDAwMDAwNjY5YzFiIGluIGdldF9wcmV2 X2ZyYW1lX2lmX25vX2N5Y2xlICh0aGlzX2ZyYW1lPTB4MTlmODM3MCkgYXQgc3JjL2dkYi9mcmFt ZS5jOjIxMjAKLSAjMiAgMHgwMDAwMDAwMDAwNjZhMzM5IGluIGdldF9wcmV2X2ZyYW1lX2Fsd2F5 c18xICh0aGlzX2ZyYW1lPTB4MTlmODM3MCkgYXQgc3JjL2dkYi9mcmFtZS5jOjIzMDMKLSAjMyAg MHgwMDAwMDAwMDAwNjZhMzYwIGluIGdldF9wcmV2X2ZyYW1lX2Fsd2F5cyAodGhpc19mcmFtZT0w eDE5ZjgzNzApIGF0IHNyYy9nZGIvZnJhbWUuYzoyMzE5Ci0gIzQgIDB4MDAwMDAwMDAwMDY2YjU2 YyBpbiBnZXRfZnJhbWVfdW53aW5kX3N0b3BfcmVhc29uIChmcmFtZT0weDE5ZjgzNzApIGF0IHNy Yy9nZGIvZnJhbWUuYzozMDI4Ci0gIzUgIDB4MDAwMDAwMDAwMDU5ZjkyOSBpbiBkd2FyZjJfZnJh bWVfY2ZhICh0aGlzX2ZyYW1lPTB4MTlmODM3MCkgYXQgc3JjL2dkYi9kd2FyZjIvZnJhbWUuYzox NDYyCi0gIzYgIDB4MDAwMDAwMDAwMDVjZTQzNCBpbiBkd2FyZl9ldmFsdWF0ZV9sb2NfZGVzYzo6 Z2V0X2ZyYW1lX2NmYSAodGhpcz0weDdmZmZmZmZmYzA3MCkgYXQgc3JjL2dkYi9kd2FyZjIvbG9j LmM6NjY2Ci0gIzcgIDB4MDAwMDAwMDAwMDU5ODlhOSBpbiBkd2FyZl9leHByX2NvbnRleHQ6OmV4 ZWN1dGVfc3RhY2tfb3AgKHRoaXM9MHg3ZmZmZmZmZmMwNzAsIG9wX3B0cj0weDFiMmEwNTMgIlwz NjRcMDAzIiwgb3BfZW5kPTB4MWIyYTA1MyAiXDM2NFwwMDMiKSBhdCBzcmMvZ2RiL2R3YXJmMi9l eHByLmM6MTE2MQotICM4ICAweDAwMDAwMDAwMDA1OTZhZjYgaW4gZHdhcmZfZXhwcl9jb250ZXh0 OjpldmFsICh0aGlzPTB4N2ZmZmZmZmZjMDcwLCBhZGRyPTB4MWIyYTA1MiAiXDIzNFwzNjRcMDAz IiwgbGVuPTEpIGF0IHNyYy9nZGIvZHdhcmYyL2V4cHIuYzozMDMKLSAjOSAgMHgwMDAwMDAwMDAw NTk3YjRlIGluIGR3YXJmX2V4cHJfY29udGV4dDo6ZXhlY3V0ZV9zdGFja19vcCAodGhpcz0weDdm ZmZmZmZmYzA3MCwgb3BfcHRyPTB4MWIyYTA2MyAiIiwgb3BfZW5kPTB4MWIyYTA2MyAiIikgYXQg c3JjL2dkYi9kd2FyZjIvZXhwci5jOjg2NQotICMxMCAweDAwMDAwMDAwMDA1OTZhZjYgaW4gZHdh cmZfZXhwcl9jb250ZXh0OjpldmFsICh0aGlzPTB4N2ZmZmZmZmZjMDcwLCBhZGRyPTB4MWIyYTA2 MSAiXDIyMVgiLCBsZW49MikgYXQgc3JjL2dkYi9kd2FyZjIvZXhwci5jOjMwMwotICMxMSAweDAw MDAwMDAwMDA1YzhiNWEgaW4gZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgKHR5cGU9MHgx YjU2NGQwLCBmcmFtZT0weDE5ZjgzNzAsIGRhdGE9MHgxYjJhMDYxICJcMjIxWCIsIHNpemU9Miwg cGVyX2N1PTB4MWIyODc2MCwgcGVyX29iamZpbGU9MHgxYTg0OTMwLCBzdWJvYmpfdHlwZT0weDFi NTY0ZDAsIHN1Ym9ial9ieXRlX29mZnNldD0wKSBhdCBzcmMvZ2RiL2R3YXJmMi9sb2MuYzoyMjYw Ci0gIzEyIDB4MDAwMDAwMDAwMDVjOTI0MyBpbiBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHR5 cGU9MHgxYjU2NGQwLCBmcmFtZT0weDE5ZjgzNzAsIGRhdGE9MHgxYjJhMDYxICJcMjIxWCIsIHNp emU9MiwgcGVyX2N1PTB4MWIyODc2MCwgcGVyX29iamZpbGU9MHgxYTg0OTMwKSBhdCBzcmMvZ2Ri L2R3YXJmMi9sb2MuYzoyNDQ0Ci0gIzEzIDB4MDAwMDAwMDAwMDVjYjc2OSBpbiBsb2NleHByX3Jl YWRfdmFyaWFibGUgKHN5bWJvbD0weDFiNTk4NDAsIGZyYW1lPTB4MTlmODM3MCkgYXQgc3JjL2dk Yi9kd2FyZjIvbG9jLmM6MzY4NwotICMxNCAweDAwMDAwMDAwMDA2NjMxMzcgaW4gbGFuZ3VhZ2Vf ZGVmbjo6cmVhZF92YXJfdmFsdWUgKHRoaXM9MHgxMjJlYTYwIDxjX2xhbmd1YWdlX2RlZm4+LCB2 YXI9MHgxYjU5ODQwLCB2YXJfYmxvY2s9MHgwLCBmcmFtZT0weDE5ZjgzNzApIGF0IHNyYy9nZGIv ZmluZHZhci5jOjYxOAotICMxNSAweDAwMDAwMDAwMDA2NjNjM2IgaW4gcmVhZF92YXJfdmFsdWUg KHZhcj0weDFiNTk4NDAsIHZhcl9ibG9jaz0weDAsIGZyYW1lPTB4MTlmODM3MCkgYXQgc3JjL2dk Yi9maW5kdmFyLmM6ODIyCi0gIzE2IDB4MDAwMDAwMDAwMDhjN2Q5ZiBpbiByZWFkX2ZyYW1lX2Fy ZyAoZnBfb3B0cz0uLi4sIHN5bT0weDFiNTk4NDAsIGZyYW1lPTB4MTlmODM3MCwgYXJncD0weDdm ZmZmZmZmYzQ3MCwgZW50cnlhcmdwPTB4N2ZmZmZmZmZjNDkwKSBhdCBzcmMvZ2RiL3N0YWNrLmM6 NTQyCi0gIzE3IDB4MDAwMDAwMDAwMDhjODljZCBpbiBwcmludF9mcmFtZV9hcmdzIChmcF9vcHRz PS4uLiwgZnVuYz0weDFiNTk3YzAsIGZyYW1lPTB4MTlmODM3MCwgbnVtPS0xLCBzdHJlYW09MHgx YWJhODYwKSBhdCBzcmMvZ2RiL3N0YWNrLmM6ODkwCi0gIzE4IDB4MDAwMDAwMDAwMDhjOWJmOCBp biBwcmludF9mcmFtZSAoZnBfb3B0cz0uLi4sIGZyYW1lPTB4MTlmODM3MCwgcHJpbnRfbGV2ZWw9 MCwgcHJpbnRfd2hhdD1TUkNfQU5EX0xPQywgcHJpbnRfYXJncz0xLCBzYWw9Li4uKSBhdCBzcmMv Z2RiL3N0YWNrLmM6MTM5NAotICMxOSAweDAwMDAwMDAwMDA4YzkyYjkgaW4gcHJpbnRfZnJhbWVf aW5mbyAoZnBfb3B0cz0uLi4sIGZyYW1lPTB4MTlmODM3MCwgcHJpbnRfbGV2ZWw9MCwgcHJpbnRf d2hhdD1TUkNfQU5EX0xPQywgcHJpbnRfYXJncz0xLCBzZXRfY3VycmVudF9zYWw9MSkgYXQgc3Jj L2dkYi9zdGFjay5jOjExMTkKLSAjMjAgMHgwMDAwMDAwMDAwOGM3NWYwIGluIHByaW50X3N0YWNr X2ZyYW1lIChmcmFtZT0weDE5ZjgzNzAsIHByaW50X2xldmVsPTAsIHByaW50X3doYXQ9U1JDX0FO RF9MT0MsIHNldF9jdXJyZW50X3NhbD0xKSBhdCBzcmMvZ2RiL3N0YWNrLmM6MzY2Ci0gIzIxIDB4 MDAwMDAwMDAwMDcwMjUwYiBpbiBwcmludF9zdG9wX2xvY2F0aW9uICh3cz0weDdmZmZmZmZmYzll MCkgYXQgc3JjL2dkYi9pbmZydW4uYzo4MTEwCi0gIzIyIDB4MDAwMDAwMDAwMDcwMjU2OSBpbiBw cmludF9zdG9wX2V2ZW50ICh1aW91dD0weDFhOGI5ZTAsIGRpc3BsYXlzPXRydWUpIGF0IHNyYy9n ZGIvaW5mcnVuLmM6ODEyNgotICMyMyAweDAwMDAwMDAwMDA5NmQwNGIgaW4gdHVpX29uX25vcm1h bF9zdG9wIChicz0weDFiY2QxYzAsIHByaW50X2ZyYW1lPTEpIGF0IHNyYy9nZGIvdHVpL3R1aS1p bnRlcnAuYzo5OAotIC4uLgotCi1CZWZvcmUgdGhlIGNvbW1pdCB0byBtYWtlIHNjb3BlZF9yZXN0 b3JlX2N1cnJlbnRfdGhyZWFkJ3MgY2R0b3JzCi1leGNlcHRpb24gZnJlZSwgc2NvcGVkX3Jlc3Rv cmVfY3VycmVudF90aHJlYWQncyBkdG9yIHdvdWxkIGNhbGwKLWdldF9mcmFtZV9pZCBvbiB0aGUg c2VsZWN0ZWQgZnJhbWUsIGFuZCB3ZSB1c2UKLXNjb3BlZF9yZXN0b3JlX2N1cnJlbnRfdGhyZWFk IHBlcnZhc2l2ZWx5LiAgVGhhdCBoYWQgdGhlIHNpZGUgZWZmZWN0Ci1vZiBzdGFzaGluZyB0aGUg ZnJhbWUgaWQgb2YgZnJhbWUgIzAgYmVmb3JlIHJlYWNoaW5nIHRoZSBwYXRoIHNob3duIGluCi10 aGUgYmFja3RyYWNlLiAgSS5lLiwgdGhlIGZyYW1lIGlkIG9mIGZyYW1lICMwIGhhcHBlbmVkIHRv IGJlIHN0YXNoZWQKLWJlZm9yZSB0aGUgZnJhbWUgaWQgb2YgZnJhbWUgIzEuICBCdXQgdGhhdCB3 YXMgYnkgY2hhbmNlLCBub3QgYnkKLWRlc2lnbi4KLQotVGhpcyBjb21taXQ6Ci0KLSAgY29tbWl0 IDI1NmFlNWRiYzczZDEzNDg4NTBmODZlZTc3YTBkYzNiMDRiYzdjYzAKLSAgQXV0aG9yOiAgICAg S2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotICBBdXRob3JEYXRlOiBNb24gT2N0 IDMxIDEyOjQ3OjQyIDIwMTYgLTA3MDAKLQotICAgICAgU3Rhc2ggZnJhbWUgaWQgb2YgY3VycmVu dCBmcmFtZSBiZWZvcmUgc3Rhc2hpbmcgZnJhbWUgaWQgZm9yIHByZXZpb3VzIGZyYW1lCi0KLUZp eGVkIGEgc2ltaWxhciBwcm9ibGVtLCBieSBtYWtpbmcgc3VyZSBnZXRfcHJldl9mcmFtZSBjb21w dXRlcyB0aGUKLWZyYW1lIGlkIG9mIHRoZSBjdXJyZW50IGZyYW1lIGJlZm9yZSB1bndpbmRpbmcg dGhlIHByZXZpb3VzIGZyYW1lLCBzbwotdGhhdCB0aGUgY3ljbGUgZGV0ZWN0aW9uIHdvcmtzIHBy b3Blcmx5LiAgVGhhdCBmaXggbWlzc2VzIHRoZSBzY2VuYXJpbwotd2UncmUgbm93IHJ1bm5pbmcg YWdhaW5zdCwgYmVjYXVzZSBpZiB5b3Ugbm90aWNlLCB0aGUgYmFja3RyYWNlIGFib3ZlCi1zaG93 cyB0aGF0IGZyYW1lICM0IGNhbGxzIGdldF9wcmV2X2ZyYW1lX2Fsd2F5cywgbm90IGdldF9wcmV2 X2ZyYW1lLgotSS5lLiwgbm90aGluZyBpcyBjYWxsaW5nIGdldF9mcmFtZV9pZCBvbiB0aGUgY3Vy cmVudCBmcmFtZS4KLQotVGhlIGZpeCBoZXJlIGlzIHRvIG1vdmUgS2V2aW4ncyBmaXggZG93biBm cm9tIGdldF9wcmV2X2ZyYW1lIHRvCi1nZXRfcHJldl9mcmFtZV9hbHdheXMuICBPciBhY3R1YWxs eSwgYSBiaXQgZnVydGhlciBkb3duIHRvCi1nZXRfcHJldl9mcmFtZV9hbHdheXNfMSAtLSBub3Rl IHRoYXQgaW5saW5lX2ZyYW1lX3RoaXNfaWQgY2FsbHMKLWdldF9wcmV2X2ZyYW1lX2Fsd2F5cywg c28gd2UgbmVlZCB0byBiZSBjYXJlZnVsIHRvIGF2b2lkIHJlY3Vyc2lvbiBpbgotdGhhdCBzY2Vu YXJpby4KLQotZ2RiL0NoYW5nZUxvZzoKLQotCSogZnJhbWUuYyAoZ2V0X3ByZXZfZnJhbWUpOiBN b3ZlIGdldF9mcmFtZV9pZCBjYWxsIGZyb20gaGVyZSAuLi4KLQkoZ2V0X3ByZXZfZnJhbWVfYWx3 YXlzXzEpOiAuLi4gdG8gaGVyZS4KLQkqIGlubGluZS1mcmFtZS5jIChpbmxpbmVfZnJhbWVfdGhp c19pZCk6IE1lbnRpb24KLQlnZXRfcHJldl9mcmFtZV9hbHdheXNfMSBpbiBjb21tZW50LgotCi1D aGFuZ2UtSWQ6IElkOTYwYzk4YWIyZDA3MmM0OGE0MzZjM2ViMTYwY2M0YjJhNWNmZDFkCi0KLWRp ZmYgLS1naXQgYS9nZGIvZnJhbWUuYyBiL2dkYi9mcmFtZS5jCi0tLS0gYS9nZGIvZnJhbWUuYwot KysrIGIvZ2RiL2ZyYW1lLmMKLUBAIC0yMTMzLDYgKzIxMzMsMjMgQEAgZ2V0X3ByZXZfZnJhbWVf YWx3YXlzXzEgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQotICAgaWYgKGdldF9mcmFt ZV90eXBlICh0aGlzX2ZyYW1lKSA9PSBJTkxJTkVfRlJBTUUpCi0gICAgIHJldHVybiBnZXRfcHJl dl9mcmFtZV9pZl9ub19jeWNsZSAodGhpc19mcmFtZSk7Ci0gCi0rICAvKiBJZiB0aGlzX2ZyYW1l IGlzIHRoZSBjdXJyZW50IGZyYW1lLCB0aGVuIGNvbXB1dGUgYW5kIHN0YXNoIGl0cwotKyAgICAg ZnJhbWUgaWQgcHJpb3IgdG8gZmV0Y2hpbmcgYW5kIGNvbXB1dGluZyB0aGUgZnJhbWUgaWQgb2Yg dGhlCi0rICAgICBwcmV2aW91cyBmcmFtZS4gIE90aGVyd2lzZSwgdGhlIGN5Y2xlIGRldGVjdGlv biBjb2RlIGluCi0rICAgICBnZXRfcHJldl9mcmFtZV9pZl9ub19jeWNsZSgpIHdpbGwgbm90IHdv cmsgY29ycmVjdGx5LiAgV2hlbgotKyAgICAgZ2V0X2ZyYW1lX2lkKCkgaXMgY2FsbGVkIGxhdGVy IG9uLCBhbiBhc3NlcnRpb24gZXJyb3Igd2lsbCBiZQotKyAgICAgdHJpZ2dlcmVkIGluIHRoZSBl dmVudCBvZiBhIGN5Y2xlIGJldHdlZW4gdGhlIGN1cnJlbnQgZnJhbWUgYW5kCi0rICAgICBpdHMg cHJldmlvdXMgZnJhbWUuCi0rCi0rICAgICBOb3RlIHdlIGRvIHRoaXMgYWZ0ZXIgdGhlIElOTElO RV9GUkFNRSBjaGVjayBhYm92ZS4gIFRoYXQgaXMKLSsgICAgIGJlY2F1c2UgdGhlIGlubGluZSBm cmFtZSdzIGZyYW1lIGlkIGNvbXB1dGF0aW9uIG5lZWRzIHRvIGZldGNoCi0rICAgICB0aGUgZnJh bWUgaWQgb2YgaXRzIHByZXZpb3VzIHJlYWwgc3RhY2sgZnJhbWUuICBJLmUuLCB3ZSBuZWVkIHRv Ci0rICAgICBhdm9pZCByZWN1cnNpb24gaW4gdGhhdCBjYXNlLiAgVGhpcyBpcyBPSyBzaW5jZSB3 ZSdyZSBzdXJlIHRoZQotKyAgICAgaW5saW5lIGZyYW1lIHdvbid0IGNyZWF0ZSBhIGN5Y2xlIHdp dGggdGhlIHJlYWwgc3RhY2sgZnJhbWUuICBTZWUKLSsgICAgIGlubGluZV9mcmFtZV90aGlzX2lk LiAgKi8KLSsgIGlmICh0aGlzX2ZyYW1lLT5sZXZlbCA9PSAwKQotKyAgICBnZXRfZnJhbWVfaWQg KHRoaXNfZnJhbWUpOwotKwotICAgLyogQ2hlY2sgdGhhdCB0aGlzIGZyYW1lIGlzIHVud2luZGFi bGUuICBJZiBpdCBpc24ndCwgZG9uJ3QgdHJ5IHRvCi0gICAgICB1bndpbmQgdG8gdGhlIHByZXYg ZnJhbWUuICAqLwotICAgdGhpc19mcmFtZS0+c3RvcF9yZWFzb24KLUBAIC0yNDEwLDE2ICsyNDI3 LDYgQEAgZ2V0X3ByZXZfZnJhbWUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQotICAg ICAgc29tZXRoaW5nIHNob3VsZCBiZSBjYWxsaW5nIGdldF9zZWxlY3RlZF9mcmFtZSgpIG9yCi0g ICAgICBnZXRfY3VycmVudF9mcmFtZSgpLiAgKi8KLSAgIGdkYl9hc3NlcnQgKHRoaXNfZnJhbWUg IT0gTlVMTCk7Ci0tICAKLS0gIC8qIElmIHRoaXNfZnJhbWUgaXMgdGhlIGN1cnJlbnQgZnJhbWUs IHRoZW4gY29tcHV0ZSBhbmQgc3Rhc2gKLS0gICAgIGl0cyBmcmFtZSBpZCBwcmlvciB0byBmZXRj aGluZyBhbmQgY29tcHV0aW5nIHRoZSBmcmFtZSBpZCBvZiB0aGUKLS0gICAgIHByZXZpb3VzIGZy YW1lLiAgT3RoZXJ3aXNlLCB0aGUgY3ljbGUgZGV0ZWN0aW9uIGNvZGUgaW4KLS0gICAgIGdldF9w cmV2X2ZyYW1lX2lmX25vX2N5Y2xlKCkgd2lsbCBub3Qgd29yayBjb3JyZWN0bHkuICBXaGVuCi0t ICAgICBnZXRfZnJhbWVfaWQoKSBpcyBjYWxsZWQgbGF0ZXIgb24sIGFuIGFzc2VydGlvbiBlcnJv ciB3aWxsCi0tICAgICBiZSB0cmlnZ2VyZWQgaW4gdGhlIGV2ZW50IG9mIGEgY3ljbGUgYmV0d2Vl biB0aGUgY3VycmVudAotLSAgICAgZnJhbWUgYW5kIGl0cyBwcmV2aW91cyBmcmFtZS4gICovCi0t ICBpZiAodGhpc19mcmFtZS0+bGV2ZWwgPT0gMCkKLS0gICAgZ2V0X2ZyYW1lX2lkICh0aGlzX2Zy YW1lKTsKLSAKLSAgIGZyYW1lX3BjX3AgPSBnZXRfZnJhbWVfcGNfaWZfYXZhaWxhYmxlICh0aGlz X2ZyYW1lLCAmZnJhbWVfcGMpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9pbmxpbmUtZnJhbWUuYyBi L2dkYi9pbmxpbmUtZnJhbWUuYwotLS0tIGEvZ2RiL2lubGluZS1mcmFtZS5jCi0rKysgYi9nZGIv aW5saW5lLWZyYW1lLmMKLUBAIC0xNjEsNyArMTYxLDggQEAgaW5saW5lX2ZyYW1lX3RoaXNfaWQg KHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotICAgICAgcmVhbCBmcmFtZSdzIHRoaXNf aWQgbWV0aG9kLiAgU28gd2UgbXVzdCBjYWxsCi0gICAgICBnZXRfcHJldl9mcmFtZV9hbHdheXMu ICBCZWNhdXNlIHdlIGFyZSBpbmxpbmVkIGludG8gc29tZQotICAgICAgZnVuY3Rpb24sIHRoZXJl IG11c3QgYmUgcHJldmlvdXMgZnJhbWVzLCBzbyB0aGlzIGlzIHNhZmUgLSBhcwotLSAgICAgbG9u ZyBhcyB3ZSdyZSBjYXJlZnVsIG5vdCB0byBjcmVhdGUgYW55IGN5Y2xlcy4gICovCi0rICAgICBs b25nIGFzIHdlJ3JlIGNhcmVmdWwgbm90IHRvIGNyZWF0ZSBhbnkgY3ljbGVzLiAgU2VlIHJlbGF0 ZWQKLSsgICAgIGNvbW1lbnRzIGluIGdldF9wcmV2X2ZyYW1lX2Fsd2F5c18xLiAgKi8KLSAgICp0 aGlzX2lkID0gZ2V0X2ZyYW1lX2lkIChnZXRfcHJldl9mcmFtZV9hbHdheXMgKHRoaXNfZnJhbWUp KTsKLSAKLSAgIC8qIFdlIG5lZWQgYSB2YWxpZCBmcmFtZSBJRCwgc28gd2UgbmVlZCB0byBiZSBi YXNlZCBvbiBhIHZhbGlkCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTEyOTg1LWxpYnN0ZGMrKy1h c3NlcnQucGF0Y2ggYi9nZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFzc2VydC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk2ZTMwOS4uMDAwMDAwMAotLS0gYS9nZGItcmhi ejE5MTI5ODUtbGlic3RkYysrLWFzc2VydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICsw LDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDE3IEZlYiAy MDIxIDE3OjU4OjU0IC0wNzAwCi1TdWJqZWN0OiBnZGItcmhiejE5MTI5ODUtbGlic3RkYysrLWFz c2VydC5wYXRjaAotCi07OyBCYWNrcG9ydCBmaXggZm9yIGxpYnN0ZGMrKyBhc3NlcnQgd2hlbiBw ZXJmb3JtaW5nIHRhYiBjb21wbGV0aW9uCi07OyAoUkggQlogMTkxMjk4NSkuCi0KLUZpeCBjb21w bGV0aW9uIHJlbGF0ZWQgbGlic3RkYysrIGFzc2VydCB3aGVuIHVzaW5nIC1EX0dMSUJDWFhfREVC VUcKLQotVGhpcyBjb21taXQgZml4ZXMgYSBsaWJzdGRjKysgYXNzZXJ0aW9uIGZhaWx1cmUgZW5j b3VudGVyZWQgd2hlbgotcnVubmluZyBnZGIuYmFzZS9jb21wbGV0aW9uLmV4cC4gIEluIG9yZGVy IHRvIHNlZSB0aGlzIHByb2JsZW0sCi1HREIgbXVzdCBiZSBidWlsdCB3aXRoIHRoZSBmb2xsb3cg Q0ZMQUdTIGFuZCBDWFhGTEFHUyBhcyBwYXJ0Ci1vZiB0aGUgY29uZmlndXJlIGxpbmU6Ci0KLSAg Q0ZMQUdTPSctRF9HTElCQ1hYX0RFQlVHJyBDWFhGTEFHUz0nLURfR0xJQkNYWF9ERUJVRycKLQot KEFsc28sIHRoaXMgcHJvYmxlbSB3YXMgZW5jb3VudGVyZWQgdXNpbmcgRmVkb3JhIHJhd2hpZGUu ICBJdCBtaWdodAotbm90IGJlIHJlcHJvZHVjaWJsZSBpbiBGZWRvcmEgdmVyc2lvbnMgcHJpb3Ig dG8gRmVkb3JhIDM0LikKLQotVXNpbmcgdGhlIGdkYi5iYXNlL2NvbXBsZXRpb24uZXhwIHRlc3Qg cHJvZ3JhbSwgdGhlIHByb2JsZW0gY2FuIGJlCi1vYnNlcnZlZCBhcyBmb2xsb3dzOgotCi1ba2V2 QHJhd2hpZGUtMSBnZGJdJCAuL2dkYiAtcSB0ZXN0c3VpdGUvb3V0cHV0cy9nZGIuYmFzZS9jb21w bGV0aW9uL2NvbXBsZXRpb24KLVJlYWRpbmcgc3ltYm9scyBmcm9tIHRlc3RzdWl0ZS9vdXRwdXRz L2dkYi5iYXNlL2NvbXBsZXRpb24vY29tcGxldGlvbi4uLgotKGdkYikgc3RhcnQKLVRlbXBvcmFy eSBicmVha3BvaW50IDEgYXQgMHg0MDExNzk6IGZpbGUgLi4vLi4vd29ya3RyZWUtbWFzdGVyL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWsuYywgbGluZSA0My4KLVN0YXJ0aW5nIHByb2dyYW06 IHRlc3RzdWl0ZS9vdXRwdXRzL2dkYi5iYXNlL2NvbXBsZXRpb24vY29tcGxldGlvbgotCi1UZW1w b3JhcnkgYnJlYWtwb2ludCAxLCBtYWluIChhcmdjPTEsIGFyZ3Y9MHg3ZmZmZmZmZmQ3MTgsIGVu dnA9MHg3ZmZmZmZmZmQ3MjgpIGF0IC4uLy4uL3dvcmt0cmVlLW1hc3Rlci9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2JyZWFrLmM6NDMKLTQzCSAgICBpZiAoYXJnYyA9PSAxMjM0NSkgeyAgLyogYW4g dW5saWtlbHkgdmFsdWUgPCAyXjE2LCBpbiBjYXNlIHVuaW5pdGVkICovIC8qIHNldCBicmVha3Bv aW50IDYgaGVyZSAqLwotKGdkYikgcCA8VEFCPi91c3IvaW5jbHVkZS9jKysvMTEvc3RyaW5nX3Zp ZXc6MjExOiBjb25zdGV4cHIgY29uc3QgdmFsdWVfdHlwZSYgc3RkOjpiYXNpY19zdHJpbmdfdmll dzxfQ2hhclQsIF9UcmFpdHM+OjpvcGVyYXRvcltdKHN0ZDo6YmFzaWNfc3RyaW5nX3ZpZXc8X0No YXJULCBfVHJhaXRzPjo6c2l6ZV90eXBlKSBjb25zdCBbd2l0aCBfQ2hhclQgPSBjaGFyOyBfVHJh aXRzID0gc3RkOjpjaGFyX3RyYWl0czxjaGFyPjsgc3RkOjpiYXNpY19zdHJpbmdfdmlldzxfQ2hh clQsIF9UcmFpdHM+Ojpjb25zdF9yZWZlcmVuY2UgPSBjb25zdCBjaGFyJjsgc3RkOjpiYXNpY19z dHJpbmdfdmlldzxfQ2hhclQsIF9UcmFpdHM+OjpzaXplX3R5cGUgPSBsb25nIHVuc2lnbmVkIGlu dF06IEFzc2VydGlvbiAnX19wb3MgPCB0aGlzLT5fTV9sZW4nIGZhaWxlZC4KLUFib3J0ZWQgKGNv cmUgZHVtcGVkKQotCi0oTm90ZSB0aGF0IEkgYWRkZWQgIjxUQUI+IiB0byBtYWtlIGl0IGNsZWFy IHdoZXJlIHRoZSB0YWIga2V5IHdhcwotcHJlc3NlZC4pCi0KLWdkYi9DaGFuZ2VMb2c6Ci0KLQkq IGFkYS1sYW5nLmMgKGFkYV9mb2xkX25hbWUpOiBDaGVjayBmb3Igbm9uLWVtcHR5IHN0cmluZyBw cmlvcgotCXRvIGFjY2Vzc2luZyBpdC4KLQkoYWRhX2xvb2t1cF9uYW1lX2luZm8pOiBMaWtld2lz ZS4KLQotZGlmZiAtLWdpdCBhL2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKLS0tLSBh L2dkYi9hZGEtbGFuZy5jCi0rKysgYi9nZGIvYWRhLWxhbmcuYwotQEAgLTk5Nyw3ICs5OTcsNyBA QCBhZGFfZm9sZF9uYW1lIChnZGI6OnN0cmluZ192aWV3IG5hbWUpCi0gICBpbnQgbGVuID0gbmFt ZS5zaXplICgpOwotICAgR1JPV19WRUNUIChmb2xkX2J1ZmZlciwgZm9sZF9idWZmZXJfc2l6ZSwg bGVuICsgMSk7Ci0gCi0tICBpZiAobmFtZVswXSA9PSAnXCcnKQotKyAgaWYgKCFuYW1lLmVtcHR5 ICgpICYmIG5hbWVbMF0gPT0gJ1wnJykKLSAgICAgewotICAgICAgIHN0cm5jcHkgKGZvbGRfYnVm ZmVyLCBuYW1lLmRhdGEgKCkgKyAxLCBsZW4gLSAyKTsKLSAgICAgICBmb2xkX2J1ZmZlcltsZW4g LSAyXSA9ICdcMDAwJzsKLUBAIC0xMzU5Nyw3ICsxMzU5Nyw3IEBAIGFkYV9sb29rdXBfbmFtZV9p bmZvOjphZGFfbG9va3VwX25hbWVfaW5mbyAoY29uc3QgbG9va3VwX25hbWVfaW5mbyAmbG9va3Vw X25hbWUpCi0gewotICAgZ2RiOjpzdHJpbmdfdmlldyB1c2VyX25hbWUgPSBsb29rdXBfbmFtZS5u YW1lICgpOwotIAotLSAgaWYgKHVzZXJfbmFtZVswXSA9PSAnPCcpCi0rICBpZiAoIXVzZXJfbmFt ZS5lbXB0eSAoKSAmJiB1c2VyX25hbWVbMF0gPT0gJzwnKQotICAgICB7Ci0gICAgICAgaWYgKHVz ZXJfbmFtZS5iYWNrICgpID09ICc+JykKLSAJbV9lbmNvZGVkX25hbWUKCmRpZmYgLS1naXQgYS9n ZGItcmhiejE5MTY1MTYtcGF0aHN0dWZmczEzMi1pbnRlcm5hbC1lcnJvci5wYXRjaCBiL2dkYi1y aGJ6MTkxNjUxNi1wYXRoc3R1ZmZzMTMyLWludGVybmFsLWVycm9yLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBiYjBjZDlkLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTkxNjUx Ni1wYXRoc3R1ZmZzMTMyLWludGVybmFsLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NjcgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IEJydW5vIExhcnNlbiA8YmxhcnNlbkByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAyMiBT ZXAgMjAyMSAxMjoyMjo0NCAtMDMwMAotU3ViamVjdDogZ2RiLXJoYnoxOTE2NTE2LXBhdGhzdHVm ZnMxMzItaW50ZXJuYWwtZXJyb3IucGF0Y2gKLQotOztbZ2RiL2NsaV0gRG9uJ3QgYXNzZXJ0IG9u IGVtcHR5IHN0cmluZyBmb3IgY29yZS1maWxlCi07OyhUb20gZGUgVnJpZXMpCi0KLVdpdGggY3Vy cmVudCBnZGIgd2UgcnVuIGludG86Ci0uLi4KLSQgZ2RiIC1iYXRjaCAnJyAnJwotOiBObyBzdWNo IGZpbGUgb3IgZGlyZWN0b3J5LgotcGF0aHN0dWZmLmNjOjEzMjogaW50ZXJuYWwtZXJyb3I6IFwK LSAgZ2RiOjp1bmlxdWVfeG1hbGxvY19wdHI8Y2hhcj4gZ2RiX2Fic3BhdGgoY29uc3QgY2hhciop OiBcCi0gIEFzc2VydGlvbiBgcGF0aCAhPSBOVUxMICYmIHBhdGhbMF0gIT0gJ1wwJycgZmFpbGVk LgotLi4uCi0KLUZpeCB0aGlzIGJ5IHNraXBwaW5nIHRoZSBjYWxsIHRvIGdkYl9hYnNwYXRoIGlu IGNvcmVfdGFyZ2V0X29wZW4gaW4gdGhlCi1lbXB0eS1zdHJpbmcgY2FzZSwgc3VjaCB0aGF0IHdl IGhhdmUgaW5zdGVhZDoKLS4uLgotJCBnZGIgLWJhdGNoICcnICcnCi06IE5vIHN1Y2ggZmlsZSBv ciBkaXJlY3RvcnkuCi06IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCi0kCi0uLi4KLQotVGVz dGVkIG9uIHg4Nl82NC1saW51eC4KLQotZ2RiL0NoYW5nZUxvZzoKLQotMjAyMS0wOC0zMCAgVG9t IGRlIFZyaWVzICA8dGRldnJpZXNAc3VzZS5kZT4KLQotCVBSIGNsaS8yODI5MAotCSogZ2RiL2Nv cmVsb3cuYyAoY29yZV90YXJnZXRfb3Blbik6IFNraXAgY2FsbCB0byBnZGJfYWJzcGF0aCBpbiB0 aGUKLQllbXB0eS1zdHJpbmcgY2FzZS4KLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Ci0KLTIw MjEtMDgtMzAgIFRvbSBkZSBWcmllcyAgPHRkZXZyaWVzQHN1c2UuZGU+Ci0KLQlQUiBjbGkvMjgy OTAKLQkqIGdkYi5iYXNlL2JhdGNoLWV4aXQtc3RhdHVzLmV4cDogQWRkIGdkYiAnJyBhbmQgZ2Ri ICcnICcnIHRlc3RzLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvcmVsb3cuYyBiL2dkYi9jb3JlbG93 LmMKLS0tLSBhL2dkYi9jb3JlbG93LmMKLSsrKyBiL2dkYi9jb3JlbG93LmMKLUBAIC00NDYsNyAr NDQ2LDggQEAgY29yZV90YXJnZXRfb3BlbiAoY29uc3QgY2hhciAqYXJnLCBpbnQgZnJvbV90dHkp Ci0gICAgIH0KLSAKLSAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNoYXI+IGZpbGVuYW1lICh0 aWxkZV9leHBhbmQgKGFyZykpOwotLSAgaWYgKCFJU19BQlNPTFVURV9QQVRIIChmaWxlbmFtZS5n ZXQgKCkpKQotKyAgaWYgKHN0cmxlbiAoZmlsZW5hbWUuZ2V0ICgpKSAhPSAwCi0rICAgICAgJiYg IUlTX0FCU09MVVRFX1BBVEggKGZpbGVuYW1lLmdldCAoKSkpCi0gICAgIGZpbGVuYW1lID0gZ2Ri X2Fic3BhdGggKGZpbGVuYW1lLmdldCAoKSk7Ci0gCi0gICBmbGFncyA9IE9fQklOQVJZIHwgT19M QVJHRUZJTEU7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9iYXRjaC1leGl0 LXN0YXR1cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JhdGNoLWV4aXQtc3RhdHVzLmV4 cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9iYXRjaC1leGl0LXN0YXR1cy5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYmF0Y2gtZXhpdC1zdGF0dXMuZXhwCi1AQCAtNzYs MyArNzYsNyBAQCB0ZXN0X2V4aXRfc3RhdHVzIDEgIi1iYXRjaCAteCAkZ29vZF9jb21tYW5kcyAt eCAkYmFkX2NvbW1hbmRzIiBcCi0gICAgICItYmF0Y2ggLXggZ29vZC1jb21tYW5kcyAteCBiYWQt Y29tbWFuZHMiCi0gdGVzdF9leGl0X3N0YXR1cyAxICItYmF0Y2ggLXggJGdvb2RfY29tbWFuZHMg LWV4IFwic2V0IG5vdC1hLXRoaW5nIDRcIiIgXAotICAgICAiLWJhdGNoIC14IGdvb2QtY29tbWFu ZHMgLWV4IFwic2V0IG5vdC1hLXRoaW5nIDRcIiIKLSsKLStzZXQgbm9fc3VjaF9yZSAiOiBObyBz dWNoIGZpbGUgb3IgZGlyZWN0b3J5XFwuIgotK3Rlc3RfZXhpdF9zdGF0dXMgMSAiLWJhdGNoIFwi XCIiICRub19zdWNoX3JlCi0rdGVzdF9leGl0X3N0YXR1cyAxICItYmF0Y2ggXCJcIiBcIlwiIiBb bXVsdGlfbGluZSAkbm9fc3VjaF9yZSAkbm9fc3VjaF9yZV0KCmRpZmYgLS1naXQgYS9nZGItcmhi ejE5MzEzNDQtYmZkX3NlZWstZWxmX3JlYWRfbm90ZXMucGF0Y2ggYi9nZGItcmhiejE5MzEzNDQt YmZkX3NlZWstZWxmX3JlYWRfbm90ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGUyMTJkYzYuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTMxMzQ0LWJmZF9zZWVrLWVsZl9y ZWFkX25vdGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSBGRURP UkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlaXRoIFNlaXR6IDxr ZWl0aHNAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgMjUgTWFyIDIwMjEgMTA6MzE6NDggLTA3MDAK LVN1YmplY3Q6IGdkYi1yaGJ6MTkzMTM0NC1iZmRfc2Vlay1lbGZfcmVhZF9ub3Rlcy5wYXRjaAot Ci07OyBCYWNrcG9ydCAiU2F2ZS9yZXN0b3JlIGZpbGUgb2Zmc2V0IHdoaWxlIHJlYWRpbmcgbm90 ZXMgaW4gY29yZSBmaWxlIgotOzsgKEtlaXRoIFNlaXR6LCBSSEJaIDE5MzEzNDQpCi0KLUEgcmVj ZW50IGJ1ZyAoUkggQlogMTkzMTM0NCkgaGFzIGV4cG9zZWQgYSBidWcgaW4gdGhlIGNvcmUgZmls ZQotYnVpbGQtSUQgc3VwcG9ydCB0aGF0IEkgaW50cm9kdWNlZCBhIHdoaWxlIGFnby4gSXQgaXMg cHJldHR5Ci1lYXN5IHRvIGRlbW9uc3RhdGUgdGhlIHByb2JsZW0gZm9sbG93aW5nIGEgc2ltcGxp ZmllZCBwcm9jZWR1cmUKLW91dGxpbmVkIGluIHRoYXQgYnVnOgotCi1bc2hlbGwxXQotc2hlbGwx JCAvdXNyL2xpYmV4ZWMvcWVtdS1rdm0KLQotW3NoZWxsMl0KLXNoZWxsMiQgcGtpbGwgLVNFR1Yg LXggcWVtdS1rdm0KLQotW3NoZWxsMV0KLVNlZ21lbnRhdGlvbiBmYXVsdCAoY29yZSBkdW1wZWQp Ci0KLUxvYWQgdGhpcyBjb3JlIGZpbGUgaW50byBHREIgd2l0aG91dCBzcGVjaWZ5aW5nIGFuIGV4 ZWN1dGFibGUKLShhbiB1bmZvcnR1bmF0ZSBGZWRvcmEvUkhFTC1pc20pLCBhbmQgR0RCIHdpbGwg aW5mb3JtIHRoZSB1c2VyCi10byBpbnN0YWxsIGRlYnVnaW5mbyBmb3IgdGhlICJtaXNzaW5nIiBl eGVjdXRhYmxlOgotCi0kIGdkYiAtbnggLXEgY29yZS4xMjM0NQotLi4uCi1NaXNzaW5nIHNlcGFy YXRlIGRlYnVnaW5mbyBmb3IgdGhlIG1haW4gZXhlY3V0YWJsZSBmaWxlCi1Ucnk6IGRuZiAtLWVu YWJsZXJlcG89JypkZWJ1ZyonIGluc3RhbGwgL3Vzci9saWIvZGVidWcvLmJ1aWxkLWlkL2UyL2U5 YzY2ZDMxMTdmYjJiYmI1YjJiZTEyMmYwNGYyNjY0ZTVkZjU0Ci1Db3JlIHdhcyBnZW5lcmF0ZWQg YnkgYC91c3IvbGliZXhlYy9xZW11LWt2bScuCi1Qcm9ncmFtIHRlcm1pbmF0ZWQgd2l0aCBzaWdu YWwgU0lHU0VHViwgU2VnbWVudGF0aW9uIGZhdWx0LgotLi4uCi0KLVRoZSBzdWdnZXN0ZWQgYnVp bGQtSUQgaXMgYWN0YXVsbHkgZm9yIGdtcCBub3QgcWVtdS1rdm0uIFRoZSBwcm9ibGVtCi1saWVz IGluIF9iZmRfZWxmX2NvcmVfZmluZF9idWlsZF9pZCwgd2hlcmUgd2UgbG9vcCBvdmVyIHByb2dy YW0gaGVhZGVycwotbG9va2luZyBmb3Igbm90ZSBzZWdtZW50czoKLQotICAvKiBSZWFkIGluIHBy b2dyYW0gaGVhZGVycyBhbmQgcGFyc2Ugbm90ZXMuICAqLwotICBmb3IgKGkgPSAwOyBpIDwgaV9l aGRyLmVfcGhudW07ICsraSwgKytpX3BoZHIpCi0gICAgewotICAgICAgRWxmX0V4dGVybmFsX1Bo ZHIgeF9waGRyOwotCi0gICAgICBpZiAoYmZkX2JyZWFkICgmeF9waGRyLCBzaXplb2YgKHhfcGhk ciksIGFiZmQpICE9IHNpemVvZiAoeF9waGRyKSkKLSAgICAgICAgZ290byBmYWlsOwotICAgICAg ZWxmX3N3YXBfcGhkcl9pbiAoYWJmZCwgJnhfcGhkciwgaV9waGRyKTsKLQotICAgICAgaWYgKGlf cGhkci0+cF90eXBlID09IFBUX05PVEUgJiYgaV9waGRyLT5wX2ZpbGVzeiA+IDApCi0gICAgICAg IHsKLSAgICAgICAgICBlbGZfcmVhZF9ub3RlcyAoYWJmZCwgb2Zmc2V0ICsgaV9waGRyLT5wX29m ZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaV9waGRyLT5wX2ZpbGVzeiwgaV9waGRy LT5wX2FsaWduKTsKLQotICAgICAgICAgIGlmIChhYmZkLT5idWlsZF9pZCAhPSBOVUxMKQotICAg ICAgICAgICAgcmV0dXJuIFRSVUU7Ci0gICAgICAgIH0KLQotZWxmX3JlYWRfbm90ZXMgdXNlcyBi ZmRfc2VlayB0byBmb3J3YXJkIHRoZSBzdHJlYW0gdG8gdGhlIGxvY2F0aW9uIG9mCi10aGUgbm90 ZSBzZWdtZW50LiBXaGVuIGNvbnRyb2wgcmV0dXJucyB0byBfYmZkX2VsZl9jb3JlX2ZpbGRfYnVp bGRfaWQsCi10aGUgc3RyZWFtIGlzIG5vIGxvbmdlciBpbiB0aGUgbG9jYXRpb24gbG9va2luZyBh dCBwcm9ncmFtIGhlYWRlcnMsIGFuZAotYWxsIHN1YnNlcXVlbnQgcmVhZHMgd2lsbCByZWFkIGZy b20gdGhlIHdyb25nIGZpbGUgb2Zmc2V0LgotCi1UbyBmaXggdGhpcywgdGhpcyBwYXRjaCBtYXJr cyB0aGUgc3RyZWFtIGxvY2F0aW9uIGFuZCBlbnN1cmVzCi10aGF0IGl0IGlzIHJlc3RvcmVkIGFm dGVyIGVsZl9yZWFkX25vdGVzIGlzIGNhbGxlZC4KLQotYmZkL0NoYW5nZUxvZwotMjAyMS0wMy0y NiAgS2VpdGggU2VpdHogIDxrZWl0aHNAcmVkaGF0LmNvbT4KLQotCSogZWxmY29yZS5oIChfYmZk X2VsZl9jb3JlX2ZpbmRfYnVpbGRfaWQpOiBTZWVrIGZpbGUKLQlvZmZzZXQgb2YgcHJvZ3JhbSBo ZWFkZXJzIGFmdGVyIGNhbGxpbmcgZWxmX3JlYWRfbm90ZXMuCi0KLWRpZmYgLS1naXQgYS9iZmQv ZWxmY29yZS5oIGIvYmZkL2VsZmNvcmUuaAotLS0tIGEvYmZkL2VsZmNvcmUuaAotKysrIGIvYmZk L2VsZmNvcmUuaAotQEAgLTQxMCw2ICs0MTAsMTMgQEAgTkFNRShfYmZkX2VsZiwgY29yZV9maW5k X2J1aWxkX2lkKQotIAl7Ci0gCSAgZWxmX3JlYWRfbm90ZXMgKGFiZmQsIG9mZnNldCArIGlfcGhk ci0+cF9vZmZzZXQsCi0gCQkJICBpX3BoZHItPnBfZmlsZXN6LCBpX3BoZHItPnBfYWxpZ24pOwot KwotKwkgIC8qIE1ha2Ugc3VyZSBBQkZEIHJldHVybnMgdG8gcHJvY2Vzc2luZyB0aGUgcHJvZ3Jh bSBoZWFkZXJzLiAgKi8KLSsJICBpZiAoYmZkX3NlZWsgKGFiZmQsIChmaWxlX3B0cikgKG9mZnNl dCArIGlfZWhkci5lX3Bob2ZmCi0rCQkJCQkgICsgKGkgKyAxKSAqIHNpemVvZiAoeF9waGRyKSks Ci0rCQkJU0VFS19TRVQpICE9IDApCi0rCSAgICBnb3RvIGZhaWw7Ci0rCi0gCSAgaWYgKGFiZmQt PmJ1aWxkX2lkICE9IE5VTEwpCi0gCSAgICByZXR1cm4gVFJVRTsKLSAJfQoKZGlmZiAtLWdpdCBh L2dkYi1yaGJ6MTk0MTA4MC1maXgtZ2Ric2VydmVyLWhhbmcucGF0Y2ggYi9nZGItcmhiejE5NDEw ODAtZml4LWdkYnNlcnZlci1oYW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBlNjM5ZGUxLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk0MTA4MC1maXgtZ2Ric2VydmVyLWhh bmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmlu YkByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAxOSBNYXIgMjAyMSAxNToxNDowNCAtMDcwMAotU3Vi amVjdDogZ2RiLXJoYnoxOTQxMDgwLWZpeC1nZGJzZXJ2ZXItaGFuZy5wYXRjaAotCi07OyBCYWNr cG9ydCBjaGFuZ2Ugd2hpY2ggZml4ZXMgZ2Ric2VydmVyIHRlc3RpbmcgaGFuZyBvbiBmMzQgYW5k IHJhd2hpZGUuCi0KLUZpeCBwb3RlbnRpYWwgaGFuZyBkdXJpbmcgZ2Ric2VydmVyIHRlc3RpbmcK LQotV2UncmUgY3VycmVudGx5IHNlZWluZyB0ZXN0aW5nIG9mIG5hdGl2ZS1leHRlbmRlZC1nZGJz ZXJ2ZXIgaGFuZyB3aGlsZQotdGVzdGluZyB0aGUgeDg2XzY0IGFyY2hpdGVjdHVyZSBvbiBib3Ro IEZlZG9yYSAzNCBhbmQgRmVkb3JhIFJhd2hpZGUuCi1UaGUgdGVzdCByZXNwb25zaWJsZSBmb3Ig dGhlIGhhbmcgaXMgZ2RiLnRocmVhZHMvZm9yay1wbHVzLXRocmVhZHMuZXhwLgotCi1XaGlsZSB0 aGVyZSBpcyBjbGVhcmx5IGEgcHJvYmxlbS9idWcgd2l0aCB0aGlzIHRlc3Qgb24gRjM0IGFuZAot UmF3aGlkZSwgaXQncyBhbHNvIHRoZSBjYXNlIHRoYXQgdGVzdGluZyBzaG91bGQgbm90IGhhbmcu ICBUaGlzIGNvbW1pdAotcHJldmVudHMgdGhlIGhhbmcgYnkgd2FpdGluZyB3aXRoIHRoZSAiLW5v d2FpdCIgZmxhZyBpbgotY2xvc2VfZ2Ric2VydmVyLgotCi1UaGUgLW5vd2FpdCBmbGFnIGlzIGFs c28gdXNlZCBpbiB0aGUga2lsbF93YWl0X3NwYXduZWRfcHJvY2VzcyBwcm9jIGluCi1nZGIvdGVz dHN1aXRlL2xpYi9nZGIuZXhwLCBzbyB0aGVyZSBpcyBwcmVjZWRlbnQgZm9yIGRvaW5nIHRoaXMu Ci0KLVRoZXJlIGFyZSBhbHNvIDE1IG90aGVyIHVzZXMgb2YgIndhaXQgLWkiIHNjYXR0ZXJlZCB0 aHJvdWdob3V0IHRoZQotdGVzdCBzdWl0ZS4gIFdoaWxlIGl0J3MgdGVtcHRpbmcgdG8gY2hhbmdl IHRoZXNlIHRvIGFsc28gdXNlIHRoZQotLW5vd2FpdCBmbGFnLCBJIHRoaW5rIGl0IG1pZ2h0IGJl IHNhZmVyIHRvIGRlZmVyIGRvaW5nIHNvIHVudGlsIHdlCi1hY3R1YWxseSBzZWUgYSBwcm9ibGVt LgotCi1JJ3ZlIHRlc3RlZCB0aGlzIHBhdGNoIG9uIEZlZG9yYSAzMiwgMzMsIDM0LCBhbmQgUmF3 aGlkZS4gIFJlc3VsdHMgYXJlCi1jb21wYXJhYmxlIG9uIEZlZG9yYSAzMiBhbmQgMzMuICBPbiBG ZWRvcmEgMzQgYW5kIFJhd2hpZGUsIHdpdGggdGhpcwotY29tbWl0IGluIHBsYWNlLCB0ZXN0aW5n IGNvbXBsZXRlcyB3aGVuIHRoZSB0YXJnZXRfYm9hcmQgaXMKLW5hdGl2ZS1leHRlbmRlZC1nZGJz ZXJ2ZXIuICBPbiB0aG9zZSBPU2VzLCB3aGVuIG5vdCB1c2luZyB0aGlzIGNvbW1pdCwKLXRlc3Rp bmcgdXN1YWxseSBoYW5ncyBkdWUgdG8gYSBwcm9ibGVtIHdpdGgKLWdkYi50aHJlYWRzL2Zvcmst cGx1cy10aHJlYWRzLmV4cC4gIEkndmUgYWxzbyB0ZXN0ZWQgb24gYWxsIG9mIHRoZQotbWVudGlv bmVkIE9TZXMgd2l0aCB0YXJnZXRfYm9hcmQ9bmF0aXZlLWdkYnNlcnZlcjsgZm9yIHRoYXQgdGVz dGluZywKLUkgYWNoaWV2ZWQgY29tcGFyYWJsZSByZXN1bHRzIG92ZXIgYSBudW1iZXIgb2YgcnVu cy4gIChVbmZvcnR1bmF0ZWx5Ci1yZXN1bHRzIGFyZSByYXJlbHkgaWRlbnRpY2FsIGR1ZSB0byBy YWN5IHRlc3RzLikKLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Ci0KLQkqIGxpYi9nZGJzZXJ2 ZXItc3VwcG9ydC5leHAgKGdkYnNlcnZlcl9leGl0KTogVXNlIHRoZQotCSItbm93YWl0IiBmbGFn IHdoZW4gd2FpdGluZyBmb3IgZ2Ric2VydmVyIHRvIGV4aXQuCi0KLWRpZmYgLS1naXQgYS9nZGIv dGVzdHN1aXRlL2xpYi9nZGJzZXJ2ZXItc3VwcG9ydC5leHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9n ZGJzZXJ2ZXItc3VwcG9ydC5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYnNlcnZlci1z dXBwb3J0LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2Ric2VydmVyLXN1cHBvcnQuZXhw Ci1AQCAtNDE4LDcgKzQxOCwxMiBAQCBwcm9jIGNsb3NlX2dkYnNlcnZlciB7fSB7Ci0gICAgIHZl cmJvc2UgIlF1aXR0aW5nIEdEQnNlcnZlciIKLSAKLSAgICAgY2F0Y2ggImNsb3NlIC1pICRzZXJ2 ZXJfc3Bhd25faWQiCi0tICAgIGNhdGNoICJ3YWl0IC1pICRzZXJ2ZXJfc3Bhd25faWQiCi0rCi0r ICAgICMgSWYgZ2Ric2VydmVyIG1pc2JlaGF2ZXMsIGFuZCBpZ25vcmVzIHRoZSBjbG9zZSwgd2Fp dGluZyBmb3IgaXQKLSsgICAgIyB3aXRob3V0IHRoZSAtbm93YWl0IGZsYWcgd2lsbCBjYXVzZSB0 ZXN0aW5nIHRvIGhhbmcuICBQYXNzaW5nCi0rICAgICMgLW5vd2FpdCBtYWtlcyBleHBlY3QgdGVs bCBUY2wgdG8gd2FpdCBmb3IgdGhlIHByb2Nlc3MgaW4gdGhlCi0rICAgICMgYmFja2dyb3VuZC4K LSsgICAgY2F0Y2ggIndhaXQgLW5vd2FpdCAtaSAkc2VydmVyX3NwYXduX2lkIgotICAgICB1bnNl dCBzZXJ2ZXJfc3Bhd25faWQKLSB9Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0MTY3LWNv bnZlcnQtZW51bS1yYW5nZV90eXBlLnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3LWNvbnZlcnQtZW51 bS1yYW5nZV90eXBlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlY2Y4MDQy Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk2NDE2Ny1jb252ZXJ0LWVudW0tcmFuZ2VfdHlwZS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3NSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVT IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkBy ZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNzoxMDoyOCAtMDcwMAotU3ViamVj dDogZ2RiLXJoYnoxOTY0MTY3LWNvbnZlcnQtZW51bS1yYW5nZV90eXBlLnBhdGNoCi0KLTs7IFtm b3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCBjaGFuZ2VzIGVu dW0KLTs7IHJhbmdlX3R5cGUgaW50byBhIGJpdCBmaWVsZCBlbnVtLgotCi1nZGI6IENvbnZlcnQg ZW51bSByYW5nZV90eXBlIHRvIGEgYml0IGZpZWxkIGVudW0KLQotVGhlIGV4cHJlc3Npb24gcmFu Z2VfdHlwZSBlbnVtIHJlcHJlc2VudHMgdGhlIGZvbGxvd2luZyBpZGVhczoKLQotICAtIExvd2Vy IGJvdW5kIGlzIHNldCB0byBkZWZhdWx0LAotICAtIFVwcGVyIGJvdW5kIGlzIHNldCB0byBkZWZh dWx0LAotICAtIFVwcGVyIGJvdW5kIGlzIGV4Y2x1c2l2ZS4KLQotVGhlcmUgYXJlIGN1cnJlbnRs eSA2IGVudHJpZXMgaW4gdGhlIGVudW0gdG8gcmVwcmVzZW50IHRoZSBjb21iaW5hdGlvbgotb2Yg YWxsIHRob3NlIGlkZWFzLgotCi1JbiBhIGZ1dHVyZSBjb21taXQgSSdkIGxpa2UgdG8gYWRkIHN0 cmlkZSBpbmZvcm1hdGlvbiB0byB0aGUgcmFuZ2UsCi10aGlzIGNvdWxkIGluIHRoZW9yeSBhcHBl YXIgd2l0aCBhbnkgb2YgdGhlIGV4aXN0aW5nIGVudW0gZW50cmllcywgc28KLXRoaXMgd291bGQg dGFrZSB1cyB0byAxMiBlbnVtIGVudHJpZXMuCi0KLVRoaXMgZmVlbHMgbGlrZSBpdHMgZ2V0dGlu ZyBhIGxpdHRsZSBvdXQgb2YgaGFuZCwgc28gaW4gdGhpcyBjb21taXQgSQotc3dpdGNoIHRoZSBy YW5nZV90eXBlIGVudW0gb3ZlciB0byBiZWluZyBhIGZsYWdzIHN0eWxlIGVudW0uICBUaGVyZSdz Ci1vbmUgZW50cnkgdG8gcmVwcmVzZW50IG5vIGZsYWdzIGJlaW5nIHNldCwgdGhlbiAzIGZsYWdz IHRvIHJlcHJlc2VudAotdGhlIDMgaWRlYXMgYWJvdmUuICBBZGRpbmcgc3RyaWRlIGluZm9ybWF0 aW9uIHdpbGwgcmVxdWlyZSBhZGRpbmcgb25seQotb25lIG1vcmUgZW51bSBmbGFnLgotCi1JJ3Zl IHRoZW4gZ29uZSB0aHJvdWdoIGFuZCB1cGRhdGVkIHRoZSBjb2RlIHRvIGhhbmRsZSB0aGlzIGNo YW5nZS4KLQotVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRo aXMgY29tbWl0LgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBleHBwcmludC5jIChwcmludF9zdWJl eHBfc3RhbmRhcmQpOiBVcGRhdGUgdG8gcmVmbGVjdCBjaGFuZ2VzIHRvCi0JZW51bSByYW5nZV90 eXBlLgotCShkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkKTogTGlrZXdpc2UuCi0JKiBleHByZXNz aW9uLmggKGVudW0gcmFuZ2VfdHlwZSk6IENvbnZlcnQgdG8gYSBiaXQgZmllbGQgZW51bSwgYW5k Ci0JbWFrZSB0aGUgZW51bSB1bnNpZ25lZC4KLQkqIGYtZXhwLnkgKHN1YnJhbmdlKTogVXBkYXRl IHRvIHJlZmxlY3QgY2hhbmdlcyB0byBlbnVtCi0JcmFuZ2VfdHlwZS4KLQkqIGYtbGFuZy5jICh2 YWx1ZV9mOTBfc3ViYXJyYXkpOiBMaWtld2lzZS4KLQkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0 aF9zdGFuZGFyZCk6IExpa2V3aXNlLgotCSogcnVzdC1leHAueSAocnVzdF9wYXJzZXI6OmNvbnZl cnRfYXN0X3RvX2V4cHJlc3Npb24pOiBMaWtld2lzZS4KLQkqIHJ1c3QtbGFuZy5jIChydXN0X3Jh bmdlKTogTGlrZXdpc2UuCi0JKHJ1c3RfY29tcHV0ZV9yYW5nZSk6IExpa2V3aXNlLgotCShydXN0 X3N1YnNjcmlwdCk6IExpa2V3aXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4cHByaW50LmMgYi9n ZGIvZXhwcHJpbnQuYwotLS0tIGEvZ2RiL2V4cHByaW50LmMKLSsrKyBiL2dkYi9leHBwcmludC5j Ci1AQCAtNTg0LDE3ICs1ODQsMTMgQEAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSAJICBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3Bj ICsgMV0ubG9uZ2NvbnN0KTsKLSAJKnBvcyArPSAyOwotIAotLQlpZiAocmFuZ2VfdHlwZSA9PSBO T05FX0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFCi0tCSAgICB8fCByYW5nZV90eXBlID09IExPV19C T1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsJaWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JP VU5EX0VYQ0xVU0lWRSkKLSAJICBmcHV0c19maWx0ZXJlZCAoIkVYQ0xVU0lWRV8iLCBzdHJlYW0p OwotIAlmcHV0c19maWx0ZXJlZCAoIlJBTkdFKCIsIHN0cmVhbSk7Ci0tCWlmIChyYW5nZV90eXBl ID09IEhJR0hfQk9VTkRfREVGQVVMVAotLQkgICAgfHwgcmFuZ2VfdHlwZSA9PSBOT05FX0JPVU5E X0RFRkFVTFQKLS0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xV U0lWRSkKLSsJaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKLSAJ ICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOwotIAlm cHV0c19maWx0ZXJlZCAoIi4uIiwgc3RyZWFtKTsKLS0JaWYgKHJhbmdlX3R5cGUgPT0gTE9XX0JP VU5EX0RFRkFVTFQKLS0JICAgIHx8IHJhbmdlX3R5cGUgPT0gTk9ORV9CT1VORF9ERUZBVUxUKQot KwlpZiAoIShyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKLSAJICBwcmlu dF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVfQ09NTUEpOwotIAlmcHV0c19m aWx0ZXJlZCAoIikiLCBzdHJlYW0pOwotIAlyZXR1cm47Ci1AQCAtMTExNCwzNiArMTExMCwxOSBA QCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkg IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29uc3QpOwotIAllbHQgKz0gMjsK LSAKLS0Jc3dpdGNoIChyYW5nZV90eXBlKQotLQkgIHsKLS0JICBjYXNlIEJPVEhfQk9VTkRfREVG QVVMVDoKLS0JICAgIGZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJy4uJyIsIHN0cmVhbSk7Ci0tCSAg ICBicmVhazsKLS0JICBjYXNlIExPV19CT1VORF9ERUZBVUxUOgotLQkgICAgZnB1dHNfZmlsdGVy ZWQgKCJSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsKLS0JICAgIGJyZWFrOwotLQkgIGNhc2UgTE9X X0JPVU5EX0RFRkFVTFRfRVhDTFVTSVZFOgotLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJFeGNsdXNp dmVSYW5nZSAnLi5FWFAnIiwgc3RyZWFtKTsKLS0JICAgIGJyZWFrOwotLQkgIGNhc2UgSElHSF9C T1VORF9ERUZBVUxUOgotLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnRVhQLi4nIiwgc3Ry ZWFtKTsKLS0JICAgIGJyZWFrOwotLQkgIGNhc2UgTk9ORV9CT1VORF9ERUZBVUxUOgotLQkgICAg ZnB1dHNfZmlsdGVyZWQgKCJSYW5nZSAnRVhQLi5FWFAnIiwgc3RyZWFtKTsKLS0JICAgIGJyZWFr OwotLQkgIGNhc2UgTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRToKLS0JICAgIGZwdXRzX2Zp bHRlcmVkICgiRXhjbHVzaXZlUmFuZ2UgJ0VYUC4uRVhQJyIsIHN0cmVhbSk7Ci0tCSAgICBicmVh azsKLS0JICBkZWZhdWx0OgotLQkgICAgZnB1dHNfZmlsdGVyZWQgKCJJbnZhbGlkIFJhbmdlISIs IHN0cmVhbSk7Ci0tCSAgICBicmVhazsKLS0JICB9Ci0rCWlmIChyYW5nZV90eXBlICYgUkFOR0Vf SElHSF9CT1VORF9FWENMVVNJVkUpCi0rCSAgZnB1dHNfZmlsdGVyZWQgKCJFeGNsdXNpdmUiLCBz dHJlYW0pOwotKwlmcHV0c19maWx0ZXJlZCAoIlJhbmdlICciLCBzdHJlYW0pOwotKwlpZiAoIShy YW5nZV90eXBlICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQotKwkgIGZwdXRzX2ZpbHRlcmVk ICgiRVhQIiwgc3RyZWFtKTsKLSsJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7Ci0rCWlm ICghKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotKwkgIGZwdXRzX2Zp bHRlcmVkICgiRVhQIiwgc3RyZWFtKTsKLSsJZnB1dHNfZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsK LSAKLS0JaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUCi0tCSAgICB8fCByYW5n ZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdF X0xPV19CT1VORF9ERUZBVUxUKSkKLSAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0s IGVsdCk7Ci0tCWlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9ERUZBVUxUCi0tCSAgICB8fCBy YW5nZV90eXBlID09IE5PTkVfQk9VTkRfREVGQVVMVCkKLSsJaWYgKCEocmFuZ2VfdHlwZSAmIFJB TkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCi0gCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3Ry ZWFtLCBlbHQpOwotICAgICAgIH0KLSAgICAgICBicmVhazsKLWRpZmYgLS1naXQgYS9nZGIvZXhw cmVzc2lvbi5oIGIvZ2RiL2V4cHJlc3Npb24uaAotLS0tIGEvZ2RiL2V4cHJlc3Npb24uaAotKysr IGIvZ2RiL2V4cHJlc3Npb24uaAotQEAgLTE4NSwyMiArMTg1LDIyIEBAIGV4dGVybiB2b2lkIGR1 bXBfcHJlZml4X2V4cHJlc3Npb24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxl ICopOwotICAgIG9yIGluY2x1c2l2ZS4gIFNvIHdlIGhhdmUgc2l4IHNvcnRzIG9mIHN1YnJhbmdl LiAgVGhpcyBlbnVtZXJhdGlvbgotICAgIHR5cGUgaXMgdG8gaWRlbnRpZnkgdGhpcy4gICovCi0g Ci0tZW51bSByYW5nZV90eXBlCi0rZW51bSByYW5nZV90eXBlIDogdW5zaWduZWQKLSB7Ci0tICAv KiBOZWl0aGVyIHRoZSBsb3cgbm9yIHRoZSBoaWdoIGJvdW5kIHdhcyBnaXZlbiAtLSBzbyB0aGlz IHJlZmVycyB0bwotLSAgICAgdGhlIGVudGlyZSBhdmFpbGFibGUgcmFuZ2UuICAqLwotLSAgQk9U SF9CT1VORF9ERUZBVUxULAotLSAgLyogVGhlIGxvdyBib3VuZCB3YXMgbm90IGdpdmVuIGFuZCB0 aGUgaGlnaCBib3VuZCBpcyBpbmNsdXNpdmUuICAqLwotLSAgTE9XX0JPVU5EX0RFRkFVTFQsCi0t ICAvKiBUaGUgaGlnaCBib3VuZCB3YXMgbm90IGdpdmVuIGFuZCB0aGUgbG93IGJvdW5kIGluIGlu Y2x1c2l2ZS4gICovCi0tICBISUdIX0JPVU5EX0RFRkFVTFQsCi0tICAvKiBCb3RoIGJvdW5kcyB3 ZXJlIGdpdmVuIGFuZCBib3RoIGFyZSBpbmNsdXNpdmUuICAqLwotLSAgTk9ORV9CT1VORF9ERUZB VUxULAotLSAgLyogVGhlIGxvdyBib3VuZCB3YXMgbm90IGdpdmVuIGFuZCB0aGUgaGlnaCBib3Vu ZCBpcyBleGNsdXNpdmUuICAqLwotLSAgTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSwKLS0g IC8qIEJvdGggYm91bmRzIHdlcmUgZ2l2ZW4uICBUaGUgbG93IGJvdW5kIGlzIGluY2x1c2l2ZSBh bmQgdGhlIGhpZ2gKLS0gICAgIGJvdW5kIGlzIGV4Y2x1c2l2ZS4gICovCi0tICBMT1dfQk9VTkRf REVGQVVMVF9FWENMVVNJVkUsCi0rICAvKiBUaGlzIGlzIGEgc3RhbmRhcmQgcmFuZ2UuICBCb3Ro IHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRzIGFyZQotKyAgICAgZGVmaW5lZCwgYW5kIHRoZSBi b3VuZHMgYXJlIGluY2x1c2l2ZS4gICovCi0rICBSQU5HRV9TVEFOREFSRCA9IDAsCi0rCi0rICAv KiBUaGUgbG93IGJvdW5kIHdhcyBub3QgZ2l2ZW4uICAqLwotKyAgUkFOR0VfTE9XX0JPVU5EX0RF RkFVTFQgPSAxIDw8IDAsCi0rCi0rICAvKiBUaGUgaGlnaCBib3VuZCB3YXMgbm90IGdpdmVuLiAg Ki8KLSsgIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCA9IDEgPDwgMSwKLSsKLSsgIC8qIFRoZSBo aWdoIGJvdW5kIG9mIHRoaXMgcmFuZ2UgaXMgZXhjbHVzaXZlLiAgKi8KLSsgIFJBTkdFX0hJR0hf Qk9VTkRfRVhDTFVTSVZFID0gMSA8PCAyLAotIH07Ci0gCi0rREVGX0VOVU1fRkxBR1NfVFlQRSAo ZW51bSByYW5nZV90eXBlLCByYW5nZV90eXBlcyk7Ci0rCi0gI2VuZGlmIC8qICFkZWZpbmVkIChF WFBSRVNTSU9OX0gpICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQot LS0tIGEvZ2RiL2YtZXhwLnkKLSsrKyBiL2dkYi9mLWV4cC55Ci1AQCAtMjg3LDI2ICsyODcsMzAg QEAgYXJnbGlzdAk6CWFyZ2xpc3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCi0gLyogVGhl cmUgYXJlIGZvdXIgc29ydHMgb2Ygc3VicmFuZ2UgdHlwZXMgaW4gRjkwLiAgKi8KLSAKLSBzdWJy YW5nZToJZXhwICc6JyBleHAJJXByZWMgQUJPVkVfQ09NTUEKLS0JCQl7IHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgCi0tCQkJICB3cml0ZV9leHBfZWx0X2xvbmdjc3Qg KHBzdGF0ZSwgTk9ORV9CT1VORF9ERUZBVUxUKTsKLSsJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChwc3RhdGUsIE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRl LCBSQU5HRV9TVEFOREFSRCk7Ci0gCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBP UF9SQU5HRSk7IH0KLSAJOwotIAotIHN1YnJhbmdlOglleHAgJzonCSVwcmVjIEFCT1ZFX0NPTU1B Ci0gCQkJeyB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0tCQkJICB3 cml0ZV9leHBfZWx0X2xvbmdjc3QgKHBzdGF0ZSwgSElHSF9CT1VORF9ERUZBVUxUKTsKLSsJCQkg IHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAotKwkJCQkJCSBSQU5HRV9ISUdIX0JPVU5E X0RFRkFVTFQpOwotIAkJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0Up OyB9Ci0gCTsKLSAKLSBzdWJyYW5nZToJJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQotIAkJCXsg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotLQkJCSAgd3JpdGVfZXhw X2VsdF9sb25nY3N0IChwc3RhdGUsIExPV19CT1VORF9ERUZBVUxUKTsKLSsJCQkgIHdyaXRlX2V4 cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAotKwkJCQkJCSBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCk7 Ci0gCQkJICB3cml0ZV9leHBfZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSAJOwot IAotIHN1YnJhbmdlOgknOicJJXByZWMgQUJPVkVfQ09NTUEKLSAJCQl7IHdyaXRlX2V4cF9lbHRf b3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsKLS0JCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAo cHN0YXRlLCBCT1RIX0JPVU5EX0RFRkFVTFQpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0 IChwc3RhdGUsCi0rCQkJCQkJIChSQU5HRV9MT1dfQk9VTkRfREVGQVVMVAotKwkJCQkJCSAgfCBS QU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKTsKLSAJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChw c3RhdGUsIE9QX1JBTkdFKTsgfQotIAk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIv Z2RiL2YtbGFuZy5jCi0tLS0gYS9nZGIvZi1sYW5nLmMKLSsrKyBiL2dkYi9mLWxhbmcuYwotQEAg LTEzMSwxMiArMTMxLDEyIEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJh eSwKLSAKLSAgICpwb3MgKz0gMzsKLSAKLS0gIGlmIChyYW5nZV90eXBlID09IExPV19CT1VORF9E RUZBVUxUIHx8IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQotKyAgaWYgKHJhbmdl X3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKLSAgICAgbG93X2JvdW5kID0gcmFuZ2Ut PmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsKLSAgIGVsc2UKLSAgICAgbG93X2JvdW5kID0g dmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRl KSk7Ci0gCi0tICBpZiAocmFuZ2VfdHlwZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2Vf dHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0rICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0hJ R0hfQk9VTkRfREVGQVVMVCkKLSAgICAgaGlnaF9ib3VuZCA9IHJhbmdlLT5ib3VuZHMgKCktPmhp Z2guY29uc3RfdmFsICgpOwotICAgZWxzZQotICAgICBoaWdoX2JvdW5kID0gdmFsdWVfYXNfbG9u ZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Ci1kaWZmIC0t Z2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYwotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBi L2dkYi9wYXJzZS5jCi1AQCAtOTIxLDIxICs5MjEsMTMgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5k YXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50IGVuZHBvcywKLSAgICAgICBy YW5nZV90eXBlID0gKGVudW0gcmFuZ2VfdHlwZSkKLSAJbG9uZ2VzdF90b19pbnQgKGV4cHItPmVs dHNbZW5kcG9zIC0gMl0ubG9uZ2NvbnN0KTsKLSAKLS0gICAgICBzd2l0Y2ggKHJhbmdlX3R5cGUp Ci0tCXsKLS0JY2FzZSBMT1dfQk9VTkRfREVGQVVMVDoKLS0JY2FzZSBMT1dfQk9VTkRfREVGQVVM VF9FWENMVVNJVkU6Ci0tCWNhc2UgSElHSF9CT1VORF9ERUZBVUxUOgotLQkgIGFyZ3MgPSAxOwot LQkgIGJyZWFrOwotLQljYXNlIEJPVEhfQk9VTkRfREVGQVVMVDoKLS0JICBhcmdzID0gMDsKLS0J ICBicmVhazsKLS0JY2FzZSBOT05FX0JPVU5EX0RFRkFVTFQ6Ci0tCWNhc2UgTk9ORV9CT1VORF9E RUZBVUxUX0VYQ0xVU0lWRToKLS0JICBhcmdzID0gMjsKLS0JICBicmVhazsKLS0JfQotKyAgICAg IC8qIEFzc3VtZSB0aGUgcmFuZ2UgaGFzIDIgYXJndW1lbnRzIChsb3cgYm91bmQgYW5kIGhpZ2gg Ym91bmQpLCB0aGVuCi0rCSByZWR1Y2UgdGhlIGFyZ3VtZW50IGNvdW50IGlmIGFueSBib3VuZHMg YXJlIHNldCB0byBkZWZhdWx0LiAgKi8KLSsgICAgICBhcmdzID0gMjsKLSsgICAgICBpZiAocmFu Z2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKQotKwktLWFyZ3M7Ci0rICAgICAgaWYg KHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpCi0rCS0tYXJnczsKLSAKLSAg ICAgICBicmVhazsKLSAKLWRpZmYgLS1naXQgYS9nZGIvcnVzdC1leHAueSBiL2dkYi9ydXN0LWV4 cC55Ci0tLS0gYS9nZGIvcnVzdC1leHAueQotKysrIGIvZ2RiL3J1c3QtZXhwLnkKLUBAIC0yNDky LDI0ICsyNDkyLDI5IEBAIHJ1c3RfcGFyc2VyOjpjb252ZXJ0X2FzdF90b19leHByZXNzaW9uIChj b25zdCBzdHJ1Y3QgcnVzdF9vcCAqb3BlcmF0aW9uLAotIAotICAgICBjYXNlIE9QX1JBTkdFOgot ICAgICAgIHsKLS0JZW51bSByYW5nZV90eXBlIGtpbmQgPSBCT1RIX0JPVU5EX0RFRkFVTFQ7Ci0r CWVudW0gcmFuZ2VfdHlwZSBraW5kID0gKFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVAotKwkJCQl8 IFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKTsKLSAKLSAJaWYgKG9wZXJhdGlvbi0+bGVmdC5vcCAh PSBOVUxMKQotIAkgIHsKLSAJICAgIGNvbnZlcnRfYXN0X3RvX2V4cHJlc3Npb24gKG9wZXJhdGlv bi0+bGVmdC5vcCwgdG9wKTsKLS0JICAgIGtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7Ci0rCSAg ICBraW5kICY9IH5SQU5HRV9MT1dfQk9VTkRfREVGQVVMVDsKLSAJICB9Ci0gCWlmIChvcGVyYXRp b24tPnJpZ2h0Lm9wICE9IE5VTEwpCi0gCSAgewotIAkgICAgY29udmVydF9hc3RfdG9fZXhwcmVz c2lvbiAob3BlcmF0aW9uLT5yaWdodC5vcCwgdG9wKTsKLS0JICAgIGlmIChraW5kID09IEJPVEhf Qk9VTkRfREVGQVVMVCkKLS0JICAgICAga2luZCA9IChvcGVyYXRpb24tPmluY2x1c2l2ZQotLQkJ ICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IExPV19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSk7 Ci0rCSAgICBpZiAoa2luZCA9PSAoUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUIHwgUkFOR0VfTE9X X0JPVU5EX0RFRkFVTFQpKQotKwkgICAgICB7Ci0rCQlraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RF RkFVTFQ7Ci0rCQlpZiAoIW9wZXJhdGlvbi0+aW5jbHVzaXZlKQotKwkJICBraW5kIHw9IFJBTkdF X0hJR0hfQk9VTkRfRVhDTFVTSVZFOwotKwkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIHsK LS0JCWdkYl9hc3NlcnQgKGtpbmQgPT0gSElHSF9CT1VORF9ERUZBVUxUKTsKLS0JCWtpbmQgPSAo b3BlcmF0aW9uLT5pbmNsdXNpdmUKLS0JCQk/IE5PTkVfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9V TkRfREVGQVVMVF9FWENMVVNJVkUpOwotKwkJZ2RiX2Fzc2VydCAoa2luZCA9PSBSQU5HRV9ISUdI X0JPVU5EX0RFRkFVTFQpOwotKwkJa2luZCA9IFJBTkdFX1NUQU5EQVJEOwotKwkJaWYgKCFvcGVy YXRpb24tPmluY2x1c2l2ZSkKLSsJCSAga2luZCB8PSBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lW RTsKLSAJICAgICAgfQotIAkgIH0KLSAJZWxzZQotZGlmZiAtLWdpdCBhL2dkYi9ydXN0LWxhbmcu YyBiL2dkYi9ydXN0LWxhbmcuYwotLS0tIGEvZ2RiL3J1c3QtbGFuZy5jCi0rKysgYi9nZGIvcnVz dC1sYW5nLmMKLUBAIC0xMDgyLDEzICsxMDgyLDExIEBAIHJ1c3RfcmFuZ2UgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0gICBraW5kID0gKGVu dW0gcmFuZ2VfdHlwZSkgbG9uZ2VzdF90b19pbnQgKGV4cC0+ZWx0c1sqcG9zICsgMV0ubG9uZ2Nv bnN0KTsKLSAgICpwb3MgKz0gMzsKLSAKLS0gIGlmIChraW5kID09IEhJR0hfQk9VTkRfREVGQVVM VCB8fCBraW5kID09IE5PTkVfQk9VTkRfREVGQVVMVAotLSAgICAgIHx8IGtpbmQgPT0gTk9ORV9C T1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsgIGlmICghKGtpbmQgJiBSQU5HRV9MT1dfQk9VTkRf REVGQVVMVCkpCi0gICAgIGxvdyA9IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3Ms IG5vc2lkZSk7Ci0tICBpZiAoa2luZCA9PSBMT1dfQk9VTkRfREVGQVVMVCB8fCBraW5kID09IExP V19CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRQotLSAgICAgIHx8IGtpbmQgPT0gTk9ORV9CT1VORF9E RUZBVUxUIHx8IGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUX0VYQ0xVU0lWRSkKLSsgIGlmICgh KGtpbmQgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotICAgICBoaWdoID0gZXZhbHVhdGVf c3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKLS0gIGJvb2wgaW5jbHVzaXZlID0g KGtpbmQgPT0gTk9ORV9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQp OwotKyAgYm9vbCBpbmNsdXNpdmUgPSAhKGtpbmQgJiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lW RSk7Ci0gCi0gICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLSAgICAgcmV0dXJuIHZhbHVlX2Zy b21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwgMSk7 Ci1AQCAtMTE3MSwxMyArMTE2OSwxMyBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQotIHN0YXRpYyB2b2lkCi0gcnVzdF9j b21wdXRlX3JhbmdlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHZhbHVlICpyYW5nZSwKLSAJ CSAgICBMT05HRVNUICpsb3csIExPTkdFU1QgKmhpZ2gsCi0tCQkgICAgZW51bSByYW5nZV90eXBl ICpraW5kKQotKwkJICAgIHJhbmdlX3R5cGVzICpraW5kKQotIHsKLSAgIGludCBpOwotIAotICAg KmxvdyA9IDA7Ci0gICAqaGlnaCA9IDA7Ci0tICAqa2luZCA9IEJPVEhfQk9VTkRfREVGQVVMVDsK LSsgICpraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQgfCBSQU5HRV9ISUdIX0JPVU5EX0RF RkFVTFQ7Ci0gCi0gICBpZiAodHlwZS0+bnVtX2ZpZWxkcyAoKSA9PSAwKQotICAgICByZXR1cm47 Ci1AQCAtMTE4NSwxNSArMTE4MywxNSBAQCBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgdmFsdWUgKnJhbmdlLAotICAgaSA9IDA7Ci0gICBpZiAoc3RyY21wIChU WVBFX0ZJRUxEX05BTUUgKHR5cGUsIDApLCAic3RhcnQiKSA9PSAwKQotICAgICB7Ci0tICAgICAg KmtpbmQgPSBISUdIX0JPVU5EX0RFRkFVTFQ7Ci0rICAgICAgKmtpbmQgPSBSQU5HRV9ISUdIX0JP VU5EX0RFRkFVTFQ7Ci0gICAgICAgKmxvdyA9IHZhbHVlX2FzX2xvbmcgKHZhbHVlX2ZpZWxkIChy YW5nZSwgMCkpOwotICAgICAgICsraTsKLSAgICAgfQotICAgaWYgKHR5cGUtPm51bV9maWVsZHMg KCkgPiBpCi0gICAgICAgJiYgc3RyY21wIChUWVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpLCAiZW5k IikgPT0gMCkKLSAgICAgewotLSAgICAgICpraW5kID0gKCpraW5kID09IEJPVEhfQk9VTkRfREVG QVVMVAotLQkgICAgICAgPyBMT1dfQk9VTkRfREVGQVVMVCA6IE5PTkVfQk9VTkRfREVGQVVMVCk7 Ci0rICAgICAgKmtpbmQgPSAoKmtpbmQgPT0gKFJBTkdFX0xPV19CT1VORF9ERUZBVUxUIHwgUkFO R0VfSElHSF9CT1VORF9ERUZBVUxUKQotKwkgICAgICAgPyBSQU5HRV9MT1dfQk9VTkRfREVGQVVM VCA6IFJBTkdFX1NUQU5EQVJEKTsKLSAgICAgICAqaGlnaCA9IHZhbHVlX2FzX2xvbmcgKHZhbHVl X2ZpZWxkIChyYW5nZSwgaSkpOwotIAotICAgICAgIGlmIChydXN0X2luY2x1c2l2ZV9yYW5nZV90 eXBlX3AgKHR5cGUpKQotQEAgLTEyMTEsNyArMTIwOSw3IEBAIHJ1c3Rfc3Vic2NyaXB0IChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlLAotICAgc3Ry dWN0IHR5cGUgKnJoc3R5cGU7Ci0gICBMT05HRVNUIGxvdywgaGlnaF9ib3VuZDsKLSAgIC8qIElu aXRpYWxpemVkIHRvIGFwcGVhc2UgdGhlIGNvbXBpbGVyLiAgKi8KLS0gIGVudW0gcmFuZ2VfdHlw ZSBraW5kID0gQk9USF9CT1VORF9ERUZBVUxUOwotKyAgcmFuZ2VfdHlwZXMga2luZCA9IFJBTkdF X0xPV19CT1VORF9ERUZBVUxUIHwgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUOwotICAgTE9OR0VT VCBoaWdoID0gMDsKLSAgIGludCB3YW50X3NsaWNlID0gMDsKLSAKLUBAIC0xMzA4LDggKzEzMDYs NyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVu dW0gbm9zaWRlIG5vc2lkZSwKLSAgICAgICBlbHNlCi0gCWVycm9yIChfKCJDYW5ub3Qgc3Vic2Ny aXB0IG5vbi1hcnJheSB0eXBlIikpOwotIAotLSAgICAgIGlmICh3YW50X3NsaWNlCi0tCSAgJiYg KGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gTE9XX0JPVU5EX0RFRkFVTFQp KQotKyAgICAgIGlmICh3YW50X3NsaWNlICYmIChraW5kICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFV TFQpKQotIAlsb3cgPSBsb3dfYm91bmQ7Ci0gICAgICAgaWYgKGxvdyA8IDApCi0gCWVycm9yIChf KCJJbmRleCBsZXNzIHRoYW4gemVybyIpKTsKLUBAIC0xMzI3LDcgKzEzMjQsNyBAQCBydXN0X3N1 YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5v c2lkZSwKLSAJICBDT1JFX0FERFIgYWRkcjsKLSAJICBzdHJ1Y3QgdmFsdWUgKmFkZHJ2YWwsICp0 ZW07Ci0gCi0tCSAgaWYgKGtpbmQgPT0gQk9USF9CT1VORF9ERUZBVUxUIHx8IGtpbmQgPT0gSElH SF9CT1VORF9ERUZBVUxUKQotKwkgIGlmIChraW5kICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxU KQotIAkgICAgaGlnaCA9IGhpZ2hfYm91bmQ7Ci0gCSAgaWYgKGhpZ2ggPCAwKQotIAkgICAgZXJy b3IgKF8oIkhpZ2ggaW5kZXggbGVzcyB0aGFuIHplcm8iKSk7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJo YnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaCBiL2dkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLWFycmF5LXNsaWNlcy1hdC1wcm9tcHQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDA1ZTU4OTAuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTY0MTY3 LWZvcnRyYW4tYXJyYXktc2xpY2VzLWF0LXByb21wdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDI2NjAgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwg MjQgTWF5IDIwMjEgMjI6NDY6MjEgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0 cmFuLWFycmF5LXNsaWNlcy1hdC1wcm9tcHQucGF0Y2gKLQotOzsgW2ZvcnRyYW5dIEJhY2twb3J0 IEFuZHJldyBCdXJnZXNzJ3MgY29tbWl0IGZvciBGb3J0cmFuIGFycmF5Ci07OyBzbGljZSBzdXBw b3J0Ci0KLWdkYi9mb3J0cmFuOiBBZGQgc3VwcG9ydCBmb3IgRm9ydHJhbiBhcnJheSBzbGljZXMg YXQgdGhlIEdEQiBwcm9tcHQKLQotVGhpcyBjb21taXQgYnJpbmdzIGFycmF5IHNsaWNlIHN1cHBv cnQgdG8gR0RCLgotCi1XQVJOSU5HOiBUaGlzIHBhdGNoIGNvbnRhaW5zIGEgcmF0aGVyIGJpZyBo YWNrIHdoaWNoIGlzIGxpbWl0ZWQgdG8KLUZvcnRyYW4gYXJyYXlzLCB0aGlzIGNhbiBiZSBzZWVu IGluIGdkYnR5cGVzLmMgYW5kIGYtbGFuZy5jLiAgTW9yZQotZGV0YWlscyBvbiB0aGlzIGJlbG93 LgotCi1UaGlzIHBhdGNoIHJld3JpdGVzIHR3byBhcmVhcyBvZiBHREIncyBGb3J0cmFuIHN1cHBv cnQsIHRoZSBjb2RlIHRvCi1leHRyYWN0IGFuIGFycmF5IHNsaWNlLCBhbmQgdGhlIGNvZGUgdG8g cHJpbnQgYW4gYXJyYXkuCi0KLUFmdGVyIHRoaXMgY29tbWl0IGEgdXNlciBjYW4sIGZyb20gdGhl IEdEQiBwcm9tcHQsIGFzayBmb3IgYSBzbGljZSBvZgotYSBGb3J0cmFuIGFycmF5IGFuZCBzaG91 bGQgZ2V0IHRoZSBjb3JyZWN0IHJlc3VsdCBiYWNrLiAgU2xpY2VzIGNhbgotKG9wdGlvbmFsbHkp IGhhdmUgdGhlIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCwgYW5kIGEgc3RyaWRlCi1zcGVjaWZp ZWQuICBTbGljZXMgY2FuIGFsc28gaGF2ZSBhIG5lZ2F0aXZlIHN0cmlkZS4KLQotRm9ydHJhbiBo YXMgdGhlIGNvbmNlcHQgb2YgcmVwYWNraW5nIGFycmF5IHNsaWNlcy4gIFdpdGhpbiBhIGNvbXBp bGVkCi1Gb3J0cmFuIHByb2dyYW0gaWYgYSB1c2VyIHBhc3NlcyBhIG5vbi1jb250aWd1b3VzIGFy cmF5IHNsaWNlIHRvIGEKLWZ1bmN0aW9uIHRoZW4gdGhlIGNvbXBpbGVyIG1heSBoYXZlIHRvIHJl cGFjayB0aGUgc2xpY2UsIHRoaXMgaW52b2x2ZXMKLWNvcHlpbmcgdGhlIGVsZW1lbnRzIG9mIHRo ZSBzbGljZSB0byBhIG5ldyBhcmVhIG9mIG1lbW9yeSBiZWZvcmUgdGhlCi1jYWxsLCBhbmQgY29w eWluZyB0aGUgZWxlbWVudHMgYmFjayB0byB0aGUgb3JpZ2luYWwgYXJyYXkgYWZ0ZXIgdGhlCi1j YWxsLiAgV2hldGhlciByZXBhY2tpbmcgb2NjdXJzIHdpbGwgZGVwZW5kIG9uIHdoaWNoIHZlcnNp b24gb2YKLUZvcnRyYW4gaXMgYmVpbmcgdXNlZCwgYW5kIHdoYXQgdHlwZSBvZiBmdW5jdGlvbiBp cyBiZWluZyBjYWxsZWQuCi0KLVRoaXMgY29tbWl0IGFkZHMgc3VwcG9ydCBmb3IgYm90aCBwYWNr ZWQsIGFuZCB1bnBhY2tlZCBhcnJheSBzbGljaW5nLAotd2l0aCB0aGUgZGVmYXVsdCBiZWluZyB1 bnBhY2tlZC4KLQotV2l0aCBhbiB1bnBhY2tlZCBhcnJheSBzbGljZSwgd2hlbiB0aGUgdXNlciBh c2tzIGZvciBhIHNsaWNlIG9mIGFuCi1hcnJheSBHREIgY3JlYXRlcyBhIG5ldyB0eXBlIHRoYXQg YWNjdXJhdGVseSBkZXNjcmliZXMgd2hlcmUgdGhlCi1lbGVtZW50cyBvZiB0aGUgc2xpY2UgY2Fu IGJlIGZvdW5kIHdpdGhpbiB0aGUgb3JpZ2luYWwgYXJyYXksIGEKLXZhbHVlIG9mIHRoaXMgdHlw ZSBpcyB0aGVuIHJldHVybmVkIHRvIHRoZSB1c2VyLiAgVGhlIGFkZHJlc3Mgb2YgYW4KLWVsZW1l bnQgd2l0aGluIHRoZSBzbGljZSB3aWxsIGJlIGVxdWFsIHRvIHRoZSBhZGRyZXNzIG9mIGFuIGVs ZW1lbnQKLXdpdGhpbiB0aGUgb3JpZ2luYWwgYXJyYXkuCi0KLUEgdXNlciBjYW4gY2hvb3NlIHRv IHNlbGVjdCBwYWNrZWQgYXJyYXkgc2xpY2VzIGluc3RlYWQgdXNpbmc6Ci0KLSAgKGdkYikgc2V0 IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyBvbnxvZmYKLSAgKGdkYikgc2hvdyBmb3J0cmFu IHJlcGFjay1hcnJheS1zbGljZXMKLQotV2l0aCBwYWNrZWQgYXJyYXkgc2xpY2VzIEdEQiBjcmVh dGVzIGEgbmV3IHR5cGUgdGhhdCByZWZsZWN0cyBob3cgdGhlCi1lbGVtZW50cyBvZiB0aGUgc2xp Y2Ugd291bGQgbG9vayBpZiB0aGV5IHdlcmUgbGFpZCBvdXQgaW4gY29udGlndW91cwotbWVtb3J5 LCBhbGxvY2F0ZXMgYSB2YWx1ZSBvZiB0aGlzIHR5cGUsIGFuZCB0aGVuIGZldGNoZXMgdGhlIGVs ZW1lbnRzCi1mcm9tIHRoZSBvcmlnaW5hbCBhcnJheSBhbmQgcGxhY2VzIHRoZW4gaW50byB0aGUg Y29udGVudHMgYnVmZmVyIG9mCi10aGUgbmV3IHZhbHVlLgotCi1PbmUgYmVuZWZpdCBvZiB1c2lu ZyBwYWNrZWQgc2xpY2VzIG92ZXIgdW5wYWNrZWQgc2xpY2VzIGlzIHRoZSBtZW1vcnkKLXVzYWdl LCB0YWtpbmcgYSBzbWFsbCBzbGljZSBvZiBOIGVsZW1lbnRzIGZyb20gYSBsYXJnZSBhcnJheSB3 aWxsCi1yZXF1aXJlIChpbiBHREIpIE4gKiBFTEVNRU5UX1NJWkUgYnl0ZXMgb2YgbWVtb3J5LCB3 aGlsZSBhbiB1bnBhY2tlZAotYXJyYXkgd2lsbCBhbHNvIGluY2x1ZGUgYWxsIG9mIHRoZSAicGFk ZGluZyIgYmV0d2VlbiB0aGUKLW5vbi1jb250aWd1b3VzIGVsZW1lbnRzLiAgVGhlcmUgYXJlIG5l dyB0ZXN0cyBhZGRlZCB0aGF0IGhpZ2hsaWdodAotdGhpcyBkaWZmZXJlbmNlLgotCi1UaGVyZSBp cyBhbHNvIGEgbmV3IGRlYnVnZ2luZyBmbGFnIGFkZGVkIHdpdGggdGhpcyBjb21taXQgdGhhdAot aW50cm9kdWNlcyB0aGVzZSBjb21tYW5kczoKLQotICAoZ2RiKSBzZXQgZGVidWcgZm9ydHJhbi1h cnJheS1zbGljaW5nIG9ufG9mZgotICAoZ2RiKSBzaG93IGRlYnVnIGZvcnRyYW4tYXJyYXktc2xp Y2luZwotCi1UaGlzIHByaW50cyBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhlIGFycmF5IHNsaWNl cyBhcmUgYmVpbmcgYnVpbHQuCi0KLUFzIGJvdGggdGhlIHJlcGFja2luZywgYW5kIHRoZSBhcnJh eSBwcmludGluZyByZXF1aXJlcyBHREIgdG8gd2FsawotdGhyb3VnaCBhIG11bHRpLWRpbWVuc2lv bmFsIEZvcnRyYW4gYXJyYXkgdmlzaXRpbmcgZWFjaCBlbGVtZW50LCB0aGlzCi1jb21taXQgYWRk cyB0aGUgZmlsZSBmLWFycmF5LXdhbGsuaCwgd2hpY2ggaW50cm9kdWNlcyBzb21lCi1pbmZyYXN0 cnVjdHVyZSB0byBzdXBwb3J0IHRoaXMgcHJvY2Vzcy4gIFRoaXMgbWVhbnMgdGhlIGFycmF5IHBy aW50aW5nCi1jb2RlIGluIGYtdmFscHJpbnQuYyBpcyBzaWduaWZpY2FudGx5IHJlZHVjZWQuCi0K LVRoZSBvbmx5IHNsaWdodCBpc3N1ZSB3aXRoIHRoaXMgY29tbWl0IGlzIHRoZSAicmF0aGVyIGJp ZyBoYWNrIiB0aGF0IEkKLW1lbnRpb25lZCBhYm92ZS4gIFRoaXMgaGFjayBhbGxvd3MgdXMgdG8g aGFuZGxlIG9uZSBzcGVjaWZpYyBjYXNlLAotYXJyYXkgc2xpY2VzIHdpdGggbmVnYXRpdmUgc3Ry aWRlcy4gIFRoaXMgaXMgc29tZXRoaW5nIHRoYXQgSSBkb24ndAotYmVsaWV2ZSB0aGUgY3VycmVu dCBHREIgdmFsdWUgY29udGVudHMgbW9kZWwgd2lsbCBhbGxvdyB1cyB0bwotY29ycmVjdGx5IGhh bmRsZSwgYW5kIHJhdGhlciB0aGFuIHJld3JpdGUgdGhlIHZhbHVlIGNvbnRlbnRzIGNvZGUKLXJp Z2h0IG5vdywgSSdtIGhvcGluZyB0byBzbGlwIHRoaXMgaGFjayBpbiBhcyBhIHdvcmsgYXJvdW5k LgotCi1UaGUgcHJvYmxlbSBpcyB0aGF0LCBhcyBJIHNlZSBpdCwgdGhlIGN1cnJlbnQgdmFsdWUg Y29udGVudHMgbW9kZWwKLWFzc3VtZXMgdGhhdCBhbiBvYmplY3QgYmFzZSBhZGRyZXNzIHdpbGwg YmUgdGhlIGxvd2VzdCBhZGRyZXNzIHdpdGhpbgotdGhhdCBvYmplY3QsIGFuZCB0aGF0IHRoZSBj b250ZW50cyBvZiB0aGUgb2JqZWN0IHN0YXJ0IGF0IHRoaXMgYmFzZQotYWRkcmVzcyBhbmQgb2Nj dXB5IHRoZSBUWVBFX0xFTkdUSCBieXRlcyBhZnRlciB0aGF0LgotCi0oIFdlIGRvIGhhdmUgdGhl IGVtYmVkZGVkX29mZnNldCwgd2hpY2ggaXMgdXNlZCBmb3IgQysrIHN1Yi1jbGFzc2VzLAotc3Vj aCB0aGF0IGFuIG9iamVjdCBjYW4gc3RhcnQgYXQgc29tZSBvZmZzZXQgZnJvbSB0aGUgY29udGVu dCBidWZmZXIsCi1ob3dldmVyLCB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBvYmplY3QgdGhlbiBv Y2N1cGllcyB0aGUgbmV4dAotVFlQRV9MRU5HVEggYnl0ZXMgaXMgc3RpbGwgdHJ1ZSB3aXRoaW4g R0RCLiApCi0KLVRoZSBwcm9ibGVtIGlzIHRoYXQgRm9ydHJhbiBhcnJheXMgd2l0aCBhIG5lZ2F0 aXZlIHN0cmlkZSBkb24ndCBmb2xsb3cKLXRoaXMgcGF0dGVybi4gIEluIHRoaXMgY2FzZSB0aGUg YmFzZSBhZGRyZXNzIG9mIHRoZSBvYmplY3QgcG9pbnRzIHRvCi10aGUgZWxlbWVudCB3aXRoIHRo ZSBoaWdoZXN0IGFkZHJlc3MsIHRoZSBjb250ZW50cyBvZiB0aGUgYXJyYXkgdGhlbgotc3RhcnQg YXQgc29tZSBvZmZzZXQgX2JlZm9yZV8gdGhlIGJhc2UgYWRkcmVzcywgYW5kIHByb2NlZWQgZm9y IG9uZQotZWxlbWVudCBfcGFzdF8gdGhlIGJhc2UgYWRkcmVzcy4KLQotQXMgdGhlIHN0cmlkZSBm b3Igc3VjaCBhbiBhcnJheSB3b3VsZCBiZSBuZWdhdGl2ZSB0aGVuLCBpbiB0aGVvcnkgdGhlCi1U WVBFX0xFTkdUSCBmb3IgdGhpcyB0eXBlIHdvdWxkIGFsc28gYmUgbmVnYXRpdmUuICBIb3dldmVy LCBpbiBtYW55Ci1wbGFjZXMgYSB2YWx1ZSBpbiBHREIgd2lsbCBkZWdyYWRlIHRvIGEgcG9pbnRl ciArIGxlbmd0aCwgYW5kIHRoZQotbGVuZ3RoIGFsbW9zdCBhbHdheXMgY29tZXMgZnJvbSB0aGUg VFlQRV9MRU5HVEguCi0KLUl0IGlzIG15IGJlbGllZiB0aGF0IGluIG9yZGVyIHRvIGNvcnJlY3Rs eSBtb2RlbCB0aGlzIGNhc2UgdGhlIHZhbHVlCi1jb250ZW50IGhhbmRsaW5nIG9mIEdEQiB3aWxs IG5lZWQgdG8gYmUgcmV3b3JrZWQgdG8gc3BsaXQgYXBhcnQgdGhlCi12YWx1ZSdzIGNvbnRlbnQg YnVmZmVyICh3aGljaCBpcyBhIGJsb2NrIG9mIG1lbW9yeSB3aXRoIGEgbGVuZ3RoKSwgYW5kCi10 aGUgb2JqZWN0J3MgaW4gbWVtb3J5IGJhc2UgYWRkcmVzcyBhbmQgbGVuZ3RoLCB3aGljaCBjb3Vs ZCBiZQotbmVnYXRpdmUuCi0KLVRoaW5ncyBhcmUgZnVydGhlciBjb21wbGljYXRlZCBiZWNhdXNl IGFycmF5cyB3aXRoIG5lZ2F0aXZlIHN0cmlkZXMKLWxpa2UgdGhpcyBhcmUgYWx3YXlzIGR5bmFt aWMgdHlwZXMuICBXaGVuIGEgdmFsdWUgaGFzIGEgZHluYW1pYyB0eXBlCi1hbmQgaXRzIGJhc2Ug YWRkcmVzcyBuZWVkcyByZXNvbHZpbmcgd2UgYWN0dWFsbHkgc3RvcmUgdGhlIGFkZHJlc3Mgb2YK LXRoZSBvYmplY3Qgd2l0aGluIHRoZSByZXNvbHZlZCBkeW5hbWljIHR5cGUsIG5vdCB3aXRoaW4g dGhlIHZhbHVlCi1vYmplY3QgaXRzZWxmLgotCi1JbiBzaG9ydCBJIGRvbid0IGN1cnJlbnRseSBz ZWUgYW4gZWFzeSBwYXRoIHRvIGNsZWFubHkgc3VwcG9ydCB0aGlzCi1zaXR1YXRpb24gd2l0aGlu IEdEQi4gIEFuZCBzbyBJIGJlbGlldmUgdGhhdCBsZWF2ZXMgdHdvIG9wdGlvbnMsCi1laXRoZXIg YWRkIGEgd29yayBhcm91bmQsIG9yIGNhdGNoIGNhc2VzIHdoZXJlIHRoZSB1c2VyIHRyaWVzIHRv IG1ha2UKLXVzZSBvZiBhIG5lZ2F0aXZlIHN0cmlkZSwgb3IgYWNjZXNzIGFuIGFycmF5IHdpdGgg YSBuZWdhdGl2ZSBzdHJpZGUsCi1hbmQgdGhyb3cgYW4gZXJyb3IuCi0KLVRoaXMgcGF0Y2ggY3Vy cmVudGx5IGdvZXMgd2l0aCBhZGRpbmcgYSB3b3JrIGFyb3VuZCwgd2hpY2ggaXMgdGhhdAotd2hl biB3ZSByZXNvbHZlIGEgZHluYW1pYyBGb3J0cmFuIGFycmF5IHR5cGUsIGlmIHRoZSBzdHJpZGUg aXMKLW5lZ2F0aXZlLCB0aGVuIHdlIGFkanVzdCB0aGUgYmFzZSBhZGRyZXNzIHRvIHBvaW50IHRv IHRoZSBsb3dlc3QKLWFkZHJlc3MgcmVxdWlyZWQgYnkgdGhlIGFycmF5LiAgVGhlIHByaW50aW5n IGFuZCBzbGljaW5nIGNvZGUgaXMgYXdhcmUKLW9mIHRoaXMgYWRqdXN0bWVudCBhbmQgd2lsbCBj b3JyZWN0bHkgc2xpY2UgYW5kIHByaW50IEZvcnRyYW4gYXJyYXlzLgotCi1XaGVyZSB0aGlzIGhh Y2sgd2lsbCBzaG93IHRocm91Z2ggdG8gdGhlIHVzZXIgaXMgaWYgdGhleSBhc2sgZm9yIHRoZQot YWRkcmVzcyBvZiBhbiBhcnJheSBpbiB0aGVpciBwcm9ncmFtIHdpdGggYSBuZWdhdGl2ZSBhcnJh eSBzdHJpZGUsIHRoZQotYWRkcmVzcyB0aGV5IGdldCBmcm9tIEdEQiB3aWxsIG5vdCBtYXRjaCB0 aGUgYWRkcmVzcyB0aGF0IHdvdWxkIGJlCi1jb21wdXRlZCB3aXRoaW4gdGhlIEZvcnRyYW4gcHJv Z3JhbS4KLQotZ2RiL0NoYW5nZUxvZzoKLQotCSogTWFrZWZpbGUuaW4gKEhGSUxFU19OT19TUkNE SVIpOiBBZGQgZi1hcnJheS13YWxrZXIuaC4KLQkqIE5FV1M6IE1lbnRpb24gbmV3IG9wdGlvbnMu Ci0JKiBmLWFycmF5LXdhbGtlci5oOiBOZXcgZmlsZS4KLQkqIGYtbGFuZy5jOiBJbmNsdWRlICdn ZGJjbWQuaCcgYW5kICdmLWFycmF5LXdhbGtlci5oJy4KLQkocmVwYWNrX2FycmF5X3NsaWNlcyk6 IE5ldyBzdGF0aWMgZ2xvYmFsLgotCShzaG93X3JlcGFja19hcnJheV9zbGljZXMpOiBOZXcgZnVu Y3Rpb24uCi0JKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1Zyk6IE5ldyBzdGF0aWMgZ2xvYmFs LgotCShzaG93X2ZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1Zyk6IE5ldyBmdW5jdGlvbi4KLQko dmFsdWVfZjkwX3N1YmFycmF5KTogRGVsZXRlLgotCShza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0 KTogRGVsZXRlLgotCShjbGFzcyBmb3J0cmFuX2FycmF5X3JlcGFja2VyX2Jhc2VfaW1wbCk6IE5l dyBjbGFzcy4KLQkoY2xhc3MgZm9ydHJhbl9sYXp5X2FycmF5X3JlcGFja2VyX2ltcGwpOiBOZXcg Y2xhc3MuCi0JKGNsYXNzIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfaW1wbCk6IE5ldyBjbGFzcy4K LQkoZm9ydHJhbl92YWx1ZV9zdWJhcnJheSk6IENvbXBsZXRlIHJld3JpdGUuCi0JKHNldF9mb3J0 cmFuX2xpc3QpOiBOZXcgc3RhdGljIGdsb2JhbC4KLQkoc2hvd19mb3J0cmFuX2xpc3QpOiBMaWtl d2lzZS4KLQkoX2luaXRpYWxpemVfZl9sYW5ndWFnZSk6IFJlZ2lzdGVyIG5ldyBjb21tYW5kcy4K LQkoZm9ydHJhbl9hZGp1c3RfZHluYW1pY19hcnJheV9iYXNlX2FkZHJlc3NfaGFjayk6IE5ldyBm dW5jdGlvbi4KLQkqIGYtbGFuZy5oIChmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2Vf YWRkcmVzc19oYWNrKToKLQlEZWNsYXJlLgotCSogZi12YWxwcmludC5jOiBJbmNsdWRlICdmLWFy cmF5LXdhbGtlci5oJy4KLQkoY2xhc3MgZm9ydHJhbl9hcnJheV9wcmludGVyX2ltcGwpOiBOZXcg Y2xhc3MuCi0JKGY3N19wcmludF9hcnJheV8xKTogRGVsZXRlLgotCShmNzdfcHJpbnRfYXJyYXkp OiBEZWxldGUuCi0JKGZvcnRyYW5fcHJpbnRfYXJyYXkpOiBOZXcuCi0JKGZfdmFsdWVfcHJpbnRf aW5uZXIpOiBVcGRhdGUgdG8gY2FsbCBmb3J0cmFuX3ByaW50X2FycmF5LgotCSogZ2RidHlwZXMu YzogSW5jbHVkZSAnZi1sYW5nLmgnLgotCShyZXNvbHZlX2R5bmFtaWNfdHlwZV9pbnRlcm5hbCk6 IENhbGwKLQlmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2VfYWRkcmVzc19oYWNrLgot Ci1nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZzoKLQotICAgICAgICAqIGdkYi5mb3J0cmFuL2FycmF5 LXNsaWNlcy1iYWQuZXhwOiBOZXcgZmlsZS4KLSAgICAgICAgKiBnZGIuZm9ydHJhbi9hcnJheS1z bGljZXMtYmFkLmY5MDogTmV3IGZpbGUuCi0gICAgICAgICogZ2RiLmZvcnRyYW4vYXJyYXktc2xp Y2VzLXN1Yi1zbGljZXMuZXhwOiBOZXcgZmlsZS4KLSAgICAgICAgKiBnZGIuZm9ydHJhbi9hcnJh eS1zbGljZXMtc3ViLXNsaWNlcy5mOTA6IE5ldyBmaWxlLgotICAgICAgICAqIGdkYi5mb3J0cmFu L2FycmF5LXNsaWNlcy5leHA6IFJld3JpdGUgdGVzdHMuCi0gICAgICAgICogZ2RiLmZvcnRyYW4v YXJyYXktc2xpY2VzLmY5MDogUmV3cml0ZSB0ZXN0cy4KLSAgICAgICAgKiBnZGIuZm9ydHJhbi92 bGEtc2l6ZW9mLmV4cDogQ29ycmVjdCBleHBlY3RlZCByZXN1bHRzLgotCi1nZGIvZG9jL0NoYW5n ZUxvZzoKLQotICAgICAgICAqIGdkYi50ZXhpbmZvIChEZWJ1Z2dpbmcgT3V0cHV0KTogRG9jdW1l bnQgJ3NldC9zaG93IGRlYnVnCi0gICAgICAgIGZvcnRyYW4tYXJyYXktc2xpY2luZycuCi0gICAg ICAgIChTcGVjaWFsIEZvcnRyYW4gQ29tbWFuZHMpOiBEb2N1bWVudCAnc2V0L3Nob3cgZm9ydHJh bgotICAgICAgICByZXBhY2stYXJyYXktc2xpY2VzJy4KLQotZGlmZiAtLWdpdCBhL2dkYi9NYWtl ZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotLS0tIGEvZ2RiL01ha2VmaWxlLmluCi0rKysgYi9n ZGIvTWFrZWZpbGUuaW4KLUBAIC0xMjY4LDYgKzEyNjgsNyBAQCBIRklMRVNfTk9fU1JDRElSID0g XAotIAlleHByZXNzaW9uLmggXAotIAlleHRlbnNpb24uaCBcCi0gCWV4dGVuc2lvbi1wcml2Lmgg XAotKwlmLWFycmF5LXdhbGtlci5oIFwKLSAJZi1sYW5nLmggXAotIAlmYnNkLW5hdC5oIFwKLSAJ ZmJzZC10ZGVwLmggXAotZGlmZiAtLWdpdCBhL2dkYi9ORVdTIGIvZ2RiL05FV1MKLS0tLSBhL2dk Yi9ORVdTCi0rKysgYi9nZGIvTkVXUwotQEAgLTExMSw2ICsxMTEsMTkgQEAgbWFpbnRlbmFuY2Ug cHJpbnQgY29yZS1maWxlLWJhY2tlZC1tYXBwaW5ncwotICAgUHJpbnRzIGZpbGUtYmFja2VkIG1h cHBpbmdzIGxvYWRlZCBmcm9tIGEgY29yZSBmaWxlJ3Mgbm90ZSBzZWN0aW9uLgotICAgT3V0cHV0 IGlzIGV4cGVjdGVkIHRvIGJlIHNpbWlsYXIgdG8gdGhhdCBvZiAiaW5mbyBwcm9jIG1hcHBpbmdz Ii4KLSAKLStzZXQgZGVidWcgZm9ydHJhbi1hcnJheS1zbGljaW5nIG9ufG9mZgotK3Nob3cgZGVi dWcgZm9ydHJhbi1hcnJheS1zbGljaW5nCi0rICBQcmludCBkZWJ1Z2dpbmcgd2hlbiB0YWtpbmcg c2xpY2VzIG9mIEZvcnRyYW4gYXJyYXlzLgotKwotK3NldCBmb3J0cmFuIHJlcGFjay1hcnJheS1z bGljZXMgb258b2ZmCi0rc2hvdyBmb3J0cmFuIHJlcGFjay1hcnJheS1zbGljZXMKLSsgIFdoZW4g dGFraW5nIHNsaWNlcyBmcm9tIEZvcnRyYW4gYXJyYXlzIGFuZCBzdHJpbmdzLCBpZiB0aGUgc2xp Y2UgaXMKLSsgIG5vbi1jb250aWd1b3VzIHdpdGhpbiB0aGUgb3JpZ2luYWwgdmFsdWUgdGhlbiwg d2hlbiB0aGlzIG9wdGlvbiBpcwotKyAgb24sIHRoZSBuZXcgdmFsdWUgd2lsbCBiZSByZXBhY2tl ZCBpbnRvIGEgc2luZ2xlIGNvbnRpZ3VvdXMgdmFsdWUuCi0rICBXaGVuIHRoaXMgb3B0aW9uIGlz IG9mZiwgdGhlbiB0aGUgdmFsdWUgcmV0dXJuZWQgd2lsbCBjb25zaXN0IG9mIGEKLSsgIGRlc2Ny aXB0b3IgdGhhdCBkZXNjcmliZXMgdGhlIHNsaWNlIHdpdGhpbiB0aGUgbWVtb3J5IG9mIHRoZQot KyAgb3JpZ2luYWwgcGFyZW50IHZhbHVlLgotKwotICogQ2hhbmdlZCBjb21tYW5kcwotIAotIGFs aWFzIFstYV0gWy0tXSBBTElBUyA9IENPTU1BTkQgW0RFRkFVTFQtQVJHUy4uLl0KLWRpZmYgLS1n aXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotLS0tIGEvZ2Ri L2RvYy9nZGIudGV4aW5mbwotKysrIGIvZ2RiL2RvYy9nZGIudGV4aW5mbwotQEAgLTE2OTE5LDYg KzE2OTE5LDI5IEBAIFRoaXMgY29tbWFuZCBwcmludHMgdGhlIHZhbHVlcyBjb250YWluZWQgaW4g dGhlIEZvcnRyYW4gQGNvZGV7Q09NTU9OfQotIGJsb2NrIHdob3NlIG5hbWUgaXMgQHZhcntjb21t b24tbmFtZX0uICBXaXRoIG5vIGFyZ3VtZW50LCB0aGUgbmFtZXMgb2YKLSBhbGwgQGNvZGV7Q09N TU9OfSBibG9ja3MgdmlzaWJsZSBhdCB0aGUgY3VycmVudCBwcm9ncmFtIGxvY2F0aW9uIGFyZQot IHByaW50ZWQuCi0rQGNpbmRleCBhcnJheXMgc2xpY2VzIChGb3J0cmFuKQotK0BraW5kZXggc2V0 IGZvcnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcwotK0BraW5kZXggc2hvdyBmb3J0cmFuIHJlcGFj ay1hcnJheS1zbGljZXMKLStAaXRlbSBzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2VzIFtv bnxvZmZdCi0rQGl0ZW0gc2hvdyBmb3J0cmFuIHJlcGFjay1hcnJheS1zbGljZXMKLStXaGVuIHRh a2luZyBhIHNsaWNlIGZyb20gYW4gYXJyYXksIGEgRm9ydHJhbiBjb21waWxlciBjYW4gY2hvb3Nl IHRvCi0rZWl0aGVyIHByb2R1Y2UgYW4gYXJyYXkgZGVzY3JpcHRvciB0aGF0IGRlc2NyaWJlcyB0 aGUgc2xpY2UgaW4gcGxhY2UsCi0rb3IgaXQgbWF5IHJlcGFjayB0aGUgc2xpY2UsIGNvcHlpbmcg dGhlIGVsZW1lbnRzIG9mIHRoZSBzbGljZSBpbnRvIGEKLStuZXcgcmVnaW9uIG9mIG1lbW9yeS4K LSsKLStXaGVuIHRoaXMgc2V0dGluZyBpcyBvbiwgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbCBhbHNv IHJlcGFjayBhcnJheQotK3NsaWNlcyBpbiBzb21lIHNpdHVhdGlvbnMuICBXaGVuIHRoaXMgc2V0 dGluZyBpcyBvZmYsIHRoZW4KLStAdmFsdWV7R0RCTn0gd2lsbCBjcmVhdGUgYXJyYXkgZGVzY3Jp cHRvcnMgZm9yIHNsaWNlcyB0aGF0IHJlZmVyZW5jZQotK3RoZSBvcmlnaW5hbCBkYXRhIGluIHBs YWNlLgotKwotK0B2YWx1ZXtHREJOfSB3aWxsIG5ldmVyIHJlcGFjayBhbiBhcnJheSBzbGljZSBp ZiB0aGUgZGF0YSBmb3IgdGhlCi0rc2xpY2UgaXMgY29udGlndW91cyB3aXRoaW4gdGhlIG9yaWdp bmFsIGFycmF5LgotKwotK0B2YWx1ZXtHREJOfSB3aWxsIGFsd2F5cyByZXBhY2sgc3RyaW5nIHNs aWNlcyBpZiB0aGUgZGF0YSBmb3IgdGhlCi0rc2xpY2UgaXMgbm9uLWNvbnRpZ3VvdXMgd2l0aGlu IHRoZSBvcmlnaW5hbCBzdHJpbmcgYXMgQHZhbHVle0dEQk59Ci0rZG9lcyBub3Qgc3VwcG9ydCBw cmludGluZyBub24tY29udGlndW91cyBzdHJpbmdzLgotKwotK1RoZSBkZWZhdWx0IGZvciB0aGlz IHNldHRpbmcgaXMgQGNvZGV7b2ZmfS4KLSBAZW5kIHRhYmxlCi0gCi0gQG5vZGUgUGFzY2FsCi1A QCAtMjY1MDcsNiArMjY1MzAsMTYgQEAgU2hvdyB0aGUgY3VycmVudCBzdGF0ZSBvZiBGcmVlQlNE IExXUCBkZWJ1Z2dpbmcgbWVzc2FnZXMuCi0gVHVybnMgb24gb3Igb2ZmIGRlYnVnZ2luZyBtZXNz YWdlcyBmcm9tIHRoZSBGcmVlQlNEIG5hdGl2ZSB0YXJnZXQuCi0gQGl0ZW0gc2hvdyBkZWJ1ZyBm YnNkLW5hdAotIFNob3cgdGhlIGN1cnJlbnQgc3RhdGUgb2YgRnJlZUJTRCBuYXRpdmUgdGFyZ2V0 IGRlYnVnZ2luZyBtZXNzYWdlcy4KLSsKLStAaXRlbSBzZXQgZGVidWcgZm9ydHJhbi1hcnJheS1z bGljaW5nCi0rQGNpbmRleCBmb3J0cmFuIGFycmF5IHNsaWNpbmcgZGVidWdnaW5nIGluZm8KLStU dXJucyBvbiBvciBvZmYgZGlzcGxheSBvZiBAdmFsdWV7R0RCTn0gRm9ydHJhbiBhcnJheSBzbGlj aW5nCi0rZGVidWdnaW5nIGluZm8uICBUaGUgZGVmYXVsdCBpcyBvZmYuCi0rCi0rQGl0ZW0gc2hv dyBkZWJ1ZyBmb3J0cmFuLWFycmF5LXNsaWNpbmcKLStEaXNwbGF5cyB0aGUgY3VycmVudCBzdGF0 ZSBvZiBkaXNwbGF5aW5nIEB2YWx1ZXtHREJOfSBGb3J0cmFuIGFycmF5Ci0rc2xpY2luZyBkZWJ1 Z2dpbmcgaW5mby4KLSsKLSBAaXRlbSBzZXQgZGVidWcgZnJhbWUKLSBAY2luZGV4IGZyYW1lIGRl YnVnZ2luZyBpbmZvCi0gVHVybnMgb24gb3Igb2ZmIGRpc3BsYXkgb2YgQHZhbHVle0dEQk59IGZy YW1lIGRlYnVnZ2luZyBpbmZvLiAgVGhlCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtYXJyYXktd2Fsa2Vy LmggYi9nZGIvZi1hcnJheS13YWxrZXIuaAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAvZGV2 L251bGwKLSsrKyBiL2dkYi9mLWFycmF5LXdhbGtlci5oCi1AQCAtMCwwICsxLDI2NSBAQAotKy8q IENvcHlyaWdodCAoQykgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsg ICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIFN1cHBvcnQgY2xhc3NlcyB0byB3cmFwIHVwIHRoZSBw cm9jZXNzIG9mIGl0ZXJhdGluZyBvdmVyIGEKLSsgICBtdWx0aS1kaW1lbnNpb25hbCBGb3J0cmFu IGFycmF5LiAgKi8KLSsKLSsjaWZuZGVmIEZfQVJSQVlfV0FMS0VSX0gKLSsjZGVmaW5lIEZfQVJS QVlfV0FMS0VSX0gKLSsKLSsjaW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJnZGJ0eXBlcy5o IgotKyNpbmNsdWRlICJmLWxhbmcuaCIKLSsKLSsvKiBDbGFzcyBmb3IgY2FsY3VsYXRpbmcgdGhl IGJ5dGUgb2Zmc2V0IGZvciBlbGVtZW50cyB3aXRoaW4gYSBzaW5nbGUKLSsgICBkaW1lbnNpb24g b2YgYSBGb3J0cmFuIGFycmF5LiAgKi8KLStjbGFzcyBmb3J0cmFuX2FycmF5X29mZnNldF9jYWxj dWxhdG9yCi0rewotK3B1YmxpYzoKLSsgIC8qIENyZWF0ZSBhIG5ldyBvZmZzZXQgY2FsY3VsYXRv ciBmb3IgVFlQRSwgd2hpY2ggaXMgZWl0aGVyIGFuIGFycmF5IG9yIGEKLSsgICAgIHN0cmluZy4g ICovCi0rICBleHBsaWNpdCBmb3J0cmFuX2FycmF5X29mZnNldF9jYWxjdWxhdG9yIChzdHJ1Y3Qg dHlwZSAqdHlwZSkKLSsgIHsKLSsgICAgLyogVmFsaWRhdGUgdGhlIHR5cGUuICAqLwotKyAgICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7Ci0rICAgIGlmICh0eXBlLT5jb2RlICgpICE9IFRZ UEVfQ09ERV9BUlJBWQotKwkmJiAodHlwZS0+Y29kZSAoKSAhPSBUWVBFX0NPREVfU1RSSU5HKSkK LSsgICAgICBlcnJvciAoXygiY2FuIG9ubHkgY29tcHV0ZSBvZmZzZXRzIGZvciBhcnJheXMgYW5k IHN0cmluZ3MiKSk7Ci0rCi0rICAgIC8qIEdldCB0aGUgcmFuZ2UsIGFuZCBleHRyYWN0IHRoZSBi b3VuZHMuICAqLwotKyAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSA9IHR5cGUtPmluZGV4X3R5 cGUgKCk7Ci0rICAgIGlmICghZ2V0X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJm1fbG93 ZXJib3VuZCwgJm1fdXBwZXJib3VuZCkpCi0rICAgICAgZXJyb3IgKCJ1bmFibGUgdG8gcmVhZCBh cnJheSBib3VuZHMiKTsKLSsKLSsgICAgLyogRmlndXJlIG91dCB0aGUgc3RyaWRlIGZvciB0aGlz IGFycmF5LiAgKi8KLSsgICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotKyAgICBtX3N0cmlkZSA9IHR5cGUtPmluZGV4X3R5 cGUgKCktPmJvdW5kcyAoKS0+Yml0X3N0cmlkZSAoKTsKLSsgICAgaWYgKG1fc3RyaWRlID09IDAp Ci0rICAgICAgbV9zdHJpZGUgPSB0eXBlX2xlbmd0aF91bml0cyAoZWx0X3R5cGUpOwotKyAgICBl bHNlCi0rICAgICAgewotKwlzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdldF90eXBlX2FyY2ggKGVs dF90eXBlKTsKLSsJaW50IHVuaXRfc2l6ZSA9IGdkYmFyY2hfYWRkcmVzc2FibGVfbWVtb3J5X3Vu aXRfc2l6ZSAoYXJjaCk7Ci0rCW1fc3RyaWRlIC89ICh1bml0X3NpemUgKiA4KTsKLSsgICAgICB9 Ci0rICB9OwotKwotKyAgLyogR2V0IHRoZSBieXRlIG9mZnNldCBmb3IgZWxlbWVudCBJTkRFWCB3 aXRoaW4gdGhlIHR5cGUgd2UgYXJlIHdvcmtpbmcKLSsgICAgIG9uLiAgVGhlcmUgaXMgbm8gYm91 bmRzIGNoZWNraW5nIGRvbmUgb24gSU5ERVguICBJZiB0aGUgc3RyaWRlIGlzCi0rICAgICBuZWdh dGl2ZSB0aGVuIHdlIHN0aWxsIGFzc3VtZSB0aGF0IHRoZSBiYXNlIGFkZHJlc3MgKGZvciB0aGUg YXJyYXkKLSsgICAgIG9iamVjdCkgcG9pbnRzIHRvIHRoZSBlbGVtZW50IHdpdGggdGhlIGxvd2Vz dCBtZW1vcnkgYWRkcmVzcywgd2UgdGhlbgotKyAgICAgY2FsY3VsYXRlIGFuIG9mZnNldCBhc3N1 bWluZyB0aGF0IGluZGV4IDAgd2lsbCBiZSB0aGUgZWxlbWVudCBhdCB0aGUKLSsgICAgIGhpZ2hl c3QgYWRkcmVzcywgaW5kZXggMSB0aGUgbmV4dCBoaWdoZXN0LCBhbmQgc28gb24uICBUaGlzIGlz IG5vdAotKyAgICAgcXVpdGUgaG93IEZvcnRyYW4gd29ya3MgaW4gcmVhbGl0eTsgaW4gcmVhbGl0 eSB0aGUgYmFzZSBhZGRyZXNzIG9mCi0rICAgICB0aGUgb2JqZWN0IHdvdWxkIHBvaW50IGF0IHRo ZSBlbGVtZW50IHdpdGggdGhlIGhpZ2hlc3QgYWRkcmVzcywgYW5kCi0rICAgICB3ZSB3b3VsZCBp bmRleCBiYWNrd2FyZHMgZnJvbSB0aGVyZSBpbiB0aGUgIm5vcm1hbCIgd2F5LCBob3dldmVyLAot KyAgICAgR0RCJ3MgY3VycmVudCB2YWx1ZSBjb250ZW50cyBtb2RlbCBkb2Vzbid0IHN1cHBvcnQg aGF2aW5nIHRoZSBiYXNlCi0rICAgICBhZGRyZXNzIGJlIG5lYXIgdG8gdGhlIGVuZCBvZiB0aGUg dmFsdWUgY29udGVudHMsIHNvIHdlIGN1cnJlbnRseQotKyAgICAgYWRqdXN0IHRoZSBiYXNlIGFk ZHJlc3Mgb2YgRm9ydHJhbiBhcnJheXMgd2l0aCBuZWdhdGl2ZSBzdHJpZGVzIHNvCi0rICAgICB0 aGVpciBiYXNlIGFkZHJlc3MgcG9pbnRzIGF0IHRoZSBsb3dlc3QgbWVtb3J5IGFkZHJlc3MuICBU aGlzIGNvZGUKLSsgICAgIGhlcmUgaXMgcGFydCBvZiB3b3JraW5nIGFyb3VuZCB0aGlzIHdlaXJk bmVzcy4gICovCi0rICBMT05HRVNUIGluZGV4X29mZnNldCAoTE9OR0VTVCBpbmRleCkKLSsgIHsK LSsgICAgTE9OR0VTVCBvZmZzZXQ7Ci0rICAgIGlmIChtX3N0cmlkZSA8IDApCi0rICAgICAgb2Zm c2V0ID0gc3RkOjphYnMgKG1fc3RyaWRlKSAqIChtX3VwcGVyYm91bmQgLSBpbmRleCk7Ci0rICAg IGVsc2UKLSsgICAgICBvZmZzZXQgPSBzdGQ6OmFicyAobV9zdHJpZGUpICogKGluZGV4IC0gbV9s b3dlcmJvdW5kKTsKLSsgICAgcmV0dXJuIG9mZnNldDsKLSsgIH0KLSsKLStwcml2YXRlOgotKwot KyAgLyogVGhlIHN0cmlkZSBmb3IgdGhlIHR5cGUgd2UgYXJlIHdvcmtpbmcgd2l0aC4gICovCi0r ICBMT05HRVNUIG1fc3RyaWRlOwotKwotKyAgLyogVGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgdHlw ZSB3ZSBhcmUgd29ya2luZyB3aXRoLiAgKi8KLSsgIExPTkdFU1QgbV91cHBlcmJvdW5kOwotKwot KyAgLyogVGhlIGxvd2VyIGJvdW5kIGZvciB0aGUgdHlwZSB3ZSBhcmUgd29ya2luZyB3aXRoLiAg Ki8KLSsgIExPTkdFU1QgbV9sb3dlcmJvdW5kOwotK307Ci0rCi0rLyogQSBiYXNlIGNsYXNzIHVz ZWQgYnkgZm9ydHJhbl9hcnJheV93YWxrZXIuICBUaGVyZSdzIG5vIHZpcnR1YWwgbWV0aG9kcwot KyAgIGhlcmUsIHN1Yi1jbGFzc2VzIHNob3VsZCBqdXN0IG92ZXJyaWRlIHRoZSBmdW5jdGlvbnMg dGhleSB3YW50IGluIG9yZGVyCi0rICAgdG8gc3BlY2lhbGlzZSB0aGUgYmVoYXZpb3VyIHRvIHRo ZWlyIG5lZWRzLiAgVGhlIGZ1bmN0aW9uYWxpdHkKLSsgICBwcm92aWRlZCBpbiB0aGVzZSBkZWZh dWx0IGltcGxlbWVudGF0aW9ucyB3aWxsIHZpc2l0IGV2ZXJ5IGFycmF5Ci0rICAgZWxlbWVudCwg YnV0IGRvIG5vdGhpbmcgZm9yIGVhY2ggZWxlbWVudC4gICovCi0rCi0rc3RydWN0IGZvcnRyYW5f YXJyYXlfd2Fsa2VyX2Jhc2VfaW1wbAotK3sKLSsgIC8qIENhbGxlZCB3aGVuIGl0ZXJhdGluZyBi ZXR3ZWVuIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmRzIG9mIGVhY2gKLSsgICAgIGRpbWVuc2lv biBvZiB0aGUgYXJyYXkuICBSZXR1cm4gdHJ1ZSBpZiBHREIgc2hvdWxkIGNvbnRpbnVlIGl0ZXJh dGluZywKLSsgICAgIG90aGVyd2lzZSwgcmV0dXJuIGZhbHNlLgotKwotKyAgICAgU0hPVUxEX0NP TlRJTlVFIGluZGljYXRlcyBpZiBHREIgaXMgZ29pbmcgdG8gc3RvcCBhbnl3YXksIGFuZCBzaG91 bGQKLSsgICAgIGJlIHRha2VuIGludG8gY29uc2lkZXJhdGlvbiB3aGVuIGRlY2lkaW5nIHdoYXQg dG8gcmV0dXJuLiAgSWYKLSsgICAgIFNIT1VMRF9DT05USU5VRSBpcyBmYWxzZSB0aGVuIHRoaXMg ZnVuY3Rpb24gbXVzdCBhbHNvIHJldHVybiBmYWxzZSwKLSsgICAgIHRoZSBmdW5jdGlvbiBpcyBz dGlsbCBjYWxsZWQgdGhvdWdoIGluIGNhc2UgZXh0cmEgd29yayBuZWVkcyB0byBiZQotKyAgICAg ZG9uZSBhcyBwYXJ0IG9mIHRoZSBzdG9wcGluZyBwcm9jZXNzLiAgKi8KLSsgIGJvb2wgY29udGlu dWVfd2Fsa2luZyAoYm9vbCBzaG91bGRfY29udGludWUpCi0rICB7IHJldHVybiBzaG91bGRfY29u dGludWU7IH0KLSsKLSsgIC8qIENhbGxlZCB3aGVuIEdEQiBzdGFydHMgaXRlcmF0aW5nIG92ZXIg YSBkaW1lbnNpb24gb2YgdGhlIGFycmF5LiAgVGhlCi0rICAgICBhcmd1bWVudCBJTk5FUl9QIGlz IHRydWUgZm9yIHRoZSBpbm5lciBtb3N0IGRpbWVuc2lvbiAodGhlIGRpbWVuc2lvbgotKyAgICAg Y29udGFpbmluZyB0aGUgYWN0dWFsIGVsZW1lbnRzIG9mIHRoZSBhcnJheSksIGFuZCBmYWxzZSBm b3IgbW9yZSBvdXRlcgotKyAgICAgZGltZW5zaW9ucy4gIEZvciBhIGNvbmNyZXRlIGV4YW1wbGUg b2YgaG93IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCi0rICAgICBzZWUgdGhlIGNvbW1lbnQgb24g cHJvY2Vzc19lbGVtZW50IGJlbG93LiAgKi8KLSsgIHZvaWQgc3RhcnRfZGltZW5zaW9uIChib29s IGlubmVyX3ApCi0rICB7IC8qIE5vdGhpbmcuICAqLyB9Ci0rCi0rICAvKiBDYWxsZWQgd2hlbiBH REIgZmluaXNoZXMgaXRlcmF0aW5nIG92ZXIgYSBkaW1lbnNpb24gb2YgdGhlIGFycmF5LiAgVGhl Ci0rICAgICBhcmd1bWVudCBJTk5FUl9QIGlzIHRydWUgZm9yIHRoZSBpbm5lciBtb3N0IGRpbWVu c2lvbiAodGhlIGRpbWVuc2lvbgotKyAgICAgY29udGFpbmluZyB0aGUgYWN0dWFsIGVsZW1lbnRz IG9mIHRoZSBhcnJheSksIGFuZCBmYWxzZSBmb3IgbW9yZSBvdXRlcgotKyAgICAgZGltZW5zaW9u cy4gIExBU1RfUCBpcyB0cnVlIGZvciB0aGUgbGFzdCBjYWxsIGF0IGEgcGFydGljdWxhcgotKyAg ICAgZGltZW5zaW9uLiAgRm9yIGEgY29uY3JldGUgZXhhbXBsZSBvZiBob3cgdGhpcyBmdW5jdGlv biBpcyBjYWxsZWQKLSsgICAgIHNlZSB0aGUgY29tbWVudCBvbiBwcm9jZXNzX2VsZW1lbnQgYmVs b3cuICAqLwotKyAgdm9pZCBmaW5pc2hfZGltZW5zaW9uIChib29sIGlubmVyX3AsIGJvb2wgbGFz dF9wKQotKyAgeyAvKiBOb3RoaW5nLiAgKi8gfQotKwotKyAgLyogQ2FsbGVkIHdoZW4gcHJvY2Vz c2luZyB0aGUgaW5uZXIgbW9zdCBkaW1lbnNpb24gb2YgdGhlIGFycmF5LCBmb3IKLSsgICAgIGV2 ZXJ5IGVsZW1lbnQgaW4gdGhlIGFycmF5LiAgRUxUX1RZUEUgaXMgdGhlIHR5cGUgb2YgdGhlIGVs ZW1lbnQgYmVpbmcKLSsgICAgIGV4dHJhY3RlZCwgYW5kIEVMVF9PRkYgaXMgdGhlIG9mZnNldCBv ZiB0aGUgZWxlbWVudCBmcm9tIHRoZSBzdGFydCBvZgotKyAgICAgYXJyYXkgYmVpbmcgd2Fsa2Vk LCBhbmQgTEFTVF9QIGlzIHRydWUgb25seSB3aGVuIHRoaXMgaXMgdGhlIGxhc3QKLSsgICAgIGVs ZW1lbnQgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCBpbiB0aGlzIGRpbWVuc2lvbi4KLSsKLSsgICAg IEdpdmVuIHRoaXMgdHdvIGRpbWVuc2lvbmFsIGFycmF5ICgoMSwgMikgKDMsIDQpKSwgdGhlIGNh bGxzIHRvCi0rICAgICBzdGFydF9kaW1lbnNpb24sIHByb2Nlc3NfZWxlbWVudCwgYW5kIGZpbmlz aF9kaW1lbnNpb24gbG9vayBsaWtlIHRoaXM6Ci0rCi0rICAgICBzdGFydF9kaW1lbnNpb24gKGZh bHNlKTsKLSsgICAgICAgc3RhcnRfZGltZW5zaW9uICh0cnVlKTsKLSsgICAgICAgICBwcm9jZXNz X2VsZW1lbnQgKFRZUEUsIE9GRlNFVCwgZmFsc2UpOwotKyAgICAgICAgIHByb2Nlc3NfZWxlbWVu dCAoVFlQRSwgT0ZGU0VULCB0cnVlKTsKLSsgICAgICAgZmluaXNoX2RpbWVuc2lvbiAodHJ1ZSwg ZmFsc2UpOwotKyAgICAgICBzdGFydF9kaW1lbnNpb24gKHRydWUpOwotKyAgICAgICAgIHByb2Nl c3NfZWxlbWVudCAoVFlQRSwgT0ZGU0VULCBmYWxzZSk7Ci0rICAgICAgICAgcHJvY2Vzc19lbGVt ZW50IChUWVBFLCBPRkZTRVQsIHRydWUpOwotKyAgICAgICBmaW5pc2hfZGltZW5zaW9uICh0cnVl LCB0cnVlKTsKLSsgICAgIGZpbmlzaF9kaW1lbnNpb24gKGZhbHNlLCB0cnVlKTsgICovCi0rICB2 b2lkIHByb2Nlc3NfZWxlbWVudCAoc3RydWN0IHR5cGUgKmVsdF90eXBlLCBMT05HRVNUIGVsdF9v ZmYsIGJvb2wgbGFzdF9wKQotKyAgeyAvKiBOb3RoaW5nLiAgKi8gfQotK307Ci0rCi0rLyogQSBj bGFzcyB0byB3cmFwIHVwIHRoZSBwcm9jZXNzIG9mIGl0ZXJhdGluZyBvdmVyIGEgbXVsdGktZGlt ZW5zaW9uYWwKLSsgICBGb3J0cmFuIGFycmF5LiAgSU1QTCBpcyB1c2VkIHRvIHNwZWNpYWxpc2Ug d2hhdCBoYXBwZW5zIGFzIHdlIHdhbGsgb3ZlcgotKyAgIHRoZSBhcnJheS4gIFNlZSBjbGFzcyBG T1JUUkFOX0FSUkFZX1dBTEtFUl9CQVNFX0lNUEwgKGFib3ZlKSBmb3IgdGhlCi0rICAgbWV0aG9k cyB0aGFuIGNhbiBiZSB1c2VkIHRvIGN1c3RvbWlzZSB0aGUgYXJyYXkgd2Fsay4gICovCi0rdGVt cGxhdGU8dHlwZW5hbWUgSW1wbD4KLStjbGFzcyBmb3J0cmFuX2FycmF5X3dhbGtlcgotK3sKLSsg IC8qIEVuc3VyZSB0aGF0IEltcGwgaXMgZGVyaXZlZCBmcm9tIHRoZSByZXF1aXJlZCBiYXNlIGNs YXNzLiAgVGhpcyBqdXN0Ci0rICAgICBlbnN1cmVzIHRoYXQgYWxsIG9mIHRoZSByZXF1aXJlZCBB UEkgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIGFuZCBoYXZlIGEKLSsgICAgIHNlbnNpYmxlIGRlZmF1 bHQgaW1wbGVtZW50YXRpb24uICAqLwotKyAgZ2RiX3N0YXRpY19hc3NlcnQgKChzdGQ6OmlzX2Jh c2Vfb2Y8Zm9ydHJhbl9hcnJheV93YWxrZXJfYmFzZV9pbXBsLEltcGw+Ojp2YWx1ZSkpOwotKwot K3B1YmxpYzoKLSsgIC8qIENyZWF0ZSBhIG5ldyBhcnJheSB3YWxrZXIuICBUWVBFIGlzIHRoZSB0 eXBlIG9mIHRoZSBhcnJheSBiZWluZyB3YWxrZWQKLSsgICAgIG92ZXIsIGFuZCBBRERSRVNTIGlz IHRoZSBiYXNlIGFkZHJlc3MgZm9yIHRoZSBvYmplY3Qgb2YgVFlQRSBpbgotKyAgICAgbWVtb3J5 LiAgQWxsIG90aGVyIGFyZ3VtZW50cyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBjb25zdHJ1Y3RvciBv ZiB0aGUKLSsgICAgIHRlbXBsYXRlIHBhcmFtZXRlciBjbGFzcyBJTVBMLiAgKi8KLSsgIHRlbXBs YXRlIDx0eXBlbmFtZSAuLi5BcmdzPgotKyAgZm9ydHJhbl9hcnJheV93YWxrZXIgKHN0cnVjdCB0 eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcmVzcywKLSsJCQlBcmdzLi4uIGFyZ3MpCi0rICAgIDog bV90eXBlICh0eXBlKSwKLSsgICAgICBtX2FkZHJlc3MgKGFkZHJlc3MpLAotKyAgICAgIG1faW1w bCAodHlwZSwgYWRkcmVzcywgYXJncy4uLikKLSsgIHsKLSsgICAgbV9uZGltZW5zaW9ucyA9ICBj YWxjX2Y3N19hcnJheV9kaW1zIChtX3R5cGUpOwotKyAgfQotKwotKyAgLyogV2FsayB0aGUgYXJy YXkuICAqLwotKyAgdm9pZAotKyAgd2FsayAoKQotKyAgewotKyAgICB3YWxrXzEgKDEsIG1fdHlw ZSwgMCwgZmFsc2UpOwotKyAgfQotKwotK3ByaXZhdGU6Ci0rICAvKiBUaGUgY29yZSBvZiB0aGUg YXJyYXkgd2Fsa2luZyBhbGdvcml0aG0uICBOU1MgaXMgdGhlIGN1cnJlbnQKLSsgICAgIGRpbWVu c2lvbiBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLCBUWVBFIGlzIHRoZSB0eXBlIG9mIHRoaXMgZGlt ZW5zaW9uLAotKyAgICAgYW5kIE9GRlNFVCBpcyB0aGUgb2Zmc2V0IChpbiBieXRlcykgZm9yIHRo ZSBzdGFydCBvZiB0aGlzIGRpbWVuc2lvbi4gICovCi0rICB2b2lkCi0rICB3YWxrXzEgKGludCBu c3MsIHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgb2Zmc2V0LCBib29sIGxhc3RfcCkKLSsgIHsKLSsg ICAgLyogRXh0cmFjdCB0aGUgcmFuZ2UsIGFuZCBnZXQgbG93ZXIgYW5kIHVwcGVyIGJvdW5kcy4g ICovCi0rICAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSkt PmluZGV4X3R5cGUgKCk7Ci0rICAgIExPTkdFU1QgbG93ZXJib3VuZCwgdXBwZXJib3VuZDsKLSsg ICAgaWYgKCFnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVw cGVyYm91bmQpKQotKyAgICAgIGVycm9yICgiZmFpbGVkIHRvIGdldCByYW5nZSBib3VuZHMiKTsK LSsKLSsgICAgLyogQ0FMQyBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0cyBmb3IgZWFj aCBlbGVtZW50IGluIHRoaXMKLSsgICAgICAgZGltZW5zaW9uLiAgKi8KLSsgICAgZm9ydHJhbl9h cnJheV9vZmZzZXRfY2FsY3VsYXRvciBjYWxjICh0eXBlKTsKLSsKLSsgICAgbV9pbXBsLnN0YXJ0 X2RpbWVuc2lvbiAobnNzID09IG1fbmRpbWVuc2lvbnMpOwotKwotKyAgICBpZiAobnNzICE9IG1f bmRpbWVuc2lvbnMpCi0rICAgICAgewotKwkvKiBGb3IgZGltZW5zaW9ucyBvdGhlciB0aGFuIHRo ZSBpbm5lciBtb3N0LCB3YWxrIGVhY2ggZWxlbWVudCBhbmQKLSsJICAgcmVjdXJzZSB3aGlsZSBw ZWVsaW5nIG9mZiBvbmUgbW9yZSBkaW1lbnNpb24gb2YgdGhlIGFycmF5LiAgKi8KLSsJZm9yIChM T05HRVNUIGkgPSBsb3dlcmJvdW5kOwotKwkgICAgIG1faW1wbC5jb250aW51ZV93YWxraW5nIChp IDwgdXBwZXJib3VuZCArIDEpOwotKwkgICAgIGkrKykKLSsJICB7Ci0rCSAgICAvKiBVc2UgdGhl IGluZGV4IGFuZCB0aGUgc3RyaWRlIHRvIHdvcmsgb3V0IGEgbmV3IG9mZnNldC4gICovCi0rCSAg ICBMT05HRVNUIG5ld19vZmZzZXQgPSBvZmZzZXQgKyBjYWxjLmluZGV4X29mZnNldCAoaSk7Ci0r Ci0rCSAgICAvKiBOb3cgcHJpbnQgdGhlIGxvd2VyIGRpbWVuc2lvbi4gICovCi0rCSAgICBzdHJ1 Y3QgdHlwZSAqc3ViYXJyYXlfdHlwZQotKwkgICAgICA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNr X3R5cGVkZWYgKHR5cGUpKTsKLSsJICAgIHdhbGtfMSAobnNzICsgMSwgc3ViYXJyYXlfdHlwZSwg bmV3X29mZnNldCwgKGkgPT0gdXBwZXJib3VuZCkpOwotKwkgIH0KLSsgICAgICB9Ci0rICAgIGVs c2UKLSsgICAgICB7Ci0rCS8qIEZvciB0aGUgaW5uZXIgbW9zdCBkaW1lbnNpb24gb2YgdGhlIGFy cmF5LCBwcm9jZXNzIGVhY2ggZWxlbWVudAotKwkgICB3aXRoaW4gdGhpcyBkaW1lbnNpb24uICAq LwotKwlmb3IgKExPTkdFU1QgaSA9IGxvd2VyYm91bmQ7Ci0rCSAgICAgbV9pbXBsLmNvbnRpbnVl X3dhbGtpbmcgKGkgPCB1cHBlcmJvdW5kICsgMSk7Ci0rCSAgICAgaSsrKQotKwkgIHsKLSsJICAg IExPTkdFU1QgZWx0X29mZiA9IG9mZnNldCArIGNhbGMuaW5kZXhfb2Zmc2V0IChpKTsKLSsKLSsJ ICAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKTsKLSsJICAgIGlmIChpc19keW5hbWljX3R5cGUgKGVsdF90eXBlKSkKLSsJICAg ICAgewotKwkJQ09SRV9BRERSIGVfYWRkcmVzcyA9IG1fYWRkcmVzcyArIGVsdF9vZmY7Ci0rCQll bHRfdHlwZSA9IHJlc29sdmVfZHluYW1pY190eXBlIChlbHRfdHlwZSwge30sIGVfYWRkcmVzcyk7 Ci0rCSAgICAgIH0KLSsKLSsJICAgIG1faW1wbC5wcm9jZXNzX2VsZW1lbnQgKGVsdF90eXBlLCBl bHRfb2ZmLCAoaSA9PSB1cHBlcmJvdW5kKSk7Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsgICAgbV9p bXBsLmZpbmlzaF9kaW1lbnNpb24gKG5zcyA9PSBtX25kaW1lbnNpb25zLCBsYXN0X3AgfHwgbnNz ID09IDEpOwotKyAgfQotKwotKyAgLyogVGhlIGFycmF5IHR5cGUgYmVpbmcgcHJvY2Vzc2VkLiAg Ki8KLSsgIHN0cnVjdCB0eXBlICptX3R5cGU7Ci0rCi0rICAvKiBUaGUgYWRkcmVzcyBpbiB0YXJn ZXQgbWVtb3J5IGZvciB0aGUgb2JqZWN0IG9mIE1fVFlQRSBiZWluZwotKyAgICAgcHJvY2Vzc2Vk LiAgVGhpcyBpcyByZXF1aXJlZCBpbiBvcmRlciB0byByZXNvbHZlIGR5bmFtaWMgdHlwZXMuICAq LwotKyAgQ09SRV9BRERSIG1fYWRkcmVzczsKLSsKLSsgIC8qIEFuIGluc3RhbmNlIG9mIHRoZSB0 ZW1wbGF0ZSBzcGVjaWFsaXNhdGlvbiBjbGFzcy4gICovCi0rICBJbXBsIG1faW1wbDsKLSsKLSsg IC8qIFRoZSB0b3RhbCBudW1iZXIgb2YgZGltZW5zaW9ucyBpbiBNX1RZUEUuICAqLwotKyAgaW50 IG1fbmRpbWVuc2lvbnM7Ci0rfTsKLSsKLSsjZW5kaWYgLyogRl9BUlJBWV9XQUxLRVJfSCAqLwot ZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYwotLS0tIGEvZ2RiL2YtbGFu Zy5jCi0rKysgYi9nZGIvZi1sYW5nLmMKLUBAIC0zNiw5ICszNiwzNiBAQAotICNpbmNsdWRlICJj LWxhbmcuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LWZsb2F0LmgiCi0gI2luY2x1ZGUgImdkYmFyY2gu aCIKLSsjaW5jbHVkZSAiZ2RiY21kLmgiCi0rI2luY2x1ZGUgImYtYXJyYXktd2Fsa2VyLmgiCi0g Ci0gI2luY2x1ZGUgPG1hdGguaD4KLSAKLSsvKiBXaGV0aGVyIEdEQiBzaG91bGQgcmVwYWNrIGFy cmF5IHNsaWNlcyBjcmVhdGVkIGJ5IHRoZSB1c2VyLiAgKi8KLStzdGF0aWMgYm9vbCByZXBhY2tf YXJyYXlfc2xpY2VzID0gZmFsc2U7Ci0rCi0rLyogSW1wbGVtZW50ICdzaG93IGZvcnRyYW4gcmVw YWNrLWFycmF5LXNsaWNlcycuICAqLwotK3N0YXRpYyB2b2lkCi0rc2hvd19yZXBhY2tfYXJyYXlf c2xpY2VzIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgaW50IGZyb21fdHR5LAotKwkJCSAgc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotK3sKLSsgIGZwcmludGZf ZmlsdGVyZWQgKGZpbGUsIF8oIlJlcGFja2luZyBvZiBGb3J0cmFuIGFycmF5IHNsaWNlcyBpcyAl cy5cbiIpLAotKwkJICAgIHZhbHVlKTsKLSt9Ci0rCi0rLyogRGVidWdnaW5nIG9mIEZvcnRyYW4n cyBhcnJheSBzbGljaW5nLiAgKi8KLStzdGF0aWMgYm9vbCBmb3J0cmFuX2FycmF5X3NsaWNpbmdf ZGVidWcgPSBmYWxzZTsKLSsKLSsvKiBJbXBsZW1lbnQgJ3Nob3cgZGVidWcgZm9ydHJhbi1hcnJh eS1zbGljaW5nJy4gICovCi0rc3RhdGljIHZvaWQKLStzaG93X2ZvcnRyYW5fYXJyYXlfc2xpY2lu Z19kZWJ1ZyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKLSsJCQkJICBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqYywKLSsJCQkJICBjb25zdCBjaGFyICp2YWx1ZSkKLSt7Ci0r ICBmcHJpbnRmX2ZpbHRlcmVkIChmaWxlLCBfKCJEZWJ1Z2dpbmcgb2YgRm9ydHJhbiBhcnJheSBz bGljaW5nIGlzICVzLlxuIiksCi0rCQkgICAgdmFsdWUpOwotK30KLSsKLSAvKiBMb2NhbCBmdW5j dGlvbnMgKi8KLSAKLSAvKiBSZXR1cm4gdGhlIGVuY29kaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQg Zm9yIHRoZSBjaGFyYWN0ZXIgdHlwZQotQEAgLTExNCw1NyArMTQxLDYgQEAgZW51bSBmX3ByaW1p dGl2ZV90eXBlcyB7Ci0gICBucl9mX3ByaW1pdGl2ZV90eXBlcwotIH07Ci0gCi0tLyogQ2FsbGVk IGZyb20gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSB0byB0YWtlIGEgc2xpY2Ugb2YgYW4gYXJyYXkg b3IgYQotLSAgIHN0cmluZy4gIEFSUkFZIGlzIHRoZSBhcnJheSBvciBzdHJpbmcgdG8gYmUgYWNj ZXNzZWQuICBFWFAsIFBPUywgYW5kCi0tICAgTk9TSURFIGFyZSBhcyBmb3IgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkLiAgUmV0dXJuIGEgdmFsdWUgdGhhdCBpcyBhCi0tICAgc2xpY2Ugb2YgdGhl IGFycmF5LiAgKi8KLS0KLS1zdGF0aWMgc3RydWN0IHZhbHVlICoKLS12YWx1ZV9mOTBfc3ViYXJy YXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCi0tCQkgICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKLS17Ci0tICBpbnQgcGMgPSAoKnBvcykgKyAx OwotLSAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQsIHN0cmlkZTsKLS0gIHN0cnVjdCB0 eXBlICpyYW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KS0+aW5kZXhfdHlw ZSAoKSk7Ci0tICBlbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZwotLSAgICA9IChlbnVtIHJhbmdl X2ZsYWcpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Ci0tCi0tICAq cG9zICs9IDM7Ci0tCi0tICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxU KQotLSAgICBsb3dfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5sb3cuY29uc3RfdmFsICgpOwot LSAgZWxzZQotLSAgICBsb3dfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAg KG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLS0KLS0gIGlmIChyYW5nZV9mbGFnICYgUkFO R0VfSElHSF9CT1VORF9ERUZBVUxUKQotLSAgICBoaWdoX2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAo KS0+aGlnaC5jb25zdF92YWwgKCk7Ci0tICBlbHNlCi0tICAgIGhpZ2hfYm91bmQgPSB2YWx1ZV9h c19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLS0K LS0gIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSEFTX1NUUklERSkKLS0gICAgc3RyaWRlID0gdmFs dWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7 Ci0tICBlbHNlCi0tICAgIHN0cmlkZSA9IDE7Ci0tCi0tICBpZiAoc3RyaWRlICE9IDEpCi0tICAg IGVycm9yIChfKCJGb3J0cmFuIGFycmF5IHN0cmlkZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9y dGVkIikpOwotLQotLSAgcmV0dXJuIHZhbHVlX3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdo X2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0tfQotLQotLS8qIEhlbHBlciBmb3Igc2tpcHBpbmcg YWxsIHRoZSBhcmd1bWVudHMgaW4gYW4gdW5kZXRlcm1pbmVkIGFyZ3VtZW50IGxpc3QuCi0tICAg VGhpcyBmdW5jdGlvbiB3YXMgZGVzaWduZWQgZm9yIHVzZSBpbiB0aGUgT1BfRjc3X1VOREVURVJN SU5FRF9BUkdMSVNUCi0tICAgY2FzZSBvZiBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgYXMgbXVs dGlwbGUsIGJ1dCBub3QgYWxsLCBjb2RlIHBhdGhzCi0tICAgcmVxdWlyZSBhIGdlbmVyaWMgc2tp cC4gICovCi0tCi0tc3RhdGljIHZvaWQKLS1za2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChpbnQg bmFyZ3MsIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAotLQkJCSAgIGVudW0gbm9z aWRlIG5vc2lkZSkKLS17Ci0tICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyArK2kpCi0tICAg IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tfQotLQotIC8q IFJldHVybiB0aGUgbnVtYmVyIG9mIGRpbWVuc2lvbnMgZm9yIGEgRm9ydHJhbiBhcnJheSBvciBz dHJpbmcuICAqLwotIAotIGludAotQEAgLTE4OSw2ICsxNjUsMTQ1IEBAIGNhbGNfZjc3X2FycmF5 X2RpbXMgKHN0cnVjdCB0eXBlICphcnJheV90eXBlKQotICAgcmV0dXJuIG5kaW1lbjsKLSB9Ci0g Ci0rLyogQSBjbGFzcyB1c2VkIGJ5IEZPUlRSQU5fVkFMVUVfU1VCQVJSQVkgd2hlbiByZXBhY2tp bmcgRm9ydHJhbiBhcnJheQotKyAgIHNsaWNlcy4gIFRoaXMgaXMgYSBiYXNlIGNsYXNzIGZvciB0 d28gYWx0ZXJuYXRpdmUgcmVwYWNraW5nIG1lY2hhbmlzbXMsCi0rICAgb25lIGZvciB3aGVuIHJl cGFja2luZyBmcm9tIGEgbGF6eSB2YWx1ZSwgYW5kIG9uZSBmb3IgcmVwYWNraW5nIGZyb20gYQot KyAgIG5vbi1sYXp5IChhbHJlYWR5IGxvYWRlZCkgdmFsdWUuICAqLwotK2NsYXNzIGZvcnRyYW5f YXJyYXlfcmVwYWNrZXJfYmFzZV9pbXBsCi0rICA6IHB1YmxpYyBmb3J0cmFuX2FycmF5X3dhbGtl cl9iYXNlX2ltcGwKLSt7Ci0rcHVibGljOgotKyAgLyogQ29uc3RydWN0b3IsIERFU1QgaXMgdGhl IHZhbHVlIHdlIGFyZSByZXBhY2tpbmcgaW50by4gICovCi0rICBmb3J0cmFuX2FycmF5X3JlcGFj a2VyX2Jhc2VfaW1wbCAoc3RydWN0IHZhbHVlICpkZXN0KQotKyAgICA6IG1fZGVzdCAoZGVzdCks Ci0rICAgICAgbV9kZXN0X29mZnNldCAoMCkKLSsgIHsgLyogTm90aGluZy4gICovIH0KLSsKLSsg IC8qIFdoZW4gd2Ugc3RhcnQgcHJvY2Vzc2luZyB0aGUgaW5uZXIgbW9zdCBkaW1lbnNpb24sIHRo aXMgaXMgd2hlcmUgd2UKLSsgICAgIHdpbGwgYmUgY3JlYXRpbmcgdmFsdWVzIGZvciBlYWNoIGVs ZW1lbnQgYXMgd2UgbG9hZCB0aGVtIGFuZCB0aGVuIGNvcHkKLSsgICAgIHRoZW0gaW50byB0aGUg TV9ERVNUIHZhbHVlLiAgU2V0IGEgdmFsdWUgbWFyayBzbyB3ZSBjYW4gZnJlZSB0aGVzZQotKyAg ICAgdGVtcG9yYXJ5IHZhbHVlcy4gICovCi0rICB2b2lkIHN0YXJ0X2RpbWVuc2lvbiAoYm9vbCBp bm5lcl9wKQotKyAgewotKyAgICBpZiAoaW5uZXJfcCkKLSsgICAgICB7Ci0rCWdkYl9hc3NlcnQg KG1fbWFyayA9PSBudWxscHRyKTsKLSsJbV9tYXJrID0gdmFsdWVfbWFyayAoKTsKLSsgICAgICB9 Ci0rICB9Ci0rCi0rICAvKiBXaGVuIHdlIGZpbmlzaCBwcm9jZXNzaW5nIHRoZSBpbm5lciBtb3N0 IGRpbWVuc2lvbiBmcmVlIGFsbCB0ZW1wb3JhcnkKLSsgICAgIHZhbHVlIHRoYXQgd2VyZSBjcmVh dGVkLiAgKi8KLSsgIHZvaWQgZmluaXNoX2RpbWVuc2lvbiAoYm9vbCBpbm5lcl9wLCBib29sIGxh c3RfcCkKLSsgIHsKLSsgICAgaWYgKGlubmVyX3ApCi0rICAgICAgewotKwlnZGJfYXNzZXJ0ICht X21hcmsgIT0gbnVsbHB0cik7Ci0rCXZhbHVlX2ZyZWVfdG9fbWFyayAobV9tYXJrKTsKLSsJbV9t YXJrID0gbnVsbHB0cjsKLSsgICAgICB9Ci0rICB9Ci0rCi0rcHJvdGVjdGVkOgotKyAgLyogQ29w eSB0aGUgY29udGVudHMgb2YgYXJyYXkgZWxlbWVudCBFTFQgaW50byBNX0RFU1QgYXQgdGhlIG5l eHQKLSsgICAgIGF2YWlsYWJsZSBvZmZzZXQuICAqLwotKyAgdm9pZCBjb3B5X2VsZW1lbnRfdG9f ZGVzdCAoc3RydWN0IHZhbHVlICplbHQpCi0rICB7Ci0rICAgIHZhbHVlX2NvbnRlbnRzX2NvcHkg KG1fZGVzdCwgbV9kZXN0X29mZnNldCwgZWx0LCAwLAotKwkJCSBUWVBFX0xFTkdUSCAodmFsdWVf dHlwZSAoZWx0KSkpOwotKyAgICBtX2Rlc3Rfb2Zmc2V0ICs9IFRZUEVfTEVOR1RIICh2YWx1ZV90 eXBlIChlbHQpKTsKLSsgIH0KLSsKLSsgIC8qIFRoZSB2YWx1ZSBiZWluZyB3cml0dGVuIHRvLiAg Ki8KLSsgIHN0cnVjdCB2YWx1ZSAqbV9kZXN0OwotKwotKyAgLyogVGhlIGJ5dGUgb2Zmc2V0IGlu IE1fREVTVCBhdCB3aGljaCB0aGUgbmV4dCBlbGVtZW50IHNob3VsZCBiZQotKyAgICAgd3JpdHRl bi4gICovCi0rICBMT05HRVNUIG1fZGVzdF9vZmZzZXQ7Ci0rCi0rICAvKiBTZXQgd2l0aCBhIGNh bGwgdG8gVkFMVUVfTUFSSywgYW5kIHRoZW4gcmVzZXQgYWZ0ZXIgY2FsbGluZwotKyAgICAgVkFM VUVfRlJFRV9UT19NQVJLLiAgKi8KLSsgIHN0cnVjdCB2YWx1ZSAqbV9tYXJrID0gbnVsbHB0cjsK LSt9OwotKwotKy8qIEEgY2xhc3MgdXNlZCBieSBGT1JUUkFOX1ZBTFVFX1NVQkFSUkFZIHdoZW4g cmVwYWNraW5nIEZvcnRyYW4gYXJyYXkKLSsgICBzbGljZXMuICBUaGlzIGNsYXNzIGlzIHNwZWNp YWxpc2VkIGZvciByZXBhY2tpbmcgYW4gYXJyYXkgc2xpY2UgZnJvbSBhCi0rICAgbGF6eSBhcnJh eSB2YWx1ZSwgYXMgc3VjaCBpdCBkb2VzIG5vdCByZXF1aXJlIHRoZSBwYXJlbnQgYXJyYXkgdmFs dWUgdG8KLSsgICBiZSBsb2FkZWQgaW50byBHREIncyBtZW1vcnk7IHRoZSBwYXJlbnQgdmFsdWUg Y291bGQgYmUgaHVnZSwgd2hpbGUgdGhlCi0rICAgc2xpY2UgY291bGQgYmUgdGlueS4gICovCi0r Y2xhc3MgZm9ydHJhbl9sYXp5X2FycmF5X3JlcGFja2VyX2ltcGwKLSsgIDogcHVibGljIGZvcnRy YW5fYXJyYXlfcmVwYWNrZXJfYmFzZV9pbXBsCi0rewotK3B1YmxpYzoKLSsgIC8qIENvbnN0cnVj dG9yLiAgVFlQRSBpcyB0aGUgdHlwZSBvZiB0aGUgc2xpY2UgYmVpbmcgbG9hZGVkIGZyb20gdGhl Ci0rICAgICBwYXJlbnQgdmFsdWUsIHNvIHRoaXMgdHlwZSB3aWxsIGNvcnJlY3RseSByZWZsZWN0 IHRoZSBzdHJpZGVzIHJlcXVpcmVkCi0rICAgICB0byBmaW5kIGFsbCBvZiB0aGUgZWxlbWVudHMg ZnJvbSB0aGUgcGFyZW50IHZhbHVlLiAgQUREUkVTUyBpcyB0aGUKLSsgICAgIGFkZHJlc3MgaW4g dGFyZ2V0IG1lbW9yeSBvZiB2YWx1ZSBtYXRjaGluZyBUWVBFLCBhbmQgREVTVCBpcyB0aGUgdmFs dWUKLSsgICAgIHdlIGFyZSByZXBhY2tpbmcgaW50by4gICovCi0rICBleHBsaWNpdCBmb3J0cmFu X2xhenlfYXJyYXlfcmVwYWNrZXJfaW1wbCAoc3RydWN0IHR5cGUgKnR5cGUsCi0rCQkJCQkgICAg IENPUkVfQUREUiBhZGRyZXNzLAotKwkJCQkJICAgICBzdHJ1Y3QgdmFsdWUgKmRlc3QpCi0rICAg IDogZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9iYXNlX2ltcGwgKGRlc3QpLAotKyAgICAgIG1fYWRk ciAoYWRkcmVzcykKLSsgIHsgLyogTm90aGluZy4gICovIH0KLSsKLSsgIC8qIENyZWF0ZSBhIGxh enkgdmFsdWUgaW4gdGFyZ2V0IG1lbW9yeSByZXByZXNlbnRpbmcgYSBzaW5nbGUgZWxlbWVudCwK LSsgICAgIHRoZW4gbG9hZCB0aGUgZWxlbWVudCBpbnRvIEdEQidzIG1lbW9yeSBhbmQgY29weSB0 aGUgY29udGVudHMgaW50byB0aGUKLSsgICAgIGRlc3RpbmF0aW9uIHZhbHVlLiAgKi8KLSsgIHZv aWQgcHJvY2Vzc19lbGVtZW50IChzdHJ1Y3QgdHlwZSAqZWx0X3R5cGUsIExPTkdFU1QgZWx0X29m ZiwgYm9vbCBsYXN0X3ApCi0rICB7Ci0rICAgIGNvcHlfZWxlbWVudF90b19kZXN0ICh2YWx1ZV9h dF9sYXp5IChlbHRfdHlwZSwgbV9hZGRyICsgZWx0X29mZikpOwotKyAgfQotKwotK3ByaXZhdGU6 Ci0rICAvKiBUaGUgYWRkcmVzcyBpbiB0YXJnZXQgbWVtb3J5IHdoZXJlIHRoZSBwYXJlbnQgdmFs dWUgc3RhcnRzLiAgKi8KLSsgIENPUkVfQUREUiBtX2FkZHI7Ci0rfTsKLSsKLSsvKiBBIGNsYXNz IHVzZWQgYnkgRk9SVFJBTl9WQUxVRV9TVUJBUlJBWSB3aGVuIHJlcGFja2luZyBGb3J0cmFuIGFy cmF5Ci0rICAgc2xpY2VzLiAgVGhpcyBjbGFzcyBpcyBzcGVjaWFsaXNlZCBmb3IgcmVwYWNraW5n IGFuIGFycmF5IHNsaWNlIGZyb20gYQotKyAgIHByZXZpb3VzbHkgbG9hZGVkIChub24tbGF6eSkg YXJyYXkgdmFsdWUsIGFzIHN1Y2ggaXQgZmV0Y2hlcyB0aGUKLSsgICBlbGVtZW50IHZhbHVlcyBm cm9tIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IHZhbHVlLiAgKi8KLStjbGFzcyBmb3J0cmFu X2FycmF5X3JlcGFja2VyX2ltcGwKLSsgIDogcHVibGljIGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJf YmFzZV9pbXBsCi0rewotK3B1YmxpYzoKLSsgIC8qIENvbnN0cnVjdG9yLiAgVFlQRSBpcyB0aGUg dHlwZSBmb3IgdGhlIGFycmF5IHNsaWNlIHdpdGhpbiB0aGUgcGFyZW50Ci0rICAgICB2YWx1ZSwg YXMgc3VjaCBpdCBoYXMgc3RyaWRlIHZhbHVlcyBhcyByZXF1aXJlZCB0byBmaW5kIHRoZSBlbGVt ZW50cwotKyAgICAgd2l0aGluIHRoZSBvcmlnaW5hbCBwYXJlbnQgdmFsdWUuICBBRERSRVNTIGlz IHRoZSBhZGRyZXNzIGluIHRhcmdldAotKyAgICAgbWVtb3J5IG9mIHRoZSB2YWx1ZSBtYXRjaGlu ZyBUWVBFLiAgQkFTRV9PRkZTRVQgaXMgdGhlIG9mZnNldCBmcm9tCi0rICAgICB0aGUgc3RhcnQg b2YgVkFMJ3MgY29udGVudCBidWZmZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBvYmplY3Qgb2YgVFlQ RSwKLSsgICAgIFZBTCBpcyB0aGUgcGFyZW50IG9iamVjdCBmcm9tIHdoaWNoIHdlIGFyZSBsb2Fk aW5nIHRoZSB2YWx1ZSwgYW5kCi0rICAgICBERVNUIGlzIHRoZSB2YWx1ZSBpbnRvIHdoaWNoIHdl IGFyZSByZXBhY2tpbmcuICAqLwotKyAgZXhwbGljaXQgZm9ydHJhbl9hcnJheV9yZXBhY2tlcl9p bXBsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHJlc3MsCi0rCQkJCQlMT05HRVNU IGJhc2Vfb2Zmc2V0LAotKwkJCQkJc3RydWN0IHZhbHVlICp2YWwsIHN0cnVjdCB2YWx1ZSAqZGVz dCkKLSsgICAgOiBmb3J0cmFuX2FycmF5X3JlcGFja2VyX2Jhc2VfaW1wbCAoZGVzdCksCi0rICAg ICAgbV9iYXNlX29mZnNldCAoYmFzZV9vZmZzZXQpLAotKyAgICAgIG1fdmFsICh2YWwpCi0rICB7 Ci0rICAgIGdkYl9hc3NlcnQgKCF2YWx1ZV9sYXp5ICh2YWwpKTsKLSsgIH0KLSsKLSsgIC8qIEV4 dHJhY3QgYW4gZWxlbWVudCBvZiBFTFRfVFlQRSBhdCBvZmZzZXQgKE1fQkFTRV9PRkZTRVQgKyBF TFRfT0ZGKQotKyAgICAgZnJvbSB0aGUgY29udGVudCBidWZmZXIgb2YgTV9WQUwgdGhlbiBjb3B5 IHRoaXMgZXh0cmFjdGVkIHZhbHVlIGludG8KLSsgICAgIHRoZSByZXBhY2tlZCBkZXN0aW5hdGlv biB2YWx1ZS4gICovCi0rICB2b2lkIHByb2Nlc3NfZWxlbWVudCAoc3RydWN0IHR5cGUgKmVsdF90 eXBlLCBMT05HRVNUIGVsdF9vZmYsIGJvb2wgbGFzdF9wKQotKyAgewotKyAgICBzdHJ1Y3QgdmFs dWUgKmVsdAotKyAgICAgID0gdmFsdWVfZnJvbV9jb21wb25lbnQgKG1fdmFsLCBlbHRfdHlwZSwg KGVsdF9vZmYgKyBtX2Jhc2Vfb2Zmc2V0KSk7Ci0rICAgIGNvcHlfZWxlbWVudF90b19kZXN0IChl bHQpOwotKyAgfQotKwotK3ByaXZhdGU6Ci0rICAvKiBUaGUgb2Zmc2V0IGludG8gdGhlIGNvbnRl bnQgYnVmZmVyIG9mIE1fVkFMIHRvIHRoZSBzdGFydCBvZiB0aGUgc2xpY2UKLSsgICAgIGJlaW5n IGV4dHJhY3RlZC4gICovCi0rICBMT05HRVNUIG1fYmFzZV9vZmZzZXQ7Ci0rCi0rICAvKiBUaGUg cGFyZW50IHZhbHVlIGZyb20gd2hpY2ggd2UgYXJlIGV4dHJhY3RpbmcgYSBzbGljZS4gICovCi0r ICBzdHJ1Y3QgdmFsdWUgKm1fdmFsOwotK307Ci0rCi0gLyogQ2FsbGVkIGZyb20gZXZhbHVhdGVf c3ViZXhwX3N0YW5kYXJkIHRvIHBlcmZvcm0gYXJyYXkgaW5kZXhpbmcsIGFuZAotICAgIHN1Yi1y YW5nZSBleHRyYWN0aW9uLCBmb3IgRm9ydHJhbi4gIEFzIHdlbGwgYXMgYXJyYXlzIHRoaXMgZnVu Y3Rpb24KLSAgICBhbHNvIGhhbmRsZXMgc3RyaW5ncyBhcyB0aGV5IGNhbiBiZSB0cmVhdGVkIGxp a2UgYXJyYXlzIG9mIGNoYXJhY3RlcnMuCi1AQCAtMjAwLDUxICszMTUsMzk0IEBAIHN0YXRpYyBz dHJ1Y3QgdmFsdWUgKgotIGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJy YXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0gCQkJaW50ICpwb3MsIGludCBuYXJncywgZW51 bSBub3NpZGUgbm9zaWRlKQotIHsKLS0gIGlmIChleHAtPmVsdHNbKnBvc10ub3Bjb2RlID09IE9Q X1JBTkdFKQotLSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcnJheSwgZXhwLCBwb3Ms IG5vc2lkZSk7Ci0tCi0tICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLSsgIHR5cGUgKm9yaWdp bmFsX2FycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotKyAg Ym9vbCBpc19zdHJpbmdfcCA9IG9yaWdpbmFsX2FycmF5X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9D T0RFX1NUUklORzsKLSsKLSsgIC8qIFBlcmZvcm0gY2hlY2tzIGZvciBBUlJBWSBub3QgYmVpbmcg YXZhaWxhYmxlLiAgVGhlIHNvbWV3aGF0IG92ZXJseQotKyAgICAgY29tcGxleCBsb2dpYyBoZXJl IGlzIGp1c3QgdG8ga2VlcCBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggdGhlCi0rICAgICBl cnJvcnMgdGhhdCB3ZSB1c2VkIHRvIGdldCBiZWZvcmUgRk9SVFJBTl9WQUxVRV9TVUJBUlJBWSB3 YXMKLSsgICAgIHJld3JpdHRlbi4gIE1heWJlIGEgZnV0dXJlIHRhc2sgd291bGQgc3RyZWFtbGlu ZSB0aGUgZXJyb3IgbWVzc2FnZXMgd2UKLSsgICAgIGdldCBoZXJlLCBhbmQgdXBkYXRlIGFsbCB0 aGUgZXhwZWN0ZWQgdGVzdCByZXN1bHRzLiAgKi8KLSsgIGlmIChleHAtPmVsdHNbKnBvc10ub3Bj b2RlICE9IE9QX1JBTkdFKQotICAgICB7Ci0tICAgICAgc2tpcF91bmRldGVybWluZWRfYXJnbGlz dCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOwotLSAgICAgIC8qIFJldHVybiB0aGUgZHVtbXkg dmFsdWUgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiAgKi8KLS0gICAgICByZXR1cm4gYXJyYXk7Ci0r ICAgICAgaWYgKHR5cGVfbm90X2Fzc29jaWF0ZWQgKG9yaWdpbmFsX2FycmF5X3R5cGUpKQotKwll cnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAodmVjdG9yIG5vdCBhc3NvY2lhdGVkKSIp KTsKLSsgICAgICBlbHNlIGlmICh0eXBlX25vdF9hbGxvY2F0ZWQgKG9yaWdpbmFsX2FycmF5X3R5 cGUpKQotKwllcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAodmVjdG9yIG5vdCBhbGxv Y2F0ZWQpIikpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAodHlwZV9ub3Rf YXNzb2NpYXRlZCAob3JpZ2luYWxfYXJyYXlfdHlwZSkpCi0rCWVycm9yIChfKCJhcnJheSBub3Qg YXNzb2NpYXRlZCIpKTsKLSsgICAgICBlbHNlIGlmICh0eXBlX25vdF9hbGxvY2F0ZWQgKG9yaWdp bmFsX2FycmF5X3R5cGUpKQotKwllcnJvciAoXygiYXJyYXkgbm90IGFsbG9jYXRlZCIpKTsKLSAg ICAgfQotIAotLSAgTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0t ICBpbnQgbmRpbWVuc2lvbnMgPSAxOwotLSAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBl ZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotKyAgLyogRmlyc3QgY2hlY2sgdGhhdCB0aGUgbnVt YmVyIG9mIGRpbWVuc2lvbnMgaW4gdGhlIHR5cGUgd2UgYXJlIHNsaWNpbmcKLSsgICAgIG1hdGNo ZXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgd2Ugd2VyZSBwYXNzZWQuICAqLwotKyAgaW50IG5k aW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAob3JpZ2luYWxfYXJyYXlfdHlwZSk7Ci0r ICBpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCi0rICAgIGVycm9yIChfKCJXcm9uZyBudW1iZXIg b2Ygc3Vic2NyaXB0cyIpKTsKLSAKLS0gIGlmIChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCi0t ICAgIGVycm9yIChfKCJUb28gbWFueSBzdWJzY3JpcHRzIGZvciBGNzcgKCVkIE1heCkiKSwgTUFY X0ZPUlRSQU5fRElNUyk7Ci0rICAvKiBUaGlzIHdpbGwgYmUgaW5pdGlhbGlzZWQgYmVsb3cgd2l0 aCB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudHMgaGVsZCBpbgotKyAgICAgQVJSQVkuICAqLwotKyAg c3RydWN0IHR5cGUgKmlubmVyX2VsZW1lbnRfdHlwZTsKLSAKLS0gIG5kaW1lbnNpb25zID0gY2Fs Y19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0rICAvKiBFeHRyYWN0IHRoZSB0eXBlcyBvZiBlYWNo IGFycmF5IGRpbWVuc2lvbiBmcm9tIHRoZSBvcmlnaW5hbCBhcnJheQotKyAgICAgdHlwZS4gIFdl IG5lZWQgdGhlc2UgYXZhaWxhYmxlIHNvIHdlIGNhbiBmaWxsIGluIHRoZSBkZWZhdWx0IHVwcGVy IGFuZAotKyAgICAgbG93ZXIgYm91bmRzIGlmIHRoZSB1c2VyIHJlcXVlc3RlZCBzbGljZSBkb2Vz bid0IHByb3ZpZGUgdGhhdAotKyAgICAgaW5mb3JtYXRpb24uICBBZGRpdGlvbmFsbHkgdW5wYWNr aW5nIHRoZSBkaW1lbnNpb25zIGxpa2UgdGhpcyBnaXZlcyB1cwotKyAgICAgdGhlIGlubmVyIGVs ZW1lbnQgdHlwZS4gICovCi0rICBzdGQ6OnZlY3RvcjxzdHJ1Y3QgdHlwZSAqPiBkaW1fdHlwZXM7 Ci0rICB7Ci0rICAgIGRpbV90eXBlcy5yZXNlcnZlIChuZGltZW5zaW9ucyk7Ci0rICAgIHN0cnVj dCB0eXBlICp0eXBlID0gb3JpZ2luYWxfYXJyYXlfdHlwZTsKLSsgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBuZGltZW5zaW9uczsgKytpKQotKyAgICAgIHsKLSsJZGltX3R5cGVzLnB1c2hfYmFjayAo dHlwZSk7Ci0rCXR5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKTsKLSsgICAgICB9Ci0rICAg IC8qIFRZUEUgaXMgbm93IHRoZSBpbm5lciBlbGVtZW50IHR5cGUgb2YgdGhlIGFycmF5LCB3ZSBz dGFydCB0aGUgbmV3Ci0rICAgICAgIGFycmF5IHNsaWNlIG9mZiBhcyB0aGlzIHR5cGUsIHRoZW4g YXMgd2UgcHJvY2VzcyB0aGUgcmVxdWVzdGVkIHNsaWNlCi0rICAgICAgIChmcm9tIHRoZSB1c2Vy KSB3ZSB3cmFwIG5ldyB0eXBlcyBhcm91bmQgdGhpcyB0byBidWlsZCB1cCB0aGUgZmluYWwKLSsg ICAgICAgc2xpY2UgdHlwZS4gICovCi0rICAgIGlubmVyX2VsZW1lbnRfdHlwZSA9IHR5cGU7Ci0r ICB9Ci0gCi0tICBpZiAobmFyZ3MgIT0gbmRpbWVuc2lvbnMpCi0tICAgIGVycm9yIChfKCJXcm9u ZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIpKTsKLSsgIC8qIEFzIHdlIGFuYWx5c2UgdGhlIG5ldyBz bGljZSB0eXBlIHdlIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgZGF0YQotKyAgICAgYmVpbmcg cmVmZXJlbmNlZCBpcyBjb250aWd1b3VzLiAgRG8gZGVjaWRlIHRoaXMgd2UgbXVzdCB0cmFjayB0 aGUgc2l6ZQotKyAgICAgb2YgYW4gZWxlbWVudCBhdCBlYWNoIGRpbWVuc2lvbiBvZiB0aGUgbmV3 IHNsaWNlIGFycmF5LiAgSW5pdGlhbGx5IHRoZQotKyAgICAgZWxlbWVudHMgb2YgdGhlIGlubmVy IG1vc3QgZGltZW5zaW9uIG9mIHRoZSBhcnJheSBhcmUgdGhlIHNhbWUgaW5uZXIKLSsgICAgIG1v c3QgZWxlbWVudHMgYXMgdGhlIG9yaWdpbmFsIEFSUkFZLiAgKi8KLSsgIExPTkdFU1Qgc2xpY2Vf ZWxlbWVudF9zaXplID0gVFlQRV9MRU5HVEggKGlubmVyX2VsZW1lbnRfdHlwZSk7Ci0rCi0rICAv KiBTdGFydCBvZmYgYXNzdW1pbmcgYWxsIGRhdGEgaXMgY29udGlndW91cywgdGhpcyB3aWxsIGJl IHNldCB0byBmYWxzZQotKyAgICAgaWYgYWNjZXNzIHRvIGFueSBkaW1lbnNpb24gcmVzdWx0cyBp biBub24tY29udGlndW91cyBkYXRhLiAgKi8KLSsgIGJvb2wgaXNfYWxsX2NvbnRpZ3VvdXMgPSB0 cnVlOwotKwotKyAgLyogVGhlIFRPVEFMX09GRlNFVCBpcyB0aGUgZGlzdGFuY2UgaW4gYnl0ZXMg ZnJvbSB0aGUgc3RhcnQgb2YgdGhlCi0rICAgICBvcmlnaW5hbCBBUlJBWSB0byB0aGUgc3RhcnQg b2YgdGhlIG5ldyBzbGljZS4gIFRoaXMgaXMgY2FsY3VsYXRlZCBhcwotKyAgICAgd2UgcHJvY2Vz cyB0aGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgdXNlci4gICovCi0rICBMT05HRVNUIHRvdGFsX29m ZnNldCA9IDA7Ci0rCi0rICAvKiBBIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgaW5mb3JtYXRpb24g YWJvdXQgZWFjaCBkaW1lbnNpb24gb2YgdGhlCi0rICAgICByZXN1bHRpbmcgc2xpY2UuICAqLwot KyAgc3RydWN0IHNsaWNlX2RpbQotKyAgewotKyAgICAvKiBDb25zdHJ1Y3Rvci4gICovCi0rICAg IHNsaWNlX2RpbSAoTE9OR0VTVCBsLCBMT05HRVNUIGgsIExPTkdFU1Qgcywgc3RydWN0IHR5cGUg KmlkeCkKLSsgICAgICA6IGxvdyAobCksCi0rCWhpZ2ggKGgpLAotKwlzdHJpZGUgKHMpLAotKwlp bmRleCAoaWR4KQotKyAgICB7IC8qIE5vdGhpbmcuICAqLyB9Ci0rCi0rICAgIC8qIFRoZSBsb3cg Ym91bmQgZm9yIHRoaXMgZGltZW5zaW9uIG9mIHRoZSBzbGljZS4gICovCi0rICAgIExPTkdFU1Qg bG93OwotKwotKyAgICAvKiBUaGUgaGlnaCBib3VuZCBmb3IgdGhpcyBkaW1lbnNpb24gb2YgdGhl IHNsaWNlLiAgKi8KLSsgICAgTE9OR0VTVCBoaWdoOwotKwotKyAgICAvKiBUaGUgYnl0ZSBzdHJp ZGUgZm9yIHRoaXMgZGltZW5zaW9uIG9mIHRoZSBzbGljZS4gICovCi0rICAgIExPTkdFU1Qgc3Ry aWRlOwotKwotKyAgICBzdHJ1Y3QgdHlwZSAqaW5kZXg7Ci0rICB9OwotKwotKyAgLyogVGhlIGRp bWVuc2lvbnMgb2YgdGhlIHJlc3VsdGluZyBzbGljZS4gICovCi0rICBzdGQ6OnZlY3RvcjxzbGlj ZV9kaW0+IHNsaWNlX2RpbXM7Ci0rCi0rICAvKiBQcm9jZXNzIHRoZSBpbmNvbWluZyBhcmd1bWVu dHMuICAgVGhlc2UgYXJndW1lbnRzIGFyZSBpbiB0aGUgcmV2ZXJzZQotKyAgICAgb3JkZXIgdG8g dGhlIGFycmF5IGRpbWVuc2lvbnMsIHRoYXQgaXMgdGhlIGZpcnN0IGFyZ3VtZW50IHJlZmVycyB0 bwotKyAgICAgdGhlIGxhc3QgYXJyYXkgZGltZW5zaW9uLiAgKi8KLSsgIGlmIChmb3J0cmFuX2Fy cmF5X3NsaWNpbmdfZGVidWcpCi0rICAgIGRlYnVnX3ByaW50ZiAoIlByb2Nlc3NpbmcgYXJyYXkg YWNjZXNzOlxuIik7Ci0rICBmb3IgKGludCBpID0gMDsgaSA8IG5hcmdzOyArK2kpCi0rICAgIHsK LSsgICAgICAvKiBGb3IgZWFjaCBkaW1lbnNpb24gb2YgdGhlIGFycmF5IHRoZSB1c2VyIHdpbGwg aGF2ZSBlaXRoZXIgcHJvdmlkZWQKLSsJIGEgcmFuZ2VkIGFjY2VzcyB3aXRoIG9wdGlvbmFsIGxv d2VyIGJvdW5kLCB1cHBlciBib3VuZCwgYW5kCi0rCSBzdHJpZGUsIG9yIHRoZSB1c2VyIHdpbGwg aGF2ZSBzdXBwbGllZCBhIHNpbmdsZSBpbmRleC4gICovCi0rICAgICAgc3RydWN0IHR5cGUgKmRp bV90eXBlID0gZGltX3R5cGVzW25kaW1lbnNpb25zIC0gKGkgKyAxKV07Ci0rICAgICAgaWYgKGV4 cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCi0rCXsKLSsJICBpbnQgcGMgPSAoKnBv cykgKyAxOwotKwkgIGVudW0gcmFuZ2VfZmxhZyByYW5nZV9mbGFnID0gKGVudW0gcmFuZ2VfZmxh ZykgZXhwLT5lbHRzW3BjXS5sb25nY29uc3Q7Ci0rCSAgKnBvcyArPSAzOwotKwotKwkgIExPTkdF U1QgbG93LCBoaWdoLCBzdHJpZGU7Ci0rCSAgbG93ID0gaGlnaCA9IHN0cmlkZSA9IDA7Ci0rCi0r CSAgaWYgKChyYW5nZV9mbGFnICYgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpID09IDApCi0rCSAg ICBsb3cgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9z LCBub3NpZGUpKTsKLSsJICBlbHNlCi0rCSAgICBsb3cgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKGRp bV90eXBlKTsKLSsJICBpZiAoKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQp ID09IDApCi0rCSAgICBoaWdoID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxs cHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Ci0rCSAgZWxzZQotKwkgICAgaGlnaCA9IGY3N19nZXRf dXBwZXJib3VuZCAoZGltX3R5cGUpOwotKwkgIGlmICgocmFuZ2VfZmxhZyAmIFJBTkdFX0hBU19T VFJJREUpID09IFJBTkdFX0hBU19TVFJJREUpCi0rCSAgICBzdHJpZGUgPSB2YWx1ZV9hc19sb25n IChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSsJICBlbHNl Ci0rCSAgICBzdHJpZGUgPSAxOwotKwotKwkgIGlmIChzdHJpZGUgPT0gMCkKLSsJICAgIGVycm9y IChfKCJzdHJpZGUgbXVzdCBub3QgYmUgMCIpKTsKLSsKLSsJICAvKiBHZXQgaW5mb3JtYXRpb24g YWJvdXQgdGhpcyBkaW1lbnNpb24gaW4gdGhlIG9yaWdpbmFsIEFSUkFZLiAgKi8KLSsJICBzdHJ1 Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChkaW1fdHlwZSk7Ci0rCSAg c3RydWN0IHR5cGUgKmluZGV4X3R5cGUgPSBkaW1fdHlwZS0+aW5kZXhfdHlwZSAoKTsKLSsJICBM T05HRVNUIGxiID0gZjc3X2dldF9sb3dlcmJvdW5kIChkaW1fdHlwZSk7Ci0rCSAgTE9OR0VTVCB1 YiA9IGY3N19nZXRfdXBwZXJib3VuZCAoZGltX3R5cGUpOwotKwkgIExPTkdFU1Qgc2QgPSBpbmRl eF90eXBlLT5iaXRfc3RyaWRlICgpOwotKwkgIGlmIChzZCA9PSAwKQotKwkgICAgc2QgPSBUWVBF X0xFTkdUSCAodGFyZ2V0X3R5cGUpICogODsKLSsKLSsJICBpZiAoZm9ydHJhbl9hcnJheV9zbGlj aW5nX2RlYnVnKQotKwkgICAgewotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8LT4gUmFuZ2UgYWNj ZXNzXG4iKTsKLSsJICAgICAgc3RkOjpzdHJpbmcgc3RyID0gdHlwZV90b19zdHJpbmcgKGRpbV90 eXBlKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBUeXBlOiAlc1xuIiwgc3RyLmNf c3RyICgpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwtPiBBcnJheTpcbiIpOwotKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVsZFxuIiwgbGIpOwot KwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5kOiAlbGRcbiIsIHVi KTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQml0IHN0cmlkZTogJWxkXG4i LCBzZCk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJ5dGUgc3RyaWRlOiAl bGRcbiIsIHNkIC8gOCk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IFR5cGUg c2l6ZTogJWxkXG4iLAotKwkJCSAgICBUWVBFX0xFTkdUSCAoZGltX3R5cGUpKTsKLSsJICAgICAg ZGVidWdfcHJpbnRmICgifCAgIHwgICAnLT4gVGFyZ2V0IHR5cGUgc2l6ZTogJWxkXG4iLAotKwkJ CSAgICBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgi fCAgIHwtPiBBY2Nlc3Npbmc6XG4iKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8 LT4gTG93IGJvdW5kOiAlbGRcbiIsCi0rCQkJICAgIGxvdyk7Ci0rCSAgICAgIGRlYnVnX3ByaW50 ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6ICVsZFxuIiwKLSsJCQkgICAgaGlnaCk7Ci0rCSAg ICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgJy0+IEVsZW1lbnQgc3RyaWRlOiAlbGRcbiIsCi0r CQkJICAgIHN0cmlkZSk7Ci0rCSAgICB9Ci0rCi0rCSAgLyogQ2hlY2sgdGhlIHVzZXIgaGFzbid0 IGFza2VkIGZvciBzb21ldGhpbmcgaW52YWxpZC4gICovCi0rCSAgaWYgKGhpZ2ggPiB1YiB8fCBs b3cgPCBsYikKLSsJICAgIGVycm9yIChfKCJhcnJheSBzdWJzY3JpcHQgb3V0IG9mIGJvdW5kcyIp KTsKLSsKLSsJICAvKiBDYWxjdWxhdGUgd2hhdCB0aGlzIGRpbWVuc2lvbiBvZiB0aGUgbmV3IHNs aWNlIGFycmF5IHdpbGwgbG9vawotKwkgICAgIGxpa2UuICBPRkZTRVQgaXMgdGhlIGJ5dGUgb2Zm c2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQotKwkgICAgIHByZXZpb3VzIChtb3JlIG91dGVyKSBk aW1lbnNpb24gdG8gdGhlIHN0YXJ0IG9mIHRoaXMKLSsJICAgICBkaW1lbnNpb24uICBFX0NPVU5U IGlzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhpcwotKwkgICAgIGRpbWVuc2lvbi4gIFJF TUFJTkRFUiBpcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHJlbWFpbmluZwotKwkgICAgIGJldHdl ZW4gdGhlIGxhc3QgaW5jbHVkZWQgZWxlbWVudCBhbmQgdGhlIHVwcGVyIGJvdW5kLiAgRm9yCi0r CSAgICAgZXhhbXBsZSBhbiBhY2Nlc3MgJzE6NjoyJyB3aWxsIGluY2x1ZGUgZWxlbWVudHMgMSwg MywgNSBhbmQKLSsJICAgICBoYXZlIGEgcmVtYWluZGVyIG9mIDEgKGVsZW1lbnQgIzYpLiAgKi8K LSsJICBMT05HRVNUIGxvd2VzdCA9IHN0ZDo6bWluIChsb3csIGhpZ2gpOwotKwkgIExPTkdFU1Qg b2Zmc2V0ID0gKHNkIC8gOCkgKiAobG93ZXN0IC0gbGIpOwotKwkgIExPTkdFU1QgZV9jb3VudCA9 IHN0ZDo6YWJzIChoaWdoIC0gbG93KSArIDE7Ci0rCSAgZV9jb3VudCA9IChlX2NvdW50ICsgKHN0 ZDo6YWJzIChzdHJpZGUpIC0gMSkpIC8gc3RkOjphYnMgKHN0cmlkZSk7Ci0rCSAgTE9OR0VTVCBu ZXdfbG93ID0gMTsKLSsJICBMT05HRVNUIG5ld19oaWdoID0gbmV3X2xvdyArIGVfY291bnQgLSAx OwotKwkgIExPTkdFU1QgbmV3X3N0cmlkZSA9IChzZCAqIHN0cmlkZSkgLyA4OwotKwkgIExPTkdF U1QgbGFzdF9lbGVtID0gbG93ICsgKChlX2NvdW50IC0gMSkgKiBzdHJpZGUpOwotKwkgIExPTkdF U1QgcmVtYWluZGVyID0gaGlnaCAtIGxhc3RfZWxlbTsKLSsJICBpZiAobG93ID4gaGlnaCkKLSsJ ICAgIHsKLSsJICAgICAgb2Zmc2V0ICs9IHN0ZDo6YWJzIChyZW1haW5kZXIpICogVFlQRV9MRU5H VEggKHRhcmdldF90eXBlKTsKLSsJICAgICAgaWYgKHN0cmlkZSA+IDApCi0rCQllcnJvciAoXygi aW5jb3JyZWN0IHN0cmlkZSBhbmQgYm91bmRhcnkgY29tYmluYXRpb24iKSk7Ci0rCSAgICB9Ci0r CSAgZWxzZSBpZiAoc3RyaWRlIDwgMCkKLSsJICAgIGVycm9yIChfKCJpbmNvcnJlY3Qgc3RyaWRl IGFuZCBib3VuZGFyeSBjb21iaW5hdGlvbiIpKTsKLSsKLSsJICAvKiBJcyB0aGUgZGF0YSB3aXRo aW4gdGhpcyBkaW1lbnNpb24gY29udGlndW91cz8gIEl0IGlzIGlmIHRoZQotKwkgICAgIG5ld2x5 IGNvbXB1dGVkIHN0cmlkZSBpcyB0aGUgc2FtZSBzaXplIGFzIGEgc2luZ2xlIGVsZW1lbnQgb2YK LSsJICAgICB0aGlzIGRpbWVuc2lvbi4gICovCi0rCSAgYm9vbCBpc19kaW1fY29udGlndW91cyA9 IChuZXdfc3RyaWRlID09IHNsaWNlX2VsZW1lbnRfc2l6ZSk7Ci0rCSAgaXNfYWxsX2NvbnRpZ3Vv dXMgJj0gaXNfZGltX2NvbnRpZ3VvdXM7Ci0rCi0rCSAgaWYgKGZvcnRyYW5fYXJyYXlfc2xpY2lu Z19kZWJ1ZykKLSsJICAgIHsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICctPiBSZXN1bHRz OlxuIik7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IE9mZnNldCA9ICVsZFxu Iiwgb2Zmc2V0KTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gRWxlbWVudHMg PSAlbGRcbiIsIGVfY291bnQpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBM b3cgYm91bmQgPSAlbGRcbiIsIG5ld19sb3cpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAg ICAgIHwtPiBIaWdoIGJvdW5kID0gJWxkXG4iLCBuZXdfaGlnaCk7Ci0rCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICAgICAgfC0+IEJ5dGUgc3RyaWRlID0gJWxkXG4iLCBuZXdfc3RyaWRlKTsKLSsJ ICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gTGFzdCBlbGVtZW50ID0gJWxkXG4iLCBs YXN0X2VsZW0pOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBSZW1haW5kZXIg PSAlbGRcbiIsIHJlbWFpbmRlcik7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgJy0+ IENvbnRpZ3VvdXMgPSAlc1xuIiwKLSsJCQkgICAgKGlzX2RpbV9jb250aWd1b3VzID8gIlllcyIg OiAiTm8iKSk7Ci0rCSAgICB9Ci0rCi0rCSAgLyogRmlndXJlIG91dCBob3cgYmlnIChpbiBieXRl cykgYW4gZWxlbWVudCBvZiB0aGlzIGRpbWVuc2lvbiBvZgotKwkgICAgIHRoZSBuZXcgYXJyYXkg c2xpY2Ugd2lsbCBiZS4gICovCi0rCSAgc2xpY2VfZWxlbWVudF9zaXplID0gc3RkOjphYnMgKG5l d19zdHJpZGUgKiBlX2NvdW50KTsKLSsKLSsJICBzbGljZV9kaW1zLmVtcGxhY2VfYmFjayAobmV3 X2xvdywgbmV3X2hpZ2gsIG5ld19zdHJpZGUsCi0rCQkJCSAgIGluZGV4X3R5cGUpOwotKwotKwkg IC8qIFVwZGF0ZSB0aGUgdG90YWwgb2Zmc2V0LiAgKi8KLSsJICB0b3RhbF9vZmZzZXQgKz0gb2Zm c2V0OwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogVGhlcmUgaXMgYSBzaW5nbGUgaW5k ZXggZm9yIHRoaXMgZGltZW5zaW9uLiAgKi8KLSsJICBMT05HRVNUIGluZGV4Ci0rCSAgICA9IHZh bHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9z aWRlKSk7Ci0rCi0rCSAgLyogR2V0IGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZGltZW5zaW9uIGlu IHRoZSBvcmlnaW5hbCBBUlJBWS4gICovCi0rCSAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlID0g VFlQRV9UQVJHRVRfVFlQRSAoZGltX3R5cGUpOwotKwkgIHN0cnVjdCB0eXBlICppbmRleF90eXBl ID0gZGltX3R5cGUtPmluZGV4X3R5cGUgKCk7Ci0rCSAgTE9OR0VTVCBsYiA9IGY3N19nZXRfbG93 ZXJib3VuZCAoZGltX3R5cGUpOwotKwkgIExPTkdFU1QgdWIgPSBmNzdfZ2V0X3VwcGVyYm91bmQg KGRpbV90eXBlKTsKLSsJICBMT05HRVNUIHNkID0gaW5kZXhfdHlwZS0+Yml0X3N0cmlkZSAoKSAv IDg7Ci0rCSAgaWYgKHNkID09IDApCi0rCSAgICBzZCA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlw ZSk7Ci0rCi0rCSAgaWYgKGZvcnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZykKLSsJICAgIHsKLSsJ ICAgICAgZGVidWdfcHJpbnRmICgifC0+IEluZGV4IGFjY2Vzc1xuIik7Ci0rCSAgICAgIHN0ZDo6 c3RyaW5nIHN0ciA9IHR5cGVfdG9fc3RyaW5nIChkaW1fdHlwZSk7Ci0rCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICB8LT4gVHlwZTogJXNcbiIsIHN0ci5jX3N0ciAoKSk7Ci0rCSAgICAgIGRlYnVn X3ByaW50ZiAoInwgICB8LT4gQXJyYXk6XG4iKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAg IHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIsIGxiKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgi fCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxkXG4iLCB1Yik7Ci0rCSAgICAgIGRlYnVnX3ByaW50 ZiAoInwgICB8ICAgfC0+IEJ5dGUgc3RyaWRlOiAlbGRcbiIsIHNkKTsKLSsJICAgICAgZGVidWdf cHJpbnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlbGRcbiIsIFRZUEVfTEVOR1RIIChkaW1f dHlwZSkpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICctPiBUYXJnZXQgdHlwZSBz aXplOiAlbGRcbiIsCi0rCQkJICAgIFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSkpOwotKwkgICAg ICBkZWJ1Z19wcmludGYgKCJ8ICAgJy0+IEFjY2Vzc2luZzpcbiIpOwotKwkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgICAgICctPiBJbmRleDogJWxkXG4iLCBpbmRleCk7Ci0rCSAgICB9Ci0rCi0r CSAgLyogSWYgdGhlIGFycmF5IGhhcyBhY3R1YWwgY29udGVudCB0aGVuIGNoZWNrIHRoZSBpbmRl eCBpcyBpbgotKwkgICAgIGJvdW5kcy4gIEFuIGFycmF5IHdpdGhvdXQgY29udGVudCAoYW4gdW5i b3VuZCBhcnJheSkgZG9lc24ndAotKwkgICAgIGhhdmUgYSBrbm93biB1cHBlciBib3VuZCwgc28g ZG9uJ3QgZXJyb3IgY2hlY2sgaW4gdGhhdAotKwkgICAgIHNpdHVhdGlvbi4gICovCi0rCSAgaWYg KGluZGV4IDwgbGIKLSsJICAgICAgfHwgKGRpbV90eXBlLT5pbmRleF90eXBlICgpLT5ib3VuZHMg KCktPmhpZ2gua2luZCAoKSAhPSBQUk9QX1VOREVGSU5FRAotKwkJICAmJiBpbmRleCA+IHViKQot KwkgICAgICB8fCAoVkFMVUVfTFZBTCAoYXJyYXkpICE9IGx2YWxfbWVtb3J5Ci0rCQkgICYmIGRp bV90eXBlLT5pbmRleF90eXBlICgpLT5ib3VuZHMgKCktPmhpZ2gua2luZCAoKSA9PSBQUk9QX1VO REVGSU5FRCkpCi0rCSAgICB7Ci0rCSAgICAgIGlmICh0eXBlX25vdF9hc3NvY2lhdGVkIChkaW1f dHlwZSkpCi0rCQllcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAodmVjdG9yIG5vdCBh c3NvY2lhdGVkKSIpKTsKLSsJICAgICAgZWxzZSBpZiAodHlwZV9ub3RfYWxsb2NhdGVkIChkaW1f dHlwZSkpCi0rCQllcnJvciAoXygibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCAodmVjdG9yIG5vdCBh bGxvY2F0ZWQpIikpOwotKwkgICAgICBlbHNlCi0rCQllcnJvciAoXygibm8gc3VjaCB2ZWN0b3Ig ZWxlbWVudCIpKTsKLSsJICAgIH0KLSAKLS0gIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rCSAg LyogQ2FsY3VsYXRlIHVzaW5nIHRoZSB0eXBlIHN0cmlkZSwgbm90IHRoZSB0YXJnZXQgdHlwZSBz aXplLiAgKi8KLSsJICBMT05HRVNUIG9mZnNldCA9IHNkICogKGluZGV4IC0gbGIpOwotKwkgIHRv dGFsX29mZnNldCArPSBvZmZzZXQ7Ci0rCX0KLSsgICAgfQotIAotLSAgLyogTm93IHRoYXQgd2Ug a25vdyB3ZSBoYXZlIGEgbGVnYWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb24gbGV0IHVzCi0t ICAgICBhY3R1YWxseSBmaW5kIG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhpc3RzIGluIHRoZSBh cnJheS4gICovCi0rICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLSsgICAgcmV0dXJuIGFycmF5 OwotIAotLSAgLyogVGFrZSBhcnJheSBpbmRpY2VzIGxlZnQgdG8gcmlnaHQuICAqLwotLSAgZm9y IChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSsrKQotKyAgLyogQnVpbGQgYSB0eXBlIHRoYXQgcmVw cmVzZW50cyB0aGUgbmV3IGFycmF5IHNsaWNlIGluIHRoZSB0YXJnZXQgbWVtb3J5Ci0rICAgICBv ZiB0aGUgb3JpZ2luYWwgQVJSQVksIHRoaXMgdHlwZSBtYWtlcyB1c2Ugb2Ygc3RyaWRlcyB0byBj b3JyZWN0bHkKLSsgICAgIGZpbmQgb25seSB0aG9zZSBlbGVtZW50cyB0aGF0IGFyZSBwYXJ0IG9m IHRoZSBuZXcgc2xpY2UuICAqLwotKyAgc3RydWN0IHR5cGUgKmFycmF5X3NsaWNlX3R5cGUgPSBp bm5lcl9lbGVtZW50X3R5cGU7Ci0rICBmb3IgKGNvbnN0IGF1dG8gJmQgOiBzbGljZV9kaW1zKQot ICAgICB7Ci0tICAgICAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3JpcHQ7IGl0IG11c3QgYmUgYSBs ZWdhbCBpbnRlZ2VyIGluIEY3Ny4gICovCi0tICAgICAgdmFsdWUgKmFyZzIgPSBldmFsdWF0ZV9z dWJleHBfd2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAgLyogQ3JlYXRl IHRoZSByYW5nZS4gICovCi0rICAgICAgZHluYW1pY19wcm9wIHBfbG93LCBwX2hpZ2gsIHBfc3Ry aWRlOwotKwotKyAgICAgIHBfbG93LnNldF9jb25zdF92YWwgKGQubG93KTsKLSsgICAgICBwX2hp Z2guc2V0X2NvbnN0X3ZhbCAoZC5oaWdoKTsKLSsgICAgICBwX3N0cmlkZS5zZXRfY29uc3RfdmFs IChkLnN0cmlkZSk7Ci0rCi0rICAgICAgc3RydWN0IHR5cGUgKm5ld19yYW5nZQotKwk9IGNyZWF0 ZV9yYW5nZV90eXBlX3dpdGhfc3RyaWRlICgoc3RydWN0IHR5cGUgKikgTlVMTCwKLSsJCQkJCSBU WVBFX1RBUkdFVF9UWVBFIChkLmluZGV4KSwKLSsJCQkJCSAmcF9sb3csICZwX2hpZ2gsIDAsICZw X3N0cmlkZSwKLSsJCQkJCSB0cnVlKTsKLSsgICAgICBhcnJheV9zbGljZV90eXBlCi0rCT0gY3Jl YXRlX2FycmF5X3R5cGUgKG51bGxwdHIsIGFycmF5X3NsaWNlX3R5cGUsIG5ld19yYW5nZSk7Ci0r ICAgIH0KLSAKLS0gICAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3JpcHQgYXJyYXkuICAqLwotLSAg ICAgIHN1YnNjcmlwdF9hcnJheVtpXSA9IHZhbHVlX2FzX2xvbmcgKGFyZzIpOwotKyAgaWYgKGZv cnRyYW5fYXJyYXlfc2xpY2luZ19kZWJ1ZykKLSsgICAgewotKyAgICAgIGRlYnVnX3ByaW50ZiAo IictPiBGaW5hbCByZXN1bHQ6XG4iKTsKLSsgICAgICBkZWJ1Z19wcmludGYgKCIgICAgfC0+IFR5 cGU6ICVzXG4iLAotKwkJICAgIHR5cGVfdG9fc3RyaW5nIChhcnJheV9zbGljZV90eXBlKS5jX3N0 ciAoKSk7Ci0rICAgICAgZGVidWdfcHJpbnRmICgiICAgIHwtPiBUb3RhbCBvZmZzZXQ6ICVsZFxu IiwgdG90YWxfb2Zmc2V0KTsKLSsgICAgICBkZWJ1Z19wcmludGYgKCIgICAgfC0+IEJhc2UgYWRk cmVzczogJXNcbiIsCi0rCQkgICAgY29yZV9hZGRyX3RvX3N0cmluZyAodmFsdWVfYWRkcmVzcyAo YXJyYXkpKSk7Ci0rICAgICAgZGVidWdfcHJpbnRmICgiICAgICctPiBDb250aWd1b3VzID0gJXNc biIsCi0rCQkgICAgKGlzX2FsbF9jb250aWd1b3VzID8gIlllcyIgOiAiTm8iKSk7Ci0gICAgIH0K LSAKLS0gIC8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVm dC4gICovCi0tICBmb3IgKGludCBpID0gbmFyZ3M7IGkgPiAwOyBpLS0pCi0rICAvKiBTaG91bGQg d2UgcmVwYWNrIHRoaXMgYXJyYXkgc2xpY2U/ICAqLwotKyAgaWYgKCFpc19hbGxfY29udGlndW91 cyAmJiAocmVwYWNrX2FycmF5X3NsaWNlcyB8fCBpc19zdHJpbmdfcCkpCi0gICAgIHsKLS0gICAg ICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy cmF5KSk7Ci0tICAgICAgTE9OR0VTVCBpbmRleCA9IHN1YnNjcmlwdF9hcnJheVtpIC0gMV07Ci0r ICAgICAgLyogQnVpbGQgYSB0eXBlIGZvciB0aGUgcmVwYWNrZWQgc2xpY2UuICAqLwotKyAgICAg IHN0cnVjdCB0eXBlICpyZXBhY2tlZF9hcnJheV90eXBlID0gaW5uZXJfZWxlbWVudF90eXBlOwot KyAgICAgIGZvciAoY29uc3QgYXV0byAmZCA6IHNsaWNlX2RpbXMpCi0rCXsKLSsJICAvKiBDcmVh dGUgdGhlIHJhbmdlLiAgKi8KLSsJICBkeW5hbWljX3Byb3AgcF9sb3csIHBfaGlnaCwgcF9zdHJp ZGU7Ci0rCi0rCSAgcF9sb3cuc2V0X2NvbnN0X3ZhbCAoZC5sb3cpOwotKwkgIHBfaGlnaC5zZXRf Y29uc3RfdmFsIChkLmhpZ2gpOwotKwkgIHBfc3RyaWRlLnNldF9jb25zdF92YWwgKFRZUEVfTEVO R1RIIChyZXBhY2tlZF9hcnJheV90eXBlKSk7Ci0rCi0rCSAgc3RydWN0IHR5cGUgKm5ld19yYW5n ZQotKwkgICAgPSBjcmVhdGVfcmFuZ2VfdHlwZV93aXRoX3N0cmlkZSAoKHN0cnVjdCB0eXBlICop IE5VTEwsCi0rCQkJCQkgICAgIFRZUEVfVEFSR0VUX1RZUEUgKGQuaW5kZXgpLAotKwkJCQkJICAg ICAmcF9sb3csICZwX2hpZ2gsIDAsICZwX3N0cmlkZSwKLSsJCQkJCSAgICAgdHJ1ZSk7Ci0rCSAg cmVwYWNrZWRfYXJyYXlfdHlwZQotKwkgICAgPSBjcmVhdGVfYXJyYXlfdHlwZSAobnVsbHB0ciwg cmVwYWNrZWRfYXJyYXlfdHlwZSwgbmV3X3JhbmdlKTsKLSsJfQotIAotLSAgICAgIGFycmF5ID0g dmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJheSwgaW5kZXgsCi0tCQkJCQlmNzdfZ2V0X2xv d2VyYm91bmQgKGFycmF5X3R5cGUpKTsKLSsgICAgICAvKiBOb3cgY29weSB0aGUgZWxlbWVudHMg ZnJvbSB0aGUgb3JpZ2luYWwgQVJSQVkgaW50byB0aGUgcGFja2VkCi0rCSBhcnJheSB2YWx1ZSBE RVNULiAgKi8KLSsgICAgICBzdHJ1Y3QgdmFsdWUgKmRlc3QgPSBhbGxvY2F0ZV92YWx1ZSAocmVw YWNrZWRfYXJyYXlfdHlwZSk7Ci0rICAgICAgaWYgKHZhbHVlX2xhenkgKGFycmF5KQotKwkgIHx8 ICh0b3RhbF9vZmZzZXQgKyBUWVBFX0xFTkdUSCAoYXJyYXlfc2xpY2VfdHlwZSkKLSsJICAgICAg PiBUWVBFX0xFTkdUSCAoY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKSkpKQotKwl7 Ci0rCSAgZm9ydHJhbl9hcnJheV93YWxrZXI8Zm9ydHJhbl9sYXp5X2FycmF5X3JlcGFja2VyX2lt cGw+IHAKLSsJICAgIChhcnJheV9zbGljZV90eXBlLCB2YWx1ZV9hZGRyZXNzIChhcnJheSkgKyB0 b3RhbF9vZmZzZXQsIGRlc3QpOwotKwkgIHAud2FsayAoKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJ ewotKwkgIGZvcnRyYW5fYXJyYXlfd2Fsa2VyPGZvcnRyYW5fYXJyYXlfcmVwYWNrZXJfaW1wbD4g cAotKwkgICAgKGFycmF5X3NsaWNlX3R5cGUsIHZhbHVlX2FkZHJlc3MgKGFycmF5KSArIHRvdGFs X29mZnNldCwKLSsJICAgICB0b3RhbF9vZmZzZXQsIGFycmF5LCBkZXN0KTsKLSsJICBwLndhbGsg KCk7Ci0rCX0KLSsgICAgICBhcnJheSA9IGRlc3Q7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewot KyAgICAgIGlmIChWQUxVRV9MVkFMIChhcnJheSkgPT0gbHZhbF9tZW1vcnkpCi0rCXsKLSsJICAv KiBJZiB0aGUgdmFsdWUgd2UncmUgdGFraW5nIGEgc2xpY2UgZnJvbSBpcyBub3QgeWV0IGxvYWRl ZCwgb3IKLSsJICAgICB0aGUgcmVxdWVzdGVkIHNsaWNlIGlzIG91dHNpZGUgdGhlIHZhbHVlcyBj b250ZW50IHJhbmdlIHRoZW4KLSsJICAgICBqdXN0IGNyZWF0ZSBhIG5ldyBsYXp5IHZhbHVlIHBv aW50aW5nIGF0IHRoZSBtZW1vcnkgd2hlcmUgdGhlCi0rCSAgICAgY29udGVudHMgd2UncmUgbG9v a2luZyBmb3IgZXhpc3QuICAqLwotKwkgIGlmICh2YWx1ZV9sYXp5IChhcnJheSkKLSsJICAgICAg fHwgKHRvdGFsX29mZnNldCArIFRZUEVfTEVOR1RIIChhcnJheV9zbGljZV90eXBlKQotKwkJICA+ IFRZUEVfTEVOR1RIIChjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpKSkpCi0rCSAg ICBhcnJheSA9IHZhbHVlX2F0X2xhenkgKGFycmF5X3NsaWNlX3R5cGUsCi0rCQkJCSAgIHZhbHVl X2FkZHJlc3MgKGFycmF5KSArIHRvdGFsX29mZnNldCk7Ci0rCSAgZWxzZQotKwkgICAgYXJyYXkg PSB2YWx1ZV9mcm9tX2NvbnRlbnRzX2FuZF9hZGRyZXNzIChhcnJheV9zbGljZV90eXBlLAotKwkJ CQkJCSAgICAgKHZhbHVlX2NvbnRlbnRzIChhcnJheSkKLSsJCQkJCQkgICAgICArIHRvdGFsX29m ZnNldCksCi0rCQkJCQkJICAgICAodmFsdWVfYWRkcmVzcyAoYXJyYXkpCi0rCQkJCQkJICAgICAg KyB0b3RhbF9vZmZzZXQpKTsKLSsJfQotKyAgICAgIGVsc2UgaWYgKCF2YWx1ZV9sYXp5IChhcnJh eSkpCi0rCXsKLSsJICBjb25zdCB2b2lkICp2YWxhZGRyID0gdmFsdWVfY29udGVudHMgKGFycmF5 KSArIHRvdGFsX29mZnNldDsKLSsJICBhcnJheSA9IGFsbG9jYXRlX3ZhbHVlIChhcnJheV9zbGlj ZV90eXBlKTsKLSsJICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAoYXJyYXkpLCB2YWxhZGRy LCBUWVBFX0xFTkdUSCAoYXJyYXlfc2xpY2VfdHlwZSkpOwotKwl9Ci0rICAgICAgZWxzZQotKwll cnJvciAoXygiY2Fubm90IHN1YnNjcmlwdCBhcnJheXMgdGhhdCBhcmUgbm90IGluIG1lbW9yeSIp KTsKLSAgICAgfQotIAotICAgcmV0dXJuIGFycmF5OwotQEAgLTEwMzEsMTEgKzE0ODksNTAgQEAg YnVpbHRpbl9mX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotICAgcmV0dXJuIChjb25z dCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUgKikgZ2RiYXJjaF9kYXRhIChnZGJhcmNoLCBmX3R5cGVf ZGF0YSk7Ci0gfQotIAotKy8qIENvbW1hbmQtbGlzdCBmb3IgdGhlICJzZXQvc2hvdyBmb3J0cmFu IiBwcmVmaXggY29tbWFuZC4gICovCi0rc3RhdGljIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpz ZXRfZm9ydHJhbl9saXN0OwotK3N0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2hvd19m b3J0cmFuX2xpc3Q7Ci0rCi0gdm9pZCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICgpOwotIHZvaWQK LSBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICgpCi0gewotICAgZl90eXBlX2RhdGEgPSBnZGJhcmNo X2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChidWlsZF9mb3J0cmFuX3R5cGVzKTsKLSsKLSsgIGFk ZF9iYXNpY19wcmVmaXhfY21kICgiZm9ydHJhbiIsIG5vX2NsYXNzLAotKwkJCV8oIlByZWZpeCBj b21tYW5kIGZvciBjaGFuZ2luZyBGb3J0cmFuLXNwZWNpZmljIHNldHRpbmdzLiIpLAotKwkJCSZz ZXRfZm9ydHJhbl9saXN0LCAic2V0IGZvcnRyYW4gIiwgMCwgJnNldGxpc3QpOwotKwotKyAgYWRk X3Nob3dfcHJlZml4X2NtZCAoImZvcnRyYW4iLCBub19jbGFzcywKLSsJCSAgICAgICBfKCJHZW5l cmljIGNvbW1hbmQgZm9yIHNob3dpbmcgRm9ydHJhbi1zcGVjaWZpYyBzZXR0aW5ncy4iKSwKLSsJ CSAgICAgICAmc2hvd19mb3J0cmFuX2xpc3QsICJzaG93IGZvcnRyYW4gIiwgMCwgJnNob3dsaXN0 KTsKLSsKLSsgIGFkZF9zZXRzaG93X2Jvb2xlYW5fY21kICgicmVwYWNrLWFycmF5LXNsaWNlcyIs IGNsYXNzX3ZhcnMsCi0rCQkJICAgJnJlcGFja19hcnJheV9zbGljZXMsIF8oIlwKLStFbmFibGUg b3IgZGlzYWJsZSByZXBhY2tpbmcgb2Ygbm9uLWNvbnRpZ3VvdXMgYXJyYXkgc2xpY2VzLiIpLCBf KCJcCi0rU2hvdyB3aGV0aGVyIG5vbi1jb250aWd1b3VzIGFycmF5IHNsaWNlcyBhcmUgcmVwYWNr ZWQuIiksIF8oIlwKLStXaGVuIHRoZSB1c2VyIHJlcXVlc3RzIGEgc2xpY2Ugb2YgYSBGb3J0cmFu IGFycmF5IHRoZW4gd2UgY2FuIGVpdGhlciByZXR1cm5cblwKLSthIGRlc2NyaXB0b3IgdGhhdCBk ZXNjcmliZXMgdGhlIGFycmF5IGluIHBsYWNlICh1c2luZyB0aGUgb3JpZ2luYWwgYXJyYXkgZGF0 YVxuXAotK2luIGl0cyBleGlzdGluZyBsb2NhdGlvbikgb3IgdGhlIG9yaWdpbmFsIGRhdGEgY2Fu IGJlIHJlcGFja2VkIChjb3BpZWQpIHRvIGFcblwKLStuZXcgbG9jYXRpb24uXG5cCi0rXG5cCi0r V2hlbiB0aGUgY29udGVudCBvZiB0aGUgYXJyYXkgc2xpY2UgaXMgY29udGlndW91cyB3aXRoaW4g dGhlIG9yaWdpbmFsIGFycmF5XG5cCi0rdGhlbiB0aGUgcmVzdWx0IHdpbGwgbmV2ZXIgYmUgcmVw YWNrZWQsIGJ1dCB3aGVuIHRoZSBkYXRhIGZvciB0aGUgbmV3IGFycmF5XG5cCi0raXMgbm9uLWNv bnRpZ3VvdXMgd2l0aGluIHRoZSBvcmlnaW5hbCBhcnJheSByZXBhY2tpbmcgd2lsbCBvbmx5IGJl IHBlcmZvcm1lZFxuXAotK3doZW4gdGhpcyBzZXR0aW5nIGlzIG9uLiIpLAotKwkJCSAgIE5VTEws Ci0rCQkJICAgc2hvd19yZXBhY2tfYXJyYXlfc2xpY2VzLAotKwkJCSAgICZzZXRfZm9ydHJhbl9s aXN0LCAmc2hvd19mb3J0cmFuX2xpc3QpOwotKwotKyAgLyogRGVidWcgRm9ydHJhbidzIGFycmF5 IHNsaWNpbmcgbG9naWMuICAqLwotKyAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJmb3J0cmFu LWFycmF5LXNsaWNpbmciLCBjbGFzc19tYWludGVuYW5jZSwKLSsJCQkgICAmZm9ydHJhbl9hcnJh eV9zbGljaW5nX2RlYnVnLCBfKCJcCi0rU2V0IGRlYnVnZ2luZyBvZiBGb3J0cmFuIGFycmF5IHNs aWNpbmcuIiksIF8oIlwKLStTaG93IGRlYnVnZ2luZyBvZiBGb3J0cmFuIGFycmF5IHNsaWNpbmcu IiksIF8oIlwKLStXaGVuIG9uLCBkZWJ1Z2dpbmcgb2YgRm9ydHJhbiBhcnJheSBzbGljaW5nIGlz IGVuYWJsZWQuIiksCi0rCQkJICAgIE5VTEwsCi0rCQkJICAgIHNob3dfZm9ydHJhbl9hcnJheV9z bGljaW5nX2RlYnVnLAotKwkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0g fQotIAotIC8qIFNlZSBmLWxhbmcuaC4gICovCi1AQCAtMTA3NCwzICsxNTcxLDU2IEBAIGZvcnRy YW5fcHJlc2VydmVfYXJnX3BvaW50ZXIgKHN0cnVjdCB2YWx1ZSAqYXJnLCBzdHJ1Y3QgdHlwZSAq dHlwZSkKLSAgICAgcmV0dXJuIHZhbHVlX3R5cGUgKGFyZyk7Ci0gICByZXR1cm4gdHlwZTsKLSB9 Ci0rCi0rLyogU2VlIGYtbGFuZy5oLiAgKi8KLSsKLStDT1JFX0FERFIKLStmb3J0cmFuX2FkanVz dF9keW5hbWljX2FycmF5X2Jhc2VfYWRkcmVzc19oYWNrIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJ CQkJCQlDT1JFX0FERFIgYWRkcmVzcykKLSt7Ci0rICBnZGJfYXNzZXJ0ICh0eXBlLT5jb2RlICgp ID09IFRZUEVfQ09ERV9BUlJBWSk7Ci0rCi0rICBpbnQgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3N19h cnJheV9kaW1zICh0eXBlKTsKLSsgIExPTkdFU1QgdG90YWxfb2Zmc2V0ID0gMDsKLSsKLSsgIC8q IFdhbGsgdGhyb3VnaCBlYWNoIG9mIHRoZSBkaW1lbnNpb25zIG9mIHRoaXMgYXJyYXkgdHlwZSBh bmQgZmlndXJlIG91dAotKyAgICAgaWYgYW55IG9mIHRoZSBkaW1lbnNpb25zIGFyZSAiYmFja3dh cmRzIiwgdGhhdCBpcyB0aGUgYmFzZSBhZGRyZXNzCi0rICAgICBmb3IgdGhpcyBkaW1lbnNpb24g cG9pbnRzIHRvIHRoZSBlbGVtZW50IGF0IHRoZSBoaWdoZXN0IG1lbW9yeQotKyAgICAgYWRkcmVz cyBhbmQgdGhlIHN0cmlkZSBpcyBuZWdhdGl2ZS4gICovCi0rICBzdHJ1Y3QgdHlwZSAqdG1wX3R5 cGUgPSB0eXBlOwotKyAgZm9yIChpbnQgaSA9IDAgOyBpIDwgbmRpbWVuc2lvbnM7ICsraSkKLSsg ICAgewotKyAgICAgIC8qIEdyYWIgdGhlIHJhbmdlIGZvciB0aGlzIGRpbWVuc2lvbiBhbmQgZXh0 cmFjdCB0aGUgbG93ZXIgYW5kIHVwcGVyCi0rCSBib3VuZHMuICAqLwotKyAgICAgIHRtcF90eXBl ID0gY2hlY2tfdHlwZWRlZiAodG1wX3R5cGUpOwotKyAgICAgIHN0cnVjdCB0eXBlICpyYW5nZV90 eXBlID0gdG1wX3R5cGUtPmluZGV4X3R5cGUgKCk7Ci0rICAgICAgTE9OR0VTVCBsb3dlcmJvdW5k LCB1cHBlcmJvdW5kLCBzdHJpZGU7Ci0rICAgICAgaWYgKCFnZXRfZGlzY3JldGVfYm91bmRzIChy YW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpKQotKwllcnJvciAoImZhaWxlZCB0 byBnZXQgcmFuZ2UgYm91bmRzIik7Ci0rCi0rICAgICAgLyogRmlndXJlIG91dCB0aGUgc3RyaWRl IGZvciB0aGlzIGRpbWVuc2lvbi4gICovCi0rICAgICAgc3RydWN0IHR5cGUgKmVsdF90eXBlID0g Y2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKLSsgICAgICBzdHJp ZGUgPSB0bXBfdHlwZS0+aW5kZXhfdHlwZSAoKS0+Ym91bmRzICgpLT5iaXRfc3RyaWRlICgpOwot KyAgICAgIGlmIChzdHJpZGUgPT0gMCkKLSsJc3RyaWRlID0gdHlwZV9sZW5ndGhfdW5pdHMgKGVs dF90eXBlKTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCA9IGdl dF90eXBlX2FyY2ggKGVsdF90eXBlKTsKLSsJICBpbnQgdW5pdF9zaXplID0gZ2RiYXJjaF9hZGRy ZXNzYWJsZV9tZW1vcnlfdW5pdF9zaXplIChhcmNoKTsKLSsJICBzdHJpZGUgLz0gKHVuaXRfc2l6 ZSAqIDgpOwotKwl9Ci0rCi0rICAgICAgLyogSWYgdGhpcyBkaW1lbnNpb24gaXMgImJhY2t3YXJk IiB0aGVuIGZpZ3VyZSBvdXQgdGhlIG9mZnNldAotKwkgYWRqdXN0bWVudCByZXF1aXJlZCB0byBw b2ludCB0byB0aGUgZWxlbWVudCBhdCB0aGUgbG93ZXN0IG1lbW9yeQotKwkgYWRkcmVzcywgYW5k IGFkZCB0aGlzIHRvIHRoZSB0b3RhbCBvZmZzZXQuICAqLwotKyAgICAgIExPTkdFU1Qgb2Zmc2V0 ID0gMDsKLSsgICAgICBpZiAoc3RyaWRlIDwgMCAmJiBsb3dlcmJvdW5kIDwgdXBwZXJib3VuZCkK LSsJb2Zmc2V0ID0gKHVwcGVyYm91bmQgLSBsb3dlcmJvdW5kKSAqIHN0cmlkZTsKLSsgICAgICB0 b3RhbF9vZmZzZXQgKz0gb2Zmc2V0OwotKyAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQ RSAodG1wX3R5cGUpOwotKyAgICB9Ci0rCi0rICAvKiBBZGp1c3QgdGhlIGFkZHJlc3Mgb2YgdGhp cyBvYmplY3QgYW5kIHJldHVybiBpdC4gICovCi0rICBhZGRyZXNzICs9IHRvdGFsX29mZnNldDsK LSsgIHJldHVybiBhZGRyZXNzOwotK30KLWRpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmggYi9nZGIv Zi1sYW5nLmgKLS0tLSBhL2dkYi9mLWxhbmcuaAotKysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtNjQs NyArNjQsNiBAQCBleHRlcm4gdm9pZCBmNzdfZ2V0X2R5bmFtaWNfYXJyYXlfbGVuZ3RoIChzdHJ1 Y3QgdHlwZSAqKTsKLSAKLSBleHRlcm4gaW50IGNhbGNfZjc3X2FycmF5X2RpbXMgKHN0cnVjdCB0 eXBlICopOwotIAotLQotIC8qIEZvcnRyYW4gKEY3NykgdHlwZXMgKi8KLSAKLSBzdHJ1Y3QgYnVp bHRpbl9mX3R5cGUKLUBAIC0xMjIsNCArMTIxLDIyIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKmZv cnRyYW5fYXJndW1lbnRfY29udmVydCAoc3RydWN0IHZhbHVlICp2YWx1ZSwKLSBleHRlcm4gc3Ry dWN0IHR5cGUgKmZvcnRyYW5fcHJlc2VydmVfYXJnX3BvaW50ZXIgKHN0cnVjdCB2YWx1ZSAqYXJn LAotIAkJCQkJCSAgc3RydWN0IHR5cGUgKnR5cGUpOwotIAotKy8qIEZvcnRyYW4gYXJyYXlzIGNh biBoYXZlIGEgbmVnYXRpdmUgc3RyaWRlLiAgV2hlbiB0aGlzIGhhcHBlbnMgaXQgaXMKLSsgICBv ZnRlbiB0aGUgY2FzZSB0aGF0IHRoZSBiYXNlIGFkZHJlc3MgZm9yIGFuIG9iamVjdCBpcyBub3Qg dGhlIGxvd2VzdAotKyAgIGFkZHJlc3Mgb2NjdXBpZWQgYnkgdGhhdCBvYmplY3QuICBGb3IgZXhh bXBsZSwgYW4gYXJyYXkgc2xpY2UgKDEwOjE6LTEpCi0rICAgd2lsbCBiZSBlbmNvZGVkIHdpdGgg bG93ZXIgYm91bmQgMSwgdXBwZXIgYm91bmQgMTAsIGEgc3RyaWRlIG9mCi0rICAgLUVMRU1FTlRf U0laRSwgYW5kIGhhdmUgYSBiYXNlIGFkZHJlc3MgcG9pbnRlciB0aGF0IHBvaW50cyBhdCB0aGUK LSsgICBlbGVtZW50IHdpdGggdGhlIGhpZ2hlc3QgYWRkcmVzcyBpbiBtZW1vcnkuCi0rCi0rICAg VGhpcyByZWFsbHkgZG9lc24ndCBwbGF5IHdlbGwgd2l0aCBvdXIgY3VycmVudCBtb2RlbCBvZiB2 YWx1ZSBjb250ZW50cywKLSsgICBidXQgY291bGQgZWFzaWx5IHJlcXVpcmUgYSBzaWduaWZpY2Fu dCB1cGRhdGUgaW4gb3JkZXIgdG8gYmUgc3VwcG9ydGVkCi0rICAgImNvcnJlY3RseSIuCi0rCi0r ICAgRm9yIG5vdywgd2UgbWFudWFsbHkgZm9yY2UgdGhlIGJhc2UgYWRkcmVzcyB0byBiZSB0aGUg bG93ZXN0IGFkZHJlc3NlZAotKyAgIGVsZW1lbnQgaGVyZS4gIFllcywgdGhpcyB3aWxsIGJyZWFr IHNvbWUgdGhpbmdzLCBidXQgaXQgZml4ZXMgb3RoZXIKLSsgICB0aGluZ3MuICBUaGUgaG9wZSBp cyB0aGF0IGl0IGZpeGVzIG1vcmUgdGhhbiBpdCBicmVha3MuICAqLwotKwotK2V4dGVybiBDT1JF X0FERFIgZm9ydHJhbl9hZGp1c3RfZHluYW1pY19hcnJheV9iYXNlX2FkZHJlc3NfaGFjawotKwko c3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyZXNzKTsKLSsKLSAjZW5kaWYgLyogRl9M QU5HX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvZi12YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQu YwotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysrIGIvZ2RiL2YtdmFscHJpbnQuYwotQEAgLTM1 LDYgKzM1LDcgQEAKLSAjaW5jbHVkZSAiZGljdGlvbmFyeS5oIgotICNpbmNsdWRlICJjbGkvY2xp LXN0eWxlLmgiCi0gI2luY2x1ZGUgImdkYmFyY2guaCIKLSsjaW5jbHVkZSAiZi1hcnJheS13YWxr ZXIuaCIKLSAKLSBzdGF0aWMgdm9pZCBmNzdfZ2V0X2R5bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0 ZSAoc3RydWN0IHR5cGUgKik7Ci0gCi1AQCAtMTAwLDEwMCArMTAxLDEwMyBAQCBmNzdfZ2V0X2R5 bmFtaWNfbGVuZ3RoX29mX2FnZ3JlZ2F0ZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0gICAgICogVFlQ RV9MRU5HVEggKGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSk7Ci0gfQot IAotLS8qIEFjdHVhbCBmdW5jdGlvbiB3aGljaCBwcmludHMgb3V0IEY3NyBhcnJheXMsIFZhbGFk ZHIgPT0gYWRkcmVzcyBpbiAKLS0gICB0aGUgc3VwZXJpb3IuICBBZGRyZXNzID09IHRoZSBhZGRy ZXNzIGluIHRoZSBpbmZlcmlvci4gICovCi0rLyogQSBjbGFzcyB1c2VkIGJ5IEZPUlRSQU5fUFJJ TlRfQVJSQVkgYXMgYSBzcGVjaWFsaXNhdGlvbiBvZiB0aGUgYXJyYXkKLSsgICB3YWxraW5nIHRl bXBsYXRlLiAgVGhpcyBzcGVjaWFsaXNhdGlvbiBwcmludHMgRm9ydHJhbiBhcnJheXMuICAqLwot IAotLXN0YXRpYyB2b2lkCi0tZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5z aW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCi0tCQkgICBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwK LS0JCSAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVfQUREUiBhZGRyZXNzLAotLQkJICAgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi0tCQkgICBjb25zdCBzdHJ1Y3QgdmFs dWUgKnZhbCwKLS0JCSAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25z LAotLQkJICAgaW50ICplbHRzKQotK2NsYXNzIGZvcnRyYW5fYXJyYXlfcHJpbnRlcl9pbXBsIDog cHVibGljIGZvcnRyYW5fYXJyYXlfd2Fsa2VyX2Jhc2VfaW1wbAotIHsKLS0gIHN0cnVjdCB0eXBl ICpyYW5nZV90eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSktPmluZGV4X3R5cGUgKCk7Ci0tICBD T1JFX0FERFIgYWRkciA9IGFkZHJlc3MgKyBlbWJlZGRlZF9vZmZzZXQ7Ci0tICBMT05HRVNUIGxv d2VyYm91bmQsIHVwcGVyYm91bmQ7Ci0tICBMT05HRVNUIGk7Ci0tCi0tICBnZXRfZGlzY3JldGVf Ym91bmRzIChyYW5nZV90eXBlLCAmbG93ZXJib3VuZCwgJnVwcGVyYm91bmQpOwotLQotLSAgaWYg KG5zcyAhPSBuZGltZW5zaW9ucykKLS0gICAgewotLSAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7Ci0tICAgICAgc2l6ZV90IGRpbV9zaXplID0gdHlw ZV9sZW5ndGhfdW5pdHMgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLS0gICAgICBpbnQgdW5p dF9zaXplID0gZ2RiYXJjaF9hZGRyZXNzYWJsZV9tZW1vcnlfdW5pdF9zaXplIChnZGJhcmNoKTsK LS0gICAgICBzaXplX3QgYnl0ZV9zdHJpZGUgPSB0eXBlLT5iaXRfc3RyaWRlICgpIC8gKHVuaXRf c2l6ZSAqIDgpOwotLSAgICAgIGlmIChieXRlX3N0cmlkZSA9PSAwKQotLQlieXRlX3N0cmlkZSA9 IGRpbV9zaXplOwotLSAgICAgIHNpemVfdCBvZmZzID0gMDsKLS0KLS0gICAgICBmb3IgKGkgPSBs b3dlcmJvdW5kOwotLQkgICAoaSA8IHVwcGVyYm91bmQgKyAxICYmICgqZWx0cykgPCBvcHRpb25z LT5wcmludF9tYXgpOwotLQkgICBpKyspCi0tCXsKLS0JICBzdHJ1Y3QgdmFsdWUgKnN1YmFycmF5 ID0gdmFsdWVfZnJvbV9jb250ZW50c19hbmRfYWRkcmVzcwotLQkgICAgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpLCB2YWx1ZV9jb250ZW50c19mb3JfcHJpbnRpbmdfY29uc3QgKHZhbCkKLS0JICAg ICArIG9mZnMsIGFkZHIgKyBvZmZzKTsKLS0KLS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0s ICIoIik7Ci0tCSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyArIDEsIG5kaW1lbnNpb25zLCB2YWx1 ZV90eXBlIChzdWJhcnJheSksCi0tCQkJICAgICB2YWx1ZV9jb250ZW50c19mb3JfcHJpbnRpbmcg KHN1YmFycmF5KSwKLS0JCQkgICAgIHZhbHVlX2VtYmVkZGVkX29mZnNldCAoc3ViYXJyYXkpLAot LQkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3ViYXJyYXkpLAotLQkJCSAgICAgc3RyZWFtLCByZWN1 cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0cyk7Ci0tCSAgb2ZmcyArPSBieXRlX3N0cmlkZTsK LS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpIik7Ci0tCi0tCSAgaWYgKGkgPCB1cHBl cmJvdW5kKQotLQkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiICIpOwotLQl9Ci0tICAg ICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgdXBwZXJib3VuZCkKLS0J ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAg ewotLSAgICAgIGZvciAoaSA9IGxvd2VyYm91bmQ7IGkgPCB1cHBlcmJvdW5kICsgMSAmJiAoKmVs dHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OwotLQkgICBpKyssICgqZWx0cykrKykKLS0JewotLQkg IHN0cnVjdCB2YWx1ZSAqZWx0ID0gdmFsdWVfc3Vic2NyaXB0ICgoc3RydWN0IHZhbHVlICopdmFs LCBpKTsKLS0KLS0JICBjb21tb25fdmFsX3ByaW50IChlbHQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0 aW9ucywgY3VycmVudF9sYW5ndWFnZSk7Ci0tCi0tCSAgaWYgKGkgIT0gdXBwZXJib3VuZCkKLS0J ICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIiwgIik7Ci0tCi0tCSAgaWYgKCgqZWx0cyA9 PSBvcHRpb25zLT5wcmludF9tYXggLSAxKQotLQkgICAgICAmJiAoaSAhPSB1cHBlcmJvdW5kKSkK LS0JICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwotLQl9Ci0tICAgIH0KLS19 Ci0rcHVibGljOgotKyAgLyogQ29uc3RydWN0b3IuICBUWVBFIGlzIHRoZSBhcnJheSB0eXBlIGJl aW5nIHByaW50ZWQsIEFERFJFU1MgaXMgdGhlCi0rICAgICBhZGRyZXNzIGluIHRhcmdldCBtZW1v cnkgZm9yIHRoZSBvYmplY3Qgb2YgVFlQRSBiZWluZyBwcmludGVkLiAgVkFMIGlzCi0rICAgICB0 aGUgR0RCIHZhbHVlIChvZiBUWVBFKSBiZWluZyBwcmludGVkLiAgU1RSRUFNIGlzIHdoZXJlIHRv IHByaW50IHRvLAotKyAgICAgUkVDT1VSU0UgaXMgcGFzc2VkIHRocm91Z2ggKGFuZCBwcmV2ZW50 cyBpbmZpbml0ZSByZWN1cnNpb24pLCBhbmQKLSsgICAgIE9QVElPTlMgYXJlIHRoZSBwcmludGlu ZyBjb250cm9sIG9wdGlvbnMuICAqLwotKyAgZXhwbGljaXQgZm9ydHJhbl9hcnJheV9wcmludGVy X2ltcGwgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCQkgICAgICAgQ09SRV9BRERSIGFkZHJlc3Ms Ci0rCQkJCSAgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbCwKLSsJCQkJICAgICAgIHN0cnVjdCB1aV9m aWxlICpzdHJlYW0sCi0rCQkJCSAgICAgICBpbnQgcmVjdXJzZSwKLSsJCQkJICAgICAgIGNvbnN0 IHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zICpvcHRpb25zKQotKyAgICA6IG1fZWx0cyAoMCks Ci0rICAgICAgbV92YWwgKHZhbCksCi0rICAgICAgbV9zdHJlYW0gKHN0cmVhbSksCi0rICAgICAg bV9yZWN1cnNlIChyZWN1cnNlKSwKLSsgICAgICBtX29wdGlvbnMgKG9wdGlvbnMpCi0rICB7IC8q IE5vdGhpbmcuICAqLyB9Ci0rCi0rICAvKiBDYWxsZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgdGhl IGFycmF5IGJvdW5kcy4gIFdoZW4gU0hPVUxEX0NPTlRJTlVFIGlzCi0rICAgICBmYWxzZSB0aGVu IHdlIG11c3QgcmV0dXJuIGZhbHNlLCBhcyB3ZSBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUK LSsgICAgIGFycmF5IGJvdW5kcyBmb3IgdGhpcyBkaW1lbnNpb24uICBIb3dldmVyLCB3ZSBhbHNv IHJldHVybiBmYWxzZSBpZiB3ZQotKyAgICAgaGF2ZSBwcmludGVkIHRvbyBtYW55IGVsZW1lbnRz IChhZnRlciBwcmludGluZyAnLi4uJykuICBJbiBhbGwgb3RoZXIKLSsgICAgIGNhc2VzLCByZXR1 cm4gdHJ1ZS4gICovCi0rICBib29sIGNvbnRpbnVlX3dhbGtpbmcgKGJvb2wgc2hvdWxkX2NvbnRp bnVlKQotKyAgewotKyAgICBib29sIGNvbnQgPSBzaG91bGRfY29udGludWUgJiYgKG1fZWx0cyA8 IG1fb3B0aW9ucy0+cHJpbnRfbWF4KTsKLSsgICAgaWYgKCFjb250ICYmIHNob3VsZF9jb250aW51 ZSkKLSsgICAgICBmcHV0c19maWx0ZXJlZCAoIi4uLiIsIG1fc3RyZWFtKTsKLSsgICAgcmV0dXJu IGNvbnQ7Ci0rICB9Ci0rCi0rICAvKiBDYWxsZWQgd2hlbiB3ZSBzdGFydCBpdGVyYXRpbmcgb3Zl ciBhIGRpbWVuc2lvbi4gIElmIGl0J3Mgbm90IHRoZQotKyAgICAgaW5uZXIgbW9zdCBkaW1lbnNp b24gdGhlbiBwcmludCBhbiBvcGVuaW5nICcoJyBjaGFyYWN0ZXIuICAqLwotKyAgdm9pZCBzdGFy dF9kaW1lbnNpb24gKGJvb2wgaW5uZXJfcCkKLSsgIHsKLSsgICAgZnB1dHNfZmlsdGVyZWQgKCIo IiwgbV9zdHJlYW0pOwotKyAgfQotKwotKyAgLyogQ2FsbGVkIHdoZW4gd2UgZmluaXNoIHByb2Nl c3NpbmcgYSBiYXRjaCBvZiBpdGVtcyB3aXRoaW4gYSBkaW1lbnNpb24KLSsgICAgIG9mIHRoZSBh cnJheS4gIERlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaXMgdGhlIGlubmVyIG1vc3QgZGltZW5z aW9uCi0rICAgICBvciBub3Qgd2UgcHJpbnQgZGlmZmVyZW50IHRoaW5ncywgYnV0IHRoaXMgaXMg YWxsIGFib3V0IGFkZGluZwotKyAgICAgc2VwYXJhdG9ycyBiZXR3ZWVuIGVsZW1lbnRzLCBhbmQg ZGltZW5zaW9ucyBvZiB0aGUgYXJyYXkuICAqLwotKyAgdm9pZCBmaW5pc2hfZGltZW5zaW9uIChi b29sIGlubmVyX3AsIGJvb2wgbGFzdF9wKQotKyAgewotKyAgICBmcHV0c19maWx0ZXJlZCAoIiki LCBtX3N0cmVhbSk7Ci0rICAgIGlmICghbGFzdF9wKQotKyAgICAgIGZwdXRzX2ZpbHRlcmVkICgi ICIsIG1fc3RyZWFtKTsKLSsgIH0KLSsKLSsgIC8qIENhbGxlZCB0byBwcm9jZXNzIGFuIGVsZW1l bnQgb2YgRUxUX1RZUEUgYXQgb2Zmc2V0IEVMVF9PRkYgZnJvbSB0aGUKLSsgICAgIHN0YXJ0IG9m IHRoZSBwYXJlbnQgb2JqZWN0LiAgKi8KLSsgIHZvaWQgcHJvY2Vzc19lbGVtZW50IChzdHJ1Y3Qg dHlwZSAqZWx0X3R5cGUsIExPTkdFU1QgZWx0X29mZiwgYm9vbCBsYXN0X3ApCi0rICB7Ci0rICAg IC8qIEV4dHJhY3QgdGhlIGVsZW1lbnQgdmFsdWUgZnJvbSB0aGUgcGFyZW50IHZhbHVlLiAgKi8K LSsgICAgc3RydWN0IHZhbHVlICplX3ZhbAotKyAgICAgID0gdmFsdWVfZnJvbV9jb21wb25lbnQg KG1fdmFsLCBlbHRfdHlwZSwgZWx0X29mZik7Ci0rICAgIGNvbW1vbl92YWxfcHJpbnQgKGVfdmFs LCBtX3N0cmVhbSwgbV9yZWN1cnNlLCBtX29wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwotKyAg ICBpZiAoIWxhc3RfcCkKLSsgICAgICBmcHV0c19maWx0ZXJlZCAoIiwgIiwgbV9zdHJlYW0pOwot KyAgICArK21fZWx0czsKLSsgIH0KLSsKLStwcml2YXRlOgotKyAgLyogVGhlIG51bWJlciBvZiBl bGVtZW50cyBwcmludGVkIHNvIGZhci4gICovCi0rICBpbnQgbV9lbHRzOwotKwotKyAgLyogVGhl IHZhbHVlIGZyb20gd2hpY2ggd2UgYXJlIHByaW50aW5nIGVsZW1lbnRzLiAgKi8KLSsgIHN0cnVj dCB2YWx1ZSAqbV92YWw7Ci0rCi0rICAvKiBUaGUgc3RyZWFtIHdlIHNob3VsZCBwcmludCB0b28u ICAqLwotKyAgc3RydWN0IHVpX2ZpbGUgKm1fc3RyZWFtOwotKwotKyAgLyogVGhlIHJlY3Vyc2lv biBjb3VudGVyLCBwYXNzZWQgdGhyb3VnaCB3aGVuIHdlIHByaW50IGVhY2ggZWxlbWVudC4gICov Ci0rICBpbnQgbV9yZWN1cnNlOwotKwotKyAgLyogVGhlIHByaW50IGNvbnRyb2wgb3B0aW9ucy4g IEdpdmVzIHVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyB0bwotKyAgICAgcHJpbnQs IGFuZCBpcyBwYXNzZWQgdGhyb3VnaCB0byBlYWNoIGVsZW1lbnQgdGhhdCB3ZSBwcmludC4gICov Ci0rICBjb25zdCBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyAqbV9vcHRpb25zID0gbnVsbHB0 cjsKLSt9OwotIAotLS8qIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgdG8gcHJpbnQgYW4gRjc3 IGFycmF5LCB3ZSBzZXQgdXAgc29tZSAKLS0gICBzdHVmZiBhbmQgdGhlbiBpbW1lZGlhdGVseSBj YWxsIGY3N19wcmludF9hcnJheV8xKCkuICAqLwotKy8qIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxs ZWQgdG8gcHJpbnQgYSBGb3J0cmFuIGFycmF5LiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotLWY3N19w cmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAot LQkJIGludCBlbWJlZGRlZF9vZmZzZXQsCi0tCQkgQ09SRV9BRERSIGFkZHJlc3MsIHN0cnVjdCB1 aV9maWxlICpzdHJlYW0sCi0tCQkgaW50IHJlY3Vyc2UsCi0tCQkgY29uc3Qgc3RydWN0IHZhbHVl ICp2YWwsCi0tCQkgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMpCi0r Zm9ydHJhbl9wcmludF9hcnJheSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyZXNz LAotKwkJICAgICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBpbnQgcmVjdXJzZSwKLSsJCSAgICAg Y29uc3Qgc3RydWN0IHZhbHVlICp2YWwsCi0rCQkgICAgIGNvbnN0IHN0cnVjdCB2YWx1ZV9wcmlu dF9vcHRpb25zICpvcHRpb25zKQotIHsKLS0gIGludCBuZGltZW5zaW9uczsKLS0gIGludCBlbHRz ID0gMDsKLS0KLS0gIG5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0t Ci0tICBpZiAobmRpbWVuc2lvbnMgPiBNQVhfRk9SVFJBTl9ESU1TIHx8IG5kaW1lbnNpb25zIDwg MCkKLS0gICAgZXJyb3IgKF8oIlwKLS1UeXBlIG5vZGUgY29ycnVwdCEgRjc3IGFycmF5cyBjYW5u b3QgaGF2ZSAlZCBzdWJzY3JpcHRzICglZCBNYXgpIiksCi0tCSAgIG5kaW1lbnNpb25zLCBNQVhf Rk9SVFJBTl9ESU1TKTsKLS0KLS0gIGY3N19wcmludF9hcnJheV8xICgxLCBuZGltZW5zaW9ucywg dHlwZSwgdmFsYWRkciwgZW1iZWRkZWRfb2Zmc2V0LAotLQkJICAgICBhZGRyZXNzLCBzdHJlYW0s IHJlY3Vyc2UsIHZhbCwgb3B0aW9ucywgJmVsdHMpOwotKyAgZm9ydHJhbl9hcnJheV93YWxrZXI8 Zm9ydHJhbl9hcnJheV9wcmludGVyX2ltcGw+IHAKLSsgICAgKHR5cGUsIGFkZHJlc3MsIChzdHJ1 Y3QgdmFsdWUgKikgdmFsLCBzdHJlYW0sIHJlY3Vyc2UsIG9wdGlvbnMpOwotKyAgcC53YWxrICgp OwotIH0KLSAMCi0gCi1AQCAtMjM2LDEyICsyNDAsNyBAQCBmX3ZhbHVlX3ByaW50X2lubmVyIChz dHJ1Y3QgdmFsdWUgKnZhbCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCi0g Ci0gICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgotICAgICAgIGlmIChUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKS0+Y29kZSAoKSAhPSBUWVBFX0NPREVfQ0hBUikKLS0JewotLQkgIGZwcmludGZfZmls dGVyZWQgKHN0cmVhbSwgIigiKTsKLS0JICBmNzdfcHJpbnRfYXJyYXkgKHR5cGUsIHZhbGFkZHIs IDAsCi0tCQkJICAgYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMpOwotLQkg IGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKLS0JfQotKwlmb3J0cmFuX3ByaW50X2Fy cmF5ICh0eXBlLCBhZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0aW9ucyk7Ci0gICAg ICAgZWxzZQotIAl7Ci0gCSAgc3RydWN0IHR5cGUgKmNoX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBF ICh0eXBlKTsKLWRpZmYgLS1naXQgYS9nZGIvZ2RidHlwZXMuYyBiL2dkYi9nZGJ0eXBlcy5jCi0t LS0gYS9nZGIvZ2RidHlwZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBAIC0zOSw2ICszOSw3 IEBACi0gI2luY2x1ZGUgImR3YXJmMi9sb2MuaCIKLSAjaW5jbHVkZSAiZ2RiY29yZS5oIgotICNp bmNsdWRlICJmbG9hdGZvcm1hdC5oIgotKyNpbmNsdWRlICJmLWxhbmcuaCIKLSAjaW5jbHVkZSA8 YWxnb3JpdGhtPgotIAotIC8qIEluaXRpYWxpemUgQkFETkVTUyBjb25zdGFudHMuICAqLwotQEAg LTI2OTUsNyArMjY5NiwxNiBAQCByZXNvbHZlX2R5bmFtaWNfdHlwZV9pbnRlcm5hbCAoc3RydWN0 IHR5cGUgKnR5cGUsCi0gICBwcm9wID0gVFlQRV9EQVRBX0xPQ0FUSU9OIChyZXNvbHZlZF90eXBl KTsKLSAgIGlmIChwcm9wICE9IE5VTEwKLSAgICAgICAmJiBkd2FyZjJfZXZhbHVhdGVfcHJvcGVy dHkgKHByb3AsIE5VTEwsIGFkZHJfc3RhY2ssICZ2YWx1ZSkpCi0tICAgIHByb3AtPnNldF9jb25z dF92YWwgKHZhbHVlKTsKLSsgICAgewotKyAgICAgIC8qIFN0YXJ0IG9mIEZvcnRyYW4gaGFjay4g IFNlZSBjb21tZW50IGluIGYtbGFuZy5oIGZvciB3aGF0IGlzIGdvaW5nCi0rCSBvbiBoZXJlLiov Ci0rICAgICAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2Zv cnRyYW4KLSsJICAmJiByZXNvbHZlZF90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9BUlJBWSkK LSsJdmFsdWUgPSBmb3J0cmFuX2FkanVzdF9keW5hbWljX2FycmF5X2Jhc2VfYWRkcmVzc19oYWNr IChyZXNvbHZlZF90eXBlLAotKwkJCQkJCQkJdmFsdWUpOwotKyAgICAgIC8qIEVuZCBvZiBGb3J0 cmFuIGhhY2suICAqLwotKyAgICAgIHByb3AtPnNldF9jb25zdF92YWwgKHZhbHVlKTsKLSsgICAg fQotIAotICAgcmV0dXJuIHJlc29sdmVkX3R5cGU7Ci0gfQotQEAgLTM2MDAsOSArMzYxMCwxMSBA QCBpc19zY2FsYXJfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0KQotICAgICAgIExPTkdF U1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwotICAgICAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHQpKTsKLSAKLS0gICAgICBnZXRfZGlz Y3JldGVfYm91bmRzICh0LT5pbmRleF90eXBlICgpLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCk7 Ci0tCi0tICAgICAgcmV0dXJuIGhpZ2hfYm91bmQgPT0gbG93X2JvdW5kICYmIGlzX3NjYWxhcl90 eXBlX3JlY3Vyc2l2ZSAoZWx0X3R5cGUpOwotKyAgICAgIGlmIChnZXRfZGlzY3JldGVfYm91bmRz ICh0LT5pbmRleF90eXBlICgpLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkpCi0rCXJldHVybiAo aGlnaF9ib3VuZCA9PSBsb3dfYm91bmQKLSsJICAgICAgICAmJiBpc19zY2FsYXJfdHlwZV9yZWN1 cnNpdmUgKGVsdF90eXBlKSk7Ci0rICAgICAgZWxzZQotKwlyZXR1cm4gMDsKLSAgICAgfQotICAg LyogQXJlIHdlIGRlYWxpbmcgd2l0aCBhIHN0cnVjdCB3aXRoIG9uZSBlbGVtZW50PyAgKi8KLSAg IGVsc2UgaWYgKHQtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX1NUUlVDVCAmJiB0LT5udW1fZmllbGRz ICgpID09IDEpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1z bGljZXMtYmFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJh ZC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZXhwCi1AQCAtMCwwICsxLDY5IEBA Ci0rIyBDb3B5cmlnaHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gLgotKwotKyMgVGVzdCBpbnZhbGlkIGVsZW1lbnQg YW5kIHNsaWNlIGFycmF5IGFjY2Vzc2VzLgotKwotK2lmIHtbc2tpcF9mb3J0cmFuX3Rlc3RzXX0g eyByZXR1cm4gLTEgfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotK2xvYWRfbGliIGZv cnRyYW4uZXhwCi0rCi0raWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSsJIHtkZWJ1ZyBmOTB9XX0gewotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0raWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSsgICAgdW50ZXN0ZWQgImNv dWxkIG5vdCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgTWVzc2FnZSBCcmVha3BvaW50Il0K LStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmlyc3QgQnJlYWtwb2ludCJd Ci0rZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIlNlY29uZCBCcmVha3BvaW50 Il0KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmluYWwgQnJlYWtwb2lu dCJdCi0rCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgIkZpcnN0IEJyZWFrcG9pbnQiCi0r Ci0rIyBBY2Nlc3Mgbm90IHlldCBhbGxvY2F0ZWQgYXJyYXkuCi0rZ2RiX3Rlc3QgInByaW50IG90 aGVyIiAiID0gPG5vdCBhbGxvY2F0ZWQ+IgotK2dkYl90ZXN0ICJwcmludCBvdGhlcigwOjQsMjoz KSIgImFycmF5IG5vdCBhbGxvY2F0ZWQiCi0rZ2RiX3Rlc3QgInByaW50IG90aGVyKDEsMSkiICJu byBzdWNoIHZlY3RvciBlbGVtZW50IFxcKHZlY3RvciBub3QgYWxsb2NhdGVkXFwpIgotKwotKyMg QWNjZXNzIG5vdCB5ZXQgYXNzb2NpYXRlZCBwb2ludGVyLgotK2dkYl90ZXN0ICJwcmludCBwb2lu dGVyMmQiICIgPSA8bm90IGFzc29jaWF0ZWQ+IgotK2dkYl90ZXN0ICJwcmludCBwb2ludGVyMmQo MToyLDE6MikiICJhcnJheSBub3QgYXNzb2NpYXRlZCIKLStnZGJfdGVzdCAicHJpbnQgcG9pbnRl cjJkKDEsMSkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IFxcKHZlY3RvciBub3QgYXNzb2NpYXRl ZFxcKSIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiU2Vjb25kIEJyZWFrcG9pbnQi Ci0rCi0rIyBBY2Nlc3NpbmcganVzdCBvdXRzaWRlIHRoZSBhcnJheXMuCi0rZm9yZWFjaCBuYW1l IHthcnJheSBwb2ludGVyMmQgb3RoZXJ9IHsKLSsgICAgZ2RiX3Rlc3QgInByaW50ICRuYW1lICgw Oiw6KSIgImFycmF5IHN1YnNjcmlwdCBvdXQgb2YgYm91bmRzIgotKyAgICBnZGJfdGVzdCAicHJp bnQgJG5hbWUgKDoxMSw6KSIgImFycmF5IHN1YnNjcmlwdCBvdXQgb2YgYm91bmRzIgotKyAgICBn ZGJfdGVzdCAicHJpbnQgJG5hbWUgKDosMDopIiAiYXJyYXkgc3Vic2NyaXB0IG91dCBvZiBib3Vu ZHMiCi0rICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSAoOiw6MTEpIiAiYXJyYXkgc3Vic2NyaXB0 IG91dCBvZiBib3VuZHMiCi0rCi0rICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSAoMCw6KSIgIm5v IHN1Y2ggdmVjdG9yIGVsZW1lbnQiCi0rICAgIGdkYl90ZXN0ICJwcmludCAkbmFtZSAoMTEsOiki ICJubyBzdWNoIHZlY3RvciBlbGVtZW50IgotKyAgICBnZGJfdGVzdCAicHJpbnQgJG5hbWUgKDos MCkiICJubyBzdWNoIHZlY3RvciBlbGVtZW50IgotKyAgICBnZGJfdGVzdCAicHJpbnQgJG5hbWUg KDosMTEpIiAibm8gc3VjaCB2ZWN0b3IgZWxlbWVudCIKLSt9Ci0rCi0rIyBTdHJpZGUgaW4gdGhl IHdyb25nIGRpcmVjdGlvbi4KLStnZGJfdGVzdCAicHJpbnQgYXJyYXkgKDE6MTA6LTEsOikiICJp bmNvcnJlY3Qgc3RyaWRlIGFuZCBib3VuZGFyeSBjb21iaW5hdGlvbiIKLStnZGJfdGVzdCAicHJp bnQgYXJyYXkgKDosMToxMDotMSkiICJpbmNvcnJlY3Qgc3RyaWRlIGFuZCBib3VuZGFyeSBjb21i aW5hdGlvbiIKLStnZGJfdGVzdCAicHJpbnQgYXJyYXkgKDEwOjE6MSw6KSIgImluY29ycmVjdCBz dHJpZGUgYW5kIGJvdW5kYXJ5IGNvbWJpbmF0aW9uIgotK2dkYl90ZXN0ICJwcmludCBhcnJheSAo OiwxMDoxOjEpIiAiaW5jb3JyZWN0IHN0cmlkZSBhbmQgYm91bmRhcnkgY29tYmluYXRpb24iCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtYmFkLmY5 MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5mOTAKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy1iYWQuZjkwCi1AQCAtMCwwICsxLDQyIEBACi0rISBDb3B5cmln aHQgMjAyMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eQotKyEgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgotKyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSshIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotKwotKyEKLSshIFN0YXJ0IG9mIHRlc3QgcHJvZ3JhbS4KLSshCi0r cHJvZ3JhbSB0ZXN0Ci0rCi0rICAhIERlY2xhcmUgdmFyaWFibGVzIHVzZWQgaW4gdGhpcyB0ZXN0 LgotKyAgaW50ZWdlciwgZGltZW5zaW9uICgxOjEwLDE6MTApIDo6IGFycmF5Ci0rICBpbnRlZ2Vy LCBhbGxvY2F0YWJsZSA6OiBvdGhlciAoOiwgOikKLSsgIGludGVnZXIsIGRpbWVuc2lvbig6LDop LCBwb2ludGVyIDo6IHBvaW50ZXIyZCA9PiBudWxsKCkKLSsgIGludGVnZXIsIGRpbWVuc2lvbigx OjEwLDE6MTApLCB0YXJnZXQgOjogdGFycmF5Ci0rCi0rICBwcmludCAqLCAiIiAhIEZpcnN0IEJy ZWFrcG9pbnQuCi0rCi0rICAhIEFsbG9jYXRlIG9yIGFzc29jaWF0ZSBhbnkgdmFyaWFibGVzIGFz IG5lZWRlZC4KLSsgIGFsbG9jYXRlIChvdGhlciAoMToxMCwgMToxMCkpCi0rICBwb2ludGVyMmQg PT4gdGFycmF5Ci0rICBhcnJheSA9IDAKLSsKLSsgIHByaW50ICosICIiICEgU2Vjb25kIEJyZWFr cG9pbnQuCi0rCi0rICAhIEFsbCBkb25lLiAgRGVhbGxvY2F0ZS4KLSsgIGRlYWxsb2NhdGUgKG90 aGVyKQotKwotKyAgISBHREIgY2F0Y2hlcyB0aGlzIGZpbmFsIGJyZWFrcG9pbnQgdG8gaW5kaWNh dGUgdGhlIGVuZCBvZiB0aGUgdGVzdC4KLSsgIHByaW50ICosICIiICEgRmluYWwgQnJlYWtwb2lu dC4KLSsKLStlbmQgcHJvZ3JhbSB0ZXN0Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xp Y2VzLXN1Yi1zbGljZXMuZXhwCi1AQCAtMCwwICsxLDExMSBAQAotKyMgQ29weXJpZ2h0IDIwMjAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+IC4KLSsKLSsjIENyZWF0ZSBhIHNsaWNlIG9mIGFuIGFycmF5LCB0aGVuIHRha2UgYSBz bGljZSBvZiB0aGF0IHNsaWNlLgotKwotK2lmIHtbc2tpcF9mb3J0cmFuX3Rlc3RzXX0geyByZXR1 cm4gLTEgfQotKwotK3N0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotK2xvYWRfbGliIGZvcnRyYW4u ZXhwCi0rCi0raWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3Rm aWxlfSAke3NyY2ZpbGV9IFwKLSsJIHtkZWJ1ZyBmOTB9XX0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0raWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsKLSsgICAgdW50ZXN0ZWQgImNvdWxkIG5v dCBydW4gdG8gbWFpbiIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgTWVzc2FnZSBCcmVha3BvaW50Il0KLStnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiU3RvcCBIZXJlIl0KLStnZGJfYnJlYWtw b2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmluYWwgQnJlYWtwb2ludCJdCi0rCi0rIyBXZSdy ZSBnb2luZyB0byBwcmludCBzb21lIHJlYXNvbmFibHkgbGFyZ2UgYXJyYXlzLgotK2dkYl90ZXN0 X25vX291dHB1dCAic2V0IHByaW50IGVsZW1lbnRzIHVubGltaXRlZCIKLSsKLStnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiU3RvcCBIZXJlIgotKwotKyMgUHJpbnQgYSBzbGljZSwgY2FwdHVy ZSB0aGUgY29udmVuaWVuY2UgdmFyaWFibGUgbmFtZSBjcmVhdGVkLgotK3NldCBjbWQgInByaW50 IGFycmF5ICgxOjEwOjIsIDE6MTA6MikiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkY21kIHsK LSsgICAgLXJlICJcclxuXFxcJChcXGQrKSA9IC4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0 IHZhcm5hbWUgIlwkJGV4cGVjdF9vdXQoMSxzdHJpbmcpIgotKyAgICB9Ci0rfQotKwotKyMgTm93 IGNoZWNrIHRoYXQgd2UgY2FuIGNvcnJlY3RseSBleHRyYWN0IGFsbCB0aGUgZWxlbWVudHMgZnJv bSB0aGlzCi0rIyBzbGljZS4KLStmb3IgeyBzZXQgaiAxIH0geyAkaiA8IDYgfSB7IGluY3IgaiB9 IHsKLSsgICAgZm9yIHsgc2V0IGkgMSB9IHsgJGkgPCA2IH0geyBpbmNyIGkgfSB7Ci0rCXNldCB2 YWwgW2V4cHIgKCgoJGkgLSAxKSAqIDIpICsgKCgkaiAtIDEpICogMjApKSArIDFdCi0rCWdkYl90 ZXN0ICJwcmludCAke3Zhcm5hbWV9ICgkaSwkaikiICIgPSAkdmFsIgotKyAgICB9Ci0rfQotKwot KyMgTm93IHRha2UgYSBzbGljZSBvZiB0aGUgc2xpY2UuCi0rZ2RiX3Rlc3QgInByaW50ICR7dmFy bmFtZX0gKDM6NSwgMzo1KSIgXAotKyAgICAiID0gXFwoXFwoNDUsIDQ3LCA0OVxcKSBcXCg2NSwg NjcsIDY5XFwpIFxcKDg1LCA4NywgODlcXClcXCkiCi0rCi0rIyBOb3cgdGFrZSBhIGRpZmZlcmVu dCBzbGljZSBvZiBhIHNsaWNlLgotK3NldCBjbWQgInByaW50ICR7dmFybmFtZX0gKDE6NToyLCAx OjU6MikiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkY21kIHsKLSsgICAgLXJlICJcclxuXFxc JChcXGQrKSA9IFxcKFxcKDEsIDUsIDlcXCkgXFwoNDEsIDQ1LCA0OVxcKSBcXCg4MSwgODUsIDg5 XFwpXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0IHZhcm5hbWUgIlwkJGV4cGVjdF9vdXQo MSxzdHJpbmcpIgotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSt9Ci0rCi0rIyBOb3cg dGFrZSBhIHNsaWNlIGZyb20gdGhlIHNsaWNlLCBvZiBhIHNsaWNlIQotK3NldCBjbWQgInByaW50 ICR7dmFybmFtZX0gKDE6MzoyLCAxOjM6MikiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkY21k IHsKLSsgICAgLXJlICJcclxuXFxcJChcXGQrKSA9IFxcKFxcKDEsIDlcXCkgXFwoODEsIDg5XFwp XFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0IHZhcm5hbWUgIlwkJGV4cGVjdF9vdXQoMSxz dHJpbmcpIgotKwlwYXNzICRnZGJfdGVzdF9uYW1lCi0rICAgIH0KLSt9Ci0rCi0rIyBBbmQgYWdh aW4hCi0rc2V0IGNtZCAicHJpbnQgJHt2YXJuYW1lfSAoMToyOjIsIDE6MjoyKSIKLStnZGJfdGVz dF9tdWx0aXBsZSAkY21kICRjbWQgewotKyAgICAtcmUgIlxyXG5cXFwkKFxcZCspID0gXFwoXFwo MVxcKVxcKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNldCB2YXJuYW1lICJcJCRleHBlY3Rfb3V0 KDEsc3RyaW5nKSIKLSsJcGFzcyAkZ2RiX3Rlc3RfbmFtZQotKyAgICB9Ci0rfQotKwotKyMgVGVz dCB0YWtpbmcgYSBzbGljZSB3aXRoIHN0cmlkZSBvZiBhIHN0cmluZy4gIFRoaXMgaXNuJ3QgYWN0 dWFsbHkKLSsjIHN1cHBvcnRlZCB3aXRoaW4gZ2ZvcnRyYW4gKGF0IGxlYXN0KSwgYnV0IG5hdHVy YWxseSBkcm9wcyBvdXQgb2YgaG93Ci0rIyBHREIgbW9kZWxzIGFycmF5cyBhbmQgc3RyaW5ncyBp biBhIHNpbWlsYXIgd2F5LCBzbyB3ZSBtYXkgYXMgd2VsbAotKyMgdGVzdCB0aGF0IHRoaXMgaXMg c3RpbGwgd29ya2luZy4KLStnZGJfdGVzdCAicHJpbnQgc3RyICgxOjI2OjIpIiAiID0gJ2FjZWdp a21vcXN1d3knIgotK2dkYl90ZXN0ICJwcmludCBzdHIgKDI2OjE6LTEpIiAiID0gJ3p5eHd2dXRz cnFwb25tbGtqaWhnZmVkY2JhJyIKLStnZGJfdGVzdCAicHJpbnQgc3RyICgyNjoxOi0yKSIgIiA9 ICd6eHZ0cnBubGpoZmRiJyIKLSsKLSsjIE5vdyB0ZXN0IHRoZSBtZW1vcnkgcmVxdWlyZW1lbnRz IG9mIHRha2luZyBhIHNsaWNlIGZyb20gYW4gYXJyYXkuCi0rIyBUaGUgaWRlYSBpcyB0aGF0IHdl IHNob3VsZG4ndCByZXF1aXJlIG1vcmUgbWVtb3J5IHRvIGV4dHJhY3QgYSBzbGljZQotKyMgdGhh biB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UuCi0rIwotKyMgVGhpcyB3aWxsIG9ubHkgd29yayBpZiBh cnJheSByZXBhY2tpbmcgaXMgdHVybmVkIG9uLCBvdGhlcndpc2UgR0RCCi0rIyB3aWxsIGNyZWF0 ZSB0aGUgc2xpY2UgYnkgZ2VuZXJhdGluZyBhIG5ldyB0eXBlIHRoYXQgc2l0cyBvdmVyIHRoZQot KyMgZXhpc3RpbmcgdmFsdWUgaW4gbWVtb3J5LgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGZv cnRyYW4gcmVwYWNrLWFycmF5LXNsaWNlcyBvbiIKLStzZXQgZWxlbWVudF9zaXplIFtnZXRfaW50 ZWdlcl92YWx1ZW9mICJzaXplb2YgKGFycmF5ICgxLDEpKSIgInVua25vd24iXQotK3NldCBzbGlj ZV9zaXplIFtleHByICRlbGVtZW50X3NpemUgKiA0XQotK2dkYl90ZXN0X25vX291dHB1dCAic2V0 IG1heC12YWx1ZS1zaXplICRzbGljZV9zaXplIgotK2dkYl90ZXN0ICJwcmludCBhcnJheSAoMToy LCAxOjIpIiAiPSBcXChcXCgxLCAyXFwpIFxcKDExLCAxMlxcKVxcKSIKLStnZGJfdGVzdCAicHJp bnQgYXJyYXkgKDI6MywgMjozKSIgIj0gXFwoXFwoMTIsIDEzXFwpIFxcKDIyLCAyM1xcKVxcKSIK LStnZGJfdGVzdCAicHJpbnQgYXJyYXkgKDI6NToyLCAyOjU6MikiICI9IFxcKFxcKDEyLCAxNFxc KSBcXCgzMiwgMzRcXClcXCkiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmY5MAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLS0tLSAv ZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1 Yi1zbGljZXMuZjkwCi1AQCAtMCwwICsxLDk2IEBACi0rISBDb3B5cmlnaHQgMjAyMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSshCi0rISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyEgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyEKLSshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSshIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSshIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIQotKyEgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSshIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotKyEKLSshIFN0YXJ0IG9mIHRlc3QgcHJvZ3JhbS4KLSshCi0rcHJvZ3JhbSB0ZXN0Ci0r ICBpbnRlZ2VyLCBkaW1lbnNpb24gKDE6MTAsMToxMSkgOjogYXJyYXkKLSsgIGNoYXJhY3RlciAo bGVuPTI2KSA6OiBzdHIgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiCi0rCi0rICBjYWxs IGZpbGxfYXJyYXlfMmQgKGFycmF5KQotKwotKyAgISBHREIgY2F0Y2hlcyB0aGlzIGZpbmFsIGJy ZWFrcG9pbnQgdG8gaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgdGVzdC4KLSsgIHByaW50ICosICIi ICEgU3RvcCBIZXJlCi0rCi0rICBwcmludCAqLCBhcnJheQotKyAgcHJpbnQgKiwgc3RyCi0rCi0r ICAhIEdEQiBjYXRjaGVzIHRoaXMgZmluYWwgYnJlYWtwb2ludCB0byBpbmRpY2F0ZSB0aGUgZW5k IG9mIHRoZSB0ZXN0LgotKyAgcHJpbnQgKiwgIiIgISBGaW5hbCBCcmVha3BvaW50LgotKwotK2Nv bnRhaW5zCi0rCi0rICAhIEZpbGwgYSAxRCBhcnJheSB3aXRoIGEgdW5pcXVlIHBvc2l0aXZlIGlu dGVnZXIgaW4gZWFjaCBlbGVtZW50LgotKyAgc3Vicm91dGluZSBmaWxsX2FycmF5XzFkIChhcnJh eSkKLSsgICAgaW50ZWdlciwgZGltZW5zaW9uICg6KSA6OiBhcnJheQotKyAgICBpbnRlZ2VyIDo6 IGNvdW50ZXIKLSsKLSsgICAgY291bnRlciA9IDEKLSsgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAx KSwgVUJPVU5EIChhcnJheSwgMSksIDEKLSsgICAgICAgYXJyYXkgKGopID0gY291bnRlcgotKyAg ICAgICBjb3VudGVyID0gY291bnRlciArIDEKLSsgICAgZW5kIGRvCi0rICBlbmQgc3Vicm91dGlu ZSBmaWxsX2FycmF5XzFkCi0rCi0rICAhIEZpbGwgYSAyRCBhcnJheSB3aXRoIGEgdW5pcXVlIHBv c2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50LgotKyAgc3Vicm91dGluZSBmaWxsX2FycmF5 XzJkIChhcnJheSkKLSsgICAgaW50ZWdlciwgZGltZW5zaW9uICg6LDopIDo6IGFycmF5Ci0rICAg IGludGVnZXIgOjogY291bnRlcgotKwotKyAgICBjb3VudGVyID0gMQotKyAgICBkbyBpPUxCT1VO RCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5LCAyKSwgMQotKyAgICAgICBkbyBqPUxCT1VORCAo YXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAxKSwgMQotKyAgICAgICAgICBhcnJheSAoaixpKSA9 IGNvdW50ZXIKLSsgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCi0rICAgICAgIGVuZCBk bwotKyAgICBlbmQgZG8KLSsgIGVuZCBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfMmQKLSsKLSsgICEg RmlsbCBhIDNEIGFycmF5IHdpdGggYSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdlciBpbiBlYWNoIGVs ZW1lbnQuCi0rICBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfM2QgKGFycmF5KQotKyAgICBpbnRlZ2Vy LCBkaW1lbnNpb24gKDosOiw6KSA6OiBhcnJheQotKyAgICBpbnRlZ2VyIDo6IGNvdW50ZXIKLSsK LSsgICAgY291bnRlciA9IDEKLSsgICAgZG8gaT1MQk9VTkQgKGFycmF5LCAzKSwgVUJPVU5EIChh cnJheSwgMyksIDEKLSsgICAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJh eSwgMiksIDEKLSsgICAgICAgICAgZG8gaz1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJh eSwgMSksIDEKLSsgICAgICAgICAgICAgYXJyYXkgKGssIGosaSkgPSBjb3VudGVyCi0rICAgICAg ICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQotKyAgICAgICAgICBlbmQgZG8KLSsgICAgICAg ZW5kIGRvCi0rICAgIGVuZCBkbwotKyAgZW5kIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8zZAotKwot KyAgISBGaWxsIGEgNEQgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2ZSBpbnRlZ2VyIGluIGVh Y2ggZWxlbWVudC4KLSsgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV80ZCAoYXJyYXkpCi0rICAgIGlu dGVnZXIsIGRpbWVuc2lvbiAoOiw6LDosOikgOjogYXJyYXkKLSsgICAgaW50ZWdlciA6OiBjb3Vu dGVyCi0rCi0rICAgIGNvdW50ZXIgPSAxCi0rICAgIGRvIGk9TEJPVU5EIChhcnJheSwgNCksIFVC T1VORCAoYXJyYXksIDQpLCAxCi0rICAgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMyksIFVCT1VO RCAoYXJyYXksIDMpLCAxCi0rICAgICAgICAgIGRvIGs9TEJPVU5EIChhcnJheSwgMiksIFVCT1VO RCAoYXJyYXksIDIpLCAxCi0rICAgICAgICAgICAgIGRvIGw9TEJPVU5EIChhcnJheSwgMSksIFVC T1VORCAoYXJyYXksIDEpLCAxCi0rICAgICAgICAgICAgICAgIGFycmF5IChsLCBrLCBqLGkpID0g Y291bnRlcgotKyAgICAgICAgICAgICAgICBjb3VudGVyID0gY291bnRlciArIDEKLSsgICAgICAg ICAgICAgZW5kIGRvCi0rICAgICAgICAgIGVuZCBkbwotKyAgICAgICBlbmQgZG8KLSsgICAgZW5k IGRvCi0rICAgIHByaW50ICosICIiCi0rICBlbmQgc3Vicm91dGluZSBmaWxsX2FycmF5XzRkCi0r ZW5kIHByb2dyYW0gdGVzdAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v YXJyYXktc2xpY2VzLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2Vz LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKLUBAIC0xOCw2 ICsxOCwyMSBAQAotICMgdGhlIHN1YnJvdXRpbmUuICBUaGlzIHNob3VsZCBleGVyY2lzZSBHREIn cyBhYmlsaXR5IHRvIGhhbmRsZQotICMgZGlmZmVyZW50IHN0cmlkZXMgZm9yIHRoZSBkaWZmZXJl bnQgZGltZW5zaW9ucy4KLSAKLSsjIFRlc3RpbmcgR0RCJ3MgYWJpbGl0eSB0byBwcmludCBhcnJh eSAoYW5kIHN0cmluZykgc2xpY2VzLCBpbmNsdWRpbmcKLSsjIHNsaWNlcyB0aGF0IG1ha2UgdXNl IG9mIGFycmF5IHN0cmlkZXMuCi0rIwotKyMgSW4gdGhlIEZvcnRyYW4gY29kZSB2YXJpb3VzIGFy cmF5cyBvZiBkaWZmZXJlbnQgcmFua3MgYXJlIGZpbGxlZAotKyMgd2l0aCBkYXRhLCBhbmQgc2xp Y2VzIGFyZSBwYXNzZWQgdG8gYSBzZXJpZXMgb2Ygc2hvdyBmdW5jdGlvbnMuCi0rIwotKyMgSW4g dGhpcyB0ZXN0IHNjcmlwdCB3ZSBicmVhayBpbiBlYWNoIG9mIHRoZSBzaG93IGZ1bmN0aW9ucywg cHJpbnQKLSsjIHRoZSBhcnJheSBzbGljZSB0aGF0IHdhcyBwYXNzZWQgaW4sIGFuZCB0aGVuIG1v dmUgdXAgdGhlIHN0YWNrIHRvCi0rIyB0aGUgcGFyZW50IGZyYW1lIGFuZCBjaGVjayBHREIgY2Fu IG1hbnVhbGx5IGV4dHJhY3QgdGhlIHNhbWUgc2xpY2UuCi0rIwotKyMgVGhpcyB0ZXN0IGFsc28g Y2hlY2tzIHRoYXQgdGhlIHNpemUgb2YgdGhlIGFycmF5IHNsaWNlIHBhc3NlZCB0byB0aGUKLSsj IGZ1bmN0aW9uIChzbyBhcyBleHRyYWN0ZWQgYW5kIGRlc2NyaWJlZCBieSB0aGUgY29tcGlsZXIg YW5kIHRoZQotKyMgZGVidWcgaW5mb3JtYXRpb24pIG1hdGNoZXMgdGhlIHNpemUgb2YgdGhlIHNs aWNlIG1hbnVhbGx5IGV4dHJhY3RlZAotKyMgYnkgR0RCLgotKwotIGlmIHtbc2tpcF9mb3J0cmFu X3Rlc3RzXX0geyByZXR1cm4gLTEgfQotIAotIHN0YW5kYXJkX3Rlc3RmaWxlICIuZjkwIgotQEAg LTI4LDU3ICs0MywyMjQgQEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKLSAgICAgcmV0dXJuIC0xCi0gfQotIAotLWlmICFb Zm9ydHJhbl9ydW50b19tYWluXSB7Ci0tICAgIHVudGVzdGVkICJjb3VsZCBub3QgcnVuIHRvIG1h aW4iCi0tICAgIHJldHVybiAtMQotKyMgVGFrZXMgdGhlIG5hbWUgb2YgYW4gYXJyYXkgc2xpY2Ug YXMgdXNlZCBpbiB0aGUgdGVzdCBzb3VyY2UsIGFuZCBleHRyYWN0cwotKyMgdGhlIGJhc2UgYXJy YXkgbmFtZS4gIEZvciBleGFtcGxlOiAnYXJyYXkgKDEsMiknIGJlY29tZXMgJ2FycmF5Jy4KLStw cm9jIGFycmF5X3NsaWNlX3RvX3ZhciB7IHNsaWNlX3N0ciB9IHsKLSsgICAgcmVnZXhwICJeKD86 XFxzKlxcKCkqKFxbXiggXHRcXSspIiAkc2xpY2Vfc3RyIG1hdGNodmFyIHZhcm5hbWUKLSsgICAg cmV0dXJuICR2YXJuYW1lCi0gfQotIAotLWdkYl9icmVha3BvaW50ICJzaG93IgotLWdkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0KLS0KLS1zZXQg YXJyYXlfY29udGVudHMgXAotLSAgICBbbGlzdCBcCi0tCSAiID0gXFwoXFwoMSwgMiwgMywgNCwg NSwgNiwgNywgOCwgOSwgMTBcXCkgXFwoMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAx OSwgMjBcXCkgXFwoMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzBcXCkgXFwo MzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOSwgNDBcXCkgXFwoNDEsIDQyLCA0Mywg NDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTBcXCkgXFwoNTEsIDUyLCA1MywgNTQsIDU1LCA1Niwg NTcsIDU4LCA1OSwgNjBcXCkgXFwoNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwg NzBcXCkgXFwoNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODBcXCkgXFwoODEs IDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTBcXCkgXFwoOTEsIDkyLCA5MywgOTQs IDk1LCA5NiwgOTcsIDk4LCA5OSwgMTAwXFwpXFwpIiBcCi0tCSAiID0gXFwoXFwoMSwgMiwgMywg NCwgNVxcKSBcXCgxMSwgMTIsIDEzLCAxNCwgMTVcXCkgXFwoMjEsIDIyLCAyMywgMjQsIDI1XFwp IFxcKDMxLCAzMiwgMzMsIDM0LCAzNVxcKSBcXCg0MSwgNDIsIDQzLCA0NCwgNDVcXClcXCkiIFwK LS0JICIgPSBcXChcXCgxLCAzLCA1LCA3LCA5XFwpIFxcKDIxLCAyMywgMjUsIDI3LCAyOVxcKSBc XCg0MSwgNDMsIDQ1LCA0NywgNDlcXCkgXFwoNjEsIDYzLCA2NSwgNjcsIDY5XFwpIFxcKDgxLCA4 MywgODUsIDg3LCA4OVxcKVxcKSIgXAotLQkgIiA9IFxcKFxcKDEsIDQsIDcsIDEwXFwpIFxcKDIx LCAyNCwgMjcsIDMwXFwpIFxcKDQxLCA0NCwgNDcsIDUwXFwpIFxcKDYxLCA2NCwgNjcsIDcwXFwp IFxcKDgxLCA4NCwgODcsIDkwXFwpXFwpIiBcCi0tCSAiID0gXFwoXFwoMSwgNSwgOVxcKSBcXCgz MSwgMzUsIDM5XFwpIFxcKDYxLCA2NSwgNjlcXCkgXFwoOTEsIDk1LCA5OVxcKVxcKSIgXAotLQkg IiA9IFxcKFxcKC0yNiwgLTI1LCAtMjQsIC0yMywgLTIyLCAtMjEsIC0yMCwgLTE5LCAtMTgsIC0x N1xcKSBcXCgtMTksIC0xOCwgLTE3LCAtMTYsIC0xNSwgLTE0LCAtMTMsIC0xMiwgLTExLCAtMTBc XCkgXFwoLTEyLCAtMTEsIC0xMCwgLTksIC04LCAtNywgLTYsIC01LCAtNCwgLTNcXCkgXFwoLTUs IC00LCAtMywgLTIsIC0xLCAwLCAxLCAyLCAzLCA0XFwpIFxcKDIsIDMsIDQsIDUsIDYsIDcsIDgs IDksIDEwLCAxMVxcKSBcXCg5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4XFwp IFxcKDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1XFwpIFxcKDIzLCAyNCwg MjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXFwpIFxcKDMwLCAzMSwgMzIsIDMzLCAzNCwg MzUsIDM2LCAzNywgMzgsIDM5XFwpIFxcKDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwg NDUsIDQ2XFwpXFwpIiBcCi0tCSAiID0gXFwoXFwoLTI2LCAtMjUsIC0yNCwgLTIzLCAtMjIsIC0y MVxcKSBcXCgtMTksIC0xOCwgLTE3LCAtMTYsIC0xNSwgLTE0XFwpIFxcKC0xMiwgLTExLCAtMTAs IC05LCAtOCwgLTdcXClcXCkiIFwKLS0JICIgPSBcXChcXCgtMjYsIC0yNCwgLTIyLCAtMjAsIC0x OFxcKSBcXCgtNSwgLTMsIC0xLCAxLCAzXFwpIFxcKDE2LCAxOCwgMjAsIDIyLCAyNFxcKSBcXCgz NywgMzksIDQxLCA0MywgNDVcXClcXCkiIF0KLS0KLS1zZXQgbWVzc2FnZV9zdHJpbmdzIFwKLS0g ICAgW2xpc3QgXAotLQkgIiA9ICdhcnJheSciIFwKLS0JICIgPSAnYXJyYXkgXFwoMTo1LDE6NVxc KSciIFwKLS0JICIgPSAnYXJyYXkgXFwoMToxMDoyLDE6MTA6MlxcKSciIFwKLS0JICIgPSAnYXJy YXkgXFwoMToxMDozLDE6MTA6MlxcKSciIFwKLS0JICIgPSAnYXJyYXkgXFwoMToxMDo1LDE6MTA6 M1xcKSciIF0KLS0KLS1zZXQgaSAwCi0tZm9yZWFjaCByZXN1bHQgJGFycmF5X2NvbnRlbnRzIG1z ZyAkbWVzc2FnZV9zdHJpbmdzIHsKLS0gICAgaW5jciBpCi0tICAgIHdpdGhfdGVzdF9wcmVmaXgg InRlc3QgJGkiIHsKLS0JZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInNob3ciCi0tCWdkYl90 ZXN0ICJwIGFycmF5IiAkcmVzdWx0Ci0tCWdkYl90ZXN0ICJwIG1lc3NhZ2UiICIkbXNnIgotK3By b2MgcnVuX3Rlc3QgeyByZXBhY2sgfSB7Ci0rICAgIGdsb2JhbCBiaW5maWxlIGdkYl9wcm9tcHQK LSsKLSsgICAgY2xlYW5fcmVzdGFydCAke2JpbmZpbGV9Ci0rCi0rICAgIGlmICFbZm9ydHJhbl9y dW50b19tYWluXSB7Ci0rCXVudGVzdGVkICJjb3VsZCBub3QgcnVuIHRvIG1haW4iCi0rCXJldHVy biAtMQotICAgICB9Ci0tfQotIAotLWdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjb250aW51 ZSB0byBGaW5hbCBCcmVha3BvaW50IgotKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgInNldCBmb3J0 cmFuIHJlcGFjay1hcnJheS1zbGljZXMgJHJlcGFjayIKLSsKLSsgICAgIyBnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBNZXNzYWdlIEJyZWFrcG9pbnQiXQotKyAg ICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBFbGVtZW50Il0K LSsgICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgU3RyaW5n Il0KLSsgICAgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgQXJy YXkgU2xpY2UgMUQiXQotKyAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAi RGlzcGxheSBBcnJheSBTbGljZSAyRCJdCi0rICAgIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJEaXNwbGF5IEFycmF5IFNsaWNlIDNEIl0KLSsgICAgZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgIkRpc3BsYXkgQXJyYXkgU2xpY2UgNEQiXQotKyAgICBnZGJf YnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRmluYWwgQnJlYWtwb2ludCJdCi0rCi0r ICAgICMgV2UncmUgZ29pbmcgdG8gcHJpbnQgc29tZSByZWFzb25hYmx5IGxhcmdlIGFycmF5cy4K LSsgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgcHJpbnQgZWxlbWVudHMgdW5saW1pdGVkIgot KwotKyAgICBzZXQgZm91bmRfZmluYWxfYnJlYWtwb2ludCBmYWxzZQotKwotKyAgICAjIFdlIHBs YWNlIGEgbGltaXQgb24gdGhlIG51bWJlciBvZiB0ZXN0cyB0aGF0IGNhbiBiZSBydW4sIGp1c3Qg aW4KLSsgICAgIyBjYXNlIHNvbWV0aGluZyBnb2VzIHdyb25nLCBhbmQgR0RCIGdldHMgc3R1Y2sg aW4gYW4gbG9vcCBoZXJlLgotKyAgICBzZXQgdGVzdF9jb3VudCAwCi0rICAgIHdoaWxlIHsgJHRl c3RfY291bnQgPCA1MDAgfSB7Ci0rCXdpdGhfdGVzdF9wcmVmaXggInRlc3QgJHRlc3RfY291bnQi IHsKLSsJICAgIGluY3IgdGVzdF9jb3VudAotKwotKwkgICAgc2V0IGZvdW5kX2ZpbmFsX2JyZWFr cG9pbnQgZmFsc2UKLSsJICAgIHNldCBleHBlY3RlZF9yZXN1bHQgIiIKLSsJICAgIHNldCBmdW5j X25hbWUgIiIKLSsJICAgIGdkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgImNvbnRpbnVlIiB7 Ci0rCQktcmUgIi4qR0RCID0gKFxbXlxyXG5cXSspXHJcbiIgewotKwkJICAgIHNldCBleHBlY3Rl ZF9yZXN1bHQgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCQkgICAgZXhwX2NvbnRpbnVlCi0rCQl9 Ci0rCQktcmUgIiEgRGlzcGxheSBFbGVtZW50IiB7Ci0rCQkgICAgc2V0IGZ1bmNfbmFtZSAic2hv d19lbGVtIgotKwkJICAgIGV4cF9jb250aW51ZQotKwkJfQotKwkJLXJlICIhIERpc3BsYXkgU3Ry aW5nIiB7Ci0rCQkgICAgc2V0IGZ1bmNfbmFtZSAic2hvd19zdHIiCi0rCQkgICAgZXhwX2NvbnRp bnVlCi0rCQl9Ci0rCQktcmUgIiEgRGlzcGxheSBBcnJheSBTbGljZSAoLilEIiB7Ci0rCQkgICAg c2V0IGZ1bmNfbmFtZSAic2hvd18kZXhwZWN0X291dCgxLHN0cmluZylkIgotKwkJICAgIGV4cF9j b250aW51ZQotKwkJfQotKwkJLXJlICIhIEZpbmFsIEJyZWFrcG9pbnQiIHsKLSsJCSAgICBzZXQg Zm91bmRfZmluYWxfYnJlYWtwb2ludCB0cnVlCi0rCQkgICAgZXhwX2NvbnRpbnVlCi0rCQl9Ci0r CQktcmUgIiRnZGJfcHJvbXB0ICQiIHsKLSsJCSAgICAjIFdlJ3JlIGRvbmUuCi0rCQl9Ci0rCSAg ICB9Ci0gCi0tIyBOZXh0IHRlc3QgdGhhdCBhc2tpbmcgZm9yIGFuIGFycmF5IHdpdGggc3RyaWRl IGF0IHRoZSBDTEkgZ2l2ZXMgYW4KLS0jIGVycm9yLgotLWNsZWFuX3Jlc3RhcnQgJHt0ZXN0Zmls ZX0KLSsJICAgIGlmICgkZm91bmRfZmluYWxfYnJlYWtwb2ludCkgewotKwkJYnJlYWsKLSsJICAg IH0KLSAKLS1pZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0gdGhlbiB7Ci0tICAgIHBlcnJvciAiY291 bGRuJ3QgcnVuIHRvIG1haW4iCi0tICAgIGNvbnRpbnVlCi0rCSAgICAjIFdlIHdhbnQgdG8gdGFr ZSBhIGxvb2sgYXQgdGhlIGxpbmUgaW4gdGhlIHByZXZpb3VzIGZyYW1lIHRoYXQKLSsJICAgICMg Y2FsbGVkIHRoZSBjdXJyZW50IGZ1bmN0aW9uLiAgSSBjb3VsZG4ndCBmaW5kIGEgYmV0dGVyIHdh eSBvZgotKwkgICAgIyBkb2luZyB0aGlzIHRoYW4gJ3VwJywgd2hpY2ggd2lsbCBwcmludCB0aGUg bGluZSwgdGhlbiAnZG93bicKLSsJICAgICMgYWdhaW4uCi0rCSAgICAjCi0rCSAgICAjIEkgZG9u J3Qgd2FudCB0byBmaWxsIHRoZSBsb2cgd2l0aCBwYXNzZXMgZm9yIHRoZXNlIHVwL2Rvd24KLSsJ ICAgICMgY29tbWFuZHMsIHNvIHdlIGRvbid0IHJlcG9ydCBhbnkuICBJZiBzb21ldGhpbmcgZ29l cyB3cm9uZyB0aGVuIHdlCi0rCSAgICAjIHNob3VsZCBnZXQgYSBmYWlsIGZyb20gZ2RiX3Rlc3Rf bXVsdGlwbGUuCi0rCSAgICBzZXQgYXJyYXlfc2xpY2VfbmFtZSAiIgotKwkgICAgc2V0IHVuaXF1 ZV9pZCAiIgotKwkgICAgYXJyYXkgdW5zZXQgcmVwbGFjZW1lbnRfdmFycwotKwkgICAgYXJyYXkg c2V0IHJlcGxhY2VtZW50X3ZhcnMge30KLSsJICAgIGdkYl90ZXN0X211bHRpcGxlICJ1cCIgInVw IiB7Ci0rCQktcmUgIlxyXG5cWzAtOVxdK1xbIFx0XF0rY2FsbCAke2Z1bmNfbmFtZX0gXFwoKFxb XlxyXG5cXSspXFwpXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCSAgICBzZXQgYXJyYXlfc2xpY2Vf bmFtZSAkZXhwZWN0X291dCgxLHN0cmluZykKLSsJCX0KLSsJCS1yZSAiXHJcblxbMC05XF0rXFsg XHRcXStjYWxsICR7ZnVuY19uYW1lfSBcXCgoXFteXHJcblxdKylcXClcWyBcdFxdKyEgVkFSUz0o XFteIFx0XHJcblxdKylcclxuJGdkYl9wcm9tcHQgJCIgewotKwkJICAgIHNldCBhcnJheV9zbGlj ZV9uYW1lICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwkJICAgIHNldCB1bmlxdWVfaWQgJGV4cGVj dF9vdXQoMixzdHJpbmcpCi0rCQl9Ci0rCSAgICB9Ci0rCSAgICBpZiB7JHVuaXF1ZV9pZCAhPSAi In0gewotKwkJc2V0IHN0ciAiIgotKwkJZm9yZWFjaCB2IFtzcGxpdCAkdW5pcXVlX2lkICxdIHsK LSsJCSAgICBzZXQgdmFsIFtnZXRfaW50ZWdlcl92YWx1ZW9mICIke3Z9IiAiPz8iXAotKwkJCQkg ImdldCB2YXJpYWJsZSAnJHYnIGZvciAnJGFycmF5X3NsaWNlX25hbWUnIl0KLSsJCSAgICBzZXQg cmVwbGFjZW1lbnRfdmFycygkdikgJHZhbAotKwkJICAgIGlmIHskc3RyICE9ICIifSB7Ci0rCQkJ c2V0IHN0ciAiU3RyLCIKLSsJCSAgICB9Ci0rCQkgICAgc2V0IHN0ciAiJHN0ciR2PSR2YWwiCi0r CQl9Ci0rCQlzZXQgdW5pcXVlX2lkICIgJHN0ciIKLSsJICAgIH0KLSsJICAgIGdkYl90ZXN0X211 bHRpcGxlICJkb3duIiAiZG93biIgewotKwkJLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgewotKwkJ ICAgICMgRG9uJ3QgaXNzdWUgYSBwYXNzIGhlcmUuCi0rCQl9Ci0rCSAgICB9Ci0rCi0rCSAgICAj IENoZWNrIHdlIGhhdmUgYWxsIHRoZSBpbmZvcm1hdGlvbiB3ZSBuZWVkIHRvIHN1Y2Nlc3NmdWxs eSBydW4gb25lCi0rCSAgICAjIG9mIHRoZXNlIHRlc3RzLgotKwkgICAgaWYgeyAkZXhwZWN0ZWRf cmVzdWx0ID09ICIiIH0gewotKwkJcGVycm9yICJmYWlsZWQgdG8gZXh0cmFjdCBleHBlY3RlZCBy ZXN1bHRzIgotKwkJcmV0dXJuIDAKLSsJICAgIH0KLSsJICAgIGlmIHsgJGFycmF5X3NsaWNlX25h bWUgPT0gIiIgfSB7Ci0rCQlwZXJyb3IgImZhaWxlZCB0byBleHRyYWN0IGFycmF5IHNsaWNlIG5h bWUiCi0rCQlyZXR1cm4gMAotKwkgICAgfQotKwotKwkgICAgIyBDaGVjayBHREIgY2FuIGNvcnJl Y3RseSBwcmludCB0aGUgYXJyYXkgc2xpY2UgdGhhdCB3YXMgcGFzc2VkIGludG8KLSsJICAgICMg dGhlIGN1cnJlbnQgZnJhbWUuCi0rCSAgICBzZXQgcGF0dGVybiBbc3RyaW5nX3RvX3JlZ2V4cCAi ID0gJGV4cGVjdGVkX3Jlc3VsdCJdCi0rCSAgICBnZGJfdGVzdCAicCBhcnJheSIgIiRwYXR0ZXJu IiBcCi0rCQkiY2hlY2sgdmFsdWUgb2YgJyRhcnJheV9zbGljZV9uYW1lJyR1bmlxdWVfaWQiCi0r Ci0rCSAgICAjIEdldCB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UuCi0rCSAgICBzZXQgc2l6ZV9pbl9z aG93IFwKLSsJCVtnZXRfaW50ZWdlcl92YWx1ZW9mICJzaXplb2YgKGFycmF5KSIgInNob3dfdW5r bm93biIgXAotKwkJICAgICAiZ2V0IHNpemVvZiAnJGFycmF5X3NsaWNlX25hbWUnJHVuaXF1ZV9p ZCBpbiBzaG93Il0KLSsJICAgIHNldCBhZGRyX2luX3Nob3cgXAotKwkJW2dldF9oZXhhZGVjaW1h bF92YWx1ZW9mICImYXJyYXkiICJzaG93X3Vua25vd24iIFwKLSsJCSAgICAgImdldCBhZGRyZXNz ICckYXJyYXlfc2xpY2VfbmFtZSckdW5pcXVlX2lkIGluIHNob3ciXQotKwotKwkgICAgIyBOb3cg bW92ZSBpbnRvIHRoZSBwcmV2aW91cyBmcmFtZSwgYW5kIHNlZSBpZiBHREIgY2FuIGV4dHJhY3Qg dGhlCi0rCSAgICAjIGFycmF5IHNsaWNlIGZyb20gdGhlIG9yaWdpbmFsIHBhcmVudCBvYmplY3Qu ICBBZ2FpbiwgdXNlIG9mCi0rCSAgICAjIGdkYl90ZXN0X211bHRpcGxlIHRvIGF2b2lkIGZpbGxp bmcgdGhlIGxvZ3Mgd2l0aCB1bm5lY2Vzc2FyeQotKwkgICAgIyBwYXNzZXMuCi0rCSAgICBnZGJf dGVzdF9tdWx0aXBsZSAidXAiICJ1cCIgewotKwkJLXJlICJcclxuJGdkYl9wcm9tcHQgJCIgewot KwkJICAgICMgRG8gbm90aGluZy4KLSsJCX0KLSsJICAgIH0KLSsKLSsJICAgICMgUHJpbnQgdGhl IGFycmF5IHNsaWNlLCB0aGlzIHdpbGwgZm9yY2UgR0RCIHRvIG1hbnVhbGx5IGV4dHJhY3QgdGhl Ci0rCSAgICAjIHNsaWNlIGZyb20gdGhlIHBhcmVudCBhcnJheS4KLSsJICAgIGdkYl90ZXN0ICJw ICRhcnJheV9zbGljZV9uYW1lIiAiJHBhdHRlcm4iIFwKLSsJCSJjaGVjayBhcnJheSBzbGljZSAn JGFycmF5X3NsaWNlX25hbWUnJHVuaXF1ZV9pZCBjYW4gYmUgZXh0cmFjdGVkIgotKwotKwkgICAg IyBHZXQgdGhlIHNpemUgb2YgdGhlIHNsaWNlIGluIHRoZSBjYWxsaW5nIGZyYW1lLgotKwkgICAg c2V0IHNpemVfaW5fcGFyZW50IFwKLSsJCVtnZXRfaW50ZWdlcl92YWx1ZW9mICJzaXplb2YgKCRh cnJheV9zbGljZV9uYW1lKSIgXAotKwkJICAgICAicGFyZW50X3Vua25vd24iIFwKLSsJCSAgICAg ImdldCBzaXplb2YgJyRhcnJheV9zbGljZV9uYW1lJyR1bmlxdWVfaWQgaW4gcGFyZW50Il0KLSsK LSsJICAgICMgRmlndXJlIG91dCB0aGUgc3RhcnQgYW5kIGVuZCBhZGRyZXNzZXMgb2YgdGhlIGZ1 bGwgYXJyYXkgaW4gdGhlCi0rCSAgICAjIHBhcmVudCBmcmFtZS4KLSsJICAgIHNldCBmdWxsX3Zh cl9uYW1lIFthcnJheV9zbGljZV90b192YXIgJGFycmF5X3NsaWNlX25hbWVdCi0rCSAgICBzZXQg c3RhcnRfYWRkciBbZ2V0X2hleGFkZWNpbWFsX3ZhbHVlb2YgIiYke2Z1bGxfdmFyX25hbWV9IiBc Ci0rCQkJCSJzdGFydCB1bmtub3duIl0KLSsJICAgIHNldCBlbmRfYWRkciBbZ2V0X2hleGFkZWNp bWFsX3ZhbHVlb2YgXAotKwkJCSAgICAgICIoJiR7ZnVsbF92YXJfbmFtZX0pICsgc2l6ZW9mICgk e2Z1bGxfdmFyX25hbWV9KSIgXAotKwkJCSAgICAgICJlbmQgdW5rbm93biJdCi0rCi0rCSAgICAj IFRoZSBGb3J0cmFuIGNvbXBpbGVyIGNhbiBjaG9vc2UgdG8gZWl0aGVyIHNlbmQgYSBkZXNjcmlw dG9yIHRoYXQKLSsJICAgICMgZGVzY3JpYmVzIHRoZSBhcnJheSBzbGljZSB0byB0aGUgc3Vicm91 dGluZSwgb3IgaXQgY2FuIHJlcGFjayB0aGUKLSsJICAgICMgc2xpY2UgaW50byBhbiBhcnJheSBz ZWN0aW9uIGFuZCBzZW5kIHRoYXQuCi0rCSAgICAjCi0rCSAgICAjIFdlIGZpbmQgdGhlIGFkZHJl c3MgcmFuZ2Ugb2YgdGhlIG9yaWdpbmFsIGFycmF5IGluIHRoZSBwYXJlbnQsCi0rCSAgICAjIGFu ZCB0aGUgYWRkcmVzcyBvZiB0aGUgc2xpY2UgaW4gdGhlIHNob3cgZnVuY3Rpb24sIGlmIHRoZQot KwkgICAgIyBhZGRyZXNzIG9mIHRoZSBzbGljZSAoZnJvbSBzaG93KSBpcyBpbiB0aGUgcmFuZ2Ug b2YgdGhlIG9yaWdpbmFsCi0rCSAgICAjIGFycmF5IHRoZW4gcmVwYWNraW5nIGhhcyBub3Qgb2Nj dXJyZWQsIG90aGVyd2lzZSwgdGhlIHNsaWNlIGlzCi0rCSAgICAjIG91dHNpZGUgb2YgdGhlIHBh cmVudCwgYW5kIHJlcGFja2luZyBtdXN0IGhhdmUgb2NjdXJyZWQuCi0rCSAgICAjCi0rCSAgICAj IFRoZSBnb2FsIGhlcmUgaXMgdG8gY29tcGFyZSB0aGUgc2l6ZXMgb2YgdGhlIHNsaWNlIGluIHNo b3cgd2l0aAotKwkgICAgIyB0aGUgc2l6ZSBvZiB0aGUgc2xpY2UgZXh0cmFjdGVkIGJ5IEdEQi4g IFNvIHdlIGNhbiBvbmx5IGNvbXBhcmUKLSsJICAgICMgc2l6ZXMgd2hlbiBHREIncyByZXBhY2tp bmcgc2V0dGluZyBtYXRjaGVzIHRoZSByZXBhY2tpbmcKLSsJICAgICMgYmVoYXZpb3VyIHdlIGdv dCBmcm9tIHRoZSBjb21waWxlci4KLSsJICAgIGlmIHsgKCRhZGRyX2luX3Nob3cgPCAkc3RhcnRf YWRkciB8fCAkYWRkcl9pbl9zaG93ID49ICRlbmRfYWRkcikgXAotKwkJID09ICgkcmVwYWNrID09 ICJvbiIpIH0gewotKwkJZ2RiX2Fzc2VydCB7JHNpemVfaW5fc2hvdyA9PSAkc2l6ZV9pbl9wYXJl bnR9IFwKLSsJCSAgICAiY2hlY2sgc2l6ZXMgbWF0Y2giCi0rCSAgICB9IGVsc2VpZiB7ICRyZXBh Y2sgPT0gIm9mZiIgfSB7Ci0rCQkjIEdEQidzIHJlcGFja2luZyBpcyBvZmYgKHNvIHNsaWNlcyBh cmUgbGVmdCB1bnBhY2tlZCksIGJ1dAotKwkJIyB0aGUgY29tcGlsZXIgZGlkIHBhY2sgdGhpcyBv bmUuICBBcyBhIHJlc3VsdCB3ZSBjYW4ndAotKwkJIyBjb21wYXJlIHRoZSBzaXplcyBiZXR3ZWVu IHRoZSBjb21waWxlcidzIHNsaWNlIGFuZCBHREIncwotKwkJIyBzbGljZS4KLSsJCXZlcmJvc2Ug LWxvZyAic2xpY2UgJyRhcnJheV9zbGljZV9uYW1lJyB3YXMgcmVwYWNrZWQsIHNpemVzIGNhbid0 IGJlIGNvbXBhcmVkIgotKwkgICAgfSBlbHNlIHsKLSsJCSMgTGlrZSB0aGUgYWJvdmUsIGJ1dCB0 aGUgcmV2ZXJzZSwgR0RCJ3MgcmVwYWNraW5nIGlzIG9uLCBidXQKLSsJCSMgdGhlIGNvbXBpbGVy IGRpZG4ndCByZXBhY2sgdGhpcyBzbGljZS4KLSsJCXZlcmJvc2UgLWxvZyAic2xpY2UgJyRhcnJh eV9zbGljZV9uYW1lJyB3YXMgbm90IHJlcGFja2VkLCBzaXplcyBjYW4ndCBiZSBjb21wYXJlZCIK LSsJICAgIH0KLSsKLSsJICAgICMgSWYgdGhlIGFycmF5IG5hbWUgd2UganVzdCB0ZXN0ZWQgaW5j bHVkZWQgdmFyaWFibGUgbmFtZXMsIHRoZW4KLSsJICAgICMgdGVzdCBhZ2FpbiB3aXRoIGFsbCB0 aGUgdmFyaWFibGVzIGV4cGFuZGVkLgotKwkgICAgaWYgeyR1bmlxdWVfaWQgIT0gIiJ9IHsKLSsJ CWZvcmVhY2ggdiBbYXJyYXkgbmFtZXMgcmVwbGFjZW1lbnRfdmFyc10gewotKwkJICAgIHNldCB2 YWwgJHJlcGxhY2VtZW50X3ZhcnMoJHYpCi0rCQkgICAgc2V0IGFycmF5X3NsaWNlX25hbWUgXAot KwkJCVtyZWdzdWIgIlxceSR7dn1cXHkiICRhcnJheV9zbGljZV9uYW1lICR2YWxdCi0rCQl9Ci0r CQlnZGJfdGVzdCAicCAkYXJyYXlfc2xpY2VfbmFtZSIgIiRwYXR0ZXJuIiBcCi0rCQkgICAgImNo ZWNrIGFycmF5IHNsaWNlICckYXJyYXlfc2xpY2VfbmFtZSckdW5pcXVlX2lkIGNhbiBiZSBleHRy YWN0ZWQsIHdpdGggdmFyaWFibGVzIGV4cGFuZGVkIgotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsK LSsgICAgIyBFbnN1cmUgd2UgcmVhY2hlZCB0aGUgZmluYWwgYnJlYWtwb2ludC4gIElmIG1vcmUg dGVzdHMgaGF2ZSBiZWVuIGFkZGVkCi0rICAgICMgdG8gdGhlIHRlc3Qgc2NyaXB0LCBhbmQgdGhp cyBzdGFydHMgZmFpbGluZywgdGhlbiB0aGUgc2FmZXR5ICd3aGlsZScKLSsgICAgIyBsb29wIGFi b3ZlIG1pZ2h0IG5lZWQgdG8gYmUgaW5jcmVhc2VkLgotKyAgICBnZGJfYXNzZXJ0IHskZm91bmRf ZmluYWxfYnJlYWtwb2ludH0gInJhbiBhbGwgdGVzdHMiCi0gfQotIAotLWdkYl9icmVha3BvaW50 ICJzaG93IgotLWdkYl9jb250aW51ZV90b19icmVha3BvaW50ICJzaG93IgotLWdkYl90ZXN0ICJ1 cCIgIi4qIgotLWdkYl90ZXN0ICJwIGFycmF5ICgxOjEwOjIsIDE6MTA6MikiIFwKLS0gICAgIkZv cnRyYW4gYXJyYXkgc3RyaWRlcyBhcmUgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQiIFwKLS0gICAg InVzaW5nIGFycmF5IHN0cmlkZSBnaXZlcyBhbiBlcnJvciIKLStmb3JlYWNoX3dpdGhfcHJlZml4 IHJlcGFjayB7IG9uIG9mZiB9IHsKLSsgICAgcnVuX3Rlc3QgJHJlcGFjawotK30KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5mOTAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5mOTAKLS0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmY5MAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9hcnJheS1zbGljZXMuZjkwCi1AQCAtMTMsNTggKzEzLDM2OCBAQAotICEgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSAhIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251 Lm9yZy9saWNlbnNlcy8+LgotIAotLXN1YnJvdXRpbmUgc2hvdyAobWVzc2FnZSwgYXJyYXkpCi0t ICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBtZXNzYWdlCi0rc3Vicm91dGluZSBzaG93X2VsZW0gKGFy cmF5KQotKyAgaW50ZWdlciA6OiBhcnJheQotKwotKyAgcHJpbnQgKiwgIiIKLSsgIHByaW50ICos ICJFeHBlY3RlZCBHREIgT3V0cHV0OiIKLSsgIHByaW50ICosICIiCi0rCi0rICB3cml0ZSgqLCBm bXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIkdEQiA9ICIKLSsgIHdyaXRlKCosIGZtdD0iKEkwKSIs IGFkdmFuY2U9Im5vIikgYXJyYXkKLSsgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ieWVz IikgIiIKLSsKLSsgIHByaW50ICosICIiCSEgRGlzcGxheSBFbGVtZW50Ci0rZW5kIHN1YnJvdXRp bmUgc2hvd19lbGVtCi0rCi0rc3Vicm91dGluZSBzaG93X3N0ciAoYXJyYXkpCi0rICBjaGFyYWN0 ZXIgKGxlbj0qKSA6OiBhcnJheQotKwotKyAgcHJpbnQgKiwgIiIKLSsgIHByaW50ICosICJFeHBl Y3RlZCBHREIgT3V0cHV0OiIKLSsgIHByaW50ICosICIiCi0rICB3cml0ZSAoKiwgZm10PSIoQSki LCBhZHZhbmNlPSJubyIpICJHREIgPSAnIgotKyAgd3JpdGUgKCosIGZtdD0iKEEpIiwgYWR2YW5j ZT0ibm8iKSBhcnJheQotKyAgd3JpdGUgKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ieWVzIikgIici Ci0rCi0rICBwcmludCAqLCAiIgkhIERpc3BsYXkgU3RyaW5nCi0rZW5kIHN1YnJvdXRpbmUgc2hv d19zdHIKLSsKLStzdWJyb3V0aW5lIHNob3dfMWQgKGFycmF5KQotKyAgaW50ZWdlciwgZGltZW5z aW9uICg6KSA6OiBhcnJheQotKwotKyAgcHJpbnQgKiwgIkFycmF5IENvbnRlbnRzOiIKLSsgIHBy aW50ICosICIiCi0rCi0rICBkbyBpPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFycmF5LCAx KSwgMQotKyAgICAgd3JpdGUoKiwgZm10PSIoaTQpIiwgYWR2YW5jZT0ibm8iKSBhcnJheSAoaSkK LSsgIGVuZCBkbwotKwotKyAgcHJpbnQgKiwgIiIKLSsgIHByaW50ICosICJFeHBlY3RlZCBHREIg T3V0cHV0OiIKLSsgIHByaW50ICosICIiCi0rCi0rICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFu Y2U9Im5vIikgIkdEQiA9ICgiCi0rICBkbyBpPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFy cmF5LCAxKSwgMQotKyAgICAgaWYgKGkgPiBMQk9VTkQgKGFycmF5LCAxKSkgdGhlbgotKyAgICAg ICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIsICIKLSsgICAgIGVuZCBpZgot KyAgICAgd3JpdGUoKiwgZm10PSIoSTApIiwgYWR2YW5jZT0ibm8iKSBhcnJheSAoaSkKLSsgIGVu ZCBkbwotKyAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIpIgotKwotKyAgcHJp bnQgKiwgIiIJISBEaXNwbGF5IEFycmF5IFNsaWNlIDFECi0rZW5kIHN1YnJvdXRpbmUgc2hvd18x ZAotKwotK3N1YnJvdXRpbmUgc2hvd18yZCAoYXJyYXkpCi0gICBpbnRlZ2VyLCBkaW1lbnNpb24g KDosOikgOjogYXJyYXkKLSAKLS0gIHByaW50ICosIG1lc3NhZ2UKLSsgIHByaW50ICosICJBcnJh eSBDb250ZW50czoiCi0rICBwcmludCAqLCAiIgotKwotICAgZG8gaT1MQk9VTkQgKGFycmF5LCAy KSwgVUJPVU5EIChhcnJheSwgMiksIDEKLSAgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMSksIFVC T1VORCAoYXJyYXksIDEpLCAxCi0gICAgICAgICB3cml0ZSgqLCBmbXQ9IihpNCkiLCBhZHZhbmNl PSJubyIpIGFycmF5IChqLCBpKQotICAgICAgZW5kIGRvCi0gICAgICBwcmludCAqLCAiIgotLSBl bmQgZG8KLS0gcHJpbnQgKiwgYXJyYXkKLS0gcHJpbnQgKiwgIiIKLSsgIGVuZCBkbwotIAotLWVu ZCBzdWJyb3V0aW5lIHNob3cKLSsgIHByaW50ICosICIiCi0rICBwcmludCAqLCAiRXhwZWN0ZWQg R0RCIE91dHB1dDoiCi0rICBwcmludCAqLCAiIgotIAotLXByb2dyYW0gdGVzdAotKyAgd3JpdGUo KiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICJHREIgPSAoIgotKyAgZG8gaT1MQk9VTkQgKGFy cmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLSsgICAgIGlmIChpID4gTEJPVU5EIChhcnJh eSwgMikpIHRoZW4KLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAi ICIKLSsgICAgIGVuZCBpZgotKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIp ICIoIgotKyAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEK LSsgICAgICAgIGlmIChqID4gTEJPVU5EIChhcnJheSwgMSkpIHRoZW4KLSsgICAgICAgICAgIHdy aXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiLCAiCi0rICAgICAgICBlbmQgaWYKLSsg ICAgICAgIHdyaXRlKCosIGZtdD0iKEkwKSIsIGFkdmFuY2U9Im5vIikgYXJyYXkgKGosIGkpCi0r ICAgICBlbmQgZG8KLSsgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKSIK LSsgIGVuZCBkbwotKyAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJ5ZXMiKSAiKSIKLSsK LSsgIHByaW50ICosICIiCSEgRGlzcGxheSBBcnJheSBTbGljZSAyRAotK2VuZCBzdWJyb3V0aW5l IHNob3dfMmQKLSsKLStzdWJyb3V0aW5lIHNob3dfM2QgKGFycmF5KQotKyAgaW50ZWdlciwgZGlt ZW5zaW9uICg6LDosOikgOjogYXJyYXkKLSsKLSsgIHByaW50ICosICIiCi0rICBwcmludCAqLCAi RXhwZWN0ZWQgR0RCIE91dHB1dDoiCi0rICBwcmludCAqLCAiIgotKwotKyAgd3JpdGUoKiwgZm10 PSIoQSkiLCBhZHZhbmNlPSJubyIpICJHREIgPSAoIgotKyAgZG8gaT1MQk9VTkQgKGFycmF5LCAz KSwgVUJPVU5EIChhcnJheSwgMyksIDEKLSsgICAgIGlmIChpID4gTEJPVU5EIChhcnJheSwgMykp IHRoZW4KLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiICIKLSsg ICAgIGVuZCBpZgotKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIoIgot KyAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLSsgICAg ICAgIGlmIChqID4gTEJPVU5EIChhcnJheSwgMikpIHRoZW4KLSsgICAgICAgICAgIHdyaXRlKCos IGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiICIKLSsgICAgICAgIGVuZCBpZgotKyAgICAgICAg d3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIoIgotKyAgICAgICAgZG8gaz1MQk9V TkQgKGFycmF5LCAxKSwgVUJPVU5EIChhcnJheSwgMSksIDEKLSsgICAgICAgICAgIGlmIChrID4g TEJPVU5EIChhcnJheSwgMSkpIHRoZW4KLSsgICAgICAgICAgICAgIHdyaXRlKCosIGZtdD0iKEEp IiwgYWR2YW5jZT0ibm8iKSAiLCAiCi0rICAgICAgICAgICBlbmQgaWYKLSsgICAgICAgICAgIHdy aXRlKCosIGZtdD0iKEkwKSIsIGFkdmFuY2U9Im5vIikgYXJyYXkgKGssIGosIGkpCi0rICAgICAg ICBlbmQgZG8KLSsgICAgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKSIK LSsgICAgIGVuZCBkbwotKyAgICAgd3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIp IgotKyAgZW5kIGRvCi0rICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9InllcyIpICIpIgot KwotKyAgcHJpbnQgKiwgIiIJISBEaXNwbGF5IEFycmF5IFNsaWNlIDNECi0rZW5kIHN1YnJvdXRp bmUgc2hvd18zZAotKwotK3N1YnJvdXRpbmUgc2hvd180ZCAoYXJyYXkpCi0rICBpbnRlZ2VyLCBk aW1lbnNpb24gKDosOiw6LDopIDo6IGFycmF5Ci0rCi0rICBwcmludCAqLCAiIgotKyAgcHJpbnQg KiwgIkV4cGVjdGVkIEdEQiBPdXRwdXQ6IgotKyAgcHJpbnQgKiwgIiIKLSsKLSsgIHdyaXRlKCos IGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiR0RCID0gKCIKLSsgIGRvIGk9TEJPVU5EIChhcnJh eSwgNCksIFVCT1VORCAoYXJyYXksIDQpLCAxCi0rICAgICBpZiAoaSA+IExCT1VORCAoYXJyYXks IDQpKSB0aGVuCi0rICAgICAgICB3cml0ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiAi Ci0rICAgICBlbmQgaWYKLSsgICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAi KCIKLSsgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMyksIFVCT1VORCAoYXJyYXksIDMpLCAxCi0r ICAgICAgICBpZiAoaiA+IExCT1VORCAoYXJyYXksIDMpKSB0aGVuCi0rICAgICAgICAgICB3cml0 ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiAiCi0rICAgICAgICBlbmQgaWYKLSsgICAg ICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKCIKLSsKLSsgICAgICAgIGRv IGs9TEJPVU5EIChhcnJheSwgMiksIFVCT1VORCAoYXJyYXksIDIpLCAxCi0rICAgICAgICAgICBp ZiAoayA+IExCT1VORCAoYXJyYXksIDIpKSB0aGVuCi0rICAgICAgICAgICAgICB3cml0ZSgqLCBm bXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiAiCi0rICAgICAgICAgICBlbmQgaWYKLSsgICAgICAg ICAgIHdyaXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKCIKLSsgICAgICAgICAgIGRv IGw9TEJPVU5EIChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAxCi0rICAgICAgICAgICAg ICBpZiAobCA+IExCT1VORCAoYXJyYXksIDEpKSB0aGVuCi0rICAgICAgICAgICAgICAgICB3cml0 ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIiwgIgotKyAgICAgICAgICAgICAgZW5kIGlm Ci0rICAgICAgICAgICAgICB3cml0ZSgqLCBmbXQ9IihJMCkiLCBhZHZhbmNlPSJubyIpIGFycmF5 IChsLCBrLCBqLCBpKQotKyAgICAgICAgICAgZW5kIGRvCi0rICAgICAgICAgICB3cml0ZSgqLCBm bXQ9IihBKSIsIGFkdmFuY2U9Im5vIikgIikiCi0rICAgICAgICBlbmQgZG8KLSsgICAgICAgIHdy aXRlKCosIGZtdD0iKEEpIiwgYWR2YW5jZT0ibm8iKSAiKSIKLSsgICAgIGVuZCBkbwotKyAgICAg d3JpdGUoKiwgZm10PSIoQSkiLCBhZHZhbmNlPSJubyIpICIpIgotKyAgZW5kIGRvCi0rICB3cml0 ZSgqLCBmbXQ9IihBKSIsIGFkdmFuY2U9InllcyIpICIpIgotKwotKyAgcHJpbnQgKiwgIiIJISBE aXNwbGF5IEFycmF5IFNsaWNlIDRECi0rZW5kIHN1YnJvdXRpbmUgc2hvd180ZAotIAotKyEKLSsh IFN0YXJ0IG9mIHRlc3QgcHJvZ3JhbS4KLSshCi0rcHJvZ3JhbSB0ZXN0Ci0gICBpbnRlcmZhY2UK LS0gICAgIHN1YnJvdXRpbmUgc2hvdyAobWVzc2FnZSwgYXJyYXkpCi0tICAgICAgIGNoYXJhY3Rl ciAobGVuPSopIDo6IG1lc3NhZ2UKLSsgICAgIHN1YnJvdXRpbmUgc2hvd19zdHIgKGFycmF5KQot KyAgICAgICBjaGFyYWN0ZXIgKGxlbj0qKSA6OiBhcnJheQotKyAgICAgZW5kIHN1YnJvdXRpbmUg c2hvd19zdHIKLSsKLSsgICAgIHN1YnJvdXRpbmUgc2hvd18xZCAoYXJyYXkpCi0rICAgICAgIGlu dGVnZXIsIGRpbWVuc2lvbiAoOikgOjogYXJyYXkKLSsgICAgIGVuZCBzdWJyb3V0aW5lIHNob3df MWQKLSsKLSsgICAgIHN1YnJvdXRpbmUgc2hvd18yZCAoYXJyYXkpCi0gICAgICAgIGludGVnZXIs IGRpbWVuc2lvbig6LDopIDo6IGFycmF5Ci0tICAgICBlbmQgc3Vicm91dGluZSBzaG93Ci0rICAg ICBlbmQgc3Vicm91dGluZSBzaG93XzJkCi0rCi0rICAgICBzdWJyb3V0aW5lIHNob3dfM2QgKGFy cmF5KQotKyAgICAgICBpbnRlZ2VyLCBkaW1lbnNpb24oOiw6LDopIDo6IGFycmF5Ci0rICAgICBl bmQgc3Vicm91dGluZSBzaG93XzNkCi0rCi0rICAgICBzdWJyb3V0aW5lIHNob3dfNGQgKGFycmF5 KQotKyAgICAgICBpbnRlZ2VyLCBkaW1lbnNpb24oOiw6LDosOikgOjogYXJyYXkKLSsgICAgIGVu ZCBzdWJyb3V0aW5lIHNob3dfNGQKLSAgIGVuZCBpbnRlcmZhY2UKLSAKLSsgICEgRGVjbGFyZSB2 YXJpYWJsZXMgdXNlZCBpbiB0aGlzIHRlc3QuCi0rICBpbnRlZ2VyLCBkaW1lbnNpb24gKC0xMDot MSwtMTA6LTIpIDo6IG5lZ19hcnJheQotICAgaW50ZWdlciwgZGltZW5zaW9uICgxOjEwLDE6MTAp IDo6IGFycmF5Ci0gICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBvdGhlciAoOiwgOikKLSsgIGNo YXJhY3RlciAobGVuPTI2KSA6OiBzdHJfMSA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIK LSsgIGludGVnZXIsIGRpbWVuc2lvbiAoLTI6MiwtMjoyLC0yOjIpIDo6IGFycmF5M2QKLSsgIGlu dGVnZXIsIGRpbWVuc2lvbiAoLTM6Myw3OjEwLC0zOjMsLTEwOi03KSA6OiBhcnJheTRkCi0rICBp bnRlZ2VyLCBkaW1lbnNpb24gKDEwOjIwKSA6OiBhcnJheTFkCi0rICBpbnRlZ2VyLCBkaW1lbnNp b24oOiw6KSwgcG9pbnRlciA6OiBwb2ludGVyMmQgPT4gbnVsbCgpCi0rICBpbnRlZ2VyLCBkaW1l bnNpb24oLTE6OSwtMTo5KSwgdGFyZ2V0IDo6IHRhcnJheQotIAotKyAgISBBbGxvY2F0ZSBvciBh c3NvY2lhdGUgYW55IHZhcmlhYmxlcyBhcyBuZWVkZWQuCi0gICBhbGxvY2F0ZSAob3RoZXIgKC01 OjQsIC0yOjcpKQotKyAgcG9pbnRlcjJkID0+IHRhcnJheQotIAotLSAgZG8gaT1MQk9VTkQgKGFy cmF5LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLS0gICAgIGRvIGo9TEJPVU5EIChhcnJheSwg MSksIFVCT1VORCAoYXJyYXksIDEpLCAxCi0tICAgICAgICBhcnJheSAoaixpKSA9ICgoaSAtIDEp ICogVUJPVU5EIChhcnJheSwgMikpICsgagotLSAgICAgZW5kIGRvCi0tICBlbmQgZG8KLSsgICEg RmlsbCBhcnJheXMgd2l0aCBjb250ZW50cyByZWFkeSBmb3IgdGVzdGluZy4KLSsgIGNhbGwgZmls bF9hcnJheV8xZCAoYXJyYXkxZCkKLSsKLSsgIGNhbGwgZmlsbF9hcnJheV8yZCAobmVnX2FycmF5 KQotKyAgY2FsbCBmaWxsX2FycmF5XzJkIChhcnJheSkKLSsgIGNhbGwgZmlsbF9hcnJheV8yZCAo b3RoZXIpCi0rICBjYWxsIGZpbGxfYXJyYXlfMmQgKHRhcnJheSkKLSsKLSsgIGNhbGwgZmlsbF9h cnJheV8zZCAoYXJyYXkzZCkKLSsgIGNhbGwgZmlsbF9hcnJheV80ZCAoYXJyYXk0ZCkKLSsKLSsg ICEgVGhlIHRlc3RzLiAgRWFjaCBjYWxsIHRvIGEgc2hvd18qIGZ1bmN0aW9uIG11c3QgaGF2ZSBh IHVuaXF1ZSBzZXQKLSsgICEgb2YgYXJndW1lbnRzIGFzIEdEQiB1c2VzIHRoZSBhcmd1bWVudHMg YXJlIHBhcnQgb2YgdGhlIHRlc3QgbmFtZQotKyAgISBzdHJpbmcsIHNvIGR1cGxpY2F0ZSBhcmd1 bWVudHMgd2lsbCByZXN1bHQgaW4gZHVwbGljYXRlIHRlc3QKLSsgICEgbmFtZXMuCi0rICAhCi0r ICAhIElmIGEgc2hvd18qIGxpbmUgZW5kcyB3aXRoIFZBUlM9Li4uIHdoZXJlICcuLi4nIGlzIGEg Y29tbWEKLSsgICEgc2VwYXJhdGVkIGxpc3Qgb2YgdmFyaWFibGUgbmFtZXMsIHRoZXNlIHZhcmlh YmxlcyBhcmUgYXNzdW1lZCB0bwotKyAgISBiZSBwYXJ0IG9mIHRoZSBjYWxsIGxpbmUsIGFuZCB3 aWxsIGJlIGV4cGFuZGVkIGJ5IHRoZSB0ZXN0IHNjcmlwdCwKLSsgICEgZm9yIGV4YW1wbGU6Ci0r ICAhCi0rICAhICAgICBkbyB4PTEsOSwxCi0rICAhICAgICAgIGRvIHk9eCwxMCwxCi0rICAhICAg ICAgICAgY2FsbCBzaG93XzFkIChzb21lX2FycmF5ICh4LHkpKQkhIFZBUlM9eCx5Ci0rICAhICAg ICAgIGVuZCBkbwotKyAgISAgICAgZW5kIGRvCi0rICAhCi0rICAhIEluIHRoaXMgZXhhbXBsZSB0 aGUgdGVzdCBzY3JpcHQgd2lsbCBhdXRvbWF0aWNhbGx5IGV4cGFuZCAneCcgYW5kCi0rICAhICd5 JyBpbiBvcmRlciB0byBiZXR0ZXIgdGVzdCBkaWZmZXJlbnQgYXNwZWN0cyBvZiBHREIuICBEbyB0 YWtlCi0rICAhIGNhcmUsIHRoZSBleHBhbnNpb24gaXMgbm90IHZlcnkgInNtYXJ0Iiwgc28gdHJ5 IHRvIGF2b2lkIGNsYXNoaW5nCi0rICAhIHdpdGggb3RoZXIgdGV4dCBvbiB0aGUgbGluZSwgaW4g dGhlIGV4YW1wbGUgYWJvdmUsIGF2b2lkIHZhcmlhYmxlcwotKyAgISBuYW1lZCAnc29tZScgb3Ig J2FycmF5JywgYXMgdGhlc2Ugd2lsbCBsaWtlbHkgY2xhc2ggd2l0aAotKyAgISAnc29tZV9hcnJh eScuCi0rICBjYWxsIHNob3dfc3RyIChzdHJfMSkKLSsgIGNhbGwgc2hvd19zdHIgKHN0cl8xICgx OjIwKSkKLSsgIGNhbGwgc2hvd19zdHIgKHN0cl8xICgxMDoyMCkpCi0gCi0tICBkbyBpPUxCT1VO RCAob3RoZXIsIDIpLCBVQk9VTkQgKG90aGVyLCAyKSwgMQotLSAgICAgZG8gaj1MQk9VTkQgKG90 aGVyLCAxKSwgVUJPVU5EIChvdGhlciwgMSksIDEKLS0gICAgICAgIG90aGVyIChqLGkpID0gKChp IC0gMSkgKiBVQk9VTkQgKG90aGVyLCAyKSkgKyBqCi0rICBjYWxsIHNob3dfZWxlbSAoYXJyYXkx ZCAoMTEpKQotKyAgY2FsbCBzaG93X2VsZW0gKHBvaW50ZXIyZCAoMiwzKSkKLSsKLSsgIGNhbGwg c2hvd18xZCAoYXJyYXkxZCkKLSsgIGNhbGwgc2hvd18xZCAoYXJyYXkxZCAoMTM6MTcpKQotKyAg Y2FsbCBzaG93XzFkIChhcnJheTFkICgxNzoxMzotMSkpCi0rICBjYWxsIHNob3dfMWQgKGFycmF5 ICgxOjUsMSkpCi0rICBjYWxsIHNob3dfMWQgKGFycmF5NGQgKDEsNywzLDopKQotKyAgY2FsbCBz aG93XzFkIChwb2ludGVyMmQgKC0xOjMsIDIpKQotKyAgY2FsbCBzaG93XzFkIChwb2ludGVyMmQg KC0xLCAyOjQpKQotKwotKyAgISBFbmNsb3NpbmcgdGhlIGFycmF5IHNsaWNlIGFyZ3VtZW50IGlu ICguLi4pIGNhdXNlc3MgZ2ZvcnRyYW4gdG8KLSsgICEgcmVwYWNrIHRoZSBhcnJheS4KLSsgIGNh bGwgc2hvd18xZCAoKGFycmF5ICgxOjUsMSkpKQotKwotKyAgY2FsbCBzaG93XzJkIChwb2ludGVy MmQpCi0rICBjYWxsIHNob3dfMmQgKGFycmF5KQotKyAgY2FsbCBzaG93XzJkIChhcnJheSAoMTo1 LDE6NSkpCi0rICBkbyBpPTEsMTAsMgotKyAgICAgZG8gaj0xLDEwLDMKLSsgICAgICAgIGNhbGwg c2hvd18yZCAoYXJyYXkgKDE6MTA6aSwxOjEwOmopKQkhIFZBUlM9aSxqCi0rICAgICAgICBjYWxs IHNob3dfMmQgKGFycmF5ICgxMDoxOi1pLDE6MTA6aikpCSEgVkFSUz1pLGoKLSsgICAgICAgIGNh bGwgc2hvd18yZCAoYXJyYXkgKDEwOjE6LWksMTA6MTotaikpCSEgVkFSUz1pLGoKLSsgICAgICAg IGNhbGwgc2hvd18yZCAoYXJyYXkgKDE6MTA6aSwxMDoxOi1qKSkJISBWQVJTPWksagotICAgICAg ZW5kIGRvCi0gICBlbmQgZG8KLSsgIGNhbGwgc2hvd18yZCAoYXJyYXkgKDY6MjotMSwzOjkpKQot KyAgY2FsbCBzaG93XzJkIChhcnJheSAoMToxMDoyLCAxOjEwOjIpKQotKyAgY2FsbCBzaG93XzJk IChvdGhlcikKLSsgIGNhbGwgc2hvd18yZCAob3RoZXIgKC01OjAsIC0yOjApKQotKyAgY2FsbCBz aG93XzJkIChvdGhlciAoLTU6NDoyLCAtMjo3OjMpKQotKyAgY2FsbCBzaG93XzJkIChuZWdfYXJy YXkpCi0rICBjYWxsIHNob3dfMmQgKG5lZ19hcnJheSAoLTEwOi0zLC04Oi00OjIpKQotKwotKyAg ISBFbmNsb3NpbmcgdGhlIGFycmF5IHNsaWNlIGFyZ3VtZW50IGluICguLi4pIGNhdXNlc3MgZ2Zv cnRyYW4gdG8KLSsgICEgcmVwYWNrIHRoZSBhcnJheS4KLSsgIGNhbGwgc2hvd18yZCAoKGFycmF5 ICgxOjEwOjMsIDE6MTA6MikpKQotKyAgY2FsbCBzaG93XzJkICgobmVnX2FycmF5ICgtMTA6LTMs LTg6LTQ6MikpKQotIAotLSAgY2FsbCBzaG93ICgiYXJyYXkiLCBhcnJheSkKLS0gIGNhbGwgc2hv dyAoImFycmF5ICgxOjUsMTo1KSIsIGFycmF5ICgxOjUsMTo1KSkKLS0gIGNhbGwgc2hvdyAoImFy cmF5ICgxOjEwOjIsMToxMDoyKSIsIGFycmF5ICgxOjEwOjIsMToxMDoyKSkKLS0gIGNhbGwgc2hv dyAoImFycmF5ICgxOjEwOjMsMToxMDoyKSIsIGFycmF5ICgxOjEwOjMsMToxMDoyKSkKLS0gIGNh bGwgc2hvdyAoImFycmF5ICgxOjEwOjUsMToxMDozKSIsIGFycmF5ICgxOjEwOjQsMToxMDozKSkK LSsgIGNhbGwgc2hvd18zZCAoYXJyYXkzZCkKLSsgIGNhbGwgc2hvd18zZCAoYXJyYXkzZCgtMTox LC0xOjEsLTE6MSkpCi0rICBjYWxsIHNob3dfM2QgKGFycmF5M2QoMTotMTotMSwxOi0xOi0xLDE6 LTE6LTEpKQotIAotLSAgY2FsbCBzaG93ICgib3RoZXIiLCBvdGhlcikKLS0gIGNhbGwgc2hvdyAo Im90aGVyICgtNTowLCAtMjowKSIsIG90aGVyICgtNTowLCAtMjowKSkKLS0gIGNhbGwgc2hvdyAo Im90aGVyICgtNTo0OjIsIC0yOjc6MykiLCBvdGhlciAoLTU6NDoyLCAtMjo3OjMpKQotKyAgISBF bmNsb3NpbmcgdGhlIGFycmF5IHNsaWNlIGFyZ3VtZW50IGluICguLi4pIGNhdXNlc3MgZ2ZvcnRy YW4gdG8KLSsgICEgcmVwYWNrIHRoZSBhcnJheS4KLSsgIGNhbGwgc2hvd18zZCAoKGFycmF5M2Qo MTotMTotMSwxOi0xOi0xLDE6LTE6LTEpKSkKLSAKLSsgIGNhbGwgc2hvd180ZCAoYXJyYXk0ZCkK LSsgIGNhbGwgc2hvd180ZCAoYXJyYXk0ZCAoLTM6MCwxMDo3Oi0xLDA6MywtNzotMTA6LTEpKQot KyAgY2FsbCBzaG93XzRkIChhcnJheTRkICgzOjA6LTEsIDEwOjc6LTEsIDosIC03Oi0xMDotMSkp Ci0rCi0rICAhIEVuY2xvc2luZyB0aGUgYXJyYXkgc2xpY2UgYXJndW1lbnQgaW4gKC4uLikgY2F1 c2VzcyBnZm9ydHJhbiB0bwotKyAgISByZXBhY2sgdGhlIGFycmF5LgotKyAgY2FsbCBzaG93XzRk ICgoYXJyYXk0ZCAoMzotMjotMiwgMTA6NzotMiwgOiwgLTc6LTEwOi0xKSkpCi0rCi0rICAhIEFs bCBkb25lLiAgRGVhbGxvY2F0ZS4KLSAgIGRlYWxsb2NhdGUgKG90aGVyKQotKwotKyAgISBHREIg Y2F0Y2hlcyB0aGlzIGZpbmFsIGJyZWFrcG9pbnQgdG8gaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUg dGVzdC4KLSAgIHByaW50ICosICIiICEgRmluYWwgQnJlYWtwb2ludC4KLSsKLStjb250YWlucwot KwotKyAgISBGaWxsIGEgMUQgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2ZSBpbnRlZ2VyIGlu IGVhY2ggZWxlbWVudC4KLSsgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8xZCAoYXJyYXkpCi0rICAg IGludGVnZXIsIGRpbWVuc2lvbiAoOikgOjogYXJyYXkKLSsgICAgaW50ZWdlciA6OiBjb3VudGVy Ci0rCi0rICAgIGNvdW50ZXIgPSAxCi0rICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMSksIFVCT1VO RCAoYXJyYXksIDEpLCAxCi0rICAgICAgIGFycmF5IChqKSA9IGNvdW50ZXIKLSsgICAgICAgY291 bnRlciA9IGNvdW50ZXIgKyAxCi0rICAgIGVuZCBkbwotKyAgZW5kIHN1YnJvdXRpbmUgZmlsbF9h cnJheV8xZAotKwotKyAgISBGaWxsIGEgMkQgYXJyYXkgd2l0aCBhIHVuaXF1ZSBwb3NpdGl2ZSBp bnRlZ2VyIGluIGVhY2ggZWxlbWVudC4KLSsgIHN1YnJvdXRpbmUgZmlsbF9hcnJheV8yZCAoYXJy YXkpCi0rICAgIGludGVnZXIsIGRpbWVuc2lvbiAoOiw6KSA6OiBhcnJheQotKyAgICBpbnRlZ2Vy IDo6IGNvdW50ZXIKLSsKLSsgICAgY291bnRlciA9IDEKLSsgICAgZG8gaT1MQk9VTkQgKGFycmF5 LCAyKSwgVUJPVU5EIChhcnJheSwgMiksIDEKLSsgICAgICAgZG8gaj1MQk9VTkQgKGFycmF5LCAx KSwgVUJPVU5EIChhcnJheSwgMSksIDEKLSsgICAgICAgICAgYXJyYXkgKGosaSkgPSBjb3VudGVy Ci0rICAgICAgICAgIGNvdW50ZXIgPSBjb3VudGVyICsgMQotKyAgICAgICBlbmQgZG8KLSsgICAg ZW5kIGRvCi0rICBlbmQgc3Vicm91dGluZSBmaWxsX2FycmF5XzJkCi0rCi0rICAhIEZpbGwgYSAz RCBhcnJheSB3aXRoIGEgdW5pcXVlIHBvc2l0aXZlIGludGVnZXIgaW4gZWFjaCBlbGVtZW50Lgot KyAgc3Vicm91dGluZSBmaWxsX2FycmF5XzNkIChhcnJheSkKLSsgICAgaW50ZWdlciwgZGltZW5z aW9uICg6LDosOikgOjogYXJyYXkKLSsgICAgaW50ZWdlciA6OiBjb3VudGVyCi0rCi0rICAgIGNv dW50ZXIgPSAxCi0rICAgIGRvIGk9TEJPVU5EIChhcnJheSwgMyksIFVCT1VORCAoYXJyYXksIDMp LCAxCi0rICAgICAgIGRvIGo9TEJPVU5EIChhcnJheSwgMiksIFVCT1VORCAoYXJyYXksIDIpLCAx Ci0rICAgICAgICAgIGRvIGs9TEJPVU5EIChhcnJheSwgMSksIFVCT1VORCAoYXJyYXksIDEpLCAx Ci0rICAgICAgICAgICAgIGFycmF5IChrLCBqLGkpID0gY291bnRlcgotKyAgICAgICAgICAgICBj b3VudGVyID0gY291bnRlciArIDEKLSsgICAgICAgICAgZW5kIGRvCi0rICAgICAgIGVuZCBkbwot KyAgICBlbmQgZG8KLSsgIGVuZCBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfM2QKLSsKLSsgICEgRmls bCBhIDREIGFycmF5IHdpdGggYSB1bmlxdWUgcG9zaXRpdmUgaW50ZWdlciBpbiBlYWNoIGVsZW1l bnQuCi0rICBzdWJyb3V0aW5lIGZpbGxfYXJyYXlfNGQgKGFycmF5KQotKyAgICBpbnRlZ2VyLCBk aW1lbnNpb24gKDosOiw6LDopIDo6IGFycmF5Ci0rICAgIGludGVnZXIgOjogY291bnRlcgotKwot KyAgICBjb3VudGVyID0gMQotKyAgICBkbyBpPUxCT1VORCAoYXJyYXksIDQpLCBVQk9VTkQgKGFy cmF5LCA0KSwgMQotKyAgICAgICBkbyBqPUxCT1VORCAoYXJyYXksIDMpLCBVQk9VTkQgKGFycmF5 LCAzKSwgMQotKyAgICAgICAgICBkbyBrPUxCT1VORCAoYXJyYXksIDIpLCBVQk9VTkQgKGFycmF5 LCAyKSwgMQotKyAgICAgICAgICAgICBkbyBsPUxCT1VORCAoYXJyYXksIDEpLCBVQk9VTkQgKGFy cmF5LCAxKSwgMQotKyAgICAgICAgICAgICAgICBhcnJheSAobCwgaywgaixpKSA9IGNvdW50ZXIK LSsgICAgICAgICAgICAgICAgY291bnRlciA9IGNvdW50ZXIgKyAxCi0rICAgICAgICAgICAgIGVu ZCBkbwotKyAgICAgICAgICBlbmQgZG8KLSsgICAgICAgZW5kIGRvCi0rICAgIGVuZCBkbwotKyAg ICBwcmludCAqLCAiIgotKyAgZW5kIHN1YnJvdXRpbmUgZmlsbF9hcnJheV80ZAotIGVuZCBwcm9n cmFtIHRlc3QKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS1zaXpl b2YuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAotLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAotKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi92bGEtc2l6ZW9mLmV4cAotQEAgLTQ0LDcgKzQ0LDcgQEAgZ2RiX2Nv bnRpbnVlX3RvX2JyZWFrcG9pbnQgInZsYTEtYWxsb2NhdGVkIgotIGdkYl90ZXN0ICJwcmludCBz aXplb2YodmxhMSkiICIgPSA0MDAwIiAicHJpbnQgc2l6ZW9mIGFsbG9jYXRlZCB2bGExIgotIGdk Yl90ZXN0ICJwcmludCBzaXplb2YodmxhMSgzLDIsMSkpIiAiNCIgXAotICAgICAicHJpbnQgc2l6 ZW9mIGVsZW1lbnQgZnJvbSBhbGxvY2F0ZWQgdmxhMSIKLS1nZGJfdGVzdCAicHJpbnQgc2l6ZW9m KHZsYTEoMzo0LDIsMSkpIiAiODAwIiBcCi0rZ2RiX3Rlc3QgInByaW50IHNpemVvZih2bGExKDM6 NCwyLDEpKSIgIjgiIFwKLSAgICAgInByaW50IHNpemVvZiBzbGljZWQgdmxhMSIKLSAKLSAjIFRy eSB0byBhY2Nlc3MgdmFsdWVzIGluIHVuZGVmaW5lZCBwb2ludGVyIHRvIFZMQSAoZGFuZ2xpbmcp Ci1AQCAtNjEsNyArNjEsNyBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAicHZsYS1hc3Nv Y2lhdGVkIgotIGdkYl90ZXN0ICJwcmludCBzaXplb2YocHZsYSkiICIgPSA0MDAwIiAicHJpbnQg c2l6ZW9mIGFzc29jaWF0ZWQgcHZsYSIKLSBnZGJfdGVzdCAicHJpbnQgc2l6ZW9mKHB2bGEoMywy LDEpKSIgIjQiIFwKLSAgICAgInByaW50IHNpemVvZiBlbGVtZW50IGZyb20gYXNzb2NpYXRlZCBw dmxhIgotLWdkYl90ZXN0ICJwcmludCBzaXplb2YocHZsYSgzOjQsMiwxKSkiICI4MDAiICJwcmlu dCBzaXplb2Ygc2xpY2VkIHB2bGEiCi0rZ2RiX3Rlc3QgInByaW50IHNpemVvZihwdmxhKDM6NCwy LDEpKSIgIjgiICJwcmludCBzaXplb2Ygc2xpY2VkIHB2bGEiCi0gCi0gZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgInZsYTEtbmVnLWJvdW5kcy12MSJdCi0gZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgInZsYTEtbmVnLWJvdW5kcy12MSIKCmRpZmYgLS1naXQgYS9nZGItcmhi ejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoIGIvZ2Ri LXJoYnoxOTY0MTY3LWZvcnRyYW4tYXJyYXktc3RyaWRlcy1pbi1leHByZXNzaW9ucy5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzIzZWMzNC4uMDAwMDAwMAotLS0gYS9nZGIt cmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5j b20+Ci1EYXRlOiBNb24sIDI0IE1heSAyMDIxIDIyOjMwOjMyIC0wNzAwCi1TdWJqZWN0OiBnZGIt cmhiejE5NjQxNjctZm9ydHJhbi1hcnJheS1zdHJpZGVzLWluLWV4cHJlc3Npb25zLnBhdGNoCi0K LTs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCBhZGRz IHN1cHBvcnQKLTs7IGZvciBhcnJheSBzdHJpZGVzIGluIGV4cHJlc3Npb25zLgotCi1nZGIvZm9y dHJhbjogYWRkIHN1cHBvcnQgZm9yIHBhcnNpbmcgYXJyYXkgc3RyaWRlcyBpbiBleHByZXNzaW9u cwotCi1XaXRoIHRoaXMgY29tbWl0IEdEQiBub3cgdW5kZXJzdGFuZHMgdGhlIHN5bnRheCBvZiBG b3J0cmFuIGFycmF5Ci1zdHJpZGVzLCBhIHVzZXIgY2FuIHR5cGUgYW4gZXhwcmVzc2lvbiBpbmNs dWRpbmcgYW4gYXJyYXkgc3RyaWRlLCBidXQKLXRoZXkgd2lsbCBvbmx5IGdldCBhbiBlcnJvciBp bmZvcm1pbmcgdGhlbSB0aGF0IGFycmF5IHN0cmlkZXMgYXJlIG5vdAotc3VwcG9ydGVkLgotCi1U aGlzIGFsb25lIGlzIGFuIGltcHJvdmVtZW50IG9uIHdoYXQgd2UgaGFkIGJlZm9yZSBpbiBHREIs IGJldHRlciB0bwotZ2l2ZSB0aGUgdXNlciBhIGhlbHBmdWwgbWVzc2FnZSB0aGF0IGEgcGFydGlj dWxhciBmZWF0dXJlIGlzIG5vdAotc3VwcG9ydGVkIHRoYW4gdG8ganVzdCBjbGFpbSBhIHN5bnRh eCBlcnJvci4KLQotQmVmb3JlOgotCi0gIChnZGIpIHAgYXJyYXkgKDE6MTA6MiwgMjoxMDoyKQot ICBBIHN5bnRheCBlcnJvciBpbiBleHByZXNzaW9uLCBuZWFyIGA6MiwgMjoxMDoyKScuCi0KLU5v dzoKLQotICAoZ2RiKSBwIGFycmF5ICgxOjEwOjIsIDI6MTA6MikKLSAgRm9ydHJhbiBhcnJheSBz dHJpZGVzIGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZAotCi1MYXRlciBjb21taXRzIHdpbGwg YWxsb3cgR0RCIHRvIGhhbmRsZSBhcnJheSBzdHJpZGVzIGNvcnJlY3RseS4KLQotZ2RiL0NoYW5n ZUxvZzoKLQotCSogZXhwcHJpbnQuYyAoZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCk6IFByaW50 IFJBTkdFX0hBU19TVFJJREUuCi0JKiBleHByZXNzaW9uLmggKGVudW0gcmFuZ2VfdHlwZSk6IEFk ZCBSQU5HRV9IQVNfU1RSSURFLgotCSogZi1leHAueSAoYXJnbGlzdCk6IEFsbG93IGZvciBhIHNl cmllcyBvZiBzdWJyYW5nZXMuCi0JKHN1YnJhbmdlKTogQWRkIGNhc2VzIGZvciBzdWJyYW5nZXMg d2l0aCBzdHJpZGVzLgotCSogZi1sYW5nLmMgKHZhbHVlX2Y5MF9zdWJhcnJheSk6IENhdGNoIHVz ZSBvZiBhcnJheSBzdHJpZGVzIGFuZAotCXRocm93IGFuIGVycm9yLgotCSogcGFyc2UuYyAob3Bl cmF0b3JfbGVuZ3RoX3N0YW5kYXJkKTogSGFuZGxlIFJBTkdFX0hBU19TVFJJREUuCi0KLWdkYi90 ZXN0c3VpdGUvQ2hhbmdlTG9nOgotCi0JKiBnZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwOiBB ZGQgYSBuZXcgdGVzdC4KLQotZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5jIGIvZ2RiL2V4cHBy aW50LmMKLS0tLSBhL2dkYi9leHBwcmludC5jCi0rKysgYi9nZGIvZXhwcHJpbnQuYwotQEAgLTEx MTgsMTIgKzExMTgsMTYgQEAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwKLSAJZnB1dHNfZmlsdGVyZWQgKCIuLiIsIHN0cmVhbSk7Ci0gCWlmICghKHJh bmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotIAkgIGZwdXRzX2ZpbHRlcmVk ICgiRVhQIiwgc3RyZWFtKTsKLSsJaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9IQVNfU1RSSURFKQot KwkgIGZwdXRzX2ZpbHRlcmVkICgiOkVYUCIsIHN0cmVhbSk7Ci0gCWZwdXRzX2ZpbHRlcmVkICgi JyIsIHN0cmVhbSk7Ci0gCi0gCWlmICghKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVG QVVMVCkpCi0gCSAgZWx0ID0gZHVtcF9zdWJleHAgKGV4cCwgc3RyZWFtLCBlbHQpOwotIAlpZiAo IShyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKLSAJICBlbHQgPSBkdW1w X3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0rCWlmIChyYW5nZV9mbGFnICYgUkFOR0VfSEFT X1NUUklERSkKLSsJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0gICAg ICAgfQotICAgICAgIGJyZWFrOwotIAotZGlmZiAtLWdpdCBhL2dkYi9leHByZXNzaW9uLmggYi9n ZGIvZXhwcmVzc2lvbi5oCi0tLS0gYS9nZGIvZXhwcmVzc2lvbi5oCi0rKysgYi9nZGIvZXhwcmVz c2lvbi5oCi1AQCAtMTk5LDYgKzE5OSw5IEBAIGVudW0gcmFuZ2VfZmxhZyA6IHVuc2lnbmVkCi0g Ci0gICAvKiBUaGUgaGlnaCBib3VuZCBvZiB0aGlzIHJhbmdlIGlzIGV4Y2x1c2l2ZS4gICovCi0g ICBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSA9IDEgPDwgMiwKLSsKLSsgIC8qIFRoZSByYW5n ZSBoYXMgYSBzdHJpZGUuICAqLwotKyAgUkFOR0VfSEFTX1NUUklERSA9IDEgPDwgMywKLSB9Owot IAotIERFRl9FTlVNX0ZMQUdTX1RZUEUgKGVudW0gcmFuZ2VfZmxhZywgcmFuZ2VfZmxhZ3MpOwot ZGlmZiAtLWdpdCBhL2dkYi9mLWV4cC55IGIvZ2RiL2YtZXhwLnkKLS0tLSBhL2dkYi9mLWV4cC55 Ci0rKysgYi9nZGIvZi1leHAueQotQEAgLTI4NCw2ICsyODQsMTAgQEAgYXJnbGlzdAk6CWFyZ2xp c3QgJywnIGV4cCAgICVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJeyBwc3RhdGUtPmFyZ2xpc3RfbGVu Kys7IH0KLSAJOwotIAotK2FyZ2xpc3QJOglhcmdsaXN0ICcsJyBzdWJyYW5nZSAgICVwcmVjIEFC T1ZFX0NPTU1BCi0rCQkJeyBwc3RhdGUtPmFyZ2xpc3RfbGVuKys7IH0KLSsJOwotKwotIC8qIFRo ZXJlIGFyZSBmb3VyIHNvcnRzIG9mIHN1YnJhbmdlIHR5cGVzIGluIEY5MC4gICovCi0gCi0gc3Vi cmFuZ2U6CWV4cCAnOicgZXhwCSVwcmVjIEFCT1ZFX0NPTU1BCi1AQCAtMzE0LDYgKzMxOCwzOCBA QCBzdWJyYW5nZToJJzonCSVwcmVjIEFCT1ZFX0NPTU1BCi0gCQkJICB3cml0ZV9leHBfZWx0X29w Y29kZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSAJOwotIAotKy8qIEFuZCBlYWNoIG9mIHRoZSBm b3VyIHN1YnJhbmdlIHR5cGVzIGNhbiBhbHNvIGhhdmUgYSBzdHJpZGUuICAqLwotK3N1YnJhbmdl OglleHAgJzonIGV4cCAnOicgZXhwCSVwcmVjIEFCT1ZFX0NPTU1BCi0rCQkJeyB3cml0ZV9leHBf ZWx0X29wY29kZSAocHN0YXRlLCBPUF9SQU5HRSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X2xvbmdj c3QgKHBzdGF0ZSwgUkFOR0VfSEFTX1NUUklERSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSsJOwotKwotK3N1YnJhbmdlOglleHAgJzonICc6JyBl eHAJJXByZWMgQUJPVkVfQ09NTUEKLSsJCQl7IHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUs IE9QX1JBTkdFKTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAocHN0YXRlLAotKwkJCQkJ CSAoUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUCi0rCQkJCQkJICB8IFJBTkdFX0hBU19TVFJJREUp KTsKLSsJCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChwc3RhdGUsIE9QX1JBTkdFKTsgfQotKwk7 Ci0rCi0rc3VicmFuZ2U6CSc6JyBleHAgJzonIGV4cAklcHJlYyBBQk9WRV9DT01NQQotKwkJCXsg d3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOwotKwkJCSAgd3JpdGVfZXhw X2VsdF9sb25nY3N0IChwc3RhdGUsCi0rCQkJCQkJIChSQU5HRV9MT1dfQk9VTkRfREVGQVVMVAot KwkJCQkJCSAgfCBSQU5HRV9IQVNfU1RSSURFKSk7Ci0rCQkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAocHN0YXRlLCBPUF9SQU5HRSk7IH0KLSsJOwotKwotK3N1YnJhbmdlOgknOicgJzonIGV4cAkl cHJlYyBBQk9WRV9DT01NQQotKwkJCXsgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKHBzdGF0ZSwgT1Bf UkFOR0UpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9sb25nY3N0IChwc3RhdGUsCi0rCQkJCQkJIChS QU5HRV9MT1dfQk9VTkRfREVGQVVMVAotKwkJCQkJCSAgfCBSQU5HRV9ISUdIX0JPVU5EX0RFRkFV TFQKLSsJCQkJCQkgIHwgUkFOR0VfSEFTX1NUUklERSkpOwotKwkJCSAgd3JpdGVfZXhwX2VsdF9v cGNvZGUgKHBzdGF0ZSwgT1BfUkFOR0UpOyB9Ci0rCTsKLSsKLSBjb21wbGV4bnVtOiAgICAgZXhw ICcsJyBleHAgCi0gICAgICAgICAgICAgICAgIAl7IH0gICAgICAgICAgICAgICAgICAgICAgICAg IAotICAgICAgICAgOwotZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuYyBiL2dkYi9mLWxhbmcuYwot LS0tIGEvZ2RiL2YtbGFuZy5jCi0rKysgYi9nZGIvZi1sYW5nLmMKLUBAIC0xMjQsNyArMTI0LDcg QEAgdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LAotIAkJICAgIHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0gewotICAg aW50IHBjID0gKCpwb3MpICsgMTsKLS0gIExPTkdFU1QgbG93X2JvdW5kLCBoaWdoX2JvdW5kOwot KyAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQsIHN0cmlkZTsKLSAgIHN0cnVjdCB0eXBl ICpyYW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KS0+aW5kZXhfdHlwZSAo KSk7Ci0gICBlbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZwotICAgICA9IChlbnVtIHJhbmdlX2Zs YWcpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Ci1AQCAtMTQxLDYg KzE0MSwxNCBAQCB2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCi0gICBl bHNlCi0gICAgIGhpZ2hfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51 bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpKTsKLSAKLSsgIGlmIChyYW5nZV9mbGFnICYgUkFOR0Vf SEFTX1NUUklERSkKLSsgICAgc3RyaWRlID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhw IChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Ci0rICBlbHNlCi0rICAgIHN0cmlkZSA9IDE7 Ci0rCi0rICBpZiAoc3RyaWRlICE9IDEpCi0rICAgIGVycm9yIChfKCJGb3J0cmFuIGFycmF5IHN0 cmlkZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIikpOwotKwotICAgcmV0dXJuIHZhbHVl X3NsaWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0g fQotIAotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKLS0tLSBhL2dkYi9w YXJzZS5jCi0rKysgYi9nZGIvcGFyc2UuYwotQEAgLTkyNCw2ICs5MjQsOCBAQCBvcGVyYXRvcl9s ZW5ndGhfc3RhbmRhcmQgKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHByLCBpbnQgZW5kcG9z LAotICAgICAgIC8qIEFzc3VtZSB0aGUgcmFuZ2UgaGFzIDIgYXJndW1lbnRzIChsb3cgYm91bmQg YW5kIGhpZ2ggYm91bmQpLCB0aGVuCi0gCSByZWR1Y2UgdGhlIGFyZ3VtZW50IGNvdW50IGlmIGFu eSBib3VuZHMgYXJlIHNldCB0byBkZWZhdWx0LiAgKi8KLSAgICAgICBhcmdzID0gMjsKLSsgICAg ICBpZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0hBU19TVFJJREUpCi0rCSsrYXJnczsKLSAgICAgICBp ZiAocmFuZ2VfZmxhZyAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKQotIAktLWFyZ3M7Ci0gICAg ICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vYXJyYXktc2xpY2VzLmV4cAotQEAgLTY2LDMgKzY2LDE5IEBAIGZvcmVhY2ggcmVzdWx0ICRh cnJheV9jb250ZW50cyBtc2cgJG1lc3NhZ2Vfc3RyaW5ncyB7Ci0gfQotIAotIGdkYl9jb250aW51 ZV90b19icmVha3BvaW50ICJjb250aW51ZSB0byBGaW5hbCBCcmVha3BvaW50IgotKwotKyMgTmV4 dCB0ZXN0IHRoYXQgYXNraW5nIGZvciBhbiBhcnJheSB3aXRoIHN0cmlkZSBhdCB0aGUgQ0xJIGdp dmVzIGFuCi0rIyBlcnJvci4KLStjbGVhbl9yZXN0YXJ0ICR7dGVzdGZpbGV9Ci0rCi0raWYgIVtm b3J0cmFuX3J1bnRvX21haW5dIHRoZW4gewotKyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBt YWluIgotKyAgICBjb250aW51ZQotK30KLSsKLStnZGJfYnJlYWtwb2ludCAic2hvdyIKLStnZGJf Y29udGludWVfdG9fYnJlYWtwb2ludCAic2hvdyIKLStnZGJfdGVzdCAidXAiICIuKiIKLStnZGJf dGVzdCAicCBhcnJheSAoMToxMDoyLCAxOjEwOjIpIiBcCi0rICAgICJGb3J0cmFuIGFycmF5IHN0 cmlkZXMgYXJlIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIiBcCi0rICAgICJ1c2luZyBhcnJheSBz dHJpZGUgZ2l2ZXMgYW4gZXJyb3IiCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0MTY3LWZvcnRy YW4tY2xlYW4tdXAtYXJyYXktZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNoIGIvZ2RiLXJoYnox OTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhwcmVzc2lvbi1ldmFsdWF0aW9uLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjYyMDIyLi4wMDAwMDAwCi0tLSBhL2dk Yi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWNsZWFuLXVwLWFycmF5LWV4cHJlc3Npb24tZXZhbHVhdGlv bi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmlu YkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNjo1MzoyMiAtMDcwMAotU3Vi amVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRyYW4tY2xlYW4tdXAtYXJyYXktZXhwcmVzc2lvbi1l dmFsdWF0aW9uLnBhdGNoCi0KLTs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2Vzcydz IGNvbW1pdCB3aGljaCBjbGVhbnMgdXAKLTs7IGFycmF5L3N0cmluZyBleHByZXNzaW9uIGV2YWx1 YXRpb24uCi0KLWdkYi9mb3J0cmFuOiBDbGVhbiB1cCBhcnJheS9zdHJpbmcgZXhwcmVzc2lvbiBl dmFsdWF0aW9uCi0KLVRoaXMgY29tbWl0IGlzIGEgcmVmYWN0b3Igb2YgcGFydCBvZiB0aGUgRm9y dHJhbiBhcnJheSBhbmQgc3RyaW5nCi1oYW5kbGluZyBjb2RlLgotCi1UaGUgY3VycmVudCBjb2Rl IGlzIHNwbGl0IGludG8gdHdvIGJsb2NrcywgbGlua2VkLCB3ZWlyZGx5LCB3aXRoIGEKLWdvdG8u ICBBZnRlciB0aGlzIGNvbW1pdCBhbGwgdGhlIGNvZGUgaXMgbW92ZWQgdG8gaXRzIG93biBmdW5j dGlvbiwKLWFuZCBhcnJheXMgYW5kIHN0cmluZ3MgYXJlIG5vdyBoYW5kbGVkIHVzaW5nIHRoZSBz YW1lIGNvZGU7IHRoaXMgd2lsbAotYmUgdXNlZnVsIGxhdGVyIHdoZW4gSSB3YW50IHRvIGFkZCBh cnJheSBzdHJpZGUgc3VwcG9ydCB3aGVyZSBzdHJpbmdzCi13aWxsIHdhbnQgdG8gYmUgdHJlYXRl ZCBqdXN0IGxpa2UgYXJyYXlzLCBidXQgaXMgYSBnb29kIGNsZWFuIHVwIGV2ZW4KLXdpdGhvdXQg dGhlIGFycmF5IHN0cmlkZSB3b3JrLCB3aGljaCBpcyB3aHkgSSdtIG1lcmdpbmcgaXQgbm93Lgot Ci1Gb3Igbm93IHRoZSBuZXcgZnVuY3Rpb24gaXMgYWRkZWQgYXMgYSBzdGF0aWMgd2l0aGluIGV2 YWwuYywgZXZlbgotdGhvdWdoIHRoZSBmdW5jdGlvbiBpcyBGb3J0cmFuIG9ubHkuICBBIGZvbGxv d2luZyBjb21taXQgd2lsbCByZW1vdmUKLXNvbWUgb2YgdGhlIEZvcnRyYW4gc3BlY2lmaWMgY29k ZSBmcm9tIGV2YWwuYyBpbnRvIG9uZSBvZiB0aGUgRm9ydHJhbgotc3BlY2lmaWMgZmlsZXMsIGlu Y2x1ZGluZyB0aGlzIG5ldyBmdW5jdGlvbi4KLQotVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlz aWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29tbWl0LgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBl dmFsLmMgKGZvcnRyYW5fdmFsdWVfc3ViYXJyYXkpOiBOZXcgZnVuY3Rpb24sIGNvbnRlbnQgaXMg dGFrZW4KLQlmcm9tLi4uCi0JKGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCk6IC4uLmhlcmUsIGlu IHR3byBwbGFjZXMuICBOb3cgYXJyYXlzCi0JYW5kIHN0cmluZ3MgYm90aCBjYWxsIHRoZSBuZXcg ZnVuY3Rpb24uCi0JKGNhbGNfZjc3X2FycmF5X2RpbXMpOiBBZGQgaGVhZGVyIGNvbW1lbnQsIGhh bmRsZSBzdHJpbmdzLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9ldmFsLmMKLS0t LSBhL2dkYi9ldmFsLmMKLSsrKyBiL2dkYi9ldmFsLmMKLUBAIC0xMjYwLDYgKzEyNjAsNjcgQEAg aXNfaW50ZWdyYWxfb3JfaW50ZWdyYWxfcmVmZXJlbmNlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAJ ICAmJiBpc19pbnRlZ3JhbF90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpOwotIH0KLSAK LSsvKiBDYWxsZWQgZnJvbSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgdG8gcGVyZm9ybSBhcnJh eSBpbmRleGluZywgYW5kCi0rICAgc3ViLXJhbmdlIGV4dHJhY3Rpb24sIGZvciBGb3J0cmFuLiAg QXMgd2VsbCBhcyBhcnJheXMgdGhpcyBmdW5jdGlvbgotKyAgIGFsc28gaGFuZGxlcyBzdHJpbmdz IGFzIHRoZXkgY2FuIGJlIHRyZWF0ZWQgbGlrZSBhcnJheXMgb2YgY2hhcmFjdGVycy4KLSsgICBB UlJBWSBpcyB0aGUgYXJyYXkgb3Igc3RyaW5nIGJlaW5nIGFjY2Vzc2VkLiAgRVhQLCBQT1MsIGFu ZCBOT1NJREUgYXJlCi0rICAgYXMgZm9yIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCwgYW5kIE5B UkdTIGlzIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzCi0rICAgaW4gdGhpcyBhY2Nlc3MgKGUuZy4g J2FycmF5ICgxLDIsMyknIHdvdWxkIGJlIE5BUkdTIDMpLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0 IHZhbHVlICoKLStmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotKwkJCWludCAqcG9zLCBpbnQgbmFyZ3MsIGVudW0gbm9z aWRlIG5vc2lkZSkKLSt7Ci0rICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9PSBPUF9SQU5H RSkKLSsgICAgcmV0dXJuIHZhbHVlX2Y5MF9zdWJhcnJheSAoYXJyYXksIGV4cCwgcG9zLCBub3Np ZGUpOwotKwotKyAgaWYgKG5vc2lkZSA9PSBFVkFMX1NLSVApCi0rICAgIHsKLSsgICAgICBza2lw X3VuZGV0ZXJtaW5lZF9hcmdsaXN0IChuYXJncywgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAg LyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRoIHRoZSBjb3JyZWN0IHR5cGUuICAqLwotKyAg ICAgIHJldHVybiBhcnJheTsKLSsgICAgfQotKwotKyAgTE9OR0VTVCBzdWJzY3JpcHRfYXJyYXlb TUFYX0ZPUlRSQU5fRElNU107Ci0rICBpbnQgbmRpbWVuc2lvbnMgPSAxOwotKyAgc3RydWN0IHR5 cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkpOwotKwotKyAgaWYg KG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLSsgICAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNj cmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKLSsKLSsgIG5kaW1l bnNpb25zID0gY2FsY19mNzdfYXJyYXlfZGltcyAodHlwZSk7Ci0rCi0rICBpZiAobmFyZ3MgIT0g bmRpbWVuc2lvbnMpCi0rICAgIGVycm9yIChfKCJXcm9uZyBudW1iZXIgb2Ygc3Vic2NyaXB0cyIp KTsKLSsKLSsgIGdkYl9hc3NlcnQgKG5hcmdzID4gMCk7Ci0rCi0rICAvKiBOb3cgdGhhdCB3ZSBr bm93IHdlIGhhdmUgYSBsZWdhbCBhcnJheSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBsZXQgdXMKLSsg ICAgIGFjdHVhbGx5IGZpbmQgb3V0IHdoZXJlIHRoaXMgZWxlbWVudCBleGlzdHMgaW4gdGhlIGFy cmF5LiAgKi8KLSsKLSsgIC8qIFRha2UgYXJyYXkgaW5kaWNlcyBsZWZ0IHRvIHJpZ2h0LiAgKi8K LSsgIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLSsgICAgewotKyAgICAgIC8qIEV2 YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBpdCBtdXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcu ICAqLwotKyAgICAgIHZhbHVlICphcmcyID0gZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24g KGV4cCwgcG9zLCBub3NpZGUpOwotKwotKyAgICAgIC8qIEZpbGwgaW4gdGhlIHN1YnNjcmlwdCBh cnJheS4gICovCi0rICAgICAgc3Vic2NyaXB0X2FycmF5W2ldID0gdmFsdWVfYXNfbG9uZyAoYXJn Mik7Ci0rICAgIH0KLSsKLSsgIC8qIEludGVybmFsIHR5cGUgb2YgYXJyYXkgaXMgYXJyYW5nZWQg cmlnaHQgdG8gbGVmdC4gICovCi0rICBmb3IgKGludCBpID0gbmFyZ3M7IGkgPiAwOyBpLS0pCi0r ICAgIHsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFycmF5KSk7Ci0rICAgICAgTE9OR0VTVCBpbmRleCA9IHN1YnNjcmlwdF9hcnJh eVtpIC0gMV07Ci0rCi0rICAgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFy cmF5LCBpbmRleCwKLSsJCQkJCWY3N19nZXRfbG93ZXJib3VuZCAoYXJyYXlfdHlwZSkpOwotKyAg ICB9Ci0rCi0rICByZXR1cm4gYXJyYXk7Ci0rfQotKwotIHN0cnVjdCB2YWx1ZSAqCi0gZXZhbHVh dGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCQkJICBzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLUBAIC0xOTUzLDMzICsyMDE0LDggQEAgZXZh bHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gICAgICAg c3dpdGNoIChjb2RlKQotIAl7Ci0gCWNhc2UgVFlQRV9DT0RFX0FSUkFZOgotLQkgIGlmIChleHAt PmVsdHNbKnBvc10ub3Bjb2RlID09IE9QX1JBTkdFKQotLQkgICAgcmV0dXJuIHZhbHVlX2Y5MF9z dWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCSAgZWxzZQotLQkgICAgewotLQkg ICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLS0JCXsKLS0JCSAgc2tpcF91bmRldGVybWlu ZWRfYXJnbGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOwotLQkJICAvKiBSZXR1cm4gdGhl IGR1bW15IHZhbHVlIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4gICovCi0tCQkgIHJldHVybiBhcmcx OwotLQkJfQotLQkgICAgICBnb3RvIG11bHRpX2Y3N19zdWJzY3JpcHQ7Ci0tCSAgICB9Ci0tCi0g CWNhc2UgVFlQRV9DT0RFX1NUUklORzoKLS0JICBpZiAoZXhwLT5lbHRzWypwb3NdLm9wY29kZSA9 PSBPUF9SQU5HRSkKLS0JICAgIHJldHVybiB2YWx1ZV9mOTBfc3ViYXJyYXkgKGFyZzEsIGV4cCwg cG9zLCBub3NpZGUpOwotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAgaWYgKG5vc2lkZSA9PSBF VkFMX1NLSVApCi0tCQl7Ci0tCQkgIHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QgKG5hcmdzLCBl eHAsIHBvcywgbm9zaWRlKTsKLS0JCSAgLyogUmV0dXJuIHRoZSBkdW1teSB2YWx1ZSB3aXRoIHRo ZSBjb3JyZWN0IHR5cGUuICAqLwotLQkJICByZXR1cm4gYXJnMTsKLS0JCX0KLS0JICAgICAgYXJn MiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLS0J ICAgICAgcmV0dXJuIHZhbHVlX3N1YnNjcmlwdCAoYXJnMSwgdmFsdWVfYXNfbG9uZyAoYXJnMikp OwotLQkgICAgfQotKwkgIHJldHVybiBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChhcmcxLCBleHAs IHBvcywgbmFyZ3MsIG5vc2lkZSk7Ci0gCi0gCWNhc2UgVFlQRV9DT0RFX1BUUjoKLSAJY2FzZSBU WVBFX0NPREVfRlVOQzoKLUBAIC0yNDAwLDQ5ICsyNDM2LDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCX0KLSAgICAgICByZXR1cm4gKGFy ZzEpOwotIAotLSAgICBtdWx0aV9mNzdfc3Vic2NyaXB0OgotLSAgICAgIHsKLS0JTE9OR0VTVCBz dWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0tCWludCBuZGltZW5zaW9ucyA9IDEs IGk7Ci0tCXN0cnVjdCB2YWx1ZSAqYXJyYXkgPSBhcmcxOwotLQotLQlpZiAobmFyZ3MgPiBNQVhf Rk9SVFJBTl9ESU1TKQotLQkgIGVycm9yIChfKCJUb28gbWFueSBzdWJzY3JpcHRzIGZvciBGNzcg KCVkIE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7Ci0tCi0tCW5kaW1lbnNpb25zID0gY2FsY19m NzdfYXJyYXlfZGltcyAodHlwZSk7Ci0tCi0tCWlmIChuYXJncyAhPSBuZGltZW5zaW9ucykKLS0J ICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7Ci0tCi0tCWdkYl9hc3Nl cnQgKG5hcmdzID4gMCk7Ci0tCi0tCS8qIE5vdyB0aGF0IHdlIGtub3cgd2UgaGF2ZSBhIGxlZ2Fs IGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9uIAotLQkgICBsZXQgdXMgYWN0dWFsbHkgZmluZCBv dXQgd2hlcmUgdGhpcyBlbGVtZW50IGV4aXN0cyBpbiB0aGUgYXJyYXkuICAqLwotLQotLQkvKiBU YWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICovCi0tCWZvciAoaSA9IDA7IGkgPCBu YXJnczsgaSsrKQotLQkgIHsKLS0JICAgIC8qIEV2YWx1YXRlIGVhY2ggc3Vic2NyaXB0OyBpdCBt dXN0IGJlIGEgbGVnYWwgaW50ZWdlciBpbiBGNzcuICAqLwotLQkgICAgYXJnMiA9IGV2YWx1YXRl X3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLS0KLS0JICAgIC8qIEZp bGwgaW4gdGhlIHN1YnNjcmlwdCBhcnJheS4gICovCi0tCi0tCSAgICBzdWJzY3JpcHRfYXJyYXlb aV0gPSB2YWx1ZV9hc19sb25nIChhcmcyKTsKLS0JICB9Ci0tCi0tCS8qIEludGVybmFsIHR5cGUg b2YgYXJyYXkgaXMgYXJyYW5nZWQgcmlnaHQgdG8gbGVmdC4gICovCi0tCWZvciAoaSA9IG5hcmdz OyBpID4gMDsgaS0tKQotLQkgIHsKLS0JICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLS0JICAgIExPTkdFU1QgaW5kZXggPSBz dWJzY3JpcHRfYXJyYXlbaSAtIDFdOwotLQotLQkgICAgYXJyYXkgPSB2YWx1ZV9zdWJzY3JpcHRl ZF9ydmFsdWUgKGFycmF5LCBpbmRleCwKLS0JCQkJCSAgICAgIGY3N19nZXRfbG93ZXJib3VuZCAo YXJyYXlfdHlwZSkpOwotLQkgIH0KLS0KLS0JcmV0dXJuIGFycmF5OwotLSAgICAgIH0KLS0KLSAg ICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLSAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhw IChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKLSAgICAgICBpZiAobm9zaWRlID09IEVWQUxf U0tJUCkKLUBAIC0zMzU0LDEyICszMzQ3LDE3IEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIg KnAsIGludCBsZW5ndGgpCi0gICByZXR1cm4gZXhwci0+ZWx0c1sxXS50eXBlOwotIH0KLSAKLSsv KiBSZXR1cm4gdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGZvciBhIEZvcnRyYW4gYXJyYXkgb3Ig c3RyaW5nLiAgKi8KLSsKLSBpbnQKLSBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAq YXJyYXlfdHlwZSkKLSB7Ci0gICBpbnQgbmRpbWVuID0gMTsKLSAgIHN0cnVjdCB0eXBlICp0bXBf dHlwZTsKLSAKLSsgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSSU5H KSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0gICBpZiAoKGFycmF5X3R5cGUtPmNvZGUgKCkgIT0gVFlQ RV9DT0RFX0FSUkFZKSkKLSAgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBh IG5vbi1hcnJheSB0eXBlIikpOwotIAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0 cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1pbi1mLWxhbmcuYy5wYXRjaCBiL2dkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1pbi1mLWxhbmcuYy5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNkYjgyOC4uMDAwMDAwMAotLS0gYS9n ZGItcmhiejE5NjQxNjctZm9ydHJhbi1maXgtdHlwZS1mb3JtYXQtbWlzbWF0Y2gtaW4tZi1sYW5n LmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotRnJvbSBGRURPUkFfUEFU Q0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZp bmJAcmVkaGF0LmNvbT4KLURhdGU6IFR1ZSwgMjUgTWF5IDIwMjEgMTc6MzQ6NTcgLTA3MDAKLVN1 YmplY3Q6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLWZpeC10eXBlLWZvcm1hdC1taXNtYXRjaC1p bi1mLWxhbmcuYy5wYXRjaAotCi07OyBbZm9ydHJhbl0gQmFja3BvcnQgU2ltb24gTWFyY2hpJ3Mg Y29tbWl0IHdoaWNoIGZpeGVzIGEgMzItYml0IGJ1aWxkCi07OyBwcm9ibGVtIGluIGdkYi9mLWxh bmcuYy4KLQotZ2RiOiBmaXggZm9ybWF0IHN0cmluZyB3YXJuaW5ncyBpbiBmLWxhbmcuYwotCi1J IGdldCBhIGJ1bmNoIG9mIHRoZXNlIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIGZvciBpMzg2ICgz Mi1iaXQpOgotCi0gICAgICBDWFggICAgZi1sYW5nLm8KLSAgICAvaG9tZS9zaW1hcmsvc3JjL2Jp bnV0aWxzLWdkYi9nZGIvZi1sYW5nLmM6IEluIGZ1bmN0aW9uICd2YWx1ZSogZm9ydHJhbl92YWx1 ZV9zdWJhcnJheSh2YWx1ZSosIGV4cHJlc3Npb24qLCBpbnQqLCBpbnQsIG5vc2lkZSknOgotICAg IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9mLWxhbmcuYzo0NTM6NDg6IGVycm9y OiBmb3JtYXQgJyVsZCcgZXhwZWN0cyBhcmd1bWVudCBvZiB0eXBlICdsb25nIGludCcsIGJ1dCBh cmd1bWVudCAyIGhhcyB0eXBlICdMT05HRVNUJyB7YWthICdsb25nIGxvbmcgaW50J30gWy1XZXJy b3I9Zm9ybWF0PV0KLSAgICAgIDQ1MyB8ICAgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwt PiBMb3cgYm91bmQ6ICVsZFxuIiwgbGIpOwotICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5eICAgICB+fgotICAgICAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8Ci0gICAgICAg ICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAg IExPTkdFU1Qge2FrYSBsb25nIGxvbmcgaW50fQotICAgICAgICAgIHwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGludAotICAgICAgICAgIHwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJWxsZAotCi1GaXggdGhl bSBieSB1c2luZyBwbG9uZ2VzdC9wdWxvbmdlc3QuCi0KLWdkYi9DaGFuZ2VMb2c6Ci0KLQkqIGYt bGFuZy5jIChmb3J0cmFuX3ZhbHVlX3N1YmFycmF5KTogVXNlIHBsb25nZXN0L3B1bG9uZ2VzdC4K LQotQ2hhbmdlLUlkOiBJNjY2ZWFkNTU5MzY1M2Q1YTFhM2RhYjJmZmRjNzI5NDJjOTI4YzdkMgot Ci1kaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi0tLS0gYS9nZGIvZi1s YW5nLmMKLSsrKyBiL2dkYi9mLWxhbmcuYwotQEAgLTQ2MywyMSArNDYzLDIxIEBAIGZvcnRyYW5f dmFsdWVfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpl eHAsCi0gCSAgICAgIHN0ZDo6c3RyaW5nIHN0ciA9IHR5cGVfdG9fc3RyaW5nIChkaW1fdHlwZSk7 Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gVHlwZTogJXNcbiIsIHN0ci5jX3N0ciAo KSk7Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gQXJyYXk6XG4iKTsKLS0JICAgICAg ZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlbGRcbiIsIGxiKTsKLS0JICAg ICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gSGlnaCBib3VuZDogJWxkXG4iLCB1Yik7Ci0t CSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJpdCBzdHJpZGU6ICVsZFxuIiwgc2Qp OwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBCeXRlIHN0cmlkZTogJWxkXG4i LCBzZCAvIDgpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBUeXBlIHNpemU6 ICVsZFxuIiwKLS0JCQkgICAgVFlQRV9MRU5HVEggKGRpbV90eXBlKSk7Ci0tCSAgICAgIGRlYnVn X3ByaW50ZiAoInwgICB8ICAgJy0+IFRhcmdldCB0eXBlIHNpemU6ICVsZFxuIiwKLS0JCQkgICAg VFlQRV9MRU5HVEggKHRhcmdldF90eXBlKSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8 ICAgfC0+IExvdyBib3VuZDogJXNcbiIsIHBsb25nZXN0IChsYikpOwotKwkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgfCAgIHwtPiBIaWdoIGJvdW5kOiAlc1xuIiwgcGxvbmdlc3QgKHViKSk7Ci0r CSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEJpdCBzdHJpZGU6ICVzXG4iLCBwbG9u Z2VzdCAoc2QpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gQnl0ZSBzdHJp ZGU6ICVzXG4iLCBwbG9uZ2VzdCAoc2QgLyA4KSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwg ICB8ICAgfC0+IFR5cGUgc2l6ZTogJXNcbiIsCi0rCQkJICAgIHB1bG9uZ2VzdCAoVFlQRV9MRU5H VEggKGRpbV90eXBlKSkpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgICctPiBUYXJn ZXQgdHlwZSBzaXplOiAlc1xuIiwKLSsJCQkgICAgcHVsb25nZXN0IChUWVBFX0xFTkdUSCAodGFy Z2V0X3R5cGUpKSk7Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8LT4gQWNjZXNzaW5nOlxu Iik7Ci0tCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IExvdyBib3VuZDogJWxkXG4i LAotLQkJCSAgICBsb3cpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBIaWdo IGJvdW5kOiAlbGRcbiIsCi0tCQkJICAgIGhpZ2gpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8 ICAgfCAgICctPiBFbGVtZW50IHN0cmlkZTogJWxkXG4iLAotLQkJCSAgICBzdHJpZGUpOwotKwkg ICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgfCAgIHwtPiBMb3cgYm91bmQ6ICVzXG4iLAotKwkJCSAg ICBwbG9uZ2VzdCAobG93KSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEhp Z2ggYm91bmQ6ICVzXG4iLAotKwkJCSAgICBwbG9uZ2VzdCAoaGlnaCkpOwotKwkgICAgICBkZWJ1 Z19wcmludGYgKCJ8ICAgfCAgICctPiBFbGVtZW50IHN0cmlkZTogJXNcbiIsCi0rCQkJICAgIHBs b25nZXN0IChzdHJpZGUpKTsKLSAJICAgIH0KLSAKLSAJICAvKiBDaGVjayB0aGUgdXNlciBoYXNu J3QgYXNrZWQgZm9yIHNvbWV0aGluZyBpbnZhbGlkLiAgKi8KLUBAIC01MTksMTMgKzUxOSwxNyBA QCBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLAotIAkgIGlmIChmb3J0cmFuX2FycmF5X3NsaWNpbmdfZGVidWcpCi0gCSAg ICB7Ci0gCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAnLT4gUmVzdWx0czpcbiIpOwotLQkgICAg ICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBPZmZzZXQgPSAlbGRcbiIsIG9mZnNldCk7Ci0t CSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICAgICAgfC0+IEVsZW1lbnRzID0gJWxkXG4iLCBlX2Nv dW50KTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gTG93IGJvdW5kID0gJWxk XG4iLCBuZXdfbG93KTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gSGlnaCBi b3VuZCA9ICVsZFxuIiwgbmV3X2hpZ2gpOwotLQkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAg IHwtPiBCeXRlIHN0cmlkZSA9ICVsZFxuIiwgbmV3X3N0cmlkZSk7Ci0tCSAgICAgIGRlYnVnX3By aW50ZiAoInwgICAgICAgfC0+IExhc3QgZWxlbWVudCA9ICVsZFxuIiwgbGFzdF9lbGVtKTsKLS0J ICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gUmVtYWluZGVyID0gJWxkXG4iLCByZW1h aW5kZXIpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwtPiBPZmZzZXQgPSAlc1xu IiwgcGxvbmdlc3QgKG9mZnNldCkpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgIHwt PiBFbGVtZW50cyA9ICVzXG4iLCBwbG9uZ2VzdCAoZV9jb3VudCkpOwotKwkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgICAgIHwtPiBMb3cgYm91bmQgPSAlc1xuIiwgcGxvbmdlc3QgKG5ld19sb3cp KTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gSGlnaCBib3VuZCA9ICVzXG4i LAotKwkJCSAgICBwbG9uZ2VzdCAobmV3X2hpZ2gpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgi fCAgICAgICB8LT4gQnl0ZSBzdHJpZGUgPSAlc1xuIiwKLSsJCQkgICAgcGxvbmdlc3QgKG5ld19z dHJpZGUpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICB8LT4gTGFzdCBlbGVtZW50 ID0gJXNcbiIsCi0rCQkJICAgIHBsb25nZXN0IChsYXN0X2VsZW0pKTsKLSsJICAgICAgZGVidWdf cHJpbnRmICgifCAgICAgICB8LT4gUmVtYWluZGVyID0gJXNcbiIsCi0rCQkJICAgIHBsb25nZXN0 IChyZW1haW5kZXIpKTsKLSAJICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICAnLT4gQ29udGln dW91cyA9ICVzXG4iLAotIAkJCSAgICAoaXNfZGltX2NvbnRpZ3VvdXMgPyAiWWVzIiA6ICJObyIp KTsKLSAJICAgIH0KLUBAIC01NjEsMTQgKzU2NSwxNiBAQCBmb3J0cmFuX3ZhbHVlX3N1YmFycmF5 IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkgICAgICBz dGQ6OnN0cmluZyBzdHIgPSB0eXBlX3RvX3N0cmluZyAoZGltX3R5cGUpOwotIAkgICAgICBkZWJ1 Z19wcmludGYgKCJ8ICAgfC0+IFR5cGU6ICVzXG4iLCBzdHIuY19zdHIgKCkpOwotIAkgICAgICBk ZWJ1Z19wcmludGYgKCJ8ICAgfC0+IEFycmF5OlxuIik7Ci0tCSAgICAgIGRlYnVnX3ByaW50ZiAo InwgICB8ICAgfC0+IExvdyBib3VuZDogJWxkXG4iLCBsYik7Ci0tCSAgICAgIGRlYnVnX3ByaW50 ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6ICVsZFxuIiwgdWIpOwotLQkgICAgICBkZWJ1Z19w cmludGYgKCJ8ICAgfCAgIHwtPiBCeXRlIHN0cmlkZTogJWxkXG4iLCBzZCk7Ci0tCSAgICAgIGRl YnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IFR5cGUgc2l6ZTogJWxkXG4iLCBUWVBFX0xFTkdUSCAo ZGltX3R5cGUpKTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICAnLT4gVGFyZ2V0IHR5 cGUgc2l6ZTogJWxkXG4iLAotLQkJCSAgICBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpKTsKLSsJ ICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8LT4gTG93IGJvdW5kOiAlc1xuIiwgcGxvbmdl c3QgKGxiKSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAgfC0+IEhpZ2ggYm91bmQ6 ICVzXG4iLCBwbG9uZ2VzdCAodWIpKTsKLSsJICAgICAgZGVidWdfcHJpbnRmICgifCAgIHwgICB8 LT4gQnl0ZSBzdHJpZGU6ICVzXG4iLCBwbG9uZ2VzdCAoc2QpKTsKLSsJICAgICAgZGVidWdfcHJp bnRmICgifCAgIHwgICB8LT4gVHlwZSBzaXplOiAlc1xuIiwKLSsJCQkgICAgcHVsb25nZXN0IChU WVBFX0xFTkdUSCAoZGltX3R5cGUpKSk7Ci0rCSAgICAgIGRlYnVnX3ByaW50ZiAoInwgICB8ICAg Jy0+IFRhcmdldCB0eXBlIHNpemU6ICVzXG4iLAotKwkJCSAgICBwdWxvbmdlc3QgKFRZUEVfTEVO R1RIICh0YXJnZXRfdHlwZSkpKTsKLSAJICAgICAgZGVidWdfcHJpbnRmICgifCAgICctPiBBY2Nl c3Npbmc6XG4iKTsKLS0JICAgICAgZGVidWdfcHJpbnRmICgifCAgICAgICAnLT4gSW5kZXg6ICVs ZFxuIiwgaW5kZXgpOwotKwkgICAgICBkZWJ1Z19wcmludGYgKCJ8ICAgICAgICctPiBJbmRleDog JXNcbiIsCi0rCQkJICAgIHBsb25nZXN0IChpbmRleCkpOwotIAkgICAgfQotIAotIAkgIC8qIElm IHRoZSBhcnJheSBoYXMgYWN0dWFsIGNvbnRlbnQgdGhlbiBjaGVjayB0aGUgaW5kZXggaXMgaW4K LUBAIC02MjUsNyArNjMxLDggQEAgZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoc3RydWN0IHZhbHVl ICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAgICAgICBkZWJ1Z19wcmludGYgKCIn LT4gRmluYWwgcmVzdWx0OlxuIik7Ci0gICAgICAgZGVidWdfcHJpbnRmICgiICAgIHwtPiBUeXBl OiAlc1xuIiwKLSAJCSAgICB0eXBlX3RvX3N0cmluZyAoYXJyYXlfc2xpY2VfdHlwZSkuY19zdHIg KCkpOwotLSAgICAgIGRlYnVnX3ByaW50ZiAoIiAgICB8LT4gVG90YWwgb2Zmc2V0OiAlbGRcbiIs IHRvdGFsX29mZnNldCk7Ci0rICAgICAgZGVidWdfcHJpbnRmICgiICAgIHwtPiBUb3RhbCBvZmZz ZXQ6ICVzXG4iLAotKwkJICAgIHBsb25nZXN0ICh0b3RhbF9vZmZzZXQpKTsKLSAgICAgICBkZWJ1 Z19wcmludGYgKCIgICAgfC0+IEJhc2UgYWRkcmVzczogJXNcbiIsCi0gCQkgICAgY29yZV9hZGRy X3RvX3N0cmluZyAodmFsdWVfYWRkcmVzcyAoYXJyYXkpKSk7Ci0gICAgICAgZGVidWdfcHJpbnRm ICgiICAgICctPiBDb250aWd1b3VzID0gJXNcbiIsCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0 MTY3LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoIGIvZ2RiLXJoYnoxOTY0 MTY3LWZvcnRyYW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBmZWQyMzlhLi4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk2NDE2Ny1m b3J0cmFuLXJhbmdlX3R5cGUtdG8tcmFuZ2VfZmxhZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDIyNCArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAy NCBNYXkgMjAyMSAxNzoxNToyNyAtMDcwMAotU3ViamVjdDogZ2RiLXJoYnoxOTY0MTY3LWZvcnRy YW4tcmFuZ2VfdHlwZS10by1yYW5nZV9mbGFnLnBhdGNoCi0KLTs7IFtmb3J0cmFuXSBCYWNrcG9y dCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCByZW5hbWVzIGVudW0KLTs7IHJhbmdlX3R5 cGUgdG8gZW51bSByYW5nZV9mbGFnLgotCi1nZGI6IHJlbmFtZSAnZW51bSByYW5nZV90eXBlJyB0 byAnZW51bSByYW5nZV9mbGFnJwotCi1UbyBhdm9pZCBjb25mdXNpb24gd2l0aCBvdGhlciBwYXJ0 cyBvZiBHREIgcmVsYXRpbmcgdG8gdHlwZXMgYW5kCi1yYW5nZXMsIHJlbmFtZSB0aGlzIGVudW0g dG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgaXQgaXMgYSBzZXQgb2YKLWluZGl2aWR1YWwgZmxhZ3Mg cmF0aGVyIHRoYW4gYW4gZW51bWVyYXRpb24gb2YgZGlmZmVyZW50IHR5cGVzIG9mCi1yYW5nZS4K LQotVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29t bWl0LgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBleHBwcmludC5jIChwcmludF9zdWJleHBfc3Rh bmRhcmQpOiBDaGFuZ2UgZW51bSByYW5nZV90eXBlIHRvCi0JcmFuZ2VfZmxhZyBhbmQgcmVuYW1l IHZhcmlhYmxlcyB0byBtYXRjaC4KLQkoZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCk6IExpa2V3 aXNlLgotCSogZXhwcmVzc2lvbi5oIChlbnVtIHJhbmdlX3R5cGUpOiBSZW5hbWUgdG8uLi4KLQko ZW51bSByYW5nZV9mbGFnKTogLi4udGhpcy4KLQkocmFuZ2VfdHlwZXMpOiBSZW5hbWUgdG8uLi4K LQkocmFuZ2VfZmxhZ3MpOiAuLi50aGlzLgotCSogZi1sYW5nLmMgKHZhbHVlX2Y5MF9zdWJhcnJh eSk6IENoYW5nZSBlbnVtIHJhbmdlX3R5cGUgdG8KLQlyYW5nZV9mbGFnIGFuZCByZW5hbWUgdmFy aWFibGVzIHRvIG1hdGNoLgotCSogcGFyc2UuYyAob3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkKTog TGlrZXdpc2UuCi0JKiBydXN0LWV4cC55IChydXN0X3BhcnNlcjo6Y29udmVydF9hc3RfdG9fZXhw cmVzc2lvbik6IENoYW5nZSBlbnVtCi0JcmFuZ2VfdHlwZSB0byByYW5nZV9mbGFnLgotCSogcnVz dC1sYW5nLmMgKHJ1c3RfZXZhbHVhdGVfZnVuY2FsbCk6IExpa2V3aXNlLgotCShydXN0X3Jhbmdl KTogTGlrZXdpc2UuCi0JKHJ1c3RfY29tcHV0ZV9yYW5nZSk6IExpa2V3aXNlLgotCShydXN0X3N1 YnNjcmlwdCk6IExpa2V3aXNlLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V4cHByaW50LmMgYi9nZGIv ZXhwcHJpbnQuYwotLS0tIGEvZ2RiL2V4cHByaW50LmMKLSsrKyBiL2dkYi9leHBwcmludC5jCi1A QCAtNTc4LDE5ICs1NzgsMTkgQEAgcHJpbnRfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBpbnQgKnBvcywKLSAKLSAgICAgY2FzZSBPUF9SQU5HRToKLSAgICAgICB7Ci0t CWVudW0gcmFuZ2VfdHlwZSByYW5nZV90eXBlOwotKwllbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxh ZzsKLSAKLS0JcmFuZ2VfdHlwZSA9IChlbnVtIHJhbmdlX3R5cGUpCi0rCXJhbmdlX2ZsYWcgPSAo ZW51bSByYW5nZV9mbGFnKQotIAkgIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGMgKyAxXS5s b25nY29uc3QpOwotIAkqcG9zICs9IDI7Ci0gCi0tCWlmIChyYW5nZV90eXBlICYgUkFOR0VfSElH SF9CT1VORF9FWENMVVNJVkUpCi0rCWlmIChyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9F WENMVVNJVkUpCi0gCSAgZnB1dHNfZmlsdGVyZWQgKCJFWENMVVNJVkVfIiwgc3RyZWFtKTsKLSAJ ZnB1dHNfZmlsdGVyZWQgKCJSQU5HRSgiLCBzdHJlYW0pOwotLQlpZiAoIShyYW5nZV90eXBlICYg UkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpKQotKwlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfTE9X X0JPVU5EX0RFRkFVTFQpKQotIAkgIHByaW50X3N1YmV4cCAoZXhwLCBwb3MsIHN0cmVhbSwgUFJF Q19BQk9WRV9DT01NQSk7Ci0gCWZwdXRzX2ZpbHRlcmVkICgiLi4iLCBzdHJlYW0pOwotLQlpZiAo IShyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKSkKLSsJaWYgKCEocmFuZ2Vf ZmxhZyAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCi0gCSAgcHJpbnRfc3ViZXhwIChleHAs IHBvcywgc3RyZWFtLCBQUkVDX0FCT1ZFX0NPTU1BKTsKLSAJZnB1dHNfZmlsdGVyZWQgKCIpIiwg c3RyZWFtKTsKLSAJcmV0dXJuOwotQEAgLTExMDQsMjUgKzExMDQsMjUgQEAgZHVtcF9zdWJleHBf Ym9keV9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAgICAgICBicmVhazsKLSAg ICAgY2FzZSBPUF9SQU5HRToKLSAgICAgICB7Ci0tCWVudW0gcmFuZ2VfdHlwZSByYW5nZV90eXBl OwotKwllbnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZzsKLSAKLS0JcmFuZ2VfdHlwZSA9IChlbnVt IHJhbmdlX3R5cGUpCi0rCXJhbmdlX2ZsYWcgPSAoZW51bSByYW5nZV9mbGFnKQotIAkgIGxvbmdl c3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29uc3QpOwotIAllbHQgKz0gMjsKLSAKLS0J aWYgKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkKLSsJaWYgKHJhbmdl X2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0VYQ0xVU0lWRSkKLSAJICBmcHV0c19maWx0ZXJlZCAo IkV4Y2x1c2l2ZSIsIHN0cmVhbSk7Ci0gCWZwdXRzX2ZpbHRlcmVkICgiUmFuZ2UgJyIsIHN0cmVh bSk7Ci0tCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCi0rCWlm ICghKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkpCi0gCSAgZnB1dHNfZmls dGVyZWQgKCJFWFAiLCBzdHJlYW0pOwotIAlmcHV0c19maWx0ZXJlZCAoIi4uIiwgc3RyZWFtKTsK LS0JaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkpCi0rCWlmICgh KHJhbmdlX2ZsYWcgJiBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQpKQotIAkgIGZwdXRzX2ZpbHRl cmVkICgiRVhQIiwgc3RyZWFtKTsKLSAJZnB1dHNfZmlsdGVyZWQgKCInIiwgc3RyZWFtKTsKLSAK LS0JaWYgKCEocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKLSsJaWYgKCEo cmFuZ2VfZmxhZyAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKSkKLSAJICBlbHQgPSBkdW1wX3N1 YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0tCWlmICghKHJhbmdlX3R5cGUgJiBSQU5HRV9ISUdI X0JPVU5EX0RFRkFVTFQpKQotKwlpZiAoIShyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9E RUZBVUxUKSkKLSAJICBlbHQgPSBkdW1wX3N1YmV4cCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0gICAg ICAgfQotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9leHByZXNzaW9uLmggYi9nZGIv ZXhwcmVzc2lvbi5oCi0tLS0gYS9nZGIvZXhwcmVzc2lvbi5oCi0rKysgYi9nZGIvZXhwcmVzc2lv bi5oCi1AQCAtMTg1LDcgKzE4NSw3IEBAIGV4dGVybiB2b2lkIGR1bXBfcHJlZml4X2V4cHJlc3Np b24gKHN0cnVjdCBleHByZXNzaW9uICosIHN0cnVjdCB1aV9maWxlICopOwotICAgIG9yIGluY2x1 c2l2ZS4gIFNvIHdlIGhhdmUgc2l4IHNvcnRzIG9mIHN1YnJhbmdlLiAgVGhpcyBlbnVtZXJhdGlv bgotICAgIHR5cGUgaXMgdG8gaWRlbnRpZnkgdGhpcy4gICovCi0gCi0tZW51bSByYW5nZV90eXBl IDogdW5zaWduZWQKLStlbnVtIHJhbmdlX2ZsYWcgOiB1bnNpZ25lZAotIHsKLSAgIC8qIFRoaXMg aXMgYSBzdGFuZGFyZCByYW5nZS4gIEJvdGggdGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZHMgYXJl Ci0gICAgICBkZWZpbmVkLCBhbmQgdGhlIGJvdW5kcyBhcmUgaW5jbHVzaXZlLiAgKi8KLUBAIC0y MDEsNiArMjAxLDYgQEAgZW51bSByYW5nZV90eXBlIDogdW5zaWduZWQKLSAgIFJBTkdFX0hJR0hf Qk9VTkRfRVhDTFVTSVZFID0gMSA8PCAyLAotIH07Ci0gCi0tREVGX0VOVU1fRkxBR1NfVFlQRSAo ZW51bSByYW5nZV90eXBlLCByYW5nZV90eXBlcyk7Ci0rREVGX0VOVU1fRkxBR1NfVFlQRSAoZW51 bSByYW5nZV9mbGFnLCByYW5nZV9mbGFncyk7Ci0gCi0gI2VuZGlmIC8qICFkZWZpbmVkIChFWFBS RVNTSU9OX0gpICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi0t LS0gYS9nZGIvZi1sYW5nLmMKLSsrKyBiL2dkYi9mLWxhbmcuYwotQEAgLTEyNiwxNyArMTI2LDE3 IEBAIHZhbHVlX2Y5MF9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwKLSAgIGludCBwYyA9 ICgqcG9zKSArIDE7Ci0gICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKLSAgIHN0cnVj dCB0eXBlICpyYW5nZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5KS0+aW5kZXhf dHlwZSAoKSk7Ci0tICBlbnVtIHJhbmdlX3R5cGUgcmFuZ2VfdHlwZQotLSAgICA9IChlbnVtIHJh bmdlX3R5cGUpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Ci0rICBl bnVtIHJhbmdlX2ZsYWcgcmFuZ2VfZmxhZwotKyAgICA9IChlbnVtIHJhbmdlX2ZsYWcpIGxvbmdl c3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7Ci0gCi0gICAqcG9zICs9IDM7Ci0g Ci0tICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0xPV19CT1VORF9ERUZBVUxUKQotKyAgaWYgKHJh bmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVGQVVMVCkKLSAgICAgbG93X2JvdW5kID0gcmFu Z2UtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3ZhbCAoKTsKLSAgIGVsc2UKLSAgICAgbG93X2JvdW5k ID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9z aWRlKSk7Ci0gCi0tICBpZiAocmFuZ2VfdHlwZSAmIFJBTkdFX0hJR0hfQk9VTkRfREVGQVVMVCkK LSsgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZBVUxUKQotICAgICBoaWdo X2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0gICBlbHNlCi0g ICAgIGhpZ2hfYm91bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIs IGV4cCwgcG9zLCBub3NpZGUpKTsKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJz ZS5jCi0tLS0gYS9nZGIvcGFyc2UuYwotKysrIGIvZ2RiL3BhcnNlLmMKLUBAIC03NzQsNyArNzc0 LDcgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwciwgaW50IGVuZHBvcywKLSB7Ci0gICBpbnQgb3BsZW4gPSAxOwotICAgaW50IGFyZ3MgPSAw OwotLSAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGU7Ci0rICBlbnVtIHJhbmdlX2ZsYWcgcmFu Z2VfZmxhZzsKLSAgIGludCBpOwotIAotICAgaWYgKGVuZHBvcyA8IDEpCi1AQCAtOTE4LDE1ICs5 MTgsMTUgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwciwgaW50IGVuZHBvcywKLSAKLSAgICAgY2FzZSBPUF9SQU5HRToKLSAgICAgICBvcGxl biA9IDM7Ci0tICAgICAgcmFuZ2VfdHlwZSA9IChlbnVtIHJhbmdlX3R5cGUpCi0rICAgICAgcmFu Z2VfZmxhZyA9IChlbnVtIHJhbmdlX2ZsYWcpCi0gCWxvbmdlc3RfdG9faW50IChleHByLT5lbHRz W2VuZHBvcyAtIDJdLmxvbmdjb25zdCk7Ci0gCi0gICAgICAgLyogQXNzdW1lIHRoZSByYW5nZSBo YXMgMiBhcmd1bWVudHMgKGxvdyBib3VuZCBhbmQgaGlnaCBib3VuZCksIHRoZW4KLSAJIHJlZHVj ZSB0aGUgYXJndW1lbnQgY291bnQgaWYgYW55IGJvdW5kcyBhcmUgc2V0IHRvIGRlZmF1bHQuICAq LwotICAgICAgIGFyZ3MgPSAyOwotLSAgICAgIGlmIChyYW5nZV90eXBlICYgUkFOR0VfTE9XX0JP VU5EX0RFRkFVTFQpCi0rICAgICAgaWYgKHJhbmdlX2ZsYWcgJiBSQU5HRV9MT1dfQk9VTkRfREVG QVVMVCkKLSAJLS1hcmdzOwotLSAgICAgIGlmIChyYW5nZV90eXBlICYgUkFOR0VfSElHSF9CT1VO RF9ERUZBVUxUKQotKyAgICAgIGlmIChyYW5nZV9mbGFnICYgUkFOR0VfSElHSF9CT1VORF9ERUZB VUxUKQotIAktLWFyZ3M7Ci0gCi0gICAgICAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3J1c3Qt ZXhwLnkgYi9nZGIvcnVzdC1leHAueQotLS0tIGEvZ2RiL3J1c3QtZXhwLnkKLSsrKyBiL2dkYi9y dXN0LWV4cC55Ci1AQCAtMjQ5Miw3ICsyNDkyLDcgQEAgcnVzdF9wYXJzZXI6OmNvbnZlcnRfYXN0 X3RvX2V4cHJlc3Npb24gKGNvbnN0IHN0cnVjdCBydXN0X29wICpvcGVyYXRpb24sCi0gCi0gICAg IGNhc2UgT1BfUkFOR0U6Ci0gICAgICAgewotLQllbnVtIHJhbmdlX3R5cGUga2luZCA9IChSQU5H RV9ISUdIX0JPVU5EX0RFRkFVTFQKLSsJdW5zaWduZWQgaW50IGtpbmQgPSAoUkFOR0VfSElHSF9C T1VORF9ERUZBVUxUCi0gCQkJCXwgUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQpOwotIAotIAlpZiAo b3BlcmF0aW9uLT5sZWZ0Lm9wICE9IE5VTEwpCi1kaWZmIC0tZ2l0IGEvZ2RiL3J1c3QtbGFuZy5j IGIvZ2RiL3J1c3QtbGFuZy5jCi0tLS0gYS9nZGIvcnVzdC1sYW5nLmMKLSsrKyBiL2dkYi9ydXN0 LWxhbmcuYwotQEAgLTEwNzAsNyArMTA3MCw2IEBAIHJ1c3RfZXZhbHVhdGVfZnVuY2FsbCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKLSBzdGF0 aWMgc3RydWN0IHZhbHVlICoKLSBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgKnBvcywgZW51bSBub3NpZGUgbm9zaWRlKQotIHsKLS0gIGVudW0gcmFuZ2VfdHlwZSBraW5k OwotICAgc3RydWN0IHZhbHVlICpsb3cgPSBOVUxMLCAqaGlnaCA9IE5VTEw7Ci0gICBzdHJ1Y3Qg dmFsdWUgKmFkZHJ2YWwsICpyZXN1bHQ7Ci0gICBDT1JFX0FERFIgYWRkcjsKLUBAIC0xMDc5LDcg KzEwNzgsOCBAQCBydXN0X3JhbmdlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywg ZW51bSBub3NpZGUgbm9zaWRlKQotICAgc3RydWN0IHR5cGUgKnRlbXBfdHlwZTsKLSAgIGNvbnN0 IGNoYXIgKm5hbWU7Ci0gCi0tICBraW5kID0gKGVudW0gcmFuZ2VfdHlwZSkgbG9uZ2VzdF90b19p bnQgKGV4cC0+ZWx0c1sqcG9zICsgMV0ubG9uZ2NvbnN0KTsKLSsgIGF1dG8ga2luZAotKyAgICA9 IChlbnVtIHJhbmdlX2ZsYWcpIGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbKnBvcyArIDFdLmxv bmdjb25zdCk7Ci0gICAqcG9zICs9IDM7Ci0gCi0gICBpZiAoIShraW5kICYgUkFOR0VfTE9XX0JP VU5EX0RFRkFVTFQpKQotQEAgLTExNjksNyArMTE2OSw3IEBAIHJ1c3RfcmFuZ2UgKHN0cnVjdCBl eHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0gc3RhdGljIHZv aWQKLSBydXN0X2NvbXB1dGVfcmFuZ2UgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdmFsdWUg KnJhbmdlLAotIAkJICAgIExPTkdFU1QgKmxvdywgTE9OR0VTVCAqaGlnaCwKLS0JCSAgICByYW5n ZV90eXBlcyAqa2luZCkKLSsJCSAgICByYW5nZV9mbGFncyAqa2luZCkKLSB7Ci0gICBpbnQgaTsK LSAKLUBAIC0xMjA5LDcgKzEyMDksNyBAQCBydXN0X3N1YnNjcmlwdCAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSwKLSAgIHN0cnVjdCB0eXBlICpy aHN0eXBlOwotICAgTE9OR0VTVCBsb3csIGhpZ2hfYm91bmQ7Ci0gICAvKiBJbml0aWFsaXplZCB0 byBhcHBlYXNlIHRoZSBjb21waWxlci4gICovCi0tICByYW5nZV90eXBlcyBraW5kID0gUkFOR0Vf TE9XX0JPVU5EX0RFRkFVTFQgfCBSQU5HRV9ISUdIX0JPVU5EX0RFRkFVTFQ7Ci0rICByYW5nZV9m bGFncyBraW5kID0gUkFOR0VfTE9XX0JPVU5EX0RFRkFVTFQgfCBSQU5HRV9ISUdIX0JPVU5EX0RF RkFVTFQ7Ci0gICBMT05HRVNUIGhpZ2ggPSAwOwotICAgaW50IHdhbnRfc2xpY2UgPSAwOwotIAoK ZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0 Y2ggYi9nZGItcmhiejE5NjQxNjctZm9ydHJhbi13aGl0ZXNwYWNlX2FycmF5LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDIxNTU5Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6 MTk2NDE2Ny1mb3J0cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwxMzcgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwg MjQgTWF5IDIwMjEgMTc6MDc6MzYgLTA3MDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTk2NDE2Ny1mb3J0 cmFuLXdoaXRlc3BhY2VfYXJyYXkucGF0Y2gKLQotOzsgW2ZvcnRyYW5dIEJhY2twb3J0IEFuZHJl dyBCdXJnZXNzJ3MgY29tbWl0IHdoaWNoIGVsaW1pbmF0ZXMgdW5kZXNpcmFibGUKLTs7IHdoaXRl c3BhY2Ugd2hlbiBwcmludGluZyBhcnJheXMuCi0KLWdkYi9mb3J0cmFuOiBDaGFuZ2Ugd2hpdGVz cGFjZSB3aGVuIHByaW50aW5nIGFycmF5cwotCi1UaGlzIGNvbW1pdCBtYWtlcyB0aGUgd2hpdGVz cGFjZSB1c2FnZSB3aGVuIHByaW50aW5nIEZvcnRyYW4gYXJyYXlzCi1tb3JlIGNvbnNpc3RlbnQs IGFuZCBtb3JlIGlubGluZSB3aXRoIGhvdyB3ZSBwcmludCBDIGFycmF5cy4KLQotQ3VycmVudGx5 IGEgMiBkaW1lbnNpb25hbCBGb3RyYW4gYXJyYXkgaXMgcHJpbnRlZCBsaWtlIHRoaXMsIEkgZmlu ZAotdGhlIG1hcmtlZCB3aGl0ZXNwYWNlIHVucGxlYXNhbnQ6Ci0KLSAgKCggMSwgMiwgMykgKCA0 LCA1LCA2KSApCi0gICAgXiAgICAgICAgICBeICAgICAgICBeCi0KLUFmdGVyIHRoaXMgY29tbWl0 IHRoZSBzYW1lIGFycmF5IGlzIHByaW50ZWQgbGlrZSB0aGlzOgotCi0gICgoMSwgMiwgMykgKDQs IDUsIDYpKQotCi1XaGljaCBzZWVtcyBtb3JlIGlubGluZSB3aXRoIGhvdyB3ZSBwcmludCBDIGFy cmF5cywgaW4gdGhlIGNhc2Ugb2YgQwotYXJyYXlzIHdlIGRvbid0IGFkZCBleHRyYSB3aGl0ZXNw YWNlIGJlZm9yZSB0aGUgZmlyc3QgZWxlbWVudC4KLQotZ2RiL0NoYW5nZUxvZzoKLQotCSogZi12 YWxwcmludC5jIChmNzdfcHJpbnRfYXJyYXlfMSk6IEFkanVzdCBwcmludGluZyBvZiB3aGl0ZXNw YWNlCi0JZm9yIGFycmF5cy4KLQotZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6Ci0KLQkqIGdkYi5m b3J0cmFuL2FycmF5LXNsaWNlcy5leHA6IFVwZGF0ZSBleHBlY3RlZCByZXN1bHRzLgotCSogZ2Ri LmZvcnRyYW4vY2xhc3MtYWxsb2NhdGFibGUtYXJyYXkuZXhwOiBMaWtld2lzZS4KLQkqIGdkYi5m b3J0cmFuL211bHRpLWRpbS5leHA6IExpa2V3aXNlLgotCSogZ2RiLmZvcnRyYW4vdmxhLXR5cGUu ZXhwOiBMaWtld2lzZS4KLQkqIGdkYi5taS9taS12bGEtZm9ydHJhbi5leHA6IExpa2V3aXNlLgot Ci1kaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKLS0tLSBh L2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBAIC0xMzcsMTQgKzEz NywxNyBAQCBmNzdfcHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwKLSAJICAgIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgdmFsdWVfY29u dGVudHNfZm9yX3ByaW50aW5nX2NvbnN0ICh2YWwpCi0gCSAgICAgKyBvZmZzLCBhZGRyICsgb2Zm cyk7Ci0gCi0tCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKCAiKTsKLSsJICBmcHJpbnRm X2ZpbHRlcmVkIChzdHJlYW0sICIoIik7Ci0gCSAgZjc3X3ByaW50X2FycmF5XzEgKG5zcyArIDEs IG5kaW1lbnNpb25zLCB2YWx1ZV90eXBlIChzdWJhcnJheSksCi0gCQkJICAgICB2YWx1ZV9jb250 ZW50c19mb3JfcHJpbnRpbmcgKHN1YmFycmF5KSwKLSAJCQkgICAgIHZhbHVlX2VtYmVkZGVkX29m ZnNldCAoc3ViYXJyYXkpLAotIAkJCSAgICAgdmFsdWVfYWRkcmVzcyAoc3ViYXJyYXkpLAotIAkJ CSAgICAgc3RyZWFtLCByZWN1cnNlLCBzdWJhcnJheSwgb3B0aW9ucywgZWx0cyk7Ci0gCSAgb2Zm cyArPSBieXRlX3N0cmlkZTsKLS0JICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOwot KwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKLSsKLSsJICBpZiAoaSA8IHVwcGVy Ym91bmQpCi0rCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIgIik7Ci0gCX0KLSAgICAg ICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCB1cHBlcmJvdW5kKQotIAlm cHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2FycmF5LXNsaWNlcy5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJy YXktc2xpY2VzLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGlj ZXMuZXhwCi1AQCAtMzgsMTQgKzM4LDE0IEBAIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0KLSAKLSBzZXQgYXJyYXlfY29udGVudHMgXAotICAg ICBbbGlzdCBcCi0tCSAiID0gXFwoXFwoIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXFwp IFxcKCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCggMjEsIDIy LCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzBcXCkgXFwoIDMxLCAzMiwgMzMsIDM0LCAz NSwgMzYsIDM3LCAzOCwgMzksIDQwXFwpIFxcKCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0Nywg NDgsIDQ5LCA1MFxcKSBcXCggNTEsIDUyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDU4LCA1OSwgNjBc XCkgXFwoIDYxLCA2MiwgNjMsIDY0LCA2NSwgNjYsIDY3LCA2OCwgNjksIDcwXFwpIFxcKCA3MSwg NzIsIDczLCA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MFxcKSBcXCggODEsIDgyLCA4MywgODQs IDg1LCA4NiwgODcsIDg4LCA4OSwgOTBcXCkgXFwoIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3 LCA5OCwgOTksIDEwMFxcKSBcXCkiIFwKLS0JICIgPSBcXChcXCggMSwgMiwgMywgNCwgNVxcKSBc XCggMTEsIDEyLCAxMywgMTQsIDE1XFwpIFxcKCAyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoIDMx LCAzMiwgMzMsIDM0LCAzNVxcKSBcXCggNDEsIDQyLCA0MywgNDQsIDQ1XFwpIFxcKSIgXAotLQkg IiA9IFxcKFxcKCAxLCAzLCA1LCA3LCA5XFwpIFxcKCAyMSwgMjMsIDI1LCAyNywgMjlcXCkgXFwo IDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBcXCggNjEsIDYzLCA2NSwgNjcsIDY5XFwpIFxcKCA4MSwg ODMsIDg1LCA4NywgODlcXCkgXFwpIiBcCi0tCSAiID0gXFwoXFwoIDEsIDQsIDcsIDEwXFwpIFxc KCAyMSwgMjQsIDI3LCAzMFxcKSBcXCggNDEsIDQ0LCA0NywgNTBcXCkgXFwoIDYxLCA2NCwgNjcs IDcwXFwpIFxcKCA4MSwgODQsIDg3LCA5MFxcKSBcXCkiIFwKLS0JICIgPSBcXChcXCggMSwgNSwg OVxcKSBcXCggMzEsIDM1LCAzOVxcKSBcXCggNjEsIDY1LCA2OVxcKSBcXCggOTEsIDk1LCA5OVxc KSBcXCkiIFwKLS0JICIgPSBcXChcXCggLTI2LCAtMjUsIC0yNCwgLTIzLCAtMjIsIC0yMSwgLTIw LCAtMTksIC0xOCwgLTE3XFwpIFxcKCAtMTksIC0xOCwgLTE3LCAtMTYsIC0xNSwgLTE0LCAtMTMs IC0xMiwgLTExLCAtMTBcXCkgXFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwgLTcsIC02LCAtNSwg LTQsIC0zXFwpIFxcKCAtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMsIDRcXCkgXFwoIDIs IDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMVxcKSBcXCggOSwgMTAsIDExLCAxMiwgMTMsIDE0 LCAxNSwgMTYsIDE3LCAxOFxcKSBcXCggMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwgMjIsIDIzLCAy NCwgMjVcXCkgXFwoIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyXFwpIFxc KCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsIDM4LCAzOVxcKSBcXCggMzcsIDM4LCAz OSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXCkgXFwpIiBcCi0tCSAiID0gXFwoXFwoIC0y NiwgLTI1LCAtMjQsIC0yMywgLTIyLCAtMjFcXCkgXFwoIC0xOSwgLTE4LCAtMTcsIC0xNiwgLTE1 LCAtMTRcXCkgXFwoIC0xMiwgLTExLCAtMTAsIC05LCAtOCwgLTdcXCkgXFwpIiBcCi0tCSAiID0g XFwoXFwoIC0yNiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKCAtNSwgLTMsIC0xLCAxLCAzXFwp IFxcKCAxNiwgMTgsIDIwLCAyMiwgMjRcXCkgXFwoIDM3LCAzOSwgNDEsIDQzLCA0NVxcKSBcXCki IF0KLSsJICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMFxcKSBcXCgxMSwg MTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMFxcKSBcXCgyMSwgMjIsIDIzLCAyNCwg MjUsIDI2LCAyNywgMjgsIDI5LCAzMFxcKSBcXCgzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywg MzgsIDM5LCA0MFxcKSBcXCg0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MFxc KSBcXCg1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCA1NywgNTgsIDU5LCA2MFxcKSBcXCg2MSwgNjIs IDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MFxcKSBcXCg3MSwgNzIsIDczLCA3NCwgNzUs IDc2LCA3NywgNzgsIDc5LCA4MFxcKSBcXCg4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgs IDg5LCA5MFxcKSBcXCg5MSwgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDBcXClc XCkiIFwKLSsJICIgPSBcXChcXCgxLCAyLCAzLCA0LCA1XFwpIFxcKDExLCAxMiwgMTMsIDE0LCAx NVxcKSBcXCgyMSwgMjIsIDIzLCAyNCwgMjVcXCkgXFwoMzEsIDMyLCAzMywgMzQsIDM1XFwpIFxc KDQxLCA0MiwgNDMsIDQ0LCA0NVxcKVxcKSIgXAotKwkgIiA9IFxcKFxcKDEsIDMsIDUsIDcsIDlc XCkgXFwoMjEsIDIzLCAyNSwgMjcsIDI5XFwpIFxcKDQxLCA0MywgNDUsIDQ3LCA0OVxcKSBcXCg2 MSwgNjMsIDY1LCA2NywgNjlcXCkgXFwoODEsIDgzLCA4NSwgODcsIDg5XFwpXFwpIiBcCi0rCSAi ID0gXFwoXFwoMSwgNCwgNywgMTBcXCkgXFwoMjEsIDI0LCAyNywgMzBcXCkgXFwoNDEsIDQ0LCA0 NywgNTBcXCkgXFwoNjEsIDY0LCA2NywgNzBcXCkgXFwoODEsIDg0LCA4NywgOTBcXClcXCkiIFwK LSsJICIgPSBcXChcXCgxLCA1LCA5XFwpIFxcKDMxLCAzNSwgMzlcXCkgXFwoNjEsIDY1LCA2OVxc KSBcXCg5MSwgOTUsIDk5XFwpXFwpIiBcCi0rCSAiID0gXFwoXFwoLTI2LCAtMjUsIC0yNCwgLTIz LCAtMjIsIC0yMSwgLTIwLCAtMTksIC0xOCwgLTE3XFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwg LTE1LCAtMTQsIC0xMywgLTEyLCAtMTEsIC0xMFxcKSBcXCgtMTIsIC0xMSwgLTEwLCAtOSwgLTgs IC03LCAtNiwgLTUsIC00LCAtM1xcKSBcXCgtNSwgLTQsIC0zLCAtMiwgLTEsIDAsIDEsIDIsIDMs IDRcXCkgXFwoMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExXFwpIFxcKDksIDEwLCAxMSwg MTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMThcXCkgXFwoMTYsIDE3LCAxOCwgMTksIDIwLCAyMSwg MjIsIDIzLCAyNCwgMjVcXCkgXFwoMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLCAzMSwg MzJcXCkgXFwoMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LCAzOCwgMzlcXCkgXFwoMzcs IDM4LCAzOSwgNDAsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDZcXClcXCkiIFwKLSsJICIgPSBcXChc XCgtMjYsIC0yNSwgLTI0LCAtMjMsIC0yMiwgLTIxXFwpIFxcKC0xOSwgLTE4LCAtMTcsIC0xNiwg LTE1LCAtMTRcXCkgXFwoLTEyLCAtMTEsIC0xMCwgLTksIC04LCAtN1xcKVxcKSIgXAotKwkgIiA9 IFxcKFxcKC0yNiwgLTI0LCAtMjIsIC0yMCwgLTE4XFwpIFxcKC01LCAtMywgLTEsIDEsIDNcXCkg XFwoMTYsIDE4LCAyMCwgMjIsIDI0XFwpIFxcKDM3LCAzOSwgNDEsIDQzLCA0NVxcKVxcKSIgXQot IAotIHNldCBtZXNzYWdlX3N0cmluZ3MgXAotICAgICBbbGlzdCBcCi1kaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1hcnJheS5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NsYXNzLWFsbG9jYXRhYmxlLWFycmF5LmV4cAotLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jbGFzcy1hbGxvY2F0YWJsZS1hcnJheS5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY2xhc3MtYWxsb2NhdGFibGUtYXJyYXkuZXhw Ci1AQCAtNDAsNCArNDAsNCBAQCBnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiQnJlYWsgSGVy ZSIKLSAjIGNldGFpbmx5IGdvaW5nIHRvIGZhaWwuCi0gZ2RiX3Rlc3QgInByaW50IHRoaXMiICIg PSBcXCggX2RhdGEgPSBcW15cclxuXF0rLCBfdnB0ciA9IFxbXlxyXG5cXStcXCkiCi0gZ2RiX3Rl c3QgInByaW50IHRoaXMlX2RhdGEiICIgPSBcXChQVFIgVE8gLT4gXFwoIFR5cGUgdGVzdF90eXBl IFxcKVxcKSBcW15cclxuXF0rIgotLWdkYl90ZXN0ICJwcmludCB0aGlzJV9kYXRhJWIiICIgPSBc XChcXCggMSwgMiwgM1xcKSBcXCggNCwgNSwgNlxcKSBcXCkiCi0rZ2RiX3Rlc3QgInByaW50IHRo aXMlX2RhdGElYiIgIiA9IFxcKFxcKDEsIDIsIDNcXCkgXFwoNCwgNSwgNlxcKVxcKSIKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL211bHRpLWRpbS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL211bHRpLWRpbS5leHAKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbXVsdGktZGltLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9t dWx0aS1kaW0uZXhwCi1AQCAtNTcsNyArNTcsNyBAQCBnZGJfdGVzdCAicHJpbnQgZm9vKDMsMyw0 KSIgXAotICAgICAicHJpbnQgYW4gaW52YWxpZCBhcnJheSBpbmRleCAoMywzLDQpIgotIAotIGdk Yl90ZXN0ICJwcmludCBmb28iIFwKLS0gICAgeyA9IFwoXCggXCggMTAsIDEwXCkgXCggMTAsIDEw XCkgXCggMTAsIDEwXCkgXCkgXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDEwXCkg XCkgXCggXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCggMTAsIDEwXCkgXCkgXCggXCggMTAsIDEw XCkgXCggMTAsIDEwXCkgXCggMTAsIDIwXCkgXCkgXCl9IFwKLSsgICAgeyA9IFwoXChcKDEwLCAx MFwpIFwoMTAsIDEwXCkgXCgxMCwgMTBcKVwpIFwoXCgxMCwgMTBcKSBcKDEwLCAxMFwpIFwoMTAs IDEwXClcKSBcKFwoMTAsIDEwXCkgXCgxMCwgMTBcKSBcKDEwLCAxMFwpXCkgXChcKDEwLCAxMFwp IFwoMTAsIDEwXCkgXCgxMCwgMjBcKVwpXCl9IFwKLSAgICAgInByaW50IGZ1bGwgY29udGVudHMg b2YgdGhlIGFycmF5IgotIAotIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJi cmVhay12YXJpYWJsZSJdCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92 bGEtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3ZsYS10eXBlLmV4cAotLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi92bGEtdHlwZS5leHAKLSsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vdmxhLXR5cGUuZXhwCi1AQCAtNjYsOSArNjYsOSBAQCBnZGJfdGVz dCAicHR5cGUgdHdvdiIgXAotICAgICAgICAgICAgICAgICAgICAgICJcXHMrJGludCwgYWxsb2Nh dGFibGUgOjogaXZsYTFcXFwoNSwxMiw5OVxcXCkiIFwKLSAgICAgICAgICAgICAgICAgICAgICAi XFxzKyRpbnQsIGFsbG9jYXRhYmxlIDo6IGl2bGEyXFxcKDksMTJcXFwpIiBcCi0gICAgICAgICAg ICAgICAgICAgICAgIkVuZCBUeXBlIHR3byIgXQotLWdkYl90ZXN0ICJwcmludCB0d292IiAiID0g XFxcKCBpdmxhMSA9IFxcXChcXFwoIFxcXCggMSwgMSwgMSwgMSwgMVxcXClcCi0tIFxcXCggMSwg MSwgMzIxLCAxLCAxXFxcKVwKLS0gXFxcKCAxLCAxLCAxLCAxLCAxXFxcKSAuKiIKLStnZGJfdGVz dCAicHJpbnQgdHdvdiIgIiA9IFxcXCggaXZsYTEgPSBcXFwoXFxcKFxcXCgxLCAxLCAxLCAxLCAx XFxcKVwKLSsgXFxcKDEsIDEsIDMyMSwgMSwgMVxcXClcCi0rIFxcXCgxLCAxLCAxLCAxLCAxXFxc KSAuKiIKLSAKLSAjIENoZWNrIHR5cGUgd2l0aCBhdHRyaWJ1dGUgYXQgYmVnaW5uIG9mIHR5cGUK LSBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAidGhyZWV2LWZpbGxlZCJdCi1k aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIubWkvbWktdmxhLWZvcnRyYW4uZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5taS9taS12bGEtZm9ydHJhbi5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p LXZsYS1mb3J0cmFuLmV4cAotQEAgLTE4MCw3ICsxODAsNyBAQCBtaV9ydW5fY21kCi0gbWlfZXhw ZWN0X3N0b3AgImJyZWFrcG9pbnQtaGl0IiAidmxhIiAiIiAiLip2bGEuZjkwIiAiJGJwX2xpbmVu byIgXAotICAgeyAiIiAiZGlzcD1cImRlbFwiIiB9ICJydW4gdG8gYnJlYWtwb2ludCBhdCBsaW5l ICRicF9saW5lbm8iCi0gbWlfZ2RiX3Rlc3QgIjU5MC1kYXRhLWV2YWx1YXRlLWV4cHJlc3Npb24g cHZsYTIiIFwKLS0gICI1OTBcXF5kb25lLHZhbHVlPVwiXFwoXFwoIDIsIDIsIDIsIDIsIDJcXCkg XFwoIDIsIDIsIDIsIDIsIDJcXCkgXFwpXCIiIFwKLSsgICI1OTBcXF5kb25lLHZhbHVlPVwiXFwo XFwoMiwgMiwgMiwgMiwgMlxcKSBcXCgyLCAyLCAyLCAyLCAyXFwpXFwpXCIiIFwKLSAgICJldmFs dWF0ZSBhc3NvY2lhdGVkIHZsYSIKLSAKLSBtaV9jcmVhdGVfdmFyb2JqX2NoZWNrZWQgcHZsYTJf YXNzb2NpYXRlZCBwdmxhMiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9y dHJhbi1leHByLWhhbmRsaW5nLnBhdGNoIGIvZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJhbi1l eHByLWhhbmRsaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTIxNjg0 Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk2NDE2Ny1tb3ZlLWZvcnRyYW4tZXhwci1oYW5kbGlu Zy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4NyArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRD SEVTIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmlu YkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAyNCBNYXkgMjAyMSAxNzowMDoxNyAtMDcwMAotU3Vi amVjdDogZ2RiLXJoYnoxOTY0MTY3LW1vdmUtZm9ydHJhbi1leHByLWhhbmRsaW5nLnBhdGNoCi0K LTs7IFtmb3J0cmFuXSBCYWNrcG9ydCBBbmRyZXcgQnVyZ2VzcydzIGNvbW1pdCB3aGljaCBtb3Zl cyBGb3J0cmFuCi07OyBleHByZXNzaW9uIGhhbmRsaW5nIHRvIGYtbGFuZy5jLgotCi1nZGIvZm9y dHJhbjogTW92ZSBGb3J0cmFuIGV4cHJlc3Npb24gaGFuZGxpbmcgaW50byBmLWxhbmcuYwotCi1U aGUgRm9ydHJhbiBzcGVjaWZpYyBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QgaXMgY3VycmVu dGx5IGhhbmRsZWQKLWluIHRoZSBnZW5lcmljIGV4cHJlc3Npb24gaGFuZGxpbmcgY29kZS4gIFRo ZXJlJ3Mgbm8gcmVhc29uIHdoeSB0aGlzCi1zaG91bGQgYmUgdGhlIGNhc2UsIHNvIHRoaXMgY29t bWl0IG1vdmVzIGhhbmRsaW5nIG9mIHRoaXMgaW50byBGb3J0cmFuCi1zcGVjaWZpYyBmaWxlcy4K LQotVGhlcmUgc2hvdWxkIGJlIG5vIHVzZXIgdmlzaWJsZSBjaGFuZ2VzIGFmdGVyIHRoaXMgY29t bWl0LgotCi1nZGIvQ2hhbmdlTG9nOgotCi0JKiBldmFsLmM6IFJlbW92ZSAnZi1sYW5nLmgnIGlu Y2x1ZGUuCi0JKHZhbHVlX2Y5MF9zdWJhcnJheSk6IE1vdmVkIHRvIGYtbGFuZy5jLgotCShldmFs X2NhbGwpOiBSZW5hbWVkIHRvLi4uCi0JKGV2YWx1YXRlX3N1YmV4cF9kb19jYWxsKTogLi4udGhp cywgaXMgbm8gbG9uZ2VyIHN0YXRpYywgaGVhZGVyCi0JY29tbWVudCBtb3ZlZCBpbnRvIGhlYWRl ciBmaWxlLgotCShldmFsdWF0ZV9mdW5jYWxsKTogVXBkYXRlIGNhbGwgdG8gZXZhbF9jYWxsLgot CShza2lwX3VuZGV0ZXJtaW5lZF9hcmdsaXN0KTogTW92ZWQgdG8gZi1sYW5nLmMuCi0JKGZvcnRy YW5fdmFsdWVfc3ViYXJyYXkpOiBMaWtld2lzZS4KLQkoZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk KTogT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUIGhhbmRsaW5nCi0JbW92ZWQgdG8gZXZhbHVh dGVfc3ViZXhwX2YuCi0JKGNhbGNfZjc3X2FycmF5X2RpbXMpOiBNb3ZlZCB0byBmLWxhbmcuYwot CSogZXhwcHJpbnQuYyAocHJpbnRfc3ViZXhwX2Z1bmNhbGwpOiBOZXcgZnVuY3Rpb24uCi0JKHBy aW50X3N1YmV4cF9zdGFuZGFyZCk6IE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCBoYW5kbGlu ZwotCW1vdmVkIHRvIHByaW50X3N1YmV4cF9mLCBPUF9GVU5DQUxMIHVzZXMgbmV3IGZ1bmN0aW9u LgotCShkdW1wX3N1YmV4cF9ib2R5X2Z1bmNhbGwpOiBOZXcgZnVuY3Rpb24uCi0JKGR1bXBfc3Vi ZXhwX2JvZHlfc3RhbmRhcmQpOiBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QgaGFuZGxpbmcK LQltb3ZlZCB0byBkdW1wX3N1YmV4cF9mLCBPUF9GVU5DQUxMIHVzZXMgbmV3IGZ1bmN0aW9uLgot CSogZXhwcmVzc2lvbi5oIChldmFsdWF0ZV9zdWJleHBfZG9fY2FsbCk6IERlY2xhcmUuCi0JKiBm LWxhbmcuYyAodmFsdWVfZjkwX3N1YmFycmF5KTogTW92ZWQgZnJvbSBldmFsLmMuCi0JKHNraXBf dW5kZXRlcm1pbmVkX2FyZ2xpc3QpOiBMaWtld2lzZS4KLQkoY2FsY19mNzdfYXJyYXlfZGltcyk6 IExpa2V3aXNlLgotCShmb3J0cmFuX3ZhbHVlX3N1YmFycmF5KTogTGlrZXdpc2UuCi0JKGV2YWx1 YXRlX3N1YmV4cF9mKTogQWRkIE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCBzdXBwb3J0Lgot CShvcGVyYXRvcl9sZW5ndGhfZik6IExpa2V3aXNlLgotCShwcmludF9zdWJleHBfZik6IExpa2V3 aXNlLgotCShkdW1wX3N1YmV4cF9ib2R5X2YpOiBMaWtld2lzZS4KLQkqIGZvcnRyYW4tb3BlcmF0 b3IuZGVmIChPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QpOiBNb3ZlCi0JZGVjbGFyYXRpb24g b2YgdGhpcyBvcGVyYXRpb24gdG8gaGVyZS4KLQkqIHBhcnNlLmMgKG9wZXJhdG9yX2xlbmd0aF9z dGFuZGFyZCk6IE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVAotCXN1cHBvcnQgbW92ZWQgdG8g b3BlcmF0b3JfbGVuZ3RoX2YuCi0JKiBwYXJzZXItZGVmcy5oIChkdW1wX3N1YmV4cF9ib2R5X2Z1 bmNhbGwpOiBEZWNsYXJlLgotCShwcmludF9zdWJleHBfZnVuY2FsbCk6IERlY2xhcmUuCi0JKiBz dGQtb3BlcmF0b3IuZGVmIChPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1QpOiBNb3ZlZCB0bwot CWZvcnRyYW4tb3BlcmF0b3IuZGVmLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dkYi9l dmFsLmMKLS0tLSBhL2dkYi9ldmFsLmMKLSsrKyBiL2dkYi9ldmFsLmMKLUBAIC0yNiw3ICsyNiw2 IEBACi0gI2luY2x1ZGUgImZyYW1lLmgiCi0gI2luY2x1ZGUgImdkYnRocmVhZC5oIgotICNpbmNs dWRlICJsYW5ndWFnZS5oIgkJLyogRm9yIENBU1RfSVNfQ09OVkVSU0lPTi4gICovCi0tI2luY2x1 ZGUgImYtbGFuZy5oIgkJLyogRm9yIGFycmF5IGJvdW5kIHN0dWZmLiAgKi8KLSAjaW5jbHVkZSAi Y3AtYWJpLmgiCi0gI2luY2x1ZGUgImluZmNhbGwuaCIKLSAjaW5jbHVkZSAib2JqYy1sYW5nLmgi Ci1AQCAtMzcxLDMyICszNzAsNiBAQCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAq YXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKLSAgIHJldHVybiBpbmRleDsKLSB9Ci0gCi0t c3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0tdmFsdWVfZjkwX3N1YmFycmF5IChzdHJ1Y3QgdmFsdWUg KmFycmF5LAotLQkJICAgIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLCBlbnVtIG5v c2lkZSBub3NpZGUpCi0tewotLSAgaW50IHBjID0gKCpwb3MpICsgMTsKLS0gIExPTkdFU1QgbG93 X2JvdW5kLCBoaWdoX2JvdW5kOwotLSAgc3RydWN0IHR5cGUgKnJhbmdlID0gY2hlY2tfdHlwZWRl ZiAodmFsdWVfdHlwZSAoYXJyYXkpLT5pbmRleF90eXBlICgpKTsKLS0gIGVudW0gcmFuZ2VfdHlw ZSByYW5nZV90eXBlCi0tICAgID0gKGVudW0gcmFuZ2VfdHlwZSkgbG9uZ2VzdF90b19pbnQgKGV4 cC0+ZWx0c1twY10ubG9uZ2NvbnN0KTsKLS0gCi0tICAqcG9zICs9IDM7Ci0tCi0tICBpZiAocmFu Z2VfdHlwZSA9PSBMT1dfQk9VTkRfREVGQVVMVCB8fCByYW5nZV90eXBlID09IEJPVEhfQk9VTkRf REVGQVVMVCkKLS0gICAgbG93X2JvdW5kID0gcmFuZ2UtPmJvdW5kcyAoKS0+bG93LmNvbnN0X3Zh bCAoKTsKLS0gIGVsc2UKLS0gICAgbG93X2JvdW5kID0gdmFsdWVfYXNfbG9uZyAoZXZhbHVhdGVf c3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKSk7Ci0tCi0tICBpZiAocmFuZ2VfdHlw ZSA9PSBISUdIX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFV TFQpCi0tICAgIGhpZ2hfYm91bmQgPSByYW5nZS0+Ym91bmRzICgpLT5oaWdoLmNvbnN0X3ZhbCAo KTsKLS0gIGVsc2UKLS0gICAgaGlnaF9ib3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1 YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lkZSkpOwotLQotLSAgcmV0dXJuIHZhbHVlX3Ns aWNlIChhcnJheSwgbG93X2JvdW5kLCBoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0tfQot LQotLQotIC8qIFByb21vdGUgdmFsdWUgQVJHMSBhcyBhcHByb3ByaWF0ZSBiZWZvcmUgcGVyZm9y bWluZyBhIHVuYXJ5IG9wZXJhdGlvbgotICAgIG9uIHRoaXMgYXJndW1lbnQuCi0gICAgSWYgdGhl IHJlc3VsdCBpcyBub3QgYXBwcm9wcmlhdGUgZm9yIGFueSBwYXJ0aWN1bGFyIGxhbmd1YWdlIHRo ZW4gaXQKLUBAIC03NDksMTcgKzcyMiwxMyBAQCBldmFsX3NraXBfdmFsdWUgKGV4cHJlc3Npb24g KmV4cCkKLSAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZXhwLT5n ZGJhcmNoKS0+YnVpbHRpbl9pbnQsIDEpOwotIH0KLSAKLS0vKiBFdmFsdWF0ZSBhIGZ1bmN0aW9u IGNhbGwuICBUaGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGlzIGluCi0tICAgQVJHVkVDWzBdIGFu ZCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gYXJlIGluCi0tICAgQVJHVkVD WzEuLk5BUkdTXS4gIEZVTkNUSU9OX05BTUUgaXMgdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uLCBp ZgotLSAgIGtub3duLiAgREVGQVVMVF9SRVRVUk5fVFlQRSBpcyB1c2VkIGFzIHRoZSBmdW5jdGlv bidzIHJldHVybiB0eXBlCi0tICAgaWYgdGhlIHJldHVybiB0eXBlIGlzIHVua25vd24uICAqLwot Ky8qIFNlZSBleHByZXNzaW9uLmguICAqLwotIAotLXN0YXRpYyB2YWx1ZSAqCi0tZXZhbF9jYWxs IChleHByZXNzaW9uICpleHAsIGVudW0gbm9zaWRlIG5vc2lkZSwKLS0JICAgaW50IG5hcmdzLCB2 YWx1ZSAqKmFyZ3ZlYywKLS0JICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKLS0JICAgdHlw ZSAqZGVmYXVsdF9yZXR1cm5fdHlwZSkKLSt2YWx1ZSAqCi0rZXZhbHVhdGVfc3ViZXhwX2RvX2Nh bGwgKGV4cHJlc3Npb24gKmV4cCwgZW51bSBub3NpZGUgbm9zaWRlLAotKwkJCSBpbnQgbmFyZ3Ms IHZhbHVlICoqYXJndmVjLAotKwkJCSBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAotKwkJCSB0 eXBlICpkZWZhdWx0X3JldHVybl90eXBlKQotIHsKLSAgIGlmIChhcmd2ZWNbMF0gPT0gTlVMTCkK LSAgICAgZXJyb3IgKF8oIkNhbm5vdCBldmFsdWF0ZSBmdW5jdGlvbiAtLSBtYXkgYmUgaW5saW5l ZCIpKTsKLUBAIC0xMjMwLDIwICsxMTk5LDggQEAgZXZhbHVhdGVfZnVuY2FsbCAodHlwZSAqZXhw ZWN0X3R5cGUsIGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0gICAgICAgLyogTm90aGluZyB0 byBiZSBkb25lOyBhcmd2ZWMgYWxyZWFkeSBjb3JyZWN0bHkgc2V0IHVwLiAgKi8KLSAgICAgfQot IAotLSAgcmV0dXJuIGV2YWxfY2FsbCAoZXhwLCBub3NpZGUsIG5hcmdzLCBhcmd2ZWMsIHZhcl9m dW5jX25hbWUsIGV4cGVjdF90eXBlKTsKLS19Ci0tCi0tLyogSGVscGVyIGZvciBza2lwcGluZyBh bGwgdGhlIGFyZ3VtZW50cyBpbiBhbiB1bmRldGVybWluZWQgYXJndW1lbnQgbGlzdC4KLS0gICBU aGlzIGZ1bmN0aW9uIHdhcyBkZXNpZ25lZCBmb3IgdXNlIGluIHRoZSBPUF9GNzdfVU5ERVRFUk1J TkVEX0FSR0xJU1QKLS0gICBjYXNlIG9mIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCBhcyBtdWx0 aXBsZSwgYnV0IG5vdCBhbGwsIGNvZGUgcGF0aHMKLS0gICByZXF1aXJlIGEgZ2VuZXJpYyBza2lw LiAgKi8KLS0KLS1zdGF0aWMgdm9pZAotLXNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QgKGludCBu YXJncywgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0tCQkJICAgZW51bSBub3Np ZGUgbm9zaWRlKQotLXsKLS0gIGZvciAoaW50IGkgPSAwOyBpIDwgbmFyZ3M7ICsraSkKLS0gICAg ZXZhbHVhdGVfc3ViZXhwIChudWxscHRyLCBleHAsIHBvcywgbm9zaWRlKTsKLSsgIHJldHVybiBl dmFsdWF0ZV9zdWJleHBfZG9fY2FsbCAoZXhwLCBub3NpZGUsIG5hcmdzLCBhcmd2ZWMsCi0rCQkJ CSAgdmFyX2Z1bmNfbmFtZSwgZXhwZWN0X3R5cGUpOwotIH0KLSAKLSAvKiBSZXR1cm4gdHJ1ZSBp ZiB0eXBlIGlzIGludGVncmFsIG9yIHJlZmVyZW5jZSB0byBpbnRlZ3JhbCAqLwotQEAgLTEyNjAs NjcgKzEyMTcsNiBAQCBpc19pbnRlZ3JhbF9vcl9pbnRlZ3JhbF9yZWZlcmVuY2UgKHN0cnVjdCB0 eXBlICp0eXBlKQotIAkgICYmIGlzX2ludGVncmFsX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKSk7Ci0gfQotIAotLS8qIENhbGxlZCBmcm9tIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCB0 byBwZXJmb3JtIGFycmF5IGluZGV4aW5nLCBhbmQKLS0gICBzdWItcmFuZ2UgZXh0cmFjdGlvbiwg Zm9yIEZvcnRyYW4uICBBcyB3ZWxsIGFzIGFycmF5cyB0aGlzIGZ1bmN0aW9uCi0tICAgYWxzbyBo YW5kbGVzIHN0cmluZ3MgYXMgdGhleSBjYW4gYmUgdHJlYXRlZCBsaWtlIGFycmF5cyBvZiBjaGFy YWN0ZXJzLgotLSAgIEFSUkFZIGlzIHRoZSBhcnJheSBvciBzdHJpbmcgYmVpbmcgYWNjZXNzZWQu ICBFWFAsIFBPUywgYW5kIE5PU0lERSBhcmUKLS0gICBhcyBmb3IgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkLCBhbmQgTkFSR1MgaXMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMKLS0gICBpbiB0aGlz IGFjY2VzcyAoZS5nLiAnYXJyYXkgKDEsMiwzKScgd291bGQgYmUgTkFSR1MgMykuICAqLwotLQot LXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLWZvcnRyYW5fdmFsdWVfc3ViYXJyYXkgKHN0cnVjdCB2 YWx1ZSAqYXJyYXksIHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0tCQkJaW50ICpwb3MsIGludCBu YXJncywgZW51bSBub3NpZGUgbm9zaWRlKQotLXsKLS0gIGlmIChleHAtPmVsdHNbKnBvc10ub3Bj b2RlID09IE9QX1JBTkdFKQotLSAgICByZXR1cm4gdmFsdWVfZjkwX3N1YmFycmF5IChhcnJheSwg ZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCi0tICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKLS0gICAg ewotLSAgICAgIHNraXBfdW5kZXRlcm1pbmVkX2FyZ2xpc3QgKG5hcmdzLCBleHAsIHBvcywgbm9z aWRlKTsKLS0gICAgICAvKiBSZXR1cm4gdGhlIGR1bW15IHZhbHVlIHdpdGggdGhlIGNvcnJlY3Qg dHlwZS4gICovCi0tICAgICAgcmV0dXJuIGFycmF5OwotLSAgICB9Ci0tCi0tICBMT05HRVNUIHN1 YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLS0gIGludCBuZGltZW5zaW9ucyA9IDE7 Ci0tICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFycmF5 KSk7Ci0tCi0tICBpZiAobmFyZ3MgPiBNQVhfRk9SVFJBTl9ESU1TKQotLSAgICBlcnJvciAoXygi VG9vIG1hbnkgc3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMp OwotLQotLSAgbmRpbWVuc2lvbnMgPSBjYWxjX2Y3N19hcnJheV9kaW1zICh0eXBlKTsKLS0KLS0g IGlmIChuYXJncyAhPSBuZGltZW5zaW9ucykKLS0gICAgZXJyb3IgKF8oIldyb25nIG51bWJlciBv ZiBzdWJzY3JpcHRzIikpOwotLQotLSAgZ2RiX2Fzc2VydCAobmFyZ3MgPiAwKTsKLS0KLS0gIC8q IE5vdyB0aGF0IHdlIGtub3cgd2UgaGF2ZSBhIGxlZ2FsIGFycmF5IHN1YnNjcmlwdCBleHByZXNz aW9uIGxldCB1cwotLSAgICAgYWN0dWFsbHkgZmluZCBvdXQgd2hlcmUgdGhpcyBlbGVtZW50IGV4 aXN0cyBpbiB0aGUgYXJyYXkuICAqLwotLQotLSAgLyogVGFrZSBhcnJheSBpbmRpY2VzIGxlZnQg dG8gcmlnaHQuICAqLwotLSAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgaSsrKQotLSAgICB7 Ci0tICAgICAgLyogRXZhbHVhdGUgZWFjaCBzdWJzY3JpcHQ7IGl0IG11c3QgYmUgYSBsZWdhbCBp bnRlZ2VyIGluIEY3Ny4gICovCi0tICAgICAgdmFsdWUgKmFyZzIgPSBldmFsdWF0ZV9zdWJleHBf d2l0aF9jb2VyY2lvbiAoZXhwLCBwb3MsIG5vc2lkZSk7Ci0tCi0tICAgICAgLyogRmlsbCBpbiB0 aGUgc3Vic2NyaXB0IGFycmF5LiAgKi8KLS0gICAgICBzdWJzY3JpcHRfYXJyYXlbaV0gPSB2YWx1 ZV9hc19sb25nIChhcmcyKTsKLS0gICAgfQotLQotLSAgLyogSW50ZXJuYWwgdHlwZSBvZiBhcnJh eSBpcyBhcnJhbmdlZCByaWdodCB0byBsZWZ0LiAgKi8KLS0gIGZvciAoaW50IGkgPSBuYXJnczsg aSA+IDA7IGktLSkKLS0gICAgewotLSAgICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hl Y2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLS0gICAgICBMT05HRVNUIGluZGV4ID0g c3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKLS0KLS0gICAgICBhcnJheSA9IHZhbHVlX3N1YnNjcmlw dGVkX3J2YWx1ZSAoYXJyYXksIGluZGV4LAotLQkJCQkJZjc3X2dldF9sb3dlcmJvdW5kIChhcnJh eV90eXBlKSk7Ci0tICAgIH0KLS0KLS0gIHJldHVybiBhcnJheTsKLS19Ci0tCi0gc3RydWN0IHZh bHVlICoKLSBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKLSAJCQkgIHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAotQEAgLTEzMzUsNyAr MTIzMSw2IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAotICAgc3RydWN0IHR5cGUgKnR5cGU7Ci0gICBpbnQgbmFyZ3M7Ci0gICBzdHJ1Y3QgdmFs dWUgKiphcmd2ZWM7Ci0tICBpbnQgY29kZTsKLSAgIGludCBpeDsKLSAgIGxvbmcgbWVtX29mZnNl dDsKLSAgIHN0cnVjdCB0eXBlICoqYXJnX3R5cGVzOwotQEAgLTE5NzYsODQgKzE4NzEsNiBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAgICAg Y2FzZSBPUF9GVU5DQUxMOgotICAgICAgIHJldHVybiBldmFsdWF0ZV9mdW5jYWxsIChleHBlY3Rf dHlwZSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0gCi0tICAgIGNhc2UgT1BfRjc3X1VOREVURVJNSU5F RF9BUkdMSVNUOgotLQotLSAgICAgIC8qIFJlbWVtYmVyIHRoYXQgaW4gRjc3LCBmdW5jdGlvbnMs IHN1YnN0cmluZyBvcHMgYW5kIAotLSAgICAgICAgIGFycmF5IHN1YnNjcmlwdCBvcGVyYXRpb25z IGNhbm5vdCBiZSBkaXNhbWJpZ3VhdGVkIAotLSAgICAgICAgIGF0IHBhcnNlIHRpbWUuICBXZSBo YXZlIG1hZGUgYWxsIGFycmF5IHN1YnNjcmlwdCBvcGVyYXRpb25zLCAKLS0gICAgICAgICBzdWJz dHJpbmcgb3BlcmF0aW9ucyBhcyB3ZWxsIGFzIGZ1bmN0aW9uIGNhbGxzICBjb21lIGhlcmUgCi0t ICAgICAgICAgYW5kIHdlIG5vdyBoYXZlIHRvIGRpc2NvdmVyIHdoYXQgdGhlIGhlY2sgdGhpcyB0 aGluZyBhY3R1YWxseSB3YXMuCi0tICAgICAgICAgSWYgaXQgaXMgYSBmdW5jdGlvbiwgd2UgcHJv Y2VzcyBqdXN0IGFzIGlmIHdlIGdvdCBhbiBPUF9GVU5DQUxMLiAgKi8KLS0KLS0gICAgICBuYXJn cyA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGMgKyAxXS5sb25nY29uc3QpOwotLSAgICAg ICgqcG9zKSArPSAyOwotLQotLSAgICAgIC8qIEZpcnN0IGRldGVybWluZSB0aGUgdHlwZSBjb2Rl IHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotLSAgICAgIGFyZzEgPSBldmFsdWF0ZV9zdWJleHAg KG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpOwotLSAgICAgIHR5cGUgPSBjaGVja190eXBlZGVm ICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0tICAgICAgY29kZSA9IHR5cGUtPmNvZGUgKCk7Ci0tCi0t ICAgICAgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BUUikKLS0JewotLQkgIC8qIEZvcnRyYW4gYWx3 YXlzIHBhc3NlcyB2YXJpYWJsZSB0byBzdWJyb3V0aW5lcyBhcyBwb2ludGVyLgotLQkgICAgIFNv IHdlIG5lZWQgdG8gbG9vayBpbnRvIGl0cyB0YXJnZXQgdHlwZSB0byBzZWUgaWYgaXQgaXMKLS0J ICAgICBhcnJheSwgc3RyaW5nIG9yIGZ1bmN0aW9uLiAgSWYgaXQgaXMsIHdlIG5lZWQgdG8gc3dp dGNoCi0tCSAgICAgdG8gdGhlIHRhcmdldCB2YWx1ZSB0aGUgb3JpZ2luYWwgb25lIHBvaW50cyB0 by4gICovIAotLQkgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLS0KLS0JICBpZiAodGFyZ2V0X3R5cGUtPmNvZGUgKCkg PT0gVFlQRV9DT0RFX0FSUkFZCi0tCSAgICAgIHx8IHRhcmdldF90eXBlLT5jb2RlICgpID09IFRZ UEVfQ09ERV9TVFJJTkcKLS0JICAgICAgfHwgdGFyZ2V0X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9D T0RFX0ZVTkMpCi0tCSAgICB7Ci0tCSAgICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFyZzEpOwotLQkg ICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotLQkgICAgICBj b2RlID0gdHlwZS0+Y29kZSAoKTsKLS0JICAgIH0KLS0JfSAKLS0KLS0gICAgICBzd2l0Y2ggKGNv ZGUpCi0tCXsKLS0JY2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0tCWNhc2UgVFlQRV9DT0RFX1NUUklO RzoKLS0JICByZXR1cm4gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5h cmdzLCBub3NpZGUpOwotLQotLQljYXNlIFRZUEVfQ09ERV9QVFI6Ci0tCWNhc2UgVFlQRV9DT0RF X0ZVTkM6Ci0tCWNhc2UgVFlQRV9DT0RFX0lOVEVSTkFMX0ZVTkNUSU9OOgotLQkgIC8qIEl0J3Mg YSBmdW5jdGlvbiBjYWxsLiAgKi8KLS0JICAvKiBBbGxvY2F0ZSBhcmcgdmVjdG9yLCBpbmNsdWRp bmcgc3BhY2UgZm9yIHRoZSBmdW5jdGlvbiB0byBiZQotLQkgICAgIGNhbGxlZCBpbiBhcmd2ZWNb MF0gYW5kIGEgdGVybWluYXRpbmcgTlVMTC4gICovCi0tCSAgYXJndmVjID0gKHN0cnVjdCB2YWx1 ZSAqKikKLS0JICAgIGFsbG9jYSAoc2l6ZW9mIChzdHJ1Y3QgdmFsdWUgKikgKiAobmFyZ3MgKyAy KSk7Ci0tCSAgYXJndmVjWzBdID0gYXJnMTsKLS0JICB0ZW0gPSAxOwotLQkgIGZvciAoOyB0ZW0g PD0gbmFyZ3M7IHRlbSsrKQotLQkgICAgewotLQkgICAgICBhcmd2ZWNbdGVtXSA9IGV2YWx1YXRl X3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRlKTsKLS0JICAgICAgLyogQXJn dW1lbnRzIGluIEZvcnRyYW4gYXJlIHBhc3NlZCBieSBhZGRyZXNzLiAgQ29lcmNlIHRoZQotLQkJ IGFyZ3VtZW50cyBoZXJlIHJhdGhlciB0aGFuIGluIHZhbHVlX2FyZ19jb2VyY2UgYXMgb3RoZXJ3 aXNlCi0tCQkgdGhlIGNhbGwgdG8gbWFsbG9jIHRvIHBsYWNlIHRoZSBub24tbHZhbHVlIHBhcmFt ZXRlcnMgaW4KLS0JCSB0YXJnZXQgbWVtb3J5IGlzIGhpdCBieSB0aGlzIEZvcnRyYW4gc3BlY2lm aWMgbG9naWMuICBUaGlzCi0tCQkgcmVzdWx0cyBpbiBtYWxsb2MgYmVpbmcgY2FsbGVkIHdpdGgg YSBwb2ludGVyIHRvIGFuIGludGVnZXIKLS0JCSBmb2xsb3dlZCBieSBhbiBhdHRlbXB0IHRvIG1h bGxvYyB0aGUgYXJndW1lbnRzIHRvIG1hbGxvYyBpbgotLQkJIHRhcmdldCBtZW1vcnkuICBJbmZp bml0ZSByZWN1cnNpb24gZW5zdWVzLiAgKi8KLS0JICAgICAgaWYgKGNvZGUgPT0gVFlQRV9DT0RF X1BUUiB8fCBjb2RlID09IFRZUEVfQ09ERV9GVU5DKQotLQkJewotLQkJICBib29sIGlzX2FydGlm aWNpYWwKLS0JCSAgICA9IFRZUEVfRklFTERfQVJUSUZJQ0lBTCAodmFsdWVfdHlwZSAoYXJnMSks IHRlbSAtIDEpOwotLQkJICBhcmd2ZWNbdGVtXSA9IGZvcnRyYW5fYXJndW1lbnRfY29udmVydCAo YXJndmVjW3RlbV0sCi0tCQkJCQkJCSAgaXNfYXJ0aWZpY2lhbCk7Ci0tCQl9Ci0tCSAgICB9Ci0t CSAgYXJndmVjW3RlbV0gPSAwOwkvKiBzaWduYWwgZW5kIG9mIGFyZ2xpc3QgKi8KLS0JICBpZiAo bm9zaWRlID09IEVWQUxfU0tJUCkKLS0JICAgIHJldHVybiBldmFsX3NraXBfdmFsdWUgKGV4cCk7 Ci0tCSAgcmV0dXJuIGV2YWxfY2FsbCAoZXhwLCBub3NpZGUsIG5hcmdzLCBhcmd2ZWMsIE5VTEws IGV4cGVjdF90eXBlKTsKLS0KLS0JZGVmYXVsdDoKLS0JICBlcnJvciAoXygiQ2Fubm90IHBlcmZv cm0gc3Vic3RyaW5nIG9uIHRoaXMgdHlwZSIpKTsKLS0JfQotLQotICAgICBjYXNlIE9QX0NPTVBM RVg6Ci0gICAgICAgLyogV2UgaGF2ZSBhIGNvbXBsZXggbnVtYmVyLCBUaGVyZSBzaG91bGQgYmUg MiBmbG9hdGluZyAKLSAgICAgICAgICBwb2ludCBudW1iZXJzIHRoYXQgY29tcG9zZSBpdC4gICov Ci1AQCAtMzM0NiwyNyArMzE2MywzIEBAIHBhcnNlX2FuZF9ldmFsX3R5cGUgKGNoYXIgKnAsIGlu dCBsZW5ndGgpCi0gICAgIGVycm9yIChfKCJJbnRlcm5hbCBlcnJvciBpbiBldmFsX3R5cGUuIikp OwotICAgcmV0dXJuIGV4cHItPmVsdHNbMV0udHlwZTsKLSB9Ci0tCi0tLyogUmV0dXJuIHRoZSBu dW1iZXIgb2YgZGltZW5zaW9ucyBmb3IgYSBGb3J0cmFuIGFycmF5IG9yIHN0cmluZy4gICovCi0t Ci0taW50Ci0tY2FsY19mNzdfYXJyYXlfZGltcyAoc3RydWN0IHR5cGUgKmFycmF5X3R5cGUpCi0t ewotLSAgaW50IG5kaW1lbiA9IDE7Ci0tICBzdHJ1Y3QgdHlwZSAqdG1wX3R5cGU7Ci0tCi0tICBp ZiAoKGFycmF5X3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX1NUUklORykpCi0tICAgIHJldHVy biAxOwotLQotLSAgaWYgKChhcnJheV90eXBlLT5jb2RlICgpICE9IFRZUEVfQ09ERV9BUlJBWSkp Ci0tICAgIGVycm9yIChfKCJDYW4ndCBnZXQgZGltZW5zaW9ucyBmb3IgYSBub24tYXJyYXkgdHlw ZSIpKTsKLS0KLS0gIHRtcF90eXBlID0gYXJyYXlfdHlwZTsKLS0KLS0gIHdoaWxlICgodG1wX3R5 cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSkpKQotLSAgICB7Ci0tICAgICAgaWYgKHRt cF90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9BUlJBWSkKLS0JKytuZGltZW47Ci0tICAgIH0K LS0gIHJldHVybiBuZGltZW47Ci0tfQotZGlmZiAtLWdpdCBhL2dkYi9leHBwcmludC5jIGIvZ2Ri L2V4cHByaW50LmMKLS0tLSBhL2dkYi9leHBwcmludC5jCi0rKysgYi9nZGIvZXhwcHJpbnQuYwot QEAgLTUzLDYgKzUzLDI1IEBAIHByaW50X3N1YmV4cCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50ICpwb3MsCi0gICBleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5wcmludF9zdWJl eHAgKGV4cCwgcG9zLCBzdHJlYW0sIHByZWMpOwotIH0KLSAKLSsvKiBTZWUgcGFyc2VyLWRlZnMu aC4gICovCi0rCi0rdm9pZAotK3ByaW50X3N1YmV4cF9mdW5jYWxsIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgKnBvcywKLSsJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0rewot KyAgKCpwb3MpICs9IDI7Ci0rICB1bnNpZ25lZCBuYXJncyA9IGxvbmdlc3RfdG9faW50IChleHAt PmVsdHNbKnBvc10ubG9uZ2NvbnN0KTsKLSsgIHByaW50X3N1YmV4cCAoZXhwLCBwb3MsIHN0cmVh bSwgUFJFQ19TVUZGSVgpOwotKyAgZnB1dHNfZmlsdGVyZWQgKCIgKCIsIHN0cmVhbSk7Ci0rICBm b3IgKHVuc2lnbmVkIHRlbSA9IDA7IHRlbSA8IG5hcmdzOyB0ZW0rKykKLSsgICAgewotKyAgICAg IGlmICh0ZW0gIT0gMCkKLSsJZnB1dHNfZmlsdGVyZWQgKCIsICIsIHN0cmVhbSk7Ci0rICAgICAg cHJpbnRfc3ViZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX0FCT1ZFX0NPTU1BKTsKLSsgICAg fQotKyAgZnB1dHNfZmlsdGVyZWQgKCIpIiwgc3RyZWFtKTsKLSt9Ci0rCi0gLyogU3RhbmRhcmQg aW1wbGVtZW50YXRpb24gb2YgcHJpbnRfc3ViZXhwIGZvciB1c2UgaW4gbGFuZ3VhZ2VfZGVmbgot ICAgIHZlY3RvcnMuICAqLwotIHZvaWQKLUBAIC0xODcsMTggKzIwNiw3IEBAIHByaW50X3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0gICAgICAgcmV0 dXJuOwotIAotICAgICBjYXNlIE9QX0ZVTkNBTEw6Ci0tICAgIGNhc2UgT1BfRjc3X1VOREVURVJN SU5FRF9BUkdMSVNUOgotLSAgICAgICgqcG9zKSArPSAyOwotLSAgICAgIG5hcmdzID0gbG9uZ2Vz dF90b19pbnQgKGV4cC0+ZWx0c1twYyArIDFdLmxvbmdjb25zdCk7Ci0tICAgICAgcHJpbnRfc3Vi ZXhwIChleHAsIHBvcywgc3RyZWFtLCBQUkVDX1NVRkZJWCk7Ci0tICAgICAgZnB1dHNfZmlsdGVy ZWQgKCIgKCIsIHN0cmVhbSk7Ci0tICAgICAgZm9yICh0ZW0gPSAwOyB0ZW0gPCBuYXJnczsgdGVt KyspCi0tCXsKLS0JICBpZiAodGVtICE9IDApCi0tCSAgICBmcHV0c19maWx0ZXJlZCAoIiwgIiwg c3RyZWFtKTsKLS0JICBwcmludF9zdWJleHAgKGV4cCwgcG9zLCBzdHJlYW0sIFBSRUNfQUJPVkVf Q09NTUEpOwotLQl9Ci0tICAgICAgZnB1dHNfZmlsdGVyZWQgKCIpIiwgc3RyZWFtKTsKLSsgICAg ICBwcmludF9zdWJleHBfZnVuY2FsbCAoZXhwLCBwb3MsIHN0cmVhbSk7Ci0gICAgICAgcmV0dXJu OwotIAotICAgICBjYXNlIE9QX05BTUU6Ci1AQCAtNzk2LDYgKzgwNCwyMiBAQCBkdW1wX3N1YmV4 cF9ib2R5IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLCBp bnQgZWx0KQotICAgcmV0dXJuIGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfZXhwX2Rlc2MtPmR1bXBf c3ViZXhwX2JvZHkgKGV4cCwgc3RyZWFtLCBlbHQpOwotIH0KLSAKLSsvKiBTZWUgcGFyc2VyLWRl ZnMuaC4gICovCi0rCi0raW50Ci0rZHVtcF9zdWJleHBfYm9keV9mdW5jYWxsIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLAotKwkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IGVsdCkKLSt7 Ci0rICBpbnQgbmFyZ3MgPSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW2VsdF0ubG9uZ2NvbnN0 KTsKLSsgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIk51bWJlciBvZiBhcmdzOiAlZCIsIG5h cmdzKTsKLSsgIGVsdCArPSAyOwotKwotKyAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbmFyZ3MgKyAx OyBpKyspCi0rICAgIGVsdCA9IGR1bXBfc3ViZXhwIChleHAsIHN0cmVhbSwgZWx0KTsKLSsKLSsg IHJldHVybiBlbHQ7Ci0rfQotKwotIC8qIERlZmF1bHQgdmFsdWUgZm9yIHN1YmV4cF9ib2R5IGlu IGV4cF9kZXNjcmlwdG9yIHZlY3Rvci4gICovCi0gCi0gaW50Ci1AQCAtOTMxLDE4ICs5NTUsNyBA QCBkdW1wX3N1YmV4cF9ib2R5X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotICAg ICAgIGVsdCArPSAyOwotICAgICAgIGJyZWFrOwotICAgICBjYXNlIE9QX0ZVTkNBTEw6Ci0tICAg IGNhc2UgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdMSVNUOgotLSAgICAgIHsKLS0JaW50IGksIG5h cmdzOwotLQotLQluYXJncyA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbZWx0XS5sb25nY29u c3QpOwotLQotLQlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJOdW1iZXIgb2YgYXJnczogJWQi LCBuYXJncyk7Ci0tCWVsdCArPSAyOwotLQotLQlmb3IgKGkgPSAxOyBpIDw9IG5hcmdzICsgMTsg aSsrKQotLQkgIGVsdCA9IGR1bXBfc3ViZXhwIChleHAsIHN0cmVhbSwgZWx0KTsKLS0gICAgICB9 Ci0rICAgICAgZWx0ID0gZHVtcF9zdWJleHBfYm9keV9mdW5jYWxsIChleHAsIHN0cmVhbSwgZWx0 KTsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBPUF9BUlJBWToKLSAgICAgICB7Ci1kaWZmIC0t Z2l0IGEvZ2RiL2V4cHJlc3Npb24uaCBiL2dkYi9leHByZXNzaW9uLmgKLS0tLSBhL2dkYi9leHBy ZXNzaW9uLmgKLSsrKyBiL2dkYi9leHByZXNzaW9uLmgKLUBAIC0xNTUsNiArMTU1LDE4IEBAIGVu dW0gbm9zaWRlCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk Ci0gICAoc3RydWN0IHR5cGUgKiwgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50ICosIGVudW0gbm9z aWRlKTsKLSAKLSsvKiBFdmFsdWF0ZSBhIGZ1bmN0aW9uIGNhbGwuICBUaGUgZnVuY3Rpb24gdG8g YmUgY2FsbGVkIGlzIGluIEFSR1ZFQ1swXSBhbmQKLSsgICB0aGUgYXJndW1lbnRzIHBhc3NlZCB0 byB0aGUgZnVuY3Rpb24gYXJlIGluIEFSR1ZFQ1sxLi5OQVJHU10uCi0rICAgRlVOQ1RJT05fTkFN RSBpcyB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24sIGlmIGtub3duLgotKyAgIERFRkFVTFRfUkVU VVJOX1RZUEUgaXMgdXNlZCBhcyB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdHlwZSBpZiB0aGUgcmV0 dXJuCi0rICAgdHlwZSBpcyB1bmtub3duLiAgKi8KLSsKLStleHRlcm4gc3RydWN0IHZhbHVlICpl dmFsdWF0ZV9zdWJleHBfZG9fY2FsbCAoZXhwcmVzc2lvbiAqZXhwLAotKwkJCQkJICAgICAgZW51 bSBub3NpZGUgbm9zaWRlLAotKwkJCQkJICAgICAgaW50IG5hcmdzLCB2YWx1ZSAqKmFyZ3ZlYywK LSsJCQkJCSAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCi0rCQkJCQkgICAgICB0eXBl ICpkZWZhdWx0X3JldHVybl90eXBlKTsKLSsKLSAvKiBGcm9tIGV4cHByaW50LmMgKi8KLSAKLSBl eHRlcm4gdm9pZCBwcmludF9leHByZXNzaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBzdHJ1Y3Qg dWlfZmlsZSAqKTsKLWRpZmYgLS1naXQgYS9nZGIvZi1sYW5nLmMgYi9nZGIvZi1sYW5nLmMKLS0t LSBhL2dkYi9mLWxhbmcuYwotKysrIGIvZ2RiL2YtbGFuZy5jCi1AQCAtMTE0LDYgKzExNCwxMzQg QEAgZW51bSBmX3ByaW1pdGl2ZV90eXBlcyB7Ci0gICBucl9mX3ByaW1pdGl2ZV90eXBlcwotIH07 Ci0gCi0rLyogQ2FsbGVkIGZyb20gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSB0byB0YWtlIGEgc2xp Y2Ugb2YgYW4gYXJyYXkgb3IgYQotKyAgIHN0cmluZy4gIEFSUkFZIGlzIHRoZSBhcnJheSBvciBz dHJpbmcgdG8gYmUgYWNjZXNzZWQuICBFWFAsIFBPUywgYW5kCi0rICAgTk9TSURFIGFyZSBhcyBm b3IgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkLiAgUmV0dXJuIGEgdmFsdWUgdGhhdCBpcyBhCi0r ICAgc2xpY2Ugb2YgdGhlIGFycmF5LiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLSt2 YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCi0rCQkgICAgc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRlIG5vc2lkZSkKLSt7Ci0rICBpbnQg cGMgPSAoKnBvcykgKyAxOwotKyAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91bmQ7Ci0rICBz dHJ1Y3QgdHlwZSAqcmFuZ2UgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSktPmlu ZGV4X3R5cGUgKCkpOwotKyAgZW51bSByYW5nZV90eXBlIHJhbmdlX3R5cGUKLSsgICAgPSAoZW51 bSByYW5nZV90eXBlKSBsb25nZXN0X3RvX2ludCAoZXhwLT5lbHRzW3BjXS5sb25nY29uc3QpOwot KwotKyAgKnBvcyArPSAzOwotKwotKyAgaWYgKHJhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFV TFQgfHwgcmFuZ2VfdHlwZSA9PSBCT1RIX0JPVU5EX0RFRkFVTFQpCi0rICAgIGxvd19ib3VuZCA9 IHJhbmdlLT5ib3VuZHMgKCktPmxvdy5jb25zdF92YWwgKCk7Ci0rICBlbHNlCi0rICAgIGxvd19i b3VuZCA9IHZhbHVlX2FzX2xvbmcgKGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3Ms IG5vc2lkZSkpOwotKwotKyAgaWYgKHJhbmdlX3R5cGUgPT0gSElHSF9CT1VORF9ERUZBVUxUIHx8 IHJhbmdlX3R5cGUgPT0gQk9USF9CT1VORF9ERUZBVUxUKQotKyAgICBoaWdoX2JvdW5kID0gcmFu Z2UtPmJvdW5kcyAoKS0+aGlnaC5jb25zdF92YWwgKCk7Ci0rICBlbHNlCi0rICAgIGhpZ2hfYm91 bmQgPSB2YWx1ZV9hc19sb25nIChldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBu b3NpZGUpKTsKLSsKLSsgIHJldHVybiB2YWx1ZV9zbGljZSAoYXJyYXksIGxvd19ib3VuZCwgaGln aF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwotK30KLSsKLSsvKiBIZWxwZXIgZm9yIHNraXBwaW5n IGFsbCB0aGUgYXJndW1lbnRzIGluIGFuIHVuZGV0ZXJtaW5lZCBhcmd1bWVudCBsaXN0LgotKyAg IFRoaXMgZnVuY3Rpb24gd2FzIGRlc2lnbmVkIGZvciB1c2UgaW4gdGhlIE9QX0Y3N19VTkRFVEVS TUlORURfQVJHTElTVAotKyAgIGNhc2Ugb2YgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIGFzIG11 bHRpcGxlLCBidXQgbm90IGFsbCwgY29kZSBwYXRocwotKyAgIHJlcXVpcmUgYSBnZW5lcmljIHNr aXAuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2tpcF91bmRldGVybWluZWRfYXJnbGlzdCAoaW50 IG5hcmdzLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcywKLSsJCQkgICBlbnVtIG5v c2lkZSBub3NpZGUpCi0rewotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYXJnczsgKytpKQotKyAg ICBldmFsdWF0ZV9zdWJleHAgKG51bGxwdHIsIGV4cCwgcG9zLCBub3NpZGUpOwotK30KLSsKLSsv KiBSZXR1cm4gdGhlIG51bWJlciBvZiBkaW1lbnNpb25zIGZvciBhIEZvcnRyYW4gYXJyYXkgb3Ig c3RyaW5nLiAgKi8KLSsKLStpbnQKLStjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAq YXJyYXlfdHlwZSkKLSt7Ci0rICBpbnQgbmRpbWVuID0gMTsKLSsgIHN0cnVjdCB0eXBlICp0bXBf dHlwZTsKLSsKLSsgIGlmICgoYXJyYXlfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RSSU5H KSkKLSsgICAgcmV0dXJuIDE7Ci0rCi0rICBpZiAoKGFycmF5X3R5cGUtPmNvZGUgKCkgIT0gVFlQ RV9DT0RFX0FSUkFZKSkKLSsgICAgZXJyb3IgKF8oIkNhbid0IGdldCBkaW1lbnNpb25zIGZvciBh IG5vbi1hcnJheSB0eXBlIikpOwotKwotKyAgdG1wX3R5cGUgPSBhcnJheV90eXBlOwotKwotKyAg d2hpbGUgKCh0bXBfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSkpCi0rICAgIHsK LSsgICAgICBpZiAodG1wX3R5cGUtPmNvZGUgKCkgPT0gVFlQRV9DT0RFX0FSUkFZKQotKwkrK25k aW1lbjsKLSsgICAgfQotKyAgcmV0dXJuIG5kaW1lbjsKLSt9Ci0rCi0rLyogQ2FsbGVkIGZyb20g ZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIHRvIHBlcmZvcm0gYXJyYXkgaW5kZXhpbmcsIGFuZAot KyAgIHN1Yi1yYW5nZSBleHRyYWN0aW9uLCBmb3IgRm9ydHJhbi4gIEFzIHdlbGwgYXMgYXJyYXlz IHRoaXMgZnVuY3Rpb24KLSsgICBhbHNvIGhhbmRsZXMgc3RyaW5ncyBhcyB0aGV5IGNhbiBiZSB0 cmVhdGVkIGxpa2UgYXJyYXlzIG9mIGNoYXJhY3RlcnMuCi0rICAgQVJSQVkgaXMgdGhlIGFycmF5 IG9yIHN0cmluZyBiZWluZyBhY2Nlc3NlZC4gIEVYUCwgUE9TLCBhbmQgTk9TSURFIGFyZQotKyAg IGFzIGZvciBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQsIGFuZCBOQVJHUyBpcyB0aGUgbnVtYmVy IG9mIGFyZ3VtZW50cwotKyAgIGluIHRoaXMgYWNjZXNzIChlLmcuICdhcnJheSAoMSwyLDMpJyB3 b3VsZCBiZSBOQVJHUyAzKS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rZm9ydHJh bl92YWx1ZV9zdWJhcnJheSAoc3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IGV4cHJlc3Npb24g KmV4cCwKLSsJCQlpbnQgKnBvcywgaW50IG5hcmdzLCBlbnVtIG5vc2lkZSBub3NpZGUpCi0rewot KyAgaWYgKGV4cC0+ZWx0c1sqcG9zXS5vcGNvZGUgPT0gT1BfUkFOR0UpCi0rICAgIHJldHVybiB2 YWx1ZV9mOTBfc3ViYXJyYXkgKGFycmF5LCBleHAsIHBvcywgbm9zaWRlKTsKLSsKLSsgIGlmIChu b3NpZGUgPT0gRVZBTF9TS0lQKQotKyAgICB7Ci0rICAgICAgc2tpcF91bmRldGVybWluZWRfYXJn bGlzdCAobmFyZ3MsIGV4cCwgcG9zLCBub3NpZGUpOwotKyAgICAgIC8qIFJldHVybiB0aGUgZHVt bXkgdmFsdWUgd2l0aCB0aGUgY29ycmVjdCB0eXBlLiAgKi8KLSsgICAgICByZXR1cm4gYXJyYXk7 Ci0rICAgIH0KLSsKLSsgIExPTkdFU1Qgc3Vic2NyaXB0X2FycmF5W01BWF9GT1JUUkFOX0RJTVNd OwotKyAgaW50IG5kaW1lbnNpb25zID0gMTsKLSsgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tf dHlwZWRlZiAodmFsdWVfdHlwZSAoYXJyYXkpKTsKLSsKLSsgIGlmIChuYXJncyA+IE1BWF9GT1JU UkFOX0RJTVMpCi0rICAgIGVycm9yIChfKCJUb28gbWFueSBzdWJzY3JpcHRzIGZvciBGNzcgKCVk IE1heCkiKSwgTUFYX0ZPUlRSQU5fRElNUyk7Ci0rCi0rICBuZGltZW5zaW9ucyA9IGNhbGNfZjc3 X2FycmF5X2RpbXMgKHR5cGUpOwotKwotKyAgaWYgKG5hcmdzICE9IG5kaW1lbnNpb25zKQotKyAg ICBlcnJvciAoXygiV3JvbmcgbnVtYmVyIG9mIHN1YnNjcmlwdHMiKSk7Ci0rCi0rICBnZGJfYXNz ZXJ0IChuYXJncyA+IDApOwotKwotKyAgLyogTm93IHRoYXQgd2Uga25vdyB3ZSBoYXZlIGEgbGVn YWwgYXJyYXkgc3Vic2NyaXB0IGV4cHJlc3Npb24gbGV0IHVzCi0rICAgICBhY3R1YWxseSBmaW5k IG91dCB3aGVyZSB0aGlzIGVsZW1lbnQgZXhpc3RzIGluIHRoZSBhcnJheS4gICovCi0rCi0rICAv KiBUYWtlIGFycmF5IGluZGljZXMgbGVmdCB0byByaWdodC4gICovCi0rICBmb3IgKGludCBpID0g MDsgaSA8IG5hcmdzOyBpKyspCi0rICAgIHsKLSsgICAgICAvKiBFdmFsdWF0ZSBlYWNoIHN1YnNj cmlwdDsgaXQgbXVzdCBiZSBhIGxlZ2FsIGludGVnZXIgaW4gRjc3LiAgKi8KLSsgICAgICB2YWx1 ZSAqYXJnMiA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRl KTsKLSsKLSsgICAgICAvKiBGaWxsIGluIHRoZSBzdWJzY3JpcHQgYXJyYXkuICAqLwotKyAgICAg IHN1YnNjcmlwdF9hcnJheVtpXSA9IHZhbHVlX2FzX2xvbmcgKGFyZzIpOwotKyAgICB9Ci0rCi0r ICAvKiBJbnRlcm5hbCB0eXBlIG9mIGFycmF5IGlzIGFycmFuZ2VkIHJpZ2h0IHRvIGxlZnQuICAq LwotKyAgZm9yIChpbnQgaSA9IG5hcmdzOyBpID4gMDsgaS0tKQotKyAgICB7Ci0rICAgICAgc3Ry dWN0IHR5cGUgKmFycmF5X3R5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcnJheSkp OwotKyAgICAgIExPTkdFU1QgaW5kZXggPSBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOwotKwotKyAg ICAgIGFycmF5ID0gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcnJheSwgaW5kZXgsCi0rCQkJ CQlmNzdfZ2V0X2xvd2VyYm91bmQgKGFycmF5X3R5cGUpKTsKLSsgICAgfQotKwotKyAgcmV0dXJu IGFycmF5OwotK30KLSsKLSAvKiBTcGVjaWFsIGV4cHJlc3Npb24gZXZhbHVhdGlvbiBjYXNlcyBm b3IgRm9ydHJhbi4gICovCi0gCi0gc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi1AQCAtMjg1LDYgKzQx Myw4NyBAQCBldmFsdWF0ZV9zdWJleHBfZiAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLCBzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAkJCQkgICBUWVBFX0xFTkdUSCAodHlwZSkpOwotICAgICAg IHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+ YnVpbHRpbl9pbnQsCi0gCQkJCSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkp KTsKLSsKLSsKLSsgICAgY2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Q6Ci0rICAgICAg LyogUmVtZW1iZXIgdGhhdCBpbiBGNzcsIGZ1bmN0aW9ucywgc3Vic3RyaW5nIG9wcyBhbmQgYXJy YXkgc3Vic2NyaXB0Ci0rICAgICAgICAgb3BlcmF0aW9ucyBjYW5ub3QgYmUgZGlzYW1iaWd1YXRl ZCBhdCBwYXJzZSB0aW1lLiAgV2UgaGF2ZSBtYWRlCi0rICAgICAgICAgYWxsIGFycmF5IHN1YnNj cmlwdCBvcGVyYXRpb25zLCBzdWJzdHJpbmcgb3BlcmF0aW9ucyBhcyB3ZWxsIGFzCi0rICAgICAg ICAgZnVuY3Rpb24gY2FsbHMgY29tZSBoZXJlIGFuZCB3ZSBub3cgaGF2ZSB0byBkaXNjb3ZlciB3 aGF0IHRoZSBoZWNrCi0rICAgICAgICAgdGhpcyB0aGluZyBhY3R1YWxseSB3YXMuICBJZiBpdCBp cyBhIGZ1bmN0aW9uLCB3ZSBwcm9jZXNzIGp1c3QgYXMKLSsgICAgICAgICBpZiB3ZSBnb3QgYW4g T1BfRlVOQ0FMTC4gICovCi0rICAgICAgaW50IG5hcmdzID0gbG9uZ2VzdF90b19pbnQgKGV4cC0+ ZWx0c1twYyArIDFdLmxvbmdjb25zdCk7Ci0rICAgICAgKCpwb3MpICs9IDI7Ci0rCi0rICAgICAg LyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcgd2l0aC4gICov Ci0rICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAobnVsbHB0ciwgZXhwLCBwb3MsIG5vc2lk ZSk7Ci0rICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKLSsg ICAgICBlbnVtIHR5cGVfY29kZSBjb2RlID0gdHlwZS0+Y29kZSAoKTsKLSsKLSsgICAgICBpZiAo Y29kZSA9PSBUWVBFX0NPREVfUFRSKQotKwl7Ci0rCSAgLyogRm9ydHJhbiBhbHdheXMgcGFzc2Vz IHZhcmlhYmxlIHRvIHN1YnJvdXRpbmVzIGFzIHBvaW50ZXIuCi0rCSAgICAgU28gd2UgbmVlZCB0 byBsb29rIGludG8gaXRzIHRhcmdldCB0eXBlIHRvIHNlZSBpZiBpdCBpcwotKwkgICAgIGFycmF5 LCBzdHJpbmcgb3IgZnVuY3Rpb24uICBJZiBpdCBpcywgd2UgbmVlZCB0byBzd2l0Y2gKLSsJICAg ICB0byB0aGUgdGFyZ2V0IHZhbHVlIHRoZSBvcmlnaW5hbCBvbmUgcG9pbnRzIHRvLiAgKi8KLSsJ ICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSk7Ci0rCi0rCSAgaWYgKHRhcmdldF90eXBlLT5jb2RlICgpID09IFRZUEVfQ09E RV9BUlJBWQotKwkgICAgICB8fCB0YXJnZXRfdHlwZS0+Y29kZSAoKSA9PSBUWVBFX0NPREVfU1RS SU5HCi0rCSAgICAgIHx8IHRhcmdldF90eXBlLT5jb2RlICgpID09IFRZUEVfQ09ERV9GVU5DKQot KwkgICAgewotKwkgICAgICBhcmcxID0gdmFsdWVfaW5kIChhcmcxKTsKLSsJICAgICAgdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKLSsJICAgICAgY29kZSA9IHR5cGUt PmNvZGUgKCk7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICBzd2l0Y2ggKGNvZGUpCi0rCXsKLSsJ Y2FzZSBUWVBFX0NPREVfQVJSQVk6Ci0rCWNhc2UgVFlQRV9DT0RFX1NUUklORzoKLSsJICByZXR1 cm4gZm9ydHJhbl92YWx1ZV9zdWJhcnJheSAoYXJnMSwgZXhwLCBwb3MsIG5hcmdzLCBub3NpZGUp OwotKwotKwljYXNlIFRZUEVfQ09ERV9QVFI6Ci0rCWNhc2UgVFlQRV9DT0RFX0ZVTkM6Ci0rCWNh c2UgVFlQRV9DT0RFX0lOVEVSTkFMX0ZVTkNUSU9OOgotKwkgIHsKLSsJICAgIC8qIEl0J3MgYSBm dW5jdGlvbiBjYWxsLiAgQWxsb2NhdGUgYXJnIHZlY3RvciwgaW5jbHVkaW5nCi0rCSAgICBzcGFj ZSBmb3IgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBpbiBhcmd2ZWNbMF0gYW5kIGEKLSsJICAg IHRlcm1pbmF0aW9uIE5VTEwuICAqLwotKwkgICAgc3RydWN0IHZhbHVlICoqYXJndmVjID0gKHN0 cnVjdCB2YWx1ZSAqKikKLSsJICAgICAgYWxsb2NhIChzaXplb2YgKHN0cnVjdCB2YWx1ZSAqKSAq IChuYXJncyArIDIpKTsKLSsJICAgIGFyZ3ZlY1swXSA9IGFyZzE7Ci0rCSAgICBpbnQgdGVtID0g MTsKLSsJICAgIGZvciAoOyB0ZW0gPD0gbmFyZ3M7IHRlbSsrKQotKwkgICAgICB7Ci0rCQlhcmd2 ZWNbdGVtXSA9IGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChleHAsIHBvcywgbm9zaWRl KTsKLSsJCS8qIEFyZ3VtZW50cyBpbiBGb3J0cmFuIGFyZSBwYXNzZWQgYnkgYWRkcmVzcy4gIENv ZXJjZSB0aGUKLSsJCSAgIGFyZ3VtZW50cyBoZXJlIHJhdGhlciB0aGFuIGluIHZhbHVlX2FyZ19j b2VyY2UgYXMKLSsJCSAgIG90aGVyd2lzZSB0aGUgY2FsbCB0byBtYWxsb2MgdG8gcGxhY2UgdGhl IG5vbi1sdmFsdWUKLSsJCSAgIHBhcmFtZXRlcnMgaW4gdGFyZ2V0IG1lbW9yeSBpcyBoaXQgYnkg dGhpcyBGb3J0cmFuCi0rCQkgICBzcGVjaWZpYyBsb2dpYy4gIFRoaXMgcmVzdWx0cyBpbiBtYWxs b2MgYmVpbmcgY2FsbGVkCi0rCQkgICB3aXRoIGEgcG9pbnRlciB0byBhbiBpbnRlZ2VyIGZvbGxv d2VkIGJ5IGFuIGF0dGVtcHQgdG8KLSsJCSAgIG1hbGxvYyB0aGUgYXJndW1lbnRzIHRvIG1hbGxv YyBpbiB0YXJnZXQgbWVtb3J5LgotKwkJICAgSW5maW5pdGUgcmVjdXJzaW9uIGVuc3Vlcy4gICov Ci0rCQlpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSIHx8IGNvZGUgPT0gVFlQRV9DT0RFX0ZVTkMp Ci0rCQkgIHsKLSsJCSAgICBib29sIGlzX2FydGlmaWNpYWwKLSsJCSAgICAgID0gVFlQRV9GSUVM RF9BUlRJRklDSUFMICh2YWx1ZV90eXBlIChhcmcxKSwgdGVtIC0gMSk7Ci0rCQkgICAgYXJndmVj W3RlbV0gPSBmb3J0cmFuX2FyZ3VtZW50X2NvbnZlcnQgKGFyZ3ZlY1t0ZW1dLAotKwkJCQkJCQkg ICAgaXNfYXJ0aWZpY2lhbCk7Ci0rCQkgIH0KLSsJICAgICAgfQotKwkgICAgYXJndmVjW3RlbV0g PSAwOwkvKiBzaWduYWwgZW5kIG9mIGFyZ2xpc3QgKi8KLSsJICAgIGlmIChub3NpZGUgPT0gRVZB TF9TS0lQKQotKwkgICAgICByZXR1cm4gZXZhbF9za2lwX3ZhbHVlIChleHApOwotKwkgICAgcmV0 dXJuIGV2YWx1YXRlX3N1YmV4cF9kb19jYWxsIChleHAsIG5vc2lkZSwgbmFyZ3MsIGFyZ3ZlYywg TlVMTCwKLSsJCQkJCSAgICBleHBlY3RfdHlwZSk7Ci0rCSAgfQotKwotKwlkZWZhdWx0OgotKwkg IGVycm9yIChfKCJDYW5ub3QgcGVyZm9ybSBzdWJzdHJpbmcgb24gdGhpcyB0eXBlIikpOwotKwl9 Ci0gICAgIH0KLSAKLSAgIC8qIFNob3VsZCBiZSB1bnJlYWNoYWJsZS4gICovCi1AQCAtMzE4LDYg KzUyNywxMSBAQCBvcGVyYXRvcl9sZW5ndGhfZiAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBjLCBpbnQgKm9wbGVucCwKLSAgICAgICBvcGxlbiA9IDE7Ci0gICAgICAgYXJncyA9 IDI7Ci0gICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgT1BfRjc3X1VOREVURVJNSU5FRF9BUkdM SVNUOgotKyAgICAgIG9wbGVuID0gMzsKLSsgICAgICBhcmdzID0gMSArIGxvbmdlc3RfdG9faW50 IChleHAtPmVsdHNbcGMgLSAyXS5sb25nY29uc3QpOwotKyAgICAgIGJyZWFrOwotICAgICB9Ci0g Ci0gICAqb3BsZW5wID0gb3BsZW47Ci1AQCAtMzkwLDYgKzYwNCwxMCBAQCBwcmludF9zdWJleHBf ZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsCi0gICAgIGNhc2UgQklOT1BfRk9S VFJBTl9NT0RVTE86Ci0gICAgICAgcHJpbnRfYmlub3Bfc3ViZXhwX2YgKGV4cCwgcG9zLCBzdHJl YW0sIHByZWMsICJNT0RVTE8iKTsKLSAgICAgICByZXR1cm47Ci0rCi0rICAgIGNhc2UgT1BfRjc3 X1VOREVURVJNSU5FRF9BUkdMSVNUOgotKyAgICAgIHByaW50X3N1YmV4cF9mdW5jYWxsIChleHAs IHBvcywgc3RyZWFtKTsKLSsgICAgICByZXR1cm47Ci0gICAgIH0KLSB9Ci0gCi1AQCAtNDMyLDYg KzY1MCw5IEBAIGR1bXBfc3ViZXhwX2JvZHlfZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSAg ICAgY2FzZSBCSU5PUF9GT1JUUkFOX01PRFVMTzoKLSAgICAgICBvcGVyYXRvcl9sZW5ndGhfZiAo ZXhwLCAoZWx0ICsgMSksICZvcGxlbiwgJm5hcmdzKTsKLSAgICAgICBicmVhazsKLSsKLSsgICAg Y2FzZSBPUF9GNzdfVU5ERVRFUk1JTkVEX0FSR0xJU1Q6Ci0rICAgICAgcmV0dXJuIGR1bXBfc3Vi ZXhwX2JvZHlfZnVuY2FsbCAoZXhwLCBzdHJlYW0sIGVsdCk7Ci0gICAgIH0KLSAKLSAgIGVsdCAr PSBvcGxlbjsKLWRpZmYgLS1naXQgYS9nZGIvZm9ydHJhbi1vcGVyYXRvci5kZWYgYi9nZGIvZm9y dHJhbi1vcGVyYXRvci5kZWYKLS0tLSBhL2dkYi9mb3J0cmFuLW9wZXJhdG9yLmRlZgotKysrIGIv Z2RiL2ZvcnRyYW4tb3BlcmF0b3IuZGVmCi1AQCAtMTcsNiArMTcsMTQgQEAKLSAgICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQotICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSAKLSsvKiBUaGlzIGlzIEVYQUNUTFkgbGlrZSBPUF9G VU5DQUxMIGJ1dCBpcyBzZW1hbnRpY2FsbHkgZGlmZmVyZW50LgotKyAgIEluIEY3NywgYXJyYXkg c3Vic2NyaXB0IGV4cHJlc3Npb25zLCBzdWJzdHJpbmcgZXhwcmVzc2lvbnMgYW5kCi0rICAgZnVu Y3Rpb24gY2FsbHMgYXJlIGFsbCBleGFjdGx5IHRoZSBzYW1lIHN5bnRhY3RpY2FsbHkuICBUaGV5 Ci0rICAgbWF5IG9ubHkgYmUgZGlzYW1iaWd1YXRlZCBhdCBydW50aW1lLiAgVGh1cyB0aGlzIG9w ZXJhdG9yLAotKyAgIHdoaWNoIGluZGljYXRlcyB0aGF0IHdlIGhhdmUgZm91bmQgc29tZXRoaW5n IG9mIHRoZSBmb3JtCi0rICAgPG5hbWU+ICggPHN0dWZmPiApLiAgKi8KLStPUCAoT1BfRjc3X1VO REVURVJNSU5FRF9BUkdMSVNUKQotKwotIC8qIFNpbmdsZSBvcGVyYW5kIGJ1aWx0aW5zLiAgKi8K LSBPUCAoVU5PUF9GT1JUUkFOX0tJTkQpCi0gT1AgKFVOT1BfRk9SVFJBTl9GTE9PUikKLWRpZmYg LS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi0tLS0gYS9nZGIvcGFyc2UuYwotKysr IGIvZ2RiL3BhcnNlLmMKLUBAIC04MTcsNyArODE3LDYgQEAgb3BlcmF0b3JfbGVuZ3RoX3N0YW5k YXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwciwgaW50IGVuZHBvcywKLSAgICAgICBi cmVhazsKLSAKLSAgICAgY2FzZSBPUF9GVU5DQUxMOgotLSAgICBjYXNlIE9QX0Y3N19VTkRFVEVS TUlORURfQVJHTElTVDoKLSAgICAgICBvcGxlbiA9IDM7Ci0gICAgICAgYXJncyA9IDEgKyBsb25n ZXN0X3RvX2ludCAoZXhwci0+ZWx0c1tlbmRwb3MgLSAyXS5sb25nY29uc3QpOwotICAgICAgIGJy ZWFrOwotZGlmZiAtLWdpdCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgK LS0tLSBhL2dkYi9wYXJzZXItZGVmcy5oCi0rKysgYi9nZGIvcGFyc2VyLWRlZnMuaAotQEAgLTMz OCw2ICszMzgsMTMgQEAgZXh0ZXJuIGludCBkdW1wX3N1YmV4cCAoc3RydWN0IGV4cHJlc3Npb24g Kiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50KTsKLSBleHRlcm4gaW50IGR1bXBfc3ViZXhwX2JvZHlf c3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICosIAotIAkJCQkgICAgICBzdHJ1Y3QgdWlfZmls ZSAqLCBpbnQpOwotIAotKy8qIER1bXAgKHRvIFNUUkVBTSkgYSBmdW5jdGlvbiBjYWxsIGxpa2Ug ZXhwcmVzc2lvbiBhdCBwb3NpdGlvbiBFTFQgaW4gdGhlCi0rICAgZXhwcmVzc2lvbiBhcnJheSBF WFAuICBSZXR1cm4gYSBuZXcgdmFsdWUgZm9yIEVMVCBqdXN0IGFmdGVyIHRoZQotKyAgIGZ1bmN0 aW9uIGNhbGwgZXhwcmVzc2lvbi4gICovCi0rCi0rZXh0ZXJuIGludCBkdW1wX3N1YmV4cF9ib2R5 X2Z1bmNhbGwgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0rCQkJCSAgICAgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwgaW50IGVsdCk7Ci0rCi0gZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoIChj b25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLCBpbnQgKik7Ci0gCi0gZXh0ZXJu IHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAq LCBpbnQsIGludCAqLAotQEAgLTQ0MCw2ICs0NDcsMTUgQEAgZXh0ZXJuIHZvaWQgcHJpbnRfc3Vi ZXhwIChzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQgKiwgc3RydWN0IHVpX2ZpbGUgKiwKLSBleHRl cm4gdm9pZCBwcmludF9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICosIGludCAq LCAKLSAJCQkJICAgc3RydWN0IHVpX2ZpbGUgKiwgZW51bSBwcmVjZWRlbmNlKTsKLSAKLSsvKiBQ cmludCBhIGZ1bmN0aW9uIGNhbGwgbGlrZSBleHByZXNzaW9uIHRvIFNUUkVBTS4gIFRoaXMgaXMg Y2FsbGVkIGFzIGEKLSsgICBoZWxwZXIgZnVuY3Rpb24gYnkgd2hpY2ggcG9pbnQgdGhlIGV4cHJl c3Npb24gbm9kZSBpZGVudGlmeWluZyB0aGlzIGFzIGEKLSsgICBmdW5jdGlvbiBjYWxsIGhhcyBh bHJlYWR5IGJlZW4gc3RyaXBwZWQgb2ZmIGFuZCBQT1Mgc2hvdWxkIHBvaW50IHRvIHRoZQotKyAg IG51bWJlciBvZiBmdW5jdGlvbiBjYWxsIGFyZ3VtZW50cy4gIEVYUCBpcyB0aGUgb2JqZWN0IGNv bnRhaW5pbmcgdGhlCi0rICAgbGlzdCBvZiBleHByZXNzaW9uIGVsZW1lbnRzLiAgKi8KLSsKLStl eHRlcm4gdm9pZCBwcmludF9zdWJleHBfZnVuY2FsbCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50ICpwb3MsCi0rCQkJCSAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci0rCi0gLyogRnVuY3Rp b24gdXNlZCB0byBhdm9pZCBkaXJlY3QgY2FsbHMgdG8gZnByaW50ZgotICAgIGluIHRoZSBjb2Rl IGdlbmVyYXRlZCBieSB0aGUgYmlzb24gcGFyc2VyLiAgKi8KLSAKLWRpZmYgLS1naXQgYS9nZGIv c3RkLW9wZXJhdG9yLmRlZiBiL2dkYi9zdGQtb3BlcmF0b3IuZGVmCi0tLS0gYS9nZGIvc3RkLW9w ZXJhdG9yLmRlZgotKysrIGIvZ2RiL3N0ZC1vcGVyYXRvci5kZWYKLUBAIC0xNjgsMTQgKzE2OCw2 IEBAIE9QIChPUF9GVU5DQUxMKQotICAgIHBvaW50ZXIuICBUaGlzIGlzIGFuIE9iamVjdGl2ZSBD IG1lc3NhZ2UuICAqLwotIE9QIChPUF9PQkpDX01TR0NBTEwpCi0gCi0tLyogVGhpcyBpcyBFWEFD VExZIGxpa2UgT1BfRlVOQ0FMTCBidXQgaXMgc2VtYW50aWNhbGx5IGRpZmZlcmVudC4KLS0gICBJ biBGNzcsIGFycmF5IHN1YnNjcmlwdCBleHByZXNzaW9ucywgc3Vic3RyaW5nIGV4cHJlc3Npb25z IGFuZAotLSAgIGZ1bmN0aW9uIGNhbGxzIGFyZSBhbGwgZXhhY3RseSB0aGUgc2FtZSBzeW50YWN0 aWNhbGx5LiAgVGhleQotLSAgIG1heSBvbmx5IGJlIGRpc2FtYmlndWF0ZWQgYXQgcnVudGltZS4g IFRodXMgdGhpcyBvcGVyYXRvciwKLS0gICB3aGljaCBpbmRpY2F0ZXMgdGhhdCB3ZSBoYXZlIGZv dW5kIHNvbWV0aGluZyBvZiB0aGUgZm9ybQotLSAgIDxuYW1lPiAoIDxzdHVmZj4gKS4gICovCi0t T1AgKE9QX0Y3N19VTkRFVEVSTUlORURfQVJHTElTVCkKLS0KLSAvKiBPUF9DT01QTEVYIHRha2Vz IGEgdHlwZSBpbiB0aGUgZm9sbG93aW5nIGVsZW1lbnQsIGZvbGxvd2VkIGJ5IGFub3RoZXIKLSAg ICBPUF9DT01QTEVYLCBtYWtpbmcgdGhyZWUgZXhwX2VsZW1lbnRzLiAgSXQgaXMgZm9sbG93ZWQg YnkgdHdvIGRvdWJsZQotICAgIGFyZ3MsIGFuZCBjb252ZXJ0cyB0aGVtIGludG8gYSBjb21wbGV4 IG51bWJlciBvZiB0aGUgZ2l2ZW4gdHlwZS4gICovCgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoxOTcw NzQxLWVhcmx5LWV4aXQtZm9yLWVtcHR5LWRlYnVnaW5mb2QtdXJsLnBhdGNoIGIvZ2RiLXJoYnox OTcwNzQxLWVhcmx5LWV4aXQtZm9yLWVtcHR5LWRlYnVnaW5mb2QtdXJsLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjc4YjA0Li4wMDAwMDAwCi0tLSBhL2dkYi1yaGJ6MTk3 MDc0MS1lYXJseS1leGl0LWZvci1lbXB0eS1kZWJ1Z2luZm9kLXVybC5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiBCcnVubyBMYXJzZW4gPGJsYXJzZW5AcmVkaGF0LmNvbT4KLURhdGU6 IFdlZCwgMjIgU2VwIDIwMjEgMTI6Mjk6MTEgLTAzMDAKLVN1YmplY3Q6IGdkYi1yaGJ6MTk3MDc0 MS1lYXJseS1leGl0LWZvci1lbXB0eS1kZWJ1Z2luZm9kLXVybC5wYXRjaAotCi07O1tnZGJdIElt cHJvdmUgZWFybHkgZXhpdHMgZm9yIGVudiB2YXIgaW4gZGVidWdpbmZvZC1zdXBwb3J0LmMKLTs7 KFRvbSBkZSBWcmllcykKLQotVGhlcmUncyBhbiBlYXJseSBleGl0IGluIGxpYmRlYnVnaW5mb2Qn cyBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlciwgd2hpY2ggY2hlY2tzCi1ib3RoIGZvcjoKLS0gZ2V0 ZW52IChERUJVR0lORk9EX1VSTFNfRU5WX1ZBUikgPT0gTlVMTCwgYW5kCi0tIChnZXRlbnYgKERF QlVHSU5GT0RfVVJMU19FTlZfVkFSKSlbMF0gPT0gJ1wwJy4KLQotSW4gZGVidWdpbmZvZF9zb3Vy Y2VfcXVlcnkgYW5kIGRlYnVnaW5mb2RfZGVidWdpbmZvX3F1ZXJ5ICh3aGljaCBib3RoCi1lbmQg dXAgY2FsbGluZyBkZWJ1Z2luZm9kX3F1ZXJ5X3NlcnZlcikgdGhlcmUgYXJlIGFsc28gZWFybHkg ZXhpdHMgY2hlY2tpbmcKLXRoZSBzYW1lIGVudiB2YXIsIGJ1dCB0aG9zZSBqdXN0IGNoZWNrIGZv ciBOVUxMLgotCi1NYWtlIHRoZSBlYXJseSBleGl0IHRlc3RzIGluIGRlYnVnaW5mb2Qtc3VwcG9y dC5jIG1hdGNoIHRob3NlIGluCi1saWJkZWJ1Z2luZm9kLgotCi1nZGIvQ2hhbmdlTG9nOgotCi0y MDIwLTExLTE4ICBUb20gZGUgVnJpZXMgIDx0ZGV2cmllc0BzdXNlLmRlPgotCi0JKiBkZWJ1Z2lu Zm9kLXN1cHBvcnQuYyAoZGVidWdpbmZvZF9zb3VyY2VfcXVlcnkpCi0JKGRlYnVnaW5mb2RfZGVi dWdpbmZvX3F1ZXJ5KTogQWxzbyBkbyBlYXJseSBleGl0IGlmCi0JIihnZXRlbnYgKERFQlVHSU5G T0RfVVJMU19FTlZfVkFSKSlbMF0gPT0gJ1wwJyIuCi0KLWRpZmYgLS1naXQgYS9nZGIvZGVidWdp bmZvZC1zdXBwb3J0LmMgYi9nZGIvZGVidWdpbmZvZC1zdXBwb3J0LmMKLS0tLSBhL2dkYi9kZWJ1 Z2luZm9kLXN1cHBvcnQuYwotKysrIGIvZ2RiL2RlYnVnaW5mb2Qtc3VwcG9ydC5jCi1AQCAtOTgs NyArOTgsOCBAQCBkZWJ1Z2luZm9kX3NvdXJjZV9xdWVyeSAoY29uc3QgdW5zaWduZWQgY2hhciAq YnVpbGRfaWQsCi0gCQkJIGNvbnN0IGNoYXIgKnNyY3BhdGgsCi0gCQkJIGdkYjo6dW5pcXVlX3ht YWxsb2NfcHRyPGNoYXI+ICpkZXN0bmFtZSkKLSB7Ci0tICBpZiAoZ2V0ZW52IChERUJVR0lORk9E X1VSTFNfRU5WX1ZBUikgPT0gTlVMTCkKLSsgIGNvbnN0IGNoYXIgKnVybHNfZW52X3ZhciA9IGdl dGVudiAoREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIpOwotKyAgaWYgKHVybHNfZW52X3ZhciA9PSBO VUxMIHx8IHVybHNfZW52X3ZhclswXSA9PSAnXDAnKQotICAgICByZXR1cm4gc2NvcGVkX2ZkICgt RU5PU1lTKTsKLSAKLSAgIGRlYnVnaW5mb2RfY2xpZW50ICpjID0gZGVidWdpbmZvZF9pbml0ICgp OwotQEAgLTEzNSw3ICsxMzYsOCBAQCBkZWJ1Z2luZm9kX2RlYnVnaW5mb19xdWVyeSAoY29uc3Qg dW5zaWduZWQgY2hhciAqYnVpbGRfaWQsCi0gCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAot IAkJCSAgICBnZGI6OnVuaXF1ZV94bWFsbG9jX3B0cjxjaGFyPiAqZGVzdG5hbWUpCi0gewotLSAg aWYgKGdldGVudiAoREVCVUdJTkZPRF9VUkxTX0VOVl9WQVIpID09IE5VTEwpCi0rICBjb25zdCBj aGFyICp1cmxzX2Vudl92YXIgPSBnZXRlbnYgKERFQlVHSU5GT0RfVVJMU19FTlZfVkFSKTsKLSsg IGlmICh1cmxzX2Vudl92YXIgPT0gTlVMTCB8fCB1cmxzX2Vudl92YXJbMF0gPT0gJ1wwJykKLSAg ICAgcmV0dXJuIHNjb3BlZF9mZCAoLUVOT1NZUyk7Ci0gCi0gICBkZWJ1Z2luZm9kX2NsaWVudCAq YyA9IGRlYnVnaW5mb2RfaW5pdCAoKTsKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzEwOTYtZ2xp YmMyLjM0LTEucGF0Y2ggYi9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTEucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ODI2OTkuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnox OTcxMDk2LWdsaWJjMi4zNC0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzA3ICswLDAgQEAK LUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZXZp biBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDE0IEp1biAyMDIxIDE5 OjEyOjA2IC0wNzAwCi1TdWJqZWN0OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTEucGF0Y2gK LQotOzsgQmFja3BvcnQgcGF0Y2ggZml4aW5nIGdkYiBvbiBnbGliYy0yLjM0IG1hY2hpbmVzIHdp dGggcmVnYXJkIHRvIGF0dGFjaGluZwotOzsgdG8gcHJvY2Vzc2VzIChSSCBCWiAxOTcxMDk2KS4K LQotZ2RiOiB0cnkgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgb25seSBhZnRlciByZWFkaW5nIGFsbCBz aGFyZWQgbGlicmFyaWVzIHdoZW4gYXR0YWNoaW5nIC8gaGFuZGxpbmcgYSBmb3JrIGNoaWxkCi0K LVdoZW4gdHJ5aW5nIHRvIGF0dGFjaCB0byBhIHB0aHJlYWQgcHJvY2VzcyBvbiBhIExpbnV4IHN5 c3RlbSB3aXRoIGdsaWJjIDIuMzMsCi13ZSBnZXQ6Ci0KLSAgICAkIC4vZ2RiIC1xIC1ueCAtLWRh dGEtZGlyZWN0b3J5PWRhdGEtZGlyZWN0b3J5IC1wIDE0NzIwMTAKLSAgICBBdHRhY2hpbmcgdG8g cHJvY2VzcyAxNDcyMDEwCi0gICAgW05ldyBMV1AgMTQ3MjAxM10KLSAgICBbTmV3IExXUCAxNDcy MDE0XQotICAgIFtOZXcgTFdQIDE0NzIwMTVdCi0gICAgRXJyb3Igd2hpbGUgcmVhZGluZyBzaGFy ZWQgbGlicmFyeSBzeW1ib2xzIGZvciAvdXNyL2xpYi9saWJwdGhyZWFkLnNvLjA6Ci0gICAgQ2Fu bm90IGZpbmQgdXNlci1sZXZlbCB0aHJlYWQgZm9yIExXUCAxNDcyMDE1OiBnZW5lcmljIGVycm9y Ci0gICAgMHgwMDAwN2ZmZmY2ZDM2MzdmIGluIHBvbGwgKCkgZnJvbSAvdXNyL2xpYi9saWJjLnNv LjYKLSAgICAoZ2RiKQotCi1XaGVuIGF0dGFjaGluZyB0byBhIHByb2Nlc3MgKG9yIGhhbmRsaW5n IGEgZm9yayBjaGlsZCwgYW4gb3BlcmF0aW9uIHZlcnkKLXNpbWlsYXIgdG8gYXR0YWNoaW5nKSwg R0RCIHJlYWRzIHRoZSBzaGFyZWQgbGlicmFyeSBsaXN0IGZyb20gdGhlCi1wcm9jZXNzLiAgRm9y IGVhY2ggc2hhcmVkIGxpYnJhcnkgKGlmICJzZXQgYXV0by1zb2xpYi1hZGQiIGlzIG9uKSwgaXQK LXJlYWRzIGl0cyBzeW1ib2xzIGFuZCBjYWxscyB0aGUgIm5ld19vYmpmaWxlIiBvYnNlcnZhYmxl LgotCi1UaGUgbGlidGhyZWFkLWRiIGNvZGUgbW9uaXRvcnMgdGhpcyBvYnNlcnZhYmxlLCBhbmQg aWYgaXQgc2VlcyBhbgotb2JqZmlsZSBuYW1lZCBzb21ld2hhdCBsaWtlICJsaWJwdGhyZWFkLnNv IiBnbyBieSwgaXQgdHJpZXMgdG8gbG9hZAotbGlidGhyZWFkX2RiLnNvIGluIHRoZSBHREIgcHJv Y2VzcyBpdHNlbGYuICBsaWJ0aHJlYWRfZGIga25vd3MgaG93IHRvCi1uYXZpZ2F0ZSBsaWJwdGhy ZWFkJ3MgZGF0YSBzdHJ1Y3R1cmVzIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUKLWV4aXN0 aW5nIHRocmVhZHMuCi0KLVRvIGxvY2F0ZSB0aGVzZSBkYXRhIHN0cnVjdHVyZXMsIGxpYnRocmVh ZF9kYiBjYWxscyBwc19wZ2xvYmFsX2xvb2t1cAotKGltcGxlbWVudGVkIGluIHByb2Mtc2Vydmlj ZS5jKSwgcGFzc2luZyBpbiBhIHN5bWJvbCBuYW1lIGFuZCBleHBlY3RpbmcKLWFuIGFkZHJlc3Mg aW4gcmV0dXJuLgotCi1CZWZvcmUgZ2xpYmMgMi4zMywgbGlidGhyZWFkX2RiIGFsd2F5cyBhc2tl ZCBmb3Igc3ltYm9scyBmb3VuZCBpbgotbGlicHRocmVhZC4gIFRoZXJlIHdhcyBubyBvcmRlcmlu ZyBwcm9ibGVtOiBzaW5jZSB3ZSB3ZXJlIGFsd2F5cyB0cnlpbmcKLXRvIGxvYWQgbGlidGhyZWFk X2RiIGluIHJlYWN0aW9uIHRvIHByb2Nlc3NpbmcgbGlicHRocmVhZCAoYW5kIHJlYWRpbmcKLWlu IGl0cyBzeW1ib2xzKSBhbmQgbGlidGhyZWFkX2RiIG9ubHkgYXNrZWQgc3ltYm9scyBmcm9tIGxp YnB0aHJlYWQsIHRoZQotcmVxdWVzdGVkIHN5bWJvbHMgY291bGQgYWx3YXlzIGJlIGZvdW5kLiAg U3RhcnRpbmcgd2l0aCBnbGliYyAyLjMzLAotbGlidGhyZWFkX2RiIG5vdyBhc2tzIGZvciBhIHN5 bWJvbCBuYW1lIHRoYXQgY2FuIGJlIGZvdW5kIGluCi0vbGliL2xkLWxpbnV4LXg4Ni02NC5zby4y IChfcnRsZF9nbG9iYWwpLiAgQW5kIHRoZSBvcmRlcmluZyBpbiB3aGljaCBHREIKLXJlYWRzIHRo ZSBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGluZmVyaW9yIHdoZW4gYXR0YWNoaW5nIGlzCi11 bmZvcnR1bmF0ZSwgaW4gdGhhdCBsaWJwdGhyZWFkIGlzIHByb2Nlc3NlZCBiZWZvcmUgbGQtbGlu dXguICBTbyB3aGVuCi1sb2FkaW5nIGxpYnRocmVhZF9kYiBpbiByZWFjdGlvbiB0byBwcm9jZXNz aW5nIGxpYnB0aHJlYWQsIGFuZAotbGlidGhyZWFkX2RiIHJlcXVlc3RzIHRoZSBzeW1ib2wgdGhh dCBpcyBmcm9tIGxkLWxpbnV4LCBHREIgaXMgbm90IHlldAotYWJsZSB0byBzdXBwbHkgaXQuCi0K LVRoYXQgcHJvYmxlbWF0aWMgc3ltYm9sIGxvb2t1cCBoYXBwZW5zIGluIHRoZSB0aHJlYWRfZnJv bV9sd3AgZnVuY3Rpb24sCi13aGVuIHdlIGNhbGwgdGRfdGFfbWFwX2x3cDJ0aHJfcCwgYW5kIGFu IGV4Y2VwdGlvbiBpcyB0aHJvd24gYXQgdGhpcwotcG9pbnQ6Ci0KLSAgICAjMCAgMHgwMDAwN2Zm ZmY2NjgxMDEyIGluIF9fY3h4YWJpdjE6Ol9fY3hhX3Rocm93IChvYmo9MHg2MGUwMDAwMDYxMDAs IHRpbmZvPTB4NTU1NTYwMDMzYjUwIDx0eXBlaW5mbyBmb3IgZ2RiX2V4Y2VwdGlvbl9lcnJvcj4s IGRlc3Q9MHg1NTU1NWQ5NDA0YmMgPGdkYl9leGNlcHRpb25fZXJyb3I6On5nZGJfZXhjZXB0aW9u X2Vycm9yKCk+KSBhdCAvYnVpbGQvZ2NjL3NyYy9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9l aF90aHJvdy5jYzo3OAotICAgICMxICAweDAwMDA1NTU1NWU1ZDM3MzQgaW4gdGhyb3dfaXQocmV0 dXJuX3JlYXNvbiwgZXJyb3JzLCBjb25zdCBjaGFyICosIHR5cGVkZWYgX192YV9saXN0X3RhZyBf X3ZhX2xpc3RfdGFnICopIChyZWFzb249UkVUVVJOX0VSUk9SLCBlcnJvcj1HRU5FUklDX0VSUk9S LCBmbXQ9MHg1NTU1NWYwYzUzNjAgIkNhbm5vdCBmaW5kIHVzZXItbGV2ZWwgdGhyZWFkIGZvciBM V1AgJWxkOiAlcyIsIGFwPTB4N2ZmZmZmZmZhYWUwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0 aWxzLWdkYi9nZGJzdXBwb3J0L2NvbW1vbi1leGNlcHRpb25zLmNjOjIwMAotICAgICMyICAweDAw MDA1NTU1NWU1ZDM3ZDQgaW4gdGhyb3dfdmVycm9yIChlcnJvcj1HRU5FUklDX0VSUk9SLCBmbXQ9 MHg1NTU1NWYwYzUzNjAgIkNhbm5vdCBmaW5kIHVzZXItbGV2ZWwgdGhyZWFkIGZvciBMV1AgJWxk OiAlcyIsIGFwPTB4N2ZmZmZmZmZhYWUwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdk Yi9nZGJzdXBwb3J0L2NvbW1vbi1leGNlcHRpb25zLmNjOjIwOAotICAgICMzICAweDAwMDA1NTU1 NWUwYjBlZDIgaW4gdmVycm9yIChzdHJpbmc9MHg1NTU1NWYwYzUzNjAgIkNhbm5vdCBmaW5kIHVz ZXItbGV2ZWwgdGhyZWFkIGZvciBMV1AgJWxkOiAlcyIsIGFyZ3M9MHg3ZmZmZmZmZmFhZTApIGF0 IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi91dGlscy5jOjE3MQotICAgICM0ICAw eDAwMDA1NTU1NWU1ZTg5OGEgaW4gZXJyb3IgKGZtdD0weDU1NTU1ZjBjNTM2MCAiQ2Fubm90IGZp bmQgdXNlci1sZXZlbCB0aHJlYWQgZm9yIExXUCAlbGQ6ICVzIikgYXQgL2hvbWUvc2ltYXJrL3Ny Yy9iaW51dGlscy1nZGIvZ2Ric3VwcG9ydC9lcnJvcnMuY2M6NDMKLSAgICAjNSAgMHgwMDAwNTU1 NTVkMDZiNGJjIGluIHRocmVhZF9mcm9tX2x3cCAoc3RvcHBlZD0weDYxNzAwMDAzNWQ4MCwgcHRp ZD0uLi4pIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQt ZGIuYzo0MTgKLSAgICAjNiAgMHgwMDAwNTU1NTVkMDcwNDBkIGluIHRyeV90aHJlYWRfZGJfbG9h ZF8xIChpbmZvPTB4NjBjMDAwMDExMTQwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdk Yi9nZGIvbGludXgtdGhyZWFkLWRiLmM6OTEyCi0gICAgIzcgIDB4MDAwMDU1NTU1ZDA3MTEwMyBp biB0cnlfdGhyZWFkX2RiX2xvYWQgKGxpYnJhcnk9MHg1NTU1NWYwYzYyYTAgImxpYnRocmVhZF9k Yi5zby4xIiwgY2hlY2tfYXV0b19sb2FkX3NhZmU9ZmFsc2UpIGF0IC9ob21lL3NpbWFyay9zcmMv YmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzoxMDE0Ci0gICAgIzggIDB4MDAwMDU1 NTU1ZDA3MjE2OCBpbiB0cnlfdGhyZWFkX2RiX2xvYWRfZnJvbV9zZGlyICgpIGF0IC9ob21lL3Np bWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzoxMDkxCi0gICAgIzkg IDB4MDAwMDU1NTU1ZDA3MmQxYyBpbiB0aHJlYWRfZGJfbG9hZF9zZWFyY2ggKCkgYXQgL2hvbWUv c2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2xpbnV4LXRocmVhZC1kYi5jOjExNDYKLSAgICAj MTAgMHgwMDAwNTU1NTVkMDczNjVjIGluIHRocmVhZF9kYl9sb2FkICgpIGF0IC9ob21lL3NpbWFy ay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzoxMjAzCi0gICAgIzExIDB4 MDAwMDU1NTU1ZDA3MzczZSBpbiBjaGVja19mb3JfdGhyZWFkX2RiICgpIGF0IC9ob21lL3NpbWFy ay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJlYWQtZGIuYzoxMjQ2Ci0gICAgIzEyIDB4 MDAwMDU1NTU1ZDA3MzhhYiBpbiB0aHJlYWRfZGJfbmV3X29iamZpbGUgKG9iamZpbGU9MHg2MTMw MDAwMGMwYzApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC10aHJl YWQtZGIuYzoxMjc1Ci0gICAgIzEzIDB4MDAwMDU1NTU1YmQxMDc0MCBpbiBzdGQ6Ol9faW52b2tl X2ltcGw8dm9pZCwgdm9pZCAoKiYpKG9iamZpbGUqKSwgb2JqZmlsZSo+IChfX2Y9QDB4NjE2MDAw MDY4ZDg4OiAweDU1NTU1ZDA3Mzc0NSA8dGhyZWFkX2RiX25ld19vYmpmaWxlKG9iamZpbGUqKT4p IGF0IC91c3IvaW5jbHVkZS9jKysvMTAuMi4wL2JpdHMvaW52b2tlLmg6NjAKLSAgICAjMTQgMHgw MDAwNTU1NTViZDAyMDk2IGluIHN0ZDo6X19pbnZva2Vfcjx2b2lkLCB2b2lkICgqJikob2JqZmls ZSopLCBvYmpmaWxlKj4gKF9fZm49QDB4NjE2MDAwMDY4ZDg4OiAweDU1NTU1ZDA3Mzc0NSA8dGhy ZWFkX2RiX25ld19vYmpmaWxlKG9iamZpbGUqKT4pIGF0IC91c3IvaW5jbHVkZS9jKysvMTAuMi4w L2JpdHMvaW52b2tlLmg6MTUzCi0gICAgIzE1IDB4MDAwMDU1NTU1YmNlMDM5MiBpbiBzdGQ6Ol9G dW5jdGlvbl9oYW5kbGVyPHZvaWQgKG9iamZpbGUqKSwgdm9pZCAoKikob2JqZmlsZSopPjo6X01f aW52b2tlKHN0ZDo6X0FueV9kYXRhIGNvbnN0Jiwgb2JqZmlsZSomJikgKF9fZnVuY3Rvcj0uLi4s IF9fYXJncyMwPUAweDdmZmZmZmZmYjRhMDogMHg2MTMwMDAwMGMwYzApIGF0IC91c3IvaW5jbHVk ZS9jKysvMTAuMi4wL2JpdHMvc3RkX2Z1bmN0aW9uLmg6MjkxCi0gICAgIzE2IDB4MDAwMDU1NTU1 ZDM1OTVjMCBpbiBzdGQ6OmZ1bmN0aW9uPHZvaWQgKG9iamZpbGUqKT46Om9wZXJhdG9yKCkob2Jq ZmlsZSopIGNvbnN0ICh0aGlzPTB4NjE2MDAwMDY4ZDg4LCBfX2FyZ3MjMD0weDYxMzAwMDAwYzBj MCkgYXQgL3Vzci9pbmNsdWRlL2MrKy8xMC4yLjAvYml0cy9zdGRfZnVuY3Rpb24uaDo2MjIKLSAg ICAjMTcgMHgwMDAwNTU1NTVkMzU2YjdmIGluIGdkYjo6b2JzZXJ2ZXJzOjpvYnNlcnZhYmxlPG9i amZpbGUqPjo6bm90aWZ5ICh0aGlzPTB4NTU1NTY2NzI3MDIwIDxnZGI6Om9ic2VydmVyczo6bmV3 X29iamZpbGU+LCBhcmdzIzA9MHg2MTMwMDAwMGMwYzApIGF0IC9ob21lL3NpbWFyay9zcmMvYmlu dXRpbHMtZ2RiL2dkYi8uLi9nZGJzdXBwb3J0L29ic2VydmFibGUuaDoxMDYKLSAgICAjMTggMHgw MDAwNTU1NTVkYTNmMjI4IGluIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzIChhYmZkPTB4NjEy MDAwMDFjY2MwLCBuYW1lPTB4NjE5MDAwMGQ5MDkwICIvdXNyL2xpYi9saWJwdGhyZWFkLnNvLjAi LCBhZGRfZmxhZ3M9Li4uLCBhZGRycz0weDdmZmZmZmZmYmMxMCwgZmxhZ3M9Li4uLCBwYXJlbnQ9 MHgwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc3ltZmlsZS5jOjExMzEK LSAgICAjMTkgMHgwMDAwNTU1NTVkYTNmNzYzIGluIHN5bWJvbF9maWxlX2FkZF9mcm9tX2JmZCAo YWJmZD0weDYxMjAwMDAxY2NjMCwgbmFtZT0weDYxOTAwMDBkOTA5MCAiL3Vzci9saWIvbGlicHRo cmVhZC5zby4wIiwgYWRkX2ZsYWdzPTxlcnJvciByZWFkaW5nIHZhcmlhYmxlOiBDYW5ub3QgYWNj ZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4ZmZmZmZmZmZmZmZmZmZiMD4sIGFkZHJzPTB4N2ZmZmZm ZmZiYzEwLCBmbGFncz08ZXJyb3IgcmVhZGluZyB2YXJpYWJsZTogQ2Fubm90IGFjY2VzcyBtZW1v cnkgYXQgYWRkcmVzcyAweGZmZmZmZmZmZmZmZmZmYzA+LCBwYXJlbnQ9MHgwKSBhdCAvaG9tZS9z aW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc3ltZmlsZS5jOjExNjcKLSAgICAjMjAgMHgwMDAw NTU1NTVkOTVmOWZhIGluIHNvbGliX3JlYWRfc3ltYm9scyAoc289MHg2MTkwMDAwZDhlODAsIGZs YWdzPS4uLikgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL3NvbGliLmM6Njgx Ci0gICAgIzIxIDB4MDAwMDU1NTU1ZDk2MjMzZCBpbiBzb2xpYl9hZGQgKHBhdHRlcm49MHgwLCBm cm9tX3R0eT0wLCByZWFkc3ltcz0xKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9n ZGIvc29saWIuYzo5ODcKLSAgICAjMjIgMHgwMDAwNTU1NTVkOTM2NDZlIGluIGVuYWJsZV9icmVh ayAoaW5mbz0weDYwODAwMDAwOGYyMCwgZnJvbV90dHk9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9i aW51dGlscy1nZGIvZ2RiL3NvbGliLXN2cjQuYzoyMjM4Ci0gICAgIzIzIDB4MDAwMDU1NTU1ZDkz Y2ZjMCBpbiBzdnI0X3NvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9tX3R0eT0wKSBhdCAv aG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc29saWItc3ZyNC5jOjMwNDkKLSAgICAj MjQgMHgwMDAwNTU1NTVkOTY2MTBkIGluIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIChmcm9t X3R0eT0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc29saWIuYzoxMTk1 Ci0gICAgIzI1IDB4MDAwMDU1NTU1Y2RlZTMxOCBpbiBwb3N0X2NyZWF0ZV9pbmZlcmlvciAoZnJv bV90dHk9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2luZmNtZC5jOjMx OAotICAgICMyNiAweDAwMDA1NTU1NWNlMDBlNmUgaW4gc2V0dXBfaW5mZXJpb3IgKGZyb21fdHR5 PTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZjbWQuYzoyNDM5Ci0g ICAgIzI3IDB4MDAwMDU1NTU1Y2U1OWMzNCBpbiBoYW5kbGVfb25lIChldmVudD0uLi4pIGF0IC9o b21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZydW4uYzo0ODg3Ci0gICAgIzI4IDB4 MDAwMDU1NTU1Y2U1Y2QwMCBpbiBzdG9wX2FsbF90aHJlYWRzICgpIGF0IC9ob21lL3NpbWFyay9z cmMvYmludXRpbHMtZ2RiL2dkYi9pbmZydW4uYzo1MDY0Ci0gICAgIzI5IDB4MDAwMDU1NTU1Y2U3 ZjBkYSBpbiBzdG9wX3dhaXRpbmcgKGVjcz0weDdmZmZmZmZmZDE3MCkgYXQgL2hvbWUvc2ltYXJr L3NyYy9iaW51dGlscy1nZGIvZ2RiL2luZnJ1bi5jOjgwMDYKLSAgICAjMzAgMHgwMDAwNTU1NTVj ZTY3ZjVjIGluIGhhbmRsZV9zaWduYWxfc3RvcCAoZWNzPTB4N2ZmZmZmZmZkMTcwKSBhdCAvaG9t ZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvaW5mcnVuLmM6NjA2MgotICAgICMzMSAweDAw MDA1NTU1NWNlNjM2NTMgaW4gaGFuZGxlX2luZmVyaW9yX2V2ZW50IChlY3M9MHg3ZmZmZmZmZmQx NzApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZydW4uYzo1NzI3Ci0g ICAgIzMyIDB4MDAwMDU1NTU1Y2U0ZjI5NyBpbiBmZXRjaF9pbmZlcmlvcl9ldmVudCAoKSBhdCAv aG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvaW5mcnVuLmM6NDEwNQotICAgICMzMyAw eDAwMDA1NTU1NWNkYmUzYmYgaW4gaW5mZXJpb3JfZXZlbnRfaGFuZGxlciAoZXZlbnRfdHlwZT1J TkZfUkVHX0VWRU5UKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvaW5mLWxv b3AuYzo0MgotICAgICMzNCAweDAwMDA1NTU1NWQwMTgwNDcgaW4gaGFuZGxlX3RhcmdldF9ldmVu dCAoZXJyb3I9MCwgY2xpZW50X2RhdGE9MHgwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxz LWdkYi9nZGIvbGludXgtbmF0LmM6NDA2MAotICAgICMzNSAweDAwMDA1NTU1NWU1ZWE3N2UgaW4g aGFuZGxlX2ZpbGVfZXZlbnQgKGZpbGVfcHRyPTB4NjA2MDAwMDhiMWMwLCByZWFkeV9tYXNrPTEp IGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYnN1cHBvcnQvZXZlbnQtbG9vcC5j Yzo1NzUKLSAgICAjMzYgMHgwMDAwNTU1NTVlNWViMDljIGluIGdkYl93YWl0X2Zvcl9ldmVudCAo YmxvY2s9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ric3VwcG9ydC9ldmVu dC1sb29wLmNjOjcwMQotICAgICMzNyAweDAwMDA1NTU1NWU1ZThkMTkgaW4gZ2RiX2RvX29uZV9l dmVudCAoKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGJzdXBwb3J0L2V2ZW50 LWxvb3AuY2M6MjEyCi0gICAgIzM4IDB4MDAwMDU1NTU1ZGQ2ZTBkNCBpbiB3YWl0X3N5bmNfY29t bWFuZF9kb25lICgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi90b3AuYzo1 MjgKLSAgICAjMzkgMHgwMDAwNTU1NTVkZDZlMzcyIGluIG1heWJlX3dhaXRfc3luY19jb21tYW5k X2RvbmUgKHdhc19zeW5jPTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi90 b3AuYzo1NDUKLSAgICAjNDAgMHgwMDAwNTU1NTVkMGVjN2M4IGluIGNhdGNoX2NvbW1hbmRfZXJy b3JzIChjb21tYW5kPTB4NTU1NTVjZTAxYmI4IDxhdHRhY2hfY29tbWFuZChjaGFyIGNvbnN0Kiwg aW50KT4sIGFyZz0weDdmZmZmZmZmZTI4ZCAiMTQ3MjAxMCIsIGZyb21fdHR5PTEsIGRvX2JwX2Fj dGlvbnM9ZmFsc2UpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9tYWluLmM6 NDUyCi0gICAgIzQxIDB4MDAwMDU1NTU1ZDBmMDNhZCBpbiBjYXB0dXJlZF9tYWluXzEgKGNvbnRl eHQ9MHg3ZmZmZmZmZmRkMTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9t YWluLmM6MTE0OQotICAgICM0MiAweDAwMDA1NTU1NWQwZjEyMzkgaW4gY2FwdHVyZWRfbWFpbiAo ZGF0YT0weDdmZmZmZmZmZGQxMCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ri L21haW4uYzoxMjMyCi0gICAgIzQzIDB4MDAwMDU1NTU1ZDBmMTMxNSBpbiBnZGJfbWFpbiAoYXJn cz0weDdmZmZmZmZmZGQxMCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL21h aW4uYzoxMjU3Ci0gICAgIzQ0IDB4MDAwMDU1NTU1YmI3MGNmOSBpbiBtYWluIChhcmdjPTcsIGFy Z3Y9MHg3ZmZmZmZmZmRlODgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9n ZGIuYzozMgotCi1UaGUgZXhjZXB0aW9uIGlzIGNhdWdodCBoZXJlOgotCi0gICAgIzAgIF9fY3h4 YWJpdjE6Ol9fY3hhX2JlZ2luX2NhdGNoIChleGNfb2JqX2luPTB4NjBlMDAwMDA2MGUwKSBhdCAv YnVpbGQvZ2NjL3NyYy9nY2MvbGlic3RkYysrLXYzL2xpYnN1cGMrKy9laF9jYXRjaC5jYzo4NAot ICAgICMxICAweDAwMDA1NTU1NWQ5NWZkZWQgaW4gc29saWJfcmVhZF9zeW1ib2xzIChzbz0weDYx OTAwMDBkOGU4MCwgZmxhZ3M9Li4uKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9n ZGIvc29saWIuYzo2ODkKLSAgICAjMiAgMHgwMDAwNTU1NTVkOTYyMzNkIGluIHNvbGliX2FkZCAo cGF0dGVybj0weDAsIGZyb21fdHR5PTAsIHJlYWRzeW1zPTEpIGF0IC9ob21lL3NpbWFyay9zcmMv YmludXRpbHMtZ2RiL2dkYi9zb2xpYi5jOjk4NwotICAgICMzICAweDAwMDA1NTU1NWQ5MzY0NmUg aW4gZW5hYmxlX2JyZWFrIChpbmZvPTB4NjA4MDAwMDA4ZjIwLCBmcm9tX3R0eT0wKSBhdCAvaG9t ZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvc29saWItc3ZyNC5jOjIyMzgKLSAgICAjNCAg MHgwMDAwNTU1NTVkOTNjZmMwIGluIHN2cjRfc29saWJfY3JlYXRlX2luZmVyaW9yX2hvb2sgKGZy b21fdHR5PTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9zb2xpYi1zdnI0 LmM6MzA0OQotICAgICM1ICAweDAwMDA1NTU1NWQ5NjYxMGQgaW4gc29saWJfY3JlYXRlX2luZmVy aW9yX2hvb2sgKGZyb21fdHR5PTApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dk Yi9zb2xpYi5jOjExOTUKLSAgICAjNiAgMHgwMDAwNTU1NTVjZGVlMzE4IGluIHBvc3RfY3JlYXRl X2luZmVyaW9yIChmcm9tX3R0eT0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9n ZGIvaW5mY21kLmM6MzE4Ci0gICAgIzcgIDB4MDAwMDU1NTU1Y2UwMGU2ZSBpbiBzZXR1cF9pbmZl cmlvciAoZnJvbV90dHk9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2lu ZmNtZC5jOjI0MzkKLSAgICAjOCAgMHgwMDAwNTU1NTVjZTU5YzM0IGluIGhhbmRsZV9vbmUgKGV2 ZW50PS4uLikgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2luZnJ1bi5jOjQ4 ODcKLSAgICAjOSAgMHgwMDAwNTU1NTVjZTVjZDAwIGluIHN0b3BfYWxsX3RocmVhZHMgKCkgYXQg L2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2luZnJ1bi5jOjUwNjQKLSAgICAjMTAg MHgwMDAwNTU1NTVjZTdmMGRhIGluIHN0b3Bfd2FpdGluZyAoZWNzPTB4N2ZmZmZmZmZkMTcwKSBh dCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9nZGIvaW5mcnVuLmM6ODAwNgotICAgICMx MSAweDAwMDA1NTU1NWNlNjdmNWMgaW4gaGFuZGxlX3NpZ25hbF9zdG9wIChlY3M9MHg3ZmZmZmZm ZmQxNzApIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZydW4uYzo2MDYy Ci0gICAgIzEyIDB4MDAwMDU1NTU1Y2U2MzY1MyBpbiBoYW5kbGVfaW5mZXJpb3JfZXZlbnQgKGVj cz0weDdmZmZmZmZmZDE3MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2RiL2lu ZnJ1bi5jOjU3MjcKLSAgICAjMTMgMHgwMDAwNTU1NTVjZTRmMjk3IGluIGZldGNoX2luZmVyaW9y X2V2ZW50ICgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dkYi9pbmZydW4uYzo0 MTA1Ci0gICAgIzE0IDB4MDAwMDU1NTU1Y2RiZTNiZiBpbiBpbmZlcmlvcl9ldmVudF9oYW5kbGVy IChldmVudF90eXBlPUlORl9SRUdfRVZFTlQpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMt Z2RiL2dkYi9pbmYtbG9vcC5jOjQyCi0gICAgIzE1IDB4MDAwMDU1NTU1ZDAxODA0NyBpbiBoYW5k bGVfdGFyZ2V0X2V2ZW50IChlcnJvcj0wLCBjbGllbnRfZGF0YT0weDApIGF0IC9ob21lL3NpbWFy ay9zcmMvYmludXRpbHMtZ2RiL2dkYi9saW51eC1uYXQuYzo0MDYwCi0gICAgIzE2IDB4MDAwMDU1 NTU1ZTVlYTc3ZSBpbiBoYW5kbGVfZmlsZV9ldmVudCAoZmlsZV9wdHI9MHg2MDYwMDAwOGIxYzAs IHJlYWR5X21hc2s9MSkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1nZGIvZ2Ric3VwcG9y dC9ldmVudC1sb29wLmNjOjU3NQotICAgICMxNyAweDAwMDA1NTU1NWU1ZWIwOWMgaW4gZ2RiX3dh aXRfZm9yX2V2ZW50IChibG9jaz0wKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0aWxzLWdkYi9n ZGJzdXBwb3J0L2V2ZW50LWxvb3AuY2M6NzAxCi0gICAgIzE4IDB4MDAwMDU1NTU1ZTVlOGQxOSBp biBnZGJfZG9fb25lX2V2ZW50ICgpIGF0IC9ob21lL3NpbWFyay9zcmMvYmludXRpbHMtZ2RiL2dk YnN1cHBvcnQvZXZlbnQtbG9vcC5jYzoyMTIKLSAgICAjMTkgMHgwMDAwNTU1NTVkZDZlMGQ0IGlu IHdhaXRfc3luY19jb21tYW5kX2RvbmUgKCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1n ZGIvZ2RiL3RvcC5jOjUyOAotICAgICMyMCAweDAwMDA1NTU1NWRkNmUzNzIgaW4gbWF5YmVfd2Fp dF9zeW5jX2NvbW1hbmRfZG9uZSAod2FzX3N5bmM9MCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51 dGlscy1nZGIvZ2RiL3RvcC5jOjU0NQotICAgICMyMSAweDAwMDA1NTU1NWQwZWM3YzggaW4gY2F0 Y2hfY29tbWFuZF9lcnJvcnMgKGNvbW1hbmQ9MHg1NTU1NWNlMDFiYjggPGF0dGFjaF9jb21tYW5k KGNoYXIgY29uc3QqLCBpbnQpPiwgYXJnPTB4N2ZmZmZmZmZlMjhkICIxNDcyMDEwIiwgZnJvbV90 dHk9MSwgZG9fYnBfYWN0aW9ucz1mYWxzZSkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51dGlscy1n ZGIvZ2RiL21haW4uYzo0NTIKLSAgICAjMjIgMHgwMDAwNTU1NTVkMGYwM2FkIGluIGNhcHR1cmVk X21haW5fMSAoY29udGV4dD0weDdmZmZmZmZmZGQxMCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51 dGlscy1nZGIvZ2RiL21haW4uYzoxMTQ5Ci0gICAgIzIzIDB4MDAwMDU1NTU1ZDBmMTIzOSBpbiBj YXB0dXJlZF9tYWluIChkYXRhPTB4N2ZmZmZmZmZkZDEwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2Jp bnV0aWxzLWdkYi9nZGIvbWFpbi5jOjEyMzIKLSAgICAjMjQgMHgwMDAwNTU1NTVkMGYxMzE1IGlu IGdkYl9tYWluIChhcmdzPTB4N2ZmZmZmZmZkZDEwKSBhdCAvaG9tZS9zaW1hcmsvc3JjL2JpbnV0 aWxzLWdkYi9nZGIvbWFpbi5jOjEyNTcKLSAgICAjMjUgMHgwMDAwNTU1NTViYjcwY2Y5IGluIG1h aW4gKGFyZ2M9NywgYXJndj0weDdmZmZmZmZmZGU4OCkgYXQgL2hvbWUvc2ltYXJrL3NyYy9iaW51 dGlscy1nZGIvZ2RiL2dkYi5jOjMyCi0KLUNhdGNoaW5nIHRoZSBleGNlcHRpb24gYXQgdGhpcyBw b2ludCBtZWFucyB0aGF0IHRoZSB0aHJlYWRfZGJfaW5mbwotb2JqZWN0IGZvciB0aGlzIGluZmVy aW9yIHdpbGwgYmUgbGVmdCBpbiBwbGFjZSwgZGVzcGl0ZSB0aGUgZmFpbHVyZSB0bwotbG9hZCBs aWJ0aHJlYWRfZGIuICBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgd29uJ3QgYmUgZnVydGhlciBhdHRl bXB0cyBhdAotbG9hZGluZyBsaWJ0aHJlYWRfZGIsIGJlY2F1c2UgdGhyZWFkX2RiX2xvYWQgd2ls bCB0aGluayB0aGF0Ci1saWJ0aHJlYWRfZGIgaXMgYWxyZWFkeSBsb2FkZWQgZm9yIHRoaXMgaW5m ZXJpb3IgYW5kIHdpbGwgYWx3YXlzIGV4aXQKLWVhcmx5LiAgVG8gZml4IHRoaXMsIGFkZCBhIHRy eS9jYXRjaCBhcm91bmQgY2FsbGluZyB0cnlfdGhyZWFkX2RiX2xvYWRfMQotaW4gdHJ5X3RocmVh ZF9kYl9sb2FkLCBzdWNoIHRoYXQgaWYgc29tZSBleGNlcHRpb24gaXMgdGhyb3duIHdoaWxlCi10 cnlpbmcgdG8gbG9hZCBsaWJ0aHJlYWRfZGIsIHdlIHJlc2V0IC8gZGVsZXRlIHRoZSB0aHJlYWRf ZGJfaW5mbyBmb3IKLXRoYXQgaW5mZXJpb3IuICBUaGF0IGFsb25lIG1ha2VzIGF0dGFjaCB3b3Jr IGZpbmUgYWdhaW4sIGJlY2F1c2UKLWNoZWNrX2Zvcl90aHJlYWRfZGIgaXMgY2FsbGVkIGFnYWlu IGluIHRoZSB0aHJlYWRfZGJfaW5mZXJpb3JfY3JlYXRlZAotb2JzZXJ2ZXIgKHRoYXQgaGFwcGVu cyBhZnRlciB3ZSBsZWFybmVkIGFib3V0IGFsbCBzaGFyZWQgbGlicmFyaWVzIGFuZAotdGhlaXIg c3ltYm9scyksIGFuZCBsaWJ0aHJlYWRfZGIgaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZCB0aGVuLgot Ci1XaGVuIGF0dGFjaGluZywgSSB0aGluayB0aGF0IHRoZSBpbmZlcmlvcl9jcmVhdGVkIG9ic2Vy dmVyIGlzIGEgZ29vZAotcGxhY2UgdG8gdHJ5IHRvIGxvYWQgbGlidGhyZWFkX2RiOiBpdCBpcyBj YWxsZWQgb25jZSBldmVyeXRoaW5nIGhhcwotc3RhYmlsaXplZCwgd2hlbiB3ZSBsZWFybmVkIGFi b3V0IGFsbCBzaGFyZWQgbGlicmFyaWVzLgotCi1UaGUgb25seSBwcm9ibGVtIHRoZW4gaXMgdGhh dCB3aGVuIHdlIGZpcnN0IHRyeSAoYW5kIGZhaWwpIHRvIGxvYWQKLWxpYnRocmVhZF9kYiwgaW4g cmVhY3Rpb24gdG8gbGVhcm5pbmcgYWJvdXQgbGlicHRocmVhZCwgd2Ugc2hvdyB0aGlzCi13YXJu aW5nOgotCi0gICAgd2FybmluZzogVW5hYmxlIHRvIGZpbmQgbGlidGhyZWFkX2RiIG1hdGNoaW5n IGluZmVyaW9yJ3MgdGhyZWFkIGxpYnJhcnksIHRocmVhZCBkZWJ1Z2dpbmcgd2lsbCBub3QgYmUg YXZhaWxhYmxlLgotCi1UaGlzIGlzIG1pc2xlYWRpbmcsIGJlY2F1c2Ugd2UgZG8gc3VjY2VlZCBp biBsb2FkaW5nIGl0IGxhdGVyLiAgU28gd2hlbgotYXR0YWNoaW5nLCBJIHRoaW5rIHdlIHNob3Vs ZG4ndCB0cnkgdG8gbG9hZCBsaWJ0aHJlYWRfZGIgaW4gcmVhY3Rpb24gdG8KLXRoZSBuZXdfb2Jq ZmlsZSBldmVudHMsIHdlIHNob3VsZCB3YWl0IHVudGlsIHdlIGhhdmUgbGVhcm5lZCBhYm91dCBh bGwKLXNoYXJlZCBsaWJyYXJpZXMgKHVzaW5nIHRoZSBpbmZlcmlvcl9jcmVhdGVkIG9ic2VydmFi bGUpLiAgVG8gZG8gc28sIGFkZAotYW4gYGluX2luaXRpYWxfbGlicmFyeV9zY2FuYCBmbGFnIHRv IHN0cnVjdCBpbmZlcmlvci4gIFRoaXMgZmxhZyBpcyB1c2VkCi10byBwb3N0cG9uZSBsb2FkaW5n IGxpYnRocmVhZF9kYiBpZiB3ZSBhcmUgYXR0YWNoaW5nIG9yIGhhbmRsaW5nIGEgZm9yawotY2hp bGQuCi0KLVdoZW4gZGVidWdnaW5nIHJlbW90ZWx5IHdpdGggR0RCc2VydmVyLCB0aGUgc2FtZSBw cm9ibGVtIGhhcHBlbnMsIGV4Y2VwdAotdGhhdCB0aGUgcVN5bWJvbCBtZWNoYW5pc20gKGFsbG93 aW5nIHRoZSByZW1vdGUgc2lkZSB0byBhc2sgR0RCIGZvcgotc3ltYm9scyB2YWx1ZXMpIGlzIGlu dm9sdmVkLiAgVGhlIGZpeCB0aGVyZSBpcyB0aGUgc2FtZSBpZGVhLCB3ZSBtYWtlCi1HREIgd2Fp dCB1bnRpbCBhbGwgc2hhcmVkIGxpYnJhcmllcyBhbmQgdGhlaXIgc3ltYm9scyBhcmUga25vd24g YmVmb3JlCi1zZW5kaW5nIG91dCBhIHFTeW1ib2wgcGFja2V0LiAgVGhpcyB3YXksIHdlIG5ldmVy IHByZXNlbnQgdGhlIHJlbW90ZQotc2lkZSBhIHN0YXRlIHdoZXJlIGxpYnB0aHJlYWQuc28ncyBz eW1ib2xzIGFyZSBrbm93biBidXQgbGQtbGludXgncwotc3ltYm9scyBhcmVuJ3QuCi0KLWdkYi9D aGFuZ2VMb2c6Ci0KLQkqIGluZmVyaW9yLmggKGNsYXNzIGluZmVyaW9yKSA8aW5faW5pdGlhbF9s aWJyYXJ5X3NjYW4+OiBOZXcuCi0JKiBpbmZjbWQuYyAocG9zdF9jcmVhdGVfaW5mZXJpb3IpOiBT ZXQgaW5faW5pdGlhbF9saWJyYXJ5X3NjYW4uCi0JKiBpbmZydW4uYyAoZm9sbG93X2ZvcmtfaW5m ZXJpb3IpOiBMaWtld2lzZS4KLQkqIGxpbnV4LXRocmVhZC1kYi5jICh0cnlfdGhyZWFkX2RiX2xv YWQpOiBDYXRjaCBleGNlcHRpb24gdGhyb3duCi0JYnkgdHJ5X3RocmVhZF9kYl9sb2FkXzEKLQko dGhyZWFkX2RiX2xvYWQpOiBSZXR1cm4gZWFybHkgaWYgaW5faW5pdGlhbF9saWJyYXJ5X3NjYW4g aXMKLQlzZXQuCi0JKiByZW1vdGUuYyAocmVtb3RlX25ld19vYmpmaWxlKTogUmV0dXJuIGVhcmx5 IGlmCi0JaW5faW5pdGlhbF9saWJyYXJ5X3NjYW4gaXMgc2V0LgotCi1DaGFuZ2UtSWQ6IEk3YTI3 OTgzNmNmYmIyYjM2MmI0ZmRlMTFiMTk2YjRhYWI4MmY1ZWZiCi0KLWRpZmYgLS1naXQgYS9nZGIv aW5mY21kLmMgYi9nZGIvaW5mY21kLmMKLS0tLSBhL2dkYi9pbmZjbWQuYwotKysrIGIvZ2RiL2lu ZmNtZC5jCi1AQCAtMzEzLDYgKzMxMywxMCBAQCBwb3N0X2NyZWF0ZV9pbmZlcmlvciAoc3RydWN0 IHRhcmdldF9vcHMgKnRhcmdldCwgaW50IGZyb21fdHR5KQotICAgICAgIGNvbnN0IHVuc2lnbmVk IHNvbGliX2FkZF9nZW5lcmF0aW9uCi0gCT0gY3VycmVudF9wcm9ncmFtX3NwYWNlLT5zb2xpYl9h ZGRfZ2VuZXJhdGlvbjsKLSAKLSsgICAgICBzY29wZWRfcmVzdG9yZSByZXN0b3JlX2luX2luaXRp YWxfbGlicmFyeV9zY2FuCi0rCT0gbWFrZV9zY29wZWRfcmVzdG9yZSAoJmN1cnJlbnRfaW5mZXJp b3IgKCktPmluX2luaXRpYWxfbGlicmFyeV9zY2FuLAotKwkJCSAgICAgICB0cnVlKTsKLSsKLSAg ICAgICAvKiBDcmVhdGUgdGhlIGhvb2tzIHRvIGhhbmRsZSBzaGFyZWQgbGlicmFyeSBsb2FkIGFu ZCB1bmxvYWQKLSAJIGV2ZW50cy4gICovCi0gICAgICAgc29saWJfY3JlYXRlX2luZmVyaW9yX2hv b2sgKGZyb21fdHR5KTsKLWRpZmYgLS1naXQgYS9nZGIvaW5mZXJpb3IuaCBiL2dkYi9pbmZlcmlv ci5oCi0tLS0gYS9nZGIvaW5mZXJpb3IuaAotKysrIGIvZ2RiL2luZmVyaW9yLmgKLUBAIC01MTEs NiArNTExLDEwIEBAIGNsYXNzIGluZmVyaW9yIDogcHVibGljIHJlZmNvdW50ZWRfb2JqZWN0Ci0g ICAgICBhcmNoaXRlY3R1cmUvZGVzY3JpcHRpb24uICAqLwotICAgYm9vbCBuZWVkc19zZXR1cCA9 IGZhbHNlOwotIAotKyAgLyogVHJ1ZSB3aGVuIHdlIGFyZSByZWFkaW5nIHRoZSBsaWJyYXJ5IGxp c3Qgb2YgdGhlIGluZmVyaW9yIGR1cmluZyBhbgotKyAgICAgYXR0YWNoIG9yIGhhbmRsaW5nIGEg Zm9yayBjaGlsZC4gICovCi0rICBib29sIGluX2luaXRpYWxfbGlicmFyeV9zY2FuID0gZmFsc2U7 Ci0rCi0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1l bnRhdGlvbi4gICovCi0gICBzdGQ6OnVuaXF1ZV9wdHI8cHJpdmF0ZV9pbmZlcmlvcj4gcHJpdjsK LSAKLWRpZmYgLS1naXQgYS9nZGIvaW5mcnVuLmMgYi9nZGIvaW5mcnVuLmMKLS0tLSBhL2dkYi9p bmZydW4uYwotKysrIGIvZ2RiL2luZnJ1bi5jCi1AQCAtNTQwLDYgKzU0MCw5IEBAIGhvbGRpbmcg dGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGV0YWNoLW9uLWZvcmtcIiBvciBcCi0gCQkg YnJlYWtwb2ludC4gIElmIGEgImNsb25lZC1WTSIgZXZlbnQgd2FzIHByb3BhZ2F0ZWQKLSAJCSBi ZXR0ZXIgdGhyb3VnaG91dCB0aGUgY29yZSwgdGhpcyB3b3VsZG4ndCBiZQotIAkJIHJlcXVpcmVk LiAgKi8KLSsJICAgICAgc2NvcGVkX3Jlc3RvcmUgcmVzdG9yZV9pbl9pbml0aWFsX2xpYnJhcnlf c2NhbgotKwkJPSBtYWtlX3Njb3BlZF9yZXN0b3JlICgmY2hpbGRfaW5mLT5pbl9pbml0aWFsX2xp YnJhcnlfc2NhbiwKLSsJCQkJICAgICAgIHRydWUpOwotIAkgICAgICBzb2xpYl9jcmVhdGVfaW5m ZXJpb3JfaG9vayAoMCk7Ci0gCSAgICB9Ci0gCX0KLUBAIC02NzUsNiArNjc4LDggQEAgaG9sZGlu ZyB0aGUgY2hpbGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZXRhY2gtb24tZm9ya1wiIG9yIFwKLSAJ ICAgICBzaGFyZWQgbGlicmFyaWVzLCBhbmQgaW5zdGFsbCB0aGUgc29saWIgZXZlbnQgYnJlYWtw b2ludC4KLSAJICAgICBJZiBhICJjbG9uZWQtVk0iIGV2ZW50IHdhcyBwcm9wYWdhdGVkIGJldHRl ciB0aHJvdWdob3V0Ci0gCSAgICAgdGhlIGNvcmUsIHRoaXMgd291bGRuJ3QgYmUgcmVxdWlyZWQu ICAqLwotKwkgIHNjb3BlZF9yZXN0b3JlIHJlc3RvcmVfaW5faW5pdGlhbF9saWJyYXJ5X3NjYW4K LSsJICAgID0gbWFrZV9zY29wZWRfcmVzdG9yZSAoJmNoaWxkX2luZi0+aW5faW5pdGlhbF9saWJy YXJ5X3NjYW4sIHRydWUpOwotIAkgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rICgwKTsKLSAJ fQotIAotZGlmZiAtLWdpdCBhL2dkYi9saW51eC10aHJlYWQtZGIuYyBiL2dkYi9saW51eC10aHJl YWQtZGIuYwotLS0tIGEvZ2RiL2xpbnV4LXRocmVhZC1kYi5jCi0rKysgYi9nZGIvbGludXgtdGhy ZWFkLWRiLmMKLUBAIC0xMDEyLDggKzEwMTIsMTcgQEAgdHJ5X3RocmVhZF9kYl9sb2FkIChjb25z dCBjaGFyICpsaWJyYXJ5LCBib29sIGNoZWNrX2F1dG9fbG9hZF9zYWZlKQotICAgaWYgKHN0cmNo ciAobGlicmFyeSwgJy8nKSAhPSBOVUxMKQotICAgICBpbmZvLT5maWxlbmFtZSA9IGdkYl9yZWFs cGF0aCAobGlicmFyeSkucmVsZWFzZSAoKTsKLSAKLS0gIGlmICh0cnlfdGhyZWFkX2RiX2xvYWRf MSAoaW5mbykpCi0tICAgIHJldHVybiB0cnVlOwotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBpZiAo dHJ5X3RocmVhZF9kYl9sb2FkXzEgKGluZm8pKQotKwlyZXR1cm4gdHJ1ZTsKLSsgICAgfQotKyAg Y2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRpb25fZXJyb3IgJmV4Y2VwdCkKLSsgICAgewotKyAgICAg IGlmIChsaWJ0aHJlYWRfZGJfZGVidWcpCi0rCWV4Y2VwdGlvbl9mcHJpbnRmIChnZGJfc3RkbG9n LCBleGNlcHQsCi0rCQkJICAgIldhcm5pbmc6IFdoaWxlIHRyeWluZyB0byBsb2FkIGxpYnRocmVh ZF9kYjogIik7Ci0rICAgIH0KLSAKLSAgIC8qIFRoaXMgbGlicmFyeSAicmVmdXNlZCIgdG8gd29y ayBvbiBjdXJyZW50IGluZmVyaW9yLiAgKi8KLSAgIGRlbGV0ZV90aHJlYWRfZGJfaW5mbyAoY3Vy cmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCksCi1AQCAtMTE4NCwxMCArMTE5Mywx NSBAQCBoYXNfbGlicHRocmVhZCAodm9pZCkKLSBzdGF0aWMgYm9vbAotIHRocmVhZF9kYl9sb2Fk ICh2b2lkKQotIHsKLS0gIHN0cnVjdCB0aHJlYWRfZGJfaW5mbyAqaW5mbzsKLSsgIGluZmVyaW9y ICppbmYgPSBjdXJyZW50X2luZmVyaW9yICgpOwotIAotLSAgaW5mbyA9IGdldF90aHJlYWRfZGJf aW5mbyAoY3VycmVudF9pbmZlcmlvciAoKS0+cHJvY2Vzc190YXJnZXQgKCksCi0tCQkJICAgICBp bmZlcmlvcl9wdGlkLnBpZCAoKSk7Ci0rICAvKiBXaGVuIGF0dGFjaGluZyAvIGhhbmRsaW5nIGZv cmsgY2hpbGQsIGRvbid0IHRyeSBsb2FkaW5nIGxpYnRocmVhZF9kYgotKyAgICAgdW50aWwgd2Ug a25vdyBhYm91dCBhbGwgc2hhcmVkIGxpYnJhcmllcy4gICovCi0rICBpZiAoaW5mLT5pbl9pbml0 aWFsX2xpYnJhcnlfc2NhbikKLSsgICAgcmV0dXJuIGZhbHNlOwotKwotKyAgdGhyZWFkX2RiX2lu Zm8gKmluZm8gPSBnZXRfdGhyZWFkX2RiX2luZm8gKGluZi0+cHJvY2Vzc190YXJnZXQgKCksCi0r CQkJCQkgICAgIGluZmVyaW9yX3B0aWQucGlkICgpKTsKLSAKLSAgIGlmIChpbmZvICE9IE5VTEwp Ci0gICAgIHJldHVybiB0cnVlOwotZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1v dGUuYwotLS0tIGEvZ2RiL3JlbW90ZS5jCi0rKysgYi9nZGIvcmVtb3RlLmMKLUBAIC0xNDI5OSw4 ICsxNDI5OSwyNiBAQCByZW1vdGVfbmV3X29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQotIHsKLSAgIHJlbW90ZV90YXJnZXQgKnJlbW90ZSA9IGdldF9jdXJyZW50X3JlbW90ZV90YXJn ZXQgKCk7Ci0gCi0tICBpZiAocmVtb3RlICE9IE5VTEwpCQkJLyogSGF2ZSBhIHJlbW90ZSBjb25u ZWN0aW9uLiAgKi8KLS0gICAgcmVtb3RlLT5yZW1vdGVfY2hlY2tfc3ltYm9scyAoKTsKLSsgIC8q IEZpcnN0LCBjaGVjayB3aGV0aGVyIHRoZSBjdXJyZW50IGluZmVyaW9yJ3MgcHJvY2VzcyB0YXJn ZXQgaXMgYSByZW1vdGUKLSsgICAgIHRhcmdldC4gICovCi0rICBpZiAocmVtb3RlID09IG51bGxw dHIpCi0rICAgIHJldHVybjsKLSsKLSsgIC8qIFdoZW4gd2UgYXJlIGF0dGFjaGluZyBvciBoYW5k bGluZyBhIGZvcmsgY2hpbGQgYW5kIHRoZSBzaGFyZWQgbGlicmFyeQotKyAgICAgc3Vic3lzdGVt IHJlYWRzIHRoZSBsaXN0IG9mIGxvYWRlZCBsaWJyYXJpZXMsIHdlIHJlY2VpdmUgbmV3IG9iamZp bGUKLSsgICAgIGV2ZW50cyBpbiBiZXR3ZWVuIGVhY2ggZm91bmQgbGlicmFyeS4gIFRoZSBsaWJy YXJpZXMgYXJlIHJlYWQgaW4gYW4KLSsgICAgIHVuZGVmaW5lZCBvcmRlciwgc28gaWYgd2UgZ2F2 ZSB0aGUgcmVtb3RlIHNpZGUgYSBjaGFuY2UgdG8gbG9vayB1cAotKyAgICAgc3ltYm9scyBiZXR3 ZWVuIGVhY2ggb2JqZmlsZSwgd2UgbWlnaHQgZ2l2ZSBpdCBhbiBpbmNvbnNpc3RlbnQgcGljdHVy ZQotKyAgICAgb2YgdGhlIGluZmVyaW9yLiAgSXQgY291bGQgYXBwZWFyIHRoYXQgYSBsaWJyYXJ5 IEEgYXBwZWFycyBsb2FkZWQgYnV0Ci0rICAgICBhIGxpYnJhcnkgQiBkb2VzIG5vdCwgZXZlbiB0 aG91Z2ggbGlicmFyeSBBIHJlcXVpcmVzIGxpYnJhcnkgQi4gIFRoYXQKLSsgICAgIHdvdWxkIHBy ZXNlbnQgYSBzdGF0ZSB0aGF0IGNvdWxkbid0IG5vcm1hbGx5IGV4aXN0IGluIHRoZSBpbmZlcmlv ci4KLSsKLSsgICAgIFNvLCBza2lwIHRoZXNlIGV2ZW50cywgd2UnbGwgZ2l2ZSB0aGUgcmVtb3Rl IGEgY2hhbmNlIHRvIGxvb2sgdXAgc3ltYm9scwotKyAgICAgb25jZSBhbGwgdGhlIGxvYWRlZCBs aWJyYXJpZXMgYW5kIHRoZWlyIHN5bWJvbHMgYXJlIGtub3duIHRvIEdEQi4gICovCi0rICAgIGlm IChjdXJyZW50X2luZmVyaW9yICgpLT5pbl9pbml0aWFsX2xpYnJhcnlfc2NhbikKLSsgICAgICBy ZXR1cm47Ci0rCi0rICByZW1vdGUtPnJlbW90ZV9jaGVja19zeW1ib2xzICgpOwotIH0KLSAKLSAv KiBQdWxsIGFsbCB0aGUgdHJhY2Vwb2ludHMgZGVmaW5lZCBvbiB0aGUgdGFyZ2V0IGFuZCBjcmVh dGUgbG9jYWwKCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTIucGF0Y2gg Yi9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGI5ZWRhYjkuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4z NC0yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLUZyb20gRkVET1JBX1BB VENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2 aW5iQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDE0IEp1biAyMDIxIDE5OjIwOjA3IC0wNzAwCi1T dWJqZWN0OiBnZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTIucGF0Y2gKLQotOzsgQmFja3BvcnQg cGF0Y2ggZml4aW5nIGdkYiBvbiBnbGliYy0yLjM0IG1hY2hpbmVzIHcvIHJlZ2FyZCB0bwotOzsg bGlidGhyZWFkX2RiIGluaXRpYWxpemF0aW9uLgotCi1saWJ0aHJlYWRfZGIgaW5pdGlhbGl6YXRp b24gY2hhbmdlcyByZWxhdGVkIHRvIHVwY29taW5nIGdsaWJjLTIuMzQKLQotVGhpcyBjb21taXQg bWFrZXMgc29tZSBhZGp1c3RtZW50cyB0byBhY2NvbW9kYXRlIHRoZSB1cGNvbWluZwotZ2xpYmMt Mi4zNCByZWxlYXNlLiAgQmVnaW5uaW5nIHdpdGggZ2xpYmMtMi4zNCwgZnVuY3Rpb25hbGl0eSBm b3JtZXJseQotY29udGFpbmVkIGluIGxpYnB0aHJlYWQgaGFzIGJlZW4gbW92ZWQgdG8gbGliYy4g IEZvciB0aGUgdGltZSBiZWluZywKLWxpYnB0aHJlYWQuc28gc3RpbGwgZXhpc3RzIGluIHRoZSBm aWxlIHN5c3RlbSwgYnV0IGl0IHdvbid0IHNob3cgdXAgaW4KLWxkZCBvdXRwdXQgYW5kIHRoZXJl Zm9yZSB3b24ndCBiZSBhYmxlIHRvIHRyaWdnZXIgaW5pdGlhbGl6YXRpb24gb2YKLWxpYnRocmVh ZF9kYiByZWxhdGVkIGNvZGUuICBFLmcuLi4KLQotRmVkb3JhIDM0IC8gZ2xpYmMtMi4zMy45MDAw OgotCi1ba2V2QGYzNC0yIGdkYl0kIGxkZCB0ZXN0c3VpdGUvb3V0cHV0cy9nZGIudGhyZWFkcy90 bHMvdGxzCi0JbGludXgtdmRzby5zby4xICgweDAwMDA3ZmZjZjk0ZmEwMDApCi0JbGlic3RkYysr LnNvLjYgPT4gL2xpYjY0L2xpYnN0ZGMrKy5zby42ICgweDAwMDA3ZmYwYmE5YWYwMDApCi0JbGli bS5zby42ID0+IC9saWI2NC9saWJtLnNvLjYgKDB4MDAwMDdmZjBiYThkNDAwMCkKLQlsaWJnY2Nf cy5zby4xID0+IC9saWI2NC9saWJnY2Nfcy5zby4xICgweDAwMDA3ZmYwYmE4YjkwMDApCi0JbGli Yy5zby42ID0+IC9saWI2NC9saWJjLnNvLjYgKDB4MDAwMDdmZjBiYTZjNjAwMCkKLQkvbGliNjQv bGQtbGludXgteDg2LTY0LnNvLjIgKDB4MDAwMDdmZjBiYWJmMDAwMCkKLQotRmVkb3JhIDM0IC8g Z2xpYmMtMi4zMzoKLQotW2tldkBmMzQtMSBnZGJdJCBsZGQgdGVzdHN1aXRlL291dHB1dHMvZ2Ri LnRocmVhZHMvdGxzL3RscwotCWxpbnV4LXZkc28uc28uMSAoMHgwMDAwN2ZmZjMyZGMwMDAwKQot CWxpYnB0aHJlYWQuc28uMCA9PiAvbGliNjQvbGlicHRocmVhZC5zby4wICgweDAwMDA3ZjgxNWY2 ZGUwMDApCi0JbGlic3RkYysrLnNvLjYgPT4gL2xpYjY0L2xpYnN0ZGMrKy5zby42ICgweDAwMDA3 ZjgxNWY0YmYwMDApCi0JbGlibS5zby42ID0+IC9saWI2NC9saWJtLnNvLjYgKDB4MDAwMDdmODE1 ZjM3YjAwMCkKLQlsaWJnY2Nfcy5zby4xID0+IC9saWI2NC9saWJnY2Nfcy5zby4xICgweDAwMDA3 ZjgxNWYzNjAwMDApCi0JbGliYy5zby42ID0+IC9saWI2NC9saWJjLnNvLjYgKDB4MDAwMDdmODE1 ZjE5MTAwMCkKLQkvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIgKDB4MDAwMDdmODE1ZjcyMTAw MCkKLQotTm90ZSB0aGF0IGxpYnB0aHJlYWQgaXMgbWlzc2luZyBmcm9tIHRoZSBsZGQgb3V0cHV0 IGZvciB0aGUKLWdsaWJjLTIuMzMuOTAwMCBtYWNoaW5lLgotCi1UaGlzIG1lYW5zIHRoYXQgKHVu bGVzcyB3ZSBoYXBwZW4gdG8gdGhpbmsgb2Ygc29tZSBlbnRpcmVseSBkaWZmZXJlbnQKLW1lY2hh bmlzbSksIHdlJ2xsIG5vdyBuZWVkIHRvIHBvdGVudGlhbGx5IG1hdGNoICJsaWJjIiBpbiBhZGRp dGlvbiB0bwotImxpYnB0aHJlYWQiIGFzIGxpYnJhcmllcyB3aGljaCBtaWdodCBiZSB0aHJlYWQg bGlicmFyaWVzLiAgVGhpcwotYWNjb3VudHMgZm9yIHRoZSBjaGFuZ2UgbWFkZSBpbiBzb2xpYi5j LiAgTm90ZSB0aGF0IHRoZSBuZXcgY29kZQotYXR0ZW1wdHMgdG8gbWF0Y2ggIi9saWJjLiIgdmlh IHN0cnN0cigpLiAgVGhhdCB0cmFpbGluZyBkb3QgKCIuIikKLWF2b2lkcyBpbmFkdmVydGVudGx5 IG1hdGNoaW5nIGxpYnJhcmllcyBzdWNoIGFzIGxpYmNyeXB0IChhbmQKLWFsbCB0aGUgb3RoZXIg bWFueSBsaWJyYXJpZXMgd2hpY2ggYmVnaW4gd2l0aCAibGliYyIpLgotCi1UbyBhdm9pZCBhdHRl bXB0cyB0byBsb2FkIGxpYnRocmVhZF9kYiB3aGVuIGVuY291bnRlcmluZyBvbGRlcgotdmVyc2lv bnMgb2YgbGliYywgd2Ugbm93IGF0dGVtcHQgdG8gZmluZCAicHRocmVhZF9jcmVhdGUiICh3aGlj aCBpcyBhCi1zeW1ib2wgdGhhdCB3ZSdkIGV4cGVjdCB0byBiZSBpbiBhbnkgcHRocmVhZCBsaWJy YXJ5KSBpbiB0aGUKLWFzc29jaWF0ZWQgb2JqZmlsZS4gIFRoaXMgYWNjb3VudHMgZm9yIHRoZSBj aGFuZ2VzIGluCi1saW51eC10aHJlYWQtZGIuYy4KLQotSSB0aGluayB0aGF0IG90aGVyIHNtYWxs IGFkanVzdG1lbnRzIHdpbGwgbmVlZCB0byBiZSBtYWRlIGVsc2V3aGVyZQotdG9vLiAgSSd2ZSBi ZWVuIHdvcmtpbmcgdGhyb3VnaCByZWdyZXNzaW9ucyBvbiBteSBnbGliYy0yLjMzLjkwMDAKLW1h Y2hpbmU7IEkndmUgZml4ZWQgc29tZSBmYWlybHkgIm9idmlvdXMiIGNoYW5nZXMgaW4gdGhlIHRl c3RzdWl0ZQotKHdoaWNoIGFyZSBpbiBvdGhlciBjb21taXRzKS4gIEZvciB0aGUgcmVzdCwgaXQn cyBub3QgeWV0IGNsZWFyIHRvIG1lCi13aGV0aGVyIHRoZSBoYW5kZnVsIG9mIHJlbWFpbmluZyBm YWlsdXJlcyByZXByZXNlbnQgYSBwcm9ibGVtIGluIGdsaWJjCi1vciBnZGIuICBJJ20gc3RpbGwg aW52ZXN0aWdhdGluZywgaG93ZXZlciwgSSdsbCBub3RlIHRoYXQgdGhlc2UgYXJlCi1wcm9ibGVt cyB0aGF0IEkgb25seSBzZWUgb24gbXkgZ2xpYmMtMi4zMy45MDAwIG1hY2hpbmUuCi0KLWdkYi9D aGFuZ2VMb2c6Ci0KLQkqIHNvbGliLmMgKGxpYnB0aHJlYWRfbmFtZV9wKTogTWF0Y2ggImxpYmMi IGluIGFkZGl0aW9uCi0JdG8gImxpYnB0aHJlYWQiLgotCSogbGludXgtdGhyZWFkLWRiLmMgKGxp YnB0aHJlYWRfb2JqZmlsZV9wKTogTmV3IGZ1bmN0aW9uLgotCShsaWJwdGhyZWFkX25hbWVfcCk6 IEFkanVzdCBwcmVleGlzdGluZyBjYWxsZXJzIHRvIHVzZQotCWxpYnB0aHJlYWRfb2JqZmlsZV9w KCkuCi0KLWRpZmYgLS1naXQgYS9nZGIvbGludXgtdGhyZWFkLWRiLmMgYi9nZGIvbGludXgtdGhy ZWFkLWRiLmMKLS0tLSBhL2dkYi9saW51eC10aHJlYWQtZGIuYwotKysrIGIvZ2RiL2xpbnV4LXRo cmVhZC1kYi5jCi1AQCAtODAwLDYgKzgwMCwyNCBAQCBjaGVja190aHJlYWRfZGIgKHN0cnVjdCB0 aHJlYWRfZGJfaW5mbyAqaW5mbywgYm9vbCBsb2dfcHJvZ3Jlc3MpCi0gICByZXR1cm4gdGVzdF9w YXNzZWQ7Ci0gfQotIAotKy8qIFByZWRpY2F0ZSB3aGljaCB0ZXN0cyB3aGV0aGVyIG9iamZpbGUg T0JKIHJlZmVycyB0byB0aGUgbGlicmFyeQotKyAgIGNvbnRhaW5pbmcgcHRocmVhZCByZWxhdGVk IHN5bWJvbHMuICBIaXN0b3JpY2FsbHksIHRoaXMgbGlicmFyeSBoYXMKLSsgICBiZWVuIG5hbWVk IGluIHN1Y2ggYSB3YXkgdGhhdCBsb29raW5nIGZvciAibGlicHRocmVhZCIgaW4gdGhlIG5hbWUK LSsgICB3YXMgc3VmZmljaWVudCB0byBpZGVudGlmeSBpdC4gIEFzIG9mIGdsaWJjLTIuMzQsIHRo ZSBDIGxpYnJhcnkKLSsgICAobGliYykgY29udGFpbnMgdGhlIHRocmVhZCBsaWJyYXJ5IHN5bWJv bHMuICBUaGVyZWZvcmUgd2UgY2hlY2sKLSsgICB0aGF0IHRoZSBuYW1lIG1hdGNoZXMgYSBwb3Nz aWJsZSB0aHJlYWQgbGlicmFyeSwgYnV0IHdlIGFsc28gY2hlY2sKLSsgICB0aGF0IGl0IGNvbnRh aW5zIGF0IGxlYXN0IG9uZSBvZiB0aGUgc3ltYm9scyAocHRocmVhZF9jcmVhdGUpIHRoYXQKLSsg ICB3ZSdkIGV4cGVjdCB0byBmaW5kIGluIHRoZSB0aHJlYWQgbGlicmFyeS4gICovCi0rCi0rc3Rh dGljIGJvb2wKLStsaWJwdGhyZWFkX29iamZpbGVfcCAob2JqZmlsZSAqb2JqKQotK3sKLSsgIHJl dHVybiAobGlicHRocmVhZF9uYW1lX3AgKG9iamZpbGVfbmFtZSAob2JqKSkKLSsgICAgICAgICAg JiYgbG9va3VwX21pbmltYWxfc3ltYm9sICgicHRocmVhZF9jcmVhdGUiLAotKwkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwKLSsJCQkJICAgIG9iaikubWluc3ltICE9IE5VTEwpOwot K30KLSsKLSAvKiBBdHRlbXB0IHRvIGluaXRpYWxpemUgZGxvcGVuKCllZCBsaWJ0aHJlYWRfZGIs IGRlc2NyaWJlZCBieSBJTkZPLgotICAgIFJldHVybiB0cnVlIG9uIHN1Y2Nlc3MuCi0gICAgRmFp bHVyZSBjb3VsZCBoYXBwZW4gaWYgbGlidGhyZWFkX2RiIGRvZXMgbm90IGhhdmUgc3ltYm9scyB3 ZSBleHBlY3QsCi1AQCAtMTA3Miw3ICsxMDkwLDcgQEAgdHJ5X3RocmVhZF9kYl9sb2FkX2Zyb21f cGRpciAoY29uc3QgY2hhciAqc3ViZGlyKQotICAgICByZXR1cm4gZmFsc2U7Ci0gCi0gICBmb3Ig KG9iamZpbGUgKm9iaiA6IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+b2JqZmlsZXMgKCkpCi0tICAg IGlmIChsaWJwdGhyZWFkX25hbWVfcCAob2JqZmlsZV9uYW1lIChvYmopKSkKLSsgICAgaWYgKGxp YnB0aHJlYWRfb2JqZmlsZV9wIChvYmopKQotICAgICAgIHsKLSAJaWYgKHRyeV90aHJlYWRfZGJf bG9hZF9mcm9tX3BkaXJfMSAob2JqLCBzdWJkaXIpKQotIAkgIHJldHVybiB0cnVlOwotQEAgLTEx ODEsNyArMTE5OSw3IEBAIHN0YXRpYyBib29sCi0gaGFzX2xpYnB0aHJlYWQgKHZvaWQpCi0gewot ICAgZm9yIChvYmpmaWxlICpvYmogOiBjdXJyZW50X3Byb2dyYW1fc3BhY2UtPm9iamZpbGVzICgp KQotLSAgICBpZiAobGlicHRocmVhZF9uYW1lX3AgKG9iamZpbGVfbmFtZSAob2JqKSkpCi0rICAg IGlmIChsaWJwdGhyZWFkX29iamZpbGVfcCAob2JqKSkKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAK LSAgIHJldHVybiBmYWxzZTsKLUBAIC0xMjk1LDcgKzEzMTMsNyBAQCB0aHJlYWRfZGJfbmV3X29i amZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIAkgb2YgdGhlIGxpc3Qgb2Ygc2hhcmVk IGxpYnJhcmllcyB0byBsb2FkLCBhbmQgaW4gYW4gYXBwIG9mIHNldmVyYWwKLSAJIHRob3VzYW5k IHNoYXJlZCBsaWJyYXJpZXMsIHRoaXMgY2FuIG90aGVyd2lzZSBiZSBwYWluZnVsLiAgKi8KLSAg ICAgICAmJiAoKG9iamZpbGUtPmZsYWdzICYgT0JKRl9NQUlOTElORSkgIT0gMAotLQkgIHx8IGxp YnB0aHJlYWRfbmFtZV9wIChvYmpmaWxlX25hbWUgKG9iamZpbGUpKSkpCi0rCSAgfHwgbGlicHRo cmVhZF9vYmpmaWxlX3AgKG9iamZpbGUpKSkKLSAgICAgY2hlY2tfZm9yX3RocmVhZF9kYiAoKTsK LSB9Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLmMgYi9nZGIvc29saWIuYwotLS0tIGEvZ2Ri L3NvbGliLmMKLSsrKyBiL2dkYi9zb2xpYi5jCi1AQCAtOTA2LDEyICs5MDYsMTcgQEAgRG8geW91 IG5lZWQgXCJzZXQgc29saWItc2VhcmNoLXBhdGhcIiBvciBcInNldCBzeXNyb290XCI/IiksCi0g Ci0gICAgVXNlcyBhIGZhaXJseSBzaW1wbGlzdGljIGhldXJpc3RpYyBhcHByb2FjaCB3aGVyZSB3 ZSBjaGVjawotICAgIHRoZSBmaWxlIG5hbWUgYWdhaW5zdCAiL2xpYnB0aHJlYWQiLiAgVGhpcyBj YW4gbGVhZCB0byBmYWxzZQotLSAgIHBvc2l0aXZlcywgYnV0IHRoaXMgc2hvdWxkIGJlIGdvb2Qg ZW5vdWdoIGluIHByYWN0aWNlLiAgKi8KLSsgICBwb3NpdGl2ZXMsIGJ1dCB0aGlzIHNob3VsZCBi ZSBnb29kIGVub3VnaCBpbiBwcmFjdGljZS4KLSsKLSsgICBBcyBvZiBnbGliYy0yLjM0LCBmdW5j dGlvbnMgZm9ybWVybHkgcmVzaWRpbmcgaW4gbGlicHRocmVhZCBoYXZlCi0rICAgYmVlbiBtb3Zl ZCB0byBsaWJjLCBzbyAiL2xpYmMuIiBuZWVkcyB0byBiZSBjaGVja2VkIHRvby4gIChNYXRjaGlu ZwotKyAgIHRoZSAiLiIgd2lsbCBhdm9pZCBtYXRjaGluZyBsaWJyYXJpZXMgc3VjaCBhcyBsaWJj cnlwdC4pICovCi0gCi0gYm9vbAotIGxpYnB0aHJlYWRfbmFtZV9wIChjb25zdCBjaGFyICpuYW1l KQotIHsKLS0gIHJldHVybiAoc3Ryc3RyIChuYW1lLCAiL2xpYnB0aHJlYWQiKSAhPSBOVUxMKTsK LSsgIHJldHVybiAoc3Ryc3RyIChuYW1lLCAiL2xpYnB0aHJlYWQiKSAhPSBOVUxMCi0rICAgICAg ICAgIHx8IHN0cnN0ciAobmFtZSwgIi9saWJjLiIpICE9IE5VTEwgKTsKLSB9Ci0gCi0gLyogUmV0 dXJuIG5vbi16ZXJvIGlmIFNPIGlzIHRoZSBsaWJwdGhyZWFkIHNoYXJlZCBsaWJyYXJ5LiAgKi8K CmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0Y2ggYi9nZGItcmhi ejE5NzEwOTYtZ2xpYmMyLjM0LTMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDVjNTY1MDQuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4zNC0zLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSBGRURPUkFfUEFUQ0hFUyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0 LmNvbT4KLURhdGU6IE1vbiwgMTQgSnVuIDIwMjEgMTk6MjQ6NDEgLTA3MDAKLVN1YmplY3Q6IGdk Yi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtMy5wYXRjaAotCi07OyBCYWNrcG9ydCB0ZXN0c3VpdGUg cGF0Y2ggZm9yIG1hdGNoaW5nIG5ldyBsaWJ0aHJlYWRfZGIgcmVsYXRlZCBvdXRwdXQKLTs7IHdo ZW4gdGVzdGluZyBnZGIgb24gZ2xpYmMtMi4zNCBtYXRjaGluZXMgKFJIIEJaIDE5NzEwOTYpLgot Ci10ZXN0c3VpdGUvZ2xpYi0yLjM0OiBNYXRjaC9jb25zdW1lIG9wdGlvbmFsIGxpYnRocmVhZF9k YiByZWxhdGVkIG91dHB1dAotCi1XaGVuIHVzaW5nIGdsaWJjLTIuMzQsIHdlIG5vdyBzZWUgbWVz c2FnZXMgcmVsYXRlZCB0byB0aGUgbG9hZGluZyBvZgotdGhlIHRocmVhZCBsaWJyYXJ5IGZvciBu b24tdGhyZWFkIHByb2dyYW1zLiAgRS5nLiAgZm9yIHRoZSB0ZXN0IGNhc2UsCi1nZGIuYmFzZS9l eGVjbC11cGRhdGUtYnJlYWtwb2ludHMuZXhwLCB3ZSB3aWxsIHNlZSB0aGUgZm9sbG93aW5nIHdo ZW4KLXN0YXJ0aW5nIHRoZSBwcm9ncmFtOgotCi0oZ2RiKSBicmVhayAtcXVhbGlmaWVkIG1haW4K LUJyZWFrcG9pbnQgMSBhdCAweDEwMDExOGM6IGZpbGUgL2lyb253b29kMS9zb3VyY2V3YXJlLWdp dC9mMzQtMi1nbGliYzI0NF9maXgvYmxkLy4uLy4uL3dvcmt0cmVlLWdsaWJjMjQ0X2ZpeC9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2V4ZWNsLXVwZGF0ZS1icmVha3BvaW50cy5jLCBsaW5lIDM0Lgot KGdkYikgcnVuCi1TdGFydGluZyBwcm9ncmFtOiBbLi4uXS9leGVjbC11cGRhdGUtYnJlYWtwb2lu dHMxCi1bVGhyZWFkIGRlYnVnZ2luZyB1c2luZyBsaWJ0aHJlYWRfZGIgZW5hYmxlZF0KLVVzaW5n IGhvc3QgbGlidGhyZWFkX2RiIGxpYnJhcnkgIi9saWI2NC9saWJ0aHJlYWRfZGIuc28uMSIuCi0K LVRoZSB0d28gbGluZXMgb2Ygb3V0cHV0IHJlbGF0ZWQgdG8gbGlidGhyZWFkX2RiIGFyZSBuZXc7 IHdlIGRpZG4ndCBzZWUKLXRoZXNlIGluIHRoZSBwYXN0LiAgVGhpcyBpcyBhIHNpZGUgZWZmZWN0 IG9mIGxpYmMgbm93IGNvbnRhaW5pbmcgdGhlCi1wdGhyZWFkIEFQSSAtIHdlIGNhbiBubyBsb25n ZXIgdGVsbCB3aGV0aGVyIHRoZSBwcm9ncmFtIGlzCi1tdWx0aS10aHJlYWRlZCBieSBzaW1wbHkg bG9va2luZyBmb3IgbGlicHRocmVhZC5zby4gIFRoYXQgc2FpZCwgSQotdGhpbmsgdGhhdCB3ZSBu b3cgd2FudCB0byBsb2FkIGxpYnRocmVhZF9kYiBhbnl3YXkgc2luY2UgaXQncyB1c2VkIHRvCi1y ZXNvbHZlIFRMUyB2YXJpYWJsZXM7IGkuZS4gd2UgbmVlZCBpdCBmb3IgY29ycmVjdGx5IGRldGVy bWluaW5nIHRoZQotdmFsdWUgb2YgZXJybm8uCi0KLVRoaXMgY29tbWl0IGFkZHMgdGhlIG5lY2Vz c2FyeSByZWd1bGFyIGV4cHJlc3Npb25zIHRvIG1hdGNoIHRoaXMKLShvcHRpb25hbCkgYWRkaXRp b25hbCBvdXRwdXQgaW4gdGhlIHR3byB0ZXN0cyB3aGljaCB3ZXJlIGZhaWxpbmcKLXdpdGhvdXQg aXQuCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgotCi0JKiBnZGIuYmFzZS9leGVjbC11cGRh dGUtYnJlYWtwb2ludHMuZXhwOiBBZGQgcmVndWxhcgotCWV4cHJlc3Npb24gZm9yIG9wdGlvbmFs bHkgbWF0Y2hpbmcgb3V0cHV0IHJlbGF0ZWQgdG8KLQlsaWJ0aHJlYWRfZGIuCi0JKiBnZGIuYmFz ZS9mb3JrLXByaW50LWluZmVyaW9yLWV2ZW50cy5leHA6IExpa2V3aXNlLgotCi1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9leGVjbC11cGRhdGUtYnJlYWtwb2ludHMuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9leGVjbC11cGRhdGUtYnJlYWtwb2ludHMuZXhwCi0tLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2V4ZWNsLXVwZGF0ZS1icmVha3BvaW50cy5leHAKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZXhlY2wtdXBkYXRlLWJyZWFrcG9pbnRzLmV4cAot QEAgLTEzMiw2ICsxMzIsNyBAQCBwcm9jIHRlc3QgeyBhbHdheXNfaW5zZXJ0ZWQgfSB7Ci0gCSJD b250aW51aW5nXFwuXHJcbiIgXAotIAkiJHtub3Rfbmx9IGlzIGV4ZWN1dGluZyBuZXcgcHJvZ3Jh bTogJHtub3Rfbmx9XHJcbiIgXAotIAkiKFJlYWRpbmcgJHtub3Rfbmx9IGZyb20gcmVtb3RlIHRh cmdldFxcLlxcLlxcLlxyXG4pKiIgXAotKwkiKD86LlRocmVhZCBkZWJ1Z2dpbmcgdXNpbmcgLio/ IGVuYWJsZWQuXHJcblVzaW5nIC4qPyBsaWJyYXJ5IC4qP1xcLlxyXG4pPyIgXAotIAkiXHJcbiIg XAotIAkiQnJlYWtwb2ludCAxLCBtYWluLiokZ2RiX3Byb21wdCAkIgotICAgICBzZXQgbWVzc2Fn ZSAiY29udGludWUgYWNyb3NzIGV4ZWMiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9mb3JrLXByaW50LWluZmVyaW9yLWV2ZW50cy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2ZvcmstcHJpbnQtaW5mZXJpb3ItZXZlbnRzLmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9mb3JrLXByaW50LWluZmVyaW9yLWV2ZW50cy5leHAKLSsrKyBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZm9yay1wcmludC1pbmZlcmlvci1ldmVudHMuZXhwCi1AQCAtNTksNiArNTks NyBAQCBzZXQgZGV0YWNoX2NoaWxkX3JlICIke3JlYWRpbmdfcmV9XFxcW0RldGFjaGluZyBhZnRl ciBmb3JrIGZyb20gY2hpbGQgLipcXFxdXHJcbgotIHNldCBkZXRhY2hfcGFyZW50X3JlICIke3Jl YWRpbmdfcmV9XFxcW0RldGFjaGluZyBhZnRlciBmb3JrIGZyb20gcGFyZW50IC4qXFxcXVxyXG4i Ci0gc2V0IG5ld19pbmZfcmUgIiR7cmVhZGluZ19yZX1cXFxbTmV3IGluZmVyaW9yICRkZWNpbWFs IFxcKC4qXFwpXFxcXVxyXG4iCi0gc2V0IGluZl9kZXRhY2hlZF9yZSAiJHtyZWFkaW5nX3JlfVxc XFtJbmZlcmlvciAkZGVjaW1hbCBcXCguKlxcKSBkZXRhY2hlZFxcXF1cclxuIgotK3NldCB0aHJl YWRfZGJfcmUgIig/OlxcXFtUaHJlYWQgZGVidWdnaW5nIHVzaW5nIC4qPyBlbmFibGVkXFxcXVxy XG5Vc2luZyAuKj8gbGlicmFyeSAuKj9cXC5cclxuKT8iCi0gCi0gc2V0IGV4cGVjdGVkX291dHB1 dCBbbGlzdCBcCi0gCQkJICIke2F0dGFjaF9jaGlsZF9yZX0ke25ld19pbmZfcmV9JHtkZXRhY2hf cGFyZW50X3JlfSR7aW5mX2RldGFjaGVkX3JlfSIgXAotQEAgLTg0LDcgKzg1LDcgQEAgZm9yZWFj aF93aXRoX3ByZWZpeCBwcmludF9pbmZlcmlvcl9ldmVudHMgeyAib24iICJvZmYiIH0gewotIAkg ICAgc2V0IG91dHB1dCBbbGluZGV4ICRleHBlY3RlZF9vdXRwdXQgJGldCi0gCSAgICAjIEFsd2F5 cyBhZGQgdGhlICJTdGFydGluZyBwcm9ncmFtLi4uIiBzdHJpbmcgc28gdGhhdCB3ZQotIAkgICAg IyBtYXRjaCBleGFjdGx5IHRoZSBsaW5lcyB3ZSB3YW50LgotLQkgICAgc2V0IG91dHB1dCAiU3Rh cnRpbmcgcHJvZ3JhbTogJGJpbmZpbGVcXHMqXHJcbiR7b3V0cHV0fSR7ZXhpdGVkX25vcm1hbGx5 X3JlfSIKLSsJICAgIHNldCBvdXRwdXQgIlN0YXJ0aW5nIHByb2dyYW06ICRiaW5maWxlXFxzKlxy XG4ke3RocmVhZF9kYl9yZX0ke291dHB1dH0ke3RocmVhZF9kYl9yZX0ke2V4aXRlZF9ub3JtYWxs eV9yZX0iCi0gCSAgICBzZXQgaSBbZXhwciAkaSArIDFdCi0gCSAgICBnZGJfdGVzdCAicnVuIiAk b3V0cHV0Ci0gCX0KCmRpZmYgLS1naXQgYS9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTQucGF0 Y2ggYi9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDdjZTliZTUuLjAwMDAwMDAKLS0tIGEvZ2RiLXJoYnoxOTcxMDk2LWdsaWJj Mi4zNC00LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSBGRURPUkFf UEFUQ0hFUyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtldmluIEJ1ZXR0bmVyIDxr ZXZpbmJAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMTQgSnVuIDIwMjEgMTk6Mjk6MTkgLTA3MDAK LVN1YmplY3Q6IGdkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtNC5wYXRjaAotCi07OyBCYWNrcG9y dCBwYXRjaCBhZGp1c3RpbmcgdGVzdCBnZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGluZy5leHAu Ci07OyAoUkggQlogMTk3MTA5NikuCi0KLXByaW50LXN5bWJvbC1sb2FkaW5nLmV4cDogQWxsb3cg bGliYyBzeW1ib2xzIHRvIGJlIGFscmVhZHkgbG9hZGVkCi0KLU9uZSBjb25zZXF1ZW5jZSBvZiBj aGFuZ2luZyBsaWJwdGhyZWFkX25hbWVfcCgpIGluIHNvbGliLmMgdG8gKGFsc28pCi1tYXRjaCBs aWJjIGlzIHRoYXQgdGhlIHN5bWJvbHMgZm9yIGxpYmMgd2lsbCBub3cgYmUgbG9hZGVkIGJ5Ci1z b2xpYl9hZGQoKSBpbiBzb2xpYi5jLiAgSSB0aGluayB0aGlzIGlzIG1vc3RseSBoYXJtbGVzcyBi ZWNhdXNlCi13ZSdsbCBsaWtlbHkgd2FudCB0aGVzZSBzeW1ib2xzIHRvIGJlIGxvYWRlZCBhbnl3 YXksIGJ1dCBpdCBkaWQgY2F1c2UKLXR3byBmYWlsdXJlcyBpbiBnZGIuYmFzZS9wcmludC1zeW1i b2wtbG9hZGluZy5leHAuCi0KLVNwZWNpZmljYWxseS4uLgotCi0xKQotCi1zaGFyZWRsaWJyYXJ5 IC4qCi0oZ2RiKSBQQVNTOiBnZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGluZy5leHA6IHNobGli IG9mZjogbG9hZCBzaGFyZWQtbGliCi0KLW5vdyBsb29rcyBsaWtlIHRoaXM6Ci0KLXNoYXJlZGxp YnJhcnkgLioKLVN5bWJvbHMgYWxyZWFkeSBsb2FkZWQgZm9yIC9saWI2NC9saWJjLnNvLjYKLShn ZGIpIFBBU1M6IGdkYi5iYXNlL3ByaW50LXN5bWJvbC1sb2FkaW5nLmV4cDogc2hsaWIgb2ZmOiBs b2FkIHNoYXJlZC1saWIKLQotMikKLQotc2hhcmVkbGlicmFyeSAuKgotTG9hZGluZyBzeW1ib2xz IGZvciBzaGFyZWQgbGlicmFyaWVzOiAuKgotKGdkYikgUEFTUzogZ2RiLmJhc2UvcHJpbnQtc3lt Ym9sLWxvYWRpbmcuZXhwOiBzaGxpYiBicmllZjogbG9hZCBzaGFyZWQtbGliCi0KLW5vdyBsb29r cyBsaWtlIHRoaXM6Ci0KLXNoYXJlZGxpYnJhcnkgLioKLUxvYWRpbmcgc3ltYm9scyBmb3Igc2hh cmVkIGxpYnJhcmllczogLioKLVN5bWJvbHMgYWxyZWFkeSBsb2FkZWQgZm9yIC9saWI2NC9saWJj LnNvLjYKLShnZGIpIFBBU1M6IGdkYi5iYXNlL3ByaW50LXN5bWJvbC1sb2FkaW5nLmV4cDogc2hs aWIgYnJpZWY6IGxvYWQgc2hhcmVkLWxpYgotCi1GaXhpbmcgY2FzZSAjMiBlbmRlZCB1cCBiZWlu ZyBlYXNpZXIgdGhhbiAjMS4gICMxIGhhZCBiZWVuIHVzaW5nCi1nZGJfdGVzdF9ub19vdXRwdXQg dG8gY29ycmVjdGx5IG1hdGNoIHRoaXMgbm8tb3V0cHV0IGNhc2UuICBJCi1lbmRlZCB1cCByZXBs YWNpbmcgaXQgd2l0aCBnZGJfdGVzdF9tdWx0aXBsZSwgbWF0Y2hpbmcgdGhlIGV4YWN0Ci1leHBl Y3RlZCBvdXRwdXQgZm9yIGVhY2ggb2YgdGhlIHR3byBub3cgYWNjZXB0YWJsZSBjYXNlcy4KLQot Rm9yIGNhc2UgIzIsIEkgc2ltcGx5IGFkZGVkIGFuIG9wdGlvbmFsIG5vbi1jYXB0dXJpbmcgZ3Jv dXAKLWZvciB0aGUgcG90ZW50aWFsIG5ldyBvdXRwdXQuCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdl TG9nOgotCi0JKiBnZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGluZy5leHAgKHByb2MgdGVzdF9s b2FkX3NobGliKToKLQlBbGxvdyAiU3ltYm9scyBhbHJlYWR5IGxvYWRlZCBmb3IuLi4iIG1lc3Nh Z2VzLgotCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmludC1zeW1ib2wt bG9hZGluZy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ByaW50LXN5bWJvbC1sb2FkaW5n LmV4cAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmludC1zeW1ib2wtbG9hZGluZy5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJpbnQtc3ltYm9sLWxvYWRpbmcuZXhw Ci1AQCAtOTYsNiArOTYsNyBAQCB0ZXN0X2xvYWRfY29yZSBmdWxsCi0gCi0gcHJvYyB0ZXN0X2xv YWRfc2hsaWIgeyBwcmludF9zeW1ib2xfbG9hZGluZyB9IHsKLSAgICAgZ2xvYmFsIGJpbmZpbGUK LSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSAgICAgd2l0aF90ZXN0X3ByZWZpeCAic2hsaWIgJHtw cmludF9zeW1ib2xfbG9hZGluZ30iIHsKLSAJY2xlYW5fcmVzdGFydCAke2JpbmZpbGV9Ci0gCWdk Yl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIKLUBAIC0xMDYsMTIgKzEw NywyMCBAQCBwcm9jIHRlc3RfbG9hZF9zaGxpYiB7IHByaW50X3N5bWJvbF9sb2FkaW5nIH0gewot IAlzZXQgdGVzdF9uYW1lICJsb2FkIHNoYXJlZC1saWIiCi0gCXN3aXRjaCAke3ByaW50X3N5bWJv bF9sb2FkaW5nfSB7Ci0gCSAgICAib2ZmIiB7Ci0tCQlnZGJfdGVzdF9ub19vdXRwdXQgInNoYXJl ZGxpYnJhcnkgLioiIFwKLS0JCSAgICAke3Rlc3RfbmFtZX0KLSsJCXNldCBjbWQgInNoYXJlZGxp YnJhcnkgLioiCi0rCQlzZXQgY21kX3JlZ2V4IFtzdHJpbmdfdG9fcmVnZXhwICRjbWRdCi0rCQln ZGJfdGVzdF9tdWx0aXBsZSAkY21kICR0ZXN0X25hbWUgewotKwkJICAgIC1yZSAiXiRjbWRfcmVn ZXhcclxuJGdkYl9wcm9tcHQgJCIgewotKwkJCXBhc3MgJHRlc3RfbmFtZQotKwkJICAgIH0KLSsJ CSAgICAtcmUgIl4kY21kX3JlZ2V4XHJcblN5bWJvbHMgYWxyZWFkeSBsb2FkZWQgZm9yXFteXHJc blxdKlxcL2xpYmNcXC5cW15cclxuXF0qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJCQlwYXNzICR0 ZXN0X25hbWUKLSsJCSAgICB9Ci0rCQl9Ci0gCSAgICB9Ci0gCSAgICAiYnJpZWYiIHsKLSAJCWdk Yl90ZXN0ICJzaGFyZWRsaWJyYXJ5IC4qIiBcCi0tCQkgICAgIkxvYWRpbmcgc3ltYm9scyBmb3Ig c2hhcmVkIGxpYnJhcmllczogXFwuXFwqIiBcCi0rCQkgICAgIkxvYWRpbmcgc3ltYm9scyBmb3Ig c2hhcmVkIGxpYnJhcmllczogXFwuXFwqLio/KD86U3ltYm9scyBhbHJlYWR5IGxvYWRlZCBmb3Ig Lio/bGliYyk/IiBcCi0gCQkgICAgJHt0ZXN0X25hbWV9Ci0gCSAgICB9Ci0gCSAgICAiZnVsbCIg ewoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MTk3MTA5Ni1nbGliYzIuMzQtNS5wYXRjaCBiL2dkYi1y aGJ6MTk3MTA5Ni1nbGliYzIuMzQtNS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOTExZDJiYy4uMDAwMDAwMAotLS0gYS9nZGItcmhiejE5NzEwOTYtZ2xpYmMyLjM0LTUucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1Gcm9tIEZFRE9SQV9QQVRDSEVTIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2V2aW4gQnVldHRuZXIgPGtldmluYkByZWRo YXQuY29tPgotRGF0ZTogTW9uLCAxNCBKdW4gMjAyMSAxOTozMjoxMiAtMDcwMAotU3ViamVjdDog Z2RiLXJoYnoxOTcxMDk2LWdsaWJjMi4zNC01LnBhdGNoCi0KLTs7IEJhY2twb3J0IHBhdGNoIGFk anVzdGluZyB0ZXN0IGdkYi5taS9taS1zeW0taW5mby5leHAgKFJIIEJaIDE5NzEwOTYpLgotCi1t aS1zeW0taW5mby5leHA6IEluY3JlYXNlIHRpbWVvdXQgZm9yIDExNC1zeW1ib2wtaW5mby1mdW5j dGlvbnMKLQotTG9hZGluZyBsaWJjLnNvJ3Mgc3ltYm9scyBpbmNyZWFzZWQgdGhlIGFtb3VudCBv ZiB0aW1lIG5lZWRlZCBmb3IKLTExNC1zeW1ib2wtaW5mby1mdW5jdGlvbiB0byBmZXRjaCBzeW1i b2xzLCBjYXVzaW5nIGEgdGltZW91dCBkdXJpbmcgbXkKLXRlc3RpbmcuICBJIGVuY2xvc2VkIHRo ZSBlbnRpcmUgYmxvY2sgd2l0aCBhICJ3aXRoX3RpbWVvdXRfZmFjdG9yIDQiLAotd2hpY2ggZml4 ZXMgdGhlIHByb2JsZW0gZm9yIG1lLiAgKFVzaW5nIDIgYWxzbyBmaXhlZCBpdCBmb3IgbWUsIGJ1 dCBpdAotbWlnaHQgbm90IGJlIGVub3VnaCB3aGVuIHJ1bm5pbmcgdGhpcyB0ZXN0IG9uIHNsb3dl ciBtYWNoaW5lcy4pCi0KLWdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nOgotCi0JKiBnZGIubWkvbWkt c3ltLWluZm8uZXhwICgxMTQtc3ltYm9sLWluZm8tZnVuY3Rpb24gdGVzdCk6IEluY3JlYXNlCi0J dGltZW91dC4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXN5bS1pbmZv LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXN5bS1pbmZvLmV4cAotLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIubWkvbWktc3ltLWluZm8uZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5t aS9taS1zeW0taW5mby5leHAKLUBAIC0xMjIsMzMgKzEyMiwzNSBAQCBnZGJfdGVzdF9tdWx0aXBs ZSAkY21kICR0ZXN0bmFtZSAtcHJvbXB0ICIke21pX2dkYl9wcm9tcHR9JCIgewotICMgKGZyb20g dGhlIHN5bWJvbCB0YWJsZSkuICBUaGVyZSdzIG9mdGVuIHNvIG11Y2ggb3V0cHV0IG91dHB1dCBm cm9tCi0gIyB0aGlzIGNvbW1hbmQgdGhhdCB3ZSBvdmVyZmxvdyBleHBlY3QncyBidWZmZXJzLCBh dm9pZCB0aGlzIGJ5Ci0gIyBmZXRjaGluZyB0aGUgb3V0cHV0IHBpZWNlIGJ5IHBpZWNlLgotLXNl dCB0ZXN0bmFtZSAiTGlzdCBhbGwgZnVuY3Rpb25zIgotLXNldCBjbWQgIjExNC1zeW1ib2wtaW5m by1mdW5jdGlvbnMgLS1pbmNsdWRlLW5vbmRlYnVnIgotLXNldCBzdGF0ZSAwCi0tZ2RiX3Rlc3Rf bXVsdGlwbGUgJGNtZCAke3Rlc3RuYW1lfSAtcHJvbXB0ICIke21pX2dkYl9wcm9tcHR9JCIgewot LSAgICAtcmUgIjExNFxcXmRvbmUsc3ltYm9scz1ceyIgewotLQlpZiB7ICRzdGF0ZSA9PSAwIH0g eyBzZXQgc3RhdGUgMSB9Ci0tCWV4cF9jb250aW51ZQotLSAgICB9Ci0tICAgIC1yZSAiZGVidWc9 XFxcWyR7c3ltdGFiX3JlfSIgewotLQlpZiB7ICRzdGF0ZSA9PSAxIH0geyBzZXQgc3RhdGUgMiB9 Ci0tCWV4cF9jb250aW51ZQotLSAgICB9Ci0tICAgIC1yZSAiLCR7c3ltdGFiX3JlfSIgewotLQll eHBfY29udGludWUKLS0gICAgfQotLSAgICAtcmUgIlxcXF0sbm9uZGVidWc9XFxcWyIgewotLQlp ZiB7ICRzdGF0ZSA9PSAyIH0geyBzZXQgc3RhdGUgMyB9Ci0tCWV4cF9jb250aW51ZQotLSAgICB9 Ci0tICAgIC1yZSAiXHthZGRyZXNzPSR7cXN0cn0sbmFtZT0ke3FzdHJ9XH0sIiB7Ci0tCWV4cF9j b250aW51ZQotLSAgICB9Ci0tICAgIC1yZSAiXHthZGRyZXNzPSR7cXN0cn0sbmFtZT0ke3FzdHJ9 XH1cXFxdXH1cclxuJHttaV9nZGJfcHJvbXB0fSQiIHsKLS0JaWYgeyAkc3RhdGUgPT0gMyB9IHsK LS0JICAgIHBhc3MgJGdkYl90ZXN0X25hbWUKLS0JfSBlbHNlIHsKLS0JICAgIGZhaWwgJGdkYl90 ZXN0X25hbWUKLSt3aXRoX3RpbWVvdXRfZmFjdG9yIDQgewotKyAgICBzZXQgdGVzdG5hbWUgIkxp c3QgYWxsIGZ1bmN0aW9ucyIKLSsgICAgc2V0IGNtZCAiMTE0LXN5bWJvbC1pbmZvLWZ1bmN0aW9u cyAtLWluY2x1ZGUtbm9uZGVidWciCi0rICAgIHNldCBzdGF0ZSAwCi0rICAgIGdkYl90ZXN0X211 bHRpcGxlICRjbWQgJHt0ZXN0bmFtZX0gLXByb21wdCAiJHttaV9nZGJfcHJvbXB0fSQiIHsKLSsJ LXJlICIxMTRcXF5kb25lLHN5bWJvbHM9XHsiIHsKLSsJICAgIGlmIHsgJHN0YXRlID09IDAgfSB7 IHNldCBzdGF0ZSAxIH0KLSsJICAgIGV4cF9jb250aW51ZQotKwl9Ci0rCS1yZSAiZGVidWc9XFxc WyR7c3ltdGFiX3JlfSIgewotKwkgICAgaWYgeyAkc3RhdGUgPT0gMSB9IHsgc2V0IHN0YXRlIDIg fQotKwkgICAgZXhwX2NvbnRpbnVlCi0rCX0KLSsJLXJlICIsJHtzeW10YWJfcmV9IiB7Ci0rCSAg ICBleHBfY29udGludWUKLSsJfQotKwktcmUgIlxcXF0sbm9uZGVidWc9XFxcWyIgewotKwkgICAg aWYgeyAkc3RhdGUgPT0gMiB9IHsgc2V0IHN0YXRlIDMgfQotKwkgICAgZXhwX2NvbnRpbnVlCi0r CX0KLSsJLXJlICJce2FkZHJlc3M9JHtxc3RyfSxuYW1lPSR7cXN0cn1cfSwiIHsKLSsJICAgIGV4 cF9jb250aW51ZQotKwl9Ci0rCS1yZSAiXHthZGRyZXNzPSR7cXN0cn0sbmFtZT0ke3FzdHJ9XH1c XFxdXH1cclxuJHttaV9nZGJfcHJvbXB0fSQiIHsKLSsJICAgIGlmIHsgJHN0YXRlID09IDMgfSB7 Ci0rCQlwYXNzICRnZGJfdGVzdF9uYW1lCi0rCSAgICB9IGVsc2UgewotKwkJZmFpbCAkZ2RiX3Rl c3RfbmFtZQotKwkgICAgfQotIAl9Ci0gICAgIH0KLSB9CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnox OTc2ODg3LWZpZWxkLWxvY2F0aW9uLWtpbmQucGF0Y2ggYi9nZGItcmhiejE5NzY4ODctZmllbGQt bG9jYXRpb24ta2luZC5wYXRjaAppbmRleCA4MDNiMmRhLi4wMGY5YWNjIDEwMDY0NAotLS0gYS9n ZGItcmhiejE5NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaAorKysgYi9nZGItcmhiejE5 NzY4ODctZmllbGQtbG9jYXRpb24ta2luZC5wYXRjaApAQCAtMSw2ICsxLDYgQEAKIEZyb20gRkVE T1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QWxl eGFuZHJhPTIwSD1DMz1BMWprb3Y9QzM9QTE/PSA8YWhhamtvdmFAcmVkaGF0LmNvbT4KLURhdGU6 IFRodSwgMzAgU2VwIDIwMjEgMTM6MDc6NTYgKzAyMDAKK0RhdGU6IFdlZCwgMjkgU2VwIDIwMjEg MTA6NTg6NTAgKzAyMDAKIFN1YmplY3Q6IGdkYi1yaGJ6MTk3Njg4Ny1maWVsZC1sb2NhdGlvbi1r aW5kLnBhdGNoCiAKIDs7QmFja3BvcnQgdXBzdHJlYW0gcGF0Y2ggd2hpY2ggZml4ZXMgaW50ZXJu YWwtZXJyb3I6IFVuZXhwZWN0ZWQKQEAgLTE3LDcgKzE3LDcgQEAgRml4ZXMgYnVnIDI4MDMwLgog ZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5jIGIvZ2RiL2dkYnR5cGVzLmMKIC0tLSBhL2dkYi9n ZGJ0eXBlcy5jCiArKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTU0MzQsNiArNTQzNCwxMCBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKK0BAIC01NTcxLDYg KzU1NzEsMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CiAgCQkJCSAgeHN0cmR1cCAoVFlQRV9GSUVMRF9TVEFUSUNfUEhZU05BTUUgKHR5cGUsCiAgCQkJ CQkJCQkgICAgICAgaSkpKTsKICAJICAgICAgYnJlYWs7CgpkaWZmIC0tZ2l0IGEvZ2RiLXJoYnoy MDEyOTc2LXBhcGVyLW92ZXItZm9ydHJhbi1sZXgtcHJvYmxlbXMucGF0Y2ggYi9nZGItcmhiejIw MTI5NzYtcGFwZXItb3Zlci1mb3J0cmFuLWxleC1wcm9ibGVtcy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzNmNTFkCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLXJo YnoyMDEyOTc2LXBhcGVyLW92ZXItZm9ydHJhbi1sZXgtcHJvYmxlbXMucGF0Y2gKQEAgLTAsMCAr MSwxODUgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBLZXZpbiBCdWV0dG5lciA8a2V2aW5iQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDExIE9j dCAyMDIxIDExOjIyOjA0IC0wNzAwCitTdWJqZWN0OiBnZGItcmhiejIwMTI5NzYtcGFwZXItb3Zl ci1mb3J0cmFuLWxleC1wcm9ibGVtcy5wYXRjaAorCis7OyBCYWNrcG9ydCBnZGIuZm9ydHJhbiB0 ZXN0c3VpdGUgY2hhbmdlcyBpbiBvcmRlciB0byBhdm9pZCBGb3J0cmFuCis7OyBsZXhpY2FsIGFu YWx5emVyIGJ1Zy4KKworW2dkYi90ZXN0c3VpdGVdIEZpeCBGQUlMIGluIGdkYi5taS9taS12YXIt Y2hpbGQtZi5leHAKKworV2hlbiBydW5uaW5nIHRlc3QtY2FzZSBnZGIubWkvbWktdmFyLWNoaWxk LWYuZXhwIG9uIG9wZW5TVVNFIFR1bWJsZXdlZWQKKyh3aXRoIGdsaWJjIDIuMzQpIEkgcnVuIGlu dG86CisuLi4KKyhnZGIpIF5NCitQQVNTOiBnZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwOiBtaSBy dW50byBwcm9nX2FycmF5CitFeHBlY3Rpbmc6IF4oLXZhci1jcmVhdGUgYXJyYXkgXCogYXJyYXlb Xk0KK10rKT8oXF5kb25lLG5hbWU9ImFycmF5IixudW1jaGlsZD0iWzAtOV0rIix2YWx1ZT0iLioi LHR5cGU9LiosaGFzX21vcmU9IjAiW15NCitdK1soXWdkYlspXSBeTQorWyBdKikKKy12YXItY3Jl YXRlIGFycmF5ICogYXJyYXleTQorJiJBdHRlbXB0IHRvIHVzZSBhIHR5cGUgbmFtZSBhcyBhbiBl eHByZXNzaW9uLlxuIl5NCiteZXJyb3IsbXNnPSItdmFyLWNyZWF0ZTogdW5hYmxlIHRvIGNyZWF0 ZSB2YXJpYWJsZSBvYmplY3QiXk0KKyhnZGIpIF5NCitGQUlMOiBnZGIubWkvbWktdmFyLWNoaWxk LWYuZXhwOiBjcmVhdGUgbG9jYWwgdmFyaWFibGUgYXJyYXkgKHVuZXhwZWN0ZWQgb3V0cHV0KQor Li4uCisKK1RoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIG5hbWUgYXJyYXkgaXMgdXNlZCBib3RoOgor LSBhcyB0aGUgbmFtZSBmb3IgYSBsb2NhbCB2YXJpYWJsZQorLSBhcyB0aGUgbmFtZSBvZiBhIHR5 cGUgaW4gZ2xpYmMsIGluIGZpbGUgbWFsbG9jL2R5bmFycmF5LXNrZWxldG9uLmMsIGFzIGluY2x1 ZGVkCisgIGJ5IG5zcy9uc3NfZmlsZXMvZmlsZXMtaG9zdHMuYy4KKworRml4IHRoaXMgYnkgaWdu b3JpbmcgdGhlIHNoYXJlZCBsaWIgc3ltYm9scy4KKworTGlrZXdpc2UgaW4gYSBjb3VwbGUgb2Yg b3RoZXIgZm9ydHJhbiB0ZXN0cy4KKworVGVzdGVkIG9uIHg4Nl82NC1saW51eC4KKworZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYWxsb2NhdGVkLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vYWxsb2NhdGVkLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9hbGxvY2F0ZWQuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Fs bG9jYXRlZC5leHAKK0BAIC0yNSwxMSArMjUsMTcgQEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5n ICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKyAgICAgcmV0dXJuIC0x CisgfQorIAorKyMgQXZvaWQgc2hhcmVkIGxpYiBzeW1ib2xzLgorK2dkYl90ZXN0X25vX291dHB1 dCAic2V0IGF1dG8tc29saWItYWRkIG9mZiIKKysKKyBpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0g eworICAgICB1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorICAgICByZXR1cm4gLTEK KyB9CisgCisrIyBBdm9pZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScg dHlwZS4KKytnZGJfdGVzdF9ub19vdXRwdXQgIm5vc2hhcmVkbGlicmFyeSIKKysKKyAjIFNldCBh bGwgdGhlIGJyZWFrcG9pbnRzLgorIGZvciB7IHNldCBpIDEgfSB7ICRpIDwgNiB9IHsgaW5jciBp IH0geworICAgICBnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiQnJlYWtwb2lu dCAkaSJdCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGlj ZXMtYmFkLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5l eHAKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5leHAK KysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLWJhZC5leHAKK0BA IC0yNSwxMSArMjUsMTcgQEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4 cCAke3Rlc3RmaWxlfSAke3NyY2ZpbGV9IFwKKyAgICAgcmV0dXJuIC0xCisgfQorIAorKyMgQXZv aWQgc2hhcmVkIGxpYiBzeW1ib2xzLgorK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGF1dG8tc29s aWItYWRkIG9mZiIKKysKKyBpZiAhW2ZvcnRyYW5fcnVudG9fbWFpbl0geworICAgICB1bnRlc3Rl ZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorICAgICByZXR1cm4gLTEKKyB9CisgCisrIyBBdm9p ZCBsaWJjIHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KKytnZGJfdGVz dF9ub19vdXRwdXQgIm5vc2hhcmVkbGlicmFyeSIKKysKKyAjIGdkYl9icmVha3BvaW50IFtnZGJf Z2V0X2xpbmVfbnVtYmVyICJEaXNwbGF5IE1lc3NhZ2UgQnJlYWtwb2ludCJdCisgZ2RiX2JyZWFr cG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgIkZpcnN0IEJyZWFrcG9pbnQiXQorIGdkYl9icmVh a3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJTZWNvbmQgQnJlYWtwb2ludCJdCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNlcy5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy1zdWItc2xpY2VzLmV4 cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9hcnJheS1zbGljZXMtc3ViLXNsaWNl cy5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLXN1Yi1z bGljZXMuZXhwCitAQCAtMjUsMTEgKzI1LDE3IEBAIGlmIHtbcHJlcGFyZV9mb3JfdGVzdGluZyAk e3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfSBcCisgICAgIHJldHVybiAtMQor IH0KKyAKKysjIEF2b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KKytnZGJfdGVzdF9ub19vdXRwdXQg InNldCBhdXRvLXNvbGliLWFkZCBvZmYiCisrCisgaWYgIVtmb3J0cmFuX3J1bnRvX21haW5dIHsK KyAgICAgdW50ZXN0ZWQgImNvdWxkIG5vdCBydW4gdG8gbWFpbiIKKyAgICAgcmV0dXJuIC0xCisg fQorIAorKyMgQXZvaWQgbGliYyBzeW1ib2xzLCBpbiBwYXJ0aWN1bGFyIHRoZSAnYXJyYXknIHR5 cGUuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJub3NoYXJlZGxpYnJhcnkiCisrCisgIyBnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiRGlzcGxheSBNZXNzYWdlIEJyZWFrcG9pbnQi XQorIGdkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJTdG9wIEhlcmUiXQorIGdk Yl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0KK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2FycmF5LXNsaWNlcy5leHAKKy0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vYXJyYXktc2xpY2VzLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9hcnJheS1zbGljZXMuZXhwCitAQCAtNTUsMTEgKzU1LDE3IEBAIHByb2MgcnVu X3Rlc3QgeyByZXBhY2sgfSB7CisgCisgICAgIGNsZWFuX3Jlc3RhcnQgJHtiaW5maWxlfQorIAor KyAgICAjIEF2b2lkIHNoYXJlZCBsaWIgc3ltYm9scy4KKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJzZXQgYXV0by1zb2xpYi1hZGQgb2ZmIgorKworICAgICBpZiAhW2ZvcnRyYW5fcnVudG9fbWFp bl0geworIAl1bnRlc3RlZCAiY291bGQgbm90IHJ1biB0byBtYWluIgorIAlyZXR1cm4gLTEKKyAg ICAgfQorIAorKyAgICAjIEF2b2lkIGxpYmMgc3ltYm9scywgaW4gcGFydGljdWxhciB0aGUgJ2Fy cmF5JyB0eXBlLgorKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgIm5vc2hhcmVkbGlicmFyeSIKKysK KyAgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZm9ydHJhbiByZXBhY2stYXJyYXktc2xpY2Vz ICRyZXBhY2siCisgCisgICAgICMgZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIg IkRpc3BsYXkgTWVzc2FnZSBCcmVha3BvaW50Il0KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2xib3VuZC11Ym91bmQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9sYm91bmQtdWJvdW5kLmV4cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9sYm91 bmQtdWJvdW5kLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9sYm91bmQtdWJv dW5kLmV4cAorQEAgLTI1LDEyICsyNSwxNyBAQCBpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0 ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0gXAorICAgICByZXR1cm4gLTEKKyB9 CisgCisrIyBBdm9pZCBzaGFyZWQgbGliIHN5bWJvbHMuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJz ZXQgYXV0by1zb2xpYi1hZGQgb2ZmIgorIAorIGlmICFbZm9ydHJhbl9ydW50b19tYWluXSB7Cisg ICAgIHVudGVzdGVkICJjb3VsZCBub3QgcnVuIHRvIG1haW4iCisgICAgIHJldHVybiAtMQorIH0K KyAKKysjIEF2b2lkIGxpYmMgc3ltYm9scywgaW4gcGFydGljdWxhciB0aGUgJ2FycmF5JyB0eXBl LgorK2dkYl90ZXN0X25vX291dHB1dCAibm9zaGFyZWRsaWJyYXJ5IgorKworIGdkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJUZXN0IEJyZWFrcG9pbnQiXQorIGdkYl9icmVha3Bv aW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJGaW5hbCBCcmVha3BvaW50Il0KKyAKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YmFycmF5LmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL3N1YmFycmF5LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJh eS5leHAKK0BAIC0yNywxNiArMjcsMTcgQEAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICJmYWls ZWQgdG8gcHJlcGFyZSIgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1ZyBmOTB9XX0geworICAgICBy ZXR1cm4gLTEKKyB9CisgCistZ2RiX2V4aXQKKy1nZGJfc3RhcnQKKy1nZGJfcmVpbml0aWFsaXpl X2RpciAkc3JjZGlyLyRzdWJkaXIKKy1nZGJfbG9hZCAke2JpbmZpbGV9CisrIyBBdm9pZCBzaGFy ZWQgbGliIHN5bWJvbHMuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgYXV0by1zb2xpYi1hZGQg b2ZmIgorIAorIGlmICFbZm9ydHJhbl9ydW50b19tYWluXSB0aGVuIHsKKyAgICAgcGVycm9yICJj b3VsZG4ndCBydW4gdG8gbWFpbiIKKyAgICAgY29udGludWUKKyB9CisgCisrIyBBdm9pZCBsaWJj IHN5bWJvbHMsIGluIHBhcnRpY3VsYXIgdGhlICdhcnJheScgdHlwZS4KKytnZGJfdGVzdF9ub19v dXRwdXQgIm5vc2hhcmVkbGlicmFyeSIKKysKKyAjIFRyeSB0byBzZXQgYnJlYWtwb2ludCBhdCB0 aGUgbGFzdCB3cml0ZSBzdGF0ZW1lbnQuCisgCisgc2V0IGJwX2xvY2F0aW9uIFtnZGJfZ2V0X2xp bmVfbnVtYmVyICJzdHIoOikiXQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21p LXZhci1jaGlsZC1mLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4 cAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhwCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAKK0BAIC0zNiw4ICszNiwxNCBA QCBpZiB7W2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2Jp bmZpbGV9IiBcCisgbWlfZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCisgbWlf Z2RiX2xvYWQgJHtiaW5maWxlfQorIAorKyMgQXZvaWQgc2hhcmVkIGxpYiBzeW1ib2xzLgorK21p X2dkYl90ZXN0ICItZ2RiLXNldCBhdXRvLXNvbGliLWFkZCBvZmYiICJcXF5kb25lIgorKworIG1p X3J1bnRvIHByb2dfYXJyYXkKKyAKKysjIEF2b2lkIGxpYmMgc3ltYm9scywgaW4gcGFydGljdWxh ciB0aGUgJ2FycmF5JyB0eXBlLgorK21pX2dkYl90ZXN0ICJub3NoYXJlZGxpYnJhcnkiICIuKlxc XmRvbmUiCisrCisgbWlfY3JlYXRlX3Zhcm9iaiAiYXJyYXkiICJhcnJheSIgImNyZWF0ZSBsb2Nh bCB2YXJpYWJsZSBhcnJheSIKKyAKKyAKCmRpZmYgLS1naXQgYS9nZGItdGVzdC1mb3ItcmhiejE5 NzY4ODcucGF0Y2ggYi9nZGItdGVzdC1mb3ItcmhiejE5NzY4ODcucGF0Y2gKaW5kZXggZDA2MjVk Ny4uM2NiNzA0OSAxMDA2NDQKLS0tIGEvZ2RiLXRlc3QtZm9yLXJoYnoxOTc2ODg3LnBhdGNoCisr KyBiL2dkYi10ZXN0LWZvci1yaGJ6MTk3Njg4Ny5wYXRjaApAQCAtMSw2ICsxLDYgQEAKIEZyb20g RkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/ QWxleGFuZHJhPTIwSD1DMz1BMWprb3Y9QzM9QTE/PSA8YWhhamtvdmFAcmVkaGF0LmNvbT4KLURh dGU6IFRodSwgMzAgU2VwIDIwMjEgMTM6MTM6MDMgKzAyMDAKK0RhdGU6IFdlZCwgMjkgU2VwIDIw MjEgMTE6MTQ6NTEgKzAyMDAKIFN1YmplY3Q6IGdkYi10ZXN0LWZvci1yaGJ6MTk3Njg4Ny5wYXRj aAogCiA7OyBCYWNrcG9ydCB0ZXN0IGZvciBSSEJaIDE5NzY4ODcgKEtldmluIEJ1ZXR0bmVyKS4K CmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDY2YjNlN2EuLmE1MjQ3M2Yg MTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0zMSwxMyArMzEsMTMgQEAg TmFtZTogJXs/c2NsX3ByZWZpeH1nZGIKICMgRnJlZXplIGl0IHdoZW4gR0RCIGdldHMgYnJhbmNo ZWQKICVnbG9iYWwgc25hcHNyYyAgICAyMDIwMDIwOAogIyBTZWUgdGltZXN0YW1wIG9mIHNvdXJj ZSBnbnVsaWIgaW5zdGFsbGVkIGludG8gZ251bGliLyAuCi0lZ2xvYmFsIHNuYXBnbnVsaWIgMjAy MDA2MzAKKyVnbG9iYWwgc25hcGdudWxpYiAyMDIxMDEwNQogJWdsb2JhbCB0YXJuYW1lIGdkYi0l e3ZlcnNpb259Ci1WZXJzaW9uOiAxMC4yCitWZXJzaW9uOiAxMS4xCiAKICMgVGhlIHJlbGVhc2Ug YWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEu CiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0g ZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogOSV7P2Rp c3R9CitSZWxlYXNlOiAyJXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0 aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQ TCsgYW5kIExHUEx2MisgYW5kIExHUEx2MysgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbiBhbmQg R0ZETAogIyBEbyBub3QgcHJvdmlkZSBVUkwgZm9yIHNuYXBzaG90cyBhcyB0aGUgZmlsZSBsYXN0 cyB0aGVyZSBvbmx5IGZvciAyIGRheXMuCkBAIC0xMTQzLDYgKzExNDMsMTYgQEAgZmkKICVlbmRp ZgogCiAlY2hhbmdlbG9nCisqIE1vbiBPY3QgMTEgMjAyMSBLZXZpbiBCdWV0dG5lciAtIDExLjEt MgorLSBCYWNrcG9ydCB1cHN0cmVhbSBwYXRjaCB3aGljaCBwYXBlcnMgb3ZlciBGb3J0cmFuIGxl eGljYWwgYW5hbHl6ZXIKKyAgYnVnIChSSEJaIDIwMTI5NzYsIFRvbSBkZSBWcmllcykuCisKKyog TW9uIE9jdCAwNCAyMDIxIEtldmluIEJ1ZXR0bmVyIC0gMTEuMS0xCistIFJlYmFzZSB0byBGU0Yg R0RCIDExLjEuCistIEFkanVzdCBidWlsZC1pZCByZWxhdGVkIHBhdGNoZXMuCistIERyb3AgYmFj a3BvcnRlZCBwYXRjaGVzIHdoaWNoIGFyZSBubyBsb25nZXIgcmVsZXZhbnQuCistIEJ1bXAgJ3Nu YXBnbnVsaWInIGRhdGUuCisKICogVGh1IFNlcCAzMCAyMDIxIEFsZXhhbmRyYSBIw6Fqa292w6Eg PGFoYWprb3ZhQHJlZGhhdC5jb20+IC0gMTAuMi05CiAtIEJhY2twb3J0IHRlc3QgZm9yIFJIQlog MTk3Njg4NyAoS2V2aW4gQnVldHRuZXIpLgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJj ZXMKaW5kZXggZWNjNzc4NC4uNDdhMDJlNSAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3Vy Y2VzCkBAIC0xLDMgKzEsMyBAQAogU0hBNTEyIChnZGItbGlic3RkYysrLXYzLXB5dGhvbi04LjEu MS0yMDE4MDYyNi50YXIueHopID0gYThiMWM1NGRkMzQ4Y2ZlYjM3ZGE3M2Y5Njg3NDI4OTZiZTNk ZDEzYTQyMTVmOGQ4NTE5ODcwYzJhYmVhOTE1ZjUxNzZjM2ZhNjk4OWRkZDEwZjIwMDIwYTE2ZjBm YWIyMGNiYWU2OGVlOGQ1OGE4MjIzNGQ4Nzc4MDIzNTIwZjgKIFNIQTUxMiAodjIuMC40LnRhci5n eikgPSA1OTZkMmRhYzI1ZmRiZDNlNTY2MGQ3ZTFmZWViN2U4ZDVkMzU5ZDFkMGUxOWI2MmVmNTkz NDQ5MDM3ZGYyMzZkYjFkNGQ5ODgyMGYwMDMxMDYxYjU1NzNlZDY3Nzk3YTg1YTc3ZmI5OTkxZTIx NWFiYWFiYzRiZmUxNmNlYWVjOAotU0hBNTEyIChnZGItMTAuMi50YXIueHopID0gMzY1Mzc2MmFj MDA4ZTA2NWMzN2NkNjQxNjUzMTg0YzlmZjdjZTUxZWUyMjIyYWRlMTEyMmJlYzlkNmNjNjRkZmZk NGZiNzQ4ODhlZjExYWMxOTQyMDY0YTA4OTEwZTk2Yjc4NjUxMTJhZDM3ZjQ2MDJlYjBhMTZiZWQw NzRjYWEKK1NIQTUxMiAoZ2RiLTExLjEudGFyLnh6KSA9IGM0MGJmOTcwZTJmN2MyMTA3YjI5YzVh YTZhNzE1MGRhYTcwOWQ3NWRkYWRiNzNhYzIwNzQyNDE5ZDQ2MzdkMTU4ZTMwNjNhNGM2ZmY2ZTQ3 ZmFlOGNhOGUxZDM2MjUzOTczZjg1ZWExNTQ0NWQwMDRiZTZkNWQ3YTJkZDliZDQ2CgpkaWZmIC0t Z2l0IGEvdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaCBiL3Rlc3RpbmctY3VzdG9tLWlucHV0 cmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NWY3ZDEuLjAwMDAwMDAK LS0tIGEvdGVzdGluZy1jdXN0b20taW5wdXRyYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUy ICswLDAgQEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBLZWl0aCBTZWl0eiA8a2VpdGhzQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDIzIE1hciAy MDIxIDA5OjMyOjM3IC0wNzAwCi1TdWJqZWN0OiB0ZXN0aW5nLWN1c3RvbS1pbnB1dHJjLnBhdGNo Ci0KLTs7IEJhY2twb3J0ICJEaXNhYmxlIGJyYWNrZXRlZCBwYXN0ZSBtb2RlIGluIEdEQiB0ZXN0 cyIKLTs7IChUb20gVHJvbWV5KQotCi0gICBjb21taXQgMWFmNGM5YzQyMDljMzQ3ODIyNGYxOGRm Yjc5ZGMwOTU2N2I5NjcwNQotICAgQXV0aG9yOiBUb20gVHJvbWV5IDx0b21AdHJvbWV5LmNvbT4K LSAgIERhdGU6ICAgU2F0IEphbiAyMyAwODo1Mjo0NSAyMDIxIC0wNzAwCi0KLSAgICBEaXNhYmxl IGJyYWNrZXRlZCBwYXN0ZSBtb2RlIGluIEdEQiB0ZXN0cwotCi0gICAgSSBoYXZlIGEgcGF0Y2gg dG8gaW1wb3J0IEdOVSByZWFkbGluZSA4LjEgaW50byBHREIuICBIb3dldmVyLCB3aGVuCi0gICAg cnVubmluZyB0aGUgdGVzdHMsIHRoZXJlIHdlcmUgYSBudW1iZXIgb2YgZmFpbHVyZXMgZHVlIHRv ICJicmFja2V0ZWQKLSAgICBwYXN0ZSBtb2RlIi4gIFRoaXMgaXMgYSB0ZXJtaW5hbCBmZWF0dXJl IHRoYXQgcmVhZGxpbmUgOC4xIGVuYWJsZXMgYnkKLSAgICBkZWZhdWx0LgotCi0gICAgVGhlIHNp bXBsZXN0IHdheSB0byB3b3JrIGFyb3VuZCB0aGlzIHdhcyB0byBhbHdheXMgbWFrZSBhICIuaW5w dXRyYyIKLSAgICBmb3IgR0RCIHRlc3RzIHRoYXQgd2lsbCB0ZWxsIHJlYWRsaW5lIHRvIGRpc2Fi bGUgYnJhY2t0ZWQgcGFzdGUgbW9kZS4KLQotICAgIGdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0g ICAgMjAyMS0wMS0yMyAgVG9tIFRyb21leSAgPHRvbUB0cm9tZXkuY29tPgotCi0gICAgICAgICAg ICAqIGxpYi9nZGIuZXhwIChkZWZhdWx0X2dkYl9pbml0KTogU2V0IElOUFVUUkMgdG8gYSBjYWNo ZWQgZmlsZS4KLQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAgYi9nZGIv dGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0tLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi0r KysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1AQCAtNTEzNSwxMyArNTEzNSwxNCBAQCBw cm9jIGRlZmF1bHRfZ2RiX2luaXQgeyB0ZXN0X2ZpbGVfbmFtZSB9IHsKLSAgICAgc2V0ZW52IExD X0NUWVBFIEMKLSAgICAgc2V0ZW52IExBTkcgQwotIAotLSAgICAjIERvbid0IGxldCBhIC5pbnB1 dHJjIGZpbGUgb3IgYW4gZXhpc3Rpbmcgc2V0dGluZyBvZiBJTlBVVFJDIG1lc3MgdXAKLS0gICAg IyB0aGUgdGVzdCByZXN1bHRzLiAgRXZlbiBpZiAvZGV2L251bGwgZG9lc24ndCBleGlzdCBvbiB0 aGUgcGFydGljdWxhcgotLSAgICAjIHBsYXRmb3JtLCB0aGUgcmVhZGxpbmUgbGlicmFyeSB3aWxs IHVzZSB0aGUgZGVmYXVsdCBzZXR0aW5nIGp1c3QgYnkKLS0gICAgIyBmYWlsaW5nIHRvIG9wZW4g dGhlIGZpbGUuICBPVE9ILCBvcGVuaW5nIC9kZXYvbnVsbCBzdWNjZXNzZnVsbHkgd2lsbAotLSAg ICAjIGFsc28gcmVzdWx0IGluIHRoZSBkZWZhdWx0IHNldHRpbmdzIGJlaW5nIHVzZWQgc2luY2Ug bm90aGluZyB3aWxsIGJlCi0tICAgICMgcmVhZCBmcm9tIHRoaXMgZmlsZS4KLS0gICAgc2V0ZW52 IElOUFVUUkMgIi9kZXYvbnVsbCIKLSsgICAgIyBEb24ndCBsZXQgYSAuaW5wdXRyYyBmaWxlIG9y IGFuIGV4aXN0aW5nIHNldHRpbmcgb2YgSU5QVVRSQyBtZXNzCi0rICAgICMgdXAgdGhlIHRlc3Qg cmVzdWx0cy4gIENlcnRhaW4gdGVzdHMgKHN0eWxlIHRlc3RzIGFuZCBUVUkgdGVzdHMpCi0rICAg ICMgd2FudCB0byBzZXQgdGhlIHRlcm1pbmFsIHRvIGEgbm9uLSJkdW1iIiB2YWx1ZSwgYW5kIGZv ciB0aG9zZSB3ZQotKyAgICAjIHdhbnQgdG8gZGlzYWJsZSBicmFja2V0ZWQgcGFzdGUgbW9kZS4g IFZlcnNpb25zIG9mIFJlYWRsaW5lCi0rICAgICMgYmVmb3JlIDguMCB3aWxsIG5vdCB1bmRlcnN0 YW5kIHRoaXMgYW5kIHdpbGwgaXNzdWUgYSB3YXJuaW5nLgotKyAgICAjIFdlIHRyaWVkIHVzaW5n IGEgJGlmIHRvIGd1YXJkIGl0LCBidXQgUmVhZGxpbmUgOC4xIGhhZCBhIGJ1ZyBpbgotKyAgICAj IGl0cyB2ZXJzaW9uLWNvbXBhcmlzb24gY29kZSB0aGF0IHByZXZlbnRlZCB0aGlzIGZvciB3b3Jr aW5nLgotKyAgICBzZXRlbnYgSU5QVVRSQyBbY2FjaGVkX2ZpbGUgaW5wdXRyYyAic2V0IGVuYWJs ZS1icmFja2V0ZWQtcGFzdGUgb2ZmIl0KLSAKLSAgICAgIyBUaGlzIGRpc2FibGVzIHN0eWxlIG91 dHB1dCwgd2hpY2ggd291bGQgaW50ZXJmZXJlIHdpdGggbWFueQotICAgICAjIHRlc3RzLgo=